<?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>111966</bug_id>
          
          <creation_ts>2013-03-11 02:59:26 -0700</creation_ts>
          <short_desc>REGRESSION(r145349): Missing code history of Element,PageRuleCollector. (Requested by tasak on #webkit).</short_desc>
          <delta_ts>2013-03-11 03:58:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>109916</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rakuco</cc>
    
    <cc>tasak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>852147</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-11 02:59:26 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/145349 broke the build:
Missing code history of Element,PageRuleCollector. (Requested by tasak on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852149</commentid>
    <comment_count>1</comment_count>
      <attachid>192430</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-11 03:00:02 -0700</bug_when>
    <thetext>Created attachment 192430
ROLLOUT of r145349

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852150</commentid>
    <comment_count>2</comment_count>
      <attachid>192430</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2013-03-11 03:01:41 -0700</bug_when>
    <thetext>Comment on attachment 192430
ROLLOUT of r145349

I will use svn to land the patch of bug 109916.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852173</commentid>
    <comment_count>3</comment_count>
      <attachid>192430</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-11 03:58:40 -0700</bug_when>
    <thetext>Comment on attachment 192430
ROLLOUT of r145349

Clearing flags on attachment: 192430

Committed r145354: &lt;http://trac.webkit.org/changeset/145354&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852174</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-11 03:58:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192430</attachid>
            <date>2013-03-11 03:00:02 -0700</date>
            <delta_ts>2013-03-11 03:58:40 -0700</delta_ts>
            <desc>ROLLOUT of r145349</desc>
            <filename>bug-111966-20130311095601.patch</filename>
            <type>text/plain</type>
            <size>102239</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MzUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWJhYjg4NmUzZmEwZDk4
ZmJmNTZhYTZkZTA4NGJlNThjM2UxODgzOS4uMGJmYTA1ZjY2ZjdmMTdlYWU5ZTNlZmMwZGJjYzJm
MDgwOTA5NWM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDEzLTAzLTExICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTQ1MzQ5LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xNDUzNDkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExMTk2NgorCisgICAgICAgIE1pc3NpbmcgY29kZSBoaXN0b3J5IG9mIEVsZW1l
bnQsUGFnZVJ1bGVDb2xsZWN0b3IuIChSZXF1ZXN0ZWQKKyAgICAgICAgYnkgdGFzYWsgb24gI3dl
YmtpdCkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmls
ZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBp
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBjc3MvQ1NTQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGNzcy9Eb2N1bWVudFJ1bGVTZXRzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXM6OmNvbGxlY3RNYXRj
aFJlcXVlc3RzKToKKyAgICAgICAgKiBjc3MvRG9jdW1lbnRSdWxlU2V0cy5oOgorICAgICAgICAq
IGNzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogY3NzL0Vs
ZW1lbnRSdWxlQ29sbGVjdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogY3NzL1BhZ2VSdWxlQ29s
bGVjdG9yLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBjc3MvUGFnZVJ1bGVDb2xsZWN0b3IuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpsZWZ0VG9SaWdodERlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6cmlnaHRUb0xlZnREZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJlc29sdmVyOjpTdGF0ZTo6ZW5zdXJlUnVsZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSZXNvbHZlcjo6U3RhdGU6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVz
b2x2ZXI6OmFkZE1hdGNoZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVz
b2x2ZXI6OmFkZEVsZW1lbnRTdHlsZVByb3BlcnRpZXMpOgorICAgICAgICAoTWF0Y2hpbmdVQVJ1
bGVzU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6TWF0Y2hpbmdVQVJ1bGVzU2NvcGU6Ok1hdGNo
aW5nVUFSdWxlc1Njb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGNoaW5nVUFSdWxlc1Njb3Bl
Ojp+TWF0Y2hpbmdVQVJ1bGVzU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6TWF0Y2hpbmdVQVJ1
bGVzU2NvcGU6OmlzTWF0Y2hpbmdVQVJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVz
b2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVz
b2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmVzb2x2ZXI6OnNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJlc29sdmVyOjptYXRjaFNjb3BlZEF1dGhvclJ1bGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6Om1hdGNoSG9zdFJ1bGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmVzb2x2ZXI6Om1hdGNoQXV0aG9yUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSZXNvbHZlcjo6bWF0Y2hVc2VyUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6bWF0Y2hVQVJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6
OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpjb21wYXJl
UnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6c29ydE1hdGNoZWRSdWxl
cyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjptYXRjaEFsbFJ1bGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OlN0YXRlOjppbml0Rm9yU3R5bGVSZXNvbHZl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxlU2hhcmluZ0NhbmRpZGF0
ZU1hdGNoZXNSdWxlU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxl
Rm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzdHlsZUZvcktl
eWZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnBzZXVkb1N0eWxlRm9y
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzdHlsZUZvclBhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cnVsZU1hdGNoZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y2hlY2tSZWdpb25TZWxlY3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpjb21wYXJlUGFnZVJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUmVzb2x2ZXI6Om1hdGNoUGFnZVJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrUGFn
ZVNlbGVjdG9yQ29tcG9uZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpt
YXRjaFBhZ2VSdWxlc0Zvckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6
aXNMZWZ0UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjppc0ZpcnN0UGFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpwYWdlTmFtZSk6CisgICAgICAg
ICogY3NzL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGNoUmVxdWVzdDo6
TWF0Y2hSZXF1ZXN0KToKKyAgICAgICAgKE1hdGNoUmVxdWVzdCk6CisgICAgICAgIChTdHlsZVJl
c29sdmVyKToKKyAgICAgICAgKE1hdGNoUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UmVzb2x2ZXI6OlN0YXRlOjpTdGF0ZSk6CisgICAgICAgIChTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJlc29sdmVyOjpTdGF0ZTo6dGFrZVJ1bGVMaXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpzZXRTYW1lT3JpZ2luT25seSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpTdGF0ZTo6aXNTYW1lT3JpZ2luT25seSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpTdGF0ZTo6cHNldWRvU3R5bGVSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpzZXRNb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OlN0YXRlOjptb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmVzb2x2ZXI6OlN0YXRlOjptYXRjaGVkUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSZXNvbHZlcjo6U3RhdGU6OmFkZE1hdGNoZWRSdWxlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OndpbGxNYXRjaFJ1bGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NB
Z2VudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJbnNwZWN0b3JDU1NBZ2VudCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbE1hdGNoUnVsZUltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbE1hdGNoUnVsZSk6CisKIDIwMTMtMDMtMTEgIFRha2FzaGkgU2FrYW1vdG8gIDx0YXNh
a0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtSZWZhY3RvcmluZ10gSW1wbGVtZW50IFJ1bGVDb2xs
ZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNDVhNjI1ODI5OGFlOTBjMTgyOTEzZWE3MGQ3
YjZmM2VmNTFkZTU5MC4uNjQ1YmJmZGU0NDJmNGZjYTkyOGUyZWEyM2JiMzg4ZTc1Yjc0YTBmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEwNjgsNyArMTA2OCw2IEBAIHNldChXZWJDb3JlX1NP
VVJDRVMKICAgICBjc3MvQ1NTVmFsdWVQb29sLmNwcAogICAgIGNzcy9ET01XaW5kb3dDU1MuY3Bw
CiAgICAgY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwCi0gICAgY3NzL0VsZW1lbnRSdWxlQ29sbGVj
dG9yLmNwcAogICAgIGNzcy9Gb250RmVhdHVyZVZhbHVlLmNwcAogICAgIGNzcy9Gb250VmFsdWUu
Y3BwCiAgICAgY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3BwCkBAIC0xMDgxLDcgKzEwODAs
NiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgY3NzL01lZGlhUXVlcnlMaXN0LmNwcAogICAg
IGNzcy9NZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAogICAgIGNzcy9NZWRpYVF1ZXJ5TWF0Y2hl
ci5jcHAKLSAgICBjc3MvUGFnZVJ1bGVDb2xsZWN0b3IuY3BwCiAgICAgY3NzL1Byb3BlcnR5U2V0
Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKICAgICBjc3MvUkdCQ29sb3IuY3BwCiAgICAgY3NzL1J1
bGVGZWF0dXJlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDA3NjA3NGIxNDMz
ZTA3MTlhNzU3M2I0MGMzYmI4NTg4ZWZjZWQ3MDUuLjMwODc3ZDY1ODJkMjBiODk0OWIwM2E3MmRk
MTJlOTYwNTY2ODNlNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjY1NSw4
ICsyNjU1LDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvRGFz
aGJvYXJkUmVnaW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuaCBcCi0JU291cmNlL1dl
YkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvY3Nz
L0VsZW1lbnRSdWxlQ29sbGVjdG9yLmggXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVhdHVy
ZVZhbHVlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuaCBcCiAJ
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5jcHAgXApAQCAtMjY4MSw4ICsyNjc5LDYgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUxpc3RM
aXN0ZW5lci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeU1hdGNoZXIuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeU1hdGNoZXIuaCBcCi0JU291cmNlL1dlYkNv
cmUvY3NzL1BhZ2VSdWxlQ29sbGVjdG9yLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvY3NzL1BhZ2VS
dWxlQ29sbGVjdG9yLmggXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9QYWlyLmggXAogCVNvdXJjZS9X
ZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmggXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
aW5kZXggMjI5MzQxN2M1NjcwMTFmMTM4ZGY2YTNmNDQwYWViNzhiMjEzZWI0Yy4uMjQ0YmNiMWEz
MGNmNzdhNzA2YjIxMmZmZGZmNTZmMzg5MDkzMzA5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0zMDUsNyAr
MzA1LDYgQEAgU09VUkNFUyArPSBcCiAgICAgY3NzL0NTU1ZhbHVlUG9vbC5jcHAgXAogICAgIGNz
cy9ET01XaW5kb3dDU1MuY3BwIFwKICAgICBjc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHAgXAotICAg
IGNzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAgXAogICAgIGNzcy9Gb250RmVhdHVyZVZhbHVl
LmNwcCBcCiAgICAgY3NzL0ZvbnRWYWx1ZS5jcHAgXAogICAgIGNzcy9JbnNwZWN0b3JDU1NPTVdy
YXBwZXJzLmNwcCBcCkBAIC0zMTgsNyArMzE3LDYgQEAgU09VUkNFUyArPSBcCiAgICAgY3NzL01l
ZGlhUXVlcnlMaXN0LmNwcCBcCiAgICAgY3NzL01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIFwK
ICAgICBjc3MvTWVkaWFRdWVyeU1hdGNoZXIuY3BwIFwKLSAgICBjc3MvUGFnZVJ1bGVDb2xsZWN0
b3IuY3BwIFwKICAgICBjc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcCBcCiAg
ICAgY3NzL1JHQkNvbG9yLmNwcCBcCiAgICAgY3NzL1J1bGVGZWF0dXJlLmNwcCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggZmRkMTJkNTcyYjFhYzI5NDNhZjZlOTRmZTY4NWY2MDZiYjNjMTg2Ni4uOThk
M2FlZmYxODhmZmMxMzJhMjMyODhhN2Y2ZjFkMGVmMTZhZjg0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpA
QCAtMTY0OCw4ICsxNjQ4LDYgQEAKICAgICAgICAgICAgICdjc3MvRGFzaGJvYXJkUmVnaW9uLmgn
LAogICAgICAgICAgICAgJ2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcCcsCiAgICAgICAgICAgICAn
Y3NzL0RvY3VtZW50UnVsZVNldHMuaCcsCi0gICAgICAgICAgICAnY3NzL0VsZW1lbnRSdWxlQ29s
bGVjdG9yLmNwcCcsCi0gICAgICAgICAgICAnY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgnLAog
ICAgICAgICAgICAgJ2Nzcy9Gb250RmVhdHVyZVZhbHVlLmNwcCcsCiAgICAgICAgICAgICAnY3Nz
L0ZvbnRGZWF0dXJlVmFsdWUuaCcsCiAgICAgICAgICAgICAnY3NzL0ZvbnRWYWx1ZS5jcHAnLApA
QCAtMTY3Myw4ICsxNjcxLDYgQEAKICAgICAgICAgICAgICdjc3MvTWVkaWFRdWVyeUxpc3RMaXN0
ZW5lci5oJywKICAgICAgICAgICAgICdjc3MvTWVkaWFRdWVyeU1hdGNoZXIuY3BwJywKICAgICAg
ICAgICAgICdjc3MvTWVkaWFRdWVyeU1hdGNoZXIuaCcsCi0gICAgICAgICAgICAnY3NzL1BhZ2VS
dWxlQ29sbGVjdG9yLmNwcCcsCi0gICAgICAgICAgICAnY3NzL1BhZ2VSdWxlQ29sbGVjdG9yLmgn
LAogICAgICAgICAgICAgJ2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwJywK
ICAgICAgICAgICAgICdjc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmgnLAogICAg
ICAgICAgICAgJ2Nzcy9SR0JDb2xvci5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM2NzBlNjA2ZDNhNGZiNDNiYzVhYmNk
NzU2NWYzYTViMzFhNWQ3ZWIuLmE2NTFkMjZjZjJiMDUzNTljM2I5Mjc1NGRmZDY5NDMwNjE4NTMz
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTY1NTIsMTAgKzY1NTIsNiBAQAogCQlGQkQ2QUY4QjE1RUYyNUU1MDA4QjcxMTAg
LyogQ1NTQmFzaWNTaGFwZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkJENkFGODYxNUVGMjFENDAwOEI3MTEwIC8qIENTU0Jhc2ljU2hhcGVzLmNw
cCAqLzsgfTsKIAkJRkJENkFGOEMxNUVGMjYwNDAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQkQ2QUY4MzE1RUYy
MUEzMDA4QjcxMTAgLyogQmFzaWNTaGFwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlGQkQ2QUY4RDE1RUYyNjBBMDA4QjcxMTAgLyogQmFzaWNT
aGFwZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkJENkFGODIxNUVGMjFBMzAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmNwcCAqLzsgfTsKLQkJRkJE
QjYxOUIxNkQ2MDMyQTAwQkIzMzk0IC8qIEVsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCREI2MTlBMTZENjAzMkEw
MEJCMzM5NCAvKiBFbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAgKi87IH07Ci0JCUZCREI2MTlEMTZE
NjAzNDYwMEJCMzM5NCAvKiBQYWdlUnVsZUNvbGxlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQkRCNjE5QzE2RDYwMzQ2MDBCQjMzOTQgLyog
UGFnZVJ1bGVDb2xsZWN0b3IuY3BwICovOyB9OwotCQlGQkRCNjE5RjE2RDYwMzY1MDBCQjMzOTQg
LyogRWxlbWVudFJ1bGVDb2xsZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZCREI2MTlFMTZENjAzNjUwMEJCMzM5NCAvKiBFbGVtZW50UnVsZUNv
bGxlY3Rvci5oICovOyB9OwotCQlGQkRCNjFBMTE2RDYwMzdFMDBCQjMzOTQgLyogUGFnZVJ1bGVD
b2xsZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZCREI2MUEwMTZENjAzN0UwMEJCMzM5NCAvKiBQYWdlUnVsZUNvbGxlY3Rvci5oICovOyB9Owog
CQlGQkY4OTA0NTE2OUU5RjFGMDA1MkQ4NkUgLyogQ1NTR3JvdXBpbmdSdWxlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCRjg5MDQ0MTY5RTlGMUYw
MDUyRDg2RSAvKiBDU1NHcm91cGluZ1J1bGUuY3BwICovOyB9OwogCQlGQzU0RDA1NzE2QTc2NzMx
MDA1NzVFNEQgLyogQ1NTU3VwcG9ydHNSdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGQzYzQkRCMTE2N0FBQkFDMDBGOTM4MEYgLyogQ1NTU3VwcG9y
dHNSdWxlLmggKi87IH07CiAJCUZDNTREMDU4MTZBNzY3NkUwMDU3NUU0RCAvKiBKU0NTU1N1cHBv
cnRzUnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkM4NDgwMkUxNjdBQjQ0NDAwOENEMTAwIC8qIEpTQ1NTU3VwcG9ydHNSdWxlLmggKi87IH07CkBA
IC0xNDMxMCwxMCArMTQzMDYsNiBAQAogCQlGQkQ2QUY4NTE1RUYyMUQ0MDA4QjcxMTAgLyogQmFz
aWNTaGFwZUZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYXNp
Y1NoYXBlRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZCRDZBRjg2
MTVFRjIxRDQwMDhCNzExMCAvKiBDU1NCYXNpY1NoYXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDU1NCYXNpY1NoYXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZCRDZBRjg3MTVFRjIxRDQwMDhCNzExMCAvKiBDU1NCYXNpY1NoYXBlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NCYXNpY1NoYXBlcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGQkRCNjE5QTE2RDYwMzJBMDBCQjMzOTQgLyogRWxl
bWVudFJ1bGVDb2xsZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlGQkRCNjE5QzE2RDYwMzQ2MDBCQjMzOTQgLyogUGFnZVJ1bGVDb2xsZWN0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZVJ1bGVDb2xsZWN0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGQkRCNjE5RTE2RDYwMzY1MDBCQjMzOTQgLyog
RWxlbWVudFJ1bGVDb2xsZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RWxlbWVudFJ1bGVDb2xsZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkJE
QjYxQTAxNkQ2MDM3RTAwQkIzMzk0IC8qIFBhZ2VSdWxlQ29sbGVjdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VSdWxlQ29sbGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZCRjg5MDQ0MTY5RTlGMUYwMDUyRDg2RSAvKiBDU1NHcm91cGluZ1J1
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTR3JvdXBpbmdS
dWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkM2M0JEQjAxNjdBQUJBQzAw
RjkzODBGIC8qIENTU1N1cHBvcnRzUnVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDU1NTdXBwb3J0c1J1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGQzYzQkRCMTE2N0FBQkFDMDBGOTM4MEYgLyogQ1NTU3VwcG9ydHNSdWxlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1N1cHBvcnRzUnVsZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjIxNDQsOCArMjIxMzYsNiBAQAogCQkJCUZDOUEwRjcxMTY0
MDk0Q0YwMDNENkI4RCAvKiBET01XaW5kb3dDU1MuY3BwICovLAogCQkJCUZDOUEwRjcyMTY0MDk0
Q0YwMDNENkI4RCAvKiBET01XaW5kb3dDU1MuaCAqLywKIAkJCQlGQzlBMEY3MzE2NDA5NENGMDAz
RDZCOEQgLyogRE9NV2luZG93Q1NTLmlkbCAqLywKLQkJCQlGQkRCNjE5RTE2RDYwMzY1MDBCQjMz
OTQgLyogRWxlbWVudFJ1bGVDb2xsZWN0b3IuaCAqLywKLQkJCQlGQkRCNjE5QTE2RDYwMzJBMDBC
QjMzOTQgLyogRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwICovLAogCQkJCTRBNkU5RkMyMTNDMTdE
MUQwMDQ2QTdGOCAvKiBGb250RmVhdHVyZVZhbHVlLmggKi8sCiAJCQkJQTgwRTZDQzcwQTE5ODlD
QTAwN0ZCOEM1IC8qIEZvbnRWYWx1ZS5jcHAgKi8sCiAJCQkJQTgwRTZDQzMwQTE5ODlDQTAwN0ZC
OEM1IC8qIEZvbnRWYWx1ZS5oICovLApAQCAtMjIxODEsOCArMjIxNzEsNiBAQAogCQkJCUQzQTk0
QTM1MTIyREFCQUMwMEEzN0JCQyAvKiBNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmlkbCAqLywKIAkJ
CQlEM0FBMTBGMTEyM0E5OEFBMDA5MjE1MkIgLyogTWVkaWFRdWVyeU1hdGNoZXIuY3BwICovLAog
CQkJCUQzQUExMEYyMTIzQTk4QUEwMDkyMTUyQiAvKiBNZWRpYVF1ZXJ5TWF0Y2hlci5oICovLAot
CQkJCUZCREI2MUEwMTZENjAzN0UwMEJCMzM5NCAvKiBQYWdlUnVsZUNvbGxlY3Rvci5oICovLAot
CQkJCUZCREI2MTlDMTZENjAzNDYwMEJCMzM5NCAvKiBQYWdlUnVsZUNvbGxlY3Rvci5jcHAgKi8s
CiAJCQkJQTgwRTZDRDEwQTE5ODlDQTAwN0ZCOEM1IC8qIFBhaXIuaCAqLywKIAkJCQkzMTg5RTZE
QjE2QjIxMDM1MDAzODZFQTMgLyogcGx1Z0lucy5jc3MgKi8sCiAJCQkJRTRCQkVEMEMxNEY0MDI1
RDAwM0YwQjk4IC8qIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAgKi8sCkBAIC0y
NjcxNCw4ICsyNjcwMiw2IEBACiAJCQkJN0U2NkUyMzQxNkQ2RUI2QzAwRjdFN0ZGIC8qIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVBVEMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFQTMwRjZBMTZERkZF
NzUwMDI1N0QwQiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTJEODI4N0Y3MTZFNEEwMzgwMDg2QkQwMCAvKiBIaXRUZXN0TG9jYXRpb24uaCBpbiBI
ZWFkZXJzICovLAotCQkJCUZCREI2MTlGMTZENjAzNjUwMEJCMzM5NCAvKiBFbGVtZW50UnVsZUNv
bGxlY3Rvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkJEQjYxQTExNkQ2MDM3RTAwQkIzMzk0IC8q
IFBhZ2VSdWxlQ29sbGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODk1NzBBMDE2RTlCRDU5
MDAxODRFNTUgLyogSFRNTElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtMjk5MjAsOCArMjk5MDYs
NiBAQAogCQkJCTdFNjZFMjMzMTZENkVCNkMwMEY3RTdGRiAvKiBXZWJHTENvbXByZXNzZWRUZXh0
dXJlQVRDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFQTMwRjY5MTZERkZFNzUwMDI1N0QwQiAv
KiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ4
Mjg3RjYxNkU0QTAzODAwODZCRDAwIC8qIEhpdFRlc3RMb2NhdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQlGQkRCNjE5QjE2RDYwMzJBMDBCQjMzOTQgLyogRWxlbWVudFJ1bGVDb2xsZWN0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRkJEQjYxOUQxNkQ2MDM0NjAwQkIzMzk0IC8qIFBhZ2VS
dWxlQ29sbGVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4OTU3MDlGMTZFOUJENTkwMDE4
NEU1NSAvKiBIVE1MSWRlbnRpZmllci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQWxsSW5P
bmUuY3BwCmluZGV4IDc4ZTc1MjAyOTA4Yzc0OGFlMDkzYjdkN2E2YTg4ODU4NDkwOThlNjAuLjkx
M2VmZGM2OTljMTMwM2RmN2Q3M2Q5MzliMDk5ZmQxODhiMjBiNmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0FsbEluT25lLmNwcApAQCAtNzEsOSArNzEsNyBAQAogI2luY2x1ZGUgIkNTU1ZhbHVlUG9vbC5j
cHAiCiAjaW5jbHVkZSAiRE9NV2luZG93Q1NTLmNwcCIKICNpbmNsdWRlICJEb2N1bWVudFJ1bGVT
ZXRzLmNwcCIKLSNpbmNsdWRlICJFbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAiCi0jaW5jbHVkZSAiUGFnZVJ1bGVDb2xsZWN0b3Iu
Y3BwIgogI2luY2x1ZGUgIlJ1bGVGZWF0dXJlLmNwcCIKICNpbmNsdWRlICJSdWxlU2V0LmNwcCIK
ICNpbmNsdWRlICJTZWxlY3RvckNoZWNrZXJGYXN0UGF0aC5jcHAiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
RG9jdW1lbnRSdWxlU2V0cy5jcHAKaW5kZXggMGZmODFiMTdhYjAyNGMzY2ViODljOTIwZDQ5Nzdl
MjcyOGY2OGI5My4uYTg1YzFhNzU0MTlmNjcxNTgzZGM0NmE0Yjc3NzYyM2JjOTdlMzQzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2
b2lkIFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXM6OmFkZFJ1bGUoU3R5bGVSdWxlKiBydWxlLCBzaXpl
X3Qgc2VsZWN0b3JJbmRleCwgQ29udAogdm9pZCBTaGFkb3dEaXN0cmlidXRlZFJ1bGVzOjpjb2xs
ZWN0TWF0Y2hSZXF1ZXN0cyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzLCBWZWN0b3I8TWF0Y2hSZXF1
ZXN0PiYgbWF0Y2hSZXF1ZXN0cykKIHsKICAgICBmb3IgKFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNl
dE1hcDo6aXRlcmF0b3IgaXQgPSBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcC5iZWdpbigp
OyBpdCAhPSBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcC5lbmQoKTsgKytpdCkKLSAgICAg
ICAgbWF0Y2hSZXF1ZXN0cy5hcHBlbmQoTWF0Y2hSZXF1ZXN0KGl0LT52YWx1ZS5nZXQoKSwgaW5j
bHVkZUVtcHR5UnVsZXMsIGl0LT5rZXkpKTsKKyAgICAgICAgbWF0Y2hSZXF1ZXN0cy5hcHBlbmQo
TWF0Y2hSZXF1ZXN0KGl0LT52YWx1ZS5nZXQoKSwgaW5jbHVkZUVtcHR5UnVsZXMsIGl0LT5rZXks
IFNlbGVjdG9yQ2hlY2tlcjo6Q3Jvc3Nlc0JvdW5kYXJ5KSk7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmgKaW5kZXggOGM0YmRiODgwMTlmYjcxYTU4N2Y2Zjc0
OGZjZTQwOTAzODk2NmY3OC4uMTNjNGVlNTg2ZWE5Yjg2ZjFjYTQ5ZTU1N2NlYmQzYzkxOTU5OTc5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5oCkBAIC00Nyw3ICs0Nyw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIGFkZFJ1bGUoU3R5bGVSdWxlKiwgc2l6ZV90IHNlbGVjdG9ySW5k
ZXgsIENvbnRhaW5lck5vZGUqIHNjb3BlLCBBZGRSdWxlRmxhZ3MpOwogICAgIHZvaWQgY29sbGVj
dE1hdGNoUmVxdWVzdHMoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcywgVmVjdG9yPE1hdGNoUmVxdWVz
dD4mKTsKICAgICB2b2lkIGNsZWFyKCkgeyBtX3NoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcC5j
bGVhcigpOyB9Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3dEaXN0
cmlidXRlZFJ1bGVTZXRNYXAuaXNFbXB0eSgpOyB9CiBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFz
aE1hcDxjb25zdCBDb250YWluZXJOb2RlKiwgT3duUHRyPFJ1bGVTZXQ+ID4gU2hhZG93RGlzdHJp
YnV0ZWRSdWxlU2V0TWFwOwogICAgIFNoYWRvd0Rpc3RyaWJ1dGVkUnVsZVNldE1hcCBtX3NoYWRv
d0Rpc3RyaWJ1dGVkUnVsZVNldE1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9F
bGVtZW50UnVsZUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVD
b2xsZWN0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODU2MWE0Nzg3ZmVi
ODlhOTMzYzY0YmQ5YzZiMzk2NDg5MWFhNDdmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rv
ci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICogICAgICAgICAgIChDKSAyMDA0
LTIwMDUgQWxsYW4gU2FuZGZlbGQgSmVuc2VuIChrZGVAY2FyZXdvbGYuY29tKQotICogQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA3IE5pY2hvbGFzIFNoYW5rcyAod2Via2l0QG5pY2tzaGFua3MuY29t
KQotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAy
MDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAwNyBBbGV4ZXkgUHJvc2t1cnlha292IDxhcEB3ZWJraXQub3JnPgotICogQ29w
eXJpZ2h0IChDKSAyMDA3LCAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+Ci0gKiBD
b3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKLSAqIENvcHlyaWdodCAoYykgMjAx
MSwgQ29kZSBBdXJvcmEgRm9ydW0uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0g
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
Ci0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkVsZW1lbnRSdWxlQ29sbGVjdG9yLmgiCi0K
LSNpbmNsdWRlICJDU1NEZWZhdWx0U3R5bGVTaGVldHMuaCIKLSNpbmNsdWRlICJDU1NSdWxlLmgi
Ci0jaW5jbHVkZSAiQ1NTUnVsZUxpc3QuaCIKLSNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgotI2lu
Y2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgotI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIK
LSNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgotI2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgotI2lu
Y2x1ZGUgIlNWR0VsZW1lbnQuaCIKLSNpbmNsdWRlICJTZWxlY3RvckNoZWNrZXJGYXN0UGF0aC5o
IgotI2luY2x1ZGUgIlNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVnaWVzLmgiCi0jaW5jbHVkZSAiU3R5
bGVQcm9wZXJ0eVNldC5oIgotI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKLQotI2luY2x1ZGUg
PHd0Zi9UZW1wb3JhcnlDaGFuZ2UuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMg
U3R5bGVQcm9wZXJ0eVNldCogbGVmdFRvUmlnaHREZWNsYXJhdGlvbigpCi17Ci0gICAgREVGSU5F
X1NUQVRJQ19MT0NBTChSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4sIGxlZnRUb1JpZ2h0RGVjbCwg
KFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZSgpKSk7Ci0gICAgaWYgKGxlZnRUb1JpZ2h0RGVjbC0+
aXNFbXB0eSgpKQotICAgICAgICBsZWZ0VG9SaWdodERlY2wtPnNldFByb3BlcnR5KENTU1Byb3Bl
cnR5RGlyZWN0aW9uLCBDU1NWYWx1ZUx0cik7Ci0gICAgcmV0dXJuIGxlZnRUb1JpZ2h0RGVjbC5n
ZXQoKTsKLX0KLQotc3RhdGljIFN0eWxlUHJvcGVydHlTZXQqIHJpZ2h0VG9MZWZ0RGVjbGFyYXRp
b24oKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+
LCByaWdodFRvTGVmdERlY2wsIChTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKSkpOwotICAgIGlm
IChyaWdodFRvTGVmdERlY2wtPmlzRW1wdHkoKSkKLSAgICAgICAgcmlnaHRUb0xlZnREZWNsLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgQ1NTVmFsdWVSdGwpOwotICAgIHJldHVy
biByaWdodFRvTGVmdERlY2wuZ2V0KCk7Ci19Ci0KLVN0eWxlUmVzb2x2ZXI6Ok1hdGNoUmVzdWx0
JiBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hlZFJlc3VsdCgpCi17Ci0gICAgQVNTRVJUKG1f
bW9kZSA9PSBTZWxlY3RvckNoZWNrZXI6OlJlc29sdmluZ1N0eWxlKTsKLSAgICByZXR1cm4gbV9y
ZXN1bHQ7Ci19Ci0KLVBhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IEVsZW1lbnRSdWxlQ29sbGVjdG9y
OjptYXRjaGVkUnVsZUxpc3QoKQotewotICAgIEFTU0VSVChtX21vZGUgPT0gU2VsZWN0b3JDaGVj
a2VyOjpDb2xsZWN0aW5nUnVsZXMpOwotICAgIHJldHVybiBtX3J1bGVMaXN0LnJlbGVhc2UoKTsK
LX0KLQotaW5saW5lIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OmFkZE1hdGNoZWRSdWxlKGNv
bnN0IFJ1bGVEYXRhKiBydWxlKQotewotICAgIGlmICghbV9tYXRjaGVkUnVsZXMpCi0gICAgICAg
IG1fbWF0Y2hlZFJ1bGVzID0gYWRvcHRQdHIobmV3IFZlY3Rvcjxjb25zdCBSdWxlRGF0YSosIDMy
Pik7Ci0gICAgbV9tYXRjaGVkUnVsZXMtPmFwcGVuZChydWxlKTsKLX0KLQotaW5saW5lIHZvaWQg
RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNsZWFyTWF0Y2hlZFJ1bGVzKCkKLXsKLSAgICBpZiAoIW1f
bWF0Y2hlZFJ1bGVzKQotICAgICAgICByZXR1cm47Ci0gICAgbV9tYXRjaGVkUnVsZXMtPmNsZWFy
KCk7Ci19Ci0KLWlubGluZSBTdGF0aWNDU1NSdWxlTGlzdCogRWxlbWVudFJ1bGVDb2xsZWN0b3I6
OmVuc3VyZVJ1bGVMaXN0KCkKLXsKLSAgICBpZiAoIW1fcnVsZUxpc3QpCi0gICAgICAgIG1fcnVs
ZUxpc3QgPSBTdGF0aWNDU1NSdWxlTGlzdDo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJuIG1fcnVsZUxp
c3QuZ2V0KCk7Ci19Ci0KLWlubGluZSB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjphZGRFbGVt
ZW50U3R5bGVQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnR5U2V0LCBi
b29sIGlzQ2FjaGVhYmxlKQotewotICAgIGlmICghcHJvcGVydHlTZXQpCi0gICAgICAgIHJldHVy
bjsKLSAgICBtX3Jlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUgPSBtX3Jlc3VsdC5tYXRjaGVk
UHJvcGVydGllcy5zaXplKCk7Ci0gICAgaWYgKG1fcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1
bGUgPT0gLTEpCi0gICAgICAgIG1fcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUgPSBtX3Jl
c3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGU7Ci0gICAgbV9yZXN1bHQuYWRkTWF0Y2hlZFByb3Bl
cnRpZXMocHJvcGVydHlTZXQpOwotICAgIGlmICghaXNDYWNoZWFibGUpCi0gICAgICAgIG1fcmVz
dWx0LmlzQ2FjaGVhYmxlID0gZmFsc2U7Ci19Ci0KLWNsYXNzIE1hdGNoaW5nVUFSdWxlc1Njb3Bl
IHsKLXB1YmxpYzoKLSAgICBNYXRjaGluZ1VBUnVsZXNTY29wZSgpOwotICAgIH5NYXRjaGluZ1VB
UnVsZXNTY29wZSgpOwotCi0gICAgc3RhdGljIGJvb2wgaXNNYXRjaGluZ1VBUnVsZXMoKTsKLQot
cHJpdmF0ZToKLSAgICBzdGF0aWMgYm9vbCBtX21hdGNoaW5nVUFSdWxlczsKLX07Ci0KLU1hdGNo
aW5nVUFSdWxlc1Njb3BlOjpNYXRjaGluZ1VBUnVsZXNTY29wZSgpCi17Ci0gICAgQVNTRVJUKCFt
X21hdGNoaW5nVUFSdWxlcyk7Ci0gICAgbV9tYXRjaGluZ1VBUnVsZXMgPSB0cnVlOwotfQotCi1N
YXRjaGluZ1VBUnVsZXNTY29wZTo6fk1hdGNoaW5nVUFSdWxlc1Njb3BlKCkKLXsKLSAgICBtX21h
dGNoaW5nVUFSdWxlcyA9IGZhbHNlOwotfQotCi1pbmxpbmUgYm9vbCBNYXRjaGluZ1VBUnVsZXNT
Y29wZTo6aXNNYXRjaGluZ1VBUnVsZXMoKQotewotICAgIHJldHVybiBtX21hdGNoaW5nVUFSdWxl
czsKLX0KLQotYm9vbCBNYXRjaGluZ1VBUnVsZXNTY29wZTo6bV9tYXRjaGluZ1VBUnVsZXMgPSBm
YWxzZTsKLQotdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMo
Y29uc3QgTWF0Y2hSZXF1ZXN0JiBtYXRjaFJlcXVlc3QsIFN0eWxlUmVzb2x2ZXI6OlJ1bGVSYW5n
ZSYgcnVsZVJhbmdlKQotewotICAgIEFTU0VSVChtYXRjaFJlcXVlc3QucnVsZVNldCk7Ci0gICAg
QVNTRVJUKG1fc3RhdGUuZWxlbWVudCgpKTsKLQotICAgIGNvbnN0IFN0eWxlUmVzb2x2ZXI6OlN0
YXRlJiBzdGF0ZSA9IG1fc3RhdGU7Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRlLmVsZW1l
bnQoKTsKLSAgICBjb25zdCBTdHlsZWRFbGVtZW50KiBzdHlsZWRFbGVtZW50ID0gc3RhdGUuc3R5
bGVkRWxlbWVudCgpOwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcHNldWRvSWQgPSBlbGVtZW50
LT5zaGFkb3dQc2V1ZG9JZCgpOwotICAgIGlmICghcHNldWRvSWQuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIEFTU0VSVChzdHlsZWRFbGVtZW50KTsKLSAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNG
b3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT5zaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMocHNl
dWRvSWQuaW1wbCgpKSwgbWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOwotICAgIH0KLQotI2lmIEVO
QUJMRShWSURFT19UUkFDSykKLSAgICBpZiAoZWxlbWVudC0+aXNXZWJWVFRFbGVtZW50KCkpCi0g
ICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+
Y3VlUHNldWRvUnVsZXMoKSwgbWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOwotI2VuZGlmCi0gICAg
Ly8gQ2hlY2sgd2hldGhlciBvdGhlciB0eXBlcyBvZiBydWxlcyBhcmUgYXBwbGljYWJsZSBpbiB0
aGUgY3VycmVudCB0cmVlIHNjb3BlLiBDcml0ZXJpYSBmb3IgdGhpczoKLSAgICAvLyBhKSBpdCdz
IGEgVUEgcnVsZQotICAgIC8vIGIpIHRoZSB0cmVlIHNjb3BlIGFsbG93cyBhdXRob3IgcnVsZXMK
LSAgICAvLyBjKSB0aGUgcnVsZXMgY29tZXMgZnJvbSBhIHNjb3BlZCBzdHlsZSBzaGVldCB3aXRo
aW4gdGhlIHNhbWUgdHJlZSBzY29wZQotICAgIFRyZWVTY29wZSogdHJlZVNjb3BlID0gZWxlbWVu
dC0+dHJlZVNjb3BlKCk7Ci0gICAgaWYgKCFNYXRjaGluZ1VBUnVsZXNTY29wZTo6aXNNYXRjaGlu
Z1VBUnVsZXMoKQotICAgICAgICAmJiAhdHJlZVNjb3BlLT5hcHBseUF1dGhvclN0eWxlcygpCi0g
ICAgICAgICYmICghbWF0Y2hSZXF1ZXN0LnNjb3BlIHx8IG1hdGNoUmVxdWVzdC5zY29wZS0+dHJl
ZVNjb3BlKCkgIT0gdHJlZVNjb3BlKQotICAgICAgICAmJiBtX2JlaGF2aW9yQXRCb3VuZGFyeSA9
PSBTZWxlY3RvckNoZWNrZXI6OkRvZXNOb3RDcm9zc0JvdW5kYXJ5KQotICAgICAgICByZXR1cm47
Ci0KLSAgICAvLyBXZSBuZWVkIHRvIGNvbGxlY3QgdGhlIHJ1bGVzIGZvciBpZCwgY2xhc3MsIHRh
ZywgYW5kIGV2ZXJ5dGhpbmcgZWxzZSBpbnRvIGEgYnVmZmVyIGFuZAotICAgIC8vIHRoZW4gc29y
dCB0aGUgYnVmZmVyLgotICAgIGlmIChlbGVtZW50LT5oYXNJRCgpKQotICAgICAgICBjb2xsZWN0
TWF0Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPmlkUnVsZXMoZWxlbWVu
dC0+aWRGb3JTdHlsZVJlc29sdXRpb24oKS5pbXBsKCkpLCBtYXRjaFJlcXVlc3QsIHJ1bGVSYW5n
ZSk7Ci0gICAgaWYgKHN0eWxlZEVsZW1lbnQgJiYgc3R5bGVkRWxlbWVudC0+aGFzQ2xhc3MoKSkg
ewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0eWxlZEVsZW1lbnQtPmNsYXNzTmFt
ZXMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlz
dChtYXRjaFJlcXVlc3QucnVsZVNldC0+Y2xhc3NSdWxlcyhzdHlsZWRFbGVtZW50LT5jbGFzc05h
bWVzKClbaV0uaW1wbCgpKSwgbWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOwotICAgIH0KLQotICAg
IGlmIChlbGVtZW50LT5pc0xpbmsoKSkKLSAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JM
aXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT5saW5rUHNldWRvQ2xhc3NSdWxlcygpLCBtYXRjaFJl
cXVlc3QsIHJ1bGVSYW5nZSk7Ci0gICAgaWYgKFNlbGVjdG9yQ2hlY2tlcjo6bWF0Y2hlc0ZvY3Vz
UHNldWRvQ2xhc3MoZWxlbWVudCkpCi0gICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlz
dChtYXRjaFJlcXVlc3QucnVsZVNldC0+Zm9jdXNQc2V1ZG9DbGFzc1J1bGVzKCksIG1hdGNoUmVx
dWVzdCwgcnVsZVJhbmdlKTsKLSAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hS
ZXF1ZXN0LnJ1bGVTZXQtPnRhZ1J1bGVzKGVsZW1lbnQtPmxvY2FsTmFtZSgpLmltcGwoKSksIG1h
dGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsKLSAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3Qo
bWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPnVuaXZlcnNhbFJ1bGVzKCksIG1hdGNoUmVxdWVzdCwgcnVs
ZVJhbmdlKTsKLX0KLQotdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5n
UnVsZXNGb3JSZWdpb24oY29uc3QgTWF0Y2hSZXF1ZXN0JiBtYXRjaFJlcXVlc3QsIFN0eWxlUmVz
b2x2ZXI6OlJ1bGVSYW5nZSYgcnVsZVJhbmdlKQotewotICAgIGlmICghbV9yZWdpb25Gb3JTdHls
aW5nKQotICAgICAgICByZXR1cm47Ci0KLSAgICB1bnNpZ25lZCBzaXplID0gbWF0Y2hSZXF1ZXN0
LnJ1bGVTZXQtPm1fcmVnaW9uU2VsZWN0b3JzQW5kUnVsZVNldHMuc2l6ZSgpOwotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgY29uc3QgQ1NTU2VsZWN0
b3IqIHJlZ2lvblNlbGVjdG9yID0gbWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPm1fcmVnaW9uU2VsZWN0
b3JzQW5kUnVsZVNldHMuYXQoaSkuc2VsZWN0b3I7Ci0gICAgICAgIGlmIChjaGVja1JlZ2lvblNl
bGVjdG9yKHJlZ2lvblNlbGVjdG9yLCBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obV9yZWdpb25Gb3JT
dHlsaW5nLT5ub2RlKCkpKSkgewotICAgICAgICAgICAgUnVsZVNldCogcmVnaW9uUnVsZXMgPSBt
YXRjaFJlcXVlc3QucnVsZVNldC0+bV9yZWdpb25TZWxlY3RvcnNBbmRSdWxlU2V0cy5hdChpKS5y
dWxlU2V0LmdldCgpOwotICAgICAgICAgICAgQVNTRVJUKHJlZ2lvblJ1bGVzKTsKLSAgICAgICAg
ICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKE1hdGNoUmVxdWVzdChyZWdpb25SdWxlcywgbWF0Y2hS
ZXF1ZXN0LmluY2x1ZGVFbXB0eVJ1bGVzLCBtYXRjaFJlcXVlc3Quc2NvcGUpLCBydWxlUmFuZ2Up
OwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpzb3J0
QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoKQotewotICAgIGNvbnN0IFN0eWxlUmVzb2x2ZXI6OlN0
YXRlJiBzdGF0ZSA9IG1fc3RhdGU7Ci0KLSAgICBpZiAoIW1fbWF0Y2hlZFJ1bGVzIHx8IG1fbWF0
Y2hlZFJ1bGVzLT5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNvcnRNYXRjaGVk
UnVsZXMoKTsKLQotICAgIFZlY3Rvcjxjb25zdCBSdWxlRGF0YSosIDMyPiYgbWF0Y2hlZFJ1bGVz
ID0gKm1fbWF0Y2hlZFJ1bGVzOwotICAgIGlmIChtX21vZGUgPT0gU2VsZWN0b3JDaGVja2VyOjpD
b2xsZWN0aW5nUnVsZXMpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1hdGNo
ZWRSdWxlcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIGVuc3VyZVJ1bGVMaXN0KCktPnJ1bGVz
KCkuYXBwZW5kKG1hdGNoZWRSdWxlc1tpXS0+cnVsZSgpLT5jcmVhdGVDU1NPTVdyYXBwZXIoKSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBOb3cgdHJhbnNmZXIgdGhlIHNldCBv
ZiBtYXRjaGVkIHJ1bGVzIG92ZXIgdG8gb3VyIGxpc3Qgb2YgZGVjbGFyYXRpb25zLgotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXRjaGVkUnVsZXMuc2l6ZSgpOyBpKyspIHsKLSAgICAg
ICAgaWYgKHN0YXRlLnN0eWxlKCkgJiYgbWF0Y2hlZFJ1bGVzW2ldLT5jb250YWluc1VuY29tbW9u
QXR0cmlidXRlU2VsZWN0b3IoKSkKLSAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldFVuaXF1
ZSgpOwotICAgICAgICBtX3Jlc3VsdC5hZGRNYXRjaGVkUHJvcGVydGllcyhtYXRjaGVkUnVsZXNb
aV0tPnJ1bGUoKS0+cHJvcGVydGllcygpLCBtYXRjaGVkUnVsZXNbaV0tPnJ1bGUoKSwgbWF0Y2hl
ZFJ1bGVzW2ldLT5saW5rTWF0Y2hUeXBlKCksIG1hdGNoZWRSdWxlc1tpXS0+cHJvcGVydHlXaGl0
ZWxpc3RUeXBlKCkpOwotICAgIH0KLX0KLQotdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0
Y2hTY29wZWRBdXRob3JSdWxlcyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQotewotI2lmIEVOQUJM
RShTVFlMRV9TQ09QRUQpIHx8IEVOQUJMRShTSEFET1dfRE9NKQotICAgIGlmICghbV9zY29wZVJl
c29sdmVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBNYXRjaCBzY29wZWQgYXV0aG9yIHJ1
bGVzIGJ5IHRyYXZlcnNpbmcgdGhlIHNjb3BlZCBlbGVtZW50IHN0YWNrIChyZWJ1aWxkIGl0IGlm
IGl0IGdvdCBpbmNvbnNpc3RlbnQpLgotICAgIGlmIChtX3Njb3BlUmVzb2x2ZXItPmhhc1Njb3Bl
ZFN0eWxlcygpICYmIG1fc2NvcGVSZXNvbHZlci0+ZW5zdXJlU3RhY2tDb25zaXN0ZW5jeShtX3N0
YXRlLmVsZW1lbnQoKSkpIHsKLSAgICAgICAgYm9vbCBhcHBseUF1dGhvclN0eWxlcyA9IG1fc3Rh
dGUuZWxlbWVudCgpLT50cmVlU2NvcGUoKS0+YXBwbHlBdXRob3JTdHlsZXMoKTsKLSAgICAgICAg
Ym9vbCBkb2N1bWVudFNjb3BlID0gdHJ1ZTsKLSAgICAgICAgdW5zaWduZWQgc2NvcGVTaXplID0g
bV9zY29wZVJlc29sdmVyLT5zdGFja1NpemUoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHNjb3BlU2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICBjbGVhck1hdGNoZWRSdWxlcygp
OwotICAgICAgICAgICAgbV9yZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlID0gbV9yZXN1bHQu
bWF0Y2hlZFByb3BlcnRpZXMuc2l6ZSgpIC0gMTsKLQotICAgICAgICAgICAgY29uc3QgU3R5bGVT
Y29wZVJlc29sdmVyOjpTdGFja0ZyYW1lJiBmcmFtZSA9IG1fc2NvcGVSZXNvbHZlci0+c3RhY2tG
cmFtZUF0KGkpOwotICAgICAgICAgICAgZG9jdW1lbnRTY29wZSA9IGRvY3VtZW50U2NvcGUgJiYg
IWZyYW1lLm1fc2NvcGUtPmlzSW5TaGFkb3dUcmVlKCk7Ci0gICAgICAgICAgICBpZiAoZG9jdW1l
bnRTY29wZSkgewotICAgICAgICAgICAgICAgIGlmICghYXBwbHlBdXRob3JTdHlsZXMpCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBpZiAoIW1fc2NvcGVSZXNvbHZlci0+bWF0Y2hlc1N0eWxlQm91bmRzKGZyYW1lKSkK
LSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIE1hdGNoUmVxdWVzdCBtYXRjaFJlcXVlc3QoZnJhbWUubV9ydWxlU2V0LCBpbmNsdWRlRW1w
dHlSdWxlcywgZnJhbWUubV9zY29wZSk7Ci0gICAgICAgICAgICBTdHlsZVJlc29sdmVyOjpSdWxl
UmFuZ2UgcnVsZVJhbmdlID0gbV9yZXN1bHQucmFuZ2VzLmF1dGhvclJ1bGVSYW5nZSgpOwotICAg
ICAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMobWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOwot
ICAgICAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24obWF0Y2hSZXF1ZXN0LCBy
dWxlUmFuZ2UpOwotICAgICAgICAgICAgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKCk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICBtYXRjaEhvc3RSdWxlcyhpbmNsdWRlRW1wdHlSdWxlcyk7
Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShpbmNsdWRlRW1wdHlSdWxlcyk7Ci0jZW5kaWYKLX0K
LQotdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hIb3N0UnVsZXMoYm9vbCBpbmNsdWRl
RW1wdHlSdWxlcykKLXsKLSNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLSAgICBBU1NFUlQobV9zY29w
ZVJlc29sdmVyKTsKLQotICAgIGNsZWFyTWF0Y2hlZFJ1bGVzKCk7Ci0gICAgbV9yZXN1bHQucmFu
Z2VzLmxhc3RBdXRob3JSdWxlID0gbV9yZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMuc2l6ZSgpIC0g
MTsKLQotICAgIFZlY3RvcjxSdWxlU2V0Kj4gbWF0Y2hlZFJ1bGVzOwotICAgIG1fc2NvcGVSZXNv
bHZlci0+bWF0Y2hIb3N0UnVsZXMobV9zdGF0ZS5lbGVtZW50KCksIG1hdGNoZWRSdWxlcyk7Ci0g
ICAgaWYgKG1hdGNoZWRSdWxlcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZv
ciAodW5zaWduZWQgaSA9IG1hdGNoZWRSdWxlcy5zaXplKCk7IGkgPiAwOyAtLWkpIHsKLSAgICAg
ICAgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlIHJ1bGVSYW5nZSA9IG1fcmVzdWx0LnJhbmdlcy5h
dXRob3JSdWxlUmFuZ2UoKTsKLSAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMoTWF0Y2hSZXF1
ZXN0KG1hdGNoZWRSdWxlcy5hdChpLTEpLCBpbmNsdWRlRW1wdHlSdWxlcywgbV9zdGF0ZS5lbGVt
ZW50KCkpLCBydWxlUmFuZ2UpOwotICAgIH0KLSAgICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVs
ZXMoKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGluY2x1ZGVFbXB0eVJ1bGVzKTsKLSNlbmRp
ZgotfQotCi0jaWYgRU5BQkxFKFNIQURPV19ET00pCi1pbmxpbmUgdm9pZCBFbGVtZW50UnVsZUNv
bGxlY3Rvcjo6bWF0Y2hTaGFkb3dEaXN0cmlidXRlZFJ1bGVzKGJvb2wgaW5jbHVkZUVtcHR5UnVs
ZXMsIFN0eWxlUmVzb2x2ZXI6OlJ1bGVSYW5nZSYgcnVsZVJhbmdlKQotewotICAgIGlmIChtX3J1
bGVTZXRzLnNoYWRvd0Rpc3RyaWJ1dGVkUnVsZXMoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIFRlbXBvcmFyeUNoYW5nZTxib29sPiBjYW5Vc2VGYXN0UmVqZWN0KG1fY2FuVXNl
RmFzdFJlamVjdCwgZmFsc2UpOwotICAgIFRlbXBvcmFyeUNoYW5nZTxTZWxlY3RvckNoZWNrZXI6
OkJlaGF2aW9yQXRCb3VuZGFyeT4gYmVoYXZpb3JBdEJvdW5kYXJ5KG1fYmVoYXZpb3JBdEJvdW5k
YXJ5LCBTZWxlY3RvckNoZWNrZXI6OkNyb3NzZXNCb3VuZGFyeSk7Ci0KLSAgICBWZWN0b3I8TWF0
Y2hSZXF1ZXN0PiBtYXRjaFJlcXVlc3RzOwotICAgIG1fcnVsZVNldHMuc2hhZG93RGlzdHJpYnV0
ZWRSdWxlcygpLmNvbGxlY3RNYXRjaFJlcXVlc3RzKGluY2x1ZGVFbXB0eVJ1bGVzLCBtYXRjaFJl
cXVlc3RzKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hdGNoUmVxdWVzdHMuc2l6ZSgp
OyArK2kpCi0gICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKG1hdGNoUmVxdWVzdHNbaV0sIHJ1
bGVSYW5nZSk7Ci19Ci0jZW5kaWYKLQotdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hB
dXRob3JSdWxlcyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQotewotICAgIGNsZWFyTWF0Y2hlZFJ1
bGVzKCk7Ci0gICAgbV9yZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlID0gbV9yZXN1bHQubWF0
Y2hlZFByb3BlcnRpZXMuc2l6ZSgpIC0gMTsKLQotICAgIGlmICghbV9zdGF0ZS5lbGVtZW50KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIC8vIE1hdGNoIGdsb2JhbCBhdXRob3IgcnVsZXMuCi0g
ICAgTWF0Y2hSZXF1ZXN0IG1hdGNoUmVxdWVzdChtX3J1bGVTZXRzLmF1dGhvclN0eWxlKCksIGlu
Y2x1ZGVFbXB0eVJ1bGVzKTsKLSAgICBTdHlsZVJlc29sdmVyOjpSdWxlUmFuZ2UgcnVsZVJhbmdl
ID0gbV9yZXN1bHQucmFuZ2VzLmF1dGhvclJ1bGVSYW5nZSgpOwotICAgIGNvbGxlY3RNYXRjaGlu
Z1J1bGVzKG1hdGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsKLSAgICBjb2xsZWN0TWF0Y2hpbmdSdWxl
c0ZvclJlZ2lvbihtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7Ci0jaWYgRU5BQkxFKFNIQURPV19E
T00pCi0gICAgbWF0Y2hTaGFkb3dEaXN0cmlidXRlZFJ1bGVzKGluY2x1ZGVFbXB0eVJ1bGVzLCBy
dWxlUmFuZ2UpOwotI2VuZGlmCi0gICAgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKCk7Ci0K
LSAgICBtYXRjaFNjb3BlZEF1dGhvclJ1bGVzKGluY2x1ZGVFbXB0eVJ1bGVzKTsKLX0KLQotdm9p
ZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVc2VyUnVsZXMoYm9vbCBpbmNsdWRlRW1wdHlS
dWxlcykKLXsKLSAgICBpZiAoIW1fcnVsZVNldHMudXNlclN0eWxlKCkpCi0gICAgICAgIHJldHVy
bjsKLSAgICAKLSAgICBjbGVhck1hdGNoZWRSdWxlcygpOwotCi0gICAgbV9yZXN1bHQucmFuZ2Vz
Lmxhc3RVc2VyUnVsZSA9IG1fcmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzLnNpemUoKSAtIDE7Ci0g
ICAgTWF0Y2hSZXF1ZXN0IG1hdGNoUmVxdWVzdChtX3J1bGVTZXRzLnVzZXJTdHlsZSgpLCBpbmNs
dWRlRW1wdHlSdWxlcyk7Ci0gICAgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlIHJ1bGVSYW5nZSA9
IG1fcmVzdWx0LnJhbmdlcy51c2VyUnVsZVJhbmdlKCk7Ci0gICAgY29sbGVjdE1hdGNoaW5nUnVs
ZXMobWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOwotICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9y
UmVnaW9uKG1hdGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsKLQotICAgIHNvcnRBbmRUcmFuc2Zlck1h
dGNoZWRSdWxlcygpOwotfQotCi12b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaFVBUnVs
ZXMoKQotewotICAgIE1hdGNoaW5nVUFSdWxlc1Njb3BlIHNjb3BlOwotCi0gICAgLy8gRmlyc3Qg
d2UgbWF0Y2ggcnVsZXMgZnJvbSB0aGUgdXNlciBhZ2VudCBzaGVldC4KLSAgICBpZiAoQ1NTRGVm
YXVsdFN0eWxlU2hlZXRzOjpzaW1wbGVEZWZhdWx0U3R5bGVTaGVldCkKLSAgICAgICAgbV9yZXN1
bHQuaXNDYWNoZWFibGUgPSBmYWxzZTsKLSAgICBSdWxlU2V0KiB1c2VyQWdlbnRTdHlsZVNoZWV0
ID0gbV9pc1ByaW50U3R5bGUKLSAgICAgICAgPyBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmRlZmF1
bHRQcmludFN0eWxlIDogQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpkZWZhdWx0U3R5bGU7Ci0gICAg
bWF0Y2hVQVJ1bGVzKHVzZXJBZ2VudFN0eWxlU2hlZXQpOwotCi0gICAgLy8gSW4gcXVpcmtzIG1v
ZGUsIHdlIG1hdGNoIHJ1bGVzIGZyb20gdGhlIHF1aXJrcyB1c2VyIGFnZW50IHNoZWV0LgotICAg
IGlmIChkb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkKLSAgICAgICAgbWF0Y2hVQVJ1bGVzKENT
U0RlZmF1bHRTdHlsZVNoZWV0czo6ZGVmYXVsdFF1aXJrc1N0eWxlKTsKLQotICAgIC8vIElmIGRv
Y3VtZW50IHVzZXMgdmlldyBzb3VyY2Ugc3R5bGVzIChpbiB2aWV3IHNvdXJjZSBtb2RlIG9yIGlu
IHhtbCB2aWV3ZXIgbW9kZSksIHRoZW4gd2UgbWF0Y2ggcnVsZXMgZnJvbSB0aGUgdmlldyBzb3Vy
Y2Ugc3R5bGUgc2hlZXQuCi0gICAgaWYgKGRvY3VtZW50KCktPmlzVmlld1NvdXJjZSgpKQotICAg
ICAgICBtYXRjaFVBUnVsZXMoQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjp2aWV3U291cmNlU3R5bGUo
KSk7Ci19Ci0KLXZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoVUFSdWxlcyhSdWxlU2V0
KiBydWxlcykKLXsKLSAgICBjbGVhck1hdGNoZWRSdWxlcygpOwotICAgIAotICAgIG1fcmVzdWx0
LnJhbmdlcy5sYXN0VUFSdWxlID0gbV9yZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMuc2l6ZSgpIC0g
MTsKLSAgICBTdHlsZVJlc29sdmVyOjpSdWxlUmFuZ2UgcnVsZVJhbmdlID0gbV9yZXN1bHQucmFu
Z2VzLlVBUnVsZVJhbmdlKCk7Ci0gICAgY29sbGVjdE1hdGNoaW5nUnVsZXMoTWF0Y2hSZXF1ZXN0
KHJ1bGVzKSwgcnVsZVJhbmdlKTsKLQotICAgIHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcygp
OwotfQotCi1pbmxpbmUgYm9vbCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1hdGNoZXMoY29u
c3QgUnVsZURhdGEmIHJ1bGVEYXRhLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSwgUHNldWRv
SWQmIGR5bmFtaWNQc2V1ZG8pCi17Ci0gICAgY29uc3QgU3R5bGVSZXNvbHZlcjo6U3RhdGUmIHN0
YXRlID0gbV9zdGF0ZTsKLQotICAgIGlmIChydWxlRGF0YS5oYXNGYXN0Q2hlY2thYmxlU2VsZWN0
b3IoKSkgewotICAgICAgICAvLyBXZSBrbm93IHRoaXMgc2VsZWN0b3IgZG9lcyBub3QgaW5jbHVk
ZSBhbnkgcHNldWRvIGVsZW1lbnRzLgotICAgICAgICBpZiAobV9wc2V1ZG9TdHlsZVJlcXVlc3Qu
cHNldWRvSWQgIT0gTk9QU0VVRE8pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IC8vIFdlIGtub3cgYSBzdWZmaWNpZW50bHkgc2ltcGxlIHNpbmdsZSBwYXJ0IHNlbGVjdG9yIG1h
dGNoZXMgc2ltcGx5IGJlY2F1c2Ugd2UgZm91bmQgaXQgZnJvbSB0aGUgcnVsZSBoYXNoLgotICAg
ICAgICAvLyBUaGlzIGlzIGxpbWl0ZWQgdG8gSFRNTCBvbmx5IHNvIHdlIGRvbid0IG5lZWQgdG8g
Y2hlY2sgdGhlIG5hbWVzcGFjZS4KLSAgICAgICAgaWYgKHJ1bGVEYXRhLmhhc1JpZ2h0bW9zdFNl
bGVjdG9yTWF0Y2hpbmdIVE1MQmFzZWRPblJ1bGVIYXNoKCkgJiYgc3RhdGUuZWxlbWVudCgpLT5p
c0hUTUxFbGVtZW50KCkpIHsKLSAgICAgICAgICAgIGlmICghcnVsZURhdGEuaGFzTXVsdGlwYXJ0
U2VsZWN0b3IoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAg
ICAgICBpZiAocnVsZURhdGEuc2VsZWN0b3IoKS0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6VGFn
ICYmICFTZWxlY3RvckNoZWNrZXI6OnRhZ01hdGNoZXMoc3RhdGUuZWxlbWVudCgpLCBydWxlRGF0
YS5zZWxlY3RvcigpLT50YWdRTmFtZSgpKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgU2VsZWN0b3JDaGVja2VyRmFzdFBhdGggc2VsZWN0b3JDaGVja2VyRmFzdFBhdGgocnVs
ZURhdGEuc2VsZWN0b3IoKSwgc3RhdGUuZWxlbWVudCgpKTsKLSAgICAgICAgaWYgKCFzZWxlY3Rv
ckNoZWNrZXJGYXN0UGF0aC5tYXRjaGVzUmlnaHRtb3N0QXR0cmlidXRlU2VsZWN0b3IoKSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICByZXR1cm4gc2VsZWN0b3JDaGVja2Vy
RmFzdFBhdGgubWF0Y2hlcygpOwotICAgIH0KLQotICAgIC8vIFNsb3cgcGF0aC4KLSAgICBTZWxl
Y3RvckNoZWNrZXIgc2VsZWN0b3JDaGVja2VyKGRvY3VtZW50KCksIG1fbW9kZSk7Ci0gICAgU2Vs
ZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCBjb250ZXh0KHJ1bGVEYXRhLnNl
bGVjdG9yKCksIHN0YXRlLmVsZW1lbnQoKSwgU2VsZWN0b3JDaGVja2VyOjpWaXNpdGVkTWF0Y2hF
bmFibGVkKTsKLSAgICBjb250ZXh0LmVsZW1lbnRTdHlsZSA9IHN0YXRlLnN0eWxlKCk7Ci0gICAg
Y29udGV4dC5zY29wZSA9IHNjb3BlOwotICAgIGNvbnRleHQucHNldWRvSWQgPSBtX3BzZXVkb1N0
eWxlUmVxdWVzdC5wc2V1ZG9JZDsKLSAgICBjb250ZXh0LnNjcm9sbGJhciA9IG1fcHNldWRvU3R5
bGVSZXF1ZXN0LnNjcm9sbGJhcjsKLSAgICBjb250ZXh0LnNjcm9sbGJhclBhcnQgPSBtX3BzZXVk
b1N0eWxlUmVxdWVzdC5zY3JvbGxiYXJQYXJ0OwotICAgIGNvbnRleHQuYmVoYXZpb3JBdEJvdW5k
YXJ5ID0gbV9iZWhhdmlvckF0Qm91bmRhcnk7Ci0gICAgU2VsZWN0b3JDaGVja2VyOjpNYXRjaCBt
YXRjaCA9IHNlbGVjdG9yQ2hlY2tlci5tYXRjaChjb250ZXh0LCBkeW5hbWljUHNldWRvLCBET01T
aWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3koKSk7Ci0gICAgaWYgKG1hdGNoICE9IFNlbGVjdG9yQ2hl
Y2tlcjo6U2VsZWN0b3JNYXRjaGVzKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1f
cHNldWRvU3R5bGVSZXF1ZXN0LnBzZXVkb0lkICE9IE5PUFNFVURPICYmIG1fcHNldWRvU3R5bGVS
ZXF1ZXN0LnBzZXVkb0lkICE9IGR5bmFtaWNQc2V1ZG8pCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVj
dE1hdGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qIHJ1bGVzLCBjb25z
dCBNYXRjaFJlcXVlc3QmIG1hdGNoUmVxdWVzdCwgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlJiBy
dWxlUmFuZ2UpCi17Ci0gICAgaWYgKCFydWxlcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY29u
c3QgU3R5bGVSZXNvbHZlcjo6U3RhdGUmIHN0YXRlID0gbV9zdGF0ZTsKLQotICAgIHVuc2lnbmVk
IHNpemUgPSBydWxlcy0+c2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXpl
OyArK2kpIHsKLSAgICAgICAgY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhID0gcnVsZXMtPmF0KGkp
OwotICAgICAgICBpZiAobV9jYW5Vc2VGYXN0UmVqZWN0ICYmIG1fc2VsZWN0b3JGaWx0ZXIuZmFz
dFJlamVjdFNlbGVjdG9yPFJ1bGVEYXRhOjptYXhpbXVtSWRlbnRpZmllckNvdW50PihydWxlRGF0
YS5kZXNjZW5kYW50U2VsZWN0b3JJZGVudGlmaWVySGFzaGVzKCkpKQotICAgICAgICAgICAgY29u
dGludWU7Ci0KLSAgICAgICAgU3R5bGVSdWxlKiBydWxlID0gcnVsZURhdGEucnVsZSgpOwotICAg
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsTWF0Y2hSdWxlKGRvY3VtZW50KCksIHJ1bGUsIG1faW5zcGVjdG9y
Q1NTT01XcmFwcGVycywgZG9jdW1lbnQoKS0+c3R5bGVTaGVldENvbGxlY3Rpb24oKSk7Ci0gICAg
ICAgIFBzZXVkb0lkIGR5bmFtaWNQc2V1ZG8gPSBOT1BTRVVETzsKLSAgICAgICAgaWYgKHJ1bGVN
YXRjaGVzKHJ1bGVEYXRhLCBtYXRjaFJlcXVlc3Quc2NvcGUsIGR5bmFtaWNQc2V1ZG8pKSB7Ci0g
ICAgICAgICAgICAvLyBJZiB0aGUgcnVsZSBoYXMgbm8gcHJvcGVydGllcyB0byBhcHBseSwgdGhl
biBpZ25vcmUgaXQgaW4gdGhlIG5vbi1kZWJ1ZyBtb2RlLgotICAgICAgICAgICAgY29uc3QgU3R5
bGVQcm9wZXJ0eVNldCogcHJvcGVydGllcyA9IHJ1bGUtPnByb3BlcnRpZXMoKTsKLSAgICAgICAg
ICAgIGlmICghcHJvcGVydGllcyB8fCAocHJvcGVydGllcy0+aXNFbXB0eSgpICYmICFtYXRjaFJl
cXVlc3QuaW5jbHVkZUVtcHR5UnVsZXMpKSB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRNYXRjaFJ1bGUoY29va2llLCBmYWxzZSk7Ci0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBGSVhNRTogRXhwb3Np
bmcgdGhlIG5vbi1zdGFuZGFyZCBnZXRNYXRjaGVkQ1NTUnVsZXMgQVBJIHRvIHdlYiBpcyB0aGUg
b25seSByZWFzb24gdGhpcyBpcyBuZWVkZWQuCi0gICAgICAgICAgICBpZiAobV9zYW1lT3JpZ2lu
T25seSAmJiAhcnVsZURhdGEuaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpKSB7Ci0gICAgICAg
ICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNYXRjaFJ1bGUoY29va2llLCBm
YWxzZSk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAvLyBJZiB3ZSdyZSBtYXRjaGluZyBub3JtYWwgcnVsZXMsIHNldCBhIHBzZXVkbyBiaXQg
aWYKLSAgICAgICAgICAgIC8vIHdlIHJlYWxseSBqdXN0IG1hdGNoZWQgYSBwc2V1ZG8tZWxlbWVu
dC4KLSAgICAgICAgICAgIGlmIChkeW5hbWljUHNldWRvICE9IE5PUFNFVURPICYmIG1fcHNldWRv
U3R5bGVSZXF1ZXN0LnBzZXVkb0lkID09IE5PUFNFVURPKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KG1fbW9kZSA9PSBTZWxlY3RvckNoZWNrZXI6OkNvbGxlY3RpbmdSdWxlcykgewotICAgICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1hdGNoUnVsZShjb29raWUs
IGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGlmIChkeW5hbWljUHNldWRvIDwgRklSU1RfSU5URVJOQUxfUFNF
VURPSUQpCi0gICAgICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEhhc1BzZXVkb1N0
eWxlKGR5bmFtaWNQc2V1ZG8pOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAvLyBVcGRhdGUgb3VyIGZpcnN0L2xhc3QgcnVsZSBpbmRpY2VzIGluIHRoZSBtYXRjaGVkIHJ1
bGVzIGFycmF5LgotICAgICAgICAgICAgICAgICsrcnVsZVJhbmdlLmxhc3RSdWxlSW5kZXg7Ci0g
ICAgICAgICAgICAgICAgaWYgKHJ1bGVSYW5nZS5maXJzdFJ1bGVJbmRleCA9PSAtMSkKLSAgICAg
ICAgICAgICAgICAgICAgcnVsZVJhbmdlLmZpcnN0UnVsZUluZGV4ID0gcnVsZVJhbmdlLmxhc3RS
dWxlSW5kZXg7Ci0KLSAgICAgICAgICAgICAgICAvLyBBZGQgdGhpcyBydWxlIHRvIG91ciBsaXN0
IG9mIG1hdGNoZWQgcnVsZXMuCi0gICAgICAgICAgICAgICAgYWRkTWF0Y2hlZFJ1bGUoJnJ1bGVE
YXRhKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1hdGNo
UnVsZShjb29raWUsIHRydWUpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTWF0
Y2hSdWxlKGNvb2tpZSwgZmFsc2UpOwotICAgIH0KLX0KLQotc3RhdGljIGlubGluZSBib29sIGNv
bXBhcmVSdWxlcyhjb25zdCBSdWxlRGF0YSogcjEsIGNvbnN0IFJ1bGVEYXRhKiByMikKLXsKLSAg
ICB1bnNpZ25lZCBzcGVjaWZpY2l0eTEgPSByMS0+c3BlY2lmaWNpdHkoKTsKLSAgICB1bnNpZ25l
ZCBzcGVjaWZpY2l0eTIgPSByMi0+c3BlY2lmaWNpdHkoKTsKLSAgICByZXR1cm4gKHNwZWNpZmlj
aXR5MSA9PSBzcGVjaWZpY2l0eTIpID8gcjEtPnBvc2l0aW9uKCkgPCByMi0+cG9zaXRpb24oKSA6
IHNwZWNpZmljaXR5MSA8IHNwZWNpZmljaXR5MjsKLX0KLQotdm9pZCBFbGVtZW50UnVsZUNvbGxl
Y3Rvcjo6c29ydE1hdGNoZWRSdWxlcygpCi17Ci0gICAgQVNTRVJUKG1fbWF0Y2hlZFJ1bGVzKTsK
LSAgICBzdGQ6OnNvcnQobV9tYXRjaGVkUnVsZXMtPmJlZ2luKCksIG1fbWF0Y2hlZFJ1bGVzLT5l
bmQoKSwgY29tcGFyZVJ1bGVzKTsKLX0KLQotdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0
Y2hBbGxSdWxlcyhib29sIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcywgYm9vbCBpbmNsdWRlU01J
TFByb3BlcnRpZXMpCi17Ci0gICAgbWF0Y2hVQVJ1bGVzKCk7Ci0KLSAgICAvLyBOb3cgd2UgY2hl
Y2sgdXNlciBzaGVldCBydWxlcy4KLSAgICBpZiAobWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzKQot
ICAgICAgICBtYXRjaFVzZXJSdWxlcyhmYWxzZSk7Ci0KLSAgICAvLyBOb3cgY2hlY2sgYXV0aG9y
IHJ1bGVzLCBiZWdpbm5pbmcgZmlyc3Qgd2l0aCBwcmVzZW50YXRpb25hbCBhdHRyaWJ1dGVzIG1h
cHBlZCBmcm9tIEhUTUwuCi0gICAgaWYgKG1fc3RhdGUuc3R5bGVkRWxlbWVudCgpKSB7Ci0gICAg
ICAgIGFkZEVsZW1lbnRTdHlsZVByb3BlcnRpZXMobV9zdGF0ZS5zdHlsZWRFbGVtZW50KCktPnBy
ZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKCkpOwotCi0gICAgICAgIC8vIE5vdyB3ZSBjaGVjayBh
ZGRpdGlvbmFsIG1hcHBlZCBkZWNsYXJhdGlvbnMuCi0gICAgICAgIC8vIFRhYmxlcyBhbmQgdGFi
bGUgY2VsbHMgc2hhcmUgYW4gYWRkaXRpb25hbCBtYXBwZWQgcnVsZSB0aGF0IG11c3QgYmUgYXBw
bGllZAotICAgICAgICAvLyBhZnRlciBhbGwgYXR0cmlidXRlcywgc2luY2UgdGhlaXIgbWFwcGVk
IHN0eWxlIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZiBtdWx0aXBsZSBhdHRyaWJ1dGVzLgotICAg
ICAgICBhZGRFbGVtZW50U3R5bGVQcm9wZXJ0aWVzKG1fc3RhdGUuc3R5bGVkRWxlbWVudCgpLT5h
ZGRpdGlvbmFsUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKSk7Ci0KLSAgICAgICAgaWYgKG1f
c3RhdGUuc3R5bGVkRWxlbWVudCgpLT5pc0hUTUxFbGVtZW50KCkpIHsKLSAgICAgICAgICAgIGJv
b2wgaXNBdXRvOwotICAgICAgICAgICAgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uID0gdG9I
VE1MRWxlbWVudChtX3N0YXRlLnN0eWxlZEVsZW1lbnQoKSktPmRpcmVjdGlvbmFsaXR5SWZoYXNE
aXJBdXRvQXR0cmlidXRlKGlzQXV0byk7Ci0gICAgICAgICAgICBpZiAoaXNBdXRvKQotICAgICAg
ICAgICAgICAgIG1fcmVzdWx0LmFkZE1hdGNoZWRQcm9wZXJ0aWVzKHRleHREaXJlY3Rpb24gPT0g
TFRSID8gbGVmdFRvUmlnaHREZWNsYXJhdGlvbigpIDogcmlnaHRUb0xlZnREZWNsYXJhdGlvbigp
KTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICAvLyBDaGVjayB0aGUgcnVsZXMgaW4gYXV0
aG9yIHNoZWV0cyBuZXh0LgotICAgIGlmIChtYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMpCi0gICAg
ICAgIG1hdGNoQXV0aG9yUnVsZXMoZmFsc2UpOwotCi0gICAgLy8gTm93IGNoZWNrIG91ciBpbmxp
bmUgc3R5bGUgYXR0cmlidXRlLgotICAgIGlmIChtYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMgJiYg
bV9zdGF0ZS5zdHlsZWRFbGVtZW50KCkgJiYgbV9zdGF0ZS5zdHlsZWRFbGVtZW50KCktPmlubGlu
ZVN0eWxlKCkpIHsKLSAgICAgICAgLy8gSW5saW5lIHN0eWxlIGlzIGltbXV0YWJsZSBhcyBsb25n
IGFzIHRoZXJlIGlzIG5vIENTU09NIHdyYXBwZXIuCi0gICAgICAgIC8vIEZJWE1FOiBNZWRpYSBj
b250cm9sIHNoYWRvdyB0cmVlcyBzZWVtIHRvIGhhdmUgcHJvYmxlbXMgd2l0aCBjYWNoaW5nLgot
ICAgICAgICBib29sIGlzSW5saW5lU3R5bGVDYWNoZWFibGUgPSAhbV9zdGF0ZS5zdHlsZWRFbGVt
ZW50KCktPmlubGluZVN0eWxlKCktPmlzTXV0YWJsZSgpICYmICFtX3N0YXRlLnN0eWxlZEVsZW1l
bnQoKS0+aXNJblNoYWRvd1RyZWUoKTsKLSAgICAgICAgLy8gRklYTUU6IENvbnN0aWZ5LgotICAg
ICAgICBhZGRFbGVtZW50U3R5bGVQcm9wZXJ0aWVzKG1fc3RhdGUuc3R5bGVkRWxlbWVudCgpLT5p
bmxpbmVTdHlsZSgpLCBpc0lubGluZVN0eWxlQ2FjaGVhYmxlKTsKLSAgICB9Ci0KLSNpZiBFTkFC
TEUoU1ZHKQotICAgIC8vIE5vdyBjaGVjayBTTUlMIGFuaW1hdGlvbiBvdmVycmlkZSBzdHlsZS4K
LSAgICBpZiAoaW5jbHVkZVNNSUxQcm9wZXJ0aWVzICYmIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxl
cyAmJiBtX3N0YXRlLnN0eWxlZEVsZW1lbnQoKSAmJiBtX3N0YXRlLnN0eWxlZEVsZW1lbnQoKS0+
aXNTVkdFbGVtZW50KCkpCi0gICAgICAgIGFkZEVsZW1lbnRTdHlsZVByb3BlcnRpZXMoc3RhdGlj
X2Nhc3Q8U1ZHRWxlbWVudCo+KG1fc3RhdGUuc3R5bGVkRWxlbWVudCgpKS0+YW5pbWF0ZWRTTUlM
U3R5bGVQcm9wZXJ0aWVzKCksIGZhbHNlIC8qIGlzQ2FjaGVhYmxlICovKTsKLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKGluY2x1ZGVTTUlMUHJvcGVydGllcyk7Ci0jZW5kaWYKLX0KLQotYm9vbCBF
bGVtZW50UnVsZUNvbGxlY3Rvcjo6aGFzQW55TWF0Y2hpbmdSdWxlcyhSdWxlU2V0KiBydWxlU2V0
KQotewotICAgIGNsZWFyTWF0Y2hlZFJ1bGVzKCk7Ci0KLSAgICBtX21vZGUgPSBTZWxlY3RvckNo
ZWNrZXI6OlNoYXJpbmdSdWxlczsKLSAgICBpbnQgZmlyc3RSdWxlSW5kZXggPSAtMSwgbGFzdFJ1
bGVJbmRleCA9IC0xOwotICAgIFN0eWxlUmVzb2x2ZXI6OlJ1bGVSYW5nZSBydWxlUmFuZ2UoZmly
c3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgpOwotICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKE1h
dGNoUmVxdWVzdChydWxlU2V0KSwgcnVsZVJhbmdlKTsKLQotICAgIHJldHVybiBtX21hdGNoZWRS
dWxlcyAmJiAhbV9tYXRjaGVkUnVsZXMtPmlzRW1wdHkoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVj
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGIyNDhjYWVkZjU4OWRhZWM5YmYzZTQ3MDM4OTA1NWEz
MDcyNmZlZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAorKysgL2Rldi9udWxsCkBA
IC0xLDEyMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtu
b2xsQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
LSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0g
Ki8KLQotI2lmbmRlZiBFbGVtZW50UnVsZUNvbGxlY3Rvcl9oCi0jZGVmaW5lIEVsZW1lbnRSdWxl
Q29sbGVjdG9yX2gKLQotI2luY2x1ZGUgIk1lZGlhUXVlcnlFdmFsdWF0b3IuaCIKLSNpbmNsdWRl
ICJTZWxlY3RvckNoZWNrZXIuaCIKLSNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCi0jaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBDU1NSdWxlTGlzdDsKLWNsYXNzIERvY3VtZW50UnVsZVNldHM7Ci1j
bGFzcyBSZW5kZXJSZWdpb247Ci1jbGFzcyBSdWxlRGF0YTsKLWNsYXNzIFJ1bGVTZXQ7Ci1jbGFz
cyBTZWxlY3RvckZpbHRlcjsKLWNsYXNzIFN0eWxlU2NvcGVSZXNvbHZlcjsKLWNsYXNzIFN0YXRp
Y0NTU1J1bGVMaXN0OwotCi1jbGFzcyBFbGVtZW50UnVsZUNvbGxlY3RvciB7Ci1wdWJsaWM6Ci0g
ICAgRWxlbWVudFJ1bGVDb2xsZWN0b3IoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgY29u
c3QgU3R5bGVSZXNvbHZlcjo6U3RhdGUmIHN0YXRlKQotICAgICAgICA6IG1fc3RhdGUoc3RhdGUp
Ci0gICAgICAgICwgbV9ydWxlU2V0cyhzdHlsZVJlc29sdmVyLT5ydWxlU2V0cygpKQotICAgICAg
ICAsIG1fc2VsZWN0b3JGaWx0ZXIoc3R5bGVSZXNvbHZlci0+c2VsZWN0b3JGaWx0ZXIoKSkKLSAg
ICAgICAgLCBtX2luc3BlY3RvckNTU09NV3JhcHBlcnMoc3R5bGVSZXNvbHZlci0+aW5zcGVjdG9y
Q1NTT01XcmFwcGVycygpKQotICAgICAgICAsIG1fc2NvcGVSZXNvbHZlcihzdHlsZVJlc29sdmVy
LT5zY29wZVJlc29sdmVyKCkpCi0gICAgICAgICwgbV9pc1ByaW50U3R5bGUoZmFsc2UpCi0gICAg
ICAgICwgbV9yZWdpb25Gb3JTdHlsaW5nKDApCi0gICAgICAgICwgbV9wc2V1ZG9TdHlsZVJlcXVl
c3QoTk9QU0VVRE8pCi0gICAgICAgICwgbV9zYW1lT3JpZ2luT25seShmYWxzZSkKLSAgICAgICAg
LCBtX21vZGUoU2VsZWN0b3JDaGVja2VyOjpSZXNvbHZpbmdTdHlsZSkKLSAgICAgICAgLCBtX2Nh
blVzZUZhc3RSZWplY3QobV9zZWxlY3RvckZpbHRlci5wYXJlbnRTdGFja0lzQ29uc2lzdGVudChz
dGF0ZS5wYXJlbnROb2RlKCkpKQotICAgICAgICAsIG1fYmVoYXZpb3JBdEJvdW5kYXJ5KFNlbGVj
dG9yQ2hlY2tlcjo6RG9lc05vdENyb3NzQm91bmRhcnkpIHsgfQotCi0gICAgdm9pZCBtYXRjaEFs
bFJ1bGVzKGJvb2wgbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzLCBib29sIGluY2x1ZGVTTUlMUHJv
cGVydGllcyk7Ci0gICAgdm9pZCBtYXRjaFVBUnVsZXMoKTsKLSAgICB2b2lkIG1hdGNoQXV0aG9y
UnVsZXMoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7Ci0gICAgdm9pZCBtYXRjaFVzZXJSdWxlcyhi
b29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKLQotICAgIHZvaWQgc2V0TW9kZShTZWxlY3RvckNoZWNr
ZXI6Ok1vZGUgbW9kZSkgeyBtX21vZGUgPSBtb2RlOyB9Ci0gICAgdm9pZCBzZXRQc2V1ZG9TdHls
ZVJlcXVlc3QoY29uc3QgUHNldWRvU3R5bGVSZXF1ZXN0JiByZXF1ZXN0KSB7IG1fcHNldWRvU3R5
bGVSZXF1ZXN0ID0gcmVxdWVzdDsgfQotICAgIHZvaWQgc2V0U2FtZU9yaWdpbk9ubHkoYm9vbCBm
KSB7IG1fc2FtZU9yaWdpbk9ubHkgPSBmOyB9IAotICAgIHZvaWQgc2V0UmVnaW9uRm9yU3R5bGlu
ZyhSZW5kZXJSZWdpb24qIHJlZ2lvbkZvclN0eWxpbmcpIHsgbV9yZWdpb25Gb3JTdHlsaW5nID0g
cmVnaW9uRm9yU3R5bGluZzsgfQotICAgIHZvaWQgc2V0TWVkaXVtKGNvbnN0IE1lZGlhUXVlcnlF
dmFsdWF0b3IqIG1lZGl1bSkgeyBtX2lzUHJpbnRTdHlsZSA9IG1lZGl1bS0+bWVkaWFUeXBlTWF0
Y2hTcGVjaWZpYygicHJpbnQiKTsgfQotCi0gICAgYm9vbCBoYXNBbnlNYXRjaGluZ1J1bGVzKFJ1
bGVTZXQqKTsKLQotICAgIFN0eWxlUmVzb2x2ZXI6Ok1hdGNoUmVzdWx0JiBtYXRjaGVkUmVzdWx0
KCk7Ci0gICAgUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gbWF0Y2hlZFJ1bGVMaXN0KCk7Ci0KLXBy
aXZhdGU6Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgeyByZXR1cm4gbV9zdGF0ZS5kb2N1bWVu
dCgpOyB9Ci0gICAgdm9pZCBhZGRFbGVtZW50U3R5bGVQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJv
cGVydHlTZXQqLCBib29sIGlzQ2FjaGVhYmxlID0gdHJ1ZSk7Ci0KLSAgICB2b2lkIG1hdGNoVUFS
dWxlcyhSdWxlU2V0Kik7Ci0jaWYgRU5BQkxFKFNIQURPV19ET00pCi0gICAgdm9pZCBtYXRjaFNo
YWRvd0Rpc3RyaWJ1dGVkUnVsZXMoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcywgU3R5bGVSZXNvbHZl
cjo6UnVsZVJhbmdlJik7Ci0jZW5kaWYKLSAgICB2b2lkIG1hdGNoU2NvcGVkQXV0aG9yUnVsZXMo
Ym9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7Ci0gICAgdm9pZCBtYXRjaEhvc3RSdWxlcyhib29sIGlu
Y2x1ZGVFbXB0eVJ1bGVzKTsKLQotICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXMoY29uc3Qg
TWF0Y2hSZXF1ZXN0JiwgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlJik7Ci0gICAgdm9pZCBjb2xs
ZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihjb25zdCBNYXRjaFJlcXVlc3QmLCBTdHlsZVJlc29s
dmVyOjpSdWxlUmFuZ2UmKTsKLSAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChj
b25zdCBWZWN0b3I8UnVsZURhdGE+KiwgY29uc3QgTWF0Y2hSZXF1ZXN0JiwgU3R5bGVSZXNvbHZl
cjo6UnVsZVJhbmdlJik7Ci0gICAgYm9vbCBydWxlTWF0Y2hlcyhjb25zdCBSdWxlRGF0YSYsIGNv
bnN0IENvbnRhaW5lck5vZGUqIHNjb3BlLCBQc2V1ZG9JZCYpOwotCi0gICAgdm9pZCBzb3J0TWF0
Y2hlZFJ1bGVzKCk7Ci0gICAgdm9pZCBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoKTsKLQot
ICAgIHZvaWQgYWRkTWF0Y2hlZFJ1bGUoY29uc3QgUnVsZURhdGEqKTsKLSAgICB2b2lkIGNsZWFy
TWF0Y2hlZFJ1bGVzKCk7Ci0KLSAgICBTdGF0aWNDU1NSdWxlTGlzdCogZW5zdXJlUnVsZUxpc3Qo
KTsKLSAgICAgICAgCi1wcml2YXRlOgotICAgIGNvbnN0IFN0eWxlUmVzb2x2ZXI6OlN0YXRlJiBt
X3N0YXRlOwotICAgIERvY3VtZW50UnVsZVNldHMmIG1fcnVsZVNldHM7Ci0gICAgU2VsZWN0b3JG
aWx0ZXImIG1fc2VsZWN0b3JGaWx0ZXI7Ci0gICAgSW5zcGVjdG9yQ1NTT01XcmFwcGVycyYgbV9p
bnNwZWN0b3JDU1NPTVdyYXBwZXJzOwotICAgIFN0eWxlU2NvcGVSZXNvbHZlciogbV9zY29wZVJl
c29sdmVyOwotCi0gICAgYm9vbCBtX2lzUHJpbnRTdHlsZTsKLSAgICBSZW5kZXJSZWdpb24qIG1f
cmVnaW9uRm9yU3R5bGluZzsKLSAgICBQc2V1ZG9TdHlsZVJlcXVlc3QgbV9wc2V1ZG9TdHlsZVJl
cXVlc3Q7Ci0gICAgYm9vbCBtX3NhbWVPcmlnaW5Pbmx5OwotICAgIFNlbGVjdG9yQ2hlY2tlcjo6
TW9kZSBtX21vZGU7Ci0gICAgYm9vbCBtX2NhblVzZUZhc3RSZWplY3Q7Ci0gICAgU2VsZWN0b3JD
aGVja2VyOjpCZWhhdmlvckF0Qm91bmRhcnkgbV9iZWhhdmlvckF0Qm91bmRhcnk7Ci0KLSAgICBP
d25QdHI8VmVjdG9yPGNvbnN0IFJ1bGVEYXRhKiwgMzI+ID4gbV9tYXRjaGVkUnVsZXM7Ci0KLSAg
ICAvLyBPdXRwdXQuCi0gICAgUmVmUHRyPFN0YXRpY0NTU1J1bGVMaXN0PiBtX3J1bGVMaXN0Owot
ICAgIFN0eWxlUmVzb2x2ZXI6Ok1hdGNoUmVzdWx0IG1fcmVzdWx0OwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRWxlbWVudFJ1bGVDb2xsZWN0b3JfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1BhZ2VSdWxlQ29sbGVjdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9QYWdlUnVsZUNvbGxlY3Rvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGU3NjZlNzY4MzQ0ZjU2Y2I5ODY5ZmNjN2EwYTE5YzQ2NjVjNTA3ODAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1BhZ2VSdWxlQ29sbGVjdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCi0gKiAg
ICAgICAgICAgKEMpIDIwMDQtMjAwNSBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gKGtkZUBjYXJld29s
Zi5jb20pCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgTmljaG9sYXMgU2hhbmtzICh3ZWJr
aXRAbmlja3NoYW5rcy5jb20pCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIw
MDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFsZXhleSBQcm9za3VyeWFrb3YgPGFwQHdl
YmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNA
d2Via2l0Lm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQotICog
Q29weXJpZ2h0IChjKSAyMDExLCBDb2RlIEF1cm9yYSBGb3J1bS4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUGFnZVJ1bGVD
b2xsZWN0b3IuaCIKLQotI2luY2x1ZGUgIkNTU0RlZmF1bHRTdHlsZVNoZWV0cy5oIgotI2luY2x1
ZGUgIlN0eWxlUHJvcGVydHlTZXQuaCIKLSNpbmNsdWRlICJTdHlsZVJ1bGUuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1zdGF0aWMgaW5saW5lIGJvb2wgY29tcGFyZVBhZ2VSdWxlcyhjb25z
dCBTdHlsZVJ1bGVQYWdlKiByMSwgY29uc3QgU3R5bGVSdWxlUGFnZSogcjIpCi17Ci0gICAgcmV0
dXJuIHIxLT5zZWxlY3RvcigpLT5zcGVjaWZpY2l0eSgpIDwgcjItPnNlbGVjdG9yKCktPnNwZWNp
ZmljaXR5KCk7Ci19Ci0KLWJvb2wgUGFnZVJ1bGVDb2xsZWN0b3I6OmlzTGVmdFBhZ2UoaW50IHBh
Z2VJbmRleCkgY29uc3QKLXsKLSAgICBib29sIGlzRmlyc3RQYWdlTGVmdCA9IGZhbHNlOwotICAg
IGlmICghbV9zdGF0ZS5yb290RWxlbWVudFN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24o
KSkKLSAgICAgICAgaXNGaXJzdFBhZ2VMZWZ0ID0gdHJ1ZTsKLQotICAgIHJldHVybiAocGFnZUlu
ZGV4ICsgKGlzRmlyc3RQYWdlTGVmdCA/IDEgOiAwKSkgJSAyOwotfQotCi1ib29sIFBhZ2VSdWxl
Q29sbGVjdG9yOjppc0ZpcnN0UGFnZShpbnQgcGFnZUluZGV4KSBjb25zdAotewotICAgIC8vIEZJ
WE1FOiBJbiBjYXNlIG9mIGZvcmNlZCBsZWZ0L3JpZ2h0IHBhZ2UsIHBhZ2UgYXQgaW5kZXggMSAo
bm90IDApIGNhbiBiZSB0aGUgZmlyc3QgcGFnZS4KLSAgICByZXR1cm4gKCFwYWdlSW5kZXgpOwot
fQotCi1TdHJpbmcgUGFnZVJ1bGVDb2xsZWN0b3I6OnBhZ2VOYW1lKGludCAvKiBwYWdlSW5kZXgg
Ki8pIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCBwYWdlIGluZGV4IHRvIHBhZ2Ug
bmFtZSBtYXBwaW5nLgotICAgIHJldHVybiAiIjsKLX0KLQotdm9pZCBQYWdlUnVsZUNvbGxlY3Rv
cjo6bWF0Y2hBbGxQYWdlUnVsZXMoaW50IHBhZ2VJbmRleCkKLXsKLSAgICBjb25zdCBib29sIGlz
TGVmdCA9IGlzTGVmdFBhZ2UocGFnZUluZGV4KTsKLSAgICBjb25zdCBib29sIGlzRmlyc3QgPSBp
c0ZpcnN0UGFnZShwYWdlSW5kZXgpOwotICAgIGNvbnN0IFN0cmluZyBwYWdlID0gcGFnZU5hbWUo
cGFnZUluZGV4KTsKLSAgICAKLSAgICBtYXRjaFBhZ2VSdWxlcyhDU1NEZWZhdWx0U3R5bGVTaGVl
dHM6OmRlZmF1bHRQcmludFN0eWxlLCBpc0xlZnQsIGlzRmlyc3QsIHBhZ2UpOwotICAgIG1hdGNo
UGFnZVJ1bGVzKG1fcnVsZVNldHMudXNlclN0eWxlKCksIGlzTGVmdCwgaXNGaXJzdCwgcGFnZSk7
Ci0gICAgLy8gT25seSBjb25zaWRlciB0aGUgZ2xvYmFsIGF1dGhvciBSdWxlU2V0IGZvciBAcGFn
ZSBydWxlcywgYXMgcGVyIHRoZSBIVE1MNSBzcGVjLgotICAgIG1hdGNoUGFnZVJ1bGVzKG1fcnVs
ZVNldHMuYXV0aG9yU3R5bGUoKSwgaXNMZWZ0LCBpc0ZpcnN0LCBwYWdlKTsKLX0KLQotdm9pZCBQ
YWdlUnVsZUNvbGxlY3Rvcjo6bWF0Y2hQYWdlUnVsZXMoUnVsZVNldCogcnVsZXMsIGJvb2wgaXNM
ZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwgY29uc3QgU3RyaW5nJiBwYWdlTmFtZSkKLXsKLSAg
ICBpZiAoIXJ1bGVzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBWZWN0b3I8U3R5bGVSdWxlUGFn
ZSo+IG1hdGNoZWRQYWdlUnVsZXM7Ci0gICAgbWF0Y2hQYWdlUnVsZXNGb3JMaXN0KG1hdGNoZWRQ
YWdlUnVsZXMsIHJ1bGVzLT5wYWdlUnVsZXMoKSwgaXNMZWZ0UGFnZSwgaXNGaXJzdFBhZ2UsIHBh
Z2VOYW1lKTsKLSAgICBpZiAobWF0Y2hlZFBhZ2VSdWxlcy5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIHN0ZDo6c3RhYmxlX3NvcnQobWF0Y2hlZFBhZ2VSdWxlcy5iZWdpbigpLCBt
YXRjaGVkUGFnZVJ1bGVzLmVuZCgpLCBjb21wYXJlUGFnZVJ1bGVzKTsKLQotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtYXRjaGVkUGFnZVJ1bGVzLnNpemUoKTsgaSsrKQotICAgICAgICBt
X3Jlc3VsdC5hZGRNYXRjaGVkUHJvcGVydGllcyhtYXRjaGVkUGFnZVJ1bGVzW2ldLT5wcm9wZXJ0
aWVzKCkpOwotfQotCi1zdGF0aWMgYm9vbCBjaGVja1BhZ2VTZWxlY3RvckNvbXBvbmVudHMoY29u
c3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCBib29sIGlzTGVmdFBhZ2UsIGJvb2wgaXNGaXJzdFBh
Z2UsIGNvbnN0IFN0cmluZyYgcGFnZU5hbWUpCi17Ci0gICAgZm9yIChjb25zdCBDU1NTZWxlY3Rv
ciogY29tcG9uZW50ID0gc2VsZWN0b3I7IGNvbXBvbmVudDsgY29tcG9uZW50ID0gY29tcG9uZW50
LT50YWdIaXN0b3J5KCkpIHsKLSAgICAgICAgaWYgKGNvbXBvbmVudC0+bV9tYXRjaCA9PSBDU1NT
ZWxlY3Rvcjo6VGFnKSB7Ci0gICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFt
ZSA9IGNvbXBvbmVudC0+dGFnUU5hbWUoKS5sb2NhbE5hbWUoKTsKLSAgICAgICAgICAgIGlmIChs
b2NhbE5hbWUgIT0gc3RhckF0b20gJiYgbG9jYWxOYW1lICE9IHBhZ2VOYW1lKQotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIENTU1NlbGVjdG9yOjpQ
c2V1ZG9UeXBlIHBzZXVkb1R5cGUgPSBjb21wb25lbnQtPnBzZXVkb1R5cGUoKTsKLSAgICAgICAg
aWYgKChwc2V1ZG9UeXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9MZWZ0UGFnZSAmJiAhaXNMZWZ0
UGFnZSkKLSAgICAgICAgICAgIHx8IChwc2V1ZG9UeXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9S
aWdodFBhZ2UgJiYgaXNMZWZ0UGFnZSkKLSAgICAgICAgICAgIHx8IChwc2V1ZG9UeXBlID09IENT
U1NlbGVjdG9yOjpQc2V1ZG9GaXJzdFBhZ2UgJiYgIWlzRmlyc3RQYWdlKSkKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0
cnVlOwotfQotCi12b2lkIFBhZ2VSdWxlQ29sbGVjdG9yOjptYXRjaFBhZ2VSdWxlc0Zvckxpc3Qo
VmVjdG9yPFN0eWxlUnVsZVBhZ2UqPiYgbWF0Y2hlZFJ1bGVzLCBjb25zdCBWZWN0b3I8U3R5bGVS
dWxlUGFnZSo+JiBydWxlcywgYm9vbCBpc0xlZnRQYWdlLCBib29sIGlzRmlyc3RQYWdlLCBjb25z
dCBTdHJpbmcmIHBhZ2VOYW1lKQotewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBydWxl
cy5zaXplKCk7ICsraSkgewotICAgICAgICBTdHlsZVJ1bGVQYWdlKiBydWxlID0gcnVsZXNbaV07
Ci0KLSAgICAgICAgaWYgKCFjaGVja1BhZ2VTZWxlY3RvckNvbXBvbmVudHMocnVsZS0+c2VsZWN0
b3IoKSwgaXNMZWZ0UGFnZSwgaXNGaXJzdFBhZ2UsIHBhZ2VOYW1lKSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgIC8vIElmIHRoZSBydWxlIGhhcyBubyBwcm9wZXJ0aWVzIHRvIGFw
cGx5LCB0aGVuIGlnbm9yZSBpdC4KLSAgICAgICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJv
cGVydGllcyA9IHJ1bGUtPnByb3BlcnRpZXMoKTsKLSAgICAgICAgaWYgKCFwcm9wZXJ0aWVzIHx8
IHByb3BlcnRpZXMtPmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAg
IC8vIEFkZCB0aGlzIHJ1bGUgdG8gb3VyIGxpc3Qgb2YgbWF0Y2hlZCBydWxlcy4KLSAgICAgICAg
bWF0Y2hlZFJ1bGVzLmFwcGVuZChydWxlKTsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWdlUnVsZUNvbGxlY3Rvci5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1BhZ2VSdWxlQ29sbGVjdG9yLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDhmNWMyOWE3ZDVlZjkzN2UxMDQ3MWM5ODU2NzZmMjE2MzEzMTkxOGUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1BhZ2VSdWxlQ29sbGVjdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcp
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lmbmRl
ZiBQYWdlUnVsZUNvbGxlY3Rvcl9oCi0jZGVmaW5lIFBhZ2VSdWxlQ29sbGVjdG9yX2gKLQotI2lu
Y2x1ZGUgIkRvY3VtZW50UnVsZVNldHMuaCIKLSNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCi0j
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBTdHlsZVJ1bGVQYWdlOwotCi1jbGFzcyBQYWdlUnVsZUNv
bGxlY3RvciB7Ci1wdWJsaWM6Ci0gICAgUGFnZVJ1bGVDb2xsZWN0b3IoU3R5bGVSZXNvbHZlcjo6
U3RhdGUmIHN0YXRlLCBEb2N1bWVudFJ1bGVTZXRzJiBydWxlU2V0cykKLSAgICAgICAgOiBtX3N0
YXRlKHN0YXRlKQotICAgICAgICAsIG1fcnVsZVNldHMocnVsZVNldHMpIHsgfQotCi0gICAgdm9p
ZCBtYXRjaEFsbFBhZ2VSdWxlcyhpbnQgcGFnZUluZGV4KTsKLSAgICBTdHlsZVJlc29sdmVyOjpN
YXRjaFJlc3VsdCYgbWF0Y2hlZFJlc3VsdCgpIHsgcmV0dXJuIG1fcmVzdWx0OyB9Ci0KLXByaXZh
dGU6Ci0gICAgYm9vbCBpc0xlZnRQYWdlKGludCBwYWdlSW5kZXgpIGNvbnN0OwotICAgIGJvb2wg
aXNSaWdodFBhZ2UoaW50IHBhZ2VJbmRleCkgY29uc3QgeyByZXR1cm4gIWlzTGVmdFBhZ2UocGFn
ZUluZGV4KTsgfQotICAgIGJvb2wgaXNGaXJzdFBhZ2UoaW50IHBhZ2VJbmRleCkgY29uc3Q7Ci0g
ICAgU3RyaW5nIHBhZ2VOYW1lKGludCBwYWdlSW5kZXgpIGNvbnN0OwotCi0gICAgdm9pZCBtYXRj
aFBhZ2VSdWxlcyhSdWxlU2V0KiBydWxlcywgYm9vbCBpc0xlZnRQYWdlLCBib29sIGlzRmlyc3RQ
YWdlLCBjb25zdCBTdHJpbmcmIHBhZ2VOYW1lKTsKLSAgICB2b2lkIG1hdGNoUGFnZVJ1bGVzRm9y
TGlzdChWZWN0b3I8U3R5bGVSdWxlUGFnZSo+JiBtYXRjaGVkUnVsZXMsIGNvbnN0IFZlY3RvcjxT
dHlsZVJ1bGVQYWdlKj4mIHJ1bGVzLCBib29sIGlzTGVmdFBhZ2UsIGJvb2wgaXNGaXJzdFBhZ2Us
IGNvbnN0IFN0cmluZyYgcGFnZU5hbWUpOwotCi0gICAgY29uc3QgU3R5bGVSZXNvbHZlcjo6U3Rh
dGUmIG1fc3RhdGU7Ci0gICAgRG9jdW1lbnRSdWxlU2V0cyYgbV9ydWxlU2V0czsKLQotICAgIFN0
eWxlUmVzb2x2ZXI6Ok1hdGNoUmVzdWx0IG1fcmVzdWx0OwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gUGFnZVJ1bGVDb2xsZWN0b3JfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGNjODk1ZTA0ZDQ3NDhlOTIwY2U3NGQwOTljZTBmMjZjYTcw
NWQ0MTguLjEzOGE5YWIyODJhY2NiNzVlOTA5NGI0NjkxMDUxMzlmZTQyYzVlY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTU5LDcgKzU5LDYgQEAKICNpbmNsdWRlICJD
b3VudGVyQ29udGVudC5oIgogI2luY2x1ZGUgIkN1cnNvckxpc3QuaCIKICNpbmNsdWRlICJEb2N1
bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmgiCi0jaW5jbHVkZSAiRWxlbWVudFJ1bGVDb2xsZWN0
b3IuaCIKICNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCiAjaW5jbHVkZSAiRm9udEZlYXR1cmVW
YWx1ZS5oIgogI2luY2x1ZGUgIkZvbnRWYWx1ZS5oIgpAQCAtODcsNyArODYsNiBAQAogI2luY2x1
ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBhZ2VSdWxlQ29sbGVjdG9yLmgiCiAjaW5j
bHVkZSAiUGFpci5oIgogI2luY2x1ZGUgIlBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmgi
CiAjaW5jbHVkZSAiUXVvdGVzRGF0YS5oIgpAQCAtMTA5LDYgKzEwNyw3IEBACiAjaW5jbHVkZSAi
U2hhZG93RGF0YS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTaGFkb3dW
YWx1ZS5oIgorI2luY2x1ZGUgIlNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVnaWVzLmgiCiAjaW5jbHVk
ZSAiU2tld1RyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIlN0eWxlQnVpbGRlci5oIgog
I2luY2x1ZGUgIlN0eWxlQ2FjaGVkSW1hZ2UuaCIKQEAgLTIxMSw2ICsyMTAsMzAgQEAgaWYgKGlz
SW5pdGlhbCkgeyBcCiAKIFJlbmRlclN0eWxlKiBTdHlsZVJlc29sdmVyOjpzX3N0eWxlTm90WWV0
QXZhaWxhYmxlOwogCitzdGF0aWMgU3R5bGVQcm9wZXJ0eVNldCogbGVmdFRvUmlnaHREZWNsYXJh
dGlvbigpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChSZWZQdHI8U3R5bGVQcm9wZXJ0eVNl
dD4sIGxlZnRUb1JpZ2h0RGVjbCwgKFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZSgpKSk7CisgICAg
aWYgKGxlZnRUb1JpZ2h0RGVjbC0+aXNFbXB0eSgpKQorICAgICAgICBsZWZ0VG9SaWdodERlY2wt
PnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBDU1NWYWx1ZUx0cik7CisgICAgcmV0
dXJuIGxlZnRUb1JpZ2h0RGVjbC5nZXQoKTsKK30KKworc3RhdGljIFN0eWxlUHJvcGVydHlTZXQq
IHJpZ2h0VG9MZWZ0RGVjbGFyYXRpb24oKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVm
UHRyPFN0eWxlUHJvcGVydHlTZXQ+LCByaWdodFRvTGVmdERlY2wsIChTdHlsZVByb3BlcnR5U2V0
OjpjcmVhdGUoKSkpOworICAgIGlmIChyaWdodFRvTGVmdERlY2wtPmlzRW1wdHkoKSkKKyAgICAg
ICAgcmlnaHRUb0xlZnREZWNsLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgQ1NT
VmFsdWVSdGwpOworICAgIHJldHVybiByaWdodFRvTGVmdERlY2wuZ2V0KCk7Cit9CisKKworaW5s
aW5lIFN0YXRpY0NTU1J1bGVMaXN0KiBTdHlsZVJlc29sdmVyOjpTdGF0ZTo6ZW5zdXJlUnVsZUxp
c3QoKQoreworICAgIGlmICghbV9ydWxlTGlzdCkKKyAgICAgICAgbV9ydWxlTGlzdCA9IFN0YXRp
Y0NTU1J1bGVMaXN0OjpjcmVhdGUoKTsKKyAgICByZXR1cm4gbV9ydWxlTGlzdC5nZXQoKTsKK30K
KwogaW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6U3RhdGU6OmNhY2hlQm9yZGVyQW5kQmFja2dy
b3VuZCgpCiB7CiAgICAgbV9oYXNVQUFwcGVhcmFuY2UgPSBtX3N0eWxlLT5oYXNBcHBlYXJhbmNl
KCk7CkBAIC0yMjgsNiArMjUxLDggQEAgaW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6U3RhdGU6
OmNsZWFyKCkKICAgICBtX3BhcmVudFN0eWxlID0gMDsKICAgICBtX3BhcmVudE5vZGUgPSAwOwog
ICAgIG1fcmVnaW9uRm9yU3R5bGluZyA9IDA7CisgICAgbV9ydWxlTGlzdCA9IDA7CisgICAgbV9t
YXRjaGVkUnVsZXMuY2xlYXIoKTsKICAgICBtX3BlbmRpbmdJbWFnZVByb3BlcnRpZXMuY2xlYXIo
KTsKICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCiAgICAgbV9oYXNQZW5kaW5nU2hhZGVycyA9IGZh
bHNlOwpAQCAtMjM3LDE2ICsyNjIsNiBAQCBpbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjpTdGF0
ZTo6Y2xlYXIoKQogI2VuZGlmCiB9CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6TWF0Y2hSZXN1bHQ6
OmFkZE1hdGNoZWRQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnRpZXMs
IFN0eWxlUnVsZSogcnVsZSwgdW5zaWduZWQgbGlua01hdGNoVHlwZSwgUHJvcGVydHlXaGl0ZWxp
c3RUeXBlIHByb3BlcnR5V2hpdGVsaXN0VHlwZSkKLXsKLSAgICBtYXRjaGVkUHJvcGVydGllcy5n
cm93KG1hdGNoZWRQcm9wZXJ0aWVzLnNpemUoKSArIDEpOwotICAgIFN0eWxlUmVzb2x2ZXI6Ok1h
dGNoZWRQcm9wZXJ0aWVzJiBuZXdQcm9wZXJ0aWVzID0gbWF0Y2hlZFByb3BlcnRpZXMubGFzdCgp
OwotICAgIG5ld1Byb3BlcnRpZXMucHJvcGVydGllcyA9IGNvbnN0X2Nhc3Q8U3R5bGVQcm9wZXJ0
eVNldCo+KHByb3BlcnRpZXMpOwotICAgIG5ld1Byb3BlcnRpZXMubGlua01hdGNoVHlwZSA9IGxp
bmtNYXRjaFR5cGU7Ci0gICAgbmV3UHJvcGVydGllcy53aGl0ZWxpc3RUeXBlID0gcHJvcGVydHlX
aGl0ZWxpc3RUeXBlOwotICAgIG1hdGNoZWRSdWxlcy5hcHBlbmQocnVsZSk7Ci19Ci0KIFN0eWxl
UmVzb2x2ZXI6OlN0eWxlUmVzb2x2ZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIG1hdGNoQXV0
aG9yQW5kVXNlclN0eWxlcykKICAgICA6IG1fbWF0Y2hlZFByb3BlcnRpZXNDYWNoZUFkZGl0aW9u
c1NpbmNlTGFzdFN3ZWVwKDApCiAgICAgLCBtX21hdGNoZWRQcm9wZXJ0aWVzQ2FjaGVTd2VlcFRp
bWVyKHRoaXMsICZTdHlsZVJlc29sdmVyOjpzd2VlcE1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUpCkBA
IC0zOTAsNiArNDA1LDE4MiBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OnN3ZWVwTWF0Y2hlZFByb3Bl
cnRpZXNDYWNoZShUaW1lcjxTdHlsZVJlc29sdmVyPiopCiAgICAgbV9tYXRjaGVkUHJvcGVydGll
c0NhY2hlQWRkaXRpb25zU2luY2VMYXN0U3dlZXAgPSAwOwogfQogCit2b2lkIFN0eWxlUmVzb2x2
ZXI6OmFkZE1hdGNoZWRQcm9wZXJ0aWVzKE1hdGNoUmVzdWx0JiBtYXRjaFJlc3VsdCwgY29uc3Qg
U3R5bGVQcm9wZXJ0eVNldCogcHJvcGVydGllcywgU3R5bGVSdWxlKiBydWxlLCB1bnNpZ25lZCBs
aW5rTWF0Y2hUeXBlLCBQcm9wZXJ0eVdoaXRlbGlzdFR5cGUgcHJvcGVydHlXaGl0ZWxpc3RUeXBl
KQoreworICAgIG1hdGNoUmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzLmdyb3cobWF0Y2hSZXN1bHQu
bWF0Y2hlZFByb3BlcnRpZXMuc2l6ZSgpICsgMSk7CisgICAgTWF0Y2hlZFByb3BlcnRpZXMmIG5l
d1Byb3BlcnRpZXMgPSBtYXRjaFJlc3VsdC5tYXRjaGVkUHJvcGVydGllcy5sYXN0KCk7CisgICAg
bmV3UHJvcGVydGllcy5wcm9wZXJ0aWVzID0gY29uc3RfY2FzdDxTdHlsZVByb3BlcnR5U2V0Kj4o
cHJvcGVydGllcyk7CisgICAgbmV3UHJvcGVydGllcy5saW5rTWF0Y2hUeXBlID0gbGlua01hdGNo
VHlwZTsKKyAgICBuZXdQcm9wZXJ0aWVzLndoaXRlbGlzdFR5cGUgPSBwcm9wZXJ0eVdoaXRlbGlz
dFR5cGU7CisgICAgbWF0Y2hSZXN1bHQubWF0Y2hlZFJ1bGVzLmFwcGVuZChydWxlKTsKK30KKwor
aW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRkRWxlbWVudFN0eWxlUHJvcGVydGllcyhNYXRj
aFJlc3VsdCYgcmVzdWx0LCBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0eVNldCwgYm9v
bCBpc0NhY2hlYWJsZSkKK3sKKyAgICBpZiAoIXByb3BlcnR5U2V0KQorICAgICAgICByZXR1cm47
CisgICAgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSA9IHJlc3VsdC5tYXRjaGVkUHJvcGVy
dGllcy5zaXplKCk7CisgICAgaWYgKHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlID09IC0x
KQorICAgICAgICByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSA9IHJlc3VsdC5yYW5nZXMu
bGFzdEF1dGhvclJ1bGU7CisgICAgYWRkTWF0Y2hlZFByb3BlcnRpZXMocmVzdWx0LCBwcm9wZXJ0
eVNldCk7CisgICAgaWYgKCFpc0NhY2hlYWJsZSkKKyAgICAgICAgcmVzdWx0LmlzQ2FjaGVhYmxl
ID0gZmFsc2U7Cit9CisKK2NsYXNzIE1hdGNoaW5nVUFSdWxlc1Njb3BlIHsKK3B1YmxpYzoKKyAg
ICBNYXRjaGluZ1VBUnVsZXNTY29wZSgpOworICAgIH5NYXRjaGluZ1VBUnVsZXNTY29wZSgpOwor
CisgICAgc3RhdGljIGJvb2wgaXNNYXRjaGluZ1VBUnVsZXMoKTsKKworcHJpdmF0ZToKKyAgICBz
dGF0aWMgYm9vbCBtX21hdGNoaW5nVUFSdWxlczsKK307CisKK01hdGNoaW5nVUFSdWxlc1Njb3Bl
OjpNYXRjaGluZ1VBUnVsZXNTY29wZSgpCit7CisgICAgQVNTRVJUKCFtX21hdGNoaW5nVUFSdWxl
cyk7CisgICAgbV9tYXRjaGluZ1VBUnVsZXMgPSB0cnVlOworfQorCitNYXRjaGluZ1VBUnVsZXNT
Y29wZTo6fk1hdGNoaW5nVUFSdWxlc1Njb3BlKCkKK3sKKyAgICBtX21hdGNoaW5nVUFSdWxlcyA9
IGZhbHNlOworfQorCitpbmxpbmUgYm9vbCBNYXRjaGluZ1VBUnVsZXNTY29wZTo6aXNNYXRjaGlu
Z1VBUnVsZXMoKQoreworICAgIHJldHVybiBtX21hdGNoaW5nVUFSdWxlczsKK30KKworYm9vbCBN
YXRjaGluZ1VBUnVsZXNTY29wZTo6bV9tYXRjaGluZ1VBUnVsZXMgPSBmYWxzZTsKKwordm9pZCBT
dHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyhjb25zdCBNYXRjaFJlcXVlc3QmIG1h
dGNoUmVxdWVzdCwgUnVsZVJhbmdlJiBydWxlUmFuZ2UpCit7CisgICAgQVNTRVJUKG1hdGNoUmVx
dWVzdC5ydWxlU2V0KTsKKyAgICBBU1NFUlQobV9zdGF0ZS5lbGVtZW50KCkpOworCisgICAgU3Rh
dGUmIHN0YXRlID0gbV9zdGF0ZTsKKyAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGUuZWxlbWVu
dCgpOworICAgIGNvbnN0IFN0eWxlZEVsZW1lbnQqIHN0eWxlZEVsZW1lbnQgPSBzdGF0ZS5zdHls
ZWRFbGVtZW50KCk7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBwc2V1ZG9JZCA9IGVsZW1lbnQt
PnNoYWRvd1BzZXVkb0lkKCk7CisgICAgaWYgKCFwc2V1ZG9JZC5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgQVNTRVJUKHN0eWxlZEVsZW1lbnQpOworICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zv
ckxpc3QobWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPnNoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcyhwc2V1
ZG9JZC5pbXBsKCkpLCBtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7CisgICAgfQorCisjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQorICAgIGlmIChlbGVtZW50LT5pc1dlYlZUVEVsZW1lbnQoKSkKKyAg
ICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT5j
dWVQc2V1ZG9SdWxlcygpLCBtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7CisjZW5kaWYKKyAgICAv
LyBDaGVjayB3aGV0aGVyIG90aGVyIHR5cGVzIG9mIHJ1bGVzIGFyZSBhcHBsaWNhYmxlIGluIHRo
ZSBjdXJyZW50IHRyZWUgc2NvcGUuIENyaXRlcmlhIGZvciB0aGlzOgorICAgIC8vIGEpIGl0J3Mg
YSBVQSBydWxlCisgICAgLy8gYikgdGhlIHRyZWUgc2NvcGUgYWxsb3dzIGF1dGhvciBydWxlcwor
ICAgIC8vIGMpIHRoZSBydWxlcyBjb21lcyBmcm9tIGEgc2NvcGVkIHN0eWxlIHNoZWV0IHdpdGhp
biB0aGUgc2FtZSB0cmVlIHNjb3BlCisgICAgVHJlZVNjb3BlKiB0cmVlU2NvcGUgPSBlbGVtZW50
LT50cmVlU2NvcGUoKTsKKyAgICBpZiAoIU1hdGNoaW5nVUFSdWxlc1Njb3BlOjppc01hdGNoaW5n
VUFSdWxlcygpCisgICAgICAgICYmICF0cmVlU2NvcGUtPmFwcGx5QXV0aG9yU3R5bGVzKCkKKyAg
ICAgICAgJiYgKCFtYXRjaFJlcXVlc3Quc2NvcGUgfHwgbWF0Y2hSZXF1ZXN0LnNjb3BlLT50cmVl
U2NvcGUoKSAhPSB0cmVlU2NvcGUpCisgICAgICAgICYmIG1hdGNoUmVxdWVzdC5iZWhhdmlvckF0
Qm91bmRhcnkgPT0gU2VsZWN0b3JDaGVja2VyOjpEb2VzTm90Q3Jvc3NCb3VuZGFyeSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgLy8gV2UgbmVlZCB0byBjb2xsZWN0IHRoZSBydWxlcyBmb3IgaWQs
IGNsYXNzLCB0YWcsIGFuZCBldmVyeXRoaW5nIGVsc2UgaW50byBhIGJ1ZmZlciBhbmQKKyAgICAv
LyB0aGVuIHNvcnQgdGhlIGJ1ZmZlci4KKyAgICBpZiAoZWxlbWVudC0+aGFzSUQoKSkKKyAgICAg
ICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT5pZFJ1
bGVzKGVsZW1lbnQtPmlkRm9yU3R5bGVSZXNvbHV0aW9uKCkuaW1wbCgpKSwgbWF0Y2hSZXF1ZXN0
LCBydWxlUmFuZ2UpOworICAgIGlmIChzdHlsZWRFbGVtZW50ICYmIHN0eWxlZEVsZW1lbnQtPmhh
c0NsYXNzKCkpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHlsZWRFbGVtZW50
LT5jbGFzc05hbWVzKCkuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBjb2xsZWN0TWF0Y2hpbmdS
dWxlc0Zvckxpc3QobWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPmNsYXNzUnVsZXMoc3R5bGVkRWxlbWVu
dC0+Y2xhc3NOYW1lcygpW2ldLmltcGwoKSksIG1hdGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsKKyAg
ICB9CisKKyAgICBpZiAoZWxlbWVudC0+aXNMaW5rKCkpCisgICAgICAgIGNvbGxlY3RNYXRjaGlu
Z1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+bGlua1BzZXVkb0NsYXNzUnVsZXMo
KSwgbWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOworICAgIGlmIChTZWxlY3RvckNoZWNrZXI6Om1h
dGNoZXNGb2N1c1BzZXVkb0NsYXNzKGVsZW1lbnQpKQorICAgICAgICBjb2xsZWN0TWF0Y2hpbmdS
dWxlc0Zvckxpc3QobWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPmZvY3VzUHNldWRvQ2xhc3NSdWxlcygp
LCBtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7CisgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JM
aXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT50YWdSdWxlcyhlbGVtZW50LT5sb2NhbE5hbWUoKS5p
bXBsKCkpLCBtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7CisgICAgY29sbGVjdE1hdGNoaW5nUnVs
ZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT51bml2ZXJzYWxSdWxlcygpLCBtYXRjaFJl
cXVlc3QsIHJ1bGVSYW5nZSk7Cit9CisKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNo
aW5nUnVsZXNGb3JSZWdpb24oY29uc3QgTWF0Y2hSZXF1ZXN0JiBtYXRjaFJlcXVlc3QsIFJ1bGVS
YW5nZSYgcnVsZVJhbmdlKQoreworICAgIGlmICghbV9zdGF0ZS5yZWdpb25Gb3JTdHlsaW5nKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkIHNpemUgPSBtYXRjaFJlcXVlc3QucnVs
ZVNldC0+bV9yZWdpb25TZWxlY3RvcnNBbmRSdWxlU2V0cy5zaXplKCk7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBjb25zdCBDU1NTZWxlY3Rvciog
cmVnaW9uU2VsZWN0b3IgPSBtYXRjaFJlcXVlc3QucnVsZVNldC0+bV9yZWdpb25TZWxlY3RvcnNB
bmRSdWxlU2V0cy5hdChpKS5zZWxlY3RvcjsKKyAgICAgICAgaWYgKGNoZWNrUmVnaW9uU2VsZWN0
b3IocmVnaW9uU2VsZWN0b3IsIHN0YXRpY19jYXN0PEVsZW1lbnQqPihtX3N0YXRlLnJlZ2lvbkZv
clN0eWxpbmcoKS0+bm9kZSgpKSkpIHsKKyAgICAgICAgICAgIFJ1bGVTZXQqIHJlZ2lvblJ1bGVz
ID0gbWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPm1fcmVnaW9uU2VsZWN0b3JzQW5kUnVsZVNldHMuYXQo
aSkucnVsZVNldC5nZXQoKTsKKyAgICAgICAgICAgIEFTU0VSVChyZWdpb25SdWxlcyk7CisgICAg
ICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhNYXRjaFJlcXVlc3QocmVnaW9uUnVsZXMsIG1h
dGNoUmVxdWVzdC5pbmNsdWRlRW1wdHlSdWxlcywgbWF0Y2hSZXF1ZXN0LnNjb3BlKSwgcnVsZVJh
bmdlKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBTdHlsZVJlc29sdmVyOjpzb3J0QW5k
VHJhbnNmZXJNYXRjaGVkUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCkKK3sKKyAgICBTdGF0ZSYg
c3RhdGUgPSBtX3N0YXRlOworICAgIFZlY3Rvcjxjb25zdCBSdWxlRGF0YSosIDMyPiYgbWF0Y2hl
ZFJ1bGVzID0gc3RhdGUubWF0Y2hlZFJ1bGVzKCk7CisgICAgaWYgKG1hdGNoZWRSdWxlcy5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNvcnRNYXRjaGVkUnVsZXMoKTsKKworICAg
IGlmIChzdGF0ZS5tb2RlKCkgPT0gU2VsZWN0b3JDaGVja2VyOjpDb2xsZWN0aW5nUnVsZXMpIHsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1hdGNoZWRSdWxlcy5zaXplKCk7ICsr
aSkKKyAgICAgICAgICAgIHN0YXRlLmVuc3VyZVJ1bGVMaXN0KCktPnJ1bGVzKCkuYXBwZW5kKG1h
dGNoZWRSdWxlc1tpXS0+cnVsZSgpLT5jcmVhdGVDU1NPTVdyYXBwZXIoKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBOb3cgdHJhbnNmZXIgdGhlIHNldCBvZiBtYXRjaGVkIHJ1
bGVzIG92ZXIgdG8gb3VyIGxpc3Qgb2YgZGVjbGFyYXRpb25zLgorICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtYXRjaGVkUnVsZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgaWYgKHN0YXRl
LnN0eWxlKCkgJiYgbWF0Y2hlZFJ1bGVzW2ldLT5jb250YWluc1VuY29tbW9uQXR0cmlidXRlU2Vs
ZWN0b3IoKSkKKyAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldFVuaXF1ZSgpOworICAgICAg
ICBhZGRNYXRjaGVkUHJvcGVydGllcyhyZXN1bHQsIG1hdGNoZWRSdWxlc1tpXS0+cnVsZSgpLT5w
cm9wZXJ0aWVzKCksIG1hdGNoZWRSdWxlc1tpXS0+cnVsZSgpLCBtYXRjaGVkUnVsZXNbaV0tPmxp
bmtNYXRjaFR5cGUoKSwgbWF0Y2hlZFJ1bGVzW2ldLT5wcm9wZXJ0eVdoaXRlbGlzdFR5cGUoKSk7
CisgICAgfQorfQorCit2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoU2NvcGVkQXV0aG9yUnVsZXMo
TWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKK3sKKyNpZiBFTkFC
TEUoU1RZTEVfU0NPUEVEKSB8fCBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBpZiAoIW1fc2NvcGVS
ZXNvbHZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gTWF0Y2ggc2NvcGVkIGF1dGhvciBy
dWxlcyBieSB0cmF2ZXJzaW5nIHRoZSBzY29wZWQgZWxlbWVudCBzdGFjayAocmVidWlsZCBpdCBp
ZiBpdCBnb3QgaW5jb25zaXN0ZW50KS4KKyAgICBpZiAobV9zY29wZVJlc29sdmVyLT5oYXNTY29w
ZWRTdHlsZXMoKSAmJiBtX3Njb3BlUmVzb2x2ZXItPmVuc3VyZVN0YWNrQ29uc2lzdGVuY3kobV9z
dGF0ZS5lbGVtZW50KCkpKSB7CisgICAgICAgIGJvb2wgYXBwbHlBdXRob3JTdHlsZXMgPSBtX3N0
YXRlLmVsZW1lbnQoKS0+dHJlZVNjb3BlKCktPmFwcGx5QXV0aG9yU3R5bGVzKCk7CisgICAgICAg
IGJvb2wgZG9jdW1lbnRTY29wZSA9IHRydWU7CisgICAgICAgIHVuc2lnbmVkIHNjb3BlU2l6ZSA9
IG1fc2NvcGVSZXNvbHZlci0+c3RhY2tTaXplKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzY29wZVNpemU7ICsraSkgeworICAgICAgICAgICAgbV9zdGF0ZS5tYXRjaGVkUnVs
ZXMoKS5jbGVhcigpOworICAgICAgICAgICAgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSA9
IHJlc3VsdC5tYXRjaGVkUHJvcGVydGllcy5zaXplKCkgLSAxOworCisgICAgICAgICAgICBjb25z
dCBTdHlsZVNjb3BlUmVzb2x2ZXI6OlN0YWNrRnJhbWUmIGZyYW1lID0gbV9zY29wZVJlc29sdmVy
LT5zdGFja0ZyYW1lQXQoaSk7CisgICAgICAgICAgICBkb2N1bWVudFNjb3BlID0gZG9jdW1lbnRT
Y29wZSAmJiAhZnJhbWUubV9zY29wZS0+aXNJblNoYWRvd1RyZWUoKTsKKyAgICAgICAgICAgIGlm
IChkb2N1bWVudFNjb3BlKSB7CisgICAgICAgICAgICAgICAgaWYgKCFhcHBseUF1dGhvclN0eWxl
cykKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGlmICghbV9zY29wZVJlc29sdmVyLT5tYXRjaGVzU3R5bGVCb3VuZHMo
ZnJhbWUpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgTWF0Y2hSZXF1ZXN0IG1hdGNoUmVxdWVzdChmcmFtZS5tX3J1bGVTZXQsIGlu
Y2x1ZGVFbXB0eVJ1bGVzLCBmcmFtZS5tX3Njb3BlKTsKKyAgICAgICAgICAgIFJ1bGVSYW5nZSBy
dWxlUmFuZ2UgPSByZXN1bHQucmFuZ2VzLmF1dGhvclJ1bGVSYW5nZSgpOworICAgICAgICAgICAg
Y29sbGVjdE1hdGNoaW5nUnVsZXMobWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOworICAgICAgICAg
ICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24obWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2Up
OworICAgICAgICAgICAgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKHJlc3VsdCk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBtYXRjaEhvc3RSdWxlcyhyZXN1bHQsIGluY2x1ZGVFbXB0eVJ1
bGVzKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlc3VsdCk7CisgICAgVU5VU0VEX1BBUkFN
KGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyNlbmRpZgorfQorCiBpbmxpbmUgYm9vbCBTdHlsZVJlc29s
dmVyOjpzdHlsZVNoYXJpbmdDYW5kaWRhdGVNYXRjaGVzSG9zdFJ1bGVzKCkKIHsKICNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKQEAgLTM5OSw2ICs1OTAsMTk3IEBAIGlubGluZSBib29sIFN0eWxlUmVz
b2x2ZXI6OnN0eWxlU2hhcmluZ0NhbmRpZGF0ZU1hdGNoZXNIb3N0UnVsZXMoKQogI2VuZGlmCiB9
CiAKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hIb3N0UnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3Vs
dCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKK3sKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAg
ICBBU1NFUlQobV9zY29wZVJlc29sdmVyKTsKKworICAgIG1fc3RhdGUubWF0Y2hlZFJ1bGVzKCku
Y2xlYXIoKTsKKyAgICByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlID0gcmVzdWx0Lm1hdGNo
ZWRQcm9wZXJ0aWVzLnNpemUoKSAtIDE7CisKKyAgICBWZWN0b3I8UnVsZVNldCo+IG1hdGNoZWRS
dWxlczsKKyAgICBtX3Njb3BlUmVzb2x2ZXItPm1hdGNoSG9zdFJ1bGVzKG1fc3RhdGUuZWxlbWVu
dCgpLCBtYXRjaGVkUnVsZXMpOworICAgIGlmIChtYXRjaGVkUnVsZXMuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRjaGVkUnVsZXMuc2l6ZSgp
OyBpID4gMDsgLS1pKSB7CisgICAgICAgIFJ1bGVSYW5nZSBydWxlUmFuZ2UgPSByZXN1bHQucmFu
Z2VzLmF1dGhvclJ1bGVSYW5nZSgpOworICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhNYXRj
aFJlcXVlc3QobWF0Y2hlZFJ1bGVzLmF0KGktMSksIGluY2x1ZGVFbXB0eVJ1bGVzLCBtX3N0YXRl
LmVsZW1lbnQoKSksIHJ1bGVSYW5nZSk7CisgICAgfQorICAgIHNvcnRBbmRUcmFuc2Zlck1hdGNo
ZWRSdWxlcyhyZXN1bHQpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKKyAgICBV
TlVTRURfUEFSQU0oaW5jbHVkZUVtcHR5UnVsZXMpOworI2VuZGlmCit9CisKK3ZvaWQgU3R5bGVS
ZXNvbHZlcjo6bWF0Y2hBdXRob3JSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1
ZGVFbXB0eVJ1bGVzKQoreworICAgIG1fc3RhdGUubWF0Y2hlZFJ1bGVzKCkuY2xlYXIoKTsKKyAg
ICByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlID0gcmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVz
LnNpemUoKSAtIDE7CisKKyAgICBpZiAoIW1fc3RhdGUuZWxlbWVudCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICAvLyBNYXRjaCBnbG9iYWwgYXV0aG9yIHJ1bGVzLgorICAgIE1hdGNoUmVxdWVz
dCBtYXRjaFJlcXVlc3QobV9ydWxlU2V0cy5hdXRob3JTdHlsZSgpLCBpbmNsdWRlRW1wdHlSdWxl
cyk7CisgICAgUnVsZVJhbmdlIHJ1bGVSYW5nZSA9IHJlc3VsdC5yYW5nZXMuYXV0aG9yUnVsZVJh
bmdlKCk7CisgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMobWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2Up
OworICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKG1hdGNoUmVxdWVzdCwgcnVsZVJh
bmdlKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBWZWN0b3I8TWF0Y2hSZXF1ZXN0PiBt
YXRjaFJlcXVlc3RzOworICAgIG1fcnVsZVNldHMuc2hhZG93RGlzdHJpYnV0ZWRSdWxlcygpLmNv
bGxlY3RNYXRjaFJlcXVlc3RzKGluY2x1ZGVFbXB0eVJ1bGVzLCBtYXRjaFJlcXVlc3RzKTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hdGNoUmVxdWVzdHMuc2l6ZSgpOyArK2kpCisgICAg
ICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKG1hdGNoUmVxdWVzdHNbaV0sIHJ1bGVSYW5nZSk7Cisj
ZW5kaWYKKworICAgIHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhyZXN1bHQpOworCisgICAg
bWF0Y2hTY29wZWRBdXRob3JSdWxlcyhyZXN1bHQsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKK30KKwor
dm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaFVzZXJSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBi
b29sIGluY2x1ZGVFbXB0eVJ1bGVzKQoreworICAgIGlmICghbV9ydWxlU2V0cy51c2VyU3R5bGUo
KSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fc3RhdGUubWF0Y2hlZFJ1bGVzKCkuY2xl
YXIoKTsKKworICAgIHJlc3VsdC5yYW5nZXMubGFzdFVzZXJSdWxlID0gcmVzdWx0Lm1hdGNoZWRQ
cm9wZXJ0aWVzLnNpemUoKSAtIDE7CisgICAgTWF0Y2hSZXF1ZXN0IG1hdGNoUmVxdWVzdChtX3J1
bGVTZXRzLnVzZXJTdHlsZSgpLCBpbmNsdWRlRW1wdHlSdWxlcyk7CisgICAgUnVsZVJhbmdlIHJ1
bGVSYW5nZSA9IHJlc3VsdC5yYW5nZXMudXNlclJ1bGVSYW5nZSgpOworICAgIGNvbGxlY3RNYXRj
aGluZ1J1bGVzKG1hdGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsKKyAgICBjb2xsZWN0TWF0Y2hpbmdS
dWxlc0ZvclJlZ2lvbihtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7CisKKyAgICBzb3J0QW5kVHJh
bnNmZXJNYXRjaGVkUnVsZXMocmVzdWx0KTsKK30KKwordm9pZCBTdHlsZVJlc29sdmVyOjptYXRj
aFVBUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgUnVsZVNldCogcnVsZXMpCit7CisgICAgbV9z
dGF0ZS5tYXRjaGVkUnVsZXMoKS5jbGVhcigpOworICAgIAorICAgIHJlc3VsdC5yYW5nZXMubGFz
dFVBUnVsZSA9IHJlc3VsdC5tYXRjaGVkUHJvcGVydGllcy5zaXplKCkgLSAxOworICAgIFJ1bGVS
YW5nZSBydWxlUmFuZ2UgPSByZXN1bHQucmFuZ2VzLlVBUnVsZVJhbmdlKCk7CisgICAgY29sbGVj
dE1hdGNoaW5nUnVsZXMoTWF0Y2hSZXF1ZXN0KHJ1bGVzKSwgcnVsZVJhbmdlKTsKKworICAgIHNv
cnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcyhyZXN1bHQpOworfQorCit2b2lkIFN0eWxlUmVzb2x2
ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8UnVsZURhdGE+KiBy
dWxlcywgY29uc3QgTWF0Y2hSZXF1ZXN0JiBtYXRjaFJlcXVlc3QsIFJ1bGVSYW5nZSYgcnVsZVJh
bmdlKQoreworICAgIGlmICghcnVsZXMpCisgICAgICAgIHJldHVybjsKKworICAgIFN0YXRlJiBz
dGF0ZSA9IG1fc3RhdGU7CisgICAgLy8gSW4gc29tZSBjYXNlcyB3ZSBtYXkgZW5kIHVwIGxvb2tp
bmcgdXAgc3R5bGUgZm9yIHJhbmRvbSBlbGVtZW50cyBpbiB0aGUgbWlkZGxlIG9mIGEgcmVjdXJz
aXZlIHRyZWUgcmVzb2x2ZS4KKyAgICAvLyBBbmNlc3RvciBpZGVudGlmaWVyIGZpbHRlciB3b24n
dCBiZSB1cC10by1kYXRlIGluIHRoYXQgY2FzZSBhbmQgd2UgY2FuJ3QgdXNlIHRoZSBmYXN0IHBh
dGguCisgICAgYm9vbCBjYW5Vc2VGYXN0UmVqZWN0ID0gbV9zZWxlY3RvckZpbHRlci5wYXJlbnRT
dGFja0lzQ29uc2lzdGVudChzdGF0ZS5wYXJlbnROb2RlKCkpICYmIG1hdGNoUmVxdWVzdC5iZWhh
dmlvckF0Qm91bmRhcnkgPT0gU2VsZWN0b3JDaGVja2VyOjpEb2VzTm90Q3Jvc3NCb3VuZGFyeTsK
KworICAgIHVuc2lnbmVkIHNpemUgPSBydWxlcy0+c2l6ZSgpOworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRh
ID0gcnVsZXMtPmF0KGkpOworICAgICAgICBpZiAoY2FuVXNlRmFzdFJlamVjdCAmJiBtX3NlbGVj
dG9yRmlsdGVyLmZhc3RSZWplY3RTZWxlY3RvcjxSdWxlRGF0YTo6bWF4aW11bUlkZW50aWZpZXJD
b3VudD4ocnVsZURhdGEuZGVzY2VuZGFudFNlbGVjdG9ySWRlbnRpZmllckhhc2hlcygpKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIFN0eWxlUnVsZSogcnVsZSA9IHJ1bGVEYXRh
LnJ1bGUoKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1hdGNoUnVsZShkb2N1bWVudCgpLCBydWxl
LCB0aGlzKTsKKyAgICAgICAgUHNldWRvSWQgZHluYW1pY1BzZXVkbyA9IE5PUFNFVURPOworICAg
ICAgICBpZiAocnVsZU1hdGNoZXMocnVsZURhdGEsIG1hdGNoUmVxdWVzdC5zY29wZSwgZHluYW1p
Y1BzZXVkbywgbWF0Y2hSZXF1ZXN0LmJlaGF2aW9yQXRCb3VuZGFyeSkpIHsKKyAgICAgICAgICAg
IC8vIElmIHRoZSBydWxlIGhhcyBubyBwcm9wZXJ0aWVzIHRvIGFwcGx5LCB0aGVuIGlnbm9yZSBp
dCBpbiB0aGUgbm9uLWRlYnVnIG1vZGUuCisgICAgICAgICAgICBjb25zdCBTdHlsZVByb3BlcnR5
U2V0KiBwcm9wZXJ0aWVzID0gcnVsZS0+cHJvcGVydGllcygpOworICAgICAgICAgICAgaWYgKCFw
cm9wZXJ0aWVzIHx8IChwcm9wZXJ0aWVzLT5pc0VtcHR5KCkgJiYgIW1hdGNoUmVxdWVzdC5pbmNs
dWRlRW1wdHlSdWxlcykpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZE1hdGNoUnVsZShjb29raWUsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEZJWE1FOiBFeHBvc2luZyB0aGUgbm9u
LXN0YW5kYXJkIGdldE1hdGNoZWRDU1NSdWxlcyBBUEkgdG8gd2ViIGlzIHRoZSBvbmx5IHJlYXNv
biB0aGlzIGlzIG5lZWRlZC4KKyAgICAgICAgICAgIGlmIChzdGF0ZS5pc1NhbWVPcmlnaW5Pbmx5
KCkgJiYgIXJ1bGVEYXRhLmhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSkgeworICAgICAgICAg
ICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTWF0Y2hSdWxlKGNvb2tpZSwgZmFs
c2UpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgLy8gSWYgd2UncmUgbWF0Y2hpbmcgbm9ybWFsIHJ1bGVzLCBzZXQgYSBwc2V1ZG8gYml0IGlm
CisgICAgICAgICAgICAvLyB3ZSByZWFsbHkganVzdCBtYXRjaGVkIGEgcHNldWRvLWVsZW1lbnQu
CisgICAgICAgICAgICBpZiAoZHluYW1pY1BzZXVkbyAhPSBOT1BTRVVETyAmJiBzdGF0ZS5wc2V1
ZG9TdHlsZVJlcXVlc3QoKS5wc2V1ZG9JZCA9PSBOT1BTRVVETykgeworICAgICAgICAgICAgICAg
IGlmIChzdGF0ZS5tb2RlKCkgPT0gU2VsZWN0b3JDaGVja2VyOjpDb2xsZWN0aW5nUnVsZXMpIHsK
KyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNYXRjaFJ1
bGUoY29va2llLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoZHluYW1pY1BzZXVkbyA8IEZJUlNUX0lO
VEVSTkFMX1BTRVVET0lEKQorICAgICAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRI
YXNQc2V1ZG9TdHlsZShkeW5hbWljUHNldWRvKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgLy8gVXBkYXRlIG91ciBmaXJzdC9sYXN0IHJ1bGUgaW5kaWNlcyBpbiB0aGUg
bWF0Y2hlZCBydWxlcyBhcnJheS4KKyAgICAgICAgICAgICAgICArK3J1bGVSYW5nZS5sYXN0UnVs
ZUluZGV4OworICAgICAgICAgICAgICAgIGlmIChydWxlUmFuZ2UuZmlyc3RSdWxlSW5kZXggPT0g
LTEpCisgICAgICAgICAgICAgICAgICAgIHJ1bGVSYW5nZS5maXJzdFJ1bGVJbmRleCA9IHJ1bGVS
YW5nZS5sYXN0UnVsZUluZGV4OworCisgICAgICAgICAgICAgICAgLy8gQWRkIHRoaXMgcnVsZSB0
byBvdXIgbGlzdCBvZiBtYXRjaGVkIHJ1bGVzLgorICAgICAgICAgICAgICAgIG1fc3RhdGUuYWRk
TWF0Y2hlZFJ1bGUoJnJ1bGVEYXRhKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZE1hdGNoUnVsZShjb29raWUsIHRydWUpOworICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkTWF0Y2hSdWxlKGNvb2tpZSwgZmFsc2UpOworICAgIH0KK30KKworc3Rh
dGljIGlubGluZSBib29sIGNvbXBhcmVSdWxlcyhjb25zdCBSdWxlRGF0YSogcjEsIGNvbnN0IFJ1
bGVEYXRhKiByMikKK3sKKyAgICB1bnNpZ25lZCBzcGVjaWZpY2l0eTEgPSByMS0+c3BlY2lmaWNp
dHkoKTsKKyAgICB1bnNpZ25lZCBzcGVjaWZpY2l0eTIgPSByMi0+c3BlY2lmaWNpdHkoKTsKKyAg
ICByZXR1cm4gKHNwZWNpZmljaXR5MSA9PSBzcGVjaWZpY2l0eTIpID8gcjEtPnBvc2l0aW9uKCkg
PCByMi0+cG9zaXRpb24oKSA6IHNwZWNpZmljaXR5MSA8IHNwZWNpZmljaXR5MjsKK30KKwordm9p
ZCBTdHlsZVJlc29sdmVyOjpzb3J0TWF0Y2hlZFJ1bGVzKCkKK3sKKyAgICBzdGQ6OnNvcnQobV9z
dGF0ZS5tYXRjaGVkUnVsZXMoKS5iZWdpbigpLCBtX3N0YXRlLm1hdGNoZWRSdWxlcygpLmVuZCgp
LCBjb21wYXJlUnVsZXMpOworfQorCit2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoQWxsUnVsZXMo
TWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlU01JTFByb3BlcnRpZXMpCit7CisgICAg
bWF0Y2hVQVJ1bGVzKHJlc3VsdCk7CisKKyAgICAvLyBOb3cgd2UgY2hlY2sgdXNlciBzaGVldCBy
dWxlcy4KKyAgICBpZiAobV9tYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMpCisgICAgICAgIG1hdGNo
VXNlclJ1bGVzKHJlc3VsdCwgZmFsc2UpOworCisgICAgLy8gTm93IGNoZWNrIGF1dGhvciBydWxl
cywgYmVnaW5uaW5nIGZpcnN0IHdpdGggcHJlc2VudGF0aW9uYWwgYXR0cmlidXRlcyBtYXBwZWQg
ZnJvbSBIVE1MLgorICAgIGlmIChtX3N0YXRlLnN0eWxlZEVsZW1lbnQoKSkgeworICAgICAgICBh
ZGRFbGVtZW50U3R5bGVQcm9wZXJ0aWVzKHJlc3VsdCwgbV9zdGF0ZS5zdHlsZWRFbGVtZW50KCkt
PnByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKCkpOworCisgICAgICAgIC8vIE5vdyB3ZSBjaGVj
ayBhZGRpdGlvbmFsIG1hcHBlZCBkZWNsYXJhdGlvbnMuCisgICAgICAgIC8vIFRhYmxlcyBhbmQg
dGFibGUgY2VsbHMgc2hhcmUgYW4gYWRkaXRpb25hbCBtYXBwZWQgcnVsZSB0aGF0IG11c3QgYmUg
YXBwbGllZAorICAgICAgICAvLyBhZnRlciBhbGwgYXR0cmlidXRlcywgc2luY2UgdGhlaXIgbWFw
cGVkIHN0eWxlIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZiBtdWx0aXBsZSBhdHRyaWJ1dGVzLgor
ICAgICAgICBhZGRFbGVtZW50U3R5bGVQcm9wZXJ0aWVzKHJlc3VsdCwgbV9zdGF0ZS5zdHlsZWRF
bGVtZW50KCktPmFkZGl0aW9uYWxQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpKTsKKworICAg
ICAgICBpZiAobV9zdGF0ZS5zdHlsZWRFbGVtZW50KCktPmlzSFRNTEVsZW1lbnQoKSkgeworICAg
ICAgICAgICAgYm9vbCBpc0F1dG87CisgICAgICAgICAgICBUZXh0RGlyZWN0aW9uIHRleHREaXJl
Y3Rpb24gPSB0b0hUTUxFbGVtZW50KG1fc3RhdGUuc3R5bGVkRWxlbWVudCgpKS0+ZGlyZWN0aW9u
YWxpdHlJZmhhc0RpckF1dG9BdHRyaWJ1dGUoaXNBdXRvKTsKKyAgICAgICAgICAgIGlmIChpc0F1
dG8pCisgICAgICAgICAgICAgICAgYWRkTWF0Y2hlZFByb3BlcnRpZXMocmVzdWx0LCB0ZXh0RGly
ZWN0aW9uID09IExUUiA/IGxlZnRUb1JpZ2h0RGVjbGFyYXRpb24oKSA6IHJpZ2h0VG9MZWZ0RGVj
bGFyYXRpb24oKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy8gQ2hlY2sgdGhlIHJ1
bGVzIGluIGF1dGhvciBzaGVldHMgbmV4dC4KKyAgICBpZiAobV9tYXRjaEF1dGhvckFuZFVzZXJT
dHlsZXMpCisgICAgICAgIG1hdGNoQXV0aG9yUnVsZXMocmVzdWx0LCBmYWxzZSk7CisKKyAgICAv
LyBOb3cgY2hlY2sgb3VyIGlubGluZSBzdHlsZSBhdHRyaWJ1dGUuCisgICAgaWYgKG1fbWF0Y2hB
dXRob3JBbmRVc2VyU3R5bGVzICYmIG1fc3RhdGUuc3R5bGVkRWxlbWVudCgpICYmIG1fc3RhdGUu
c3R5bGVkRWxlbWVudCgpLT5pbmxpbmVTdHlsZSgpKSB7CisgICAgICAgIC8vIElubGluZSBzdHls
ZSBpcyBpbW11dGFibGUgYXMgbG9uZyBhcyB0aGVyZSBpcyBubyBDU1NPTSB3cmFwcGVyLgorICAg
ICAgICAvLyBGSVhNRTogTWVkaWEgY29udHJvbCBzaGFkb3cgdHJlZXMgc2VlbSB0byBoYXZlIHBy
b2JsZW1zIHdpdGggY2FjaGluZy4KKyAgICAgICAgYm9vbCBpc0lubGluZVN0eWxlQ2FjaGVhYmxl
ID0gIW1fc3RhdGUuc3R5bGVkRWxlbWVudCgpLT5pbmxpbmVTdHlsZSgpLT5pc011dGFibGUoKSAm
JiAhbV9zdGF0ZS5zdHlsZWRFbGVtZW50KCktPmlzSW5TaGFkb3dUcmVlKCk7CisgICAgICAgIC8v
IEZJWE1FOiBDb25zdGlmeS4KKyAgICAgICAgYWRkRWxlbWVudFN0eWxlUHJvcGVydGllcyhyZXN1
bHQsIG1fc3RhdGUuc3R5bGVkRWxlbWVudCgpLT5pbmxpbmVTdHlsZSgpLCBpc0lubGluZVN0eWxl
Q2FjaGVhYmxlKTsKKyAgICB9CisKKyNpZiBFTkFCTEUoU1ZHKQorICAgIC8vIE5vdyBjaGVjayBT
TUlMIGFuaW1hdGlvbiBvdmVycmlkZSBzdHlsZS4KKyAgICBpZiAoaW5jbHVkZVNNSUxQcm9wZXJ0
aWVzICYmIG1fbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzICYmIG1fc3RhdGUuc3R5bGVkRWxlbWVu
dCgpICYmIG1fc3RhdGUuc3R5bGVkRWxlbWVudCgpLT5pc1NWR0VsZW1lbnQoKSkKKyAgICAgICAg
YWRkRWxlbWVudFN0eWxlUHJvcGVydGllcyhyZXN1bHQsIHN0YXRpY19jYXN0PFNWR0VsZW1lbnQq
PihtX3N0YXRlLnN0eWxlZEVsZW1lbnQoKSktPmFuaW1hdGVkU01JTFN0eWxlUHJvcGVydGllcygp
LCBmYWxzZSAvKiBpc0NhY2hlYWJsZSAqLyk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShpbmNs
dWRlU01JTFByb3BlcnRpZXMpOworI2VuZGlmCit9CisKIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y2xh
c3NOYW1lc0FmZmVjdGVkQnlSdWxlcyhjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBjbGFzc05hbWVz
KSBjb25zdAogewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjbGFzc05hbWVzLnNpemUo
KTsgKytpKSB7CkBAIC00MjYsOCArODA4LDkgQEAgaW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6
aW5pdEVsZW1lbnQoRWxlbWVudCogZSkKICAgICB9CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlUmVz
b2x2ZXI6OlN0YXRlOjppbml0Rm9yU3R5bGVSZXNvbHZlKERvY3VtZW50KiBkb2N1bWVudCwgRWxl
bWVudCogZSwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBSZW5kZXJSZWdpb24qIHJlZ2lvbkZv
clN0eWxpbmcpCitpbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjpTdGF0ZTo6aW5pdEZvclN0eWxl
UmVzb2x2ZShEb2N1bWVudCogZG9jdW1lbnQsIEVsZW1lbnQqIGUsIFJlbmRlclN0eWxlKiBwYXJl
bnRTdHlsZSwgY29uc3QgUHNldWRvU3R5bGVSZXF1ZXN0JiBwc2V1ZG9TdHlsZVJlcXVlc3QsIFJl
bmRlclJlZ2lvbiogcmVnaW9uRm9yU3R5bGluZykKIHsKKyAgICBtX3BzZXVkb1N0eWxlUmVxdWVz
dCA9IHBzZXVkb1N0eWxlUmVxdWVzdDsKICAgICBtX3JlZ2lvbkZvclN0eWxpbmcgPSByZWdpb25G
b3JTdHlsaW5nOwogCiAgICAgaWYgKGUpIHsKQEAgLTQ0OSw2ICs4MzIsNyBAQCBpbmxpbmUgdm9p
ZCBTdHlsZVJlc29sdmVyOjpTdGF0ZTo6aW5pdEZvclN0eWxlUmVzb2x2ZShEb2N1bWVudCogZG9j
dW1lbnQsIEVsZW1lbgogCiAgICAgbV9zdHlsZSA9IDA7CiAgICAgbV9wZW5kaW5nSW1hZ2VQcm9w
ZXJ0aWVzLmNsZWFyKCk7CisgICAgbV9ydWxlTGlzdCA9IDA7CiAgICAgbV9mb250RGlydHkgPSBm
YWxzZTsKIH0KIApAQCAtNTE2LDkgKzkwMCwxNyBAQCBib29sIFN0eWxlUmVzb2x2ZXI6OnN0eWxl
U2hhcmluZ0NhbmRpZGF0ZU1hdGNoZXNSdWxlU2V0KFJ1bGVTZXQqIHJ1bGVTZXQpCiB7CiAgICAg
aWYgKCFydWxlU2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBFbGVtZW50UnVsZUNv
bGxlY3RvciBjb2xsZWN0b3IodGhpcywgbV9zdGF0ZSk7Ci0gICAgcmV0dXJuIGNvbGxlY3Rvci5o
YXNBbnlNYXRjaGluZ1J1bGVzKHJ1bGVTZXQpOworICAgIG1fc3RhdGUubWF0Y2hlZFJ1bGVzKCku
Y2xlYXIoKTsKKworICAgIG1fc3RhdGUuc2V0TW9kZShTZWxlY3RvckNoZWNrZXI6OlNoYXJpbmdS
dWxlcyk7CisgICAgaW50IGZpcnN0UnVsZUluZGV4ID0gLTEsIGxhc3RSdWxlSW5kZXggPSAtMTsK
KyAgICBSdWxlUmFuZ2UgcnVsZVJhbmdlKGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4KTsK
KyAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhNYXRjaFJlcXVlc3QocnVsZVNldCksIHJ1bGVSYW5n
ZSk7CisgICAgbV9zdGF0ZS5zZXRNb2RlKFNlbGVjdG9yQ2hlY2tlcjo6UmVzb2x2aW5nU3R5bGUp
OworICAgIGlmIChtX3N0YXRlLm1hdGNoZWRSdWxlcygpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIG1fc3RhdGUubWF0Y2hlZFJ1bGVzKCkuY2xlYXIoKTsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogYm9vbCBTdHlsZVJlc29sdmVyOjpjYW5TaGFyZVN0eWxlV2l0aENvbnRy
b2woU3R5bGVkRWxlbWVudCogZWxlbWVudCkgY29uc3QKQEAgLTc4Niw2ICsxMTc4LDI2IEBAIFJl
bmRlclN0eWxlKiBTdHlsZVJlc29sdmVyOjpsb2NhdGVTaGFyZWRTdHlsZSgpCiAgICAgcmV0dXJu
IHNoYXJlRWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKIH0KIAordm9pZCBTdHlsZVJlc29sdmVyOjpt
YXRjaFVBUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCkKK3sKKyAgICBNYXRjaGluZ1VBUnVsZXNT
Y29wZSBzY29wZTsKKworICAgIC8vIEZpcnN0IHdlIG1hdGNoIHJ1bGVzIGZyb20gdGhlIHVzZXIg
YWdlbnQgc2hlZXQuCisgICAgaWYgKENTU0RlZmF1bHRTdHlsZVNoZWV0czo6c2ltcGxlRGVmYXVs
dFN0eWxlU2hlZXQpCisgICAgICAgIHJlc3VsdC5pc0NhY2hlYWJsZSA9IGZhbHNlOworICAgIFJ1
bGVTZXQqIHVzZXJBZ2VudFN0eWxlU2hlZXQgPSBtX21lZGl1bS0+bWVkaWFUeXBlTWF0Y2hTcGVj
aWZpYygicHJpbnQiKQorICAgICAgICA/IENTU0RlZmF1bHRTdHlsZVNoZWV0czo6ZGVmYXVsdFBy
aW50U3R5bGUgOiBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmRlZmF1bHRTdHlsZTsKKyAgICBtYXRj
aFVBUnVsZXMocmVzdWx0LCB1c2VyQWdlbnRTdHlsZVNoZWV0KTsKKworICAgIC8vIEluIHF1aXJr
cyBtb2RlLCB3ZSBtYXRjaCBydWxlcyBmcm9tIHRoZSBxdWlya3MgdXNlciBhZ2VudCBzaGVldC4K
KyAgICBpZiAoZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkpCisgICAgICAgIG1hdGNoVUFSdWxl
cyhyZXN1bHQsIENTU0RlZmF1bHRTdHlsZVNoZWV0czo6ZGVmYXVsdFF1aXJrc1N0eWxlKTsKKwor
ICAgIC8vIElmIGRvY3VtZW50IHVzZXMgdmlldyBzb3VyY2Ugc3R5bGVzIChpbiB2aWV3IHNvdXJj
ZSBtb2RlIG9yIGluIHhtbCB2aWV3ZXIgbW9kZSksIHRoZW4gd2UgbWF0Y2ggcnVsZXMgZnJvbSB0
aGUgdmlldyBzb3VyY2Ugc3R5bGUgc2hlZXQuCisgICAgaWYgKGRvY3VtZW50KCktPmlzVmlld1Nv
dXJjZSgpKQorICAgICAgICBtYXRjaFVBUnVsZXMocmVzdWx0LCBDU1NEZWZhdWx0U3R5bGVTaGVl
dHM6OnZpZXdTb3VyY2VTdHlsZSgpKTsKK30KKwogc3RhdGljIHZvaWQgc2V0U3R5bGVzRm9yUGFn
aW5hdGlvbk1vZGUoUGFnaW5hdGlvbjo6TW9kZSBwYWdpbmF0aW9uTW9kZSwgUmVuZGVyU3R5bGUq
IHN0eWxlKQogewogICAgIGlmIChwYWdpbmF0aW9uTW9kZSA9PSBQYWdpbmF0aW9uOjpVbnBhZ2lu
YXRlZCkKQEAgLTk4Myw3ICsxMzk1LDcgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gU3R5bGVS
ZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIFJlbmRlclMKIAogICAg
IFN0YXRlJiBzdGF0ZSA9IG1fc3RhdGU7CiAgICAgaW5pdEVsZW1lbnQoZWxlbWVudCk7Ci0gICAg
c3RhdGUuaW5pdEZvclN0eWxlUmVzb2x2ZShkb2N1bWVudCgpLCBlbGVtZW50LCBkZWZhdWx0UGFy
ZW50LCByZWdpb25Gb3JTdHlsaW5nKTsKKyAgICBzdGF0ZS5pbml0Rm9yU3R5bGVSZXNvbHZlKGRv
Y3VtZW50KCksIGVsZW1lbnQsIGRlZmF1bHRQYXJlbnQsIE5PUFNFVURPLCByZWdpb25Gb3JTdHls
aW5nKTsKICAgICBpZiAoc2hhcmluZ0JlaGF2aW9yID09IEFsbG93U3R5bGVTaGFyaW5nICYmICFz
dGF0ZS5kaXN0cmlidXRlZFRvSW5zZXJ0aW9uUG9pbnQoKSkgewogICAgICAgICBSZW5kZXJTdHls
ZSogc2hhcmVkU3R5bGUgPSBsb2NhdGVTaGFyZWRTdHlsZSgpOwogICAgICAgICBpZiAoc2hhcmVk
U3R5bGUpCkBAIC0xMDI1LDE2ICsxNDM3LDEzIEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFN0
eWxlUmVzb2x2ZXI6OnN0eWxlRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBSZW5kZXJTCiAg
ICAgaWYgKG5lZWRzQ29sbGVjdGlvbikKICAgICAgICAgbV9ydWxlU2V0cy5jb2xsZWN0RmVhdHVy
ZXMoZG9jdW1lbnQoKS0+aXNWaWV3U291cmNlKCksIG1fc2NvcGVSZXNvbHZlci5nZXQoKSk7CiAK
LSAgICBFbGVtZW50UnVsZUNvbGxlY3RvciBjb2xsZWN0b3IodGhpcywgc3RhdGUpOwotICAgIGNv
bGxlY3Rvci5zZXRSZWdpb25Gb3JTdHlsaW5nKHJlZ2lvbkZvclN0eWxpbmcpOwotICAgIGNvbGxl
Y3Rvci5zZXRNZWRpdW0obV9tZWRpdW0uZ2V0KCkpOwotCisgICAgTWF0Y2hSZXN1bHQgbWF0Y2hS
ZXN1bHQ7CiAgICAgaWYgKG1hdGNoaW5nQmVoYXZpb3IgPT0gTWF0Y2hPbmx5VXNlckFnZW50UnVs
ZXMpCi0gICAgICAgIGNvbGxlY3Rvci5tYXRjaFVBUnVsZXMoKTsKKyAgICAgICAgbWF0Y2hVQVJ1
bGVzKG1hdGNoUmVzdWx0KTsKICAgICBlbHNlCi0gICAgICAgIGNvbGxlY3Rvci5tYXRjaEFsbFJ1
bGVzKG1fbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzLCBtYXRjaGluZ0JlaGF2aW9yICE9IE1hdGNo
QWxsUnVsZXNFeGNsdWRpbmdTTUlMKTsKKyAgICAgICAgbWF0Y2hBbGxSdWxlcyhtYXRjaFJlc3Vs
dCwgbWF0Y2hpbmdCZWhhdmlvciAhPSBNYXRjaEFsbFJ1bGVzRXhjbHVkaW5nU01JTCk7CiAKLSAg
ICBhcHBseU1hdGNoZWRQcm9wZXJ0aWVzKGNvbGxlY3Rvci5tYXRjaGVkUmVzdWx0KCksIGVsZW1l
bnQpOworICAgIGFwcGx5TWF0Y2hlZFByb3BlcnRpZXMobWF0Y2hSZXN1bHQsIGVsZW1lbnQpOwog
CiAgICAgLy8gQ2xlYW4gdXAgb3VyIHN0eWxlIG9iamVjdCdzIGRpc3BsYXkgYW5kIHRleHQgZGVj
b3JhdGlvbnMgKGFtb25nIG90aGVyIGZpeHVwcykuCiAgICAgYWRqdXN0UmVuZGVyU3R5bGUoc3Rh
dGUuc3R5bGUoKSwgc3RhdGUucGFyZW50U3R5bGUoKSwgZWxlbWVudCk7CkBAIC0xMDUxLDcgKzE0
NjAsNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvcktl
eWZyYW1lKGNvbnN0IFJlbmRlclN0eWxlKiBlbGVtZQogewogICAgIE1hdGNoUmVzdWx0IHJlc3Vs
dDsKICAgICBpZiAoa2V5ZnJhbWUtPnByb3BlcnRpZXMoKSkKLSAgICAgICAgcmVzdWx0LmFkZE1h
dGNoZWRQcm9wZXJ0aWVzKGtleWZyYW1lLT5wcm9wZXJ0aWVzKCkpOworICAgICAgICBhZGRNYXRj
aGVkUHJvcGVydGllcyhyZXN1bHQsIGtleWZyYW1lLT5wcm9wZXJ0aWVzKCkpOwogCiAgICAgQVNT
RVJUKCFtX3N0YXRlLnN0eWxlKCkpOwogCkBAIC0xMTc1LDcgKzE1ODQsNyBAQCBQYXNzUmVmUHRy
PFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpwc2V1ZG9TdHlsZUZvckVsZW1lbnQoRWxlbWVu
dCogZSwgY29uc3QgUAogCiAgICAgaW5pdEVsZW1lbnQoZSk7CiAKLSAgICBzdGF0ZS5pbml0Rm9y
U3R5bGVSZXNvbHZlKGRvY3VtZW50KCksIGUsIHBhcmVudFN0eWxlKTsKKyAgICBzdGF0ZS5pbml0
Rm9yU3R5bGVSZXNvbHZlKGRvY3VtZW50KCksIGUsIHBhcmVudFN0eWxlLCBwc2V1ZG9TdHlsZVJl
cXVlc3QpOwogICAgIHN0YXRlLnNldFN0eWxlKFJlbmRlclN0eWxlOjpjcmVhdGUoKSk7CiAgICAg
c3RhdGUuc3R5bGUoKS0+aW5oZXJpdEZyb20obV9zdGF0ZS5wYXJlbnRTdHlsZSgpKTsKIApAQCAt
MTE4MywyMiArMTU5MiwyMCBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVy
Ojpwc2V1ZG9TdHlsZUZvckVsZW1lbnQoRWxlbWVudCogZSwgY29uc3QgUAogICAgIC8vIHRob3Nl
IHJ1bGVzLgogCiAgICAgLy8gQ2hlY2sgVUEsIHVzZXIgYW5kIGF1dGhvciBydWxlcy4KLSAgICBF
bGVtZW50UnVsZUNvbGxlY3RvciBjb2xsZWN0b3IodGhpcywgc3RhdGUpOwotICAgIGNvbGxlY3Rv
ci5zZXRQc2V1ZG9TdHlsZVJlcXVlc3QocHNldWRvU3R5bGVSZXF1ZXN0KTsKLSAgICBjb2xsZWN0
b3Iuc2V0TWVkaXVtKG1fbWVkaXVtLmdldCgpKTsKLSAgICBjb2xsZWN0b3IubWF0Y2hVQVJ1bGVz
KCk7CisgICAgTWF0Y2hSZXN1bHQgbWF0Y2hSZXN1bHQ7CisgICAgbWF0Y2hVQVJ1bGVzKG1hdGNo
UmVzdWx0KTsKIAogICAgIGlmIChtX21hdGNoQXV0aG9yQW5kVXNlclN0eWxlcykgewotICAgICAg
ICBjb2xsZWN0b3IubWF0Y2hVc2VyUnVsZXMoZmFsc2UpOwotICAgICAgICBjb2xsZWN0b3IubWF0
Y2hBdXRob3JSdWxlcyhmYWxzZSk7CisgICAgICAgIG1hdGNoVXNlclJ1bGVzKG1hdGNoUmVzdWx0
LCBmYWxzZSk7CisgICAgICAgIG1hdGNoQXV0aG9yUnVsZXMobWF0Y2hSZXN1bHQsIGZhbHNlKTsK
ICAgICB9CiAKLSAgICBpZiAoY29sbGVjdG9yLm1hdGNoZWRSZXN1bHQoKS5tYXRjaGVkUHJvcGVy
dGllcy5pc0VtcHR5KCkpCisgICAgaWYgKG1hdGNoUmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRTdHls
ZVR5cGUocHNldWRvU3R5bGVSZXF1ZXN0LnBzZXVkb0lkKTsKIAotICAgIGFwcGx5TWF0Y2hlZFBy
b3BlcnRpZXMoY29sbGVjdG9yLm1hdGNoZWRSZXN1bHQoKSwgZSk7CisgICAgYXBwbHlNYXRjaGVk
UHJvcGVydGllcyhtYXRjaFJlc3VsdCwgZSk7CiAKICAgICAvLyBDbGVhbiB1cCBvdXIgc3R5bGUg
b2JqZWN0J3MgZGlzcGxheSBhbmQgdGV4dCBkZWNvcmF0aW9ucyAoYW1vbmcgb3RoZXIgZml4dXBz
KS4KICAgICBhZGp1c3RSZW5kZXJTdHlsZShzdGF0ZS5zdHlsZSgpLCBtX3N0YXRlLnBhcmVudFN0
eWxlKCksIDApOwpAQCAtMTIxOSwxMiArMTYyNiwxNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxl
PiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvclBhZ2UoaW50IHBhZ2VJbmRleCkKICAgICBtX3N0YXRl
LnNldFN0eWxlKFJlbmRlclN0eWxlOjpjcmVhdGUoKSk7CiAgICAgbV9zdGF0ZS5zdHlsZSgpLT5p
bmhlcml0RnJvbShtX3N0YXRlLnJvb3RFbGVtZW50U3R5bGUoKSk7CiAKLSAgICBQYWdlUnVsZUNv
bGxlY3RvciBjb2xsZWN0b3IobV9zdGF0ZSwgbV9ydWxlU2V0cyk7Ci0gICAgY29sbGVjdG9yLm1h
dGNoQWxsUGFnZVJ1bGVzKHBhZ2VJbmRleCk7CisgICAgY29uc3QgYm9vbCBpc0xlZnQgPSBpc0xl
ZnRQYWdlKHBhZ2VJbmRleCk7CisgICAgY29uc3QgYm9vbCBpc0ZpcnN0ID0gaXNGaXJzdFBhZ2Uo
cGFnZUluZGV4KTsKKyAgICBjb25zdCBTdHJpbmcgcGFnZSA9IHBhZ2VOYW1lKHBhZ2VJbmRleCk7
CisgICAgCisgICAgTWF0Y2hSZXN1bHQgcmVzdWx0OworICAgIG1hdGNoUGFnZVJ1bGVzKHJlc3Vs
dCwgQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpkZWZhdWx0UHJpbnRTdHlsZSwgaXNMZWZ0LCBpc0Zp
cnN0LCBwYWdlKTsKKyAgICBtYXRjaFBhZ2VSdWxlcyhyZXN1bHQsIG1fcnVsZVNldHMudXNlclN0
eWxlKCksIGlzTGVmdCwgaXNGaXJzdCwgcGFnZSk7CisgICAgLy8gT25seSBjb25zaWRlciB0aGUg
Z2xvYmFsIGF1dGhvciBSdWxlU2V0IGZvciBAcGFnZSBydWxlcywgYXMgcGVyIHRoZSBIVE1MNSBz
cGVjLgorICAgIG1hdGNoUGFnZVJ1bGVzKHJlc3VsdCwgbV9ydWxlU2V0cy5hdXRob3JTdHlsZSgp
LCBpc0xlZnQsIGlzRmlyc3QsIHBhZ2UpOwogICAgIG1fc3RhdGUuc2V0TGluZUhlaWdodFZhbHVl
KDApOwogICAgIGJvb2wgaW5oZXJpdGVkT25seSA9IGZhbHNlOwotCi0gICAgTWF0Y2hSZXN1bHQm
IHJlc3VsdCA9IGNvbGxlY3Rvci5tYXRjaGVkUmVzdWx0KCk7CiAjaWYgRU5BQkxFKENTU19WQVJJ
QUJMRVMpCiAgICAgYXBwbHlNYXRjaGVkUHJvcGVydGllczxWYXJpYWJsZURlZmluaXRpb25zPihy
ZXN1bHQsIGZhbHNlLCAwLCByZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMuc2l6ZSgpIC0gMSwgaW5o
ZXJpdGVkT25seSk7CiAjZW5kaWYKQEAgLTE2NTAsMzEgKzIwNjIsODkgQEAgUGFzc1JlZlB0cjxD
U1NSdWxlTGlzdD4gU3R5bGVSZXNvbHZlcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoRWxl
bWVudCogZSwgUHMKICAgICBpZiAoIWUgfHwgIWUtPmRvY3VtZW50KCktPmhhdmVTdHlsZXNoZWV0
c0xvYWRlZCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGluaXRFbGVtZW50KGUpOwotICAg
IG1fc3RhdGUuaW5pdEZvclN0eWxlUmVzb2x2ZShkb2N1bWVudCgpLCBlLCAwKTsKKyAgICBtX3N0
YXRlLnNldE1vZGUoU2VsZWN0b3JDaGVja2VyOjpDb2xsZWN0aW5nUnVsZXMpOwogCi0gICAgRWxl
bWVudFJ1bGVDb2xsZWN0b3IgY29sbGVjdG9yKHRoaXMsIG1fc3RhdGUpOwotICAgIGNvbGxlY3Rv
ci5zZXRNb2RlKFNlbGVjdG9yQ2hlY2tlcjo6Q29sbGVjdGluZ1J1bGVzKTsKLSAgICBjb2xsZWN0
b3Iuc2V0UHNldWRvU3R5bGVSZXF1ZXN0KFBzZXVkb1N0eWxlUmVxdWVzdChwc2V1ZG9JZCkpOwot
ICAgIGNvbGxlY3Rvci5zZXRNZWRpdW0obV9tZWRpdW0uZ2V0KCkpOworICAgIGluaXRFbGVtZW50
KGUpOworICAgIG1fc3RhdGUuaW5pdEZvclN0eWxlUmVzb2x2ZShkb2N1bWVudCgpLCBlLCAwLCBw
c2V1ZG9JZCk7CiAKKyAgICBNYXRjaFJlc3VsdCBkdW1teTsKICAgICBpZiAocnVsZXNUb0luY2x1
ZGUgJiBVQUFuZFVzZXJDU1NSdWxlcykgewogICAgICAgICAvLyBGaXJzdCB3ZSBtYXRjaCBydWxl
cyBmcm9tIHRoZSB1c2VyIGFnZW50IHNoZWV0LgotICAgICAgICBjb2xsZWN0b3IubWF0Y2hVQVJ1
bGVzKCk7Ci0gICAgICAgIAorICAgICAgICBtYXRjaFVBUnVsZXMoZHVtbXkpOworCiAgICAgICAg
IC8vIE5vdyB3ZSBjaGVjayB1c2VyIHNoZWV0IHJ1bGVzLgogICAgICAgICBpZiAobV9tYXRjaEF1
dGhvckFuZFVzZXJTdHlsZXMpCi0gICAgICAgICAgICBjb2xsZWN0b3IubWF0Y2hVc2VyUnVsZXMo
cnVsZXNUb0luY2x1ZGUgJiBFbXB0eUNTU1J1bGVzKTsKKyAgICAgICAgICAgIG1hdGNoVXNlclJ1
bGVzKGR1bW15LCBydWxlc1RvSW5jbHVkZSAmIEVtcHR5Q1NTUnVsZXMpOwogICAgIH0KIAogICAg
IGlmIChtX21hdGNoQXV0aG9yQW5kVXNlclN0eWxlcyAmJiAocnVsZXNUb0luY2x1ZGUgJiBBdXRo
b3JDU1NSdWxlcykpIHsKLSAgICAgICAgY29sbGVjdG9yLnNldFNhbWVPcmlnaW5Pbmx5KCEocnVs
ZXNUb0luY2x1ZGUgJiBDcm9zc09yaWdpbkNTU1J1bGVzKSk7CisgICAgICAgIG1fc3RhdGUuc2V0
U2FtZU9yaWdpbk9ubHkoIShydWxlc1RvSW5jbHVkZSAmIENyb3NzT3JpZ2luQ1NTUnVsZXMpKTsK
IAogICAgICAgICAvLyBDaGVjayB0aGUgcnVsZXMgaW4gYXV0aG9yIHNoZWV0cy4KLSAgICAgICAg
Y29sbGVjdG9yLm1hdGNoQXV0aG9yUnVsZXMocnVsZXNUb0luY2x1ZGUgJiBFbXB0eUNTU1J1bGVz
KTsKKyAgICAgICAgbWF0Y2hBdXRob3JSdWxlcyhkdW1teSwgcnVsZXNUb0luY2x1ZGUgJiBFbXB0
eUNTU1J1bGVzKTsKKworICAgICAgICBtX3N0YXRlLnNldFNhbWVPcmlnaW5Pbmx5KGZhbHNlKTsK
ICAgICB9CiAKLSAgICByZXR1cm4gY29sbGVjdG9yLm1hdGNoZWRSdWxlTGlzdCgpOworICAgIG1f
c3RhdGUuc2V0TW9kZShTZWxlY3RvckNoZWNrZXI6OlJlc29sdmluZ1N0eWxlKTsKKworICAgIHJl
dHVybiBtX3N0YXRlLnRha2VSdWxlTGlzdCgpOworfQorCitpbmxpbmUgYm9vbCBTdHlsZVJlc29s
dmVyOjpydWxlTWF0Y2hlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIGNvbnN0IENvbnRhaW5l
ck5vZGUqIHNjb3BlLCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbywgU2VsZWN0b3JDaGVja2VyOjpC
ZWhhdmlvckF0Qm91bmRhcnkgYmVoYXZpb3JBdEJvdW5kYXJ5KQoreworICAgIFN0YXRlJiBzdGF0
ZSA9IG1fc3RhdGU7CisKKyAgICBpZiAocnVsZURhdGEuaGFzRmFzdENoZWNrYWJsZVNlbGVjdG9y
KCkpIHsKKyAgICAgICAgLy8gV2Uga25vdyB0aGlzIHNlbGVjdG9yIGRvZXMgbm90IGluY2x1ZGUg
YW55IHBzZXVkbyBlbGVtZW50cy4KKyAgICAgICAgaWYgKHN0YXRlLnBzZXVkb1N0eWxlUmVxdWVz
dCgpLnBzZXVkb0lkICE9IE5PUFNFVURPKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAvLyBXZSBrbm93IGEgc3VmZmljaWVudGx5IHNpbXBsZSBzaW5nbGUgcGFydCBzZWxlY3Rv
ciBtYXRjaGVzIHNpbXBseSBiZWNhdXNlIHdlIGZvdW5kIGl0IGZyb20gdGhlIHJ1bGUgaGFzaC4K
KyAgICAgICAgLy8gVGhpcyBpcyBsaW1pdGVkIHRvIEhUTUwgb25seSBzbyB3ZSBkb24ndCBuZWVk
IHRvIGNoZWNrIHRoZSBuYW1lc3BhY2UuCisgICAgICAgIGlmIChydWxlRGF0YS5oYXNSaWdodG1v
c3RTZWxlY3Rvck1hdGNoaW5nSFRNTEJhc2VkT25SdWxlSGFzaCgpICYmIHN0YXRlLmVsZW1lbnQo
KS0+aXNIVE1MRWxlbWVudCgpKSB7CisgICAgICAgICAgICBpZiAoIXJ1bGVEYXRhLmhhc011bHRp
cGFydFNlbGVjdG9yKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKHJ1bGVEYXRhLnNlbGVjdG9yKCktPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6
OlRhZyAmJiAhU2VsZWN0b3JDaGVja2VyOjp0YWdNYXRjaGVzKHN0YXRlLmVsZW1lbnQoKSwgcnVs
ZURhdGEuc2VsZWN0b3IoKS0+dGFnUU5hbWUoKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIFNlbGVjdG9yQ2hlY2tlckZhc3RQYXRoIHNlbGVjdG9yQ2hlY2tlckZhc3RQYXRo
KHJ1bGVEYXRhLnNlbGVjdG9yKCksIHN0YXRlLmVsZW1lbnQoKSk7CisgICAgICAgIGlmICghc2Vs
ZWN0b3JDaGVja2VyRmFzdFBhdGgubWF0Y2hlc1JpZ2h0bW9zdEF0dHJpYnV0ZVNlbGVjdG9yKCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmV0dXJuIHNlbGVjdG9yQ2hl
Y2tlckZhc3RQYXRoLm1hdGNoZXMoKTsKKyAgICB9CisKKyAgICAvLyBTbG93IHBhdGguCisgICAg
U2VsZWN0b3JDaGVja2VyIHNlbGVjdG9yQ2hlY2tlcihkb2N1bWVudCgpLCBzdGF0ZS5tb2RlKCkp
OworICAgIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQgY29udGV4dChy
dWxlRGF0YS5zZWxlY3RvcigpLCBzdGF0ZS5lbGVtZW50KCksIFNlbGVjdG9yQ2hlY2tlcjo6Vmlz
aXRlZE1hdGNoRW5hYmxlZCk7CisgICAgY29udGV4dC5lbGVtZW50U3R5bGUgPSBzdGF0ZS5zdHls
ZSgpOworICAgIGNvbnRleHQuc2NvcGUgPSBzY29wZTsKKyAgICBjb250ZXh0LnBzZXVkb0lkID0g
c3RhdGUucHNldWRvU3R5bGVSZXF1ZXN0KCkucHNldWRvSWQ7CisgICAgY29udGV4dC5zY3JvbGxi
YXIgPSBzdGF0ZS5wc2V1ZG9TdHlsZVJlcXVlc3QoKS5zY3JvbGxiYXI7CisgICAgY29udGV4dC5z
Y3JvbGxiYXJQYXJ0ID0gc3RhdGUucHNldWRvU3R5bGVSZXF1ZXN0KCkuc2Nyb2xsYmFyUGFydDsK
KyAgICBjb250ZXh0LmJlaGF2aW9yQXRCb3VuZGFyeSA9IGJlaGF2aW9yQXRCb3VuZGFyeTsKKyAg
ICBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoIG1hdGNoID0gc2VsZWN0b3JDaGVja2VyLm1hdGNoKGNv
bnRleHQsIGR5bmFtaWNQc2V1ZG8sIERPTVNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneSgpKTsKKyAg
ICBpZiAobWF0Y2ggIT0gU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoZXMpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAoc3RhdGUucHNldWRvU3R5bGVSZXF1ZXN0KCkucHNldWRv
SWQgIT0gTk9QU0VVRE8gJiYgc3RhdGUucHNldWRvU3R5bGVSZXF1ZXN0KCkucHNldWRvSWQgIT0g
ZHluYW1pY1BzZXVkbykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOwor
fQorCitib29sIFN0eWxlUmVzb2x2ZXI6OmNoZWNrUmVnaW9uU2VsZWN0b3IoY29uc3QgQ1NTU2Vs
ZWN0b3IqIHJlZ2lvblNlbGVjdG9yLCBFbGVtZW50KiByZWdpb25FbGVtZW50KQoreworICAgIGlm
ICghcmVnaW9uU2VsZWN0b3IgfHwgIXJlZ2lvbkVsZW1lbnQpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIFNlbGVjdG9yQ2hlY2tlciBzZWxlY3RvckNoZWNrZXIoZG9jdW1lbnQoKSwgbV9z
dGF0ZS5tb2RlKCkpOworICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIHMgPSByZWdpb25TZWxl
Y3RvcjsgczsgcyA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzKSkgeworICAgICAgICBTZWxlY3Rv
ckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0IHNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0
KHMsIHJlZ2lvbkVsZW1lbnQsIFNlbGVjdG9yQ2hlY2tlcjo6VmlzaXRlZE1hdGNoRGlzYWJsZWQp
OworICAgICAgICBQc2V1ZG9JZCBpZ25vcmVEeW5hbWljUHNldWRvID0gTk9QU0VVRE87CisgICAg
ICAgIGlmIChzZWxlY3RvckNoZWNrZXIubWF0Y2goc2VsZWN0b3JDaGVja2luZ0NvbnRleHQsIGln
bm9yZUR5bmFtaWNQc2V1ZG8sIERPTVNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneSgpKSA9PSBTZWxl
Y3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2hlcykKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQpAQCAtMTk1Myw2ICsyNDIzLDg2IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlN
YXRjaGVkUHJvcGVydGllcyhjb25zdCBNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQsIGNvbnN0CiAg
ICAgYWRkVG9NYXRjaGVkUHJvcGVydGllc0NhY2hlKHN0YXRlLnN0eWxlKCksIHN0YXRlLnBhcmVu
dFN0eWxlKCksIGNhY2hlSGFzaCwgbWF0Y2hSZXN1bHQpOwogfQogCitzdGF0aWMgaW5saW5lIGJv
b2wgY29tcGFyZVBhZ2VSdWxlcyhjb25zdCBTdHlsZVJ1bGVQYWdlKiByMSwgY29uc3QgU3R5bGVS
dWxlUGFnZSogcjIpCit7CisgICAgcmV0dXJuIHIxLT5zZWxlY3RvcigpLT5zcGVjaWZpY2l0eSgp
IDwgcjItPnNlbGVjdG9yKCktPnNwZWNpZmljaXR5KCk7Cit9CisKK3ZvaWQgU3R5bGVSZXNvbHZl
cjo6bWF0Y2hQYWdlUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgUnVsZVNldCogcnVsZXMsIGJv
b2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwgY29uc3QgU3RyaW5nJiBwYWdlTmFtZSkK
K3sKKyAgICBpZiAoIXJ1bGVzKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8U3R5bGVS
dWxlUGFnZSo+IG1hdGNoZWRQYWdlUnVsZXM7CisgICAgbWF0Y2hQYWdlUnVsZXNGb3JMaXN0KG1h
dGNoZWRQYWdlUnVsZXMsIHJ1bGVzLT5wYWdlUnVsZXMoKSwgaXNMZWZ0UGFnZSwgaXNGaXJzdFBh
Z2UsIHBhZ2VOYW1lKTsKKyAgICBpZiAobWF0Y2hlZFBhZ2VSdWxlcy5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIHN0ZDo6c3RhYmxlX3NvcnQobWF0Y2hlZFBhZ2VSdWxlcy5iZWdp
bigpLCBtYXRjaGVkUGFnZVJ1bGVzLmVuZCgpLCBjb21wYXJlUGFnZVJ1bGVzKTsKKworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXRjaGVkUGFnZVJ1bGVzLnNpemUoKTsgaSsrKQorICAg
ICAgICBhZGRNYXRjaGVkUHJvcGVydGllcyhyZXN1bHQsIG1hdGNoZWRQYWdlUnVsZXNbaV0tPnBy
b3BlcnRpZXMoKSk7Cit9CisKK3N0YXRpYyBib29sIGNoZWNrUGFnZVNlbGVjdG9yQ29tcG9uZW50
cyhjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IsIGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0Zp
cnN0UGFnZSwgY29uc3QgU3RyaW5nJiBwYWdlTmFtZSkKK3sKKyAgICBmb3IgKGNvbnN0IENTU1Nl
bGVjdG9yKiBjb21wb25lbnQgPSBzZWxlY3RvcjsgY29tcG9uZW50OyBjb21wb25lbnQgPSBjb21w
b25lbnQtPnRhZ0hpc3RvcnkoKSkgeworICAgICAgICBpZiAoY29tcG9uZW50LT5tX21hdGNoID09
IENTU1NlbGVjdG9yOjpUYWcpIHsKKyAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbG9j
YWxOYW1lID0gY29tcG9uZW50LT50YWdRTmFtZSgpLmxvY2FsTmFtZSgpOworICAgICAgICAgICAg
aWYgKGxvY2FsTmFtZSAhPSBzdGFyQXRvbSAmJiBsb2NhbE5hbWUgIT0gcGFnZU5hbWUpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgQ1NTU2VsZWN0
b3I6OlBzZXVkb1R5cGUgcHNldWRvVHlwZSA9IGNvbXBvbmVudC0+cHNldWRvVHlwZSgpOworICAg
ICAgICBpZiAoKHBzZXVkb1R5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0xlZnRQYWdlICYmICFp
c0xlZnRQYWdlKQorICAgICAgICAgICAgfHwgKHBzZXVkb1R5cGUgPT0gQ1NTU2VsZWN0b3I6OlBz
ZXVkb1JpZ2h0UGFnZSAmJiBpc0xlZnRQYWdlKQorICAgICAgICAgICAgfHwgKHBzZXVkb1R5cGUg
PT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0ZpcnN0UGFnZSAmJiAhaXNGaXJzdFBhZ2UpKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hQYWdlUnVsZXNGb3JMaXN0
KFZlY3RvcjxTdHlsZVJ1bGVQYWdlKj4mIG1hdGNoZWRSdWxlcywgY29uc3QgVmVjdG9yPFN0eWxl
UnVsZVBhZ2UqPiYgcnVsZXMsIGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwgY29u
c3QgU3RyaW5nJiBwYWdlTmFtZSkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcnVs
ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgU3R5bGVSdWxlUGFnZSogcnVsZSA9IHJ1bGVzW2ld
OworCisgICAgICAgIGlmICghY2hlY2tQYWdlU2VsZWN0b3JDb21wb25lbnRzKHJ1bGUtPnNlbGVj
dG9yKCksIGlzTGVmdFBhZ2UsIGlzRmlyc3RQYWdlLCBwYWdlTmFtZSkpCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICAvLyBJZiB0aGUgcnVsZSBoYXMgbm8gcHJvcGVydGllcyB0byBh
cHBseSwgdGhlbiBpZ25vcmUgaXQuCisgICAgICAgIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHBy
b3BlcnRpZXMgPSBydWxlLT5wcm9wZXJ0aWVzKCk7CisgICAgICAgIGlmICghcHJvcGVydGllcyB8
fCBwcm9wZXJ0aWVzLT5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICAvLyBBZGQgdGhpcyBydWxlIHRvIG91ciBsaXN0IG9mIG1hdGNoZWQgcnVsZXMuCisgICAgICAg
IG1hdGNoZWRSdWxlcy5hcHBlbmQocnVsZSk7CisgICAgfQorfQorCitib29sIFN0eWxlUmVzb2x2
ZXI6OmlzTGVmdFBhZ2UoaW50IHBhZ2VJbmRleCkgY29uc3QKK3sKKyAgICBib29sIGlzRmlyc3RQ
YWdlTGVmdCA9IGZhbHNlOworICAgIGlmICghbV9zdGF0ZS5yb290RWxlbWVudFN0eWxlKCktPmlz
TGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKKyAgICAgICAgaXNGaXJzdFBhZ2VMZWZ0ID0gdHJ1ZTsK
KworICAgIHJldHVybiAocGFnZUluZGV4ICsgKGlzRmlyc3RQYWdlTGVmdCA/IDEgOiAwKSkgJSAy
OworfQorCitib29sIFN0eWxlUmVzb2x2ZXI6OmlzRmlyc3RQYWdlKGludCBwYWdlSW5kZXgpIGNv
bnN0Cit7CisgICAgLy8gRklYTUU6IEluIGNhc2Ugb2YgZm9yY2VkIGxlZnQvcmlnaHQgcGFnZSwg
cGFnZSBhdCBpbmRleCAxIChub3QgMCkgY2FuIGJlIHRoZSBmaXJzdCBwYWdlLgorICAgIHJldHVy
biAoIXBhZ2VJbmRleCk7Cit9CisKK1N0cmluZyBTdHlsZVJlc29sdmVyOjpwYWdlTmFtZShpbnQg
LyogcGFnZUluZGV4ICovKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcGFnZSBp
bmRleCB0byBwYWdlIG5hbWUgbWFwcGluZy4KKyAgICByZXR1cm4gIiI7Cit9CisKIHZvaWQgU3R5
bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eVRvU3R5bGUoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFs
dWUqIHZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgaW5pdEVsZW1lbnQoMCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCBjNDY1YmIyNzQwZmU1Y2RlNTM2ODRmYjA4
NTI4MzNlOGEzMDU4MGQ5Li41NTg0ZDg3YmQ5ZGViZGUwM2FhMzgyMTg5MGU4OWJkMDRhNTQxZjUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNs
dWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5oIgogI2luY2x1
ZGUgIlNlbGVjdG9yRmlsdGVyLmgiCi0jaW5jbHVkZSAiU2libGluZ1RyYXZlcnNhbFN0cmF0ZWdp
ZXMuaCIKICNpbmNsdWRlICJTdHlsZUluaGVyaXRlZERhdGEuaCIKICNpbmNsdWRlICJTdHlsZVNj
b3BlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJWaWV3cG9ydFN0eWxlUmVzb2x2ZXIuaCIKQEAgLTE1
NCwxMyArMTUzLDE1IEBAIHB1YmxpYzoKIAogY2xhc3MgTWF0Y2hSZXF1ZXN0IHsKIHB1YmxpYzoK
LSAgICBNYXRjaFJlcXVlc3QoUnVsZVNldCogcnVsZVNldCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxl
cyA9IGZhbHNlLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSA9IDApCisgICAgTWF0Y2hSZXF1
ZXN0KFJ1bGVTZXQqIHJ1bGVTZXQsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMgPSBmYWxzZSwgY29u
c3QgQ29udGFpbmVyTm9kZSogc2NvcGUgPSAwLCBTZWxlY3RvckNoZWNrZXI6OkJlaGF2aW9yQXRC
b3VuZGFyeSBiZWhhdmlvckF0Qm91bmRhcnkgPSBTZWxlY3RvckNoZWNrZXI6OkRvZXNOb3RDcm9z
c0JvdW5kYXJ5KQogICAgICAgICA6IHJ1bGVTZXQocnVsZVNldCkKICAgICAgICAgLCBpbmNsdWRl
RW1wdHlSdWxlcyhpbmNsdWRlRW1wdHlSdWxlcykKLSAgICAgICAgLCBzY29wZShzY29wZSkgeyB9
CisgICAgICAgICwgc2NvcGUoc2NvcGUpCisgICAgICAgICwgYmVoYXZpb3JBdEJvdW5kYXJ5KGJl
aGF2aW9yQXRCb3VuZGFyeSkgeyB9CiAgICAgY29uc3QgUnVsZVNldCogcnVsZVNldDsKICAgICBj
b25zdCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzOwogICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIHNj
b3BlOworICAgIGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6QmVoYXZpb3JBdEJvdW5kYXJ5IGJlaGF2
aW9yQXRCb3VuZGFyeTsKIH07CiAKIC8vIFRoaXMgY2xhc3Mgc2VsZWN0cyBhIFJlbmRlclN0eWxl
IGZvciBhIGdpdmVuIGVsZW1lbnQgYmFzZWQgb24gYSBjb2xsZWN0aW9uIG9mIHN0eWxlc2hlZXRz
LgpAQCAtMjA2LDcgKzIwNyw2IEBAIHB1YmxpYzoKIAogICAgIERvY3VtZW50UnVsZVNldHMmIHJ1
bGVTZXRzKCkgeyByZXR1cm4gbV9ydWxlU2V0czsgfQogICAgIGNvbnN0IERvY3VtZW50UnVsZVNl
dHMmIHJ1bGVTZXRzKCkgY29uc3QgeyByZXR1cm4gbV9ydWxlU2V0czsgfQotICAgIFNlbGVjdG9y
RmlsdGVyJiBzZWxlY3RvckZpbHRlcigpIHsgcmV0dXJuIG1fc2VsZWN0b3JGaWx0ZXI7IH0KIAog
I2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpIHx8IEVOQUJMRShTSEFET1dfRE9NKQogICAgIFN0eWxl
U2NvcGVSZXNvbHZlciogZW5zdXJlU2NvcGVSZXNvbHZlcigpCkBAIC0zMjUsNiArMzI1LDEzIEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgbG9hZFBlbmRpbmdSZXNvdXJjZXMoKTsKIAorcHJpdmF0ZToK
KyAgICAvLyBUaGlzIGZ1bmN0aW9uIGZpeGVzIHVwIHRoZSBkZWZhdWx0IGZvbnQgc2l6ZSBpZiBp
dCBkZXRlY3RzIHRoYXQgdGhlIGN1cnJlbnQgZ2VuZXJpYyBmb250IGZhbWlseSBoYXMgY2hhbmdl
ZC4gLWR3aAorICAgIHZvaWQgY2hlY2tGb3JHZW5lcmljRmFtaWx5Q2hhbmdlKFJlbmRlclN0eWxl
KiwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKTsKKyAgICB2b2lkIGNoZWNrRm9yWm9vbUNoYW5n
ZShSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSk7CisKKyAgICB2b2lkIGFk
anVzdFJlbmRlclN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZVRvQWRqdXN0LCBSZW5kZXJTdHlsZSog
cGFyZW50U3R5bGUsIEVsZW1lbnQqKTsKKwogICAgIHN0cnVjdCBSdWxlUmFuZ2UgewogICAgICAg
ICBSdWxlUmFuZ2UoaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUluZGV4KTogZmly
c3RSdWxlSW5kZXgoZmlyc3RSdWxlSW5kZXgpLCBsYXN0UnVsZUluZGV4KGxhc3RSdWxlSW5kZXgp
IHsgfQogICAgICAgICBpbnQmIGZpcnN0UnVsZUluZGV4OwpAQCAtMzY2LDIxICszNzMsMzAgQEAg
cHVibGljOgogICAgICAgICBWZWN0b3I8U3R5bGVSdWxlKiwgNjQ+IG1hdGNoZWRSdWxlczsKICAg
ICAgICAgTWF0Y2hSYW5nZXMgcmFuZ2VzOwogICAgICAgICBib29sIGlzQ2FjaGVhYmxlOwotCi0g
ICAgICAgIHZvaWQgYWRkTWF0Y2hlZFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNldCog
cHJvcGVydGllcywgU3R5bGVSdWxlKiA9IDAsIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUgPSBTZWxl
Y3RvckNoZWNrZXI6Ok1hdGNoQWxsLCBQcm9wZXJ0eVdoaXRlbGlzdFR5cGUgPSBQcm9wZXJ0eVdo
aXRlbGlzdE5vbmUpOwogICAgIH07CiAKLXByaXZhdGU6Ci0gICAgLy8gVGhpcyBmdW5jdGlvbiBm
aXhlcyB1cCB0aGUgZGVmYXVsdCBmb250IHNpemUgaWYgaXQgZGV0ZWN0cyB0aGF0IHRoZSBjdXJy
ZW50IGdlbmVyaWMgZm9udCBmYW1pbHkgaGFzIGNoYW5nZWQuIC1kd2gKLSAgICB2b2lkIGNoZWNr
Rm9yR2VuZXJpY0ZhbWlseUNoYW5nZShSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxlKiBwYXJlbnRT
dHlsZSk7Ci0gICAgdm9pZCBjaGVja0Zvclpvb21DaGFuZ2UoUmVuZGVyU3R5bGUqLCBSZW5kZXJT
dHlsZSogcGFyZW50U3R5bGUpOworICAgIHN0YXRpYyB2b2lkIGFkZE1hdGNoZWRQcm9wZXJ0aWVz
KE1hdGNoUmVzdWx0JiwgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVydGllcywgU3R5bGVS
dWxlKiA9IDAsIHVuc2lnbmVkIGxpbmtNYXRjaFR5cGUgPSBTZWxlY3RvckNoZWNrZXI6Ok1hdGNo
QWxsLCBQcm9wZXJ0eVdoaXRlbGlzdFR5cGUgPSBQcm9wZXJ0eVdoaXRlbGlzdE5vbmUpOworICAg
IHZvaWQgYWRkRWxlbWVudFN0eWxlUHJvcGVydGllcyhNYXRjaFJlc3VsdCYsIGNvbnN0IFN0eWxl
UHJvcGVydHlTZXQqLCBib29sIGlzQ2FjaGVhYmxlID0gdHJ1ZSk7CiAKLSAgICB2b2lkIGFkanVz
dFJlbmRlclN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZVRvQWRqdXN0LCBSZW5kZXJTdHlsZSogcGFy
ZW50U3R5bGUsIEVsZW1lbnQqKTsKKyAgICB2b2lkIG1hdGNoQWxsUnVsZXMoTWF0Y2hSZXN1bHQm
LCBib29sIGluY2x1ZGVTTUlMUHJvcGVydGllcyk7CisgICAgdm9pZCBtYXRjaFVBUnVsZXMoTWF0
Y2hSZXN1bHQmKTsKKyAgICB2b2lkIG1hdGNoVUFSdWxlcyhNYXRjaFJlc3VsdCYsIFJ1bGVTZXQq
KTsKKyAgICB2b2lkIG1hdGNoQXV0aG9yUnVsZXMoTWF0Y2hSZXN1bHQmLCBib29sIGluY2x1ZGVF
bXB0eVJ1bGVzKTsKKyAgICB2b2lkIG1hdGNoVXNlclJ1bGVzKE1hdGNoUmVzdWx0JiwgYm9vbCBp
bmNsdWRlRW1wdHlSdWxlcyk7CisgICAgdm9pZCBtYXRjaFNjb3BlZEF1dGhvclJ1bGVzKE1hdGNo
UmVzdWx0JiwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7CisgICAgdm9pZCBtYXRjaEhvc3RSdWxl
cyhNYXRjaFJlc3VsdCYsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOworCisgICAgdm9pZCBjb2xs
ZWN0TWF0Y2hpbmdSdWxlcyhjb25zdCBNYXRjaFJlcXVlc3QmLCBSdWxlUmFuZ2UmKTsKKyAgICB2
b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKGNvbnN0IE1hdGNoUmVxdWVzdCYsIFJ1
bGVSYW5nZSYpOworICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0IFZl
Y3RvcjxSdWxlRGF0YT4qLCBjb25zdCBNYXRjaFJlcXVlc3QmLCBSdWxlUmFuZ2UmKTsKIAogICAg
IGJvb2wgZmFzdFJlamVjdFNlbGVjdG9yKGNvbnN0IFJ1bGVEYXRhJikgY29uc3Q7CisgICAgdm9p
ZCBzb3J0TWF0Y2hlZFJ1bGVzKCk7CisgICAgdm9pZCBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVs
ZXMoTWF0Y2hSZXN1bHQmKTsKIAorICAgIGJvb2wgcnVsZU1hdGNoZXMoY29uc3QgUnVsZURhdGEm
LCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSwgUHNldWRvSWQmLCBTZWxlY3RvckNoZWNrZXI6
OkJlaGF2aW9yQXRCb3VuZGFyeSA9IFNlbGVjdG9yQ2hlY2tlcjo6RG9lc05vdENyb3NzQm91bmRh
cnkpOworICAgIGJvb2wgY2hlY2tSZWdpb25TZWxlY3Rvcihjb25zdCBDU1NTZWxlY3RvciogcmVn
aW9uU2VsZWN0b3IsIEVsZW1lbnQqIHJlZ2lvbkVsZW1lbnQpOwogICAgIHZvaWQgYXBwbHlNYXRj
aGVkUHJvcGVydGllcyhjb25zdCBNYXRjaFJlc3VsdCYsIGNvbnN0IEVsZW1lbnQqKTsKLQogICAg
IGVudW0gU3R5bGVBcHBsaWNhdGlvblBhc3MgewogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQog
ICAgICAgICBWYXJpYWJsZURlZmluaXRpb25zLApAQCAtNDI5LDkgKzQ0NSwxMiBAQCBwdWJsaWM6
CiAgICAgICAgICwgbV9wYXJlbnRTdHlsZSgwKQogICAgICAgICAsIG1fcm9vdEVsZW1lbnRTdHls
ZSgwKQogICAgICAgICAsIG1fcmVnaW9uRm9yU3R5bGluZygwKQorICAgICAgICAsIG1fc2FtZU9y
aWdpbk9ubHkoZmFsc2UpCisgICAgICAgICwgbV9wc2V1ZG9TdHlsZVJlcXVlc3QoTk9QU0VVRE8p
CiAgICAgICAgICwgbV9lbGVtZW50TGlua1N0YXRlKE5vdEluc2lkZUxpbmspCiAgICAgICAgICwg
bV9kaXN0cmlidXRlZFRvSW5zZXJ0aW9uUG9pbnQoZmFsc2UpCiAgICAgICAgICwgbV9lbGVtZW50
QWZmZWN0ZWRCeUNsYXNzUnVsZXMoZmFsc2UpCisgICAgICAgICwgbV9tb2RlKFNlbGVjdG9yQ2hl
Y2tlcjo6UmVzb2x2aW5nU3R5bGUpCiAgICAgICAgICwgbV9hcHBseVByb3BlcnR5VG9SZWd1bGFy
U3R5bGUodHJ1ZSkKICAgICAgICAgLCBtX2FwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUo
ZmFsc2UpCiAjaWYgRU5BQkxFKENTU19TSEFERVJTKQpAQCAtNDQ0LDcgKzQ2Myw3IEBAIHB1Ymxp
YzoKIAogICAgIHB1YmxpYzoKICAgICAgICAgdm9pZCBpbml0RWxlbWVudChFbGVtZW50Kik7Ci0g
ICAgICAgIHZvaWQgaW5pdEZvclN0eWxlUmVzb2x2ZShEb2N1bWVudCosIEVsZW1lbnQqLCBSZW5k
ZXJTdHlsZSogcGFyZW50U3R5bGUgPSAwLCBSZW5kZXJSZWdpb24qIHJlZ2lvbkZvclN0eWxpbmcg
PSAwKTsKKyAgICAgICAgdm9pZCBpbml0Rm9yU3R5bGVSZXNvbHZlKERvY3VtZW50KiwgRWxlbWVu
dCosIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IDAsIGNvbnN0IFBzZXVkb1N0eWxlUmVxdWVz
dCYgPSBQc2V1ZG9TdHlsZVJlcXVlc3QoTk9QU0VVRE8pLCBSZW5kZXJSZWdpb24qIHJlZ2lvbkZv
clN0eWxpbmcgPSAwKTsKICAgICAgICAgdm9pZCBjbGVhcigpOwogCiAgICAgICAgIERvY3VtZW50
KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudC0+ZG9jdW1lbnQoKTsgfQpAQCAt
NDU0LDE3ICs0NzMsMjUgQEAgcHVibGljOgogICAgICAgICBSZW5kZXJTdHlsZSogc3R5bGUoKSBj
b25zdCB7IHJldHVybiBtX3N0eWxlLmdldCgpOyB9CiAgICAgICAgIFBhc3NSZWZQdHI8UmVuZGVy
U3R5bGU+IHRha2VTdHlsZSgpIHsgcmV0dXJuIG1fc3R5bGUucmVsZWFzZSgpOyB9CiAKKyAgICAg
ICAgU3RhdGljQ1NTUnVsZUxpc3QqIGVuc3VyZVJ1bGVMaXN0KCk7CisgICAgICAgIFBhc3NSZWZQ
dHI8Q1NTUnVsZUxpc3Q+IHRha2VSdWxlTGlzdCgpIHsgcmV0dXJuIG1fcnVsZUxpc3QucmVsZWFz
ZSgpOyB9CisKICAgICAgICAgY29uc3QgQ29udGFpbmVyTm9kZSogcGFyZW50Tm9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcGFyZW50Tm9kZTsgfQogICAgICAgICB2b2lkIHNldFBhcmVudFN0eWxlKFJl
bmRlclN0eWxlKiBwYXJlbnRTdHlsZSkgeyBtX3BhcmVudFN0eWxlID0gcGFyZW50U3R5bGU7IH0K
ICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJl
bnRTdHlsZTsgfQogICAgICAgICBSZW5kZXJTdHlsZSogcm9vdEVsZW1lbnRTdHlsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcm9vdEVsZW1lbnRTdHlsZTsgfQogCiAgICAgICAgIGNvbnN0IFJlbmRlclJl
Z2lvbiogcmVnaW9uRm9yU3R5bGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaW9uRm9yU3R5bGlu
ZzsgfQorICAgICAgICB2b2lkIHNldFNhbWVPcmlnaW5Pbmx5KGJvb2wgaXNTYW1lT3JpZ2luT25s
eSkgeyBtX3NhbWVPcmlnaW5Pbmx5ID0gaXNTYW1lT3JpZ2luT25seTsgfQorICAgICAgICBib29s
IGlzU2FtZU9yaWdpbk9ubHkoKSBjb25zdCB7IHJldHVybiBtX3NhbWVPcmlnaW5Pbmx5OyB9Cisg
ICAgICAgIGNvbnN0IFBzZXVkb1N0eWxlUmVxdWVzdCYgcHNldWRvU3R5bGVSZXF1ZXN0KCkgY29u
c3QgeyByZXR1cm4gbV9wc2V1ZG9TdHlsZVJlcXVlc3Q7IH0KICAgICAgICAgRUluc2lkZUxpbmsg
ZWxlbWVudExpbmtTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudExpbmtTdGF0ZTsgfQog
ICAgICAgICBib29sIGRpc3RyaWJ1dGVkVG9JbnNlcnRpb25Qb2ludCgpIGNvbnN0IHsgcmV0dXJu
IG1fZGlzdHJpYnV0ZWRUb0luc2VydGlvblBvaW50OyB9CiAgICAgICAgIHZvaWQgc2V0RWxlbWVu
dEFmZmVjdGVkQnlDbGFzc1J1bGVzKGJvb2wgaXNBZmZlY3RlZCkgeyBtX2VsZW1lbnRBZmZlY3Rl
ZEJ5Q2xhc3NSdWxlcyA9IGlzQWZmZWN0ZWQ7IH0KICAgICAgICAgYm9vbCBlbGVtZW50QWZmZWN0
ZWRCeUNsYXNzUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRBZmZlY3RlZEJ5Q2xhc3NS
dWxlczsgfQotCisgICAgICAgIHZvaWQgc2V0TW9kZShTZWxlY3RvckNoZWNrZXI6Ok1vZGUgbW9k
ZSkgeyBtX21vZGUgPSBtb2RlOyB9CisgICAgICAgIFNlbGVjdG9yQ2hlY2tlcjo6TW9kZSBtb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CisgICAgICAgIAogICAgICAgICB2b2lkIHNldEFw
cGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZShib29sIGlzQXBwbHkpIHsgbV9hcHBseVByb3BlcnR5
VG9SZWd1bGFyU3R5bGUgPSBpc0FwcGx5OyB9CiAgICAgICAgIHZvaWQgc2V0QXBwbHlQcm9wZXJ0
eVRvVmlzaXRlZExpbmtTdHlsZShib29sIGlzQXBwbHkpIHsgbV9hcHBseVByb3BlcnR5VG9WaXNp
dGVkTGlua1N0eWxlID0gaXNBcHBseTsgfQogICAgICAgICBib29sIGFwcGx5UHJvcGVydHlUb1Jl
Z3VsYXJTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxl
OyB9CkBAIC00OTcsOCArNTI0LDkgQEAgcHVibGljOgogICAgICAgICB2b2lkIHNldFdyaXRpbmdN
b2RlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSB7IG1fZm9udERpcnR5IHw9IG1fc3R5bGUtPnNl
dFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKTsgfQogICAgICAgICB2b2lkIHNldFRleHRPcmllbnRh
dGlvbihUZXh0T3JpZW50YXRpb24gdGV4dE9yaWVudGF0aW9uKSB7IG1fZm9udERpcnR5IHw9IG1f
c3R5bGUtPnNldFRleHRPcmllbnRhdGlvbih0ZXh0T3JpZW50YXRpb24pOyB9CiAKLSAgICAgICAg
Ym9vbCB1c2VTVkdab29tUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQgJiYgbV9lbGVt
ZW50LT5pc1NWR0VsZW1lbnQoKTsgfQotCisgICAgICAgIFZlY3Rvcjxjb25zdCBSdWxlRGF0YSos
IDMyPiYgbWF0Y2hlZFJ1bGVzKCkgeyByZXR1cm4gbV9tYXRjaGVkUnVsZXM7IH0KKyAgICAgICAg
dm9pZCBhZGRNYXRjaGVkUnVsZShjb25zdCBSdWxlRGF0YSogcnVsZSkgeyBtX21hdGNoZWRSdWxl
cy5hcHBlbmQocnVsZSk7IH0KKyAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgLy8gRklY
TUUoYnVnIDEwODU2Myk6IHRvIG1ha2UgaXQgZWFzaWVyIHRvIHJldmlldywgdGhlc2UgbWVtYmVy
CiAgICAgICAgIC8vIHZhcmlhYmxlcyBhcmUgcHVibGljLiBIb3dldmVyIHdlIHNob3VsZCBhZGQg
bWV0aG9kcyB0byBhY2Nlc3MKQEAgLTUwOSwxNiArNTM3LDI0IEBAIHB1YmxpYzoKICAgICAgICAg
Q29udGFpbmVyTm9kZSogbV9wYXJlbnROb2RlOwogICAgICAgICBSZW5kZXJTdHlsZSogbV9wYXJl
bnRTdHlsZTsKICAgICAgICAgUmVuZGVyU3R5bGUqIG1fcm9vdEVsZW1lbnRTdHlsZTsKLQotICAg
ICAgICAvLyBSZXF1aXJlZCB0byBBU1NFUlQgaW4gYXBwbHlQcm9wZXJ0aWVzLgotICAgICAgICBS
ZW5kZXJSZWdpb24qIG1fcmVnaW9uRm9yU3R5bGluZzsKICAgICAgICAgCisgICAgICAgIFJlbmRl
clJlZ2lvbiogbV9yZWdpb25Gb3JTdHlsaW5nOworICAgICAgICBib29sIG1fc2FtZU9yaWdpbk9u
bHk7CisgICAgICAgIFBzZXVkb1N0eWxlUmVxdWVzdCBtX3BzZXVkb1N0eWxlUmVxdWVzdDsKKwog
ICAgICAgICBFSW5zaWRlTGluayBtX2VsZW1lbnRMaW5rU3RhdGU7CiAKICAgICAgICAgYm9vbCBt
X2Rpc3RyaWJ1dGVkVG9JbnNlcnRpb25Qb2ludDsKIAogICAgICAgICBib29sIG1fZWxlbWVudEFm
ZmVjdGVkQnlDbGFzc1J1bGVzOwogCisgICAgICAgIFNlbGVjdG9yQ2hlY2tlcjo6TW9kZSBtX21v
ZGU7CisKKyAgICAgICAgLy8gQSBidWZmZXIgdXNlZCB0byBob2xkIHRoZSBzZXQgb2YgbWF0Y2hl
ZCBydWxlcyBmb3IgYW4gZWxlbWVudCwKKyAgICAgICAgLy8gYW5kIGEgdGVtcG9yYXJ5IGJ1ZmZl
ciB1c2VkIGZvciBtZXJnZSBzb3J0aW5nLgorICAgICAgICBWZWN0b3I8Y29uc3QgUnVsZURhdGEq
LCAzMj4gbV9tYXRjaGVkUnVsZXM7CisgICAgICAgIFJlZlB0cjxTdGF0aWNDU1NSdWxlTGlzdD4g
bV9ydWxlTGlzdDsKKwogICAgICAgICBib29sIG1fYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxl
OwogICAgICAgICBib29sIG1fYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZTsKIApAQCAt
NjU2LDIxICs2OTIsNiBAQCBpbmxpbmUgYm9vbCBTdHlsZVJlc29sdmVyOjpoYXNTZWxlY3RvckZv
cklkKGNvbnN0IEF0b21pY1N0cmluZyYgaWRWYWx1ZSkgY29uc3QKICAgICByZXR1cm4gbV9ydWxl
U2V0cy5mZWF0dXJlcygpLmlkc0luUnVsZXMuY29udGFpbnMoaWRWYWx1ZS5pbXBsKCkpOwogfQog
Ci1pbmxpbmUgYm9vbCBjaGVja1JlZ2lvblNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiByZWdp
b25TZWxlY3RvciwgRWxlbWVudCogcmVnaW9uRWxlbWVudCkKLXsKLSAgICBpZiAoIXJlZ2lvblNl
bGVjdG9yIHx8ICFyZWdpb25FbGVtZW50KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBT
ZWxlY3RvckNoZWNrZXIgc2VsZWN0b3JDaGVja2VyKHJlZ2lvbkVsZW1lbnQtPmRvY3VtZW50KCks
IFNlbGVjdG9yQ2hlY2tlcjo6UXVlcnlpbmdSdWxlcyk7Ci0gICAgZm9yIChjb25zdCBDU1NTZWxl
Y3RvciogcyA9IHJlZ2lvblNlbGVjdG9yOyBzOyBzID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHMp
KSB7Ci0gICAgICAgIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQgc2Vs
ZWN0b3JDaGVja2luZ0NvbnRleHQocywgcmVnaW9uRWxlbWVudCwgU2VsZWN0b3JDaGVja2VyOjpW
aXNpdGVkTWF0Y2hEaXNhYmxlZCk7Ci0gICAgICAgIFBzZXVkb0lkIGlnbm9yZUR5bmFtaWNQc2V1
ZG8gPSBOT1BTRVVETzsKLSAgICAgICAgaWYgKHNlbGVjdG9yQ2hlY2tlci5tYXRjaChzZWxlY3Rv
ckNoZWNraW5nQ29udGV4dCwgaWdub3JlRHluYW1pY1BzZXVkbywgRE9NU2libGluZ1RyYXZlcnNh
bFN0cmF0ZWd5KCkpID09IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaGVzKQotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU3R5bGVSZXNvbHZlcl9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCAzZDk2YjcwMzI2
MWEzNGExN2U4YmVkMjllOGUzZjNmZjEyMzA5MmNiLi45MzRkMDlkMTFhYmVlNzJlNWQwMTE4NDM0
MmMwYzc4NDFhZDljZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAKQEAgLTk1OCwxMSArOTU4LDExIEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6c3RvcFNlbGVjdG9y
UHJvCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NT
QWdlbnQ6OndpbGxNYXRjaFJ1bGUoU3R5bGVSdWxlKiBydWxlLCBJbnNwZWN0b3JDU1NPTVdyYXBw
ZXJzJiBpbnNwZWN0b3JDU1NPTVdyYXBwZXJzLCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9u
KiBzdHlsZVNoZWV0Q29sbGVjdGlvbikKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OndpbGxNYXRj
aFJ1bGUoU3R5bGVSdWxlKiBydWxlLCBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQogewog
Ly8gICAgcHJpbnRmKCJJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbE1hdGNoUnVsZSAlc1xuIiwgcnVs
ZS0+c2VsZWN0b3JMaXN0KCkuc2VsZWN0b3JzVGV4dCgpLnV0ZjgoKS5kYXRhKCkpOwogICAgIGlm
IChtX2N1cnJlbnRTZWxlY3RvclByb2ZpbGUpCi0gICAgICAgIG1fY3VycmVudFNlbGVjdG9yUHJv
ZmlsZS0+c3RhcnRTZWxlY3RvcihpbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmdldFdyYXBwZXJGb3JS
dWxlSW5TaGVldHMocnVsZSwgc3R5bGVTaGVldENvbGxlY3Rpb24pKTsKKyAgICAgICAgbV9jdXJy
ZW50U2VsZWN0b3JQcm9maWxlLT5zdGFydFNlbGVjdG9yKHN0eWxlUmVzb2x2ZXItPmluc3BlY3Rv
ckNTU09NV3JhcHBlcnMoKS5nZXRXcmFwcGVyRm9yUnVsZUluU2hlZXRzKHJ1bGUsIHN0eWxlUmVz
b2x2ZXItPmRvY3VtZW50KCktPnN0eWxlU2hlZXRDb2xsZWN0aW9uKCkpKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JDU1NBZ2VudDo6ZGlkTWF0Y2hSdWxlKGJvb2wgbWF0Y2hlZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggNDBmODgyMGUyYTI3OWFi
NWU2OGFmOTBkODA2NDQ2YTJiZTU4N2RhMi4uMTQzZTQ1NGFhOTZiMDE2ODE5ODAzMTUxMGZmNTk3
MzhhZjBmZWUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmgKQEAgLTQ3LDkgKzQ3LDcgQEAgY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbjsKIGNsYXNz
IENTU1N0eWxlUnVsZTsKIGNsYXNzIENTU1N0eWxlU2hlZXQ7CiBjbGFzcyBEb2N1bWVudDsKLWNs
YXNzIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb247CiBjbGFzcyBFbGVtZW50OwotY2xhc3Mg
SW5zcGVjdG9yQ1NTT01XcmFwcGVyczsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xhc3Mg
SW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIE5hbWVOb2RlTWFwOwpAQCAtMTI3LDcgKzEyNSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3RvcFNlbGVjdG9yUHJvZmlsZXIoRXJyb3JT
dHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiYpOwogCiAg
ICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+IHN0b3BTZWxl
Y3RvclByb2ZpbGVySW1wbChFcnJvclN0cmluZyosIGJvb2wgbmVlZFByb2ZpbGUpOwotICAgIHZv
aWQgd2lsbE1hdGNoUnVsZShTdHlsZVJ1bGUqLCBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzJiwgRG9j
dW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbiopOworICAgIHZvaWQgd2lsbE1hdGNoUnVsZShTdHls
ZVJ1bGUqLCBTdHlsZVJlc29sdmVyKik7CiAgICAgdm9pZCBkaWRNYXRjaFJ1bGUoYm9vbCk7CiAg
ICAgdm9pZCB3aWxsUHJvY2Vzc1J1bGUoU3R5bGVSdWxlKiwgU3R5bGVSZXNvbHZlciopOwogICAg
IHZvaWQgZGlkUHJvY2Vzc1J1bGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggNGJkYWQ1NzZhZjE0MDQ4ODBj
YTAxODMwOTFlZDI5OGYzMDRmOTBhMy4uZjJmY2Q4NzQ3YmEzMjM1MjNhODAyMTU4MjZjOTU1OTVh
OGNiNDM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTU5MCwxMSArNTkwLDExIEBAIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRTY2hlZHVsZVN0eWxlUmVjYWxjdWxhdGlvbkltcGwoSW5zdHJ1
bWVudGluZ0FnCiAgICAgICAgIHJlc291cmNlQWdlbnQtPmRpZFNjaGVkdWxlU3R5bGVSZWNhbGN1
bGF0aW9uKGRvY3VtZW50KTsKIH0KIAotSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1hdGNoUnVsZUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgU3R5bGVSdWxlKiBydWxlLCBJbnNwZWN0b3JDU1NP
TVdyYXBwZXJzJiBpbnNwZWN0b3JDU1NPTVdyYXBwZXJzLCBEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uKiBzaGVldENvbGxlY3Rpb24pCitJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTWF0Y2hSdWxlSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBTdHlsZVJ1bGUqIHJ1bGUsIFN0eWxlUmVzb2x2
ZXIqIHN0eWxlUmVzb2x2ZXIpCiB7CiAgICAgSW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yQ1NTQWdlbnQoKTsKICAgICBpZiAoY3NzQWdl
bnQpIHsKLSAgICAgICAgY3NzQWdlbnQtPndpbGxNYXRjaFJ1bGUocnVsZSwgaW5zcGVjdG9yQ1NT
T01XcmFwcGVycywgc2hlZXRDb2xsZWN0aW9uKTsKKyAgICAgICAgY3NzQWdlbnQtPndpbGxNYXRj
aFJ1bGUocnVsZSwgc3R5bGVSZXNvbHZlcik7CiAgICAgICAgIHJldHVybiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUoaW5zdHJ1bWVudGluZ0FnZW50cywgMSk7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgK
aW5kZXggNTNkOGZmYTMyOTk4MDY3YzIwMWQzODg0ZmYzYjI5Y2Q1MTAzYzEyYi4uMGQ3ZTkzYzgw
OWFjYTUxY2ZjMGM1OGIxMjllNDkwZTUyNGE1YjdkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtNjEsMTIgKzYxLDEw
IEBAIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEV2ZW50Q29udGV4dDsK
IGNsYXNzIERvY3VtZW50TG9hZGVyOwotY2xhc3MgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlv
bjsKIGNsYXNzIERldmljZU9yaWVudGF0aW9uRGF0YTsKIGNsYXNzIEdlb2xvY2F0aW9uUG9zaXRp
b247CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbnNwZWN0b3JDU1NBZ2VudDsKLWNs
YXNzIEluc3BlY3RvckNTU09NV3JhcHBlcnM7CiBjbGFzcyBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b247CiBjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50OwogY2xhc3MgSW5zdHJ1bWVudGluZ0Fn
ZW50czsKQEAgLTE3Niw3ICsxNzQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUmVjYWxjdWxhdGVTdHlsZShEb2N1bWVudCopOwogICAg
IHN0YXRpYyB2b2lkIGRpZFJlY2FsY3VsYXRlU3R5bGUoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIHZvaWQgZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3Vs
YXRpb24oRG9jdW1lbnQqKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIHdpbGxNYXRjaFJ1bGUoRG9jdW1lbnQqLCBTdHlsZVJ1bGUqLCBJbnNwZWN0b3JDU1NPTVdy
YXBwZXJzJiwgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbiopOworICAgIHN0YXRpYyBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbE1hdGNoUnVsZShEb2N1bWVudCosIFN0eWxl
UnVsZSosIFN0eWxlUmVzb2x2ZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRNYXRjaFJ1bGUoY29u
c3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiwgYm9vbCBtYXRjaGVkKTsKICAgICBz
dGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxQcm9jZXNzUnVsZShEb2N1
bWVudCosIFN0eWxlUnVsZSosIFN0eWxlUmVzb2x2ZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRQ
cm9jZXNzUnVsZShjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKQEAgLTM3
OCw3ICszNzYsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUgd2lsbFJlY2FsY3VsYXRlU3R5bGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBG
cmFtZSopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2FsY3VsYXRlU3R5bGVJbXBsKGNvbnN0IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyB2b2lkIGRpZFNjaGVk
dWxlU3R5bGVSZWNhbGN1bGF0aW9uSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRG9jdW1lbnQq
KTsKLSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxNYXRjaFJ1
bGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBTdHlsZVJ1bGUqLCBJbnNwZWN0b3JDU1NPTVdy
YXBwZXJzJiwgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbiopOworICAgIHN0YXRpYyBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbE1hdGNoUnVsZUltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIFN0eWxlUnVsZSosIFN0eWxlUmVzb2x2ZXIqKTsKICAgICBzdGF0aWMgdm9pZCBk
aWRNYXRjaFJ1bGVJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYsIGJv
b2wgbWF0Y2hlZCk7CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3
aWxsUHJvY2Vzc1J1bGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBTdHlsZVJ1bGUqLCBTdHls
ZVJlc29sdmVyKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUHJvY2Vzc1J1bGVJbXBsKGNvbnN0IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwpAQCAtMTE4MiwxNyArMTE4MCwxNiBAQCBp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNjaGVkdWxlU3R5bGVSZWNh
bGN1bGF0aW9uKERvY3VtZW50KiBkbwogI2VuZGlmCiB9CiAKLWlubGluZSBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTWF0Y2hSdWxl
KERvY3VtZW50KiBkb2N1bWVudCwgU3R5bGVSdWxlKiBydWxlLCBJbnNwZWN0b3JDU1NPTVdyYXBw
ZXJzJiBpbnNwZWN0b3JDU1NPTVdyYXBwZXJzLCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9u
KiBzdHlsZVNoZWV0Q29sbGVjdGlvbikKK2lubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTWF0Y2hSdWxlKERvY3VtZW50KiBk
b2N1bWVudCwgU3R5bGVSdWxlKiBydWxlLCBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQog
ewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRT
KEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpKTsKICAgICBpZiAoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1
bWVudChkb2N1bWVudCkpCi0gICAgICAgIHJldHVybiB3aWxsTWF0Y2hSdWxlSW1wbChpbnN0cnVt
ZW50aW5nQWdlbnRzLCBydWxlLCBpbnNwZWN0b3JDU1NPTVdyYXBwZXJzLCBzdHlsZVNoZWV0Q29s
bGVjdGlvbik7CisgICAgICAgIHJldHVybiB3aWxsTWF0Y2hSdWxlSW1wbChpbnN0cnVtZW50aW5n
QWdlbnRzLCBydWxlLCBzdHlsZVJlc29sdmVyKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRv
Y3VtZW50KTsKICAgICBVTlVTRURfUEFSQU0ocnVsZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGluc3Bl
Y3RvckNTU09NV3JhcHBlcnMpOwotICAgIFVOVVNFRF9QQVJBTShzdHlsZVNoZWV0Q29sbGVjdGlv
bik7CisgICAgVU5VU0VEX1BBUkFNKHN0eWxlUmVzb2x2ZXIpOwogI2VuZGlmCiAgICAgcmV0dXJu
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>