<?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>203673</bug_id>
          
          <creation_ts>2019-10-31 03:53:53 -0700</creation_ts>
          <short_desc>Rename StyleBuilder to Style::BuilderGenerated</short_desc>
          <delta_ts>2019-10-31 07:29:16 -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>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1585845</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-10-31 03:53:53 -0700</bug_when>
    <thetext>Also rename the related classes and move them to Style namespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585846</commentid>
    <comment_count>1</comment_count>
      <attachid>382447</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-10-31 04:00:00 -0700</bug_when>
    <thetext>Created attachment 382447
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585848</commentid>
    <comment_count>2</comment_count>
      <attachid>382448</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-10-31 04:03:25 -0700</bug_when>
    <thetext>Created attachment 382448
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585849</commentid>
    <comment_count>3</comment_count>
      <attachid>382449</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-10-31 04:08:33 -0700</bug_when>
    <thetext>Created attachment 382449
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585850</commentid>
    <comment_count>4</comment_count>
      <attachid>382450</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-10-31 04:16:33 -0700</bug_when>
    <thetext>Created attachment 382450
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585893</commentid>
    <comment_count>5</comment_count>
      <attachid>382450</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-31 07:28:35 -0700</bug_when>
    <thetext>Comment on attachment 382450
patch

Clearing flags on attachment: 382450

Committed r251841: &lt;https://trac.webkit.org/changeset/251841&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585894</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-31 07:28:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585895</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-31 07:29:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/56780245&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382447</attachid>
            <date>2019-10-31 04:00:00 -0700</date>
            <delta_ts>2019-10-31 04:03:25 -0700</delta_ts>
            <desc>patch</desc>
            <filename>style-builder-generated-rename.patch</filename>
            <type>text/plain</type>
            <size>160083</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0YmNiYWU3NTcyNi4uZmE1ODMzMjRiMWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNDggQEAKKzIwMTktMTAtMzEgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbmFtZSBTdHlsZUJ1aWxkZXIgdG8gU3R5bGU6OkJ1aWxkZXJHZW5lcmF0
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzY3
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsc28g
cmVuYW1lIHRoZSByZWxhdGVkIFN0eWtlQnVpbGRlckN1c3RvbSBhbmQgU3R5bGVCdWlsZGVyQ29u
dmVydGVyIGNsYXNzZXMKKyAgICAgICAgYW5kIG1vdmUgdGhlbSB0byB0aGUgU3R5bGUgbmFtZXNw
YWNlIGFuZCBkaXJlY3RvcnkuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3NzL0NTU0ZvbnRG
YWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZVdlaWdodFJhbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNhbGN1bGF0ZVN0cmV0Y2hSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpj
YWxjdWxhdGVJdGFsaWNSYW5nZSk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVGb250U2VsZWN0aW9uUmVxdWVzdCk6CisgICAgICAg
ICogY3NzL0NTU1RvU3R5bGVNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1h
cDo6bWFwRmlsbFhQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjpt
YXBGaWxsWVBvc2l0aW9uKToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyLmg6IFJlbW92ZWQu
CisgICAgICAgICogY3NzL21ha2Vwcm9wLnBsOgorICAgICAgICAoZ2V0U2NvcGVGb3JGdW5jdGlv
bik6CisgICAgICAgIChnZW5lcmF0ZUluaXRpYWxWYWx1ZVNldHRlcik6CisgICAgICAgIChnZW5l
cmF0ZUluaGVyaXRWYWx1ZVNldHRlcik6CisgICAgICAgIChnZW5lcmF0ZVZhbHVlU2V0dGVyKToK
KyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlWYWx1ZSk6
CisgICAgICAgICogc3R5bGUvUHJvcGVydHlDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpQcm9wZXJ0eUNhc2NhZGU6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAqIHN0eWxl
L1N0eWxlQnVpbGRlckNvbnZlcnRlci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlQnVpbGRlckNvbnZlcnRlci5oLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGhPckF1dG8pOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGhTaXppbmcpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGhNYXhTaXppbmcp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUYWJT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
Q29tcHV0ZWRMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRMaW5lV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRTcGFjaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0VG9SYWRpdXNMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSYWRpdXMpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0
aCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBv
c2l0aW9uQ29tcG9uZW50WCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydFBvc2l0aW9uQ29tcG9uZW50WSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBvc2l0aW9uQ29tcG9uZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0T2JqZWN0UG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0
RGVjb3JhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydE51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydE51bWJlck9yQXV0byk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydFdlYmtpdEh5cGhlbmF0ZUxpbWl0TGluZXMpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRCb3JkZXJJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEJvcmRlck1h
c2spOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRT
dHlsZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVy
dGVyOjp1cGRhdGVDb2xvclNjaGVtZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydENvbG9yU2NoZW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3RyaW5nT3JBdXRvKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3RyaW5nT3JOb25lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjp2YWx1ZVRvRW1waGFzaXNQ
b3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydFRleHRFbXBoYXNpc1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dEFsaWduKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q2xpcFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZXNpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVlUmVwZXRpdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVT
cGVlZCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dFF1b3Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydFRleHRVbmRlcmxpbmVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRVbmRlcmxpbmVPZmZzZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0RGVjb3JhdGlvblRoaWNr
bmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dFJlZmxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRJbml0aWFsTGV0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0VGV4dFN0cm9rZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGluZUJveENvbnRhaW4pOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OnZhbHVlVG9EZWNvcmF0aW9uU2tpcCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRE
ZWNvcmF0aW9uU2tpcCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFNoYXBlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRTY3JvbGxTbmFwVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNjcm9sbFNuYXBBbGlnbik6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFRyYWNrQnJlYWR0aCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFRy
YWNrU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y3Jl
YXRlR3JpZFRyYWNrTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZl
cnRlcjo6Y3JlYXRlR3JpZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWls
ZGVyQ29udmVydGVyOjpjcmVhdGVJbXBsaWNpdE5hbWVkR3JpZExpbmVzRnJvbUdyaWRBcmVhKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R3JpZFRy
YWNrU2l6ZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRHcmlkVHJhY2tTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0R3JpZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R3JpZEF1dG9GbG93KToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjc3N0b0xlbmd0aENvbnZlcnNpb25EYXRhV2l0
aFRleHRab29tRmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0V29yZFNwYWNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRQZXJzcGVjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVJbmNyZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGaWx0ZXJPcGVyYXRpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9u
dEZlYXR1cmVTZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydEZvbnRXZWlnaHRGcm9tVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250U3RyZXRjaEZyb21WYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRTdHlsZUZy
b21WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydEZvbnRXZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRGb250U3RyZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydEZvbnRWYXJpYXRpb25TZXR0aW5ncyk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRvdWNoQ2FsbG91dCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRhcEhpZ2hsaWdo
dENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0VG91Y2hBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRPdmVyZmxvd1Njcm9sbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNWR0xlbmd0aFZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U1ZHTGVuZ3RoVmVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3Ryb2tlRGFz
aEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0UGFpbnRPcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydE9wYWNpdHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRTVkdVUklSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTVkdDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNlbGZPckRlZmF1bHRBbGlnbm1lbnREYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q29u
dGVudEFsaWdubWVudERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRHbHlwaE9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R2x5cGhPcmllbnRhdGlvbk9yQXV0byk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVIZWlnaHQp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250
U3ludGhlc2lzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0U3BlYWtBcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydEhhbmdpbmdQdW5jdHVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdhcExlbmd0aCk6CisgICAgICAgICogc3R5bGUvU3R5
bGVCdWlsZGVyQ3VzdG9tLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVC
dWlsZGVyQ3VzdG9tLmguCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6
YXBwbHlJbml0aWFsV2Via2l0TWFza0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpC
dWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRXZWJraXRNYXNrSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEZvbnRGZWF0dXJlU2V0dGlu
Z3MpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJp
dEZvbnRGZWF0dXJlU2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJD
dXN0b206OmFwcGx5SW5pdGlhbEZvbnRWYXJpYXRpb25TZXR0aW5ncyk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Rm9udFZhcmlhdGlvblNldHRp
bmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVl
RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBs
eUluaXRpYWxUZXh0QWxpZ24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0
b206OmFwcGx5VmFsdWVUZXh0QWxpZ24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxk
ZXJDdXN0b206OnJlc2V0RWZmZWN0aXZlWm9vbSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
QnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsWm9vbSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Wm9vbSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVpvb20pOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OkJ1aWxkZXJDdXN0b206Om1tTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpCdWlsZGVyQ3VzdG9tOjppbmNoTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpC
dWlsZGVyQ3VzdG9tOjpnZXRQYWdlU2l6ZUZyb21OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlVmVydGljYWxBbGlnbik6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0SW1hZ2VSZXNvbHV0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxJ
bWFnZVJlc29sdXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206
OmFwcGx5VmFsdWVJbWFnZVJlc29sdXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1
aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRUZXh0SW5kZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxUZXh0SW5kZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlVGV4dEluZGVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlTW9k
aWZpZXI6OmFwcGx5SW5oZXJpdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpBcHBs
eVByb3BlcnR5Qm9yZGVySW1hZ2VNb2RpZmllcjo6YXBwbHlJbml0aWFsVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OkFwcGx5UHJvcGVydHlCb3JkZXJJbWFnZU1vZGlmaWVyOjphcHBs
eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUlu
aGVyaXRMaW5lSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9t
OjphcHBseUluaXRpYWxMaW5lSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWls
ZGVyQ3VzdG9tOjphcHBseVZhbHVlTGluZUhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0T3V0bGluZVN0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxPdXRsaW5lU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVPdXRsaW5l
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5p
dGlhbENsaXApOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5
SW5oZXJpdENsaXApOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFw
cGx5VmFsdWVDbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjph
cHBseVZhbHVlV2Via2l0TG9jYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVy
Q3VzdG9tOjphcHBseVZhbHVlV3JpdGluZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRUZXh0T3JpZW50YXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRUZXh0U2l6
ZUFkanVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlW
YWx1ZVdlYmtpdFRleHRab29tKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3Vz
dG9tOjphcHBseVZhbHVlQ29sb3JTY2hlbWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1
aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94U2hhZG93VmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbFRleHRTaGFkb3cpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFRleHRTaGFkb3cp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVUZXh0
U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUlu
aXRpYWxCb3hTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206
OmFwcGx5SW5oZXJpdEJveFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZUJveFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
QnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsV2Via2l0Qm94U2hhZG93KToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRXZWJraXRCb3hTaGFkb3cp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJr
aXRCb3hTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFw
cGx5SW5pdGlhbEZvbnRGYW1pbHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJD
dXN0b206OmFwcGx5SW5oZXJpdEZvbnRGYW1pbHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVGb250RmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjppc1ZhbGlkRGlzcGxheVZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXREaXNwbGF5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRGlzcGxheSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUJhc2VsaW5l
U2hpZnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5p
dGlhbFdlYmtpdEFzcGVjdFJhdGlvKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVy
Q3VzdG9tOjphcHBseUluaGVyaXRXZWJraXRBc3BlY3RSYXRpbyk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdEFzcGVjdFJhdGlvKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxXZWJraXRU
ZXh0RW1waGFzaXNTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3Rv
bTo6YXBwbHlJbmhlcml0V2Via2l0VGV4dEVtcGhhc2lzU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRUZXh0RW1waGFzaXNTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0
Q291bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlW
YWx1ZUNvdW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFw
cGx5SW5pdGlhbENvdW50ZXJJbmNyZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1
aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdENvdW50ZXJJbmNyZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb3VudGVySW5jcmVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxDb3Vu
dGVyUmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5
SW5oZXJpdENvdW50ZXJSZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZUNvdW50ZXJSZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
QnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRDdXJzb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDdXJzb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEZpbGwpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEZpbGwpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVGaWxsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxTdHJva2UpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFN0cm9r
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVN0
cm9rZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbml0
aWFsQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBw
bHlJbmhlcml0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3Rv
bTo6YXBwbHlWYWx1ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJD
dXN0b206OmFwcGx5SW5oZXJpdEZvbnRWYXJpYW50TGlnYXR1cmVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxGb250VmFyaWFudExpZ2F0dXJl
cyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZv
bnRWYXJpYW50TGlnYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3Vz
dG9tOjphcHBseUluaGVyaXRGb250VmFyaWFudE51bWVyaWMpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEZvbnRWYXJpYW50TnVtZXJpYyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZvbnRWYXJp
YW50TnVtZXJpYyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBw
bHlJbmhlcml0Rm9udFZhcmlhbnRFYXN0QXNpYW4pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEZvbnRWYXJpYW50RWFzdEFzaWFuKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRm9udFZhcmlhbnRF
YXN0QXNpYW4pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5
SW5pdGlhbEZvbnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9t
OjphcHBseUluaGVyaXRGb250U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRl
ckN1c3RvbTo6bGFyZ2VyRm9udFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxk
ZXJDdXN0b206OnNtYWxsZXJGb250U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVp
bGRlckN1c3RvbTo6ZGV0ZXJtaW5lUnVieVRleHRTaXplTXVsdGlwbGllcik6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsRm9udFN0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRGb250U3R5
bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVG
b250U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5
VmFsdWVGb250U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6
YXBwbHlJbml0aWFsR3JpZFRlbXBsYXRlQXJlYXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEdyaWRUZW1wbGF0ZUFyZWFzKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlR3JpZFRlbXBsYXRlQXJl
YXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlh
bEdyaWRUZW1wbGF0ZUNvbHVtbnMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJD
dXN0b206OmFwcGx5SW5oZXJpdEdyaWRUZW1wbGF0ZUNvbHVtbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVHcmlkVGVtcGxhdGVDb2x1bW5zKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxHcmlk
VGVtcGxhdGVSb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjph
cHBseUluaGVyaXRHcmlkVGVtcGxhdGVSb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlR3JpZFRlbXBsYXRlUm93cyk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUFsdCk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdpbGxDaGFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVTdHJva2VXaWR0aCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVN0cm9r
ZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUlu
aXRpYWxDdXN0b21Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1
c3RvbTo6YXBwbHlJbmhlcml0Q3VzdG9tUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDdXN0b21Qcm9wZXJ0eSk6CisgICAgICAgICog
c3R5bGUvU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmg6IEFkZGVkLgorCiAyMDE5LTEwLTMwICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgW1BpY3R1cmUtaW4tUGljdHVy
ZSBXZWIgQVBJXSBFbmFibGUgdGhlIHN1cHBvcnQgZm9yIGlPUwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAz
ZGM4YmYxNjM0MS4uNmU4Y2U3NGE1YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yNjAyLDcgKzI2MDIs
NyBAQCBIVE1MRW50aXR5VGFibGUuY3BwCiBNYXRoTUxFbGVtZW50RmFjdG9yeS5jcHAKIFBsdWdJ
bnNSZXNvdXJjZXNEYXRhLmNwcAogU1ZHRWxlbWVudEZhY3RvcnkuY3BwCi1TdHlsZUJ1aWxkZXIu
Y3BwCitTdHlsZUJ1aWxkZXJHZW5lcmF0ZWQuY3BwCiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVu
Y3Rpb25zLmNwcAogVXNlckFnZW50U3R5bGVTaGVldHNEYXRhLmNwcAogV2ViQ29yZUpTQnVpbHRp
bkludGVybmFscy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA3MjkzMDM4MTVhZS4uNmNjZTU1OGQ4ZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI0MTYs
NyArMjQxNiw2IEBACiAJCTgzN0E4MDEzMUUxRTEyNzMwMDAyNkI5RiAvKiBMb2NhbGl6YWJsZS5z
dHJpbmdzZGljdCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODM3QTgwMTExRTFFMTI3MzAwMDI2QjlGIC8qIExvY2FsaXphYmxlLnN0cmluZ3NkaWN0ICov
OyB9OwogCQk4MzdENDYyNzFGQTJBOENFMDA1NEUxRkEgLyogU2VydmljZVdvcmtlckNsaWVudElk
ZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzN0Q0NjI1MUZBMkE4QzUwMDU0RTFGQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgz
N0ZCMzQ1MUY5RUEwNkQwMEQwRkMzMSAvKiBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdGQjM0MDFGOUVBMDY2
MDBEMEZDMzEgLyogRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oICovOyB9OwotCQk4Mzg2QTk2RDE5
RjYxQjJFMDBFMUVDNEEgLyogU3R5bGVCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzg2QTk2QzE5RjYxQjJFMDBFMUVDNEEgLyogU3R5bGVC
dWlsZGVyLmggKi87IH07CiAJCTgzODg2NzM1MUQxM0JBNUYwMDM2OTdEMCAvKiBSZW5kZXJPYmpl
Y3RFbnVtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODM4ODY3MzQxRDEzQkE1OTAwMzY5N0QwIC8qIFJlbmRlck9iamVjdEVudW1zLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM4Q0E2QkQxRkMwREZF
OTAwNUQ5RkE1IC8qIFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM4Q0E2QkIxRkMwREZERDAwNUQ5
RkE1IC8qIFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzOEVGNTM4MURDMTQ5RTIwMDhGMEMz
OSAvKiBJREJUcmFuc2FjdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzOEVGNTM2MURDMTQ5REEwMDhGMEMzOSAvKiBJREJUcmFuc2FjdGlv
bk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtNDg0Myw2ICs0ODQyLDcgQEAKIAkJRTRBQkFCRTQyMzYxQTMyOTAwRkE0MzQ1IC8qIFByb3Bl
cnR5Q2FzY2FkZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTRBQkFCRTIyMzYxQTMyOTAwRkE0MzQ1IC8qIFByb3BlcnR5Q2FzY2FkZS5oICovOyB9Owog
CQlFNEFCQUJGMzIzNjhCOTU5MDBGQTQzNDUgLyogU3R5bGVCdWlsZGVyU3RhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QUJBQkYyMjM2OEI5NTgw
MEZBNDM0NSAvKiBTdHlsZUJ1aWxkZXJTdGF0ZS5oICovOyB9OwogCQlFNEFCQUJGNTIzNjhDNkVG
MDBGQTQzNDUgLyogQ2FzY2FkZUxldmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFNEFCQUJGNDIzNjhDNkVGMDBGQTQzNDUgLyogQ2FzY2FkZUxldmVs
LmggKi87IH07CisJCUU0QUJBQzA0MjM2QUU5NTkwMEZBNDM0NSAvKiBTdHlsZUJ1aWxkZXJHZW5l
cmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0
QUJBQzAyMjM2QUU5NTgwMEZBNDM0NSAvKiBTdHlsZUJ1aWxkZXJHZW5lcmF0ZWQuaCAqLzsgfTsK
IAkJRTRBRTdDMTYxN0QxQkI5NTAwMDlGQjMxIC8qIEVsZW1lbnRJdGVyYXRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBRTdDMTUxN0QxQkI5NTAw
MDlGQjMxIC8qIEVsZW1lbnRJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUU0QUU3QzFBMTdEMjMyMzUwMDA5RkIzMSAvKiBFbGVtZW50
QW5jZXN0b3JJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTRBRTdDMTkxN0QyMzIzNTAwMDlGQjMxIC8qIEVsZW1lbnRBbmNlc3Rvckl0ZXJh
dG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTRBRkNGQTUwREFGMjlBMzAwRjVGNTVDIC8qIFVuaXRCZXppZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QUZDRkE0MERBRjI5QTMwMEY1RjU1QyAv
KiBVbml0QmV6aWVyLmggKi87IH07CkBAIC0xMDE3Nyw4ICsxMDE3Nyw3IEBACiAJCTgzN0ZCMzQw
MUY5RUEwNjYwMEQwRkMzMSAvKiBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVuZGFibGVNZXNzYWdlRXZlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3RkIzNDIxRjlFQTA2NzAwRDBGQzMxIC8qIEV4dGVuZGFi
bGVNZXNzYWdlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzN0ZCMzQzMUY5RUEwNjgwMEQwRkMzMSAvKiBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODM4NkE5NkMxOUY2MUIyRTAwRTFFQzRBIC8qIFN0eWxl
QnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZUJ1aWxkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODM4NkE5NkUxOUY2MUU0RjAwRTFFQzRB
IC8qIFN0eWxlQnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBTdHlsZUJ1aWxkZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9TdHlsZUJ1
aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk4Mzg2QTk2
RTE5RjYxRTRGMDBFMUVDNEEgLyogU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFN0eWxlQnVpbGRlckdlbmVyYXRlZC5jcHA7IHBh
dGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1N0eWxlQnVpbGRlckdlbmVyYXRlZC5jcHA7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTgzODg2NzM0MUQxM0JBNTkwMDM2
OTdEMCAvKiBSZW5kZXJPYmplY3RFbnVtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW5kZXJPYmplY3RFbnVtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
Mzg4NjlFQjFDRTgxRTlFMDBEMTZBOUUgLyogSlNUZXh0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVGV4dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTgzOENBNkJCMUZDMERGREQwMDVEOUZBNSAvKiBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Vy
dmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNTE4MCw2ICsxNTE3OSw3IEBACiAJCUU0QUJBQkYwMjM2OEI5MTgwMEZBNDM0NSAvKiBT
dHlsZUJ1aWxkZXJTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZUJ1aWxkZXJTdGF0
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0QUJBQkYyMjM2OEI5NTgwMEZB
NDM0NSAvKiBTdHlsZUJ1aWxkZXJTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTdHlsZUJ1aWxkZXJTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
NEFCQUJGNDIzNjhDNkVGMDBGQTQzNDUgLyogQ2FzY2FkZUxldmVsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENhc2NhZGVMZXZlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFNEFCQUMwMjIzNkFFOTU4MDBGQTQzNDUgLyogU3R5bGVCdWlsZGVyR2VuZXJhdGVk
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlQnVpbGRlckdlbmVyYXRl
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEFFN0MxNTE3RDFCQjk1MDAwOUZC
MzEgLyogRWxlbWVudEl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEVsZW1lbnRJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEFFN0Mx
OTE3RDIzMjM1MDAwOUZCMzEgLyogRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRBRkNGQTQwREFGMjlBMzAwRjVGNTVDIC8qIFVuaXRC
ZXppZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5pdEJlemllci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjAxNTcsNyArMjAxNTcsNyBAQAogCQkJCTdD
RUI1N0U5MUY5NTY1MTUwMDA5N0FFQyAvKiBTZXR0aW5ncy5oICovLAogCQkJCTk5MDhCMEZEMUJD
QUQwN0QwMEVEMEY1NSAvKiBTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5jcHAgKi8sCiAJCQkJOUIw
M0Q4MDYxQkIzMTEwRDAwQjc2NEM5IC8qIFN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi8sCi0J
CQkJODM4NkE5NkUxOUY2MUU0RjAwRTFFQzRBIC8qIFN0eWxlQnVpbGRlci5jcHAgKi8sCisJCQkJ
ODM4NkE5NkUxOUY2MUU0RjAwRTFFQzRBIC8qIFN0eWxlQnVpbGRlckdlbmVyYXRlZC5jcHAgKi8s
CiAJCQkJODNDMDVBNTgxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRG
dW5jdGlvbnMuY3BwICovLAogCQkJCTgzQzA1QTU5MUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggKi8sCiAJCQkJNjU2NTgxRTYwOUQxNTA4RDAwMEU2
MUQ3IC8qIFNWR0VsZW1lbnRGYWN0b3J5LmNwcCAqLywKQEAgLTI2OTU4LDYgKzI2OTU4LDkgQEAK
IAkJCQkxQzAxMDZGRjE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmggKi8s
CiAJCQkJRTRBQkFCRTUyMzYxQTM0MjAwRkE0MzQ1IC8qIFByb3BlcnR5Q2FzY2FkZS5jcHAgKi8s
CiAJCQkJRTRBQkFCRTIyMzYxQTMyOTAwRkE0MzQ1IC8qIFByb3BlcnR5Q2FzY2FkZS5oICovLAor
CQkJCTgzQjk2ODc5MTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCAq
LywKKwkJCQk4MzVEMzYzNjE5RkY2MTkzMDA0QzkzQUIgLyogU3R5bGVCdWlsZGVyQ3VzdG9tLmgg
Ki8sCisJCQkJRTRBQkFDMDIyMzZBRTk1ODAwRkE0MzQ1IC8qIFN0eWxlQnVpbGRlckdlbmVyYXRl
ZC5oICovLAogCQkJCUU0QUJBQkYwMjM2OEI5MTgwMEZBNDM0NSAvKiBTdHlsZUJ1aWxkZXJTdGF0
ZS5jcHAgKi8sCiAJCQkJRTRBQkFCRjIyMzY4Qjk1ODAwRkE0MzQ1IC8qIFN0eWxlQnVpbGRlclN0
YXRlLmggKi8sCiAJCQkJRTQwMUUwQTUxQzNDMENGNzAwRjM0RDEwIC8qIFN0eWxlQ2hhbmdlLmNw
cCAqLywKQEAgLTI3MzcwLDkgKzI3MzczLDYgQEAKIAkJCQk0M0I4NUVENjE4Q0JFQzk3MDBFMzFB
RjQgLyogU2VsZWN0b3JQc2V1ZG9DbGFzc0FuZENvbXBhdGliaWxpdHlFbGVtZW50TWFwLmluICov
LAogCQkJCTI2QUEwRjlBMThEMjk3M0QwMDQxOTM4MSAvKiBTZWxlY3RvclBzZXVkb0VsZW1lbnRU
eXBlTWFwLmluICovLAogCQkJCTQzMTA3QkUxMThDQzE5REUwMENDMThFOCAvKiBTZWxlY3RvclBz
ZXVkb1R5cGVNYXAuaCAqLywKLQkJCQk4Mzg2QTk2QzE5RjYxQjJFMDBFMUVDNEEgLyogU3R5bGVC
dWlsZGVyLmggKi8sCi0JCQkJODNCOTY4NzkxOUY4QUI4MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRl
ckNvbnZlcnRlci5oICovLAotCQkJCTgzNUQzNjM2MTlGRjYxOTMwMDRDOTNBQiAvKiBTdHlsZUJ1
aWxkZXJDdXN0b20uaCAqLywKIAkJCQk5NDE4Mjc4ODFEOEIyNDIyMDA0OTI3NjQgLyogU3R5bGVD
b2xvci5jcHAgKi8sCiAJCQkJOTQxODI3ODkxRDhCMjQyMjAwNDkyNzY0IC8qIFN0eWxlQ29sb3Iu
aCAqLywKIAkJCQkwRkY1MDI2RTEwMkJBOTY2MDA2NkYzOUEgLyogU3R5bGVNZWRpYS5jcHAgKi8s
CkBAIC0zMjE0Miw3ICszMjE0Miw2IEBACiAJCQkJNDE0QjgyMDUxRDZERjBFNTAwNzdFQkUzIC8q
IFN0cnVjdHVyZWRDbG9uZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI2QTMwRTgxREM0RjAw
QjI1OTY1IC8qIFN0eWxlQmFja2dyb3VuZERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVC
NjdCMEU4MUQzQkUwMEIyNTk2NSAvKiBTdHlsZUJveERhdGEuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTgzODZBOTZEMTlGNjFCMkUwMEUxRUM0QSAvKiBTdHlsZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTgzQjk2ODdCMTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTgzNUQzNjM3MTlGRjYxOTMwMDRDOTNBQiAvKiBTdHlsZUJ1
aWxkZXJDdXN0b20uaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QUJBQkYzMjM2OEI5NTkwMEZBNDM0
NSAvKiBTdHlsZUJ1aWxkZXJTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjM0OCw2ICszMjM0
Nyw3IEBACiAJCQkJMDg1NEIwMjMxMjU1RTRFNjAwQjlDREQwIC8qIFNWR1Jvb3RJbmxpbmVCb3gu
aCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUEzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTY3Jp
cHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FBNjBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHU2V0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTRBQkFDMDQyMzZBRTk1OTAw
RkE0MzQ1IC8qIFN0eWxlQnVpbGRlckdlbmVyYXRlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRB
RkQwMTAwREFGMzM1NTAwRjVGNTVDIC8qIFNWR1NNSUxFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMjIyN0FBOTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3RvcEVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIyMjI3QUFDMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTdHJpbmdMaXN0Lmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCmluZGV4IGYxYmNlMDcw
MTA4Li4zYTY0NjIyOGIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCkBAIC0xMzgs
MTQgKzEzOCwxNCBAQCBzdGF0aWMgRm9udFNlbGVjdGlvblJhbmdlIGNhbGN1bGF0ZVdlaWdodFJh
bmdlKENTU1ZhbHVlJiB2YWx1ZSkKICAgICAgICAgQVNTRVJUKHZhbHVlTGlzdC5pdGVtKDEpLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpOwogICAgICAgICBhdXRvJiB2YWx1ZTAgPSBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4oKnZhbHVlTGlzdC5pdGVtKDApKTsKICAgICAgICAgYXV0byYgdmFsdWUx
ID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZUxpc3QuaXRlbSgxKSk7Ci0gICAg
ICAgIGF1dG8gcmVzdWx0MCA9IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRXZWln
aHRGcm9tVmFsdWUodmFsdWUwKTsKLSAgICAgICAgYXV0byByZXN1bHQxID0gU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0Rm9udFdlaWdodEZyb21WYWx1ZSh2YWx1ZTEpOworICAgICAgICBh
dXRvIHJlc3VsdDAgPSBTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRXZWlnaHRG
cm9tVmFsdWUodmFsdWUwKTsKKyAgICAgICAgYXV0byByZXN1bHQxID0gU3R5bGU6OkJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRGb250V2VpZ2h0RnJvbVZhbHVlKHZhbHVlMSk7CiAgICAgICAgIHJl
dHVybiB7IHJlc3VsdDAsIHJlc3VsdDEgfTsKICAgICB9CiAKICAgICBBU1NFUlQoaXM8Q1NTUHJp
bWl0aXZlVmFsdWU+KHZhbHVlKSk7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIEZvbnRTZWxlY3Rpb25WYWx1ZSByZXN1
bHQgPSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250V2VpZ2h0RnJvbVZhbHVlKHBy
aW1pdGl2ZVZhbHVlKTsKKyAgICBGb250U2VsZWN0aW9uVmFsdWUgcmVzdWx0ID0gU3R5bGU6OkJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250V2VpZ2h0RnJvbVZhbHVlKHByaW1pdGl2ZVZhbHVl
KTsKICAgICByZXR1cm4geyByZXN1bHQsIHJlc3VsdCB9OwogfQogCkBAIC0xNzYsMTQgKzE3Niwx
NCBAQCBzdGF0aWMgRm9udFNlbGVjdGlvblJhbmdlIGNhbGN1bGF0ZVN0cmV0Y2hSYW5nZShDU1NW
YWx1ZSYgdmFsdWUpCiAgICAgICAgIEFTU0VSVCh2YWx1ZUxpc3QuaXRlbSgxKS0+aXNQcmltaXRp
dmVWYWx1ZSgpKTsKICAgICAgICAgYXV0byYgdmFsdWUwID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KCp2YWx1ZUxpc3QuaXRlbSgwKSk7CiAgICAgICAgIGF1dG8mIHZhbHVlMSA9IGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWVMaXN0Lml0ZW0oMSkpOwotICAgICAgICBhdXRv
IHJlc3VsdDAgPSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250U3RyZXRjaEZyb21W
YWx1ZSh2YWx1ZTApOwotICAgICAgICBhdXRvIHJlc3VsdDEgPSBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRGb250U3RyZXRjaEZyb21WYWx1ZSh2YWx1ZTEpOworICAgICAgICBhdXRvIHJl
c3VsdDAgPSBTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRTdHJldGNoRnJvbVZh
bHVlKHZhbHVlMCk7CisgICAgICAgIGF1dG8gcmVzdWx0MSA9IFN0eWxlOjpCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0Rm9udFN0cmV0Y2hGcm9tVmFsdWUodmFsdWUxKTsKICAgICAgICAgcmV0dXJu
IHsgcmVzdWx0MCwgcmVzdWx0MSB9OwogICAgIH0KIAogICAgIEFTU0VSVChpczxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpKTsKICAgICBjb25zdCBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgRm9udFNlbGVjdGlvblZhbHVlIHJl
c3VsdCA9IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRTdHJldGNoRnJvbVZhbHVl
KHByaW1pdGl2ZVZhbHVlKTsKKyAgICBGb250U2VsZWN0aW9uVmFsdWUgcmVzdWx0ID0gU3R5bGU6
OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250U3RyZXRjaEZyb21WYWx1ZShwcmltaXRpdmVW
YWx1ZSk7CiAgICAgcmV0dXJuIHsgcmVzdWx0LCByZXN1bHQgfTsKIH0KIApAQCAtMjA2LDcgKzIw
Niw3IEBAIHZvaWQgQ1NTRm9udEZhY2U6OnNldFN0cmV0Y2goQ1NTVmFsdWUmIHN0eWxlKQogc3Rh
dGljIEZvbnRTZWxlY3Rpb25SYW5nZSBjYWxjdWxhdGVJdGFsaWNSYW5nZShDU1NWYWx1ZSYgdmFs
dWUpCiB7CiAgICAgaWYgKHZhbHVlLmlzRm9udFN0eWxlVmFsdWUoKSkgewotICAgICAgICBhdXRv
IHJlc3VsdCA9IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRTdHlsZUZyb21WYWx1
ZSh2YWx1ZSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gU3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRGb250U3R5bGVGcm9tVmFsdWUodmFsdWUpOwogICAgICAgICByZXR1cm4geyByZXN1
bHQudmFsdWVPcihub3JtYWxJdGFsaWNWYWx1ZSgpKSwgcmVzdWx0LnZhbHVlT3Iobm9ybWFsSXRh
bGljVmFsdWUoKSkgfTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3Bw
CmluZGV4IDE4ZTgzNGQ2OTBhLi5lMzBjNjQ1YTI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2VTZXQuY3BwCkBAIC0zMTQsOSArMzE0LDkgQEAgc3RhdGljIEZvbnRTZWxlY3Rpb25SZXF1
ZXN0IGNvbXB1dGVGb250U2VsZWN0aW9uUmVxdWVzdChNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJgog
ICAgIGlmICghc3R5bGVWYWx1ZSkKICAgICAgICAgc3R5bGVWYWx1ZSA9IENTU0ZvbnRTdHlsZVZh
bHVlOjpjcmVhdGUoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVOb3JtYWwpKTsKIAotICAgIGF1dG8gd2VpZ2h0U2VsZWN0aW9uVmFsdWUgPSBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250V2VpZ2h0RnJvbVZhbHVlKCp3ZWlnaHRW
YWx1ZSk7Ci0gICAgYXV0byBzdHJldGNoU2VsZWN0aW9uVmFsdWUgPSBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRGb250U3RyZXRjaEZyb21WYWx1ZSgqc3RyZXRjaFZhbHVlKTsKLSAgICBh
dXRvIHN0eWxlU2VsZWN0aW9uVmFsdWUgPSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRG
b250U3R5bGVGcm9tVmFsdWUoKnN0eWxlVmFsdWUpOworICAgIGF1dG8gd2VpZ2h0U2VsZWN0aW9u
VmFsdWUgPSBTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRXZWlnaHRGcm9tVmFs
dWUoKndlaWdodFZhbHVlKTsKKyAgICBhdXRvIHN0cmV0Y2hTZWxlY3Rpb25WYWx1ZSA9IFN0eWxl
OjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN0cmV0Y2hGcm9tVmFsdWUoKnN0cmV0Y2hW
YWx1ZSk7CisgICAgYXV0byBzdHlsZVNlbGVjdGlvblZhbHVlID0gU3R5bGU6OkJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRGb250U3R5bGVGcm9tVmFsdWUoKnN0eWxlVmFsdWUpOwogCiAgICAgcmV0
dXJuIHsgd2VpZ2h0U2VsZWN0aW9uVmFsdWUsIHN0cmV0Y2hTZWxlY3Rpb25WYWx1ZSwgc3R5bGVT
ZWxlY3Rpb25WYWx1ZSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Rv
U3R5bGVNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwCmluZGV4
IDYzM2YyYjU4ZjcwLi43OTNkYjQ3YmQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1RvU3R5bGVNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFw
LmNwcApAQCAtMjMxLDkgKzIzMSw5IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbFhQb3Np
dGlvbihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEZpbGxMYXllciYgbGF5ZXIsCiAgICAgTGVu
Z3RoIGxlbmd0aDsKICAgICBpZiAocGFpcikgewogICAgICAgICBBU1NFUlRfVU5VU0VEKHByb3Bl
cnR5SUQsIHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YIHx8IHBy
b3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YKTsKLSAgICAgICAgbGVu
Z3RoID0gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoKG1fYnVpbGRlclN0YXRl
LCAqcGFpci0+c2Vjb25kKCkpOworICAgICAgICBsZW5ndGggPSBTdHlsZTo6QnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydExlbmd0aChtX2J1aWxkZXJTdGF0ZSwgKnBhaXItPnNlY29uZCgpKTsKICAg
ICB9IGVsc2UKLSAgICAgICAgbGVuZ3RoID0gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
UG9zaXRpb25Db21wb25lbnRYKG1fYnVpbGRlclN0YXRlLCB2YWx1ZSk7CisgICAgICAgIGxlbmd0
aCA9IFN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25lbnRYKG1f
YnVpbGRlclN0YXRlLCB2YWx1ZSk7CiAKICAgICBsYXllci5zZXRYUG9zaXRpb24obGVuZ3RoKTsK
ICAgICBpZiAocGFpcikKQEAgLTI1NSw5ICsyNTUsOSBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1h
cEZpbGxZUG9zaXRpb24oQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBGaWxsTGF5ZXImIGxheWVy
LAogICAgIExlbmd0aCBsZW5ndGg7CiAgICAgaWYgKHBhaXIpIHsKICAgICAgICAgQVNTRVJUX1VO
VVNFRChwcm9wZXJ0eUlELCBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0
aW9uWSB8fCBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSk7Ci0g
ICAgICAgIGxlbmd0aCA9IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0aChtX2J1
aWxkZXJTdGF0ZSwgKnBhaXItPnNlY29uZCgpKTsKKyAgICAgICAgbGVuZ3RoID0gU3R5bGU6OkJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgobV9idWlsZGVyU3RhdGUsICpwYWlyLT5zZWNv
bmQoKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGxlbmd0aCA9IFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFBvc2l0aW9uQ29tcG9uZW50WShtX2J1aWxkZXJTdGF0ZSwgdmFsdWUpOworICAg
ICAgICBsZW5ndGggPSBTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBvc2l0aW9uQ29t
cG9uZW50WShtX2J1aWxkZXJTdGF0ZSwgdmFsdWUpOwogICAgIAogICAgIGxheWVyLnNldFlQb3Np
dGlvbihsZW5ndGgpOwogICAgIGlmIChwYWlyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlci5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDkxOGFjNzllMS4uMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlci5oCisrKyAvZGV2L251bGwKQEAgLTEs
NDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJDU1NQcm9w
ZXJ0eU5hbWVzLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ1NTVmFsdWU7Ci1z
dHJ1Y3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5OwotCi1uYW1lc3BhY2UgU3R5bGUgewot
Y2xhc3MgQnVpbGRlclN0YXRlOwotfQotCi1jbGFzcyBTdHlsZUJ1aWxkZXIgewotcHVibGljOgot
ICAgIHN0YXRpYyB2b2lkIGFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgU3R5bGU6OkJ1aWxk
ZXJTdGF0ZSYsIENTU1ZhbHVlJiwgYm9vbCBpc0luaXRpYWwsIGJvb2wgaXNJbmhlcml0LCBjb25z
dCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkqKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAppbmRleCBiMWYyMjdkMTcwNy4uNGVjOWFkMGExYzUg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvbWFrZXByb3AucGwKQEAgLTY2LDcgKzY2LDcgQEAgbXkgJW5hbWVJc0luaGVy
aXRlZDsKIG15ICVuYW1lSXNIaWdoUHJpb3JpdHk7CiBteSAlcHJvcGVydGllc1dpdGhTdHlsZUJ1
aWxkZXJPcHRpb25zOwogbXkgJXN0eWxlQnVpbGRlck9wdGlvbnMgPSAoCi0gICAgImFuaW1hdGFi
bGUiID0+IDEsICMgRGVmaW5lZCBpbiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29u
dmVydGVyLmgKKyAgICAiYW5pbWF0YWJsZSIgPT4gMSwgIyBEZWZpbmVkIGluIFNvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCiAgICAgImF1dG8tZnVuY3Rpb25zIiA9
PiAxLAogICAgICJjb25kaXRpb25hbC1jb252ZXJ0ZXIiID0+IDEsCiAgICAgImNvbnZlcnRlciIg
PT4gMSwKQEAgLTU1NCwxNCArNTU0LDE0IEBAIEVPRgogY2xvc2UgSEVBREVSOwogCiAjCi0jIFN0
eWxlQnVpbGRlci5jcHAgZ2VuZXJhdG9yLgorIyBTdHlsZUJ1aWxkZXJHZW5lcmF0ZWQuY3BwIGdl
bmVyYXRvci4KICMKIAogc3ViIGdldFNjb3BlRm9yRnVuY3Rpb24gewogICBteSAkbmFtZSA9IHNo
aWZ0OwogICBteSAkYnVpbGRlckZ1bmN0aW9uID0gc2hpZnQ7CiAKLSAgcmV0dXJuICRwcm9wZXJ0
aWVzV2l0aFN0eWxlQnVpbGRlck9wdGlvbnN7JG5hbWV9eyJjdXN0b20ifXskYnVpbGRlckZ1bmN0
aW9ufSA/ICJTdHlsZUJ1aWxkZXJDdXN0b20iIDogIlN0eWxlQnVpbGRlckZ1bmN0aW9ucyI7Cisg
IHJldHVybiAkcHJvcGVydGllc1dpdGhTdHlsZUJ1aWxkZXJPcHRpb25zeyRuYW1lfXsiY3VzdG9t
In17JGJ1aWxkZXJGdW5jdGlvbn0gPyAiQnVpbGRlckN1c3RvbSIgOiAiQnVpbGRlckZ1bmN0aW9u
cyI7CiB9CiAKIHN1YiBnZXROYW1lRm9yTWV0aG9kcyB7CkBAIC05MTMsNyArOTEzLDcgQEAgc3Vi
IGdlbmVyYXRlSW5pdGlhbFZhbHVlU2V0dGVyIHsKICAgbXkgJGluaXRpYWwgPSAkcHJvcGVydGll
c1dpdGhTdHlsZUJ1aWxkZXJPcHRpb25zeyRuYW1lfXsiaW5pdGlhbCJ9OwogICBteSAkaXNTVkcg
PSBleGlzdHMgJHByb3BlcnRpZXNXaXRoU3R5bGVCdWlsZGVyT3B0aW9uc3skbmFtZX17InN2ZyJ9
OwogICBteSAkc2V0dGVyQ29udGVudCA9ICIiOwotICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50
IC4gInN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbCIgLiAkbmFtZVRvSWR7JG5hbWV9IC4gIihTdHls
ZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpXG4iOworICAkc2V0dGVyQ29udGVudCAuPSAk
aW5kZW50IC4gInN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbCIgLiAkbmFtZVRvSWR7JG5hbWV9IC4g
IihCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSlcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRp
bmRlbnQgLiAie1xuIjsKICAgbXkgJHN0eWxlID0gImJ1aWxkZXJTdGF0ZS5zdHlsZSgpIjsKICAg
aWYgKGV4aXN0cyAkcHJvcGVydGllc1dpdGhTdHlsZUJ1aWxkZXJPcHRpb25zeyRuYW1lfXsiYXV0
by1mdW5jdGlvbnMifSkgewpAQCAtOTQzLDcgKzk0Myw3IEBAIHN1YiBnZW5lcmF0ZUluaGVyaXRW
YWx1ZVNldHRlciB7CiAgIG15ICRpbmRlbnQgPSBzaGlmdDsKIAogICBteSAkc2V0dGVyQ29udGVu
dCA9ICIiOwotICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gInN0YXRpYyB2b2lkIGFwcGx5
SW5oZXJpdCIgLiAkbmFtZVRvSWR7JG5hbWV9IC4gIihTdHlsZTo6QnVpbGRlclN0YXRlJiBidWls
ZGVyU3RhdGUpXG4iOworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gInN0YXRpYyB2b2lk
IGFwcGx5SW5oZXJpdCIgLiAkbmFtZVRvSWR7JG5hbWV9IC4gIihCdWlsZGVyU3RhdGUmIGJ1aWxk
ZXJTdGF0ZSlcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAie1xuIjsKICAgbXkg
JGlzU1ZHID0gZXhpc3RzICRwcm9wZXJ0aWVzV2l0aFN0eWxlQnVpbGRlck9wdGlvbnN7JG5hbWV9
eyJzdmcifTsKICAgbXkgJHBhcmVudFN0eWxlID0gImJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgp
IjsKQEAgLTk5MCwxMyArOTkwLDEzIEBAIHN1YiBnZW5lcmF0ZVZhbHVlU2V0dGVyIHsKICAgbXkg
JGluZGVudCA9IHNoaWZ0OwogCiAgIG15ICRzZXR0ZXJDb250ZW50ID0gIiI7Ci0gICRzZXR0ZXJD
b250ZW50IC49ICRpbmRlbnQgLiAic3RhdGljIHZvaWQgYXBwbHlWYWx1ZSIgLiAkbmFtZVRvSWR7
JG5hbWV9IC4gIihTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2
YWx1ZSlcbiI7CisgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAic3RhdGljIHZvaWQgYXBw
bHlWYWx1ZSIgLiAkbmFtZVRvSWR7JG5hbWV9IC4gIihCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0
ZSwgQ1NTVmFsdWUmIHZhbHVlKVxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJ7
XG4iOwogICBteSAkY29udmVydGVkVmFsdWU7CiAgIGlmIChleGlzdHMoJHByb3BlcnRpZXNXaXRo
U3R5bGVCdWlsZGVyT3B0aW9uc3skbmFtZX17ImNvbnZlcnRlciJ9KSkgewotICAgICRjb252ZXJ0
ZWRWYWx1ZSA9ICJTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnQiIC4gJHByb3BlcnRpZXNX
aXRoU3R5bGVCdWlsZGVyT3B0aW9uc3skbmFtZX17ImNvbnZlcnRlciJ9IC4gIihidWlsZGVyU3Rh
dGUsIHZhbHVlKSI7CisgICAgJGNvbnZlcnRlZFZhbHVlID0gIkJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnQiIC4gJHByb3BlcnRpZXNXaXRoU3R5bGVCdWlsZGVyT3B0aW9uc3skbmFtZX17ImNvbnZl
cnRlciJ9IC4gIihidWlsZGVyU3RhdGUsIHZhbHVlKSI7CiAgIH0gZWxzaWYgKGV4aXN0cygkcHJv
cGVydGllc1dpdGhTdHlsZUJ1aWxkZXJPcHRpb25zeyRuYW1lfXsiY29uZGl0aW9uYWwtY29udmVy
dGVyIn0pKSB7Ci0gICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgYXV0byBjb252
ZXJ0ZWRWYWx1ZSA9IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydCIgLiAkcHJvcGVydGll
c1dpdGhTdHlsZUJ1aWxkZXJPcHRpb25zeyRuYW1lfXsiY29uZGl0aW9uYWwtY29udmVydGVyIn0g
LiAiKGJ1aWxkZXJTdGF0ZSwgdmFsdWUpO1xuIjsKKyAgICAkc2V0dGVyQ29udGVudCAuPSAkaW5k
ZW50IC4gIiAgICBhdXRvIGNvbnZlcnRlZFZhbHVlID0gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dCIgLiAkcHJvcGVydGllc1dpdGhTdHlsZUJ1aWxkZXJPcHRpb25zeyRuYW1lfXsiY29uZGl0aW9u
YWwtY29udmVydGVyIn0gLiAiKGJ1aWxkZXJTdGF0ZSwgdmFsdWUpO1xuIjsKICAgICAkY29udmVy
dGVkVmFsdWUgPSAiV1RGTW92ZShjb252ZXJ0ZWRWYWx1ZS52YWx1ZSgpKSI7CiAgIH0gZWxzZSB7
CiAgICAgJGNvbnZlcnRlZFZhbHVlID0gImRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSkiOwpAQCAtMTA0MiwxMiArMTA0MiwxMiBAQCBzdWIgZ2VuZXJhdGVWYWx1ZVNldHRlciB7CiAg
IHJldHVybiAkc2V0dGVyQ29udGVudDsKIH0KIAotb3BlbiBTVFlMRUJVSUxERVIsICI+U3R5bGVC
dWlsZGVyLmNwcCIgfHwgZGllICJDb3VsZCBub3Qgb3BlbiBTdHlsZUJ1aWxkZXIuY3BwIGZvciB3
cml0aW5nIjsKK29wZW4gU1RZTEVCVUlMREVSLCAiPlN0eWxlQnVpbGRlckdlbmVyYXRlZC5jcHAi
IHx8IGRpZSAiQ291bGQgbm90IG9wZW4gU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmNwcCBmb3Igd3Jp
dGluZyI7CiBwcmludCBTVFlMRUJVSUxERVIgPDwgIkVPRiI7CiAvKiBUaGlzIGZpbGUgaXMgYXV0
b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSAkaW5wdXRGaWxlIGJ5IG1ha2Vwcm9wLCBkbyBub3Qg
ZWRpdCAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU3R5bGVCdWlsZGVyLmgi
CisjaW5jbHVkZSAiU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmgiCiAKICNpbmNsdWRlICJDU1NQcmlt
aXRpdmVWYWx1ZU1hcHBpbmdzLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKQEAgLTEwNTgs
OCArMTA1OCw5IEBAIHByaW50IFNUWUxFQlVJTERFUiA8PCAiRU9GIjsKICNpbmNsdWRlICJTdHls
ZVByb3BlcnR5U2hvcnRoYW5kLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBT
dHlsZSB7CiAKLWNsYXNzIFN0eWxlQnVpbGRlckZ1bmN0aW9ucyB7CitjbGFzcyBCdWlsZGVyRnVu
Y3Rpb25zIHsKIHB1YmxpYzoKIEVPRgogCkBAIC0xMDgzLDcgKzEwODQsNyBAQCBmb3JlYWNoIG15
ICRuYW1lIChAbmFtZXMpIHsKIHByaW50IFNUWUxFQlVJTERFUiA8PCAiRU9GIjsKIH07CiAKLXZv
aWQgU3R5bGVCdWlsZGVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHksIFN0
eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlLCBib29sIGlz
SW5pdGlhbCwgYm9vbCBpc0luaGVyaXQsIGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0
eSogcmVnaXN0ZXJlZCkKK3ZvaWQgQnVpbGRlckdlbmVyYXRlZDo6YXBwbHlQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5LCBCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUm
IHZhbHVlLCBib29sIGlzSW5pdGlhbCwgYm9vbCBpc0luaGVyaXQsIGNvbnN0IENTU1JlZ2lzdGVy
ZWRDdXN0b21Qcm9wZXJ0eSogcmVnaXN0ZXJlZCkKIHsKICAgICBzd2l0Y2ggKHByb3BlcnR5KSB7
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUludmFsaWQ6CkBAIC0xMDkxLDExICsxMDkyLDExIEBAIHZv
aWQgU3R5bGVCdWlsZGVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHksIFN0
eWxlOjpCdWlsZGVyU3RhdGUmIGJ1CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUN1c3RvbTogewogICAg
ICAgICBhdXRvJiBjdXN0b21Qcm9wZXJ0eSA9IGRvd25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFs
dWU+KHZhbHVlKTsKICAgICAgICAgaWYgKGlzSW5pdGlhbCkKLSAgICAgICAgICAgIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlJbml0aWFsQ3VzdG9tUHJvcGVydHkoYnVpbGRlclN0YXRlLCByZWdp
c3RlcmVkLCBjdXN0b21Qcm9wZXJ0eS5uYW1lKCkpOworICAgICAgICAgICAgQnVpbGRlckN1c3Rv
bTo6YXBwbHlJbml0aWFsQ3VzdG9tUHJvcGVydHkoYnVpbGRlclN0YXRlLCByZWdpc3RlcmVkLCBj
dXN0b21Qcm9wZXJ0eS5uYW1lKCkpOwogICAgICAgICBlbHNlIGlmIChpc0luaGVyaXQpCi0gICAg
ICAgICAgICBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEN1c3RvbVByb3BlcnR5KGJ1
aWxkZXJTdGF0ZSwgcmVnaXN0ZXJlZCwgY3VzdG9tUHJvcGVydHkubmFtZSgpKTsKKyAgICAgICAg
ICAgIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEN1c3RvbVByb3BlcnR5KGJ1aWxkZXJTdGF0
ZSwgcmVnaXN0ZXJlZCwgY3VzdG9tUHJvcGVydHkubmFtZSgpKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ3VzdG9tUHJvcGVydHkoYnVp
bGRlclN0YXRlLCByZWdpc3RlcmVkLCBjdXN0b21Qcm9wZXJ0eSk7CisgICAgICAgICAgICBCdWls
ZGVyQ3VzdG9tOjphcHBseVZhbHVlQ3VzdG9tUHJvcGVydHkoYnVpbGRlclN0YXRlLCByZWdpc3Rl
cmVkLCBjdXN0b21Qcm9wZXJ0eSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIEVPRgpAQCAtMTEy
MCw2ICsxMTIxLDcgQEAgcHJpbnQgU1RZTEVCVUlMREVSIDw8ICJFT0YiOwogICAgIH07CiB9CiAK
K30gLy8gbmFtZXNwYWNlIFN0eWxlCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiBFT0YKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAppbmRleCAx
YWU3YmM5YTQ3Ni4uNWQ0MDcyNjc5OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCkBAIC00MzAwLDcgKzQzMDAsNyBAQCBSZWZQdHI8Q1NT
Q3VzdG9tUHJvcGVydHlWYWx1ZT4gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlVHlwZWRDdXN0b21Q
cm9wZXJ0eVZhbHVlKAogICAgICAgICBtX3JhbmdlLmNvbnN1bWVXaGl0ZXNwYWNlKCk7CiAgICAg
ICAgIGF1dG8gcHJpbWl0aXZlVmFsID0gY29uc3VtZVdpZHRoT3JIZWlnaHQobV9yYW5nZSwgbV9j
b250ZXh0KTsKICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbCAmJiBwcmltaXRpdmVWYWwtPmlzUHJp
bWl0aXZlVmFsdWUoKSAmJiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnByaW1pdGl2ZVZh
bCkuaXNMZW5ndGgoKSkgewotICAgICAgICAgICAgYXV0byBsZW5ndGggPSBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgoYnVpbGRlclN0YXRlLCAqcHJpbWl0aXZlVmFsKTsKKyAg
ICAgICAgICAgIGF1dG8gbGVuZ3RoID0gU3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRM
ZW5ndGgoYnVpbGRlclN0YXRlLCAqcHJpbWl0aXZlVmFsKTsKICAgICAgICAgICAgIGlmICghbGVu
Z3RoLmlzQ2FsY3VsYXRlZCgpICYmICFsZW5ndGguaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlU3ludGF4TGVuZ3RoKG5h
bWUsIFdURk1vdmUobGVuZ3RoKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qcm9w
ZXJ0eUNhc2NhZGUuY3BwCmluZGV4IDNlOGJjOWNkOGQ4Li5jMzgzM2Q0Y2U2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5j
bHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlUG9v
bC5oIgogI2luY2x1ZGUgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAiU3R5
bGVCdWlsZGVyLmgiCisjaW5jbHVkZSAiU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmgiCiAjaW5jbHVk
ZSAiU3R5bGVQcm9wZXJ0eVNob3J0aGFuZC5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIK
IApAQCAtNjI0LDggKzYyNCw3IEBAIHZvaWQgUHJvcGVydHlDYXNjYWRlOjphcHBseVByb3BlcnR5
KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlJiB2YWx1ZSwgU2VsZWN0b3JDCiAgICAgfQogI2Vu
ZGlmCiAKLSAgICAvLyBVc2UgdGhlIGdlbmVyYXRlZCBTdHlsZUJ1aWxkZXIuCi0gICAgU3R5bGVC
dWlsZGVyOjphcHBseVByb3BlcnR5KGlkLCBidWlsZGVyU3RhdGUsIHZhbHVlVG9BcHBseS5nZXQo
KSwgaXNJbml0aWFsLCBpc0luaGVyaXQsIGN1c3RvbVByb3BlcnR5UmVnaXN0ZXJlZCk7CisgICAg
QnVpbGRlckdlbmVyYXRlZDo6YXBwbHlQcm9wZXJ0eShpZCwgYnVpbGRlclN0YXRlLCB2YWx1ZVRv
QXBwbHkuZ2V0KCksIGlzSW5pdGlhbCwgaXNJbmhlcml0LCBjdXN0b21Qcm9wZXJ0eVJlZ2lzdGVy
ZWQpOwogfQogCiBSZWY8Q1NTVmFsdWU+IFByb3BlcnR5Q2FzY2FkZTo6cmVzb2x2ZVZhbHVlKENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgQ1NTVmFsdWUmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKc2ltaWxhcml0eSBpbmRleCA3NCUKcmVuYW1l
IGZyb20gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCnJlbmFtZSB0
byBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAppbmRleCBiYjVj
YTY0MDM1Mi4uNTE3MmYxYzZiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZUJ1aWxkZXJDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXIuaApAQCAtNTksMTIwICs1OSwxMjEgQEAKICNpbmNsdWRlIDx3dGYvT3B0aW9u
YWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIFN0eWxlIHsKIAogLy8gTm90
ZSB0aGF0IHdlIGFzc3VtZSB0aGUgQ1NTIHBhcnNlciBvbmx5IGFsbG93cyB2YWxpZCBDU1NWYWx1
ZSB0eXBlcy4KLWNsYXNzIFN0eWxlQnVpbGRlckNvbnZlcnRlciB7CitjbGFzcyBCdWlsZGVyQ29u
dmVydGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRMZW5ndGgoY29uc3Qg
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIExlbmd0
aCBjb252ZXJ0TGVuZ3RoT3JBdXRvKGNvbnN0IFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBD
U1NWYWx1ZSYpOwotICAgIHN0YXRpYyBMZW5ndGggY29udmVydExlbmd0aFNpemluZyhjb25zdCBT
dHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgTGVuZ3Ro
IGNvbnZlcnRMZW5ndGhNYXhTaXppbmcoY29uc3QgU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0
IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIFRhYlNpemUgY29udmVydFRhYlNpemUoY29uc3QgU3R5
bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RhdGljIFQgY29udmVydENvbXB1dGVkTGVuZ3RoKFN0eWxlOjpCdWlsZGVyU3RhdGUm
LCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBUIGNv
bnZlcnRMaW5lV2lkdGgoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0g
ICAgc3RhdGljIGZsb2F0IGNvbnZlcnRTcGFjaW5nKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25z
dCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBMZW5ndGhTaXplIGNvbnZlcnRSYWRpdXMoU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIExlbmd0aFBvaW50
IGNvbnZlcnRPYmplY3RQb3NpdGlvbihTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFs
dWUmKTsKLSAgICBzdGF0aWMgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiBjb252ZXJ0VGV4dERl
Y29yYXRpb24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIFQgY29udmVydE51bWJlcihTdHlsZTo6QnVpbGRlclN0
YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMg
VCBjb252ZXJ0TnVtYmVyT3JBdXRvKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1
ZSYpOwotICAgIHN0YXRpYyBzaG9ydCBjb252ZXJ0V2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcyhT
dHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICB0ZW1wbGF0ZTxDU1NQ
cm9wZXJ0eUlEPiBzdGF0aWMgTmluZVBpZWNlSW1hZ2UgY29udmVydEJvcmRlckltYWdlKFN0eWxl
OjpCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYpOwotICAgIHRlbXBsYXRlPENTU1Byb3BlcnR5SUQ+
IHN0YXRpYyBOaW5lUGllY2VJbWFnZSBjb252ZXJ0Qm9yZGVyTWFzayhTdHlsZTo6QnVpbGRlclN0
YXRlJiwgQ1NTVmFsdWUmKTsKLSAgICB0ZW1wbGF0ZTxDU1NQcm9wZXJ0eUlEPiBzdGF0aWMgUmVm
UHRyPFN0eWxlSW1hZ2U+IGNvbnZlcnRTdHlsZUltYWdlKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBD
U1NWYWx1ZSYpOwotICAgIHN0YXRpYyBUcmFuc2Zvcm1PcGVyYXRpb25zIGNvbnZlcnRUcmFuc2Zv
cm0oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIExl
bmd0aCBjb252ZXJ0TGVuZ3RoKGNvbnN0IEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7
CisgICAgc3RhdGljIExlbmd0aCBjb252ZXJ0TGVuZ3RoT3JBdXRvKGNvbnN0IEJ1aWxkZXJTdGF0
ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIExlbmd0aCBjb252ZXJ0TGVuZ3RoU2l6
aW5nKGNvbnN0IEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIExl
bmd0aCBjb252ZXJ0TGVuZ3RoTWF4U2l6aW5nKGNvbnN0IEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENT
U1ZhbHVlJik7CisgICAgc3RhdGljIFRhYlNpemUgY29udmVydFRhYlNpemUoY29uc3QgQnVpbGRl
clN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0
aWMgVCBjb252ZXJ0Q29tcHV0ZWRMZW5ndGgoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUm
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgVCBjb252ZXJ0TGluZVdpZHRoKEJ1
aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIGZsb2F0IGNvbnZlcnRT
cGFjaW5nKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIExlbmd0
aFNpemUgY29udmVydFJhZGl1cyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAg
IHN0YXRpYyBMZW5ndGhQb2ludCBjb252ZXJ0T2JqZWN0UG9zaXRpb24oQnVpbGRlclN0YXRlJiwg
Y29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiBj
b252ZXJ0VGV4dERlY29yYXRpb24oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgVCBjb252ZXJ0TnVtYmVyKEJ1aWxkZXJTdGF0
ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIFQg
Y29udmVydE51bWJlck9yQXV0byhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAg
IHN0YXRpYyBzaG9ydCBjb252ZXJ0V2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcyhCdWlsZGVyU3Rh
dGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHRlbXBsYXRlPENTU1Byb3BlcnR5SUQ+IHN0YXRp
YyBOaW5lUGllY2VJbWFnZSBjb252ZXJ0Qm9yZGVySW1hZ2UoQnVpbGRlclN0YXRlJiwgQ1NTVmFs
dWUmKTsKKyAgICB0ZW1wbGF0ZTxDU1NQcm9wZXJ0eUlEPiBzdGF0aWMgTmluZVBpZWNlSW1hZ2Ug
Y29udmVydEJvcmRlck1hc2soQnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUmKTsKKyAgICB0ZW1wbGF0
ZTxDU1NQcm9wZXJ0eUlEPiBzdGF0aWMgUmVmUHRyPFN0eWxlSW1hZ2U+IGNvbnZlcnRTdHlsZUlt
YWdlKEJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIFRyYW5zZm9ybU9wZXJh
dGlvbnMgY29udmVydFRyYW5zZm9ybShCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwog
I2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQotICAgIHN0YXRpYyBTdHlsZUNvbG9yU2NoZW1lIGNv
bnZlcnRDb2xvclNjaGVtZShTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsK
KyAgICBzdGF0aWMgU3R5bGVDb2xvclNjaGVtZSBjb252ZXJ0Q29sb3JTY2hlbWUoQnVpbGRlclN0
YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKICNlbmRpZgotICAgIHN0YXRpYyBTdHJpbmcgY29udmVy
dFN0cmluZyhTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0
aWMgU3RyaW5nIGNvbnZlcnRTdHJpbmdPckF1dG8oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0
IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIFN0cmluZyBjb252ZXJ0U3RyaW5nT3JOb25lKFN0eWxl
OjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBPcHRpb25TZXQ8
VGV4dEVtcGhhc2lzUG9zaXRpb24+IGNvbnZlcnRUZXh0RW1waGFzaXNQb3NpdGlvbihTdHlsZTo6
QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgVGV4dEFsaWduTW9k
ZSBjb252ZXJ0VGV4dEFsaWduKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYp
OwotICAgIHN0YXRpYyBSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+IGNvbnZlcnRDbGlwUGF0aChT
dHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgUmVzaXpl
IGNvbnZlcnRSZXNpemUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0g
ICAgc3RhdGljIGludCBjb252ZXJ0TWFycXVlZVJlcGV0aXRpb24oU3R5bGU6OkJ1aWxkZXJTdGF0
ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIGludCBjb252ZXJ0TWFycXVlZVNwZWVk
KFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBSZWY8
UXVvdGVzRGF0YT4gY29udmVydFF1b3RlcyhTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NT
VmFsdWUmKTsKLSAgICBzdGF0aWMgVGV4dFVuZGVybGluZVBvc2l0aW9uIGNvbnZlcnRUZXh0VW5k
ZXJsaW5lUG9zaXRpb24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0g
ICAgc3RhdGljIFRleHRVbmRlcmxpbmVPZmZzZXQgY29udmVydFRleHRVbmRlcmxpbmVPZmZzZXQo
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIFRleHRE
ZWNvcmF0aW9uVGhpY2tuZXNzIGNvbnZlcnRUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyhTdHlsZTo6
QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgUmVmUHRyPFN0eWxl
UmVmbGVjdGlvbj4gY29udmVydFJlZmxlY3Rpb24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0
IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIEludFNpemUgY29udmVydEluaXRpYWxMZXR0ZXIoU3R5
bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIGZsb2F0IGNv
bnZlcnRUZXh0U3Ryb2tlV2lkdGgoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVl
Jik7Ci0gICAgc3RhdGljIE9wdGlvblNldDxMaW5lQm94Q29udGFpbj4gY29udmVydExpbmVCb3hD
b250YWluKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRp
YyBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25Ta2lwPiBjb252ZXJ0VGV4dERlY29yYXRpb25Ta2lw
KFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBSZWZQ
dHI8U2hhcGVWYWx1ZT4gY29udmVydFNoYXBlVmFsdWUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIENT
U1ZhbHVlJik7CisgICAgc3RhdGljIFN0cmluZyBjb252ZXJ0U3RyaW5nKEJ1aWxkZXJTdGF0ZSYs
IGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFN0cmluZyBjb252ZXJ0U3RyaW5nT3JBdXRv
KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFN0cmluZyBjb252
ZXJ0U3RyaW5nT3JOb25lKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3Rh
dGljIE9wdGlvblNldDxUZXh0RW1waGFzaXNQb3NpdGlvbj4gY29udmVydFRleHRFbXBoYXNpc1Bv
c2l0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFRleHRB
bGlnbk1vZGUgY29udmVydFRleHRBbGlnbihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYp
OworICAgIHN0YXRpYyBSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+IGNvbnZlcnRDbGlwUGF0aChC
dWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBSZXNpemUgY29udmVy
dFJlc2l6ZShCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBpbnQg
Y29udmVydE1hcnF1ZWVSZXBldGl0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7
CisgICAgc3RhdGljIGludCBjb252ZXJ0TWFycXVlZVNwZWVkKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0
IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFJlZjxRdW90ZXNEYXRhPiBjb252ZXJ0UXVvdGVzKEJ1
aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFRleHRVbmRlcmxpbmVQ
b3NpdGlvbiBjb252ZXJ0VGV4dFVuZGVybGluZVBvc2l0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0
IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFRleHRVbmRlcmxpbmVPZmZzZXQgY29udmVydFRleHRV
bmRlcmxpbmVPZmZzZXQoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0
aWMgVGV4dERlY29yYXRpb25UaGlja25lc3MgY29udmVydFRleHREZWNvcmF0aW9uVGhpY2tuZXNz
KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFJlZlB0cjxTdHls
ZVJlZmxlY3Rpb24+IGNvbnZlcnRSZWZsZWN0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1Zh
bHVlJik7CisgICAgc3RhdGljIEludFNpemUgY29udmVydEluaXRpYWxMZXR0ZXIoQnVpbGRlclN0
YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgZmxvYXQgY29udmVydFRleHRTdHJv
a2VXaWR0aChCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBPcHRp
b25TZXQ8TGluZUJveENvbnRhaW4+IGNvbnZlcnRMaW5lQm94Q29udGFpbihCdWlsZGVyU3RhdGUm
LCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25T
a2lwPiBjb252ZXJ0VGV4dERlY29yYXRpb25Ta2lwKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1Zh
bHVlJik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFwZVZhbHVlPiBjb252ZXJ0U2hhcGVWYWx1ZShC
dWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYpOwogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0g
ICAgc3RhdGljIFNjcm9sbFNuYXBUeXBlIGNvbnZlcnRTY3JvbGxTbmFwVHlwZShTdHlsZTo6QnVp
bGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgU2Nyb2xsU25hcEFsaWdu
IGNvbnZlcnRTY3JvbGxTbmFwQWxpZ24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1Zh
bHVlJik7CisgICAgc3RhdGljIFNjcm9sbFNuYXBUeXBlIGNvbnZlcnRTY3JvbGxTbmFwVHlwZShC
dWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBTY3JvbGxTbmFwQWxp
Z24gY29udmVydFNjcm9sbFNuYXBBbGlnbihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYp
OwogI2VuZGlmCi0gICAgc3RhdGljIEdyaWRUcmFja1NpemUgY29udmVydEdyaWRUcmFja1NpemUo
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIFZlY3Rv
cjxHcmlkVHJhY2tTaXplPiBjb252ZXJ0R3JpZFRyYWNrU2l6ZUxpc3QoU3R5bGU6OkJ1aWxkZXJT
dGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPEdyaWRQb3NpdGlv
bj4gY29udmVydEdyaWRQb3NpdGlvbihTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFs
dWUmKTsKLSAgICBzdGF0aWMgR3JpZEF1dG9GbG93IGNvbnZlcnRHcmlkQXV0b0Zsb3coU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPExl
bmd0aD4gY29udmVydFdvcmRTcGFjaW5nKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NW
YWx1ZSYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxmbG9hdD4gY29udmVydFBlcnNwZWN0aXZlKFN0
eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBPcHRpb25h
bDxMZW5ndGg+IGNvbnZlcnRNYXJxdWVlSW5jcmVtZW50KFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBj
b25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxGaWx0ZXJPcGVyYXRpb25zPiBj
b252ZXJ0RmlsdGVyT3BlcmF0aW9ucyhTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFs
dWUmKTsKKyAgICBzdGF0aWMgR3JpZFRyYWNrU2l6ZSBjb252ZXJ0R3JpZFRyYWNrU2l6ZShCdWls
ZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBWZWN0b3I8R3JpZFRyYWNr
U2l6ZT4gY29udmVydEdyaWRUcmFja1NpemVMaXN0KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1Zh
bHVlJik7CisgICAgc3RhdGljIE9wdGlvbmFsPEdyaWRQb3NpdGlvbj4gY29udmVydEdyaWRQb3Np
dGlvbihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBHcmlkQXV0
b0Zsb3cgY29udmVydEdyaWRBdXRvRmxvdyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYp
OworICAgIHN0YXRpYyBPcHRpb25hbDxMZW5ndGg+IGNvbnZlcnRXb3JkU3BhY2luZyhCdWlsZGVy
U3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBPcHRpb25hbDxmbG9hdD4gY29u
dmVydFBlcnNwZWN0aXZlKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3Rh
dGljIE9wdGlvbmFsPExlbmd0aD4gY29udmVydE1hcnF1ZWVJbmNyZW1lbnQoQnVpbGRlclN0YXRl
JiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8RmlsdGVyT3BlcmF0aW9u
cz4gY29udmVydEZpbHRlck9wZXJhdGlvbnMoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUm
KTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHN0YXRpYyBib29sIGNvbnZlcnRUb3Vj
aENhbGxvdXQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3Rh
dGljIGJvb2wgY29udmVydFRvdWNoQ2FsbG91dChCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1
ZSYpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBzdGF0aWMgQ29sb3Ig
Y29udmVydFRhcEhpZ2hsaWdodENvbG9yKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NW
YWx1ZSYpOworICAgIHN0YXRpYyBDb2xvciBjb252ZXJ0VGFwSGlnaGxpZ2h0Q29sb3IoQnVpbGRl
clN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKICNlbmRpZgogI2lmIEVOQUJMRShQT0lOVEVSX0VW
RU5UUykKLSAgICBzdGF0aWMgT3B0aW9uU2V0PFRvdWNoQWN0aW9uPiBjb252ZXJ0VG91Y2hBY3Rp
b24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIE9w
dGlvblNldDxUb3VjaEFjdGlvbj4gY29udmVydFRvdWNoQWN0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNv
bnN0IENTU1ZhbHVlJik7CiAjZW5kaWYKICNpZiBFTkFCTEUoT1ZFUkZMT1dfU0NST0xMSU5HX1RP
VUNIKQotICAgIHN0YXRpYyBib29sIGNvbnZlcnRPdmVyZmxvd1Njcm9sbGluZyhTdHlsZTo6QnVp
bGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgYm9vbCBjb252ZXJ0T3Zl
cmZsb3dTY3JvbGxpbmcoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKICNlbmRpZgot
ICAgIHN0YXRpYyBGb250RmVhdHVyZVNldHRpbmdzIGNvbnZlcnRGb250RmVhdHVyZVNldHRpbmdz
KFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBGb250
RmVhdHVyZVNldHRpbmdzIGNvbnZlcnRGb250RmVhdHVyZVNldHRpbmdzKEJ1aWxkZXJTdGF0ZSYs
IGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIEZvbnRTZWxlY3Rpb25WYWx1ZSBjb252ZXJ0
Rm9udFdlaWdodEZyb21WYWx1ZShjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBGb250U2Vs
ZWN0aW9uVmFsdWUgY29udmVydEZvbnRTdHJldGNoRnJvbVZhbHVlKGNvbnN0IENTU1ZhbHVlJik7
CiAgICAgc3RhdGljIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gY29udmVydEZvbnRTdHls
ZUZyb21WYWx1ZShjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBGb250U2VsZWN0aW9uVmFs
dWUgY29udmVydEZvbnRXZWlnaHQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVl
Jik7Ci0gICAgc3RhdGljIEZvbnRTZWxlY3Rpb25WYWx1ZSBjb252ZXJ0Rm9udFN0cmV0Y2goU3R5
bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIEZvbnRTZWxl
Y3Rpb25WYWx1ZSBjb252ZXJ0Rm9udFN0eWxlKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBD
U1NWYWx1ZSYpOworICAgIHN0YXRpYyBGb250U2VsZWN0aW9uVmFsdWUgY29udmVydEZvbnRXZWln
aHQoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgRm9udFNlbGVj
dGlvblZhbHVlIGNvbnZlcnRGb250U3RyZXRjaChCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1
ZSYpOworICAgIHN0YXRpYyBGb250U2VsZWN0aW9uVmFsdWUgY29udmVydEZvbnRTdHlsZShCdWls
ZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwogI2lmIEVOQUJMRShWQVJJQVRJT05fRk9OVFMp
Ci0gICAgc3RhdGljIEZvbnRWYXJpYXRpb25TZXR0aW5ncyBjb252ZXJ0Rm9udFZhcmlhdGlvblNl
dHRpbmdzKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRp
YyBGb250VmFyaWF0aW9uU2V0dGluZ3MgY29udmVydEZvbnRWYXJpYXRpb25TZXR0aW5ncyhCdWls
ZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwogI2VuZGlmCi0gICAgc3RhdGljIFNWR0xlbmd0
aFZhbHVlIGNvbnZlcnRTVkdMZW5ndGhWYWx1ZShTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3Qg
Q1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgVmVjdG9yPFNWR0xlbmd0aFZhbHVlPiBjb252ZXJ0U1ZH
TGVuZ3RoVmVjdG9yKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAg
IHN0YXRpYyBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IGNvbnZlcnRTdHJva2VEYXNoQXJyYXkoU3R5
bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIFBhaW50T3Jk
ZXIgY29udmVydFBhaW50T3JkZXIoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVl
Jik7Ci0gICAgc3RhdGljIGZsb2F0IGNvbnZlcnRPcGFjaXR5KFN0eWxlOjpCdWlsZGVyU3RhdGUm
LCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBTdHJpbmcgY29udmVydFNWR1VSSVJlZmVy
ZW5jZShTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMg
Q29sb3IgY29udmVydFNWR0NvbG9yKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1
ZSYpOwotICAgIHN0YXRpYyBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIGNvbnZlcnRTZWxmT3JEZWZh
dWx0QWxpZ25tZW50RGF0YShTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsK
LSAgICBzdGF0aWMgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSBjb252ZXJ0Q29udGVudEFsaWdu
bWVudERhdGEoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3Rh
dGljIEdseXBoT3JpZW50YXRpb24gY29udmVydEdseXBoT3JpZW50YXRpb24oU3R5bGU6OkJ1aWxk
ZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIEdseXBoT3JpZW50YXRpb24g
Y29udmVydEdseXBoT3JpZW50YXRpb25PckF1dG8oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0
IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPExlbmd0aD4gY29udmVydExpbmVIZWln
aHQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiwgZmxvYXQgbXVsdGlwbGll
ciA9IDEuZik7Ci0gICAgc3RhdGljIEZvbnRTeW50aGVzaXMgY29udmVydEZvbnRTeW50aGVzaXMo
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFNWR0xl
bmd0aFZhbHVlIGNvbnZlcnRTVkdMZW5ndGhWYWx1ZShCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NW
YWx1ZSYpOworICAgIHN0YXRpYyBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IGNvbnZlcnRTVkdMZW5n
dGhWZWN0b3IoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgVmVj
dG9yPFNWR0xlbmd0aFZhbHVlPiBjb252ZXJ0U3Ryb2tlRGFzaEFycmF5KEJ1aWxkZXJTdGF0ZSYs
IGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFBhaW50T3JkZXIgY29udmVydFBhaW50T3Jk
ZXIoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgZmxvYXQgY29u
dmVydE9wYWNpdHkoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMg
U3RyaW5nIGNvbnZlcnRTVkdVUklSZWZlcmVuY2UoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFs
dWUmKTsKKyAgICBzdGF0aWMgQ29sb3IgY29udmVydFNWR0NvbG9yKEJ1aWxkZXJTdGF0ZSYsIGNv
bnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFN0eWxlU2VsZkFsaWdubWVudERhdGEgY29udmVy
dFNlbGZPckRlZmF1bHRBbGlnbm1lbnREYXRhKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVl
Jik7CisgICAgc3RhdGljIFN0eWxlQ29udGVudEFsaWdubWVudERhdGEgY29udmVydENvbnRlbnRB
bGlnbm1lbnREYXRhKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGlj
IEdseXBoT3JpZW50YXRpb24gY29udmVydEdseXBoT3JpZW50YXRpb24oQnVpbGRlclN0YXRlJiwg
Y29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgR2x5cGhPcmllbnRhdGlvbiBjb252ZXJ0R2x5
cGhPcmllbnRhdGlvbk9yQXV0byhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAg
IHN0YXRpYyBPcHRpb25hbDxMZW5ndGg+IGNvbnZlcnRMaW5lSGVpZ2h0KEJ1aWxkZXJTdGF0ZSYs
IGNvbnN0IENTU1ZhbHVlJiwgZmxvYXQgbXVsdGlwbGllciA9IDEuZik7CisgICAgc3RhdGljIEZv
bnRTeW50aGVzaXMgY29udmVydEZvbnRTeW50aGVzaXMoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NT
VmFsdWUmKTsKICAgICAKLSAgICBzdGF0aWMgQnJlYWtCZXR3ZWVuIGNvbnZlcnRQYWdlQnJlYWtC
ZXR3ZWVuKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRp
YyBCcmVha0luc2lkZSBjb252ZXJ0UGFnZUJyZWFrSW5zaWRlKFN0eWxlOjpCdWlsZGVyU3RhdGUm
LCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBCcmVha0JldHdlZW4gY29udmVydENvbHVt
bkJyZWFrQmV0d2VlbihTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAg
ICBzdGF0aWMgQnJlYWtJbnNpZGUgY29udmVydENvbHVtbkJyZWFrSW5zaWRlKFN0eWxlOjpCdWls
ZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBCcmVha0JldHdlZW4gY29u
dmVydFBhZ2VCcmVha0JldHdlZW4oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAg
ICBzdGF0aWMgQnJlYWtJbnNpZGUgY29udmVydFBhZ2VCcmVha0luc2lkZShCdWlsZGVyU3RhdGUm
LCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBCcmVha0JldHdlZW4gY29udmVydENvbHVt
bkJyZWFrQmV0d2VlbihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRp
YyBCcmVha0luc2lkZSBjb252ZXJ0Q29sdW1uQnJlYWtJbnNpZGUoQnVpbGRlclN0YXRlJiwgY29u
c3QgQ1NTVmFsdWUmKTsKIAotICAgIHN0YXRpYyBPcHRpb25TZXQ8SGFuZ2luZ1B1bmN0dWF0aW9u
PiBjb252ZXJ0SGFuZ2luZ1B1bmN0dWF0aW9uKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBD
U1NWYWx1ZSYpOworICAgIHN0YXRpYyBPcHRpb25TZXQ8SGFuZ2luZ1B1bmN0dWF0aW9uPiBjb252
ZXJ0SGFuZ2luZ1B1bmN0dWF0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CiAK
LSAgICBzdGF0aWMgT3B0aW9uU2V0PFNwZWFrQXM+IGNvbnZlcnRTcGVha0FzKFN0eWxlOjpCdWls
ZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBPcHRpb25TZXQ8U3BlYWtB
cz4gY29udmVydFNwZWFrQXMoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKIAotICAg
IHN0YXRpYyBMZW5ndGggY29udmVydFBvc2l0aW9uQ29tcG9uZW50WChTdHlsZTo6QnVpbGRlclN0
YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRQb3NpdGlv
bkNvbXBvbmVudFkoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAg
c3RhdGljIExlbmd0aCBjb252ZXJ0UG9zaXRpb25Db21wb25lbnRYKEJ1aWxkZXJTdGF0ZSYsIGNv
bnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIExlbmd0aCBjb252ZXJ0UG9zaXRpb25Db21wb25l
bnRZKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CiAKLSAgICBzdGF0aWMgR2FwTGVu
Z3RoIGNvbnZlcnRHYXBMZW5ndGgoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVl
Jik7CisgICAgc3RhdGljIEdhcExlbmd0aCBjb252ZXJ0R2FwTGVuZ3RoKEJ1aWxkZXJTdGF0ZSYs
IGNvbnN0IENTU1ZhbHVlJik7CiAgICAgCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBTdHls
ZUJ1aWxkZXJDdXN0b207CisgICAgZnJpZW5kIGNsYXNzIEJ1aWxkZXJDdXN0b207CiAKICAgICBz
dGF0aWMgTGVuZ3RoIGNvbnZlcnRUb1JhZGl1c0xlbmd0aChDU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhJiwgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmKTsKICAgICBzdGF0aWMgT3B0aW9uU2V0PFRl
eHRFbXBoYXNpc1Bvc2l0aW9uPiB2YWx1ZVRvRW1waGFzaXNQb3NpdGlvbihjb25zdCBDU1NQcmlt
aXRpdmVWYWx1ZSYpOwogICAgIHN0YXRpYyBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25Ta2lwPiB2
YWx1ZVRvRGVjb3JhdGlvblNraXAoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmKTsKICNpZiBFTkFC
TEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIHN0YXRpYyBMZW5ndGggcGFyc2VTbmFwQ29vcmRpbmF0
ZShTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgTGVu
Z3RoIHBhcnNlU25hcENvb3JkaW5hdGUoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCkBAIC0xODAsMTggKzE4MSwxOCBA
QCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUbzEwMFBlcmNl
bnRNaW51c0xlbmd0aChjb25zdCBMZW5ndGgmKTsKLSAgICB0ZW1wbGF0ZTxDU1NWYWx1ZUlELCBD
U1NWYWx1ZUlEPiBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudChTdHlsZTo6
QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmKTsKKyAgICB0ZW1wbGF0ZTxD
U1NWYWx1ZUlELCBDU1NWYWx1ZUlEPiBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRQb3NpdGlvbkNvbXBv
bmVudChCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYpOwogCi0gICAgc3Rh
dGljIEdyaWRMZW5ndGggY3JlYXRlR3JpZFRyYWNrQnJlYWR0aChjb25zdCBDU1NQcmltaXRpdmVW
YWx1ZSYsIFN0eWxlOjpCdWlsZGVyU3RhdGUmKTsKLSAgICBzdGF0aWMgR3JpZFRyYWNrU2l6ZSBj
cmVhdGVHcmlkVHJhY2tTaXplKGNvbnN0IENTU1ZhbHVlJiwgU3R5bGU6OkJ1aWxkZXJTdGF0ZSYp
OworICAgIHN0YXRpYyBHcmlkTGVuZ3RoIGNyZWF0ZUdyaWRUcmFja0JyZWFkdGgoY29uc3QgQ1NT
UHJpbWl0aXZlVmFsdWUmLCBCdWlsZGVyU3RhdGUmKTsKKyAgICBzdGF0aWMgR3JpZFRyYWNrU2l6
ZSBjcmVhdGVHcmlkVHJhY2tTaXplKGNvbnN0IENTU1ZhbHVlJiwgQnVpbGRlclN0YXRlJik7CiAg
ICAgc3RydWN0IFRyYWNrc0RhdGE7Ci0gICAgc3RhdGljIGJvb2wgY3JlYXRlR3JpZFRyYWNrTGlz
dChjb25zdCBDU1NWYWx1ZSYsIFRyYWNrc0RhdGEmLCBTdHlsZTo6QnVpbGRlclN0YXRlJik7Cisg
ICAgc3RhdGljIGJvb2wgY3JlYXRlR3JpZFRyYWNrTGlzdChjb25zdCBDU1NWYWx1ZSYsIFRyYWNr
c0RhdGEmLCBCdWlsZGVyU3RhdGUmKTsKICAgICBzdGF0aWMgYm9vbCBjcmVhdGVHcmlkUG9zaXRp
b24oY29uc3QgQ1NTVmFsdWUmLCBHcmlkUG9zaXRpb24mKTsKICAgICBzdGF0aWMgdm9pZCBjcmVh
dGVJbXBsaWNpdE5hbWVkR3JpZExpbmVzRnJvbUdyaWRBcmVhKGNvbnN0IE5hbWVkR3JpZEFyZWFN
YXAmLCBOYW1lZEdyaWRMaW5lc01hcCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbik7Ci0gICAg
c3RhdGljIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgY3NzdG9MZW5ndGhDb252ZXJzaW9uRGF0
YVdpdGhUZXh0Wm9vbUZhY3RvcihTdHlsZTo6QnVpbGRlclN0YXRlJik7CisgICAgc3RhdGljIENT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgY3NzdG9MZW5ndGhDb252ZXJzaW9uRGF0YVdpdGhUZXh0
Wm9vbUZhY3RvcihCdWlsZGVyU3RhdGUmKTsKIH07CiAKLWlubGluZSBMZW5ndGggU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoKGNvbnN0IFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIExlbmd0aCBCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0TGVuZ3RoKGNvbnN0IEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
LCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIENTU1RvTGVuZ3RoQ29udmVy
c2lvbkRhdGEgY29udmVyc2lvbkRhdGEgPSBidWlsZGVyU3RhdGUudXNlU1ZHWm9vbVJ1bGVzRm9y
TGVuZ3RoKCkgPwpAQCAtMjE0LDE0ICsyMTUsMTQgQEAgaW5saW5lIExlbmd0aCBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgoY29uc3QgU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnUK
ICAgICByZXR1cm4gTGVuZ3RoKDAsIEZpeGVkKTsKIH0KIAotaW5saW5lIExlbmd0aCBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGhPckF1dG8oY29uc3QgU3R5bGU6OkJ1aWxkZXJT
dGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgTGVuZ3Ro
IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGhPckF1dG8oY29uc3QgQnVpbGRlclN0YXRl
JiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKQog
ICAgICAgICByZXR1cm4gTGVuZ3RoKEF1dG8pOwogICAgIHJldHVybiBjb252ZXJ0TGVuZ3RoKGJ1
aWxkZXJTdGF0ZSwgdmFsdWUpOwogfQogCi1pbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydExlbmd0aFNpemluZyhjb25zdCBTdHlsZTo6QnVpbGRlclN0YXRlJiBidWls
ZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBMZW5ndGggQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydExlbmd0aFNpemluZyhjb25zdCBCdWlsZGVyU3RhdGUmIGJ1aWxkZXJT
dGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVl
ID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBzd2l0Y2ggKHByaW1p
dGl2ZVZhbHVlLnZhbHVlSUQoKSkgewpAQCAtMjUwLDE0ICsyNTEsMTQgQEAgaW5saW5lIExlbmd0
aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGhTaXppbmcoY29uc3QgU3R5bGU6
OkJ1aWxkZXJTdGEKICAgICB9CiB9CiAKLWlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0TGVuZ3RoTWF4U2l6aW5nKGNvbnN0IFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIExlbmd0aCBCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0TGVuZ3RoTWF4U2l6aW5nKGNvbnN0IEJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkKICAgICAg
ICAgcmV0dXJuIExlbmd0aChVbmRlZmluZWQpOwogICAgIHJldHVybiBjb252ZXJ0TGVuZ3RoU2l6
aW5nKGJ1aWxkZXJTdGF0ZSwgdmFsdWUpOwogfQogCi1pbmxpbmUgVGFiU2l6ZSBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRUYWJTaXplKGNvbnN0IFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFRhYlNpemUgQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydFRhYlNpemUoY29uc3QgQnVpbGRlclN0YXRlJiBidWlsZGVyU3Rh
dGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9
IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZh
bHVlLmlzTnVtYmVyKCkpCkBAIC0yNjYsMTMgKzI2NywxMyBAQCBpbmxpbmUgVGFiU2l6ZSBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUYWJTaXplKGNvbnN0IFN0eWxlOjpCdWlsZGVyU3Rh
dGUmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgVCBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRDb21wdXRlZExlbmd0aChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVy
U3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBUIEJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRDb21wdXRlZExlbmd0aChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3Qg
Q1NTVmFsdWUmIHZhbHVlKQogewogICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpLmNvbXB1dGVMZW5ndGg8VD4oYnVpbGRlclN0YXRlLmNzc1RvTGVuZ3RoQ29udmVy
c2lvbkRhdGEoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgVCBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMaW5lV2lkdGgoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgVCBCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0TGluZVdpZHRoKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBD
U1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUudmFs
dWVJRCgpKSB7CkBAIC0zMDIsNyArMzAzLDcgQEAgaW5saW5lIFQgU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0TGluZVdpZHRoKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGEKICAg
ICB9CiB9CiAKLWlubGluZSBmbG9hdCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTcGFj
aW5nKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZh
bHVlKQoraW5saW5lIGZsb2F0IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTcGFjaW5nKEJ1aWxk
ZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0
byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwog
ICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpCkBAIC0z
MTQsNyArMzE1LDcgQEAgaW5saW5lIGZsb2F0IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dFNwYWNpbmcoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclMKICAgICByZXR1cm4gcHJpbWl0
aXZlVmFsdWUuY29tcHV0ZUxlbmd0aDxmbG9hdD4oY29udmVyc2lvbkRhdGEpOwogfQogCi1pbmxp
bmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRvUmFkaXVzTGVuZ3RoKENT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjb25zdCBDU1NQcmltaXRp
dmVWYWx1ZSYgdmFsdWUpCitpbmxpbmUgTGVuZ3RoIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRU
b1JhZGl1c0xlbmd0aChDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwg
Y29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS5pc1BlcmNl
bnRhZ2UoKSkKICAgICAgICAgcmV0dXJuIExlbmd0aCh2YWx1ZS5kb3VibGVWYWx1ZSgpLCBQZXJj
ZW50KTsKQEAgLTMyMyw3ICszMjQsNyBAQCBpbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydFRvUmFkaXVzTGVuZ3RoKENTU1RvTGVuZ3RoQ29udmVyc2lvbgogICAgIHJl
dHVybiB2YWx1ZS5jb21wdXRlTGVuZ3RoPExlbmd0aD4oY29udmVyc2lvbkRhdGEpOwogfQogCi1p
bmxpbmUgTGVuZ3RoU2l6ZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSYWRpdXMoU3R5
bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitp
bmxpbmUgTGVuZ3RoU2l6ZSBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmFkaXVzKEJ1aWxkZXJT
dGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byog
cGFpciA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkucGFpclZhbHVlKCk7CiAg
ICAgaWYgKCFwYWlyIHx8ICFwYWlyLT5maXJzdCgpIHx8ICFwYWlyLT5zZWNvbmQoKSkKQEAgLTM0
MCw3ICszNDEsNyBAQCBpbmxpbmUgTGVuZ3RoU2l6ZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRSYWRpdXMoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbAogICAgIHJldHVybiByYWRpdXM7
CiB9CiAKLWlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG8xMDBQ
ZXJjZW50TWludXNMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCitpbmxpbmUgTGVuZ3RoIEJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0aChjb25zdCBMZW5n
dGgmIGxlbmd0aCkKIHsKICAgICBpZiAobGVuZ3RoLmlzUGVyY2VudCgpKQogICAgICAgICByZXR1
cm4gTGVuZ3RoKDEwMCAtIGxlbmd0aC52YWx1ZSgpLCBQZXJjZW50KTsKQEAgLTM1NCwxOCArMzU1
LDE4IEBAIGlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG8xMDBQ
ZXJjZW50TWludXNMZW5ndGgoY29uc3QgTGVuZ3RoCiAgICAgcmV0dXJuIExlbmd0aChDYWxjdWxh
dGlvblZhbHVlOjpjcmVhdGUoV1RGTW92ZShvcCksIFZhbHVlUmFuZ2VBbGwpKTsKIH0KIAotaW5s
aW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbkNvbXBvbmVu
dFgoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFs
dWUpCitpbmxpbmUgTGVuZ3RoIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbkNvbXBv
bmVudFgoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkK
IHsKICAgICByZXR1cm4gY29udmVydFBvc2l0aW9uQ29tcG9uZW50PENTU1ZhbHVlTGVmdCwgQ1NT
VmFsdWVSaWdodD4oYnVpbGRlclN0YXRlLCBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFs
dWUpKTsKIH0KIAotaW5saW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQ
b3NpdGlvbkNvbXBvbmVudFkoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25z
dCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgTGVuZ3RoIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRQb3NpdGlvbkNvbXBvbmVudFkoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENT
U1ZhbHVlJiB2YWx1ZSkKIHsKICAgICByZXR1cm4gY29udmVydFBvc2l0aW9uQ29tcG9uZW50PENT
U1ZhbHVlVG9wLCBDU1NWYWx1ZUJvdHRvbT4oYnVpbGRlclN0YXRlLCBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpKTsKIH0KIAogdGVtcGxhdGU8Q1NTVmFsdWVJRCBjc3NWYWx1ZUZv
cjAsIENTU1ZhbHVlSUQgY3NzVmFsdWVGb3IxMDA+Ci1pbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydFBvc2l0aW9uQ29tcG9uZW50KFN0eWxlOjpCdWlsZGVyU3RhdGUm
IGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlKQoraW5saW5lIExl
bmd0aCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25lbnQoQnVpbGRlclN0
YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSkKIHsKICAg
ICBMZW5ndGggbGVuZ3RoOwogCkBAIC00MDAsNyArNDAxLDcgQEAgaW5saW5lIExlbmd0aCBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudChTdHlsZTo6QnVpbGRl
clN0YXQKICAgICByZXR1cm4gbGVuZ3RoOwogfQogCi1pbmxpbmUgTGVuZ3RoUG9pbnQgU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0T2JqZWN0UG9zaXRpb24oU3R5bGU6OkJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgTGVuZ3RoUG9p
bnQgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE9iamVjdFBvc2l0aW9uKEJ1aWxkZXJTdGF0ZSYg
YnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0
aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIFBhaXIq
IHBhaXIgPSBwcmltaXRpdmVWYWx1ZS5wYWlyVmFsdWUoKTsKQEAgLTQxMyw3ICs0MTQsNyBAQCBp
bmxpbmUgTGVuZ3RoUG9pbnQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0T2JqZWN0UG9z
aXRpb24oU3R5bGU6OkJ1aWxkZXJTdAogICAgIHJldHVybiBMZW5ndGhQb2ludChsZW5ndGhYLCBs
ZW5ndGhZKTsKIH0KIAotaW5saW5lIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dERlY29yYXRpb24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYs
IGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+
IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0RGVjb3JhdGlvbihCdWlsZGVyU3RhdGUmLCBj
b25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byByZXN1bHQgPSBSZW5kZXJTdHlsZTo6
aW5pdGlhbFRleHREZWNvcmF0aW9uKCk7CiAgICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUp
KSB7CkBAIC00MjQsMjAgKzQyNSwyMCBAQCBpbmxpbmUgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9u
PiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0RGVjb3JhdGlvbihTdAogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIFQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0TnVtYmVyKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitp
bmxpbmUgVCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TnVtYmVyKEJ1aWxkZXJTdGF0ZSYsIGNv
bnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhbHVlKS52YWx1ZTxUPihDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgVCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnROdW1iZXJPckF1dG8oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBj
b25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgVCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
TnVtYmVyT3JBdXRvKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYg
dmFsdWUpCiB7CiAgICAgaWYgKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFs
dWVJRCgpID09IENTU1ZhbHVlQXV0bykKICAgICAgICAgcmV0dXJuIC0xOwogICAgIHJldHVybiBj
b252ZXJ0TnVtYmVyPFQ+KGJ1aWxkZXJTdGF0ZSwgdmFsdWUpOwogfQogCi1pbmxpbmUgc2hvcnQg
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0V2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcyhT
dHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHNob3J0
IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRXZWJraXRIeXBoZW5hdGVMaW1pdExpbmVzKEJ1aWxk
ZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVW
YWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgaWYgKHByaW1p
dGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vTGltaXQpCkBAIC00NDYsNyArNDQ3LDcg
QEAgaW5saW5lIHNob3J0IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFdlYmtpdEh5cGhl
bmF0ZUxpbWl0TGluZXMoU3R5bGU6OkJ1aWwKIH0KIAogdGVtcGxhdGU8Q1NTUHJvcGVydHlJRCBw
cm9wZXJ0eT4KLWlubGluZSBOaW5lUGllY2VJbWFnZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRCb3JkZXJJbWFnZShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1Zh
bHVlJiB2YWx1ZSkKK2lubGluZSBOaW5lUGllY2VJbWFnZSBCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0Qm9yZGVySW1hZ2UoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1
ZSkKIHsKICAgICBOaW5lUGllY2VJbWFnZSBpbWFnZTsKICAgICBidWlsZGVyU3RhdGUuc3R5bGVN
YXAoKS5tYXBOaW5lUGllY2VJbWFnZShwcm9wZXJ0eSwgJnZhbHVlLCBpbWFnZSk7CkBAIC00NTQs
NyArNDU1LDcgQEAgaW5saW5lIE5pbmVQaWVjZUltYWdlIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydEJvcmRlckltYWdlKFN0eWxlOjpCdWlsZGVyU3QKIH0KIAogdGVtcGxhdGU8Q1NTUHJv
cGVydHlJRCBwcm9wZXJ0eT4KLWlubGluZSBOaW5lUGllY2VJbWFnZSBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRCb3JkZXJNYXNrKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0
ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIE5pbmVQaWVjZUltYWdlIEJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRCb3JkZXJNYXNrKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1
ZSYgdmFsdWUpCiB7CiAgICAgTmluZVBpZWNlSW1hZ2UgaW1hZ2UoTmluZVBpZWNlSW1hZ2U6OlR5
cGU6Ok1hc2spOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZU1hcCgpLm1hcE5pbmVQaWVjZUltYWdl
KHByb3BlcnR5LCAmdmFsdWUsIGltYWdlKTsKQEAgLTQ2MiwxMiArNDYzLDEyIEBAIGlubGluZSBO
aW5lUGllY2VJbWFnZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRCb3JkZXJNYXNrKFN0
eWxlOjpCdWlsZGVyU3RhCiB9CiAKIHRlbXBsYXRlPENTU1Byb3BlcnR5SUQ+Ci1pbmxpbmUgUmVm
UHRyPFN0eWxlSW1hZ2U+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFN0eWxlSW1hZ2Uo
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxp
bmUgUmVmUHRyPFN0eWxlSW1hZ2U+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTdHlsZUltYWdl
KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgcmV0
dXJuIGJ1aWxkZXJTdGF0ZS5jcmVhdGVTdHlsZUltYWdlKHZhbHVlKTsKIH0KIAotaW5saW5lIFRy
YW5zZm9ybU9wZXJhdGlvbnMgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VHJhbnNmb3Jt
KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVl
KQoraW5saW5lIFRyYW5zZm9ybU9wZXJhdGlvbnMgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRy
YW5zZm9ybShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVl
KQogewogICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczsKICAgICB0cmFuc2Zvcm1z
Rm9yVmFsdWUodmFsdWUsIGJ1aWxkZXJTdGF0ZS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCks
IG9wZXJhdGlvbnMpOwpAQCAtNDc1LDcgKzQ3Niw3IEBAIGlubGluZSBUcmFuc2Zvcm1PcGVyYXRp
b25zIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRyYW5zZm9ybShTdHlsZTo6QnVpbGRl
CiB9CiAKICNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6dXBkYXRlQ29sb3JTY2hlbWUoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHBy
aW1pdGl2ZVZhbHVlLCBTdHlsZUNvbG9yU2NoZW1lJiBjb2xvclNjaGVtZSkKK2lubGluZSB2b2lk
IEJ1aWxkZXJDb252ZXJ0ZXI6OnVwZGF0ZUNvbG9yU2NoZW1lKGNvbnN0IENTU1ByaW1pdGl2ZVZh
bHVlJiBwcmltaXRpdmVWYWx1ZSwgU3R5bGVDb2xvclNjaGVtZSYgY29sb3JTY2hlbWUpCiB7CiAg
ICAgQVNTRVJUKHByaW1pdGl2ZVZhbHVlLmlzVmFsdWVJRCgpKTsKIApAQCAtNDk4LDcgKzQ5OSw3
IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6dXBkYXRlQ29sb3JTY2hlbWUo
Y29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHByCiAgICAgfQogfQogCi1pbmxpbmUgU3R5bGVDb2xv
clNjaGVtZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDb2xvclNjaGVtZShTdHlsZTo6
QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFN0eWxlQ29sb3JT
Y2hlbWUgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENvbG9yU2NoZW1lKEJ1aWxkZXJTdGF0ZSYs
IGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBTdHlsZUNvbG9yU2NoZW1lIGNvbG9yU2No
ZW1lOwogCkBAIC01MTYsMjYgKzUxNywyNiBAQCBpbmxpbmUgU3R5bGVDb2xvclNjaGVtZSBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDb2xvclNjaGVtZShTdHlsZTo6QnVpbGRlcgogfQog
I2VuZGlmCiAKLWlubGluZSBTdHJpbmcgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3Ry
aW5nKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUg
U3RyaW5nIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTdHJpbmcoQnVpbGRlclN0YXRlJiwgY29u
c3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpLnN0cmluZ1ZhbHVlKCk7CiB9CiAKLWlubGluZSBTdHJpbmcgU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0U3RyaW5nT3JBdXRvKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFN0cmluZyBCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0U3RyaW5nT3JBdXRvKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
LCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykKICAgICAgICAgcmV0dXJu
IG51bGxBdG9tKCk7CiAgICAgcmV0dXJuIGNvbnZlcnRTdHJpbmcoYnVpbGRlclN0YXRlLCB2YWx1
ZSk7CiB9CiAKLWlubGluZSBTdHJpbmcgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3Ry
aW5nT3JOb25lKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFs
dWUmIHZhbHVlKQoraW5saW5lIFN0cmluZyBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3RyaW5n
T3JOb25lKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUp
CiB7CiAgICAgaWYgKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgp
ID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgcmV0dXJuIG51bGxBdG9tKCk7CiAgICAgcmV0dXJu
IGNvbnZlcnRTdHJpbmcoYnVpbGRlclN0YXRlLCB2YWx1ZSk7CiB9CiAKLWlubGluZSBPcHRpb25T
ZXQ8VGV4dEVtcGhhc2lzUG9zaXRpb24+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6dmFsdWVUb0Vt
cGhhc2lzUG9zaXRpb24oY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHByaW1pdGl2ZVZhbHVlKQor
aW5saW5lIE9wdGlvblNldDxUZXh0RW1waGFzaXNQb3NpdGlvbj4gQnVpbGRlckNvbnZlcnRlcjo6
dmFsdWVUb0VtcGhhc2lzUG9zaXRpb24oY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHByaW1pdGl2
ZVZhbHVlKQogewogICAgIEFTU0VSVChwcmltaXRpdmVWYWx1ZS5pc1ZhbHVlSUQoKSk7CiAKQEAg
LTU1Niw3ICs1NTcsNyBAQCBpbmxpbmUgT3B0aW9uU2V0PFRleHRFbXBoYXNpc1Bvc2l0aW9uPiBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OnZhbHVlVG9FbXBoYXNpc1BvcwogICAgIHJldHVybiBSZW5k
ZXJTdHlsZTo6aW5pdGlhbFRleHRFbXBoYXNpc1Bvc2l0aW9uKCk7CiB9CiAKLWlubGluZSBPcHRp
b25TZXQ8VGV4dEVtcGhhc2lzUG9zaXRpb24+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dFRleHRFbXBoYXNpc1Bvc2l0aW9uKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1
ZSYgdmFsdWUpCitpbmxpbmUgT3B0aW9uU2V0PFRleHRFbXBoYXNpc1Bvc2l0aW9uPiBCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0VGV4dEVtcGhhc2lzUG9zaXRpb24oQnVpbGRlclN0YXRlJiwgY29u
c3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFs
dWUpKQogICAgICAgICByZXR1cm4gdmFsdWVUb0VtcGhhc2lzUG9zaXRpb24oZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKSk7CkBAIC01NjcsNyArNTY4LDcgQEAgaW5saW5lIE9wdGlv
blNldDxUZXh0RW1waGFzaXNQb3NpdGlvbj4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
VGV4dEVtcGhhc2kKICAgICByZXR1cm4gcG9zaXRpb247CiB9CiAKLWlubGluZSBUZXh0QWxpZ25N
b2RlIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRBbGlnbihTdHlsZTo6QnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBUZXh0
QWxpZ25Nb2RlIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0QWxpZ24oQnVpbGRlclN0YXRl
JiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmlt
aXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgQVNT
RVJUKHByaW1pdGl2ZVZhbHVlLmlzVmFsdWVJRCgpKTsKQEAgLTU4Myw3ICs1ODQsNyBAQCBpbmxp
bmUgVGV4dEFsaWduTW9kZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0QWxpZ24o
U3R5bGU6OkJ1aWxkZXJTdGF0ZQogICAgIHJldHVybiBwYXJlbnRTdHlsZS50ZXh0QWxpZ24oKTsK
IH0KIAotaW5saW5lIFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4gU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0Q2xpcFBhdGgoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBj
b25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgUmVmUHRyPENsaXBQYXRoT3BlcmF0aW9uPiBC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q2xpcFBhdGgoQnVpbGRlclN0YXRlJiBidWlsZGVyU3Rh
dGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKSkgewogICAgICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CkBAIC02MjcsNyArNjI4LDcgQEAgaW5saW5lIFJlZlB0
cjxDbGlwUGF0aE9wZXJhdGlvbj4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q2xpcFBh
dGgoU3R5bGU6OkIKICAgICByZXR1cm4gb3BlcmF0aW9uOwogfQogCi1pbmxpbmUgUmVzaXplIFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFJlc2l6ZShTdHlsZTo6QnVpbGRlclN0YXRlJiBi
dWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBSZXNpemUgQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydFJlc2l6ZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29u
c3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKIApAQCAtNjQwLDcgKzY0MSw3IEBAIGlubGlu
ZSBSZXNpemUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmVzaXplKFN0eWxlOjpCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTCiAgICAgcmV0dXJuIHJlc2l6ZTsKIH0KIAotaW5saW5lIGludCBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVlUmVwZXRpdGlvbihTdHlsZTo6QnVp
bGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIGludCBCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0TWFycXVlZVJlcGV0aXRpb24oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NT
VmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgp
ID09IENTU1ZhbHVlSW5maW5pdGUpCkBAIC02NTAsNyArNjUxLDcgQEAgaW5saW5lIGludCBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVlUmVwZXRpdGlvbihTdHlsZTo6QnVpbGRl
clN0YXRlJiwKICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUuaW50VmFsdWUoKTsKIH0KIAotaW5s
aW5lIGludCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVlU3BlZWQoU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBpbnQgQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVTcGVlZChCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NW
YWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGludCBzcGVlZCA9IDg1OwpAQCAtNjc5LDcgKzY4
MCw3IEBAIGlubGluZSBpbnQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TWFycXVlZVNw
ZWVkKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zCiAgICAgcmV0dXJuIHNwZWVkOwogfQogCi1p
bmxpbmUgUmVmPFF1b3Rlc0RhdGE+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFF1b3Rl
cyhTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFJl
ZjxRdW90ZXNEYXRhPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UXVvdGVzKEJ1aWxkZXJTdGF0
ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKSkgewogICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKQEAgLTcwMiwxMyArNzAzLDEzIEBA
IGlubGluZSBSZWY8UXVvdGVzRGF0YT4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UXVv
dGVzKFN0eWxlOjpCdWlsZGVyU3RhdGUmCiAgICAgcmV0dXJuIFF1b3Rlc0RhdGE6OmNyZWF0ZShx
dW90ZXMpOwogfQogCi1pbmxpbmUgVGV4dFVuZGVybGluZVBvc2l0aW9uIFN0eWxlQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydFRleHRVbmRlcmxpbmVQb3NpdGlvbihTdHlsZTo6QnVpbGRlclN0YXRl
JiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFRleHRVbmRlcmxpbmVQb3NpdGlvbiBC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dFVuZGVybGluZVBvc2l0aW9uKEJ1aWxkZXJTdGF0
ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBBU1NFUlQoaXM8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhbHVlKSk7CiAgICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2
YWx1ZSk7CiB9CiAKLWlubGluZSBUZXh0VW5kZXJsaW5lT2Zmc2V0IFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydFRleHRVbmRlcmxpbmVPZmZzZXQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgVGV4dFVuZGVybGluZU9m
ZnNldCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dFVuZGVybGluZU9mZnNldChCdWlsZGVy
U3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIEFTU0VS
VChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKTsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1
ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CkBAIC03MjIsNyArNzIzLDcg
QEAgaW5saW5lIFRleHRVbmRlcmxpbmVPZmZzZXQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0VGV4dFVuZGVybGluZU9mZnNldChTdHkKICAgICB9CiB9CiAKLWlubGluZSBUZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0RGVjb3JhdGlv
blRoaWNrbmVzcyhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1Zh
bHVlJiB2YWx1ZSkKK2lubGluZSBUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyBCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0VGV4dERlY29yYXRpb25UaGlja25lc3MoQnVpbGRlclN0YXRlJiBidWlsZGVy
U3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBBU1NFUlQoaXM8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKSk7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwpAQCAtNzM4LDcgKzczOSw3IEBAIGlubGluZSBUZXh0
RGVjb3JhdGlvblRoaWNrbmVzcyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0RGVj
b3JhdGlvblRoaWNrCiAgICAgfQogfQogCi1pbmxpbmUgUmVmUHRyPFN0eWxlUmVmbGVjdGlvbj4g
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmVmbGVjdGlvbihTdHlsZTo6QnVpbGRlclN0
YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBSZWZQdHI8
U3R5bGVSZWZsZWN0aW9uPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmVmbGVjdGlvbihCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlm
IChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CiAgICAgICAgIEFTU0VSVChkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpOwpA
QCAtNzU4LDcgKzc1OSw3IEBAIGlubGluZSBSZWZQdHI8U3R5bGVSZWZsZWN0aW9uPiBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWZsZWN0aW9uKFN0eWxlOjpCCiAgICAgcmV0dXJuIHJl
ZmxlY3Rpb247CiB9CiAKLWlubGluZSBJbnRTaXplIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydEluaXRpYWxMZXR0ZXIoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2
YWx1ZSkKK2lubGluZSBJbnRTaXplIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRJbml0aWFsTGV0
dGVyKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBw
cmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAKQEAg
LTc3Myw3ICs3NzQsNyBAQCBpbmxpbmUgSW50U2l6ZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRJbml0aWFsTGV0dGVyKFN0eWxlOjpCdWlsZGVyU3RhdGUmLAogICAgIHJldHVybiBJbnRT
aXplKHBhaXItPmZpcnN0KCktPmludFZhbHVlKCksIHBhaXItPnNlY29uZCgpLT5pbnRWYWx1ZSgp
KTsKIH0KIAotaW5saW5lIGZsb2F0IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRT
dHJva2VXaWR0aChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1Zh
bHVlJiB2YWx1ZSkKK2lubGluZSBmbG9hdCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dFN0
cm9rZVdpZHRoKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFs
dWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpOwogCkBAIC04MDMsNyArODA0LDcgQEAgaW5saW5lIGZsb2F0IFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRTdHJva2VXaWR0aChTdHlsZTo6QnVpbGRlclN0YXRl
JgogICAgIHJldHVybiB3aWR0aDsKIH0KIAotaW5saW5lIE9wdGlvblNldDxMaW5lQm94Q29udGFp
bj4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGluZUJveENvbnRhaW4oU3R5bGU6OkJ1
aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBPcHRpb25TZXQ8TGlu
ZUJveENvbnRhaW4+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMaW5lQm94Q29udGFpbihCdWls
ZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSkpIHsKICAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7CkBAIC04MTMsNyArODE0
LDcgQEAgaW5saW5lIE9wdGlvblNldDxMaW5lQm94Q29udGFpbj4gU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0TGluZUJveENvbnRhaW4oU3QKICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTTGlu
ZUJveENvbnRhaW5WYWx1ZT4odmFsdWUpLnZhbHVlKCk7CiB9CiAKLWlubGluZSBPcHRpb25TZXQ8
VGV4dERlY29yYXRpb25Ta2lwPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OnZhbHVlVG9EZWNvcmF0
aW9uU2tpcChjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgcHJpbWl0aXZlVmFsdWUpCitpbmxpbmUg
T3B0aW9uU2V0PFRleHREZWNvcmF0aW9uU2tpcD4gQnVpbGRlckNvbnZlcnRlcjo6dmFsdWVUb0Rl
Y29yYXRpb25Ta2lwKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1ZSkKIHsK
ICAgICBBU1NFUlQocHJpbWl0aXZlVmFsdWUuaXNWYWx1ZUlEKCkpOwogCkBAIC04MzQsNyArODM1
LDcgQEAgaW5saW5lIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvblNraXA+IFN0eWxlQnVpbGRlckNv
bnZlcnRlcjo6dmFsdWVUb0RlY29yYXRpb25Ta2kKICAgICByZXR1cm4gT3B0aW9uU2V0PFRleHRE
ZWNvcmF0aW9uU2tpcD4geyB9OwogfQogCi1pbmxpbmUgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9u
U2tpcD4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dERlY29yYXRpb25Ta2lwKFN0
eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgT3B0aW9u
U2V0PFRleHREZWNvcmF0aW9uU2tpcD4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNv
cmF0aW9uU2tpcChCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAg
aWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiB2YWx1ZVRv
RGVjb3JhdGlvblNraXAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSk7CkBAIC04
NTAsNyArODUxLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzSW1hZ2VTaGFwZShjb25zdCBDU1NW
YWx1ZSYgdmFsdWUpCiAgICAgcmV0dXJuIGlzPENTU0ltYWdlVmFsdWU+KHZhbHVlKSB8fCBpczxD
U1NJbWFnZVNldFZhbHVlPih2YWx1ZSkgfHwgaXM8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZT4odmFs
dWUpOwogfQogCi1pbmxpbmUgUmVmUHRyPFNoYXBlVmFsdWU+IFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFNoYXBlVmFsdWUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBD
U1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgUmVmUHRyPFNoYXBlVmFsdWU+IEJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRTaGFwZVZhbHVlKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1
ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKICAg
ICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgp
ID09IENTU1ZhbHVlTm9uZSk7CkBAIC04ODksNyArODkwLDcgQEAgaW5saW5lIFJlZlB0cjxTaGFw
ZVZhbHVlPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTaGFwZVZhbHVlKFN0eWxlOjpC
dWlsZGUKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAKLWlubGluZSBTY3JvbGxTbmFw
VHlwZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTY3JvbGxTbmFwVHlwZShTdHlsZTo6
QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFNjcm9sbFNuYXBU
eXBlIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTY3JvbGxTbmFwVHlwZShCdWlsZGVyU3RhdGUm
LCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgU2Nyb2xsU25hcFR5cGUgdHlwZTsKICAg
ICBhdXRvJiB2YWx1ZXMgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKTsKQEAgLTkxNCw3
ICs5MTUsNyBAQCBpbmxpbmUgU2Nyb2xsU25hcFR5cGUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0U2Nyb2xsU25hcFR5cGUoU3R5bGU6OkJ1aWxkZQogICAgIHJldHVybiB0eXBlOwogfQog
Ci1pbmxpbmUgU2Nyb2xsU25hcEFsaWduIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNj
cm9sbFNuYXBBbGlnbihTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVl
KQoraW5saW5lIFNjcm9sbFNuYXBBbGlnbiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2Nyb2xs
U25hcEFsaWduKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBh
dXRvJiB2YWx1ZXMgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKTsKICAgICBTY3JvbGxT
bmFwQWxpZ24gYWxpZ25tZW50OwpAQCAtOTI4LDcgKzkyOSw3IEBAIGlubGluZSBTY3JvbGxTbmFw
QWxpZ24gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2Nyb2xsU25hcEFsaWduKFN0eWxl
OjpCdWlsCiAKICNlbmRpZgogCi1pbmxpbmUgR3JpZExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXI6OmNyZWF0ZUdyaWRUcmFja0JyZWFkdGgoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHByaW1p
dGl2ZVZhbHVlLCBTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgR3Jp
ZExlbmd0aCBCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tCcmVhZHRoKGNvbnN0IENT
U1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1ZSwgQnVpbGRlclN0YXRlJiBidWlsZGVyU3Rh
dGUpCiB7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU1pbkNv
bnRlbnQgfHwgcHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlV2Via2l0TWluQ29u
dGVudCkKICAgICAgICAgcmV0dXJuIExlbmd0aChNaW5Db250ZW50KTsKQEAgLTk0Myw3ICs5NDQs
NyBAQCBpbmxpbmUgR3JpZExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRU
cmFja0JyZWFkdGgoY29uc3QgQ1NTUHJpbWl0aQogICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZS5j
b252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9u
IHwgQ2FsY3VsYXRlZENvbnZlcnNpb24gfCBBdXRvQ29udmVyc2lvbj4oYnVpbGRlclN0YXRlLmNz
c1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKSk7CiB9CiAKLWlubGluZSBHcmlkVHJhY2tTaXplIFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFRyYWNrU2l6ZShjb25zdCBDU1NWYWx1ZSYg
dmFsdWUsIFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSBHcmlkVHJh
Y2tTaXplIEJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFja1NpemUoY29uc3QgQ1NTVmFs
dWUmIHZhbHVlLCBCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBpZiAoaXM8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIEdyaWRUcmFja1NpemUoY3Jl
YXRlR3JpZFRyYWNrQnJlYWR0aChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLCBi
dWlsZGVyU3RhdGUpKTsKQEAgLTk1NCw3ICs5NTUsNyBAQCBpbmxpbmUgR3JpZFRyYWNrU2l6ZSBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFja1NpemUoY29uc3QgQ1NTVmFsdWUm
CiAgICAgaWYgKGZ1bmN0aW9uLmxlbmd0aCgpID09IDEpCiAgICAgICAgIHJldHVybiBHcmlkVHJh
Y2tTaXplKGNyZWF0ZUdyaWRUcmFja0JyZWFkdGgoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KCpmdW5jdGlvbi5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDApKSwgYnVpbGRlclN0YXRlKSwgRml0
Q29udGVudFRyYWNrU2l6aW5nKTsKIAotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKGZ1bmN0aW9uLmxlbmd0aCgpID09IDIpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04oZnVuY3Rpb24ubGVuZ3RoKCkgPT0gMik7CiAgICAgR3JpZExlbmd0
aCBtaW5UcmFja0JyZWFkdGgoY3JlYXRlR3JpZFRyYWNrQnJlYWR0aChkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4oKmZ1bmN0aW9uLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMCkpLCBidWlsZGVy
U3RhdGUpKTsKICAgICBHcmlkTGVuZ3RoIG1heFRyYWNrQnJlYWR0aChjcmVhdGVHcmlkVHJhY2tC
cmVhZHRoKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqZnVuY3Rpb24uaXRlbVdpdGhvdXRC
b3VuZHNDaGVjaygxKSksIGJ1aWxkZXJTdGF0ZSkpOwogICAgIHJldHVybiBHcmlkVHJhY2tTaXpl
KG1pblRyYWNrQnJlYWR0aCwgbWF4VHJhY2tCcmVhZHRoKTsKQEAgLTk3Myw3ICs5NzQsNyBAQCBz
dGF0aWMgdm9pZCBjcmVhdGVHcmlkTGluZU5hbWVzTGlzdChjb25zdCBDU1NWYWx1ZSYgdmFsdWUs
IHVuc2lnbmVkIGN1cnJlbnROYW1lZAogICAgIH0KIH0KIAotc3RydWN0IFN0eWxlQnVpbGRlckNv
bnZlcnRlcjo6VHJhY2tzRGF0YSB7CitzdHJ1Y3QgQnVpbGRlckNvbnZlcnRlcjo6VHJhY2tzRGF0
YSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVHJhY2tzRGF0YSk7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIFRyYWNrc0RhdGEoKSA9IGRlZmF1bHQ7CkBAIC05ODgs
NyArOTg5LDcgQEAgcHVibGljOgogICAgIEF1dG9SZXBlYXRUeXBlIG1fYXV0b1JlcGVhdFR5cGUg
eyBSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvUmVwZWF0VHlwZSgpIH07CiB9OwogCi1pbmxp
bmUgYm9vbCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFja0xpc3QoY29uc3Qg
Q1NTVmFsdWUmIHZhbHVlLCBUcmFja3NEYXRhJiB0cmFja3NEYXRhLCBTdHlsZTo6QnVpbGRlclN0
YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgYm9vbCBCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVH
cmlkVHJhY2tMaXN0KGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgVHJhY2tzRGF0YSYgdHJhY2tzRGF0
YSwgQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgLy8gSGFuZGxlICdub25lJy4K
ICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKQEAgLTEwNDQsNyArMTA0NSw3
IEBAIGlubGluZSBib29sIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFRyYWNrTGlz
dChjb25zdCBDU1NWYWx1ZSYgdmFsdWUsIFRyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWlubGlu
ZSBib29sIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFBvc2l0aW9uKGNvbnN0IENT
U1ZhbHVlJiB2YWx1ZSwgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbikKK2lubGluZSBib29sIEJ1aWxk
ZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRQb3NpdGlvbihjb25zdCBDU1NWYWx1ZSYgdmFsdWUsIEdy
aWRQb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAgICAgLy8gV2UgYWNjZXB0IHRoZSBzcGVjaWZpY2F0
aW9uJ3MgZ3JhbW1hcjoKICAgICAvLyBhdXRvIHwgPGN1c3RvbS1pZGVudD4gfCBbIDxpbnRlZ2Vy
PiAmJiA8Y3VzdG9tLWlkZW50Pj8gXSB8IFsgc3BhbiAmJiBbIDxpbnRlZ2VyPiB8fCA8Y3VzdG9t
LWlkZW50PiBdIF0KQEAgLTEwOTQsNyArMTA5NSw3IEBAIGlubGluZSBib29sIFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFBvc2l0aW9uKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgR3Jp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y3JlYXRlSW1wbGljaXROYW1lZEdyaWRMaW5lc0Zyb21HcmlkQXJlYShjb25zdCBOYW1lZEdy
aWRBcmVhTWFwJiBuYW1lZEdyaWRBcmVhcywgTmFtZWRHcmlkTGluZXNNYXAmIG5hbWVkR3JpZExp
bmVzLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQoraW5saW5lIHZvaWQgQnVp
bGRlckNvbnZlcnRlcjo6Y3JlYXRlSW1wbGljaXROYW1lZEdyaWRMaW5lc0Zyb21HcmlkQXJlYShj
b25zdCBOYW1lZEdyaWRBcmVhTWFwJiBuYW1lZEdyaWRBcmVhcywgTmFtZWRHcmlkTGluZXNNYXAm
IG5hbWVkR3JpZExpbmVzLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQogewog
ICAgIGZvciAoYXV0byYgYXJlYSA6IG5hbWVkR3JpZEFyZWFzKSB7CiAgICAgICAgIEdyaWRTcGFu
IGFyZWFTcGFuID0gZGlyZWN0aW9uID09IEZvclJvd3MgPyBhcmVhLnZhbHVlLnJvd3MgOiBhcmVh
LnZhbHVlLmNvbHVtbnM7CkBAIC0xMTExLDcgKzExMTIsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUltcGxpY2l0TmFtZWRHcmlkTGluZXNGcm9tR3JpZEFyZWEo
Y29ucwogICAgIH0KIH0KIAotaW5saW5lIFZlY3RvcjxHcmlkVHJhY2tTaXplPiBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRHcmlkVHJhY2tTaXplTGlzdChTdHlsZTo6QnVpbGRlclN0YXRl
JiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBWZWN0b3I8R3Jp
ZFRyYWNrU2l6ZT4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRUcmFja1NpemVMaXN0KEJ1
aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAg
QVNTRVJUKHZhbHVlLmlzVmFsdWVMaXN0KCkpOwogICAgIGF1dG8mIHZhbHVlTGlzdCA9IGRvd25j
YXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpOwpAQCAtMTEyNiwxMiArMTEyNywxMiBAQCBpbmxpbmUg
VmVjdG9yPEdyaWRUcmFja1NpemU+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRU
cmFja1NpemVMaXN0KFN0eQogICAgIHJldHVybiB0cmFja1NpemVzOwogfQogCi1pbmxpbmUgR3Jp
ZFRyYWNrU2l6ZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHcmlkVHJhY2tTaXplKFN0
eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQor
aW5saW5lIEdyaWRUcmFja1NpemUgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRUcmFja1Np
emUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsK
ICAgICByZXR1cm4gY3JlYXRlR3JpZFRyYWNrU2l6ZSh2YWx1ZSwgYnVpbGRlclN0YXRlKTsKIH0K
IAotaW5saW5lIE9wdGlvbmFsPEdyaWRQb3NpdGlvbj4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0R3JpZFBvc2l0aW9uKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYg
dmFsdWUpCitpbmxpbmUgT3B0aW9uYWw8R3JpZFBvc2l0aW9uPiBCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0R3JpZFBvc2l0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkK
IHsKICAgICBHcmlkUG9zaXRpb24gZ3JpZFBvc2l0aW9uOwogICAgIGlmIChjcmVhdGVHcmlkUG9z
aXRpb24odmFsdWUsIGdyaWRQb3NpdGlvbikpCkBAIC0xMTM5LDcgKzExNDAsNyBAQCBpbmxpbmUg
T3B0aW9uYWw8R3JpZFBvc2l0aW9uPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHcmlk
UG9zaXRpb24oU3R5bGU6OgogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKLWlubGluZSBH
cmlkQXV0b0Zsb3cgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R3JpZEF1dG9GbG93KFN0
eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgR3JpZEF1
dG9GbG93IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHcmlkQXV0b0Zsb3coQnVpbGRlclN0YXRl
JiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIGxpc3QgPSBkb3duY2FzdDxD
U1NWYWx1ZUxpc3Q+KHZhbHVlKTsKICAgICBpZiAoIWxpc3QubGVuZ3RoKCkpCkBAIC0xMTc3LDcg
KzExNzgsNyBAQCBpbmxpbmUgR3JpZEF1dG9GbG93IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydEdyaWRBdXRvRmxvdyhTdHlsZTo6QnVpbGRlclN0YQogICAgIHJldHVybiBhdXRvRmxvdzsK
IH0KIAotaW5saW5lIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjc3N0b0xlbmd0aENvbnZlcnNpb25EYXRhV2l0aFRleHRab29tRmFjdG9yKFN0eWxlOjpC
dWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSBDU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhIEJ1aWxkZXJDb252ZXJ0ZXI6OmNzc3RvTGVuZ3RoQ29udmVyc2lvbkRhdGFXaXRoVGV4dFpv
b21GYWN0b3IoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgaWYgKGF1dG8qIGZy
YW1lID0gYnVpbGRlclN0YXRlLmRvY3VtZW50KCkuZnJhbWUoKSkgewogICAgICAgICBmbG9hdCB0
ZXh0Wm9vbUZhY3RvciA9IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnRleHRab29tKCkgIT0gVGV4dFpv
b206OlJlc2V0ID8gZnJhbWUtPnRleHRab29tRmFjdG9yKCkgOiAxLjBmOwpAQCAtMTE4Niw3ICsx
MTg3LDcgQEAgaW5saW5lIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjc3N0b0xlbmd0aENvbnZlcnNpb25EYXQKICAgICByZXR1cm4gYnVpbGRlclN0YXRl
LmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKTsKIH0KIAotaW5saW5lIE9wdGlvbmFsPExlbmd0
aD4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0V29yZFNwYWNpbmcoU3R5bGU6OkJ1aWxk
ZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgT3B0
aW9uYWw8TGVuZ3RoPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0V29yZFNwYWNpbmcoQnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBPcHRp
b25hbDxMZW5ndGg+IHdvcmRTcGFjaW5nOwogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKQEAgLTEyMDIsNyArMTIwMyw3IEBAIGlu
bGluZSBPcHRpb25hbDxMZW5ndGg+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFdvcmRT
cGFjaW5nKFN0eWxlOjpCdWlsZGVyCiAgICAgcmV0dXJuIHdvcmRTcGFjaW5nOwogfQogCi1pbmxp
bmUgT3B0aW9uYWw8ZmxvYXQ+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBlcnNwZWN0
aXZlKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZh
bHVlKQoraW5saW5lIE9wdGlvbmFsPGZsb2F0PiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UGVy
c3BlY3RpdmUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1
ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1
ZU5vbmUpCkBAIC0xMjE5LDcgKzEyMjAsNyBAQCBpbmxpbmUgT3B0aW9uYWw8ZmxvYXQ+IFN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBlcnNwZWN0aXZlKFN0eWxlOjpCdWlsZGVyUwogICAg
IHJldHVybiBwZXJzcGVjdGl2ZSA8IDAgPyBPcHRpb25hbDxmbG9hdD4oV1RGOjpudWxsb3B0KSA6
IE9wdGlvbmFsPGZsb2F0PihwZXJzcGVjdGl2ZSk7CiB9CiAKLWlubGluZSBPcHRpb25hbDxMZW5n
dGg+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVJbmNyZW1lbnQoU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxp
bmUgT3B0aW9uYWw8TGVuZ3RoPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TWFycXVlZUluY3Jl
bWVudChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQog
ewogICAgIE9wdGlvbmFsPExlbmd0aD4gbWFycXVlZUxlbmd0aDsKICAgICBhdXRvJiBwcmltaXRp
dmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CkBAIC0xMjQ1LDcg
KzEyNDYsNyBAQCBpbmxpbmUgT3B0aW9uYWw8TGVuZ3RoPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRNYXJxdWVlSW5jcmVtZW50KFN0eWxlOjpCdQogICAgIHJldHVybiBtYXJxdWVlTGVu
Z3RoOwogfQogCi1pbmxpbmUgT3B0aW9uYWw8RmlsdGVyT3BlcmF0aW9ucz4gU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0RmlsdGVyT3BlcmF0aW9ucyhTdHlsZTo6QnVpbGRlclN0YXRlJiBi
dWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBPcHRpb25hbDxGaWx0
ZXJPcGVyYXRpb25zPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0RmlsdGVyT3BlcmF0aW9ucyhC
dWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAg
IEZpbHRlck9wZXJhdGlvbnMgb3BlcmF0aW9uczsKICAgICBpZiAoYnVpbGRlclN0YXRlLmNyZWF0
ZUZpbHRlck9wZXJhdGlvbnModmFsdWUsIG9wZXJhdGlvbnMpKQpAQCAtMTI1Myw3ICsxMjU0LDcg
QEAgaW5saW5lIE9wdGlvbmFsPEZpbHRlck9wZXJhdGlvbnM+IFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydEZpbHRlck9wZXJhdGlvbnMKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQog
Ci1pbmxpbmUgRm9udEZlYXR1cmVTZXR0aW5ncyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRGb250RmVhdHVyZVNldHRpbmdzKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1
ZSYgdmFsdWUpCitpbmxpbmUgRm9udEZlYXR1cmVTZXR0aW5ncyBCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0Rm9udEZlYXR1cmVTZXR0aW5ncyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYg
dmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKICAgICAg
ICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09
IENTU1ZhbHVlTm9ybWFsKTsKQEAgLTEyNjgsNyArMTI2OSw3IEBAIGlubGluZSBGb250RmVhdHVy
ZVNldHRpbmdzIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRGZWF0dXJlU2V0dGlu
Z3MoU3R5CiAgICAgcmV0dXJuIHNldHRpbmdzOwogfQogCi1pbmxpbmUgRm9udFNlbGVjdGlvblZh
bHVlIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRXZWlnaHRGcm9tVmFsdWUoY29u
c3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIEZvbnRTZWxlY3Rpb25WYWx1ZSBCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0Rm9udFdlaWdodEZyb21WYWx1ZShjb25zdCBDU1NWYWx1ZSYgdmFsdWUp
CiB7CiAgICAgQVNTRVJUKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpOwogICAgIGF1dG8m
IHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKQEAg
LTEyOTEsNyArMTI5Miw3IEBAIGlubGluZSBGb250U2VsZWN0aW9uVmFsdWUgU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0Rm9udFdlaWdodEZyb21WYWx1ZShjb25zCiAgICAgfQogfQogCi1p
bmxpbmUgRm9udFNlbGVjdGlvblZhbHVlIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZv
bnRTdHJldGNoRnJvbVZhbHVlKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBGb250U2Vs
ZWN0aW9uVmFsdWUgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRTdHJldGNoRnJvbVZhbHVl
KGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBBU1NFUlQoaXM8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKSk7CiAgICAgY29uc3QgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwpAQCAtMTMwNyw3ICsxMzA4LDcgQEAgaW5saW5lIEZv
bnRTZWxlY3Rpb25WYWx1ZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250U3RyZXRj
aEZyb21WYWx1ZShjb24KIH0KIAogLy8gVGhlIGlucHV0IHZhbHVlIG5lZWRzIHRvIHBhcnNlZCBh
bmQgdmFsaWQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBXVEY6Om51bGxvcHQgaWYgdGhlIGlucHV0
IHdhcyAibm9ybWFsIi4KLWlubGluZSBPcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IFN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRTdHlsZUZyb21WYWx1ZShjb25zdCBDU1NWYWx1
ZSYgdmFsdWUpCitpbmxpbmUgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0Rm9udFN0eWxlRnJvbVZhbHVlKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkK
IHsKICAgICBBU1NFUlQoaXM8Q1NTRm9udFN0eWxlVmFsdWU+KHZhbHVlKSk7CiAgICAgY29uc3Qg
YXV0byYgZm9udFN0eWxlVmFsdWUgPSBkb3duY2FzdDxDU1NGb250U3R5bGVWYWx1ZT4odmFsdWUp
OwpAQCAtMTMyMyw3ICsxMzI0LDcgQEAgaW5saW5lIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1
ZT4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN0eWxlRnJvbVYKICAgICByZXR1
cm4gaXRhbGljVmFsdWUoKTsKIH0KIAotaW5saW5lIEZvbnRTZWxlY3Rpb25WYWx1ZSBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250V2VpZ2h0KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIEZvbnRTZWxlY3Rpb25W
YWx1ZSBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFdlaWdodChCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIEFTU0VSVChpczxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpKTsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CkBAIC0xMzM3LDEzICsxMzM4LDEzIEBAIGlu
bGluZSBGb250U2VsZWN0aW9uVmFsdWUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9u
dFdlaWdodChTdHlsZTo6QnVpbGRlCiAgICAgcmV0dXJuIGNvbnZlcnRGb250V2VpZ2h0RnJvbVZh
bHVlKHZhbHVlKTsKIH0KIAotaW5saW5lIEZvbnRTZWxlY3Rpb25WYWx1ZSBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRGb250U3RyZXRjaChTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3Qg
Q1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIEZvbnRTZWxlY3Rpb25WYWx1ZSBCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0Rm9udFN0cmV0Y2goQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZh
bHVlKQogewogICAgIHJldHVybiBjb252ZXJ0Rm9udFN0cmV0Y2hGcm9tVmFsdWUodmFsdWUpOwog
fQogCiAjaWYgRU5BQkxFKFZBUklBVElPTl9GT05UUykKLWlubGluZSBGb250VmFyaWF0aW9uU2V0
dGluZ3MgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFZhcmlhdGlvblNldHRpbmdz
KFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgRm9u
dFZhcmlhdGlvblNldHRpbmdzIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250VmFyaWF0aW9u
U2V0dGluZ3MoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlm
IChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CiAgICAgICAgIEFTU0VSVChkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCk7
CkBAIC0xMzYwLDIxICsxMzYxLDIxIEBAIGlubGluZSBGb250VmFyaWF0aW9uU2V0dGluZ3MgU3R5
bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFZhcmlhdGlvblNldHRpbmdzCiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi1pbmxpbmUgYm9vbCBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRUb3VjaENhbGxvdXQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENT
U1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBib29sIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUb3Vj
aENhbGxvdXQoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIHJl
dHVybiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhbHVlKS5zdHJpbmdWYWx1ZSgpLCAibm9uZSIpOwogfQogI2VuZGlmCiAKICNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQotaW5saW5lIENvbG9yIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydFRhcEhpZ2hsaWdodENvbG9yKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0
ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIENvbG9yIEJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRUYXBIaWdobGlnaHRDb2xvcihCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29u
c3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIHJldHVybiBidWlsZGVyU3RhdGUuY29sb3JGcm9t
UHJpbWl0aXZlVmFsdWUoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSk7CiB9CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKLWlubGluZSBPcHRpb25TZXQ8VG91
Y2hBY3Rpb24+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRvdWNoQWN0aW9uKFN0eWxl
OjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgT3B0aW9uU2V0
PFRvdWNoQWN0aW9uPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG91Y2hBY3Rpb24oQnVpbGRl
clN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChpczxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKTsKQEAgLTEzOTYsMTggKzEzOTcsMTggQEAgaW5saW5lIE9wdGlvblNldDxUb3Vj
aEFjdGlvbj4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG91Y2hBY3Rpb24oU3R5bGU6
OkIKICNlbmRpZgogCiAjaWYgRU5BQkxFKE9WRVJGTE9XX1NDUk9MTElOR19UT1VDSCkKLWlubGlu
ZSBib29sIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE92ZXJmbG93U2Nyb2xsaW5nKFN0
eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgYm9vbCBC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0T3ZlcmZsb3dTY3JvbGxpbmcoQnVpbGRlclN0YXRlJiwg
Y29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZVRvdWNoOwogfQogI2VuZGlmCiAK
LWlubGluZSBTVkdMZW5ndGhWYWx1ZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTVkdM
ZW5ndGhWYWx1ZShTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQor
aW5saW5lIFNWR0xlbmd0aFZhbHVlIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTVkdMZW5ndGhW
YWx1ZShCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgcmV0dXJu
IFNWR0xlbmd0aFZhbHVlOjpmcm9tQ1NTUHJpbWl0aXZlVmFsdWUoZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKSk7CiB9CiAKLWlubGluZSBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNWR0xlbmd0aFZlY3RvcihTdHlsZTo6QnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBWZWN0
b3I8U1ZHTGVuZ3RoVmFsdWU+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTVkdMZW5ndGhWZWN0
b3IoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsK
ICAgICBhdXRvJiB2YWx1ZUxpc3QgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKTsKIApA
QCAtMTQxOSw3ICsxNDIwLDcgQEAgaW5saW5lIFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4gU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U1ZHTGVuZ3RoVmVjdG9yKFN0eWwKICAgICByZXR1cm4g
c3ZnTGVuZ3RoczsKIH0KIAotaW5saW5lIFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4gU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0U3Ryb2tlRGFzaEFycmF5KFN0eWxlOjpCdWlsZGVyU3RhdGUm
IGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFZlY3RvcjxTVkdM
ZW5ndGhWYWx1ZT4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFN0cm9rZURhc2hBcnJheShCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlm
IChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CiAgICAgICAgIEFTU0VSVChkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpOwpA
QCAtMTQyOSw3ICsxNDMwLDcgQEAgaW5saW5lIFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4gU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3Ryb2tlRGFzaEFycmF5KFN0eWwKICAgICByZXR1cm4g
Y29udmVydFNWR0xlbmd0aFZlY3RvcihidWlsZGVyU3RhdGUsIHZhbHVlKTsKIH0KIAotaW5saW5l
IFBhaW50T3JkZXIgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UGFpbnRPcmRlcihTdHls
ZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFBhaW50T3Jk
ZXIgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBhaW50T3JkZXIoQnVpbGRlclN0YXRlJiwgY29u
c3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFs
dWUpKSB7CiAgICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUp
LnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCk7CkBAIC0xNDUwLDcgKzE0NTEsNyBAQCBpbmxp
bmUgUGFpbnRPcmRlciBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQYWludE9yZGVyKFN0
eWxlOjpCdWlsZGVyU3RhdGUmLAogICAgIH0KIH0KIAotaW5saW5lIGZsb2F0IFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydE9wYWNpdHkoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENT
U1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBmbG9hdCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0T3Bh
Y2l0eShCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYg
cHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAg
IGZsb2F0IG9wYWNpdHkgPSBwcmltaXRpdmVWYWx1ZS5mbG9hdFZhbHVlKCk7CkBAIC0xNDU5LDcg
KzE0NjAsNyBAQCBpbmxpbmUgZmxvYXQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0T3Bh
Y2l0eShTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQwogICAgIHJldHVybiBzdGQ6Om1heCgw
LjBmLCBzdGQ6Om1pbigxLjBmLCBvcGFjaXR5KSk7CiB9CiAKLWlubGluZSBTdHJpbmcgU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U1ZHVVJJUmVmZXJlbmNlKFN0eWxlOjpCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFN0cmluZyBC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U1ZHVVJJUmVmZXJlbmNlKEJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgU3RyaW5nIHM7CiAgICAg
YXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUp
OwpAQCAtMTQ2OSwxMiArMTQ3MCwxMiBAQCBpbmxpbmUgU3RyaW5nIFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydFNWR1VSSVJlZmVyZW5jZShTdHlsZTo6QnVpbGRlclN0YXRlJgogICAgIHJl
dHVybiBTVkdVUklSZWZlcmVuY2U6OmZyYWdtZW50SWRlbnRpZmllckZyb21JUklTdHJpbmcocywg
YnVpbGRlclN0YXRlLmRvY3VtZW50KCkpOwogfQogCi1pbmxpbmUgQ29sb3IgU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0U1ZHQ29sb3IoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0
YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgQ29sb3IgQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFNWR0NvbG9yKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NW
YWx1ZSYgdmFsdWUpCiB7CiAgICAgcmV0dXJuIGJ1aWxkZXJTdGF0ZS5jb2xvckZyb21QcmltaXRp
dmVWYWx1ZShkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKTsKIH0KIAotaW5saW5l
IFN0eWxlU2VsZkFsaWdubWVudERhdGEgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2Vs
Zk9yRGVmYXVsdEFsaWdubWVudERhdGEoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1Zh
bHVlJiB2YWx1ZSkKK2lubGluZSBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIEJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRTZWxmT3JEZWZhdWx0QWxpZ25tZW50RGF0YShCdWlsZGVyU3RhdGUmLCBjb25z
dCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBhbGlnbm1l
bnREYXRhID0gUmVuZGVyU3R5bGU6OmluaXRpYWxTZWxmQWxpZ25tZW50KCk7CiAgICAgYXV0byYg
cHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwpAQCAt
MTQ4MiwxMSArMTQ4MywxMSBAQCBpbmxpbmUgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTZWxmT3JEZWZhdWx0QWxpZ25tZQogICAgICAgICBpZiAo
cGFpclZhbHVlLT5maXJzdCgpLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVMZWdhY3kpIHsKICAgICAg
ICAgICAgIGFsaWdubWVudERhdGEuc2V0UG9zaXRpb25UeXBlKEl0ZW1Qb3NpdGlvblR5cGU6Okxl
Z2FjeSk7CiAgICAgICAgICAgICBhbGlnbm1lbnREYXRhLnNldFBvc2l0aW9uKCpwYWlyVmFsdWUt
PnNlY29uZCgpKTsKLSAgICAgICAgfSBlbHNlIGlmIChwYWlyVmFsdWUtPmZpcnN0KCktPnZhbHVl
SUQoKSA9PSBDU1NWYWx1ZUZpcnN0KSB7CisgICAgICAgIH0gZWxzZSBpZiAocGFpclZhbHVlLT5m
aXJzdCgpLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVGaXJzdCkKICAgICAgICAgICAgIGFsaWdubWVu
dERhdGEuc2V0UG9zaXRpb24oSXRlbVBvc2l0aW9uOjpCYXNlbGluZSk7Ci0gICAgICAgIH0gZWxz
ZSBpZiAocGFpclZhbHVlLT5maXJzdCgpLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVMYXN0KSB7Cisg
ICAgICAgIGVsc2UgaWYgKHBhaXJWYWx1ZS0+Zmlyc3QoKS0+dmFsdWVJRCgpID09IENTU1ZhbHVl
TGFzdCkKICAgICAgICAgICAgIGFsaWdubWVudERhdGEuc2V0UG9zaXRpb24oSXRlbVBvc2l0aW9u
OjpMYXN0QmFzZWxpbmUpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgIGFsaWdubWVudERhdGEuc2V0T3ZlcmZsb3coKnBhaXJWYWx1ZS0+Zmlyc3QoKSk7CiAg
ICAgICAgICAgICBhbGlnbm1lbnREYXRhLnNldFBvc2l0aW9uKCpwYWlyVmFsdWUtPnNlY29uZCgp
KTsKICAgICAgICAgfQpAQCAtMTQ5NSw3ICsxNDk2LDcgQEAgaW5saW5lIFN0eWxlU2VsZkFsaWdu
bWVudERhdGEgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2VsZk9yRGVmYXVsdEFsaWdu
bWUKICAgICByZXR1cm4gYWxpZ25tZW50RGF0YTsKIH0KIAotaW5saW5lIFN0eWxlQ29udGVudEFs
aWdubWVudERhdGEgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q29udGVudEFsaWdubWVu
dERhdGEoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGlu
ZSBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDb250
ZW50QWxpZ25tZW50RGF0YShCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7
CiAgICAgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSBhbGlnbm1lbnREYXRhID0gUmVuZGVyU3R5
bGU6OmluaXRpYWxDb250ZW50QWxpZ25tZW50KCk7CiAgICAgaWYgKCFpczxDU1NDb250ZW50RGlz
dHJpYnV0aW9uVmFsdWU+KHZhbHVlKSkKQEAgLTE1MTAsNyArMTUxMSw3IEBAIGlubGluZSBTdHls
ZUNvbnRlbnRBbGlnbm1lbnREYXRhIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENvbnRl
bnRBbGlnbm1lbnRECiAgICAgcmV0dXJuIGFsaWdubWVudERhdGE7CiB9CiAKLWlubGluZSBHbHlw
aE9yaWVudGF0aW9uIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdseXBoT3JpZW50YXRp
b24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBH
bHlwaE9yaWVudGF0aW9uIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHbHlwaE9yaWVudGF0aW9u
KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBmbG9hdCBhbmds
ZSA9IGZhYnNmKGZtb2RmKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZmxvYXRW
YWx1ZSgpLCAzNjAuMGYpKTsKICAgICBpZiAoYW5nbGUgPD0gNDUuMGYgfHwgYW5nbGUgPiAzMTUu
MGYpCkBAIC0xNTIyLDIxICsxNTIzLDIxIEBAIGlubGluZSBHbHlwaE9yaWVudGF0aW9uIFN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdseXBoT3JpZW50YXRpb24oU3R5bGU6OkJ1CiAgICAg
cmV0dXJuIEdseXBoT3JpZW50YXRpb246OkRlZ3JlZXMyNzA7CiB9CiAKLWlubGluZSBHbHlwaE9y
aWVudGF0aW9uIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdseXBoT3JpZW50YXRpb25P
ckF1dG8oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYg
dmFsdWUpCitpbmxpbmUgR2x5cGhPcmllbnRhdGlvbiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
R2x5cGhPcmllbnRhdGlvbk9yQXV0byhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3Qg
Q1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pCiAgICAgICAgIHJldHVybiBHbHlwaE9y
aWVudGF0aW9uOjpBdXRvOwogICAgIHJldHVybiBjb252ZXJ0R2x5cGhPcmllbnRhdGlvbihidWls
ZGVyU3RhdGUsIHZhbHVlKTsKIH0KIAotaW5saW5lIE9wdGlvbmFsPExlbmd0aD4gU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0TGluZUhlaWdodChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWls
ZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgZmxvYXQgbXVsdGlwbGllcikKK2lubGlu
ZSBPcHRpb25hbDxMZW5ndGg+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMaW5lSGVpZ2h0KEJ1
aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUsIGZsb2F0IG11
bHRpcGxpZXIpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0g
Q1NTVmFsdWVOb3JtYWwpCiAgICAgICAgIHJldHVybiBSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVI
ZWlnaHQoKTsKIAogICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc0xlbmd0aCgpKSB7Ci0gICAgICAg
IExlbmd0aCBsZW5ndGggPSBwcmltaXRpdmVWYWx1ZS5jb21wdXRlTGVuZ3RoPExlbmd0aD4oU3R5
bGVCdWlsZGVyQ29udmVydGVyOjpjc3N0b0xlbmd0aENvbnZlcnNpb25EYXRhV2l0aFRleHRab29t
RmFjdG9yKGJ1aWxkZXJTdGF0ZSkpOworICAgICAgICBMZW5ndGggbGVuZ3RoID0gcHJpbWl0aXZl
VmFsdWUuY29tcHV0ZUxlbmd0aDxMZW5ndGg+KEJ1aWxkZXJDb252ZXJ0ZXI6OmNzc3RvTGVuZ3Ro
Q29udmVyc2lvbkRhdGFXaXRoVGV4dFpvb21GYWN0b3IoYnVpbGRlclN0YXRlKSk7CiAgICAgICAg
IGlmIChtdWx0aXBsaWVyICE9IDEuZikKICAgICAgICAgICAgIGxlbmd0aCA9IExlbmd0aChsZW5n
dGgudmFsdWUoKSAqIG11bHRpcGxpZXIsIEZpeGVkKTsKICAgICAgICAgcmV0dXJuIGxlbmd0aDsK
QEAgLTE1NjAsNyArMTU2MSw3IEBAIGlubGluZSBPcHRpb25hbDxMZW5ndGg+IFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydExpbmVIZWlnaHQoU3R5bGU6OkJ1aWxkZXJTCiAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKIH0KIAotaW5saW5lIEZvbnRTeW50aGVzaXMgU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0Rm9udFN5bnRoZXNpcyhTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3Qg
Q1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIEZvbnRTeW50aGVzaXMgQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydEZvbnRTeW50aGVzaXMoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVl
KQogewogICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CiAgICAgICAgIEFT
U0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NW
YWx1ZU5vbmUpOwpAQCAtMTU4OSw3ICsxNTkwLDcgQEAgaW5saW5lIEZvbnRTeW50aGVzaXMgU3R5
bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN5bnRoZXNpcyhTdHlsZTo6QnVpbGRlclMK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogICAgIAotaW5saW5lIE9wdGlvblNldDxTcGVha0FzPiBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTcGVha0FzKFN0eWxlOjpCdWlsZGVyU3RhdGUm
LCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgT3B0aW9uU2V0PFNwZWFrQXM+IEJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRTcGVha0FzKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVl
JiB2YWx1ZSkKIHsKICAgICBhdXRvIHJlc3VsdCA9IFJlbmRlclN0eWxlOjppbml0aWFsU3BlYWtB
cygpOwogICAgIGlmIChpczxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewpAQCAtMTU5OSw3ICsxNjAw
LDcgQEAgaW5saW5lIE9wdGlvblNldDxTcGVha0FzPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRTcGVha0FzKFN0eWxlOjpCdWlsZGVyU3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1p
bmxpbmUgT3B0aW9uU2V0PEhhbmdpbmdQdW5jdHVhdGlvbj4gU3R5bGVCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0SGFuZ2luZ1B1bmN0dWF0aW9uKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBD
U1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgT3B0aW9uU2V0PEhhbmdpbmdQdW5jdHVhdGlvbj4gQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydEhhbmdpbmdQdW5jdHVhdGlvbihCdWlsZGVyU3RhdGUmLCBj
b25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byByZXN1bHQgPSBSZW5kZXJTdHlsZTo6
aW5pdGlhbEhhbmdpbmdQdW5jdHVhdGlvbigpOwogICAgIGlmIChpczxDU1NWYWx1ZUxpc3Q+KHZh
bHVlKSkgewpAQCAtMTYwOSw5ICsxNjEwLDEwIEBAIGlubGluZSBPcHRpb25TZXQ8SGFuZ2luZ1B1
bmN0dWF0aW9uPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRIYW5naW5nUHVuY3R1CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIEdhcExlbmd0aCBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRHYXBMZW5ndGgoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
LCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgR2FwTGVuZ3RoIEJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRHYXBMZW5ndGgoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENT
U1ZhbHVlJiB2YWx1ZSkKIHsKICAgICByZXR1cm4gKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKSA/IEdhcExlbmd0aCgpIDogR2Fw
TGVuZ3RoKGNvbnZlcnRMZW5ndGgoYnVpbGRlclN0YXRlLCB2YWx1ZSkpOwogfQogCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVCdWlsZGVyQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0
b20uaApzaW1pbGFyaXR5IGluZGV4IDgxJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVCdWlsZGVyQ3VzdG9tLmgKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
QnVpbGRlckN1c3RvbS5oCmluZGV4IDUwZGYyMzEyZDM2Li45MDRjZDAzNDcyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5oCkBAIC01MiwxMSArNTIsMTIgQEAKICNp
bmNsdWRlICJXaWxsQ2hhbmdlRGF0YS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3Bh
Y2UgU3R5bGUgewogCiAjZGVmaW5lIERFQ0xBUkVfUFJPUEVSVFlfQ1VTVE9NX0hBTkRMRVJTKHBy
b3BlcnR5KSBcCi0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0IyNwcm9wZXJ0eShTdHlsZTo6
QnVpbGRlclN0YXRlJik7IFwKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWwjI3Byb3BlcnR5
KFN0eWxlOjpCdWlsZGVyU3RhdGUmKTsgXAotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUjI3By
b3BlcnR5KFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYpCisgICAgc3RhdGljIHZvaWQg
YXBwbHlJbmhlcml0IyNwcm9wZXJ0eShCdWlsZGVyU3RhdGUmKTsgXAorICAgIHN0YXRpYyB2b2lk
IGFwcGx5SW5pdGlhbCMjcHJvcGVydHkoQnVpbGRlclN0YXRlJik7IFwKKyAgICBzdGF0aWMgdm9p
ZCBhcHBseVZhbHVlIyNwcm9wZXJ0eShCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYpCiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUIGZvcndhcmRJbmhlcml0ZWRWYWx1ZShUJiYgdmFsdWUp
IHsgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxUPih2YWx1ZSk7IH0KIGlubGluZSBMZW5ndGggZm9yd2Fy
ZEluaGVyaXRlZFZhbHVlKGNvbnN0IExlbmd0aCYgdmFsdWUpIHsgYXV0byBjb3B5ID0gdmFsdWU7
IHJldHVybiBjb3B5OyB9CkBAIC02NSw3ICs2Niw3IEBAIGlubGluZSBMZW5ndGhCb3ggZm9yd2Fy
ZEluaGVyaXRlZFZhbHVlKGNvbnN0IExlbmd0aEJveCYgdmFsdWUpIHsgYXV0byBjb3B5ID0gdmFs
CiBpbmxpbmUgR2FwTGVuZ3RoIGZvcndhcmRJbmhlcml0ZWRWYWx1ZShjb25zdCBHYXBMZW5ndGgm
IHZhbHVlKSB7IGF1dG8gY29weSA9IHZhbHVlOyByZXR1cm4gY29weTsgfQogCiAvLyBOb3RlIHRo
YXQgd2UgYXNzdW1lIHRoZSBDU1MgcGFyc2VyIG9ubHkgYWxsb3dzIHZhbGlkIENTU1ZhbHVlIHR5
cGVzLgotY2xhc3MgU3R5bGVCdWlsZGVyQ3VzdG9tIHsKK2NsYXNzIEJ1aWxkZXJDdXN0b20gewog
cHVibGljOgogICAgIC8vIEN1c3RvbSBoYW5kbGluZyBvZiBpbmhlcml0LCBpbml0aWFsIGFuZCB2
YWx1ZSBzZXR0aW5nLgogICAgIERFQ0xBUkVfUFJPUEVSVFlfQ1VTVE9NX0hBTkRMRVJTKEJvcmRl
ckltYWdlT3V0c2V0KTsKQEAgLTEwOSwxMDUgKzExMCwxMDUgQEAgcHVibGljOgogICAgIERFQ0xB
UkVfUFJPUEVSVFlfQ1VTVE9NX0hBTkRMRVJTKFpvb20pOwogCiAgICAgLy8gQ3VzdG9tIGhhbmRs
aW5nIG9mIGluaXRpYWwgKyBpbmhlcml0IHZhbHVlIHNldHRpbmcgb25seS4KLSAgICBzdGF0aWMg
dm9pZCBhcHBseUluaXRpYWxXZWJraXRNYXNrSW1hZ2UoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYpIHsg
fQotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFdlYmtpdE1hc2tJbWFnZShTdHlsZTo6QnVp
bGRlclN0YXRlJikgeyB9Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsRm9udEZlYXR1cmVT
ZXR0aW5ncyhTdHlsZTo6QnVpbGRlclN0YXRlJikgeyB9Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJ
bmhlcml0Rm9udEZlYXR1cmVTZXR0aW5ncyhTdHlsZTo6QnVpbGRlclN0YXRlJikgeyB9CisgICAg
c3RhdGljIHZvaWQgYXBwbHlJbml0aWFsV2Via2l0TWFza0ltYWdlKEJ1aWxkZXJTdGF0ZSYpIHsg
fQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFdlYmtpdE1hc2tJbWFnZShCdWlsZGVyU3Rh
dGUmKSB7IH0KKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxGb250RmVhdHVyZVNldHRpbmdz
KEJ1aWxkZXJTdGF0ZSYpIHsgfQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdEZvbnRGZWF0
dXJlU2V0dGluZ3MoQnVpbGRlclN0YXRlJikgeyB9CiAjaWYgRU5BQkxFKFZBUklBVElPTl9GT05U
UykKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxGb250VmFyaWF0aW9uU2V0dGluZ3MoU3R5
bGU6OkJ1aWxkZXJTdGF0ZSYpIHsgfQotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdEZvbnRW
YXJpYXRpb25TZXR0aW5ncyhTdHlsZTo6QnVpbGRlclN0YXRlJikgeyB9CisgICAgc3RhdGljIHZv
aWQgYXBwbHlJbml0aWFsRm9udFZhcmlhdGlvblNldHRpbmdzKEJ1aWxkZXJTdGF0ZSYpIHsgfQor
ICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdEZvbnRWYXJpYXRpb25TZXR0aW5ncyhCdWlsZGVy
U3RhdGUmKSB7IH0KICNlbmRpZgogCiAgICAgLy8gQ3VzdG9tIGhhbmRsaW5nIG9mIGluaGVyaXQg
KyB2YWx1ZSBzZXR0aW5nIG9ubHkuCi0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0RGlzcGxh
eShTdHlsZTo6QnVpbGRlclN0YXRlJik7Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZURpc3Bs
YXkoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIHZvaWQgYXBw
bHlJbmhlcml0RGlzcGxheShCdWlsZGVyU3RhdGUmKTsKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZh
bHVlRGlzcGxheShCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYpOwogCiAgICAgLy8gQ3VzdG9tIGhh
bmRsaW5nIG9mIHZhbHVlIHNldHRpbmcgb25seS4KLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVl
QmFzZWxpbmVTaGlmdChTdHlsZTo6QnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0
aWMgdm9pZCBhcHBseVZhbHVlRGlyZWN0aW9uKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBDU1NWYWx1
ZSYpOwotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVWZXJ0aWNhbEFsaWduKFN0eWxlOjpCdWls
ZGVyU3RhdGUmLCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFRleHRB
bGlnbihTdHlsZTo6QnVpbGRlclN0YXRlJik7Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZVRl
eHRBbGlnbihTdHlsZTo6QnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgdm9p
ZCBhcHBseVZhbHVlV2Via2l0TG9jYWxlKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYp
OwotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVXZWJraXRUZXh0T3JpZW50YXRpb24oU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZUJh
c2VsaW5lU2hpZnQoQnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgdm9pZCBh
cHBseVZhbHVlRGlyZWN0aW9uKEJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7CisgICAgc3RhdGlj
IHZvaWQgYXBwbHlWYWx1ZVZlcnRpY2FsQWxpZ24oQnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUmKTsK
KyAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxUZXh0QWxpZ24oQnVpbGRlclN0YXRlJik7Cisg
ICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZVRleHRBbGlnbihCdWlsZGVyU3RhdGUmLCBDU1NWYWx1
ZSYpOworICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVXZWJraXRMb2NhbGUoQnVpbGRlclN0YXRl
JiwgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlV2Via2l0VGV4dE9yaWVu
dGF0aW9uKEJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7CiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJ
WklORykKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlV2Via2l0VGV4dFNpemVBZGp1c3QoU3R5
bGU6OkJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1
ZVdlYmtpdFRleHRTaXplQWRqdXN0KEJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7CiAjZW5kaWYK
LSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlV2Via2l0VGV4dFpvb20oU3R5bGU6OkJ1aWxkZXJT
dGF0ZSYsIENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZVdyaXRpbmdNb2Rl
KFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyB2b2lkIGFwcGx5
VmFsdWVBbHQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIHZv
aWQgYXBwbHlWYWx1ZVdpbGxDaGFuZ2UoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7
CisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZVdlYmtpdFRleHRab29tKEJ1aWxkZXJTdGF0ZSYs
IENTU1ZhbHVlJik7CisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZVdyaXRpbmdNb2RlKEJ1aWxk
ZXJTdGF0ZSYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZUFsdChCdWls
ZGVyU3RhdGUmLCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVXaWxsQ2hh
bmdlKEJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7CiAKICNpZiBFTkFCTEUoREFSS19NT0RFX0NT
UykKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlQ29sb3JTY2hlbWUoU3R5bGU6OkJ1aWxkZXJT
dGF0ZSYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZUNvbG9yU2NoZW1l
KEJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7CiAjZW5kaWYKIAotICAgIHN0YXRpYyB2b2lkIGFw
cGx5VmFsdWVTdHJva2VXaWR0aChTdHlsZTo6QnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUmKTsKLSAg
ICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlU3Ryb2tlQ29sb3IoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYs
IENTU1ZhbHVlJik7CisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZVN0cm9rZVdpZHRoKEJ1aWxk
ZXJTdGF0ZSYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZVN0cm9rZUNv
bG9yKEJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBseUlu
aXRpYWxDdXN0b21Qcm9wZXJ0eShTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTUmVnaXN0
ZXJlZEN1c3RvbVByb3BlcnR5KiwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSk7Ci0gICAgc3RhdGlj
IHZvaWQgYXBwbHlJbmhlcml0Q3VzdG9tUHJvcGVydHkoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNv
bnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSosIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUp
OwotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVDdXN0b21Qcm9wZXJ0eShTdHlsZTo6QnVpbGRl
clN0YXRlJiwgY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5KiwgQ1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZSYpOworICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbEN1c3RvbVByb3BlcnR5
KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSosIGNvbnN0
IEF0b21TdHJpbmcmIG5hbWUpOworICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdEN1c3RvbVBy
b3BlcnR5KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSos
IGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpOworICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVDdXN0
b21Qcm9wZXJ0eShCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVy
dHkqLCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlJik7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIHZv
aWQgcmVzZXRFZmZlY3RpdmVab29tKFN0eWxlOjpCdWlsZGVyU3RhdGUmKTsKKyAgICBzdGF0aWMg
dm9pZCByZXNldEVmZmVjdGl2ZVpvb20oQnVpbGRlclN0YXRlJik7CiAKICAgICBzdGF0aWMgTGVu
Z3RoIG1tTGVuZ3RoKGRvdWJsZSBtbSk7CiAgICAgc3RhdGljIExlbmd0aCBpbmNoTGVuZ3RoKGRv
dWJsZSBpbmNoKTsKICAgICBzdGF0aWMgYm9vbCBnZXRQYWdlU2l6ZUZyb21OYW1lKENTU1ByaW1p
dGl2ZVZhbHVlKiBwYWdlU2l6ZU5hbWUsIENTU1ByaW1pdGl2ZVZhbHVlKiBwYWdlT3JpZW50YXRp
b24sIExlbmd0aCYgd2lkdGgsIExlbmd0aCYgaGVpZ2h0KTsKIAogICAgIHRlbXBsYXRlIDxDU1NQ
cm9wZXJ0eUlEIGlkPgotICAgIHN0YXRpYyB2b2lkIGFwcGx5VGV4dE9yQm94U2hhZG93VmFsdWUo
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxp
ZERpc3BsYXlWYWx1ZShTdHlsZTo6QnVpbGRlclN0YXRlJiwgRGlzcGxheVR5cGUpOworICAgIHN0
YXRpYyB2b2lkIGFwcGx5VGV4dE9yQm94U2hhZG93VmFsdWUoQnVpbGRlclN0YXRlJiwgQ1NTVmFs
dWUmKTsKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRGlzcGxheVZhbHVlKEJ1aWxkZXJTdGF0ZSYs
IERpc3BsYXlUeXBlKTsKIAogICAgIGVudW0gQ291bnRlckJlaGF2aW9yIHtJbmNyZW1lbnQgPSAw
LCBSZXNldH07CiAgICAgdGVtcGxhdGUgPENvdW50ZXJCZWhhdmlvciBjb3VudGVyQmVoYXZpb3I+
Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0Q291bnRlcihTdHlsZTo6QnVpbGRlclN0YXRl
Jik7CisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0Q291bnRlcihCdWlsZGVyU3RhdGUmKTsK
ICAgICB0ZW1wbGF0ZSA8Q291bnRlckJlaGF2aW9yIGNvdW50ZXJCZWhhdmlvcj4KLSAgICBzdGF0
aWMgdm9pZCBhcHBseVZhbHVlQ291bnRlcihTdHlsZTo6QnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUm
KTsKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlQ291bnRlcihCdWlsZGVyU3RhdGUmLCBDU1NW
YWx1ZSYpOwogCiAgICAgc3RhdGljIGZsb2F0IGxhcmdlckZvbnRTaXplKGZsb2F0IHNpemUpOwog
ICAgIHN0YXRpYyBmbG9hdCBzbWFsbGVyRm9udFNpemUoZmxvYXQgc2l6ZSk7Ci0gICAgc3RhdGlj
IGZsb2F0IGRldGVybWluZVJ1YnlUZXh0U2l6ZU11bHRpcGxpZXIoU3R5bGU6OkJ1aWxkZXJTdGF0
ZSYpOworICAgIHN0YXRpYyBmbG9hdCBkZXRlcm1pbmVSdWJ5VGV4dFNpemVNdWx0aXBsaWVyKEJ1
aWxkZXJTdGF0ZSYpOwogfTsKIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eVZhbHVlRGlyZWN0aW9uKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFs
dWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZURpcmVjdGlv
bihCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGJ1
aWxkZXJTdGF0ZS5zdHlsZSgpLnNldERpcmVjdGlvbihkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpKTsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRIYXNFeHBsaWNpdGx5U2V0
RGlyZWN0aW9uKHRydWUpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5SW5pdGlhbFRleHRBbGlnbihTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitp
bmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxUZXh0QWxpZ24oQnVpbGRlclN0
YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0VGV4dEFs
aWduKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEFsaWduKCkpOwogICAgIGJ1aWxkZXJTdGF0ZS5z
dHlsZSgpLnNldEhhc0V4cGxpY2l0bHlTZXRUZXh0QWxpZ24odHJ1ZSk7CiB9CiAKLWlubGluZSB2
b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVRleHRBbGlnbihTdHlsZTo6QnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2b2lkIEJ1aWxk
ZXJDdXN0b206OmFwcGx5VmFsdWVUZXh0QWxpZ24oQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUs
IENTU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRUZXh0QWxp
Z24oU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dEFsaWduKGJ1aWxkZXJTdGF0ZSwg
dmFsdWUpKTsKKyAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRUZXh0QWxpZ24oQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydFRleHRBbGlnbihidWlsZGVyU3RhdGUsIHZhbHVlKSk7CiAgICAgYnVp
bGRlclN0YXRlLnN0eWxlKCkuc2V0SGFzRXhwbGljaXRseVNldFRleHRBbGlnbih0cnVlKTsKIH0K
IAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjpyZXNldEVmZmVjdGl2ZVpvb20oU3R5
bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3Rv
bTo6cmVzZXRFZmZlY3RpdmVab29tKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAg
IC8vIFJlc2V0IHRoZSB6b29tIGluIGVmZmVjdC4gVGhpcyBhbGxvd3MgdGhlIHNldFpvb20gbWV0
aG9kIHRvIGFjY3VyYXRlbHkgY29tcHV0ZSBhIG5ldyB6b29tIGluIGVmZmVjdC4KICAgICBidWls
ZGVyU3RhdGUuc2V0RWZmZWN0aXZlWm9vbShidWlsZGVyU3RhdGUucGFyZW50U3R5bGUoKS5lZmZl
Y3RpdmVab29tKCkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5
SW5pdGlhbFpvb20oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZv
aWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsWm9vbShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJT
dGF0ZSkKIHsKICAgICByZXNldEVmZmVjdGl2ZVpvb20oYnVpbGRlclN0YXRlKTsKICAgICBidWls
ZGVyU3RhdGUuc2V0Wm9vbShSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSk7CiB9CiAKLWlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Wm9vbShTdHlsZTo6QnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUlu
aGVyaXRab29tKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIHJlc2V0RWZmZWN0
aXZlWm9vbShidWlsZGVyU3RhdGUpOwogICAgIGJ1aWxkZXJTdGF0ZS5zZXRab29tKGJ1aWxkZXJT
dGF0ZS5wYXJlbnRTdHlsZSgpLnpvb20oKSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZVpvb20oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
LCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVl
Wm9vbShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAg
IGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KTsKIApAQCAtMjMxLDE3ICsyMzIsMTcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseVZhbHVlWm9vbShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUKICAgICAg
ICAgICAgIGJ1aWxkZXJTdGF0ZS5zZXRab29tKG51bWJlcik7CiAgICAgfQogfQotaW5saW5lIExl
bmd0aCBTdHlsZUJ1aWxkZXJDdXN0b206Om1tTGVuZ3RoKGRvdWJsZSBtbSkKK2lubGluZSBMZW5n
dGggQnVpbGRlckN1c3RvbTo6bW1MZW5ndGgoZG91YmxlIG1tKQogewogICAgIFJlZjxDU1NQcmlt
aXRpdmVWYWx1ZT4gdmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtbSwgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19NTSkpOwogICAgIHJldHVybiB2YWx1ZS5nZXQoKS5jb21wdXRlTGVuZ3Ro
PExlbmd0aD4oQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpKTsKIH0KLWlubGluZSBMZW5ndGgg
U3R5bGVCdWlsZGVyQ3VzdG9tOjppbmNoTGVuZ3RoKGRvdWJsZSBpbmNoKQoraW5saW5lIExlbmd0
aCBCdWlsZGVyQ3VzdG9tOjppbmNoTGVuZ3RoKGRvdWJsZSBpbmNoKQogewogICAgIFJlZjxDU1NQ
cmltaXRpdmVWYWx1ZT4gdmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShpbmNoLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX0lOKSk7CiAgICAgcmV0dXJuIHZhbHVlLmdldCgpLmNvbXB1dGVM
ZW5ndGg8TGVuZ3RoPihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkpOwogfQotYm9vbCBTdHls
ZUJ1aWxkZXJDdXN0b206OmdldFBhZ2VTaXplRnJvbU5hbWUoQ1NTUHJpbWl0aXZlVmFsdWUqIHBh
Z2VTaXplTmFtZSwgQ1NTUHJpbWl0aXZlVmFsdWUqIHBhZ2VPcmllbnRhdGlvbiwgTGVuZ3RoJiB3
aWR0aCwgTGVuZ3RoJiBoZWlnaHQpCitib29sIEJ1aWxkZXJDdXN0b206OmdldFBhZ2VTaXplRnJv
bU5hbWUoQ1NTUHJpbWl0aXZlVmFsdWUqIHBhZ2VTaXplTmFtZSwgQ1NTUHJpbWl0aXZlVmFsdWUq
IHBhZ2VPcmllbnRhdGlvbiwgTGVuZ3RoJiB3aWR0aCwgTGVuZ3RoJiBoZWlnaHQpCiB7CiAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPExlbmd0aD4gYTVXaWR0aChtbUxlbmd0aCgxNDgpKTsKICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TGVuZ3RoPiBhNUhlaWdodChtbUxlbmd0aCgyMTApKTsK
QEAgLTMxNSw3ICszMTYsNyBAQCBib29sIFN0eWxlQnVpbGRlckN1c3RvbTo6Z2V0UGFnZVNpemVG
cm9tTmFtZShDU1NQcmltaXRpdmVWYWx1ZSogcGFnZVNpemVOYW1lLCBDUwogICAgIHJldHVybiB0
cnVlOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVWZXJ0
aWNhbEFsaWduKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZh
bHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVZlcnRpY2FsQWxpZ24o
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRv
JiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAg
ICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSkKQEAgLTMyNiwyMSArMzI3LDIxIEBAIGlu
bGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVZlcnRpY2FsQWxpZ24oU3R5
bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpCiAKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09MVVRJT04p
CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0SW1hZ2VSZXNv
bHV0aW9uKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1
aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEltYWdlUmVzb2x1dGlvbihCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSkKIHsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRJbWFnZVJlc29sdXRp
b25Tb3VyY2UoYnVpbGRlclN0YXRlLnBhcmVudFN0eWxlKCkuaW1hZ2VSZXNvbHV0aW9uU291cmNl
KCkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldEltYWdlUmVzb2x1dGlvblNuYXAoYnVp
bGRlclN0YXRlLnBhcmVudFN0eWxlKCkuaW1hZ2VSZXNvbHV0aW9uU25hcCgpKTsKICAgICBidWls
ZGVyU3RhdGUuc3R5bGUoKS5zZXRJbWFnZVJlc29sdXRpb24oYnVpbGRlclN0YXRlLnBhcmVudFN0
eWxlKCkuaW1hZ2VSZXNvbHV0aW9uKCkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5SW5pdGlhbEltYWdlUmVzb2x1dGlvbihTdHlsZTo6QnVpbGRlclN0YXRlJiBi
dWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxJbWFn
ZVJlc29sdXRpb24oQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYnVpbGRlclN0
YXRlLnN0eWxlKCkuc2V0SW1hZ2VSZXNvbHV0aW9uU291cmNlKFJlbmRlclN0eWxlOjppbml0aWFs
SW1hZ2VSZXNvbHV0aW9uU291cmNlKCkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldElt
YWdlUmVzb2x1dGlvblNuYXAoUmVuZGVyU3R5bGU6OmluaXRpYWxJbWFnZVJlc29sdXRpb25TbmFw
KCkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldEltYWdlUmVzb2x1dGlvbihSZW5kZXJT
dHlsZTo6aW5pdGlhbEltYWdlUmVzb2x1dGlvbigpKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlSW1hZ2VSZXNvbHV0aW9uKFN0eWxlOjpCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZUltYWdlUmVzb2x1dGlvbihCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0
ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIEltYWdlUmVzb2x1dGlvblNvdXJjZSBzb3VyY2Ug
PSBSZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdlUmVzb2x1dGlvblNvdXJjZSgpOwogICAgIEltYWdl
UmVzb2x1dGlvblNuYXAgc25hcCA9IFJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9u
U25hcCgpOwpAQCAtMzYxLDExICszNjIsMTEgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3Vz
dG9tOjphcHBseVZhbHVlSW1hZ2VSZXNvbHV0aW9uKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGIKIAog
I2VuZGlmIC8vIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElPTikKIAotaW5saW5lIHZvaWQgU3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRTaXplKFN0eWxlOjpCdWlsZGVyU3RhdGUmKSB7
IH0KK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFNpemUoQnVpbGRlclN0
YXRlJikgeyB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFs
U2l6ZShTdHlsZTo6QnVpbGRlclN0YXRlJikgeyB9CitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9t
OjphcHBseUluaXRpYWxTaXplKEJ1aWxkZXJTdGF0ZSYpIHsgfQogCi1pbmxpbmUgdm9pZCBTdHls
ZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVTaXplKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxk
ZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBw
bHlWYWx1ZVNpemUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkK
IHsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5yZXNldFBhZ2VTaXplVHlwZSgpOwogCkBAIC00
NDEsNyArNDQyLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVl
U2l6ZShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUKICAgICBidWlsZGVyU3RhdGUu
c3R5bGUoKS5zZXRQYWdlU2l6ZSh7IFdURk1vdmUod2lkdGgpLCBXVEZNb3ZlKGhlaWdodCkgfSk7
CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0VGV4dElu
ZGVudChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWls
ZGVyQ3VzdG9tOjphcHBseUluaGVyaXRUZXh0SW5kZW50KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0
YXRlKQogewogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldFRleHRJbmRlbnQoTGVuZ3RoIHsg
YnVpbGRlclN0YXRlLnBhcmVudFN0eWxlKCkudGV4dEluZGVudCgpIH0pOwogI2lmIEVOQUJMRShD
U1MzX1RFWFQpCkBAIC00NTAsNyArNDUxLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3Vz
dG9tOjphcHBseUluaGVyaXRUZXh0SW5kZW50KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWwKICNl
bmRpZgogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbFRl
eHRJbmRlbnQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQg
QnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsVGV4dEluZGVudChCdWlsZGVyU3RhdGUmIGJ1aWxk
ZXJTdGF0ZSkKIHsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRUZXh0SW5kZW50KFJlbmRl
clN0eWxlOjppbml0aWFsVGV4dEluZGVudCgpKTsKICNpZiBFTkFCTEUoQ1NTM19URVhUKQpAQCAt
NDU5LDcgKzQ2MCw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0
aWFsVGV4dEluZGVudChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsCiAjZW5kaWYKIH0KIAotaW5s
aW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlVGV4dEluZGVudChTdHlsZTo6
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2b2lk
IEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVUZXh0SW5kZW50KEJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgTGVuZ3RoIGxlbmd0aE9yUGVyY2VudGFn
ZVZhbHVlOwogI2lmIEVOQUJMRShDU1MzX1RFWFQpCkBAIC00OTMsNyArNDk0LDcgQEAgZW51bSBC
b3JkZXJJbWFnZU1vZGlmaWVyVHlwZSB7IE91dHNldCwgUmVwZWF0LCBTbGljZSwgV2lkdGggfTsK
IHRlbXBsYXRlIDxCb3JkZXJJbWFnZVR5cGUgdHlwZSwgQm9yZGVySW1hZ2VNb2RpZmllclR5cGUg
bW9kaWZpZXI+CiBjbGFzcyBBcHBseVByb3BlcnR5Qm9yZGVySW1hZ2VNb2RpZmllciB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoU3R5bGU6OkJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKEJ1aWxk
ZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogICAgIHsKICAgICAgICAgTmluZVBpZWNlSW1hZ2UgaW1h
Z2UoZ2V0VmFsdWUoYnVpbGRlclN0YXRlLnN0eWxlKCkpKTsKICAgICAgICAgc3dpdGNoIChtb2Rp
ZmllcikgewpAQCAtNTEzLDcgKzUxNCw3IEBAIHB1YmxpYzoKICAgICAgICAgc2V0VmFsdWUoYnVp
bGRlclN0YXRlLnN0eWxlKCksIGltYWdlKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBs
eUluaXRpYWxWYWx1ZShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCisgICAgc3Rh
dGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiAg
ICAgewogICAgICAgICBOaW5lUGllY2VJbWFnZSBpbWFnZShnZXRWYWx1ZShidWlsZGVyU3RhdGUu
c3R5bGUoKSkpOwogICAgICAgICBzd2l0Y2ggKG1vZGlmaWVyKSB7CkBAIC01NDEsNyArNTQyLDcg
QEAgcHVibGljOgogICAgICAgICBzZXRWYWx1ZShidWlsZGVyU3RhdGUuc3R5bGUoKSwgaW1hZ2Up
OwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGU6OkJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlW
YWx1ZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogICAgIHsK
ICAgICAgICAgTmluZVBpZWNlSW1hZ2UgaW1hZ2UoZ2V0VmFsdWUoYnVpbGRlclN0YXRlLnN0eWxl
KCkpKTsKICAgICAgICAgc3dpdGNoIChtb2RpZmllcikgewpAQCAtNTc0LDE1ICs1NzUsMTUgQEAg
cHJpdmF0ZToKIH07CiAKICNkZWZpbmUgREVGSU5FX0JPUkRFUl9JTUFHRV9NT0RJRklFUl9IQU5E
TEVSKHR5cGUsIG1vZGlmaWVyKSBcCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5SW5oZXJpdCMjdHlwZSMjbW9kaWZpZXIoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0
YXRlKSBcCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXQjI3R5cGUjI21v
ZGlmaWVyKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKSBcCiB7IFwKICAgICBBcHBseVByb3Bl
cnR5Qm9yZGVySW1hZ2VNb2RpZmllcjx0eXBlLCBtb2RpZmllcj46OmFwcGx5SW5oZXJpdFZhbHVl
KGJ1aWxkZXJTdGF0ZSk7IFwKIH0gXAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjph
cHBseUluaXRpYWwjI3R5cGUjI21vZGlmaWVyKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJT
dGF0ZSkgXAoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsIyN0eXBlIyNt
b2RpZmllcihCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkgXAogeyBcCiAgICAgQXBwbHlQcm9w
ZXJ0eUJvcmRlckltYWdlTW9kaWZpZXI8dHlwZSwgbW9kaWZpZXI+OjphcHBseUluaXRpYWxWYWx1
ZShidWlsZGVyU3RhdGUpOyBcCiB9IFwKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6
YXBwbHlWYWx1ZSMjdHlwZSMjbW9kaWZpZXIoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0
YXRlLCBDU1NWYWx1ZSYgdmFsdWUpIFwKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5
VmFsdWUjI3R5cGUjI21vZGlmaWVyKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1
ZSYgdmFsdWUpIFwKIHsgXAogICAgIEFwcGx5UHJvcGVydHlCb3JkZXJJbWFnZU1vZGlmaWVyPHR5
cGUsIG1vZGlmaWVyPjo6YXBwbHlWYWx1ZShidWlsZGVyU3RhdGUsIHZhbHVlKTsgXAogfQpAQCAt
NTk4LDEzICs1OTksMTMgQEAgREVGSU5FX0JPUkRFUl9JTUFHRV9NT0RJRklFUl9IQU5ETEVSKFdl
YmtpdE1hc2tCb3hJbWFnZSwgV2lkdGgpCiAKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQog
Ci1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdExpbmVIZWlnaHQo
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1
c3RvbTo6YXBwbHlJbmhlcml0TGluZUhlaWdodChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkK
IHsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRMaW5lSGVpZ2h0KExlbmd0aCB7IGJ1aWxk
ZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLmxpbmVIZWlnaHQoKSB9KTsKICAgICBidWlsZGVyU3RhdGUu
c3R5bGUoKS5zZXRTcGVjaWZpZWRMaW5lSGVpZ2h0KExlbmd0aCB7IGJ1aWxkZXJTdGF0ZS5wYXJl
bnRTdHlsZSgpLnNwZWNpZmllZExpbmVIZWlnaHQoKSB9KTsKIH0KIAotaW5saW5lIHZvaWQgU3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxMaW5lSGVpZ2h0KFN0eWxlOjpCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlh
bExpbmVIZWlnaHQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYnVpbGRlclN0
YXRlLnN0eWxlKCkuc2V0TGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQo
KSk7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0U3BlY2lmaWVkTGluZUhlaWdodChSZW5k
ZXJTdHlsZTo6aW5pdGlhbFNwZWNpZmllZExpbmVIZWlnaHQoKSk7CkBAIC02NTQsOSArNjU1LDkg
QEAgc3RhdGljIGlubGluZSBmbG9hdCBjb21wdXRlTGluZUhlaWdodE11bHRpcGxpZXJEdWVUb0Zv
bnRTaXplKGNvbnN0IERvY3VtZW50JiBkb2MKICAgICByZXR1cm4gMTsKIH0KIAotaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlTGluZUhlaWdodChTdHlsZTo6QnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2b2lkIEJ1aWxk
ZXJDdXN0b206OmFwcGx5VmFsdWVMaW5lSGVpZ2h0KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
LCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgT3B0aW9uYWw8TGVuZ3RoPiBsaW5lSGVpZ2h0ID0g
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGluZUhlaWdodChidWlsZGVyU3RhdGUsIHZh
bHVlLCAxKTsKKyAgICBPcHRpb25hbDxMZW5ndGg+IGxpbmVIZWlnaHQgPSBCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0TGluZUhlaWdodChidWlsZGVyU3RhdGUsIHZhbHVlLCAxKTsKICAgICBpZiAo
IWxpbmVIZWlnaHQpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjY5LDcgKzY3MCw3IEBAIGlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUxpbmVIZWlnaHQoU3R5bGU6OkJ1
aWxkZXJTdGF0ZSYgYnVpbGRlCiAgICAgICAgIGlmIChtdWx0aXBsaWVyID09IDEpCiAgICAgICAg
ICAgICBjb21wdXRlZExpbmVIZWlnaHQgPSBsaW5lSGVpZ2h0LnZhbHVlKCk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGNvbXB1dGVkTGluZUhlaWdodCA9IFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydExpbmVIZWlnaHQoYnVpbGRlclN0YXRlLCB2YWx1ZSwgbXVsdGlwbGllcikudmFs
dWUoKTsKKyAgICAgICAgICAgIGNvbXB1dGVkTGluZUhlaWdodCA9IEJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRMaW5lSGVpZ2h0KGJ1aWxkZXJTdGF0ZSwgdmFsdWUsIG11bHRpcGxpZXIpLnZhbHVl
KCk7CiAgICAgfQogCiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0TGluZUhlaWdodChXVEZN
b3ZlKGNvbXB1dGVkTGluZUhlaWdodCkpOwpAQCAtNjc4LDE5ICs2NzksMTkgQEAgaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlTGluZUhlaWdodChTdHlsZTo6QnVpbGRl
clN0YXRlJiBidWlsZGUKIAogI2VuZGlmCiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlJbmhlcml0T3V0bGluZVN0eWxlKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJT
dGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdE91dGxpbmVTdHls
ZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUo
KS5zZXRPdXRsaW5lU3R5bGVJc0F1dG8oYnVpbGRlclN0YXRlLnBhcmVudFN0eWxlKCkub3V0bGlu
ZVN0eWxlSXNBdXRvKCkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldE91dGxpbmVTdHls
ZShidWlsZGVyU3RhdGUucGFyZW50U3R5bGUoKS5vdXRsaW5lU3R5bGUoKSk7CiB9CiAKLWlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsT3V0bGluZVN0eWxlKFN0eWxl
OjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206
OmFwcGx5SW5pdGlhbE91dGxpbmVTdHlsZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsK
ICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRPdXRsaW5lU3R5bGVJc0F1dG8oUmVuZGVyU3R5
bGU6OmluaXRpYWxPdXRsaW5lU3R5bGVJc0F1dG8oKSk7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxl
KCkuc2V0T3V0bGluZVN0eWxlKFJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyU3R5bGUoKSk7CiB9
CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZU91dGxpbmVTdHls
ZShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lu
bGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVPdXRsaW5lU3R5bGUoQnVpbGRlclN0
YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRp
dmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAKQEAgLTY5OCwx
MyArNjk5LDEzIEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZU91
dGxpbmVTdHlsZShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsCiAgICAgYnVpbGRlclN0YXRlLnN0
eWxlKCkuc2V0T3V0bGluZVN0eWxlKHByaW1pdGl2ZVZhbHVlKTsKIH0KIAotaW5saW5lIHZvaWQg
U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxDbGlwKFN0eWxlOjpCdWlsZGVyU3RhdGUm
IGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbENs
aXAoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxl
KCkuc2V0Q2xpcChMZW5ndGgoKSwgTGVuZ3RoKCksIExlbmd0aCgpLCBMZW5ndGgoKSk7CiAgICAg
YnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0SGFzQ2xpcChmYWxzZSk7CiB9CiAKLWlubGluZSB2b2lk
IFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Q2xpcChTdHlsZTo6QnVpbGRlclN0YXRl
JiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRD
bGlwKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGF1dG8mIHBhcmVudFN0eWxl
ID0gYnVpbGRlclN0YXRlLnBhcmVudFN0eWxlKCk7CiAgICAgaWYgKCFwYXJlbnRTdHlsZS5oYXND
bGlwKCkpCkBAIC03MTQsNyArNzE1LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseUluaGVyaXRDbGlwKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGEKICAgICBi
dWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRIYXNDbGlwKHRydWUpOwogfQogCi1pbmxpbmUgdm9pZCBT
dHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDbGlwKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6
YXBwbHlWYWx1ZUNsaXAoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1
ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSk7CiAgICAgaWYgKGF1dG8qIHJlY3QgPSBwcmltaXRpdmVWYWx1ZS5yZWN0VmFs
dWUoKSkgewpAQCAtNzMxLDcgKzczMiw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlWYWx1ZUNsaXAoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlCiAgICAg
fQogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRM
b2NhbGUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUp
CitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0TG9jYWxlKEJ1aWxk
ZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJp
bWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogCkBAIC03
NDMsMTkgKzc0NCwxOSBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFs
dWVXZWJraXRMb2NhbGUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbAogICAgIGJ1aWxkZXJTdGF0
ZS5zZXRGb250RGVzY3JpcHRpb24oV1RGTW92ZShmb250RGVzY3JpcHRpb24pKTsKIH0KIAotaW5s
aW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV3JpdGluZ01vZGUoU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9p
ZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV3JpdGluZ01vZGUoQnVpbGRlclN0YXRlJiBidWls
ZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBidWlsZGVyU3RhdGUuc2V0V3JpdGlu
Z01vZGUoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSk7CiAgICAgYnVpbGRlclN0
YXRlLnN0eWxlKCkuc2V0SGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlKHRydWUpOwogfQogCi1p
bmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRUZXh0T3JpZW50
YXRpb24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUp
CitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0VGV4dE9yaWVudGF0
aW9uKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAg
YnVpbGRlclN0YXRlLnNldFRleHRPcmllbnRhdGlvbihkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpKTsKIH0KIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCi1pbmxpbmUgdm9p
ZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRUZXh0U2l6ZUFkanVzdChTdHls
ZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2
b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRUZXh0U2l6ZUFkanVzdChCdWlsZGVy
U3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1p
dGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAo
cHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykKQEAgLTc2OSw3ICs3NzAs
NyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRUZXh0
U2l6ZUFkanVzdChTdHlsZTo6QnVpbGRlclN0YQogfQogI2VuZGlmCiAKLWlubGluZSB2b2lkIFN0
eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdFRleHRab29tKFN0eWxlOjpCdWlsZGVy
U3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdFRleHRab29tKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0
YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS52
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpCkBAIC03ODAsMTUgKzc4MSwxNSBAQCBpbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRUZXh0Wm9vbShTdHlsZTo6
QnVpbGRlclN0YXRlJiBidQogfQogCiAjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCi1pbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb2xvclNjaGVtZShTdHlsZTo6QnVp
bGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2b2lkIEJ1
aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb2xvclNjaGVtZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJT
dGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewotICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldENv
bG9yU2NoZW1lKFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENvbG9yU2NoZW1lKGJ1aWxk
ZXJTdGF0ZSwgdmFsdWUpKTsKKyAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRDb2xvclNjaGVt
ZShCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q29sb3JTY2hlbWUoYnVpbGRlclN0YXRlLCB2YWx1
ZSkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldEhhc0V4cGxpY2l0bHlTZXRDb2xvclNj
aGVtZSh0cnVlKTsKIH0KICNlbmRpZgogCiB0ZW1wbGF0ZTxDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
PgotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVRleHRPckJveFNoYWRvd1Zh
bHVlKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQor
aW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlUZXh0T3JCb3hTaGFkb3dWYWx1ZShCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChpczxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CiAgICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpOwpAQCAtODIy
LDUyICs4MjMsNTIgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVRleHRP
ckJveFNoYWRvd1ZhbHVlKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGIKICAgICB9CiB9CiAKLWlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsVGV4dFNoYWRvdyhTdHlsZTo6
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjph
cHBseUluaXRpYWxUZXh0U2hhZG93KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAg
IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldFRleHRTaGFkb3cobnVsbHB0cik7CiB9CiAKLWlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0VGV4dFNoYWRvdyhTdHlsZTo6
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjph
cHBseUluaGVyaXRUZXh0U2hhZG93KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAg
IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldFRleHRTaGFkb3coYnVpbGRlclN0YXRlLnBhcmVudFN0
eWxlKCkudGV4dFNoYWRvdygpID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqYnVpbGRlclN0YXRl
LnBhcmVudFN0eWxlKCkudGV4dFNoYWRvdygpKSA6IG51bGxwdHIpOwogfQogCi1pbmxpbmUgdm9p
ZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVUZXh0U2hhZG93KFN0eWxlOjpCdWlsZGVy
U3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZVRleHRTaGFkb3coQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUs
IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhcHBseVRleHRPckJveFNoYWRvd1ZhbHVlPENTU1By
b3BlcnR5VGV4dFNoYWRvdz4oYnVpbGRlclN0YXRlLCB2YWx1ZSk7CiB9CiAKLWlubGluZSB2b2lk
IFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsQm94U2hhZG93KFN0eWxlOjpCdWlsZGVy
U3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5p
dGlhbEJveFNoYWRvdyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBidWlsZGVy
U3RhdGUuc3R5bGUoKS5zZXRCb3hTaGFkb3cobnVsbHB0cik7CiB9CiAKLWlubGluZSB2b2lkIFN0
eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Qm94U2hhZG93KFN0eWxlOjpCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJp
dEJveFNoYWRvdyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBidWlsZGVyU3Rh
dGUuc3R5bGUoKS5zZXRCb3hTaGFkb3coYnVpbGRlclN0YXRlLnBhcmVudFN0eWxlKCkuYm94U2hh
ZG93KCkgPyBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KCpidWlsZGVyU3RhdGUucGFyZW50U3R5bGUo
KS5ib3hTaGFkb3coKSkgOiBudWxscHRyKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVy
Q3VzdG9tOjphcHBseVZhbHVlQm94U2hhZG93KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJT
dGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlW
YWx1ZUJveFNoYWRvdyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVl
KQogewogICAgIGFwcGx5VGV4dE9yQm94U2hhZG93VmFsdWU8Q1NTUHJvcGVydHlCb3hTaGFkb3c+
KGJ1aWxkZXJTdGF0ZSwgdmFsdWUpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0
b206OmFwcGx5SW5pdGlhbFdlYmtpdEJveFNoYWRvdyhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWls
ZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxXZWJraXRC
b3hTaGFkb3coQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYXBwbHlJbml0aWFs
Qm94U2hhZG93KGJ1aWxkZXJTdGF0ZSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlJbmhlcml0V2Via2l0Qm94U2hhZG93KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFdlYmtp
dEJveFNoYWRvdyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBhcHBseUluaGVy
aXRCb3hTaGFkb3coYnVpbGRlclN0YXRlKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVy
Q3VzdG9tOjphcHBseVZhbHVlV2Via2l0Qm94U2hhZG93KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6
YXBwbHlWYWx1ZVdlYmtpdEJveFNoYWRvdyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NT
VmFsdWUmIHZhbHVlKQogewogICAgIGFwcGx5VGV4dE9yQm94U2hhZG93VmFsdWU8Q1NTUHJvcGVy
dHlXZWJraXRCb3hTaGFkb3c+KGJ1aWxkZXJTdGF0ZSwgdmFsdWUpOwogfQogCi1pbmxpbmUgdm9p
ZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEZvbnRGYW1pbHkoU3R5bGU6OkJ1aWxk
ZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJ
bml0aWFsRm9udEZhbWlseShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBhdXRv
IGZvbnREZXNjcmlwdGlvbiA9IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLmZvbnREZXNjcmlwdGlvbigp
OwogICAgIGF1dG8gaW5pdGlhbERlc2MgPSBGb250Q2FzY2FkZURlc2NyaXB0aW9uKCk7CkBAIC04
ODMsNyArODg0LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRp
YWxGb250RmFtaWx5KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWwKICAgICBidWlsZGVyU3RhdGUu
c2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSk7CiB9CiAKLWlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Rm9udEZhbWlseShTdHlsZTo6
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjph
cHBseUluaGVyaXRGb250RmFtaWx5KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAg
IGF1dG8gZm9udERlc2NyaXB0aW9uID0gYnVpbGRlclN0YXRlLnN0eWxlKCkuZm9udERlc2NyaXB0
aW9uKCk7CiAgICAgYXV0byBwYXJlbnRGb250RGVzY3JpcHRpb24gPSBidWlsZGVyU3RhdGUucGFy
ZW50U3R5bGUoKS5mb250RGVzY3JpcHRpb24oKTsKQEAgLTg5Myw3ICs4OTQsNyBAQCBpbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEZvbnRGYW1pbHkoU3R5bGU6OkJ1
aWxkZXJTdGF0ZSYgYnVpbAogICAgIGJ1aWxkZXJTdGF0ZS5zZXRGb250RGVzY3JpcHRpb24oV1RG
TW92ZShmb250RGVzY3JpcHRpb24pKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3Vz
dG9tOjphcHBseVZhbHVlRm9udEZhbWlseShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3Rh
dGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFs
dWVGb250RmFtaWx5KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUp
CiB7CiAgICAgYXV0byYgdmFsdWVMaXN0ID0gZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSk7
CiAKQEAgLTk3MCwyOCArOTcxLDI4IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6
YXBwbHlWYWx1ZUZvbnRGYW1pbHkoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlCiAgICAgYnVp
bGRlclN0YXRlLnNldEZvbnREZXNjcmlwdGlvbihXVEZNb3ZlKGZvbnREZXNjcmlwdGlvbikpOwog
fQogCi1pbmxpbmUgYm9vbCBTdHlsZUJ1aWxkZXJDdXN0b206OmlzVmFsaWREaXNwbGF5VmFsdWUo
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBEaXNwbGF5VHlwZSBkaXNwbGF5KQor
aW5saW5lIGJvb2wgQnVpbGRlckN1c3RvbTo6aXNWYWxpZERpc3BsYXlWYWx1ZShCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSwgRGlzcGxheVR5cGUgZGlzcGxheSkKIHsKICAgICBpZiAoaXM8U1ZH
RWxlbWVudD4oYnVpbGRlclN0YXRlLmVsZW1lbnQoKSkgJiYgYnVpbGRlclN0YXRlLnN0eWxlKCku
c3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6Ok5vbmUpCiAgICAgICAgIHJldHVybiBkaXNwbGF5ID09
IERpc3BsYXlUeXBlOjpJbmxpbmUgfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6QmxvY2sgfHwg
ZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6Tm9uZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotaW5s
aW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXREaXNwbGF5KFN0eWxlOjpC
dWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFw
cGx5SW5oZXJpdERpc3BsYXkoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgRGlz
cGxheVR5cGUgZGlzcGxheSA9IGJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLmRpc3BsYXkoKTsK
ICAgICBpZiAoaXNWYWxpZERpc3BsYXlWYWx1ZShidWlsZGVyU3RhdGUsIGRpc3BsYXkpKQogICAg
ICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXREaXNwbGF5KGRpc3BsYXkpOwogfQogCi1pbmxp
bmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVEaXNwbGF5KFN0eWxlOjpCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVp
bGRlckN1c3RvbTo6YXBwbHlWYWx1ZURpc3BsYXkoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUs
IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBEaXNwbGF5VHlwZSBkaXNwbGF5ID0gZG93bmNhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAoaXNWYWxpZERpc3BsYXlWYWx1ZShi
dWlsZGVyU3RhdGUsIGRpc3BsYXkpKQogICAgICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRE
aXNwbGF5KGRpc3BsYXkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5VmFsdWVCYXNlbGluZVNoaWZ0KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwg
Q1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUJh
c2VsaW5lU2hpZnQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkK
IHsKICAgICBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBidWlsZGVyU3RhdGUuc3R5bGUoKS5h
Y2Nlc3NTVkdTdHlsZSgpOwogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKQEAgLTEwMTUsMTQgKzEwMTYsMTQgQEAgaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQmFzZWxpbmVTaGlmdChTdHlsZTo6QnVp
bGRlclN0YXRlJiBidWkKICAgICB9CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlJbml0aWFsV2Via2l0QXNwZWN0UmF0aW8oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsV2Via2l0
QXNwZWN0UmF0aW8oQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYnVpbGRlclN0
YXRlLnN0eWxlKCkuc2V0QXNwZWN0UmF0aW9UeXBlKFJlbmRlclN0eWxlOjppbml0aWFsQXNwZWN0
UmF0aW9UeXBlKCkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldEFzcGVjdFJhdGlvRGVu
b21pbmF0b3IoUmVuZGVyU3R5bGU6OmluaXRpYWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKCkpOwog
ICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldEFzcGVjdFJhdGlvTnVtZXJhdG9yKFJlbmRlclN0
eWxlOjppbml0aWFsQXNwZWN0UmF0aW9OdW1lcmF0b3IoKSk7CiB9CiAKLWlubGluZSB2b2lkIFN0
eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0V2Via2l0QXNwZWN0UmF0aW8oU3R5bGU6OkJ1
aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBw
bHlJbmhlcml0V2Via2l0QXNwZWN0UmF0aW8oQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7
CiAgICAgaWYgKGJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLmFzcGVjdFJhdGlvVHlwZSgpID09
IEFzcGVjdFJhdGlvVHlwZTo6QXV0bykKICAgICAgICAgcmV0dXJuOwpAQCAtMTAzMSw3ICsxMDMy
LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRXZWJraXRB
c3BlY3RSYXRpbyhTdHlsZTo6QnVpbGRlclN0YXQKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5z
ZXRBc3BlY3RSYXRpb051bWVyYXRvcihidWlsZGVyU3RhdGUucGFyZW50U3R5bGUoKS5hc3BlY3RS
YXRpb051bWVyYXRvcigpKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjph
cHBseVZhbHVlV2Via2l0QXNwZWN0UmF0aW8oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0
YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZh
bHVlV2Via2l0QXNwZWN0UmF0aW8oQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVl
JiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewogICAg
ICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2
YWx1ZSk7CkBAIC0xMDUxLDIxICsxMDUyLDIxIEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdEFzcGVjdFJhdGlvKFN0eWxlOjpCdWlsZGVyU3RhdGUmCiAg
ICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0QXNwZWN0UmF0aW9OdW1lcmF0b3IoYXNwZWN0UmF0
aW9WYWx1ZS5udW1lcmF0b3JWYWx1ZSgpKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVy
Q3VzdG9tOjphcHBseUluaXRpYWxXZWJraXRUZXh0RW1waGFzaXNTdHlsZShTdHlsZTo6QnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUlu
aXRpYWxXZWJraXRUZXh0RW1waGFzaXNTdHlsZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkK
IHsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRUZXh0RW1waGFzaXNGaWxsKFJlbmRlclN0
eWxlOjppbml0aWFsVGV4dEVtcGhhc2lzRmlsbCgpKTsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUo
KS5zZXRUZXh0RW1waGFzaXNNYXJrKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEVtcGhhc2lzTWFy
aygpKTsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRUZXh0RW1waGFzaXNDdXN0b21NYXJr
KFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEVtcGhhc2lzQ3VzdG9tTWFyaygpKTsKIH0KIAotaW5s
aW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRXZWJraXRUZXh0RW1waGFz
aXNTdHlsZShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBC
dWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRXZWJraXRUZXh0RW1waGFzaXNTdHlsZShCdWlsZGVy
U3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRUZXh0
RW1waGFzaXNGaWxsKGJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLnRleHRFbXBoYXNpc0ZpbGwo
KSk7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0VGV4dEVtcGhhc2lzTWFyayhidWlsZGVy
U3RhdGUucGFyZW50U3R5bGUoKS50ZXh0RW1waGFzaXNNYXJrKCkpOwogICAgIGJ1aWxkZXJTdGF0
ZS5zdHlsZSgpLnNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsoYnVpbGRlclN0YXRlLnBhcmVudFN0
eWxlKCkudGV4dEVtcGhhc2lzQ3VzdG9tTWFyaygpKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0VGV4dEVtcGhhc2lzU3R5bGUoU3R5bGU6OkJ1
aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0VGV4dEVtcGhhc2lzU3R5bGUoQnVpbGRlclN0
YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTVmFs
dWVMaXN0Pih2YWx1ZSkpIHsKICAgICAgICAgYXV0byYgbGlzdCA9IGRvd25jYXN0PENTU1ZhbHVl
TGlzdD4odmFsdWUpOwpAQCAtMTEwMSw4ICsxMTAyLDggQEAgaW5saW5lIHZvaWQgU3R5bGVCdWls
ZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0VGV4dEVtcGhhc2lzU3R5bGUoU3R5bGU6OkJ1aWxk
ZXIKICAgICB9CiB9CiAKLXRlbXBsYXRlIDxTdHlsZUJ1aWxkZXJDdXN0b206OkNvdW50ZXJCZWhh
dmlvciBjb3VudGVyQmVoYXZpb3I+Ci1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5SW5oZXJpdENvdW50ZXIoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQordGVt
cGxhdGUgPEJ1aWxkZXJDdXN0b206OkNvdW50ZXJCZWhhdmlvciBjb3VudGVyQmVoYXZpb3I+Citp
bmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRDb3VudGVyKEJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGF1dG8mIG1hcCA9IGJ1aWxkZXJTdGF0ZS5zdHlsZSgp
LmFjY2Vzc0NvdW50ZXJEaXJlY3RpdmVzKCk7CiAgICAgZm9yIChhdXRvJiBrZXlWYWx1ZSA6IGNv
bnN0X2Nhc3Q8UmVuZGVyU3R5bGUmPihidWlsZGVyU3RhdGUucGFyZW50U3R5bGUoKSkuYWNjZXNz
Q291bnRlckRpcmVjdGl2ZXMoKSkgewpAQCAtMTExNCw4ICsxMTE1LDggQEAgaW5saW5lIHZvaWQg
U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRDb3VudGVyKFN0eWxlOjpCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXIKICAgICB9CiB9CiAKLXRlbXBsYXRlIDxTdHlsZUJ1aWxkZXJDdXN0b206OkNv
dW50ZXJCZWhhdmlvciBjb3VudGVyQmVoYXZpb3I+Ci1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5VmFsdWVDb3VudGVyKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0
ZSwgQ1NTVmFsdWUmIHZhbHVlKQordGVtcGxhdGUgPEJ1aWxkZXJDdXN0b206OkNvdW50ZXJCZWhh
dmlvciBjb3VudGVyQmVoYXZpb3I+CitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZh
bHVlQ291bnRlcihCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQog
ewogICAgIGJvb2wgc2V0Q291bnRlckluY3JlbWVudFRvTm9uZSA9IGNvdW50ZXJCZWhhdmlvciA9
PSBJbmNyZW1lbnQgJiYgaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSAmJiBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmU7CiAKQEAg
LTExNDUsNDMgKzExNDYsNDMgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eVZhbHVlQ291bnRlcihTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3QKICAgICB9CiB9CiAK
LWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsQ291bnRlckluY3Jl
bWVudChTdHlsZTo6QnVpbGRlclN0YXRlJikgeyB9CitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9t
OjphcHBseUluaXRpYWxDb3VudGVySW5jcmVtZW50KEJ1aWxkZXJTdGF0ZSYpIHsgfQogCi1pbmxp
bmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdENvdW50ZXJJbmNyZW1lbnQo
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1
c3RvbTo6YXBwbHlJbmhlcml0Q291bnRlckluY3JlbWVudChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJT
dGF0ZSkKIHsKICAgICBhcHBseUluaGVyaXRDb3VudGVyPEluY3JlbWVudD4oYnVpbGRlclN0YXRl
KTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ291bnRl
ckluY3JlbWVudChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2
YWx1ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb3VudGVySW5jcmVt
ZW50KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAg
YXBwbHlWYWx1ZUNvdW50ZXI8SW5jcmVtZW50PihidWlsZGVyU3RhdGUsIHZhbHVlKTsKIH0KIAot
aW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxDb3VudGVyUmVzZXQo
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYpIHsgfQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBw
bHlJbml0aWFsQ291bnRlclJlc2V0KEJ1aWxkZXJTdGF0ZSYpIHsgfQogCi1pbmxpbmUgdm9pZCBT
dHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdENvdW50ZXJSZXNldChTdHlsZTo6QnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUlu
aGVyaXRDb3VudGVyUmVzZXQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYXBw
bHlJbmhlcml0Q291bnRlcjxSZXNldD4oYnVpbGRlclN0YXRlKTsKIH0KIAotaW5saW5lIHZvaWQg
U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ291bnRlclJlc2V0KFN0eWxlOjpCdWlsZGVy
U3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZUNvdW50ZXJSZXNldChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0
ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGFwcGx5VmFsdWVDb3VudGVyPFJlc2V0PihidWls
ZGVyU3RhdGUsIHZhbHVlKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjph
cHBseUluaXRpYWxDdXJzb3IoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5s
aW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsQ3Vyc29yKEJ1aWxkZXJTdGF0ZSYg
YnVpbGRlclN0YXRlKQogewogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLmNsZWFyQ3Vyc29yTGlz
dCgpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldEN1cnNvcihSZW5kZXJTdHlsZTo6aW5p
dGlhbEN1cnNvcigpKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eUluaGVyaXRDdXJzb3IoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5l
IHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Q3Vyc29yKEJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlKQogewogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldEN1cnNvcihidWlsZGVy
U3RhdGUucGFyZW50U3R5bGUoKS5jdXJzb3IoKSk7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCku
c2V0Q3Vyc29yTGlzdChidWlsZGVyU3RhdGUucGFyZW50U3R5bGUoKS5jdXJzb3JzKCkpOwogfQog
Ci1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDdXJzb3IoU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9p
ZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ3Vyc29yKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0
YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuY2xlYXJD
dXJzb3JMaXN0KCk7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKQEAg
LTEyMDYsMTMgKzEyMDcsMTMgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eVZhbHVlQ3Vyc29yKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGEKICAgICB9CiB9CiAK
LWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsRmlsbChTdHlsZTo6
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjph
cHBseUluaXRpYWxGaWxsKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGF1dG8m
IHN2Z1N0eWxlID0gYnVpbGRlclN0YXRlLnN0eWxlKCkuYWNjZXNzU1ZHU3R5bGUoKTsKICAgICBz
dmdTdHlsZS5zZXRGaWxsUGFpbnQoU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxGaWxsUGFpbnRUeXBl
KCksIFNWR1JlbmRlclN0eWxlOjppbml0aWFsRmlsbFBhaW50Q29sb3IoKSwgU1ZHUmVuZGVyU3R5
bGU6OmluaXRpYWxGaWxsUGFpbnRVcmkoKSwgYnVpbGRlclN0YXRlLmFwcGx5UHJvcGVydHlUb1Jl
Z3VsYXJTdHlsZSgpLCBidWlsZGVyU3RhdGUuYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHls
ZSgpKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRG
aWxsKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxk
ZXJDdXN0b206OmFwcGx5SW5oZXJpdEZpbGwoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7
CiAgICAgYXV0byYgc3ZnU3R5bGUgPSBidWlsZGVyU3RhdGUuc3R5bGUoKS5hY2Nlc3NTVkdTdHls
ZSgpOwogICAgIGF1dG8mIHN2Z1BhcmVudFN0eWxlID0gYnVpbGRlclN0YXRlLnBhcmVudFN0eWxl
KCkuc3ZnU3R5bGUoKTsKQEAgLTEyMjAsNyArMTIyMSw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlJbmhlcml0RmlsbChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVy
U3RhCiAKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRmls
bChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lu
bGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVGaWxsKEJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgc3ZnU3R5bGUgPSBidWls
ZGVyU3RhdGUuc3R5bGUoKS5hY2Nlc3NTVkdTdHlsZSgpOwogICAgIGNvbnN0IGF1dG8qIGxvY2Fs
VmFsdWUgPSB2YWx1ZS5pc1ByaW1pdGl2ZVZhbHVlKCkgPyAmZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhbHVlKSA6IG51bGxwdHI7CkBAIC0xMjUxLDIwICsxMjUyLDIwIEBAIGlubGluZSB2
b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZpbGwoU3R5bGU6OkJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlCiAgICAgc3ZnU3R5bGUuc2V0RmlsbFBhaW50KHBhaW50VHlwZSwgY29s
b3IsIHVybCwgYnVpbGRlclN0YXRlLmFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpLCBidWls
ZGVyU3RhdGUuYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSgpKTsKIH0KIAotaW5saW5l
IHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxTdHJva2UoU3R5bGU6OkJ1aWxk
ZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJ
bml0aWFsU3Ryb2tlKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIFNWR1JlbmRl
clN0eWxlJiBzdmdTdHlsZSA9IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLmFjY2Vzc1NWR1N0eWxlKCk7
CiAgICAgc3ZnU3R5bGUuc2V0U3Ryb2tlUGFpbnQoU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxTdHJv
a2VQYWludFR5cGUoKSwgU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxTdHJva2VQYWludENvbG9yKCks
IFNWR1JlbmRlclN0eWxlOjppbml0aWFsU3Ryb2tlUGFpbnRVcmkoKSwgYnVpbGRlclN0YXRlLmFw
cGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpLCBidWlsZGVyU3RhdGUuYXBwbHlQcm9wZXJ0eVRv
VmlzaXRlZExpbmtTdHlsZSgpKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseUluaGVyaXRTdHJva2UoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQor
aW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0U3Ryb2tlKEJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGF1dG8mIHN2Z1N0eWxlID0gYnVpbGRlclN0YXRlLnN0
eWxlKCkuYWNjZXNzU1ZHU3R5bGUoKTsKICAgICBhdXRvJiBzdmdQYXJlbnRTdHlsZSA9IGJ1aWxk
ZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLnN2Z1N0eWxlKCk7CiAgICAgc3ZnU3R5bGUuc2V0U3Ryb2tl
UGFpbnQoc3ZnUGFyZW50U3R5bGUuc3Ryb2tlUGFpbnRUeXBlKCksIHN2Z1BhcmVudFN0eWxlLnN0
cm9rZVBhaW50Q29sb3IoKSwgc3ZnUGFyZW50U3R5bGUuc3Ryb2tlUGFpbnRVcmkoKSwgYnVpbGRl
clN0YXRlLmFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpLCBidWlsZGVyU3RhdGUuYXBwbHlQ
cm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSgpKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWls
ZGVyQ3VzdG9tOjphcHBseVZhbHVlU3Ryb2tlKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJT
dGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlW
YWx1ZVN0cm9rZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQog
ewogICAgIGF1dG8mIHN2Z1N0eWxlID0gYnVpbGRlclN0YXRlLnN0eWxlKCkuYWNjZXNzU1ZHU3R5
bGUoKTsKICAgICBjb25zdCBhdXRvKiBsb2NhbFZhbHVlID0gdmFsdWUuaXNQcmltaXRpdmVWYWx1
ZSgpID8gJmRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkgOiBudWxscHRyOwpAQCAt
MTI5NSwxOCArMTI5NiwxOCBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5
VmFsdWVTdHJva2UoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YQogICAgIHN2Z1N0eWxl
LnNldFN0cm9rZVBhaW50KHBhaW50VHlwZSwgY29sb3IsIHVybCwgYnVpbGRlclN0YXRlLmFwcGx5
UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpLCBidWlsZGVyU3RhdGUuYXBwbHlQcm9wZXJ0eVRvVmlz
aXRlZExpbmtTdHlsZSgpKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjph
cHBseUluaXRpYWxDb250ZW50KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lu
bGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbENvbnRlbnQoQnVpbGRlclN0YXRl
JiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuY2xlYXJDb250ZW50
KCk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Q29u
dGVudChTdHlsZTo6QnVpbGRlclN0YXRlJikKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFw
cGx5SW5oZXJpdENvbnRlbnQoQnVpbGRlclN0YXRlJikKIHsKICAgICAvLyBGSVhNRTogSW4gQ1NT
MywgaXQgd2lsbCBiZSBwb3NzaWJsZSB0byBpbmhlcml0IGNvbnRlbnQuIEluIENTUzIgaXQgaXMg
bm90LiBUaGlzCiAgICAgLy8gbm90ZSBpcyBhIHJlbWluZGVyIHRoYXQgZXZlbnR1YWxseSAiaW5o
ZXJpdCIgbmVlZHMgdG8gYmUgc3VwcG9ydGVkLgogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxk
ZXJDdXN0b206OmFwcGx5VmFsdWVDb250ZW50KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJT
dGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlW
YWx1ZUNvbnRlbnQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkK
IHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewogICAgICAgICBjb25z
dCBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSk7CkBAIC0xMzkwLDcgKzEzOTEsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206
OmFwcGx5VmFsdWVDb250ZW50KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdAogICAgICAg
ICBidWlsZGVyU3RhdGUuc3R5bGUoKS5jbGVhckNvbnRlbnQoKTsKIH0KIAotaW5saW5lIHZvaWQg
U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRGb250VmFyaWFudExpZ2F0dXJlcyhTdHls
ZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9t
OjphcHBseUluaGVyaXRGb250VmFyaWFudExpZ2F0dXJlcyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJT
dGF0ZSkKIHsKICAgICBhdXRvIGZvbnREZXNjcmlwdGlvbiA9IGJ1aWxkZXJTdGF0ZS5mb250RGVz
Y3JpcHRpb24oKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0VmFyaWFudENvbW1vbkxpZ2F0dXJl
cyhidWlsZGVyU3RhdGUucGFyZW50Rm9udERlc2NyaXB0aW9uKCkudmFyaWFudENvbW1vbkxpZ2F0
dXJlcygpKTsKQEAgLTE0MDAsNyArMTQwMSw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlJbmhlcml0Rm9udFZhcmlhbnRMaWdhdHVyZXMoU3R5bGU6OkJ1aWxkZXJTCiAg
ICAgYnVpbGRlclN0YXRlLnNldEZvbnREZXNjcmlwdGlvbihXVEZNb3ZlKGZvbnREZXNjcmlwdGlv
bikpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEZv
bnRWYXJpYW50TGlnYXR1cmVzKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lu
bGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEZvbnRWYXJpYW50TGlnYXR1cmVz
KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGF1dG8gZm9udERlc2NyaXB0aW9u
ID0gYnVpbGRlclN0YXRlLmZvbnREZXNjcmlwdGlvbigpOwogICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRWYXJpYW50Q29tbW9uTGlnYXR1cmVzKEZvbnRWYXJpYW50TGlnYXR1cmVzOjpOb3JtYWwpOwpA
QCAtMTQxMCw3ICsxNDExLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eUluaXRpYWxGb250VmFyaWFudExpZ2F0dXJlcyhTdHlsZTo6QnVpbGRlclMKICAgICBidWlsZGVy
U3RhdGUuc2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSk7CiB9CiAK
LWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZvbnRWYXJpYW50TGln
YXR1cmVzKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVl
KQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZvbnRWYXJpYW50TGlnYXR1
cmVzKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAg
YXV0byBmb250RGVzY3JpcHRpb24gPSBidWlsZGVyU3RhdGUuZm9udERlc2NyaXB0aW9uKCk7CiAg
ICAgYXV0byB2YXJpYW50TGlnYXR1cmVzID0gZXh0cmFjdEZvbnRWYXJpYW50TGlnYXR1cmVzKHZh
bHVlKTsKQEAgLTE0MjEsNyArMTQyMiw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlWYWx1ZUZvbnRWYXJpYW50TGlnYXR1cmVzKFN0eWxlOjpCdWlsZGVyU3RhCiAgICAg
YnVpbGRlclN0YXRlLnNldEZvbnREZXNjcmlwdGlvbihXVEZNb3ZlKGZvbnREZXNjcmlwdGlvbikp
OwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEZvbnRW
YXJpYW50TnVtZXJpYyhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUg
dm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRGb250VmFyaWFudE51bWVyaWMoQnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYXV0byBmb250RGVzY3JpcHRpb24gPSBidWls
ZGVyU3RhdGUuZm9udERlc2NyaXB0aW9uKCk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldFZhcmlh
bnROdW1lcmljRmlndXJlKGJ1aWxkZXJTdGF0ZS5wYXJlbnRGb250RGVzY3JpcHRpb24oKS52YXJp
YW50TnVtZXJpY0ZpZ3VyZSgpKTsKQEAgLTE0MzIsNyArMTQzMyw3IEBAIGlubGluZSB2b2lkIFN0
eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Rm9udFZhcmlhbnROdW1lcmljKFN0eWxlOjpC
dWlsZGVyU3RhCiAgICAgYnVpbGRlclN0YXRlLnNldEZvbnREZXNjcmlwdGlvbihXVEZNb3ZlKGZv
bnREZXNjcmlwdGlvbikpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5SW5pdGlhbEZvbnRWYXJpYW50TnVtZXJpYyhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVy
U3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxGb250VmFyaWFu
dE51bWVyaWMoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYXV0byBmb250RGVz
Y3JpcHRpb24gPSBidWlsZGVyU3RhdGUuZm9udERlc2NyaXB0aW9uKCk7CiAgICAgZm9udERlc2Ny
aXB0aW9uLnNldFZhcmlhbnROdW1lcmljRmlndXJlKEZvbnRWYXJpYW50TnVtZXJpY0ZpZ3VyZTo6
Tm9ybWFsKTsKQEAgLTE0NDMsNyArMTQ0NCw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlJbml0aWFsRm9udFZhcmlhbnROdW1lcmljKFN0eWxlOjpCdWlsZGVyU3RhCiAg
ICAgYnVpbGRlclN0YXRlLnNldEZvbnREZXNjcmlwdGlvbihXVEZNb3ZlKGZvbnREZXNjcmlwdGlv
bikpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVGb250
VmFyaWFudE51bWVyaWMoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1
ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRm9udFZhcmlh
bnROdW1lcmljKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7
CiAgICAgYXV0byBmb250RGVzY3JpcHRpb24gPSBidWlsZGVyU3RhdGUuZm9udERlc2NyaXB0aW9u
KCk7CiAgICAgYXV0byB2YXJpYW50TnVtZXJpYyA9IGV4dHJhY3RGb250VmFyaWFudE51bWVyaWMo
dmFsdWUpOwpAQCAtMTQ1NSw3ICsxNDU2LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3Vz
dG9tOjphcHBseVZhbHVlRm9udFZhcmlhbnROdW1lcmljKFN0eWxlOjpCdWlsZGVyU3RhdGUKICAg
ICBidWlsZGVyU3RhdGUuc2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZm9udERlc2NyaXB0aW9u
KSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Rm9u
dFZhcmlhbnRFYXN0QXNpYW4oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5s
aW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Rm9udFZhcmlhbnRFYXN0QXNpYW4o
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYXV0byBmb250RGVzY3JpcHRpb24g
PSBidWlsZGVyU3RhdGUuZm9udERlc2NyaXB0aW9uKCk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNl
dFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50KGJ1aWxkZXJTdGF0ZS5wYXJlbnRGb250RGVzY3JpcHRp
b24oKS52YXJpYW50RWFzdEFzaWFuVmFyaWFudCgpKTsKQEAgLTE0NjQsNyArMTQ2NSw3IEBAIGlu
bGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Rm9udFZhcmlhbnRFYXN0
QXNpYW4oU3R5bGU6OkJ1aWxkZXJTCiAgICAgYnVpbGRlclN0YXRlLnNldEZvbnREZXNjcmlwdGlv
bihXVEZNb3ZlKGZvbnREZXNjcmlwdGlvbikpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxk
ZXJDdXN0b206OmFwcGx5SW5pdGlhbEZvbnRWYXJpYW50RWFzdEFzaWFuKFN0eWxlOjpCdWlsZGVy
U3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5p
dGlhbEZvbnRWYXJpYW50RWFzdEFzaWFuKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewog
ICAgIGF1dG8gZm9udERlc2NyaXB0aW9uID0gYnVpbGRlclN0YXRlLmZvbnREZXNjcmlwdGlvbigp
OwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRWYXJpYW50RWFzdEFzaWFuVmFyaWFudChGb250VmFy
aWFudEVhc3RBc2lhblZhcmlhbnQ6Ok5vcm1hbCk7CkBAIC0xNDczLDcgKzE0NzQsNyBAQCBpbmxp
bmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEZvbnRWYXJpYW50RWFzdEFz
aWFuKFN0eWxlOjpCdWlsZGVyUwogICAgIGJ1aWxkZXJTdGF0ZS5zZXRGb250RGVzY3JpcHRpb24o
V1RGTW92ZShmb250RGVzY3JpcHRpb24pKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVy
Q3VzdG9tOjphcHBseVZhbHVlRm9udFZhcmlhbnRFYXN0QXNpYW4oU3R5bGU6OkJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3Vz
dG9tOjphcHBseVZhbHVlRm9udFZhcmlhbnRFYXN0QXNpYW4oQnVpbGRlclN0YXRlJiBidWlsZGVy
U3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvIGZvbnREZXNjcmlwdGlvbiA9IGJ1
aWxkZXJTdGF0ZS5mb250RGVzY3JpcHRpb24oKTsKICAgICBhdXRvIHZhcmlhbnRFYXN0QXNpYW4g
PSBleHRyYWN0Rm9udFZhcmlhbnRFYXN0QXNpYW4odmFsdWUpOwpAQCAtMTQ4Myw3ICsxNDg0LDcg
QEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRm9udFZhcmlhbnRF
YXN0QXNpYW4oU3R5bGU6OkJ1aWxkZXJTdGEKICAgICBidWlsZGVyU3RhdGUuc2V0Rm9udERlc2Ny
aXB0aW9uKFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxl
QnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsRm9udFNpemUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYg
YnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsRm9u
dFNpemUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYXV0byBmb250RGVzY3Jp
cHRpb24gPSBidWlsZGVyU3RhdGUuc3R5bGUoKS5mb250RGVzY3JpcHRpb24oKTsKICAgICBmbG9h
dCBzaXplID0gU3R5bGU6OmZvbnRTaXplRm9yS2V5d29yZChDU1NWYWx1ZU1lZGl1bSwgZm9udERl
c2NyaXB0aW9uLnVzZUZpeGVkRGVmYXVsdFNpemUoKSwgYnVpbGRlclN0YXRlLmRvY3VtZW50KCkp
OwpAQCAtMTQ5Niw3ICsxNDk3LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjph
cHBseUluaXRpYWxGb250U2l6ZShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGUKICAgICBidWls
ZGVyU3RhdGUuc2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSk7CiB9
CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Rm9udFNpemUo
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1
c3RvbTo6YXBwbHlJbmhlcml0Rm9udFNpemUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7
CiAgICAgY29uc3QgYXV0byYgcGFyZW50Rm9udERlc2NyaXB0aW9uID0gYnVpbGRlclN0YXRlLnBh
cmVudFN0eWxlKCkuZm9udERlc2NyaXB0aW9uKCk7CiAgICAgZmxvYXQgc2l6ZSA9IHBhcmVudEZv
bnREZXNjcmlwdGlvbi5zcGVjaWZpZWRTaXplKCk7CkBAIC0xNTEyLDcgKzE1MTMsNyBAQCBpbmxp
bmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEZvbnRTaXplKFN0eWxlOjpC
dWlsZGVyU3RhdGUmIGJ1aWxkZQogCiAvLyBXaGVuIHRoZSBDU1Mga2V5d29yZCAibGFyZ2VyIiBp
cyB1c2VkLCB0aGlzIGZ1bmN0aW9uIHdpbGwgYXR0ZW1wdCB0byBtYXRjaCB3aXRoaW4gdGhlIGtl
eXdvcmQKIC8vIHRhYmxlLCBhbmQgZmFpbGluZyB0aGF0LCB3aWxsIHNpbXBseSBtdWx0aXBseSBi
eSAxLjIuCi1pbmxpbmUgZmxvYXQgU3R5bGVCdWlsZGVyQ3VzdG9tOjpsYXJnZXJGb250U2l6ZShm
bG9hdCBzaXplKQoraW5saW5lIGZsb2F0IEJ1aWxkZXJDdXN0b206OmxhcmdlckZvbnRTaXplKGZs
b2F0IHNpemUpCiB7CiAgICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQgd2hlcmUgd2UgZmFsbCBpbiB0
aGUgc2l6ZSByYW5nZXMgKHh4LXNtYWxsIHRvIHh4eC1sYXJnZSkgYW5kIHNjYWxlIHVwIHRvCiAg
ICAgLy8gdGhlIG5leHQgc2l6ZSBsZXZlbC4KQEAgLTE1MjAsMTQgKzE1MjEsMTQgQEAgaW5saW5l
IGZsb2F0IFN0eWxlQnVpbGRlckN1c3RvbTo6bGFyZ2VyRm9udFNpemUoZmxvYXQgc2l6ZSkKIH0K
IAogLy8gTGlrZSB0aGUgcHJldmlvdXMgZnVuY3Rpb24sIGJ1dCBmb3IgdGhlIGtleXdvcmQgInNt
YWxsZXIiLgotaW5saW5lIGZsb2F0IFN0eWxlQnVpbGRlckN1c3RvbTo6c21hbGxlckZvbnRTaXpl
KGZsb2F0IHNpemUpCitpbmxpbmUgZmxvYXQgQnVpbGRlckN1c3RvbTo6c21hbGxlckZvbnRTaXpl
KGZsb2F0IHNpemUpCiB7CiAgICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQgd2hlcmUgd2UgZmFsbCBp
biB0aGUgc2l6ZSByYW5nZXMgKHh4LXNtYWxsIHRvIHh4eC1sYXJnZSkgYW5kIHNjYWxlIGRvd24g
dG8KICAgICAvLyB0aGUgbmV4dCBzaXplIGxldmVsLgogICAgIHJldHVybiBzaXplIC8gMS4yZjsK
IH0KIAotaW5saW5lIGZsb2F0IFN0eWxlQnVpbGRlckN1c3RvbTo6ZGV0ZXJtaW5lUnVieVRleHRT
aXplTXVsdGlwbGllcihTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUg
ZmxvYXQgQnVpbGRlckN1c3RvbTo6ZGV0ZXJtaW5lUnVieVRleHRTaXplTXVsdGlwbGllcihCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBpZiAoYnVpbGRlclN0YXRlLnN0eWxlKCku
cnVieVBvc2l0aW9uKCkgIT0gUnVieVBvc2l0aW9uOjpJbnRlckNoYXJhY3RlcikKICAgICAgICAg
cmV0dXJuIDAuNWY7CkBAIC0xNTQ0LDcgKzE1NDUsNyBAQCBpbmxpbmUgZmxvYXQgU3R5bGVCdWls
ZGVyQ3VzdG9tOjpkZXRlcm1pbmVSdWJ5VGV4dFNpemVNdWx0aXBsaWVyKFN0eWxlOjpCdWlsZGVy
UwogICAgIHJldHVybiAwLjI1ZjsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseUluaXRpYWxGb250U3R5bGUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
KQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsRm9udFN0eWxlKEJ1aWxk
ZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGF1dG8gZm9udERlc2NyaXB0aW9uID0gYnVp
bGRlclN0YXRlLmZvbnREZXNjcmlwdGlvbigpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJdGFs
aWMoRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6aW5pdGlhbEl0YWxpYygpKTsKQEAgLTE1NTIsNyAr
MTU1Myw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsRm9u
dFN0eWxlKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkCiAgICAgYnVpbGRlclN0YXRlLnNldEZv
bnREZXNjcmlwdGlvbihXVEZNb3ZlKGZvbnREZXNjcmlwdGlvbikpOwogfQogCi1pbmxpbmUgdm9p
ZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEZvbnRTdHlsZShTdHlsZTo6QnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUlu
aGVyaXRGb250U3R5bGUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYXV0byBm
b250RGVzY3JpcHRpb24gPSBidWlsZGVyU3RhdGUuZm9udERlc2NyaXB0aW9uKCk7CiAgICAgZm9u
dERlc2NyaXB0aW9uLnNldEl0YWxpYyhidWlsZGVyU3RhdGUucGFyZW50Rm9udERlc2NyaXB0aW9u
KCkuaXRhbGljKCkpOwpAQCAtMTU2MCwxNiArMTU2MSwxNiBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1
aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEZvbnRTdHlsZShTdHlsZTo6QnVpbGRlclN0YXRlJiBi
dWlsZAogICAgIGJ1aWxkZXJTdGF0ZS5zZXRGb250RGVzY3JpcHRpb24oV1RGTW92ZShmb250RGVz
Y3JpcHRpb24pKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZh
bHVlRm9udFN0eWxlKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUm
IHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZvbnRTdHlsZShC
dWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8m
IGZvbnRTdHlsZVZhbHVlID0gZG93bmNhc3Q8Q1NTRm9udFN0eWxlVmFsdWU+KHZhbHVlKTsKICAg
ICBhdXRvIGZvbnREZXNjcmlwdGlvbiA9IGJ1aWxkZXJTdGF0ZS5mb250RGVzY3JpcHRpb24oKTsK
LSAgICBmb250RGVzY3JpcHRpb24uc2V0SXRhbGljKFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydEZvbnRTdHlsZUZyb21WYWx1ZShmb250U3R5bGVWYWx1ZSkpOworICAgIGZvbnREZXNjcmlw
dGlvbi5zZXRJdGFsaWMoQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRTdHlsZUZyb21WYWx1
ZShmb250U3R5bGVWYWx1ZSkpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRGb250U3R5bGVBeGlz
KGZvbnRTdHlsZVZhbHVlLmZvbnRTdHlsZVZhbHVlLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVJdGFs
aWMgPyBGb250U3R5bGVBeGlzOjppdGFsIDogRm9udFN0eWxlQXhpczo6c2xudCk7CiAgICAgYnVp
bGRlclN0YXRlLnNldEZvbnREZXNjcmlwdGlvbihXVEZNb3ZlKGZvbnREZXNjcmlwdGlvbikpOwog
fQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVGb250U2l6ZShT
dHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGlu
ZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVGb250U2l6ZShCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8gZm9udERlc2NyaXB0aW9u
ID0gYnVpbGRlclN0YXRlLnN0eWxlKCkuZm9udERlc2NyaXB0aW9uKCk7CiAgICAgZm9udERlc2Ny
aXB0aW9uLnNldEtleXdvcmRTaXplRnJvbUlkZW50aWZpZXIoQ1NTVmFsdWVJbnZhbGlkKTsKQEAg
LTE2MjksMjEgKzE2MzAsMjEgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eVZhbHVlRm9udFNpemUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclMKICAgICBidWlsZGVy
U3RhdGUuc2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSk7CiB9CiAK
LWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsR3JpZFRlbXBsYXRl
QXJlYXMoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVp
bGRlckN1c3RvbTo6YXBwbHlJbml0aWFsR3JpZFRlbXBsYXRlQXJlYXMoQnVpbGRlclN0YXRlJiBi
dWlsZGVyU3RhdGUpCiB7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0TmFtZWRHcmlkQXJl
YShSZW5kZXJTdHlsZTo6aW5pdGlhbE5hbWVkR3JpZEFyZWEoKSk7CiAgICAgYnVpbGRlclN0YXRl
LnN0eWxlKCkuc2V0TmFtZWRHcmlkQXJlYVJvd0NvdW50KFJlbmRlclN0eWxlOjppbml0aWFsTmFt
ZWRHcmlkQXJlYUNvdW50KCkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldE5hbWVkR3Jp
ZEFyZWFDb2x1bW5Db3VudChSZW5kZXJTdHlsZTo6aW5pdGlhbE5hbWVkR3JpZEFyZWFDb3VudCgp
KTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRHcmlk
VGVtcGxhdGVBcmVhcyhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUg
dm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRHcmlkVGVtcGxhdGVBcmVhcyhCdWlsZGVy
U3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXROYW1l
ZEdyaWRBcmVhKGJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLm5hbWVkR3JpZEFyZWEoKSk7CiAg
ICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0TmFtZWRHcmlkQXJlYVJvd0NvdW50KGJ1aWxkZXJT
dGF0ZS5wYXJlbnRTdHlsZSgpLm5hbWVkR3JpZEFyZWFSb3dDb3VudCgpKTsKICAgICBidWlsZGVy
U3RhdGUuc3R5bGUoKS5zZXROYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoYnVpbGRlclN0YXRlLnBh
cmVudFN0eWxlKCkubmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KCkpOwogfQogCi1pbmxpbmUgdm9p
ZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVHcmlkVGVtcGxhdGVBcmVhcyhTdHlsZTo6
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2b2lk
IEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVHcmlkVGVtcGxhdGVBcmVhcyhCdWlsZGVyU3RhdGUm
IGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChpczxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpKSB7CiAgICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpOwpAQCAtMTY1NSw4ICsxNjU2
LDggQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlR3JpZFRlbXBs
YXRlQXJlYXMoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYKIAogICAgIE5hbWVkR3JpZExpbmVzTWFwIG5h
bWVkR3JpZENvbHVtbkxpbmVzID0gYnVpbGRlclN0YXRlLnN0eWxlKCkubmFtZWRHcmlkQ29sdW1u
TGluZXMoKTsKICAgICBOYW1lZEdyaWRMaW5lc01hcCBuYW1lZEdyaWRSb3dMaW5lcyA9IGJ1aWxk
ZXJTdGF0ZS5zdHlsZSgpLm5hbWVkR3JpZFJvd0xpbmVzKCk7Ci0gICAgU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjcmVhdGVJbXBsaWNpdE5hbWVkR3JpZExpbmVzRnJvbUdyaWRBcmVhKG5ld05hbWVk
R3JpZEFyZWFzLCBuYW1lZEdyaWRDb2x1bW5MaW5lcywgRm9yQ29sdW1ucyk7Ci0gICAgU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjcmVhdGVJbXBsaWNpdE5hbWVkR3JpZExpbmVzRnJvbUdyaWRBcmVh
KG5ld05hbWVkR3JpZEFyZWFzLCBuYW1lZEdyaWRSb3dMaW5lcywgRm9yUm93cyk7CisgICAgQnVp
bGRlckNvbnZlcnRlcjo6Y3JlYXRlSW1wbGljaXROYW1lZEdyaWRMaW5lc0Zyb21HcmlkQXJlYShu
ZXdOYW1lZEdyaWRBcmVhcywgbmFtZWRHcmlkQ29sdW1uTGluZXMsIEZvckNvbHVtbnMpOworICAg
IEJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUltcGxpY2l0TmFtZWRHcmlkTGluZXNGcm9tR3JpZEFy
ZWEobmV3TmFtZWRHcmlkQXJlYXMsIG5hbWVkR3JpZFJvd0xpbmVzLCBGb3JSb3dzKTsKICAgICBi
dWlsZGVyU3RhdGUuc3R5bGUoKS5zZXROYW1lZEdyaWRDb2x1bW5MaW5lcyhuYW1lZEdyaWRDb2x1
bW5MaW5lcyk7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0TmFtZWRHcmlkUm93TGluZXMo
bmFtZWRHcmlkUm93TGluZXMpOwogCkBAIC0xNjY1LDE0ICsxNjY2LDE0IEBAIGlubGluZSB2b2lk
IFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUdyaWRUZW1wbGF0ZUFyZWFzKFN0eWxlOjpC
dWlsZGVyU3RhdGUmCiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0TmFtZWRHcmlkQXJlYUNv
bHVtbkNvdW50KGdyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuY29sdW1uQ291bnQoKSk7CiB9CiAKLWlu
bGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsR3JpZFRlbXBsYXRlQ29s
dW1ucyhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWls
ZGVyQ3VzdG9tOjphcHBseUluaXRpYWxHcmlkVGVtcGxhdGVDb2x1bW5zKEJ1aWxkZXJTdGF0ZSYg
YnVpbGRlclN0YXRlKQogewogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldEdyaWRDb2x1bW5z
KFJlbmRlclN0eWxlOjppbml0aWFsR3JpZENvbHVtbnMoKSk7CiAgICAgYnVpbGRlclN0YXRlLnN0
eWxlKCkuc2V0TmFtZWRHcmlkQ29sdW1uTGluZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdy
aWRDb2x1bW5MaW5lcygpKTsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRPcmRlcmVkTmFt
ZWRHcmlkQ29sdW1uTGluZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxPcmRlcmVkTmFtZWRHcmlkQ29s
dW1uTGluZXMoKSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJ
bmhlcml0R3JpZFRlbXBsYXRlQ29sdW1ucyhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3Rh
dGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRHcmlkVGVtcGxhdGVD
b2x1bW5zKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGJ1aWxkZXJTdGF0ZS5z
dHlsZSgpLnNldEdyaWRDb2x1bW5zKGJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLmdyaWRDb2x1
bW5zKCkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldE5hbWVkR3JpZENvbHVtbkxpbmVz
KGJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLm5hbWVkR3JpZENvbHVtbkxpbmVzKCkpOwpAQCAt
MTY5MCw0NSArMTY5MSw0NSBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5
SW5oZXJpdEdyaWRUZW1wbGF0ZUNvbHVtbnMoU3R5bGU6OkJ1aWxkZXJTdAogICAgIHN0eWxlLnNl
dEdyaWRBdXRvUmVwZWF0IyNUcmFja1R5cGUjI3NUeXBlKHRyYWNrc0RhdGEubV9hdXRvUmVwZWF0
VHlwZSk7IFwKICAgICBzdHlsZS5zZXRHcmlkQXV0b1JlcGVhdCMjVHJhY2tUeXBlIyNzSW5zZXJ0
aW9uUG9pbnQodHJhY2tzRGF0YS5tX2F1dG9SZXBlYXRJbnNlcnRpb25Qb2ludCk7CiAKLWlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUdyaWRUZW1wbGF0ZUNvbHVtbnMo
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxp
bmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlR3JpZFRlbXBsYXRlQ29sdW1ucyhCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewotICAgIFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6VHJhY2tzRGF0YSB0cmFja3NEYXRhOwotICAgIGlmICghU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tMaXN0KHZhbHVlLCB0cmFja3NEYXRhLCBidWls
ZGVyU3RhdGUpKQorICAgIEJ1aWxkZXJDb252ZXJ0ZXI6OlRyYWNrc0RhdGEgdHJhY2tzRGF0YTsK
KyAgICBpZiAoIUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFja0xpc3QodmFsdWUsIHRy
YWNrc0RhdGEsIGJ1aWxkZXJTdGF0ZSkpCiAgICAgICAgIHJldHVybjsKICAgICBjb25zdCBOYW1l
ZEdyaWRBcmVhTWFwJiBuYW1lZEdyaWRBcmVhcyA9IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLm5hbWVk
R3JpZEFyZWEoKTsKICAgICBpZiAoIW5hbWVkR3JpZEFyZWFzLmlzRW1wdHkoKSkKLSAgICAgICAg
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVJbXBsaWNpdE5hbWVkR3JpZExpbmVzRnJvbUdy
aWRBcmVhKG5hbWVkR3JpZEFyZWFzLCB0cmFja3NEYXRhLm1fbmFtZWRHcmlkTGluZXMsIEZvckNv
bHVtbnMpOworICAgICAgICBCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVJbXBsaWNpdE5hbWVkR3Jp
ZExpbmVzRnJvbUdyaWRBcmVhKG5hbWVkR3JpZEFyZWFzLCB0cmFja3NEYXRhLm1fbmFtZWRHcmlk
TGluZXMsIEZvckNvbHVtbnMpOwogCiAgICAgU0VUX1RSQUNLU19EQVRBKHRyYWNrc0RhdGEsIGJ1
aWxkZXJTdGF0ZS5zdHlsZSgpLCBDb2x1bW4pOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxk
ZXJDdXN0b206OmFwcGx5SW5pdGlhbEdyaWRUZW1wbGF0ZVJvd3MoU3R5bGU6OkJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFs
R3JpZFRlbXBsYXRlUm93cyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBidWls
ZGVyU3RhdGUuc3R5bGUoKS5zZXRHcmlkUm93cyhSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRSb3dz
KCkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldE5hbWVkR3JpZFJvd0xpbmVzKFJlbmRl
clN0eWxlOjppbml0aWFsTmFtZWRHcmlkUm93TGluZXMoKSk7CiAgICAgYnVpbGRlclN0YXRlLnN0
eWxlKCkuc2V0T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKFJlbmRlclN0eWxlOjppbml0aWFsT3Jk
ZXJlZE5hbWVkR3JpZFJvd0xpbmVzKCkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5SW5oZXJpdEdyaWRUZW1wbGF0ZVJvd3MoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYg
YnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0R3Jp
ZFRlbXBsYXRlUm93cyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBidWlsZGVy
U3RhdGUuc3R5bGUoKS5zZXRHcmlkUm93cyhidWlsZGVyU3RhdGUucGFyZW50U3R5bGUoKS5ncmlk
Um93cygpKTsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXROYW1lZEdyaWRSb3dMaW5lcyhi
dWlsZGVyU3RhdGUucGFyZW50U3R5bGUoKS5uYW1lZEdyaWRSb3dMaW5lcygpKTsKICAgICBidWls
ZGVyU3RhdGUuc3R5bGUoKS5zZXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoYnVpbGRlclN0YXRl
LnBhcmVudFN0eWxlKCkub3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKCkpOwogfQogCi1pbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVHcmlkVGVtcGxhdGVSb3dzKFN0eWxl
OjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZv
aWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUdyaWRUZW1wbGF0ZVJvd3MoQnVpbGRlclN0YXRl
JiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OlRyYWNrc0RhdGEgdHJhY2tzRGF0YTsKLSAgICBpZiAoIVN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y3JlYXRlR3JpZFRyYWNrTGlzdCh2YWx1ZSwgdHJhY2tzRGF0YSwgYnVpbGRlclN0YXRl
KSkKKyAgICBCdWlsZGVyQ29udmVydGVyOjpUcmFja3NEYXRhIHRyYWNrc0RhdGE7CisgICAgaWYg
KCFCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tMaXN0KHZhbHVlLCB0cmFja3NEYXRh
LCBidWlsZGVyU3RhdGUpKQogICAgICAgICByZXR1cm47CiAgICAgY29uc3QgTmFtZWRHcmlkQXJl
YU1hcCYgbmFtZWRHcmlkQXJlYXMgPSBidWlsZGVyU3RhdGUuc3R5bGUoKS5uYW1lZEdyaWRBcmVh
KCk7CiAgICAgaWYgKCFuYW1lZEdyaWRBcmVhcy5pc0VtcHR5KCkpCi0gICAgICAgIFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y3JlYXRlSW1wbGljaXROYW1lZEdyaWRMaW5lc0Zyb21HcmlkQXJlYShu
YW1lZEdyaWRBcmVhcywgdHJhY2tzRGF0YS5tX25hbWVkR3JpZExpbmVzLCBGb3JSb3dzKTsKKyAg
ICAgICAgQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlSW1wbGljaXROYW1lZEdyaWRMaW5lc0Zyb21H
cmlkQXJlYShuYW1lZEdyaWRBcmVhcywgdHJhY2tzRGF0YS5tX25hbWVkR3JpZExpbmVzLCBGb3JS
b3dzKTsKIAogICAgIFNFVF9UUkFDS1NfREFUQSh0cmFja3NEYXRhLCBidWlsZGVyU3RhdGUuc3R5
bGUoKSwgUm93KTsKIH0KIAotdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVBbHQo
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCit2b2lk
IEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVBbHQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUs
IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzU3Ry
aW5nKCkpCkBAIC0xNzUwLDcgKzE3NTEsNyBAQCB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlWYWx1ZUFsdChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbAogICAg
ICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRDb250ZW50QWx0VGV4dChlbXB0eUF0b20oKSk7
CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdpbGxDaGFu
Z2UoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitp
bmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2lsbENoYW5nZShCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChpczxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpKSB7CiAgICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pOwpAQCAtMTc3OSwxMyAr
MTc4MCwxMyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXaWxs
Q2hhbmdlKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZQogICAgIGJ1aWxkZXJTdGF0ZS5zdHls
ZSgpLnNldFdpbGxDaGFuZ2UoV1RGTW92ZSh3aWxsQ2hhbmdlKSk7CiB9CiAKLWlubGluZSB2b2lk
IFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVN0cm9rZVdpZHRoKFN0eWxlOjpCdWlsZGVy
U3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZVN0cm9rZVdpZHRoKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
LCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0U3Ryb2tl
V2lkdGgoU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoKGJ1aWxkZXJTdGF0ZSwg
dmFsdWUpKTsKKyAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRTdHJva2VXaWR0aChCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0TGVuZ3RoKGJ1aWxkZXJTdGF0ZSwgdmFsdWUpKTsKICAgICBidWls
ZGVyU3RhdGUuc3R5bGUoKS5zZXRIYXNFeHBsaWNpdGx5U2V0U3Ryb2tlV2lkdGgodHJ1ZSk7CiB9
CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVN0cm9rZUNvbG9y
KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5s
aW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVN0cm9rZUNvbG9yKEJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZl
VmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGlmIChidWls
ZGVyU3RhdGUuYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCkpCkBAIC0xNzk1LDcgKzE3OTYs
NyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVTdHJva2VDb2xv
cihTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZAogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNl
dEhhc0V4cGxpY2l0bHlTZXRTdHJva2VDb2xvcih0cnVlKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxDdXN0b21Qcm9wZXJ0eShTdHlsZTo6QnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSog
cmVnaXN0ZXJlZCwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJD
dXN0b206OmFwcGx5SW5pdGlhbEN1c3RvbVByb3BlcnR5KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0
YXRlLCBjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkqIHJlZ2lzdGVyZWQsIGNvbnN0
IEF0b21TdHJpbmcmIG5hbWUpCiB7CiAgICAgaWYgKHJlZ2lzdGVyZWQgJiYgcmVnaXN0ZXJlZC0+
aW5pdGlhbFZhbHVlKCkpIHsKICAgICAgICAgYXV0byBpbml0aWFsVmFsdWUgPSByZWdpc3RlcmVk
LT5pbml0aWFsVmFsdWVDb3B5KCk7CkBAIC0xODA3LDcgKzE4MDgsNyBAQCBpbmxpbmUgdm9pZCBT
dHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEN1c3RvbVByb3BlcnR5KFN0eWxlOjpCdWls
ZGVyU3RhdGUmCiAgICAgYXBwbHlWYWx1ZUN1c3RvbVByb3BlcnR5KGJ1aWxkZXJTdGF0ZSwgcmVn
aXN0ZXJlZCwgaW52YWxpZC5nZXQoKSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlJbmhlcml0Q3VzdG9tUHJvcGVydHkoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlLCBjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkqIHJlZ2lzdGVyZWQs
IGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBs
eUluaGVyaXRDdXN0b21Qcm9wZXJ0eShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3Qg
Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5KiByZWdpc3RlcmVkLCBjb25zdCBBdG9tU3RyaW5n
JiBuYW1lKQogewogICAgIGF1dG8qIHBhcmVudFZhbHVlID0gYnVpbGRlclN0YXRlLnBhcmVudFN0
eWxlKCkuaW5oZXJpdGVkQ3VzdG9tUHJvcGVydGllcygpLmdldChuYW1lKTsKICAgICBpZiAocGFy
ZW50VmFsdWUgJiYgIShyZWdpc3RlcmVkICYmICFyZWdpc3RlcmVkLT5pbmhlcml0cykpCkBAIC0x
ODE2LDcgKzE4MTcsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5o
ZXJpdEN1c3RvbVByb3BlcnR5KFN0eWxlOjpCdWlsZGVyU3RhdGUmCiAgICAgICAgIGFwcGx5SW5p
dGlhbEN1c3RvbVByb3BlcnR5KGJ1aWxkZXJTdGF0ZSwgcmVnaXN0ZXJlZCwgbmFtZSk7CiB9CiAK
LWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUN1c3RvbVByb3BlcnR5
KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTUmVnaXN0ZXJlZEN1
c3RvbVByb3BlcnR5KiByZWdpc3RlcmVkLCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlJiB2YWx1ZSkK
K2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDdXN0b21Qcm9wZXJ0eShCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5
KiByZWdpc3RlcmVkLCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlJiB2YWx1ZSkKIHsKICAgICBBU1NF
UlQodmFsdWUuaXNSZXNvbHZlZCgpKTsKICAgICBjb25zdCBhdXRvJiBuYW1lID0gdmFsdWUubmFt
ZSgpOwpAQCAtMTgyNyw0ICsxODI4LDUgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseVZhbHVlQ3VzdG9tUHJvcGVydHkoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnUKICAgICAg
ICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0Tm9uSW5oZXJpdGVkQ3VzdG9tUHJvcGVydHlWYWx1
ZShuYW1lLCBtYWtlUmVmKHZhbHVlKSk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30K
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckdlbmVyYXRl
ZC5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmYyYzNkZjhiMDZjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmgKQEAg
LTAsMCArMSw0NCBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0Ogor
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDU1NWYWx1ZTsKK3N0cnVjdCBDU1NSZWdpc3RlcmVk
Q3VzdG9tUHJvcGVydHk7CisKK25hbWVzcGFjZSBTdHlsZSB7CitjbGFzcyBCdWlsZGVyU3RhdGU7
CisKK2NsYXNzIEJ1aWxkZXJHZW5lcmF0ZWQgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIGFw
cGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVl
JiwgYm9vbCBpc0luaXRpYWwsIGJvb2wgaXNJbmhlcml0LCBjb25zdCBDU1NSZWdpc3RlcmVkQ3Vz
dG9tUHJvcGVydHkqKTsKK307CisKK30KK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382448</attachid>
            <date>2019-10-31 04:03:25 -0700</date>
            <delta_ts>2019-10-31 04:08:33 -0700</delta_ts>
            <desc>patch</desc>
            <filename>style-builder-generated-rename-2.patch</filename>
            <type>text/plain</type>
            <size>160934</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0YmNiYWU3NTcyNi4uZmE1ODMzMjRiMWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNDggQEAKKzIwMTktMTAtMzEgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbmFtZSBTdHlsZUJ1aWxkZXIgdG8gU3R5bGU6OkJ1aWxkZXJHZW5lcmF0
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzY3
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsc28g
cmVuYW1lIHRoZSByZWxhdGVkIFN0eWtlQnVpbGRlckN1c3RvbSBhbmQgU3R5bGVCdWlsZGVyQ29u
dmVydGVyIGNsYXNzZXMKKyAgICAgICAgYW5kIG1vdmUgdGhlbSB0byB0aGUgU3R5bGUgbmFtZXNw
YWNlIGFuZCBkaXJlY3RvcnkuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3NzL0NTU0ZvbnRG
YWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZVdlaWdodFJhbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNhbGN1bGF0ZVN0cmV0Y2hSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpj
YWxjdWxhdGVJdGFsaWNSYW5nZSk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVGb250U2VsZWN0aW9uUmVxdWVzdCk6CisgICAgICAg
ICogY3NzL0NTU1RvU3R5bGVNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1h
cDo6bWFwRmlsbFhQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjpt
YXBGaWxsWVBvc2l0aW9uKToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyLmg6IFJlbW92ZWQu
CisgICAgICAgICogY3NzL21ha2Vwcm9wLnBsOgorICAgICAgICAoZ2V0U2NvcGVGb3JGdW5jdGlv
bik6CisgICAgICAgIChnZW5lcmF0ZUluaXRpYWxWYWx1ZVNldHRlcik6CisgICAgICAgIChnZW5l
cmF0ZUluaGVyaXRWYWx1ZVNldHRlcik6CisgICAgICAgIChnZW5lcmF0ZVZhbHVlU2V0dGVyKToK
KyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlWYWx1ZSk6
CisgICAgICAgICogc3R5bGUvUHJvcGVydHlDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpQcm9wZXJ0eUNhc2NhZGU6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAqIHN0eWxl
L1N0eWxlQnVpbGRlckNvbnZlcnRlci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlQnVpbGRlckNvbnZlcnRlci5oLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGhPckF1dG8pOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGhTaXppbmcpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGhNYXhTaXppbmcp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUYWJT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
Q29tcHV0ZWRMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRMaW5lV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRTcGFjaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0VG9SYWRpdXNMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSYWRpdXMpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0
aCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBv
c2l0aW9uQ29tcG9uZW50WCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydFBvc2l0aW9uQ29tcG9uZW50WSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBvc2l0aW9uQ29tcG9uZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0T2JqZWN0UG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0
RGVjb3JhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydE51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydE51bWJlck9yQXV0byk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydFdlYmtpdEh5cGhlbmF0ZUxpbWl0TGluZXMpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRCb3JkZXJJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEJvcmRlck1h
c2spOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRT
dHlsZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVy
dGVyOjp1cGRhdGVDb2xvclNjaGVtZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydENvbG9yU2NoZW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3RyaW5nT3JBdXRvKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3RyaW5nT3JOb25lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjp2YWx1ZVRvRW1waGFzaXNQ
b3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydFRleHRFbXBoYXNpc1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dEFsaWduKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q2xpcFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZXNpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVlUmVwZXRpdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVT
cGVlZCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dFF1b3Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydFRleHRVbmRlcmxpbmVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRVbmRlcmxpbmVPZmZzZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0RGVjb3JhdGlvblRoaWNr
bmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dFJlZmxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRJbml0aWFsTGV0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0VGV4dFN0cm9rZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGluZUJveENvbnRhaW4pOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OnZhbHVlVG9EZWNvcmF0aW9uU2tpcCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRE
ZWNvcmF0aW9uU2tpcCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFNoYXBlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRTY3JvbGxTbmFwVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNjcm9sbFNuYXBBbGlnbik6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFRyYWNrQnJlYWR0aCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFRy
YWNrU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y3Jl
YXRlR3JpZFRyYWNrTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZl
cnRlcjo6Y3JlYXRlR3JpZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWls
ZGVyQ29udmVydGVyOjpjcmVhdGVJbXBsaWNpdE5hbWVkR3JpZExpbmVzRnJvbUdyaWRBcmVhKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R3JpZFRy
YWNrU2l6ZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRHcmlkVHJhY2tTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0R3JpZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R3JpZEF1dG9GbG93KToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjc3N0b0xlbmd0aENvbnZlcnNpb25EYXRhV2l0
aFRleHRab29tRmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0V29yZFNwYWNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRQZXJzcGVjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVJbmNyZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGaWx0ZXJPcGVyYXRpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9u
dEZlYXR1cmVTZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydEZvbnRXZWlnaHRGcm9tVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250U3RyZXRjaEZyb21WYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRTdHlsZUZy
b21WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydEZvbnRXZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRGb250U3RyZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydEZvbnRWYXJpYXRpb25TZXR0aW5ncyk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRvdWNoQ2FsbG91dCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRhcEhpZ2hsaWdo
dENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0VG91Y2hBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRPdmVyZmxvd1Njcm9sbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNWR0xlbmd0aFZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U1ZHTGVuZ3RoVmVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3Ryb2tlRGFz
aEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0UGFpbnRPcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydE9wYWNpdHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRTVkdVUklSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTVkdDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNlbGZPckRlZmF1bHRBbGlnbm1lbnREYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q29u
dGVudEFsaWdubWVudERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRHbHlwaE9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R2x5cGhPcmllbnRhdGlvbk9yQXV0byk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVIZWlnaHQp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250
U3ludGhlc2lzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0U3BlYWtBcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydEhhbmdpbmdQdW5jdHVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdhcExlbmd0aCk6CisgICAgICAgICogc3R5bGUvU3R5
bGVCdWlsZGVyQ3VzdG9tLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVC
dWlsZGVyQ3VzdG9tLmguCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6
YXBwbHlJbml0aWFsV2Via2l0TWFza0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpC
dWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRXZWJraXRNYXNrSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEZvbnRGZWF0dXJlU2V0dGlu
Z3MpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJp
dEZvbnRGZWF0dXJlU2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJD
dXN0b206OmFwcGx5SW5pdGlhbEZvbnRWYXJpYXRpb25TZXR0aW5ncyk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Rm9udFZhcmlhdGlvblNldHRp
bmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVl
RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBs
eUluaXRpYWxUZXh0QWxpZ24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0
b206OmFwcGx5VmFsdWVUZXh0QWxpZ24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxk
ZXJDdXN0b206OnJlc2V0RWZmZWN0aXZlWm9vbSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
QnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsWm9vbSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Wm9vbSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVpvb20pOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OkJ1aWxkZXJDdXN0b206Om1tTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpCdWlsZGVyQ3VzdG9tOjppbmNoTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpC
dWlsZGVyQ3VzdG9tOjpnZXRQYWdlU2l6ZUZyb21OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlVmVydGljYWxBbGlnbik6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0SW1hZ2VSZXNvbHV0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxJ
bWFnZVJlc29sdXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206
OmFwcGx5VmFsdWVJbWFnZVJlc29sdXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1
aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRUZXh0SW5kZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxUZXh0SW5kZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlVGV4dEluZGVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlTW9k
aWZpZXI6OmFwcGx5SW5oZXJpdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpBcHBs
eVByb3BlcnR5Qm9yZGVySW1hZ2VNb2RpZmllcjo6YXBwbHlJbml0aWFsVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OkFwcGx5UHJvcGVydHlCb3JkZXJJbWFnZU1vZGlmaWVyOjphcHBs
eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUlu
aGVyaXRMaW5lSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9t
OjphcHBseUluaXRpYWxMaW5lSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWls
ZGVyQ3VzdG9tOjphcHBseVZhbHVlTGluZUhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0T3V0bGluZVN0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxPdXRsaW5lU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVPdXRsaW5l
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5p
dGlhbENsaXApOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5
SW5oZXJpdENsaXApOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFw
cGx5VmFsdWVDbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjph
cHBseVZhbHVlV2Via2l0TG9jYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVy
Q3VzdG9tOjphcHBseVZhbHVlV3JpdGluZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRUZXh0T3JpZW50YXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRUZXh0U2l6
ZUFkanVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlW
YWx1ZVdlYmtpdFRleHRab29tKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3Vz
dG9tOjphcHBseVZhbHVlQ29sb3JTY2hlbWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1
aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94U2hhZG93VmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbFRleHRTaGFkb3cpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFRleHRTaGFkb3cp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVUZXh0
U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUlu
aXRpYWxCb3hTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206
OmFwcGx5SW5oZXJpdEJveFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZUJveFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
QnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsV2Via2l0Qm94U2hhZG93KToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRXZWJraXRCb3hTaGFkb3cp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJr
aXRCb3hTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFw
cGx5SW5pdGlhbEZvbnRGYW1pbHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJD
dXN0b206OmFwcGx5SW5oZXJpdEZvbnRGYW1pbHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVGb250RmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjppc1ZhbGlkRGlzcGxheVZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXREaXNwbGF5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRGlzcGxheSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUJhc2VsaW5l
U2hpZnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5p
dGlhbFdlYmtpdEFzcGVjdFJhdGlvKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVy
Q3VzdG9tOjphcHBseUluaGVyaXRXZWJraXRBc3BlY3RSYXRpbyk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdEFzcGVjdFJhdGlvKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxXZWJraXRU
ZXh0RW1waGFzaXNTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3Rv
bTo6YXBwbHlJbmhlcml0V2Via2l0VGV4dEVtcGhhc2lzU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRUZXh0RW1waGFzaXNTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0
Q291bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlW
YWx1ZUNvdW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFw
cGx5SW5pdGlhbENvdW50ZXJJbmNyZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1
aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdENvdW50ZXJJbmNyZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb3VudGVySW5jcmVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxDb3Vu
dGVyUmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5
SW5oZXJpdENvdW50ZXJSZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZUNvdW50ZXJSZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
QnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRDdXJzb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDdXJzb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEZpbGwpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEZpbGwpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVGaWxsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxTdHJva2UpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFN0cm9r
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVN0
cm9rZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbml0
aWFsQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBw
bHlJbmhlcml0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3Rv
bTo6YXBwbHlWYWx1ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJD
dXN0b206OmFwcGx5SW5oZXJpdEZvbnRWYXJpYW50TGlnYXR1cmVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxGb250VmFyaWFudExpZ2F0dXJl
cyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZv
bnRWYXJpYW50TGlnYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3Vz
dG9tOjphcHBseUluaGVyaXRGb250VmFyaWFudE51bWVyaWMpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEZvbnRWYXJpYW50TnVtZXJpYyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZvbnRWYXJp
YW50TnVtZXJpYyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBw
bHlJbmhlcml0Rm9udFZhcmlhbnRFYXN0QXNpYW4pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEZvbnRWYXJpYW50RWFzdEFzaWFuKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRm9udFZhcmlhbnRF
YXN0QXNpYW4pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5
SW5pdGlhbEZvbnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9t
OjphcHBseUluaGVyaXRGb250U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRl
ckN1c3RvbTo6bGFyZ2VyRm9udFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxk
ZXJDdXN0b206OnNtYWxsZXJGb250U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVp
bGRlckN1c3RvbTo6ZGV0ZXJtaW5lUnVieVRleHRTaXplTXVsdGlwbGllcik6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsRm9udFN0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRGb250U3R5
bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVG
b250U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5
VmFsdWVGb250U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6
YXBwbHlJbml0aWFsR3JpZFRlbXBsYXRlQXJlYXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEdyaWRUZW1wbGF0ZUFyZWFzKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlR3JpZFRlbXBsYXRlQXJl
YXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlh
bEdyaWRUZW1wbGF0ZUNvbHVtbnMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJD
dXN0b206OmFwcGx5SW5oZXJpdEdyaWRUZW1wbGF0ZUNvbHVtbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVHcmlkVGVtcGxhdGVDb2x1bW5zKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxHcmlk
VGVtcGxhdGVSb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjph
cHBseUluaGVyaXRHcmlkVGVtcGxhdGVSb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlR3JpZFRlbXBsYXRlUm93cyk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUFsdCk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdpbGxDaGFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVTdHJva2VXaWR0aCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVN0cm9r
ZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUlu
aXRpYWxDdXN0b21Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1
c3RvbTo6YXBwbHlJbmhlcml0Q3VzdG9tUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDdXN0b21Qcm9wZXJ0eSk6CisgICAgICAgICog
c3R5bGUvU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmg6IEFkZGVkLgorCiAyMDE5LTEwLTMwICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgW1BpY3R1cmUtaW4tUGljdHVy
ZSBXZWIgQVBJXSBFbmFibGUgdGhlIHN1cHBvcnQgZm9yIGlPUwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKaW5kZXggMThiOTgwMjkxMzkuLjE2MTc0ZTVhOWNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKQEAgLTEyODksNyArMTI4OSw3IEBAIGFsbCA6IFwKICAgICBTVkdOYW1l
cy5oIFwKICAgICBTZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAu
Y3BwIFwKICAgICBTZWxlY3RvclBzZXVkb0VsZW1lbnRUeXBlTWFwLmNwcCBcCi0gICAgU3R5bGVC
dWlsZGVyLmNwcCBcCisgICAgU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmNwcCBcCiAgICAgU3R5bGVQ
cm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHAgXAogICAgIFN0eWxlUHJvcGVydHlTaG9ydGhh
bmRGdW5jdGlvbnMuaCBcCiAgICAgVXNlckFnZW50U3R5bGVTaGVldHMuaCBcCkBAIC0xMzM4LDcg
KzEzMzgsNyBAQCBXRUJDT1JFX0NTU19WQUxVRV9LRVlXT1JEUyA6PSAkKFdFQkNPUkVfQ1NTX1ZB
TFVFX0tFWVdPUkRTKSAkKFdlYkNvcmUpL2Nzcy9TVkdDUwogQ1NTX1BST1BFUlRZX05BTUVfRklM
RVMgPSBcCiAgICAgQ1NTUHJvcGVydHlOYW1lcy5jcHAgXAogICAgIENTU1Byb3BlcnR5TmFtZXMu
aCBcCi0gICAgU3R5bGVCdWlsZGVyLmNwcCBcCisgICAgU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmNw
cCBcCiAgICAgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHAgXAogICAgIFN0eWxl
UHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaCBcCiAjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDNkYzhi
ZjE2MzQxLi42ZThjZTc0YTViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTI2MDIsNyArMjYwMiw3IEBA
IEhUTUxFbnRpdHlUYWJsZS5jcHAKIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmNwcAogUGx1Z0luc1Jl
c291cmNlc0RhdGEuY3BwCiBTVkdFbGVtZW50RmFjdG9yeS5jcHAKLVN0eWxlQnVpbGRlci5jcHAK
K1N0eWxlQnVpbGRlckdlbmVyYXRlZC5jcHAKIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlv
bnMuY3BwCiBVc2VyQWdlbnRTdHlsZVNoZWV0c0RhdGEuY3BwCiBXZWJDb3JlSlNCdWlsdGluSW50
ZXJuYWxzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDcyOTMwMzgxNWFlLi42Y2NlNTU4ZDhkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjQxNiw3ICsy
NDE2LDYgQEAKIAkJODM3QTgwMTMxRTFFMTI3MzAwMDI2QjlGIC8qIExvY2FsaXphYmxlLnN0cmlu
Z3NkaWN0IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MzdBODAxMTFFMUUxMjczMDAwMjZCOUYgLyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgKi87IH07
CiAJCTgzN0Q0NjI3MUZBMkE4Q0UwMDU0RTFGQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
Zmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3
RDQ2MjUxRkEyQThDNTAwNTRFMUZBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM3RkIz
NDUxRjlFQTA2RDAwRDBGQzMxIC8qIEV4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzN0ZCMzQwMUY5RUEwNjYwMEQw
RkMzMSAvKiBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmggKi87IH07Ci0JCTgzODZBOTZEMTlGNjFC
MkUwMEUxRUM0QSAvKiBTdHlsZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzODZBOTZDMTlGNjFCMkUwMEUxRUM0QSAvKiBTdHlsZUJ1aWxk
ZXIuaCAqLzsgfTsKIAkJODM4ODY3MzUxRDEzQkE1RjAwMzY5N0QwIC8qIFJlbmRlck9iamVjdEVu
dW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzg4
NjczNDFEMTNCQTU5MDAzNjk3RDAgLyogUmVuZGVyT2JqZWN0RW51bXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4MzhDQTZCRDFGQzBERkU5MDA1
RDlGQTUgLyogU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzhDQTZCQjFGQzBERkREMDA1RDlGQTUg
LyogU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM4RUY1MzgxREMxNDlFMjAwOEYwQzM5IC8q
IElEQlRyYW5zYWN0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODM4RUY1MzYxREMxNDlEQTAwOEYwQzM5IC8qIElEQlRyYW5zYWN0aW9uTW9k
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00
ODQzLDYgKzQ4NDIsNyBAQAogCQlFNEFCQUJFNDIzNjFBMzI5MDBGQTQzNDUgLyogUHJvcGVydHlD
YXNjYWRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
NEFCQUJFMjIzNjFBMzI5MDBGQTQzNDUgLyogUHJvcGVydHlDYXNjYWRlLmggKi87IH07CiAJCUU0
QUJBQkYzMjM2OEI5NTkwMEZBNDM0NSAvKiBTdHlsZUJ1aWxkZXJTdGF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBQkFCRjIyMzY4Qjk1ODAwRkE0
MzQ1IC8qIFN0eWxlQnVpbGRlclN0YXRlLmggKi87IH07CiAJCUU0QUJBQkY1MjM2OEM2RUYwMEZB
NDM0NSAvKiBDYXNjYWRlTGV2ZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU0QUJBQkY0MjM2OEM2RUYwMEZBNDM0NSAvKiBDYXNjYWRlTGV2ZWwuaCAq
LzsgfTsKKwkJRTRBQkFDMDQyMzZBRTk1OTAwRkE0MzQ1IC8qIFN0eWxlQnVpbGRlckdlbmVyYXRl
ZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBQkFD
MDIyMzZBRTk1ODAwRkE0MzQ1IC8qIFN0eWxlQnVpbGRlckdlbmVyYXRlZC5oICovOyB9OwogCQlF
NEFFN0MxNjE3RDFCQjk1MDAwOUZCMzEgLyogRWxlbWVudEl0ZXJhdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEFFN0MxNTE3RDFCQjk1MDAwOUZC
MzEgLyogRWxlbWVudEl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTRBRTdDMUExN0QyMzIzNTAwMDlGQjMxIC8qIEVsZW1lbnRBbmNl
c3Rvckl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNEFFN0MxOTE3RDIzMjM1MDAwOUZCMzEgLyogRWxlbWVudEFuY2VzdG9ySXRlcmF0b3Iu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEFG
Q0ZBNTBEQUYyOUEzMDBGNUY1NUMgLyogVW5pdEJlemllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBRkNGQTQwREFGMjlBMzAwRjVGNTVDIC8qIFVu
aXRCZXppZXIuaCAqLzsgfTsKQEAgLTEwMTc3LDggKzEwMTc3LDcgQEAKIAkJODM3RkIzNDAxRjlF
QTA2NjAwRDBGQzMxIC8qIEV4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4MzdGQjM0MjFGOUVBMDY3MDBEMEZDMzEgLyogRXh0ZW5kYWJsZU1l
c3NhZ2VFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeHRl
bmRhYmxlTWVzc2FnZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3
RkIzNDMxRjlFQTA2ODAwRDBGQzMxIC8qIEV4dGVuZGFibGVNZXNzYWdlRXZlbnQuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IEV4dGVuZGFibGVNZXNzYWdlRXZlbnQuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk4Mzg2QTk2QzE5RjYxQjJFMDBFMUVDNEEgLyogU3R5bGVCdWls
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlQnVpbGRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4Mzg2QTk2RTE5RjYxRTRGMDBFMUVDNEEgLyog
U3R5bGVCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFN0
eWxlQnVpbGRlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1N0eWxlQnVpbGRl
ci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTgzODZBOTZFMTlG
NjFFNEYwMEUxRUM0QSAvKiBTdHlsZUJ1aWxkZXJHZW5lcmF0ZWQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmNwcDsgcGF0aCA9
IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmNwcDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJODM4ODY3MzQxRDEzQkE1OTAwMzY5N0Qw
IC8qIFJlbmRlck9iamVjdEVudW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbmRlck9iamVjdEVudW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzODg2
OUVCMUNFODFFOUUwMEQxNkE5RSAvKiBKU1RleHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNUZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODM4Q0E2QkIxRkMwREZERDAwNUQ5RkE1IC8qIFNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNl
V29ya2VySm9iRGF0YUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE1MTgwLDYgKzE1MTc5LDcgQEAKIAkJRTRBQkFCRjAyMzY4QjkxODAwRkE0MzQ1IC8qIFN0eWxl
QnVpbGRlclN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0eWxlQnVpbGRlclN0YXRlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRBQkFCRjIyMzY4Qjk1ODAwRkE0MzQ1
IC8qIFN0eWxlQnVpbGRlclN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN0eWxlQnVpbGRlclN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0QUJB
QkY0MjM2OEM2RUYwMEZBNDM0NSAvKiBDYXNjYWRlTGV2ZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FzY2FkZUxldmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUU0QUJBQzAyMjM2QUU5NTgwMEZBNDM0NSAvKiBTdHlsZUJ1aWxkZXJHZW5lcmF0ZWQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0QUU3QzE1MTdEMUJCOTUwMDA5RkIzMSAv
KiBFbGVtZW50SXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWxl
bWVudEl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0QUU3QzE5MTdE
MjMyMzUwMDA5RkIzMSAvKiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBFbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFNEFGQ0ZBNDBEQUYyOUEzMDBGNUY1NUMgLyogVW5pdEJlemll
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbml0QmV6aWVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDE1Nyw3ICsyMDE1Nyw3IEBACiAJCQkJN0NFQjU3
RTkxRjk1NjUxNTAwMDk3QUVDIC8qIFNldHRpbmdzLmggKi8sCiAJCQkJOTkwOEIwRkQxQkNBRDA3
RDAwRUQwRjU1IC8qIFN0cmVhbUludGVybmFsc0J1aWx0aW5zLmNwcCAqLywKIAkJCQk5QjAzRDgw
NjFCQjMxMTBEMDBCNzY0QzkgLyogU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLywKLQkJCQk4
Mzg2QTk2RTE5RjYxRTRGMDBFMUVDNEEgLyogU3R5bGVCdWlsZGVyLmNwcCAqLywKKwkJCQk4Mzg2
QTk2RTE5RjYxRTRGMDBFMUVDNEEgLyogU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmNwcCAqLywKIAkJ
CQk4M0MwNUE1ODFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0
aW9ucy5jcHAgKi8sCiAJCQkJODNDMDVBNTkxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVy
dHlTaG9ydGhhbmRGdW5jdGlvbnMuaCAqLywKIAkJCQk2NTY1ODFFNjA5RDE1MDhEMDAwRTYxRDcg
LyogU1ZHRWxlbWVudEZhY3RvcnkuY3BwICovLApAQCAtMjY5NTgsNiArMjY5NTgsOSBAQAogCQkJ
CTFDMDEwNkZGMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuaCAqLywKIAkJ
CQlFNEFCQUJFNTIzNjFBMzQyMDBGQTQzNDUgLyogUHJvcGVydHlDYXNjYWRlLmNwcCAqLywKIAkJ
CQlFNEFCQUJFMjIzNjFBMzI5MDBGQTQzNDUgLyogUHJvcGVydHlDYXNjYWRlLmggKi8sCisJCQkJ
ODNCOTY4NzkxOUY4QUI4MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZlcnRlci5oICovLAor
CQkJCTgzNUQzNjM2MTlGRjYxOTMwMDRDOTNBQiAvKiBTdHlsZUJ1aWxkZXJDdXN0b20uaCAqLywK
KwkJCQlFNEFCQUMwMjIzNkFFOTU4MDBGQTQzNDUgLyogU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmgg
Ki8sCiAJCQkJRTRBQkFCRjAyMzY4QjkxODAwRkE0MzQ1IC8qIFN0eWxlQnVpbGRlclN0YXRlLmNw
cCAqLywKIAkJCQlFNEFCQUJGMjIzNjhCOTU4MDBGQTQzNDUgLyogU3R5bGVCdWlsZGVyU3RhdGUu
aCAqLywKIAkJCQlFNDAxRTBBNTFDM0MwQ0Y3MDBGMzREMTAgLyogU3R5bGVDaGFuZ2UuY3BwICov
LApAQCAtMjczNzAsOSArMjczNzMsNiBAQAogCQkJCTQzQjg1RUQ2MThDQkVDOTcwMEUzMUFGNCAv
KiBTZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAuaW4gKi8sCiAJ
CQkJMjZBQTBGOUExOEQyOTczRDAwNDE5MzgxIC8qIFNlbGVjdG9yUHNldWRvRWxlbWVudFR5cGVN
YXAuaW4gKi8sCiAJCQkJNDMxMDdCRTExOENDMTlERTAwQ0MxOEU4IC8qIFNlbGVjdG9yUHNldWRv
VHlwZU1hcC5oICovLAotCQkJCTgzODZBOTZDMTlGNjFCMkUwMEUxRUM0QSAvKiBTdHlsZUJ1aWxk
ZXIuaCAqLywKLQkJCQk4M0I5Njg3OTE5RjhBQjgzMDA0RUY3QUYgLyogU3R5bGVCdWlsZGVyQ29u
dmVydGVyLmggKi8sCi0JCQkJODM1RDM2MzYxOUZGNjE5MzAwNEM5M0FCIC8qIFN0eWxlQnVpbGRl
ckN1c3RvbS5oICovLAogCQkJCTk0MTgyNzg4MUQ4QjI0MjIwMDQ5Mjc2NCAvKiBTdHlsZUNvbG9y
LmNwcCAqLywKIAkJCQk5NDE4Mjc4OTFEOEIyNDIyMDA0OTI3NjQgLyogU3R5bGVDb2xvci5oICov
LAogCQkJCTBGRjUwMjZFMTAyQkE5NjYwMDY2RjM5QSAvKiBTdHlsZU1lZGlhLmNwcCAqLywKQEAg
LTMyMTQyLDcgKzMyMTQyLDYgQEAKIAkJCQk0MTRCODIwNTFENkRGMEU1MDA3N0VCRTMgLyogU3Ry
dWN0dXJlZENsb25lLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjZBMzBFODFEQzRGMDBCMjU5
NjUgLyogU3R5bGVCYWNrZ3JvdW5kRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI2N0Iw
RTgxRDNCRTAwQjI1OTY1IC8qIFN0eWxlQm94RGF0YS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODM4
NkE5NkQxOUY2MUIyRTAwRTFFQzRBIC8qIFN0eWxlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODNCOTY4N0IxOUY4QUI4MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZlcnRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODM1RDM2MzcxOUZGNjE5MzAwNEM5M0FCIC8qIFN0eWxlQnVpbGRl
ckN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBQkFCRjMyMzY4Qjk1OTAwRkE0MzQ1IC8q
IFN0eWxlQnVpbGRlclN0YXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTMyMzQ4LDYgKzMyMzQ3LDcg
QEAKIAkJCQkwODU0QjAyMzEyNTVFNEU2MDBCOUNERDAgLyogU1ZHUm9vdElubGluZUJveC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBQTMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1NjcmlwdEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUE2MEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdTZXRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlFNEFCQUMwNDIzNkFFOTU5MDBGQTQz
NDUgLyogU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEFGRDAx
MDBEQUYzMzU1MDBGNUY1NUMgLyogU1ZHU01JTEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyMjI3QUE5MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTdG9wRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjIyMjdBQUMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N0cmluZ0xpc3QuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKaW5kZXggZjFiY2UwNzAxMDgu
LjNhNjQ2MjI4YjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKQEAgLTEzOCwxNCAr
MTM4LDE0IEBAIHN0YXRpYyBGb250U2VsZWN0aW9uUmFuZ2UgY2FsY3VsYXRlV2VpZ2h0UmFuZ2Uo
Q1NTVmFsdWUmIHZhbHVlKQogICAgICAgICBBU1NFUlQodmFsdWVMaXN0Lml0ZW0oMSktPmlzUHJp
bWl0aXZlVmFsdWUoKSk7CiAgICAgICAgIGF1dG8mIHZhbHVlMCA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPigqdmFsdWVMaXN0Lml0ZW0oMCkpOwogICAgICAgICBhdXRvJiB2YWx1ZTEgPSBk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlTGlzdC5pdGVtKDEpKTsKLSAgICAgICAg
YXV0byByZXN1bHQwID0gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFdlaWdodEZy
b21WYWx1ZSh2YWx1ZTApOwotICAgICAgICBhdXRvIHJlc3VsdDEgPSBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRGb250V2VpZ2h0RnJvbVZhbHVlKHZhbHVlMSk7CisgICAgICAgIGF1dG8g
cmVzdWx0MCA9IFN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFdlaWdodEZyb21W
YWx1ZSh2YWx1ZTApOworICAgICAgICBhdXRvIHJlc3VsdDEgPSBTdHlsZTo6QnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydEZvbnRXZWlnaHRGcm9tVmFsdWUodmFsdWUxKTsKICAgICAgICAgcmV0dXJu
IHsgcmVzdWx0MCwgcmVzdWx0MSB9OwogICAgIH0KIAogICAgIEFTU0VSVChpczxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpKTsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgRm9udFNlbGVjdGlvblZhbHVlIHJlc3VsdCA9
IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRXZWlnaHRGcm9tVmFsdWUocHJpbWl0
aXZlVmFsdWUpOworICAgIEZvbnRTZWxlY3Rpb25WYWx1ZSByZXN1bHQgPSBTdHlsZTo6QnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydEZvbnRXZWlnaHRGcm9tVmFsdWUocHJpbWl0aXZlVmFsdWUpOwog
ICAgIHJldHVybiB7IHJlc3VsdCwgcmVzdWx0IH07CiB9CiAKQEAgLTE3NiwxNCArMTc2LDE0IEBA
IHN0YXRpYyBGb250U2VsZWN0aW9uUmFuZ2UgY2FsY3VsYXRlU3RyZXRjaFJhbmdlKENTU1ZhbHVl
JiB2YWx1ZSkKICAgICAgICAgQVNTRVJUKHZhbHVlTGlzdC5pdGVtKDEpLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpOwogICAgICAgICBhdXRvJiB2YWx1ZTAgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4oKnZhbHVlTGlzdC5pdGVtKDApKTsKICAgICAgICAgYXV0byYgdmFsdWUxID0gZG93bmNhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZUxpc3QuaXRlbSgxKSk7Ci0gICAgICAgIGF1dG8gcmVz
dWx0MCA9IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRTdHJldGNoRnJvbVZhbHVl
KHZhbHVlMCk7Ci0gICAgICAgIGF1dG8gcmVzdWx0MSA9IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydEZvbnRTdHJldGNoRnJvbVZhbHVlKHZhbHVlMSk7CisgICAgICAgIGF1dG8gcmVzdWx0
MCA9IFN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN0cmV0Y2hGcm9tVmFsdWUo
dmFsdWUwKTsKKyAgICAgICAgYXV0byByZXN1bHQxID0gU3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRGb250U3RyZXRjaEZyb21WYWx1ZSh2YWx1ZTEpOwogICAgICAgICByZXR1cm4geyBy
ZXN1bHQwLCByZXN1bHQxIH07CiAgICAgfQogCiAgICAgQVNTRVJUKGlzPENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSkpOwogICAgIGNvbnN0IGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBGb250U2VsZWN0aW9uVmFsdWUgcmVzdWx0
ID0gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN0cmV0Y2hGcm9tVmFsdWUocHJp
bWl0aXZlVmFsdWUpOworICAgIEZvbnRTZWxlY3Rpb25WYWx1ZSByZXN1bHQgPSBTdHlsZTo6QnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRTdHJldGNoRnJvbVZhbHVlKHByaW1pdGl2ZVZhbHVl
KTsKICAgICByZXR1cm4geyByZXN1bHQsIHJlc3VsdCB9OwogfQogCkBAIC0yMDYsNyArMjA2LDcg
QEAgdm9pZCBDU1NGb250RmFjZTo6c2V0U3RyZXRjaChDU1NWYWx1ZSYgc3R5bGUpCiBzdGF0aWMg
Rm9udFNlbGVjdGlvblJhbmdlIGNhbGN1bGF0ZUl0YWxpY1JhbmdlKENTU1ZhbHVlJiB2YWx1ZSkK
IHsKICAgICBpZiAodmFsdWUuaXNGb250U3R5bGVWYWx1ZSgpKSB7Ci0gICAgICAgIGF1dG8gcmVz
dWx0ID0gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN0eWxlRnJvbVZhbHVlKHZh
bHVlKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydEZvbnRTdHlsZUZyb21WYWx1ZSh2YWx1ZSk7CiAgICAgICAgIHJldHVybiB7IHJlc3VsdC52
YWx1ZU9yKG5vcm1hbEl0YWxpY1ZhbHVlKCkpLCByZXN1bHQudmFsdWVPcihub3JtYWxJdGFsaWNW
YWx1ZSgpKSB9OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5jcHAKaW5k
ZXggMThlODM0ZDY5MGEuLmUzMGM2NDVhMjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZVNldC5jcHAKQEAgLTMxNCw5ICszMTQsOSBAQCBzdGF0aWMgRm9udFNlbGVjdGlvblJlcXVlc3Qg
Y29tcHV0ZUZvbnRTZWxlY3Rpb25SZXF1ZXN0KE11dGFibGVTdHlsZVByb3BlcnRpZXMmCiAgICAg
aWYgKCFzdHlsZVZhbHVlKQogICAgICAgICBzdHlsZVZhbHVlID0gQ1NTRm9udFN0eWxlVmFsdWU6
OmNyZWF0ZShDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZU5vcm1hbCkpOwogCi0gICAgYXV0byB3ZWlnaHRTZWxlY3Rpb25WYWx1ZSA9IFN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRXZWlnaHRGcm9tVmFsdWUoKndlaWdodFZhbHVl
KTsKLSAgICBhdXRvIHN0cmV0Y2hTZWxlY3Rpb25WYWx1ZSA9IFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydEZvbnRTdHJldGNoRnJvbVZhbHVlKCpzdHJldGNoVmFsdWUpOwotICAgIGF1dG8g
c3R5bGVTZWxlY3Rpb25WYWx1ZSA9IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRT
dHlsZUZyb21WYWx1ZSgqc3R5bGVWYWx1ZSk7CisgICAgYXV0byB3ZWlnaHRTZWxlY3Rpb25WYWx1
ZSA9IFN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFdlaWdodEZyb21WYWx1ZSgq
d2VpZ2h0VmFsdWUpOworICAgIGF1dG8gc3RyZXRjaFNlbGVjdGlvblZhbHVlID0gU3R5bGU6OkJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250U3RyZXRjaEZyb21WYWx1ZSgqc3RyZXRjaFZhbHVl
KTsKKyAgICBhdXRvIHN0eWxlU2VsZWN0aW9uVmFsdWUgPSBTdHlsZTo6QnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydEZvbnRTdHlsZUZyb21WYWx1ZSgqc3R5bGVWYWx1ZSk7CiAKICAgICByZXR1cm4g
eyB3ZWlnaHRTZWxlY3Rpb25WYWx1ZSwgc3RyZXRjaFNlbGVjdGlvblZhbHVlLCBzdHlsZVNlbGVj
dGlvblZhbHVlIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHls
ZU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAKaW5kZXggNjMz
ZjJiNThmNzAuLjc5M2RiNDdiZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VG9TdHlsZU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3Bw
CkBAIC0yMzEsOSArMjMxLDkgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsWFBvc2l0aW9u
KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRmlsbExheWVyJiBsYXllciwKICAgICBMZW5ndGgg
bGVuZ3RoOwogICAgIGlmIChwYWlyKSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocHJvcGVydHlJ
RCwgcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblggfHwgcHJvcGVy
dHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgpOwotICAgICAgICBsZW5ndGgg
PSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgobV9idWlsZGVyU3RhdGUsICpw
YWlyLT5zZWNvbmQoKSk7CisgICAgICAgIGxlbmd0aCA9IFN0eWxlOjpCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0TGVuZ3RoKG1fYnVpbGRlclN0YXRlLCAqcGFpci0+c2Vjb25kKCkpOwogICAgIH0g
ZWxzZQotICAgICAgICBsZW5ndGggPSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3Np
dGlvbkNvbXBvbmVudFgobV9idWlsZGVyU3RhdGUsIHZhbHVlKTsKKyAgICAgICAgbGVuZ3RoID0g
U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudFgobV9idWls
ZGVyU3RhdGUsIHZhbHVlKTsKIAogICAgIGxheWVyLnNldFhQb3NpdGlvbihsZW5ndGgpOwogICAg
IGlmIChwYWlyKQpAQCAtMjU1LDkgKzI1NSw5IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmls
bFlQb3NpdGlvbihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEZpbGxMYXllciYgbGF5ZXIsCiAg
ICAgTGVuZ3RoIGxlbmd0aDsKICAgICBpZiAocGFpcikgewogICAgICAgICBBU1NFUlRfVU5VU0VE
KHByb3BlcnR5SUQsIHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25Z
IHx8IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZKTsKLSAgICAg
ICAgbGVuZ3RoID0gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoKG1fYnVpbGRl
clN0YXRlLCAqcGFpci0+c2Vjb25kKCkpOworICAgICAgICBsZW5ndGggPSBTdHlsZTo6QnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydExlbmd0aChtX2J1aWxkZXJTdGF0ZSwgKnBhaXItPnNlY29uZCgp
KTsKICAgICB9IGVsc2UKLSAgICAgICAgbGVuZ3RoID0gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0UG9zaXRpb25Db21wb25lbnRZKG1fYnVpbGRlclN0YXRlLCB2YWx1ZSk7CisgICAgICAg
IGxlbmd0aCA9IFN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25l
bnRZKG1fYnVpbGRlclN0YXRlLCB2YWx1ZSk7CiAgICAgCiAgICAgbGF5ZXIuc2V0WVBvc2l0aW9u
KGxlbmd0aCk7CiAgICAgaWYgKHBhaXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0OTE4YWM3OWUxLi4wMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkNTU1Byb3BlcnR5
TmFtZXMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDU1NWYWx1ZTsKLXN0cnVj
dCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHk7Ci0KLW5hbWVzcGFjZSBTdHlsZSB7Ci1jbGFz
cyBCdWlsZGVyU3RhdGU7Ci19Ci0KLWNsYXNzIFN0eWxlQnVpbGRlciB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIHZvaWQgYXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBTdHlsZTo6QnVpbGRlclN0
YXRlJiwgQ1NTVmFsdWUmLCBib29sIGlzSW5pdGlhbCwgYm9vbCBpc0luaGVyaXQsIGNvbnN0IENT
U1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSopOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsIGIvU291cmNlL1dl
YkNvcmUvY3NzL21ha2Vwcm9wLnBsCmluZGV4IGIxZjIyN2QxNzA3Li40ZWM5YWQwYTFjNSAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9tYWtlcHJvcC5wbApAQCAtNjYsNyArNjYsNyBAQCBteSAlbmFtZUlzSW5oZXJpdGVk
OwogbXkgJW5hbWVJc0hpZ2hQcmlvcml0eTsKIG15ICVwcm9wZXJ0aWVzV2l0aFN0eWxlQnVpbGRl
ck9wdGlvbnM7CiBteSAlc3R5bGVCdWlsZGVyT3B0aW9ucyA9ICgKLSAgICAiYW5pbWF0YWJsZSIg
PT4gMSwgIyBEZWZpbmVkIGluIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaAorICAgICJhbmltYXRhYmxlIiA9PiAxLCAjIERlZmluZWQgaW4gU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKICAgICAiYXV0by1mdW5jdGlvbnMiID0+IDEs
CiAgICAgImNvbmRpdGlvbmFsLWNvbnZlcnRlciIgPT4gMSwKICAgICAiY29udmVydGVyIiA9PiAx
LApAQCAtNTU0LDE0ICs1NTQsMTQgQEAgRU9GCiBjbG9zZSBIRUFERVI7CiAKICMKLSMgU3R5bGVC
dWlsZGVyLmNwcCBnZW5lcmF0b3IuCisjIFN0eWxlQnVpbGRlckdlbmVyYXRlZC5jcHAgZ2VuZXJh
dG9yLgogIwogCiBzdWIgZ2V0U2NvcGVGb3JGdW5jdGlvbiB7CiAgIG15ICRuYW1lID0gc2hpZnQ7
CiAgIG15ICRidWlsZGVyRnVuY3Rpb24gPSBzaGlmdDsKIAotICByZXR1cm4gJHByb3BlcnRpZXNX
aXRoU3R5bGVCdWlsZGVyT3B0aW9uc3skbmFtZX17ImN1c3RvbSJ9eyRidWlsZGVyRnVuY3Rpb259
ID8gIlN0eWxlQnVpbGRlckN1c3RvbSIgOiAiU3R5bGVCdWlsZGVyRnVuY3Rpb25zIjsKKyAgcmV0
dXJuICRwcm9wZXJ0aWVzV2l0aFN0eWxlQnVpbGRlck9wdGlvbnN7JG5hbWV9eyJjdXN0b20ifXsk
YnVpbGRlckZ1bmN0aW9ufSA/ICJCdWlsZGVyQ3VzdG9tIiA6ICJCdWlsZGVyRnVuY3Rpb25zIjsK
IH0KIAogc3ViIGdldE5hbWVGb3JNZXRob2RzIHsKQEAgLTkxMyw3ICs5MTMsNyBAQCBzdWIgZ2Vu
ZXJhdGVJbml0aWFsVmFsdWVTZXR0ZXIgewogICBteSAkaW5pdGlhbCA9ICRwcm9wZXJ0aWVzV2l0
aFN0eWxlQnVpbGRlck9wdGlvbnN7JG5hbWV9eyJpbml0aWFsIn07CiAgIG15ICRpc1NWRyA9IGV4
aXN0cyAkcHJvcGVydGllc1dpdGhTdHlsZUJ1aWxkZXJPcHRpb25zeyRuYW1lfXsic3ZnIn07CiAg
IG15ICRzZXR0ZXJDb250ZW50ID0gIiI7Ci0gICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAi
c3RhdGljIHZvaWQgYXBwbHlJbml0aWFsIiAuICRuYW1lVG9JZHskbmFtZX0gLiAiKFN0eWxlOjpC
dWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSlcbiI7CisgICRzZXR0ZXJDb250ZW50IC49ICRpbmRl
bnQgLiAic3RhdGljIHZvaWQgYXBwbHlJbml0aWFsIiAuICRuYW1lVG9JZHskbmFtZX0gLiAiKEJ1
aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKVxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVu
dCAuICJ7XG4iOwogICBteSAkc3R5bGUgPSAiYnVpbGRlclN0YXRlLnN0eWxlKCkiOwogICBpZiAo
ZXhpc3RzICRwcm9wZXJ0aWVzV2l0aFN0eWxlQnVpbGRlck9wdGlvbnN7JG5hbWV9eyJhdXRvLWZ1
bmN0aW9ucyJ9KSB7CkBAIC05NDMsNyArOTQzLDcgQEAgc3ViIGdlbmVyYXRlSW5oZXJpdFZhbHVl
U2V0dGVyIHsKICAgbXkgJGluZGVudCA9IHNoaWZ0OwogCiAgIG15ICRzZXR0ZXJDb250ZW50ID0g
IiI7Ci0gICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAic3RhdGljIHZvaWQgYXBwbHlJbmhl
cml0IiAuICRuYW1lVG9JZHskbmFtZX0gLiAiKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJT
dGF0ZSlcbiI7CisgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAic3RhdGljIHZvaWQgYXBw
bHlJbmhlcml0IiAuICRuYW1lVG9JZHskbmFtZX0gLiAiKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0
YXRlKVxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJ7XG4iOwogICBteSAkaXNT
VkcgPSBleGlzdHMgJHByb3BlcnRpZXNXaXRoU3R5bGVCdWlsZGVyT3B0aW9uc3skbmFtZX17InN2
ZyJ9OwogICBteSAkcGFyZW50U3R5bGUgPSAiYnVpbGRlclN0YXRlLnBhcmVudFN0eWxlKCkiOwpA
QCAtOTkwLDEzICs5OTAsMTMgQEAgc3ViIGdlbmVyYXRlVmFsdWVTZXR0ZXIgewogICBteSAkaW5k
ZW50ID0gc2hpZnQ7CiAKICAgbXkgJHNldHRlckNvbnRlbnQgPSAiIjsKLSAgJHNldHRlckNvbnRl
bnQgLj0gJGluZGVudCAuICJzdGF0aWMgdm9pZCBhcHBseVZhbHVlIiAuICRuYW1lVG9JZHskbmFt
ZX0gLiAiKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVl
KVxuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJzdGF0aWMgdm9pZCBhcHBseVZh
bHVlIiAuICRuYW1lVG9JZHskbmFtZX0gLiAiKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBD
U1NWYWx1ZSYgdmFsdWUpXG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIntcbiI7
CiAgIG15ICRjb252ZXJ0ZWRWYWx1ZTsKICAgaWYgKGV4aXN0cygkcHJvcGVydGllc1dpdGhTdHls
ZUJ1aWxkZXJPcHRpb25zeyRuYW1lfXsiY29udmVydGVyIn0pKSB7Ci0gICAgJGNvbnZlcnRlZFZh
bHVlID0gIlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydCIgLiAkcHJvcGVydGllc1dpdGhT
dHlsZUJ1aWxkZXJPcHRpb25zeyRuYW1lfXsiY29udmVydGVyIn0gLiAiKGJ1aWxkZXJTdGF0ZSwg
dmFsdWUpIjsKKyAgICAkY29udmVydGVkVmFsdWUgPSAiQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dCIgLiAkcHJvcGVydGllc1dpdGhTdHlsZUJ1aWxkZXJPcHRpb25zeyRuYW1lfXsiY29udmVydGVy
In0gLiAiKGJ1aWxkZXJTdGF0ZSwgdmFsdWUpIjsKICAgfSBlbHNpZiAoZXhpc3RzKCRwcm9wZXJ0
aWVzV2l0aFN0eWxlQnVpbGRlck9wdGlvbnN7JG5hbWV9eyJjb25kaXRpb25hbC1jb252ZXJ0ZXIi
fSkpIHsKLSAgICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICBhdXRvIGNvbnZlcnRl
ZFZhbHVlID0gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0IiAuICRwcm9wZXJ0aWVzV2l0
aFN0eWxlQnVpbGRlck9wdGlvbnN7JG5hbWV9eyJjb25kaXRpb25hbC1jb252ZXJ0ZXIifSAuICIo
YnVpbGRlclN0YXRlLCB2YWx1ZSk7XG4iOworICAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQg
LiAiICAgIGF1dG8gY29udmVydGVkVmFsdWUgPSBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0IiAu
ICRwcm9wZXJ0aWVzV2l0aFN0eWxlQnVpbGRlck9wdGlvbnN7JG5hbWV9eyJjb25kaXRpb25hbC1j
b252ZXJ0ZXIifSAuICIoYnVpbGRlclN0YXRlLCB2YWx1ZSk7XG4iOwogICAgICRjb252ZXJ0ZWRW
YWx1ZSA9ICJXVEZNb3ZlKGNvbnZlcnRlZFZhbHVlLnZhbHVlKCkpIjsKICAgfSBlbHNlIHsKICAg
ICAkY29udmVydGVkVmFsdWUgPSAiZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSI7
CkBAIC0xMDQyLDEyICsxMDQyLDEyIEBAIHN1YiBnZW5lcmF0ZVZhbHVlU2V0dGVyIHsKICAgcmV0
dXJuICRzZXR0ZXJDb250ZW50OwogfQogCi1vcGVuIFNUWUxFQlVJTERFUiwgIj5TdHlsZUJ1aWxk
ZXIuY3BwIiB8fCBkaWUgIkNvdWxkIG5vdCBvcGVuIFN0eWxlQnVpbGRlci5jcHAgZm9yIHdyaXRp
bmciOworb3BlbiBTVFlMRUJVSUxERVIsICI+U3R5bGVCdWlsZGVyR2VuZXJhdGVkLmNwcCIgfHwg
ZGllICJDb3VsZCBub3Qgb3BlbiBTdHlsZUJ1aWxkZXJHZW5lcmF0ZWQuY3BwIGZvciB3cml0aW5n
IjsKIHByaW50IFNUWUxFQlVJTERFUiA8PCAiRU9GIjsKIC8qIFRoaXMgZmlsZSBpcyBhdXRvbWF0
aWNhbGx5IGdlbmVyYXRlZCBmcm9tICRpbnB1dEZpbGUgYnkgbWFrZXByb3AsIGRvIG5vdCBlZGl0
ICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTdHlsZUJ1aWxkZXIuaCIKKyNp
bmNsdWRlICJTdHlsZUJ1aWxkZXJHZW5lcmF0ZWQuaCIKIAogI2luY2x1ZGUgIkNTU1ByaW1pdGl2
ZVZhbHVlTWFwcGluZ3MuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgpAQCAtMTA1OCw4ICsx
MDU4LDkgQEAgcHJpbnQgU1RZTEVCVUlMREVSIDw8ICJFT0YiOwogI2luY2x1ZGUgIlN0eWxlUHJv
cGVydHlTaG9ydGhhbmQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIFN0eWxl
IHsKIAotY2xhc3MgU3R5bGVCdWlsZGVyRnVuY3Rpb25zIHsKK2NsYXNzIEJ1aWxkZXJGdW5jdGlv
bnMgewogcHVibGljOgogRU9GCiAKQEAgLTEwODMsNyArMTA4NCw3IEBAIGZvcmVhY2ggbXkgJG5h
bWUgKEBuYW1lcykgewogcHJpbnQgU1RZTEVCVUlMREVSIDw8ICJFT0YiOwogfTsKIAotdm9pZCBT
dHlsZUJ1aWxkZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUsIGJvb2wgaXNJbml0
aWFsLCBib29sIGlzSW5oZXJpdCwgY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5KiBy
ZWdpc3RlcmVkKQordm9pZCBCdWlsZGVyR2VuZXJhdGVkOjphcHBseVByb3BlcnR5KENTU1Byb3Bl
cnR5SUQgcHJvcGVydHksIEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFs
dWUsIGJvb2wgaXNJbml0aWFsLCBib29sIGlzSW5oZXJpdCwgY29uc3QgQ1NTUmVnaXN0ZXJlZEN1
c3RvbVByb3BlcnR5KiByZWdpc3RlcmVkKQogewogICAgIHN3aXRjaCAocHJvcGVydHkpIHsKICAg
ICBjYXNlIENTU1Byb3BlcnR5SW52YWxpZDoKQEAgLTEwOTEsMTEgKzEwOTIsMTEgQEAgdm9pZCBT
dHlsZUJ1aWxkZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYgYnUKICAgICBjYXNlIENTU1Byb3BlcnR5Q3VzdG9tOiB7CiAgICAgICAg
IGF1dG8mIGN1c3RvbVByb3BlcnR5ID0gZG93bmNhc3Q8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4o
dmFsdWUpOwogICAgICAgICBpZiAoaXNJbml0aWFsKQotICAgICAgICAgICAgU3R5bGVCdWlsZGVy
Q3VzdG9tOjphcHBseUluaXRpYWxDdXN0b21Qcm9wZXJ0eShidWlsZGVyU3RhdGUsIHJlZ2lzdGVy
ZWQsIGN1c3RvbVByb3BlcnR5Lm5hbWUoKSk7CisgICAgICAgICAgICBCdWlsZGVyQ3VzdG9tOjph
cHBseUluaXRpYWxDdXN0b21Qcm9wZXJ0eShidWlsZGVyU3RhdGUsIHJlZ2lzdGVyZWQsIGN1c3Rv
bVByb3BlcnR5Lm5hbWUoKSk7CiAgICAgICAgIGVsc2UgaWYgKGlzSW5oZXJpdCkKLSAgICAgICAg
ICAgIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Q3VzdG9tUHJvcGVydHkoYnVpbGRl
clN0YXRlLCByZWdpc3RlcmVkLCBjdXN0b21Qcm9wZXJ0eS5uYW1lKCkpOworICAgICAgICAgICAg
QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Q3VzdG9tUHJvcGVydHkoYnVpbGRlclN0YXRlLCBy
ZWdpc3RlcmVkLCBjdXN0b21Qcm9wZXJ0eS5uYW1lKCkpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDdXN0b21Qcm9wZXJ0eShidWlsZGVy
U3RhdGUsIHJlZ2lzdGVyZWQsIGN1c3RvbVByb3BlcnR5KTsKKyAgICAgICAgICAgIEJ1aWxkZXJD
dXN0b206OmFwcGx5VmFsdWVDdXN0b21Qcm9wZXJ0eShidWlsZGVyU3RhdGUsIHJlZ2lzdGVyZWQs
IGN1c3RvbVByb3BlcnR5KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogRU9GCkBAIC0xMTIwLDYg
KzExMjEsNyBAQCBwcmludCBTVFlMRUJVSUxERVIgPDwgIkVPRiI7CiAgICAgfTsKIH0KIAorfSAv
LyBuYW1lc3BhY2UgU3R5bGUKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIEVPRgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCmluZGV4IDFhZTdi
YzlhNDc2Li41ZDQwNzI2Nzk5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTQzMDAsNyArNDMwMCw3IEBAIFJlZlB0cjxDU1NDdXN0
b21Qcm9wZXJ0eVZhbHVlPiBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VUeXBlZEN1c3RvbVByb3Bl
cnR5VmFsdWUoCiAgICAgICAgIG1fcmFuZ2UuY29uc3VtZVdoaXRlc3BhY2UoKTsKICAgICAgICAg
YXV0byBwcmltaXRpdmVWYWwgPSBjb25zdW1lV2lkdGhPckhlaWdodChtX3JhbmdlLCBtX2NvbnRl
eHQpOwogICAgICAgICBpZiAocHJpbWl0aXZlVmFsICYmIHByaW1pdGl2ZVZhbC0+aXNQcmltaXRp
dmVWYWx1ZSgpICYmIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqcHJpbWl0aXZlVmFsKS5p
c0xlbmd0aCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGxlbmd0aCA9IFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydExlbmd0aChidWlsZGVyU3RhdGUsICpwcmltaXRpdmVWYWwpOworICAgICAg
ICAgICAgYXV0byBsZW5ndGggPSBTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0
aChidWlsZGVyU3RhdGUsICpwcmltaXRpdmVWYWwpOwogICAgICAgICAgICAgaWYgKCFsZW5ndGgu
aXNDYWxjdWxhdGVkKCkgJiYgIWxlbmd0aC5pc1VuZGVmaW5lZCgpKQogICAgICAgICAgICAgICAg
IHJldHVybiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGVTeW50YXhMZW5ndGgobmFtZSwg
V1RGTW92ZShsZW5ndGgpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvUHJvcGVydHlDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5
Q2FzY2FkZS5jcHAKaW5kZXggM2U4YmM5Y2Q4ZDguLmMzODMzZDRjZTZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRl
ICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgi
CiAjaW5jbHVkZSAiUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlICJTdHlsZUJ1
aWxkZXIuaCIKKyNpbmNsdWRlICJTdHlsZUJ1aWxkZXJHZW5lcmF0ZWQuaCIKICNpbmNsdWRlICJT
dHlsZVByb3BlcnR5U2hvcnRoYW5kLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogCkBA
IC02MjQsOCArNjI0LDcgQEAgdm9pZCBQcm9wZXJ0eUNhc2NhZGU6OmFwcGx5UHJvcGVydHkoQ1NT
UHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUmIHZhbHVlLCBTZWxlY3RvckMKICAgICB9CiAjZW5kaWYK
IAotICAgIC8vIFVzZSB0aGUgZ2VuZXJhdGVkIFN0eWxlQnVpbGRlci4KLSAgICBTdHlsZUJ1aWxk
ZXI6OmFwcGx5UHJvcGVydHkoaWQsIGJ1aWxkZXJTdGF0ZSwgdmFsdWVUb0FwcGx5LmdldCgpLCBp
c0luaXRpYWwsIGlzSW5oZXJpdCwgY3VzdG9tUHJvcGVydHlSZWdpc3RlcmVkKTsKKyAgICBCdWls
ZGVyR2VuZXJhdGVkOjphcHBseVByb3BlcnR5KGlkLCBidWlsZGVyU3RhdGUsIHZhbHVlVG9BcHBs
eS5nZXQoKSwgaXNJbml0aWFsLCBpc0luaGVyaXQsIGN1c3RvbVByb3BlcnR5UmVnaXN0ZXJlZCk7
CiB9CiAKIFJlZjxDU1NWYWx1ZT4gUHJvcGVydHlDYXNjYWRlOjpyZXNvbHZlVmFsdWUoQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlELCBDU1NWYWx1ZSYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApzaW1pbGFyaXR5IGluZGV4IDc0JQpyZW5hbWUgZnJv
bSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKcmVuYW1lIHRvIFNv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCmluZGV4IGJiNWNhNjQw
MzUyLi41MTcyZjFjNmI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVp
bGRlckNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNv
bnZlcnRlci5oCkBAIC01OSwxMjAgKzU5LDEyMSBAQAogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgU3R5bGUgewogCiAvLyBOb3RlIHRo
YXQgd2UgYXNzdW1lIHRoZSBDU1MgcGFyc2VyIG9ubHkgYWxsb3dzIHZhbGlkIENTU1ZhbHVlIHR5
cGVzLgotY2xhc3MgU3R5bGVCdWlsZGVyQ29udmVydGVyIHsKK2NsYXNzIEJ1aWxkZXJDb252ZXJ0
ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBMZW5ndGggY29udmVydExlbmd0aChjb25zdCBTdHls
ZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgTGVuZ3RoIGNv
bnZlcnRMZW5ndGhPckF1dG8oY29uc3QgU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1Zh
bHVlJik7Ci0gICAgc3RhdGljIExlbmd0aCBjb252ZXJ0TGVuZ3RoU2l6aW5nKGNvbnN0IFN0eWxl
OjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBMZW5ndGggY29u
dmVydExlbmd0aE1heFNpemluZyhjb25zdCBTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NT
VmFsdWUmKTsKLSAgICBzdGF0aWMgVGFiU2l6ZSBjb252ZXJ0VGFiU2l6ZShjb25zdCBTdHlsZTo6
QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdGF0aWMgVCBjb252ZXJ0Q29tcHV0ZWRMZW5ndGgoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNv
bnN0IENTU1ZhbHVlJik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIFQgY29udmVy
dExpbmVXaWR0aChTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBz
dGF0aWMgZmxvYXQgY29udmVydFNwYWNpbmcoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENT
U1ZhbHVlJik7Ci0gICAgc3RhdGljIExlbmd0aFNpemUgY29udmVydFJhZGl1cyhTdHlsZTo6QnVp
bGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgTGVuZ3RoUG9pbnQgY29u
dmVydE9iamVjdFBvc2l0aW9uKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYp
OwotICAgIHN0YXRpYyBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IGNvbnZlcnRUZXh0RGVjb3Jh
dGlvbihTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdGF0aWMgVCBjb252ZXJ0TnVtYmVyKFN0eWxlOjpCdWlsZGVyU3RhdGUm
LCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBUIGNv
bnZlcnROdW1iZXJPckF1dG8oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7
Ci0gICAgc3RhdGljIHNob3J0IGNvbnZlcnRXZWJraXRIeXBoZW5hdGVMaW1pdExpbmVzKFN0eWxl
OjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHRlbXBsYXRlPENTU1Byb3Bl
cnR5SUQ+IHN0YXRpYyBOaW5lUGllY2VJbWFnZSBjb252ZXJ0Qm9yZGVySW1hZ2UoU3R5bGU6OkJ1
aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7Ci0gICAgdGVtcGxhdGU8Q1NTUHJvcGVydHlJRD4gc3Rh
dGljIE5pbmVQaWVjZUltYWdlIGNvbnZlcnRCb3JkZXJNYXNrKFN0eWxlOjpCdWlsZGVyU3RhdGUm
LCBDU1NWYWx1ZSYpOwotICAgIHRlbXBsYXRlPENTU1Byb3BlcnR5SUQ+IHN0YXRpYyBSZWZQdHI8
U3R5bGVJbWFnZT4gY29udmVydFN0eWxlSW1hZ2UoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIENTU1Zh
bHVlJik7Ci0gICAgc3RhdGljIFRyYW5zZm9ybU9wZXJhdGlvbnMgY29udmVydFRyYW5zZm9ybShT
dHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgTGVuZ3Ro
IGNvbnZlcnRMZW5ndGgoY29uc3QgQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAg
ICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRMZW5ndGhPckF1dG8oY29uc3QgQnVpbGRlclN0YXRlJiwg
Y29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRMZW5ndGhTaXppbmco
Y29uc3QgQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgTGVuZ3Ro
IGNvbnZlcnRMZW5ndGhNYXhTaXppbmcoY29uc3QgQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFs
dWUmKTsKKyAgICBzdGF0aWMgVGFiU2l6ZSBjb252ZXJ0VGFiU2l6ZShjb25zdCBCdWlsZGVyU3Rh
dGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBU
IGNvbnZlcnRDb21wdXRlZExlbmd0aChCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBUIGNvbnZlcnRMaW5lV2lkdGgoQnVpbGRl
clN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgZmxvYXQgY29udmVydFNwYWNp
bmcoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgTGVuZ3RoU2l6
ZSBjb252ZXJ0UmFkaXVzKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3Rh
dGljIExlbmd0aFBvaW50IGNvbnZlcnRPYmplY3RQb3NpdGlvbihCdWlsZGVyU3RhdGUmLCBjb25z
dCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IGNvbnZl
cnRUZXh0RGVjb3JhdGlvbihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBUIGNvbnZlcnROdW1iZXIoQnVpbGRlclN0YXRlJiwg
Y29uc3QgQ1NTVmFsdWUmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgVCBjb252
ZXJ0TnVtYmVyT3JBdXRvKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3Rh
dGljIHNob3J0IGNvbnZlcnRXZWJraXRIeXBoZW5hdGVMaW1pdExpbmVzKEJ1aWxkZXJTdGF0ZSYs
IGNvbnN0IENTU1ZhbHVlJik7CisgICAgdGVtcGxhdGU8Q1NTUHJvcGVydHlJRD4gc3RhdGljIE5p
bmVQaWVjZUltYWdlIGNvbnZlcnRCb3JkZXJJbWFnZShCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYp
OworICAgIHRlbXBsYXRlPENTU1Byb3BlcnR5SUQ+IHN0YXRpYyBOaW5lUGllY2VJbWFnZSBjb252
ZXJ0Qm9yZGVyTWFzayhCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYpOworICAgIHRlbXBsYXRlPENT
U1Byb3BlcnR5SUQ+IHN0YXRpYyBSZWZQdHI8U3R5bGVJbWFnZT4gY29udmVydFN0eWxlSW1hZ2Uo
QnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgVHJhbnNmb3JtT3BlcmF0aW9u
cyBjb252ZXJ0VHJhbnNmb3JtKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CiAjaWYg
RU5BQkxFKERBUktfTU9ERV9DU1MpCi0gICAgc3RhdGljIFN0eWxlQ29sb3JTY2hlbWUgY29udmVy
dENvbG9yU2NoZW1lKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAg
IHN0YXRpYyBTdHlsZUNvbG9yU2NoZW1lIGNvbnZlcnRDb2xvclNjaGVtZShCdWlsZGVyU3RhdGUm
LCBjb25zdCBDU1NWYWx1ZSYpOwogI2VuZGlmCi0gICAgc3RhdGljIFN0cmluZyBjb252ZXJ0U3Ry
aW5nKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBT
dHJpbmcgY29udmVydFN0cmluZ09yQXV0byhTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NT
VmFsdWUmKTsKLSAgICBzdGF0aWMgU3RyaW5nIGNvbnZlcnRTdHJpbmdPck5vbmUoU3R5bGU6OkJ1
aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIE9wdGlvblNldDxUZXh0
RW1waGFzaXNQb3NpdGlvbj4gY29udmVydFRleHRFbXBoYXNpc1Bvc2l0aW9uKFN0eWxlOjpCdWls
ZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBUZXh0QWxpZ25Nb2RlIGNv
bnZlcnRUZXh0QWxpZ24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0g
ICAgc3RhdGljIFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4gY29udmVydENsaXBQYXRoKFN0eWxl
OjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBSZXNpemUgY29u
dmVydFJlc2l6ZShTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBz
dGF0aWMgaW50IGNvbnZlcnRNYXJxdWVlUmVwZXRpdGlvbihTdHlsZTo6QnVpbGRlclN0YXRlJiwg
Y29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgaW50IGNvbnZlcnRNYXJxdWVlU3BlZWQoU3R5
bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIFJlZjxRdW90
ZXNEYXRhPiBjb252ZXJ0UXVvdGVzKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1
ZSYpOwotICAgIHN0YXRpYyBUZXh0VW5kZXJsaW5lUG9zaXRpb24gY29udmVydFRleHRVbmRlcmxp
bmVQb3NpdGlvbihTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBz
dGF0aWMgVGV4dFVuZGVybGluZU9mZnNldCBjb252ZXJ0VGV4dFVuZGVybGluZU9mZnNldChTdHls
ZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgVGV4dERlY29y
YXRpb25UaGlja25lc3MgY29udmVydFRleHREZWNvcmF0aW9uVGhpY2tuZXNzKFN0eWxlOjpCdWls
ZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBSZWZQdHI8U3R5bGVSZWZs
ZWN0aW9uPiBjb252ZXJ0UmVmbGVjdGlvbihTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NT
VmFsdWUmKTsKLSAgICBzdGF0aWMgSW50U2l6ZSBjb252ZXJ0SW5pdGlhbExldHRlcihTdHlsZTo6
QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgZmxvYXQgY29udmVy
dFRleHRTdHJva2VXaWR0aChTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsK
LSAgICBzdGF0aWMgT3B0aW9uU2V0PExpbmVCb3hDb250YWluPiBjb252ZXJ0TGluZUJveENvbnRh
aW4oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIE9w
dGlvblNldDxUZXh0RGVjb3JhdGlvblNraXA+IGNvbnZlcnRUZXh0RGVjb3JhdGlvblNraXAoU3R5
bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIFJlZlB0cjxT
aGFwZVZhbHVlPiBjb252ZXJ0U2hhcGVWYWx1ZShTdHlsZTo6QnVpbGRlclN0YXRlJiwgQ1NTVmFs
dWUmKTsKKyAgICBzdGF0aWMgU3RyaW5nIGNvbnZlcnRTdHJpbmcoQnVpbGRlclN0YXRlJiwgY29u
c3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgU3RyaW5nIGNvbnZlcnRTdHJpbmdPckF1dG8oQnVp
bGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgU3RyaW5nIGNvbnZlcnRT
dHJpbmdPck5vbmUoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMg
T3B0aW9uU2V0PFRleHRFbXBoYXNpc1Bvc2l0aW9uPiBjb252ZXJ0VGV4dEVtcGhhc2lzUG9zaXRp
b24oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgVGV4dEFsaWdu
TW9kZSBjb252ZXJ0VGV4dEFsaWduKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Cisg
ICAgc3RhdGljIFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4gY29udmVydENsaXBQYXRoKEJ1aWxk
ZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFJlc2l6ZSBjb252ZXJ0UmVz
aXplKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIGludCBjb252
ZXJ0TWFycXVlZVJlcGV0aXRpb24oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAg
ICBzdGF0aWMgaW50IGNvbnZlcnRNYXJxdWVlU3BlZWQoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NT
VmFsdWUmKTsKKyAgICBzdGF0aWMgUmVmPFF1b3Rlc0RhdGE+IGNvbnZlcnRRdW90ZXMoQnVpbGRl
clN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgVGV4dFVuZGVybGluZVBvc2l0
aW9uIGNvbnZlcnRUZXh0VW5kZXJsaW5lUG9zaXRpb24oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NT
VmFsdWUmKTsKKyAgICBzdGF0aWMgVGV4dFVuZGVybGluZU9mZnNldCBjb252ZXJ0VGV4dFVuZGVy
bGluZU9mZnNldChCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBU
ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyBjb252ZXJ0VGV4dERlY29yYXRpb25UaGlja25lc3MoQnVp
bGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFN0eWxlUmVm
bGVjdGlvbj4gY29udmVydFJlZmxlY3Rpb24oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUm
KTsKKyAgICBzdGF0aWMgSW50U2l6ZSBjb252ZXJ0SW5pdGlhbExldHRlcihCdWlsZGVyU3RhdGUm
LCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBmbG9hdCBjb252ZXJ0VGV4dFN0cm9rZVdp
ZHRoKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIE9wdGlvblNl
dDxMaW5lQm94Q29udGFpbj4gY29udmVydExpbmVCb3hDb250YWluKEJ1aWxkZXJTdGF0ZSYsIGNv
bnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvblNraXA+
IGNvbnZlcnRUZXh0RGVjb3JhdGlvblNraXAoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUm
KTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXBlVmFsdWU+IGNvbnZlcnRTaGFwZVZhbHVlKEJ1aWxk
ZXJTdGF0ZSYsIENTU1ZhbHVlJik7CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBz
dGF0aWMgU2Nyb2xsU25hcFR5cGUgY29udmVydFNjcm9sbFNuYXBUeXBlKFN0eWxlOjpCdWlsZGVy
U3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBTY3JvbGxTbmFwQWxpZ24gY29u
dmVydFNjcm9sbFNuYXBBbGlnbihTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUm
KTsKKyAgICBzdGF0aWMgU2Nyb2xsU25hcFR5cGUgY29udmVydFNjcm9sbFNuYXBUeXBlKEJ1aWxk
ZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFNjcm9sbFNuYXBBbGlnbiBj
b252ZXJ0U2Nyb2xsU25hcEFsaWduKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CiAj
ZW5kaWYKLSAgICBzdGF0aWMgR3JpZFRyYWNrU2l6ZSBjb252ZXJ0R3JpZFRyYWNrU2l6ZShTdHls
ZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgVmVjdG9yPEdy
aWRUcmFja1NpemU+IGNvbnZlcnRHcmlkVHJhY2tTaXplTGlzdChTdHlsZTo6QnVpbGRlclN0YXRl
JiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8R3JpZFBvc2l0aW9uPiBj
b252ZXJ0R3JpZFBvc2l0aW9uKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYp
OwotICAgIHN0YXRpYyBHcmlkQXV0b0Zsb3cgY29udmVydEdyaWRBdXRvRmxvdyhTdHlsZTo6QnVp
bGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8TGVuZ3Ro
PiBjb252ZXJ0V29yZFNwYWNpbmcoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVl
Jik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPGZsb2F0PiBjb252ZXJ0UGVyc3BlY3RpdmUoU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPExl
bmd0aD4gY29udmVydE1hcnF1ZWVJbmNyZW1lbnQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0
IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPEZpbHRlck9wZXJhdGlvbnM+IGNvbnZl
cnRGaWx0ZXJPcGVyYXRpb25zKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYp
OworICAgIHN0YXRpYyBHcmlkVHJhY2tTaXplIGNvbnZlcnRHcmlkVHJhY2tTaXplKEJ1aWxkZXJT
dGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFZlY3RvcjxHcmlkVHJhY2tTaXpl
PiBjb252ZXJ0R3JpZFRyYWNrU2l6ZUxpc3QoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUm
KTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8R3JpZFBvc2l0aW9uPiBjb252ZXJ0R3JpZFBvc2l0aW9u
KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIEdyaWRBdXRvRmxv
dyBjb252ZXJ0R3JpZEF1dG9GbG93KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Cisg
ICAgc3RhdGljIE9wdGlvbmFsPExlbmd0aD4gY29udmVydFdvcmRTcGFjaW5nKEJ1aWxkZXJTdGF0
ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIE9wdGlvbmFsPGZsb2F0PiBjb252ZXJ0
UGVyc3BlY3RpdmUoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMg
T3B0aW9uYWw8TGVuZ3RoPiBjb252ZXJ0TWFycXVlZUluY3JlbWVudChCdWlsZGVyU3RhdGUmLCBj
b25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBPcHRpb25hbDxGaWx0ZXJPcGVyYXRpb25zPiBj
b252ZXJ0RmlsdGVyT3BlcmF0aW9ucyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgc3RhdGljIGJvb2wgY29udmVydFRvdWNoQ2Fs
bG91dChTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMg
Ym9vbCBjb252ZXJ0VG91Y2hDYWxsb3V0KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7
CiAjZW5kaWYKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIHN0YXRpYyBDb2xvciBjb252
ZXJ0VGFwSGlnaGxpZ2h0Q29sb3IoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVl
Jik7CisgICAgc3RhdGljIENvbG9yIGNvbnZlcnRUYXBIaWdobGlnaHRDb2xvcihCdWlsZGVyU3Rh
dGUmLCBjb25zdCBDU1NWYWx1ZSYpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRT
KQotICAgIHN0YXRpYyBPcHRpb25TZXQ8VG91Y2hBY3Rpb24+IGNvbnZlcnRUb3VjaEFjdGlvbihT
dHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgT3B0aW9u
U2V0PFRvdWNoQWN0aW9uPiBjb252ZXJ0VG91Y2hBY3Rpb24oQnVpbGRlclN0YXRlJiwgY29uc3Qg
Q1NTVmFsdWUmKTsKICNlbmRpZgogI2lmIEVOQUJMRShPVkVSRkxPV19TQ1JPTExJTkdfVE9VQ0gp
Ci0gICAgc3RhdGljIGJvb2wgY29udmVydE92ZXJmbG93U2Nyb2xsaW5nKFN0eWxlOjpCdWlsZGVy
U3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBib29sIGNvbnZlcnRPdmVyZmxv
d1Njcm9sbGluZyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwogI2VuZGlmCi0gICAg
c3RhdGljIEZvbnRGZWF0dXJlU2V0dGluZ3MgY29udmVydEZvbnRGZWF0dXJlU2V0dGluZ3MoU3R5
bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIEZvbnRGZWF0
dXJlU2V0dGluZ3MgY29udmVydEZvbnRGZWF0dXJlU2V0dGluZ3MoQnVpbGRlclN0YXRlJiwgY29u
c3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgRm9udFNlbGVjdGlvblZhbHVlIGNvbnZlcnRGb250
V2VpZ2h0RnJvbVZhbHVlKGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIEZvbnRTZWxlY3Rp
b25WYWx1ZSBjb252ZXJ0Rm9udFN0cmV0Y2hGcm9tVmFsdWUoY29uc3QgQ1NTVmFsdWUmKTsKICAg
ICBzdGF0aWMgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBjb252ZXJ0Rm9udFN0eWxlRnJv
bVZhbHVlKGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIEZvbnRTZWxlY3Rpb25WYWx1ZSBj
b252ZXJ0Rm9udFdlaWdodChTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsK
LSAgICBzdGF0aWMgRm9udFNlbGVjdGlvblZhbHVlIGNvbnZlcnRGb250U3RyZXRjaChTdHlsZTo6
QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgRm9udFNlbGVjdGlv
blZhbHVlIGNvbnZlcnRGb250U3R5bGUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1Zh
bHVlJik7CisgICAgc3RhdGljIEZvbnRTZWxlY3Rpb25WYWx1ZSBjb252ZXJ0Rm9udFdlaWdodChC
dWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBGb250U2VsZWN0aW9u
VmFsdWUgY29udmVydEZvbnRTdHJldGNoKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7
CisgICAgc3RhdGljIEZvbnRTZWxlY3Rpb25WYWx1ZSBjb252ZXJ0Rm9udFN0eWxlKEJ1aWxkZXJT
dGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CiAjaWYgRU5BQkxFKFZBUklBVElPTl9GT05UUykKLSAg
ICBzdGF0aWMgRm9udFZhcmlhdGlvblNldHRpbmdzIGNvbnZlcnRGb250VmFyaWF0aW9uU2V0dGlu
Z3MoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIEZv
bnRWYXJpYXRpb25TZXR0aW5ncyBjb252ZXJ0Rm9udFZhcmlhdGlvblNldHRpbmdzKEJ1aWxkZXJT
dGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CiAjZW5kaWYKLSAgICBzdGF0aWMgU1ZHTGVuZ3RoVmFs
dWUgY29udmVydFNWR0xlbmd0aFZhbHVlKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NW
YWx1ZSYpOwotICAgIHN0YXRpYyBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IGNvbnZlcnRTVkdMZW5n
dGhWZWN0b3IoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3Rh
dGljIFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4gY29udmVydFN0cm9rZURhc2hBcnJheShTdHlsZTo6
QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgUGFpbnRPcmRlciBj
b252ZXJ0UGFpbnRPcmRlcihTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsK
LSAgICBzdGF0aWMgZmxvYXQgY29udmVydE9wYWNpdHkoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNv
bnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIFN0cmluZyBjb252ZXJ0U1ZHVVJJUmVmZXJlbmNl
KFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBDb2xv
ciBjb252ZXJ0U1ZHQ29sb3IoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7
Ci0gICAgc3RhdGljIFN0eWxlU2VsZkFsaWdubWVudERhdGEgY29udmVydFNlbGZPckRlZmF1bHRB
bGlnbm1lbnREYXRhKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAg
IHN0YXRpYyBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhIGNvbnZlcnRDb250ZW50QWxpZ25tZW50
RGF0YShTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMg
R2x5cGhPcmllbnRhdGlvbiBjb252ZXJ0R2x5cGhPcmllbnRhdGlvbihTdHlsZTo6QnVpbGRlclN0
YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgR2x5cGhPcmllbnRhdGlvbiBjb252
ZXJ0R2x5cGhPcmllbnRhdGlvbk9yQXV0byhTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NT
VmFsdWUmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8TGVuZ3RoPiBjb252ZXJ0TGluZUhlaWdodChT
dHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmLCBmbG9hdCBtdWx0aXBsaWVyID0g
MS5mKTsKLSAgICBzdGF0aWMgRm9udFN5bnRoZXNpcyBjb252ZXJ0Rm9udFN5bnRoZXNpcyhTdHls
ZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgU1ZHTGVuZ3Ro
VmFsdWUgY29udmVydFNWR0xlbmd0aFZhbHVlKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVl
Jik7CisgICAgc3RhdGljIFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4gY29udmVydFNWR0xlbmd0aFZl
Y3RvcihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBWZWN0b3I8
U1ZHTGVuZ3RoVmFsdWU+IGNvbnZlcnRTdHJva2VEYXNoQXJyYXkoQnVpbGRlclN0YXRlJiwgY29u
c3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgUGFpbnRPcmRlciBjb252ZXJ0UGFpbnRPcmRlcihC
dWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBmbG9hdCBjb252ZXJ0
T3BhY2l0eShCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBTdHJp
bmcgY29udmVydFNWR1VSSVJlZmVyZW5jZShCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYp
OworICAgIHN0YXRpYyBDb2xvciBjb252ZXJ0U1ZHQ29sb3IoQnVpbGRlclN0YXRlJiwgY29uc3Qg
Q1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBjb252ZXJ0U2Vs
Zk9yRGVmYXVsdEFsaWdubWVudERhdGEoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsK
KyAgICBzdGF0aWMgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSBjb252ZXJ0Q29udGVudEFsaWdu
bWVudERhdGEoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgR2x5
cGhPcmllbnRhdGlvbiBjb252ZXJ0R2x5cGhPcmllbnRhdGlvbihCdWlsZGVyU3RhdGUmLCBjb25z
dCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBHbHlwaE9yaWVudGF0aW9uIGNvbnZlcnRHbHlwaE9y
aWVudGF0aW9uT3JBdXRvKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3Rh
dGljIE9wdGlvbmFsPExlbmd0aD4gY29udmVydExpbmVIZWlnaHQoQnVpbGRlclN0YXRlJiwgY29u
c3QgQ1NTVmFsdWUmLCBmbG9hdCBtdWx0aXBsaWVyID0gMS5mKTsKKyAgICBzdGF0aWMgRm9udFN5
bnRoZXNpcyBjb252ZXJ0Rm9udFN5bnRoZXNpcyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1
ZSYpOwogICAgIAotICAgIHN0YXRpYyBCcmVha0JldHdlZW4gY29udmVydFBhZ2VCcmVha0JldHdl
ZW4oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIEJy
ZWFrSW5zaWRlIGNvbnZlcnRQYWdlQnJlYWtJbnNpZGUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNv
bnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIEJyZWFrQmV0d2VlbiBjb252ZXJ0Q29sdW1uQnJl
YWtCZXR3ZWVuKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0
YXRpYyBCcmVha0luc2lkZSBjb252ZXJ0Q29sdW1uQnJlYWtJbnNpZGUoU3R5bGU6OkJ1aWxkZXJT
dGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIEJyZWFrQmV0d2VlbiBjb252ZXJ0
UGFnZUJyZWFrQmV0d2VlbihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0
YXRpYyBCcmVha0luc2lkZSBjb252ZXJ0UGFnZUJyZWFrSW5zaWRlKEJ1aWxkZXJTdGF0ZSYsIGNv
bnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIEJyZWFrQmV0d2VlbiBjb252ZXJ0Q29sdW1uQnJl
YWtCZXR3ZWVuKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIEJy
ZWFrSW5zaWRlIGNvbnZlcnRDb2x1bW5CcmVha0luc2lkZShCdWlsZGVyU3RhdGUmLCBjb25zdCBD
U1NWYWx1ZSYpOwogCi0gICAgc3RhdGljIE9wdGlvblNldDxIYW5naW5nUHVuY3R1YXRpb24+IGNv
bnZlcnRIYW5naW5nUHVuY3R1YXRpb24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1Zh
bHVlJik7CisgICAgc3RhdGljIE9wdGlvblNldDxIYW5naW5nUHVuY3R1YXRpb24+IGNvbnZlcnRI
YW5naW5nUHVuY3R1YXRpb24oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKIAotICAg
IHN0YXRpYyBPcHRpb25TZXQ8U3BlYWtBcz4gY29udmVydFNwZWFrQXMoU3R5bGU6OkJ1aWxkZXJT
dGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIE9wdGlvblNldDxTcGVha0FzPiBj
b252ZXJ0U3BlYWtBcyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwogCi0gICAgc3Rh
dGljIExlbmd0aCBjb252ZXJ0UG9zaXRpb25Db21wb25lbnRYKFN0eWxlOjpCdWlsZGVyU3RhdGUm
LCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBMZW5ndGggY29udmVydFBvc2l0aW9uQ29t
cG9uZW50WShTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0
aWMgTGVuZ3RoIGNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudFgoQnVpbGRlclN0YXRlJiwgY29uc3Qg
Q1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudFko
QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKIAotICAgIHN0YXRpYyBHYXBMZW5ndGgg
Y29udmVydEdhcExlbmd0aChTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsK
KyAgICBzdGF0aWMgR2FwTGVuZ3RoIGNvbnZlcnRHYXBMZW5ndGgoQnVpbGRlclN0YXRlJiwgY29u
c3QgQ1NTVmFsdWUmKTsKICAgICAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIFN0eWxlQnVp
bGRlckN1c3RvbTsKKyAgICBmcmllbmQgY2xhc3MgQnVpbGRlckN1c3RvbTsKIAogICAgIHN0YXRp
YyBMZW5ndGggY29udmVydFRvUmFkaXVzTGVuZ3RoKENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEm
LCBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYpOwogICAgIHN0YXRpYyBPcHRpb25TZXQ8VGV4dEVt
cGhhc2lzUG9zaXRpb24+IHZhbHVlVG9FbXBoYXNpc1Bvc2l0aW9uKGNvbnN0IENTU1ByaW1pdGl2
ZVZhbHVlJik7CiAgICAgc3RhdGljIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvblNraXA+IHZhbHVl
VG9EZWNvcmF0aW9uU2tpcChjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYpOwogI2lmIEVOQUJMRShD
U1NfU0NST0xMX1NOQVApCi0gICAgc3RhdGljIExlbmd0aCBwYXJzZVNuYXBDb29yZGluYXRlKFN0
eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBMZW5ndGgg
cGFyc2VTbmFwQ29vcmRpbmF0ZShCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKQEAgLTE4MCwxOCArMTgxLDE4IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIAogICAgIHN0YXRpYyBMZW5ndGggY29udmVydFRvMTAwUGVyY2VudE1p
bnVzTGVuZ3RoKGNvbnN0IExlbmd0aCYpOwotICAgIHRlbXBsYXRlPENTU1ZhbHVlSUQsIENTU1Zh
bHVlSUQ+IHN0YXRpYyBMZW5ndGggY29udmVydFBvc2l0aW9uQ29tcG9uZW50KFN0eWxlOjpCdWls
ZGVyU3RhdGUmLCBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYpOworICAgIHRlbXBsYXRlPENTU1Zh
bHVlSUQsIENTU1ZhbHVlSUQ+IHN0YXRpYyBMZW5ndGggY29udmVydFBvc2l0aW9uQ29tcG9uZW50
KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJik7CiAKLSAgICBzdGF0aWMg
R3JpZExlbmd0aCBjcmVhdGVHcmlkVHJhY2tCcmVhZHRoKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVl
JiwgU3R5bGU6OkJ1aWxkZXJTdGF0ZSYpOwotICAgIHN0YXRpYyBHcmlkVHJhY2tTaXplIGNyZWF0
ZUdyaWRUcmFja1NpemUoY29uc3QgQ1NTVmFsdWUmLCBTdHlsZTo6QnVpbGRlclN0YXRlJik7Cisg
ICAgc3RhdGljIEdyaWRMZW5ndGggY3JlYXRlR3JpZFRyYWNrQnJlYWR0aChjb25zdCBDU1NQcmlt
aXRpdmVWYWx1ZSYsIEJ1aWxkZXJTdGF0ZSYpOworICAgIHN0YXRpYyBHcmlkVHJhY2tTaXplIGNy
ZWF0ZUdyaWRUcmFja1NpemUoY29uc3QgQ1NTVmFsdWUmLCBCdWlsZGVyU3RhdGUmKTsKICAgICBz
dHJ1Y3QgVHJhY2tzRGF0YTsKLSAgICBzdGF0aWMgYm9vbCBjcmVhdGVHcmlkVHJhY2tMaXN0KGNv
bnN0IENTU1ZhbHVlJiwgVHJhY2tzRGF0YSYsIFN0eWxlOjpCdWlsZGVyU3RhdGUmKTsKKyAgICBz
dGF0aWMgYm9vbCBjcmVhdGVHcmlkVHJhY2tMaXN0KGNvbnN0IENTU1ZhbHVlJiwgVHJhY2tzRGF0
YSYsIEJ1aWxkZXJTdGF0ZSYpOwogICAgIHN0YXRpYyBib29sIGNyZWF0ZUdyaWRQb3NpdGlvbihj
b25zdCBDU1NWYWx1ZSYsIEdyaWRQb3NpdGlvbiYpOwogICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUlt
cGxpY2l0TmFtZWRHcmlkTGluZXNGcm9tR3JpZEFyZWEoY29uc3QgTmFtZWRHcmlkQXJlYU1hcCYs
IE5hbWVkR3JpZExpbmVzTWFwJiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKTsKLSAgICBzdGF0
aWMgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSBjc3N0b0xlbmd0aENvbnZlcnNpb25EYXRhV2l0
aFRleHRab29tRmFjdG9yKFN0eWxlOjpCdWlsZGVyU3RhdGUmKTsKKyAgICBzdGF0aWMgQ1NTVG9M
ZW5ndGhDb252ZXJzaW9uRGF0YSBjc3N0b0xlbmd0aENvbnZlcnNpb25EYXRhV2l0aFRleHRab29t
RmFjdG9yKEJ1aWxkZXJTdGF0ZSYpOwogfTsKIAotaW5saW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgoY29uc3QgU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgTGVuZ3RoIEJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgoY29uc3QgQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNv
bnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgQ1NTVG9MZW5ndGhDb252ZXJzaW9u
RGF0YSBjb252ZXJzaW9uRGF0YSA9IGJ1aWxkZXJTdGF0ZS51c2VTVkdab29tUnVsZXNGb3JMZW5n
dGgoKSA/CkBAIC0yMTQsMTQgKzIxNSwxNCBAQCBpbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydExlbmd0aChjb25zdCBTdHlsZTo6QnVpbGRlclN0YXRlJiBidQogICAg
IHJldHVybiBMZW5ndGgoMCwgRml4ZWQpOwogfQogCi1pbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydExlbmd0aE9yQXV0byhjb25zdCBTdHlsZTo6QnVpbGRlclN0YXRl
JiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBMZW5ndGggQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0aE9yQXV0byhjb25zdCBCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pCiAgICAg
ICAgIHJldHVybiBMZW5ndGgoQXV0byk7CiAgICAgcmV0dXJuIGNvbnZlcnRMZW5ndGgoYnVpbGRl
clN0YXRlLCB2YWx1ZSk7CiB9CiAKLWlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0TGVuZ3RoU2l6aW5nKGNvbnN0IFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJT
dGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIExlbmd0aCBCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0TGVuZ3RoU2l6aW5nKGNvbnN0IEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
LCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIHN3aXRjaCAocHJpbWl0aXZl
VmFsdWUudmFsdWVJRCgpKSB7CkBAIC0yNTAsMTQgKzI1MSwxNCBAQCBpbmxpbmUgTGVuZ3RoIFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0aFNpemluZyhjb25zdCBTdHlsZTo6QnVp
bGRlclN0YQogICAgIH0KIH0KIAotaW5saW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRMZW5ndGhNYXhTaXppbmcoY29uc3QgU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgTGVuZ3RoIEJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRMZW5ndGhNYXhTaXppbmcoY29uc3QgQnVpbGRlclN0YXRlJiBidWlsZGVy
U3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICBy
ZXR1cm4gTGVuZ3RoKFVuZGVmaW5lZCk7CiAgICAgcmV0dXJuIGNvbnZlcnRMZW5ndGhTaXppbmco
YnVpbGRlclN0YXRlLCB2YWx1ZSk7CiB9CiAKLWlubGluZSBUYWJTaXplIFN0eWxlQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydFRhYlNpemUoY29uc3QgU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgVGFiU2l6ZSBCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0VGFiU2l6ZShjb25zdCBCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwg
Y29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUu
aXNOdW1iZXIoKSkKQEAgLTI2NiwxMyArMjY3LDEzIEBAIGlubGluZSBUYWJTaXplIFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFRhYlNpemUoY29uc3QgU3R5bGU6OkJ1aWxkZXJTdGF0ZSYK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBUIFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydENvbXB1dGVkTGVuZ3RoKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0
ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFQgQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydENvbXB1dGVkTGVuZ3RoKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NW
YWx1ZSYgdmFsdWUpCiB7CiAgICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2
YWx1ZSkuY29tcHV0ZUxlbmd0aDxUPihidWlsZGVyU3RhdGUuY3NzVG9MZW5ndGhDb252ZXJzaW9u
RGF0YSgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBUIFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydExpbmVXaWR0aChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVy
U3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBUIEJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRMaW5lV2lkdGgoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1Zh
bHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlE
KCkpIHsKQEAgLTMwMiw3ICszMDMsNyBAQCBpbmxpbmUgVCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRMaW5lV2lkdGgoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YQogICAgIH0K
IH0KIAotaW5saW5lIGZsb2F0IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNwYWNpbmco
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUp
CitpbmxpbmUgZmxvYXQgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNwYWNpbmcoQnVpbGRlclN0
YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBw
cmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAg
aWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKQEAgLTMxNCw3
ICszMTUsNyBAQCBpbmxpbmUgZmxvYXQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3Bh
Y2luZyhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyUwogICAgIHJldHVybiBwcmltaXRpdmVW
YWx1ZS5jb21wdXRlTGVuZ3RoPGZsb2F0Pihjb252ZXJzaW9uRGF0YSk7CiB9CiAKLWlubGluZSBM
ZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG9SYWRpdXNMZW5ndGgoQ1NTVG9M
ZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIGNvbnN0IENTU1ByaW1pdGl2ZVZh
bHVlJiB2YWx1ZSkKK2lubGluZSBMZW5ndGggQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRvUmFk
aXVzTGVuZ3RoKENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjb25z
dCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLmlzUGVyY2VudGFn
ZSgpKQogICAgICAgICByZXR1cm4gTGVuZ3RoKHZhbHVlLmRvdWJsZVZhbHVlKCksIFBlcmNlbnQp
OwpAQCAtMzIzLDcgKzMyNCw3IEBAIGlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0VG9SYWRpdXNMZW5ndGgoQ1NTVG9MZW5ndGhDb252ZXJzaW9uCiAgICAgcmV0dXJu
IHZhbHVlLmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0YSk7CiB9CiAKLWlubGlu
ZSBMZW5ndGhTaXplIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFJhZGl1cyhTdHlsZTo6
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGlu
ZSBMZW5ndGhTaXplIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSYWRpdXMoQnVpbGRlclN0YXRl
JiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvKiBwYWly
ID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5wYWlyVmFsdWUoKTsKICAgICBp
ZiAoIXBhaXIgfHwgIXBhaXItPmZpcnN0KCkgfHwgIXBhaXItPnNlY29uZCgpKQpAQCAtMzQwLDcg
KzM0MSw3IEBAIGlubGluZSBMZW5ndGhTaXplIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dFJhZGl1cyhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsCiAgICAgcmV0dXJuIHJhZGl1czsKIH0K
IAotaW5saW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUbzEwMFBlcmNl
bnRNaW51c0xlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCkKK2lubGluZSBMZW5ndGggQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydFRvMTAwUGVyY2VudE1pbnVzTGVuZ3RoKGNvbnN0IExlbmd0aCYg
bGVuZ3RoKQogewogICAgIGlmIChsZW5ndGguaXNQZXJjZW50KCkpCiAgICAgICAgIHJldHVybiBM
ZW5ndGgoMTAwIC0gbGVuZ3RoLnZhbHVlKCksIFBlcmNlbnQpOwpAQCAtMzU0LDE4ICszNTUsMTgg
QEAgaW5saW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUbzEwMFBlcmNl
bnRNaW51c0xlbmd0aChjb25zdCBMZW5ndGgKICAgICByZXR1cm4gTGVuZ3RoKENhbGN1bGF0aW9u
VmFsdWU6OmNyZWF0ZShXVEZNb3ZlKG9wKSwgVmFsdWVSYW5nZUFsbCkpOwogfQogCi1pbmxpbmUg
TGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBvc2l0aW9uQ29tcG9uZW50WChT
dHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkK
K2lubGluZSBMZW5ndGggQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBvc2l0aW9uQ29tcG9uZW50
WChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewog
ICAgIHJldHVybiBjb252ZXJ0UG9zaXRpb25Db21wb25lbnQ8Q1NTVmFsdWVMZWZ0LCBDU1NWYWx1
ZVJpZ2h0PihidWlsZGVyU3RhdGUsIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkp
OwogfQogCi1pbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBvc2l0
aW9uQ29tcG9uZW50WShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENT
U1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBMZW5ndGggQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBv
c2l0aW9uQ29tcG9uZW50WShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFs
dWUmIHZhbHVlKQogewogICAgIHJldHVybiBjb252ZXJ0UG9zaXRpb25Db21wb25lbnQ8Q1NTVmFs
dWVUb3AsIENTU1ZhbHVlQm90dG9tPihidWlsZGVyU3RhdGUsIGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTxDU1NWYWx1ZUlEIGNzc1ZhbHVlRm9yMCwg
Q1NTVmFsdWVJRCBjc3NWYWx1ZUZvcjEwMD4KLWlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25lbnQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlLCBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUpCitpbmxpbmUgTGVuZ3Ro
IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudChCdWlsZGVyU3RhdGUm
IGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlKQogewogICAgIExl
bmd0aCBsZW5ndGg7CiAKQEAgLTQwMCw3ICs0MDEsNyBAQCBpbmxpbmUgTGVuZ3RoIFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFBvc2l0aW9uQ29tcG9uZW50KFN0eWxlOjpCdWlsZGVyU3Rh
dAogICAgIHJldHVybiBsZW5ndGg7CiB9CiAKLWlubGluZSBMZW5ndGhQb2ludCBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRPYmplY3RQb3NpdGlvbihTdHlsZTo6QnVpbGRlclN0YXRlJiBi
dWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBMZW5ndGhQb2ludCBC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0T2JqZWN0UG9zaXRpb24oQnVpbGRlclN0YXRlJiBidWls
ZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVW
YWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgUGFpciogcGFp
ciA9IHByaW1pdGl2ZVZhbHVlLnBhaXJWYWx1ZSgpOwpAQCAtNDEzLDcgKzQxNCw3IEBAIGlubGlu
ZSBMZW5ndGhQb2ludCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRPYmplY3RQb3NpdGlv
bihTdHlsZTo6QnVpbGRlclN0CiAgICAgcmV0dXJuIExlbmd0aFBvaW50KGxlbmd0aFgsIGxlbmd0
aFkpOwogfQogCi1pbmxpbmUgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRUZXh0RGVjb3JhdGlvbihTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29u
c3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0
IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvIHJlc3VsdCA9IFJlbmRlclN0eWxlOjppbml0
aWFsVGV4dERlY29yYXRpb24oKTsKICAgICBpZiAoaXM8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsK
QEAgLTQyNCwyMCArNDI1LDIwIEBAIGlubGluZSBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9uKFN0CiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgVCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRO
dW1iZXIoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGlu
ZSBUIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnROdW1iZXIoQnVpbGRlclN0YXRlJiwgY29uc3Qg
Q1NTVmFsdWUmIHZhbHVlKQogewogICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpLnZhbHVlPFQ+KENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBUIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydE51bWJlck9yQXV0byhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0
IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBUIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnROdW1i
ZXJPckF1dG8oQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1
ZSkKIHsKICAgICBpZiAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlE
KCkgPT0gQ1NTVmFsdWVBdXRvKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgcmV0dXJuIGNvbnZl
cnROdW1iZXI8VD4oYnVpbGRlclN0YXRlLCB2YWx1ZSk7CiB9CiAKLWlubGluZSBzaG9ydCBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRXZWJraXRIeXBoZW5hdGVMaW1pdExpbmVzKFN0eWxl
OjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgc2hvcnQgQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFdlYmtpdEh5cGhlbmF0ZUxpbWl0TGluZXMoQnVpbGRlclN0
YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVl
ID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZl
VmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTm9MaW1pdCkKQEAgLTQ0Niw3ICs0NDcsNyBAQCBp
bmxpbmUgc2hvcnQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0V2Via2l0SHlwaGVuYXRl
TGltaXRMaW5lcyhTdHlsZTo6QnVpbAogfQogCiB0ZW1wbGF0ZTxDU1NQcm9wZXJ0eUlEIHByb3Bl
cnR5PgotaW5saW5lIE5pbmVQaWVjZUltYWdlIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dEJvcmRlckltYWdlKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUm
IHZhbHVlKQoraW5saW5lIE5pbmVQaWVjZUltYWdlIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRC
b3JkZXJJbWFnZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQog
ewogICAgIE5pbmVQaWVjZUltYWdlIGltYWdlOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZU1hcCgp
Lm1hcE5pbmVQaWVjZUltYWdlKHByb3BlcnR5LCAmdmFsdWUsIGltYWdlKTsKQEAgLTQ1NCw3ICs0
NTUsNyBAQCBpbmxpbmUgTmluZVBpZWNlSW1hZ2UgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0Qm9yZGVySW1hZ2UoU3R5bGU6OkJ1aWxkZXJTdAogfQogCiB0ZW1wbGF0ZTxDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5PgotaW5saW5lIE5pbmVQaWVjZUltYWdlIFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydEJvcmRlck1hc2soU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBD
U1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgTmluZVBpZWNlSW1hZ2UgQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydEJvcmRlck1hc2soQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2
YWx1ZSkKIHsKICAgICBOaW5lUGllY2VJbWFnZSBpbWFnZShOaW5lUGllY2VJbWFnZTo6VHlwZTo6
TWFzayk7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlTWFwKCkubWFwTmluZVBpZWNlSW1hZ2UocHJv
cGVydHksICZ2YWx1ZSwgaW1hZ2UpOwpAQCAtNDYyLDEyICs0NjMsMTIgQEAgaW5saW5lIE5pbmVQ
aWVjZUltYWdlIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEJvcmRlck1hc2soU3R5bGU6
OkJ1aWxkZXJTdGEKIH0KIAogdGVtcGxhdGU8Q1NTUHJvcGVydHlJRD4KLWlubGluZSBSZWZQdHI8
U3R5bGVJbWFnZT4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3R5bGVJbWFnZShTdHls
ZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBS
ZWZQdHI8U3R5bGVJbWFnZT4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFN0eWxlSW1hZ2UoQnVp
bGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICByZXR1cm4g
YnVpbGRlclN0YXRlLmNyZWF0ZVN0eWxlSW1hZ2UodmFsdWUpOwogfQogCi1pbmxpbmUgVHJhbnNm
b3JtT3BlcmF0aW9ucyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUcmFuc2Zvcm0oU3R5
bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitp
bmxpbmUgVHJhbnNmb3JtT3BlcmF0aW9ucyBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VHJhbnNm
b3JtKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7
CiAgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zOwogICAgIHRyYW5zZm9ybXNGb3JW
YWx1ZSh2YWx1ZSwgYnVpbGRlclN0YXRlLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKSwgb3Bl
cmF0aW9ucyk7CkBAIC00NzUsNyArNDc2LDcgQEAgaW5saW5lIFRyYW5zZm9ybU9wZXJhdGlvbnMg
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VHJhbnNmb3JtKFN0eWxlOjpCdWlsZGUKIH0K
IAogI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjp1cGRhdGVDb2xvclNjaGVtZShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgcHJpbWl0
aXZlVmFsdWUsIFN0eWxlQ29sb3JTY2hlbWUmIGNvbG9yU2NoZW1lKQoraW5saW5lIHZvaWQgQnVp
bGRlckNvbnZlcnRlcjo6dXBkYXRlQ29sb3JTY2hlbWUoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUm
IHByaW1pdGl2ZVZhbHVlLCBTdHlsZUNvbG9yU2NoZW1lJiBjb2xvclNjaGVtZSkKIHsKICAgICBB
U1NFUlQocHJpbWl0aXZlVmFsdWUuaXNWYWx1ZUlEKCkpOwogCkBAIC00OTgsNyArNDk5LDcgQEAg
aW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjp1cGRhdGVDb2xvclNjaGVtZShjb25z
dCBDU1NQcmltaXRpdmVWYWx1ZSYgcHIKICAgICB9CiB9CiAKLWlubGluZSBTdHlsZUNvbG9yU2No
ZW1lIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENvbG9yU2NoZW1lKFN0eWxlOjpCdWls
ZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgU3R5bGVDb2xvclNjaGVt
ZSBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q29sb3JTY2hlbWUoQnVpbGRlclN0YXRlJiwgY29u
c3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIFN0eWxlQ29sb3JTY2hlbWUgY29sb3JTY2hlbWU7
CiAKQEAgLTUxNiwyNiArNTE3LDI2IEBAIGlubGluZSBTdHlsZUNvbG9yU2NoZW1lIFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydENvbG9yU2NoZW1lKFN0eWxlOjpCdWlsZGVyCiB9CiAjZW5k
aWYKIAotaW5saW5lIFN0cmluZyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTdHJpbmco
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBTdHJp
bmcgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFN0cmluZyhCdWlsZGVyU3RhdGUmLCBjb25zdCBD
U1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSkuc3RyaW5nVmFsdWUoKTsKIH0KIAotaW5saW5lIFN0cmluZyBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRTdHJpbmdPckF1dG8oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgU3RyaW5nIEJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRTdHJpbmdPckF1dG8oQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNv
bnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKQogICAgICAgICByZXR1cm4gbnVs
bEF0b20oKTsKICAgICByZXR1cm4gY29udmVydFN0cmluZyhidWlsZGVyU3RhdGUsIHZhbHVlKTsK
IH0KIAotaW5saW5lIFN0cmluZyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTdHJpbmdP
ck5vbmUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYg
dmFsdWUpCitpbmxpbmUgU3RyaW5nIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTdHJpbmdPck5v
bmUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsK
ICAgICBpZiAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0g
Q1NTVmFsdWVOb25lKQogICAgICAgICByZXR1cm4gbnVsbEF0b20oKTsKICAgICByZXR1cm4gY29u
dmVydFN0cmluZyhidWlsZGVyU3RhdGUsIHZhbHVlKTsKIH0KIAotaW5saW5lIE9wdGlvblNldDxU
ZXh0RW1waGFzaXNQb3NpdGlvbj4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjp2YWx1ZVRvRW1waGFz
aXNQb3NpdGlvbihjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgcHJpbWl0aXZlVmFsdWUpCitpbmxp
bmUgT3B0aW9uU2V0PFRleHRFbXBoYXNpc1Bvc2l0aW9uPiBCdWlsZGVyQ29udmVydGVyOjp2YWx1
ZVRvRW1waGFzaXNQb3NpdGlvbihjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgcHJpbWl0aXZlVmFs
dWUpCiB7CiAgICAgQVNTRVJUKHByaW1pdGl2ZVZhbHVlLmlzVmFsdWVJRCgpKTsKIApAQCAtNTU2
LDcgKzU1Nyw3IEBAIGlubGluZSBPcHRpb25TZXQ8VGV4dEVtcGhhc2lzUG9zaXRpb24+IFN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6dmFsdWVUb0VtcGhhc2lzUG9zCiAgICAgcmV0dXJuIFJlbmRlclN0
eWxlOjppbml0aWFsVGV4dEVtcGhhc2lzUG9zaXRpb24oKTsKIH0KIAotaW5saW5lIE9wdGlvblNl
dDxUZXh0RW1waGFzaXNQb3NpdGlvbj4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4
dEVtcGhhc2lzUG9zaXRpb24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2
YWx1ZSkKK2lubGluZSBPcHRpb25TZXQ8VGV4dEVtcGhhc2lzUG9zaXRpb24+IEJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRUZXh0RW1waGFzaXNQb3NpdGlvbihCdWlsZGVyU3RhdGUmLCBjb25zdCBD
U1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkp
CiAgICAgICAgIHJldHVybiB2YWx1ZVRvRW1waGFzaXNQb3NpdGlvbihkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpKTsKQEAgLTU2Nyw3ICs1NjgsNyBAQCBpbmxpbmUgT3B0aW9uU2V0
PFRleHRFbXBoYXNpc1Bvc2l0aW9uPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0
RW1waGFzaQogICAgIHJldHVybiBwb3NpdGlvbjsKIH0KIAotaW5saW5lIFRleHRBbGlnbk1vZGUg
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dEFsaWduKFN0eWxlOjpCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFRleHRBbGln
bk1vZGUgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRBbGlnbihCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2
ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBBU1NFUlQo
cHJpbWl0aXZlVmFsdWUuaXNWYWx1ZUlEKCkpOwpAQCAtNTgzLDcgKzU4NCw3IEBAIGlubGluZSBU
ZXh0QWxpZ25Nb2RlIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRBbGlnbihTdHls
ZTo6QnVpbGRlclN0YXRlCiAgICAgcmV0dXJuIHBhcmVudFN0eWxlLnRleHRBbGlnbigpOwogfQog
Ci1pbmxpbmUgUmVmUHRyPENsaXBQYXRoT3BlcmF0aW9uPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRDbGlwUGF0aChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0
IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+IEJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRDbGlwUGF0aChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwg
Y29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUpKSB7CiAgICAgICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KHZhbHVlKTsKQEAgLTYyNyw3ICs2MjgsNyBAQCBpbmxpbmUgUmVmUHRyPENs
aXBQYXRoT3BlcmF0aW9uPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDbGlwUGF0aChT
dHlsZTo6QgogICAgIHJldHVybiBvcGVyYXRpb247CiB9CiAKLWlubGluZSBSZXNpemUgU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmVzaXplKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxk
ZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFJlc2l6ZSBCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0UmVzaXplKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBD
U1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogCkBAIC02NDAsNyArNjQxLDcgQEAgaW5saW5lIFJl
c2l6ZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZXNpemUoU3R5bGU6OkJ1aWxkZXJT
dGF0ZSYgYnVpbGRlclMKICAgICByZXR1cm4gcmVzaXplOwogfQogCi1pbmxpbmUgaW50IFN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVSZXBldGl0aW9uKFN0eWxlOjpCdWlsZGVy
U3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgaW50IEJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRNYXJxdWVlUmVwZXRpdGlvbihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1
ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0g
Q1NTVmFsdWVJbmZpbml0ZSkKQEAgLTY1MCw3ICs2NTEsNyBAQCBpbmxpbmUgaW50IFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVSZXBldGl0aW9uKFN0eWxlOjpCdWlsZGVyU3Rh
dGUmLAogICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZS5pbnRWYWx1ZSgpOwogfQogCi1pbmxpbmUg
aW50IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVTcGVlZChTdHlsZTo6QnVp
bGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIGludCBCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0TWFycXVlZVNwZWVkKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVl
JiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgaW50IHNwZWVkID0gODU7CkBAIC02NzksNyArNjgwLDcg
QEAgaW5saW5lIGludCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVlU3BlZWQo
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnMKICAgICByZXR1cm4gc3BlZWQ7CiB9CiAKLWlubGlu
ZSBSZWY8UXVvdGVzRGF0YT4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UXVvdGVzKFN0
eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgUmVmPFF1
b3Rlc0RhdGE+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRRdW90ZXMoQnVpbGRlclN0YXRlJiwg
Y29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUpKSB7CiAgICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFs
dWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpOwpAQCAtNzAyLDEzICs3MDMsMTMgQEAgaW5s
aW5lIFJlZjxRdW90ZXNEYXRhPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRRdW90ZXMo
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYKICAgICByZXR1cm4gUXVvdGVzRGF0YTo6Y3JlYXRlKHF1b3Rl
cyk7CiB9CiAKLWlubGluZSBUZXh0VW5kZXJsaW5lUG9zaXRpb24gU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0VGV4dFVuZGVybGluZVBvc2l0aW9uKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBj
b25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgVGV4dFVuZGVybGluZVBvc2l0aW9uIEJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0VW5kZXJsaW5lUG9zaXRpb24oQnVpbGRlclN0YXRlJiwg
Y29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIEFTU0VSVChpczxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpKTsKICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KTsKIH0KIAotaW5saW5lIFRleHRVbmRlcmxpbmVPZmZzZXQgU3R5bGVCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0VGV4dFVuZGVybGluZU9mZnNldChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVy
U3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBUZXh0VW5kZXJsaW5lT2Zmc2V0
IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0VW5kZXJsaW5lT2Zmc2V0KEJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgQVNTRVJUKGlz
PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpOwogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0g
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKQEAgLTcyMiw3ICs3MjMsNyBAQCBp
bmxpbmUgVGV4dFVuZGVybGluZU9mZnNldCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRU
ZXh0VW5kZXJsaW5lT2Zmc2V0KFN0eQogICAgIH0KIH0KIAotaW5saW5lIFRleHREZWNvcmF0aW9u
VGhpY2tuZXNzIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9uVGhp
Y2tuZXNzKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUm
IHZhbHVlKQoraW5saW5lIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzIEJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0
ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIEFTU0VSVChpczxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpKTsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSk7CkBAIC03MzgsNyArNzM5LDcgQEAgaW5saW5lIFRleHREZWNv
cmF0aW9uVGhpY2tuZXNzIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0
aW9uVGhpY2sKICAgICB9CiB9CiAKLWlubGluZSBSZWZQdHI8U3R5bGVSZWZsZWN0aW9uPiBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWZsZWN0aW9uKFN0eWxlOjpCdWlsZGVyU3RhdGUm
IGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFJlZlB0cjxTdHls
ZVJlZmxlY3Rpb24+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWZsZWN0aW9uKEJ1aWxkZXJT
dGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlz
PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKICAgICAgICAgQVNTRVJUKGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7CkBAIC03
NTgsNyArNzU5LDcgQEAgaW5saW5lIFJlZlB0cjxTdHlsZVJlZmxlY3Rpb24+IFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydFJlZmxlY3Rpb24oU3R5bGU6OkIKICAgICByZXR1cm4gcmVmbGVj
dGlvbjsKIH0KIAotaW5saW5lIEludFNpemUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
SW5pdGlhbExldHRlcihTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVl
KQoraW5saW5lIEludFNpemUgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEluaXRpYWxMZXR0ZXIo
QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1p
dGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKIApAQCAtNzcz
LDcgKzc3NCw3IEBAIGlubGluZSBJbnRTaXplIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dEluaXRpYWxMZXR0ZXIoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsCiAgICAgcmV0dXJuIEludFNpemUo
cGFpci0+Zmlyc3QoKS0+aW50VmFsdWUoKSwgcGFpci0+c2Vjb25kKCktPmludFZhbHVlKCkpOwog
fQogCi1pbmxpbmUgZmxvYXQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dFN0cm9r
ZVdpZHRoKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUm
IHZhbHVlKQoraW5saW5lIGZsb2F0IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0U3Ryb2tl
V2lkdGgoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkK
IHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSk7CiAKQEAgLTgwMyw3ICs4MDQsNyBAQCBpbmxpbmUgZmxvYXQgU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0VGV4dFN0cm9rZVdpZHRoKFN0eWxlOjpCdWlsZGVyU3RhdGUmCiAg
ICAgcmV0dXJuIHdpZHRoOwogfQogCi1pbmxpbmUgT3B0aW9uU2V0PExpbmVCb3hDb250YWluPiBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMaW5lQm94Q29udGFpbihTdHlsZTo6QnVpbGRl
clN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIE9wdGlvblNldDxMaW5lQm94
Q29udGFpbj4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVCb3hDb250YWluKEJ1aWxkZXJT
dGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhbHVlKSkgewogICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKQEAgLTgxMyw3ICs4MTQsNyBA
QCBpbmxpbmUgT3B0aW9uU2V0PExpbmVCb3hDb250YWluPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRMaW5lQm94Q29udGFpbihTdAogICAgIHJldHVybiBkb3duY2FzdDxDU1NMaW5lQm94
Q29udGFpblZhbHVlPih2YWx1ZSkudmFsdWUoKTsKIH0KIAotaW5saW5lIE9wdGlvblNldDxUZXh0
RGVjb3JhdGlvblNraXA+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6dmFsdWVUb0RlY29yYXRpb25T
a2lwKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1ZSkKK2lubGluZSBPcHRp
b25TZXQ8VGV4dERlY29yYXRpb25Ta2lwPiBCdWlsZGVyQ29udmVydGVyOjp2YWx1ZVRvRGVjb3Jh
dGlvblNraXAoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHByaW1pdGl2ZVZhbHVlKQogewogICAg
IEFTU0VSVChwcmltaXRpdmVWYWx1ZS5pc1ZhbHVlSUQoKSk7CiAKQEAgLTgzNCw3ICs4MzUsNyBA
QCBpbmxpbmUgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uU2tpcD4gU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjp2YWx1ZVRvRGVjb3JhdGlvblNraQogICAgIHJldHVybiBPcHRpb25TZXQ8VGV4dERlY29y
YXRpb25Ta2lwPiB7IH07CiB9CiAKLWlubGluZSBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25Ta2lw
PiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0RGVjb3JhdGlvblNraXAoU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBPcHRpb25TZXQ8
VGV4dERlY29yYXRpb25Ta2lwPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dERlY29yYXRp
b25Ta2lwKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAo
aXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIHZhbHVlVG9EZWNv
cmF0aW9uU2tpcChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKTsKQEAgLTg1MCw3
ICs4NTEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbWFnZVNoYXBlKGNvbnN0IENTU1ZhbHVl
JiB2YWx1ZSkKICAgICByZXR1cm4gaXM8Q1NTSW1hZ2VWYWx1ZT4odmFsdWUpIHx8IGlzPENTU0lt
YWdlU2V0VmFsdWU+KHZhbHVlKSB8fCBpczxDU1NJbWFnZUdlbmVyYXRvclZhbHVlPih2YWx1ZSk7
CiB9CiAKLWlubGluZSBSZWZQdHI8U2hhcGVWYWx1ZT4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0U2hhcGVWYWx1ZShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1Zh
bHVlJiB2YWx1ZSkKK2lubGluZSBSZWZQdHI8U2hhcGVWYWx1ZT4gQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydFNoYXBlVmFsdWUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2
YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewogICAgICAg
ICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0g
Q1NTVmFsdWVOb25lKTsKQEAgLTg4OSw3ICs4OTAsNyBAQCBpbmxpbmUgUmVmUHRyPFNoYXBlVmFs
dWU+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNoYXBlVmFsdWUoU3R5bGU6OkJ1aWxk
ZQogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKIAotaW5saW5lIFNjcm9sbFNuYXBUeXBl
IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNjcm9sbFNuYXBUeXBlKFN0eWxlOjpCdWls
ZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgU2Nyb2xsU25hcFR5cGUg
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNjcm9sbFNuYXBUeXBlKEJ1aWxkZXJTdGF0ZSYsIGNv
bnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBTY3JvbGxTbmFwVHlwZSB0eXBlOwogICAgIGF1
dG8mIHZhbHVlcyA9IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpOwpAQCAtOTE0LDcgKzkx
NSw3IEBAIGlubGluZSBTY3JvbGxTbmFwVHlwZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRTY3JvbGxTbmFwVHlwZShTdHlsZTo6QnVpbGRlCiAgICAgcmV0dXJuIHR5cGU7CiB9CiAKLWlu
bGluZSBTY3JvbGxTbmFwQWxpZ24gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2Nyb2xs
U25hcEFsaWduKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitp
bmxpbmUgU2Nyb2xsU25hcEFsaWduIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTY3JvbGxTbmFw
QWxpZ24oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8m
IHZhbHVlcyA9IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpOwogICAgIFNjcm9sbFNuYXBB
bGlnbiBhbGlnbm1lbnQ7CkBAIC05MjgsNyArOTI5LDcgQEAgaW5saW5lIFNjcm9sbFNuYXBBbGln
biBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTY3JvbGxTbmFwQWxpZ24oU3R5bGU6OkJ1
aWwKIAogI2VuZGlmCiAKLWlubGluZSBHcmlkTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y3JlYXRlR3JpZFRyYWNrQnJlYWR0aChjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgcHJpbWl0aXZl
VmFsdWUsIFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSBHcmlkTGVu
Z3RoIEJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFja0JyZWFkdGgoY29uc3QgQ1NTUHJp
bWl0aXZlVmFsdWUmIHByaW1pdGl2ZVZhbHVlLCBCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkK
IHsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTWluQ29udGVu
dCB8fCBwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVXZWJraXRNaW5Db250ZW50
KQogICAgICAgICByZXR1cm4gTGVuZ3RoKE1pbkNvbnRlbnQpOwpAQCAtOTQzLDcgKzk0NCw3IEBA
IGlubGluZSBHcmlkTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFRyYWNr
QnJlYWR0aChjb25zdCBDU1NQcmltaXRpCiAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlLmNvbnZl
cnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBD
YWxjdWxhdGVkQ29udmVyc2lvbiB8IEF1dG9Db252ZXJzaW9uPihidWlsZGVyU3RhdGUuY3NzVG9M
ZW5ndGhDb252ZXJzaW9uRGF0YSgpKTsKIH0KIAotaW5saW5lIEdyaWRUcmFja1NpemUgU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tTaXplKGNvbnN0IENTU1ZhbHVlJiB2YWx1
ZSwgU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIEdyaWRUcmFja1Np
emUgQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFRyYWNrU2l6ZShjb25zdCBDU1NWYWx1ZSYg
dmFsdWUsIEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGlmIChpczxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpKQogICAgICAgICByZXR1cm4gR3JpZFRyYWNrU2l6ZShjcmVhdGVH
cmlkVHJhY2tCcmVhZHRoKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSksIGJ1aWxk
ZXJTdGF0ZSkpOwpAQCAtOTU0LDcgKzk1NSw3IEBAIGlubGluZSBHcmlkVHJhY2tTaXplIFN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFRyYWNrU2l6ZShjb25zdCBDU1NWYWx1ZSYKICAg
ICBpZiAoZnVuY3Rpb24ubGVuZ3RoKCkgPT0gMSkKICAgICAgICAgcmV0dXJuIEdyaWRUcmFja1Np
emUoY3JlYXRlR3JpZFRyYWNrQnJlYWR0aChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKmZ1
bmN0aW9uLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMCkpLCBidWlsZGVyU3RhdGUpLCBGaXRDb250
ZW50VHJhY2tTaXppbmcpOwogCi0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
ZnVuY3Rpb24ubGVuZ3RoKCkgPT0gMik7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihmdW5jdGlvbi5sZW5ndGgoKSA9PSAyKTsKICAgICBHcmlkTGVuZ3RoIG1p
blRyYWNrQnJlYWR0aChjcmVhdGVHcmlkVHJhY2tCcmVhZHRoKGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPigqZnVuY3Rpb24uaXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSksIGJ1aWxkZXJTdGF0
ZSkpOwogICAgIEdyaWRMZW5ndGggbWF4VHJhY2tCcmVhZHRoKGNyZWF0ZUdyaWRUcmFja0JyZWFk
dGgoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpmdW5jdGlvbi5pdGVtV2l0aG91dEJvdW5k
c0NoZWNrKDEpKSwgYnVpbGRlclN0YXRlKSk7CiAgICAgcmV0dXJuIEdyaWRUcmFja1NpemUobWlu
VHJhY2tCcmVhZHRoLCBtYXhUcmFja0JyZWFkdGgpOwpAQCAtOTczLDcgKzk3NCw3IEBAIHN0YXRp
YyB2b2lkIGNyZWF0ZUdyaWRMaW5lTmFtZXNMaXN0KGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgdW5z
aWduZWQgY3VycmVudE5hbWVkCiAgICAgfQogfQogCi1zdHJ1Y3QgU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpUcmFja3NEYXRhIHsKK3N0cnVjdCBCdWlsZGVyQ29udmVydGVyOjpUcmFja3NEYXRhIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUcmFja3NEYXRhKTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgVHJhY2tzRGF0YSgpID0gZGVmYXVsdDsKQEAgLTk4OCw3ICs5
ODksNyBAQCBwdWJsaWM6CiAgICAgQXV0b1JlcGVhdFR5cGUgbV9hdXRvUmVwZWF0VHlwZSB7IFJl
bmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9SZXBlYXRUeXBlKCkgfTsKIH07CiAKLWlubGluZSBi
b29sIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFRyYWNrTGlzdChjb25zdCBDU1NW
YWx1ZSYgdmFsdWUsIFRyYWNrc0RhdGEmIHRyYWNrc0RhdGEsIFN0eWxlOjpCdWlsZGVyU3RhdGUm
IGJ1aWxkZXJTdGF0ZSkKK2lubGluZSBib29sIEJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRU
cmFja0xpc3QoY29uc3QgQ1NTVmFsdWUmIHZhbHVlLCBUcmFja3NEYXRhJiB0cmFja3NEYXRhLCBC
dWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICAvLyBIYW5kbGUgJ25vbmUnLgogICAg
IGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKQpAQCAtMTA0NCw3ICsxMDQ1LDcgQEAg
aW5saW5lIGJvb2wgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tMaXN0KGNv
bnN0IENTU1ZhbHVlJiB2YWx1ZSwgVHIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotaW5saW5lIGJv
b2wgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkUG9zaXRpb24oY29uc3QgQ1NTVmFs
dWUmIHZhbHVlLCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uKQoraW5saW5lIGJvb2wgQnVpbGRlckNv
bnZlcnRlcjo6Y3JlYXRlR3JpZFBvc2l0aW9uKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgR3JpZFBv
c2l0aW9uJiBwb3NpdGlvbikKIHsKICAgICAvLyBXZSBhY2NlcHQgdGhlIHNwZWNpZmljYXRpb24n
cyBncmFtbWFyOgogICAgIC8vIGF1dG8gfCA8Y3VzdG9tLWlkZW50PiB8IFsgPGludGVnZXI+ICYm
IDxjdXN0b20taWRlbnQ+PyBdIHwgWyBzcGFuICYmIFsgPGludGVnZXI+IHx8IDxjdXN0b20taWRl
bnQ+IF0gXQpAQCAtMTA5NCw3ICsxMDk1LDcgQEAgaW5saW5lIGJvb2wgU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjcmVhdGVHcmlkUG9zaXRpb24oY29uc3QgQ1NTVmFsdWUmIHZhbHVlLCBHcmkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
cmVhdGVJbXBsaWNpdE5hbWVkR3JpZExpbmVzRnJvbUdyaWRBcmVhKGNvbnN0IE5hbWVkR3JpZEFy
ZWFNYXAmIG5hbWVkR3JpZEFyZWFzLCBOYW1lZEdyaWRMaW5lc01hcCYgbmFtZWRHcmlkTGluZXMs
IEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCitpbmxpbmUgdm9pZCBCdWlsZGVy
Q29udmVydGVyOjpjcmVhdGVJbXBsaWNpdE5hbWVkR3JpZExpbmVzRnJvbUdyaWRBcmVhKGNvbnN0
IE5hbWVkR3JpZEFyZWFNYXAmIG5hbWVkR3JpZEFyZWFzLCBOYW1lZEdyaWRMaW5lc01hcCYgbmFt
ZWRHcmlkTGluZXMsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAg
Zm9yIChhdXRvJiBhcmVhIDogbmFtZWRHcmlkQXJlYXMpIHsKICAgICAgICAgR3JpZFNwYW4gYXJl
YVNwYW4gPSBkaXJlY3Rpb24gPT0gRm9yUm93cyA/IGFyZWEudmFsdWUucm93cyA6IGFyZWEudmFs
dWUuY29sdW1uczsKQEAgLTExMTEsNyArMTExMiw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y3JlYXRlSW1wbGljaXROYW1lZEdyaWRMaW5lc0Zyb21HcmlkQXJlYShjb25z
CiAgICAgfQogfQogCi1pbmxpbmUgVmVjdG9yPEdyaWRUcmFja1NpemU+IFN0eWxlQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydEdyaWRUcmFja1NpemVMaXN0KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFZlY3RvcjxHcmlkVHJh
Y2tTaXplPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R3JpZFRyYWNrU2l6ZUxpc3QoQnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBBU1NF
UlQodmFsdWUuaXNWYWx1ZUxpc3QoKSk7CiAgICAgYXV0byYgdmFsdWVMaXN0ID0gZG93bmNhc3Q8
Q1NTVmFsdWVMaXN0Pih2YWx1ZSk7CkBAIC0xMTI2LDEyICsxMTI3LDEyIEBAIGlubGluZSBWZWN0
b3I8R3JpZFRyYWNrU2l6ZT4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R3JpZFRyYWNr
U2l6ZUxpc3QoU3R5CiAgICAgcmV0dXJuIHRyYWNrU2l6ZXM7CiB9CiAKLWlubGluZSBHcmlkVHJh
Y2tTaXplIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRUcmFja1NpemUoU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxp
bmUgR3JpZFRyYWNrU2l6ZSBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R3JpZFRyYWNrU2l6ZShC
dWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAg
IHJldHVybiBjcmVhdGVHcmlkVHJhY2tTaXplKHZhbHVlLCBidWlsZGVyU3RhdGUpOwogfQogCi1p
bmxpbmUgT3B0aW9uYWw8R3JpZFBvc2l0aW9uPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRHcmlkUG9zaXRpb24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1
ZSkKK2lubGluZSBPcHRpb25hbDxHcmlkUG9zaXRpb24+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRHcmlkUG9zaXRpb24oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewog
ICAgIEdyaWRQb3NpdGlvbiBncmlkUG9zaXRpb247CiAgICAgaWYgKGNyZWF0ZUdyaWRQb3NpdGlv
bih2YWx1ZSwgZ3JpZFBvc2l0aW9uKSkKQEAgLTExMzksNyArMTE0MCw3IEBAIGlubGluZSBPcHRp
b25hbDxHcmlkUG9zaXRpb24+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRQb3Np
dGlvbihTdHlsZTo6CiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAotaW5saW5lIEdyaWRB
dXRvRmxvdyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHcmlkQXV0b0Zsb3coU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBHcmlkQXV0b0Zs
b3cgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRBdXRvRmxvdyhCdWlsZGVyU3RhdGUmLCBj
b25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgbGlzdCA9IGRvd25jYXN0PENTU1Zh
bHVlTGlzdD4odmFsdWUpOwogICAgIGlmICghbGlzdC5sZW5ndGgoKSkKQEAgLTExNzcsNyArMTE3
OCw3IEBAIGlubGluZSBHcmlkQXV0b0Zsb3cgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
R3JpZEF1dG9GbG93KFN0eWxlOjpCdWlsZGVyU3RhCiAgICAgcmV0dXJuIGF1dG9GbG93OwogfQog
Ci1pbmxpbmUgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNzc3RvTGVuZ3RoQ29udmVyc2lvbkRhdGFXaXRoVGV4dFpvb21GYWN0b3IoU3R5bGU6OkJ1aWxk
ZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEg
QnVpbGRlckNvbnZlcnRlcjo6Y3NzdG9MZW5ndGhDb252ZXJzaW9uRGF0YVdpdGhUZXh0Wm9vbUZh
Y3RvcihCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBpZiAoYXV0byogZnJhbWUg
PSBidWlsZGVyU3RhdGUuZG9jdW1lbnQoKS5mcmFtZSgpKSB7CiAgICAgICAgIGZsb2F0IHRleHRa
b29tRmFjdG9yID0gYnVpbGRlclN0YXRlLnN0eWxlKCkudGV4dFpvb20oKSAhPSBUZXh0Wm9vbTo6
UmVzZXQgPyBmcmFtZS0+dGV4dFpvb21GYWN0b3IoKSA6IDEuMGY7CkBAIC0xMTg2LDcgKzExODcs
NyBAQCBpbmxpbmUgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXI6OmNzc3RvTGVuZ3RoQ29udmVyc2lvbkRhdAogICAgIHJldHVybiBidWlsZGVyU3RhdGUuY3Nz
VG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpOwogfQogCi1pbmxpbmUgT3B0aW9uYWw8TGVuZ3RoPiBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRXb3JkU3BhY2luZyhTdHlsZTo6QnVpbGRlclN0
YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBPcHRpb25h
bDxMZW5ndGg+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRXb3JkU3BhY2luZyhCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIE9wdGlvbmFs
PExlbmd0aD4gd29yZFNwYWNpbmc7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwpAQCAtMTIwMiw3ICsxMjAzLDcgQEAgaW5saW5l
IE9wdGlvbmFsPExlbmd0aD4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0V29yZFNwYWNp
bmcoU3R5bGU6OkJ1aWxkZXIKICAgICByZXR1cm4gd29yZFNwYWNpbmc7CiB9CiAKLWlubGluZSBP
cHRpb25hbDxmbG9hdD4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UGVyc3BlY3RpdmUo
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUp
CitpbmxpbmUgT3B0aW9uYWw8ZmxvYXQ+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQZXJzcGVj
dGl2ZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQog
ewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTm9u
ZSkKQEAgLTEyMTksNyArMTIyMCw3IEBAIGlubGluZSBPcHRpb25hbDxmbG9hdD4gU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0UGVyc3BlY3RpdmUoU3R5bGU6OkJ1aWxkZXJTCiAgICAgcmV0
dXJuIHBlcnNwZWN0aXZlIDwgMCA/IE9wdGlvbmFsPGZsb2F0PihXVEY6Om51bGxvcHQpIDogT3B0
aW9uYWw8ZmxvYXQ+KHBlcnNwZWN0aXZlKTsKIH0KIAotaW5saW5lIE9wdGlvbmFsPExlbmd0aD4g
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TWFycXVlZUluY3JlbWVudChTdHlsZTo6QnVp
bGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBP
cHRpb25hbDxMZW5ndGg+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVlSW5jcmVtZW50
KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAg
ICAgT3B0aW9uYWw8TGVuZ3RoPiBtYXJxdWVlTGVuZ3RoOwogICAgIGF1dG8mIHByaW1pdGl2ZVZh
bHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKQEAgLTEyNDUsNyArMTI0
Niw3IEBAIGlubGluZSBPcHRpb25hbDxMZW5ndGg+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydE1hcnF1ZWVJbmNyZW1lbnQoU3R5bGU6OkJ1CiAgICAgcmV0dXJuIG1hcnF1ZWVMZW5ndGg7
CiB9CiAKLWlubGluZSBPcHRpb25hbDxGaWx0ZXJPcGVyYXRpb25zPiBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRGaWx0ZXJPcGVyYXRpb25zKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxk
ZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIE9wdGlvbmFsPEZpbHRlck9w
ZXJhdGlvbnM+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGaWx0ZXJPcGVyYXRpb25zKEJ1aWxk
ZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgRmls
dGVyT3BlcmF0aW9ucyBvcGVyYXRpb25zOwogICAgIGlmIChidWlsZGVyU3RhdGUuY3JlYXRlRmls
dGVyT3BlcmF0aW9ucyh2YWx1ZSwgb3BlcmF0aW9ucykpCkBAIC0xMjUzLDcgKzEyNTQsNyBAQCBp
bmxpbmUgT3B0aW9uYWw8RmlsdGVyT3BlcmF0aW9ucz4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0RmlsdGVyT3BlcmF0aW9ucwogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKLWlu
bGluZSBGb250RmVhdHVyZVNldHRpbmdzIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZv
bnRGZWF0dXJlU2V0dGluZ3MoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2
YWx1ZSkKK2lubGluZSBGb250RmVhdHVyZVNldHRpbmdzIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRGb250RmVhdHVyZVNldHRpbmdzKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1
ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewogICAgICAgICBB
U1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NT
VmFsdWVOb3JtYWwpOwpAQCAtMTI2OCw3ICsxMjY5LDcgQEAgaW5saW5lIEZvbnRGZWF0dXJlU2V0
dGluZ3MgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udEZlYXR1cmVTZXR0aW5ncyhT
dHkKICAgICByZXR1cm4gc2V0dGluZ3M7CiB9CiAKLWlubGluZSBGb250U2VsZWN0aW9uVmFsdWUg
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFdlaWdodEZyb21WYWx1ZShjb25zdCBD
U1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgRm9udFNlbGVjdGlvblZhbHVlIEJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRGb250V2VpZ2h0RnJvbVZhbHVlKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsK
ICAgICBBU1NFUlQoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSk7CiAgICAgYXV0byYgcHJp
bWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwpAQCAtMTI5
MSw3ICsxMjkyLDcgQEAgaW5saW5lIEZvbnRTZWxlY3Rpb25WYWx1ZSBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRGb250V2VpZ2h0RnJvbVZhbHVlKGNvbnMKICAgICB9CiB9CiAKLWlubGlu
ZSBGb250U2VsZWN0aW9uVmFsdWUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN0
cmV0Y2hGcm9tVmFsdWUoY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIEZvbnRTZWxlY3Rp
b25WYWx1ZSBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN0cmV0Y2hGcm9tVmFsdWUoY29u
c3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIEFTU0VSVChpczxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUpKTsKICAgICBjb25zdCBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSk7CkBAIC0xMzA3LDcgKzEzMDgsNyBAQCBpbmxpbmUgRm9udFNl
bGVjdGlvblZhbHVlIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRTdHJldGNoRnJv
bVZhbHVlKGNvbgogfQogCiAvLyBUaGUgaW5wdXQgdmFsdWUgbmVlZHMgdG8gcGFyc2VkIGFuZCB2
YWxpZCwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIFdURjo6bnVsbG9wdCBpZiB0aGUgaW5wdXQgd2Fz
ICJub3JtYWwiLgotaW5saW5lIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN0eWxlRnJvbVZhbHVlKGNvbnN0IENTU1ZhbHVlJiB2
YWx1ZSkKK2lubGluZSBPcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IEJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRGb250U3R5bGVGcm9tVmFsdWUoY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewog
ICAgIEFTU0VSVChpczxDU1NGb250U3R5bGVWYWx1ZT4odmFsdWUpKTsKICAgICBjb25zdCBhdXRv
JiBmb250U3R5bGVWYWx1ZSA9IGRvd25jYXN0PENTU0ZvbnRTdHlsZVZhbHVlPih2YWx1ZSk7CkBA
IC0xMzIzLDcgKzEzMjQsNyBAQCBpbmxpbmUgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250U3R5bGVGcm9tVgogICAgIHJldHVybiBp
dGFsaWNWYWx1ZSgpOwogfQogCi1pbmxpbmUgRm9udFNlbGVjdGlvblZhbHVlIFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydEZvbnRXZWlnaHQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgRm9udFNlbGVjdGlvblZhbHVl
IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250V2VpZ2h0KEJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgQVNTRVJUKGlzPENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSkpOwogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKQEAgLTEzMzcsMTMgKzEzMzgsMTMgQEAgaW5saW5l
IEZvbnRTZWxlY3Rpb25WYWx1ZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250V2Vp
Z2h0KFN0eWxlOjpCdWlsZGUKICAgICByZXR1cm4gY29udmVydEZvbnRXZWlnaHRGcm9tVmFsdWUo
dmFsdWUpOwogfQogCi1pbmxpbmUgRm9udFNlbGVjdGlvblZhbHVlIFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydEZvbnRTdHJldGNoKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NW
YWx1ZSYgdmFsdWUpCitpbmxpbmUgRm9udFNlbGVjdGlvblZhbHVlIEJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRGb250U3RyZXRjaChCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUp
CiB7CiAgICAgcmV0dXJuIGNvbnZlcnRGb250U3RyZXRjaEZyb21WYWx1ZSh2YWx1ZSk7CiB9CiAK
ICNpZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQotaW5saW5lIEZvbnRWYXJpYXRpb25TZXR0aW5n
cyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250VmFyaWF0aW9uU2V0dGluZ3MoU3R5
bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBGb250VmFy
aWF0aW9uU2V0dGluZ3MgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRWYXJpYXRpb25TZXR0
aW5ncyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlz
PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKICAgICAgICAgQVNTRVJUKGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKTsKQEAg
LTEzNjAsMjEgKzEzNjEsMjEgQEAgaW5saW5lIEZvbnRWYXJpYXRpb25TZXR0aW5ncyBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250VmFyaWF0aW9uU2V0dGluZ3MKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLWlubGluZSBib29sIFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFRvdWNoQ2FsbG91dChTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFs
dWUmIHZhbHVlKQoraW5saW5lIGJvb2wgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRvdWNoQ2Fs
bG91dChCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgcmV0dXJu
ICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpLnN0cmluZ1ZhbHVlKCksICJub25lIik7CiB9CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCi1pbmxpbmUgQ29sb3IgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0VGFwSGlnaGxpZ2h0Q29sb3IoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBj
b25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgQ29sb3IgQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydFRhcEhpZ2hsaWdodENvbG9yKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBD
U1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgcmV0dXJuIGJ1aWxkZXJTdGF0ZS5jb2xvckZyb21Qcmlt
aXRpdmVWYWx1ZShkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKTsKIH0KICNlbmRp
ZgogCiAjaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRTKQotaW5saW5lIE9wdGlvblNldDxUb3VjaEFj
dGlvbj4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG91Y2hBY3Rpb24oU3R5bGU6OkJ1
aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBPcHRpb25TZXQ8VG91
Y2hBY3Rpb24+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUb3VjaEFjdGlvbihCdWlsZGVyU3Rh
dGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUpOwpAQCAtMTM5NiwxOCArMTM5NywxOCBAQCBpbmxpbmUgT3B0aW9uU2V0PFRvdWNoQWN0
aW9uPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUb3VjaEFjdGlvbihTdHlsZTo6Qgog
I2VuZGlmCiAKICNpZiBFTkFCTEUoT1ZFUkZMT1dfU0NST0xMSU5HX1RPVUNIKQotaW5saW5lIGJv
b2wgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0T3ZlcmZsb3dTY3JvbGxpbmcoU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBib29sIEJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRPdmVyZmxvd1Njcm9sbGluZyhCdWlsZGVyU3RhdGUmLCBjb25z
dCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlVG91Y2g7CiB9CiAjZW5kaWYKIAotaW5s
aW5lIFNWR0xlbmd0aFZhbHVlIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNWR0xlbmd0
aFZhbHVlKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxp
bmUgU1ZHTGVuZ3RoVmFsdWUgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNWR0xlbmd0aFZhbHVl
KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICByZXR1cm4gU1ZH
TGVuZ3RoVmFsdWU6OmZyb21DU1NQcmltaXRpdmVWYWx1ZShkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpKTsKIH0KIAotaW5saW5lIFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4gU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U1ZHTGVuZ3RoVmVjdG9yKFN0eWxlOjpCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFZlY3RvcjxT
VkdMZW5ndGhWYWx1ZT4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNWR0xlbmd0aFZlY3RvcihC
dWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAg
IGF1dG8mIHZhbHVlTGlzdCA9IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpOwogCkBAIC0x
NDE5LDcgKzE0MjAsNyBAQCBpbmxpbmUgVmVjdG9yPFNWR0xlbmd0aFZhbHVlPiBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRTVkdMZW5ndGhWZWN0b3IoU3R5bAogICAgIHJldHVybiBzdmdM
ZW5ndGhzOwogfQogCi1pbmxpbmUgVmVjdG9yPFNWR0xlbmd0aFZhbHVlPiBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRTdHJva2VEYXNoQXJyYXkoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgVmVjdG9yPFNWR0xlbmd0
aFZhbHVlPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3Ryb2tlRGFzaEFycmF5KEJ1aWxkZXJT
dGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlz
PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKICAgICAgICAgQVNTRVJUKGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7CkBAIC0x
NDI5LDcgKzE0MzAsNyBAQCBpbmxpbmUgVmVjdG9yPFNWR0xlbmd0aFZhbHVlPiBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRTdHJva2VEYXNoQXJyYXkoU3R5bAogICAgIHJldHVybiBjb252
ZXJ0U1ZHTGVuZ3RoVmVjdG9yKGJ1aWxkZXJTdGF0ZSwgdmFsdWUpOwogfQogCi1pbmxpbmUgUGFp
bnRPcmRlciBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQYWludE9yZGVyKFN0eWxlOjpC
dWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgUGFpbnRPcmRlciBC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UGFpbnRPcmRlcihCdWlsZGVyU3RhdGUmLCBjb25zdCBD
U1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkp
IHsKICAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFs
dWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKTsKQEAgLTE0NTAsNyArMTQ1MSw3IEBAIGlubGluZSBQ
YWludE9yZGVyIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBhaW50T3JkZXIoU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYsCiAgICAgfQogfQogCi1pbmxpbmUgZmxvYXQgU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0T3BhY2l0eShTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFs
dWUmIHZhbHVlKQoraW5saW5lIGZsb2F0IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRPcGFjaXR5
KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmlt
aXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgZmxv
YXQgb3BhY2l0eSA9IHByaW1pdGl2ZVZhbHVlLmZsb2F0VmFsdWUoKTsKQEAgLTE0NTksNyArMTQ2
MCw3IEBAIGlubGluZSBmbG9hdCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRPcGFjaXR5
KFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDCiAgICAgcmV0dXJuIHN0ZDo6bWF4KDAuMGYs
IHN0ZDo6bWluKDEuMGYsIG9wYWNpdHkpKTsKIH0KIAotaW5saW5lIFN0cmluZyBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRTVkdVUklSZWZlcmVuY2UoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYg
YnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgU3RyaW5nIEJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRTVkdVUklSZWZlcmVuY2UoQnVpbGRlclN0YXRlJiBidWlsZGVy
U3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBTdHJpbmcgczsKICAgICBhdXRv
JiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CkBA
IC0xNDY5LDEyICsxNDcwLDEyIEBAIGlubGluZSBTdHJpbmcgU3R5bGVCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0U1ZHVVJJUmVmZXJlbmNlKFN0eWxlOjpCdWlsZGVyU3RhdGUmCiAgICAgcmV0dXJu
IFNWR1VSSVJlZmVyZW5jZTo6ZnJhZ21lbnRJZGVudGlmaWVyRnJvbUlSSVN0cmluZyhzLCBidWls
ZGVyU3RhdGUuZG9jdW1lbnQoKSk7CiB9CiAKLWlubGluZSBDb2xvciBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRTVkdDb2xvcihTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUs
IGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBDb2xvciBCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0U1ZHQ29sb3IoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVl
JiB2YWx1ZSkKIHsKICAgICByZXR1cm4gYnVpbGRlclN0YXRlLmNvbG9yRnJvbVByaW1pdGl2ZVZh
bHVlKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpOwogfQogCi1pbmxpbmUgU3R5
bGVTZWxmQWxpZ25tZW50RGF0YSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTZWxmT3JE
ZWZhdWx0QWxpZ25tZW50RGF0YShTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUm
IHZhbHVlKQoraW5saW5lIFN0eWxlU2VsZkFsaWdubWVudERhdGEgQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydFNlbGZPckRlZmF1bHRBbGlnbm1lbnREYXRhKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENT
U1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIGFsaWdubWVudERh
dGEgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbFNlbGZBbGlnbm1lbnQoKTsKICAgICBhdXRvJiBwcmlt
aXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CkBAIC0xNDgy
LDExICsxNDgzLDExIEBAIGlubGluZSBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydFNlbGZPckRlZmF1bHRBbGlnbm1lCiAgICAgICAgIGlmIChwYWly
VmFsdWUtPmZpcnN0KCktPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxlZ2FjeSkgewogICAgICAgICAg
ICAgYWxpZ25tZW50RGF0YS5zZXRQb3NpdGlvblR5cGUoSXRlbVBvc2l0aW9uVHlwZTo6TGVnYWN5
KTsKICAgICAgICAgICAgIGFsaWdubWVudERhdGEuc2V0UG9zaXRpb24oKnBhaXJWYWx1ZS0+c2Vj
b25kKCkpOwotICAgICAgICB9IGVsc2UgaWYgKHBhaXJWYWx1ZS0+Zmlyc3QoKS0+dmFsdWVJRCgp
ID09IENTU1ZhbHVlRmlyc3QpIHsKKyAgICAgICAgfSBlbHNlIGlmIChwYWlyVmFsdWUtPmZpcnN0
KCktPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUZpcnN0KQogICAgICAgICAgICAgYWxpZ25tZW50RGF0
YS5zZXRQb3NpdGlvbihJdGVtUG9zaXRpb246OkJhc2VsaW5lKTsKLSAgICAgICAgfSBlbHNlIGlm
IChwYWlyVmFsdWUtPmZpcnN0KCktPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxhc3QpIHsKKyAgICAg
ICAgZWxzZSBpZiAocGFpclZhbHVlLT5maXJzdCgpLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVMYXN0
KQogICAgICAgICAgICAgYWxpZ25tZW50RGF0YS5zZXRQb3NpdGlvbihJdGVtUG9zaXRpb246Okxh
c3RCYXNlbGluZSk7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgYWxpZ25tZW50RGF0YS5zZXRPdmVyZmxvdygqcGFpclZhbHVlLT5maXJzdCgpKTsKICAgICAg
ICAgICAgIGFsaWdubWVudERhdGEuc2V0UG9zaXRpb24oKnBhaXJWYWx1ZS0+c2Vjb25kKCkpOwog
ICAgICAgICB9CkBAIC0xNDk1LDcgKzE0OTYsNyBAQCBpbmxpbmUgU3R5bGVTZWxmQWxpZ25tZW50
RGF0YSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTZWxmT3JEZWZhdWx0QWxpZ25tZQog
ICAgIHJldHVybiBhbGlnbm1lbnREYXRhOwogfQogCi1pbmxpbmUgU3R5bGVDb250ZW50QWxpZ25t
ZW50RGF0YSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDb250ZW50QWxpZ25tZW50RGF0
YShTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFN0
eWxlQ29udGVudEFsaWdubWVudERhdGEgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENvbnRlbnRB
bGlnbm1lbnREYXRhKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAg
ICBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhIGFsaWdubWVudERhdGEgPSBSZW5kZXJTdHlsZTo6
aW5pdGlhbENvbnRlbnRBbGlnbm1lbnQoKTsKICAgICBpZiAoIWlzPENTU0NvbnRlbnREaXN0cmli
dXRpb25WYWx1ZT4odmFsdWUpKQpAQCAtMTUxMCw3ICsxNTExLDcgQEAgaW5saW5lIFN0eWxlQ29u
dGVudEFsaWdubWVudERhdGEgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q29udGVudEFs
aWdubWVudEQKICAgICByZXR1cm4gYWxpZ25tZW50RGF0YTsKIH0KIAotaW5saW5lIEdseXBoT3Jp
ZW50YXRpb24gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R2x5cGhPcmllbnRhdGlvbihT
dHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIEdseXBo
T3JpZW50YXRpb24gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdseXBoT3JpZW50YXRpb24oQnVp
bGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGZsb2F0IGFuZ2xlID0g
ZmFic2YoZm1vZGYoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5mbG9hdFZhbHVl
KCksIDM2MC4wZikpOwogICAgIGlmIChhbmdsZSA8PSA0NS4wZiB8fCBhbmdsZSA+IDMxNS4wZikK
QEAgLTE1MjIsMjEgKzE1MjMsMjEgQEAgaW5saW5lIEdseXBoT3JpZW50YXRpb24gU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0R2x5cGhPcmllbnRhdGlvbihTdHlsZTo6QnUKICAgICByZXR1
cm4gR2x5cGhPcmllbnRhdGlvbjo6RGVncmVlczI3MDsKIH0KIAotaW5saW5lIEdseXBoT3JpZW50
YXRpb24gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R2x5cGhPcmllbnRhdGlvbk9yQXV0
byhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1
ZSkKK2lubGluZSBHbHlwaE9yaWVudGF0aW9uIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHbHlw
aE9yaWVudGF0aW9uT3JBdXRvKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NW
YWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykKICAgICAgICAgcmV0dXJuIEdseXBoT3JpZW50
YXRpb246OkF1dG87CiAgICAgcmV0dXJuIGNvbnZlcnRHbHlwaE9yaWVudGF0aW9uKGJ1aWxkZXJT
dGF0ZSwgdmFsdWUpOwogfQogCi1pbmxpbmUgT3B0aW9uYWw8TGVuZ3RoPiBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRMaW5lSGVpZ2h0KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJT
dGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlLCBmbG9hdCBtdWx0aXBsaWVyKQoraW5saW5lIE9w
dGlvbmFsPExlbmd0aD4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVIZWlnaHQoQnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgZmxvYXQgbXVsdGlw
bGllcikKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NW
YWx1ZU5vcm1hbCkKICAgICAgICAgcmV0dXJuIFJlbmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdo
dCgpOwogCiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzTGVuZ3RoKCkpIHsKLSAgICAgICAgTGVu
Z3RoIGxlbmd0aCA9IHByaW1pdGl2ZVZhbHVlLmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNzc3RvTGVuZ3RoQ29udmVyc2lvbkRhdGFXaXRoVGV4dFpvb21GYWN0
b3IoYnVpbGRlclN0YXRlKSk7CisgICAgICAgIExlbmd0aCBsZW5ndGggPSBwcmltaXRpdmVWYWx1
ZS5jb21wdXRlTGVuZ3RoPExlbmd0aD4oQnVpbGRlckNvbnZlcnRlcjo6Y3NzdG9MZW5ndGhDb252
ZXJzaW9uRGF0YVdpdGhUZXh0Wm9vbUZhY3RvcihidWlsZGVyU3RhdGUpKTsKICAgICAgICAgaWYg
KG11bHRpcGxpZXIgIT0gMS5mKQogICAgICAgICAgICAgbGVuZ3RoID0gTGVuZ3RoKGxlbmd0aC52
YWx1ZSgpICogbXVsdGlwbGllciwgRml4ZWQpOwogICAgICAgICByZXR1cm4gbGVuZ3RoOwpAQCAt
MTU2MCw3ICsxNTYxLDcgQEAgaW5saW5lIE9wdGlvbmFsPExlbmd0aD4gU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0TGluZUhlaWdodChTdHlsZTo6QnVpbGRlclMKICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogfQogCi1pbmxpbmUgRm9udFN5bnRoZXNpcyBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRGb250U3ludGhlc2lzKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NW
YWx1ZSYgdmFsdWUpCitpbmxpbmUgRm9udFN5bnRoZXNpcyBCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0Rm9udFN5bnRoZXNpcyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7
CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKICAgICAgICAgQVNTRVJU
KGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVl
Tm9uZSk7CkBAIC0xNTg5LDcgKzE1OTAsNyBAQCBpbmxpbmUgRm9udFN5bnRoZXNpcyBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250U3ludGhlc2lzKFN0eWxlOjpCdWlsZGVyUwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAgICAgCi1pbmxpbmUgT3B0aW9uU2V0PFNwZWFrQXM+IFN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNwZWFrQXMoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNv
bnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBPcHRpb25TZXQ8U3BlYWtBcz4gQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydFNwZWFrQXMoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZh
bHVlKQogewogICAgIGF1dG8gcmVzdWx0ID0gUmVuZGVyU3R5bGU6OmluaXRpYWxTcGVha0FzKCk7
CiAgICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CkBAIC0xNTk5LDcgKzE2MDAsNyBA
QCBpbmxpbmUgT3B0aW9uU2V0PFNwZWFrQXM+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dFNwZWFrQXMoU3R5bGU6OkJ1aWxkZXJTdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlubGlu
ZSBPcHRpb25TZXQ8SGFuZ2luZ1B1bmN0dWF0aW9uPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRIYW5naW5nUHVuY3R1YXRpb24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1Zh
bHVlJiB2YWx1ZSkKK2lubGluZSBPcHRpb25TZXQ8SGFuZ2luZ1B1bmN0dWF0aW9uPiBCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0SGFuZ2luZ1B1bmN0dWF0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0
IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvIHJlc3VsdCA9IFJlbmRlclN0eWxlOjppbml0
aWFsSGFuZ2luZ1B1bmN0dWF0aW9uKCk7CiAgICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUp
KSB7CkBAIC0xNjA5LDkgKzE2MTAsMTAgQEAgaW5saW5lIE9wdGlvblNldDxIYW5naW5nUHVuY3R1
YXRpb24+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEhhbmdpbmdQdW5jdHUKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi1pbmxpbmUgR2FwTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydEdhcExlbmd0aChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNv
bnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBHYXBMZW5ndGggQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydEdhcExlbmd0aChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFs
dWUmIHZhbHVlKQogewogICAgIHJldHVybiAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpID8gR2FwTGVuZ3RoKCkgOiBHYXBMZW5n
dGgoY29udmVydExlbmd0aChidWlsZGVyU3RhdGUsIHZhbHVlKSk7CiB9CiAKLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKK30KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1
aWxkZXJDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5o
CnNpbWlsYXJpdHkgaW5kZXggODElCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZUJ1aWxkZXJDdXN0b20uaApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWls
ZGVyQ3VzdG9tLmgKaW5kZXggNTBkZjIzMTJkMzYuLjkwNGNkMDM0NzIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKQEAgLTUyLDExICs1MiwxMiBAQAogI2luY2x1
ZGUgIldpbGxDaGFuZ2VEYXRhLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBT
dHlsZSB7CiAKICNkZWZpbmUgREVDTEFSRV9QUk9QRVJUWV9DVVNUT01fSEFORExFUlMocHJvcGVy
dHkpIFwKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXQjI3Byb3BlcnR5KFN0eWxlOjpCdWls
ZGVyU3RhdGUmKTsgXAotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbCMjcHJvcGVydHkoU3R5
bGU6OkJ1aWxkZXJTdGF0ZSYpOyBcCi0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZSMjcHJvcGVy
dHkoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJikKKyAgICBzdGF0aWMgdm9pZCBhcHBs
eUluaGVyaXQjI3Byb3BlcnR5KEJ1aWxkZXJTdGF0ZSYpOyBcCisgICAgc3RhdGljIHZvaWQgYXBw
bHlJbml0aWFsIyNwcm9wZXJ0eShCdWlsZGVyU3RhdGUmKTsgXAorICAgIHN0YXRpYyB2b2lkIGFw
cGx5VmFsdWUjI3Byb3BlcnR5KEJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJikKIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4gaW5saW5lIFQgZm9yd2FyZEluaGVyaXRlZFZhbHVlKFQmJiB2YWx1ZSkgeyBy
ZXR1cm4gc3RkOjpmb3J3YXJkPFQ+KHZhbHVlKTsgfQogaW5saW5lIExlbmd0aCBmb3J3YXJkSW5o
ZXJpdGVkVmFsdWUoY29uc3QgTGVuZ3RoJiB2YWx1ZSkgeyBhdXRvIGNvcHkgPSB2YWx1ZTsgcmV0
dXJuIGNvcHk7IH0KQEAgLTY1LDcgKzY2LDcgQEAgaW5saW5lIExlbmd0aEJveCBmb3J3YXJkSW5o
ZXJpdGVkVmFsdWUoY29uc3QgTGVuZ3RoQm94JiB2YWx1ZSkgeyBhdXRvIGNvcHkgPSB2YWwKIGlu
bGluZSBHYXBMZW5ndGggZm9yd2FyZEluaGVyaXRlZFZhbHVlKGNvbnN0IEdhcExlbmd0aCYgdmFs
dWUpIHsgYXV0byBjb3B5ID0gdmFsdWU7IHJldHVybiBjb3B5OyB9CiAKIC8vIE5vdGUgdGhhdCB3
ZSBhc3N1bWUgdGhlIENTUyBwYXJzZXIgb25seSBhbGxvd3MgdmFsaWQgQ1NTVmFsdWUgdHlwZXMu
Ci1jbGFzcyBTdHlsZUJ1aWxkZXJDdXN0b20geworY2xhc3MgQnVpbGRlckN1c3RvbSB7CiBwdWJs
aWM6CiAgICAgLy8gQ3VzdG9tIGhhbmRsaW5nIG9mIGluaGVyaXQsIGluaXRpYWwgYW5kIHZhbHVl
IHNldHRpbmcuCiAgICAgREVDTEFSRV9QUk9QRVJUWV9DVVNUT01fSEFORExFUlMoQm9yZGVySW1h
Z2VPdXRzZXQpOwpAQCAtMTA5LDEwNSArMTEwLDEwNSBAQCBwdWJsaWM6CiAgICAgREVDTEFSRV9Q
Uk9QRVJUWV9DVVNUT01fSEFORExFUlMoWm9vbSk7CiAKICAgICAvLyBDdXN0b20gaGFuZGxpbmcg
b2YgaW5pdGlhbCArIGluaGVyaXQgdmFsdWUgc2V0dGluZyBvbmx5LgotICAgIHN0YXRpYyB2b2lk
IGFwcGx5SW5pdGlhbFdlYmtpdE1hc2tJbWFnZShTdHlsZTo6QnVpbGRlclN0YXRlJikgeyB9Ci0g
ICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0V2Via2l0TWFza0ltYWdlKFN0eWxlOjpCdWlsZGVy
U3RhdGUmKSB7IH0KLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxGb250RmVhdHVyZVNldHRp
bmdzKFN0eWxlOjpCdWlsZGVyU3RhdGUmKSB7IH0KLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVy
aXRGb250RmVhdHVyZVNldHRpbmdzKFN0eWxlOjpCdWlsZGVyU3RhdGUmKSB7IH0KKyAgICBzdGF0
aWMgdm9pZCBhcHBseUluaXRpYWxXZWJraXRNYXNrSW1hZ2UoQnVpbGRlclN0YXRlJikgeyB9Cisg
ICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0V2Via2l0TWFza0ltYWdlKEJ1aWxkZXJTdGF0ZSYp
IHsgfQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbEZvbnRGZWF0dXJlU2V0dGluZ3MoQnVp
bGRlclN0YXRlJikgeyB9CisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0Rm9udEZlYXR1cmVT
ZXR0aW5ncyhCdWlsZGVyU3RhdGUmKSB7IH0KICNpZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQot
ICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbEZvbnRWYXJpYXRpb25TZXR0aW5ncyhTdHlsZTo6
QnVpbGRlclN0YXRlJikgeyB9Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0Rm9udFZhcmlh
dGlvblNldHRpbmdzKFN0eWxlOjpCdWlsZGVyU3RhdGUmKSB7IH0KKyAgICBzdGF0aWMgdm9pZCBh
cHBseUluaXRpYWxGb250VmFyaWF0aW9uU2V0dGluZ3MoQnVpbGRlclN0YXRlJikgeyB9CisgICAg
c3RhdGljIHZvaWQgYXBwbHlJbmhlcml0Rm9udFZhcmlhdGlvblNldHRpbmdzKEJ1aWxkZXJTdGF0
ZSYpIHsgfQogI2VuZGlmCiAKICAgICAvLyBDdXN0b20gaGFuZGxpbmcgb2YgaW5oZXJpdCArIHZh
bHVlIHNldHRpbmcgb25seS4KLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXREaXNwbGF5KFN0
eWxlOjpCdWlsZGVyU3RhdGUmKTsKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlRGlzcGxheShT
dHlsZTo6QnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgdm9pZCBhcHBseUlu
aGVyaXREaXNwbGF5KEJ1aWxkZXJTdGF0ZSYpOworICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVE
aXNwbGF5KEJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7CiAKICAgICAvLyBDdXN0b20gaGFuZGxp
bmcgb2YgdmFsdWUgc2V0dGluZyBvbmx5LgotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVCYXNl
bGluZVNoaWZ0KFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyB2
b2lkIGFwcGx5VmFsdWVEaXJlY3Rpb24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7
Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZVZlcnRpY2FsQWxpZ24oU3R5bGU6OkJ1aWxkZXJT
dGF0ZSYsIENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVGV4dEFsaWdu
KFN0eWxlOjpCdWlsZGVyU3RhdGUmKTsKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlVGV4dEFs
aWduKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyB2b2lkIGFw
cGx5VmFsdWVXZWJraXRMb2NhbGUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7Ci0g
ICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZVdlYmtpdFRleHRPcmllbnRhdGlvbihTdHlsZTo6QnVp
bGRlclN0YXRlJiwgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlQmFzZWxp
bmVTaGlmdChCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyB2b2lkIGFwcGx5
VmFsdWVEaXJlY3Rpb24oQnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgdm9p
ZCBhcHBseVZhbHVlVmVydGljYWxBbGlnbihCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYpOworICAg
IHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFRleHRBbGlnbihCdWlsZGVyU3RhdGUmKTsKKyAgICBz
dGF0aWMgdm9pZCBhcHBseVZhbHVlVGV4dEFsaWduKEJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7
CisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZVdlYmtpdExvY2FsZShCdWlsZGVyU3RhdGUmLCBD
U1NWYWx1ZSYpOworICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVXZWJraXRUZXh0T3JpZW50YXRp
b24oQnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUmKTsKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5H
KQotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVXZWJraXRUZXh0U2l6ZUFkanVzdChTdHlsZTo6
QnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlV2Vi
a2l0VGV4dFNpemVBZGp1c3QoQnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUmKTsKICNlbmRpZgotICAg
IHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVXZWJraXRUZXh0Wm9vbShTdHlsZTo6QnVpbGRlclN0YXRl
JiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlV3JpdGluZ01vZGUoU3R5
bGU6OkJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1
ZUFsdChTdHlsZTo6QnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgdm9pZCBh
cHBseVZhbHVlV2lsbENoYW5nZShTdHlsZTo6QnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUmKTsKKyAg
ICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlV2Via2l0VGV4dFpvb20oQnVpbGRlclN0YXRlJiwgQ1NT
VmFsdWUmKTsKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlV3JpdGluZ01vZGUoQnVpbGRlclN0
YXRlJiwgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlQWx0KEJ1aWxkZXJT
dGF0ZSYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZVdpbGxDaGFuZ2Uo
QnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUmKTsKIAogI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQot
ICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVDb2xvclNjaGVtZShTdHlsZTo6QnVpbGRlclN0YXRl
JiwgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlQ29sb3JTY2hlbWUoQnVp
bGRlclN0YXRlJiwgQ1NTVmFsdWUmKTsKICNlbmRpZgogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlW
YWx1ZVN0cm9rZVdpZHRoKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYpOwotICAgIHN0
YXRpYyB2b2lkIGFwcGx5VmFsdWVTdHJva2VDb2xvcihTdHlsZTo6QnVpbGRlclN0YXRlJiwgQ1NT
VmFsdWUmKTsKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlU3Ryb2tlV2lkdGgoQnVpbGRlclN0
YXRlJiwgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlU3Ryb2tlQ29sb3Io
QnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUmKTsKIAotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlh
bEN1c3RvbVByb3BlcnR5KFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NSZWdpc3RlcmVk
Q3VzdG9tUHJvcGVydHkqLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lKTsKLSAgICBzdGF0aWMgdm9p
ZCBhcHBseUluaGVyaXRDdXN0b21Qcm9wZXJ0eShTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3Qg
Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5KiwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSk7Ci0g
ICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZUN1c3RvbVByb3BlcnR5KFN0eWxlOjpCdWlsZGVyU3Rh
dGUmLCBjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkqLCBDU1NDdXN0b21Qcm9wZXJ0
eVZhbHVlJik7CisgICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsQ3VzdG9tUHJvcGVydHkoQnVp
bGRlclN0YXRlJiwgY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5KiwgY29uc3QgQXRv
bVN0cmluZyYgbmFtZSk7CisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0Q3VzdG9tUHJvcGVy
dHkoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5KiwgY29u
c3QgQXRvbVN0cmluZyYgbmFtZSk7CisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZUN1c3RvbVBy
b3BlcnR5KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSos
IENTU0N1c3RvbVByb3BlcnR5VmFsdWUmKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgdm9pZCBy
ZXNldEVmZmVjdGl2ZVpvb20oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYpOworICAgIHN0YXRpYyB2b2lk
IHJlc2V0RWZmZWN0aXZlWm9vbShCdWlsZGVyU3RhdGUmKTsKIAogICAgIHN0YXRpYyBMZW5ndGgg
bW1MZW5ndGgoZG91YmxlIG1tKTsKICAgICBzdGF0aWMgTGVuZ3RoIGluY2hMZW5ndGgoZG91Ymxl
IGluY2gpOwogICAgIHN0YXRpYyBib29sIGdldFBhZ2VTaXplRnJvbU5hbWUoQ1NTUHJpbWl0aXZl
VmFsdWUqIHBhZ2VTaXplTmFtZSwgQ1NTUHJpbWl0aXZlVmFsdWUqIHBhZ2VPcmllbnRhdGlvbiwg
TGVuZ3RoJiB3aWR0aCwgTGVuZ3RoJiBoZWlnaHQpOwogCiAgICAgdGVtcGxhdGUgPENTU1Byb3Bl
cnR5SUQgaWQ+Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlUZXh0T3JCb3hTaGFkb3dWYWx1ZShTdHls
ZTo6QnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRGlz
cGxheVZhbHVlKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBEaXNwbGF5VHlwZSk7CisgICAgc3RhdGlj
IHZvaWQgYXBwbHlUZXh0T3JCb3hTaGFkb3dWYWx1ZShCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYp
OworICAgIHN0YXRpYyBib29sIGlzVmFsaWREaXNwbGF5VmFsdWUoQnVpbGRlclN0YXRlJiwgRGlz
cGxheVR5cGUpOwogCiAgICAgZW51bSBDb3VudGVyQmVoYXZpb3Ige0luY3JlbWVudCA9IDAsIFJl
c2V0fTsKICAgICB0ZW1wbGF0ZSA8Q291bnRlckJlaGF2aW9yIGNvdW50ZXJCZWhhdmlvcj4KLSAg
ICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRDb3VudGVyKFN0eWxlOjpCdWlsZGVyU3RhdGUmKTsK
KyAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRDb3VudGVyKEJ1aWxkZXJTdGF0ZSYpOwogICAg
IHRlbXBsYXRlIDxDb3VudGVyQmVoYXZpb3IgY291bnRlckJlaGF2aW9yPgotICAgIHN0YXRpYyB2
b2lkIGFwcGx5VmFsdWVDb3VudGVyKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYpOwor
ICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVDb3VudGVyKEJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVl
Jik7CiAKICAgICBzdGF0aWMgZmxvYXQgbGFyZ2VyRm9udFNpemUoZmxvYXQgc2l6ZSk7CiAgICAg
c3RhdGljIGZsb2F0IHNtYWxsZXJGb250U2l6ZShmbG9hdCBzaXplKTsKLSAgICBzdGF0aWMgZmxv
YXQgZGV0ZXJtaW5lUnVieVRleHRTaXplTXVsdGlwbGllcihTdHlsZTo6QnVpbGRlclN0YXRlJik7
CisgICAgc3RhdGljIGZsb2F0IGRldGVybWluZVJ1YnlUZXh0U2l6ZU11bHRpcGxpZXIoQnVpbGRl
clN0YXRlJik7CiB9OwogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFs
dWVEaXJlY3Rpb24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYg
dmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRGlyZWN0aW9uKEJ1
aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYnVpbGRl
clN0YXRlLnN0eWxlKCkuc2V0RGlyZWN0aW9uKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2
YWx1ZSkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldEhhc0V4cGxpY2l0bHlTZXREaXJl
Y3Rpb24odHJ1ZSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJ
bml0aWFsVGV4dEFsaWduKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGlu
ZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbFRleHRBbGlnbihCdWlsZGVyU3RhdGUm
IGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRUZXh0QWxpZ24o
UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0QWxpZ24oKSk7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxl
KCkuc2V0SGFzRXhwbGljaXRseVNldFRleHRBbGlnbih0cnVlKTsKIH0KIAotaW5saW5lIHZvaWQg
U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlVGV4dEFsaWduKFN0eWxlOjpCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZVRleHRBbGlnbihCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NT
VmFsdWUmIHZhbHVlKQogewotICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldFRleHRBbGlnbihT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0QWxpZ24oYnVpbGRlclN0YXRlLCB2YWx1
ZSkpOworICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldFRleHRBbGlnbihCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0VGV4dEFsaWduKGJ1aWxkZXJTdGF0ZSwgdmFsdWUpKTsKICAgICBidWlsZGVy
U3RhdGUuc3R5bGUoKS5zZXRIYXNFeHBsaWNpdGx5U2V0VGV4dEFsaWduKHRydWUpOwogfQogCi1p
bmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OnJlc2V0RWZmZWN0aXZlWm9vbShTdHlsZTo6
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjpy
ZXNldEVmZmVjdGl2ZVpvb20oQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgLy8g
UmVzZXQgdGhlIHpvb20gaW4gZWZmZWN0LiBUaGlzIGFsbG93cyB0aGUgc2V0Wm9vbSBtZXRob2Qg
dG8gYWNjdXJhdGVseSBjb21wdXRlIGEgbmV3IHpvb20gaW4gZWZmZWN0LgogICAgIGJ1aWxkZXJT
dGF0ZS5zZXRFZmZlY3RpdmVab29tKGJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLmVmZmVjdGl2
ZVpvb20oKSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0
aWFsWm9vbShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBC
dWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxab29tKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
KQogewogICAgIHJlc2V0RWZmZWN0aXZlWm9vbShidWlsZGVyU3RhdGUpOwogICAgIGJ1aWxkZXJT
dGF0ZS5zZXRab29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKTsKIH0KIAotaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRab29tKFN0eWxlOjpCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJp
dFpvb20oQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgcmVzZXRFZmZlY3RpdmVa
b29tKGJ1aWxkZXJTdGF0ZSk7CiAgICAgYnVpbGRlclN0YXRlLnNldFpvb20oYnVpbGRlclN0YXRl
LnBhcmVudFN0eWxlKCkuem9vbSgpKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3Vz
dG9tOjphcHBseVZhbHVlWm9vbShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENT
U1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVab29t
KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0
byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwog
CkBAIC0yMzEsMTcgKzIzMiwxNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5VmFsdWVab29tKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZQogICAgICAgICAg
ICAgYnVpbGRlclN0YXRlLnNldFpvb20obnVtYmVyKTsKICAgICB9CiB9Ci1pbmxpbmUgTGVuZ3Ro
IFN0eWxlQnVpbGRlckN1c3RvbTo6bW1MZW5ndGgoZG91YmxlIG1tKQoraW5saW5lIExlbmd0aCBC
dWlsZGVyQ3VzdG9tOjptbUxlbmd0aChkb3VibGUgbW0pCiB7CiAgICAgUmVmPENTU1ByaW1pdGl2
ZVZhbHVlPiB2YWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1tLCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX01NKSk7CiAgICAgcmV0dXJuIHZhbHVlLmdldCgpLmNvbXB1dGVMZW5ndGg8TGVu
Z3RoPihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkpOwogfQotaW5saW5lIExlbmd0aCBTdHls
ZUJ1aWxkZXJDdXN0b206OmluY2hMZW5ndGgoZG91YmxlIGluY2gpCitpbmxpbmUgTGVuZ3RoIEJ1
aWxkZXJDdXN0b206OmluY2hMZW5ndGgoZG91YmxlIGluY2gpCiB7CiAgICAgUmVmPENTU1ByaW1p
dGl2ZVZhbHVlPiB2YWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGluY2gsIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfSU4pKTsKICAgICByZXR1cm4gdmFsdWUuZ2V0KCkuY29tcHV0ZUxlbmd0
aDxMZW5ndGg+KENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKSk7CiB9Ci1ib29sIFN0eWxlQnVp
bGRlckN1c3RvbTo6Z2V0UGFnZVNpemVGcm9tTmFtZShDU1NQcmltaXRpdmVWYWx1ZSogcGFnZVNp
emVOYW1lLCBDU1NQcmltaXRpdmVWYWx1ZSogcGFnZU9yaWVudGF0aW9uLCBMZW5ndGgmIHdpZHRo
LCBMZW5ndGgmIGhlaWdodCkKK2Jvb2wgQnVpbGRlckN1c3RvbTo6Z2V0UGFnZVNpemVGcm9tTmFt
ZShDU1NQcmltaXRpdmVWYWx1ZSogcGFnZVNpemVOYW1lLCBDU1NQcmltaXRpdmVWYWx1ZSogcGFn
ZU9yaWVudGF0aW9uLCBMZW5ndGgmIHdpZHRoLCBMZW5ndGgmIGhlaWdodCkKIHsKICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8TGVuZ3RoPiBhNVdpZHRoKG1tTGVuZ3RoKDE0OCkpOwogICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxMZW5ndGg+IGE1SGVpZ2h0KG1tTGVuZ3RoKDIxMCkpOwpAQCAt
MzE1LDcgKzMxNiw3IEBAIGJvb2wgU3R5bGVCdWlsZGVyQ3VzdG9tOjpnZXRQYWdlU2l6ZUZyb21O
YW1lKENTU1ByaW1pdGl2ZVZhbHVlKiBwYWdlU2l6ZU5hbWUsIENTCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVZlcnRpY2Fs
QWxpZ24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUp
CitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlVmVydGljYWxBbGlnbihCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHBy
aW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBp
ZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpKQpAQCAtMzI2LDIxICszMjcsMjEgQEAgaW5saW5l
IHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlVmVydGljYWxBbGlnbihTdHlsZTo6
QnVpbGRlclN0YXRlJiBidWkKIAogI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElPTikKIAot
aW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRJbWFnZVJlc29sdXRp
b24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRl
ckN1c3RvbTo6YXBwbHlJbmhlcml0SW1hZ2VSZXNvbHV0aW9uKEJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlKQogewogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldEltYWdlUmVzb2x1dGlvblNv
dXJjZShidWlsZGVyU3RhdGUucGFyZW50U3R5bGUoKS5pbWFnZVJlc29sdXRpb25Tb3VyY2UoKSk7
CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0SW1hZ2VSZXNvbHV0aW9uU25hcChidWlsZGVy
U3RhdGUucGFyZW50U3R5bGUoKS5pbWFnZVJlc29sdXRpb25TbmFwKCkpOwogICAgIGJ1aWxkZXJT
dGF0ZS5zdHlsZSgpLnNldEltYWdlUmVzb2x1dGlvbihidWlsZGVyU3RhdGUucGFyZW50U3R5bGUo
KS5pbWFnZVJlc29sdXRpb24oKSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlJbml0aWFsSW1hZ2VSZXNvbHV0aW9uKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxk
ZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEltYWdlUmVz
b2x1dGlvbihCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBidWlsZGVyU3RhdGUu
c3R5bGUoKS5zZXRJbWFnZVJlc29sdXRpb25Tb3VyY2UoUmVuZGVyU3R5bGU6OmluaXRpYWxJbWFn
ZVJlc29sdXRpb25Tb3VyY2UoKSk7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0SW1hZ2VS
ZXNvbHV0aW9uU25hcChSZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdlUmVzb2x1dGlvblNuYXAoKSk7
CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0SW1hZ2VSZXNvbHV0aW9uKFJlbmRlclN0eWxl
Ojppbml0aWFsSW1hZ2VSZXNvbHV0aW9uKCkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxk
ZXJDdXN0b206OmFwcGx5VmFsdWVJbWFnZVJlc29sdXRpb24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYg
YnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9t
OjphcHBseVZhbHVlSW1hZ2VSZXNvbHV0aW9uKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBD
U1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgSW1hZ2VSZXNvbHV0aW9uU291cmNlIHNvdXJjZSA9IFJl
bmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9uU291cmNlKCk7CiAgICAgSW1hZ2VSZXNv
bHV0aW9uU25hcCBzbmFwID0gUmVuZGVyU3R5bGU6OmluaXRpYWxJbWFnZVJlc29sdXRpb25TbmFw
KCk7CkBAIC0zNjEsMTEgKzM2MiwxMSBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206
OmFwcGx5VmFsdWVJbWFnZVJlc29sdXRpb24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYgogCiAjZW5k
aWYgLy8gRU5BQkxFKENTU19JTUFHRV9SRVNPTFVUSU9OKQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1
aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFNpemUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYpIHsgfQor
aW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0U2l6ZShCdWlsZGVyU3RhdGUm
KSB7IH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxTaXpl
KFN0eWxlOjpCdWlsZGVyU3RhdGUmKSB7IH0KK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFw
cGx5SW5pdGlhbFNpemUoQnVpbGRlclN0YXRlJikgeyB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlWYWx1ZVNpemUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0
YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZh
bHVlU2l6ZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewog
ICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnJlc2V0UGFnZVNpemVUeXBlKCk7CiAKQEAgLTQ0MSw3
ICs0NDIsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVTaXpl
KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZQogICAgIGJ1aWxkZXJTdGF0ZS5zdHls
ZSgpLnNldFBhZ2VTaXplKHsgV1RGTW92ZSh3aWR0aCksIFdURk1vdmUoaGVpZ2h0KSB9KTsKIH0K
IAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRUZXh0SW5kZW50
KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJD
dXN0b206OmFwcGx5SW5oZXJpdFRleHRJbmRlbnQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUp
CiB7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0VGV4dEluZGVudChMZW5ndGggeyBidWls
ZGVyU3RhdGUucGFyZW50U3R5bGUoKS50ZXh0SW5kZW50KCkgfSk7CiAjaWYgRU5BQkxFKENTUzNf
VEVYVCkKQEAgLTQ1MCw3ICs0NTEsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206
OmFwcGx5SW5oZXJpdFRleHRJbmRlbnQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbAogI2VuZGlm
CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsVGV4dElu
ZGVudChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWls
ZGVyQ3VzdG9tOjphcHBseUluaXRpYWxUZXh0SW5kZW50KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0
YXRlKQogewogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldFRleHRJbmRlbnQoUmVuZGVyU3R5
bGU6OmluaXRpYWxUZXh0SW5kZW50KCkpOwogI2lmIEVOQUJMRShDU1MzX1RFWFQpCkBAIC00NTks
NyArNDYwLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxU
ZXh0SW5kZW50KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWwKICNlbmRpZgogfQogCi1pbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVUZXh0SW5kZW50KFN0eWxlOjpCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVp
bGRlckN1c3RvbTo6YXBwbHlWYWx1ZVRleHRJbmRlbnQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3Rh
dGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBMZW5ndGggbGVuZ3RoT3JQZXJjZW50YWdlVmFs
dWU7CiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKQEAgLTQ5Myw3ICs0OTQsNyBAQCBlbnVtIEJvcmRl
ckltYWdlTW9kaWZpZXJUeXBlIHsgT3V0c2V0LCBSZXBlYXQsIFNsaWNlLCBXaWR0aCB9OwogdGVt
cGxhdGUgPEJvcmRlckltYWdlVHlwZSB0eXBlLCBCb3JkZXJJbWFnZU1vZGlmaWVyVHlwZSBtb2Rp
Zmllcj4KIGNsYXNzIEFwcGx5UHJvcGVydHlCb3JkZXJJbWFnZU1vZGlmaWVyIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShTdHlsZTo6QnVpbGRlclN0YXRlJiBi
dWlsZGVyU3RhdGUpCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoQnVpbGRlclN0
YXRlJiBidWlsZGVyU3RhdGUpCiAgICAgewogICAgICAgICBOaW5lUGllY2VJbWFnZSBpbWFnZShn
ZXRWYWx1ZShidWlsZGVyU3RhdGUuc3R5bGUoKSkpOwogICAgICAgICBzd2l0Y2ggKG1vZGlmaWVy
KSB7CkBAIC01MTMsNyArNTE0LDcgQEAgcHVibGljOgogICAgICAgICBzZXRWYWx1ZShidWlsZGVy
U3RhdGUuc3R5bGUoKSwgaW1hZ2UpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5p
dGlhbFZhbHVlKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKKyAgICBzdGF0aWMg
dm9pZCBhcHBseUluaXRpYWxWYWx1ZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKICAgICB7
CiAgICAgICAgIE5pbmVQaWVjZUltYWdlIGltYWdlKGdldFZhbHVlKGJ1aWxkZXJTdGF0ZS5zdHls
ZSgpKSk7CiAgICAgICAgIHN3aXRjaCAobW9kaWZpZXIpIHsKQEAgLTU0MSw3ICs1NDIsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHNldFZhbHVlKGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLCBpbWFnZSk7CiAg
ICAgfQogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShTdHlsZTo6QnVpbGRlclN0YXRlJiBi
dWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVl
KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiAgICAgewogICAg
ICAgICBOaW5lUGllY2VJbWFnZSBpbWFnZShnZXRWYWx1ZShidWlsZGVyU3RhdGUuc3R5bGUoKSkp
OwogICAgICAgICBzd2l0Y2ggKG1vZGlmaWVyKSB7CkBAIC01NzQsMTUgKzU3NSwxNSBAQCBwcml2
YXRlOgogfTsKIAogI2RlZmluZSBERUZJTkVfQk9SREVSX0lNQUdFX01PRElGSUVSX0hBTkRMRVIo
dHlwZSwgbW9kaWZpZXIpIFwKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJ
bmhlcml0IyN0eXBlIyNtb2RpZmllcihTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUp
IFwKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdCMjdHlwZSMjbW9kaWZp
ZXIoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpIFwKIHsgXAogICAgIEFwcGx5UHJvcGVydHlC
b3JkZXJJbWFnZU1vZGlmaWVyPHR5cGUsIG1vZGlmaWVyPjo6YXBwbHlJbmhlcml0VmFsdWUoYnVp
bGRlclN0YXRlKTsgXAogfSBcCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5
SW5pdGlhbCMjdHlwZSMjbW9kaWZpZXIoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
KSBcCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWwjI3R5cGUjI21vZGlm
aWVyKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKSBcCiB7IFwKICAgICBBcHBseVByb3BlcnR5
Qm9yZGVySW1hZ2VNb2RpZmllcjx0eXBlLCBtb2RpZmllcj46OmFwcGx5SW5pdGlhbFZhbHVlKGJ1
aWxkZXJTdGF0ZSk7IFwKIH0gXAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eVZhbHVlIyN0eXBlIyNtb2RpZmllcihTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUs
IENTU1ZhbHVlJiB2YWx1ZSkgXAoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1
ZSMjdHlwZSMjbW9kaWZpZXIoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2
YWx1ZSkgXAogeyBcCiAgICAgQXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlTW9kaWZpZXI8dHlwZSwg
bW9kaWZpZXI+OjphcHBseVZhbHVlKGJ1aWxkZXJTdGF0ZSwgdmFsdWUpOyBcCiB9CkBAIC01OTgs
MTMgKzU5OSwxMyBAQCBERUZJTkVfQk9SREVSX0lNQUdFX01PRElGSUVSX0hBTkRMRVIoV2Via2l0
TWFza0JveEltYWdlLCBXaWR0aCkKIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAKLWlu
bGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0TGluZUhlaWdodChTdHls
ZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9t
OjphcHBseUluaGVyaXRMaW5lSGVpZ2h0KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewog
ICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldExpbmVIZWlnaHQoTGVuZ3RoIHsgYnVpbGRlclN0
YXRlLnBhcmVudFN0eWxlKCkubGluZUhlaWdodCgpIH0pOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHls
ZSgpLnNldFNwZWNpZmllZExpbmVIZWlnaHQoTGVuZ3RoIHsgYnVpbGRlclN0YXRlLnBhcmVudFN0
eWxlKCkuc3BlY2lmaWVkTGluZUhlaWdodCgpIH0pOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1
aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbExpbmVIZWlnaHQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYg
YnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsTGlu
ZUhlaWdodChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBidWlsZGVyU3RhdGUu
c3R5bGUoKS5zZXRMaW5lSGVpZ2h0KFJlbmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdodCgpKTsK
ICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRTcGVjaWZpZWRMaW5lSGVpZ2h0KFJlbmRlclN0
eWxlOjppbml0aWFsU3BlY2lmaWVkTGluZUhlaWdodCgpKTsKQEAgLTY1NCw5ICs2NTUsOSBAQCBz
dGF0aWMgaW5saW5lIGZsb2F0IGNvbXB1dGVMaW5lSGVpZ2h0TXVsdGlwbGllckR1ZVRvRm9udFNp
emUoY29uc3QgRG9jdW1lbnQmIGRvYwogICAgIHJldHVybiAxOwogfQogCi1pbmxpbmUgdm9pZCBT
dHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVMaW5lSGVpZ2h0KFN0eWxlOjpCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZUxpbmVIZWlnaHQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENT
U1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBPcHRpb25hbDxMZW5ndGg+IGxpbmVIZWlnaHQgPSBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMaW5lSGVpZ2h0KGJ1aWxkZXJTdGF0ZSwgdmFsdWUs
IDEpOworICAgIE9wdGlvbmFsPExlbmd0aD4gbGluZUhlaWdodCA9IEJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRMaW5lSGVpZ2h0KGJ1aWxkZXJTdGF0ZSwgdmFsdWUsIDEpOwogICAgIGlmICghbGlu
ZUhlaWdodCkKICAgICAgICAgcmV0dXJuOwogCkBAIC02NjksNyArNjcwLDcgQEAgaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlTGluZUhlaWdodChTdHlsZTo6QnVpbGRl
clN0YXRlJiBidWlsZGUKICAgICAgICAgaWYgKG11bHRpcGxpZXIgPT0gMSkKICAgICAgICAgICAg
IGNvbXB1dGVkTGluZUhlaWdodCA9IGxpbmVIZWlnaHQudmFsdWUoKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgY29tcHV0ZWRMaW5lSGVpZ2h0ID0gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0TGluZUhlaWdodChidWlsZGVyU3RhdGUsIHZhbHVlLCBtdWx0aXBsaWVyKS52YWx1ZSgp
OworICAgICAgICAgICAgY29tcHV0ZWRMaW5lSGVpZ2h0ID0gQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydExpbmVIZWlnaHQoYnVpbGRlclN0YXRlLCB2YWx1ZSwgbXVsdGlwbGllcikudmFsdWUoKTsK
ICAgICB9CiAKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRMaW5lSGVpZ2h0KFdURk1vdmUo
Y29tcHV0ZWRMaW5lSGVpZ2h0KSk7CkBAIC02NzgsMTkgKzY3OSwxOSBAQCBpbmxpbmUgdm9pZCBT
dHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVMaW5lSGVpZ2h0KFN0eWxlOjpCdWlsZGVyU3Rh
dGUmIGJ1aWxkZQogCiAjZW5kaWYKIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjph
cHBseUluaGVyaXRPdXRsaW5lU3R5bGUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
KQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0T3V0bGluZVN0eWxlKEJ1
aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNl
dE91dGxpbmVTdHlsZUlzQXV0byhidWlsZGVyU3RhdGUucGFyZW50U3R5bGUoKS5vdXRsaW5lU3R5
bGVJc0F1dG8oKSk7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0T3V0bGluZVN0eWxlKGJ1
aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLm91dGxpbmVTdHlsZSgpKTsKIH0KIAotaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxPdXRsaW5lU3R5bGUoU3R5bGU6OkJ1
aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBw
bHlJbml0aWFsT3V0bGluZVN0eWxlKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAg
IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldE91dGxpbmVTdHlsZUlzQXV0byhSZW5kZXJTdHlsZTo6
aW5pdGlhbE91dGxpbmVTdHlsZUlzQXV0bygpKTsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5z
ZXRPdXRsaW5lU3R5bGUoUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJTdHlsZSgpKTsKIH0KIAot
aW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlT3V0bGluZVN0eWxlKFN0
eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5l
IHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZU91dGxpbmVTdHlsZShCdWlsZGVyU3RhdGUm
IGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZh
bHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKIApAQCAtNjk4LDEzICs2
OTksMTMgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlT3V0bGlu
ZVN0eWxlKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWwKICAgICBidWlsZGVyU3RhdGUuc3R5bGUo
KS5zZXRPdXRsaW5lU3R5bGUocHJpbWl0aXZlVmFsdWUpOwogfQogCi1pbmxpbmUgdm9pZCBTdHls
ZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbENsaXAoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsQ2xpcChC
dWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5z
ZXRDbGlwKExlbmd0aCgpLCBMZW5ndGgoKSwgTGVuZ3RoKCksIExlbmd0aCgpKTsKICAgICBidWls
ZGVyU3RhdGUuc3R5bGUoKS5zZXRIYXNDbGlwKGZhbHNlKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRDbGlwKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdENsaXAo
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYXV0byYgcGFyZW50U3R5bGUgPSBi
dWlsZGVyU3RhdGUucGFyZW50U3R5bGUoKTsKICAgICBpZiAoIXBhcmVudFN0eWxlLmhhc0NsaXAo
KSkKQEAgLTcxNCw3ICs3MTUsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5SW5oZXJpdENsaXAoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YQogICAgIGJ1aWxk
ZXJTdGF0ZS5zdHlsZSgpLnNldEhhc0NsaXAodHJ1ZSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxl
QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNsaXAoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBs
eVZhbHVlQ2xpcChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQog
ewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKTsKICAgICBpZiAoYXV0byogcmVjdCA9IHByaW1pdGl2ZVZhbHVlLnJlY3RWYWx1ZSgp
KSB7CkBAIC03MzEsNyArNzMyLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjph
cHBseVZhbHVlQ2xpcChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUKICAgICB9CiB9
CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdExvY2Fs
ZShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lu
bGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRMb2NhbGUoQnVpbGRlclN0
YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRp
dmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAKQEAgLTc0Mywx
OSArNzQ0LDE5IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdl
YmtpdExvY2FsZShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsCiAgICAgYnVpbGRlclN0YXRlLnNl
dEZvbnREZXNjcmlwdGlvbihXVEZNb3ZlKGZvbnREZXNjcmlwdGlvbikpOwogfQogCi1pbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXcml0aW5nTW9kZShTdHlsZTo6QnVp
bGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2b2lkIEJ1
aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXcml0aW5nTW9kZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJT
dGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGJ1aWxkZXJTdGF0ZS5zZXRXcml0aW5nTW9k
ZShkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKTsKICAgICBidWlsZGVyU3RhdGUu
c3R5bGUoKS5zZXRIYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01vZGUodHJ1ZSk7CiB9CiAKLWlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdFRleHRPcmllbnRhdGlv
bihTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lu
bGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRUZXh0T3JpZW50YXRpb24o
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBidWls
ZGVyU3RhdGUuc2V0VGV4dE9yaWVudGF0aW9uKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2
YWx1ZSkpOwogfQogCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKLWlubGluZSB2b2lkIFN0
eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdFRleHRTaXplQWRqdXN0KFN0eWxlOjpC
dWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQg
QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdFRleHRTaXplQWRqdXN0KEJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZl
VmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGlmIChwcmlt
aXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKQpAQCAtNzY5LDcgKzc3MCw3IEBA
IGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdFRleHRTaXpl
QWRqdXN0KFN0eWxlOjpCdWlsZGVyU3RhCiB9CiAjZW5kaWYKIAotaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0VGV4dFpvb20oU3R5bGU6OkJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3Vz
dG9tOjphcHBseVZhbHVlV2Via2l0VGV4dFpvb20oQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUs
IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVl
SUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKQEAgLTc4MCwxNSArNzgxLDE1IEBAIGlubGluZSB2b2lk
IFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdFRleHRab29tKFN0eWxlOjpCdWls
ZGVyU3RhdGUmIGJ1CiB9CiAKICNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKLWlubGluZSB2b2lk
IFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvbG9yU2NoZW1lKFN0eWxlOjpCdWlsZGVy
U3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZUNvbG9yU2NoZW1lKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
LCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0Q29sb3JT
Y2hlbWUoU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q29sb3JTY2hlbWUoYnVpbGRlclN0
YXRlLCB2YWx1ZSkpOworICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldENvbG9yU2NoZW1lKEJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDb2xvclNjaGVtZShidWlsZGVyU3RhdGUsIHZhbHVlKSk7
CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0SGFzRXhwbGljaXRseVNldENvbG9yU2NoZW1l
KHRydWUpOwogfQogI2VuZGlmCiAKIHRlbXBsYXRlPENTU1Byb3BlcnR5SUQgcHJvcGVydHk+Ci1p
bmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94U2hhZG93VmFsdWUo
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxp
bmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVRleHRPckJveFNoYWRvd1ZhbHVlKEJ1aWxkZXJT
dGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKICAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7CkBAIC04MjIsNTIg
KzgyMyw1MiBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94
U2hhZG93VmFsdWUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYgogICAgIH0KIH0KIAotaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxUZXh0U2hhZG93KFN0eWxlOjpCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5
SW5pdGlhbFRleHRTaGFkb3coQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYnVp
bGRlclN0YXRlLnN0eWxlKCkuc2V0VGV4dFNoYWRvdyhudWxscHRyKTsKIH0KIAotaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRUZXh0U2hhZG93KFN0eWxlOjpCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5
SW5oZXJpdFRleHRTaGFkb3coQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYnVp
bGRlclN0YXRlLnN0eWxlKCkuc2V0VGV4dFNoYWRvdyhidWlsZGVyU3RhdGUucGFyZW50U3R5bGUo
KS50ZXh0U2hhZG93KCkgPyBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KCpidWlsZGVyU3RhdGUucGFy
ZW50U3R5bGUoKS50ZXh0U2hhZG93KCkpIDogbnVsbHB0cik7CiB9CiAKLWlubGluZSB2b2lkIFN0
eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVRleHRTaGFkb3coU3R5bGU6OkJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3Vz
dG9tOjphcHBseVZhbHVlVGV4dFNoYWRvdyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NT
VmFsdWUmIHZhbHVlKQogewogICAgIGFwcGx5VGV4dE9yQm94U2hhZG93VmFsdWU8Q1NTUHJvcGVy
dHlUZXh0U2hhZG93PihidWlsZGVyU3RhdGUsIHZhbHVlKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxCb3hTaGFkb3coU3R5bGU6OkJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFs
Qm94U2hhZG93KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGJ1aWxkZXJTdGF0
ZS5zdHlsZSgpLnNldEJveFNoYWRvdyhudWxscHRyKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRCb3hTaGFkb3coU3R5bGU6OkJ1aWxkZXJTdGF0ZSYg
YnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Qm94
U2hhZG93KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGJ1aWxkZXJTdGF0ZS5z
dHlsZSgpLnNldEJveFNoYWRvdyhidWlsZGVyU3RhdGUucGFyZW50U3R5bGUoKS5ib3hTaGFkb3co
KSA/IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oKmJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLmJv
eFNoYWRvdygpKSA6IG51bGxwdHIpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0
b206OmFwcGx5VmFsdWVCb3hTaGFkb3coU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
LCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVl
Qm94U2hhZG93KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7
CiAgICAgYXBwbHlUZXh0T3JCb3hTaGFkb3dWYWx1ZTxDU1NQcm9wZXJ0eUJveFNoYWRvdz4oYnVp
bGRlclN0YXRlLCB2YWx1ZSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6
YXBwbHlJbml0aWFsV2Via2l0Qm94U2hhZG93KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJT
dGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbFdlYmtpdEJveFNo
YWRvdyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBhcHBseUluaXRpYWxCb3hT
aGFkb3coYnVpbGRlclN0YXRlKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseUluaGVyaXRXZWJraXRCb3hTaGFkb3coU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0V2Via2l0Qm94
U2hhZG93KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGFwcGx5SW5oZXJpdEJv
eFNoYWRvdyhidWlsZGVyU3RhdGUpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0
b206OmFwcGx5VmFsdWVXZWJraXRCb3hTaGFkb3coU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBs
eVZhbHVlV2Via2l0Qm94U2hhZG93KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1
ZSYgdmFsdWUpCiB7CiAgICAgYXBwbHlUZXh0T3JCb3hTaGFkb3dWYWx1ZTxDU1NQcm9wZXJ0eVdl
YmtpdEJveFNoYWRvdz4oYnVpbGRlclN0YXRlLCB2YWx1ZSk7CiB9CiAKLWlubGluZSB2b2lkIFN0
eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsRm9udEZhbWlseShTdHlsZTo6QnVpbGRlclN0
YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRp
YWxGb250RmFtaWx5KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGF1dG8gZm9u
dERlc2NyaXB0aW9uID0gYnVpbGRlclN0YXRlLnN0eWxlKCkuZm9udERlc2NyaXB0aW9uKCk7CiAg
ICAgYXV0byBpbml0aWFsRGVzYyA9IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24oKTsKQEAgLTg4Myw3
ICs4ODQsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEZv
bnRGYW1pbHkoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbAogICAgIGJ1aWxkZXJTdGF0ZS5zZXRG
b250RGVzY3JpcHRpb24oV1RGTW92ZShmb250RGVzY3JpcHRpb24pKTsKIH0KIAotaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRGb250RmFtaWx5KFN0eWxlOjpCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5
SW5oZXJpdEZvbnRGYW1pbHkoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYXV0
byBmb250RGVzY3JpcHRpb24gPSBidWlsZGVyU3RhdGUuc3R5bGUoKS5mb250RGVzY3JpcHRpb24o
KTsKICAgICBhdXRvIHBhcmVudEZvbnREZXNjcmlwdGlvbiA9IGJ1aWxkZXJTdGF0ZS5wYXJlbnRT
dHlsZSgpLmZvbnREZXNjcmlwdGlvbigpOwpAQCAtODkzLDcgKzg5NCw3IEBAIGlubGluZSB2b2lk
IFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Rm9udEZhbWlseShTdHlsZTo6QnVpbGRl
clN0YXRlJiBidWlsCiAgICAgYnVpbGRlclN0YXRlLnNldEZvbnREZXNjcmlwdGlvbihXVEZNb3Zl
KGZvbnREZXNjcmlwdGlvbikpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206
OmFwcGx5VmFsdWVGb250RmFtaWx5KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwg
Q1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZv
bnRGYW1pbHkoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsK
ICAgICBhdXRvJiB2YWx1ZUxpc3QgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKTsKIApA
QCAtOTcwLDI4ICs5NzEsMjggQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eVZhbHVlRm9udEZhbWlseShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGUKICAgICBidWlsZGVy
U3RhdGUuc2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSk7CiB9CiAK
LWlubGluZSBib29sIFN0eWxlQnVpbGRlckN1c3RvbTo6aXNWYWxpZERpc3BsYXlWYWx1ZShTdHls
ZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIERpc3BsYXlUeXBlIGRpc3BsYXkpCitpbmxp
bmUgYm9vbCBCdWlsZGVyQ3VzdG9tOjppc1ZhbGlkRGlzcGxheVZhbHVlKEJ1aWxkZXJTdGF0ZSYg
YnVpbGRlclN0YXRlLCBEaXNwbGF5VHlwZSBkaXNwbGF5KQogewogICAgIGlmIChpczxTVkdFbGVt
ZW50PihidWlsZGVyU3RhdGUuZWxlbWVudCgpKSAmJiBidWlsZGVyU3RhdGUuc3R5bGUoKS5zdHls
ZVR5cGUoKSA9PSBQc2V1ZG9JZDo6Tm9uZSkKICAgICAgICAgcmV0dXJuIGRpc3BsYXkgPT0gRGlz
cGxheVR5cGU6OklubGluZSB8fCBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpCbG9jayB8fCBkaXNw
bGF5ID09IERpc3BsYXlUeXBlOjpOb25lOwogICAgIHJldHVybiB0cnVlOwogfQogCi1pbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdERpc3BsYXkoU3R5bGU6OkJ1aWxk
ZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJ
bmhlcml0RGlzcGxheShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBEaXNwbGF5
VHlwZSBkaXNwbGF5ID0gYnVpbGRlclN0YXRlLnBhcmVudFN0eWxlKCkuZGlzcGxheSgpOwogICAg
IGlmIChpc1ZhbGlkRGlzcGxheVZhbHVlKGJ1aWxkZXJTdGF0ZSwgZGlzcGxheSkpCiAgICAgICAg
IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldERpc3BsYXkoZGlzcGxheSk7CiB9CiAKLWlubGluZSB2
b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZURpc3BsYXkoU3R5bGU6OkJ1aWxkZXJT
dGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVy
Q3VzdG9tOjphcHBseVZhbHVlRGlzcGxheShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NT
VmFsdWUmIHZhbHVlKQogewogICAgIERpc3BsYXlUeXBlIGRpc3BsYXkgPSBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGlmIChpc1ZhbGlkRGlzcGxheVZhbHVlKGJ1aWxk
ZXJTdGF0ZSwgZGlzcGxheSkpCiAgICAgICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldERpc3Bs
YXkoZGlzcGxheSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlW
YWx1ZUJhc2VsaW5lU2hpZnQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NW
YWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQmFzZWxp
bmVTaGlmdChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewog
ICAgIFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLmFjY2Vz
c1NWR1N0eWxlKCk7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpOwpAQCAtMTAxNSwxNCArMTAxNiwxNCBAQCBpbmxpbmUgdm9pZCBT
dHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVCYXNlbGluZVNoaWZ0KFN0eWxlOjpCdWlsZGVy
U3RhdGUmIGJ1aQogICAgIH0KIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjph
cHBseUluaXRpYWxXZWJraXRBc3BlY3RSYXRpbyhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVy
U3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxXZWJraXRBc3Bl
Y3RSYXRpbyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBidWlsZGVyU3RhdGUu
c3R5bGUoKS5zZXRBc3BlY3RSYXRpb1R5cGUoUmVuZGVyU3R5bGU6OmluaXRpYWxBc3BlY3RSYXRp
b1R5cGUoKSk7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0QXNwZWN0UmF0aW9EZW5vbWlu
YXRvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEFzcGVjdFJhdGlvRGVub21pbmF0b3IoKSk7CiAgICAg
YnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0QXNwZWN0UmF0aW9OdW1lcmF0b3IoUmVuZGVyU3R5bGU6
OmluaXRpYWxBc3BlY3RSYXRpb051bWVyYXRvcigpKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRXZWJraXRBc3BlY3RSYXRpbyhTdHlsZTo6QnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUlu
aGVyaXRXZWJraXRBc3BlY3RSYXRpbyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAg
ICBpZiAoYnVpbGRlclN0YXRlLnBhcmVudFN0eWxlKCkuYXNwZWN0UmF0aW9UeXBlKCkgPT0gQXNw
ZWN0UmF0aW9UeXBlOjpBdXRvKQogICAgICAgICByZXR1cm47CkBAIC0xMDMxLDcgKzEwMzIsNyBA
QCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFdlYmtpdEFzcGVj
dFJhdGlvKFN0eWxlOjpCdWlsZGVyU3RhdAogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldEFz
cGVjdFJhdGlvTnVtZXJhdG9yKGJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLmFzcGVjdFJhdGlv
TnVtZXJhdG9yKCkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5
VmFsdWVXZWJraXRBc3BlY3RSYXRpbyhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUs
IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVX
ZWJraXRBc3BlY3RSYXRpbyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZh
bHVlKQogewogICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CiAgICAgICAg
IGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KTsKQEAgLTEwNTEsMjEgKzEwNTIsMjEgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseVZhbHVlV2Via2l0QXNwZWN0UmF0aW8oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYKICAgICBi
dWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRBc3BlY3RSYXRpb051bWVyYXRvcihhc3BlY3RSYXRpb1Zh
bHVlLm51bWVyYXRvclZhbHVlKCkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0
b206OmFwcGx5SW5pdGlhbFdlYmtpdFRleHRFbXBoYXNpc1N0eWxlKFN0eWxlOjpCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlh
bFdlYmtpdFRleHRFbXBoYXNpc1N0eWxlKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewog
ICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldFRleHRFbXBoYXNpc0ZpbGwoUmVuZGVyU3R5bGU6
OmluaXRpYWxUZXh0RW1waGFzaXNGaWxsKCkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNl
dFRleHRFbXBoYXNpc01hcmsoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RW1waGFzaXNNYXJrKCkp
OwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsoUmVu
ZGVyU3R5bGU6OmluaXRpYWxUZXh0RW1waGFzaXNDdXN0b21NYXJrKCkpOwogfQogCi1pbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFdlYmtpdFRleHRFbXBoYXNpc1N0
eWxlKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxk
ZXJDdXN0b206OmFwcGx5SW5oZXJpdFdlYmtpdFRleHRFbXBoYXNpc1N0eWxlKEJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldFRleHRFbXBo
YXNpc0ZpbGwoYnVpbGRlclN0YXRlLnBhcmVudFN0eWxlKCkudGV4dEVtcGhhc2lzRmlsbCgpKTsK
ICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRUZXh0RW1waGFzaXNNYXJrKGJ1aWxkZXJTdGF0
ZS5wYXJlbnRTdHlsZSgpLnRleHRFbXBoYXNpc01hcmsoKSk7CiAgICAgYnVpbGRlclN0YXRlLnN0
eWxlKCkuc2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhidWlsZGVyU3RhdGUucGFyZW50U3R5bGUo
KS50ZXh0RW1waGFzaXNDdXN0b21NYXJrKCkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxk
ZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRUZXh0RW1waGFzaXNTdHlsZShTdHlsZTo6QnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2b2lkIEJ1aWxk
ZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRUZXh0RW1waGFzaXNTdHlsZShCdWlsZGVyU3RhdGUm
IGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChpczxDU1NWYWx1ZUxp
c3Q+KHZhbHVlKSkgewogICAgICAgICBhdXRvJiBsaXN0ID0gZG93bmNhc3Q8Q1NTVmFsdWVMaXN0
Pih2YWx1ZSk7CkBAIC0xMTAxLDggKzExMDIsOCBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5VmFsdWVXZWJraXRUZXh0RW1waGFzaXNTdHlsZShTdHlsZTo6QnVpbGRlcgog
ICAgIH0KIH0KIAotdGVtcGxhdGUgPFN0eWxlQnVpbGRlckN1c3RvbTo6Q291bnRlckJlaGF2aW9y
IGNvdW50ZXJCZWhhdmlvcj4KLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJ
bmhlcml0Q291bnRlcihTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCit0ZW1wbGF0
ZSA8QnVpbGRlckN1c3RvbTo6Q291bnRlckJlaGF2aW9yIGNvdW50ZXJCZWhhdmlvcj4KK2lubGlu
ZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdENvdW50ZXIoQnVpbGRlclN0YXRlJiBi
dWlsZGVyU3RhdGUpCiB7CiAgICAgYXV0byYgbWFwID0gYnVpbGRlclN0YXRlLnN0eWxlKCkuYWNj
ZXNzQ291bnRlckRpcmVjdGl2ZXMoKTsKICAgICBmb3IgKGF1dG8mIGtleVZhbHVlIDogY29uc3Rf
Y2FzdDxSZW5kZXJTdHlsZSY+KGJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpKS5hY2Nlc3NDb3Vu
dGVyRGlyZWN0aXZlcygpKSB7CkBAIC0xMTE0LDggKzExMTUsOCBAQCBpbmxpbmUgdm9pZCBTdHls
ZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdENvdW50ZXIoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYg
YnVpbGRlcgogICAgIH0KIH0KIAotdGVtcGxhdGUgPFN0eWxlQnVpbGRlckN1c3RvbTo6Q291bnRl
ckJlaGF2aW9yIGNvdW50ZXJCZWhhdmlvcj4KLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlWYWx1ZUNvdW50ZXIoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBD
U1NWYWx1ZSYgdmFsdWUpCit0ZW1wbGF0ZSA8QnVpbGRlckN1c3RvbTo6Q291bnRlckJlaGF2aW9y
IGNvdW50ZXJCZWhhdmlvcj4KK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVD
b3VudGVyKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAg
ICAgYm9vbCBzZXRDb3VudGVySW5jcmVtZW50VG9Ob25lID0gY291bnRlckJlaGF2aW9yID09IElu
Y3JlbWVudCAmJiBpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpICYmIGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZTsKIApAQCAtMTE0
NSw0MyArMTE0Niw0MyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFs
dWVDb3VudGVyKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdAogICAgIH0KIH0KIAotaW5s
aW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxDb3VudGVySW5jcmVtZW50
KFN0eWxlOjpCdWlsZGVyU3RhdGUmKSB7IH0KK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFw
cGx5SW5pdGlhbENvdW50ZXJJbmNyZW1lbnQoQnVpbGRlclN0YXRlJikgeyB9CiAKLWlubGluZSB2
b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Q291bnRlckluY3JlbWVudChTdHls
ZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9t
OjphcHBseUluaGVyaXRDb3VudGVySW5jcmVtZW50KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
KQogewogICAgIGFwcGx5SW5oZXJpdENvdW50ZXI8SW5jcmVtZW50PihidWlsZGVyU3RhdGUpOwog
fQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb3VudGVySW5j
cmVtZW50KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVl
KQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvdW50ZXJJbmNyZW1lbnQo
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhcHBs
eVZhbHVlQ291bnRlcjxJbmNyZW1lbnQ+KGJ1aWxkZXJTdGF0ZSwgdmFsdWUpOwogfQogCi1pbmxp
bmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbENvdW50ZXJSZXNldChTdHls
ZTo6QnVpbGRlclN0YXRlJikgeyB9CitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUlu
aXRpYWxDb3VudGVyUmVzZXQoQnVpbGRlclN0YXRlJikgeyB9CiAKLWlubGluZSB2b2lkIFN0eWxl
QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Q291bnRlclJlc2V0KFN0eWxlOjpCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJp
dENvdW50ZXJSZXNldChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBhcHBseUlu
aGVyaXRDb3VudGVyPFJlc2V0PihidWlsZGVyU3RhdGUpOwogfQogCi1pbmxpbmUgdm9pZCBTdHls
ZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb3VudGVyUmVzZXQoU3R5bGU6OkJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3Vz
dG9tOjphcHBseVZhbHVlQ291bnRlclJlc2V0KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBD
U1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXBwbHlWYWx1ZUNvdW50ZXI8UmVzZXQ+KGJ1aWxkZXJT
dGF0ZSwgdmFsdWUpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5
SW5pdGlhbEN1cnNvcihTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUg
dm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxDdXJzb3IoQnVpbGRlclN0YXRlJiBidWls
ZGVyU3RhdGUpCiB7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuY2xlYXJDdXJzb3JMaXN0KCk7
CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0Q3Vyc29yKFJlbmRlclN0eWxlOjppbml0aWFs
Q3Vyc29yKCkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5o
ZXJpdEN1cnNvcihTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9p
ZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRDdXJzb3IoQnVpbGRlclN0YXRlJiBidWlsZGVy
U3RhdGUpCiB7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0Q3Vyc29yKGJ1aWxkZXJTdGF0
ZS5wYXJlbnRTdHlsZSgpLmN1cnNvcigpKTsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRD
dXJzb3JMaXN0KGJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLmN1cnNvcnMoKSk7CiB9CiAKLWlu
bGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUN1cnNvcihTdHlsZTo6QnVp
bGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2b2lkIEJ1
aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDdXJzb3IoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUs
IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5jbGVhckN1cnNv
ckxpc3QoKTsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewpAQCAtMTIw
NiwxMyArMTIwNywxMyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFs
dWVDdXJzb3IoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YQogICAgIH0KIH0KIAotaW5s
aW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxGaWxsKFN0eWxlOjpCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5
SW5pdGlhbEZpbGwoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYXV0byYgc3Zn
U3R5bGUgPSBidWlsZGVyU3RhdGUuc3R5bGUoKS5hY2Nlc3NTVkdTdHlsZSgpOwogICAgIHN2Z1N0
eWxlLnNldEZpbGxQYWludChTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbEZpbGxQYWludFR5cGUoKSwg
U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxGaWxsUGFpbnRDb2xvcigpLCBTVkdSZW5kZXJTdHlsZTo6
aW5pdGlhbEZpbGxQYWludFVyaSgpLCBidWlsZGVyU3RhdGUuYXBwbHlQcm9wZXJ0eVRvUmVndWxh
clN0eWxlKCksIGJ1aWxkZXJTdGF0ZS5hcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKCkp
OwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEZpbGwo
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1
c3RvbTo6YXBwbHlJbmhlcml0RmlsbChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAg
ICBhdXRvJiBzdmdTdHlsZSA9IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLmFjY2Vzc1NWR1N0eWxlKCk7
CiAgICAgYXV0byYgc3ZnUGFyZW50U3R5bGUgPSBidWlsZGVyU3RhdGUucGFyZW50U3R5bGUoKS5z
dmdTdHlsZSgpOwpAQCAtMTIyMCw3ICsxMjIxLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVy
Q3VzdG9tOjphcHBseUluaGVyaXRGaWxsKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGEK
IAogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVGaWxsKFN0
eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5l
IHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZpbGwoQnVpbGRlclN0YXRlJiBidWlsZGVy
U3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBzdmdTdHlsZSA9IGJ1aWxkZXJT
dGF0ZS5zdHlsZSgpLmFjY2Vzc1NWR1N0eWxlKCk7CiAgICAgY29uc3QgYXV0byogbG9jYWxWYWx1
ZSA9IHZhbHVlLmlzUHJpbWl0aXZlVmFsdWUoKSA/ICZkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpIDogbnVsbHB0cjsKQEAgLTEyNTEsMjAgKzEyNTIsMjAgQEAgaW5saW5lIHZvaWQg
U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRmlsbChTdHlsZTo6QnVpbGRlclN0YXRlJiBi
dWlsZGVyU3RhdGUKICAgICBzdmdTdHlsZS5zZXRGaWxsUGFpbnQocGFpbnRUeXBlLCBjb2xvciwg
dXJsLCBidWlsZGVyU3RhdGUuYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCksIGJ1aWxkZXJT
dGF0ZS5hcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKCkpOwogfQogCi1pbmxpbmUgdm9p
ZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbFN0cm9rZShTdHlsZTo6QnVpbGRlclN0
YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRp
YWxTdHJva2UoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgU1ZHUmVuZGVyU3R5
bGUmIHN2Z1N0eWxlID0gYnVpbGRlclN0YXRlLnN0eWxlKCkuYWNjZXNzU1ZHU3R5bGUoKTsKICAg
ICBzdmdTdHlsZS5zZXRTdHJva2VQYWludChTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbFN0cm9rZVBh
aW50VHlwZSgpLCBTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbFN0cm9rZVBhaW50Q29sb3IoKSwgU1ZH
UmVuZGVyU3R5bGU6OmluaXRpYWxTdHJva2VQYWludFVyaSgpLCBidWlsZGVyU3RhdGUuYXBwbHlQ
cm9wZXJ0eVRvUmVndWxhclN0eWxlKCksIGJ1aWxkZXJTdGF0ZS5hcHBseVByb3BlcnR5VG9WaXNp
dGVkTGlua1N0eWxlKCkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5SW5oZXJpdFN0cm9rZShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxp
bmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRTdHJva2UoQnVpbGRlclN0YXRlJiBi
dWlsZGVyU3RhdGUpCiB7CiAgICAgYXV0byYgc3ZnU3R5bGUgPSBidWlsZGVyU3RhdGUuc3R5bGUo
KS5hY2Nlc3NTVkdTdHlsZSgpOwogICAgIGF1dG8mIHN2Z1BhcmVudFN0eWxlID0gYnVpbGRlclN0
YXRlLnBhcmVudFN0eWxlKCkuc3ZnU3R5bGUoKTsKICAgICBzdmdTdHlsZS5zZXRTdHJva2VQYWlu
dChzdmdQYXJlbnRTdHlsZS5zdHJva2VQYWludFR5cGUoKSwgc3ZnUGFyZW50U3R5bGUuc3Ryb2tl
UGFpbnRDb2xvcigpLCBzdmdQYXJlbnRTdHlsZS5zdHJva2VQYWludFVyaSgpLCBidWlsZGVyU3Rh
dGUuYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCksIGJ1aWxkZXJTdGF0ZS5hcHBseVByb3Bl
cnR5VG9WaXNpdGVkTGlua1N0eWxlKCkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5VmFsdWVTdHJva2UoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
LCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVl
U3Ryb2tlKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAg
ICAgYXV0byYgc3ZnU3R5bGUgPSBidWlsZGVyU3RhdGUuc3R5bGUoKS5hY2Nlc3NTVkdTdHlsZSgp
OwogICAgIGNvbnN0IGF1dG8qIGxvY2FsVmFsdWUgPSB2YWx1ZS5pc1ByaW1pdGl2ZVZhbHVlKCkg
PyAmZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSA6IG51bGxwdHI7CkBAIC0xMjk1
LDE4ICsxMjk2LDE4IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1
ZVN0cm9rZShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhCiAgICAgc3ZnU3R5bGUuc2V0
U3Ryb2tlUGFpbnQocGFpbnRUeXBlLCBjb2xvciwgdXJsLCBidWlsZGVyU3RhdGUuYXBwbHlQcm9w
ZXJ0eVRvUmVndWxhclN0eWxlKCksIGJ1aWxkZXJTdGF0ZS5hcHBseVByb3BlcnR5VG9WaXNpdGVk
TGlua1N0eWxlKCkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5
SW5pdGlhbENvbnRlbnQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5l
IHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsQ29udGVudChCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSkKIHsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5jbGVhckNvbnRlbnQoKTsK
IH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRDb250ZW50
KFN0eWxlOjpCdWlsZGVyU3RhdGUmKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJ
bmhlcml0Q29udGVudChCdWlsZGVyU3RhdGUmKQogewogICAgIC8vIEZJWE1FOiBJbiBDU1MzLCBp
dCB3aWxsIGJlIHBvc3NpYmxlIHRvIGluaGVyaXQgY29udGVudC4gSW4gQ1NTMiBpdCBpcyBub3Qu
IFRoaXMKICAgICAvLyBub3RlIGlzIGEgcmVtaW5kZXIgdGhhdCBldmVudHVhbGx5ICJpbmhlcml0
IiBuZWVkcyB0byBiZSBzdXBwb3J0ZWQuCiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZUNvbnRlbnQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
LCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVl
Q29udGVudChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewog
ICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CiAgICAgICAgIGNvbnN0IGF1
dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsK
QEAgLTEzOTAsNyArMTM5MSw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlWYWx1ZUNvbnRlbnQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0CiAgICAgICAgIGJ1
aWxkZXJTdGF0ZS5zdHlsZSgpLmNsZWFyQ29udGVudCgpOwogfQogCi1pbmxpbmUgdm9pZCBTdHls
ZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEZvbnRWYXJpYW50TGlnYXR1cmVzKFN0eWxlOjpC
dWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFw
cGx5SW5oZXJpdEZvbnRWYXJpYW50TGlnYXR1cmVzKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
KQogewogICAgIGF1dG8gZm9udERlc2NyaXB0aW9uID0gYnVpbGRlclN0YXRlLmZvbnREZXNjcmlw
dGlvbigpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRWYXJpYW50Q29tbW9uTGlnYXR1cmVzKGJ1
aWxkZXJTdGF0ZS5wYXJlbnRGb250RGVzY3JpcHRpb24oKS52YXJpYW50Q29tbW9uTGlnYXR1cmVz
KCkpOwpAQCAtMTQwMCw3ICsxNDAxLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseUluaGVyaXRGb250VmFyaWFudExpZ2F0dXJlcyhTdHlsZTo6QnVpbGRlclMKICAgICBi
dWlsZGVyU3RhdGUuc2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSk7
CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsRm9udFZh
cmlhbnRMaWdhdHVyZXMoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5l
IHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsRm9udFZhcmlhbnRMaWdhdHVyZXMoQnVp
bGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYXV0byBmb250RGVzY3JpcHRpb24gPSBi
dWlsZGVyU3RhdGUuZm9udERlc2NyaXB0aW9uKCk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldFZh
cmlhbnRDb21tb25MaWdhdHVyZXMoRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vcm1hbCk7CkBAIC0x
NDEwLDcgKzE0MTEsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5p
dGlhbEZvbnRWYXJpYW50TGlnYXR1cmVzKFN0eWxlOjpCdWlsZGVyUwogICAgIGJ1aWxkZXJTdGF0
ZS5zZXRGb250RGVzY3JpcHRpb24oV1RGTW92ZShmb250RGVzY3JpcHRpb24pKTsKIH0KIAotaW5s
aW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRm9udFZhcmlhbnRMaWdhdHVy
ZXMoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitp
bmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRm9udFZhcmlhbnRMaWdhdHVyZXMo
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRv
IGZvbnREZXNjcmlwdGlvbiA9IGJ1aWxkZXJTdGF0ZS5mb250RGVzY3JpcHRpb24oKTsKICAgICBh
dXRvIHZhcmlhbnRMaWdhdHVyZXMgPSBleHRyYWN0Rm9udFZhcmlhbnRMaWdhdHVyZXModmFsdWUp
OwpAQCAtMTQyMSw3ICsxNDIyLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjph
cHBseVZhbHVlRm9udFZhcmlhbnRMaWdhdHVyZXMoU3R5bGU6OkJ1aWxkZXJTdGEKICAgICBidWls
ZGVyU3RhdGUuc2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSk7CiB9
CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Rm9udFZhcmlh
bnROdW1lcmljKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lk
IEJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEZvbnRWYXJpYW50TnVtZXJpYyhCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBhdXRvIGZvbnREZXNjcmlwdGlvbiA9IGJ1aWxkZXJT
dGF0ZS5mb250RGVzY3JpcHRpb24oKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0VmFyaWFudE51
bWVyaWNGaWd1cmUoYnVpbGRlclN0YXRlLnBhcmVudEZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRO
dW1lcmljRmlndXJlKCkpOwpAQCAtMTQzMiw3ICsxNDMzLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRGb250VmFyaWFudE51bWVyaWMoU3R5bGU6OkJ1aWxk
ZXJTdGEKICAgICBidWlsZGVyU3RhdGUuc2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZm9udERl
c2NyaXB0aW9uKSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJ
bml0aWFsRm9udFZhcmlhbnROdW1lcmljKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0
ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEZvbnRWYXJpYW50TnVt
ZXJpYyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBhdXRvIGZvbnREZXNjcmlw
dGlvbiA9IGJ1aWxkZXJTdGF0ZS5mb250RGVzY3JpcHRpb24oKTsKICAgICBmb250RGVzY3JpcHRp
b24uc2V0VmFyaWFudE51bWVyaWNGaWd1cmUoRm9udFZhcmlhbnROdW1lcmljRmlndXJlOjpOb3Jt
YWwpOwpAQCAtMTQ0Myw3ICsxNDQ0LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseUluaXRpYWxGb250VmFyaWFudE51bWVyaWMoU3R5bGU6OkJ1aWxkZXJTdGEKICAgICBi
dWlsZGVyU3RhdGUuc2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSk7
CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZvbnRWYXJp
YW50TnVtZXJpYyhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2
YWx1ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVGb250VmFyaWFudE51
bWVyaWMoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAg
ICBhdXRvIGZvbnREZXNjcmlwdGlvbiA9IGJ1aWxkZXJTdGF0ZS5mb250RGVzY3JpcHRpb24oKTsK
ICAgICBhdXRvIHZhcmlhbnROdW1lcmljID0gZXh0cmFjdEZvbnRWYXJpYW50TnVtZXJpYyh2YWx1
ZSk7CkBAIC0xNDU1LDcgKzE0NTYsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206
OmFwcGx5VmFsdWVGb250VmFyaWFudE51bWVyaWMoU3R5bGU6OkJ1aWxkZXJTdGF0ZQogICAgIGJ1
aWxkZXJTdGF0ZS5zZXRGb250RGVzY3JpcHRpb24oV1RGTW92ZShmb250RGVzY3JpcHRpb24pKTsK
IH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRGb250VmFy
aWFudEVhc3RBc2lhbihTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUg
dm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRGb250VmFyaWFudEVhc3RBc2lhbihCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBhdXRvIGZvbnREZXNjcmlwdGlvbiA9IGJ1
aWxkZXJTdGF0ZS5mb250RGVzY3JpcHRpb24oKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0VmFy
aWFudEVhc3RBc2lhblZhcmlhbnQoYnVpbGRlclN0YXRlLnBhcmVudEZvbnREZXNjcmlwdGlvbigp
LnZhcmlhbnRFYXN0QXNpYW5WYXJpYW50KCkpOwpAQCAtMTQ2NCw3ICsxNDY1LDcgQEAgaW5saW5l
IHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRGb250VmFyaWFudEVhc3RBc2lh
bihTdHlsZTo6QnVpbGRlclMKICAgICBidWlsZGVyU3RhdGUuc2V0Rm9udERlc2NyaXB0aW9uKFdU
Rk1vdmUoZm9udERlc2NyaXB0aW9uKSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlJbml0aWFsRm9udFZhcmlhbnRFYXN0QXNpYW4oU3R5bGU6OkJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFs
Rm9udFZhcmlhbnRFYXN0QXNpYW4oQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAg
YXV0byBmb250RGVzY3JpcHRpb24gPSBidWlsZGVyU3RhdGUuZm9udERlc2NyaXB0aW9uKCk7CiAg
ICAgZm9udERlc2NyaXB0aW9uLnNldFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50KEZvbnRWYXJpYW50
RWFzdEFzaWFuVmFyaWFudDo6Tm9ybWFsKTsKQEAgLTE0NzMsNyArMTQ3NCw3IEBAIGlubGluZSB2
b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsRm9udFZhcmlhbnRFYXN0QXNpYW4o
U3R5bGU6OkJ1aWxkZXJTCiAgICAgYnVpbGRlclN0YXRlLnNldEZvbnREZXNjcmlwdGlvbihXVEZN
b3ZlKGZvbnREZXNjcmlwdGlvbikpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0
b206OmFwcGx5VmFsdWVGb250VmFyaWFudEVhc3RBc2lhbihTdHlsZTo6QnVpbGRlclN0YXRlJiBi
dWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206
OmFwcGx5VmFsdWVGb250VmFyaWFudEVhc3RBc2lhbihCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0
ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8gZm9udERlc2NyaXB0aW9uID0gYnVpbGRl
clN0YXRlLmZvbnREZXNjcmlwdGlvbigpOwogICAgIGF1dG8gdmFyaWFudEVhc3RBc2lhbiA9IGV4
dHJhY3RGb250VmFyaWFudEVhc3RBc2lhbih2YWx1ZSk7CkBAIC0xNDgzLDcgKzE0ODQsNyBAQCBp
bmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVGb250VmFyaWFudEVhc3RB
c2lhbihTdHlsZTo6QnVpbGRlclN0YQogICAgIGJ1aWxkZXJTdGF0ZS5zZXRGb250RGVzY3JpcHRp
b24oV1RGTW92ZShmb250RGVzY3JpcHRpb24pKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWls
ZGVyQ3VzdG9tOjphcHBseUluaXRpYWxGb250U2l6ZShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWls
ZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxGb250U2l6
ZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBhdXRvIGZvbnREZXNjcmlwdGlv
biA9IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLmZvbnREZXNjcmlwdGlvbigpOwogICAgIGZsb2F0IHNp
emUgPSBTdHlsZTo6Zm9udFNpemVGb3JLZXl3b3JkKENTU1ZhbHVlTWVkaXVtLCBmb250RGVzY3Jp
cHRpb24udXNlRml4ZWREZWZhdWx0U2l6ZSgpLCBidWlsZGVyU3RhdGUuZG9jdW1lbnQoKSk7CkBA
IC0xNDk2LDcgKzE0OTcsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5
SW5pdGlhbEZvbnRTaXplKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZQogICAgIGJ1aWxkZXJT
dGF0ZS5zZXRGb250RGVzY3JpcHRpb24oV1RGTW92ZShmb250RGVzY3JpcHRpb24pKTsKIH0KIAot
aW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRGb250U2l6ZShTdHls
ZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9t
OjphcHBseUluaGVyaXRGb250U2l6ZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAg
ICBjb25zdCBhdXRvJiBwYXJlbnRGb250RGVzY3JpcHRpb24gPSBidWlsZGVyU3RhdGUucGFyZW50
U3R5bGUoKS5mb250RGVzY3JpcHRpb24oKTsKICAgICBmbG9hdCBzaXplID0gcGFyZW50Rm9udERl
c2NyaXB0aW9uLnNwZWNpZmllZFNpemUoKTsKQEAgLTE1MTIsNyArMTUxMyw3IEBAIGlubGluZSB2
b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Rm9udFNpemUoU3R5bGU6OkJ1aWxk
ZXJTdGF0ZSYgYnVpbGRlCiAKIC8vIFdoZW4gdGhlIENTUyBrZXl3b3JkICJsYXJnZXIiIGlzIHVz
ZWQsIHRoaXMgZnVuY3Rpb24gd2lsbCBhdHRlbXB0IHRvIG1hdGNoIHdpdGhpbiB0aGUga2V5d29y
ZAogLy8gdGFibGUsIGFuZCBmYWlsaW5nIHRoYXQsIHdpbGwgc2ltcGx5IG11bHRpcGx5IGJ5IDEu
Mi4KLWlubGluZSBmbG9hdCBTdHlsZUJ1aWxkZXJDdXN0b206OmxhcmdlckZvbnRTaXplKGZsb2F0
IHNpemUpCitpbmxpbmUgZmxvYXQgQnVpbGRlckN1c3RvbTo6bGFyZ2VyRm9udFNpemUoZmxvYXQg
c2l6ZSkKIHsKICAgICAvLyBGSVhNRTogRmlndXJlIG91dCB3aGVyZSB3ZSBmYWxsIGluIHRoZSBz
aXplIHJhbmdlcyAoeHgtc21hbGwgdG8geHh4LWxhcmdlKSBhbmQgc2NhbGUgdXAgdG8KICAgICAv
LyB0aGUgbmV4dCBzaXplIGxldmVsLgpAQCAtMTUyMCwxNCArMTUyMSwxNCBAQCBpbmxpbmUgZmxv
YXQgU3R5bGVCdWlsZGVyQ3VzdG9tOjpsYXJnZXJGb250U2l6ZShmbG9hdCBzaXplKQogfQogCiAv
LyBMaWtlIHRoZSBwcmV2aW91cyBmdW5jdGlvbiwgYnV0IGZvciB0aGUga2V5d29yZCAic21hbGxl
ciIuCi1pbmxpbmUgZmxvYXQgU3R5bGVCdWlsZGVyQ3VzdG9tOjpzbWFsbGVyRm9udFNpemUoZmxv
YXQgc2l6ZSkKK2lubGluZSBmbG9hdCBCdWlsZGVyQ3VzdG9tOjpzbWFsbGVyRm9udFNpemUoZmxv
YXQgc2l6ZSkKIHsKICAgICAvLyBGSVhNRTogRmlndXJlIG91dCB3aGVyZSB3ZSBmYWxsIGluIHRo
ZSBzaXplIHJhbmdlcyAoeHgtc21hbGwgdG8geHh4LWxhcmdlKSBhbmQgc2NhbGUgZG93biB0bwog
ICAgIC8vIHRoZSBuZXh0IHNpemUgbGV2ZWwuCiAgICAgcmV0dXJuIHNpemUgLyAxLjJmOwogfQog
Ci1pbmxpbmUgZmxvYXQgU3R5bGVCdWlsZGVyQ3VzdG9tOjpkZXRlcm1pbmVSdWJ5VGV4dFNpemVN
dWx0aXBsaWVyKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSBmbG9h
dCBCdWlsZGVyQ3VzdG9tOjpkZXRlcm1pbmVSdWJ5VGV4dFNpemVNdWx0aXBsaWVyKEJ1aWxkZXJT
dGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGlmIChidWlsZGVyU3RhdGUuc3R5bGUoKS5ydWJ5
UG9zaXRpb24oKSAhPSBSdWJ5UG9zaXRpb246OkludGVyQ2hhcmFjdGVyKQogICAgICAgICByZXR1
cm4gMC41ZjsKQEAgLTE1NDQsNyArMTU0NSw3IEBAIGlubGluZSBmbG9hdCBTdHlsZUJ1aWxkZXJD
dXN0b206OmRldGVybWluZVJ1YnlUZXh0U2l6ZU11bHRpcGxpZXIoU3R5bGU6OkJ1aWxkZXJTCiAg
ICAgcmV0dXJuIDAuMjVmOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5SW5pdGlhbEZvbnRTdHlsZShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitp
bmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxGb250U3R5bGUoQnVpbGRlclN0
YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYXV0byBmb250RGVzY3JpcHRpb24gPSBidWlsZGVy
U3RhdGUuZm9udERlc2NyaXB0aW9uKCk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldEl0YWxpYyhG
b250Q2FzY2FkZURlc2NyaXB0aW9uOjppbml0aWFsSXRhbGljKCkpOwpAQCAtMTU1Miw3ICsxNTUz
LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxGb250U3R5
bGUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGQKICAgICBidWlsZGVyU3RhdGUuc2V0Rm9udERl
c2NyaXB0aW9uKFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSk7CiB9CiAKLWlubGluZSB2b2lkIFN0
eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Rm9udFN0eWxlKFN0eWxlOjpCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJp
dEZvbnRTdHlsZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBhdXRvIGZvbnRE
ZXNjcmlwdGlvbiA9IGJ1aWxkZXJTdGF0ZS5mb250RGVzY3JpcHRpb24oKTsKICAgICBmb250RGVz
Y3JpcHRpb24uc2V0SXRhbGljKGJ1aWxkZXJTdGF0ZS5wYXJlbnRGb250RGVzY3JpcHRpb24oKS5p
dGFsaWMoKSk7CkBAIC0xNTYwLDE2ICsxNTYxLDE2IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlJbmhlcml0Rm9udFN0eWxlKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxk
CiAgICAgYnVpbGRlclN0YXRlLnNldEZvbnREZXNjcmlwdGlvbihXVEZNb3ZlKGZvbnREZXNjcmlw
dGlvbikpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVG
b250U3R5bGUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFs
dWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRm9udFN0eWxlKEJ1aWxk
ZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgZm9u
dFN0eWxlVmFsdWUgPSBkb3duY2FzdDxDU1NGb250U3R5bGVWYWx1ZT4odmFsdWUpOwogICAgIGF1
dG8gZm9udERlc2NyaXB0aW9uID0gYnVpbGRlclN0YXRlLmZvbnREZXNjcmlwdGlvbigpOwotICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRJdGFsaWMoU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
Rm9udFN0eWxlRnJvbVZhbHVlKGZvbnRTdHlsZVZhbHVlKSk7CisgICAgZm9udERlc2NyaXB0aW9u
LnNldEl0YWxpYyhCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN0eWxlRnJvbVZhbHVlKGZv
bnRTdHlsZVZhbHVlKSk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldEZvbnRTdHlsZUF4aXMoZm9u
dFN0eWxlVmFsdWUuZm9udFN0eWxlVmFsdWUtPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUl0YWxpYyA/
IEZvbnRTdHlsZUF4aXM6Oml0YWwgOiBGb250U3R5bGVBeGlzOjpzbG50KTsKICAgICBidWlsZGVy
U3RhdGUuc2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSk7CiB9CiAK
LWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZvbnRTaXplKFN0eWxl
OjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZv
aWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZvbnRTaXplKEJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byBmb250RGVzY3JpcHRpb24gPSBi
dWlsZGVyU3RhdGUuc3R5bGUoKS5mb250RGVzY3JpcHRpb24oKTsKICAgICBmb250RGVzY3JpcHRp
b24uc2V0S2V5d29yZFNpemVGcm9tSWRlbnRpZmllcihDU1NWYWx1ZUludmFsaWQpOwpAQCAtMTYy
OSwyMSArMTYzMCwyMSBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFs
dWVGb250U2l6ZShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyUwogICAgIGJ1aWxkZXJTdGF0
ZS5zZXRGb250RGVzY3JpcHRpb24oV1RGTW92ZShmb250RGVzY3JpcHRpb24pKTsKIH0KIAotaW5s
aW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxHcmlkVGVtcGxhdGVBcmVh
cyhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVy
Q3VzdG9tOjphcHBseUluaXRpYWxHcmlkVGVtcGxhdGVBcmVhcyhCdWlsZGVyU3RhdGUmIGJ1aWxk
ZXJTdGF0ZSkKIHsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXROYW1lZEdyaWRBcmVhKFJl
bmRlclN0eWxlOjppbml0aWFsTmFtZWRHcmlkQXJlYSgpKTsKICAgICBidWlsZGVyU3RhdGUuc3R5
bGUoKS5zZXROYW1lZEdyaWRBcmVhUm93Q291bnQoUmVuZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdy
aWRBcmVhQ291bnQoKSk7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0TmFtZWRHcmlkQXJl
YUNvbHVtbkNvdW50KFJlbmRlclN0eWxlOjppbml0aWFsTmFtZWRHcmlkQXJlYUNvdW50KCkpOwog
fQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEdyaWRUZW1w
bGF0ZUFyZWFzKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lk
IEJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEdyaWRUZW1wbGF0ZUFyZWFzKEJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldE5hbWVkR3Jp
ZEFyZWEoYnVpbGRlclN0YXRlLnBhcmVudFN0eWxlKCkubmFtZWRHcmlkQXJlYSgpKTsKICAgICBi
dWlsZGVyU3RhdGUuc3R5bGUoKS5zZXROYW1lZEdyaWRBcmVhUm93Q291bnQoYnVpbGRlclN0YXRl
LnBhcmVudFN0eWxlKCkubmFtZWRHcmlkQXJlYVJvd0NvdW50KCkpOwogICAgIGJ1aWxkZXJTdGF0
ZS5zdHlsZSgpLnNldE5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudChidWlsZGVyU3RhdGUucGFyZW50
U3R5bGUoKS5uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoKSk7CiB9CiAKLWlubGluZSB2b2lkIFN0
eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUdyaWRUZW1wbGF0ZUFyZWFzKFN0eWxlOjpCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVp
bGRlckN1c3RvbTo6YXBwbHlWYWx1ZUdyaWRUZW1wbGF0ZUFyZWFzKEJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSkpIHsKICAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7CkBAIC0xNjU1LDggKzE2NTYsOCBA
QCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVHcmlkVGVtcGxhdGVB
cmVhcyhTdHlsZTo6QnVpbGRlclN0YXRlJgogCiAgICAgTmFtZWRHcmlkTGluZXNNYXAgbmFtZWRH
cmlkQ29sdW1uTGluZXMgPSBidWlsZGVyU3RhdGUuc3R5bGUoKS5uYW1lZEdyaWRDb2x1bW5MaW5l
cygpOwogICAgIE5hbWVkR3JpZExpbmVzTWFwIG5hbWVkR3JpZFJvd0xpbmVzID0gYnVpbGRlclN0
YXRlLnN0eWxlKCkubmFtZWRHcmlkUm93TGluZXMoKTsKLSAgICBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXI6OmNyZWF0ZUltcGxpY2l0TmFtZWRHcmlkTGluZXNGcm9tR3JpZEFyZWEobmV3TmFtZWRHcmlk
QXJlYXMsIG5hbWVkR3JpZENvbHVtbkxpbmVzLCBGb3JDb2x1bW5zKTsKLSAgICBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNyZWF0ZUltcGxpY2l0TmFtZWRHcmlkTGluZXNGcm9tR3JpZEFyZWEobmV3
TmFtZWRHcmlkQXJlYXMsIG5hbWVkR3JpZFJvd0xpbmVzLCBGb3JSb3dzKTsKKyAgICBCdWlsZGVy
Q29udmVydGVyOjpjcmVhdGVJbXBsaWNpdE5hbWVkR3JpZExpbmVzRnJvbUdyaWRBcmVhKG5ld05h
bWVkR3JpZEFyZWFzLCBuYW1lZEdyaWRDb2x1bW5MaW5lcywgRm9yQ29sdW1ucyk7CisgICAgQnVp
bGRlckNvbnZlcnRlcjo6Y3JlYXRlSW1wbGljaXROYW1lZEdyaWRMaW5lc0Zyb21HcmlkQXJlYShu
ZXdOYW1lZEdyaWRBcmVhcywgbmFtZWRHcmlkUm93TGluZXMsIEZvclJvd3MpOwogICAgIGJ1aWxk
ZXJTdGF0ZS5zdHlsZSgpLnNldE5hbWVkR3JpZENvbHVtbkxpbmVzKG5hbWVkR3JpZENvbHVtbkxp
bmVzKTsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXROYW1lZEdyaWRSb3dMaW5lcyhuYW1l
ZEdyaWRSb3dMaW5lcyk7CiAKQEAgLTE2NjUsMTQgKzE2NjYsMTQgQEAgaW5saW5lIHZvaWQgU3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlR3JpZFRlbXBsYXRlQXJlYXMoU3R5bGU6OkJ1aWxk
ZXJTdGF0ZSYKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXROYW1lZEdyaWRBcmVhQ29sdW1u
Q291bnQoZ3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5jb2x1bW5Db3VudCgpKTsKIH0KIAotaW5saW5l
IHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxHcmlkVGVtcGxhdGVDb2x1bW5z
KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJD
dXN0b206OmFwcGx5SW5pdGlhbEdyaWRUZW1wbGF0ZUNvbHVtbnMoQnVpbGRlclN0YXRlJiBidWls
ZGVyU3RhdGUpCiB7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0R3JpZENvbHVtbnMoUmVu
ZGVyU3R5bGU6OmluaXRpYWxHcmlkQ29sdW1ucygpKTsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUo
KS5zZXROYW1lZEdyaWRDb2x1bW5MaW5lcyhSZW5kZXJTdHlsZTo6aW5pdGlhbE5hbWVkR3JpZENv
bHVtbkxpbmVzKCkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldE9yZGVyZWROYW1lZEdy
aWRDb2x1bW5MaW5lcyhSZW5kZXJTdHlsZTo6aW5pdGlhbE9yZGVyZWROYW1lZEdyaWRDb2x1bW5M
aW5lcygpKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVy
aXRHcmlkVGVtcGxhdGVDb2x1bW5zKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkK
K2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEdyaWRUZW1wbGF0ZUNvbHVt
bnMoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxl
KCkuc2V0R3JpZENvbHVtbnMoYnVpbGRlclN0YXRlLnBhcmVudFN0eWxlKCkuZ3JpZENvbHVtbnMo
KSk7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0TmFtZWRHcmlkQ29sdW1uTGluZXMoYnVp
bGRlclN0YXRlLnBhcmVudFN0eWxlKCkubmFtZWRHcmlkQ29sdW1uTGluZXMoKSk7CkBAIC0xNjkw
LDQ1ICsxNjkxLDQ1IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhl
cml0R3JpZFRlbXBsYXRlQ29sdW1ucyhTdHlsZTo6QnVpbGRlclN0CiAgICAgc3R5bGUuc2V0R3Jp
ZEF1dG9SZXBlYXQjI1RyYWNrVHlwZSMjc1R5cGUodHJhY2tzRGF0YS5tX2F1dG9SZXBlYXRUeXBl
KTsgXAogICAgIHN0eWxlLnNldEdyaWRBdXRvUmVwZWF0IyNUcmFja1R5cGUjI3NJbnNlcnRpb25Q
b2ludCh0cmFja3NEYXRhLm1fYXV0b1JlcGVhdEluc2VydGlvblBvaW50KTsKIAotaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlR3JpZFRlbXBsYXRlQ29sdW1ucyhTdHls
ZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2
b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVHcmlkVGVtcGxhdGVDb2x1bW5zKEJ1aWxkZXJT
dGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpUcmFja3NEYXRhIHRyYWNrc0RhdGE7Ci0gICAgaWYgKCFTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFja0xpc3QodmFsdWUsIHRyYWNrc0RhdGEsIGJ1aWxkZXJT
dGF0ZSkpCisgICAgQnVpbGRlckNvbnZlcnRlcjo6VHJhY2tzRGF0YSB0cmFja3NEYXRhOworICAg
IGlmICghQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFRyYWNrTGlzdCh2YWx1ZSwgdHJhY2tz
RGF0YSwgYnVpbGRlclN0YXRlKSkKICAgICAgICAgcmV0dXJuOwogICAgIGNvbnN0IE5hbWVkR3Jp
ZEFyZWFNYXAmIG5hbWVkR3JpZEFyZWFzID0gYnVpbGRlclN0YXRlLnN0eWxlKCkubmFtZWRHcmlk
QXJlYSgpOwogICAgIGlmICghbmFtZWRHcmlkQXJlYXMuaXNFbXB0eSgpKQotICAgICAgICBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUltcGxpY2l0TmFtZWRHcmlkTGluZXNGcm9tR3JpZEFy
ZWEobmFtZWRHcmlkQXJlYXMsIHRyYWNrc0RhdGEubV9uYW1lZEdyaWRMaW5lcywgRm9yQ29sdW1u
cyk7CisgICAgICAgIEJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUltcGxpY2l0TmFtZWRHcmlkTGlu
ZXNGcm9tR3JpZEFyZWEobmFtZWRHcmlkQXJlYXMsIHRyYWNrc0RhdGEubV9uYW1lZEdyaWRMaW5l
cywgRm9yQ29sdW1ucyk7CiAKICAgICBTRVRfVFJBQ0tTX0RBVEEodHJhY2tzRGF0YSwgYnVpbGRl
clN0YXRlLnN0eWxlKCksIENvbHVtbik7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlJbml0aWFsR3JpZFRlbXBsYXRlUm93cyhTdHlsZTo6QnVpbGRlclN0YXRlJiBi
dWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxHcmlk
VGVtcGxhdGVSb3dzKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGJ1aWxkZXJT
dGF0ZS5zdHlsZSgpLnNldEdyaWRSb3dzKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZFJvd3MoKSk7
CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0TmFtZWRHcmlkUm93TGluZXMoUmVuZGVyU3R5
bGU6OmluaXRpYWxOYW1lZEdyaWRSb3dMaW5lcygpKTsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUo
KS5zZXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxPcmRlcmVk
TmFtZWRHcmlkUm93TGluZXMoKSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlJbmhlcml0R3JpZFRlbXBsYXRlUm93cyhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWls
ZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRHcmlkVGVt
cGxhdGVSb3dzKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGJ1aWxkZXJTdGF0
ZS5zdHlsZSgpLnNldEdyaWRSb3dzKGJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLmdyaWRSb3dz
KCkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldE5hbWVkR3JpZFJvd0xpbmVzKGJ1aWxk
ZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLm5hbWVkR3JpZFJvd0xpbmVzKCkpOwogICAgIGJ1aWxkZXJT
dGF0ZS5zdHlsZSgpLnNldE9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyhidWlsZGVyU3RhdGUucGFy
ZW50U3R5bGUoKS5vcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoKSk7CiB9CiAKLWlubGluZSB2b2lk
IFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUdyaWRUZW1wbGF0ZVJvd3MoU3R5bGU6OkJ1
aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlR3JpZFRlbXBsYXRlUm93cyhCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewotICAgIFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6VHJhY2tzRGF0YSB0cmFja3NEYXRhOwotICAgIGlmICghU3R5bGVCdWlsZGVyQ29udmVydGVy
OjpjcmVhdGVHcmlkVHJhY2tMaXN0KHZhbHVlLCB0cmFja3NEYXRhLCBidWlsZGVyU3RhdGUpKQor
ICAgIEJ1aWxkZXJDb252ZXJ0ZXI6OlRyYWNrc0RhdGEgdHJhY2tzRGF0YTsKKyAgICBpZiAoIUJ1
aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFja0xpc3QodmFsdWUsIHRyYWNrc0RhdGEsIGJ1
aWxkZXJTdGF0ZSkpCiAgICAgICAgIHJldHVybjsKICAgICBjb25zdCBOYW1lZEdyaWRBcmVhTWFw
JiBuYW1lZEdyaWRBcmVhcyA9IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLm5hbWVkR3JpZEFyZWEoKTsK
ICAgICBpZiAoIW5hbWVkR3JpZEFyZWFzLmlzRW1wdHkoKSkKLSAgICAgICAgU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjcmVhdGVJbXBsaWNpdE5hbWVkR3JpZExpbmVzRnJvbUdyaWRBcmVhKG5hbWVk
R3JpZEFyZWFzLCB0cmFja3NEYXRhLm1fbmFtZWRHcmlkTGluZXMsIEZvclJvd3MpOworICAgICAg
ICBCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVJbXBsaWNpdE5hbWVkR3JpZExpbmVzRnJvbUdyaWRB
cmVhKG5hbWVkR3JpZEFyZWFzLCB0cmFja3NEYXRhLm1fbmFtZWRHcmlkTGluZXMsIEZvclJvd3Mp
OwogCiAgICAgU0VUX1RSQUNLU19EQVRBKHRyYWNrc0RhdGEsIGJ1aWxkZXJTdGF0ZS5zdHlsZSgp
LCBSb3cpOwogfQogCi12b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUFsdChTdHls
ZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK3ZvaWQgQnVp
bGRlckN1c3RvbTo6YXBwbHlWYWx1ZUFsdChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NT
VmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNTdHJpbmco
KSkKQEAgLTE3NTAsNyArMTc1MSw3IEBAIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZh
bHVlQWx0KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsCiAgICAgICAg
IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldENvbnRlbnRBbHRUZXh0KGVtcHR5QXRvbSgpKTsKIH0K
IAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2lsbENoYW5nZShT
dHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGlu
ZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXaWxsQ2hhbmdlKEJ1aWxkZXJTdGF0ZSYg
YnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSkpIHsKICAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlQXV0byk7CkBAIC0xNzc5LDEzICsxNzgw
LDEzIEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdpbGxDaGFu
Z2UoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlCiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCku
c2V0V2lsbENoYW5nZShXVEZNb3ZlKHdpbGxDaGFuZ2UpKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlU3Ryb2tlV2lkdGgoU3R5bGU6OkJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3Vz
dG9tOjphcHBseVZhbHVlU3Ryb2tlV2lkdGgoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENT
U1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRTdHJva2VXaWR0
aChTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgoYnVpbGRlclN0YXRlLCB2YWx1
ZSkpOworICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldFN0cm9rZVdpZHRoKEJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgoYnVpbGRlclN0YXRlLCB2YWx1ZSkpOwogICAgIGJ1aWxkZXJT
dGF0ZS5zdHlsZSgpLnNldEhhc0V4cGxpY2l0bHlTZXRTdHJva2VXaWR0aCh0cnVlKTsKIH0KIAot
aW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlU3Ryb2tlQ29sb3IoU3R5
bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUg
dm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlU3Ryb2tlQ29sb3IoQnVpbGRlclN0YXRlJiBi
dWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1
ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgaWYgKGJ1aWxkZXJT
dGF0ZS5hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSkKQEAgLTE3OTUsNyArMTc5Niw3IEBA
IGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVN0cm9rZUNvbG9yKFN0
eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkCiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0SGFz
RXhwbGljaXRseVNldFN0cm9rZUNvbG9yKHRydWUpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1
aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEN1c3RvbVByb3BlcnR5KFN0eWxlOjpCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5KiByZWdp
c3RlcmVkLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3Rv
bTo6YXBwbHlJbml0aWFsQ3VzdG9tUHJvcGVydHkoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUs
IGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSogcmVnaXN0ZXJlZCwgY29uc3QgQXRv
bVN0cmluZyYgbmFtZSkKIHsKICAgICBpZiAocmVnaXN0ZXJlZCAmJiByZWdpc3RlcmVkLT5pbml0
aWFsVmFsdWUoKSkgewogICAgICAgICBhdXRvIGluaXRpYWxWYWx1ZSA9IHJlZ2lzdGVyZWQtPmlu
aXRpYWxWYWx1ZUNvcHkoKTsKQEAgLTE4MDcsNyArMTgwOCw3IEBAIGlubGluZSB2b2lkIFN0eWxl
QnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsQ3VzdG9tUHJvcGVydHkoU3R5bGU6OkJ1aWxkZXJT
dGF0ZSYKICAgICBhcHBseVZhbHVlQ3VzdG9tUHJvcGVydHkoYnVpbGRlclN0YXRlLCByZWdpc3Rl
cmVkLCBpbnZhbGlkLmdldCgpKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseUluaGVyaXRDdXN0b21Qcm9wZXJ0eShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVy
U3RhdGUsIGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSogcmVnaXN0ZXJlZCwgY29u
c3QgQXRvbVN0cmluZyYgbmFtZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5o
ZXJpdEN1c3RvbVByb3BlcnR5KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NS
ZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkqIHJlZ2lzdGVyZWQsIGNvbnN0IEF0b21TdHJpbmcmIG5h
bWUpCiB7CiAgICAgYXV0byogcGFyZW50VmFsdWUgPSBidWlsZGVyU3RhdGUucGFyZW50U3R5bGUo
KS5pbmhlcml0ZWRDdXN0b21Qcm9wZXJ0aWVzKCkuZ2V0KG5hbWUpOwogICAgIGlmIChwYXJlbnRW
YWx1ZSAmJiAhKHJlZ2lzdGVyZWQgJiYgIXJlZ2lzdGVyZWQtPmluaGVyaXRzKSkKQEAgLTE4MTYs
NyArMTgxNyw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0
Q3VzdG9tUHJvcGVydHkoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYKICAgICAgICAgYXBwbHlJbml0aWFs
Q3VzdG9tUHJvcGVydHkoYnVpbGRlclN0YXRlLCByZWdpc3RlcmVkLCBuYW1lKTsKIH0KIAotaW5s
aW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ3VzdG9tUHJvcGVydHkoU3R5
bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9t
UHJvcGVydHkqIHJlZ2lzdGVyZWQsIENTU0N1c3RvbVByb3BlcnR5VmFsdWUmIHZhbHVlKQoraW5s
aW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUN1c3RvbVByb3BlcnR5KEJ1aWxkZXJT
dGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkqIHJl
Z2lzdGVyZWQsIENTU0N1c3RvbVByb3BlcnR5VmFsdWUmIHZhbHVlKQogewogICAgIEFTU0VSVCh2
YWx1ZS5pc1Jlc29sdmVkKCkpOwogICAgIGNvbnN0IGF1dG8mIG5hbWUgPSB2YWx1ZS5uYW1lKCk7
CkBAIC0xODI3LDQgKzE4MjgsNSBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5VmFsdWVDdXN0b21Qcm9wZXJ0eShTdHlsZTo6QnVpbGRlclN0YXRlJiBidQogICAgICAgICBi
dWlsZGVyU3RhdGUuc3R5bGUoKS5zZXROb25Jbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5h
bWUsIG1ha2VSZWYodmFsdWUpKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfQorfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJHZW5lcmF0ZWQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjJjM2RmOGIwNmMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJHZW5lcmF0ZWQuaApAQCAtMCww
ICsxLDQ0IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1ZhbHVlOworc3RydWN0IENTU1JlZ2lzdGVyZWRDdXN0
b21Qcm9wZXJ0eTsKKworbmFtZXNwYWNlIFN0eWxlIHsKK2NsYXNzIEJ1aWxkZXJTdGF0ZTsKKwor
Y2xhc3MgQnVpbGRlckdlbmVyYXRlZCB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgYXBwbHlQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBTdHlsZTo6QnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUmLCBi
b29sIGlzSW5pdGlhbCwgYm9vbCBpc0luaGVyaXQsIGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Q
cm9wZXJ0eSopOworfTsKKworfQorfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382449</attachid>
            <date>2019-10-31 04:08:33 -0700</date>
            <delta_ts>2019-10-31 04:16:33 -0700</delta_ts>
            <desc>patch</desc>
            <filename>style-builder-generated-rename-3.patch</filename>
            <type>text/plain</type>
            <size>162229</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNTVkOTU4NWFmNGMuLmI5ZDEwOTlhNjQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMTcyMyw3ICsxNzIzLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9IVFRQSGVhZGVyTmFtZXMuY3Bw
KQogCiAjIEdlbmVyYXRlIENTUyBwcm9wZXJ0eSBuYW1lcwogYWRkX2N1c3RvbV9jb21tYW5kKAot
ICAgIE9VVFBVVCAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ1NTUHJvcGVydGllcy5q
c29uICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9DU1NQcm9wZXJ0eU5hbWVzLmggJHtX
ZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NTU1Byb3BlcnR5TmFtZXMuY3BwICR7V2ViQ29y
ZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9DU1NQcm9wZXJ0eU5hbWVzLmdwZXJmICR7V2ViQ29yZV9E
RVJJVkVEX1NPVVJDRVNfRElSfS9TdHlsZUJ1aWxkZXIuY3BwICR7V2ViQ29yZV9ERVJJVkVEX1NP
VVJDRVNfRElSfS9TdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggJHtXZWJDb3JlX0RF
UklWRURfU09VUkNFU19ESVJ9L1N0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwCisg
ICAgT1VUUFVUICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9DU1NQcm9wZXJ0aWVzLmpz
b24gJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NTU1Byb3BlcnR5TmFtZXMuaCAke1dl
YkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ1NTUHJvcGVydHlOYW1lcy5jcHAgJHtXZWJDb3Jl
X0RFUklWRURfU09VUkNFU19ESVJ9L0NTU1Byb3BlcnR5TmFtZXMuZ3BlcmYgJHtXZWJDb3JlX0RF
UklWRURfU09VUkNFU19ESVJ9L1N0eWxlQnVpbGRlckdlbmVyYXRlZC5jcHAgJHtXZWJDb3JlX0RF
UklWRURfU09VUkNFU19ESVJ9L1N0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaCAke1dl
YkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9u
cy5jcHAKICAgICBNQUlOX0RFUEVOREVOQ1kgJHtXRUJDT1JFX0RJUn0vY3NzL21ha2Vwcm9wLnBs
CiAgICAgREVQRU5EUyAke1dlYkNvcmVfQ1NTX1BST1BFUlRZX05BTUVTfQogICAgIFdPUktJTkdf
RElSRUNUT1JZICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDRi
Y2JhZTc1NzI2Li5mYTU4MzMyNGIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0OCBAQAorMjAx
OS0xMC0zMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVu
YW1lIFN0eWxlQnVpbGRlciB0byBTdHlsZTo6QnVpbGRlckdlbmVyYXRlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNjczCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxzbyByZW5hbWUgdGhlIHJlbGF0
ZWQgU3R5a2VCdWlsZGVyQ3VzdG9tIGFuZCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIgY2xhc3Nlcwor
ICAgICAgICBhbmQgbW92ZSB0aGVtIHRvIHRoZSBTdHlsZSBuYW1lc3BhY2UgYW5kIGRpcmVjdG9y
eS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y2FsY3VsYXRlV2VpZ2h0UmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Y2Fs
Y3VsYXRlU3RyZXRjaFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZUl0YWxpY1Jh
bmdlKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y29tcHV0ZUZvbnRTZWxlY3Rpb25SZXF1ZXN0KToKKyAgICAgICAgKiBjc3MvQ1NTVG9TdHls
ZU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBGaWxsWFBvc2l0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxZUG9zaXRpb24p
OgorICAgICAgICAqIGNzcy9TdHlsZUJ1aWxkZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjc3Mv
bWFrZXByb3AucGw6CisgICAgICAgIChnZXRTY29wZUZvckZ1bmN0aW9uKToKKyAgICAgICAgKGdl
bmVyYXRlSW5pdGlhbFZhbHVlU2V0dGVyKToKKyAgICAgICAgKGdlbmVyYXRlSW5oZXJpdFZhbHVl
U2V0dGVyKToKKyAgICAgICAgKGdlbmVyYXRlVmFsdWVTZXR0ZXIpOgorICAgICAgICAqIGNzcy9w
YXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVy
dHlQYXJzZXI6OnBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBzdHls
ZS9Qcm9wZXJ0eUNhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlByb3BlcnR5
Q2FzY2FkZTo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgICogc3R5bGUvU3R5bGVCdWlsZGVyQ29u
dmVydGVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29u
dmVydGVyLmguCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydExlbmd0aE9yQXV0byk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydExlbmd0aFNpemluZyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0aE1heFNpemluZyk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRhYlNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDb21wdXRlZExlbmd0aCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVX
aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dFNwYWNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRUb1JhZGl1c0xlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydFJhZGl1cyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydFRvMTAwUGVyY2VudE1pbnVzTGVuZ3RoKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25lbnRY
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9z
aXRpb25Db21wb25lbnRZKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRPYmplY3RQb3NpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TnVtYmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TnVtYmVy
T3JBdXRvKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0V2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEJvcmRlckltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Qm9yZGVyTWFzayk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFN0eWxlSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUcmFuc2Zvcm0p
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OnVwZGF0ZUNvbG9y
U2NoZW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0Q29sb3JTY2hlbWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRTdHJpbmdPckF1dG8pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTdHJpbmdPck5vbmUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OnZhbHVlVG9FbXBoYXNpc1Bvc2l0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dEVtcGhhc2lz
UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRUZXh0QWxpZ24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRDbGlwUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydFJlc2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVSZXBldGl0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TWFycXVlZVNwZWVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UXVvdGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dFVuZGVybGlu
ZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0VGV4dFVuZGVybGluZU9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9uVGhpY2tuZXNzKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmVmbGVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEluaXRpYWxM
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRUZXh0U3Ryb2tlV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRMaW5lQm94Q29udGFpbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
QnVpbGRlckNvbnZlcnRlcjo6dmFsdWVUb0RlY29yYXRpb25Ta2lwKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dERlY29yYXRpb25Ta2lwKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2hhcGVW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dFNjcm9sbFNuYXBUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0U2Nyb2xsU25hcEFsaWduKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpC
dWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tCcmVhZHRoKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tTaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tMaXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlk
UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNy
ZWF0ZUltcGxpY2l0TmFtZWRHcmlkTGluZXNGcm9tR3JpZEFyZWEpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHcmlkVHJhY2tTaXplTGlzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRUcmFj
a1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRHcmlkUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRHcmlkQXV0b0Zsb3cpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxk
ZXJDb252ZXJ0ZXI6OmNzc3RvTGVuZ3RoQ29udmVyc2lvbkRhdGFXaXRoVGV4dFpvb21GYWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRXb3Jk
U3BhY2luZyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydFBlcnNwZWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0TWFycXVlZUluY3JlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZpbHRlck9wZXJhdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250RmVhdHVyZVNldHRpbmdz
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9u
dFdlaWdodEZyb21WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydEZvbnRTdHJldGNoRnJvbVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN0eWxlRnJvbVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFdlaWdodCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRT
dHJldGNoKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0Rm9udFZhcmlhdGlvblNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0VG91Y2hDYWxsb3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGFwSGlnaGxpZ2h0Q29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUb3VjaEFjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE92ZXJm
bG93U2Nyb2xsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0U1ZHTGVuZ3RoVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRTVkdMZW5ndGhWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTdHJva2VEYXNoQXJyYXkpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQYWludE9yZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0T3BhY2l0
eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNW
R1VSSVJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFNWR0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0U2VsZk9yRGVmYXVsdEFsaWdubWVudERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDb250ZW50QWxpZ25tZW50RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEds
eXBoT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRHbHlwaE9yaWVudGF0aW9uT3JBdXRvKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGluZUhlaWdodCk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRTeW50aGVzaXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTcGVha0FzKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0SGFuZ2lu
Z1B1bmN0dWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0R2FwTGVuZ3RoKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20u
aDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaC4K
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxXZWJr
aXRNYXNrSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFw
cGx5SW5oZXJpdFdlYmtpdE1hc2tJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVp
bGRlckN1c3RvbTo6YXBwbHlJbml0aWFsRm9udEZlYXR1cmVTZXR0aW5ncyk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Rm9udEZlYXR1cmVTZXR0
aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbml0
aWFsRm9udFZhcmlhdGlvblNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWls
ZGVyQ3VzdG9tOjphcHBseUluaGVyaXRGb250VmFyaWF0aW9uU2V0dGluZ3MpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVEaXJlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbFRleHRBbGln
bik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVRl
eHRBbGlnbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6cmVzZXRF
ZmZlY3RpdmVab29tKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjph
cHBseUluaXRpYWxab29tKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9t
OjphcHBseUluaGVyaXRab29tKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3Vz
dG9tOjphcHBseVZhbHVlWm9vbSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1
c3RvbTo6bW1MZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206
OmluY2hMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206Omdl
dFBhZ2VTaXplRnJvbU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0
b206OmFwcGx5VmFsdWVWZXJ0aWNhbEFsaWduKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpC
dWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRJbWFnZVJlc29sdXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEltYWdlUmVzb2x1dGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUltYWdl
UmVzb2x1dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBw
bHlJbmhlcml0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6
YXBwbHlJbml0aWFsU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3Rv
bTo6YXBwbHlWYWx1ZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0
b206OmFwcGx5SW5oZXJpdFRleHRJbmRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1
aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbFRleHRJbmRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVUZXh0SW5kZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpBcHBseVByb3BlcnR5Qm9yZGVySW1hZ2VNb2RpZmllcjo6YXBwbHlJbmhl
cml0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkFwcGx5UHJvcGVydHlCb3JkZXJJ
bWFnZU1vZGlmaWVyOjphcHBseUluaXRpYWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6QXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlTW9kaWZpZXI6OmFwcGx5VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdExpbmVIZWlnaHQp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbExp
bmVIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5
VmFsdWVMaW5lSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9t
OjphcHBseUluaGVyaXRPdXRsaW5lU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1
aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbE91dGxpbmVTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZU91dGxpbmVTdHlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsQ2xpcCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Q2xpcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNsaXApOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRM
b2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFs
dWVXcml0aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6
YXBwbHlWYWx1ZVdlYmtpdFRleHRPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdFRleHRTaXplQWRqdXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0VGV4dFpv
b20pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVD
b2xvclNjaGVtZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBw
bHlUZXh0T3JCb3hTaGFkb3dWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRl
ckN1c3RvbTo6YXBwbHlJbml0aWFsVGV4dFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0VGV4dFNoYWRvdyk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVRleHRTaGFkb3cpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEJveFNoYWRvdyk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Qm94
U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZh
bHVlQm94U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjph
cHBseUluaXRpYWxXZWJraXRCb3hTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1
aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFdlYmtpdEJveFNoYWRvdyk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdEJveFNoYWRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsRm9udEZh
bWlseSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhl
cml0Rm9udEZhbWlseSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6
YXBwbHlWYWx1ZUZvbnRGYW1pbHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJD
dXN0b206OmlzVmFsaWREaXNwbGF5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1
aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQmFzZWxpbmVTaGlmdCk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsV2Via2l0QXNwZWN0
UmF0aW8pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5o
ZXJpdFdlYmtpdEFzcGVjdFJhdGlvKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVy
Q3VzdG9tOjphcHBseVZhbHVlV2Via2l0QXNwZWN0UmF0aW8pOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbFdlYmtpdFRleHRFbXBoYXNpc1N0eWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRX
ZWJraXRUZXh0RW1waGFzaXNTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRDb3VudGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ291bnRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsQ291bnRl
ckluY3JlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBw
bHlJbmhlcml0Q291bnRlckluY3JlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVp
bGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvdW50ZXJJbmNyZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbENvdW50ZXJSZXNldCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Q291bnRlclJl
c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVl
Q291bnRlclJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjph
cHBseUluaXRpYWxDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0
b206OmFwcGx5SW5oZXJpdEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVp
bGRlckN1c3RvbTo6YXBwbHlJbml0aWFsRmlsbCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0RmlsbCk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZpbGwpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbFN0cm9rZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0U3Ryb2tlKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlU3Ryb2tlKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxDb250ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRDb250ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ29u
dGVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhl
cml0Rm9udFZhcmlhbnRMaWdhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxk
ZXJDdXN0b206OmFwcGx5SW5pdGlhbEZvbnRWYXJpYW50TGlnYXR1cmVzKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRm9udFZhcmlhbnRMaWdhdHVy
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJp
dEZvbnRWYXJpYW50TnVtZXJpYyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1
c3RvbTo6YXBwbHlJbml0aWFsRm9udFZhcmlhbnROdW1lcmljKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRm9udFZhcmlhbnROdW1lcmljKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRGb250VmFy
aWFudEVhc3RBc2lhbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6
YXBwbHlJbml0aWFsRm9udFZhcmlhbnRFYXN0QXNpYW4pOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVGb250VmFyaWFudEVhc3RBc2lhbik6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsRm9udFNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEZv
bnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjpsYXJnZXJG
b250U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6c21hbGxl
ckZvbnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjpkZXRl
cm1pbmVSdWJ5VGV4dFNpemVNdWx0aXBsaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpC
dWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxGb250U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEZvbnRTdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZvbnRTdHlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZvbnRTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxHcmlk
VGVtcGxhdGVBcmVhcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6
YXBwbHlJbmhlcml0R3JpZFRlbXBsYXRlQXJlYXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVHcmlkVGVtcGxhdGVBcmVhcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsR3JpZFRlbXBsYXRlQ29s
dW1ucyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhl
cml0R3JpZFRlbXBsYXRlQ29sdW1ucyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZUdyaWRUZW1wbGF0ZUNvbHVtbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEdyaWRUZW1wbGF0ZVJvd3MpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEdyaWRU
ZW1wbGF0ZVJvd3MpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFw
cGx5VmFsdWVHcmlkVGVtcGxhdGVSb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWls
ZGVyQ3VzdG9tOjphcHBseVZhbHVlQWx0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWls
ZGVyQ3VzdG9tOjphcHBseVZhbHVlV2lsbENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVN0cm9rZVdpZHRoKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlU3Ryb2tlQ29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEN1c3RvbVByb3Bl
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVy
aXRDdXN0b21Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3Rv
bTo6YXBwbHlWYWx1ZUN1c3RvbVByb3BlcnR5KToKKyAgICAgICAgKiBzdHlsZS9TdHlsZUJ1aWxk
ZXJHZW5lcmF0ZWQuaDogQWRkZWQuCisKIDIwMTktMTAtMzAgIFBlbmcgTGl1ICA8cGVuZy5saXU2
QGFwcGxlLmNvbT4KIAogICAgICAgICBbUGljdHVyZS1pbi1QaWN0dXJlIFdlYiBBUEldIEVuYWJs
ZSB0aGUgc3VwcG9ydCBmb3IgaU9TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAx
OGI5ODAyOTEzOS4uMTYxNzRlNWE5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpA
QCAtMTI4OSw3ICsxMjg5LDcgQEAgYWxsIDogXAogICAgIFNWR05hbWVzLmggXAogICAgIFNlbGVj
dG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudE1hcC5jcHAgXAogICAgIFNlbGVj
dG9yUHNldWRvRWxlbWVudFR5cGVNYXAuY3BwIFwKLSAgICBTdHlsZUJ1aWxkZXIuY3BwIFwKKyAg
ICBTdHlsZUJ1aWxkZXJHZW5lcmF0ZWQuY3BwIFwKICAgICBTdHlsZVByb3BlcnR5U2hvcnRoYW5k
RnVuY3Rpb25zLmNwcCBcCiAgICAgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oIFwK
ICAgICBVc2VyQWdlbnRTdHlsZVNoZWV0cy5oIFwKQEAgLTEzMzgsNyArMTMzOCw3IEBAIFdFQkNP
UkVfQ1NTX1ZBTFVFX0tFWVdPUkRTIDo9ICQoV0VCQ09SRV9DU1NfVkFMVUVfS0VZV09SRFMpICQo
V2ViQ29yZSkvY3NzL1NWR0NTCiBDU1NfUFJPUEVSVFlfTkFNRV9GSUxFUyA9IFwKICAgICBDU1NQ
cm9wZXJ0eU5hbWVzLmNwcCBcCiAgICAgQ1NTUHJvcGVydHlOYW1lcy5oIFwKLSAgICBTdHlsZUJ1
aWxkZXIuY3BwIFwKKyAgICBTdHlsZUJ1aWxkZXJHZW5lcmF0ZWQuY3BwIFwKICAgICBTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmNwcCBcCiAgICAgU3R5bGVQcm9wZXJ0eVNob3J0aGFu
ZEZ1bmN0aW9ucy5oIFwKICMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggM2RjOGJmMTYzNDEuLjZlOGNlNzRh
NWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjYwMiw3ICsyNjAyLDcgQEAgSFRNTEVudGl0eVRhYmxl
LmNwcAogTWF0aE1MRWxlbWVudEZhY3RvcnkuY3BwCiBQbHVnSW5zUmVzb3VyY2VzRGF0YS5jcHAK
IFNWR0VsZW1lbnRGYWN0b3J5LmNwcAotU3R5bGVCdWlsZGVyLmNwcAorU3R5bGVCdWlsZGVyR2Vu
ZXJhdGVkLmNwcAogU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHAKIFVzZXJBZ2Vu
dFN0eWxlU2hlZXRzRGF0YS5jcHAKIFdlYkNvcmVKU0J1aWx0aW5JbnRlcm5hbHMuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
NzI5MzAzODE1YWUuLjZjY2U1NThkOGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNDE2LDcgKzI0MTYsNiBAQAogCQk4MzdB
ODAxMzFFMUUxMjczMDAwMjZCOUYgLyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgaW4gUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzN0E4MDExMUUxRTEyNzMw
MDAyNkI5RiAvKiBMb2NhbGl6YWJsZS5zdHJpbmdzZGljdCAqLzsgfTsKIAkJODM3RDQ2MjcxRkEy
QThDRTAwNTRFMUZBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdENDYyNTFGQTJBOEM1MDA1
NEUxRkEgLyogU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4MzdGQjM0NTFGOUVBMDZEMDBEMEZD
MzEgLyogRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODM3RkIzNDAxRjlFQTA2NjAwRDBGQzMxIC8qIEV4dGVuZGFi
bGVNZXNzYWdlRXZlbnQuaCAqLzsgfTsKLQkJODM4NkE5NkQxOUY2MUIyRTAwRTFFQzRBIC8qIFN0
eWxlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODM4NkE5NkMxOUY2MUIyRTAwRTFFQzRBIC8qIFN0eWxlQnVpbGRlci5oICovOyB9OwogCQk4
Mzg4NjczNTFEMTNCQTVGMDAzNjk3RDAgLyogUmVuZGVyT2JqZWN0RW51bXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzODg2NzM0MUQxM0JBNTkwMDM2
OTdEMCAvKiBSZW5kZXJPYmplY3RFbnVtcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTgzOENBNkJEMUZDMERGRTkwMDVEOUZBNSAvKiBTZXJ2aWNl
V29ya2VySm9iRGF0YUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzOENBNkJCMUZDMERGREQwMDVEOUZBNSAvKiBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk4MzhFRjUzODFEQzE0OUUyMDA4RjBDMzkgLyogSURCVHJhbnNhY3Rpb25N
b2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzhF
RjUzNjFEQzE0OURBMDA4RjBDMzkgLyogSURCVHJhbnNhY3Rpb25Nb2RlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ4NDMsNiArNDg0Miw3IEBA
CiAJCUU0QUJBQkU0MjM2MUEzMjkwMEZBNDM0NSAvKiBQcm9wZXJ0eUNhc2NhZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QUJBQkUyMjM2MUEzMjkw
MEZBNDM0NSAvKiBQcm9wZXJ0eUNhc2NhZGUuaCAqLzsgfTsKIAkJRTRBQkFCRjMyMzY4Qjk1OTAw
RkE0MzQ1IC8qIFN0eWxlQnVpbGRlclN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNEFCQUJGMjIzNjhCOTU4MDBGQTQzNDUgLyogU3R5bGVCdWls
ZGVyU3RhdGUuaCAqLzsgfTsKIAkJRTRBQkFCRjUyMzY4QzZFRjAwRkE0MzQ1IC8qIENhc2NhZGVM
ZXZlbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRB
QkFCRjQyMzY4QzZFRjAwRkE0MzQ1IC8qIENhc2NhZGVMZXZlbC5oICovOyB9OworCQlFNEFCQUMw
NDIzNkFFOTU5MDBGQTQzNDUgLyogU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEFCQUMwMjIzNkFFOTU4MDBGQTQz
NDUgLyogU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmggKi87IH07CiAJCUU0QUU3QzE2MTdEMUJCOTUw
MDA5RkIzMSAvKiBFbGVtZW50SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEU0QUU3QzE1MTdEMUJCOTUwMDA5RkIzMSAvKiBFbGVtZW50SXRl
cmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFNEFFN0MxQTE3RDIzMjM1MDAwOUZCMzEgLyogRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QUU3QzE5MTdE
MjMyMzUwMDA5RkIzMSAvKiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0QUZDRkE1MERBRjI5QTMwMEY1
RjU1QyAvKiBVbml0QmV6aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNEFGQ0ZBNDBEQUYyOUEzMDBGNUY1NUMgLyogVW5pdEJlemllci5oICovOyB9
OwpAQCAtMTAxNzcsOCArMTAxNzcsNyBAQAogCQk4MzdGQjM0MDFGOUVBMDY2MDBEMEZDMzEgLyog
RXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzN0ZCMzQyMUY5RUEwNjcwMEQwRkMzMSAvKiBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4dGVuZGFibGVNZXNzYWdlRXZl
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzdGQjM0MzFGOUVBMDY4MDBE
MEZDMzEgLyogRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTgzODZBOTZDMTlGNjFCMkUwMEUxRUM0QSAvKiBTdHlsZUJ1aWxkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTgzODZBOTZFMTlGNjFFNEYwMEUxRUM0QSAvKiBTdHlsZUJ1aWxkZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3R5bGVCdWlsZGVyLmNwcDsg
cGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvU3R5bGVCdWlsZGVyLmNwcDsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJODM4NkE5NkUxOUY2MUU0RjAwRTFFQzRBIC8q
IFN0eWxlQnVpbGRlckdlbmVyYXRlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBTdHlsZUJ1aWxkZXJHZW5lcmF0ZWQuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9TdHlsZUJ1aWxkZXJHZW5lcmF0ZWQuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OwogCQk4Mzg4NjczNDFEMTNCQTU5MDAzNjk3RDAgLyogUmVuZGVyT2JqZWN0
RW51bXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyT2JqZWN0RW51
bXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM4ODY5RUIxQ0U4MUU5RTAwRDE2
QTlFIC8qIEpTVGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1RleHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzhD
QTZCQjFGQzBERkREMDA1RDlGQTUgLyogU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRl
bnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUxODAsNiArMTUxNzks
NyBAQAogCQlFNEFCQUJGMDIzNjhCOTE4MDBGQTQzNDUgLyogU3R5bGVCdWlsZGVyU3RhdGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU3R5bGVCdWlsZGVyU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFNEFCQUJGMjIzNjhCOTU4MDBGQTQzNDUgLyogU3R5bGVCdWlsZGVy
U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVCdWlsZGVyU3Rh
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRBQkFCRjQyMzY4QzZFRjAwRkE0
MzQ1IC8qIENhc2NhZGVMZXZlbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YXNjYWRlTGV2ZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTRBQkFDMDIyMzZB
RTk1ODAwRkE0MzQ1IC8qIFN0eWxlQnVpbGRlckdlbmVyYXRlZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdHlsZUJ1aWxkZXJHZW5lcmF0ZWQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTRBRTdDMTUxN0QxQkI5NTAwMDlGQjMxIC8qIEVsZW1lbnRJdGVyYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbGVtZW50SXRlcmF0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRBRTdDMTkxN0QyMzIzNTAwMDlGQjMxIC8q
IEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUU0QUZDRkE0MERBRjI5QTMwMEY1RjU1QyAvKiBVbml0QmV6aWVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuaXRCZXppZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIwMTU3LDcgKzIwMTU3LDcgQEAKIAkJCQk3Q0VCNTdFOTFGOTU2NTE1MDAwOTdB
RUMgLyogU2V0dGluZ3MuaCAqLywKIAkJCQk5OTA4QjBGRDFCQ0FEMDdEMDBFRDBGNTUgLyogU3Ry
ZWFtSW50ZXJuYWxzQnVpbHRpbnMuY3BwICovLAogCQkJCTlCMDNEODA2MUJCMzExMEQwMEI3NjRD
OSAvKiBTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovLAotCQkJCTgzODZBOTZFMTlGNjFFNEYw
MEUxRUM0QSAvKiBTdHlsZUJ1aWxkZXIuY3BwICovLAorCQkJCTgzODZBOTZFMTlGNjFFNEYwMEUx
RUM0QSAvKiBTdHlsZUJ1aWxkZXJHZW5lcmF0ZWQuY3BwICovLAogCQkJCTgzQzA1QTU4MUE2ODYy
MTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmNwcCAqLywKIAkJ
CQk4M0MwNUE1OTFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0
aW9ucy5oICovLAogCQkJCTY1NjU4MUU2MDlEMTUwOEQwMDBFNjFENyAvKiBTVkdFbGVtZW50RmFj
dG9yeS5jcHAgKi8sCkBAIC0yNjk1OCw2ICsyNjk1OCw5IEBACiAJCQkJMUMwMTA2RkYxOTI1OTRE
RjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oICovLAogCQkJCUU0QUJBQkU1MjM2MUEz
NDIwMEZBNDM0NSAvKiBQcm9wZXJ0eUNhc2NhZGUuY3BwICovLAogCQkJCUU0QUJBQkUyMjM2MUEz
MjkwMEZBNDM0NSAvKiBQcm9wZXJ0eUNhc2NhZGUuaCAqLywKKwkJCQk4M0I5Njg3OTE5RjhBQjgz
MDA0RUY3QUYgLyogU3R5bGVCdWlsZGVyQ29udmVydGVyLmggKi8sCisJCQkJODM1RDM2MzYxOUZG
NjE5MzAwNEM5M0FCIC8qIFN0eWxlQnVpbGRlckN1c3RvbS5oICovLAorCQkJCUU0QUJBQzAyMjM2
QUU5NTgwMEZBNDM0NSAvKiBTdHlsZUJ1aWxkZXJHZW5lcmF0ZWQuaCAqLywKIAkJCQlFNEFCQUJG
MDIzNjhCOTE4MDBGQTQzNDUgLyogU3R5bGVCdWlsZGVyU3RhdGUuY3BwICovLAogCQkJCUU0QUJB
QkYyMjM2OEI5NTgwMEZBNDM0NSAvKiBTdHlsZUJ1aWxkZXJTdGF0ZS5oICovLAogCQkJCUU0MDFF
MEE1MUMzQzBDRjcwMEYzNEQxMCAvKiBTdHlsZUNoYW5nZS5jcHAgKi8sCkBAIC0yNzM3MCw5ICsy
NzM3Myw2IEBACiAJCQkJNDNCODVFRDYxOENCRUM5NzAwRTMxQUY0IC8qIFNlbGVjdG9yUHNldWRv
Q2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudE1hcC5pbiAqLywKIAkJCQkyNkFBMEY5QTE4RDI5
NzNEMDA0MTkzODEgLyogU2VsZWN0b3JQc2V1ZG9FbGVtZW50VHlwZU1hcC5pbiAqLywKIAkJCQk0
MzEwN0JFMTE4Q0MxOURFMDBDQzE4RTggLyogU2VsZWN0b3JQc2V1ZG9UeXBlTWFwLmggKi8sCi0J
CQkJODM4NkE5NkMxOUY2MUIyRTAwRTFFQzRBIC8qIFN0eWxlQnVpbGRlci5oICovLAotCQkJCTgz
Qjk2ODc5MTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCAqLywKLQkJ
CQk4MzVEMzYzNjE5RkY2MTkzMDA0QzkzQUIgLyogU3R5bGVCdWlsZGVyQ3VzdG9tLmggKi8sCiAJ
CQkJOTQxODI3ODgxRDhCMjQyMjAwNDkyNzY0IC8qIFN0eWxlQ29sb3IuY3BwICovLAogCQkJCTk0
MTgyNzg5MUQ4QjI0MjIwMDQ5Mjc2NCAvKiBTdHlsZUNvbG9yLmggKi8sCiAJCQkJMEZGNTAyNkUx
MDJCQTk2NjAwNjZGMzlBIC8qIFN0eWxlTWVkaWEuY3BwICovLApAQCAtMzIxNDIsNyArMzIxNDIs
NiBAQAogCQkJCTQxNEI4MjA1MUQ2REYwRTUwMDc3RUJFMyAvKiBTdHJ1Y3R1cmVkQ2xvbmUuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDNUVCNkEzMEU4MURDNEYwMEIyNTk2NSAvKiBTdHlsZUJhY2tn
cm91bmREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjY3QjBFODFEM0JFMDBCMjU5NjUg
LyogU3R5bGVCb3hEYXRhLmggaW4gSGVhZGVycyAqLywKLQkJCQk4Mzg2QTk2RDE5RjYxQjJFMDBF
MUVDNEEgLyogU3R5bGVCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0I5Njg3QjE5RjhB
QjgzMDA0RUY3QUYgLyogU3R5bGVCdWlsZGVyQ29udmVydGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4MzVEMzYzNzE5RkY2MTkzMDA0QzkzQUIgLyogU3R5bGVCdWlsZGVyQ3VzdG9tLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFNEFCQUJGMzIzNjhCOTU5MDBGQTQzNDUgLyogU3R5bGVCdWlsZGVyU3Rh
dGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzIzNDgsNiArMzIzNDcsNyBAQAogCQkJCTA4NTRCMDIz
MTI1NUU0RTYwMEI5Q0REMCAvKiBTVkdSb290SW5saW5lQm94LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMjIyN0FBMzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU2NyaXB0RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjIyMjdBQTYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1NldEVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCUU0QUJBQzA0MjM2QUU5NTkwMEZBNDM0NSAvKiBTdHlsZUJ1aWxk
ZXJHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QUZEMDEwMERBRjMzNTUwMEY1RjU1
QyAvKiBTVkdTTUlMRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBQTkwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR1N0b3BFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FB
QzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3RyaW5nTGlzdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAppbmRleCBmMWJjZTA3MDEwOC4uM2E2NDYyMjhiMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcApAQCAtMTM4LDE0ICsxMzgsMTQgQEAgc3RhdGlj
IEZvbnRTZWxlY3Rpb25SYW5nZSBjYWxjdWxhdGVXZWlnaHRSYW5nZShDU1NWYWx1ZSYgdmFsdWUp
CiAgICAgICAgIEFTU0VSVCh2YWx1ZUxpc3QuaXRlbSgxKS0+aXNQcmltaXRpdmVWYWx1ZSgpKTsK
ICAgICAgICAgYXV0byYgdmFsdWUwID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1
ZUxpc3QuaXRlbSgwKSk7CiAgICAgICAgIGF1dG8mIHZhbHVlMSA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPigqdmFsdWVMaXN0Lml0ZW0oMSkpOwotICAgICAgICBhdXRvIHJlc3VsdDAgPSBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250V2VpZ2h0RnJvbVZhbHVlKHZhbHVlMCk7
Ci0gICAgICAgIGF1dG8gcmVzdWx0MSA9IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZv
bnRXZWlnaHRGcm9tVmFsdWUodmFsdWUxKTsKKyAgICAgICAgYXV0byByZXN1bHQwID0gU3R5bGU6
OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250V2VpZ2h0RnJvbVZhbHVlKHZhbHVlMCk7Cisg
ICAgICAgIGF1dG8gcmVzdWx0MSA9IFN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9u
dFdlaWdodEZyb21WYWx1ZSh2YWx1ZTEpOwogICAgICAgICByZXR1cm4geyByZXN1bHQwLCByZXN1
bHQxIH07CiAgICAgfQogCiAgICAgQVNTRVJUKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkp
OwogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKTsKLSAgICBGb250U2VsZWN0aW9uVmFsdWUgcmVzdWx0ID0gU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0Rm9udFdlaWdodEZyb21WYWx1ZShwcmltaXRpdmVWYWx1ZSk7CisgICAg
Rm9udFNlbGVjdGlvblZhbHVlIHJlc3VsdCA9IFN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0Rm9udFdlaWdodEZyb21WYWx1ZShwcmltaXRpdmVWYWx1ZSk7CiAgICAgcmV0dXJuIHsgcmVz
dWx0LCByZXN1bHQgfTsKIH0KIApAQCAtMTc2LDE0ICsxNzYsMTQgQEAgc3RhdGljIEZvbnRTZWxl
Y3Rpb25SYW5nZSBjYWxjdWxhdGVTdHJldGNoUmFuZ2UoQ1NTVmFsdWUmIHZhbHVlKQogICAgICAg
ICBBU1NFUlQodmFsdWVMaXN0Lml0ZW0oMSktPmlzUHJpbWl0aXZlVmFsdWUoKSk7CiAgICAgICAg
IGF1dG8mIHZhbHVlMCA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWVMaXN0Lml0
ZW0oMCkpOwogICAgICAgICBhdXRvJiB2YWx1ZTEgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4oKnZhbHVlTGlzdC5pdGVtKDEpKTsKLSAgICAgICAgYXV0byByZXN1bHQwID0gU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN0cmV0Y2hGcm9tVmFsdWUodmFsdWUwKTsKLSAgICAg
ICAgYXV0byByZXN1bHQxID0gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN0cmV0
Y2hGcm9tVmFsdWUodmFsdWUxKTsKKyAgICAgICAgYXV0byByZXN1bHQwID0gU3R5bGU6OkJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250U3RyZXRjaEZyb21WYWx1ZSh2YWx1ZTApOworICAgICAg
ICBhdXRvIHJlc3VsdDEgPSBTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRTdHJl
dGNoRnJvbVZhbHVlKHZhbHVlMSk7CiAgICAgICAgIHJldHVybiB7IHJlc3VsdDAsIHJlc3VsdDEg
fTsKICAgICB9CiAKICAgICBBU1NFUlQoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSk7CiAg
ICAgY29uc3QgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpOwotICAgIEZvbnRTZWxlY3Rpb25WYWx1ZSByZXN1bHQgPSBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRGb250U3RyZXRjaEZyb21WYWx1ZShwcmltaXRpdmVWYWx1ZSk7Cisg
ICAgRm9udFNlbGVjdGlvblZhbHVlIHJlc3VsdCA9IFN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0Rm9udFN0cmV0Y2hGcm9tVmFsdWUocHJpbWl0aXZlVmFsdWUpOwogICAgIHJldHVybiB7
IHJlc3VsdCwgcmVzdWx0IH07CiB9CiAKQEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lkIENTU0ZvbnRG
YWNlOjpzZXRTdHJldGNoKENTU1ZhbHVlJiBzdHlsZSkKIHN0YXRpYyBGb250U2VsZWN0aW9uUmFu
Z2UgY2FsY3VsYXRlSXRhbGljUmFuZ2UoQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmICh2YWx1
ZS5pc0ZvbnRTdHlsZVZhbHVlKCkpIHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250U3R5bGVGcm9tVmFsdWUodmFsdWUpOworICAgICAgICBh
dXRvIHJlc3VsdCA9IFN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN0eWxlRnJv
bVZhbHVlKHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHsgcmVzdWx0LnZhbHVlT3Iobm9ybWFsSXRh
bGljVmFsdWUoKSksIHJlc3VsdC52YWx1ZU9yKG5vcm1hbEl0YWxpY1ZhbHVlKCkpIH07CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcAppbmRleCAxOGU4MzRkNjkwYS4u
ZTMwYzY0NWEyNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcApAQCAtMzE0
LDkgKzMxNCw5IEBAIHN0YXRpYyBGb250U2VsZWN0aW9uUmVxdWVzdCBjb21wdXRlRm9udFNlbGVj
dGlvblJlcXVlc3QoTXV0YWJsZVN0eWxlUHJvcGVydGllcyYKICAgICBpZiAoIXN0eWxlVmFsdWUp
CiAgICAgICAgIHN0eWxlVmFsdWUgPSBDU1NGb250U3R5bGVWYWx1ZTo6Y3JlYXRlKENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFsKSk7
CiAKLSAgICBhdXRvIHdlaWdodFNlbGVjdGlvblZhbHVlID0gU3R5bGVCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0Rm9udFdlaWdodEZyb21WYWx1ZSgqd2VpZ2h0VmFsdWUpOwotICAgIGF1dG8gc3Ry
ZXRjaFNlbGVjdGlvblZhbHVlID0gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN0
cmV0Y2hGcm9tVmFsdWUoKnN0cmV0Y2hWYWx1ZSk7Ci0gICAgYXV0byBzdHlsZVNlbGVjdGlvblZh
bHVlID0gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN0eWxlRnJvbVZhbHVlKCpz
dHlsZVZhbHVlKTsKKyAgICBhdXRvIHdlaWdodFNlbGVjdGlvblZhbHVlID0gU3R5bGU6OkJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250V2VpZ2h0RnJvbVZhbHVlKCp3ZWlnaHRWYWx1ZSk7Cisg
ICAgYXV0byBzdHJldGNoU2VsZWN0aW9uVmFsdWUgPSBTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydEZvbnRTdHJldGNoRnJvbVZhbHVlKCpzdHJldGNoVmFsdWUpOworICAgIGF1dG8gc3R5
bGVTZWxlY3Rpb25WYWx1ZSA9IFN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN0
eWxlRnJvbVZhbHVlKCpzdHlsZVZhbHVlKTsKIAogICAgIHJldHVybiB7IHdlaWdodFNlbGVjdGlv
blZhbHVlLCBzdHJldGNoU2VsZWN0aW9uVmFsdWUsIHN0eWxlU2VsZWN0aW9uVmFsdWUgfTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcAppbmRleCA2MzNmMmI1OGY3MC4uNzkzZGI0
N2JkOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAKQEAgLTIzMSw5ICsyMzEs
OSBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxYUG9zaXRpb24oQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0eUlELCBGaWxsTGF5ZXImIGxheWVyLAogICAgIExlbmd0aCBsZW5ndGg7CiAgICAgaWYg
KHBhaXIpIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChwcm9wZXJ0eUlELCBwcm9wZXJ0eUlEID09
IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCB8fCBwcm9wZXJ0eUlEID09IENTU1Byb3Bl
cnR5V2Via2l0TWFza1Bvc2l0aW9uWCk7Ci0gICAgICAgIGxlbmd0aCA9IFN0eWxlQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydExlbmd0aChtX2J1aWxkZXJTdGF0ZSwgKnBhaXItPnNlY29uZCgpKTsK
KyAgICAgICAgbGVuZ3RoID0gU3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgo
bV9idWlsZGVyU3RhdGUsICpwYWlyLT5zZWNvbmQoKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGxl
bmd0aCA9IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBvc2l0aW9uQ29tcG9uZW50WCht
X2J1aWxkZXJTdGF0ZSwgdmFsdWUpOworICAgICAgICBsZW5ndGggPSBTdHlsZTo6QnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydFBvc2l0aW9uQ29tcG9uZW50WChtX2J1aWxkZXJTdGF0ZSwgdmFsdWUp
OwogCiAgICAgbGF5ZXIuc2V0WFBvc2l0aW9uKGxlbmd0aCk7CiAgICAgaWYgKHBhaXIpCkBAIC0y
NTUsOSArMjU1LDkgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsWVBvc2l0aW9uKENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCwgRmlsbExheWVyJiBsYXllciwKICAgICBMZW5ndGggbGVuZ3Ro
OwogICAgIGlmIChwYWlyKSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocHJvcGVydHlJRCwgcHJv
cGVydHlJRCA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblkgfHwgcHJvcGVydHlJRCA9
PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblkpOwotICAgICAgICBsZW5ndGggPSBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgobV9idWlsZGVyU3RhdGUsICpwYWlyLT5z
ZWNvbmQoKSk7CisgICAgICAgIGxlbmd0aCA9IFN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0TGVuZ3RoKG1fYnVpbGRlclN0YXRlLCAqcGFpci0+c2Vjb25kKCkpOwogICAgIH0gZWxzZQot
ICAgICAgICBsZW5ndGggPSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbkNv
bXBvbmVudFkobV9idWlsZGVyU3RhdGUsIHZhbHVlKTsKKyAgICAgICAgbGVuZ3RoID0gU3R5bGU6
OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudFkobV9idWlsZGVyU3Rh
dGUsIHZhbHVlKTsKICAgICAKICAgICBsYXllci5zZXRZUG9zaXRpb24obGVuZ3RoKTsKICAgICBp
ZiAocGFpcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNjQ5MThhYzc5ZTEuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZUJ1aWxkZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENTU1ZhbHVlOwotc3RydWN0IENTU1JlZ2lzdGVyZWRD
dXN0b21Qcm9wZXJ0eTsKLQotbmFtZXNwYWNlIFN0eWxlIHsKLWNsYXNzIEJ1aWxkZXJTdGF0ZTsK
LX0KLQotY2xhc3MgU3R5bGVCdWlsZGVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBhcHBs
eVByb3BlcnR5KENTU1Byb3BlcnR5SUQsIFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYs
IGJvb2wgaXNJbml0aWFsLCBib29sIGlzSW5oZXJpdCwgY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3Rv
bVByb3BlcnR5Kik7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXBy
b3AucGwKaW5kZXggYjFmMjI3ZDE3MDcuLjRlYzlhZDBhMWM1IDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvbWFrZXByb3AucGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9w
LnBsCkBAIC02Niw3ICs2Niw3IEBAIG15ICVuYW1lSXNJbmhlcml0ZWQ7CiBteSAlbmFtZUlzSGln
aFByaW9yaXR5OwogbXkgJXByb3BlcnRpZXNXaXRoU3R5bGVCdWlsZGVyT3B0aW9uczsKIG15ICVz
dHlsZUJ1aWxkZXJPcHRpb25zID0gKAotICAgICJhbmltYXRhYmxlIiA9PiAxLCAjIERlZmluZWQg
aW4gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisgICAgImFuaW1h
dGFibGUiID0+IDEsICMgRGVmaW5lZCBpbiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXIuaAogICAgICJhdXRvLWZ1bmN0aW9ucyIgPT4gMSwKICAgICAiY29uZGl0aW9u
YWwtY29udmVydGVyIiA9PiAxLAogICAgICJjb252ZXJ0ZXIiID0+IDEsCkBAIC01NTQsMTQgKzU1
NCwxNCBAQCBFT0YKIGNsb3NlIEhFQURFUjsKIAogIwotIyBTdHlsZUJ1aWxkZXIuY3BwIGdlbmVy
YXRvci4KKyMgU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmNwcCBnZW5lcmF0b3IuCiAjCiAKIHN1YiBn
ZXRTY29wZUZvckZ1bmN0aW9uIHsKICAgbXkgJG5hbWUgPSBzaGlmdDsKICAgbXkgJGJ1aWxkZXJG
dW5jdGlvbiA9IHNoaWZ0OwogCi0gIHJldHVybiAkcHJvcGVydGllc1dpdGhTdHlsZUJ1aWxkZXJP
cHRpb25zeyRuYW1lfXsiY3VzdG9tIn17JGJ1aWxkZXJGdW5jdGlvbn0gPyAiU3R5bGVCdWlsZGVy
Q3VzdG9tIiA6ICJTdHlsZUJ1aWxkZXJGdW5jdGlvbnMiOworICByZXR1cm4gJHByb3BlcnRpZXNX
aXRoU3R5bGVCdWlsZGVyT3B0aW9uc3skbmFtZX17ImN1c3RvbSJ9eyRidWlsZGVyRnVuY3Rpb259
ID8gIkJ1aWxkZXJDdXN0b20iIDogIkJ1aWxkZXJGdW5jdGlvbnMiOwogfQogCiBzdWIgZ2V0TmFt
ZUZvck1ldGhvZHMgewpAQCAtOTEzLDcgKzkxMyw3IEBAIHN1YiBnZW5lcmF0ZUluaXRpYWxWYWx1
ZVNldHRlciB7CiAgIG15ICRpbml0aWFsID0gJHByb3BlcnRpZXNXaXRoU3R5bGVCdWlsZGVyT3B0
aW9uc3skbmFtZX17ImluaXRpYWwifTsKICAgbXkgJGlzU1ZHID0gZXhpc3RzICRwcm9wZXJ0aWVz
V2l0aFN0eWxlQnVpbGRlck9wdGlvbnN7JG5hbWV9eyJzdmcifTsKICAgbXkgJHNldHRlckNvbnRl
bnQgPSAiIjsKLSAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJzdGF0aWMgdm9pZCBhcHBs
eUluaXRpYWwiIC4gJG5hbWVUb0lkeyRuYW1lfSAuICIoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlKVxuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJzdGF0aWMgdm9p
ZCBhcHBseUluaXRpYWwiIC4gJG5hbWVUb0lkeyRuYW1lfSAuICIoQnVpbGRlclN0YXRlJiBidWls
ZGVyU3RhdGUpXG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIntcbiI7CiAgIG15
ICRzdHlsZSA9ICJidWlsZGVyU3RhdGUuc3R5bGUoKSI7CiAgIGlmIChleGlzdHMgJHByb3BlcnRp
ZXNXaXRoU3R5bGVCdWlsZGVyT3B0aW9uc3skbmFtZX17ImF1dG8tZnVuY3Rpb25zIn0pIHsKQEAg
LTk0Myw3ICs5NDMsNyBAQCBzdWIgZ2VuZXJhdGVJbmhlcml0VmFsdWVTZXR0ZXIgewogICBteSAk
aW5kZW50ID0gc2hpZnQ7CiAKICAgbXkgJHNldHRlckNvbnRlbnQgPSAiIjsKLSAgJHNldHRlckNv
bnRlbnQgLj0gJGluZGVudCAuICJzdGF0aWMgdm9pZCBhcHBseUluaGVyaXQiIC4gJG5hbWVUb0lk
eyRuYW1lfSAuICIoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKVxuIjsKKyAgJHNl
dHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJzdGF0aWMgdm9pZCBhcHBseUluaGVyaXQiIC4gJG5h
bWVUb0lkeyRuYW1lfSAuICIoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpXG4iOwogICAkc2V0
dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIntcbiI7CiAgIG15ICRpc1NWRyA9IGV4aXN0cyAkcHJv
cGVydGllc1dpdGhTdHlsZUJ1aWxkZXJPcHRpb25zeyRuYW1lfXsic3ZnIn07CiAgIG15ICRwYXJl
bnRTdHlsZSA9ICJidWlsZGVyU3RhdGUucGFyZW50U3R5bGUoKSI7CkBAIC05OTAsMTMgKzk5MCwx
MyBAQCBzdWIgZ2VuZXJhdGVWYWx1ZVNldHRlciB7CiAgIG15ICRpbmRlbnQgPSBzaGlmdDsKIAog
ICBteSAkc2V0dGVyQ29udGVudCA9ICIiOwotICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4g
InN0YXRpYyB2b2lkIGFwcGx5VmFsdWUiIC4gJG5hbWVUb0lkeyRuYW1lfSAuICIoU3R5bGU6OkJ1
aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpXG4iOworICAkc2V0dGVy
Q29udGVudCAuPSAkaW5kZW50IC4gInN0YXRpYyB2b2lkIGFwcGx5VmFsdWUiIC4gJG5hbWVUb0lk
eyRuYW1lfSAuICIoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSlc
biI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAie1xuIjsKICAgbXkgJGNvbnZlcnRl
ZFZhbHVlOwogICBpZiAoZXhpc3RzKCRwcm9wZXJ0aWVzV2l0aFN0eWxlQnVpbGRlck9wdGlvbnN7
JG5hbWV9eyJjb252ZXJ0ZXIifSkpIHsKLSAgICAkY29udmVydGVkVmFsdWUgPSAiU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0IiAuICRwcm9wZXJ0aWVzV2l0aFN0eWxlQnVpbGRlck9wdGlv
bnN7JG5hbWV9eyJjb252ZXJ0ZXIifSAuICIoYnVpbGRlclN0YXRlLCB2YWx1ZSkiOworICAgICRj
b252ZXJ0ZWRWYWx1ZSA9ICJCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0IiAuICRwcm9wZXJ0aWVz
V2l0aFN0eWxlQnVpbGRlck9wdGlvbnN7JG5hbWV9eyJjb252ZXJ0ZXIifSAuICIoYnVpbGRlclN0
YXRlLCB2YWx1ZSkiOwogICB9IGVsc2lmIChleGlzdHMoJHByb3BlcnRpZXNXaXRoU3R5bGVCdWls
ZGVyT3B0aW9uc3skbmFtZX17ImNvbmRpdGlvbmFsLWNvbnZlcnRlciJ9KSkgewotICAgICRzZXR0
ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIGF1dG8gY29udmVydGVkVmFsdWUgPSBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnQiIC4gJHByb3BlcnRpZXNXaXRoU3R5bGVCdWlsZGVyT3B0
aW9uc3skbmFtZX17ImNvbmRpdGlvbmFsLWNvbnZlcnRlciJ9IC4gIihidWlsZGVyU3RhdGUsIHZh
bHVlKTtcbiI7CisgICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgYXV0byBjb252
ZXJ0ZWRWYWx1ZSA9IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnQiIC4gJHByb3BlcnRpZXNXaXRo
U3R5bGVCdWlsZGVyT3B0aW9uc3skbmFtZX17ImNvbmRpdGlvbmFsLWNvbnZlcnRlciJ9IC4gIihi
dWlsZGVyU3RhdGUsIHZhbHVlKTtcbiI7CiAgICAgJGNvbnZlcnRlZFZhbHVlID0gIldURk1vdmUo
Y29udmVydGVkVmFsdWUudmFsdWUoKSkiOwogICB9IGVsc2UgewogICAgICRjb252ZXJ0ZWRWYWx1
ZSA9ICJkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpIjsKQEAgLTEwNDIsMTIgKzEw
NDIsMTIgQEAgc3ViIGdlbmVyYXRlVmFsdWVTZXR0ZXIgewogICByZXR1cm4gJHNldHRlckNvbnRl
bnQ7CiB9CiAKLW9wZW4gU1RZTEVCVUlMREVSLCAiPlN0eWxlQnVpbGRlci5jcHAiIHx8IGRpZSAi
Q291bGQgbm90IG9wZW4gU3R5bGVCdWlsZGVyLmNwcCBmb3Igd3JpdGluZyI7CitvcGVuIFNUWUxF
QlVJTERFUiwgIj5TdHlsZUJ1aWxkZXJHZW5lcmF0ZWQuY3BwIiB8fCBkaWUgIkNvdWxkIG5vdCBv
cGVuIFN0eWxlQnVpbGRlckdlbmVyYXRlZC5jcHAgZm9yIHdyaXRpbmciOwogcHJpbnQgU1RZTEVC
VUlMREVSIDw8ICJFT0YiOwogLyogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVk
IGZyb20gJGlucHV0RmlsZSBieSBtYWtlcHJvcCwgZG8gbm90IGVkaXQgKi8KIAogI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIlN0eWxlQnVpbGRlci5oIgorI2luY2x1ZGUgIlN0eWxlQnVp
bGRlckdlbmVyYXRlZC5oIgogCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5o
IgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5LmgiCkBAIC0xMDU4LDggKzEwNTgsOSBAQCBwcmludCBT
VFlMRUJVSUxERVIgPDwgIkVPRiI7CiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNob3J0aGFuZC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgU3R5bGUgewogCi1jbGFzcyBTdHls
ZUJ1aWxkZXJGdW5jdGlvbnMgeworY2xhc3MgQnVpbGRlckZ1bmN0aW9ucyB7CiBwdWJsaWM6CiBF
T0YKIApAQCAtMTA4Myw3ICsxMDg0LDcgQEAgZm9yZWFjaCBteSAkbmFtZSAoQG5hbWVzKSB7CiBw
cmludCBTVFlMRUJVSUxERVIgPDwgIkVPRiI7CiB9OwogCi12b2lkIFN0eWxlQnVpbGRlcjo6YXBw
bHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBTdHlsZTo6QnVpbGRlclN0YXRlJiBi
dWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSwgYm9vbCBpc0luaXRpYWwsIGJvb2wgaXNJbmhl
cml0LCBjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkqIHJlZ2lzdGVyZWQpCit2b2lk
IEJ1aWxkZXJHZW5lcmF0ZWQ6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwg
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSwgYm9vbCBpc0luaXRp
YWwsIGJvb2wgaXNJbmhlcml0LCBjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkqIHJl
Z2lzdGVyZWQpCiB7CiAgICAgc3dpdGNoIChwcm9wZXJ0eSkgewogICAgIGNhc2UgQ1NTUHJvcGVy
dHlJbnZhbGlkOgpAQCAtMTA5MSwxMSArMTA5MiwxMSBAQCB2b2lkIFN0eWxlQnVpbGRlcjo6YXBw
bHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBTdHlsZTo6QnVpbGRlclN0YXRlJiBi
dQogICAgIGNhc2UgQ1NTUHJvcGVydHlDdXN0b206IHsKICAgICAgICAgYXV0byYgY3VzdG9tUHJv
cGVydHkgPSBkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPih2YWx1ZSk7CiAgICAgICAg
IGlmIChpc0luaXRpYWwpCi0gICAgICAgICAgICBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5p
dGlhbEN1c3RvbVByb3BlcnR5KGJ1aWxkZXJTdGF0ZSwgcmVnaXN0ZXJlZCwgY3VzdG9tUHJvcGVy
dHkubmFtZSgpKTsKKyAgICAgICAgICAgIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEN1c3Rv
bVByb3BlcnR5KGJ1aWxkZXJTdGF0ZSwgcmVnaXN0ZXJlZCwgY3VzdG9tUHJvcGVydHkubmFtZSgp
KTsKICAgICAgICAgZWxzZSBpZiAoaXNJbmhlcml0KQotICAgICAgICAgICAgU3R5bGVCdWlsZGVy
Q3VzdG9tOjphcHBseUluaGVyaXRDdXN0b21Qcm9wZXJ0eShidWlsZGVyU3RhdGUsIHJlZ2lzdGVy
ZWQsIGN1c3RvbVByb3BlcnR5Lm5hbWUoKSk7CisgICAgICAgICAgICBCdWlsZGVyQ3VzdG9tOjph
cHBseUluaGVyaXRDdXN0b21Qcm9wZXJ0eShidWlsZGVyU3RhdGUsIHJlZ2lzdGVyZWQsIGN1c3Rv
bVByb3BlcnR5Lm5hbWUoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZUN1c3RvbVByb3BlcnR5KGJ1aWxkZXJTdGF0ZSwgcmVnaXN0ZXJl
ZCwgY3VzdG9tUHJvcGVydHkpOworICAgICAgICAgICAgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1
ZUN1c3RvbVByb3BlcnR5KGJ1aWxkZXJTdGF0ZSwgcmVnaXN0ZXJlZCwgY3VzdG9tUHJvcGVydHkp
OwogICAgICAgICBicmVhazsKICAgICB9CiBFT0YKQEAgLTExMjAsNiArMTEyMSw3IEBAIHByaW50
IFNUWUxFQlVJTERFUiA8PCAiRU9GIjsKICAgICB9OwogfQogCit9IC8vIG5hbWVzcGFjZSBTdHls
ZQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogRU9GCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKaW5kZXggMWFlN2JjOWE0NzYuLjVkNDA3MjY3
OTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2Vy
LmNwcApAQCAtNDMwMCw3ICs0MzAwLDcgQEAgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+
IENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlWYWx1ZSgKICAgICAg
ICAgbV9yYW5nZS5jb25zdW1lV2hpdGVzcGFjZSgpOwogICAgICAgICBhdXRvIHByaW1pdGl2ZVZh
bCA9IGNvbnN1bWVXaWR0aE9ySGVpZ2h0KG1fcmFuZ2UsIG1fY29udGV4dCk7CiAgICAgICAgIGlm
IChwcmltaXRpdmVWYWwgJiYgcHJpbWl0aXZlVmFsLT5pc1ByaW1pdGl2ZVZhbHVlKCkgJiYgZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpwcmltaXRpdmVWYWwpLmlzTGVuZ3RoKCkpIHsKLSAg
ICAgICAgICAgIGF1dG8gbGVuZ3RoID0gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVu
Z3RoKGJ1aWxkZXJTdGF0ZSwgKnByaW1pdGl2ZVZhbCk7CisgICAgICAgICAgICBhdXRvIGxlbmd0
aCA9IFN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoKGJ1aWxkZXJTdGF0ZSwg
KnByaW1pdGl2ZVZhbCk7CiAgICAgICAgICAgICBpZiAoIWxlbmd0aC5pc0NhbGN1bGF0ZWQoKSAm
JiAhbGVuZ3RoLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU6OmNyZWF0ZVN5bnRheExlbmd0aChuYW1lLCBXVEZNb3ZlKGxlbmd0aCkp
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNh
c2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmNwcAppbmRl
eCAzZThiYzljZDhkOC4uYzM4MzNkNGNlNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1Byb3BlcnR5Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVy
dHlDYXNjYWRlLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZh
bHVlTWFwcGluZ3MuaCIKICNpbmNsdWRlICJDU1NWYWx1ZVBvb2wuaCIKICNpbmNsdWRlICJQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5oIgotI2luY2x1ZGUgIlN0eWxlQnVpbGRlci5oIgorI2luY2x1
ZGUgIlN0eWxlQnVpbGRlckdlbmVyYXRlZC5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTaG9y
dGhhbmQuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAKQEAgLTYyNCw4ICs2MjQsNyBA
QCB2b2lkIFByb3BlcnR5Q2FzY2FkZTo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBD
U1NWYWx1ZSYgdmFsdWUsIFNlbGVjdG9yQwogICAgIH0KICNlbmRpZgogCi0gICAgLy8gVXNlIHRo
ZSBnZW5lcmF0ZWQgU3R5bGVCdWlsZGVyLgotICAgIFN0eWxlQnVpbGRlcjo6YXBwbHlQcm9wZXJ0
eShpZCwgYnVpbGRlclN0YXRlLCB2YWx1ZVRvQXBwbHkuZ2V0KCksIGlzSW5pdGlhbCwgaXNJbmhl
cml0LCBjdXN0b21Qcm9wZXJ0eVJlZ2lzdGVyZWQpOworICAgIEJ1aWxkZXJHZW5lcmF0ZWQ6OmFw
cGx5UHJvcGVydHkoaWQsIGJ1aWxkZXJTdGF0ZSwgdmFsdWVUb0FwcGx5LmdldCgpLCBpc0luaXRp
YWwsIGlzSW5oZXJpdCwgY3VzdG9tUHJvcGVydHlSZWdpc3RlcmVkKTsKIH0KIAogUmVmPENTU1Zh
bHVlPiBQcm9wZXJ0eUNhc2NhZGU6OnJlc29sdmVWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
SUQsIENTU1ZhbHVlJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZUJ1aWxkZXJDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNv
bnZlcnRlci5oCnNpbWlsYXJpdHkgaW5kZXggNzQlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggYmI1Y2E2NDAzNTIuLjUxNzJmMWM2YjRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKQEAgLTU5
LDEyMCArNTksMTIxIEBACiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKK25hbWVzcGFjZSBTdHlsZSB7CiAKIC8vIE5vdGUgdGhhdCB3ZSBhc3N1bWUgdGhl
IENTUyBwYXJzZXIgb25seSBhbGxvd3MgdmFsaWQgQ1NTVmFsdWUgdHlwZXMuCi1jbGFzcyBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXIgeworY2xhc3MgQnVpbGRlckNvbnZlcnRlciB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIExlbmd0aCBjb252ZXJ0TGVuZ3RoKGNvbnN0IFN0eWxlOjpCdWlsZGVyU3RhdGUm
LCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBMZW5ndGggY29udmVydExlbmd0aE9yQXV0
byhjb25zdCBTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0
aWMgTGVuZ3RoIGNvbnZlcnRMZW5ndGhTaXppbmcoY29uc3QgU3R5bGU6OkJ1aWxkZXJTdGF0ZSYs
IGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIExlbmd0aCBjb252ZXJ0TGVuZ3RoTWF4U2l6
aW5nKGNvbnN0IFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0
YXRpYyBUYWJTaXplIGNvbnZlcnRUYWJTaXplKGNvbnN0IFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBj
b25zdCBDU1NWYWx1ZSYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBUIGNvbnZl
cnRDb21wdXRlZExlbmd0aChTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgVCBjb252ZXJ0TGluZVdpZHRoKFN0eWxl
OjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBmbG9hdCBjb252
ZXJ0U3BhY2luZyhTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBz
dGF0aWMgTGVuZ3RoU2l6ZSBjb252ZXJ0UmFkaXVzKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25z
dCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBMZW5ndGhQb2ludCBjb252ZXJ0T2JqZWN0UG9zaXRp
b24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIE9w
dGlvblNldDxUZXh0RGVjb3JhdGlvbj4gY29udmVydFRleHREZWNvcmF0aW9uKFN0eWxlOjpCdWls
ZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
YXRpYyBUIGNvbnZlcnROdW1iZXIoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVl
Jik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIFQgY29udmVydE51bWJlck9yQXV0
byhTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgc2hv
cnQgY29udmVydFdlYmtpdEh5cGhlbmF0ZUxpbWl0TGluZXMoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYs
IGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgdGVtcGxhdGU8Q1NTUHJvcGVydHlJRD4gc3RhdGljIE5p
bmVQaWVjZUltYWdlIGNvbnZlcnRCb3JkZXJJbWFnZShTdHlsZTo6QnVpbGRlclN0YXRlJiwgQ1NT
VmFsdWUmKTsKLSAgICB0ZW1wbGF0ZTxDU1NQcm9wZXJ0eUlEPiBzdGF0aWMgTmluZVBpZWNlSW1h
Z2UgY29udmVydEJvcmRlck1hc2soU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7Ci0g
ICAgdGVtcGxhdGU8Q1NTUHJvcGVydHlJRD4gc3RhdGljIFJlZlB0cjxTdHlsZUltYWdlPiBjb252
ZXJ0U3R5bGVJbWFnZShTdHlsZTo6QnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0
aWMgVHJhbnNmb3JtT3BlcmF0aW9ucyBjb252ZXJ0VHJhbnNmb3JtKFN0eWxlOjpCdWlsZGVyU3Rh
dGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBMZW5ndGggY29udmVydExlbmd0aChj
b25zdCBCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBMZW5ndGgg
Y29udmVydExlbmd0aE9yQXV0byhjb25zdCBCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYp
OworICAgIHN0YXRpYyBMZW5ndGggY29udmVydExlbmd0aFNpemluZyhjb25zdCBCdWlsZGVyU3Rh
dGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBMZW5ndGggY29udmVydExlbmd0aE1h
eFNpemluZyhjb25zdCBCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRp
YyBUYWJTaXplIGNvbnZlcnRUYWJTaXplKGNvbnN0IEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1Zh
bHVlJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIFQgY29udmVydENvbXB1dGVk
TGVuZ3RoKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RhdGljIFQgY29udmVydExpbmVXaWR0aChCdWlsZGVyU3RhdGUmLCBjb25zdCBD
U1NWYWx1ZSYpOworICAgIHN0YXRpYyBmbG9hdCBjb252ZXJ0U3BhY2luZyhCdWlsZGVyU3RhdGUm
LCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBMZW5ndGhTaXplIGNvbnZlcnRSYWRpdXMo
QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgTGVuZ3RoUG9pbnQg
Y29udmVydE9iamVjdFBvc2l0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Cisg
ICAgc3RhdGljIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gY29udmVydFRleHREZWNvcmF0aW9u
KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RhdGljIFQgY29udmVydE51bWJlcihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYp
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBUIGNvbnZlcnROdW1iZXJPckF1dG8o
QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgc2hvcnQgY29udmVy
dFdlYmtpdEh5cGhlbmF0ZUxpbWl0TGluZXMoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUm
KTsKKyAgICB0ZW1wbGF0ZTxDU1NQcm9wZXJ0eUlEPiBzdGF0aWMgTmluZVBpZWNlSW1hZ2UgY29u
dmVydEJvcmRlckltYWdlKEJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7CisgICAgdGVtcGxhdGU8
Q1NTUHJvcGVydHlJRD4gc3RhdGljIE5pbmVQaWVjZUltYWdlIGNvbnZlcnRCb3JkZXJNYXNrKEJ1
aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7CisgICAgdGVtcGxhdGU8Q1NTUHJvcGVydHlJRD4gc3Rh
dGljIFJlZlB0cjxTdHlsZUltYWdlPiBjb252ZXJ0U3R5bGVJbWFnZShCdWlsZGVyU3RhdGUmLCBD
U1NWYWx1ZSYpOworICAgIHN0YXRpYyBUcmFuc2Zvcm1PcGVyYXRpb25zIGNvbnZlcnRUcmFuc2Zv
cm0oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKICNpZiBFTkFCTEUoREFSS19NT0RF
X0NTUykKLSAgICBzdGF0aWMgU3R5bGVDb2xvclNjaGVtZSBjb252ZXJ0Q29sb3JTY2hlbWUoU3R5
bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFN0eWxlQ29s
b3JTY2hlbWUgY29udmVydENvbG9yU2NoZW1lKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVl
Jik7CiAjZW5kaWYKLSAgICBzdGF0aWMgU3RyaW5nIGNvbnZlcnRTdHJpbmcoU3R5bGU6OkJ1aWxk
ZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIFN0cmluZyBjb252ZXJ0U3Ry
aW5nT3JBdXRvKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0
YXRpYyBTdHJpbmcgY29udmVydFN0cmluZ09yTm9uZShTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29u
c3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgT3B0aW9uU2V0PFRleHRFbXBoYXNpc1Bvc2l0aW9u
PiBjb252ZXJ0VGV4dEVtcGhhc2lzUG9zaXRpb24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0
IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIFRleHRBbGlnbk1vZGUgY29udmVydFRleHRBbGlnbihT
dHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgUmVmUHRy
PENsaXBQYXRoT3BlcmF0aW9uPiBjb252ZXJ0Q2xpcFBhdGgoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYs
IGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIFJlc2l6ZSBjb252ZXJ0UmVzaXplKFN0eWxl
OjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBpbnQgY29udmVy
dE1hcnF1ZWVSZXBldGl0aW9uKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYp
OwotICAgIHN0YXRpYyBpbnQgY29udmVydE1hcnF1ZWVTcGVlZChTdHlsZTo6QnVpbGRlclN0YXRl
JiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgUmVmPFF1b3Rlc0RhdGE+IGNvbnZlcnRR
dW90ZXMoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGlj
IFRleHRVbmRlcmxpbmVQb3NpdGlvbiBjb252ZXJ0VGV4dFVuZGVybGluZVBvc2l0aW9uKFN0eWxl
OjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBUZXh0VW5kZXJs
aW5lT2Zmc2V0IGNvbnZlcnRUZXh0VW5kZXJsaW5lT2Zmc2V0KFN0eWxlOjpCdWlsZGVyU3RhdGUm
LCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyBj
b252ZXJ0VGV4dERlY29yYXRpb25UaGlja25lc3MoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0
IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIFJlZlB0cjxTdHlsZVJlZmxlY3Rpb24+IGNvbnZlcnRS
ZWZsZWN0aW9uKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0
YXRpYyBJbnRTaXplIGNvbnZlcnRJbml0aWFsTGV0dGVyKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBj
b25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBmbG9hdCBjb252ZXJ0VGV4dFN0cm9rZVdpZHRo
KFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBPcHRp
b25TZXQ8TGluZUJveENvbnRhaW4+IGNvbnZlcnRMaW5lQm94Q29udGFpbihTdHlsZTo6QnVpbGRl
clN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgT3B0aW9uU2V0PFRleHREZWNv
cmF0aW9uU2tpcD4gY29udmVydFRleHREZWNvcmF0aW9uU2tpcChTdHlsZTo6QnVpbGRlclN0YXRl
JiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXBlVmFsdWU+IGNvbnZl
cnRTaGFwZVZhbHVlKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYpOworICAgIHN0YXRp
YyBTdHJpbmcgY29udmVydFN0cmluZyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwor
ICAgIHN0YXRpYyBTdHJpbmcgY29udmVydFN0cmluZ09yQXV0byhCdWlsZGVyU3RhdGUmLCBjb25z
dCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBTdHJpbmcgY29udmVydFN0cmluZ09yTm9uZShCdWls
ZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBPcHRpb25TZXQ8VGV4dEVt
cGhhc2lzUG9zaXRpb24+IGNvbnZlcnRUZXh0RW1waGFzaXNQb3NpdGlvbihCdWlsZGVyU3RhdGUm
LCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBUZXh0QWxpZ25Nb2RlIGNvbnZlcnRUZXh0
QWxpZ24oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgUmVmUHRy
PENsaXBQYXRoT3BlcmF0aW9uPiBjb252ZXJ0Q2xpcFBhdGgoQnVpbGRlclN0YXRlJiwgY29uc3Qg
Q1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgUmVzaXplIGNvbnZlcnRSZXNpemUoQnVpbGRlclN0YXRl
JiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgaW50IGNvbnZlcnRNYXJxdWVlUmVwZXRp
dGlvbihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBpbnQgY29u
dmVydE1hcnF1ZWVTcGVlZChCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0
YXRpYyBSZWY8UXVvdGVzRGF0YT4gY29udmVydFF1b3RlcyhCdWlsZGVyU3RhdGUmLCBjb25zdCBD
U1NWYWx1ZSYpOworICAgIHN0YXRpYyBUZXh0VW5kZXJsaW5lUG9zaXRpb24gY29udmVydFRleHRV
bmRlcmxpbmVQb3NpdGlvbihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0
YXRpYyBUZXh0VW5kZXJsaW5lT2Zmc2V0IGNvbnZlcnRUZXh0VW5kZXJsaW5lT2Zmc2V0KEJ1aWxk
ZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFRleHREZWNvcmF0aW9uVGhp
Y2tuZXNzIGNvbnZlcnRUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyhCdWlsZGVyU3RhdGUmLCBjb25z
dCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBSZWZQdHI8U3R5bGVSZWZsZWN0aW9uPiBjb252ZXJ0
UmVmbGVjdGlvbihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBJ
bnRTaXplIGNvbnZlcnRJbml0aWFsTGV0dGVyKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVl
Jik7CisgICAgc3RhdGljIGZsb2F0IGNvbnZlcnRUZXh0U3Ryb2tlV2lkdGgoQnVpbGRlclN0YXRl
JiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgT3B0aW9uU2V0PExpbmVCb3hDb250YWlu
PiBjb252ZXJ0TGluZUJveENvbnRhaW4oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsK
KyAgICBzdGF0aWMgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uU2tpcD4gY29udmVydFRleHREZWNv
cmF0aW9uU2tpcChCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBS
ZWZQdHI8U2hhcGVWYWx1ZT4gY29udmVydFNoYXBlVmFsdWUoQnVpbGRlclN0YXRlJiwgQ1NTVmFs
dWUmKTsKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIHN0YXRpYyBTY3JvbGxTbmFw
VHlwZSBjb252ZXJ0U2Nyb2xsU25hcFR5cGUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENT
U1ZhbHVlJik7Ci0gICAgc3RhdGljIFNjcm9sbFNuYXBBbGlnbiBjb252ZXJ0U2Nyb2xsU25hcEFs
aWduKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBT
Y3JvbGxTbmFwVHlwZSBjb252ZXJ0U2Nyb2xsU25hcFR5cGUoQnVpbGRlclN0YXRlJiwgY29uc3Qg
Q1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgU2Nyb2xsU25hcEFsaWduIGNvbnZlcnRTY3JvbGxTbmFw
QWxpZ24oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKICNlbmRpZgotICAgIHN0YXRp
YyBHcmlkVHJhY2tTaXplIGNvbnZlcnRHcmlkVHJhY2tTaXplKFN0eWxlOjpCdWlsZGVyU3RhdGUm
LCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gY29u
dmVydEdyaWRUcmFja1NpemVMaXN0KFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1
ZSYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxHcmlkUG9zaXRpb24+IGNvbnZlcnRHcmlkUG9zaXRp
b24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIEdy
aWRBdXRvRmxvdyBjb252ZXJ0R3JpZEF1dG9GbG93KFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25z
dCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxMZW5ndGg+IGNvbnZlcnRXb3JkU3Bh
Y2luZyhTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMg
T3B0aW9uYWw8ZmxvYXQ+IGNvbnZlcnRQZXJzcGVjdGl2ZShTdHlsZTo6QnVpbGRlclN0YXRlJiwg
Y29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8TGVuZ3RoPiBjb252ZXJ0TWFy
cXVlZUluY3JlbWVudChTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAg
ICBzdGF0aWMgT3B0aW9uYWw8RmlsdGVyT3BlcmF0aW9ucz4gY29udmVydEZpbHRlck9wZXJhdGlv
bnMoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIEdy
aWRUcmFja1NpemUgY29udmVydEdyaWRUcmFja1NpemUoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NT
VmFsdWUmKTsKKyAgICBzdGF0aWMgVmVjdG9yPEdyaWRUcmFja1NpemU+IGNvbnZlcnRHcmlkVHJh
Y2tTaXplTGlzdChCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBP
cHRpb25hbDxHcmlkUG9zaXRpb24+IGNvbnZlcnRHcmlkUG9zaXRpb24oQnVpbGRlclN0YXRlJiwg
Y29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgR3JpZEF1dG9GbG93IGNvbnZlcnRHcmlkQXV0
b0Zsb3coQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgT3B0aW9u
YWw8TGVuZ3RoPiBjb252ZXJ0V29yZFNwYWNpbmcoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFs
dWUmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8ZmxvYXQ+IGNvbnZlcnRQZXJzcGVjdGl2ZShCdWls
ZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBPcHRpb25hbDxMZW5ndGg+
IGNvbnZlcnRNYXJxdWVlSW5jcmVtZW50KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7
CisgICAgc3RhdGljIE9wdGlvbmFsPEZpbHRlck9wZXJhdGlvbnM+IGNvbnZlcnRGaWx0ZXJPcGVy
YXRpb25zKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICBzdGF0aWMgYm9vbCBjb252ZXJ0VG91Y2hDYWxsb3V0KFN0eWxlOjpCdWls
ZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBib29sIGNvbnZlcnRUb3Vj
aENhbGxvdXQoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKICNlbmRpZgogI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCi0gICAgc3RhdGljIENvbG9yIGNvbnZlcnRUYXBIaWdobGlnaHRD
b2xvcihTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMg
Q29sb3IgY29udmVydFRhcEhpZ2hsaWdodENvbG9yKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1Zh
bHVlJik7CiAjZW5kaWYKICNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCi0gICAgc3RhdGljIE9w
dGlvblNldDxUb3VjaEFjdGlvbj4gY29udmVydFRvdWNoQWN0aW9uKFN0eWxlOjpCdWlsZGVyU3Rh
dGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBPcHRpb25TZXQ8VG91Y2hBY3Rpb24+
IGNvbnZlcnRUb3VjaEFjdGlvbihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKE9WRVJGTE9XX1NDUk9MTElOR19UT1VDSCkKLSAgICBzdGF0aWMgYm9v
bCBjb252ZXJ0T3ZlcmZsb3dTY3JvbGxpbmcoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENT
U1ZhbHVlJik7CisgICAgc3RhdGljIGJvb2wgY29udmVydE92ZXJmbG93U2Nyb2xsaW5nKEJ1aWxk
ZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CiAjZW5kaWYKLSAgICBzdGF0aWMgRm9udEZlYXR1
cmVTZXR0aW5ncyBjb252ZXJ0Rm9udEZlYXR1cmVTZXR0aW5ncyhTdHlsZTo6QnVpbGRlclN0YXRl
JiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgRm9udEZlYXR1cmVTZXR0aW5ncyBjb252
ZXJ0Rm9udEZlYXR1cmVTZXR0aW5ncyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwog
ICAgIHN0YXRpYyBGb250U2VsZWN0aW9uVmFsdWUgY29udmVydEZvbnRXZWlnaHRGcm9tVmFsdWUo
Y29uc3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgRm9udFNlbGVjdGlvblZhbHVlIGNvbnZlcnRG
b250U3RyZXRjaEZyb21WYWx1ZShjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBPcHRpb25h
bDxGb250U2VsZWN0aW9uVmFsdWU+IGNvbnZlcnRGb250U3R5bGVGcm9tVmFsdWUoY29uc3QgQ1NT
VmFsdWUmKTsKLSAgICBzdGF0aWMgRm9udFNlbGVjdGlvblZhbHVlIGNvbnZlcnRGb250V2VpZ2h0
KFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBGb250
U2VsZWN0aW9uVmFsdWUgY29udmVydEZvbnRTdHJldGNoKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBj
b25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBGb250U2VsZWN0aW9uVmFsdWUgY29udmVydEZv
bnRTdHlsZShTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0
aWMgRm9udFNlbGVjdGlvblZhbHVlIGNvbnZlcnRGb250V2VpZ2h0KEJ1aWxkZXJTdGF0ZSYsIGNv
bnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIEZvbnRTZWxlY3Rpb25WYWx1ZSBjb252ZXJ0Rm9u
dFN0cmV0Y2goQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgRm9u
dFNlbGVjdGlvblZhbHVlIGNvbnZlcnRGb250U3R5bGUoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NT
VmFsdWUmKTsKICNpZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQotICAgIHN0YXRpYyBGb250VmFy
aWF0aW9uU2V0dGluZ3MgY29udmVydEZvbnRWYXJpYXRpb25TZXR0aW5ncyhTdHlsZTo6QnVpbGRl
clN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgRm9udFZhcmlhdGlvblNldHRp
bmdzIGNvbnZlcnRGb250VmFyaWF0aW9uU2V0dGluZ3MoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NT
VmFsdWUmKTsKICNlbmRpZgotICAgIHN0YXRpYyBTVkdMZW5ndGhWYWx1ZSBjb252ZXJ0U1ZHTGVu
Z3RoVmFsdWUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3Rh
dGljIFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4gY29udmVydFNWR0xlbmd0aFZlY3RvcihTdHlsZTo6
QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgVmVjdG9yPFNWR0xl
bmd0aFZhbHVlPiBjb252ZXJ0U3Ryb2tlRGFzaEFycmF5KFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBj
b25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBQYWludE9yZGVyIGNvbnZlcnRQYWludE9yZGVy
KFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBmbG9h
dCBjb252ZXJ0T3BhY2l0eShTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsK
LSAgICBzdGF0aWMgU3RyaW5nIGNvbnZlcnRTVkdVUklSZWZlcmVuY2UoU3R5bGU6OkJ1aWxkZXJT
dGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIENvbG9yIGNvbnZlcnRTVkdDb2xv
cihTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgU3R5
bGVTZWxmQWxpZ25tZW50RGF0YSBjb252ZXJ0U2VsZk9yRGVmYXVsdEFsaWdubWVudERhdGEoU3R5
bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIFN0eWxlQ29u
dGVudEFsaWdubWVudERhdGEgY29udmVydENvbnRlbnRBbGlnbm1lbnREYXRhKFN0eWxlOjpCdWls
ZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBHbHlwaE9yaWVudGF0aW9u
IGNvbnZlcnRHbHlwaE9yaWVudGF0aW9uKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NW
YWx1ZSYpOwotICAgIHN0YXRpYyBHbHlwaE9yaWVudGF0aW9uIGNvbnZlcnRHbHlwaE9yaWVudGF0
aW9uT3JBdXRvKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0
YXRpYyBPcHRpb25hbDxMZW5ndGg+IGNvbnZlcnRMaW5lSGVpZ2h0KFN0eWxlOjpCdWlsZGVyU3Rh
dGUmLCBjb25zdCBDU1NWYWx1ZSYsIGZsb2F0IG11bHRpcGxpZXIgPSAxLmYpOwotICAgIHN0YXRp
YyBGb250U3ludGhlc2lzIGNvbnZlcnRGb250U3ludGhlc2lzKFN0eWxlOjpCdWlsZGVyU3RhdGUm
LCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBTVkdMZW5ndGhWYWx1ZSBjb252ZXJ0U1ZH
TGVuZ3RoVmFsdWUoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMg
VmVjdG9yPFNWR0xlbmd0aFZhbHVlPiBjb252ZXJ0U1ZHTGVuZ3RoVmVjdG9yKEJ1aWxkZXJTdGF0
ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4g
Y29udmVydFN0cm9rZURhc2hBcnJheShCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwor
ICAgIHN0YXRpYyBQYWludE9yZGVyIGNvbnZlcnRQYWludE9yZGVyKEJ1aWxkZXJTdGF0ZSYsIGNv
bnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIGZsb2F0IGNvbnZlcnRPcGFjaXR5KEJ1aWxkZXJT
dGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFN0cmluZyBjb252ZXJ0U1ZHVVJJ
UmVmZXJlbmNlKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIENv
bG9yIGNvbnZlcnRTVkdDb2xvcihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAg
IHN0YXRpYyBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIGNvbnZlcnRTZWxmT3JEZWZhdWx0QWxpZ25t
ZW50RGF0YShCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBTdHls
ZUNvbnRlbnRBbGlnbm1lbnREYXRhIGNvbnZlcnRDb250ZW50QWxpZ25tZW50RGF0YShCdWlsZGVy
U3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBHbHlwaE9yaWVudGF0aW9uIGNv
bnZlcnRHbHlwaE9yaWVudGF0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Cisg
ICAgc3RhdGljIEdseXBoT3JpZW50YXRpb24gY29udmVydEdseXBoT3JpZW50YXRpb25PckF1dG8o
QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8TGVu
Z3RoPiBjb252ZXJ0TGluZUhlaWdodChCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYsIGZs
b2F0IG11bHRpcGxpZXIgPSAxLmYpOworICAgIHN0YXRpYyBGb250U3ludGhlc2lzIGNvbnZlcnRG
b250U3ludGhlc2lzKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgCi0gICAg
c3RhdGljIEJyZWFrQmV0d2VlbiBjb252ZXJ0UGFnZUJyZWFrQmV0d2VlbihTdHlsZTo6QnVpbGRl
clN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgQnJlYWtJbnNpZGUgY29udmVy
dFBhZ2VCcmVha0luc2lkZShTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsK
LSAgICBzdGF0aWMgQnJlYWtCZXR3ZWVuIGNvbnZlcnRDb2x1bW5CcmVha0JldHdlZW4oU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIEJyZWFrSW5zaWRl
IGNvbnZlcnRDb2x1bW5CcmVha0luc2lkZShTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NT
VmFsdWUmKTsKKyAgICBzdGF0aWMgQnJlYWtCZXR3ZWVuIGNvbnZlcnRQYWdlQnJlYWtCZXR3ZWVu
KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIEJyZWFrSW5zaWRl
IGNvbnZlcnRQYWdlQnJlYWtJbnNpZGUoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsK
KyAgICBzdGF0aWMgQnJlYWtCZXR3ZWVuIGNvbnZlcnRDb2x1bW5CcmVha0JldHdlZW4oQnVpbGRl
clN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgQnJlYWtJbnNpZGUgY29udmVy
dENvbHVtbkJyZWFrSW5zaWRlKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CiAKLSAg
ICBzdGF0aWMgT3B0aW9uU2V0PEhhbmdpbmdQdW5jdHVhdGlvbj4gY29udmVydEhhbmdpbmdQdW5j
dHVhdGlvbihTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0
aWMgT3B0aW9uU2V0PEhhbmdpbmdQdW5jdHVhdGlvbj4gY29udmVydEhhbmdpbmdQdW5jdHVhdGlv
bihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwogCi0gICAgc3RhdGljIE9wdGlvblNl
dDxTcGVha0FzPiBjb252ZXJ0U3BlYWtBcyhTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NT
VmFsdWUmKTsKKyAgICBzdGF0aWMgT3B0aW9uU2V0PFNwZWFrQXM+IGNvbnZlcnRTcGVha0FzKEJ1
aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CiAKLSAgICBzdGF0aWMgTGVuZ3RoIGNvbnZl
cnRQb3NpdGlvbkNvbXBvbmVudFgoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVl
Jik7Ci0gICAgc3RhdGljIExlbmd0aCBjb252ZXJ0UG9zaXRpb25Db21wb25lbnRZKFN0eWxlOjpC
dWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBMZW5ndGggY29udmVy
dFBvc2l0aW9uQ29tcG9uZW50WChCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAg
IHN0YXRpYyBMZW5ndGggY29udmVydFBvc2l0aW9uQ29tcG9uZW50WShCdWlsZGVyU3RhdGUmLCBj
b25zdCBDU1NWYWx1ZSYpOwogCi0gICAgc3RhdGljIEdhcExlbmd0aCBjb252ZXJ0R2FwTGVuZ3Ro
KFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBHYXBM
ZW5ndGggY29udmVydEdhcExlbmd0aChCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwog
ICAgIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgU3R5bGVCdWlsZGVyQ3VzdG9tOworICAg
IGZyaWVuZCBjbGFzcyBCdWlsZGVyQ3VzdG9tOwogCiAgICAgc3RhdGljIExlbmd0aCBjb252ZXJ0
VG9SYWRpdXNMZW5ndGgoQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsIGNvbnN0IENTU1ByaW1p
dGl2ZVZhbHVlJik7CiAgICAgc3RhdGljIE9wdGlvblNldDxUZXh0RW1waGFzaXNQb3NpdGlvbj4g
dmFsdWVUb0VtcGhhc2lzUG9zaXRpb24oY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmKTsKICAgICBz
dGF0aWMgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uU2tpcD4gdmFsdWVUb0RlY29yYXRpb25Ta2lw
KGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJik7CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkK
LSAgICBzdGF0aWMgTGVuZ3RoIHBhcnNlU25hcENvb3JkaW5hdGUoU3R5bGU6OkJ1aWxkZXJTdGF0
ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIExlbmd0aCBwYXJzZVNuYXBDb29yZGlu
YXRlKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShEQVJLX01PREVfQ1NTKQpAQCAtMTgwLDE4ICsxODEsMTggQEAgcHJpdmF0ZToKICNlbmRpZgog
CiAgICAgc3RhdGljIExlbmd0aCBjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgoY29uc3Qg
TGVuZ3RoJik7Ci0gICAgdGVtcGxhdGU8Q1NTVmFsdWVJRCwgQ1NTVmFsdWVJRD4gc3RhdGljIExl
bmd0aCBjb252ZXJ0UG9zaXRpb25Db21wb25lbnQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0
IENTU1ByaW1pdGl2ZVZhbHVlJik7CisgICAgdGVtcGxhdGU8Q1NTVmFsdWVJRCwgQ1NTVmFsdWVJ
RD4gc3RhdGljIExlbmd0aCBjb252ZXJ0UG9zaXRpb25Db21wb25lbnQoQnVpbGRlclN0YXRlJiwg
Y29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmKTsKIAotICAgIHN0YXRpYyBHcmlkTGVuZ3RoIGNyZWF0
ZUdyaWRUcmFja0JyZWFkdGgoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmLCBTdHlsZTo6QnVpbGRl
clN0YXRlJik7Ci0gICAgc3RhdGljIEdyaWRUcmFja1NpemUgY3JlYXRlR3JpZFRyYWNrU2l6ZShj
b25zdCBDU1NWYWx1ZSYsIFN0eWxlOjpCdWlsZGVyU3RhdGUmKTsKKyAgICBzdGF0aWMgR3JpZExl
bmd0aCBjcmVhdGVHcmlkVHJhY2tCcmVhZHRoKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiwgQnVp
bGRlclN0YXRlJik7CisgICAgc3RhdGljIEdyaWRUcmFja1NpemUgY3JlYXRlR3JpZFRyYWNrU2l6
ZShjb25zdCBDU1NWYWx1ZSYsIEJ1aWxkZXJTdGF0ZSYpOwogICAgIHN0cnVjdCBUcmFja3NEYXRh
OwotICAgIHN0YXRpYyBib29sIGNyZWF0ZUdyaWRUcmFja0xpc3QoY29uc3QgQ1NTVmFsdWUmLCBU
cmFja3NEYXRhJiwgU3R5bGU6OkJ1aWxkZXJTdGF0ZSYpOworICAgIHN0YXRpYyBib29sIGNyZWF0
ZUdyaWRUcmFja0xpc3QoY29uc3QgQ1NTVmFsdWUmLCBUcmFja3NEYXRhJiwgQnVpbGRlclN0YXRl
Jik7CiAgICAgc3RhdGljIGJvb2wgY3JlYXRlR3JpZFBvc2l0aW9uKGNvbnN0IENTU1ZhbHVlJiwg
R3JpZFBvc2l0aW9uJik7CiAgICAgc3RhdGljIHZvaWQgY3JlYXRlSW1wbGljaXROYW1lZEdyaWRM
aW5lc0Zyb21HcmlkQXJlYShjb25zdCBOYW1lZEdyaWRBcmVhTWFwJiwgTmFtZWRHcmlkTGluZXNN
YXAmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pOwotICAgIHN0YXRpYyBDU1NUb0xlbmd0aENv
bnZlcnNpb25EYXRhIGNzc3RvTGVuZ3RoQ29udmVyc2lvbkRhdGFXaXRoVGV4dFpvb21GYWN0b3Io
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYpOworICAgIHN0YXRpYyBDU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhIGNzc3RvTGVuZ3RoQ29udmVyc2lvbkRhdGFXaXRoVGV4dFpvb21GYWN0b3IoQnVpbGRlclN0
YXRlJik7CiB9OwogCi1pbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dExlbmd0aChjb25zdCBTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENT
U1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBMZW5ndGggQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExl
bmd0aChjb25zdCBCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZh
bHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhbHVlKTsKICAgICBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIGNvbnZlcnNpb25E
YXRhID0gYnVpbGRlclN0YXRlLnVzZVNWR1pvb21SdWxlc0Zvckxlbmd0aCgpID8KQEAgLTIxNCwx
NCArMjE1LDE0IEBAIGlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
TGVuZ3RoKGNvbnN0IFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1CiAgICAgcmV0dXJuIExlbmd0aCgw
LCBGaXhlZCk7CiB9CiAKLWlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0TGVuZ3RoT3JBdXRvKGNvbnN0IFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwg
Y29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIExlbmd0aCBCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0TGVuZ3RoT3JBdXRvKGNvbnN0IEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25z
dCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykKICAgICAgICAgcmV0dXJuIExlbmd0
aChBdXRvKTsKICAgICByZXR1cm4gY29udmVydExlbmd0aChidWlsZGVyU3RhdGUsIHZhbHVlKTsK
IH0KIAotaW5saW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGhT
aXppbmcoY29uc3QgU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NW
YWx1ZSYgdmFsdWUpCitpbmxpbmUgTGVuZ3RoIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5n
dGhTaXppbmcoY29uc3QgQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVl
JiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkp
IHsKQEAgLTI1MCwxNCArMjUxLDE0IEBAIGlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0TGVuZ3RoU2l6aW5nKGNvbnN0IFN0eWxlOjpCdWlsZGVyU3RhCiAgICAgfQog
fQogCi1pbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0aE1h
eFNpemluZyhjb25zdCBTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENT
U1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBMZW5ndGggQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExl
bmd0aE1heFNpemluZyhjb25zdCBCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NT
VmFsdWUmIHZhbHVlKQogewogICAgIGlmIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFs
dWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCiAgICAgICAgIHJldHVybiBMZW5ndGgoVW5k
ZWZpbmVkKTsKICAgICByZXR1cm4gY29udmVydExlbmd0aFNpemluZyhidWlsZGVyU3RhdGUsIHZh
bHVlKTsKIH0KIAotaW5saW5lIFRhYlNpemUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
VGFiU2l6ZShjb25zdCBTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENT
U1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBUYWJTaXplIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRU
YWJTaXplKGNvbnN0IEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYg
dmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc051bWJlcigpKQpAQCAt
MjY2LDEzICsyNjcsMTMgQEAgaW5saW5lIFRhYlNpemUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0VGFiU2l6ZShjb25zdCBTdHlsZTo6QnVpbGRlclN0YXRlJgogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotaW5saW5lIFQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q29tcHV0
ZWRMZW5ndGgoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1
ZSYgdmFsdWUpCitpbmxpbmUgVCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q29tcHV0ZWRMZW5n
dGgoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsK
ICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5jb21wdXRlTGVu
Z3RoPFQ+KGJ1aWxkZXJTdGF0ZS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkpOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIFQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0TGluZVdpZHRoKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NT
VmFsdWUmIHZhbHVlKQoraW5saW5lIFQgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVXaWR0
aChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewog
ICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKTsKICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSkgewpAQCAtMzAyLDcg
KzMwMyw3IEBAIGlubGluZSBUIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVXaWR0
aChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhCiAgICAgfQogfQogCi1pbmxpbmUgZmxv
YXQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3BhY2luZyhTdHlsZTo6QnVpbGRlclN0
YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBmbG9hdCBC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3BhY2luZyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0
ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0g
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFs
dWUudmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKQpAQCAtMzE0LDcgKzMxNSw3IEBAIGlubGlu
ZSBmbG9hdCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTcGFjaW5nKFN0eWxlOjpCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTCiAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlLmNvbXB1dGVMZW5n
dGg8ZmxvYXQ+KGNvbnZlcnNpb25EYXRhKTsKIH0KIAotaW5saW5lIExlbmd0aCBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRUb1JhZGl1c0xlbmd0aChDU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhJiBjb252ZXJzaW9uRGF0YSwgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlKQoraW5s
aW5lIExlbmd0aCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG9SYWRpdXNMZW5ndGgoQ1NTVG9M
ZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIGNvbnN0IENTU1ByaW1pdGl2ZVZh
bHVlJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUuaXNQZXJjZW50YWdlKCkpCiAgICAgICAgIHJl
dHVybiBMZW5ndGgodmFsdWUuZG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CkBAIC0zMjMsNyArMzI0
LDcgQEAgaW5saW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUb1JhZGl1
c0xlbmd0aChDU1NUb0xlbmd0aENvbnZlcnNpb24KICAgICByZXR1cm4gdmFsdWUuY29tcHV0ZUxl
bmd0aDxMZW5ndGg+KGNvbnZlcnNpb25EYXRhKTsKIH0KIAotaW5saW5lIExlbmd0aFNpemUgU3R5
bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmFkaXVzKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIExlbmd0aFNpemUgQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFJhZGl1cyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwg
Y29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8qIHBhaXIgPSBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpLnBhaXJWYWx1ZSgpOwogICAgIGlmICghcGFpciB8fCAhcGFp
ci0+Zmlyc3QoKSB8fCAhcGFpci0+c2Vjb25kKCkpCkBAIC0zNDAsNyArMzQxLDcgQEAgaW5saW5l
IExlbmd0aFNpemUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmFkaXVzKFN0eWxlOjpC
dWlsZGVyU3RhdGUmIGJ1aWwKICAgICByZXR1cm4gcmFkaXVzOwogfQogCi1pbmxpbmUgTGVuZ3Ro
IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRvMTAwUGVyY2VudE1pbnVzTGVuZ3RoKGNv
bnN0IExlbmd0aCYgbGVuZ3RoKQoraW5saW5lIExlbmd0aCBCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCiB7CiAgICAg
aWYgKGxlbmd0aC5pc1BlcmNlbnQoKSkKICAgICAgICAgcmV0dXJuIExlbmd0aCgxMDAgLSBsZW5n
dGgudmFsdWUoKSwgUGVyY2VudCk7CkBAIC0zNTQsMTggKzM1NSwxOCBAQCBpbmxpbmUgTGVuZ3Ro
IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRvMTAwUGVyY2VudE1pbnVzTGVuZ3RoKGNv
bnN0IExlbmd0aAogICAgIHJldHVybiBMZW5ndGgoQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdU
Rk1vdmUob3ApLCBWYWx1ZVJhbmdlQWxsKSk7CiB9CiAKLWlubGluZSBMZW5ndGggU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25lbnRYKFN0eWxlOjpCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIExlbmd0aCBC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25lbnRYKEJ1aWxkZXJTdGF0ZSYg
YnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgcmV0dXJuIGNvbnZl
cnRQb3NpdGlvbkNvbXBvbmVudDxDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+KGJ1aWxkZXJT
dGF0ZSwgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSk7CiB9CiAKLWlubGluZSBM
ZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25lbnRZKFN0
eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQor
aW5saW5lIExlbmd0aCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25lbnRZ
KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAg
ICAgcmV0dXJuIGNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudDxDU1NWYWx1ZVRvcCwgQ1NTVmFsdWVC
b3R0b20+KGJ1aWxkZXJTdGF0ZSwgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSk7
CiB9CiAKIHRlbXBsYXRlPENTU1ZhbHVlSUQgY3NzVmFsdWVGb3IwLCBDU1NWYWx1ZUlEIGNzc1Zh
bHVlRm9yMTAwPgotaW5saW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQ
b3NpdGlvbkNvbXBvbmVudChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0
IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSkKK2lubGluZSBMZW5ndGggQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFBvc2l0aW9uQ29tcG9uZW50KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBj
b25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUpCiB7CiAgICAgTGVuZ3RoIGxlbmd0aDsKIApA
QCAtNDAwLDcgKzQwMSw3IEBAIGlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0UG9zaXRpb25Db21wb25lbnQoU3R5bGU6OkJ1aWxkZXJTdGF0CiAgICAgcmV0dXJuIGxl
bmd0aDsKIH0KIAotaW5saW5lIExlbmd0aFBvaW50IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydE9iamVjdFBvc2l0aW9uKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29u
c3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIExlbmd0aFBvaW50IEJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRPYmplY3RQb3NpdGlvbihCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3Qg
Q1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBQYWlyKiBwYWlyID0gcHJpbWl0aXZlVmFs
dWUucGFpclZhbHVlKCk7CkBAIC00MTMsNyArNDE0LDcgQEAgaW5saW5lIExlbmd0aFBvaW50IFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE9iamVjdFBvc2l0aW9uKFN0eWxlOjpCdWlsZGVy
U3QKICAgICByZXR1cm4gTGVuZ3RoUG9pbnQobGVuZ3RoWCwgbGVuZ3RoWSk7CiB9CiAKLWlubGlu
ZSBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dFRleHREZWNvcmF0aW9uKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFs
dWUpCitpbmxpbmUgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiBCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0VGV4dERlY29yYXRpb24oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVl
KQogewogICAgIGF1dG8gcmVzdWx0ID0gUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlv
bigpOwogICAgIGlmIChpczxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewpAQCAtNDI0LDIwICs0MjUs
MjAgQEAgaW5saW5lIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0VGV4dERlY29yYXRpb24oU3QKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4K
LWlubGluZSBUIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE51bWJlcihTdHlsZTo6QnVp
bGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFQgQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydE51bWJlcihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUp
CiB7CiAgICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWU8
VD4oQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgotaW5saW5lIFQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TnVtYmVyT3JBdXRv
KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVl
KQoraW5saW5lIFQgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE51bWJlck9yQXV0byhCdWlsZGVy
U3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1
dG8pCiAgICAgICAgIHJldHVybiAtMTsKICAgICByZXR1cm4gY29udmVydE51bWJlcjxUPihidWls
ZGVyU3RhdGUsIHZhbHVlKTsKIH0KIAotaW5saW5lIHNob3J0IFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFdlYmtpdEh5cGhlbmF0ZUxpbWl0TGluZXMoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYs
IGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBzaG9ydCBCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0V2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NW
YWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkg
PT0gQ1NTVmFsdWVOb0xpbWl0KQpAQCAtNDQ2LDcgKzQ0Nyw3IEBAIGlubGluZSBzaG9ydCBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRXZWJraXRIeXBoZW5hdGVMaW1pdExpbmVzKFN0eWxl
OjpCdWlsCiB9CiAKIHRlbXBsYXRlPENTU1Byb3BlcnR5SUQgcHJvcGVydHk+Ci1pbmxpbmUgTmlu
ZVBpZWNlSW1hZ2UgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Qm9yZGVySW1hZ2UoU3R5
bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUg
TmluZVBpZWNlSW1hZ2UgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEJvcmRlckltYWdlKEJ1aWxk
ZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgTmluZVBpZWNl
SW1hZ2UgaW1hZ2U7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlTWFwKCkubWFwTmluZVBpZWNlSW1h
Z2UocHJvcGVydHksICZ2YWx1ZSwgaW1hZ2UpOwpAQCAtNDU0LDcgKzQ1NSw3IEBAIGlubGluZSBO
aW5lUGllY2VJbWFnZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRCb3JkZXJJbWFnZShT
dHlsZTo6QnVpbGRlclN0CiB9CiAKIHRlbXBsYXRlPENTU1Byb3BlcnR5SUQgcHJvcGVydHk+Ci1p
bmxpbmUgTmluZVBpZWNlSW1hZ2UgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Qm9yZGVy
TWFzayhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkK
K2lubGluZSBOaW5lUGllY2VJbWFnZSBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Qm9yZGVyTWFz
ayhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIE5p
bmVQaWVjZUltYWdlIGltYWdlKE5pbmVQaWVjZUltYWdlOjpUeXBlOjpNYXNrKTsKICAgICBidWls
ZGVyU3RhdGUuc3R5bGVNYXAoKS5tYXBOaW5lUGllY2VJbWFnZShwcm9wZXJ0eSwgJnZhbHVlLCBp
bWFnZSk7CkBAIC00NjIsMTIgKzQ2MywxMiBAQCBpbmxpbmUgTmluZVBpZWNlSW1hZ2UgU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Qm9yZGVyTWFzayhTdHlsZTo6QnVpbGRlclN0YQogfQog
CiB0ZW1wbGF0ZTxDU1NQcm9wZXJ0eUlEPgotaW5saW5lIFJlZlB0cjxTdHlsZUltYWdlPiBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTdHlsZUltYWdlKFN0eWxlOjpCdWlsZGVyU3RhdGUm
IGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFJlZlB0cjxTdHlsZUltYWdl
PiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3R5bGVJbWFnZShCdWlsZGVyU3RhdGUmIGJ1aWxk
ZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIHJldHVybiBidWlsZGVyU3RhdGUuY3Jl
YXRlU3R5bGVJbWFnZSh2YWx1ZSk7CiB9CiAKLWlubGluZSBUcmFuc2Zvcm1PcGVyYXRpb25zIFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRyYW5zZm9ybShTdHlsZTo6QnVpbGRlclN0YXRl
JiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBUcmFuc2Zvcm1P
cGVyYXRpb25zIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUcmFuc2Zvcm0oQnVpbGRlclN0YXRl
JiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBUcmFuc2Zvcm1P
cGVyYXRpb25zIG9wZXJhdGlvbnM7CiAgICAgdHJhbnNmb3Jtc0ZvclZhbHVlKHZhbHVlLCBidWls
ZGVyU3RhdGUuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpLCBvcGVyYXRpb25zKTsKQEAgLTQ3
NSw3ICs0NzYsNyBAQCBpbmxpbmUgVHJhbnNmb3JtT3BlcmF0aW9ucyBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRUcmFuc2Zvcm0oU3R5bGU6OkJ1aWxkZQogfQogCiAjaWYgRU5BQkxFKERB
UktfTU9ERV9DU1MpCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OnVwZGF0ZUNv
bG9yU2NoZW1lKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1ZSwgU3R5bGVD
b2xvclNjaGVtZSYgY29sb3JTY2hlbWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ29udmVydGVyOjp1
cGRhdGVDb2xvclNjaGVtZShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgcHJpbWl0aXZlVmFsdWUs
IFN0eWxlQ29sb3JTY2hlbWUmIGNvbG9yU2NoZW1lKQogewogICAgIEFTU0VSVChwcmltaXRpdmVW
YWx1ZS5pc1ZhbHVlSUQoKSk7CiAKQEAgLTQ5OCw3ICs0OTksNyBAQCBpbmxpbmUgdm9pZCBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OnVwZGF0ZUNvbG9yU2NoZW1lKGNvbnN0IENTU1ByaW1pdGl2ZVZh
bHVlJiBwcgogICAgIH0KIH0KIAotaW5saW5lIFN0eWxlQ29sb3JTY2hlbWUgU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0Q29sb3JTY2hlbWUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0
IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBTdHlsZUNvbG9yU2NoZW1lIEJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRDb2xvclNjaGVtZShCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFs
dWUpCiB7CiAgICAgU3R5bGVDb2xvclNjaGVtZSBjb2xvclNjaGVtZTsKIApAQCAtNTE2LDI2ICs1
MTcsMjYgQEAgaW5saW5lIFN0eWxlQ29sb3JTY2hlbWUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0Q29sb3JTY2hlbWUoU3R5bGU6OkJ1aWxkZXIKIH0KICNlbmRpZgogCi1pbmxpbmUgU3Ry
aW5nIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFN0cmluZyhTdHlsZTo6QnVpbGRlclN0
YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFN0cmluZyBCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0U3RyaW5nKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkK
IHsKICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5zdHJpbmdW
YWx1ZSgpOwogfQogCi1pbmxpbmUgU3RyaW5nIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dFN0cmluZ09yQXV0byhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENT
U1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBTdHJpbmcgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFN0
cmluZ09yQXV0byhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZh
bHVlKQogewogICAgIGlmIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVl
SUQoKSA9PSBDU1NWYWx1ZUF1dG8pCiAgICAgICAgIHJldHVybiBudWxsQXRvbSgpOwogICAgIHJl
dHVybiBjb252ZXJ0U3RyaW5nKGJ1aWxkZXJTdGF0ZSwgdmFsdWUpOwogfQogCi1pbmxpbmUgU3Ry
aW5nIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFN0cmluZ09yTm9uZShTdHlsZTo6QnVp
bGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBT
dHJpbmcgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFN0cmluZ09yTm9uZShCdWlsZGVyU3RhdGUm
IGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCiAg
ICAgICAgIHJldHVybiBudWxsQXRvbSgpOwogICAgIHJldHVybiBjb252ZXJ0U3RyaW5nKGJ1aWxk
ZXJTdGF0ZSwgdmFsdWUpOwogfQogCi1pbmxpbmUgT3B0aW9uU2V0PFRleHRFbXBoYXNpc1Bvc2l0
aW9uPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OnZhbHVlVG9FbXBoYXNpc1Bvc2l0aW9uKGNvbnN0
IENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1ZSkKK2lubGluZSBPcHRpb25TZXQ8VGV4
dEVtcGhhc2lzUG9zaXRpb24+IEJ1aWxkZXJDb252ZXJ0ZXI6OnZhbHVlVG9FbXBoYXNpc1Bvc2l0
aW9uKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1ZSkKIHsKICAgICBBU1NF
UlQocHJpbWl0aXZlVmFsdWUuaXNWYWx1ZUlEKCkpOwogCkBAIC01NTYsNyArNTU3LDcgQEAgaW5s
aW5lIE9wdGlvblNldDxUZXh0RW1waGFzaXNQb3NpdGlvbj4gU3R5bGVCdWlsZGVyQ29udmVydGVy
Ojp2YWx1ZVRvRW1waGFzaXNQb3MKICAgICByZXR1cm4gUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0
RW1waGFzaXNQb3NpdGlvbigpOwogfQogCi1pbmxpbmUgT3B0aW9uU2V0PFRleHRFbXBoYXNpc1Bv
c2l0aW9uPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0RW1waGFzaXNQb3NpdGlv
bihTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIE9w
dGlvblNldDxUZXh0RW1waGFzaXNQb3NpdGlvbj4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRl
eHRFbXBoYXNpc1Bvc2l0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkK
IHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKICAgICAgICAgcmV0dXJu
IHZhbHVlVG9FbXBoYXNpc1Bvc2l0aW9uKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSkpOwpAQCAtNTY3LDcgKzU2OCw3IEBAIGlubGluZSBPcHRpb25TZXQ8VGV4dEVtcGhhc2lzUG9z
aXRpb24+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRFbXBoYXNpCiAgICAgcmV0
dXJuIHBvc2l0aW9uOwogfQogCi1pbmxpbmUgVGV4dEFsaWduTW9kZSBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRUZXh0QWxpZ24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
LCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgVGV4dEFsaWduTW9kZSBCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0VGV4dEFsaWduKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25z
dCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIEFTU0VSVChwcmltaXRpdmVWYWx1ZS5p
c1ZhbHVlSUQoKSk7CkBAIC01ODMsNyArNTg0LDcgQEAgaW5saW5lIFRleHRBbGlnbk1vZGUgU3R5
bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dEFsaWduKFN0eWxlOjpCdWlsZGVyU3RhdGUK
ICAgICByZXR1cm4gcGFyZW50U3R5bGUudGV4dEFsaWduKCk7CiB9CiAKLWlubGluZSBSZWZQdHI8
Q2xpcFBhdGhPcGVyYXRpb24+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENsaXBQYXRo
KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVl
KQoraW5saW5lIFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4gQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydENsaXBQYXRoKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYg
dmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKICAgICAg
ICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFs
dWUpOwpAQCAtNjI3LDcgKzYyOCw3IEBAIGlubGluZSBSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+
IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENsaXBQYXRoKFN0eWxlOjpCCiAgICAgcmV0
dXJuIG9wZXJhdGlvbjsKIH0KIAotaW5saW5lIFJlc2l6ZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRSZXNpemUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBD
U1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgUmVzaXplIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRS
ZXNpemUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkK
IHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSk7CiAKQEAgLTY0MCw3ICs2NDEsNyBAQCBpbmxpbmUgUmVzaXplIFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydFJlc2l6ZShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyUwog
ICAgIHJldHVybiByZXNpemU7CiB9CiAKLWlubGluZSBpbnQgU3R5bGVCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0TWFycXVlZVJlcGV0aXRpb24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENT
U1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBpbnQgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1
ZWVSZXBldGl0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAg
ICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUluZmluaXRl
KQpAQCAtNjUwLDcgKzY1MSw3IEBAIGlubGluZSBpbnQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0TWFycXVlZVJlcGV0aXRpb24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsCiAgICAgcmV0dXJu
IHByaW1pdGl2ZVZhbHVlLmludFZhbHVlKCk7CiB9CiAKLWlubGluZSBpbnQgU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0TWFycXVlZVNwZWVkKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25z
dCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgaW50IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRN
YXJxdWVlU3BlZWQoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAg
IGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KTsKICAgICBpbnQgc3BlZWQgPSA4NTsKQEAgLTY3OSw3ICs2ODAsNyBAQCBpbmxpbmUgaW50IFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVTcGVlZChTdHlsZTo6QnVpbGRlclN0
YXRlJiwgY29ucwogICAgIHJldHVybiBzcGVlZDsKIH0KIAotaW5saW5lIFJlZjxRdW90ZXNEYXRh
PiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRRdW90ZXMoU3R5bGU6OkJ1aWxkZXJTdGF0
ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBSZWY8UXVvdGVzRGF0YT4gQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydFF1b3RlcyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYg
dmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKICAgICAg
ICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09
IENTU1ZhbHVlTm9uZSk7CkBAIC03MDIsMTMgKzcwMywxMyBAQCBpbmxpbmUgUmVmPFF1b3Rlc0Rh
dGE+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFF1b3RlcyhTdHlsZTo6QnVpbGRlclN0
YXRlJgogICAgIHJldHVybiBRdW90ZXNEYXRhOjpjcmVhdGUocXVvdGVzKTsKIH0KIAotaW5saW5l
IFRleHRVbmRlcmxpbmVQb3NpdGlvbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0
VW5kZXJsaW5lUG9zaXRpb24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2
YWx1ZSkKK2lubGluZSBUZXh0VW5kZXJsaW5lUG9zaXRpb24gQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydFRleHRVbmRlcmxpbmVQb3NpdGlvbihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYg
dmFsdWUpCiB7CiAgICAgQVNTRVJUKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpOwogICAg
IHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogfQogCi1pbmxpbmUg
VGV4dFVuZGVybGluZU9mZnNldCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0VW5k
ZXJsaW5lT2Zmc2V0KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NT
VmFsdWUmIHZhbHVlKQoraW5saW5lIFRleHRVbmRlcmxpbmVPZmZzZXQgQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFRleHRVbmRlcmxpbmVPZmZzZXQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUs
IGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBBU1NFUlQoaXM8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKSk7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpOwpAQCAtNzIyLDcgKzcyMyw3IEBAIGlubGluZSBUZXh0VW5kZXJs
aW5lT2Zmc2V0IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRVbmRlcmxpbmVPZmZz
ZXQoU3R5CiAgICAgfQogfQogCi1pbmxpbmUgVGV4dERlY29yYXRpb25UaGlja25lc3MgU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dERlY29yYXRpb25UaGlja25lc3MoU3R5bGU6OkJ1
aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUg
VGV4dERlY29yYXRpb25UaGlja25lc3MgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNv
cmF0aW9uVGhpY2tuZXNzKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1
ZSYgdmFsdWUpCiB7CiAgICAgQVNTRVJUKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpOwog
ICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKTsKQEAgLTczOCw3ICs3MzksNyBAQCBpbmxpbmUgVGV4dERlY29yYXRpb25UaGlja25lc3Mg
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dERlY29yYXRpb25UaGljawogICAgIH0K
IH0KIAotaW5saW5lIFJlZlB0cjxTdHlsZVJlZmxlY3Rpb24+IFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFJlZmxlY3Rpb24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBj
b25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgUmVmUHRyPFN0eWxlUmVmbGVjdGlvbj4gQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFJlZmxlY3Rpb24oQnVpbGRlclN0YXRlJiBidWlsZGVyU3Rh
dGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKSkgewogICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKQEAgLTc1OCw3ICs3NTksNyBAQCBp
bmxpbmUgUmVmUHRyPFN0eWxlUmVmbGVjdGlvbj4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0UmVmbGVjdGlvbihTdHlsZTo6QgogICAgIHJldHVybiByZWZsZWN0aW9uOwogfQogCi1pbmxp
bmUgSW50U2l6ZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRJbml0aWFsTGV0dGVyKFN0
eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgSW50U2l6
ZSBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0SW5pdGlhbExldHRlcihCdWlsZGVyU3RhdGUmLCBj
b25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogCkBAIC03NzMsNyArNzc0LDcgQEAgaW5s
aW5lIEludFNpemUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0SW5pdGlhbExldHRlcihT
dHlsZTo6QnVpbGRlclN0YXRlJiwKICAgICByZXR1cm4gSW50U2l6ZShwYWlyLT5maXJzdCgpLT5p
bnRWYWx1ZSgpLCBwYWlyLT5zZWNvbmQoKS0+aW50VmFsdWUoKSk7CiB9CiAKLWlubGluZSBmbG9h
dCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0U3Ryb2tlV2lkdGgoU3R5bGU6OkJ1
aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUg
ZmxvYXQgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRTdHJva2VXaWR0aChCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHBy
aW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKIApAQCAt
ODAzLDcgKzgwNCw3IEBAIGlubGluZSBmbG9hdCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRUZXh0U3Ryb2tlV2lkdGgoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYKICAgICByZXR1cm4gd2lkdGg7
CiB9CiAKLWlubGluZSBPcHRpb25TZXQ8TGluZUJveENvbnRhaW4+IFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydExpbmVCb3hDb250YWluKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBD
U1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgT3B0aW9uU2V0PExpbmVCb3hDb250YWluPiBCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0TGluZUJveENvbnRhaW4oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NT
VmFsdWUmIHZhbHVlKQogewogICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7
CiAgICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVl
SUQoKSA9PSBDU1NWYWx1ZU5vbmUpOwpAQCAtODEzLDcgKzgxNCw3IEBAIGlubGluZSBPcHRpb25T
ZXQ8TGluZUJveENvbnRhaW4+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVCb3hD
b250YWluKFN0CiAgICAgcmV0dXJuIGRvd25jYXN0PENTU0xpbmVCb3hDb250YWluVmFsdWU+KHZh
bHVlKS52YWx1ZSgpOwogfQogCi1pbmxpbmUgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uU2tpcD4g
U3R5bGVCdWlsZGVyQ29udmVydGVyOjp2YWx1ZVRvRGVjb3JhdGlvblNraXAoY29uc3QgQ1NTUHJp
bWl0aXZlVmFsdWUmIHByaW1pdGl2ZVZhbHVlKQoraW5saW5lIE9wdGlvblNldDxUZXh0RGVjb3Jh
dGlvblNraXA+IEJ1aWxkZXJDb252ZXJ0ZXI6OnZhbHVlVG9EZWNvcmF0aW9uU2tpcChjb25zdCBD
U1NQcmltaXRpdmVWYWx1ZSYgcHJpbWl0aXZlVmFsdWUpCiB7CiAgICAgQVNTRVJUKHByaW1pdGl2
ZVZhbHVlLmlzVmFsdWVJRCgpKTsKIApAQCAtODM0LDcgKzgzNSw3IEBAIGlubGluZSBPcHRpb25T
ZXQ8VGV4dERlY29yYXRpb25Ta2lwPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OnZhbHVlVG9EZWNv
cmF0aW9uU2tpCiAgICAgcmV0dXJuIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvblNraXA+IHsgfTsK
IH0KIAotaW5saW5lIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvblNraXA+IFN0eWxlQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9uU2tpcChTdHlsZTo6QnVpbGRlclN0YXRlJiwg
Y29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvblNr
aXA+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0RGVjb3JhdGlvblNraXAoQnVpbGRlclN0
YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChpczxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpKQogICAgICAgICByZXR1cm4gdmFsdWVUb0RlY29yYXRpb25Ta2lwKGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpOwpAQCAtODUwLDcgKzg1MSw3IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBpc0ltYWdlU2hhcGUoY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogICAgIHJl
dHVybiBpczxDU1NJbWFnZVZhbHVlPih2YWx1ZSkgfHwgaXM8Q1NTSW1hZ2VTZXRWYWx1ZT4odmFs
dWUpIHx8IGlzPENTU0ltYWdlR2VuZXJhdG9yVmFsdWU+KHZhbHVlKTsKIH0KIAotaW5saW5lIFJl
ZlB0cjxTaGFwZVZhbHVlPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTaGFwZVZhbHVl
KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5s
aW5lIFJlZlB0cjxTaGFwZVZhbHVlPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2hhcGVWYWx1
ZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlm
IChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CiAgICAgICAgIEFTU0VSVChkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpOwpA
QCAtODg5LDcgKzg5MCw3IEBAIGlubGluZSBSZWZQdHI8U2hhcGVWYWx1ZT4gU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0U2hhcGVWYWx1ZShTdHlsZTo6QnVpbGRlCiAKICNpZiBFTkFCTEUo
Q1NTX1NDUk9MTF9TTkFQKQogCi1pbmxpbmUgU2Nyb2xsU25hcFR5cGUgU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0U2Nyb2xsU25hcFR5cGUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0
IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBTY3JvbGxTbmFwVHlwZSBCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0U2Nyb2xsU25hcFR5cGUoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZh
bHVlKQogewogICAgIFNjcm9sbFNuYXBUeXBlIHR5cGU7CiAgICAgYXV0byYgdmFsdWVzID0gZG93
bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSk7CkBAIC05MTQsNyArOTE1LDcgQEAgaW5saW5lIFNj
cm9sbFNuYXBUeXBlIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNjcm9sbFNuYXBUeXBl
KFN0eWxlOjpCdWlsZGUKICAgICByZXR1cm4gdHlwZTsKIH0KIAotaW5saW5lIFNjcm9sbFNuYXBB
bGlnbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTY3JvbGxTbmFwQWxpZ24oU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBTY3JvbGxTbmFw
QWxpZ24gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNjcm9sbFNuYXBBbGlnbihCdWlsZGVyU3Rh
dGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgdmFsdWVzID0gZG93bmNh
c3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSk7CiAgICAgU2Nyb2xsU25hcEFsaWduIGFsaWdubWVudDsK
QEAgLTkyOCw3ICs5MjksNyBAQCBpbmxpbmUgU2Nyb2xsU25hcEFsaWduIFN0eWxlQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydFNjcm9sbFNuYXBBbGlnbihTdHlsZTo6QnVpbAogCiAjZW5kaWYKIAot
aW5saW5lIEdyaWRMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tC
cmVhZHRoKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1ZSwgU3R5bGU6OkJ1
aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIEdyaWRMZW5ndGggQnVpbGRlckNvbnZl
cnRlcjo6Y3JlYXRlR3JpZFRyYWNrQnJlYWR0aChjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgcHJp
bWl0aXZlVmFsdWUsIEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGlmIChwcmlt
aXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVNaW5Db250ZW50IHx8IHByaW1pdGl2ZVZh
bHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZVdlYmtpdE1pbkNvbnRlbnQpCiAgICAgICAgIHJldHVy
biBMZW5ndGgoTWluQ29udGVudCk7CkBAIC05NDMsNyArOTQ0LDcgQEAgaW5saW5lIEdyaWRMZW5n
dGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tCcmVhZHRoKGNvbnN0IENT
U1ByaW1pdGkKICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUuY29udmVydFRvTGVuZ3RoPEZpeGVk
SW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8IENhbGN1bGF0ZWRDb252ZXJz
aW9uIHwgQXV0b0NvbnZlcnNpb24+KGJ1aWxkZXJTdGF0ZS5jc3NUb0xlbmd0aENvbnZlcnNpb25E
YXRhKCkpOwogfQogCi1pbmxpbmUgR3JpZFRyYWNrU2l6ZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNyZWF0ZUdyaWRUcmFja1NpemUoY29uc3QgQ1NTVmFsdWUmIHZhbHVlLCBTdHlsZTo6QnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgR3JpZFRyYWNrU2l6ZSBCdWlsZGVyQ29udmVy
dGVyOjpjcmVhdGVHcmlkVHJhY2tTaXplKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgQnVpbGRlclN0
YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSkpCiAgICAgICAgIHJldHVybiBHcmlkVHJhY2tTaXplKGNyZWF0ZUdyaWRUcmFja0JyZWFkdGgo
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSwgYnVpbGRlclN0YXRlKSk7CkBAIC05
NTQsNyArOTU1LDcgQEAgaW5saW5lIEdyaWRUcmFja1NpemUgU3R5bGVCdWlsZGVyQ29udmVydGVy
OjpjcmVhdGVHcmlkVHJhY2tTaXplKGNvbnN0IENTU1ZhbHVlJgogICAgIGlmIChmdW5jdGlvbi5s
ZW5ndGgoKSA9PSAxKQogICAgICAgICByZXR1cm4gR3JpZFRyYWNrU2l6ZShjcmVhdGVHcmlkVHJh
Y2tCcmVhZHRoKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqZnVuY3Rpb24uaXRlbVdpdGhv
dXRCb3VuZHNDaGVjaygwKSksIGJ1aWxkZXJTdGF0ZSksIEZpdENvbnRlbnRUcmFja1NpemluZyk7
CiAKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihmdW5jdGlvbi5sZW5ndGgo
KSA9PSAyKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGZ1
bmN0aW9uLmxlbmd0aCgpID09IDIpOwogICAgIEdyaWRMZW5ndGggbWluVHJhY2tCcmVhZHRoKGNy
ZWF0ZUdyaWRUcmFja0JyZWFkdGgoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpmdW5jdGlv
bi5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDApKSwgYnVpbGRlclN0YXRlKSk7CiAgICAgR3JpZExl
bmd0aCBtYXhUcmFja0JyZWFkdGgoY3JlYXRlR3JpZFRyYWNrQnJlYWR0aChkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4oKmZ1bmN0aW9uLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSkpLCBidWls
ZGVyU3RhdGUpKTsKICAgICByZXR1cm4gR3JpZFRyYWNrU2l6ZShtaW5UcmFja0JyZWFkdGgsIG1h
eFRyYWNrQnJlYWR0aCk7CkBAIC05NzMsNyArOTc0LDcgQEAgc3RhdGljIHZvaWQgY3JlYXRlR3Jp
ZExpbmVOYW1lc0xpc3QoY29uc3QgQ1NTVmFsdWUmIHZhbHVlLCB1bnNpZ25lZCBjdXJyZW50TmFt
ZWQKICAgICB9CiB9CiAKLXN0cnVjdCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OlRyYWNrc0RhdGEg
eworc3RydWN0IEJ1aWxkZXJDb252ZXJ0ZXI6OlRyYWNrc0RhdGEgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFRyYWNrc0RhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBUcmFja3NEYXRhKCkgPSBkZWZhdWx0OwpAQCAtOTg4LDcgKzk4OSw3IEBAIHB1YmxpYzoK
ICAgICBBdXRvUmVwZWF0VHlwZSBtX2F1dG9SZXBlYXRUeXBlIHsgUmVuZGVyU3R5bGU6OmluaXRp
YWxHcmlkQXV0b1JlcGVhdFR5cGUoKSB9OwogfTsKIAotaW5saW5lIGJvb2wgU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tMaXN0KGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgVHJh
Y2tzRGF0YSYgdHJhY2tzRGF0YSwgU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQor
aW5saW5lIGJvb2wgQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFRyYWNrTGlzdChjb25zdCBD
U1NWYWx1ZSYgdmFsdWUsIFRyYWNrc0RhdGEmIHRyYWNrc0RhdGEsIEJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlKQogewogICAgIC8vIEhhbmRsZSAnbm9uZScuCiAgICAgaWYgKGlzPENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSkpCkBAIC0xMDQ0LDcgKzEwNDUsNyBAQCBpbmxpbmUgYm9vbCBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFja0xpc3QoY29uc3QgQ1NTVmFsdWUmIHZh
bHVlLCBUcgogICAgIHJldHVybiB0cnVlOwogfQogCi1pbmxpbmUgYm9vbCBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNyZWF0ZUdyaWRQb3NpdGlvbihjb25zdCBDU1NWYWx1ZSYgdmFsdWUsIEdyaWRQ
b3NpdGlvbiYgcG9zaXRpb24pCitpbmxpbmUgYm9vbCBCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVH
cmlkUG9zaXRpb24oY29uc3QgQ1NTVmFsdWUmIHZhbHVlLCBHcmlkUG9zaXRpb24mIHBvc2l0aW9u
KQogewogICAgIC8vIFdlIGFjY2VwdCB0aGUgc3BlY2lmaWNhdGlvbidzIGdyYW1tYXI6CiAgICAg
Ly8gYXV0byB8IDxjdXN0b20taWRlbnQ+IHwgWyA8aW50ZWdlcj4gJiYgPGN1c3RvbS1pZGVudD4/
IF0gfCBbIHNwYW4gJiYgWyA8aW50ZWdlcj4gfHwgPGN1c3RvbS1pZGVudD4gXSBdCkBAIC0xMDk0
LDcgKzEwOTUsNyBAQCBpbmxpbmUgYm9vbCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdy
aWRQb3NpdGlvbihjb25zdCBDU1NWYWx1ZSYgdmFsdWUsIEdyaQogICAgIHJldHVybiB0cnVlOwog
fQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUltcGxpY2l0TmFt
ZWRHcmlkTGluZXNGcm9tR3JpZEFyZWEoY29uc3QgTmFtZWRHcmlkQXJlYU1hcCYgbmFtZWRHcmlk
QXJlYXMsIE5hbWVkR3JpZExpbmVzTWFwJiBuYW1lZEdyaWRMaW5lcywgR3JpZFRyYWNrU2l6aW5n
RGlyZWN0aW9uIGRpcmVjdGlvbikKK2lubGluZSB2b2lkIEJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0
ZUltcGxpY2l0TmFtZWRHcmlkTGluZXNGcm9tR3JpZEFyZWEoY29uc3QgTmFtZWRHcmlkQXJlYU1h
cCYgbmFtZWRHcmlkQXJlYXMsIE5hbWVkR3JpZExpbmVzTWFwJiBuYW1lZEdyaWRMaW5lcywgR3Jp
ZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBmb3IgKGF1dG8mIGFyZWEg
OiBuYW1lZEdyaWRBcmVhcykgewogICAgICAgICBHcmlkU3BhbiBhcmVhU3BhbiA9IGRpcmVjdGlv
biA9PSBGb3JSb3dzID8gYXJlYS52YWx1ZS5yb3dzIDogYXJlYS52YWx1ZS5jb2x1bW5zOwpAQCAt
MTExMSw3ICsxMTEyLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjcmVh
dGVJbXBsaWNpdE5hbWVkR3JpZExpbmVzRnJvbUdyaWRBcmVhKGNvbnMKICAgICB9CiB9CiAKLWlu
bGluZSBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
R3JpZFRyYWNrU2l6ZUxpc3QoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25z
dCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgVmVjdG9yPEdyaWRUcmFja1NpemU+IEJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRHcmlkVHJhY2tTaXplTGlzdChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJT
dGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIEFTU0VSVCh2YWx1ZS5pc1ZhbHVl
TGlzdCgpKTsKICAgICBhdXRvJiB2YWx1ZUxpc3QgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZh
bHVlKTsKQEAgLTExMjYsMTIgKzExMjcsMTIgQEAgaW5saW5lIFZlY3RvcjxHcmlkVHJhY2tTaXpl
PiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHcmlkVHJhY2tTaXplTGlzdChTdHkKICAg
ICByZXR1cm4gdHJhY2tTaXplczsKIH0KIAotaW5saW5lIEdyaWRUcmFja1NpemUgU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0R3JpZFRyYWNrU2l6ZShTdHlsZTo6QnVpbGRlclN0YXRlJiBi
dWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBHcmlkVHJhY2tTaXpl
IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHcmlkVHJhY2tTaXplKEJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUdy
aWRUcmFja1NpemUodmFsdWUsIGJ1aWxkZXJTdGF0ZSk7CiB9CiAKLWlubGluZSBPcHRpb25hbDxH
cmlkUG9zaXRpb24+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRQb3NpdGlvbihT
dHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIE9wdGlv
bmFsPEdyaWRQb3NpdGlvbj4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRQb3NpdGlvbihC
dWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgR3JpZFBvc2l0aW9u
IGdyaWRQb3NpdGlvbjsKICAgICBpZiAoY3JlYXRlR3JpZFBvc2l0aW9uKHZhbHVlLCBncmlkUG9z
aXRpb24pKQpAQCAtMTEzOSw3ICsxMTQwLDcgQEAgaW5saW5lIE9wdGlvbmFsPEdyaWRQb3NpdGlv
bj4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R3JpZFBvc2l0aW9uKFN0eWxlOjoKICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCi1pbmxpbmUgR3JpZEF1dG9GbG93IFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRBdXRvRmxvdyhTdHlsZTo6QnVpbGRlclN0YXRlJiwg
Y29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIEdyaWRBdXRvRmxvdyBCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0R3JpZEF1dG9GbG93KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2
YWx1ZSkKIHsKICAgICBhdXRvJiBsaXN0ID0gZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSk7
CiAgICAgaWYgKCFsaXN0Lmxlbmd0aCgpKQpAQCAtMTE3Nyw3ICsxMTc4LDcgQEAgaW5saW5lIEdy
aWRBdXRvRmxvdyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHcmlkQXV0b0Zsb3coU3R5
bGU6OkJ1aWxkZXJTdGEKICAgICByZXR1cm4gYXV0b0Zsb3c7CiB9CiAKLWlubGluZSBDU1NUb0xl
bmd0aENvbnZlcnNpb25EYXRhIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3NzdG9MZW5ndGhDb252
ZXJzaW9uRGF0YVdpdGhUZXh0Wm9vbUZhY3RvcihTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVy
U3RhdGUpCitpbmxpbmUgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSBCdWlsZGVyQ29udmVydGVy
Ojpjc3N0b0xlbmd0aENvbnZlcnNpb25EYXRhV2l0aFRleHRab29tRmFjdG9yKEJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGlmIChhdXRvKiBmcmFtZSA9IGJ1aWxkZXJTdGF0ZS5k
b2N1bWVudCgpLmZyYW1lKCkpIHsKICAgICAgICAgZmxvYXQgdGV4dFpvb21GYWN0b3IgPSBidWls
ZGVyU3RhdGUuc3R5bGUoKS50ZXh0Wm9vbSgpICE9IFRleHRab29tOjpSZXNldCA/IGZyYW1lLT50
ZXh0Wm9vbUZhY3RvcigpIDogMS4wZjsKQEAgLTExODYsNyArMTE4Nyw3IEBAIGlubGluZSBDU1NU
b0xlbmd0aENvbnZlcnNpb25EYXRhIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3NzdG9MZW5ndGhD
b252ZXJzaW9uRGF0CiAgICAgcmV0dXJuIGJ1aWxkZXJTdGF0ZS5jc3NUb0xlbmd0aENvbnZlcnNp
b25EYXRhKCk7CiB9CiAKLWlubGluZSBPcHRpb25hbDxMZW5ndGg+IFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydFdvcmRTcGFjaW5nKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0
ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIE9wdGlvbmFsPExlbmd0aD4gQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydFdvcmRTcGFjaW5nKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
LCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgT3B0aW9uYWw8TGVuZ3RoPiB3b3JkU3Bh
Y2luZzsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSk7CkBAIC0xMjAyLDcgKzEyMDMsNyBAQCBpbmxpbmUgT3B0aW9uYWw8TGVuZ3Ro
PiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRXb3JkU3BhY2luZyhTdHlsZTo6QnVpbGRl
cgogICAgIHJldHVybiB3b3JkU3BhY2luZzsKIH0KIAotaW5saW5lIE9wdGlvbmFsPGZsb2F0PiBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQZXJzcGVjdGl2ZShTdHlsZTo6QnVpbGRlclN0
YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBPcHRpb25h
bDxmbG9hdD4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBlcnNwZWN0aXZlKEJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJp
bWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGlm
IChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQpAQCAtMTIxOSw3ICsx
MjIwLDcgQEAgaW5saW5lIE9wdGlvbmFsPGZsb2F0PiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRQZXJzcGVjdGl2ZShTdHlsZTo6QnVpbGRlclMKICAgICByZXR1cm4gcGVyc3BlY3RpdmUg
PCAwID8gT3B0aW9uYWw8ZmxvYXQ+KFdURjo6bnVsbG9wdCkgOiBPcHRpb25hbDxmbG9hdD4ocGVy
c3BlY3RpdmUpOwogfQogCi1pbmxpbmUgT3B0aW9uYWw8TGVuZ3RoPiBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVlSW5jcmVtZW50KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxk
ZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIE9wdGlvbmFsPExlbmd0aD4g
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVJbmNyZW1lbnQoQnVpbGRlclN0YXRlJiBi
dWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBPcHRpb25hbDxMZW5n
dGg+IG1hcnF1ZWVMZW5ndGg7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwpAQCAtMTI0NSw3ICsxMjQ2LDcgQEAgaW5saW5lIE9w
dGlvbmFsPExlbmd0aD4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TWFycXVlZUluY3Jl
bWVudChTdHlsZTo6QnUKICAgICByZXR1cm4gbWFycXVlZUxlbmd0aDsKIH0KIAotaW5saW5lIE9w
dGlvbmFsPEZpbHRlck9wZXJhdGlvbnM+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZp
bHRlck9wZXJhdGlvbnMoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBD
U1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgT3B0aW9uYWw8RmlsdGVyT3BlcmF0aW9ucz4gQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydEZpbHRlck9wZXJhdGlvbnMoQnVpbGRlclN0YXRlJiBidWlsZGVy
U3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBGaWx0ZXJPcGVyYXRpb25zIG9w
ZXJhdGlvbnM7CiAgICAgaWYgKGJ1aWxkZXJTdGF0ZS5jcmVhdGVGaWx0ZXJPcGVyYXRpb25zKHZh
bHVlLCBvcGVyYXRpb25zKSkKQEAgLTEyNTMsNyArMTI1NCw3IEBAIGlubGluZSBPcHRpb25hbDxG
aWx0ZXJPcGVyYXRpb25zPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGaWx0ZXJPcGVy
YXRpb25zCiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAotaW5saW5lIEZvbnRGZWF0dXJl
U2V0dGluZ3MgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udEZlYXR1cmVTZXR0aW5n
cyhTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIEZv
bnRGZWF0dXJlU2V0dGluZ3MgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRGZWF0dXJlU2V0
dGluZ3MoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChp
czxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CiAgICAgICAgIEFTU0VSVChkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCk7CkBA
IC0xMjY4LDcgKzEyNjksNyBAQCBpbmxpbmUgRm9udEZlYXR1cmVTZXR0aW5ncyBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250RmVhdHVyZVNldHRpbmdzKFN0eQogICAgIHJldHVybiBz
ZXR0aW5nczsKIH0KIAotaW5saW5lIEZvbnRTZWxlY3Rpb25WYWx1ZSBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRGb250V2VpZ2h0RnJvbVZhbHVlKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkK
K2lubGluZSBGb250U2VsZWN0aW9uVmFsdWUgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRX
ZWlnaHRGcm9tVmFsdWUoY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIEFTU0VSVChpczxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKTsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CkBAIC0xMjkxLDcgKzEyOTIsNyBAQCBp
bmxpbmUgRm9udFNlbGVjdGlvblZhbHVlIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZv
bnRXZWlnaHRGcm9tVmFsdWUoY29ucwogICAgIH0KIH0KIAotaW5saW5lIEZvbnRTZWxlY3Rpb25W
YWx1ZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250U3RyZXRjaEZyb21WYWx1ZShj
b25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgRm9udFNlbGVjdGlvblZhbHVlIEJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRGb250U3RyZXRjaEZyb21WYWx1ZShjb25zdCBDU1NWYWx1ZSYgdmFs
dWUpCiB7CiAgICAgQVNTRVJUKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpOwogICAgIGNv
bnN0IGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKTsKQEAgLTEzMDcsNyArMTMwOCw3IEBAIGlubGluZSBGb250U2VsZWN0aW9uVmFsdWUgU3R5
bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN0cmV0Y2hGcm9tVmFsdWUoY29uCiB9CiAK
IC8vIFRoZSBpbnB1dCB2YWx1ZSBuZWVkcyB0byBwYXJzZWQgYW5kIHZhbGlkLCB0aGlzIGZ1bmN0
aW9uIHJldHVybnMgV1RGOjpudWxsb3B0IGlmIHRoZSBpbnB1dCB3YXMgIm5vcm1hbCIuCi1pbmxp
bmUgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRGb250U3R5bGVGcm9tVmFsdWUoY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIE9w
dGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRT
dHlsZUZyb21WYWx1ZShjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgQVNTRVJUKGlzPENT
U0ZvbnRTdHlsZVZhbHVlPih2YWx1ZSkpOwogICAgIGNvbnN0IGF1dG8mIGZvbnRTdHlsZVZhbHVl
ID0gZG93bmNhc3Q8Q1NTRm9udFN0eWxlVmFsdWU+KHZhbHVlKTsKQEAgLTEzMjMsNyArMTMyNCw3
IEBAIGlubGluZSBPcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydEZvbnRTdHlsZUZyb21WCiAgICAgcmV0dXJuIGl0YWxpY1ZhbHVlKCk7CiB9
CiAKLWlubGluZSBGb250U2VsZWN0aW9uVmFsdWUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0Rm9udFdlaWdodChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENT
U1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBGb250U2VsZWN0aW9uVmFsdWUgQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydEZvbnRXZWlnaHQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENT
U1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBBU1NFUlQoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KSk7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpOwpAQCAtMTMzNywxMyArMTMzOCwxMyBAQCBpbmxpbmUgRm9udFNlbGVjdGlvblZh
bHVlIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRXZWlnaHQoU3R5bGU6OkJ1aWxk
ZQogICAgIHJldHVybiBjb252ZXJ0Rm9udFdlaWdodEZyb21WYWx1ZSh2YWx1ZSk7CiB9CiAKLWlu
bGluZSBGb250U2VsZWN0aW9uVmFsdWUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9u
dFN0cmV0Y2goU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lu
bGluZSBGb250U2VsZWN0aW9uVmFsdWUgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRTdHJl
dGNoKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICByZXR1cm4g
Y29udmVydEZvbnRTdHJldGNoRnJvbVZhbHVlKHZhbHVlKTsKIH0KIAogI2lmIEVOQUJMRShWQVJJ
QVRJT05fRk9OVFMpCi1pbmxpbmUgRm9udFZhcmlhdGlvblNldHRpbmdzIFN0eWxlQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydEZvbnRWYXJpYXRpb25TZXR0aW5ncyhTdHlsZTo6QnVpbGRlclN0YXRl
JiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIEZvbnRWYXJpYXRpb25TZXR0aW5ncyBC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFZhcmlhdGlvblNldHRpbmdzKEJ1aWxkZXJTdGF0
ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKSkgewogICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpOwpAQCAtMTM2MCwyMSArMTM2MSwy
MSBAQCBpbmxpbmUgRm9udFZhcmlhdGlvblNldHRpbmdzIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydEZvbnRWYXJpYXRpb25TZXR0aW5ncwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQotaW5saW5lIGJvb2wgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG91Y2hD
YWxsb3V0KFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxp
bmUgYm9vbCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG91Y2hDYWxsb3V0KEJ1aWxkZXJTdGF0
ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICByZXR1cm4gIWVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuc3RyaW5n
VmFsdWUoKSwgIm5vbmUiKTsKIH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
LWlubGluZSBDb2xvciBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUYXBIaWdobGlnaHRD
b2xvcihTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2
YWx1ZSkKK2lubGluZSBDb2xvciBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGFwSGlnaGxpZ2h0
Q29sb3IoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkK
IHsKICAgICByZXR1cm4gYnVpbGRlclN0YXRlLmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpOwogfQogI2VuZGlmCiAKICNpZiBFTkFCTEUo
UE9JTlRFUl9FVkVOVFMpCi1pbmxpbmUgT3B0aW9uU2V0PFRvdWNoQWN0aW9uPiBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRUb3VjaEFjdGlvbihTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29u
c3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIE9wdGlvblNldDxUb3VjaEFjdGlvbj4gQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydFRvdWNoQWN0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1Zh
bHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKICAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CkBAIC0xMzk2
LDE4ICsxMzk3LDE4IEBAIGlubGluZSBPcHRpb25TZXQ8VG91Y2hBY3Rpb24+IFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydFRvdWNoQWN0aW9uKFN0eWxlOjpCCiAjZW5kaWYKIAogI2lmIEVO
QUJMRShPVkVSRkxPV19TQ1JPTExJTkdfVE9VQ0gpCi1pbmxpbmUgYm9vbCBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRPdmVyZmxvd1Njcm9sbGluZyhTdHlsZTo6QnVpbGRlclN0YXRlJiwg
Y29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIGJvb2wgQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydE92ZXJmbG93U2Nyb2xsaW5nKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1
ZSkKIHsKICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1
ZUlEKCkgPT0gQ1NTVmFsdWVUb3VjaDsKIH0KICNlbmRpZgogCi1pbmxpbmUgU1ZHTGVuZ3RoVmFs
dWUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U1ZHTGVuZ3RoVmFsdWUoU3R5bGU6OkJ1
aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBTVkdMZW5ndGhWYWx1
ZSBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U1ZHTGVuZ3RoVmFsdWUoQnVpbGRlclN0YXRlJiwg
Y29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIHJldHVybiBTVkdMZW5ndGhWYWx1ZTo6ZnJv
bUNTU1ByaW1pdGl2ZVZhbHVlKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpOwog
fQogCi1pbmxpbmUgVmVjdG9yPFNWR0xlbmd0aFZhbHVlPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRTVkdMZW5ndGhWZWN0b3IoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
LCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgVmVjdG9yPFNWR0xlbmd0aFZhbHVlPiBC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U1ZHTGVuZ3RoVmVjdG9yKEJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgdmFsdWVMaXN0
ID0gZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSk7CiAKQEAgLTE0MTksNyArMTQyMCw3IEBA
IGlubGluZSBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydFNWR0xlbmd0aFZlY3RvcihTdHlsCiAgICAgcmV0dXJuIHN2Z0xlbmd0aHM7CiB9CiAKLWlu
bGluZSBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dFN0cm9rZURhc2hBcnJheShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0
IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IEJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRTdHJva2VEYXNoQXJyYXkoQnVpbGRlclN0YXRlJiBidWlsZGVyU3Rh
dGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKSkgewogICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKQEAgLTE0MjksNyArMTQzMCw3IEBA
IGlubGluZSBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydFN0cm9rZURhc2hBcnJheShTdHlsCiAgICAgcmV0dXJuIGNvbnZlcnRTVkdMZW5ndGhWZWN0
b3IoYnVpbGRlclN0YXRlLCB2YWx1ZSk7CiB9CiAKLWlubGluZSBQYWludE9yZGVyIFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFBhaW50T3JkZXIoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNv
bnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBQYWludE9yZGVyIEJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRQYWludE9yZGVyKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkK
IHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewogICAgICAgICBBU1NF
UlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFs
dWVOb3JtYWwpOwpAQCAtMTQ1MCw3ICsxNDUxLDcgQEAgaW5saW5lIFBhaW50T3JkZXIgU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UGFpbnRPcmRlcihTdHlsZTo6QnVpbGRlclN0YXRlJiwK
ICAgICB9CiB9CiAKLWlubGluZSBmbG9hdCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRP
cGFjaXR5KFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxp
bmUgZmxvYXQgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE9wYWNpdHkoQnVpbGRlclN0YXRlJiwg
Y29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBmbG9hdCBvcGFjaXR5ID0gcHJp
bWl0aXZlVmFsdWUuZmxvYXRWYWx1ZSgpOwpAQCAtMTQ1OSw3ICsxNDYwLDcgQEAgaW5saW5lIGZs
b2F0IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE9wYWNpdHkoU3R5bGU6OkJ1aWxkZXJT
dGF0ZSYsIGNvbnN0IEMKICAgICByZXR1cm4gc3RkOjptYXgoMC4wZiwgc3RkOjptaW4oMS4wZiwg
b3BhY2l0eSkpOwogfQogCi1pbmxpbmUgU3RyaW5nIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydFNWR1VSSVJlZmVyZW5jZShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNv
bnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBTdHJpbmcgQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydFNWR1VSSVJlZmVyZW5jZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NT
VmFsdWUmIHZhbHVlKQogewogICAgIFN0cmluZyBzOwogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVl
ID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKQEAgLTE0NjksMTIgKzE0NzAs
MTIgQEAgaW5saW5lIFN0cmluZyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTVkdVUklS
ZWZlcmVuY2UoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYKICAgICByZXR1cm4gU1ZHVVJJUmVmZXJlbmNl
OjpmcmFnbWVudElkZW50aWZpZXJGcm9tSVJJU3RyaW5nKHMsIGJ1aWxkZXJTdGF0ZS5kb2N1bWVu
dCgpKTsKIH0KIAotaW5saW5lIENvbG9yIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNW
R0NvbG9yKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUm
IHZhbHVlKQoraW5saW5lIENvbG9yIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTVkdDb2xvcihC
dWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAg
IHJldHVybiBidWlsZGVyU3RhdGUuY29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKSk7CiB9CiAKLWlubGluZSBTdHlsZVNlbGZBbGlnbm1lbnRE
YXRhIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNlbGZPckRlZmF1bHRBbGlnbm1lbnRE
YXRhKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUg
U3R5bGVTZWxmQWxpZ25tZW50RGF0YSBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2VsZk9yRGVm
YXVsdEFsaWdubWVudERhdGEoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQog
ewogICAgIFN0eWxlU2VsZkFsaWdubWVudERhdGEgYWxpZ25tZW50RGF0YSA9IFJlbmRlclN0eWxl
Ojppbml0aWFsU2VsZkFsaWdubWVudCgpOwogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKQEAgLTE0ODIsMTEgKzE0ODMsMTEgQEAg
aW5saW5lIFN0eWxlU2VsZkFsaWdubWVudERhdGEgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0U2VsZk9yRGVmYXVsdEFsaWdubWUKICAgICAgICAgaWYgKHBhaXJWYWx1ZS0+Zmlyc3QoKS0+
dmFsdWVJRCgpID09IENTU1ZhbHVlTGVnYWN5KSB7CiAgICAgICAgICAgICBhbGlnbm1lbnREYXRh
LnNldFBvc2l0aW9uVHlwZShJdGVtUG9zaXRpb25UeXBlOjpMZWdhY3kpOwogICAgICAgICAgICAg
YWxpZ25tZW50RGF0YS5zZXRQb3NpdGlvbigqcGFpclZhbHVlLT5zZWNvbmQoKSk7Ci0gICAgICAg
IH0gZWxzZSBpZiAocGFpclZhbHVlLT5maXJzdCgpLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVGaXJz
dCkgeworICAgICAgICB9IGVsc2UgaWYgKHBhaXJWYWx1ZS0+Zmlyc3QoKS0+dmFsdWVJRCgpID09
IENTU1ZhbHVlRmlyc3QpCiAgICAgICAgICAgICBhbGlnbm1lbnREYXRhLnNldFBvc2l0aW9uKEl0
ZW1Qb3NpdGlvbjo6QmFzZWxpbmUpOwotICAgICAgICB9IGVsc2UgaWYgKHBhaXJWYWx1ZS0+Zmly
c3QoKS0+dmFsdWVJRCgpID09IENTU1ZhbHVlTGFzdCkgeworICAgICAgICBlbHNlIGlmIChwYWly
VmFsdWUtPmZpcnN0KCktPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxhc3QpCiAgICAgICAgICAgICBh
bGlnbm1lbnREYXRhLnNldFBvc2l0aW9uKEl0ZW1Qb3NpdGlvbjo6TGFzdEJhc2VsaW5lKTsKLSAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBhbGlnbm1lbnREYXRh
LnNldE92ZXJmbG93KCpwYWlyVmFsdWUtPmZpcnN0KCkpOwogICAgICAgICAgICAgYWxpZ25tZW50
RGF0YS5zZXRQb3NpdGlvbigqcGFpclZhbHVlLT5zZWNvbmQoKSk7CiAgICAgICAgIH0KQEAgLTE0
OTUsNyArMTQ5Niw3IEBAIGlubGluZSBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydFNlbGZPckRlZmF1bHRBbGlnbm1lCiAgICAgcmV0dXJuIGFsaWdu
bWVudERhdGE7CiB9CiAKLWlubGluZSBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhIFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydENvbnRlbnRBbGlnbm1lbnREYXRhKFN0eWxlOjpCdWlsZGVy
U3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgU3R5bGVDb250ZW50QWxpZ25t
ZW50RGF0YSBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q29udGVudEFsaWdubWVudERhdGEoQnVp
bGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIFN0eWxlQ29udGVudEFs
aWdubWVudERhdGEgYWxpZ25tZW50RGF0YSA9IFJlbmRlclN0eWxlOjppbml0aWFsQ29udGVudEFs
aWdubWVudCgpOwogICAgIGlmICghaXM8Q1NTQ29udGVudERpc3RyaWJ1dGlvblZhbHVlPih2YWx1
ZSkpCkBAIC0xNTEwLDcgKzE1MTEsNyBAQCBpbmxpbmUgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0
YSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDb250ZW50QWxpZ25tZW50RAogICAgIHJl
dHVybiBhbGlnbm1lbnREYXRhOwogfQogCi1pbmxpbmUgR2x5cGhPcmllbnRhdGlvbiBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHbHlwaE9yaWVudGF0aW9uKFN0eWxlOjpCdWlsZGVyU3Rh
dGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgR2x5cGhPcmllbnRhdGlvbiBCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0R2x5cGhPcmllbnRhdGlvbihCdWlsZGVyU3RhdGUmLCBjb25z
dCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgZmxvYXQgYW5nbGUgPSBmYWJzZihmbW9kZihkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmZsb2F0VmFsdWUoKSwgMzYwLjBmKSk7CiAg
ICAgaWYgKGFuZ2xlIDw9IDQ1LjBmIHx8IGFuZ2xlID4gMzE1LjBmKQpAQCAtMTUyMiwyMSArMTUy
MywyMSBAQCBpbmxpbmUgR2x5cGhPcmllbnRhdGlvbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRHbHlwaE9yaWVudGF0aW9uKFN0eWxlOjpCdQogICAgIHJldHVybiBHbHlwaE9yaWVudGF0
aW9uOjpEZWdyZWVzMjcwOwogfQogCi1pbmxpbmUgR2x5cGhPcmllbnRhdGlvbiBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRHbHlwaE9yaWVudGF0aW9uT3JBdXRvKFN0eWxlOjpCdWlsZGVy
U3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIEdseXBo
T3JpZW50YXRpb24gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdseXBoT3JpZW50YXRpb25PckF1
dG8oQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsK
ICAgICBpZiAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0g
Q1NTVmFsdWVBdXRvKQogICAgICAgICByZXR1cm4gR2x5cGhPcmllbnRhdGlvbjo6QXV0bzsKICAg
ICByZXR1cm4gY29udmVydEdseXBoT3JpZW50YXRpb24oYnVpbGRlclN0YXRlLCB2YWx1ZSk7CiB9
CiAKLWlubGluZSBPcHRpb25hbDxMZW5ndGg+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dExpbmVIZWlnaHQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NW
YWx1ZSYgdmFsdWUsIGZsb2F0IG11bHRpcGxpZXIpCitpbmxpbmUgT3B0aW9uYWw8TGVuZ3RoPiBC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGluZUhlaWdodChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJT
dGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlLCBmbG9hdCBtdWx0aXBsaWVyKQogewogICAgIGF1
dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsK
ICAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKQogICAg
ICAgICByZXR1cm4gUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCk7CiAKICAgICBpZiAo
cHJpbWl0aXZlVmFsdWUuaXNMZW5ndGgoKSkgewotICAgICAgICBMZW5ndGggbGVuZ3RoID0gcHJp
bWl0aXZlVmFsdWUuY29tcHV0ZUxlbmd0aDxMZW5ndGg+KFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y3NzdG9MZW5ndGhDb252ZXJzaW9uRGF0YVdpdGhUZXh0Wm9vbUZhY3RvcihidWlsZGVyU3RhdGUp
KTsKKyAgICAgICAgTGVuZ3RoIGxlbmd0aCA9IHByaW1pdGl2ZVZhbHVlLmNvbXB1dGVMZW5ndGg8
TGVuZ3RoPihCdWlsZGVyQ29udmVydGVyOjpjc3N0b0xlbmd0aENvbnZlcnNpb25EYXRhV2l0aFRl
eHRab29tRmFjdG9yKGJ1aWxkZXJTdGF0ZSkpOwogICAgICAgICBpZiAobXVsdGlwbGllciAhPSAx
LmYpCiAgICAgICAgICAgICBsZW5ndGggPSBMZW5ndGgobGVuZ3RoLnZhbHVlKCkgKiBtdWx0aXBs
aWVyLCBGaXhlZCk7CiAgICAgICAgIHJldHVybiBsZW5ndGg7CkBAIC0xNTYwLDcgKzE1NjEsNyBA
QCBpbmxpbmUgT3B0aW9uYWw8TGVuZ3RoPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRM
aW5lSGVpZ2h0KFN0eWxlOjpCdWlsZGVyUwogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAK
LWlubGluZSBGb250U3ludGhlc2lzIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRT
eW50aGVzaXMoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lu
bGluZSBGb250U3ludGhlc2lzIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250U3ludGhlc2lz
KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewogICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKQEAgLTE1ODks
NyArMTU5MCw3IEBAIGlubGluZSBGb250U3ludGhlc2lzIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydEZvbnRTeW50aGVzaXMoU3R5bGU6OkJ1aWxkZXJTCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KICAgICAKLWlubGluZSBPcHRpb25TZXQ8U3BlYWtBcz4gU3R5bGVCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0U3BlYWtBcyhTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZh
bHVlKQoraW5saW5lIE9wdGlvblNldDxTcGVha0FzPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
U3BlYWtBcyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0
byByZXN1bHQgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbFNwZWFrQXMoKTsKICAgICBpZiAoaXM8Q1NT
VmFsdWVMaXN0Pih2YWx1ZSkpIHsKQEAgLTE1OTksNyArMTYwMCw3IEBAIGlubGluZSBPcHRpb25T
ZXQ8U3BlYWtBcz4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3BlYWtBcyhTdHlsZTo6
QnVpbGRlclN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIE9wdGlvblNldDxIYW5n
aW5nUHVuY3R1YXRpb24+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEhhbmdpbmdQdW5j
dHVhdGlvbihTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5s
aW5lIE9wdGlvblNldDxIYW5naW5nUHVuY3R1YXRpb24+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRIYW5naW5nUHVuY3R1YXRpb24oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVl
KQogewogICAgIGF1dG8gcmVzdWx0ID0gUmVuZGVyU3R5bGU6OmluaXRpYWxIYW5naW5nUHVuY3R1
YXRpb24oKTsKICAgICBpZiAoaXM8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKQEAgLTE2MDksOSAr
MTYxMCwxMCBAQCBpbmxpbmUgT3B0aW9uU2V0PEhhbmdpbmdQdW5jdHVhdGlvbj4gU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0SGFuZ2luZ1B1bmN0dQogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLWlubGluZSBHYXBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R2FwTGVu
Z3RoKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZh
bHVlKQoraW5saW5lIEdhcExlbmd0aCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R2FwTGVuZ3Ro
KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAg
ICAgcmV0dXJuIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9
PSBDU1NWYWx1ZU5vcm1hbCkgPyBHYXBMZW5ndGgoKSA6IEdhcExlbmd0aChjb252ZXJ0TGVuZ3Ro
KGJ1aWxkZXJTdGF0ZSwgdmFsdWUpKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfQor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKc2ltaWxhcml0eSBpbmRl
eCA4MSUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5o
CnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaAppbmRl
eCA1MGRmMjMxMmQzNi4uOTA0Y2QwMzQ3MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZUJ1aWxkZXJDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1
aWxkZXJDdXN0b20uaApAQCAtNTIsMTEgKzUyLDEyIEBACiAjaW5jbHVkZSAiV2lsbENoYW5nZURh
dGEuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIFN0eWxlIHsKIAogI2RlZmlu
ZSBERUNMQVJFX1BST1BFUlRZX0NVU1RPTV9IQU5ETEVSUyhwcm9wZXJ0eSkgXAotICAgIHN0YXRp
YyB2b2lkIGFwcGx5SW5oZXJpdCMjcHJvcGVydHkoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYpOyBcCi0g
ICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsIyNwcm9wZXJ0eShTdHlsZTo6QnVpbGRlclN0YXRl
Jik7IFwKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlIyNwcm9wZXJ0eShTdHlsZTo6QnVpbGRl
clN0YXRlJiwgQ1NTVmFsdWUmKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdCMjcHJvcGVy
dHkoQnVpbGRlclN0YXRlJik7IFwKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWwjI3Byb3Bl
cnR5KEJ1aWxkZXJTdGF0ZSYpOyBcCisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZSMjcHJvcGVy
dHkoQnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUmKQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxp
bmUgVCBmb3J3YXJkSW5oZXJpdGVkVmFsdWUoVCYmIHZhbHVlKSB7IHJldHVybiBzdGQ6OmZvcndh
cmQ8VD4odmFsdWUpOyB9CiBpbmxpbmUgTGVuZ3RoIGZvcndhcmRJbmhlcml0ZWRWYWx1ZShjb25z
dCBMZW5ndGgmIHZhbHVlKSB7IGF1dG8gY29weSA9IHZhbHVlOyByZXR1cm4gY29weTsgfQpAQCAt
NjUsNyArNjYsNyBAQCBpbmxpbmUgTGVuZ3RoQm94IGZvcndhcmRJbmhlcml0ZWRWYWx1ZShjb25z
dCBMZW5ndGhCb3gmIHZhbHVlKSB7IGF1dG8gY29weSA9IHZhbAogaW5saW5lIEdhcExlbmd0aCBm
b3J3YXJkSW5oZXJpdGVkVmFsdWUoY29uc3QgR2FwTGVuZ3RoJiB2YWx1ZSkgeyBhdXRvIGNvcHkg
PSB2YWx1ZTsgcmV0dXJuIGNvcHk7IH0KIAogLy8gTm90ZSB0aGF0IHdlIGFzc3VtZSB0aGUgQ1NT
IHBhcnNlciBvbmx5IGFsbG93cyB2YWxpZCBDU1NWYWx1ZSB0eXBlcy4KLWNsYXNzIFN0eWxlQnVp
bGRlckN1c3RvbSB7CitjbGFzcyBCdWlsZGVyQ3VzdG9tIHsKIHB1YmxpYzoKICAgICAvLyBDdXN0
b20gaGFuZGxpbmcgb2YgaW5oZXJpdCwgaW5pdGlhbCBhbmQgdmFsdWUgc2V0dGluZy4KICAgICBE
RUNMQVJFX1BST1BFUlRZX0NVU1RPTV9IQU5ETEVSUyhCb3JkZXJJbWFnZU91dHNldCk7CkBAIC0x
MDksMTA1ICsxMTAsMTA1IEBAIHB1YmxpYzoKICAgICBERUNMQVJFX1BST1BFUlRZX0NVU1RPTV9I
QU5ETEVSUyhab29tKTsKIAogICAgIC8vIEN1c3RvbSBoYW5kbGluZyBvZiBpbml0aWFsICsgaW5o
ZXJpdCB2YWx1ZSBzZXR0aW5nIG9ubHkuCi0gICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsV2Vi
a2l0TWFza0ltYWdlKFN0eWxlOjpCdWlsZGVyU3RhdGUmKSB7IH0KLSAgICBzdGF0aWMgdm9pZCBh
cHBseUluaGVyaXRXZWJraXRNYXNrSW1hZ2UoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYpIHsgfQotICAg
IHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbEZvbnRGZWF0dXJlU2V0dGluZ3MoU3R5bGU6OkJ1aWxk
ZXJTdGF0ZSYpIHsgfQotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdEZvbnRGZWF0dXJlU2V0
dGluZ3MoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYpIHsgfQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5p
dGlhbFdlYmtpdE1hc2tJbWFnZShCdWlsZGVyU3RhdGUmKSB7IH0KKyAgICBzdGF0aWMgdm9pZCBh
cHBseUluaGVyaXRXZWJraXRNYXNrSW1hZ2UoQnVpbGRlclN0YXRlJikgeyB9CisgICAgc3RhdGlj
IHZvaWQgYXBwbHlJbml0aWFsRm9udEZlYXR1cmVTZXR0aW5ncyhCdWlsZGVyU3RhdGUmKSB7IH0K
KyAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRGb250RmVhdHVyZVNldHRpbmdzKEJ1aWxkZXJT
dGF0ZSYpIHsgfQogI2lmIEVOQUJMRShWQVJJQVRJT05fRk9OVFMpCi0gICAgc3RhdGljIHZvaWQg
YXBwbHlJbml0aWFsRm9udFZhcmlhdGlvblNldHRpbmdzKFN0eWxlOjpCdWlsZGVyU3RhdGUmKSB7
IH0KLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRGb250VmFyaWF0aW9uU2V0dGluZ3MoU3R5
bGU6OkJ1aWxkZXJTdGF0ZSYpIHsgfQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbEZvbnRW
YXJpYXRpb25TZXR0aW5ncyhCdWlsZGVyU3RhdGUmKSB7IH0KKyAgICBzdGF0aWMgdm9pZCBhcHBs
eUluaGVyaXRGb250VmFyaWF0aW9uU2V0dGluZ3MoQnVpbGRlclN0YXRlJikgeyB9CiAjZW5kaWYK
IAogICAgIC8vIEN1c3RvbSBoYW5kbGluZyBvZiBpbmhlcml0ICsgdmFsdWUgc2V0dGluZyBvbmx5
LgotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdERpc3BsYXkoU3R5bGU6OkJ1aWxkZXJTdGF0
ZSYpOwotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVEaXNwbGF5KFN0eWxlOjpCdWlsZGVyU3Rh
dGUmLCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdERpc3BsYXkoQnVp
bGRlclN0YXRlJik7CisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZURpc3BsYXkoQnVpbGRlclN0
YXRlJiwgQ1NTVmFsdWUmKTsKIAogICAgIC8vIEN1c3RvbSBoYW5kbGluZyBvZiB2YWx1ZSBzZXR0
aW5nIG9ubHkuCi0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZUJhc2VsaW5lU2hpZnQoU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZURp
cmVjdGlvbihTdHlsZTo6QnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgdm9p
ZCBhcHBseVZhbHVlVmVydGljYWxBbGlnbihTdHlsZTo6QnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUm
KTsKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxUZXh0QWxpZ24oU3R5bGU6OkJ1aWxkZXJT
dGF0ZSYpOwotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVUZXh0QWxpZ24oU3R5bGU6OkJ1aWxk
ZXJTdGF0ZSYsIENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZVdlYmtpdExv
Y2FsZShTdHlsZTo6QnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgdm9pZCBh
cHBseVZhbHVlV2Via2l0VGV4dE9yaWVudGF0aW9uKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBDU1NW
YWx1ZSYpOworICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVCYXNlbGluZVNoaWZ0KEJ1aWxkZXJT
dGF0ZSYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZURpcmVjdGlvbihC
dWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVWZXJ0
aWNhbEFsaWduKEJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIHZvaWQgYXBw
bHlJbml0aWFsVGV4dEFsaWduKEJ1aWxkZXJTdGF0ZSYpOworICAgIHN0YXRpYyB2b2lkIGFwcGx5
VmFsdWVUZXh0QWxpZ24oQnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgdm9p
ZCBhcHBseVZhbHVlV2Via2l0TG9jYWxlKEJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7CisgICAg
c3RhdGljIHZvaWQgYXBwbHlWYWx1ZVdlYmtpdFRleHRPcmllbnRhdGlvbihCdWlsZGVyU3RhdGUm
LCBDU1NWYWx1ZSYpOwogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCi0gICAgc3RhdGljIHZv
aWQgYXBwbHlWYWx1ZVdlYmtpdFRleHRTaXplQWRqdXN0KFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBD
U1NWYWx1ZSYpOworICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVXZWJraXRUZXh0U2l6ZUFkanVz
dChCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYpOwogI2VuZGlmCi0gICAgc3RhdGljIHZvaWQgYXBw
bHlWYWx1ZVdlYmtpdFRleHRab29tKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYpOwot
ICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVXcml0aW5nTW9kZShTdHlsZTo6QnVpbGRlclN0YXRl
JiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlQWx0KFN0eWxlOjpCdWls
ZGVyU3RhdGUmLCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVXaWxsQ2hh
bmdlKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyB2b2lkIGFw
cGx5VmFsdWVXZWJraXRUZXh0Wm9vbShCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYpOworICAgIHN0
YXRpYyB2b2lkIGFwcGx5VmFsdWVXcml0aW5nTW9kZShCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYp
OworICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVBbHQoQnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUm
KTsKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlV2lsbENoYW5nZShCdWlsZGVyU3RhdGUmLCBD
U1NWYWx1ZSYpOwogCiAjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCi0gICAgc3RhdGljIHZvaWQg
YXBwbHlWYWx1ZUNvbG9yU2NoZW1lKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYpOwor
ICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVDb2xvclNjaGVtZShCdWlsZGVyU3RhdGUmLCBDU1NW
YWx1ZSYpOwogI2VuZGlmCiAKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlU3Ryb2tlV2lkdGgo
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlW
YWx1ZVN0cm9rZUNvbG9yKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYpOworICAgIHN0
YXRpYyB2b2lkIGFwcGx5VmFsdWVTdHJva2VXaWR0aChCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYp
OworICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVTdHJva2VDb2xvcihCdWlsZGVyU3RhdGUmLCBD
U1NWYWx1ZSYpOwogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsQ3VzdG9tUHJvcGVydHko
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSos
IGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpOwotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdEN1
c3RvbVByb3BlcnR5KFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NSZWdpc3RlcmVkQ3Vz
dG9tUHJvcGVydHkqLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lKTsKLSAgICBzdGF0aWMgdm9pZCBh
cHBseVZhbHVlQ3VzdG9tUHJvcGVydHkoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1Jl
Z2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSosIENTU0N1c3RvbVByb3BlcnR5VmFsdWUmKTsKKyAgICBz
dGF0aWMgdm9pZCBhcHBseUluaXRpYWxDdXN0b21Qcm9wZXJ0eShCdWlsZGVyU3RhdGUmLCBjb25z
dCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkqLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lKTsK
KyAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRDdXN0b21Qcm9wZXJ0eShCdWlsZGVyU3RhdGUm
LCBjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkqLCBjb25zdCBBdG9tU3RyaW5nJiBu
YW1lKTsKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlQ3VzdG9tUHJvcGVydHkoQnVpbGRlclN0
YXRlJiwgY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5KiwgQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZSYpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyB2b2lkIHJlc2V0RWZmZWN0aXZlWm9v
bShTdHlsZTo6QnVpbGRlclN0YXRlJik7CisgICAgc3RhdGljIHZvaWQgcmVzZXRFZmZlY3RpdmVa
b29tKEJ1aWxkZXJTdGF0ZSYpOwogCiAgICAgc3RhdGljIExlbmd0aCBtbUxlbmd0aChkb3VibGUg
bW0pOwogICAgIHN0YXRpYyBMZW5ndGggaW5jaExlbmd0aChkb3VibGUgaW5jaCk7CiAgICAgc3Rh
dGljIGJvb2wgZ2V0UGFnZVNpemVGcm9tTmFtZShDU1NQcmltaXRpdmVWYWx1ZSogcGFnZVNpemVO
YW1lLCBDU1NQcmltaXRpdmVWYWx1ZSogcGFnZU9yaWVudGF0aW9uLCBMZW5ndGgmIHdpZHRoLCBM
ZW5ndGgmIGhlaWdodCk7CiAKICAgICB0ZW1wbGF0ZSA8Q1NTUHJvcGVydHlJRCBpZD4KLSAgICBz
dGF0aWMgdm9pZCBhcHBseVRleHRPckJveFNoYWRvd1ZhbHVlKFN0eWxlOjpCdWlsZGVyU3RhdGUm
LCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBib29sIGlzVmFsaWREaXNwbGF5VmFsdWUoU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYsIERpc3BsYXlUeXBlKTsKKyAgICBzdGF0aWMgdm9pZCBhcHBseVRleHRP
ckJveFNoYWRvd1ZhbHVlKEJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIGJv
b2wgaXNWYWxpZERpc3BsYXlWYWx1ZShCdWlsZGVyU3RhdGUmLCBEaXNwbGF5VHlwZSk7CiAKICAg
ICBlbnVtIENvdW50ZXJCZWhhdmlvciB7SW5jcmVtZW50ID0gMCwgUmVzZXR9OwogICAgIHRlbXBs
YXRlIDxDb3VudGVyQmVoYXZpb3IgY291bnRlckJlaGF2aW9yPgotICAgIHN0YXRpYyB2b2lkIGFw
cGx5SW5oZXJpdENvdW50ZXIoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYpOworICAgIHN0YXRpYyB2b2lk
IGFwcGx5SW5oZXJpdENvdW50ZXIoQnVpbGRlclN0YXRlJik7CiAgICAgdGVtcGxhdGUgPENvdW50
ZXJCZWhhdmlvciBjb3VudGVyQmVoYXZpb3I+Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZUNv
dW50ZXIoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIHZvaWQg
YXBwbHlWYWx1ZUNvdW50ZXIoQnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUmKTsKIAogICAgIHN0YXRp
YyBmbG9hdCBsYXJnZXJGb250U2l6ZShmbG9hdCBzaXplKTsKICAgICBzdGF0aWMgZmxvYXQgc21h
bGxlckZvbnRTaXplKGZsb2F0IHNpemUpOwotICAgIHN0YXRpYyBmbG9hdCBkZXRlcm1pbmVSdWJ5
VGV4dFNpemVNdWx0aXBsaWVyKFN0eWxlOjpCdWlsZGVyU3RhdGUmKTsKKyAgICBzdGF0aWMgZmxv
YXQgZGV0ZXJtaW5lUnVieVRleHRTaXplTXVsdGlwbGllcihCdWlsZGVyU3RhdGUmKTsKIH07CiAK
LWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZURpcmVjdGlvbihTdHls
ZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2
b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVEaXJlY3Rpb24oQnVpbGRlclN0YXRlJiBidWls
ZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5z
ZXREaXJlY3Rpb24oZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSk7CiAgICAgYnVp
bGRlclN0YXRlLnN0eWxlKCkuc2V0SGFzRXhwbGljaXRseVNldERpcmVjdGlvbih0cnVlKTsKIH0K
IAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxUZXh0QWxpZ24o
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1
c3RvbTo6YXBwbHlJbml0aWFsVGV4dEFsaWduKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQog
ewogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldFRleHRBbGlnbihSZW5kZXJTdHlsZTo6aW5p
dGlhbFRleHRBbGlnbigpKTsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRIYXNFeHBsaWNp
dGx5U2V0VGV4dEFsaWduKHRydWUpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0
b206OmFwcGx5VmFsdWVUZXh0QWxpZ24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
LCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVl
VGV4dEFsaWduKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7
Ci0gICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0VGV4dEFsaWduKFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydFRleHRBbGlnbihidWlsZGVyU3RhdGUsIHZhbHVlKSk7CisgICAgYnVpbGRl
clN0YXRlLnN0eWxlKCkuc2V0VGV4dEFsaWduKEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0
QWxpZ24oYnVpbGRlclN0YXRlLCB2YWx1ZSkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNl
dEhhc0V4cGxpY2l0bHlTZXRUZXh0QWxpZ24odHJ1ZSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxl
QnVpbGRlckN1c3RvbTo6cmVzZXRFZmZlY3RpdmVab29tKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OnJlc2V0RWZmZWN0aXZlWm9v
bShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICAvLyBSZXNldCB0aGUgem9vbSBp
biBlZmZlY3QuIFRoaXMgYWxsb3dzIHRoZSBzZXRab29tIG1ldGhvZCB0byBhY2N1cmF0ZWx5IGNv
bXB1dGUgYSBuZXcgem9vbSBpbiBlZmZlY3QuCiAgICAgYnVpbGRlclN0YXRlLnNldEVmZmVjdGl2
ZVpvb20oYnVpbGRlclN0YXRlLnBhcmVudFN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsKIH0KIAot
aW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxab29tKFN0eWxlOjpC
dWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFw
cGx5SW5pdGlhbFpvb20oQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgcmVzZXRF
ZmZlY3RpdmVab29tKGJ1aWxkZXJTdGF0ZSk7CiAgICAgYnVpbGRlclN0YXRlLnNldFpvb20oUmVu
ZGVyU3R5bGU6OmluaXRpYWxab29tKCkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5SW5oZXJpdFpvb20oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
KQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Wm9vbShCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICByZXNldEVmZmVjdGl2ZVpvb20oYnVpbGRlclN0YXRl
KTsKICAgICBidWlsZGVyU3RhdGUuc2V0Wm9vbShidWlsZGVyU3RhdGUucGFyZW50U3R5bGUoKS56
b29tKCkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVa
b29tKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQor
aW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVpvb20oQnVpbGRlclN0YXRlJiBi
dWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1
ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAKQEAgLTIzMSwxNyArMjMy
LDE3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVpvb20oU3R5
bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlCiAgICAgICAgICAgICBidWlsZGVyU3RhdGUu
c2V0Wm9vbShudW1iZXIpOwogICAgIH0KIH0KLWlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVyQ3Vz
dG9tOjptbUxlbmd0aChkb3VibGUgbW0pCitpbmxpbmUgTGVuZ3RoIEJ1aWxkZXJDdXN0b206Om1t
TGVuZ3RoKGRvdWJsZSBtbSkKIHsKICAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVlKENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobW0sIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTU0pKTsK
ICAgICByZXR1cm4gdmFsdWUuZ2V0KCkuY29tcHV0ZUxlbmd0aDxMZW5ndGg+KENTU1RvTGVuZ3Ro
Q29udmVyc2lvbkRhdGEoKSk7CiB9Ci1pbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRlckN1c3RvbTo6
aW5jaExlbmd0aChkb3VibGUgaW5jaCkKK2lubGluZSBMZW5ndGggQnVpbGRlckN1c3RvbTo6aW5j
aExlbmd0aChkb3VibGUgaW5jaCkKIHsKICAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVl
KENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoaW5jaCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19J
TikpOwogICAgIHJldHVybiB2YWx1ZS5nZXQoKS5jb21wdXRlTGVuZ3RoPExlbmd0aD4oQ1NTVG9M
ZW5ndGhDb252ZXJzaW9uRGF0YSgpKTsKIH0KLWJvb2wgU3R5bGVCdWlsZGVyQ3VzdG9tOjpnZXRQ
YWdlU2l6ZUZyb21OYW1lKENTU1ByaW1pdGl2ZVZhbHVlKiBwYWdlU2l6ZU5hbWUsIENTU1ByaW1p
dGl2ZVZhbHVlKiBwYWdlT3JpZW50YXRpb24sIExlbmd0aCYgd2lkdGgsIExlbmd0aCYgaGVpZ2h0
KQorYm9vbCBCdWlsZGVyQ3VzdG9tOjpnZXRQYWdlU2l6ZUZyb21OYW1lKENTU1ByaW1pdGl2ZVZh
bHVlKiBwYWdlU2l6ZU5hbWUsIENTU1ByaW1pdGl2ZVZhbHVlKiBwYWdlT3JpZW50YXRpb24sIExl
bmd0aCYgd2lkdGgsIExlbmd0aCYgaGVpZ2h0KQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxMZW5ndGg+IGE1V2lkdGgobW1MZW5ndGgoMTQ4KSk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPExlbmd0aD4gYTVIZWlnaHQobW1MZW5ndGgoMjEwKSk7CkBAIC0zMTUsNyArMzE2LDcgQEAg
Ym9vbCBTdHlsZUJ1aWxkZXJDdXN0b206OmdldFBhZ2VTaXplRnJvbU5hbWUoQ1NTUHJpbWl0aXZl
VmFsdWUqIHBhZ2VTaXplTmFtZSwgQ1MKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlVmVydGljYWxBbGlnbihTdHlsZTo6QnVp
bGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2b2lkIEJ1
aWxkZXJDdXN0b206OmFwcGx5VmFsdWVWZXJ0aWNhbEFsaWduKEJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1
ZS52YWx1ZUlEKCkpCkBAIC0zMjYsMjEgKzMyNywyMSBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxk
ZXJDdXN0b206OmFwcGx5VmFsdWVWZXJ0aWNhbEFsaWduKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1
aQogCiAjaWYgRU5BQkxFKENTU19JTUFHRV9SRVNPTFVUSU9OKQogCi1pbmxpbmUgdm9pZCBTdHls
ZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEltYWdlUmVzb2x1dGlvbihTdHlsZTo6QnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUlu
aGVyaXRJbWFnZVJlc29sdXRpb24oQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAg
YnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0SW1hZ2VSZXNvbHV0aW9uU291cmNlKGJ1aWxkZXJTdGF0
ZS5wYXJlbnRTdHlsZSgpLmltYWdlUmVzb2x1dGlvblNvdXJjZSgpKTsKICAgICBidWlsZGVyU3Rh
dGUuc3R5bGUoKS5zZXRJbWFnZVJlc29sdXRpb25TbmFwKGJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHls
ZSgpLmltYWdlUmVzb2x1dGlvblNuYXAoKSk7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0
SW1hZ2VSZXNvbHV0aW9uKGJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLmltYWdlUmVzb2x1dGlv
bigpKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxJ
bWFnZVJlc29sdXRpb24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5l
IHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsSW1hZ2VSZXNvbHV0aW9uKEJ1aWxkZXJT
dGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldEltYWdl
UmVzb2x1dGlvblNvdXJjZShSZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdlUmVzb2x1dGlvblNvdXJj
ZSgpKTsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRJbWFnZVJlc29sdXRpb25TbmFwKFJl
bmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9uU25hcCgpKTsKICAgICBidWlsZGVyU3Rh
dGUuc3R5bGUoKS5zZXRJbWFnZVJlc29sdXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxJbWFnZVJl
c29sdXRpb24oKSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlW
YWx1ZUltYWdlUmVzb2x1dGlvbihTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENT
U1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVJbWFn
ZVJlc29sdXRpb24oQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkK
IHsKICAgICBJbWFnZVJlc29sdXRpb25Tb3VyY2Ugc291cmNlID0gUmVuZGVyU3R5bGU6OmluaXRp
YWxJbWFnZVJlc29sdXRpb25Tb3VyY2UoKTsKICAgICBJbWFnZVJlc29sdXRpb25TbmFwIHNuYXAg
PSBSZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdlUmVzb2x1dGlvblNuYXAoKTsKQEAgLTM2MSwxMSAr
MzYyLDExIEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUltYWdl
UmVzb2x1dGlvbihTdHlsZTo6QnVpbGRlclN0YXRlJiBiCiAKICNlbmRpZiAvLyBFTkFCTEUoQ1NT
X0lNQUdFX1JFU09MVVRJT04pCiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlJbmhlcml0U2l6ZShTdHlsZTo6QnVpbGRlclN0YXRlJikgeyB9CitpbmxpbmUgdm9pZCBCdWls
ZGVyQ3VzdG9tOjphcHBseUluaGVyaXRTaXplKEJ1aWxkZXJTdGF0ZSYpIHsgfQogCi1pbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbFNpemUoU3R5bGU6OkJ1aWxkZXJT
dGF0ZSYpIHsgfQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsU2l6ZShC
dWlsZGVyU3RhdGUmKSB7IH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eVZhbHVlU2l6ZShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2
YWx1ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVTaXplKEJ1aWxkZXJT
dGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYnVpbGRlclN0YXRl
LnN0eWxlKCkucmVzZXRQYWdlU2l6ZVR5cGUoKTsKIApAQCAtNDQxLDcgKzQ0Miw3IEBAIGlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVNpemUoU3R5bGU6OkJ1aWxkZXJT
dGF0ZSYgYnVpbGRlclN0YXRlCiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0UGFnZVNpemUo
eyBXVEZNb3ZlKHdpZHRoKSwgV1RGTW92ZShoZWlnaHQpIH0pOwogfQogCi1pbmxpbmUgdm9pZCBT
dHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFRleHRJbmRlbnQoU3R5bGU6OkJ1aWxkZXJT
dGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhl
cml0VGV4dEluZGVudChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBidWlsZGVy
U3RhdGUuc3R5bGUoKS5zZXRUZXh0SW5kZW50KExlbmd0aCB7IGJ1aWxkZXJTdGF0ZS5wYXJlbnRT
dHlsZSgpLnRleHRJbmRlbnQoKSB9KTsKICNpZiBFTkFCTEUoQ1NTM19URVhUKQpAQCAtNDUwLDcg
KzQ1MSw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0VGV4
dEluZGVudChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsCiAjZW5kaWYKIH0KIAotaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxUZXh0SW5kZW50KFN0eWxlOjpCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5
SW5pdGlhbFRleHRJbmRlbnQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYnVp
bGRlclN0YXRlLnN0eWxlKCkuc2V0VGV4dEluZGVudChSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRJ
bmRlbnQoKSk7CiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKQEAgLTQ1OSw3ICs0NjAsNyBAQCBpbmxp
bmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbFRleHRJbmRlbnQoU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYgYnVpbAogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZVRleHRJbmRlbnQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBs
eVZhbHVlVGV4dEluZGVudChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZh
bHVlKQogewogICAgIExlbmd0aCBsZW5ndGhPclBlcmNlbnRhZ2VWYWx1ZTsKICNpZiBFTkFCTEUo
Q1NTM19URVhUKQpAQCAtNDkzLDcgKzQ5NCw3IEBAIGVudW0gQm9yZGVySW1hZ2VNb2RpZmllclR5
cGUgeyBPdXRzZXQsIFJlcGVhdCwgU2xpY2UsIFdpZHRoIH07CiB0ZW1wbGF0ZSA8Qm9yZGVySW1h
Z2VUeXBlIHR5cGUsIEJvcmRlckltYWdlTW9kaWZpZXJUeXBlIG1vZGlmaWVyPgogY2xhc3MgQXBw
bHlQcm9wZXJ0eUJvcmRlckltYWdlTW9kaWZpZXIgewogcHVibGljOgotICAgIHN0YXRpYyB2b2lk
IGFwcGx5SW5oZXJpdFZhbHVlKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKKyAg
ICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0
ZSkKICAgICB7CiAgICAgICAgIE5pbmVQaWVjZUltYWdlIGltYWdlKGdldFZhbHVlKGJ1aWxkZXJT
dGF0ZS5zdHlsZSgpKSk7CiAgICAgICAgIHN3aXRjaCAobW9kaWZpZXIpIHsKQEAgLTUxMyw3ICs1
MTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHNldFZhbHVlKGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLCBp
bWFnZSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlh
bFZhbHVlKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogICAgIHsKICAgICAgICAgTmluZVBp
ZWNlSW1hZ2UgaW1hZ2UoZ2V0VmFsdWUoYnVpbGRlclN0YXRlLnN0eWxlKCkpKTsKICAgICAgICAg
c3dpdGNoIChtb2RpZmllcikgewpAQCAtNTQxLDcgKzU0Miw3IEBAIHB1YmxpYzoKICAgICAgICAg
c2V0VmFsdWUoYnVpbGRlclN0YXRlLnN0eWxlKCksIGltYWdlKTsKICAgICB9CiAKLSAgICBzdGF0
aWMgdm9pZCBhcHBseVZhbHVlKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NT
VmFsdWUmIHZhbHVlKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQnVpbGRlclN0YXRlJiBi
dWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKICAgICB7CiAgICAgICAgIE5pbmVQaWVjZUlt
YWdlIGltYWdlKGdldFZhbHVlKGJ1aWxkZXJTdGF0ZS5zdHlsZSgpKSk7CiAgICAgICAgIHN3aXRj
aCAobW9kaWZpZXIpIHsKQEAgLTU3NCwxNSArNTc1LDE1IEBAIHByaXZhdGU6CiB9OwogCiAjZGVm
aW5lIERFRklORV9CT1JERVJfSU1BR0VfTU9ESUZJRVJfSEFORExFUih0eXBlLCBtb2RpZmllcikg
XAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXQjI3R5cGUjI21v
ZGlmaWVyKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkgXAoraW5saW5lIHZvaWQg
QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0IyN0eXBlIyNtb2RpZmllcihCdWlsZGVyU3RhdGUm
IGJ1aWxkZXJTdGF0ZSkgXAogeyBcCiAgICAgQXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlTW9kaWZp
ZXI8dHlwZSwgbW9kaWZpZXI+OjphcHBseUluaGVyaXRWYWx1ZShidWlsZGVyU3RhdGUpOyBcCiB9
IFwKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsIyN0eXBlIyNt
b2RpZmllcihTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpIFwKK2lubGluZSB2b2lk
IEJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbCMjdHlwZSMjbW9kaWZpZXIoQnVpbGRlclN0YXRl
JiBidWlsZGVyU3RhdGUpIFwKIHsgXAogICAgIEFwcGx5UHJvcGVydHlCb3JkZXJJbWFnZU1vZGlm
aWVyPHR5cGUsIG1vZGlmaWVyPjo6YXBwbHlJbml0aWFsVmFsdWUoYnVpbGRlclN0YXRlKTsgXAog
fSBcCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWUjI3R5cGUjI21v
ZGlmaWVyKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVl
KSBcCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlIyN0eXBlIyNtb2RpZmll
cihCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKSBcCiB7IFwKICAg
ICBBcHBseVByb3BlcnR5Qm9yZGVySW1hZ2VNb2RpZmllcjx0eXBlLCBtb2RpZmllcj46OmFwcGx5
VmFsdWUoYnVpbGRlclN0YXRlLCB2YWx1ZSk7IFwKIH0KQEAgLTU5OCwxMyArNTk5LDEzIEBAIERF
RklORV9CT1JERVJfSU1BR0VfTU9ESUZJRVJfSEFORExFUihXZWJraXRNYXNrQm94SW1hZ2UsIFdp
ZHRoKQogCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKIAotaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRMaW5lSGVpZ2h0KFN0eWxlOjpCdWlsZGVyU3RhdGUm
IGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdExp
bmVIZWlnaHQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYnVpbGRlclN0YXRl
LnN0eWxlKCkuc2V0TGluZUhlaWdodChMZW5ndGggeyBidWlsZGVyU3RhdGUucGFyZW50U3R5bGUo
KS5saW5lSGVpZ2h0KCkgfSk7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0U3BlY2lmaWVk
TGluZUhlaWdodChMZW5ndGggeyBidWlsZGVyU3RhdGUucGFyZW50U3R5bGUoKS5zcGVjaWZpZWRM
aW5lSGVpZ2h0KCkgfSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlJbml0aWFsTGluZUhlaWdodChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitp
bmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxMaW5lSGVpZ2h0KEJ1aWxkZXJT
dGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldExpbmVI
ZWlnaHQoUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCkpOwogICAgIGJ1aWxkZXJTdGF0
ZS5zdHlsZSgpLnNldFNwZWNpZmllZExpbmVIZWlnaHQoUmVuZGVyU3R5bGU6OmluaXRpYWxTcGVj
aWZpZWRMaW5lSGVpZ2h0KCkpOwpAQCAtNjU0LDkgKzY1NSw5IEBAIHN0YXRpYyBpbmxpbmUgZmxv
YXQgY29tcHV0ZUxpbmVIZWlnaHRNdWx0aXBsaWVyRHVlVG9Gb250U2l6ZShjb25zdCBEb2N1bWVu
dCYgZG9jCiAgICAgcmV0dXJuIDE7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlWYWx1ZUxpbmVIZWlnaHQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
LCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVl
TGluZUhlaWdodChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQog
ewotICAgIE9wdGlvbmFsPExlbmd0aD4gbGluZUhlaWdodCA9IFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydExpbmVIZWlnaHQoYnVpbGRlclN0YXRlLCB2YWx1ZSwgMSk7CisgICAgT3B0aW9u
YWw8TGVuZ3RoPiBsaW5lSGVpZ2h0ID0gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVIZWln
aHQoYnVpbGRlclN0YXRlLCB2YWx1ZSwgMSk7CiAgICAgaWYgKCFsaW5lSGVpZ2h0KQogICAgICAg
ICByZXR1cm47CiAKQEAgLTY2OSw3ICs2NzAsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5VmFsdWVMaW5lSGVpZ2h0KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZQog
ICAgICAgICBpZiAobXVsdGlwbGllciA9PSAxKQogICAgICAgICAgICAgY29tcHV0ZWRMaW5lSGVp
Z2h0ID0gbGluZUhlaWdodC52YWx1ZSgpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb21w
dXRlZExpbmVIZWlnaHQgPSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMaW5lSGVpZ2h0
KGJ1aWxkZXJTdGF0ZSwgdmFsdWUsIG11bHRpcGxpZXIpLnZhbHVlKCk7CisgICAgICAgICAgICBj
b21wdXRlZExpbmVIZWlnaHQgPSBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGluZUhlaWdodChi
dWlsZGVyU3RhdGUsIHZhbHVlLCBtdWx0aXBsaWVyKS52YWx1ZSgpOwogICAgIH0KIAogICAgIGJ1
aWxkZXJTdGF0ZS5zdHlsZSgpLnNldExpbmVIZWlnaHQoV1RGTW92ZShjb21wdXRlZExpbmVIZWln
aHQpKTsKQEAgLTY3OCwxOSArNjc5LDE5IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlWYWx1ZUxpbmVIZWlnaHQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlCiAKICNl
bmRpZgogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdE91dGxp
bmVTdHlsZShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBC
dWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRPdXRsaW5lU3R5bGUoQnVpbGRlclN0YXRlJiBidWls
ZGVyU3RhdGUpCiB7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0T3V0bGluZVN0eWxlSXNB
dXRvKGJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLm91dGxpbmVTdHlsZUlzQXV0bygpKTsKICAg
ICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRPdXRsaW5lU3R5bGUoYnVpbGRlclN0YXRlLnBhcmVu
dFN0eWxlKCkub3V0bGluZVN0eWxlKCkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5SW5pdGlhbE91dGxpbmVTdHlsZShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWls
ZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxPdXRsaW5l
U3R5bGUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYnVpbGRlclN0YXRlLnN0
eWxlKCkuc2V0T3V0bGluZVN0eWxlSXNBdXRvKFJlbmRlclN0eWxlOjppbml0aWFsT3V0bGluZVN0
eWxlSXNBdXRvKCkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldE91dGxpbmVTdHlsZShS
ZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlclN0eWxlKCkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHls
ZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVPdXRsaW5lU3R5bGUoU3R5bGU6OkJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3Vz
dG9tOjphcHBseVZhbHVlT3V0bGluZVN0eWxlKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBD
U1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogCkBAIC02OTgsMTMgKzY5OSwxMyBAQCBpbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVPdXRsaW5lU3R5bGUoU3R5bGU6OkJ1
aWxkZXJTdGF0ZSYgYnVpbAogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldE91dGxpbmVTdHls
ZShwcmltaXRpdmVWYWx1ZSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6
YXBwbHlJbml0aWFsQ2xpcChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxp
bmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxDbGlwKEJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlKQogewogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldENsaXAoTGVuZ3RoKCks
IExlbmd0aCgpLCBMZW5ndGgoKSwgTGVuZ3RoKCkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgp
LnNldEhhc0NsaXAoZmFsc2UpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206
OmFwcGx5SW5oZXJpdENsaXAoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5s
aW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Q2xpcChCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSkKIHsKICAgICBhdXRvJiBwYXJlbnRTdHlsZSA9IGJ1aWxkZXJTdGF0ZS5wYXJl
bnRTdHlsZSgpOwogICAgIGlmICghcGFyZW50U3R5bGUuaGFzQ2xpcCgpKQpAQCAtNzE0LDcgKzcx
NSw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Q2xpcChT
dHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhCiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCku
c2V0SGFzQ2xpcCh0cnVlKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjph
cHBseVZhbHVlQ2xpcChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVl
JiB2YWx1ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDbGlwKEJ1aWxk
ZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJp
bWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGlm
IChhdXRvKiByZWN0ID0gcHJpbWl0aXZlVmFsdWUucmVjdFZhbHVlKCkpIHsKQEAgLTczMSw3ICs3
MzIsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDbGlwKFN0
eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZQogICAgIH0KIH0KIAotaW5saW5lIHZvaWQg
U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0TG9jYWxlKFN0eWxlOjpCdWlsZGVy
U3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdExvY2FsZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0
ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKIApAQCAtNzQzLDE5ICs3NDQsMTkgQEAgaW5s
aW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0TG9jYWxlKFN0eWxl
OjpCdWlsZGVyU3RhdGUmIGJ1aWwKICAgICBidWlsZGVyU3RhdGUuc2V0Rm9udERlc2NyaXB0aW9u
KFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZVdyaXRpbmdNb2RlKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxk
ZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBw
bHlWYWx1ZVdyaXRpbmdNb2RlKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYg
dmFsdWUpCiB7CiAgICAgYnVpbGRlclN0YXRlLnNldFdyaXRpbmdNb2RlKGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldEhhc0V4
cGxpY2l0bHlTZXRXcml0aW5nTW9kZSh0cnVlKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWls
ZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0VGV4dE9yaWVudGF0aW9uKFN0eWxlOjpCdWlsZGVy
U3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdFRleHRPcmllbnRhdGlvbihCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGJ1aWxkZXJTdGF0ZS5zZXRUZXh0
T3JpZW50YXRpb24oZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSk7CiB9CiAKICNp
ZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseVZhbHVlV2Via2l0VGV4dFNpemVBZGp1c3QoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjph
cHBseVZhbHVlV2Via2l0VGV4dFNpemVBZGp1c3QoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUs
IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVl
SUQoKSA9PSBDU1NWYWx1ZUF1dG8pCkBAIC03NjksNyArNzcwLDcgQEAgaW5saW5lIHZvaWQgU3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0VGV4dFNpemVBZGp1c3QoU3R5bGU6OkJ1
aWxkZXJTdGEKIH0KICNlbmRpZgogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5VmFsdWVXZWJraXRUZXh0Wm9vbShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUs
IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVX
ZWJraXRUZXh0Wm9vbShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVl
KQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVl
Tm9ybWFsKQpAQCAtNzgwLDE1ICs3ODEsMTUgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3Vz
dG9tOjphcHBseVZhbHVlV2Via2l0VGV4dFpvb20oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnUKIH0K
IAogI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3Vz
dG9tOjphcHBseVZhbHVlQ29sb3JTY2hlbWUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0
YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZh
bHVlQ29sb3JTY2hlbWUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1
ZSkKIHsKLSAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRDb2xvclNjaGVtZShTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRDb2xvclNjaGVtZShidWlsZGVyU3RhdGUsIHZhbHVlKSk7Cisg
ICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0Q29sb3JTY2hlbWUoQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydENvbG9yU2NoZW1lKGJ1aWxkZXJTdGF0ZSwgdmFsdWUpKTsKICAgICBidWlsZGVyU3Rh
dGUuc3R5bGUoKS5zZXRIYXNFeHBsaWNpdGx5U2V0Q29sb3JTY2hlbWUodHJ1ZSk7CiB9CiAjZW5k
aWYKIAogdGVtcGxhdGU8Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eT4KLWlubGluZSB2b2lkIFN0eWxl
QnVpbGRlckN1c3RvbTo6YXBwbHlUZXh0T3JCb3hTaGFkb3dWYWx1ZShTdHlsZTo6QnVpbGRlclN0
YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJD
dXN0b206OmFwcGx5VGV4dE9yQm94U2hhZG93VmFsdWUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3Rh
dGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKSkgewogICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKQEAgLTgyMiw1MiArODIzLDUyIEBAIGlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlUZXh0T3JCb3hTaGFkb3dWYWx1ZShTdHls
ZTo6QnVpbGRlclN0YXRlJiBiCiAgICAgfQogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5SW5pdGlhbFRleHRTaGFkb3coU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsVGV4dFNoYWRv
dyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUo
KS5zZXRUZXh0U2hhZG93KG51bGxwdHIpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5SW5oZXJpdFRleHRTaGFkb3coU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0VGV4dFNoYWRv
dyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUo
KS5zZXRUZXh0U2hhZG93KGJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLnRleHRTaGFkb3coKSA/
IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oKmJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLnRleHRT
aGFkb3coKSkgOiBudWxscHRyKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseVZhbHVlVGV4dFNoYWRvdyhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUs
IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVU
ZXh0U2hhZG93KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7
CiAgICAgYXBwbHlUZXh0T3JCb3hTaGFkb3dWYWx1ZTxDU1NQcm9wZXJ0eVRleHRTaGFkb3c+KGJ1
aWxkZXJTdGF0ZSwgdmFsdWUpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206
OmFwcGx5SW5pdGlhbEJveFNoYWRvdyhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUp
CitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxCb3hTaGFkb3coQnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0Qm94
U2hhZG93KG51bGxwdHIpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5SW5oZXJpdEJveFNoYWRvdyhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitp
bmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRCb3hTaGFkb3coQnVpbGRlclN0
YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0Qm94U2hh
ZG93KGJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLmJveFNoYWRvdygpID8gbWFrZVVuaXF1ZTxT
aGFkb3dEYXRhPigqYnVpbGRlclN0YXRlLnBhcmVudFN0eWxlKCkuYm94U2hhZG93KCkpIDogbnVs
bHB0cik7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUJv
eFNoYWRvdyhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1
ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVCb3hTaGFkb3coQnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhcHBseVRleHRP
ckJveFNoYWRvd1ZhbHVlPENTU1Byb3BlcnR5Qm94U2hhZG93PihidWlsZGVyU3RhdGUsIHZhbHVl
KTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxXZWJr
aXRCb3hTaGFkb3coU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZv
aWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsV2Via2l0Qm94U2hhZG93KEJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGFwcGx5SW5pdGlhbEJveFNoYWRvdyhidWlsZGVyU3Rh
dGUpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFdl
YmtpdEJveFNoYWRvdyhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUg
dm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRXZWJraXRCb3hTaGFkb3coQnVpbGRlclN0
YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYXBwbHlJbmhlcml0Qm94U2hhZG93KGJ1aWxkZXJT
dGF0ZSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdl
YmtpdEJveFNoYWRvdyhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVl
JiB2YWx1ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRCb3hT
aGFkb3coQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAg
ICBhcHBseVRleHRPckJveFNoYWRvd1ZhbHVlPENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93Pihi
dWlsZGVyU3RhdGUsIHZhbHVlKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseUluaXRpYWxGb250RmFtaWx5KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0
ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEZvbnRGYW1pbHkoQnVp
bGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYXV0byBmb250RGVzY3JpcHRpb24gPSBi
dWlsZGVyU3RhdGUuc3R5bGUoKS5mb250RGVzY3JpcHRpb24oKTsKICAgICBhdXRvIGluaXRpYWxE
ZXNjID0gRm9udENhc2NhZGVEZXNjcmlwdGlvbigpOwpAQCAtODgzLDcgKzg4NCw3IEBAIGlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsRm9udEZhbWlseShTdHlsZTo6
QnVpbGRlclN0YXRlJiBidWlsCiAgICAgYnVpbGRlclN0YXRlLnNldEZvbnREZXNjcmlwdGlvbihX
VEZNb3ZlKGZvbnREZXNjcmlwdGlvbikpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5SW5oZXJpdEZvbnRGYW1pbHkoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Rm9udEZhbWls
eShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBhdXRvIGZvbnREZXNjcmlwdGlv
biA9IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLmZvbnREZXNjcmlwdGlvbigpOwogICAgIGF1dG8gcGFy
ZW50Rm9udERlc2NyaXB0aW9uID0gYnVpbGRlclN0YXRlLnBhcmVudFN0eWxlKCkuZm9udERlc2Ny
aXB0aW9uKCk7CkBAIC04OTMsNyArODk0LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3Vz
dG9tOjphcHBseUluaGVyaXRGb250RmFtaWx5KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWwKICAg
ICBidWlsZGVyU3RhdGUuc2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZm9udERlc2NyaXB0aW9u
KSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZvbnRG
YW1pbHkoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUp
CitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRm9udEZhbWlseShCdWlsZGVy
U3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHZhbHVl
TGlzdCA9IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpOwogCkBAIC05NzAsMjggKzk3MSwy
OCBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVGb250RmFtaWx5
KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZQogICAgIGJ1aWxkZXJTdGF0ZS5zZXRGb250RGVz
Y3JpcHRpb24oV1RGTW92ZShmb250RGVzY3JpcHRpb24pKTsKIH0KIAotaW5saW5lIGJvb2wgU3R5
bGVCdWlsZGVyQ3VzdG9tOjppc1ZhbGlkRGlzcGxheVZhbHVlKFN0eWxlOjpCdWlsZGVyU3RhdGUm
IGJ1aWxkZXJTdGF0ZSwgRGlzcGxheVR5cGUgZGlzcGxheSkKK2lubGluZSBib29sIEJ1aWxkZXJD
dXN0b206OmlzVmFsaWREaXNwbGF5VmFsdWUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIERp
c3BsYXlUeXBlIGRpc3BsYXkpCiB7CiAgICAgaWYgKGlzPFNWR0VsZW1lbnQ+KGJ1aWxkZXJTdGF0
ZS5lbGVtZW50KCkpICYmIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnN0eWxlVHlwZSgpID09IFBzZXVk
b0lkOjpOb25lKQogICAgICAgICByZXR1cm4gZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6SW5saW5l
IHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OkJsb2NrIHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5
cGU6Ok5vbmU7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlJbmhlcml0RGlzcGxheShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVy
U3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXREaXNwbGF5KEJ1
aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIERpc3BsYXlUeXBlIGRpc3BsYXkgPSBi
dWlsZGVyU3RhdGUucGFyZW50U3R5bGUoKS5kaXNwbGF5KCk7CiAgICAgaWYgKGlzVmFsaWREaXNw
bGF5VmFsdWUoYnVpbGRlclN0YXRlLCBkaXNwbGF5KSkKICAgICAgICAgYnVpbGRlclN0YXRlLnN0
eWxlKCkuc2V0RGlzcGxheShkaXNwbGF5KTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVy
Q3VzdG9tOjphcHBseVZhbHVlRGlzcGxheShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3Rh
dGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFs
dWVEaXNwbGF5KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7
CiAgICAgRGlzcGxheVR5cGUgZGlzcGxheSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2
YWx1ZSk7CiAgICAgaWYgKGlzVmFsaWREaXNwbGF5VmFsdWUoYnVpbGRlclN0YXRlLCBkaXNwbGF5
KSkKICAgICAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0RGlzcGxheShkaXNwbGF5KTsKIH0K
IAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQmFzZWxpbmVTaGlm
dChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lu
bGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVCYXNlbGluZVNoaWZ0KEJ1aWxkZXJT
dGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgU1ZHUmVuZGVyU3R5
bGUmIHN2Z1N0eWxlID0gYnVpbGRlclN0YXRlLnN0eWxlKCkuYWNjZXNzU1ZHU3R5bGUoKTsKICAg
ICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSk7CkBAIC0xMDE1LDE0ICsxMDE2LDE0IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlWYWx1ZUJhc2VsaW5lU2hpZnQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpCiAgICAg
fQogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbFdlYmtp
dEFzcGVjdFJhdGlvKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2
b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbFdlYmtpdEFzcGVjdFJhdGlvKEJ1aWxkZXJT
dGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldEFzcGVj
dFJhdGlvVHlwZShSZW5kZXJTdHlsZTo6aW5pdGlhbEFzcGVjdFJhdGlvVHlwZSgpKTsKICAgICBi
dWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKFJlbmRlclN0eWxl
Ojppbml0aWFsQXNwZWN0UmF0aW9EZW5vbWluYXRvcigpKTsKICAgICBidWlsZGVyU3RhdGUuc3R5
bGUoKS5zZXRBc3BlY3RSYXRpb051bWVyYXRvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEFzcGVjdFJh
dGlvTnVtZXJhdG9yKCkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5SW5oZXJpdFdlYmtpdEFzcGVjdFJhdGlvKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJT
dGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFdlYmtpdEFzcGVj
dFJhdGlvKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGlmIChidWlsZGVyU3Rh
dGUucGFyZW50U3R5bGUoKS5hc3BlY3RSYXRpb1R5cGUoKSA9PSBBc3BlY3RSYXRpb1R5cGU6OkF1
dG8pCiAgICAgICAgIHJldHVybjsKQEAgLTEwMzEsNyArMTAzMiw3IEBAIGlubGluZSB2b2lkIFN0
eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0V2Via2l0QXNwZWN0UmF0aW8oU3R5bGU6OkJ1
aWxkZXJTdGF0CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0QXNwZWN0UmF0aW9OdW1lcmF0
b3IoYnVpbGRlclN0YXRlLnBhcmVudFN0eWxlKCkuYXNwZWN0UmF0aW9OdW1lcmF0b3IoKSk7CiB9
CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdEFzcGVj
dFJhdGlvKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVl
KQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdEFzcGVjdFJhdGlv
KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYg
KGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKICAgICAgICAgYXV0byYgcHJpbWl0aXZl
VmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwpAQCAtMTA1MSwyMSAr
MTA1MiwyMSBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJr
aXRBc3BlY3RSYXRpbyhTdHlsZTo6QnVpbGRlclN0YXRlJgogICAgIGJ1aWxkZXJTdGF0ZS5zdHls
ZSgpLnNldEFzcGVjdFJhdGlvTnVtZXJhdG9yKGFzcGVjdFJhdGlvVmFsdWUubnVtZXJhdG9yVmFs
dWUoKSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFs
V2Via2l0VGV4dEVtcGhhc2lzU3R5bGUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
KQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsV2Via2l0VGV4dEVtcGhh
c2lzU3R5bGUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYnVpbGRlclN0YXRl
LnN0eWxlKCkuc2V0VGV4dEVtcGhhc2lzRmlsbChSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRFbXBo
YXNpc0ZpbGwoKSk7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0VGV4dEVtcGhhc2lzTWFy
ayhSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRFbXBoYXNpc01hcmsoKSk7CiAgICAgYnVpbGRlclN0
YXRlLnN0eWxlKCkuc2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhSZW5kZXJTdHlsZTo6aW5pdGlh
bFRleHRFbXBoYXNpc0N1c3RvbU1hcmsoKSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlJbmhlcml0V2Via2l0VGV4dEVtcGhhc2lzU3R5bGUoU3R5bGU6OkJ1aWxk
ZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJ
bmhlcml0V2Via2l0VGV4dEVtcGhhc2lzU3R5bGUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUp
CiB7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0VGV4dEVtcGhhc2lzRmlsbChidWlsZGVy
U3RhdGUucGFyZW50U3R5bGUoKS50ZXh0RW1waGFzaXNGaWxsKCkpOwogICAgIGJ1aWxkZXJTdGF0
ZS5zdHlsZSgpLnNldFRleHRFbXBoYXNpc01hcmsoYnVpbGRlclN0YXRlLnBhcmVudFN0eWxlKCku
dGV4dEVtcGhhc2lzTWFyaygpKTsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRUZXh0RW1w
aGFzaXNDdXN0b21NYXJrKGJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLnRleHRFbXBoYXNpc0N1
c3RvbU1hcmsoKSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlW
YWx1ZVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJT
dGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlW
YWx1ZVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBD
U1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CiAg
ICAgICAgIGF1dG8mIGxpc3QgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKTsKQEAgLTEx
MDEsOCArMTEwMiw4IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1
ZVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlKFN0eWxlOjpCdWlsZGVyCiAgICAgfQogfQogCi10ZW1w
bGF0ZSA8U3R5bGVCdWlsZGVyQ3VzdG9tOjpDb3VudGVyQmVoYXZpb3IgY291bnRlckJlaGF2aW9y
PgotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRDb3VudGVyKFN0
eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK3RlbXBsYXRlIDxCdWlsZGVyQ3VzdG9t
OjpDb3VudGVyQmVoYXZpb3IgY291bnRlckJlaGF2aW9yPgoraW5saW5lIHZvaWQgQnVpbGRlckN1
c3RvbTo6YXBwbHlJbmhlcml0Q291bnRlcihCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsK
ICAgICBhdXRvJiBtYXAgPSBidWlsZGVyU3RhdGUuc3R5bGUoKS5hY2Nlc3NDb3VudGVyRGlyZWN0
aXZlcygpOwogICAgIGZvciAoYXV0byYga2V5VmFsdWUgOiBjb25zdF9jYXN0PFJlbmRlclN0eWxl
Jj4oYnVpbGRlclN0YXRlLnBhcmVudFN0eWxlKCkpLmFjY2Vzc0NvdW50ZXJEaXJlY3RpdmVzKCkp
IHsKQEAgLTExMTQsOCArMTExNSw4IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6
YXBwbHlJbmhlcml0Q291bnRlcihTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyCiAgICAgfQog
fQogCi10ZW1wbGF0ZSA8U3R5bGVCdWlsZGVyQ3VzdG9tOjpDb3VudGVyQmVoYXZpb3IgY291bnRl
ckJlaGF2aW9yPgotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ291
bnRlcihTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkK
K3RlbXBsYXRlIDxCdWlsZGVyQ3VzdG9tOjpDb3VudGVyQmVoYXZpb3IgY291bnRlckJlaGF2aW9y
PgoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvdW50ZXIoQnVpbGRlclN0
YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBib29sIHNldENvdW50
ZXJJbmNyZW1lbnRUb05vbmUgPSBjb3VudGVyQmVoYXZpb3IgPT0gSW5jcmVtZW50ICYmIGlzPENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkgJiYgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lOwogCkBAIC0xMTQ1LDQzICsxMTQ2LDQzIEBA
IGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvdW50ZXIoU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0CiAgICAgfQogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1
aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbENvdW50ZXJJbmNyZW1lbnQoU3R5bGU6OkJ1aWxkZXJT
dGF0ZSYpIHsgfQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsQ291bnRl
ckluY3JlbWVudChCdWlsZGVyU3RhdGUmKSB7IH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVy
Q3VzdG9tOjphcHBseUluaGVyaXRDb3VudGVySW5jcmVtZW50KFN0eWxlOjpCdWlsZGVyU3RhdGUm
IGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdENv
dW50ZXJJbmNyZW1lbnQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYXBwbHlJ
bmhlcml0Q291bnRlcjxJbmNyZW1lbnQ+KGJ1aWxkZXJTdGF0ZSk7CiB9CiAKLWlubGluZSB2b2lk
IFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvdW50ZXJJbmNyZW1lbnQoU3R5bGU6OkJ1
aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ291bnRlckluY3JlbWVudChCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGFwcGx5VmFsdWVDb3VudGVyPElu
Y3JlbWVudD4oYnVpbGRlclN0YXRlLCB2YWx1ZSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlJbml0aWFsQ291bnRlclJlc2V0KFN0eWxlOjpCdWlsZGVyU3RhdGUm
KSB7IH0KK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbENvdW50ZXJSZXNl
dChCdWlsZGVyU3RhdGUmKSB7IH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjph
cHBseUluaGVyaXRDb3VudGVyUmVzZXQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
KQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Q291bnRlclJlc2V0KEJ1
aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGFwcGx5SW5oZXJpdENvdW50ZXI8UmVz
ZXQ+KGJ1aWxkZXJTdGF0ZSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6
YXBwbHlWYWx1ZUNvdW50ZXJSZXNldChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUs
IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVD
b3VudGVyUmVzZXQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkK
IHsKICAgICBhcHBseVZhbHVlQ291bnRlcjxSZXNldD4oYnVpbGRlclN0YXRlLCB2YWx1ZSk7CiB9
CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsQ3Vyc29yKFN0
eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0
b206OmFwcGx5SW5pdGlhbEN1cnNvcihCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAg
ICBidWlsZGVyU3RhdGUuc3R5bGUoKS5jbGVhckN1cnNvckxpc3QoKTsKICAgICBidWlsZGVyU3Rh
dGUuc3R5bGUoKS5zZXRDdXJzb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxDdXJzb3IoKSk7CiB9CiAK
LWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Q3Vyc29yKFN0eWxl
OjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206
OmFwcGx5SW5oZXJpdEN1cnNvcihCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBi
dWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRDdXJzb3IoYnVpbGRlclN0YXRlLnBhcmVudFN0eWxlKCku
Y3Vyc29yKCkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldEN1cnNvckxpc3QoYnVpbGRl
clN0YXRlLnBhcmVudFN0eWxlKCkuY3Vyc29ycygpKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ3Vyc29yKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxk
ZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBw
bHlWYWx1ZUN1cnNvcihCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVl
KQogewogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLmNsZWFyQ3Vyc29yTGlzdCgpOwogICAgIGlm
IChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CkBAIC0xMjA2LDEzICsxMjA3LDEzIEBA
IGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUN1cnNvcihTdHlsZTo6
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhCiAgICAgfQogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1
aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEZpbGwoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsRmlsbChCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBhdXRvJiBzdmdTdHlsZSA9IGJ1aWxkZXJT
dGF0ZS5zdHlsZSgpLmFjY2Vzc1NWR1N0eWxlKCk7CiAgICAgc3ZnU3R5bGUuc2V0RmlsbFBhaW50
KFNWR1JlbmRlclN0eWxlOjppbml0aWFsRmlsbFBhaW50VHlwZSgpLCBTVkdSZW5kZXJTdHlsZTo6
aW5pdGlhbEZpbGxQYWludENvbG9yKCksIFNWR1JlbmRlclN0eWxlOjppbml0aWFsRmlsbFBhaW50
VXJpKCksIGJ1aWxkZXJTdGF0ZS5hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSwgYnVpbGRl
clN0YXRlLmFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSk7CiB9CiAKLWlubGluZSB2
b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0RmlsbChTdHlsZTo6QnVpbGRlclN0
YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVy
aXRGaWxsKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGF1dG8mIHN2Z1N0eWxl
ID0gYnVpbGRlclN0YXRlLnN0eWxlKCkuYWNjZXNzU1ZHU3R5bGUoKTsKICAgICBhdXRvJiBzdmdQ
YXJlbnRTdHlsZSA9IGJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLnN2Z1N0eWxlKCk7CkBAIC0x
MjIwLDcgKzEyMjEsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5o
ZXJpdEZpbGwoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YQogCiB9CiAKLWlubGluZSB2
b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZpbGwoU3R5bGU6OkJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3Vz
dG9tOjphcHBseVZhbHVlRmlsbChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUm
IHZhbHVlKQogewogICAgIGF1dG8mIHN2Z1N0eWxlID0gYnVpbGRlclN0YXRlLnN0eWxlKCkuYWNj
ZXNzU1ZHU3R5bGUoKTsKICAgICBjb25zdCBhdXRvKiBsb2NhbFZhbHVlID0gdmFsdWUuaXNQcmlt
aXRpdmVWYWx1ZSgpID8gJmRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkgOiBudWxs
cHRyOwpAQCAtMTI1MSwyMCArMTI1MiwyMCBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0
b206OmFwcGx5VmFsdWVGaWxsKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZQogICAg
IHN2Z1N0eWxlLnNldEZpbGxQYWludChwYWludFR5cGUsIGNvbG9yLCB1cmwsIGJ1aWxkZXJTdGF0
ZS5hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoKSwgYnVpbGRlclN0YXRlLmFwcGx5UHJvcGVy
dHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlJbml0aWFsU3Ryb2tlKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0
ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbFN0cm9rZShCdWlsZGVy
U3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBi
dWlsZGVyU3RhdGUuc3R5bGUoKS5hY2Nlc3NTVkdTdHlsZSgpOwogICAgIHN2Z1N0eWxlLnNldFN0
cm9rZVBhaW50KFNWR1JlbmRlclN0eWxlOjppbml0aWFsU3Ryb2tlUGFpbnRUeXBlKCksIFNWR1Jl
bmRlclN0eWxlOjppbml0aWFsU3Ryb2tlUGFpbnRDb2xvcigpLCBTVkdSZW5kZXJTdHlsZTo6aW5p
dGlhbFN0cm9rZVBhaW50VXJpKCksIGJ1aWxkZXJTdGF0ZS5hcHBseVByb3BlcnR5VG9SZWd1bGFy
U3R5bGUoKSwgYnVpbGRlclN0YXRlLmFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSk7
CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0U3Ryb2tl
KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJD
dXN0b206OmFwcGx5SW5oZXJpdFN0cm9rZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsK
ICAgICBhdXRvJiBzdmdTdHlsZSA9IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLmFjY2Vzc1NWR1N0eWxl
KCk7CiAgICAgYXV0byYgc3ZnUGFyZW50U3R5bGUgPSBidWlsZGVyU3RhdGUucGFyZW50U3R5bGUo
KS5zdmdTdHlsZSgpOwogICAgIHN2Z1N0eWxlLnNldFN0cm9rZVBhaW50KHN2Z1BhcmVudFN0eWxl
LnN0cm9rZVBhaW50VHlwZSgpLCBzdmdQYXJlbnRTdHlsZS5zdHJva2VQYWludENvbG9yKCksIHN2
Z1BhcmVudFN0eWxlLnN0cm9rZVBhaW50VXJpKCksIGJ1aWxkZXJTdGF0ZS5hcHBseVByb3BlcnR5
VG9SZWd1bGFyU3R5bGUoKSwgYnVpbGRlclN0YXRlLmFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5r
U3R5bGUoKSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1
ZVN0cm9rZShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1
ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVTdHJva2UoQnVpbGRlclN0
YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBzdmdTdHls
ZSA9IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLmFjY2Vzc1NWR1N0eWxlKCk7CiAgICAgY29uc3QgYXV0
byogbG9jYWxWYWx1ZSA9IHZhbHVlLmlzUHJpbWl0aXZlVmFsdWUoKSA/ICZkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpIDogbnVsbHB0cjsKQEAgLTEyOTUsMTggKzEyOTYsMTggQEAg
aW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlU3Ryb2tlKFN0eWxlOjpC
dWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGEKICAgICBzdmdTdHlsZS5zZXRTdHJva2VQYWludChwYWlu
dFR5cGUsIGNvbG9yLCB1cmwsIGJ1aWxkZXJTdGF0ZS5hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5
bGUoKSwgYnVpbGRlclN0YXRlLmFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoKSk7CiB9
CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsQ29udGVudChT
dHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3Vz
dG9tOjphcHBseUluaXRpYWxDb250ZW50KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewog
ICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLmNsZWFyQ29udGVudCgpOwogfQogCi1pbmxpbmUgdm9p
ZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdENvbnRlbnQoU3R5bGU6OkJ1aWxkZXJT
dGF0ZSYpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRDb250ZW50KEJ1
aWxkZXJTdGF0ZSYpCiB7CiAgICAgLy8gRklYTUU6IEluIENTUzMsIGl0IHdpbGwgYmUgcG9zc2li
bGUgdG8gaW5oZXJpdCBjb250ZW50LiBJbiBDU1MyIGl0IGlzIG5vdC4gVGhpcwogICAgIC8vIG5v
dGUgaXMgYSByZW1pbmRlciB0aGF0IGV2ZW50dWFsbHkgImluaGVyaXQiIG5lZWRzIHRvIGJlIHN1
cHBvcnRlZC4KIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVl
Q29udGVudChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1
ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb250ZW50KEJ1aWxkZXJT
dGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKICAgICAgICAgY29uc3QgYXV0byYgcHJpbWl0aXZlVmFs
dWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwpAQCAtMTM5MCw3ICsxMzkx
LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ29udGVudChT
dHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3QKICAgICAgICAgYnVpbGRlclN0YXRlLnN0eWxl
KCkuY2xlYXJDb250ZW50KCk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6
YXBwbHlJbmhlcml0Rm9udFZhcmlhbnRMaWdhdHVyZXMoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Rm9udFZh
cmlhbnRMaWdhdHVyZXMoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYXV0byBm
b250RGVzY3JpcHRpb24gPSBidWlsZGVyU3RhdGUuZm9udERlc2NyaXB0aW9uKCk7CiAgICAgZm9u
dERlc2NyaXB0aW9uLnNldFZhcmlhbnRDb21tb25MaWdhdHVyZXMoYnVpbGRlclN0YXRlLnBhcmVu
dEZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRDb21tb25MaWdhdHVyZXMoKSk7CkBAIC0xNDAwLDcg
KzE0MDEsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEZv
bnRWYXJpYW50TGlnYXR1cmVzKFN0eWxlOjpCdWlsZGVyUwogICAgIGJ1aWxkZXJTdGF0ZS5zZXRG
b250RGVzY3JpcHRpb24oV1RGTW92ZShmb250RGVzY3JpcHRpb24pKTsKIH0KIAotaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxGb250VmFyaWFudExpZ2F0dXJlcyhT
dHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3Vz
dG9tOjphcHBseUluaXRpYWxGb250VmFyaWFudExpZ2F0dXJlcyhCdWlsZGVyU3RhdGUmIGJ1aWxk
ZXJTdGF0ZSkKIHsKICAgICBhdXRvIGZvbnREZXNjcmlwdGlvbiA9IGJ1aWxkZXJTdGF0ZS5mb250
RGVzY3JpcHRpb24oKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0VmFyaWFudENvbW1vbkxpZ2F0
dXJlcyhGb250VmFyaWFudExpZ2F0dXJlczo6Tm9ybWFsKTsKQEAgLTE0MTAsNyArMTQxMSw3IEBA
IGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsRm9udFZhcmlhbnRM
aWdhdHVyZXMoU3R5bGU6OkJ1aWxkZXJTCiAgICAgYnVpbGRlclN0YXRlLnNldEZvbnREZXNjcmlw
dGlvbihXVEZNb3ZlKGZvbnREZXNjcmlwdGlvbikpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1
aWxkZXJDdXN0b206OmFwcGx5VmFsdWVGb250VmFyaWFudExpZ2F0dXJlcyhTdHlsZTo6QnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2b2lkIEJ1aWxk
ZXJDdXN0b206OmFwcGx5VmFsdWVGb250VmFyaWFudExpZ2F0dXJlcyhCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8gZm9udERlc2NyaXB0aW9u
ID0gYnVpbGRlclN0YXRlLmZvbnREZXNjcmlwdGlvbigpOwogICAgIGF1dG8gdmFyaWFudExpZ2F0
dXJlcyA9IGV4dHJhY3RGb250VmFyaWFudExpZ2F0dXJlcyh2YWx1ZSk7CkBAIC0xNDIxLDcgKzE0
MjIsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVGb250VmFy
aWFudExpZ2F0dXJlcyhTdHlsZTo6QnVpbGRlclN0YQogICAgIGJ1aWxkZXJTdGF0ZS5zZXRGb250
RGVzY3JpcHRpb24oV1RGTW92ZShmb250RGVzY3JpcHRpb24pKTsKIH0KIAotaW5saW5lIHZvaWQg
U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRGb250VmFyaWFudE51bWVyaWMoU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6
YXBwbHlJbmhlcml0Rm9udFZhcmlhbnROdW1lcmljKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
KQogewogICAgIGF1dG8gZm9udERlc2NyaXB0aW9uID0gYnVpbGRlclN0YXRlLmZvbnREZXNjcmlw
dGlvbigpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRWYXJpYW50TnVtZXJpY0ZpZ3VyZShidWls
ZGVyU3RhdGUucGFyZW50Rm9udERlc2NyaXB0aW9uKCkudmFyaWFudE51bWVyaWNGaWd1cmUoKSk7
CkBAIC0xNDMyLDcgKzE0MzMsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5SW5oZXJpdEZvbnRWYXJpYW50TnVtZXJpYyhTdHlsZTo6QnVpbGRlclN0YQogICAgIGJ1aWxk
ZXJTdGF0ZS5zZXRGb250RGVzY3JpcHRpb24oV1RGTW92ZShmb250RGVzY3JpcHRpb24pKTsKIH0K
IAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxGb250VmFyaWFu
dE51bWVyaWMoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQg
QnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsRm9udFZhcmlhbnROdW1lcmljKEJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGF1dG8gZm9udERlc2NyaXB0aW9uID0gYnVpbGRlclN0
YXRlLmZvbnREZXNjcmlwdGlvbigpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRWYXJpYW50TnVt
ZXJpY0ZpZ3VyZShGb250VmFyaWFudE51bWVyaWNGaWd1cmU6Ok5vcm1hbCk7CkBAIC0xNDQzLDcg
KzE0NDQsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEZv
bnRWYXJpYW50TnVtZXJpYyhTdHlsZTo6QnVpbGRlclN0YQogICAgIGJ1aWxkZXJTdGF0ZS5zZXRG
b250RGVzY3JpcHRpb24oV1RGTW92ZShmb250RGVzY3JpcHRpb24pKTsKIH0KIAotaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRm9udFZhcmlhbnROdW1lcmljKFN0eWxl
OjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZv
aWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZvbnRWYXJpYW50TnVtZXJpYyhCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8gZm9udERlc2Ny
aXB0aW9uID0gYnVpbGRlclN0YXRlLmZvbnREZXNjcmlwdGlvbigpOwogICAgIGF1dG8gdmFyaWFu
dE51bWVyaWMgPSBleHRyYWN0Rm9udFZhcmlhbnROdW1lcmljKHZhbHVlKTsKQEAgLTE0NTUsNyAr
MTQ1Niw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZvbnRW
YXJpYW50TnVtZXJpYyhTdHlsZTo6QnVpbGRlclN0YXRlCiAgICAgYnVpbGRlclN0YXRlLnNldEZv
bnREZXNjcmlwdGlvbihXVEZNb3ZlKGZvbnREZXNjcmlwdGlvbikpOwogfQogCi1pbmxpbmUgdm9p
ZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEZvbnRWYXJpYW50RWFzdEFzaWFuKFN0
eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0
b206OmFwcGx5SW5oZXJpdEZvbnRWYXJpYW50RWFzdEFzaWFuKEJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlKQogewogICAgIGF1dG8gZm9udERlc2NyaXB0aW9uID0gYnVpbGRlclN0YXRlLmZvbnRE
ZXNjcmlwdGlvbigpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRWYXJpYW50RWFzdEFzaWFuVmFy
aWFudChidWlsZGVyU3RhdGUucGFyZW50Rm9udERlc2NyaXB0aW9uKCkudmFyaWFudEVhc3RBc2lh
blZhcmlhbnQoKSk7CkBAIC0xNDY0LDcgKzE0NjUsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxk
ZXJDdXN0b206OmFwcGx5SW5oZXJpdEZvbnRWYXJpYW50RWFzdEFzaWFuKFN0eWxlOjpCdWlsZGVy
UwogICAgIGJ1aWxkZXJTdGF0ZS5zZXRGb250RGVzY3JpcHRpb24oV1RGTW92ZShmb250RGVzY3Jp
cHRpb24pKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRp
YWxGb250VmFyaWFudEVhc3RBc2lhbihTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUp
CitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxGb250VmFyaWFudEVhc3RB
c2lhbihCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBhdXRvIGZvbnREZXNjcmlw
dGlvbiA9IGJ1aWxkZXJTdGF0ZS5mb250RGVzY3JpcHRpb24oKTsKICAgICBmb250RGVzY3JpcHRp
b24uc2V0VmFyaWFudEVhc3RBc2lhblZhcmlhbnQoRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50
OjpOb3JtYWwpOwpAQCAtMTQ3Myw3ICsxNDc0LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVy
Q3VzdG9tOjphcHBseUluaXRpYWxGb250VmFyaWFudEVhc3RBc2lhbihTdHlsZTo6QnVpbGRlclMK
ICAgICBidWlsZGVyU3RhdGUuc2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZm9udERlc2NyaXB0
aW9uKSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZv
bnRWYXJpYW50RWFzdEFzaWFuKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NT
VmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZvbnRW
YXJpYW50RWFzdEFzaWFuKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFs
dWUpCiB7CiAgICAgYXV0byBmb250RGVzY3JpcHRpb24gPSBidWlsZGVyU3RhdGUuZm9udERlc2Ny
aXB0aW9uKCk7CiAgICAgYXV0byB2YXJpYW50RWFzdEFzaWFuID0gZXh0cmFjdEZvbnRWYXJpYW50
RWFzdEFzaWFuKHZhbHVlKTsKQEAgLTE0ODMsNyArMTQ4NCw3IEBAIGlubGluZSB2b2lkIFN0eWxl
QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZvbnRWYXJpYW50RWFzdEFzaWFuKFN0eWxlOjpCdWls
ZGVyU3RhCiAgICAgYnVpbGRlclN0YXRlLnNldEZvbnREZXNjcmlwdGlvbihXVEZNb3ZlKGZvbnRE
ZXNjcmlwdGlvbikpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5
SW5pdGlhbEZvbnRTaXplKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGlu
ZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEZvbnRTaXplKEJ1aWxkZXJTdGF0ZSYg
YnVpbGRlclN0YXRlKQogewogICAgIGF1dG8gZm9udERlc2NyaXB0aW9uID0gYnVpbGRlclN0YXRl
LnN0eWxlKCkuZm9udERlc2NyaXB0aW9uKCk7CiAgICAgZmxvYXQgc2l6ZSA9IFN0eWxlOjpmb250
U2l6ZUZvcktleXdvcmQoQ1NTVmFsdWVNZWRpdW0sIGZvbnREZXNjcmlwdGlvbi51c2VGaXhlZERl
ZmF1bHRTaXplKCksIGJ1aWxkZXJTdGF0ZS5kb2N1bWVudCgpKTsKQEAgLTE0OTYsNyArMTQ5Nyw3
IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsRm9udFNpemUo
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlCiAgICAgYnVpbGRlclN0YXRlLnNldEZvbnREZXNj
cmlwdGlvbihXVEZNb3ZlKGZvbnREZXNjcmlwdGlvbikpOwogfQogCi1pbmxpbmUgdm9pZCBTdHls
ZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEZvbnRTaXplKFN0eWxlOjpCdWlsZGVyU3RhdGUm
IGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEZv
bnRTaXplKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGNvbnN0IGF1dG8mIHBh
cmVudEZvbnREZXNjcmlwdGlvbiA9IGJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLmZvbnREZXNj
cmlwdGlvbigpOwogICAgIGZsb2F0IHNpemUgPSBwYXJlbnRGb250RGVzY3JpcHRpb24uc3BlY2lm
aWVkU2l6ZSgpOwpAQCAtMTUxMiw3ICsxNTEzLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVy
Q3VzdG9tOjphcHBseUluaGVyaXRGb250U2l6ZShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGUK
IAogLy8gV2hlbiB0aGUgQ1NTIGtleXdvcmQgImxhcmdlciIgaXMgdXNlZCwgdGhpcyBmdW5jdGlv
biB3aWxsIGF0dGVtcHQgdG8gbWF0Y2ggd2l0aGluIHRoZSBrZXl3b3JkCiAvLyB0YWJsZSwgYW5k
IGZhaWxpbmcgdGhhdCwgd2lsbCBzaW1wbHkgbXVsdGlwbHkgYnkgMS4yLgotaW5saW5lIGZsb2F0
IFN0eWxlQnVpbGRlckN1c3RvbTo6bGFyZ2VyRm9udFNpemUoZmxvYXQgc2l6ZSkKK2lubGluZSBm
bG9hdCBCdWlsZGVyQ3VzdG9tOjpsYXJnZXJGb250U2l6ZShmbG9hdCBzaXplKQogewogICAgIC8v
IEZJWE1FOiBGaWd1cmUgb3V0IHdoZXJlIHdlIGZhbGwgaW4gdGhlIHNpemUgcmFuZ2VzICh4eC1z
bWFsbCB0byB4eHgtbGFyZ2UpIGFuZCBzY2FsZSB1cCB0bwogICAgIC8vIHRoZSBuZXh0IHNpemUg
bGV2ZWwuCkBAIC0xNTIwLDE0ICsxNTIxLDE0IEBAIGlubGluZSBmbG9hdCBTdHlsZUJ1aWxkZXJD
dXN0b206OmxhcmdlckZvbnRTaXplKGZsb2F0IHNpemUpCiB9CiAKIC8vIExpa2UgdGhlIHByZXZp
b3VzIGZ1bmN0aW9uLCBidXQgZm9yIHRoZSBrZXl3b3JkICJzbWFsbGVyIi4KLWlubGluZSBmbG9h
dCBTdHlsZUJ1aWxkZXJDdXN0b206OnNtYWxsZXJGb250U2l6ZShmbG9hdCBzaXplKQoraW5saW5l
IGZsb2F0IEJ1aWxkZXJDdXN0b206OnNtYWxsZXJGb250U2l6ZShmbG9hdCBzaXplKQogewogICAg
IC8vIEZJWE1FOiBGaWd1cmUgb3V0IHdoZXJlIHdlIGZhbGwgaW4gdGhlIHNpemUgcmFuZ2VzICh4
eC1zbWFsbCB0byB4eHgtbGFyZ2UpIGFuZCBzY2FsZSBkb3duIHRvCiAgICAgLy8gdGhlIG5leHQg
c2l6ZSBsZXZlbC4KICAgICByZXR1cm4gc2l6ZSAvIDEuMmY7CiB9CiAKLWlubGluZSBmbG9hdCBT
dHlsZUJ1aWxkZXJDdXN0b206OmRldGVybWluZVJ1YnlUZXh0U2l6ZU11bHRpcGxpZXIoU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIGZsb2F0IEJ1aWxkZXJDdXN0b206
OmRldGVybWluZVJ1YnlUZXh0U2l6ZU11bHRpcGxpZXIoQnVpbGRlclN0YXRlJiBidWlsZGVyU3Rh
dGUpCiB7CiAgICAgaWYgKGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnJ1YnlQb3NpdGlvbigpICE9IFJ1
YnlQb3NpdGlvbjo6SW50ZXJDaGFyYWN0ZXIpCiAgICAgICAgIHJldHVybiAwLjVmOwpAQCAtMTU0
NCw3ICsxNTQ1LDcgQEAgaW5saW5lIGZsb2F0IFN0eWxlQnVpbGRlckN1c3RvbTo6ZGV0ZXJtaW5l
UnVieVRleHRTaXplTXVsdGlwbGllcihTdHlsZTo6QnVpbGRlclMKICAgICByZXR1cm4gMC4yNWY7
CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsRm9udFN0
eWxlKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxk
ZXJDdXN0b206OmFwcGx5SW5pdGlhbEZvbnRTdHlsZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0
ZSkKIHsKICAgICBhdXRvIGZvbnREZXNjcmlwdGlvbiA9IGJ1aWxkZXJTdGF0ZS5mb250RGVzY3Jp
cHRpb24oKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0SXRhbGljKEZvbnRDYXNjYWRlRGVzY3Jp
cHRpb246OmluaXRpYWxJdGFsaWMoKSk7CkBAIC0xNTUyLDcgKzE1NTMsNyBAQCBpbmxpbmUgdm9p
ZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEZvbnRTdHlsZShTdHlsZTo6QnVpbGRl
clN0YXRlJiBidWlsZAogICAgIGJ1aWxkZXJTdGF0ZS5zZXRGb250RGVzY3JpcHRpb24oV1RGTW92
ZShmb250RGVzY3JpcHRpb24pKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseUluaGVyaXRGb250U3R5bGUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
KQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Rm9udFN0eWxlKEJ1aWxk
ZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGF1dG8gZm9udERlc2NyaXB0aW9uID0gYnVp
bGRlclN0YXRlLmZvbnREZXNjcmlwdGlvbigpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJdGFs
aWMoYnVpbGRlclN0YXRlLnBhcmVudEZvbnREZXNjcmlwdGlvbigpLml0YWxpYygpKTsKQEAgLTE1
NjAsMTYgKzE1NjEsMTYgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUlu
aGVyaXRGb250U3R5bGUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGQKICAgICBidWlsZGVyU3Rh
dGUuc2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSk7CiB9CiAKLWlu
bGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZvbnRTdHlsZShTdHlsZTo6
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2b2lk
IEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVGb250U3R5bGUoQnVpbGRlclN0YXRlJiBidWlsZGVy
U3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBmb250U3R5bGVWYWx1ZSA9IGRv
d25jYXN0PENTU0ZvbnRTdHlsZVZhbHVlPih2YWx1ZSk7CiAgICAgYXV0byBmb250RGVzY3JpcHRp
b24gPSBidWlsZGVyU3RhdGUuZm9udERlc2NyaXB0aW9uKCk7Ci0gICAgZm9udERlc2NyaXB0aW9u
LnNldEl0YWxpYyhTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250U3R5bGVGcm9tVmFs
dWUoZm9udFN0eWxlVmFsdWUpKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0SXRhbGljKEJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250U3R5bGVGcm9tVmFsdWUoZm9udFN0eWxlVmFsdWUpKTsK
ICAgICBmb250RGVzY3JpcHRpb24uc2V0Rm9udFN0eWxlQXhpcyhmb250U3R5bGVWYWx1ZS5mb250
U3R5bGVWYWx1ZS0+dmFsdWVJRCgpID09IENTU1ZhbHVlSXRhbGljID8gRm9udFN0eWxlQXhpczo6
aXRhbCA6IEZvbnRTdHlsZUF4aXM6OnNsbnQpOwogICAgIGJ1aWxkZXJTdGF0ZS5zZXRGb250RGVz
Y3JpcHRpb24oV1RGTW92ZShmb250RGVzY3JpcHRpb24pKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRm9udFNpemUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYg
YnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9t
OjphcHBseVZhbHVlRm9udFNpemUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVl
JiB2YWx1ZSkKIHsKICAgICBhdXRvIGZvbnREZXNjcmlwdGlvbiA9IGJ1aWxkZXJTdGF0ZS5zdHls
ZSgpLmZvbnREZXNjcmlwdGlvbigpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRLZXl3b3JkU2l6
ZUZyb21JZGVudGlmaWVyKENTU1ZhbHVlSW52YWxpZCk7CkBAIC0xNjI5LDIxICsxNjMwLDIxIEBA
IGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZvbnRTaXplKFN0eWxl
OjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTCiAgICAgYnVpbGRlclN0YXRlLnNldEZvbnREZXNjcmlw
dGlvbihXVEZNb3ZlKGZvbnREZXNjcmlwdGlvbikpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1
aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEdyaWRUZW1wbGF0ZUFyZWFzKFN0eWxlOjpCdWlsZGVy
U3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5p
dGlhbEdyaWRUZW1wbGF0ZUFyZWFzKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAg
IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldE5hbWVkR3JpZEFyZWEoUmVuZGVyU3R5bGU6OmluaXRp
YWxOYW1lZEdyaWRBcmVhKCkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldE5hbWVkR3Jp
ZEFyZWFSb3dDb3VudChSZW5kZXJTdHlsZTo6aW5pdGlhbE5hbWVkR3JpZEFyZWFDb3VudCgpKTsK
ICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXROYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoUmVu
ZGVyU3R5bGU6OmluaXRpYWxOYW1lZEdyaWRBcmVhQ291bnQoKSk7CiB9CiAKLWlubGluZSB2b2lk
IFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0R3JpZFRlbXBsYXRlQXJlYXMoU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6
YXBwbHlJbmhlcml0R3JpZFRlbXBsYXRlQXJlYXMoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUp
CiB7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0TmFtZWRHcmlkQXJlYShidWlsZGVyU3Rh
dGUucGFyZW50U3R5bGUoKS5uYW1lZEdyaWRBcmVhKCkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHls
ZSgpLnNldE5hbWVkR3JpZEFyZWFSb3dDb3VudChidWlsZGVyU3RhdGUucGFyZW50U3R5bGUoKS5u
YW1lZEdyaWRBcmVhUm93Q291bnQoKSk7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0TmFt
ZWRHcmlkQXJlYUNvbHVtbkNvdW50KGJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLm5hbWVkR3Jp
ZEFyZWFDb2x1bW5Db3VudCgpKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseVZhbHVlR3JpZFRlbXBsYXRlQXJlYXMoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBs
eVZhbHVlR3JpZFRlbXBsYXRlQXJlYXMoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1Zh
bHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewog
ICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlE
KCkgPT0gQ1NTVmFsdWVOb25lKTsKQEAgLTE2NTUsOCArMTY1Niw4IEBAIGlubGluZSB2b2lkIFN0
eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUdyaWRUZW1wbGF0ZUFyZWFzKFN0eWxlOjpCdWls
ZGVyU3RhdGUmCiAKICAgICBOYW1lZEdyaWRMaW5lc01hcCBuYW1lZEdyaWRDb2x1bW5MaW5lcyA9
IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLm5hbWVkR3JpZENvbHVtbkxpbmVzKCk7CiAgICAgTmFtZWRH
cmlkTGluZXNNYXAgbmFtZWRHcmlkUm93TGluZXMgPSBidWlsZGVyU3RhdGUuc3R5bGUoKS5uYW1l
ZEdyaWRSb3dMaW5lcygpOwotICAgIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlSW1wbGlj
aXROYW1lZEdyaWRMaW5lc0Zyb21HcmlkQXJlYShuZXdOYW1lZEdyaWRBcmVhcywgbmFtZWRHcmlk
Q29sdW1uTGluZXMsIEZvckNvbHVtbnMpOwotICAgIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3Jl
YXRlSW1wbGljaXROYW1lZEdyaWRMaW5lc0Zyb21HcmlkQXJlYShuZXdOYW1lZEdyaWRBcmVhcywg
bmFtZWRHcmlkUm93TGluZXMsIEZvclJvd3MpOworICAgIEJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0
ZUltcGxpY2l0TmFtZWRHcmlkTGluZXNGcm9tR3JpZEFyZWEobmV3TmFtZWRHcmlkQXJlYXMsIG5h
bWVkR3JpZENvbHVtbkxpbmVzLCBGb3JDb2x1bW5zKTsKKyAgICBCdWlsZGVyQ29udmVydGVyOjpj
cmVhdGVJbXBsaWNpdE5hbWVkR3JpZExpbmVzRnJvbUdyaWRBcmVhKG5ld05hbWVkR3JpZEFyZWFz
LCBuYW1lZEdyaWRSb3dMaW5lcywgRm9yUm93cyk7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCku
c2V0TmFtZWRHcmlkQ29sdW1uTGluZXMobmFtZWRHcmlkQ29sdW1uTGluZXMpOwogICAgIGJ1aWxk
ZXJTdGF0ZS5zdHlsZSgpLnNldE5hbWVkR3JpZFJvd0xpbmVzKG5hbWVkR3JpZFJvd0xpbmVzKTsK
IApAQCAtMTY2NSwxNCArMTY2NiwxNCBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206
OmFwcGx5VmFsdWVHcmlkVGVtcGxhdGVBcmVhcyhTdHlsZTo6QnVpbGRlclN0YXRlJgogICAgIGJ1
aWxkZXJTdGF0ZS5zdHlsZSgpLnNldE5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudChncmlkVGVtcGxh
dGVBcmVhc1ZhbHVlLmNvbHVtbkNvdW50KCkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxk
ZXJDdXN0b206OmFwcGx5SW5pdGlhbEdyaWRUZW1wbGF0ZUNvbHVtbnMoU3R5bGU6OkJ1aWxkZXJT
dGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0
aWFsR3JpZFRlbXBsYXRlQ29sdW1ucyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAg
ICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRHcmlkQ29sdW1ucyhSZW5kZXJTdHlsZTo6aW5pdGlh
bEdyaWRDb2x1bW5zKCkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldE5hbWVkR3JpZENv
bHVtbkxpbmVzKFJlbmRlclN0eWxlOjppbml0aWFsTmFtZWRHcmlkQ29sdW1uTGluZXMoKSk7CiAg
ICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0T3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKFJl
bmRlclN0eWxlOjppbml0aWFsT3JkZXJlZE5hbWVkR3JpZENvbHVtbkxpbmVzKCkpOwogfQogCi1p
bmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEdyaWRUZW1wbGF0ZUNv
bHVtbnMoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVp
bGRlckN1c3RvbTo6YXBwbHlJbmhlcml0R3JpZFRlbXBsYXRlQ29sdW1ucyhCdWlsZGVyU3RhdGUm
IGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRHcmlkQ29sdW1u
cyhidWlsZGVyU3RhdGUucGFyZW50U3R5bGUoKS5ncmlkQ29sdW1ucygpKTsKICAgICBidWlsZGVy
U3RhdGUuc3R5bGUoKS5zZXROYW1lZEdyaWRDb2x1bW5MaW5lcyhidWlsZGVyU3RhdGUucGFyZW50
U3R5bGUoKS5uYW1lZEdyaWRDb2x1bW5MaW5lcygpKTsKQEAgLTE2OTAsNDUgKzE2OTEsNDUgQEAg
aW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRHcmlkVGVtcGxhdGVD
b2x1bW5zKFN0eWxlOjpCdWlsZGVyU3QKICAgICBzdHlsZS5zZXRHcmlkQXV0b1JlcGVhdCMjVHJh
Y2tUeXBlIyNzVHlwZSh0cmFja3NEYXRhLm1fYXV0b1JlcGVhdFR5cGUpOyBcCiAgICAgc3R5bGUu
c2V0R3JpZEF1dG9SZXBlYXQjI1RyYWNrVHlwZSMjc0luc2VydGlvblBvaW50KHRyYWNrc0RhdGEu
bV9hdXRvUmVwZWF0SW5zZXJ0aW9uUG9pbnQpOwogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5VmFsdWVHcmlkVGVtcGxhdGVDb2x1bW5zKFN0eWxlOjpCdWlsZGVyU3RhdGUm
IGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3Rv
bTo6YXBwbHlWYWx1ZUdyaWRUZW1wbGF0ZUNvbHVtbnMoQnVpbGRlclN0YXRlJiBidWlsZGVyU3Rh
dGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OlRyYWNr
c0RhdGEgdHJhY2tzRGF0YTsKLSAgICBpZiAoIVN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRl
R3JpZFRyYWNrTGlzdCh2YWx1ZSwgdHJhY2tzRGF0YSwgYnVpbGRlclN0YXRlKSkKKyAgICBCdWls
ZGVyQ29udmVydGVyOjpUcmFja3NEYXRhIHRyYWNrc0RhdGE7CisgICAgaWYgKCFCdWlsZGVyQ29u
dmVydGVyOjpjcmVhdGVHcmlkVHJhY2tMaXN0KHZhbHVlLCB0cmFja3NEYXRhLCBidWlsZGVyU3Rh
dGUpKQogICAgICAgICByZXR1cm47CiAgICAgY29uc3QgTmFtZWRHcmlkQXJlYU1hcCYgbmFtZWRH
cmlkQXJlYXMgPSBidWlsZGVyU3RhdGUuc3R5bGUoKS5uYW1lZEdyaWRBcmVhKCk7CiAgICAgaWYg
KCFuYW1lZEdyaWRBcmVhcy5pc0VtcHR5KCkpCi0gICAgICAgIFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y3JlYXRlSW1wbGljaXROYW1lZEdyaWRMaW5lc0Zyb21HcmlkQXJlYShuYW1lZEdyaWRBcmVh
cywgdHJhY2tzRGF0YS5tX25hbWVkR3JpZExpbmVzLCBGb3JDb2x1bW5zKTsKKyAgICAgICAgQnVp
bGRlckNvbnZlcnRlcjo6Y3JlYXRlSW1wbGljaXROYW1lZEdyaWRMaW5lc0Zyb21HcmlkQXJlYShu
YW1lZEdyaWRBcmVhcywgdHJhY2tzRGF0YS5tX25hbWVkR3JpZExpbmVzLCBGb3JDb2x1bW5zKTsK
IAogICAgIFNFVF9UUkFDS1NfREFUQSh0cmFja3NEYXRhLCBidWlsZGVyU3RhdGUuc3R5bGUoKSwg
Q29sdW1uKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRp
YWxHcmlkVGVtcGxhdGVSb3dzKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lu
bGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEdyaWRUZW1wbGF0ZVJvd3MoQnVp
bGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0
R3JpZFJvd3MoUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkUm93cygpKTsKICAgICBidWlsZGVyU3Rh
dGUuc3R5bGUoKS5zZXROYW1lZEdyaWRSb3dMaW5lcyhSZW5kZXJTdHlsZTo6aW5pdGlhbE5hbWVk
R3JpZFJvd0xpbmVzKCkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldE9yZGVyZWROYW1l
ZEdyaWRSb3dMaW5lcyhSZW5kZXJTdHlsZTo6aW5pdGlhbE9yZGVyZWROYW1lZEdyaWRSb3dMaW5l
cygpKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRH
cmlkVGVtcGxhdGVSb3dzKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGlu
ZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEdyaWRUZW1wbGF0ZVJvd3MoQnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0R3Jp
ZFJvd3MoYnVpbGRlclN0YXRlLnBhcmVudFN0eWxlKCkuZ3JpZFJvd3MoKSk7CiAgICAgYnVpbGRl
clN0YXRlLnN0eWxlKCkuc2V0TmFtZWRHcmlkUm93TGluZXMoYnVpbGRlclN0YXRlLnBhcmVudFN0
eWxlKCkubmFtZWRHcmlkUm93TGluZXMoKSk7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0
T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKGJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLm9yZGVy
ZWROYW1lZEdyaWRSb3dMaW5lcygpKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3Vz
dG9tOjphcHBseVZhbHVlR3JpZFRlbXBsYXRlUm93cyhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWls
ZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFw
cGx5VmFsdWVHcmlkVGVtcGxhdGVSb3dzKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NW
YWx1ZSYgdmFsdWUpCiB7Ci0gICAgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpUcmFja3NEYXRhIHRy
YWNrc0RhdGE7Ci0gICAgaWYgKCFTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFj
a0xpc3QodmFsdWUsIHRyYWNrc0RhdGEsIGJ1aWxkZXJTdGF0ZSkpCisgICAgQnVpbGRlckNvbnZl
cnRlcjo6VHJhY2tzRGF0YSB0cmFja3NEYXRhOworICAgIGlmICghQnVpbGRlckNvbnZlcnRlcjo6
Y3JlYXRlR3JpZFRyYWNrTGlzdCh2YWx1ZSwgdHJhY2tzRGF0YSwgYnVpbGRlclN0YXRlKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIGNvbnN0IE5hbWVkR3JpZEFyZWFNYXAmIG5hbWVkR3JpZEFyZWFz
ID0gYnVpbGRlclN0YXRlLnN0eWxlKCkubmFtZWRHcmlkQXJlYSgpOwogICAgIGlmICghbmFtZWRH
cmlkQXJlYXMuaXNFbXB0eSgpKQotICAgICAgICBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0
ZUltcGxpY2l0TmFtZWRHcmlkTGluZXNGcm9tR3JpZEFyZWEobmFtZWRHcmlkQXJlYXMsIHRyYWNr
c0RhdGEubV9uYW1lZEdyaWRMaW5lcywgRm9yUm93cyk7CisgICAgICAgIEJ1aWxkZXJDb252ZXJ0
ZXI6OmNyZWF0ZUltcGxpY2l0TmFtZWRHcmlkTGluZXNGcm9tR3JpZEFyZWEobmFtZWRHcmlkQXJl
YXMsIHRyYWNrc0RhdGEubV9uYW1lZEdyaWRMaW5lcywgRm9yUm93cyk7CiAKICAgICBTRVRfVFJB
Q0tTX0RBVEEodHJhY2tzRGF0YSwgYnVpbGRlclN0YXRlLnN0eWxlKCksIFJvdyk7CiB9CiAKLXZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQWx0KFN0eWxlOjpCdWlsZGVyU3RhdGUm
IGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQordm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBs
eVZhbHVlQWx0KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7
CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc1N0cmluZygpKQpAQCAtMTc1MCw3ICsx
NzUxLDcgQEAgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVBbHQoU3R5bGU6OkJ1
aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWwKICAgICAgICAgYnVpbGRlclN0YXRlLnN0
eWxlKCkuc2V0Q29udGVudEFsdFRleHQoZW1wdHlBdG9tKCkpOwogfQogCi1pbmxpbmUgdm9pZCBT
dHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXaWxsQ2hhbmdlKFN0eWxlOjpCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZVdpbGxDaGFuZ2UoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENT
U1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkg
ewogICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1
ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKTsKQEAgLTE3NzksMTMgKzE3ODAsMTMgQEAgaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2lsbENoYW5nZShTdHlsZTo6QnVpbGRl
clN0YXRlJiBidWlsZGUKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRXaWxsQ2hhbmdlKFdU
Rk1vdmUod2lsbENoYW5nZSkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206
OmFwcGx5VmFsdWVTdHJva2VXaWR0aChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUs
IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVT
dHJva2VXaWR0aChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQog
ewotICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldFN0cm9rZVdpZHRoKFN0eWxlQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydExlbmd0aChidWlsZGVyU3RhdGUsIHZhbHVlKSk7CisgICAgYnVpbGRl
clN0YXRlLnN0eWxlKCkuc2V0U3Ryb2tlV2lkdGgoQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExl
bmd0aChidWlsZGVyU3RhdGUsIHZhbHVlKSk7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0
SGFzRXhwbGljaXRseVNldFN0cm9rZVdpZHRoKHRydWUpOwogfQogCi1pbmxpbmUgdm9pZCBTdHls
ZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVTdHJva2VDb2xvcihTdHlsZTo6QnVpbGRlclN0YXRl
JiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0
b206OmFwcGx5VmFsdWVTdHJva2VDb2xvcihCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NT
VmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAoYnVpbGRlclN0YXRlLmFwcGx5UHJvcGVy
dHlUb1JlZ3VsYXJTdHlsZSgpKQpAQCAtMTc5NSw3ICsxNzk2LDcgQEAgaW5saW5lIHZvaWQgU3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlU3Ryb2tlQ29sb3IoU3R5bGU6OkJ1aWxkZXJTdGF0
ZSYgYnVpbGQKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRIYXNFeHBsaWNpdGx5U2V0U3Ry
b2tlQ29sb3IodHJ1ZSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlJbml0aWFsQ3VzdG9tUHJvcGVydHkoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
LCBjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkqIHJlZ2lzdGVyZWQsIGNvbnN0IEF0
b21TdHJpbmcmIG5hbWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxD
dXN0b21Qcm9wZXJ0eShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTUmVnaXN0
ZXJlZEN1c3RvbVByb3BlcnR5KiByZWdpc3RlcmVkLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQog
ewogICAgIGlmIChyZWdpc3RlcmVkICYmIHJlZ2lzdGVyZWQtPmluaXRpYWxWYWx1ZSgpKSB7CiAg
ICAgICAgIGF1dG8gaW5pdGlhbFZhbHVlID0gcmVnaXN0ZXJlZC0+aW5pdGlhbFZhbHVlQ29weSgp
OwpAQCAtMTgwNyw3ICsxODA4LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjph
cHBseUluaXRpYWxDdXN0b21Qcm9wZXJ0eShTdHlsZTo6QnVpbGRlclN0YXRlJgogICAgIGFwcGx5
VmFsdWVDdXN0b21Qcm9wZXJ0eShidWlsZGVyU3RhdGUsIHJlZ2lzdGVyZWQsIGludmFsaWQuZ2V0
KCkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEN1
c3RvbVByb3BlcnR5KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NT
UmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5KiByZWdpc3RlcmVkLCBjb25zdCBBdG9tU3RyaW5nJiBu
YW1lKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Q3VzdG9tUHJvcGVy
dHkoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Q
cm9wZXJ0eSogcmVnaXN0ZXJlZCwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSkKIHsKICAgICBhdXRv
KiBwYXJlbnRWYWx1ZSA9IGJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLmluaGVyaXRlZEN1c3Rv
bVByb3BlcnRpZXMoKS5nZXQobmFtZSk7CiAgICAgaWYgKHBhcmVudFZhbHVlICYmICEocmVnaXN0
ZXJlZCAmJiAhcmVnaXN0ZXJlZC0+aW5oZXJpdHMpKQpAQCAtMTgxNiw3ICsxODE3LDcgQEAgaW5s
aW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRDdXN0b21Qcm9wZXJ0eShT
dHlsZTo6QnVpbGRlclN0YXRlJgogICAgICAgICBhcHBseUluaXRpYWxDdXN0b21Qcm9wZXJ0eShi
dWlsZGVyU3RhdGUsIHJlZ2lzdGVyZWQsIG5hbWUpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1
aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDdXN0b21Qcm9wZXJ0eShTdHlsZTo6QnVpbGRlclN0YXRl
JiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSogcmVnaXN0
ZXJlZCwgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVy
Q3VzdG9tOjphcHBseVZhbHVlQ3VzdG9tUHJvcGVydHkoQnVpbGRlclN0YXRlJiBidWlsZGVyU3Rh
dGUsIGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSogcmVnaXN0ZXJlZCwgQ1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZSYgdmFsdWUpCiB7CiAgICAgQVNTRVJUKHZhbHVlLmlzUmVzb2x2ZWQo
KSk7CiAgICAgY29uc3QgYXV0byYgbmFtZSA9IHZhbHVlLm5hbWUoKTsKQEAgLTE4MjcsNCArMTgy
OCw1IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUN1c3RvbVBy
b3BlcnR5KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1CiAgICAgICAgIGJ1aWxkZXJTdGF0ZS5zdHls
ZSgpLnNldE5vbkluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgbWFrZVJlZih2YWx1
ZSkpOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJHZW5lcmF0ZWQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlQnVpbGRlckdlbmVyYXRlZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwLi5mMmMzZGY4YjA2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlQnVpbGRlckdlbmVyYXRlZC5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgQ1NTVmFsdWU7CitzdHJ1Y3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5OworCitu
YW1lc3BhY2UgU3R5bGUgeworY2xhc3MgQnVpbGRlclN0YXRlOworCitjbGFzcyBCdWlsZGVyR2Vu
ZXJhdGVkIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBhcHBseVByb3BlcnR5KENTU1Byb3Bl
cnR5SUQsIFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYsIGJvb2wgaXNJbml0aWFsLCBi
b29sIGlzSW5oZXJpdCwgY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5Kik7Cit9Owor
Cit9Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382450</attachid>
            <date>2019-10-31 04:16:33 -0700</date>
            <delta_ts>2019-10-31 07:28:35 -0700</delta_ts>
            <desc>patch</desc>
            <filename>style-builder-generated-rename-4.patch</filename>
            <type>text/plain</type>
            <size>162882</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNTVkOTU4NWFmNGMuLjYxYTliMGFjZWFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMTcyMyw3ICsxNzIzLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9IVFRQSGVhZGVyTmFtZXMuY3Bw
KQogCiAjIEdlbmVyYXRlIENTUyBwcm9wZXJ0eSBuYW1lcwogYWRkX2N1c3RvbV9jb21tYW5kKAot
ICAgIE9VVFBVVCAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ1NTUHJvcGVydGllcy5q
c29uICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9DU1NQcm9wZXJ0eU5hbWVzLmggJHtX
ZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NTU1Byb3BlcnR5TmFtZXMuY3BwICR7V2ViQ29y
ZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9DU1NQcm9wZXJ0eU5hbWVzLmdwZXJmICR7V2ViQ29yZV9E
RVJJVkVEX1NPVVJDRVNfRElSfS9TdHlsZUJ1aWxkZXIuY3BwICR7V2ViQ29yZV9ERVJJVkVEX1NP
VVJDRVNfRElSfS9TdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggJHtXZWJDb3JlX0RF
UklWRURfU09VUkNFU19ESVJ9L1N0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwCisg
ICAgT1VUUFVUICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9DU1NQcm9wZXJ0aWVzLmpz
b24gJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L0NTU1Byb3BlcnR5TmFtZXMuaCAke1dl
YkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vQ1NTUHJvcGVydHlOYW1lcy5jcHAgJHtXZWJDb3Jl
X0RFUklWRURfU09VUkNFU19ESVJ9L0NTU1Byb3BlcnR5TmFtZXMuZ3BlcmYgJHtXZWJDb3JlX0RF
UklWRURfU09VUkNFU19ESVJ9L1N0eWxlQnVpbGRlckdlbmVyYXRlZC5jcHAgJHtXZWJDb3JlX0RF
UklWRURfU09VUkNFU19ESVJ9L1N0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaCAke1dl
YkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9u
cy5jcHAKICAgICBNQUlOX0RFUEVOREVOQ1kgJHtXRUJDT1JFX0RJUn0vY3NzL21ha2Vwcm9wLnBs
CiAgICAgREVQRU5EUyAke1dlYkNvcmVfQ1NTX1BST1BFUlRZX05BTUVTfQogICAgIFdPUktJTkdf
RElSRUNUT1JZICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfQpAQCAtMTczMSw3ICsxNzMx
LDcgQEAgYWRkX2N1c3RvbV9jb21tYW5kKAogICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9
ICR7V0VCQ09SRV9ESVJ9L2Nzcy9tYWtlcHJvcC5wbCAtLWRlZmluZXMgIiR7RkVBVFVSRV9ERUZJ
TkVTX1dJVEhfU1BBQ0VfU0VQQVJBVE9SfSIgLS1ncGVyZi1leGVjdXRhYmxlICIke0dQRVJGX0VY
RUNVVEFCTEV9IgogICAgIFZFUkJBVElNKQogbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7
V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9DU1NQcm9wZXJ0eU5hbWVzLmNwcCkKLWxpc3Qo
QVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vU3R5
bGVCdWlsZGVyLmNwcCkKK2xpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke1dlYkNvcmVfREVS
SVZFRF9TT1VSQ0VTX0RJUn0vU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmNwcCkKIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUyAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHApCiBBRERfU09VUkNFX1dFQkNPUkVfREVSSVZFRF9E
RVBFTkRFTkNJRVMoJHtXRUJDT1JFX0RJUn0vY3NzL0NTU1BhcnNlci5jcHAgQ1NTVmFsdWVLZXl3
b3Jkcy5oKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGJjYmFlNzU3MjYuLmZhNTgzMzI0YjFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjQ4IEBACisyMDE5LTEwLTMxICBBbnR0aSBLb2l2aXN0byAgPGFudHRp
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU3R5bGVCdWlsZGVyIHRvIFN0eWxlOjpCdWls
ZGVyR2VuZXJhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDM2NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBbHNvIHJlbmFtZSB0aGUgcmVsYXRlZCBTdHlrZUJ1aWxkZXJDdXN0b20gYW5kIFN0eWxl
QnVpbGRlckNvbnZlcnRlciBjbGFzc2VzCisgICAgICAgIGFuZCBtb3ZlIHRoZW0gdG8gdGhlIFN0
eWxlIG5hbWVzcGFjZSBhbmQgZGlyZWN0b3J5LgorCisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNz
cy9DU1NGb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxjdWxhdGVXZWlnaHRSYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpjYWxjdWxhdGVTdHJldGNoUmFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Y2FsY3VsYXRlSXRhbGljUmFuZ2UpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFj
ZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlRm9udFNlbGVjdGlvblJlcXVlc3Qp
OgorICAgICAgICAqIGNzcy9DU1NUb1N0eWxlTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1RvU3R5bGVNYXA6Om1hcEZpbGxYUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9T
dHlsZU1hcDo6bWFwRmlsbFlQb3NpdGlvbik6CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlci5o
OiBSZW1vdmVkLgorICAgICAgICAqIGNzcy9tYWtlcHJvcC5wbDoKKyAgICAgICAgKGdldFNjb3Bl
Rm9yRnVuY3Rpb24pOgorICAgICAgICAoZ2VuZXJhdGVJbml0aWFsVmFsdWVTZXR0ZXIpOgorICAg
ICAgICAoZ2VuZXJhdGVJbmhlcml0VmFsdWVTZXR0ZXIpOgorICAgICAgICAoZ2VuZXJhdGVWYWx1
ZVNldHRlcik6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VUeXBlZEN1c3RvbVByb3Bl
cnR5VmFsdWUpOgorICAgICAgICAqIHN0eWxlL1Byb3BlcnR5Q2FzY2FkZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlDYXNjYWRlOjphcHBseVByb3BlcnR5KToKKyAgICAg
ICAgKiBzdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoT3JBdXRvKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoU2l6aW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3Ro
TWF4U2l6aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0VGFiU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydENvbXB1dGVkTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0TGluZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3BhY2luZyk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRvUmFkaXVzTGVuZ3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmFkaXVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG8xMDBQZXJjZW50
TWludXNMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudFgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudFkpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE9iamVj
dFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0VGV4dERlY29yYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnROdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnROdW1iZXJPckF1dG8pOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRXZWJraXRIeXBoZW5hdGVMaW1pdExpbmVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Qm9yZGVy
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRCb3JkZXJNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0U3R5bGVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVp
bGRlckNvbnZlcnRlcjo6dXBkYXRlQ29sb3JTY2hlbWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDb2xvclNjaGVtZSk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFN0cmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFN0cmluZ09yQXV0byk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFN0cmluZ09y
Tm9uZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6dmFsdWVU
b0VtcGhhc2lzUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRUZXh0RW1waGFzaXNQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRBbGlnbik6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENsaXBQYXRoKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmVzaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TWFycXVlZVJlcGV0
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRNYXJxdWVlU3BlZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRRdW90ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRUZXh0VW5kZXJsaW5lUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0VW5kZXJsaW5lT2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dERlY29y
YXRpb25UaGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRSZWZsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0SW5pdGlhbExldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRTdHJva2VXaWR0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVCb3hDb250YWluKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjp2YWx1ZVRvRGVjb3Jh
dGlvblNraXApOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRUZXh0RGVjb3JhdGlvblNraXApOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRTaGFwZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2Nyb2xsU25hcFR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTY3JvbGxTbmFwQWxpZ24pOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFj
a0JyZWFkdGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNy
ZWF0ZUdyaWRUcmFja1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252
ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFja0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1
aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlSW1wbGljaXROYW1lZEdyaWRMaW5lc0Zyb21H
cmlkQXJlYSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydEdyaWRUcmFja1NpemVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0R3JpZFRyYWNrU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRQb3NpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRBdXRvRmxvdyk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y3NzdG9MZW5ndGhDb252ZXJz
aW9uRGF0YVdpdGhUZXh0Wm9vbUZhY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFdvcmRTcGFjaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UGVyc3BlY3RpdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVlSW5jcmVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0RmlsdGVy
T3BlcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydEZvbnRGZWF0dXJlU2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250V2VpZ2h0RnJvbVZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN0cmV0Y2hGcm9tVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRG
b250U3R5bGVGcm9tVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRGb250V2VpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN0cmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250VmFyaWF0aW9uU2V0dGluZ3MpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUb3VjaENhbGxv
dXQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRU
YXBIaWdobGlnaHRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydFRvdWNoQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0T3ZlcmZsb3dTY3JvbGxpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTVkdMZW5ndGhWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNWR0xlbmd0aFZl
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dFN0cm9rZURhc2hBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydFBhaW50T3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRPcGFjaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U1ZHVVJJUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U1ZHQ29sb3IpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTZWxmT3JEZWZhdWx0QWxp
Z25tZW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydENvbnRlbnRBbGlnbm1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R2x5cGhPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdseXBoT3JpZW50YXRpb25PckF1
dG8pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRM
aW5lSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0Rm9udFN5bnRoZXNpcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydFNwZWFrQXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRIYW5naW5nUHVuY3R1YXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHYXBMZW5ndGgpOgorICAgICAgICAq
IHN0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxk
ZXJDdXN0b206OmFwcGx5SW5pdGlhbFdlYmtpdE1hc2tJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0V2Via2l0TWFza0ltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxGb250RmVh
dHVyZVNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjph
cHBseUluaGVyaXRGb250RmVhdHVyZVNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxGb250VmFyaWF0aW9uU2V0dGluZ3MpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEZvbnRWYXJp
YXRpb25TZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6
YXBwbHlWYWx1ZURpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1
c3RvbTo6YXBwbHlJbml0aWFsVGV4dEFsaWduKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlVGV4dEFsaWduKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpCdWlsZGVyQ3VzdG9tOjpyZXNldEVmZmVjdGl2ZVpvb20pOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbFpvb20pOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFpvb20pOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVab29tKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjptbUxlbmd0aCk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6aW5jaExlbmd0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6Z2V0UGFnZVNpemVGcm9tTmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVZlcnRpY2FsQWxpZ24pOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEltYWdl
UmVzb2x1dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBw
bHlJbml0aWFsSW1hZ2VSZXNvbHV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWls
ZGVyQ3VzdG9tOjphcHBseVZhbHVlSW1hZ2VSZXNvbHV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRTaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxTaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0VGV4dEluZGVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsVGV4dElu
ZGVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1
ZVRleHRJbmRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkFwcGx5UHJvcGVydHlCb3Jk
ZXJJbWFnZU1vZGlmaWVyOjphcHBseUluaGVyaXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6QXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlTW9kaWZpZXI6OmFwcGx5SW5pdGlhbFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpBcHBseVByb3BlcnR5Qm9yZGVySW1hZ2VNb2Rp
Zmllcjo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3Rv
bTo6YXBwbHlJbmhlcml0TGluZUhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVp
bGRlckN1c3RvbTo6YXBwbHlJbml0aWFsTGluZUhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUxpbmVIZWlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdE91dGxpbmVTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsT3V0bGlu
ZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZh
bHVlT3V0bGluZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9t
OjphcHBseUluaXRpYWxDbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3Vz
dG9tOjphcHBseUluaGVyaXRDbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVy
Q3VzdG9tOjphcHBseVZhbHVlQ2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdExvY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdyaXRpbmdNb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0VGV4dE9yaWVudGF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Vi
a2l0VGV4dFNpemVBZGp1c3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0
b206OmFwcGx5VmFsdWVXZWJraXRUZXh0Wm9vbSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvbG9yU2NoZW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVRleHRPckJveFNoYWRvd1ZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxUZXh0U2hhZG93
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRU
ZXh0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBs
eVZhbHVlVGV4dFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3Rv
bTo6YXBwbHlJbml0aWFsQm94U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWls
ZGVyQ3VzdG9tOjphcHBseUluaGVyaXRCb3hTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVCb3hTaGFkb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbFdlYmtpdEJveFNoYWRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0V2Via2l0
Qm94U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBs
eVZhbHVlV2Via2l0Qm94U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVy
Q3VzdG9tOjphcHBseUluaXRpYWxGb250RmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRGb250RmFtaWx5KToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRm9udEZhbWlseSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6aXNWYWxpZERpc3BsYXlWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0RGlzcGxh
eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZURp
c3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFs
dWVCYXNlbGluZVNoaWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9t
OjphcHBseUluaXRpYWxXZWJraXRBc3BlY3RSYXRpbyk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0V2Via2l0QXNwZWN0UmF0aW8pOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRBc3BlY3RS
YXRpbyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbml0
aWFsV2Via2l0VGV4dEVtcGhhc2lzU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1
aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFdlYmtpdFRleHRFbXBoYXNpc1N0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0VGV4dEVt
cGhhc2lzU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFw
cGx5SW5oZXJpdENvdW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0
b206OmFwcGx5VmFsdWVDb3VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVy
Q3VzdG9tOjphcHBseUluaXRpYWxDb3VudGVySW5jcmVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRDb3VudGVySW5jcmVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ291bnRlcklu
Y3JlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJ
bml0aWFsQ291bnRlclJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3Vz
dG9tOjphcHBseUluaGVyaXRDb3VudGVyUmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb3VudGVyUmVzZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Q3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxGaWxsKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRGaWxs
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRmls
bCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFs
U3Ryb2tlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUlu
aGVyaXRTdHJva2UpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFw
cGx5VmFsdWVTdHJva2UpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206
OmFwcGx5SW5pdGlhbENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJD
dXN0b206OmFwcGx5SW5oZXJpdENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1
aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRGb250VmFyaWFudExpZ2F0dXJlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsRm9udFZhcmlh
bnRMaWdhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFw
cGx5VmFsdWVGb250VmFyaWFudExpZ2F0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Rm9udFZhcmlhbnROdW1lcmljKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxGb250VmFyaWFudE51
bWVyaWMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFs
dWVGb250VmFyaWFudE51bWVyaWMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJD
dXN0b206OmFwcGx5SW5oZXJpdEZvbnRWYXJpYW50RWFzdEFzaWFuKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxGb250VmFyaWFudEVhc3RBc2lh
bik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZv
bnRWYXJpYW50RWFzdEFzaWFuKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3Vz
dG9tOjphcHBseUluaXRpYWxGb250U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVp
bGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Rm9udFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OkJ1aWxkZXJDdXN0b206OmxhcmdlckZvbnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpCdWlsZGVyQ3VzdG9tOjpzbWFsbGVyRm9udFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OkJ1aWxkZXJDdXN0b206OmRldGVybWluZVJ1YnlUZXh0U2l6ZU11bHRpcGxpZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEZvbnRT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhl
cml0Rm9udFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjph
cHBseVZhbHVlRm9udFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3Vz
dG9tOjphcHBseVZhbHVlRm9udFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxk
ZXJDdXN0b206OmFwcGx5SW5pdGlhbEdyaWRUZW1wbGF0ZUFyZWFzKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRHcmlkVGVtcGxhdGVBcmVhcyk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUdyaWRU
ZW1wbGF0ZUFyZWFzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjph
cHBseUluaXRpYWxHcmlkVGVtcGxhdGVDb2x1bW5zKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRHcmlkVGVtcGxhdGVDb2x1bW5zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlR3JpZFRlbXBsYXRl
Q29sdW1ucyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlJ
bml0aWFsR3JpZFRlbXBsYXRlUm93cyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRl
ckN1c3RvbTo6YXBwbHlJbmhlcml0R3JpZFRlbXBsYXRlUm93cyk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUdyaWRUZW1wbGF0ZVJvd3MpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVBbHQpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXaWxsQ2hhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlU3Ry
b2tlV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5
VmFsdWVTdHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckN1c3Rv
bTo6YXBwbHlJbml0aWFsQ3VzdG9tUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OkJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEN1c3RvbVByb3BlcnR5KToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ3VzdG9tUHJvcGVydHkpOgor
ICAgICAgICAqIHN0eWxlL1N0eWxlQnVpbGRlckdlbmVyYXRlZC5oOiBBZGRlZC4KKwogMjAxOS0x
MC0zMCAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgogCiAgICAgICAgIFtQaWN0dXJl
LWluLVBpY3R1cmUgV2ViIEFQSV0gRW5hYmxlIHRoZSBzdXBwb3J0IGZvciBpT1MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDE4Yjk4MDI5MTM5Li4xNjE3NGU1YTljZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xMjg5LDcgKzEyODksNyBAQCBhbGwgOiBcCiAg
ICAgU1ZHTmFtZXMuaCBcCiAgICAgU2VsZWN0b3JQc2V1ZG9DbGFzc0FuZENvbXBhdGliaWxpdHlF
bGVtZW50TWFwLmNwcCBcCiAgICAgU2VsZWN0b3JQc2V1ZG9FbGVtZW50VHlwZU1hcC5jcHAgXAot
ICAgIFN0eWxlQnVpbGRlci5jcHAgXAorICAgIFN0eWxlQnVpbGRlckdlbmVyYXRlZC5jcHAgXAog
ICAgIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwIFwKICAgICBTdHlsZVByb3Bl
cnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggXAogICAgIFVzZXJBZ2VudFN0eWxlU2hlZXRzLmggXApA
QCAtMTMzOCw3ICsxMzM4LDcgQEAgV0VCQ09SRV9DU1NfVkFMVUVfS0VZV09SRFMgOj0gJChXRUJD
T1JFX0NTU19WQUxVRV9LRVlXT1JEUykgJChXZWJDb3JlKS9jc3MvU1ZHQ1MKIENTU19QUk9QRVJU
WV9OQU1FX0ZJTEVTID0gXAogICAgIENTU1Byb3BlcnR5TmFtZXMuY3BwIFwKICAgICBDU1NQcm9w
ZXJ0eU5hbWVzLmggXAotICAgIFN0eWxlQnVpbGRlci5jcHAgXAorICAgIFN0eWxlQnVpbGRlckdl
bmVyYXRlZC5jcHAgXAogICAgIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwIFwK
ICAgICBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggXAogIwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApp
bmRleCAzZGM4YmYxNjM0MS4uNmU4Y2U3NGE1YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yNjAyLDcg
KzI2MDIsNyBAQCBIVE1MRW50aXR5VGFibGUuY3BwCiBNYXRoTUxFbGVtZW50RmFjdG9yeS5jcHAK
IFBsdWdJbnNSZXNvdXJjZXNEYXRhLmNwcAogU1ZHRWxlbWVudEZhY3RvcnkuY3BwCi1TdHlsZUJ1
aWxkZXIuY3BwCitTdHlsZUJ1aWxkZXJHZW5lcmF0ZWQuY3BwCiBTdHlsZVByb3BlcnR5U2hvcnRo
YW5kRnVuY3Rpb25zLmNwcAogVXNlckFnZW50U3R5bGVTaGVldHNEYXRhLmNwcAogV2ViQ29yZUpT
QnVpbHRpbkludGVybmFscy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3MjkzMDM4MTVhZS4uNmNjZTU1OGQ4ZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTI0MTYsNyArMjQxNiw2IEBACiAJCTgzN0E4MDEzMUUxRTEyNzMwMDAyNkI5RiAvKiBMb2NhbGl6
YWJsZS5zdHJpbmdzZGljdCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODM3QTgwMTExRTFFMTI3MzAwMDI2QjlGIC8qIExvY2FsaXphYmxlLnN0cmluZ3Nk
aWN0ICovOyB9OwogCQk4MzdENDYyNzFGQTJBOENFMDA1NEUxRkEgLyogU2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzN0Q0NjI1MUZBMkE4QzUwMDU0RTFGQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTgzN0ZCMzQ1MUY5RUEwNkQwMEQwRkMzMSAvKiBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdGQjM0MDFG
OUVBMDY2MDBEMEZDMzEgLyogRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oICovOyB9OwotCQk4Mzg2
QTk2RDE5RjYxQjJFMDBFMUVDNEEgLyogU3R5bGVCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzg2QTk2QzE5RjYxQjJFMDBFMUVDNEEgLyog
U3R5bGVCdWlsZGVyLmggKi87IH07CiAJCTgzODg2NzM1MUQxM0JBNUYwMDM2OTdEMCAvKiBSZW5k
ZXJPYmplY3RFbnVtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODM4ODY3MzQxRDEzQkE1OTAwMzY5N0QwIC8qIFJlbmRlck9iamVjdEVudW1zLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM4Q0E2QkQx
RkMwREZFOTAwNUQ5RkE1IC8qIFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM4Q0E2QkIxRkMwREZE
RDAwNUQ5RkE1IC8qIFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzOEVGNTM4MURDMTQ5RTIw
MDhGMEMzOSAvKiBJREJUcmFuc2FjdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzOEVGNTM2MURDMTQ5REEwMDhGMEMzOSAvKiBJREJUcmFu
c2FjdGlvbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtNDg0Myw2ICs0ODQyLDcgQEAKIAkJRTRBQkFCRTQyMzYxQTMyOTAwRkE0MzQ1IC8q
IFByb3BlcnR5Q2FzY2FkZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTRBQkFCRTIyMzYxQTMyOTAwRkE0MzQ1IC8qIFByb3BlcnR5Q2FzY2FkZS5oICov
OyB9OwogCQlFNEFCQUJGMzIzNjhCOTU5MDBGQTQzNDUgLyogU3R5bGVCdWlsZGVyU3RhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QUJBQkYyMjM2
OEI5NTgwMEZBNDM0NSAvKiBTdHlsZUJ1aWxkZXJTdGF0ZS5oICovOyB9OwogCQlFNEFCQUJGNTIz
NjhDNkVGMDBGQTQzNDUgLyogQ2FzY2FkZUxldmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEFCQUJGNDIzNjhDNkVGMDBGQTQzNDUgLyogQ2FzY2Fk
ZUxldmVsLmggKi87IH07CisJCUU0QUJBQzA0MjM2QUU5NTkwMEZBNDM0NSAvKiBTdHlsZUJ1aWxk
ZXJHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0QUJBQzAyMjM2QUU5NTgwMEZBNDM0NSAvKiBTdHlsZUJ1aWxkZXJHZW5lcmF0ZWQuaCAq
LzsgfTsKIAkJRTRBRTdDMTYxN0QxQkI5NTAwMDlGQjMxIC8qIEVsZW1lbnRJdGVyYXRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBRTdDMTUxN0Qx
QkI5NTAwMDlGQjMxIC8qIEVsZW1lbnRJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0QUU3QzFBMTdEMjMyMzUwMDA5RkIzMSAvKiBF
bGVtZW50QW5jZXN0b3JJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTRBRTdDMTkxN0QyMzIzNTAwMDlGQjMxIC8qIEVsZW1lbnRBbmNlc3Rv
ckl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRTRBRkNGQTUwREFGMjlBMzAwRjVGNTVDIC8qIFVuaXRCZXppZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QUZDRkE0MERBRjI5QTMwMEY1
RjU1QyAvKiBVbml0QmV6aWVyLmggKi87IH07CkBAIC0xMDE3Nyw4ICsxMDE3Nyw3IEBACiAJCTgz
N0ZCMzQwMUY5RUEwNjYwMEQwRkMzMSAvKiBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVuZGFibGVNZXNzYWdlRXZlbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3RkIzNDIxRjlFQTA2NzAwRDBGQzMxIC8qIEV4
dGVuZGFibGVNZXNzYWdlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzN0ZCMzQzMUY5RUEwNjgwMEQwRkMzMSAvKiBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODM4NkE5NkMxOUY2MUIyRTAwRTFFQzRBIC8q
IFN0eWxlQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZUJ1
aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODM4NkE5NkUxOUY2MUU0RjAw
RTFFQzRBIC8qIFN0eWxlQnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBTdHlsZUJ1aWxkZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9T
dHlsZUJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk4
Mzg2QTk2RTE5RjYxRTRGMDBFMUVDNEEgLyogU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFN0eWxlQnVpbGRlckdlbmVyYXRlZC5j
cHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1N0eWxlQnVpbGRlckdlbmVyYXRlZC5j
cHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTgzODg2NzM0MUQxM0JB
NTkwMDM2OTdEMCAvKiBSZW5kZXJPYmplY3RFbnVtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW5kZXJPYmplY3RFbnVtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4Mzg4NjlFQjFDRTgxRTlFMDBEMTZBOUUgLyogSlNUZXh0Q3VzdG9tLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVGV4dEN1c3RvbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzOENBNkJCMUZDMERGREQwMDVEOUZBNSAvKiBTZXJ2aWNl
V29ya2VySm9iRGF0YUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNTE4MCw2ICsxNTE3OSw3IEBACiAJCUU0QUJBQkYwMjM2OEI5MTgwMEZBNDM0
NSAvKiBTdHlsZUJ1aWxkZXJTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZUJ1aWxk
ZXJTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0QUJBQkYyMjM2OEI5
NTgwMEZBNDM0NSAvKiBTdHlsZUJ1aWxkZXJTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTdHlsZUJ1aWxkZXJTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFNEFCQUJGNDIzNjhDNkVGMDBGQTQzNDUgLyogQ2FzY2FkZUxldmVsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhc2NhZGVMZXZlbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFNEFCQUMwMjIzNkFFOTU4MDBGQTQzNDUgLyogU3R5bGVCdWlsZGVyR2Vu
ZXJhdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlQnVpbGRlckdl
bmVyYXRlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEFFN0MxNTE3RDFCQjk1
MDAwOUZCMzEgLyogRWxlbWVudEl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEVsZW1lbnRJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
NEFFN0MxOTE3RDIzMjM1MDAwOUZCMzEgLyogRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRBRkNGQTQwREFGMjlBMzAwRjVGNTVDIC8q
IFVuaXRCZXppZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5pdEJlemll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjAxNTcsNyArMjAxNTcsNyBAQAog
CQkJCTdDRUI1N0U5MUY5NTY1MTUwMDA5N0FFQyAvKiBTZXR0aW5ncy5oICovLAogCQkJCTk5MDhC
MEZEMUJDQUQwN0QwMEVEMEY1NSAvKiBTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5jcHAgKi8sCiAJ
CQkJOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEM5IC8qIFN0cmVhbUludGVybmFsc0J1aWx0aW5zLmgg
Ki8sCi0JCQkJODM4NkE5NkUxOUY2MUU0RjAwRTFFQzRBIC8qIFN0eWxlQnVpbGRlci5jcHAgKi8s
CisJCQkJODM4NkE5NkUxOUY2MUU0RjAwRTFFQzRBIC8qIFN0eWxlQnVpbGRlckdlbmVyYXRlZC5j
cHAgKi8sCiAJCQkJODNDMDVBNTgxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9y
dGhhbmRGdW5jdGlvbnMuY3BwICovLAogCQkJCTgzQzA1QTU5MUE2ODYyMTIwMDdFNURFQSAvKiBT
dHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggKi8sCiAJCQkJNjU2NTgxRTYwOUQxNTA4
RDAwMEU2MUQ3IC8qIFNWR0VsZW1lbnRGYWN0b3J5LmNwcCAqLywKQEAgLTI2OTU4LDYgKzI2OTU4
LDkgQEAKIAkJCQkxQzAxMDZGRjE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxl
LmggKi8sCiAJCQkJRTRBQkFCRTUyMzYxQTM0MjAwRkE0MzQ1IC8qIFByb3BlcnR5Q2FzY2FkZS5j
cHAgKi8sCiAJCQkJRTRBQkFCRTIyMzYxQTMyOTAwRkE0MzQ1IC8qIFByb3BlcnR5Q2FzY2FkZS5o
ICovLAorCQkJCTgzQjk2ODc5MTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaCAqLywKKwkJCQk4MzVEMzYzNjE5RkY2MTkzMDA0QzkzQUIgLyogU3R5bGVCdWlsZGVyQ3Vz
dG9tLmggKi8sCisJCQkJRTRBQkFDMDIyMzZBRTk1ODAwRkE0MzQ1IC8qIFN0eWxlQnVpbGRlckdl
bmVyYXRlZC5oICovLAogCQkJCUU0QUJBQkYwMjM2OEI5MTgwMEZBNDM0NSAvKiBTdHlsZUJ1aWxk
ZXJTdGF0ZS5jcHAgKi8sCiAJCQkJRTRBQkFCRjIyMzY4Qjk1ODAwRkE0MzQ1IC8qIFN0eWxlQnVp
bGRlclN0YXRlLmggKi8sCiAJCQkJRTQwMUUwQTUxQzNDMENGNzAwRjM0RDEwIC8qIFN0eWxlQ2hh
bmdlLmNwcCAqLywKQEAgLTI3MzcwLDkgKzI3MzczLDYgQEAKIAkJCQk0M0I4NUVENjE4Q0JFQzk3
MDBFMzFBRjQgLyogU2VsZWN0b3JQc2V1ZG9DbGFzc0FuZENvbXBhdGliaWxpdHlFbGVtZW50TWFw
LmluICovLAogCQkJCTI2QUEwRjlBMThEMjk3M0QwMDQxOTM4MSAvKiBTZWxlY3RvclBzZXVkb0Vs
ZW1lbnRUeXBlTWFwLmluICovLAogCQkJCTQzMTA3QkUxMThDQzE5REUwMENDMThFOCAvKiBTZWxl
Y3RvclBzZXVkb1R5cGVNYXAuaCAqLywKLQkJCQk4Mzg2QTk2QzE5RjYxQjJFMDBFMUVDNEEgLyog
U3R5bGVCdWlsZGVyLmggKi8sCi0JCQkJODNCOTY4NzkxOUY4QUI4MzAwNEVGN0FGIC8qIFN0eWxl
QnVpbGRlckNvbnZlcnRlci5oICovLAotCQkJCTgzNUQzNjM2MTlGRjYxOTMwMDRDOTNBQiAvKiBT
dHlsZUJ1aWxkZXJDdXN0b20uaCAqLywKIAkJCQk5NDE4Mjc4ODFEOEIyNDIyMDA0OTI3NjQgLyog
U3R5bGVDb2xvci5jcHAgKi8sCiAJCQkJOTQxODI3ODkxRDhCMjQyMjAwNDkyNzY0IC8qIFN0eWxl
Q29sb3IuaCAqLywKIAkJCQkwRkY1MDI2RTEwMkJBOTY2MDA2NkYzOUEgLyogU3R5bGVNZWRpYS5j
cHAgKi8sCkBAIC0zMjE0Miw3ICszMjE0Miw2IEBACiAJCQkJNDE0QjgyMDUxRDZERjBFNTAwNzdF
QkUzIC8qIFN0cnVjdHVyZWRDbG9uZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI2QTMwRTgx
REM0RjAwQjI1OTY1IC8qIFN0eWxlQmFja2dyb3VuZERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDNUVCNjdCMEU4MUQzQkUwMEIyNTk2NSAvKiBTdHlsZUJveERhdGEuaCBpbiBIZWFkZXJzICov
LAotCQkJCTgzODZBOTZEMTlGNjFCMkUwMEUxRUM0QSAvKiBTdHlsZUJ1aWxkZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTgzQjk2ODdCMTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNUQzNjM3MTlGRjYxOTMwMDRDOTNBQiAvKiBT
dHlsZUJ1aWxkZXJDdXN0b20uaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QUJBQkYzMjM2OEI5NTkw
MEZBNDM0NSAvKiBTdHlsZUJ1aWxkZXJTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjM0OCw2
ICszMjM0Nyw3IEBACiAJCQkJMDg1NEIwMjMxMjU1RTRFNjAwQjlDREQwIC8qIFNWR1Jvb3RJbmxp
bmVCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUEzMEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdTY3JpcHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FBNjBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHU2V0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTRBQkFDMDQyMzZB
RTk1OTAwRkE0MzQ1IC8qIFN0eWxlQnVpbGRlckdlbmVyYXRlZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTRBRkQwMTAwREFGMzM1NTAwRjVGNTVDIC8qIFNWR1NNSUxFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMjIyN0FBOTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3RvcEVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUIyMjI3QUFDMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTdHJpbmdM
aXN0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCmluZGV4IGYx
YmNlMDcwMTA4Li4zYTY0NjIyOGIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCkBA
IC0xMzgsMTQgKzEzOCwxNCBAQCBzdGF0aWMgRm9udFNlbGVjdGlvblJhbmdlIGNhbGN1bGF0ZVdl
aWdodFJhbmdlKENTU1ZhbHVlJiB2YWx1ZSkKICAgICAgICAgQVNTRVJUKHZhbHVlTGlzdC5pdGVt
KDEpLT5pc1ByaW1pdGl2ZVZhbHVlKCkpOwogICAgICAgICBhdXRvJiB2YWx1ZTAgPSBkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlTGlzdC5pdGVtKDApKTsKICAgICAgICAgYXV0byYg
dmFsdWUxID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZUxpc3QuaXRlbSgxKSk7
Ci0gICAgICAgIGF1dG8gcmVzdWx0MCA9IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZv
bnRXZWlnaHRGcm9tVmFsdWUodmFsdWUwKTsKLSAgICAgICAgYXV0byByZXN1bHQxID0gU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFdlaWdodEZyb21WYWx1ZSh2YWx1ZTEpOworICAg
ICAgICBhdXRvIHJlc3VsdDAgPSBTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRX
ZWlnaHRGcm9tVmFsdWUodmFsdWUwKTsKKyAgICAgICAgYXV0byByZXN1bHQxID0gU3R5bGU6OkJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250V2VpZ2h0RnJvbVZhbHVlKHZhbHVlMSk7CiAgICAg
ICAgIHJldHVybiB7IHJlc3VsdDAsIHJlc3VsdDEgfTsKICAgICB9CiAKICAgICBBU1NFUlQoaXM8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSk7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIEZvbnRTZWxlY3Rpb25WYWx1
ZSByZXN1bHQgPSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250V2VpZ2h0RnJvbVZh
bHVlKHByaW1pdGl2ZVZhbHVlKTsKKyAgICBGb250U2VsZWN0aW9uVmFsdWUgcmVzdWx0ID0gU3R5
bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250V2VpZ2h0RnJvbVZhbHVlKHByaW1pdGl2
ZVZhbHVlKTsKICAgICByZXR1cm4geyByZXN1bHQsIHJlc3VsdCB9OwogfQogCkBAIC0xNzYsMTQg
KzE3NiwxNCBAQCBzdGF0aWMgRm9udFNlbGVjdGlvblJhbmdlIGNhbGN1bGF0ZVN0cmV0Y2hSYW5n
ZShDU1NWYWx1ZSYgdmFsdWUpCiAgICAgICAgIEFTU0VSVCh2YWx1ZUxpc3QuaXRlbSgxKS0+aXNQ
cmltaXRpdmVWYWx1ZSgpKTsKICAgICAgICAgYXV0byYgdmFsdWUwID0gZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KCp2YWx1ZUxpc3QuaXRlbSgwKSk7CiAgICAgICAgIGF1dG8mIHZhbHVlMSA9
IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWVMaXN0Lml0ZW0oMSkpOwotICAgICAg
ICBhdXRvIHJlc3VsdDAgPSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250U3RyZXRj
aEZyb21WYWx1ZSh2YWx1ZTApOwotICAgICAgICBhdXRvIHJlc3VsdDEgPSBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRGb250U3RyZXRjaEZyb21WYWx1ZSh2YWx1ZTEpOworICAgICAgICBh
dXRvIHJlc3VsdDAgPSBTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRTdHJldGNo
RnJvbVZhbHVlKHZhbHVlMCk7CisgICAgICAgIGF1dG8gcmVzdWx0MSA9IFN0eWxlOjpCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0Rm9udFN0cmV0Y2hGcm9tVmFsdWUodmFsdWUxKTsKICAgICAgICAg
cmV0dXJuIHsgcmVzdWx0MCwgcmVzdWx0MSB9OwogICAgIH0KIAogICAgIEFTU0VSVChpczxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpKTsKICAgICBjb25zdCBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9
IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgRm9udFNlbGVjdGlvblZh
bHVlIHJlc3VsdCA9IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRTdHJldGNoRnJv
bVZhbHVlKHByaW1pdGl2ZVZhbHVlKTsKKyAgICBGb250U2VsZWN0aW9uVmFsdWUgcmVzdWx0ID0g
U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250U3RyZXRjaEZyb21WYWx1ZShwcmlt
aXRpdmVWYWx1ZSk7CiAgICAgcmV0dXJuIHsgcmVzdWx0LCByZXN1bHQgfTsKIH0KIApAQCAtMjA2
LDcgKzIwNiw3IEBAIHZvaWQgQ1NTRm9udEZhY2U6OnNldFN0cmV0Y2goQ1NTVmFsdWUmIHN0eWxl
KQogc3RhdGljIEZvbnRTZWxlY3Rpb25SYW5nZSBjYWxjdWxhdGVJdGFsaWNSYW5nZShDU1NWYWx1
ZSYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLmlzRm9udFN0eWxlVmFsdWUoKSkgewotICAgICAg
ICBhdXRvIHJlc3VsdCA9IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRTdHlsZUZy
b21WYWx1ZSh2YWx1ZSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gU3R5bGU6OkJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRGb250U3R5bGVGcm9tVmFsdWUodmFsdWUpOwogICAgICAgICByZXR1cm4g
eyByZXN1bHQudmFsdWVPcihub3JtYWxJdGFsaWNWYWx1ZSgpKSwgcmVzdWx0LnZhbHVlT3Iobm9y
bWFsSXRhbGljVmFsdWUoKSkgfTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
ZXQuY3BwCmluZGV4IDE4ZTgzNGQ2OTBhLi5lMzBjNjQ1YTI1MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTZXQuY3BwCkBAIC0zMTQsOSArMzE0LDkgQEAgc3RhdGljIEZvbnRTZWxlY3Rp
b25SZXF1ZXN0IGNvbXB1dGVGb250U2VsZWN0aW9uUmVxdWVzdChNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzJgogICAgIGlmICghc3R5bGVWYWx1ZSkKICAgICAgICAgc3R5bGVWYWx1ZSA9IENTU0ZvbnRT
dHlsZVZhbHVlOjpjcmVhdGUoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpKTsKIAotICAgIGF1dG8gd2VpZ2h0U2VsZWN0aW9uVmFs
dWUgPSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250V2VpZ2h0RnJvbVZhbHVlKCp3
ZWlnaHRWYWx1ZSk7Ci0gICAgYXV0byBzdHJldGNoU2VsZWN0aW9uVmFsdWUgPSBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250U3RyZXRjaEZyb21WYWx1ZSgqc3RyZXRjaFZhbHVlKTsK
LSAgICBhdXRvIHN0eWxlU2VsZWN0aW9uVmFsdWUgPSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRGb250U3R5bGVGcm9tVmFsdWUoKnN0eWxlVmFsdWUpOworICAgIGF1dG8gd2VpZ2h0U2Vs
ZWN0aW9uVmFsdWUgPSBTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRXZWlnaHRG
cm9tVmFsdWUoKndlaWdodFZhbHVlKTsKKyAgICBhdXRvIHN0cmV0Y2hTZWxlY3Rpb25WYWx1ZSA9
IFN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN0cmV0Y2hGcm9tVmFsdWUoKnN0
cmV0Y2hWYWx1ZSk7CisgICAgYXV0byBzdHlsZVNlbGVjdGlvblZhbHVlID0gU3R5bGU6OkJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250U3R5bGVGcm9tVmFsdWUoKnN0eWxlVmFsdWUpOwogCiAg
ICAgcmV0dXJuIHsgd2VpZ2h0U2VsZWN0aW9uVmFsdWUsIHN0cmV0Y2hTZWxlY3Rpb25WYWx1ZSwg
c3R5bGVTZWxlY3Rpb25WYWx1ZSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1RvU3R5bGVNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3Bw
CmluZGV4IDYzM2YyYjU4ZjcwLi43OTNkYjQ3YmQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0
eWxlTWFwLmNwcApAQCAtMjMxLDkgKzIzMSw5IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmls
bFhQb3NpdGlvbihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEZpbGxMYXllciYgbGF5ZXIsCiAg
ICAgTGVuZ3RoIGxlbmd0aDsKICAgICBpZiAocGFpcikgewogICAgICAgICBBU1NFUlRfVU5VU0VE
KHByb3BlcnR5SUQsIHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25Y
IHx8IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YKTsKLSAgICAg
ICAgbGVuZ3RoID0gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoKG1fYnVpbGRl
clN0YXRlLCAqcGFpci0+c2Vjb25kKCkpOworICAgICAgICBsZW5ndGggPSBTdHlsZTo6QnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydExlbmd0aChtX2J1aWxkZXJTdGF0ZSwgKnBhaXItPnNlY29uZCgp
KTsKICAgICB9IGVsc2UKLSAgICAgICAgbGVuZ3RoID0gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0UG9zaXRpb25Db21wb25lbnRYKG1fYnVpbGRlclN0YXRlLCB2YWx1ZSk7CisgICAgICAg
IGxlbmd0aCA9IFN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25l
bnRYKG1fYnVpbGRlclN0YXRlLCB2YWx1ZSk7CiAKICAgICBsYXllci5zZXRYUG9zaXRpb24obGVu
Z3RoKTsKICAgICBpZiAocGFpcikKQEAgLTI1NSw5ICsyNTUsOSBAQCB2b2lkIENTU1RvU3R5bGVN
YXA6Om1hcEZpbGxZUG9zaXRpb24oQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBGaWxsTGF5ZXIm
IGxheWVyLAogICAgIExlbmd0aCBsZW5ndGg7CiAgICAgaWYgKHBhaXIpIHsKICAgICAgICAgQVNT
RVJUX1VOVVNFRChwcm9wZXJ0eUlELCBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFBvc2l0aW9uWSB8fCBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9u
WSk7Ci0gICAgICAgIGxlbmd0aCA9IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0
aChtX2J1aWxkZXJTdGF0ZSwgKnBhaXItPnNlY29uZCgpKTsKKyAgICAgICAgbGVuZ3RoID0gU3R5
bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgobV9idWlsZGVyU3RhdGUsICpwYWly
LT5zZWNvbmQoKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGxlbmd0aCA9IFN0eWxlQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydFBvc2l0aW9uQ29tcG9uZW50WShtX2J1aWxkZXJTdGF0ZSwgdmFsdWUp
OworICAgICAgICBsZW5ndGggPSBTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBvc2l0
aW9uQ29tcG9uZW50WShtX2J1aWxkZXJTdGF0ZSwgdmFsdWUpOwogICAgIAogICAgIGxheWVyLnNl
dFlQb3NpdGlvbihsZW5ndGgpOwogICAgIGlmIChwYWlyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRl
ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDkxOGFjNzllMS4uMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlci5oCisrKyAvZGV2L251bGwK
QEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJD
U1NQcm9wZXJ0eU5hbWVzLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ1NTVmFs
dWU7Ci1zdHJ1Y3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5OwotCi1uYW1lc3BhY2UgU3R5
bGUgewotY2xhc3MgQnVpbGRlclN0YXRlOwotfQotCi1jbGFzcyBTdHlsZUJ1aWxkZXIgewotcHVi
bGljOgotICAgIHN0YXRpYyB2b2lkIGFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJiwgYm9vbCBpc0luaXRpYWwsIGJvb2wgaXNJbmhlcml0
LCBjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkqKTsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAppbmRleCBiMWYyMjdkMTcwNy4uNGVjOWFk
MGExYzUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKQEAgLTY2LDcgKzY2LDcgQEAgbXkgJW5hbWVJ
c0luaGVyaXRlZDsKIG15ICVuYW1lSXNIaWdoUHJpb3JpdHk7CiBteSAlcHJvcGVydGllc1dpdGhT
dHlsZUJ1aWxkZXJPcHRpb25zOwogbXkgJXN0eWxlQnVpbGRlck9wdGlvbnMgPSAoCi0gICAgImFu
aW1hdGFibGUiID0+IDEsICMgRGVmaW5lZCBpbiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWls
ZGVyQ29udmVydGVyLmgKKyAgICAiYW5pbWF0YWJsZSIgPT4gMSwgIyBEZWZpbmVkIGluIFNvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCiAgICAgImF1dG8tZnVuY3Rp
b25zIiA9PiAxLAogICAgICJjb25kaXRpb25hbC1jb252ZXJ0ZXIiID0+IDEsCiAgICAgImNvbnZl
cnRlciIgPT4gMSwKQEAgLTU1NCwxNCArNTU0LDE0IEBAIEVPRgogY2xvc2UgSEVBREVSOwogCiAj
Ci0jIFN0eWxlQnVpbGRlci5jcHAgZ2VuZXJhdG9yLgorIyBTdHlsZUJ1aWxkZXJHZW5lcmF0ZWQu
Y3BwIGdlbmVyYXRvci4KICMKIAogc3ViIGdldFNjb3BlRm9yRnVuY3Rpb24gewogICBteSAkbmFt
ZSA9IHNoaWZ0OwogICBteSAkYnVpbGRlckZ1bmN0aW9uID0gc2hpZnQ7CiAKLSAgcmV0dXJuICRw
cm9wZXJ0aWVzV2l0aFN0eWxlQnVpbGRlck9wdGlvbnN7JG5hbWV9eyJjdXN0b20ifXskYnVpbGRl
ckZ1bmN0aW9ufSA/ICJTdHlsZUJ1aWxkZXJDdXN0b20iIDogIlN0eWxlQnVpbGRlckZ1bmN0aW9u
cyI7CisgIHJldHVybiAkcHJvcGVydGllc1dpdGhTdHlsZUJ1aWxkZXJPcHRpb25zeyRuYW1lfXsi
Y3VzdG9tIn17JGJ1aWxkZXJGdW5jdGlvbn0gPyAiQnVpbGRlckN1c3RvbSIgOiAiQnVpbGRlckZ1
bmN0aW9ucyI7CiB9CiAKIHN1YiBnZXROYW1lRm9yTWV0aG9kcyB7CkBAIC05MTMsNyArOTEzLDcg
QEAgc3ViIGdlbmVyYXRlSW5pdGlhbFZhbHVlU2V0dGVyIHsKICAgbXkgJGluaXRpYWwgPSAkcHJv
cGVydGllc1dpdGhTdHlsZUJ1aWxkZXJPcHRpb25zeyRuYW1lfXsiaW5pdGlhbCJ9OwogICBteSAk
aXNTVkcgPSBleGlzdHMgJHByb3BlcnRpZXNXaXRoU3R5bGVCdWlsZGVyT3B0aW9uc3skbmFtZX17
InN2ZyJ9OwogICBteSAkc2V0dGVyQ29udGVudCA9ICIiOwotICAkc2V0dGVyQ29udGVudCAuPSAk
aW5kZW50IC4gInN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbCIgLiAkbmFtZVRvSWR7JG5hbWV9IC4g
IihTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpXG4iOworICAkc2V0dGVyQ29udGVu
dCAuPSAkaW5kZW50IC4gInN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbCIgLiAkbmFtZVRvSWR7JG5h
bWV9IC4gIihCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSlcbiI7CiAgICRzZXR0ZXJDb250ZW50
IC49ICRpbmRlbnQgLiAie1xuIjsKICAgbXkgJHN0eWxlID0gImJ1aWxkZXJTdGF0ZS5zdHlsZSgp
IjsKICAgaWYgKGV4aXN0cyAkcHJvcGVydGllc1dpdGhTdHlsZUJ1aWxkZXJPcHRpb25zeyRuYW1l
fXsiYXV0by1mdW5jdGlvbnMifSkgewpAQCAtOTQzLDcgKzk0Myw3IEBAIHN1YiBnZW5lcmF0ZUlu
aGVyaXRWYWx1ZVNldHRlciB7CiAgIG15ICRpbmRlbnQgPSBzaGlmdDsKIAogICBteSAkc2V0dGVy
Q29udGVudCA9ICIiOwotICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gInN0YXRpYyB2b2lk
IGFwcGx5SW5oZXJpdCIgLiAkbmFtZVRvSWR7JG5hbWV9IC4gIihTdHlsZTo6QnVpbGRlclN0YXRl
JiBidWlsZGVyU3RhdGUpXG4iOworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gInN0YXRp
YyB2b2lkIGFwcGx5SW5oZXJpdCIgLiAkbmFtZVRvSWR7JG5hbWV9IC4gIihCdWlsZGVyU3RhdGUm
IGJ1aWxkZXJTdGF0ZSlcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAie1xuIjsK
ICAgbXkgJGlzU1ZHID0gZXhpc3RzICRwcm9wZXJ0aWVzV2l0aFN0eWxlQnVpbGRlck9wdGlvbnN7
JG5hbWV9eyJzdmcifTsKICAgbXkgJHBhcmVudFN0eWxlID0gImJ1aWxkZXJTdGF0ZS5wYXJlbnRT
dHlsZSgpIjsKQEAgLTk5MCwxMyArOTkwLDEzIEBAIHN1YiBnZW5lcmF0ZVZhbHVlU2V0dGVyIHsK
ICAgbXkgJGluZGVudCA9IHNoaWZ0OwogCiAgIG15ICRzZXR0ZXJDb250ZW50ID0gIiI7Ci0gICRz
ZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAic3RhdGljIHZvaWQgYXBwbHlWYWx1ZSIgLiAkbmFt
ZVRvSWR7JG5hbWV9IC4gIihTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1Zh
bHVlJiB2YWx1ZSlcbiI7CisgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAic3RhdGljIHZv
aWQgYXBwbHlWYWx1ZSIgLiAkbmFtZVRvSWR7JG5hbWV9IC4gIihCdWlsZGVyU3RhdGUmIGJ1aWxk
ZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKVxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVu
dCAuICJ7XG4iOwogICBteSAkY29udmVydGVkVmFsdWU7CiAgIGlmIChleGlzdHMoJHByb3BlcnRp
ZXNXaXRoU3R5bGVCdWlsZGVyT3B0aW9uc3skbmFtZX17ImNvbnZlcnRlciJ9KSkgewotICAgICRj
b252ZXJ0ZWRWYWx1ZSA9ICJTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnQiIC4gJHByb3Bl
cnRpZXNXaXRoU3R5bGVCdWlsZGVyT3B0aW9uc3skbmFtZX17ImNvbnZlcnRlciJ9IC4gIihidWls
ZGVyU3RhdGUsIHZhbHVlKSI7CisgICAgJGNvbnZlcnRlZFZhbHVlID0gIkJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnQiIC4gJHByb3BlcnRpZXNXaXRoU3R5bGVCdWlsZGVyT3B0aW9uc3skbmFtZX17
ImNvbnZlcnRlciJ9IC4gIihidWlsZGVyU3RhdGUsIHZhbHVlKSI7CiAgIH0gZWxzaWYgKGV4aXN0
cygkcHJvcGVydGllc1dpdGhTdHlsZUJ1aWxkZXJPcHRpb25zeyRuYW1lfXsiY29uZGl0aW9uYWwt
Y29udmVydGVyIn0pKSB7Ci0gICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgYXV0
byBjb252ZXJ0ZWRWYWx1ZSA9IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydCIgLiAkcHJv
cGVydGllc1dpdGhTdHlsZUJ1aWxkZXJPcHRpb25zeyRuYW1lfXsiY29uZGl0aW9uYWwtY29udmVy
dGVyIn0gLiAiKGJ1aWxkZXJTdGF0ZSwgdmFsdWUpO1xuIjsKKyAgICAkc2V0dGVyQ29udGVudCAu
PSAkaW5kZW50IC4gIiAgICBhdXRvIGNvbnZlcnRlZFZhbHVlID0gQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydCIgLiAkcHJvcGVydGllc1dpdGhTdHlsZUJ1aWxkZXJPcHRpb25zeyRuYW1lfXsiY29u
ZGl0aW9uYWwtY29udmVydGVyIn0gLiAiKGJ1aWxkZXJTdGF0ZSwgdmFsdWUpO1xuIjsKICAgICAk
Y29udmVydGVkVmFsdWUgPSAiV1RGTW92ZShjb252ZXJ0ZWRWYWx1ZS52YWx1ZSgpKSI7CiAgIH0g
ZWxzZSB7CiAgICAgJGNvbnZlcnRlZFZhbHVlID0gImRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSkiOwpAQCAtMTA0MiwxMiArMTA0MiwxMiBAQCBzdWIgZ2VuZXJhdGVWYWx1ZVNldHRl
ciB7CiAgIHJldHVybiAkc2V0dGVyQ29udGVudDsKIH0KIAotb3BlbiBTVFlMRUJVSUxERVIsICI+
U3R5bGVCdWlsZGVyLmNwcCIgfHwgZGllICJDb3VsZCBub3Qgb3BlbiBTdHlsZUJ1aWxkZXIuY3Bw
IGZvciB3cml0aW5nIjsKK29wZW4gU1RZTEVCVUlMREVSLCAiPlN0eWxlQnVpbGRlckdlbmVyYXRl
ZC5jcHAiIHx8IGRpZSAiQ291bGQgbm90IG9wZW4gU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmNwcCBm
b3Igd3JpdGluZyI7CiBwcmludCBTVFlMRUJVSUxERVIgPDwgIkVPRiI7CiAvKiBUaGlzIGZpbGUg
aXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSAkaW5wdXRGaWxlIGJ5IG1ha2Vwcm9wLCBk
byBub3QgZWRpdCAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU3R5bGVCdWls
ZGVyLmgiCisjaW5jbHVkZSAiU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmgiCiAKICNpbmNsdWRlICJD
U1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKQEAg
LTEwNTgsOCArMTA1OCw5IEBAIHByaW50IFNUWUxFQlVJTERFUiA8PCAiRU9GIjsKICNpbmNsdWRl
ICJTdHlsZVByb3BlcnR5U2hvcnRoYW5kLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVz
cGFjZSBTdHlsZSB7CiAKLWNsYXNzIFN0eWxlQnVpbGRlckZ1bmN0aW9ucyB7CitjbGFzcyBCdWls
ZGVyRnVuY3Rpb25zIHsKIHB1YmxpYzoKIEVPRgogCkBAIC0xMDgzLDcgKzEwODQsNyBAQCBmb3Jl
YWNoIG15ICRuYW1lIChAbmFtZXMpIHsKIHByaW50IFNUWUxFQlVJTERFUiA8PCAiRU9GIjsKIH07
CiAKLXZvaWQgU3R5bGVCdWlsZGVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVy
dHksIFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlLCBi
b29sIGlzSW5pdGlhbCwgYm9vbCBpc0luaGVyaXQsIGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Q
cm9wZXJ0eSogcmVnaXN0ZXJlZCkKK3ZvaWQgQnVpbGRlckdlbmVyYXRlZDo6YXBwbHlQcm9wZXJ0
eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NT
VmFsdWUmIHZhbHVlLCBib29sIGlzSW5pdGlhbCwgYm9vbCBpc0luaGVyaXQsIGNvbnN0IENTU1Jl
Z2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSogcmVnaXN0ZXJlZCkKIHsKICAgICBzd2l0Y2ggKHByb3Bl
cnR5KSB7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUludmFsaWQ6CkBAIC0xMDkxLDExICsxMDkyLDEx
IEBAIHZvaWQgU3R5bGVCdWlsZGVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVy
dHksIFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUN1c3RvbTog
ewogICAgICAgICBhdXRvJiBjdXN0b21Qcm9wZXJ0eSA9IGRvd25jYXN0PENTU0N1c3RvbVByb3Bl
cnR5VmFsdWU+KHZhbHVlKTsKICAgICAgICAgaWYgKGlzSW5pdGlhbCkKLSAgICAgICAgICAgIFN0
eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsQ3VzdG9tUHJvcGVydHkoYnVpbGRlclN0YXRl
LCByZWdpc3RlcmVkLCBjdXN0b21Qcm9wZXJ0eS5uYW1lKCkpOworICAgICAgICAgICAgQnVpbGRl
ckN1c3RvbTo6YXBwbHlJbml0aWFsQ3VzdG9tUHJvcGVydHkoYnVpbGRlclN0YXRlLCByZWdpc3Rl
cmVkLCBjdXN0b21Qcm9wZXJ0eS5uYW1lKCkpOwogICAgICAgICBlbHNlIGlmIChpc0luaGVyaXQp
Ci0gICAgICAgICAgICBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEN1c3RvbVByb3Bl
cnR5KGJ1aWxkZXJTdGF0ZSwgcmVnaXN0ZXJlZCwgY3VzdG9tUHJvcGVydHkubmFtZSgpKTsKKyAg
ICAgICAgICAgIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEN1c3RvbVByb3BlcnR5KGJ1aWxk
ZXJTdGF0ZSwgcmVnaXN0ZXJlZCwgY3VzdG9tUHJvcGVydHkubmFtZSgpKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ3VzdG9tUHJvcGVy
dHkoYnVpbGRlclN0YXRlLCByZWdpc3RlcmVkLCBjdXN0b21Qcm9wZXJ0eSk7CisgICAgICAgICAg
ICBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ3VzdG9tUHJvcGVydHkoYnVpbGRlclN0YXRlLCBy
ZWdpc3RlcmVkLCBjdXN0b21Qcm9wZXJ0eSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIEVPRgpA
QCAtMTEyMCw2ICsxMTIxLDcgQEAgcHJpbnQgU1RZTEVCVUlMREVSIDw8ICJFT0YiOwogICAgIH07
CiB9CiAKK30gLy8gbmFtZXNwYWNlIFN0eWxlCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiBFT0YK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcApp
bmRleCAxYWU3YmM5YTQ3Ni4uNWQ0MDcyNjc5OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCkBAIC00MzAwLDcgKzQzMDAsNyBAQCBSZWZQ
dHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlVHlwZWRD
dXN0b21Qcm9wZXJ0eVZhbHVlKAogICAgICAgICBtX3JhbmdlLmNvbnN1bWVXaGl0ZXNwYWNlKCk7
CiAgICAgICAgIGF1dG8gcHJpbWl0aXZlVmFsID0gY29uc3VtZVdpZHRoT3JIZWlnaHQobV9yYW5n
ZSwgbV9jb250ZXh0KTsKICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbCAmJiBwcmltaXRpdmVWYWwt
PmlzUHJpbWl0aXZlVmFsdWUoKSAmJiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnByaW1p
dGl2ZVZhbCkuaXNMZW5ndGgoKSkgewotICAgICAgICAgICAgYXV0byBsZW5ndGggPSBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgoYnVpbGRlclN0YXRlLCAqcHJpbWl0aXZlVmFs
KTsKKyAgICAgICAgICAgIGF1dG8gbGVuZ3RoID0gU3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRMZW5ndGgoYnVpbGRlclN0YXRlLCAqcHJpbWl0aXZlVmFsKTsKICAgICAgICAgICAgIGlm
ICghbGVuZ3RoLmlzQ2FsY3VsYXRlZCgpICYmICFsZW5ndGguaXNVbmRlZmluZWQoKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlU3ludGF4TGVu
Z3RoKG5hbWUsIFdURk1vdmUobGVuZ3RoKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9Qcm9wZXJ0eUNhc2NhZGUuY3BwCmluZGV4IDNlOGJjOWNkOGQ4Li5jMzgzM2Q0Y2U2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuY3BwCkBAIC0zMCw3ICszMCw3IEBA
CiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgogI2luY2x1ZGUgIkNTU1Zh
bHVlUG9vbC5oIgogI2luY2x1ZGUgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlLmgiCi0jaW5jbHVk
ZSAiU3R5bGVCdWlsZGVyLmgiCisjaW5jbHVkZSAiU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmgiCiAj
aW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNob3J0aGFuZC5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2
ZXIuaCIKIApAQCAtNjI0LDggKzYyNCw3IEBAIHZvaWQgUHJvcGVydHlDYXNjYWRlOjphcHBseVBy
b3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlJiB2YWx1ZSwgU2VsZWN0b3JDCiAgICAg
fQogI2VuZGlmCiAKLSAgICAvLyBVc2UgdGhlIGdlbmVyYXRlZCBTdHlsZUJ1aWxkZXIuCi0gICAg
U3R5bGVCdWlsZGVyOjphcHBseVByb3BlcnR5KGlkLCBidWlsZGVyU3RhdGUsIHZhbHVlVG9BcHBs
eS5nZXQoKSwgaXNJbml0aWFsLCBpc0luaGVyaXQsIGN1c3RvbVByb3BlcnR5UmVnaXN0ZXJlZCk7
CisgICAgQnVpbGRlckdlbmVyYXRlZDo6YXBwbHlQcm9wZXJ0eShpZCwgYnVpbGRlclN0YXRlLCB2
YWx1ZVRvQXBwbHkuZ2V0KCksIGlzSW5pdGlhbCwgaXNJbmhlcml0LCBjdXN0b21Qcm9wZXJ0eVJl
Z2lzdGVyZWQpOwogfQogCiBSZWY8Q1NTVmFsdWU+IFByb3BlcnR5Q2FzY2FkZTo6cmVzb2x2ZVZh
bHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgQ1NTVmFsdWUmIHZhbHVlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKc2ltaWxhcml0eSBpbmRleCA3NCUK
cmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCnJl
bmFtZSB0byBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAppbmRl
eCBiYjVjYTY0MDM1Mi4uNTE3MmYxYzZiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtNTksMTIwICs1OSwxMjEgQEAKICNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIFN0eWxlIHsKIAog
Ly8gTm90ZSB0aGF0IHdlIGFzc3VtZSB0aGUgQ1NTIHBhcnNlciBvbmx5IGFsbG93cyB2YWxpZCBD
U1NWYWx1ZSB0eXBlcy4KLWNsYXNzIFN0eWxlQnVpbGRlckNvbnZlcnRlciB7CitjbGFzcyBCdWls
ZGVyQ29udmVydGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRMZW5ndGgo
Y29uc3QgU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGlj
IExlbmd0aCBjb252ZXJ0TGVuZ3RoT3JBdXRvKGNvbnN0IFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBj
b25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBMZW5ndGggY29udmVydExlbmd0aFNpemluZyhj
b25zdCBTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMg
TGVuZ3RoIGNvbnZlcnRMZW5ndGhNYXhTaXppbmcoY29uc3QgU3R5bGU6OkJ1aWxkZXJTdGF0ZSYs
IGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIFRhYlNpemUgY29udmVydFRhYlNpemUoY29u
c3QgU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RhdGljIFQgY29udmVydENvbXB1dGVkTGVuZ3RoKFN0eWxlOjpCdWlsZGVy
U3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRp
YyBUIGNvbnZlcnRMaW5lV2lkdGgoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVl
Jik7Ci0gICAgc3RhdGljIGZsb2F0IGNvbnZlcnRTcGFjaW5nKFN0eWxlOjpCdWlsZGVyU3RhdGUm
LCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBMZW5ndGhTaXplIGNvbnZlcnRSYWRpdXMo
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIExlbmd0
aFBvaW50IGNvbnZlcnRPYmplY3RQb3NpdGlvbihTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3Qg
Q1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiBjb252ZXJ0
VGV4dERlY29yYXRpb24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIFQgY29udmVydE51bWJlcihTdHlsZTo6QnVp
bGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dGF0aWMgVCBjb252ZXJ0TnVtYmVyT3JBdXRvKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBD
U1NWYWx1ZSYpOwotICAgIHN0YXRpYyBzaG9ydCBjb252ZXJ0V2Via2l0SHlwaGVuYXRlTGltaXRM
aW5lcyhTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICB0ZW1wbGF0
ZTxDU1NQcm9wZXJ0eUlEPiBzdGF0aWMgTmluZVBpZWNlSW1hZ2UgY29udmVydEJvcmRlckltYWdl
KFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYpOwotICAgIHRlbXBsYXRlPENTU1Byb3Bl
cnR5SUQ+IHN0YXRpYyBOaW5lUGllY2VJbWFnZSBjb252ZXJ0Qm9yZGVyTWFzayhTdHlsZTo6QnVp
bGRlclN0YXRlJiwgQ1NTVmFsdWUmKTsKLSAgICB0ZW1wbGF0ZTxDU1NQcm9wZXJ0eUlEPiBzdGF0
aWMgUmVmUHRyPFN0eWxlSW1hZ2U+IGNvbnZlcnRTdHlsZUltYWdlKFN0eWxlOjpCdWlsZGVyU3Rh
dGUmLCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBUcmFuc2Zvcm1PcGVyYXRpb25zIGNvbnZlcnRU
cmFuc2Zvcm0oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3Rh
dGljIExlbmd0aCBjb252ZXJ0TGVuZ3RoKGNvbnN0IEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1Zh
bHVlJik7CisgICAgc3RhdGljIExlbmd0aCBjb252ZXJ0TGVuZ3RoT3JBdXRvKGNvbnN0IEJ1aWxk
ZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIExlbmd0aCBjb252ZXJ0TGVu
Z3RoU2l6aW5nKGNvbnN0IEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3Rh
dGljIExlbmd0aCBjb252ZXJ0TGVuZ3RoTWF4U2l6aW5nKGNvbnN0IEJ1aWxkZXJTdGF0ZSYsIGNv
bnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFRhYlNpemUgY29udmVydFRhYlNpemUoY29uc3Qg
QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdGF0aWMgVCBjb252ZXJ0Q29tcHV0ZWRMZW5ndGgoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NT
VmFsdWUmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgVCBjb252ZXJ0TGluZVdp
ZHRoKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIGZsb2F0IGNv
bnZlcnRTcGFjaW5nKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGlj
IExlbmd0aFNpemUgY29udmVydFJhZGl1cyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYp
OworICAgIHN0YXRpYyBMZW5ndGhQb2ludCBjb252ZXJ0T2JqZWN0UG9zaXRpb24oQnVpbGRlclN0
YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgT3B0aW9uU2V0PFRleHREZWNvcmF0
aW9uPiBjb252ZXJ0VGV4dERlY29yYXRpb24oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUm
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgVCBjb252ZXJ0TnVtYmVyKEJ1aWxk
ZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Rh
dGljIFQgY29udmVydE51bWJlck9yQXV0byhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYp
OworICAgIHN0YXRpYyBzaG9ydCBjb252ZXJ0V2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcyhCdWls
ZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHRlbXBsYXRlPENTU1Byb3BlcnR5SUQ+
IHN0YXRpYyBOaW5lUGllY2VJbWFnZSBjb252ZXJ0Qm9yZGVySW1hZ2UoQnVpbGRlclN0YXRlJiwg
Q1NTVmFsdWUmKTsKKyAgICB0ZW1wbGF0ZTxDU1NQcm9wZXJ0eUlEPiBzdGF0aWMgTmluZVBpZWNl
SW1hZ2UgY29udmVydEJvcmRlck1hc2soQnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUmKTsKKyAgICB0
ZW1wbGF0ZTxDU1NQcm9wZXJ0eUlEPiBzdGF0aWMgUmVmUHRyPFN0eWxlSW1hZ2U+IGNvbnZlcnRT
dHlsZUltYWdlKEJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIFRyYW5zZm9y
bU9wZXJhdGlvbnMgY29udmVydFRyYW5zZm9ybShCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1
ZSYpOwogI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQotICAgIHN0YXRpYyBTdHlsZUNvbG9yU2No
ZW1lIGNvbnZlcnRDb2xvclNjaGVtZShTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFs
dWUmKTsKKyAgICBzdGF0aWMgU3R5bGVDb2xvclNjaGVtZSBjb252ZXJ0Q29sb3JTY2hlbWUoQnVp
bGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKICNlbmRpZgotICAgIHN0YXRpYyBTdHJpbmcg
Y29udmVydFN0cmluZyhTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAg
ICBzdGF0aWMgU3RyaW5nIGNvbnZlcnRTdHJpbmdPckF1dG8oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYs
IGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIFN0cmluZyBjb252ZXJ0U3RyaW5nT3JOb25l
KFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBPcHRp
b25TZXQ8VGV4dEVtcGhhc2lzUG9zaXRpb24+IGNvbnZlcnRUZXh0RW1waGFzaXNQb3NpdGlvbihT
dHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgVGV4dEFs
aWduTW9kZSBjb252ZXJ0VGV4dEFsaWduKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NW
YWx1ZSYpOwotICAgIHN0YXRpYyBSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+IGNvbnZlcnRDbGlw
UGF0aChTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMg
UmVzaXplIGNvbnZlcnRSZXNpemUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVl
Jik7Ci0gICAgc3RhdGljIGludCBjb252ZXJ0TWFycXVlZVJlcGV0aXRpb24oU3R5bGU6OkJ1aWxk
ZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIGludCBjb252ZXJ0TWFycXVl
ZVNwZWVkKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRp
YyBSZWY8UXVvdGVzRGF0YT4gY29udmVydFF1b3RlcyhTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29u
c3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgVGV4dFVuZGVybGluZVBvc2l0aW9uIGNvbnZlcnRU
ZXh0VW5kZXJsaW5lUG9zaXRpb24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVl
Jik7Ci0gICAgc3RhdGljIFRleHRVbmRlcmxpbmVPZmZzZXQgY29udmVydFRleHRVbmRlcmxpbmVP
ZmZzZXQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGlj
IFRleHREZWNvcmF0aW9uVGhpY2tuZXNzIGNvbnZlcnRUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyhT
dHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgUmVmUHRy
PFN0eWxlUmVmbGVjdGlvbj4gY29udmVydFJlZmxlY3Rpb24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYs
IGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIEludFNpemUgY29udmVydEluaXRpYWxMZXR0
ZXIoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIGZs
b2F0IGNvbnZlcnRUZXh0U3Ryb2tlV2lkdGgoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENT
U1ZhbHVlJik7Ci0gICAgc3RhdGljIE9wdGlvblNldDxMaW5lQm94Q29udGFpbj4gY29udmVydExp
bmVCb3hDb250YWluKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAg
IHN0YXRpYyBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25Ta2lwPiBjb252ZXJ0VGV4dERlY29yYXRp
b25Ta2lwKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRp
YyBSZWZQdHI8U2hhcGVWYWx1ZT4gY29udmVydFNoYXBlVmFsdWUoU3R5bGU6OkJ1aWxkZXJTdGF0
ZSYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIFN0cmluZyBjb252ZXJ0U3RyaW5nKEJ1aWxkZXJT
dGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFN0cmluZyBjb252ZXJ0U3RyaW5n
T3JBdXRvKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFN0cmlu
ZyBjb252ZXJ0U3RyaW5nT3JOb25lKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Cisg
ICAgc3RhdGljIE9wdGlvblNldDxUZXh0RW1waGFzaXNQb3NpdGlvbj4gY29udmVydFRleHRFbXBo
YXNpc1Bvc2l0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGlj
IFRleHRBbGlnbk1vZGUgY29udmVydFRleHRBbGlnbihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NW
YWx1ZSYpOworICAgIHN0YXRpYyBSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+IGNvbnZlcnRDbGlw
UGF0aChCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBSZXNpemUg
Y29udmVydFJlc2l6ZShCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRp
YyBpbnQgY29udmVydE1hcnF1ZWVSZXBldGl0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1Zh
bHVlJik7CisgICAgc3RhdGljIGludCBjb252ZXJ0TWFycXVlZVNwZWVkKEJ1aWxkZXJTdGF0ZSYs
IGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFJlZjxRdW90ZXNEYXRhPiBjb252ZXJ0UXVv
dGVzKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFRleHRVbmRl
cmxpbmVQb3NpdGlvbiBjb252ZXJ0VGV4dFVuZGVybGluZVBvc2l0aW9uKEJ1aWxkZXJTdGF0ZSYs
IGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFRleHRVbmRlcmxpbmVPZmZzZXQgY29udmVy
dFRleHRVbmRlcmxpbmVPZmZzZXQoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAg
ICBzdGF0aWMgVGV4dERlY29yYXRpb25UaGlja25lc3MgY29udmVydFRleHREZWNvcmF0aW9uVGhp
Y2tuZXNzKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFJlZlB0
cjxTdHlsZVJlZmxlY3Rpb24+IGNvbnZlcnRSZWZsZWN0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0
IENTU1ZhbHVlJik7CisgICAgc3RhdGljIEludFNpemUgY29udmVydEluaXRpYWxMZXR0ZXIoQnVp
bGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgZmxvYXQgY29udmVydFRl
eHRTdHJva2VXaWR0aChCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRp
YyBPcHRpb25TZXQ8TGluZUJveENvbnRhaW4+IGNvbnZlcnRMaW5lQm94Q29udGFpbihCdWlsZGVy
U3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBPcHRpb25TZXQ8VGV4dERlY29y
YXRpb25Ta2lwPiBjb252ZXJ0VGV4dERlY29yYXRpb25Ta2lwKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0
IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFwZVZhbHVlPiBjb252ZXJ0U2hhcGVW
YWx1ZShCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYpOwogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NO
QVApCi0gICAgc3RhdGljIFNjcm9sbFNuYXBUeXBlIGNvbnZlcnRTY3JvbGxTbmFwVHlwZShTdHls
ZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgU2Nyb2xsU25h
cEFsaWduIGNvbnZlcnRTY3JvbGxTbmFwQWxpZ24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0
IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFNjcm9sbFNuYXBUeXBlIGNvbnZlcnRTY3JvbGxTbmFw
VHlwZShCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBTY3JvbGxT
bmFwQWxpZ24gY29udmVydFNjcm9sbFNuYXBBbGlnbihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NW
YWx1ZSYpOwogI2VuZGlmCi0gICAgc3RhdGljIEdyaWRUcmFja1NpemUgY29udmVydEdyaWRUcmFj
a1NpemUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGlj
IFZlY3RvcjxHcmlkVHJhY2tTaXplPiBjb252ZXJ0R3JpZFRyYWNrU2l6ZUxpc3QoU3R5bGU6OkJ1
aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPEdyaWRQ
b3NpdGlvbj4gY29udmVydEdyaWRQb3NpdGlvbihTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3Qg
Q1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgR3JpZEF1dG9GbG93IGNvbnZlcnRHcmlkQXV0b0Zsb3co
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIE9wdGlv
bmFsPExlbmd0aD4gY29udmVydFdvcmRTcGFjaW5nKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25z
dCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxmbG9hdD4gY29udmVydFBlcnNwZWN0
aXZlKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBP
cHRpb25hbDxMZW5ndGg+IGNvbnZlcnRNYXJxdWVlSW5jcmVtZW50KFN0eWxlOjpCdWlsZGVyU3Rh
dGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxGaWx0ZXJPcGVyYXRp
b25zPiBjb252ZXJ0RmlsdGVyT3BlcmF0aW9ucyhTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3Qg
Q1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgR3JpZFRyYWNrU2l6ZSBjb252ZXJ0R3JpZFRyYWNrU2l6
ZShCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBWZWN0b3I8R3Jp
ZFRyYWNrU2l6ZT4gY29udmVydEdyaWRUcmFja1NpemVMaXN0KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0
IENTU1ZhbHVlJik7CisgICAgc3RhdGljIE9wdGlvbmFsPEdyaWRQb3NpdGlvbj4gY29udmVydEdy
aWRQb3NpdGlvbihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBH
cmlkQXV0b0Zsb3cgY29udmVydEdyaWRBdXRvRmxvdyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NW
YWx1ZSYpOworICAgIHN0YXRpYyBPcHRpb25hbDxMZW5ndGg+IGNvbnZlcnRXb3JkU3BhY2luZyhC
dWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBPcHRpb25hbDxmbG9h
dD4gY29udmVydFBlcnNwZWN0aXZlKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Cisg
ICAgc3RhdGljIE9wdGlvbmFsPExlbmd0aD4gY29udmVydE1hcnF1ZWVJbmNyZW1lbnQoQnVpbGRl
clN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8RmlsdGVyT3Bl
cmF0aW9ucz4gY29udmVydEZpbHRlck9wZXJhdGlvbnMoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NT
VmFsdWUmKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHN0YXRpYyBib29sIGNvbnZl
cnRUb3VjaENhbGxvdXQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Cisg
ICAgc3RhdGljIGJvb2wgY29udmVydFRvdWNoQ2FsbG91dChCdWlsZGVyU3RhdGUmLCBjb25zdCBD
U1NWYWx1ZSYpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBzdGF0aWMg
Q29sb3IgY29udmVydFRhcEhpZ2hsaWdodENvbG9yKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25z
dCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBDb2xvciBjb252ZXJ0VGFwSGlnaGxpZ2h0Q29sb3Io
QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKICNlbmRpZgogI2lmIEVOQUJMRShQT0lO
VEVSX0VWRU5UUykKLSAgICBzdGF0aWMgT3B0aW9uU2V0PFRvdWNoQWN0aW9uPiBjb252ZXJ0VG91
Y2hBY3Rpb24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3Rh
dGljIE9wdGlvblNldDxUb3VjaEFjdGlvbj4gY29udmVydFRvdWNoQWN0aW9uKEJ1aWxkZXJTdGF0
ZSYsIGNvbnN0IENTU1ZhbHVlJik7CiAjZW5kaWYKICNpZiBFTkFCTEUoT1ZFUkZMT1dfU0NST0xM
SU5HX1RPVUNIKQotICAgIHN0YXRpYyBib29sIGNvbnZlcnRPdmVyZmxvd1Njcm9sbGluZyhTdHls
ZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgYm9vbCBjb252
ZXJ0T3ZlcmZsb3dTY3JvbGxpbmcoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKICNl
bmRpZgotICAgIHN0YXRpYyBGb250RmVhdHVyZVNldHRpbmdzIGNvbnZlcnRGb250RmVhdHVyZVNl
dHRpbmdzKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRp
YyBGb250RmVhdHVyZVNldHRpbmdzIGNvbnZlcnRGb250RmVhdHVyZVNldHRpbmdzKEJ1aWxkZXJT
dGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIEZvbnRTZWxlY3Rpb25WYWx1ZSBj
b252ZXJ0Rm9udFdlaWdodEZyb21WYWx1ZShjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBG
b250U2VsZWN0aW9uVmFsdWUgY29udmVydEZvbnRTdHJldGNoRnJvbVZhbHVlKGNvbnN0IENTU1Zh
bHVlJik7CiAgICAgc3RhdGljIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gY29udmVydEZv
bnRTdHlsZUZyb21WYWx1ZShjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBGb250U2VsZWN0
aW9uVmFsdWUgY29udmVydEZvbnRXZWlnaHQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENT
U1ZhbHVlJik7Ci0gICAgc3RhdGljIEZvbnRTZWxlY3Rpb25WYWx1ZSBjb252ZXJ0Rm9udFN0cmV0
Y2goU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIEZv
bnRTZWxlY3Rpb25WYWx1ZSBjb252ZXJ0Rm9udFN0eWxlKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBj
b25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBGb250U2VsZWN0aW9uVmFsdWUgY29udmVydEZv
bnRXZWlnaHQoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgRm9u
dFNlbGVjdGlvblZhbHVlIGNvbnZlcnRGb250U3RyZXRjaChCdWlsZGVyU3RhdGUmLCBjb25zdCBD
U1NWYWx1ZSYpOworICAgIHN0YXRpYyBGb250U2VsZWN0aW9uVmFsdWUgY29udmVydEZvbnRTdHls
ZShCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwogI2lmIEVOQUJMRShWQVJJQVRJT05f
Rk9OVFMpCi0gICAgc3RhdGljIEZvbnRWYXJpYXRpb25TZXR0aW5ncyBjb252ZXJ0Rm9udFZhcmlh
dGlvblNldHRpbmdzKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAg
IHN0YXRpYyBGb250VmFyaWF0aW9uU2V0dGluZ3MgY29udmVydEZvbnRWYXJpYXRpb25TZXR0aW5n
cyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwogI2VuZGlmCi0gICAgc3RhdGljIFNW
R0xlbmd0aFZhbHVlIGNvbnZlcnRTVkdMZW5ndGhWYWx1ZShTdHlsZTo6QnVpbGRlclN0YXRlJiwg
Y29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgVmVjdG9yPFNWR0xlbmd0aFZhbHVlPiBjb252
ZXJ0U1ZHTGVuZ3RoVmVjdG9yKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYp
OwotICAgIHN0YXRpYyBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IGNvbnZlcnRTdHJva2VEYXNoQXJy
YXkoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIFBh
aW50T3JkZXIgY29udmVydFBhaW50T3JkZXIoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENT
U1ZhbHVlJik7Ci0gICAgc3RhdGljIGZsb2F0IGNvbnZlcnRPcGFjaXR5KFN0eWxlOjpCdWlsZGVy
U3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBTdHJpbmcgY29udmVydFNWR1VS
SVJlZmVyZW5jZShTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBz
dGF0aWMgQ29sb3IgY29udmVydFNWR0NvbG9yKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBD
U1NWYWx1ZSYpOwotICAgIHN0YXRpYyBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIGNvbnZlcnRTZWxm
T3JEZWZhdWx0QWxpZ25tZW50RGF0YShTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFs
dWUmKTsKLSAgICBzdGF0aWMgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSBjb252ZXJ0Q29udGVu
dEFsaWdubWVudERhdGEoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0g
ICAgc3RhdGljIEdseXBoT3JpZW50YXRpb24gY29udmVydEdseXBoT3JpZW50YXRpb24oU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIEdseXBoT3JpZW50
YXRpb24gY29udmVydEdseXBoT3JpZW50YXRpb25PckF1dG8oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYs
IGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPExlbmd0aD4gY29udmVydExp
bmVIZWlnaHQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiwgZmxvYXQgbXVs
dGlwbGllciA9IDEuZik7Ci0gICAgc3RhdGljIEZvbnRTeW50aGVzaXMgY29udmVydEZvbnRTeW50
aGVzaXMoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGlj
IFNWR0xlbmd0aFZhbHVlIGNvbnZlcnRTVkdMZW5ndGhWYWx1ZShCdWlsZGVyU3RhdGUmLCBjb25z
dCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IGNvbnZlcnRT
VkdMZW5ndGhWZWN0b3IoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0
aWMgVmVjdG9yPFNWR0xlbmd0aFZhbHVlPiBjb252ZXJ0U3Ryb2tlRGFzaEFycmF5KEJ1aWxkZXJT
dGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFBhaW50T3JkZXIgY29udmVydFBh
aW50T3JkZXIoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgZmxv
YXQgY29udmVydE9wYWNpdHkoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBz
dGF0aWMgU3RyaW5nIGNvbnZlcnRTVkdVUklSZWZlcmVuY2UoQnVpbGRlclN0YXRlJiwgY29uc3Qg
Q1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgQ29sb3IgY29udmVydFNWR0NvbG9yKEJ1aWxkZXJTdGF0
ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFN0eWxlU2VsZkFsaWdubWVudERhdGEg
Y29udmVydFNlbGZPckRlZmF1bHRBbGlnbm1lbnREYXRhKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENT
U1ZhbHVlJik7CisgICAgc3RhdGljIFN0eWxlQ29udGVudEFsaWdubWVudERhdGEgY29udmVydENv
bnRlbnRBbGlnbm1lbnREYXRhKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAg
c3RhdGljIEdseXBoT3JpZW50YXRpb24gY29udmVydEdseXBoT3JpZW50YXRpb24oQnVpbGRlclN0
YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgR2x5cGhPcmllbnRhdGlvbiBjb252
ZXJ0R2x5cGhPcmllbnRhdGlvbk9yQXV0byhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYp
OworICAgIHN0YXRpYyBPcHRpb25hbDxMZW5ndGg+IGNvbnZlcnRMaW5lSGVpZ2h0KEJ1aWxkZXJT
dGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiwgZmxvYXQgbXVsdGlwbGllciA9IDEuZik7CisgICAgc3Rh
dGljIEZvbnRTeW50aGVzaXMgY29udmVydEZvbnRTeW50aGVzaXMoQnVpbGRlclN0YXRlJiwgY29u
c3QgQ1NTVmFsdWUmKTsKICAgICAKLSAgICBzdGF0aWMgQnJlYWtCZXR3ZWVuIGNvbnZlcnRQYWdl
QnJlYWtCZXR3ZWVuKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAg
IHN0YXRpYyBCcmVha0luc2lkZSBjb252ZXJ0UGFnZUJyZWFrSW5zaWRlKFN0eWxlOjpCdWlsZGVy
U3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBCcmVha0JldHdlZW4gY29udmVy
dENvbHVtbkJyZWFrQmV0d2VlbihTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUm
KTsKLSAgICBzdGF0aWMgQnJlYWtJbnNpZGUgY29udmVydENvbHVtbkJyZWFrSW5zaWRlKFN0eWxl
OjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBCcmVha0JldHdl
ZW4gY29udmVydFBhZ2VCcmVha0JldHdlZW4oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUm
KTsKKyAgICBzdGF0aWMgQnJlYWtJbnNpZGUgY29udmVydFBhZ2VCcmVha0luc2lkZShCdWlsZGVy
U3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBCcmVha0JldHdlZW4gY29udmVy
dENvbHVtbkJyZWFrQmV0d2VlbihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAg
IHN0YXRpYyBCcmVha0luc2lkZSBjb252ZXJ0Q29sdW1uQnJlYWtJbnNpZGUoQnVpbGRlclN0YXRl
JiwgY29uc3QgQ1NTVmFsdWUmKTsKIAotICAgIHN0YXRpYyBPcHRpb25TZXQ8SGFuZ2luZ1B1bmN0
dWF0aW9uPiBjb252ZXJ0SGFuZ2luZ1B1bmN0dWF0aW9uKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBj
b25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBPcHRpb25TZXQ8SGFuZ2luZ1B1bmN0dWF0aW9u
PiBjb252ZXJ0SGFuZ2luZ1B1bmN0dWF0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVl
Jik7CiAKLSAgICBzdGF0aWMgT3B0aW9uU2V0PFNwZWFrQXM+IGNvbnZlcnRTcGVha0FzKFN0eWxl
OjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBPcHRpb25TZXQ8
U3BlYWtBcz4gY29udmVydFNwZWFrQXMoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsK
IAotICAgIHN0YXRpYyBMZW5ndGggY29udmVydFBvc2l0aW9uQ29tcG9uZW50WChTdHlsZTo6QnVp
bGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRQ
b3NpdGlvbkNvbXBvbmVudFkoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7
CisgICAgc3RhdGljIExlbmd0aCBjb252ZXJ0UG9zaXRpb25Db21wb25lbnRYKEJ1aWxkZXJTdGF0
ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIExlbmd0aCBjb252ZXJ0UG9zaXRpb25D
b21wb25lbnRZKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CiAKLSAgICBzdGF0aWMg
R2FwTGVuZ3RoIGNvbnZlcnRHYXBMZW5ndGgoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENT
U1ZhbHVlJik7CisgICAgc3RhdGljIEdhcExlbmd0aCBjb252ZXJ0R2FwTGVuZ3RoKEJ1aWxkZXJT
dGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFz
cyBTdHlsZUJ1aWxkZXJDdXN0b207CisgICAgZnJpZW5kIGNsYXNzIEJ1aWxkZXJDdXN0b207CiAK
ICAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb1JhZGl1c0xlbmd0aChDU1NUb0xlbmd0aENvbnZl
cnNpb25EYXRhJiwgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmKTsKICAgICBzdGF0aWMgT3B0aW9u
U2V0PFRleHRFbXBoYXNpc1Bvc2l0aW9uPiB2YWx1ZVRvRW1waGFzaXNQb3NpdGlvbihjb25zdCBD
U1NQcmltaXRpdmVWYWx1ZSYpOwogICAgIHN0YXRpYyBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25T
a2lwPiB2YWx1ZVRvRGVjb3JhdGlvblNraXAoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmKTsKICNp
ZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIHN0YXRpYyBMZW5ndGggcGFyc2VTbmFwQ29v
cmRpbmF0ZShTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0
aWMgTGVuZ3RoIHBhcnNlU25hcENvb3JkaW5hdGUoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFs
dWUmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCkBAIC0xODAsMTggKzE4
MSwxOCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUbzEw
MFBlcmNlbnRNaW51c0xlbmd0aChjb25zdCBMZW5ndGgmKTsKLSAgICB0ZW1wbGF0ZTxDU1NWYWx1
ZUlELCBDU1NWYWx1ZUlEPiBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudChT
dHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmKTsKKyAgICB0ZW1w
bGF0ZTxDU1NWYWx1ZUlELCBDU1NWYWx1ZUlEPiBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRQb3NpdGlv
bkNvbXBvbmVudChCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYpOwogCi0g
ICAgc3RhdGljIEdyaWRMZW5ndGggY3JlYXRlR3JpZFRyYWNrQnJlYWR0aChjb25zdCBDU1NQcmlt
aXRpdmVWYWx1ZSYsIFN0eWxlOjpCdWlsZGVyU3RhdGUmKTsKLSAgICBzdGF0aWMgR3JpZFRyYWNr
U2l6ZSBjcmVhdGVHcmlkVHJhY2tTaXplKGNvbnN0IENTU1ZhbHVlJiwgU3R5bGU6OkJ1aWxkZXJT
dGF0ZSYpOworICAgIHN0YXRpYyBHcmlkTGVuZ3RoIGNyZWF0ZUdyaWRUcmFja0JyZWFkdGgoY29u
c3QgQ1NTUHJpbWl0aXZlVmFsdWUmLCBCdWlsZGVyU3RhdGUmKTsKKyAgICBzdGF0aWMgR3JpZFRy
YWNrU2l6ZSBjcmVhdGVHcmlkVHJhY2tTaXplKGNvbnN0IENTU1ZhbHVlJiwgQnVpbGRlclN0YXRl
Jik7CiAgICAgc3RydWN0IFRyYWNrc0RhdGE7Ci0gICAgc3RhdGljIGJvb2wgY3JlYXRlR3JpZFRy
YWNrTGlzdChjb25zdCBDU1NWYWx1ZSYsIFRyYWNrc0RhdGEmLCBTdHlsZTo6QnVpbGRlclN0YXRl
Jik7CisgICAgc3RhdGljIGJvb2wgY3JlYXRlR3JpZFRyYWNrTGlzdChjb25zdCBDU1NWYWx1ZSYs
IFRyYWNrc0RhdGEmLCBCdWlsZGVyU3RhdGUmKTsKICAgICBzdGF0aWMgYm9vbCBjcmVhdGVHcmlk
UG9zaXRpb24oY29uc3QgQ1NTVmFsdWUmLCBHcmlkUG9zaXRpb24mKTsKICAgICBzdGF0aWMgdm9p
ZCBjcmVhdGVJbXBsaWNpdE5hbWVkR3JpZExpbmVzRnJvbUdyaWRBcmVhKGNvbnN0IE5hbWVkR3Jp
ZEFyZWFNYXAmLCBOYW1lZEdyaWRMaW5lc01hcCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbik7
Ci0gICAgc3RhdGljIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgY3NzdG9MZW5ndGhDb252ZXJz
aW9uRGF0YVdpdGhUZXh0Wm9vbUZhY3RvcihTdHlsZTo6QnVpbGRlclN0YXRlJik7CisgICAgc3Rh
dGljIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgY3NzdG9MZW5ndGhDb252ZXJzaW9uRGF0YVdp
dGhUZXh0Wm9vbUZhY3RvcihCdWlsZGVyU3RhdGUmKTsKIH07CiAKLWlubGluZSBMZW5ndGggU3R5
bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoKGNvbnN0IFN0eWxlOjpCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIExlbmd0aCBC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoKGNvbnN0IEJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFs
dWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIENTU1RvTGVuZ3Ro
Q29udmVyc2lvbkRhdGEgY29udmVyc2lvbkRhdGEgPSBidWlsZGVyU3RhdGUudXNlU1ZHWm9vbVJ1
bGVzRm9yTGVuZ3RoKCkgPwpAQCAtMjE0LDE0ICsyMTUsMTQgQEAgaW5saW5lIExlbmd0aCBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgoY29uc3QgU3R5bGU6OkJ1aWxkZXJTdGF0
ZSYgYnUKICAgICByZXR1cm4gTGVuZ3RoKDAsIEZpeGVkKTsKIH0KIAotaW5saW5lIExlbmd0aCBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGhPckF1dG8oY29uc3QgU3R5bGU6OkJ1
aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUg
TGVuZ3RoIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGhPckF1dG8oY29uc3QgQnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAo
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVB
dXRvKQogICAgICAgICByZXR1cm4gTGVuZ3RoKEF1dG8pOwogICAgIHJldHVybiBjb252ZXJ0TGVu
Z3RoKGJ1aWxkZXJTdGF0ZSwgdmFsdWUpOwogfQogCi1pbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydExlbmd0aFNpemluZyhjb25zdCBTdHlsZTo6QnVpbGRlclN0YXRl
JiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBMZW5ndGggQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0aFNpemluZyhjb25zdCBCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2
ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBzd2l0Y2gg
KHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSkgewpAQCAtMjUwLDE0ICsyNTEsMTQgQEAgaW5saW5l
IExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGhTaXppbmcoY29uc3Qg
U3R5bGU6OkJ1aWxkZXJTdGEKICAgICB9CiB9CiAKLWlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0TGVuZ3RoTWF4U2l6aW5nKGNvbnN0IFN0eWxlOjpCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIExlbmd0aCBC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoTWF4U2l6aW5nKGNvbnN0IEJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkK
ICAgICAgICAgcmV0dXJuIExlbmd0aChVbmRlZmluZWQpOwogICAgIHJldHVybiBjb252ZXJ0TGVu
Z3RoU2l6aW5nKGJ1aWxkZXJTdGF0ZSwgdmFsdWUpOwogfQogCi1pbmxpbmUgVGFiU2l6ZSBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUYWJTaXplKGNvbnN0IFN0eWxlOjpCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFRhYlNpemUg
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRhYlNpemUoY29uc3QgQnVpbGRlclN0YXRlJiBidWls
ZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVW
YWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgaWYgKHByaW1p
dGl2ZVZhbHVlLmlzTnVtYmVyKCkpCkBAIC0yNjYsMTMgKzI2NywxMyBAQCBpbmxpbmUgVGFiU2l6
ZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUYWJTaXplKGNvbnN0IFN0eWxlOjpCdWls
ZGVyU3RhdGUmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgVCBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRDb21wdXRlZExlbmd0aChTdHlsZTo6QnVpbGRlclN0YXRlJiBi
dWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBUIEJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRDb21wdXRlZExlbmd0aChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwg
Y29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpLmNvbXB1dGVMZW5ndGg8VD4oYnVpbGRlclN0YXRlLmNzc1RvTGVuZ3Ro
Q29udmVyc2lvbkRhdGEoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgVCBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMaW5lV2lkdGgoU3R5bGU6OkJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgVCBCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0TGluZVdpZHRoKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBj
b25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIHN3aXRjaCAocHJpbWl0aXZlVmFs
dWUudmFsdWVJRCgpKSB7CkBAIC0zMDIsNyArMzAzLDcgQEAgaW5saW5lIFQgU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0TGluZVdpZHRoKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJT
dGEKICAgICB9CiB9CiAKLWlubGluZSBmbG9hdCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRTcGFjaW5nKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFs
dWUmIHZhbHVlKQoraW5saW5lIGZsb2F0IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTcGFjaW5n
KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAg
ICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFs
dWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwp
CkBAIC0zMTQsNyArMzE1LDcgQEAgaW5saW5lIGZsb2F0IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydFNwYWNpbmcoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclMKICAgICByZXR1cm4g
cHJpbWl0aXZlVmFsdWUuY29tcHV0ZUxlbmd0aDxmbG9hdD4oY29udmVyc2lvbkRhdGEpOwogfQog
Ci1pbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRvUmFkaXVzTGVu
Z3RoKENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjb25zdCBDU1NQ
cmltaXRpdmVWYWx1ZSYgdmFsdWUpCitpbmxpbmUgTGVuZ3RoIEJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRUb1JhZGl1c0xlbmd0aChDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9u
RGF0YSwgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS5p
c1BlcmNlbnRhZ2UoKSkKICAgICAgICAgcmV0dXJuIExlbmd0aCh2YWx1ZS5kb3VibGVWYWx1ZSgp
LCBQZXJjZW50KTsKQEAgLTMyMyw3ICszMjQsNyBAQCBpbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydFRvUmFkaXVzTGVuZ3RoKENTU1RvTGVuZ3RoQ29udmVyc2lvbgog
ICAgIHJldHVybiB2YWx1ZS5jb21wdXRlTGVuZ3RoPExlbmd0aD4oY29udmVyc2lvbkRhdGEpOwog
fQogCi1pbmxpbmUgTGVuZ3RoU2l6ZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSYWRp
dXMoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFs
dWUpCitpbmxpbmUgTGVuZ3RoU2l6ZSBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmFkaXVzKEJ1
aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAg
YXV0byogcGFpciA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkucGFpclZhbHVl
KCk7CiAgICAgaWYgKCFwYWlyIHx8ICFwYWlyLT5maXJzdCgpIHx8ICFwYWlyLT5zZWNvbmQoKSkK
QEAgLTM0MCw3ICszNDEsNyBAQCBpbmxpbmUgTGVuZ3RoU2l6ZSBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRSYWRpdXMoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbAogICAgIHJldHVybiBy
YWRpdXM7CiB9CiAKLWlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
VG8xMDBQZXJjZW50TWludXNMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCitpbmxpbmUgTGVu
Z3RoIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0aChjb25z
dCBMZW5ndGgmIGxlbmd0aCkKIHsKICAgICBpZiAobGVuZ3RoLmlzUGVyY2VudCgpKQogICAgICAg
ICByZXR1cm4gTGVuZ3RoKDEwMCAtIGxlbmd0aC52YWx1ZSgpLCBQZXJjZW50KTsKQEAgLTM1NCwx
OCArMzU1LDE4IEBAIGlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
VG8xMDBQZXJjZW50TWludXNMZW5ndGgoY29uc3QgTGVuZ3RoCiAgICAgcmV0dXJuIExlbmd0aChD
YWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RGTW92ZShvcCksIFZhbHVlUmFuZ2VBbGwpKTsKIH0K
IAotaW5saW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbkNv
bXBvbmVudFgoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1
ZSYgdmFsdWUpCitpbmxpbmUgTGVuZ3RoIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlv
bkNvbXBvbmVudFgoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2
YWx1ZSkKIHsKICAgICByZXR1cm4gY29udmVydFBvc2l0aW9uQ29tcG9uZW50PENTU1ZhbHVlTGVm
dCwgQ1NTVmFsdWVSaWdodD4oYnVpbGRlclN0YXRlLCBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpKTsKIH0KIAotaW5saW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRQb3NpdGlvbkNvbXBvbmVudFkoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
LCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgTGVuZ3RoIEJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudFkoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNv
bnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICByZXR1cm4gY29udmVydFBvc2l0aW9uQ29tcG9u
ZW50PENTU1ZhbHVlVG9wLCBDU1NWYWx1ZUJvdHRvbT4oYnVpbGRlclN0YXRlLCBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKTsKIH0KIAogdGVtcGxhdGU8Q1NTVmFsdWVJRCBjc3NW
YWx1ZUZvcjAsIENTU1ZhbHVlSUQgY3NzVmFsdWVGb3IxMDA+Ci1pbmxpbmUgTGVuZ3RoIFN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBvc2l0aW9uQ29tcG9uZW50KFN0eWxlOjpCdWlsZGVy
U3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlKQoraW5s
aW5lIExlbmd0aCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25lbnQoQnVp
bGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSkK
IHsKICAgICBMZW5ndGggbGVuZ3RoOwogCkBAIC00MDAsNyArNDAxLDcgQEAgaW5saW5lIExlbmd0
aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudChTdHlsZTo6
QnVpbGRlclN0YXQKICAgICByZXR1cm4gbGVuZ3RoOwogfQogCi1pbmxpbmUgTGVuZ3RoUG9pbnQg
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0T2JqZWN0UG9zaXRpb24oU3R5bGU6OkJ1aWxk
ZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgTGVu
Z3RoUG9pbnQgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE9iamVjdFBvc2l0aW9uKEJ1aWxkZXJT
dGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYg
cHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAg
IFBhaXIqIHBhaXIgPSBwcmltaXRpdmVWYWx1ZS5wYWlyVmFsdWUoKTsKQEAgLTQxMyw3ICs0MTQs
NyBAQCBpbmxpbmUgTGVuZ3RoUG9pbnQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0T2Jq
ZWN0UG9zaXRpb24oU3R5bGU6OkJ1aWxkZXJTdAogICAgIHJldHVybiBMZW5ndGhQb2ludChsZW5n
dGhYLCBsZW5ndGhZKTsKIH0KIAotaW5saW5lIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gU3R5
bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dERlY29yYXRpb24oU3R5bGU6OkJ1aWxkZXJT
dGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBPcHRpb25TZXQ8VGV4dERlY29y
YXRpb24+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0RGVjb3JhdGlvbihCdWlsZGVyU3Rh
dGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byByZXN1bHQgPSBSZW5kZXJT
dHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9uKCk7CiAgICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4o
dmFsdWUpKSB7CkBAIC00MjQsMjAgKzQyNSwyMCBAQCBpbmxpbmUgT3B0aW9uU2V0PFRleHREZWNv
cmF0aW9uPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0RGVjb3JhdGlvbihTdAog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIFQgU3R5bGVCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0TnVtYmVyKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFs
dWUpCitpbmxpbmUgVCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TnVtYmVyKEJ1aWxkZXJTdGF0
ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZTxUPihDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJF
Uik7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgVCBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnROdW1iZXJPckF1dG8oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0
YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgVCBCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0TnVtYmVyT3JBdXRvKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NW
YWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykKICAgICAgICAgcmV0dXJuIC0xOwogICAgIHJl
dHVybiBjb252ZXJ0TnVtYmVyPFQ+KGJ1aWxkZXJTdGF0ZSwgdmFsdWUpOwogfQogCi1pbmxpbmUg
c2hvcnQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0V2Via2l0SHlwaGVuYXRlTGltaXRM
aW5lcyhTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5l
IHNob3J0IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRXZWJraXRIeXBoZW5hdGVMaW1pdExpbmVz
KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmlt
aXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vTGltaXQpCkBAIC00NDYsNyAr
NDQ3LDcgQEAgaW5saW5lIHNob3J0IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFdlYmtp
dEh5cGhlbmF0ZUxpbWl0TGluZXMoU3R5bGU6OkJ1aWwKIH0KIAogdGVtcGxhdGU8Q1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eT4KLWlubGluZSBOaW5lUGllY2VJbWFnZSBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRCb3JkZXJJbWFnZShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUs
IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBOaW5lUGllY2VJbWFnZSBCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0Qm9yZGVySW1hZ2UoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVl
JiB2YWx1ZSkKIHsKICAgICBOaW5lUGllY2VJbWFnZSBpbWFnZTsKICAgICBidWlsZGVyU3RhdGUu
c3R5bGVNYXAoKS5tYXBOaW5lUGllY2VJbWFnZShwcm9wZXJ0eSwgJnZhbHVlLCBpbWFnZSk7CkBA
IC00NTQsNyArNDU1LDcgQEAgaW5saW5lIE5pbmVQaWVjZUltYWdlIFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydEJvcmRlckltYWdlKFN0eWxlOjpCdWlsZGVyU3QKIH0KIAogdGVtcGxhdGU8
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eT4KLWlubGluZSBOaW5lUGllY2VJbWFnZSBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRCb3JkZXJNYXNrKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxk
ZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIE5pbmVQaWVjZUltYWdlIEJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRCb3JkZXJNYXNrKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBD
U1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgTmluZVBpZWNlSW1hZ2UgaW1hZ2UoTmluZVBpZWNlSW1h
Z2U6OlR5cGU6Ok1hc2spOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZU1hcCgpLm1hcE5pbmVQaWVj
ZUltYWdlKHByb3BlcnR5LCAmdmFsdWUsIGltYWdlKTsKQEAgLTQ2MiwxMiArNDYzLDEyIEBAIGlu
bGluZSBOaW5lUGllY2VJbWFnZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRCb3JkZXJN
YXNrKFN0eWxlOjpCdWlsZGVyU3RhCiB9CiAKIHRlbXBsYXRlPENTU1Byb3BlcnR5SUQ+Ci1pbmxp
bmUgUmVmUHRyPFN0eWxlSW1hZ2U+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFN0eWxl
SW1hZ2UoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUp
CitpbmxpbmUgUmVmUHRyPFN0eWxlSW1hZ2U+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTdHls
ZUltYWdlKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAg
ICAgcmV0dXJuIGJ1aWxkZXJTdGF0ZS5jcmVhdGVTdHlsZUltYWdlKHZhbHVlKTsKIH0KIAotaW5s
aW5lIFRyYW5zZm9ybU9wZXJhdGlvbnMgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VHJh
bnNmb3JtKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUm
IHZhbHVlKQoraW5saW5lIFRyYW5zZm9ybU9wZXJhdGlvbnMgQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydFRyYW5zZm9ybShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUm
IHZhbHVlKQogewogICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczsKICAgICB0cmFu
c2Zvcm1zRm9yVmFsdWUodmFsdWUsIGJ1aWxkZXJTdGF0ZS5jc3NUb0xlbmd0aENvbnZlcnNpb25E
YXRhKCksIG9wZXJhdGlvbnMpOwpAQCAtNDc1LDcgKzQ3Niw3IEBAIGlubGluZSBUcmFuc2Zvcm1P
cGVyYXRpb25zIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRyYW5zZm9ybShTdHlsZTo6
QnVpbGRlCiB9CiAKICNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykKLWlubGluZSB2b2lkIFN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6dXBkYXRlQ29sb3JTY2hlbWUoY29uc3QgQ1NTUHJpbWl0aXZlVmFs
dWUmIHByaW1pdGl2ZVZhbHVlLCBTdHlsZUNvbG9yU2NoZW1lJiBjb2xvclNjaGVtZSkKK2lubGlu
ZSB2b2lkIEJ1aWxkZXJDb252ZXJ0ZXI6OnVwZGF0ZUNvbG9yU2NoZW1lKGNvbnN0IENTU1ByaW1p
dGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1ZSwgU3R5bGVDb2xvclNjaGVtZSYgY29sb3JTY2hlbWUp
CiB7CiAgICAgQVNTRVJUKHByaW1pdGl2ZVZhbHVlLmlzVmFsdWVJRCgpKTsKIApAQCAtNDk4LDcg
KzQ5OSw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6dXBkYXRlQ29sb3JT
Y2hlbWUoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHByCiAgICAgfQogfQogCi1pbmxpbmUgU3R5
bGVDb2xvclNjaGVtZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDb2xvclNjaGVtZShT
dHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFN0eWxl
Q29sb3JTY2hlbWUgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENvbG9yU2NoZW1lKEJ1aWxkZXJT
dGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBTdHlsZUNvbG9yU2NoZW1lIGNv
bG9yU2NoZW1lOwogCkBAIC01MTYsMjYgKzUxNywyNiBAQCBpbmxpbmUgU3R5bGVDb2xvclNjaGVt
ZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDb2xvclNjaGVtZShTdHlsZTo6QnVpbGRl
cgogfQogI2VuZGlmCiAKLWlubGluZSBTdHJpbmcgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0U3RyaW5nKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitp
bmxpbmUgU3RyaW5nIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTdHJpbmcoQnVpbGRlclN0YXRl
JiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpLnN0cmluZ1ZhbHVlKCk7CiB9CiAKLWlubGluZSBTdHJpbmcgU3R5
bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3RyaW5nT3JBdXRvKFN0eWxlOjpCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFN0cmluZyBC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3RyaW5nT3JBdXRvKEJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykKICAgICAgICAg
cmV0dXJuIG51bGxBdG9tKCk7CiAgICAgcmV0dXJuIGNvbnZlcnRTdHJpbmcoYnVpbGRlclN0YXRl
LCB2YWx1ZSk7CiB9CiAKLWlubGluZSBTdHJpbmcgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0U3RyaW5nT3JOb25lKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3Qg
Q1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFN0cmluZyBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
U3RyaW5nT3JOb25lKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYg
dmFsdWUpCiB7CiAgICAgaWYgKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFs
dWVJRCgpID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgcmV0dXJuIG51bGxBdG9tKCk7CiAgICAg
cmV0dXJuIGNvbnZlcnRTdHJpbmcoYnVpbGRlclN0YXRlLCB2YWx1ZSk7CiB9CiAKLWlubGluZSBP
cHRpb25TZXQ8VGV4dEVtcGhhc2lzUG9zaXRpb24+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6dmFs
dWVUb0VtcGhhc2lzUG9zaXRpb24oY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHByaW1pdGl2ZVZh
bHVlKQoraW5saW5lIE9wdGlvblNldDxUZXh0RW1waGFzaXNQb3NpdGlvbj4gQnVpbGRlckNvbnZl
cnRlcjo6dmFsdWVUb0VtcGhhc2lzUG9zaXRpb24oY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHBy
aW1pdGl2ZVZhbHVlKQogewogICAgIEFTU0VSVChwcmltaXRpdmVWYWx1ZS5pc1ZhbHVlSUQoKSk7
CiAKQEAgLTU1Niw3ICs1NTcsNyBAQCBpbmxpbmUgT3B0aW9uU2V0PFRleHRFbXBoYXNpc1Bvc2l0
aW9uPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OnZhbHVlVG9FbXBoYXNpc1BvcwogICAgIHJldHVy
biBSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRFbXBoYXNpc1Bvc2l0aW9uKCk7CiB9CiAKLWlubGlu
ZSBPcHRpb25TZXQ8VGV4dEVtcGhhc2lzUG9zaXRpb24+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydFRleHRFbXBoYXNpc1Bvc2l0aW9uKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBD
U1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgT3B0aW9uU2V0PFRleHRFbXBoYXNpc1Bvc2l0aW9uPiBC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dEVtcGhhc2lzUG9zaXRpb24oQnVpbGRlclN0YXRl
JiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpKQogICAgICAgICByZXR1cm4gdmFsdWVUb0VtcGhhc2lzUG9zaXRpb24oZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSk7CkBAIC01NjcsNyArNTY4LDcgQEAgaW5saW5l
IE9wdGlvblNldDxUZXh0RW1waGFzaXNQb3NpdGlvbj4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0VGV4dEVtcGhhc2kKICAgICByZXR1cm4gcG9zaXRpb247CiB9CiAKLWlubGluZSBUZXh0
QWxpZ25Nb2RlIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRBbGlnbihTdHlsZTo6
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGlu
ZSBUZXh0QWxpZ25Nb2RlIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0QWxpZ24oQnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRv
JiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAg
ICAgQVNTRVJUKHByaW1pdGl2ZVZhbHVlLmlzVmFsdWVJRCgpKTsKQEAgLTU4Myw3ICs1ODQsNyBA
QCBpbmxpbmUgVGV4dEFsaWduTW9kZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0
QWxpZ24oU3R5bGU6OkJ1aWxkZXJTdGF0ZQogICAgIHJldHVybiBwYXJlbnRTdHlsZS50ZXh0QWxp
Z24oKTsKIH0KIAotaW5saW5lIFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4gU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0Q2xpcFBhdGgoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0
YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgUmVmUHRyPENsaXBQYXRoT3BlcmF0
aW9uPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q2xpcFBhdGgoQnVpbGRlclN0YXRlJiBidWls
ZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKSkgewogICAgICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CkBAIC02MjcsNyArNjI4LDcgQEAgaW5saW5l
IFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
Q2xpcFBhdGgoU3R5bGU6OkIKICAgICByZXR1cm4gb3BlcmF0aW9uOwogfQogCi1pbmxpbmUgUmVz
aXplIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFJlc2l6ZShTdHlsZTo6QnVpbGRlclN0
YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBSZXNpemUg
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFJlc2l6ZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0
ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0g
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKIApAQCAtNjQwLDcgKzY0MSw3IEBA
IGlubGluZSBSZXNpemUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmVzaXplKFN0eWxl
OjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTCiAgICAgcmV0dXJuIHJlc2l6ZTsKIH0KIAotaW5saW5l
IGludCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVlUmVwZXRpdGlvbihTdHls
ZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIGludCBCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0TWFycXVlZVJlcGV0aXRpb24oQnVpbGRlclN0YXRlJiwgY29u
c3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFs
dWVJRCgpID09IENTU1ZhbHVlSW5maW5pdGUpCkBAIC02NTAsNyArNjUxLDcgQEAgaW5saW5lIGlu
dCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVlUmVwZXRpdGlvbihTdHlsZTo6
QnVpbGRlclN0YXRlJiwKICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUuaW50VmFsdWUoKTsKIH0K
IAotaW5saW5lIGludCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVlU3BlZWQo
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBpbnQg
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVTcGVlZChCdWlsZGVyU3RhdGUmLCBjb25z
dCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGludCBzcGVlZCA9IDg1OwpAQCAtNjc5
LDcgKzY4MCw3IEBAIGlubGluZSBpbnQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TWFy
cXVlZVNwZWVkKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zCiAgICAgcmV0dXJuIHNwZWVkOwog
fQogCi1pbmxpbmUgUmVmPFF1b3Rlc0RhdGE+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dFF1b3RlcyhTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5s
aW5lIFJlZjxRdW90ZXNEYXRhPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UXVvdGVzKEJ1aWxk
ZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKSkgewogICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKQEAgLTcwMiwxMyArNzAz
LDEzIEBAIGlubGluZSBSZWY8UXVvdGVzRGF0YT4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0UXVvdGVzKFN0eWxlOjpCdWlsZGVyU3RhdGUmCiAgICAgcmV0dXJuIFF1b3Rlc0RhdGE6OmNy
ZWF0ZShxdW90ZXMpOwogfQogCi1pbmxpbmUgVGV4dFVuZGVybGluZVBvc2l0aW9uIFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRVbmRlcmxpbmVQb3NpdGlvbihTdHlsZTo6QnVpbGRl
clN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFRleHRVbmRlcmxpbmVQb3Np
dGlvbiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dFVuZGVybGluZVBvc2l0aW9uKEJ1aWxk
ZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBBU1NFUlQoaXM8Q1NTUHJp
bWl0aXZlVmFsdWU+KHZhbHVlKSk7CiAgICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSk7CiB9CiAKLWlubGluZSBUZXh0VW5kZXJsaW5lT2Zmc2V0IFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydFRleHRVbmRlcmxpbmVPZmZzZXQoU3R5bGU6OkJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgVGV4dFVuZGVy
bGluZU9mZnNldCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dFVuZGVybGluZU9mZnNldChC
dWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAg
IEFTU0VSVChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKTsKICAgICBhdXRvJiBwcmltaXRp
dmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CkBAIC03MjIsNyAr
NzIzLDcgQEAgaW5saW5lIFRleHRVbmRlcmxpbmVPZmZzZXQgU3R5bGVCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0VGV4dFVuZGVybGluZU9mZnNldChTdHkKICAgICB9CiB9CiAKLWlubGluZSBUZXh0
RGVjb3JhdGlvblRoaWNrbmVzcyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0RGVj
b3JhdGlvblRoaWNrbmVzcyhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0
IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyBCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0VGV4dERlY29yYXRpb25UaGlja25lc3MoQnVpbGRlclN0YXRlJiBi
dWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBBU1NFUlQoaXM8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKSk7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwpAQCAtNzM4LDcgKzczOSw3IEBAIGlubGlu
ZSBUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRU
ZXh0RGVjb3JhdGlvblRoaWNrCiAgICAgfQogfQogCi1pbmxpbmUgUmVmUHRyPFN0eWxlUmVmbGVj
dGlvbj4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmVmbGVjdGlvbihTdHlsZTo6QnVp
bGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBS
ZWZQdHI8U3R5bGVSZWZsZWN0aW9uPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmVmbGVjdGlv
bihCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewog
ICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CiAgICAgICAgIEFTU0VSVChk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5v
bmUpOwpAQCAtNzU4LDcgKzc1OSw3IEBAIGlubGluZSBSZWZQdHI8U3R5bGVSZWZsZWN0aW9uPiBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWZsZWN0aW9uKFN0eWxlOjpCCiAgICAgcmV0
dXJuIHJlZmxlY3Rpb247CiB9CiAKLWlubGluZSBJbnRTaXplIFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydEluaXRpYWxMZXR0ZXIoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1Zh
bHVlJiB2YWx1ZSkKK2lubGluZSBJbnRTaXplIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRJbml0
aWFsTGV0dGVyKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBh
dXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7
CiAKQEAgLTc3Myw3ICs3NzQsNyBAQCBpbmxpbmUgSW50U2l6ZSBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRJbml0aWFsTGV0dGVyKFN0eWxlOjpCdWlsZGVyU3RhdGUmLAogICAgIHJldHVy
biBJbnRTaXplKHBhaXItPmZpcnN0KCktPmludFZhbHVlKCksIHBhaXItPnNlY29uZCgpLT5pbnRW
YWx1ZSgpKTsKIH0KIAotaW5saW5lIGZsb2F0IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dFRleHRTdHJva2VXaWR0aChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0
IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBmbG9hdCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
VGV4dFN0cm9rZVdpZHRoKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1
ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpOwogCkBAIC04MDMsNyArODA0LDcgQEAgaW5saW5lIGZsb2F0IFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRTdHJva2VXaWR0aChTdHlsZTo6QnVpbGRl
clN0YXRlJgogICAgIHJldHVybiB3aWR0aDsKIH0KIAotaW5saW5lIE9wdGlvblNldDxMaW5lQm94
Q29udGFpbj4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGluZUJveENvbnRhaW4oU3R5
bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBPcHRpb25T
ZXQ8TGluZUJveENvbnRhaW4+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMaW5lQm94Q29udGFp
bihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlzPENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKICAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7CkBAIC04MTMs
NyArODE0LDcgQEAgaW5saW5lIE9wdGlvblNldDxMaW5lQm94Q29udGFpbj4gU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0TGluZUJveENvbnRhaW4oU3QKICAgICByZXR1cm4gZG93bmNhc3Q8
Q1NTTGluZUJveENvbnRhaW5WYWx1ZT4odmFsdWUpLnZhbHVlKCk7CiB9CiAKLWlubGluZSBPcHRp
b25TZXQ8VGV4dERlY29yYXRpb25Ta2lwPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OnZhbHVlVG9E
ZWNvcmF0aW9uU2tpcChjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgcHJpbWl0aXZlVmFsdWUpCitp
bmxpbmUgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uU2tpcD4gQnVpbGRlckNvbnZlcnRlcjo6dmFs
dWVUb0RlY29yYXRpb25Ta2lwKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1
ZSkKIHsKICAgICBBU1NFUlQocHJpbWl0aXZlVmFsdWUuaXNWYWx1ZUlEKCkpOwogCkBAIC04MzQs
NyArODM1LDcgQEAgaW5saW5lIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvblNraXA+IFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6dmFsdWVUb0RlY29yYXRpb25Ta2kKICAgICByZXR1cm4gT3B0aW9uU2V0
PFRleHREZWNvcmF0aW9uU2tpcD4geyB9OwogfQogCi1pbmxpbmUgT3B0aW9uU2V0PFRleHREZWNv
cmF0aW9uU2tpcD4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dERlY29yYXRpb25T
a2lwKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUg
T3B0aW9uU2V0PFRleHREZWNvcmF0aW9uU2tpcD4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRl
eHREZWNvcmF0aW9uU2tpcChCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7
CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiB2
YWx1ZVRvRGVjb3JhdGlvblNraXAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSk7
CkBAIC04NTAsNyArODUxLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzSW1hZ2VTaGFwZShjb25z
dCBDU1NWYWx1ZSYgdmFsdWUpCiAgICAgcmV0dXJuIGlzPENTU0ltYWdlVmFsdWU+KHZhbHVlKSB8
fCBpczxDU1NJbWFnZVNldFZhbHVlPih2YWx1ZSkgfHwgaXM8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZT4odmFsdWUpOwogfQogCi1pbmxpbmUgUmVmUHRyPFNoYXBlVmFsdWU+IFN0eWxlQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydFNoYXBlVmFsdWUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0
YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgUmVmUHRyPFNoYXBlVmFsdWU+IEJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRTaGFwZVZhbHVlKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBD
U1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkp
IHsKICAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFs
dWVJRCgpID09IENTU1ZhbHVlTm9uZSk7CkBAIC04ODksNyArODkwLDcgQEAgaW5saW5lIFJlZlB0
cjxTaGFwZVZhbHVlPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTaGFwZVZhbHVlKFN0
eWxlOjpCdWlsZGUKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAKLWlubGluZSBTY3Jv
bGxTbmFwVHlwZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTY3JvbGxTbmFwVHlwZShT
dHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFNjcm9s
bFNuYXBUeXBlIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTY3JvbGxTbmFwVHlwZShCdWlsZGVy
U3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgU2Nyb2xsU25hcFR5cGUgdHlw
ZTsKICAgICBhdXRvJiB2YWx1ZXMgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKTsKQEAg
LTkxNCw3ICs5MTUsNyBAQCBpbmxpbmUgU2Nyb2xsU25hcFR5cGUgU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0U2Nyb2xsU25hcFR5cGUoU3R5bGU6OkJ1aWxkZQogICAgIHJldHVybiB0eXBl
OwogfQogCi1pbmxpbmUgU2Nyb2xsU25hcEFsaWduIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydFNjcm9sbFNuYXBBbGlnbihTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUm
IHZhbHVlKQoraW5saW5lIFNjcm9sbFNuYXBBbGlnbiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
U2Nyb2xsU25hcEFsaWduKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsK
ICAgICBhdXRvJiB2YWx1ZXMgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKTsKICAgICBT
Y3JvbGxTbmFwQWxpZ24gYWxpZ25tZW50OwpAQCAtOTI4LDcgKzkyOSw3IEBAIGlubGluZSBTY3Jv
bGxTbmFwQWxpZ24gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2Nyb2xsU25hcEFsaWdu
KFN0eWxlOjpCdWlsCiAKICNlbmRpZgogCi1pbmxpbmUgR3JpZExlbmd0aCBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFja0JyZWFkdGgoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUm
IHByaW1pdGl2ZVZhbHVlLCBTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxp
bmUgR3JpZExlbmd0aCBCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tCcmVhZHRoKGNv
bnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1ZSwgQnVpbGRlclN0YXRlJiBidWls
ZGVyU3RhdGUpCiB7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1
ZU1pbkNvbnRlbnQgfHwgcHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlV2Via2l0
TWluQ29udGVudCkKICAgICAgICAgcmV0dXJuIExlbmd0aChNaW5Db250ZW50KTsKQEAgLTk0Myw3
ICs5NDQsNyBAQCBpbmxpbmUgR3JpZExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0
ZUdyaWRUcmFja0JyZWFkdGgoY29uc3QgQ1NTUHJpbWl0aQogICAgIHJldHVybiBwcmltaXRpdmVW
YWx1ZS5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252
ZXJzaW9uIHwgQ2FsY3VsYXRlZENvbnZlcnNpb24gfCBBdXRvQ29udmVyc2lvbj4oYnVpbGRlclN0
YXRlLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKSk7CiB9CiAKLWlubGluZSBHcmlkVHJhY2tT
aXplIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFRyYWNrU2l6ZShjb25zdCBDU1NW
YWx1ZSYgdmFsdWUsIFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSBH
cmlkVHJhY2tTaXplIEJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFja1NpemUoY29uc3Qg
Q1NTVmFsdWUmIHZhbHVlLCBCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBpZiAo
aXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIEdyaWRUcmFja1Np
emUoY3JlYXRlR3JpZFRyYWNrQnJlYWR0aChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFs
dWUpLCBidWlsZGVyU3RhdGUpKTsKQEAgLTk1NCw3ICs5NTUsNyBAQCBpbmxpbmUgR3JpZFRyYWNr
U2l6ZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFja1NpemUoY29uc3QgQ1NT
VmFsdWUmCiAgICAgaWYgKGZ1bmN0aW9uLmxlbmd0aCgpID09IDEpCiAgICAgICAgIHJldHVybiBH
cmlkVHJhY2tTaXplKGNyZWF0ZUdyaWRUcmFja0JyZWFkdGgoZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KCpmdW5jdGlvbi5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDApKSwgYnVpbGRlclN0YXRl
KSwgRml0Q29udGVudFRyYWNrU2l6aW5nKTsKIAotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OKGZ1bmN0aW9uLmxlbmd0aCgpID09IDIpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oZnVuY3Rpb24ubGVuZ3RoKCkgPT0gMik7CiAgICAgR3Jp
ZExlbmd0aCBtaW5UcmFja0JyZWFkdGgoY3JlYXRlR3JpZFRyYWNrQnJlYWR0aChkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4oKmZ1bmN0aW9uLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMCkpLCBi
dWlsZGVyU3RhdGUpKTsKICAgICBHcmlkTGVuZ3RoIG1heFRyYWNrQnJlYWR0aChjcmVhdGVHcmlk
VHJhY2tCcmVhZHRoKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqZnVuY3Rpb24uaXRlbVdp
dGhvdXRCb3VuZHNDaGVjaygxKSksIGJ1aWxkZXJTdGF0ZSkpOwogICAgIHJldHVybiBHcmlkVHJh
Y2tTaXplKG1pblRyYWNrQnJlYWR0aCwgbWF4VHJhY2tCcmVhZHRoKTsKQEAgLTk3Myw3ICs5NzQs
NyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVHcmlkTGluZU5hbWVzTGlzdChjb25zdCBDU1NWYWx1ZSYg
dmFsdWUsIHVuc2lnbmVkIGN1cnJlbnROYW1lZAogICAgIH0KIH0KIAotc3RydWN0IFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6VHJhY2tzRGF0YSB7CitzdHJ1Y3QgQnVpbGRlckNvbnZlcnRlcjo6VHJh
Y2tzRGF0YSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVHJhY2tzRGF0YSk7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFRyYWNrc0RhdGEoKSA9IGRlZmF1bHQ7CkBA
IC05ODgsNyArOTg5LDcgQEAgcHVibGljOgogICAgIEF1dG9SZXBlYXRUeXBlIG1fYXV0b1JlcGVh
dFR5cGUgeyBSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvUmVwZWF0VHlwZSgpIH07CiB9Owog
Ci1pbmxpbmUgYm9vbCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFja0xpc3Qo
Y29uc3QgQ1NTVmFsdWUmIHZhbHVlLCBUcmFja3NEYXRhJiB0cmFja3NEYXRhLCBTdHlsZTo6QnVp
bGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgYm9vbCBCdWlsZGVyQ29udmVydGVyOjpj
cmVhdGVHcmlkVHJhY2tMaXN0KGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgVHJhY2tzRGF0YSYgdHJh
Y2tzRGF0YSwgQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgLy8gSGFuZGxlICdu
b25lJy4KICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKQEAgLTEwNDQsNyAr
MTA0NSw3IEBAIGlubGluZSBib29sIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFRy
YWNrTGlzdChjb25zdCBDU1NWYWx1ZSYgdmFsdWUsIFRyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWlubGluZSBib29sIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFBvc2l0aW9uKGNv
bnN0IENTU1ZhbHVlJiB2YWx1ZSwgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbikKK2lubGluZSBib29s
IEJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRQb3NpdGlvbihjb25zdCBDU1NWYWx1ZSYgdmFs
dWUsIEdyaWRQb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAgICAgLy8gV2UgYWNjZXB0IHRoZSBzcGVj
aWZpY2F0aW9uJ3MgZ3JhbW1hcjoKICAgICAvLyBhdXRvIHwgPGN1c3RvbS1pZGVudD4gfCBbIDxp
bnRlZ2VyPiAmJiA8Y3VzdG9tLWlkZW50Pj8gXSB8IFsgc3BhbiAmJiBbIDxpbnRlZ2VyPiB8fCA8
Y3VzdG9tLWlkZW50PiBdIF0KQEAgLTEwOTQsNyArMTA5NSw3IEBAIGlubGluZSBib29sIFN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFBvc2l0aW9uKGNvbnN0IENTU1ZhbHVlJiB2YWx1
ZSwgR3JpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckNv
bnZlcnRlcjo6Y3JlYXRlSW1wbGljaXROYW1lZEdyaWRMaW5lc0Zyb21HcmlkQXJlYShjb25zdCBO
YW1lZEdyaWRBcmVhTWFwJiBuYW1lZEdyaWRBcmVhcywgTmFtZWRHcmlkTGluZXNNYXAmIG5hbWVk
R3JpZExpbmVzLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQoraW5saW5lIHZv
aWQgQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlSW1wbGljaXROYW1lZEdyaWRMaW5lc0Zyb21Hcmlk
QXJlYShjb25zdCBOYW1lZEdyaWRBcmVhTWFwJiBuYW1lZEdyaWRBcmVhcywgTmFtZWRHcmlkTGlu
ZXNNYXAmIG5hbWVkR3JpZExpbmVzLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9u
KQogewogICAgIGZvciAoYXV0byYgYXJlYSA6IG5hbWVkR3JpZEFyZWFzKSB7CiAgICAgICAgIEdy
aWRTcGFuIGFyZWFTcGFuID0gZGlyZWN0aW9uID09IEZvclJvd3MgPyBhcmVhLnZhbHVlLnJvd3Mg
OiBhcmVhLnZhbHVlLmNvbHVtbnM7CkBAIC0xMTExLDcgKzExMTIsNyBAQCBpbmxpbmUgdm9pZCBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUltcGxpY2l0TmFtZWRHcmlkTGluZXNGcm9tR3Jp
ZEFyZWEoY29ucwogICAgIH0KIH0KIAotaW5saW5lIFZlY3RvcjxHcmlkVHJhY2tTaXplPiBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHcmlkVHJhY2tTaXplTGlzdChTdHlsZTo6QnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBWZWN0
b3I8R3JpZFRyYWNrU2l6ZT4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRUcmFja1NpemVM
aXN0KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7
CiAgICAgQVNTRVJUKHZhbHVlLmlzVmFsdWVMaXN0KCkpOwogICAgIGF1dG8mIHZhbHVlTGlzdCA9
IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpOwpAQCAtMTEyNiwxMiArMTEyNywxMiBAQCBp
bmxpbmUgVmVjdG9yPEdyaWRUcmFja1NpemU+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dEdyaWRUcmFja1NpemVMaXN0KFN0eQogICAgIHJldHVybiB0cmFja1NpemVzOwogfQogCi1pbmxp
bmUgR3JpZFRyYWNrU2l6ZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHcmlkVHJhY2tT
aXplKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZh
bHVlKQoraW5saW5lIEdyaWRUcmFja1NpemUgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRU
cmFja1NpemUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1
ZSkKIHsKICAgICByZXR1cm4gY3JlYXRlR3JpZFRyYWNrU2l6ZSh2YWx1ZSwgYnVpbGRlclN0YXRl
KTsKIH0KIAotaW5saW5lIE9wdGlvbmFsPEdyaWRQb3NpdGlvbj4gU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0R3JpZFBvc2l0aW9uKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NW
YWx1ZSYgdmFsdWUpCitpbmxpbmUgT3B0aW9uYWw8R3JpZFBvc2l0aW9uPiBCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0R3JpZFBvc2l0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2
YWx1ZSkKIHsKICAgICBHcmlkUG9zaXRpb24gZ3JpZFBvc2l0aW9uOwogICAgIGlmIChjcmVhdGVH
cmlkUG9zaXRpb24odmFsdWUsIGdyaWRQb3NpdGlvbikpCkBAIC0xMTM5LDcgKzExNDAsNyBAQCBp
bmxpbmUgT3B0aW9uYWw8R3JpZFBvc2l0aW9uPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRHcmlkUG9zaXRpb24oU3R5bGU6OgogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKLWlu
bGluZSBHcmlkQXV0b0Zsb3cgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R3JpZEF1dG9G
bG93KFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUg
R3JpZEF1dG9GbG93IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHcmlkQXV0b0Zsb3coQnVpbGRl
clN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIGxpc3QgPSBkb3du
Y2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKTsKICAgICBpZiAoIWxpc3QubGVuZ3RoKCkpCkBAIC0x
MTc3LDcgKzExNzgsNyBAQCBpbmxpbmUgR3JpZEF1dG9GbG93IFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydEdyaWRBdXRvRmxvdyhTdHlsZTo6QnVpbGRlclN0YQogICAgIHJldHVybiBhdXRv
RmxvdzsKIH0KIAotaW5saW5lIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjc3N0b0xlbmd0aENvbnZlcnNpb25EYXRhV2l0aFRleHRab29tRmFjdG9yKFN0
eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSBDU1NUb0xlbmd0aENvbnZl
cnNpb25EYXRhIEJ1aWxkZXJDb252ZXJ0ZXI6OmNzc3RvTGVuZ3RoQ29udmVyc2lvbkRhdGFXaXRo
VGV4dFpvb21GYWN0b3IoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgaWYgKGF1
dG8qIGZyYW1lID0gYnVpbGRlclN0YXRlLmRvY3VtZW50KCkuZnJhbWUoKSkgewogICAgICAgICBm
bG9hdCB0ZXh0Wm9vbUZhY3RvciA9IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnRleHRab29tKCkgIT0g
VGV4dFpvb206OlJlc2V0ID8gZnJhbWUtPnRleHRab29tRmFjdG9yKCkgOiAxLjBmOwpAQCAtMTE4
Niw3ICsxMTg3LDcgQEAgaW5saW5lIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjc3N0b0xlbmd0aENvbnZlcnNpb25EYXQKICAgICByZXR1cm4gYnVpbGRl
clN0YXRlLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKTsKIH0KIAotaW5saW5lIE9wdGlvbmFs
PExlbmd0aD4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0V29yZFNwYWNpbmcoU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxp
bmUgT3B0aW9uYWw8TGVuZ3RoPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0V29yZFNwYWNpbmco
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAg
ICBPcHRpb25hbDxMZW5ndGg+IHdvcmRTcGFjaW5nOwogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVl
ID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKQEAgLTEyMDIsNyArMTIwMyw3
IEBAIGlubGluZSBPcHRpb25hbDxMZW5ndGg+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dFdvcmRTcGFjaW5nKFN0eWxlOjpCdWlsZGVyCiAgICAgcmV0dXJuIHdvcmRTcGFjaW5nOwogfQog
Ci1pbmxpbmUgT3B0aW9uYWw8ZmxvYXQ+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBl
cnNwZWN0aXZlKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFs
dWUmIHZhbHVlKQoraW5saW5lIE9wdGlvbmFsPGZsb2F0PiBCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0UGVyc3BlY3RpdmUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVl
JiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBD
U1NWYWx1ZU5vbmUpCkBAIC0xMjE5LDcgKzEyMjAsNyBAQCBpbmxpbmUgT3B0aW9uYWw8ZmxvYXQ+
IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBlcnNwZWN0aXZlKFN0eWxlOjpCdWlsZGVy
UwogICAgIHJldHVybiBwZXJzcGVjdGl2ZSA8IDAgPyBPcHRpb25hbDxmbG9hdD4oV1RGOjpudWxs
b3B0KSA6IE9wdGlvbmFsPGZsb2F0PihwZXJzcGVjdGl2ZSk7CiB9CiAKLWlubGluZSBPcHRpb25h
bDxMZW5ndGg+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVJbmNyZW1lbnQo
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUp
CitpbmxpbmUgT3B0aW9uYWw8TGVuZ3RoPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TWFycXVl
ZUluY3JlbWVudChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZh
bHVlKQogewogICAgIE9wdGlvbmFsPExlbmd0aD4gbWFycXVlZUxlbmd0aDsKICAgICBhdXRvJiBw
cmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CkBAIC0x
MjQ1LDcgKzEyNDYsNyBAQCBpbmxpbmUgT3B0aW9uYWw8TGVuZ3RoPiBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVlSW5jcmVtZW50KFN0eWxlOjpCdQogICAgIHJldHVybiBtYXJx
dWVlTGVuZ3RoOwogfQogCi1pbmxpbmUgT3B0aW9uYWw8RmlsdGVyT3BlcmF0aW9ucz4gU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0RmlsdGVyT3BlcmF0aW9ucyhTdHlsZTo6QnVpbGRlclN0
YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBPcHRpb25h
bDxGaWx0ZXJPcGVyYXRpb25zPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0RmlsdGVyT3BlcmF0
aW9ucyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQog
ewogICAgIEZpbHRlck9wZXJhdGlvbnMgb3BlcmF0aW9uczsKICAgICBpZiAoYnVpbGRlclN0YXRl
LmNyZWF0ZUZpbHRlck9wZXJhdGlvbnModmFsdWUsIG9wZXJhdGlvbnMpKQpAQCAtMTI1Myw3ICsx
MjU0LDcgQEAgaW5saW5lIE9wdGlvbmFsPEZpbHRlck9wZXJhdGlvbnM+IFN0eWxlQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydEZpbHRlck9wZXJhdGlvbnMKICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogfQogCi1pbmxpbmUgRm9udEZlYXR1cmVTZXR0aW5ncyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRGb250RmVhdHVyZVNldHRpbmdzKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBD
U1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgRm9udEZlYXR1cmVTZXR0aW5ncyBCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0Rm9udEZlYXR1cmVTZXR0aW5ncyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NW
YWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsK
ICAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJ
RCgpID09IENTU1ZhbHVlTm9ybWFsKTsKQEAgLTEyNjgsNyArMTI2OSw3IEBAIGlubGluZSBGb250
RmVhdHVyZVNldHRpbmdzIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRGZWF0dXJl
U2V0dGluZ3MoU3R5CiAgICAgcmV0dXJuIHNldHRpbmdzOwogfQogCi1pbmxpbmUgRm9udFNlbGVj
dGlvblZhbHVlIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRXZWlnaHRGcm9tVmFs
dWUoY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIEZvbnRTZWxlY3Rpb25WYWx1ZSBCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFdlaWdodEZyb21WYWx1ZShjb25zdCBDU1NWYWx1ZSYg
dmFsdWUpCiB7CiAgICAgQVNTRVJUKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpOwogICAg
IGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KTsKQEAgLTEyOTEsNyArMTI5Miw3IEBAIGlubGluZSBGb250U2VsZWN0aW9uVmFsdWUgU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFdlaWdodEZyb21WYWx1ZShjb25zCiAgICAgfQog
fQogCi1pbmxpbmUgRm9udFNlbGVjdGlvblZhbHVlIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydEZvbnRTdHJldGNoRnJvbVZhbHVlKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBG
b250U2VsZWN0aW9uVmFsdWUgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRTdHJldGNoRnJv
bVZhbHVlKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBBU1NFUlQoaXM8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKSk7CiAgICAgY29uc3QgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwpAQCAtMTMwNyw3ICsxMzA4LDcgQEAgaW5s
aW5lIEZvbnRTZWxlY3Rpb25WYWx1ZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250
U3RyZXRjaEZyb21WYWx1ZShjb24KIH0KIAogLy8gVGhlIGlucHV0IHZhbHVlIG5lZWRzIHRvIHBh
cnNlZCBhbmQgdmFsaWQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBXVEY6Om51bGxvcHQgaWYgdGhl
IGlucHV0IHdhcyAibm9ybWFsIi4KLWlubGluZSBPcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+
IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRTdHlsZUZyb21WYWx1ZShjb25zdCBD
U1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN0eWxlRnJvbVZhbHVlKGNvbnN0IENTU1ZhbHVlJiB2
YWx1ZSkKIHsKICAgICBBU1NFUlQoaXM8Q1NTRm9udFN0eWxlVmFsdWU+KHZhbHVlKSk7CiAgICAg
Y29uc3QgYXV0byYgZm9udFN0eWxlVmFsdWUgPSBkb3duY2FzdDxDU1NGb250U3R5bGVWYWx1ZT4o
dmFsdWUpOwpAQCAtMTMyMyw3ICsxMzI0LDcgQEAgaW5saW5lIE9wdGlvbmFsPEZvbnRTZWxlY3Rp
b25WYWx1ZT4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN0eWxlRnJvbVYKICAg
ICByZXR1cm4gaXRhbGljVmFsdWUoKTsKIH0KIAotaW5saW5lIEZvbnRTZWxlY3Rpb25WYWx1ZSBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250V2VpZ2h0KFN0eWxlOjpCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIEZvbnRTZWxl
Y3Rpb25WYWx1ZSBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFdlaWdodChCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIEFTU0VSVChp
czxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKTsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9
IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CkBAIC0xMzM3LDEzICsxMzM4LDEz
IEBAIGlubGluZSBGb250U2VsZWN0aW9uVmFsdWUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0Rm9udFdlaWdodChTdHlsZTo6QnVpbGRlCiAgICAgcmV0dXJuIGNvbnZlcnRGb250V2VpZ2h0
RnJvbVZhbHVlKHZhbHVlKTsKIH0KIAotaW5saW5lIEZvbnRTZWxlY3Rpb25WYWx1ZSBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250U3RyZXRjaChTdHlsZTo6QnVpbGRlclN0YXRlJiwg
Y29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIEZvbnRTZWxlY3Rpb25WYWx1ZSBCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0Rm9udFN0cmV0Y2goQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFs
dWUmIHZhbHVlKQogewogICAgIHJldHVybiBjb252ZXJ0Rm9udFN0cmV0Y2hGcm9tVmFsdWUodmFs
dWUpOwogfQogCiAjaWYgRU5BQkxFKFZBUklBVElPTl9GT05UUykKLWlubGluZSBGb250VmFyaWF0
aW9uU2V0dGluZ3MgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFZhcmlhdGlvblNl
dHRpbmdzKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxp
bmUgRm9udFZhcmlhdGlvblNldHRpbmdzIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250VmFy
aWF0aW9uU2V0dGluZ3MoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewog
ICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CiAgICAgICAgIEFTU0VSVChk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5v
cm1hbCk7CkBAIC0xMzYwLDIxICsxMzYxLDIxIEBAIGlubGluZSBGb250VmFyaWF0aW9uU2V0dGlu
Z3MgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFZhcmlhdGlvblNldHRpbmdzCiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi1pbmxpbmUgYm9vbCBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRUb3VjaENhbGxvdXQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNv
bnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBib29sIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRUb3VjaENhbGxvdXQoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewog
ICAgIHJldHVybiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KHZhbHVlKS5zdHJpbmdWYWx1ZSgpLCAibm9uZSIpOwogfQogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotaW5saW5lIENvbG9yIFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydFRhcEhpZ2hsaWdodENvbG9yKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxk
ZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIENvbG9yIEJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRUYXBIaWdobGlnaHRDb2xvcihCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0
ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIHJldHVybiBidWlsZGVyU3RhdGUuY29s
b3JGcm9tUHJpbWl0aXZlVmFsdWUoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSk7
CiB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKLWlubGluZSBPcHRpb25T
ZXQ8VG91Y2hBY3Rpb24+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRvdWNoQWN0aW9u
KFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgT3B0
aW9uU2V0PFRvdWNoQWN0aW9uPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG91Y2hBY3Rpb24o
QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChpczxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKTsKQEAgLTEzOTYsMTggKzEzOTcsMTggQEAgaW5saW5lIE9wdGlvblNl
dDxUb3VjaEFjdGlvbj4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG91Y2hBY3Rpb24o
U3R5bGU6OkIKICNlbmRpZgogCiAjaWYgRU5BQkxFKE9WRVJGTE9XX1NDUk9MTElOR19UT1VDSCkK
LWlubGluZSBib29sIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE92ZXJmbG93U2Nyb2xs
aW5nKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUg
Ym9vbCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0T3ZlcmZsb3dTY3JvbGxpbmcoQnVpbGRlclN0
YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIHJldHVybiBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZVRvdWNoOwogfQogI2Vu
ZGlmCiAKLWlubGluZSBTVkdMZW5ndGhWYWx1ZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRTVkdMZW5ndGhWYWx1ZShTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZh
bHVlKQoraW5saW5lIFNWR0xlbmd0aFZhbHVlIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTVkdM
ZW5ndGhWYWx1ZShCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAg
cmV0dXJuIFNWR0xlbmd0aFZhbHVlOjpmcm9tQ1NTUHJpbWl0aXZlVmFsdWUoZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKSk7CiB9CiAKLWlubGluZSBWZWN0b3I8U1ZHTGVuZ3RoVmFs
dWU+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNWR0xlbmd0aFZlY3RvcihTdHlsZTo6
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGlu
ZSBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTVkdMZW5n
dGhWZWN0b3IoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1
ZSkKIHsKICAgICBhdXRvJiB2YWx1ZUxpc3QgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVl
KTsKIApAQCAtMTQxOSw3ICsxNDIwLDcgQEAgaW5saW5lIFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4g
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U1ZHTGVuZ3RoVmVjdG9yKFN0eWwKICAgICBy
ZXR1cm4gc3ZnTGVuZ3RoczsKIH0KIAotaW5saW5lIFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4gU3R5
bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3Ryb2tlRGFzaEFycmF5KFN0eWxlOjpCdWlsZGVy
U3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFZlY3Rv
cjxTVkdMZW5ndGhWYWx1ZT4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFN0cm9rZURhc2hBcnJh
eShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewog
ICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CiAgICAgICAgIEFTU0VSVChk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5v
bmUpOwpAQCAtMTQyOSw3ICsxNDMwLDcgQEAgaW5saW5lIFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4g
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3Ryb2tlRGFzaEFycmF5KFN0eWwKICAgICBy
ZXR1cm4gY29udmVydFNWR0xlbmd0aFZlY3RvcihidWlsZGVyU3RhdGUsIHZhbHVlKTsKIH0KIAot
aW5saW5lIFBhaW50T3JkZXIgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UGFpbnRPcmRl
cihTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFBh
aW50T3JkZXIgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBhaW50T3JkZXIoQnVpbGRlclN0YXRl
JiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpKSB7CiAgICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCk7CkBAIC0xNDUwLDcgKzE0NTEsNyBA
QCBpbmxpbmUgUGFpbnRPcmRlciBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQYWludE9y
ZGVyKFN0eWxlOjpCdWlsZGVyU3RhdGUmLAogICAgIH0KIH0KIAotaW5saW5lIGZsb2F0IFN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE9wYWNpdHkoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNv
bnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBmbG9hdCBCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0T3BhY2l0eShCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAg
YXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUp
OwogICAgIGZsb2F0IG9wYWNpdHkgPSBwcmltaXRpdmVWYWx1ZS5mbG9hdFZhbHVlKCk7CkBAIC0x
NDU5LDcgKzE0NjAsNyBAQCBpbmxpbmUgZmxvYXQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0T3BhY2l0eShTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQwogICAgIHJldHVybiBzdGQ6
Om1heCgwLjBmLCBzdGQ6Om1pbigxLjBmLCBvcGFjaXR5KSk7CiB9CiAKLWlubGluZSBTdHJpbmcg
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U1ZHVVJJUmVmZXJlbmNlKFN0eWxlOjpCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIFN0
cmluZyBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U1ZHVVJJUmVmZXJlbmNlKEJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgU3RyaW5nIHM7
CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUpOwpAQCAtMTQ2OSwxMiArMTQ3MCwxMiBAQCBpbmxpbmUgU3RyaW5nIFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydFNWR1VSSVJlZmVyZW5jZShTdHlsZTo6QnVpbGRlclN0YXRlJgog
ICAgIHJldHVybiBTVkdVUklSZWZlcmVuY2U6OmZyYWdtZW50SWRlbnRpZmllckZyb21JUklTdHJp
bmcocywgYnVpbGRlclN0YXRlLmRvY3VtZW50KCkpOwogfQogCi1pbmxpbmUgQ29sb3IgU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U1ZHQ29sb3IoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgQ29sb3IgQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydFNWR0NvbG9yKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25z
dCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgcmV0dXJuIGJ1aWxkZXJTdGF0ZS5jb2xvckZyb21Q
cmltaXRpdmVWYWx1ZShkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKTsKIH0KIAot
aW5saW5lIFN0eWxlU2VsZkFsaWdubWVudERhdGEgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0U2VsZk9yRGVmYXVsdEFsaWdubWVudERhdGEoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0
IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIEJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRTZWxmT3JEZWZhdWx0QWxpZ25tZW50RGF0YShCdWlsZGVyU3RhdGUm
LCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBh
bGlnbm1lbnREYXRhID0gUmVuZGVyU3R5bGU6OmluaXRpYWxTZWxmQWxpZ25tZW50KCk7CiAgICAg
YXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUp
OwpAQCAtMTQ4MiwxMSArMTQ4MywxMSBAQCBpbmxpbmUgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTZWxmT3JEZWZhdWx0QWxpZ25tZQogICAgICAg
ICBpZiAocGFpclZhbHVlLT5maXJzdCgpLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVMZWdhY3kpIHsK
ICAgICAgICAgICAgIGFsaWdubWVudERhdGEuc2V0UG9zaXRpb25UeXBlKEl0ZW1Qb3NpdGlvblR5
cGU6OkxlZ2FjeSk7CiAgICAgICAgICAgICBhbGlnbm1lbnREYXRhLnNldFBvc2l0aW9uKCpwYWly
VmFsdWUtPnNlY29uZCgpKTsKLSAgICAgICAgfSBlbHNlIGlmIChwYWlyVmFsdWUtPmZpcnN0KCkt
PnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUZpcnN0KSB7CisgICAgICAgIH0gZWxzZSBpZiAocGFpclZh
bHVlLT5maXJzdCgpLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVGaXJzdCkKICAgICAgICAgICAgIGFs
aWdubWVudERhdGEuc2V0UG9zaXRpb24oSXRlbVBvc2l0aW9uOjpCYXNlbGluZSk7Ci0gICAgICAg
IH0gZWxzZSBpZiAocGFpclZhbHVlLT5maXJzdCgpLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVMYXN0
KSB7CisgICAgICAgIGVsc2UgaWYgKHBhaXJWYWx1ZS0+Zmlyc3QoKS0+dmFsdWVJRCgpID09IENT
U1ZhbHVlTGFzdCkKICAgICAgICAgICAgIGFsaWdubWVudERhdGEuc2V0UG9zaXRpb24oSXRlbVBv
c2l0aW9uOjpMYXN0QmFzZWxpbmUpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIGFsaWdubWVudERhdGEuc2V0T3ZlcmZsb3coKnBhaXJWYWx1ZS0+Zmlyc3Qo
KSk7CiAgICAgICAgICAgICBhbGlnbm1lbnREYXRhLnNldFBvc2l0aW9uKCpwYWlyVmFsdWUtPnNl
Y29uZCgpKTsKICAgICAgICAgfQpAQCAtMTQ5NSw3ICsxNDk2LDcgQEAgaW5saW5lIFN0eWxlU2Vs
ZkFsaWdubWVudERhdGEgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2VsZk9yRGVmYXVs
dEFsaWdubWUKICAgICByZXR1cm4gYWxpZ25tZW50RGF0YTsKIH0KIAotaW5saW5lIFN0eWxlQ29u
dGVudEFsaWdubWVudERhdGEgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q29udGVudEFs
aWdubWVudERhdGEoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkK
K2lubGluZSBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRDb250ZW50QWxpZ25tZW50RGF0YShCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFs
dWUpCiB7CiAgICAgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSBhbGlnbm1lbnREYXRhID0gUmVu
ZGVyU3R5bGU6OmluaXRpYWxDb250ZW50QWxpZ25tZW50KCk7CiAgICAgaWYgKCFpczxDU1NDb250
ZW50RGlzdHJpYnV0aW9uVmFsdWU+KHZhbHVlKSkKQEAgLTE1MTAsNyArMTUxMSw3IEBAIGlubGlu
ZSBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dENvbnRlbnRBbGlnbm1lbnRECiAgICAgcmV0dXJuIGFsaWdubWVudERhdGE7CiB9CiAKLWlubGlu
ZSBHbHlwaE9yaWVudGF0aW9uIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdseXBoT3Jp
ZW50YXRpb24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lu
bGluZSBHbHlwaE9yaWVudGF0aW9uIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHbHlwaE9yaWVu
dGF0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBmbG9h
dCBhbmdsZSA9IGZhYnNmKGZtb2RmKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSku
ZmxvYXRWYWx1ZSgpLCAzNjAuMGYpKTsKICAgICBpZiAoYW5nbGUgPD0gNDUuMGYgfHwgYW5nbGUg
PiAzMTUuMGYpCkBAIC0xNTIyLDIxICsxNTIzLDIxIEBAIGlubGluZSBHbHlwaE9yaWVudGF0aW9u
IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdseXBoT3JpZW50YXRpb24oU3R5bGU6OkJ1
CiAgICAgcmV0dXJuIEdseXBoT3JpZW50YXRpb246OkRlZ3JlZXMyNzA7CiB9CiAKLWlubGluZSBH
bHlwaE9yaWVudGF0aW9uIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdseXBoT3JpZW50
YXRpb25PckF1dG8oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NW
YWx1ZSYgdmFsdWUpCitpbmxpbmUgR2x5cGhPcmllbnRhdGlvbiBCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0R2x5cGhPcmllbnRhdGlvbk9yQXV0byhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwg
Y29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pCiAgICAgICAgIHJldHVybiBH
bHlwaE9yaWVudGF0aW9uOjpBdXRvOwogICAgIHJldHVybiBjb252ZXJ0R2x5cGhPcmllbnRhdGlv
bihidWlsZGVyU3RhdGUsIHZhbHVlKTsKIH0KIAotaW5saW5lIE9wdGlvbmFsPExlbmd0aD4gU3R5
bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGluZUhlaWdodChTdHlsZTo6QnVpbGRlclN0YXRl
JiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgZmxvYXQgbXVsdGlwbGllcikK
K2lubGluZSBPcHRpb25hbDxMZW5ndGg+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMaW5lSGVp
Z2h0KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUsIGZs
b2F0IG11bHRpcGxpZXIpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlE
KCkgPT0gQ1NTVmFsdWVOb3JtYWwpCiAgICAgICAgIHJldHVybiBSZW5kZXJTdHlsZTo6aW5pdGlh
bExpbmVIZWlnaHQoKTsKIAogICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc0xlbmd0aCgpKSB7Ci0g
ICAgICAgIExlbmd0aCBsZW5ndGggPSBwcmltaXRpdmVWYWx1ZS5jb21wdXRlTGVuZ3RoPExlbmd0
aD4oU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjc3N0b0xlbmd0aENvbnZlcnNpb25EYXRhV2l0aFRl
eHRab29tRmFjdG9yKGJ1aWxkZXJTdGF0ZSkpOworICAgICAgICBMZW5ndGggbGVuZ3RoID0gcHJp
bWl0aXZlVmFsdWUuY29tcHV0ZUxlbmd0aDxMZW5ndGg+KEJ1aWxkZXJDb252ZXJ0ZXI6OmNzc3Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGFXaXRoVGV4dFpvb21GYWN0b3IoYnVpbGRlclN0YXRlKSk7CiAg
ICAgICAgIGlmIChtdWx0aXBsaWVyICE9IDEuZikKICAgICAgICAgICAgIGxlbmd0aCA9IExlbmd0
aChsZW5ndGgudmFsdWUoKSAqIG11bHRpcGxpZXIsIEZpeGVkKTsKICAgICAgICAgcmV0dXJuIGxl
bmd0aDsKQEAgLTE1NjAsNyArMTU2MSw3IEBAIGlubGluZSBPcHRpb25hbDxMZW5ndGg+IFN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVIZWlnaHQoU3R5bGU6OkJ1aWxkZXJTCiAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAotaW5saW5lIEZvbnRTeW50aGVzaXMgU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN5bnRoZXNpcyhTdHlsZTo6QnVpbGRlclN0YXRlJiwg
Y29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIEZvbnRTeW50aGVzaXMgQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydEZvbnRTeW50aGVzaXMoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUm
IHZhbHVlKQogewogICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CiAgICAg
ICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9
PSBDU1NWYWx1ZU5vbmUpOwpAQCAtMTU4OSw3ICsxNTkwLDcgQEAgaW5saW5lIEZvbnRTeW50aGVz
aXMgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN5bnRoZXNpcyhTdHlsZTo6QnVp
bGRlclMKICAgICByZXR1cm4gcmVzdWx0OwogfQogICAgIAotaW5saW5lIE9wdGlvblNldDxTcGVh
a0FzPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTcGVha0FzKFN0eWxlOjpCdWlsZGVy
U3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgT3B0aW9uU2V0PFNwZWFrQXM+
IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTcGVha0FzKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENT
U1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvIHJlc3VsdCA9IFJlbmRlclN0eWxlOjppbml0aWFs
U3BlYWtBcygpOwogICAgIGlmIChpczxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewpAQCAtMTU5OSw3
ICsxNjAwLDcgQEAgaW5saW5lIE9wdGlvblNldDxTcGVha0FzPiBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRTcGVha0FzKFN0eWxlOjpCdWlsZGVyU3QKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1pbmxpbmUgT3B0aW9uU2V0PEhhbmdpbmdQdW5jdHVhdGlvbj4gU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0SGFuZ2luZ1B1bmN0dWF0aW9uKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBj
b25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgT3B0aW9uU2V0PEhhbmdpbmdQdW5jdHVhdGlv
bj4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEhhbmdpbmdQdW5jdHVhdGlvbihCdWlsZGVyU3Rh
dGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byByZXN1bHQgPSBSZW5kZXJT
dHlsZTo6aW5pdGlhbEhhbmdpbmdQdW5jdHVhdGlvbigpOwogICAgIGlmIChpczxDU1NWYWx1ZUxp
c3Q+KHZhbHVlKSkgewpAQCAtMTYwOSw5ICsxNjEwLDEwIEBAIGlubGluZSBPcHRpb25TZXQ8SGFu
Z2luZ1B1bmN0dWF0aW9uPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRIYW5naW5nUHVu
Y3R1CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIEdhcExlbmd0aCBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRHYXBMZW5ndGgoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgR2FwTGVuZ3RoIEJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRHYXBMZW5ndGgoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNv
bnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICByZXR1cm4gKGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKSA/IEdhcExlbmd0aCgp
IDogR2FwTGVuZ3RoKGNvbnZlcnRMZW5ndGgoYnVpbGRlclN0YXRlLCB2YWx1ZSkpOwogfQogCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxk
ZXJDdXN0b20uaApzaW1pbGFyaXR5IGluZGV4IDgxJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlQnVpbGRlckN1c3RvbS5oCmluZGV4IDUwZGYyMzEyZDM2Li45MDRjZDAzNDcyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5oCkBAIC01MiwxMSArNTIsMTIg
QEAKICNpbmNsdWRlICJXaWxsQ2hhbmdlRGF0YS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Citu
YW1lc3BhY2UgU3R5bGUgewogCiAjZGVmaW5lIERFQ0xBUkVfUFJPUEVSVFlfQ1VTVE9NX0hBTkRM
RVJTKHByb3BlcnR5KSBcCi0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0IyNwcm9wZXJ0eShT
dHlsZTo6QnVpbGRlclN0YXRlJik7IFwKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWwjI3By
b3BlcnR5KFN0eWxlOjpCdWlsZGVyU3RhdGUmKTsgXAotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFs
dWUjI3Byb3BlcnR5KFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYpCisgICAgc3RhdGlj
IHZvaWQgYXBwbHlJbmhlcml0IyNwcm9wZXJ0eShCdWlsZGVyU3RhdGUmKTsgXAorICAgIHN0YXRp
YyB2b2lkIGFwcGx5SW5pdGlhbCMjcHJvcGVydHkoQnVpbGRlclN0YXRlJik7IFwKKyAgICBzdGF0
aWMgdm9pZCBhcHBseVZhbHVlIyNwcm9wZXJ0eShCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYpCiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUIGZvcndhcmRJbmhlcml0ZWRWYWx1ZShUJiYg
dmFsdWUpIHsgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxUPih2YWx1ZSk7IH0KIGlubGluZSBMZW5ndGgg
Zm9yd2FyZEluaGVyaXRlZFZhbHVlKGNvbnN0IExlbmd0aCYgdmFsdWUpIHsgYXV0byBjb3B5ID0g
dmFsdWU7IHJldHVybiBjb3B5OyB9CkBAIC02NSw3ICs2Niw3IEBAIGlubGluZSBMZW5ndGhCb3gg
Zm9yd2FyZEluaGVyaXRlZFZhbHVlKGNvbnN0IExlbmd0aEJveCYgdmFsdWUpIHsgYXV0byBjb3B5
ID0gdmFsCiBpbmxpbmUgR2FwTGVuZ3RoIGZvcndhcmRJbmhlcml0ZWRWYWx1ZShjb25zdCBHYXBM
ZW5ndGgmIHZhbHVlKSB7IGF1dG8gY29weSA9IHZhbHVlOyByZXR1cm4gY29weTsgfQogCiAvLyBO
b3RlIHRoYXQgd2UgYXNzdW1lIHRoZSBDU1MgcGFyc2VyIG9ubHkgYWxsb3dzIHZhbGlkIENTU1Zh
bHVlIHR5cGVzLgotY2xhc3MgU3R5bGVCdWlsZGVyQ3VzdG9tIHsKK2NsYXNzIEJ1aWxkZXJDdXN0
b20gewogcHVibGljOgogICAgIC8vIEN1c3RvbSBoYW5kbGluZyBvZiBpbmhlcml0LCBpbml0aWFs
IGFuZCB2YWx1ZSBzZXR0aW5nLgogICAgIERFQ0xBUkVfUFJPUEVSVFlfQ1VTVE9NX0hBTkRMRVJT
KEJvcmRlckltYWdlT3V0c2V0KTsKQEAgLTEwOSwxMDUgKzExMCwxMDUgQEAgcHVibGljOgogICAg
IERFQ0xBUkVfUFJPUEVSVFlfQ1VTVE9NX0hBTkRMRVJTKFpvb20pOwogCiAgICAgLy8gQ3VzdG9t
IGhhbmRsaW5nIG9mIGluaXRpYWwgKyBpbmhlcml0IHZhbHVlIHNldHRpbmcgb25seS4KLSAgICBz
dGF0aWMgdm9pZCBhcHBseUluaXRpYWxXZWJraXRNYXNrSW1hZ2UoU3R5bGU6OkJ1aWxkZXJTdGF0
ZSYpIHsgfQotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFdlYmtpdE1hc2tJbWFnZShTdHls
ZTo6QnVpbGRlclN0YXRlJikgeyB9Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsRm9udEZl
YXR1cmVTZXR0aW5ncyhTdHlsZTo6QnVpbGRlclN0YXRlJikgeyB9Ci0gICAgc3RhdGljIHZvaWQg
YXBwbHlJbmhlcml0Rm9udEZlYXR1cmVTZXR0aW5ncyhTdHlsZTo6QnVpbGRlclN0YXRlJikgeyB9
CisgICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsV2Via2l0TWFza0ltYWdlKEJ1aWxkZXJTdGF0
ZSYpIHsgfQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFdlYmtpdE1hc2tJbWFnZShCdWls
ZGVyU3RhdGUmKSB7IH0KKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxGb250RmVhdHVyZVNl
dHRpbmdzKEJ1aWxkZXJTdGF0ZSYpIHsgfQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdEZv
bnRGZWF0dXJlU2V0dGluZ3MoQnVpbGRlclN0YXRlJikgeyB9CiAjaWYgRU5BQkxFKFZBUklBVElP
Tl9GT05UUykKLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxGb250VmFyaWF0aW9uU2V0dGlu
Z3MoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYpIHsgfQotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJp
dEZvbnRWYXJpYXRpb25TZXR0aW5ncyhTdHlsZTo6QnVpbGRlclN0YXRlJikgeyB9CisgICAgc3Rh
dGljIHZvaWQgYXBwbHlJbml0aWFsRm9udFZhcmlhdGlvblNldHRpbmdzKEJ1aWxkZXJTdGF0ZSYp
IHsgfQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdEZvbnRWYXJpYXRpb25TZXR0aW5ncyhC
dWlsZGVyU3RhdGUmKSB7IH0KICNlbmRpZgogCiAgICAgLy8gQ3VzdG9tIGhhbmRsaW5nIG9mIGlu
aGVyaXQgKyB2YWx1ZSBzZXR0aW5nIG9ubHkuCi0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0
RGlzcGxheShTdHlsZTo6QnVpbGRlclN0YXRlJik7Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1
ZURpc3BsYXkoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIHZv
aWQgYXBwbHlJbmhlcml0RGlzcGxheShCdWlsZGVyU3RhdGUmKTsKKyAgICBzdGF0aWMgdm9pZCBh
cHBseVZhbHVlRGlzcGxheShCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYpOwogCiAgICAgLy8gQ3Vz
dG9tIGhhbmRsaW5nIG9mIHZhbHVlIHNldHRpbmcgb25seS4KLSAgICBzdGF0aWMgdm9pZCBhcHBs
eVZhbHVlQmFzZWxpbmVTaGlmdChTdHlsZTo6QnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUmKTsKLSAg
ICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlRGlyZWN0aW9uKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBD
U1NWYWx1ZSYpOwotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVWZXJ0aWNhbEFsaWduKFN0eWxl
OjpCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlh
bFRleHRBbGlnbihTdHlsZTo6QnVpbGRlclN0YXRlJik7Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlW
YWx1ZVRleHRBbGlnbihTdHlsZTo6QnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0
aWMgdm9pZCBhcHBseVZhbHVlV2Via2l0TG9jYWxlKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBDU1NW
YWx1ZSYpOwotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVXZWJraXRUZXh0T3JpZW50YXRpb24o
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIHZvaWQgYXBwbHlW
YWx1ZUJhc2VsaW5lU2hpZnQoQnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMg
dm9pZCBhcHBseVZhbHVlRGlyZWN0aW9uKEJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7CisgICAg
c3RhdGljIHZvaWQgYXBwbHlWYWx1ZVZlcnRpY2FsQWxpZ24oQnVpbGRlclN0YXRlJiwgQ1NTVmFs
dWUmKTsKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxUZXh0QWxpZ24oQnVpbGRlclN0YXRl
Jik7CisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZVRleHRBbGlnbihCdWlsZGVyU3RhdGUmLCBD
U1NWYWx1ZSYpOworICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVXZWJraXRMb2NhbGUoQnVpbGRl
clN0YXRlJiwgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlV2Via2l0VGV4
dE9yaWVudGF0aW9uKEJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7CiAjaWYgRU5BQkxFKFRFWFRf
QVVUT1NJWklORykKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlV2Via2l0VGV4dFNpemVBZGp1
c3QoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIHZvaWQgYXBw
bHlWYWx1ZVdlYmtpdFRleHRTaXplQWRqdXN0KEJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7CiAj
ZW5kaWYKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlV2Via2l0VGV4dFpvb20oU3R5bGU6OkJ1
aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZVdyaXRp
bmdNb2RlKFN0eWxlOjpCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyB2b2lk
IGFwcGx5VmFsdWVBbHQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7Ci0gICAgc3Rh
dGljIHZvaWQgYXBwbHlWYWx1ZVdpbGxDaGFuZ2UoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIENTU1Zh
bHVlJik7CisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZVdlYmtpdFRleHRab29tKEJ1aWxkZXJT
dGF0ZSYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZVdyaXRpbmdNb2Rl
KEJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZUFs
dChCdWlsZGVyU3RhdGUmLCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVX
aWxsQ2hhbmdlKEJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7CiAKICNpZiBFTkFCTEUoREFSS19N
T0RFX0NTUykKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlQ29sb3JTY2hlbWUoU3R5bGU6OkJ1
aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZUNvbG9y
U2NoZW1lKEJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7CiAjZW5kaWYKIAotICAgIHN0YXRpYyB2
b2lkIGFwcGx5VmFsdWVTdHJva2VXaWR0aChTdHlsZTo6QnVpbGRlclN0YXRlJiwgQ1NTVmFsdWUm
KTsKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlU3Ryb2tlQ29sb3IoU3R5bGU6OkJ1aWxkZXJT
dGF0ZSYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZVN0cm9rZVdpZHRo
KEJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7CisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZVN0
cm9rZUNvbG9yKEJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7CiAKLSAgICBzdGF0aWMgdm9pZCBh
cHBseUluaXRpYWxDdXN0b21Qcm9wZXJ0eShTdHlsZTo6QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NT
UmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5KiwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSk7Ci0gICAg
c3RhdGljIHZvaWQgYXBwbHlJbmhlcml0Q3VzdG9tUHJvcGVydHkoU3R5bGU6OkJ1aWxkZXJTdGF0
ZSYsIGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSosIGNvbnN0IEF0b21TdHJpbmcm
IG5hbWUpOwotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVDdXN0b21Qcm9wZXJ0eShTdHlsZTo6
QnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5KiwgQ1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZSYpOworICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbEN1c3RvbVBy
b3BlcnR5KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSos
IGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpOworICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdEN1
c3RvbVByb3BlcnR5KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9w
ZXJ0eSosIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpOworICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFs
dWVDdXN0b21Qcm9wZXJ0eShCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9t
UHJvcGVydHkqLCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlJik7CiAKIHByaXZhdGU6Ci0gICAgc3Rh
dGljIHZvaWQgcmVzZXRFZmZlY3RpdmVab29tKFN0eWxlOjpCdWlsZGVyU3RhdGUmKTsKKyAgICBz
dGF0aWMgdm9pZCByZXNldEVmZmVjdGl2ZVpvb20oQnVpbGRlclN0YXRlJik7CiAKICAgICBzdGF0
aWMgTGVuZ3RoIG1tTGVuZ3RoKGRvdWJsZSBtbSk7CiAgICAgc3RhdGljIExlbmd0aCBpbmNoTGVu
Z3RoKGRvdWJsZSBpbmNoKTsKICAgICBzdGF0aWMgYm9vbCBnZXRQYWdlU2l6ZUZyb21OYW1lKENT
U1ByaW1pdGl2ZVZhbHVlKiBwYWdlU2l6ZU5hbWUsIENTU1ByaW1pdGl2ZVZhbHVlKiBwYWdlT3Jp
ZW50YXRpb24sIExlbmd0aCYgd2lkdGgsIExlbmd0aCYgaGVpZ2h0KTsKIAogICAgIHRlbXBsYXRl
IDxDU1NQcm9wZXJ0eUlEIGlkPgotICAgIHN0YXRpYyB2b2lkIGFwcGx5VGV4dE9yQm94U2hhZG93
VmFsdWUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIGJvb2wg
aXNWYWxpZERpc3BsYXlWYWx1ZShTdHlsZTo6QnVpbGRlclN0YXRlJiwgRGlzcGxheVR5cGUpOwor
ICAgIHN0YXRpYyB2b2lkIGFwcGx5VGV4dE9yQm94U2hhZG93VmFsdWUoQnVpbGRlclN0YXRlJiwg
Q1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRGlzcGxheVZhbHVlKEJ1aWxkZXJT
dGF0ZSYsIERpc3BsYXlUeXBlKTsKIAogICAgIGVudW0gQ291bnRlckJlaGF2aW9yIHtJbmNyZW1l
bnQgPSAwLCBSZXNldH07CiAgICAgdGVtcGxhdGUgPENvdW50ZXJCZWhhdmlvciBjb3VudGVyQmVo
YXZpb3I+Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0Q291bnRlcihTdHlsZTo6QnVpbGRl
clN0YXRlJik7CisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0Q291bnRlcihCdWlsZGVyU3Rh
dGUmKTsKICAgICB0ZW1wbGF0ZSA8Q291bnRlckJlaGF2aW9yIGNvdW50ZXJCZWhhdmlvcj4KLSAg
ICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlQ291bnRlcihTdHlsZTo6QnVpbGRlclN0YXRlJiwgQ1NT
VmFsdWUmKTsKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlQ291bnRlcihCdWlsZGVyU3RhdGUm
LCBDU1NWYWx1ZSYpOwogCiAgICAgc3RhdGljIGZsb2F0IGxhcmdlckZvbnRTaXplKGZsb2F0IHNp
emUpOwogICAgIHN0YXRpYyBmbG9hdCBzbWFsbGVyRm9udFNpemUoZmxvYXQgc2l6ZSk7Ci0gICAg
c3RhdGljIGZsb2F0IGRldGVybWluZVJ1YnlUZXh0U2l6ZU11bHRpcGxpZXIoU3R5bGU6OkJ1aWxk
ZXJTdGF0ZSYpOworICAgIHN0YXRpYyBmbG9hdCBkZXRlcm1pbmVSdWJ5VGV4dFNpemVNdWx0aXBs
aWVyKEJ1aWxkZXJTdGF0ZSYpOwogfTsKIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseVZhbHVlRGlyZWN0aW9uKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwg
Q1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZURp
cmVjdGlvbihCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewog
ICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldERpcmVjdGlvbihkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpKTsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRIYXNFeHBsaWNp
dGx5U2V0RGlyZWN0aW9uKHRydWUpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0
b206OmFwcGx5SW5pdGlhbFRleHRBbGlnbihTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3Rh
dGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxUZXh0QWxpZ24oQnVp
bGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0
VGV4dEFsaWduKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEFsaWduKCkpOwogICAgIGJ1aWxkZXJT
dGF0ZS5zdHlsZSgpLnNldEhhc0V4cGxpY2l0bHlTZXRUZXh0QWxpZ24odHJ1ZSk7CiB9CiAKLWlu
bGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVRleHRBbGlnbihTdHlsZTo6
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2b2lk
IEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVUZXh0QWxpZ24oQnVpbGRlclN0YXRlJiBidWlsZGVy
U3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRU
ZXh0QWxpZ24oU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dEFsaWduKGJ1aWxkZXJT
dGF0ZSwgdmFsdWUpKTsKKyAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRUZXh0QWxpZ24oQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRBbGlnbihidWlsZGVyU3RhdGUsIHZhbHVlKSk7CiAg
ICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0SGFzRXhwbGljaXRseVNldFRleHRBbGlnbih0cnVl
KTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjpyZXNldEVmZmVjdGl2ZVpv
b20oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRl
ckN1c3RvbTo6cmVzZXRFZmZlY3RpdmVab29tKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQog
ewogICAgIC8vIFJlc2V0IHRoZSB6b29tIGluIGVmZmVjdC4gVGhpcyBhbGxvd3MgdGhlIHNldFpv
b20gbWV0aG9kIHRvIGFjY3VyYXRlbHkgY29tcHV0ZSBhIG5ldyB6b29tIGluIGVmZmVjdC4KICAg
ICBidWlsZGVyU3RhdGUuc2V0RWZmZWN0aXZlWm9vbShidWlsZGVyU3RhdGUucGFyZW50U3R5bGUo
KS5lZmZlY3RpdmVab29tKCkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206
OmFwcGx5SW5pdGlhbFpvb20oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5s
aW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsWm9vbShCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSkKIHsKICAgICByZXNldEVmZmVjdGl2ZVpvb20oYnVpbGRlclN0YXRlKTsKICAg
ICBidWlsZGVyU3RhdGUuc2V0Wm9vbShSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSk7CiB9CiAK
LWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Wm9vbShTdHlsZTo6
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjph
cHBseUluaGVyaXRab29tKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIHJlc2V0
RWZmZWN0aXZlWm9vbShidWlsZGVyU3RhdGUpOwogICAgIGJ1aWxkZXJTdGF0ZS5zZXRab29tKGJ1
aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLnpvb20oKSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxl
QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVpvb20oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBs
eVZhbHVlWm9vbShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQog
ewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKTsKIApAQCAtMjMxLDE3ICsyMzIsMTcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVy
Q3VzdG9tOjphcHBseVZhbHVlWm9vbShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUK
ICAgICAgICAgICAgIGJ1aWxkZXJTdGF0ZS5zZXRab29tKG51bWJlcik7CiAgICAgfQogfQotaW5s
aW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDdXN0b206Om1tTGVuZ3RoKGRvdWJsZSBtbSkKK2lubGlu
ZSBMZW5ndGggQnVpbGRlckN1c3RvbTo6bW1MZW5ndGgoZG91YmxlIG1tKQogewogICAgIFJlZjxD
U1NQcmltaXRpdmVWYWx1ZT4gdmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtbSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19NTSkpOwogICAgIHJldHVybiB2YWx1ZS5nZXQoKS5jb21wdXRl
TGVuZ3RoPExlbmd0aD4oQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpKTsKIH0KLWlubGluZSBM
ZW5ndGggU3R5bGVCdWlsZGVyQ3VzdG9tOjppbmNoTGVuZ3RoKGRvdWJsZSBpbmNoKQoraW5saW5l
IExlbmd0aCBCdWlsZGVyQ3VzdG9tOjppbmNoTGVuZ3RoKGRvdWJsZSBpbmNoKQogewogICAgIFJl
ZjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShpbmNo
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lOKSk7CiAgICAgcmV0dXJuIHZhbHVlLmdldCgpLmNv
bXB1dGVMZW5ndGg8TGVuZ3RoPihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkpOwogfQotYm9v
bCBTdHlsZUJ1aWxkZXJDdXN0b206OmdldFBhZ2VTaXplRnJvbU5hbWUoQ1NTUHJpbWl0aXZlVmFs
dWUqIHBhZ2VTaXplTmFtZSwgQ1NTUHJpbWl0aXZlVmFsdWUqIHBhZ2VPcmllbnRhdGlvbiwgTGVu
Z3RoJiB3aWR0aCwgTGVuZ3RoJiBoZWlnaHQpCitib29sIEJ1aWxkZXJDdXN0b206OmdldFBhZ2VT
aXplRnJvbU5hbWUoQ1NTUHJpbWl0aXZlVmFsdWUqIHBhZ2VTaXplTmFtZSwgQ1NTUHJpbWl0aXZl
VmFsdWUqIHBhZ2VPcmllbnRhdGlvbiwgTGVuZ3RoJiB3aWR0aCwgTGVuZ3RoJiBoZWlnaHQpCiB7
CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExlbmd0aD4gYTVXaWR0aChtbUxlbmd0aCgxNDgp
KTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TGVuZ3RoPiBhNUhlaWdodChtbUxlbmd0aCgy
MTApKTsKQEAgLTMxNSw3ICszMTYsNyBAQCBib29sIFN0eWxlQnVpbGRlckN1c3RvbTo6Z2V0UGFn
ZVNpemVGcm9tTmFtZShDU1NQcmltaXRpdmVWYWx1ZSogcGFnZVNpemVOYW1lLCBDUwogICAgIHJl
dHVybiB0cnVlOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFs
dWVWZXJ0aWNhbEFsaWduKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFs
dWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVZlcnRpY2Fs
QWxpZ24oQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAg
ICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSkKQEAgLTMyNiwyMSArMzI3LDIx
IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVZlcnRpY2FsQWxp
Z24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpCiAKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09M
VVRJT04pCiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0SW1h
Z2VSZXNvbHV0aW9uKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2
b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEltYWdlUmVzb2x1dGlvbihCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRJbWFnZVJl
c29sdXRpb25Tb3VyY2UoYnVpbGRlclN0YXRlLnBhcmVudFN0eWxlKCkuaW1hZ2VSZXNvbHV0aW9u
U291cmNlKCkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldEltYWdlUmVzb2x1dGlvblNu
YXAoYnVpbGRlclN0YXRlLnBhcmVudFN0eWxlKCkuaW1hZ2VSZXNvbHV0aW9uU25hcCgpKTsKICAg
ICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRJbWFnZVJlc29sdXRpb24oYnVpbGRlclN0YXRlLnBh
cmVudFN0eWxlKCkuaW1hZ2VSZXNvbHV0aW9uKCkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1
aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEltYWdlUmVzb2x1dGlvbihTdHlsZTo6QnVpbGRlclN0
YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRp
YWxJbWFnZVJlc29sdXRpb24oQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYnVp
bGRlclN0YXRlLnN0eWxlKCkuc2V0SW1hZ2VSZXNvbHV0aW9uU291cmNlKFJlbmRlclN0eWxlOjpp
bml0aWFsSW1hZ2VSZXNvbHV0aW9uU291cmNlKCkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgp
LnNldEltYWdlUmVzb2x1dGlvblNuYXAoUmVuZGVyU3R5bGU6OmluaXRpYWxJbWFnZVJlc29sdXRp
b25TbmFwKCkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldEltYWdlUmVzb2x1dGlvbihS
ZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdlUmVzb2x1dGlvbigpKTsKIH0KIAotaW5saW5lIHZvaWQg
U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlSW1hZ2VSZXNvbHV0aW9uKFN0eWxlOjpCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVp
bGRlckN1c3RvbTo6YXBwbHlWYWx1ZUltYWdlUmVzb2x1dGlvbihCdWlsZGVyU3RhdGUmIGJ1aWxk
ZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIEltYWdlUmVzb2x1dGlvblNvdXJjZSBz
b3VyY2UgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdlUmVzb2x1dGlvblNvdXJjZSgpOwogICAg
IEltYWdlUmVzb2x1dGlvblNuYXAgc25hcCA9IFJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZXNv
bHV0aW9uU25hcCgpOwpAQCAtMzYxLDExICszNjIsMTEgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWls
ZGVyQ3VzdG9tOjphcHBseVZhbHVlSW1hZ2VSZXNvbHV0aW9uKFN0eWxlOjpCdWlsZGVyU3RhdGUm
IGIKIAogI2VuZGlmIC8vIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElPTikKIAotaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRTaXplKFN0eWxlOjpCdWlsZGVyU3Rh
dGUmKSB7IH0KK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFNpemUoQnVp
bGRlclN0YXRlJikgeyB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJ
bml0aWFsU2l6ZShTdHlsZTo6QnVpbGRlclN0YXRlJikgeyB9CitpbmxpbmUgdm9pZCBCdWlsZGVy
Q3VzdG9tOjphcHBseUluaXRpYWxTaXplKEJ1aWxkZXJTdGF0ZSYpIHsgfQogCi1pbmxpbmUgdm9p
ZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVTaXplKFN0eWxlOjpCdWlsZGVyU3RhdGUm
IGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3Rv
bTo6YXBwbHlWYWx1ZVNpemUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2
YWx1ZSkKIHsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5yZXNldFBhZ2VTaXplVHlwZSgpOwog
CkBAIC00NDEsNyArNDQyLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eVZhbHVlU2l6ZShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUKICAgICBidWlsZGVy
U3RhdGUuc3R5bGUoKS5zZXRQYWdlU2l6ZSh7IFdURk1vdmUod2lkdGgpLCBXVEZNb3ZlKGhlaWdo
dCkgfSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0
VGV4dEluZGVudChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9p
ZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRUZXh0SW5kZW50KEJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlKQogewogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldFRleHRJbmRlbnQoTGVu
Z3RoIHsgYnVpbGRlclN0YXRlLnBhcmVudFN0eWxlKCkudGV4dEluZGVudCgpIH0pOwogI2lmIEVO
QUJMRShDU1MzX1RFWFQpCkBAIC00NTAsNyArNDUxLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWls
ZGVyQ3VzdG9tOjphcHBseUluaGVyaXRUZXh0SW5kZW50KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1
aWwKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5p
dGlhbFRleHRJbmRlbnQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5l
IHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsVGV4dEluZGVudChCdWlsZGVyU3RhdGUm
IGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRUZXh0SW5kZW50
KFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEluZGVudCgpKTsKICNpZiBFTkFCTEUoQ1NTM19URVhU
KQpAQCAtNDU5LDcgKzQ2MCw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlJbml0aWFsVGV4dEluZGVudChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsCiAjZW5kaWYKIH0K
IAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlVGV4dEluZGVudChT
dHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGlu
ZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVUZXh0SW5kZW50KEJ1aWxkZXJTdGF0ZSYg
YnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgTGVuZ3RoIGxlbmd0aE9yUGVy
Y2VudGFnZVZhbHVlOwogI2lmIEVOQUJMRShDU1MzX1RFWFQpCkBAIC00OTMsNyArNDk0LDcgQEAg
ZW51bSBCb3JkZXJJbWFnZU1vZGlmaWVyVHlwZSB7IE91dHNldCwgUmVwZWF0LCBTbGljZSwgV2lk
dGggfTsKIHRlbXBsYXRlIDxCb3JkZXJJbWFnZVR5cGUgdHlwZSwgQm9yZGVySW1hZ2VNb2RpZmll
clR5cGUgbW9kaWZpZXI+CiBjbGFzcyBBcHBseVByb3BlcnR5Qm9yZGVySW1hZ2VNb2RpZmllciB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoU3R5bGU6OkJ1aWxk
ZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVl
KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogICAgIHsKICAgICAgICAgTmluZVBpZWNlSW1h
Z2UgaW1hZ2UoZ2V0VmFsdWUoYnVpbGRlclN0YXRlLnN0eWxlKCkpKTsKICAgICAgICAgc3dpdGNo
IChtb2RpZmllcikgewpAQCAtNTEzLDcgKzUxNCw3IEBAIHB1YmxpYzoKICAgICAgICAgc2V0VmFs
dWUoYnVpbGRlclN0YXRlLnN0eWxlKCksIGltYWdlKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9p
ZCBhcHBseUluaXRpYWxWYWx1ZShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCisg
ICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3Rh
dGUpCiAgICAgewogICAgICAgICBOaW5lUGllY2VJbWFnZSBpbWFnZShnZXRWYWx1ZShidWlsZGVy
U3RhdGUuc3R5bGUoKSkpOwogICAgICAgICBzd2l0Y2ggKG1vZGlmaWVyKSB7CkBAIC01NDEsNyAr
NTQyLDcgQEAgcHVibGljOgogICAgICAgICBzZXRWYWx1ZShidWlsZGVyU3RhdGUuc3R5bGUoKSwg
aW1hZ2UpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoU3R5bGU6OkJ1aWxk
ZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCisgICAgc3RhdGljIHZvaWQg
YXBwbHlWYWx1ZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQog
ICAgIHsKICAgICAgICAgTmluZVBpZWNlSW1hZ2UgaW1hZ2UoZ2V0VmFsdWUoYnVpbGRlclN0YXRl
LnN0eWxlKCkpKTsKICAgICAgICAgc3dpdGNoIChtb2RpZmllcikgewpAQCAtNTc0LDE1ICs1NzUs
MTUgQEAgcHJpdmF0ZToKIH07CiAKICNkZWZpbmUgREVGSU5FX0JPUkRFUl9JTUFHRV9NT0RJRklF
Ul9IQU5ETEVSKHR5cGUsIG1vZGlmaWVyKSBcCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0
b206OmFwcGx5SW5oZXJpdCMjdHlwZSMjbW9kaWZpZXIoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlKSBcCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXQjI3R5
cGUjI21vZGlmaWVyKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKSBcCiB7IFwKICAgICBBcHBs
eVByb3BlcnR5Qm9yZGVySW1hZ2VNb2RpZmllcjx0eXBlLCBtb2RpZmllcj46OmFwcGx5SW5oZXJp
dFZhbHVlKGJ1aWxkZXJTdGF0ZSk7IFwKIH0gXAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3Vz
dG9tOjphcHBseUluaXRpYWwjI3R5cGUjI21vZGlmaWVyKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSkgXAoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsIyN0
eXBlIyNtb2RpZmllcihCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkgXAogeyBcCiAgICAgQXBw
bHlQcm9wZXJ0eUJvcmRlckltYWdlTW9kaWZpZXI8dHlwZSwgbW9kaWZpZXI+OjphcHBseUluaXRp
YWxWYWx1ZShidWlsZGVyU3RhdGUpOyBcCiB9IFwKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZSMjdHlwZSMjbW9kaWZpZXIoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpIFwKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206
OmFwcGx5VmFsdWUjI3R5cGUjI21vZGlmaWVyKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBD
U1NWYWx1ZSYgdmFsdWUpIFwKIHsgXAogICAgIEFwcGx5UHJvcGVydHlCb3JkZXJJbWFnZU1vZGlm
aWVyPHR5cGUsIG1vZGlmaWVyPjo6YXBwbHlWYWx1ZShidWlsZGVyU3RhdGUsIHZhbHVlKTsgXAog
fQpAQCAtNTk4LDEzICs1OTksMTMgQEAgREVGSU5FX0JPUkRFUl9JTUFHRV9NT0RJRklFUl9IQU5E
TEVSKFdlYmtpdE1hc2tCb3hJbWFnZSwgV2lkdGgpCiAKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0la
SU5HKQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdExpbmVI
ZWlnaHQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVp
bGRlckN1c3RvbTo6YXBwbHlJbmhlcml0TGluZUhlaWdodChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJT
dGF0ZSkKIHsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRMaW5lSGVpZ2h0KExlbmd0aCB7
IGJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLmxpbmVIZWlnaHQoKSB9KTsKICAgICBidWlsZGVy
U3RhdGUuc3R5bGUoKS5zZXRTcGVjaWZpZWRMaW5lSGVpZ2h0KExlbmd0aCB7IGJ1aWxkZXJTdGF0
ZS5wYXJlbnRTdHlsZSgpLnNwZWNpZmllZExpbmVIZWlnaHQoKSB9KTsKIH0KIAotaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxMaW5lSGVpZ2h0KFN0eWxlOjpCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5
SW5pdGlhbExpbmVIZWlnaHQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYnVp
bGRlclN0YXRlLnN0eWxlKCkuc2V0TGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVI
ZWlnaHQoKSk7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0U3BlY2lmaWVkTGluZUhlaWdo
dChSZW5kZXJTdHlsZTo6aW5pdGlhbFNwZWNpZmllZExpbmVIZWlnaHQoKSk7CkBAIC02NTQsOSAr
NjU1LDkgQEAgc3RhdGljIGlubGluZSBmbG9hdCBjb21wdXRlTGluZUhlaWdodE11bHRpcGxpZXJE
dWVUb0ZvbnRTaXplKGNvbnN0IERvY3VtZW50JiBkb2MKICAgICByZXR1cm4gMTsKIH0KIAotaW5s
aW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlTGluZUhlaWdodChTdHlsZTo6
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2b2lk
IEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVMaW5lSGVpZ2h0KEJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgT3B0aW9uYWw8TGVuZ3RoPiBsaW5lSGVp
Z2h0ID0gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGluZUhlaWdodChidWlsZGVyU3Rh
dGUsIHZhbHVlLCAxKTsKKyAgICBPcHRpb25hbDxMZW5ndGg+IGxpbmVIZWlnaHQgPSBCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0TGluZUhlaWdodChidWlsZGVyU3RhdGUsIHZhbHVlLCAxKTsKICAg
ICBpZiAoIWxpbmVIZWlnaHQpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjY5LDcgKzY3MCw3IEBA
IGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUxpbmVIZWlnaHQoU3R5
bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlCiAgICAgICAgIGlmIChtdWx0aXBsaWVyID09IDEpCiAg
ICAgICAgICAgICBjb21wdXRlZExpbmVIZWlnaHQgPSBsaW5lSGVpZ2h0LnZhbHVlKCk7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGNvbXB1dGVkTGluZUhlaWdodCA9IFN0eWxlQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydExpbmVIZWlnaHQoYnVpbGRlclN0YXRlLCB2YWx1ZSwgbXVsdGlwbGll
cikudmFsdWUoKTsKKyAgICAgICAgICAgIGNvbXB1dGVkTGluZUhlaWdodCA9IEJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRMaW5lSGVpZ2h0KGJ1aWxkZXJTdGF0ZSwgdmFsdWUsIG11bHRpcGxpZXIp
LnZhbHVlKCk7CiAgICAgfQogCiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0TGluZUhlaWdo
dChXVEZNb3ZlKGNvbXB1dGVkTGluZUhlaWdodCkpOwpAQCAtNjc4LDE5ICs2NzksMTkgQEAgaW5s
aW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlTGluZUhlaWdodChTdHlsZTo6
QnVpbGRlclN0YXRlJiBidWlsZGUKIAogI2VuZGlmCiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlJbmhlcml0T3V0bGluZVN0eWxlKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdE91dGxp
bmVTdHlsZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBidWlsZGVyU3RhdGUu
c3R5bGUoKS5zZXRPdXRsaW5lU3R5bGVJc0F1dG8oYnVpbGRlclN0YXRlLnBhcmVudFN0eWxlKCku
b3V0bGluZVN0eWxlSXNBdXRvKCkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldE91dGxp
bmVTdHlsZShidWlsZGVyU3RhdGUucGFyZW50U3R5bGUoKS5vdXRsaW5lU3R5bGUoKSk7CiB9CiAK
LWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsT3V0bGluZVN0eWxl
KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJD
dXN0b206OmFwcGx5SW5pdGlhbE91dGxpbmVTdHlsZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0
ZSkKIHsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRPdXRsaW5lU3R5bGVJc0F1dG8oUmVu
ZGVyU3R5bGU6OmluaXRpYWxPdXRsaW5lU3R5bGVJc0F1dG8oKSk7CiAgICAgYnVpbGRlclN0YXRl
LnN0eWxlKCkuc2V0T3V0bGluZVN0eWxlKFJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyU3R5bGUo
KSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZU91dGxp
bmVTdHlsZShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1
ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVPdXRsaW5lU3R5bGUoQnVp
bGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBw
cmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAKQEAg
LTY5OCwxMyArNjk5LDEzIEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlW
YWx1ZU91dGxpbmVTdHlsZShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsCiAgICAgYnVpbGRlclN0
YXRlLnN0eWxlKCkuc2V0T3V0bGluZVN0eWxlKHByaW1pdGl2ZVZhbHVlKTsKIH0KIAotaW5saW5l
IHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxDbGlwKFN0eWxlOjpCdWlsZGVy
U3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5p
dGlhbENsaXAoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYnVpbGRlclN0YXRl
LnN0eWxlKCkuc2V0Q2xpcChMZW5ndGgoKSwgTGVuZ3RoKCksIExlbmd0aCgpLCBMZW5ndGgoKSk7
CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0SGFzQ2xpcChmYWxzZSk7CiB9CiAKLWlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Q2xpcChTdHlsZTo6QnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUlu
aGVyaXRDbGlwKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGF1dG8mIHBhcmVu
dFN0eWxlID0gYnVpbGRlclN0YXRlLnBhcmVudFN0eWxlKCk7CiAgICAgaWYgKCFwYXJlbnRTdHls
ZS5oYXNDbGlwKCkpCkBAIC03MTQsNyArNzE1LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVy
Q3VzdG9tOjphcHBseUluaGVyaXRDbGlwKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGEK
ICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRIYXNDbGlwKHRydWUpOwogfQogCi1pbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDbGlwKFN0eWxlOjpCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZUNsaXAoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVl
JiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgaWYgKGF1dG8qIHJlY3QgPSBwcmltaXRpdmVWYWx1ZS5y
ZWN0VmFsdWUoKSkgewpAQCAtNzMxLDcgKzczMiw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZUNsaXAoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
CiAgICAgfQogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVX
ZWJraXRMb2NhbGUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYg
dmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0TG9jYWxl
KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0
byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwog
CkBAIC03NDMsMTkgKzc0NCwxOSBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5VmFsdWVXZWJraXRMb2NhbGUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbAogICAgIGJ1aWxk
ZXJTdGF0ZS5zZXRGb250RGVzY3JpcHRpb24oV1RGTW92ZShmb250RGVzY3JpcHRpb24pKTsKIH0K
IAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV3JpdGluZ01vZGUo
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxp
bmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV3JpdGluZ01vZGUoQnVpbGRlclN0YXRl
JiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBidWlsZGVyU3RhdGUuc2V0
V3JpdGluZ01vZGUoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSk7CiAgICAgYnVp
bGRlclN0YXRlLnN0eWxlKCkuc2V0SGFzRXhwbGljaXRseVNldFdyaXRpbmdNb2RlKHRydWUpOwog
fQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRUZXh0
T3JpZW50YXRpb24oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYg
dmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0VGV4dE9y
aWVudGF0aW9uKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7
CiAgICAgYnVpbGRlclN0YXRlLnNldFRleHRPcmllbnRhdGlvbihkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpKTsKIH0KIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCi1pbmxp
bmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRUZXh0U2l6ZUFkanVz
dChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lu
bGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRUZXh0U2l6ZUFkanVzdChC
dWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8m
IHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAg
ICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykKQEAgLTc2OSw3
ICs3NzAsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJr
aXRUZXh0U2l6ZUFkanVzdChTdHlsZTo6QnVpbGRlclN0YQogfQogI2VuZGlmCiAKLWlubGluZSB2
b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdFRleHRab29tKFN0eWxlOjpC
dWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQg
QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdFRleHRab29tKEJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUg
PSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVW
YWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpCkBAIC03ODAsMTUgKzc4MSwxNSBAQCBp
bmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRUZXh0Wm9vbShT
dHlsZTo6QnVpbGRlclN0YXRlJiBidQogfQogCiAjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCi1p
bmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb2xvclNjaGVtZShTdHls
ZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2
b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb2xvclNjaGVtZShCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewotICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgp
LnNldENvbG9yU2NoZW1lKFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENvbG9yU2NoZW1l
KGJ1aWxkZXJTdGF0ZSwgdmFsdWUpKTsKKyAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRDb2xv
clNjaGVtZShCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q29sb3JTY2hlbWUoYnVpbGRlclN0YXRl
LCB2YWx1ZSkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldEhhc0V4cGxpY2l0bHlTZXRD
b2xvclNjaGVtZSh0cnVlKTsKIH0KICNlbmRpZgogCiB0ZW1wbGF0ZTxDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5PgotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVRleHRPckJveFNo
YWRvd1ZhbHVlKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZh
bHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlUZXh0T3JCb3hTaGFkb3dWYWx1
ZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlm
IChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CiAgICAgICAgIEFTU0VSVChkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpOwpA
QCAtODIyLDUyICs4MjMsNTIgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eVRleHRPckJveFNoYWRvd1ZhbHVlKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGIKICAgICB9CiB9CiAK
LWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsVGV4dFNoYWRvdyhT
dHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3Vz
dG9tOjphcHBseUluaXRpYWxUZXh0U2hhZG93KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQog
ewogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldFRleHRTaGFkb3cobnVsbHB0cik7CiB9CiAK
LWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0VGV4dFNoYWRvdyhT
dHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3Vz
dG9tOjphcHBseUluaGVyaXRUZXh0U2hhZG93KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQog
ewogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldFRleHRTaGFkb3coYnVpbGRlclN0YXRlLnBh
cmVudFN0eWxlKCkudGV4dFNoYWRvdygpID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqYnVpbGRl
clN0YXRlLnBhcmVudFN0eWxlKCkudGV4dFNoYWRvdygpKSA6IG51bGxwdHIpOwogfQogCi1pbmxp
bmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVUZXh0U2hhZG93KFN0eWxlOjpC
dWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQg
QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVRleHRTaGFkb3coQnVpbGRlclN0YXRlJiBidWlsZGVy
U3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhcHBseVRleHRPckJveFNoYWRvd1ZhbHVl
PENTU1Byb3BlcnR5VGV4dFNoYWRvdz4oYnVpbGRlclN0YXRlLCB2YWx1ZSk7CiB9CiAKLWlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsQm94U2hhZG93KFN0eWxlOjpC
dWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFw
cGx5SW5pdGlhbEJveFNoYWRvdyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBi
dWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRCb3hTaGFkb3cobnVsbHB0cik7CiB9CiAKLWlubGluZSB2
b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Qm94U2hhZG93KFN0eWxlOjpCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5
SW5oZXJpdEJveFNoYWRvdyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBidWls
ZGVyU3RhdGUuc3R5bGUoKS5zZXRCb3hTaGFkb3coYnVpbGRlclN0YXRlLnBhcmVudFN0eWxlKCku
Ym94U2hhZG93KCkgPyBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KCpidWlsZGVyU3RhdGUucGFyZW50
U3R5bGUoKS5ib3hTaGFkb3coKSkgOiBudWxscHRyKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQm94U2hhZG93KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6
YXBwbHlWYWx1ZUJveFNoYWRvdyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUm
IHZhbHVlKQogewogICAgIGFwcGx5VGV4dE9yQm94U2hhZG93VmFsdWU8Q1NTUHJvcGVydHlCb3hT
aGFkb3c+KGJ1aWxkZXJTdGF0ZSwgdmFsdWUpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxk
ZXJDdXN0b206OmFwcGx5SW5pdGlhbFdlYmtpdEJveFNoYWRvdyhTdHlsZTo6QnVpbGRlclN0YXRl
JiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxX
ZWJraXRCb3hTaGFkb3coQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYXBwbHlJ
bml0aWFsQm94U2hhZG93KGJ1aWxkZXJTdGF0ZSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlJbmhlcml0V2Via2l0Qm94U2hhZG93KFN0eWxlOjpCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJp
dFdlYmtpdEJveFNoYWRvdyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBhcHBs
eUluaGVyaXRCb3hTaGFkb3coYnVpbGRlclN0YXRlKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0Qm94U2hhZG93KFN0eWxlOjpCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdEJveFNoYWRvdyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0
ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGFwcGx5VGV4dE9yQm94U2hhZG93VmFsdWU8Q1NT
UHJvcGVydHlXZWJraXRCb3hTaGFkb3c+KGJ1aWxkZXJTdGF0ZSwgdmFsdWUpOwogfQogCi1pbmxp
bmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEZvbnRGYW1pbHkoU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6
YXBwbHlJbml0aWFsRm9udEZhbWlseShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAg
ICBhdXRvIGZvbnREZXNjcmlwdGlvbiA9IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLmZvbnREZXNjcmlw
dGlvbigpOwogICAgIGF1dG8gaW5pdGlhbERlc2MgPSBGb250Q2FzY2FkZURlc2NyaXB0aW9uKCk7
CkBAIC04ODMsNyArODg0LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eUluaXRpYWxGb250RmFtaWx5KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWwKICAgICBidWlsZGVy
U3RhdGUuc2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSk7CiB9CiAK
LWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Rm9udEZhbWlseShT
dHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3Vz
dG9tOjphcHBseUluaGVyaXRGb250RmFtaWx5KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQog
ewogICAgIGF1dG8gZm9udERlc2NyaXB0aW9uID0gYnVpbGRlclN0YXRlLnN0eWxlKCkuZm9udERl
c2NyaXB0aW9uKCk7CiAgICAgYXV0byBwYXJlbnRGb250RGVzY3JpcHRpb24gPSBidWlsZGVyU3Rh
dGUucGFyZW50U3R5bGUoKS5mb250RGVzY3JpcHRpb24oKTsKQEAgLTg5Myw3ICs4OTQsNyBAQCBp
bmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEZvbnRGYW1pbHkoU3R5
bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbAogICAgIGJ1aWxkZXJTdGF0ZS5zZXRGb250RGVzY3JpcHRp
b24oV1RGTW92ZShmb250RGVzY3JpcHRpb24pKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWls
ZGVyQ3VzdG9tOjphcHBseVZhbHVlRm9udEZhbWlseShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWls
ZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFw
cGx5VmFsdWVGb250RmFtaWx5KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYg
dmFsdWUpCiB7CiAgICAgYXV0byYgdmFsdWVMaXN0ID0gZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2
YWx1ZSk7CiAKQEAgLTk3MCwyOCArOTcxLDI4IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZUZvbnRGYW1pbHkoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlCiAg
ICAgYnVpbGRlclN0YXRlLnNldEZvbnREZXNjcmlwdGlvbihXVEZNb3ZlKGZvbnREZXNjcmlwdGlv
bikpOwogfQogCi1pbmxpbmUgYm9vbCBTdHlsZUJ1aWxkZXJDdXN0b206OmlzVmFsaWREaXNwbGF5
VmFsdWUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBEaXNwbGF5VHlwZSBkaXNw
bGF5KQoraW5saW5lIGJvb2wgQnVpbGRlckN1c3RvbTo6aXNWYWxpZERpc3BsYXlWYWx1ZShCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgRGlzcGxheVR5cGUgZGlzcGxheSkKIHsKICAgICBpZiAo
aXM8U1ZHRWxlbWVudD4oYnVpbGRlclN0YXRlLmVsZW1lbnQoKSkgJiYgYnVpbGRlclN0YXRlLnN0
eWxlKCkuc3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6Ok5vbmUpCiAgICAgICAgIHJldHVybiBkaXNw
bGF5ID09IERpc3BsYXlUeXBlOjpJbmxpbmUgfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6Qmxv
Y2sgfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6Tm9uZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXREaXNwbGF5KFN0
eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0
b206OmFwcGx5SW5oZXJpdERpc3BsYXkoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAg
ICAgRGlzcGxheVR5cGUgZGlzcGxheSA9IGJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLmRpc3Bs
YXkoKTsKICAgICBpZiAoaXNWYWxpZERpc3BsYXlWYWx1ZShidWlsZGVyU3RhdGUsIGRpc3BsYXkp
KQogICAgICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXREaXNwbGF5KGRpc3BsYXkpOwogfQog
Ci1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVEaXNwbGF5KFN0eWxl
OjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZv
aWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZURpc3BsYXkoQnVpbGRlclN0YXRlJiBidWlsZGVy
U3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBEaXNwbGF5VHlwZSBkaXNwbGF5ID0gZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAoaXNWYWxpZERpc3BsYXlW
YWx1ZShidWlsZGVyU3RhdGUsIGRpc3BsYXkpKQogICAgICAgICBidWlsZGVyU3RhdGUuc3R5bGUo
KS5zZXREaXNwbGF5KGRpc3BsYXkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0
b206OmFwcGx5VmFsdWVCYXNlbGluZVNoaWZ0KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJT
dGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlW
YWx1ZUJhc2VsaW5lU2hpZnQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2
YWx1ZSkKIHsKICAgICBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBidWlsZGVyU3RhdGUuc3R5
bGUoKS5hY2Nlc3NTVkdTdHlsZSgpOwogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKQEAgLTEwMTUsMTQgKzEwMTYsMTQgQEAgaW5s
aW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQmFzZWxpbmVTaGlmdChTdHls
ZTo6QnVpbGRlclN0YXRlJiBidWkKICAgICB9CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlJbml0aWFsV2Via2l0QXNwZWN0UmF0aW8oU3R5bGU6OkJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFs
V2Via2l0QXNwZWN0UmF0aW8oQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYnVp
bGRlclN0YXRlLnN0eWxlKCkuc2V0QXNwZWN0UmF0aW9UeXBlKFJlbmRlclN0eWxlOjppbml0aWFs
QXNwZWN0UmF0aW9UeXBlKCkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldEFzcGVjdFJh
dGlvRGVub21pbmF0b3IoUmVuZGVyU3R5bGU6OmluaXRpYWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9y
KCkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldEFzcGVjdFJhdGlvTnVtZXJhdG9yKFJl
bmRlclN0eWxlOjppbml0aWFsQXNwZWN0UmF0aW9OdW1lcmF0b3IoKSk7CiB9CiAKLWlubGluZSB2
b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0V2Via2l0QXNwZWN0UmF0aW8oU3R5
bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3Rv
bTo6YXBwbHlJbmhlcml0V2Via2l0QXNwZWN0UmF0aW8oQnVpbGRlclN0YXRlJiBidWlsZGVyU3Rh
dGUpCiB7CiAgICAgaWYgKGJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLmFzcGVjdFJhdGlvVHlw
ZSgpID09IEFzcGVjdFJhdGlvVHlwZTo6QXV0bykKICAgICAgICAgcmV0dXJuOwpAQCAtMTAzMSw3
ICsxMDMyLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRX
ZWJraXRBc3BlY3RSYXRpbyhTdHlsZTo6QnVpbGRlclN0YXQKICAgICBidWlsZGVyU3RhdGUuc3R5
bGUoKS5zZXRBc3BlY3RSYXRpb051bWVyYXRvcihidWlsZGVyU3RhdGUucGFyZW50U3R5bGUoKS5h
c3BlY3RSYXRpb051bWVyYXRvcigpKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3Vz
dG9tOjphcHBseVZhbHVlV2Via2l0QXNwZWN0UmF0aW8oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjph
cHBseVZhbHVlV2Via2l0QXNwZWN0UmF0aW8oQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENT
U1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkg
ewogICAgICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSk7CkBAIC0xMDUxLDIxICsxMDUyLDIxIEBAIGlubGluZSB2b2lkIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdEFzcGVjdFJhdGlvKFN0eWxlOjpCdWlsZGVyU3Rh
dGUmCiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0QXNwZWN0UmF0aW9OdW1lcmF0b3IoYXNw
ZWN0UmF0aW9WYWx1ZS5udW1lcmF0b3JWYWx1ZSgpKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxXZWJraXRUZXh0RW1waGFzaXNTdHlsZShTdHlsZTo6
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjph
cHBseUluaXRpYWxXZWJraXRUZXh0RW1waGFzaXNTdHlsZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJT
dGF0ZSkKIHsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRUZXh0RW1waGFzaXNGaWxsKFJl
bmRlclN0eWxlOjppbml0aWFsVGV4dEVtcGhhc2lzRmlsbCgpKTsKICAgICBidWlsZGVyU3RhdGUu
c3R5bGUoKS5zZXRUZXh0RW1waGFzaXNNYXJrKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEVtcGhh
c2lzTWFyaygpKTsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRUZXh0RW1waGFzaXNDdXN0
b21NYXJrKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEVtcGhhc2lzQ3VzdG9tTWFyaygpKTsKIH0K
IAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRXZWJraXRUZXh0
RW1waGFzaXNTdHlsZShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUg
dm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRXZWJraXRUZXh0RW1waGFzaXNTdHlsZShC
dWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5z
ZXRUZXh0RW1waGFzaXNGaWxsKGJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLnRleHRFbXBoYXNp
c0ZpbGwoKSk7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0VGV4dEVtcGhhc2lzTWFyayhi
dWlsZGVyU3RhdGUucGFyZW50U3R5bGUoKS50ZXh0RW1waGFzaXNNYXJrKCkpOwogICAgIGJ1aWxk
ZXJTdGF0ZS5zdHlsZSgpLnNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsoYnVpbGRlclN0YXRlLnBh
cmVudFN0eWxlKCkudGV4dEVtcGhhc2lzQ3VzdG9tTWFyaygpKTsKIH0KIAotaW5saW5lIHZvaWQg
U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0VGV4dEVtcGhhc2lzU3R5bGUoU3R5
bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUg
dm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0VGV4dEVtcGhhc2lzU3R5bGUoQnVp
bGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8
Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKICAgICAgICAgYXV0byYgbGlzdCA9IGRvd25jYXN0PENT
U1ZhbHVlTGlzdD4odmFsdWUpOwpAQCAtMTEwMSw4ICsxMTAyLDggQEAgaW5saW5lIHZvaWQgU3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0VGV4dEVtcGhhc2lzU3R5bGUoU3R5bGU6
OkJ1aWxkZXIKICAgICB9CiB9CiAKLXRlbXBsYXRlIDxTdHlsZUJ1aWxkZXJDdXN0b206OkNvdW50
ZXJCZWhhdmlvciBjb3VudGVyQmVoYXZpb3I+Ci1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0
b206OmFwcGx5SW5oZXJpdENvdW50ZXIoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
KQordGVtcGxhdGUgPEJ1aWxkZXJDdXN0b206OkNvdW50ZXJCZWhhdmlvciBjb3VudGVyQmVoYXZp
b3I+CitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRDb3VudGVyKEJ1aWxk
ZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGF1dG8mIG1hcCA9IGJ1aWxkZXJTdGF0ZS5z
dHlsZSgpLmFjY2Vzc0NvdW50ZXJEaXJlY3RpdmVzKCk7CiAgICAgZm9yIChhdXRvJiBrZXlWYWx1
ZSA6IGNvbnN0X2Nhc3Q8UmVuZGVyU3R5bGUmPihidWlsZGVyU3RhdGUucGFyZW50U3R5bGUoKSku
YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMoKSkgewpAQCAtMTExNCw4ICsxMTE1LDggQEAgaW5saW5l
IHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRDb3VudGVyKFN0eWxlOjpCdWls
ZGVyU3RhdGUmIGJ1aWxkZXIKICAgICB9CiB9CiAKLXRlbXBsYXRlIDxTdHlsZUJ1aWxkZXJDdXN0
b206OkNvdW50ZXJCZWhhdmlvciBjb3VudGVyQmVoYXZpb3I+Ci1pbmxpbmUgdm9pZCBTdHlsZUJ1
aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb3VudGVyKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxk
ZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQordGVtcGxhdGUgPEJ1aWxkZXJDdXN0b206OkNvdW50
ZXJCZWhhdmlvciBjb3VudGVyQmVoYXZpb3I+CitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjph
cHBseVZhbHVlQ291bnRlcihCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZh
bHVlKQogewogICAgIGJvb2wgc2V0Q291bnRlckluY3JlbWVudFRvTm9uZSA9IGNvdW50ZXJCZWhh
dmlvciA9PSBJbmNyZW1lbnQgJiYgaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSAmJiBkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmU7
CiAKQEAgLTExNDUsNDMgKzExNDYsNDMgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseVZhbHVlQ291bnRlcihTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3QKICAgICB9
CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsQ291bnRl
ckluY3JlbWVudChTdHlsZTo6QnVpbGRlclN0YXRlJikgeyB9CitpbmxpbmUgdm9pZCBCdWlsZGVy
Q3VzdG9tOjphcHBseUluaXRpYWxDb3VudGVySW5jcmVtZW50KEJ1aWxkZXJTdGF0ZSYpIHsgfQog
Ci1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdENvdW50ZXJJbmNy
ZW1lbnQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVp
bGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Q291bnRlckluY3JlbWVudChCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSkKIHsKICAgICBhcHBseUluaGVyaXRDb3VudGVyPEluY3JlbWVudD4oYnVpbGRl
clN0YXRlKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVl
Q291bnRlckluY3JlbWVudChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1Zh
bHVlJiB2YWx1ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb3VudGVy
SW5jcmVtZW50KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7
CiAgICAgYXBwbHlWYWx1ZUNvdW50ZXI8SW5jcmVtZW50PihidWlsZGVyU3RhdGUsIHZhbHVlKTsK
IH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxDb3VudGVy
UmVzZXQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYpIHsgfQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3Rv
bTo6YXBwbHlJbml0aWFsQ291bnRlclJlc2V0KEJ1aWxkZXJTdGF0ZSYpIHsgfQogCi1pbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdENvdW50ZXJSZXNldChTdHlsZTo6
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjph
cHBseUluaGVyaXRDb3VudGVyUmVzZXQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAg
ICAgYXBwbHlJbmhlcml0Q291bnRlcjxSZXNldD4oYnVpbGRlclN0YXRlKTsKIH0KIAotaW5saW5l
IHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ291bnRlclJlc2V0KFN0eWxlOjpC
dWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQg
QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvdW50ZXJSZXNldChCdWlsZGVyU3RhdGUmIGJ1aWxk
ZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGFwcGx5VmFsdWVDb3VudGVyPFJlc2V0
PihidWlsZGVyU3RhdGUsIHZhbHVlKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3Vz
dG9tOjphcHBseUluaXRpYWxDdXJzb3IoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
KQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsQ3Vyc29yKEJ1aWxkZXJT
dGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLmNsZWFyQ3Vy
c29yTGlzdCgpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldEN1cnNvcihSZW5kZXJTdHls
ZTo6aW5pdGlhbEN1cnNvcigpKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseUluaGVyaXRDdXJzb3IoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQor
aW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Q3Vyc29yKEJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldEN1cnNvcihi
dWlsZGVyU3RhdGUucGFyZW50U3R5bGUoKS5jdXJzb3IoKSk7CiAgICAgYnVpbGRlclN0YXRlLnN0
eWxlKCkuc2V0Q3Vyc29yTGlzdChidWlsZGVyU3RhdGUucGFyZW50U3R5bGUoKS5jdXJzb3JzKCkp
OwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDdXJzb3Io
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxp
bmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ3Vyc29yKEJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCku
Y2xlYXJDdXJzb3JMaXN0KCk7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkp
IHsKQEAgLTEyMDYsMTMgKzEyMDcsMTMgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseVZhbHVlQ3Vyc29yKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGEKICAgICB9
CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsRmlsbChT
dHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3Vz
dG9tOjphcHBseUluaXRpYWxGaWxsKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAg
IGF1dG8mIHN2Z1N0eWxlID0gYnVpbGRlclN0YXRlLnN0eWxlKCkuYWNjZXNzU1ZHU3R5bGUoKTsK
ICAgICBzdmdTdHlsZS5zZXRGaWxsUGFpbnQoU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxGaWxsUGFp
bnRUeXBlKCksIFNWR1JlbmRlclN0eWxlOjppbml0aWFsRmlsbFBhaW50Q29sb3IoKSwgU1ZHUmVu
ZGVyU3R5bGU6OmluaXRpYWxGaWxsUGFpbnRVcmkoKSwgYnVpbGRlclN0YXRlLmFwcGx5UHJvcGVy
dHlUb1JlZ3VsYXJTdHlsZSgpLCBidWlsZGVyU3RhdGUuYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExp
bmtTdHlsZSgpKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUlu
aGVyaXRGaWxsKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lk
IEJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEZpbGwoQnVpbGRlclN0YXRlJiBidWlsZGVyU3Rh
dGUpCiB7CiAgICAgYXV0byYgc3ZnU3R5bGUgPSBidWlsZGVyU3RhdGUuc3R5bGUoKS5hY2Nlc3NT
VkdTdHlsZSgpOwogICAgIGF1dG8mIHN2Z1BhcmVudFN0eWxlID0gYnVpbGRlclN0YXRlLnBhcmVu
dFN0eWxlKCkuc3ZnU3R5bGUoKTsKQEAgLTEyMjAsNyArMTIyMSw3IEBAIGlubGluZSB2b2lkIFN0
eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0RmlsbChTdHlsZTo6QnVpbGRlclN0YXRlJiBi
dWlsZGVyU3RhCiAKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZh
bHVlRmlsbChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1
ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVGaWxsKEJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgc3ZnU3R5bGUg
PSBidWlsZGVyU3RhdGUuc3R5bGUoKS5hY2Nlc3NTVkdTdHlsZSgpOwogICAgIGNvbnN0IGF1dG8q
IGxvY2FsVmFsdWUgPSB2YWx1ZS5pc1ByaW1pdGl2ZVZhbHVlKCkgPyAmZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KHZhbHVlKSA6IG51bGxwdHI7CkBAIC0xMjUxLDIwICsxMjUyLDIwIEBAIGlu
bGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZpbGwoU3R5bGU6OkJ1aWxk
ZXJTdGF0ZSYgYnVpbGRlclN0YXRlCiAgICAgc3ZnU3R5bGUuc2V0RmlsbFBhaW50KHBhaW50VHlw
ZSwgY29sb3IsIHVybCwgYnVpbGRlclN0YXRlLmFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgp
LCBidWlsZGVyU3RhdGUuYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSgpKTsKIH0KIAot
aW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxTdHJva2UoU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6
YXBwbHlJbml0aWFsU3Ryb2tlKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIFNW
R1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLmFjY2Vzc1NWR1N0
eWxlKCk7CiAgICAgc3ZnU3R5bGUuc2V0U3Ryb2tlUGFpbnQoU1ZHUmVuZGVyU3R5bGU6OmluaXRp
YWxTdHJva2VQYWludFR5cGUoKSwgU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxTdHJva2VQYWludENv
bG9yKCksIFNWR1JlbmRlclN0eWxlOjppbml0aWFsU3Ryb2tlUGFpbnRVcmkoKSwgYnVpbGRlclN0
YXRlLmFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpLCBidWlsZGVyU3RhdGUuYXBwbHlQcm9w
ZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSgpKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVy
Q3VzdG9tOjphcHBseUluaGVyaXRTdHJva2UoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0
YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0U3Ryb2tlKEJ1aWxk
ZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGF1dG8mIHN2Z1N0eWxlID0gYnVpbGRlclN0
YXRlLnN0eWxlKCkuYWNjZXNzU1ZHU3R5bGUoKTsKICAgICBhdXRvJiBzdmdQYXJlbnRTdHlsZSA9
IGJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLnN2Z1N0eWxlKCk7CiAgICAgc3ZnU3R5bGUuc2V0
U3Ryb2tlUGFpbnQoc3ZnUGFyZW50U3R5bGUuc3Ryb2tlUGFpbnRUeXBlKCksIHN2Z1BhcmVudFN0
eWxlLnN0cm9rZVBhaW50Q29sb3IoKSwgc3ZnUGFyZW50U3R5bGUuc3Ryb2tlUGFpbnRVcmkoKSwg
YnVpbGRlclN0YXRlLmFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpLCBidWlsZGVyU3RhdGUu
YXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSgpKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlU3Ryb2tlKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6
YXBwbHlWYWx1ZVN0cm9rZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZh
bHVlKQogewogICAgIGF1dG8mIHN2Z1N0eWxlID0gYnVpbGRlclN0YXRlLnN0eWxlKCkuYWNjZXNz
U1ZHU3R5bGUoKTsKICAgICBjb25zdCBhdXRvKiBsb2NhbFZhbHVlID0gdmFsdWUuaXNQcmltaXRp
dmVWYWx1ZSgpID8gJmRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkgOiBudWxscHRy
OwpAQCAtMTI5NSwxOCArMTI5NiwxOCBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206
OmFwcGx5VmFsdWVTdHJva2UoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YQogICAgIHN2
Z1N0eWxlLnNldFN0cm9rZVBhaW50KHBhaW50VHlwZSwgY29sb3IsIHVybCwgYnVpbGRlclN0YXRl
LmFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpLCBidWlsZGVyU3RhdGUuYXBwbHlQcm9wZXJ0
eVRvVmlzaXRlZExpbmtTdHlsZSgpKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3Vz
dG9tOjphcHBseUluaXRpYWxDb250ZW50KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0
ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbENvbnRlbnQoQnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuY2xlYXJD
b250ZW50KCk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhl
cml0Q29udGVudChTdHlsZTo6QnVpbGRlclN0YXRlJikKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0
b206OmFwcGx5SW5oZXJpdENvbnRlbnQoQnVpbGRlclN0YXRlJikKIHsKICAgICAvLyBGSVhNRTog
SW4gQ1NTMywgaXQgd2lsbCBiZSBwb3NzaWJsZSB0byBpbmhlcml0IGNvbnRlbnQuIEluIENTUzIg
aXQgaXMgbm90LiBUaGlzCiAgICAgLy8gbm90ZSBpcyBhIHJlbWluZGVyIHRoYXQgZXZlbnR1YWxs
eSAiaW5oZXJpdCIgbmVlZHMgdG8gYmUgc3VwcG9ydGVkLgogfQogCi1pbmxpbmUgdm9pZCBTdHls
ZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb250ZW50KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6
YXBwbHlWYWx1ZUNvbnRlbnQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2
YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewogICAgICAg
ICBjb25zdCBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSk7CkBAIC0xMzkwLDcgKzEzOTEsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5VmFsdWVDb250ZW50KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdAog
ICAgICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5jbGVhckNvbnRlbnQoKTsKIH0KIAotaW5saW5l
IHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRGb250VmFyaWFudExpZ2F0dXJl
cyhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVy
Q3VzdG9tOjphcHBseUluaGVyaXRGb250VmFyaWFudExpZ2F0dXJlcyhCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSkKIHsKICAgICBhdXRvIGZvbnREZXNjcmlwdGlvbiA9IGJ1aWxkZXJTdGF0ZS5m
b250RGVzY3JpcHRpb24oKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0VmFyaWFudENvbW1vbkxp
Z2F0dXJlcyhidWlsZGVyU3RhdGUucGFyZW50Rm9udERlc2NyaXB0aW9uKCkudmFyaWFudENvbW1v
bkxpZ2F0dXJlcygpKTsKQEAgLTE0MDAsNyArMTQwMSw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Rm9udFZhcmlhbnRMaWdhdHVyZXMoU3R5bGU6OkJ1aWxk
ZXJTCiAgICAgYnVpbGRlclN0YXRlLnNldEZvbnREZXNjcmlwdGlvbihXVEZNb3ZlKGZvbnREZXNj
cmlwdGlvbikpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5p
dGlhbEZvbnRWYXJpYW50TGlnYXR1cmVzKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0
ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEZvbnRWYXJpYW50TGln
YXR1cmVzKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGF1dG8gZm9udERlc2Ny
aXB0aW9uID0gYnVpbGRlclN0YXRlLmZvbnREZXNjcmlwdGlvbigpOwogICAgIGZvbnREZXNjcmlw
dGlvbi5zZXRWYXJpYW50Q29tbW9uTGlnYXR1cmVzKEZvbnRWYXJpYW50TGlnYXR1cmVzOjpOb3Jt
YWwpOwpAQCAtMTQxMCw3ICsxNDExLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseUluaXRpYWxGb250VmFyaWFudExpZ2F0dXJlcyhTdHlsZTo6QnVpbGRlclMKICAgICBi
dWlsZGVyU3RhdGUuc2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSk7
CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZvbnRWYXJp
YW50TGlnYXR1cmVzKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUm
IHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZvbnRWYXJpYW50
TGlnYXR1cmVzKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7
CiAgICAgYXV0byBmb250RGVzY3JpcHRpb24gPSBidWlsZGVyU3RhdGUuZm9udERlc2NyaXB0aW9u
KCk7CiAgICAgYXV0byB2YXJpYW50TGlnYXR1cmVzID0gZXh0cmFjdEZvbnRWYXJpYW50TGlnYXR1
cmVzKHZhbHVlKTsKQEAgLTE0MjEsNyArMTQyMiw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZUZvbnRWYXJpYW50TGlnYXR1cmVzKFN0eWxlOjpCdWlsZGVyU3Rh
CiAgICAgYnVpbGRlclN0YXRlLnNldEZvbnREZXNjcmlwdGlvbihXVEZNb3ZlKGZvbnREZXNjcmlw
dGlvbikpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJp
dEZvbnRWYXJpYW50TnVtZXJpYyhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitp
bmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRGb250VmFyaWFudE51bWVyaWMo
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYXV0byBmb250RGVzY3JpcHRpb24g
PSBidWlsZGVyU3RhdGUuZm9udERlc2NyaXB0aW9uKCk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNl
dFZhcmlhbnROdW1lcmljRmlndXJlKGJ1aWxkZXJTdGF0ZS5wYXJlbnRGb250RGVzY3JpcHRpb24o
KS52YXJpYW50TnVtZXJpY0ZpZ3VyZSgpKTsKQEAgLTE0MzIsNyArMTQzMyw3IEBAIGlubGluZSB2
b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Rm9udFZhcmlhbnROdW1lcmljKFN0
eWxlOjpCdWlsZGVyU3RhCiAgICAgYnVpbGRlclN0YXRlLnNldEZvbnREZXNjcmlwdGlvbihXVEZN
b3ZlKGZvbnREZXNjcmlwdGlvbikpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0
b206OmFwcGx5SW5pdGlhbEZvbnRWYXJpYW50TnVtZXJpYyhTdHlsZTo6QnVpbGRlclN0YXRlJiBi
dWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxGb250
VmFyaWFudE51bWVyaWMoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYXV0byBm
b250RGVzY3JpcHRpb24gPSBidWlsZGVyU3RhdGUuZm9udERlc2NyaXB0aW9uKCk7CiAgICAgZm9u
dERlc2NyaXB0aW9uLnNldFZhcmlhbnROdW1lcmljRmlndXJlKEZvbnRWYXJpYW50TnVtZXJpY0Zp
Z3VyZTo6Tm9ybWFsKTsKQEAgLTE0NDMsNyArMTQ0NCw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlJbml0aWFsRm9udFZhcmlhbnROdW1lcmljKFN0eWxlOjpCdWlsZGVy
U3RhCiAgICAgYnVpbGRlclN0YXRlLnNldEZvbnREZXNjcmlwdGlvbihXVEZNb3ZlKGZvbnREZXNj
cmlwdGlvbikpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFs
dWVGb250VmFyaWFudE51bWVyaWMoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBD
U1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRm9u
dFZhcmlhbnROdW1lcmljKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFs
dWUpCiB7CiAgICAgYXV0byBmb250RGVzY3JpcHRpb24gPSBidWlsZGVyU3RhdGUuZm9udERlc2Ny
aXB0aW9uKCk7CiAgICAgYXV0byB2YXJpYW50TnVtZXJpYyA9IGV4dHJhY3RGb250VmFyaWFudE51
bWVyaWModmFsdWUpOwpAQCAtMTQ1NSw3ICsxNDU2LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWls
ZGVyQ3VzdG9tOjphcHBseVZhbHVlRm9udFZhcmlhbnROdW1lcmljKFN0eWxlOjpCdWlsZGVyU3Rh
dGUKICAgICBidWlsZGVyU3RhdGUuc2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZm9udERlc2Ny
aXB0aW9uKSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhl
cml0Rm9udFZhcmlhbnRFYXN0QXNpYW4oU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
KQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Rm9udFZhcmlhbnRFYXN0
QXNpYW4oQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYXV0byBmb250RGVzY3Jp
cHRpb24gPSBidWlsZGVyU3RhdGUuZm9udERlc2NyaXB0aW9uKCk7CiAgICAgZm9udERlc2NyaXB0
aW9uLnNldFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50KGJ1aWxkZXJTdGF0ZS5wYXJlbnRGb250RGVz
Y3JpcHRpb24oKS52YXJpYW50RWFzdEFzaWFuVmFyaWFudCgpKTsKQEAgLTE0NjQsNyArMTQ2NSw3
IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Rm9udFZhcmlh
bnRFYXN0QXNpYW4oU3R5bGU6OkJ1aWxkZXJTCiAgICAgYnVpbGRlclN0YXRlLnNldEZvbnREZXNj
cmlwdGlvbihXVEZNb3ZlKGZvbnREZXNjcmlwdGlvbikpOwogfQogCi1pbmxpbmUgdm9pZCBTdHls
ZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEZvbnRWYXJpYW50RWFzdEFzaWFuKFN0eWxlOjpC
dWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFw
cGx5SW5pdGlhbEZvbnRWYXJpYW50RWFzdEFzaWFuKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRl
KQogewogICAgIGF1dG8gZm9udERlc2NyaXB0aW9uID0gYnVpbGRlclN0YXRlLmZvbnREZXNjcmlw
dGlvbigpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRWYXJpYW50RWFzdEFzaWFuVmFyaWFudChG
b250VmFyaWFudEVhc3RBc2lhblZhcmlhbnQ6Ok5vcm1hbCk7CkBAIC0xNDczLDcgKzE0NzQsNyBA
QCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEZvbnRWYXJpYW50
RWFzdEFzaWFuKFN0eWxlOjpCdWlsZGVyUwogICAgIGJ1aWxkZXJTdGF0ZS5zZXRGb250RGVzY3Jp
cHRpb24oV1RGTW92ZShmb250RGVzY3JpcHRpb24pKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRm9udFZhcmlhbnRFYXN0QXNpYW4oU3R5bGU6OkJ1aWxk
ZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBCdWls
ZGVyQ3VzdG9tOjphcHBseVZhbHVlRm9udFZhcmlhbnRFYXN0QXNpYW4oQnVpbGRlclN0YXRlJiBi
dWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvIGZvbnREZXNjcmlwdGlv
biA9IGJ1aWxkZXJTdGF0ZS5mb250RGVzY3JpcHRpb24oKTsKICAgICBhdXRvIHZhcmlhbnRFYXN0
QXNpYW4gPSBleHRyYWN0Rm9udFZhcmlhbnRFYXN0QXNpYW4odmFsdWUpOwpAQCAtMTQ4Myw3ICsx
NDg0LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRm9udFZh
cmlhbnRFYXN0QXNpYW4oU3R5bGU6OkJ1aWxkZXJTdGEKICAgICBidWlsZGVyU3RhdGUuc2V0Rm9u
dERlc2NyaXB0aW9uKFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSk7CiB9CiAKLWlubGluZSB2b2lk
IFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsRm9udFNpemUoU3R5bGU6OkJ1aWxkZXJT
dGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0
aWFsRm9udFNpemUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYXV0byBmb250
RGVzY3JpcHRpb24gPSBidWlsZGVyU3RhdGUuc3R5bGUoKS5mb250RGVzY3JpcHRpb24oKTsKICAg
ICBmbG9hdCBzaXplID0gU3R5bGU6OmZvbnRTaXplRm9yS2V5d29yZChDU1NWYWx1ZU1lZGl1bSwg
Zm9udERlc2NyaXB0aW9uLnVzZUZpeGVkRGVmYXVsdFNpemUoKSwgYnVpbGRlclN0YXRlLmRvY3Vt
ZW50KCkpOwpAQCAtMTQ5Niw3ICsxNDk3LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3Vz
dG9tOjphcHBseUluaXRpYWxGb250U2l6ZShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGUKICAg
ICBidWlsZGVyU3RhdGUuc2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZm9udERlc2NyaXB0aW9u
KSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Rm9u
dFNpemUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVp
bGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Rm9udFNpemUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3Rh
dGUpCiB7CiAgICAgY29uc3QgYXV0byYgcGFyZW50Rm9udERlc2NyaXB0aW9uID0gYnVpbGRlclN0
YXRlLnBhcmVudFN0eWxlKCkuZm9udERlc2NyaXB0aW9uKCk7CiAgICAgZmxvYXQgc2l6ZSA9IHBh
cmVudEZvbnREZXNjcmlwdGlvbi5zcGVjaWZpZWRTaXplKCk7CkBAIC0xNTEyLDcgKzE1MTMsNyBA
QCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEZvbnRTaXplKFN0
eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZQogCiAvLyBXaGVuIHRoZSBDU1Mga2V5d29yZCAibGFy
Z2VyIiBpcyB1c2VkLCB0aGlzIGZ1bmN0aW9uIHdpbGwgYXR0ZW1wdCB0byBtYXRjaCB3aXRoaW4g
dGhlIGtleXdvcmQKIC8vIHRhYmxlLCBhbmQgZmFpbGluZyB0aGF0LCB3aWxsIHNpbXBseSBtdWx0
aXBseSBieSAxLjIuCi1pbmxpbmUgZmxvYXQgU3R5bGVCdWlsZGVyQ3VzdG9tOjpsYXJnZXJGb250
U2l6ZShmbG9hdCBzaXplKQoraW5saW5lIGZsb2F0IEJ1aWxkZXJDdXN0b206OmxhcmdlckZvbnRT
aXplKGZsb2F0IHNpemUpCiB7CiAgICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQgd2hlcmUgd2UgZmFs
bCBpbiB0aGUgc2l6ZSByYW5nZXMgKHh4LXNtYWxsIHRvIHh4eC1sYXJnZSkgYW5kIHNjYWxlIHVw
IHRvCiAgICAgLy8gdGhlIG5leHQgc2l6ZSBsZXZlbC4KQEAgLTE1MjAsMTQgKzE1MjEsMTQgQEAg
aW5saW5lIGZsb2F0IFN0eWxlQnVpbGRlckN1c3RvbTo6bGFyZ2VyRm9udFNpemUoZmxvYXQgc2l6
ZSkKIH0KIAogLy8gTGlrZSB0aGUgcHJldmlvdXMgZnVuY3Rpb24sIGJ1dCBmb3IgdGhlIGtleXdv
cmQgInNtYWxsZXIiLgotaW5saW5lIGZsb2F0IFN0eWxlQnVpbGRlckN1c3RvbTo6c21hbGxlckZv
bnRTaXplKGZsb2F0IHNpemUpCitpbmxpbmUgZmxvYXQgQnVpbGRlckN1c3RvbTo6c21hbGxlckZv
bnRTaXplKGZsb2F0IHNpemUpCiB7CiAgICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQgd2hlcmUgd2Ug
ZmFsbCBpbiB0aGUgc2l6ZSByYW5nZXMgKHh4LXNtYWxsIHRvIHh4eC1sYXJnZSkgYW5kIHNjYWxl
IGRvd24gdG8KICAgICAvLyB0aGUgbmV4dCBzaXplIGxldmVsLgogICAgIHJldHVybiBzaXplIC8g
MS4yZjsKIH0KIAotaW5saW5lIGZsb2F0IFN0eWxlQnVpbGRlckN1c3RvbTo6ZGV0ZXJtaW5lUnVi
eVRleHRTaXplTXVsdGlwbGllcihTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitp
bmxpbmUgZmxvYXQgQnVpbGRlckN1c3RvbTo6ZGV0ZXJtaW5lUnVieVRleHRTaXplTXVsdGlwbGll
cihCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBpZiAoYnVpbGRlclN0YXRlLnN0
eWxlKCkucnVieVBvc2l0aW9uKCkgIT0gUnVieVBvc2l0aW9uOjpJbnRlckNoYXJhY3RlcikKICAg
ICAgICAgcmV0dXJuIDAuNWY7CkBAIC0xNTQ0LDcgKzE1NDUsNyBAQCBpbmxpbmUgZmxvYXQgU3R5
bGVCdWlsZGVyQ3VzdG9tOjpkZXRlcm1pbmVSdWJ5VGV4dFNpemVNdWx0aXBsaWVyKFN0eWxlOjpC
dWlsZGVyUwogICAgIHJldHVybiAwLjI1ZjsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVy
Q3VzdG9tOjphcHBseUluaXRpYWxGb250U3R5bGUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsRm9udFN0eWxl
KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGF1dG8gZm9udERlc2NyaXB0aW9u
ID0gYnVpbGRlclN0YXRlLmZvbnREZXNjcmlwdGlvbigpOwogICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRJdGFsaWMoRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6aW5pdGlhbEl0YWxpYygpKTsKQEAgLTE1
NTIsNyArMTU1Myw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0
aWFsRm9udFN0eWxlKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkCiAgICAgYnVpbGRlclN0YXRl
LnNldEZvbnREZXNjcmlwdGlvbihXVEZNb3ZlKGZvbnREZXNjcmlwdGlvbikpOwogfQogCi1pbmxp
bmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEZvbnRTdHlsZShTdHlsZTo6
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjph
cHBseUluaGVyaXRGb250U3R5bGUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAg
YXV0byBmb250RGVzY3JpcHRpb24gPSBidWlsZGVyU3RhdGUuZm9udERlc2NyaXB0aW9uKCk7CiAg
ICAgZm9udERlc2NyaXB0aW9uLnNldEl0YWxpYyhidWlsZGVyU3RhdGUucGFyZW50Rm9udERlc2Ny
aXB0aW9uKCkuaXRhbGljKCkpOwpAQCAtMTU2MCwxNiArMTU2MSwxNiBAQCBpbmxpbmUgdm9pZCBT
dHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEZvbnRTdHlsZShTdHlsZTo6QnVpbGRlclN0
YXRlJiBidWlsZAogICAgIGJ1aWxkZXJTdGF0ZS5zZXRGb250RGVzY3JpcHRpb24oV1RGTW92ZShm
b250RGVzY3JpcHRpb24pKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjph
cHBseVZhbHVlRm9udFN0eWxlKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NT
VmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZvbnRT
dHlsZShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAg
IGF1dG8mIGZvbnRTdHlsZVZhbHVlID0gZG93bmNhc3Q8Q1NTRm9udFN0eWxlVmFsdWU+KHZhbHVl
KTsKICAgICBhdXRvIGZvbnREZXNjcmlwdGlvbiA9IGJ1aWxkZXJTdGF0ZS5mb250RGVzY3JpcHRp
b24oKTsKLSAgICBmb250RGVzY3JpcHRpb24uc2V0SXRhbGljKFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydEZvbnRTdHlsZUZyb21WYWx1ZShmb250U3R5bGVWYWx1ZSkpOworICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRJdGFsaWMoQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRTdHlsZUZy
b21WYWx1ZShmb250U3R5bGVWYWx1ZSkpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRGb250U3R5
bGVBeGlzKGZvbnRTdHlsZVZhbHVlLmZvbnRTdHlsZVZhbHVlLT52YWx1ZUlEKCkgPT0gQ1NTVmFs
dWVJdGFsaWMgPyBGb250U3R5bGVBeGlzOjppdGFsIDogRm9udFN0eWxlQXhpczo6c2xudCk7CiAg
ICAgYnVpbGRlclN0YXRlLnNldEZvbnREZXNjcmlwdGlvbihXVEZNb3ZlKGZvbnREZXNjcmlwdGlv
bikpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVGb250
U2l6ZShTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkK
K2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVGb250U2l6ZShCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8gZm9udERlc2Ny
aXB0aW9uID0gYnVpbGRlclN0YXRlLnN0eWxlKCkuZm9udERlc2NyaXB0aW9uKCk7CiAgICAgZm9u
dERlc2NyaXB0aW9uLnNldEtleXdvcmRTaXplRnJvbUlkZW50aWZpZXIoQ1NTVmFsdWVJbnZhbGlk
KTsKQEAgLTE2MjksMjEgKzE2MzAsMjEgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseVZhbHVlRm9udFNpemUoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclMKICAgICBi
dWlsZGVyU3RhdGUuc2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSk7
CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsR3JpZFRl
bXBsYXRlQXJlYXMoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZv
aWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsR3JpZFRlbXBsYXRlQXJlYXMoQnVpbGRlclN0
YXRlJiBidWlsZGVyU3RhdGUpCiB7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0TmFtZWRH
cmlkQXJlYShSZW5kZXJTdHlsZTo6aW5pdGlhbE5hbWVkR3JpZEFyZWEoKSk7CiAgICAgYnVpbGRl
clN0YXRlLnN0eWxlKCkuc2V0TmFtZWRHcmlkQXJlYVJvd0NvdW50KFJlbmRlclN0eWxlOjppbml0
aWFsTmFtZWRHcmlkQXJlYUNvdW50KCkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldE5h
bWVkR3JpZEFyZWFDb2x1bW5Db3VudChSZW5kZXJTdHlsZTo6aW5pdGlhbE5hbWVkR3JpZEFyZWFD
b3VudCgpKTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVy
aXRHcmlkVGVtcGxhdGVBcmVhcyhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitp
bmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRHcmlkVGVtcGxhdGVBcmVhcyhC
dWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5z
ZXROYW1lZEdyaWRBcmVhKGJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLm5hbWVkR3JpZEFyZWEo
KSk7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0TmFtZWRHcmlkQXJlYVJvd0NvdW50KGJ1
aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLm5hbWVkR3JpZEFyZWFSb3dDb3VudCgpKTsKICAgICBi
dWlsZGVyU3RhdGUuc3R5bGUoKS5zZXROYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoYnVpbGRlclN0
YXRlLnBhcmVudFN0eWxlKCkubmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KCkpOwogfQogCi1pbmxp
bmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVHcmlkVGVtcGxhdGVBcmVhcyhT
dHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGlu
ZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVHcmlkVGVtcGxhdGVBcmVhcyhCdWlsZGVy
U3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChpczxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CiAgICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpOwpAQCAtMTY1NSw4
ICsxNjU2LDggQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlR3Jp
ZFRlbXBsYXRlQXJlYXMoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYKIAogICAgIE5hbWVkR3JpZExpbmVz
TWFwIG5hbWVkR3JpZENvbHVtbkxpbmVzID0gYnVpbGRlclN0YXRlLnN0eWxlKCkubmFtZWRHcmlk
Q29sdW1uTGluZXMoKTsKICAgICBOYW1lZEdyaWRMaW5lc01hcCBuYW1lZEdyaWRSb3dMaW5lcyA9
IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLm5hbWVkR3JpZFJvd0xpbmVzKCk7Ci0gICAgU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjcmVhdGVJbXBsaWNpdE5hbWVkR3JpZExpbmVzRnJvbUdyaWRBcmVhKG5l
d05hbWVkR3JpZEFyZWFzLCBuYW1lZEdyaWRDb2x1bW5MaW5lcywgRm9yQ29sdW1ucyk7Ci0gICAg
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVJbXBsaWNpdE5hbWVkR3JpZExpbmVzRnJvbUdy
aWRBcmVhKG5ld05hbWVkR3JpZEFyZWFzLCBuYW1lZEdyaWRSb3dMaW5lcywgRm9yUm93cyk7Cisg
ICAgQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlSW1wbGljaXROYW1lZEdyaWRMaW5lc0Zyb21Hcmlk
QXJlYShuZXdOYW1lZEdyaWRBcmVhcywgbmFtZWRHcmlkQ29sdW1uTGluZXMsIEZvckNvbHVtbnMp
OworICAgIEJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUltcGxpY2l0TmFtZWRHcmlkTGluZXNGcm9t
R3JpZEFyZWEobmV3TmFtZWRHcmlkQXJlYXMsIG5hbWVkR3JpZFJvd0xpbmVzLCBGb3JSb3dzKTsK
ICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXROYW1lZEdyaWRDb2x1bW5MaW5lcyhuYW1lZEdy
aWRDb2x1bW5MaW5lcyk7CiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0TmFtZWRHcmlkUm93
TGluZXMobmFtZWRHcmlkUm93TGluZXMpOwogCkBAIC0xNjY1LDE0ICsxNjY2LDE0IEBAIGlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUdyaWRUZW1wbGF0ZUFyZWFzKFN0
eWxlOjpCdWlsZGVyU3RhdGUmCiAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0TmFtZWRHcmlk
QXJlYUNvbHVtbkNvdW50KGdyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuY29sdW1uQ291bnQoKSk7CiB9
CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsR3JpZFRlbXBs
YXRlQ29sdW1ucyhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitpbmxpbmUgdm9p
ZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxHcmlkVGVtcGxhdGVDb2x1bW5zKEJ1aWxkZXJT
dGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldEdyaWRD
b2x1bW5zKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZENvbHVtbnMoKSk7CiAgICAgYnVpbGRlclN0
YXRlLnN0eWxlKCkuc2V0TmFtZWRHcmlkQ29sdW1uTGluZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxO
YW1lZEdyaWRDb2x1bW5MaW5lcygpKTsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRPcmRl
cmVkTmFtZWRHcmlkQ29sdW1uTGluZXMoUmVuZGVyU3R5bGU6OmluaXRpYWxPcmRlcmVkTmFtZWRH
cmlkQ29sdW1uTGluZXMoKSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6
YXBwbHlJbmhlcml0R3JpZFRlbXBsYXRlQ29sdW1ucyhTdHlsZTo6QnVpbGRlclN0YXRlJiBidWls
ZGVyU3RhdGUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRHcmlkVGVt
cGxhdGVDb2x1bW5zKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGJ1aWxkZXJT
dGF0ZS5zdHlsZSgpLnNldEdyaWRDb2x1bW5zKGJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLmdy
aWRDb2x1bW5zKCkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldE5hbWVkR3JpZENvbHVt
bkxpbmVzKGJ1aWxkZXJTdGF0ZS5wYXJlbnRTdHlsZSgpLm5hbWVkR3JpZENvbHVtbkxpbmVzKCkp
OwpAQCAtMTY5MCw0NSArMTY5MSw0NSBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206
OmFwcGx5SW5oZXJpdEdyaWRUZW1wbGF0ZUNvbHVtbnMoU3R5bGU6OkJ1aWxkZXJTdAogICAgIHN0
eWxlLnNldEdyaWRBdXRvUmVwZWF0IyNUcmFja1R5cGUjI3NUeXBlKHRyYWNrc0RhdGEubV9hdXRv
UmVwZWF0VHlwZSk7IFwKICAgICBzdHlsZS5zZXRHcmlkQXV0b1JlcGVhdCMjVHJhY2tUeXBlIyNz
SW5zZXJ0aW9uUG9pbnQodHJhY2tzRGF0YS5tX2F1dG9SZXBlYXRJbnNlcnRpb25Qb2ludCk7CiAK
LWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUdyaWRUZW1wbGF0ZUNv
bHVtbnMoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUp
CitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlR3JpZFRlbXBsYXRlQ29sdW1u
cyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewotICAgIFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6VHJhY2tzRGF0YSB0cmFja3NEYXRhOwotICAgIGlmICghU3R5
bGVCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tMaXN0KHZhbHVlLCB0cmFja3NEYXRh
LCBidWlsZGVyU3RhdGUpKQorICAgIEJ1aWxkZXJDb252ZXJ0ZXI6OlRyYWNrc0RhdGEgdHJhY2tz
RGF0YTsKKyAgICBpZiAoIUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFja0xpc3QodmFs
dWUsIHRyYWNrc0RhdGEsIGJ1aWxkZXJTdGF0ZSkpCiAgICAgICAgIHJldHVybjsKICAgICBjb25z
dCBOYW1lZEdyaWRBcmVhTWFwJiBuYW1lZEdyaWRBcmVhcyA9IGJ1aWxkZXJTdGF0ZS5zdHlsZSgp
Lm5hbWVkR3JpZEFyZWEoKTsKICAgICBpZiAoIW5hbWVkR3JpZEFyZWFzLmlzRW1wdHkoKSkKLSAg
ICAgICAgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVJbXBsaWNpdE5hbWVkR3JpZExpbmVz
RnJvbUdyaWRBcmVhKG5hbWVkR3JpZEFyZWFzLCB0cmFja3NEYXRhLm1fbmFtZWRHcmlkTGluZXMs
IEZvckNvbHVtbnMpOworICAgICAgICBCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVJbXBsaWNpdE5h
bWVkR3JpZExpbmVzRnJvbUdyaWRBcmVhKG5hbWVkR3JpZEFyZWFzLCB0cmFja3NEYXRhLm1fbmFt
ZWRHcmlkTGluZXMsIEZvckNvbHVtbnMpOwogCiAgICAgU0VUX1RSQUNLU19EQVRBKHRyYWNrc0Rh
dGEsIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLCBDb2x1bW4pOwogfQogCi1pbmxpbmUgdm9pZCBTdHls
ZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEdyaWRUZW1wbGF0ZVJvd3MoU3R5bGU6OkJ1aWxk
ZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJ
bml0aWFsR3JpZFRlbXBsYXRlUm93cyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAg
ICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRHcmlkUm93cyhSZW5kZXJTdHlsZTo6aW5pdGlhbEdy
aWRSb3dzKCkpOwogICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldE5hbWVkR3JpZFJvd0xpbmVz
KFJlbmRlclN0eWxlOjppbml0aWFsTmFtZWRHcmlkUm93TGluZXMoKSk7CiAgICAgYnVpbGRlclN0
YXRlLnN0eWxlKCkuc2V0T3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKFJlbmRlclN0eWxlOjppbml0
aWFsT3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKCkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1
aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEdyaWRUZW1wbGF0ZVJvd3MoU3R5bGU6OkJ1aWxkZXJT
dGF0ZSYgYnVpbGRlclN0YXRlKQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhl
cml0R3JpZFRlbXBsYXRlUm93cyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBi
dWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRHcmlkUm93cyhidWlsZGVyU3RhdGUucGFyZW50U3R5bGUo
KS5ncmlkUm93cygpKTsKICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXROYW1lZEdyaWRSb3dM
aW5lcyhidWlsZGVyU3RhdGUucGFyZW50U3R5bGUoKS5uYW1lZEdyaWRSb3dMaW5lcygpKTsKICAg
ICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRPcmRlcmVkTmFtZWRHcmlkUm93TGluZXMoYnVpbGRl
clN0YXRlLnBhcmVudFN0eWxlKCkub3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzKCkpOwogfQogCi1p
bmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVHcmlkVGVtcGxhdGVSb3dz
KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5s
aW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUdyaWRUZW1wbGF0ZVJvd3MoQnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OlRyYWNrc0RhdGEgdHJhY2tzRGF0YTsKLSAgICBpZiAoIVN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFRyYWNrTGlzdCh2YWx1ZSwgdHJhY2tzRGF0YSwgYnVpbGRl
clN0YXRlKSkKKyAgICBCdWlsZGVyQ29udmVydGVyOjpUcmFja3NEYXRhIHRyYWNrc0RhdGE7Cisg
ICAgaWYgKCFCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tMaXN0KHZhbHVlLCB0cmFj
a3NEYXRhLCBidWlsZGVyU3RhdGUpKQogICAgICAgICByZXR1cm47CiAgICAgY29uc3QgTmFtZWRH
cmlkQXJlYU1hcCYgbmFtZWRHcmlkQXJlYXMgPSBidWlsZGVyU3RhdGUuc3R5bGUoKS5uYW1lZEdy
aWRBcmVhKCk7CiAgICAgaWYgKCFuYW1lZEdyaWRBcmVhcy5pc0VtcHR5KCkpCi0gICAgICAgIFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlSW1wbGljaXROYW1lZEdyaWRMaW5lc0Zyb21Hcmlk
QXJlYShuYW1lZEdyaWRBcmVhcywgdHJhY2tzRGF0YS5tX25hbWVkR3JpZExpbmVzLCBGb3JSb3dz
KTsKKyAgICAgICAgQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlSW1wbGljaXROYW1lZEdyaWRMaW5l
c0Zyb21HcmlkQXJlYShuYW1lZEdyaWRBcmVhcywgdHJhY2tzRGF0YS5tX25hbWVkR3JpZExpbmVz
LCBGb3JSb3dzKTsKIAogICAgIFNFVF9UUkFDS1NfREFUQSh0cmFja3NEYXRhLCBidWlsZGVyU3Rh
dGUuc3R5bGUoKSwgUm93KTsKIH0KIAotdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFs
dWVBbHQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUp
Cit2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVBbHQoQnVpbGRlclN0YXRlJiBidWlsZGVy
U3RhdGUsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVl
LmlzU3RyaW5nKCkpCkBAIC0xNzUwLDcgKzE3NTEsNyBAQCB2b2lkIFN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlWYWx1ZUFsdChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1Zh
bAogICAgICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRDb250ZW50QWx0VGV4dChlbXB0eUF0
b20oKSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdp
bGxDaGFuZ2UoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFs
dWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2lsbENoYW5nZShCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChpczxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CiAgICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pOwpAQCAtMTc3
OSwxMyArMTc4MCwxMyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFs
dWVXaWxsQ2hhbmdlKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZQogICAgIGJ1aWxkZXJTdGF0
ZS5zdHlsZSgpLnNldFdpbGxDaGFuZ2UoV1RGTW92ZSh3aWxsQ2hhbmdlKSk7CiB9CiAKLWlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVN0cm9rZVdpZHRoKFN0eWxlOjpC
dWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQg
QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVN0cm9rZVdpZHRoKEJ1aWxkZXJTdGF0ZSYgYnVpbGRl
clN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0
U3Ryb2tlV2lkdGgoU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoKGJ1aWxkZXJT
dGF0ZSwgdmFsdWUpKTsKKyAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRTdHJva2VXaWR0aChC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoKGJ1aWxkZXJTdGF0ZSwgdmFsdWUpKTsKICAg
ICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRIYXNFeHBsaWNpdGx5U2V0U3Ryb2tlV2lkdGgodHJ1
ZSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVN0cm9r
ZUNvbG9yKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdWUmIHZhbHVl
KQoraW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVN0cm9rZUNvbG9yKEJ1aWxk
ZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJp
bWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGlm
IChidWlsZGVyU3RhdGUuYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCkpCkBAIC0xNzk1LDcg
KzE3OTYsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVTdHJv
a2VDb2xvcihTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZAogICAgIGJ1aWxkZXJTdGF0ZS5zdHls
ZSgpLnNldEhhc0V4cGxpY2l0bHlTZXRTdHJva2VDb2xvcih0cnVlKTsKIH0KIAotaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxDdXN0b21Qcm9wZXJ0eShTdHlsZTo6
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9w
ZXJ0eSogcmVnaXN0ZXJlZCwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSkKK2lubGluZSB2b2lkIEJ1
aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEN1c3RvbVByb3BlcnR5KEJ1aWxkZXJTdGF0ZSYgYnVp
bGRlclN0YXRlLCBjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkqIHJlZ2lzdGVyZWQs
IGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCiB7CiAgICAgaWYgKHJlZ2lzdGVyZWQgJiYgcmVnaXN0
ZXJlZC0+aW5pdGlhbFZhbHVlKCkpIHsKICAgICAgICAgYXV0byBpbml0aWFsVmFsdWUgPSByZWdp
c3RlcmVkLT5pbml0aWFsVmFsdWVDb3B5KCk7CkBAIC0xODA3LDcgKzE4MDgsNyBAQCBpbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEN1c3RvbVByb3BlcnR5KFN0eWxl
OjpCdWlsZGVyU3RhdGUmCiAgICAgYXBwbHlWYWx1ZUN1c3RvbVByb3BlcnR5KGJ1aWxkZXJTdGF0
ZSwgcmVnaXN0ZXJlZCwgaW52YWxpZC5nZXQoKSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Q3VzdG9tUHJvcGVydHkoU3R5bGU6OkJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkqIHJlZ2lz
dGVyZWQsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCitpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9t
OjphcHBseUluaGVyaXRDdXN0b21Qcm9wZXJ0eShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwg
Y29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5KiByZWdpc3RlcmVkLCBjb25zdCBBdG9t
U3RyaW5nJiBuYW1lKQogewogICAgIGF1dG8qIHBhcmVudFZhbHVlID0gYnVpbGRlclN0YXRlLnBh
cmVudFN0eWxlKCkuaW5oZXJpdGVkQ3VzdG9tUHJvcGVydGllcygpLmdldChuYW1lKTsKICAgICBp
ZiAocGFyZW50VmFsdWUgJiYgIShyZWdpc3RlcmVkICYmICFyZWdpc3RlcmVkLT5pbmhlcml0cykp
CkBAIC0xODE2LDcgKzE4MTcsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5SW5oZXJpdEN1c3RvbVByb3BlcnR5KFN0eWxlOjpCdWlsZGVyU3RhdGUmCiAgICAgICAgIGFw
cGx5SW5pdGlhbEN1c3RvbVByb3BlcnR5KGJ1aWxkZXJTdGF0ZSwgcmVnaXN0ZXJlZCwgbmFtZSk7
CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUN1c3RvbVBy
b3BlcnR5KFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTUmVnaXN0
ZXJlZEN1c3RvbVByb3BlcnR5KiByZWdpc3RlcmVkLCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlJiB2
YWx1ZSkKK2lubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDdXN0b21Qcm9wZXJ0
eShCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVBy
b3BlcnR5KiByZWdpc3RlcmVkLCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlJiB2YWx1ZSkKIHsKICAg
ICBBU1NFUlQodmFsdWUuaXNSZXNvbHZlZCgpKTsKICAgICBjb25zdCBhdXRvJiBuYW1lID0gdmFs
dWUubmFtZSgpOwpAQCAtMTgyNyw0ICsxODI4LDUgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVy
Q3VzdG9tOjphcHBseVZhbHVlQ3VzdG9tUHJvcGVydHkoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnUK
ICAgICAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0Tm9uSW5oZXJpdGVkQ3VzdG9tUHJvcGVy
dHlWYWx1ZShuYW1lLCBtYWtlUmVmKHZhbHVlKSk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKK30KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckdl
bmVyYXRlZC5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyR2VuZXJhdGVkLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmYyYzNkZjhiMDZjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyR2VuZXJhdGVk
LmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUg
bWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDU1NWYWx1ZTsKK3N0cnVjdCBDU1NSZWdp
c3RlcmVkQ3VzdG9tUHJvcGVydHk7CisKK25hbWVzcGFjZSBTdHlsZSB7CitjbGFzcyBCdWlsZGVy
U3RhdGU7CisKK2NsYXNzIEJ1aWxkZXJHZW5lcmF0ZWQgeworcHVibGljOgorICAgIHN0YXRpYyB2
b2lkIGFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgU3R5bGU6OkJ1aWxkZXJTdGF0ZSYsIENT
U1ZhbHVlJiwgYm9vbCBpc0luaXRpYWwsIGJvb2wgaXNJbmhlcml0LCBjb25zdCBDU1NSZWdpc3Rl
cmVkQ3VzdG9tUHJvcGVydHkqKTsKK307CisKK30KK30K
</data>

          </attachment>
      

    </bug>

</bugzilla>