<?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>205153</bug_id>
          
          <creation_ts>2019-12-11 20:35:34 -0800</creation_ts>
          <short_desc>Create GraphicsContext3D on the GPUProcess (WIP)</short_desc>
          <delta_ts>2021-03-05 12:09:17 -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>WebGL</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=217211</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Fan">justin_fan</reporter>
          <assigned_to name="Justin Fan">justin_fan</assigned_to>
          <cc>dino</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>jonlee</cc>
    
    <cc>yoshiaki.jitsukawa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1597924</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-12-11 20:35:34 -0800</bug_when>
    <thetext>Creation of GraphicsContext3D and replay of graphics commands on the GPUProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597925</commentid>
    <comment_count>1</comment_count>
      <attachid>385475</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-12-11 20:35:53 -0800</bug_when>
    <thetext>Created attachment 385475
WIP draft</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385475</attachid>
            <date>2019-12-11 20:35:53 -0800</date>
            <delta_ts>2019-12-11 20:35:53 -0800</delta_ts>
            <desc>WIP draft</desc>
            <filename>remote-3d-context-draft.patch</filename>
            <type>text/plain</type>
            <size>36886</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNTIyMDY4NzMxY2UuLmJlYmNlMTdiNGNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMTI1LDYgKzEyNSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfSU5D
TFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ2FtZXBhZCIKICAgICAiJHtXRUJD
T1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MiCisgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3Jt
L2dyYXBoaWNzL2NvbW1hbmRsaXN0czNkIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9n
cmFwaGljcy9jcHUvYXJtIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9j
cHUvYXJtL2ZpbHRlcnMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA2OTA2NjY1MGJiMS4uMTJjYzdhYTRjMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM1NCw3ICsz
NTQsNiBAQAogCQkwRkU1RkJEMzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTVGQkNCMUMzREQ1
MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGRTVGQkQ1MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5
TGlzdEl0ZW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkU1RkJDRDFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RJdGVtcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRTVGQkQ3MUMzREQ1
MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU1RkJDRjFDM0RENTFFMDAwN0EyQ0EgLyogRGlz
cGxheUxpc3RSZWNvcmRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTBGRTVGQkQ5MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlcGxh
eWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU1
RkJEMTFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZXBsYXllci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRTcxNDA2MTQyMTcwQjgw
MERCMzNCQSAvKiBTY3JvbGxiYXJUaGVtZU1vY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTcxNDA0MTQyMTcwQjgwMERCMzNCQSAvKiBTY3JvbGxi
YXJUaGVtZU1vY2suaCAqLzsgfTsKIAkJMEZFQTNFN0IxOTFCMkZDNTAwMEYxQjU1IC8qIFNjcm9s
bGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVBM0U3OTE5MUIyRkM1MDAwRjFCNTUgLyogU2Nyb2xsaW5n
U3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRkVBM0U4MDE5MUIzMTY5MDAwRjFCNTUgLyogU2Nyb2xsaW5n
VHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZFQTNFN0UxOTFCMzE2OTAwMEYxQjU1IC8qIFNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtNDIzNCw2ICs0MjMzLDcgQEAKIAkJRDBCMDU1NjgwOUM2NzAw
MTAwMzA3RTQzIC8qIENyZWF0ZUxpbmtDb21tYW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMEIwNTU2NjA5QzY3MDAxMDAzMDdFNDMgLyogQ3JlYXRl
TGlua0NvbW1hbmQuaCAqLzsgfTsKIAkJRDBCQzU0NDkxNDQzQUM0QTAwRTEwNURBIC8qIENhY2hl
ZFN0eWxlU2hlZXRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEQwQkM1NDQ4MTQ0M0FDNEEwMEUxMDVEQSAvKiBDYWNoZWRTdHlsZVNoZWV0Q2xp
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RDBCRDRGNUQxNDA4ODUwRjAwNjgzOUI2IC8qIERpY3RhdGlvbkNvbW1hbmRJT1MuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwQkQ0RjVCMTQwODg1MEYw
MDY4MzlCNiAvKiBEaWN0YXRpb25Db21tYW5kSU9TLmggKi87IH07CisJCUQwRTkxRDk0MjNBMUY1
NDAwMDEzNjgyRiAvKiBEaXNwbGF5TGlzdFJlcGxheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMEI1Mjc5MTIzQTFBNTlEMDBCQTcyQ0MgLyogRGlz
cGxheUxpc3RSZXBsYXllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUQwRURBNzc1MTQzRTMwM0MwMDI4RTM4MyAvKiBDYWNoZWRSYXdSZXNvdXJj
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDBFREE3
NzMxNDNFMzAzQzAwMjhFMzgzIC8qIENhY2hlZFJhd1Jlc291cmNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRDBGRjJBNUUxMUY4QzQ1QTAwN0U3
NEUwIC8qIFBpbmdMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEQwRkYyQTVDMTFGOEM0NUEwMDdFNzRFMCAvKiBQaW5nTG9hZGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRDMwMjc1NEExMkE1
RkU4NDAwNEJEODI4IC8qIFJlbmRlckRldGFpbHNNYXJrZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQzMDI3NTQ2MTJBNUZFODQwMDRCRDgyOCAvKiBS
ZW5kZXJEZXRhaWxzTWFya2VyLmggKi87IH07CkBAIC01ODI1LDcgKzU4MjUsNiBAQAogCQkwRkU1
RkJDRTFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdFJlY29yZGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFNUZCQ0YxQzNERDUxRTAwMDdBMkNBIC8qIERp
c3BsYXlMaXN0UmVjb3JkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlz
cGxheUxpc3RSZWNvcmRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkU1RkJE
MDFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZXBsYXllci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdFJlcGxheWVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZFNUZCRDExQzNERDUxRTAwMDdBMkNBIC8qIERpc3Bs
YXlMaXN0UmVwbGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxh
eUxpc3RSZXBsYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkU2Qzc2QjFG
QkZCN0E2MDAyNUMwNTMgLyogQ29sb3JVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q29sb3JVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkU2Qzc2
QzFGQkZCN0E2MDAyNUMwNTMgLyogQ29sb3JVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29s
b3JVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFNzE0MDMxNDIx
NzBCODAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lTW9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxiYXJUaGVtZU1vY2suY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTQyNjMsNiArMTQyNjIsMTAgQEAKIAkJRDBBREIyOEMyMjM3ODQy
RTAwQTIyOTM1IC8qIEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVDb2xvclN0
YXRlRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQjA1NTY2
MDlDNjcwMDEwMDMwN0U0MyAvKiBDcmVhdGVMaW5rQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDcmVhdGVMaW5rQ29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlEMEIwNTU2NzA5QzY3MDAxMDAzMDdFNDMgLyogQ3JlYXRlTGlua0NvbW1hbmQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3JlYXRlTGlua0NvbW1h
bmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMEI1Mjc5MTIzQTFBNTlEMDBC
QTcyQ0MgLyogRGlzcGxheUxpc3RSZXBsYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlz
dFJlcGxheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwQjUyNzk4MjNBMUNC
OEQwMEJBNzJDQyAvKiBDb21tYW5kTGlzdDNEUHJvY2Vzc29yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENvbW1hbmRMaXN0M0RQcm9jZXNzb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlEMEI1Mjc5OTIzQTFDQjk5MDBCQTcyQ0MgLyogQ29tbWFuZExpc3QzRFByb2Nlc3NvckNv
Y29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQ29tbWFuZExpc3QzRFByb2Nlc3NvckNvY29h
Lm1tOyBwYXRoID0gL1ZvbHVtZXMvRGF0YS9Qcm9qZWN0cy9XZWJLaXQvT3BlblNvdXJjZS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb21tYW5kbGlzdHMzZC9jb2NvYS9Db21tYW5k
TGlzdDNEUHJvY2Vzc29yQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CisJ
CUQwQjUyNzlBMjNBMUNCQTgwMEJBNzJDQyAvKiBDb21tYW5kTGlzdDNEUHJvY2Vzc29yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENvbW1hbmRMaXN0M0RQcm9jZXNzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRDBCNTZFQUEyMjRFQzYyNDAwNjEwNDlDIC8qIEdQVUJsZW5kRGVzY3JpcHRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHUFVCbGVuZERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRDBCNTZFQUIyMjRFQzYyNDAwNjEwNDlDIC8qIEdQVUJsZW5kRGVzY3Jp
cHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gR1BVQmxlbmREZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRDBCNTZFQUQyMjRFQ0UyMDAwNjEwNDlDIC8qIEdQVUNvbG9yV3JpdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR1BVQ29sb3JXcml0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTQzMTQsNiArMTQzMTcsMTAgQEAKIAkJRDBEQTBCRTQyMTc5MzBFMjAwN0ZFMkFDIC8q
IFdlYkdQVVN3YXBDaGFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVTd2FwQ2hhaW4uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBEQTBCRTUyMTc5MzBFMjAwN0ZFMkFDIC8qIFdl
YkdQVVN3YXBDaGFpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVTd2FwQ2hhaW4uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMERBMEJFNjIxNzkzMEUyMDA3RkUyQUMg
LyogV2ViR1BVU3dhcENoYWluLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVTd2FwQ2hhaW4uaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlEMERBMjYyQzIzOThDQkE5MDBENzExNEYgLyogQ29tbWFu
ZExpc3QzRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tYW5kTGlzdDNELmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUQwREEyNjJEMjM5OENCQTkwMEQ3MTE0RiAvKiBDb21tYW5kTGlzdDNE
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbW1hbmRMaXN0M0QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlEMERBMjYyRTIzOThEMEFCMDBENzExNEYgLyogQ29tbWFuZExpc3Qz
REl0ZW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1hbmRMaXN0M0RJdGVtcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlEMERBMjYyRjIzOThEMEFCMDBENzExNEYgLyogQ29tbWFuZExp
c3QzREl0ZW1zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbW1hbmRMaXN0M0RJdGVtcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwREU4RkI4MjIyRTA5RTIwMDg4MjU1MCAv
KiBHUFVTaGFkZXJTdGFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVTaGFkZXJTdGFnZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMERFOEZCOTIyMkUwOUUyMDA4ODI1NTAgLyogR1BV
U2hhZGVyU3RhZ2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVVNoYWRlclN0YWdlLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRDBFQUNGNzYyMTkzNzIyODAwMEZBNzVDIC8qIFdlYkdQVUNvbW1hbmRF
bmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUNvbW1hbmRFbmNvZGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjYyOSw2ICsxNjYzNiw3IEBACiAJCTBGRTVGQkM5MUMz
REQ1MDYwMDA3QTJDQSAvKiBkaXNwbGF5bGlzdHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCUQwQjUyNzkxMjNBMUE1OUQwMEJBNzJDQyAvKiBEaXNwbGF5
TGlzdFJlcGxheWVyLmggKi8sCiAJCQkJMEZFNUZCQ0ExQzNERDUxRTAwMDdBMkNBIC8qIERpc3Bs
YXlMaXN0LmNwcCAqLywKIAkJCQkwRkU1RkJDQjFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxp
c3QuaCAqLywKIAkJCQkwRkU1RkJDQzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RJdGVt
cy5jcHAgKi8sCkBAIC0xNjYzNiw3ICsxNjY0NCw2IEBACiAJCQkJMEZFNUZCQ0UxQzNERDUxRTAw
MDdBMkNBIC8qIERpc3BsYXlMaXN0UmVjb3JkZXIuY3BwICovLAogCQkJCTBGRTVGQkNGMUMzREQ1
MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmggKi8sCiAJCQkJMEZFNUZCRDAxQzNE
RDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwICovLAotCQkJCTBGRTVGQkQx
MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlcGxheWVyLmggKi8sCiAJCQkpOwogCQkJ
cGF0aCA9IGRpc3BsYXlsaXN0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNDg3
Miw2ICsyNDg3OSw3IEBACiAJCUIyQTAxNTkxMEFGNkNENTMwMDZCQ0UwRSAvKiBncmFwaGljcyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRDBEQTI2MkEy
Mzk4Q0EwRjAwRDcxMTRGIC8qIGNvbW1hbmRsaXN0czNkICovLAogCQkJCTZFMjdGMjQxMjI5OENF
MkUwMEYxRjYzMiAvKiBhbmdsZSAqLywKIAkJCQkwNzZGMEQwODEyQjgxOTI3MDBDMjZBQTQgLyog
YXZmb3VuZGF0aW9uICovLAogCQkJCTQ5OUIzRUMwMTI4Q0NDMTgwMEU3MjZDMiAvKiBjYSAqLywK
QEAgLTI2NjI1LDYgKzI2NjMzLDI4IEBACiAJCQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwogCQl9OworCQlEMEI1Mjc5QjIzQTFERkQyMDBCQTcyQ0MgLyogY29jb2Eg
Ki8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUQwQjUyNzk5
MjNBMUNCOTkwMEJBNzJDQyAvKiBDb21tYW5kTGlzdDNEUHJvY2Vzc29yQ29jb2EubW0gKi8sCisJ
CQkpOworCQkJcGF0aCA9IGNvY29hOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsK
KwkJRDBEQTI2MkEyMzk4Q0EwRjAwRDcxMTRGIC8qIGNvbW1hbmRsaXN0czNkICovID0geworCQkJ
aXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlEMEI1Mjc5QjIzQTFERkQyMDBC
QTcyQ0MgLyogY29jb2EgKi8sCisJCQkJRDBCNTI3OUEyM0ExQ0JBODAwQkE3MkNDIC8qIENvbW1h
bmRMaXN0M0RQcm9jZXNzb3IuaCAqLywKKwkJCQlEMEI1Mjc5ODIzQTFDQjhEMDBCQTcyQ0MgLyog
Q29tbWFuZExpc3QzRFByb2Nlc3Nvci5jcHAgKi8sCisJCQkJRDBEQTI2MkMyMzk4Q0JBOTAwRDcx
MTRGIC8qIENvbW1hbmRMaXN0M0QuaCAqLywKKwkJCQlEMERBMjYyRDIzOThDQkE5MDBENzExNEYg
LyogQ29tbWFuZExpc3QzRC5jcHAgKi8sCisJCQkJRDBEQTI2MkUyMzk4RDBBQjAwRDcxMTRGIC8q
IENvbW1hbmRMaXN0M0RJdGVtcy5oICovLAorCQkJCUQwREEyNjJGMjM5OEQwQUIwMEQ3MTE0RiAv
KiBDb21tYW5kTGlzdDNESXRlbXMuY3BwICovLAorCQkJKTsKKwkJCXBhdGggPSBjb21tYW5kbGlz
dHMzZDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCURGOUFGRDZGMTNGQzMx
QjAwMDE1RkVCNyAvKiBvYmpjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKQEAgLTI5NTg2LDcgKzI5NjE2LDYgQEAKIAkJCQkwRkU1RkJEMzFDM0RENTFFMDAwN0Ey
Q0EgLyogRGlzcGxheUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ1MUMzREQ1MUUw
MDA3QTJDQSAvKiBEaXNwbGF5TGlzdEl0ZW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJE
NzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlci5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMEZFNUZCRDkxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVwbGF5ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTZGNzc4Njg4MjM0OTFBRDgwMDREOTYzNiAvKiBEaXNwbGF5UGFp
bnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkZEOUNENTQyMjdFMjFDODAwRTUzOTU3IC8qIERp
c3BsYXlSZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUFGMkQ2OTE0NDM1RDA1MDAxNkE3ODQg
LyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTMwMDAxLDYgKzMw
MDMwLDcgQEAKIAkJCQlBODcxREMxRjBBMTUyMDU3MDBCMTJBNjggLyogSFRNTEJhc2VFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjI0REU4RTE1MTk0Qjk1MDBDNTlDMjcgLyogSFRNTEJE
SUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NzFERTJDMEExNTJBQzgwMEIxMkE2OCAv
KiBIVE1MQm9keUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUQwRTkxRDk0MjNBMUY1NDAw
MDEzNjgyRiAvKiBEaXNwbGF5TGlzdFJlcGxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOENG
RjdBQTBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTEJSRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTgxMzY5RDIwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxCdXR0b25FbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5M0YxOTlFNTA4MjQ1RTU5MDAxRTlBQkMgLyogSFRNTENhbnZhc0VsZW1l
bnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCmluZGV4IDQ4OTQ3NDcyYTg0Li4yZjlhMTM1
Yzg3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dDNELmNwcApAQCAtMzgsNiArMzgsMTAgQEAKICNpbmNsdWRlICJJbWFnZU9i
c2VydmVyLmgiCiAjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKKyNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCisjaW5jbHVkZSAiQ29tbWFuZExpc3QzRFByb2Nlc3Nvci5oIgorI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsKQEAgLTY1Niw2ICs2NjAsMTEgQEAg
dW5zaWduZWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldENoYW5uZWxCaXRzQnlGb3JtYXQoR0MzRGVu
dW0gZm9ybWF0KQogICAgIH0KIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2V0Q29tbWFu
ZExpc3QzRFByb2Nlc3NvcihDb21tYW5kTGlzdDNEUHJvY2Vzc29yKiBwcm9jZXNzb3IpCit7Cisg
ICAgbV9jb21tYW5kTGlzdDNEUHJvY2Vzc29yID0gcHJvY2Vzc29yOworfQorCiAjaWYgIShQTEFU
Rk9STShDT0NPQSkgJiYgKFVTRShPUEVOR0wpIHx8IFVTRShBTkdMRSkpKQogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6c2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IGEz
ZDFkZTJjYzI3Li42ZjgxNzNkNzhlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCkBAIC0xMTgsNiArMTE4LDkgQEAgY2xh
c3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTsKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiBj
bGFzcyBUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI7CiAjZW5kaWYKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCitjbGFzcyBDb21tYW5kTGlzdDNEUHJvY2Vzc29yOworI2VuZGlmCiAKIHR5
cGVkZWYgV1RGOjpIYXNoTWFwPENTdHJpbmcsIHVpbnQ2NF90PiBTaGFkZXJOYW1lSGFzaDsKIApA
QCAtMTIwOCw2ICsxMjExLDEwIEBAIHB1YmxpYzoKICNlbmRpZgogI2VuZGlmIC8vIFBMQVRGT1JN
KENPQ09BKQogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIHZvaWQgc2V0Q29tbWFuZExp
c3QzRFByb2Nlc3NvcihDb21tYW5kTGlzdDNEUHJvY2Vzc29yKik7CisjZW5kaWYKKwogICAgIHZv
aWQgc2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCk7CiAKICAgICBHcmFwaGljc0NvbnRleHQzRFBv
d2VyUHJlZmVyZW5jZSBwb3dlclByZWZlcmVuY2VVc2VkRm9yQ3JlYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX3Bvd2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbjsgfQpAQCAtMTM5Miw2ICsxMzk5
LDEwIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbV93ZWJHTExheWVy
OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgQ29tbWFuZExpc3QzRFBy
b2Nlc3NvciogbV9jb21tYW5kTGlzdDNEUHJvY2Vzc29yOworI2VuZGlmCisKICAgICB0eXBlZGVm
IEhhc2hNYXA8U3RyaW5nLCBzaDo6U2hhZGVyVmFyaWFibGU+IFNoYWRlclN5bWJvbE1hcDsKIAog
ICAgIHN0cnVjdCBTaGFkZXJTb3VyY2VFbnRyeSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29hLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2Nv
YS5tbQppbmRleCBkYTZiM2I2ZDI2ZC4uNTE1ZmFjZTI3NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dDNEQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0M0RDb2NvYS5tbQpAQCAtNzU5LDcgKzc1OSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjphbGxvY2F0ZUlPU3VyZmFjZUJhY2tpbmdTdG9yZShJbnRTaXplIHNpemUpCiB7CiAjaWYgSEFW
RShJT1NVUkZBQ0UpCiAgICAgTE9HKFdlYkdMLCAiR3JhcGhpY3NDb250ZXh0M0Q6OmFsbG9jYXRl
SU9TdXJmYWNlQmFja2luZ1N0b3JlIGF0ICVkIHggJWQuICglcCkiLCBzaXplLndpZHRoKCksIHNp
emUuaGVpZ2h0KCksIHRoaXMpOworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgLy8gVE9ETzogQWRk
IGNvbmRpdGlvbmFsL2ZlYXR1cmUgZm9yICJXZWJHTE9uR1BVUHJvY2VzcyIKKyAgICBBU1NFUlQo
bV9jb21tYW5kTGlzdDNEUHJvY2Vzc29yKTsKKyAgICBtX2NvbW1hbmRMaXN0M0RQcm9jZXNzb3It
PmFsbG9jYXRlSU9TdXJmYWNlQmFja2luZ1N0b3JlV2l0aFNpemUoc2l6ZSwgbV9hdHRycy5hbHBo
YSk7CisjZWxzZQogICAgIFttX3dlYkdMTGF5ZXIgYWxsb2NhdGVJT1N1cmZhY2VCYWNraW5nU3Rv
cmVXaXRoU2l6ZTpzaXplIHVzaW5nQWxwaGE6bV9hdHRycy5hbHBoYV07CisjZW5kaWYKKwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0oc2l6ZSk7CiAjZW5kaWYKQEAgLTc2OSw4ICs3NzUsMTMgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dXBkYXRlRnJhbWVidWZmZXJUZXh0dXJlQmFja2luZ1N0
b3JlRnJvbUxheWVyKCkKIHsKICNpZiBIQVZFKElPU1VSRkFDRSkKICAgICBMT0coV2ViR0wsICJH
cmFwaGljc0NvbnRleHQzRDo6dXBkYXRlRnJhbWVidWZmZXJUZXh0dXJlQmFja2luZ1N0b3JlRnJv
bUxheWVyKCkuICglcCkiLCB0aGlzKTsKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpIC8vIFRPRE86
IEFkZCBjb25kaXRpb25hbC9mZWF0dXJlIGZvciAiV2ViR0xPbkdQVVByb2Nlc3MiCisgICAgQVNT
RVJUKG1fY29tbWFuZExpc3QzRFByb2Nlc3Nvcik7CisgICAgbV9jb21tYW5kTGlzdDNEUHJvY2Vz
c29yLT5iaW5kRnJhbWVidWZmZXJUb05leHRBdmFpbGFibGVTdXJmYWNlKCk7CisjZWxzZQogICAg
IFttX3dlYkdMTGF5ZXIgYmluZEZyYW1lYnVmZmVyVG9OZXh0QXZhaWxhYmxlU3VyZmFjZV07CiAj
ZW5kaWYKKyNlbmRpZgogfQogI2VuZGlmIC8vIFVTRShBTkdMRSkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29tbWFuZGxpc3RzM2QvQ29tbWFuZExpc3Qz
RC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb21tYW5kbGlzdHMzZC9D
b21tYW5kTGlzdDNELmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
MDI4NDFhZGU3MGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb21tYW5kbGlzdHMzZC9Db21tYW5kTGlzdDNELmNwcApAQCAtMCwwICsxLDM1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvbW1hbmRMaXN0
M0QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIENvbW1hbmRMaXN0M0Qgewor
Cit9IC8vIG5hbWVzcGFjZSBDb21tYW5kTGlzdDNECisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvbW1hbmRsaXN0
czNkL0NvbW1hbmRMaXN0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
bW1hbmRsaXN0czNkL0NvbW1hbmRMaXN0M0QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uNDUzNDVlZDNmNjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb21tYW5kbGlzdHMzZC9Db21tYW5kTGlzdDNELmgKQEAgLTAs
MCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29tbWFu
ZExpc3QzREl0ZW1zLmgiCisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKworbmFtZXNwYWNlIENvbW1hbmRMaXN0M0QgeworCitjbGFzcyBJdGVtOworCitjbGFz
cyBDb21tYW5kTGlzdDNEIHsKK3B1YmxpYzoKKyAgICBjb25zdCBWZWN0b3I8UmVmPEl0ZW0+PiYg
bGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGlzdDsgfQorICAgIEl0ZW0mIGl0ZW1BdChzaXplX3Qg
aW5kZXgpCisgICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPCBtX2xpc3Quc2l6ZSgpKTsKKyAg
ICAgICAgcmV0dXJuIG1fbGlzdFtpbmRleF0uZ2V0KCk7CisgICAgfQorCisgICAgdm9pZCBjbGVh
cigpCisgICAgeworICAgICAgICBtX2xpc3QuY2xlYXIoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPERpc3BsYXlMaXN0PiBkZWNvZGUoRGVj
b2RlciYpOworCitwcml2YXRlOgorICAgIEl0ZW0mIGFwcGVuZChSZWY8SXRlbT4mJiBpdGVtKQor
ICAgIHsKKyAgICAgICAgbV9saXN0LmFwcGVuZChXVEZNb3ZlKGl0ZW0pKTsKKyAgICAgICAgcmV0
dXJuIG1fbGlzdC5sYXN0KCkuZ2V0KCk7CisgICAgfQorCisgICAgVmVjdG9yPFJlZjxJdGVtPj4m
IGxpc3QgeyByZXR1cm4gbV9saXN0OyB9CisgICAgVmVjdG9yPFJlZjxJdGVtPj4gbV9saXN0Owor
fTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgQ29tbWFuZExpc3QzRDo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4obV9saXN0LnNpemUoKSk7CisKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX2xpc3Qp
CisgICAgICAgIGVuY29kZXIgPDwgaXRlbS5nZXQoKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4KK09wdGlvbmFsPENvbW1hbmRMaXN0M0Q+IENvbW1hbmRMaXN0M0Q6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBpdGVtQ291bnQ7CisgICAg
ZGVjb2RlciA+PiBpdGVtQ291bnQ7CisgICAgaWYgKCFpdGVtQ291bnQpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICBDb21tYW5kTGlzdDNEIGNvbW1hbmRMaXN0OworCisgICAg
Zm9yICh1aW50NjRfdCBpID0gMDsgaSA8ICppdGVtQ291bnQ7ICsraSkgeworICAgICAgICBhdXRv
IGl0ZW0gPSBJdGVtOjpkZWNvZGUoZGVjb2Rlcik7CisKKyAgICAgICAgaWYgKCFpdGVtKQorICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBjb21tYW5kTGlzdC5hcHBl
bmQoV1RGTW92ZSgqaXRlbSkpOworICAgIH0KKworICAgIHJldHVybiBjb21tYW5kTGlzdDsKK30K
KworfSAvLyBDb21tYW5kTGlzdDNECisKK30gLy8gV2ViQ29yZQorCit1c2luZyBXZWJDb3JlOjpD
b21tYW5kTGlzdDNEOjpDb21tYW5kTGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvbW1hbmRsaXN0czNkL0NvbW1hbmRMaXN0M0RJdGVtcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb21tYW5kbGlzdHMzZC9Db21tYW5kTGlz
dDNESXRlbXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zZmRj
ZmJhZTk0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvbW1hbmRsaXN0czNkL0NvbW1hbmRMaXN0M0RJdGVtcy5jcHAKQEAgLTAsMCArMSw2OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb21tYW5kTGlz
dDNESXRlbXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgQ29tbWFuZExp
c3QzRCB7CisKK0l0ZW06Okl0ZW0oSXRlbVR5cGUgdHlwZSkKKyAgICA6IG1fdHlwZSh0eXBlKQor
eworfQorCitJdGVtOjp+SXRlbSgpID0gZGVmYXVsdDsKKworQ2xlYXI6OkNsZWFyKEdDM0RiaXRm
aWVsZCBiaXRtYXNrKQorICAgIDogbV9iaXRtYXNrKGJpdG1hc2spCit7Cit9CisKK0NsZWFyOjp+
Q2xlYXIoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgQ2xlYXI6OmFwcGx5KEdyYXBoaWNzQ29udGV4dDNE
JiBjb250ZXh0KSBjb25zdAoreworICAgIGNvbnRleHQuY2xlYXIobV9iaXRtYXNrKTsKK30KKwor
Q2xlYXJDb2xvcjo6Q2xlYXJDb2xvcihHQzNEY2xhbXBmIHIsIEdDM0RjbGFtcGYgZywgR0MzRGNs
YW1wZiBiLCBHQzNEY2xhbXBmIGEpCisgICAgOiBtX3IocikKKyAgICAsIG1fZyhnKQorICAgICwg
bV9iKGIpCisgICAgLCBtX2EoYSkKK3sKK30KKworQ2xlYXJDb2xvcjo6fkNsZWFyQ29sb3IoKSA9
IGRlZmF1bHQ7CisKK3ZvaWQgQ2xlYXJDb2xvcjo6YXBwbHkoR3JhcGhpY3NDb250ZXh0M0QmIGNv
bnRleHQpIGNvbnN0Cit7CisgICAgY29udGV4dC5jbGVhckNvbG9yKG1fciwgbV9nLCBtX2IsIG1f
YSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIENvbW1hbmRMaXN0M0QKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29t
bWFuZGxpc3RzM2QvQ29tbWFuZExpc3QzREl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb21tYW5kbGlzdHMzZC9Db21tYW5kTGlzdDNESXRlbXMuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjhkNjQ5NTA5MjkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb21tYW5kbGlzdHMzZC9Db21t
YW5kTGlzdDNESXRlbXMuaApAQCAtMCwwICsxLDIxMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIgLy8gR3JhcGhpY3NDb250ZXh0
M0RSZW1vdGU/CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBDb21tYW5kTGlzdDNEIHsKKwor
ZW51bSBjbGFzcyBJdGVtVHlwZSA6IHVpbnQ4X3QgeworICAgIENsZWFyLAorICAgIENsZWFyQ29s
b3IsCit9OworCitjbGFzcyBJdGVtIDogcHVibGljIFJlZkNvdW50ZWQ8SXRlbT4geworcHVibGlj
OgorICAgIEl0ZW0oKSA9IGRlbGV0ZTsKKworICAgIEl0ZW0oSXRlbVR5cGUpOworICAgIHZpcnR1
YWwgfkl0ZW0oKTsKKworICAgIEl0ZW1UeXBlIHR5cGUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fdHlwZTsKKyAgICB9CisKKyAgICAvLyBHcmFwaGljc0NvbnRleHQzRFJlbW90ZT8K
KyAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0M0QmKSBjb25zdCA9IDA7CisK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxJdGVtPj4g
ZGVjb2RlKERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBJdGVtVHlwZSBtX3R5cGU7Cit9Owor
CitjbGFzcyBDbGVhciA6IHB1YmxpYyBJdGVtIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPENs
ZWFyPiBjcmVhdGUoR0MzRGJpdGZpZWxkIGJpdG1hc2spCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDbGVhcihiaXRtYXNrKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+Q2xl
YXIoKTsKKworICAgIEdDM0RiaXRmaWVsZCBiaXRtYXNrKCkgY29uc3QgeyByZXR1cm4gbV9iaXRt
YXNrOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2RlPiBzdGF0aWMgT3B0aW9uYWw8UmVm
PENsZWFyQ29sb3I+PiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0
IENsZWFyKEdDM0RiaXRmaWVsZCk7CisKKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dDNE
JikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBHQzNEYml0ZmllbGQgbV9iaXRtYXNrOworfTsKKwor
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgQ2xlYXI6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9iaXRtYXNrOworfQorCit0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8UmVmPENsZWFyPj4gQ2xlYXI6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPEdDM0RiaXRmaWVsZD4gYml0bWFzazsKKyAgICBk
ZWNvZGVyID4+IGJpdG1hc2s7CisgICAgaWYgKCFiaXRtYXNrKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgLy8gVmFsaWRhdGlvbj8KKworICAgIHJldHVybiBDbGVhcigqYml0
bWFzayk7Cit9CisKK2NsYXNzIENsZWFyQ29sb3IgOiBwdWJsaWMgSXRlbSB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxDbGVhckNvbG9yPiBjcmVhdGUoR0MzRGNsYW1wZiByLCBHQzNEY2xhbXBm
IGcsIEdDM0RjbGFtcGYgYiwgR0MzRGNsYW1wZiBhKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQ2xlYXJDb2xvcihyLCBnLCBiLCBhKSk7CisgICAgfQorCisgICAgdmlydHVh
bCB+Q2xlYXJDb2xvcigpOworCisgICAgR0MzRGNsYW1wZiByKCkgY29uc3QgeyByZXR1cm4gbV9y
OyB9CisgICAgR0MzRGNsYW1wZiBnKCkgY29uc3QgeyByZXR1cm4gbV9nOyB9CisgICAgR0MzRGNs
YW1wZiBiKCkgY29uc3QgeyByZXR1cm4gbV9iOyB9CisgICAgR0MzRGNsYW1wZiBhKCkgY29uc3Qg
eyByZXR1cm4gbV9hOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPFJlZjxDbGVhckNvbG9yPj4gZGVjb2RlKERlY29kZXImKTsKKworcHJpdmF0ZToKKyAg
ICBDbGVhckNvbG9yKEdDM0RjbGFtcGYgciwgR0MzRGNsYW1wZiBnLCBHQzNEY2xhbXBmIGIsIEdD
M0RjbGFtcGYgYSk7CisKKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dDNEJikgY29uc3Qg
b3ZlcnJpZGU7CisKKyAgICBHQzNEY2xhbXBmIG1fcjsKKyAgICBHQzNEY2xhbXBmIG1fZzsKKyAg
ICBHQzNEY2xhbXBmIG1fYjsKKyAgICBHQzNEY2xhbXBmIG1fYTsKK307CisKK3RlbXBsYXRlPGNs
YXNzIEVuY29kZXI+Cit2b2lkIENsZWFyQ29sb3I6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAoreworICAgIGVuY29kZXIgPDwgbV9yOworICAgIGVuY29kZXIgPDwgbV9nOworICAgIGVu
Y29kZXIgPDwgbV9iOworICAgIGVuY29kZXIgPDwgbV9hOworfQorCit0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgorT3B0aW9uYWw8UmVmPENsZWFyQ29sb3I+PiBDbGVhckNvbG9yOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxHQzNEY2xhbXBmPiByOworICAgIGRlY29k
ZXIgPj4gcjsKKyAgICBpZiAoIXIpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICBPcHRpb25hbDxHQzNEY2xhbXBmPiBnOworICAgIGRlY29kZXIgPj4gZzsKKyAgICBpZiAoIWcp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxHQzNEY2xhbXBm
PiBiOworICAgIGRlY29kZXIgPj4gYjsKKyAgICBpZiAoIWIpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxHQzNEY2xhbXBmPiBhOworICAgIGRlY29kZXIgPj4g
YTsKKyAgICBpZiAoIWEpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1
cm4gQ2xlYXJDb2xvcjo6Y3JlYXRlKCpyLCAqZywgKmIsICphKTsKK30KKwordGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KK3ZvaWQgSXRlbTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7
CisgICAgZW5jb2RlciA8PCBtX3R5cGU7CisKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNh
c2UgSXRlbVR5cGU6OkNsZWFyOgorICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PENsZWFyPigq
dGhpcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyQ29sb3I6Cisg
ICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8Q2xlYXJDb2xvcj4oKnRoaXMpOworICAgICAgICBi
cmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8
SXRlbT4+IEl0ZW06OmRlY29kZShEZWNvZGVyJiBkZWNvZGUpCit7CisgICAgT3B0aW9uYWw8SXRl
bVR5cGU+IGl0ZW1UeXBlOworICAgIGRlY29kZXIgPj4gaXRlbVR5cGU7CisgICAgaWYgKCFpdGVt
VHlwZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHN3aXRjaCAoKml0ZW1U
eXBlKSB7CisgICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXI6CisgICAgICAgIGlmIChhdXRvIGl0ZW0g
PSBDbGVhcjo6ZGVjb2RlKGRlY29kZXIpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZl
cmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgSXRlbVR5cGU6OkNsZWFyQ29sb3I6CisgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBDbGVhckNv
bG9yOjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5j
ZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQor
Cit9IC8vIG5hbWVzcGFjZSBDb21tYW5kTGlzdDNECisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NvbW1hbmRMaXN0M0RfSVRFTShUb1Zh
bHVlVHlwZU5hbWUpIFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6Q29t
bWFuZExpc3QzRDo6VG9WYWx1ZVR5cGVOYW1lKSBcCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNv
bnN0IFdlYkNvcmU6OkNvbW1hbmRMaXN0M0Q6Okl0ZW0mIGl0ZW0pIHsgcmV0dXJuIGl0ZW0udHlw
ZSgpID09IFdlYkNvcmU6OkNvbW1hbmRMaXN0M0Q6Okl0ZW1UeXBlOjpUb1ZhbHVlVHlwZU5hbWU7
IH0gXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0NvbW1hbmRMaXN0M0RfSVRFTShDbGVhckNvbG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29tbWFuZGxpc3RzM2QvQ29tbWFuZExpc3QzRFByb2Nl
c3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb21tYW5kbGlzdHMz
ZC9Db21tYW5kTGlzdDNEUHJvY2Vzc29yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uMzMyYjUzN2IxZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb21tYW5kbGlzdHMzZC9Db21tYW5kTGlzdDNEUHJvY2Vzc29y
LmNwcApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkNvbW1hbmRMaXN0M0RQcm9jZXNzb3IuaCIKKworI2luY2x1ZGUgIkNvbW1hbmRM
aXN0M0QuaCIKKyNpbmNsdWRlICJDb21tYW5kTGlzdDNESXRlbXMuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitDb21tYW5kTGlzdDNEUHJvY2Vzb3I6OkNvbW1hbmRMaXN0M0RQcm9jZXNzb3Io
UmVmPEdyYXBoaWNzQ29udGV4dDNEPiYmIGNvbnRleHQpCisgICAgOiBtX2NvbnRleHQoV1RGTW92
ZShjb250ZXh0KSkKK3sKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgY29udGV4dC0+c2V0
Q29tbWFuZExpc3QzRFByb2Nlc3Nvcih0aGlzKTsKKyNlbmRpZgorfQorCitDb21tYW5kTGlzdDNE
UHJvY2Vzc29yOjp+Q29tbWFuZExpc3QzRFByb2Nlc3NvcigpID0gZGVmYXVsdDsKKwordm9pZCBD
b21tYW5kTGlzdDNEUHJvY2Vzc29yOjphcHBseUNvbW1hbmRMaXN0KGNvbnN0IENvbW1hbmRMaXN0
M0QmIGxpc3QpCit7CisgICAgQVNTRVJUKG1fY29udGV4dCk7CisKKyAgICBmb3IgKGF1dG8mIGl0
ZW0gOiBsaXN0KQorICAgICAgICBpdGVtLmFwcGx5KG1fY29udGV4dCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29tbWFuZGxpc3RzM2QvQ29tbWFuZExpc3QzRFByb2Nlc3Nvci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29tbWFuZGxpc3RzM2QvQ29tbWFuZExpc3QzRFByb2Nlc3Nv
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42YWI5ZTFkYmQyNAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvbW1h
bmRsaXN0czNkL0NvbW1hbmRMaXN0M0RQcm9jZXNzb3IuaApAQCAtMCwwICsxLDY4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgor
I2luY2x1ZGUgIklPU3VyZmFjZS5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlIDx3
dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBDb21tYW5kTGlzdDNEOworCitjbGFzcyBDb21tYW5kTGlzdDNEUHJvY2Vz
c29yIDogcHVibGljIFJlZkNvdW50ZWQ8Q29tbWFuZExpc3QzRFByb2Nlc3Nvcj4geworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8Q29tbWFuZExpc3QzRFByb2Nlc3Nvcj4gY3JlYXRlKFJlZjxHcmFw
aGljc0NvbnRleHQzRD4mJiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQ29tbWFuZExpc3QzRFByb2Nlc3NvcihXVEZNb3ZlKGNvbnRleHQpKSk7CisgICAgfQor
CisgICAgdmlydHVhbCB+Q29tbWFuZExpc3QzRFByb2Nlc3NvcigpOworCisgICAgdm9pZCBhcHBs
eUNvbW1hbmRMaXN0KGNvbnN0IENvbW1hbmRMaXN0M0QmKTsKKworI2lmIEhBVkUoSU9TVVJGQUNF
KSAmJiBVU0UoT1BFTkdMKQorICAgIHZvaWQgYWxsb2NhdGVJT1N1cmZhY2VCYWNraW5nU3RvcmVX
aXRoU2l6ZShJbnRTaXplLCBib29sKTsKKyAgICB2b2lkIGJpbmRGcmFtZWJ1ZmZlclRvTmV4dEF2
YWlsYWJsZVN1cmZhY2UoKTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IENvbW1h
bmRMaXN0M0RQcm9jZXNzb3IoUmVmPEdyYXBoaWNzQ29udGV4dDNEPiYmIGNvbnRleHQpOworCisg
ICAgUmVmPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7CisKKyNpZiBIQVZFKElPU1VSRkFD
RSkgJiYgVVNFKE9QRU5HTCkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBtX2NvbnRl
bnRzQnVmZmVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IG1fZHJhd2luZ0J1ZmZl
cjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBtX3NwYXJlQnVmZmVyOworICAgIElu
dFNpemUgbV9idWZmZXJTaXplOworICAgIGJvb2wgbV91c2luZ0FscGhhOworI2VuZGlmCit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb21tYW5kbGlzdHMzZC9jb2NvYS9Db21tYW5kTGlzdDNEUHJvY2Vzc29y
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb21tYW5kbGlzdHMz
ZC9jb2NvYS9Db21tYW5kTGlzdDNEUHJvY2Vzc29yQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLmUwMjNiMDU1ZjhlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29tbWFuZGxpc3RzM2QvY29jb2EvQ29tbWFu
ZExpc3QzRFByb2Nlc3NvckNvY29hLm1tCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkNvbW1hbmRMaXN0M0RQcm9jZXNzb3IuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgorCisj
aWYgVVNFKE9QRU5HTCkKKyNpbXBvcnQgPE9wZW5HTC9PcGVuR0wuaD4KKyNpbXBvcnQgPE9wZW5H
TC9nbC5oPgorI2VuZGlmCisKKyNpZiBIQVZFKElPU1VSRkFDRSkgJiYgVVNFKE9QRU5HTCkKKwor
dm9pZCBDb21tYW5kTGlzdDNEUHJvY2Vzc29yOjphbGxvY2F0ZUlPU3VyZmFjZUJhY2tpbmdTdG9y
ZVdpdGhTaXplKEludFNpemUgc2l6ZSwgYm9vbCB1c2luZ0FscGhhKQoreworICAgIG1fYnVmZmVy
U2l6ZSA9IHNpemU7CisgICAgbV91c2luZ0FscGhhID0gdXNpbmdBbHBoYTsKKyAgICBtX2NvbnRl
bnRzQnVmZmVyID0gSU9TdXJmYWNlOjpjcmVhdGUoc2l6ZSwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7
CisgICAgbV9kcmF3aW5nQnVmZmVyID0gSU9TdXJmYWNlOjpjcmVhdGUoc2l6ZSwgc1JHQkNvbG9y
U3BhY2VSZWYoKSk7CisgICAgbV9zcGFyZUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRlKHNpemUs
IHNSR0JDb2xvclNwYWNlUmVmKCkpOworCisgICAgQVNTRVJUKF9jb250ZW50c0J1ZmZlcik7Cisg
ICAgQVNTRVJUKF9kcmF3aW5nQnVmZmVyKTsKKyAgICBBU1NFUlQoX3NwYXJlQnVmZmVyKTsKKwor
ICAgIG1fY29udGVudHNCdWZmZXItPm1pZ3JhdGVDb2xvclNwYWNlVG9Qcm9wZXJ0aWVzKCk7Cisg
ICAgbV9kcmF3aW5nQnVmZmVyLT5taWdyYXRlQ29sb3JTcGFjZVRvUHJvcGVydGllcygpOworICAg
IG1fc3BhcmVCdWZmZXItPm1pZ3JhdGVDb2xvclNwYWNlVG9Qcm9wZXJ0aWVzKCk7Cit9CisKK3Zv
aWQgQ29tbWFuZExpc3QzRFByb2Nlc3Nvcjo6YmluZEZyYW1lYnVmZmVyVG9OZXh0QXZhaWxhYmxl
U3VyZmFjZSgpCit7CisgICAgR0MzRGVudW0gdGV4dHVyZSA9IG1fY29udGV4dC0+cGxhdGZvcm1U
ZXh0dXJlKCk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFX1JFQ1RBTkdMRV9BUkIsIHRl
eHR1cmUpOworCisgICAgaWYgKG1fZHJhd2luZ0J1ZmZlciAmJiBtX2RyYXdpbmdCdWZmZXItPmlz
SW5Vc2UoKSkKKyAgICAgICAgc3RkOjpzd2FwKG1fZHJhd2luZ0J1ZmZlciwgbV9zcGFyZUJ1ZmZl
cik7CisKKyAgICBJT1N1cmZhY2VSZWYgaW9TdXJmYWNlID0gbV9kcmF3aW5nQnVmZmVyLT5zdXJm
YWNlKCk7CisgICAgR0MzRGVudW0gaW50ZXJuYWxGb3JtYXQgPSBtX3VzaW5nQWxwaGEgPyBHTF9S
R0JBIDogR0xfUkdCOworCisgICAgLy8gTGluayB0aGUgSU9TdXJmYWNlIHRvIHRoZSB0ZXh0dXJl
LgorICAgIENHTEVycm9yIGVycm9yID0gQ0dMVGV4SW1hZ2VJT1N1cmZhY2UyRChtX2NvbnRleHQt
PnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKSwgR0xfVEVYVFVSRV9SRUNUQU5HTEVfQVJCLCBp
bnRlcm5hbEZvcm1hdCwgbV9idWZmZXJTaXplLndpZHRoKCksIG1fYnVmZmVyU2l6ZS5oZWlnaHQo
KSwgR0xfQkdSQSwgR0xfVU5TSUdORURfSU5UXzhfOF84XzhfUkVWLCBpb1N1cmZhY2UsIDApOwor
ICAgIEFTU0VSVF9VTlVTRUQoZXJyb3IsIGVycm9yID09IGtDR0xOb0Vycm9yKTsKK30KKworI2Vu
ZGlmIC8vIEhBVkUoSU9TVVJGQUNFKSAmJiBVU0UoT1BFTkdMKQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>