<?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>213045</bug_id>
          
          <creation_ts>2020-06-10 13:12:59 -0700</creation_ts>
          <short_desc>REGRESSION(r262838): Broke WPE Debug build</short_desc>
          <delta_ts>2020-06-10 13:21:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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>212470</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>dpino</cc>
    
    <cc>pnormand</cc>
    
    <cc>svillar</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1661312</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-10 13:12:59 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/262838 broke the build:
Broke WPE Debug build

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>1661314</commentid>
    <comment_count>1</comment_count>
      <attachid>401573</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-10 13:13:06 -0700</bug_when>
    <thetext>Created attachment 401573
REVERT of r262838

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 revert will be successful.  This process takes approximately 15 minutes.

If you would like to land the revert 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>1661315</commentid>
    <comment_count>2</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-06-10 13:14:32 -0700</bug_when>
    <thetext>Besides the missing `use namespace WebCore;` in PlatformXROpenXR.cpp
there is this error in the generated bindings:

error: no viable conversion from &apos;WebCore::XRFrameRequestCallback::Identifier&apos; (aka &apos;unsigned long&apos;) to &apos;JSC::PropertyName&apos;                                                     
    m_data-&gt;invokeCallback(thisValue, args, JSCallbackData::CallbackType::Function, Identifier(), returnedException);
                                                                                    ^~~~~~~~~~~~</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401573</attachid>
            <date>2020-06-10 13:13:06 -0700</date>
            <delta_ts>2020-06-10 13:19:45 -0700</delta_ts>
            <desc>REVERT of r262838</desc>
            <filename>bug-213045-20200610201305.patch</filename>
            <type>text/plain</type>
            <size>34397</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyODUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNhYjhmNTgyZmNlZjNk
MDgwYTI5ZDI0ZWNlOTUwMjQ4N2MzY2U0ZS4uY2RmMzgwYmQwNzViY2E4ZTRlOTgzYTk3MmM2MDY1
MWU4ZGM0ODZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA2LTEwICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByZXZlcnRpbmcgcjI2MjgzOC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMzA0NQorCisgICAgICAgIEJyb2tlIFdQRSBEZWJ1ZyBidWlsZAorCisg
ICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiW1dlYlhSXSBSZWZhY3RvciBP
cGVuWFIgcGxhdGZvcm0gY29kZSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMjQ3MAorICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvMjYyODM4CisKIDIwMjAtMDYtMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIEJhc2VBdWRpb1NoYXJlZFVuaXQgZG9lcyBub3QgbmVlZCB0byByZXN0
YXJ0IGl0cyBhdWRpbyB1bml0IGF0IHJlc3VtZSB0aW1lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBmMjZh
ZDE2M2U2MzIzNjY4NGMzNTEzOTllYTQ1ZWVkNGFkM2VlMjZlLi4yODliMjAwMjk1NTllZWQ5YTQ4
YmVmNGExMTk1NmU1YjZkNzFkNzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjE0Nyw3ICsyMTQ3LDgg
QEAgcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuY3BwCiBwbGF0Zm9ybS90ZXh0L1RleHRFbmNv
ZGluZ0RldGVjdG9ySUNVLmNwcAogcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5j
cHAKIAotcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwIEBuby11bmlmeQor
cGxhdGZvcm0veHIvUGxhdGZvcm1YUi5jcHAgQG5vLXVuaWZ5CitwbGF0Zm9ybS94ci9vcGVueHIv
UGxhdGZvcm1YUi5jcHAgQG5vLXVuaWZ5CiAKIHBsdWdpbnMvRE9NTWltZVR5cGUuY3BwCiBwbHVn
aW5zL0RPTU1pbWVUeXBlQXJyYXkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjI0NjljOTI3ODAwNTUwNGMxNzRiZDM4ZGZm
YmQ4MTZkOGE0ZWEyNS4uZmMxYzJmMjRhZWZhZTk3YzBjY2M4ODBmMDdkYzVmNmQwOGJkNWUwYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNDgwMiw4ICs0ODAyLDYgQEAKIAkJRTFCQTY3MUExNzQyQkVGNDAwQzIwMjUxIC8qIFdl
YkNvcmVUZXN0U2hpbUxpYnJhcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTFCQTY3MTkxNzQyQkVGNDAwQzIwMjUxIC8qIFdlYkNvcmVUZXN0U2hp
bUxpYnJhcnkuY3BwICovOyB9OwogCQlFMUJEMzMxQTE4MkQ4REREMDBDMDVEOUYgLyogQ3J5cHRv
QWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxQkQzMzE4MTgyRDhEREQwMEMwNUQ5RiAvKiBDcnlwdG9BbGdv
cml0aG1SU0FTU0FfUEtDUzFfdjFfNS5oICovOyB9OwogCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5
NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMUJFNTEyQzBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0
LmggKi87IH07Ci0JCUUxQzFBMzlEMjQ4MDA4MDgwMEUwQUY2NiAvKiBQbGF0Zm9ybVhST3BlblhS
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQzFB
MzlCMjQ4MDA4MDYwMEUwQUY2NiAvKiBQbGF0Zm9ybVhST3BlblhSLmNwcCAqLzsgfTsKLQkJRTFD
MUEzOUUyNDgwMDgwODAwRTBBRjY2IC8qIFBsYXRmb3JtWFJPcGVuWFIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQzFBMzlDMjQ4MDA4MDcwMEUwQUY2
NiAvKiBQbGF0Zm9ybVhST3BlblhSLmggKi87IH07CiAJCUUxQzI2NkRGMTgzMTlGMzEwMDNGOEIz
MyAvKiBDcnlwdG9LZXlSU0FDb21wb25lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMUMyNjZERDE4MzE5RjMxMDAzRjhCMzMgLyogQ3J5cHRvS2V5
UlNBQ29tcG9uZW50cy5oICovOyB9OwogCQlFMUMzNjJFRjBFQUYyQUE5MDA3NDEwQkMgLyogSlNX
b3JrZXJMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTFDMzYyRUQwRUFGMkFBOTAwNzQxMEJDIC8qIEpTV29ya2VyTG9jYXRpb24uaCAqLzsg
fTsKIAkJRTFDMzZDMDMwRUIwNzZENjAwNzQxMEJDIC8qIEpTRE9NR2xvYmFsT2JqZWN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUMzNkMwMjBFQjA3
NkQ2MDA3NDEwQkMgLyogSlNET01HbG9iYWxPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDgyMCw2ICs0ODE4LDggQEAKIAkJRTFFNkVF
QTgwQjYyOERCMzAwNUYyRjcwIC8qIEpTSFRNTFNlbGVjdEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRTZFRUE3MEI2MjhEQjMwMDVGMkY3
MCAvKiBKU0hUTUxTZWxlY3RFbGVtZW50LmggKi87IH07CiAJCUUxRUMyOUEwMEJCMDRDNkIwMEVB
MTg3QiAvKiBYUGF0aE5vZGVTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxRUMyOTlFMEJCMDRDNkIwMEVBMTg3QiAvKiBYUGF0aE5vZGVTZXQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMUVEOEFD
MzBDQzQ5QkUwMDBCRkM1NTcgLyogQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFRDhBQzIwQ0M0OUJFMDAw
QkZDNTU3IC8qIENTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMUVFOEI3MDI0MTJCMkE4MDBFNzk0RDYg
LyogUGxhdGZvcm1YUi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMUVFOEI2QzI0MTJCMkE3MDBFNzk0RDYgLyogUGxhdGZvcm1YUi5jcHAgKi87IH07
CisJCUUxRUU4QjcxMjQxMkIyQTgwMEU3OTRENiAvKiBQbGF0Zm9ybVhSLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRUU4QjZFMjQxMkIyQTcwMEU3
OTRENiAvKiBQbGF0Zm9ybVhSLmNwcCAqLzsgfTsKIAkJRTFFRThCNzIyNDEyQjJBODAwRTc5NEQ2
IC8qIFBsYXRmb3JtWFIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxRUU4QjZGMjQxMkIyQTcwMEU3OTRENiAvKiBQbGF0Zm9ybVhSLmggKi87IH07CiAJ
CUUxRUU4Qjc2MjQxMzE5MUYwMEU3OTRENiAvKiBXZWJYUlZpZXdlclBvc2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRUU4QUM3MjQxMkIxNkYwMEU3
OTRENiAvKiBXZWJYUlZpZXdlclBvc2UuaCAqLzsgfTsKIAkJRTFFRThCNzcyNDEzMTkxRjAwRTc5
NEQ2IC8qIFhSUmVmZXJlbmNlU3BhY2VUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVFOEFDOTI0MTJCMTcwMDBFNzk0RDYgLyogWFJSZWZlcmVu
Y2VTcGFjZVR5cGUuaCAqLzsgfTsKQEAgLTE1MzA1LDggKzE1MzA1LDYgQEAKIAkJRTFCRDMzMTgx
ODJEOERERDAwQzA1RDlGIC8qIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NT
MV92MV81Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQkU1MTJCMENGNkM1MTIw
MDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gWFNMVFVuaWNvZGVTb3J0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTFCRTUxMkMwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYU0xUVW5pY29kZVNvcnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFDMUEzOUIyNDgwMDgwNjAwRTBBRjY2IC8qIFBsYXRmb3Jt
WFJPcGVuWFIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZv
cm1YUk9wZW5YUi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxQzFBMzlDMjQ4
MDA4MDcwMEUwQUY2NiAvKiBQbGF0Zm9ybVhST3BlblhSLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBsYXRmb3JtWFJPcGVuWFIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTFDMjY2RDYxODMxN0FCNDAwM0Y4QjMzIC8qIENyeXB0b0FsZ29yaXRobVJTQVNTQV9Q
S0NTMV92MV81TWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENy
eXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTFDMjY2REMxODMxOUYzMTAwM0Y4QjMzIC8qIENyeXB0b0tleVJTQUNvbXBv
bmVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvS2V5
UlNBQ29tcG9uZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQzI2NkRE
MTgzMTlGMzEwMDNGOEIzMyAvKiBDcnlwdG9LZXlSU0FDb21wb25lbnRzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0tleVJTQUNvbXBvbmVudHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NDE5LDYgKzE1NDE3LDggQEAKIAkJRTFFRThCMTYyNDEy
QjE3MDAwRTc5NEQ2IC8qIFhSUG9zZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gWFJQb3Nl
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFFRThCMTcyNDEyQjE3MDAwRTc5
NEQ2IC8qIFdlYlhSSW5wdXRTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViWFJJbnB1dFNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUVF
OEIxODI0MTJCMTcwMDBFNzk0RDYgLyogWFJJbnB1dFNvdXJjZUFycmF5LmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBYUklucHV0U291cmNlQXJyYXkuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFMUVFOEI2QzI0MTJCMkE3MDBFNzk0RDYgLyogUGxhdGZvcm1YUi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybVhSLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTFFRThCNkUyNDEyQjJBNzAwRTc5NEQ2IC8qIFBsYXRm
b3JtWFIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1Y
Ui5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRUU4QjZGMjQxMkIyQTcwMEU3
OTRENiAvKiBQbGF0Zm9ybVhSLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBs
YXRmb3JtWFIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFGMUU4MkQwQzNDMkJC
OTAwNkRCMzkxIC8qIFhTTFRFeHRlbnNpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFhTTFRFeHRlbnNpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTFGMUU4MkUwQzNDMkJCOTAwNkRCMzkxIC8qIFhTTFRFeHRlbnNpb25zLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhTTFRFeHRlbnNpb25zLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yNzU1Myw2ICsyNzU1Myw3IEBACiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUUxRUU4QjZEMjQxMkIyQTcwMEU3OTRENiAvKiBvcGVu
eHIgKi8sCisJCQkJRTFFRThCNkMyNDEyQjJBNzAwRTc5NEQ2IC8qIFBsYXRmb3JtWFIuY3BwICov
LAogCQkJCUUxRUU4QjZGMjQxMkIyQTcwMEU3OTRENiAvKiBQbGF0Zm9ybVhSLmggKi8sCiAJCQkp
OwogCQkJcGF0aCA9IHhyOwpAQCAtMjc1NjEsOCArMjc1NjIsNyBAQAogCQlFMUVFOEI2RDI0MTJC
MkE3MDBFNzk0RDYgLyogb3BlbnhyICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKLQkJCQlFMUMxQTM5QjI0ODAwODA2MDBFMEFGNjYgLyogUGxhdGZvcm1YUk9wZW5Y
Ui5jcHAgKi8sCi0JCQkJRTFDMUEzOUMyNDgwMDgwNzAwRTBBRjY2IC8qIFBsYXRmb3JtWFJPcGVu
WFIuaCAqLywKKwkJCQlFMUVFOEI2RTI0MTJCMkE3MDBFNzk0RDYgLyogUGxhdGZvcm1YUi5jcHAg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IG9wZW54cjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CkBAIC0zMjUwMiw3ICszMjUwMiw2IEBACiAJCQkJNTJCMEQ0QkUxQzU3RkQxRTAwNzdDRTUzIC8q
IFBsYXRmb3JtVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1QzQ3NkIwOUFDNEQ0RjAwQTZB
QUI0IC8qIFBsYXRmb3JtV2hlZWxFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFRThCNzIy
NDEyQjJBODAwRTc5NEQ2IC8qIFBsYXRmb3JtWFIuaCBpbiBIZWFkZXJzICovLAotCQkJCUUxQzFB
MzlFMjQ4MDA4MDgwMEUwQUY2NiAvKiBQbGF0Zm9ybVhST3BlblhSLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3MTJCRTQ4MDFGRTg2NEE3MDAyMDMxQ0MgLyogUGxheWJhY2tEaXJlY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEQTI5QTMyMUNDMDFBOTUwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VBVktpdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBMjlBMTcxQ0JEQTU2QzAw
OTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zNDQwMSw3ICszNDQwMCw4IEBACiAJCQkJRTE2OTgyNjAxMTM0NjM2QTAwODk0MTE1IC8qIE9i
akNSdW50aW1lT2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0VBMjg0NjYyMTQxRTg0OTAw
RTQwN0U4IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QUExMkRGNDkxNzQzREY4MzAwNERBRkRGIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJT1Mu
bW0gaW4gU291cmNlcyAqLywKLQkJCQlFMUMxQTM5RDI0ODAwODA4MDBFMEFGNjYgLyogUGxhdGZv
cm1YUk9wZW5YUi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMUVFOEI3MTI0MTJCMkE4MDBFNzk0
RDYgLyogUGxhdGZvcm1YUi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMUVFOEI3MDI0MTJCMkE4
MDBFNzk0RDYgLyogUGxhdGZvcm1YUi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREEyOUEzMDFD
QkY3NEQ0MDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0gaW4gU291
cmNlcyAqLywKIAkJCQlDREEyOUExNjFDQkRBNTZDMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5MjQyNDkyMTI3QjkzRTAwNjM0
RkNGIC8qIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKaW5kZXggZGZhN2FlYWVjMTc5NmM4ZmEwNGVjMzhj
OGYzZmJhNDk5NmMyZWNkMC4uOGRkMGVhNTVjMmNiYmJhYWU0NjkzZTNhZmY5YTdmNjk5NzE5YzM5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaApAQCAtMTE1LDcgKzExNSw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBNKFdlYkdQVSkgXAogICAgIE0oV2ViUlRDKSBcCiAgICAgTShX
ZWJSVENTdGF0cykgXAotICAgIE0oWFIpIFwKICAgICBNKFdoZWVsRXZlbnRUZXN0TW9uaXRvcikg
XAogCiAjdW5kZWYgREVDTEFSRV9MT0dfQ0hBTk5FTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94
ci9QbGF0Zm9ybVhSLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Yzk4Y2M1ZTMwNDFkNzBjZDRjYzQ1ODhhMjNi
OTBjMzY3MDVhYjRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
eHIvUGxhdGZvcm1YUi5jcHAKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBJZ2FsaWEsIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Y
Ui5oIgorCituYW1lc3BhY2UgUGxhdGZvcm1YUiB7CisKKyNpZiBFTkFCTEUoV0VCWFIpCisKK0Rl
dmljZTo6RGV2aWNlSWQgSW5zdGFuY2U6Om5leHREZXZpY2VJZCgpCit7CisgICAgc3RhdGljIERl
dmljZTo6RGV2aWNlSWQgc19uZXh0RGV2aWNlSWQgeyAwIH07CisgICAgcmV0dXJuIHNfbmV4dERl
dmljZUlkKys7Cit9CisKK0RldmljZTo6RGV2aWNlKCkKKyAgICA6IG1faWQoSW5zdGFuY2U6Om5l
eHREZXZpY2VJZCgpKQoreworfQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQorCit9IC8vIG5h
bWVzcGFjZSBQbGF0Zm9ybVhSCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94
ci9QbGF0Zm9ybVhSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgK
aW5kZXggZDViNTdkZTUwNzhjMzE1YTNiZDBjNGQzNWZmZmMxYjJhNWJkZDE0OS4uMGIwNDEzYmNi
NTg3YjlmMTRhYjM0MGNkYTRlNDllOWIwNmU5NGY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3hyL1BsYXRmb3JtWFIuaApAQCAtNDUsMjcgKzQ1LDM0IEBAIGNsYXNzIERldmljZSA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxEZXZpY2U+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEZXZpY2UpOwogcHVibGljOgotICAgIHZpcnR1YWwg
fkRldmljZSgpID0gZGVmYXVsdDsKKyAgICB1c2luZyBEZXZpY2VJZCA9IHVpbnQzMl90OworICAg
IERldmljZSgpOworICAgIERldmljZUlkIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQogCiAg
ICAgdXNpbmcgTGlzdE9mRW5hYmxlZEZlYXR1cmVzID0gVmVjdG9yPFJlZmVyZW5jZVNwYWNlVHlw
ZT47CiAgICAgYm9vbCBzdXBwb3J0cyhTZXNzaW9uTW9kZSBtb2RlKSBjb25zdCB7IHJldHVybiBt
X2VuYWJsZWRGZWF0dXJlc01hcC5jb250YWlucyhtb2RlKTsgfQogICAgIHZvaWQgc2V0RW5hYmxl
ZEZlYXR1cmVzKFNlc3Npb25Nb2RlIG1vZGUsIGNvbnN0IExpc3RPZkVuYWJsZWRGZWF0dXJlcyYg
ZmVhdHVyZXMpIHsgbV9lbmFibGVkRmVhdHVyZXNNYXAuc2V0KG1vZGUsIGZlYXR1cmVzKTsgfQog
ICAgIExpc3RPZkVuYWJsZWRGZWF0dXJlcyBlbmFibGVkRmVhdHVyZXMoU2Vzc2lvbk1vZGUgbW9k
ZSkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkRmVhdHVyZXNNYXAuZ2V0KG1vZGUpOyB9CiAKLXBy
b3RlY3RlZDoKLSAgICBEZXZpY2UoKSA9IGRlZmF1bHQ7CisgICAgaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBEZXZpY2UmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2lkID09IG90aGVyLm1f
aWQ7IH0KIAorcHJvdGVjdGVkOgogICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIu
aW8vd2VieHIvI3hyLWRldmljZS1jb25jZXB0CiAgICAgLy8gRWFjaCBYUiBkZXZpY2UgaGFzIGEg
bGlzdCBvZiBlbmFibGVkIGZlYXR1cmVzIGZvciBlYWNoIFhSU2Vzc2lvbk1vZGUgaW4gaXRzIGxp
c3Qgb2Ygc3VwcG9ydGVkIG1vZGVzLAogICAgIC8vIHdoaWNoIGlzIGEgbGlzdCBvZiBmZWF0dXJl
IGRlc2NyaXB0b3JzIHdoaWNoIE1VU1QgYmUgaW5pdGlhbGx5IGFuIGVtcHR5IGxpc3QuCiAgICAg
dXNpbmcgRW5hYmxlZEZlYXR1cmVzUGVyTW9kZU1hcCA9IFdURjo6SGFzaE1hcDxTZXNzaW9uTW9k
ZSwgTGlzdE9mRW5hYmxlZEZlYXR1cmVzLCBXVEY6OkludEhhc2g8U2Vzc2lvbk1vZGU+LCBXVEY6
OlN0cm9uZ0VudW1IYXNoVHJhaXRzPFNlc3Npb25Nb2RlPj47CiAgICAgRW5hYmxlZEZlYXR1cmVz
UGVyTW9kZU1hcCBtX2VuYWJsZWRGZWF0dXJlc01hcDsKKworcHJpdmF0ZToKKyAgICBEZXZpY2VJ
ZCBtX2lkOwogfTsKIAogY2xhc3MgSW5zdGFuY2UgewogcHVibGljOgogICAgIHN0YXRpYyBJbnN0
YW5jZSYgc2luZ2xldG9uKCk7CiAKKyAgICBzdGF0aWMgRGV2aWNlOjpEZXZpY2VJZCBuZXh0RGV2
aWNlSWQoKTsKKwogICAgIHZvaWQgZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKCk7CiAgICAg
Y29uc3QgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXZpY2U+PiYgaW1tZXJzaXZlWFJEZXZpY2Vz
KCkgY29uc3QgeyByZXR1cm4gbV9pbW1lcnNpdmVYUkRldmljZXM7IH0KIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUi5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGE2NDcwNTBmOTdlODYzZTU2ZjI1OTI4YjU1YWQ5ZjYyOWEyYThjZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhSLmNw
cApAQCAtMCwwICsxLDIzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEsIFMu
TC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFpbnQgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1YUi5oIgorCisjaWYgRU5B
QkxFKFdFQlhSKQorCisjaWYgVVNFX09QRU5YUgorI2luY2x1ZGUgPG9wZW54ci9vcGVueHIuaD4K
KyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25j
YXRlbmF0ZU51bWJlcnMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNlbmRp
ZiAvLyBVU0VfT1BFTlhSCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVz
cGFjZSBQbGF0Zm9ybVhSIHsKKworI2lmIFVTRV9PUEVOWFIKKwordGVtcGxhdGU8dHlwZW5hbWUg
VCwgWHJTdHJ1Y3R1cmVUeXBlIFN0cnVjdHVyZVR5cGU+CitUIGNyZWF0ZVN0cnVjdHVyZSgpCit7
CisgICAgVCBvYmplY3Q7CisgICAgc3RkOjptZW1zZXQoJm9iamVjdCwgMCwgc2l6ZW9mKFQpKTsK
KyAgICBvYmplY3QudHlwZSA9IFN0cnVjdHVyZVR5cGU7CisgICAgb2JqZWN0Lm5leHQgPSBudWxs
cHRyOworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cmluZyByZXN1bHRUb1N0cmluZyhYclJl
c3VsdCB2YWx1ZSwgWHJJbnN0YW5jZSBpbnN0YW5jZSkKK3sKKyAgICBjaGFyIGJ1ZmZlcltYUl9N
QVhfUkVTVUxUX1NUUklOR19TSVpFXTsKKyAgICBYclJlc3VsdCByZXN1bHQgPSB4clJlc3VsdFRv
U3RyaW5nKGluc3RhbmNlLCB2YWx1ZSwgYnVmZmVyKTsKKyAgICBpZiAocmVzdWx0ID09IFhSX1NV
Q0NFU1MpCisgICAgICAgIHJldHVybiBTdHJpbmcoYnVmZmVyKTsKKyAgICByZXR1cm4gbWFrZVN0
cmluZygiPHVua25vd24gIiwgaW50KHZhbHVlKSwgIj4iKTsKK30KKworI2RlZmluZSBSRVRVUk5f
SUZfRkFJTEVEKHJlc3VsdCwgY2FsbCwgaW5zdGFuY2UpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKFhSX0ZBSUxFRChyZXN1bHQp
KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgV1RGTG9nQWx3YXlzKCIlcyAlczogJXNcbiIs
IF9fZnVuY19fLCBjYWxsLCByZXN1bHRUb1N0cmluZyhyZXN1bHQsIGluc3RhbmNlKS51dGY4KCku
ZGF0YSgpKTsgXAorICAgICAgICByZXR1cm47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKworI2VuZGlm
IC8vIFVTRV9PUEVOWFIKKworc3RydWN0IEluc3RhbmNlOjpJbXBsIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBJbXBsKCk7CisgICAgfkltcGwoKTsKKworI2lm
IFVTRV9PUEVOWFIKKyAgICBPcHRpb25hbDxWZWN0b3I8U2Vzc2lvbk1vZGU+PiBjb2xsZWN0U3Vw
cG9ydGVkU2Vzc2lvbk1vZGVzKERldmljZSYsIFhyU3lzdGVtSWQpOworICAgIFhySW5zdGFuY2Ug
bV9pbnN0YW5jZSB7IFhSX05VTExfSEFORExFIH07CisjZW5kaWYgLy8gVVNFX09QRU5YUgorfTsK
KworSW5zdGFuY2U6OkltcGw6OkltcGwoKQoreworI2lmIFVTRV9PUEVOWFIKKyAgICBXVEZMb2dB
bHdheXMoIk9wZW5YUjogaW5pdGlhbGl6aW5nXG4iKTsKKworICAgIFsmXSB7CisgICAgICAgIHVp
bnQzMl90IHByb3BlcnR5Q291bnRPdXRwdXQgeyAwIH07CisgICAgICAgIFhyUmVzdWx0IHJlc3Vs
dCA9IHhyRW51bWVyYXRlQXBpTGF5ZXJQcm9wZXJ0aWVzKDAsICZwcm9wZXJ0eUNvdW50T3V0cHV0
LCBudWxscHRyKTsKKyAgICAgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4ckVudW1lcmF0
ZUFwaUxheWVyUHJvcGVydGllcygpIiwgbV9pbnN0YW5jZSk7CisKKyAgICAgICAgaWYgKCFwcm9w
ZXJ0eUNvdW50T3V0cHV0KSB7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoInhyRW51bWVyYXRl
QXBpTGF5ZXJQcm9wZXJ0aWVzKCk6IG5vIHByb3BlcnRpZXNcbiIpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgVmVjdG9yPFhyQXBpTGF5ZXJQcm9wZXJ0aWVzPiBw
cm9wZXJ0aWVzKHByb3BlcnR5Q291bnRPdXRwdXQpOworICAgICAgICByZXN1bHQgPSB4ckVudW1l
cmF0ZUFwaUxheWVyUHJvcGVydGllcyhwcm9wZXJ0eUNvdW50T3V0cHV0LCBudWxscHRyLCBwcm9w
ZXJ0aWVzLmRhdGEoKSk7CisgICAgICAgIFJFVFVSTl9JRl9GQUlMRUQocmVzdWx0LCAieHJFbnVt
ZXJhdGVBcGlMYXllclByb3BlcnRpZXMoKSIsIG1faW5zdGFuY2UpOworCisgICAgICAgIFdURkxv
Z0Fsd2F5cygieHJFbnVtZXJhdGVBcGlMYXllclByb3BlcnRpZXMoKTogJXp1IHByb3BlcnRpZXNc
biIsIHByb3BlcnRpZXMuc2l6ZSgpKTsKKyAgICB9KCk7CisKKyAgICBbJl0geworICAgICAgICB1
aW50MzJfdCBwcm9wZXJ0eUNvdW50T3V0cHV0IHsgMCB9OworICAgICAgICBYclJlc3VsdCByZXN1
bHQgPSB4ckVudW1lcmF0ZUluc3RhbmNlRXh0ZW5zaW9uUHJvcGVydGllcyhudWxscHRyLCAwLCAm
cHJvcGVydHlDb3VudE91dHB1dCwgbnVsbHB0cik7CisgICAgICAgIFJFVFVSTl9JRl9GQUlMRUQo
cmVzdWx0LCAieHJFbnVtZXJhdGVJbnN0YW5jZUV4dGVuc2lvblByb3BlcnRpZXMoKSIsIG1faW5z
dGFuY2UpOworCisgICAgICAgIGlmICghcHJvcGVydHlDb3VudE91dHB1dCkgeworICAgICAgICAg
ICAgV1RGTG9nQWx3YXlzKCJ4ckVudW1lcmF0ZUluc3RhbmNlRXh0ZW5zaW9uUHJvcGVydGllcygp
OiBubyBwcm9wZXJ0aWVzXG4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIFZlY3RvcjxYckV4dGVuc2lvblByb3BlcnRpZXM+IHByb3BlcnRpZXMocHJvcGVydHlD
b3VudE91dHB1dCwKKyAgICAgICAgICAgIFtdIHsKKyAgICAgICAgICAgICAgICBYckV4dGVuc2lv
blByb3BlcnRpZXMgb2JqZWN0OworICAgICAgICAgICAgICAgIHN0ZDo6bWVtc2V0KCZvYmplY3Qs
IDAsIHNpemVvZihYckV4dGVuc2lvblByb3BlcnRpZXMpKTsKKyAgICAgICAgICAgICAgICBvYmpl
Y3QudHlwZSA9IFhSX1RZUEVfRVhURU5TSU9OX1BST1BFUlRJRVM7CisgICAgICAgICAgICAgICAg
cmV0dXJuIG9iamVjdDsKKyAgICAgICAgICAgIH0oKSk7CisgICAgICAgIHVpbnQzMl90IHByb3Bl
cnR5Q291bnRXcml0dGVuIHsgMCB9OworICAgICAgICByZXN1bHQgPSB4ckVudW1lcmF0ZUluc3Rh
bmNlRXh0ZW5zaW9uUHJvcGVydGllcyhudWxscHRyLCBwcm9wZXJ0eUNvdW50T3V0cHV0LCAmcHJv
cGVydHlDb3VudFdyaXR0ZW4sIHByb3BlcnRpZXMuZGF0YSgpKTsKKyAgICAgICAgUkVUVVJOX0lG
X0ZBSUxFRChyZXN1bHQsICJ4ckVudW1lcmF0ZUluc3RhbmNlRXh0ZW5zaW9uUHJvcGVydGllcygp
IiwgbV9pbnN0YW5jZSk7CisKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJ4ckVudW1lcmF0ZUluc3Rh
bmNlRXh0ZW5zaW9uUHJvcGVydGllcygpOiAlenUgZXh0ZW5zaW9uIHByb3BlcnRpZXNcbiIsIHBy
b3BlcnRpZXMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvJiBwcm9wZXJ0eSA6IHByb3BlcnRp
ZXMpIHsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiICBleHRlbnNpb24gJyVzJywgdmVyc2lv
biAldVxuIiwKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eS5leHRlbnNpb25OYW1lLCBwcm9wZXJ0
eS5leHRlbnNpb25WZXJzaW9uKTsKKyAgICAgICAgfQorICAgIH0oKTsKKworICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBzX2FwcGxpY2F0aW9uTmFtZSA9ICJXZWJYUiAoV2ViS2l0KSI7CisgICAgc3Rh
dGljIGNvbnN0IHVpbnQzMl90IHNfYXBwbGljYXRpb25WZXJzaW9uID0gMTsKKworICAgIHsKKyAg
ICAgICAgYXV0byBjcmVhdGVJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhySW5zdGFuY2VDcmVhdGVJ
bmZvLCBYUl9UWVBFX0lOU1RBTkNFX0NSRUFURV9JTkZPPigpOworICAgICAgICBjcmVhdGVJbmZv
LmNyZWF0ZUZsYWdzID0gMDsKKyAgICAgICAgc3RkOjptZW1jcHkoY3JlYXRlSW5mby5hcHBsaWNh
dGlvbkluZm8uYXBwbGljYXRpb25OYW1lLCBzX2FwcGxpY2F0aW9uTmFtZSwgWFJfTUFYX0FQUExJ
Q0FUSU9OX05BTUVfU0laRSk7CisgICAgICAgIGNyZWF0ZUluZm8uYXBwbGljYXRpb25JbmZvLmFw
aVZlcnNpb24gPSBYUl9DVVJSRU5UX0FQSV9WRVJTSU9OOworICAgICAgICBjcmVhdGVJbmZvLmFw
cGxpY2F0aW9uSW5mby5hcHBsaWNhdGlvblZlcnNpb24gPSBzX2FwcGxpY2F0aW9uVmVyc2lvbjsK
KyAgICAgICAgY3JlYXRlSW5mby5lbmFibGVkQXBpTGF5ZXJDb3VudCA9IDA7CisgICAgICAgIGNy
ZWF0ZUluZm8uZW5hYmxlZEV4dGVuc2lvbkNvdW50ID0gMDsKKworICAgICAgICBYckluc3RhbmNl
IGluc3RhbmNlOworICAgICAgICBYclJlc3VsdCByZXN1bHQgPSB4ckNyZWF0ZUluc3RhbmNlKCZj
cmVhdGVJbmZvLCAmaW5zdGFuY2UpOworICAgICAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwg
InhyQ3JlYXRlSW5zdGFuY2UoKSIsIG1faW5zdGFuY2UpOworCisgICAgICAgIG1faW5zdGFuY2Ug
PSBpbnN0YW5jZTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJ4ckNyZWF0ZUluc3RhbmNlKCk6IHVz
aW5nIGluc3RhbmNlICVwXG4iLCBtX2luc3RhbmNlKTsKKyAgICB9CisjZW5kaWYgLy8gVVNFX09Q
RU5YUgorfQorCitJbnN0YW5jZTo6SW1wbDo6fkltcGwoKQoreworfQorCisjaWYgVVNFX09QRU5Y
UgorCitPcHRpb25hbDxWZWN0b3I8U2Vzc2lvbk1vZGU+PiBJbnN0YW5jZTo6SW1wbDo6Y29sbGVj
dFN1cHBvcnRlZFNlc3Npb25Nb2RlcyhEZXZpY2UmIGRldmljZSwgWHJTeXN0ZW1JZCBzeXN0ZW1J
ZCkKK3sKKyAgICB1aW50MzJfdCB2aWV3Q29uZmlndXJhdGlvbkNvdW50OworICAgIFhyUmVzdWx0
IHJlc3VsdCA9IHhyRW51bWVyYXRlVmlld0NvbmZpZ3VyYXRpb25zKG1faW5zdGFuY2UsIHN5c3Rl
bUlkLCAwLCAmdmlld0NvbmZpZ3VyYXRpb25Db3VudCwgbnVsbHB0cik7CisgICAgaWYgKHJlc3Vs
dCAhPSBYUl9TVUNDRVNTKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygieHJFbnVtZXJhdGVWaWV3
Q29uZmlndXJhdGlvbnMoKTogZXJyb3IgJXNcbiIsIHJlc3VsdFRvU3RyaW5nKHJlc3VsdCwgbV9p
bnN0YW5jZSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgfQorCisgICAgWHJWaWV3Q29uZmlndXJhdGlvblR5cGUgdmlld0NvbmZpZ3VyYXRpb25zW3Zp
ZXdDb25maWd1cmF0aW9uQ291bnRdOworICAgIHJlc3VsdCA9IHhyRW51bWVyYXRlVmlld0NvbmZp
Z3VyYXRpb25zKG1faW5zdGFuY2UsIHN5c3RlbUlkLCB2aWV3Q29uZmlndXJhdGlvbkNvdW50LCAm
dmlld0NvbmZpZ3VyYXRpb25Db3VudCwgdmlld0NvbmZpZ3VyYXRpb25zKTsKKyAgICBpZiAocmVz
dWx0ICE9IFhSX1NVQ0NFU1MpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJ4ckVudW1lcmF0ZVZp
ZXdDb25maWd1cmF0aW9ucygpOiBlcnJvciAlc1xuIiwgcmVzdWx0VG9TdHJpbmcocmVzdWx0LCBt
X2luc3RhbmNlKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJ4ckVudW1l
cmF0ZVZpZXdDb25maWd1cmF0aW9ucygpOiBlcnJvciAlc1xuIiwgcmVzdWx0VG9TdHJpbmcocmVz
dWx0LCBtX2luc3RhbmNlKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICB9CisKKyAgICBWZWN0b3I8U2Vzc2lvbk1vZGU+IHN1cHBvcnRlZE1vZGVzOwor
ICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCB2aWV3Q29uZmlndXJhdGlvbkNvdW50OyArK2kp
IHsKKyAgICAgICAgYXV0byB2aWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXMgPSBjcmVhdGVTdHJ1
Y3R1cmU8WHJWaWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXMsIFhSX1RZUEVfVklFV19DT05GSUdV
UkFUSU9OX1BST1BFUlRJRVM+KCk7CisgICAgICAgIHJlc3VsdCA9IHhyR2V0Vmlld0NvbmZpZ3Vy
YXRpb25Qcm9wZXJ0aWVzKG1faW5zdGFuY2UsIHN5c3RlbUlkLCB2aWV3Q29uZmlndXJhdGlvbnNb
aV0sICZ2aWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXMpOworICAgICAgICBpZiAocmVzdWx0ICE9
IFhSX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygieHJHZXRWaWV3Q29uZmln
dXJhdGlvblByb3BlcnRpZXMoKTogZXJyb3IgJXNcbiIsIHJlc3VsdFRvU3RyaW5nKHJlc3VsdCwg
bV9pbnN0YW5jZSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICB9CisgICAgICAgIGlmICh2aWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXMu
dmlld0NvbmZpZ3VyYXRpb25UeXBlID09IFhSX1ZJRVdfQ09ORklHVVJBVElPTl9UWVBFX1BSSU1B
UllfTU9OTykKKyAgICAgICAgICAgIHN1cHBvcnRlZE1vZGVzLmFwcGVuZChTZXNzaW9uTW9kZTo6
SW1tZXJzaXZlQXIpOworICAgICAgICBlbHNlIGlmICh2aWV3Q29uZmlndXJhdGlvblByb3BlcnRp
ZXMudmlld0NvbmZpZ3VyYXRpb25UeXBlID09IFhSX1ZJRVdfQ09ORklHVVJBVElPTl9UWVBFX1BS
SU1BUllfU1RFUkVPKQorICAgICAgICAgICAgc3VwcG9ydGVkTW9kZXMuYXBwZW5kKFNlc3Npb25N
b2RlOjpJbW1lcnNpdmVWcik7CisgICAgfQorICAgIHJldHVybiBzdXBwb3J0ZWRNb2RlczsKK30K
KworI2VuZGlmIC8vIFVTRV9PUEVOWFIKKworSW5zdGFuY2UmIEluc3RhbmNlOjpzaW5nbGV0b24o
KQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8SW5zdGFuY2U+IHNfaW5zdGFuY2U7
CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIHNfb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29u
Y2Uoc19vbmNlRmxhZywKKyAgICAgICAgWyZdIHsKKyAgICAgICAgICAgIHNfaW5zdGFuY2UtPm1f
aW1wbCA9IG1ha2VVbmlxdWU8SW1wbD4oKTsKKyAgICAgICAgfSk7CisgICAgcmV0dXJuIHNfaW5z
dGFuY2UuZ2V0KCk7Cit9CisKK0luc3RhbmNlOjpJbnN0YW5jZSgpID0gZGVmYXVsdDsKK0luc3Rh
bmNlOjp+SW5zdGFuY2UoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgSW5zdGFuY2U6OmVudW1lcmF0ZUlt
bWVyc2l2ZVhSRGV2aWNlcygpCit7CisjaWYgVVNFX09QRU5YUgorICAgIGlmIChtX2ltcGwtPm1f
aW5zdGFuY2UgPT0gWFJfTlVMTF9IQU5ETEUpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCIlcyBV
bmFibGUgdG8gZW51bWVyYXRlIFhSIGRldmljZXMuIE5vIFhySW5zdGFuY2UgcHJlc2VudFxuIiwg
X19GVU5DVElPTl9fKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gc3lzdGVt
R2V0SW5mbyA9IGNyZWF0ZVN0cnVjdHVyZTxYclN5c3RlbUdldEluZm8sIFhSX1RZUEVfU1lTVEVN
X0dFVF9JTkZPPigpOworICAgIHN5c3RlbUdldEluZm8uZm9ybUZhY3RvciA9IFhSX0ZPUk1fRkFD
VE9SX0hFQURfTU9VTlRFRF9ESVNQTEFZOworCisgICAgWHJTeXN0ZW1JZCBzeXN0ZW1JZDsKKyAg
ICBYclJlc3VsdCByZXN1bHQgPSB4ckdldFN5c3RlbShtX2ltcGwtPm1faW5zdGFuY2UsICZzeXN0
ZW1HZXRJbmZvLCAmc3lzdGVtSWQpOworICAgIGlmIChyZXN1bHQgIT0gWFJfU1VDQ0VTUykgewor
ICAgICAgICBXVEZMb2dBbHdheXMoInhyR2V0U3lzdGVtKCk6IGVycm9yICVzXG4iLCByZXN1bHRU
b1N0cmluZyhyZXN1bHQsIG1faW1wbC0+bV9pbnN0YW5jZSkudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGRldmljZSA9IG1ha2VVbmlxdWU8RGV2aWNl
PigpOworICAgIGF1dG8gc2Vzc2lvbk1vZGVzID0gbV9pbXBsLT5jb2xsZWN0U3VwcG9ydGVkU2Vz
c2lvbk1vZGVzKCpkZXZpY2UsIHN5c3RlbUlkKTsKKyAgICBpZiAoc2Vzc2lvbk1vZGVzKSB7Cisg
ICAgICAgIGZvciAoYXV0byYgbW9kZSA6IHNlc3Npb25Nb2Rlcy52YWx1ZSgpKSB7CisgICAgICAg
ICAgICAvLyBUT0RPOiBmaWxsIGluIGZlYXR1cmVzCisgICAgICAgICAgICBkZXZpY2UtPnNldEVu
YWJsZWRGZWF0dXJlcyhtb2RlLCB7IH0pOworICAgICAgICB9CisgICAgfQorCisgICAgbV9pbW1l
cnNpdmVYUkRldmljZXMuYXBwZW5kKFdURk1vdmUoZGV2aWNlKSk7CisjZW5kaWYgLy8gVVNFX09Q
RU5YUgorfQorCit9IC8vIG5hbWVzcGFjZSBQbGF0Zm9ybVhSCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxh
dGZvcm1YUk9wZW5YUi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxh
dGZvcm1YUk9wZW5YUi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlY2ZhYjA3
ODdhNDdhZjg0MTcxMGNiMGU1NTBkNDYwOTdlNDYyZTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L1BsYXRmb3JtWFJPcGVuWFIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjU2ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhLCBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlBsYXRmb3JtWFJPcGVuWFIuaCIKLQotI2lmIEVOQUJMRShXRUJYUikKLQotI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKLSNpZiBVU0VfT1BFTlhSCi0jaW5jbHVkZSA8d3RmL09wdGlvbmFs
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0jZW5kaWYgLy8gVVNFX09QRU5YUgotI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotCi1uYW1lc3BhY2UgUGxhdGZvcm1YUiB7Ci0KLSNp
ZiBVU0VfT1BFTlhSCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIFhyU3RydWN0dXJlVHlwZSBTdHJ1
Y3R1cmVUeXBlPgotVCBjcmVhdGVTdHJ1Y3R1cmUoKQotewotICAgIFQgb2JqZWN0OwotICAgIHN0
ZDo6bWVtc2V0KCZvYmplY3QsIDAsIHNpemVvZihUKSk7Ci0gICAgb2JqZWN0LnR5cGUgPSBTdHJ1
Y3R1cmVUeXBlOwotICAgIG9iamVjdC5uZXh0ID0gbnVsbHB0cjsKLSAgICByZXR1cm4gb2JqZWN0
OwotfQotCi1TdHJpbmcgcmVzdWx0VG9TdHJpbmcoWHJSZXN1bHQgdmFsdWUsIFhySW5zdGFuY2Ug
aW5zdGFuY2UpCi17Ci0gICAgY2hhciBidWZmZXJbWFJfTUFYX1JFU1VMVF9TVFJJTkdfU0laRV07
Ci0gICAgWHJSZXN1bHQgcmVzdWx0ID0geHJSZXN1bHRUb1N0cmluZyhpbnN0YW5jZSwgdmFsdWUs
IGJ1ZmZlcik7Ci0gICAgaWYgKHJlc3VsdCA9PSBYUl9TVUNDRVNTKQotICAgICAgICByZXR1cm4g
U3RyaW5nKGJ1ZmZlcik7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoIjx1bmtub3duICIsIGludCh2
YWx1ZSksICI+Iik7Ci19Ci0KLSNkZWZpbmUgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsIGNhbGws
IGluc3RhbmNlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgaWYgKFhSX0ZBSUxFRChyZXN1bHQpKSB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
ICAgICBMT0coWFIsICIlcyAlczogJXNcbiIsIF9fZnVuY19fLCBjYWxsLCByZXN1bHRUb1N0cmlu
ZyhyZXN1bHQsIGluc3RhbmNlKS51dGY4KCkuZGF0YSgpKTsgXAotICAgICAgICByZXR1cm47ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0KLSNlbmRpZiAvLyBVU0VfT1BFTlhSCi0KLXN0cnVjdCBJbnN0YW5j
ZTo6SW1wbCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgSW1w
bCgpOwotICAgIH5JbXBsKCk7Ci0KLSNpZiBVU0VfT1BFTlhSCi0gICAgT3B0aW9uYWw8VmVjdG9y
PFNlc3Npb25Nb2RlPj4gY29sbGVjdFN1cHBvcnRlZFNlc3Npb25Nb2RlcyhPcGVuWFJEZXZpY2Um
KTsKLSAgICBYckluc3RhbmNlIHhySW5zdGFuY2UoKSBjb25zdCB7IHJldHVybiBtX2luc3RhbmNl
OyB9Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSNpZiBVU0VfT1BFTlhSCi0gICAgdm9pZCBlbnVtZXJh
dGVBcGlMYXllclByb3BlcnRpZXMoKSBjb25zdDsKLSAgICB2b2lkIGVudW1lcmF0ZUluc3RhbmNl
RXh0ZW5zaW9uUHJvcGVydGllcygpIGNvbnN0OwotCi0gICAgWHJJbnN0YW5jZSBtX2luc3RhbmNl
IHsgWFJfTlVMTF9IQU5ETEUgfTsKLSNlbmRpZiAvLyBVU0VfT1BFTlhSCi19OwotCi12b2lkIElu
c3RhbmNlOjpJbXBsOjplbnVtZXJhdGVBcGlMYXllclByb3BlcnRpZXMoKSBjb25zdAotewotI2lm
IFVTRV9PUEVOWFIKLSAgICB1aW50MzJfdCBwcm9wZXJ0eUNvdW50T3V0cHV0IHsgMCB9OwotICAg
IFhyUmVzdWx0IHJlc3VsdCA9IHhyRW51bWVyYXRlQXBpTGF5ZXJQcm9wZXJ0aWVzKDAsICZwcm9w
ZXJ0eUNvdW50T3V0cHV0LCBudWxscHRyKTsKLSAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwg
InhyRW51bWVyYXRlQXBpTGF5ZXJQcm9wZXJ0aWVzKCkiLCBtX2luc3RhbmNlKTsKLQotICAgIGlm
ICghcHJvcGVydHlDb3VudE91dHB1dCkgewotICAgICAgICBMT0coWFIsICJ4ckVudW1lcmF0ZUFw
aUxheWVyUHJvcGVydGllcygpOiBubyBwcm9wZXJ0aWVzXG4iKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIFZlY3RvcjxYckFwaUxheWVyUHJvcGVydGllcz4gcHJvcGVydGllcyhwcm9w
ZXJ0eUNvdW50T3V0cHV0KTsKLSAgICByZXN1bHQgPSB4ckVudW1lcmF0ZUFwaUxheWVyUHJvcGVy
dGllcyhwcm9wZXJ0eUNvdW50T3V0cHV0LCBudWxscHRyLCBwcm9wZXJ0aWVzLmRhdGEoKSk7Ci0g
ICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4ckVudW1lcmF0ZUFwaUxheWVyUHJvcGVydGll
cygpIiwgbV9pbnN0YW5jZSk7Ci0gICAgTE9HKFhSLCAieHJFbnVtZXJhdGVBcGlMYXllclByb3Bl
cnRpZXMoKTogJXp1IHByb3BlcnRpZXNcbiIsIHByb3BlcnRpZXMuc2l6ZSgpKTsKLSNlbmRpZgot
fQotCi12b2lkIEluc3RhbmNlOjpJbXBsOjplbnVtZXJhdGVJbnN0YW5jZUV4dGVuc2lvblByb3Bl
cnRpZXMoKSBjb25zdAotewotI2lmIFVTRV9PUEVOWFIKLSAgICB1aW50MzJfdCBwcm9wZXJ0eUNv
dW50T3V0cHV0IHsgMCB9OwotICAgIFhyUmVzdWx0IHJlc3VsdCA9IHhyRW51bWVyYXRlSW5zdGFu
Y2VFeHRlbnNpb25Qcm9wZXJ0aWVzKG51bGxwdHIsIDAsICZwcm9wZXJ0eUNvdW50T3V0cHV0LCBu
dWxscHRyKTsKLSAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyRW51bWVyYXRlSW5zdGFu
Y2VFeHRlbnNpb25Qcm9wZXJ0aWVzKCkiLCBtX2luc3RhbmNlKTsKLSAgICBpZiAoIXByb3BlcnR5
Q291bnRPdXRwdXQpIHsKLSAgICAgICAgTE9HKFhSLCAieHJFbnVtZXJhdGVJbnN0YW5jZUV4dGVu
c2lvblByb3BlcnRpZXMoKTogbm8gcHJvcGVydGllc1xuIik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBWZWN0b3I8WHJFeHRlbnNpb25Qcm9wZXJ0aWVzPiBwcm9wZXJ0aWVzKHByb3Bl
cnR5Q291bnRPdXRwdXQsCi0gICAgICAgIFtdIHsKLSAgICAgICAgICAgIFhyRXh0ZW5zaW9uUHJv
cGVydGllcyBvYmplY3Q7Ci0gICAgICAgICAgICBzdGQ6Om1lbXNldCgmb2JqZWN0LCAwLCBzaXpl
b2YoWHJFeHRlbnNpb25Qcm9wZXJ0aWVzKSk7Ci0gICAgICAgICAgICBvYmplY3QudHlwZSA9IFhS
X1RZUEVfRVhURU5TSU9OX1BST1BFUlRJRVM7Ci0gICAgICAgICAgICByZXR1cm4gb2JqZWN0Owot
ICAgICAgICB9KCkpOwotCi0gICAgdWludDMyX3QgcHJvcGVydHlDb3VudFdyaXR0ZW4geyAwIH07
Ci0gICAgcmVzdWx0ID0geHJFbnVtZXJhdGVJbnN0YW5jZUV4dGVuc2lvblByb3BlcnRpZXMobnVs
bHB0ciwgcHJvcGVydHlDb3VudE91dHB1dCwgJnByb3BlcnR5Q291bnRXcml0dGVuLCBwcm9wZXJ0
aWVzLmRhdGEoKSk7Ci0gICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4ckVudW1lcmF0ZUlu
c3RhbmNlRXh0ZW5zaW9uUHJvcGVydGllcygpIiwgbV9pbnN0YW5jZSk7Ci0gICAgTE9HKFhSLCAi
eHJFbnVtZXJhdGVJbnN0YW5jZUV4dGVuc2lvblByb3BlcnRpZXMoKTogJXp1IGV4dGVuc2lvbiBw
cm9wZXJ0aWVzXG4iLCBwcm9wZXJ0aWVzLnNpemUoKSk7Ci0gICAgZm9yIChhdXRvJiBwcm9wZXJ0
eSA6IHByb3BlcnRpZXMpIHsKLSAgICAgICAgTE9HKFhSLCAiICBleHRlbnNpb24gJyVzJywgdmVy
c2lvbiAldVxuIiwKLSAgICAgICAgICAgIHByb3BlcnR5LmV4dGVuc2lvbk5hbWUsIHByb3BlcnR5
LmV4dGVuc2lvblZlcnNpb24pOwotICAgIH0KLSNlbmRpZgotfQotCi1JbnN0YW5jZTo6SW1wbDo6
SW1wbCgpCi17Ci0gICAgTE9HKFhSLCAiT3BlblhSOiBpbml0aWFsaXppbmdcbiIpOwotCi0gICAg
ZW51bWVyYXRlQXBpTGF5ZXJQcm9wZXJ0aWVzKCk7Ci0gICAgZW51bWVyYXRlSW5zdGFuY2VFeHRl
bnNpb25Qcm9wZXJ0aWVzKCk7Ci0KLSAgICBzdGF0aWMgY29uc3QgY2hhciogc19hcHBsaWNhdGlv
bk5hbWUgPSAiV2ViWFIgKFdlYktpdCkiOwotICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX2Fw
cGxpY2F0aW9uVmVyc2lvbiA9IDE7Ci0KLSNpZiBVU0VfT1BFTlhSCi0gICAgYXV0byBjcmVhdGVJ
bmZvID0gY3JlYXRlU3RydWN0dXJlPFhySW5zdGFuY2VDcmVhdGVJbmZvLCBYUl9UWVBFX0lOU1RB
TkNFX0NSRUFURV9JTkZPPigpOwotICAgIGNyZWF0ZUluZm8uY3JlYXRlRmxhZ3MgPSAwOwotICAg
IHN0ZDo6bWVtY3B5KGNyZWF0ZUluZm8uYXBwbGljYXRpb25JbmZvLmFwcGxpY2F0aW9uTmFtZSwg
c19hcHBsaWNhdGlvbk5hbWUsIFhSX01BWF9BUFBMSUNBVElPTl9OQU1FX1NJWkUpOwotICAgIGNy
ZWF0ZUluZm8uYXBwbGljYXRpb25JbmZvLmFwaVZlcnNpb24gPSBYUl9DVVJSRU5UX0FQSV9WRVJT
SU9OOwotICAgIGNyZWF0ZUluZm8uYXBwbGljYXRpb25JbmZvLmFwcGxpY2F0aW9uVmVyc2lvbiA9
IHNfYXBwbGljYXRpb25WZXJzaW9uOwotICAgIGNyZWF0ZUluZm8uZW5hYmxlZEFwaUxheWVyQ291
bnQgPSAwOwotICAgIGNyZWF0ZUluZm8uZW5hYmxlZEV4dGVuc2lvbkNvdW50ID0gMDsKLQotICAg
IFhySW5zdGFuY2UgaW5zdGFuY2U7Ci0gICAgWHJSZXN1bHQgcmVzdWx0ID0geHJDcmVhdGVJbnN0
YW5jZSgmY3JlYXRlSW5mbywgJmluc3RhbmNlKTsKLSAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3Vs
dCwgInhyQ3JlYXRlSW5zdGFuY2UoKSIsIG1faW5zdGFuY2UpOwotICAgIG1faW5zdGFuY2UgPSBp
bnN0YW5jZTsKLSAgICBMT0coWFIsICJ4ckNyZWF0ZUluc3RhbmNlKCk6IHVzaW5nIGluc3RhbmNl
ICVwXG4iLCBtX2luc3RhbmNlKTsKLQotI2VuZGlmIC8vIFVTRV9PUEVOWFIKLX0KLQotSW5zdGFu
Y2U6OkltcGw6On5JbXBsKCkKLXsKLSAgICB4ckRlc3Ryb3lJbnN0YW5jZShtX2luc3RhbmNlKTsK
LX0KLQotI2lmIFVTRV9PUEVOWFIKLQotT3B0aW9uYWw8VmVjdG9yPFNlc3Npb25Nb2RlPj4gSW5z
dGFuY2U6OkltcGw6OmNvbGxlY3RTdXBwb3J0ZWRTZXNzaW9uTW9kZXMoT3BlblhSRGV2aWNlJiBk
ZXZpY2UpCi17Ci0gICAgdWludDMyX3Qgdmlld0NvbmZpZ3VyYXRpb25Db3VudDsKLSAgICBhdXRv
IHJlc3VsdCA9IHhyRW51bWVyYXRlVmlld0NvbmZpZ3VyYXRpb25zKG1faW5zdGFuY2UsIGRldmlj
ZS54clN5c3RlbUlkKCksIDAsICZ2aWV3Q29uZmlndXJhdGlvbkNvdW50LCBudWxscHRyKTsKLSAg
ICBpZiAocmVzdWx0ICE9IFhSX1NVQ0NFU1MpIHsKLSAgICAgICAgTE9HKFhSLCAieHJFbnVtZXJh
dGVWaWV3Q29uZmlndXJhdGlvbnMoKTogZXJyb3IgJXNcbiIsIHJlc3VsdFRvU3RyaW5nKHJlc3Vs
dCwgbV9pbnN0YW5jZSkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Ci0gICAgfQotCi0gICAgWHJWaWV3Q29uZmlndXJhdGlvblR5cGUgdmlld0NvbmZpZ3VyYXRp
b25zW3ZpZXdDb25maWd1cmF0aW9uQ291bnRdOwotICAgIHJlc3VsdCA9IHhyRW51bWVyYXRlVmll
d0NvbmZpZ3VyYXRpb25zKG1faW5zdGFuY2UsIGRldmljZS54clN5c3RlbUlkKCksIHZpZXdDb25m
aWd1cmF0aW9uQ291bnQsICZ2aWV3Q29uZmlndXJhdGlvbkNvdW50LCB2aWV3Q29uZmlndXJhdGlv
bnMpOwotICAgIGlmIChyZXN1bHQgIT0gWFJfU1VDQ0VTUykgewotICAgICAgICBMT0coWFIsICJ4
ckVudW1lcmF0ZVZpZXdDb25maWd1cmF0aW9ucygpOiBlcnJvciAlc1xuIiwgcmVzdWx0VG9TdHJp
bmcocmVzdWx0LCBtX2luc3RhbmNlKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICBWZWN0b3I8U2Vzc2lvbk1vZGU+IHN1cHBvcnRlZE1v
ZGVzOwotICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCB2aWV3Q29uZmlndXJhdGlvbkNvdW50
OyArK2kpIHsKLSAgICAgICAgYXV0byB2aWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXMgPSBjcmVh
dGVTdHJ1Y3R1cmU8WHJWaWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXMsIFhSX1RZUEVfVklFV19D
T05GSUdVUkFUSU9OX1BST1BFUlRJRVM+KCk7Ci0gICAgICAgIHJlc3VsdCA9IHhyR2V0Vmlld0Nv
bmZpZ3VyYXRpb25Qcm9wZXJ0aWVzKG1faW5zdGFuY2UsIGRldmljZS54clN5c3RlbUlkKCksIHZp
ZXdDb25maWd1cmF0aW9uc1tpXSwgJnZpZXdDb25maWd1cmF0aW9uUHJvcGVydGllcyk7Ci0gICAg
ICAgIGlmIChyZXN1bHQgIT0gWFJfU1VDQ0VTUykgewotICAgICAgICAgICAgTE9HKFhSLCAieHJH
ZXRWaWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXMoKTogZXJyb3IgJXNcbiIsIHJlc3VsdFRvU3Ry
aW5nKHJlc3VsdCwgbV9pbnN0YW5jZSkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotICAgICAgICB9Ci0gICAgICAgIHN3aXRjaCAodmlld0NvbmZpZ3Vy
YXRpb25Qcm9wZXJ0aWVzLnZpZXdDb25maWd1cmF0aW9uVHlwZSkgewotICAgICAgICAgICAgY2Fz
ZSBYUl9WSUVXX0NPTkZJR1VSQVRJT05fVFlQRV9QUklNQVJZX01PTk86Ci0gICAgICAgICAgICAg
ICAgc3VwcG9ydGVkTW9kZXMuYXBwZW5kKFNlc3Npb25Nb2RlOjpJbW1lcnNpdmVBcik7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFhSX1ZJRVdfQ09ORklHVVJBVElP
Tl9UWVBFX1BSSU1BUllfU1RFUkVPOgotICAgICAgICAgICAgICAgIHN1cHBvcnRlZE1vZGVzLmFw
cGVuZChTZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfTsK
LSAgICB9Ci0gICAgcmV0dXJuIHN1cHBvcnRlZE1vZGVzOwotfQotCi0jZW5kaWYgLy8gVVNFX09Q
RU5YUgotCi1JbnN0YW5jZSYgSW5zdGFuY2U6OnNpbmdsZXRvbigpCi17Ci0gICAgc3RhdGljIExh
enlOZXZlckRlc3Ryb3llZDxJbnN0YW5jZT4gc19pbnN0YW5jZTsKLSAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgc19vbmNlRmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShzX29uY2VGbGFnLAotICAg
ICAgICBbJl0gewotICAgICAgICAgICAgc19pbnN0YW5jZS0+bV9pbXBsID0gbWFrZVVuaXF1ZTxJ
bXBsPigpOwotICAgICAgICB9KTsKLSAgICByZXR1cm4gc19pbnN0YW5jZS5nZXQoKTsKLX0KLQot
SW5zdGFuY2U6Okluc3RhbmNlKCkgPSBkZWZhdWx0OwotSW5zdGFuY2U6On5JbnN0YW5jZSgpID0g
ZGVmYXVsdDsKLQotdm9pZCBJbnN0YW5jZTo6ZW51bWVyYXRlSW1tZXJzaXZlWFJEZXZpY2VzKCkK
LXsKLSNpZiBVU0VfT1BFTlhSCi0gICAgaWYgKG1faW1wbC0+eHJJbnN0YW5jZSgpID09IFhSX05V
TExfSEFORExFKSB7Ci0gICAgICAgIExPRyhYUiwgIiVzIFVuYWJsZSB0byBlbnVtZXJhdGUgWFIg
ZGV2aWNlcy4gTm8gWHJJbnN0YW5jZSBwcmVzZW50XG4iLCBfX0ZVTkNUSU9OX18pOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byBzeXN0ZW1HZXRJbmZvID0gY3JlYXRlU3RydWN0
dXJlPFhyU3lzdGVtR2V0SW5mbywgWFJfVFlQRV9TWVNURU1fR0VUX0lORk8+KCk7Ci0gICAgc3lz
dGVtR2V0SW5mby5mb3JtRmFjdG9yID0gWFJfRk9STV9GQUNUT1JfSEVBRF9NT1VOVEVEX0RJU1BM
QVk7Ci0KLSAgICBYclN5c3RlbUlkIHN5c3RlbUlkOwotICAgIFhyUmVzdWx0IHJlc3VsdCA9IHhy
R2V0U3lzdGVtKG1faW1wbC0+eHJJbnN0YW5jZSgpLCAmc3lzdGVtR2V0SW5mbywgJnN5c3RlbUlk
KTsKLSAgICBpZiAocmVzdWx0ICE9IFhSX1NVQ0NFU1MpIHsKLSAgICAgICAgTE9HKFhSLCAieHJH
ZXRTeXN0ZW0oKTogZXJyb3IgJXNcbiIsIHJlc3VsdFRvU3RyaW5nKHJlc3VsdCwgbV9pbXBsLT54
ckluc3RhbmNlKCkpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgYXV0byBkZXZpY2UgPSBtYWtlVW5pcXVlPE9wZW5YUkRldmljZT4oKTsKLSAgICBkZXZpY2Ut
PnNldFhyU3lzdGVtSWQoc3lzdGVtSWQpOwotICAgIGF1dG8gc2Vzc2lvbk1vZGVzID0gbV9pbXBs
LT5jb2xsZWN0U3VwcG9ydGVkU2Vzc2lvbk1vZGVzKCpkZXZpY2UpOwotICAgIGlmIChzZXNzaW9u
TW9kZXMpIHsKLSAgICAgICAgZm9yIChhdXRvJiBtb2RlIDogc2Vzc2lvbk1vZGVzLnZhbHVlKCkp
IHsKLSAgICAgICAgICAgIC8vIFRPRE86IGZpbGwgaW4gZmVhdHVyZXMKLSAgICAgICAgICAgIGRl
dmljZS0+c2V0RW5hYmxlZEZlYXR1cmVzKG1vZGUsIHsgfSk7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBtX2ltbWVyc2l2ZVhSRGV2aWNlcy5hcHBlbmQoV1RGTW92ZShkZXZpY2UpKTsKLSNlbmRp
ZiAvLyBVU0VfT1BFTlhSCi19Ci0KLX0gLy8gbmFtZXNwYWNlIFBsYXRmb3JtWFIKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hy
L29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9v
cGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBk
OTcwODgzODA5ZDdiYzZjMmE3MDZmMmJkMjIyYjE4YjJjNzBhNzg1Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hy
L29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSwgUy5MLgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
LSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdFQlhSKQotI2luY2x1ZGUgIlBsYXRmb3JtWFIuaCIKLQotI2lmIFVTRV9PUEVO
WFIKLSNpbmNsdWRlIDxvcGVueHIvb3BlbnhyLmg+Ci0KLW5hbWVzcGFjZSBQbGF0Zm9ybVhSIHsK
LQotLy8gaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvcmVnaXN0cnkvT3BlblhSL3NwZWNzLzEuMC9o
dG1sL3hyc3BlYy5odG1sI3N5c3RlbQotLy8gQSBzeXN0ZW0gcmVwcmVzZW50cyBhIGNvbGxlY3Rp
b24gb2YgcmVsYXRlZCBkZXZpY2VzIGluIHRoZSBydW50aW1lLCBvZnRlbiBtYWRlIHVwIG9mIHNl
dmVyYWwgaW5kaXZpZHVhbAotLy8gaGFyZHdhcmUgY29tcG9uZW50cyB3b3JraW5nIHRvZ2V0aGVy
IHRvIGVuYWJsZSBYUiBleHBlcmllbmNlcy4KLS8vCi0vLyBXZWJYUiB0YWxrcyBhYm91dCBYUiBk
ZXZpY2VzLCBpcyBhIHBoeXNpY2FsIHVuaXQgb2YgaGFyZHdhcmUgdGhhdCBjYW4gcHJlc2VudCBp
bWFnZXJ5IHRvIHRoZSB1c2VyLCBzbwotLy8gdGhlcmUgaXMgbm90IGRpcmVjdCBjb3JyZXNwb25k
ZW5jZSBiZXR3ZWVuIGFuIE9wZW5YUiBzeXN0ZW0gYW5kIGEgV2ViWFIgZGV2aWNlIGJlY2F1c2Ug
dGhlIHN5c3RlbSBBUEkKLS8vIGlzIGFuIGFic3RyYWN0aW9uIGZvciBhIGNvbGxlY3Rpb24gb2Yg
ZGV2aWNlcyB3aGlsZSB0aGUgV2ViWFIgZGV2aWNlIGlzIG1vc3RseSBvbmUgcGh5c2ljYWwgdW5p
dCwKLS8vIHVzdWFsbHkgYW4gSE1EIG9yIGEgcGhvbmUvdGFibGV0LgotLy8KLS8vIEl0J3MgaW1w
b3J0YW50IGFsc28gbm90IHRvIHRyeSB0byBhc3NvY2lhdGUgT3BlblhSIHN5c3RlbSB3aXRoIFdl
YlhSJ3MgWFJTeXN0ZW0gYmVjYXVzZSB0aGV5J3JlIHRvdGFsbHkKLS8vIGRpZmZlcmVudCBjb25j
ZXB0cy4gVGhlIHN5c3RlbSBpbiBPcGVuWFIgd2FzIGRlZmluZWQgYWJvdmUgYXMgYSBjb2xsZWN0
aW9uIG9mIHJlbGF0ZWQgZGV2aWNlcy4gSW4gV2ViWFIsCi0vLyB0aGUgWFJTeXN0ZW0gaXMgYmFz
aWNhbGx5IHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIFdlYlhSIEFQSSBhdmFpbGFibGUgdmlhIHRo
ZSBOYXZpZ2F0b3Igb2JqZWN0LgotY2xhc3MgT3BlblhSRGV2aWNlIGZpbmFsIDogcHVibGljIERl
dmljZSB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBzZXRYclN5c3RlbUlkKFhyU3lzdGVtSWQgaWQpIHsg
bV9zeXN0ZW1JZCA9IGlkOyB9Ci0gICAgWHJTeXN0ZW1JZCB4clN5c3RlbUlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9zeXN0ZW1JZDsgfQotcHJpdmF0ZToKLSAgICBYclN5c3RlbUlkIG1fc3lzdGVtSWQ7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBQbGF0Zm9ybVhSCi0KLSNlbmRpZiAvLyBVU0VfT1BFTlhS
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>