<?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>164106</bug_id>
          
          <creation_ts>2016-10-27 20:54:29 -0700</creation_ts>
          <short_desc>constify the CSSValue arguments to StyleBuilderConverter functions</short_desc>
          <delta_ts>2016-10-27 21:21:43 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1245421</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-10-27 20:54:29 -0700</bug_when>
    <thetext>constify the CSSValue arguments to StyleBuilderConverter functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245422</commentid>
    <comment_count>1</comment_count>
      <attachid>293108</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-10-27 20:55:55 -0700</bug_when>
    <thetext>Created attachment 293108
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245432</commentid>
    <comment_count>2</comment_count>
      <attachid>293108</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-27 21:21:40 -0700</bug_when>
    <thetext>Comment on attachment 293108
Patch

Clearing flags on attachment: 293108

Committed r208030: &lt;http://trac.webkit.org/changeset/208030&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245433</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-27 21:21:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293108</attachid>
            <date>2016-10-27 20:55:55 -0700</date>
            <delta_ts>2016-10-27 21:21:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164106-20161027205205.patch</filename>
            <type>text/plain</type>
            <size>52291</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmJlMGJmYjA0YWUwNTli
MGQ0ZTY2OTMxNmU3YWE4Y2UxNmIxMjViYS4uNjcwNWJmZjgxNGI0YmY3MTAxNmU5OTA4M2FjYTA2
NjhhMzJjNWMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg5IEBACiAyMDE2LTEwLTI3ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCisgICAgICAgIGNvbnN0aWZ5IHRo
ZSBDU1NWYWx1ZSBhcmd1bWVudHMgdG8gU3R5bGVCdWlsZGVyQ29udmVydGVyIGZ1bmN0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTA2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBhbG1v
c3QgYWxsIHRoZSBDU1NWYWx1ZSYgYXJndW1lbnRzIGNvbnN0ICh0aGlzIG1ha2VzIGl0IGNsZWFy
IHRoYXQgdGhleQorICAgICAgICBhcmUgaW4gcGFyYW1zLCBub3Qgb3V0IHBhcmFtcykuIE9ubHkg
YSBmZXcgdGhhdCBhcmUgQ1NTSW1hZ2VWYWx1ZXMgYXJlIG5vbi1jb25zdCwKKyAgICAgICAgYmVj
YXVzZSB0aGV5IGZhbGwgaW50byBhIG5vbi1jb25zdCBjb2RlIHBhdGguCisKKyAgICAgICAgKiBj
c3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGhPckF1dG8pOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoU2l6aW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0aE1heFNpemluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDb21wdXRlZExlbmd0
aCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMaW5l
V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
U3BhY2luZyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRUb1JhZGl1c0xlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRSYWRpdXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0T2JqZWN0UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dERlY29yYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE51bWJlck9yQXV0byk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRXZWJraXRIeXBoZW5hdGVMaW1p
dExpbmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0U3RyaW5nT3JBdXRvKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydFN0cmluZ09yTm9uZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OnZhbHVlVG9FbXBoYXNpc1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRFbXBoYXNpc1Bvc2l0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRBbGlnbik6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDbGlwUGF0
aCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZXNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TWFy
cXVlZVJlcGV0aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0TWFycXVlZVNwZWVkKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydFF1b3Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRUZXh0VW5kZXJsaW5lUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmVmbGVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRJbml0aWFsTGV0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRTdHJva2VX
aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRM
aW5lQm94Q29udGFpbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRUZXh0RGVjb3JhdGlvblNraXApOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0U2Nyb2xsU25hcFBvaW50cyk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTbmFwQ29vcmRpbmF0ZVBhaXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2Nyb2xsU25hcENv
b3JkaW5hdGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3Jl
YXRlR3JpZFRyYWNrQnJlYWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFja1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRUcmFja1NpemVMaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRUcmFja1Np
emUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R3Jp
ZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydEdyaWRBdXRvRmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRXb3JkU3BhY2luZyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRQZXJzcGVjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVlSW5jcmVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZpbHRlck9wZXJhdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udEZlYXR1cmVT
ZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRGb250VmFyaWF0aW9uU2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0VG91Y2hDYWxsb3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRhcEhpZ2hsaWdodENvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE92ZXJmbG93U2Nyb2xsaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNWR0xlbmd0
aCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTVkdM
ZW5ndGhWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0U3Ryb2tlRGFzaEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydFBhaW50T3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0T3BhY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTVkdVUklSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U1ZHQ29sb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2VsZk9yRGVmYXVsdEFsaWdubWVu
dERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
Q29udGVudEFsaWdubWVudERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0R2x5cGhPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHbHlwaE9yaWVudGF0aW9uT3JBdXRvKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVIZWlnaHQpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN5bnRo
ZXNpcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQ
YWdlQnJlYWtCZXR3ZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFBhZ2VCcmVha0luc2lkZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRDb2x1bW5CcmVha0JldHdlZW4pOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q29sdW1uQnJlYWtJbnNpZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmVnaW9uQnJlYWtC
ZXR3ZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dFJlZ2lvbkJyZWFrSW5zaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydEhhbmdpbmdQdW5jdHVhdGlvbik6CisKKzIwMTYtMTAtMjcgIFNpbW9uIEZy
YXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKICAgICAgICAgUmVuYW1lIFN0eWxlUmFy
ZU5vbkluaGVyaXRlZERhdGE6Om9wYWNpdHkgdG8gbV9vcGFjaXR5CiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQxMDQKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCmluZGV4IGEyZTAyMWVjYjUxZmNmMGFiOTQ3YWI3
YjQ0MDhiMTEwYzJiYTdlNTguLjFkMTQxNzg5MTRiYzQyNDE3Y2MwZjEyMWY0MGUyNTU1Y2E5ZmYw
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKQEAgLTYx
LDk3ICs2MSw5NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBMZW5ndGggY29udmVydExlbmd0aChTdHlsZVJl
c29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRMZW5n
dGhPckF1dG8oU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIExlbmd0aCBj
b252ZXJ0TGVuZ3RoU2l6aW5nKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwotICAgIHN0YXRp
YyBMZW5ndGggY29udmVydExlbmd0aE1heFNpemluZyhTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUm
KTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIFQgY29udmVydENvbXB1dGVkTGVu
Z3RoKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBzdGF0aWMgVCBjb252ZXJ0TGluZVdpZHRoKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwot
ICAgIHN0YXRpYyBmbG9hdCBjb252ZXJ0U3BhY2luZyhTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUm
KTsKLSAgICBzdGF0aWMgTGVuZ3RoU2l6ZSBjb252ZXJ0UmFkaXVzKFN0eWxlUmVzb2x2ZXImLCBD
U1NWYWx1ZSYpOwotICAgIHN0YXRpYyBMZW5ndGhQb2ludCBjb252ZXJ0T2JqZWN0UG9zaXRpb24o
U3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIFRleHREZWNvcmF0aW9uIGNv
bnZlcnRUZXh0RGVjb3JhdGlvbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKLSAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIFQgY29udmVydE51bWJlcihTdHlsZVJlc29sdmVyJiwg
Q1NTVmFsdWUmKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIFQgY29udmVydE51
bWJlck9yQXV0byhTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgc2hvcnQg
Y29udmVydFdlYmtpdEh5cGhlbmF0ZUxpbWl0TGluZXMoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVl
Jik7CisgICAgc3RhdGljIExlbmd0aCBjb252ZXJ0TGVuZ3RoT3JBdXRvKFN0eWxlUmVzb2x2ZXIm
LCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBMZW5ndGggY29udmVydExlbmd0aFNpemlu
ZyhTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgTGVuZ3RoIGNv
bnZlcnRMZW5ndGhNYXhTaXppbmcoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7Cisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBUIGNvbnZlcnRDb21wdXRlZExlbmd0aChT
dHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gc3RhdGljIFQgY29udmVydExpbmVXaWR0aChTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFs
dWUmKTsKKyAgICBzdGF0aWMgZmxvYXQgY29udmVydFNwYWNpbmcoU3R5bGVSZXNvbHZlciYsIGNv
bnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIExlbmd0aFNpemUgY29udmVydFJhZGl1cyhTdHls
ZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgTGVuZ3RoUG9pbnQgY29u
dmVydE9iamVjdFBvc2l0aW9uKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOworICAg
IHN0YXRpYyBUZXh0RGVjb3JhdGlvbiBjb252ZXJ0VGV4dERlY29yYXRpb24oU3R5bGVSZXNvbHZl
ciYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBU
IGNvbnZlcnROdW1iZXIoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBUIGNvbnZlcnROdW1iZXJPckF1dG8oU3R5bGVSZXNv
bHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIHNob3J0IGNvbnZlcnRXZWJraXRI
eXBoZW5hdGVMaW1pdExpbmVzKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogICAg
IHRlbXBsYXRlIDxDU1NQcm9wZXJ0eUlEIHByb3BlcnR5PiBzdGF0aWMgTmluZVBpZWNlSW1hZ2Ug
Y29udmVydEJvcmRlckltYWdlKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHRlbXBs
YXRlIDxDU1NQcm9wZXJ0eUlEIHByb3BlcnR5PiBzdGF0aWMgTmluZVBpZWNlSW1hZ2UgY29udmVy
dEJvcmRlck1hc2soU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CiAgICAgdGVtcGxhdGUgPENT
U1Byb3BlcnR5SUQgcHJvcGVydHk+IHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IGNvbnZl
cnRTdHlsZUltYWdlKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBUcmFu
c2Zvcm1PcGVyYXRpb25zIGNvbnZlcnRUcmFuc2Zvcm0oU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVl
Jik7Ci0gICAgc3RhdGljIFN0cmluZyBjb252ZXJ0U3RyaW5nKFN0eWxlUmVzb2x2ZXImLCBDU1NW
YWx1ZSYpOwotICAgIHN0YXRpYyBTdHJpbmcgY29udmVydFN0cmluZ09yQXV0byhTdHlsZVJlc29s
dmVyJiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgU3RyaW5nIGNvbnZlcnRTdHJpbmdPck5vbmUo
U3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIFRleHRFbXBoYXNpc1Bvc2l0
aW9uIGNvbnZlcnRUZXh0RW1waGFzaXNQb3NpdGlvbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUm
KTsKLSAgICBzdGF0aWMgRVRleHRBbGlnbiBjb252ZXJ0VGV4dEFsaWduKFN0eWxlUmVzb2x2ZXIm
LCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+IGNvbnZl
cnRDbGlwUGF0aChTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgRVJlc2l6
ZSBjb252ZXJ0UmVzaXplKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBp
bnQgY29udmVydE1hcnF1ZWVSZXBldGl0aW9uKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwot
ICAgIHN0YXRpYyBpbnQgY29udmVydE1hcnF1ZWVTcGVlZChTdHlsZVJlc29sdmVyJiwgQ1NTVmFs
dWUmKTsKLSAgICBzdGF0aWMgUmVmPFF1b3Rlc0RhdGE+IGNvbnZlcnRRdW90ZXMoU3R5bGVSZXNv
bHZlciYsIENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIFRleHRVbmRlcmxpbmVQb3NpdGlvbiBjb252
ZXJ0VGV4dFVuZGVybGluZVBvc2l0aW9uKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwotICAg
IHN0YXRpYyBSZWZQdHI8U3R5bGVSZWZsZWN0aW9uPiBjb252ZXJ0UmVmbGVjdGlvbihTdHlsZVJl
c29sdmVyJiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgSW50U2l6ZSBjb252ZXJ0SW5pdGlhbExl
dHRlcihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgZmxvYXQgY29udmVy
dFRleHRTdHJva2VXaWR0aChTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMg
TGluZUJveENvbnRhaW4gY29udmVydExpbmVCb3hDb250YWluKFN0eWxlUmVzb2x2ZXImLCBDU1NW
YWx1ZSYpOwotICAgIHN0YXRpYyBUZXh0RGVjb3JhdGlvblNraXAgY29udmVydFRleHREZWNvcmF0
aW9uU2tpcChTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgVHJhbnNmb3Jt
T3BlcmF0aW9ucyBjb252ZXJ0VHJhbnNmb3JtKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1
ZSYpOworICAgIHN0YXRpYyBTdHJpbmcgY29udmVydFN0cmluZyhTdHlsZVJlc29sdmVyJiwgY29u
c3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgU3RyaW5nIGNvbnZlcnRTdHJpbmdPckF1dG8oU3R5
bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFN0cmluZyBjb252ZXJ0
U3RyaW5nT3JOb25lKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRp
YyBUZXh0RW1waGFzaXNQb3NpdGlvbiBjb252ZXJ0VGV4dEVtcGhhc2lzUG9zaXRpb24oU3R5bGVS
ZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIEVUZXh0QWxpZ24gY29udmVy
dFRleHRBbGlnbihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMg
UmVmUHRyPENsaXBQYXRoT3BlcmF0aW9uPiBjb252ZXJ0Q2xpcFBhdGgoU3R5bGVSZXNvbHZlciYs
IGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIEVSZXNpemUgY29udmVydFJlc2l6ZShTdHls
ZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgaW50IGNvbnZlcnRNYXJx
dWVlUmVwZXRpdGlvbihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0
aWMgaW50IGNvbnZlcnRNYXJxdWVlU3BlZWQoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVl
Jik7CisgICAgc3RhdGljIFJlZjxRdW90ZXNEYXRhPiBjb252ZXJ0UXVvdGVzKFN0eWxlUmVzb2x2
ZXImLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBUZXh0VW5kZXJsaW5lUG9zaXRpb24g
Y29udmVydFRleHRVbmRlcmxpbmVQb3NpdGlvbihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFs
dWUmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFN0eWxlUmVmbGVjdGlvbj4gY29udmVydFJlZmxlY3Rp
b24oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIEludFNpemUg
Y29udmVydEluaXRpYWxMZXR0ZXIoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7Cisg
ICAgc3RhdGljIGZsb2F0IGNvbnZlcnRUZXh0U3Ryb2tlV2lkdGgoU3R5bGVSZXNvbHZlciYsIGNv
bnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIExpbmVCb3hDb250YWluIGNvbnZlcnRMaW5lQm94
Q29udGFpbihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgVGV4
dERlY29yYXRpb25Ta2lwIGNvbnZlcnRUZXh0RGVjb3JhdGlvblNraXAoU3R5bGVSZXNvbHZlciYs
IGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcGVWYWx1ZT4gY29u
dmVydFNoYXBlVmFsdWUoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CiAjaWYgRU5BQkxFKENT
U19TQ1JPTExfU05BUCkKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbFNuYXBQb2lu
dHM+IGNvbnZlcnRTY3JvbGxTbmFwUG9pbnRzKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwot
ICAgIHN0YXRpYyBMZW5ndGhTaXplIGNvbnZlcnRTbmFwQ29vcmRpbmF0ZVBhaXIoU3R5bGVSZXNv
bHZlciYsIENTU1ZhbHVlJiwgc2l6ZV90IG9mZnNldCA9IDApOwotICAgIHN0YXRpYyBWZWN0b3I8
TGVuZ3RoU2l6ZT4gY29udmVydFNjcm9sbFNuYXBDb29yZGluYXRlcyhTdHlsZVJlc29sdmVyJiwg
Q1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbFNuYXBQb2ludHM+
IGNvbnZlcnRTY3JvbGxTbmFwUG9pbnRzKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYp
OworICAgIHN0YXRpYyBMZW5ndGhTaXplIGNvbnZlcnRTbmFwQ29vcmRpbmF0ZVBhaXIoU3R5bGVS
ZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJiwgc2l6ZV90IG9mZnNldCA9IDApOworICAgIHN0YXRp
YyBWZWN0b3I8TGVuZ3RoU2l6ZT4gY29udmVydFNjcm9sbFNuYXBDb29yZGluYXRlcyhTdHlsZVJl
c29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKICNlbmRpZgogI2lmIEVOQUJMRShDU1NfR1JJRF9M
QVlPVVQpCi0gICAgc3RhdGljIEdyaWRUcmFja1NpemUgY29udmVydEdyaWRUcmFja1NpemUoU3R5
bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIFZlY3RvcjxHcmlkVHJhY2tTaXpl
PiBjb252ZXJ0R3JpZFRyYWNrU2l6ZUxpc3QoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7Ci0g
ICAgc3RhdGljIE9wdGlvbmFsPEdyaWRQb3NpdGlvbj4gY29udmVydEdyaWRQb3NpdGlvbihTdHls
ZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgR3JpZEF1dG9GbG93IGNvbnZlcnRH
cmlkQXV0b0Zsb3coU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIEdyaWRU
cmFja1NpemUgY29udmVydEdyaWRUcmFja1NpemUoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1Zh
bHVlJik7CisgICAgc3RhdGljIFZlY3RvcjxHcmlkVHJhY2tTaXplPiBjb252ZXJ0R3JpZFRyYWNr
U2l6ZUxpc3QoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIE9w
dGlvbmFsPEdyaWRQb3NpdGlvbj4gY29udmVydEdyaWRQb3NpdGlvbihTdHlsZVJlc29sdmVyJiwg
Y29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgR3JpZEF1dG9GbG93IGNvbnZlcnRHcmlkQXV0
b0Zsb3coU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CiAjZW5kaWYgLy8gRU5BQkxF
KENTU19HUklEX0xBWU9VVCkKLSAgICBzdGF0aWMgT3B0aW9uYWw8TGVuZ3RoPiBjb252ZXJ0V29y
ZFNwYWNpbmcoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIE9wdGlvbmFs
PGZsb2F0PiBjb252ZXJ0UGVyc3BlY3RpdmUoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7Ci0g
ICAgc3RhdGljIE9wdGlvbmFsPExlbmd0aD4gY29udmVydE1hcnF1ZWVJbmNyZW1lbnQoU3R5bGVS
ZXNvbHZlciYsIENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPEZpbHRlck9wZXJhdGlv
bnM+IGNvbnZlcnRGaWx0ZXJPcGVyYXRpb25zKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwor
ICAgIHN0YXRpYyBPcHRpb25hbDxMZW5ndGg+IGNvbnZlcnRXb3JkU3BhY2luZyhTdHlsZVJlc29s
dmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8ZmxvYXQ+IGNvbnZl
cnRQZXJzcGVjdGl2ZShTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0
aWMgT3B0aW9uYWw8TGVuZ3RoPiBjb252ZXJ0TWFycXVlZUluY3JlbWVudChTdHlsZVJlc29sdmVy
JiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8RmlsdGVyT3BlcmF0aW9u
cz4gY29udmVydEZpbHRlck9wZXJhdGlvbnMoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVl
Jik7CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHN0YXRpYyBib29sIGNvbnZlcnRUb3VjaENhbGxv
dXQoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIGJvb2wgY29udmVydFRv
dWNoQ2FsbG91dChTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKICNlbmRpZgogI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgc3RhdGljIENvbG9yIGNvbnZlcnRUYXBIaWdobGln
aHRDb2xvcihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgQ29sb3IgY29u
dmVydFRhcEhpZ2hsaWdodENvbG9yKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwog
I2VuZGlmCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykKLSAgICBz
dGF0aWMgYm9vbCBjb252ZXJ0T3ZlcmZsb3dTY3JvbGxpbmcoU3R5bGVSZXNvbHZlciYsIENTU1Zh
bHVlJik7CisgICAgc3RhdGljIGJvb2wgY29udmVydE92ZXJmbG93U2Nyb2xsaW5nKFN0eWxlUmVz
b2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogI2VuZGlmCi0gICAgc3RhdGljIEZvbnRGZWF0dXJl
U2V0dGluZ3MgY29udmVydEZvbnRGZWF0dXJlU2V0dGluZ3MoU3R5bGVSZXNvbHZlciYsIENTU1Zh
bHVlJik7CisgICAgc3RhdGljIEZvbnRGZWF0dXJlU2V0dGluZ3MgY29udmVydEZvbnRGZWF0dXJl
U2V0dGluZ3MoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CiAjaWYgRU5BQkxFKFZB
UklBVElPTl9GT05UUykKLSAgICBzdGF0aWMgRm9udFZhcmlhdGlvblNldHRpbmdzIGNvbnZlcnRG
b250VmFyaWF0aW9uU2V0dGluZ3MoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CisgICAgc3Rh
dGljIEZvbnRWYXJpYXRpb25TZXR0aW5ncyBjb252ZXJ0Rm9udFZhcmlhdGlvblNldHRpbmdzKFN0
eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogI2VuZGlmCi0gICAgc3RhdGljIFNWR0xl
bmd0aCBjb252ZXJ0U1ZHTGVuZ3RoKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwotICAgIHN0
YXRpYyBWZWN0b3I8U1ZHTGVuZ3RoPiBjb252ZXJ0U1ZHTGVuZ3RoVmVjdG9yKFN0eWxlUmVzb2x2
ZXImLCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBWZWN0b3I8U1ZHTGVuZ3RoPiBjb252ZXJ0U3Ry
b2tlRGFzaEFycmF5KFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBQYWlu
dE9yZGVyIGNvbnZlcnRQYWludE9yZGVyKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwotICAg
IHN0YXRpYyBmbG9hdCBjb252ZXJ0T3BhY2l0eShTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsK
LSAgICBzdGF0aWMgU3RyaW5nIGNvbnZlcnRTVkdVUklSZWZlcmVuY2UoU3R5bGVSZXNvbHZlciYs
IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIENvbG9yIGNvbnZlcnRTVkdDb2xvcihTdHlsZVJlc29s
dmVyJiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBjb252
ZXJ0U2VsZk9yRGVmYXVsdEFsaWdubWVudERhdGEoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7
Ci0gICAgc3RhdGljIFN0eWxlQ29udGVudEFsaWdubWVudERhdGEgY29udmVydENvbnRlbnRBbGln
bm1lbnREYXRhKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBFR2x5cGhP
cmllbnRhdGlvbiBjb252ZXJ0R2x5cGhPcmllbnRhdGlvbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFs
dWUmKTsKLSAgICBzdGF0aWMgRUdseXBoT3JpZW50YXRpb24gY29udmVydEdseXBoT3JpZW50YXRp
b25PckF1dG8oU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIE9wdGlvbmFs
PExlbmd0aD4gY29udmVydExpbmVIZWlnaHQoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiwgZmxv
YXQgbXVsdGlwbGllciA9IDEuZik7Ci0gICAgc3RhdGljIEZvbnRTeW50aGVzaXMgY29udmVydEZv
bnRTeW50aGVzaXMoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIFNWR0xl
bmd0aCBjb252ZXJ0U1ZHTGVuZ3RoKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwor
ICAgIHN0YXRpYyBWZWN0b3I8U1ZHTGVuZ3RoPiBjb252ZXJ0U1ZHTGVuZ3RoVmVjdG9yKFN0eWxl
UmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBWZWN0b3I8U1ZHTGVuZ3Ro
PiBjb252ZXJ0U3Ryb2tlRGFzaEFycmF5KFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYp
OworICAgIHN0YXRpYyBQYWludE9yZGVyIGNvbnZlcnRQYWludE9yZGVyKFN0eWxlUmVzb2x2ZXIm
LCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBmbG9hdCBjb252ZXJ0T3BhY2l0eShTdHls
ZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgU3RyaW5nIGNvbnZlcnRT
VkdVUklSZWZlcmVuY2UoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3Rh
dGljIENvbG9yIGNvbnZlcnRTVkdDb2xvcihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUm
KTsKKyAgICBzdGF0aWMgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBjb252ZXJ0U2VsZk9yRGVmYXVs
dEFsaWdubWVudERhdGEoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3Rh
dGljIFN0eWxlQ29udGVudEFsaWdubWVudERhdGEgY29udmVydENvbnRlbnRBbGlnbm1lbnREYXRh
KFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBFR2x5cGhPcmll
bnRhdGlvbiBjb252ZXJ0R2x5cGhPcmllbnRhdGlvbihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NT
VmFsdWUmKTsKKyAgICBzdGF0aWMgRUdseXBoT3JpZW50YXRpb24gY29udmVydEdseXBoT3JpZW50
YXRpb25PckF1dG8oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGlj
IE9wdGlvbmFsPExlbmd0aD4gY29udmVydExpbmVIZWlnaHQoU3R5bGVSZXNvbHZlciYsIGNvbnN0
IENTU1ZhbHVlJiwgZmxvYXQgbXVsdGlwbGllciA9IDEuZik7CisgICAgc3RhdGljIEZvbnRTeW50
aGVzaXMgY29udmVydEZvbnRTeW50aGVzaXMoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVl
Jik7CiAgICAgCi0gICAgc3RhdGljIEJyZWFrQmV0d2VlbiBjb252ZXJ0UGFnZUJyZWFrQmV0d2Vl
bihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgQnJlYWtJbnNpZGUgY29u
dmVydFBhZ2VCcmVha0luc2lkZShTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0
aWMgQnJlYWtCZXR3ZWVuIGNvbnZlcnRDb2x1bW5CcmVha0JldHdlZW4oU3R5bGVSZXNvbHZlciYs
IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIEJyZWFrSW5zaWRlIGNvbnZlcnRDb2x1bW5CcmVha0lu
c2lkZShTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgQnJlYWtCZXR3ZWVu
IGNvbnZlcnRQYWdlQnJlYWtCZXR3ZWVuKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYp
OworICAgIHN0YXRpYyBCcmVha0luc2lkZSBjb252ZXJ0UGFnZUJyZWFrSW5zaWRlKFN0eWxlUmVz
b2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBCcmVha0JldHdlZW4gY29udmVy
dENvbHVtbkJyZWFrQmV0d2VlbihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAg
ICBzdGF0aWMgQnJlYWtJbnNpZGUgY29udmVydENvbHVtbkJyZWFrSW5zaWRlKFN0eWxlUmVzb2x2
ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBzdGF0
aWMgQnJlYWtCZXR3ZWVuIGNvbnZlcnRSZWdpb25CcmVha0JldHdlZW4oU3R5bGVSZXNvbHZlciYs
IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIEJyZWFrSW5zaWRlIGNvbnZlcnRSZWdpb25CcmVha0lu
c2lkZShTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgQnJlYWtCZXR3ZWVu
IGNvbnZlcnRSZWdpb25CcmVha0JldHdlZW4oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVl
Jik7CisgICAgc3RhdGljIEJyZWFrSW5zaWRlIGNvbnZlcnRSZWdpb25CcmVha0luc2lkZShTdHls
ZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKICNlbmRpZgogICAgIAotICAgIHN0YXRpYyBI
YW5naW5nUHVuY3R1YXRpb24gY29udmVydEhhbmdpbmdQdW5jdHVhdGlvbihTdHlsZVJlc29sdmVy
JiwgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgSGFuZ2luZ1B1bmN0dWF0aW9uIGNvbnZlcnRIYW5n
aW5nUHVuY3R1YXRpb24oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CiAKIHByaXZh
dGU6CiAgICAgZnJpZW5kIGNsYXNzIFN0eWxlQnVpbGRlckN1c3RvbTsKIAotICAgIHN0YXRpYyBM
ZW5ndGggY29udmVydFRvUmFkaXVzTGVuZ3RoKENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBD
U1NQcmltaXRpdmVWYWx1ZSYpOwotICAgIHN0YXRpYyBUZXh0RW1waGFzaXNQb3NpdGlvbiB2YWx1
ZVRvRW1waGFzaXNQb3NpdGlvbihDU1NQcmltaXRpdmVWYWx1ZSYpOworICAgIHN0YXRpYyBMZW5n
dGggY29udmVydFRvUmFkaXVzTGVuZ3RoKENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBjb25z
dCBDU1NQcmltaXRpdmVWYWx1ZSYpOworICAgIHN0YXRpYyBUZXh0RW1waGFzaXNQb3NpdGlvbiB2
YWx1ZVRvRW1waGFzaXNQb3NpdGlvbihjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYpOwogICAgIHN0
YXRpYyBUZXh0RGVjb3JhdGlvblNraXAgdmFsdWVUb0RlY29yYXRpb25Ta2lwKGNvbnN0IENTU1By
aW1pdGl2ZVZhbHVlJik7CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBzdGF0aWMg
TGVuZ3RoIHBhcnNlU25hcENvb3JkaW5hdGUoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVl
Jik7CkBAIC0xNjEsMTEgKzE2MSwxMSBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBMZW5ndGggY29u
dmVydFBvc2l0aW9uQ29tcG9uZW50KFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NQcmltaXRpdmVW
YWx1ZSYpOwogCiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKLSAgICBzdGF0aWMgR3JpZExl
bmd0aCBjcmVhdGVHcmlkVHJhY2tCcmVhZHRoKENTU1ByaW1pdGl2ZVZhbHVlJiwgU3R5bGVSZXNv
bHZlciYpOwotICAgIHN0YXRpYyBHcmlkVHJhY2tTaXplIGNyZWF0ZUdyaWRUcmFja1NpemUoQ1NT
VmFsdWUmLCBTdHlsZVJlc29sdmVyJik7CisgICAgc3RhdGljIEdyaWRMZW5ndGggY3JlYXRlR3Jp
ZFRyYWNrQnJlYWR0aChjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYsIFN0eWxlUmVzb2x2ZXImKTsK
KyAgICBzdGF0aWMgR3JpZFRyYWNrU2l6ZSBjcmVhdGVHcmlkVHJhY2tTaXplKGNvbnN0IENTU1Zh
bHVlJiwgU3R5bGVSZXNvbHZlciYpOwogICAgIHN0cnVjdCBUcmFja3NEYXRhOwotICAgIHN0YXRp
YyBib29sIGNyZWF0ZUdyaWRUcmFja0xpc3QoQ1NTVmFsdWUmLCBUcmFja3NEYXRhJiwgU3R5bGVS
ZXNvbHZlciYpOwotICAgIHN0YXRpYyBib29sIGNyZWF0ZUdyaWRQb3NpdGlvbihDU1NWYWx1ZSYs
IEdyaWRQb3NpdGlvbiYpOworICAgIHN0YXRpYyBib29sIGNyZWF0ZUdyaWRUcmFja0xpc3QoY29u
c3QgQ1NTVmFsdWUmLCBUcmFja3NEYXRhJiwgU3R5bGVSZXNvbHZlciYpOworICAgIHN0YXRpYyBi
b29sIGNyZWF0ZUdyaWRQb3NpdGlvbihjb25zdCBDU1NWYWx1ZSYsIEdyaWRQb3NpdGlvbiYpOwog
ICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUltcGxpY2l0TmFtZWRHcmlkTGluZXNGcm9tR3JpZEFyZWEo
Y29uc3QgTmFtZWRHcmlkQXJlYU1hcCYsIE5hbWVkR3JpZExpbmVzTWFwJiwgR3JpZFRyYWNrU2l6
aW5nRGlyZWN0aW9uKTsKICNlbmRpZiAvLyBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQogICAgIHN0
YXRpYyBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIGNzc3RvTGVuZ3RoQ29udmVyc2lvbkRhdGFX
aXRoVGV4dFpvb21GYWN0b3IoU3R5bGVSZXNvbHZlciYpOwpAQCAtMTk0LDE0ICsxOTQsMTQgQEAg
aW5saW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgoU3R5bGVS
ZXNvbHZlciYgc3R5bGVSZXNvbHZlciwKICAgICByZXR1cm4gTGVuZ3RoKDAsIEZpeGVkKTsKIH0K
IAotaW5saW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGhPckF1
dG8oU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5l
IExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGhPckF1dG8oU3R5bGVS
ZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlm
IChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1
ZUF1dG8pCiAgICAgICAgIHJldHVybiBMZW5ndGgoQXV0byk7CiAgICAgcmV0dXJuIGNvbnZlcnRM
ZW5ndGgoc3R5bGVSZXNvbHZlciwgdmFsdWUpOwogfQogCi1pbmxpbmUgTGVuZ3RoIFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0aFNpemluZyhTdHlsZVJlc29sdmVyJiBzdHlsZVJl
c29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydExlbmd0aFNpemluZyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBj
b25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIHN3aXRjaCAocHJpbWl0aXZlVmFs
dWUudmFsdWVJRCgpKSB7CkBAIC0yMjcsNyArMjI3LDcgQEAgaW5saW5lIExlbmd0aCBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGhTaXppbmcoU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZXMKICAgICB9CiB9CiAKLWlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0TGVuZ3RoTWF4U2l6aW5nKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVl
JiB2YWx1ZSkKK2lubGluZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVu
Z3RoTWF4U2l6aW5nKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1ZhbHVl
JiB2YWx1ZSkKIHsKICAgICBpZiAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICByZXR1cm4gTGVuZ3RoKFVuZGVmaW5l
ZCk7CkBAIC0yMzUsMTMgKzIzNSwxMyBAQCBpbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydExlbmd0aE1heFNpemluZyhTdHlsZVJlc29sdmVyJiBzdHlsZQogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBUIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydENvbXB1dGVkTGVuZ3RoKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVl
JiB2YWx1ZSkKK2lubGluZSBUIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENvbXB1dGVk
TGVuZ3RoKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1
ZSkKIHsKICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5jb21w
dXRlTGVuZ3RoPFQ+KHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25E
YXRhKCkpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBUIFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydExpbmVXaWR0aChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVy
LCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgVCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRMaW5lV2lkdGgoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29uc3QgQ1NTVmFsdWUm
IHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKTsKICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSkg
ewpAQCAtMjcxLDcgKzI3MSw3IEBAIGlubGluZSBUIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydExpbmVXaWR0aChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDCiAgICAgfQogfQog
Ci1pbmxpbmUgZmxvYXQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3BhY2luZyhTdHls
ZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgZmxvYXQg
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3BhY2luZyhTdHlsZVJlc29sdmVyJiBzdHls
ZVJlc29sdmVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZl
VmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGlmIChwcmlt
aXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpCkBAIC0yODMsNyArMjgzLDcg
QEAgaW5saW5lIGZsb2F0IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNwYWNpbmcoU3R5
bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwKICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUuY29t
cHV0ZUxlbmd0aDxmbG9hdD4oY29udmVyc2lvbkRhdGEpOwogfQogCi1pbmxpbmUgTGVuZ3RoIFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRvUmFkaXVzTGVuZ3RoKENTU1RvTGVuZ3RoQ29u
dmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUpCitp
bmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRvUmFkaXVzTGVuZ3Ro
KENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjb25zdCBDU1NQcmlt
aXRpdmVWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLmlzUGVyY2VudGFnZSgpKQogICAg
ICAgICByZXR1cm4gTGVuZ3RoKHZhbHVlLmRvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwpAQCAtMjky
LDcgKzI5Miw3IEBAIGlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
VG9SYWRpdXNMZW5ndGgoQ1NTVG9MZW5ndGhDb252ZXJzaW9uCiAgICAgcmV0dXJuIHZhbHVlLmNv
bXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0YSk7CiB9CiAKLWlubGluZSBMZW5ndGhT
aXplIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFJhZGl1cyhTdHlsZVJlc29sdmVyJiBz
dHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgTGVuZ3RoU2l6ZSBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSYWRpdXMoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZl
ciwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0g
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBQYWlyKiBwYWlyID0gcHJp
bWl0aXZlVmFsdWUucGFpclZhbHVlKCk7CkBAIC0zNDYsNyArMzQ2LDcgQEAgaW5saW5lIExlbmd0
aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudChTdHlsZVJl
c29sdmVyJiBzdHkKICAgICByZXR1cm4gbGVuZ3RoOwogfQogCi1pbmxpbmUgTGVuZ3RoUG9pbnQg
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0T2JqZWN0UG9zaXRpb24oU3R5bGVSZXNvbHZl
ciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIExlbmd0aFBvaW50IFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE9iamVjdFBvc2l0aW9uKFN0eWxlUmVzb2x2ZXIm
IHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmlt
aXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgUGFp
ciogcGFpciA9IHByaW1pdGl2ZVZhbHVlLnBhaXJWYWx1ZSgpOwpAQCAtMzU5LDcgKzM1OSw3IEBA
IGlubGluZSBMZW5ndGhQb2ludCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRPYmplY3RQ
b3NpdGlvbihTdHlsZVJlc29sdmVyJiBzCiAgICAgcmV0dXJuIExlbmd0aFBvaW50KGxlbmd0aFgs
IGxlbmd0aFkpOwogfQogCi1pbmxpbmUgVGV4dERlY29yYXRpb24gU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0VGV4dERlY29yYXRpb24oU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiB2YWx1
ZSkKK2lubGluZSBUZXh0RGVjb3JhdGlvbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRU
ZXh0RGVjb3JhdGlvbihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewog
ICAgIFRleHREZWNvcmF0aW9uIHJlc3VsdCA9IFJlbmRlclN0eWxlOjppbml0aWFsVGV4dERlY29y
YXRpb24oKTsKICAgICBpZiAoaXM8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKQEAgLTM3MCwyMCAr
MzcwLDIwIEBAIGlubGluZSBUZXh0RGVjb3JhdGlvbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRUZXh0RGVjb3JhdGlvbihTdHlsZVJlc29sdmVyCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotaW5saW5lIFQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TnVtYmVyKFN0eWxl
UmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgVCBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnROdW1iZXIoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkK
IHsKICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZTxU
PihDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotaW5saW5lIFQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TnVtYmVyT3JBdXRv
KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBU
IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE51bWJlck9yQXV0byhTdHlsZVJlc29sdmVy
JiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykK
ICAgICAgICAgcmV0dXJuIC0xOwogICAgIHJldHVybiBjb252ZXJ0TnVtYmVyPFQ+KHN0eWxlUmVz
b2x2ZXIsIHZhbHVlKTsKIH0KIAotaW5saW5lIHNob3J0IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydFdlYmtpdEh5cGhlbmF0ZUxpbWl0TGluZXMoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVl
JiB2YWx1ZSkKK2lubGluZSBzaG9ydCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRXZWJr
aXRIeXBoZW5hdGVMaW1pdExpbmVzKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYgdmFs
dWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFs
dWVOb0xpbWl0KQpAQCAtNDE0LDMzICs0MTQsMzMgQEAgaW5saW5lIFBhc3NSZWZQdHI8U3R5bGVJ
bWFnZT4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3R5bGVJbWFnZShTdHlsZVJlc28K
ICAgICByZXR1cm4gc3R5bGVSZXNvbHZlci5zdHlsZUltYWdlKHZhbHVlKTsKIH0KIAotaW5saW5l
IFRyYW5zZm9ybU9wZXJhdGlvbnMgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VHJhbnNm
b3JtKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGlu
ZSBUcmFuc2Zvcm1PcGVyYXRpb25zIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRyYW5z
Zm9ybShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUp
CiB7CiAgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zOwogICAgIHRyYW5zZm9ybXNG
b3JWYWx1ZSh2YWx1ZSwgc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNzc1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEoKSwgb3BlcmF0aW9ucyk7CiAgICAgcmV0dXJuIG9wZXJhdGlvbnM7CiB9CiAKLWlubGlu
ZSBTdHJpbmcgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3RyaW5nKFN0eWxlUmVzb2x2
ZXImLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgU3RyaW5nIFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFN0cmluZyhTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQog
ewogICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnN0cmluZ1Zh
bHVlKCk7CiB9CiAKLWlubGluZSBTdHJpbmcgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
U3RyaW5nT3JBdXRvKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1
ZSkKK2lubGluZSBTdHJpbmcgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3RyaW5nT3JB
dXRvKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkK
IHsKICAgICBpZiAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkg
PT0gQ1NTVmFsdWVBdXRvKQogICAgICAgICByZXR1cm4gbnVsbEF0b207CiAgICAgcmV0dXJuIGNv
bnZlcnRTdHJpbmcoc3R5bGVSZXNvbHZlciwgdmFsdWUpOwogfQogCi1pbmxpbmUgU3RyaW5nIFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFN0cmluZ09yTm9uZShTdHlsZVJlc29sdmVyJiBz
dHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgU3RyaW5nIFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydFN0cmluZ09yTm9uZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29s
dmVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgcmV0
dXJuIG51bGxBdG9tOwogICAgIHJldHVybiBjb252ZXJ0U3RyaW5nKHN0eWxlUmVzb2x2ZXIsIHZh
bHVlKTsKIH0KIAotaW5saW5lIFRleHRFbXBoYXNpc1Bvc2l0aW9uIFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6dmFsdWVUb0VtcGhhc2lzUG9zaXRpb24oQ1NTUHJpbWl0aXZlVmFsdWUmIHByaW1pdGl2
ZVZhbHVlKQoraW5saW5lIFRleHRFbXBoYXNpc1Bvc2l0aW9uIFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6dmFsdWVUb0VtcGhhc2lzUG9zaXRpb24oY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHByaW1p
dGl2ZVZhbHVlKQogewogICAgIEFTU0VSVChwcmltaXRpdmVWYWx1ZS5pc1ZhbHVlSUQoKSk7CiAK
QEAgLTQ2MSw3ICs0NjEsNyBAQCBpbmxpbmUgVGV4dEVtcGhhc2lzUG9zaXRpb24gU3R5bGVCdWls
ZGVyQ29udmVydGVyOjp2YWx1ZVRvRW1waGFzaXNQb3NpdGlvbihDU1NQcgogICAgIHJldHVybiBS
ZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRFbXBoYXNpc1Bvc2l0aW9uKCk7CiB9CiAKLWlubGluZSBU
ZXh0RW1waGFzaXNQb3NpdGlvbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0RW1w
aGFzaXNQb3NpdGlvbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFRl
eHRFbXBoYXNpc1Bvc2l0aW9uIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRFbXBo
YXNpc1Bvc2l0aW9uKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAg
ICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiB2YWx1
ZVRvRW1waGFzaXNQb3NpdGlvbihkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKTsK
QEAgLTQ3Miw3ICs0NzIsNyBAQCBpbmxpbmUgVGV4dEVtcGhhc2lzUG9zaXRpb24gU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dEVtcGhhc2lzUG9zaXRpb24oUwogICAgIHJldHVybiBw
b3NpdGlvbjsKIH0KIAotaW5saW5lIEVUZXh0QWxpZ24gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0VGV4dEFsaWduKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2
YWx1ZSkKK2lubGluZSBFVGV4dEFsaWduIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRl
eHRBbGlnbihTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NWYWx1ZSYgdmFs
dWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpOwogICAgIEFTU0VSVChwcmltaXRpdmVWYWx1ZS5pc1ZhbHVlSUQoKSk7CkBA
IC00ODgsNyArNDg4LDcgQEAgaW5saW5lIEVUZXh0QWxpZ24gU3R5bGVCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0VGV4dEFsaWduKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmUKICAgICByZXR1cm4gcGFy
ZW50U3R5bGUtPnRleHRBbGlnbigpOwogfQogCi1pbmxpbmUgUmVmUHRyPENsaXBQYXRoT3BlcmF0
aW9uPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDbGlwUGF0aChTdHlsZVJlc29sdmVy
JiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgUmVmUHRyPENsaXBQYXRo
T3BlcmF0aW9uPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDbGlwUGF0aChTdHlsZVJl
c29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYg
KGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKICAgICAgICAgYXV0byYgcHJpbWl0aXZl
VmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwpAQCAtNTMyLDcgKzUz
Miw3IEBAIGlubGluZSBSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+IFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydENsaXBQYXRoKFN0eWxlUmVzCiAgICAgcmV0dXJuIG9wZXJhdGlvbjsKIH0K
IAotaW5saW5lIEVSZXNpemUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmVzaXplKFN0
eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBFUmVz
aXplIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFJlc2l6ZShTdHlsZVJlc29sdmVyJiBz
dHlsZVJlc29sdmVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0
aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogCkBAIC01NDYs
NyArNTQ2LDcgQEAgaW5saW5lIEVSZXNpemUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
UmVzaXplKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIKICAgICByZXR1cm4gcmVzaXplOwog
fQogCi1pbmxpbmUgaW50IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVSZXBl
dGl0aW9uKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgaW50IFN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVSZXBldGl0aW9uKFN0eWxlUmVzb2x2ZXIm
LCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1
ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVJbmZpbml0ZSkKQEAgLTU1Niw3ICs1NTYsNyBAQCBpbmxp
bmUgaW50IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVSZXBldGl0aW9uKFN0
eWxlUmVzb2x2ZXImLCBDU1NWYQogICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZS5pbnRWYWx1ZSgp
OwogfQogCi1pbmxpbmUgaW50IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVT
cGVlZChTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIGludCBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVlU3BlZWQoU3R5bGVSZXNvbHZlciYsIGNvbnN0
IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgaW50IHNwZWVkID0gODU7CkBAIC01ODUs
MjAgKzU4NSwyMCBAQCBpbmxpbmUgaW50IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1h
cnF1ZWVTcGVlZChTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmCiAgICAgcmV0dXJuIHNwZWVkOwog
fQogCi1pbmxpbmUgUmVmPFF1b3Rlc0RhdGE+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dFF1b3RlcyhTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFJlZjxRdW90
ZXNEYXRhPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRRdW90ZXMoU3R5bGVSZXNvbHZl
ciYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKSkgewogICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKICAgICAgICAgcmV0dXJuIFF1b3Rl
c0RhdGE6OmNyZWF0ZShWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4oKSk7CiAgICAg
fQogCi0gICAgQ1NTVmFsdWVMaXN0JiBsaXN0ID0gZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1
ZSk7CisgICAgYXV0byYgbGlzdCA9IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpOwogICAg
IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBxdW90ZXM7CiAgICAgcXVvdGVzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkobGlzdC5sZW5ndGgoKSAvIDIpOwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aCgpOyBpICs9IDIpIHsKLSAgICAgICAgQ1NTVmFsdWUq
IGZpcnN0ID0gbGlzdC5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpOworICAgICAgICBjb25zdCBD
U1NWYWx1ZSogZmlyc3QgPSBsaXN0Lml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSk7CiAgICAgICAg
IC8vIGl0ZW0oKSByZXR1cm5zIG51bGwgaWYgb3V0IG9mIGJvdW5kcyBzbyB0aGlzIGlzIHNhZmUu
Ci0gICAgICAgIENTU1ZhbHVlKiBzZWNvbmQgPSBsaXN0Lml0ZW0oaSArIDEpOworICAgICAgICBj
b25zdCBDU1NWYWx1ZSogc2Vjb25kID0gbGlzdC5pdGVtKGkgKyAxKTsKICAgICAgICAgaWYgKCFz
ZWNvbmQpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgU3RyaW5nIHN0YXJ0UXVvdGUgPSBk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKmZpcnN0KS5zdHJpbmdWYWx1ZSgpOwpAQCAtNjA4
LDcgKzYwOCw3IEBAIGlubGluZSBSZWY8UXVvdGVzRGF0YT4gU3R5bGVCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0UXVvdGVzKFN0eWxlUmVzb2x2ZXImLCBDU1NWCiAgICAgcmV0dXJuIFF1b3Rlc0Rh
dGE6OmNyZWF0ZShxdW90ZXMpOwogfQogCi1pbmxpbmUgVGV4dFVuZGVybGluZVBvc2l0aW9uIFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRVbmRlcmxpbmVQb3NpdGlvbihTdHlsZVJl
c29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFRleHRVbmRlcmxpbmVQb3NpdGlvbiBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0VW5kZXJsaW5lUG9zaXRpb24oU3R5bGVS
ZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICAvLyBUaGlzIGlzIHRydWUg
aWYgdmFsdWUgaXMgJ2F1dG8nIG9yICdhbHBoYWJldGljJy4KICAgICBpZiAoaXM8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKSkKQEAgLTYyMiw3ICs2MjIsNyBAQCBpbmxpbmUgVGV4dFVuZGVybGlu
ZVBvc2l0aW9uIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRVbmRlcmxpbmVQb3Np
dGlvbgogICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXh0VW5kZXJsaW5lUG9zaXRpb24+KGNvbWJp
bmVkUG9zaXRpb24pOwogfQogCi1pbmxpbmUgUmVmUHRyPFN0eWxlUmVmbGVjdGlvbj4gU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmVmbGVjdGlvbihTdHlsZVJlc29sdmVyJiBzdHlsZVJl
c29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgUmVmUHRyPFN0eWxlUmVmbGVjdGlvbj4g
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmVmbGVjdGlvbihTdHlsZVJlc29sdmVyJiBz
dHlsZVJlc29sdmVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKICAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7CkBAIC02NDMsNyAr
NjQzLDcgQEAgaW5saW5lIFJlZlB0cjxTdHlsZVJlZmxlY3Rpb24+IFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydFJlZmxlY3Rpb24oU3R5bGVSZXMKICAgICByZXR1cm4gV1RGTW92ZShyZWZs
ZWN0aW9uKTsKIH0KIAotaW5saW5lIEludFNpemUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0SW5pdGlhbExldHRlcihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5l
IEludFNpemUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0SW5pdGlhbExldHRlcihTdHls
ZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2
ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKIApAQCAtNjU4LDcg
KzY1OCw3IEBAIGlubGluZSBJbnRTaXplIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydElu
aXRpYWxMZXR0ZXIoU3R5bGVSZXNvbHZlciYsIENTU1ZhCiAgICAgcmV0dXJuIEludFNpemUocGFp
ci0+Zmlyc3QoKS0+aW50VmFsdWUoKSwgcGFpci0+c2Vjb25kKCktPmludFZhbHVlKCkpOwogfQog
Ci1pbmxpbmUgZmxvYXQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dFN0cm9rZVdp
ZHRoKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGlu
ZSBmbG9hdCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0U3Ryb2tlV2lkdGgoU3R5
bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAg
IGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KTsKIApAQCAtNjg4LDcgKzY4OCw3IEBAIGlubGluZSBmbG9hdCBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRUZXh0U3Ryb2tlV2lkdGgoU3R5bGVSZXNvbHZlciYgc3R5bGVSCiAgICAgcmV0
dXJuIHdpZHRoOwogfQogCi1pbmxpbmUgTGluZUJveENvbnRhaW4gU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0TGluZUJveENvbnRhaW4oU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiB2YWx1
ZSkKK2lubGluZSBMaW5lQm94Q29udGFpbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRM
aW5lQm94Q29udGFpbihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewog
ICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CiAgICAgICAgIEFTU0VSVChk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5v
bmUpOwpAQCAtNzE5LDcgKzcxOSw3IEBAIGlubGluZSBUZXh0RGVjb3JhdGlvblNraXAgU3R5bGVC
dWlsZGVyQ29udmVydGVyOjp2YWx1ZVRvRGVjb3JhdGlvblNraXAoY29uc3QgQ1NTCiAgICAgcmV0
dXJuIFRleHREZWNvcmF0aW9uU2tpcE5vbmU7CiB9CiAKLWlubGluZSBUZXh0RGVjb3JhdGlvblNr
aXAgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dERlY29yYXRpb25Ta2lwKFN0eWxl
UmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgVGV4dERlY29yYXRpb25Ta2lwIFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9uU2tpcChTdHlsZVJlc29s
dmVyJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChpczxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpKQogICAgICAgICByZXR1cm4gdmFsdWVUb0RlY29yYXRpb25Ta2lwKGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpOwpAQCAtNzc4LDcgKzc3OCw3IEBAIGlubGlu
ZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpwYXJzZVNuYXBDb29yZGluYXRlKFN0eWxl
UmVzb2x2ZXImIHN0eWxlUmVzCiAgICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSkuY29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50
Q29udmVyc2lvbiB8IENhbGN1bGF0ZWRDb252ZXJzaW9uIHwgQXV0b0NvbnZlcnNpb24+KHN0eWxl
UmVzb2x2ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkpOwogfQogCi1pbmxp
bmUgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbFNuYXBQb2ludHM+IFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFNjcm9sbFNuYXBQb2ludHMoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwg
Q1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxTbmFwUG9pbnRz
PiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTY3JvbGxTbmFwUG9pbnRzKFN0eWxlUmVz
b2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRv
IHBvaW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsU25hcFBvaW50cz4oKTsKIApAQCAtODAz
LDEzICs4MDMsMTMgQEAgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxTbmFwUG9pbnRzPiBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTY3JvbGxTbmEKICAgICByZXR1cm4gcG9pbnRz
OwogfQogCi1pbmxpbmUgTGVuZ3RoU2l6ZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRT
bmFwQ29vcmRpbmF0ZVBhaXIoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUm
IHZhbHVlLCBzaXplX3Qgb2Zmc2V0KQoraW5saW5lIExlbmd0aFNpemUgU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0U25hcENvb3JkaW5hdGVQYWlyKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVz
b2x2ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgc2l6ZV90IG9mZnNldCkKIHsKICAgICBhdXRv
JiB2YWx1ZUxpc3QgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKTsKICAgICByZXR1cm4g
TGVuZ3RoU2l6ZShwYXJzZVNuYXBDb29yZGluYXRlKHN0eWxlUmVzb2x2ZXIsICp2YWx1ZUxpc3Qu
aXRlbShvZmZzZXQpKSwgcGFyc2VTbmFwQ29vcmRpbmF0ZShzdHlsZVJlc29sdmVyLCAqdmFsdWVM
aXN0Lml0ZW0ob2Zmc2V0ICsgMSkpKTsKIH0KIAotaW5saW5lIFZlY3RvcjxMZW5ndGhTaXplPiBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTY3JvbGxTbmFwQ29vcmRpbmF0ZXMoU3R5bGVS
ZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFZlY3RvcjxM
ZW5ndGhTaXplPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTY3JvbGxTbmFwQ29vcmRp
bmF0ZXMoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29uc3QgQ1NTVmFsdWUmIHZhbHVl
KQogewogICAgIGF1dG8mIHZhbHVlTGlzdCA9IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUp
OwogICAgIEFTU0VSVCghKHZhbHVlTGlzdC5sZW5ndGgoKSAlIDIpKTsKQEAgLTgyMyw3ICs4MjMs
NyBAQCBpbmxpbmUgVmVjdG9yPExlbmd0aFNpemU+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydFNjcm9sbFNuYXBDb29yZGluYXRlcyhTdAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX0dS
SURfTEFZT1VUKQotaW5saW5lIEdyaWRMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjcmVh
dGVHcmlkVHJhY2tCcmVhZHRoKENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1ZSwgU3R5
bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKK2lubGluZSBHcmlkTGVuZ3RoIFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFRyYWNrQnJlYWR0aChjb25zdCBDU1NQcmltaXRpdmVWYWx1
ZSYgcHJpbWl0aXZlVmFsdWUsIFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCiB7CiAgICAg
aWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZVdlYmtpdE1pbkNvbnRlbnQp
CiAgICAgICAgIHJldHVybiBMZW5ndGgoTWluQ29udGVudCk7CkBAIC04MzgsNyArODM4LDcgQEAg
aW5saW5lIEdyaWRMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tC
cmVhZHRoKENTU1ByaW1pdGl2ZVZhbHUKICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUuY29udmVy
dFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8IENh
bGN1bGF0ZWRDb252ZXJzaW9uIHwgQXV0b0NvbnZlcnNpb24+KHN0eWxlUmVzb2x2ZXIuc3RhdGUo
KS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkpOwogfQogCi1pbmxpbmUgR3JpZFRyYWNrU2l6
ZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFja1NpemUoQ1NTVmFsdWUmIHZh
bHVlLCBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQoraW5saW5lIEdyaWRUcmFja1NpemUg
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tTaXplKGNvbnN0IENTU1ZhbHVl
JiB2YWx1ZSwgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsKICAgICBpZiAoaXM8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIEdyaWRUcmFja1NpemUoY3Jl
YXRlR3JpZFRyYWNrQnJlYWR0aChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLCBz
dHlsZVJlc29sdmVyKSk7CkBAIC04ODMsNyArODgzLDcgQEAgcHVibGljOgogICAgIEF1dG9SZXBl
YXRUeXBlIG1fYXV0b1JlcGVhdFR5cGUgeyBSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvUmVw
ZWF0VHlwZSgpIH07CiB9OwogCi1pbmxpbmUgYm9vbCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNy
ZWF0ZUdyaWRUcmFja0xpc3QoQ1NTVmFsdWUmIHZhbHVlLCBUcmFja3NEYXRhJiB0cmFja3NEYXRh
LCBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQoraW5saW5lIGJvb2wgU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tMaXN0KGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgVHJh
Y2tzRGF0YSYgdHJhY2tzRGF0YSwgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsKICAg
ICAvLyBIYW5kbGUgJ25vbmUnLgogICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUp
KQpAQCAtOTI3LDcgKzkyNyw3IEBAIGlubGluZSBib29sIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y3JlYXRlR3JpZFRyYWNrTGlzdChDU1NWYWx1ZSYgdmFsdWUsIFRyYWNrc0RhCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWlubGluZSBib29sIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3Jp
ZFBvc2l0aW9uKENTU1ZhbHVlJiB2YWx1ZSwgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbikKK2lubGlu
ZSBib29sIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFBvc2l0aW9uKGNvbnN0IENT
U1ZhbHVlJiB2YWx1ZSwgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbikKIHsKICAgICAvLyBXZSBhY2Nl
cHQgdGhlIHNwZWNpZmljYXRpb24ncyBncmFtbWFyOgogICAgIC8vIGF1dG8gfCA8Y3VzdG9tLWlk
ZW50PiB8IFsgPGludGVnZXI+ICYmIDxjdXN0b20taWRlbnQ+PyBdIHwgWyBzcGFuICYmIFsgPGlu
dGVnZXI+IHx8IDxjdXN0b20taWRlbnQ+IF0gXQpAQCAtOTQ3LDcgKzk0Nyw3IEBAIGlubGluZSBi
b29sIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFBvc2l0aW9uKENTU1ZhbHVlJiB2
YWx1ZSwgR3JpZFBvc2l0CiAgICAgQVNTRVJUKHZhbHVlcy5sZW5ndGgoKSk7CiAKICAgICBhdXRv
IGl0ID0gdmFsdWVzLmJlZ2luKCk7Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGN1cnJlbnRWYWx1
ZSA9ICZkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oaXQtPmdldCgpKTsKKyAgICBjb25zdCBD
U1NQcmltaXRpdmVWYWx1ZSogY3VycmVudFZhbHVlID0gJmRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPihpdC0+Z2V0KCkpOwogICAgIGJvb2wgaXNTcGFuUG9zaXRpb24gPSBmYWxzZTsKICAgICBp
ZiAoY3VycmVudFZhbHVlLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVTcGFuKSB7CiAgICAgICAgIGlz
U3BhblBvc2l0aW9uID0gdHJ1ZTsKQEAgLTk5NCw3ICs5OTQsNyBAQCBpbmxpbmUgdm9pZCBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUltcGxpY2l0TmFtZWRHcmlkTGluZXNGcm9tR3JpZEFy
ZWEoY29ucwogICAgIH0KIH0KIAotaW5saW5lIFZlY3RvcjxHcmlkVHJhY2tTaXplPiBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHcmlkVHJhY2tTaXplTGlzdChTdHlsZVJlc29sdmVyJiBz
dHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgVmVjdG9yPEdyaWRUcmFja1Np
emU+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRUcmFja1NpemVMaXN0KFN0eWxl
UmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBB
U1NFUlQodmFsdWUuaXNWYWx1ZUxpc3QoKSk7CiAgICAgYXV0byYgdmFsdWVMaXN0ID0gZG93bmNh
c3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSk7CkBAIC0xMDA4LDEyICsxMDA4LDEyIEBAIGlubGluZSBW
ZWN0b3I8R3JpZFRyYWNrU2l6ZT4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R3JpZFRy
YWNrU2l6ZUxpc3QoU3R5CiAgICAgcmV0dXJuIHRyYWNrU2l6ZXM7CiB9CiAKLWlubGluZSBHcmlk
VHJhY2tTaXplIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRUcmFja1NpemUoU3R5
bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIEdyaWRU
cmFja1NpemUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R3JpZFRyYWNrU2l6ZShTdHls
ZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAg
cmV0dXJuIGNyZWF0ZUdyaWRUcmFja1NpemUodmFsdWUsIHN0eWxlUmVzb2x2ZXIpOwogfQogCi1p
bmxpbmUgT3B0aW9uYWw8R3JpZFBvc2l0aW9uPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRHcmlkUG9zaXRpb24oU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBP
cHRpb25hbDxHcmlkUG9zaXRpb24+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRQ
b3NpdGlvbihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIEdy
aWRQb3NpdGlvbiBncmlkUG9zaXRpb247CiAgICAgaWYgKGNyZWF0ZUdyaWRQb3NpdGlvbih2YWx1
ZSwgZ3JpZFBvc2l0aW9uKSkKQEAgLTEwMjEsNyArMTAyMSw3IEBAIGlubGluZSBPcHRpb25hbDxH
cmlkUG9zaXRpb24+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRQb3NpdGlvbihT
dHlsZVJlCiAgICAgcmV0dXJuIE51bGxvcHQ7CiB9CiAKLWlubGluZSBHcmlkQXV0b0Zsb3cgU3R5
bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R3JpZEF1dG9GbG93KFN0eWxlUmVzb2x2ZXImLCBD
U1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgR3JpZEF1dG9GbG93IFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydEdyaWRBdXRvRmxvdyhTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmIHZh
bHVlKQogewogICAgIGF1dG8mIGxpc3QgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKTsK
ICAgICBpZiAoIWxpc3QubGVuZ3RoKCkpCkBAIC0xMDYyLDcgKzEwNjIsNyBAQCBpbmxpbmUgQ1NT
VG9MZW5ndGhDb252ZXJzaW9uRGF0YSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNzc3RvTGVuZ3Ro
Q29udmVyc2lvbkRhdAogICAgIHJldHVybiBzdHlsZVJlc29sdmVyLnN0YXRlKCkuY3NzVG9MZW5n
dGhDb252ZXJzaW9uRGF0YSgpOwogfQogCi1pbmxpbmUgT3B0aW9uYWw8TGVuZ3RoPiBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRXb3JkU3BhY2luZyhTdHlsZVJlc29sdmVyJiBzdHlsZVJl
c29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgT3B0aW9uYWw8TGVuZ3RoPiBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRXb3JkU3BhY2luZyhTdHlsZVJlc29sdmVyJiBzdHlsZVJl
c29sdmVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgT3B0aW9uYWw8TGVuZ3RoPiB3
b3JkU3BhY2luZzsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSk7CkBAIC0xMDc4LDcgKzEwNzgsNyBAQCBpbmxpbmUgT3B0aW9uYWw8
TGVuZ3RoPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRXb3JkU3BhY2luZyhTdHlsZVJl
c29sdmVyJgogICAgIHJldHVybiB3b3JkU3BhY2luZzsKIH0KIAotaW5saW5lIE9wdGlvbmFsPGZs
b2F0PiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQZXJzcGVjdGl2ZShTdHlsZVJlc29s
dmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgT3B0aW9uYWw8Zmxv
YXQ+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBlcnNwZWN0aXZlKFN0eWxlUmVzb2x2
ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBw
cmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAg
aWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCkBAIC0xMDk1LDcg
KzEwOTUsNyBAQCBpbmxpbmUgT3B0aW9uYWw8ZmxvYXQ+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydFBlcnNwZWN0aXZlKFN0eWxlUmVzb2x2ZXImCiAgICAgcmV0dXJuIHBlcnNwZWN0aXZl
IDwgMCA/IE9wdGlvbmFsPGZsb2F0PihOdWxsb3B0KSA6IE9wdGlvbmFsPGZsb2F0PihwZXJzcGVj
dGl2ZSk7CiB9CiAKLWlubGluZSBPcHRpb25hbDxMZW5ndGg+IFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydE1hcnF1ZWVJbmNyZW1lbnQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwg
Q1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIE9wdGlvbmFsPExlbmd0aD4gU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0TWFycXVlZUluY3JlbWVudChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29s
dmVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgT3B0aW9uYWw8TGVuZ3RoPiBtYXJx
dWVlTGVuZ3RoOwogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKTsKQEAgLTExMjEsNyArMTEyMSw3IEBAIGlubGluZSBPcHRpb25hbDxM
ZW5ndGg+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVJbmNyZW1lbnQoU3R5
bGVSZXNvCiAgICAgcmV0dXJuIG1hcnF1ZWVMZW5ndGg7CiB9CiAKLWlubGluZSBPcHRpb25hbDxG
aWx0ZXJPcGVyYXRpb25zPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGaWx0ZXJPcGVy
YXRpb25zKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKK2lu
bGluZSBPcHRpb25hbDxGaWx0ZXJPcGVyYXRpb25zPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRGaWx0ZXJPcGVyYXRpb25zKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0
IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBGaWx0ZXJPcGVyYXRpb25zIG9wZXJhdGlvbnM7CiAg
ICAgaWYgKHN0eWxlUmVzb2x2ZXIuY3JlYXRlRmlsdGVyT3BlcmF0aW9ucyh2YWx1ZSwgb3BlcmF0
aW9ucykpCkBAIC0xMTI5LDcgKzExMjksNyBAQCBpbmxpbmUgT3B0aW9uYWw8RmlsdGVyT3BlcmF0
aW9ucz4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0RmlsdGVyT3BlcmF0aW9ucwogICAg
IHJldHVybiBOdWxsb3B0OwogfQogCi1pbmxpbmUgRm9udEZlYXR1cmVTZXR0aW5ncyBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250RmVhdHVyZVNldHRpbmdzKFN0eWxlUmVzb2x2ZXIm
LCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgRm9udEZlYXR1cmVTZXR0aW5ncyBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250RmVhdHVyZVNldHRpbmdzKFN0eWxlUmVzb2x2ZXImLCBj
b25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2
YWx1ZSkpIHsKICAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKTsKQEAgLTExNDUsNyArMTE0NSw3IEBAIGlu
bGluZSBGb250RmVhdHVyZVNldHRpbmdzIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZv
bnRGZWF0dXJlU2V0dGluZ3MoU3R5CiB9CiAKICNpZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQot
aW5saW5lIEZvbnRWYXJpYXRpb25TZXR0aW5ncyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRGb250VmFyaWF0aW9uU2V0dGluZ3MoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiB2YWx1ZSkK
K2lubGluZSBGb250VmFyaWF0aW9uU2V0dGluZ3MgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0Rm9udFZhcmlhdGlvblNldHRpbmdzKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYg
dmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKICAgICAg
ICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09
IENTU1ZhbHVlTm9ybWFsKTsKQEAgLTExNjIsMzIgKzExNjIsMzIgQEAgaW5saW5lIEZvbnRWYXJp
YXRpb25TZXR0aW5ncyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250VmFyaWF0aW9u
U2V0dGluZ3MKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQotaW5saW5lIGJvb2wgU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG91Y2hDYWxsb3V0KFN0eWxlUmVzb2x2ZXImLCBDU1NW
YWx1ZSYgdmFsdWUpCitpbmxpbmUgYm9vbCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRU
b3VjaENhbGxvdXQoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAg
ICByZXR1cm4gIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSkuc3RyaW5nVmFsdWUoKSwgIm5vbmUiKTsKIH0KICNlbmRpZgogCiAj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLWlubGluZSBDb2xvciBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRUYXBIaWdobGlnaHRDb2xvcihTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVy
LCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgQ29sb3IgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0VGFwSGlnaGxpZ2h0Q29sb3IoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29u
c3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIHJldHVybiBzdHlsZVJlc29sdmVyLmNvbG9yRnJv
bVByaW1pdGl2ZVZhbHVlKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpOwogfQog
I2VuZGlmCiAKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKQotaW5s
aW5lIGJvb2wgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0T3ZlcmZsb3dTY3JvbGxpbmco
U3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBib29sIFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydE92ZXJmbG93U2Nyb2xsaW5nKFN0eWxlUmVzb2x2ZXImLCBjb25z
dCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlVG91Y2g7CiB9CiAjZW5kaWYKIAotaW5s
aW5lIFNWR0xlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTVkdMZW5ndGgoU3R5
bGVSZXNvbHZlciYsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBTVkdMZW5ndGggU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0U1ZHTGVuZ3RoKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NW
YWx1ZSYgdmFsdWUpCiB7CiAgICAgcmV0dXJuIFNWR0xlbmd0aDo6ZnJvbUNTU1ByaW1pdGl2ZVZh
bHVlKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpOwogfQogCi1pbmxpbmUgVmVj
dG9yPFNWR0xlbmd0aD4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U1ZHTGVuZ3RoVmVj
dG9yKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGlu
ZSBWZWN0b3I8U1ZHTGVuZ3RoPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTVkdMZW5n
dGhWZWN0b3IoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29uc3QgQ1NTVmFsdWUmIHZh
bHVlKQogewogICAgIGF1dG8mIHZhbHVlTGlzdCA9IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFs
dWUpOwogCkBAIC0xMTk5LDcgKzExOTksNyBAQCBpbmxpbmUgVmVjdG9yPFNWR0xlbmd0aD4gU3R5
bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U1ZHTGVuZ3RoVmVjdG9yKFN0eWxlUmVzbwogICAg
IHJldHVybiBzdmdMZW5ndGhzOwogfQogCi1pbmxpbmUgVmVjdG9yPFNWR0xlbmd0aD4gU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3Ryb2tlRGFzaEFycmF5KFN0eWxlUmVzb2x2ZXImIHN0
eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBWZWN0b3I8U1ZHTGVuZ3RoPiBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTdHJva2VEYXNoQXJyYXkoU3R5bGVSZXNvbHZl
ciYgc3R5bGVSZXNvbHZlciwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChpczxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CiAgICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpOwpAQCAtMTIw
OSw3ICsxMjA5LDcgQEAgaW5saW5lIFZlY3RvcjxTVkdMZW5ndGg+IFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydFN0cm9rZURhc2hBcnJheShTdHlsZVJlc28KICAgICByZXR1cm4gY29udmVy
dFNWR0xlbmd0aFZlY3RvcihzdHlsZVJlc29sdmVyLCB2YWx1ZSk7CiB9CiAKLWlubGluZSBQYWlu
dE9yZGVyIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBhaW50T3JkZXIoU3R5bGVSZXNv
bHZlciYsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBQYWludE9yZGVyIFN0eWxlQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydFBhaW50T3JkZXIoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVl
JiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewogICAg
ICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkg
PT0gQ1NTVmFsdWVOb3JtYWwpOwpAQCAtMTIzMCw3ICsxMjMwLDcgQEAgaW5saW5lIFBhaW50T3Jk
ZXIgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UGFpbnRPcmRlcihTdHlsZVJlc29sdmVy
JiwgQ1NTVmEKICAgICB9CiB9CiAKLWlubGluZSBmbG9hdCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRPcGFjaXR5KFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUg
ZmxvYXQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0T3BhY2l0eShTdHlsZVJlc29sdmVy
JiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0g
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBmbG9hdCBvcGFjaXR5ID0g
cHJpbWl0aXZlVmFsdWUuZmxvYXRWYWx1ZSgpOwpAQCAtMTIzOSw3ICsxMjM5LDcgQEAgaW5saW5l
IGZsb2F0IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE9wYWNpdHkoU3R5bGVSZXNvbHZl
ciYsIENTU1ZhbHVlJiB2YWwKICAgICByZXR1cm4gb3BhY2l0eTsKIH0KIAotaW5saW5lIFN0cmlu
ZyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTVkdVUklSZWZlcmVuY2UoU3R5bGVSZXNv
bHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFN0cmluZyBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTVkdVUklSZWZlcmVuY2UoU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXNvbHZlciwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIFN0cmluZyBzOwog
ICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKTsKQEAgLTEyNDksMTMgKzEyNDksMTMgQEAgaW5saW5lIFN0cmluZyBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRTVkdVUklSZWZlcmVuY2UoU3R5bGVSZXNvbHZlciYgc3R5bGUKICAg
ICByZXR1cm4gU1ZHVVJJUmVmZXJlbmNlOjpmcmFnbWVudElkZW50aWZpZXJGcm9tSVJJU3RyaW5n
KHMsIHN0eWxlUmVzb2x2ZXIuZG9jdW1lbnQoKSk7CiB9CiAKLWlubGluZSBDb2xvciBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTVkdDb2xvcihTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29s
dmVyLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgQ29sb3IgU3R5bGVCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0U1ZHQ29sb3IoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29uc3QgQ1NT
VmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHN2Z0NvbG9yID0gZG93bmNhc3Q8U1ZHQ29sb3I+
KHZhbHVlKTsKICAgICByZXR1cm4gc3ZnQ29sb3IuY29sb3JUeXBlKCkgPT0gU1ZHQ29sb3I6OlNW
R19DT0xPUlRZUEVfQ1VSUkVOVENPTE9SID8gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5jb2xvcigp
IDogc3ZnQ29sb3IuY29sb3IoKTsKIH0KIAotaW5saW5lIFN0eWxlU2VsZkFsaWdubWVudERhdGEg
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2VsZk9yRGVmYXVsdEFsaWdubWVudERhdGEo
U3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBTdHlsZVNlbGZBbGlnbm1l
bnREYXRhIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNlbGZPckRlZmF1bHRBbGlnbm1l
bnREYXRhKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgU3R5
bGVTZWxmQWxpZ25tZW50RGF0YSBhbGlnbm1lbnREYXRhID0gUmVuZGVyU3R5bGU6OmluaXRpYWxT
ZWxmQWxpZ25tZW50KCk7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpOwpAQCAtMTI3Miw3ICsxMjcyLDcgQEAgaW5saW5lIFN0eWxl
U2VsZkFsaWdubWVudERhdGEgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2VsZk9yRGVm
YXVsdEFsaWdubWUKICAgICByZXR1cm4gYWxpZ25tZW50RGF0YTsKIH0KIAotaW5saW5lIFN0eWxl
Q29udGVudEFsaWdubWVudERhdGEgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q29udGVu
dEFsaWdubWVudERhdGEoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBT
dHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENv
bnRlbnRBbGlnbm1lbnREYXRhKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUp
CiB7CiAgICAgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSBhbGlnbm1lbnREYXRhID0gUmVuZGVy
U3R5bGU6OmluaXRpYWxDb250ZW50QWxpZ25tZW50KCk7CiAjaWYgRU5BQkxFKENTU19HUklEX0xB
WU9VVCkKQEAgLTEzMDUsNyArMTMwNSw3IEBAIGlubGluZSBTdHlsZUNvbnRlbnRBbGlnbm1lbnRE
YXRhIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENvbnRlbnRBbGlnbm1lbnRECiAgICAg
cmV0dXJuIGFsaWdubWVudERhdGE7CiB9CiAKLWlubGluZSBFR2x5cGhPcmllbnRhdGlvbiBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHbHlwaE9yaWVudGF0aW9uKFN0eWxlUmVzb2x2ZXIm
LCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgRUdseXBoT3JpZW50YXRpb24gU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0R2x5cGhPcmllbnRhdGlvbihTdHlsZVJlc29sdmVyJiwgY29uc3Qg
Q1NTVmFsdWUmIHZhbHVlKQogewogICAgIGZsb2F0IGFuZ2xlID0gZmFic2YoZm1vZGYoZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5mbG9hdFZhbHVlKCksIDM2MC4wZikpOwogICAg
IGlmIChhbmdsZSA8PSA0NS4wZiB8fCBhbmdsZSA+IDMxNS4wZikKQEAgLTEzMTcsMTQgKzEzMTcs
MTQgQEAgaW5saW5lIEVHbHlwaE9yaWVudGF0aW9uIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydEdseXBoT3JpZW50YXRpb24oU3R5bGVSZXMKICAgICByZXR1cm4gR09fMjcwREVHOwogfQog
Ci1pbmxpbmUgRUdseXBoT3JpZW50YXRpb24gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
R2x5cGhPcmllbnRhdGlvbk9yQXV0byhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NW
YWx1ZSYgdmFsdWUpCitpbmxpbmUgRUdseXBoT3JpZW50YXRpb24gU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0R2x5cGhPcmllbnRhdGlvbk9yQXV0byhTdHlsZVJlc29sdmVyJiBzdHlsZVJl
c29sdmVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykKICAgICAgICAg
cmV0dXJuIEdPX0FVVE87CiAgICAgcmV0dXJuIGNvbnZlcnRHbHlwaE9yaWVudGF0aW9uKHN0eWxl
UmVzb2x2ZXIsIHZhbHVlKTsKIH0KIAotaW5saW5lIE9wdGlvbmFsPExlbmd0aD4gU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0TGluZUhlaWdodChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29s
dmVyLCBDU1NWYWx1ZSYgdmFsdWUsIGZsb2F0IG11bHRpcGxpZXIpCitpbmxpbmUgT3B0aW9uYWw8
TGVuZ3RoPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMaW5lSGVpZ2h0KFN0eWxlUmVz
b2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgZmxvYXQgbXVsdGlw
bGllcikKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NW
YWx1ZU5vcm1hbCkKQEAgLTEzNDcsNyArMTM0Nyw3IEBAIGlubGluZSBPcHRpb25hbDxMZW5ndGg+
IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVIZWlnaHQoU3R5bGVSZXNvbHZlciYK
ICAgICByZXR1cm4gTnVsbG9wdDsKIH0KIAotRm9udFN5bnRoZXNpcyBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRGb250U3ludGhlc2lzKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFs
dWUpCitGb250U3ludGhlc2lzIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRTeW50
aGVzaXMoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAo
aXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewogICAgICAgICBBU1NFUlQoZG93bmNhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKQEAg
LTEzNTYsNyArMTM1Niw3IEBAIEZvbnRTeW50aGVzaXMgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0Rm9udFN5bnRoZXNpcyhTdHlsZVJlc29sdmVyJiwgQ1NTVmFsCiAKICAgICBGb250U3lu
dGhlc2lzIHJlc3VsdCA9IEZvbnRTeW50aGVzaXNOb25lOwogICAgIEFTU0VSVChpczxDU1NWYWx1
ZUxpc3Q+KHZhbHVlKSk7Ci0gICAgZm9yIChDU1NWYWx1ZSYgdiA6IGRvd25jYXN0PENTU1ZhbHVl
TGlzdD4odmFsdWUpKSB7CisgICAgZm9yIChjb25zdCBDU1NWYWx1ZSYgdiA6IGRvd25jYXN0PENT
U1ZhbHVlTGlzdD4odmFsdWUpKSB7CiAgICAgICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KHYpLnZhbHVlSUQoKSkgewogICAgICAgICBjYXNlIENTU1ZhbHVlV2VpZ2h0Ogog
ICAgICAgICAgICAgcmVzdWx0IHw9IEZvbnRTeW50aGVzaXNXZWlnaHQ7CkBAIC0xMzczLDcgKzEz
NzMsNyBAQCBGb250U3ludGhlc2lzIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRT
eW50aGVzaXMoU3R5bGVSZXNvbHZlciYsIENTU1ZhbAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LWlubGluZSBCcmVha0JldHdlZW4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UGFnZUJy
ZWFrQmV0d2VlbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIEJyZWFr
QmV0d2VlbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQYWdlQnJlYWtCZXR3ZWVuKFN0
eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0
aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGlmIChw
cmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBbHdheXMpCkBAIC0xMzgzLDcgKzEz
ODMsNyBAQCBpbmxpbmUgQnJlYWtCZXR3ZWVuIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dFBhZ2VCcmVha0JldHdlZW4oU3R5bGVSZXNvbHZlcgogICAgIHJldHVybiBwcmltaXRpdmVWYWx1
ZTsKIH0KIAotaW5saW5lIEJyZWFrSW5zaWRlIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dFBhZ2VCcmVha0luc2lkZShTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5l
IEJyZWFrSW5zaWRlIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBhZ2VCcmVha0luc2lk
ZShTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHBy
aW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBp
ZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlQXZvaWQpCkBAIC0xMzkxLDcg
KzEzOTEsNyBAQCBpbmxpbmUgQnJlYWtJbnNpZGUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0UGFnZUJyZWFrSW5zaWRlKFN0eWxlUmVzb2x2ZXImLAogICAgIHJldHVybiBwcmltaXRpdmVW
YWx1ZTsKIH0KIAotaW5saW5lIEJyZWFrQmV0d2VlbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRDb2x1bW5CcmVha0JldHdlZW4oU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiB2YWx1ZSkK
K2lubGluZSBCcmVha0JldHdlZW4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q29sdW1u
QnJlYWtCZXR3ZWVuKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAg
ICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFs
dWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBbHdheXMp
CkBAIC0xNDAxLDcgKzE0MDEsNyBAQCBpbmxpbmUgQnJlYWtCZXR3ZWVuIFN0eWxlQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydENvbHVtbkJyZWFrQmV0d2VlbihTdHlsZVJlc29sdgogICAgIHJldHVy
biBwcmltaXRpdmVWYWx1ZTsKIH0KIAotaW5saW5lIEJyZWFrSW5zaWRlIFN0eWxlQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydENvbHVtbkJyZWFrSW5zaWRlKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1
ZSYgdmFsdWUpCitpbmxpbmUgQnJlYWtJbnNpZGUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0Q29sdW1uQnJlYWtJbnNpZGUoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1
ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1
ZUF2b2lkKQpAQCAtMTQxMCw3ICsxNDEwLDcgQEAgaW5saW5lIEJyZWFrSW5zaWRlIFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydENvbHVtbkJyZWFrSW5zaWRlKFN0eWxlUmVzb2x2ZXIKIH0K
IAogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLWlubGluZSBCcmVha0JldHdlZW4gU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0UmVnaW9uQnJlYWtCZXR3ZWVuKFN0eWxlUmVzb2x2ZXImLCBD
U1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgQnJlYWtCZXR3ZWVuIFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFJlZ2lvbkJyZWFrQmV0d2VlbihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFs
dWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09
IENTU1ZhbHVlQWx3YXlzKQpAQCAtMTQyMCw3ICsxNDIwLDcgQEAgaW5saW5lIEJyZWFrQmV0d2Vl
biBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWdpb25CcmVha0JldHdlZW4oU3R5bGVS
ZXNvbHYKICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWU7CiB9CiAKLWlubGluZSBCcmVha0luc2lk
ZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWdpb25CcmVha0luc2lkZShTdHlsZVJl
c29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIEJyZWFrSW5zaWRlIFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydFJlZ2lvbkJyZWFrSW5zaWRlKFN0eWxlUmVzb2x2ZXImLCBjb25z
dCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1
ZUlEKCkgPT0gQ1NTVmFsdWVBdm9pZCkKQEAgLTE0MjksNyArMTQyOSw3IEBAIGlubGluZSBCcmVh
a0luc2lkZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWdpb25CcmVha0luc2lkZShT
dHlsZVJlc29sdmVyCiB9CiAjZW5kaWYKIAotaW5saW5lIEhhbmdpbmdQdW5jdHVhdGlvbiBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRIYW5naW5nUHVuY3R1YXRpb24oU3R5bGVSZXNvbHZl
ciYsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBIYW5naW5nUHVuY3R1YXRpb24gU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0SGFuZ2luZ1B1bmN0dWF0aW9uKFN0eWxlUmVzb2x2ZXImLCBj
b25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgSGFuZ2luZ1B1bmN0dWF0aW9uIHJlc3VsdCA9
IFJlbmRlclN0eWxlOjppbml0aWFsSGFuZ2luZ1B1bmN0dWF0aW9uKCk7CiAgICAgaWYgKGlzPENT
U1ZhbHVlTGlzdD4odmFsdWUpKSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>