<?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>167767</bug_id>
          
          <creation_ts>2017-02-02 16:35:35 -0800</creation_ts>
          <short_desc>REGRESSION(r211596): This change broke certain build configurations (Requested by ryanhaddad on #webkit).</short_desc>
          <delta_ts>2017-02-02 16:37:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>167739</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>ryanhaddad</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1272726</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-02 16:35:35 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/211596 broke the build:
This change broke certain build configurations (Requested by ryanhaddad on #webkit).

This is an automatic bug report generated by webkitbot. 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 fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272728</commentid>
    <comment_count>1</comment_count>
      <attachid>300475</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-02 16:35:47 -0800</bug_when>
    <thetext>Created attachment 300475
ROLLOUT of r211596

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>1272729</commentid>
    <comment_count>2</comment_count>
      <attachid>300475</attachid>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-02-02 16:36:56 -0800</bug_when>
    <thetext>Comment on attachment 300475
ROLLOUT of r211596

Clearing flags on attachment: 300475

Committed r211610: &lt;http://trac.webkit.org/changeset/211610&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272730</commentid>
    <comment_count>3</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-02-02 16:37:00 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300475</attachid>
            <date>2017-02-02 16:35:47 -0800</date>
            <delta_ts>2017-02-02 16:36:56 -0800</delta_ts>
            <desc>ROLLOUT of r211596</desc>
            <filename>bug-167767-20170202193332.patch</filename>
            <type>text/plain</type>
            <size>45534</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExNjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTg3YzY5MGNkOTE5MDc0
MGQyNzg0Y2RkZmE1NTJiMDJkMzVhNjJhOS4uNTI5MGY4ZjI3N2Y2YmI0MWM1OTk3ODQzNDVjYWI2
YzZiN2Y3NTUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE3LTAyLTAyICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMjExNTk2IGFuZCByMjExNjA1LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3NzY3CisKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
YnJva2UgY2VydGFpbiBidWlsZCBjb25maWd1cmF0aW9ucyAoUmVxdWVzdGVkIGJ5CisgICAgICAg
IHJ5YW5oYWRkYWQgb24gI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0czoK
KworICAgICAgICAiW01hY10gQWRkIGNsYXNzZXMgdG8gbWFuYWdlIGF1ZGlvIHNhbXBsZXMiCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjc3MzkKKyAg
ICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjExNTk2CisKKyAgICAgICAg
IlVucmV2aWV3ZWQgc3BlY3VsYXRpdmUgYnVpbGQgZml4LiIKKyAgICAgICAgaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjExNjA1CisKIDIwMTctMDItMDIgIFJ5YW4gSGFkZGFkICA8
cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBzcGVjdWxhdGl2ZSBi
dWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggZmMyNGZiMTA4YjAxNDdmYmZjYjE0OWJlZjFkNjIxMjlmMDljYTFjZC4u
Yzk0OTIxNjA2NDBkZjg2Mjg5YjIwNzIzMGRmODBhY2E0NGM0NDg0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQyLDEwICsx
NDIsNiBAQAogCQkwNzM3OTRGRTE5RjU4NjRFMDBFNUEwNDUgLyogUlRDTm90aWZpZXJzTW9jay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczNzk0Rjgx
OUY1ODY0RTAwRTVBMDQ1IC8qIFJUQ05vdGlmaWVyc01vY2suaCAqLzsgfTsKIAkJMDczOTRFQzgx
QkFCMkNDRDAwQkU5OUNEIC8qIE1lZGlhRGV2aWNlc1JlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczOTRFQzcxQkFCMkNDRDAwQkU5OUNE
IC8qIE1lZGlhRGV2aWNlc1JlcXVlc3QuY3BwICovOyB9OwogCQkwNzM5NEVDQTFCQUIyQ0Q3MDBC
RTk5Q0QgLyogTWVkaWFEZXZpY2VzUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDczOTRFQzkxQkFCMkNENzAwQkU5OUNEIC8qIE1lZGlhRGV2
aWNlc1JlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQkwNzNCODc2NjFFNDM4NUFDMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVCdWZmZXJMaXN0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0I4
NzYyMUU0Mzg1OUQwMDcxQzBFQyAvKiBBdWRpb1NhbXBsZUJ1ZmZlckxpc3QuY3BwICovOyB9Owot
CQkwNzNCODc2NzFFNDM4NUFDMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzNCODc2MzFFNDM4
NTlEMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmggKi87IH07Ci0JCTA3M0I4NzY4
MUU0Mzg1QUMwMDcxQzBFQyAvKiBBdWRpb1NhbXBsZURhdGFTb3VyY2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczQjg3NjQxRTQzODU5RDAwNzFD
MEVDIC8qIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5jcHAgKi87IH07Ci0JCTA3M0I4NzY5MUU0Mzg1
QUMwMDcxQzBFQyAvKiBBdWRpb1NhbXBsZURhdGFTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0I4NzY1MUU0Mzg1OUQwMDcxQzBFQyAvKiBB
dWRpb1NhbXBsZURhdGFTb3VyY2UuaCAqLzsgfTsKIAkJMDczQkUzNDAxN0QxN0UwMTAwMkJENDMx
IC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3M0JFMzNFMTdEMTdFMDEwMDJCRDQzMSAvKiBKU05hdmlnYXRv
clVzZXJNZWRpYS5jcHAgKi87IH07CiAJCTA3M0JFMzQxMTdEMTdFMDEwMDJCRDQzMSAvKiBKU05h
dmlnYXRvclVzZXJNZWRpYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDczQkUzM0YxN0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1lZGlh
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcz
QkUzNEUxN0QxODBCMjAwMkJENDMxIC8qIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyMjFC
QUIxN0NGMEFENDAwODQ4RTUxIC8qIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3Bw
ICovOyB9OwpAQCAtNzI0MCwxMCArNzIzNiw2IEBACiAJCTA3M0I4NzU2MUU0MERDRTUwMDcxQzBF
QyAvKiBBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDczQjg3NTcxRTQwRENGRDAwNzFDMEVDIC8qIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDQUF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzNCODc1ODFF
NDBEQ0ZEMDA3MUMwRUMgLyogQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkwNzNCODc2MjFFNDM4NTlEMDA3MUMwRUMgLyogQXVkaW9T
YW1wbGVCdWZmZXJMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEF1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTA3M0I4NzYzMUU0Mzg1OUQwMDcxQzBFQyAvKiBBdWRpb1NhbXBsZUJ1ZmZlckxpc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9TYW1wbGVCdWZmZXJMaXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3M0I4NzY0MUU0Mzg1OUQwMDcxQzBFQyAvKiBB
dWRpb1NhbXBsZURhdGFTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQXVkaW9TYW1wbGVEYXRhU291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMDczQjg3NjUxRTQzODU5RDAwNzFDMEVDIC8qIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1NhbXBsZURhdGFTb3VyY2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDczQkUzM0UxN0QxN0UwMTAwMkJENDMx
IC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTTmF2aWdhdG9yVXNlck1lZGlhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDczQkUzM0YxN0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1lZGlh
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTmF2aWdhdG9yVXNlck1lZGlh
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NDRFQ0VCMUUwQzRBRTUwMDBEMDk0
NCAvKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjQ4NjgsNiArMjQ4NjAsNyBAQAogCQlGRDMxNjA0MDEyQjAyNkEzMDBD
MUEzNTkgLyogYXVkaW8gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAorCQkJCTA3M0I4NzU2MUU0MERDRTUwMDcxQzBFQyAvKiBBdWRpb1N0cmVhbURlc2NyaXB0aW9u
LmggKi8sCiAJCQkJQ0Q2NjlENjUxRDIzMkRGNDAwNEQxODY2IC8qIGNvY29hICovLAogCQkJCUNE
MEVFRTBEMTQ3NDNFNDgwMDNFQUZBMiAvKiBpb3MgKi8sCiAJCQkJRkQzMTYwQjAxMkIwMjcwNzAw
QzFBMzU5IC8qIG1hYyAqLywKQEAgLTI0ODk0LDcgKzI0ODg3LDYgQEAKIAkJCQlDREE3OTgyMTE3
MEEyMkRDMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uLmggKi8sCiAJCQkJRkQzMTYwNTMxMkIwMjZG
NzAwQzFBMzU5IC8qIEF1ZGlvU291cmNlUHJvdmlkZXIuaCAqLywKIAkJCQlGRDYyRjUyRDE0NTg5
OEQ4MDA5NEIwRUQgLyogQXVkaW9Tb3VyY2VQcm92aWRlckNsaWVudC5oICovLAotCQkJCTA3M0I4
NzU2MUU0MERDRTUwMDcxQzBFQyAvKiBBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmggKi8sCiAJCQkJ
RkQzMTYwNTQxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvVXRpbGl0aWVzLmNwcCAqLywKIAkJCQlG
RDMxNjA1NTEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9VdGlsaXRpZXMuaCAqLywKIAkJCQlGRDMx
NjA1NjEyQjAyNkY3MDBDMUEzNTkgLyogQmlxdWFkLmNwcCAqLywKQEAgLTI0OTYxLDEwICsyNDk1
Myw2IEBACiAJCUZEMzE2MEIwMTJCMDI3MDcwMEMxQTM1OSAvKiBtYWMgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTA3M0I4NzYyMUU0Mzg1OUQwMDcxQzBF
QyAvKiBBdWRpb1NhbXBsZUJ1ZmZlckxpc3QuY3BwICovLAotCQkJCTA3M0I4NzYzMUU0Mzg1OUQw
MDcxQzBFQyAvKiBBdWRpb1NhbXBsZUJ1ZmZlckxpc3QuaCAqLywKLQkJCQkwNzNCODc2NDFFNDM4
NTlEMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVEYXRhU291cmNlLmNwcCAqLywKLQkJCQkwNzNCODc2
NTFFNDM4NTlEMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVEYXRhU291cmNlLmggKi8sCiAJCQkJRkQz
MTYwQjUxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvQnVzTWFjLm1tICovLAogCQkJCUZEMzE2MEI2
MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcCAqLywKIAkJCQlGRDMx
NjBCNzEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1hYy5oICovLApAQCAtMjU1
MjksNyArMjU1MTcsNiBAQAogCQkJCTJEOEZFQkREMTQzRTNFRjcwMDcyNTAyQiAvKiBDU1NDcm9z
c2ZhZGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUEyMUVDQ0QwQUJGMEZDNjAwMkI4MzRD
IC8qIENTU0N1cnNvckltYWdlVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0NDRDQkU0MUQ4
ODYxOTkwMDczQTA3NCAvKiBDU1NDdXN0b21JZGVudFZhbHVlLmggaW4gSGVhZGVycyAqLywKLQkJ
CQkwNzNCODc2OTFFNDM4NUFDMDA3MUMwRUMgLyogQXVkaW9TYW1wbGVEYXRhU291cmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzc3OUUxNDFCQjIxNUJCMDBDQUE4QkYgLyogQ1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEE5Q0M4MTgxNkJCOUFDNjAwRUM2NDVB
IC8qIENTU0RlZmF1bHRTdHlsZVNoZWV0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTQ0NzZCREIx
REZDQUMwMzAwNjkwRTIzIC8qIENTU0RlZmVycmVkUGFyc2VyLmggaW4gSGVhZGVycyAqLywKQEAg
LTI2NzExLDcgKzI2Njk4LDYgQEAKIAkJCQk2QzRDOTZERjFBRDQ0ODM1MDAzNjNGNjQgLyogSlNS
ZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzRDOTZE
RDFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNkM0Qzk2REYxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDczQjg3NjcxRTQzODVBQzAwNzFDMEVDIC8q
IEF1ZGlvU2FtcGxlQnVmZmVyTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M0Qzk2REYxQUQ0
NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MTI5REY4NjFCQjVCODBDMDAzMjJBMTYgLyogSlNSZWFkYWJsZVN0cmVhbVBy
aXZhdGVDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFNEM5NkREMUFENDQ4MzUw
MDM2NUE1MSAvKiBKU1JlYWRhYmxlU3RyZWFtU291cmNlLmggaW4gSGVhZGVycyAqLywKQEAgLTI4
Mzk4LDYgKzI4Mzg0LDcgQEAKIAkJCQlCRTkxM0Q4MDE4MUVGOTI0MDBEQ0IwOUUgLyogVHJhY2tQ
cml2YXRlQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkZBQzMwRkUxODRGQjE0NTAwOEM0RjFF
IC8qIFRyYWlsaW5nT2JqZWN0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE2MDcxMzIxQkQ4MzA4
QjAwREJDNEYyIC8qIFRyYW5zYWN0aW9uT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
N0MwNDZDMjFFNDI1MDIyMDA3MjAxRTcgLyogQXVkaW9TYW1wbGVEYXRhU291cmNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0OUU5MTFDNDBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3JtYXRpb25N
YXRyaXguaCBpbiBIZWFkZXJzICovLAogCQkJCUZCNDg0RjREMTcxRjgyMUUwMDA0MDc1NSAvKiBU
cmFuc2Zvcm1GdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUNFMEVGODZENDcw
MDlEMENBRiAvKiBUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjk5ODIs
NyArMjk5NjksNiBAQAogCQkJCTUxRjc5OEVGMUJFODgwRTcwMDhBRTQ5MSAvKiBJREJJbmRleElu
Zm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFMjY5MzYxREQzQkQ5NzAwNkI2QTU4IC8qIElE
Qkl0ZXJhdGVDdXJzb3JEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxODVGQzk0MUJCNEM0
RTgwMDEyODk4RiAvKiBJREJLZXkuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMDczQjg3NjYxRTQz
ODVBQzAwNzFDMEVDIC8qIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MTg1RkM5NjFCQjRDNEU4MDAxMjg5OEYgLyogSURCS2V5RGF0YS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MTg1RkM5ODFCQjRDNEU4MDAxMjg5OEYgLyogSURCS2V5UGF0aC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MTg1RkM5QTFCQjRDNEU4MDAxMjg5OEYgLyogSURCS2V5UmFuZ2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTk5MSw3ICsyOTk3Nyw2IEBACiAJCQkJNTE2MDcxMkUx
QkQ4MzA3ODAwREJDNEYyIC8qIElEQk9iamVjdFN0b3JlSW5mby5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MTg1RkNBMzFCQjRDNEU4MDAxMjg5OEYgLyogSURCT3BlbkRCUmVxdWVzdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MTg1RkNBODFCQjRDNEU4MDAxMjg5OEYgLyogSURCUmVxdWVzdC5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQkwNzNCODc2ODFFNDM4NUFDMDA3MUMwRUMgLyogQXVkaW9T
YW1wbGVEYXRhU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNDEyOTk4MUM2OTc2OTAw
MDU5RTcxNCAvKiBJREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUxMEE1OEY5MUJBQ0M3RjIwMEMxOTI4MiAvKiBJREJSZXF1ZXN0RGF0YS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MTQ1QjEwOTFCQzQ4RTJFMDBFODYyMTkgLyogSURCUmVzb3VyY2VJZGVu
dGlmaWVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzA1MDgsNiArMzA0OTMsNyBAQAogCQkJCUUx
Mjg0QkIyMTA0NDlGRkEwMEVBRUI1MiAvKiBKU1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkRBMTVFQjExMkIwM0VFMTAwM0E1ODNBIC8qIEpTUGFubmVyTm9kZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlFNTFBODFERjE3Mjk4RDc3MDBCRkNBNjEgLyogSlNQZXJm
b3JtYW5jZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwN0MwNDZDMTFFNDI1MDIyMDA3MjAxRTcg
LyogQXVkaW9TYW1wbGVEYXRhU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNCMzhGRDUx
MUNDRjkzODkwMDU5MkEzRiAvKiBKU1BlcmZvcm1hbmNlRW50cnkuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQ0IzOEZENTcxQ0QyMUUyQTAwNTkyQTNGIC8qIEpTUGVyZm9ybWFuY2VFbnRyeUN1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNThDNTlEMDFFMzgyRUFDMDA0Nzg1OUMgLyogSlNQ
ZXJmb3JtYW5jZU1hcmsuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZUJ1ZmZlckxpc3QuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzk0ZWU5ZjA4MjRhNTgwYjY1ZWI5YjQ5M2Q5
ZjliN2U1MDgxOWY2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZUJ1ZmZlckxp
c3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiQXVkaW9TYW1wbGVCdWZmZXJMaXN0LmgiCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQot
Ci0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIlZlY3Rvck1hdGguaCIKLSNpbmNsdWRl
IDxBY2NlbGVyYXRlL0FjY2VsZXJhdGUuaD4KLSNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9D
b252ZXJ0ZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBuYW1lc3BhY2UgVmVj
dG9yTWF0aDsKLQotUmVmPEF1ZGlvU2FtcGxlQnVmZmVyTGlzdD4gQXVkaW9TYW1wbGVCdWZmZXJM
aXN0OjpjcmVhdGUoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBmb3JtYXQsIHNpemVf
dCBtYXhpbXVtU2FtcGxlQ291bnQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9T
YW1wbGVCdWZmZXJMaXN0KGZvcm1hdCwgbWF4aW11bVNhbXBsZUNvdW50KSk7Ci19Ci0KLUF1ZGlv
U2FtcGxlQnVmZmVyTGlzdDo6QXVkaW9TYW1wbGVCdWZmZXJMaXN0KGNvbnN0IENBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbiYgZm9ybWF0LCBzaXplX3QgbWF4aW11bVNhbXBsZUNvdW50KQotewotICAg
IG1faW50ZXJuYWxGb3JtYXQgPSBzdGQ6Om1ha2VfdW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbj4oZm9ybWF0KTsKLQotICAgIG1fc2FtcGxlQ2FwYWNpdHkgPSBtYXhpbXVtU2FtcGxlQ291
bnQ7Ci0gICAgbV9zYW1wbGVDb3VudCA9IDA7Ci0gICAgbV9tYXhCdWZmZXJTaXplUGVyQ2hhbm5l
bCA9IG1heGltdW1TYW1wbGVDb3VudCAqIGZvcm1hdC5ieXRlc1BlckZyYW1lKCkgLyBmb3JtYXQu
bnVtYmVyT2ZDaGFubmVsU3RyZWFtcygpOwotCi0gICAgQVNTRVJUKGZvcm1hdC5zYW1wbGVSYXRl
KCkgPj0gMCk7Ci0KLSAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IGZvcm1hdC5udW1iZXJPZkNoYW5u
ZWxTdHJlYW1zKCkgKiBtX21heEJ1ZmZlclNpemVQZXJDaGFubmVsOwotICAgIEFTU0VSVChidWZm
ZXJTaXplIDw9IFNJWkVfTUFYKTsKLSAgICBpZiAoYnVmZmVyU2l6ZSA+IFNJWkVfTUFYKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBtX2J1ZmZlckxpc3RCYXNlU2l6ZSA9IGF1ZGlvQnVmZmVyTGlz
dFNpemVGb3JTdHJlYW0oZm9ybWF0KTsKLSAgICBBU1NFUlQobV9idWZmZXJMaXN0QmFzZVNpemUg
PD0gU0laRV9NQVgpOwotICAgIGlmIChtX2J1ZmZlckxpc3RCYXNlU2l6ZSA+IFNJWkVfTUFYKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBzaXplX3QgYWxsb2NTaXplID0gbV9idWZmZXJMaXN0QmFz
ZVNpemUgKyBidWZmZXJTaXplOwotICAgIG1fYnVmZmVyTGlzdCA9IHN0ZDo6dW5pcXVlX3B0cjxB
dWRpb0J1ZmZlckxpc3Q+KHN0YXRpY19jYXN0PEF1ZGlvQnVmZmVyTGlzdCo+KDo6b3BlcmF0b3Ig
bmV3IChhbGxvY1NpemUpKSk7Ci0KLSAgICByZXNldCgpOwotfQotCi1BdWRpb1NhbXBsZUJ1ZmZl
ckxpc3Q6On5BdWRpb1NhbXBsZUJ1ZmZlckxpc3QoKQotewotICAgIG1faW50ZXJuYWxGb3JtYXQg
PSBudWxscHRyOwotICAgIG1fYnVmZmVyTGlzdCA9IG51bGxwdHI7Ci19Ci0KLXZvaWQgQXVkaW9T
YW1wbGVCdWZmZXJMaXN0OjpzZXRTYW1wbGVDb3VudChzaXplX3QgY291bnQpCi17Ci0gICAgQVNT
RVJUKGNvdW50IDw9IG1fc2FtcGxlQ2FwYWNpdHkpOwotICAgIGlmIChjb3VudCA8PSBtX3NhbXBs
ZUNhcGFjaXR5KQotICAgICAgICBtX3NhbXBsZUNvdW50ID0gY291bnQ7Ci19Ci0KLXZvaWQgQXVk
aW9TYW1wbGVCdWZmZXJMaXN0OjphcHBseUdhaW4oQXVkaW9CdWZmZXJMaXN0JiBidWZmZXJMaXN0
LCBmbG9hdCBnYWluLCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uOjpQQ01Gb3JtYXQgZm9ybWF0KQot
ewotICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBidWZmZXJMaXN0Lm1OdW1iZXJCdWZmZXJz
OyArK2kpIHsKLSAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICAgICAgY2FzZSBBdWRpb1N0
cmVhbURlc2NyaXB0aW9uOjpJbnQxNjogewotICAgICAgICAgICAgaW50MTZfdCogYnVmZmVyID0g
c3RhdGljX2Nhc3Q8aW50MTZfdCo+KGJ1ZmZlckxpc3QubUJ1ZmZlcnNbaV0ubURhdGEpOwotICAg
ICAgICAgICAgaW50IGZyYW1lQ291bnQgPSBidWZmZXJMaXN0Lm1CdWZmZXJzW2ldLm1EYXRhQnl0
ZVNpemUgLyBzaXplb2YoaW50MTZfdCk7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IGZyYW1lQ291bnQ7IGkrKykKLSAgICAgICAgICAgICAgICBidWZmZXJbaV0gKj0gZ2FpbjsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbjo6SW50MzI6IHsKLSAgICAgICAgICAgIGludDMyX3QqIGJ1ZmZlciA9IHN0YXRpY19j
YXN0PGludDMyX3QqPihidWZmZXJMaXN0Lm1CdWZmZXJzW2ldLm1EYXRhKTsKLSAgICAgICAgICAg
IGludCBmcmFtZUNvdW50ID0gYnVmZmVyTGlzdC5tQnVmZmVyc1tpXS5tRGF0YUJ5dGVTaXplIC8g
c2l6ZW9mKGludDMyX3QpOwotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmcmFtZUNv
dW50OyBpKyspCi0gICAgICAgICAgICAgICAgYnVmZmVyW2ldICo9IGdhaW47Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbjo6RmxvYXQzMjogewotICAgICAgICAgICAgZmxvYXQqIGJ1ZmZl
ciA9IHN0YXRpY19jYXN0PGZsb2F0Kj4oYnVmZmVyTGlzdC5tQnVmZmVyc1tpXS5tRGF0YSk7Ci0g
ICAgICAgICAgICB2RFNQX3ZzbXVsKGJ1ZmZlciwgMSwgJmdhaW4sIGJ1ZmZlciwgMSwgYnVmZmVy
TGlzdC5tQnVmZmVyc1tpXS5tRGF0YUJ5dGVTaXplIC8gc2l6ZW9mKGZsb2F0KSk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEF1ZGlvU3RyZWFtRGVzY3JpcHRp
b246OkZsb2F0NjQ6IHsKLSAgICAgICAgICAgIGRvdWJsZSogYnVmZmVyID0gc3RhdGljX2Nhc3Q8
ZG91YmxlKj4oYnVmZmVyTGlzdC5tQnVmZmVyc1tpXS5tRGF0YSk7Ci0gICAgICAgICAgICBkb3Vi
bGUgZ2FpbkFzRG91YmxlID0gZ2FpbjsKLSAgICAgICAgICAgIHZEU1BfdnNtdWxEKGJ1ZmZlciwg
MSwgJmdhaW5Bc0RvdWJsZSwgYnVmZmVyLCAxLCBidWZmZXJMaXN0Lm1CdWZmZXJzW2ldLm1EYXRh
Qnl0ZVNpemUgLyBzaXplb2YoZG91YmxlKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb246Ok5vbmU6Ci0gICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgfQotfQotCi12b2lkIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6YXBwbHlHYWluKGZsb2F0IGdh
aW4pCi17Ci0gICAgYXBwbHlHYWluKCptX2J1ZmZlckxpc3QsIGdhaW4sIG1faW50ZXJuYWxGb3Jt
YXQtPmZvcm1hdCgpKTsKLX0KLQotT1NTdGF0dXMgQXVkaW9TYW1wbGVCdWZmZXJMaXN0OjptaXhG
cm9tKGNvbnN0IEF1ZGlvU2FtcGxlQnVmZmVyTGlzdCYgc291cmNlLCBzaXplX3QgZnJhbWVDb3Vu
dCkKLXsKLSAgICBBU1NFUlQoc291cmNlLnN0cmVhbURlc2NyaXB0aW9uKCkgPT0gc3RyZWFtRGVz
Y3JpcHRpb24oKSk7Ci0KLSAgICBpZiAoc291cmNlLnN0cmVhbURlc2NyaXB0aW9uKCkgIT0gc3Ry
ZWFtRGVzY3JpcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIGtBdWRpb19QYXJhbUVycm9yOwotCi0g
ICAgaWYgKGZyYW1lQ291bnQgPiBzb3VyY2Uuc2FtcGxlQ291bnQoKSkKLSAgICAgICAgZnJhbWVD
b3VudCA9IHNvdXJjZS5zYW1wbGVDb3VudCgpOwotCi0gICAgaWYgKGZyYW1lQ291bnQgPiBtX3Nh
bXBsZUNhcGFjaXR5KQotICAgICAgICByZXR1cm4ga0F1ZGlvX1BhcmFtRXJyb3I7Ci0KLSAgICBt
X3NhbXBsZUNvdW50ID0gZnJhbWVDb3VudDsKLQotICAgIEF1ZGlvQnVmZmVyTGlzdCYgc291cmNl
QnVmZmVyID0gc291cmNlLmJ1ZmZlckxpc3QoKTsKLSAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBp
IDwgbV9idWZmZXJMaXN0LT5tTnVtYmVyQnVmZmVyczsgaSsrKSB7Ci0gICAgICAgIHN3aXRjaCAo
bV9pbnRlcm5hbEZvcm1hdC0+Zm9ybWF0KCkpIHsKLSAgICAgICAgY2FzZSBBdWRpb1N0cmVhbURl
c2NyaXB0aW9uOjpJbnQxNjogewotICAgICAgICAgICAgaW50MTZfdCogZGVzdGluYXRpb24gPSBz
dGF0aWNfY2FzdDxpbnQxNl90Kj4obV9idWZmZXJMaXN0LT5tQnVmZmVyc1tpXS5tRGF0YSk7Ci0g
ICAgICAgICAgICBpbnQxNl90KiBzb3VyY2UgPSBzdGF0aWNfY2FzdDxpbnQxNl90Kj4oc291cmNl
QnVmZmVyLm1CdWZmZXJzW2ldLm1EYXRhKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZnJhbWVDb3VudDsgaSsrKQotICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uW2ldICs9
IHNvdXJjZVtpXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbjo6SW50MzI6IHsKLSAgICAgICAgICAgIGludDMyX3QqIGRl
c3RpbmF0aW9uID0gc3RhdGljX2Nhc3Q8aW50MzJfdCo+KG1fYnVmZmVyTGlzdC0+bUJ1ZmZlcnNb
aV0ubURhdGEpOwotICAgICAgICAgICAgdkRTUF92YWRkaShkZXN0aW5hdGlvbiwgMSwgcmVpbnRl
cnByZXRfY2FzdDxpbnQzMl90Kj4oc291cmNlQnVmZmVyLm1CdWZmZXJzW2ldLm1EYXRhKSwgMSwg
ZGVzdGluYXRpb24sIDEsIGZyYW1lQ291bnQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBBdWRpb1N0cmVhbURlc2NyaXB0aW9uOjpGbG9hdDMyOiB7Ci0gICAg
ICAgICAgICBmbG9hdCogZGVzdGluYXRpb24gPSBzdGF0aWNfY2FzdDxmbG9hdCo+KG1fYnVmZmVy
TGlzdC0+bUJ1ZmZlcnNbaV0ubURhdGEpOwotICAgICAgICAgICAgdkRTUF92YWRkKGRlc3RpbmF0
aW9uLCAxLCByZWludGVycHJldF9jYXN0PGZsb2F0Kj4oc291cmNlQnVmZmVyLm1CdWZmZXJzW2ld
Lm1EYXRhKSwgMSwgZGVzdGluYXRpb24sIDEsIGZyYW1lQ291bnQpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBdWRpb1N0cmVhbURlc2NyaXB0aW9uOjpGbG9h
dDY0OiB7Ci0gICAgICAgICAgICBkb3VibGUqIGRlc3RpbmF0aW9uID0gc3RhdGljX2Nhc3Q8ZG91
YmxlKj4obV9idWZmZXJMaXN0LT5tQnVmZmVyc1tpXS5tRGF0YSk7Ci0gICAgICAgICAgICB2RFNQ
X3ZhZGREKGRlc3RpbmF0aW9uLCAxLCByZWludGVycHJldF9jYXN0PGRvdWJsZSo+KHNvdXJjZUJ1
ZmZlci5tQnVmZmVyc1tpXS5tRGF0YSksIDEsIGRlc3RpbmF0aW9uLCAxLCBmcmFtZUNvdW50KTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbjo6Tm9uZToKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KLQot
T1NTdGF0dXMgQXVkaW9TYW1wbGVCdWZmZXJMaXN0Ojpjb3B5RnJvbShjb25zdCBBdWRpb1NhbXBs
ZUJ1ZmZlckxpc3QmIHNvdXJjZSwgc2l6ZV90IGZyYW1lQ291bnQpCi17Ci0gICAgQVNTRVJUKHNv
dXJjZS5zdHJlYW1EZXNjcmlwdGlvbigpID09IHN0cmVhbURlc2NyaXB0aW9uKCkpOwotCi0gICAg
aWYgKHNvdXJjZS5zdHJlYW1EZXNjcmlwdGlvbigpICE9IHN0cmVhbURlc2NyaXB0aW9uKCkpCi0g
ICAgICAgIHJldHVybiBrQXVkaW9fUGFyYW1FcnJvcjsKLQotICAgIGlmIChmcmFtZUNvdW50ID4g
c291cmNlLnNhbXBsZUNvdW50KCkpCi0gICAgICAgIGZyYW1lQ291bnQgPSBzb3VyY2Uuc2FtcGxl
Q291bnQoKTsKLQotICAgIGlmIChmcmFtZUNvdW50ID4gbV9zYW1wbGVDYXBhY2l0eSkKLSAgICAg
ICAgcmV0dXJuIGtBdWRpb19QYXJhbUVycm9yOwotCi0gICAgbV9zYW1wbGVDb3VudCA9IGZyYW1l
Q291bnQ7Ci0KLSAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgbV9idWZmZXJMaXN0LT5tTnVt
YmVyQnVmZmVyczsgaSsrKSB7Ci0gICAgICAgIHVpbnQ4X3QqIHNvdXJjZURhdGEgPSBzdGF0aWNf
Y2FzdDx1aW50OF90Kj4oc291cmNlLmJ1ZmZlckxpc3QoKS5tQnVmZmVyc1tpXS5tRGF0YSk7Ci0g
ICAgICAgIHVpbnQ4X3QqIGRlc3RpbmF0aW9uID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KG1fYnVm
ZmVyTGlzdC0+bUJ1ZmZlcnNbaV0ubURhdGEpOwotICAgICAgICBtZW1jcHkoZGVzdGluYXRpb24s
IHNvdXJjZURhdGEsIGZyYW1lQ291bnQgKiBtX2ludGVybmFsRm9ybWF0LT5ieXRlc1BlclBhY2tl
dCgpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotT1NTdGF0dXMgQXVkaW9TYW1wbGVC
dWZmZXJMaXN0Ojpjb3B5VG8oQXVkaW9CdWZmZXJMaXN0JiBidWZmZXIsIHNpemVfdCBmcmFtZUNv
dW50KQotewotICAgIGlmIChmcmFtZUNvdW50ID4gbV9zYW1wbGVDb3VudCkKLSAgICAgICAgcmV0
dXJuIGtBdWRpb19QYXJhbUVycm9yOwotICAgIGlmIChidWZmZXIubU51bWJlckJ1ZmZlcnMgPiBt
X2J1ZmZlckxpc3QtPm1OdW1iZXJCdWZmZXJzKQotICAgICAgICByZXR1cm4ga0F1ZGlvX1BhcmFt
RXJyb3I7Ci0KLSAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgYnVmZmVyLm1OdW1iZXJCdWZm
ZXJzOyBpKyspIHsKLSAgICAgICAgdWludDhfdCogc291cmNlRGF0YSA9IHN0YXRpY19jYXN0PHVp
bnQ4X3QqPihtX2J1ZmZlckxpc3QtPm1CdWZmZXJzW2ldLm1EYXRhKTsKLSAgICAgICAgdWludDhf
dCogZGVzdGluYXRpb24gPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYnVmZmVyLm1CdWZmZXJzW2ld
Lm1EYXRhKTsKLSAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBzb3VyY2VEYXRhLCBmcmFtZUNv
dW50ICogbV9pbnRlcm5hbEZvcm1hdC0+Ynl0ZXNQZXJQYWNrZXQoKSk7Ci0gICAgfQotCi0gICAg
cmV0dXJuIDA7Ci19Ci0KLXZvaWQgQXVkaW9TYW1wbGVCdWZmZXJMaXN0OjpyZXNldCgpCi17Ci0g
ICAgbV9zYW1wbGVDb3VudCA9IDA7Ci0gICAgbV90aW1lc3RhbXAgPSAwOwotICAgIG1faG9zdFRp
bWUgPSAtMTsKLQotICAgIHVpbnQ4X3QqIGRhdGEgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3Qq
PihtX2J1ZmZlckxpc3QuZ2V0KCkpICsgbV9idWZmZXJMaXN0QmFzZVNpemU7Ci0gICAgbV9idWZm
ZXJMaXN0LT5tTnVtYmVyQnVmZmVycyA9IG1faW50ZXJuYWxGb3JtYXQtPm51bWJlck9mQ2hhbm5l
bFN0cmVhbXMoKTsKLSAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgbV9idWZmZXJMaXN0LT5t
TnVtYmVyQnVmZmVyczsgKytpKSB7Ci0gICAgICAgIGF1dG8mIGJ1ZmZlciA9IG1fYnVmZmVyTGlz
dC0+bUJ1ZmZlcnNbaV07Ci0gICAgICAgIGJ1ZmZlci5tRGF0YSA9IGRhdGE7Ci0gICAgICAgIGJ1
ZmZlci5tRGF0YUJ5dGVTaXplID0gbV9tYXhCdWZmZXJTaXplUGVyQ2hhbm5lbDsKLSAgICAgICAg
YnVmZmVyLm1OdW1iZXJDaGFubmVscyA9IG1faW50ZXJuYWxGb3JtYXQtPm51bWJlck9mSW50ZXJs
ZWF2ZWRDaGFubmVscygpOwotICAgICAgICBkYXRhID0gZGF0YSArIG1fbWF4QnVmZmVyU2l6ZVBl
ckNoYW5uZWw7Ci0gICAgfQotfQotCi12b2lkIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6emVybygp
Ci17Ci0gICAgemVyb0FCTCgqbV9idWZmZXJMaXN0LCBtX2ludGVybmFsRm9ybWF0LT5ieXRlc1Bl
clBhY2tldCgpICogbV9zYW1wbGVDYXBhY2l0eSk7Ci19Ci0KLXZvaWQgQXVkaW9TYW1wbGVCdWZm
ZXJMaXN0Ojp6ZXJvQUJMKEF1ZGlvQnVmZmVyTGlzdCYgYnVmZmVyLCBzaXplX3QgYnl0ZUNvdW50
KQotewotICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBidWZmZXIubU51bWJlckJ1ZmZlcnM7
ICsraSkKLSAgICAgICAgbWVtc2V0KGJ1ZmZlci5tQnVmZmVyc1tpXS5tRGF0YSwgMCwgYnl0ZUNv
dW50KTsKLX0KLQotT1NTdGF0dXMgQXVkaW9TYW1wbGVCdWZmZXJMaXN0Ojpjb252ZXJ0SW5wdXQo
VUludDMyKiBpb051bWJlckRhdGFQYWNrZXRzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkKLXsK
LSAgICBpZiAoIWlvTnVtYmVyRGF0YVBhY2tldHMgfHwgIWlvRGF0YSB8fCAhbV9jb252ZXJ0ZXJJ
bnB1dEJ1ZmZlcikgewotICAgICAgICBMT0dfRVJST1IoIkF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6
cmVjb25maWd1cmVJbnB1dCglcCkgaW52YWxpZCBpbnB1dCB0byBBdWRpb0NvbnZlcnRlcklucHV0
IiwgdGhpcyk7Ci0gICAgICAgIHJldHVybiBrQXVkaW9Db252ZXJ0ZXJFcnJfVW5zcGVjaWZpZWRF
cnJvcjsKLSAgICB9Ci0KLSAgICBzaXplX3QgcGFja2V0Q291bnQgPSBtX2NvbnZlcnRlcklucHV0
QnVmZmVyLT5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplIC8gbV9jb252ZXJ0ZXJJbnB1dEJ5dGVz
UGVyUGFja2V0OwotICAgIGlmICgqaW9OdW1iZXJEYXRhUGFja2V0cyA+IG1fc2FtcGxlQ2FwYWNp
dHkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNvbnZlcnRJ
bnB1dCglcCkgbm90IGVub3VnaCBpbnRlcm5hbCBzdG9yYWdlOiBuZWVkZWQgPSAldSwgYXZhaWxh
YmxlID0gJWx1IiwgdGhpcywgKmlvTnVtYmVyRGF0YVBhY2tldHMsIG1fc2FtcGxlQ2FwYWNpdHkp
OwotICAgICAgICByZXR1cm4ga0F1ZGlvQ29udmVydGVyRXJyX0ludmFsaWRJbnB1dFNpemU7Ci0g
ICAgfQotCi0gICAgKmlvTnVtYmVyRGF0YVBhY2tldHMgPSBzdGF0aWNfY2FzdDxVSW50MzI+KHBh
Y2tldENvdW50KTsKLSAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgaW9EYXRhLT5tTnVtYmVy
QnVmZmVyczsgKytpKSB7Ci0gICAgICAgIGlvRGF0YS0+bUJ1ZmZlcnNbaV0ubURhdGEgPSBtX2Nv
bnZlcnRlcklucHV0QnVmZmVyLT5tQnVmZmVyc1tpXS5tRGF0YTsKLSAgICAgICAgaW9EYXRhLT5t
QnVmZmVyc1tpXS5tRGF0YUJ5dGVTaXplID0gbV9jb252ZXJ0ZXJJbnB1dEJ1ZmZlci0+bUJ1ZmZl
cnNbaV0ubURhdGFCeXRlU2l6ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotT1NTdGF0
dXMgQXVkaW9TYW1wbGVCdWZmZXJMaXN0OjphdWRpb0NvbnZlcnRlckNhbGxiYWNrKEF1ZGlvQ29u
dmVydGVyUmVmLCBVSW50MzIqIGlvTnVtYmVyRGF0YVBhY2tldHMsIEF1ZGlvQnVmZmVyTGlzdCog
aW9EYXRhLCBBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uKiosIHZvaWQqIGluUmVmQ29uKQot
ewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdWRpb1NhbXBsZUJ1ZmZlckxpc3QqPihpblJlZkNv
biktPmNvbnZlcnRJbnB1dChpb051bWJlckRhdGFQYWNrZXRzLCBpb0RhdGEpOwotfQotCi1PU1N0
YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNvcHlGcm9tKEF1ZGlvQnVmZmVyTGlzdCYgc291
cmNlLCBBdWRpb0NvbnZlcnRlclJlZiBjb252ZXJ0ZXIpCi17Ci0gICAgcmVzZXQoKTsKLQotICAg
IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBpbnB1dEZvcm1hdDsKLSAgICBVSW50MzIgcHJv
cGVydHlEYXRhU2l6ZSA9IHNpemVvZihpbnB1dEZvcm1hdCk7Ci0gICAgQXVkaW9Db252ZXJ0ZXJH
ZXRQcm9wZXJ0eShjb252ZXJ0ZXIsIGtBdWRpb0NvbnZlcnRlckN1cnJlbnRJbnB1dFN0cmVhbURl
c2NyaXB0aW9uLCAmcHJvcGVydHlEYXRhU2l6ZSwgJmlucHV0Rm9ybWF0KTsKLSAgICBtX2NvbnZl
cnRlcklucHV0Qnl0ZXNQZXJQYWNrZXQgPSBpbnB1dEZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQ7Ci0g
ICAgbV9jb252ZXJ0ZXJJbnB1dEJ1ZmZlciA9ICZzb3VyY2U7Ci0KLSAgICBhdXRvKiBvdXRwdXRE
YXRhID0gbV9idWZmZXJMaXN0LmdldCgpOwotCi0jaWYgIUxPR19ESVNBQkxFRAotICAgIEF1ZGlv
U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBvdXRwdXRGb3JtYXQ7Ci0gICAgcHJvcGVydHlEYXRhU2l6
ZSA9IHNpemVvZihvdXRwdXRGb3JtYXQpOwotICAgIEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHko
Y29udmVydGVyLCBrQXVkaW9Db252ZXJ0ZXJDdXJyZW50T3V0cHV0U3RyZWFtRGVzY3JpcHRpb24s
ICZwcm9wZXJ0eURhdGFTaXplLCAmb3V0cHV0Rm9ybWF0KTsKLQotICAgIEFTU0VSVChvdXRwdXRG
b3JtYXQubUNoYW5uZWxzUGVyRnJhbWUgPT0gb3V0cHV0RGF0YS0+bU51bWJlckJ1ZmZlcnMpOwot
ICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBvdXRwdXREYXRhLT5tTnVtYmVyQnVmZmVyczsg
KytpKSB7Ci0gICAgICAgIEFTU0VSVChvdXRwdXREYXRhLT5tQnVmZmVyc1tpXS5tRGF0YSk7Ci0g
ICAgICAgIEFTU0VSVChvdXRwdXREYXRhLT5tQnVmZmVyc1tpXS5tRGF0YUJ5dGVTaXplKTsKLSAg
ICB9Ci0jZW5kaWYKLQotICAgIFVJbnQzMiBzYW1wbGVzQ29udmVydGVkID0gc3RhdGljX2Nhc3Q8
VUludDMyPihtX3NhbXBsZUNhcGFjaXR5KTsKLSAgICBPU1N0YXR1cyBlcnIgPSBBdWRpb0NvbnZl
cnRlckZpbGxDb21wbGV4QnVmZmVyKGNvbnZlcnRlciwgYXVkaW9Db252ZXJ0ZXJDYWxsYmFjaywg
dGhpcywgJnNhbXBsZXNDb252ZXJ0ZWQsIG91dHB1dERhdGEsIG51bGxwdHIpOwotICAgIGlmIChl
cnIpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNvcHlGcm9t
KCVwKSBBdWRpb0NvbnZlcnRlckZpbGxDb21wbGV4QnVmZmVyIHJldHVybmVkIGVycm9yICVkICgl
LjRzKSIsIHRoaXMsIGVyciwgKGNoYXIqKSZlcnIpOwotICAgICAgICBtX3NhbXBsZUNvdW50ID0g
c3RkOjptaW4obV9zYW1wbGVDYXBhY2l0eSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihzYW1wbGVzQ29u
dmVydGVkKSk7Ci0gICAgICAgIHplcm8oKTsKLSAgICAgICAgcmV0dXJuIGVycjsKLSAgICB9Ci0K
LSAgICBtX3NhbXBsZUNvdW50ID0gc2FtcGxlc0NvbnZlcnRlZDsKLSAgICByZXR1cm4gMDsKLX0K
LQotT1NTdGF0dXMgQXVkaW9TYW1wbGVCdWZmZXJMaXN0Ojpjb3B5RnJvbShBdWRpb1NhbXBsZUJ1
ZmZlckxpc3QmIHNvdXJjZSwgQXVkaW9Db252ZXJ0ZXJSZWYgY29udmVydGVyKQotewotICAgIHJl
dHVybiBjb3B5RnJvbShzb3VyY2UuYnVmZmVyTGlzdCgpLCBjb252ZXJ0ZXIpOwotfQotCi1PU1N0
YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNvcHlGcm9tKENBUmluZ0J1ZmZlciYgcmluZ0J1
ZmZlciwgc2l6ZV90IHNhbXBsZUNvdW50LCB1aW50NjRfdCBzdGFydEZyYW1lLCBDQVJpbmdCdWZm
ZXI6OkZldGNoTW9kZSBtb2RlKQotewotICAgIHJlc2V0KCk7Ci0gICAgaWYgKHJpbmdCdWZmZXIu
ZmV0Y2goJmJ1ZmZlckxpc3QoKSwgc2FtcGxlQ291bnQsIHN0YXJ0RnJhbWUsIG1vZGUpICE9IENB
UmluZ0J1ZmZlcjo6T2spCi0gICAgICAgIHJldHVybiBrQXVkaW9fUGFyYW1FcnJvcjsKLQotICAg
IG1fc2FtcGxlQ291bnQgPSBzYW1wbGVDb3VudDsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBB
dWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNvbmZpZ3VyZUJ1ZmZlckxpc3RGb3JTdHJlYW0oQXVkaW9C
dWZmZXJMaXN0JiBidWZmZXJMaXN0LCBjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGZv
cm1hdCwgdWludDhfdCogYnVmZmVyRGF0YSwgc2l6ZV90IHNhbXBsZUNvdW50KQotewotICAgIHNp
emVfdCBidWZmZXJDb3VudCA9IGZvcm1hdC5udW1iZXJPZkNoYW5uZWxTdHJlYW1zKCk7Ci0gICAg
c2l6ZV90IGNoYW5uZWxDb3VudCA9IGZvcm1hdC5udW1iZXJPZkludGVybGVhdmVkQ2hhbm5lbHMo
KTsKLSAgICBzaXplX3QgYnl0ZXNQZXJDaGFubmVsID0gc2FtcGxlQ291bnQgKiBmb3JtYXQuYnl0
ZXNQZXJGcmFtZSgpOwotCi0gICAgYnVmZmVyTGlzdC5tTnVtYmVyQnVmZmVycyA9IGJ1ZmZlckNv
dW50OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBidWZmZXJDb3VudDsgKytpKSB7Ci0g
ICAgICAgIGJ1ZmZlckxpc3QubUJ1ZmZlcnNbaV0ubU51bWJlckNoYW5uZWxzID0gY2hhbm5lbENv
dW50OwotICAgICAgICBidWZmZXJMaXN0Lm1CdWZmZXJzW2ldLm1EYXRhQnl0ZVNpemUgPSBieXRl
c1BlckNoYW5uZWw7Ci0gICAgICAgIGJ1ZmZlckxpc3QubUJ1ZmZlcnNbaV0ubURhdGEgPSBidWZm
ZXJEYXRhOwotICAgICAgICBpZiAoYnVmZmVyRGF0YSkKLSAgICAgICAgICAgIGJ1ZmZlckRhdGEg
PSBidWZmZXJEYXRhICsgYnl0ZXNQZXJDaGFubmVsOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZUJ1ZmZlckxpc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZUJ1ZmZlckxp
c3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU4ZTI0YzIzMjAxNTZhODNhNzU5
NGNmNWZiYzUxOWFhOGJjYTJiNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVC
dWZmZXJMaXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKLQotI2luY2x1ZGUgIkNBUmluZ0J1ZmZlci5oIgotI2luY2x1ZGUg
PENvcmVBdWRpby9Db3JlQXVkaW9UeXBlcy5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLXR5cGVk
ZWYgc3RydWN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBBdWRpb1N0cmVhbUJhc2ljRGVz
Y3JpcHRpb247Ci10eXBlZGVmIHN0cnVjdCBPcGFxdWVBdWRpb0NvbnZlcnRlciogQXVkaW9Db252
ZXJ0ZXJSZWY7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQXVkaW9TYW1wbGVCdWZm
ZXJMaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8QXVkaW9TYW1wbGVCdWZmZXJMaXN0PiB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q+IGNyZWF0ZShjb25zdCBD
QUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpOwotCi0gICAgfkF1ZGlvU2FtcGxlQnVm
ZmVyTGlzdCgpOwotCi0gICAgc3RhdGljIHZvaWQgY29uZmlndXJlQnVmZmVyTGlzdEZvclN0cmVh
bShBdWRpb0J1ZmZlckxpc3QmLCBjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCB1aW50
OF90Kiwgc2l6ZV90KTsKLSAgICBzdGF0aWMgaW5saW5lIHNpemVfdCBhdWRpb0J1ZmZlckxpc3RT
aXplRm9yU3RyZWFtKGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYpOwotCi0gICAgc3Rh
dGljIHZvaWQgYXBwbHlHYWluKEF1ZGlvQnVmZmVyTGlzdCYsIGZsb2F0LCBBdWRpb1N0cmVhbURl
c2NyaXB0aW9uOjpQQ01Gb3JtYXQpOwotICAgIHZvaWQgYXBwbHlHYWluKGZsb2F0KTsKLQotICAg
IE9TU3RhdHVzIGNvcHlGcm9tKGNvbnN0IEF1ZGlvU2FtcGxlQnVmZmVyTGlzdCYsIHNpemVfdCBj
b3VudCA9IFNJWkVfTUFYKTsKLSAgICBPU1N0YXR1cyBjb3B5RnJvbShBdWRpb0J1ZmZlckxpc3Qm
LCBBdWRpb0NvbnZlcnRlclJlZik7Ci0gICAgT1NTdGF0dXMgY29weUZyb20oQXVkaW9TYW1wbGVC
dWZmZXJMaXN0JiwgQXVkaW9Db252ZXJ0ZXJSZWYpOwotICAgIE9TU3RhdHVzIGNvcHlGcm9tKENB
UmluZ0J1ZmZlciYsIHNpemVfdCBmcmFtZUNvdW50LCB1aW50NjRfdCBzdGFydEZyYW1lLCBDQVJp
bmdCdWZmZXI6OkZldGNoTW9kZSk7Ci0KLSAgICBPU1N0YXR1cyBtaXhGcm9tKGNvbnN0IEF1ZGlv
U2FtcGxlQnVmZmVyTGlzdCYsIHNpemVfdCBjb3VudCA9IFNJWkVfTUFYKTsKLQotICAgIE9TU3Rh
dHVzIGNvcHlUbyhBdWRpb0J1ZmZlckxpc3QmLCBzaXplX3QgY291bnQgPSBTSVpFX01BWCk7Ci0K
LSAgICBjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mIHN0cmVhbURlc2NyaXB0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5hbEZvcm1hdC0+c3RyZWFtRGVzY3JpcHRpb24oKTsg
fQotICAgIEF1ZGlvQnVmZmVyTGlzdCYgYnVmZmVyTGlzdCgpIGNvbnN0IHsgcmV0dXJuICptX2J1
ZmZlckxpc3QuZ2V0KCk7IH0KLQotICAgIHVpbnQzMl90IHNhbXBsZUNhcGFjaXR5KCkgY29uc3Qg
eyByZXR1cm4gbV9zYW1wbGVDYXBhY2l0eTsgfQotICAgIHVpbnQzMl90IHNhbXBsZUNvdW50KCkg
Y29uc3QgeyByZXR1cm4gbV9zYW1wbGVDb3VudDsgfQotICAgIHZvaWQgc2V0U2FtcGxlQ291bnQo
c2l6ZV90KTsKLQotICAgIHVpbnQ2NF90IHRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fdGlt
ZXN0YW1wOyB9Ci0gICAgZG91YmxlIGhvc3RUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9ob3N0VGlt
ZTsgfQotICAgIHZvaWQgc2V0VGltZXModWludDY0X3QgdGltZSwgZG91YmxlIGhvc3RUaW1lKSB7
IG1fdGltZXN0YW1wID0gdGltZTsgbV9ob3N0VGltZSA9IGhvc3RUaW1lOyB9Ci0KLSAgICB2b2lk
IHJlc2V0KCk7Ci0KLSAgICBzdGF0aWMgdm9pZCB6ZXJvQUJMKEF1ZGlvQnVmZmVyTGlzdCYsIHNp
emVfdCk7Ci0gICAgdm9pZCB6ZXJvKCk7Ci0KLXByb3RlY3RlZDoKLSAgICBBdWRpb1NhbXBsZUJ1
ZmZlckxpc3QoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KTsKLQotICAg
IHN0YXRpYyBPU1N0YXR1cyBhdWRpb0NvbnZlcnRlckNhbGxiYWNrKEF1ZGlvQ29udmVydGVyUmVm
LCBVSW50MzIqLCBBdWRpb0J1ZmZlckxpc3QqLCBBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9u
KiosIHZvaWQqKTsKLSAgICBPU1N0YXR1cyBjb252ZXJ0SW5wdXQoVUludDMyKiwgQXVkaW9CdWZm
ZXJMaXN0Kik7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
PiBtX2ludGVybmFsRm9ybWF0OwotCi0gICAgQXVkaW9TYW1wbGVCdWZmZXJMaXN0KiBtX2NvbnZl
cnRlcklucHV0QnVmZmVyMiB7IG51bGxwdHIgfTsKLSAgICBBdWRpb0J1ZmZlckxpc3QqIG1fY29u
dmVydGVySW5wdXRCdWZmZXIgeyBudWxscHRyIH07Ci0gICAgdWludDMyX3QgbV9jb252ZXJ0ZXJJ
bnB1dEJ5dGVzUGVyUGFja2V0IHsgMCB9OwotCi0gICAgdWludDY0X3QgbV90aW1lc3RhbXAgeyAw
IH07Ci0gICAgZG91YmxlIG1faG9zdFRpbWUgeyAtMSB9OwotICAgIHNpemVfdCBtX3NhbXBsZUNv
dW50IHsgMCB9OwotICAgIHNpemVfdCBtX3NhbXBsZUNhcGFjaXR5IHsgMCB9OwotICAgIHNpemVf
dCBtX21heEJ1ZmZlclNpemVQZXJDaGFubmVsIHsgMCB9OwotICAgIHNpemVfdCBtX2J1ZmZlckxp
c3RCYXNlU2l6ZSB7IDAgfTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9CdWZmZXJMaXN0PiBt
X2J1ZmZlckxpc3Q7Ci19OwotCi1pbmxpbmUgc2l6ZV90IEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6
YXVkaW9CdWZmZXJMaXN0U2l6ZUZvclN0cmVhbShjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24mIGRlc2NyaXB0aW9uKQotewotICAgIHJldHVybiBvZmZzZXRvZihBdWRpb0J1ZmZlckxpc3Qs
IG1CdWZmZXJzKSArIChzaXplb2YoQXVkaW9CdWZmZXIpICogc3RkOjptYXg8dWludDMyX3Q+KDEs
IGRlc2NyaXB0aW9uLm51bWJlck9mQ2hhbm5lbFN0cmVhbXMoKSkpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRh
U291cmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjk1NzEyYmIxM2I3NTU1
MmFhZWRkZjU3ZmM3MTI5NGRlNTAzNzVkOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9T
YW1wbGVEYXRhU291cmNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzOCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIgotCi0jaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKLQotI2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgotI2lu
Y2x1ZGUgIkNBUmluZ0J1ZmZlci5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJN
ZWRpYVRpbWVBVkZvdW5kYXRpb24uaCIKLSNpbmNsdWRlIDxBdWRpb1Rvb2xib3gvQXVkaW9Db252
ZXJ0ZXIuaD4KLSNpbmNsdWRlIDxtYWNoL21hY2guaD4KLSNpbmNsdWRlIDxtYWNoL21hY2hfdGlt
ZS5oPgotI2luY2x1ZGUgPG11dGV4PgotI2luY2x1ZGUgPHN5c2xvZy5oPgotI2luY2x1ZGUgPHd0
Zi9DdXJyZW50VGltZS5oPgotI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgotCi0j
aW5jbHVkZSAiQ29yZU1lZGlhU29mdExpbmsuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11
c2luZyBuYW1lc3BhY2UgSlNDOwotCi1SZWY8QXVkaW9TYW1wbGVEYXRhU291cmNlPiBBdWRpb1Nh
bXBsZURhdGFTb3VyY2U6OmNyZWF0ZShzaXplX3QgbWF4aW11bVNhbXBsZUNvdW50KQotewotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZShtYXhpbXVtU2FtcGxl
Q291bnQpKTsKLX0KLQotQXVkaW9TYW1wbGVEYXRhU291cmNlOjpBdWRpb1NhbXBsZURhdGFTb3Vy
Y2Uoc2l6ZV90IG1heGltdW1TYW1wbGVDb3VudCkKLSAgICA6IG1faW5wdXRTYW1wbGVPZmZzZXQo
TWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKQotICAgICwgbV9tYXhpbXVtU2FtcGxlQ291bnQobWF4
aW11bVNhbXBsZUNvdW50KQotewotfQotCi1BdWRpb1NhbXBsZURhdGFTb3VyY2U6On5BdWRpb1Nh
bXBsZURhdGFTb3VyY2UoKQotewotICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IG51bGxwdHI7Ci0g
ICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IG51bGxwdHI7Ci0gICAgbV9yaW5nQnVmZmVyID0gbnVs
bHB0cjsKLSAgICBpZiAobV9jb252ZXJ0ZXIpIHsKLSAgICAgICAgQXVkaW9Db252ZXJ0ZXJEaXNw
b3NlKG1fY29udmVydGVyKTsKLSAgICAgICAgbV9jb252ZXJ0ZXIgPSBudWxscHRyOwotICAgIH0K
LX0KLQotdm9pZCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnNldFBhdXNlZChib29sIHBhdXNlZCkK
LXsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX2xvY2spOwotCi0gICAgaWYgKHBh
dXNlZCA9PSBtX3BhdXNlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV90cmFuc2l0aW9uaW5n
RnJvbVBhdXNlZCA9IG1fcGF1c2VkOwotICAgIG1fcGF1c2VkID0gcGF1c2VkOwotfQotCi1PU1N0
YXR1cyBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnNldHVwQ29udmVydGVyKCkKLXsKLSAgICBBU1NF
UlQobV9pbnB1dERlc2NyaXB0aW9uICYmIG1fb3V0cHV0RGVzY3JpcHRpb24pOwotCi0gICAgaWYg
KG1fY29udmVydGVyKSB7Ci0gICAgICAgIEF1ZGlvQ29udmVydGVyRGlzcG9zZShtX2NvbnZlcnRl
cik7Ci0gICAgICAgIG1fY29udmVydGVyID0gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBpZiAoKm1f
aW5wdXREZXNjcmlwdGlvbiA9PSAqbV9vdXRwdXREZXNjcmlwdGlvbikKLSAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICBPU1N0YXR1cyBlcnIgPSBBdWRpb0NvbnZlcnRlck5ldygmbV9pbnB1dERlc2Ny
aXB0aW9uLT5zdHJlYW1EZXNjcmlwdGlvbigpLCAmbV9vdXRwdXREZXNjcmlwdGlvbi0+c3RyZWFt
RGVzY3JpcHRpb24oKSwgJm1fY29udmVydGVyKTsKLSAgICBpZiAoZXJyKQotICAgICAgICBMT0df
RVJST1IoIkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6c2V0dXBDb252ZXJ0ZXIoJXApIC0gQXVkaW9D
b252ZXJ0ZXJOZXcgcmV0dXJuZWQgZXJyb3IgJWQgKCUuNHMpIiwgdGhpcywgKGludCllcnIsIChj
aGFyKikmZXJyKTsKLQotICAgIHJldHVybiBlcnI7Ci0KLX0KLQotT1NTdGF0dXMgQXVkaW9TYW1w
bGVEYXRhU291cmNlOjpzZXRJbnB1dEZvcm1hdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24mIGZvcm1hdCkKLXsKLSAgICBBU1NFUlQoZm9ybWF0LnNhbXBsZVJhdGUoKSA+PSAwKTsKLQot
ICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uPihmb3JtYXQpOwotICAgIGlmIChtX291dHB1dERlc2NyaXB0aW9uKQotICAgICAg
ICByZXR1cm4gc2V0dXBDb252ZXJ0ZXIoKTsKLQotICAgIHJldHVybiAwOwotfQotCi1PU1N0YXR1
cyBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnNldE91dHB1dEZvcm1hdChjb25zdCBDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24mIGZvcm1hdCkKLXsKLSAgICBBU1NFUlQobV9pbnB1dERlc2NyaXB0aW9u
KTsKLSAgICBBU1NFUlQoZm9ybWF0LnNhbXBsZVJhdGUoKSA+PSAwKTsKLQotICAgIG1fb3V0cHV0
RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4o
Zm9ybWF0KTsKLSAgICBpZiAoIW1fcmluZ0J1ZmZlcikKLSAgICAgICAgbV9yaW5nQnVmZmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxDQVJpbmdCdWZmZXI+KCk7Ci0KLSAgICBtX3JpbmdCdWZmZXItPmFs
bG9jYXRlKGZvcm1hdCwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX21heGltdW1TYW1wbGVDb3VudCkp
OwotICAgIG1fc2NyYXRjaEJ1ZmZlciA9IEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6Y3JlYXRlKG1f
b3V0cHV0RGVzY3JpcHRpb24tPnN0cmVhbURlc2NyaXB0aW9uKCksIG1fbWF4aW11bVNhbXBsZUNv
dW50KTsKLQotICAgIHJldHVybiBzZXR1cENvbnZlcnRlcigpOwotfQotCi1NZWRpYVRpbWUgQXVk
aW9TYW1wbGVEYXRhU291cmNlOjpob3N0VGltZSgpIGNvbnN0Ci17Ci0gICAgLy8gQmFzZWQgb24g
bGlzdGluZyAjMiBmcm9tIEFwcGxlIFRlY2huaWNhbCBRJkEgUUExMzk4LCBtb2RpZmllZCB0byBi
ZSB0aHJlYWQtc2FmZS4KLSAgICBzdGF0aWMgZG91YmxlIGZyZXF1ZW5jeTsKLSAgICBzdGF0aWMg
bWFjaF90aW1lYmFzZV9pbmZvX2RhdGFfdCB0aW1lYmFzZUluZm87Ci0gICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIGluaXRpYWxpemVUaW1lck9uY2VGbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKGlu
aXRpYWxpemVUaW1lck9uY2VGbGFnLCBbXSB7Ci0gICAgICAgIGtlcm5fcmV0dXJuX3Qga3IgPSBt
YWNoX3RpbWViYXNlX2luZm8oJnRpbWViYXNlSW5mbyk7Ci0gICAgICAgIGZyZXF1ZW5jeSA9IDFl
LTkgKiBzdGF0aWNfY2FzdDxkb3VibGU+KHRpbWViYXNlSW5mby5udW1lcikgLyBzdGF0aWNfY2Fz
dDxkb3VibGU+KHRpbWViYXNlSW5mby5kZW5vbSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoa3Is
IGtyID09IEtFUk5fU1VDQ0VTUyk7Ci0gICAgICAgIEFTU0VSVCh0aW1lYmFzZUluZm8uZGVub20p
OwotICAgIH0pOwotCi0gICAgcmV0dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShtYWNo
X2Fic29sdXRlX3RpbWUoKSAqIGZyZXF1ZW5jeSk7Ci19Ci0KLXZvaWQgQXVkaW9TYW1wbGVEYXRh
U291cmNlOjpwdXNoU2FtcGxlc0ludGVybmFsKEF1ZGlvQnVmZmVyTGlzdCYgYnVmZmVyTGlzdCwg
Y29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBzaXplX3Qgc2FtcGxlQ291bnQpCi17
Ci0gICAgQVNTRVJUKG1fbG9jay5pc0hlbGQoKSk7Ci0KLSAgICBBdWRpb0J1ZmZlckxpc3QqIHNh
bXBsZUJ1ZmZlckxpc3Q7Ci0gICAgaWYgKG1fY29udmVydGVyKSB7Ci0gICAgICAgIG1fc2NyYXRj
aEJ1ZmZlci0+cmVzZXQoKTsKLSAgICAgICAgT1NTdGF0dXMgZXJyID0gbV9zY3JhdGNoQnVmZmVy
LT5jb3B5RnJvbShidWZmZXJMaXN0LCBtX2NvbnZlcnRlcik7Ci0gICAgICAgIGlmIChlcnIpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgc2FtcGxlQnVmZmVyTGlzdCA9ICZtX3NjcmF0
Y2hCdWZmZXItPmJ1ZmZlckxpc3QoKTsKLSAgICB9IGVsc2UKLSAgICAgICAgc2FtcGxlQnVmZmVy
TGlzdCA9ICZidWZmZXJMaXN0OwotCi0gICAgTWVkaWFUaW1lIHNhbXBsZVRpbWUgPSBwcmVzZW50
YXRpb25UaW1lOwotICAgIGlmIChtX2lucHV0U2FtcGxlT2Zmc2V0ID09IE1lZGlhVGltZTo6aW52
YWxpZFRpbWUoKSkgewotICAgICAgICBtX2lucHV0U2FtcGxlT2Zmc2V0ID0gTWVkaWFUaW1lKDEg
LSBzYW1wbGVUaW1lLnRpbWVWYWx1ZSgpLCBzYW1wbGVUaW1lLnRpbWVTY2FsZSgpKTsKLSAgICAg
ICAgaWYgKG1faW5wdXRTYW1wbGVPZmZzZXQudGltZVNjYWxlKCkgIT0gc2FtcGxlVGltZS50aW1l
U2NhbGUoKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0
byBkbyB0aGlzIHdpdGhvdXQgY2FsbGluZyBDTVRpbWVDb252ZXJ0U2NhbGUuCi0gICAgICAgICAg
ICBtX2lucHV0U2FtcGxlT2Zmc2V0ID0gdG9NZWRpYVRpbWUoQ01UaW1lQ29udmVydFNjYWxlKHRv
Q01UaW1lKG1faW5wdXRTYW1wbGVPZmZzZXQpLCBzYW1wbGVUaW1lLnRpbWVTY2FsZSgpLCBrQ01U
aW1lUm91bmRpbmdNZXRob2RfRGVmYXVsdCkpOwotICAgICAgICB9Ci0gICAgICAgIExPRyhNZWRp
YUNhcHR1cmVTYW1wbGVzLCAiQEAgcHVzaFNhbXBsZXM6IGlucHV0IHNhbXBsZSBvZmZzZXQgaXMg
JWxsZCwgbV9tYXhpbXVtU2FtcGxlQ291bnQgPSAlenUiLCBtX2lucHV0U2FtcGxlT2Zmc2V0LnRp
bWVWYWx1ZSgpLCBtX21heGltdW1TYW1wbGVDb3VudCk7Ci0gICAgfQotICAgIHNhbXBsZVRpbWUg
Kz0gbV9pbnB1dFNhbXBsZU9mZnNldDsKLQotI2lmICFMT0dfRElTQUJMRUQKLSAgICB1aW50NjRf
dCBzdGFydEZyYW1lMSA9IDA7Ci0gICAgdWludDY0X3QgZW5kRnJhbWUxID0gMDsKLSAgICBtX3Jp
bmdCdWZmZXItPmdldEN1cnJlbnRGcmFtZUJvdW5kcyhzdGFydEZyYW1lMSwgZW5kRnJhbWUxKTsK
LSNlbmRpZgotCi0gICAgbV9yaW5nQnVmZmVyLT5zdG9yZShzYW1wbGVCdWZmZXJMaXN0LCBzYW1w
bGVDb3VudCwgc2FtcGxlVGltZS50aW1lVmFsdWUoKSk7Ci0gICAgbV90aW1lU3RhbXAgPSBzYW1w
bGVUaW1lLnRpbWVWYWx1ZSgpOwotCi0gICAgTE9HKE1lZGlhQ2FwdHVyZVNhbXBsZXMsICJAQCBw
dXNoU2FtcGxlczogYWRkZWQgJWxkIHNhbXBsZXMgZm9yIHRpbWUgPSAlcyAod2FzICVzKSwgbWFj
aCB0aW1lID0gJWxsZCIsIHNhbXBsZUNvdW50LCB0b1N0cmluZyhzYW1wbGVUaW1lKS51dGY4KCku
ZGF0YSgpLCB0b1N0cmluZyhwcmVzZW50YXRpb25UaW1lKS51dGY4KCkuZGF0YSgpLCBtYWNoX2Fi
c29sdXRlX3RpbWUoKSk7Ci0KLSNpZiAhTE9HX0RJU0FCTEVECi0gICAgdWludDY0X3Qgc3RhcnRG
cmFtZTIgPSAwOwotICAgIHVpbnQ2NF90IGVuZEZyYW1lMiA9IDA7Ci0gICAgbV9yaW5nQnVmZmVy
LT5nZXRDdXJyZW50RnJhbWVCb3VuZHMoc3RhcnRGcmFtZTIsIGVuZEZyYW1lMik7Ci0gICAgTE9H
KE1lZGlhQ2FwdHVyZVNhbXBsZXMsICJAQCBwdXNoU2FtcGxlczogYnVmZmVyZWQgcmFuZ2Ugd2Fz
IFslbGxkIC4uICVsbGRdLCBpcyBbJWxsZCAuLiAlbGxkXSIsIHN0YXJ0RnJhbWUxLCBlbmRGcmFt
ZTEsIHN0YXJ0RnJhbWUyLCBlbmRGcmFtZTIpOwotI2VuZGlmCi19Ci0KLXZvaWQgQXVkaW9TYW1w
bGVEYXRhU291cmNlOjpwdXNoU2FtcGxlcyhjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRp
b24mIHNhbXBsZURlc2NyaXB0aW9uLCBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIpCi17
Ci0gICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9sb2NrKTsKLQotICAgIEFTU0VSVF9V
TlVTRUQoc2FtcGxlRGVzY3JpcHRpb24sICptX2lucHV0RGVzY3JpcHRpb24gPT0gc2FtcGxlRGVz
Y3JpcHRpb24pOwotICAgIEFTU0VSVChtX3JpbmdCdWZmZXIpOwotCi0gICAgc2l6ZV90IGJ1ZmZl
clNpemUgPSBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmF1ZGlvQnVmZmVyTGlzdFNpemVGb3JTdHJl
YW0oKm1faW5wdXREZXNjcmlwdGlvbi5nZXQoKSk7Ci0gICAgdWludDhfdCBidWZmZXJEYXRhW2J1
ZmZlclNpemVdOwotICAgIEF1ZGlvQnVmZmVyTGlzdCogYnVmZmVyTGlzdCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8QXVkaW9CdWZmZXJMaXN0Kj4oYnVmZmVyRGF0YSk7Ci0gICAgYnVmZmVyTGlzdC0+bU51
bWJlckJ1ZmZlcnMgPSBtX2lucHV0RGVzY3JpcHRpb24tPm51bWJlck9mSW50ZXJsZWF2ZWRDaGFu
bmVscygpOwotCi0gICAgQ01CbG9ja0J1ZmZlclJlZiBidWZmZXIgPSBudWxscHRyOwotICAgIE9T
U3RhdHVzIGVyciA9IENNU2FtcGxlQnVmZmVyR2V0QXVkaW9CdWZmZXJMaXN0V2l0aFJldGFpbmVk
QmxvY2tCdWZmZXIoc2FtcGxlQnVmZmVyLCBudWxscHRyLCBidWZmZXJMaXN0LCBidWZmZXJTaXpl
LCBrQ0ZBbGxvY2F0b3JTeXN0ZW1EZWZhdWx0LCBrQ0ZBbGxvY2F0b3JTeXN0ZW1EZWZhdWx0LCBr
Q01TYW1wbGVCdWZmZXJGbGFnX0F1ZGlvQnVmZmVyTGlzdF9Bc3N1cmUxNkJ5dGVBbGlnbm1lbnQs
ICZidWZmZXIpOwotICAgIGlmIChlcnIpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJBdWRpb1NhbXBs
ZURhdGFTb3VyY2U6OnB1c2hTYW1wbGVzKCVwKSAtIENNU2FtcGxlQnVmZmVyR2V0QXVkaW9CdWZm
ZXJMaXN0V2l0aFJldGFpbmVkQmxvY2tCdWZmZXIgcmV0dXJuZWQgZXJyb3IgJWQgKCUuNHMpIiwg
dGhpcywgKGludCllcnIsIChjaGFyKikmZXJyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIHB1c2hTYW1wbGVzSW50ZXJuYWwoKmJ1ZmZlckxpc3QsIHRvTWVkaWFUaW1lKENNU2FtcGxl
QnVmZmVyR2V0UHJlc2VudGF0aW9uVGltZVN0YW1wKHNhbXBsZUJ1ZmZlcikpLCBDTVNhbXBsZUJ1
ZmZlckdldE51bVNhbXBsZXMoc2FtcGxlQnVmZmVyKSk7Ci19Ci0KLXZvaWQgQXVkaW9TYW1wbGVE
YXRhU291cmNlOjpwdXNoU2FtcGxlcyhjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24m
IHNhbXBsZURlc2NyaXB0aW9uLCBjb25zdCBNZWRpYVRpbWUmIHNhbXBsZVRpbWUsIHZvaWQqIGF1
ZGlvRGF0YSwgc2l6ZV90IHNhbXBsZUNvdW50KQotewotICAgIHN0ZDo6dW5pcXVlX2xvY2s8TG9j
az4gbG9jayhtX2xvY2ssIHN0ZDo6dHJ5X3RvX2xvY2spOwotICAgIEFTU0VSVCgqbV9pbnB1dERl
c2NyaXB0aW9uID09IHNhbXBsZURlc2NyaXB0aW9uKTsKLQotICAgIENBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbiBkZXNjcmlwdGlvbihzYW1wbGVEZXNjcmlwdGlvbik7Ci0gICAgc2l6ZV90IGJ1ZmZl
clNpemUgPSBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmF1ZGlvQnVmZmVyTGlzdFNpemVGb3JTdHJl
YW0oZGVzY3JpcHRpb24pOwotICAgIHVpbnQ4X3QgYnVmZmVyRGF0YVtidWZmZXJTaXplXTsKLSAg
ICBBdWRpb0J1ZmZlckxpc3QqIGJ1ZmZlckxpc3QgPSByZWludGVycHJldF9jYXN0PEF1ZGlvQnVm
ZmVyTGlzdCo+KGJ1ZmZlckRhdGEpOwotCi0gICAgQXVkaW9TYW1wbGVCdWZmZXJMaXN0Ojpjb25m
aWd1cmVCdWZmZXJMaXN0Rm9yU3RyZWFtKCpidWZmZXJMaXN0LCBkZXNjcmlwdGlvbiwgcmVpbnRl
cnByZXRfY2FzdDx1aW50OF90Kj4oYXVkaW9EYXRhKSwgc2FtcGxlQ291bnQpOwotICAgIHB1c2hT
YW1wbGVzSW50ZXJuYWwoKmJ1ZmZlckxpc3QsIHNhbXBsZVRpbWUsIHNhbXBsZUNvdW50KTsKLX0K
LQotYm9vbCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1bGxTYW1wbGVzSW50ZXJuYWwoQXVkaW9C
dWZmZXJMaXN0JiBidWZmZXIsIHNpemVfdCYgc2FtcGxlQ291bnQsIHVpbnQ2NF90IHRpbWVTdGFt
cCwgZG91YmxlIC8qaG9zdFRpbWUqLywgUHVsbE1vZGUgbW9kZSkKLXsKLSAgICBBU1NFUlQobV9s
b2NrLmlzSGVsZCgpKTsKLQotICAgIEFTU0VSVChidWZmZXIubU51bWJlckJ1ZmZlcnMgPT0gbV9y
aW5nQnVmZmVyLT5jaGFubmVsQ291bnQoKSk7Ci0gICAgaWYgKGJ1ZmZlci5tTnVtYmVyQnVmZmVy
cyAhPSBtX3JpbmdCdWZmZXItPmNoYW5uZWxDb3VudCgpKSB7Ci0gICAgICAgIEF1ZGlvU2FtcGxl
QnVmZmVyTGlzdDo6emVyb0FCTChidWZmZXIsIHNhbXBsZUNvdW50KTsKLSAgICAgICAgc2FtcGxl
Q291bnQgPSAwOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKCFtX3Jp
bmdCdWZmZXIgfHwgbV9tdXRlZCB8fCBtX2lucHV0U2FtcGxlT2Zmc2V0ID09IE1lZGlhVGltZTo6
aW52YWxpZFRpbWUoKSkgewotICAgICAgICBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6Onplcm9BQkwo
YnVmZmVyLCBzYW1wbGVDb3VudCk7Ci0gICAgICAgIHNhbXBsZUNvdW50ID0gMDsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHVpbnQ2NF90IHN0YXJ0RnJhbWUgPSAwOwotICAg
IHVpbnQ2NF90IGVuZEZyYW1lID0gMDsKLSAgICBtX3JpbmdCdWZmZXItPmdldEN1cnJlbnRGcmFt
ZUJvdW5kcyhzdGFydEZyYW1lLCBlbmRGcmFtZSk7Ci0KLSAgICBpZiAobV90cmFuc2l0aW9uaW5n
RnJvbVBhdXNlZCkgewotICAgICAgICB1aW50NjRfdCBidWZmZXJlZCA9IGVuZEZyYW1lIC0gbV90
aW1lU3RhbXA7Ci0gICAgICAgIGlmIChidWZmZXJlZCA8IHNhbXBsZUNvdW50ICogMikgewotICAg
ICAgICAgICAgQXVkaW9TYW1wbGVCdWZmZXJMaXN0Ojp6ZXJvQUJMKGJ1ZmZlciwgc2FtcGxlQ291
bnQpOwotICAgICAgICAgICAgc2FtcGxlQ291bnQgPSAwOwotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3QgZG91YmxlIHR3ZW50eU1TID0gLjAyOwot
ICAgICAgICBjb25zdCBkb3VibGUgdGVuTVMgPSAuMDE7Ci0gICAgICAgIGNvbnN0IGRvdWJsZSBm
aXZlTVMgPSAuMDA1OwotICAgICAgICBkb3VibGUgc2FtcGxlUmF0ZSA9IG1fb3V0cHV0RGVzY3Jp
cHRpb24tPnNhbXBsZVJhdGUoKTsKLSAgICAgICAgaWYgKGJ1ZmZlcmVkID4gc2FtcGxlUmF0ZSAq
IHR3ZW50eU1TKQotICAgICAgICAgICAgbV9vdXRwdXRTYW1wbGVPZmZzZXQgPSBtX3RpbWVTdGFt
cCAtIHNhbXBsZVJhdGUgKiB0d2VudHlNUzsKLSAgICAgICAgZWxzZSBpZiAoYnVmZmVyZWQgPiBz
YW1wbGVSYXRlICogdGVuTVMpCi0gICAgICAgICAgICBtX291dHB1dFNhbXBsZU9mZnNldCA9IG1f
dGltZVN0YW1wIC0gc2FtcGxlUmF0ZSAqIHRlbk1TOwotICAgICAgICBlbHNlIGlmIChidWZmZXJl
ZCA+IHNhbXBsZVJhdGUgKiBmaXZlTVMpCi0gICAgICAgICAgICBtX291dHB1dFNhbXBsZU9mZnNl
dCA9IG1fdGltZVN0YW1wIC0gc2FtcGxlUmF0ZSAqIGZpdmVNUzsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgbV9vdXRwdXRTYW1wbGVPZmZzZXQgPSBtX3RpbWVTdGFtcDsKLQotICAgICAgICBt
X3RyYW5zaXRpb25pbmdGcm9tUGF1c2VkID0gZmFsc2U7Ci0gICAgfQotCi0gICAgdGltZVN0YW1w
ICs9IG1fb3V0cHV0U2FtcGxlT2Zmc2V0OwotCi0gICAgTE9HKE1lZGlhQ2FwdHVyZVNhbXBsZXMs
ICIqKiBwdWxsU2FtcGxlczogYXNraW5nIGZvciAlbGQgc2FtcGxlcyBhdCB0aW1lID0gJWxsZCAo
d2FzICVsbGQpIiwgc2FtcGxlQ291bnQsIHRpbWVTdGFtcCwgdGltZVN0YW1wIC0gbV9vdXRwdXRT
YW1wbGVPZmZzZXQpOwotCi0gICAgaW50NjRfdCBmcmFtZXNBdmFpbGFibGUgPSBzYW1wbGVDb3Vu
dDsKLSAgICBpZiAodGltZVN0YW1wIDwgc3RhcnRGcmFtZSB8fCB0aW1lU3RhbXAgKyBzYW1wbGVD
b3VudCA+IGVuZEZyYW1lKSB7Ci0gICAgICAgIGlmICh0aW1lU3RhbXAgKyBzYW1wbGVDb3VudCA8
IHN0YXJ0RnJhbWUgfHwgdGltZVN0YW1wID4gZW5kRnJhbWUpCi0gICAgICAgICAgICBmcmFtZXNB
dmFpbGFibGUgPSAwOwotICAgICAgICBlbHNlIGlmICh0aW1lU3RhbXAgPCBzdGFydEZyYW1lKQot
ICAgICAgICAgICAgZnJhbWVzQXZhaWxhYmxlID0gdGltZVN0YW1wICsgc2FtcGxlQ291bnQgLSBz
dGFydEZyYW1lOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBmcmFtZXNBdmFpbGFibGUgPSB0
aW1lU3RhbXAgKyBzYW1wbGVDb3VudCAtIGVuZEZyYW1lOwotCi0gICAgICAgIExPRyhNZWRpYUNh
cHR1cmVTYW1wbGVzLCAiKiogcHVsbFNhbXBsZXNJbnRlcm5hbDogc2FtcGxlICVsbGQgaXMgbm90
IGNvbXBsZXRlbHkgaW4gcmFuZ2UgWyVsbGQgLi4gJWxsZF0sIHJldHVybmluZyAlbGxkIGZyYW1l
cyIsIHRpbWVTdGFtcCwgc3RhcnRGcmFtZSwgZW5kRnJhbWUsIGZyYW1lc0F2YWlsYWJsZSk7Ci0K
LSAgICAgICAgaWYgKCFmcmFtZXNBdmFpbGFibGUpIHsKLSAgICAgICAgICAgIEF1ZGlvU2FtcGxl
QnVmZmVyTGlzdDo6emVyb0FCTChidWZmZXIsIHNhbXBsZUNvdW50KTsKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChtX3ZvbHVtZSA+PSAuOTUp
IHsKLSAgICAgICAgbV9yaW5nQnVmZmVyLT5mZXRjaCgmYnVmZmVyLCBzYW1wbGVDb3VudCwgdGlt
ZVN0YW1wLCBtb2RlID09IENvcHkgPyBDQVJpbmdCdWZmZXI6OkNvcHkgOiBDQVJpbmdCdWZmZXI6
Ok1peCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGlmIChtX3NjcmF0Y2hC
dWZmZXItPmNvcHlGcm9tKCptX3JpbmdCdWZmZXIuZ2V0KCksIHNhbXBsZUNvdW50LCB0aW1lU3Rh
bXAsIG1vZGUgPT0gQ29weSA/IENBUmluZ0J1ZmZlcjo6Q29weSA6IENBUmluZ0J1ZmZlcjo6TWl4
KSkgewotICAgICAgICBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6Onplcm9BQkwoYnVmZmVyLCBzYW1w
bGVDb3VudCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBtX3NjcmF0Y2hC
dWZmZXItPmFwcGx5R2FpbihtX3ZvbHVtZSk7Ci0gICAgaWYgKG1fc2NyYXRjaEJ1ZmZlci0+Y29w
eVRvKGJ1ZmZlciwgc2FtcGxlQ291bnQpKQotICAgICAgICBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6
Onplcm9BQkwoYnVmZmVyLCBzYW1wbGVDb3VudCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
Ym9vbCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1bGxTYW1wbGVzKEF1ZGlvQnVmZmVyTGlzdCYg
YnVmZmVyLCBzaXplX3Qgc2FtcGxlQ291bnQsIHVpbnQ2NF90IHRpbWVTdGFtcCwgZG91YmxlIGhv
c3RUaW1lLCBQdWxsTW9kZSBtb2RlKQotewotICAgIHN0ZDo6dW5pcXVlX2xvY2s8TG9jaz4gbG9j
ayhtX2xvY2ssIHN0ZDo6dHJ5X3RvX2xvY2spOwotICAgIGlmICghbG9jay5vd25zX2xvY2soKSB8
fCAhbV9yaW5nQnVmZmVyKSB7Ci0gICAgICAgIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6emVyb0FC
TChidWZmZXIsIHNhbXBsZUNvdW50KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQot
ICAgIHJldHVybiBwdWxsU2FtcGxlc0ludGVybmFsKGJ1ZmZlciwgc2FtcGxlQ291bnQsIHRpbWVT
dGFtcCwgaG9zdFRpbWUsIG1vZGUpOwotfQotCi1ib29sIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6
cHVsbFNhbXBsZXMoQXVkaW9TYW1wbGVCdWZmZXJMaXN0JiBidWZmZXIsIHNpemVfdCBzYW1wbGVD
b3VudCwgdWludDY0X3QgdGltZVN0YW1wLCBkb3VibGUgaG9zdFRpbWUsIFB1bGxNb2RlIG1vZGUp
Ci17Ci0gICAgc3RkOjp1bmlxdWVfbG9jazxMb2NrPiBsb2NrKG1fbG9jaywgc3RkOjp0cnlfdG9f
bG9jayk7Ci0gICAgaWYgKCFsb2NrLm93bnNfbG9jaygpIHx8ICFtX3JpbmdCdWZmZXIpIHsKLSAg
ICAgICAgYnVmZmVyLnplcm8oKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAg
IGlmICghcHVsbFNhbXBsZXNJbnRlcm5hbChidWZmZXIuYnVmZmVyTGlzdCgpLCBzYW1wbGVDb3Vu
dCwgdGltZVN0YW1wLCBob3N0VGltZSwgbW9kZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIGJ1ZmZlci5zZXRUaW1lcyh0aW1lU3RhbXAsIGhvc3RUaW1lKTsKLSAgICBidWZmZXIuc2V0
U2FtcGxlQ291bnQoc2FtcGxlQ291bnQpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRh
U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVE
YXRhU291cmNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlY2RlZWVmZTJmNzI5
MzkzMTI0ODAyZDg1NjFhNzk3YWI2MjA2MzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
U2FtcGxlRGF0YVNvdXJjZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRlICJBdWRpb1NhbXBsZUJ1ZmZlckxp
c3QuaCIKLSNpbmNsdWRlIDxDb3JlQXVkaW8vQ29yZUF1ZGlvVHlwZXMuaD4KLSNpbmNsdWRlIDx3
dGYvTG9jay5oPgotI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KLQotdHlwZWRlZiBjb25zdCBzdHJ1Y3Qgb3BhcXVlQ01Gb3JtYXREZXNjcmlw
dGlvbiAqQ01Gb3JtYXREZXNjcmlwdGlvblJlZjsKLXR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2Ft
cGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb247Ci1jbGFzcyBDQVJpbmdCdWZmZXI7Ci0KLWNs
YXNzIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZSA6IHB1YmxpYyBSZWZDb3VudGVkPEF1ZGlvU2FtcGxl
RGF0YVNvdXJjZT4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8QXVkaW9TYW1wbGVEYXRhU291
cmNlPiBjcmVhdGUoc2l6ZV90KTsKLQotICAgIH5BdWRpb1NhbXBsZURhdGFTb3VyY2UoKTsKLQot
ICAgIE9TU3RhdHVzIHNldElucHV0Rm9ybWF0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
biYpOwotICAgIE9TU3RhdHVzIHNldE91dHB1dEZvcm1hdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24mKTsKLQotICAgIHZvaWQgcHVzaFNhbXBsZXMoY29uc3QgQXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uJiwgY29uc3QgTWVkaWFUaW1lJiwgdm9pZCosIHNpemVfdCk7Ci0gICAgdm9p
ZCBwdXNoU2FtcGxlcyhjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mLCBDTVNhbXBs
ZUJ1ZmZlclJlZik7Ci0KLSAgICBlbnVtIFB1bGxNb2RlIHsgQ29weSwgTWl4IH07Ci0gICAgYm9v
bCBwdWxsU2FtcGxlcyhBdWRpb1NhbXBsZUJ1ZmZlckxpc3QmLCBzaXplX3QsIHVpbnQ2NF90LCBk
b3VibGUsIFB1bGxNb2RlKTsKLSAgICBib29sIHB1bGxTYW1wbGVzKEF1ZGlvQnVmZmVyTGlzdCYs
IHNpemVfdCwgdWludDY0X3QsIGRvdWJsZSwgUHVsbE1vZGUpOwotCi0gICAgdm9pZCBzZXRQYXVz
ZWQoYm9vbCk7Ci0KLSAgICB2b2lkIHNldFZvbHVtZShmbG9hdCB2b2x1bWUpIHsgbV92b2x1bWUg
PSB2b2x1bWU7IH0KLSAgICBmbG9hdCB2b2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3ZvbHVtZTsg
fQotCi0gICAgdm9pZCBzZXRNdXRlZChib29sIG11dGVkKSB7IG1fbXV0ZWQgPSBtdXRlZDsgfQot
ICAgIGJvb2wgbXV0ZWQoKSBjb25zdCB7IHJldHVybiBtX211dGVkOyB9Ci0KLXByb3RlY3RlZDoK
LSAgICBBdWRpb1NhbXBsZURhdGFTb3VyY2Uoc2l6ZV90KTsKLQotICAgIE9TU3RhdHVzIHNldHVw
Q29udmVydGVyKCk7Ci0gICAgYm9vbCBwdWxsU2FtcGxlc0ludGVybmFsKEF1ZGlvQnVmZmVyTGlz
dCYsIHNpemVfdCYsIHVpbnQ2NF90LCBkb3VibGUsIFB1bGxNb2RlKTsKLQotICAgIHZvaWQgcHVz
aFNhbXBsZXNJbnRlcm5hbChBdWRpb0J1ZmZlckxpc3QmLCBjb25zdCBNZWRpYVRpbWUmLCBzaXpl
X3QgZnJhbWVDb3VudCk7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uPiBtX2lucHV0RGVzY3JpcHRpb247Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbj4gbV9vdXRwdXREZXNjcmlwdGlvbjsKLQotICAgIE1lZGlhVGltZSBo
b3N0VGltZSgpIGNvbnN0OwotCi0gICAgdWludDY0X3QgbV90aW1lU3RhbXAgeyAwIH07Ci0gICAg
ZG91YmxlIG1faG9zdFRpbWUgeyAtMSB9OwotCi0gICAgTWVkaWFUaW1lIG1faW5wdXRTYW1wbGVP
ZmZzZXQ7Ci0gICAgdWludDY0X3QgbV9vdXRwdXRTYW1wbGVPZmZzZXQgeyAwIH07Ci0KLSAgICBB
dWRpb0NvbnZlcnRlclJlZiBtX2NvbnZlcnRlcjsKLSAgICBSZWZQdHI8QXVkaW9TYW1wbGVCdWZm
ZXJMaXN0PiBtX3NjcmF0Y2hCdWZmZXI7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0FSaW5nQnVm
ZmVyPiBtX3JpbmdCdWZmZXI7Ci0gICAgc2l6ZV90IG1fbWF4aW11bVNhbXBsZUNvdW50IHsgMCB9
OwotCi0gICAgTG9jayBtX2xvY2s7Ci0gICAgZmxvYXQgbV92b2x1bWUgeyAxLjAgfTsKLSAgICBi
b29sIG1fbXV0ZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9wYXVzZWQgeyB0cnVlIH07Ci0gICAg
Ym9vbCBtX3RyYW5zaXRpb25pbmdGcm9tUGF1c2VkIHsgdHJ1ZSB9OwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>