<?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>129398</bug_id>
          
          <creation_ts>2014-02-26 15:01:08 -0800</creation_ts>
          <short_desc>Prepare for overflow scrolling nodes in the scrolling tree</short_desc>
          <delta_ts>2014-02-26 16:59:17 -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>New Bugs</component>
          <version>528+ (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></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>andersca</cc>
    
    <cc>bdakin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>jamesr</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>984926</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-02-26 15:01:08 -0800</bug_when>
    <thetext>Prepare for overflow scrolling nodes in the scrolling tree</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984928</commentid>
    <comment_count>1</comment_count>
      <attachid>225303</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-02-26 15:06:29 -0800</bug_when>
    <thetext>Created attachment 225303
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984983</commentid>
    <comment_count>2</comment_count>
      <attachid>225320</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-02-26 16:28:46 -0800</bug_when>
    <thetext>Created attachment 225320
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984985</commentid>
    <comment_count>3</comment_count>
      <attachid>225320</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-02-26 16:33:38 -0800</bug_when>
    <thetext>Comment on attachment 225320
Patch

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

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:3493
&gt; +        else
&gt; +            ASSERT_NOT_REACHED();

I think you want curly braces here

&gt; Source/WebCore/rendering/RenderLayerCompositor.h:408
&gt; +        FixedOrSticky = 1 &lt;&lt; 0,

ViewportConstrained? :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984986</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-02-26 16:34:18 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 225320 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=225320&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:3493
&gt; &gt; +        else
&gt; &gt; +            ASSERT_NOT_REACHED();
&gt; 
&gt; I think you want curly braces here

Or maybe it&apos;s fine?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984992</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-02-26 16:59:17 -0800</bug_when>
    <thetext>https://trac.webkit.org/r164759</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225303</attachid>
            <date>2014-02-26 15:06:29 -0800</date>
            <delta_ts>2014-02-26 16:28:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129398-20140226150627.patch</filename>
            <type>text/plain</type>
            <size>35877</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0NzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjI1N2UyNWU4NmIxMTkx
NDRlZDY1OWEwMDQ0ZTdmYjhmZjNmMzY1ZS4uOTgyZDNiMTQxY2ViMWE2MDhlNGUwOGRjYzQ4N2Y4
NmJjMDFhODk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE0LTAyLTI2ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFByZXBhcmUgZm9y
IG92ZXJmbG93IHNjcm9sbGluZyBub2RlcyBpbiB0aGUgc2Nyb2xsaW5nIHRyZWUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTM5OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExheSBzb21lIGdyb3VuZHdv
cmsgZm9yIG92ZXJmbG93OnNjcm9sbGluZyBub2RlcyBpbiB0aGUgc2Nyb2xsaW5nIHRyZWUuCisg
ICAgICAgIENoYW5nZSB0ZXJtaW5vbG9neSB0byByZWZlciB0byAic2Nyb2xsLWNvb3JkaW5hdG9y
ZWQiIGxheWVycyBub3csIG5vdCBqdXN0IHZpZXdwb3J0LWNvbnN0cmFpbmVkCisgICAgICAgIGxh
eWVycy4KKyAgICAgICAgCisgICAgICAgIEEgZ2l2ZW4gbGF5ZXIgY2FuIGJlIGJvdGggdmlld3Bv
cnQtY29uc3RyYWluZWQgYW5kIG92ZXJmbG93LXNjcm9sbGluZyAoZS5nLiBwb3NpdGlvbjpmaXhl
ZCwKKyAgICAgICAgb3ZlcmZsb3c6c2Nyb2xsKSwgc28gaGFuZGxlIHRoYXQgaW4gUmVuZGVyTGF5
ZXJCYWNraW5nLCBhbmQgdXNlIHNvbWUgInJlYXNvbiIgZmxhZ3MKKyAgICAgICAgaW4gUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLgorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzY3JvbGxMYXllcklEKTogUmVuYW1lCisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1N0YXRlVHJlZTo6YXR0YWNoTm9kZSk6IFJlbW92ZSBpbnZhbGlkIGFzc2VydGlv
bi4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6UmVuZGVyTGF5ZXJCYWNraW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckdlb21l
dHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlU2Nyb2xs
aW5nTGF5ZXJzKTogU2ltcGxpZnkgdGhlIGxvZ2ljIHdpdGgKKyAgICAgICAgYW4gZWFybHkgcmV0
dXJuLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpkZXRhY2hGcm9tU2Ny
b2xsaW5nQ29vcmRpbmF0b3IpOgorICAgICAgICBBbGxvdyBhIGxheWVyIHRvIHBsYXkgYm90aCB2
aWV3cG9ydC1jb25zdHJhaW5lZCBhbmQgc2Nyb2xsaW5nIHJvbGVzCisgICAgICAgIGluIHRoZSBz
Y3JvbGxpbmcgdHJlZS4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmg6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnZpZXdwb3J0Q29uc3RyYWlu
ZWROb2RlSUQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpzZXRWaWV3
cG9ydENvbnN0cmFpbmVkTm9kZUlEKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFj
a2luZzo6c2Nyb2xsaW5nTm9kZUlEKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFj
a2luZzo6c2V0U2Nyb2xsaW5nTm9kZUlEKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
QmFja2luZzo6c2Nyb2xsaW5nTm9kZUlERm9yQ2hpbGRyZW4pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkaWRGbHVzaENoYW5nZXNGb3JMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUJhY2tpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllcldpbGxCZVJlbW92ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpmaXhlZFJvb3RCYWNr
Z3JvdW5kTGF5ZXJDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9z
aXRvcjo6Y2xlYXJCYWNraW5nRm9yTGF5ZXJJbmNsdWRpbmdEZXNjZW5kYW50cyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzT3du
QmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6
cmVhc29uc0ZvckNvbXBvc2l0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29t
cG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclNjcm9sbGluZyk6CisgICAgICAgIChXZWJD
b3JlOjppc1ZpZXdwb3J0Q29uc3RyYWluZWRGaXhlZE9yU3RpY2t5TGF5ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6aXNNYWluRnJhbWVTY3JvbGxpbmdPck92ZXJmbG93U2Nyb2xsaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cm9vdExheWVyQXR0YWNobWVudENo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVT
Y3JvbGxDb29yZGluYXRlZFN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnJlbW92ZUZyb21TY3JvbGxDb29yZGluYXRlZExheWVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpuZWFyZXN0U2Nyb2xsQ29vcmRpbmF0ZWRBbmNlc3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbENvb3JkaW5hdGVkTGF5ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkZXRhY2hTY3JvbGxD
b29yZGluYXRlZExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRv
cjo6cmVnaXN0ZXJBbGxWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6d2lsbFJlbW92ZVNjcm9sbGluZ0xheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGlkQWRkU2Nyb2xsaW5nTGF5
ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaDoKKwogMjAx
NC0wMi0yNiAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIHVudXNlZCBJbnNwZWN0b3JDb3VudGVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApp
bmRleCA3M2EzNjQzZGMyNDQ1ZmQ3ZTRjMzQxNTJjZWYyMThjMzZhZjY0N2Q3Li40YjYxMGE5MTkw
MDVmNDEyMDBhOTJlMTg3ODMyMWQzNGJlNDZlYjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCkBAIC04MTQsNyArODE0LDcgQEAgdWludDY0X3QgRnJhbWVWaWV3OjpzY3JvbGxMYXllcklE
KCkgY29uc3QKICAgICBpZiAoIWJhY2tpbmcpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0
dXJuIGJhY2tpbmctPnNjcm9sbExheWVySUQoKTsKKyAgICByZXR1cm4gYmFja2luZy0+c2Nyb2xs
aW5nTm9kZUlEKCk7CiB9CiAKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcAppbmRl
eCBlMDZmMjIxNjg1ZjZiODFiOGE0MTc3YzExNGEwZmUxYjc0MmM1M2M0Li4xYzYyNTFlNzI4YmFh
M2JjMDZkYjE5M2IwZDRhYWM4ZTVjMDM5Mjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAKQEAgLTEwOCw4ICsxMDgsNiBA
QCBTY3JvbGxpbmdOb2RlSUQgU2Nyb2xsaW5nU3RhdGVUcmVlOjphdHRhY2hOb2RlKFNjcm9sbGlu
Z05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBTY3JvbGxpbmdOb2RlOiB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2Ug
Y3VycmVudGx5IG9ubHkgc3VwcG9ydCBjaGlsZCBub2RlcyB0aGF0IGFyZSBmaXhlZC4KLSAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgT3duUHRyPFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZT4gc2Nyb2xsaW5nTm9kZSA9IFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6Y3JlYXRlKCp0aGlzLCBuZXdOb2RlSUQpOwogICAgICAgICAgICAgbmV3Tm9kZSA9
IHNjcm9sbGluZ05vZGUuZ2V0KCk7CiAgICAgICAgICAgICBwYXJlbnQtPmFwcGVuZENoaWxkKHNj
cm9sbGluZ05vZGUucmVsZWFzZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggMDA3NTUyNGNhMGIyYzk3MTg1MjY3MzljYzM0MWU3
MDRkNmE3NTVlZi4uNmY0MzM0OTI1NGU2NmEwOWNlNmNhZTNjZDJlOTg1NDJmZjgxZDJhMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAg
LTEwOSw3ICsxMDksOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6bV9jcmVhdGluZ1ByaW1h
cnlHcmFwaGljc0xheWVyID0gZmFsc2U7CiAKIFJlbmRlckxheWVyQmFja2luZzo6UmVuZGVyTGF5
ZXJCYWNraW5nKFJlbmRlckxheWVyJiBsYXllcikKICAgICA6IG1fb3duaW5nTGF5ZXIobGF5ZXIp
Ci0gICAgLCBtX3Njcm9sbExheWVySUQoMCkKKyAgICAsIG1fdmlld3BvcnRDb25zdHJhaW5lZE5v
ZGVJRCgwKQorICAgICwgbV9zY3JvbGxpbmdOb2RlSUQoMCkKICAgICAsIG1fYXJ0aWZpY2lhbGx5
SW5mbGF0ZWRCb3VuZHMoZmFsc2UpCiAgICAgLCBtX2lzTWFpbkZyYW1lUmVuZGVyVmlld0xheWVy
KGZhbHNlKQogICAgICwgbV91c2luZ1RpbGVkQ2FjaGVMYXllcihmYWxzZSkKQEAgLTk1MSw5ICs5
NTIsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckdlb21l
dHJ5KCkKICAgICAgICAgbV9zY3JvbGxpbmdDb250ZW50c0xheWVyLT5zZXRTaXplKHNjcm9sbFNp
emUpOwogICAgICAgICAvLyBTY3JvbGxpbmcgdGhlIGNvbnRlbnQgbGF5ZXIgZG9lcyBub3QgbmVl
ZCB0byB0cmlnZ2VyIGEgcmVwYWludC4gVGhlIG9mZnNldCB3aWxsIGJlIGNvbXBlbnNhdGVkIGF3
YXkgZHVyaW5nIHBhaW50aW5nLgogICAgICAgICAvLyBGSVhNRTogVGhlIHBhaW50IG9mZnNldCBh
bmQgdGhlIHNjcm9sbCBvZmZzZXQgc2hvdWxkIHJlYWxseSBiZSBzZXBhcmF0ZSBjb25jZXB0cy4K
LSAgICAgICAgbV9zY3JvbGxpbmdDb250ZW50c0xheWVyLT5zZXRPZmZzZXRGcm9tUmVuZGVyZXIo
cGFkZGluZ0JveC5sb2NhdGlvbigpIC0gRmxvYXRQb2ludCgpIC0gc2Nyb2xsT2Zmc2V0LCBHcmFw
aGljc0xheWVyOjpEb250U2V0TmVlZHNEaXNwbGF5KTsKLSAgICAgICAgCi0gICAgICAgIGNvbXBv
c2l0b3IoKS5zY3JvbGxpbmdMYXllckFkZGVkT3JVcGRhdGVkKCZtX293bmluZ0xheWVyKTsKKyAg
ICAgICAgbV9zY3JvbGxpbmdDb250ZW50c0xheWVyLT5zZXRPZmZzZXRGcm9tUmVuZGVyZXIocGFk
ZGluZ0JveC5sb2NhdGlvbigpIC0gSW50UG9pbnQoKSAtIHNjcm9sbE9mZnNldCwgR3JhcGhpY3NM
YXllcjo6RG9udFNldE5lZWRzRGlzcGxheSk7CiAjZWxzZQogICAgICAgICBtX3Njcm9sbGluZ0Nv
bnRlbnRzTGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoLXNjcm9sbE9mZnNldC53aWR0aCgp
LCAtc2Nyb2xsT2Zmc2V0LmhlaWdodCgpKSk7CiAKQEAgLTk5Miw3ICs5OTEsNyBAQCB2b2lkIFJl
bmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KCkKICAgICB1cGRh
dGVEcmF3c0NvbnRlbnQoaXNTaW1wbGVDb250YWluZXIpOwogICAgIHVwZGF0ZUFmdGVyV2lkZ2V0
UmVzaXplKCk7CiAKLSAgICBjb21wb3NpdG9yKCkudXBkYXRlVmlld3BvcnRDb25zdHJhaW50U3Rh
dHVzKG1fb3duaW5nTGF5ZXIpOworICAgIGNvbXBvc2l0b3IoKS51cGRhdGVTY3JvbGxDb29yZGlu
YXRlZFN0YXR1cyhtX293bmluZ0xheWVyKTsKIH0KIAogdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6
OmFkanVzdEFuY2VzdG9yQ29tcG9zaXRpbmdCb3VuZHNGb3JGbG93VGhyZWFkKExheW91dFJlY3Qm
IGFuY2VzdG9yQ29tcG9zaXRpbmdCb3VuZHMsIGNvbnN0IFJlbmRlckxheWVyKiBjb21wb3NpdGlu
Z0FuY2VzdG9yKSBjb25zdApAQCAtMTQyMyw5MSArMTQyMiw1OSBAQCBib29sIFJlbmRlckxheWVy
QmFja2luZzo6dXBkYXRlTWFza0xheWVyKGJvb2wgbmVlZHNNYXNrTGF5ZXIpCiAKIGJvb2wgUmVu
ZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVTY3JvbGxpbmdMYXllcnMoYm9vbCBuZWVkc1Njcm9sbGlu
Z0xheWVycykKIHsKLSAgICBTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0
b3IgPSBzY3JvbGxpbmdDb29yZGluYXRvckZyb21MYXllcihtX293bmluZ0xheWVyKTsKKyAgICBp
ZiAobmVlZHNTY3JvbGxpbmdMYXllcnMgPT0gISFtX3Njcm9sbGluZ0xheWVyKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBib29sIGxheWVyQ2hhbmdlZCA9IGZhbHNlOwotICAgIGlmIChu
ZWVkc1Njcm9sbGluZ0xheWVycykgewotICAgICAgICBpZiAoIW1fc2Nyb2xsaW5nTGF5ZXIpIHsK
LSAgICAgICAgICAgIC8vIE91dGVyIGxheWVyIHdoaWNoIGNvcnJlc3BvbmRzIHdpdGggdGhlIHNj
cm9sbCB2aWV3LgotICAgICAgICAgICAgbV9zY3JvbGxpbmdMYXllciA9IGNyZWF0ZUdyYXBoaWNz
TGF5ZXIoIlNjcm9sbGluZyBjb250YWluZXIiKTsKLSAgICAgICAgICAgIG1fc2Nyb2xsaW5nTGF5
ZXItPnNldERyYXdzQ29udGVudChmYWxzZSk7Ci0gICAgICAgICAgICBtX3Njcm9sbGluZ0xheWVy
LT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOwotCi0gICAgICAgICAgICAvLyBJbm5lciBsYXllciB3
aGljaCByZW5kZXJzIHRoZSBjb250ZW50IHRoYXQgc2Nyb2xscy4KLSAgICAgICAgICAgIG1fc2Ny
b2xsaW5nQ29udGVudHNMYXllciA9IGNyZWF0ZUdyYXBoaWNzTGF5ZXIoIlNjcm9sbGVkIENvbnRl
bnRzIik7Ci0gICAgICAgICAgICBtX3Njcm9sbGluZ0NvbnRlbnRzTGF5ZXItPnNldERyYXdzQ29u
dGVudCh0cnVlKTsKLSAgICAgICAgICAgIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlIHBhaW50
UGhhc2UgPSBHcmFwaGljc0xheWVyUGFpbnRPdmVyZmxvd0NvbnRlbnRzIHwgR3JhcGhpY3NMYXll
clBhaW50Q29tcG9zaXRlZFNjcm9sbDsKLSAgICAgICAgICAgIGlmICghbV9mb3JlZ3JvdW5kTGF5
ZXIpCi0gICAgICAgICAgICAgICAgcGFpbnRQaGFzZSB8PSBHcmFwaGljc0xheWVyUGFpbnRGb3Jl
Z3JvdW5kOwotICAgICAgICAgICAgbV9zY3JvbGxpbmdDb250ZW50c0xheWVyLT5zZXRQYWludGlu
Z1BoYXNlKHBhaW50UGhhc2UpOwotICAgICAgICAgICAgbV9zY3JvbGxpbmdMYXllci0+YWRkQ2hp
bGQobV9zY3JvbGxpbmdDb250ZW50c0xheWVyLmdldCgpKTsKKyAgICBpZiAoIW1fc2Nyb2xsaW5n
TGF5ZXIpIHsKKyAgICAgICAgLy8gT3V0ZXIgbGF5ZXIgd2hpY2ggY29ycmVzcG9uZHMgd2l0aCB0
aGUgc2Nyb2xsIHZpZXcuCisgICAgICAgIG1fc2Nyb2xsaW5nTGF5ZXIgPSBjcmVhdGVHcmFwaGlj
c0xheWVyKCJTY3JvbGxpbmcgY29udGFpbmVyIik7CisgICAgICAgIG1fc2Nyb2xsaW5nTGF5ZXIt
PnNldERyYXdzQ29udGVudChmYWxzZSk7CisgICAgICAgIG1fc2Nyb2xsaW5nTGF5ZXItPnNldE1h
c2tzVG9Cb3VuZHModHJ1ZSk7CisKKyAgICAgICAgLy8gSW5uZXIgbGF5ZXIgd2hpY2ggcmVuZGVy
cyB0aGUgY29udGVudCB0aGF0IHNjcm9sbHMuCisgICAgICAgIG1fc2Nyb2xsaW5nQ29udGVudHNM
YXllciA9IGNyZWF0ZUdyYXBoaWNzTGF5ZXIoIlNjcm9sbGVkIENvbnRlbnRzIik7CisgICAgICAg
IG1fc2Nyb2xsaW5nQ29udGVudHNMYXllci0+c2V0RHJhd3NDb250ZW50KHRydWUpOworICAgICAg
ICBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSBwYWludFBoYXNlID0gR3JhcGhpY3NMYXllclBh
aW50T3ZlcmZsb3dDb250ZW50cyB8IEdyYXBoaWNzTGF5ZXJQYWludENvbXBvc2l0ZWRTY3JvbGw7
CisgICAgICAgIGlmICghbV9mb3JlZ3JvdW5kTGF5ZXIpCisgICAgICAgICAgICBwYWludFBoYXNl
IHw9IEdyYXBoaWNzTGF5ZXJQYWludEZvcmVncm91bmQ7CisgICAgICAgIG1fc2Nyb2xsaW5nQ29u
dGVudHNMYXllci0+c2V0UGFpbnRpbmdQaGFzZShwYWludFBoYXNlKTsKKyAgICAgICAgbV9zY3Jv
bGxpbmdMYXllci0+YWRkQ2hpbGQobV9zY3JvbGxpbmdDb250ZW50c0xheWVyLmdldCgpKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBjb21wb3NpdG9yKCkud2lsbFJlbW92ZVNjcm9sbGluZ0xheWVy
KG1fb3duaW5nTGF5ZXIpOwogCi0gICAgICAgICAgICBsYXllckNoYW5nZWQgPSB0cnVlOwotICAg
ICAgICAgICAgaWYgKHNjcm9sbGluZ0Nvb3JkaW5hdG9yKQotICAgICAgICAgICAgICAgIHNjcm9s
bGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKCZtX293
bmluZ0xheWVyKTsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgICAgICAgICBpZiAobV9vd25pbmdM
YXllci5wYXJlbnQoKSkKLSAgICAgICAgICAgICAgICBjb21wb3NpdG9yKCkuc2Nyb2xsaW5nTGF5
ZXJBZGRlZE9yVXBkYXRlZCgmbV9vd25pbmdMYXllcik7Ci0jZW5kaWYKLSAgICAgICAgfQotICAg
IH0gZWxzZSBpZiAobV9zY3JvbGxpbmdMYXllcikgewotI2lmIFBMQVRGT1JNKElPUykKLSAgICAg
ICAgaWYgKCFyZW5kZXJlcigpLmRvY3VtZW50QmVpbmdEZXN0cm95ZWQoKSkKLSAgICAgICAgICAg
IGNvbXBvc2l0b3IoKS5zY3JvbGxpbmdMYXllclJlbW92ZWQoJm1fb3duaW5nTGF5ZXIsIG1fc2Ny
b2xsaW5nTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSwgbV9zY3JvbGxpbmdDb250ZW50c0xheWVyLT5w
bGF0Zm9ybUxheWVyKCkpOwotI2VuZGlmCiAgICAgICAgIHdpbGxEZXN0cm95TGF5ZXIobV9zY3Jv
bGxpbmdMYXllci5nZXQoKSk7CiAgICAgICAgIHdpbGxEZXN0cm95TGF5ZXIobV9zY3JvbGxpbmdD
b250ZW50c0xheWVyLmdldCgpKTsKICAgICAgICAgbV9zY3JvbGxpbmdMYXllciA9IG51bGxwdHI7
CiAgICAgICAgIG1fc2Nyb2xsaW5nQ29udGVudHNMYXllciA9IG51bGxwdHI7Ci0gICAgICAgIGxh
eWVyQ2hhbmdlZCA9IHRydWU7Ci0gICAgICAgIGlmIChzY3JvbGxpbmdDb29yZGluYXRvcikKLSAg
ICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbExheWVy
RGlkQ2hhbmdlKCZtX293bmluZ0xheWVyKTsKLSAgICB9Ci0KLSAgICBpZiAobGF5ZXJDaGFuZ2Vk
KSB7Ci0gICAgICAgIHVwZGF0ZUludGVybmFsSGllcmFyY2h5KCk7Ci0gICAgICAgIG1fZ3JhcGhp
Y3NMYXllci0+c2V0UGFpbnRpbmdQaGFzZShwYWludGluZ1BoYXNlRm9yUHJpbWFyeUxheWVyKCkp
OwotI2lmICFQTEFURk9STShJT1MpCi0gICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0TmVlZHNE
aXNwbGF5KCk7Ci0gICAgICAgIGNvbXBvc2l0b3IoKS5zY3JvbGxpbmdMYXllckRpZENoYW5nZSht
X293bmluZ0xheWVyKTsKLSNlbmRpZgogICAgIH0KIAotICAgIHJldHVybiBsYXllckNoYW5nZWQ7
Ci19CisgICAgdXBkYXRlSW50ZXJuYWxIaWVyYXJjaHkoKTsKKyAgICBtX2dyYXBoaWNzTGF5ZXIt
PnNldFBhaW50aW5nUGhhc2UocGFpbnRpbmdQaGFzZUZvclByaW1hcnlMYXllcigpKTsKKyAgICBt
X2dyYXBoaWNzTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOyAvLyBCZWNhdXNlIHBhaW50aW5nIHBo
YXNlcyBjaGFuZ2VkLgogCi12b2lkIFJlbmRlckxheWVyQmFja2luZzo6YXR0YWNoVG9TY3JvbGxp
bmdDb29yZGluYXRvcldpdGhQYXJlbnQoUmVuZGVyTGF5ZXJCYWNraW5nKiBwYXJlbnQpCi17Ci0g
ICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gc2Nyb2xsaW5n
Q29vcmRpbmF0b3JGcm9tTGF5ZXIobV9vd25pbmdMYXllcik7Ci0gICAgaWYgKCFzY3JvbGxpbmdD
b29yZGluYXRvcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IFdoZW4gd2Ugc3Vw
cG9ydCBvdmVyZmxvdyBhcmVhcywgd2Ugd2lsbCBoYXZlIHRvIHJlZmluZSB0aGlzIGZvciBvdmVy
ZmxvdyBhcmVhcyB0aGF0IGFyZSBhbHNvCi0gICAgLy8gcG9zaXRvbjpmaXhlZC4KLSAgICBTY3Jv
bGxpbmdOb2RlVHlwZSBub2RlVHlwZTsKLSAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLnBvc2l0
aW9uKCkgPT0gRml4ZWRQb3NpdGlvbikKLSAgICAgICAgbm9kZVR5cGUgPSBGaXhlZE5vZGU7Ci0g
ICAgZWxzZSBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLnBvc2l0aW9uKCkgPT0gU3RpY2t5UG9zaXRp
b24pCi0gICAgICAgIG5vZGVUeXBlID0gU3RpY2t5Tm9kZTsKLSAgICBlbHNlCi0gICAgICAgIG5v
ZGVUeXBlID0gU2Nyb2xsaW5nTm9kZTsKLQotICAgIFNjcm9sbGluZ05vZGVJRCBwYXJlbnRJRCA9
IHBhcmVudCA/IHBhcmVudC0+c2Nyb2xsTGF5ZXJJRCgpIDogMDsKLSAgICBtX3Njcm9sbExheWVy
SUQgPSBzY3JvbGxpbmdDb29yZGluYXRvci0+YXR0YWNoVG9TdGF0ZVRyZWUobm9kZVR5cGUsIG1f
c2Nyb2xsTGF5ZXJJRCA/IG1fc2Nyb2xsTGF5ZXJJRCA6IHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT51
bmlxdWVTY3JvbGxMYXllcklEKCksIHBhcmVudElEKTsKKyAgICBpZiAobV9zY3JvbGxpbmdMYXll
cikKKyAgICAgICAgY29tcG9zaXRvcigpLmRpZEFkZFNjcm9sbGluZ0xheWVyKG1fb3duaW5nTGF5
ZXIpOworICAgIAorICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFJlbmRlckxheWVyQmFja2lu
Zzo6ZGV0YWNoRnJvbVNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkKIHsKLSAgICAvLyBJZiBtX3Njcm9s
bExheWVySUQgaXMgMCwgdGhlbiB0aGlzIGJhY2tpbmcgaXMgbm90IGF0dGFjaGVkIHRvIHRoZSBT
Y3JvbGxpbmdDb29yZGluYXRvci4KLSAgICBpZiAoIW1fc2Nyb2xsTGF5ZXJJRCkKKyAgICBpZiAo
IW1fc2Nyb2xsaW5nTm9kZUlEICYmICFtX3ZpZXdwb3J0Q29uc3RyYWluZWROb2RlSUQpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGlu
YXRvciA9IHNjcm9sbGluZ0Nvb3JkaW5hdG9yRnJvbUxheWVyKG1fb3duaW5nTGF5ZXIpOwogICAg
IGlmICghc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNjcm9s
bGluZ0Nvb3JkaW5hdG9yLT5kZXRhY2hGcm9tU3RhdGVUcmVlKG1fc2Nyb2xsTGF5ZXJJRCk7Ci0g
ICAgbV9zY3JvbGxMYXllcklEID0gMDsKKyAgICBpZiAobV9zY3JvbGxpbmdOb2RlSUQpCisgICAg
ICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5kZXRhY2hGcm9tU3RhdGVUcmVlKG1fc2Nyb2xsaW5n
Tm9kZUlEKTsKKworICAgIGlmIChtX3ZpZXdwb3J0Q29uc3RyYWluZWROb2RlSUQpCisgICAgICAg
IHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5kZXRhY2hGcm9tU3RhdGVUcmVlKG1fdmlld3BvcnRDb25z
dHJhaW5lZE5vZGVJRCk7CisKKyAgICBtX3Njcm9sbGluZ05vZGVJRCA9IDA7CisgICAgbV92aWV3
cG9ydENvbnN0cmFpbmVkTm9kZUlEID0gMDsKIH0KIAogR3JhcGhpY3NMYXllclBhaW50aW5nUGhh
c2UgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludGluZ1BoYXNlRm9yUHJpbWFyeUxheWVyKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAppbmRl
eCBjYTYxNzVhYWFiMjRlNmI1MjA4NGQwMDhhMmY0YzA5Yzg3NDcwYTI3Li5kOTFkYzc0ZTFhYTM4
MzExZjBiYjM5ZmU5YjllOTRkMTBmNjYyYzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiR3Jh
cGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTAxLDEwICsxMDIsMTYgQEAgcHVibGljOgogICAgIEdy
YXBoaWNzTGF5ZXIqIHNjcm9sbGluZ0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxpbmdM
YXllci5nZXQoKTsgfQogICAgIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbGluZ0NvbnRlbnRzTGF5ZXIo
KSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGluZ0NvbnRlbnRzTGF5ZXIuZ2V0KCk7IH0KIAotICAg
IHZvaWQgYXR0YWNoVG9TY3JvbGxpbmdDb29yZGluYXRvcldpdGhQYXJlbnQoUmVuZGVyTGF5ZXJC
YWNraW5nKiBwYXJlbnQpOwogICAgIHZvaWQgZGV0YWNoRnJvbVNjcm9sbGluZ0Nvb3JkaW5hdG9y
KCk7Ci0gICAgdWludDY0X3Qgc2Nyb2xsTGF5ZXJJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xs
TGF5ZXJJRDsgfQorCisgICAgU2Nyb2xsaW5nTm9kZUlEIHZpZXdwb3J0Q29uc3RyYWluZWROb2Rl
SUQoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdwb3J0Q29uc3RyYWluZWROb2RlSUQ7IH0KKyAgICB2
b2lkIHNldFZpZXdwb3J0Q29uc3RyYWluZWROb2RlSUQoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkg
eyBtX3ZpZXdwb3J0Q29uc3RyYWluZWROb2RlSUQgPSBub2RlSUQ7IH0KKworICAgIFNjcm9sbGlu
Z05vZGVJRCBzY3JvbGxpbmdOb2RlSUQoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGluZ05vZGVJ
RDsgfQorICAgIHZvaWQgc2V0U2Nyb2xsaW5nTm9kZUlEKFNjcm9sbGluZ05vZGVJRCBub2RlSUQp
IHsgbV9zY3JvbGxpbmdOb2RlSUQgPSBub2RlSUQ7IH0KICAgICAKKyAgICBTY3JvbGxpbmdOb2Rl
SUQgc2Nyb2xsaW5nTm9kZUlERm9yQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGlu
Z05vZGVJRCA/IG1fc2Nyb2xsaW5nTm9kZUlEIDogbV92aWV3cG9ydENvbnN0cmFpbmVkTm9kZUlE
OyB9CisKICAgICBib29sIGhhc01hc2tMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbWFza0xheWVy
ICE9IDA7IH0KIAogICAgIEdyYXBoaWNzTGF5ZXIqIHBhcmVudEZvclN1YmxheWVycygpIGNvbnN0
OwpAQCAtMzA4LDcgKzMxNSw4IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBo
aWNzTGF5ZXI+IG1fc2Nyb2xsaW5nTGF5ZXI7IC8vIE9ubHkgdXNlZCBpZiB0aGUgbGF5ZXIgaXMg
dXNpbmcgY29tcG9zaXRlZCBzY3JvbGxpbmcuCiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNz
TGF5ZXI+IG1fc2Nyb2xsaW5nQ29udGVudHNMYXllcjsgLy8gT25seSB1c2VkIGlmIHRoZSBsYXll
ciBpcyB1c2luZyBjb21wb3NpdGVkIHNjcm9sbGluZy4KIAotICAgIHVpbnQ2NF90IG1fc2Nyb2xs
TGF5ZXJJRDsKKyAgICBTY3JvbGxpbmdOb2RlSUQgbV92aWV3cG9ydENvbnN0cmFpbmVkTm9kZUlE
OworICAgIFNjcm9sbGluZ05vZGVJRCBtX3Njcm9sbGluZ05vZGVJRDsKIAogICAgIExheW91dFJl
Y3QgbV9jb21wb3NpdGVkQm91bmRzOwogICAgIExheW91dFNpemUgbV9kZXZpY2VQaXhlbEZyYWN0
aW9uRnJvbVJlbmRlcmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCA0ZmViNzAwZWYxOWQ5YWRkMWZjMTRhOTAxNTMyMjQw
ZTFmZDY3NWJiLi45YmQwNDk3MTQ1NzY1MjgxYWFmOGQ3ZmEyZmUzNDA5MjU1NjAxMGFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cApAQCAtNDM5LDEwICs0MzksMTAgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmZsdXNo
UGVuZGluZ0xheWVyQ2hhbmdlcyhib29sIGlzRmx1c2hSb290KQogICAgICAgICBjbGllbnQtPmRp
ZEZsdXNoQ29tcG9zaXRpbmdMYXllcnMoKTsKICNlbmRpZgogCi0gICAgZm9yIChhdXRvIGl0ID0g
bV92aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzTmVlZGluZ1VwZGF0ZS5iZWdpbigpLCBlbmQgPSBt
X3ZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnNOZWVkaW5nVXBkYXRlLmVuZCgpOyBpdCAhPSBlbmQ7
ICsraXQpCi0gICAgICAgIHJlZ2lzdGVyT3JVcGRhdGVWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXIo
KippdCk7CisgICAgZm9yIChhdXRvIGl0ID0gbV9zY3JvbGxDb29yZGluYXRlZExheWVyc05lZWRp
bmdVcGRhdGUuYmVnaW4oKSwgZW5kID0gbV9zY3JvbGxDb29yZGluYXRlZExheWVyc05lZWRpbmdV
cGRhdGUuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgdXBkYXRlU2Nyb2xsQ29vcmRp
bmF0ZWRTdGF0dXMoKippdCk7CiAKLSAgICBtX3ZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnNOZWVk
aW5nVXBkYXRlLmNsZWFyKCk7CisgICAgbV9zY3JvbGxDb29yZGluYXRlZExheWVyc05lZWRpbmdV
cGRhdGUuY2xlYXIoKTsKICAgICBzdGFydExheWVyRmx1c2hUaW1lcklmTmVlZGVkKCk7CiB9CiAK
QEAgLTQ4OCw4ICs0ODgsOCBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ3Vz
dG9tTGF5ZXJzQWZ0ZXJGbHVzaCgpCiAKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkaWRG
bHVzaENoYW5nZXNGb3JMYXllcihSZW5kZXJMYXllciYgbGF5ZXIsIGNvbnN0IEdyYXBoaWNzTGF5
ZXIqIGdyYXBoaWNzTGF5ZXIpCiB7Ci0gICAgaWYgKG1fdmlld3BvcnRDb25zdHJhaW5lZExheWVy
cy5jb250YWlucygmbGF5ZXIpKQotICAgICAgICBtX3ZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnNO
ZWVkaW5nVXBkYXRlLmFkZCgmbGF5ZXIpOworICAgIGlmIChtX3Njcm9sbENvb3JkaW5hdGVkTGF5
ZXJzLmNvbnRhaW5zKCZsYXllcikpCisgICAgICAgIG1fc2Nyb2xsQ29vcmRpbmF0ZWRMYXllcnNO
ZWVkaW5nVXBkYXRlLmFkZCgmbGF5ZXIpOwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmICht
X3Njcm9sbGluZ0xheWVycy5jb250YWlucygmbGF5ZXIpKQpAQCAtNzc0LDcgKzc3NCw3IEBAIGJv
b2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVCYWNraW5nKFJlbmRlckxheWVyJiBsYXll
ciwgQ29tcG9zaXRpbmdDaGFuZ2VSCiAKICAgICAgICAgICAgIC8vIEF0IHRoaXMgdGltZSwgdGhl
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yIG9ubHkgc3VwcG9ydHMgdGhlIHRvcC1sZXZlbCBmcmFtZS4K
ICAgICAgICAgICAgIGlmIChsYXllci5pc1Jvb3RMYXllcigpICYmICFtX3JlbmRlclZpZXcuZG9j
dW1lbnQoKS5vd25lckVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAgIGxheWVyLmJhY2tpbmco
KS0+YXR0YWNoVG9TY3JvbGxpbmdDb29yZGluYXRvcldpdGhQYXJlbnQoMCk7CisgICAgICAgICAg
ICAgICAgdXBkYXRlU2Nyb2xsQ29vcmRpbmF0ZWRTdGF0dXMobGF5ZXIpOwogICAgICAgICAgICAg
ICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlz
LT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQogICAgICAgICAgICAgICAgICAgICBzY3JvbGxpbmdD
b29yZGluYXRvci0+ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKCZtX3JlbmRlclZpZXcuZnJh
bWVWaWV3KCkpOwogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKQEAgLTgwNyw3ICs4MDcsNyBA
QCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQmFja2luZyhSZW5kZXJMYXllciYg
bGF5ZXIsIENvbXBvc2l0aW5nQ2hhbmdlUgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgcmVtb3ZlVmlld3BvcnRDb25zdHJhaW5lZExheWVyKGxheWVyKTsK
KyAgICAgICAgICAgIGRldGFjaFNjcm9sbENvb3JkaW5hdGVkTGF5ZXIobGF5ZXIpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBsYXllci5jbGVhckJhY2tpbmcoKTsKICAgICAgICAgICAgIGxh
eWVyQ2hhbmdlZCA9IHRydWU7CkBAIC05MzAsNyArOTMwLDcgQEAgdm9pZCBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OmxheWVyV2lsbEJlUmVtb3ZlZChSZW5kZXJMYXllciYgcGFyZW50LCBSZW5kZXJM
YXllciYKICAgICBpZiAoIWNoaWxkLmlzQ29tcG9zaXRlZCgpIHx8IHBhcmVudC5yZW5kZXJlcigp
LmRvY3VtZW50QmVpbmdEZXN0cm95ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVtb3Zl
Vmlld3BvcnRDb25zdHJhaW5lZExheWVyKGNoaWxkKTsKKyAgICByZW1vdmVGcm9tU2Nyb2xsQ29v
cmRpbmF0ZWRMYXllcnMoY2hpbGQpOwogICAgIHJlcGFpbnRJbkNvbXBvc2l0ZWRBbmNlc3Rvcihj
aGlsZCwgY2hpbGQuYmFja2luZygpLT5jb21wb3NpdGVkQm91bmRzKCkpOwogCiAgICAgc2V0Q29t
cG9zaXRpbmdQYXJlbnQoY2hpbGQsIG51bGxwdHIpOwpAQCAtMTU1OSwxMyArMTU1OSw4IEBAIHZv
aWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpmaXhlZFJvb3RCYWNrZ3JvdW5kTGF5ZXJDaGFuZ2Vk
KCkKICAgICBpZiAobV9yZW5kZXJWaWV3LmRvY3VtZW50QmVpbmdEZXN0cm95ZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29y
ZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpIHsKLSAgICAgICAgUmVuZGVy
TGF5ZXJCYWNraW5nKiByZW5kZXJWaWV3QmFja2luZyA9IG1fcmVuZGVyVmlldy5sYXllcigpLT5i
YWNraW5nKCk7Ci0gICAgICAgIGlmICghcmVuZGVyVmlld0JhY2tpbmcpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnVwZGF0ZVNjcm9sbGluZ05v
ZGUocmVuZGVyVmlld0JhY2tpbmctPnNjcm9sbExheWVySUQoKSwgc2Nyb2xsTGF5ZXIoKSwgbnVs
bHB0ciwgZml4ZWRSb290QmFja2dyb3VuZExheWVyKCkpOwotICAgIH0KKyAgICBpZiAobV9yZW5k
ZXJWaWV3LmxheWVyKCktPmlzQ29tcG9zaXRlZCgpKQorICAgICAgICB1cGRhdGVTY3JvbGxDb29y
ZGluYXRlZFN0YXR1cygqbV9yZW5kZXJWaWV3LmxheWVyKCkpOwogfQogCiBTdHJpbmcgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpsYXllclRyZWVBc1RleHQoTGF5ZXJUcmVlRmxhZ3MgZmxhZ3MpCkBA
IC0xODY3LDcgKzE4NjIsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2V0SXNJbldp
bmRvdyhib29sIGlzSW5XaW5kb3cpCiB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y2xlYXJC
YWNraW5nRm9yTGF5ZXJJbmNsdWRpbmdEZXNjZW5kYW50cyhSZW5kZXJMYXllciYgbGF5ZXIpCiB7
CiAgICAgaWYgKGxheWVyLmlzQ29tcG9zaXRlZCgpKSB7Ci0gICAgICAgIHJlbW92ZVZpZXdwb3J0
Q29uc3RyYWluZWRMYXllcihsYXllcik7CisgICAgICAgIHJlbW92ZUZyb21TY3JvbGxDb29yZGlu
YXRlZExheWVycyhsYXllcik7CiAgICAgICAgIGxheWVyLmNsZWFyQmFja2luZygpOwogICAgIH0K
IApAQCAtMTk4NSw3ICsxOTgwLDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVp
cmVzQ29tcG9zaXRpbmdMYXllcihjb25zdCBSZW5kZXJMYXllciYgbGF5ZXIsIFIKICAgICAgICAg
fHwgcmVxdWlyZXNDb21wb3NpdGluZ0ZvckZpbHRlcnMoKnJlbmRlcmVyKQogICAgICAgICB8fCBy
ZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24oKnJlbmRlcmVyLCAqcmVuZGVyZXItPmxheWVy
KCksIHZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uKQogI2lmIFBMQVRGT1JN
KElPUykKLSAgICAgICAgfHwgcmVxdWlyZXNDb21wb3NpdGluZ0ZvclNjcm9sbGluZygqcmVuZGVy
ZXIpCisgICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JTY3JvbGxpbmcoKnJlbmRlcmVy
LT5sYXllcigpKQogI2VuZGlmCiAgICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JPdmVy
Zmxvd1Njcm9sbGluZygqcmVuZGVyZXItPmxheWVyKCkpOwogfQpAQCAtMjAzMyw3ICsyMDI4LDcg
QEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzT3duQmFja2luZ1N0b3JlKGNv
bnN0IFJlbmRlckxheWVyJiBsYXllciwgY28KICAgICAgICAgfHwgcmVuZGVyZXIuaGFzUmVmbGVj
dGlvbigpCiAgICAgICAgIHx8IHJlbmRlcmVyLmhhc0ZpbHRlcigpCiAjaWYgUExBVEZPUk0oSU9T
KQotICAgICAgICB8fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yU2Nyb2xsaW5nKHJlbmRlcmVyKQor
ICAgICAgICB8fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yU2Nyb2xsaW5nKGxheWVyKQogI2VuZGlm
CiAgICAgICAgICkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMDkzLDcgKzIwODgsNyBAQCBD
b21wb3NpdGluZ1JlYXNvbnMgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWFzb25zRm9yQ29tcG9z
aXRpbmcoY29uc3QgUmVuZGVyTGF5ZQogICAgICAgICByZWFzb25zIHw9IHJlbmRlcmVyLT5zdHls
ZSgpLnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbiA/IENvbXBvc2l0aW5nUmVhc29uUG9zaXRp
b25GaXhlZCA6IENvbXBvc2l0aW5nUmVhc29uUG9zaXRpb25TdGlja3k7CiAKICNpZiBQTEFURk9S
TShJT1MpCi0gICAgaWYgKHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JTY3JvbGxpbmcoKnJlbmRlcmVy
KSkKKyAgICBpZiAocmVxdWlyZXNDb21wb3NpdGluZ0ZvclNjcm9sbGluZygqcmVuZGVyZXItPmxh
eWVyKCkpKQogICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uT3ZlcmZsb3dTY3Jv
bGxpbmdUb3VjaDsKICNlbmRpZgogCkBAIC0yNDE2LDkgKzI0MTEsOSBAQCBib29sIFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvckluZGlyZWN0UmVhc29uKFJlbmRl
ckxheWVyTW9kZQogfQogCiAjaWYgUExBVEZPUk0oSU9TKQotYm9vbCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JTY3JvbGxpbmcoUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCYgcmVuZGVyZXIpIGNvbnN0Citib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWly
ZXNDb21wb3NpdGluZ0ZvclNjcm9sbGluZyhjb25zdCBSZW5kZXJMYXllciYgbGF5ZXIpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIHJlbmRlcmVyLmhhc0xheWVyKCkgJiYgdG9SZW5kZXJCb3hNb2RlbE9i
amVjdChyZW5kZXJlcikubGF5ZXIoKS0+aGFzQWNjZWxlcmF0ZWRUb3VjaFNjcm9sbGluZygpOwor
ICAgIHJldHVybiBsYXllci5oYXNBY2NlbGVyYXRlZFRvdWNoU2Nyb2xsaW5nKCk7CiB9CiAjZW5k
aWYKIApAQCAtMjQ2NCw2ICsyNDU5LDcgQEAgc3RhdGljIGJvb2wgaXNWaWV3cG9ydENvbnN0cmFp
bmVkRml4ZWRPclN0aWNreUxheWVyKGNvbnN0IFJlbmRlckxheWVyJiBsYXllcikKICAgICBpZiAo
bGF5ZXIucmVuZGVyZXIoKS5zdHlsZSgpLnBvc2l0aW9uKCkgIT0gRml4ZWRQb3NpdGlvbikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgLy8gRklYTUU6IEhhbmRsZSBmaXhlZCBpbnNpZGUg
b2YgYSB0cmFuc2Zvcm0sIHdoaWNoIHNob3VsZCBub3QgYmVoYXZlIGFzIGZpeGVkLgogICAgIGZv
ciAoUmVuZGVyTGF5ZXIqIHN0YWNraW5nQ29udGFpbmVyID0gbGF5ZXIuc3RhY2tpbmdDb250YWlu
ZXIoKTsgc3RhY2tpbmdDb250YWluZXI7IHN0YWNraW5nQ29udGFpbmVyID0gc3RhY2tpbmdDb250
YWluZXItPnN0YWNraW5nQ29udGFpbmVyKCkpIHsKICAgICAgICAgaWYgKHN0YWNraW5nQ29udGFp
bmVyLT5pc0NvbXBvc2l0ZWQoKSAmJiBzdGFja2luZ0NvbnRhaW5lci0+cmVuZGVyZXIoKS5zdHls
ZSgpLnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbikKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTI0NzIsNiArMjQ2OCwxOCBAQCBzdGF0aWMgYm9vbCBpc1ZpZXdwb3J0Q29uc3RyYWlu
ZWRGaXhlZE9yU3RpY2t5TGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyKQogICAgIHJldHVy
biB0cnVlOwogfQogCitzdGF0aWMgYm9vbCBpc01haW5GcmFtZVNjcm9sbGluZ09yT3ZlcmZsb3dT
Y3JvbGxpbmcoUmVuZGVyVmlldyYgdmlldywgY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyKQorewor
ICAgIGlmIChsYXllci5pc1Jvb3RMYXllcigpICYmICF2aWV3LmRvY3VtZW50KCkub3duZXJFbGVt
ZW50KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHJl
dHVybiBsYXllci5oYXNBY2NlbGVyYXRlZFRvdWNoU2Nyb2xsaW5nKCk7CisjZWxzZQorICAgIHJl
dHVybiBsYXllci5uZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKTsKKyNlbmRpZgorfQorCiBib29s
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0aW9uKFJl
bmRlckxheWVyTW9kZWxPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJMYXllciYgbGF5ZXIs
IFJlbmRlckxheWVyOjpWaWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbiogdmll
d3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24pIGNvbnN0CiB7CiAgICAgLy8gcG9z
aXRpb246Zml4ZWQgZWxlbWVudHMgdGhhdCBjcmVhdGUgdGhlaXIgb3duIHN0YWNraW5nIGNvbnRl
eHQgKGUuZy4gaGF2ZSBhbiBleHBsaWNpdCB6LWluZGV4LApAQCAtMzI2OCw3ICszMjc2LDcgQEAg
dm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVJvb3RMYXllckF0dGFjaG1lbnQoKQog
dm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJvb3RMYXllckF0dGFjaG1lbnRDaGFuZ2VkKCkK
IHsKICAgICAvLyBUaGUgYXR0YWNobWVudCBjYW4gYWZmZWN0IHdoZXRoZXIgdGhlIFJlbmRlclZp
ZXcgbGF5ZXIncyBwYWludHNJbnRvV2luZG93KCkgYmVoYXZpb3IsCi0gICAgLy8gc28gY2FsbCB1
cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnkoKSB0byB1ZHBhdGUgdGhhdC4KKyAgICAvLyBzbyBj
YWxsIHVwZGF0ZURyYXdzQ29udGVudCgpIHRvIHVwZGF0ZSB0aGF0LgogICAgIFJlbmRlckxheWVy
KiBsYXllciA9IG1fcmVuZGVyVmlldy5sYXllcigpOwogICAgIGlmIChSZW5kZXJMYXllckJhY2tp
bmcqIGJhY2tpbmcgPSBsYXllciA/IGxheWVyLT5iYWNraW5nKCkgOiAwKQogICAgICAgICBiYWNr
aW5nLT51cGRhdGVEcmF3c0NvbnRlbnQoKTsKQEAgLTMzNDIsMjggKzMzNTAsMzAgQEAgdm9pZCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpCiAg
ICAgICAgIHJvb3RMYXllci0+bm90ZURldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZEluY2x1
ZGluZ0Rlc2NlbmRhbnRzKCk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRh
dGVWaWV3cG9ydENvbnN0cmFpbnRTdGF0dXMoUmVuZGVyTGF5ZXImIGxheWVyKQordm9pZCBSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbENvb3JkaW5hdGVkU3RhdHVzKFJlbmRlckxh
eWVyJiBsYXllcikKIHsKKyAgICBTY3JvbGxDb29yZGluYXRpb25SZWFzb25zIGNvb3JkaW5hdGlv
blJlYXNvbnMgPSAwOwogICAgIGlmIChpc1ZpZXdwb3J0Q29uc3RyYWluZWRGaXhlZE9yU3RpY2t5
TGF5ZXIobGF5ZXIpKQotICAgICAgICBhZGRWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXIobGF5ZXIp
OwotICAgIGVsc2UKLSAgICAgICAgcmVtb3ZlVmlld3BvcnRDb25zdHJhaW5lZExheWVyKGxheWVy
KTsKLX0KKyAgICAgICAgY29vcmRpbmF0aW9uUmVhc29ucyB8PSBGaXhlZE9yU3RpY2t5OwogCi12
b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6YWRkVmlld3BvcnRDb25zdHJhaW5lZExheWVyKFJl
bmRlckxheWVyJiBsYXllcikKLXsKLSAgICBtX3ZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnMuYWRk
KCZsYXllcik7Ci0gICAgcmVnaXN0ZXJPclVwZGF0ZVZpZXdwb3J0Q29uc3RyYWluZWRMYXllcihs
YXllcik7CisgICAgaWYgKGlzTWFpbkZyYW1lU2Nyb2xsaW5nT3JPdmVyZmxvd1Njcm9sbGluZyht
X3JlbmRlclZpZXcsIGxheWVyKSkKKyAgICAgICAgY29vcmRpbmF0aW9uUmVhc29ucyB8PSBTY3Jv
bGxpbmc7CisgICAgICAgIAorICAgIGlmIChjb29yZGluYXRpb25SZWFzb25zKSB7CisgICAgICAg
IG1fc2Nyb2xsQ29vcmRpbmF0ZWRMYXllcnMuYWRkKCZsYXllcik7CisgICAgICAgIHVwZGF0ZVNj
cm9sbENvb3JkaW5hdGVkTGF5ZXIobGF5ZXIsIGNvb3JkaW5hdGlvblJlYXNvbnMpOworICAgIH0g
ZWxzZQorICAgICAgICByZW1vdmVGcm9tU2Nyb2xsQ29vcmRpbmF0ZWRMYXllcnMobGF5ZXIpOwog
fQogCi12b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVtb3ZlVmlld3BvcnRDb25zdHJhaW5l
ZExheWVyKFJlbmRlckxheWVyJiBsYXllcikKK3ZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpy
ZW1vdmVGcm9tU2Nyb2xsQ29vcmRpbmF0ZWRMYXllcnMoUmVuZGVyTGF5ZXImIGxheWVyKQogewot
ICAgIGlmICghbV92aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzLmNvbnRhaW5zKCZsYXllcikpCisg
ICAgaWYgKCFtX3Njcm9sbENvb3JkaW5hdGVkTGF5ZXJzLmNvbnRhaW5zKCZsYXllcikpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHVucmVnaXN0ZXJWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXIobGF5
ZXIpOwotICAgIG1fdmlld3BvcnRDb25zdHJhaW5lZExheWVycy5yZW1vdmUoJmxheWVyKTsKLSAg
ICBtX3ZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnNOZWVkaW5nVXBkYXRlLnJlbW92ZSgmbGF5ZXIp
OworICAgIHJlbW92ZUZyb21TY3JvbGxDb29yZGluYXRlZExheWVycyhsYXllcik7CisgICAgbV9z
Y3JvbGxDb29yZGluYXRlZExheWVycy5yZW1vdmUoJmxheWVyKTsKKyAgICBtX3Njcm9sbENvb3Jk
aW5hdGVkTGF5ZXJzTmVlZGluZ1VwZGF0ZS5yZW1vdmUoJmxheWVyKTsKIH0KIAogRml4ZWRQb3Np
dGlvblZpZXdwb3J0Q29uc3RyYWludHMgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlRml4
ZWRWaWV3cG9ydENvbnN0cmFpbnRzKFJlbmRlckxheWVyJiBsYXllcikgY29uc3QKQEAgLTM0MjQs
MTIgKzM0MzQsMTIgQEAgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzIFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6Y29tcHV0ZVN0aWNreVZpZXdwb3J0Q28KICAgICByZXR1cm4gY29uc3Ry
YWludHM7CiB9CiAKLXN0YXRpYyBSZW5kZXJMYXllckJhY2tpbmcqIG5lYXJlc3RTY3JvbGxpbmdD
b29yZGluYXRvckFuY2VzdG9yKFJlbmRlckxheWVyJiBsYXllcikKK3N0YXRpYyBSZW5kZXJMYXll
ckJhY2tpbmcqIG5lYXJlc3RTY3JvbGxDb29yZGluYXRlZEFuY2VzdG9yKFJlbmRlckxheWVyJiBs
YXllcikKIHsKICAgICBSZW5kZXJMYXllciogYW5jZXN0b3IgPSBsYXllci5wYXJlbnQoKTsKICAg
ICB3aGlsZSAoYW5jZXN0b3IpIHsKICAgICAgICAgaWYgKFJlbmRlckxheWVyQmFja2luZyogYmFj
a2luZyA9IGFuY2VzdG9yLT5iYWNraW5nKCkpIHsKLSAgICAgICAgICAgIGlmIChiYWNraW5nLT5z
Y3JvbGxMYXllcklEKCkgJiYgIWFuY2VzdG9yLT5zY3JvbGxzT3ZlcmZsb3coKSkKKyAgICAgICAg
ICAgIGlmIChiYWNraW5nLT5zY3JvbGxpbmdOb2RlSURGb3JDaGlsZHJlbigpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBiYWNraW5nOwogICAgICAgICB9CiAgICAgICAgIGFuY2VzdG9yID0gYW5j
ZXN0b3ItPnBhcmVudCgpOwpAQCAtMzQzOCw0NiArMzQ0OCw5MiBAQCBzdGF0aWMgUmVuZGVyTGF5
ZXJCYWNraW5nKiBuZWFyZXN0U2Nyb2xsaW5nQ29vcmRpbmF0b3JBbmNlc3RvcihSZW5kZXJMYXll
ciYgbGF5ZQogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6cmVnaXN0ZXJPclVwZGF0ZVZpZXdwb3J0Q29uc3RyYWluZWRMYXllcihSZW5kZXJMYXll
ciYgbGF5ZXIpCit2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xsQ29vcmRp
bmF0ZWRMYXllcihSZW5kZXJMYXllciYgbGF5ZXIsIFNjcm9sbENvb3JkaW5hdGlvblJlYXNvbnMg
cmVhc29ucykKIHsKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgc3RpY2t5IHBvc2l0
aW9uIGhlcmUhIEFuZCB3ZSBzaG91bGQgZXZlbnR1YWxsIHN1cHBvcnQgZml4ZWQvc3RpY2t5IGVs
ZW1lbnRzCi0gICAgLy8gdGhhdCBhcmUgaW5zaWRlIG5vbi1tYWluIGZyYW1lcyBvbmNlIHdlIGdl
dCBub24tbWFpbiBmcmFtZXMgc2Nyb2xsaW5nIHdpdGggdGhlIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
LgorICAgIC8vIEZJWE1FOiBzdXBwb3J0IHNjcm9sbGluZyBsYXllcnMgaW4gaWZyYW1lcy4KICAg
ICBpZiAobV9yZW5kZXJWaWV3LmRvY3VtZW50KCkub3duZXJFbGVtZW50KCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9
IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCk7CiAgICAgaWYgKCFzY3JvbGxpbmdDb29yZGlu
YXRvcikKICAgICAgICAgcmV0dXJuOworICAgIAorICAgIGJvb2wgaXNSb290TGF5ZXIgPSAmbGF5
ZXIgPT0gbV9yZW5kZXJWaWV3LmxheWVyKCk7CiAKLSAgICAvLyBGSVhNRTogcmVuYW1lIHRvIHN1
cHBvcnRzVmlld3BvcnRDb25zdHJhaW5lZFBvc2l0aW9uTGF5ZXJzKCk/Ci0gICAgaWYgKCFzY3Jv
bGxpbmdDb29yZGluYXRvci0+c3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkgfHwgIWxheWVy
LnBhcmVudCgpKQorICAgIC8vIEZJWE1FOiBSZW1vdmUgc3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5
ZXJzKCkgc2luY2UgYWxsIHBsYXRmb3JtcyBzdXBwb3J0IHRoZW0gbm93LgorICAgIGlmICghc2Ny
b2xsaW5nQ29vcmRpbmF0b3ItPnN1cHBvcnRzRml4ZWRQb3NpdGlvbkxheWVycygpIHx8ICghbGF5
ZXIucGFyZW50KCkgJiYgIWlzUm9vdExheWVyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNT
RVJUKG1fdmlld3BvcnRDb25zdHJhaW5lZExheWVycy5jb250YWlucygmbGF5ZXIpKTsKKyAgICBB
U1NFUlQobV9zY3JvbGxDb29yZGluYXRlZExheWVycy5jb250YWlucygmbGF5ZXIpKTsKICAgICBB
U1NFUlQobGF5ZXIuaXNDb21wb3NpdGVkKCkpOwogCiAgICAgUmVuZGVyTGF5ZXJCYWNraW5nKiBi
YWNraW5nID0gbGF5ZXIuYmFja2luZygpOwogICAgIGlmICghYmFja2luZykKICAgICAgICAgcmV0
dXJuOwogCi0gICAgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCA9IGJhY2tpbmctPnNjcm9sbExheWVy
SUQoKTsKLSAgICBSZW5kZXJMYXllckJhY2tpbmcqIHBhcmVudCA9IG5lYXJlc3RTY3JvbGxpbmdD
b29yZGluYXRvckFuY2VzdG9yKGxheWVyKTsKLSAgICBpZiAoIXBhcmVudCkKKyAgICBSZW5kZXJM
YXllckJhY2tpbmcqIHBhcmVudCA9IG5lYXJlc3RTY3JvbGxDb29yZGluYXRlZEFuY2VzdG9yKGxh
eWVyKTsKKyAgICBpZiAoIXBhcmVudCAmJiAhaXNSb290TGF5ZXIpCiAgICAgICAgIHJldHVybjsK
IAorICAgIFNjcm9sbGluZ05vZGVJRCBwYXJlbnROb2RlSUQgPSBwYXJlbnQgPyBwYXJlbnQtPnNj
cm9sbGluZ05vZGVJREZvckNoaWxkcmVuKCkgOiAwOworICAgIAogICAgIC8vIEFsd2F5cyBjYWxs
IHRoaXMgZXZlbiBpZiB0aGUgYmFja2luZyBpcyBhbHJlYWR5IGF0dGFjaGVkIGJlY2F1c2UgdGhl
IHBhcmVudCBtYXkgaGF2ZSBjaGFuZ2VkLgotICAgIGJhY2tpbmctPmF0dGFjaFRvU2Nyb2xsaW5n
Q29vcmRpbmF0b3JXaXRoUGFyZW50KHBhcmVudCk7Ci0gICAgbm9kZUlEID0gYmFja2luZy0+c2Ny
b2xsTGF5ZXJJRCgpOworICAgIC8vIElmIGEgbm9kZSBwbGF5cyBib3RoIHJvbGVzLCBmaXhlZC9z
dGlja3kgaXMgYWx3YXlzIHRoZSBhbmNlc3RvciBub2RlIG9mIHNjcm9sbGluZy4KKyAgICBpZiAo
cmVhc29ucyAmIEZpeGVkT3JTdGlja3kpIHsKKyAgICAgICAgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJ
RCA9IGJhY2tpbmctPnZpZXdwb3J0Q29uc3RyYWluZWROb2RlSUQoKTsKKyAgICAgICAgaWYgKCFu
b2RlSUQpCisgICAgICAgICAgICBub2RlSUQgPSBzY3JvbGxpbmdDb29yZGluYXRvci0+dW5pcXVl
U2Nyb2xsTGF5ZXJJRCgpOworCisgICAgICAgIFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlOwor
ICAgICAgICBpZiAobGF5ZXIucmVuZGVyZXIoKS5zdHlsZSgpLnBvc2l0aW9uKCkgPT0gRml4ZWRQ
b3NpdGlvbikKKyAgICAgICAgICAgIG5vZGVUeXBlID0gRml4ZWROb2RlOworICAgICAgICBlbHNl
IGlmIChsYXllci5yZW5kZXJlcigpLnN0eWxlKCkucG9zaXRpb24oKSA9PSBTdGlja3lQb3NpdGlv
bikKKyAgICAgICAgICAgIG5vZGVUeXBlID0gU3RpY2t5Tm9kZTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICBpZiAobGF5ZXIucmVuZGVyZXIo
KS5pc1N0aWNreVBvc2l0aW9uZWQoKSkKLSAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnVw
ZGF0ZVZpZXdwb3J0Q29uc3RyYWluZWROb2RlKG5vZGVJRCwgY29tcHV0ZVN0aWNreVZpZXdwb3J0
Q29uc3RyYWludHMobGF5ZXIpLCBiYWNraW5nLT5ncmFwaGljc0xheWVyKCkpOwotICAgIGVsc2UK
LSAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnVwZGF0ZVZpZXdwb3J0Q29uc3RyYWluZWRO
b2RlKG5vZGVJRCwgY29tcHV0ZUZpeGVkVmlld3BvcnRDb25zdHJhaW50cyhsYXllciksIGJhY2tp
bmctPmdyYXBoaWNzTGF5ZXIoKSk7CisgICAgICAgIG5vZGVJRCA9IHNjcm9sbGluZ0Nvb3JkaW5h
dG9yLT5hdHRhY2hUb1N0YXRlVHJlZShub2RlVHlwZSwgbm9kZUlELCBwYXJlbnROb2RlSUQpOwor
ICAgICAgICBiYWNraW5nLT5zZXRWaWV3cG9ydENvbnN0cmFpbmVkTm9kZUlEKG5vZGVJRCk7CisK
KyAgICAgICAgc3dpdGNoIChub2RlVHlwZSkgeworICAgICAgICBjYXNlIEZpeGVkTm9kZToKKyAg
ICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT51cGRhdGVWaWV3cG9ydENvbnN0cmFpbmVk
Tm9kZShub2RlSUQsIGNvbXB1dGVGaXhlZFZpZXdwb3J0Q29uc3RyYWludHMobGF5ZXIpLCBiYWNr
aW5nLT5ncmFwaGljc0xheWVyKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
U3RpY2t5Tm9kZToKKyAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT51cGRhdGVWaWV3
cG9ydENvbnN0cmFpbmVkTm9kZShub2RlSUQsIGNvbXB1dGVTdGlja3lWaWV3cG9ydENvbnN0cmFp
bnRzKGxheWVyKSwgYmFja2luZy0+Z3JhcGhpY3NMYXllcigpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFNjcm9sbGluZ05vZGU6CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgcGFyZW50Tm9kZUlEID0gbm9kZUlEOworICAgIH0KKwor
ICAgIGlmIChyZWFzb25zICYgU2Nyb2xsaW5nKSB7CisgICAgICAgIFNjcm9sbGluZ05vZGVJRCBu
b2RlSUQgPSBiYWNraW5nLT5zY3JvbGxpbmdOb2RlSUQoKTsKKyAgICAgICAgaWYgKCFub2RlSUQp
CisgICAgICAgICAgICBub2RlSUQgPSBzY3JvbGxpbmdDb29yZGluYXRvci0+dW5pcXVlU2Nyb2xs
TGF5ZXJJRCgpOworCisgICAgICAgIG5vZGVJRCA9IHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5hdHRh
Y2hUb1N0YXRlVHJlZShTY3JvbGxpbmdOb2RlLCBub2RlSUQsIHBhcmVudE5vZGVJRCk7CisgICAg
ICAgIGJhY2tpbmctPnNldFNjcm9sbGluZ05vZGVJRChub2RlSUQpOworCisgICAgICAgIEdyYXBo
aWNzTGF5ZXIqIHNjcm9sbGluZ0xheWVyID0gYmFja2luZy0+c2Nyb2xsaW5nTGF5ZXIoKTsKKyAg
ICAgICAgR3JhcGhpY3NMYXllciogc2Nyb2xsZWRDb250ZW50c0xheWVyID0gYmFja2luZy0+c2Ny
b2xsaW5nQ29udGVudHNMYXllcigpOworICAgICAgICBHcmFwaGljc0xheWVyKiBjb3VudGVyU2Ny
b2xsaW5nTGF5ZXIgPSBudWxscHRyOworCisgICAgICAgIGlmICgmbGF5ZXIgPT0gbV9yZW5kZXJW
aWV3LmxheWVyKCkpIHsKKyAgICAgICAgICAgIHNjcm9sbGluZ0xheWVyID0gbV9zY3JvbGxMYXll
ci5nZXQoKTsKKyAgICAgICAgICAgIHNjcm9sbGVkQ29udGVudHNMYXllciA9IG51bGxwdHI7Cisg
ICAgICAgICAgICBjb3VudGVyU2Nyb2xsaW5nTGF5ZXIgPSBmaXhlZFJvb3RCYWNrZ3JvdW5kTGF5
ZXIoKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+dXBk
YXRlU2Nyb2xsaW5nTm9kZShub2RlSUQsIHNjcm9sbGluZ0xheWVyLCBzY3JvbGxlZENvbnRlbnRz
TGF5ZXIsIGNvdW50ZXJTY3JvbGxpbmdMYXllcik7CisgICAgfQogfQogCi12b2lkIFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6dW5yZWdpc3RlclZpZXdwb3J0Q29uc3RyYWluZWRMYXllcihSZW5kZXJM
YXllciYgbGF5ZXIpCit2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGV0YWNoU2Nyb2xsQ29v
cmRpbmF0ZWRMYXllcihSZW5kZXJMYXllciYgbGF5ZXIpCiB7Ci0gICAgQVNTRVJUKG1fdmlld3Bv
cnRDb25zdHJhaW5lZExheWVycy5jb250YWlucygmbGF5ZXIpKTsKKyAgICBBU1NFUlQobV9zY3Jv
bGxDb29yZGluYXRlZExheWVycy5jb250YWlucygmbGF5ZXIpKTsKIAogICAgIGlmIChSZW5kZXJM
YXllckJhY2tpbmcqIGJhY2tpbmcgPSBsYXllci5iYWNraW5nKCkpCiAgICAgICAgIGJhY2tpbmct
PmRldGFjaEZyb21TY3JvbGxpbmdDb29yZGluYXRvcigpOwpAQCAtMzQ5OSw3ICszNTU1LDcgQEAg
dm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlZ2lzdGVyQWxsVmlld3BvcnRDb25zdHJhaW5l
ZExheWVycygpCiAgICAgTGF5ZXJNYXAgbGF5ZXJNYXA7CiAgICAgU3RpY2t5Q29udGFpbmVyTWFw
IHN0aWNreUNvbnRhaW5lck1hcDsKIAotICAgIGZvciAoYXV0byBpdCA9IG1fdmlld3BvcnRDb25z
dHJhaW5lZExheWVycy5iZWdpbigpLCBlbmQgPSBtX3ZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnMu
ZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgIGZvciAoYXV0byBpdCA9IG1fc2Nyb2xsQ29v
cmRpbmF0ZWRMYXllcnMuYmVnaW4oKSwgZW5kID0gbV9zY3JvbGxDb29yZGluYXRlZExheWVycy5l
bmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIFJlbmRlckxheWVyJiBsYXllciA9ICoq
aXQ7CiAgICAgICAgIEFTU0VSVChsYXllci5pc0NvbXBvc2l0ZWQoKSk7CiAKQEAgLTM1MTEsOCAr
MzU2NywxMCBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVnaXN0ZXJBbGxWaWV3cG9y
dENvbnN0cmFpbmVkTGF5ZXJzKCkKICAgICAgICAgICAgICAgICBBU1NFUlQoZW5jbG9zaW5nVG91
Y2hTY3JvbGxhYmxlTGF5ZXItPmlzQ29tcG9zaXRlZCgpKTsKICAgICAgICAgICAgICAgICBzdGlj
a3lDb250YWluZXJNYXAuYWRkKGxheWVyLmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpLT5wbGF0
Zm9ybUxheWVyKCksIGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyLT5iYWNraW5nKCktPnNj
cm9sbGluZ0xheWVyKCktPnBsYXRmb3JtTGF5ZXIoKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAg
IH0gZWxzZQorICAgICAgICB9IGVsc2UgaWYgKGxheWVyLnJlbmRlcmVyKCkuc3R5bGUoKS5wb3Np
dGlvbigpID09IEZpeGVkUG9zaXRpb24pCiAgICAgICAgICAgICBjb25zdHJhaW50cyA9IHN0ZDo6
bWFrZV91bmlxdWU8Rml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM+KGNvbXB1dGVGaXhl
ZFZpZXdwb3J0Q29uc3RyYWludHMobGF5ZXIpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
Y29udGludWU7CiAKICAgICAgICAgbGF5ZXJNYXAuYWRkKGxheWVyLmJhY2tpbmcoKS0+Z3JhcGhp
Y3NMYXllcigpLT5wbGF0Zm9ybUxheWVyKCksIGFkb3B0UHRyKGNvbnN0cmFpbnRzLnJlbGVhc2Uo
KSkpOwogICAgIH0KQEAgLTM1NjAsMjYgKzM2MTgsNTEgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OnVucmVnaXN0ZXJBbGxTY3JvbGxpbmdMYXllcnMoKQogICAgICAgICBjbGllbnQtPnJl
bW92ZVNjcm9sbGluZ0xheWVyKGxheWVyLnJlbmRlcmVyKCkuZWxlbWVudCgpLCBiYWNraW5nLT5z
Y3JvbGxpbmdMYXllcigpLT5wbGF0Zm9ybUxheWVyKCksIGJhY2tpbmctPnNjcm9sbGluZ0NvbnRl
bnRzTGF5ZXIoKS0+cGxhdGZvcm1MYXllcigpKTsKICAgICB9CiB9CisjZW5kaWYKIAotLy8gQ2Fs
bGVkIHdoZW4gdGhlIHNpemUgb2YgdGhlIGNvbnRlbnRzTGF5ZXIgY2hhbmdlcywgYW5kIHdoZW4g
dGhlIGNvbnRlbnRzTGF5ZXIgaXMgcmVwbGFjZWQgYnkgYW5vdGhlciBsYXllci4KLXZvaWQgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpzY3JvbGxpbmdMYXllckFkZGVkT3JVcGRhdGVkKFJlbmRlckxh
eWVyKiBsYXllcikKK3ZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp3aWxsUmVtb3ZlU2Nyb2xs
aW5nTGF5ZXIoUmVuZGVyTGF5ZXImIGxheWVyKQogewotICAgIEFTU0VSVCghbV9yZW5kZXJWaWV3
LmRvY3VtZW50KCkuaW5QYWdlQ2FjaGUoKSk7Ci0gICAgbV9zY3JvbGxpbmdMYXllcnMuYWRkKGxh
eWVyKTsKKyAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9y
ID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkgeworICAgICAgICBSZW5kZXJMYXllckJh
Y2tpbmcqIGJhY2tpbmcgPSBsYXllci5iYWNraW5nKCk7CisgICAgCisgICAgICAgIGlmIChiYWNr
aW5nKQorICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmRldGFjaEZyb21TdGF0ZVRy
ZWUoYmFja2luZy0+c2Nyb2xsaW5nTm9kZUlEKCkpOworCisgICAgICAgIC8vIEZvciBDb29yZGlu
YXRlZCBHcmFwaGljcy4KKyAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVB
cmVhU2Nyb2xsTGF5ZXJEaWRDaGFuZ2UoJmxheWVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworI2lmIFBMQVRGT1JNKElPUykKKyAgICBtX3Njcm9sbGluZ0xheWVyc05lZWRpbmdVcGRhdGUu
cmVtb3ZlKCZsYXllcik7CisgICAgbV9zY3JvbGxpbmdMYXllcnMucmVtb3ZlKCZsYXllcik7CisK
KyAgICBpZiAobV9yZW5kZXJWaWV3LmRvY3VtZW50KCkuaW5QYWdlQ2FjaGUoKSB8fCAhbGF5ZXIu
YmFja2luZygpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoQ2hyb21lQ2xpZW50KiBjbGll
bnQgPSB0aGlzLT5jaHJvbWVDbGllbnQoKSkgeworICAgICAgICBQbGF0Zm9ybUxheWVyKiBzY3Jv
bGxpbmdMYXllciA9IGxheWVyLmJhY2tpbmcoKS0+c2Nyb2xsaW5nTGF5ZXIoKS0+cGxhdGZvcm1M
YXllcigpOworICAgICAgICBQbGF0Zm9ybUxheWVyKiBjb250ZW50c0xheWVyID0gbGF5ZXIuYmFj
a2luZygpLT5zY3JvbGxpbmdDb250ZW50c0xheWVyKCktPnBsYXRmb3JtTGF5ZXIoKTsKKyAgICAg
ICAgY2xpZW50LT5yZW1vdmVTY3JvbGxpbmdMYXllcihsYXllci5yZW5kZXJlcigpLmVsZW1lbnQo
KSwgc2Nyb2xsaW5nTGF5ZXIsIGNvbnRlbnRzTGF5ZXIpOworICAgIH0KKyNlbmRpZgogfQogCi12
b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2Nyb2xsaW5nTGF5ZXJSZW1vdmVkKFJlbmRlckxh
eWVyKiBsYXllciwgUGxhdGZvcm1MYXllciogc2Nyb2xsaW5nTGF5ZXIsIFBsYXRmb3JtTGF5ZXIq
IGNvbnRlbnRzTGF5ZXIpCit2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGlkQWRkU2Nyb2xs
aW5nTGF5ZXIoUmVuZGVyTGF5ZXImIGxheWVyKQogewotICAgIG1fc2Nyb2xsaW5nTGF5ZXJzTmVl
ZGluZ1VwZGF0ZS5yZW1vdmUobGF5ZXIpOwotICAgIG1fc2Nyb2xsaW5nTGF5ZXJzLnJlbW92ZShs
YXllcik7CisgICAgdXBkYXRlU2Nyb2xsQ29vcmRpbmF0ZWRTdGF0dXMobGF5ZXIpOwogCi0gICAg
aWYgKG1fcmVuZGVyVmlldy5kb2N1bWVudCgpLmluUGFnZUNhY2hlKCkpCisgICAgaWYgKFNjcm9s
bGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nv
b3JkaW5hdG9yKCkpIHsKKyAgICAgICAgLy8gRm9yIENvb3JkaW5hdGVkIEdyYXBoaWNzLgorICAg
ICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXllckRpZENo
YW5nZSgmbGF5ZXIpOwogICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgaWYgKENocm9tZUNs
aWVudCogY2xpZW50ID0gdGhpcy0+Y2hyb21lQ2xpZW50KCkpCi0gICAgICAgIGNsaWVudC0+cmVt
b3ZlU2Nyb2xsaW5nTGF5ZXIobGF5ZXItPnJlbmRlcmVyKCkuZWxlbWVudCgpLCBzY3JvbGxpbmdM
YXllciwgY29udGVudHNMYXllcik7Ci19CisjaWYgUExBVEZPUk0oSU9TKQorICAgIEFTU0VSVCgh
bV9yZW5kZXJWaWV3LmRvY3VtZW50KCkuaW5QYWdlQ2FjaGUoKSk7CisgICAgbV9zY3JvbGxpbmdM
YXllcnMuYWRkKCZsYXllcik7CiAjZW5kaWYKK30KIAogdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgK
aW5kZXggYzE1OGNmNDE5ZmIwM2MyYzE4MDk5ODdjNjllNmRmMTU3MDQ4MjZlOC4uNjA2ZTBiN2Vk
NTZlZmQ0MjliOTdlMjczNTg2OWZiZWI1OTM5ZDM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaApAQCAtMjY2LDE5ICsyNjYsMjAgQEAg
cHVibGljOgogICAgIEdyYXBoaWNzTGF5ZXIqIHVwZGF0ZUxheWVyRm9yRm9vdGVyKGJvb2wgd2Fu
dHNMYXllcik7CiAjZW5kaWYKIAotICAgIHZvaWQgdXBkYXRlVmlld3BvcnRDb25zdHJhaW50U3Rh
dHVzKFJlbmRlckxheWVyJik7Ci0gICAgdm9pZCByZW1vdmVWaWV3cG9ydENvbnN0cmFpbmVkTGF5
ZXIoUmVuZGVyTGF5ZXImKTsKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbENvb3JkaW5hdGVkU3RhdHVz
KFJlbmRlckxheWVyJik7CisgICAgdm9pZCByZW1vdmVGcm9tU2Nyb2xsQ29vcmRpbmF0ZWRMYXll
cnMoUmVuZGVyTGF5ZXImKTsKKworICAgIHZvaWQgd2lsbFJlbW92ZVNjcm9sbGluZ0xheWVyKFJl
bmRlckxheWVyJik7CisgICAgdm9pZCBkaWRBZGRTY3JvbGxpbmdMYXllcihSZW5kZXJMYXllciYp
OwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHZvaWQgcmVnaXN0ZXJBbGxWaWV3cG9ydENvbnN0
cmFpbmVkTGF5ZXJzKCk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyQWxsVmlld3BvcnRDb25zdHJhaW5l
ZExheWVycygpOwogCi0gICAgdm9pZCBzY3JvbGxpbmdMYXllckFkZGVkT3JVcGRhdGVkKFJlbmRl
ckxheWVyKik7Ci0gICAgdm9pZCBzY3JvbGxpbmdMYXllclJlbW92ZWQoUmVuZGVyTGF5ZXIqLCBQ
bGF0Zm9ybUxheWVyKiBzY3JvbGxpbmdMYXllciwgUGxhdGZvcm1MYXllciogY29udGVudHNMYXll
cik7Ci0KICAgICB2b2lkIHJlZ2lzdGVyQWxsU2Nyb2xsaW5nTGF5ZXJzKCk7CiAgICAgdm9pZCB1
bnJlZ2lzdGVyQWxsU2Nyb2xsaW5nTGF5ZXJzKCk7CiAjZW5kaWYKKwogICAgIHZvaWQgcmVzZXRU
cmFja2VkUmVwYWludFJlY3RzKCk7CiAgICAgdm9pZCBzZXRUcmFja3NSZXBhaW50cyhib29sKTsK
IApAQCAtMzk1LDcgKzM5Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0
aW5nRm9ySW5kaXJlY3RSZWFzb24oUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYsIGJvb2wgaGFzQ29t
cG9zaXRlZERlc2NlbmRhbnRzLCBib29sIGhhc0JsZW5kZWREZXNjZW5kYW50cywgYm9vbCBoYXMz
RFRyYW5zZm9ybWVkRGVzY2VuZGFudHMsIFJlbmRlckxheWVyOjpJbmRpcmVjdENvbXBvc2l0aW5n
UmVhc29uJikgY29uc3Q7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgYm9vbCByZXF1aXJlc0Nv
bXBvc2l0aW5nRm9yU2Nyb2xsaW5nKFJlbmRlckxheWVyTW9kZWxPYmplY3QmKSBjb25zdDsKKyAg
ICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JTY3JvbGxpbmcoY29uc3QgUmVuZGVyTGF5ZXIm
KSBjb25zdDsKIAogICAgIHZvaWQgdXBkYXRlQ3VzdG9tTGF5ZXJzQWZ0ZXJGbHVzaCgpOwogCkBA
IC00MDMsOSArNDA0LDE0IEBAIHByaXZhdGU6CiAKICNlbmRpZgogCi0gICAgdm9pZCBhZGRWaWV3
cG9ydENvbnN0cmFpbmVkTGF5ZXIoUmVuZGVyTGF5ZXImKTsKLSAgICB2b2lkIHJlZ2lzdGVyT3JV
cGRhdGVWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXIoUmVuZGVyTGF5ZXImKTsKLSAgICB2b2lkIHVu
cmVnaXN0ZXJWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXIoUmVuZGVyTGF5ZXImKTsKKyAgICBlbnVt
IFNjcm9sbENvb3JkaW5hdGlvblJlYXNvbiB7CisgICAgICAgIEZpeGVkT3JTdGlja3kgPSAxIDw8
IDAsCisgICAgICAgIFNjcm9sbGluZyA9IDEgPDwgMQorICAgIH07CisgICAgdHlwZWRlZiB1bnNp
Z25lZCBTY3JvbGxDb29yZGluYXRpb25SZWFzb25zOworCisgICAgdm9pZCB1cGRhdGVTY3JvbGxD
b29yZGluYXRlZExheWVyKFJlbmRlckxheWVyJiwgU2Nyb2xsQ29vcmRpbmF0aW9uUmVhc29ucyk7
CisgICAgdm9pZCBkZXRhY2hTY3JvbGxDb29yZGluYXRlZExheWVyKFJlbmRlckxheWVyJik7CiAK
ICAgICBGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cyBjb21wdXRlRml4ZWRWaWV3cG9y
dENvbnN0cmFpbnRzKFJlbmRlckxheWVyJikgY29uc3Q7CiAgICAgU3RpY2t5UG9zaXRpb25WaWV3
cG9ydENvbnN0cmFpbnRzIGNvbXB1dGVTdGlja3lWaWV3cG9ydENvbnN0cmFpbnRzKFJlbmRlckxh
eWVyJikgY29uc3Q7CkBAIC00NzUsOCArNDgxLDggQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFJl
bmRlckxheWVyKj4gbV9zY3JvbGxpbmdMYXllcnM7CiAgICAgSGFzaFNldDxSZW5kZXJMYXllcio+
IG1fc2Nyb2xsaW5nTGF5ZXJzTmVlZGluZ1VwZGF0ZTsKICNlbmRpZgotICAgIEhhc2hTZXQ8UmVu
ZGVyTGF5ZXIqPiBtX3ZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnM7Ci0gICAgSGFzaFNldDxSZW5k
ZXJMYXllcio+IG1fdmlld3BvcnRDb25zdHJhaW5lZExheWVyc05lZWRpbmdVcGRhdGU7CisgICAg
SGFzaFNldDxSZW5kZXJMYXllcio+IG1fc2Nyb2xsQ29vcmRpbmF0ZWRMYXllcnM7CisgICAgSGFz
aFNldDxSZW5kZXJMYXllcio+IG1fc2Nyb2xsQ29vcmRpbmF0ZWRMYXllcnNOZWVkaW5nVXBkYXRl
OwogCiAgICAgLy8gRW5jbG9zaW5nIGxheWVyIGZvciBvdmVyZmxvdyBjb250cm9scyBhbmQgdGhl
IGNsaXBwaW5nIGxheWVyCiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzTGF5ZXI+IG1fb3Zl
cmZsb3dDb250cm9sc0hvc3RMYXllcjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225320</attachid>
            <date>2014-02-26 16:28:46 -0800</date>
            <delta_ts>2014-02-26 16:33:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129398-20140226162844.patch</filename>
            <type>text/plain</type>
            <size>35893</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0NzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjI1N2UyNWU4NmIxMTkx
NDRlZDY1OWEwMDQ0ZTdmYjhmZjNmMzY1ZS4uOTgyZDNiMTQxY2ViMWE2MDhlNGUwOGRjYzQ4N2Y4
NmJjMDFhODk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE0LTAyLTI2ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFByZXBhcmUgZm9y
IG92ZXJmbG93IHNjcm9sbGluZyBub2RlcyBpbiB0aGUgc2Nyb2xsaW5nIHRyZWUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTM5OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExheSBzb21lIGdyb3VuZHdv
cmsgZm9yIG92ZXJmbG93OnNjcm9sbGluZyBub2RlcyBpbiB0aGUgc2Nyb2xsaW5nIHRyZWUuCisg
ICAgICAgIENoYW5nZSB0ZXJtaW5vbG9neSB0byByZWZlciB0byAic2Nyb2xsLWNvb3JkaW5hdG9y
ZWQiIGxheWVycyBub3csIG5vdCBqdXN0IHZpZXdwb3J0LWNvbnN0cmFpbmVkCisgICAgICAgIGxh
eWVycy4KKyAgICAgICAgCisgICAgICAgIEEgZ2l2ZW4gbGF5ZXIgY2FuIGJlIGJvdGggdmlld3Bv
cnQtY29uc3RyYWluZWQgYW5kIG92ZXJmbG93LXNjcm9sbGluZyAoZS5nLiBwb3NpdGlvbjpmaXhl
ZCwKKyAgICAgICAgb3ZlcmZsb3c6c2Nyb2xsKSwgc28gaGFuZGxlIHRoYXQgaW4gUmVuZGVyTGF5
ZXJCYWNraW5nLCBhbmQgdXNlIHNvbWUgInJlYXNvbiIgZmxhZ3MKKyAgICAgICAgaW4gUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLgorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzY3JvbGxMYXllcklEKTogUmVuYW1lCisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1N0YXRlVHJlZTo6YXR0YWNoTm9kZSk6IFJlbW92ZSBpbnZhbGlkIGFzc2VydGlv
bi4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6UmVuZGVyTGF5ZXJCYWNraW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckdlb21l
dHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlU2Nyb2xs
aW5nTGF5ZXJzKTogU2ltcGxpZnkgdGhlIGxvZ2ljIHdpdGgKKyAgICAgICAgYW4gZWFybHkgcmV0
dXJuLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpkZXRhY2hGcm9tU2Ny
b2xsaW5nQ29vcmRpbmF0b3IpOgorICAgICAgICBBbGxvdyBhIGxheWVyIHRvIHBsYXkgYm90aCB2
aWV3cG9ydC1jb25zdHJhaW5lZCBhbmQgc2Nyb2xsaW5nIHJvbGVzCisgICAgICAgIGluIHRoZSBz
Y3JvbGxpbmcgdHJlZS4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmg6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnZpZXdwb3J0Q29uc3RyYWlu
ZWROb2RlSUQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpzZXRWaWV3
cG9ydENvbnN0cmFpbmVkTm9kZUlEKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFj
a2luZzo6c2Nyb2xsaW5nTm9kZUlEKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFj
a2luZzo6c2V0U2Nyb2xsaW5nTm9kZUlEKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
QmFja2luZzo6c2Nyb2xsaW5nTm9kZUlERm9yQ2hpbGRyZW4pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkaWRGbHVzaENoYW5nZXNGb3JMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUJhY2tpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllcldpbGxCZVJlbW92ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpmaXhlZFJvb3RCYWNr
Z3JvdW5kTGF5ZXJDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9z
aXRvcjo6Y2xlYXJCYWNraW5nRm9yTGF5ZXJJbmNsdWRpbmdEZXNjZW5kYW50cyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzT3du
QmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6
cmVhc29uc0ZvckNvbXBvc2l0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29t
cG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclNjcm9sbGluZyk6CisgICAgICAgIChXZWJD
b3JlOjppc1ZpZXdwb3J0Q29uc3RyYWluZWRGaXhlZE9yU3RpY2t5TGF5ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6aXNNYWluRnJhbWVTY3JvbGxpbmdPck92ZXJmbG93U2Nyb2xsaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cm9vdExheWVyQXR0YWNobWVudENo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVT
Y3JvbGxDb29yZGluYXRlZFN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnJlbW92ZUZyb21TY3JvbGxDb29yZGluYXRlZExheWVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpuZWFyZXN0U2Nyb2xsQ29vcmRpbmF0ZWRBbmNlc3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbENvb3JkaW5hdGVkTGF5ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkZXRhY2hTY3JvbGxD
b29yZGluYXRlZExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRv
cjo6cmVnaXN0ZXJBbGxWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6d2lsbFJlbW92ZVNjcm9sbGluZ0xheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGlkQWRkU2Nyb2xsaW5nTGF5
ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaDoKKwogMjAx
NC0wMi0yNiAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIHVudXNlZCBJbnNwZWN0b3JDb3VudGVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApp
bmRleCA3M2EzNjQzZGMyNDQ1ZmQ3ZTRjMzQxNTJjZWYyMThjMzZhZjY0N2Q3Li40YjYxMGE5MTkw
MDVmNDEyMDBhOTJlMTg3ODMyMWQzNGJlNDZlYjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCkBAIC04MTQsNyArODE0LDcgQEAgdWludDY0X3QgRnJhbWVWaWV3OjpzY3JvbGxMYXllcklE
KCkgY29uc3QKICAgICBpZiAoIWJhY2tpbmcpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0
dXJuIGJhY2tpbmctPnNjcm9sbExheWVySUQoKTsKKyAgICByZXR1cm4gYmFja2luZy0+c2Nyb2xs
aW5nTm9kZUlEKCk7CiB9CiAKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcAppbmRl
eCBlMDZmMjIxNjg1ZjZiODFiOGE0MTc3YzExNGEwZmUxYjc0MmM1M2M0Li4xYzYyNTFlNzI4YmFh
M2JjMDZkYjE5M2IwZDRhYWM4ZTVjMDM5Mjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAKQEAgLTEwOCw4ICsxMDgsNiBA
QCBTY3JvbGxpbmdOb2RlSUQgU2Nyb2xsaW5nU3RhdGVUcmVlOjphdHRhY2hOb2RlKFNjcm9sbGlu
Z05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBTY3JvbGxpbmdOb2RlOiB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2Ug
Y3VycmVudGx5IG9ubHkgc3VwcG9ydCBjaGlsZCBub2RlcyB0aGF0IGFyZSBmaXhlZC4KLSAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgT3duUHRyPFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZT4gc2Nyb2xsaW5nTm9kZSA9IFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6Y3JlYXRlKCp0aGlzLCBuZXdOb2RlSUQpOwogICAgICAgICAgICAgbmV3Tm9kZSA9
IHNjcm9sbGluZ05vZGUuZ2V0KCk7CiAgICAgICAgICAgICBwYXJlbnQtPmFwcGVuZENoaWxkKHNj
cm9sbGluZ05vZGUucmVsZWFzZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggMDA3NTUyNGNhMGIyYzk3MTg1MjY3MzljYzM0MWU3
MDRkNmE3NTVlZi4uNmY0MzM0OTI1NGU2NmEwOWNlNmNhZTNjZDJlOTg1NDJmZjgxZDJhMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAg
LTEwOSw3ICsxMDksOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6bV9jcmVhdGluZ1ByaW1h
cnlHcmFwaGljc0xheWVyID0gZmFsc2U7CiAKIFJlbmRlckxheWVyQmFja2luZzo6UmVuZGVyTGF5
ZXJCYWNraW5nKFJlbmRlckxheWVyJiBsYXllcikKICAgICA6IG1fb3duaW5nTGF5ZXIobGF5ZXIp
Ci0gICAgLCBtX3Njcm9sbExheWVySUQoMCkKKyAgICAsIG1fdmlld3BvcnRDb25zdHJhaW5lZE5v
ZGVJRCgwKQorICAgICwgbV9zY3JvbGxpbmdOb2RlSUQoMCkKICAgICAsIG1fYXJ0aWZpY2lhbGx5
SW5mbGF0ZWRCb3VuZHMoZmFsc2UpCiAgICAgLCBtX2lzTWFpbkZyYW1lUmVuZGVyVmlld0xheWVy
KGZhbHNlKQogICAgICwgbV91c2luZ1RpbGVkQ2FjaGVMYXllcihmYWxzZSkKQEAgLTk1MSw5ICs5
NTIsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckdlb21l
dHJ5KCkKICAgICAgICAgbV9zY3JvbGxpbmdDb250ZW50c0xheWVyLT5zZXRTaXplKHNjcm9sbFNp
emUpOwogICAgICAgICAvLyBTY3JvbGxpbmcgdGhlIGNvbnRlbnQgbGF5ZXIgZG9lcyBub3QgbmVl
ZCB0byB0cmlnZ2VyIGEgcmVwYWludC4gVGhlIG9mZnNldCB3aWxsIGJlIGNvbXBlbnNhdGVkIGF3
YXkgZHVyaW5nIHBhaW50aW5nLgogICAgICAgICAvLyBGSVhNRTogVGhlIHBhaW50IG9mZnNldCBh
bmQgdGhlIHNjcm9sbCBvZmZzZXQgc2hvdWxkIHJlYWxseSBiZSBzZXBhcmF0ZSBjb25jZXB0cy4K
LSAgICAgICAgbV9zY3JvbGxpbmdDb250ZW50c0xheWVyLT5zZXRPZmZzZXRGcm9tUmVuZGVyZXIo
cGFkZGluZ0JveC5sb2NhdGlvbigpIC0gRmxvYXRQb2ludCgpIC0gc2Nyb2xsT2Zmc2V0LCBHcmFw
aGljc0xheWVyOjpEb250U2V0TmVlZHNEaXNwbGF5KTsKLSAgICAgICAgCi0gICAgICAgIGNvbXBv
c2l0b3IoKS5zY3JvbGxpbmdMYXllckFkZGVkT3JVcGRhdGVkKCZtX293bmluZ0xheWVyKTsKKyAg
ICAgICAgbV9zY3JvbGxpbmdDb250ZW50c0xheWVyLT5zZXRPZmZzZXRGcm9tUmVuZGVyZXIocGFk
ZGluZ0JveC5sb2NhdGlvbigpIC0gSW50UG9pbnQoKSAtIHNjcm9sbE9mZnNldCwgR3JhcGhpY3NM
YXllcjo6RG9udFNldE5lZWRzRGlzcGxheSk7CiAjZWxzZQogICAgICAgICBtX3Njcm9sbGluZ0Nv
bnRlbnRzTGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoLXNjcm9sbE9mZnNldC53aWR0aCgp
LCAtc2Nyb2xsT2Zmc2V0LmhlaWdodCgpKSk7CiAKQEAgLTk5Miw3ICs5OTEsNyBAQCB2b2lkIFJl
bmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KCkKICAgICB1cGRh
dGVEcmF3c0NvbnRlbnQoaXNTaW1wbGVDb250YWluZXIpOwogICAgIHVwZGF0ZUFmdGVyV2lkZ2V0
UmVzaXplKCk7CiAKLSAgICBjb21wb3NpdG9yKCkudXBkYXRlVmlld3BvcnRDb25zdHJhaW50U3Rh
dHVzKG1fb3duaW5nTGF5ZXIpOworICAgIGNvbXBvc2l0b3IoKS51cGRhdGVTY3JvbGxDb29yZGlu
YXRlZFN0YXR1cyhtX293bmluZ0xheWVyKTsKIH0KIAogdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6
OmFkanVzdEFuY2VzdG9yQ29tcG9zaXRpbmdCb3VuZHNGb3JGbG93VGhyZWFkKExheW91dFJlY3Qm
IGFuY2VzdG9yQ29tcG9zaXRpbmdCb3VuZHMsIGNvbnN0IFJlbmRlckxheWVyKiBjb21wb3NpdGlu
Z0FuY2VzdG9yKSBjb25zdApAQCAtMTQyMyw5MSArMTQyMiw1OSBAQCBib29sIFJlbmRlckxheWVy
QmFja2luZzo6dXBkYXRlTWFza0xheWVyKGJvb2wgbmVlZHNNYXNrTGF5ZXIpCiAKIGJvb2wgUmVu
ZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVTY3JvbGxpbmdMYXllcnMoYm9vbCBuZWVkc1Njcm9sbGlu
Z0xheWVycykKIHsKLSAgICBTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0
b3IgPSBzY3JvbGxpbmdDb29yZGluYXRvckZyb21MYXllcihtX293bmluZ0xheWVyKTsKKyAgICBp
ZiAobmVlZHNTY3JvbGxpbmdMYXllcnMgPT0gISFtX3Njcm9sbGluZ0xheWVyKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBib29sIGxheWVyQ2hhbmdlZCA9IGZhbHNlOwotICAgIGlmIChu
ZWVkc1Njcm9sbGluZ0xheWVycykgewotICAgICAgICBpZiAoIW1fc2Nyb2xsaW5nTGF5ZXIpIHsK
LSAgICAgICAgICAgIC8vIE91dGVyIGxheWVyIHdoaWNoIGNvcnJlc3BvbmRzIHdpdGggdGhlIHNj
cm9sbCB2aWV3LgotICAgICAgICAgICAgbV9zY3JvbGxpbmdMYXllciA9IGNyZWF0ZUdyYXBoaWNz
TGF5ZXIoIlNjcm9sbGluZyBjb250YWluZXIiKTsKLSAgICAgICAgICAgIG1fc2Nyb2xsaW5nTGF5
ZXItPnNldERyYXdzQ29udGVudChmYWxzZSk7Ci0gICAgICAgICAgICBtX3Njcm9sbGluZ0xheWVy
LT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOwotCi0gICAgICAgICAgICAvLyBJbm5lciBsYXllciB3
aGljaCByZW5kZXJzIHRoZSBjb250ZW50IHRoYXQgc2Nyb2xscy4KLSAgICAgICAgICAgIG1fc2Ny
b2xsaW5nQ29udGVudHNMYXllciA9IGNyZWF0ZUdyYXBoaWNzTGF5ZXIoIlNjcm9sbGVkIENvbnRl
bnRzIik7Ci0gICAgICAgICAgICBtX3Njcm9sbGluZ0NvbnRlbnRzTGF5ZXItPnNldERyYXdzQ29u
dGVudCh0cnVlKTsKLSAgICAgICAgICAgIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlIHBhaW50
UGhhc2UgPSBHcmFwaGljc0xheWVyUGFpbnRPdmVyZmxvd0NvbnRlbnRzIHwgR3JhcGhpY3NMYXll
clBhaW50Q29tcG9zaXRlZFNjcm9sbDsKLSAgICAgICAgICAgIGlmICghbV9mb3JlZ3JvdW5kTGF5
ZXIpCi0gICAgICAgICAgICAgICAgcGFpbnRQaGFzZSB8PSBHcmFwaGljc0xheWVyUGFpbnRGb3Jl
Z3JvdW5kOwotICAgICAgICAgICAgbV9zY3JvbGxpbmdDb250ZW50c0xheWVyLT5zZXRQYWludGlu
Z1BoYXNlKHBhaW50UGhhc2UpOwotICAgICAgICAgICAgbV9zY3JvbGxpbmdMYXllci0+YWRkQ2hp
bGQobV9zY3JvbGxpbmdDb250ZW50c0xheWVyLmdldCgpKTsKKyAgICBpZiAoIW1fc2Nyb2xsaW5n
TGF5ZXIpIHsKKyAgICAgICAgLy8gT3V0ZXIgbGF5ZXIgd2hpY2ggY29ycmVzcG9uZHMgd2l0aCB0
aGUgc2Nyb2xsIHZpZXcuCisgICAgICAgIG1fc2Nyb2xsaW5nTGF5ZXIgPSBjcmVhdGVHcmFwaGlj
c0xheWVyKCJTY3JvbGxpbmcgY29udGFpbmVyIik7CisgICAgICAgIG1fc2Nyb2xsaW5nTGF5ZXIt
PnNldERyYXdzQ29udGVudChmYWxzZSk7CisgICAgICAgIG1fc2Nyb2xsaW5nTGF5ZXItPnNldE1h
c2tzVG9Cb3VuZHModHJ1ZSk7CisKKyAgICAgICAgLy8gSW5uZXIgbGF5ZXIgd2hpY2ggcmVuZGVy
cyB0aGUgY29udGVudCB0aGF0IHNjcm9sbHMuCisgICAgICAgIG1fc2Nyb2xsaW5nQ29udGVudHNM
YXllciA9IGNyZWF0ZUdyYXBoaWNzTGF5ZXIoIlNjcm9sbGVkIENvbnRlbnRzIik7CisgICAgICAg
IG1fc2Nyb2xsaW5nQ29udGVudHNMYXllci0+c2V0RHJhd3NDb250ZW50KHRydWUpOworICAgICAg
ICBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSBwYWludFBoYXNlID0gR3JhcGhpY3NMYXllclBh
aW50T3ZlcmZsb3dDb250ZW50cyB8IEdyYXBoaWNzTGF5ZXJQYWludENvbXBvc2l0ZWRTY3JvbGw7
CisgICAgICAgIGlmICghbV9mb3JlZ3JvdW5kTGF5ZXIpCisgICAgICAgICAgICBwYWludFBoYXNl
IHw9IEdyYXBoaWNzTGF5ZXJQYWludEZvcmVncm91bmQ7CisgICAgICAgIG1fc2Nyb2xsaW5nQ29u
dGVudHNMYXllci0+c2V0UGFpbnRpbmdQaGFzZShwYWludFBoYXNlKTsKKyAgICAgICAgbV9zY3Jv
bGxpbmdMYXllci0+YWRkQ2hpbGQobV9zY3JvbGxpbmdDb250ZW50c0xheWVyLmdldCgpKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBjb21wb3NpdG9yKCkud2lsbFJlbW92ZVNjcm9sbGluZ0xheWVy
KG1fb3duaW5nTGF5ZXIpOwogCi0gICAgICAgICAgICBsYXllckNoYW5nZWQgPSB0cnVlOwotICAg
ICAgICAgICAgaWYgKHNjcm9sbGluZ0Nvb3JkaW5hdG9yKQotICAgICAgICAgICAgICAgIHNjcm9s
bGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKCZtX293
bmluZ0xheWVyKTsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgICAgICAgICBpZiAobV9vd25pbmdM
YXllci5wYXJlbnQoKSkKLSAgICAgICAgICAgICAgICBjb21wb3NpdG9yKCkuc2Nyb2xsaW5nTGF5
ZXJBZGRlZE9yVXBkYXRlZCgmbV9vd25pbmdMYXllcik7Ci0jZW5kaWYKLSAgICAgICAgfQotICAg
IH0gZWxzZSBpZiAobV9zY3JvbGxpbmdMYXllcikgewotI2lmIFBMQVRGT1JNKElPUykKLSAgICAg
ICAgaWYgKCFyZW5kZXJlcigpLmRvY3VtZW50QmVpbmdEZXN0cm95ZWQoKSkKLSAgICAgICAgICAg
IGNvbXBvc2l0b3IoKS5zY3JvbGxpbmdMYXllclJlbW92ZWQoJm1fb3duaW5nTGF5ZXIsIG1fc2Ny
b2xsaW5nTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSwgbV9zY3JvbGxpbmdDb250ZW50c0xheWVyLT5w
bGF0Zm9ybUxheWVyKCkpOwotI2VuZGlmCiAgICAgICAgIHdpbGxEZXN0cm95TGF5ZXIobV9zY3Jv
bGxpbmdMYXllci5nZXQoKSk7CiAgICAgICAgIHdpbGxEZXN0cm95TGF5ZXIobV9zY3JvbGxpbmdD
b250ZW50c0xheWVyLmdldCgpKTsKICAgICAgICAgbV9zY3JvbGxpbmdMYXllciA9IG51bGxwdHI7
CiAgICAgICAgIG1fc2Nyb2xsaW5nQ29udGVudHNMYXllciA9IG51bGxwdHI7Ci0gICAgICAgIGxh
eWVyQ2hhbmdlZCA9IHRydWU7Ci0gICAgICAgIGlmIChzY3JvbGxpbmdDb29yZGluYXRvcikKLSAg
ICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbExheWVy
RGlkQ2hhbmdlKCZtX293bmluZ0xheWVyKTsKLSAgICB9Ci0KLSAgICBpZiAobGF5ZXJDaGFuZ2Vk
KSB7Ci0gICAgICAgIHVwZGF0ZUludGVybmFsSGllcmFyY2h5KCk7Ci0gICAgICAgIG1fZ3JhcGhp
Y3NMYXllci0+c2V0UGFpbnRpbmdQaGFzZShwYWludGluZ1BoYXNlRm9yUHJpbWFyeUxheWVyKCkp
OwotI2lmICFQTEFURk9STShJT1MpCi0gICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0TmVlZHNE
aXNwbGF5KCk7Ci0gICAgICAgIGNvbXBvc2l0b3IoKS5zY3JvbGxpbmdMYXllckRpZENoYW5nZSht
X293bmluZ0xheWVyKTsKLSNlbmRpZgogICAgIH0KIAotICAgIHJldHVybiBsYXllckNoYW5nZWQ7
Ci19CisgICAgdXBkYXRlSW50ZXJuYWxIaWVyYXJjaHkoKTsKKyAgICBtX2dyYXBoaWNzTGF5ZXIt
PnNldFBhaW50aW5nUGhhc2UocGFpbnRpbmdQaGFzZUZvclByaW1hcnlMYXllcigpKTsKKyAgICBt
X2dyYXBoaWNzTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOyAvLyBCZWNhdXNlIHBhaW50aW5nIHBo
YXNlcyBjaGFuZ2VkLgogCi12b2lkIFJlbmRlckxheWVyQmFja2luZzo6YXR0YWNoVG9TY3JvbGxp
bmdDb29yZGluYXRvcldpdGhQYXJlbnQoUmVuZGVyTGF5ZXJCYWNraW5nKiBwYXJlbnQpCi17Ci0g
ICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gc2Nyb2xsaW5n
Q29vcmRpbmF0b3JGcm9tTGF5ZXIobV9vd25pbmdMYXllcik7Ci0gICAgaWYgKCFzY3JvbGxpbmdD
b29yZGluYXRvcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IFdoZW4gd2Ugc3Vw
cG9ydCBvdmVyZmxvdyBhcmVhcywgd2Ugd2lsbCBoYXZlIHRvIHJlZmluZSB0aGlzIGZvciBvdmVy
ZmxvdyBhcmVhcyB0aGF0IGFyZSBhbHNvCi0gICAgLy8gcG9zaXRvbjpmaXhlZC4KLSAgICBTY3Jv
bGxpbmdOb2RlVHlwZSBub2RlVHlwZTsKLSAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLnBvc2l0
aW9uKCkgPT0gRml4ZWRQb3NpdGlvbikKLSAgICAgICAgbm9kZVR5cGUgPSBGaXhlZE5vZGU7Ci0g
ICAgZWxzZSBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLnBvc2l0aW9uKCkgPT0gU3RpY2t5UG9zaXRp
b24pCi0gICAgICAgIG5vZGVUeXBlID0gU3RpY2t5Tm9kZTsKLSAgICBlbHNlCi0gICAgICAgIG5v
ZGVUeXBlID0gU2Nyb2xsaW5nTm9kZTsKLQotICAgIFNjcm9sbGluZ05vZGVJRCBwYXJlbnRJRCA9
IHBhcmVudCA/IHBhcmVudC0+c2Nyb2xsTGF5ZXJJRCgpIDogMDsKLSAgICBtX3Njcm9sbExheWVy
SUQgPSBzY3JvbGxpbmdDb29yZGluYXRvci0+YXR0YWNoVG9TdGF0ZVRyZWUobm9kZVR5cGUsIG1f
c2Nyb2xsTGF5ZXJJRCA/IG1fc2Nyb2xsTGF5ZXJJRCA6IHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT51
bmlxdWVTY3JvbGxMYXllcklEKCksIHBhcmVudElEKTsKKyAgICBpZiAobV9zY3JvbGxpbmdMYXll
cikKKyAgICAgICAgY29tcG9zaXRvcigpLmRpZEFkZFNjcm9sbGluZ0xheWVyKG1fb3duaW5nTGF5
ZXIpOworICAgIAorICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFJlbmRlckxheWVyQmFja2lu
Zzo6ZGV0YWNoRnJvbVNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkKIHsKLSAgICAvLyBJZiBtX3Njcm9s
bExheWVySUQgaXMgMCwgdGhlbiB0aGlzIGJhY2tpbmcgaXMgbm90IGF0dGFjaGVkIHRvIHRoZSBT
Y3JvbGxpbmdDb29yZGluYXRvci4KLSAgICBpZiAoIW1fc2Nyb2xsTGF5ZXJJRCkKKyAgICBpZiAo
IW1fc2Nyb2xsaW5nTm9kZUlEICYmICFtX3ZpZXdwb3J0Q29uc3RyYWluZWROb2RlSUQpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGlu
YXRvciA9IHNjcm9sbGluZ0Nvb3JkaW5hdG9yRnJvbUxheWVyKG1fb3duaW5nTGF5ZXIpOwogICAg
IGlmICghc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNjcm9s
bGluZ0Nvb3JkaW5hdG9yLT5kZXRhY2hGcm9tU3RhdGVUcmVlKG1fc2Nyb2xsTGF5ZXJJRCk7Ci0g
ICAgbV9zY3JvbGxMYXllcklEID0gMDsKKyAgICBpZiAobV9zY3JvbGxpbmdOb2RlSUQpCisgICAg
ICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5kZXRhY2hGcm9tU3RhdGVUcmVlKG1fc2Nyb2xsaW5n
Tm9kZUlEKTsKKworICAgIGlmIChtX3ZpZXdwb3J0Q29uc3RyYWluZWROb2RlSUQpCisgICAgICAg
IHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5kZXRhY2hGcm9tU3RhdGVUcmVlKG1fdmlld3BvcnRDb25z
dHJhaW5lZE5vZGVJRCk7CisKKyAgICBtX3Njcm9sbGluZ05vZGVJRCA9IDA7CisgICAgbV92aWV3
cG9ydENvbnN0cmFpbmVkTm9kZUlEID0gMDsKIH0KIAogR3JhcGhpY3NMYXllclBhaW50aW5nUGhh
c2UgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludGluZ1BoYXNlRm9yUHJpbWFyeUxheWVyKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAppbmRl
eCBjYTYxNzVhYWFiMjRlNmI1MjA4NGQwMDhhMmY0YzA5Yzg3NDcwYTI3Li5kOTFkYzc0ZTFhYTM4
MzExZjBiYjM5ZmU5YjllOTRkMTBmNjYyYzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiR3Jh
cGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTAxLDEwICsxMDIsMTYgQEAgcHVibGljOgogICAgIEdy
YXBoaWNzTGF5ZXIqIHNjcm9sbGluZ0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxpbmdM
YXllci5nZXQoKTsgfQogICAgIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbGluZ0NvbnRlbnRzTGF5ZXIo
KSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGluZ0NvbnRlbnRzTGF5ZXIuZ2V0KCk7IH0KIAotICAg
IHZvaWQgYXR0YWNoVG9TY3JvbGxpbmdDb29yZGluYXRvcldpdGhQYXJlbnQoUmVuZGVyTGF5ZXJC
YWNraW5nKiBwYXJlbnQpOwogICAgIHZvaWQgZGV0YWNoRnJvbVNjcm9sbGluZ0Nvb3JkaW5hdG9y
KCk7Ci0gICAgdWludDY0X3Qgc2Nyb2xsTGF5ZXJJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xs
TGF5ZXJJRDsgfQorCisgICAgU2Nyb2xsaW5nTm9kZUlEIHZpZXdwb3J0Q29uc3RyYWluZWROb2Rl
SUQoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdwb3J0Q29uc3RyYWluZWROb2RlSUQ7IH0KKyAgICB2
b2lkIHNldFZpZXdwb3J0Q29uc3RyYWluZWROb2RlSUQoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkg
eyBtX3ZpZXdwb3J0Q29uc3RyYWluZWROb2RlSUQgPSBub2RlSUQ7IH0KKworICAgIFNjcm9sbGlu
Z05vZGVJRCBzY3JvbGxpbmdOb2RlSUQoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGluZ05vZGVJ
RDsgfQorICAgIHZvaWQgc2V0U2Nyb2xsaW5nTm9kZUlEKFNjcm9sbGluZ05vZGVJRCBub2RlSUQp
IHsgbV9zY3JvbGxpbmdOb2RlSUQgPSBub2RlSUQ7IH0KICAgICAKKyAgICBTY3JvbGxpbmdOb2Rl
SUQgc2Nyb2xsaW5nTm9kZUlERm9yQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGlu
Z05vZGVJRCA/IG1fc2Nyb2xsaW5nTm9kZUlEIDogbV92aWV3cG9ydENvbnN0cmFpbmVkTm9kZUlE
OyB9CisKICAgICBib29sIGhhc01hc2tMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbWFza0xheWVy
ICE9IDA7IH0KIAogICAgIEdyYXBoaWNzTGF5ZXIqIHBhcmVudEZvclN1YmxheWVycygpIGNvbnN0
OwpAQCAtMzA4LDcgKzMxNSw4IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBo
aWNzTGF5ZXI+IG1fc2Nyb2xsaW5nTGF5ZXI7IC8vIE9ubHkgdXNlZCBpZiB0aGUgbGF5ZXIgaXMg
dXNpbmcgY29tcG9zaXRlZCBzY3JvbGxpbmcuCiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNz
TGF5ZXI+IG1fc2Nyb2xsaW5nQ29udGVudHNMYXllcjsgLy8gT25seSB1c2VkIGlmIHRoZSBsYXll
ciBpcyB1c2luZyBjb21wb3NpdGVkIHNjcm9sbGluZy4KIAotICAgIHVpbnQ2NF90IG1fc2Nyb2xs
TGF5ZXJJRDsKKyAgICBTY3JvbGxpbmdOb2RlSUQgbV92aWV3cG9ydENvbnN0cmFpbmVkTm9kZUlE
OworICAgIFNjcm9sbGluZ05vZGVJRCBtX3Njcm9sbGluZ05vZGVJRDsKIAogICAgIExheW91dFJl
Y3QgbV9jb21wb3NpdGVkQm91bmRzOwogICAgIExheW91dFNpemUgbV9kZXZpY2VQaXhlbEZyYWN0
aW9uRnJvbVJlbmRlcmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCA0ZmViNzAwZWYxOWQ5YWRkMWZjMTRhOTAxNTMyMjQw
ZTFmZDY3NWJiLi4zYTZjODkxNzljNGRiMzVmZDBmNzk5NTFlNGZiYjQ3YTJiMjQ5ZWM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cApAQCAtNDM5LDEwICs0MzksMTAgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmZsdXNo
UGVuZGluZ0xheWVyQ2hhbmdlcyhib29sIGlzRmx1c2hSb290KQogICAgICAgICBjbGllbnQtPmRp
ZEZsdXNoQ29tcG9zaXRpbmdMYXllcnMoKTsKICNlbmRpZgogCi0gICAgZm9yIChhdXRvIGl0ID0g
bV92aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzTmVlZGluZ1VwZGF0ZS5iZWdpbigpLCBlbmQgPSBt
X3ZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnNOZWVkaW5nVXBkYXRlLmVuZCgpOyBpdCAhPSBlbmQ7
ICsraXQpCi0gICAgICAgIHJlZ2lzdGVyT3JVcGRhdGVWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXIo
KippdCk7CisgICAgZm9yIChhdXRvIGl0ID0gbV9zY3JvbGxDb29yZGluYXRlZExheWVyc05lZWRp
bmdVcGRhdGUuYmVnaW4oKSwgZW5kID0gbV9zY3JvbGxDb29yZGluYXRlZExheWVyc05lZWRpbmdV
cGRhdGUuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgdXBkYXRlU2Nyb2xsQ29vcmRp
bmF0ZWRTdGF0dXMoKippdCk7CiAKLSAgICBtX3ZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnNOZWVk
aW5nVXBkYXRlLmNsZWFyKCk7CisgICAgbV9zY3JvbGxDb29yZGluYXRlZExheWVyc05lZWRpbmdV
cGRhdGUuY2xlYXIoKTsKICAgICBzdGFydExheWVyRmx1c2hUaW1lcklmTmVlZGVkKCk7CiB9CiAK
QEAgLTQ4OCw4ICs0ODgsOCBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ3Vz
dG9tTGF5ZXJzQWZ0ZXJGbHVzaCgpCiAKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkaWRG
bHVzaENoYW5nZXNGb3JMYXllcihSZW5kZXJMYXllciYgbGF5ZXIsIGNvbnN0IEdyYXBoaWNzTGF5
ZXIqIGdyYXBoaWNzTGF5ZXIpCiB7Ci0gICAgaWYgKG1fdmlld3BvcnRDb25zdHJhaW5lZExheWVy
cy5jb250YWlucygmbGF5ZXIpKQotICAgICAgICBtX3ZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnNO
ZWVkaW5nVXBkYXRlLmFkZCgmbGF5ZXIpOworICAgIGlmIChtX3Njcm9sbENvb3JkaW5hdGVkTGF5
ZXJzLmNvbnRhaW5zKCZsYXllcikpCisgICAgICAgIG1fc2Nyb2xsQ29vcmRpbmF0ZWRMYXllcnNO
ZWVkaW5nVXBkYXRlLmFkZCgmbGF5ZXIpOwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmICht
X3Njcm9sbGluZ0xheWVycy5jb250YWlucygmbGF5ZXIpKQpAQCAtNzc0LDcgKzc3NCw3IEBAIGJv
b2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVCYWNraW5nKFJlbmRlckxheWVyJiBsYXll
ciwgQ29tcG9zaXRpbmdDaGFuZ2VSCiAKICAgICAgICAgICAgIC8vIEF0IHRoaXMgdGltZSwgdGhl
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yIG9ubHkgc3VwcG9ydHMgdGhlIHRvcC1sZXZlbCBmcmFtZS4K
ICAgICAgICAgICAgIGlmIChsYXllci5pc1Jvb3RMYXllcigpICYmICFtX3JlbmRlclZpZXcuZG9j
dW1lbnQoKS5vd25lckVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAgIGxheWVyLmJhY2tpbmco
KS0+YXR0YWNoVG9TY3JvbGxpbmdDb29yZGluYXRvcldpdGhQYXJlbnQoMCk7CisgICAgICAgICAg
ICAgICAgdXBkYXRlU2Nyb2xsQ29vcmRpbmF0ZWRTdGF0dXMobGF5ZXIpOwogICAgICAgICAgICAg
ICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlz
LT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQogICAgICAgICAgICAgICAgICAgICBzY3JvbGxpbmdD
b29yZGluYXRvci0+ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKCZtX3JlbmRlclZpZXcuZnJh
bWVWaWV3KCkpOwogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKQEAgLTgwNyw3ICs4MDcsNyBA
QCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQmFja2luZyhSZW5kZXJMYXllciYg
bGF5ZXIsIENvbXBvc2l0aW5nQ2hhbmdlUgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgcmVtb3ZlVmlld3BvcnRDb25zdHJhaW5lZExheWVyKGxheWVyKTsK
KyAgICAgICAgICAgIGRldGFjaFNjcm9sbENvb3JkaW5hdGVkTGF5ZXIobGF5ZXIpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBsYXllci5jbGVhckJhY2tpbmcoKTsKICAgICAgICAgICAgIGxh
eWVyQ2hhbmdlZCA9IHRydWU7CkBAIC05MzAsNyArOTMwLDcgQEAgdm9pZCBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OmxheWVyV2lsbEJlUmVtb3ZlZChSZW5kZXJMYXllciYgcGFyZW50LCBSZW5kZXJM
YXllciYKICAgICBpZiAoIWNoaWxkLmlzQ29tcG9zaXRlZCgpIHx8IHBhcmVudC5yZW5kZXJlcigp
LmRvY3VtZW50QmVpbmdEZXN0cm95ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVtb3Zl
Vmlld3BvcnRDb25zdHJhaW5lZExheWVyKGNoaWxkKTsKKyAgICByZW1vdmVGcm9tU2Nyb2xsQ29v
cmRpbmF0ZWRMYXllcnMoY2hpbGQpOwogICAgIHJlcGFpbnRJbkNvbXBvc2l0ZWRBbmNlc3Rvcihj
aGlsZCwgY2hpbGQuYmFja2luZygpLT5jb21wb3NpdGVkQm91bmRzKCkpOwogCiAgICAgc2V0Q29t
cG9zaXRpbmdQYXJlbnQoY2hpbGQsIG51bGxwdHIpOwpAQCAtMTU1OSwxMyArMTU1OSw4IEBAIHZv
aWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpmaXhlZFJvb3RCYWNrZ3JvdW5kTGF5ZXJDaGFuZ2Vk
KCkKICAgICBpZiAobV9yZW5kZXJWaWV3LmRvY3VtZW50QmVpbmdEZXN0cm95ZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29y
ZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpIHsKLSAgICAgICAgUmVuZGVy
TGF5ZXJCYWNraW5nKiByZW5kZXJWaWV3QmFja2luZyA9IG1fcmVuZGVyVmlldy5sYXllcigpLT5i
YWNraW5nKCk7Ci0gICAgICAgIGlmICghcmVuZGVyVmlld0JhY2tpbmcpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnVwZGF0ZVNjcm9sbGluZ05v
ZGUocmVuZGVyVmlld0JhY2tpbmctPnNjcm9sbExheWVySUQoKSwgc2Nyb2xsTGF5ZXIoKSwgbnVs
bHB0ciwgZml4ZWRSb290QmFja2dyb3VuZExheWVyKCkpOwotICAgIH0KKyAgICBpZiAobV9yZW5k
ZXJWaWV3LmxheWVyKCktPmlzQ29tcG9zaXRlZCgpKQorICAgICAgICB1cGRhdGVTY3JvbGxDb29y
ZGluYXRlZFN0YXR1cygqbV9yZW5kZXJWaWV3LmxheWVyKCkpOwogfQogCiBTdHJpbmcgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpsYXllclRyZWVBc1RleHQoTGF5ZXJUcmVlRmxhZ3MgZmxhZ3MpCkBA
IC0xODY3LDcgKzE4NjIsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2V0SXNJbldp
bmRvdyhib29sIGlzSW5XaW5kb3cpCiB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y2xlYXJC
YWNraW5nRm9yTGF5ZXJJbmNsdWRpbmdEZXNjZW5kYW50cyhSZW5kZXJMYXllciYgbGF5ZXIpCiB7
CiAgICAgaWYgKGxheWVyLmlzQ29tcG9zaXRlZCgpKSB7Ci0gICAgICAgIHJlbW92ZVZpZXdwb3J0
Q29uc3RyYWluZWRMYXllcihsYXllcik7CisgICAgICAgIHJlbW92ZUZyb21TY3JvbGxDb29yZGlu
YXRlZExheWVycyhsYXllcik7CiAgICAgICAgIGxheWVyLmNsZWFyQmFja2luZygpOwogICAgIH0K
IApAQCAtMTk4NSw3ICsxOTgwLDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVp
cmVzQ29tcG9zaXRpbmdMYXllcihjb25zdCBSZW5kZXJMYXllciYgbGF5ZXIsIFIKICAgICAgICAg
fHwgcmVxdWlyZXNDb21wb3NpdGluZ0ZvckZpbHRlcnMoKnJlbmRlcmVyKQogICAgICAgICB8fCBy
ZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24oKnJlbmRlcmVyLCAqcmVuZGVyZXItPmxheWVy
KCksIHZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uKQogI2lmIFBMQVRGT1JN
KElPUykKLSAgICAgICAgfHwgcmVxdWlyZXNDb21wb3NpdGluZ0ZvclNjcm9sbGluZygqcmVuZGVy
ZXIpCisgICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JTY3JvbGxpbmcoKnJlbmRlcmVy
LT5sYXllcigpKQogI2VuZGlmCiAgICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JPdmVy
Zmxvd1Njcm9sbGluZygqcmVuZGVyZXItPmxheWVyKCkpOwogfQpAQCAtMjAzMyw3ICsyMDI4LDcg
QEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzT3duQmFja2luZ1N0b3JlKGNv
bnN0IFJlbmRlckxheWVyJiBsYXllciwgY28KICAgICAgICAgfHwgcmVuZGVyZXIuaGFzUmVmbGVj
dGlvbigpCiAgICAgICAgIHx8IHJlbmRlcmVyLmhhc0ZpbHRlcigpCiAjaWYgUExBVEZPUk0oSU9T
KQotICAgICAgICB8fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yU2Nyb2xsaW5nKHJlbmRlcmVyKQor
ICAgICAgICB8fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yU2Nyb2xsaW5nKGxheWVyKQogI2VuZGlm
CiAgICAgICAgICkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMDkzLDcgKzIwODgsNyBAQCBD
b21wb3NpdGluZ1JlYXNvbnMgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWFzb25zRm9yQ29tcG9z
aXRpbmcoY29uc3QgUmVuZGVyTGF5ZQogICAgICAgICByZWFzb25zIHw9IHJlbmRlcmVyLT5zdHls
ZSgpLnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbiA/IENvbXBvc2l0aW5nUmVhc29uUG9zaXRp
b25GaXhlZCA6IENvbXBvc2l0aW5nUmVhc29uUG9zaXRpb25TdGlja3k7CiAKICNpZiBQTEFURk9S
TShJT1MpCi0gICAgaWYgKHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JTY3JvbGxpbmcoKnJlbmRlcmVy
KSkKKyAgICBpZiAocmVxdWlyZXNDb21wb3NpdGluZ0ZvclNjcm9sbGluZygqcmVuZGVyZXItPmxh
eWVyKCkpKQogICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uT3ZlcmZsb3dTY3Jv
bGxpbmdUb3VjaDsKICNlbmRpZgogCkBAIC0yNDE2LDkgKzI0MTEsOSBAQCBib29sIFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvckluZGlyZWN0UmVhc29uKFJlbmRl
ckxheWVyTW9kZQogfQogCiAjaWYgUExBVEZPUk0oSU9TKQotYm9vbCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JTY3JvbGxpbmcoUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCYgcmVuZGVyZXIpIGNvbnN0Citib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWly
ZXNDb21wb3NpdGluZ0ZvclNjcm9sbGluZyhjb25zdCBSZW5kZXJMYXllciYgbGF5ZXIpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIHJlbmRlcmVyLmhhc0xheWVyKCkgJiYgdG9SZW5kZXJCb3hNb2RlbE9i
amVjdChyZW5kZXJlcikubGF5ZXIoKS0+aGFzQWNjZWxlcmF0ZWRUb3VjaFNjcm9sbGluZygpOwor
ICAgIHJldHVybiBsYXllci5oYXNBY2NlbGVyYXRlZFRvdWNoU2Nyb2xsaW5nKCk7CiB9CiAjZW5k
aWYKIApAQCAtMjQ2NCw2ICsyNDU5LDcgQEAgc3RhdGljIGJvb2wgaXNWaWV3cG9ydENvbnN0cmFp
bmVkRml4ZWRPclN0aWNreUxheWVyKGNvbnN0IFJlbmRlckxheWVyJiBsYXllcikKICAgICBpZiAo
bGF5ZXIucmVuZGVyZXIoKS5zdHlsZSgpLnBvc2l0aW9uKCkgIT0gRml4ZWRQb3NpdGlvbikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgLy8gRklYTUU6IEhhbmRsZSBmaXhlZCBpbnNpZGUg
b2YgYSB0cmFuc2Zvcm0sIHdoaWNoIHNob3VsZCBub3QgYmVoYXZlIGFzIGZpeGVkLgogICAgIGZv
ciAoUmVuZGVyTGF5ZXIqIHN0YWNraW5nQ29udGFpbmVyID0gbGF5ZXIuc3RhY2tpbmdDb250YWlu
ZXIoKTsgc3RhY2tpbmdDb250YWluZXI7IHN0YWNraW5nQ29udGFpbmVyID0gc3RhY2tpbmdDb250
YWluZXItPnN0YWNraW5nQ29udGFpbmVyKCkpIHsKICAgICAgICAgaWYgKHN0YWNraW5nQ29udGFp
bmVyLT5pc0NvbXBvc2l0ZWQoKSAmJiBzdGFja2luZ0NvbnRhaW5lci0+cmVuZGVyZXIoKS5zdHls
ZSgpLnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbikKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTI0NzIsNiArMjQ2OCwxOCBAQCBzdGF0aWMgYm9vbCBpc1ZpZXdwb3J0Q29uc3RyYWlu
ZWRGaXhlZE9yU3RpY2t5TGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyKQogICAgIHJldHVy
biB0cnVlOwogfQogCitzdGF0aWMgYm9vbCBpc01haW5GcmFtZVNjcm9sbGluZ09yT3ZlcmZsb3dT
Y3JvbGxpbmcoUmVuZGVyVmlldyYgdmlldywgY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyKQorewor
ICAgIGlmIChsYXllci5pc1Jvb3RMYXllcigpICYmICF2aWV3LmRvY3VtZW50KCkub3duZXJFbGVt
ZW50KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHJl
dHVybiBsYXllci5oYXNBY2NlbGVyYXRlZFRvdWNoU2Nyb2xsaW5nKCk7CisjZWxzZQorICAgIHJl
dHVybiBsYXllci5uZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKTsKKyNlbmRpZgorfQorCiBib29s
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0aW9uKFJl
bmRlckxheWVyTW9kZWxPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJMYXllciYgbGF5ZXIs
IFJlbmRlckxheWVyOjpWaWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbiogdmll
d3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24pIGNvbnN0CiB7CiAgICAgLy8gcG9z
aXRpb246Zml4ZWQgZWxlbWVudHMgdGhhdCBjcmVhdGUgdGhlaXIgb3duIHN0YWNraW5nIGNvbnRl
eHQgKGUuZy4gaGF2ZSBhbiBleHBsaWNpdCB6LWluZGV4LApAQCAtMzI2OCw3ICszMjc2LDcgQEAg
dm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVJvb3RMYXllckF0dGFjaG1lbnQoKQog
dm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJvb3RMYXllckF0dGFjaG1lbnRDaGFuZ2VkKCkK
IHsKICAgICAvLyBUaGUgYXR0YWNobWVudCBjYW4gYWZmZWN0IHdoZXRoZXIgdGhlIFJlbmRlclZp
ZXcgbGF5ZXIncyBwYWludHNJbnRvV2luZG93KCkgYmVoYXZpb3IsCi0gICAgLy8gc28gY2FsbCB1
cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnkoKSB0byB1ZHBhdGUgdGhhdC4KKyAgICAvLyBzbyBj
YWxsIHVwZGF0ZURyYXdzQ29udGVudCgpIHRvIHVwZGF0ZSB0aGF0LgogICAgIFJlbmRlckxheWVy
KiBsYXllciA9IG1fcmVuZGVyVmlldy5sYXllcigpOwogICAgIGlmIChSZW5kZXJMYXllckJhY2tp
bmcqIGJhY2tpbmcgPSBsYXllciA/IGxheWVyLT5iYWNraW5nKCkgOiAwKQogICAgICAgICBiYWNr
aW5nLT51cGRhdGVEcmF3c0NvbnRlbnQoKTsKQEAgLTMzNDIsMjggKzMzNTAsMzAgQEAgdm9pZCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpCiAg
ICAgICAgIHJvb3RMYXllci0+bm90ZURldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZEluY2x1
ZGluZ0Rlc2NlbmRhbnRzKCk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRh
dGVWaWV3cG9ydENvbnN0cmFpbnRTdGF0dXMoUmVuZGVyTGF5ZXImIGxheWVyKQordm9pZCBSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbENvb3JkaW5hdGVkU3RhdHVzKFJlbmRlckxh
eWVyJiBsYXllcikKIHsKKyAgICBTY3JvbGxDb29yZGluYXRpb25SZWFzb25zIGNvb3JkaW5hdGlv
blJlYXNvbnMgPSAwOwogICAgIGlmIChpc1ZpZXdwb3J0Q29uc3RyYWluZWRGaXhlZE9yU3RpY2t5
TGF5ZXIobGF5ZXIpKQotICAgICAgICBhZGRWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXIobGF5ZXIp
OwotICAgIGVsc2UKLSAgICAgICAgcmVtb3ZlVmlld3BvcnRDb25zdHJhaW5lZExheWVyKGxheWVy
KTsKLX0KKyAgICAgICAgY29vcmRpbmF0aW9uUmVhc29ucyB8PSBGaXhlZE9yU3RpY2t5OwogCi12
b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6YWRkVmlld3BvcnRDb25zdHJhaW5lZExheWVyKFJl
bmRlckxheWVyJiBsYXllcikKLXsKLSAgICBtX3ZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnMuYWRk
KCZsYXllcik7Ci0gICAgcmVnaXN0ZXJPclVwZGF0ZVZpZXdwb3J0Q29uc3RyYWluZWRMYXllcihs
YXllcik7CisgICAgaWYgKGlzTWFpbkZyYW1lU2Nyb2xsaW5nT3JPdmVyZmxvd1Njcm9sbGluZyht
X3JlbmRlclZpZXcsIGxheWVyKSkKKyAgICAgICAgY29vcmRpbmF0aW9uUmVhc29ucyB8PSBTY3Jv
bGxpbmc7CisgICAgICAgIAorICAgIGlmIChjb29yZGluYXRpb25SZWFzb25zKSB7CisgICAgICAg
IG1fc2Nyb2xsQ29vcmRpbmF0ZWRMYXllcnMuYWRkKCZsYXllcik7CisgICAgICAgIHVwZGF0ZVNj
cm9sbENvb3JkaW5hdGVkTGF5ZXIobGF5ZXIsIGNvb3JkaW5hdGlvblJlYXNvbnMpOworICAgIH0g
ZWxzZQorICAgICAgICByZW1vdmVGcm9tU2Nyb2xsQ29vcmRpbmF0ZWRMYXllcnMobGF5ZXIpOwog
fQogCi12b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVtb3ZlVmlld3BvcnRDb25zdHJhaW5l
ZExheWVyKFJlbmRlckxheWVyJiBsYXllcikKK3ZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpy
ZW1vdmVGcm9tU2Nyb2xsQ29vcmRpbmF0ZWRMYXllcnMoUmVuZGVyTGF5ZXImIGxheWVyKQogewot
ICAgIGlmICghbV92aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzLmNvbnRhaW5zKCZsYXllcikpCisg
ICAgaWYgKCFtX3Njcm9sbENvb3JkaW5hdGVkTGF5ZXJzLmNvbnRhaW5zKCZsYXllcikpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHVucmVnaXN0ZXJWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXIobGF5
ZXIpOwotICAgIG1fdmlld3BvcnRDb25zdHJhaW5lZExheWVycy5yZW1vdmUoJmxheWVyKTsKLSAg
ICBtX3ZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnNOZWVkaW5nVXBkYXRlLnJlbW92ZSgmbGF5ZXIp
OworICAgIHJlbW92ZUZyb21TY3JvbGxDb29yZGluYXRlZExheWVycyhsYXllcik7CisgICAgbV9z
Y3JvbGxDb29yZGluYXRlZExheWVycy5yZW1vdmUoJmxheWVyKTsKKyAgICBtX3Njcm9sbENvb3Jk
aW5hdGVkTGF5ZXJzTmVlZGluZ1VwZGF0ZS5yZW1vdmUoJmxheWVyKTsKIH0KIAogRml4ZWRQb3Np
dGlvblZpZXdwb3J0Q29uc3RyYWludHMgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlRml4
ZWRWaWV3cG9ydENvbnN0cmFpbnRzKFJlbmRlckxheWVyJiBsYXllcikgY29uc3QKQEAgLTM0MjQs
MTIgKzM0MzQsMTIgQEAgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzIFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6Y29tcHV0ZVN0aWNreVZpZXdwb3J0Q28KICAgICByZXR1cm4gY29uc3Ry
YWludHM7CiB9CiAKLXN0YXRpYyBSZW5kZXJMYXllckJhY2tpbmcqIG5lYXJlc3RTY3JvbGxpbmdD
b29yZGluYXRvckFuY2VzdG9yKFJlbmRlckxheWVyJiBsYXllcikKK3N0YXRpYyBSZW5kZXJMYXll
ckJhY2tpbmcqIG5lYXJlc3RTY3JvbGxDb29yZGluYXRlZEFuY2VzdG9yKFJlbmRlckxheWVyJiBs
YXllcikKIHsKICAgICBSZW5kZXJMYXllciogYW5jZXN0b3IgPSBsYXllci5wYXJlbnQoKTsKICAg
ICB3aGlsZSAoYW5jZXN0b3IpIHsKICAgICAgICAgaWYgKFJlbmRlckxheWVyQmFja2luZyogYmFj
a2luZyA9IGFuY2VzdG9yLT5iYWNraW5nKCkpIHsKLSAgICAgICAgICAgIGlmIChiYWNraW5nLT5z
Y3JvbGxMYXllcklEKCkgJiYgIWFuY2VzdG9yLT5zY3JvbGxzT3ZlcmZsb3coKSkKKyAgICAgICAg
ICAgIGlmIChiYWNraW5nLT5zY3JvbGxpbmdOb2RlSURGb3JDaGlsZHJlbigpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBiYWNraW5nOwogICAgICAgICB9CiAgICAgICAgIGFuY2VzdG9yID0gYW5j
ZXN0b3ItPnBhcmVudCgpOwpAQCAtMzQzOCw0NiArMzQ0OCw5MiBAQCBzdGF0aWMgUmVuZGVyTGF5
ZXJCYWNraW5nKiBuZWFyZXN0U2Nyb2xsaW5nQ29vcmRpbmF0b3JBbmNlc3RvcihSZW5kZXJMYXll
ciYgbGF5ZQogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6cmVnaXN0ZXJPclVwZGF0ZVZpZXdwb3J0Q29uc3RyYWluZWRMYXllcihSZW5kZXJMYXll
ciYgbGF5ZXIpCit2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xsQ29vcmRp
bmF0ZWRMYXllcihSZW5kZXJMYXllciYgbGF5ZXIsIFNjcm9sbENvb3JkaW5hdGlvblJlYXNvbnMg
cmVhc29ucykKIHsKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgc3RpY2t5IHBvc2l0
aW9uIGhlcmUhIEFuZCB3ZSBzaG91bGQgZXZlbnR1YWxsIHN1cHBvcnQgZml4ZWQvc3RpY2t5IGVs
ZW1lbnRzCi0gICAgLy8gdGhhdCBhcmUgaW5zaWRlIG5vbi1tYWluIGZyYW1lcyBvbmNlIHdlIGdl
dCBub24tbWFpbiBmcmFtZXMgc2Nyb2xsaW5nIHdpdGggdGhlIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
LgorICAgIC8vIEZJWE1FOiBzdXBwb3J0IHNjcm9sbGluZyBsYXllcnMgaW4gaWZyYW1lcy4KICAg
ICBpZiAobV9yZW5kZXJWaWV3LmRvY3VtZW50KCkub3duZXJFbGVtZW50KCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9
IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCk7CiAgICAgaWYgKCFzY3JvbGxpbmdDb29yZGlu
YXRvcikKICAgICAgICAgcmV0dXJuOworICAgIAorICAgIGJvb2wgaXNSb290TGF5ZXIgPSAmbGF5
ZXIgPT0gbV9yZW5kZXJWaWV3LmxheWVyKCk7CiAKLSAgICAvLyBGSVhNRTogcmVuYW1lIHRvIHN1
cHBvcnRzVmlld3BvcnRDb25zdHJhaW5lZFBvc2l0aW9uTGF5ZXJzKCk/Ci0gICAgaWYgKCFzY3Jv
bGxpbmdDb29yZGluYXRvci0+c3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkgfHwgIWxheWVy
LnBhcmVudCgpKQorICAgIC8vIEZJWE1FOiBSZW1vdmUgc3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5
ZXJzKCkgc2luY2UgYWxsIHBsYXRmb3JtcyBzdXBwb3J0IHRoZW0gbm93LgorICAgIGlmICghc2Ny
b2xsaW5nQ29vcmRpbmF0b3ItPnN1cHBvcnRzRml4ZWRQb3NpdGlvbkxheWVycygpIHx8ICghbGF5
ZXIucGFyZW50KCkgJiYgIWlzUm9vdExheWVyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNT
RVJUKG1fdmlld3BvcnRDb25zdHJhaW5lZExheWVycy5jb250YWlucygmbGF5ZXIpKTsKKyAgICBB
U1NFUlQobV9zY3JvbGxDb29yZGluYXRlZExheWVycy5jb250YWlucygmbGF5ZXIpKTsKICAgICBB
U1NFUlQobGF5ZXIuaXNDb21wb3NpdGVkKCkpOwogCiAgICAgUmVuZGVyTGF5ZXJCYWNraW5nKiBi
YWNraW5nID0gbGF5ZXIuYmFja2luZygpOwogICAgIGlmICghYmFja2luZykKICAgICAgICAgcmV0
dXJuOwogCi0gICAgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCA9IGJhY2tpbmctPnNjcm9sbExheWVy
SUQoKTsKLSAgICBSZW5kZXJMYXllckJhY2tpbmcqIHBhcmVudCA9IG5lYXJlc3RTY3JvbGxpbmdD
b29yZGluYXRvckFuY2VzdG9yKGxheWVyKTsKLSAgICBpZiAoIXBhcmVudCkKKyAgICBSZW5kZXJM
YXllckJhY2tpbmcqIHBhcmVudCA9IG5lYXJlc3RTY3JvbGxDb29yZGluYXRlZEFuY2VzdG9yKGxh
eWVyKTsKKyAgICBpZiAoIXBhcmVudCAmJiAhaXNSb290TGF5ZXIpCiAgICAgICAgIHJldHVybjsK
IAorICAgIFNjcm9sbGluZ05vZGVJRCBwYXJlbnROb2RlSUQgPSBwYXJlbnQgPyBwYXJlbnQtPnNj
cm9sbGluZ05vZGVJREZvckNoaWxkcmVuKCkgOiAwOworICAgIAogICAgIC8vIEFsd2F5cyBjYWxs
IHRoaXMgZXZlbiBpZiB0aGUgYmFja2luZyBpcyBhbHJlYWR5IGF0dGFjaGVkIGJlY2F1c2UgdGhl
IHBhcmVudCBtYXkgaGF2ZSBjaGFuZ2VkLgotICAgIGJhY2tpbmctPmF0dGFjaFRvU2Nyb2xsaW5n
Q29vcmRpbmF0b3JXaXRoUGFyZW50KHBhcmVudCk7Ci0gICAgbm9kZUlEID0gYmFja2luZy0+c2Ny
b2xsTGF5ZXJJRCgpOworICAgIC8vIElmIGEgbm9kZSBwbGF5cyBib3RoIHJvbGVzLCBmaXhlZC9z
dGlja3kgaXMgYWx3YXlzIHRoZSBhbmNlc3RvciBub2RlIG9mIHNjcm9sbGluZy4KKyAgICBpZiAo
cmVhc29ucyAmIEZpeGVkT3JTdGlja3kpIHsKKyAgICAgICAgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJ
RCA9IGJhY2tpbmctPnZpZXdwb3J0Q29uc3RyYWluZWROb2RlSUQoKTsKKyAgICAgICAgaWYgKCFu
b2RlSUQpCisgICAgICAgICAgICBub2RlSUQgPSBzY3JvbGxpbmdDb29yZGluYXRvci0+dW5pcXVl
U2Nyb2xsTGF5ZXJJRCgpOworCisgICAgICAgIFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlID0g
U2Nyb2xsaW5nTm9kZTsKKyAgICAgICAgaWYgKGxheWVyLnJlbmRlcmVyKCkuc3R5bGUoKS5wb3Np
dGlvbigpID09IEZpeGVkUG9zaXRpb24pCisgICAgICAgICAgICBub2RlVHlwZSA9IEZpeGVkTm9k
ZTsKKyAgICAgICAgZWxzZSBpZiAobGF5ZXIucmVuZGVyZXIoKS5zdHlsZSgpLnBvc2l0aW9uKCkg
PT0gU3RpY2t5UG9zaXRpb24pCisgICAgICAgICAgICBub2RlVHlwZSA9IFN0aWNreU5vZGU7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCi0gICAgaWYg
KGxheWVyLnJlbmRlcmVyKCkuaXNTdGlja3lQb3NpdGlvbmVkKCkpCi0gICAgICAgIHNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLT51cGRhdGVWaWV3cG9ydENvbnN0cmFpbmVkTm9kZShub2RlSUQsIGNvbXB1
dGVTdGlja3lWaWV3cG9ydENvbnN0cmFpbnRzKGxheWVyKSwgYmFja2luZy0+Z3JhcGhpY3NMYXll
cigpKTsKLSAgICBlbHNlCi0gICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT51cGRhdGVWaWV3
cG9ydENvbnN0cmFpbmVkTm9kZShub2RlSUQsIGNvbXB1dGVGaXhlZFZpZXdwb3J0Q29uc3RyYWlu
dHMobGF5ZXIpLCBiYWNraW5nLT5ncmFwaGljc0xheWVyKCkpOworICAgICAgICBub2RlSUQgPSBz
Y3JvbGxpbmdDb29yZGluYXRvci0+YXR0YWNoVG9TdGF0ZVRyZWUobm9kZVR5cGUsIG5vZGVJRCwg
cGFyZW50Tm9kZUlEKTsKKyAgICAgICAgYmFja2luZy0+c2V0Vmlld3BvcnRDb25zdHJhaW5lZE5v
ZGVJRChub2RlSUQpOworCisgICAgICAgIHN3aXRjaCAobm9kZVR5cGUpIHsKKyAgICAgICAgY2Fz
ZSBGaXhlZE5vZGU6CisgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+dXBkYXRlVmll
d3BvcnRDb25zdHJhaW5lZE5vZGUobm9kZUlELCBjb21wdXRlRml4ZWRWaWV3cG9ydENvbnN0cmFp
bnRzKGxheWVyKSwgYmFja2luZy0+Z3JhcGhpY3NMYXllcigpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFN0aWNreU5vZGU6CisgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGlu
YXRvci0+dXBkYXRlVmlld3BvcnRDb25zdHJhaW5lZE5vZGUobm9kZUlELCBjb21wdXRlU3RpY2t5
Vmlld3BvcnRDb25zdHJhaW50cyhsYXllciksIGJhY2tpbmctPmdyYXBoaWNzTGF5ZXIoKSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTY3JvbGxpbmdOb2RlOgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHBhcmVudE5vZGVJRCA9IG5v
ZGVJRDsKKyAgICB9CisKKyAgICBpZiAocmVhc29ucyAmIFNjcm9sbGluZykgeworICAgICAgICBT
Y3JvbGxpbmdOb2RlSUQgbm9kZUlEID0gYmFja2luZy0+c2Nyb2xsaW5nTm9kZUlEKCk7CisgICAg
ICAgIGlmICghbm9kZUlEKQorICAgICAgICAgICAgbm9kZUlEID0gc2Nyb2xsaW5nQ29vcmRpbmF0
b3ItPnVuaXF1ZVNjcm9sbExheWVySUQoKTsKKworICAgICAgICBub2RlSUQgPSBzY3JvbGxpbmdD
b29yZGluYXRvci0+YXR0YWNoVG9TdGF0ZVRyZWUoU2Nyb2xsaW5nTm9kZSwgbm9kZUlELCBwYXJl
bnROb2RlSUQpOworICAgICAgICBiYWNraW5nLT5zZXRTY3JvbGxpbmdOb2RlSUQobm9kZUlEKTsK
KworICAgICAgICBHcmFwaGljc0xheWVyKiBzY3JvbGxpbmdMYXllciA9IGJhY2tpbmctPnNjcm9s
bGluZ0xheWVyKCk7CisgICAgICAgIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbGVkQ29udGVudHNMYXll
ciA9IGJhY2tpbmctPnNjcm9sbGluZ0NvbnRlbnRzTGF5ZXIoKTsKKyAgICAgICAgR3JhcGhpY3NM
YXllciogY291bnRlclNjcm9sbGluZ0xheWVyID0gbnVsbHB0cjsKKworICAgICAgICBpZiAoJmxh
eWVyID09IG1fcmVuZGVyVmlldy5sYXllcigpKSB7CisgICAgICAgICAgICBzY3JvbGxpbmdMYXll
ciA9IG1fc2Nyb2xsTGF5ZXIuZ2V0KCk7CisgICAgICAgICAgICBzY3JvbGxlZENvbnRlbnRzTGF5
ZXIgPSBudWxscHRyOworICAgICAgICAgICAgY291bnRlclNjcm9sbGluZ0xheWVyID0gZml4ZWRS
b290QmFja2dyb3VuZExheWVyKCk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgc2Nyb2xsaW5n
Q29vcmRpbmF0b3ItPnVwZGF0ZVNjcm9sbGluZ05vZGUobm9kZUlELCBzY3JvbGxpbmdMYXllciwg
c2Nyb2xsZWRDb250ZW50c0xheWVyLCBjb3VudGVyU2Nyb2xsaW5nTGF5ZXIpOworICAgIH0KIH0K
IAotdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVucmVnaXN0ZXJWaWV3cG9ydENvbnN0cmFp
bmVkTGF5ZXIoUmVuZGVyTGF5ZXImIGxheWVyKQordm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OmRldGFjaFNjcm9sbENvb3JkaW5hdGVkTGF5ZXIoUmVuZGVyTGF5ZXImIGxheWVyKQogewotICAg
IEFTU0VSVChtX3ZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnMuY29udGFpbnMoJmxheWVyKSk7Cisg
ICAgQVNTRVJUKG1fc2Nyb2xsQ29vcmRpbmF0ZWRMYXllcnMuY29udGFpbnMoJmxheWVyKSk7CiAK
ICAgICBpZiAoUmVuZGVyTGF5ZXJCYWNraW5nKiBiYWNraW5nID0gbGF5ZXIuYmFja2luZygpKQog
ICAgICAgICBiYWNraW5nLT5kZXRhY2hGcm9tU2Nyb2xsaW5nQ29vcmRpbmF0b3IoKTsKQEAgLTM0
OTksNyArMzU1NSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWdpc3RlckFsbFZp
ZXdwb3J0Q29uc3RyYWluZWRMYXllcnMoKQogICAgIExheWVyTWFwIGxheWVyTWFwOwogICAgIFN0
aWNreUNvbnRhaW5lck1hcCBzdGlja3lDb250YWluZXJNYXA7CiAKLSAgICBmb3IgKGF1dG8gaXQg
PSBtX3ZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnMuYmVnaW4oKSwgZW5kID0gbV92aWV3cG9ydENv
bnN0cmFpbmVkTGF5ZXJzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICBmb3IgKGF1dG8g
aXQgPSBtX3Njcm9sbENvb3JkaW5hdGVkTGF5ZXJzLmJlZ2luKCksIGVuZCA9IG1fc2Nyb2xsQ29v
cmRpbmF0ZWRMYXllcnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBSZW5kZXJM
YXllciYgbGF5ZXIgPSAqKml0OwogICAgICAgICBBU1NFUlQobGF5ZXIuaXNDb21wb3NpdGVkKCkp
OwogCkBAIC0zNTExLDggKzM1NjcsMTAgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJl
Z2lzdGVyQWxsVmlld3BvcnRDb25zdHJhaW5lZExheWVycygpCiAgICAgICAgICAgICAgICAgQVNT
RVJUKGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyLT5pc0NvbXBvc2l0ZWQoKSk7CiAgICAg
ICAgICAgICAgICAgc3RpY2t5Q29udGFpbmVyTWFwLmFkZChsYXllci5iYWNraW5nKCktPmdyYXBo
aWNzTGF5ZXIoKS0+cGxhdGZvcm1MYXllcigpLCBlbmNsb3NpbmdUb3VjaFNjcm9sbGFibGVMYXll
ci0+YmFja2luZygpLT5zY3JvbGxpbmdMYXllcigpLT5wbGF0Zm9ybUxheWVyKCkpOwogICAgICAg
ICAgICAgfQotICAgICAgICB9IGVsc2UKKyAgICAgICAgfSBlbHNlIGlmIChsYXllci5yZW5kZXJl
cigpLnN0eWxlKCkucG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uKQogICAgICAgICAgICAgY29u
c3RyYWludHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFp
bnRzPihjb21wdXRlRml4ZWRWaWV3cG9ydENvbnN0cmFpbnRzKGxheWVyKSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGxheWVyTWFwLmFkZChsYXllci5i
YWNraW5nKCktPmdyYXBoaWNzTGF5ZXIoKS0+cGxhdGZvcm1MYXllcigpLCBhZG9wdFB0cihjb25z
dHJhaW50cy5yZWxlYXNlKCkpKTsKICAgICB9CkBAIC0zNTYwLDI2ICszNjE4LDUxIEBAIHZvaWQg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1bnJlZ2lzdGVyQWxsU2Nyb2xsaW5nTGF5ZXJzKCkKICAg
ICAgICAgY2xpZW50LT5yZW1vdmVTY3JvbGxpbmdMYXllcihsYXllci5yZW5kZXJlcigpLmVsZW1l
bnQoKSwgYmFja2luZy0+c2Nyb2xsaW5nTGF5ZXIoKS0+cGxhdGZvcm1MYXllcigpLCBiYWNraW5n
LT5zY3JvbGxpbmdDb250ZW50c0xheWVyKCktPnBsYXRmb3JtTGF5ZXIoKSk7CiAgICAgfQogfQor
I2VuZGlmCiAKLS8vIENhbGxlZCB3aGVuIHRoZSBzaXplIG9mIHRoZSBjb250ZW50c0xheWVyIGNo
YW5nZXMsIGFuZCB3aGVuIHRoZSBjb250ZW50c0xheWVyIGlzIHJlcGxhY2VkIGJ5IGFub3RoZXIg
bGF5ZXIuCi12b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2Nyb2xsaW5nTGF5ZXJBZGRlZE9y
VXBkYXRlZChSZW5kZXJMYXllciogbGF5ZXIpCit2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
d2lsbFJlbW92ZVNjcm9sbGluZ0xheWVyKFJlbmRlckxheWVyJiBsYXllcikKIHsKLSAgICBBU1NF
UlQoIW1fcmVuZGVyVmlldy5kb2N1bWVudCgpLmluUGFnZUNhY2hlKCkpOwotICAgIG1fc2Nyb2xs
aW5nTGF5ZXJzLmFkZChsYXllcik7CisgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3Jv
bGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpIHsKKyAgICAg
ICAgUmVuZGVyTGF5ZXJCYWNraW5nKiBiYWNraW5nID0gbGF5ZXIuYmFja2luZygpOworICAgIAor
ICAgICAgICBpZiAoYmFja2luZykKKyAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5k
ZXRhY2hGcm9tU3RhdGVUcmVlKGJhY2tpbmctPnNjcm9sbGluZ05vZGVJRCgpKTsKKworICAgICAg
ICAvLyBGb3IgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCisgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5h
dG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKCZsYXllcik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgbV9zY3JvbGxpbmdMYXll
cnNOZWVkaW5nVXBkYXRlLnJlbW92ZSgmbGF5ZXIpOworICAgIG1fc2Nyb2xsaW5nTGF5ZXJzLnJl
bW92ZSgmbGF5ZXIpOworCisgICAgaWYgKG1fcmVuZGVyVmlldy5kb2N1bWVudCgpLmluUGFnZUNh
Y2hlKCkgfHwgIWxheWVyLmJhY2tpbmcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKENo
cm9tZUNsaWVudCogY2xpZW50ID0gdGhpcy0+Y2hyb21lQ2xpZW50KCkpIHsKKyAgICAgICAgUGxh
dGZvcm1MYXllciogc2Nyb2xsaW5nTGF5ZXIgPSBsYXllci5iYWNraW5nKCktPnNjcm9sbGluZ0xh
eWVyKCktPnBsYXRmb3JtTGF5ZXIoKTsKKyAgICAgICAgUGxhdGZvcm1MYXllciogY29udGVudHNM
YXllciA9IGxheWVyLmJhY2tpbmcoKS0+c2Nyb2xsaW5nQ29udGVudHNMYXllcigpLT5wbGF0Zm9y
bUxheWVyKCk7CisgICAgICAgIGNsaWVudC0+cmVtb3ZlU2Nyb2xsaW5nTGF5ZXIobGF5ZXIucmVu
ZGVyZXIoKS5lbGVtZW50KCksIHNjcm9sbGluZ0xheWVyLCBjb250ZW50c0xheWVyKTsKKyAgICB9
CisjZW5kaWYKIH0KIAotdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNjcm9sbGluZ0xheWVy
UmVtb3ZlZChSZW5kZXJMYXllciogbGF5ZXIsIFBsYXRmb3JtTGF5ZXIqIHNjcm9sbGluZ0xheWVy
LCBQbGF0Zm9ybUxheWVyKiBjb250ZW50c0xheWVyKQordm9pZCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OmRpZEFkZFNjcm9sbGluZ0xheWVyKFJlbmRlckxheWVyJiBsYXllcikKIHsKLSAgICBtX3Nj
cm9sbGluZ0xheWVyc05lZWRpbmdVcGRhdGUucmVtb3ZlKGxheWVyKTsKLSAgICBtX3Njcm9sbGlu
Z0xheWVycy5yZW1vdmUobGF5ZXIpOworICAgIHVwZGF0ZVNjcm9sbENvb3JkaW5hdGVkU3RhdHVz
KGxheWVyKTsKIAotICAgIGlmIChtX3JlbmRlclZpZXcuZG9jdW1lbnQoKS5pblBhZ2VDYWNoZSgp
KQorICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSB0
aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKSB7CisgICAgICAgIC8vIEZvciBDb29yZGluYXRl
ZCBHcmFwaGljcy4KKyAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVh
U2Nyb2xsTGF5ZXJEaWRDaGFuZ2UoJmxheWVyKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAot
ICAgIGlmIChDaHJvbWVDbGllbnQqIGNsaWVudCA9IHRoaXMtPmNocm9tZUNsaWVudCgpKQotICAg
ICAgICBjbGllbnQtPnJlbW92ZVNjcm9sbGluZ0xheWVyKGxheWVyLT5yZW5kZXJlcigpLmVsZW1l
bnQoKSwgc2Nyb2xsaW5nTGF5ZXIsIGNvbnRlbnRzTGF5ZXIpOwotfQorI2lmIFBMQVRGT1JNKElP
UykKKyAgICBBU1NFUlQoIW1fcmVuZGVyVmlldy5kb2N1bWVudCgpLmluUGFnZUNhY2hlKCkpOwor
ICAgIG1fc2Nyb2xsaW5nTGF5ZXJzLmFkZCgmbGF5ZXIpOwogI2VuZGlmCit9CiAKIHZvaWQgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5
SUQgZGlzcGxheUlEKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5oCmluZGV4IGMxNThjZjQxOWZiMDNjMmMxODA5OTg3YzY5ZTZkZjE1NzA0
ODI2ZTguLjYwNmUwYjdlZDU2ZWZkNDI5Yjk3ZTI3MzU4NjlmYmViNTkzOWQzNjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKQEAgLTI2
NiwxOSArMjY2LDIwIEBAIHB1YmxpYzoKICAgICBHcmFwaGljc0xheWVyKiB1cGRhdGVMYXllckZv
ckZvb3Rlcihib29sIHdhbnRzTGF5ZXIpOwogI2VuZGlmCiAKLSAgICB2b2lkIHVwZGF0ZVZpZXdw
b3J0Q29uc3RyYWludFN0YXR1cyhSZW5kZXJMYXllciYpOwotICAgIHZvaWQgcmVtb3ZlVmlld3Bv
cnRDb25zdHJhaW5lZExheWVyKFJlbmRlckxheWVyJik7CisgICAgdm9pZCB1cGRhdGVTY3JvbGxD
b29yZGluYXRlZFN0YXR1cyhSZW5kZXJMYXllciYpOworICAgIHZvaWQgcmVtb3ZlRnJvbVNjcm9s
bENvb3JkaW5hdGVkTGF5ZXJzKFJlbmRlckxheWVyJik7CisKKyAgICB2b2lkIHdpbGxSZW1vdmVT
Y3JvbGxpbmdMYXllcihSZW5kZXJMYXllciYpOworICAgIHZvaWQgZGlkQWRkU2Nyb2xsaW5nTGF5
ZXIoUmVuZGVyTGF5ZXImKTsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICB2b2lkIHJlZ2lzdGVy
QWxsVmlld3BvcnRDb25zdHJhaW5lZExheWVycygpOwogICAgIHZvaWQgdW5yZWdpc3RlckFsbFZp
ZXdwb3J0Q29uc3RyYWluZWRMYXllcnMoKTsKIAotICAgIHZvaWQgc2Nyb2xsaW5nTGF5ZXJBZGRl
ZE9yVXBkYXRlZChSZW5kZXJMYXllciopOwotICAgIHZvaWQgc2Nyb2xsaW5nTGF5ZXJSZW1vdmVk
KFJlbmRlckxheWVyKiwgUGxhdGZvcm1MYXllciogc2Nyb2xsaW5nTGF5ZXIsIFBsYXRmb3JtTGF5
ZXIqIGNvbnRlbnRzTGF5ZXIpOwotCiAgICAgdm9pZCByZWdpc3RlckFsbFNjcm9sbGluZ0xheWVy
cygpOwogICAgIHZvaWQgdW5yZWdpc3RlckFsbFNjcm9sbGluZ0xheWVycygpOwogI2VuZGlmCisK
ICAgICB2b2lkIHJlc2V0VHJhY2tlZFJlcGFpbnRSZWN0cygpOwogICAgIHZvaWQgc2V0VHJhY2tz
UmVwYWludHMoYm9vbCk7CiAKQEAgLTM5NSw3ICszOTYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
cmVxdWlyZXNDb21wb3NpdGluZ0ZvckluZGlyZWN0UmVhc29uKFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QmLCBib29sIGhhc0NvbXBvc2l0ZWREZXNjZW5kYW50cywgYm9vbCBoYXNCbGVuZGVkRGVzY2Vu
ZGFudHMsIGJvb2wgaGFzM0RUcmFuc2Zvcm1lZERlc2NlbmRhbnRzLCBSZW5kZXJMYXllcjo6SW5k
aXJlY3RDb21wb3NpdGluZ1JlYXNvbiYpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAg
IGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0ZvclNjcm9sbGluZyhSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0JikgY29uc3Q7CisgICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yU2Nyb2xsaW5nKGNv
bnN0IFJlbmRlckxheWVyJikgY29uc3Q7CiAKICAgICB2b2lkIHVwZGF0ZUN1c3RvbUxheWVyc0Fm
dGVyRmx1c2goKTsKIApAQCAtNDAzLDkgKzQwNCwxNCBAQCBwcml2YXRlOgogCiAjZW5kaWYKIAot
ICAgIHZvaWQgYWRkVmlld3BvcnRDb25zdHJhaW5lZExheWVyKFJlbmRlckxheWVyJik7Ci0gICAg
dm9pZCByZWdpc3Rlck9yVXBkYXRlVmlld3BvcnRDb25zdHJhaW5lZExheWVyKFJlbmRlckxheWVy
Jik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyVmlld3BvcnRDb25zdHJhaW5lZExheWVyKFJlbmRlckxh
eWVyJik7CisgICAgZW51bSBTY3JvbGxDb29yZGluYXRpb25SZWFzb24geworICAgICAgICBGaXhl
ZE9yU3RpY2t5ID0gMSA8PCAwLAorICAgICAgICBTY3JvbGxpbmcgPSAxIDw8IDEKKyAgICB9Owor
ICAgIHR5cGVkZWYgdW5zaWduZWQgU2Nyb2xsQ29vcmRpbmF0aW9uUmVhc29uczsKKworICAgIHZv
aWQgdXBkYXRlU2Nyb2xsQ29vcmRpbmF0ZWRMYXllcihSZW5kZXJMYXllciYsIFNjcm9sbENvb3Jk
aW5hdGlvblJlYXNvbnMpOworICAgIHZvaWQgZGV0YWNoU2Nyb2xsQ29vcmRpbmF0ZWRMYXllcihS
ZW5kZXJMYXllciYpOwogCiAgICAgRml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMgY29t
cHV0ZUZpeGVkVmlld3BvcnRDb25zdHJhaW50cyhSZW5kZXJMYXllciYpIGNvbnN0OwogICAgIFN0
aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cyBjb21wdXRlU3RpY2t5Vmlld3BvcnRDb25z
dHJhaW50cyhSZW5kZXJMYXllciYpIGNvbnN0OwpAQCAtNDc1LDggKzQ4MSw4IEBAIHByaXZhdGU6
CiAgICAgSGFzaFNldDxSZW5kZXJMYXllcio+IG1fc2Nyb2xsaW5nTGF5ZXJzOwogICAgIEhhc2hT
ZXQ8UmVuZGVyTGF5ZXIqPiBtX3Njcm9sbGluZ0xheWVyc05lZWRpbmdVcGRhdGU7CiAjZW5kaWYK
LSAgICBIYXNoU2V0PFJlbmRlckxheWVyKj4gbV92aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzOwot
ICAgIEhhc2hTZXQ8UmVuZGVyTGF5ZXIqPiBtX3ZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnNOZWVk
aW5nVXBkYXRlOworICAgIEhhc2hTZXQ8UmVuZGVyTGF5ZXIqPiBtX3Njcm9sbENvb3JkaW5hdGVk
TGF5ZXJzOworICAgIEhhc2hTZXQ8UmVuZGVyTGF5ZXIqPiBtX3Njcm9sbENvb3JkaW5hdGVkTGF5
ZXJzTmVlZGluZ1VwZGF0ZTsKIAogICAgIC8vIEVuY2xvc2luZyBsYXllciBmb3Igb3ZlcmZsb3cg
Y29udHJvbHMgYW5kIHRoZSBjbGlwcGluZyBsYXllcgogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFw
aGljc0xheWVyPiBtX292ZXJmbG93Q29udHJvbHNIb3N0TGF5ZXI7Cg==
</data>
<flag name="review"
          id="249445"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>