<?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>85644</bug_id>
          
          <creation_ts>2012-05-04 10:53:06 -0700</creation_ts>
          <short_desc>[chromium] Revert compositor layer scrolling</short_desc>
          <delta_ts>2012-05-04 12:25:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Sami Kyostila">skyostil</reporter>
          <assigned_to name="Sami Kyostila">skyostil</assigned_to>
          <cc>andreip</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>steveblock</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>616419</commentid>
    <comment_count>0</comment_count>
    <who name="Sami Kyostila">skyostil</who>
    <bug_when>2012-05-04 10:53:06 -0700</bug_when>
    <thetext>[chromium] Revert compositor layer scrolling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616423</commentid>
    <comment_count>1</comment_count>
      <attachid>140275</attachid>
    <who name="Sami Kyostila">skyostil</who>
    <bug_when>2012-05-04 10:54:48 -0700</bug_when>
    <thetext>Created attachment 140275
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616435</commentid>
    <comment_count>2</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2012-05-04 11:02:27 -0700</bug_when>
    <thetext>LGTM...really sorry to see this reverted. Let&apos;s reland as soon as the crashers are fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616438</commentid>
    <comment_count>3</comment_count>
      <attachid>140275</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2012-05-04 11:05:18 -0700</bug_when>
    <thetext>Comment on attachment 140275
Patch

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

rubber stamp

&gt; Source/WebCore/ChangeLog:9
&gt; +        trigger crashes:

Is there a bug which discusses this which you can link to?

&gt; Source/WebCore/ChangeLog:13
&gt; +            [chromium] Don&apos;t keep pointers to released layer tree

Please link to the revisions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616448</commentid>
    <comment_count>4</comment_count>
      <attachid>140281</attachid>
    <who name="Sami Kyostila">skyostil</who>
    <bug_when>2012-05-04 11:18:42 -0700</bug_when>
    <thetext>Created attachment 140281
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616451</commentid>
    <comment_count>5</comment_count>
    <who name="Sami Kyostila">skyostil</who>
    <bug_when>2012-05-04 11:20:51 -0700</bug_when>
    <thetext>I&apos;ve improved the Changelog entry. Another look please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616453</commentid>
    <comment_count>6</comment_count>
      <attachid>140281</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2012-05-04 11:21:02 -0700</bug_when>
    <thetext>Comment on attachment 140281
Patch

rubber stamp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616517</commentid>
    <comment_count>7</comment_count>
      <attachid>140281</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-04 12:25:16 -0700</bug_when>
    <thetext>Comment on attachment 140281
Patch

Clearing flags on attachment: 140281

Committed r116142: &lt;http://trac.webkit.org/changeset/116142&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616518</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-04 12:25:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140275</attachid>
            <date>2012-05-04 10:54:48 -0700</date>
            <delta_ts>2012-05-04 11:18:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85644-20120504185446.patch</filename>
            <type>text/plain</type>
            <size>63934</size>
            <attacher name="Sami Kyostila">skyostil</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2MTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmJiYTY1MmUwNWZiYmVj
NDMxOWU3NmJjZWY3ZGI3OGRhNzhmZGRlOC4uMDY0NjEwNmNkZDYzNGE5NWZmZDBiNjk4N2NhOWEw
N2JkODdkMGYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEyLTA1LTA0ICBTYW1p
IEt5b3N0aWxhICA8c2t5b3N0aWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
UmV2ZXJ0IGNvbXBvc2l0b3IgbGF5ZXIgc2Nyb2xsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTY0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmV2ZXJ0cyB0aGUgZm9sbG93aW5n
IGNvbW1pdHMgYmVjYXVzZSB0aGV5IHdlcmUgZm91bmQgdG8KKyAgICAgICAgdHJpZ2dlciBjcmFz
aGVzOgorCisgICAgICAgICAgICBbY2hyb21pdW1dIEFsbG93IHNjcm9sbGluZyBub24tcm9vdCBs
YXllcnMgaW4gdGhlIGNvbXBvc2l0b3IgdGhyZWFkCisgICAgICAgICAgICBbY2hyb21pdW1dIERv
bid0IGNyYXNoIHdoZW4gc2Nyb2xsaW5nIGVtcHR5IGxheWVyIHRyZWUKKyAgICAgICAgICAgIFtj
aHJvbWl1bV0gRG9uJ3Qga2VlcCBwb2ludGVycyB0byByZWxlYXNlZCBsYXllciB0cmVlCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hy
b21pdW0uaDoKKyAgICAgICAgKENvbnRlbnRMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAg
KEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVt
OjpwdXNoUHJvcGVydGllc1RvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChMYXllckNocm9taXVtKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjphcHBseVNjcm9sbEFuZFNjYWxlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24u
aDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdENvbW1vbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpDQ0xheWVyVHJlZUhvc3RJbXBsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRl
clN1cmZhY2VMYXllckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1w
bDo6Y29udGVudFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6
cHJlcGFyZVRvRHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpmaW5kU2Nyb2xsTGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c2V0Um9vdExheWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFBhZ2VTY2FsZUZhY3RvckFuZExp
bWl0cyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVl
SG9zdEltcGw6OmFkanVzdFNjcm9sbHNGb3JQYWdlU2NhbGVDaGFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c2V0UGFnZVNjYWxlRGVsdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6YXBwbHlQYWdlU2NhbGVEZWx0YVRvU2Nyb2xs
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6dXBkYXRlTWF4
U2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6
c2Nyb2xsQmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c2Ny
b2xsQnkpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsRW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnBpbmNoR2VzdHVyZVVw
ZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpjb21wdXRlUGlu
Y2hab29tRGVsdGFzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6Om1h
a2VTY3JvbGxBbmRTY2FsZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpwcm9jZXNzU2Nyb2xsRGVsdGFzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVl
SG9zdEltcGw6OmFuaW1hdGVQYWdlU2NhbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJUcmVlSG9zdEltcGw6OnJlbGVhc2VSb290TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsTGF5ZXIpOgorICAgICAgICAoQ0NMYXllclRyZWVI
b3N0SW1wbCk6CisKIDIwMTItMDUtMDQgIExldmkgV2VpbnRyYXViIDxsZXZpd0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4aW5nIENoYW5nZUxvZyBjb25mbGljdCBtYXJr
ZXJzIGFmdGVyIDExNjAwOS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYmU4YzhmM2M3
NDVmNGU3OWIwMzg2ODU2MGQ3Mjc2YjUyYzQ3OGNlYS4uZDA3ZDc3OGEzMmExZjNkYzVlZWFkMzNj
OTZkMDNhNjAwMWYxOTQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OSBAQAorMjAxMi0wNS0wNCAgU2FtaSBLeW9zdGlsYSAgPHNreW9zdGlsQGNocm9taXVtLm9yZz4K
KworICAgICAgICBbY2hyb21pdW1dIFJldmVydCBjb21wb3NpdG9yIGxheWVyIHNjcm9sbGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU2NDQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9XZWJD
b250ZW50TGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViQ29udGVudExheWVySW1wbC5o
OgorICAgICAgICAoV2ViQ29udGVudExheWVySW1wbCk6CisgICAgICAgICogdGVzdHMvQ0NMYXll
clRyZWVIb3N0Q29tbW9uVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1RfRik6CisgICAgICAgICog
dGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6Ok1vY2tDb250ZW50
TGF5ZXJEZWxlZ2F0ZTo6cGFpbnRDb250ZW50cyk6CisKIDIwMTItMDUtMDQgIEFsZXhhbmRlciBQ
YXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBb
RGV2aWNlIE1ldHJpY3NdIFdpdGggIkZpdCB3aW5kb3ciIG9wdGlvbiBvbiwgcGFnZSBjb250ZW50
cyBhcmUgZG93bnNjYWxlZCBpbmNvcnJlY3RseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21p
dW0uY3BwCmluZGV4IGExMGYzNTQyMTZkY2Y1ODdmZGVhZjM4MzViM2QxYzI2ZWIyNGI3ZTkuLmFl
OGQzMjA4YmZiYWI4ZDdhZGU5ODJhN2Q4YTkzYTJkODNlZDdkYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250
ZW50TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTE0NSwxMiArMTQ1LDUgQEAgdm9pZCBDb250ZW50TGF5
ZXJDaHJvbWl1bTo6c2V0T3BhcXVlKGJvb2wgb3BhcXVlKQogICAgICAgICBtX3RleHR1cmVVcGRh
dGVyLT5zZXRPcGFxdWUob3BhcXVlKTsKIH0KIAotdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6
c2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEpCi17Ci0gICAgc2V0U2Nyb2xsUG9z
aXRpb24oc2Nyb2xsUG9zaXRpb24oKSArIHNjcm9sbERlbHRhKTsKLSAgICBpZiAobV9kZWxlZ2F0
ZSkKLSAgICAgICAgbV9kZWxlZ2F0ZS0+ZGlkU2Nyb2xsKHNjcm9sbERlbHRhKTsKLX0KLQogfQog
I2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5oCmluZGV4IGE1MWM4MTJiNWM4ODdhYWUzYTlhMjNiNTY0OGVjYzBhYWUzOTIz
OTEuLjBjZDFkNzhkODUzOWE2Zjg2NzQwZWRjMDM0MmRhZDIyZjM0YzAwNTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNo
cm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q29udGVudExheWVyQ2hyb21pdW0uaApAQCAtNDYsNyArNDYsNiBAQCBjbGFzcyBDb250ZW50TGF5
ZXJEZWxlZ2F0ZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q29udGVudExheWVyRGVsZWdhdGUo
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBJbnRSZWN0JiBjbGlwKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFNjcm9sbChjb25z
dCBJbnRTaXplJikgPSAwOwogfTsKIAogLy8gQSBMYXllciB0aGF0IHJlcXVpcmVzIGEgR3JhcGhp
Y3NDb250ZXh0IHRvIHJlbmRlciBpdHMgY29udGVudHMuCkBAIC02NCw4ICs2Myw2IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9vbCkgT1ZFUlJJREU7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYpIE9WRVJSSURFOwotCiBwcm90ZWN0
ZWQ6CiAgICAgZXhwbGljaXQgQ29udGVudExheWVyQ2hyb21pdW0oQ29udGVudExheWVyRGVsZWdh
dGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaAppbmRleCBlM2E4MjA5MGRj
NjU1ZTJiZWFmMzhkNTcxMzNjNGJkMGZmZDRiNWY5Li5iZTJiM2FlNjU3YjU0MmZhYjRjYjU3ZmIz
MjBjY2I3NWFhNGE5NzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaApAQCAt
MTEzLDcgKzExMyw2IEBAIHB1YmxpYzoKIAogICAgIC8vIENvbnRlbnRMYXllckRlbGVnYXRlIGlt
cGxlbWVudGF0aW9uLgogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEludFJlY3QmIGNsaXApOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTY3JvbGwo
Y29uc3QgSW50U2l6ZSYpIE9WRVJSSURFIHsgfQogCiAgICAgLy8gQ0NMYXllckFuaW1hdGlvbkRl
bGVnYXRlIGltcGxlbWVudGF0aW9uLgogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRpb25T
dGFydGVkKGRvdWJsZSBzdGFydFRpbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRleCA0OGM1
NzU0OTc2MGMxNjMxNGJlNzhkMGM5OGU4M2JlNmE5OGNmOWY1Li4yMzhkZDY3NjVmMTA1MmE5YTlj
NjBlNTFiNzRjYTRkZGE3OWY5OTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAtMzgxLDE0
ICszODEsNiBAQCB2b2lkIExheWVyQ2hyb21pdW06OnNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IElu
dFBvaW50JiBzY3JvbGxQb3NpdGlvbikKICAgICBzZXROZWVkc0NvbW1pdCgpOwogfQogCi12b2lk
IExheWVyQ2hyb21pdW06OnNldE1heFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFNpemUmIG1heFNj
cm9sbFBvc2l0aW9uKQotewotICAgIGlmIChtX21heFNjcm9sbFBvc2l0aW9uID09IG1heFNjcm9s
bFBvc2l0aW9uKQotICAgICAgICByZXR1cm47Ci0gICAgbV9tYXhTY3JvbGxQb3NpdGlvbiA9IG1h
eFNjcm9sbFBvc2l0aW9uOwotICAgIHNldE5lZWRzQ29tbWl0KCk7Ci19Ci0KIHZvaWQgTGF5ZXJD
aHJvbWl1bTo6c2V0U2Nyb2xsYWJsZShib29sIHNjcm9sbGFibGUpCiB7CiAgICAgaWYgKG1fc2Ny
b2xsYWJsZSA9PSBzY3JvbGxhYmxlKQpAQCAtNTA5LDcgKzUwMSw2IEBAIHZvaWQgTGF5ZXJDaHJv
bWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgbGF5ZXItPnNl
dFBvc2l0aW9uKG1fcG9zaXRpb24pOwogICAgIGxheWVyLT5zZXRQcmVzZXJ2ZXMzRChwcmVzZXJ2
ZXMzRCgpKTsKICAgICBsYXllci0+c2V0U2Nyb2xsUG9zaXRpb24obV9zY3JvbGxQb3NpdGlvbik7
Ci0gICAgbGF5ZXItPnNldE1heFNjcm9sbFBvc2l0aW9uKG1fbWF4U2Nyb2xsUG9zaXRpb24pOwog
ICAgIGxheWVyLT5zZXRTdWJsYXllclRyYW5zZm9ybShtX3N1YmxheWVyVHJhbnNmb3JtKTsKICAg
ICBpZiAoIXRyYW5zZm9ybUlzQW5pbWF0aW5nKCkpCiAgICAgICAgIGxheWVyLT5zZXRUcmFuc2Zv
cm0obV90cmFuc2Zvcm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IGQ1OTQ4NDAwNzg4OTQ3NmFl
Y2ZiYzJiMjM0NjMwM2QxZDY3NTRiMjUuLjNiZmRhODFjZjg5MGIzZjc5NTg1NjhjYjU2YTdhMTcz
Yzg4M2U4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTE0MSwxNyArMTQxLDEyIEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50Jik7CiAgICAgY29u
c3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxQb3Np
dGlvbjsgfQogCi0gICAgdm9pZCBzZXRNYXhTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRTaXplJik7
Ci0gICAgY29uc3QgSW50U2l6ZSYgbWF4U2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBt
X21heFNjcm9sbFBvc2l0aW9uOyB9Ci0KICAgICB2b2lkIHNldFNjcm9sbGFibGUoYm9vbCk7Ci0g
ICAgYm9vbCBzY3JvbGxhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlOyB9CiAgICAg
dm9pZCBzZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoYm9vbCk7CiAgICAgdm9pZCBzZXRIYXZl
V2hlZWxFdmVudEhhbmRsZXJzKGJvb2wpOwogICAgIGNvbnN0IFJlZ2lvbiYgbm9uRmFzdFNjcm9s
bGFibGVSZWdpb24oKSB7IHJldHVybiBtX25vbkZhc3RTY3JvbGxhYmxlUmVnaW9uOyB9CiAgICAg
dm9pZCBzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBSZWdpb24mKTsKICAgICB2b2lk
IHNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uQ2hhbmdlZCgpIHsgbV9ub25GYXN0U2Nyb2xsYWJs
ZVJlZ2lvbkNoYW5nZWQgPSB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5KGNvbnN0
IEludFNpemUmKSB7IH0KIAogICAgIHZvaWQgc2V0RHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdU
aWxlcyhib29sKTsKICAgICBib29sIGRyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGlsZXMoKSBj
b25zdCB7IHJldHVybiBtX2RyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGlsZXM7IH0KQEAgLTMw
Nyw3ICszMDIsNiBAQCBwcml2YXRlOgogICAgIEludFNpemUgbV9ib3VuZHM7CiAgICAgSW50UmVj
dCBtX3Zpc2libGVMYXllclJlY3Q7CiAgICAgSW50UG9pbnQgbV9zY3JvbGxQb3NpdGlvbjsKLSAg
ICBJbnRTaXplIG1fbWF4U2Nyb2xsUG9zaXRpb247CiAgICAgYm9vbCBtX3Njcm9sbGFibGU7CiAg
ICAgYm9vbCBtX3Nob3VsZFNjcm9sbE9uTWFpblRocmVhZDsKICAgICBib29sIG1faGF2ZVdoZWVs
RXZlbnRIYW5kbGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAppbmRleCA5YjIzM2FmZWMzODU3
ZDNkZjExNDU5YzhiYzEwYWIyYmI3OWY5OGYxLi4wYzJlMDk0MDJlM2NhZjU5YmRiZTY2NmUwYjQy
MGQ4MWEwMTg1ZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCkBAIC0xODMsMzcgKzE4Myw2
IEBAIHZvaWQgQ0NMYXllckltcGw6OnNjcm9sbEJ5KGNvbnN0IEZsb2F0U2l6ZSYgc2Nyb2xsKQog
ICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZEZvclN1YnRyZWUoKTsKIH0KIAotQ0NJbnB1dEhh
bmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1cyBDQ0xheWVySW1wbDo6dHJ5U2Nyb2xsKGNvbnN0IElu
dFBvaW50JiB2aWV3cG9ydFBvaW50LCBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsSW5wdXRU
eXBlIHR5cGUpIGNvbnN0Ci17Ci0gICAgaWYgKHNob3VsZFNjcm9sbE9uTWFpblRocmVhZCgpKSB7
Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJ0cnlTY3JvbGwgRmFpbGVkIHNob3VsZFNjcm9sbE9uTWFp
blRocmVhZCIsIHRoaXMsIDApOwotICAgICAgICByZXR1cm4gQ0NJbnB1dEhhbmRsZXJDbGllbnQ6
OlNjcm9sbEZhaWxlZDsKLSAgICB9Ci0KLSAgICBpZiAoIXNjcmVlblNwYWNlVHJhbnNmb3JtKCku
aXNJbnZlcnRpYmxlKCkpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoInRyeVNjcm9sbCBGYWlsZWQg
bm9uSW52ZXJ0aWJsZVRyYW5zZm9ybSIsIHRoaXMsIDApOwotICAgICAgICByZXR1cm4gQ0NJbnB1
dEhhbmRsZXJDbGllbnQ6OlNjcm9sbElnbm9yZWQ7Ci0gICAgfQotCi0gICAgSW50UG9pbnQgY29u
dGVudFBvaW50KHNjcmVlblNwYWNlVHJhbnNmb3JtKCkuaW52ZXJzZSgpLm1hcFBvaW50KHZpZXdw
b3J0UG9pbnQpKTsKLSAgICBpZiAobm9uRmFzdFNjcm9sbGFibGVSZWdpb24oKS5jb250YWlucyhj
b250ZW50UG9pbnQpKSB7Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJ0cnlTY3JvbGwgRmFpbGVkIG5v
bkZhc3RTY3JvbGxhYmxlUmVnaW9uIiwgdGhpcywgMCk7Ci0gICAgICAgIHJldHVybiBDQ0lucHV0
SGFuZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVkOwotICAgIH0KLQotICAgIGlmICh0eXBlID09IEND
SW5wdXRIYW5kbGVyQ2xpZW50OjpXaGVlbCAmJiBoYXZlV2hlZWxFdmVudEhhbmRsZXJzKCkpIHsK
LSAgICAgICAgVFJBQ0VfRVZFTlQoInRyeVNjcm9sbCBGYWlsZWQgd2hlZWxFdmVudEhhbmRsZXJz
IiwgdGhpcywgMCk7Ci0gICAgICAgIHJldHVybiBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xs
RmFpbGVkOwotICAgIH0KLQotICAgIGlmICghc2Nyb2xsYWJsZSgpKSB7Ci0gICAgICAgIFRSQUNF
X0VWRU5UKCJ0cnlTY3JvbGwgSWdub3JlZCBub3Qgc2Nyb2xsYWJsZSIsIHRoaXMsIDApOwotICAg
ICAgICByZXR1cm4gQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbElnbm9yZWQ7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkOwotfQotCiBj
b25zdCBJbnRSZWN0IENDTGF5ZXJJbXBsOjpnZXREcmF3UmVjdCgpIGNvbnN0CiB7CiAgICAgLy8g
Rm9ybSB0aGUgbWF0cml4IHVzZWQgYnkgdGhlIHNoYWRlciB0byBtYXAgdGhlIGNvcm5lcnMgb2Yg
dGhlIGxheWVyJ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IDYwM2FlNTgyOTdmN2JkZWM1OWRk
MjFjMjljNzc4NzcyYTQ4ZDgxMmMuLmE4Mzk5NGVmYTE3MTE5NmU1MDJlMmQ3ZDdjNjBjOTE1ZWVh
MDc2NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUg
IlJlZ2lvbi5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1h
dGlvbk1hdHJpeC5oIgotI2luY2x1ZGUgImNjL0NDSW5wdXRIYW5kbGVyLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclN1
cmZhY2UuaCIKICNpbmNsdWRlICJjYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oIgpAQCAtMjAxLDggKzIw
MCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGls
ZXMoYm9vbCBjaGVja2VyYm9hcmQpIHsgbV9kcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVz
ID0gY2hlY2tlcmJvYXJkOyB9CiAgICAgYm9vbCBkcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1Rp
bGVzKCkgY29uc3QgeyByZXR1cm4gbV9kcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzOyB9
CiAKLSAgICBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhdHVzIHRyeVNjcm9sbChjb25z
dCBJbnRQb2ludCYgdmlld3BvcnRQb2ludCwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbElu
cHV0VHlwZSkgY29uc3Q7Ci0KICAgICBjb25zdCBJbnRSZWN0JiB2aXNpYmxlTGF5ZXJSZWN0KCkg
Y29uc3QgeyByZXR1cm4gbV92aXNpYmxlTGF5ZXJSZWN0OyB9CiAgICAgdm9pZCBzZXRWaXNpYmxl
TGF5ZXJSZWN0KGNvbnN0IEludFJlY3QmIHZpc2libGVMYXllclJlY3QpIHsgbV92aXNpYmxlTGF5
ZXJSZWN0ID0gdmlzaWJsZUxheWVyUmVjdDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmNwcAppbmRleCBjOGRiMWMwZDVlZTYyOWEyYmZkMTUzOTQ0YzE0ZjE4MWI0NDcxMDIyLi4zOWQy
YTE2NThlMDdmMGJmNzFjYWI2N2E1NjZhNzU1MTJlY2VlYzdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5jcHAKQEAgLTU4OCw0MiArNTg4LDE1IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0
OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0CiAgICAgb2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5yZWNvcmRNZXRyaWNz
KHRoaXMpOwogfQogCi1zdGF0aWMgTGF5ZXJDaHJvbWl1bSogZmluZEZpcnN0U2Nyb2xsYWJsZUxh
eWVyKExheWVyQ2hyb21pdW0qIGxheWVyKQotewotICAgIGlmICghbGF5ZXIpCi0gICAgICAgIHJl
dHVybiAwOwotCi0gICAgaWYgKGxheWVyLT5zY3JvbGxhYmxlKCkpCi0gICAgICAgIHJldHVybiBs
YXllcjsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGF5ZXItPmNoaWxkcmVuKCkuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgTGF5ZXJDaHJvbWl1bSogZm91bmQgPSBmaW5kRmlyc3RTY3Jv
bGxhYmxlTGF5ZXIobGF5ZXItPmNoaWxkcmVuKClbaV0uZ2V0KCkpOwotICAgICAgICBpZiAoZm91
bmQpCi0gICAgICAgICAgICByZXR1cm4gZm91bmQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7Ci19
Ci0KIHZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IENDU2Ny
b2xsQW5kU2NhbGVTZXQmIGluZm8pCiB7Ci0gICAgaWYgKCFtX3Jvb3RMYXllcikKKyAgICAvLyBG
SVhNRTogcHVzaGluZyBzY3JvbGwgb2Zmc2V0cyB0byBub24tcm9vdCBsYXllcnMgbm90IGltcGxl
bWVudGVkCisgICAgaWYgKCFpbmZvLnNjcm9sbHMuc2l6ZSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBMYXllckNocm9taXVtKiByb290U2Nyb2xsTGF5ZXIgPSBmaW5kRmlyc3RTY3JvbGxhYmxl
TGF5ZXIobV9yb290TGF5ZXIuZ2V0KCkpOwotICAgIEludFNpemUgcm9vdFNjcm9sbERlbHRhOwot
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbmZvLnNjcm9sbHMuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBDQ0xheWVyVHJlZUhvc3RDb21tb246OmZp
bmRMYXllckluU3VidHJlZShtX3Jvb3RMYXllci5nZXQoKSwgaW5mby5zY3JvbGxzW2ldLmxheWVy
SWQpOwotICAgICAgICBpZiAoIWxheWVyKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IGlmIChsYXllciA9PSByb290U2Nyb2xsTGF5ZXIpCi0gICAgICAgICAgICByb290U2Nyb2xsRGVs
dGEgKz0gaW5mby5zY3JvbGxzW2ldLnNjcm9sbERlbHRhOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBsYXllci0+c2Nyb2xsQnkoaW5mby5zY3JvbGxzW2ldLnNjcm9sbERlbHRhKTsKLSAgICB9
Ci0gICAgaWYgKCFyb290U2Nyb2xsRGVsdGEuaXNaZXJvKCkgfHwgaW5mby5wYWdlU2NhbGVEZWx0
YSAhPSAxKQotICAgICAgICBtX2NsaWVudC0+YXBwbHlTY3JvbGxBbmRTY2FsZShyb290U2Nyb2xs
RGVsdGEsIGluZm8ucGFnZVNjYWxlRGVsdGEpOworICAgIEFTU0VSVChpbmZvLnNjcm9sbHMuc2l6
ZSgpID09IDEpOworICAgIEludFNpemUgc2Nyb2xsRGVsdGEgPSBpbmZvLnNjcm9sbHNbMF0uc2Ny
b2xsRGVsdGE7CisgICAgbV9jbGllbnQtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoc2Nyb2xsRGVsdGEs
IGluZm8ucGFnZVNjYWxlRGVsdGEpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c3RhcnRS
YXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENv
bW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0Q29tbW9uLmgKaW5kZXggZTMyM2Q5YzQzNWQ4ZjVkNzZhYmZhOTc3ZjYzM2Nj
MGM1ZWNkYjVkOS4uMzc2MmY2NGIxOWIzMTM0OTk4ZTQwYjQ0NzYzOGEyNDZmMTI0OGJiYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0Q29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgKQEAgLTQ2LDEwICs0Niw2IEBA
IHB1YmxpYzoKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4gc3RhdGljIGJvb2wg
cmVuZGVyU3VyZmFjZUNvbnRyaWJ1dGVzVG9UYXJnZXQoTGF5ZXJUeXBlKiwgaW50IHRhcmdldFN1
cmZhY2VMYXllcklEKTsKIAotICAgIC8vIFJldHVybnMgYSBsYXllciB3aXRoIHRoZSBnaXZlbiBp
ZCBpZiBvbmUgZXhpc3RzIGluIHRoZSBzdWJ0cmVlIHN0YXJ0aW5nCi0gICAgLy8gZnJvbSB0aGUg
Z2l2ZW4gcm9vdCBsYXllciAoaW5jbHVkaW5nIG1hc2sgYW5kIHJlcGxpY2EgbGF5ZXJzKS4KLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+IHN0YXRpYyBMYXllclR5cGUqIGZpbmRMYXll
ckluU3VidHJlZShMYXllclR5cGUqIHJvb3RMYXllciwgaW50IGxheWVySWQpOwotCiAgICAgc3Ry
dWN0IFNjcm9sbFVwZGF0ZUluZm8gewogICAgICAgICBpbnQgbGF5ZXJJZDsKICAgICAgICAgSW50
U2l6ZSBzY3JvbGxEZWx0YTsKQEAgLTc1LDI1ICs3MSw2IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0
Q29tbW9uOjpyZW5kZXJTdXJmYWNlQ29udHJpYnV0ZXNUb1RhcmdldChMYXllclR5cGUqIGxheWVy
LCBpCiAgICAgcmV0dXJuIGxheWVyLT5yZW5kZXJTdXJmYWNlKCkgJiYgbGF5ZXItPmlkKCkgIT0g
dGFyZ2V0U3VyZmFjZUxheWVySUQ7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4K
LUxheWVyVHlwZSogQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpmaW5kTGF5ZXJJblN1YnRyZWUoTGF5
ZXJUeXBlKiByb290TGF5ZXIsIGludCBsYXllcklkKQotewotICAgIGlmIChyb290TGF5ZXItPmlk
KCkgPT0gbGF5ZXJJZCkKLSAgICAgICAgcmV0dXJuIHJvb3RMYXllcjsKLQotICAgIGlmIChyb290
TGF5ZXItPm1hc2tMYXllcigpICYmIHJvb3RMYXllci0+bWFza0xheWVyKCktPmlkKCkgPT0gbGF5
ZXJJZCkKLSAgICAgICAgcmV0dXJuIHJvb3RMYXllci0+bWFza0xheWVyKCk7Ci0KLSAgICBpZiAo
cm9vdExheWVyLT5yZXBsaWNhTGF5ZXIoKSAmJiByb290TGF5ZXItPnJlcGxpY2FMYXllcigpLT5p
ZCgpID09IGxheWVySWQpCi0gICAgICAgIHJldHVybiByb290TGF5ZXItPnJlcGxpY2FMYXllcigp
OwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290TGF5ZXItPmNoaWxkcmVuKCkuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKExheWVyVHlwZSogZm91bmQgPSBmaW5kTGF5ZXJJblN1
YnRyZWUocm9vdExheWVyLT5jaGlsZHJlbigpW2ldLmdldCgpLCBsYXllcklkKSkKLSAgICAgICAg
ICAgIHJldHVybiBmb3VuZDsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwCmluZGV4IDQ3Nzk1NGVlZGViYzhhN2U2MzNkMDE1MGY2ZjA5ODRkMjlhMDJhZmIuLmU5NjA4
ZDM4M2ZjODRiZjYzZTE0MTE4ZDU4NzIzYjQ2MDQ2Njg5NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0xMDgsOSArMTA4LDcgQEAgQ0NMYXllclRyZWVIb3N0
SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1wbChjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncywgQ0NM
YXllclRyZWUKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fc291cmNlRnJhbWVOdW1i
ZXIoLTEpCiAgICAgLCBtX2ZyYW1lTnVtYmVyKDApCi0gICAgLCBtX3Jvb3RTY3JvbGxMYXllcklt
cGwoMCkKLSAgICAsIG1fY3VycmVudGx5U2Nyb2xsaW5nTGF5ZXJJbXBsKDApCi0gICAgLCBtX3Nj
cm9sbGluZ0xheWVySWRGcm9tUHJldmlvdXNUcmVlKC0xKQorICAgICwgbV9zY3JvbGxMYXllcklt
cGwoMCkKICAgICAsIG1fc2V0dGluZ3Moc2V0dGluZ3MpCiAgICAgLCBtX3Zpc2libGUodHJ1ZSkK
ICAgICAsIG1faGVhZHNVcERpc3BsYXkoQ0NIZWFkc1VwRGlzcGxheTo6Y3JlYXRlKCkpCkBAIC0x
NzIsMTAgKzE3MCwxMCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGUoZG91Ymxl
IG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKQogCiB2b2lkIENDTGF5ZXJUcmVl
SG9zdEltcGw6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBv
c2l0aW9uLCBib29sIGFuY2hvclBvaW50LCBmbG9hdCBwYWdlU2NhbGUsIGRvdWJsZSBzdGFydFRp
bWUsIGRvdWJsZSBkdXJhdGlvbikKIHsKLSAgICBpZiAoIW1fcm9vdFNjcm9sbExheWVySW1wbCkK
KyAgICBpZiAoIW1fc2Nyb2xsTGF5ZXJJbXBsKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbnRT
aXplIHNjcm9sbFRvdGFsID0gZmxvb3JlZEludFNpemUobV9yb290U2Nyb2xsTGF5ZXJJbXBsLT5z
Y3JvbGxQb3NpdGlvbigpICsgbV9yb290U2Nyb2xsTGF5ZXJJbXBsLT5zY3JvbGxEZWx0YSgpKTsK
KyAgICBJbnRTaXplIHNjcm9sbFRvdGFsID0gZmxvb3JlZEludFNpemUobV9zY3JvbGxMYXllcklt
cGwtPnNjcm9sbFBvc2l0aW9uKCkgKyBtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsRGVsdGEoKSk7
CiAgICAgc2Nyb2xsVG90YWwuc2NhbGUobV9wYWdlU2NhbGVEZWx0YSk7CiAgICAgZmxvYXQgc2Nh
bGVUb3RhbCA9IG1fcGFnZVNjYWxlICogbV9wYWdlU2NhbGVEZWx0YTsKICAgICBJbnRTaXplIHNj
YWxlZENvbnRlbnRTaXplID0gY29udGVudFNpemUoKTsKQEAgLTI0NSw3ICsyNDMsNiBAQCBzdGF0
aWMgRmxvYXRSZWN0IGRhbWFnZUluU3VyZmFjZVNwYWNlKENDTGF5ZXJJbXBsKiByZW5kZXJTdXJm
YWNlTGF5ZXIsIGNvbnN0IEZsbwogdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVS
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KENDTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
KQogewogICAgIEFTU0VSVChyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmlzRW1wdHkoKSk7Ci0gICAg
QVNTRVJUKG1fcm9vdExheWVySW1wbCk7CiAKICAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFw
cGVuZChtX3Jvb3RMYXllckltcGwuZ2V0KCkpOwogCkBAIC0zNzMsOSArMzcwLDkgQEAgSW50U2l6
ZSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjb250ZW50U2l6ZSgpIGNvbnN0CiB7CiAgICAgLy8gVE9E
TyhhZWxpYXMpOiBIYXJkY29kaW5nIHRoZSBmaXJzdCBjaGlsZCBoZXJlIGlzIHdlaXJkLiBUaGlu
ayBvZgogICAgIC8vIGEgY2xlYW5lciB3YXkgdG8gZ2V0IHRoZSBjb250ZW50Qm91bmRzIG9uIHRo
ZSBJbXBsIHNpZGUuCi0gICAgaWYgKCFtX3Jvb3RTY3JvbGxMYXllckltcGwgfHwgbV9yb290U2Ny
b2xsTGF5ZXJJbXBsLT5jaGlsZHJlbigpLmlzRW1wdHkoKSkKKyAgICBpZiAoIW1fc2Nyb2xsTGF5
ZXJJbXBsIHx8IG1fc2Nyb2xsTGF5ZXJJbXBsLT5jaGlsZHJlbigpLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIEludFNpemUoKTsKLSAgICByZXR1cm4gbV9yb290U2Nyb2xsTGF5ZXJJbXBsLT5j
aGlsZHJlbigpWzBdLT5jb250ZW50Qm91bmRzKCk7CisgICAgcmV0dXJuIG1fc2Nyb2xsTGF5ZXJJ
bXBsLT5jaGlsZHJlbigpWzBdLT5jb250ZW50Qm91bmRzKCk7CiB9CiAKIGJvb2wgQ0NMYXllclRy
ZWVIb3N0SW1wbDo6cHJlcGFyZVRvRHJhdyhGcmFtZURhdGEmIGZyYW1lKQpAQCAtMzg0LDcgKzM4
MSw2IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6cHJlcGFyZVRvRHJhdyhGcmFtZURhdGEm
IGZyYW1lKQogCiAgICAgZnJhbWUucmVuZGVyUGFzc2VzLmNsZWFyKCk7CiAgICAgZnJhbWUucmVu
ZGVyU3VyZmFjZUxheWVyTGlzdC5jbGVhcigpOwotICAgIG1fbW9zdFJlY2VudFJlbmRlclN1cmZh
Y2VMYXllckxpc3QuY2xlYXIoKTsKIAogICAgIGlmICghbV9yb290TGF5ZXJJbXBsKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0zOTUsOCArMzkxLDYgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpwcmVwYXJlVG9EcmF3KEZyYW1lRGF0YSYgZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICBtX21vc3RSZWNlbnRSZW5kZXJTdXJmYWNlTGF5ZXJMaXN0ID0gZnJh
bWUucmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLQogICAgIC8vIElmIHdlIHJldHVybiB0cnVlLCB0
aGVuIHdlIGV4cGVjdCBkcmF3TGF5ZXJzKCkgdG8gYmUgY2FsbGVkIGJlZm9yZSB0aGlzIGZ1bmN0
aW9uIGlzIGNhbGxlZCBhZ2Fpbi4KICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTQ5NCw3ICs0ODgs
NyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnJlYWRiYWNrKHZvaWQqIHBpeGVscywgY29u
c3QgSW50UmVjdCYgcmVjdCkKICAgICBtX2xheWVyUmVuZGVyZXItPmdldEZyYW1lYnVmZmVyUGl4
ZWxzKHBpeGVscywgcmVjdCk7CiB9CiAKLXN0YXRpYyBDQ0xheWVySW1wbCogZmluZFJvb3RTY3Jv
bGxMYXllcihDQ0xheWVySW1wbCogbGF5ZXIpCitzdGF0aWMgQ0NMYXllckltcGwqIGZpbmRTY3Jv
bGxMYXllcihDQ0xheWVySW1wbCogbGF5ZXIpCiB7CiAgICAgaWYgKCFsYXllcikKICAgICAgICAg
cmV0dXJuIDA7CkBAIC01MDMsNyArNDk3LDcgQEAgc3RhdGljIENDTGF5ZXJJbXBsKiBmaW5kUm9v
dFNjcm9sbExheWVyKENDTGF5ZXJJbXBsKiBsYXllcikKICAgICAgICAgcmV0dXJuIGxheWVyOwog
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsYXllci0+Y2hpbGRyZW4oKS5zaXplKCk7ICsr
aSkgewotICAgICAgICBDQ0xheWVySW1wbCogZm91bmQgPSBmaW5kUm9vdFNjcm9sbExheWVyKGxh
eWVyLT5jaGlsZHJlbigpW2ldLmdldCgpKTsKKyAgICAgICAgQ0NMYXllckltcGwqIGZvdW5kID0g
ZmluZFNjcm9sbExheWVyKGxheWVyLT5jaGlsZHJlbigpW2ldLmdldCgpKTsKICAgICAgICAgaWYg
KGZvdW5kKQogICAgICAgICAgICAgcmV0dXJuIGZvdW5kOwogICAgIH0KQEAgLTUxMSw0MiArNTA1
LDEyIEBAIHN0YXRpYyBDQ0xheWVySW1wbCogZmluZFJvb3RTY3JvbGxMYXllcihDQ0xheWVySW1w
bCogbGF5ZXIpCiAgICAgcmV0dXJuIDA7CiB9CiAKLS8vIENvbnRlbnQgbGF5ZXJzIGNhbiBiZSBl
aXRoZXIgZGlyZWN0bHkgc2Nyb2xsYWJsZSBvciBjb250YWluZWQgaW4gYW4gb3V0ZXIKLS8vIHNj
cm9sbGluZyBsYXllciB3aGljaCBhcHBsaWVzIHRoZSBzY3JvbGwgdHJhbnNmb3JtLiBHaXZlbiBh
IGNvbnRlbnQgbGF5ZXIsCi0vLyB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGFzc29jaWF0ZWQg
c2Nyb2xsIGxheWVyIGlmIGFueS4KLXN0YXRpYyBDQ0xheWVySW1wbCogZmluZFNjcm9sbExheWVy
Rm9yQ29udGVudExheWVyKENDTGF5ZXJJbXBsKiBsYXllckltcGwpCi17Ci0gICAgaWYgKCFsYXll
ckltcGwpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKGxheWVySW1wbC0+c2Nyb2xsYWJs
ZSgpKQotICAgICAgICByZXR1cm4gbGF5ZXJJbXBsOwotCi0gICAgaWYgKGxheWVySW1wbC0+ZHJh
d3NDb250ZW50KCkgJiYgbGF5ZXJJbXBsLT5wYXJlbnQoKSAmJiBsYXllckltcGwtPnBhcmVudCgp
LT5zY3JvbGxhYmxlKCkpCi0gICAgICAgIHJldHVybiBsYXllckltcGwtPnBhcmVudCgpOwotCi0g
ICAgcmV0dXJuIDA7Ci19Ci0KIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0Um9vdExheWVy
KFBhc3NPd25QdHI8Q0NMYXllckltcGw+IGxheWVyKQogewogICAgIG1fcm9vdExheWVySW1wbCA9
IGxheWVyOwotICAgIG1fcm9vdFNjcm9sbExheWVySW1wbCA9IGZpbmRSb290U2Nyb2xsTGF5ZXIo
bV9yb290TGF5ZXJJbXBsLmdldCgpKTsKLSAgICBtX2N1cnJlbnRseVNjcm9sbGluZ0xheWVySW1w
bCA9IDA7Ci0KLSAgICBpZiAobV9yb290TGF5ZXJJbXBsICYmIG1fc2Nyb2xsaW5nTGF5ZXJJZEZy
b21QcmV2aW91c1RyZWUgIT0gLTEpCi0gICAgICAgIG1fY3VycmVudGx5U2Nyb2xsaW5nTGF5ZXJJ
bXBsID0gQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpmaW5kTGF5ZXJJblN1YnRyZWUobV9yb290TGF5
ZXJJbXBsLmdldCgpLCBtX3Njcm9sbGluZ0xheWVySWRGcm9tUHJldmlvdXNUcmVlKTsKIAotICAg
IG1fc2Nyb2xsaW5nTGF5ZXJJZEZyb21QcmV2aW91c1RyZWUgPSAtMTsKLX0KLQotUGFzc093blB0
cjxDQ0xheWVySW1wbD4gQ0NMYXllclRyZWVIb3N0SW1wbDo6cmVsZWFzZVJvb3RMYXllcigpCi17
Ci0gICAgbV9zY3JvbGxpbmdMYXllcklkRnJvbVByZXZpb3VzVHJlZSA9IG1fY3VycmVudGx5U2Ny
b2xsaW5nTGF5ZXJJbXBsID8gbV9jdXJyZW50bHlTY3JvbGxpbmdMYXllckltcGwtPmlkKCkgOiAt
MTsKLSAgICBtX2N1cnJlbnRseVNjcm9sbGluZ0xheWVySW1wbCA9IDA7Ci0KLSAgICBtX21vc3RS
ZWNlbnRSZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmNsZWFyKCk7Ci0gICAgcmV0dXJuIG1fcm9vdExh
eWVySW1wbC5yZWxlYXNlKCk7CisgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgdGhpcyBvbmx5IGZp
bmRzIHRoZSBmaXJzdCBzY3JvbGxhYmxlIGxheWVyLgorICAgIG1fc2Nyb2xsTGF5ZXJJbXBsID0g
ZmluZFNjcm9sbExheWVyKG1fcm9vdExheWVySW1wbC5nZXQoKSk7CiB9CiAKIHZvaWQgQ0NMYXll
clRyZWVIb3N0SW1wbDo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCkBAIC01OTcsMzQgKzU2MSw2
IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0Vmlld3BvcnRTaXplKGNvbnN0IEludFNp
emUmIHZpZXdwb3J0U2l6ZSkKICAgICAgICAgbV9sYXllclJlbmRlcmVyLT52aWV3cG9ydENoYW5n
ZWQoKTsKIH0KIAotc3RhdGljIHZvaWQgYWRqdXN0U2Nyb2xsc0ZvclBhZ2VTY2FsZUNoYW5nZShD
Q0xheWVySW1wbCogbGF5ZXJJbXBsLCBmbG9hdCBwYWdlU2NhbGVDaGFuZ2UpCi17Ci0gICAgaWYg
KCFsYXllckltcGwpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChsYXllckltcGwtPnNjcm9s
bGFibGUoKSkgewotICAgICAgICAvLyBXZSBuZWVkIHRvIGNvbnZlcnQgaW1wbC1zaWRlIHNjcm9s
bCBkZWx0YXMgdG8gcGFnZVNjYWxlIHNwYWNlLgotICAgICAgICBGbG9hdFNpemUgc2Nyb2xsRGVs
dGEgPSBsYXllckltcGwtPnNjcm9sbERlbHRhKCk7Ci0gICAgICAgIHNjcm9sbERlbHRhLnNjYWxl
KHBhZ2VTY2FsZUNoYW5nZSk7Ci0gICAgICAgIGxheWVySW1wbC0+c2V0U2Nyb2xsRGVsdGEoc2Ny
b2xsRGVsdGEpOwotICAgIH0KLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGF5ZXJJbXBs
LT5jaGlsZHJlbigpLnNpemUoKTsgKytpKQotICAgICAgICBhZGp1c3RTY3JvbGxzRm9yUGFnZVNj
YWxlQ2hhbmdlKGxheWVySW1wbC0+Y2hpbGRyZW4oKVtpXS5nZXQoKSwgcGFnZVNjYWxlQ2hhbmdl
KTsKLX0KLQotc3RhdGljIHZvaWQgYXBwbHlQYWdlU2NhbGVEZWx0YVRvU2Nyb2xsTGF5ZXJzKEND
TGF5ZXJJbXBsKiBsYXllckltcGwsIGZsb2F0IHBhZ2VTY2FsZURlbHRhKQotewotICAgIGlmICgh
bGF5ZXJJbXBsKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobGF5ZXJJbXBsLT5zY3JvbGxh
YmxlKCkpCi0gICAgICAgIGxheWVySW1wbC0+c2V0UGFnZVNjYWxlRGVsdGEocGFnZVNjYWxlRGVs
dGEpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsYXllckltcGwtPmNoaWxkcmVuKCku
c2l6ZSgpOyArK2kpCi0gICAgICAgIGFwcGx5UGFnZVNjYWxlRGVsdGFUb1Njcm9sbExheWVycyhs
YXllckltcGwtPmNoaWxkcmVuKClbaV0uZ2V0KCksIHBhZ2VTY2FsZURlbHRhKTsKLX0KLQogdm9p
ZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMoZmxvYXQg
cGFnZVNjYWxlLCBmbG9hdCBtaW5QYWdlU2NhbGUsIGZsb2F0IG1heFBhZ2VTY2FsZSkKIHsKICAg
ICBpZiAoIXBhZ2VTY2FsZSkKQEAgLTYzOSwxMyArNTc1LDI1IEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0SW1wbDo6c2V0UGFnZVNjYWxlRmFjdG9yQW5kTGltaXRzKGZsb2F0IHBhZ2VTY2FsZSwgZmxv
YXQgbWluCiAgICAgZmxvYXQgcGFnZVNjYWxlQ2hhbmdlID0gcGFnZVNjYWxlIC8gbV9wYWdlU2Nh
bGU7CiAgICAgbV9wYWdlU2NhbGUgPSBwYWdlU2NhbGU7CiAKLSAgICBpZiAocGFnZVNjYWxlQ2hh
bmdlICE9IDEpCi0gICAgICAgIGFkanVzdFNjcm9sbHNGb3JQYWdlU2NhbGVDaGFuZ2UobV9yb290
U2Nyb2xsTGF5ZXJJbXBsLCBwYWdlU2NhbGVDaGFuZ2UpOworICAgIGFkanVzdFNjcm9sbHNGb3JQ
YWdlU2NhbGVDaGFuZ2UocGFnZVNjYWxlQ2hhbmdlKTsKIAogICAgIC8vIENsYW1wIGRlbHRhIHRv
IGxpbWl0cyBhbmQgcmVmcmVzaCBkaXNwbGF5IG1hdHJpeC4KICAgICBzZXRQYWdlU2NhbGVEZWx0
YShtX3BhZ2VTY2FsZURlbHRhIC8gbV9zZW50UGFnZVNjYWxlRGVsdGEpOwogICAgIG1fc2VudFBh
Z2VTY2FsZURlbHRhID0gMTsKLSAgICBhcHBseVBhZ2VTY2FsZURlbHRhVG9TY3JvbGxMYXllcnMo
bV9yb290U2Nyb2xsTGF5ZXJJbXBsLCBtX3BhZ2VTY2FsZURlbHRhKTsKKyAgICBhcHBseVBhZ2VT
Y2FsZURlbHRhVG9TY3JvbGxMYXllcigpOworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6
OmFkanVzdFNjcm9sbHNGb3JQYWdlU2NhbGVDaGFuZ2UoZmxvYXQgcGFnZVNjYWxlQ2hhbmdlKQor
eworICAgIGlmIChwYWdlU2NhbGVDaGFuZ2UgPT0gMSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ly8gV2UgYWxzbyBuZWVkIHRvIGNvbnZlcnQgaW1wbC1zaWRlIHNjcm9sbCBkZWx0YXMgdG8gcGFn
ZVNjYWxlIHNwYWNlLgorICAgIGlmIChtX3Njcm9sbExheWVySW1wbCkgeworICAgICAgICBGbG9h
dFNpemUgc2Nyb2xsRGVsdGEgPSBtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsRGVsdGEoKTsKKyAg
ICAgICAgc2Nyb2xsRGVsdGEuc2NhbGUocGFnZVNjYWxlQ2hhbmdlKTsKKyAgICAgICAgbV9zY3Jv
bGxMYXllckltcGwtPnNldFNjcm9sbERlbHRhKHNjcm9sbERlbHRhKTsKKyAgICB9CiB9CiAKIHZv
aWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0UGFnZVNjYWxlRGVsdGEoZmxvYXQgZGVsdGEpCkBA
IC02NjMsMTYgKzYxMSwyMiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFBhZ2VTY2Fs
ZURlbHRhKGZsb2F0IGRlbHRhKQogICAgIG1fcGFnZVNjYWxlRGVsdGEgPSBkZWx0YTsKIAogICAg
IHVwZGF0ZU1heFNjcm9sbFBvc2l0aW9uKCk7Ci0gICAgYXBwbHlQYWdlU2NhbGVEZWx0YVRvU2Ny
b2xsTGF5ZXJzKG1fcm9vdFNjcm9sbExheWVySW1wbCwgbV9wYWdlU2NhbGVEZWx0YSk7CisgICAg
YXBwbHlQYWdlU2NhbGVEZWx0YVRvU2Nyb2xsTGF5ZXIoKTsKK30KKwordm9pZCBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjphcHBseVBhZ2VTY2FsZURlbHRhVG9TY3JvbGxMYXllcigpCit7CisgICAgaWYg
KG1fc2Nyb2xsTGF5ZXJJbXBsKQorICAgICAgICBtX3Njcm9sbExheWVySW1wbC0+c2V0UGFnZVNj
YWxlRGVsdGEobV9wYWdlU2NhbGVEZWx0YSk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1w
bDo6dXBkYXRlTWF4U2Nyb2xsUG9zaXRpb24oKQogewotICAgIGlmICghbV9yb290U2Nyb2xsTGF5
ZXJJbXBsIHx8ICFtX3Jvb3RTY3JvbGxMYXllckltcGwtPmNoaWxkcmVuKCkuc2l6ZSgpKQorICAg
IGlmICghbV9zY3JvbGxMYXllckltcGwgfHwgIW1fc2Nyb2xsTGF5ZXJJbXBsLT5jaGlsZHJlbigp
LnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRmxvYXRTaXplIHZpZXdCb3VuZHMgPSBt
X3ZpZXdwb3J0U2l6ZTsKLSAgICBpZiAoQ0NMYXllckltcGwqIGNsaXBMYXllciA9IG1fcm9vdFNj
cm9sbExheWVySW1wbC0+cGFyZW50KCkpIHsKKyAgICBpZiAoQ0NMYXllckltcGwqIGNsaXBMYXll
ciA9IG1fc2Nyb2xsTGF5ZXJJbXBsLT5wYXJlbnQoKSkgewogICAgICAgICBpZiAoY2xpcExheWVy
LT5tYXNrc1RvQm91bmRzKCkpCiAgICAgICAgICAgICB2aWV3Qm91bmRzID0gY2xpcExheWVyLT5i
b3VuZHMoKTsKICAgICB9CkBAIC02ODMsNyArNjM3LDkgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJ
bXBsOjp1cGRhdGVNYXhTY3JvbGxQb3NpdGlvbigpCiAgICAgLy8gaGF2aW5nIGEgdmVydGljYWwg
c2Nyb2xsYmFyIGJ1dCBubyBob3Jpem9udGFsIG92ZXJmbG93LgogICAgIG1heFNjcm9sbC5jbGFt
cE5lZ2F0aXZlVG9aZXJvKCk7CiAKLSAgICBtX3Jvb3RTY3JvbGxMYXllckltcGwtPnNldE1heFNj
cm9sbFBvc2l0aW9uKG1heFNjcm9sbCk7CisgICAgbV9zY3JvbGxMYXllckltcGwtPnNldE1heFNj
cm9sbFBvc2l0aW9uKG1heFNjcm9sbCk7CisKKyAgICAvLyBUT0RPKGFlbGlhcyk6IEFsc28gdXBk
YXRlIHN1YmxheWVycy4KIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXROZWVkc1Jl
ZHJhdygpCkBAIC02OTEsMTA4ICs2NDcsNDYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpz
ZXROZWVkc1JlZHJhdygpCiAgICAgbV9jbGllbnQtPnNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFk
KCk7CiB9CiAKLWJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6ZW5zdXJlTW9zdFJlY2VudFJlbmRl
clN1cmZhY2VMYXllckxpc3QoKQotewotICAgIGlmIChtX21vc3RSZWNlbnRSZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0LnNpemUoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoIW1fcm9v
dExheWVySW1wbCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gSWYgd2UgYXJlIGNh
bGxlZCBhZnRlciBzZXRSb290TGF5ZXIoKSBidXQgYmVmb3JlIHByZXBhcmVUb0RyYXcoKSwgd2Ug
bmVlZAotICAgIC8vIHRvIHJlY2FsY3VsYXRlIHRoZSB2aXNpYmxlIGxheWVycy4gVGhpcyBwcmV2
ZW50cyBiZWluZyB1bmFibGUgdG8gc2Nyb2xsCi0gICAgLy8gZHVyaW5nIHBhcnQgb2YgYSBjb21t
aXQuCi0gICAgY2FsY3VsYXRlUmVuZGVyU3VyZmFjZUxheWVyTGlzdChtX21vc3RSZWNlbnRSZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0KTsKLQotICAgIHJldHVybiBtX21vc3RSZWNlbnRSZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0LnNpemUoKTsKLX0KLQogQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0
YXR1cyBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzY3JvbGxCZWdpbihjb25zdCBJbnRQb2ludCYgdmll
d3BvcnRQb2ludCwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbElucHV0VHlwZSB0eXBlKQog
ewotICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3RJbXBsOjpzY3JvbGxCZWdpbiIsIHRo
aXMsIDApOwotCi0gICAgc2Nyb2xsRW5kKCk7Ci0KLSAgICBpZiAoIWVuc3VyZU1vc3RSZWNlbnRS
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KCkpCisgICAgLy8gVE9ETzogQ2hlY2sgZm9yIHNjcm9sbGFi
bGUgc3VibGF5ZXJzLgorICAgIGlmICghbV9zY3JvbGxMYXllckltcGwgfHwgIW1fc2Nyb2xsTGF5
ZXJJbXBsLT5zY3JvbGxhYmxlKCkpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQoInNjcm9sbEJlZ2lu
IElnbm9yZWQgbm8gc2Nyb2xsYWJsZSIsIHRoaXMsIDApOwogICAgICAgICByZXR1cm4gU2Nyb2xs
SWdub3JlZDsKLQotICAgIC8vIEZpcnN0IGZpbmQgb3V0IHdoaWNoIGxheWVyIHdhcyBoaXQgYnkg
d2Fsa2luZyB0aGUgc2F2ZWQgbGlzdCBvZiB2aXNpYmxlIGxheWVycyBmcm9tIHRoZSBtb3N0IHJl
Y2VudCBmcmFtZS4KLSAgICBDQ0xheWVySW1wbCogbGF5ZXJJbXBsID0gMDsKLSAgICB0eXBlZGVm
IENDTGF5ZXJJdGVyYXRvcjxDQ0xheWVySW1wbCwgQ0NMYXllckxpc3QsIENDUmVuZGVyU3VyZmFj
ZSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s+IENDTGF5ZXJJdGVyYXRvclR5
cGU7Ci0gICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBlbmQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpl
bmQoJm1fbW9zdFJlY2VudFJlbmRlclN1cmZhY2VMYXllckxpc3QpOwotICAgIGZvciAoQ0NMYXll
ckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZtX21vc3RSZWNl
bnRSZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIEND
TGF5ZXJJbXBsKiByZW5kZXJTdXJmYWNlTGF5ZXJJbXBsID0gKCppdCk7Ci0gICAgICAgIGlmICgh
cmVuZGVyU3VyZmFjZUxheWVySW1wbC0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKS5pc0ludmVydGli
bGUoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBJbnRQb2ludCBjb250ZW50UG9p
bnQocmVuZGVyU3VyZmFjZUxheWVySW1wbC0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKS5pbnZlcnNl
KCkubWFwUG9pbnQodmlld3BvcnRQb2ludCkpOwotICAgICAgICBpZiAoIXJlbmRlclN1cmZhY2VM
YXllckltcGwtPnZpc2libGVMYXllclJlY3QoKS5jb250YWlucyhjb250ZW50UG9pbnQpKQotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGxheWVySW1wbCA9IHJlbmRlclN1cmZhY2VMYXll
ckltcGw7Ci0gICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIC8vIFdhbGsgdXAgdGhlIGhpZXJh
cmNoeSBhbmQgbG9vayBmb3IgYSBzY3JvbGxhYmxlIGxheWVyLgotICAgIENDTGF5ZXJJbXBsKiBw
b3RlbnRpYWxseVNjcm9sbGluZ0xheWVySW1wbCA9IDA7Ci0gICAgZm9yICg7IGxheWVySW1wbDsg
bGF5ZXJJbXBsID0gbGF5ZXJJbXBsLT5wYXJlbnQoKSkgewotICAgICAgICAvLyBUaGUgY29udGVu
dCBsYXllciBjYW4gYWxzbyBibG9jayBhdHRlbXB0cyB0byBzY3JvbGwgb3V0c2lkZSB0aGUgbWFp
biB0aHJlYWQuCi0gICAgICAgIGlmIChsYXllckltcGwtPnRyeVNjcm9sbCh2aWV3cG9ydFBvaW50
LCB0eXBlKSA9PSBTY3JvbGxGYWlsZWQpCi0gICAgICAgICAgICByZXR1cm4gU2Nyb2xsRmFpbGVk
OwotCi0gICAgICAgIENDTGF5ZXJJbXBsKiBzY3JvbGxMYXllckltcGwgPSBmaW5kU2Nyb2xsTGF5
ZXJGb3JDb250ZW50TGF5ZXIobGF5ZXJJbXBsKTsKLSAgICAgICAgaWYgKCFzY3JvbGxMYXllcklt
cGwpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBTY3JvbGxTdGF0dXMgc3RhdHVz
ID0gc2Nyb2xsTGF5ZXJJbXBsLT50cnlTY3JvbGwodmlld3BvcnRQb2ludCwgdHlwZSk7Ci0KLSAg
ICAgICAgLy8gSWYgYW55IGxheWVyIHdhbnRzIHRvIGRpdmVydCB0aGUgc2Nyb2xsIGV2ZW50IHRv
IHRoZSBtYWluIHRocmVhZCwgYWJvcnQuCi0gICAgICAgIGlmIChzdGF0dXMgPT0gU2Nyb2xsRmFp
bGVkKQotICAgICAgICAgICAgcmV0dXJuIFNjcm9sbEZhaWxlZDsKKyAgICBpZiAobV9zY3JvbGxM
YXllckltcGwtPnNob3VsZFNjcm9sbE9uTWFpblRocmVhZCgpKSB7CisgICAgICAgIFRSQUNFX0VW
RU5UKCJzY3JvbGxCZWdpbiBGYWlsZWQgc2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkIiwgdGhpcywg
MCk7CisgICAgICAgIHJldHVybiBTY3JvbGxGYWlsZWQ7CisgICAgfQogCi0gICAgICAgIGlmIChz
dGF0dXMgPT0gU2Nyb2xsU3RhcnRlZCAmJiAhcG90ZW50aWFsbHlTY3JvbGxpbmdMYXllckltcGwp
Ci0gICAgICAgICAgICBwb3RlbnRpYWxseVNjcm9sbGluZ0xheWVySW1wbCA9IHNjcm9sbExheWVy
SW1wbDsKKyAgICBJbnRQb2ludCBzY3JvbGxMYXllckNvbnRlbnRQb2ludChtX3Njcm9sbExheWVy
SW1wbC0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKS5pbnZlcnNlKCkubWFwUG9pbnQodmlld3BvcnRQ
b2ludCkpOworICAgIGlmIChtX3Njcm9sbExheWVySW1wbC0+bm9uRmFzdFNjcm9sbGFibGVSZWdp
b24oKS5jb250YWlucyhzY3JvbGxMYXllckNvbnRlbnRQb2ludCkpIHsKKyAgICAgICAgVFJBQ0Vf
RVZFTlQoInNjcm9sbEJlZ2luIEZhaWxlZCBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbiIsIHRoaXMs
IDApOworICAgICAgICByZXR1cm4gU2Nyb2xsRmFpbGVkOwogICAgIH0KIAotICAgIGlmIChwb3Rl
bnRpYWxseVNjcm9sbGluZ0xheWVySW1wbCkgewotICAgICAgICBtX2N1cnJlbnRseVNjcm9sbGlu
Z0xheWVySW1wbCA9IHBvdGVudGlhbGx5U2Nyb2xsaW5nTGF5ZXJJbXBsOwotICAgICAgICByZXR1
cm4gU2Nyb2xsU3RhcnRlZDsKKyAgICBpZiAodHlwZSA9PSBDQ0lucHV0SGFuZGxlckNsaWVudDo6
V2hlZWwgJiYgbV9zY3JvbGxMYXllckltcGwtPmhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoKSkgewor
ICAgICAgICBUUkFDRV9FVkVOVCgic2Nyb2xsQmVnaW4gRmFpbGVkIHdoZWVsRXZlbnRIYW5kbGVy
cyIsIHRoaXMsIDApOworICAgICAgICByZXR1cm4gU2Nyb2xsRmFpbGVkOwogICAgIH0KLSAgICBy
ZXR1cm4gU2Nyb2xsSWdub3JlZDsKKworICAgIHJldHVybiBTY3JvbGxTdGFydGVkOwogfQogCiB2
b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNjcm9sbEJ5KGNvbnN0IEludFNpemUmIHNjcm9sbERl
bHRhKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3RJbXBsOjpzY3JvbGxCeSIs
IHRoaXMsIDApOwotICAgIGlmICghbV9jdXJyZW50bHlTY3JvbGxpbmdMYXllckltcGwpCisgICAg
aWYgKCFtX3Njcm9sbExheWVySW1wbCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRmxvYXRTaXpl
IHBlbmRpbmdEZWx0YShzY3JvbGxEZWx0YSk7Ci0gICAgcGVuZGluZ0RlbHRhLnNjYWxlKDEgLyBt
X3BhZ2VTY2FsZURlbHRhKTsKLQotICAgIGZvciAoQ0NMYXllckltcGwqIGxheWVySW1wbCA9IG1f
Y3VycmVudGx5U2Nyb2xsaW5nTGF5ZXJJbXBsOyBsYXllckltcGwgJiYgIXBlbmRpbmdEZWx0YS5p
c1plcm8oKTsgbGF5ZXJJbXBsID0gbGF5ZXJJbXBsLT5wYXJlbnQoKSkgewotICAgICAgICBpZiAo
IWxheWVySW1wbC0+c2Nyb2xsYWJsZSgpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IEZsb2F0U2l6ZSBwcmV2aW91c0RlbHRhKGxheWVySW1wbC0+c2Nyb2xsRGVsdGEoKSk7Ci0gICAg
ICAgIGxheWVySW1wbC0+c2Nyb2xsQnkocGVuZGluZ0RlbHRhKTsKLSAgICAgICAgLy8gUmVzZXQg
dGhlIHBlbmRpbmcgc2Nyb2xsIGRlbHRhIHRvIHplcm8gaWYgdGhlIGxheWVyIHdhcyBhYmxlIHRv
IG1vdmUgYWxvbmcgdGhlIHJlcXVlc3RlZAotICAgICAgICAvLyBheGlzLiBUaGlzIGlzIHRvIGVu
c3VyZSBpdCBpcyBwb3NzaWJsZSB0byBzY3JvbGwgZXhhY3RseSB0byB0aGUgYmVnaW5uaW5nIG9y
IGVuZCBvZiBhCi0gICAgICAgIC8vIHNjcm9sbCBhcmVhIHJlZ2FyZGxlc3Mgb2YgdGhlIHNjcm9s
bCBzdGVwLiBGb3IgZGlhZ29uYWwgc2Nyb2xscyB0aGlzIGFsc28gYXZvaWRzIGFwcGx5aW5nCi0g
ICAgICAgIC8vIHRoZSBzY3JvbGwgb24gb25lIGF4aXMgdG8gbXVsdGlwbGUgbGF5ZXJzLgotICAg
ICAgICBpZiAocHJldmlvdXNEZWx0YS53aWR0aCgpICE9IGxheWVySW1wbC0+c2Nyb2xsRGVsdGEo
KS53aWR0aCgpKQotICAgICAgICAgICAgcGVuZGluZ0RlbHRhLnNldFdpZHRoKDApOwotICAgICAg
ICBpZiAocHJldmlvdXNEZWx0YS5oZWlnaHQoKSAhPSBsYXllckltcGwtPnNjcm9sbERlbHRhKCku
aGVpZ2h0KCkpCi0gICAgICAgICAgICBwZW5kaW5nRGVsdGEuc2V0SGVpZ2h0KDApOwotICAgIH0K
LQotICAgIGlmIChwZW5kaW5nRGVsdGEgIT0gc2Nyb2xsRGVsdGEpIHsKLSAgICAgICAgbV9jbGll
bnQtPnNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCk7Ci0gICAgICAgIG1fY2xpZW50LT5zZXRO
ZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpOwotICAgIH0KKyAgICBtX3Njcm9sbExheWVySW1wbC0+
c2Nyb2xsQnkoc2Nyb2xsRGVsdGEpOworICAgIG1fY2xpZW50LT5zZXROZWVkc0NvbW1pdE9uSW1w
bFRocmVhZCgpOworICAgIG1fY2xpZW50LT5zZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpOwog
fQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNjcm9sbEVuZCgpCiB7Ci0gICAgbV9jdXJy
ZW50bHlTY3JvbGxpbmdMYXllckltcGwgPSAwOwotICAgIG1fc2Nyb2xsaW5nTGF5ZXJJZEZyb21Q
cmV2aW91c1RyZWUgPSAtMTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpwaW5jaEdl
c3R1cmVCZWdpbigpCkBAIC04MDYsNyArNzAwLDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpwaW5jaEdlc3R1cmVVcGRhdGUoZmxvYXQgbWFnbmlmeURlbHRhLAogewogICAgIFRSQUNFX0VW
RU5UKCJDQ0xheWVyVHJlZUhvc3RJbXBsOjpwaW5jaEdlc3R1cmVVcGRhdGUiLCB0aGlzLCAwKTsK
IAotICAgIGlmICghbV9yb290U2Nyb2xsTGF5ZXJJbXBsKQorICAgIGlmICghbV9zY3JvbGxMYXll
ckltcGwpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3ByZXZpb3VzUGluY2hBbmNob3Ig
PT0gSW50UG9pbnQ6Onplcm8oKSkKQEAgLTgyMSw3ICs3MTUsNyBAQCB2b2lkIENDTGF5ZXJUcmVl
SG9zdEltcGw6OnBpbmNoR2VzdHVyZVVwZGF0ZShmbG9hdCBtYWduaWZ5RGVsdGEsCiAKICAgICBt
X3ByZXZpb3VzUGluY2hBbmNob3IgPSBhbmNob3I7CiAKLSAgICBtX3Jvb3RTY3JvbGxMYXllcklt
cGwtPnNjcm9sbEJ5KHJvdW5kZWRJbnRTaXplKG1vdmUpKTsKKyAgICBtX3Njcm9sbExheWVySW1w
bC0+c2Nyb2xsQnkocm91bmRlZEludFNpemUobW92ZSkpOwogICAgIG1fY2xpZW50LT5zZXROZWVk
c0NvbW1pdE9uSW1wbFRocmVhZCgpOwogICAgIG1fY2xpZW50LT5zZXROZWVkc1JlZHJhd09uSW1w
bFRocmVhZCgpOwogfQpAQCAtODQzLDcgKzczNyw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1w
bDo6Y29tcHV0ZURvdWJsZVRhcFpvb21EZWx0YXMoQ0NTY3JvbGxBbmRTY2FsZVNldCogc2Nyb2xs
CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y29tcHV0ZVBpbmNoWm9vbURlbHRhcyhDQ1Nj
cm9sbEFuZFNjYWxlU2V0KiBzY3JvbGxJbmZvKQogewotICAgIGlmICghbV9yb290U2Nyb2xsTGF5
ZXJJbXBsKQorICAgIGlmICghbV9zY3JvbGxMYXllckltcGwpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIC8vIE9ubHkgc2VuZCBmYWtlIHNjcm9sbC96b29tIGRlbHRhcyBpZiB3ZSdyZSBwaW5jaCB6
b29taW5nIG91dCBieSBhCkBAIC04NTUsNyArNzQ5LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpjb21wdXRlUGluY2hab29tRGVsdGFzKENDU2Nyb2xsQW5kU2NhbGVTZXQqIHNjcm9sbElu
Zm8KIAogICAgIC8vIENvbXB1dGUgd2hlcmUgdGhlIHNjcm9sbCBvZmZzZXQvcGFnZSBzY2FsZSB3
b3VsZCBiZSBpZiBmdWxseSBwaW5jaC16b29tZWQKICAgICAvLyBvdXQgZnJvbSB0aGUgYW5jaG9y
IHBvaW50LgotICAgIEludFNpemUgc2Nyb2xsQmVnaW4gPSBmbG9vcmVkSW50U2l6ZShtX3Jvb3RT
Y3JvbGxMYXllckltcGwtPnNjcm9sbFBvc2l0aW9uKCkgKyBtX3Jvb3RTY3JvbGxMYXllckltcGwt
PnNjcm9sbERlbHRhKCkpOworICAgIEludFNpemUgc2Nyb2xsQmVnaW4gPSBmbG9vcmVkSW50U2l6
ZShtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsUG9zaXRpb24oKSArIG1fc2Nyb2xsTGF5ZXJJbXBs
LT5zY3JvbGxEZWx0YSgpKTsKICAgICBzY3JvbGxCZWdpbi5zY2FsZShtX3BhZ2VTY2FsZURlbHRh
KTsKICAgICBmbG9hdCBzY2FsZUJlZ2luID0gbV9wYWdlU2NhbGUgKiBtX3BhZ2VTY2FsZURlbHRh
OwogICAgIGZsb2F0IHBhZ2VTY2FsZURlbHRhVG9TZW5kID0gbV9taW5QYWdlU2NhbGUgLyBtX3Bh
Z2VTY2FsZTsKQEAgLTg3NCw0MSArNzY4LDIxIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6
Y29tcHV0ZVBpbmNoWm9vbURlbHRhcyhDQ1Njcm9sbEFuZFNjYWxlU2V0KiBzY3JvbGxJbmZvCiAK
IHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6bWFrZVNjcm9sbEFuZFNjYWxlU2V0KENDU2Nyb2xs
QW5kU2NhbGVTZXQqIHNjcm9sbEluZm8sIGNvbnN0IEludFNpemUmIHNjcm9sbE9mZnNldCwgZmxv
YXQgcGFnZVNjYWxlKQogewotICAgIGlmICghbV9yb290U2Nyb2xsTGF5ZXJJbXBsKQorICAgIGlm
ICghbV9zY3JvbGxMYXllckltcGwpCiAgICAgICAgIHJldHVybjsKIAogICAgIENDTGF5ZXJUcmVl
SG9zdENvbW1vbjo6U2Nyb2xsVXBkYXRlSW5mbyBzY3JvbGw7Ci0gICAgc2Nyb2xsLmxheWVySWQg
PSBtX3Jvb3RTY3JvbGxMYXllckltcGwtPmlkKCk7Ci0gICAgc2Nyb2xsLnNjcm9sbERlbHRhID0g
c2Nyb2xsT2Zmc2V0IC0gdG9TaXplKG1fcm9vdFNjcm9sbExheWVySW1wbC0+c2Nyb2xsUG9zaXRp
b24oKSk7CisgICAgc2Nyb2xsLmxheWVySWQgPSBtX3Njcm9sbExheWVySW1wbC0+aWQoKTsKKyAg
ICBzY3JvbGwuc2Nyb2xsRGVsdGEgPSBzY3JvbGxPZmZzZXQgLSB0b1NpemUobV9zY3JvbGxMYXll
ckltcGwtPnNjcm9sbFBvc2l0aW9uKCkpOwogICAgIHNjcm9sbEluZm8tPnNjcm9sbHMuYXBwZW5k
KHNjcm9sbCk7Ci0gICAgbV9yb290U2Nyb2xsTGF5ZXJJbXBsLT5zZXRTZW50U2Nyb2xsRGVsdGEo
c2Nyb2xsLnNjcm9sbERlbHRhKTsKKyAgICBtX3Njcm9sbExheWVySW1wbC0+c2V0U2VudFNjcm9s
bERlbHRhKHNjcm9sbC5zY3JvbGxEZWx0YSk7CiAgICAgbV9zZW50UGFnZVNjYWxlRGVsdGEgPSBz
Y3JvbGxJbmZvLT5wYWdlU2NhbGVEZWx0YSA9IHBhZ2VTY2FsZSAvIG1fcGFnZVNjYWxlOwogfQog
Ci1zdGF0aWMgdm9pZCBjb2xsZWN0U2Nyb2xsRGVsdGFzKENDU2Nyb2xsQW5kU2NhbGVTZXQqIHNj
cm9sbEluZm8sIENDTGF5ZXJJbXBsKiBsYXllckltcGwpCi17Ci0gICAgaWYgKCFsYXllckltcGwp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbGF5ZXJJbXBsLT5zY3JvbGxEZWx0YSgpLmlz
WmVybygpKSB7Ci0gICAgICAgIEludFNpemUgc2Nyb2xsRGVsdGEgPSBmbG9vcmVkSW50U2l6ZShs
YXllckltcGwtPnNjcm9sbERlbHRhKCkpOwotICAgICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246
OlNjcm9sbFVwZGF0ZUluZm8gc2Nyb2xsOwotICAgICAgICBzY3JvbGwubGF5ZXJJZCA9IGxheWVy
SW1wbC0+aWQoKTsKLSAgICAgICAgc2Nyb2xsLnNjcm9sbERlbHRhID0gc2Nyb2xsRGVsdGE7Ci0g
ICAgICAgIHNjcm9sbEluZm8tPnNjcm9sbHMuYXBwZW5kKHNjcm9sbCk7Ci0gICAgICAgIGxheWVy
SW1wbC0+c2V0U2VudFNjcm9sbERlbHRhKHNjcm9sbERlbHRhKTsKLSAgICB9Ci0KLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGxheWVySW1wbC0+Y2hpbGRyZW4oKS5zaXplKCk7ICsraSkKLSAg
ICAgICAgY29sbGVjdFNjcm9sbERlbHRhcyhzY3JvbGxJbmZvLCBsYXllckltcGwtPmNoaWxkcmVu
KClbaV0uZ2V0KCkpOwotfQotCiBQYXNzT3duUHRyPENDU2Nyb2xsQW5kU2NhbGVTZXQ+IENDTGF5
ZXJUcmVlSG9zdEltcGw6OnByb2Nlc3NTY3JvbGxEZWx0YXMoKQogewogICAgIE93blB0cjxDQ1Nj
cm9sbEFuZFNjYWxlU2V0PiBzY3JvbGxJbmZvID0gYWRvcHRQdHIobmV3IENDU2Nyb2xsQW5kU2Nh
bGVTZXQoKSk7Ci0gICAgY29sbGVjdFNjcm9sbERlbHRhcyhzY3JvbGxJbmZvLmdldCgpLCBtX3Jv
b3RMYXllckltcGwuZ2V0KCkpOwotCi0gICAgYm9vbCBkaWRNb3ZlID0gc2Nyb2xsSW5mby0+c2Ny
b2xscy5zaXplKCkgfHwgbV9wYWdlU2NhbGVEZWx0YSAhPSAxOworICAgIGJvb2wgZGlkTW92ZSA9
IG1fc2Nyb2xsTGF5ZXJJbXBsICYmICghbV9zY3JvbGxMYXllckltcGwtPnNjcm9sbERlbHRhKCku
aXNaZXJvKCkgfHwgbV9wYWdlU2NhbGVEZWx0YSAhPSAxLjBmKTsKICAgICBpZiAoIWRpZE1vdmUg
fHwgbV9waW5jaEdlc3R1cmVBY3RpdmUgfHwgbV9wYWdlU2NhbGVBbmltYXRpb24pIHsKICAgICAg
ICAgbV9zZW50UGFnZVNjYWxlRGVsdGEgPSBzY3JvbGxJbmZvLT5wYWdlU2NhbGVEZWx0YSA9IDE7
CiAgICAgICAgIGlmIChtX3BpbmNoR2VzdHVyZUFjdGl2ZSkKQEAgLTkyMCw2ICs3OTQsMTQgQEAg
UGFzc093blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpwcm9j
ZXNzU2Nyb2xsRGVsdGFzKCkKIAogICAgIG1fc2VudFBhZ2VTY2FsZURlbHRhID0gc2Nyb2xsSW5m
by0+cGFnZVNjYWxlRGVsdGEgPSBtX3BhZ2VTY2FsZURlbHRhOwogCisgICAgLy8gRklYTUU6IHRy
YWNrIHNjcm9sbHMgZnJvbSBsYXllcnMgb3RoZXIgdGhhbiB0aGUgcm9vdAorICAgIENDTGF5ZXJU
cmVlSG9zdENvbW1vbjo6U2Nyb2xsVXBkYXRlSW5mbyBzY3JvbGw7CisgICAgc2Nyb2xsLmxheWVy
SWQgPSBtX3Njcm9sbExheWVySW1wbC0+aWQoKTsKKyAgICBzY3JvbGwuc2Nyb2xsRGVsdGEgPSBm
bG9vcmVkSW50U2l6ZShtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsRGVsdGEoKSk7CisgICAgc2Ny
b2xsSW5mby0+c2Nyb2xscy5hcHBlbmQoc2Nyb2xsKTsKKworICAgIG1fc2Nyb2xsTGF5ZXJJbXBs
LT5zZXRTZW50U2Nyb2xsRGVsdGEoc2Nyb2xsLnNjcm9sbERlbHRhKTsKKwogICAgIHJldHVybiBz
Y3JvbGxJbmZvLnJlbGVhc2UoKTsKIH0KIApAQCAtOTM0LDE1ICs4MTYsMTUgQEAgdm9pZCBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpzZXRGdWxsUm9vdExheWVyRGFtYWdlKCkKIAogdm9pZCBDQ0xheWVy
VHJlZUhvc3RJbXBsOjphbmltYXRlUGFnZVNjYWxlKGRvdWJsZSBtb25vdG9uaWNUaW1lKQogewot
ICAgIGlmICghbV9wYWdlU2NhbGVBbmltYXRpb24gfHwgIW1fcm9vdFNjcm9sbExheWVySW1wbCkK
KyAgICBpZiAoIW1fcGFnZVNjYWxlQW5pbWF0aW9uIHx8ICFtX3Njcm9sbExheWVySW1wbCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgSW50U2l6ZSBzY3JvbGxUb3RhbCA9IGZsb29yZWRJbnRTaXpl
KG1fcm9vdFNjcm9sbExheWVySW1wbC0+c2Nyb2xsUG9zaXRpb24oKSArIG1fcm9vdFNjcm9sbExh
eWVySW1wbC0+c2Nyb2xsRGVsdGEoKSk7CisgICAgSW50U2l6ZSBzY3JvbGxUb3RhbCA9IGZsb29y
ZWRJbnRTaXplKG1fc2Nyb2xsTGF5ZXJJbXBsLT5zY3JvbGxQb3NpdGlvbigpICsgbV9zY3JvbGxM
YXllckltcGwtPnNjcm9sbERlbHRhKCkpOwogCiAgICAgc2V0UGFnZVNjYWxlRGVsdGEobV9wYWdl
U2NhbGVBbmltYXRpb24tPnBhZ2VTY2FsZUF0VGltZShtb25vdG9uaWNUaW1lKSAvIG1fcGFnZVNj
YWxlKTsKICAgICBJbnRTaXplIG5leHRTY3JvbGwgPSBtX3BhZ2VTY2FsZUFuaW1hdGlvbi0+c2Ny
b2xsT2Zmc2V0QXRUaW1lKG1vbm90b25pY1RpbWUpOwogICAgIG5leHRTY3JvbGwuc2NhbGUoMSAv
IG1fcGFnZVNjYWxlRGVsdGEpOwotICAgIG1fcm9vdFNjcm9sbExheWVySW1wbC0+c2Nyb2xsQnko
bmV4dFNjcm9sbCAtIHNjcm9sbFRvdGFsKTsKKyAgICBtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xs
QnkobmV4dFNjcm9sbCAtIHNjcm9sbFRvdGFsKTsKICAgICBtX2NsaWVudC0+c2V0TmVlZHNSZWRy
YXdPbkltcGxUaHJlYWQoKTsKIAogICAgIGlmIChtX3BhZ2VTY2FsZUFuaW1hdGlvbi0+aXNBbmlt
YXRpb25Db21wbGV0ZUF0VGltZShtb25vdG9uaWNUaW1lKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oCmluZGV4IDQ0ZTg5YTA4YzkzZmJiNDJiMTBlYjc5ZjVmODhhMjk3MWU4
ODYwMDguLmRkZTI3ZjY4YmExOGY0ZTE5YjFkM2E2MzE5YjEwNTY3ZTFhNmI3MTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTEzMywxMCArMTMzLDEwIEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlYWRiYWNrKHZvaWQqIHBpeGVscywgY29uc3QgSW50UmVjdCYpOwogCiAg
ICAgdm9pZCBzZXRSb290TGF5ZXIoUGFzc093blB0cjxDQ0xheWVySW1wbD4pOwotICAgIFBhc3NP
d25QdHI8Q0NMYXllckltcGw+IHJlbGVhc2VSb290TGF5ZXIoKTsKKyAgICBQYXNzT3duUHRyPEND
TGF5ZXJJbXBsPiByZWxlYXNlUm9vdExheWVyKCkgeyByZXR1cm4gbV9yb290TGF5ZXJJbXBsLnJl
bGVhc2UoKTsgfQogICAgIENDTGF5ZXJJbXBsKiByb290TGF5ZXIoKSB7IHJldHVybiBtX3Jvb3RM
YXllckltcGwuZ2V0KCk7IH0KIAotICAgIENDTGF5ZXJJbXBsKiByb290U2Nyb2xsTGF5ZXIoKSBj
b25zdCB7IHJldHVybiBtX3Jvb3RTY3JvbGxMYXllckltcGw7IH0KKyAgICBDQ0xheWVySW1wbCog
c2Nyb2xsTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbExheWVySW1wbDsgfQogCiAgICAg
Ym9vbCB2aXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlOyB9CiAgICAgdm9pZCBzZXRW
aXNpYmxlKGJvb2wpOwpAQCAtMTgzLDYgKzE4Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYWtl
U2Nyb2xsQW5kU2NhbGVTZXQoQ0NTY3JvbGxBbmRTY2FsZVNldCogc2Nyb2xsSW5mbywgY29uc3Qg
SW50U2l6ZSYgc2Nyb2xsT2Zmc2V0LCBmbG9hdCBwYWdlU2NhbGUpOwogCiAgICAgdm9pZCBzZXRQ
YWdlU2NhbGVEZWx0YShmbG9hdCk7CisgICAgdm9pZCBhcHBseVBhZ2VTY2FsZURlbHRhVG9TY3Jv
bGxMYXllcigpOworICAgIHZvaWQgYWRqdXN0U2Nyb2xsc0ZvclBhZ2VTY2FsZUNoYW5nZShmbG9h
dCk7CiAgICAgdm9pZCB1cGRhdGVNYXhTY3JvbGxQb3NpdGlvbigpOwogICAgIHZvaWQgdHJhY2tE
YW1hZ2VGb3JBbGxTdXJmYWNlcyhDQ0xheWVySW1wbCogcm9vdERyYXdMYXllciwgY29uc3QgQ0NM
YXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIHZvaWQgY2FsY3VsYXRlUmVu
ZGVyU3VyZmFjZUxheWVyTGlzdChDQ0xheWVyTGlzdCYpOwpAQCAtMTk1LDE1ICsxOTcsMTIgQEAg
cHJpdmF0ZToKICAgICBJbnRTaXplIGNvbnRlbnRTaXplKCkgY29uc3Q7CiAgICAgdm9pZCBzZW5k
RGlkTG9zZUNvbnRleHRSZWN1cnNpdmUoQ0NMYXllckltcGwqKTsKICAgICB2b2lkIGNsZWFyUmVu
ZGVyU3VyZmFjZXNPbkNDTGF5ZXJJbXBsUmVjdXJzaXZlKENDTGF5ZXJJbXBsKik7Ci0gICAgYm9v
bCBlbnN1cmVNb3N0UmVjZW50UmVuZGVyU3VyZmFjZUxheWVyTGlzdCgpOwogCiAgICAgdm9pZCBk
dW1wUmVuZGVyU3VyZmFjZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQsIGNvbnN0IENDTGF5ZXJJ
bXBsKikgY29uc3Q7CiAKICAgICBPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBtX2xheWVy
UmVuZGVyZXI7CiAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBtX3Jvb3RMYXllckltcGw7Ci0gICAg
Q0NMYXllckltcGwqIG1fcm9vdFNjcm9sbExheWVySW1wbDsKLSAgICBDQ0xheWVySW1wbCogbV9j
dXJyZW50bHlTY3JvbGxpbmdMYXllckltcGw7Ci0gICAgaW50IG1fc2Nyb2xsaW5nTGF5ZXJJZEZy
b21QcmV2aW91c1RyZWU7CisgICAgQ0NMYXllckltcGwqIG1fc2Nyb2xsTGF5ZXJJbXBsOwogICAg
IENDU2V0dGluZ3MgbV9zZXR0aW5nczsKICAgICBJbnRTaXplIG1fdmlld3BvcnRTaXplOwogICAg
IGJvb2wgbV92aXNpYmxlOwpAQCAtMjMwLDkgKzIyOSw2IEBAIHByaXZhdGU6CiAKICAgICBDQ0xh
eWVyU29ydGVyIG1fbGF5ZXJTb3J0ZXI7CiAKLSAgICAvLyBMaXN0IG9mIHZpc2libGUgbGF5ZXJz
IGluIHRoZSBtb3N0IHJlY2VudCBmcmFtZS4gVXNlZCBmb3IgaW5wdXQgZXZlbnQgaGl0IHRlc3Rp
bmcuCi0gICAgQ0NMYXllckxpc3QgbV9tb3N0UmVjZW50UmVuZGVyU3VyZmFjZUxheWVyTGlzdDsK
LQogICAgIEZsb2F0UmVjdCBtX3Jvb3REYW1hZ2VSZWN0OwogCiAgICAgT3duUHRyPENDRnJhbWVS
YXRlQ291bnRlcj4gbV9mcHNDb3VudGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViQ29udGVudExheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmNwcAppbmRleCA5ZDYxM2EzYWNhOTkxYzk5NWRlMzk3
NDg3MjRjNzFmY2JhOTQyZTk3Li40ZjY0ZDU0NzFlMzk2NjUwZjdjYTc1ZTllMTYyNWM2NmQ3MmYx
MWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5
ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5
ZXJJbXBsLmNwcApAQCAtNzIsOCArNzIsNCBAQCB2b2lkIFdlYkNvbnRlbnRMYXllckltcGw6OnBh
aW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBnYywgY29uc3QgSW50UmVjdCYgY2xpcAogICAg
IG1fY29udGVudENsaWVudC0+cGFpbnRDb250ZW50cyhjYW52YXMsIFdlYlJlY3QoY2xpcCkpOwog
fQogCi12b2lkIFdlYkNvbnRlbnRMYXllckltcGw6OmRpZFNjcm9sbChjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJikKLXsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmgKaW5kZXggMWJhODg0YzliMzU3
ZWJmMzg3ZWRmZjM0OWY2NTZlYWZhNjZhZTFlYy4uNTFmMzQ0ZjdjYWYxMjcxMTI2YWM3YjQyNjhl
ZDU0NjEyMTQyMTlkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Q29udGVudExheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNv
bnRlbnRMYXllckltcGwuaApAQCAtNDQsNyArNDQsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICAvLyBD
b250ZW50TGF5ZXJEZWxlZ2F0ZSBpbXBsZW1lbnRhdGlvbi4KICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRDb250ZW50cyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBjbGlwKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU2Nyb2xsKGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmKTsKIAogICAgIFdlYkNvbnRlbnRMYXllckNsaWVudCogbV9jb250ZW50Q2xpZW50Owog
ICAgIGJvb2wgbV9kcmF3c0NvbnRlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LmNwcAppbmRleCBlNDM2NDQ1
YTM1ODk4ZjVlZDA5NWVmN2U2NzkzMmQxMGJkNDEwM2Y4Li41MWEwMzI2MThkNTM4NTc1MGQ1NTBk
N2VhZTZmOWIwNmY2N2I1MWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdC5jcHAKQEAgLTEzMjUsMjggKzEz
MjUsNiBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeUJhY2tGYWNlQ3Vs
bGluZykKICAgICBFWFBFQ1RfVFJVRShjaGlsZE9mQW5pbWF0aW5nU3VyZmFjZS0+dmlzaWJsZUxh
eWVyUmVjdCgpLmlzRW1wdHkoKSk7CiB9CiAKLVRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVz
dCwgdmVyaWZ5U3VidHJlZVNlYXJjaCkKLXsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcm9v
dCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBj
aGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBncmFuZENoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVy
Q2hyb21pdW0+IG1hc2tMYXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0
cjxMYXllckNocm9taXVtPiByZXBsaWNhTGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsK
LQotICAgIGdyYW5kQ2hpbGQtPnNldFJlcGxpY2FMYXllcihyZXBsaWNhTGF5ZXIuZ2V0KCkpOwot
ICAgIGNoaWxkLT5hZGRDaGlsZChncmFuZENoaWxkLmdldCgpKTsKLSAgICBjaGlsZC0+c2V0TWFz
a0xheWVyKG1hc2tMYXllci5nZXQoKSk7Ci0gICAgcm9vdC0+YWRkQ2hpbGQoY2hpbGQuZ2V0KCkp
OwotCi0gICAgaW50IG5vbmV4aXN0ZW50SWQgPSAtMTsKLSAgICBFWFBFQ1RfRVEocm9vdCwgQ0NM
YXllclRyZWVIb3N0Q29tbW9uOjpmaW5kTGF5ZXJJblN1YnRyZWUocm9vdC5nZXQoKSwgcm9vdC0+
aWQoKSkpOwotICAgIEVYUEVDVF9FUShjaGlsZCwgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpmaW5k
TGF5ZXJJblN1YnRyZWUocm9vdC5nZXQoKSwgY2hpbGQtPmlkKCkpKTsKLSAgICBFWFBFQ1RfRVEo
Z3JhbmRDaGlsZCwgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpmaW5kTGF5ZXJJblN1YnRyZWUocm9v
dC5nZXQoKSwgZ3JhbmRDaGlsZC0+aWQoKSkpOwotICAgIEVYUEVDVF9FUShtYXNrTGF5ZXIsIEND
TGF5ZXJUcmVlSG9zdENvbW1vbjo6ZmluZExheWVySW5TdWJ0cmVlKHJvb3QuZ2V0KCksIG1hc2tM
YXllci0+aWQoKSkpOwotICAgIEVYUEVDVF9FUShyZXBsaWNhTGF5ZXIsIENDTGF5ZXJUcmVlSG9z
dENvbW1vbjo6ZmluZExheWVySW5TdWJ0cmVlKHJvb3QuZ2V0KCksIHJlcGxpY2FMYXllci0+aWQo
KSkpOwotICAgIEVYUEVDVF9FUSgwLCBDQ0xheWVyVHJlZUhvc3RDb21tb246OmZpbmRMYXllcklu
U3VidHJlZShyb290LmdldCgpLCBub25leGlzdGVudElkKSk7Ci19Ci0KIC8vIEZJWE1FOgogLy8g
Y29udGludWUgd29ya2luZyBvbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Njg5NDIKIC8vICAtIGFkZCBhIHRlc3QgdG8gdmVyaWZ5IGNsaXBwaW5nIHRoYXQgY2hhbmdl
cyB0aGUgImNlbnRlciBwb2ludCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggNTM5NmFkMTI5MDA4MTNk
YjUyYmFiZTJhMDM4MzgxMTBkZTk2YWFiMi4uZmYyNDk3MDg1MGQ1NGU4ZWJmNmM3OGFlMjMxZGQx
NmZlODAyYmJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTEwNCwyNiArMTA0LDYgQEAgcHVibGlj
OgogICAgICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdC5yZWxlYXNlKCkpOwogICAg
IH0KIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVTY3JvbGxhYmxl
TGF5ZXIoaW50IGlkLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50U2l6ZSYg
c2l6ZSkKLSAgICB7Ci0gICAgICAgIE93blB0cjxDQ0xheWVySW1wbD4gbGF5ZXIgPSBDQ0xheWVy
SW1wbDo6Y3JlYXRlKGlkKTsKLSAgICAgICAgbGF5ZXItPnNldFNjcm9sbGFibGUodHJ1ZSk7Ci0g
ICAgICAgIGxheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7Ci0gICAgICAgIGxheWVyLT5zZXRQ
b3NpdGlvbihwb3NpdGlvbik7Ci0gICAgICAgIGxheWVyLT5zZXRCb3VuZHMoc2l6ZSk7Ci0gICAg
ICAgIGxheWVyLT5zZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRTaXplKHNpemUud2lkdGgoKSAqIDIs
IHNpemUuaGVpZ2h0KCkgKiAyKSk7Ci0gICAgICAgIHJldHVybiBsYXllci5yZWxlYXNlKCk7Ci0g
ICAgfQotCi0gICAgdm9pZCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlckFuZERyYXdGcmFtZSgpCi0g
ICAgewotICAgICAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVD
b250ZXh0KCkpOwotICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7
Ci0gICAgICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsK
LSAgICAgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7Ci0gICAgICAgIG1faG9zdElt
cGwtPmRpZERyYXdBbGxMYXllcnMoZnJhbWUpOwotICAgIH0KLQogcHJvdGVjdGVkOgogICAgIFBh
c3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUNvbnRleHQoKQogICAgIHsKQEAgLTIw
NywxMiArMTg3LDEwIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsUm9v
dENhbGxzQ29tbWl0QW5kUmVkcmF3KQogewogICAgIHsKICAgICAgICAgT3duUHRyPENDTGF5ZXJJ
bXBsPiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgwKTsKLSAgICAgICAgcm9vdC0+c2V0Vmlz
aWJsZUxheWVyUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CiAgICAgICAgIHJvb3QtPnNl
dFNjcm9sbGFibGUodHJ1ZSk7CiAgICAgICAgIHJvb3QtPnNldFNjcm9sbFBvc2l0aW9uKEludFBv
aW50KDAsIDApKTsKICAgICAgICAgcm9vdC0+c2V0TWF4U2Nyb2xsUG9zaXRpb24oSW50U2l6ZSgx
MDAsIDEwMCkpOwogICAgICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdC5yZWxlYXNl
KCkpOwotICAgICAgICBpbml0aWFsaXplTGF5ZXJSZW5kZXJlckFuZERyYXdGcmFtZSgpOwogICAg
IH0KIAogICAgIEVYUEVDVF9FUShtX2hvc3RJbXBsLT5zY3JvbGxCZWdpbihJbnRQb2ludCgwLCAw
KSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OldoZWVsKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNj
cm9sbFN0YXJ0ZWQpOwpAQCAtMjIyLDU0ICsyMDAsMTQgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LCBzY3JvbGxSb290Q2FsbHNDb21taXRBbmRSZWRyYXcpCiAgICAgRVhQRUNUX1RS
VUUobV9kaWRSZXF1ZXN0Q29tbWl0KTsKIH0KIAotVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LCBzY3JvbGxXaXRob3V0Um9vdExheWVyKQotewotICAgIC8vIFdlIHNob3VsZCBub3QgY3Jh
c2ggd2hlbiB0cnlpbmcgdG8gc2Nyb2xsIGFuIGVtcHR5IGxheWVyIHRyZWUuCi0gICAgRVhQRUNU
X0VRKG1faG9zdEltcGwtPnNjcm9sbEJlZ2luKEludFBvaW50KDAsIDApLCBDQ0lucHV0SGFuZGxl
ckNsaWVudDo6V2hlZWwpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsSWdub3JlZCk7Ci19
Ci0KLVRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcmVwbGFjZVRyZWVXaGlsZVNjcm9s
bGluZykKLXsKLSAgICBpbnQgbGF5ZXJJZCA9IDc7Ci0gICAgewotICAgICAgICBPd25QdHI8Q0NM
YXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKGxheWVySWQpOwotICAgICAgICBy
b290LT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAxMDApKTsKLSAgICAg
ICAgcm9vdC0+c2V0U2Nyb2xsYWJsZSh0cnVlKTsKLSAgICAgICAgcm9vdC0+c2V0TWF4U2Nyb2xs
UG9zaXRpb24oSW50U2l6ZSgxMDAsIDEwMCkpOwotICAgICAgICBtX2hvc3RJbXBsLT5zZXRSb290
TGF5ZXIocm9vdC5yZWxlYXNlKCkpOwotICAgICAgICBpbml0aWFsaXplTGF5ZXJSZW5kZXJlckFu
ZERyYXdGcmFtZSgpOwotICAgIH0KLQotICAgIC8vIFdlIHNob3VsZCBub3QgY3Jhc2ggaWYgdGhl
IHRyZWUgaXMgcmVwbGFjZWQgd2hpbGUgd2UgYXJlIHNjcm9sbGluZy4KLSAgICBFWFBFQ1RfRVEo
bV9ob3N0SW1wbC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQoMCwgMCksIENDSW5wdXRIYW5kbGVyQ2xp
ZW50OjpXaGVlbCksIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKTsKLSAgICBt
X2hvc3RJbXBsLT5yZWxlYXNlUm9vdExheWVyKCk7Ci0KLSAgICB7Ci0gICAgICAgIE93blB0cjxD
Q0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUobGF5ZXJJZCk7Ci0gICAgICAg
IHJvb3QtPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwotICAg
ICAgICByb290LT5zZXRTY3JvbGxhYmxlKHRydWUpOwotICAgICAgICByb290LT5zZXRNYXhTY3Jv
bGxQb3NpdGlvbihJbnRTaXplKDEwMCwgMTAwKSk7Ci0gICAgICAgIG1faG9zdEltcGwtPnNldFJv
b3RMYXllcihyb290LnJlbGVhc2UoKSk7Ci0gICAgfQotCi0gICAgLy8gV2Ugc2hvdWxkIHN0aWxs
IGJlIHNjcm9sbGluZywgYmVjYXVzZSB0aGUgc2Nyb2xsZWQgbGF5ZXIgYWxzbyBleGlzdHMgaW4g
dGhlIG5ldyB0cmVlLgotICAgIEludFNpemUgc2Nyb2xsRGVsdGEoMCwgMTApOwotICAgIG1faG9z
dEltcGwtPnNjcm9sbEJ5KHNjcm9sbERlbHRhKTsKLSAgICBtX2hvc3RJbXBsLT5zY3JvbGxFbmQo
KTsKLSAgICBPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4gc2Nyb2xsSW5mbyA9IG1faG9zdElt
cGwtPnByb2Nlc3NTY3JvbGxEZWx0YXMoKTsKLSAgICBleHBlY3RDb250YWlucygqc2Nyb2xsSW5m
bywgbGF5ZXJJZCwgc2Nyb2xsRGVsdGEpOwotfQotCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QsIHdoZWVsRXZlbnRIYW5kbGVycykKIHsKICAgICB7CiAgICAgICAgIE93blB0cjxDQ0xh
eWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCk7Ci0gICAgICAgIHJvb3QtPnNl
dFZpc2libGVMYXllclJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogICAgICAgICByb290
LT5zZXRTY3JvbGxhYmxlKHRydWUpOwogICAgICAgICByb290LT5zZXRTY3JvbGxQb3NpdGlvbihJ
bnRQb2ludCgwLCAwKSk7CiAgICAgICAgIHJvb3QtPnNldE1heFNjcm9sbFBvc2l0aW9uKEludFNp
emUoMTAwLCAxMDApKTsKICAgICAgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QucmVs
ZWFzZSgpKTsKLSAgICAgICAgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJBbmREcmF3RnJhbWUoKTsK
ICAgICB9CiAgICAgQ0NMYXllckltcGwqIHJvb3QgPSBtX2hvc3RJbXBsLT5yb290TGF5ZXIoKTsK
IApAQCAtMjg0LDE0ICsyMjIsMTEgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB3
aGVlbEV2ZW50SGFuZGxlcnMpCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNob3Vs
ZFNjcm9sbE9uTWFpblRocmVhZCkKIHsKICAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBD
Q0xheWVySW1wbDo6Y3JlYXRlKDApOwotICAgIHJvb3QtPnNldFZpc2libGVMYXllclJlY3QoSW50
UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogICAgIHJvb3QtPnNldFNjcm9sbGFibGUodHJ1ZSk7CiAg
ICAgcm9vdC0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoMCwgMCkpOwogICAgIHJvb3QtPnNl
dE1heFNjcm9sbFBvc2l0aW9uKEludFNpemUoMTAwLCAxMDApKTsKICAgICByb290LT5zZXRTaG91
bGRTY3JvbGxPbk1haW5UaHJlYWQodHJ1ZSk7CiAgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVy
KHJvb3QucmVsZWFzZSgpKTsKLSAgICBpbml0aWFsaXplTGF5ZXJSZW5kZXJlckFuZERyYXdGcmFt
ZSgpOwotCiAgICAgRVhQRUNUX0VRKG1faG9zdEltcGwtPnNjcm9sbEJlZ2luKEludFBvaW50KDAs
IDApLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6V2hlZWwpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6
U2Nyb2xsRmFpbGVkKTsKICAgICBFWFBFQ1RfRVEobV9ob3N0SW1wbC0+c2Nyb2xsQmVnaW4oSW50
UG9pbnQoMCwgMCksIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpHZXN0dXJlKSwgQ0NJbnB1dEhhbmRs
ZXJDbGllbnQ6OlNjcm9sbEZhaWxlZCk7CiB9CkBAIC0yOTksMTQgKzIzNCwxMSBAQCBURVNUX0Yo
Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNob3VsZFNjcm9sbE9uTWFpblRocmVhZCkKIFRFU1Rf
RihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgbm9uRmFzdFNjcm9sbGFibGVSZWdpb25CYXNpYykK
IHsKICAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDAp
OwotICAgIHJvb3QtPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkp
OwogICAgIHJvb3QtPnNldFNjcm9sbGFibGUodHJ1ZSk7CiAgICAgcm9vdC0+c2V0U2Nyb2xsUG9z
aXRpb24oSW50UG9pbnQoMCwgMCkpOwogICAgIHJvb3QtPnNldE1heFNjcm9sbFBvc2l0aW9uKElu
dFNpemUoMTAwLCAxMDApKTsKICAgICByb290LT5zZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihJ
bnRSZWN0KDAsIDAsIDUwLCA1MCkpOwogICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihyb290
LnJlbGVhc2UoKSk7Ci0gICAgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJBbmREcmF3RnJhbWUoKTsK
LQogICAgIC8vIEFsbCBzY3JvbGwgdHlwZXMgaW5zaWRlIHRoZSBub24tZmFzdCBzY3JvbGxhYmxl
IHJlZ2lvbiBzaG91bGQgZmFpbC4KICAgICBFWFBFQ1RfRVEobV9ob3N0SW1wbC0+c2Nyb2xsQmVn
aW4oSW50UG9pbnQoMjUsIDI1KSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OldoZWVsKSwgQ0NJbnB1
dEhhbmRsZXJDbGllbnQ6OlNjcm9sbEZhaWxlZCk7CiAgICAgRVhQRUNUX0VRKG1faG9zdEltcGwt
PnNjcm9sbEJlZ2luKEludFBvaW50KDI1LCAyNSksIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpHZXN0
dXJlKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbEZhaWxlZCk7CkBAIC0zMjIsMTYgKzI1
NCwxOCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIG5vbkZhc3RTY3JvbGxhYmxl
UmVnaW9uQmFzaWMpCiAKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgbm9uRmFzdFNj
cm9sbGFibGVSZWdpb25XaXRoT2Zmc2V0KQogeworICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVM
YXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSk7CisKICAgICBPd25QdHI8Q0NMYXllckltcGw+
IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDApOwotICAgIHJvb3QtPnNldEJvdW5kcyhJbnRT
aXplKDEsIDEpKTsKLSAgICByb290LT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoMCwgMCwg
MTAwLCAxMDApKTsKICAgICByb290LT5zZXRTY3JvbGxhYmxlKHRydWUpOwogICAgIHJvb3QtPnNl
dFNjcm9sbFBvc2l0aW9uKEludFBvaW50KDAsIDApKTsKICAgICByb290LT5zZXRNYXhTY3JvbGxQ
b3NpdGlvbihJbnRTaXplKDEwMCwgMTAwKSk7CiAgICAgcm9vdC0+c2V0Tm9uRmFzdFNjcm9sbGFi
bGVSZWdpb24oSW50UmVjdCgwLCAwLCA1MCwgNTApKTsKICAgICByb290LT5zZXRQb3NpdGlvbihG
bG9hdFBvaW50KC0yNSwgMCkpOwogICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihyb290LnJl
bGVhc2UoKSk7Ci0gICAgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJBbmREcmF3RnJhbWUoKTsKKyAg
ICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CisgICAgRVhQRUNUX1RSVUUo
bV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIG1faG9zdEltcGwtPmRyYXdM
YXllcnMoZnJhbWUpOyAvLyBVcGRhdGUgZHJhdyB0cmFuc2Zvcm1zIHNvIHdlIGNhbiBjb3JyZWN0
bHkgbWFwIHBvaW50cyBpbnRvIGxheWVyIHNwYWNlLgogCiAgICAgLy8gVGhpcyBwb2ludCB3b3Vs
ZCBmYWxsIGludG8gdGhlIG5vbi1mYXN0IHNjcm9sbGFibGUgcmVnaW9uIGV4Y2VwdCB0aGF0IHdl
J3ZlIG1vdmVkIHRoZSBsYXllciBkb3duIGJ5IDI1IHBpeGVscy4KICAgICBFWFBFQ1RfRVEobV9o
b3N0SW1wbC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQoNDAsIDEwKSwgQ0NJbnB1dEhhbmRsZXJDbGll
bnQ6OldoZWVsKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpOwpAQCAtMzQ2
LDkgKzI4MCw4IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcGluY2hHZXN0dXJl
KQogewogICAgIHNldHVwU2Nyb2xsQW5kQ29udGVudHNMYXllcnMoSW50U2l6ZSgxMDAsIDEwMCkp
OwogICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDUwLCA1MCkpOwotICAg
IGluaXRpYWxpemVMYXllclJlbmRlcmVyQW5kRHJhd0ZyYW1lKCk7CiAKLSAgICBDQ0xheWVySW1w
bCogc2Nyb2xsTGF5ZXIgPSBtX2hvc3RJbXBsLT5yb290U2Nyb2xsTGF5ZXIoKTsKKyAgICBDQ0xh
eWVySW1wbCogc2Nyb2xsTGF5ZXIgPSBtX2hvc3RJbXBsLT5zY3JvbGxMYXllcigpOwogICAgIEFT
U0VSVChzY3JvbGxMYXllcik7CiAKICAgICBjb25zdCBmbG9hdCBtaW5QYWdlU2NhbGUgPSAwLjUs
IG1heFBhZ2VTY2FsZSA9IDQ7CkBAIC00MjcsOSArMzYwLDggQEAgVEVTVF9GKENDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LCBwYWdlU2NhbGVBbmltYXRpb24pCiB7CiAgICAgc2V0dXBTY3JvbGxBbmRD
b250ZW50c0xheWVycyhJbnRTaXplKDEwMCwgMTAwKSk7CiAgICAgbV9ob3N0SW1wbC0+c2V0Vmll
d3BvcnRTaXplKEludFNpemUoNTAsIDUwKSk7Ci0gICAgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJB
bmREcmF3RnJhbWUoKTsKIAotICAgIENDTGF5ZXJJbXBsKiBzY3JvbGxMYXllciA9IG1faG9zdElt
cGwtPnJvb3RTY3JvbGxMYXllcigpOworICAgIENDTGF5ZXJJbXBsKiBzY3JvbGxMYXllciA9IG1f
aG9zdEltcGwtPnNjcm9sbExheWVyKCk7CiAgICAgQVNTRVJUKHNjcm9sbExheWVyKTsKIAogICAg
IGNvbnN0IGZsb2F0IG1pblBhZ2VTY2FsZSA9IDAuNSwgbWF4UGFnZVNjYWxlID0gNDsKQEAgLTY0
NSwyNzAgKzU3Nyw2IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcHJlcGFyZVRv
RHJhd0ZhaWxzV2hlbkFuaW1hdGlvblVzZXNDaGVja2VyYm9hcmQpCiAgICAgbV9ob3N0SW1wbC0+
ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7CiB9CiAKLVRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdCwgc2Nyb2xsUm9vdElnbm9yZWQpCi17Ci0gICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290
ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgwKTsKLSAgICByb290LT5zZXRTY3JvbGxhYmxlKGZhbHNl
KTsKLSAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdC5yZWxlYXNlKCkpOwotICAgIGlu
aXRpYWxpemVMYXllclJlbmRlcmVyQW5kRHJhd0ZyYW1lKCk7Ci0KLSAgICAvLyBTY3JvbGwgZXZl
bnQgaXMgaWdub3JlZCBiZWNhdXNlIGxheWVyIGlzIG5vdCBzY3JvbGxhYmxlLgotICAgIEVYUEVD
VF9FUShtX2hvc3RJbXBsLT5zY3JvbGxCZWdpbihJbnRQb2ludCgwLCAwKSwgQ0NJbnB1dEhhbmRs
ZXJDbGllbnQ6OldoZWVsKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbElnbm9yZWQpOwot
ICAgIEVYUEVDVF9GQUxTRShtX2RpZFJlcXVlc3RSZWRyYXcpOwotICAgIEVYUEVDVF9GQUxTRSht
X2RpZFJlcXVlc3RDb21taXQpOwotfQotCi1URVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3Qs
IHNjcm9sbE5vbkNvbXBvc2l0ZWRSb290KQotewotICAgIC8vIFRlc3QgdGhlIGNvbmZpZ3VyYXRp
b24gd2hlcmUgYSBub24tY29tcG9zaXRlZCByb290IGxheWVyIGlzIGVtYmVkZGVkIGluIGEKLSAg
ICAvLyBzY3JvbGxhYmxlIG91dGVyIGxheWVyLgotICAgIEludFNpemUgc3VyZmFjZVNpemUoMTAs
IDEwKTsKLQotICAgIE93blB0cjxDQ0xheWVySW1wbD4gY29udGVudExheWVyID0gQ0NMYXllcklt
cGw6OmNyZWF0ZSgxKTsKLSAgICBjb250ZW50TGF5ZXItPnNldElzTm9uQ29tcG9zaXRlZENvbnRl
bnQodHJ1ZSk7Ci0gICAgY29udGVudExheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7Ci0gICAg
Y29udGVudExheWVyLT5zZXRQb3NpdGlvbihJbnRQb2ludCg1LCA1KSk7Ci0gICAgY29udGVudExh
eWVyLT5zZXRCb3VuZHMoc3VyZmFjZVNpemUpOwotICAgIGNvbnRlbnRMYXllci0+c2V0Q29udGVu
dEJvdW5kcyhJbnRTaXplKHN1cmZhY2VTaXplLndpZHRoKCkgKiAyLCBzdXJmYWNlU2l6ZS5oZWln
aHQoKSAqIDIpKTsKLQotICAgIE93blB0cjxDQ0xheWVySW1wbD4gc2Nyb2xsTGF5ZXIgPSBDQ0xh
eWVySW1wbDo6Y3JlYXRlKDApOwotICAgIHNjcm9sbExheWVyLT5zZXRTY3JvbGxhYmxlKHRydWUp
OwotICAgIHNjcm9sbExheWVyLT5hZGRDaGlsZChjb250ZW50TGF5ZXIucmVsZWFzZSgpKTsKLQot
ICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihzY3JvbGxMYXllci5yZWxlYXNlKCkpOwotICAg
IG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShzdXJmYWNlU2l6ZSk7Ci0gICAgaW5pdGlhbGl6
ZUxheWVyUmVuZGVyZXJBbmREcmF3RnJhbWUoKTsKLQotICAgIEVYUEVDVF9FUShtX2hvc3RJbXBs
LT5zY3JvbGxCZWdpbihJbnRQb2ludCg1LCA1KSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OldoZWVs
KSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpOwotICAgIG1faG9zdEltcGwt
PnNjcm9sbEJ5KEludFNpemUoMCwgMTApKTsKLSAgICBtX2hvc3RJbXBsLT5zY3JvbGxFbmQoKTsK
LSAgICBFWFBFQ1RfVFJVRShtX2RpZFJlcXVlc3RSZWRyYXcpOwotICAgIEVYUEVDVF9UUlVFKG1f
ZGlkUmVxdWVzdENvbW1pdCk7Ci19Ci0KLVRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwg
c2Nyb2xsQ2hpbGRDYWxsc0NvbW1pdEFuZFJlZHJhdykKLXsKLSAgICBJbnRTaXplIHN1cmZhY2VT
aXplKDEwLCAxMCk7Ci0gICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6
OmNyZWF0ZSgwKTsKLSAgICByb290LT5hZGRDaGlsZChjcmVhdGVTY3JvbGxhYmxlTGF5ZXIoMSwg
RmxvYXRQb2ludCg1LCA1KSwgc3VyZmFjZVNpemUpKTsKLSAgICBtX2hvc3RJbXBsLT5zZXRSb290
TGF5ZXIocm9vdC5yZWxlYXNlKCkpOwotICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShz
dXJmYWNlU2l6ZSk7Ci0gICAgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJBbmREcmF3RnJhbWUoKTsK
LQotICAgIEVYUEVDVF9FUShtX2hvc3RJbXBsLT5zY3JvbGxCZWdpbihJbnRQb2ludCg1LCA1KSwg
Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OldoZWVsKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9s
bFN0YXJ0ZWQpOwotICAgIG1faG9zdEltcGwtPnNjcm9sbEJ5KEludFNpemUoMCwgMTApKTsKLSAg
ICBtX2hvc3RJbXBsLT5zY3JvbGxFbmQoKTsKLSAgICBFWFBFQ1RfVFJVRShtX2RpZFJlcXVlc3RS
ZWRyYXcpOwotICAgIEVYUEVDVF9UUlVFKG1fZGlkUmVxdWVzdENvbW1pdCk7Ci19Ci0KLVRFU1Rf
RihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsTWlzc2VzQ2hpbGQpCi17Ci0gICAgSW50
U2l6ZSBzdXJmYWNlU2l6ZSgxMCwgMTApOwotICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9
IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCk7Ci0gICAgcm9vdC0+YWRkQ2hpbGQoY3JlYXRlU2Nyb2xs
YWJsZUxheWVyKDEsIEZsb2F0UG9pbnQoNSwgNSksIHN1cmZhY2VTaXplKSk7Ci0gICAgbV9ob3N0
SW1wbC0+c2V0Um9vdExheWVyKHJvb3QucmVsZWFzZSgpKTsKLSAgICBtX2hvc3RJbXBsLT5zZXRW
aWV3cG9ydFNpemUoc3VyZmFjZVNpemUpOwotICAgIGluaXRpYWxpemVMYXllclJlbmRlcmVyQW5k
RHJhd0ZyYW1lKCk7Ci0KLSAgICAvLyBTY3JvbGwgZXZlbnQgaXMgaWdub3JlZCBiZWNhdXNlIHRo
ZSBpbnB1dCBjb29yZGluYXRlIGlzIG91dHNpZGUgdGhlIGxheWVyIGJvdW5kYXJpZXMuCi0gICAg
RVhQRUNUX0VRKG1faG9zdEltcGwtPnNjcm9sbEJlZ2luKEludFBvaW50KDE1LCA1KSwgQ0NJbnB1
dEhhbmRsZXJDbGllbnQ6OldoZWVsKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbElnbm9y
ZWQpOwotICAgIEVYUEVDVF9GQUxTRShtX2RpZFJlcXVlc3RSZWRyYXcpOwotICAgIEVYUEVDVF9G
QUxTRShtX2RpZFJlcXVlc3RDb21taXQpOwotfQotCi1URVNUX0YoQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QsIHNjcm9sbE1pc3Nlc0JhY2tmYWNpbmdDaGlsZCkKLXsKLSAgICBJbnRTaXplIHN1cmZh
Y2VTaXplKDEwLCAxMCk7Ci0gICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllcklt
cGw6OmNyZWF0ZSgwKTsKLSAgICBPd25QdHI8Q0NMYXllckltcGw+IGNoaWxkID0gY3JlYXRlU2Ny
b2xsYWJsZUxheWVyKDEsIEZsb2F0UG9pbnQoNSwgNSksIHN1cmZhY2VTaXplKTsKLSAgICBtX2hv
c3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoc3VyZmFjZVNpemUpOwotCi0gICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggbWF0cml4OwotICAgIG1hdHJpeC5yb3RhdGUzZCgxODAsIDAsIDApOwotICAgIGNo
aWxkLT5zZXRUcmFuc2Zvcm0obWF0cml4KTsKLSAgICBjaGlsZC0+c2V0RG91YmxlU2lkZWQoZmFs
c2UpOwotCi0gICAgcm9vdC0+YWRkQ2hpbGQoY2hpbGQucmVsZWFzZSgpKTsKLSAgICBtX2hvc3RJ
bXBsLT5zZXRSb290TGF5ZXIocm9vdC5yZWxlYXNlKCkpOwotICAgIGluaXRpYWxpemVMYXllclJl
bmRlcmVyQW5kRHJhd0ZyYW1lKCk7Ci0KLSAgICAvLyBTY3JvbGwgZXZlbnQgaXMgaWdub3JlZCBi
ZWNhdXNlIHRoZSBzY3JvbGxhYmxlIGxheWVyIGlzIG5vdCBmYWNpbmcgdGhlIHZpZXdlciBhbmQg
dGhlcmUgaXMKLSAgICAvLyBub3RoaW5nIHNjcm9sbGFibGUgYmVoaW5kIGl0LgotICAgIEVYUEVD
VF9FUShtX2hvc3RJbXBsLT5zY3JvbGxCZWdpbihJbnRQb2ludCg1LCA1KSwgQ0NJbnB1dEhhbmRs
ZXJDbGllbnQ6OldoZWVsKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbElnbm9yZWQpOwot
ICAgIEVYUEVDVF9GQUxTRShtX2RpZFJlcXVlc3RSZWRyYXcpOwotICAgIEVYUEVDVF9GQUxTRSht
X2RpZFJlcXVlc3RDb21taXQpOwotfQotCi1URVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3Qs
IHNjcm9sbEJsb2NrZWRCeUNvbnRlbnRMYXllcikKLXsKLSAgICBJbnRTaXplIHN1cmZhY2VTaXpl
KDEwLCAxMCk7Ci0gICAgT3duUHRyPENDTGF5ZXJJbXBsPiBjb250ZW50TGF5ZXIgPSBjcmVhdGVT
Y3JvbGxhYmxlTGF5ZXIoMCwgRmxvYXRQb2ludCg1LCA1KSwgc3VyZmFjZVNpemUpOwotICAgIGNv
bnRlbnRMYXllci0+c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKHRydWUpOwotICAgIGNvbnRl
bnRMYXllci0+c2V0U2Nyb2xsYWJsZShmYWxzZSk7Ci0KLSAgICBPd25QdHI8Q0NMYXllckltcGw+
IHNjcm9sbExheWVyID0gY3JlYXRlU2Nyb2xsYWJsZUxheWVyKDEsIEZsb2F0UG9pbnQoNSwgNSks
IHN1cmZhY2VTaXplKTsKLSAgICBzY3JvbGxMYXllci0+YWRkQ2hpbGQoY29udGVudExheWVyLnJl
bGVhc2UoKSk7Ci0KLSAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIoc2Nyb2xsTGF5ZXIucmVs
ZWFzZSgpKTsKLSAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoc3VyZmFjZVNpemUpOwot
ICAgIGluaXRpYWxpemVMYXllclJlbmRlcmVyQW5kRHJhd0ZyYW1lKCk7Ci0KLSAgICAvLyBTY3Jv
bGxpbmcgZmFpbHMgYmVjYXVzZSB0aGUgY29udGVudCBsYXllciBpcyBhc2tpbmcgdG8gYmUgc2Ny
b2xsZWQgb24gdGhlIG1haW4gdGhyZWFkLgotICAgIEVYUEVDVF9FUShtX2hvc3RJbXBsLT5zY3Jv
bGxCZWdpbihJbnRQb2ludCg1LCA1KSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OldoZWVsKSwgQ0NJ
bnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbEZhaWxlZCk7Ci19Ci0KLVRFU1RfRihDQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdCwgc2Nyb2xsUm9vdEFuZENoYW5nZVBhZ2VTY2FsZU9uTWFpblRocmVhZCkK
LXsKLSAgICBJbnRTaXplIHN1cmZhY2VTaXplKDEwLCAxMCk7Ci0gICAgZmxvYXQgcGFnZVNjYWxl
ID0gMjsKLSAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVTY3JvbGxhYmxlTGF5
ZXIoMCwgRmxvYXRQb2ludCg1LCA1KSwgc3VyZmFjZVNpemUpOwotICAgIG1faG9zdEltcGwtPnNl
dFJvb3RMYXllcihyb290LnJlbGVhc2UoKSk7Ci0gICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRT
aXplKHN1cmZhY2VTaXplKTsKLSAgICBpbml0aWFsaXplTGF5ZXJSZW5kZXJlckFuZERyYXdGcmFt
ZSgpOwotCi0gICAgSW50U2l6ZSBzY3JvbGxEZWx0YSgwLCAxMCk7Ci0gICAgSW50U2l6ZSBleHBl
Y3RlZFNjcm9sbERlbHRhKHNjcm9sbERlbHRhKTsKLSAgICBJbnRTaXplIGV4cGVjdGVkTWF4U2Ny
b2xsKG1faG9zdEltcGwtPnJvb3RMYXllcigpLT5tYXhTY3JvbGxQb3NpdGlvbigpKTsKLSAgICBF
WFBFQ1RfRVEobV9ob3N0SW1wbC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQoNSwgNSksIENDSW5wdXRI
YW5kbGVyQ2xpZW50OjpXaGVlbCksIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVk
KTsKLSAgICBtX2hvc3RJbXBsLT5zY3JvbGxCeShzY3JvbGxEZWx0YSk7Ci0gICAgbV9ob3N0SW1w
bC0+c2Nyb2xsRW5kKCk7Ci0KLSAgICAvLyBTZXQgbmV3IHBhZ2Ugc2NhbGUgZnJvbSBtYWluIHRo
cmVhZC4KLSAgICBtX2hvc3RJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMocGFnZVNj
YWxlLCBwYWdlU2NhbGUsIHBhZ2VTY2FsZSk7Ci0KLSAgICAvLyBUaGUgc2NhbGUgc2hvdWxkIGFw
cGx5IHRvIHRoZSBzY3JvbGwgZGVsdGEuCi0gICAgZXhwZWN0ZWRTY3JvbGxEZWx0YS5zY2FsZShw
YWdlU2NhbGUpOwotICAgIE93blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBzY3JvbGxJbmZvID0g
bV9ob3N0SW1wbC0+cHJvY2Vzc1Njcm9sbERlbHRhcygpOwotICAgIGV4cGVjdENvbnRhaW5zKCpz
Y3JvbGxJbmZvLmdldCgpLCAwLCBleHBlY3RlZFNjcm9sbERlbHRhKTsKLQotICAgIC8vIFRoZSBz
Y3JvbGwgcmFuZ2Ugc2hvdWxkIGFsc28gaGF2ZSBiZWVuIHVwZGF0ZWQuCi0gICAgRVhQRUNUX0VR
KG1faG9zdEltcGwtPnJvb3RMYXllcigpLT5tYXhTY3JvbGxQb3NpdGlvbigpLCBleHBlY3RlZE1h
eFNjcm9sbCk7Ci0KLSAgICAvLyBUaGUgcGFnZSBzY2FsZSBkZWx0YSByZW1haW5zIGNvbnN0YW50
IGJlY2F1c2UgdGhlIGltcGwgdGhyZWFkIGRpZCBub3Qgc2NhbGUuCi0gICAgRVhQRUNUX0VRKG1f
aG9zdEltcGwtPnJvb3RMYXllcigpLT5wYWdlU2NhbGVEZWx0YSgpLCAxKTsKLX0KLQotVEVTVF9G
KENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBzY3JvbGxSb290QW5kQ2hhbmdlUGFnZVNjYWxlT25J
bXBsVGhyZWFkKQotewotICAgIEludFNpemUgc3VyZmFjZVNpemUoMTAsIDEwKTsKLSAgICBmbG9h
dCBwYWdlU2NhbGUgPSAyOwotICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGNyZWF0ZVNj
cm9sbGFibGVMYXllcigwLCBGbG9hdFBvaW50KDUsIDUpLCBzdXJmYWNlU2l6ZSk7Ci0gICAgbV9o
b3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QucmVsZWFzZSgpKTsKLSAgICBtX2hvc3RJbXBsLT5z
ZXRWaWV3cG9ydFNpemUoc3VyZmFjZVNpemUpOwotICAgIG1faG9zdEltcGwtPnNldFBhZ2VTY2Fs
ZUZhY3RvckFuZExpbWl0cygxLCAxLCBwYWdlU2NhbGUpOwotICAgIGluaXRpYWxpemVMYXllclJl
bmRlcmVyQW5kRHJhd0ZyYW1lKCk7Ci0KLSAgICBJbnRTaXplIHNjcm9sbERlbHRhKDAsIDEwKTsK
LSAgICBJbnRTaXplIGV4cGVjdGVkU2Nyb2xsRGVsdGEoc2Nyb2xsRGVsdGEpOwotICAgIEludFNp
emUgZXhwZWN0ZWRNYXhTY3JvbGwobV9ob3N0SW1wbC0+cm9vdExheWVyKCktPm1heFNjcm9sbFBv
c2l0aW9uKCkpOwotICAgIEVYUEVDVF9FUShtX2hvc3RJbXBsLT5zY3JvbGxCZWdpbihJbnRQb2lu
dCg1LCA1KSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OldoZWVsKSwgQ0NJbnB1dEhhbmRsZXJDbGll
bnQ6OlNjcm9sbFN0YXJ0ZWQpOwotICAgIG1faG9zdEltcGwtPnNjcm9sbEJ5KHNjcm9sbERlbHRh
KTsKLSAgICBtX2hvc3RJbXBsLT5zY3JvbGxFbmQoKTsKLQotICAgIC8vIFNldCBuZXcgcGFnZSBz
Y2FsZSBvbiBpbXBsIHRocmVhZCBieSBwaW5jaGluZy4KLSAgICBtX2hvc3RJbXBsLT5waW5jaEdl
c3R1cmVCZWdpbigpOwotICAgIG1faG9zdEltcGwtPnBpbmNoR2VzdHVyZVVwZGF0ZShwYWdlU2Nh
bGUsIEludFBvaW50KCkpOwotICAgIG1faG9zdEltcGwtPnBpbmNoR2VzdHVyZUVuZCgpOwotCi0g
ICAgLy8gVGhlIHNjcm9sbCBkZWx0YSBpcyBub3Qgc2NhbGVkIGJlY2F1c2UgdGhlIG1haW4gdGhy
ZWFkIGRpZCBub3Qgc2NhbGUuCi0gICAgT3duUHRyPENDU2Nyb2xsQW5kU2NhbGVTZXQ+IHNjcm9s
bEluZm8gPSBtX2hvc3RJbXBsLT5wcm9jZXNzU2Nyb2xsRGVsdGFzKCk7Ci0gICAgZXhwZWN0Q29u
dGFpbnMoKnNjcm9sbEluZm8uZ2V0KCksIDAsIGV4cGVjdGVkU2Nyb2xsRGVsdGEpOwotCi0gICAg
Ly8gVGhlIHNjcm9sbCByYW5nZSBzaG91bGQgYWxzbyBoYXZlIGJlZW4gdXBkYXRlZC4KLSAgICBF
WFBFQ1RfRVEobV9ob3N0SW1wbC0+cm9vdExheWVyKCktPm1heFNjcm9sbFBvc2l0aW9uKCksIGV4
cGVjdGVkTWF4U2Nyb2xsKTsKLQotICAgIC8vIFRoZSBwYWdlIHNjYWxlIGRlbHRhIHNob3VsZCBt
YXRjaCB0aGUgbmV3IHNjYWxlIG9uIHRoZSBpbXBsIHNpZGUuCi0gICAgRVhQRUNUX0VRKG1faG9z
dEltcGwtPnJvb3RMYXllcigpLT5wYWdlU2NhbGVEZWx0YSgpLCBwYWdlU2NhbGUpOwotfQotCi1U
RVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbENoaWxkQW5kQ2hhbmdlUGFnZVNj
YWxlT25NYWluVGhyZWFkKQotewotICAgIEludFNpemUgc3VyZmFjZVNpemUoMTAsIDEwKTsKLSAg
ICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDApOwotICAg
IC8vIEFsc28gbWFyayB0aGUgcm9vdCBzY3JvbGxhYmxlIHNvIGl0IGJlY29tZXMgdGhlIHJvb3Qg
c2Nyb2xsIGxheWVyLgotICAgIHJvb3QtPnNldFNjcm9sbGFibGUodHJ1ZSk7Ci0gICAgcm9vdC0+
YWRkQ2hpbGQoY3JlYXRlU2Nyb2xsYWJsZUxheWVyKDEsIEZsb2F0UG9pbnQoNSwgNSksIHN1cmZh
Y2VTaXplKSk7Ci0gICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QucmVsZWFzZSgpKTsK
LSAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoc3VyZmFjZVNpemUpOwotICAgIGluaXRp
YWxpemVMYXllclJlbmRlcmVyQW5kRHJhd0ZyYW1lKCk7Ci0KLSAgICBDQ0xheWVySW1wbCogY2hp
bGQgPSBtX2hvc3RJbXBsLT5yb290TGF5ZXIoKS0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKLQotICAg
IEludFNpemUgc2Nyb2xsRGVsdGEoMCwgMTApOwotICAgIEludFNpemUgZXhwZWN0ZWRTY3JvbGxE
ZWx0YShzY3JvbGxEZWx0YSk7Ci0gICAgSW50U2l6ZSBleHBlY3RlZE1heFNjcm9sbChjaGlsZC0+
bWF4U2Nyb2xsUG9zaXRpb24oKSk7Ci0gICAgRVhQRUNUX0VRKG1faG9zdEltcGwtPnNjcm9sbEJl
Z2luKEludFBvaW50KDUsIDUpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6V2hlZWwpLCBDQ0lucHV0
SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCk7Ci0gICAgbV9ob3N0SW1wbC0+c2Nyb2xsQnko
c2Nyb2xsRGVsdGEpOwotICAgIG1faG9zdEltcGwtPnNjcm9sbEVuZCgpOwotCi0gICAgZmxvYXQg
cGFnZVNjYWxlID0gMjsKLSAgICBtX2hvc3RJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1p
dHMocGFnZVNjYWxlLCAxLCBwYWdlU2NhbGUpOwotCi0gICAgLy8gVGhlIHNjYWxlIHNob3VsZCBh
cHBseSB0byB0aGUgc2Nyb2xsIGRlbHRhLgotICAgIGV4cGVjdGVkU2Nyb2xsRGVsdGEuc2NhbGUo
cGFnZVNjYWxlKTsKLSAgICBPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4gc2Nyb2xsSW5mbyA9
IG1faG9zdEltcGwtPnByb2Nlc3NTY3JvbGxEZWx0YXMoKTsKLSAgICBleHBlY3RDb250YWlucygq
c2Nyb2xsSW5mby5nZXQoKSwgMSwgZXhwZWN0ZWRTY3JvbGxEZWx0YSk7Ci0KLSAgICAvLyBUaGUg
c2Nyb2xsIHJhbmdlIHNob3VsZCBub3QgaGF2ZSBjaGFuZ2VkLgotICAgIEVYUEVDVF9FUShjaGls
ZC0+bWF4U2Nyb2xsUG9zaXRpb24oKSwgZXhwZWN0ZWRNYXhTY3JvbGwpOwotCi0gICAgLy8gVGhl
IHBhZ2Ugc2NhbGUgZGVsdGEgcmVtYWlucyBjb25zdGFudCBiZWNhdXNlIHRoZSBpbXBsIHRocmVh
ZCBkaWQgbm90IHNjYWxlLgotICAgIEVYUEVDVF9FUShjaGlsZC0+cGFnZVNjYWxlRGVsdGEoKSwg
MSk7Ci19Ci0KLVRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsQ2hpbGRCZXlv
bmRMaW1pdCkKLXsKLSAgICAvLyBTY3JvbGwgYSBjaGlsZCBsYXllciBiZXlvbmQgaXRzIG1heGlt
dW0gc2Nyb2xsIHJhbmdlIGFuZCBtYWtlIHN1cmUgdGhlCi0gICAgLy8gcGFyZW50IGxheWVyIGlz
IHNjcm9sbGVkIG9uIHRoZSBheGlzIG9uIHdoaWNoIHRoZSBjaGlsZCB3YXMgdW5hYmxlIHRvCi0g
ICAgLy8gc2Nyb2xsLgotICAgIEludFNpemUgc3VyZmFjZVNpemUoMTAsIDEwKTsKLSAgICBPd25Q
dHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVTY3JvbGxhYmxlTGF5ZXIoMCwgRmxvYXRQb2lu
dCg1LCA1KSwgc3VyZmFjZVNpemUpOwotCi0gICAgT3duUHRyPENDTGF5ZXJJbXBsPiBncmFuZENo
aWxkID0gY3JlYXRlU2Nyb2xsYWJsZUxheWVyKDIsIEZsb2F0UG9pbnQoNSwgNSksIHN1cmZhY2VT
aXplKTsKLSAgICBncmFuZENoaWxkLT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCgwLCA1KSk7
Ci0KLSAgICBPd25QdHI8Q0NMYXllckltcGw+IGNoaWxkID0gY3JlYXRlU2Nyb2xsYWJsZUxheWVy
KDEsIEZsb2F0UG9pbnQoNSwgNSksIHN1cmZhY2VTaXplKTsKLSAgICBjaGlsZC0+c2V0U2Nyb2xs
UG9zaXRpb24oSW50UG9pbnQoMywgMCkpOwotICAgIGNoaWxkLT5hZGRDaGlsZChncmFuZENoaWxk
LnJlbGVhc2UoKSk7Ci0KLSAgICByb290LT5hZGRDaGlsZChjaGlsZC5yZWxlYXNlKCkpOwotICAg
IG1faG9zdEltcGwtPnNldFJvb3RMYXllcihyb290LnJlbGVhc2UoKSk7Ci0gICAgbV9ob3N0SW1w
bC0+c2V0Vmlld3BvcnRTaXplKHN1cmZhY2VTaXplKTsKLSAgICBpbml0aWFsaXplTGF5ZXJSZW5k
ZXJlckFuZERyYXdGcmFtZSgpOwotICAgIHsKLSAgICAgICAgSW50U2l6ZSBzY3JvbGxEZWx0YSgt
MywgLTcpOwotICAgICAgICBFWFBFQ1RfRVEobV9ob3N0SW1wbC0+c2Nyb2xsQmVnaW4oSW50UG9p
bnQoNSwgNSksIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpXaGVlbCksIENDSW5wdXRIYW5kbGVyQ2xp
ZW50OjpTY3JvbGxTdGFydGVkKTsKLSAgICAgICAgbV9ob3N0SW1wbC0+c2Nyb2xsQnkoc2Nyb2xs
RGVsdGEpOwotICAgICAgICBtX2hvc3RJbXBsLT5zY3JvbGxFbmQoKTsKLQotICAgICAgICBPd25Q
dHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4gc2Nyb2xsSW5mbyA9IG1faG9zdEltcGwtPnByb2Nlc3NT
Y3JvbGxEZWx0YXMoKTsKLQotICAgICAgICAvLyBUaGUgZ3JhbmQgY2hpbGQgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgdXAgdG8gaXRzIGxpbWl0LgotICAgICAgICBDQ0xheWVySW1wbCogY2hpbGQgPSBt
X2hvc3RJbXBsLT5yb290TGF5ZXIoKS0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKLSAgICAgICAgQ0NM
YXllckltcGwqIGdyYW5kQ2hpbGQgPSBjaGlsZC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKLSAgICAg
ICAgZXhwZWN0Q29udGFpbnMoKnNjcm9sbEluZm8uZ2V0KCksIGdyYW5kQ2hpbGQtPmlkKCksIElu
dFNpemUoMCwgLTUpKTsKLQotICAgICAgICAvLyBUaGUgY2hpbGQgc2hvdWxkIGhhdmUgb25seSBz
Y3JvbGxlZCBvbiB0aGUgb3RoZXIgYXhpcy4KLSAgICAgICAgZXhwZWN0Q29udGFpbnMoKnNjcm9s
bEluZm8uZ2V0KCksIGNoaWxkLT5pZCgpLCBJbnRTaXplKC0zLCAwKSk7Ci0gICAgfQotfQotCi1U
RVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbEJlZm9yZVJlZHJhdykKLXsKLSAg
ICBJbnRTaXplIHN1cmZhY2VTaXplKDEwLCAxMCk7Ci0gICAgbV9ob3N0SW1wbC0+c2V0Um9vdExh
eWVyKGNyZWF0ZVNjcm9sbGFibGVMYXllcigwLCBGbG9hdFBvaW50KDUsIDUpLCBzdXJmYWNlU2l6
ZSkpOwotICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShzdXJmYWNlU2l6ZSk7Ci0KLSAg
ICAvLyBEcmF3IG9uZSBmcmFtZSBhbmQgdGhlbiBpbW1lZGlhdGVseSByZWJ1aWxkIHRoZSBsYXll
ciB0cmVlIHRvIG1pbWljIGEgdHJlZSBzeW5jaHJvbml6YXRpb24uCi0gICAgaW5pdGlhbGl6ZUxh
eWVyUmVuZGVyZXJBbmREcmF3RnJhbWUoKTsKLSAgICBtX2hvc3RJbXBsLT5yZWxlYXNlUm9vdExh
eWVyKCk7Ci0gICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKGNyZWF0ZVNjcm9sbGFibGVMYXll
cigwLCBGbG9hdFBvaW50KDUsIDUpLCBzdXJmYWNlU2l6ZSkpOwotCi0gICAgLy8gU2Nyb2xsaW5n
IHNob3VsZCBzdGlsbCB3b3JrIGV2ZW4gdGhvdWdoIHdlIGRpZCBub3QgZHJhdyB5ZXQuCi0gICAg
RVhQRUNUX0VRKG1faG9zdEltcGwtPnNjcm9sbEJlZ2luKEludFBvaW50KDUsIDUpLCBDQ0lucHV0
SGFuZGxlckNsaWVudDo6V2hlZWwpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRl
ZCk7Ci19Ci0KIGNsYXNzIEJsZW5kU3RhdGVUcmFja2VyQ29udGV4dDogcHVibGljIEZha2VXZWJH
cmFwaGljc0NvbnRleHQzRCB7CiBwdWJsaWM6CiAgICAgQmxlbmRTdGF0ZVRyYWNrZXJDb250ZXh0
KCkgOiBtX2JsZW5kKGZhbHNlKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IGY3MTQ3YTdhNWM4NjY4Y2JmYTll
NDdiM2NmY2MwZmMyZGMzZDY1NWEuLmQ3M2ViYzU2ZjRhNTI4NWVmYmFiYzk3OTAyZmViYTQzYzAw
NTJlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RUZXN0LmNwcApAQCAtMTU1MCw3ICsxNTUwLDYgQEAgcHVibGljOgogICAgIH0KIAog
ICAgIHZpcnR1YWwgYm9vbCBwcmVzZXJ2ZXMzRCgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCB2b2lkIGRpZFNjcm9sbChjb25zdCBJbnRTaXplJikgeyB9CiAKIHByaXZhdGU6CiAgICAg
Q0NMYXllclRyZWVIb3N0VGVzdCogbV90ZXN0OwpAQCAtMTY4NSw4ICsxNjg0LDcgQEAgY2xhc3Mg
TW9ja0NvbnRlbnRMYXllckRlbGVnYXRlIDogcHVibGljIENvbnRlbnRMYXllckRlbGVnYXRlIHsK
IHB1YmxpYzoKICAgICBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
ICAgICBNT0NLX0NPTlNUX01FVEhPRDAocHJlc2VydmVzM0QsIGJvb2woKSk7Ci0gICAgdmlydHVh
bCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBkaWRTY3JvbGwoY29uc3QgSW50U2l6ZSYpIHsgfQorICAgIHZv
aWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JikgeyB9CiAg
ICAgdm9pZCBub3RpZnlTeW5jUmVxdWlyZWQoKSB7IH0KIH07CiAKQEAgLTI0NDgsNzAgKzI0NDYs
NCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdEZyYWN0aW9uYWxTY3JvbGwsIHJ1bk11bHRp
VGhyZWFkKQogICAgIHJ1blRlc3RUaHJlYWRlZCgpOwogfQogCi1jbGFzcyBDQ0xheWVyVHJlZUhv
c3RUZXN0U2Nyb2xsQ2hpbGRMYXllciA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RUZXN0IHsKLXB1
YmxpYzoKLSAgICBDQ0xheWVyVHJlZUhvc3RUZXN0U2Nyb2xsQ2hpbGRMYXllcigpCi0gICAgICAg
IDogbV9zY3JvbGxBbW91bnQoMiwgMSkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lk
IGJlZ2luVGVzdCgpCi0gICAgewotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0
U2l6ZShJbnRTaXplKDEwLCAxMCkpOwotICAgICAgICBtX3Jvb3RTY3JvbGxMYXllciA9IENvbnRl
bnRMYXllckNocm9taXVtOjpjcmVhdGUoJm1fbW9ja0RlbGVnYXRlKTsKLSAgICAgICAgbV9yb290
U2Nyb2xsTGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOwotICAgICAgICBtX3Jvb3RT
Y3JvbGxMYXllci0+c2V0SXNEcmF3YWJsZSh0cnVlKTsKLSAgICAgICAgbV9yb290U2Nyb2xsTGF5
ZXItPnNldFNjcm9sbGFibGUodHJ1ZSk7Ci0gICAgICAgIG1fcm9vdFNjcm9sbExheWVyLT5zZXRN
YXhTY3JvbGxQb3NpdGlvbihJbnRTaXplKDEwMCwgMTAwKSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+cm9vdExheWVyKCktPmFkZENoaWxkKG1fcm9vdFNjcm9sbExheWVyKTsKLSAgICAgICAg
bV9jaGlsZExheWVyID0gQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZSgmbV9tb2NrRGVsZWdh
dGUpOwotICAgICAgICBtX2NoaWxkTGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDUwLCA1MCkpOwot
ICAgICAgICBtX2NoaWxkTGF5ZXItPnNldElzRHJhd2FibGUodHJ1ZSk7Ci0gICAgICAgIG1fY2hp
bGRMYXllci0+c2V0U2Nyb2xsYWJsZSh0cnVlKTsKLSAgICAgICAgbV9jaGlsZExheWVyLT5zZXRN
YXhTY3JvbGxQb3NpdGlvbihJbnRTaXplKDEwMCwgMTAwKSk7Ci0gICAgICAgIG1fcm9vdFNjcm9s
bExheWVyLT5hZGRDaGlsZChtX2NoaWxkTGF5ZXIpOwotICAgICAgICBwb3N0U2V0TmVlZHNDb21t
aXRUb01haW5UaHJlYWQoKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxB
bmRTY2FsZShjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQpCi0gICAgewotICAgICAg
ICBJbnRQb2ludCBwb3NpdGlvbiA9IG1fcm9vdFNjcm9sbExheWVyLT5zY3JvbGxQb3NpdGlvbigp
OwotICAgICAgICBtX3Jvb3RTY3JvbGxMYXllci0+c2V0U2Nyb2xsUG9zaXRpb24ocG9zaXRpb24g
KyBzY3JvbGxEZWx0YSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIGJlZ2luQ29tbWl0T25D
Q1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQotICAgIHsKLSAgICAgICAgRVhQRUNU
X0VRKG1fcm9vdFNjcm9sbExheWVyLT5zY3JvbGxQb3NpdGlvbigpLCBJbnRQb2ludCgpKTsKLSAg
ICAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QtPmZyYW1lTnVtYmVyKCkpCi0gICAgICAgICAgICBF
WFBFQ1RfRVEobV9jaGlsZExheWVyLT5zY3JvbGxQb3NpdGlvbigpLCBJbnRQb2ludCgpKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgRVhQRUNUX0VRKG1fY2hpbGRMYXllci0+c2Nyb2xsUG9z
aXRpb24oKSwgSW50UG9pbnQoKSArIG1fc2Nyb2xsQW1vdW50KTsKLSAgICB9Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkK
LSAgICB7Ci0gICAgICAgIGlmIChpbXBsLT5mcmFtZU51bWJlcigpID09IDEpIHsKLSAgICAgICAg
ICAgIEVYUEVDVF9FUShpbXBsLT5zY3JvbGxCZWdpbihJbnRQb2ludCg1LCA1KSwgQ0NJbnB1dEhh
bmRsZXJDbGllbnQ6OldoZWVsKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQp
OwotICAgICAgICAgICAgaW1wbC0+c2Nyb2xsQnkobV9zY3JvbGxBbW91bnQpOwotICAgICAgICAg
ICAgaW1wbC0+c2Nyb2xsRW5kKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaW1wbC0+ZnJhbWVOdW1i
ZXIoKSA9PSAyKQotICAgICAgICAgICAgZW5kVGVzdCgpOwotICAgIH0KLQotICAgIHZpcnR1YWwg
dm9pZCBhZnRlclRlc3QoKQotICAgIHsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgSW50
U2l6ZSBtX3Njcm9sbEFtb3VudDsKLSAgICBNb2NrQ29udGVudExheWVyRGVsZWdhdGUgbV9tb2Nr
RGVsZWdhdGU7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1fY2hpbGRMYXllcjsKLSAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9yb290U2Nyb2xsTGF5ZXI7Ci19OwotCi1URVNUX0YoQ0NM
YXllclRyZWVIb3N0VGVzdFNjcm9sbENoaWxkTGF5ZXIsIHJ1bk11bHRpVGhyZWFkKQotewotICAg
IHJ1blRlc3QodHJ1ZSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140281</attachid>
            <date>2012-05-04 11:18:42 -0700</date>
            <delta_ts>2012-05-04 12:25:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85644-20120504191840.patch</filename>
            <type>text/plain</type>
            <size>64174</size>
            <attacher name="Sami Kyostila">skyostil</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2MTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmJiYTY1MmUwNWZiYmVj
NDMxOWU3NmJjZWY3ZGI3OGRhNzhmZGRlOC4uMjUyZGZiN2JjZWQyNmE0YzBhYzYzOGViMDkzZTdk
ZTUwOWUwZWY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEyLTA1LTA0ICBTYW1p
IEt5b3N0aWxhICA8c2t5b3N0aWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
UmV2ZXJ0IGNvbXBvc2l0b3IgbGF5ZXIgc2Nyb2xsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTY0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmV2ZXJ0cyB0aGUgZm9sbG93aW5n
IGNvbW1pdHMgYmVjYXVzZSB0aGV5IHdlcmUgZm91bmQgdG8KKyAgICAgICAgdHJpZ2dlciBjcmFz
aGVzLiBTZWUgZGlzY3Vzc2lvbiBhdCBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0v
aXNzdWVzL2RldGFpbD9pZD0xMjQzOTMuCisKKyAgICAgICAgICAgIFtjaHJvbWl1bV0gQWxsb3cg
c2Nyb2xsaW5nIG5vbi1yb290IGxheWVycyBpbiB0aGUgY29tcG9zaXRvciB0aHJlYWQKKyAgICAg
ICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzExNDY1MQorCisgICAgICAg
ICAgICBbY2hyb21pdW1dIERvbid0IGNyYXNoIHdoZW4gc2Nyb2xsaW5nIGVtcHR5IGxheWVyIHRy
ZWUKKyAgICAgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzExNDc2MQor
CisgICAgICAgICAgICBbY2hyb21pdW1dIERvbid0IGtlZXAgcG9pbnRlcnMgdG8gcmVsZWFzZWQg
bGF5ZXIgdHJlZQorICAgICAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQv
MTE1MDgwCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29u
dGVudExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKENvbnRlbnRMYXllckNocm9taXVtKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0u
aDoKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
YXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChMYXllckNocm9taXVtKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjphcHBseVNjcm9sbEFuZFNj
YWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RDb21tb24uaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdENvbW1vbik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpDQ0xheWVyVHJlZUhvc3RJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnN0YXJ0UGFnZVNj
YWxlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNh
bGN1bGF0ZVJlbmRlclN1cmZhY2VMYXllckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0SW1wbDo6Y29udGVudFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRy
ZWVIb3N0SW1wbDo6cHJlcGFyZVRvRHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpmaW5kU2Nyb2xs
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c2V0Um9vdExh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFBhZ2VTY2Fs
ZUZhY3RvckFuZExpbWl0cyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFkanVzdFNjcm9sbHNGb3JQYWdlU2NhbGVDaGFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c2V0UGFnZVNjYWxlRGVsdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6YXBwbHlQYWdlU2NhbGVE
ZWx0YVRvU2Nyb2xsTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1w
bDo6dXBkYXRlTWF4U2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRy
ZWVIb3N0SW1wbDo6c2Nyb2xsQmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0SW1wbDo6c2Nyb2xsQnkpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1w
bDo6c2Nyb2xsRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnBp
bmNoR2VzdHVyZVVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBs
Ojpjb21wdXRlUGluY2hab29tRGVsdGFzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVl
SG9zdEltcGw6Om1ha2VTY3JvbGxBbmRTY2FsZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpwcm9jZXNzU2Nyb2xsRGVsdGFzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGVQYWdlU2NhbGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnJlbGVhc2VSb290TGF5ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsTGF5ZXIpOgorICAgICAgICAo
Q0NMYXllclRyZWVIb3N0SW1wbCk6CisKIDIwMTItMDUtMDQgIExldmkgV2VpbnRyYXViIDxsZXZp
d0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4aW5nIENoYW5nZUxvZyBj
b25mbGljdCBtYXJrZXJzIGFmdGVyIDExNjAwOS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggYmU4YzhmM2M3NDVmNGU3OWIwMzg2ODU2MGQ3Mjc2YjUyYzQ3OGNlYS4uZDA3ZDc3OGEzMmEx
ZjNkYzVlZWFkMzNjOTZkMDNhNjAwMWYxOTQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOSBAQAorMjAxMi0wNS0wNCAgU2FtaSBLeW9zdGlsYSAgPHNreW9zdGlsQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFJldmVydCBjb21wb3NpdG9yIGxheWVy
IHNjcm9sbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODU2NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHNyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViQ29udGVu
dExheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29udGVudExheWVySW1wbCk6CisgICAgICAgICog
dGVzdHMvQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1RfRik6
CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6
Ok1vY2tDb250ZW50TGF5ZXJEZWxlZ2F0ZTo6cGFpbnRDb250ZW50cyk6CisKIDIwMTItMDUtMDQg
IEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBbRGV2aWNlIE1ldHJpY3NdIFdpdGggIkZpdCB3aW5kb3ciIG9wdGlvbiBvbiwg
cGFnZSBjb250ZW50cyBhcmUgZG93bnNjYWxlZCBpbmNvcnJlY3RseQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVu
dExheWVyQ2hyb21pdW0uY3BwCmluZGV4IGExMGYzNTQyMTZkY2Y1ODdmZGVhZjM4MzViM2QxYzI2
ZWIyNGI3ZTkuLmFlOGQzMjA4YmZiYWI4ZDdhZGU5ODJhN2Q4YTkzYTJkODNlZDdkYWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRM
YXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTE0NSwxMiArMTQ1LDUgQEAgdm9p
ZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6c2V0T3BhcXVlKGJvb2wgb3BhcXVlKQogICAgICAgICBt
X3RleHR1cmVVcGRhdGVyLT5zZXRPcGFxdWUob3BhcXVlKTsKIH0KIAotdm9pZCBDb250ZW50TGF5
ZXJDaHJvbWl1bTo6c2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEpCi17Ci0gICAg
c2V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24oKSArIHNjcm9sbERlbHRhKTsKLSAgICBp
ZiAobV9kZWxlZ2F0ZSkKLSAgICAgICAgbV9kZWxlZ2F0ZS0+ZGlkU2Nyb2xsKHNjcm9sbERlbHRh
KTsKLX0KLQogfQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRM
YXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCmluZGV4IGE1MWM4MTJiNWM4ODdhYWUzYTlhMjNiNTY0
OGVjYzBhYWUzOTIzOTEuLjBjZDFkNzhkODUzOWE2Zjg2NzQwZWRjMDM0MmRhZDIyZjM0YzAwNTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nv
bnRlbnRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaApAQCAtNDYsNyArNDYsNiBAQCBjbGFz
cyBDb250ZW50TGF5ZXJEZWxlZ2F0ZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q29udGVudExh
eWVyRGVsZWdhdGUoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjbGlwKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZFNjcm9sbChjb25zdCBJbnRTaXplJikgPSAwOwogfTsKIAogLy8gQSBMYXllciB0aGF0IHJlcXVp
cmVzIGEgR3JhcGhpY3NDb250ZXh0IHRvIHJlbmRlciBpdHMgY29udGVudHMuCkBAIC02NCw4ICs2
Myw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9vbCkgT1ZFUlJJ
REU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYpIE9WRVJSSURF
OwotCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ29udGVudExheWVyQ2hyb21pdW0oQ29udGVu
dExheWVyRGVsZWdhdGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaAppbmRl
eCBlM2E4MjA5MGRjNjU1ZTJiZWFmMzhkNTcxMzNjNGJkMGZmZDRiNWY5Li5iZTJiM2FlNjU3YjU0
MmZhYjRjYjU3ZmIzMjBjY2I3NWFhNGE5NzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hy
b21pdW0uaApAQCAtMTEzLDcgKzExMyw2IEBAIHB1YmxpYzoKIAogICAgIC8vIENvbnRlbnRMYXll
ckRlbGVnYXRlIGltcGxlbWVudGF0aW9uLgogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRz
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGNsaXApOwotICAgIHZpcnR1YWwgdm9p
ZCBkaWRTY3JvbGwoY29uc3QgSW50U2l6ZSYpIE9WRVJSSURFIHsgfQogCiAgICAgLy8gQ0NMYXll
ckFuaW1hdGlvbkRlbGVnYXRlIGltcGxlbWVudGF0aW9uLgogICAgIHZpcnR1YWwgdm9pZCBub3Rp
ZnlBbmltYXRpb25TdGFydGVkKGRvdWJsZSBzdGFydFRpbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNw
cAppbmRleCA0OGM1NzU0OTc2MGMxNjMxNGJlNzhkMGM5OGU4M2JlNmE5OGNmOWY1Li4yMzhkZDY3
NjVmMTA1MmE5YTljNjBlNTFiNzRjYTRkZGE3OWY5OTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNw
cApAQCAtMzgxLDE0ICszODEsNiBAQCB2b2lkIExheWVyQ2hyb21pdW06OnNldFNjcm9sbFBvc2l0
aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbikKICAgICBzZXROZWVkc0NvbW1pdCgp
OwogfQogCi12b2lkIExheWVyQ2hyb21pdW06OnNldE1heFNjcm9sbFBvc2l0aW9uKGNvbnN0IElu
dFNpemUmIG1heFNjcm9sbFBvc2l0aW9uKQotewotICAgIGlmIChtX21heFNjcm9sbFBvc2l0aW9u
ID09IG1heFNjcm9sbFBvc2l0aW9uKQotICAgICAgICByZXR1cm47Ci0gICAgbV9tYXhTY3JvbGxQ
b3NpdGlvbiA9IG1heFNjcm9sbFBvc2l0aW9uOwotICAgIHNldE5lZWRzQ29tbWl0KCk7Ci19Ci0K
IHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0U2Nyb2xsYWJsZShib29sIHNjcm9sbGFibGUpCiB7CiAg
ICAgaWYgKG1fc2Nyb2xsYWJsZSA9PSBzY3JvbGxhYmxlKQpAQCAtNTA5LDcgKzUwMSw2IEBAIHZv
aWQgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCiAg
ICAgbGF5ZXItPnNldFBvc2l0aW9uKG1fcG9zaXRpb24pOwogICAgIGxheWVyLT5zZXRQcmVzZXJ2
ZXMzRChwcmVzZXJ2ZXMzRCgpKTsKICAgICBsYXllci0+c2V0U2Nyb2xsUG9zaXRpb24obV9zY3Jv
bGxQb3NpdGlvbik7Ci0gICAgbGF5ZXItPnNldE1heFNjcm9sbFBvc2l0aW9uKG1fbWF4U2Nyb2xs
UG9zaXRpb24pOwogICAgIGxheWVyLT5zZXRTdWJsYXllclRyYW5zZm9ybShtX3N1YmxheWVyVHJh
bnNmb3JtKTsKICAgICBpZiAoIXRyYW5zZm9ybUlzQW5pbWF0aW5nKCkpCiAgICAgICAgIGxheWVy
LT5zZXRUcmFuc2Zvcm0obV90cmFuc2Zvcm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IGQ1OTQ4
NDAwNzg4OTQ3NmFlY2ZiYzJiMjM0NjMwM2QxZDY3NTRiMjUuLjNiZmRhODFjZjg5MGIzZjc5NTg1
NjhjYjU2YTdhMTczYzg4M2U4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTE0MSwxNyArMTQx
LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50
Jik7CiAgICAgY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9zY3JvbGxQb3NpdGlvbjsgfQogCi0gICAgdm9pZCBzZXRNYXhTY3JvbGxQb3NpdGlvbihjb25z
dCBJbnRTaXplJik7Ci0gICAgY29uc3QgSW50U2l6ZSYgbWF4U2Nyb2xsUG9zaXRpb24oKSBjb25z
dCB7IHJldHVybiBtX21heFNjcm9sbFBvc2l0aW9uOyB9Ci0KICAgICB2b2lkIHNldFNjcm9sbGFi
bGUoYm9vbCk7Ci0gICAgYm9vbCBzY3JvbGxhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxh
YmxlOyB9CiAgICAgdm9pZCBzZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoYm9vbCk7CiAgICAg
dm9pZCBzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJvb2wpOwogICAgIGNvbnN0IFJlZ2lvbiYg
bm9uRmFzdFNjcm9sbGFibGVSZWdpb24oKSB7IHJldHVybiBtX25vbkZhc3RTY3JvbGxhYmxlUmVn
aW9uOyB9CiAgICAgdm9pZCBzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBSZWdpb24m
KTsKICAgICB2b2lkIHNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uQ2hhbmdlZCgpIHsgbV9ub25G
YXN0U2Nyb2xsYWJsZVJlZ2lvbkNoYW5nZWQgPSB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNj
cm9sbEJ5KGNvbnN0IEludFNpemUmKSB7IH0KIAogICAgIHZvaWQgc2V0RHJhd0NoZWNrZXJib2Fy
ZEZvck1pc3NpbmdUaWxlcyhib29sKTsKICAgICBib29sIGRyYXdDaGVja2VyYm9hcmRGb3JNaXNz
aW5nVGlsZXMoKSBjb25zdCB7IHJldHVybiBtX2RyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGls
ZXM7IH0KQEAgLTMwNyw3ICszMDIsNiBAQCBwcml2YXRlOgogICAgIEludFNpemUgbV9ib3VuZHM7
CiAgICAgSW50UmVjdCBtX3Zpc2libGVMYXllclJlY3Q7CiAgICAgSW50UG9pbnQgbV9zY3JvbGxQ
b3NpdGlvbjsKLSAgICBJbnRTaXplIG1fbWF4U2Nyb2xsUG9zaXRpb247CiAgICAgYm9vbCBtX3Nj
cm9sbGFibGU7CiAgICAgYm9vbCBtX3Nob3VsZFNjcm9sbE9uTWFpblRocmVhZDsKICAgICBib29s
IG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAppbmRleCA5
YjIzM2FmZWMzODU3ZDNkZjExNDU5YzhiYzEwYWIyYmI3OWY5OGYxLi4wYzJlMDk0MDJlM2NhZjU5
YmRiZTY2NmUwYjQyMGQ4MWEwMTg1ZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCkBAIC0x
ODMsMzcgKzE4Myw2IEBAIHZvaWQgQ0NMYXllckltcGw6OnNjcm9sbEJ5KGNvbnN0IEZsb2F0U2l6
ZSYgc2Nyb2xsKQogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZEZvclN1YnRyZWUoKTsKIH0K
IAotQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1cyBDQ0xheWVySW1wbDo6dHJ5U2Ny
b2xsKGNvbnN0IEludFBvaW50JiB2aWV3cG9ydFBvaW50LCBDQ0lucHV0SGFuZGxlckNsaWVudDo6
U2Nyb2xsSW5wdXRUeXBlIHR5cGUpIGNvbnN0Ci17Ci0gICAgaWYgKHNob3VsZFNjcm9sbE9uTWFp
blRocmVhZCgpKSB7Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJ0cnlTY3JvbGwgRmFpbGVkIHNob3Vs
ZFNjcm9sbE9uTWFpblRocmVhZCIsIHRoaXMsIDApOwotICAgICAgICByZXR1cm4gQ0NJbnB1dEhh
bmRsZXJDbGllbnQ6OlNjcm9sbEZhaWxlZDsKLSAgICB9Ci0KLSAgICBpZiAoIXNjcmVlblNwYWNl
VHJhbnNmb3JtKCkuaXNJbnZlcnRpYmxlKCkpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoInRyeVNj
cm9sbCBGYWlsZWQgbm9uSW52ZXJ0aWJsZVRyYW5zZm9ybSIsIHRoaXMsIDApOwotICAgICAgICBy
ZXR1cm4gQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbElnbm9yZWQ7Ci0gICAgfQotCi0gICAg
SW50UG9pbnQgY29udGVudFBvaW50KHNjcmVlblNwYWNlVHJhbnNmb3JtKCkuaW52ZXJzZSgpLm1h
cFBvaW50KHZpZXdwb3J0UG9pbnQpKTsKLSAgICBpZiAobm9uRmFzdFNjcm9sbGFibGVSZWdpb24o
KS5jb250YWlucyhjb250ZW50UG9pbnQpKSB7Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJ0cnlTY3Jv
bGwgRmFpbGVkIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uIiwgdGhpcywgMCk7Ci0gICAgICAgIHJl
dHVybiBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVkOwotICAgIH0KLQotICAgIGlm
ICh0eXBlID09IENDSW5wdXRIYW5kbGVyQ2xpZW50OjpXaGVlbCAmJiBoYXZlV2hlZWxFdmVudEhh
bmRsZXJzKCkpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoInRyeVNjcm9sbCBGYWlsZWQgd2hlZWxF
dmVudEhhbmRsZXJzIiwgdGhpcywgMCk7Ci0gICAgICAgIHJldHVybiBDQ0lucHV0SGFuZGxlckNs
aWVudDo6U2Nyb2xsRmFpbGVkOwotICAgIH0KLQotICAgIGlmICghc2Nyb2xsYWJsZSgpKSB7Ci0g
ICAgICAgIFRSQUNFX0VWRU5UKCJ0cnlTY3JvbGwgSWdub3JlZCBub3Qgc2Nyb2xsYWJsZSIsIHRo
aXMsIDApOwotICAgICAgICByZXR1cm4gQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbElnbm9y
ZWQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFy
dGVkOwotfQotCiBjb25zdCBJbnRSZWN0IENDTGF5ZXJJbXBsOjpnZXREcmF3UmVjdCgpIGNvbnN0
CiB7CiAgICAgLy8gRm9ybSB0aGUgbWF0cml4IHVzZWQgYnkgdGhlIHNoYWRlciB0byBtYXAgdGhl
IGNvcm5lcnMgb2YgdGhlIGxheWVyJ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IDYwM2FlNTgy
OTdmN2JkZWM1OWRkMjFjMjljNzc4NzcyYTQ4ZDgxMmMuLmE4Mzk5NGVmYTE3MTE5NmU1MDJlMmQ3
ZDdjNjBjOTE1ZWVhMDc2NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtMzMsNyArMzMsNiBA
QAogI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRl
ICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgotI2luY2x1ZGUgImNjL0NDSW5wdXRIYW5kbGVyLmgi
CiAjaW5jbHVkZSAiY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJj
Yy9DQ1JlbmRlclN1cmZhY2UuaCIKICNpbmNsdWRlICJjYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oIgpA
QCAtMjAxLDggKzIwMCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERyYXdDaGVja2VyYm9hcmRG
b3JNaXNzaW5nVGlsZXMoYm9vbCBjaGVja2VyYm9hcmQpIHsgbV9kcmF3Q2hlY2tlcmJvYXJkRm9y
TWlzc2luZ1RpbGVzID0gY2hlY2tlcmJvYXJkOyB9CiAgICAgYm9vbCBkcmF3Q2hlY2tlcmJvYXJk
Rm9yTWlzc2luZ1RpbGVzKCkgY29uc3QgeyByZXR1cm4gbV9kcmF3Q2hlY2tlcmJvYXJkRm9yTWlz
c2luZ1RpbGVzOyB9CiAKLSAgICBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhdHVzIHRy
eVNjcm9sbChjb25zdCBJbnRQb2ludCYgdmlld3BvcnRQb2ludCwgQ0NJbnB1dEhhbmRsZXJDbGll
bnQ6OlNjcm9sbElucHV0VHlwZSkgY29uc3Q7Ci0KICAgICBjb25zdCBJbnRSZWN0JiB2aXNpYmxl
TGF5ZXJSZWN0KCkgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlTGF5ZXJSZWN0OyB9CiAgICAgdm9p
ZCBzZXRWaXNpYmxlTGF5ZXJSZWN0KGNvbnN0IEludFJlY3QmIHZpc2libGVMYXllclJlY3QpIHsg
bV92aXNpYmxlTGF5ZXJSZWN0ID0gdmlzaWJsZUxheWVyUmVjdDsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmNwcAppbmRleCBjOGRiMWMwZDVlZTYyOWEyYmZkMTUzOTQ0YzE0ZjE4MWI0
NDcxMDIyLi4zOWQyYTE2NThlMDdmMGJmNzFjYWI2N2E1NjZhNzU1MTJlY2VlYzdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTU4OCw0MiArNTg4LDE1IEBAIHZvaWQgQ0NM
YXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0CiAgICAgb2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5y
ZWNvcmRNZXRyaWNzKHRoaXMpOwogfQogCi1zdGF0aWMgTGF5ZXJDaHJvbWl1bSogZmluZEZpcnN0
U2Nyb2xsYWJsZUxheWVyKExheWVyQ2hyb21pdW0qIGxheWVyKQotewotICAgIGlmICghbGF5ZXIp
Ci0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKGxheWVyLT5zY3JvbGxhYmxlKCkpCi0gICAg
ICAgIHJldHVybiBsYXllcjsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGF5ZXItPmNo
aWxkcmVuKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgTGF5ZXJDaHJvbWl1bSogZm91bmQgPSBm
aW5kRmlyc3RTY3JvbGxhYmxlTGF5ZXIobGF5ZXItPmNoaWxkcmVuKClbaV0uZ2V0KCkpOwotICAg
ICAgICBpZiAoZm91bmQpCi0gICAgICAgICAgICByZXR1cm4gZm91bmQ7Ci0gICAgfQotCi0gICAg
cmV0dXJuIDA7Ci19Ci0KIHZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBseVNjcm9sbEFuZFNjYWxl
KGNvbnN0IENDU2Nyb2xsQW5kU2NhbGVTZXQmIGluZm8pCiB7Ci0gICAgaWYgKCFtX3Jvb3RMYXll
cikKKyAgICAvLyBGSVhNRTogcHVzaGluZyBzY3JvbGwgb2Zmc2V0cyB0byBub24tcm9vdCBsYXll
cnMgbm90IGltcGxlbWVudGVkCisgICAgaWYgKCFpbmZvLnNjcm9sbHMuc2l6ZSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBMYXllckNocm9taXVtKiByb290U2Nyb2xsTGF5ZXIgPSBmaW5kRmly
c3RTY3JvbGxhYmxlTGF5ZXIobV9yb290TGF5ZXIuZ2V0KCkpOwotICAgIEludFNpemUgcm9vdFNj
cm9sbERlbHRhOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbmZvLnNjcm9sbHMuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBDQ0xheWVyVHJlZUhv
c3RDb21tb246OmZpbmRMYXllckluU3VidHJlZShtX3Jvb3RMYXllci5nZXQoKSwgaW5mby5zY3Jv
bGxzW2ldLmxheWVySWQpOwotICAgICAgICBpZiAoIWxheWVyKQotICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIGlmIChsYXllciA9PSByb290U2Nyb2xsTGF5ZXIpCi0gICAgICAgICAgICBy
b290U2Nyb2xsRGVsdGEgKz0gaW5mby5zY3JvbGxzW2ldLnNjcm9sbERlbHRhOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBsYXllci0+c2Nyb2xsQnkoaW5mby5zY3JvbGxzW2ldLnNjcm9sbERl
bHRhKTsKLSAgICB9Ci0gICAgaWYgKCFyb290U2Nyb2xsRGVsdGEuaXNaZXJvKCkgfHwgaW5mby5w
YWdlU2NhbGVEZWx0YSAhPSAxKQotICAgICAgICBtX2NsaWVudC0+YXBwbHlTY3JvbGxBbmRTY2Fs
ZShyb290U2Nyb2xsRGVsdGEsIGluZm8ucGFnZVNjYWxlRGVsdGEpOworICAgIEFTU0VSVChpbmZv
LnNjcm9sbHMuc2l6ZSgpID09IDEpOworICAgIEludFNpemUgc2Nyb2xsRGVsdGEgPSBpbmZvLnNj
cm9sbHNbMF0uc2Nyb2xsRGVsdGE7CisgICAgbV9jbGllbnQtPmFwcGx5U2Nyb2xsQW5kU2NhbGUo
c2Nyb2xsRGVsdGEsIGluZm8ucGFnZVNjYWxlRGVsdGEpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6c3RhcnRSYXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdENvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgKaW5kZXggZTMyM2Q5YzQzNWQ4ZjVkNzZh
YmZhOTc3ZjYzM2NjMGM1ZWNkYjVkOS4uMzc2MmY2NGIxOWIzMTM0OTk4ZTQwYjQ0NzYzOGEyNDZm
MTI0OGJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgKQEAgLTQ2
LDEwICs0Niw2IEBAIHB1YmxpYzoKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4g
c3RhdGljIGJvb2wgcmVuZGVyU3VyZmFjZUNvbnRyaWJ1dGVzVG9UYXJnZXQoTGF5ZXJUeXBlKiwg
aW50IHRhcmdldFN1cmZhY2VMYXllcklEKTsKIAotICAgIC8vIFJldHVybnMgYSBsYXllciB3aXRo
IHRoZSBnaXZlbiBpZCBpZiBvbmUgZXhpc3RzIGluIHRoZSBzdWJ0cmVlIHN0YXJ0aW5nCi0gICAg
Ly8gZnJvbSB0aGUgZ2l2ZW4gcm9vdCBsYXllciAoaW5jbHVkaW5nIG1hc2sgYW5kIHJlcGxpY2Eg
bGF5ZXJzKS4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+IHN0YXRpYyBMYXllclR5
cGUqIGZpbmRMYXllckluU3VidHJlZShMYXllclR5cGUqIHJvb3RMYXllciwgaW50IGxheWVySWQp
OwotCiAgICAgc3RydWN0IFNjcm9sbFVwZGF0ZUluZm8gewogICAgICAgICBpbnQgbGF5ZXJJZDsK
ICAgICAgICAgSW50U2l6ZSBzY3JvbGxEZWx0YTsKQEAgLTc1LDI1ICs3MSw2IEBAIGJvb2wgQ0NM
YXllclRyZWVIb3N0Q29tbW9uOjpyZW5kZXJTdXJmYWNlQ29udHJpYnV0ZXNUb1RhcmdldChMYXll
clR5cGUqIGxheWVyLCBpCiAgICAgcmV0dXJuIGxheWVyLT5yZW5kZXJTdXJmYWNlKCkgJiYgbGF5
ZXItPmlkKCkgIT0gdGFyZ2V0U3VyZmFjZUxheWVySUQ7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IExheWVyVHlwZT4KLUxheWVyVHlwZSogQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpmaW5kTGF5ZXJJ
blN1YnRyZWUoTGF5ZXJUeXBlKiByb290TGF5ZXIsIGludCBsYXllcklkKQotewotICAgIGlmIChy
b290TGF5ZXItPmlkKCkgPT0gbGF5ZXJJZCkKLSAgICAgICAgcmV0dXJuIHJvb3RMYXllcjsKLQot
ICAgIGlmIChyb290TGF5ZXItPm1hc2tMYXllcigpICYmIHJvb3RMYXllci0+bWFza0xheWVyKCkt
PmlkKCkgPT0gbGF5ZXJJZCkKLSAgICAgICAgcmV0dXJuIHJvb3RMYXllci0+bWFza0xheWVyKCk7
Ci0KLSAgICBpZiAocm9vdExheWVyLT5yZXBsaWNhTGF5ZXIoKSAmJiByb290TGF5ZXItPnJlcGxp
Y2FMYXllcigpLT5pZCgpID09IGxheWVySWQpCi0gICAgICAgIHJldHVybiByb290TGF5ZXItPnJl
cGxpY2FMYXllcigpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290TGF5ZXItPmNo
aWxkcmVuKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKExheWVyVHlwZSogZm91bmQgPSBm
aW5kTGF5ZXJJblN1YnRyZWUocm9vdExheWVyLT5jaGlsZHJlbigpW2ldLmdldCgpLCBsYXllcklk
KSkKLSAgICAgICAgICAgIHJldHVybiBmb3VuZDsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0K
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuY3BwCmluZGV4IDQ3Nzk1NGVlZGViYzhhN2U2MzNkMDE1MGY2ZjA5ODRkMjlh
MDJhZmIuLmU5NjA4ZDM4M2ZjODRiZjYzZTE0MTE4ZDU4NzIzYjQ2MDQ2Njg5NTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0xMDgsOSArMTA4LDcgQEAgQ0NM
YXllclRyZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1wbChjb25zdCBDQ1NldHRpbmdzJiBz
ZXR0aW5ncywgQ0NMYXllclRyZWUKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fc291
cmNlRnJhbWVOdW1iZXIoLTEpCiAgICAgLCBtX2ZyYW1lTnVtYmVyKDApCi0gICAgLCBtX3Jvb3RT
Y3JvbGxMYXllckltcGwoMCkKLSAgICAsIG1fY3VycmVudGx5U2Nyb2xsaW5nTGF5ZXJJbXBsKDAp
Ci0gICAgLCBtX3Njcm9sbGluZ0xheWVySWRGcm9tUHJldmlvdXNUcmVlKC0xKQorICAgICwgbV9z
Y3JvbGxMYXllckltcGwoMCkKICAgICAsIG1fc2V0dGluZ3Moc2V0dGluZ3MpCiAgICAgLCBtX3Zp
c2libGUodHJ1ZSkKICAgICAsIG1faGVhZHNVcERpc3BsYXkoQ0NIZWFkc1VwRGlzcGxheTo6Y3Jl
YXRlKCkpCkBAIC0xNzIsMTAgKzE3MCwxMCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFu
aW1hdGUoZG91YmxlIG1vbm90b25pY1RpbWUsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKQogCiB2b2lk
IENDTGF5ZXJUcmVlSG9zdEltcGw6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNp
emUmIHRhcmdldFBvc2l0aW9uLCBib29sIGFuY2hvclBvaW50LCBmbG9hdCBwYWdlU2NhbGUsIGRv
dWJsZSBzdGFydFRpbWUsIGRvdWJsZSBkdXJhdGlvbikKIHsKLSAgICBpZiAoIW1fcm9vdFNjcm9s
bExheWVySW1wbCkKKyAgICBpZiAoIW1fc2Nyb2xsTGF5ZXJJbXBsKQogICAgICAgICByZXR1cm47
CiAKLSAgICBJbnRTaXplIHNjcm9sbFRvdGFsID0gZmxvb3JlZEludFNpemUobV9yb290U2Nyb2xs
TGF5ZXJJbXBsLT5zY3JvbGxQb3NpdGlvbigpICsgbV9yb290U2Nyb2xsTGF5ZXJJbXBsLT5zY3Jv
bGxEZWx0YSgpKTsKKyAgICBJbnRTaXplIHNjcm9sbFRvdGFsID0gZmxvb3JlZEludFNpemUobV9z
Y3JvbGxMYXllckltcGwtPnNjcm9sbFBvc2l0aW9uKCkgKyBtX3Njcm9sbExheWVySW1wbC0+c2Ny
b2xsRGVsdGEoKSk7CiAgICAgc2Nyb2xsVG90YWwuc2NhbGUobV9wYWdlU2NhbGVEZWx0YSk7CiAg
ICAgZmxvYXQgc2NhbGVUb3RhbCA9IG1fcGFnZVNjYWxlICogbV9wYWdlU2NhbGVEZWx0YTsKICAg
ICBJbnRTaXplIHNjYWxlZENvbnRlbnRTaXplID0gY29udGVudFNpemUoKTsKQEAgLTI0NSw3ICsy
NDMsNiBAQCBzdGF0aWMgRmxvYXRSZWN0IGRhbWFnZUluU3VyZmFjZVNwYWNlKENDTGF5ZXJJbXBs
KiByZW5kZXJTdXJmYWNlTGF5ZXIsIGNvbnN0IEZsbwogdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpjYWxjdWxhdGVSZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KENDTGF5ZXJMaXN0JiByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0KQogewogICAgIEFTU0VSVChyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmlzRW1w
dHkoKSk7Ci0gICAgQVNTRVJUKG1fcm9vdExheWVySW1wbCk7CiAKICAgICByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0LmFwcGVuZChtX3Jvb3RMYXllckltcGwuZ2V0KCkpOwogCkBAIC0zNzMsOSArMzcw
LDkgQEAgSW50U2l6ZSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjb250ZW50U2l6ZSgpIGNvbnN0CiB7
CiAgICAgLy8gVE9ETyhhZWxpYXMpOiBIYXJkY29kaW5nIHRoZSBmaXJzdCBjaGlsZCBoZXJlIGlz
IHdlaXJkLiBUaGluayBvZgogICAgIC8vIGEgY2xlYW5lciB3YXkgdG8gZ2V0IHRoZSBjb250ZW50
Qm91bmRzIG9uIHRoZSBJbXBsIHNpZGUuCi0gICAgaWYgKCFtX3Jvb3RTY3JvbGxMYXllckltcGwg
fHwgbV9yb290U2Nyb2xsTGF5ZXJJbXBsLT5jaGlsZHJlbigpLmlzRW1wdHkoKSkKKyAgICBpZiAo
IW1fc2Nyb2xsTGF5ZXJJbXBsIHx8IG1fc2Nyb2xsTGF5ZXJJbXBsLT5jaGlsZHJlbigpLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKLSAgICByZXR1cm4gbV9yb290U2Nyb2xs
TGF5ZXJJbXBsLT5jaGlsZHJlbigpWzBdLT5jb250ZW50Qm91bmRzKCk7CisgICAgcmV0dXJuIG1f
c2Nyb2xsTGF5ZXJJbXBsLT5jaGlsZHJlbigpWzBdLT5jb250ZW50Qm91bmRzKCk7CiB9CiAKIGJv
b2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6cHJlcGFyZVRvRHJhdyhGcmFtZURhdGEmIGZyYW1lKQpA
QCAtMzg0LDcgKzM4MSw2IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6cHJlcGFyZVRvRHJh
dyhGcmFtZURhdGEmIGZyYW1lKQogCiAgICAgZnJhbWUucmVuZGVyUGFzc2VzLmNsZWFyKCk7CiAg
ICAgZnJhbWUucmVuZGVyU3VyZmFjZUxheWVyTGlzdC5jbGVhcigpOwotICAgIG1fbW9zdFJlY2Vu
dFJlbmRlclN1cmZhY2VMYXllckxpc3QuY2xlYXIoKTsKIAogICAgIGlmICghbV9yb290TGF5ZXJJ
bXBsKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zOTUsOCArMzkxLDYgQEAgYm9vbCBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpwcmVwYXJlVG9EcmF3KEZyYW1lRGF0YSYgZnJhbWUpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBtX21vc3RSZWNlbnRSZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0ID0gZnJhbWUucmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLQogICAgIC8vIElmIHdlIHJl
dHVybiB0cnVlLCB0aGVuIHdlIGV4cGVjdCBkcmF3TGF5ZXJzKCkgdG8gYmUgY2FsbGVkIGJlZm9y
ZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhZ2Fpbi4KICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAg
LTQ5NCw3ICs0ODgsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnJlYWRiYWNrKHZvaWQq
IHBpeGVscywgY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBtX2xheWVyUmVuZGVyZXItPmdldEZy
YW1lYnVmZmVyUGl4ZWxzKHBpeGVscywgcmVjdCk7CiB9CiAKLXN0YXRpYyBDQ0xheWVySW1wbCog
ZmluZFJvb3RTY3JvbGxMYXllcihDQ0xheWVySW1wbCogbGF5ZXIpCitzdGF0aWMgQ0NMYXllcklt
cGwqIGZpbmRTY3JvbGxMYXllcihDQ0xheWVySW1wbCogbGF5ZXIpCiB7CiAgICAgaWYgKCFsYXll
cikKICAgICAgICAgcmV0dXJuIDA7CkBAIC01MDMsNyArNDk3LDcgQEAgc3RhdGljIENDTGF5ZXJJ
bXBsKiBmaW5kUm9vdFNjcm9sbExheWVyKENDTGF5ZXJJbXBsKiBsYXllcikKICAgICAgICAgcmV0
dXJuIGxheWVyOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsYXllci0+Y2hpbGRyZW4o
KS5zaXplKCk7ICsraSkgewotICAgICAgICBDQ0xheWVySW1wbCogZm91bmQgPSBmaW5kUm9vdFNj
cm9sbExheWVyKGxheWVyLT5jaGlsZHJlbigpW2ldLmdldCgpKTsKKyAgICAgICAgQ0NMYXllcklt
cGwqIGZvdW5kID0gZmluZFNjcm9sbExheWVyKGxheWVyLT5jaGlsZHJlbigpW2ldLmdldCgpKTsK
ICAgICAgICAgaWYgKGZvdW5kKQogICAgICAgICAgICAgcmV0dXJuIGZvdW5kOwogICAgIH0KQEAg
LTUxMSw0MiArNTA1LDEyIEBAIHN0YXRpYyBDQ0xheWVySW1wbCogZmluZFJvb3RTY3JvbGxMYXll
cihDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgcmV0dXJuIDA7CiB9CiAKLS8vIENvbnRlbnQgbGF5
ZXJzIGNhbiBiZSBlaXRoZXIgZGlyZWN0bHkgc2Nyb2xsYWJsZSBvciBjb250YWluZWQgaW4gYW4g
b3V0ZXIKLS8vIHNjcm9sbGluZyBsYXllciB3aGljaCBhcHBsaWVzIHRoZSBzY3JvbGwgdHJhbnNm
b3JtLiBHaXZlbiBhIGNvbnRlbnQgbGF5ZXIsCi0vLyB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhl
IGFzc29jaWF0ZWQgc2Nyb2xsIGxheWVyIGlmIGFueS4KLXN0YXRpYyBDQ0xheWVySW1wbCogZmlu
ZFNjcm9sbExheWVyRm9yQ29udGVudExheWVyKENDTGF5ZXJJbXBsKiBsYXllckltcGwpCi17Ci0g
ICAgaWYgKCFsYXllckltcGwpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKGxheWVySW1w
bC0+c2Nyb2xsYWJsZSgpKQotICAgICAgICByZXR1cm4gbGF5ZXJJbXBsOwotCi0gICAgaWYgKGxh
eWVySW1wbC0+ZHJhd3NDb250ZW50KCkgJiYgbGF5ZXJJbXBsLT5wYXJlbnQoKSAmJiBsYXllcklt
cGwtPnBhcmVudCgpLT5zY3JvbGxhYmxlKCkpCi0gICAgICAgIHJldHVybiBsYXllckltcGwtPnBh
cmVudCgpOwotCi0gICAgcmV0dXJuIDA7Ci19Ci0KIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6
c2V0Um9vdExheWVyKFBhc3NPd25QdHI8Q0NMYXllckltcGw+IGxheWVyKQogewogICAgIG1fcm9v
dExheWVySW1wbCA9IGxheWVyOwotICAgIG1fcm9vdFNjcm9sbExheWVySW1wbCA9IGZpbmRSb290
U2Nyb2xsTGF5ZXIobV9yb290TGF5ZXJJbXBsLmdldCgpKTsKLSAgICBtX2N1cnJlbnRseVNjcm9s
bGluZ0xheWVySW1wbCA9IDA7Ci0KLSAgICBpZiAobV9yb290TGF5ZXJJbXBsICYmIG1fc2Nyb2xs
aW5nTGF5ZXJJZEZyb21QcmV2aW91c1RyZWUgIT0gLTEpCi0gICAgICAgIG1fY3VycmVudGx5U2Ny
b2xsaW5nTGF5ZXJJbXBsID0gQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpmaW5kTGF5ZXJJblN1YnRy
ZWUobV9yb290TGF5ZXJJbXBsLmdldCgpLCBtX3Njcm9sbGluZ0xheWVySWRGcm9tUHJldmlvdXNU
cmVlKTsKIAotICAgIG1fc2Nyb2xsaW5nTGF5ZXJJZEZyb21QcmV2aW91c1RyZWUgPSAtMTsKLX0K
LQotUGFzc093blB0cjxDQ0xheWVySW1wbD4gQ0NMYXllclRyZWVIb3N0SW1wbDo6cmVsZWFzZVJv
b3RMYXllcigpCi17Ci0gICAgbV9zY3JvbGxpbmdMYXllcklkRnJvbVByZXZpb3VzVHJlZSA9IG1f
Y3VycmVudGx5U2Nyb2xsaW5nTGF5ZXJJbXBsID8gbV9jdXJyZW50bHlTY3JvbGxpbmdMYXllcklt
cGwtPmlkKCkgOiAtMTsKLSAgICBtX2N1cnJlbnRseVNjcm9sbGluZ0xheWVySW1wbCA9IDA7Ci0K
LSAgICBtX21vc3RSZWNlbnRSZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmNsZWFyKCk7Ci0gICAgcmV0
dXJuIG1fcm9vdExheWVySW1wbC5yZWxlYXNlKCk7CisgICAgLy8gRklYTUU6IEN1cnJlbnRseSwg
dGhpcyBvbmx5IGZpbmRzIHRoZSBmaXJzdCBzY3JvbGxhYmxlIGxheWVyLgorICAgIG1fc2Nyb2xs
TGF5ZXJJbXBsID0gZmluZFNjcm9sbExheWVyKG1fcm9vdExheWVySW1wbC5nZXQoKSk7CiB9CiAK
IHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCkBAIC01
OTcsMzQgKzU2MSw2IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0Vmlld3BvcnRTaXpl
KGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKICAgICAgICAgbV9sYXllclJlbmRlcmVyLT52
aWV3cG9ydENoYW5nZWQoKTsKIH0KIAotc3RhdGljIHZvaWQgYWRqdXN0U2Nyb2xsc0ZvclBhZ2VT
Y2FsZUNoYW5nZShDQ0xheWVySW1wbCogbGF5ZXJJbXBsLCBmbG9hdCBwYWdlU2NhbGVDaGFuZ2Up
Ci17Ci0gICAgaWYgKCFsYXllckltcGwpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChsYXll
ckltcGwtPnNjcm9sbGFibGUoKSkgewotICAgICAgICAvLyBXZSBuZWVkIHRvIGNvbnZlcnQgaW1w
bC1zaWRlIHNjcm9sbCBkZWx0YXMgdG8gcGFnZVNjYWxlIHNwYWNlLgotICAgICAgICBGbG9hdFNp
emUgc2Nyb2xsRGVsdGEgPSBsYXllckltcGwtPnNjcm9sbERlbHRhKCk7Ci0gICAgICAgIHNjcm9s
bERlbHRhLnNjYWxlKHBhZ2VTY2FsZUNoYW5nZSk7Ci0gICAgICAgIGxheWVySW1wbC0+c2V0U2Ny
b2xsRGVsdGEoc2Nyb2xsRGVsdGEpOwotICAgIH0KLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbGF5ZXJJbXBsLT5jaGlsZHJlbigpLnNpemUoKTsgKytpKQotICAgICAgICBhZGp1c3RTY3Jv
bGxzRm9yUGFnZVNjYWxlQ2hhbmdlKGxheWVySW1wbC0+Y2hpbGRyZW4oKVtpXS5nZXQoKSwgcGFn
ZVNjYWxlQ2hhbmdlKTsKLX0KLQotc3RhdGljIHZvaWQgYXBwbHlQYWdlU2NhbGVEZWx0YVRvU2Ny
b2xsTGF5ZXJzKENDTGF5ZXJJbXBsKiBsYXllckltcGwsIGZsb2F0IHBhZ2VTY2FsZURlbHRhKQot
ewotICAgIGlmICghbGF5ZXJJbXBsKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobGF5ZXJJ
bXBsLT5zY3JvbGxhYmxlKCkpCi0gICAgICAgIGxheWVySW1wbC0+c2V0UGFnZVNjYWxlRGVsdGEo
cGFnZVNjYWxlRGVsdGEpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsYXllckltcGwt
PmNoaWxkcmVuKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIGFwcGx5UGFnZVNjYWxlRGVsdGFUb1Nj
cm9sbExheWVycyhsYXllckltcGwtPmNoaWxkcmVuKClbaV0uZ2V0KCksIHBhZ2VTY2FsZURlbHRh
KTsKLX0KLQogdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRQYWdlU2NhbGVGYWN0b3JBbmRM
aW1pdHMoZmxvYXQgcGFnZVNjYWxlLCBmbG9hdCBtaW5QYWdlU2NhbGUsIGZsb2F0IG1heFBhZ2VT
Y2FsZSkKIHsKICAgICBpZiAoIXBhZ2VTY2FsZSkKQEAgLTYzOSwxMyArNTc1LDI1IEBAIHZvaWQg
Q0NMYXllclRyZWVIb3N0SW1wbDo6c2V0UGFnZVNjYWxlRmFjdG9yQW5kTGltaXRzKGZsb2F0IHBh
Z2VTY2FsZSwgZmxvYXQgbWluCiAgICAgZmxvYXQgcGFnZVNjYWxlQ2hhbmdlID0gcGFnZVNjYWxl
IC8gbV9wYWdlU2NhbGU7CiAgICAgbV9wYWdlU2NhbGUgPSBwYWdlU2NhbGU7CiAKLSAgICBpZiAo
cGFnZVNjYWxlQ2hhbmdlICE9IDEpCi0gICAgICAgIGFkanVzdFNjcm9sbHNGb3JQYWdlU2NhbGVD
aGFuZ2UobV9yb290U2Nyb2xsTGF5ZXJJbXBsLCBwYWdlU2NhbGVDaGFuZ2UpOworICAgIGFkanVz
dFNjcm9sbHNGb3JQYWdlU2NhbGVDaGFuZ2UocGFnZVNjYWxlQ2hhbmdlKTsKIAogICAgIC8vIENs
YW1wIGRlbHRhIHRvIGxpbWl0cyBhbmQgcmVmcmVzaCBkaXNwbGF5IG1hdHJpeC4KICAgICBzZXRQ
YWdlU2NhbGVEZWx0YShtX3BhZ2VTY2FsZURlbHRhIC8gbV9zZW50UGFnZVNjYWxlRGVsdGEpOwog
ICAgIG1fc2VudFBhZ2VTY2FsZURlbHRhID0gMTsKLSAgICBhcHBseVBhZ2VTY2FsZURlbHRhVG9T
Y3JvbGxMYXllcnMobV9yb290U2Nyb2xsTGF5ZXJJbXBsLCBtX3BhZ2VTY2FsZURlbHRhKTsKKyAg
ICBhcHBseVBhZ2VTY2FsZURlbHRhVG9TY3JvbGxMYXllcigpOworfQorCit2b2lkIENDTGF5ZXJU
cmVlSG9zdEltcGw6OmFkanVzdFNjcm9sbHNGb3JQYWdlU2NhbGVDaGFuZ2UoZmxvYXQgcGFnZVNj
YWxlQ2hhbmdlKQoreworICAgIGlmIChwYWdlU2NhbGVDaGFuZ2UgPT0gMSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gV2UgYWxzbyBuZWVkIHRvIGNvbnZlcnQgaW1wbC1zaWRlIHNjcm9sbCBk
ZWx0YXMgdG8gcGFnZVNjYWxlIHNwYWNlLgorICAgIGlmIChtX3Njcm9sbExheWVySW1wbCkgewor
ICAgICAgICBGbG9hdFNpemUgc2Nyb2xsRGVsdGEgPSBtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xs
RGVsdGEoKTsKKyAgICAgICAgc2Nyb2xsRGVsdGEuc2NhbGUocGFnZVNjYWxlQ2hhbmdlKTsKKyAg
ICAgICAgbV9zY3JvbGxMYXllckltcGwtPnNldFNjcm9sbERlbHRhKHNjcm9sbERlbHRhKTsKKyAg
ICB9CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0UGFnZVNjYWxlRGVsdGEoZmxv
YXQgZGVsdGEpCkBAIC02NjMsMTYgKzYxMSwyMiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6
OnNldFBhZ2VTY2FsZURlbHRhKGZsb2F0IGRlbHRhKQogICAgIG1fcGFnZVNjYWxlRGVsdGEgPSBk
ZWx0YTsKIAogICAgIHVwZGF0ZU1heFNjcm9sbFBvc2l0aW9uKCk7Ci0gICAgYXBwbHlQYWdlU2Nh
bGVEZWx0YVRvU2Nyb2xsTGF5ZXJzKG1fcm9vdFNjcm9sbExheWVySW1wbCwgbV9wYWdlU2NhbGVE
ZWx0YSk7CisgICAgYXBwbHlQYWdlU2NhbGVEZWx0YVRvU2Nyb2xsTGF5ZXIoKTsKK30KKwordm9p
ZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjphcHBseVBhZ2VTY2FsZURlbHRhVG9TY3JvbGxMYXllcigp
Cit7CisgICAgaWYgKG1fc2Nyb2xsTGF5ZXJJbXBsKQorICAgICAgICBtX3Njcm9sbExheWVySW1w
bC0+c2V0UGFnZVNjYWxlRGVsdGEobV9wYWdlU2NhbGVEZWx0YSk7CiB9CiAKIHZvaWQgQ0NMYXll
clRyZWVIb3N0SW1wbDo6dXBkYXRlTWF4U2Nyb2xsUG9zaXRpb24oKQogewotICAgIGlmICghbV9y
b290U2Nyb2xsTGF5ZXJJbXBsIHx8ICFtX3Jvb3RTY3JvbGxMYXllckltcGwtPmNoaWxkcmVuKCku
c2l6ZSgpKQorICAgIGlmICghbV9zY3JvbGxMYXllckltcGwgfHwgIW1fc2Nyb2xsTGF5ZXJJbXBs
LT5jaGlsZHJlbigpLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRmxvYXRTaXplIHZp
ZXdCb3VuZHMgPSBtX3ZpZXdwb3J0U2l6ZTsKLSAgICBpZiAoQ0NMYXllckltcGwqIGNsaXBMYXll
ciA9IG1fcm9vdFNjcm9sbExheWVySW1wbC0+cGFyZW50KCkpIHsKKyAgICBpZiAoQ0NMYXllcklt
cGwqIGNsaXBMYXllciA9IG1fc2Nyb2xsTGF5ZXJJbXBsLT5wYXJlbnQoKSkgewogICAgICAgICBp
ZiAoY2xpcExheWVyLT5tYXNrc1RvQm91bmRzKCkpCiAgICAgICAgICAgICB2aWV3Qm91bmRzID0g
Y2xpcExheWVyLT5ib3VuZHMoKTsKICAgICB9CkBAIC02ODMsNyArNjM3LDkgQEAgdm9pZCBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjp1cGRhdGVNYXhTY3JvbGxQb3NpdGlvbigpCiAgICAgLy8gaGF2aW5n
IGEgdmVydGljYWwgc2Nyb2xsYmFyIGJ1dCBubyBob3Jpem9udGFsIG92ZXJmbG93LgogICAgIG1h
eFNjcm9sbC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7CiAKLSAgICBtX3Jvb3RTY3JvbGxMYXllcklt
cGwtPnNldE1heFNjcm9sbFBvc2l0aW9uKG1heFNjcm9sbCk7CisgICAgbV9zY3JvbGxMYXllcklt
cGwtPnNldE1heFNjcm9sbFBvc2l0aW9uKG1heFNjcm9sbCk7CisKKyAgICAvLyBUT0RPKGFlbGlh
cyk6IEFsc28gdXBkYXRlIHN1YmxheWVycy4KIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpzZXROZWVkc1JlZHJhdygpCkBAIC02OTEsMTA4ICs2NDcsNDYgQEAgdm9pZCBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpzZXROZWVkc1JlZHJhdygpCiAgICAgbV9jbGllbnQtPnNldE5lZWRzUmVkcmF3
T25JbXBsVGhyZWFkKCk7CiB9CiAKLWJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6ZW5zdXJlTW9z
dFJlY2VudFJlbmRlclN1cmZhY2VMYXllckxpc3QoKQotewotICAgIGlmIChtX21vc3RSZWNlbnRS
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LnNpemUoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAg
ICBpZiAoIW1fcm9vdExheWVySW1wbCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8g
SWYgd2UgYXJlIGNhbGxlZCBhZnRlciBzZXRSb290TGF5ZXIoKSBidXQgYmVmb3JlIHByZXBhcmVU
b0RyYXcoKSwgd2UgbmVlZAotICAgIC8vIHRvIHJlY2FsY3VsYXRlIHRoZSB2aXNpYmxlIGxheWVy
cy4gVGhpcyBwcmV2ZW50cyBiZWluZyB1bmFibGUgdG8gc2Nyb2xsCi0gICAgLy8gZHVyaW5nIHBh
cnQgb2YgYSBjb21taXQuCi0gICAgY2FsY3VsYXRlUmVuZGVyU3VyZmFjZUxheWVyTGlzdChtX21v
c3RSZWNlbnRSZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKLQotICAgIHJldHVybiBtX21vc3RSZWNl
bnRSZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LnNpemUoKTsKLX0KLQogQ0NJbnB1dEhhbmRsZXJDbGll
bnQ6OlNjcm9sbFN0YXR1cyBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzY3JvbGxCZWdpbihjb25zdCBJ
bnRQb2ludCYgdmlld3BvcnRQb2ludCwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbElucHV0
VHlwZSB0eXBlKQogewotICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3RJbXBsOjpzY3Jv
bGxCZWdpbiIsIHRoaXMsIDApOwotCi0gICAgc2Nyb2xsRW5kKCk7Ci0KLSAgICBpZiAoIWVuc3Vy
ZU1vc3RSZWNlbnRSZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KCkpCisgICAgLy8gVE9ETzogQ2hlY2sg
Zm9yIHNjcm9sbGFibGUgc3VibGF5ZXJzLgorICAgIGlmICghbV9zY3JvbGxMYXllckltcGwgfHwg
IW1fc2Nyb2xsTGF5ZXJJbXBsLT5zY3JvbGxhYmxlKCkpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQo
InNjcm9sbEJlZ2luIElnbm9yZWQgbm8gc2Nyb2xsYWJsZSIsIHRoaXMsIDApOwogICAgICAgICBy
ZXR1cm4gU2Nyb2xsSWdub3JlZDsKLQotICAgIC8vIEZpcnN0IGZpbmQgb3V0IHdoaWNoIGxheWVy
IHdhcyBoaXQgYnkgd2Fsa2luZyB0aGUgc2F2ZWQgbGlzdCBvZiB2aXNpYmxlIGxheWVycyBmcm9t
IHRoZSBtb3N0IHJlY2VudCBmcmFtZS4KLSAgICBDQ0xheWVySW1wbCogbGF5ZXJJbXBsID0gMDsK
LSAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxDQ0xheWVySW1wbCwgQ0NMYXllckxpc3QsIEND
UmVuZGVyU3VyZmFjZSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s+IENDTGF5
ZXJJdGVyYXRvclR5cGU7Ci0gICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBlbmQgPSBDQ0xheWVySXRl
cmF0b3JUeXBlOjplbmQoJm1fbW9zdFJlY2VudFJlbmRlclN1cmZhY2VMYXllckxpc3QpOwotICAg
IGZvciAoQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2lu
KCZtX21vc3RSZWNlbnRSZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsgaXQgIT0gZW5kOyArK2l0KSB7
Ci0gICAgICAgIENDTGF5ZXJJbXBsKiByZW5kZXJTdXJmYWNlTGF5ZXJJbXBsID0gKCppdCk7Ci0g
ICAgICAgIGlmICghcmVuZGVyU3VyZmFjZUxheWVySW1wbC0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0o
KS5pc0ludmVydGlibGUoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBJbnRQb2lu
dCBjb250ZW50UG9pbnQocmVuZGVyU3VyZmFjZUxheWVySW1wbC0+c2NyZWVuU3BhY2VUcmFuc2Zv
cm0oKS5pbnZlcnNlKCkubWFwUG9pbnQodmlld3BvcnRQb2ludCkpOwotICAgICAgICBpZiAoIXJl
bmRlclN1cmZhY2VMYXllckltcGwtPnZpc2libGVMYXllclJlY3QoKS5jb250YWlucyhjb250ZW50
UG9pbnQpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGxheWVySW1wbCA9IHJlbmRl
clN1cmZhY2VMYXllckltcGw7Ci0gICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIC8vIFdhbGsg
dXAgdGhlIGhpZXJhcmNoeSBhbmQgbG9vayBmb3IgYSBzY3JvbGxhYmxlIGxheWVyLgotICAgIEND
TGF5ZXJJbXBsKiBwb3RlbnRpYWxseVNjcm9sbGluZ0xheWVySW1wbCA9IDA7Ci0gICAgZm9yICg7
IGxheWVySW1wbDsgbGF5ZXJJbXBsID0gbGF5ZXJJbXBsLT5wYXJlbnQoKSkgewotICAgICAgICAv
LyBUaGUgY29udGVudCBsYXllciBjYW4gYWxzbyBibG9jayBhdHRlbXB0cyB0byBzY3JvbGwgb3V0
c2lkZSB0aGUgbWFpbiB0aHJlYWQuCi0gICAgICAgIGlmIChsYXllckltcGwtPnRyeVNjcm9sbCh2
aWV3cG9ydFBvaW50LCB0eXBlKSA9PSBTY3JvbGxGYWlsZWQpCi0gICAgICAgICAgICByZXR1cm4g
U2Nyb2xsRmFpbGVkOwotCi0gICAgICAgIENDTGF5ZXJJbXBsKiBzY3JvbGxMYXllckltcGwgPSBm
aW5kU2Nyb2xsTGF5ZXJGb3JDb250ZW50TGF5ZXIobGF5ZXJJbXBsKTsKLSAgICAgICAgaWYgKCFz
Y3JvbGxMYXllckltcGwpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBTY3JvbGxT
dGF0dXMgc3RhdHVzID0gc2Nyb2xsTGF5ZXJJbXBsLT50cnlTY3JvbGwodmlld3BvcnRQb2ludCwg
dHlwZSk7Ci0KLSAgICAgICAgLy8gSWYgYW55IGxheWVyIHdhbnRzIHRvIGRpdmVydCB0aGUgc2Ny
b2xsIGV2ZW50IHRvIHRoZSBtYWluIHRocmVhZCwgYWJvcnQuCi0gICAgICAgIGlmIChzdGF0dXMg
PT0gU2Nyb2xsRmFpbGVkKQotICAgICAgICAgICAgcmV0dXJuIFNjcm9sbEZhaWxlZDsKKyAgICBp
ZiAobV9zY3JvbGxMYXllckltcGwtPnNob3VsZFNjcm9sbE9uTWFpblRocmVhZCgpKSB7CisgICAg
ICAgIFRSQUNFX0VWRU5UKCJzY3JvbGxCZWdpbiBGYWlsZWQgc2hvdWxkU2Nyb2xsT25NYWluVGhy
ZWFkIiwgdGhpcywgMCk7CisgICAgICAgIHJldHVybiBTY3JvbGxGYWlsZWQ7CisgICAgfQogCi0g
ICAgICAgIGlmIChzdGF0dXMgPT0gU2Nyb2xsU3RhcnRlZCAmJiAhcG90ZW50aWFsbHlTY3JvbGxp
bmdMYXllckltcGwpCi0gICAgICAgICAgICBwb3RlbnRpYWxseVNjcm9sbGluZ0xheWVySW1wbCA9
IHNjcm9sbExheWVySW1wbDsKKyAgICBJbnRQb2ludCBzY3JvbGxMYXllckNvbnRlbnRQb2ludCht
X3Njcm9sbExheWVySW1wbC0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKS5pbnZlcnNlKCkubWFwUG9p
bnQodmlld3BvcnRQb2ludCkpOworICAgIGlmIChtX3Njcm9sbExheWVySW1wbC0+bm9uRmFzdFNj
cm9sbGFibGVSZWdpb24oKS5jb250YWlucyhzY3JvbGxMYXllckNvbnRlbnRQb2ludCkpIHsKKyAg
ICAgICAgVFJBQ0VfRVZFTlQoInNjcm9sbEJlZ2luIEZhaWxlZCBub25GYXN0U2Nyb2xsYWJsZVJl
Z2lvbiIsIHRoaXMsIDApOworICAgICAgICByZXR1cm4gU2Nyb2xsRmFpbGVkOwogICAgIH0KIAot
ICAgIGlmIChwb3RlbnRpYWxseVNjcm9sbGluZ0xheWVySW1wbCkgewotICAgICAgICBtX2N1cnJl
bnRseVNjcm9sbGluZ0xheWVySW1wbCA9IHBvdGVudGlhbGx5U2Nyb2xsaW5nTGF5ZXJJbXBsOwot
ICAgICAgICByZXR1cm4gU2Nyb2xsU3RhcnRlZDsKKyAgICBpZiAodHlwZSA9PSBDQ0lucHV0SGFu
ZGxlckNsaWVudDo6V2hlZWwgJiYgbV9zY3JvbGxMYXllckltcGwtPmhhdmVXaGVlbEV2ZW50SGFu
ZGxlcnMoKSkgeworICAgICAgICBUUkFDRV9FVkVOVCgic2Nyb2xsQmVnaW4gRmFpbGVkIHdoZWVs
RXZlbnRIYW5kbGVycyIsIHRoaXMsIDApOworICAgICAgICByZXR1cm4gU2Nyb2xsRmFpbGVkOwog
ICAgIH0KLSAgICByZXR1cm4gU2Nyb2xsSWdub3JlZDsKKworICAgIHJldHVybiBTY3JvbGxTdGFy
dGVkOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNjcm9sbEJ5KGNvbnN0IEludFNp
emUmIHNjcm9sbERlbHRhKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3RJbXBs
OjpzY3JvbGxCeSIsIHRoaXMsIDApOwotICAgIGlmICghbV9jdXJyZW50bHlTY3JvbGxpbmdMYXll
ckltcGwpCisgICAgaWYgKCFtX3Njcm9sbExheWVySW1wbCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgRmxvYXRTaXplIHBlbmRpbmdEZWx0YShzY3JvbGxEZWx0YSk7Ci0gICAgcGVuZGluZ0RlbHRh
LnNjYWxlKDEgLyBtX3BhZ2VTY2FsZURlbHRhKTsKLQotICAgIGZvciAoQ0NMYXllckltcGwqIGxh
eWVySW1wbCA9IG1fY3VycmVudGx5U2Nyb2xsaW5nTGF5ZXJJbXBsOyBsYXllckltcGwgJiYgIXBl
bmRpbmdEZWx0YS5pc1plcm8oKTsgbGF5ZXJJbXBsID0gbGF5ZXJJbXBsLT5wYXJlbnQoKSkgewot
ICAgICAgICBpZiAoIWxheWVySW1wbC0+c2Nyb2xsYWJsZSgpKQotICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIEZsb2F0U2l6ZSBwcmV2aW91c0RlbHRhKGxheWVySW1wbC0+c2Nyb2xsRGVs
dGEoKSk7Ci0gICAgICAgIGxheWVySW1wbC0+c2Nyb2xsQnkocGVuZGluZ0RlbHRhKTsKLSAgICAg
ICAgLy8gUmVzZXQgdGhlIHBlbmRpbmcgc2Nyb2xsIGRlbHRhIHRvIHplcm8gaWYgdGhlIGxheWVy
IHdhcyBhYmxlIHRvIG1vdmUgYWxvbmcgdGhlIHJlcXVlc3RlZAotICAgICAgICAvLyBheGlzLiBU
aGlzIGlzIHRvIGVuc3VyZSBpdCBpcyBwb3NzaWJsZSB0byBzY3JvbGwgZXhhY3RseSB0byB0aGUg
YmVnaW5uaW5nIG9yIGVuZCBvZiBhCi0gICAgICAgIC8vIHNjcm9sbCBhcmVhIHJlZ2FyZGxlc3Mg
b2YgdGhlIHNjcm9sbCBzdGVwLiBGb3IgZGlhZ29uYWwgc2Nyb2xscyB0aGlzIGFsc28gYXZvaWRz
IGFwcGx5aW5nCi0gICAgICAgIC8vIHRoZSBzY3JvbGwgb24gb25lIGF4aXMgdG8gbXVsdGlwbGUg
bGF5ZXJzLgotICAgICAgICBpZiAocHJldmlvdXNEZWx0YS53aWR0aCgpICE9IGxheWVySW1wbC0+
c2Nyb2xsRGVsdGEoKS53aWR0aCgpKQotICAgICAgICAgICAgcGVuZGluZ0RlbHRhLnNldFdpZHRo
KDApOwotICAgICAgICBpZiAocHJldmlvdXNEZWx0YS5oZWlnaHQoKSAhPSBsYXllckltcGwtPnNj
cm9sbERlbHRhKCkuaGVpZ2h0KCkpCi0gICAgICAgICAgICBwZW5kaW5nRGVsdGEuc2V0SGVpZ2h0
KDApOwotICAgIH0KLQotICAgIGlmIChwZW5kaW5nRGVsdGEgIT0gc2Nyb2xsRGVsdGEpIHsKLSAg
ICAgICAgbV9jbGllbnQtPnNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCk7Ci0gICAgICAgIG1f
Y2xpZW50LT5zZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpOwotICAgIH0KKyAgICBtX3Njcm9s
bExheWVySW1wbC0+c2Nyb2xsQnkoc2Nyb2xsRGVsdGEpOworICAgIG1fY2xpZW50LT5zZXROZWVk
c0NvbW1pdE9uSW1wbFRocmVhZCgpOworICAgIG1fY2xpZW50LT5zZXROZWVkc1JlZHJhd09uSW1w
bFRocmVhZCgpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNjcm9sbEVuZCgpCiB7
Ci0gICAgbV9jdXJyZW50bHlTY3JvbGxpbmdMYXllckltcGwgPSAwOwotICAgIG1fc2Nyb2xsaW5n
TGF5ZXJJZEZyb21QcmV2aW91c1RyZWUgPSAtMTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpwaW5jaEdlc3R1cmVCZWdpbigpCkBAIC04MDYsNyArNzAwLDcgQEAgdm9pZCBDQ0xheWVy
VHJlZUhvc3RJbXBsOjpwaW5jaEdlc3R1cmVVcGRhdGUoZmxvYXQgbWFnbmlmeURlbHRhLAogewog
ICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3RJbXBsOjpwaW5jaEdlc3R1cmVVcGRhdGUi
LCB0aGlzLCAwKTsKIAotICAgIGlmICghbV9yb290U2Nyb2xsTGF5ZXJJbXBsKQorICAgIGlmICgh
bV9zY3JvbGxMYXllckltcGwpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3ByZXZpb3Vz
UGluY2hBbmNob3IgPT0gSW50UG9pbnQ6Onplcm8oKSkKQEAgLTgyMSw3ICs3MTUsNyBAQCB2b2lk
IENDTGF5ZXJUcmVlSG9zdEltcGw6OnBpbmNoR2VzdHVyZVVwZGF0ZShmbG9hdCBtYWduaWZ5RGVs
dGEsCiAKICAgICBtX3ByZXZpb3VzUGluY2hBbmNob3IgPSBhbmNob3I7CiAKLSAgICBtX3Jvb3RT
Y3JvbGxMYXllckltcGwtPnNjcm9sbEJ5KHJvdW5kZWRJbnRTaXplKG1vdmUpKTsKKyAgICBtX3Nj
cm9sbExheWVySW1wbC0+c2Nyb2xsQnkocm91bmRlZEludFNpemUobW92ZSkpOwogICAgIG1fY2xp
ZW50LT5zZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpOwogICAgIG1fY2xpZW50LT5zZXROZWVk
c1JlZHJhd09uSW1wbFRocmVhZCgpOwogfQpAQCAtODQzLDcgKzczNyw3IEBAIHZvaWQgQ0NMYXll
clRyZWVIb3N0SW1wbDo6Y29tcHV0ZURvdWJsZVRhcFpvb21EZWx0YXMoQ0NTY3JvbGxBbmRTY2Fs
ZVNldCogc2Nyb2xsCiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y29tcHV0ZVBpbmNoWm9v
bURlbHRhcyhDQ1Njcm9sbEFuZFNjYWxlU2V0KiBzY3JvbGxJbmZvKQogewotICAgIGlmICghbV9y
b290U2Nyb2xsTGF5ZXJJbXBsKQorICAgIGlmICghbV9zY3JvbGxMYXllckltcGwpCiAgICAgICAg
IHJldHVybjsKIAogICAgIC8vIE9ubHkgc2VuZCBmYWtlIHNjcm9sbC96b29tIGRlbHRhcyBpZiB3
ZSdyZSBwaW5jaCB6b29taW5nIG91dCBieSBhCkBAIC04NTUsNyArNzQ5LDcgQEAgdm9pZCBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpjb21wdXRlUGluY2hab29tRGVsdGFzKENDU2Nyb2xsQW5kU2NhbGVT
ZXQqIHNjcm9sbEluZm8KIAogICAgIC8vIENvbXB1dGUgd2hlcmUgdGhlIHNjcm9sbCBvZmZzZXQv
cGFnZSBzY2FsZSB3b3VsZCBiZSBpZiBmdWxseSBwaW5jaC16b29tZWQKICAgICAvLyBvdXQgZnJv
bSB0aGUgYW5jaG9yIHBvaW50LgotICAgIEludFNpemUgc2Nyb2xsQmVnaW4gPSBmbG9vcmVkSW50
U2l6ZShtX3Jvb3RTY3JvbGxMYXllckltcGwtPnNjcm9sbFBvc2l0aW9uKCkgKyBtX3Jvb3RTY3Jv
bGxMYXllckltcGwtPnNjcm9sbERlbHRhKCkpOworICAgIEludFNpemUgc2Nyb2xsQmVnaW4gPSBm
bG9vcmVkSW50U2l6ZShtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsUG9zaXRpb24oKSArIG1fc2Ny
b2xsTGF5ZXJJbXBsLT5zY3JvbGxEZWx0YSgpKTsKICAgICBzY3JvbGxCZWdpbi5zY2FsZShtX3Bh
Z2VTY2FsZURlbHRhKTsKICAgICBmbG9hdCBzY2FsZUJlZ2luID0gbV9wYWdlU2NhbGUgKiBtX3Bh
Z2VTY2FsZURlbHRhOwogICAgIGZsb2F0IHBhZ2VTY2FsZURlbHRhVG9TZW5kID0gbV9taW5QYWdl
U2NhbGUgLyBtX3BhZ2VTY2FsZTsKQEAgLTg3NCw0MSArNzY4LDIxIEBAIHZvaWQgQ0NMYXllclRy
ZWVIb3N0SW1wbDo6Y29tcHV0ZVBpbmNoWm9vbURlbHRhcyhDQ1Njcm9sbEFuZFNjYWxlU2V0KiBz
Y3JvbGxJbmZvCiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6bWFrZVNjcm9sbEFuZFNjYWxl
U2V0KENDU2Nyb2xsQW5kU2NhbGVTZXQqIHNjcm9sbEluZm8sIGNvbnN0IEludFNpemUmIHNjcm9s
bE9mZnNldCwgZmxvYXQgcGFnZVNjYWxlKQogewotICAgIGlmICghbV9yb290U2Nyb2xsTGF5ZXJJ
bXBsKQorICAgIGlmICghbV9zY3JvbGxMYXllckltcGwpCiAgICAgICAgIHJldHVybjsKIAogICAg
IENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6U2Nyb2xsVXBkYXRlSW5mbyBzY3JvbGw7Ci0gICAgc2Ny
b2xsLmxheWVySWQgPSBtX3Jvb3RTY3JvbGxMYXllckltcGwtPmlkKCk7Ci0gICAgc2Nyb2xsLnNj
cm9sbERlbHRhID0gc2Nyb2xsT2Zmc2V0IC0gdG9TaXplKG1fcm9vdFNjcm9sbExheWVySW1wbC0+
c2Nyb2xsUG9zaXRpb24oKSk7CisgICAgc2Nyb2xsLmxheWVySWQgPSBtX3Njcm9sbExheWVySW1w
bC0+aWQoKTsKKyAgICBzY3JvbGwuc2Nyb2xsRGVsdGEgPSBzY3JvbGxPZmZzZXQgLSB0b1NpemUo
bV9zY3JvbGxMYXllckltcGwtPnNjcm9sbFBvc2l0aW9uKCkpOwogICAgIHNjcm9sbEluZm8tPnNj
cm9sbHMuYXBwZW5kKHNjcm9sbCk7Ci0gICAgbV9yb290U2Nyb2xsTGF5ZXJJbXBsLT5zZXRTZW50
U2Nyb2xsRGVsdGEoc2Nyb2xsLnNjcm9sbERlbHRhKTsKKyAgICBtX3Njcm9sbExheWVySW1wbC0+
c2V0U2VudFNjcm9sbERlbHRhKHNjcm9sbC5zY3JvbGxEZWx0YSk7CiAgICAgbV9zZW50UGFnZVNj
YWxlRGVsdGEgPSBzY3JvbGxJbmZvLT5wYWdlU2NhbGVEZWx0YSA9IHBhZ2VTY2FsZSAvIG1fcGFn
ZVNjYWxlOwogfQogCi1zdGF0aWMgdm9pZCBjb2xsZWN0U2Nyb2xsRGVsdGFzKENDU2Nyb2xsQW5k
U2NhbGVTZXQqIHNjcm9sbEluZm8sIENDTGF5ZXJJbXBsKiBsYXllckltcGwpCi17Ci0gICAgaWYg
KCFsYXllckltcGwpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghbGF5ZXJJbXBsLT5zY3Jv
bGxEZWx0YSgpLmlzWmVybygpKSB7Ci0gICAgICAgIEludFNpemUgc2Nyb2xsRGVsdGEgPSBmbG9v
cmVkSW50U2l6ZShsYXllckltcGwtPnNjcm9sbERlbHRhKCkpOwotICAgICAgICBDQ0xheWVyVHJl
ZUhvc3RDb21tb246OlNjcm9sbFVwZGF0ZUluZm8gc2Nyb2xsOwotICAgICAgICBzY3JvbGwubGF5
ZXJJZCA9IGxheWVySW1wbC0+aWQoKTsKLSAgICAgICAgc2Nyb2xsLnNjcm9sbERlbHRhID0gc2Ny
b2xsRGVsdGE7Ci0gICAgICAgIHNjcm9sbEluZm8tPnNjcm9sbHMuYXBwZW5kKHNjcm9sbCk7Ci0g
ICAgICAgIGxheWVySW1wbC0+c2V0U2VudFNjcm9sbERlbHRhKHNjcm9sbERlbHRhKTsKLSAgICB9
Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxheWVySW1wbC0+Y2hpbGRyZW4oKS5zaXpl
KCk7ICsraSkKLSAgICAgICAgY29sbGVjdFNjcm9sbERlbHRhcyhzY3JvbGxJbmZvLCBsYXllcklt
cGwtPmNoaWxkcmVuKClbaV0uZ2V0KCkpOwotfQotCiBQYXNzT3duUHRyPENDU2Nyb2xsQW5kU2Nh
bGVTZXQ+IENDTGF5ZXJUcmVlSG9zdEltcGw6OnByb2Nlc3NTY3JvbGxEZWx0YXMoKQogewogICAg
IE93blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBzY3JvbGxJbmZvID0gYWRvcHRQdHIobmV3IEND
U2Nyb2xsQW5kU2NhbGVTZXQoKSk7Ci0gICAgY29sbGVjdFNjcm9sbERlbHRhcyhzY3JvbGxJbmZv
LmdldCgpLCBtX3Jvb3RMYXllckltcGwuZ2V0KCkpOwotCi0gICAgYm9vbCBkaWRNb3ZlID0gc2Ny
b2xsSW5mby0+c2Nyb2xscy5zaXplKCkgfHwgbV9wYWdlU2NhbGVEZWx0YSAhPSAxOworICAgIGJv
b2wgZGlkTW92ZSA9IG1fc2Nyb2xsTGF5ZXJJbXBsICYmICghbV9zY3JvbGxMYXllckltcGwtPnNj
cm9sbERlbHRhKCkuaXNaZXJvKCkgfHwgbV9wYWdlU2NhbGVEZWx0YSAhPSAxLjBmKTsKICAgICBp
ZiAoIWRpZE1vdmUgfHwgbV9waW5jaEdlc3R1cmVBY3RpdmUgfHwgbV9wYWdlU2NhbGVBbmltYXRp
b24pIHsKICAgICAgICAgbV9zZW50UGFnZVNjYWxlRGVsdGEgPSBzY3JvbGxJbmZvLT5wYWdlU2Nh
bGVEZWx0YSA9IDE7CiAgICAgICAgIGlmIChtX3BpbmNoR2VzdHVyZUFjdGl2ZSkKQEAgLTkyMCw2
ICs3OTQsMTQgQEAgUGFzc093blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBDQ0xheWVyVHJlZUhv
c3RJbXBsOjpwcm9jZXNzU2Nyb2xsRGVsdGFzKCkKIAogICAgIG1fc2VudFBhZ2VTY2FsZURlbHRh
ID0gc2Nyb2xsSW5mby0+cGFnZVNjYWxlRGVsdGEgPSBtX3BhZ2VTY2FsZURlbHRhOwogCisgICAg
Ly8gRklYTUU6IHRyYWNrIHNjcm9sbHMgZnJvbSBsYXllcnMgb3RoZXIgdGhhbiB0aGUgcm9vdAor
ICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6U2Nyb2xsVXBkYXRlSW5mbyBzY3JvbGw7CisgICAg
c2Nyb2xsLmxheWVySWQgPSBtX3Njcm9sbExheWVySW1wbC0+aWQoKTsKKyAgICBzY3JvbGwuc2Ny
b2xsRGVsdGEgPSBmbG9vcmVkSW50U2l6ZShtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsRGVsdGEo
KSk7CisgICAgc2Nyb2xsSW5mby0+c2Nyb2xscy5hcHBlbmQoc2Nyb2xsKTsKKworICAgIG1fc2Ny
b2xsTGF5ZXJJbXBsLT5zZXRTZW50U2Nyb2xsRGVsdGEoc2Nyb2xsLnNjcm9sbERlbHRhKTsKKwog
ICAgIHJldHVybiBzY3JvbGxJbmZvLnJlbGVhc2UoKTsKIH0KIApAQCAtOTM0LDE1ICs4MTYsMTUg
QEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRGdWxsUm9vdExheWVyRGFtYWdlKCkKIAog
dm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlUGFnZVNjYWxlKGRvdWJsZSBtb25vdG9u
aWNUaW1lKQogewotICAgIGlmICghbV9wYWdlU2NhbGVBbmltYXRpb24gfHwgIW1fcm9vdFNjcm9s
bExheWVySW1wbCkKKyAgICBpZiAoIW1fcGFnZVNjYWxlQW5pbWF0aW9uIHx8ICFtX3Njcm9sbExh
eWVySW1wbCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50U2l6ZSBzY3JvbGxUb3RhbCA9IGZs
b29yZWRJbnRTaXplKG1fcm9vdFNjcm9sbExheWVySW1wbC0+c2Nyb2xsUG9zaXRpb24oKSArIG1f
cm9vdFNjcm9sbExheWVySW1wbC0+c2Nyb2xsRGVsdGEoKSk7CisgICAgSW50U2l6ZSBzY3JvbGxU
b3RhbCA9IGZsb29yZWRJbnRTaXplKG1fc2Nyb2xsTGF5ZXJJbXBsLT5zY3JvbGxQb3NpdGlvbigp
ICsgbV9zY3JvbGxMYXllckltcGwtPnNjcm9sbERlbHRhKCkpOwogCiAgICAgc2V0UGFnZVNjYWxl
RGVsdGEobV9wYWdlU2NhbGVBbmltYXRpb24tPnBhZ2VTY2FsZUF0VGltZShtb25vdG9uaWNUaW1l
KSAvIG1fcGFnZVNjYWxlKTsKICAgICBJbnRTaXplIG5leHRTY3JvbGwgPSBtX3BhZ2VTY2FsZUFu
aW1hdGlvbi0+c2Nyb2xsT2Zmc2V0QXRUaW1lKG1vbm90b25pY1RpbWUpOwogICAgIG5leHRTY3Jv
bGwuc2NhbGUoMSAvIG1fcGFnZVNjYWxlRGVsdGEpOwotICAgIG1fcm9vdFNjcm9sbExheWVySW1w
bC0+c2Nyb2xsQnkobmV4dFNjcm9sbCAtIHNjcm9sbFRvdGFsKTsKKyAgICBtX3Njcm9sbExheWVy
SW1wbC0+c2Nyb2xsQnkobmV4dFNjcm9sbCAtIHNjcm9sbFRvdGFsKTsKICAgICBtX2NsaWVudC0+
c2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKTsKIAogICAgIGlmIChtX3BhZ2VTY2FsZUFuaW1h
dGlvbi0+aXNBbmltYXRpb25Db21wbGV0ZUF0VGltZShtb25vdG9uaWNUaW1lKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmluZGV4IDQ0ZTg5YTA4YzkzZmJiNDJiMTBlYjc5
ZjVmODhhMjk3MWU4ODYwMDguLmRkZTI3ZjY4YmExOGY0ZTE5YjFkM2E2MzE5YjEwNTY3ZTFhNmI3
MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTEzMywxMCArMTMz
LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlYWRiYWNrKHZvaWQqIHBpeGVscywgY29uc3QgSW50
UmVjdCYpOwogCiAgICAgdm9pZCBzZXRSb290TGF5ZXIoUGFzc093blB0cjxDQ0xheWVySW1wbD4p
OwotICAgIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IHJlbGVhc2VSb290TGF5ZXIoKTsKKyAgICBQ
YXNzT3duUHRyPENDTGF5ZXJJbXBsPiByZWxlYXNlUm9vdExheWVyKCkgeyByZXR1cm4gbV9yb290
TGF5ZXJJbXBsLnJlbGVhc2UoKTsgfQogICAgIENDTGF5ZXJJbXBsKiByb290TGF5ZXIoKSB7IHJl
dHVybiBtX3Jvb3RMYXllckltcGwuZ2V0KCk7IH0KIAotICAgIENDTGF5ZXJJbXBsKiByb290U2Ny
b2xsTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RTY3JvbGxMYXllckltcGw7IH0KKyAgICBD
Q0xheWVySW1wbCogc2Nyb2xsTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbExheWVySW1w
bDsgfQogCiAgICAgYm9vbCB2aXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlOyB9CiAg
ICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwpAQCAtMTgzLDYgKzE4Myw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBtYWtlU2Nyb2xsQW5kU2NhbGVTZXQoQ0NTY3JvbGxBbmRTY2FsZVNldCogc2Nyb2xs
SW5mbywgY29uc3QgSW50U2l6ZSYgc2Nyb2xsT2Zmc2V0LCBmbG9hdCBwYWdlU2NhbGUpOwogCiAg
ICAgdm9pZCBzZXRQYWdlU2NhbGVEZWx0YShmbG9hdCk7CisgICAgdm9pZCBhcHBseVBhZ2VTY2Fs
ZURlbHRhVG9TY3JvbGxMYXllcigpOworICAgIHZvaWQgYWRqdXN0U2Nyb2xsc0ZvclBhZ2VTY2Fs
ZUNoYW5nZShmbG9hdCk7CiAgICAgdm9pZCB1cGRhdGVNYXhTY3JvbGxQb3NpdGlvbigpOwogICAg
IHZvaWQgdHJhY2tEYW1hZ2VGb3JBbGxTdXJmYWNlcyhDQ0xheWVySW1wbCogcm9vdERyYXdMYXll
ciwgY29uc3QgQ0NMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIHZvaWQg
Y2FsY3VsYXRlUmVuZGVyU3VyZmFjZUxheWVyTGlzdChDQ0xheWVyTGlzdCYpOwpAQCAtMTk1LDE1
ICsxOTcsMTIgQEAgcHJpdmF0ZToKICAgICBJbnRTaXplIGNvbnRlbnRTaXplKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZW5kRGlkTG9zZUNvbnRleHRSZWN1cnNpdmUoQ0NMYXllckltcGwqKTsKICAgICB2
b2lkIGNsZWFyUmVuZGVyU3VyZmFjZXNPbkNDTGF5ZXJJbXBsUmVjdXJzaXZlKENDTGF5ZXJJbXBs
Kik7Ci0gICAgYm9vbCBlbnN1cmVNb3N0UmVjZW50UmVuZGVyU3VyZmFjZUxheWVyTGlzdCgpOwog
CiAgICAgdm9pZCBkdW1wUmVuZGVyU3VyZmFjZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQsIGNv
bnN0IENDTGF5ZXJJbXBsKikgY29uc3Q7CiAKICAgICBPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9t
aXVtPiBtX2xheWVyUmVuZGVyZXI7CiAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBtX3Jvb3RMYXll
ckltcGw7Ci0gICAgQ0NMYXllckltcGwqIG1fcm9vdFNjcm9sbExheWVySW1wbDsKLSAgICBDQ0xh
eWVySW1wbCogbV9jdXJyZW50bHlTY3JvbGxpbmdMYXllckltcGw7Ci0gICAgaW50IG1fc2Nyb2xs
aW5nTGF5ZXJJZEZyb21QcmV2aW91c1RyZWU7CisgICAgQ0NMYXllckltcGwqIG1fc2Nyb2xsTGF5
ZXJJbXBsOwogICAgIENDU2V0dGluZ3MgbV9zZXR0aW5nczsKICAgICBJbnRTaXplIG1fdmlld3Bv
cnRTaXplOwogICAgIGJvb2wgbV92aXNpYmxlOwpAQCAtMjMwLDkgKzIyOSw2IEBAIHByaXZhdGU6
CiAKICAgICBDQ0xheWVyU29ydGVyIG1fbGF5ZXJTb3J0ZXI7CiAKLSAgICAvLyBMaXN0IG9mIHZp
c2libGUgbGF5ZXJzIGluIHRoZSBtb3N0IHJlY2VudCBmcmFtZS4gVXNlZCBmb3IgaW5wdXQgZXZl
bnQgaGl0IHRlc3RpbmcuCi0gICAgQ0NMYXllckxpc3QgbV9tb3N0UmVjZW50UmVuZGVyU3VyZmFj
ZUxheWVyTGlzdDsKLQogICAgIEZsb2F0UmVjdCBtX3Jvb3REYW1hZ2VSZWN0OwogCiAgICAgT3du
UHRyPENDRnJhbWVSYXRlQ291bnRlcj4gbV9mcHNDb3VudGVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmNwcAppbmRleCA5ZDYxM2EzYWNh
OTkxYzk5NWRlMzk3NDg3MjRjNzFmY2JhOTQyZTk3Li40ZjY0ZDU0NzFlMzk2NjUwZjdjYTc1ZTll
MTYyNWM2NmQ3MmYxMWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJDb250ZW50TGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJDb250ZW50TGF5ZXJJbXBsLmNwcApAQCAtNzIsOCArNzIsNCBAQCB2b2lkIFdlYkNvbnRlbnRM
YXllckltcGw6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBnYywgY29uc3QgSW50UmVj
dCYgY2xpcAogICAgIG1fY29udGVudENsaWVudC0+cGFpbnRDb250ZW50cyhjYW52YXMsIFdlYlJl
Y3QoY2xpcCkpOwogfQogCi12b2lkIFdlYkNvbnRlbnRMYXllckltcGw6OmRpZFNjcm9sbChjb25z
dCBXZWJDb3JlOjpJbnRTaXplJikKLXsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmgKaW5kZXgg
MWJhODg0YzliMzU3ZWJmMzg3ZWRmZjM0OWY2NTZlYWZhNjZhZTFlYy4uNTFmMzQ0ZjdjYWYxMjcx
MTI2YWM3YjQyNjhlZDU0NjEyMTQyMTlkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViQ29udGVudExheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkNvbnRlbnRMYXllckltcGwuaApAQCAtNDQsNyArNDQsNiBAQCBwcm90ZWN0ZWQ6
CiAKICAgICAvLyBDb250ZW50TGF5ZXJEZWxlZ2F0ZSBpbXBsZW1lbnRhdGlvbi4KICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRDb250ZW50cyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBjbGlwKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU2Nyb2xsKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmKTsKIAogICAgIFdlYkNvbnRlbnRMYXllckNsaWVudCogbV9jb250
ZW50Q2xpZW50OwogICAgIGJvb2wgbV9kcmF3c0NvbnRlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LmNwcApp
bmRleCBlNDM2NDQ1YTM1ODk4ZjVlZDA5NWVmN2U2NzkzMmQxMGJkNDEwM2Y4Li41MWEwMzI2MThk
NTM4NTc1MGQ1NTBkN2VhZTZmOWIwNmY2N2I1MWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdC5jcHAKQEAg
LTEzMjUsMjggKzEzMjUsNiBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlm
eUJhY2tGYWNlQ3VsbGluZykKICAgICBFWFBFQ1RfVFJVRShjaGlsZE9mQW5pbWF0aW5nU3VyZmFj
ZS0+dmlzaWJsZUxheWVyUmVjdCgpLmlzRW1wdHkoKSk7CiB9CiAKLVRFU1QoQ0NMYXllclRyZWVI
b3N0Q29tbW9uVGVzdCwgdmVyaWZ5U3VidHJlZVNlYXJjaCkKLXsKLSAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gcm9vdCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiBjaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiBncmFuZENoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAg
UmVmUHRyPExheWVyQ2hyb21pdW0+IG1hc2tMYXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgp
OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByZXBsaWNhTGF5ZXIgPSBMYXllckNocm9taXVt
OjpjcmVhdGUoKTsKLQotICAgIGdyYW5kQ2hpbGQtPnNldFJlcGxpY2FMYXllcihyZXBsaWNhTGF5
ZXIuZ2V0KCkpOwotICAgIGNoaWxkLT5hZGRDaGlsZChncmFuZENoaWxkLmdldCgpKTsKLSAgICBj
aGlsZC0+c2V0TWFza0xheWVyKG1hc2tMYXllci5nZXQoKSk7Ci0gICAgcm9vdC0+YWRkQ2hpbGQo
Y2hpbGQuZ2V0KCkpOwotCi0gICAgaW50IG5vbmV4aXN0ZW50SWQgPSAtMTsKLSAgICBFWFBFQ1Rf
RVEocm9vdCwgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpmaW5kTGF5ZXJJblN1YnRyZWUocm9vdC5n
ZXQoKSwgcm9vdC0+aWQoKSkpOwotICAgIEVYUEVDVF9FUShjaGlsZCwgQ0NMYXllclRyZWVIb3N0
Q29tbW9uOjpmaW5kTGF5ZXJJblN1YnRyZWUocm9vdC5nZXQoKSwgY2hpbGQtPmlkKCkpKTsKLSAg
ICBFWFBFQ1RfRVEoZ3JhbmRDaGlsZCwgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpmaW5kTGF5ZXJJ
blN1YnRyZWUocm9vdC5nZXQoKSwgZ3JhbmRDaGlsZC0+aWQoKSkpOwotICAgIEVYUEVDVF9FUSht
YXNrTGF5ZXIsIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6ZmluZExheWVySW5TdWJ0cmVlKHJvb3Qu
Z2V0KCksIG1hc2tMYXllci0+aWQoKSkpOwotICAgIEVYUEVDVF9FUShyZXBsaWNhTGF5ZXIsIEND
TGF5ZXJUcmVlSG9zdENvbW1vbjo6ZmluZExheWVySW5TdWJ0cmVlKHJvb3QuZ2V0KCksIHJlcGxp
Y2FMYXllci0+aWQoKSkpOwotICAgIEVYUEVDVF9FUSgwLCBDQ0xheWVyVHJlZUhvc3RDb21tb246
OmZpbmRMYXllckluU3VidHJlZShyb290LmdldCgpLCBub25leGlzdGVudElkKSk7Ci19Ci0KIC8v
IEZJWE1FOgogLy8gY29udGludWUgd29ya2luZyBvbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Njg5NDIKIC8vICAtIGFkZCBhIHRlc3QgdG8gdmVyaWZ5IGNsaXBwaW5n
IHRoYXQgY2hhbmdlcyB0aGUgImNlbnRlciBwb2ludCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggNTM5
NmFkMTI5MDA4MTNkYjUyYmFiZTJhMDM4MzgxMTBkZTk2YWFiMi4uZmYyNDk3MDg1MGQ1NGU4ZWJm
NmM3OGFlMjMxZGQxNmZlODAyYmJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTEwNCwyNiArMTA0
LDYgQEAgcHVibGljOgogICAgICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdC5yZWxl
YXNlKCkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBjcmVh
dGVTY3JvbGxhYmxlTGF5ZXIoaW50IGlkLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgY29u
c3QgSW50U2l6ZSYgc2l6ZSkKLSAgICB7Ci0gICAgICAgIE93blB0cjxDQ0xheWVySW1wbD4gbGF5
ZXIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKGlkKTsKLSAgICAgICAgbGF5ZXItPnNldFNjcm9sbGFi
bGUodHJ1ZSk7Ci0gICAgICAgIGxheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7Ci0gICAgICAg
IGxheWVyLT5zZXRQb3NpdGlvbihwb3NpdGlvbik7Ci0gICAgICAgIGxheWVyLT5zZXRCb3VuZHMo
c2l6ZSk7Ci0gICAgICAgIGxheWVyLT5zZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRTaXplKHNpemUu
d2lkdGgoKSAqIDIsIHNpemUuaGVpZ2h0KCkgKiAyKSk7Ci0gICAgICAgIHJldHVybiBsYXllci5y
ZWxlYXNlKCk7Ci0gICAgfQotCi0gICAgdm9pZCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlckFuZERy
YXdGcmFtZSgpCi0gICAgewotICAgICAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5k
ZXJlcihjcmVhdGVDb250ZXh0KCkpOwotICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFt
ZURhdGEgZnJhbWU7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0Ry
YXcoZnJhbWUpKTsKLSAgICAgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7Ci0gICAg
ICAgIG1faG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMoZnJhbWUpOwotICAgIH0KLQogcHJvdGVj
dGVkOgogICAgIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUNvbnRleHQoKQog
ICAgIHsKQEAgLTIwNywxMiArMTg3LDEwIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dCwgc2Nyb2xsUm9vdENhbGxzQ29tbWl0QW5kUmVkcmF3KQogewogICAgIHsKICAgICAgICAgT3du
UHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgwKTsKLSAgICAgICAg
cm9vdC0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CiAgICAg
ICAgIHJvb3QtPnNldFNjcm9sbGFibGUodHJ1ZSk7CiAgICAgICAgIHJvb3QtPnNldFNjcm9sbFBv
c2l0aW9uKEludFBvaW50KDAsIDApKTsKICAgICAgICAgcm9vdC0+c2V0TWF4U2Nyb2xsUG9zaXRp
b24oSW50U2l6ZSgxMDAsIDEwMCkpOwogICAgICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIo
cm9vdC5yZWxlYXNlKCkpOwotICAgICAgICBpbml0aWFsaXplTGF5ZXJSZW5kZXJlckFuZERyYXdG
cmFtZSgpOwogICAgIH0KIAogICAgIEVYUEVDVF9FUShtX2hvc3RJbXBsLT5zY3JvbGxCZWdpbihJ
bnRQb2ludCgwLCAwKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OldoZWVsKSwgQ0NJbnB1dEhhbmRs
ZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpOwpAQCAtMjIyLDU0ICsyMDAsMTQgQEAgVEVTVF9GKEND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBzY3JvbGxSb290Q2FsbHNDb21taXRBbmRSZWRyYXcpCiAg
ICAgRVhQRUNUX1RSVUUobV9kaWRSZXF1ZXN0Q29tbWl0KTsKIH0KIAotVEVTVF9GKENDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LCBzY3JvbGxXaXRob3V0Um9vdExheWVyKQotewotICAgIC8vIFdlIHNo
b3VsZCBub3QgY3Jhc2ggd2hlbiB0cnlpbmcgdG8gc2Nyb2xsIGFuIGVtcHR5IGxheWVyIHRyZWUu
Ci0gICAgRVhQRUNUX0VRKG1faG9zdEltcGwtPnNjcm9sbEJlZ2luKEludFBvaW50KDAsIDApLCBD
Q0lucHV0SGFuZGxlckNsaWVudDo6V2hlZWwpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xs
SWdub3JlZCk7Ci19Ci0KLVRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcmVwbGFjZVRy
ZWVXaGlsZVNjcm9sbGluZykKLXsKLSAgICBpbnQgbGF5ZXJJZCA9IDc7Ci0gICAgewotICAgICAg
ICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKGxheWVySWQp
OwotICAgICAgICByb290LT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAx
MDApKTsKLSAgICAgICAgcm9vdC0+c2V0U2Nyb2xsYWJsZSh0cnVlKTsKLSAgICAgICAgcm9vdC0+
c2V0TWF4U2Nyb2xsUG9zaXRpb24oSW50U2l6ZSgxMDAsIDEwMCkpOwotICAgICAgICBtX2hvc3RJ
bXBsLT5zZXRSb290TGF5ZXIocm9vdC5yZWxlYXNlKCkpOwotICAgICAgICBpbml0aWFsaXplTGF5
ZXJSZW5kZXJlckFuZERyYXdGcmFtZSgpOwotICAgIH0KLQotICAgIC8vIFdlIHNob3VsZCBub3Qg
Y3Jhc2ggaWYgdGhlIHRyZWUgaXMgcmVwbGFjZWQgd2hpbGUgd2UgYXJlIHNjcm9sbGluZy4KLSAg
ICBFWFBFQ1RfRVEobV9ob3N0SW1wbC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQoMCwgMCksIENDSW5w
dXRIYW5kbGVyQ2xpZW50OjpXaGVlbCksIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFy
dGVkKTsKLSAgICBtX2hvc3RJbXBsLT5yZWxlYXNlUm9vdExheWVyKCk7Ci0KLSAgICB7Ci0gICAg
ICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUobGF5ZXJJ
ZCk7Ci0gICAgICAgIHJvb3QtPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdCgwLCAwLCAxMDAs
IDEwMCkpOwotICAgICAgICByb290LT5zZXRTY3JvbGxhYmxlKHRydWUpOwotICAgICAgICByb290
LT5zZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRTaXplKDEwMCwgMTAwKSk7Ci0gICAgICAgIG1faG9z
dEltcGwtPnNldFJvb3RMYXllcihyb290LnJlbGVhc2UoKSk7Ci0gICAgfQotCi0gICAgLy8gV2Ug
c2hvdWxkIHN0aWxsIGJlIHNjcm9sbGluZywgYmVjYXVzZSB0aGUgc2Nyb2xsZWQgbGF5ZXIgYWxz
byBleGlzdHMgaW4gdGhlIG5ldyB0cmVlLgotICAgIEludFNpemUgc2Nyb2xsRGVsdGEoMCwgMTAp
OwotICAgIG1faG9zdEltcGwtPnNjcm9sbEJ5KHNjcm9sbERlbHRhKTsKLSAgICBtX2hvc3RJbXBs
LT5zY3JvbGxFbmQoKTsKLSAgICBPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4gc2Nyb2xsSW5m
byA9IG1faG9zdEltcGwtPnByb2Nlc3NTY3JvbGxEZWx0YXMoKTsKLSAgICBleHBlY3RDb250YWlu
cygqc2Nyb2xsSW5mbywgbGF5ZXJJZCwgc2Nyb2xsRGVsdGEpOwotfQotCiBURVNUX0YoQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QsIHdoZWVsRXZlbnRIYW5kbGVycykKIHsKICAgICB7CiAgICAgICAg
IE93blB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCk7Ci0gICAg
ICAgIHJvb3QtPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwog
ICAgICAgICByb290LT5zZXRTY3JvbGxhYmxlKHRydWUpOwogICAgICAgICByb290LT5zZXRTY3Jv
bGxQb3NpdGlvbihJbnRQb2ludCgwLCAwKSk7CiAgICAgICAgIHJvb3QtPnNldE1heFNjcm9sbFBv
c2l0aW9uKEludFNpemUoMTAwLCAxMDApKTsKICAgICAgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExh
eWVyKHJvb3QucmVsZWFzZSgpKTsKLSAgICAgICAgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJBbmRE
cmF3RnJhbWUoKTsKICAgICB9CiAgICAgQ0NMYXllckltcGwqIHJvb3QgPSBtX2hvc3RJbXBsLT5y
b290TGF5ZXIoKTsKIApAQCAtMjg0LDE0ICsyMjIsMTEgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LCB3aGVlbEV2ZW50SGFuZGxlcnMpCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QsIHNob3VsZFNjcm9sbE9uTWFpblRocmVhZCkKIHsKICAgICBPd25QdHI8Q0NMYXllcklt
cGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDApOwotICAgIHJvb3QtPnNldFZpc2libGVM
YXllclJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogICAgIHJvb3QtPnNldFNjcm9sbGFi
bGUodHJ1ZSk7CiAgICAgcm9vdC0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoMCwgMCkpOwog
ICAgIHJvb3QtPnNldE1heFNjcm9sbFBvc2l0aW9uKEludFNpemUoMTAwLCAxMDApKTsKICAgICBy
b290LT5zZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQodHJ1ZSk7CiAgICAgbV9ob3N0SW1wbC0+
c2V0Um9vdExheWVyKHJvb3QucmVsZWFzZSgpKTsKLSAgICBpbml0aWFsaXplTGF5ZXJSZW5kZXJl
ckFuZERyYXdGcmFtZSgpOwotCiAgICAgRVhQRUNUX0VRKG1faG9zdEltcGwtPnNjcm9sbEJlZ2lu
KEludFBvaW50KDAsIDApLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6V2hlZWwpLCBDQ0lucHV0SGFu
ZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVkKTsKICAgICBFWFBFQ1RfRVEobV9ob3N0SW1wbC0+c2Ny
b2xsQmVnaW4oSW50UG9pbnQoMCwgMCksIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpHZXN0dXJlKSwg
Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbEZhaWxlZCk7CiB9CkBAIC0yOTksMTQgKzIzNCwx
MSBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNob3VsZFNjcm9sbE9uTWFpblRo
cmVhZCkKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgbm9uRmFzdFNjcm9sbGFibGVS
ZWdpb25CYXNpYykKIHsKICAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1w
bDo6Y3JlYXRlKDApOwotICAgIHJvb3QtPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdCgwLCAw
LCAxMDAsIDEwMCkpOwogICAgIHJvb3QtPnNldFNjcm9sbGFibGUodHJ1ZSk7CiAgICAgcm9vdC0+
c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoMCwgMCkpOwogICAgIHJvb3QtPnNldE1heFNjcm9s
bFBvc2l0aW9uKEludFNpemUoMTAwLCAxMDApKTsKICAgICByb290LT5zZXROb25GYXN0U2Nyb2xs
YWJsZVJlZ2lvbihJbnRSZWN0KDAsIDAsIDUwLCA1MCkpOwogICAgIG1faG9zdEltcGwtPnNldFJv
b3RMYXllcihyb290LnJlbGVhc2UoKSk7Ci0gICAgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJBbmRE
cmF3RnJhbWUoKTsKLQogICAgIC8vIEFsbCBzY3JvbGwgdHlwZXMgaW5zaWRlIHRoZSBub24tZmFz
dCBzY3JvbGxhYmxlIHJlZ2lvbiBzaG91bGQgZmFpbC4KICAgICBFWFBFQ1RfRVEobV9ob3N0SW1w
bC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQoMjUsIDI1KSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6Oldo
ZWVsKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbEZhaWxlZCk7CiAgICAgRVhQRUNUX0VR
KG1faG9zdEltcGwtPnNjcm9sbEJlZ2luKEludFBvaW50KDI1LCAyNSksIENDSW5wdXRIYW5kbGVy
Q2xpZW50OjpHZXN0dXJlKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbEZhaWxlZCk7CkBA
IC0zMjIsMTYgKzI1NCwxOCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIG5vbkZh
c3RTY3JvbGxhYmxlUmVnaW9uQmFzaWMpCiAKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dCwgbm9uRmFzdFNjcm9sbGFibGVSZWdpb25XaXRoT2Zmc2V0KQogeworICAgIG1faG9zdEltcGwt
PmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSk7CisKICAgICBPd25QdHI8
Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDApOwotICAgIHJvb3QtPnNl
dEJvdW5kcyhJbnRTaXplKDEsIDEpKTsKLSAgICByb290LT5zZXRWaXNpYmxlTGF5ZXJSZWN0KElu
dFJlY3QoMCwgMCwgMTAwLCAxMDApKTsKICAgICByb290LT5zZXRTY3JvbGxhYmxlKHRydWUpOwog
ICAgIHJvb3QtPnNldFNjcm9sbFBvc2l0aW9uKEludFBvaW50KDAsIDApKTsKICAgICByb290LT5z
ZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRTaXplKDEwMCwgMTAwKSk7CiAgICAgcm9vdC0+c2V0Tm9u
RmFzdFNjcm9sbGFibGVSZWdpb24oSW50UmVjdCgwLCAwLCA1MCwgNTApKTsKICAgICByb290LT5z
ZXRQb3NpdGlvbihGbG9hdFBvaW50KC0yNSwgMCkpOwogICAgIG1faG9zdEltcGwtPnNldFJvb3RM
YXllcihyb290LnJlbGVhc2UoKSk7Ci0gICAgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJBbmREcmF3
RnJhbWUoKTsKKyAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CisgICAg
RVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIG1faG9z
dEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOyAvLyBVcGRhdGUgZHJhdyB0cmFuc2Zvcm1zIHNvIHdl
IGNhbiBjb3JyZWN0bHkgbWFwIHBvaW50cyBpbnRvIGxheWVyIHNwYWNlLgogCiAgICAgLy8gVGhp
cyBwb2ludCB3b3VsZCBmYWxsIGludG8gdGhlIG5vbi1mYXN0IHNjcm9sbGFibGUgcmVnaW9uIGV4
Y2VwdCB0aGF0IHdlJ3ZlIG1vdmVkIHRoZSBsYXllciBkb3duIGJ5IDI1IHBpeGVscy4KICAgICBF
WFBFQ1RfRVEobV9ob3N0SW1wbC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQoNDAsIDEwKSwgQ0NJbnB1
dEhhbmRsZXJDbGllbnQ6OldoZWVsKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0
ZWQpOwpAQCAtMzQ2LDkgKzI4MCw4IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwg
cGluY2hHZXN0dXJlKQogewogICAgIHNldHVwU2Nyb2xsQW5kQ29udGVudHNMYXllcnMoSW50U2l6
ZSgxMDAsIDEwMCkpOwogICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDUw
LCA1MCkpOwotICAgIGluaXRpYWxpemVMYXllclJlbmRlcmVyQW5kRHJhd0ZyYW1lKCk7CiAKLSAg
ICBDQ0xheWVySW1wbCogc2Nyb2xsTGF5ZXIgPSBtX2hvc3RJbXBsLT5yb290U2Nyb2xsTGF5ZXIo
KTsKKyAgICBDQ0xheWVySW1wbCogc2Nyb2xsTGF5ZXIgPSBtX2hvc3RJbXBsLT5zY3JvbGxMYXll
cigpOwogICAgIEFTU0VSVChzY3JvbGxMYXllcik7CiAKICAgICBjb25zdCBmbG9hdCBtaW5QYWdl
U2NhbGUgPSAwLjUsIG1heFBhZ2VTY2FsZSA9IDQ7CkBAIC00MjcsOSArMzYwLDggQEAgVEVTVF9G
KENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwYWdlU2NhbGVBbmltYXRpb24pCiB7CiAgICAgc2V0
dXBTY3JvbGxBbmRDb250ZW50c0xheWVycyhJbnRTaXplKDEwMCwgMTAwKSk7CiAgICAgbV9ob3N0
SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoNTAsIDUwKSk7Ci0gICAgaW5pdGlhbGl6ZUxh
eWVyUmVuZGVyZXJBbmREcmF3RnJhbWUoKTsKIAotICAgIENDTGF5ZXJJbXBsKiBzY3JvbGxMYXll
ciA9IG1faG9zdEltcGwtPnJvb3RTY3JvbGxMYXllcigpOworICAgIENDTGF5ZXJJbXBsKiBzY3Jv
bGxMYXllciA9IG1faG9zdEltcGwtPnNjcm9sbExheWVyKCk7CiAgICAgQVNTRVJUKHNjcm9sbExh
eWVyKTsKIAogICAgIGNvbnN0IGZsb2F0IG1pblBhZ2VTY2FsZSA9IDAuNSwgbWF4UGFnZVNjYWxl
ID0gNDsKQEAgLTY0NSwyNzAgKzU3Nyw2IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dCwgcHJlcGFyZVRvRHJhd0ZhaWxzV2hlbkFuaW1hdGlvblVzZXNDaGVja2VyYm9hcmQpCiAgICAg
bV9ob3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7CiB9CiAKLVRFU1RfRihDQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsUm9vdElnbm9yZWQpCi17Ci0gICAgT3duUHRyPENDTGF5
ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgwKTsKLSAgICByb290LT5zZXRTY3Jv
bGxhYmxlKGZhbHNlKTsKLSAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdC5yZWxlYXNl
KCkpOwotICAgIGluaXRpYWxpemVMYXllclJlbmRlcmVyQW5kRHJhd0ZyYW1lKCk7Ci0KLSAgICAv
LyBTY3JvbGwgZXZlbnQgaXMgaWdub3JlZCBiZWNhdXNlIGxheWVyIGlzIG5vdCBzY3JvbGxhYmxl
LgotICAgIEVYUEVDVF9FUShtX2hvc3RJbXBsLT5zY3JvbGxCZWdpbihJbnRQb2ludCgwLCAwKSwg
Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OldoZWVsKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9s
bElnbm9yZWQpOwotICAgIEVYUEVDVF9GQUxTRShtX2RpZFJlcXVlc3RSZWRyYXcpOwotICAgIEVY
UEVDVF9GQUxTRShtX2RpZFJlcXVlc3RDb21taXQpOwotfQotCi1URVNUX0YoQ0NMYXllclRyZWVI
b3N0SW1wbFRlc3QsIHNjcm9sbE5vbkNvbXBvc2l0ZWRSb290KQotewotICAgIC8vIFRlc3QgdGhl
IGNvbmZpZ3VyYXRpb24gd2hlcmUgYSBub24tY29tcG9zaXRlZCByb290IGxheWVyIGlzIGVtYmVk
ZGVkIGluIGEKLSAgICAvLyBzY3JvbGxhYmxlIG91dGVyIGxheWVyLgotICAgIEludFNpemUgc3Vy
ZmFjZVNpemUoMTAsIDEwKTsKLQotICAgIE93blB0cjxDQ0xheWVySW1wbD4gY29udGVudExheWVy
ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgxKTsKLSAgICBjb250ZW50TGF5ZXItPnNldElzTm9uQ29t
cG9zaXRlZENvbnRlbnQodHJ1ZSk7Ci0gICAgY29udGVudExheWVyLT5zZXREcmF3c0NvbnRlbnQo
dHJ1ZSk7Ci0gICAgY29udGVudExheWVyLT5zZXRQb3NpdGlvbihJbnRQb2ludCg1LCA1KSk7Ci0g
ICAgY29udGVudExheWVyLT5zZXRCb3VuZHMoc3VyZmFjZVNpemUpOwotICAgIGNvbnRlbnRMYXll
ci0+c2V0Q29udGVudEJvdW5kcyhJbnRTaXplKHN1cmZhY2VTaXplLndpZHRoKCkgKiAyLCBzdXJm
YWNlU2l6ZS5oZWlnaHQoKSAqIDIpKTsKLQotICAgIE93blB0cjxDQ0xheWVySW1wbD4gc2Nyb2xs
TGF5ZXIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDApOwotICAgIHNjcm9sbExheWVyLT5zZXRTY3Jv
bGxhYmxlKHRydWUpOwotICAgIHNjcm9sbExheWVyLT5hZGRDaGlsZChjb250ZW50TGF5ZXIucmVs
ZWFzZSgpKTsKLQotICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihzY3JvbGxMYXllci5yZWxl
YXNlKCkpOwotICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShzdXJmYWNlU2l6ZSk7Ci0g
ICAgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJBbmREcmF3RnJhbWUoKTsKLQotICAgIEVYUEVDVF9F
UShtX2hvc3RJbXBsLT5zY3JvbGxCZWdpbihJbnRQb2ludCg1LCA1KSwgQ0NJbnB1dEhhbmRsZXJD
bGllbnQ6OldoZWVsKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpOwotICAg
IG1faG9zdEltcGwtPnNjcm9sbEJ5KEludFNpemUoMCwgMTApKTsKLSAgICBtX2hvc3RJbXBsLT5z
Y3JvbGxFbmQoKTsKLSAgICBFWFBFQ1RfVFJVRShtX2RpZFJlcXVlc3RSZWRyYXcpOwotICAgIEVY
UEVDVF9UUlVFKG1fZGlkUmVxdWVzdENvbW1pdCk7Ci19Ci0KLVRFU1RfRihDQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdCwgc2Nyb2xsQ2hpbGRDYWxsc0NvbW1pdEFuZFJlZHJhdykKLXsKLSAgICBJbnRT
aXplIHN1cmZhY2VTaXplKDEwLCAxMCk7Ci0gICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0g
Q0NMYXllckltcGw6OmNyZWF0ZSgwKTsKLSAgICByb290LT5hZGRDaGlsZChjcmVhdGVTY3JvbGxh
YmxlTGF5ZXIoMSwgRmxvYXRQb2ludCg1LCA1KSwgc3VyZmFjZVNpemUpKTsKLSAgICBtX2hvc3RJ
bXBsLT5zZXRSb290TGF5ZXIocm9vdC5yZWxlYXNlKCkpOwotICAgIG1faG9zdEltcGwtPnNldFZp
ZXdwb3J0U2l6ZShzdXJmYWNlU2l6ZSk7Ci0gICAgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJBbmRE
cmF3RnJhbWUoKTsKLQotICAgIEVYUEVDVF9FUShtX2hvc3RJbXBsLT5zY3JvbGxCZWdpbihJbnRQ
b2ludCg1LCA1KSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OldoZWVsKSwgQ0NJbnB1dEhhbmRsZXJD
bGllbnQ6OlNjcm9sbFN0YXJ0ZWQpOwotICAgIG1faG9zdEltcGwtPnNjcm9sbEJ5KEludFNpemUo
MCwgMTApKTsKLSAgICBtX2hvc3RJbXBsLT5zY3JvbGxFbmQoKTsKLSAgICBFWFBFQ1RfVFJVRSht
X2RpZFJlcXVlc3RSZWRyYXcpOwotICAgIEVYUEVDVF9UUlVFKG1fZGlkUmVxdWVzdENvbW1pdCk7
Ci19Ci0KLVRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsTWlzc2VzQ2hpbGQp
Ci17Ci0gICAgSW50U2l6ZSBzdXJmYWNlU2l6ZSgxMCwgMTApOwotICAgIE93blB0cjxDQ0xheWVy
SW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCk7Ci0gICAgcm9vdC0+YWRkQ2hpbGQo
Y3JlYXRlU2Nyb2xsYWJsZUxheWVyKDEsIEZsb2F0UG9pbnQoNSwgNSksIHN1cmZhY2VTaXplKSk7
Ci0gICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QucmVsZWFzZSgpKTsKLSAgICBtX2hv
c3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoc3VyZmFjZVNpemUpOwotICAgIGluaXRpYWxpemVMYXll
clJlbmRlcmVyQW5kRHJhd0ZyYW1lKCk7Ci0KLSAgICAvLyBTY3JvbGwgZXZlbnQgaXMgaWdub3Jl
ZCBiZWNhdXNlIHRoZSBpbnB1dCBjb29yZGluYXRlIGlzIG91dHNpZGUgdGhlIGxheWVyIGJvdW5k
YXJpZXMuCi0gICAgRVhQRUNUX0VRKG1faG9zdEltcGwtPnNjcm9sbEJlZ2luKEludFBvaW50KDE1
LCA1KSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OldoZWVsKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6
OlNjcm9sbElnbm9yZWQpOwotICAgIEVYUEVDVF9GQUxTRShtX2RpZFJlcXVlc3RSZWRyYXcpOwot
ICAgIEVYUEVDVF9GQUxTRShtX2RpZFJlcXVlc3RDb21taXQpOwotfQotCi1URVNUX0YoQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbE1pc3Nlc0JhY2tmYWNpbmdDaGlsZCkKLXsKLSAgICBJ
bnRTaXplIHN1cmZhY2VTaXplKDEwLCAxMCk7Ci0gICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290
ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgwKTsKLSAgICBPd25QdHI8Q0NMYXllckltcGw+IGNoaWxk
ID0gY3JlYXRlU2Nyb2xsYWJsZUxheWVyKDEsIEZsb2F0UG9pbnQoNSwgNSksIHN1cmZhY2VTaXpl
KTsKLSAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoc3VyZmFjZVNpemUpOwotCi0gICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4OwotICAgIG1hdHJpeC5yb3RhdGUzZCgxODAsIDAs
IDApOwotICAgIGNoaWxkLT5zZXRUcmFuc2Zvcm0obWF0cml4KTsKLSAgICBjaGlsZC0+c2V0RG91
YmxlU2lkZWQoZmFsc2UpOwotCi0gICAgcm9vdC0+YWRkQ2hpbGQoY2hpbGQucmVsZWFzZSgpKTsK
LSAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdC5yZWxlYXNlKCkpOwotICAgIGluaXRp
YWxpemVMYXllclJlbmRlcmVyQW5kRHJhd0ZyYW1lKCk7Ci0KLSAgICAvLyBTY3JvbGwgZXZlbnQg
aXMgaWdub3JlZCBiZWNhdXNlIHRoZSBzY3JvbGxhYmxlIGxheWVyIGlzIG5vdCBmYWNpbmcgdGhl
IHZpZXdlciBhbmQgdGhlcmUgaXMKLSAgICAvLyBub3RoaW5nIHNjcm9sbGFibGUgYmVoaW5kIGl0
LgotICAgIEVYUEVDVF9FUShtX2hvc3RJbXBsLT5zY3JvbGxCZWdpbihJbnRQb2ludCg1LCA1KSwg
Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OldoZWVsKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9s
bElnbm9yZWQpOwotICAgIEVYUEVDVF9GQUxTRShtX2RpZFJlcXVlc3RSZWRyYXcpOwotICAgIEVY
UEVDVF9GQUxTRShtX2RpZFJlcXVlc3RDb21taXQpOwotfQotCi1URVNUX0YoQ0NMYXllclRyZWVI
b3N0SW1wbFRlc3QsIHNjcm9sbEJsb2NrZWRCeUNvbnRlbnRMYXllcikKLXsKLSAgICBJbnRTaXpl
IHN1cmZhY2VTaXplKDEwLCAxMCk7Ci0gICAgT3duUHRyPENDTGF5ZXJJbXBsPiBjb250ZW50TGF5
ZXIgPSBjcmVhdGVTY3JvbGxhYmxlTGF5ZXIoMCwgRmxvYXRQb2ludCg1LCA1KSwgc3VyZmFjZVNp
emUpOwotICAgIGNvbnRlbnRMYXllci0+c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKHRydWUp
OwotICAgIGNvbnRlbnRMYXllci0+c2V0U2Nyb2xsYWJsZShmYWxzZSk7Ci0KLSAgICBPd25QdHI8
Q0NMYXllckltcGw+IHNjcm9sbExheWVyID0gY3JlYXRlU2Nyb2xsYWJsZUxheWVyKDEsIEZsb2F0
UG9pbnQoNSwgNSksIHN1cmZhY2VTaXplKTsKLSAgICBzY3JvbGxMYXllci0+YWRkQ2hpbGQoY29u
dGVudExheWVyLnJlbGVhc2UoKSk7Ci0KLSAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIoc2Ny
b2xsTGF5ZXIucmVsZWFzZSgpKTsKLSAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoc3Vy
ZmFjZVNpemUpOwotICAgIGluaXRpYWxpemVMYXllclJlbmRlcmVyQW5kRHJhd0ZyYW1lKCk7Ci0K
LSAgICAvLyBTY3JvbGxpbmcgZmFpbHMgYmVjYXVzZSB0aGUgY29udGVudCBsYXllciBpcyBhc2tp
bmcgdG8gYmUgc2Nyb2xsZWQgb24gdGhlIG1haW4gdGhyZWFkLgotICAgIEVYUEVDVF9FUShtX2hv
c3RJbXBsLT5zY3JvbGxCZWdpbihJbnRQb2ludCg1LCA1KSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6
OldoZWVsKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbEZhaWxlZCk7Ci19Ci0KLVRFU1Rf
RihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsUm9vdEFuZENoYW5nZVBhZ2VTY2FsZU9u
TWFpblRocmVhZCkKLXsKLSAgICBJbnRTaXplIHN1cmZhY2VTaXplKDEwLCAxMCk7Ci0gICAgZmxv
YXQgcGFnZVNjYWxlID0gMjsKLSAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVT
Y3JvbGxhYmxlTGF5ZXIoMCwgRmxvYXRQb2ludCg1LCA1KSwgc3VyZmFjZVNpemUpOwotICAgIG1f
aG9zdEltcGwtPnNldFJvb3RMYXllcihyb290LnJlbGVhc2UoKSk7Ci0gICAgbV9ob3N0SW1wbC0+
c2V0Vmlld3BvcnRTaXplKHN1cmZhY2VTaXplKTsKLSAgICBpbml0aWFsaXplTGF5ZXJSZW5kZXJl
ckFuZERyYXdGcmFtZSgpOwotCi0gICAgSW50U2l6ZSBzY3JvbGxEZWx0YSgwLCAxMCk7Ci0gICAg
SW50U2l6ZSBleHBlY3RlZFNjcm9sbERlbHRhKHNjcm9sbERlbHRhKTsKLSAgICBJbnRTaXplIGV4
cGVjdGVkTWF4U2Nyb2xsKG1faG9zdEltcGwtPnJvb3RMYXllcigpLT5tYXhTY3JvbGxQb3NpdGlv
bigpKTsKLSAgICBFWFBFQ1RfRVEobV9ob3N0SW1wbC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQoNSwg
NSksIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpXaGVlbCksIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpT
Y3JvbGxTdGFydGVkKTsKLSAgICBtX2hvc3RJbXBsLT5zY3JvbGxCeShzY3JvbGxEZWx0YSk7Ci0g
ICAgbV9ob3N0SW1wbC0+c2Nyb2xsRW5kKCk7Ci0KLSAgICAvLyBTZXQgbmV3IHBhZ2Ugc2NhbGUg
ZnJvbSBtYWluIHRocmVhZC4KLSAgICBtX2hvc3RJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRM
aW1pdHMocGFnZVNjYWxlLCBwYWdlU2NhbGUsIHBhZ2VTY2FsZSk7Ci0KLSAgICAvLyBUaGUgc2Nh
bGUgc2hvdWxkIGFwcGx5IHRvIHRoZSBzY3JvbGwgZGVsdGEuCi0gICAgZXhwZWN0ZWRTY3JvbGxE
ZWx0YS5zY2FsZShwYWdlU2NhbGUpOwotICAgIE93blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBz
Y3JvbGxJbmZvID0gbV9ob3N0SW1wbC0+cHJvY2Vzc1Njcm9sbERlbHRhcygpOwotICAgIGV4cGVj
dENvbnRhaW5zKCpzY3JvbGxJbmZvLmdldCgpLCAwLCBleHBlY3RlZFNjcm9sbERlbHRhKTsKLQot
ICAgIC8vIFRoZSBzY3JvbGwgcmFuZ2Ugc2hvdWxkIGFsc28gaGF2ZSBiZWVuIHVwZGF0ZWQuCi0g
ICAgRVhQRUNUX0VRKG1faG9zdEltcGwtPnJvb3RMYXllcigpLT5tYXhTY3JvbGxQb3NpdGlvbigp
LCBleHBlY3RlZE1heFNjcm9sbCk7Ci0KLSAgICAvLyBUaGUgcGFnZSBzY2FsZSBkZWx0YSByZW1h
aW5zIGNvbnN0YW50IGJlY2F1c2UgdGhlIGltcGwgdGhyZWFkIGRpZCBub3Qgc2NhbGUuCi0gICAg
RVhQRUNUX0VRKG1faG9zdEltcGwtPnJvb3RMYXllcigpLT5wYWdlU2NhbGVEZWx0YSgpLCAxKTsK
LX0KLQotVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBzY3JvbGxSb290QW5kQ2hhbmdl
UGFnZVNjYWxlT25JbXBsVGhyZWFkKQotewotICAgIEludFNpemUgc3VyZmFjZVNpemUoMTAsIDEw
KTsKLSAgICBmbG9hdCBwYWdlU2NhbGUgPSAyOwotICAgIE93blB0cjxDQ0xheWVySW1wbD4gcm9v
dCA9IGNyZWF0ZVNjcm9sbGFibGVMYXllcigwLCBGbG9hdFBvaW50KDUsIDUpLCBzdXJmYWNlU2l6
ZSk7Ci0gICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QucmVsZWFzZSgpKTsKLSAgICBt
X2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoc3VyZmFjZVNpemUpOwotICAgIG1faG9zdEltcGwt
PnNldFBhZ2VTY2FsZUZhY3RvckFuZExpbWl0cygxLCAxLCBwYWdlU2NhbGUpOwotICAgIGluaXRp
YWxpemVMYXllclJlbmRlcmVyQW5kRHJhd0ZyYW1lKCk7Ci0KLSAgICBJbnRTaXplIHNjcm9sbERl
bHRhKDAsIDEwKTsKLSAgICBJbnRTaXplIGV4cGVjdGVkU2Nyb2xsRGVsdGEoc2Nyb2xsRGVsdGEp
OwotICAgIEludFNpemUgZXhwZWN0ZWRNYXhTY3JvbGwobV9ob3N0SW1wbC0+cm9vdExheWVyKCkt
Pm1heFNjcm9sbFBvc2l0aW9uKCkpOwotICAgIEVYUEVDVF9FUShtX2hvc3RJbXBsLT5zY3JvbGxC
ZWdpbihJbnRQb2ludCg1LCA1KSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OldoZWVsKSwgQ0NJbnB1
dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpOwotICAgIG1faG9zdEltcGwtPnNjcm9sbEJ5
KHNjcm9sbERlbHRhKTsKLSAgICBtX2hvc3RJbXBsLT5zY3JvbGxFbmQoKTsKLQotICAgIC8vIFNl
dCBuZXcgcGFnZSBzY2FsZSBvbiBpbXBsIHRocmVhZCBieSBwaW5jaGluZy4KLSAgICBtX2hvc3RJ
bXBsLT5waW5jaEdlc3R1cmVCZWdpbigpOwotICAgIG1faG9zdEltcGwtPnBpbmNoR2VzdHVyZVVw
ZGF0ZShwYWdlU2NhbGUsIEludFBvaW50KCkpOwotICAgIG1faG9zdEltcGwtPnBpbmNoR2VzdHVy
ZUVuZCgpOwotCi0gICAgLy8gVGhlIHNjcm9sbCBkZWx0YSBpcyBub3Qgc2NhbGVkIGJlY2F1c2Ug
dGhlIG1haW4gdGhyZWFkIGRpZCBub3Qgc2NhbGUuCi0gICAgT3duUHRyPENDU2Nyb2xsQW5kU2Nh
bGVTZXQ+IHNjcm9sbEluZm8gPSBtX2hvc3RJbXBsLT5wcm9jZXNzU2Nyb2xsRGVsdGFzKCk7Ci0g
ICAgZXhwZWN0Q29udGFpbnMoKnNjcm9sbEluZm8uZ2V0KCksIDAsIGV4cGVjdGVkU2Nyb2xsRGVs
dGEpOwotCi0gICAgLy8gVGhlIHNjcm9sbCByYW5nZSBzaG91bGQgYWxzbyBoYXZlIGJlZW4gdXBk
YXRlZC4KLSAgICBFWFBFQ1RfRVEobV9ob3N0SW1wbC0+cm9vdExheWVyKCktPm1heFNjcm9sbFBv
c2l0aW9uKCksIGV4cGVjdGVkTWF4U2Nyb2xsKTsKLQotICAgIC8vIFRoZSBwYWdlIHNjYWxlIGRl
bHRhIHNob3VsZCBtYXRjaCB0aGUgbmV3IHNjYWxlIG9uIHRoZSBpbXBsIHNpZGUuCi0gICAgRVhQ
RUNUX0VRKG1faG9zdEltcGwtPnJvb3RMYXllcigpLT5wYWdlU2NhbGVEZWx0YSgpLCBwYWdlU2Nh
bGUpOwotfQotCi1URVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbENoaWxkQW5k
Q2hhbmdlUGFnZVNjYWxlT25NYWluVGhyZWFkKQotewotICAgIEludFNpemUgc3VyZmFjZVNpemUo
MTAsIDEwKTsKLSAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3Jl
YXRlKDApOwotICAgIC8vIEFsc28gbWFyayB0aGUgcm9vdCBzY3JvbGxhYmxlIHNvIGl0IGJlY29t
ZXMgdGhlIHJvb3Qgc2Nyb2xsIGxheWVyLgotICAgIHJvb3QtPnNldFNjcm9sbGFibGUodHJ1ZSk7
Ci0gICAgcm9vdC0+YWRkQ2hpbGQoY3JlYXRlU2Nyb2xsYWJsZUxheWVyKDEsIEZsb2F0UG9pbnQo
NSwgNSksIHN1cmZhY2VTaXplKSk7Ci0gICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3Qu
cmVsZWFzZSgpKTsKLSAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoc3VyZmFjZVNpemUp
OwotICAgIGluaXRpYWxpemVMYXllclJlbmRlcmVyQW5kRHJhd0ZyYW1lKCk7Ci0KLSAgICBDQ0xh
eWVySW1wbCogY2hpbGQgPSBtX2hvc3RJbXBsLT5yb290TGF5ZXIoKS0+Y2hpbGRyZW4oKVswXS5n
ZXQoKTsKLQotICAgIEludFNpemUgc2Nyb2xsRGVsdGEoMCwgMTApOwotICAgIEludFNpemUgZXhw
ZWN0ZWRTY3JvbGxEZWx0YShzY3JvbGxEZWx0YSk7Ci0gICAgSW50U2l6ZSBleHBlY3RlZE1heFNj
cm9sbChjaGlsZC0+bWF4U2Nyb2xsUG9zaXRpb24oKSk7Ci0gICAgRVhQRUNUX0VRKG1faG9zdElt
cGwtPnNjcm9sbEJlZ2luKEludFBvaW50KDUsIDUpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6V2hl
ZWwpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCk7Ci0gICAgbV9ob3N0SW1w
bC0+c2Nyb2xsQnkoc2Nyb2xsRGVsdGEpOwotICAgIG1faG9zdEltcGwtPnNjcm9sbEVuZCgpOwot
Ci0gICAgZmxvYXQgcGFnZVNjYWxlID0gMjsKLSAgICBtX2hvc3RJbXBsLT5zZXRQYWdlU2NhbGVG
YWN0b3JBbmRMaW1pdHMocGFnZVNjYWxlLCAxLCBwYWdlU2NhbGUpOwotCi0gICAgLy8gVGhlIHNj
YWxlIHNob3VsZCBhcHBseSB0byB0aGUgc2Nyb2xsIGRlbHRhLgotICAgIGV4cGVjdGVkU2Nyb2xs
RGVsdGEuc2NhbGUocGFnZVNjYWxlKTsKLSAgICBPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4g
c2Nyb2xsSW5mbyA9IG1faG9zdEltcGwtPnByb2Nlc3NTY3JvbGxEZWx0YXMoKTsKLSAgICBleHBl
Y3RDb250YWlucygqc2Nyb2xsSW5mby5nZXQoKSwgMSwgZXhwZWN0ZWRTY3JvbGxEZWx0YSk7Ci0K
LSAgICAvLyBUaGUgc2Nyb2xsIHJhbmdlIHNob3VsZCBub3QgaGF2ZSBjaGFuZ2VkLgotICAgIEVY
UEVDVF9FUShjaGlsZC0+bWF4U2Nyb2xsUG9zaXRpb24oKSwgZXhwZWN0ZWRNYXhTY3JvbGwpOwot
Ci0gICAgLy8gVGhlIHBhZ2Ugc2NhbGUgZGVsdGEgcmVtYWlucyBjb25zdGFudCBiZWNhdXNlIHRo
ZSBpbXBsIHRocmVhZCBkaWQgbm90IHNjYWxlLgotICAgIEVYUEVDVF9FUShjaGlsZC0+cGFnZVNj
YWxlRGVsdGEoKSwgMSk7Ci19Ci0KLVRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Ny
b2xsQ2hpbGRCZXlvbmRMaW1pdCkKLXsKLSAgICAvLyBTY3JvbGwgYSBjaGlsZCBsYXllciBiZXlv
bmQgaXRzIG1heGltdW0gc2Nyb2xsIHJhbmdlIGFuZCBtYWtlIHN1cmUgdGhlCi0gICAgLy8gcGFy
ZW50IGxheWVyIGlzIHNjcm9sbGVkIG9uIHRoZSBheGlzIG9uIHdoaWNoIHRoZSBjaGlsZCB3YXMg
dW5hYmxlIHRvCi0gICAgLy8gc2Nyb2xsLgotICAgIEludFNpemUgc3VyZmFjZVNpemUoMTAsIDEw
KTsKLSAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVTY3JvbGxhYmxlTGF5ZXIo
MCwgRmxvYXRQb2ludCg1LCA1KSwgc3VyZmFjZVNpemUpOwotCi0gICAgT3duUHRyPENDTGF5ZXJJ
bXBsPiBncmFuZENoaWxkID0gY3JlYXRlU2Nyb2xsYWJsZUxheWVyKDIsIEZsb2F0UG9pbnQoNSwg
NSksIHN1cmZhY2VTaXplKTsKLSAgICBncmFuZENoaWxkLT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQ
b2ludCgwLCA1KSk7Ci0KLSAgICBPd25QdHI8Q0NMYXllckltcGw+IGNoaWxkID0gY3JlYXRlU2Ny
b2xsYWJsZUxheWVyKDEsIEZsb2F0UG9pbnQoNSwgNSksIHN1cmZhY2VTaXplKTsKLSAgICBjaGls
ZC0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoMywgMCkpOwotICAgIGNoaWxkLT5hZGRDaGls
ZChncmFuZENoaWxkLnJlbGVhc2UoKSk7Ci0KLSAgICByb290LT5hZGRDaGlsZChjaGlsZC5yZWxl
YXNlKCkpOwotICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihyb290LnJlbGVhc2UoKSk7Ci0g
ICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKHN1cmZhY2VTaXplKTsKLSAgICBpbml0aWFs
aXplTGF5ZXJSZW5kZXJlckFuZERyYXdGcmFtZSgpOwotICAgIHsKLSAgICAgICAgSW50U2l6ZSBz
Y3JvbGxEZWx0YSgtMywgLTcpOwotICAgICAgICBFWFBFQ1RfRVEobV9ob3N0SW1wbC0+c2Nyb2xs
QmVnaW4oSW50UG9pbnQoNSwgNSksIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpXaGVlbCksIENDSW5w
dXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKTsKLSAgICAgICAgbV9ob3N0SW1wbC0+c2Ny
b2xsQnkoc2Nyb2xsRGVsdGEpOwotICAgICAgICBtX2hvc3RJbXBsLT5zY3JvbGxFbmQoKTsKLQot
ICAgICAgICBPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4gc2Nyb2xsSW5mbyA9IG1faG9zdElt
cGwtPnByb2Nlc3NTY3JvbGxEZWx0YXMoKTsKLQotICAgICAgICAvLyBUaGUgZ3JhbmQgY2hpbGQg
c2hvdWxkIGhhdmUgc2Nyb2xsZWQgdXAgdG8gaXRzIGxpbWl0LgotICAgICAgICBDQ0xheWVySW1w
bCogY2hpbGQgPSBtX2hvc3RJbXBsLT5yb290TGF5ZXIoKS0+Y2hpbGRyZW4oKVswXS5nZXQoKTsK
LSAgICAgICAgQ0NMYXllckltcGwqIGdyYW5kQ2hpbGQgPSBjaGlsZC0+Y2hpbGRyZW4oKVswXS5n
ZXQoKTsKLSAgICAgICAgZXhwZWN0Q29udGFpbnMoKnNjcm9sbEluZm8uZ2V0KCksIGdyYW5kQ2hp
bGQtPmlkKCksIEludFNpemUoMCwgLTUpKTsKLQotICAgICAgICAvLyBUaGUgY2hpbGQgc2hvdWxk
IGhhdmUgb25seSBzY3JvbGxlZCBvbiB0aGUgb3RoZXIgYXhpcy4KLSAgICAgICAgZXhwZWN0Q29u
dGFpbnMoKnNjcm9sbEluZm8uZ2V0KCksIGNoaWxkLT5pZCgpLCBJbnRTaXplKC0zLCAwKSk7Ci0g
ICAgfQotfQotCi1URVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbEJlZm9yZVJl
ZHJhdykKLXsKLSAgICBJbnRTaXplIHN1cmZhY2VTaXplKDEwLCAxMCk7Ci0gICAgbV9ob3N0SW1w
bC0+c2V0Um9vdExheWVyKGNyZWF0ZVNjcm9sbGFibGVMYXllcigwLCBGbG9hdFBvaW50KDUsIDUp
LCBzdXJmYWNlU2l6ZSkpOwotICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShzdXJmYWNl
U2l6ZSk7Ci0KLSAgICAvLyBEcmF3IG9uZSBmcmFtZSBhbmQgdGhlbiBpbW1lZGlhdGVseSByZWJ1
aWxkIHRoZSBsYXllciB0cmVlIHRvIG1pbWljIGEgdHJlZSBzeW5jaHJvbml6YXRpb24uCi0gICAg
aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJBbmREcmF3RnJhbWUoKTsKLSAgICBtX2hvc3RJbXBsLT5y
ZWxlYXNlUm9vdExheWVyKCk7Ci0gICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKGNyZWF0ZVNj
cm9sbGFibGVMYXllcigwLCBGbG9hdFBvaW50KDUsIDUpLCBzdXJmYWNlU2l6ZSkpOwotCi0gICAg
Ly8gU2Nyb2xsaW5nIHNob3VsZCBzdGlsbCB3b3JrIGV2ZW4gdGhvdWdoIHdlIGRpZCBub3QgZHJh
dyB5ZXQuCi0gICAgRVhQRUNUX0VRKG1faG9zdEltcGwtPnNjcm9sbEJlZ2luKEludFBvaW50KDUs
IDUpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6V2hlZWwpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6
U2Nyb2xsU3RhcnRlZCk7Ci19Ci0KIGNsYXNzIEJsZW5kU3RhdGVUcmFja2VyQ29udGV4dDogcHVi
bGljIEZha2VXZWJHcmFwaGljc0NvbnRleHQzRCB7CiBwdWJsaWM6CiAgICAgQmxlbmRTdGF0ZVRy
YWNrZXJDb250ZXh0KCkgOiBtX2JsZW5kKGZhbHNlKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IGY3MTQ3YTdh
NWM4NjY4Y2JmYTllNDdiM2NmY2MwZmMyZGMzZDY1NWEuLmQ3M2ViYzU2ZjRhNTI4NWVmYmFiYzk3
OTAyZmViYTQzYzAwNTJlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMTU1MCw3ICsxNTUwLDYgQEAgcHVibGlj
OgogICAgIH0KIAogICAgIHZpcnR1YWwgYm9vbCBwcmVzZXJ2ZXMzRCgpIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFNjcm9sbChjb25zdCBJbnRTaXplJikgeyB9CiAKIHBy
aXZhdGU6CiAgICAgQ0NMYXllclRyZWVIb3N0VGVzdCogbV90ZXN0OwpAQCAtMTY4NSw4ICsxNjg0
LDcgQEAgY2xhc3MgTW9ja0NvbnRlbnRMYXllckRlbGVnYXRlIDogcHVibGljIENvbnRlbnRMYXll
ckRlbGVnYXRlIHsKIHB1YmxpYzoKICAgICBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KICAgICBNT0NLX0NPTlNUX01FVEhPRDAocHJlc2VydmVzM0QsIGJvb2woKSk7
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
SW50UmVjdCYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRTY3JvbGwoY29uc3QgSW50U2l6ZSYp
IHsgfQorICAgIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRS
ZWN0JikgeyB9CiAgICAgdm9pZCBub3RpZnlTeW5jUmVxdWlyZWQoKSB7IH0KIH07CiAKQEAgLTI0
NDgsNzAgKzI0NDYsNCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdEZyYWN0aW9uYWxTY3Jv
bGwsIHJ1bk11bHRpVGhyZWFkKQogICAgIHJ1blRlc3RUaHJlYWRlZCgpOwogfQogCi1jbGFzcyBD
Q0xheWVyVHJlZUhvc3RUZXN0U2Nyb2xsQ2hpbGRMYXllciA6IHB1YmxpYyBDQ0xheWVyVHJlZUhv
c3RUZXN0IHsKLXB1YmxpYzoKLSAgICBDQ0xheWVyVHJlZUhvc3RUZXN0U2Nyb2xsQ2hpbGRMYXll
cigpCi0gICAgICAgIDogbV9zY3JvbGxBbW91bnQoMiwgMSkKLSAgICB7Ci0gICAgfQotCi0gICAg
dmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCi0gICAgewotICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOwotICAgICAgICBtX3Jvb3RTY3JvbGxM
YXllciA9IENvbnRlbnRMYXllckNocm9taXVtOjpjcmVhdGUoJm1fbW9ja0RlbGVnYXRlKTsKLSAg
ICAgICAgbV9yb290U2Nyb2xsTGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOwotICAg
ICAgICBtX3Jvb3RTY3JvbGxMYXllci0+c2V0SXNEcmF3YWJsZSh0cnVlKTsKLSAgICAgICAgbV9y
b290U2Nyb2xsTGF5ZXItPnNldFNjcm9sbGFibGUodHJ1ZSk7Ci0gICAgICAgIG1fcm9vdFNjcm9s
bExheWVyLT5zZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRTaXplKDEwMCwgMTAwKSk7Ci0gICAgICAg
IG1fbGF5ZXJUcmVlSG9zdC0+cm9vdExheWVyKCktPmFkZENoaWxkKG1fcm9vdFNjcm9sbExheWVy
KTsKLSAgICAgICAgbV9jaGlsZExheWVyID0gQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZSgm
bV9tb2NrRGVsZWdhdGUpOwotICAgICAgICBtX2NoaWxkTGF5ZXItPnNldEJvdW5kcyhJbnRTaXpl
KDUwLCA1MCkpOwotICAgICAgICBtX2NoaWxkTGF5ZXItPnNldElzRHJhd2FibGUodHJ1ZSk7Ci0g
ICAgICAgIG1fY2hpbGRMYXllci0+c2V0U2Nyb2xsYWJsZSh0cnVlKTsKLSAgICAgICAgbV9jaGls
ZExheWVyLT5zZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRTaXplKDEwMCwgMTAwKSk7Ci0gICAgICAg
IG1fcm9vdFNjcm9sbExheWVyLT5hZGRDaGlsZChtX2NoaWxkTGF5ZXIpOwotICAgICAgICBwb3N0
U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
YXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQpCi0g
ICAgewotICAgICAgICBJbnRQb2ludCBwb3NpdGlvbiA9IG1fcm9vdFNjcm9sbExheWVyLT5zY3Jv
bGxQb3NpdGlvbigpOwotICAgICAgICBtX3Jvb3RTY3JvbGxMYXllci0+c2V0U2Nyb2xsUG9zaXRp
b24ocG9zaXRpb24gKyBzY3JvbGxEZWx0YSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIGJl
Z2luQ29tbWl0T25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQotICAgIHsKLSAg
ICAgICAgRVhQRUNUX0VRKG1fcm9vdFNjcm9sbExheWVyLT5zY3JvbGxQb3NpdGlvbigpLCBJbnRQ
b2ludCgpKTsKLSAgICAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QtPmZyYW1lTnVtYmVyKCkpCi0g
ICAgICAgICAgICBFWFBFQ1RfRVEobV9jaGlsZExheWVyLT5zY3JvbGxQb3NpdGlvbigpLCBJbnRQ
b2ludCgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgRVhQRUNUX0VRKG1fY2hpbGRMYXll
ci0+c2Nyb2xsUG9zaXRpb24oKSwgSW50UG9pbnQoKSArIG1fc2Nyb2xsQW1vdW50KTsKLSAgICB9
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0
SW1wbCogaW1wbCkKLSAgICB7Ci0gICAgICAgIGlmIChpbXBsLT5mcmFtZU51bWJlcigpID09IDEp
IHsKLSAgICAgICAgICAgIEVYUEVDVF9FUShpbXBsLT5zY3JvbGxCZWdpbihJbnRQb2ludCg1LCA1
KSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OldoZWVsKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNj
cm9sbFN0YXJ0ZWQpOwotICAgICAgICAgICAgaW1wbC0+c2Nyb2xsQnkobV9zY3JvbGxBbW91bnQp
OwotICAgICAgICAgICAgaW1wbC0+c2Nyb2xsRW5kKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaW1w
bC0+ZnJhbWVOdW1iZXIoKSA9PSAyKQotICAgICAgICAgICAgZW5kVGVzdCgpOwotICAgIH0KLQot
ICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQotICAgIHsKLSAgICB9Ci0KLXByaXZhdGU6Ci0g
ICAgY29uc3QgSW50U2l6ZSBtX3Njcm9sbEFtb3VudDsKLSAgICBNb2NrQ29udGVudExheWVyRGVs
ZWdhdGUgbV9tb2NrRGVsZWdhdGU7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1fY2hpbGRM
YXllcjsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9yb290U2Nyb2xsTGF5ZXI7Ci19Owot
Ci1URVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdFNjcm9sbENoaWxkTGF5ZXIsIHJ1bk11bHRpVGhy
ZWFkKQotewotICAgIHJ1blRlc3QodHJ1ZSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>