<?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>229544</bug_id>
          
          <creation_ts>2021-08-26 02:08:34 -0700</creation_ts>
          <short_desc>[JSC] op_put_private_name should use modern IC and remove ByValInfo</short_desc>
          <delta_ts>2021-08-26 21:27:18 -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>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1787512</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-26 02:08:34 -0700</bug_when>
    <thetext>[JSC] op_put_private_name should use modern IC and remove ByValInfo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787513</commentid>
    <comment_count>1</comment_count>
      <attachid>436482</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-26 02:08:53 -0700</bug_when>
    <thetext>Created attachment 436482
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787522</commentid>
    <comment_count>2</comment_count>
      <attachid>436487</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-26 03:08:28 -0700</bug_when>
    <thetext>Created attachment 436487
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787536</commentid>
    <comment_count>3</comment_count>
      <attachid>436494</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-26 04:17:30 -0700</bug_when>
    <thetext>Created attachment 436494
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787695</commentid>
    <comment_count>4</comment_count>
      <attachid>436536</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-26 11:26:03 -0700</bug_when>
    <thetext>Created attachment 436536
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787895</commentid>
    <comment_count>5</comment_count>
      <attachid>436594</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-26 17:40:07 -0700</bug_when>
    <thetext>Created attachment 436594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787917</commentid>
    <comment_count>6</comment_count>
      <attachid>436599</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-26 18:41:14 -0700</bug_when>
    <thetext>Created attachment 436599
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787927</commentid>
    <comment_count>7</comment_count>
      <attachid>436599</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-08-26 19:12:40 -0700</bug_when>
    <thetext>Comment on attachment 436599
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787948</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-26 21:26:51 -0700</bug_when>
    <thetext>Committed r281684 (241034@main): &lt;https://commits.webkit.org/241034@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787949</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-26 21:27:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/82421542&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436482</attachid>
            <date>2021-08-26 02:08:53 -0700</date>
            <delta_ts>2021-08-26 03:40:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229544-20210826020852.patch</filename>
            <type>text/plain</type>
            <size>59695</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MGFlNGU2MmViNzc4ZjA5NzExNTE0OTZkNzE1MWI3MTFjMmUzZDE4Li4zZDE0NTdkYjdhZWQ2Yzlk
NzAxZjQ5ZTBhOTM0MDVkOWFmODI5NzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NyBAQAorMjAyMS0wOC0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIG9wX3B1dF9wcml2YXRlX25hbWUgc2hvdWxkIHVzZSBtb2Rlcm4g
SUMgYW5kIHJlbW92ZSBCeVZhbEluZm8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyOTU0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9CeVZhbEluZm8u
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5VmFsSW5mby5oOiBSZW1vdmVkLgor
ICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6Z2V0SUNTdGF0dXNNYXApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnN0cm9uZ2x5Vmlz
aXRTdHJvbmdSZWZlcmVuY2VzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5kQnlWYWxJ
bmZvKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRCeVZhbEluZm8pOiBE
ZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVj
b2RlL0lDU3RhdHVzTWFwLmg6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8u
Y3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQpOgorICAgICAgICAq
IGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlND
OjpKSVQ6OmxpbmspOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlRXhjZXB0aW9u
SGFuZGxlcnMpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKEpTQzo6QnlWYWxDb21w
aWxhdGlvbkluZm86OkJ5VmFsQ29tcGlsYXRpb25JbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSklUX09QRVJB
VElPTik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3ByaXZh
dGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFt
ZSk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVD
YWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVk
SWQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRQcml2YXRlTmFtZVdpdGhD
YWNoZWRJZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEJ5VmFsSWRlbnRpZmll
ckNoZWNrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dFBy
aXZhdGVOYW1lV2l0aENhY2hlZElkKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvUmVwYXRjaC5j
cHA6CisgICAgICAgIChKU0M6OmFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5RnVuY3Rpb24pOgorICAg
ICAgICAoSlNDOjphcHByb3ByaWF0ZU9wdGltaXppbmdQdXRCeUZ1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6cmVzZXRQdXRCeSk6CisgICAgICAgICogaml0L1JlcGF0Y2guaDoKKwogMjAyMS0wOC0y
NSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFBv
bHltb3JwaGljIFB1dEJ5VmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMyM2Q4
YTQwZTFmNmUyM2ZjZTI3ZWQ3YzA4ZGI1MzI0NzNiMjZhNTkuLmE2MDE5NmUyYzY3MDIzYzgxMGQ2
MmYyNTA5NjgzYjgxM2YxZmYwNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00
NDQsNyArNDQ0LDYgQEAKIAkJMEY3REYxM0MxRTI5NzExMzAwOTU5NTFCIC8qIEpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0SGVhcENlbGxUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjdERjEzQTFFMjk3MTBFMDA5NTk1MUIgLyogSlNEZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjdERjE0NjFFMkJFRjZBMDA5NTk1MUIgLyogQmxvY2tEaXJlY3RvcnlJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjdERjE0NTFFMkJFRjY4MDA5NTk1MUIgLyogQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3Rjk4OEMxRDk1
OTZDODAwRjRGMTJFIC8qIERGR1N0b3JlQmFycmllckNsdXN0ZXJpbmdQaGFzZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3Rjk4OEExRDk1OTZDMzAw
RjRGMTJFIC8qIERGR1N0b3JlQmFycmllckNsdXN0ZXJpbmdQaGFzZS5oICovOyB9OwotCQkwRjgw
MjNFQTE2MTM4MzJCMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlW
YWxJbmZvLmggKi87IH07CiAJCTBGODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9j
YXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGODM2
NEI3MTY0QjBDMTEwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODM2NEI1MTY0QjBDMEUwMDUzMzI5
QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24uaCAqLzsgfTsKIAkJMEY4NkEyNkYxRDZGN0IzMzAwQ0Iw
QzkyIC8qIEdDVHlwZU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY4NkEyNkUxRDZGN0IzMTAwQ0IwQzkyIC8qIEdDVHlwZU1hcC5oICovOyB9OwpA
QCAtMjgyOCw3ICsyODI3LDYgQEAKIAkJMEY3REYxNDUxRTJCRUY2ODAwOTU5NTFCIC8qIEJsb2Nr
RGlyZWN0b3J5SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9j
a0RpcmVjdG9yeUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3Rjk4
ODkxRDk1OTZDMzAwRjRGMTJFIC8qIERGR1N0b3JlQmFycmllckNsdXN0ZXJpbmdQaGFzZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTdG9yZUJhcnJpZXJDbHVz
dGVyaW5nUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR1N0b3JlQmFycmllckNsdXN0ZXJpbmdQaGFz
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGN0Y5ODhBMUQ5NTk2QzMwMEY0
RjEyRSAvKiBERkdTdG9yZUJhcnJpZXJDbHVzdGVyaW5nUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gREZHU3RvcmVCYXJyaWVyQ2x1c3RlcmluZ1BoYXNlLmg7IHBhdGgg
PSBkZmcvREZHU3RvcmVCYXJyaWVyQ2x1c3RlcmluZ1BoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnlWYWxJbmZvLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRp
b25Qcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5
QWxsb2NhdGlvblByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgz
MzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdC
cmFuY2hEaXJlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnJh
bmNoRGlyZWN0aW9uLmg7IHBhdGggPSBkZmcvREZHQnJhbmNoRGlyZWN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MTM1LDcgKzUxMzMsNiBAQAogCQlFMzU1RDM4RTIyNDQ2
ODZDMDA4RjFBRDYgLyogR2xvYmFsRXhlY3V0YWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBH
bG9iYWxFeGVjdXRhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1Njk4
NzEyMjg0MTE4MzAwOENEQ0NCIC8qIFBhY2tlZENlbGxQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFj
a2VkQ2VsbFB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzVBMEI5QzIyMEFE
ODdBMDBBQzQ0NzQgLyogRXhlY3V0YWJsZUJhc2VJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEV4ZWN1dGFibGVCYXNlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlFMzVCQTJDMDI0MUEwRThDMDBCNjcwODYgLyogQnlWYWxJbmZvLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEJ5VmFsSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzNUNBMTRGMURCQzNBNTYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NSklUQWJzdHJhY3RIZWFw
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1Q0ExNTAxREJDM0E1NjAwRjgz
NTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBET01KSVRBYnN0cmFjdEhlYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM1Q0ExNTExREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEhlYXBSYW5nZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01KSVRIZWFwUmFuZ2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtODU1NCw4ICs4NTUxLDYgQEAKIAkJCQlFM0QyNjQyQTFE
MzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRlci5oICovLAogCQkJCTUzRDM1NDk4MjQw
RDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZVVzZURlZi5jcHAgKi8sCiAJCQkJMEY4ODVFMTAxODQ5
QTNCRTAwRjFFM0ZBIC8qIEJ5dGVjb2RlVXNlRGVmLmggKi8sCi0JCQkJRTM1QkEyQzAyNDFBMEU4
QzAwQjY3MDg2IC8qIEJ5VmFsSW5mby5jcHAgKi8sCi0JCQkJMEY4MDIzRTkxNjEzODMyMzAwQTBC
QTQ1IC8qIEJ5VmFsSW5mby5oICovLAogCQkJCTBGNjRCMjc3MUE3OTU3QjIwMDZFNEU2NiAvKiBD
YWxsRWRnZS5jcHAgKi8sCiAJCQkJMEY2NEIyNzgxQTc5NTdCMjAwNkU0RTY2IC8qIENhbGxFZGdl
LmggKi8sCiAJCQkJMEYwQjgzQUUxNEJDRjcxNDAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5jcHAg
Ki8sCkBAIC05NDczLDcgKzk0NjgsNiBAQAogCQkJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAv
KiBCeXRlY29kZVJld3JpdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTE0RjIxOTE4QjNFMTY3
MDA5OEZGOEIgLyogQnl0ZWNvZGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjg4NUUxMTE4NDlB
M0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VEZWYuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGODAy
M0VBMTYxMzgzMkIwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUZF
OERFNTRCMjNBQzFEQUQwMDVDOTE0MiAvKiBDYWNoZWFibGVJZGVudGlmaWVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRThERTU0RDIzQUMxRTg2MDA1QzkxNDIgLyogQ2FjaGVhYmxlSWRlbnRpZmll
cklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NENBMzUwMjIyNDE4MDEwMDgxNzc4OSAv
KiBDYWNoZWRCeXRlY29kZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQKaW5kZXggNzA3N2VmOWFlMzExNzZmNjM4NWViZTM0Y2NiMzFhNTA1YzE5MWVjNS4uNTJiOTNl
ZThkOGJiYTY2MDY0ZGIyMDE4ZjNmMzE3NzAyZjc2YWE5YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3Vy
Y2VzLnR4dApAQCAtMTk3LDcgKzE5Nyw2IEBAIGJ5dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQcm9w
ZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwCiBieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCiBi
eXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcAogYnl0ZWNvZGUvQXJyYXlQcm9maWxl
LmNwcAotYnl0ZWNvZGUvQnlWYWxJbmZvLmNwcAogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2Nr
LmNwcAogYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCiBieXRlY29kZS9CeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeVZhbEluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFs
SW5mby5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1M2U2NjNlOGMxODZlODBj
MzNkNmYyNDRmMTgzZGYzZDllZjNhZTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiQnlWYWxJbmZvLmgiCi0KLSNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5o
IgotCi1uYW1lc3BhY2UgSlNDIHsKLQotI2lmIEVOQUJMRShKSVQpCi0KLXRlbXBsYXRlPHR5cGVu
YW1lIFZpc2l0b3I+Ci12b2lkIEJ5VmFsSW5mbzo6dmlzaXRBZ2dyZWdhdGVJbXBsKFZpc2l0b3Im
IHZpc2l0b3IpCi17Ci0gICAgY2FjaGVkSWQudmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7Ci19Ci0K
LURFRklORV9WSVNJVF9BR0dSRUdBVEUoQnlWYWxJbmZvKTsKLQotI2VuZGlmIC8vIEVOQUJMRShK
SVQpCi0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5VmFsSW5mby5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjI2ZmIxNmY1ZGI3
NDRmN2ZlNTU2YmVjNzU4ZDdjZWEwNGU0YWExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbElu
Zm8uaAorKysgL2Rldi9udWxsCkBAIC0xLDMwMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEyLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
ICJDYWNoZWFibGVJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiQ2xhc3NJbmZvLmgiCi0jaW5jbHVk
ZSAiQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiSW5kZXhpbmdUeXBlLmgiCi0jaW5jbHVkZSAi
SklUU3R1YlJvdXRpbmUuaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKLQotbmFtZXNwYWNlIEpT
QyB7Ci0KLWNsYXNzIFN5bWJvbDsKLQotI2lmIEVOQUJMRShKSVQpCi0KLWNsYXNzIEFycmF5UHJv
ZmlsZTsKLWNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOwotCi1lbnVtIEpJVEFycmF5TW9kZSA6IHVp
bnQ4X3QgewotICAgIEpJVEludDMyLAotICAgIEpJVERvdWJsZSwKLSAgICBKSVRDb250aWd1b3Vz
LAotICAgIEpJVEFycmF5U3RvcmFnZSwKLSAgICBKSVREaXJlY3RBcmd1bWVudHMsCi0gICAgSklU
U2NvcGVkQXJndW1lbnRzLAotICAgIEpJVEludDhBcnJheSwKLSAgICBKSVRJbnQxNkFycmF5LAot
ICAgIEpJVEludDMyQXJyYXksCi0gICAgSklUVWludDhBcnJheSwKLSAgICBKSVRVaW50OENsYW1w
ZWRBcnJheSwKLSAgICBKSVRVaW50MTZBcnJheSwKLSAgICBKSVRVaW50MzJBcnJheSwKLSAgICBK
SVRGbG9hdDMyQXJyYXksCi0gICAgSklURmxvYXQ2NEFycmF5LAotICAgIEpJVEJpZ0ludDY0QXJy
YXksCi0gICAgSklUQmlnVWludDY0QXJyYXksCi19OwotCi1pbmxpbmUgYm9vbCBpc09wdGltaXph
YmxlSW5kZXhpbmdUeXBlKEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUpCi17Ci0gICAgc3dpdGNo
IChpbmRleGluZ1R5cGUpIHsKLSAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoKLSAg
ICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6Ci0gICAgY2FzZSBBTExfQ09OVElHVU9V
U19JTkRFWElOR19UWVBFUzoKLSAgICBjYXNlIEFSUkFZX1dJVEhfQVJSQVlfU1RPUkFHRV9JTkRF
WElOR19UWVBFUzoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQotaW5saW5lIGJvb2wgaGFzT3B0aW1pemFibGVJbmRl
eGluZ0ZvckpTVHlwZShKU1R5cGUgdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBj
YXNlIERpcmVjdEFyZ3VtZW50c1R5cGU6Ci0gICAgY2FzZSBTY29wZWRBcmd1bWVudHNUeXBlOgot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotfQotCi1pbmxpbmUgYm9vbCBoYXNPcHRpbWl6YWJsZUluZGV4aW5nRm9yQ2xhc3NJ
bmZvKGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQotewotICAgIHJldHVybiBpc1R5cGVkVmll
dyhjbGFzc0luZm8tPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSk7Ci19Ci0KLWlubGluZSBib29sIGhh
c09wdGltaXphYmxlSW5kZXhpbmcoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi17Ci0gICAgcmV0dXJu
IGlzT3B0aW1pemFibGVJbmRleGluZ1R5cGUoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkKLSAg
ICAgICAgfHwgaGFzT3B0aW1pemFibGVJbmRleGluZ0ZvckpTVHlwZShzdHJ1Y3R1cmUtPnR5cGVJ
bmZvKCkudHlwZSgpKQotICAgICAgICB8fCBoYXNPcHRpbWl6YWJsZUluZGV4aW5nRm9yQ2xhc3NJ
bmZvKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkpOwotfQotCi1pbmxpbmUgSklUQXJyYXlNb2RlIGpp
dEFycmF5TW9kZUZvckluZGV4aW5nVHlwZShJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKQotewot
ICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKSB7Ci0gICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdf
VFlQRVM6Ci0gICAgICAgIHJldHVybiBKSVRJbnQzMjsKLSAgICBjYXNlIEFMTF9ET1VCTEVfSU5E
RVhJTkdfVFlQRVM6Ci0gICAgICAgIHJldHVybiBKSVREb3VibGU7Ci0gICAgY2FzZSBBTExfQ09O
VElHVU9VU19JTkRFWElOR19UWVBFUzoKLSAgICAgICAgcmV0dXJuIEpJVENvbnRpZ3VvdXM7Ci0g
ICAgY2FzZSBBUlJBWV9XSVRIX0FSUkFZX1NUT1JBR0VfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAg
IHJldHVybiBKSVRBcnJheVN0b3JhZ2U7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQ1JBU0goKTsK
LSAgICAgICAgcmV0dXJuIEpJVENvbnRpZ3VvdXM7Ci0gICAgfQotfQotCi1pbmxpbmUgSklUQXJy
YXlNb2RlIGppdEFycmF5TW9kZUZvckpTVHlwZShKU1R5cGUgdHlwZSkKLXsKLSAgICBzd2l0Y2gg
KHR5cGUpIHsKLSAgICBjYXNlIERpcmVjdEFyZ3VtZW50c1R5cGU6Ci0gICAgICAgIHJldHVybiBK
SVREaXJlY3RBcmd1bWVudHM7Ci0gICAgY2FzZSBTY29wZWRBcmd1bWVudHNUeXBlOgotICAgICAg
ICByZXR1cm4gSklUU2NvcGVkQXJndW1lbnRzOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBKSVRDb250aWd1b3VzOwot
ICAgIH0KLX0KLQotaW5saW5lIEpJVEFycmF5TW9kZSBqaXRBcnJheU1vZGVGb3JDbGFzc0luZm8o
Y29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCi17Ci0gICAgc3dpdGNoIChjbGFzc0luZm8tPnR5
cGVkQXJyYXlTdG9yYWdlVHlwZSkgewotICAgIGNhc2UgVHlwZUludDg6Ci0gICAgICAgIHJldHVy
biBKSVRJbnQ4QXJyYXk7Ci0gICAgY2FzZSBUeXBlSW50MTY6Ci0gICAgICAgIHJldHVybiBKSVRJ
bnQxNkFycmF5OwotICAgIGNhc2UgVHlwZUludDMyOgotICAgICAgICByZXR1cm4gSklUSW50MzJB
cnJheTsKLSAgICBjYXNlIFR5cGVVaW50ODoKLSAgICAgICAgcmV0dXJuIEpJVFVpbnQ4QXJyYXk7
Ci0gICAgY2FzZSBUeXBlVWludDhDbGFtcGVkOgotICAgICAgICByZXR1cm4gSklUVWludDhDbGFt
cGVkQXJyYXk7Ci0gICAgY2FzZSBUeXBlVWludDE2OgotICAgICAgICByZXR1cm4gSklUVWludDE2
QXJyYXk7Ci0gICAgY2FzZSBUeXBlVWludDMyOgotICAgICAgICByZXR1cm4gSklUVWludDMyQXJy
YXk7Ci0gICAgY2FzZSBUeXBlRmxvYXQzMjoKLSAgICAgICAgcmV0dXJuIEpJVEZsb2F0MzJBcnJh
eTsKLSAgICBjYXNlIFR5cGVGbG9hdDY0OgotICAgICAgICByZXR1cm4gSklURmxvYXQ2NEFycmF5
OwotICAgIGNhc2UgVHlwZUJpZ0ludDY0OgotICAgICAgICByZXR1cm4gSklUQmlnSW50NjRBcnJh
eTsKLSAgICBjYXNlIFR5cGVCaWdVaW50NjQ6Ci0gICAgICAgIHJldHVybiBKSVRCaWdVaW50NjRB
cnJheTsKLSAgICBkZWZhdWx0OgotICAgICAgICBDUkFTSCgpOwotICAgICAgICByZXR1cm4gSklU
Q29udGlndW91czsKLSAgICB9Ci19Ci0KLWlubGluZSBib29sIGppdEFycmF5TW9kZVBlcm1pdHNQ
dXQoSklUQXJyYXlNb2RlIG1vZGUpCi17Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBK
SVREaXJlY3RBcmd1bWVudHM6Ci0gICAgY2FzZSBKSVRTY29wZWRBcmd1bWVudHM6Ci0gICAgLy8g
RklYTUU6IE9wdGltaXplIEJpZ0ludDY0QXJyYXkgLyBCaWdVaW50NjRBcnJheSBpbiBJQwotICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjExODMKLSAgICBj
YXNlIEpJVEJpZ0ludDY0QXJyYXk6Ci0gICAgY2FzZSBKSVRCaWdVaW50NjRBcnJheToKLSAgICAg
ICAgLy8gV2UgY291bGQgc3VwcG9ydCBwdXRfYnlfdmFsIG9uIHRoZXNlIGF0IHNvbWUgcG9pbnQs
IGJ1dCBpdCdzIGp1c3Qgbm90IHRoYXQgcHJvZml0YWJsZQotICAgICAgICAvLyBhdCB0aGUgbW9t
ZW50LgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotfQotCi1pbmxpbmUgYm9vbCBqaXRBcnJheU1vZGVQZXJtaXRzUHV0RGly
ZWN0KEpJVEFycmF5TW9kZSBtb2RlKQotewotICAgIC8vIFdlIGRvbid0IGFsbG93IHR5cGVkIGFy
cmF5IHB1dERpcmVjdCBoZXJlIHNpbmNlIHB1dERpcmVjdCBoYXMKLSAgICAvLyBkZWZpbmVPd25Q
cm9wZXJ0eSh7Y29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTp0cnVlLCBlbnVtZXJhYmxlOnRy
dWV9KQotICAgIC8vIHNlbWFudGljcy4gVHlwZWQgYXJyYXkgaW5kZXhlZCBwcm9wZXJ0aWVzIGFy
ZSBub24tY29uZmlndXJhYmxlIGJ5Ci0gICAgLy8gZGVmYXVsdCwgc28gd2UgY2FuJ3Qgc2ltcGx5
IHN0b3JlIHRvIGEgdHlwZWQgYXJyYXkgZm9yIHB1dERpcmVjdC4KLSAgICAvLwotICAgIC8vIFdl
IGNvdWxkIG1vZGVsIHB1dERpcmVjdCBvbiBTY29wZWRBcmd1bWVudHMgYW5kIERpcmVjdEFyZ3Vt
ZW50cywgYnV0IHdlCi0gICAgLy8gaGF2ZW4ndCBmb3VuZCBhbnkgcGVyZm9ybWFuY2UgaW5jZW50
aXZlIHRvIGRvIGl0IHlldC4KLSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEpJVEludDMy
OgotICAgIGNhc2UgSklURG91YmxlOgotICAgIGNhc2UgSklUQ29udGlndW91czoKLSAgICBjYXNl
IEpJVEFycmF5U3RvcmFnZToKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQotaW5saW5lIFR5cGVkQXJyYXlUeXBlIHR5
cGVkQXJyYXlUeXBlRm9ySklUQXJyYXlNb2RlKEpJVEFycmF5TW9kZSBtb2RlKQotewotICAgIHN3
aXRjaCAobW9kZSkgewotICAgIGNhc2UgSklUSW50OEFycmF5OgotICAgICAgICByZXR1cm4gVHlw
ZUludDg7Ci0gICAgY2FzZSBKSVRJbnQxNkFycmF5OgotICAgICAgICByZXR1cm4gVHlwZUludDE2
OwotICAgIGNhc2UgSklUSW50MzJBcnJheToKLSAgICAgICAgcmV0dXJuIFR5cGVJbnQzMjsKLSAg
ICBjYXNlIEpJVFVpbnQ4QXJyYXk6Ci0gICAgICAgIHJldHVybiBUeXBlVWludDg7Ci0gICAgY2Fz
ZSBKSVRVaW50OENsYW1wZWRBcnJheToKLSAgICAgICAgcmV0dXJuIFR5cGVVaW50OENsYW1wZWQ7
Ci0gICAgY2FzZSBKSVRVaW50MTZBcnJheToKLSAgICAgICAgcmV0dXJuIFR5cGVVaW50MTY7Ci0g
ICAgY2FzZSBKSVRVaW50MzJBcnJheToKLSAgICAgICAgcmV0dXJuIFR5cGVVaW50MzI7Ci0gICAg
Y2FzZSBKSVRGbG9hdDMyQXJyYXk6Ci0gICAgICAgIHJldHVybiBUeXBlRmxvYXQzMjsKLSAgICBj
YXNlIEpJVEZsb2F0NjRBcnJheToKLSAgICAgICAgcmV0dXJuIFR5cGVGbG9hdDY0OwotICAgIGNh
c2UgSklUQmlnSW50NjRBcnJheToKLSAgICAgICAgcmV0dXJuIFR5cGVCaWdJbnQ2NDsKLSAgICBj
YXNlIEpJVEJpZ1VpbnQ2NEFycmF5OgotICAgICAgICByZXR1cm4gVHlwZUJpZ1VpbnQ2NDsKLSAg
ICBkZWZhdWx0OgotICAgICAgICBDUkFTSCgpOwotICAgICAgICByZXR1cm4gTm90VHlwZWRBcnJh
eTsKLSAgICB9Ci19Ci0KLWlubGluZSBKSVRBcnJheU1vZGUgaml0QXJyYXlNb2RlRm9yU3RydWN0
dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQotewotICAgIGlmIChpc09wdGltaXphYmxlSW5kZXhp
bmdUeXBlKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKQotICAgICAgICByZXR1cm4gaml0QXJy
YXlNb2RlRm9ySW5kZXhpbmdUeXBlKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpOwotICAgIAot
ICAgIGlmIChoYXNPcHRpbWl6YWJsZUluZGV4aW5nRm9ySlNUeXBlKHN0cnVjdHVyZS0+dHlwZUlu
Zm8oKS50eXBlKCkpKQotICAgICAgICByZXR1cm4gaml0QXJyYXlNb2RlRm9ySlNUeXBlKHN0cnVj
dHVyZS0+dHlwZUluZm8oKS50eXBlKCkpOwotICAgIAotICAgIEFTU0VSVChoYXNPcHRpbWl6YWJs
ZUluZGV4aW5nRm9yQ2xhc3NJbmZvKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkpKTsKLSAgICByZXR1
cm4gaml0QXJyYXlNb2RlRm9yQ2xhc3NJbmZvKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkpOwotfQot
Ci1zdHJ1Y3QgQnlWYWxJbmZvIHsKLSAgICBCeVZhbEluZm8oQnl0ZWNvZGVJbmRleCBieXRlY29k
ZUluZGV4KQotICAgICAgICA6IGJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkKLSAgICB7Ci0g
ICAgfQotCi0gICAgdm9pZCBzZXRVcChDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVy
UHRyVGFnPiBleGNlcHRpb25IYW5kbGVyLCBKSVRBcnJheU1vZGUgYXJyYXlNb2RlLCBBcnJheVBy
b2ZpbGUqIGFycmF5UHJvZmlsZSwgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4g
ZG9uZVRhcmdldCwgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gYmFkVHlwZU5l
eHRIb3RQYXRoVGFyZ2V0LCBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBzbG93
UGF0aFRhcmdldCkKLSAgICB7Ci0gICAgICAgIHRoaXMtPmV4Y2VwdGlvbkhhbmRsZXIgPSBleGNl
cHRpb25IYW5kbGVyOwotICAgICAgICB0aGlzLT5kb25lVGFyZ2V0ID0gZG9uZVRhcmdldDsKLSAg
ICAgICAgdGhpcy0+YmFkVHlwZU5leHRIb3RQYXRoVGFyZ2V0ID0gYmFkVHlwZU5leHRIb3RQYXRo
VGFyZ2V0OwotICAgICAgICB0aGlzLT5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoVGFyZ2V0Owot
ICAgICAgICB0aGlzLT5hcnJheVByb2ZpbGUgPSBhcnJheVByb2ZpbGU7Ci0gICAgICAgIHRoaXMt
PnNsb3dQYXRoQ291bnQgPSAwOwotICAgICAgICB0aGlzLT5zdHViSW5mbyA9IG51bGxwdHI7Ci0g
ICAgICAgIHRoaXMtPmFycmF5TW9kZSA9IGFycmF5TW9kZTsKLSAgICAgICAgdGhpcy0+dG9va1Ns
b3dQYXRoID0gZmFsc2U7Ci0gICAgICAgIHRoaXMtPnNlZW4gPSBmYWxzZTsKLSAgICB9Ci0KLSAg
ICBERUNMQVJFX1ZJU0lUX0FHR1JFR0FURTsKLQotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEJ5VmFsSW5mbywgbV9z
bG93T3BlcmF0aW9uKTsgfQotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZOb3RJbmRleEp1
bXBUYXJnZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQnlWYWxJbmZvLCBtX25vdEluZGV4
SnVtcFRhcmdldCk7IH0KLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQmFkVHlwZUp1bXBU
YXJnZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQnlWYWxJbmZvLCBtX2JhZFR5cGVKdW1w
VGFyZ2V0KTsgfQotCi0gICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBtX3Nsb3dPcGVy
YXRpb247Ci0KLSAgICB1bmlvbiB7Ci0gICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJS
b3V0aW5lUHRyVGFnPiBtX25vdEluZGV4SnVtcFRhcmdldDsKLSAgICAgICAgQ29kZUxvY2F0aW9u
SnVtcDxKU0ludGVybmFsUHRyVGFnPiBtX25vdEluZGV4SnVtcDsKLSAgICB9OwotICAgIHVuaW9u
IHsKLSAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IG1fYmFk
VHlwZUp1bXBUYXJnZXQ7Ci0gICAgICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRh
Zz4gbV9iYWRUeXBlSnVtcDsKLSAgICB9OwotCi0gICAgQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0
aW9uSGFuZGxlclB0clRhZz4gZXhjZXB0aW9uSGFuZGxlcjsKLSAgICBDb2RlTG9jYXRpb25MYWJl
bDxKU0ludGVybmFsUHRyVGFnPiBkb25lVGFyZ2V0OwotICAgIENvZGVMb2NhdGlvbkxhYmVsPEpT
SW50ZXJuYWxQdHJUYWc+IGJhZFR5cGVOZXh0SG90UGF0aFRhcmdldDsKLSAgICBDb2RlTG9jYXRp
b25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBzbG93UGF0aFRhcmdldDsKLSAgICBBcnJheVByb2Zp
bGUqIGFycmF5UHJvZmlsZTsKLSAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXg7Ci0gICAg
dW5zaWduZWQgc2xvd1BhdGhDb3VudDsKLSAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+IHN0dWJS
b3V0aW5lOwotICAgIENhY2hlYWJsZUlkZW50aWZpZXIgY2FjaGVkSWQ7IC8vIE9uY2Ugd2Ugc2V0
IGNhY2hlZElkLCB3ZSBtdXN0IG5vdCBjaGFuZ2UgdGhlIHZhbHVlLiBKSVQgY29kZSByZWxpZXMg
b24gdGhhdCBjb25maWd1cmVkIGNhY2hlZElkIGlzIG1hcmtlZCBhbmQgcmV0YWluZWQgYnkgQ29k
ZUJsb2NrIHRocm91Z2ggQnlWYWxJbmZvLgotICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bzsKLSAgICBKSVRBcnJheU1vZGUgYXJyYXlNb2RlOyAvLyBUaGUgYXJyYXkgbW9kZSB0aGF0IHdh
cyBiYWtlZCBpbnRvIHRoZSBpbmxpbmUgSklUIGNvZGUuCi0gICAgYm9vbCB0b29rU2xvd1BhdGgg
OiAxOwotICAgIGJvb2wgc2VlbiA6IDE7Ci19OwotCi1pbmxpbmUgQnl0ZWNvZGVJbmRleCBnZXRC
eVZhbEluZm9CeXRlY29kZUluZGV4KEJ5VmFsSW5mbyogaW5mbykKLXsKLSAgICByZXR1cm4gaW5m
by0+Ynl0ZWNvZGVJbmRleDsKLX0KLQotI2VuZGlmIC8vIEVOQUJMRShKSVQpCi0KLX0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAppbmRleCBkY2VmYzZhZDZjMmRhMGExNDg5OGNmY2Y2MTg5YzZlOTRkMjBlNTZlLi5jNzY2YTI2
OWU4Y2RlZDRkNzFkODY4MmE2N2Q3YzQzYzVmZmE5OTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMzIsNyArMzIsNiBAQAogCiAjaW5jbHVk
ZSAiQXJpdGhQcm9maWxlLmgiCiAjaW5jbHVkZSAiQmFzaWNCbG9ja0xvY2F0aW9uLmgiCi0jaW5j
bHVkZSAiQnlWYWxJbmZvLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVEdW1wZXIuaCIKICNpbmNsdWRl
ICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVP
cGVyYW5kc0ZvckNoZWNrcG9pbnQuaCIKQEAgLTE2MjYsOCArMTYyNSw2IEBAIHZvaWQgQ29kZUJs
b2NrOjpnZXRJQ1N0YXR1c01hcChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBJQ1N0YXR1c01h
cCYgcmVzdWx0KQogICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoc3R1YkluZm8tPmNvZGVPcmln
aW4sIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5zdHViSW5mbyA9IHN0dWJJbmZvOwogICAg
ICAgICAgICAgZm9yIChDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA6IGppdERhdGEtPm1fY2Fs
bExpbmtJbmZvcykKICAgICAgICAgICAgICAgICByZXN1bHQuYWRkKGNhbGxMaW5rSW5mby0+Y29k
ZU9yaWdpbigpLCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUuY2FsbExpbmtJbmZvID0gY2Fs
bExpbmtJbmZvOwotICAgICAgICAgICAgZm9yIChCeVZhbEluZm8qIGJ5VmFsSW5mbyA6IGppdERh
dGEtPm1fYnlWYWxJbmZvcykKLSAgICAgICAgICAgICAgICByZXN1bHQuYWRkKENvZGVPcmlnaW4o
YnlWYWxJbmZvLT5ieXRlY29kZUluZGV4KSwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLmJ5
VmFsSW5mbyA9IGJ5VmFsSW5mbzsKICAgICAgICAgfQogI2lmIEVOQUJMRShERkdfSklUKQogICAg
ICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsKQEAgLTE2OTks
MjQgKzE2OTYsNiBAQCBTdHJ1Y3R1cmVTdHViSW5mbyogQ29kZUJsb2NrOjpmaW5kU3R1YkluZm8o
Q29kZU9yaWdpbiBjb2RlT3JpZ2luKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1CeVZhbElu
Zm8qIENvZGVCbG9jazo6ZmluZEJ5VmFsSW5mbyhDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCi17Ci0g
ICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIGlmIChhdXRvKiBqaXRE
YXRhID0gbV9qaXREYXRhLmdldCgpKSB7Ci0gICAgICAgIGZvciAoQnlWYWxJbmZvKiBieVZhbElu
Zm8gOiBqaXREYXRhLT5tX2J5VmFsSW5mb3MpIHsKLSAgICAgICAgICAgIGlmIChieVZhbEluZm8t
PmJ5dGVjb2RlSW5kZXggPT0gY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGJ5VmFsSW5mbzsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbnVs
bHB0cjsKLX0KLQotQnlWYWxJbmZvKiBDb2RlQmxvY2s6OmFkZEJ5VmFsSW5mbyhCeXRlY29kZUlu
ZGV4IGJ5dGVjb2RlSW5kZXgpCi17Ci0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xv
Y2spOwotICAgIHJldHVybiBlbnN1cmVKSVREYXRhKGxvY2tlcikubV9ieVZhbEluZm9zLmFkZChi
eXRlY29kZUluZGV4KTsKLX0KLQogQ2FsbExpbmtJbmZvKiBDb2RlQmxvY2s6OmFkZENhbGxMaW5r
SW5mbyhDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxv
Y2tlcihtX2xvY2spOwpAQCAtMTgyOCw4ICsxODA3LDYgQEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9u
Z2x5VmlzaXRTdHJvbmdSZWZlcmVuY2VzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2Vy
LAogCiAjaWYgRU5BQkxFKEpJVCkKICAgICBpZiAoYXV0byogaml0RGF0YSA9IG1faml0RGF0YS5n
ZXQoKSkgewotICAgICAgICBmb3IgKEJ5VmFsSW5mbyogYnlWYWxJbmZvIDogaml0RGF0YS0+bV9i
eVZhbEluZm9zKQotICAgICAgICAgICAgYnlWYWxJbmZvLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9y
KTsKICAgICAgICAgZm9yIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gOiBqaXREYXRhLT5t
X3N0dWJJbmZvcykKICAgICAgICAgICAgIHN0dWJJbmZvLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9y
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5k
ZXggZjM4Nzk5MjU2NDI4ZGQ4ZGFiN2UxYmFlYjBlMjQxMGIzMTIzNjAwZC4uNGY3MGZhOWZmODFi
MzNjN2JmMDQ2OTFkYjUyMWY2OTNhYTNmOTRiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaApAQCAtOTcsNyArOTcsNiBAQCBjbGFzcyBNZXRhZGF0YVRhYmxl
OwogY2xhc3MgUENUb0NvZGVPcmlnaW5NYXA7CiBjbGFzcyBSZWdpc3RlckF0T2Zmc2V0TGlzdDsK
IGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOwotc3RydWN0IEJ5VmFsSW5mbzsKIAogREVDTEFSRV9B
TExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoQ29kZUJsb2NrUmFyZURhdGEpOwogCkBAIC0y
NzUsNyArMjc0LDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAg
IEJhZzxKSVRNdWxJQz4gbV9tdWxJQ3M7CiAgICAgICAgIEJhZzxKSVROZWdJQz4gbV9uZWdJQ3M7
CiAgICAgICAgIEJhZzxKSVRTdWJJQz4gbV9zdWJJQ3M7Ci0gICAgICAgIEJhZzxCeVZhbEluZm8+
IG1fYnlWYWxJbmZvczsKICAgICAgICAgQmFnPENhbGxMaW5rSW5mbz4gbV9jYWxsTGlua0luZm9z
OwogICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8Q2FsbExpbmtJbmZvLCBQYWNrZWRSYXdTZW50
aW5lbE5vZGU8Q2FsbExpbmtJbmZvPj4gbV9pbmNvbWluZ0NhbGxzOwogICAgICAgICBTZW50aW5l
bExpbmtlZExpc3Q8UG9seW1vcnBoaWNDYWxsTm9kZSwgUGFja2VkUmF3U2VudGluZWxOb2RlPFBv
bHltb3JwaGljQ2FsbE5vZGU+PiBtX2luY29taW5nUG9seW1vcnBoaWNDYWxsczsKQEAgLTMxNiwx
MCArMzE0LDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICAvLyBP
KG4pIG9wZXJhdGlvbi4gVXNlIGdldElDU3RhdHVzTWFwKCkgdW5sZXNzIHlvdSByZWFsbHkgb25s
eSBpbnRlbmQgdG8gZ2V0IG9uZSBzdHViIGluZm8uCiAgICAgU3RydWN0dXJlU3R1YkluZm8qIGZp
bmRTdHViSW5mbyhDb2RlT3JpZ2luKTsKLSAgICAvLyBPKG4pIG9wZXJhdGlvbi4gVXNlIGdldElD
U3RhdHVzTWFwKCkgdW5sZXNzIHlvdSByZWFsbHkgb25seSBpbnRlbmQgdG8gZ2V0IG9uZSBieS12
YWwtaW5mby4KLSAgICBCeVZhbEluZm8qIGZpbmRCeVZhbEluZm8oQ29kZU9yaWdpbik7Ci0KLSAg
ICBCeVZhbEluZm8qIGFkZEJ5VmFsSW5mbyhCeXRlY29kZUluZGV4KTsKIAogICAgIENhbGxMaW5r
SW5mbyogYWRkQ2FsbExpbmtJbmZvKENvZGVPcmlnaW4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNNYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCmluZGV4IDdhMDU4YzNkMDI1OTZiZjZlYThmZjlh
OGE3MmI0ZGMyYTFkMTg5MjMuLmE3NjhhODVkYzFiZjA5YjI5ZWI0Yjk5NmZlYTc0YmEyMmQzNTAz
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01h
cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCkBA
IC0zOSwxMiArMzksMTAgQEAgY2xhc3MgSW5CeVN0YXR1czsKIGNsYXNzIFB1dEJ5U3RhdHVzOwog
Y2xhc3MgRGVsZXRlQnlTdGF0dXM7CiBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKLXN0cnVjdCBC
eVZhbEluZm87CiAKIHN0cnVjdCBJQ1N0YXR1cyB7CiAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvIHsgbnVsbHB0ciB9OwogICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvIHsgbnVs
bHB0ciB9OwotICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvIHsgbnVsbHB0ciB9OwogICAgIENhbGxM
aW5rU3RhdHVzKiBjYWxsU3RhdHVzIHsgbnVsbHB0ciB9OwogICAgIEdldEJ5U3RhdHVzKiBnZXRT
dGF0dXMgeyBudWxscHRyIH07CiAgICAgSW5CeVN0YXR1cyogaW5TdGF0dXMgeyBudWxscHRyIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmNwcAppbmRleCBmMjdiNzM3NGVmOWFlZTEwN2E3MDE2ZGE4ODFiY2VkZjc4MTlkNDcwLi5l
ZjNiNDk3MDUxYzQyZjRmNGI0N2FiOTk4MDQwZjhkZmNiYWMxOTU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTI4
Nyw2ICsyODcsOSBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpyZXNldChjb25zdCBDb25jdXJy
ZW50SlNMb2NrZXJCYXNlJiBsb2NrZXIsIENvZGVCbG9jayogYwogICAgIGNhc2UgQWNjZXNzVHlw
ZTo6UHV0QnlWYWw6CiAgICAgICAgIHJlc2V0UHV0QnkoY29kZUJsb2NrLCAqdGhpcywgUHV0QnlL
aW5kOjpCeVZhbCk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzVHlwZTo6UHV0UHJp
dmF0ZU5hbWU6CisgICAgICAgIHJlc2V0UHV0QnkoY29kZUJsb2NrLCAqdGhpcywgUHV0QnlLaW5k
OjpQcml2YXRlTmFtZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6SW5C
eUlkOgogICAgICAgICByZXNldEluQnkoY29kZUJsb2NrLCAqdGhpcywgSW5CeUtpbmQ6OkJ5SWQp
OwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmgKaW5kZXggZTY3YmMxMDhiZTMyMGRkNmQyNTllNzdjODFiOWQ1
MWM0NWNmNTg0ZC4uYmUyYzM4YWRiMGU0NTU3ZWY2NDI2MTAwZjYwNmZjOGZjMzQyNTkxYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
LmgKQEAgLTY0LDYgKzY0LDcgQEAgZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50OF90IHsKICAg
ICBEZWxldGVCeUlELAogICAgIERlbGV0ZUJ5VmFsLAogICAgIEdldFByaXZhdGVOYW1lLAorICAg
IFB1dFByaXZhdGVOYW1lLAogICAgIENoZWNrUHJpdmF0ZUJyYW5kLAogICAgIFNldFByaXZhdGVC
cmFuZCwKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggNTBkZTg1NWI2YWM5MGVl
NmQzZDFjOTYxZTQ0ODQ4MjM5NWE0NjE2Zi4uM2EzN2JlZTIzZWUzZTViZWU2NWNmZTI3MDc0OWVh
MGU1YWE2ZjYwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNTE3LDcgKzUxNyw2
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgbV9kZWxCeVZhbElu
ZGV4ID0gMDsKICAgICBtX2luc3RhbmNlT2ZJbmRleCA9IDA7CiAgICAgbV9wcml2YXRlQnJhbmRB
Y2Nlc3NJbmRleCA9IDA7Ci0gICAgbV9ieVZhbEluc3RydWN0aW9uSW5kZXggPSAwOwogICAgIG1f
Y2FsbExpbmtJbmZvSW5kZXggPSAwOwogCiAgICAgdW5zaWduZWQgYnl0ZWNvZGVDb3VudEhhdmlu
Z1Nsb3dDYXNlID0gMDsKQEAgLTkxOSw0NSArOTE4LDYgQEAgdm9pZCBKSVQ6OmxpbmsoKQogICAg
IGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5zdGFuY2VPZnMsIHBhdGNoQnVmZmVyKTsKICAgICBm
aW5hbGl6ZUlubGluZUNhY2hlcyhtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLCBwYXRjaEJ1ZmZlcik7
CiAKLSAgICBpZiAobV9ieVZhbENvbXBpbGF0aW9uSW5mby5zaXplKCkpIHsKLSNpZiBFTkFCTEUo
RVhUUkFfQ1RJX1RIVU5LUykKLSAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwgZXhjZXB0aW9uSGFu
ZGxlcih2bSgpLmdldENUSVN0dWIoaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENv
ZGU8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4oKSk7Ci0jZWxzZQotICAgICAgICBDb2RlTG9jYXRp
b25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBleGNlcHRpb25IYW5kbGVyID0gcGF0Y2hC
dWZmZXIubG9jYXRpb25PZjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPihtX2V4Y2VwdGlvbkhhbmRs
ZXIpOwotI2VuZGlmCi0KLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBieVZhbENvbXBpbGF0aW9u
SW5mbyA6IG1fYnlWYWxDb21waWxhdGlvbkluZm8pIHsKLSAgICAgICAgICAgIFBhdGNoYWJsZUp1
bXAgcGF0Y2hhYmxlTm90SW5kZXhKdW1wID0gYnlWYWxDb21waWxhdGlvbkluZm8ubm90SW5kZXhK
dW1wOwotICAgICAgICAgICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBub3RJ
bmRleEp1bXA7Ci0gICAgICAgICAgICBpZiAoSnVtcChwYXRjaGFibGVOb3RJbmRleEp1bXApLmlz
U2V0KCkpCi0gICAgICAgICAgICAgICAgbm90SW5kZXhKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxK
U0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+
KHBhdGNoYWJsZU5vdEluZGV4SnVtcCkpOwotCi0gICAgICAgICAgICBQYXRjaGFibGVKdW1wIHBh
dGNoYWJsZUJhZFR5cGVKdW1wID0gYnlWYWxDb21waWxhdGlvbkluZm8uYmFkVHlwZUp1bXA7Ci0g
ICAgICAgICAgICBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IGJhZFR5cGVKdW1w
OwotICAgICAgICAgICAgaWYgKEp1bXAocGF0Y2hhYmxlQmFkVHlwZUp1bXApLmlzU2V0KCkpCi0g
ICAgICAgICAgICAgICAgYmFkVHlwZUp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQ
dHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21w
aWxhdGlvbkluZm8uYmFkVHlwZUp1bXApKTsKLQotICAgICAgICAgICAgYXV0byBkb25lVGFyZ2V0
ID0gQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRp
b25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5kb25lVGFyZ2V0KSk7
Ci0gICAgICAgICAgICBhdXRvIG5leHRIb3RQYXRoVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8
SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFn
PihieVZhbENvbXBpbGF0aW9uSW5mby5uZXh0SG90UGF0aFRhcmdldCkpOwotICAgICAgICAgICAg
YXV0byBzbG93UGF0aFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+
KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlv
bkluZm8uc2xvd1BhdGhUYXJnZXQpKTsKLQotICAgICAgICAgICAgYnlWYWxDb21waWxhdGlvbklu
Zm8uYnlWYWxJbmZvLT5zZXRVcCgKLSAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGVyLAot
ICAgICAgICAgICAgICAgIGJ5VmFsQ29tcGlsYXRpb25JbmZvLmFycmF5TW9kZSwKLSAgICAgICAg
ICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5hcnJheVByb2ZpbGUsCi0gICAgICAgICAgICAg
ICAgZG9uZVRhcmdldCwKLSAgICAgICAgICAgICAgICBuZXh0SG90UGF0aFRhcmdldCwKLSAgICAg
ICAgICAgICAgICBzbG93UGF0aFRhcmdldCk7Ci0gICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNl
RGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgewotICAgICAgICAgICAgICAgIGJ5VmFsQ29t
cGlsYXRpb25JbmZvLmJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJnZXQgPSBzbG93UGF0aFRh
cmdldC5yZXRhZ2dlZDxKSVRTdHViUm91dGluZVB0clRhZz4oKTsKLSAgICAgICAgICAgICAgICBi
eVZhbENvbXBpbGF0aW9uSW5mby5ieVZhbEluZm8tPm1fYmFkVHlwZUp1bXBUYXJnZXQgPSBzbG93
UGF0aFRhcmdldC5yZXRhZ2dlZDxKSVRTdHViUm91dGluZVB0clRhZz4oKTsKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgYnlWYWxDb21waWxhdGlvbkluZm8uYnlWYWxJbmZv
LT5tX25vdEluZGV4SnVtcCA9IG5vdEluZGV4SnVtcDsKLSAgICAgICAgICAgICAgICBieVZhbENv
bXBpbGF0aW9uSW5mby5ieVZhbEluZm8tPm1fYmFkVHlwZUp1bXAgPSBiYWRUeXBlSnVtcDsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQogICAgIGZvciAoYXV0byYgY29tcGlsYXRp
b25JbmZvIDogbV9jYWxsQ29tcGlsYXRpb25JbmZvKSB7CiAgICAgICAgIENhbGxMaW5rSW5mbyYg
aW5mbyA9ICpjb21waWxhdGlvbkluZm8uY2FsbExpbmtJbmZvOwogICAgICAgICBpbmZvLnNldENv
ZGVMb2NhdGlvbnMoCkBAIC0xMDYwLDcgKzEwMjAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVFeGNlcHRpb25IYW5kbGVycygpCiAgICAgICAgIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0o
KSk7CiAgICAgfQogCi0gICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrcy5lbXB0eSgpIHx8IG1fYnlW
YWxDb21waWxhdGlvbkluZm8uc2l6ZSgpKSB7CisgICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrcy5l
bXB0eSgpKSB7CiAgICAgICAgIG1fZXhjZXB0aW9uSGFuZGxlciA9IGxhYmVsKCk7CiAgICAgICAg
IG1fZXhjZXB0aW9uQ2hlY2tzLmxpbmsodGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmlu
ZGV4IDZjMzRhYzY3M2EyODJjODhiYTFlYmNmYzRhY2UxODU1ZmEwMjM4MDEuLjc2N2YxZWY0YmYz
MWZhMmM0YTM0ZTE1NmRhOGI1Nzg2MjEzYjE4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApA
QCAtMzcsNyArMzcsNiBAQAogCiAjZGVmaW5lIEFTU0VSVF9KSVRfT0ZGU0VUKGFjdHVhbCwgZXhw
ZWN0ZWQpIEFTU0VSVF9XSVRIX01FU1NBR0UoYWN0dWFsID09IGV4cGVjdGVkLCAiSklUIE9mZnNl
dCBcIiVzXCIgc2hvdWxkIGJlICVkLCBub3QgJWQuXG4iLCAjZXhwZWN0ZWQsIHN0YXRpY19jYXN0
PGludD4oZXhwZWN0ZWQpLCBzdGF0aWNfY2FzdDxpbnQ+KGFjdHVhbCkpOwogCi0jaW5jbHVkZSAi
QnlWYWxJbmZvLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29tbW9uU2xv
d1BhdGhzLmgiCiAjaW5jbHVkZSAiSklURGlzYXNzZW1ibGVyLmgiCkBAIC0xNDksNDIgKzE0OCw2
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAgICAgfTsKIAotICAgIHN0cnVjdCBCeVZh
bENvbXBpbGF0aW9uSW5mbyB7Ci0gICAgICAgIEJ5VmFsQ29tcGlsYXRpb25JbmZvKCkgeyB9Ci0g
ICAgICAgIAotICAgICAgICBCeVZhbENvbXBpbGF0aW9uSW5mbyhCeVZhbEluZm8qIGJ5VmFsSW5m
bywgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxl
SnVtcCBub3RJbmRleEp1bXAsIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIGJhZFR5cGVK
dW1wLCBKSVRBcnJheU1vZGUgYXJyYXlNb2RlLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSwg
TWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGRvbmVUYXJnZXQsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBu
ZXh0SG90UGF0aFRhcmdldCkKLSAgICAgICAgICAgIDogYnlWYWxJbmZvKGJ5VmFsSW5mbykKLSAg
ICAgICAgICAgICwgYnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KQotICAgICAgICAgICAgLCBu
b3RJbmRleEp1bXAobm90SW5kZXhKdW1wKQotICAgICAgICAgICAgLCBiYWRUeXBlSnVtcChiYWRU
eXBlSnVtcCkKLSAgICAgICAgICAgICwgYXJyYXlNb2RlKGFycmF5TW9kZSkKLSAgICAgICAgICAg
ICwgYXJyYXlQcm9maWxlKGFycmF5UHJvZmlsZSkKLSAgICAgICAgICAgICwgZG9uZVRhcmdldChk
b25lVGFyZ2V0KQotICAgICAgICAgICAgLCBuZXh0SG90UGF0aFRhcmdldChuZXh0SG90UGF0aFRh
cmdldCkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgQnlWYWxDb21waWxhdGlvbklu
Zm8oQnlWYWxJbmZvKiBieVZhbEluZm8sIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgTWFj
cm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbm90SW5kZXhKdW1wLCBNYWNyb0Fzc2VtYmxlcjo6
TGFiZWwgZG9uZVRhcmdldCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG5leHRIb3RQYXRoVGFyZ2V0
KQotICAgICAgICAgICAgOiBieVZhbEluZm8oYnlWYWxJbmZvKQotICAgICAgICAgICAgLCBieXRl
Y29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpCi0gICAgICAgICAgICAsIG5vdEluZGV4SnVtcChub3RJ
bmRleEp1bXApCi0gICAgICAgICAgICAsIGRvbmVUYXJnZXQoZG9uZVRhcmdldCkKLSAgICAgICAg
ICAgICwgbmV4dEhvdFBhdGhUYXJnZXQobmV4dEhvdFBhdGhUYXJnZXQpCi0gICAgICAgIHsKLSAg
ICAgICAgfQotCi0gICAgICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvOwotICAgICAgICBCeXRlY29k
ZUluZGV4IGJ5dGVjb2RlSW5kZXg7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVK
dW1wIG5vdEluZGV4SnVtcDsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAg
YmFkVHlwZUp1bXA7Ci0gICAgICAgIEpJVEFycmF5TW9kZSBhcnJheU1vZGU7Ci0gICAgICAgIEFy
cmF5UHJvZmlsZSogYXJyYXlQcm9maWxlOwotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwg
ZG9uZVRhcmdldDsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG5leHRIb3RQYXRoVGFy
Z2V0OwotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgc2xvd1BhdGhUYXJnZXQ7Ci0gICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIHJldHVybkFkZHJlc3M7Ci0gICAgfTsKLQogICAgIHN0
cnVjdCBDYWxsQ29tcGlsYXRpb25JbmZvIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVs
IHNsb3dQYXRoU3RhcnQ7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkb25lTG9jYXRp
b247CkBAIC0yMjQsMTMgKzE4Nyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm4gSklUKHZtLCBjb2RlQmxvY2ssIGJ5dGVjb2RlT2Zmc2V0KS5wcml2YXRl
Q29tcGlsZShlZmZvcnQpOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMgdm9p
ZCBjb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoVk0mIHZtLCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRk
cmVzcywgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIEpJVCBqaXQodm0sIGNvZGVCbG9jayk7Ci0gICAgICAgICAgICBqaXQubV9ieXRlY29k
ZUluZGV4ID0gYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4OwotICAgICAgICAgICAgaml0LnByaXZh
dGVDb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoYnlWYWxJbmZvLCByZXR1cm5BZGRy
ZXNzLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIHVuc2lnbmVk
IGZyYW1lUmVnaXN0ZXJDb3VudEZvcihDb2RlQmxvY2sqKTsKICAgICAgICAgc3RhdGljIGludCBz
dGFja1BvaW50ZXJPZmZzZXRGb3IoQ29kZUJsb2NrKik7CkBAIC0yNDQsOCArMjAwLDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKTsKICAg
ICAgICAgdm9pZCBsaW5rKCk7CiAgICAgICAgIENvbXBpbGF0aW9uUmVzdWx0IHByaXZhdGVDb21w
aWxlKEpJVENvbXBpbGF0aW9uRWZmb3J0KTsKLSAgICAgICAgCi0gICAgICAgIHZvaWQgcHJpdmF0
ZUNvbXBpbGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChCeVZhbEluZm8qLCBSZXR1cm5BZGRy
ZXNzUHRyLCBDYWNoZWFibGVJZGVudGlmaWVyKTsKIAogICAgICAgICAvLyBBZGQgYSBjYWxsIG91
dCBmcm9tIEpJVCBjb2RlLCB3aXRob3V0IGFuIGV4Y2VwdGlvbiBjaGVjay4KICAgICAgICAgQ2Fs
bCBhcHBlbmRDYWxsKGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gZnVuY3Rpb24p
CkBAIC0zNjMsMTQgKzMxNyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcD4KICAgICAgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwcml2YXRlRmllbGRQdXRL
aW5kKE9wKTsKIAotICAgICAgICAvLyBJZGVudGlmaWVyIGNoZWNrIGhlbHBlciBmb3IgR2V0QnlW
YWwgYW5kIFB1dEJ5VmFsLgotICAgICAgICB2b2lkIGVtaXRCeVZhbElkZW50aWZpZXJDaGVjayhS
ZWdpc3RlcklEIGNlbGwsIFJlZ2lzdGVySUQgc2NyYXRjaCwgQ2FjaGVhYmxlSWRlbnRpZmllciwg
SnVtcExpc3QmIHNsb3dDYXNlcyk7Ci0KLSAgICAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBlbWl0
UHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoT3BQdXRQcml2YXRlTmFtZSwgQ2FjaGVhYmxlSWRl
bnRpZmllciwgSnVtcExpc3QmIGRvbmVDYXNlcywgSnVtcExpc3QmIHNsb3dDYXNlcyk7Ci0KLSAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0gICAgICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3Ig
ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wLCBQdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBKdW1wTGlzdCYgZG9uZUNhc2VzLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsKLQogICAgICAgICBl
bnVtIEZpbmFsT2JqZWN0TW9kZSB7IE1heUJlRmluYWwsIEtub3duTm90RmluYWwgfTsKIAogICAg
ICAgICB2b2lkIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIHNyYywgSlNW
YWx1ZVJlZ3MgZHN0KTsKQEAgLTEwMTIsNyArOTU4LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFZlY3RvcjxKSVREZWxCeVZhbEdlbmVyYXRvcj4gbV9kZWxCeVZhbHM7CiAgICAgICAgIFZl
Y3RvcjxKSVRJbnN0YW5jZU9mR2VuZXJhdG9yPiBtX2luc3RhbmNlT2ZzOwogICAgICAgICBWZWN0
b3I8SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yPiBtX3ByaXZhdGVCcmFuZEFjY2Vzc2Vz
OwotICAgICAgICBWZWN0b3I8QnlWYWxDb21waWxhdGlvbkluZm8+IG1fYnlWYWxDb21waWxhdGlv
bkluZm87CiAgICAgICAgIFZlY3RvcjxDYWxsQ29tcGlsYXRpb25JbmZvPiBtX2NhbGxDb21waWxh
dGlvbkluZm87CiAgICAgICAgIFZlY3RvcjxKdW1wVGFibGU+IG1fam1wVGFibGU7CiAKQEAgLTEw
NDAsNyArOTg1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1fZGVsQnlJ
ZEluZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9pbnN0YW5jZU9mSW5kZXgg
eyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4
IHsgVUlOVF9NQVggfTsKLSAgICAgICAgdW5zaWduZWQgbV9ieVZhbEluc3RydWN0aW9uSW5kZXgg
eyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2NhbGxMaW5rSW5mb0luZGV4IHsgVUlO
VF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9ieXRlY29kZUNvdW50SGF2aW5nU2xvd0Nhc2Ug
eyAwIH07CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAKaW5kZXggN2ZkMDQ2MzI4MWUzNWRmZTU1ZmFlMjA2MTAwYTE1ZGE5NzE5YTI5OC4uYWMw
NDRkMjk0ZjIwY2UxZWQ5YjMzNDliNGNmYjUzYzQ5OTI3MWE2MiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xMzE1LDcgKzEzMTUsNyBAQCBKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRHZW5lcmljLCB2
b2lkLCAoSlNHbG9iYWxPYmplYwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRQcml2YXRlTmFt
ZU9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgUHJpdmF0
ZUZpZWxkUHV0S2luZCBwdXRLaW5kKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25QdXRQcml2YXRlTmFtZU9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCkpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVD
TEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTEzMzQsNjMgKzEzMzQsMzAgQEAgSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUsIHZvaWQsIChKU0ds
b2JhbE9iamVjdCoKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5
S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9u
KCkpOwogCi0gICAgT3B0aW1pemF0aW9uUmVzdWx0IG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGlt
aXphdGlvblJlc3VsdDo6Tm90T3B0aW1pemVkOwotCi0gICAgaWYgKGJhc2VWYWx1ZS5pc09iamVj
dCgpICYmIENhY2hlYWJsZUlkZW50aWZpZXI6OmlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwoc3Vi
c2NyaXB0KSkgewotICAgICAgICBBU1NFUlQoc3Vic2NyaXB0LmlzU3ltYm9sKCkpOwotICAgICAg
ICBBU1NFUlQoY2FsbEZyYW1lLT5ieXRlY29kZUluZGV4KCkgIT0gQnl0ZWNvZGVJbmRleCgwKSk7
Ci0gICAgICAgIEFTU0VSVCghYnlWYWxJbmZvLT5zdHViUm91dGluZSk7Ci0gICAgICAgIGlmIChi
eVZhbEluZm8tPnNlZW4pIHsKLSAgICAgICAgICAgIGlmIChieVZhbEluZm8tPmNhY2hlZElkLnVp
ZCgpID09IHByb3BlcnR5TmFtZSkgewotICAgICAgICAgICAgICAgIEpJVDo6Y29tcGlsZVB1dFBy
aXZhdGVOYW1lV2l0aENhY2hlZElkKHZtLCBjb2RlQmxvY2ssIGJ5VmFsSW5mbywgUmV0dXJuQWRk
cmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBieVZhbEluZm8tPmNhY2hlZElkKTsKLSAgICAg
ICAgICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok9wdGlt
aXplZDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gU2VlbSBsaWtl
IGEgZ2VuZXJpYyBwcm9wZXJ0eSBhY2Nlc3Mgc2l0ZS4KLSAgICAgICAgICAgICAgICBvcHRpbWl6
YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcDsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICBi
eVZhbEluZm8tPnNlZW4gPSB0cnVlOwotICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+Y2FjaGVk
SWQgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tQ2VsbChzdWJzY3JpcHQuYXNDZWxs
KCkpOwotICAgICAgICAgICAgICAgIG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJl
c3VsdDo6U2Vlbk9uY2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2bS5oZWFwLndyaXRl
QmFycmllcihjb2RlQmxvY2ssIHN1YnNjcmlwdC5hc0NlbGwoKSk7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBpZiAob3B0aW1pemF0aW9uUmVzdWx0ICE9IE9wdGltaXphdGlvblJlc3VsdDo6T3B0
aW1pemVkICYmIG9wdGltaXphdGlvblJlc3VsdCAhPSBPcHRpbWl6YXRpb25SZXN1bHQ6OlNlZW5P
bmNlKSB7Ci0gICAgICAgIC8vIElmIHdlIHRha2Ugc2xvdyBwYXRoIG1vcmUgdGhhbiAxMCB0aW1l
cyB3aXRob3V0IHBhdGNoaW5nIHRoZW4gbWFrZSBzdXJlIHdlCi0gICAgICAgIC8vIG5ldmVyIG1h
a2UgdGhhdCBtaXN0YWtlIGFnYWluLiBUaGlzIGdpdmVzIDEwIGl0ZXJhdGlvbnMgd29ydGggb2Yg
b3Bwb3J0dW5pdHkKLSAgICAgICAgLy8gZm9yIHVzIHRvIG9ic2VydmUgdGhhdCB0aGUgcHV0X3By
aXZhdGVfbmFtZSBtYXkgYmUgcG9seW1vcnBoaWMuCi0gICAgICAgIC8vIFdlIGNvdW50IHVwIHNs
b3dQYXRoQ291bnQgZXZlbiBpZiB0aGUgcmVzdWx0IGlzIEdpdmVVcC4KLSAgICAgICAgaWYgKCsr
YnlWYWxJbmZvLT5zbG93UGF0aENvdW50ID49IDEwKQotICAgICAgICAgICAgb3B0aW1pemF0aW9u
UmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXA7Ci0gICAgfQotCi0gICAgaWYgKG9w
dGltaXphdGlvblJlc3VsdCA9PSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcCkgewotICAgICAg
ICAvLyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KLSAgICAgICAgYnlWYWxJbmZvLT50b29r
U2xvd1BhdGggPSB0cnVlOwotICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VEYXRhSUMoKSkKLSAg
ICAgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0UHJpdmF0
ZU5hbWVHZW5lcmljOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJl
dHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRp
b25QdXRQcml2YXRlTmFtZUdlbmVyaWMpOwotICAgIH0KLQotICAgIHNjb3BlLnJlbGVhc2UoKTsK
LSAgICAKICAgICAvLyBQcml2YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3aXRoaW4g
Y2xhc3MgbGV4aWNhbCBzY29wZQogICAgIC8vIGFuZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdheXMg
aW4gc3RyaWN0IG1vZGUKKyAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxB
Y2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBDb21tb25TbG93UGF0aHM6Om9yaWdpbmFsU3RydWN0dXJlQmVmb3JlUHV0KHZtLCBiYXNl
VmFsdWUpOwogICAgIGNvbnN0IGJvb2wgaXNTdHJpY3RNb2RlID0gdHJ1ZTsKICAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwogICAgIGlmIChwdXRLaW5k
LmlzRGVmaW5lKCkpCiAgICAgICAgIGJhc2VPYmplY3QtPmRlZmluZVByaXZhdGVGaWVsZChnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgIGVsc2UKICAgICAgICAg
YmFzZU9iamVjdC0+c2V0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKwor
ICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5h
Y2Nlc3NUeXBlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVj
dCgpICYmIENhY2hlYWJsZUlkZW50aWZpZXI6OmlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwoc3Vi
c2NyaXB0KSkgeworICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tQ2VsbChzdWJzY3JpcHQuYXNDZWxsKCkpOworICAg
ICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIHN0cnVj
dHVyZSwgaWRlbnRpZmllcikpCisgICAgICAgICAgICByZXBhdGNoUHV0QnkoZ2xvYmFsT2JqZWN0
LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgc3RydWN0dXJlLCBpZGVudGlmaWVyLCBzbG90LCAqc3R1
YkluZm8sIFB1dEJ5S2luZDo6UHJpdmF0ZU5hbWUsIHB1dEtpbmQuaXNEZWZpbmUoKSA/IFB1dEtp
bmQ6OkRpcmVjdFByaXZhdGVGaWVsZERlZmluZSA6IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVs
ZFNldCk7CisgICAgfQogfQogCiAvLyBXZSBuZWVkIHRvIG1hdGNoIHRoZSBzaWduYXR1cmUgb2Yg
b3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZQotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJ
bmZvKiBieVZhbEluZm8sIFByaXZhdGVGaWVsZFB1dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2luZCkp
CitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmlj
LCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFByaXZhdGVG
aWVsZFB1dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2luZCkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKQEAgLTE0MTksOCArMTM4Niw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMsIHZvaWQsIChKU0dsb2JhbE9iamVjdCoKICAg
ICBlbHNlCiAgICAgICAgIGJhc2VPYmplY3QtPnNldFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogCi0gICAgaWYgKGJ5VmFsSW5mbykKLSAgICAg
ICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOworICAgIHN0dWJJbmZvLT50b29rU2xv
d1BhdGggPSB0cnVlOwogfQogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ2Fs
bEV2YWwsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsZWVGcmFtZSwgRUNNQU1vZGUgZWNtYU1vZGUpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCBlZmJkODg3MzU0MmZjM2Y0YmU4M2UwNmJl
MDYyNTdiZmMyOWNjNDYyLi42ZmJjMWMzZTY5OTFhZmNhYTgwZjgzZWNiY2M2ZmIzZDgwOTU0NGUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtNjQsNyAr
NjQsNiBAQCBjbGFzcyBTeW1ib2xUYWJsZTsKIGNsYXNzIFZNOwogY2xhc3MgV2F0Y2hwb2ludFNl
dDsKIAotc3RydWN0IEJ5VmFsSW5mbzsKIHN0cnVjdCBFQ01BTW9kZTsKIHN0cnVjdCBJbmxpbmVD
YWxsRnJhbWU7CiBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CkBAIC04MCw3ICs3OSw2IEBAIHR5cGVkZWYg
Y2hhciogVW51c2VkUHRyOwogICAgIEFwOiBBcnJheVByb2ZpbGUqCiAgICAgQXJwOiBCaW5hcnlB
cml0aFByb2ZpbGUqCiAgICAgQjogQnV0dGVyZmx5KgotICAgIEJ5OiBCeVZhbEluZm8qCiAgICAg
QzogSlNDZWxsKgogICAgIENiOiBDb2RlQmxvY2sqCiAgICAgQ2xpOiBDYWxsTGlua0luZm8qCkBA
IC0yMDEsOCArMTk5LDggQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25DaGVj
a1ByaXZhdGVCcmFuZE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmoKIEpTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kR2VuZXJpYywgdm9pZCwgKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ2hlY2tQcml2YXRl
QnJhbmRHZW5lcmljLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyos
IEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkpOwogCi1KU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5
VmFsSW5mbyosIFByaXZhdGVGaWVsZFB1dEtpbmQpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljLCB2b2lkLCAoSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbElu
Zm8qLCBQcml2YXRlRmllbGRQdXRLaW5kKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFN0cnVjdHVyZVN0
dWJJbmZvKiwgUHJpdmF0ZUZpZWxkUHV0S2luZCkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMsIHZvaWQsIChKU0dsb2JhbE9iamVjdCos
IEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgUHJpdmF0ZUZpZWxkUHV0S2luZCkpOwogCiBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0T3B0aW1pemUsIHZvaWQsIChKU0dsb2Jh
bE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IFN0cnVjdHVyZVN0dWJJbmZvKiwgQXJyYXlQcm9maWxlKikpOwogSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25QdXRCeVZhbFN0cmljdE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxP
YmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEFycmF5UHJvZmlsZSopKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggNzk0MDIxZGFkM2U0NmU5NmY3
MWRmZDE4MDY3MTlkMzVlOTZkNWQzOS4uNWIyMzFmNTY5NzAzNTliYjNhMTBjYzdjMjBhNGM5ZGQw
OTgyMjZmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHAKQEAgLTQ2Nyw0OSArNDY3LDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRXcml0ZUJh
cnJpZXIoYmFzZSwgU2hvdWxkRmlsdGVyQmFzZSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIE9w
PgotSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBi
eXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFt
ZSwgSnVtcExpc3QmIGRvbmVDYXNlcywgSnVtcExpc3QmIHNsb3dDYXNlcykKLXsKLSAgICAvLyBi
YXNlOiByZWdUMAotICAgIC8vIHByb3BlcnR5OiByZWdUMQotICAgIC8vIHNjcmF0Y2g6IHJlZ1Qy
Ci0KLSAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKLSAgICBWaXJ0
dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwotCi0gICAgc2xvd0Nhc2VzLmFw
cGVuZChicmFuY2hJZk5vdENlbGwocmVnVDEpKTsKLSAgICBlbWl0QnlWYWxJZGVudGlmaWVyQ2hl
Y2socmVnVDEsIHJlZ1QxLCBwcm9wZXJ0eU5hbWUsIHNsb3dDYXNlcyk7Ci0KLSAgICAvLyBXcml0
ZSBiYXJyaWVyIGJyZWFrcyB0aGUgcmVnaXN0ZXJzLiBTbyBhZnRlciBpc3N1aW5nIHRoZSB3cml0
ZSBiYXJyaWVyLAotICAgIC8vIHJlbG9hZCB0aGUgcmVnaXN0ZXJzLgotICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXJzKGJhc2UsIHJlZ1QwLCB2YWx1ZSwgcmVnVDEpOwotCi0gICAgSklUUHV0QnlJ
ZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJ
VCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlO
YW1lLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVn
VDMsIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQpOwotICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRo
b3V0IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNlIGlzIGNlbGwuCi0gICAgLy8gRklYTUU6IFVzZSBV
bmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyIGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVj
ZSBjb2RlIHNpemUuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwOTM5NQotICAgIGVtaXRXcml0ZUJhcnJpZXIoYmFzZSwgU2hvdWxkRmlsdGVyQmFzZSk7
Ci0gICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdp
biA9IGxhYmVsKCk7Ci0gICAgZ2VuLnNsb3dQYXRoSnVtcCgpLmxpbmsodGhpcyk7Ci0KLSAgICBD
YWxsIGNhbGw7Ci0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJ
VCkpIHsKLSAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IGdlbi5zbG93
UGF0aEZ1bmN0aW9uKCk7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8o
KSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgICAgICBjYWxsT3BlcmF0aW9uPGRlY2x0eXBl
KGdlbi5zbG93UGF0aEZ1bmN0aW9uKCkpPihBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIFRydXN0ZWRJbW1QdHIo
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgcmVnVDEs
IHJlZ1QwLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgY2Fs
bCA9IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgVHJ1c3RlZEltbVB0ciht
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcmVnVDEsIHJlZ1Qw
LCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKLSAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNv
bGRQYXRoQmVnaW4sIGNhbGwpOwotICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKLQotICAg
IHJldHVybiBnZW47Ci19Ci0KIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgYm9vbCBpc0RpcmVjdCA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+b3Bjb2RlSUQoKSA9PSBvcF9wdXRfYnlfdmFsX2RpcmVjdDsKQEAgLTYxMSw3NiArNTY4LDc1
IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0g
Ynl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2Rl
Lm1fcHJvcGVydHk7Ci0gICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2NvZGVCbG9jay0+YWRk
QnlWYWxJbmZvKG1fYnl0ZWNvZGVJbmRleCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0g
Ynl0ZWNvZGUubV92YWx1ZTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVn
VDApOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsKKyAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMik7CiAKICAgICBlbWl0SnVtcFNsb3dD
YXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwogCi0gICAgUGF0Y2hhYmxlSnVtcCBmYXN0UGF0
aEptcDsKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkK
LSAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+bV9ub3RJbmRleEp1
bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGZh
c3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOwotICAgICAgICBhZGRTbG93Q2FzZShmYXN0UGF0
aEptcCk7Ci0gICAgfQotICAgIAotICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOwotICAgIAotICAg
IG1fYnlWYWxDb21waWxhdGlvbkluZm8uYXBwZW5kKEJ5VmFsQ29tcGlsYXRpb25JbmZvKGJ5VmFs
SW5mbywgbV9ieXRlY29kZUluZGV4LCBmYXN0UGF0aEptcCwgZG9uZSwgZG9uZSkpOworICAgIEpJ
VFB1dEJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJh
c2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6UHV0UHJpdmF0ZU5hbWUsIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBK
U1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QyKSwgSW52YWxpZEdQUlJlZywgcmVn
VDQpOworICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3ltYm9sID0gdHJ1ZTsKKyAgICBn
ZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMo
SklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhK
dW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKKyAgICBtX3B1dEJ5VmFs
cy5hcHBlbmQoZ2VuKTsKKworICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhv
dXQgd3JpdGUtYmFycmllciBpZiBhIGJhc2UgaXMgY2VsbC4KKyAgICAvLyBGSVhNRTogVXNlIFVu
Y29uZGl0aW9uYWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNl
IGNvZGUgc2l6ZS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA5Mzk1CisgICAgZW1pdFdyaXRlQmFycmllcihiYXNlLCBTaG91bGRGaWx0ZXJCYXNlKTsK
IH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cFB1dFByaXZhdGVOYW1lPigpOwotICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9ieVZhbENv
bXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uYnlWYWxJbmZvOwogICAgIFBy
aXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCA9IGJ5dGVjb2RlLm1fcHV0S2luZDsKIAorICAgIEpJ
VFB1dEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX3B1dEJ5VmFsc1ttX3B1dEJ5VmFsSW5kZXgrK107
CisKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotICAgIExhYmVsIHNsb3dQYXRoID0gbGFi
ZWwoKTsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwogCiAjaWYgIUVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQorICAgIC8vIFRoZXkgYXJlIGNvbmZpZ3VyZWQgaW4gdGhlIGZh
c3QgcGF0aCBhbmQgbm90IGNsb2JiZXJlZC4KICAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIg
PSByZWdUMDsKICAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gcmVnVDE7CiAgICAg
Y29uc3RleHByIEdQUlJlZyB2YWx1ZUdQUiA9IHJlZ1QyOwotCi0gICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VHUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSwgcHJvcGVydHlHUFIpOwotICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVHUFIpOwotICAgIENhbGwgY2FsbCA9
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgVHJ1c3RlZElt
bVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwg
dmFsdWVHUFIsIGJ5VmFsSW5mbywgVHJ1c3RlZEltbTMyKHB1dEtpbmQudmFsdWUoKSkpOworICAg
IENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6
ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBiYXNlR1BSLCBw
cm9wZXJ0eUdQUiwgdmFsdWVHUFIsIGdlbi5zdHViSW5mbygpLCBUcnVzdGVkSW1tMzIocHV0S2lu
ZC52YWx1ZSgpKSk7CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMy
X3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJU
KEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOwotICAg
IG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwot
Ci0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0
ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyB2YWx1ZUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5VmFs
SW5mb0dQUiA9IGFyZ3VtZW50R1BSNDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHB1dEtpbmRHUFIg
PSBhcmd1bWVudEdQUjU7CisgICAgLy8gY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7
CisgICAgLy8gY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHJlZ1QxOworICAgIC8vIGNv
bnN0ZXhwciBHUFJSZWcgdmFsdWVHUFIgPSByZWdUMjsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHN0
dWJJbmZvR1BSID0gcmVnVDM7CisgICAgY29uc3RleHByIEdQUlJlZyBwdXRLaW5kR1BSID0gcmVn
VDQ7CisgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IHJlZ1Q1OwogCi0g
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VHUFIpOwotICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSwgcHJvcGVydHlHUFIp
OwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVHUFIp
OwotICAgIG1vdmUoVHJ1c3RlZEltbVB0cihieVZhbEluZm8pLCBieVZhbEluZm9HUFIpOworICAg
IG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwor
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKICAg
ICBtb3ZlKFRydXN0ZWRJbW0zMihwdXRLaW5kLnZhbHVlKCkpLCBwdXRLaW5kR1BSKTsKICAgICBl
bWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9w
cmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIENh
bGwgY2FsbDsKKyAgICBhdXRvIG9wZXJhdGlvbiA9IG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0
aW1pemU7CiAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkp
Ci0gICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0UHJpdmF0
ZU5hbWVPcHRpbWl6ZTsKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9
IG9wZXJhdGlvbjsKICAgICBlbHNlCi0gICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlv
blB1dFByaXZhdGVOYW1lT3B0aW1pemUpOworICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVy
YXRpb24pOwogICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRp
b25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAjZW5kaWYgLy8gRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCiAKLSAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJ
bnN0cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOwotICAgIG1fYnlWYWxD
b21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJlc3MgPSBj
YWxsOwotICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Kys7CisgICAgZ2VuLnJlcG9ydFNsb3dQ
YXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIAogI2lmIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQpAQCAtNjk1LDI0ICs2NTEsMjUgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAg
ICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCiAgICAgICAg
IGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2Rl
T2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOworICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9
IHJlZ1QwOworICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKKyAgICBj
b25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gcmVnVDI7CisgICAgY29uc3RleHByIEdQUlJlZyBz
dHViSW5mb0dQUiA9IHJlZ1QzOworICAgIGNvbnN0ZXhwciBHUFJSZWcgcHV0S2luZEdQUiA9IHJl
Z1Q0OworICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUNTsKKwog
ICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xv
YmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFIwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQ
UiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJn
dW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdmFsdWVHUFIgPSBhcmd1bWVudEdQUjM7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBieVZhbEluZm9HUFIgPSBhcmd1bWVudEdQUjQ7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBwdXRLaW5kR1BSID0gYXJndW1lbnRHUFI1OworICAgIGNvbnN0ZXhw
ciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcmVnVDU7CiAKICAgICBqaXQubG9hZFB0cihhZGRy
ZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAg
aml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZH
bG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7CiAKLSAgICBqaXQuc2V0dXBBcmd1bWVu
dHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+KGdsb2JhbE9iamVj
dEdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSLCBieVZhbEluZm9HUFIsIHB1dEtp
bmRHUFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25QdXRQcml2
YXRlTmFtZU9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwg
dmFsdWVHUFIsIHN0dWJJbmZvR1BSLCBwdXRLaW5kR1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxP
cGVyYXRpb24odm0pOwogCiAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNl
bGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFkZHJlc3MoYXJndW1lbnRHUFI0LCBCeVZh
bEluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICAg
ICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjQsIFN0cnVjdHVyZVN0dWJJbmZvOjpv
ZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlvblB0clRhZyk7CiAgICAgZWxzZQogICAg
ICAgICBqaXQucmV0KCk7CiAKQEAgLTMwNjAsNjIgKzMwMTcsOCBAQCB2b2lkIEpJVDo6ZW1pdFdy
aXRlQmFycmllcihKU0NlbGwqIG93bmVyLCBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUsIFdyaXRlQmFy
cmllck1vZAogICAgICAgICB2YWx1ZU5vdENlbGwubGluayh0aGlzKTsKIH0KIAotdGVtcGxhdGUg
PHR5cGVuYW1lIE9wPgotSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhD
YWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVy
IHByb3BlcnR5TmFtZSwgSnVtcExpc3QmIGRvbmVDYXNlcywgSnVtcExpc3QmIHNsb3dDYXNlcykK
LXsKLSAgICAvLyBiYXNlOiB0YWcocmVnVDEpLCBwYXlsb2FkKHJlZ1QwKQotICAgIC8vIHByb3Bl
cnR5OiB0YWcocmVnVDMpLCBwYXlsb2FkKHJlZ1QyKQotCi0gICAgVmlydHVhbFJlZ2lzdGVyIGJh
c2UgPSBieXRlY29kZS5tX2Jhc2U7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNv
ZGUubV92YWx1ZTsKLQotICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoSWZOb3RDZWxsKHJlZ1Qz
KSk7Ci0gICAgZW1pdEJ5VmFsSWRlbnRpZmllckNoZWNrKHJlZ1QyLCByZWdUMiwgcHJvcGVydHlO
YW1lLCBzbG93Q2FzZXMpOwotCi0gICAgLy8gV3JpdGUgYmFycmllciBicmVha3MgdGhlIHJlZ2lz
dGVycy4gU28gYWZ0ZXIgaXNzdWluZyB0aGUgd3JpdGUgYmFycmllciwKLSAgICAvLyByZWxvYWQg
dGhlIHJlZ2lzdGVycy4KLSAgICAvLwotICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJl
IHdpdGhvdXQgd3JpdGUtYmFycmllciBpZiBhIGJhc2UgaXMgY2VsbC4KLSAgICAvLyBXZSBhcmUg
ZW1pdHRpbmcgd3JpdGUtYmFycmllciBiZWZvcmUgd3JpdGluZyBoZXJlIGJ1dCB0aGlzIGlzIE9L
IHNpbmNlIDMyYml0IEpTQyBkb2VzIG5vdCBoYXZlIGNvbmN1cnJlbnQgR0MuCi0gICAgLy8gRklY
TUU6IFVzZSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyIGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5
IHRvIHJlZHVjZSBjb2RlIHNpemUuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwOTM5NQotICAgIGVtaXRXcml0ZUJhcnJpZXIoYmFzZSwgU2hvdWxkRmls
dGVyQmFzZSk7Ci0gICAgZW1pdExvYWRQYXlsb2FkKGJhc2UsIHJlZ1QwKTsKLSAgICBlbWl0TG9h
ZCh2YWx1ZSwgcmVnVDMsIHJlZ1QyKTsKLQotICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAot
ICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNl
dDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNW
YWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwg
SW52YWxpZEdQUlJlZywgcmVnVDEsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCk7Ci0gICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgp
KTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwotICAgIGdlbi5zbG93UGF0
aEp1bXAoKS5saW5rKHRoaXMpOwotCi0gICAgLy8gSklUUHV0QnlJZEdlbmVyYXRvciBvbmx5IHBy
ZXNlcnZlIHRoZSB2YWx1ZSBhbmQgdGhlIGJhc2UncyBwYXlsb2FkLCB3ZSBoYXZlIHRvIHJlbG9h
ZCB0aGUgdGFnLgotICAgIGVtaXRMb2FkVGFnKGJhc2UsIHJlZ1QxKTsKLQotICAgIENhbGwgY2Fs
bDsKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgewot
ICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gZ2VuLnNsb3dQYXRoRnVu
Y3Rpb24oKTsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgR1BS
SW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb248ZGVjbHR5cGUoZ2VuLnNs
b3dQYXRoRnVuY3Rpb24oKSk+KEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgbV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpLCBHUFJJbmZvOjpub25BcmdHUFIwLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBK
U1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKLSAgICB9
IGVsc2UKLSAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24o
KSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJl
Z3MocmVnVDMsIHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgcHJvcGVydHlOYW1l
LnJhd0JpdHMoKSk7Ci0gICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBj
YWxsKTsKLSAgICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7Ci0KLSAgICByZXR1cm4gZ2VuOwot
fQotCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAotSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6
OmVtaXRQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChPcFB1dFByaXZhdGVOYW1lIGJ5dGVjb2Rl
LCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgSnVtcExpc3QmIGRvbmVDYXNlcywg
SnVtcExpc3QmIHNsb3dDYXNlcykKLXsKLSAgICBhdXRvIHB1dEtpbmQgPSBieXRlY29kZS5tX3B1
dEtpbmQuaXNEZWZpbmUoKSA/IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZERlZmluZSA6IFB1
dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldDsKLSAgICByZXR1cm4gZW1pdFB1dEJ5VmFsV2l0
aENhY2hlZElkKGJ5dGVjb2RlLCBwdXRLaW5kLCBwcm9wZXJ0eU5hbWUsIGRvbmVDYXNlcywgc2xv
d0Nhc2VzKTsKLX0KLQogdm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIoVmlydHVhbFJlZ2lzdGVy
IG93bmVyLCBXcml0ZUJhcnJpZXJNb2RlIG1vZGUpCiB7CiAgICAgQVNTRVJUKG1vZGUgPT0gVW5j
b25kaXRpb25hbFdyaXRlQmFycmllciB8fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2UpOwpAQCAt
MzEyOSw1OCArMzAzMiw2IEBAIHZvaWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKEpTQ2VsbCogb3du
ZXIpCiAgICAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbi5saW5rKHRoaXMpOwogfQogCi12b2lk
IEpJVDo6ZW1pdEJ5VmFsSWRlbnRpZmllckNoZWNrKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJ
RCBzY3JhdGNoLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgSnVtcExpc3QmIHNs
b3dDYXNlcykKLXsKLSAgICBpZiAocHJvcGVydHlOYW1lLmlzU3ltYm9sQ2VsbCgpKQotICAgICAg
ICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgY2VsbCwgVHJ1c3RlZEltbVB0
cihwcm9wZXJ0eU5hbWUuY2VsbCgpKSkpOwotICAgIGVsc2UgewotICAgICAgICBzbG93Q2FzZXMu
YXBwZW5kKGJyYW5jaElmTm90U3RyaW5nKGNlbGwpKTsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNz
KGNlbGwsIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpLCBzY3JhdGNoKTsKLSAgICAgICAgc2xv
d0Nhc2VzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIHNjcmF0Y2gsIFRydXN0ZWRJbW1QdHIo
cHJvcGVydHlOYW1lLnVpZCgpKSkpOwotICAgIH0KLX0KLQotdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5h
bWUpCi17Ci0gICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiA9IG1fY29k
ZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXgpLnB0cigp
OwotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0
ZU5hbWU+KCk7Ci0KLSAgICBKdW1wTGlzdCBkb25lQ2FzZXM7Ci0gICAgSnVtcExpc3Qgc2xvd0Nh
c2VzOwotCi0gICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4gPSBlbWl0UHV0UHJpdmF0ZU5hbWVX
aXRoQ2FjaGVkSWQoYnl0ZWNvZGUsIHByb3BlcnR5TmFtZSwgZG9uZUNhc2VzLCBzbG93Q2FzZXMp
OwotCi0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2NvZGVCbG9jay0+bV9sb2NrKTsK
LSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp0aGlzLCBtX2NvZGVCbG9jaywgTGlua0J1ZmZl
cjo6UHJvZmlsZTo6SW5saW5lQ2FjaGUpOwotICAgIHBhdGNoQnVmZmVyLmxpbmsoc2xvd0Nhc2Vz
LCBieVZhbEluZm8tPnNsb3dQYXRoVGFyZ2V0KTsKLSAgICBwYXRjaEJ1ZmZlci5saW5rKGRvbmVD
YXNlcywgYnlWYWxJbmZvLT5kb25lVGFyZ2V0KTsKLSAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tz
LmVtcHR5KCkpCi0gICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVja3MsIGJ5
VmFsSW5mby0+ZXhjZXB0aW9uSGFuZGxlcik7Ci0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIGNhbGxT
aXRlIDogbV9uZWFyQ2FsbHMpIHsKLSAgICAgICAgaWYgKGNhbGxTaXRlLmNhbGxlZSkKLSAgICAg
ICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoY2FsbFNpdGUuZnJvbSwgY2FsbFNpdGUuY2FsbGVlKTsK
LSAgICB9Ci0gICAgZm9yIChjb25zdCBhdXRvJiBjYWxsU2l0ZSA6IG1fZmFyQ2FsbHMpIHsKLSAg
ICAgICAgaWYgKGNhbGxTaXRlLmNhbGxlZSkKLSAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmso
Y2FsbFNpdGUuZnJvbSwgY2FsbFNpdGUuY2FsbGVlKTsKLSAgICB9Ci0gICAgZ2VuLmZpbmFsaXpl
KHBhdGNoQnVmZmVyLCBwYXRjaEJ1ZmZlcik7Ci0KLSAgICBieVZhbEluZm8tPnN0dWJSb3V0aW5l
ID0gRklOQUxJWkVfQ09ERV9GT1JfU1RVQigKLSAgICAgICAgbV9jb2RlQmxvY2ssIHBhdGNoQnVm
ZmVyLCBKSVRTdHViUm91dGluZVB0clRhZywKLSAgICAgICAgIkJhc2VsaW5lIHB1dF9wcml2YXRl
X25hbWUgd2l0aCBjYWNoZWQgcHJvcGVydHkgbmFtZSAnJXMnIHN0dWIgZm9yICVzLCByZXR1cm4g
cG9pbnQgJXAiLCBwcm9wZXJ0eU5hbWUudWlkKCktPnV0ZjgoKS5kYXRhKCksIHRvQ1N0cmluZygq
bV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwotICAg
IGJ5VmFsSW5mby0+c3R1YkluZm8gPSBnZW4uc3R1YkluZm8oKTsKLQotICAgIGlmIChKSVRDb2Rl
Ojp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7Ci0gICAgICAgIGJ5VmFsSW5mby0+
bV9ub3RJbmRleEp1bXBUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0
clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7Ci0gICAgICAgIGJ5
VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmlj
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZh
bEluZm8tPm1fbm90SW5kZXhKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0
clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNz
UHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJu
QWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblB1dFByaXZh
dGVOYW1lR2VuZXJpYykpOwotICAgIH0KLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRp
ZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXgg
ZTYzYzk5YmU2YWJmN2ViNzg5ZGNhNmFmMzlmNTA5MDJmYWQzODQ3ZC4uMzc0NjlmMjU4ODI5NDg5
YWVmNzI3ZTU4NmYwMjZhYTI5MjE2OTJhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guY3BwCkBAIC02MDYsNiArNjA2LDggQEAgc3RhdGljIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0
clRhZz4gYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlGdW5jdGlvbihjb25zdCBQdXRQcm8KICAgICAg
ICAgfQogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBQdXRCeUtpbmQ6OlByaXZhdGVO
YW1lOgorICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljOwogICAg
IH0KICAgICAvLyBNYWtlIHdpbiBwb3J0IGNvbXBpbGVyIGhhcHB5CiAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKQEAgLTY0OSw2ICs2NTEsOCBAQCBzdGF0aWMgRnVuY3Rpb25QdHI8
Q0Z1bmN0aW9uUHRyVGFnPiBhcHByb3ByaWF0ZU9wdGltaXppbmdQdXRCeUZ1bmN0aW9uKGNvbnN0
IFB1dAogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIFB1dEJ5S2lu
ZDo6UHJpdmF0ZU5hbWU6CisgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9w
dGltaXplOwogICAgIH0KICAgICAvLyBNYWtlIHdpbiBwb3J0IGNvbXBpbGVyIGhhcHB5CiAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE5MjgsNiArMTkzMiwxNSBAQCB2b2lk
IHJlc2V0UHV0QnkoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbywgUHV0QnlLaW5kIGtpbgogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAg
ICBjYXNlIFB1dEJ5S2luZDo6UHJpdmF0ZU5hbWU6IHsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAg
ICAgICB1c2luZyBGdW5jdGlvblR5cGUgPSBkZWNsdHlwZSgmb3BlcmF0aW9uUHV0UHJpdmF0ZU5h
bWVHZW5lcmljKTsKKyAgICAgICAgRnVuY3Rpb25UeXBlIHVub3B0aW1pemVkRnVuY3Rpb24gPSBy
ZWludGVycHJldF9jYXN0PEZ1bmN0aW9uVHlwZT4ocmVhZFB1dElDQ2FsbFRhcmdldChjb2RlQmxv
Y2ssIHN0dWJJbmZvKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgQVNTRVJUKHVub3B0
aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljIHx8IHVub3B0
aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7CisjZW5k
aWYKKyAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9w
dGltaXplOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgfQogCiAgICAgcmVwYXRjaFNsb3dQ
YXRoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLCBvcHRpbWl6ZWRGdW5jdGlvbik7CkBAIC0xOTM2
LDYgKzE5NDksNyBAQCB2b2lkIHJlc2V0UHV0QnkoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVj
dHVyZVN0dWJJbmZvJiBzdHViSW5mbywgUHV0QnlLaW5kIGtpbgogICAgICAgICBJbmxpbmVBY2Nl
c3M6OnJlc2V0U3R1YkFzSnVtcEluQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8pOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIFB1dEJ5S2luZDo6QnlWYWw6CisgICAgY2FzZSBQdXRCeUtpbmQ6
OlByaXZhdGVOYW1lOgogICAgICAgICBJbmxpbmVBY2Nlc3M6OnJlc2V0U3R1YkFzSnVtcEluQWNj
ZXNzTm90VXNpbmdJbmxpbmVBY2Nlc3MoY29kZUJsb2NrLCBzdHViSW5mbyk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRj
aC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKaW5kZXggZWNlMzc3ZWUx
MGEyZWY4NGEyM2Q5ZWMyZGQ0OGNmNjhkNzljN2RlOS4uODRmYjNhYTFhZDZhOWQ5ZDJjNjFkMzRh
NzQxNzliZmQ0YzE3ZGE4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKQEAgLTQ2
LDYgKzQ2LDcgQEAgZW51bSBjbGFzcyBHZXRCeUtpbmQgewogZW51bSBjbGFzcyBQdXRCeUtpbmQg
ewogICAgIEJ5SWQsCiAgICAgQnlWYWwsCisgICAgUHJpdmF0ZU5hbWUsCiB9OwogCiBlbnVtIGNs
YXNzIERlbEJ5S2luZCB7Cg==
</data>
<flag name="commit-queue"
          id="459529"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436487</attachid>
            <date>2021-08-26 03:08:28 -0700</date>
            <delta_ts>2021-08-26 04:17:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229544-20210826030827.patch</filename>
            <type>text/plain</type>
            <size>63347</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MGFlNGU2MmViNzc4ZjA5NzExNTE0OTZkNzE1MWI3MTFjMmUzZDE4Li5kYmIyMGJkNmJjMWEzNTYz
NmI2YWZmNDQ4ZTVhNGMzYTBjOGI5ZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAyMS0wOC0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIG9wX3B1dF9wcml2YXRlX25hbWUgc2hvdWxkIHVzZSBtb2Rlcm4g
SUMgYW5kIHJlbW92ZSBCeVZhbEluZm8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyOTU0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9CeVZhbEluZm8u
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5VmFsSW5mby5oOiBSZW1vdmVkLgor
ICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6Z2V0SUNTdGF0dXNNYXApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnN0cm9uZ2x5Vmlz
aXRTdHJvbmdSZWZlcmVuY2VzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5kQnlWYWxJ
bmZvKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRCeVZhbEluZm8pOiBE
ZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVj
b2RlL0lDU3RhdHVzTWFwLmg6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8u
Y3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQpOgorICAgICAgICAq
IGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlND
OjpKSVQ6OmxpbmspOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlRXhjZXB0aW9u
SGFuZGxlcnMpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKEpTQzo6QnlWYWxDb21w
aWxhdGlvbkluZm86OkJ5VmFsQ29tcGlsYXRpb25JbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSklUX09QRVJB
VElPTik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3ByaXZh
dGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFt
ZSk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVD
YWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVk
SWQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRQcml2YXRlTmFtZVdpdGhD
YWNoZWRJZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEJ5VmFsSWRlbnRpZmll
ckNoZWNrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dFBy
aXZhdGVOYW1lV2l0aENhY2hlZElkKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0
ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1l
KToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OmFwcHJvcHJpYXRl
R2VuZXJpY1B1dEJ5RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjphcHByb3ByaWF0ZU9wdGltaXpp
bmdQdXRCeUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6cmVzZXRQdXRCeSk6CisgICAgICAgICog
aml0L1JlcGF0Y2guaDoKKwogMjAyMS0wOC0yNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIFtKU0NdIFBvbHltb3JwaGljIFB1dEJ5VmFsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDMyM2Q4YTQwZTFmNmUyM2ZjZTI3ZWQ3YzA4ZGI1MzI0NzNi
MjZhNTkuLmE2MDE5NmUyYzY3MDIzYzgxMGQ2MmYyNTA5NjgzYjgxM2YxZmYwNjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NDQsNyArNDQ0LDYgQEAKIAkJMEY3REYxM0MxRTI5
NzExMzAwOTU5NTFCIC8qIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdERjEzQTFFMjk3MTBF
MDA5NTk1MUIgLyogSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjdERjE0NjFFMkJFRjZB
MDA5NTk1MUIgLyogQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdERjE0NTFFMkJFRjY4MDA5NTk1MUIgLyogQmxv
Y2tEaXJlY3RvcnlJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEY3Rjk4OEMxRDk1OTZDODAwRjRGMTJFIC8qIERGR1N0b3JlQmFycmll
ckNsdXN0ZXJpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY3Rjk4OEExRDk1OTZDMzAwRjRGMTJFIC8qIERGR1N0b3JlQmFycmllckNsdXN0
ZXJpbmdQaGFzZS5oICovOyB9OwotCQkwRjgwMjNFQTE2MTM4MzJCMDBBMEJBNDUgLyogQnlWYWxJ
bmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgw
MjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi87IH07CiAJCTBGODMzNUI4MTYz
OUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUg
LyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGODM2NEI3MTY0QjBDMTEwMDUzMzI5QSAvKiBERkdCcmFu
Y2hEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24uaCAqLzsg
fTsKIAkJMEY4NkEyNkYxRDZGN0IzMzAwQ0IwQzkyIC8qIEdDVHlwZU1hcC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4NkEyNkUxRDZGN0IzMTAwQ0Iw
QzkyIC8qIEdDVHlwZU1hcC5oICovOyB9OwpAQCAtMjgyOCw3ICsyODI3LDYgQEAKIAkJMEY3REYx
NDUxRTJCRUY2ODAwOTU5NTFCIC8qIEJsb2NrRGlyZWN0b3J5SW5saW5lcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9ja0RpcmVjdG9yeUlubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3Rjk4ODkxRDk1OTZDMzAwRjRGMTJFIC8qIERGR1N0b3Jl
QmFycmllckNsdXN0ZXJpbmdQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBERkdTdG9yZUJhcnJpZXJDbHVzdGVyaW5nUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RG
R1N0b3JlQmFycmllckNsdXN0ZXJpbmdQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGN0Y5ODhBMUQ5NTk2QzMwMEY0RjEyRSAvKiBERkdTdG9yZUJhcnJpZXJDbHVzdGVy
aW5nUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU3RvcmVCYXJy
aWVyQ2x1c3RlcmluZ1BoYXNlLmg7IHBhdGggPSBkZmcvREZHU3RvcmVCYXJyaWVyQ2x1c3Rlcmlu
Z1BoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGODAyM0U5MTYxMzgzMjMw
MEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QnlWYWxJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMzNUI0MTYzOUMx
RTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlB
bGxvY2F0aW9uUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODM2
NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnJhbmNoRGlyZWN0aW9uLmg7IHBhdGggPSBkZmcvREZH
QnJhbmNoRGlyZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MTM1LDcg
KzUxMzMsNiBAQAogCQlFMzU1RDM4RTIyNDQ2ODZDMDA4RjFBRDYgLyogR2xvYmFsRXhlY3V0YWJs
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHbG9iYWxFeGVjdXRhYmxlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1Njk4NzEyMjg0MTE4MzAwOENEQ0NCIC8qIFBhY2tlZENl
bGxQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFja2VkQ2VsbFB0ci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzVBMEI5QzIyMEFEODdBMDBBQzQ0NzQgLyogRXhlY3V0YWJsZUJhc2VJ
bmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4ZWN1dGFibGVCYXNl
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMzVCQTJDMDI0MUEwRThD
MDBCNjcwODYgLyogQnlWYWxJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ5VmFsSW5mby5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUNBMTRGMURCQzNBNTYwMEY4MzUx
NiAvKiBET01KSVRBYnN0cmFjdEhlYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRE9NSklUQWJzdHJhY3RIZWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTM1Q0ExNTAxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRBYnN0cmFjdEhlYXAuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1Q0ExNTExREJDM0E1NjAwRjgzNTE2IC8qIERP
TUpJVEhlYXBSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
T01KSVRIZWFwUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODU1NCw4
ICs4NTUxLDYgQEAKIAkJCQlFM0QyNjQyQTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdy
aXRlci5oICovLAogCQkJCTUzRDM1NDk4MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZVVzZURl
Zi5jcHAgKi8sCiAJCQkJMEY4ODVFMTAxODQ5QTNCRTAwRjFFM0ZBIC8qIEJ5dGVjb2RlVXNlRGVm
LmggKi8sCi0JCQkJRTM1QkEyQzAyNDFBMEU4QzAwQjY3MDg2IC8qIEJ5VmFsSW5mby5jcHAgKi8s
Ci0JCQkJMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oICovLAogCQkJCTBG
NjRCMjc3MUE3OTU3QjIwMDZFNEU2NiAvKiBDYWxsRWRnZS5jcHAgKi8sCiAJCQkJMEY2NEIyNzgx
QTc5NTdCMjAwNkU0RTY2IC8qIENhbGxFZGdlLmggKi8sCiAJCQkJMEYwQjgzQUUxNEJDRjcxNDAw
ODg1QjRGIC8qIENhbGxMaW5rSW5mby5jcHAgKi8sCkBAIC05NDczLDcgKzk0NjgsNiBAQAogCQkJ
CUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZVJld3JpdGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2NTE0RjIxOTE4QjNFMTY3MDA5OEZGOEIgLyogQnl0ZWNvZGVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjg4NUUxMTE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VEZWYu
aCBpbiBIZWFkZXJzICovLAotCQkJCTBGODAyM0VBMTYxMzgzMkIwMEEwQkE0NSAvKiBCeVZhbElu
Zm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUZFOERFNTRCMjNBQzFEQUQwMDVDOTE0MiAvKiBDYWNo
ZWFibGVJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRThERTU0RDIzQUMxRTg2MDA1
QzkxNDIgLyogQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTE0NENBMzUwMjIyNDE4MDEwMDgxNzc4OSAvKiBDYWNoZWRCeXRlY29kZS5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggNzA3N2VmOWFlMzExNzZmNjM4NWVi
ZTM0Y2NiMzFhNTA1YzE5MWVjNS4uNTJiOTNlZThkOGJiYTY2MDY0ZGIyMDE4ZjNmMzE3NzAyZjc2
YWE5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMTk3LDcgKzE5Nyw2IEBAIGJ5
dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwCiBi
eXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCiBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxl
LmNwcAogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAotYnl0ZWNvZGUvQnlWYWxJbmZvLmNwcAog
Ynl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAogYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIu
Y3BwCiBieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDA1M2U2NjNlOGMxODZlODBjMzNkNmYyNDRmMTgzZGYzZDllZjNhZTkuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQnlWYWxJbmZvLmgiCi0KLSNpbmNsdWRlICJD
YWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotI2lmIEVO
QUJMRShKSVQpCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Ci12b2lkIEJ5VmFsSW5mbzo6
dmlzaXRBZ2dyZWdhdGVJbXBsKFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0gICAgY2FjaGVkSWQudmlz
aXRBZ2dyZWdhdGUodmlzaXRvcik7Ci19Ci0KLURFRklORV9WSVNJVF9BR0dSRUdBVEUoQnlWYWxJ
bmZvKTsKLQotI2VuZGlmIC8vIEVOQUJMRShKSVQpCi0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBiMjI2ZmIxNmY1ZGI3NDRmN2ZlNTU2YmVjNzU4ZDdjZWEwNGU0YWExLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaAorKysgL2Rldi9udWxsCkBAIC0xLDMwMCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVyLmgiCi0jaW5j
bHVkZSAiQ2xhc3NJbmZvLmgiCi0jaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAi
SW5kZXhpbmdUeXBlLmgiCi0jaW5jbHVkZSAiSklUU3R1YlJvdXRpbmUuaCIKLSNpbmNsdWRlICJT
dHJ1Y3R1cmUuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIFN5bWJvbDsKLQotI2lmIEVO
QUJMRShKSVQpCi0KLWNsYXNzIEFycmF5UHJvZmlsZTsKLWNsYXNzIFN0cnVjdHVyZVN0dWJJbmZv
OwotCi1lbnVtIEpJVEFycmF5TW9kZSA6IHVpbnQ4X3QgewotICAgIEpJVEludDMyLAotICAgIEpJ
VERvdWJsZSwKLSAgICBKSVRDb250aWd1b3VzLAotICAgIEpJVEFycmF5U3RvcmFnZSwKLSAgICBK
SVREaXJlY3RBcmd1bWVudHMsCi0gICAgSklUU2NvcGVkQXJndW1lbnRzLAotICAgIEpJVEludDhB
cnJheSwKLSAgICBKSVRJbnQxNkFycmF5LAotICAgIEpJVEludDMyQXJyYXksCi0gICAgSklUVWlu
dDhBcnJheSwKLSAgICBKSVRVaW50OENsYW1wZWRBcnJheSwKLSAgICBKSVRVaW50MTZBcnJheSwK
LSAgICBKSVRVaW50MzJBcnJheSwKLSAgICBKSVRGbG9hdDMyQXJyYXksCi0gICAgSklURmxvYXQ2
NEFycmF5LAotICAgIEpJVEJpZ0ludDY0QXJyYXksCi0gICAgSklUQmlnVWludDY0QXJyYXksCi19
OwotCi1pbmxpbmUgYm9vbCBpc09wdGltaXphYmxlSW5kZXhpbmdUeXBlKEluZGV4aW5nVHlwZSBp
bmRleGluZ1R5cGUpCi17Ci0gICAgc3dpdGNoIChpbmRleGluZ1R5cGUpIHsKLSAgICBjYXNlIEFM
TF9JTlQzMl9JTkRFWElOR19UWVBFUzoKLSAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQ
RVM6Ci0gICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKLSAgICBjYXNlIEFS
UkFZX1dJVEhfQVJSQVlfU1RPUkFHRV9JTkRFWElOR19UWVBFUzoKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQotaW5s
aW5lIGJvb2wgaGFzT3B0aW1pemFibGVJbmRleGluZ0ZvckpTVHlwZShKU1R5cGUgdHlwZSkKLXsK
LSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIERpcmVjdEFyZ3VtZW50c1R5cGU6Ci0gICAg
Y2FzZSBTY29wZWRBcmd1bWVudHNUeXBlOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZh
dWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCi1pbmxpbmUgYm9vbCBoYXNP
cHRpbWl6YWJsZUluZGV4aW5nRm9yQ2xhc3NJbmZvKGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZv
KQotewotICAgIHJldHVybiBpc1R5cGVkVmlldyhjbGFzc0luZm8tPnR5cGVkQXJyYXlTdG9yYWdl
VHlwZSk7Ci19Ci0KLWlubGluZSBib29sIGhhc09wdGltaXphYmxlSW5kZXhpbmcoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCi17Ci0gICAgcmV0dXJuIGlzT3B0aW1pemFibGVJbmRleGluZ1R5cGUoc3Ry
dWN0dXJlLT5pbmRleGluZ1R5cGUoKSkKLSAgICAgICAgfHwgaGFzT3B0aW1pemFibGVJbmRleGlu
Z0ZvckpTVHlwZShzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpKQotICAgICAgICB8fCBoYXNP
cHRpbWl6YWJsZUluZGV4aW5nRm9yQ2xhc3NJbmZvKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkpOwot
fQotCi1pbmxpbmUgSklUQXJyYXlNb2RlIGppdEFycmF5TW9kZUZvckluZGV4aW5nVHlwZShJbmRl
eGluZ1R5cGUgaW5kZXhpbmdUeXBlKQotewotICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKSB7Ci0g
ICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIHJldHVybiBKSVRJbnQz
MjsKLSAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIHJldHVybiBK
SVREb3VibGU7Ci0gICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKLSAgICAg
ICAgcmV0dXJuIEpJVENvbnRpZ3VvdXM7Ci0gICAgY2FzZSBBUlJBWV9XSVRIX0FSUkFZX1NUT1JB
R0VfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIHJldHVybiBKSVRBcnJheVN0b3JhZ2U7Ci0gICAg
ZGVmYXVsdDoKLSAgICAgICAgQ1JBU0goKTsKLSAgICAgICAgcmV0dXJuIEpJVENvbnRpZ3VvdXM7
Ci0gICAgfQotfQotCi1pbmxpbmUgSklUQXJyYXlNb2RlIGppdEFycmF5TW9kZUZvckpTVHlwZShK
U1R5cGUgdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIERpcmVjdEFyZ3Vt
ZW50c1R5cGU6Ci0gICAgICAgIHJldHVybiBKSVREaXJlY3RBcmd1bWVudHM7Ci0gICAgY2FzZSBT
Y29wZWRBcmd1bWVudHNUeXBlOgotICAgICAgICByZXR1cm4gSklUU2NvcGVkQXJndW1lbnRzOwot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgIHJldHVybiBKSVRDb250aWd1b3VzOwotICAgIH0KLX0KLQotaW5saW5lIEpJVEFycmF5TW9k
ZSBqaXRBcnJheU1vZGVGb3JDbGFzc0luZm8oY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCi17
Ci0gICAgc3dpdGNoIChjbGFzc0luZm8tPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkgewotICAgIGNh
c2UgVHlwZUludDg6Ci0gICAgICAgIHJldHVybiBKSVRJbnQ4QXJyYXk7Ci0gICAgY2FzZSBUeXBl
SW50MTY6Ci0gICAgICAgIHJldHVybiBKSVRJbnQxNkFycmF5OwotICAgIGNhc2UgVHlwZUludDMy
OgotICAgICAgICByZXR1cm4gSklUSW50MzJBcnJheTsKLSAgICBjYXNlIFR5cGVVaW50ODoKLSAg
ICAgICAgcmV0dXJuIEpJVFVpbnQ4QXJyYXk7Ci0gICAgY2FzZSBUeXBlVWludDhDbGFtcGVkOgot
ICAgICAgICByZXR1cm4gSklUVWludDhDbGFtcGVkQXJyYXk7Ci0gICAgY2FzZSBUeXBlVWludDE2
OgotICAgICAgICByZXR1cm4gSklUVWludDE2QXJyYXk7Ci0gICAgY2FzZSBUeXBlVWludDMyOgot
ICAgICAgICByZXR1cm4gSklUVWludDMyQXJyYXk7Ci0gICAgY2FzZSBUeXBlRmxvYXQzMjoKLSAg
ICAgICAgcmV0dXJuIEpJVEZsb2F0MzJBcnJheTsKLSAgICBjYXNlIFR5cGVGbG9hdDY0OgotICAg
ICAgICByZXR1cm4gSklURmxvYXQ2NEFycmF5OwotICAgIGNhc2UgVHlwZUJpZ0ludDY0OgotICAg
ICAgICByZXR1cm4gSklUQmlnSW50NjRBcnJheTsKLSAgICBjYXNlIFR5cGVCaWdVaW50NjQ6Ci0g
ICAgICAgIHJldHVybiBKSVRCaWdVaW50NjRBcnJheTsKLSAgICBkZWZhdWx0OgotICAgICAgICBD
UkFTSCgpOwotICAgICAgICByZXR1cm4gSklUQ29udGlndW91czsKLSAgICB9Ci19Ci0KLWlubGlu
ZSBib29sIGppdEFycmF5TW9kZVBlcm1pdHNQdXQoSklUQXJyYXlNb2RlIG1vZGUpCi17Ci0gICAg
c3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBKSVREaXJlY3RBcmd1bWVudHM6Ci0gICAgY2FzZSBK
SVRTY29wZWRBcmd1bWVudHM6Ci0gICAgLy8gRklYTUU6IE9wdGltaXplIEJpZ0ludDY0QXJyYXkg
LyBCaWdVaW50NjRBcnJheSBpbiBJQwotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjExODMKLSAgICBjYXNlIEpJVEJpZ0ludDY0QXJyYXk6Ci0gICAgY2Fz
ZSBKSVRCaWdVaW50NjRBcnJheToKLSAgICAgICAgLy8gV2UgY291bGQgc3VwcG9ydCBwdXRfYnlf
dmFsIG9uIHRoZXNlIGF0IHNvbWUgcG9pbnQsIGJ1dCBpdCdzIGp1c3Qgbm90IHRoYXQgcHJvZml0
YWJsZQotICAgICAgICAvLyBhdCB0aGUgbW9tZW50LgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotfQotCi1pbmxpbmUgYm9v
bCBqaXRBcnJheU1vZGVQZXJtaXRzUHV0RGlyZWN0KEpJVEFycmF5TW9kZSBtb2RlKQotewotICAg
IC8vIFdlIGRvbid0IGFsbG93IHR5cGVkIGFycmF5IHB1dERpcmVjdCBoZXJlIHNpbmNlIHB1dERp
cmVjdCBoYXMKLSAgICAvLyBkZWZpbmVPd25Qcm9wZXJ0eSh7Y29uZmlndXJhYmxlOiB0cnVlLCB3
cml0YWJsZTp0cnVlLCBlbnVtZXJhYmxlOnRydWV9KQotICAgIC8vIHNlbWFudGljcy4gVHlwZWQg
YXJyYXkgaW5kZXhlZCBwcm9wZXJ0aWVzIGFyZSBub24tY29uZmlndXJhYmxlIGJ5Ci0gICAgLy8g
ZGVmYXVsdCwgc28gd2UgY2FuJ3Qgc2ltcGx5IHN0b3JlIHRvIGEgdHlwZWQgYXJyYXkgZm9yIHB1
dERpcmVjdC4KLSAgICAvLwotICAgIC8vIFdlIGNvdWxkIG1vZGVsIHB1dERpcmVjdCBvbiBTY29w
ZWRBcmd1bWVudHMgYW5kIERpcmVjdEFyZ3VtZW50cywgYnV0IHdlCi0gICAgLy8gaGF2ZW4ndCBm
b3VuZCBhbnkgcGVyZm9ybWFuY2UgaW5jZW50aXZlIHRvIGRvIGl0IHlldC4KLSAgICBzd2l0Y2gg
KG1vZGUpIHsKLSAgICBjYXNlIEpJVEludDMyOgotICAgIGNhc2UgSklURG91YmxlOgotICAgIGNh
c2UgSklUQ29udGlndW91czoKLSAgICBjYXNlIEpJVEFycmF5U3RvcmFnZToKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0K
LQotaW5saW5lIFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlRm9ySklUQXJyYXlNb2RlKEpJ
VEFycmF5TW9kZSBtb2RlKQotewotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgSklUSW50
OEFycmF5OgotICAgICAgICByZXR1cm4gVHlwZUludDg7Ci0gICAgY2FzZSBKSVRJbnQxNkFycmF5
OgotICAgICAgICByZXR1cm4gVHlwZUludDE2OwotICAgIGNhc2UgSklUSW50MzJBcnJheToKLSAg
ICAgICAgcmV0dXJuIFR5cGVJbnQzMjsKLSAgICBjYXNlIEpJVFVpbnQ4QXJyYXk6Ci0gICAgICAg
IHJldHVybiBUeXBlVWludDg7Ci0gICAgY2FzZSBKSVRVaW50OENsYW1wZWRBcnJheToKLSAgICAg
ICAgcmV0dXJuIFR5cGVVaW50OENsYW1wZWQ7Ci0gICAgY2FzZSBKSVRVaW50MTZBcnJheToKLSAg
ICAgICAgcmV0dXJuIFR5cGVVaW50MTY7Ci0gICAgY2FzZSBKSVRVaW50MzJBcnJheToKLSAgICAg
ICAgcmV0dXJuIFR5cGVVaW50MzI7Ci0gICAgY2FzZSBKSVRGbG9hdDMyQXJyYXk6Ci0gICAgICAg
IHJldHVybiBUeXBlRmxvYXQzMjsKLSAgICBjYXNlIEpJVEZsb2F0NjRBcnJheToKLSAgICAgICAg
cmV0dXJuIFR5cGVGbG9hdDY0OwotICAgIGNhc2UgSklUQmlnSW50NjRBcnJheToKLSAgICAgICAg
cmV0dXJuIFR5cGVCaWdJbnQ2NDsKLSAgICBjYXNlIEpJVEJpZ1VpbnQ2NEFycmF5OgotICAgICAg
ICByZXR1cm4gVHlwZUJpZ1VpbnQ2NDsKLSAgICBkZWZhdWx0OgotICAgICAgICBDUkFTSCgpOwot
ICAgICAgICByZXR1cm4gTm90VHlwZWRBcnJheTsKLSAgICB9Ci19Ci0KLWlubGluZSBKSVRBcnJh
eU1vZGUgaml0QXJyYXlNb2RlRm9yU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQotewot
ICAgIGlmIChpc09wdGltaXphYmxlSW5kZXhpbmdUeXBlKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBl
KCkpKQotICAgICAgICByZXR1cm4gaml0QXJyYXlNb2RlRm9ySW5kZXhpbmdUeXBlKHN0cnVjdHVy
ZS0+aW5kZXhpbmdUeXBlKCkpOwotICAgIAotICAgIGlmIChoYXNPcHRpbWl6YWJsZUluZGV4aW5n
Rm9ySlNUeXBlKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkpKQotICAgICAgICByZXR1cm4g
aml0QXJyYXlNb2RlRm9ySlNUeXBlKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkpOwotICAg
IAotICAgIEFTU0VSVChoYXNPcHRpbWl6YWJsZUluZGV4aW5nRm9yQ2xhc3NJbmZvKHN0cnVjdHVy
ZS0+Y2xhc3NJbmZvKCkpKTsKLSAgICByZXR1cm4gaml0QXJyYXlNb2RlRm9yQ2xhc3NJbmZvKHN0
cnVjdHVyZS0+Y2xhc3NJbmZvKCkpOwotfQotCi1zdHJ1Y3QgQnlWYWxJbmZvIHsKLSAgICBCeVZh
bEluZm8oQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQotICAgICAgICA6IGJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVJbmRleCkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRVcChDb2RlTG9j
YXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBleGNlcHRpb25IYW5kbGVyLCBKSVRB
cnJheU1vZGUgYXJyYXlNb2RlLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSwgQ29kZUxvY2F0
aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gZG9uZVRhcmdldCwgQ29kZUxvY2F0aW9uTGFiZWw8
SlNJbnRlcm5hbFB0clRhZz4gYmFkVHlwZU5leHRIb3RQYXRoVGFyZ2V0LCBDb2RlTG9jYXRpb25M
YWJlbDxKU0ludGVybmFsUHRyVGFnPiBzbG93UGF0aFRhcmdldCkKLSAgICB7Ci0gICAgICAgIHRo
aXMtPmV4Y2VwdGlvbkhhbmRsZXIgPSBleGNlcHRpb25IYW5kbGVyOwotICAgICAgICB0aGlzLT5k
b25lVGFyZ2V0ID0gZG9uZVRhcmdldDsKLSAgICAgICAgdGhpcy0+YmFkVHlwZU5leHRIb3RQYXRo
VGFyZ2V0ID0gYmFkVHlwZU5leHRIb3RQYXRoVGFyZ2V0OwotICAgICAgICB0aGlzLT5zbG93UGF0
aFRhcmdldCA9IHNsb3dQYXRoVGFyZ2V0OwotICAgICAgICB0aGlzLT5hcnJheVByb2ZpbGUgPSBh
cnJheVByb2ZpbGU7Ci0gICAgICAgIHRoaXMtPnNsb3dQYXRoQ291bnQgPSAwOwotICAgICAgICB0
aGlzLT5zdHViSW5mbyA9IG51bGxwdHI7Ci0gICAgICAgIHRoaXMtPmFycmF5TW9kZSA9IGFycmF5
TW9kZTsKLSAgICAgICAgdGhpcy0+dG9va1Nsb3dQYXRoID0gZmFsc2U7Ci0gICAgICAgIHRoaXMt
PnNlZW4gPSBmYWxzZTsKLSAgICB9Ci0KLSAgICBERUNMQVJFX1ZJU0lUX0FHR1JFR0FURTsKLQot
ICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkgeyByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKEJ5VmFsSW5mbywgbV9zbG93T3BlcmF0aW9uKTsgfQotICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZOb3RJbmRleEp1bXBUYXJnZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoQnlWYWxJbmZvLCBtX25vdEluZGV4SnVtcFRhcmdldCk7IH0KLSAgICBzdGF0aWMgcHRy
ZGlmZl90IG9mZnNldE9mQmFkVHlwZUp1bXBUYXJnZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoQnlWYWxJbmZvLCBtX2JhZFR5cGVKdW1wVGFyZ2V0KTsgfQotCi0gICAgRnVuY3Rpb25QdHI8
T3BlcmF0aW9uUHRyVGFnPiBtX3Nsb3dPcGVyYXRpb247Ci0KLSAgICB1bmlvbiB7Ci0gICAgICAg
IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBtX25vdEluZGV4SnVtcFRh
cmdldDsKLSAgICAgICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBtX25vdElu
ZGV4SnVtcDsKLSAgICB9OwotICAgIHVuaW9uIHsKLSAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8
SklUU3R1YlJvdXRpbmVQdHJUYWc+IG1fYmFkVHlwZUp1bXBUYXJnZXQ7Ci0gICAgICAgIENvZGVM
b2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gbV9iYWRUeXBlSnVtcDsKLSAgICB9OwotCi0g
ICAgQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gZXhjZXB0aW9uSGFu
ZGxlcjsKLSAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBkb25lVGFyZ2V0
OwotICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGJhZFR5cGVOZXh0SG90
UGF0aFRhcmdldDsKLSAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBzbG93
UGF0aFRhcmdldDsKLSAgICBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZTsKLSAgICBCeXRlY29k
ZUluZGV4IGJ5dGVjb2RlSW5kZXg7Ci0gICAgdW5zaWduZWQgc2xvd1BhdGhDb3VudDsKLSAgICBS
ZWZQdHI8SklUU3R1YlJvdXRpbmU+IHN0dWJSb3V0aW5lOwotICAgIENhY2hlYWJsZUlkZW50aWZp
ZXIgY2FjaGVkSWQ7IC8vIE9uY2Ugd2Ugc2V0IGNhY2hlZElkLCB3ZSBtdXN0IG5vdCBjaGFuZ2Ug
dGhlIHZhbHVlLiBKSVQgY29kZSByZWxpZXMgb24gdGhhdCBjb25maWd1cmVkIGNhY2hlZElkIGlz
IG1hcmtlZCBhbmQgcmV0YWluZWQgYnkgQ29kZUJsb2NrIHRocm91Z2ggQnlWYWxJbmZvLgotICAg
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbzsKLSAgICBKSVRBcnJheU1vZGUgYXJyYXlNb2Rl
OyAvLyBUaGUgYXJyYXkgbW9kZSB0aGF0IHdhcyBiYWtlZCBpbnRvIHRoZSBpbmxpbmUgSklUIGNv
ZGUuCi0gICAgYm9vbCB0b29rU2xvd1BhdGggOiAxOwotICAgIGJvb2wgc2VlbiA6IDE7Ci19Owot
Ci1pbmxpbmUgQnl0ZWNvZGVJbmRleCBnZXRCeVZhbEluZm9CeXRlY29kZUluZGV4KEJ5VmFsSW5m
byogaW5mbykKLXsKLSAgICByZXR1cm4gaW5mby0+Ynl0ZWNvZGVJbmRleDsKLX0KLQotI2VuZGlm
IC8vIEVOQUJMRShKSVQpCi0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBkY2VmYzZhZDZjMmRhMGExNDg5OGNm
Y2Y2MTg5YzZlOTRkMjBlNTZlLi5jNzY2YTI2OWU4Y2RlZDRkNzFkODY4MmE2N2Q3YzQzYzVmZmE5
OTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApA
QCAtMzIsNyArMzIsNiBAQAogCiAjaW5jbHVkZSAiQXJpdGhQcm9maWxlLmgiCiAjaW5jbHVkZSAi
QmFzaWNCbG9ja0xvY2F0aW9uLmgiCi0jaW5jbHVkZSAiQnlWYWxJbmZvLmgiCiAjaW5jbHVkZSAi
Qnl0ZWNvZGVEdW1wZXIuaCIKICNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaCIKQEAgLTE2
MjYsOCArMTYyNSw2IEBAIHZvaWQgQ29kZUJsb2NrOjpnZXRJQ1N0YXR1c01hcChjb25zdCBDb25j
dXJyZW50SlNMb2NrZXImLCBJQ1N0YXR1c01hcCYgcmVzdWx0KQogICAgICAgICAgICAgICAgIHJl
c3VsdC5hZGQoc3R1YkluZm8tPmNvZGVPcmlnaW4sIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1
ZS5zdHViSW5mbyA9IHN0dWJJbmZvOwogICAgICAgICAgICAgZm9yIChDYWxsTGlua0luZm8qIGNh
bGxMaW5rSW5mbyA6IGppdERhdGEtPm1fY2FsbExpbmtJbmZvcykKICAgICAgICAgICAgICAgICBy
ZXN1bHQuYWRkKGNhbGxMaW5rSW5mby0+Y29kZU9yaWdpbigpLCBJQ1N0YXR1cygpKS5pdGVyYXRv
ci0+dmFsdWUuY2FsbExpbmtJbmZvID0gY2FsbExpbmtJbmZvOwotICAgICAgICAgICAgZm9yIChC
eVZhbEluZm8qIGJ5VmFsSW5mbyA6IGppdERhdGEtPm1fYnlWYWxJbmZvcykKLSAgICAgICAgICAg
ICAgICByZXN1bHQuYWRkKENvZGVPcmlnaW4oYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4KSwgSUNT
dGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLmJ5VmFsSW5mbyA9IGJ5VmFsSW5mbzsKICAgICAgICAg
fQogI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5n
SklUKGppdFR5cGUoKSkpIHsKQEAgLTE2OTksMjQgKzE2OTYsNiBAQCBTdHJ1Y3R1cmVTdHViSW5m
byogQ29kZUJsb2NrOjpmaW5kU3R1YkluZm8oQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQogICAgIHJl
dHVybiBudWxscHRyOwogfQogCi1CeVZhbEluZm8qIENvZGVCbG9jazo6ZmluZEJ5VmFsSW5mbyhD
b2RlT3JpZ2luIGNvZGVPcmlnaW4pCi17Ci0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlciht
X2xvY2spOwotICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9qaXREYXRhLmdldCgpKSB7Ci0gICAg
ICAgIGZvciAoQnlWYWxJbmZvKiBieVZhbEluZm8gOiBqaXREYXRhLT5tX2J5VmFsSW5mb3MpIHsK
LSAgICAgICAgICAgIGlmIChieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXggPT0gY29kZU9yaWdpbi5i
eXRlY29kZUluZGV4KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGJ5VmFsSW5mbzsKLSAgICAg
ICAgfQotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotQnlWYWxJbmZvKiBDb2RlQmxv
Y2s6OmFkZEJ5VmFsSW5mbyhCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCi17Ci0gICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIHJldHVybiBlbnN1cmVKSVREYXRh
KGxvY2tlcikubV9ieVZhbEluZm9zLmFkZChieXRlY29kZUluZGV4KTsKLX0KLQogQ2FsbExpbmtJ
bmZvKiBDb2RlQmxvY2s6OmFkZENhbGxMaW5rSW5mbyhDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCiB7
CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwpAQCAtMTgyOCw4ICsxODA3
LDYgQEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcmVuY2VzKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLAogCiAjaWYgRU5BQkxFKEpJVCkKICAgICBpZiAo
YXV0byogaml0RGF0YSA9IG1faml0RGF0YS5nZXQoKSkgewotICAgICAgICBmb3IgKEJ5VmFsSW5m
byogYnlWYWxJbmZvIDogaml0RGF0YS0+bV9ieVZhbEluZm9zKQotICAgICAgICAgICAgYnlWYWxJ
bmZvLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKICAgICAgICAgZm9yIChTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykKICAgICAgICAgICAgIHN0dWJJ
bmZvLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggZjM4Nzk5MjU2NDI4ZGQ4ZGFiN2UxYmFlYjBl
MjQxMGIzMTIzNjAwZC4uNGY3MGZhOWZmODFiMzNjN2JmMDQ2OTFkYjUyMWY2OTNhYTNmOTRiNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtOTcsNyAr
OTcsNiBAQCBjbGFzcyBNZXRhZGF0YVRhYmxlOwogY2xhc3MgUENUb0NvZGVPcmlnaW5NYXA7CiBj
bGFzcyBSZWdpc3RlckF0T2Zmc2V0TGlzdDsKIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOwotc3Ry
dWN0IEJ5VmFsSW5mbzsKIAogREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIo
Q29kZUJsb2NrUmFyZURhdGEpOwogCkBAIC0yNzUsNyArMjc0LDYgQEAgY2xhc3MgQ29kZUJsb2Nr
IDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIEJhZzxKSVRNdWxJQz4gbV9tdWxJQ3M7CiAgICAg
ICAgIEJhZzxKSVROZWdJQz4gbV9uZWdJQ3M7CiAgICAgICAgIEJhZzxKSVRTdWJJQz4gbV9zdWJJ
Q3M7Ci0gICAgICAgIEJhZzxCeVZhbEluZm8+IG1fYnlWYWxJbmZvczsKICAgICAgICAgQmFnPENh
bGxMaW5rSW5mbz4gbV9jYWxsTGlua0luZm9zOwogICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8
Q2FsbExpbmtJbmZvLCBQYWNrZWRSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPj4gbV9pbmNv
bWluZ0NhbGxzOwogICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8UG9seW1vcnBoaWNDYWxsTm9k
ZSwgUGFja2VkUmF3U2VudGluZWxOb2RlPFBvbHltb3JwaGljQ2FsbE5vZGU+PiBtX2luY29taW5n
UG9seW1vcnBoaWNDYWxsczsKQEAgLTMxNiwxMCArMzE0LDYgQEAgY2xhc3MgQ29kZUJsb2NrIDog
cHVibGljIEpTQ2VsbCB7CiAKICAgICAvLyBPKG4pIG9wZXJhdGlvbi4gVXNlIGdldElDU3RhdHVz
TWFwKCkgdW5sZXNzIHlvdSByZWFsbHkgb25seSBpbnRlbmQgdG8gZ2V0IG9uZSBzdHViIGluZm8u
CiAgICAgU3RydWN0dXJlU3R1YkluZm8qIGZpbmRTdHViSW5mbyhDb2RlT3JpZ2luKTsKLSAgICAv
LyBPKG4pIG9wZXJhdGlvbi4gVXNlIGdldElDU3RhdHVzTWFwKCkgdW5sZXNzIHlvdSByZWFsbHkg
b25seSBpbnRlbmQgdG8gZ2V0IG9uZSBieS12YWwtaW5mby4KLSAgICBCeVZhbEluZm8qIGZpbmRC
eVZhbEluZm8oQ29kZU9yaWdpbik7Ci0KLSAgICBCeVZhbEluZm8qIGFkZEJ5VmFsSW5mbyhCeXRl
Y29kZUluZGV4KTsKIAogICAgIENhbGxMaW5rSW5mbyogYWRkQ2FsbExpbmtJbmZvKENvZGVPcmln
aW4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0
dXNNYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCmlu
ZGV4IDdhMDU4YzNkMDI1OTZiZjZlYThmZjlhOGE3MmI0ZGMyYTFkMTg5MjMuLmE3NjhhODVkYzFi
ZjA5YjI5ZWI0Yjk5NmZlYTc0YmEyMmQzNTAzMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCkBAIC0zOSwxMiArMzksMTAgQEAgY2xhc3MgSW5CeVN0
YXR1czsKIGNsYXNzIFB1dEJ5U3RhdHVzOwogY2xhc3MgRGVsZXRlQnlTdGF0dXM7CiBjbGFzcyBT
dHJ1Y3R1cmVTdHViSW5mbzsKLXN0cnVjdCBCeVZhbEluZm87CiAKIHN0cnVjdCBJQ1N0YXR1cyB7
CiAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvIHsgbnVsbHB0ciB9OwogICAgIENhbGxM
aW5rSW5mbyogY2FsbExpbmtJbmZvIHsgbnVsbHB0ciB9OwotICAgIEJ5VmFsSW5mbyogYnlWYWxJ
bmZvIHsgbnVsbHB0ciB9OwogICAgIENhbGxMaW5rU3RhdHVzKiBjYWxsU3RhdHVzIHsgbnVsbHB0
ciB9OwogICAgIEdldEJ5U3RhdHVzKiBnZXRTdGF0dXMgeyBudWxscHRyIH07CiAgICAgSW5CeVN0
YXR1cyogaW5TdGF0dXMgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAppbmRleCBmMjdiNzM3NGVmOWFlZTEw
N2E3MDE2ZGE4ODFiY2VkZjc4MTlkNDcwLi5lZjNiNDk3MDUxYzQyZjRmNGI0N2FiOTk4MDQwZjhk
ZmNiYWMxOTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTI4Nyw2ICsyODcsOSBAQCB2b2lkIFN0cnVjdHVyZVN0
dWJJbmZvOjpyZXNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiBsb2NrZXIsIENvZGVC
bG9jayogYwogICAgIGNhc2UgQWNjZXNzVHlwZTo6UHV0QnlWYWw6CiAgICAgICAgIHJlc2V0UHV0
QnkoY29kZUJsb2NrLCAqdGhpcywgUHV0QnlLaW5kOjpCeVZhbCk7CiAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQWNjZXNzVHlwZTo6UHV0UHJpdmF0ZU5hbWU6CisgICAgICAgIHJlc2V0UHV0Qnko
Y29kZUJsb2NrLCAqdGhpcywgUHV0QnlLaW5kOjpQcml2YXRlTmFtZSk7CisgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQWNjZXNzVHlwZTo6SW5CeUlkOgogICAgICAgICByZXNldEluQnkoY29kZUJs
b2NrLCAqdGhpcywgSW5CeUtpbmQ6OkJ5SWQpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKaW5kZXggZTY3
YmMxMDhiZTMyMGRkNmQyNTllNzdjODFiOWQ1MWM0NWNmNTg0ZC4uYmUyYzM4YWRiMGU0NTU3ZWY2
NDI2MTAwZjYwNmZjOGZjMzQyNTkxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKQEAgLTY0LDYgKzY0LDcgQEAgZW51bSBjbGFz
cyBBY2Nlc3NUeXBlIDogaW50OF90IHsKICAgICBEZWxldGVCeUlELAogICAgIERlbGV0ZUJ5VmFs
LAogICAgIEdldFByaXZhdGVOYW1lLAorICAgIFB1dFByaXZhdGVOYW1lLAogICAgIENoZWNrUHJp
dmF0ZUJyYW5kLAogICAgIFNldFByaXZhdGVCcmFuZCwKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKaW5kZXggNTBkZTg1NWI2YWM5MGVlNmQzZDFjOTYxZTQ0ODQ4MjM5NWE0NjE2Zi4uM2Ez
N2JlZTIzZWUzZTViZWU2NWNmZTI3MDc0OWVhMGU1YWE2ZjYwMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcApAQCAtNTE3LDcgKzUxNyw2IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNs
b3dDYXNlcygpCiAgICAgbV9kZWxCeVZhbEluZGV4ID0gMDsKICAgICBtX2luc3RhbmNlT2ZJbmRl
eCA9IDA7CiAgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRleCA9IDA7Ci0gICAgbV9ieVZhbElu
c3RydWN0aW9uSW5kZXggPSAwOwogICAgIG1fY2FsbExpbmtJbmZvSW5kZXggPSAwOwogCiAgICAg
dW5zaWduZWQgYnl0ZWNvZGVDb3VudEhhdmluZ1Nsb3dDYXNlID0gMDsKQEAgLTkxOSw0NSArOTE4
LDYgQEAgdm9pZCBKSVQ6OmxpbmsoKQogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5zdGFu
Y2VPZnMsIHBhdGNoQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX3ByaXZhdGVC
cmFuZEFjY2Vzc2VzLCBwYXRjaEJ1ZmZlcik7CiAKLSAgICBpZiAobV9ieVZhbENvbXBpbGF0aW9u
SW5mby5zaXplKCkpIHsKLSNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKLSAgICAgICAgQ29k
ZUxvY2F0aW9uTGFiZWwgZXhjZXB0aW9uSGFuZGxlcih2bSgpLmdldENUSVN0dWIoaGFuZGxlRXhj
ZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4oKSk7
Ci0jZWxzZQotICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFn
PiBleGNlcHRpb25IYW5kbGVyID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZjxFeGNlcHRpb25IYW5k
bGVyUHRyVGFnPihtX2V4Y2VwdGlvbkhhbmRsZXIpOwotI2VuZGlmCi0KLSAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBieVZhbENvbXBpbGF0aW9uSW5mbyA6IG1fYnlWYWxDb21waWxhdGlvbkluZm8p
IHsKLSAgICAgICAgICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlTm90SW5kZXhKdW1wID0gYnlW
YWxDb21waWxhdGlvbkluZm8ubm90SW5kZXhKdW1wOwotICAgICAgICAgICAgQ29kZUxvY2F0aW9u
SnVtcDxKU0ludGVybmFsUHRyVGFnPiBub3RJbmRleEp1bXA7Ci0gICAgICAgICAgICBpZiAoSnVt
cChwYXRjaGFibGVOb3RJbmRleEp1bXApLmlzU2V0KCkpCi0gICAgICAgICAgICAgICAgbm90SW5k
ZXhKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5s
b2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoYWJsZU5vdEluZGV4SnVtcCkpOwotCi0g
ICAgICAgICAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUJhZFR5cGVKdW1wID0gYnlWYWxDb21w
aWxhdGlvbkluZm8uYmFkVHlwZUp1bXA7Ci0gICAgICAgICAgICBDb2RlTG9jYXRpb25KdW1wPEpT
SW50ZXJuYWxQdHJUYWc+IGJhZFR5cGVKdW1wOwotICAgICAgICAgICAgaWYgKEp1bXAocGF0Y2hh
YmxlQmFkVHlwZUp1bXApLmlzU2V0KCkpCi0gICAgICAgICAgICAgICAgYmFkVHlwZUp1bXAgPSBD
b2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8
SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8uYmFkVHlwZUp1bXApKTsKLQot
ICAgICAgICAgICAgYXV0byBkb25lVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5h
bFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENv
bXBpbGF0aW9uSW5mby5kb25lVGFyZ2V0KSk7Ci0gICAgICAgICAgICBhdXRvIG5leHRIb3RQYXRo
VGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIu
bG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5uZXh0SG90
UGF0aFRhcmdldCkpOwotICAgICAgICAgICAgYXV0byBzbG93UGF0aFRhcmdldCA9IENvZGVMb2Nh
dGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRl
cm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8uc2xvd1BhdGhUYXJnZXQpKTsKLQotICAg
ICAgICAgICAgYnlWYWxDb21waWxhdGlvbkluZm8uYnlWYWxJbmZvLT5zZXRVcCgKLSAgICAgICAg
ICAgICAgICBleGNlcHRpb25IYW5kbGVyLAotICAgICAgICAgICAgICAgIGJ5VmFsQ29tcGlsYXRp
b25JbmZvLmFycmF5TW9kZSwKLSAgICAgICAgICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5h
cnJheVByb2ZpbGUsCi0gICAgICAgICAgICAgICAgZG9uZVRhcmdldCwKLSAgICAgICAgICAgICAg
ICBuZXh0SG90UGF0aFRhcmdldCwKLSAgICAgICAgICAgICAgICBzbG93UGF0aFRhcmdldCk7Ci0g
ICAgICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkg
ewotICAgICAgICAgICAgICAgIGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJ5VmFsSW5mby0+bV9ub3RJ
bmRleEp1bXBUYXJnZXQgPSBzbG93UGF0aFRhcmdldC5yZXRhZ2dlZDxKSVRTdHViUm91dGluZVB0
clRhZz4oKTsKLSAgICAgICAgICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5ieVZhbEluZm8t
Pm1fYmFkVHlwZUp1bXBUYXJnZXQgPSBzbG93UGF0aFRhcmdldC5yZXRhZ2dlZDxKSVRTdHViUm91
dGluZVB0clRhZz4oKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgYnlW
YWxDb21waWxhdGlvbkluZm8uYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcCA9IG5vdEluZGV4SnVt
cDsKLSAgICAgICAgICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5ieVZhbEluZm8tPm1fYmFk
VHlwZUp1bXAgPSBiYWRUeXBlSnVtcDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LQogICAgIGZvciAoYXV0byYgY29tcGlsYXRpb25JbmZvIDogbV9jYWxsQ29tcGlsYXRpb25JbmZv
KSB7CiAgICAgICAgIENhbGxMaW5rSW5mbyYgaW5mbyA9ICpjb21waWxhdGlvbkluZm8uY2FsbExp
bmtJbmZvOwogICAgICAgICBpbmZvLnNldENvZGVMb2NhdGlvbnMoCkBAIC0xMDYwLDcgKzEwMjAs
NyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpCiAgICAgICAg
IGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0oKSk7CiAgICAgfQogCi0gICAgaWYgKCFtX2V4Y2Vw
dGlvbkNoZWNrcy5lbXB0eSgpIHx8IG1fYnlWYWxDb21waWxhdGlvbkluZm8uc2l6ZSgpKSB7Cisg
ICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrcy5lbXB0eSgpKSB7CiAgICAgICAgIG1fZXhjZXB0aW9u
SGFuZGxlciA9IGxhYmVsKCk7CiAgICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzLmxpbmsodGhpcyk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDZjMzRhYzY3M2EyODJjODhiYTFlYmNmYzRh
Y2UxODU1ZmEwMjM4MDEuLjc2N2YxZWY0YmYzMWZhMmM0YTM0ZTE1NmRhOGI1Nzg2MjEzYjE4ODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtMzcsNyArMzcsNiBAQAogCiAjZGVmaW5lIEFT
U0VSVF9KSVRfT0ZGU0VUKGFjdHVhbCwgZXhwZWN0ZWQpIEFTU0VSVF9XSVRIX01FU1NBR0UoYWN0
dWFsID09IGV4cGVjdGVkLCAiSklUIE9mZnNldCBcIiVzXCIgc2hvdWxkIGJlICVkLCBub3QgJWQu
XG4iLCAjZXhwZWN0ZWQsIHN0YXRpY19jYXN0PGludD4oZXhwZWN0ZWQpLCBzdGF0aWNfY2FzdDxp
bnQ+KGFjdHVhbCkpOwogCi0jaW5jbHVkZSAiQnlWYWxJbmZvLmgiCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzLmgiCiAjaW5jbHVkZSAiSklURGlzYXNz
ZW1ibGVyLmgiCkBAIC0xNDksNDIgKzE0OCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9
CiAgICAgfTsKIAotICAgIHN0cnVjdCBCeVZhbENvbXBpbGF0aW9uSW5mbyB7Ci0gICAgICAgIEJ5
VmFsQ29tcGlsYXRpb25JbmZvKCkgeyB9Ci0gICAgICAgIAotICAgICAgICBCeVZhbENvbXBpbGF0
aW9uSW5mbyhCeVZhbEluZm8qIGJ5VmFsSW5mbywgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4
LCBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBub3RJbmRleEp1bXAsIE1hY3JvQXNzZW1i
bGVyOjpQYXRjaGFibGVKdW1wIGJhZFR5cGVKdW1wLCBKSVRBcnJheU1vZGUgYXJyYXlNb2RlLCBB
cnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGRvbmVUYXJn
ZXQsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBuZXh0SG90UGF0aFRhcmdldCkKLSAgICAgICAgICAg
IDogYnlWYWxJbmZvKGJ5VmFsSW5mbykKLSAgICAgICAgICAgICwgYnl0ZWNvZGVJbmRleChieXRl
Y29kZUluZGV4KQotICAgICAgICAgICAgLCBub3RJbmRleEp1bXAobm90SW5kZXhKdW1wKQotICAg
ICAgICAgICAgLCBiYWRUeXBlSnVtcChiYWRUeXBlSnVtcCkKLSAgICAgICAgICAgICwgYXJyYXlN
b2RlKGFycmF5TW9kZSkKLSAgICAgICAgICAgICwgYXJyYXlQcm9maWxlKGFycmF5UHJvZmlsZSkK
LSAgICAgICAgICAgICwgZG9uZVRhcmdldChkb25lVGFyZ2V0KQotICAgICAgICAgICAgLCBuZXh0
SG90UGF0aFRhcmdldChuZXh0SG90UGF0aFRhcmdldCkKLSAgICAgICAgewotICAgICAgICB9Ci0K
LSAgICAgICAgQnlWYWxDb21waWxhdGlvbkluZm8oQnlWYWxJbmZvKiBieVZhbEluZm8sIEJ5dGVj
b2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbm90
SW5kZXhKdW1wLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZG9uZVRhcmdldCwgTWFjcm9Bc3NlbWJs
ZXI6OkxhYmVsIG5leHRIb3RQYXRoVGFyZ2V0KQotICAgICAgICAgICAgOiBieVZhbEluZm8oYnlW
YWxJbmZvKQotICAgICAgICAgICAgLCBieXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpCi0gICAg
ICAgICAgICAsIG5vdEluZGV4SnVtcChub3RJbmRleEp1bXApCi0gICAgICAgICAgICAsIGRvbmVU
YXJnZXQoZG9uZVRhcmdldCkKLSAgICAgICAgICAgICwgbmV4dEhvdFBhdGhUYXJnZXQobmV4dEhv
dFBhdGhUYXJnZXQpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIEJ5VmFsSW5mbyog
YnlWYWxJbmZvOwotICAgICAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXg7Ci0gICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG5vdEluZGV4SnVtcDsKLSAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgYmFkVHlwZUp1bXA7Ci0gICAgICAgIEpJVEFycmF5
TW9kZSBhcnJheU1vZGU7Ci0gICAgICAgIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlOwotICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZG9uZVRhcmdldDsKLSAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkxhYmVsIG5leHRIb3RQYXRoVGFyZ2V0OwotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
TGFiZWwgc2xvd1BhdGhUYXJnZXQ7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIHJldHVy
bkFkZHJlc3M7Ci0gICAgfTsKLQogICAgIHN0cnVjdCBDYWxsQ29tcGlsYXRpb25JbmZvIHsKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHNsb3dQYXRoU3RhcnQ7CiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbCBkb25lTG9jYXRpb247CkBAIC0yMjQsMTMgKzE4Nyw2IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gSklUKHZtLCBjb2RlQmxv
Y2ssIGJ5dGVjb2RlT2Zmc2V0KS5wcml2YXRlQ29tcGlsZShlZmZvcnQpOwogICAgICAgICB9Ci0g
ICAgICAgIAotICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2Fj
aGVkSWQoVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnlWYWxJbmZvKiBieVZhbEluZm8s
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9w
ZXJ0eU5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEpJVCBqaXQodm0sIGNvZGVCbG9jayk7
Ci0gICAgICAgICAgICBqaXQubV9ieXRlY29kZUluZGV4ID0gYnlWYWxJbmZvLT5ieXRlY29kZUlu
ZGV4OwotICAgICAgICAgICAgaml0LnByaXZhdGVDb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2Fj
aGVkSWQoYnlWYWxJbmZvLCByZXR1cm5BZGRyZXNzLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICB9
CiAKICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGZyYW1lUmVnaXN0ZXJDb3VudEZvcihDb2RlQmxv
Y2sqKTsKICAgICAgICAgc3RhdGljIGludCBzdGFja1BvaW50ZXJPZmZzZXRGb3IoQ29kZUJsb2Nr
Kik7CkBAIC0yNDQsOCArMjAwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcHJp
dmF0ZUNvbXBpbGVTbG93Q2FzZXMoKTsKICAgICAgICAgdm9pZCBsaW5rKCk7CiAgICAgICAgIENv
bXBpbGF0aW9uUmVzdWx0IHByaXZhdGVDb21waWxlKEpJVENvbXBpbGF0aW9uRWZmb3J0KTsKLSAg
ICAgICAgCi0gICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVQdXRQcml2YXRlTmFtZVdpdGhDYWNo
ZWRJZChCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBDYWNoZWFibGVJZGVudGlmaWVyKTsK
IAogICAgICAgICAvLyBBZGQgYSBjYWxsIG91dCBmcm9tIEpJVCBjb2RlLCB3aXRob3V0IGFuIGV4
Y2VwdGlvbiBjaGVjay4KICAgICAgICAgQ2FsbCBhcHBlbmRDYWxsKGNvbnN0IEZ1bmN0aW9uUHRy
PENGdW5jdGlvblB0clRhZz4gZnVuY3Rpb24pCkBAIC0zNjMsMTQgKzMxNyw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICAgICAgUHJpdmF0ZUZp
ZWxkUHV0S2luZCBwcml2YXRlRmllbGRQdXRLaW5kKE9wKTsKIAotICAgICAgICAvLyBJZGVudGlm
aWVyIGNoZWNrIGhlbHBlciBmb3IgR2V0QnlWYWwgYW5kIFB1dEJ5VmFsLgotICAgICAgICB2b2lk
IGVtaXRCeVZhbElkZW50aWZpZXJDaGVjayhSZWdpc3RlcklEIGNlbGwsIFJlZ2lzdGVySUQgc2Ny
YXRjaCwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSnVtcExpc3QmIHNsb3dDYXNlcyk7Ci0KLSAgICAg
ICAgSklUUHV0QnlJZEdlbmVyYXRvciBlbWl0UHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoT3BQ
dXRQcml2YXRlTmFtZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSnVtcExpc3QmIGRvbmVDYXNlcywg
SnVtcExpc3QmIHNsb3dDYXNlcyk7Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci0g
ICAgICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wLCBQ
dXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKdW1wTGlzdCYgZG9uZUNhc2VzLCBKdW1wTGlz
dCYgc2xvd0Nhc2VzKTsKLQogICAgICAgICBlbnVtIEZpbmFsT2JqZWN0TW9kZSB7IE1heUJlRmlu
YWwsIEtub3duTm90RmluYWwgfTsKIAogICAgICAgICB2b2lkIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoVmlydHVhbFJlZ2lzdGVyIHNyYywgSlNWYWx1ZVJlZ3MgZHN0KTsKQEAgLTEwMTIsNyArOTU4
LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxKSVREZWxCeVZhbEdlbmVyYXRv
cj4gbV9kZWxCeVZhbHM7CiAgICAgICAgIFZlY3RvcjxKSVRJbnN0YW5jZU9mR2VuZXJhdG9yPiBt
X2luc3RhbmNlT2ZzOwogICAgICAgICBWZWN0b3I8SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJh
dG9yPiBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzOwotICAgICAgICBWZWN0b3I8QnlWYWxDb21waWxh
dGlvbkluZm8+IG1fYnlWYWxDb21waWxhdGlvbkluZm87CiAgICAgICAgIFZlY3RvcjxDYWxsQ29t
cGlsYXRpb25JbmZvPiBtX2NhbGxDb21waWxhdGlvbkluZm87CiAgICAgICAgIFZlY3RvcjxKdW1w
VGFibGU+IG1fam1wVGFibGU7CiAKQEAgLTEwNDAsNyArOTg1LDYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHVuc2lnbmVkIG1fZGVsQnlJZEluZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAg
dW5zaWduZWQgbV9pbnN0YW5jZU9mSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25l
ZCBtX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4IHsgVUlOVF9NQVggfTsKLSAgICAgICAgdW5zaWdu
ZWQgbV9ieVZhbEluc3RydWN0aW9uSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25l
ZCBtX2NhbGxMaW5rSW5mb0luZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9i
eXRlY29kZUNvdW50SGF2aW5nU2xvd0Nhc2UgeyAwIH07CiAgICAgICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggN2ZkMDQ2MzI4MWUzNWRmZTU1
ZmFlMjA2MTAwYTE1ZGE5NzE5YTI5OC4uYWMwNDRkMjk0ZjIwY2UxZWQ5YjMzNDliNGNmYjUzYzQ5
OTI3MWE2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CkBAIC0xMzE1LDcgKzEzMTUsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
Q2hlY2tQcml2YXRlQnJhbmRHZW5lcmljLCB2b2lkLCAoSlNHbG9iYWxPYmplYwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBC
eVZhbEluZm8qIGJ5VmFsSW5mbywgUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5kKSkKK0pTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplLCB2b2lk
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJh
c2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFByaXZhdGVGaWVsZFB1
dEtpbmQgcHV0S2luZCkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTEzMzQs
NjMgKzEzMzQsMzAgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dFByaXZh
dGVOYW1lT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCoKICAgICBhdXRvIHByb3BlcnR5
TmFtZSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBU
SU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOwogCi0gICAgT3B0aW1pemF0aW9uUmVzdWx0
IG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6Tm90T3B0aW1pemVkOwot
Ci0gICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpICYmIENhY2hlYWJsZUlkZW50aWZpZXI6Omlz
Q2FjaGVhYmxlSWRlbnRpZmllckNlbGwoc3Vic2NyaXB0KSkgewotICAgICAgICBBU1NFUlQoc3Vi
c2NyaXB0LmlzU3ltYm9sKCkpOwotICAgICAgICBBU1NFUlQoY2FsbEZyYW1lLT5ieXRlY29kZUlu
ZGV4KCkgIT0gQnl0ZWNvZGVJbmRleCgwKSk7Ci0gICAgICAgIEFTU0VSVCghYnlWYWxJbmZvLT5z
dHViUm91dGluZSk7Ci0gICAgICAgIGlmIChieVZhbEluZm8tPnNlZW4pIHsKLSAgICAgICAgICAg
IGlmIChieVZhbEluZm8tPmNhY2hlZElkLnVpZCgpID09IHByb3BlcnR5TmFtZSkgewotICAgICAg
ICAgICAgICAgIEpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKHZtLCBjb2Rl
QmxvY2ssIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBi
eVZhbEluZm8tPmNhY2hlZElkKTsKLSAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQg
PSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok9wdGltaXplZDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgLy8gU2VlbSBsaWtlIGEgZ2VuZXJpYyBwcm9wZXJ0eSBhY2Nlc3Mgc2l0
ZS4KLSAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1
bHQ6OkdpdmVVcDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+
bV9sb2NrKTsKLSAgICAgICAgICAgICAgICBieVZhbEluZm8tPnNlZW4gPSB0cnVlOwotICAgICAg
ICAgICAgICAgIGJ5VmFsSW5mby0+Y2FjaGVkSWQgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tQ2VsbChzdWJzY3JpcHQuYXNDZWxsKCkpOwotICAgICAgICAgICAgICAgIG9wdGltaXph
dGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6U2Vlbk9uY2U7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2ssIHN1YnNjcmlwdC5h
c0NlbGwoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAob3B0aW1pemF0aW9uUmVzdWx0
ICE9IE9wdGltaXphdGlvblJlc3VsdDo6T3B0aW1pemVkICYmIG9wdGltaXphdGlvblJlc3VsdCAh
PSBPcHRpbWl6YXRpb25SZXN1bHQ6OlNlZW5PbmNlKSB7Ci0gICAgICAgIC8vIElmIHdlIHRha2Ug
c2xvdyBwYXRoIG1vcmUgdGhhbiAxMCB0aW1lcyB3aXRob3V0IHBhdGNoaW5nIHRoZW4gbWFrZSBz
dXJlIHdlCi0gICAgICAgIC8vIG5ldmVyIG1ha2UgdGhhdCBtaXN0YWtlIGFnYWluLiBUaGlzIGdp
dmVzIDEwIGl0ZXJhdGlvbnMgd29ydGggb2Ygb3Bwb3J0dW5pdHkKLSAgICAgICAgLy8gZm9yIHVz
IHRvIG9ic2VydmUgdGhhdCB0aGUgcHV0X3ByaXZhdGVfbmFtZSBtYXkgYmUgcG9seW1vcnBoaWMu
Ci0gICAgICAgIC8vIFdlIGNvdW50IHVwIHNsb3dQYXRoQ291bnQgZXZlbiBpZiB0aGUgcmVzdWx0
IGlzIEdpdmVVcC4KLSAgICAgICAgaWYgKCsrYnlWYWxJbmZvLT5zbG93UGF0aENvdW50ID49IDEw
KQotICAgICAgICAgICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpH
aXZlVXA7Ci0gICAgfQotCi0gICAgaWYgKG9wdGltaXphdGlvblJlc3VsdCA9PSBPcHRpbWl6YXRp
b25SZXN1bHQ6OkdpdmVVcCkgewotICAgICAgICAvLyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6
ZS4KLSAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwotICAgICAgICBpZiAo
Y29kZUJsb2NrLT51c2VEYXRhSUMoKSkKLSAgICAgICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3Bl
cmF0aW9uID0gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0cihP
VVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMpOwotICAg
IH0KLQotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAKICAgICAvLyBQcml2YXRlIGZpZWxkcyBj
YW4gb25seSBiZSBhY2Nlc3NlZCB3aXRoaW4gY2xhc3MgbGV4aWNhbCBzY29wZQogICAgIC8vIGFu
ZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdheXMgaW4gc3RyaWN0IG1vZGUKKyAgICBBY2Nlc3NUeXBl
IGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlw
ZSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBDb21tb25TbG93UGF0aHM6Om9yaWdpbmFs
U3RydWN0dXJlQmVmb3JlUHV0KHZtLCBiYXNlVmFsdWUpOwogICAgIGNvbnN0IGJvb2wgaXNTdHJp
Y3RNb2RlID0gdHJ1ZTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0
cmljdE1vZGUpOwogICAgIGlmIChwdXRLaW5kLmlzRGVmaW5lKCkpCiAgICAgICAgIGJhc2VPYmpl
Y3QtPmRlZmluZVByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpOwogICAgIGVsc2UKICAgICAgICAgYmFzZU9iamVjdC0+c2V0UHJpdmF0ZUZpZWxkKGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0YXRpY19j
YXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpICYmIENhY2hlYWJsZUlkZW50aWZpZXI6Omlz
Q2FjaGVhYmxlSWRlbnRpZmllckNlbGwoc3Vic2NyaXB0KSkgeworICAgICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tQ2Vs
bChzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2Fj
aGluZ0J5KHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSwgaWRlbnRpZmllcikpCisgICAgICAgICAg
ICByZXBhdGNoUHV0QnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgc3RydWN0
dXJlLCBpZGVudGlmaWVyLCBzbG90LCAqc3R1YkluZm8sIFB1dEJ5S2luZDo6UHJpdmF0ZU5hbWUs
IHB1dEtpbmQuaXNEZWZpbmUoKSA/IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZERlZmluZSA6
IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldCk7CisgICAgfQogfQogCiAvLyBXZSBuZWVk
IHRvIG1hdGNoIHRoZSBzaWduYXR1cmUgb2Ygb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6
ZQotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJp
Yywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIFByaXZhdGVGaWVsZFB1
dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2luZCkpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YkluZm8sIFByaXZhdGVGaWVsZFB1dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2lu
ZCkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSog
Y2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTE0MTksOCArMTM4Niw3IEBA
IEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMs
IHZvaWQsIChKU0dsb2JhbE9iamVjdCoKICAgICBlbHNlCiAgICAgICAgIGJhc2VPYmplY3QtPnNl
dFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwog
Ci0gICAgaWYgKGJ5VmFsSW5mbykKLSAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0
cnVlOworICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogfQogCiBKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ2FsbEV2YWwsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgRUNNQU1vZGUg
ZWNtYU1vZGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRl
eCBlZmJkODg3MzU0MmZjM2Y0YmU4M2UwNmJlMDYyNTdiZmMyOWNjNDYyLi42ZmJjMWMzZTY5OTFh
ZmNhYTgwZjgzZWNiY2M2ZmIzZDgwOTU0NGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaApAQCAtNjQsNyArNjQsNiBAQCBjbGFzcyBTeW1ib2xUYWJsZTsKIGNs
YXNzIFZNOwogY2xhc3MgV2F0Y2hwb2ludFNldDsKIAotc3RydWN0IEJ5VmFsSW5mbzsKIHN0cnVj
dCBFQ01BTW9kZTsKIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWU7CiBzdHJ1Y3QgSW5zdHJ1Y3Rpb247
CkBAIC04MCw3ICs3OSw2IEBAIHR5cGVkZWYgY2hhciogVW51c2VkUHRyOwogICAgIEFwOiBBcnJh
eVByb2ZpbGUqCiAgICAgQXJwOiBCaW5hcnlBcml0aFByb2ZpbGUqCiAgICAgQjogQnV0dGVyZmx5
KgotICAgIEJ5OiBCeVZhbEluZm8qCiAgICAgQzogSlNDZWxsKgogICAgIENiOiBDb2RlQmxvY2sq
CiAgICAgQ2xpOiBDYWxsTGlua0luZm8qCkBAIC0yMDEsOCArMTk5LDggQEAgSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplLCB2b2lkLCAo
SlNHbG9iYWxPYmoKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU2V0UHJpdmF0
ZUJyYW5kR2VuZXJpYywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8q
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRHZW5lcmljLCB2b2lkLCAoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSkpOwogCi1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dFByaXZhdGVOYW1l
T3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIFByaXZhdGVGaWVsZFB1dEtpbmQp
KTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5l
cmljLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBQcml2YXRlRmllbGRQdXRLaW5kKSk7CitK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUs
IHZvaWQsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUsIFN0cnVjdHVyZVN0dWJJbmZvKiwgUHJpdmF0ZUZpZWxkUHV0S2luZCkp
OworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVy
aWMsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIFN0cnVjdHVyZVN0dWJJbmZvKiwgUHJpdmF0ZUZpZWxkUHV0S2lu
ZCkpOwogCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFsTm9uU3Ry
aWN0T3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFN0cnVjdHVyZVN0dWJJbmZvKiwgQXJyYXlQcm9m
aWxlKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZhbFN0cmlj
dE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEFycmF5UHJvZmls
ZSopKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAKaW5kZXggNzk0MDIxZGFkM2U0NmU5NmY3MWRmZDE4MDY3MTlkMzVlOTZkNWQzOS4uNWIyMzFm
NTY5NzAzNTliYjNhMTBjYzdjMjBhNGM5ZGQwOTgyMjZmNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTQ2Nyw0OSArNDY3LDYgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIGVtaXRXcml0ZUJhcnJpZXIoYmFzZSwgU2hvdWxkRmlsdGVyQmFzZSk7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIE9wPgotSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVt
aXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLCBDYWNo
ZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgSnVtcExpc3QmIGRvbmVDYXNlcywgSnVtcExp
c3QmIHNsb3dDYXNlcykKLXsKLSAgICAvLyBiYXNlOiByZWdUMAotICAgIC8vIHByb3BlcnR5OiBy
ZWdUMQotICAgIC8vIHNjcmF0Y2g6IHJlZ1QyCi0KLSAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9
IGJ5dGVjb2RlLm1fYmFzZTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5t
X3ZhbHVlOwotCi0gICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hJZk5vdENlbGwocmVnVDEpKTsK
LSAgICBlbWl0QnlWYWxJZGVudGlmaWVyQ2hlY2socmVnVDEsIHJlZ1QxLCBwcm9wZXJ0eU5hbWUs
IHNsb3dDYXNlcyk7Ci0KLSAgICAvLyBXcml0ZSBiYXJyaWVyIGJyZWFrcyB0aGUgcmVnaXN0ZXJz
LiBTbyBhZnRlciBpc3N1aW5nIHRoZSB3cml0ZSBiYXJyaWVyLAotICAgIC8vIHJlbG9hZCB0aGUg
cmVnaXN0ZXJzLgotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKGJhc2UsIHJlZ1QwLCB2YWx1
ZSwgcmVnVDEpOwotCi0gICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29k
ZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdU
MCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDMsIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSks
IHB1dEtpbmQpOwotICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICAvLyBJQyBj
YW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNlIGlz
IGNlbGwuCi0gICAgLy8gRklYTUU6IFVzZSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyIGluIEJh
c2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNpemUuCi0gICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM5NQotICAgIGVtaXRXcml0ZUJhcnJp
ZXIoYmFzZSwgU2hvdWxkRmlsdGVyQmFzZSk7Ci0gICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkp
OwotCi0gICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0gICAgZ2VuLnNsb3dQYXRo
SnVtcCgpLmxpbmsodGhpcyk7Ci0KLSAgICBDYWxsIGNhbGw7Ci0gICAgaWYgKEpJVENvZGU6OnVz
ZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKLSAgICAgICAgZ2VuLnN0dWJJbmZvKCkt
Pm1fc2xvd09wZXJhdGlvbiA9IGdlbi5zbG93UGF0aEZ1bmN0aW9uKCk7Ci0gICAgICAgIG1vdmUo
VHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAg
ICAgICBjYWxsT3BlcmF0aW9uPGRlY2x0eXBlKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCkpPihBZGRy
ZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwg
R1BSSW5mbzo6bm9uQXJnR1BSMCwgcmVnVDEsIHJlZ1QwLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygp
KTsKLSAgICB9IGVsc2UKLSAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRo
RnVuY3Rpb24oKSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBn
ZW4uc3R1YkluZm8oKSwgcmVnVDEsIHJlZ1QwLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKLSAg
ICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwotICAgIGRvbmVD
YXNlcy5hcHBlbmQoanVtcCgpKTsKLQotICAgIHJldHVybiBnZW47Ci19Ci0KIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgYm9vbCBp
c0RpcmVjdCA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSA9PSBvcF9wdXRfYnlfdmFs
X2RpcmVjdDsKQEAgLTYxMSw3NiArNTY4LDc1IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2
YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOwog
ICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxS
ZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7Ci0gICAgQnlWYWxJbmZvKiBi
eVZhbEluZm8gPSBtX2NvZGVCbG9jay0+YWRkQnlWYWxJbmZvKG1fYnl0ZWNvZGVJbmRleCk7Cisg
ICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKIAogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIocHJvcGVydHksIHJlZ1QxKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCBy
ZWdUMik7CiAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwog
Ci0gICAgUGF0Y2hhYmxlSnVtcCBmYXN0UGF0aEptcDsKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0
YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJl
c3MoJmJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRh
Zyk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGZhc3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOwot
ICAgICAgICBhZGRTbG93Q2FzZShmYXN0UGF0aEptcCk7Ci0gICAgfQotICAgIAotICAgIExhYmVs
IGRvbmUgPSBsYWJlbCgpOwotICAgIAotICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm8uYXBwZW5k
KEJ5VmFsQ29tcGlsYXRpb25JbmZvKGJ5VmFsSW5mbywgbV9ieXRlY29kZUluZGV4LCBmYXN0UGF0
aEptcCwgZG9uZSwgZG9uZSkpOworICAgIEpJVFB1dEJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAg
ICAgbV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6UHV0
UHJpdmF0ZU5hbWUsIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdz
KHJlZ1QyKSwgSW52YWxpZEdQUlJlZywgcmVnVDQpOworICAgIGdlbi5zdHViSW5mbygpLT5wcm9w
ZXJ0eUlzU3ltYm9sID0gdHJ1ZTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Cisg
ICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRk
U2xvd0Nhc2UoKTsKKyAgICBtX3B1dEJ5VmFscy5hcHBlbmQoZ2VuKTsKKworICAgIC8vIElDIGNh
biB3cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQgd3JpdGUtYmFycmllciBpZiBhIGJhc2UgaXMg
Y2VsbC4KKyAgICAvLyBGSVhNRTogVXNlIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIgaW4gQmFz
ZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNvZGUgc2l6ZS4KKyAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5Mzk1CisgICAgZW1pdFdyaXRlQmFycmll
cihiYXNlLCBTaG91bGRGaWx0ZXJCYXNlKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1
dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOwotICAgIEJ5VmFs
SW5mbyogYnlWYWxJbmZvID0gbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rp
b25JbmRleF0uYnlWYWxJbmZvOwogICAgIFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCA9IGJ5
dGVjb2RlLm1fcHV0S2luZDsKIAorICAgIEpJVFB1dEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX3B1
dEJ5VmFsc1ttX3B1dEJ5VmFsSW5kZXgrK107CisKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIp
OwotICAgIExhYmVsIHNsb3dQYXRoID0gbGFiZWwoKTsKKworICAgIExhYmVsIGNvbGRQYXRoQmVn
aW4gPSBsYWJlbCgpOwogCiAjaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorICAgIC8vIFRo
ZXkgYXJlIGNvbmZpZ3VyZWQgaW4gdGhlIGZhc3QgcGF0aCBhbmQgbm90IGNsb2JiZXJlZC4KICAg
ICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKICAgICBjb25zdGV4cHIgR1BSUmVn
IHByb3BlcnR5R1BSID0gcmVnVDE7CiAgICAgY29uc3RleHByIEdQUlJlZyB2YWx1ZUdQUiA9IHJl
Z1QyOwotCi0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VH
UFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSwgcHJv
cGVydHlHUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV92YWx1ZSwg
dmFsdWVHUFIpOwotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0UHJp
dmF0ZU5hbWVPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCkpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIsIGJ5VmFsSW5mbywgVHJ1c3RlZElt
bTMyKHB1dEtpbmQudmFsdWUoKSkpOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIsIGdlbi5zdHVi
SW5mbygpLCBUcnVzdGVkSW1tMzIocHV0S2luZC52YWx1ZSgpKSk7CiAjZWxzZQogICAgIFZNJiB2
bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2Rl
SW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQp
ID09IG1fYnl0ZWNvZGVJbmRleCk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zm
c2V0R1BSID0gYXJndW1lbnRHUFIwOwotICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zm
c2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOwotCi0gICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BS
ID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1
bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyB2YWx1ZUdQUiA9IGFyZ3VtZW50R1BSMzsK
LSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5VmFsSW5mb0dQUiA9IGFyZ3VtZW50R1BSNDsKLSAgICBj
b25zdGV4cHIgR1BSUmVnIHB1dEtpbmRHUFIgPSBhcmd1bWVudEdQUjU7CisgICAgLy8gY29uc3Rl
eHByIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7CisgICAgLy8gY29uc3RleHByIEdQUlJlZyBwcm9w
ZXJ0eUdQUiA9IHJlZ1QxOworICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgdmFsdWVHUFIgPSByZWdU
MjsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcmVnVDM7CisgICAgY29uc3Rl
eHByIEdQUlJlZyBwdXRLaW5kR1BSID0gcmVnVDQ7CisgICAgY29uc3RleHByIEdQUlJlZyBieXRl
Y29kZU9mZnNldEdQUiA9IHJlZ1Q1OwogCi0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRl
Y29kZS5tX2Jhc2UsIGJhc2VHUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNv
ZGUubV9wcm9wZXJ0eSwgcHJvcGVydHlHUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
Ynl0ZWNvZGUubV92YWx1ZSwgdmFsdWVHUFIpOwotICAgIG1vdmUoVHJ1c3RlZEltbVB0cihieVZh
bEluZm8pLCBieVZhbEluZm9HUFIpOworICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zm
c2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1
YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMihwdXRLaW5kLnZh
bHVlKCkpLCBwdXRLaW5kR1BSKTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHVi
KHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKTsKIAogICAgIENhbGwgY2FsbDsKKyAgICBhdXRvIG9wZXJhdGlvbiA9
IG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemU7CiAgICAgaWYgKEpJVENvZGU6OnVzZURh
dGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3Bl
cmF0aW9uID0gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZTsKKyAgICAgICAgZ2VuLnN0
dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbjsKICAgICBlbHNlCi0gICAgICAg
IGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUpOworICAg
ICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIGVtaXROYWtlZE5lYXJDYWxs
KHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKSk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKLSAgICBtX2J5
VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdl
dCA9IHNsb3dQYXRoOwotICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0
aW9uSW5kZXhdLnJldHVybkFkZHJlc3MgPSBjYWxsOwotICAgIG1fYnlWYWxJbnN0cnVjdGlvbklu
ZGV4Kys7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsK
IH0KIAogI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtNjk1LDI0ICs2NTEsMjUgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0X3By
aXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAgICBpZiAoIUpJVENvZGU6OnVzZURhdGFJQyhKSVRU
eXBlOjpCYXNlbGluZUpJVCkpCiAgICAgICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAKLSAg
ICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOworICAg
IGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOworICAgIGNvbnN0ZXhwciBHUFJSZWcg
cHJvcGVydHlHUFIgPSByZWdUMTsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gcmVn
VDI7CisgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHJlZ1QzOworICAgIGNvbnN0
ZXhwciBHUFJSZWcgcHV0S2luZEdQUiA9IHJlZ1Q0OworICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0
ZWNvZGVPZmZzZXRHUFIgPSByZWdUNTsKKwogICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0
R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsK
IAotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFIwOwot
ICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4
cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgdmFsdWVHUFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBieVZhbElu
Zm9HUFIgPSBhcmd1bWVudEdQUjQ7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwdXRLaW5kR1BSID0g
YXJndW1lbnRHUFI1OworICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcmVn
VDU7CiAKICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9j
ayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmpl
Y3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQ
Uik7CiAKLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0UHJpdmF0
ZU5hbWVPcHRpbWl6ZSk+KGdsb2JhbE9iamVjdEdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZh
bHVlR1BSLCBieVZhbEluZm9HUFIsIHB1dEtpbmRHUFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50
czxkZWNsdHlwZShvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKT4oZ2xvYmFsT2JqZWN0
R1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIsIHN0dWJJbmZvR1BSLCBwdXRLaW5k
R1BSKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCiAgICAgaWYgKEpJVENv
ZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1w
KEFkZHJlc3MoYXJndW1lbnRHUFI0LCBCeVZhbEluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVu
dEdQUjQsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJh
dGlvblB0clRhZyk7CiAgICAgZWxzZQogICAgICAgICBqaXQucmV0KCk7CiAKQEAgLTMwNjAsNjIg
KzMwMTcsOCBAQCB2b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcihKU0NlbGwqIG93bmVyLCBWaXJ0
dWFsUmVnaXN0ZXIgdmFsdWUsIFdyaXRlQmFycmllck1vZAogICAgICAgICB2YWx1ZU5vdENlbGwu
bGluayh0aGlzKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIE9wPgotSklUUHV0QnlJZEdlbmVy
YXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBw
dXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgSnVtcExpc3QmIGRvbmVD
YXNlcywgSnVtcExpc3QmIHNsb3dDYXNlcykKLXsKLSAgICAvLyBiYXNlOiB0YWcocmVnVDEpLCBw
YXlsb2FkKHJlZ1QwKQotICAgIC8vIHByb3BlcnR5OiB0YWcocmVnVDMpLCBwYXlsb2FkKHJlZ1Qy
KQotCi0gICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7Ci0gICAgVmly
dHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKLQotICAgIHNsb3dDYXNlcy5h
cHBlbmQoYnJhbmNoSWZOb3RDZWxsKHJlZ1QzKSk7Ci0gICAgZW1pdEJ5VmFsSWRlbnRpZmllckNo
ZWNrKHJlZ1QyLCByZWdUMiwgcHJvcGVydHlOYW1lLCBzbG93Q2FzZXMpOwotCi0gICAgLy8gV3Jp
dGUgYmFycmllciBicmVha3MgdGhlIHJlZ2lzdGVycy4gU28gYWZ0ZXIgaXNzdWluZyB0aGUgd3Jp
dGUgYmFycmllciwKLSAgICAvLyByZWxvYWQgdGhlIHJlZ2lzdGVycy4KLSAgICAvLwotICAgIC8v
IElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQgd3JpdGUtYmFycmllciBpZiBhIGJh
c2UgaXMgY2VsbC4KLSAgICAvLyBXZSBhcmUgZW1pdHRpbmcgd3JpdGUtYmFycmllciBiZWZvcmUg
d3JpdGluZyBoZXJlIGJ1dCB0aGlzIGlzIE9LIHNpbmNlIDMyYml0IEpTQyBkb2VzIG5vdCBoYXZl
IGNvbmN1cnJlbnQgR0MuCi0gICAgLy8gRklYTUU6IFVzZSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJy
aWVyIGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNpemUuCi0gICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM5NQotICAgIGVtaXRX
cml0ZUJhcnJpZXIoYmFzZSwgU2hvdWxkRmlsdGVyQmFzZSk7Ci0gICAgZW1pdExvYWRQYXlsb2Fk
KGJhc2UsIHJlZ1QwKTsKLSAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDMsIHJlZ1QyKTsKLQotICAg
IEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6
QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwg
SlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSW52YWxpZEdQUlJlZywgcmVnVDEsIGVjbWFNb2Rl
KGJ5dGVjb2RlKSwgcHV0S2luZCk7Ci0gICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwot
ICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4g
PSBsYWJlbCgpOwotICAgIGdlbi5zbG93UGF0aEp1bXAoKS5saW5rKHRoaXMpOwotCi0gICAgLy8g
SklUUHV0QnlJZEdlbmVyYXRvciBvbmx5IHByZXNlcnZlIHRoZSB2YWx1ZSBhbmQgdGhlIGJhc2Un
cyBwYXlsb2FkLCB3ZSBoYXZlIHRvIHJlbG9hZCB0aGUgdGFnLgotICAgIGVtaXRMb2FkVGFnKGJh
c2UsIHJlZ1QxKTsKLQotICAgIENhbGwgY2FsbDsKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlD
KEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgewotICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93
T3BlcmF0aW9uID0gZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKTsKLSAgICAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKGdlbi5zdHViSW5mbygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgICAgIGNh
bGxPcGVyYXRpb248ZGVjbHR5cGUoZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSk+KEFkZHJlc3MoR1BS
SW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBHUFJJbmZvOjpub25BcmdHUFIwLCBK
U1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBwcm9w
ZXJ0eU5hbWUucmF3Qml0cygpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgY2FsbCA9IGNhbGxPcGVy
YXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
LCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSlNWYWx1ZVJlZ3Mo
cmVnVDEsIHJlZ1QwKSwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7Ci0gICAgZ2VuLnJlcG9ydFNs
b3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKLSAgICBkb25lQ2FzZXMuYXBwZW5kKGp1
bXAoKSk7Ci0KLSAgICByZXR1cm4gZ2VuOwotfQotCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkK
IAotSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJ
ZChPcFB1dFByaXZhdGVOYW1lIGJ5dGVjb2RlLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5
TmFtZSwgSnVtcExpc3QmIGRvbmVDYXNlcywgSnVtcExpc3QmIHNsb3dDYXNlcykKLXsKLSAgICBh
dXRvIHB1dEtpbmQgPSBieXRlY29kZS5tX3B1dEtpbmQuaXNEZWZpbmUoKSA/IFB1dEtpbmQ6OkRp
cmVjdFByaXZhdGVGaWVsZERlZmluZSA6IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldDsK
LSAgICByZXR1cm4gZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKGJ5dGVjb2RlLCBwdXRLaW5kLCBw
cm9wZXJ0eU5hbWUsIGRvbmVDYXNlcywgc2xvd0Nhc2VzKTsKLX0KLQogdm9pZCBKSVQ6OmVtaXRX
cml0ZUJhcnJpZXIoVmlydHVhbFJlZ2lzdGVyIG93bmVyLCBXcml0ZUJhcnJpZXJNb2RlIG1vZGUp
CiB7CiAgICAgQVNTRVJUKG1vZGUgPT0gVW5jb25kaXRpb25hbFdyaXRlQmFycmllciB8fCBtb2Rl
ID09IFNob3VsZEZpbHRlckJhc2UpOwpAQCAtMzEyOSw1OCArMzAzMiw2IEBAIHZvaWQgSklUOjpl
bWl0V3JpdGVCYXJyaWVyKEpTQ2VsbCogb3duZXIpCiAgICAgb3duZXJJc1JlbWVtYmVyZWRPcklu
RWRlbi5saW5rKHRoaXMpOwogfQogCi12b2lkIEpJVDo6ZW1pdEJ5VmFsSWRlbnRpZmllckNoZWNr
KFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBDYWNoZWFibGVJZGVudGlmaWVy
IHByb3BlcnR5TmFtZSwgSnVtcExpc3QmIHNsb3dDYXNlcykKLXsKLSAgICBpZiAocHJvcGVydHlO
YW1lLmlzU3ltYm9sQ2VsbCgpKQotICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaFB0cihO
b3RFcXVhbCwgY2VsbCwgVHJ1c3RlZEltbVB0cihwcm9wZXJ0eU5hbWUuY2VsbCgpKSkpOwotICAg
IGVsc2UgewotICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaElmTm90U3RyaW5nKGNlbGwp
KTsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKGNlbGwsIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVl
KCkpLCBzY3JhdGNoKTsKLSAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1
YWwsIHNjcmF0Y2gsIFRydXN0ZWRJbW1QdHIocHJvcGVydHlOYW1lLnVpZCgpKSkpOwotICAgIH0K
LX0KLQotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQo
QnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2Fj
aGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpCi17Ci0gICAgY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiA9IG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChieVZh
bEluZm8tPmJ5dGVjb2RlSW5kZXgpLnB0cigpOwotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7Ci0KLSAgICBKdW1wTGlzdCBkb25l
Q2FzZXM7Ci0gICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwotCi0gICAgSklUUHV0QnlJZEdlbmVyYXRv
ciBnZW4gPSBlbWl0UHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoYnl0ZWNvZGUsIHByb3BlcnR5
TmFtZSwgZG9uZUNhc2VzLCBzbG93Q2FzZXMpOwotCi0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxv
Y2tlcihtX2NvZGVCbG9jay0+bV9sb2NrKTsKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp0
aGlzLCBtX2NvZGVCbG9jaywgTGlua0J1ZmZlcjo6UHJvZmlsZTo6SW5saW5lQ2FjaGUpOwotICAg
IHBhdGNoQnVmZmVyLmxpbmsoc2xvd0Nhc2VzLCBieVZhbEluZm8tPnNsb3dQYXRoVGFyZ2V0KTsK
LSAgICBwYXRjaEJ1ZmZlci5saW5rKGRvbmVDYXNlcywgYnlWYWxJbmZvLT5kb25lVGFyZ2V0KTsK
LSAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpCi0gICAgICAgIHBhdGNoQnVmZmVy
LmxpbmsobV9leGNlcHRpb25DaGVja3MsIGJ5VmFsSW5mby0+ZXhjZXB0aW9uSGFuZGxlcik7Ci0K
LSAgICBmb3IgKGNvbnN0IGF1dG8mIGNhbGxTaXRlIDogbV9uZWFyQ2FsbHMpIHsKLSAgICAgICAg
aWYgKGNhbGxTaXRlLmNhbGxlZSkKLSAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoY2FsbFNp
dGUuZnJvbSwgY2FsbFNpdGUuY2FsbGVlKTsKLSAgICB9Ci0gICAgZm9yIChjb25zdCBhdXRvJiBj
YWxsU2l0ZSA6IG1fZmFyQ2FsbHMpIHsKLSAgICAgICAgaWYgKGNhbGxTaXRlLmNhbGxlZSkKLSAg
ICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoY2FsbFNpdGUuZnJvbSwgY2FsbFNpdGUuY2FsbGVl
KTsKLSAgICB9Ci0gICAgZ2VuLmZpbmFsaXplKHBhdGNoQnVmZmVyLCBwYXRjaEJ1ZmZlcik7Ci0K
LSAgICBieVZhbEluZm8tPnN0dWJSb3V0aW5lID0gRklOQUxJWkVfQ09ERV9GT1JfU1RVQigKLSAg
ICAgICAgbV9jb2RlQmxvY2ssIHBhdGNoQnVmZmVyLCBKSVRTdHViUm91dGluZVB0clRhZywKLSAg
ICAgICAgIkJhc2VsaW5lIHB1dF9wcml2YXRlX25hbWUgd2l0aCBjYWNoZWQgcHJvcGVydHkgbmFt
ZSAnJXMnIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCBwcm9wZXJ0eU5hbWUudWlkKCkt
PnV0ZjgoKS5kYXRhKCksIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRk
cmVzcy51bnRhZ2dlZFZhbHVlKCkpOwotICAgIGJ5VmFsSW5mby0+c3R1YkluZm8gPSBnZW4uc3R1
YkluZm8oKTsKLQotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVK
SVQpKSB7Ci0gICAgICAgIGJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJnZXQgPSBDb2RlTG9j
YXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+
Y29kZSgpLmNvZGUoKSk7Ci0gICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3Bl
cmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wLCBDb2RlTG9j
YXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+
Y29kZSgpLmNvZGUoKSkpOwotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29k
ZUxvY2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
UmV0dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRp
b25QdHJUYWc+KG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYykpOwotICAgIH0KLX0KLQog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXgg
OGJhMTBlNDNlYTZlNTU4YTU3YmZmY2ViYTkzZTRmZGMwOWViMjg3Ny4uZjJjMTEyZTY0YjE5YjFj
MmU2NmYxMjI4ZDRhYjY3NGU1ZWJjZGU4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0zNDAsNDQgKzM0MCw0NSBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5
dGVjb2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5t
X3Byb3BlcnR5OwotICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9jb2RlQmxvY2stPmFkZEJ5
VmFsSW5mbyhtX2J5dGVjb2RlSW5kZXgpOworICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5
dGVjb2RlLm1fdmFsdWU7CiAKICAgICBlbWl0TG9hZDIoYmFzZSwgcmVnVDEsIHJlZ1QwLCBwcm9w
ZXJ0eSwgcmVnVDMsIHJlZ1QyKTsKKyAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDUsIHJlZ1Q0KTsK
IAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7Ci0gICAgUGF0
Y2hhYmxlSnVtcCBmYXN0UGF0aEptcCA9IHBhdGNoYWJsZUp1bXAoKTsKLSAgICBhZGRTbG93Q2Fz
ZShmYXN0UGF0aEptcCk7CiAKLSAgICBMYWJlbCBkb25lID0gbGFiZWwoKTsKLSAgICAKLSAgICBt
X2J5VmFsQ29tcGlsYXRpb25JbmZvLmFwcGVuZChCeVZhbENvbXBpbGF0aW9uSW5mbyhieVZhbElu
Zm8sIG1fYnl0ZWNvZGVJbmRleCwgZmFzdFBhdGhKbXAsIGRvbmUsIGRvbmUpKTsKKyAgICBKSVRQ
dXRCeVZhbEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNl
bGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVJbmRleCksIEFjY2Vzc1R5cGU6OlB1dFByaXZhdGVOYW1lLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdU
MCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFsdWVSZWdzKHJlZ1Q1LCByZWdUNCks
IEludmFsaWRHUFJSZWcsIEludmFsaWRHUFJSZWcpOworICAgIGdlbi5zdHViSW5mbygpLT5wcm9w
ZXJ0eUlzU3ltYm9sID0gdHJ1ZTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Cisg
ICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBtX3B1dEJ5VmFscy5hcHBl
bmQoZ2VuKTsKKworICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQgd3Jp
dGUtYmFycmllciBpZiBhIGJhc2UgaXMgY2VsbC4KKyAgICAvLyBGSVhNRTogVXNlIFVuY29uZGl0
aW9uYWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNvZGUg
c2l6ZS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5
Mzk1CisgICAgZW1pdFdyaXRlQmFycmllcihiYXNlLCBTaG91bGRGaWx0ZXJCYXNlKTsKIH0KIAog
dm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFBy
aXZhdGVOYW1lPigpOwotICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNl
OwotICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7Ci0g
ICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKLQotICAgIEJ5VmFs
SW5mbyogYnlWYWxJbmZvID0gbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rp
b25JbmRleF0uYnlWYWxJbmZvOwogICAgIFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCA9IGJ5
dGVjb2RlLm1fcHV0S2luZDsKIAorICAgIEpJVFB1dEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX3B1
dEJ5VmFsc1ttX3B1dEJ5VmFsSW5kZXgrK107CisKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIp
OwotICAgIExhYmVsIHNsb3dQYXRoID0gbGFiZWwoKTsKKworICAgIExhYmVsIGNvbGRQYXRoQmVn
aW4gPSBsYWJlbCgpOwogCiAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MocmVnVDEsIHJlZ1QwKTsK
ICAgICBKU1ZhbHVlUmVncyBwcm9wZXJ0eVJlZ3MocmVnVDMsIHJlZ1QyKTsKICAgICBKU1ZhbHVl
UmVncyB2YWx1ZVJlZ3MocmVnVDUsIHJlZ1Q0KTsKIAotICAgIGVtaXRMb2FkKGJhc2UsIGJhc2VS
ZWdzLnRhZ0dQUigpLCBiYXNlUmVncy5wYXlsb2FkR1BSKCkpOwotICAgIGVtaXRMb2FkKHByb3Bl
cnR5LCBwcm9wZXJ0eVJlZ3MudGFnR1BSKCksIHByb3BlcnR5UmVncy5wYXlsb2FkR1BSKCkpOwot
ICAgIGVtaXRMb2FkKHZhbHVlLCB2YWx1ZVJlZ3MudGFnR1BSKCksIHZhbHVlUmVncy5wYXlsb2Fk
R1BSKCkpOwotICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0UHJpdmF0
ZU5hbWVPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkp
LCBiYXNlUmVncywgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MsIGJ5VmFsSW5mbywgVHJ1c3RlZElt
bTMyKHB1dEtpbmQudmFsdWUoKSkpOworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpLCBiYXNlUmVncywgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MsIGdlbi5z
dHViSW5mbygpLCBUcnVzdGVkSW1tMzIocHV0S2luZC52YWx1ZSgpKSk7CiAKLSAgICBtX2J5VmFs
Q29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9
IHNsb3dQYXRoOwotICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9u
SW5kZXhdLnJldHVybkFkZHJlc3MgPSBjYWxsOwotICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4
Kys7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0K
IAogdm9pZCBKSVQ6OmVtaXRfb3Bfc2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmlu
ZGV4IGU2M2M5OWJlNmFiZjdlYjc4OWRjYTZhZjM5ZjUwOTAyZmFkMzg0N2QuLjM3NDY5ZjI1ODgy
OTQ4OWFlZjcyN2U1ODZmMDI2YWEyOTIxNjkyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmNwcApAQCAtNjA2LDYgKzYwNiw4IEBAIHN0YXRpYyBGdW5jdGlvblB0cjxDRnVuY3Rp
b25QdHJUYWc+IGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5RnVuY3Rpb24oY29uc3QgUHV0UHJvCiAg
ICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgUHV0QnlLaW5kOjpQcml2
YXRlTmFtZToKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYzsK
ICAgICB9CiAgICAgLy8gTWFrZSB3aW4gcG9ydCBjb21waWxlciBoYXBweQogICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC02NDksNiArNjUxLDggQEAgc3RhdGljIEZ1bmN0aW9u
UHRyPENGdW5jdGlvblB0clRhZz4gYXBwcm9wcmlhdGVPcHRpbWl6aW5nUHV0QnlGdW5jdGlvbihj
b25zdCBQdXQKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBQdXRC
eUtpbmQ6OlByaXZhdGVOYW1lOgorICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0UHJpdmF0ZU5h
bWVPcHRpbWl6ZTsKICAgICB9CiAgICAgLy8gTWFrZSB3aW4gcG9ydCBjb21waWxlciBoYXBweQog
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xOTI4LDYgKzE5MzIsMTUgQEAg
dm9pZCByZXNldFB1dEJ5KENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8sIFB1dEJ5S2luZCBraW4KICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9
CisgICAgY2FzZSBQdXRCeUtpbmQ6OlByaXZhdGVOYW1lOiB7CisjaWYgQVNTRVJUX0VOQUJMRUQK
KyAgICAgICAgdXNpbmcgRnVuY3Rpb25UeXBlID0gZGVjbHR5cGUoJm9wZXJhdGlvblB1dFByaXZh
dGVOYW1lR2VuZXJpYyk7CisgICAgICAgIEZ1bmN0aW9uVHlwZSB1bm9wdGltaXplZEZ1bmN0aW9u
ID0gcmVpbnRlcnByZXRfY2FzdDxGdW5jdGlvblR5cGU+KHJlYWRQdXRJQ0NhbGxUYXJnZXQoY29k
ZUJsb2NrLCBzdHViSW5mbykuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgICAgIEFTU0VSVCh1
bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYyB8fCB1
bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUpOwor
I2VuZGlmCisgICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0UHJpdmF0ZU5h
bWVPcHRpbWl6ZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIH0KIAogICAgIHJlcGF0Y2hT
bG93UGF0aENhbGwoY29kZUJsb2NrLCBzdHViSW5mbywgb3B0aW1pemVkRnVuY3Rpb24pOwpAQCAt
MTkzNiw2ICsxOTQ5LDcgQEAgdm9pZCByZXNldFB1dEJ5KENvZGVCbG9jayogY29kZUJsb2NrLCBT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFB1dEJ5S2luZCBraW4KICAgICAgICAgSW5saW5l
QWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJbkFjY2Vzcyhjb2RlQmxvY2ssIHN0dWJJbmZvKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBQdXRCeUtpbmQ6OkJ5VmFsOgorICAgIGNhc2UgUHV0QnlL
aW5kOjpQcml2YXRlTmFtZToKICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXNldFN0dWJBc0p1bXBJ
bkFjY2Vzc05vdFVzaW5nSW5saW5lQWNjZXNzKGNvZGVCbG9jaywgc3R1YkluZm8pOwogICAgICAg
ICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
cGF0Y2guaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCmluZGV4IGVjZTM3
N2VlMTBhMmVmODRhMjNkOWVjMmRkNDhjZjY4ZDc5YzdkZTkuLjg0ZmIzYWExYWQ2YTlkOWQyYzYx
ZDM0YTc0MTc5YmZkNGMxN2RhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVwYXRjaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCkBA
IC00Niw2ICs0Niw3IEBAIGVudW0gY2xhc3MgR2V0QnlLaW5kIHsKIGVudW0gY2xhc3MgUHV0QnlL
aW5kIHsKICAgICBCeUlkLAogICAgIEJ5VmFsLAorICAgIFByaXZhdGVOYW1lLAogfTsKIAogZW51
bSBjbGFzcyBEZWxCeUtpbmQgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436494</attachid>
            <date>2021-08-26 04:17:30 -0700</date>
            <delta_ts>2021-08-26 11:26:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229544-20210826041729.patch</filename>
            <type>text/plain</type>
            <size>70756</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MGFlNGU2MmViNzc4ZjA5NzExNTE0OTZkNzE1MWI3MTFjMmUzZDE4Li43N2ExZGYyYWE1ZTEwOWEx
NjllYTA2MzUzOWIxNzNhNGM3NzRhMDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAyMS0wOC0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIG9wX3B1dF9wcml2YXRlX25hbWUgc2hvdWxkIHVzZSBtb2Rlcm4g
SUMgYW5kIHJlbW92ZSBCeVZhbEluZm8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyOTU0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9CeVZhbEluZm8u
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5VmFsSW5mby5oOiBSZW1vdmVkLgor
ICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6Z2V0SUNTdGF0dXNNYXApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnN0cm9uZ2x5Vmlz
aXRTdHJvbmdSZWZlcmVuY2VzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5kQnlWYWxJ
bmZvKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRCeVZhbEluZm8pOiBE
ZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVj
b2RlL0lDU3RhdHVzTWFwLmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1l
KToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dFByaXZhdGVOYW1lKToKKyAgICAgICAgKiBq
aXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6
CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVFeGNlcHRpb25IYW5kbGVycyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAo
SlNDOjpCeVZhbENvbXBpbGF0aW9uSW5mbzo6QnlWYWxDb21waWxhdGlvbkluZm8pOiBEZWxldGVk
LgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6cHV0UHJp
dmF0ZU5hbWVPcHRpbWl6ZSk6CisgICAgICAgIChKU0M6OnB1dFByaXZhdGVOYW1lKToKKyAgICAg
ICAgKEpTQzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBqaXQvSklUT3Bl
cmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93
X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6SklUOjplbWl0QnlWYWxJZGVudGlmaWVyQ2hlY2spOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQpOiBEZWxl
dGVkLgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNw
cDoKKyAgICAgICAgKEpTQzo6YXBwcm9wcmlhdGVHZW5lcmljUHV0QnlGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OmFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5RnVuY3Rpb24pOgorICAgICAgICAo
SlNDOjpyZXNldFB1dEJ5KToKKwogMjAyMS0wOC0yNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFBvbHltb3JwaGljIFB1dEJ5VmFsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMyM2Q4YTQwZTFmNmUyM2ZjZTI3ZWQ3YzA4ZGI1MzI0
NzNiMjZhNTkuLmE2MDE5NmUyYzY3MDIzYzgxMGQ2MmYyNTA5NjgzYjgxM2YxZmYwNjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NDQsNyArNDQ0LDYgQEAKIAkJMEY3REYxM0Mx
RTI5NzExMzAwOTU5NTFCIC8qIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdERjEzQTFFMjk3
MTBFMDA5NTk1MUIgLyogSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjdERjE0NjFFMkJF
RjZBMDA5NTk1MUIgLyogQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdERjE0NTFFMkJFRjY4MDA5NTk1MUIgLyog
QmxvY2tEaXJlY3RvcnlJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEY3Rjk4OEMxRDk1OTZDODAwRjRGMTJFIC8qIERGR1N0b3JlQmFy
cmllckNsdXN0ZXJpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY3Rjk4OEExRDk1OTZDMzAwRjRGMTJFIC8qIERGR1N0b3JlQmFycmllckNs
dXN0ZXJpbmdQaGFzZS5oICovOyB9OwotCQkwRjgwMjNFQTE2MTM4MzJCMDBBMEJBNDUgLyogQnlW
YWxJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi87IH07CiAJCTBGODMzNUI4
MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNTE2MzlDMUUzMDAxNDQz
QjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGODM2NEI3MTY0QjBDMTEwMDUzMzI5QSAvKiBERkdC
cmFuY2hEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24uaCAq
LzsgfTsKIAkJMEY4NkEyNkYxRDZGN0IzMzAwQ0IwQzkyIC8qIEdDVHlwZU1hcC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4NkEyNkUxRDZGN0IzMTAw
Q0IwQzkyIC8qIEdDVHlwZU1hcC5oICovOyB9OwpAQCAtMjgyOCw3ICsyODI3LDYgQEAKIAkJMEY3
REYxNDUxRTJCRUY2ODAwOTU5NTFCIC8qIEJsb2NrRGlyZWN0b3J5SW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9ja0RpcmVjdG9yeUlubGluZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3Rjk4ODkxRDk1OTZDMzAwRjRGMTJFIC8qIERGR1N0
b3JlQmFycmllckNsdXN0ZXJpbmdQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBERkdTdG9yZUJhcnJpZXJDbHVzdGVyaW5nUGhhc2UuY3BwOyBwYXRoID0gZGZn
L0RGR1N0b3JlQmFycmllckNsdXN0ZXJpbmdQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGN0Y5ODhBMUQ5NTk2QzMwMEY0RjEyRSAvKiBERkdTdG9yZUJhcnJpZXJDbHVz
dGVyaW5nUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU3RvcmVC
YXJyaWVyQ2x1c3RlcmluZ1BoYXNlLmg7IHBhdGggPSBkZmcvREZHU3RvcmVCYXJyaWVyQ2x1c3Rl
cmluZ1BoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGODAyM0U5MTYxMzgz
MjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQnlWYWxJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMzNUI0MTYz
OUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
cnJheUFsbG9jYXRpb25Qcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
ODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnJhbmNoRGlyZWN0aW9uLmg7IHBhdGggPSBkZmcv
REZHQnJhbmNoRGlyZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MTM1
LDcgKzUxMzMsNiBAQAogCQlFMzU1RDM4RTIyNDQ2ODZDMDA4RjFBRDYgLyogR2xvYmFsRXhlY3V0
YWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHbG9iYWxFeGVjdXRhYmxlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1Njk4NzEyMjg0MTE4MzAwOENEQ0NCIC8qIFBhY2tl
ZENlbGxQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFja2VkQ2VsbFB0ci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzVBMEI5QzIyMEFEODdBMDBBQzQ0NzQgLyogRXhlY3V0YWJsZUJh
c2VJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4ZWN1dGFibGVC
YXNlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMzVCQTJDMDI0MUEw
RThDMDBCNjcwODYgLyogQnlWYWxJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ5VmFsSW5m
by5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUNBMTRGMURCQzNBNTYwMEY4
MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRE9NSklUQWJzdHJhY3RIZWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTM1Q0ExNTAxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRBYnN0cmFjdEhlYXAuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1Q0ExNTExREJDM0E1NjAwRjgzNTE2IC8q
IERPTUpJVEhlYXBSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBET01KSVRIZWFwUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODU1
NCw4ICs4NTUxLDYgQEAKIAkJCQlFM0QyNjQyQTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVS
ZXdyaXRlci5oICovLAogCQkJCTUzRDM1NDk4MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZVVz
ZURlZi5jcHAgKi8sCiAJCQkJMEY4ODVFMTAxODQ5QTNCRTAwRjFFM0ZBIC8qIEJ5dGVjb2RlVXNl
RGVmLmggKi8sCi0JCQkJRTM1QkEyQzAyNDFBMEU4QzAwQjY3MDg2IC8qIEJ5VmFsSW5mby5jcHAg
Ki8sCi0JCQkJMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oICovLAogCQkJ
CTBGNjRCMjc3MUE3OTU3QjIwMDZFNEU2NiAvKiBDYWxsRWRnZS5jcHAgKi8sCiAJCQkJMEY2NEIy
NzgxQTc5NTdCMjAwNkU0RTY2IC8qIENhbGxFZGdlLmggKi8sCiAJCQkJMEYwQjgzQUUxNEJDRjcx
NDAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5jcHAgKi8sCkBAIC05NDczLDcgKzk0NjgsNiBAQAog
CQkJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZVJld3JpdGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk2NTE0RjIxOTE4QjNFMTY3MDA5OEZGOEIgLyogQnl0ZWNvZGVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjg4NUUxMTE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VE
ZWYuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGODAyM0VBMTYxMzgzMkIwMEEwQkE0NSAvKiBCeVZh
bEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUZFOERFNTRCMjNBQzFEQUQwMDVDOTE0MiAvKiBD
YWNoZWFibGVJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRThERTU0RDIzQUMxRTg2
MDA1QzkxNDIgLyogQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTE0NENBMzUwMjIyNDE4MDEwMDgxNzc4OSAvKiBDYWNoZWRCeXRlY29kZS5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggNzA3N2VmOWFlMzExNzZmNjM4
NWViZTM0Y2NiMzFhNTA1YzE5MWVjNS4uNTJiOTNlZThkOGJiYTY2MDY0ZGIyMDE4ZjNmMzE3NzAy
Zjc2YWE5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMTk3LDcgKzE5Nyw2IEBA
IGJ5dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3Bw
CiBieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCiBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9m
aWxlLmNwcAogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAotYnl0ZWNvZGUvQnlWYWxJbmZvLmNw
cAogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAogYnl0ZWNvZGUvQnl0ZWNvZGVEdW1w
ZXIuY3BwCiBieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDA1M2U2NjNlOGMxODZlODBjMzNkNmYyNDRmMTgzZGYzZDllZjNhZTkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQnlWYWxJbmZvLmgiCi0KLSNpbmNsdWRl
ICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotI2lm
IEVOQUJMRShKSVQpCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Ci12b2lkIEJ5VmFsSW5m
bzo6dmlzaXRBZ2dyZWdhdGVJbXBsKFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0gICAgY2FjaGVkSWQu
dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7Ci19Ci0KLURFRklORV9WSVNJVF9BR0dSRUdBVEUoQnlW
YWxJbmZvKTsKLQotI2VuZGlmIC8vIEVOQUJMRShKSVQpCi0KLX0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBiMjI2ZmIxNmY1ZGI3NDRmN2ZlNTU2YmVjNzU4ZDdjZWEwNGU0YWEx
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaAorKysgL2Rldi9udWxsCkBAIC0xLDMw
MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVyLmgiCi0j
aW5jbHVkZSAiQ2xhc3NJbmZvLmgiCi0jaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVk
ZSAiSW5kZXhpbmdUeXBlLmgiCi0jaW5jbHVkZSAiSklUU3R1YlJvdXRpbmUuaCIKLSNpbmNsdWRl
ICJTdHJ1Y3R1cmUuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIFN5bWJvbDsKLQotI2lm
IEVOQUJMRShKSVQpCi0KLWNsYXNzIEFycmF5UHJvZmlsZTsKLWNsYXNzIFN0cnVjdHVyZVN0dWJJ
bmZvOwotCi1lbnVtIEpJVEFycmF5TW9kZSA6IHVpbnQ4X3QgewotICAgIEpJVEludDMyLAotICAg
IEpJVERvdWJsZSwKLSAgICBKSVRDb250aWd1b3VzLAotICAgIEpJVEFycmF5U3RvcmFnZSwKLSAg
ICBKSVREaXJlY3RBcmd1bWVudHMsCi0gICAgSklUU2NvcGVkQXJndW1lbnRzLAotICAgIEpJVElu
dDhBcnJheSwKLSAgICBKSVRJbnQxNkFycmF5LAotICAgIEpJVEludDMyQXJyYXksCi0gICAgSklU
VWludDhBcnJheSwKLSAgICBKSVRVaW50OENsYW1wZWRBcnJheSwKLSAgICBKSVRVaW50MTZBcnJh
eSwKLSAgICBKSVRVaW50MzJBcnJheSwKLSAgICBKSVRGbG9hdDMyQXJyYXksCi0gICAgSklURmxv
YXQ2NEFycmF5LAotICAgIEpJVEJpZ0ludDY0QXJyYXksCi0gICAgSklUQmlnVWludDY0QXJyYXks
Ci19OwotCi1pbmxpbmUgYm9vbCBpc09wdGltaXphYmxlSW5kZXhpbmdUeXBlKEluZGV4aW5nVHlw
ZSBpbmRleGluZ1R5cGUpCi17Ci0gICAgc3dpdGNoIChpbmRleGluZ1R5cGUpIHsKLSAgICBjYXNl
IEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoKLSAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdf
VFlQRVM6Ci0gICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKLSAgICBjYXNl
IEFSUkFZX1dJVEhfQVJSQVlfU1RPUkFHRV9JTkRFWElOR19UWVBFUzoKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQot
aW5saW5lIGJvb2wgaGFzT3B0aW1pemFibGVJbmRleGluZ0ZvckpTVHlwZShKU1R5cGUgdHlwZSkK
LXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIERpcmVjdEFyZ3VtZW50c1R5cGU6Ci0g
ICAgY2FzZSBTY29wZWRBcmd1bWVudHNUeXBlOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBk
ZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCi1pbmxpbmUgYm9vbCBo
YXNPcHRpbWl6YWJsZUluZGV4aW5nRm9yQ2xhc3NJbmZvKGNvbnN0IENsYXNzSW5mbyogY2xhc3NJ
bmZvKQotewotICAgIHJldHVybiBpc1R5cGVkVmlldyhjbGFzc0luZm8tPnR5cGVkQXJyYXlTdG9y
YWdlVHlwZSk7Ci19Ci0KLWlubGluZSBib29sIGhhc09wdGltaXphYmxlSW5kZXhpbmcoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCi17Ci0gICAgcmV0dXJuIGlzT3B0aW1pemFibGVJbmRleGluZ1R5cGUo
c3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkKLSAgICAgICAgfHwgaGFzT3B0aW1pemFibGVJbmRl
eGluZ0ZvckpTVHlwZShzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpKQotICAgICAgICB8fCBo
YXNPcHRpbWl6YWJsZUluZGV4aW5nRm9yQ2xhc3NJbmZvKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkp
OwotfQotCi1pbmxpbmUgSklUQXJyYXlNb2RlIGppdEFycmF5TW9kZUZvckluZGV4aW5nVHlwZShJ
bmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKQotewotICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKSB7
Ci0gICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIHJldHVybiBKSVRJ
bnQzMjsKLSAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIHJldHVy
biBKSVREb3VibGU7Ci0gICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKLSAg
ICAgICAgcmV0dXJuIEpJVENvbnRpZ3VvdXM7Ci0gICAgY2FzZSBBUlJBWV9XSVRIX0FSUkFZX1NU
T1JBR0VfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIHJldHVybiBKSVRBcnJheVN0b3JhZ2U7Ci0g
ICAgZGVmYXVsdDoKLSAgICAgICAgQ1JBU0goKTsKLSAgICAgICAgcmV0dXJuIEpJVENvbnRpZ3Vv
dXM7Ci0gICAgfQotfQotCi1pbmxpbmUgSklUQXJyYXlNb2RlIGppdEFycmF5TW9kZUZvckpTVHlw
ZShKU1R5cGUgdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIERpcmVjdEFy
Z3VtZW50c1R5cGU6Ci0gICAgICAgIHJldHVybiBKSVREaXJlY3RBcmd1bWVudHM7Ci0gICAgY2Fz
ZSBTY29wZWRBcmd1bWVudHNUeXBlOgotICAgICAgICByZXR1cm4gSklUU2NvcGVkQXJndW1lbnRz
OwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIHJldHVybiBKSVRDb250aWd1b3VzOwotICAgIH0KLX0KLQotaW5saW5lIEpJVEFycmF5
TW9kZSBqaXRBcnJheU1vZGVGb3JDbGFzc0luZm8oY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8p
Ci17Ci0gICAgc3dpdGNoIChjbGFzc0luZm8tPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkgewotICAg
IGNhc2UgVHlwZUludDg6Ci0gICAgICAgIHJldHVybiBKSVRJbnQ4QXJyYXk7Ci0gICAgY2FzZSBU
eXBlSW50MTY6Ci0gICAgICAgIHJldHVybiBKSVRJbnQxNkFycmF5OwotICAgIGNhc2UgVHlwZUlu
dDMyOgotICAgICAgICByZXR1cm4gSklUSW50MzJBcnJheTsKLSAgICBjYXNlIFR5cGVVaW50ODoK
LSAgICAgICAgcmV0dXJuIEpJVFVpbnQ4QXJyYXk7Ci0gICAgY2FzZSBUeXBlVWludDhDbGFtcGVk
OgotICAgICAgICByZXR1cm4gSklUVWludDhDbGFtcGVkQXJyYXk7Ci0gICAgY2FzZSBUeXBlVWlu
dDE2OgotICAgICAgICByZXR1cm4gSklUVWludDE2QXJyYXk7Ci0gICAgY2FzZSBUeXBlVWludDMy
OgotICAgICAgICByZXR1cm4gSklUVWludDMyQXJyYXk7Ci0gICAgY2FzZSBUeXBlRmxvYXQzMjoK
LSAgICAgICAgcmV0dXJuIEpJVEZsb2F0MzJBcnJheTsKLSAgICBjYXNlIFR5cGVGbG9hdDY0Ogot
ICAgICAgICByZXR1cm4gSklURmxvYXQ2NEFycmF5OwotICAgIGNhc2UgVHlwZUJpZ0ludDY0Ogot
ICAgICAgICByZXR1cm4gSklUQmlnSW50NjRBcnJheTsKLSAgICBjYXNlIFR5cGVCaWdVaW50NjQ6
Ci0gICAgICAgIHJldHVybiBKSVRCaWdVaW50NjRBcnJheTsKLSAgICBkZWZhdWx0OgotICAgICAg
ICBDUkFTSCgpOwotICAgICAgICByZXR1cm4gSklUQ29udGlndW91czsKLSAgICB9Ci19Ci0KLWlu
bGluZSBib29sIGppdEFycmF5TW9kZVBlcm1pdHNQdXQoSklUQXJyYXlNb2RlIG1vZGUpCi17Ci0g
ICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBKSVREaXJlY3RBcmd1bWVudHM6Ci0gICAgY2Fz
ZSBKSVRTY29wZWRBcmd1bWVudHM6Ci0gICAgLy8gRklYTUU6IE9wdGltaXplIEJpZ0ludDY0QXJy
YXkgLyBCaWdVaW50NjRBcnJheSBpbiBJQwotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjExODMKLSAgICBjYXNlIEpJVEJpZ0ludDY0QXJyYXk6Ci0gICAg
Y2FzZSBKSVRCaWdVaW50NjRBcnJheToKLSAgICAgICAgLy8gV2UgY291bGQgc3VwcG9ydCBwdXRf
YnlfdmFsIG9uIHRoZXNlIGF0IHNvbWUgcG9pbnQsIGJ1dCBpdCdzIGp1c3Qgbm90IHRoYXQgcHJv
Zml0YWJsZQotICAgICAgICAvLyBhdCB0aGUgbW9tZW50LgotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotfQotCi1pbmxpbmUg
Ym9vbCBqaXRBcnJheU1vZGVQZXJtaXRzUHV0RGlyZWN0KEpJVEFycmF5TW9kZSBtb2RlKQotewot
ICAgIC8vIFdlIGRvbid0IGFsbG93IHR5cGVkIGFycmF5IHB1dERpcmVjdCBoZXJlIHNpbmNlIHB1
dERpcmVjdCBoYXMKLSAgICAvLyBkZWZpbmVPd25Qcm9wZXJ0eSh7Y29uZmlndXJhYmxlOiB0cnVl
LCB3cml0YWJsZTp0cnVlLCBlbnVtZXJhYmxlOnRydWV9KQotICAgIC8vIHNlbWFudGljcy4gVHlw
ZWQgYXJyYXkgaW5kZXhlZCBwcm9wZXJ0aWVzIGFyZSBub24tY29uZmlndXJhYmxlIGJ5Ci0gICAg
Ly8gZGVmYXVsdCwgc28gd2UgY2FuJ3Qgc2ltcGx5IHN0b3JlIHRvIGEgdHlwZWQgYXJyYXkgZm9y
IHB1dERpcmVjdC4KLSAgICAvLwotICAgIC8vIFdlIGNvdWxkIG1vZGVsIHB1dERpcmVjdCBvbiBT
Y29wZWRBcmd1bWVudHMgYW5kIERpcmVjdEFyZ3VtZW50cywgYnV0IHdlCi0gICAgLy8gaGF2ZW4n
dCBmb3VuZCBhbnkgcGVyZm9ybWFuY2UgaW5jZW50aXZlIHRvIGRvIGl0IHlldC4KLSAgICBzd2l0
Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEpJVEludDMyOgotICAgIGNhc2UgSklURG91YmxlOgotICAg
IGNhc2UgSklUQ29udGlndW91czoKLSAgICBjYXNlIEpJVEFycmF5U3RvcmFnZToKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LX0KLQotaW5saW5lIFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlRm9ySklUQXJyYXlNb2Rl
KEpJVEFycmF5TW9kZSBtb2RlKQotewotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgSklU
SW50OEFycmF5OgotICAgICAgICByZXR1cm4gVHlwZUludDg7Ci0gICAgY2FzZSBKSVRJbnQxNkFy
cmF5OgotICAgICAgICByZXR1cm4gVHlwZUludDE2OwotICAgIGNhc2UgSklUSW50MzJBcnJheToK
LSAgICAgICAgcmV0dXJuIFR5cGVJbnQzMjsKLSAgICBjYXNlIEpJVFVpbnQ4QXJyYXk6Ci0gICAg
ICAgIHJldHVybiBUeXBlVWludDg7Ci0gICAgY2FzZSBKSVRVaW50OENsYW1wZWRBcnJheToKLSAg
ICAgICAgcmV0dXJuIFR5cGVVaW50OENsYW1wZWQ7Ci0gICAgY2FzZSBKSVRVaW50MTZBcnJheToK
LSAgICAgICAgcmV0dXJuIFR5cGVVaW50MTY7Ci0gICAgY2FzZSBKSVRVaW50MzJBcnJheToKLSAg
ICAgICAgcmV0dXJuIFR5cGVVaW50MzI7Ci0gICAgY2FzZSBKSVRGbG9hdDMyQXJyYXk6Ci0gICAg
ICAgIHJldHVybiBUeXBlRmxvYXQzMjsKLSAgICBjYXNlIEpJVEZsb2F0NjRBcnJheToKLSAgICAg
ICAgcmV0dXJuIFR5cGVGbG9hdDY0OwotICAgIGNhc2UgSklUQmlnSW50NjRBcnJheToKLSAgICAg
ICAgcmV0dXJuIFR5cGVCaWdJbnQ2NDsKLSAgICBjYXNlIEpJVEJpZ1VpbnQ2NEFycmF5OgotICAg
ICAgICByZXR1cm4gVHlwZUJpZ1VpbnQ2NDsKLSAgICBkZWZhdWx0OgotICAgICAgICBDUkFTSCgp
OwotICAgICAgICByZXR1cm4gTm90VHlwZWRBcnJheTsKLSAgICB9Ci19Ci0KLWlubGluZSBKSVRB
cnJheU1vZGUgaml0QXJyYXlNb2RlRm9yU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQot
ewotICAgIGlmIChpc09wdGltaXphYmxlSW5kZXhpbmdUeXBlKHN0cnVjdHVyZS0+aW5kZXhpbmdU
eXBlKCkpKQotICAgICAgICByZXR1cm4gaml0QXJyYXlNb2RlRm9ySW5kZXhpbmdUeXBlKHN0cnVj
dHVyZS0+aW5kZXhpbmdUeXBlKCkpOwotICAgIAotICAgIGlmIChoYXNPcHRpbWl6YWJsZUluZGV4
aW5nRm9ySlNUeXBlKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkpKQotICAgICAgICByZXR1
cm4gaml0QXJyYXlNb2RlRm9ySlNUeXBlKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkpOwot
ICAgIAotICAgIEFTU0VSVChoYXNPcHRpbWl6YWJsZUluZGV4aW5nRm9yQ2xhc3NJbmZvKHN0cnVj
dHVyZS0+Y2xhc3NJbmZvKCkpKTsKLSAgICByZXR1cm4gaml0QXJyYXlNb2RlRm9yQ2xhc3NJbmZv
KHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkpOwotfQotCi1zdHJ1Y3QgQnlWYWxJbmZvIHsKLSAgICBC
eVZhbEluZm8oQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQotICAgICAgICA6IGJ5dGVjb2Rl
SW5kZXgoYnl0ZWNvZGVJbmRleCkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRVcChDb2Rl
TG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBleGNlcHRpb25IYW5kbGVyLCBK
SVRBcnJheU1vZGUgYXJyYXlNb2RlLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSwgQ29kZUxv
Y2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gZG9uZVRhcmdldCwgQ29kZUxvY2F0aW9uTGFi
ZWw8SlNJbnRlcm5hbFB0clRhZz4gYmFkVHlwZU5leHRIb3RQYXRoVGFyZ2V0LCBDb2RlTG9jYXRp
b25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBzbG93UGF0aFRhcmdldCkKLSAgICB7Ci0gICAgICAg
IHRoaXMtPmV4Y2VwdGlvbkhhbmRsZXIgPSBleGNlcHRpb25IYW5kbGVyOwotICAgICAgICB0aGlz
LT5kb25lVGFyZ2V0ID0gZG9uZVRhcmdldDsKLSAgICAgICAgdGhpcy0+YmFkVHlwZU5leHRIb3RQ
YXRoVGFyZ2V0ID0gYmFkVHlwZU5leHRIb3RQYXRoVGFyZ2V0OwotICAgICAgICB0aGlzLT5zbG93
UGF0aFRhcmdldCA9IHNsb3dQYXRoVGFyZ2V0OwotICAgICAgICB0aGlzLT5hcnJheVByb2ZpbGUg
PSBhcnJheVByb2ZpbGU7Ci0gICAgICAgIHRoaXMtPnNsb3dQYXRoQ291bnQgPSAwOwotICAgICAg
ICB0aGlzLT5zdHViSW5mbyA9IG51bGxwdHI7Ci0gICAgICAgIHRoaXMtPmFycmF5TW9kZSA9IGFy
cmF5TW9kZTsKLSAgICAgICAgdGhpcy0+dG9va1Nsb3dQYXRoID0gZmFsc2U7Ci0gICAgICAgIHRo
aXMtPnNlZW4gPSBmYWxzZTsKLSAgICB9Ci0KLSAgICBERUNMQVJFX1ZJU0lUX0FHR1JFR0FURTsK
LQotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkgeyByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKEJ5VmFsSW5mbywgbV9zbG93T3BlcmF0aW9uKTsgfQotICAgIHN0YXRp
YyBwdHJkaWZmX3Qgb2Zmc2V0T2ZOb3RJbmRleEp1bXBUYXJnZXQoKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoQnlWYWxJbmZvLCBtX25vdEluZGV4SnVtcFRhcmdldCk7IH0KLSAgICBzdGF0aWMg
cHRyZGlmZl90IG9mZnNldE9mQmFkVHlwZUp1bXBUYXJnZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoQnlWYWxJbmZvLCBtX2JhZFR5cGVKdW1wVGFyZ2V0KTsgfQotCi0gICAgRnVuY3Rpb25Q
dHI8T3BlcmF0aW9uUHRyVGFnPiBtX3Nsb3dPcGVyYXRpb247Ci0KLSAgICB1bmlvbiB7Ci0gICAg
ICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBtX25vdEluZGV4SnVt
cFRhcmdldDsKLSAgICAgICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBtX25v
dEluZGV4SnVtcDsKLSAgICB9OwotICAgIHVuaW9uIHsKLSAgICAgICAgQ29kZUxvY2F0aW9uTGFi
ZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IG1fYmFkVHlwZUp1bXBUYXJnZXQ7Ci0gICAgICAgIENv
ZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gbV9iYWRUeXBlSnVtcDsKLSAgICB9Owot
Ci0gICAgQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gZXhjZXB0aW9u
SGFuZGxlcjsKLSAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBkb25lVGFy
Z2V0OwotICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGJhZFR5cGVOZXh0
SG90UGF0aFRhcmdldDsKLSAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBz
bG93UGF0aFRhcmdldDsKLSAgICBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZTsKLSAgICBCeXRl
Y29kZUluZGV4IGJ5dGVjb2RlSW5kZXg7Ci0gICAgdW5zaWduZWQgc2xvd1BhdGhDb3VudDsKLSAg
ICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+IHN0dWJSb3V0aW5lOwotICAgIENhY2hlYWJsZUlkZW50
aWZpZXIgY2FjaGVkSWQ7IC8vIE9uY2Ugd2Ugc2V0IGNhY2hlZElkLCB3ZSBtdXN0IG5vdCBjaGFu
Z2UgdGhlIHZhbHVlLiBKSVQgY29kZSByZWxpZXMgb24gdGhhdCBjb25maWd1cmVkIGNhY2hlZElk
IGlzIG1hcmtlZCBhbmQgcmV0YWluZWQgYnkgQ29kZUJsb2NrIHRocm91Z2ggQnlWYWxJbmZvLgot
ICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbzsKLSAgICBKSVRBcnJheU1vZGUgYXJyYXlN
b2RlOyAvLyBUaGUgYXJyYXkgbW9kZSB0aGF0IHdhcyBiYWtlZCBpbnRvIHRoZSBpbmxpbmUgSklU
IGNvZGUuCi0gICAgYm9vbCB0b29rU2xvd1BhdGggOiAxOwotICAgIGJvb2wgc2VlbiA6IDE7Ci19
OwotCi1pbmxpbmUgQnl0ZWNvZGVJbmRleCBnZXRCeVZhbEluZm9CeXRlY29kZUluZGV4KEJ5VmFs
SW5mbyogaW5mbykKLXsKLSAgICByZXR1cm4gaW5mby0+Ynl0ZWNvZGVJbmRleDsKLX0KLQotI2Vu
ZGlmIC8vIEVOQUJMRShKSVQpCi0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBkY2VmYzZhZDZjMmRhMGExNDg5
OGNmY2Y2MTg5YzZlOTRkMjBlNTZlLi5jNzY2YTI2OWU4Y2RlZDRkNzFkODY4MmE2N2Q3YzQzYzVm
ZmE5OTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cApAQCAtMzIsNyArMzIsNiBAQAogCiAjaW5jbHVkZSAiQXJpdGhQcm9maWxlLmgiCiAjaW5jbHVk
ZSAiQmFzaWNCbG9ja0xvY2F0aW9uLmgiCi0jaW5jbHVkZSAiQnlWYWxJbmZvLmgiCiAjaW5jbHVk
ZSAiQnl0ZWNvZGVEdW1wZXIuaCIKICNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaCIKQEAg
LTE2MjYsOCArMTYyNSw2IEBAIHZvaWQgQ29kZUJsb2NrOjpnZXRJQ1N0YXR1c01hcChjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImLCBJQ1N0YXR1c01hcCYgcmVzdWx0KQogICAgICAgICAgICAgICAg
IHJlc3VsdC5hZGQoc3R1YkluZm8tPmNvZGVPcmlnaW4sIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52
YWx1ZS5zdHViSW5mbyA9IHN0dWJJbmZvOwogICAgICAgICAgICAgZm9yIChDYWxsTGlua0luZm8q
IGNhbGxMaW5rSW5mbyA6IGppdERhdGEtPm1fY2FsbExpbmtJbmZvcykKICAgICAgICAgICAgICAg
ICByZXN1bHQuYWRkKGNhbGxMaW5rSW5mby0+Y29kZU9yaWdpbigpLCBJQ1N0YXR1cygpKS5pdGVy
YXRvci0+dmFsdWUuY2FsbExpbmtJbmZvID0gY2FsbExpbmtJbmZvOwotICAgICAgICAgICAgZm9y
IChCeVZhbEluZm8qIGJ5VmFsSW5mbyA6IGppdERhdGEtPm1fYnlWYWxJbmZvcykKLSAgICAgICAg
ICAgICAgICByZXN1bHQuYWRkKENvZGVPcmlnaW4oYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4KSwg
SUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLmJ5VmFsSW5mbyA9IGJ5VmFsSW5mbzsKICAgICAg
ICAgfQogI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6
aW5nSklUKGppdFR5cGUoKSkpIHsKQEAgLTE2OTksMjQgKzE2OTYsNiBAQCBTdHJ1Y3R1cmVTdHVi
SW5mbyogQ29kZUJsb2NrOjpmaW5kU3R1YkluZm8oQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1CeVZhbEluZm8qIENvZGVCbG9jazo6ZmluZEJ5VmFsSW5m
byhDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCi17Ci0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihtX2xvY2spOwotICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9qaXREYXRhLmdldCgpKSB7Ci0g
ICAgICAgIGZvciAoQnlWYWxJbmZvKiBieVZhbEluZm8gOiBqaXREYXRhLT5tX2J5VmFsSW5mb3Mp
IHsKLSAgICAgICAgICAgIGlmIChieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXggPT0gY29kZU9yaWdp
bi5ieXRlY29kZUluZGV4KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGJ5VmFsSW5mbzsKLSAg
ICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotQnlWYWxJbmZvKiBDb2Rl
QmxvY2s6OmFkZEJ5VmFsSW5mbyhCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCi17Ci0gICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIHJldHVybiBlbnN1cmVKSVRE
YXRhKGxvY2tlcikubV9ieVZhbEluZm9zLmFkZChieXRlY29kZUluZGV4KTsKLX0KLQogQ2FsbExp
bmtJbmZvKiBDb2RlQmxvY2s6OmFkZENhbGxMaW5rSW5mbyhDb2RlT3JpZ2luIGNvZGVPcmlnaW4p
CiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwpAQCAtMTgyOCw4ICsx
ODA3LDYgQEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcmVuY2VzKGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLAogCiAjaWYgRU5BQkxFKEpJVCkKICAgICBp
ZiAoYXV0byogaml0RGF0YSA9IG1faml0RGF0YS5nZXQoKSkgewotICAgICAgICBmb3IgKEJ5VmFs
SW5mbyogYnlWYWxJbmZvIDogaml0RGF0YS0+bV9ieVZhbEluZm9zKQotICAgICAgICAgICAgYnlW
YWxJbmZvLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKICAgICAgICAgZm9yIChTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykKICAgICAgICAgICAgIHN0
dWJJbmZvLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggZjM4Nzk5MjU2NDI4ZGQ4ZGFiN2UxYmFl
YjBlMjQxMGIzMTIzNjAwZC4uNGY3MGZhOWZmODFiMzNjN2JmMDQ2OTFkYjUyMWY2OTNhYTNmOTRi
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtOTcs
NyArOTcsNiBAQCBjbGFzcyBNZXRhZGF0YVRhYmxlOwogY2xhc3MgUENUb0NvZGVPcmlnaW5NYXA7
CiBjbGFzcyBSZWdpc3RlckF0T2Zmc2V0TGlzdDsKIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOwot
c3RydWN0IEJ5VmFsSW5mbzsKIAogREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJ
RVIoQ29kZUJsb2NrUmFyZURhdGEpOwogCkBAIC0yNzUsNyArMjc0LDYgQEAgY2xhc3MgQ29kZUJs
b2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIEJhZzxKSVRNdWxJQz4gbV9tdWxJQ3M7CiAg
ICAgICAgIEJhZzxKSVROZWdJQz4gbV9uZWdJQ3M7CiAgICAgICAgIEJhZzxKSVRTdWJJQz4gbV9z
dWJJQ3M7Ci0gICAgICAgIEJhZzxCeVZhbEluZm8+IG1fYnlWYWxJbmZvczsKICAgICAgICAgQmFn
PENhbGxMaW5rSW5mbz4gbV9jYWxsTGlua0luZm9zOwogICAgICAgICBTZW50aW5lbExpbmtlZExp
c3Q8Q2FsbExpbmtJbmZvLCBQYWNrZWRSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPj4gbV9p
bmNvbWluZ0NhbGxzOwogICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8UG9seW1vcnBoaWNDYWxs
Tm9kZSwgUGFja2VkUmF3U2VudGluZWxOb2RlPFBvbHltb3JwaGljQ2FsbE5vZGU+PiBtX2luY29t
aW5nUG9seW1vcnBoaWNDYWxsczsKQEAgLTMxNiwxMCArMzE0LDYgQEAgY2xhc3MgQ29kZUJsb2Nr
IDogcHVibGljIEpTQ2VsbCB7CiAKICAgICAvLyBPKG4pIG9wZXJhdGlvbi4gVXNlIGdldElDU3Rh
dHVzTWFwKCkgdW5sZXNzIHlvdSByZWFsbHkgb25seSBpbnRlbmQgdG8gZ2V0IG9uZSBzdHViIGlu
Zm8uCiAgICAgU3RydWN0dXJlU3R1YkluZm8qIGZpbmRTdHViSW5mbyhDb2RlT3JpZ2luKTsKLSAg
ICAvLyBPKG4pIG9wZXJhdGlvbi4gVXNlIGdldElDU3RhdHVzTWFwKCkgdW5sZXNzIHlvdSByZWFs
bHkgb25seSBpbnRlbmQgdG8gZ2V0IG9uZSBieS12YWwtaW5mby4KLSAgICBCeVZhbEluZm8qIGZp
bmRCeVZhbEluZm8oQ29kZU9yaWdpbik7Ci0KLSAgICBCeVZhbEluZm8qIGFkZEJ5VmFsSW5mbyhC
eXRlY29kZUluZGV4KTsKIAogICAgIENhbGxMaW5rSW5mbyogYWRkQ2FsbExpbmtJbmZvKENvZGVP
cmlnaW4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNT
dGF0dXNNYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5o
CmluZGV4IDdhMDU4YzNkMDI1OTZiZjZlYThmZjlhOGE3MmI0ZGMyYTFkMTg5MjMuLmE3NjhhODVk
YzFiZjA5YjI5ZWI0Yjk5NmZlYTc0YmEyMmQzNTAzMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCkBAIC0zOSwxMiArMzksMTAgQEAgY2xhc3MgSW5C
eVN0YXR1czsKIGNsYXNzIFB1dEJ5U3RhdHVzOwogY2xhc3MgRGVsZXRlQnlTdGF0dXM7CiBjbGFz
cyBTdHJ1Y3R1cmVTdHViSW5mbzsKLXN0cnVjdCBCeVZhbEluZm87CiAKIHN0cnVjdCBJQ1N0YXR1
cyB7CiAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvIHsgbnVsbHB0ciB9OwogICAgIENh
bGxMaW5rSW5mbyogY2FsbExpbmtJbmZvIHsgbnVsbHB0ciB9OwotICAgIEJ5VmFsSW5mbyogYnlW
YWxJbmZvIHsgbnVsbHB0ciB9OwogICAgIENhbGxMaW5rU3RhdHVzKiBjYWxsU3RhdHVzIHsgbnVs
bHB0ciB9OwogICAgIEdldEJ5U3RhdHVzKiBnZXRTdGF0dXMgeyBudWxscHRyIH07CiAgICAgSW5C
eVN0YXR1cyogaW5TdGF0dXMgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDJiNjM2NjYxNjFiMTk3ZDBlNThkY2Vl
YWZjMDgzZTU0MTYzZDI5YmMuLjMwMDA5NmY4MDVkNDhkNjAyMThmNGIzYTU4OGVhNmFhYWFlZTI5
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCkBAIC0zOTU0LDcgKzM5NTQsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0
UHJpdmF0ZU5hbWUoTm9kZSogbm9kZSkKICAgICBzcGVjdWxhdGVTeW1ib2wobm9kZS0+Y2hpbGQy
KCksIHByb3BlcnR5R1BSKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBiYXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHlHUFIpLCB2
YWx1ZVJlZ3MsIFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIFRydXN0ZWRJbW0zMihub2RlLT5wcml2
YXRlRmllbGRQdXRLaW5kKCkudmFsdWUoKSkpOworICAgIGF1dG8gb3BlcmF0aW9uID0gbm9kZS0+
cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVmaW5lKCkgPyBvcGVyYXRpb25QdXRCeVZhbERlZmlu
ZVByaXZhdGVGaWVsZEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbFNldFByaXZhdGVGaWVsZEdl
bmVyaWM7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBiYXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHlHUFIpLCB2
YWx1ZVJlZ3MsIFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIFRydXN0ZWRJbW1QdHIobnVsbHB0cikp
OwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA5MjE2
ZTgyNDdjOTVjYWZhMzZiMDEzNjQwYjkyZmE4MTE2NTMxNWMxLi5iODk2NzhlYjUyMWYzZDc2NGRh
ZDFhNGRlNTJjNzQzNjA5NzlkMGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCkBAIC00MjY5LDggKzQyNjksOCBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dTeW1ib2wobV9ub2RlLT5jaGlsZDIo
KSk7CiAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDMoKSk7
CiAKLSAgICAgICAgdm1DYWxsKFZvaWQsIG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYywK
LSAgICAgICAgICAgIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIHByb3BlcnR5LCB2
YWx1ZSwgbV9vdXQuY29uc3RJbnRQdHIoMCksIG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5wcml2
YXRlRmllbGRQdXRLaW5kKCkudmFsdWUoKSkpOworICAgICAgICBhdXRvIG9wZXJhdGlvbiA9IG1f
bm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVmaW5lKCkgPyBvcGVyYXRpb25QdXRCeVZh
bERlZmluZVByaXZhdGVGaWVsZEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbFNldFByaXZhdGVG
aWVsZEdlbmVyaWM7CisgICAgICAgIHZtQ2FsbChWb2lkLCBvcGVyYXRpb24sIHdlYWtQb2ludGVy
KGdsb2JhbE9iamVjdCksIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgbV9vdXQuY29uc3RJbnRQdHIo
MCksIG1fb3V0LmNvbnN0SW50UHRyKDApKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVBdG9t
aWNzUmVhZE1vZGlmeVdyaXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA1MGRl
ODU1YjZhYzkwZWU2ZDNkMWM5NjFlNDQ4NDgyMzk1YTQ2MTZmLi4zYTM3YmVlMjNlZTNlNWJlZTY1
Y2ZlMjcwNzQ5ZWEwZTVhYTZmNjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC01
MTcsNyArNTE3LDYgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICBt
X2RlbEJ5VmFsSW5kZXggPSAwOwogICAgIG1faW5zdGFuY2VPZkluZGV4ID0gMDsKICAgICBtX3By
aXZhdGVCcmFuZEFjY2Vzc0luZGV4ID0gMDsKLSAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCA9
IDA7CiAgICAgbV9jYWxsTGlua0luZm9JbmRleCA9IDA7CiAKICAgICB1bnNpZ25lZCBieXRlY29k
ZUNvdW50SGF2aW5nU2xvd0Nhc2UgPSAwOwpAQCAtOTE5LDQ1ICs5MTgsNiBAQCB2b2lkIEpJVDo6
bGluaygpCiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbnN0YW5jZU9mcywgcGF0Y2hCdWZm
ZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMsIHBh
dGNoQnVmZmVyKTsKIAotICAgIGlmIChtX2J5VmFsQ29tcGlsYXRpb25JbmZvLnNpemUoKSkgewot
I2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCBl
eGNlcHRpb25IYW5kbGVyKHZtKCkuZ2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPigpKTsKLSNlbHNlCi0gICAgICAg
IENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGV4Y2VwdGlvbkhhbmRs
ZXIgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KG1fZXhj
ZXB0aW9uSGFuZGxlcik7Ci0jZW5kaWYKLQotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGJ5VmFs
Q29tcGlsYXRpb25JbmZvIDogbV9ieVZhbENvbXBpbGF0aW9uSW5mbykgewotICAgICAgICAgICAg
UGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVOb3RJbmRleEp1bXAgPSBieVZhbENvbXBpbGF0aW9uSW5m
by5ub3RJbmRleEp1bXA7Ci0gICAgICAgICAgICBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQ
dHJUYWc+IG5vdEluZGV4SnVtcDsKLSAgICAgICAgICAgIGlmIChKdW1wKHBhdGNoYWJsZU5vdElu
ZGV4SnVtcCkuaXNTZXQoKSkKLSAgICAgICAgICAgICAgICBub3RJbmRleEp1bXAgPSBDb2RlTG9j
YXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRl
cm5hbFB0clRhZz4ocGF0Y2hhYmxlTm90SW5kZXhKdW1wKSk7Ci0KLSAgICAgICAgICAgIFBhdGNo
YWJsZUp1bXAgcGF0Y2hhYmxlQmFkVHlwZUp1bXAgPSBieVZhbENvbXBpbGF0aW9uSW5mby5iYWRU
eXBlSnVtcDsKLSAgICAgICAgICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4g
YmFkVHlwZUp1bXA7Ci0gICAgICAgICAgICBpZiAoSnVtcChwYXRjaGFibGVCYWRUeXBlSnVtcCku
aXNTZXQoKSkKLSAgICAgICAgICAgICAgICBiYWRUeXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8
SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFn
PihieVZhbENvbXBpbGF0aW9uSW5mby5iYWRUeXBlSnVtcCkpOwotCi0gICAgICAgICAgICBhdXRv
IGRvbmVUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1
ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLmRv
bmVUYXJnZXQpKTsKLSAgICAgICAgICAgIGF1dG8gbmV4dEhvdFBhdGhUYXJnZXQgPSBDb2RlTG9j
YXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50
ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLm5leHRIb3RQYXRoVGFyZ2V0KSk7Ci0g
ICAgICAgICAgICBhdXRvIHNsb3dQYXRoVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRl
cm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZh
bENvbXBpbGF0aW9uSW5mby5zbG93UGF0aFRhcmdldCkpOwotCi0gICAgICAgICAgICBieVZhbENv
bXBpbGF0aW9uSW5mby5ieVZhbEluZm8tPnNldFVwKAotICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bkhhbmRsZXIsCi0gICAgICAgICAgICAgICAgYnlWYWxDb21waWxhdGlvbkluZm8uYXJyYXlNb2Rl
LAotICAgICAgICAgICAgICAgIGJ5VmFsQ29tcGlsYXRpb25JbmZvLmFycmF5UHJvZmlsZSwKLSAg
ICAgICAgICAgICAgICBkb25lVGFyZ2V0LAotICAgICAgICAgICAgICAgIG5leHRIb3RQYXRoVGFy
Z2V0LAotICAgICAgICAgICAgICAgIHNsb3dQYXRoVGFyZ2V0KTsKLSAgICAgICAgICAgIGlmIChK
SVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7Ci0gICAgICAgICAgICAg
ICAgYnlWYWxDb21waWxhdGlvbkluZm8uYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcFRhcmdldCA9
IHNsb3dQYXRoVGFyZ2V0LnJldGFnZ2VkPEpJVFN0dWJSb3V0aW5lUHRyVGFnPigpOwotICAgICAg
ICAgICAgICAgIGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRh
cmdldCA9IHNsb3dQYXRoVGFyZ2V0LnJldGFnZ2VkPEpJVFN0dWJSb3V0aW5lUHRyVGFnPigpOwot
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5m
by5ieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wID0gbm90SW5kZXhKdW1wOwotICAgICAgICAgICAg
ICAgIGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcCA9IGJhZFR5
cGVKdW1wOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCiAgICAgZm9yIChhdXRv
JiBjb21waWxhdGlvbkluZm8gOiBtX2NhbGxDb21waWxhdGlvbkluZm8pIHsKICAgICAgICAgQ2Fs
bExpbmtJbmZvJiBpbmZvID0gKmNvbXBpbGF0aW9uSW5mby5jYWxsTGlua0luZm87CiAgICAgICAg
IGluZm8uc2V0Q29kZUxvY2F0aW9ucygKQEAgLTEwNjAsNyArMTAyMCw3IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCkKICAgICAgICAganVtcFRvRXhjZXB0aW9u
SGFuZGxlcih2bSgpKTsKICAgICB9CiAKLSAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5
KCkgfHwgbV9ieVZhbENvbXBpbGF0aW9uSW5mby5zaXplKCkpIHsKKyAgICBpZiAoIW1fZXhjZXB0
aW9uQ2hlY2tzLmVtcHR5KCkpIHsKICAgICAgICAgbV9leGNlcHRpb25IYW5kbGVyID0gbGFiZWwo
KTsKICAgICAgICAgbV9leGNlcHRpb25DaGVja3MubGluayh0aGlzKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgKaW5kZXggNmMzNGFjNjczYTI4MmM4OGJhMWViY2ZjNGFjZTE4NTVmYTAyMzgwMS4u
NzY3ZjFlZjRiZjMxZmEyYzRhMzRlMTU2ZGE4YjU3ODYyMTNiMTg4MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCkBAIC0zNyw3ICszNyw2IEBACiAKICNkZWZpbmUgQVNTRVJUX0pJVF9PRkZTRVQo
YWN0dWFsLCBleHBlY3RlZCkgQVNTRVJUX1dJVEhfTUVTU0FHRShhY3R1YWwgPT0gZXhwZWN0ZWQs
ICJKSVQgT2Zmc2V0IFwiJXNcIiBzaG91bGQgYmUgJWQsIG5vdCAlZC5cbiIsICNleHBlY3RlZCwg
c3RhdGljX2Nhc3Q8aW50PihleHBlY3RlZCksIHN0YXRpY19jYXN0PGludD4oYWN0dWFsKSk7CiAK
LSNpbmNsdWRlICJCeVZhbEluZm8uaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRl
ICJDb21tb25TbG93UGF0aHMuaCIKICNpbmNsdWRlICJKSVREaXNhc3NlbWJsZXIuaCIKQEAgLTE0
OSw0MiArMTQ4LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICAgICB9OwogCi0gICAg
c3RydWN0IEJ5VmFsQ29tcGlsYXRpb25JbmZvIHsKLSAgICAgICAgQnlWYWxDb21waWxhdGlvbklu
Zm8oKSB7IH0KLSAgICAgICAgCi0gICAgICAgIEJ5VmFsQ29tcGlsYXRpb25JbmZvKEJ5VmFsSW5m
byogYnlWYWxJbmZvLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIE1hY3JvQXNzZW1ibGVy
OjpQYXRjaGFibGVKdW1wIG5vdEluZGV4SnVtcCwgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1
bXAgYmFkVHlwZUp1bXAsIEpJVEFycmF5TW9kZSBhcnJheU1vZGUsIEFycmF5UHJvZmlsZSogYXJy
YXlQcm9maWxlLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZG9uZVRhcmdldCwgTWFjcm9Bc3NlbWJs
ZXI6OkxhYmVsIG5leHRIb3RQYXRoVGFyZ2V0KQotICAgICAgICAgICAgOiBieVZhbEluZm8oYnlW
YWxJbmZvKQotICAgICAgICAgICAgLCBieXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpCi0gICAg
ICAgICAgICAsIG5vdEluZGV4SnVtcChub3RJbmRleEp1bXApCi0gICAgICAgICAgICAsIGJhZFR5
cGVKdW1wKGJhZFR5cGVKdW1wKQotICAgICAgICAgICAgLCBhcnJheU1vZGUoYXJyYXlNb2RlKQot
ICAgICAgICAgICAgLCBhcnJheVByb2ZpbGUoYXJyYXlQcm9maWxlKQotICAgICAgICAgICAgLCBk
b25lVGFyZ2V0KGRvbmVUYXJnZXQpCi0gICAgICAgICAgICAsIG5leHRIb3RQYXRoVGFyZ2V0KG5l
eHRIb3RQYXRoVGFyZ2V0KQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBCeVZhbENv
bXBpbGF0aW9uSW5mbyhCeVZhbEluZm8qIGJ5VmFsSW5mbywgQnl0ZWNvZGVJbmRleCBieXRlY29k
ZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBub3RJbmRleEp1bXAsIE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbCBkb25lVGFyZ2V0LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbmV4dEhv
dFBhdGhUYXJnZXQpCi0gICAgICAgICAgICA6IGJ5VmFsSW5mbyhieVZhbEluZm8pCi0gICAgICAg
ICAgICAsIGJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkKLSAgICAgICAgICAgICwgbm90SW5k
ZXhKdW1wKG5vdEluZGV4SnVtcCkKLSAgICAgICAgICAgICwgZG9uZVRhcmdldChkb25lVGFyZ2V0
KQotICAgICAgICAgICAgLCBuZXh0SG90UGF0aFRhcmdldChuZXh0SG90UGF0aFRhcmdldCkKLSAg
ICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgQnlWYWxJbmZvKiBieVZhbEluZm87Ci0gICAg
ICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleDsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OlBhdGNoYWJsZUp1bXAgbm90SW5kZXhKdW1wOwotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0
Y2hhYmxlSnVtcCBiYWRUeXBlSnVtcDsKLSAgICAgICAgSklUQXJyYXlNb2RlIGFycmF5TW9kZTsK
LSAgICAgICAgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGU7Ci0gICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpMYWJlbCBkb25lVGFyZ2V0OwotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbmV4
dEhvdFBhdGhUYXJnZXQ7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBzbG93UGF0aFRh
cmdldDsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgcmV0dXJuQWRkcmVzczsKLSAgICB9
OwotCiAgICAgc3RydWN0IENhbGxDb21waWxhdGlvbkluZm8gewogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6TGFiZWwgc2xvd1BhdGhTdGFydDsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVs
IGRvbmVMb2NhdGlvbjsKQEAgLTIyNCwxMyArMTg3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiBKSVQodm0sIGNvZGVCbG9jaywgYnl0ZWNvZGVPZmZz
ZXQpLnByaXZhdGVDb21waWxlKGVmZm9ydCk7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAg
IHN0YXRpYyB2b2lkIGNvbXBpbGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChWTSYgdm0sIENv
ZGVCbG9jayogY29kZUJsb2NrLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0
ciByZXR1cm5BZGRyZXNzLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKLSAgICAg
ICAgewotICAgICAgICAgICAgSklUIGppdCh2bSwgY29kZUJsb2NrKTsKLSAgICAgICAgICAgIGpp
dC5tX2J5dGVjb2RlSW5kZXggPSBieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXg7Ci0gICAgICAgICAg
ICBqaXQucHJpdmF0ZUNvbXBpbGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChieVZhbEluZm8s
IHJldHVybkFkZHJlc3MsIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIH0KIAogICAgICAgICBzdGF0
aWMgdW5zaWduZWQgZnJhbWVSZWdpc3RlckNvdW50Rm9yKENvZGVCbG9jayopOwogICAgICAgICBz
dGF0aWMgaW50IHN0YWNrUG9pbnRlck9mZnNldEZvcihDb2RlQmxvY2sqKTsKQEAgLTI0NCw4ICsy
MDAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVNsb3dD
YXNlcygpOwogICAgICAgICB2b2lkIGxpbmsoKTsKICAgICAgICAgQ29tcGlsYXRpb25SZXN1bHQg
cHJpdmF0ZUNvbXBpbGUoSklUQ29tcGlsYXRpb25FZmZvcnQpOwotICAgICAgICAKLSAgICAgICAg
dm9pZCBwcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKEJ5VmFsSW5mbyos
IFJldHVybkFkZHJlc3NQdHIsIENhY2hlYWJsZUlkZW50aWZpZXIpOwogCiAgICAgICAgIC8vIEFk
ZCBhIGNhbGwgb3V0IGZyb20gSklUIGNvZGUsIHdpdGhvdXQgYW4gZXhjZXB0aW9uIGNoZWNrLgog
ICAgICAgICBDYWxsIGFwcGVuZENhbGwoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFn
PiBmdW5jdGlvbikKQEAgLTM2MywxNCArMzE3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogICAgICAgICBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZh
dGVGaWVsZFB1dEtpbmQoT3ApOwogCi0gICAgICAgIC8vIElkZW50aWZpZXIgY2hlY2sgaGVscGVy
IGZvciBHZXRCeVZhbCBhbmQgUHV0QnlWYWwuCi0gICAgICAgIHZvaWQgZW1pdEJ5VmFsSWRlbnRp
ZmllckNoZWNrKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsKLQotICAgICAgICBKSVRQdXRCeUlkR2Vu
ZXJhdG9yIGVtaXRQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChPcFB1dFByaXZhdGVOYW1lLCBD
YWNoZWFibGVJZGVudGlmaWVyLCBKdW1wTGlzdCYgZG9uZUNhc2VzLCBKdW1wTGlzdCYgc2xvd0Nh
c2VzKTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgSklUUHV0QnlJ
ZEdlbmVyYXRvciBlbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AsIFB1dEtpbmQsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIEp1bXBMaXN0JiBkb25lQ2FzZXMsIEp1bXBMaXN0JiBzbG93Q2FzZXMpOwot
CiAgICAgICAgIGVudW0gRmluYWxPYmplY3RNb2RlIHsgTWF5QmVGaW5hbCwgS25vd25Ob3RGaW5h
bCB9OwogCiAgICAgICAgIHZvaWQgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihWaXJ0dWFsUmVnaXN0
ZXIgc3JjLCBKU1ZhbHVlUmVncyBkc3QpOwpAQCAtMTAxMiw3ICs5NTgsNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgVmVjdG9yPEpJVERlbEJ5VmFsR2VuZXJhdG9yPiBtX2RlbEJ5VmFsczsK
ICAgICAgICAgVmVjdG9yPEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+IG1faW5zdGFuY2VPZnM7CiAg
ICAgICAgIFZlY3RvcjxKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I+IG1fcHJpdmF0ZUJy
YW5kQWNjZXNzZXM7Ci0gICAgICAgIFZlY3RvcjxCeVZhbENvbXBpbGF0aW9uSW5mbz4gbV9ieVZh
bENvbXBpbGF0aW9uSW5mbzsKICAgICAgICAgVmVjdG9yPENhbGxDb21waWxhdGlvbkluZm8+IG1f
Y2FsbENvbXBpbGF0aW9uSW5mbzsKICAgICAgICAgVmVjdG9yPEp1bXBUYWJsZT4gbV9qbXBUYWJs
ZTsKIApAQCAtMTA0MCw3ICs5ODUsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWdu
ZWQgbV9kZWxCeUlkSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2luc3Rh
bmNlT2ZJbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5k
QWNjZXNzSW5kZXggeyBVSU5UX01BWCB9OwotICAgICAgICB1bnNpZ25lZCBtX2J5VmFsSW5zdHJ1
Y3Rpb25JbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1fY2FsbExpbmtJbmZv
SW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2J5dGVjb2RlQ291bnRIYXZp
bmdTbG93Q2FzZSB7IDAgfTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAppbmRleCA3ZmQwNDYzMjgxZTM1ZGZlNTVmYWUyMDYxMDBhMTVkYTk3
MTlhMjk4Li4xZTVhY2Q0ODM4OGI4NzBjNzBlMjBkMzVlZDVkM2U5OTlhNGI4NTIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTEzMTUsMTEyICsx
MzE1LDEyMCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ2hlY2tQcml2YXRl
QnJhbmRHZW5lcmljLCB2b2lkLCAoSlNHbG9iYWxPYmplYwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25QdXRQcml2YXRlTmFtZU9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5
VmFsSW5mbywgUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5kKSkKK3RlbXBsYXRlPGJvb2wgZGVm
aW5lPgorc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBwdXRQcml2YXRlTmFtZU9wdGltaXplKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVl
IGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQsIEpTVmFsdWUgdmFsdWUsIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbykKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0g
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7Ci0KLSAgICBKU1ZhbHVlIGJh
c2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKLSAgICBKU1ZhbHVl
IHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKLSAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0KICAgICBhdXRvIGJh
c2VPYmplY3QgPSBiYXNlVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBz
dWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NF
UlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKIAotICAgIE9wdGltaXphdGlvblJlc3VsdCBvcHRpbWl6
YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok5vdE9wdGltaXplZDsKKyAgICAvLyBQ
cml2YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3aXRoaW4gY2xhc3MgbGV4aWNhbCBz
Y29wZQorICAgIC8vIGFuZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdheXMgaW4gc3RyaWN0IG1vZGUK
KyAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHVi
SW5mby0+YWNjZXNzVHlwZSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBDb21tb25TbG93
UGF0aHM6Om9yaWdpbmFsU3RydWN0dXJlQmVmb3JlUHV0KHZtLCBiYXNlVmFsdWUpOworICAgIGNv
bnN0ZXhwciBib29sIGlzU3RyaWN0TW9kZSA9IHRydWU7CisgICAgUHV0UHJvcGVydHlTbG90IHNs
b3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBpZiBjb25zdGV4cHIgKGRlZmluZSkK
KyAgICAgICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgZWxzZQorICAgICAgICBiYXNlT2JqZWN0LT5z
ZXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgaWYgKGFjY2Vz
c1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKQor
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkgJiYgQ2FjaGVh
YmxlSWRlbnRpZmllcjo6aXNDYWNoZWFibGVJZGVudGlmaWVyQ2VsbChzdWJzY3JpcHQpKSB7Ci0g
ICAgICAgIEFTU0VSVChzdWJzY3JpcHQuaXNTeW1ib2woKSk7Ci0gICAgICAgIEFTU0VSVChjYWxs
RnJhbWUtPmJ5dGVjb2RlSW5kZXgoKSAhPSBCeXRlY29kZUluZGV4KDApKTsKLSAgICAgICAgQVNT
RVJUKCFieVZhbEluZm8tPnN0dWJSb3V0aW5lKTsKLSAgICAgICAgaWYgKGJ5VmFsSW5mby0+c2Vl
bikgewotICAgICAgICAgICAgaWYgKGJ5VmFsSW5mby0+Y2FjaGVkSWQudWlkKCkgPT0gcHJvcGVy
dHlOYW1lKSB7Ci0gICAgICAgICAgICAgICAgSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRo
Q2FjaGVkSWQodm0sIGNvZGVCbG9jaywgYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyKE9VUl9S
RVRVUk5fQUREUkVTUyksIGJ5VmFsSW5mby0+Y2FjaGVkSWQpOwotICAgICAgICAgICAgICAgIG9w
dGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6T3B0aW1pemVkOwotICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBTZWVtIGxpa2UgYSBnZW5lcmljIHBy
b3BlcnR5IGFjY2VzcyBzaXRlLgotICAgICAgICAgICAgICAgIG9wdGltaXphdGlvblJlc3VsdCA9
IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBs
b2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+c2Vl
biA9IHRydWU7Ci0gICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5jYWNoZWRJZCA9IENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21DZWxsKHN1YnNjcmlwdC5hc0NlbGwoKSk7Ci0gICAgICAg
ICAgICAgICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpTZWVuT25j
ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVC
bG9jaywgc3Vic2NyaXB0LmFzQ2VsbCgpKTsKLSAgICAgICAgfQorICAgICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tQ2Vs
bChzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2Fj
aGluZ0J5KHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSwgaWRlbnRpZmllcikpCisgICAgICAgICAg
ICByZXBhdGNoUHV0QnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgc3RydWN0
dXJlLCBpZGVudGlmaWVyLCBzbG90LCAqc3R1YkluZm8sIFB1dEJ5S2luZDo6QnlWYWwsIGRlZmlu
ZSA/IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZERlZmluZSA6IFB1dEtpbmQ6OkRpcmVjdFBy
aXZhdGVGaWVsZFNldCk7CiAgICAgfQorfQogCi0gICAgaWYgKG9wdGltaXphdGlvblJlc3VsdCAh
PSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok9wdGltaXplZCAmJiBvcHRpbWl6YXRpb25SZXN1bHQgIT0g
T3B0aW1pemF0aW9uUmVzdWx0OjpTZWVuT25jZSkgewotICAgICAgICAvLyBJZiB3ZSB0YWtlIHNs
b3cgcGF0aCBtb3JlIHRoYW4gMTAgdGltZXMgd2l0aG91dCBwYXRjaGluZyB0aGVuIG1ha2Ugc3Vy
ZSB3ZQotICAgICAgICAvLyBuZXZlciBtYWtlIHRoYXQgbWlzdGFrZSBhZ2Fpbi4gVGhpcyBnaXZl
cyAxMCBpdGVyYXRpb25zIHdvcnRoIG9mIG9wcG9ydHVuaXR5Ci0gICAgICAgIC8vIGZvciB1cyB0
byBvYnNlcnZlIHRoYXQgdGhlIHB1dF9wcml2YXRlX25hbWUgbWF5IGJlIHBvbHltb3JwaGljLgot
ICAgICAgICAvLyBXZSBjb3VudCB1cCBzbG93UGF0aENvdW50IGV2ZW4gaWYgdGhlIHJlc3VsdCBp
cyBHaXZlVXAuCi0gICAgICAgIGlmICgrK2J5VmFsSW5mby0+c2xvd1BhdGhDb3VudCA+PSAxMCkK
LSAgICAgICAgICAgIG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6R2l2
ZVVwOwotICAgIH0KK3RlbXBsYXRlPGJvb2wgZGVmaW5lPgorc3RhdGljIEFMV0FZU19JTkxJTkUg
dm9pZCBwdXRQcml2YXRlTmFtZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIGlmIChvcHRpbWl6YXRpb25SZXN1bHQgPT0gT3B0aW1pemF0aW9u
UmVzdWx0OjpHaXZlVXApIHsKLSAgICAgICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUu
Ci0gICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKLSAgICAgICAgaWYgKGNv
ZGVCbG9jay0+dXNlRGF0YUlDKCkpCi0gICAgICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJh
dGlvbiA9IG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYzsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VS
X1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljKTsKLSAgICB9
CisgICAgYXV0byBiYXNlT2JqZWN0ID0gYmFzZVZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIGF1dG8gcHJv
cGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBF
WENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CiAKICAgICBzY29wZS5yZWxlYXNl
KCk7Ci0gICAgCisKICAgICAvLyBQcml2YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3
aXRoaW4gY2xhc3MgbGV4aWNhbCBzY29wZQogICAgIC8vIGFuZCBjbGFzcyBtZXRob2RzIGFyZSBh
bHdheXMgaW4gc3RyaWN0IG1vZGUKLSAgICBjb25zdCBib29sIGlzU3RyaWN0TW9kZSA9IHRydWU7
CisgICAgY29uc3RleHByIGJvb2wgaXNTdHJpY3RNb2RlID0gdHJ1ZTsKICAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwotICAgIGlmIChwdXRLaW5kLmlz
RGVmaW5lKCkpCisgICAgaWYgY29uc3RleHByIChkZWZpbmUpCiAgICAgICAgIGJhc2VPYmplY3Qt
PmRlZmluZVByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOwogICAgIGVsc2UKICAgICAgICAgYmFzZU9iamVjdC0+c2V0UHJpdmF0ZUZpZWxkKGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLS8vIFdlIG5lZWQgdG8g
bWF0Y2ggdGhlIHNpZ25hdHVyZSBvZiBvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplCi1K
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljLCB2
b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgUHJpdmF0ZUZpZWxkUHV0S2lu
ZCBwcml2YXRlRmllbGRQdXRLaW5kKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25QdXRCeVZhbERlZmluZVByaXZhdGVGaWVsZE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEFycmF5UHJvZmlsZSopKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2Rl
QmxvY2soKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
QmFzZVZhbHVlKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkU3Vic2NyaXB0KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CisgICAgcHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZTx0cnVlPihnbG9iYWxPYmplY3Qs
IGNvZGVCbG9jaywgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBzdHViSW5mbyk7Cit9CiAK
K0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZhbFNldFByaXZhdGVGaWVs
ZE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IEFycmF5UHJvZmlsZSopKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwogICAg
IEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOwog
ICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQp
OwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAg
ICBwdXRQcml2YXRlTmFtZU9wdGltaXplPGZhbHNlPihnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywg
YmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBzdHViSW5mbyk7Cit9CiAKLSAgICBhdXRvIGJh
c2VPYmplY3QgPSBiYXNlVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvblB1dEJ5VmFsRGVmaW5lUHJpdmF0ZUZpZWxkR2VuZXJpYywgdm9pZCwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBBcnJheVByb2ZpbGUqKSkKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
c3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKLSAgICBFWENFUFRJT05fQVNT
RVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogCi0gICAgc2NvcGUucmVsZWFzZSgpOworICAgIGlm
IChzdHViSW5mbykKKyAgICAgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAKLSAg
ICAvLyBQcml2YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3aXRoaW4gY2xhc3MgbGV4
aWNhbCBzY29wZQotICAgIC8vIGFuZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdheXMgaW4gc3RyaWN0
IG1vZGUKLSAgICBjb25zdCBib29sIGlzU3RyaWN0TW9kZSA9IHRydWU7Ci0gICAgUHV0UHJvcGVy
dHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKLSAgICBpZiAocHJpdmF0ZUZp
ZWxkUHV0S2luZC5pc0RlZmluZSgpKQotICAgICAgICBiYXNlT2JqZWN0LT5kZWZpbmVQcml2YXRl
RmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKLSAgICBlbHNl
Ci0gICAgICAgIGJhc2VPYmplY3QtPnNldFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHB1dFByaXZhdGVOYW1lPHRydWU+KGdsb2JhbE9i
amVjdCwgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlKTsKK30KKworSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFsU2V0UHJpdmF0ZUZpZWxkR2VuZXJpYywgdm9pZCwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBBcnJheVByb2ZpbGUqKSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKworICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOworICAgIEpTVmFsdWUg
c3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOworICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKworICAgIGlmIChzdHVi
SW5mbykKKyAgICAgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAKLSAgICBpZiAo
YnlWYWxJbmZvKQotICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CisgICAg
cHV0UHJpdmF0ZU5hbWU8ZmFsc2U+KGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBzdWJzY3JpcHQs
IHZhbHVlKTsKIH0KIAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNhbGxFdmFs
LCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbGVlRnJhbWUsIEVDTUFNb2RlIGVjbWFNb2RlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggZWZiZDg4NzM1NDJmYzNmNGJlODNlMDZiZTA2MjU3
YmZjMjljYzQ2Mi4uZjcwNDQwNWVkYWVkN2EwNjE4NGU5ODc4MjcwNDJjODVkMGY3NzEwNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTY0LDcgKzY0LDYg
QEAgY2xhc3MgU3ltYm9sVGFibGU7CiBjbGFzcyBWTTsKIGNsYXNzIFdhdGNocG9pbnRTZXQ7CiAK
LXN0cnVjdCBCeVZhbEluZm87CiBzdHJ1Y3QgRUNNQU1vZGU7CiBzdHJ1Y3QgSW5saW5lQ2FsbEZy
YW1lOwogc3RydWN0IEluc3RydWN0aW9uOwpAQCAtODAsNyArNzksNiBAQCB0eXBlZGVmIGNoYXIq
IFVudXNlZFB0cjsKICAgICBBcDogQXJyYXlQcm9maWxlKgogICAgIEFycDogQmluYXJ5QXJpdGhQ
cm9maWxlKgogICAgIEI6IEJ1dHRlcmZseSoKLSAgICBCeTogQnlWYWxJbmZvKgogICAgIEM6IEpT
Q2VsbCoKICAgICBDYjogQ29kZUJsb2NrKgogICAgIENsaTogQ2FsbExpbmtJbmZvKgpAQCAtMjAx
LDkgKzE5OSw2IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ2hlY2tQcml2
YXRlQnJhbmRPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqCiBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvblNldFByaXZhdGVCcmFuZEdlbmVyaWMsIHZvaWQsIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5k
R2VuZXJpYywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpKTsKIAotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbElu
Zm8qLCBQcml2YXRlRmllbGRQdXRLaW5kKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwg
UHJpdmF0ZUZpZWxkUHV0S2luZCkpOwotCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvblB1dEJ5VmFsTm9uU3RyaWN0T3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFN0cnVjdHVyZVN0
dWJJbmZvKiwgQXJyYXlQcm9maWxlKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25QdXRCeVZhbFN0cmljdE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEFycmF5UHJvZmlsZSopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uRGlyZWN0UHV0QnlWYWxOb25TdHJpY3RPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgU3RydWN0
dXJlU3R1YkluZm8qLCBBcnJheVByb2ZpbGUqKSk7CkBAIC0yMTIsNiArMjA3LDEwIEBAIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3RHZW5lcmljLCB2
b2lkLCAoSlNHbG9iYWxPYmplCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1
dEJ5VmFsU3RyaWN0R2VuZXJpYywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgU3RydWN0dXJlU3R1YkluZm8qLCBB
cnJheVByb2ZpbGUqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkRpcmVj
dFB1dEJ5VmFsU3RyaWN0R2VuZXJpYywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgU3RydWN0dXJlU3R1YkluZm8q
LCBBcnJheVByb2ZpbGUqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkRp
cmVjdFB1dEJ5VmFsTm9uU3RyaWN0R2VuZXJpYywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgU3RydWN0dXJlU3R1
YkluZm8qLCBBcnJheVByb2ZpbGUqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvblB1dEJ5VmFsRGVmaW5lUHJpdmF0ZUZpZWxkT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFN0
cnVjdHVyZVN0dWJJbmZvKiwgQXJyYXlQcm9maWxlKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25QdXRCeVZhbERlZmluZVByaXZhdGVGaWVsZEdlbmVyaWMsIHZvaWQsIChK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIFN0cnVjdHVyZVN0dWJJbmZvKiwgQXJyYXlQcm9maWxlKikpOworSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZhbFNldFByaXZhdGVGaWVsZE9wdGltaXplLCB2
b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEFycmF5UHJvZmlsZSopKTsKK0pTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxTZXRQcml2YXRlRmllbGRHZW5l
cmljLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEFycmF5UHJvZmlsZSopKTsK
IAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25DYWxsRXZhbCwgRW5jb2RlZEpT
VmFsdWUsIChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIEVDTUFNb2RlKSk7CiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkxpbmtDYWxsLCBTbG93UGF0aFJldHVyblR5cGUs
IChDYWxsRnJhbWUqLCBKU0dsb2JhbE9iamVjdCosIENhbGxMaW5rSW5mbyopKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggNzk0MDIx
ZGFkM2U0NmU5NmY3MWRmZDE4MDY3MTlkMzVlOTZkNWQzOS4uNTE5ZTA5OTg5NjRhOWRiNjkwY2U4
ODE4YjU2ZGQxOGQ3NTMwYmVjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTQ2Nyw0OSArNDY3LDYgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGVtaXRXcml0ZUJhcnJpZXIoYmFzZSwgU2hvdWxkRmlsdGVyQmFzZSk7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIE9wPgotSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhD
YWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVy
IHByb3BlcnR5TmFtZSwgSnVtcExpc3QmIGRvbmVDYXNlcywgSnVtcExpc3QmIHNsb3dDYXNlcykK
LXsKLSAgICAvLyBiYXNlOiByZWdUMAotICAgIC8vIHByb3BlcnR5OiByZWdUMQotICAgIC8vIHNj
cmF0Y2g6IHJlZ1QyCi0KLSAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFz
ZTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwotCi0gICAg
c2xvd0Nhc2VzLmFwcGVuZChicmFuY2hJZk5vdENlbGwocmVnVDEpKTsKLSAgICBlbWl0QnlWYWxJ
ZGVudGlmaWVyQ2hlY2socmVnVDEsIHJlZ1QxLCBwcm9wZXJ0eU5hbWUsIHNsb3dDYXNlcyk7Ci0K
LSAgICAvLyBXcml0ZSBiYXJyaWVyIGJyZWFrcyB0aGUgcmVnaXN0ZXJzLiBTbyBhZnRlciBpc3N1
aW5nIHRoZSB3cml0ZSBiYXJyaWVyLAotICAgIC8vIHJlbG9hZCB0aGUgcmVnaXN0ZXJzLgotICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKGJhc2UsIHJlZ1QwLCB2YWx1ZSwgcmVnVDEpOwotCi0g
ICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBl
OjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdz
KHJlZ1QxKSwgcmVnVDMsIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQpOwotICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0
cnVjdHVyZSB3aXRob3V0IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNlIGlzIGNlbGwuCi0gICAgLy8g
RklYTUU6IFVzZSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyIGluIEJhc2VsaW5lIGVmZmVjdGl2
ZWx5IHRvIHJlZHVjZSBjb2RlIHNpemUuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwOTM5NQotICAgIGVtaXRXcml0ZUJhcnJpZXIoYmFzZSwgU2hvdWxk
RmlsdGVyQmFzZSk7Ci0gICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwotCi0gICAgTGFiZWwg
Y29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0gICAgZ2VuLnNsb3dQYXRoSnVtcCgpLmxpbmsodGhp
cyk7Ci0KLSAgICBDYWxsIGNhbGw7Ci0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpIHsKLSAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlv
biA9IGdlbi5zbG93UGF0aEZ1bmN0aW9uKCk7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihn
ZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgICAgICBjYWxsT3BlcmF0
aW9uPGRlY2x0eXBlKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCkpPihBZGRyZXNzKEdQUkluZm86Om5v
bkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIFRy
dXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6bm9uQXJn
R1BSMCwgcmVnVDEsIHJlZ1QwLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKLSAgICB9IGVsc2UK
LSAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgVHJ1
c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwg
cmVnVDEsIHJlZ1QwLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKLSAgICBnZW4ucmVwb3J0U2xv
d1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwotICAgIGRvbmVDYXNlcy5hcHBlbmQoanVt
cCgpKTsKLQotICAgIHJldHVybiBnZW47Ci19Ci0KIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRf
YnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgYm9vbCBpc0RpcmVjdCA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSA9PSBvcF9wdXRfYnlfdmFsX2RpcmVjdDsKQEAgLTYx
MSw3NiArNTY4LDczIEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOwogICAgIFZpcnR1YWxSZWdp
c3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0
eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7Ci0gICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2Nv
ZGVCbG9jay0+YWRkQnlWYWxJbmZvKG1fYnl0ZWNvZGVJbmRleCk7CisgICAgVmlydHVhbFJlZ2lz
dGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYmFzZSwgcmVnVDApOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJl
Z1QxKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMik7CiAKICAgICBl
bWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwogCi0gICAgUGF0Y2hhYmxl
SnVtcCBmYXN0UGF0aEptcDsKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJh
c2VsaW5lSklUKSkKLSAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+
bV9ub3RJbmRleEp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7Ci0gICAgZWxzZSB7
Ci0gICAgICAgIGZhc3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOwotICAgICAgICBhZGRTbG93
Q2FzZShmYXN0UGF0aEptcCk7Ci0gICAgfQotICAgIAotICAgIExhYmVsIGRvbmUgPSBsYWJlbCgp
OwotICAgIAotICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm8uYXBwZW5kKEJ5VmFsQ29tcGlsYXRp
b25JbmZvKGJ5VmFsSW5mbywgbV9ieXRlY29kZUluZGV4LCBmYXN0UGF0aEptcCwgZG9uZSwgZG9u
ZSkpOworICAgIEpJVFB1dEJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ss
IEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6UHV0QnlWYWwsIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QyKSwgSW52YWxpZEdQUlJl
ZywgcmVnVDQpOworICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3ltYm9sID0gdHJ1ZTsK
KyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VE
YXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xv
d1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKKyAgICBtX3B1
dEJ5VmFscy5hcHBlbmQoZ2VuKTsKKworICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJl
IHdpdGhvdXQgd3JpdGUtYmFycmllciBpZiBhIGJhc2UgaXMgY2VsbC4KKyAgICAvLyBGSVhNRTog
VXNlIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8g
cmVkdWNlIGNvZGUgc2l6ZS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA5Mzk1CisgICAgZW1pdFdyaXRlQmFycmllcihiYXNlLCBTaG91bGRGaWx0ZXJC
YXNlKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcFB1dFByaXZhdGVOYW1lPigpOwotICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9i
eVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uYnlWYWxJbmZvOwog
ICAgIFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCA9IGJ5dGVjb2RlLm1fcHV0S2luZDsKIAor
ICAgIEpJVFB1dEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX3B1dEJ5VmFsc1ttX3B1dEJ5VmFsSW5k
ZXgrK107CisKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotICAgIExhYmVsIHNsb3dQYXRo
ID0gbGFiZWwoKTsKIAorICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisgICAg
YXV0byBvcGVyYXRpb24gPSBwdXRLaW5kLmlzRGVmaW5lKCkgPyBvcGVyYXRpb25QdXRCeVZhbERl
ZmluZVByaXZhdGVGaWVsZE9wdGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxTZXRQcml2YXRlRmll
bGRPcHRpbWl6ZTsKICNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAgLy8gVGhleSBh
cmUgY29uZmlndXJlZCBpbiB0aGUgZmFzdCBwYXRoIGFuZCBub3QgY2xvYmJlcmVkLgogICAgIGNv
bnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwogICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJv
cGVydHlHUFIgPSByZWdUMTsKICAgICBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gcmVnVDI7
Ci0KLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUdQUik7
Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3Byb3BlcnR5LCBwcm9wZXJ0
eUdQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB2YWx1
ZUdQUik7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRQcml2YXRl
TmFtZU9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSks
IGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgYnlWYWxJbmZvLCBUcnVzdGVkSW1tMzIo
cHV0S2luZC52YWx1ZSgpKSk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRp
b24sIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgYmFzZUdQUiwg
cHJvcGVydHlHUFIsIHZhbHVlR1BSLCBnZW4uc3R1YkluZm8oKSwgVHJ1c3RlZEltbVB0cihudWxs
cHRyKSk7CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0
ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVj
b2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOwotICAgIG1vdmUo
VHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOworICAgIC8v
IGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOworICAgIC8vIGNvbnN0ZXhwciBHUFJS
ZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKKyAgICAvLyBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BS
ID0gcmVnVDI7CisgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHJlZ1QzOworICAg
IGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUNDsKIAotICAgIGNvbnN0
ZXhwciBHUFJSZWcgYmFzZUdQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdmFsdWVH
UFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBieVZhbEluZm9HUFIgPSBh
cmd1bWVudEdQUjQ7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwdXRLaW5kR1BSID0gYXJndW1lbnRH
UFI1OwotCi0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VH
UFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSwgcHJv
cGVydHlHUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV92YWx1ZSwg
dmFsdWVHUFIpOwotICAgIG1vdmUoVHJ1c3RlZEltbVB0cihieVZhbEluZm8pLCBieVZhbEluZm9H
UFIpOwotICAgIG1vdmUoVHJ1c3RlZEltbTMyKHB1dEtpbmQudmFsdWUoKSksIHB1dEtpbmRHUFIp
OworICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRH
UFIpOworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIHN0dWJJbmZvR1BS
KTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X3ByaXZh
dGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsK
IAogICAgIENhbGwgY2FsbDsKICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJh
c2VsaW5lSklUKSkKLSAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRp
b25QdXRQcml2YXRlTmFtZU9wdGltaXplOworICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93
T3BlcmF0aW9uID0gb3BlcmF0aW9uOwogICAgIGVsc2UKLSAgICAgICAgY2FsbCA9IGFwcGVuZENh
bGwob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7CisgICAgICAgIGNhbGwgPSBhcHBl
bmRDYWxsKG9wZXJhdGlvbik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1Yihj
aGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICNlbmRp
ZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIG1fYnlWYWxDb21waWxhdGlvbklu
Zm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7Ci0g
ICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJu
QWRkcmVzcyA9IGNhbGw7Ci0gICAgbV9ieVZhbEluc3RydWN0aW9uSW5kZXgrKzsKKyAgICBnZW4u
cmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCiAjaWYgRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCkBAIC02OTUsMjQgKzY0OSwyNCBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBh
cmVDYWxsRwogICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkKICAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CisgICAgY29uc3RleHByIEdQUlJl
ZyBiYXNlR1BSID0gcmVnVDA7CisgICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHJl
Z1QxOworICAgIGNvbnN0ZXhwciBHUFJSZWcgdmFsdWVHUFIgPSByZWdUMjsKKyAgICBjb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcmVnVDM7CisgICAgY29uc3RleHByIEdQUlJlZyBieXRl
Y29kZU9mZnNldEdQUiA9IHJlZ1Q0OworCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRH
UFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwog
Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjA7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyB2YWx1ZUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5VmFsSW5m
b0dQUiA9IGFyZ3VtZW50R1BSNDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHB1dEtpbmRHUFIgPSBh
cmd1bWVudEdQUjU7CisgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdU
NDsKIAogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2Nr
KSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVj
dEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BS
KTsKIAotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25QdXRQcml2YXRl
TmFtZU9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFs
dWVHUFIsIGJ5VmFsSW5mb0dQUiwgcHV0S2luZEdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRz
PGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5VmFsRGVmaW5lUHJpdmF0ZUZpZWxkT3B0aW1pemUpPihn
bG9iYWxPYmplY3RHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgc3R1YkluZm9H
UFIsIFRydXN0ZWRJbW1QdHIobnVsbHB0cikpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7CiAKICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkKLSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjQsIEJ5VmFsSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgICAgICBqaXQu
ZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSNCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKICAgICBlbHNlCiAgICAgICAgIGpp
dC5yZXQoKTsKIApAQCAtMzA2MCw2MiArMzAxNCw4IEBAIHZvaWQgSklUOjplbWl0V3JpdGVCYXJy
aWVyKEpTQ2VsbCogb3duZXIsIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSwgV3JpdGVCYXJyaWVyTW9k
CiAgICAgICAgIHZhbHVlTm90Q2VsbC5saW5rKHRoaXMpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgT3A+Ci1KSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElk
KE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVy
dHlOYW1lLCBKdW1wTGlzdCYgZG9uZUNhc2VzLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKQotewotICAg
IC8vIGJhc2U6IHRhZyhyZWdUMSksIHBheWxvYWQocmVnVDApCi0gICAgLy8gcHJvcGVydHk6IHRh
ZyhyZWdUMyksIHBheWxvYWQocmVnVDIpCi0KLSAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5
dGVjb2RlLm1fYmFzZTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3Zh
bHVlOwotCi0gICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hJZk5vdENlbGwocmVnVDMpKTsKLSAg
ICBlbWl0QnlWYWxJZGVudGlmaWVyQ2hlY2socmVnVDIsIHJlZ1QyLCBwcm9wZXJ0eU5hbWUsIHNs
b3dDYXNlcyk7Ci0KLSAgICAvLyBXcml0ZSBiYXJyaWVyIGJyZWFrcyB0aGUgcmVnaXN0ZXJzLiBT
byBhZnRlciBpc3N1aW5nIHRoZSB3cml0ZSBiYXJyaWVyLAotICAgIC8vIHJlbG9hZCB0aGUgcmVn
aXN0ZXJzLgotICAgIC8vCi0gICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0aG91
dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgotICAgIC8vIFdlIGFyZSBlbWl0dGlu
ZyB3cml0ZS1iYXJyaWVyIGJlZm9yZSB3cml0aW5nIGhlcmUgYnV0IHRoaXMgaXMgT0sgc2luY2Ug
MzJiaXQgSlNDIGRvZXMgbm90IGhhdmUgY29uY3VycmVudCBHQy4KLSAgICAvLyBGSVhNRTogVXNl
IFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVk
dWNlIGNvZGUgc2l6ZS4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA5Mzk1Ci0gICAgZW1pdFdyaXRlQmFycmllcihiYXNlLCBTaG91bGRGaWx0ZXJCYXNl
KTsKLSAgICBlbWl0TG9hZFBheWxvYWQoYmFzZSwgcmVnVDApOwotICAgIGVtaXRMb2FkKHZhbHVl
LCByZWdUMywgcmVnVDIpOwotCi0gICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAg
IG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVn
czo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBJbnZhbGlk
R1BSUmVnLCByZWdUMSwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKLSAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwotCi0g
ICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0gICAgZ2VuLnNsb3dQYXRoSnVtcCgp
LmxpbmsodGhpcyk7Ci0KLSAgICAvLyBKSVRQdXRCeUlkR2VuZXJhdG9yIG9ubHkgcHJlc2VydmUg
dGhlIHZhbHVlIGFuZCB0aGUgYmFzZSdzIHBheWxvYWQsIHdlIGhhdmUgdG8gcmVsb2FkIHRoZSB0
YWcuCi0gICAgZW1pdExvYWRUYWcoYmFzZSwgcmVnVDEpOwotCi0gICAgQ2FsbCBjYWxsOwotICAg
IGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7Ci0gICAgICAg
IGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBnZW4uc2xvd1BhdGhGdW5jdGlvbigp
OwotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpu
b25BcmdHUFIwKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbjxkZWNsdHlwZShnZW4uc2xvd1BhdGhG
dW5jdGlvbigpKT4oQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCks
IEdQUkluZm86Om5vbkFyZ0dQUjAsIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFsdWVS
ZWdzKHJlZ1QxLCByZWdUMCksIHByb3BlcnR5TmFtZS5yYXdCaXRzKCkpOwotICAgIH0gZWxzZQot
ICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbihnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhyZWdU
MywgcmVnVDIpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBwcm9wZXJ0eU5hbWUucmF3Qml0
cygpKTsKLSAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwot
ICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKLQotICAgIHJldHVybiBnZW47Ci19Ci0KICNl
bmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCi1KSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1
dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKE9wUHV0UHJpdmF0ZU5hbWUgYnl0ZWNvZGUsIENhY2hl
YWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKdW1wTGlzdCYgZG9uZUNhc2VzLCBKdW1wTGlz
dCYgc2xvd0Nhc2VzKQotewotICAgIGF1dG8gcHV0S2luZCA9IGJ5dGVjb2RlLm1fcHV0S2luZC5p
c0RlZmluZSgpID8gUHV0S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lIDogUHV0S2luZDo6
RGlyZWN0UHJpdmF0ZUZpZWxkU2V0OwotICAgIHJldHVybiBlbWl0UHV0QnlWYWxXaXRoQ2FjaGVk
SWQoYnl0ZWNvZGUsIHB1dEtpbmQsIHByb3BlcnR5TmFtZSwgZG9uZUNhc2VzLCBzbG93Q2FzZXMp
OwotfQotCiB2b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcihWaXJ0dWFsUmVnaXN0ZXIgb3duZXIs
IFdyaXRlQmFycmllck1vZGUgbW9kZSkKIHsKICAgICBBU1NFUlQobW9kZSA9PSBVbmNvbmRpdGlv
bmFsV3JpdGVCYXJyaWVyIHx8IG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZSk7CkBAIC0zMTI5LDU4
ICszMDI5LDYgQEAgdm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIoSlNDZWxsKiBvd25lcikKICAg
ICBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuLmxpbmsodGhpcyk7CiB9CiAKLXZvaWQgSklUOjpl
bWl0QnlWYWxJZGVudGlmaWVyQ2hlY2soUmVnaXN0ZXJJRCBjZWxsLCBSZWdpc3RlcklEIHNjcmF0
Y2gsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKdW1wTGlzdCYgc2xvd0Nhc2Vz
KQotewotICAgIGlmIChwcm9wZXJ0eU5hbWUuaXNTeW1ib2xDZWxsKCkpCi0gICAgICAgIHNsb3dD
YXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBjZWxsLCBUcnVzdGVkSW1tUHRyKHByb3Bl
cnR5TmFtZS5jZWxsKCkpKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHNsb3dDYXNlcy5hcHBlbmQo
YnJhbmNoSWZOb3RTdHJpbmcoY2VsbCkpOwotICAgICAgICBsb2FkUHRyKEFkZHJlc3MoY2VsbCwg
SlNTdHJpbmc6Om9mZnNldE9mVmFsdWUoKSksIHNjcmF0Y2gpOwotICAgICAgICBzbG93Q2FzZXMu
YXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgc2NyYXRjaCwgVHJ1c3RlZEltbVB0cihwcm9wZXJ0
eU5hbWUudWlkKCkpKSk7Ci0gICAgfQotfQotCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRQ
cml2YXRlTmFtZVdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVz
c1B0ciByZXR1cm5BZGRyZXNzLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKLXsK
LSAgICBjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uID0gbV9jb2RlQmxvY2st
Pmluc3RydWN0aW9ucygpLmF0KGJ5VmFsSW5mby0+Ynl0ZWNvZGVJbmRleCkucHRyKCk7Ci0gICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4o
KTsKLQotICAgIEp1bXBMaXN0IGRvbmVDYXNlczsKLSAgICBKdW1wTGlzdCBzbG93Q2FzZXM7Ci0K
LSAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbiA9IGVtaXRQdXRQcml2YXRlTmFtZVdpdGhDYWNo
ZWRJZChieXRlY29kZSwgcHJvcGVydHlOYW1lLCBkb25lQ2FzZXMsIHNsb3dDYXNlcyk7Ci0KLSAg
ICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fY29kZUJsb2NrLT5tX2xvY2spOwotICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnRoaXMsIG1fY29kZUJsb2NrLCBMaW5rQnVmZmVyOjpQcm9m
aWxlOjpJbmxpbmVDYWNoZSk7Ci0gICAgcGF0Y2hCdWZmZXIubGluayhzbG93Q2FzZXMsIGJ5VmFs
SW5mby0+c2xvd1BhdGhUYXJnZXQpOwotICAgIHBhdGNoQnVmZmVyLmxpbmsoZG9uZUNhc2VzLCBi
eVZhbEluZm8tPmRvbmVUYXJnZXQpOwotICAgIGlmICghbV9leGNlcHRpb25DaGVja3MuZW1wdHko
KSkKLSAgICAgICAgcGF0Y2hCdWZmZXIubGluayhtX2V4Y2VwdGlvbkNoZWNrcywgYnlWYWxJbmZv
LT5leGNlcHRpb25IYW5kbGVyKTsKLQotICAgIGZvciAoY29uc3QgYXV0byYgY2FsbFNpdGUgOiBt
X25lYXJDYWxscykgewotICAgICAgICBpZiAoY2FsbFNpdGUuY2FsbGVlKQotICAgICAgICAgICAg
cGF0Y2hCdWZmZXIubGluayhjYWxsU2l0ZS5mcm9tLCBjYWxsU2l0ZS5jYWxsZWUpOwotICAgIH0K
LSAgICBmb3IgKGNvbnN0IGF1dG8mIGNhbGxTaXRlIDogbV9mYXJDYWxscykgewotICAgICAgICBp
ZiAoY2FsbFNpdGUuY2FsbGVlKQotICAgICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhjYWxsU2l0
ZS5mcm9tLCBjYWxsU2l0ZS5jYWxsZWUpOwotICAgIH0KLSAgICBnZW4uZmluYWxpemUocGF0Y2hC
dWZmZXIsIHBhdGNoQnVmZmVyKTsKLQotICAgIGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUgPSBGSU5B
TElaRV9DT0RFX0ZPUl9TVFVCKAotICAgICAgICBtX2NvZGVCbG9jaywgcGF0Y2hCdWZmZXIsIEpJ
VFN0dWJSb3V0aW5lUHRyVGFnLAotICAgICAgICAiQmFzZWxpbmUgcHV0X3ByaXZhdGVfbmFtZSB3
aXRoIGNhY2hlZCBwcm9wZXJ0eSBuYW1lICclcycgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAl
cCIsIHByb3BlcnR5TmFtZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5nKCptX2NvZGVC
bG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7Ci0gICAgYnlWYWxJ
bmZvLT5zdHViSW5mbyA9IGdlbi5zdHViSW5mbygpOwotCi0gICAgaWYgKEpJVENvZGU6OnVzZURh
dGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKLSAgICAgICAgYnlWYWxJbmZvLT5tX25vdElu
ZGV4SnVtcFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihi
eVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKTsKLSAgICAgICAgYnlWYWxJbmZv
LT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWM7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+
bV9ub3RJbmRleEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihi
eVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+
KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNz
KSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVH
ZW5lcmljKSk7Ci0gICAgfQotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVO
QUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcAppbmRleCA4YmExMGU0M2VhNmU1NThhNTdiZmZjZWJhOTNlNGZkYzA5
ZWIyODc3Li4yZWI0N2ZkMzQ4YmRhYTk3NDAwZjI0YzQ3ZTRiMDc5N2FjN2JhMDM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHAKQEAgLTM0MCw0NCArMzQwLDQ2IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRlX25h
bWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOwogICAgIFZp
cnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7Ci0gICAgQnlWYWxJbmZvKiBieVZhbElu
Zm8gPSBtX2NvZGVCbG9jay0+YWRkQnlWYWxJbmZvKG1fYnl0ZWNvZGVJbmRleCk7CisgICAgVmly
dHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKIAogICAgIGVtaXRMb2FkMihi
YXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywgcmVnVDIpOworICAgIGVtaXRMb2Fk
KHZhbHVlLCByZWdUNSwgcmVnVDQpOwogCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxs
KGJhc2UsIHJlZ1QxKTsKLSAgICBQYXRjaGFibGVKdW1wIGZhc3RQYXRoSm1wID0gcGF0Y2hhYmxl
SnVtcCgpOwotICAgIGFkZFNsb3dDYXNlKGZhc3RQYXRoSm1wKTsKIAotICAgIExhYmVsIGRvbmUg
PSBsYWJlbCgpOwotICAgIAotICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm8uYXBwZW5kKEJ5VmFs
Q29tcGlsYXRpb25JbmZvKGJ5VmFsSW5mbywgbV9ieXRlY29kZUluZGV4LCBmYXN0UGF0aEptcCwg
ZG9uZSwgZG9uZSkpOworICAgIEpJVFB1dEJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9j
b2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6UHV0QnlWYWws
IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNWYWx1
ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSlNWYWx1ZVJl
Z3MocmVnVDUsIHJlZ1Q0KSwgSW52YWxpZEdQUlJlZywgSW52YWxpZEdQUlJlZyk7CisgICAgZ2Vu
LnN0dWJJbmZvKCktPnByb3BlcnR5SXNTeW1ib2wgPSB0cnVlOworICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAg
IG1fcHV0QnlWYWxzLmFwcGVuZChnZW4pOworCisgICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1
Y3R1cmUgd2l0aG91dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgorICAgIC8vIEZJ
WE1FOiBVc2UgVW5jb25kaXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBlZmZlY3RpdmVs
eSB0byByZWR1Y2UgY29kZSBzaXplLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDkzOTUKKyAgICBlbWl0V3JpdGVCYXJyaWVyKGJhc2UsIFNob3VsZEZp
bHRlckJhc2UpOwogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIGJhc2Ug
PSBieXRlY29kZS5tX2Jhc2U7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNv
ZGUubV9wcm9wZXJ0eTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3Zh
bHVlOwotCi0gICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2J5VmFsQ29tcGlsYXRpb25JbmZv
W21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5ieVZhbEluZm87CiAgICAgUHJpdmF0ZUZpZWxkUHV0
S2luZCBwdXRLaW5kID0gYnl0ZWNvZGUubV9wdXRLaW5kOwogCisgICAgSklUUHV0QnlWYWxHZW5l
cmF0b3ImIGdlbiA9IG1fcHV0QnlWYWxzW21fcHV0QnlWYWxJbmRleCsrXTsKKwogICAgIGxpbmtB
bGxTbG93Q2FzZXMoaXRlcik7Ci0gICAgTGFiZWwgc2xvd1BhdGggPSBsYWJlbCgpOworCisgICAg
TGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKICAgICBKU1ZhbHVlUmVncyBiYXNlUmVn
cyhyZWdUMSwgcmVnVDApOwogICAgIEpTVmFsdWVSZWdzIHByb3BlcnR5UmVncyhyZWdUMywgcmVn
VDIpOwogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyhyZWdUNSwgcmVnVDQpOwogCi0gICAgZW1p
dExvYWQoYmFzZSwgYmFzZVJlZ3MudGFnR1BSKCksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSk7Ci0g
ICAgZW1pdExvYWQocHJvcGVydHksIHByb3BlcnR5UmVncy50YWdHUFIoKSwgcHJvcGVydHlSZWdz
LnBheWxvYWRHUFIoKSk7Ci0gICAgZW1pdExvYWQodmFsdWUsIHZhbHVlUmVncy50YWdHUFIoKSwg
dmFsdWVSZWdzLnBheWxvYWRHUFIoKSk7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKSksIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncywgYnlW
YWxJbmZvLCBUcnVzdGVkSW1tMzIocHV0S2luZC52YWx1ZSgpKSk7CisgICAgYXV0byBvcGVyYXRp
b24gPSBwdXRLaW5kLmlzRGVmaW5lKCkgPyBvcGVyYXRpb25QdXRCeVZhbERlZmluZVByaXZhdGVG
aWVsZE9wdGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxTZXRQcml2YXRlRmllbGRPcHRpbWl6ZTsK
KyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgVHJ1c3RlZEltbVB0ciht
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBiYXNlUmVncywgcHJvcGVydHlSZWdzLCB2YWx1
ZVJlZ3MsIGdlbi5zdHViSW5mbygpLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpKTsKIAotICAgIG1f
YnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFy
Z2V0ID0gc2xvd1BhdGg7Ci0gICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1
Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7Ci0gICAgbV9ieVZhbEluc3RydWN0aW9u
SW5kZXgrKzsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwp
OwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAKaW5kZXggZTYzYzk5YmU2YWJmN2ViNzg5ZGNhNmFmMzlmNTA5MDJmYWQzODQ3ZC4uMDlmZGVj
N2FjZWExZDA1NTY1ODY3YmIyM2E2ODNhZDY2ZmM3YzRkMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guY3BwCkBAIC02MDAsOSArNjAwLDEyIEBAIHN0YXRpYyBGdW5jdGlvblB0cjxD
RnVuY3Rpb25QdHJUYWc+IGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5RnVuY3Rpb24oY29uc3QgUHV0
UHJvCiAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxTdHJpY3RHZW5lcmljOwogICAgICAgICAg
ICAgcmV0dXJuIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsTm9uU3RyaWN0R2VuZXJpYzsKLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmll
bGREZWZpbmU6CisgICAgICAgICAgICBBU1NFUlQoc2xvdC5pc1N0cmljdE1vZGUoKSk7CisgICAg
ICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmllbGRHZW5lcmlj
OworICAgICAgICBjYXNlIFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldDoKKyAgICAgICAg
ICAgIEFTU0VSVChzbG90LmlzU3RyaWN0TW9kZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBvcGVy
YXRpb25QdXRCeVZhbFNldFByaXZhdGVGaWVsZEdlbmVyaWM7CiAgICAgICAgIH0KICAgICAgICAg
YnJlYWs7CiAgICAgfQpAQCAtNjMzLDcgKzYzNiw3IEBAIHN0YXRpYyBGdW5jdGlvblB0cjxDRnVu
Y3Rpb25QdHJUYWc+IGFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5RnVuY3Rpb24oY29uc3QgUHV0
CiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0cmlj
dE9wdGltaXplOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUHV0QnlLaW5k
OjpCeVZhbDogeworICAgIGNhc2UgUHV0QnlLaW5kOjpCeVZhbDoKICAgICAgICAgc3dpdGNoIChw
dXRLaW5kKSB7CiAgICAgICAgIGNhc2UgUHV0S2luZDo6Tm90RGlyZWN0OgogICAgICAgICAgICAg
aWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCkBAIC02NDMsMTMgKzY0NiwxNSBAQCBzdGF0aWMgRnVu
Y3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBhcHByb3ByaWF0ZU9wdGltaXppbmdQdXRCeUZ1bmN0
aW9uKGNvbnN0IFB1dAogICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsU3RyaWN0T3B0aW1pemU7
CiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxOb25TdHJpY3RPcHRp
bWl6ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQdXRLaW5kOjpEaXJl
Y3RQcml2YXRlRmllbGREZWZpbmU6CisgICAgICAgICAgICBBU1NFUlQoc2xvdC5pc1N0cmljdE1v
ZGUoKSk7CisgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRl
RmllbGRPcHRpbWl6ZTsKKyAgICAgICAgY2FzZSBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGRT
ZXQ6CisgICAgICAgICAgICBBU1NFUlQoc2xvdC5pc1N0cmljdE1vZGUoKSk7CisgICAgICAgICAg
ICByZXR1cm4gb3BlcmF0aW9uUHV0QnlWYWxTZXRQcml2YXRlRmllbGRPcHRpbWl6ZTsKICAgICAg
ICAgfQogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgfQogICAgIC8vIE1ha2Ugd2luIHBvcnQg
Y29tcGlsZXIgaGFwcHkKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMTkyMiw2ICsxOTI3LDEwIEBAIHZvaWQgcmVzZXRQdXRCeShDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBQdXRCeUtpbmQg
a2luCiAgICAgICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsTm9u
U3RyaWN0T3B0aW1pemU7CiAgICAgICAgIGVsc2UgaWYgKHVub3B0aW1pemVkRnVuY3Rpb24gPT0g
b3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxTdHJpY3RHZW5lcmljIHx8IHVub3B0aW1pemVkRnVuY3Rp
b24gPT0gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxTdHJpY3RPcHRpbWl6ZSkKICAgICAgICAgICAg
IG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxTdHJpY3RPcHRpbWl6
ZTsKKyAgICAgICAgZWxzZSBpZiAodW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRC
eVZhbERlZmluZVByaXZhdGVGaWVsZEdlbmVyaWMgfHwgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBv
cGVyYXRpb25QdXRCeVZhbERlZmluZVByaXZhdGVGaWVsZE9wdGltaXplKQorICAgICAgICAgICAg
b3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeVZhbERlZmluZVByaXZhdGVGaWVsZE9w
dGltaXplOworICAgICAgICBlbHNlIGlmICh1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlv
blB1dEJ5VmFsU2V0UHJpdmF0ZUZpZWxkR2VuZXJpYyB8fCB1bm9wdGltaXplZEZ1bmN0aW9uID09
IG9wZXJhdGlvblB1dEJ5VmFsU2V0UHJpdmF0ZUZpZWxkT3B0aW1pemUpCisgICAgICAgICAgICBv
cHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsU2V0UHJpdmF0ZUZpZWxkT3B0aW1p
emU7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKHVub3B0aW1pemVkRnVuY3Rp
b24gPT0gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxOb25TdHJpY3RHZW5lcmljIHx8IHVub3B0aW1p
emVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxOb25TdHJpY3RPcHRpbWl6ZSk7
CiAgICAgICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFs
Tm9uU3RyaWN0T3B0aW1pemU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436536</attachid>
            <date>2021-08-26 11:26:03 -0700</date>
            <delta_ts>2021-08-26 17:40:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229544-20210826112602.patch</filename>
            <type>text/plain</type>
            <size>81808</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MGFlNGU2MmViNzc4ZjA5NzExNTE0OTZkNzE1MWI3MTFjMmUzZDE4Li43N2ExZGYyYWE1ZTEwOWEx
NjllYTA2MzUzOWIxNzNhNGM3NzRhMDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAyMS0wOC0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIG9wX3B1dF9wcml2YXRlX25hbWUgc2hvdWxkIHVzZSBtb2Rlcm4g
SUMgYW5kIHJlbW92ZSBCeVZhbEluZm8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyOTU0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9CeVZhbEluZm8u
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5VmFsSW5mby5oOiBSZW1vdmVkLgor
ICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6Z2V0SUNTdGF0dXNNYXApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnN0cm9uZ2x5Vmlz
aXRTdHJvbmdSZWZlcmVuY2VzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5kQnlWYWxJ
bmZvKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRCeVZhbEluZm8pOiBE
ZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVj
b2RlL0lDU3RhdHVzTWFwLmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1l
KToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dFByaXZhdGVOYW1lKToKKyAgICAgICAgKiBq
aXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6
CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVFeGNlcHRpb25IYW5kbGVycyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAo
SlNDOjpCeVZhbENvbXBpbGF0aW9uSW5mbzo6QnlWYWxDb21waWxhdGlvbkluZm8pOiBEZWxldGVk
LgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6cHV0UHJp
dmF0ZU5hbWVPcHRpbWl6ZSk6CisgICAgICAgIChKU0M6OnB1dFByaXZhdGVOYW1lKToKKyAgICAg
ICAgKEpTQzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBqaXQvSklUT3Bl
cmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93
X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6SklUOjplbWl0QnlWYWxJZGVudGlmaWVyQ2hlY2spOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQpOiBEZWxl
dGVkLgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNw
cDoKKyAgICAgICAgKEpTQzo6YXBwcm9wcmlhdGVHZW5lcmljUHV0QnlGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OmFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5RnVuY3Rpb24pOgorICAgICAgICAo
SlNDOjpyZXNldFB1dEJ5KToKKwogMjAyMS0wOC0yNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFBvbHltb3JwaGljIFB1dEJ5VmFsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMyM2Q4YTQwZTFmNmUyM2ZjZTI3ZWQ3YzA4ZGI1MzI0
NzNiMjZhNTkuLmE2MDE5NmUyYzY3MDIzYzgxMGQ2MmYyNTA5NjgzYjgxM2YxZmYwNjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NDQsNyArNDQ0LDYgQEAKIAkJMEY3REYxM0Mx
RTI5NzExMzAwOTU5NTFCIC8qIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdERjEzQTFFMjk3
MTBFMDA5NTk1MUIgLyogSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjdERjE0NjFFMkJF
RjZBMDA5NTk1MUIgLyogQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdERjE0NTFFMkJFRjY4MDA5NTk1MUIgLyog
QmxvY2tEaXJlY3RvcnlJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEY3Rjk4OEMxRDk1OTZDODAwRjRGMTJFIC8qIERGR1N0b3JlQmFy
cmllckNsdXN0ZXJpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY3Rjk4OEExRDk1OTZDMzAwRjRGMTJFIC8qIERGR1N0b3JlQmFycmllckNs
dXN0ZXJpbmdQaGFzZS5oICovOyB9OwotCQkwRjgwMjNFQTE2MTM4MzJCMDBBMEJBNDUgLyogQnlW
YWxJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi87IH07CiAJCTBGODMzNUI4
MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNTE2MzlDMUUzMDAxNDQz
QjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGODM2NEI3MTY0QjBDMTEwMDUzMzI5QSAvKiBERkdC
cmFuY2hEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24uaCAq
LzsgfTsKIAkJMEY4NkEyNkYxRDZGN0IzMzAwQ0IwQzkyIC8qIEdDVHlwZU1hcC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4NkEyNkUxRDZGN0IzMTAw
Q0IwQzkyIC8qIEdDVHlwZU1hcC5oICovOyB9OwpAQCAtMjgyOCw3ICsyODI3LDYgQEAKIAkJMEY3
REYxNDUxRTJCRUY2ODAwOTU5NTFCIC8qIEJsb2NrRGlyZWN0b3J5SW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9ja0RpcmVjdG9yeUlubGluZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3Rjk4ODkxRDk1OTZDMzAwRjRGMTJFIC8qIERGR1N0
b3JlQmFycmllckNsdXN0ZXJpbmdQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBERkdTdG9yZUJhcnJpZXJDbHVzdGVyaW5nUGhhc2UuY3BwOyBwYXRoID0gZGZn
L0RGR1N0b3JlQmFycmllckNsdXN0ZXJpbmdQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGN0Y5ODhBMUQ5NTk2QzMwMEY0RjEyRSAvKiBERkdTdG9yZUJhcnJpZXJDbHVz
dGVyaW5nUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU3RvcmVC
YXJyaWVyQ2x1c3RlcmluZ1BoYXNlLmg7IHBhdGggPSBkZmcvREZHU3RvcmVCYXJyaWVyQ2x1c3Rl
cmluZ1BoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGODAyM0U5MTYxMzgz
MjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQnlWYWxJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMzNUI0MTYz
OUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyogQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
cnJheUFsbG9jYXRpb25Qcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
ODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnJhbmNoRGlyZWN0aW9uLmg7IHBhdGggPSBkZmcv
REZHQnJhbmNoRGlyZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MTM1
LDcgKzUxMzMsNiBAQAogCQlFMzU1RDM4RTIyNDQ2ODZDMDA4RjFBRDYgLyogR2xvYmFsRXhlY3V0
YWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHbG9iYWxFeGVjdXRhYmxlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1Njk4NzEyMjg0MTE4MzAwOENEQ0NCIC8qIFBhY2tl
ZENlbGxQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFja2VkQ2VsbFB0ci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzVBMEI5QzIyMEFEODdBMDBBQzQ0NzQgLyogRXhlY3V0YWJsZUJh
c2VJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4ZWN1dGFibGVC
YXNlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMzVCQTJDMDI0MUEw
RThDMDBCNjcwODYgLyogQnlWYWxJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ5VmFsSW5m
by5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUNBMTRGMURCQzNBNTYwMEY4
MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRE9NSklUQWJzdHJhY3RIZWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTM1Q0ExNTAxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVhcC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRBYnN0cmFjdEhlYXAuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1Q0ExNTExREJDM0E1NjAwRjgzNTE2IC8q
IERPTUpJVEhlYXBSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBET01KSVRIZWFwUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODU1
NCw4ICs4NTUxLDYgQEAKIAkJCQlFM0QyNjQyQTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVS
ZXdyaXRlci5oICovLAogCQkJCTUzRDM1NDk4MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29kZVVz
ZURlZi5jcHAgKi8sCiAJCQkJMEY4ODVFMTAxODQ5QTNCRTAwRjFFM0ZBIC8qIEJ5dGVjb2RlVXNl
RGVmLmggKi8sCi0JCQkJRTM1QkEyQzAyNDFBMEU4QzAwQjY3MDg2IC8qIEJ5VmFsSW5mby5jcHAg
Ki8sCi0JCQkJMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oICovLAogCQkJ
CTBGNjRCMjc3MUE3OTU3QjIwMDZFNEU2NiAvKiBDYWxsRWRnZS5jcHAgKi8sCiAJCQkJMEY2NEIy
NzgxQTc5NTdCMjAwNkU0RTY2IC8qIENhbGxFZGdlLmggKi8sCiAJCQkJMEYwQjgzQUUxNEJDRjcx
NDAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5jcHAgKi8sCkBAIC05NDczLDcgKzk0NjgsNiBAQAog
CQkJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZVJld3JpdGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk2NTE0RjIxOTE4QjNFMTY3MDA5OEZGOEIgLyogQnl0ZWNvZGVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjg4NUUxMTE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVVc2VE
ZWYuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGODAyM0VBMTYxMzgzMkIwMEEwQkE0NSAvKiBCeVZh
bEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUZFOERFNTRCMjNBQzFEQUQwMDVDOTE0MiAvKiBD
YWNoZWFibGVJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRThERTU0RDIzQUMxRTg2
MDA1QzkxNDIgLyogQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTE0NENBMzUwMjIyNDE4MDEwMDgxNzc4OSAvKiBDYWNoZWRCeXRlY29kZS5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggNzA3N2VmOWFlMzExNzZmNjM4
NWViZTM0Y2NiMzFhNTA1YzE5MWVjNS4uNTJiOTNlZThkOGJiYTY2MDY0ZGIyMDE4ZjNmMzE3NzAy
Zjc2YWE5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMTk3LDcgKzE5Nyw2IEBA
IGJ5dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3Bw
CiBieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCiBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9m
aWxlLmNwcAogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAotYnl0ZWNvZGUvQnlWYWxJbmZvLmNw
cAogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAogYnl0ZWNvZGUvQnl0ZWNvZGVEdW1w
ZXIuY3BwCiBieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDA1M2U2NjNlOGMxODZlODBjMzNkNmYyNDRmMTgzZGYzZDllZjNhZTkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQnlWYWxJbmZvLmgiCi0KLSNpbmNsdWRl
ICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotI2lm
IEVOQUJMRShKSVQpCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Ci12b2lkIEJ5VmFsSW5m
bzo6dmlzaXRBZ2dyZWdhdGVJbXBsKFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0gICAgY2FjaGVkSWQu
dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7Ci19Ci0KLURFRklORV9WSVNJVF9BR0dSRUdBVEUoQnlW
YWxJbmZvKTsKLQotI2VuZGlmIC8vIEVOQUJMRShKSVQpCi0KLX0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBiMjI2ZmIxNmY1ZGI3NDRmN2ZlNTU2YmVjNzU4ZDdjZWEwNGU0YWEx
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaAorKysgL2Rldi9udWxsCkBAIC0xLDMw
MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVyLmgiCi0j
aW5jbHVkZSAiQ2xhc3NJbmZvLmgiCi0jaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCi0jaW5jbHVk
ZSAiSW5kZXhpbmdUeXBlLmgiCi0jaW5jbHVkZSAiSklUU3R1YlJvdXRpbmUuaCIKLSNpbmNsdWRl
ICJTdHJ1Y3R1cmUuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIFN5bWJvbDsKLQotI2lm
IEVOQUJMRShKSVQpCi0KLWNsYXNzIEFycmF5UHJvZmlsZTsKLWNsYXNzIFN0cnVjdHVyZVN0dWJJ
bmZvOwotCi1lbnVtIEpJVEFycmF5TW9kZSA6IHVpbnQ4X3QgewotICAgIEpJVEludDMyLAotICAg
IEpJVERvdWJsZSwKLSAgICBKSVRDb250aWd1b3VzLAotICAgIEpJVEFycmF5U3RvcmFnZSwKLSAg
ICBKSVREaXJlY3RBcmd1bWVudHMsCi0gICAgSklUU2NvcGVkQXJndW1lbnRzLAotICAgIEpJVElu
dDhBcnJheSwKLSAgICBKSVRJbnQxNkFycmF5LAotICAgIEpJVEludDMyQXJyYXksCi0gICAgSklU
VWludDhBcnJheSwKLSAgICBKSVRVaW50OENsYW1wZWRBcnJheSwKLSAgICBKSVRVaW50MTZBcnJh
eSwKLSAgICBKSVRVaW50MzJBcnJheSwKLSAgICBKSVRGbG9hdDMyQXJyYXksCi0gICAgSklURmxv
YXQ2NEFycmF5LAotICAgIEpJVEJpZ0ludDY0QXJyYXksCi0gICAgSklUQmlnVWludDY0QXJyYXks
Ci19OwotCi1pbmxpbmUgYm9vbCBpc09wdGltaXphYmxlSW5kZXhpbmdUeXBlKEluZGV4aW5nVHlw
ZSBpbmRleGluZ1R5cGUpCi17Ci0gICAgc3dpdGNoIChpbmRleGluZ1R5cGUpIHsKLSAgICBjYXNl
IEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoKLSAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdf
VFlQRVM6Ci0gICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKLSAgICBjYXNl
IEFSUkFZX1dJVEhfQVJSQVlfU1RPUkFHRV9JTkRFWElOR19UWVBFUzoKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQot
aW5saW5lIGJvb2wgaGFzT3B0aW1pemFibGVJbmRleGluZ0ZvckpTVHlwZShKU1R5cGUgdHlwZSkK
LXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIERpcmVjdEFyZ3VtZW50c1R5cGU6Ci0g
ICAgY2FzZSBTY29wZWRBcmd1bWVudHNUeXBlOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBk
ZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCi1pbmxpbmUgYm9vbCBo
YXNPcHRpbWl6YWJsZUluZGV4aW5nRm9yQ2xhc3NJbmZvKGNvbnN0IENsYXNzSW5mbyogY2xhc3NJ
bmZvKQotewotICAgIHJldHVybiBpc1R5cGVkVmlldyhjbGFzc0luZm8tPnR5cGVkQXJyYXlTdG9y
YWdlVHlwZSk7Ci19Ci0KLWlubGluZSBib29sIGhhc09wdGltaXphYmxlSW5kZXhpbmcoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCi17Ci0gICAgcmV0dXJuIGlzT3B0aW1pemFibGVJbmRleGluZ1R5cGUo
c3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkKLSAgICAgICAgfHwgaGFzT3B0aW1pemFibGVJbmRl
eGluZ0ZvckpTVHlwZShzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpKQotICAgICAgICB8fCBo
YXNPcHRpbWl6YWJsZUluZGV4aW5nRm9yQ2xhc3NJbmZvKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkp
OwotfQotCi1pbmxpbmUgSklUQXJyYXlNb2RlIGppdEFycmF5TW9kZUZvckluZGV4aW5nVHlwZShJ
bmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKQotewotICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKSB7
Ci0gICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIHJldHVybiBKSVRJ
bnQzMjsKLSAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIHJldHVy
biBKSVREb3VibGU7Ci0gICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKLSAg
ICAgICAgcmV0dXJuIEpJVENvbnRpZ3VvdXM7Ci0gICAgY2FzZSBBUlJBWV9XSVRIX0FSUkFZX1NU
T1JBR0VfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIHJldHVybiBKSVRBcnJheVN0b3JhZ2U7Ci0g
ICAgZGVmYXVsdDoKLSAgICAgICAgQ1JBU0goKTsKLSAgICAgICAgcmV0dXJuIEpJVENvbnRpZ3Vv
dXM7Ci0gICAgfQotfQotCi1pbmxpbmUgSklUQXJyYXlNb2RlIGppdEFycmF5TW9kZUZvckpTVHlw
ZShKU1R5cGUgdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIERpcmVjdEFy
Z3VtZW50c1R5cGU6Ci0gICAgICAgIHJldHVybiBKSVREaXJlY3RBcmd1bWVudHM7Ci0gICAgY2Fz
ZSBTY29wZWRBcmd1bWVudHNUeXBlOgotICAgICAgICByZXR1cm4gSklUU2NvcGVkQXJndW1lbnRz
OwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIHJldHVybiBKSVRDb250aWd1b3VzOwotICAgIH0KLX0KLQotaW5saW5lIEpJVEFycmF5
TW9kZSBqaXRBcnJheU1vZGVGb3JDbGFzc0luZm8oY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8p
Ci17Ci0gICAgc3dpdGNoIChjbGFzc0luZm8tPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkgewotICAg
IGNhc2UgVHlwZUludDg6Ci0gICAgICAgIHJldHVybiBKSVRJbnQ4QXJyYXk7Ci0gICAgY2FzZSBU
eXBlSW50MTY6Ci0gICAgICAgIHJldHVybiBKSVRJbnQxNkFycmF5OwotICAgIGNhc2UgVHlwZUlu
dDMyOgotICAgICAgICByZXR1cm4gSklUSW50MzJBcnJheTsKLSAgICBjYXNlIFR5cGVVaW50ODoK
LSAgICAgICAgcmV0dXJuIEpJVFVpbnQ4QXJyYXk7Ci0gICAgY2FzZSBUeXBlVWludDhDbGFtcGVk
OgotICAgICAgICByZXR1cm4gSklUVWludDhDbGFtcGVkQXJyYXk7Ci0gICAgY2FzZSBUeXBlVWlu
dDE2OgotICAgICAgICByZXR1cm4gSklUVWludDE2QXJyYXk7Ci0gICAgY2FzZSBUeXBlVWludDMy
OgotICAgICAgICByZXR1cm4gSklUVWludDMyQXJyYXk7Ci0gICAgY2FzZSBUeXBlRmxvYXQzMjoK
LSAgICAgICAgcmV0dXJuIEpJVEZsb2F0MzJBcnJheTsKLSAgICBjYXNlIFR5cGVGbG9hdDY0Ogot
ICAgICAgICByZXR1cm4gSklURmxvYXQ2NEFycmF5OwotICAgIGNhc2UgVHlwZUJpZ0ludDY0Ogot
ICAgICAgICByZXR1cm4gSklUQmlnSW50NjRBcnJheTsKLSAgICBjYXNlIFR5cGVCaWdVaW50NjQ6
Ci0gICAgICAgIHJldHVybiBKSVRCaWdVaW50NjRBcnJheTsKLSAgICBkZWZhdWx0OgotICAgICAg
ICBDUkFTSCgpOwotICAgICAgICByZXR1cm4gSklUQ29udGlndW91czsKLSAgICB9Ci19Ci0KLWlu
bGluZSBib29sIGppdEFycmF5TW9kZVBlcm1pdHNQdXQoSklUQXJyYXlNb2RlIG1vZGUpCi17Ci0g
ICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBKSVREaXJlY3RBcmd1bWVudHM6Ci0gICAgY2Fz
ZSBKSVRTY29wZWRBcmd1bWVudHM6Ci0gICAgLy8gRklYTUU6IE9wdGltaXplIEJpZ0ludDY0QXJy
YXkgLyBCaWdVaW50NjRBcnJheSBpbiBJQwotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjExODMKLSAgICBjYXNlIEpJVEJpZ0ludDY0QXJyYXk6Ci0gICAg
Y2FzZSBKSVRCaWdVaW50NjRBcnJheToKLSAgICAgICAgLy8gV2UgY291bGQgc3VwcG9ydCBwdXRf
YnlfdmFsIG9uIHRoZXNlIGF0IHNvbWUgcG9pbnQsIGJ1dCBpdCdzIGp1c3Qgbm90IHRoYXQgcHJv
Zml0YWJsZQotICAgICAgICAvLyBhdCB0aGUgbW9tZW50LgotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotfQotCi1pbmxpbmUg
Ym9vbCBqaXRBcnJheU1vZGVQZXJtaXRzUHV0RGlyZWN0KEpJVEFycmF5TW9kZSBtb2RlKQotewot
ICAgIC8vIFdlIGRvbid0IGFsbG93IHR5cGVkIGFycmF5IHB1dERpcmVjdCBoZXJlIHNpbmNlIHB1
dERpcmVjdCBoYXMKLSAgICAvLyBkZWZpbmVPd25Qcm9wZXJ0eSh7Y29uZmlndXJhYmxlOiB0cnVl
LCB3cml0YWJsZTp0cnVlLCBlbnVtZXJhYmxlOnRydWV9KQotICAgIC8vIHNlbWFudGljcy4gVHlw
ZWQgYXJyYXkgaW5kZXhlZCBwcm9wZXJ0aWVzIGFyZSBub24tY29uZmlndXJhYmxlIGJ5Ci0gICAg
Ly8gZGVmYXVsdCwgc28gd2UgY2FuJ3Qgc2ltcGx5IHN0b3JlIHRvIGEgdHlwZWQgYXJyYXkgZm9y
IHB1dERpcmVjdC4KLSAgICAvLwotICAgIC8vIFdlIGNvdWxkIG1vZGVsIHB1dERpcmVjdCBvbiBT
Y29wZWRBcmd1bWVudHMgYW5kIERpcmVjdEFyZ3VtZW50cywgYnV0IHdlCi0gICAgLy8gaGF2ZW4n
dCBmb3VuZCBhbnkgcGVyZm9ybWFuY2UgaW5jZW50aXZlIHRvIGRvIGl0IHlldC4KLSAgICBzd2l0
Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEpJVEludDMyOgotICAgIGNhc2UgSklURG91YmxlOgotICAg
IGNhc2UgSklUQ29udGlndW91czoKLSAgICBjYXNlIEpJVEFycmF5U3RvcmFnZToKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LX0KLQotaW5saW5lIFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlRm9ySklUQXJyYXlNb2Rl
KEpJVEFycmF5TW9kZSBtb2RlKQotewotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgSklU
SW50OEFycmF5OgotICAgICAgICByZXR1cm4gVHlwZUludDg7Ci0gICAgY2FzZSBKSVRJbnQxNkFy
cmF5OgotICAgICAgICByZXR1cm4gVHlwZUludDE2OwotICAgIGNhc2UgSklUSW50MzJBcnJheToK
LSAgICAgICAgcmV0dXJuIFR5cGVJbnQzMjsKLSAgICBjYXNlIEpJVFVpbnQ4QXJyYXk6Ci0gICAg
ICAgIHJldHVybiBUeXBlVWludDg7Ci0gICAgY2FzZSBKSVRVaW50OENsYW1wZWRBcnJheToKLSAg
ICAgICAgcmV0dXJuIFR5cGVVaW50OENsYW1wZWQ7Ci0gICAgY2FzZSBKSVRVaW50MTZBcnJheToK
LSAgICAgICAgcmV0dXJuIFR5cGVVaW50MTY7Ci0gICAgY2FzZSBKSVRVaW50MzJBcnJheToKLSAg
ICAgICAgcmV0dXJuIFR5cGVVaW50MzI7Ci0gICAgY2FzZSBKSVRGbG9hdDMyQXJyYXk6Ci0gICAg
ICAgIHJldHVybiBUeXBlRmxvYXQzMjsKLSAgICBjYXNlIEpJVEZsb2F0NjRBcnJheToKLSAgICAg
ICAgcmV0dXJuIFR5cGVGbG9hdDY0OwotICAgIGNhc2UgSklUQmlnSW50NjRBcnJheToKLSAgICAg
ICAgcmV0dXJuIFR5cGVCaWdJbnQ2NDsKLSAgICBjYXNlIEpJVEJpZ1VpbnQ2NEFycmF5OgotICAg
ICAgICByZXR1cm4gVHlwZUJpZ1VpbnQ2NDsKLSAgICBkZWZhdWx0OgotICAgICAgICBDUkFTSCgp
OwotICAgICAgICByZXR1cm4gTm90VHlwZWRBcnJheTsKLSAgICB9Ci19Ci0KLWlubGluZSBKSVRB
cnJheU1vZGUgaml0QXJyYXlNb2RlRm9yU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQot
ewotICAgIGlmIChpc09wdGltaXphYmxlSW5kZXhpbmdUeXBlKHN0cnVjdHVyZS0+aW5kZXhpbmdU
eXBlKCkpKQotICAgICAgICByZXR1cm4gaml0QXJyYXlNb2RlRm9ySW5kZXhpbmdUeXBlKHN0cnVj
dHVyZS0+aW5kZXhpbmdUeXBlKCkpOwotICAgIAotICAgIGlmIChoYXNPcHRpbWl6YWJsZUluZGV4
aW5nRm9ySlNUeXBlKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkpKQotICAgICAgICByZXR1
cm4gaml0QXJyYXlNb2RlRm9ySlNUeXBlKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkpOwot
ICAgIAotICAgIEFTU0VSVChoYXNPcHRpbWl6YWJsZUluZGV4aW5nRm9yQ2xhc3NJbmZvKHN0cnVj
dHVyZS0+Y2xhc3NJbmZvKCkpKTsKLSAgICByZXR1cm4gaml0QXJyYXlNb2RlRm9yQ2xhc3NJbmZv
KHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkpOwotfQotCi1zdHJ1Y3QgQnlWYWxJbmZvIHsKLSAgICBC
eVZhbEluZm8oQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQotICAgICAgICA6IGJ5dGVjb2Rl
SW5kZXgoYnl0ZWNvZGVJbmRleCkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRVcChDb2Rl
TG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBleGNlcHRpb25IYW5kbGVyLCBK
SVRBcnJheU1vZGUgYXJyYXlNb2RlLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSwgQ29kZUxv
Y2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gZG9uZVRhcmdldCwgQ29kZUxvY2F0aW9uTGFi
ZWw8SlNJbnRlcm5hbFB0clRhZz4gYmFkVHlwZU5leHRIb3RQYXRoVGFyZ2V0LCBDb2RlTG9jYXRp
b25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBzbG93UGF0aFRhcmdldCkKLSAgICB7Ci0gICAgICAg
IHRoaXMtPmV4Y2VwdGlvbkhhbmRsZXIgPSBleGNlcHRpb25IYW5kbGVyOwotICAgICAgICB0aGlz
LT5kb25lVGFyZ2V0ID0gZG9uZVRhcmdldDsKLSAgICAgICAgdGhpcy0+YmFkVHlwZU5leHRIb3RQ
YXRoVGFyZ2V0ID0gYmFkVHlwZU5leHRIb3RQYXRoVGFyZ2V0OwotICAgICAgICB0aGlzLT5zbG93
UGF0aFRhcmdldCA9IHNsb3dQYXRoVGFyZ2V0OwotICAgICAgICB0aGlzLT5hcnJheVByb2ZpbGUg
PSBhcnJheVByb2ZpbGU7Ci0gICAgICAgIHRoaXMtPnNsb3dQYXRoQ291bnQgPSAwOwotICAgICAg
ICB0aGlzLT5zdHViSW5mbyA9IG51bGxwdHI7Ci0gICAgICAgIHRoaXMtPmFycmF5TW9kZSA9IGFy
cmF5TW9kZTsKLSAgICAgICAgdGhpcy0+dG9va1Nsb3dQYXRoID0gZmFsc2U7Ci0gICAgICAgIHRo
aXMtPnNlZW4gPSBmYWxzZTsKLSAgICB9Ci0KLSAgICBERUNMQVJFX1ZJU0lUX0FHR1JFR0FURTsK
LQotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkgeyByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKEJ5VmFsSW5mbywgbV9zbG93T3BlcmF0aW9uKTsgfQotICAgIHN0YXRp
YyBwdHJkaWZmX3Qgb2Zmc2V0T2ZOb3RJbmRleEp1bXBUYXJnZXQoKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoQnlWYWxJbmZvLCBtX25vdEluZGV4SnVtcFRhcmdldCk7IH0KLSAgICBzdGF0aWMg
cHRyZGlmZl90IG9mZnNldE9mQmFkVHlwZUp1bXBUYXJnZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoQnlWYWxJbmZvLCBtX2JhZFR5cGVKdW1wVGFyZ2V0KTsgfQotCi0gICAgRnVuY3Rpb25Q
dHI8T3BlcmF0aW9uUHRyVGFnPiBtX3Nsb3dPcGVyYXRpb247Ci0KLSAgICB1bmlvbiB7Ci0gICAg
ICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBtX25vdEluZGV4SnVt
cFRhcmdldDsKLSAgICAgICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBtX25v
dEluZGV4SnVtcDsKLSAgICB9OwotICAgIHVuaW9uIHsKLSAgICAgICAgQ29kZUxvY2F0aW9uTGFi
ZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IG1fYmFkVHlwZUp1bXBUYXJnZXQ7Ci0gICAgICAgIENv
ZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gbV9iYWRUeXBlSnVtcDsKLSAgICB9Owot
Ci0gICAgQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gZXhjZXB0aW9u
SGFuZGxlcjsKLSAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBkb25lVGFy
Z2V0OwotICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGJhZFR5cGVOZXh0
SG90UGF0aFRhcmdldDsKLSAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBz
bG93UGF0aFRhcmdldDsKLSAgICBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZTsKLSAgICBCeXRl
Y29kZUluZGV4IGJ5dGVjb2RlSW5kZXg7Ci0gICAgdW5zaWduZWQgc2xvd1BhdGhDb3VudDsKLSAg
ICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+IHN0dWJSb3V0aW5lOwotICAgIENhY2hlYWJsZUlkZW50
aWZpZXIgY2FjaGVkSWQ7IC8vIE9uY2Ugd2Ugc2V0IGNhY2hlZElkLCB3ZSBtdXN0IG5vdCBjaGFu
Z2UgdGhlIHZhbHVlLiBKSVQgY29kZSByZWxpZXMgb24gdGhhdCBjb25maWd1cmVkIGNhY2hlZElk
IGlzIG1hcmtlZCBhbmQgcmV0YWluZWQgYnkgQ29kZUJsb2NrIHRocm91Z2ggQnlWYWxJbmZvLgot
ICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbzsKLSAgICBKSVRBcnJheU1vZGUgYXJyYXlN
b2RlOyAvLyBUaGUgYXJyYXkgbW9kZSB0aGF0IHdhcyBiYWtlZCBpbnRvIHRoZSBpbmxpbmUgSklU
IGNvZGUuCi0gICAgYm9vbCB0b29rU2xvd1BhdGggOiAxOwotICAgIGJvb2wgc2VlbiA6IDE7Ci19
OwotCi1pbmxpbmUgQnl0ZWNvZGVJbmRleCBnZXRCeVZhbEluZm9CeXRlY29kZUluZGV4KEJ5VmFs
SW5mbyogaW5mbykKLXsKLSAgICByZXR1cm4gaW5mby0+Ynl0ZWNvZGVJbmRleDsKLX0KLQotI2Vu
ZGlmIC8vIEVOQUJMRShKSVQpCi0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBkY2VmYzZhZDZjMmRhMGExNDg5
OGNmY2Y2MTg5YzZlOTRkMjBlNTZlLi5jNzY2YTI2OWU4Y2RlZDRkNzFkODY4MmE2N2Q3YzQzYzVm
ZmE5OTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cApAQCAtMzIsNyArMzIsNiBAQAogCiAjaW5jbHVkZSAiQXJpdGhQcm9maWxlLmgiCiAjaW5jbHVk
ZSAiQmFzaWNCbG9ja0xvY2F0aW9uLmgiCi0jaW5jbHVkZSAiQnlWYWxJbmZvLmgiCiAjaW5jbHVk
ZSAiQnl0ZWNvZGVEdW1wZXIuaCIKICNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaCIKQEAg
LTE2MjYsOCArMTYyNSw2IEBAIHZvaWQgQ29kZUJsb2NrOjpnZXRJQ1N0YXR1c01hcChjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImLCBJQ1N0YXR1c01hcCYgcmVzdWx0KQogICAgICAgICAgICAgICAg
IHJlc3VsdC5hZGQoc3R1YkluZm8tPmNvZGVPcmlnaW4sIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52
YWx1ZS5zdHViSW5mbyA9IHN0dWJJbmZvOwogICAgICAgICAgICAgZm9yIChDYWxsTGlua0luZm8q
IGNhbGxMaW5rSW5mbyA6IGppdERhdGEtPm1fY2FsbExpbmtJbmZvcykKICAgICAgICAgICAgICAg
ICByZXN1bHQuYWRkKGNhbGxMaW5rSW5mby0+Y29kZU9yaWdpbigpLCBJQ1N0YXR1cygpKS5pdGVy
YXRvci0+dmFsdWUuY2FsbExpbmtJbmZvID0gY2FsbExpbmtJbmZvOwotICAgICAgICAgICAgZm9y
IChCeVZhbEluZm8qIGJ5VmFsSW5mbyA6IGppdERhdGEtPm1fYnlWYWxJbmZvcykKLSAgICAgICAg
ICAgICAgICByZXN1bHQuYWRkKENvZGVPcmlnaW4oYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4KSwg
SUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLmJ5VmFsSW5mbyA9IGJ5VmFsSW5mbzsKICAgICAg
ICAgfQogI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6
aW5nSklUKGppdFR5cGUoKSkpIHsKQEAgLTE2OTksMjQgKzE2OTYsNiBAQCBTdHJ1Y3R1cmVTdHVi
SW5mbyogQ29kZUJsb2NrOjpmaW5kU3R1YkluZm8oQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1CeVZhbEluZm8qIENvZGVCbG9jazo6ZmluZEJ5VmFsSW5m
byhDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCi17Ci0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihtX2xvY2spOwotICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9qaXREYXRhLmdldCgpKSB7Ci0g
ICAgICAgIGZvciAoQnlWYWxJbmZvKiBieVZhbEluZm8gOiBqaXREYXRhLT5tX2J5VmFsSW5mb3Mp
IHsKLSAgICAgICAgICAgIGlmIChieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXggPT0gY29kZU9yaWdp
bi5ieXRlY29kZUluZGV4KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGJ5VmFsSW5mbzsKLSAg
ICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotQnlWYWxJbmZvKiBDb2Rl
QmxvY2s6OmFkZEJ5VmFsSW5mbyhCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCi17Ci0gICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIHJldHVybiBlbnN1cmVKSVRE
YXRhKGxvY2tlcikubV9ieVZhbEluZm9zLmFkZChieXRlY29kZUluZGV4KTsKLX0KLQogQ2FsbExp
bmtJbmZvKiBDb2RlQmxvY2s6OmFkZENhbGxMaW5rSW5mbyhDb2RlT3JpZ2luIGNvZGVPcmlnaW4p
CiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwpAQCAtMTgyOCw4ICsx
ODA3LDYgQEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcmVuY2VzKGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLAogCiAjaWYgRU5BQkxFKEpJVCkKICAgICBp
ZiAoYXV0byogaml0RGF0YSA9IG1faml0RGF0YS5nZXQoKSkgewotICAgICAgICBmb3IgKEJ5VmFs
SW5mbyogYnlWYWxJbmZvIDogaml0RGF0YS0+bV9ieVZhbEluZm9zKQotICAgICAgICAgICAgYnlW
YWxJbmZvLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKICAgICAgICAgZm9yIChTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykKICAgICAgICAgICAgIHN0
dWJJbmZvLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggZjM4Nzk5MjU2NDI4ZGQ4ZGFiN2UxYmFl
YjBlMjQxMGIzMTIzNjAwZC4uNGY3MGZhOWZmODFiMzNjN2JmMDQ2OTFkYjUyMWY2OTNhYTNmOTRi
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtOTcs
NyArOTcsNiBAQCBjbGFzcyBNZXRhZGF0YVRhYmxlOwogY2xhc3MgUENUb0NvZGVPcmlnaW5NYXA7
CiBjbGFzcyBSZWdpc3RlckF0T2Zmc2V0TGlzdDsKIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOwot
c3RydWN0IEJ5VmFsSW5mbzsKIAogREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJ
RVIoQ29kZUJsb2NrUmFyZURhdGEpOwogCkBAIC0yNzUsNyArMjc0LDYgQEAgY2xhc3MgQ29kZUJs
b2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIEJhZzxKSVRNdWxJQz4gbV9tdWxJQ3M7CiAg
ICAgICAgIEJhZzxKSVROZWdJQz4gbV9uZWdJQ3M7CiAgICAgICAgIEJhZzxKSVRTdWJJQz4gbV9z
dWJJQ3M7Ci0gICAgICAgIEJhZzxCeVZhbEluZm8+IG1fYnlWYWxJbmZvczsKICAgICAgICAgQmFn
PENhbGxMaW5rSW5mbz4gbV9jYWxsTGlua0luZm9zOwogICAgICAgICBTZW50aW5lbExpbmtlZExp
c3Q8Q2FsbExpbmtJbmZvLCBQYWNrZWRSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPj4gbV9p
bmNvbWluZ0NhbGxzOwogICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8UG9seW1vcnBoaWNDYWxs
Tm9kZSwgUGFja2VkUmF3U2VudGluZWxOb2RlPFBvbHltb3JwaGljQ2FsbE5vZGU+PiBtX2luY29t
aW5nUG9seW1vcnBoaWNDYWxsczsKQEAgLTMxNiwxMCArMzE0LDYgQEAgY2xhc3MgQ29kZUJsb2Nr
IDogcHVibGljIEpTQ2VsbCB7CiAKICAgICAvLyBPKG4pIG9wZXJhdGlvbi4gVXNlIGdldElDU3Rh
dHVzTWFwKCkgdW5sZXNzIHlvdSByZWFsbHkgb25seSBpbnRlbmQgdG8gZ2V0IG9uZSBzdHViIGlu
Zm8uCiAgICAgU3RydWN0dXJlU3R1YkluZm8qIGZpbmRTdHViSW5mbyhDb2RlT3JpZ2luKTsKLSAg
ICAvLyBPKG4pIG9wZXJhdGlvbi4gVXNlIGdldElDU3RhdHVzTWFwKCkgdW5sZXNzIHlvdSByZWFs
bHkgb25seSBpbnRlbmQgdG8gZ2V0IG9uZSBieS12YWwtaW5mby4KLSAgICBCeVZhbEluZm8qIGZp
bmRCeVZhbEluZm8oQ29kZU9yaWdpbik7Ci0KLSAgICBCeVZhbEluZm8qIGFkZEJ5VmFsSW5mbyhC
eXRlY29kZUluZGV4KTsKIAogICAgIENhbGxMaW5rSW5mbyogYWRkQ2FsbExpbmtJbmZvKENvZGVP
cmlnaW4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNT
dGF0dXNNYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5o
CmluZGV4IDdhMDU4YzNkMDI1OTZiZjZlYThmZjlhOGE3MmI0ZGMyYTFkMTg5MjMuLmE3NjhhODVk
YzFiZjA5YjI5ZWI0Yjk5NmZlYTc0YmEyMmQzNTAzMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCkBAIC0zOSwxMiArMzksMTAgQEAgY2xhc3MgSW5C
eVN0YXR1czsKIGNsYXNzIFB1dEJ5U3RhdHVzOwogY2xhc3MgRGVsZXRlQnlTdGF0dXM7CiBjbGFz
cyBTdHJ1Y3R1cmVTdHViSW5mbzsKLXN0cnVjdCBCeVZhbEluZm87CiAKIHN0cnVjdCBJQ1N0YXR1
cyB7CiAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvIHsgbnVsbHB0ciB9OwogICAgIENh
bGxMaW5rSW5mbyogY2FsbExpbmtJbmZvIHsgbnVsbHB0ciB9OwotICAgIEJ5VmFsSW5mbyogYnlW
YWxJbmZvIHsgbnVsbHB0ciB9OwogICAgIENhbGxMaW5rU3RhdHVzKiBjYWxsU3RhdHVzIHsgbnVs
bHB0ciB9OwogICAgIEdldEJ5U3RhdHVzKiBnZXRTdGF0dXMgeyBudWxscHRyIH07CiAgICAgSW5C
eVN0YXR1cyogaW5TdGF0dXMgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDJiNjM2NjYxNjFiMTk3ZDBlNThkY2Vl
YWZjMDgzZTU0MTYzZDI5YmMuLjMwMDA5NmY4MDVkNDhkNjAyMThmNGIzYTU4OGVhNmFhYWFlZTI5
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCkBAIC0zOTU0LDcgKzM5NTQsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0
UHJpdmF0ZU5hbWUoTm9kZSogbm9kZSkKICAgICBzcGVjdWxhdGVTeW1ib2wobm9kZS0+Y2hpbGQy
KCksIHByb3BlcnR5R1BSKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBiYXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHlHUFIpLCB2
YWx1ZVJlZ3MsIFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIFRydXN0ZWRJbW0zMihub2RlLT5wcml2
YXRlRmllbGRQdXRLaW5kKCkudmFsdWUoKSkpOworICAgIGF1dG8gb3BlcmF0aW9uID0gbm9kZS0+
cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVmaW5lKCkgPyBvcGVyYXRpb25QdXRCeVZhbERlZmlu
ZVByaXZhdGVGaWVsZEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbFNldFByaXZhdGVGaWVsZEdl
bmVyaWM7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBiYXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHlHUFIpLCB2
YWx1ZVJlZ3MsIFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIFRydXN0ZWRJbW1QdHIobnVsbHB0cikp
OwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA5MjE2
ZTgyNDdjOTVjYWZhMzZiMDEzNjQwYjkyZmE4MTE2NTMxNWMxLi5iODk2NzhlYjUyMWYzZDc2NGRh
ZDFhNGRlNTJjNzQzNjA5NzlkMGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCkBAIC00MjY5LDggKzQyNjksOCBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dTeW1ib2wobV9ub2RlLT5jaGlsZDIo
KSk7CiAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDMoKSk7
CiAKLSAgICAgICAgdm1DYWxsKFZvaWQsIG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYywK
LSAgICAgICAgICAgIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGJhc2UsIHByb3BlcnR5LCB2
YWx1ZSwgbV9vdXQuY29uc3RJbnRQdHIoMCksIG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5wcml2
YXRlRmllbGRQdXRLaW5kKCkudmFsdWUoKSkpOworICAgICAgICBhdXRvIG9wZXJhdGlvbiA9IG1f
bm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVmaW5lKCkgPyBvcGVyYXRpb25QdXRCeVZh
bERlZmluZVByaXZhdGVGaWVsZEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbFNldFByaXZhdGVG
aWVsZEdlbmVyaWM7CisgICAgICAgIHZtQ2FsbChWb2lkLCBvcGVyYXRpb24sIHdlYWtQb2ludGVy
KGdsb2JhbE9iamVjdCksIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgbV9vdXQuY29uc3RJbnRQdHIo
MCksIG1fb3V0LmNvbnN0SW50UHRyKDApKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVBdG9t
aWNzUmVhZE1vZGlmeVdyaXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA1MGRl
ODU1YjZhYzkwZWU2ZDNkMWM5NjFlNDQ4NDgyMzk1YTQ2MTZmLi4zYTM3YmVlMjNlZTNlNWJlZTY1
Y2ZlMjcwNzQ5ZWEwZTVhYTZmNjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC01
MTcsNyArNTE3LDYgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICBt
X2RlbEJ5VmFsSW5kZXggPSAwOwogICAgIG1faW5zdGFuY2VPZkluZGV4ID0gMDsKICAgICBtX3By
aXZhdGVCcmFuZEFjY2Vzc0luZGV4ID0gMDsKLSAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCA9
IDA7CiAgICAgbV9jYWxsTGlua0luZm9JbmRleCA9IDA7CiAKICAgICB1bnNpZ25lZCBieXRlY29k
ZUNvdW50SGF2aW5nU2xvd0Nhc2UgPSAwOwpAQCAtOTE5LDQ1ICs5MTgsNiBAQCB2b2lkIEpJVDo6
bGluaygpCiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbnN0YW5jZU9mcywgcGF0Y2hCdWZm
ZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMsIHBh
dGNoQnVmZmVyKTsKIAotICAgIGlmIChtX2J5VmFsQ29tcGlsYXRpb25JbmZvLnNpemUoKSkgewot
I2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQotICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCBl
eGNlcHRpb25IYW5kbGVyKHZtKCkuZ2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPigpKTsKLSNlbHNlCi0gICAgICAg
IENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGV4Y2VwdGlvbkhhbmRs
ZXIgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KG1fZXhj
ZXB0aW9uSGFuZGxlcik7Ci0jZW5kaWYKLQotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGJ5VmFs
Q29tcGlsYXRpb25JbmZvIDogbV9ieVZhbENvbXBpbGF0aW9uSW5mbykgewotICAgICAgICAgICAg
UGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVOb3RJbmRleEp1bXAgPSBieVZhbENvbXBpbGF0aW9uSW5m
by5ub3RJbmRleEp1bXA7Ci0gICAgICAgICAgICBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQ
dHJUYWc+IG5vdEluZGV4SnVtcDsKLSAgICAgICAgICAgIGlmIChKdW1wKHBhdGNoYWJsZU5vdElu
ZGV4SnVtcCkuaXNTZXQoKSkKLSAgICAgICAgICAgICAgICBub3RJbmRleEp1bXAgPSBDb2RlTG9j
YXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRl
cm5hbFB0clRhZz4ocGF0Y2hhYmxlTm90SW5kZXhKdW1wKSk7Ci0KLSAgICAgICAgICAgIFBhdGNo
YWJsZUp1bXAgcGF0Y2hhYmxlQmFkVHlwZUp1bXAgPSBieVZhbENvbXBpbGF0aW9uSW5mby5iYWRU
eXBlSnVtcDsKLSAgICAgICAgICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4g
YmFkVHlwZUp1bXA7Ci0gICAgICAgICAgICBpZiAoSnVtcChwYXRjaGFibGVCYWRUeXBlSnVtcCku
aXNTZXQoKSkKLSAgICAgICAgICAgICAgICBiYWRUeXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8
SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFn
PihieVZhbENvbXBpbGF0aW9uSW5mby5iYWRUeXBlSnVtcCkpOwotCi0gICAgICAgICAgICBhdXRv
IGRvbmVUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1
ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLmRv
bmVUYXJnZXQpKTsKLSAgICAgICAgICAgIGF1dG8gbmV4dEhvdFBhdGhUYXJnZXQgPSBDb2RlTG9j
YXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50
ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLm5leHRIb3RQYXRoVGFyZ2V0KSk7Ci0g
ICAgICAgICAgICBhdXRvIHNsb3dQYXRoVGFyZ2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRl
cm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZh
bENvbXBpbGF0aW9uSW5mby5zbG93UGF0aFRhcmdldCkpOwotCi0gICAgICAgICAgICBieVZhbENv
bXBpbGF0aW9uSW5mby5ieVZhbEluZm8tPnNldFVwKAotICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bkhhbmRsZXIsCi0gICAgICAgICAgICAgICAgYnlWYWxDb21waWxhdGlvbkluZm8uYXJyYXlNb2Rl
LAotICAgICAgICAgICAgICAgIGJ5VmFsQ29tcGlsYXRpb25JbmZvLmFycmF5UHJvZmlsZSwKLSAg
ICAgICAgICAgICAgICBkb25lVGFyZ2V0LAotICAgICAgICAgICAgICAgIG5leHRIb3RQYXRoVGFy
Z2V0LAotICAgICAgICAgICAgICAgIHNsb3dQYXRoVGFyZ2V0KTsKLSAgICAgICAgICAgIGlmIChK
SVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7Ci0gICAgICAgICAgICAg
ICAgYnlWYWxDb21waWxhdGlvbkluZm8uYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcFRhcmdldCA9
IHNsb3dQYXRoVGFyZ2V0LnJldGFnZ2VkPEpJVFN0dWJSb3V0aW5lUHRyVGFnPigpOwotICAgICAg
ICAgICAgICAgIGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRh
cmdldCA9IHNsb3dQYXRoVGFyZ2V0LnJldGFnZ2VkPEpJVFN0dWJSb3V0aW5lUHRyVGFnPigpOwot
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5m
by5ieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wID0gbm90SW5kZXhKdW1wOwotICAgICAgICAgICAg
ICAgIGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcCA9IGJhZFR5
cGVKdW1wOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCiAgICAgZm9yIChhdXRv
JiBjb21waWxhdGlvbkluZm8gOiBtX2NhbGxDb21waWxhdGlvbkluZm8pIHsKICAgICAgICAgQ2Fs
bExpbmtJbmZvJiBpbmZvID0gKmNvbXBpbGF0aW9uSW5mby5jYWxsTGlua0luZm87CiAgICAgICAg
IGluZm8uc2V0Q29kZUxvY2F0aW9ucygKQEAgLTEwNjAsNyArMTAyMCw3IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCkKICAgICAgICAganVtcFRvRXhjZXB0aW9u
SGFuZGxlcih2bSgpKTsKICAgICB9CiAKLSAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5
KCkgfHwgbV9ieVZhbENvbXBpbGF0aW9uSW5mby5zaXplKCkpIHsKKyAgICBpZiAoIW1fZXhjZXB0
aW9uQ2hlY2tzLmVtcHR5KCkpIHsKICAgICAgICAgbV9leGNlcHRpb25IYW5kbGVyID0gbGFiZWwo
KTsKICAgICAgICAgbV9leGNlcHRpb25DaGVja3MubGluayh0aGlzKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgKaW5kZXggNmMzNGFjNjczYTI4MmM4OGJhMWViY2ZjNGFjZTE4NTVmYTAyMzgwMS4u
NzY3ZjFlZjRiZjMxZmEyYzRhMzRlMTU2ZGE4YjU3ODYyMTNiMTg4MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCkBAIC0zNyw3ICszNyw2IEBACiAKICNkZWZpbmUgQVNTRVJUX0pJVF9PRkZTRVQo
YWN0dWFsLCBleHBlY3RlZCkgQVNTRVJUX1dJVEhfTUVTU0FHRShhY3R1YWwgPT0gZXhwZWN0ZWQs
ICJKSVQgT2Zmc2V0IFwiJXNcIiBzaG91bGQgYmUgJWQsIG5vdCAlZC5cbiIsICNleHBlY3RlZCwg
c3RhdGljX2Nhc3Q8aW50PihleHBlY3RlZCksIHN0YXRpY19jYXN0PGludD4oYWN0dWFsKSk7CiAK
LSNpbmNsdWRlICJCeVZhbEluZm8uaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRl
ICJDb21tb25TbG93UGF0aHMuaCIKICNpbmNsdWRlICJKSVREaXNhc3NlbWJsZXIuaCIKQEAgLTE0
OSw0MiArMTQ4LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICAgICB9OwogCi0gICAg
c3RydWN0IEJ5VmFsQ29tcGlsYXRpb25JbmZvIHsKLSAgICAgICAgQnlWYWxDb21waWxhdGlvbklu
Zm8oKSB7IH0KLSAgICAgICAgCi0gICAgICAgIEJ5VmFsQ29tcGlsYXRpb25JbmZvKEJ5VmFsSW5m
byogYnlWYWxJbmZvLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIE1hY3JvQXNzZW1ibGVy
OjpQYXRjaGFibGVKdW1wIG5vdEluZGV4SnVtcCwgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1
bXAgYmFkVHlwZUp1bXAsIEpJVEFycmF5TW9kZSBhcnJheU1vZGUsIEFycmF5UHJvZmlsZSogYXJy
YXlQcm9maWxlLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZG9uZVRhcmdldCwgTWFjcm9Bc3NlbWJs
ZXI6OkxhYmVsIG5leHRIb3RQYXRoVGFyZ2V0KQotICAgICAgICAgICAgOiBieVZhbEluZm8oYnlW
YWxJbmZvKQotICAgICAgICAgICAgLCBieXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpCi0gICAg
ICAgICAgICAsIG5vdEluZGV4SnVtcChub3RJbmRleEp1bXApCi0gICAgICAgICAgICAsIGJhZFR5
cGVKdW1wKGJhZFR5cGVKdW1wKQotICAgICAgICAgICAgLCBhcnJheU1vZGUoYXJyYXlNb2RlKQot
ICAgICAgICAgICAgLCBhcnJheVByb2ZpbGUoYXJyYXlQcm9maWxlKQotICAgICAgICAgICAgLCBk
b25lVGFyZ2V0KGRvbmVUYXJnZXQpCi0gICAgICAgICAgICAsIG5leHRIb3RQYXRoVGFyZ2V0KG5l
eHRIb3RQYXRoVGFyZ2V0KQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBCeVZhbENv
bXBpbGF0aW9uSW5mbyhCeVZhbEluZm8qIGJ5VmFsSW5mbywgQnl0ZWNvZGVJbmRleCBieXRlY29k
ZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBub3RJbmRleEp1bXAsIE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbCBkb25lVGFyZ2V0LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbmV4dEhv
dFBhdGhUYXJnZXQpCi0gICAgICAgICAgICA6IGJ5VmFsSW5mbyhieVZhbEluZm8pCi0gICAgICAg
ICAgICAsIGJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkKLSAgICAgICAgICAgICwgbm90SW5k
ZXhKdW1wKG5vdEluZGV4SnVtcCkKLSAgICAgICAgICAgICwgZG9uZVRhcmdldChkb25lVGFyZ2V0
KQotICAgICAgICAgICAgLCBuZXh0SG90UGF0aFRhcmdldChuZXh0SG90UGF0aFRhcmdldCkKLSAg
ICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgQnlWYWxJbmZvKiBieVZhbEluZm87Ci0gICAg
ICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleDsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OlBhdGNoYWJsZUp1bXAgbm90SW5kZXhKdW1wOwotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0
Y2hhYmxlSnVtcCBiYWRUeXBlSnVtcDsKLSAgICAgICAgSklUQXJyYXlNb2RlIGFycmF5TW9kZTsK
LSAgICAgICAgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGU7Ci0gICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpMYWJlbCBkb25lVGFyZ2V0OwotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbmV4
dEhvdFBhdGhUYXJnZXQ7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBzbG93UGF0aFRh
cmdldDsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgcmV0dXJuQWRkcmVzczsKLSAgICB9
OwotCiAgICAgc3RydWN0IENhbGxDb21waWxhdGlvbkluZm8gewogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6TGFiZWwgc2xvd1BhdGhTdGFydDsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVs
IGRvbmVMb2NhdGlvbjsKQEAgLTIyNCwxMyArMTg3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiBKSVQodm0sIGNvZGVCbG9jaywgYnl0ZWNvZGVPZmZz
ZXQpLnByaXZhdGVDb21waWxlKGVmZm9ydCk7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAg
IHN0YXRpYyB2b2lkIGNvbXBpbGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChWTSYgdm0sIENv
ZGVCbG9jayogY29kZUJsb2NrLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0
ciByZXR1cm5BZGRyZXNzLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKLSAgICAg
ICAgewotICAgICAgICAgICAgSklUIGppdCh2bSwgY29kZUJsb2NrKTsKLSAgICAgICAgICAgIGpp
dC5tX2J5dGVjb2RlSW5kZXggPSBieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXg7Ci0gICAgICAgICAg
ICBqaXQucHJpdmF0ZUNvbXBpbGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChieVZhbEluZm8s
IHJldHVybkFkZHJlc3MsIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIH0KIAogICAgICAgICBzdGF0
aWMgdW5zaWduZWQgZnJhbWVSZWdpc3RlckNvdW50Rm9yKENvZGVCbG9jayopOwogICAgICAgICBz
dGF0aWMgaW50IHN0YWNrUG9pbnRlck9mZnNldEZvcihDb2RlQmxvY2sqKTsKQEAgLTI0NCw4ICsy
MDAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVNsb3dD
YXNlcygpOwogICAgICAgICB2b2lkIGxpbmsoKTsKICAgICAgICAgQ29tcGlsYXRpb25SZXN1bHQg
cHJpdmF0ZUNvbXBpbGUoSklUQ29tcGlsYXRpb25FZmZvcnQpOwotICAgICAgICAKLSAgICAgICAg
dm9pZCBwcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKEJ5VmFsSW5mbyos
IFJldHVybkFkZHJlc3NQdHIsIENhY2hlYWJsZUlkZW50aWZpZXIpOwogCiAgICAgICAgIC8vIEFk
ZCBhIGNhbGwgb3V0IGZyb20gSklUIGNvZGUsIHdpdGhvdXQgYW4gZXhjZXB0aW9uIGNoZWNrLgog
ICAgICAgICBDYWxsIGFwcGVuZENhbGwoY29uc3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFn
PiBmdW5jdGlvbikKQEAgLTM2MywxNCArMzE3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogICAgICAgICBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZh
dGVGaWVsZFB1dEtpbmQoT3ApOwogCi0gICAgICAgIC8vIElkZW50aWZpZXIgY2hlY2sgaGVscGVy
IGZvciBHZXRCeVZhbCBhbmQgUHV0QnlWYWwuCi0gICAgICAgIHZvaWQgZW1pdEJ5VmFsSWRlbnRp
ZmllckNoZWNrKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsKLQotICAgICAgICBKSVRQdXRCeUlkR2Vu
ZXJhdG9yIGVtaXRQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChPcFB1dFByaXZhdGVOYW1lLCBD
YWNoZWFibGVJZGVudGlmaWVyLCBKdW1wTGlzdCYgZG9uZUNhc2VzLCBKdW1wTGlzdCYgc2xvd0Nh
c2VzKTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgSklUUHV0QnlJ
ZEdlbmVyYXRvciBlbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AsIFB1dEtpbmQsIENhY2hlYWJs
ZUlkZW50aWZpZXIsIEp1bXBMaXN0JiBkb25lQ2FzZXMsIEp1bXBMaXN0JiBzbG93Q2FzZXMpOwot
CiAgICAgICAgIGVudW0gRmluYWxPYmplY3RNb2RlIHsgTWF5QmVGaW5hbCwgS25vd25Ob3RGaW5h
bCB9OwogCiAgICAgICAgIHZvaWQgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihWaXJ0dWFsUmVnaXN0
ZXIgc3JjLCBKU1ZhbHVlUmVncyBkc3QpOwpAQCAtMTAxMiw3ICs5NTgsNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgVmVjdG9yPEpJVERlbEJ5VmFsR2VuZXJhdG9yPiBtX2RlbEJ5VmFsczsK
ICAgICAgICAgVmVjdG9yPEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+IG1faW5zdGFuY2VPZnM7CiAg
ICAgICAgIFZlY3RvcjxKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I+IG1fcHJpdmF0ZUJy
YW5kQWNjZXNzZXM7Ci0gICAgICAgIFZlY3RvcjxCeVZhbENvbXBpbGF0aW9uSW5mbz4gbV9ieVZh
bENvbXBpbGF0aW9uSW5mbzsKICAgICAgICAgVmVjdG9yPENhbGxDb21waWxhdGlvbkluZm8+IG1f
Y2FsbENvbXBpbGF0aW9uSW5mbzsKICAgICAgICAgVmVjdG9yPEp1bXBUYWJsZT4gbV9qbXBUYWJs
ZTsKIApAQCAtMTA0MCw3ICs5ODUsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWdu
ZWQgbV9kZWxCeUlkSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2luc3Rh
bmNlT2ZJbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5k
QWNjZXNzSW5kZXggeyBVSU5UX01BWCB9OwotICAgICAgICB1bnNpZ25lZCBtX2J5VmFsSW5zdHJ1
Y3Rpb25JbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1fY2FsbExpbmtJbmZv
SW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2J5dGVjb2RlQ291bnRIYXZp
bmdTbG93Q2FzZSB7IDAgfTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAppbmRleCA3ZmQwNDYzMjgxZTM1ZGZlNTVmYWUyMDYxMDBhMTVkYTk3
MTlhMjk4Li4xZTVhY2Q0ODM4OGI4NzBjNzBlMjBkMzVlZDVkM2U5OTlhNGI4NTIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTEzMTUsMTEyICsx
MzE1LDEyMCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ2hlY2tQcml2YXRl
QnJhbmRHZW5lcmljLCB2b2lkLCAoSlNHbG9iYWxPYmplYwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25QdXRQcml2YXRlTmFtZU9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5
VmFsSW5mbywgUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5kKSkKK3RlbXBsYXRlPGJvb2wgZGVm
aW5lPgorc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBwdXRQcml2YXRlTmFtZU9wdGltaXplKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVl
IGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQsIEpTVmFsdWUgdmFsdWUsIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbykKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0g
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7Ci0KLSAgICBKU1ZhbHVlIGJh
c2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKLSAgICBKU1ZhbHVl
IHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKLSAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0KICAgICBhdXRvIGJh
c2VPYmplY3QgPSBiYXNlVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBz
dWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NF
UlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKIAotICAgIE9wdGltaXphdGlvblJlc3VsdCBvcHRpbWl6
YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok5vdE9wdGltaXplZDsKKyAgICAvLyBQ
cml2YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3aXRoaW4gY2xhc3MgbGV4aWNhbCBz
Y29wZQorICAgIC8vIGFuZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdheXMgaW4gc3RyaWN0IG1vZGUK
KyAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHVi
SW5mby0+YWNjZXNzVHlwZSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBDb21tb25TbG93
UGF0aHM6Om9yaWdpbmFsU3RydWN0dXJlQmVmb3JlUHV0KHZtLCBiYXNlVmFsdWUpOworICAgIGNv
bnN0ZXhwciBib29sIGlzU3RyaWN0TW9kZSA9IHRydWU7CisgICAgUHV0UHJvcGVydHlTbG90IHNs
b3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICBpZiBjb25zdGV4cHIgKGRlZmluZSkK
KyAgICAgICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgZWxzZQorICAgICAgICBiYXNlT2JqZWN0LT5z
ZXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgaWYgKGFjY2Vz
c1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKQor
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkgJiYgQ2FjaGVh
YmxlSWRlbnRpZmllcjo6aXNDYWNoZWFibGVJZGVudGlmaWVyQ2VsbChzdWJzY3JpcHQpKSB7Ci0g
ICAgICAgIEFTU0VSVChzdWJzY3JpcHQuaXNTeW1ib2woKSk7Ci0gICAgICAgIEFTU0VSVChjYWxs
RnJhbWUtPmJ5dGVjb2RlSW5kZXgoKSAhPSBCeXRlY29kZUluZGV4KDApKTsKLSAgICAgICAgQVNT
RVJUKCFieVZhbEluZm8tPnN0dWJSb3V0aW5lKTsKLSAgICAgICAgaWYgKGJ5VmFsSW5mby0+c2Vl
bikgewotICAgICAgICAgICAgaWYgKGJ5VmFsSW5mby0+Y2FjaGVkSWQudWlkKCkgPT0gcHJvcGVy
dHlOYW1lKSB7Ci0gICAgICAgICAgICAgICAgSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRo
Q2FjaGVkSWQodm0sIGNvZGVCbG9jaywgYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyKE9VUl9S
RVRVUk5fQUREUkVTUyksIGJ5VmFsSW5mby0+Y2FjaGVkSWQpOwotICAgICAgICAgICAgICAgIG9w
dGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6T3B0aW1pemVkOwotICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBTZWVtIGxpa2UgYSBnZW5lcmljIHBy
b3BlcnR5IGFjY2VzcyBzaXRlLgotICAgICAgICAgICAgICAgIG9wdGltaXphdGlvblJlc3VsdCA9
IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBs
b2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgICAgIGJ5VmFsSW5mby0+c2Vl
biA9IHRydWU7Ci0gICAgICAgICAgICAgICAgYnlWYWxJbmZvLT5jYWNoZWRJZCA9IENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21DZWxsKHN1YnNjcmlwdC5hc0NlbGwoKSk7Ci0gICAgICAg
ICAgICAgICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpTZWVuT25j
ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVC
bG9jaywgc3Vic2NyaXB0LmFzQ2VsbCgpKTsKLSAgICAgICAgfQorICAgICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tQ2Vs
bChzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2Fj
aGluZ0J5KHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSwgaWRlbnRpZmllcikpCisgICAgICAgICAg
ICByZXBhdGNoUHV0QnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgc3RydWN0
dXJlLCBpZGVudGlmaWVyLCBzbG90LCAqc3R1YkluZm8sIFB1dEJ5S2luZDo6QnlWYWwsIGRlZmlu
ZSA/IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZERlZmluZSA6IFB1dEtpbmQ6OkRpcmVjdFBy
aXZhdGVGaWVsZFNldCk7CiAgICAgfQorfQogCi0gICAgaWYgKG9wdGltaXphdGlvblJlc3VsdCAh
PSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok9wdGltaXplZCAmJiBvcHRpbWl6YXRpb25SZXN1bHQgIT0g
T3B0aW1pemF0aW9uUmVzdWx0OjpTZWVuT25jZSkgewotICAgICAgICAvLyBJZiB3ZSB0YWtlIHNs
b3cgcGF0aCBtb3JlIHRoYW4gMTAgdGltZXMgd2l0aG91dCBwYXRjaGluZyB0aGVuIG1ha2Ugc3Vy
ZSB3ZQotICAgICAgICAvLyBuZXZlciBtYWtlIHRoYXQgbWlzdGFrZSBhZ2Fpbi4gVGhpcyBnaXZl
cyAxMCBpdGVyYXRpb25zIHdvcnRoIG9mIG9wcG9ydHVuaXR5Ci0gICAgICAgIC8vIGZvciB1cyB0
byBvYnNlcnZlIHRoYXQgdGhlIHB1dF9wcml2YXRlX25hbWUgbWF5IGJlIHBvbHltb3JwaGljLgot
ICAgICAgICAvLyBXZSBjb3VudCB1cCBzbG93UGF0aENvdW50IGV2ZW4gaWYgdGhlIHJlc3VsdCBp
cyBHaXZlVXAuCi0gICAgICAgIGlmICgrK2J5VmFsSW5mby0+c2xvd1BhdGhDb3VudCA+PSAxMCkK
LSAgICAgICAgICAgIG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6R2l2
ZVVwOwotICAgIH0KK3RlbXBsYXRlPGJvb2wgZGVmaW5lPgorc3RhdGljIEFMV0FZU19JTkxJTkUg
dm9pZCBwdXRQcml2YXRlTmFtZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIGlmIChvcHRpbWl6YXRpb25SZXN1bHQgPT0gT3B0aW1pemF0aW9u
UmVzdWx0OjpHaXZlVXApIHsKLSAgICAgICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUu
Ci0gICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKLSAgICAgICAgaWYgKGNv
ZGVCbG9jay0+dXNlRGF0YUlDKCkpCi0gICAgICAgICAgICBieVZhbEluZm8tPm1fc2xvd09wZXJh
dGlvbiA9IG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYzsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIoT1VS
X1JFVFVSTl9BRERSRVNTKSwgb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljKTsKLSAgICB9
CisgICAgYXV0byBiYXNlT2JqZWN0ID0gYmFzZVZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIGF1dG8gcHJv
cGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBF
WENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CiAKICAgICBzY29wZS5yZWxlYXNl
KCk7Ci0gICAgCisKICAgICAvLyBQcml2YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3
aXRoaW4gY2xhc3MgbGV4aWNhbCBzY29wZQogICAgIC8vIGFuZCBjbGFzcyBtZXRob2RzIGFyZSBh
bHdheXMgaW4gc3RyaWN0IG1vZGUKLSAgICBjb25zdCBib29sIGlzU3RyaWN0TW9kZSA9IHRydWU7
CisgICAgY29uc3RleHByIGJvb2wgaXNTdHJpY3RNb2RlID0gdHJ1ZTsKICAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwotICAgIGlmIChwdXRLaW5kLmlz
RGVmaW5lKCkpCisgICAgaWYgY29uc3RleHByIChkZWZpbmUpCiAgICAgICAgIGJhc2VPYmplY3Qt
PmRlZmluZVByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOwogICAgIGVsc2UKICAgICAgICAgYmFzZU9iamVjdC0+c2V0UHJpdmF0ZUZpZWxkKGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLS8vIFdlIG5lZWQgdG8g
bWF0Y2ggdGhlIHNpZ25hdHVyZSBvZiBvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplCi1K
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljLCB2
b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgUHJpdmF0ZUZpZWxkUHV0S2lu
ZCBwcml2YXRlRmllbGRQdXRLaW5kKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25QdXRCeVZhbERlZmluZVByaXZhdGVGaWVsZE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEFycmF5UHJvZmlsZSopKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2Rl
QmxvY2soKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
QmFzZVZhbHVlKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkU3Vic2NyaXB0KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CisgICAgcHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZTx0cnVlPihnbG9iYWxPYmplY3Qs
IGNvZGVCbG9jaywgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBzdHViSW5mbyk7Cit9CiAK
K0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZhbFNldFByaXZhdGVGaWVs
ZE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IEFycmF5UHJvZmlsZSopKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwogICAg
IEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOwog
ICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQp
OwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAg
ICBwdXRQcml2YXRlTmFtZU9wdGltaXplPGZhbHNlPihnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywg
YmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlLCBzdHViSW5mbyk7Cit9CiAKLSAgICBhdXRvIGJh
c2VPYmplY3QgPSBiYXNlVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvblB1dEJ5VmFsRGVmaW5lUHJpdmF0ZUZpZWxkR2VuZXJpYywgdm9pZCwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBBcnJheVByb2ZpbGUqKSkKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
c3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKLSAgICBFWENFUFRJT05fQVNT
RVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogCi0gICAgc2NvcGUucmVsZWFzZSgpOworICAgIGlm
IChzdHViSW5mbykKKyAgICAgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAKLSAg
ICAvLyBQcml2YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3aXRoaW4gY2xhc3MgbGV4
aWNhbCBzY29wZQotICAgIC8vIGFuZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdheXMgaW4gc3RyaWN0
IG1vZGUKLSAgICBjb25zdCBib29sIGlzU3RyaWN0TW9kZSA9IHRydWU7Ci0gICAgUHV0UHJvcGVy
dHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKLSAgICBpZiAocHJpdmF0ZUZp
ZWxkUHV0S2luZC5pc0RlZmluZSgpKQotICAgICAgICBiYXNlT2JqZWN0LT5kZWZpbmVQcml2YXRl
RmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKLSAgICBlbHNl
Ci0gICAgICAgIGJhc2VPYmplY3QtPnNldFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIHB1dFByaXZhdGVOYW1lPHRydWU+KGdsb2JhbE9i
amVjdCwgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIHZhbHVlKTsKK30KKworSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFsU2V0UHJpdmF0ZUZpZWxkR2VuZXJpYywgdm9pZCwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBBcnJheVByb2ZpbGUqKSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKworICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOworICAgIEpTVmFsdWUg
c3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOworICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKworICAgIGlmIChzdHVi
SW5mbykKKyAgICAgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAKLSAgICBpZiAo
YnlWYWxJbmZvKQotICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CisgICAg
cHV0UHJpdmF0ZU5hbWU8ZmFsc2U+KGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBzdWJzY3JpcHQs
IHZhbHVlKTsKIH0KIAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNhbGxFdmFs
LCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbGVlRnJhbWUsIEVDTUFNb2RlIGVjbWFNb2RlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggZWZiZDg4NzM1NDJmYzNmNGJlODNlMDZiZTA2MjU3
YmZjMjljYzQ2Mi4uZjcwNDQwNWVkYWVkN2EwNjE4NGU5ODc4MjcwNDJjODVkMGY3NzEwNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTY0LDcgKzY0LDYg
QEAgY2xhc3MgU3ltYm9sVGFibGU7CiBjbGFzcyBWTTsKIGNsYXNzIFdhdGNocG9pbnRTZXQ7CiAK
LXN0cnVjdCBCeVZhbEluZm87CiBzdHJ1Y3QgRUNNQU1vZGU7CiBzdHJ1Y3QgSW5saW5lQ2FsbEZy
YW1lOwogc3RydWN0IEluc3RydWN0aW9uOwpAQCAtODAsNyArNzksNiBAQCB0eXBlZGVmIGNoYXIq
IFVudXNlZFB0cjsKICAgICBBcDogQXJyYXlQcm9maWxlKgogICAgIEFycDogQmluYXJ5QXJpdGhQ
cm9maWxlKgogICAgIEI6IEJ1dHRlcmZseSoKLSAgICBCeTogQnlWYWxJbmZvKgogICAgIEM6IEpT
Q2VsbCoKICAgICBDYjogQ29kZUJsb2NrKgogICAgIENsaTogQ2FsbExpbmtJbmZvKgpAQCAtMjAx
LDkgKzE5OSw2IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ2hlY2tQcml2
YXRlQnJhbmRPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqCiBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvblNldFByaXZhdGVCcmFuZEdlbmVyaWMsIHZvaWQsIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5k
R2VuZXJpYywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpKTsKIAotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbElu
Zm8qLCBQcml2YXRlRmllbGRQdXRLaW5kKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwg
UHJpdmF0ZUZpZWxkUHV0S2luZCkpOwotCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvblB1dEJ5VmFsTm9uU3RyaWN0T3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFN0cnVjdHVyZVN0
dWJJbmZvKiwgQXJyYXlQcm9maWxlKikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25QdXRCeVZhbFN0cmljdE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEFycmF5UHJvZmlsZSopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uRGlyZWN0UHV0QnlWYWxOb25TdHJpY3RPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgU3RydWN0
dXJlU3R1YkluZm8qLCBBcnJheVByb2ZpbGUqKSk7CkBAIC0yMTIsNiArMjA3LDEwIEBAIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3RHZW5lcmljLCB2
b2lkLCAoSlNHbG9iYWxPYmplCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1
dEJ5VmFsU3RyaWN0R2VuZXJpYywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgU3RydWN0dXJlU3R1YkluZm8qLCBB
cnJheVByb2ZpbGUqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkRpcmVj
dFB1dEJ5VmFsU3RyaWN0R2VuZXJpYywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgU3RydWN0dXJlU3R1YkluZm8q
LCBBcnJheVByb2ZpbGUqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkRp
cmVjdFB1dEJ5VmFsTm9uU3RyaWN0R2VuZXJpYywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgU3RydWN0dXJlU3R1
YkluZm8qLCBBcnJheVByb2ZpbGUqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvblB1dEJ5VmFsRGVmaW5lUHJpdmF0ZUZpZWxkT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFN0
cnVjdHVyZVN0dWJJbmZvKiwgQXJyYXlQcm9maWxlKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25QdXRCeVZhbERlZmluZVByaXZhdGVGaWVsZEdlbmVyaWMsIHZvaWQsIChK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIFN0cnVjdHVyZVN0dWJJbmZvKiwgQXJyYXlQcm9maWxlKikpOworSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZhbFNldFByaXZhdGVGaWVsZE9wdGltaXplLCB2
b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEFycmF5UHJvZmlsZSopKTsKK0pTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxTZXRQcml2YXRlRmllbGRHZW5l
cmljLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEFycmF5UHJvZmlsZSopKTsK
IAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25DYWxsRXZhbCwgRW5jb2RlZEpT
VmFsdWUsIChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIEVDTUFNb2RlKSk7CiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkxpbmtDYWxsLCBTbG93UGF0aFJldHVyblR5cGUs
IChDYWxsRnJhbWUqLCBKU0dsb2JhbE9iamVjdCosIENhbGxMaW5rSW5mbyopKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggNzk0MDIx
ZGFkM2U0NmU5NmY3MWRmZDE4MDY3MTlkMzVlOTZkNWQzOS4uNTE5ZTA5OTg5NjRhOWRiNjkwY2U4
ODE4YjU2ZGQxOGQ3NTMwYmVjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTQ2Nyw0OSArNDY3LDYgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGVtaXRXcml0ZUJhcnJpZXIoYmFzZSwgU2hvdWxkRmlsdGVyQmFzZSk7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIE9wPgotSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhD
YWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLCBDYWNoZWFibGVJZGVudGlmaWVy
IHByb3BlcnR5TmFtZSwgSnVtcExpc3QmIGRvbmVDYXNlcywgSnVtcExpc3QmIHNsb3dDYXNlcykK
LXsKLSAgICAvLyBiYXNlOiByZWdUMAotICAgIC8vIHByb3BlcnR5OiByZWdUMQotICAgIC8vIHNj
cmF0Y2g6IHJlZ1QyCi0KLSAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFz
ZTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwotCi0gICAg
c2xvd0Nhc2VzLmFwcGVuZChicmFuY2hJZk5vdENlbGwocmVnVDEpKTsKLSAgICBlbWl0QnlWYWxJ
ZGVudGlmaWVyQ2hlY2socmVnVDEsIHJlZ1QxLCBwcm9wZXJ0eU5hbWUsIHNsb3dDYXNlcyk7Ci0K
LSAgICAvLyBXcml0ZSBiYXJyaWVyIGJyZWFrcyB0aGUgcmVnaXN0ZXJzLiBTbyBhZnRlciBpc3N1
aW5nIHRoZSB3cml0ZSBiYXJyaWVyLAotICAgIC8vIHJlbG9hZCB0aGUgcmVnaXN0ZXJzLgotICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKGJhc2UsIHJlZ1QwLCB2YWx1ZSwgcmVnVDEpOwotCi0g
ICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBl
OjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdz
KHJlZ1QxKSwgcmVnVDMsIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQpOwotICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0
cnVjdHVyZSB3aXRob3V0IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNlIGlzIGNlbGwuCi0gICAgLy8g
RklYTUU6IFVzZSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyIGluIEJhc2VsaW5lIGVmZmVjdGl2
ZWx5IHRvIHJlZHVjZSBjb2RlIHNpemUuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwOTM5NQotICAgIGVtaXRXcml0ZUJhcnJpZXIoYmFzZSwgU2hvdWxk
RmlsdGVyQmFzZSk7Ci0gICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwotCi0gICAgTGFiZWwg
Y29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0gICAgZ2VuLnNsb3dQYXRoSnVtcCgpLmxpbmsodGhp
cyk7Ci0KLSAgICBDYWxsIGNhbGw7Ci0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBl
OjpCYXNlbGluZUpJVCkpIHsKLSAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlv
biA9IGdlbi5zbG93UGF0aEZ1bmN0aW9uKCk7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihn
ZW4uc3R1YkluZm8oKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgICAgICBjYWxsT3BlcmF0
aW9uPGRlY2x0eXBlKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCkpPihBZGRyZXNzKEdQUkluZm86Om5v
bkFyZ0dQUjAsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIFRy
dXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6bm9uQXJn
R1BSMCwgcmVnVDEsIHJlZ1QwLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKLSAgICB9IGVsc2UK
LSAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgVHJ1
c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwg
cmVnVDEsIHJlZ1QwLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKLSAgICBnZW4ucmVwb3J0U2xv
d1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwotICAgIGRvbmVDYXNlcy5hcHBlbmQoanVt
cCgpKTsKLQotICAgIHJldHVybiBnZW47Ci19Ci0KIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRf
YnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgYm9vbCBpc0RpcmVjdCA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSA9PSBvcF9wdXRfYnlfdmFsX2RpcmVjdDsKQEAgLTYx
MSw3NiArNTY4LDczIEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOwogICAgIFZpcnR1YWxSZWdp
c3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0
eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7Ci0gICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2Nv
ZGVCbG9jay0+YWRkQnlWYWxJbmZvKG1fYnl0ZWNvZGVJbmRleCk7CisgICAgVmlydHVhbFJlZ2lz
dGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYmFzZSwgcmVnVDApOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJl
Z1QxKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMik7CiAKICAgICBl
bWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwogCi0gICAgUGF0Y2hhYmxl
SnVtcCBmYXN0UGF0aEptcDsKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJh
c2VsaW5lSklUKSkKLSAgICAgICAgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MoJmJ5VmFsSW5mby0+
bV9ub3RJbmRleEp1bXBUYXJnZXQpLCBKSVRTdHViUm91dGluZVB0clRhZyk7Ci0gICAgZWxzZSB7
Ci0gICAgICAgIGZhc3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOwotICAgICAgICBhZGRTbG93
Q2FzZShmYXN0UGF0aEptcCk7Ci0gICAgfQotICAgIAotICAgIExhYmVsIGRvbmUgPSBsYWJlbCgp
OwotICAgIAotICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm8uYXBwZW5kKEJ5VmFsQ29tcGlsYXRp
b25JbmZvKGJ5VmFsSW5mbywgbV9ieXRlY29kZUluZGV4LCBmYXN0UGF0aEptcCwgZG9uZSwgZG9u
ZSkpOworICAgIEpJVFB1dEJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ss
IEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6UHV0QnlWYWwsIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIEpTVmFsdWVSZWdzKHJlZ1QyKSwgSW52YWxpZEdQUlJl
ZywgcmVnVDQpOworICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3ltYm9sID0gdHJ1ZTsK
KyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VE
YXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xv
d1BhdGhKdW1wKCkpOworICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKKyAgICBtX3B1
dEJ5VmFscy5hcHBlbmQoZ2VuKTsKKworICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJl
IHdpdGhvdXQgd3JpdGUtYmFycmllciBpZiBhIGJhc2UgaXMgY2VsbC4KKyAgICAvLyBGSVhNRTog
VXNlIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8g
cmVkdWNlIGNvZGUgc2l6ZS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA5Mzk1CisgICAgZW1pdFdyaXRlQmFycmllcihiYXNlLCBTaG91bGRGaWx0ZXJC
YXNlKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcFB1dFByaXZhdGVOYW1lPigpOwotICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9i
eVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uYnlWYWxJbmZvOwog
ICAgIFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCA9IGJ5dGVjb2RlLm1fcHV0S2luZDsKIAor
ICAgIEpJVFB1dEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX3B1dEJ5VmFsc1ttX3B1dEJ5VmFsSW5k
ZXgrK107CisKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotICAgIExhYmVsIHNsb3dQYXRo
ID0gbGFiZWwoKTsKIAorICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisgICAg
YXV0byBvcGVyYXRpb24gPSBwdXRLaW5kLmlzRGVmaW5lKCkgPyBvcGVyYXRpb25QdXRCeVZhbERl
ZmluZVByaXZhdGVGaWVsZE9wdGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxTZXRQcml2YXRlRmll
bGRPcHRpbWl6ZTsKICNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAgLy8gVGhleSBh
cmUgY29uZmlndXJlZCBpbiB0aGUgZmFzdCBwYXRoIGFuZCBub3QgY2xvYmJlcmVkLgogICAgIGNv
bnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOwogICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJv
cGVydHlHUFIgPSByZWdUMTsKICAgICBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gcmVnVDI7
Ci0KLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUdQUik7
Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3Byb3BlcnR5LCBwcm9wZXJ0
eUdQUik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB2YWx1
ZUdQUik7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRQcml2YXRl
TmFtZU9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSks
IGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgYnlWYWxJbmZvLCBUcnVzdGVkSW1tMzIo
cHV0S2luZC52YWx1ZSgpKSk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRp
b24sIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgYmFzZUdQUiwg
cHJvcGVydHlHUFIsIHZhbHVlR1BSLCBnZW4uc3R1YkluZm8oKSwgVHJ1c3RlZEltbVB0cihudWxs
cHRyKSk7CiAjZWxzZQogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0
ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVj
b2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAKLSAgICBjb25z
dGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOwotICAgIG1vdmUo
VHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOworICAgIC8v
IGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOworICAgIC8vIGNvbnN0ZXhwciBHUFJS
ZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKKyAgICAvLyBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BS
ID0gcmVnVDI7CisgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHJlZ1QzOworICAg
IGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUNDsKIAotICAgIGNvbnN0
ZXhwciBHUFJSZWcgYmFzZUdQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVn
IHByb3BlcnR5R1BSID0gYXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdmFsdWVH
UFIgPSBhcmd1bWVudEdQUjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBieVZhbEluZm9HUFIgPSBh
cmd1bWVudEdQUjQ7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwdXRLaW5kR1BSID0gYXJndW1lbnRH
UFI1OwotCi0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VH
UFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSwgcHJv
cGVydHlHUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV92YWx1ZSwg
dmFsdWVHUFIpOwotICAgIG1vdmUoVHJ1c3RlZEltbVB0cihieVZhbEluZm8pLCBieVZhbEluZm9H
UFIpOwotICAgIG1vdmUoVHJ1c3RlZEltbTMyKHB1dEtpbmQudmFsdWUoKSksIHB1dEtpbmRHUFIp
OworICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRH
UFIpOworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIHN0dWJJbmZvR1BS
KTsKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X3ByaXZh
dGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsK
IAogICAgIENhbGwgY2FsbDsKICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJh
c2VsaW5lSklUKSkKLSAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRp
b25QdXRQcml2YXRlTmFtZU9wdGltaXplOworICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93
T3BlcmF0aW9uID0gb3BlcmF0aW9uOwogICAgIGVsc2UKLSAgICAgICAgY2FsbCA9IGFwcGVuZENh
bGwob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7CisgICAgICAgIGNhbGwgPSBhcHBl
bmRDYWxsKG9wZXJhdGlvbik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1Yihj
aGVja0V4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICNlbmRp
ZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKIAotICAgIG1fYnlWYWxDb21waWxhdGlvbklu
Zm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7Ci0g
ICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJu
QWRkcmVzcyA9IGNhbGw7Ci0gICAgbV9ieVZhbEluc3RydWN0aW9uSW5kZXgrKzsKKyAgICBnZW4u
cmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCiAjaWYgRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCkBAIC02OTUsMjQgKzY0OSwyNCBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBh
cmVDYWxsRwogICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkKICAgICAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKIAotICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjA7CisgICAgY29uc3RleHByIEdQUlJl
ZyBiYXNlR1BSID0gcmVnVDA7CisgICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHJl
Z1QxOworICAgIGNvbnN0ZXhwciBHUFJSZWcgdmFsdWVHUFIgPSByZWdUMjsKKyAgICBjb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gcmVnVDM7CisgICAgY29uc3RleHByIEdQUlJlZyBieXRl
Y29kZU9mZnNldEdQUiA9IHJlZ1Q0OworCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRH
UFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwog
Ci0gICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjA7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgcHJvcGVydHlHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJl
ZyB2YWx1ZUdQUiA9IGFyZ3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5VmFsSW5m
b0dQUiA9IGFyZ3VtZW50R1BSNDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHB1dEtpbmRHUFIgPSBh
cmd1bWVudEdQUjU7CisgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdU
NDsKIAogICAgIGppdC5sb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2Nr
KSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVj
dEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BS
KTsKIAotICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25QdXRQcml2YXRl
TmFtZU9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFs
dWVHUFIsIGJ5VmFsSW5mb0dQUiwgcHV0S2luZEdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRz
PGRlY2x0eXBlKG9wZXJhdGlvblB1dEJ5VmFsRGVmaW5lUHJpdmF0ZUZpZWxkT3B0aW1pemUpPihn
bG9iYWxPYmplY3RHUFIsIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgc3R1YkluZm9H
UFIsIFRydXN0ZWRJbW1QdHIobnVsbHB0cikpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlv
bih2bSk7CiAKICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkKLSAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjQsIEJ5VmFsSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgICAgICBqaXQu
ZmFySnVtcChBZGRyZXNzKGFyZ3VtZW50R1BSNCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgT3BlcmF0aW9uUHRyVGFnKTsKICAgICBlbHNlCiAgICAgICAgIGpp
dC5yZXQoKTsKIApAQCAtMzA2MCw2MiArMzAxNCw4IEBAIHZvaWQgSklUOjplbWl0V3JpdGVCYXJy
aWVyKEpTQ2VsbCogb3duZXIsIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSwgV3JpdGVCYXJyaWVyTW9k
CiAgICAgICAgIHZhbHVlTm90Q2VsbC5saW5rKHRoaXMpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgT3A+Ci1KSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElk
KE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVy
dHlOYW1lLCBKdW1wTGlzdCYgZG9uZUNhc2VzLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKQotewotICAg
IC8vIGJhc2U6IHRhZyhyZWdUMSksIHBheWxvYWQocmVnVDApCi0gICAgLy8gcHJvcGVydHk6IHRh
ZyhyZWdUMyksIHBheWxvYWQocmVnVDIpCi0KLSAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5
dGVjb2RlLm1fYmFzZTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3Zh
bHVlOwotCi0gICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hJZk5vdENlbGwocmVnVDMpKTsKLSAg
ICBlbWl0QnlWYWxJZGVudGlmaWVyQ2hlY2socmVnVDIsIHJlZ1QyLCBwcm9wZXJ0eU5hbWUsIHNs
b3dDYXNlcyk7Ci0KLSAgICAvLyBXcml0ZSBiYXJyaWVyIGJyZWFrcyB0aGUgcmVnaXN0ZXJzLiBT
byBhZnRlciBpc3N1aW5nIHRoZSB3cml0ZSBiYXJyaWVyLAotICAgIC8vIHJlbG9hZCB0aGUgcmVn
aXN0ZXJzLgotICAgIC8vCi0gICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0aG91
dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgotICAgIC8vIFdlIGFyZSBlbWl0dGlu
ZyB3cml0ZS1iYXJyaWVyIGJlZm9yZSB3cml0aW5nIGhlcmUgYnV0IHRoaXMgaXMgT0sgc2luY2Ug
MzJiaXQgSlNDIGRvZXMgbm90IGhhdmUgY29uY3VycmVudCBHQy4KLSAgICAvLyBGSVhNRTogVXNl
IFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVk
dWNlIGNvZGUgc2l6ZS4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA5Mzk1Ci0gICAgZW1pdFdyaXRlQmFycmllcihiYXNlLCBTaG91bGRGaWx0ZXJCYXNl
KTsKLSAgICBlbWl0TG9hZFBheWxvYWQoYmFzZSwgcmVnVDApOwotICAgIGVtaXRMb2FkKHZhbHVl
LCByZWdUMywgcmVnVDIpOwotCi0gICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAg
IG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
SW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVn
czo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBJbnZhbGlk
R1BSUmVnLCByZWdUMSwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKLSAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aCgqdGhpcyk7Ci0gICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwotCi0g
ICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7Ci0gICAgZ2VuLnNsb3dQYXRoSnVtcCgp
LmxpbmsodGhpcyk7Ci0KLSAgICAvLyBKSVRQdXRCeUlkR2VuZXJhdG9yIG9ubHkgcHJlc2VydmUg
dGhlIHZhbHVlIGFuZCB0aGUgYmFzZSdzIHBheWxvYWQsIHdlIGhhdmUgdG8gcmVsb2FkIHRoZSB0
YWcuCi0gICAgZW1pdExvYWRUYWcoYmFzZSwgcmVnVDEpOwotCi0gICAgQ2FsbCBjYWxsOwotICAg
IGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7Ci0gICAgICAg
IGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBnZW4uc2xvd1BhdGhGdW5jdGlvbigp
OwotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpu
b25BcmdHUFIwKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbjxkZWNsdHlwZShnZW4uc2xvd1BhdGhG
dW5jdGlvbigpKT4oQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCks
IEdQUkluZm86Om5vbkFyZ0dQUjAsIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFsdWVS
ZWdzKHJlZ1QxLCByZWdUMCksIHByb3BlcnR5TmFtZS5yYXdCaXRzKCkpOwotICAgIH0gZWxzZQot
ICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbihnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhyZWdU
MywgcmVnVDIpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBwcm9wZXJ0eU5hbWUucmF3Qml0
cygpKTsKLSAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwot
ICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKLQotICAgIHJldHVybiBnZW47Ci19Ci0KICNl
bmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCi1KSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1
dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKE9wUHV0UHJpdmF0ZU5hbWUgYnl0ZWNvZGUsIENhY2hl
YWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKdW1wTGlzdCYgZG9uZUNhc2VzLCBKdW1wTGlz
dCYgc2xvd0Nhc2VzKQotewotICAgIGF1dG8gcHV0S2luZCA9IGJ5dGVjb2RlLm1fcHV0S2luZC5p
c0RlZmluZSgpID8gUHV0S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lIDogUHV0S2luZDo6
RGlyZWN0UHJpdmF0ZUZpZWxkU2V0OwotICAgIHJldHVybiBlbWl0UHV0QnlWYWxXaXRoQ2FjaGVk
SWQoYnl0ZWNvZGUsIHB1dEtpbmQsIHByb3BlcnR5TmFtZSwgZG9uZUNhc2VzLCBzbG93Q2FzZXMp
OwotfQotCiB2b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcihWaXJ0dWFsUmVnaXN0ZXIgb3duZXIs
IFdyaXRlQmFycmllck1vZGUgbW9kZSkKIHsKICAgICBBU1NFUlQobW9kZSA9PSBVbmNvbmRpdGlv
bmFsV3JpdGVCYXJyaWVyIHx8IG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZSk7CkBAIC0zMTI5LDU4
ICszMDI5LDYgQEAgdm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIoSlNDZWxsKiBvd25lcikKICAg
ICBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuLmxpbmsodGhpcyk7CiB9CiAKLXZvaWQgSklUOjpl
bWl0QnlWYWxJZGVudGlmaWVyQ2hlY2soUmVnaXN0ZXJJRCBjZWxsLCBSZWdpc3RlcklEIHNjcmF0
Y2gsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKdW1wTGlzdCYgc2xvd0Nhc2Vz
KQotewotICAgIGlmIChwcm9wZXJ0eU5hbWUuaXNTeW1ib2xDZWxsKCkpCi0gICAgICAgIHNsb3dD
YXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBjZWxsLCBUcnVzdGVkSW1tUHRyKHByb3Bl
cnR5TmFtZS5jZWxsKCkpKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHNsb3dDYXNlcy5hcHBlbmQo
YnJhbmNoSWZOb3RTdHJpbmcoY2VsbCkpOwotICAgICAgICBsb2FkUHRyKEFkZHJlc3MoY2VsbCwg
SlNTdHJpbmc6Om9mZnNldE9mVmFsdWUoKSksIHNjcmF0Y2gpOwotICAgICAgICBzbG93Q2FzZXMu
YXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgc2NyYXRjaCwgVHJ1c3RlZEltbVB0cihwcm9wZXJ0
eU5hbWUudWlkKCkpKSk7Ci0gICAgfQotfQotCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRQ
cml2YXRlTmFtZVdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVz
c1B0ciByZXR1cm5BZGRyZXNzLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKLXsK
LSAgICBjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uID0gbV9jb2RlQmxvY2st
Pmluc3RydWN0aW9ucygpLmF0KGJ5VmFsSW5mby0+Ynl0ZWNvZGVJbmRleCkucHRyKCk7Ci0gICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4o
KTsKLQotICAgIEp1bXBMaXN0IGRvbmVDYXNlczsKLSAgICBKdW1wTGlzdCBzbG93Q2FzZXM7Ci0K
LSAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbiA9IGVtaXRQdXRQcml2YXRlTmFtZVdpdGhDYWNo
ZWRJZChieXRlY29kZSwgcHJvcGVydHlOYW1lLCBkb25lQ2FzZXMsIHNsb3dDYXNlcyk7Ci0KLSAg
ICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fY29kZUJsb2NrLT5tX2xvY2spOwotICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnRoaXMsIG1fY29kZUJsb2NrLCBMaW5rQnVmZmVyOjpQcm9m
aWxlOjpJbmxpbmVDYWNoZSk7Ci0gICAgcGF0Y2hCdWZmZXIubGluayhzbG93Q2FzZXMsIGJ5VmFs
SW5mby0+c2xvd1BhdGhUYXJnZXQpOwotICAgIHBhdGNoQnVmZmVyLmxpbmsoZG9uZUNhc2VzLCBi
eVZhbEluZm8tPmRvbmVUYXJnZXQpOwotICAgIGlmICghbV9leGNlcHRpb25DaGVja3MuZW1wdHko
KSkKLSAgICAgICAgcGF0Y2hCdWZmZXIubGluayhtX2V4Y2VwdGlvbkNoZWNrcywgYnlWYWxJbmZv
LT5leGNlcHRpb25IYW5kbGVyKTsKLQotICAgIGZvciAoY29uc3QgYXV0byYgY2FsbFNpdGUgOiBt
X25lYXJDYWxscykgewotICAgICAgICBpZiAoY2FsbFNpdGUuY2FsbGVlKQotICAgICAgICAgICAg
cGF0Y2hCdWZmZXIubGluayhjYWxsU2l0ZS5mcm9tLCBjYWxsU2l0ZS5jYWxsZWUpOwotICAgIH0K
LSAgICBmb3IgKGNvbnN0IGF1dG8mIGNhbGxTaXRlIDogbV9mYXJDYWxscykgewotICAgICAgICBp
ZiAoY2FsbFNpdGUuY2FsbGVlKQotICAgICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhjYWxsU2l0
ZS5mcm9tLCBjYWxsU2l0ZS5jYWxsZWUpOwotICAgIH0KLSAgICBnZW4uZmluYWxpemUocGF0Y2hC
dWZmZXIsIHBhdGNoQnVmZmVyKTsKLQotICAgIGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUgPSBGSU5B
TElaRV9DT0RFX0ZPUl9TVFVCKAotICAgICAgICBtX2NvZGVCbG9jaywgcGF0Y2hCdWZmZXIsIEpJ
VFN0dWJSb3V0aW5lUHRyVGFnLAotICAgICAgICAiQmFzZWxpbmUgcHV0X3ByaXZhdGVfbmFtZSB3
aXRoIGNhY2hlZCBwcm9wZXJ0eSBuYW1lICclcycgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAl
cCIsIHByb3BlcnR5TmFtZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5nKCptX2NvZGVC
bG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7Ci0gICAgYnlWYWxJ
bmZvLT5zdHViSW5mbyA9IGdlbi5zdHViSW5mbygpOwotCi0gICAgaWYgKEpJVENvZGU6OnVzZURh
dGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKLSAgICAgICAgYnlWYWxJbmZvLT5tX25vdElu
ZGV4SnVtcFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihi
eVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKTsKLSAgICAgICAgYnlWYWxJbmZv
LT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWM7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+
bV9ub3RJbmRleEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihi
eVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+
KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNz
KSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVH
ZW5lcmljKSk7Ci0gICAgfQotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVO
QUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcAppbmRleCA4YmExMGU0M2VhNmU1NThhNTdiZmZjZWJhOTNlNGZkYzA5
ZWIyODc3Li4yZWI0N2ZkMzQ4YmRhYTk3NDAwZjI0YzQ3ZTRiMDc5N2FjN2JhMDM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHAKQEAgLTM0MCw0NCArMzQwLDQ2IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRlX25h
bWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOwogICAgIFZp
cnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7Ci0gICAgQnlWYWxJbmZvKiBieVZhbElu
Zm8gPSBtX2NvZGVCbG9jay0+YWRkQnlWYWxJbmZvKG1fYnl0ZWNvZGVJbmRleCk7CisgICAgVmly
dHVhbFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKIAogICAgIGVtaXRMb2FkMihi
YXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywgcmVnVDIpOworICAgIGVtaXRMb2Fk
KHZhbHVlLCByZWdUNSwgcmVnVDQpOwogCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxs
KGJhc2UsIHJlZ1QxKTsKLSAgICBQYXRjaGFibGVKdW1wIGZhc3RQYXRoSm1wID0gcGF0Y2hhYmxl
SnVtcCgpOwotICAgIGFkZFNsb3dDYXNlKGZhc3RQYXRoSm1wKTsKIAotICAgIExhYmVsIGRvbmUg
PSBsYWJlbCgpOwotICAgIAotICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm8uYXBwZW5kKEJ5VmFs
Q29tcGlsYXRpb25JbmZvKGJ5VmFsSW5mbywgbV9ieXRlY29kZUluZGV4LCBmYXN0UGF0aEptcCwg
ZG9uZSwgZG9uZSkpOworICAgIEpJVFB1dEJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9j
b2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6UHV0QnlWYWws
IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNWYWx1
ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSlNWYWx1ZVJl
Z3MocmVnVDUsIHJlZ1Q0KSwgSW52YWxpZEdQUlJlZywgSW52YWxpZEdQUlJlZyk7CisgICAgZ2Vu
LnN0dWJJbmZvKCktPnByb3BlcnR5SXNTeW1ib2wgPSB0cnVlOworICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAg
IG1fcHV0QnlWYWxzLmFwcGVuZChnZW4pOworCisgICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1
Y3R1cmUgd2l0aG91dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgorICAgIC8vIEZJ
WE1FOiBVc2UgVW5jb25kaXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBlZmZlY3RpdmVs
eSB0byByZWR1Y2UgY29kZSBzaXplLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDkzOTUKKyAgICBlbWl0V3JpdGVCYXJyaWVyKGJhc2UsIFNob3VsZEZp
bHRlckJhc2UpOwogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIGJhc2Ug
PSBieXRlY29kZS5tX2Jhc2U7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNv
ZGUubV9wcm9wZXJ0eTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3Zh
bHVlOwotCi0gICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2J5VmFsQ29tcGlsYXRpb25JbmZv
W21fYnlWYWxJbnN0cnVjdGlvbkluZGV4XS5ieVZhbEluZm87CiAgICAgUHJpdmF0ZUZpZWxkUHV0
S2luZCBwdXRLaW5kID0gYnl0ZWNvZGUubV9wdXRLaW5kOwogCisgICAgSklUUHV0QnlWYWxHZW5l
cmF0b3ImIGdlbiA9IG1fcHV0QnlWYWxzW21fcHV0QnlWYWxJbmRleCsrXTsKKwogICAgIGxpbmtB
bGxTbG93Q2FzZXMoaXRlcik7Ci0gICAgTGFiZWwgc2xvd1BhdGggPSBsYWJlbCgpOworCisgICAg
TGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CiAKICAgICBKU1ZhbHVlUmVncyBiYXNlUmVn
cyhyZWdUMSwgcmVnVDApOwogICAgIEpTVmFsdWVSZWdzIHByb3BlcnR5UmVncyhyZWdUMywgcmVn
VDIpOwogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyhyZWdUNSwgcmVnVDQpOwogCi0gICAgZW1p
dExvYWQoYmFzZSwgYmFzZVJlZ3MudGFnR1BSKCksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSk7Ci0g
ICAgZW1pdExvYWQocHJvcGVydHksIHByb3BlcnR5UmVncy50YWdHUFIoKSwgcHJvcGVydHlSZWdz
LnBheWxvYWRHUFIoKSk7Ci0gICAgZW1pdExvYWQodmFsdWUsIHZhbHVlUmVncy50YWdHUFIoKSwg
dmFsdWVSZWdzLnBheWxvYWRHUFIoKSk7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKSksIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncywgYnlW
YWxJbmZvLCBUcnVzdGVkSW1tMzIocHV0S2luZC52YWx1ZSgpKSk7CisgICAgYXV0byBvcGVyYXRp
b24gPSBwdXRLaW5kLmlzRGVmaW5lKCkgPyBvcGVyYXRpb25QdXRCeVZhbERlZmluZVByaXZhdGVG
aWVsZE9wdGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxTZXRQcml2YXRlRmllbGRPcHRpbWl6ZTsK
KyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgVHJ1c3RlZEltbVB0ciht
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBiYXNlUmVncywgcHJvcGVydHlSZWdzLCB2YWx1
ZVJlZ3MsIGdlbi5zdHViSW5mbygpLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpKTsKIAotICAgIG1f
YnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFy
Z2V0ID0gc2xvd1BhdGg7Ci0gICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1
Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7Ci0gICAgbV9ieVZhbEluc3RydWN0aW9u
SW5kZXgrKzsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwp
OwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAKaW5kZXggZTYzYzk5YmU2YWJmN2ViNzg5ZGNhNmFmMzlmNTA5MDJmYWQzODQ3ZC4uMDlmZGVj
N2FjZWExZDA1NTY1ODY3YmIyM2E2ODNhZDY2ZmM3YzRkMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guY3BwCkBAIC02MDAsOSArNjAwLDEyIEBAIHN0YXRpYyBGdW5jdGlvblB0cjxD
RnVuY3Rpb25QdHJUYWc+IGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5RnVuY3Rpb24oY29uc3QgUHV0
UHJvCiAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxTdHJpY3RHZW5lcmljOwogICAgICAgICAg
ICAgcmV0dXJuIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsTm9uU3RyaWN0R2VuZXJpYzsKLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmll
bGREZWZpbmU6CisgICAgICAgICAgICBBU1NFUlQoc2xvdC5pc1N0cmljdE1vZGUoKSk7CisgICAg
ICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmllbGRHZW5lcmlj
OworICAgICAgICBjYXNlIFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldDoKKyAgICAgICAg
ICAgIEFTU0VSVChzbG90LmlzU3RyaWN0TW9kZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBvcGVy
YXRpb25QdXRCeVZhbFNldFByaXZhdGVGaWVsZEdlbmVyaWM7CiAgICAgICAgIH0KICAgICAgICAg
YnJlYWs7CiAgICAgfQpAQCAtNjMzLDcgKzYzNiw3IEBAIHN0YXRpYyBGdW5jdGlvblB0cjxDRnVu
Y3Rpb25QdHJUYWc+IGFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5RnVuY3Rpb24oY29uc3QgUHV0
CiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0cmlj
dE9wdGltaXplOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUHV0QnlLaW5k
OjpCeVZhbDogeworICAgIGNhc2UgUHV0QnlLaW5kOjpCeVZhbDoKICAgICAgICAgc3dpdGNoIChw
dXRLaW5kKSB7CiAgICAgICAgIGNhc2UgUHV0S2luZDo6Tm90RGlyZWN0OgogICAgICAgICAgICAg
aWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCkBAIC02NDMsMTMgKzY0NiwxNSBAQCBzdGF0aWMgRnVu
Y3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBhcHByb3ByaWF0ZU9wdGltaXppbmdQdXRCeUZ1bmN0
aW9uKGNvbnN0IFB1dAogICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsU3RyaWN0T3B0aW1pemU7
CiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxOb25TdHJpY3RPcHRp
bWl6ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQdXRLaW5kOjpEaXJl
Y3RQcml2YXRlRmllbGREZWZpbmU6CisgICAgICAgICAgICBBU1NFUlQoc2xvdC5pc1N0cmljdE1v
ZGUoKSk7CisgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRl
RmllbGRPcHRpbWl6ZTsKKyAgICAgICAgY2FzZSBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGRT
ZXQ6CisgICAgICAgICAgICBBU1NFUlQoc2xvdC5pc1N0cmljdE1vZGUoKSk7CisgICAgICAgICAg
ICByZXR1cm4gb3BlcmF0aW9uUHV0QnlWYWxTZXRQcml2YXRlRmllbGRPcHRpbWl6ZTsKICAgICAg
ICAgfQogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgfQogICAgIC8vIE1ha2Ugd2luIHBvcnQg
Y29tcGlsZXIgaGFwcHkKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMTkyMiw2ICsxOTI3LDEwIEBAIHZvaWQgcmVzZXRQdXRCeShDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBQdXRCeUtpbmQg
a2luCiAgICAgICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsTm9u
U3RyaWN0T3B0aW1pemU7CiAgICAgICAgIGVsc2UgaWYgKHVub3B0aW1pemVkRnVuY3Rpb24gPT0g
b3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxTdHJpY3RHZW5lcmljIHx8IHVub3B0aW1pemVkRnVuY3Rp
b24gPT0gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxTdHJpY3RPcHRpbWl6ZSkKICAgICAgICAgICAg
IG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxTdHJpY3RPcHRpbWl6
ZTsKKyAgICAgICAgZWxzZSBpZiAodW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRC
eVZhbERlZmluZVByaXZhdGVGaWVsZEdlbmVyaWMgfHwgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBv
cGVyYXRpb25QdXRCeVZhbERlZmluZVByaXZhdGVGaWVsZE9wdGltaXplKQorICAgICAgICAgICAg
b3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeVZhbERlZmluZVByaXZhdGVGaWVsZE9w
dGltaXplOworICAgICAgICBlbHNlIGlmICh1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlv
blB1dEJ5VmFsU2V0UHJpdmF0ZUZpZWxkR2VuZXJpYyB8fCB1bm9wdGltaXplZEZ1bmN0aW9uID09
IG9wZXJhdGlvblB1dEJ5VmFsU2V0UHJpdmF0ZUZpZWxkT3B0aW1pemUpCisgICAgICAgICAgICBv
cHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsU2V0UHJpdmF0ZUZpZWxkT3B0aW1p
emU7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKHVub3B0aW1pemVkRnVuY3Rp
b24gPT0gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxOb25TdHJpY3RHZW5lcmljIHx8IHVub3B0aW1p
emVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxOb25TdHJpY3RPcHRpbWl6ZSk7
CiAgICAgICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFs
Tm9uU3RyaWN0T3B0aW1pemU7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggMzAyNDdmMGU3ZDVlZTU2MzMyNGNlOGY4ODNlMTdmZmQ1Yzc3OGM1MS4u
N2YwNzFiYzdiZDYyODhlZjRhOGQ3ZjRjMmNhZDY3ZTFlMWViMjlkYSAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIx
LTA4LTI2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pT
Q10gb3BfcHV0X3ByaXZhdGVfbmFtZSBzaG91bGQgdXNlIG1vZGVybiBJQyBhbmQgcmVtb3ZlIEJ5
VmFsSW5mbworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI5NTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTY3JpcHRzL3J1bi1qc2MtYmVuY2htYXJrczoKKwogMjAyMS0wOC0yNSAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc29tZSBpT1Mtc3Bl
Y2lmaWMgY29tcGlsZS10aW1lIGd1YXJkcyB0aGF0IGFyZSBubyBsb25nZXIgbmVlZGVkCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3J1bi1qc2MtYmVuY2htYXJrcyBiL1Rvb2xzL1NjcmlwdHMv
cnVuLWpzYy1iZW5jaG1hcmtzCmluZGV4IDA4MWE3ZjcyZmQ3ZWMwZDUwMmY1M2JjYWE4OGZjYWFi
NmY3OWVkNDMuLmE0OWZiZDU3MzM5NzhhMzRjYzkxZTdiNzNiZTUzYmZiNTQ5ZGNhNWQgMTAwNzU1
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1iZW5jaG1hcmtzCisrKyBiL1Rvb2xzL1Njcmlw
dHMvcnVuLWpzYy1iZW5jaG1hcmtzCkBAIC01MSw3ICs1MSw2IEBAIFY4X1BBVEggPSBQRVJGT1JN
QU5DRVRFU1RTX1BBVEggKyAiU3VuU3BpZGVyIiArICJ0ZXN0cyIgKyAidjgtdjYiCiBUQUlMQkVO
Q0hfUEFUSCA9IFBFUkZPUk1BTkNFVEVTVFNfUEFUSCArICJUYWlsQmVuY2g5MDAwIgogQklHSU5U
QkVOQ0hfUEFUSCA9IFBFUkZPUk1BTkNFVEVTVFNfUEFUSCArICJCaWdJbnRCZW5jaCIKIE1JQ1JP
QkVOQ0hNQVJLU19QQVRIID0gT1BFTlNPVVJDRV9QQVRIICsgIkpTVGVzdHMiICsgIm1pY3JvYmVu
Y2htYXJrcyIKLVBSSVZBVEVGSUVMRFNCRU5DSF9QQVRIID0gTUlDUk9CRU5DSE1BUktTX1BBVEgg
KyAiY2xhc3MtZmllbGRzLXByaXZhdGUiCiBTTE9XX01JQ1JPQkVOQ0hNQVJLU19QQVRIID0gT1BF
TlNPVVJDRV9QQVRIICsgIkpTVGVzdHMiICsgInNsb3dNaWNyb2JlbmNobWFya3MiCiBPUEVOU09V
UkNFX09DVEFORV9QQVRIID0gUEVSRk9STUFOQ0VURVNUU19QQVRIICsgIk9jdGFuZSIKIE9DVEFO
RV9XUkFQUEVSX1BBVEggPSBPUEVOU09VUkNFX09DVEFORV9QQVRIICsgIndyYXBwZXJzIgpAQCAt
MTc4NiwyMiArMTc4NSw2IEBAIGNsYXNzIEJpZ0ludEJlbmNoQmVuY2htYXJrCiAgIGVuZAogZW5k
CiAKLWNsYXNzIFByaXZhdGVGaWVsZHNCZW5jaG1hcmsKLSAgICBpbmNsdWRlIEJlbmNobWFyawot
Ci0gICAgZGVmIGluaXRpYWxpemUobmFtZSkKLSAgICAgICAgQG5hbWUgPSBuYW1lCi0gICAgZW5k
Ci0KLSAgICBkZWYgZW1pdFJ1bkNvZGUocGxhbikKLSAgICAgICAgZW1pdEJlbmNoUnVuQ29kZShm
dWxsbmFtZSwgcGxhbiwgU2luZ2xlRmlsZVRpbWVkQmVuY2htYXJrUGFyYW1ldGVycy5uZXcoZW5z
dXJlRmlsZSgiUHJpdmF0ZUZpZWxkc0JlbmNoLSN7QG5hbWV9IiwgIiN7UFJJVkFURUZJRUxEU0JF
TkNIX1BBVEh9LyN7QG5hbWV9LmpzIikpKQotICAgIGVuZAotCi0gICAgZGVmIGVudmlyb25tZW50
Ci0gICAgICAgIHt9Ci0gICAgZW5kCi1lbmQKLQogY2xhc3MgTWljcm9iZW5jaG1hcmtzQmVuY2ht
YXJrCiAgIGluY2x1ZGUgQmVuY2htYXJrCiAgIApAQCAtMzI3MCwxNSArMzI1Myw2IEBAIGJlZ2lu
CiAgICAgZW5kCiAgIH0KIAotICBQUklWQVRFRklFTERTQkVOQ0ggPSBCZW5jaG1hcmtTdWl0ZS5u
ZXcoIlByaXZhdGVGaWVsZHNCZW5jaCIsIDpnZW9tZXRyaWNNZWFuLCAwKQotICBEaXIuZm9yZWFj
aChQUklWQVRFRklFTERTQkVOQ0hfUEFUSCkgewotICAgIHwgZmlsZW5hbWUgfAotICAgIGlmIGZp
bGVuYW1lID1+IC9cLmpzJC8KLSAgICAgICAgbmFtZSA9ICR+LnByZV9tYXRjaAotICAgICAgICBQ
UklWQVRFRklFTERTQkVOQ0guYWRkIFByaXZhdGVGaWVsZHNCZW5jaG1hcmsubmV3KG5hbWUpCi0g
ICAgZW5kCi0gIH0KLQogICBNSUNST0JFTkNITUFSS1MgPSBCZW5jaG1hcmtTdWl0ZS5uZXcoIk1p
Y3JvYmVuY2htYXJrcyIsIDpnZW9tZXRyaWNNZWFuLCAwKQogICBEaXIuZm9yZWFjaChNSUNST0JF
TkNITUFSS1NfUEFUSCkgewogICAgIHwgZmlsZW5hbWUgfApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9D
aGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBhNzAzZDgyNGQ4OGFhNWQzMjY5MTNj
MWQ1MTEwMWNkMDk5MjZmNjJjLi45ZTFiZjk4MjE2NTc4NzYyYmJhZGZkNDQyNWQxYTVjNWQyOThm
YWRjIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA4LTI2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gb3BfcHV0X3ByaXZhdGVfbmFtZSBzaG91bGQgdXNl
IG1vZGVybiBJQyBhbmQgcmVtb3ZlIEJ5VmFsSW5mbworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZ2V0LXByaXZhdGUtbmFt
ZS5qczogUmVuYW1lZCBmcm9tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1w
cml2YXRlL2dldC1wcml2YXRlLW5hbWUuanMuCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL21v
bm9tb3JwaGljLWdldC1wcml2YXRlLWZpZWxkLmpzOiBSZW5hbWVkIGZyb20gSlNUZXN0cy9taWNy
b2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUvbW9ub21vcnBoaWMtZ2V0LXByaXZhdGUt
ZmllbGQuanMuCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL3BvbHltb3JwaGljLWdldC1wcml2
YXRlLWZpZWxkLmpzOiBSZW5hbWVkIGZyb20gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3Mt
ZmllbGRzLXByaXZhdGUvcG9seW1vcnBoaWMtZ2V0LXByaXZhdGUtZmllbGQuanMuCisgICAgICAg
ICogbWljcm9iZW5jaG1hcmtzL3BvbHltb3JwaGljLXB1dC1wcml2YXRlLWZpZWxkLmpzOiBSZW5h
bWVkIGZyb20gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUvcG9s
eW1vcnBoaWMtcHV0LXByaXZhdGUtZmllbGQuanMuCisgICAgICAgICogbWljcm9iZW5jaG1hcmtz
L3B1dC1wcml2YXRlLWZpZWxkLmpzOiBSZW5hbWVkIGZyb20gSlNUZXN0cy9taWNyb2JlbmNobWFy
a3MvY2xhc3MtZmllbGRzLXByaXZhdGUvcHV0LXByaXZhdGUtZmllbGQuanMuCisKIDIwMjEtMDgt
MjQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUg
SW50bCB0ZXN0cyB0byBzdXBwb3J0IElDVSA2OApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2Jl
bmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUvZ2V0LXByaXZhdGUtbmFtZS5qcyBiL0pTVGVz
dHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL2dldC1wcml2YXRlLW5hbWUu
anMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwMzM2YzI2YWM2MDE2ZjAyNjZjOGY4
MzY0NzY5OTdkODI1NjYwYjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUvZ2V0
LXByaXZhdGUtbmFtZS5qcworKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLWZ1bmN0aW9u
IGFzc2VydChiLCBtID0gIkFzc2VydGlvbiBmYWlsZWQiKSB7Ci0gICAgaWYgKCFiKQotICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IobSk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3QxKCkgewotICAgIGZ1bmN0
aW9uIGZhY3RvcnkoaSkgewotICAgICAgICByZXR1cm4gbmV3IGNsYXNzIHsKLSAgICAgICAgICAg
ICN4ID0gaTsKLSAgICAgICAgICAgIGdldCgpIHsgcmV0dXJuIHRoaXMuI3g7IH0KLSAgICAgICAg
fTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBmb28obywgaSkgewotICAgICAgICByZXR1cm4gby5n
ZXQoKTsKLSAgICB9Ci0gICAgbm9JbmxpbmUoZm9vKTsKLQotICAgIGxldCBhID0gZmFjdG9yeSg0
Mik7Ci0gICAgbGV0IGIgPSBmYWN0b3J5KDQzKTsKLSAgICBsZXQgc3RhcnQgPSBEYXRlLm5vdygp
OwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDA7ICsraSkgewotICAgICAgICBhc3Nl
cnQoZm9vKGEsICJhIikgPT09IDQyKTsKLSAgICAgICAgYXNzZXJ0KGZvbyhiLCAiYiIpID09PSA0
Myk7Ci0gICAgfQotfQotdGVzdDEoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL21vbm9tb3JwaGljLWdldC1wcml2YXRlLWZpZWxkLmpz
IGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUvbW9ub21vcnBo
aWMtZ2V0LXByaXZhdGUtZmllbGQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFj
MDQ3Y2ZmYzc0Zjk0Y2U0YzU0NTdkODZiZDMwNDk3ZmIwYTQ4YjQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xh
c3MtZmllbGRzLXByaXZhdGUvbW9ub21vcnBoaWMtZ2V0LXByaXZhdGUtZmllbGQuanMKKysrIC9k
ZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1jbGFzcyBDIHsKLSAgICAjZmllbGQ7Ci0KLSAgICBj
b25zdHJ1Y3RvcihpKSB7Ci0gICAgICAgIHRoaXMuI2ZpZWxkID0gaTsKLSAgICB9Ci0KLSAgICBn
ZXRGaWVsZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOwotICAgIH0KLX0KLW5vSW5s
aW5lKEMucHJvdG90eXBlLmdldEZpZWxkKTsKLQotbGV0IGMgPSBuZXcgQygidGVzdCIpOwotZm9y
IChsZXQgaSA9IDA7IGkgPCA1MDAwMDAwOyBpKyspIHsKLSAgICBpZiAoYy5nZXRGaWVsZCgpICE9
PSAidGVzdCIpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigidW5leHBlY3RlZCBmaWVsZCB2YWx1
ZSIpOwotfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRz
LXByaXZhdGUvcG9seW1vcnBoaWMtZ2V0LXByaXZhdGUtZmllbGQuanMgYi9KU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9wb2x5bW9ycGhpYy1nZXQtcHJpdmF0ZS1m
aWVsZC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjYzNGQ5NmVlOTdjMDA0YjQ4
NjhlYjgyMjU3ZmViNDMxYzMyOGI1Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0
ZS9wb2x5bW9ycGhpYy1nZXQtcHJpdmF0ZS1maWVsZC5qcworKysgL2Rldi9udWxsCkBAIC0xLDMy
ICswLDAgQEAKLWNsYXNzIEMgewotICAgICNmaWVsZDsKLQotICAgIHNldEZpZWxkKHZhbHVlKSB7
Ci0gICAgICAgIHRoaXMuI2ZpZWxkID0gdmFsdWU7Ci0gICAgfQotCi0gICAgZ2V0RmllbGQoKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKLSAgICB9Ci19Ci1ub0lubGluZShDLnByb3Rv
dHlwZS5nZXRGaWVsZCk7Ci0KLWxldCBjMSA9IG5ldyBDKCk7Ci1jMS5mb28gPSAwOwotYzEuc2V0
RmllbGQoImEiKTsKLQotbGV0IGMyID0gbmV3IEMoKTsKLWMyLmJhciA9IDA7Ci1jMi5zZXRGaWVs
ZCgiYiIpOwotCi1sZXQgYzMgPSBuZXcgQygpOwotYzMuYmF6ID0gMDsKLWMzLnNldEZpZWxkKCJj
Iik7Ci0KLWxldCBhcnIgPSBbYzEsIGMyLCBjM107Ci1sZXQgdmFsdWVzID0gWyJhIiwgImIiLCAi
YyJdOwotZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwMDAwOyBpKyspIHsKLSAgICBpZiAoYXJyW2kg
JSBhcnIubGVuZ3RoXS5nZXRGaWVsZCgpICE9PSB2YWx1ZXNbaSAlIHZhbHVlcy5sZW5ndGhdKQot
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoInVuZXhwZWN0ZWQgZmllbGQgdmFsdWUiKTsKLX0KLQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUv
cG9seW1vcnBoaWMtcHV0LXByaXZhdGUtZmllbGQuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9wb2x5bW9ycGhpYy1wdXQtcHJpdmF0ZS1maWVsZC5qcwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjg1NGRjYjQ1NjRkN2ViODBkOTI1MTM4NDhm
OGYyNDU0MmUzZTZiMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9wb2x5bW9y
cGhpYy1wdXQtcHJpdmF0ZS1maWVsZC5qcworKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAK
LWNsYXNzIEMgewotICAgICNmaWVsZDsKLQotICAgIHNldEZpZWxkKHZhbHVlKSB7Ci0gICAgICAg
IHRoaXMuI2ZpZWxkID0gdmFsdWU7Ci0gICAgfQotfQotbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0
RmllbGQpOwotCi1sZXQgYzEgPSBuZXcgQygpOwotYzEuZm9vID0gMDsKLQotbGV0IGMyID0gbmV3
IEMoKTsKLWMyLmJhciA9IDA7Ci0KLWxldCBjMyA9IG5ldyBDKCk7Ci1jMy5iYXogPSAwOwotCi1s
ZXQgYXJyID0gW2MxLCBjMiwgYzNdOwotCi1mb3IgKGxldCBpID0gMDsgaSA8IDUwMDAwMDA7IGkr
KykgewotICAgIGFycltpICUgYXJyLmxlbmd0aF0uc2V0RmllbGQoaSk7Ci19Ci0KZGlmZiAtLWdp
dCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL3B1dC1wcml2
YXRlLWZpZWxkLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZh
dGUvcHV0LXByaXZhdGUtZmllbGQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVk
M2Y4NzY5YjI4NjNmZTU4Y2ZmOGYwNTY4MTQ5NWQyYzFmZWZlZGEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xh
c3MtZmllbGRzLXByaXZhdGUvcHV0LXByaXZhdGUtZmllbGQuanMKKysrIC9kZXYvbnVsbApAQCAt
MSwxNCArMCwwIEBACi1jbGFzcyBDIHsKLSAgICAjZmllbGQ7Ci0KLSAgICBzZXRGaWVsZCh2YWx1
ZSkgewotICAgICAgICB0aGlzLiNmaWVsZCA9IHZhbHVlOwotICAgIH0KLX0KLW5vSW5saW5lKEMu
cHJvdG90eXBlLnNldEZpZWxkKTsKLQotbGV0IGMgPSBuZXcgQygpOwotZm9yIChsZXQgaSA9IDA7
IGkgPCA1MDAwMDAwOyBpKyspIHsKLSAgICBjLnNldEZpZWxkKGkpOwotfQotCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9nZXQtcHJpdmF0ZS1uYW1lLmpzIGIvSlNUZXN0cy9t
aWNyb2JlbmNobWFya3MvZ2V0LXByaXZhdGUtbmFtZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDMzNmMyNmFj
NjAxNmYwMjY2YzhmODM2NDc2OTk3ZDgyNTY2MGIyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvZ2V0LXByaXZhdGUtbmFtZS5qcwpAQCAtMCwwICsxLDI3IEBACitm
dW5jdGlvbiBhc3NlcnQoYiwgbSA9ICJBc3NlcnRpb24gZmFpbGVkIikgeworICAgIGlmICghYikK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKG0pOworfQorCitmdW5jdGlvbiB0ZXN0MSgpIHsKKyAg
ICBmdW5jdGlvbiBmYWN0b3J5KGkpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBjbGFzcyB7CisgICAg
ICAgICAgICAjeCA9IGk7CisgICAgICAgICAgICBnZXQoKSB7IHJldHVybiB0aGlzLiN4OyB9Cisg
ICAgICAgIH07CisgICAgfQorCisgICAgZnVuY3Rpb24gZm9vKG8sIGkpIHsKKyAgICAgICAgcmV0
dXJuIG8uZ2V0KCk7CisgICAgfQorICAgIG5vSW5saW5lKGZvbyk7CisKKyAgICBsZXQgYSA9IGZh
Y3RvcnkoNDIpOworICAgIGxldCBiID0gZmFjdG9yeSg0Myk7CisgICAgbGV0IHN0YXJ0ID0gRGF0
ZS5ub3coKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDAwOyArK2kpIHsKKyAgICAg
ICAgYXNzZXJ0KGZvbyhhLCAiYSIpID09PSA0Mik7CisgICAgICAgIGFzc2VydChmb28oYiwgImIi
KSA9PT0gNDMpOworICAgIH0KK30KK3Rlc3QxKCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9tb25vbW9ycGhpYy1nZXQtcHJpdmF0ZS1maWVsZC5qcyBiL0pTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL21vbm9tb3JwaGljLWdldC1wcml2YXRlLWZpZWxkLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjFjMDQ3Y2ZmYzc0Zjk0Y2U0YzU0NTdkODZiZDMwNDk3ZmIwYTQ4YjQKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9tb25vbW9ycGhpYy1nZXQtcHJpdmF0ZS1maWVs
ZC5qcwpAQCAtMCwwICsxLDE4IEBACitjbGFzcyBDIHsKKyAgICAjZmllbGQ7CisKKyAgICBjb25z
dHJ1Y3RvcihpKSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gaTsKKyAgICB9CisKKyAgICBnZXRG
aWVsZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5saW5l
KEMucHJvdG90eXBlLmdldEZpZWxkKTsKKworbGV0IGMgPSBuZXcgQygidGVzdCIpOworZm9yIChs
ZXQgaSA9IDA7IGkgPCA1MDAwMDAwOyBpKyspIHsKKyAgICBpZiAoYy5nZXRGaWVsZCgpICE9PSAi
dGVzdCIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigidW5leHBlY3RlZCBmaWVsZCB2YWx1ZSIp
OworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seW1vcnBoaWMtZ2V0
LXByaXZhdGUtZmllbGQuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wb2x5bW9ycGhpYy1n
ZXQtcHJpdmF0ZS1maWVsZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjM0ZDk2ZWU5N2MwMDRiNDg2OGViODIy
NTdmZWI0MzFjMzI4YjVmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFy
a3MvcG9seW1vcnBoaWMtZ2V0LXByaXZhdGUtZmllbGQuanMKQEAgLTAsMCArMSwzMiBAQAorY2xh
c3MgQyB7CisgICAgI2ZpZWxkOworCisgICAgc2V0RmllbGQodmFsdWUpIHsKKyAgICAgICAgdGhp
cy4jZmllbGQgPSB2YWx1ZTsKKyAgICB9CisKKyAgICBnZXRGaWVsZCgpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuI2ZpZWxkOworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxk
KTsKKworbGV0IGMxID0gbmV3IEMoKTsKK2MxLmZvbyA9IDA7CitjMS5zZXRGaWVsZCgiYSIpOwor
CitsZXQgYzIgPSBuZXcgQygpOworYzIuYmFyID0gMDsKK2MyLnNldEZpZWxkKCJiIik7CisKK2xl
dCBjMyA9IG5ldyBDKCk7CitjMy5iYXogPSAwOworYzMuc2V0RmllbGQoImMiKTsKKworbGV0IGFy
ciA9IFtjMSwgYzIsIGMzXTsKK2xldCB2YWx1ZXMgPSBbImEiLCAiYiIsICJjIl07Citmb3IgKGxl
dCBpID0gMDsgaSA8IDUwMDAwMDA7IGkrKykgeworICAgIGlmIChhcnJbaSAlIGFyci5sZW5ndGhd
LmdldEZpZWxkKCkgIT09IHZhbHVlc1tpICUgdmFsdWVzLmxlbmd0aF0pCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigidW5leHBlY3RlZCBmaWVsZCB2YWx1ZSIpOworfQorCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wb2x5bW9ycGhpYy1wdXQtcHJpdmF0ZS1maWVsZC5qcyBi
L0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3BvbHltb3JwaGljLXB1dC1wcml2YXRlLWZpZWxkLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY4NTRkY2I0NTY0ZDdlYjgwZDkyNTEzODQ4ZjhmMjQ1NDJlM2U2YjIKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wb2x5bW9ycGhpYy1wdXQt
cHJpdmF0ZS1maWVsZC5qcwpAQCAtMCwwICsxLDI0IEBACitjbGFzcyBDIHsKKyAgICAjZmllbGQ7
CisKKyAgICBzZXRGaWVsZCh2YWx1ZSkgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHZhbHVlOwor
ICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKworbGV0IGMxID0gbmV3
IEMoKTsKK2MxLmZvbyA9IDA7CisKK2xldCBjMiA9IG5ldyBDKCk7CitjMi5iYXIgPSAwOworCits
ZXQgYzMgPSBuZXcgQygpOworYzMuYmF6ID0gMDsKKworbGV0IGFyciA9IFtjMSwgYzIsIGMzXTsK
KworZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwMDAwOyBpKyspIHsKKyAgICBhcnJbaSAlIGFyci5s
ZW5ndGhdLnNldEZpZWxkKGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9wdXQtcHJpdmF0ZS1maWVsZC5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3B1dC1w
cml2YXRlLWZpZWxkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkM2Y4NzY5YjI4NjNmZTU4Y2ZmOGYwNTY4MTQ5
NWQyYzFmZWZlZGEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9w
dXQtcHJpdmF0ZS1maWVsZC5qcwpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBDIHsKKyAgICAjZmll
bGQ7CisKKyAgICBzZXRGaWVsZCh2YWx1ZSkgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHZhbHVl
OworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKworbGV0IGMgPSBu
ZXcgQygpOworZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwMDAwOyBpKyspIHsKKyAgICBjLnNldEZp
ZWxkKGkpOworfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436594</attachid>
            <date>2021-08-26 17:40:07 -0700</date>
            <delta_ts>2021-08-26 19:13:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229544-20210826174006.patch</filename>
            <type>text/plain</type>
            <size>101403</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MGFlNGU2MmViNzc4ZjA5NzExNTE0OTZkNzE1MWI3MTFjMmUzZDE4Li4zMzVjNTQ1Yjk5MWIyODhm
OWMxNzRjMTIwZDIzZmU5ZWRjNGE1NzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NSBAQAorMjAyMS0wOC0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIG9wX3B1dF9wcml2YXRlX25hbWUgc2hvdWxkIHVzZSBtb2Rlcm4g
SUMgYW5kIHJlbW92ZSBCeVZhbEluZm8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyOTU0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9CeVZhbEluZm8u
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5VmFsSW5mby5oOiBSZW1vdmVkLgor
ICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6Z2V0SUNTdGF0dXNNYXApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnN0cm9uZ2x5Vmlz
aXRTdHJvbmdSZWZlcmVuY2VzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5kQnlWYWxJ
bmZvKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRCeVZhbEluZm8pOiBE
ZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVj
b2RlL0lDU3RhdHVzTWFwLmg6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1lKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcDoKKyAg
ICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dFByaXZhdGVOYW1lKToKKyAgICAgICAgKiBqaXQvSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAg
ICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVF
eGNlcHRpb25IYW5kbGVycyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAoSlNDOjpC
eVZhbENvbXBpbGF0aW9uSW5mbzo6QnlWYWxDb21waWxhdGlvbkluZm8pOiBEZWxldGVkLgorICAg
ICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEFycmF5UHJv
ZmlsZVN0b3JlVG9Ib2xlU3BlY2lhbENhc2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRBcnJheVByb2ZpbGVPdXRPZkJvdW5kc1NwZWNpYWxDYXNlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OnB1dFByaXZhdGVOYW1l
T3B0aW1pemUpOgorICAgICAgICAoSlNDOjpwdXRQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6
OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
aDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfcHV0X3ByaXZhdGVfbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRf
cHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdEJ5VmFsSWRlbnRpZmllckNoZWNrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklU
Ojpwcml2YXRlQ29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAg
ICAgIChKU0M6OmFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5RnVuY3Rpb24pOgorICAgICAgICAoSlND
OjphcHByb3ByaWF0ZU9wdGltaXppbmdQdXRCeUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6cmVz
ZXRQdXRCeSk6CisKIDIwMjEtMDgtMjUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBbSlNDXSBQb2x5bW9ycGhpYyBQdXRCeVZhbApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAzMjNkOGE0MGUxZjZlMjNmY2UyN2VkN2MwOGRiNTMyNDczYjI2YTU5
Li5hNjAxOTZlMmM2NzAyM2M4MTBkNjJmMjUwOTY4M2I4MTNmMWZmMDY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNDQ0LDcgKzQ0NCw2IEBACiAJCTBGN0RGMTNDMUUyOTcxMTMw
MDk1OTUxQiAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3REYxM0ExRTI5NzEwRTAwOTU5
NTFCIC8qIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3REYxNDYxRTJCRUY2QTAwOTU5
NTFCIC8qIEJsb2NrRGlyZWN0b3J5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3REYxNDUxRTJCRUY2ODAwOTU5NTFCIC8qIEJsb2NrRGly
ZWN0b3J5SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGN0Y5ODhDMUQ5NTk2QzgwMEY0RjEyRSAvKiBERkdTdG9yZUJhcnJpZXJDbHVz
dGVyaW5nUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGN0Y5ODhBMUQ5NTk2QzMwMEY0RjEyRSAvKiBERkdTdG9yZUJhcnJpZXJDbHVzdGVyaW5n
UGhhc2UuaCAqLzsgfTsKLQkJMEY4MDIzRUExNjEzODMyQjAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MDIzRTkx
NjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oICovOyB9OwogCQkwRjgzMzVCODE2MzlDMUVB
MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjgzNjRCNzE2NEIwQzExMDA1MzMyOUEgLyogREZHQnJhbmNoRGly
ZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjgzNjRCNTE2NEIwQzBFMDA1MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0aW9uLmggKi87IH07CiAJ
CTBGODZBMjZGMUQ2RjdCMzMwMENCMEM5MiAvKiBHQ1R5cGVNYXAuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODZBMjZFMUQ2RjdCMzEwMENCMEM5MiAv
KiBHQ1R5cGVNYXAuaCAqLzsgfTsKQEAgLTI4MjgsNyArMjgyNyw2IEBACiAJCTBGN0RGMTQ1MUUy
QkVGNjgwMDk1OTUxQiAvKiBCbG9ja0RpcmVjdG9yeUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGN0Y5ODg5MUQ5NTk2QzMwMEY0RjEyRSAvKiBERkdTdG9yZUJhcnJp
ZXJDbHVzdGVyaW5nUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gREZHU3RvcmVCYXJyaWVyQ2x1c3RlcmluZ1BoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdTdG9y
ZUJhcnJpZXJDbHVzdGVyaW5nUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjdGOTg4QTFEOTU5NkMzMDBGNEYxMkUgLyogREZHU3RvcmVCYXJyaWVyQ2x1c3RlcmluZ1Bo
YXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1N0b3JlQmFycmllckNs
dXN0ZXJpbmdQaGFzZS5oOyBwYXRoID0gZGZnL0RGR1N0b3JlQmFycmllckNsdXN0ZXJpbmdQaGFz
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjgwMjNFOTE2MTM4MzIzMDBBMEJB
NDUgLyogQnlWYWxJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5VmFs
SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVCNDE2MzlDMUUzMDAx
NDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2Nh
dGlvblByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzNjRCNTE2
NEIwQzBFMDA1MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IERGR0JyYW5jaERpcmVjdGlvbi5oOyBwYXRoID0gZGZnL0RGR0JyYW5j
aERpcmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTEzNSw3ICs1MTMz
LDYgQEAKIAkJRTM1NUQzOEUyMjQ0Njg2QzAwOEYxQUQ2IC8qIEdsb2JhbEV4ZWN1dGFibGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gR2xvYmFsRXhlY3V0YWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzNTY5ODcxMjI4NDExODMwMDhDRENDQiAvKiBQYWNrZWRDZWxsUHRy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBhY2tlZENlbGxQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTM1QTBCOUMyMjBBRDg3QTAwQUM0NDc0IC8qIEV4ZWN1dGFibGVCYXNlSW5saW5l
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGVjdXRhYmxlQmFzZUlubGlu
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTM1QkEyQzAyNDFBMEU4QzAwQjY3
MDg2IC8qIEJ5VmFsSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeVZhbEluZm8uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzVDQTE0RjFEQkMzQTU2MDBGODM1MTYgLyog
RE9NSklUQWJzdHJhY3RIZWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERPTUpJVEFic3RyYWN0SGVhcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzNUNBMTUwMURCQzNBNTYwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUQWJzdHJhY3RIZWFwLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUNBMTUxMURCQzNBNTYwMEY4MzUxNiAvKiBET01KSVRI
ZWFwUmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NSklU
SGVhcFJhbmdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg1NTQsOCArODU1
MSw2IEBACiAJCQkJRTNEMjY0MkExRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlUmV3cml0ZXIu
aCAqLywKIAkJCQk1M0QzNTQ5ODI0MEQ4OEFEMDA4OTUwREQgLyogQnl0ZWNvZGVVc2VEZWYuY3Bw
ICovLAogCQkJCTBGODg1RTEwMTg0OUEzQkUwMEYxRTNGQSAvKiBCeXRlY29kZVVzZURlZi5oICov
LAotCQkJCUUzNUJBMkMwMjQxQTBFOEMwMEI2NzA4NiAvKiBCeVZhbEluZm8uY3BwICovLAotCQkJ
CTBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLywKIAkJCQkwRjY0QjI3
NzFBNzk1N0IyMDA2RTRFNjYgLyogQ2FsbEVkZ2UuY3BwICovLAogCQkJCTBGNjRCMjc4MUE3OTU3
QjIwMDZFNEU2NiAvKiBDYWxsRWRnZS5oICovLAogCQkJCTBGMEI4M0FFMTRCQ0Y3MTQwMDg4NUI0
RiAvKiBDYWxsTGlua0luZm8uY3BwICovLApAQCAtOTQ3Myw3ICs5NDY4LDYgQEAKIAkJCQlFMzI4
REFFQjFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNjUxNEYyMTkxOEIzRTE2NzAwOThGRjhCIC8qIEJ5dGVjb2Rlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY4ODVFMTExODQ5QTNCRTAwRjFFM0ZBIC8qIEJ5dGVjb2RlVXNlRGVmLmggaW4g
SGVhZGVycyAqLywKLQkJCQkwRjgwMjNFQTE2MTM4MzJCMDBBMEJBNDUgLyogQnlWYWxJbmZvLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGRThERTU0QjIzQUMxREFEMDA1QzkxNDIgLyogQ2FjaGVhYmxl
SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU4REU1NEQyM0FDMUU4NjAwNUM5MTQy
IC8qIENhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDRD
QTM1MDIyMjQxODAxMDA4MTc3ODkgLyogQ2FjaGVkQnl0ZWNvZGUuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDcwNzdlZjlhZTMxMTc2ZjYzODVlYmUzNGNj
YjMxYTUwNWMxOTFlYzUuLjUyYjkzZWU4ZDhiYmE2NjA2NGRiMjAxOGYzZjMxNzcwMmY3NmFhOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTE5Nyw3ICsxOTcsNiBAQCBieXRlY29k
ZS9BZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcAogYnl0ZWNv
ZGUvQXJpdGhQcm9maWxlLmNwcAogYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAK
IGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKLWJ5dGVjb2RlL0J5VmFsSW5mby5jcHAKIGJ5dGVj
b2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAog
Ynl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwNTNlNjYzZThjMTg2ZTgwYzMzZDZmMjQ0ZjE4M2RmM2Q5ZWYzYWU5Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeVZhbEluZm8uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkJ5VmFsSW5mby5oIgotCi0jaW5jbHVkZSAiQ2FjaGVh
YmxlSWRlbnRpZmllcklubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLSNpZiBFTkFCTEUo
SklUKQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgotdm9pZCBCeVZhbEluZm86OnZpc2l0
QWdncmVnYXRlSW1wbChWaXNpdG9yJiB2aXNpdG9yKQotewotICAgIGNhY2hlZElkLnZpc2l0QWdn
cmVnYXRlKHZpc2l0b3IpOwotfQotCi1ERUZJTkVfVklTSVRfQUdHUkVHQVRFKEJ5VmFsSW5mbyk7
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoSklUKQotCi19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYjIyNmZiMTZmNWRiNzQ0ZjdmZTU1NmJlYzc1OGQ3Y2VhMDRlNGFhMS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMDAgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllci5oIgotI2luY2x1ZGUg
IkNsYXNzSW5mby5oIgotI2luY2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgotI2luY2x1ZGUgIkluZGV4
aW5nVHlwZS5oIgotI2luY2x1ZGUgIkpJVFN0dWJSb3V0aW5lLmgiCi0jaW5jbHVkZSAiU3RydWN0
dXJlLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBTeW1ib2w7Ci0KLSNpZiBFTkFCTEUo
SklUKQotCi1jbGFzcyBBcnJheVByb2ZpbGU7Ci1jbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKLQot
ZW51bSBKSVRBcnJheU1vZGUgOiB1aW50OF90IHsKLSAgICBKSVRJbnQzMiwKLSAgICBKSVREb3Vi
bGUsCi0gICAgSklUQ29udGlndW91cywKLSAgICBKSVRBcnJheVN0b3JhZ2UsCi0gICAgSklURGly
ZWN0QXJndW1lbnRzLAotICAgIEpJVFNjb3BlZEFyZ3VtZW50cywKLSAgICBKSVRJbnQ4QXJyYXks
Ci0gICAgSklUSW50MTZBcnJheSwKLSAgICBKSVRJbnQzMkFycmF5LAotICAgIEpJVFVpbnQ4QXJy
YXksCi0gICAgSklUVWludDhDbGFtcGVkQXJyYXksCi0gICAgSklUVWludDE2QXJyYXksCi0gICAg
SklUVWludDMyQXJyYXksCi0gICAgSklURmxvYXQzMkFycmF5LAotICAgIEpJVEZsb2F0NjRBcnJh
eSwKLSAgICBKSVRCaWdJbnQ2NEFycmF5LAotICAgIEpJVEJpZ1VpbnQ2NEFycmF5LAotfTsKLQot
aW5saW5lIGJvb2wgaXNPcHRpbWl6YWJsZUluZGV4aW5nVHlwZShJbmRleGluZ1R5cGUgaW5kZXhp
bmdUeXBlKQotewotICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKSB7Ci0gICAgY2FzZSBBTExfSU5U
MzJfSU5ERVhJTkdfVFlQRVM6Ci0gICAgY2FzZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOgot
ICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6Ci0gICAgY2FzZSBBUlJBWV9X
SVRIX0FSUkFZX1NUT1JBR0VfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLWlubGluZSBi
b29sIGhhc09wdGltaXphYmxlSW5kZXhpbmdGb3JKU1R5cGUoSlNUeXBlIHR5cGUpCi17Ci0gICAg
c3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBEaXJlY3RBcmd1bWVudHNUeXBlOgotICAgIGNhc2Ug
U2NvcGVkQXJndW1lbnRzVHlwZToKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQotaW5saW5lIGJvb2wgaGFzT3B0aW1p
emFibGVJbmRleGluZ0ZvckNsYXNzSW5mbyhjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykKLXsK
LSAgICByZXR1cm4gaXNUeXBlZFZpZXcoY2xhc3NJbmZvLT50eXBlZEFycmF5U3RvcmFnZVR5cGUp
OwotfQotCi1pbmxpbmUgYm9vbCBoYXNPcHRpbWl6YWJsZUluZGV4aW5nKFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQotewotICAgIHJldHVybiBpc09wdGltaXphYmxlSW5kZXhpbmdUeXBlKHN0cnVjdHVy
ZS0+aW5kZXhpbmdUeXBlKCkpCi0gICAgICAgIHx8IGhhc09wdGltaXphYmxlSW5kZXhpbmdGb3JK
U1R5cGUoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSkKLSAgICAgICAgfHwgaGFzT3B0aW1p
emFibGVJbmRleGluZ0ZvckNsYXNzSW5mbyhzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpKTsKLX0KLQot
aW5saW5lIEpJVEFycmF5TW9kZSBqaXRBcnJheU1vZGVGb3JJbmRleGluZ1R5cGUoSW5kZXhpbmdU
eXBlIGluZGV4aW5nVHlwZSkKLXsKLSAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSkgewotICAgIGNh
c2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgotICAgICAgICByZXR1cm4gSklUSW50MzI7Ci0g
ICAgY2FzZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOgotICAgICAgICByZXR1cm4gSklURG91
YmxlOwotICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIHJl
dHVybiBKSVRDb250aWd1b3VzOwotICAgIGNhc2UgQVJSQVlfV0lUSF9BUlJBWV9TVE9SQUdFX0lO
REVYSU5HX1RZUEVTOgotICAgICAgICByZXR1cm4gSklUQXJyYXlTdG9yYWdlOwotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIENSQVNIKCk7Ci0gICAgICAgIHJldHVybiBKSVRDb250aWd1b3VzOwotICAg
IH0KLX0KLQotaW5saW5lIEpJVEFycmF5TW9kZSBqaXRBcnJheU1vZGVGb3JKU1R5cGUoSlNUeXBl
IHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBEaXJlY3RBcmd1bWVudHNU
eXBlOgotICAgICAgICByZXR1cm4gSklURGlyZWN0QXJndW1lbnRzOwotICAgIGNhc2UgU2NvcGVk
QXJndW1lbnRzVHlwZToKLSAgICAgICAgcmV0dXJuIEpJVFNjb3BlZEFyZ3VtZW50czsKLSAgICBk
ZWZhdWx0OgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm4gSklUQ29udGlndW91czsKLSAgICB9Ci19Ci0KLWlubGluZSBKSVRBcnJheU1vZGUgaml0
QXJyYXlNb2RlRm9yQ2xhc3NJbmZvKGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQotewotICAg
IHN3aXRjaCAoY2xhc3NJbmZvLT50eXBlZEFycmF5U3RvcmFnZVR5cGUpIHsKLSAgICBjYXNlIFR5
cGVJbnQ4OgotICAgICAgICByZXR1cm4gSklUSW50OEFycmF5OwotICAgIGNhc2UgVHlwZUludDE2
OgotICAgICAgICByZXR1cm4gSklUSW50MTZBcnJheTsKLSAgICBjYXNlIFR5cGVJbnQzMjoKLSAg
ICAgICAgcmV0dXJuIEpJVEludDMyQXJyYXk7Ci0gICAgY2FzZSBUeXBlVWludDg6Ci0gICAgICAg
IHJldHVybiBKSVRVaW50OEFycmF5OwotICAgIGNhc2UgVHlwZVVpbnQ4Q2xhbXBlZDoKLSAgICAg
ICAgcmV0dXJuIEpJVFVpbnQ4Q2xhbXBlZEFycmF5OwotICAgIGNhc2UgVHlwZVVpbnQxNjoKLSAg
ICAgICAgcmV0dXJuIEpJVFVpbnQxNkFycmF5OwotICAgIGNhc2UgVHlwZVVpbnQzMjoKLSAgICAg
ICAgcmV0dXJuIEpJVFVpbnQzMkFycmF5OwotICAgIGNhc2UgVHlwZUZsb2F0MzI6Ci0gICAgICAg
IHJldHVybiBKSVRGbG9hdDMyQXJyYXk7Ci0gICAgY2FzZSBUeXBlRmxvYXQ2NDoKLSAgICAgICAg
cmV0dXJuIEpJVEZsb2F0NjRBcnJheTsKLSAgICBjYXNlIFR5cGVCaWdJbnQ2NDoKLSAgICAgICAg
cmV0dXJuIEpJVEJpZ0ludDY0QXJyYXk7Ci0gICAgY2FzZSBUeXBlQmlnVWludDY0OgotICAgICAg
ICByZXR1cm4gSklUQmlnVWludDY0QXJyYXk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQ1JBU0go
KTsKLSAgICAgICAgcmV0dXJuIEpJVENvbnRpZ3VvdXM7Ci0gICAgfQotfQotCi1pbmxpbmUgYm9v
bCBqaXRBcnJheU1vZGVQZXJtaXRzUHV0KEpJVEFycmF5TW9kZSBtb2RlKQotewotICAgIHN3aXRj
aCAobW9kZSkgewotICAgIGNhc2UgSklURGlyZWN0QXJndW1lbnRzOgotICAgIGNhc2UgSklUU2Nv
cGVkQXJndW1lbnRzOgotICAgIC8vIEZJWE1FOiBPcHRpbWl6ZSBCaWdJbnQ2NEFycmF5IC8gQmln
VWludDY0QXJyYXkgaW4gSUMKLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIxMTgzCi0gICAgY2FzZSBKSVRCaWdJbnQ2NEFycmF5OgotICAgIGNhc2UgSklU
QmlnVWludDY0QXJyYXk6Ci0gICAgICAgIC8vIFdlIGNvdWxkIHN1cHBvcnQgcHV0X2J5X3ZhbCBv
biB0aGVzZSBhdCBzb21lIHBvaW50LCBidXQgaXQncyBqdXN0IG5vdCB0aGF0IHByb2ZpdGFibGUK
LSAgICAgICAgLy8gYXQgdGhlIG1vbWVudC4KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLX0KLQotaW5saW5lIGJvb2wgaml0
QXJyYXlNb2RlUGVybWl0c1B1dERpcmVjdChKSVRBcnJheU1vZGUgbW9kZSkKLXsKLSAgICAvLyBX
ZSBkb24ndCBhbGxvdyB0eXBlZCBhcnJheSBwdXREaXJlY3QgaGVyZSBzaW5jZSBwdXREaXJlY3Qg
aGFzCi0gICAgLy8gZGVmaW5lT3duUHJvcGVydHkoe2NvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFi
bGU6dHJ1ZSwgZW51bWVyYWJsZTp0cnVlfSkKLSAgICAvLyBzZW1hbnRpY3MuIFR5cGVkIGFycmF5
IGluZGV4ZWQgcHJvcGVydGllcyBhcmUgbm9uLWNvbmZpZ3VyYWJsZSBieQotICAgIC8vIGRlZmF1
bHQsIHNvIHdlIGNhbid0IHNpbXBseSBzdG9yZSB0byBhIHR5cGVkIGFycmF5IGZvciBwdXREaXJl
Y3QuCi0gICAgLy8KLSAgICAvLyBXZSBjb3VsZCBtb2RlbCBwdXREaXJlY3Qgb24gU2NvcGVkQXJn
dW1lbnRzIGFuZCBEaXJlY3RBcmd1bWVudHMsIGJ1dCB3ZQotICAgIC8vIGhhdmVuJ3QgZm91bmQg
YW55IHBlcmZvcm1hbmNlIGluY2VudGl2ZSB0byBkbyBpdCB5ZXQuCi0gICAgc3dpdGNoIChtb2Rl
KSB7Ci0gICAgY2FzZSBKSVRJbnQzMjoKLSAgICBjYXNlIEpJVERvdWJsZToKLSAgICBjYXNlIEpJ
VENvbnRpZ3VvdXM6Ci0gICAgY2FzZSBKSVRBcnJheVN0b3JhZ2U6Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLWlu
bGluZSBUeXBlZEFycmF5VHlwZSB0eXBlZEFycmF5VHlwZUZvckpJVEFycmF5TW9kZShKSVRBcnJh
eU1vZGUgbW9kZSkKLXsKLSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEpJVEludDhBcnJh
eToKLSAgICAgICAgcmV0dXJuIFR5cGVJbnQ4OwotICAgIGNhc2UgSklUSW50MTZBcnJheToKLSAg
ICAgICAgcmV0dXJuIFR5cGVJbnQxNjsKLSAgICBjYXNlIEpJVEludDMyQXJyYXk6Ci0gICAgICAg
IHJldHVybiBUeXBlSW50MzI7Ci0gICAgY2FzZSBKSVRVaW50OEFycmF5OgotICAgICAgICByZXR1
cm4gVHlwZVVpbnQ4OwotICAgIGNhc2UgSklUVWludDhDbGFtcGVkQXJyYXk6Ci0gICAgICAgIHJl
dHVybiBUeXBlVWludDhDbGFtcGVkOwotICAgIGNhc2UgSklUVWludDE2QXJyYXk6Ci0gICAgICAg
IHJldHVybiBUeXBlVWludDE2OwotICAgIGNhc2UgSklUVWludDMyQXJyYXk6Ci0gICAgICAgIHJl
dHVybiBUeXBlVWludDMyOwotICAgIGNhc2UgSklURmxvYXQzMkFycmF5OgotICAgICAgICByZXR1
cm4gVHlwZUZsb2F0MzI7Ci0gICAgY2FzZSBKSVRGbG9hdDY0QXJyYXk6Ci0gICAgICAgIHJldHVy
biBUeXBlRmxvYXQ2NDsKLSAgICBjYXNlIEpJVEJpZ0ludDY0QXJyYXk6Ci0gICAgICAgIHJldHVy
biBUeXBlQmlnSW50NjQ7Ci0gICAgY2FzZSBKSVRCaWdVaW50NjRBcnJheToKLSAgICAgICAgcmV0
dXJuIFR5cGVCaWdVaW50NjQ7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQ1JBU0goKTsKLSAgICAg
ICAgcmV0dXJuIE5vdFR5cGVkQXJyYXk7Ci0gICAgfQotfQotCi1pbmxpbmUgSklUQXJyYXlNb2Rl
IGppdEFycmF5TW9kZUZvclN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLXsKLSAgICBp
ZiAoaXNPcHRpbWl6YWJsZUluZGV4aW5nVHlwZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSkK
LSAgICAgICAgcmV0dXJuIGppdEFycmF5TW9kZUZvckluZGV4aW5nVHlwZShzdHJ1Y3R1cmUtPmlu
ZGV4aW5nVHlwZSgpKTsKLSAgICAKLSAgICBpZiAoaGFzT3B0aW1pemFibGVJbmRleGluZ0ZvckpT
VHlwZShzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpKSkKLSAgICAgICAgcmV0dXJuIGppdEFy
cmF5TW9kZUZvckpTVHlwZShzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpKTsKLSAgICAKLSAg
ICBBU1NFUlQoaGFzT3B0aW1pemFibGVJbmRleGluZ0ZvckNsYXNzSW5mbyhzdHJ1Y3R1cmUtPmNs
YXNzSW5mbygpKSk7Ci0gICAgcmV0dXJuIGppdEFycmF5TW9kZUZvckNsYXNzSW5mbyhzdHJ1Y3R1
cmUtPmNsYXNzSW5mbygpKTsKLX0KLQotc3RydWN0IEJ5VmFsSW5mbyB7Ci0gICAgQnlWYWxJbmZv
KEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCkKLSAgICAgICAgOiBieXRlY29kZUluZGV4KGJ5
dGVjb2RlSW5kZXgpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQgc2V0VXAoQ29kZUxvY2F0aW9u
TGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gZXhjZXB0aW9uSGFuZGxlciwgSklUQXJyYXlN
b2RlIGFycmF5TW9kZSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUsIENvZGVMb2NhdGlvbkxh
YmVsPEpTSW50ZXJuYWxQdHJUYWc+IGRvbmVUYXJnZXQsIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50
ZXJuYWxQdHJUYWc+IGJhZFR5cGVOZXh0SG90UGF0aFRhcmdldCwgQ29kZUxvY2F0aW9uTGFiZWw8
SlNJbnRlcm5hbFB0clRhZz4gc2xvd1BhdGhUYXJnZXQpCi0gICAgewotICAgICAgICB0aGlzLT5l
eGNlcHRpb25IYW5kbGVyID0gZXhjZXB0aW9uSGFuZGxlcjsKLSAgICAgICAgdGhpcy0+ZG9uZVRh
cmdldCA9IGRvbmVUYXJnZXQ7Ci0gICAgICAgIHRoaXMtPmJhZFR5cGVOZXh0SG90UGF0aFRhcmdl
dCA9IGJhZFR5cGVOZXh0SG90UGF0aFRhcmdldDsKLSAgICAgICAgdGhpcy0+c2xvd1BhdGhUYXJn
ZXQgPSBzbG93UGF0aFRhcmdldDsKLSAgICAgICAgdGhpcy0+YXJyYXlQcm9maWxlID0gYXJyYXlQ
cm9maWxlOwotICAgICAgICB0aGlzLT5zbG93UGF0aENvdW50ID0gMDsKLSAgICAgICAgdGhpcy0+
c3R1YkluZm8gPSBudWxscHRyOwotICAgICAgICB0aGlzLT5hcnJheU1vZGUgPSBhcnJheU1vZGU7
Ci0gICAgICAgIHRoaXMtPnRvb2tTbG93UGF0aCA9IGZhbHNlOwotICAgICAgICB0aGlzLT5zZWVu
ID0gZmFsc2U7Ci0gICAgfQotCi0gICAgREVDTEFSRV9WSVNJVF9BR0dSRUdBVEU7Ci0KLSAgICBz
dGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU2xvd09wZXJhdGlvbigpIHsgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihCeVZhbEluZm8sIG1fc2xvd09wZXJhdGlvbik7IH0KLSAgICBzdGF0aWMgcHRyZGlm
Zl90IG9mZnNldE9mTm90SW5kZXhKdW1wVGFyZ2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KEJ5VmFsSW5mbywgbV9ub3RJbmRleEp1bXBUYXJnZXQpOyB9Ci0gICAgc3RhdGljIHB0cmRpZmZf
dCBvZmZzZXRPZkJhZFR5cGVKdW1wVGFyZ2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEJ5
VmFsSW5mbywgbV9iYWRUeXBlSnVtcFRhcmdldCk7IH0KLQotICAgIEZ1bmN0aW9uUHRyPE9wZXJh
dGlvblB0clRhZz4gbV9zbG93T3BlcmF0aW9uOwotCi0gICAgdW5pb24gewotICAgICAgICBDb2Rl
TG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4gbV9ub3RJbmRleEp1bXBUYXJnZXQ7
Ci0gICAgICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gbV9ub3RJbmRleEp1
bXA7Ci0gICAgfTsKLSAgICB1bmlvbiB7Ci0gICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPiBtX2JhZFR5cGVKdW1wVGFyZ2V0OwotICAgICAgICBDb2RlTG9jYXRp
b25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IG1fYmFkVHlwZUp1bXA7Ci0gICAgfTsKLQotICAgIENv
ZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGV4Y2VwdGlvbkhhbmRsZXI7
Ci0gICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gZG9uZVRhcmdldDsKLSAg
ICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBiYWRUeXBlTmV4dEhvdFBhdGhU
YXJnZXQ7Ci0gICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gc2xvd1BhdGhU
YXJnZXQ7Ci0gICAgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGU7Ci0gICAgQnl0ZWNvZGVJbmRl
eCBieXRlY29kZUluZGV4OwotICAgIHVuc2lnbmVkIHNsb3dQYXRoQ291bnQ7Ci0gICAgUmVmUHRy
PEpJVFN0dWJSb3V0aW5lPiBzdHViUm91dGluZTsKLSAgICBDYWNoZWFibGVJZGVudGlmaWVyIGNh
Y2hlZElkOyAvLyBPbmNlIHdlIHNldCBjYWNoZWRJZCwgd2UgbXVzdCBub3QgY2hhbmdlIHRoZSB2
YWx1ZS4gSklUIGNvZGUgcmVsaWVzIG9uIHRoYXQgY29uZmlndXJlZCBjYWNoZWRJZCBpcyBtYXJr
ZWQgYW5kIHJldGFpbmVkIGJ5IENvZGVCbG9jayB0aHJvdWdoIEJ5VmFsSW5mby4KLSAgICBTdHJ1
Y3R1cmVTdHViSW5mbyogc3R1YkluZm87Ci0gICAgSklUQXJyYXlNb2RlIGFycmF5TW9kZTsgLy8g
VGhlIGFycmF5IG1vZGUgdGhhdCB3YXMgYmFrZWQgaW50byB0aGUgaW5saW5lIEpJVCBjb2RlLgot
ICAgIGJvb2wgdG9va1Nsb3dQYXRoIDogMTsKLSAgICBib29sIHNlZW4gOiAxOwotfTsKLQotaW5s
aW5lIEJ5dGVjb2RlSW5kZXggZ2V0QnlWYWxJbmZvQnl0ZWNvZGVJbmRleChCeVZhbEluZm8qIGlu
Zm8pCi17Ci0gICAgcmV0dXJuIGluZm8tPmJ5dGVjb2RlSW5kZXg7Ci19Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoSklUKQotCi19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggZGNlZmM2YWQ2YzJkYTBhMTQ4OThjZmNmNjE4
OWM2ZTk0ZDIwZTU2ZS4uYzc2NmEyNjllOGNkZWQ0ZDcxZDg2ODJhNjdkN2M0M2M1ZmZhOTk2NiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTMy
LDcgKzMyLDYgQEAKIAogI2luY2x1ZGUgIkFyaXRoUHJvZmlsZS5oIgogI2luY2x1ZGUgIkJhc2lj
QmxvY2tMb2NhdGlvbi5oIgotI2luY2x1ZGUgIkJ5VmFsSW5mby5oIgogI2luY2x1ZGUgIkJ5dGVj
b2RlRHVtcGVyLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5o
IgogI2luY2x1ZGUgIkJ5dGVjb2RlT3BlcmFuZHNGb3JDaGVja3BvaW50LmgiCkBAIC0xNjI2LDgg
KzE2MjUsNiBAQCB2b2lkIENvZGVCbG9jazo6Z2V0SUNTdGF0dXNNYXAoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJiwgSUNTdGF0dXNNYXAmIHJlc3VsdCkKICAgICAgICAgICAgICAgICByZXN1bHQu
YWRkKHN0dWJJbmZvLT5jb2RlT3JpZ2luLCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUuc3R1
YkluZm8gPSBzdHViSW5mbzsKICAgICAgICAgICAgIGZvciAoQ2FsbExpbmtJbmZvKiBjYWxsTGlu
a0luZm8gOiBqaXREYXRhLT5tX2NhbGxMaW5rSW5mb3MpCiAgICAgICAgICAgICAgICAgcmVzdWx0
LmFkZChjYWxsTGlua0luZm8tPmNvZGVPcmlnaW4oKSwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZh
bHVlLmNhbGxMaW5rSW5mbyA9IGNhbGxMaW5rSW5mbzsKLSAgICAgICAgICAgIGZvciAoQnlWYWxJ
bmZvKiBieVZhbEluZm8gOiBqaXREYXRhLT5tX2J5VmFsSW5mb3MpCi0gICAgICAgICAgICAgICAg
cmVzdWx0LmFkZChDb2RlT3JpZ2luKGJ5VmFsSW5mby0+Ynl0ZWNvZGVJbmRleCksIElDU3RhdHVz
KCkpLml0ZXJhdG9yLT52YWx1ZS5ieVZhbEluZm8gPSBieVZhbEluZm87CiAgICAgICAgIH0KICNp
ZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgaWYgKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChq
aXRUeXBlKCkpKSB7CkBAIC0xNjk5LDI0ICsxNjk2LDYgQEAgU3RydWN0dXJlU3R1YkluZm8qIENv
ZGVCbG9jazo6ZmluZFN0dWJJbmZvKENvZGVPcmlnaW4gY29kZU9yaWdpbikKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotQnlWYWxJbmZvKiBDb2RlQmxvY2s6OmZpbmRCeVZhbEluZm8oQ29kZU9y
aWdpbiBjb2RlT3JpZ2luKQotewotICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2Nr
KTsKLSAgICBpZiAoYXV0byogaml0RGF0YSA9IG1faml0RGF0YS5nZXQoKSkgewotICAgICAgICBm
b3IgKEJ5VmFsSW5mbyogYnlWYWxJbmZvIDogaml0RGF0YS0+bV9ieVZhbEluZm9zKSB7Ci0gICAg
ICAgICAgICBpZiAoYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4ID09IGNvZGVPcmlnaW4uYnl0ZWNv
ZGVJbmRleCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBieVZhbEluZm87Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLUJ5VmFsSW5mbyogQ29kZUJsb2NrOjph
ZGRCeVZhbEluZm8oQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQotewotICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICByZXR1cm4gZW5zdXJlSklURGF0YShsb2Nr
ZXIpLm1fYnlWYWxJbmZvcy5hZGQoYnl0ZWNvZGVJbmRleCk7Ci19Ci0KIENhbGxMaW5rSW5mbyog
Q29kZUJsb2NrOjphZGRDYWxsTGlua0luZm8oQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQogewogICAg
IENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKQEAgLTE4MjgsOCArMTgwNyw2IEBA
IHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXJlbmNlcyhjb25zdCBDb25j
dXJyZW50SlNMb2NrZXImIGxvY2tlciwKIAogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKGF1dG8q
IGppdERhdGEgPSBtX2ppdERhdGEuZ2V0KCkpIHsKLSAgICAgICAgZm9yIChCeVZhbEluZm8qIGJ5
VmFsSW5mbyA6IGppdERhdGEtPm1fYnlWYWxJbmZvcykKLSAgICAgICAgICAgIGJ5VmFsSW5mby0+
dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CiAgICAgICAgIGZvciAoU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3MpCiAgICAgICAgICAgICBzdHViSW5mby0+
dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGYzODc5OTI1NjQyOGRkOGRhYjdlMWJhZWIwZTI0MTBi
MzEyMzYwMGQuLjRmNzBmYTlmZjgxYjMzYzdiZjA0NjkxZGI1MjFmNjkzYWEzZjk0YjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTk3LDcgKzk3LDYg
QEAgY2xhc3MgTWV0YWRhdGFUYWJsZTsKIGNsYXNzIFBDVG9Db2RlT3JpZ2luTWFwOwogY2xhc3Mg
UmVnaXN0ZXJBdE9mZnNldExpc3Q7CiBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKLXN0cnVjdCBC
eVZhbEluZm87CiAKIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKENvZGVC
bG9ja1JhcmVEYXRhKTsKIApAQCAtMjc1LDcgKzI3NCw2IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1
YmxpYyBKU0NlbGwgewogICAgICAgICBCYWc8SklUTXVsSUM+IG1fbXVsSUNzOwogICAgICAgICBC
YWc8SklUTmVnSUM+IG1fbmVnSUNzOwogICAgICAgICBCYWc8SklUU3ViSUM+IG1fc3ViSUNzOwot
ICAgICAgICBCYWc8QnlWYWxJbmZvPiBtX2J5VmFsSW5mb3M7CiAgICAgICAgIEJhZzxDYWxsTGlu
a0luZm8+IG1fY2FsbExpbmtJbmZvczsKICAgICAgICAgU2VudGluZWxMaW5rZWRMaXN0PENhbGxM
aW5rSW5mbywgUGFja2VkUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4+IG1faW5jb21pbmdD
YWxsczsKICAgICAgICAgU2VudGluZWxMaW5rZWRMaXN0PFBvbHltb3JwaGljQ2FsbE5vZGUsIFBh
Y2tlZFJhd1NlbnRpbmVsTm9kZTxQb2x5bW9ycGhpY0NhbGxOb2RlPj4gbV9pbmNvbWluZ1BvbHlt
b3JwaGljQ2FsbHM7CkBAIC0zMTYsMTAgKzMxNCw2IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1Ymxp
YyBKU0NlbGwgewogCiAgICAgLy8gTyhuKSBvcGVyYXRpb24uIFVzZSBnZXRJQ1N0YXR1c01hcCgp
IHVubGVzcyB5b3UgcmVhbGx5IG9ubHkgaW50ZW5kIHRvIGdldCBvbmUgc3R1YiBpbmZvLgogICAg
IFN0cnVjdHVyZVN0dWJJbmZvKiBmaW5kU3R1YkluZm8oQ29kZU9yaWdpbik7Ci0gICAgLy8gTyhu
KSBvcGVyYXRpb24uIFVzZSBnZXRJQ1N0YXR1c01hcCgpIHVubGVzcyB5b3UgcmVhbGx5IG9ubHkg
aW50ZW5kIHRvIGdldCBvbmUgYnktdmFsLWluZm8uCi0gICAgQnlWYWxJbmZvKiBmaW5kQnlWYWxJ
bmZvKENvZGVPcmlnaW4pOwotCi0gICAgQnlWYWxJbmZvKiBhZGRCeVZhbEluZm8oQnl0ZWNvZGVJ
bmRleCk7CiAKICAgICBDYWxsTGlua0luZm8qIGFkZENhbGxMaW5rSW5mbyhDb2RlT3JpZ2luKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFw
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNNYXAuaAppbmRleCA3
YTA1OGMzZDAyNTk2YmY2ZWE4ZmY5YThhNzJiNGRjMmExZDE4OTIzLi5hNzY4YTg1ZGMxYmYwOWIy
OWViNGI5OTZmZWE3NGJhMjJkMzUwMzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSUNTdGF0dXNNYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSUNTdGF0dXNNYXAuaApAQCAtMzksMTIgKzM5LDEwIEBAIGNsYXNzIEluQnlTdGF0dXM7
CiBjbGFzcyBQdXRCeVN0YXR1czsKIGNsYXNzIERlbGV0ZUJ5U3RhdHVzOwogY2xhc3MgU3RydWN0
dXJlU3R1YkluZm87Ci1zdHJ1Y3QgQnlWYWxJbmZvOwogCiBzdHJ1Y3QgSUNTdGF0dXMgewogICAg
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyB7IG51bGxwdHIgfTsKICAgICBDYWxsTGlua0lu
Zm8qIGNhbGxMaW5rSW5mbyB7IG51bGxwdHIgfTsKLSAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyB7
IG51bGxwdHIgfTsKICAgICBDYWxsTGlua1N0YXR1cyogY2FsbFN0YXR1cyB7IG51bGxwdHIgfTsK
ICAgICBHZXRCeVN0YXR1cyogZ2V0U3RhdHVzIHsgbnVsbHB0ciB9OwogICAgIEluQnlTdGF0dXMq
IGluU3RhdHVzIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBjNDU1ZWI1YmQ1MDA1ZDdkZjc1MWRmMGEyNDc1MWNm
YmIxZTU1OTc5Li5kMDA5YzlhMmU0ZjZkNWVmYmI3OTM0YjVhMGNlZGFhYTYyYzk0NDU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAt
NjQ1MywxMiArNjQ1MywxMSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkIGxpbWl0KQogICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQoYnl0ZWNvZGUubV92YWx1
ZSk7CiAgICAgICAgICAgICBib29sIGNvbXBpbGVkQXNQdXRQcml2YXRlTmFtZUJ5SWQgPSBmYWxz
ZTsKIAorICAgICAgICAgICAgUHV0QnlTdGF0dXMgc3RhdHVzID0gUHV0QnlTdGF0dXM6OmNvbXB1
dGVGb3IobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2lubGluZVN0YWNrVG9w
LT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrLCBjdXJyZW50Q29kZU9yaWdpbigpKTsK
KwogICAgICAgICAgICAgaWYgKCFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4
aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRJZGVudCkKICAgICAgICAgICAgICAgICAmJiAhbV9p
bmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwg
QmFkVHlwZSkKICAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJv
ZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ29uc3RhbnRWYWx1ZSkpIHsKLQot
ICAgICAgICAgICAgICAgIFB1dEJ5U3RhdHVzIHN0YXR1cyA9IFB1dEJ5U3RhdHVzOjpjb21wdXRl
Rm9yKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9pbmxpbmVTdGFja1RvcC0+
bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywgY3VycmVudENvZGVPcmlnaW4oKSk7Ci0K
ICAgICAgICAgICAgICAgICBpZiAoQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gc3Rh
dHVzLnNpbmdsZUlkZW50aWZpZXIoKSkgewogICAgICAgICAgICAgICAgICAgICBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkID0gaWRlbnRpZmllci51aWQoKTsKICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUodWlk
KTsKQEAgLTY0NzMsMTEgKzY0NzIsMzcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZCBsaW1pdCkKIAogICAgICAgICAgICAgICAgICAgICBoYW5kbGVQdXRQcml2YXRl
TmFtZUJ5SWQoYmFzZSwgaWRlbnRpZmllciwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHN0YXR1
cywgYnl0ZWNvZGUubV9wdXRLaW5kKTsKICAgICAgICAgICAgICAgICAgICAgY29tcGlsZWRBc1B1
dFByaXZhdGVOYW1lQnlJZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdGF0
dXMudGFrZXNTbG93UGF0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEV2ZW4gdGhvdWdo
IHN0YXR1cyBpcyB0YWtpbmcgYSBzbG93IHBhdGgsIGl0IGlzIHBvc3NpYmxlIHRoYXQgdGhpcyBu
b2RlIHN0aWxsIGhhcyBjb25zdGFudCBpZGVudGlmaWVyIGFuZCB1c2luZyBQdXRCeUlkIGlzIGFs
d2F5cyBiZXR0ZXIgaW4gdGhhdCBjYXNlLgorICAgICAgICAgICAgICAgICAgICBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgSlNDZWxsKiBwcm9w
ZXJ0eUNlbGwgPSBudWxscHRyOworICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogc3ltYm9s
ID0gcHJvcGVydHktPmR5bmFtaWNDYXN0Q29uc3RhbnQ8U3ltYm9sKj4oKm1fdm0pKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICB1aWQgPSAmc3ltYm9sLT51aWQoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHByb3BlcnR5Q2VsbCA9IHN5bWJvbDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dyYXBoLmZyZWV6ZVN0cm9uZyhzeW1ib2wpOworICAg
ICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0lzQ29uc3RhbnQsIE9wSW5mbyhm
cm96ZW4pLCBwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXV0byog
c3RyaW5nID0gcHJvcGVydHktPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNTdHJpbmcqPigqbV92bSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiBpbXBsID0gc3RyaW5nLT50cnlH
ZXRWYWx1ZUltcGwoKTsgaW1wbC0+aXNBdG9tKCkgJiYgIXBhcnNlSW5kZXgoKmNvbnN0X2Nhc3Q8
U3RyaW5nSW1wbCo+KGltcGwpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpZCA9
IGJpdHdpc2VfY2FzdDxVbmlxdWVkU3RyaW5nSW1wbCo+KGltcGwpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByb3BlcnR5Q2VsbCA9IHN0cmluZzsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2dyYXBoLmZyZWV6ZVN0cm9uZyhzdHJpbmcpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tJZGVudCwgT3BJbmZvKHVpZCksIHByb3BlcnR5KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgICAgIGlmICh1aWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2dyYXBoLmlkZW50aWZpZXJzKCkuZW5zdXJlKHVpZCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVQdXRQcml2YXRlTmFtZUJ5SWQoYmFzZSwg
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUNlbGwocHJvcGVydHlDZWxsKSwgaWRlbnRp
Zmllck51bWJlciwgdmFsdWUsIHN0YXR1cywgYnl0ZWNvZGUubV9wdXRLaW5kKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbXBpbGVkQXNQdXRQcml2YXRlTmFtZUJ5SWQgPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBpZiAoIWNvbXBpbGVkQXNQdXRQcml2YXRlTmFtZUJ5SWQpCi0gICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaChQdXRQcml2YXRlTmFtZSwgT3BJbmZvKCksIE9wSW5mbyhieXRlY29k
ZS5tX3B1dEtpbmQpLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUpOworICAgICAgICAgICAgaWYgKCFj
b21waWxlZEFzUHV0UHJpdmF0ZU5hbWVCeUlkKSB7CisgICAgICAgICAgICAgICAgTm9kZSogcHV0
UHJpdmF0ZU5hbWUgPSBhZGRUb0dyYXBoKFB1dFByaXZhdGVOYW1lLCBPcEluZm8oKSwgT3BJbmZv
KGJ5dGVjb2RlLm1fcHV0S2luZCksIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSk7CisgICAgICAgICAg
ICAgICAgaWYgKHN0YXR1cy5vYnNlcnZlZFN0cnVjdHVyZVN0dWJJbmZvU2xvd1BhdGgoKSkKKyAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3Nsb3dQdXRCeVZhbC5hZGQocHV0UHJpdmF0ZU5h
bWUpOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfcHJp
dmF0ZV9uYW1lKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKaW5kZXggZTI1YjFmMzg1NDkzNTRhZTEzMmFkZGJjYjY4YWNiOWRhODBiNTI5
OC4uNGVmMTNiNjYwNzQwZmRkMGQyNWI2YWQxNTFjMDk1MmM3MjZjNGFjZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xOTUyLDggKzE5NTIsMTYg
QEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgQ2hlY2tQcml2YXRlQnJhbmQ6CisgICAgICAgIGNh
c2UgQ2hlY2tQcml2YXRlQnJhbmQ6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8U3ltYm9sVXNlPihu
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAg
IGNhc2UgUHV0UHJpdmF0ZU5hbWU6IHsKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+
c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZpeEVk
Z2U8VW50eXBlZFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgZml4RWRnZTxTeW1i
b2xVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4
IDJiNjM2NjYxNjFiMTk3ZDBlNThkY2VlYWZjMDgzZTU0MTYzZDI5YmMuLjdmNTg3MDViMWU4NzI2
YTljYzdkNzg3MmJjMTQ0ZTYyNWU3NGE1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zNzQ2LDkgKzM3NDYsNiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxGb3JPYmplY3RXaXRoU3ltYm9sKE5vZGUqIG5v
ZGUsIGNvbnN0IFNjb3BlZAogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0
ZU5hbWUoTm9kZSogbm9kZSkKIHsKLSAgICBpZiAobm9kZS0+aGFzQ2FjaGVhYmxlSWRlbnRpZmll
cigpKQotICAgICAgICByZXR1cm4gY29tcGlsZUdldFByaXZhdGVOYW1lQnlJZChub2RlKTsKLQog
ICAgIHN3aXRjaCAobV9ncmFwaC5jaGlsZChub2RlLCAwKS51c2VLaW5kKCkpIHsKICAgICBjYXNl
IENlbGxVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2dy
YXBoLmNoaWxkKG5vZGUsIDApKTsKQEAgLTM5NDEsMjEgKzM5MzgsNzcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsV2l0aFRoaXMoTm9kZSogbm9kZSkKIAogdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lKE5vZGUqIG5vZGUpCiB7Ci0gICAgQVNT
RVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKLSAgICBKU1ZhbHVl
T3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBwcm9wZXJ0eVZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKLSAgICBKU1ZhbHVlT3Bl
cmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDMoKSk7CisgICAgRWRnZSYgY2hpbGQxID0gbm9k
ZS0+Y2hpbGQxKCk7CisgICAgRWRnZSYgY2hpbGQyID0gbm9kZS0+Y2hpbGQyKCk7CisgICAgRWRn
ZSYgY2hpbGQzID0gbm9kZS0+Y2hpbGQzKCk7CisgICAgaWYgKG1fZ3JhcGgubV9zbG93UHV0QnlW
YWwuY29udGFpbnMobm9kZSkgfHwgKGNoaWxkMS51c2VLaW5kKCkgIT0gQ2VsbFVzZSAmJiBjaGls
ZDEudXNlS2luZCgpICE9IEtub3duQ2VsbFVzZSkpIHsKKyAgICAgICAgQVNTRVJUKGNoaWxkMSgp
LnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0
aGlzLCBjaGlsZDEpOworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm9wZXJ0eVZhbHVl
KHRoaXMsIGNoaWxkMik7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIGNoaWxk
Myk7CiAKLSAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwot
ICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygpOworICAgICAgICBK
U1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOworICAgICAgICBKU1Zh
bHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKKworICAgICAgICBHUFJSZWcg
cHJvcGVydHlHUFIgPSBwcm9wZXJ0eVZhbHVlLmdwcigpOworCisgICAgICAgIHNwZWN1bGF0ZVN5
bWJvbChjaGlsZDIsIHByb3BlcnR5R1BSKTsKKworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwor
ICAgICAgICBhdXRvIG9wZXJhdGlvbiA9IG5vZGUtPnByaXZhdGVGaWVsZFB1dEtpbmQoKS5pc0Rl
ZmluZSgpID8gb3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmllbGRHZW5lcmljIDogb3Bl
cmF0aW9uUHV0QnlWYWxTZXRQcml2YXRlRmllbGRHZW5lcmljOworICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCBDQ2Fs
bEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eUdQUiksIHZhbHVlUmVncywgVHJ1c3RlZEltbVB0
cihudWxscHRyKSwgVHJ1c3RlZEltbVB0cihudWxscHRyKSk7CisgICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CisKKyAgICAgICAgbm9SZXN1bHQobm9kZSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CiAKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIGNoaWxkMSk7Cisg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVydHlWYWx1ZSh0aGlzLCBjaGlsZDIpOworICAg
IEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIGNoaWxkMyk7CisKKyAgICBHUFJSZWcgYmFzZUdQ
UiA9IGJhc2UuZ3ByKCk7CiAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcHJvcGVydHlWYWx1ZS5n
cHIoKTsKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwog
Ci0gICAgc3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNoaWxkMigpLCBwcm9wZXJ0eUdQUik7CisgICAg
R1BSVGVtcG9yYXJ5IHN0dWJJbmZvOworICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEludmFsaWRH
UFJSZWc7CisgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7Cisg
ICAgICAgIHN0dWJJbmZvID0gR1BSVGVtcG9yYXJ5KHRoaXMpOworICAgICAgICBzdHViSW5mb0dQ
UiA9IHN0dWJJbmZvLmdwcigpOworICAgIH0KIAotICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVy
dHlHUFIpLCB2YWx1ZVJlZ3MsIFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIFRydXN0ZWRJbW0zMihu
b2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCkudmFsdWUoKSkpOwotICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CisgICAgc3BlY3VsYXRlU3ltYm9sKGNoaWxkMiwgcHJvcGVydHlHUFIpOworCisg
ICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOworICAgIENh
bGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhj
ZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUo
KSk7CisgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMo
KTsKKworICAgIEpJVFB1dEJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9qaXQuY29kZUJs
b2NrKCksIEpJVFR5cGU6OkRGR0pJVCwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6
OlB1dEJ5VmFsLCB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9u
bHkoYmFzZUdQUiksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShwcm9wZXJ0eUdQUiksIHZhbHVl
UmVncywgSW52YWxpZEdQUlJlZywgc3R1YkluZm9HUFIpOworICAgIGdlbi5zdHViSW5mbygpLT5w
cm9wZXJ0eUlzU3ltYm9sID0gdHJ1ZTsKKworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0
KTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisgICAgaWYgKCFKSVRD
b2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChnZW4uc2xvd1BhdGhKdW1wKCkpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2Vu
ZXJhdG9yPiBzbG93UGF0aDsKKyAgICBhdXRvIG9wZXJhdGlvbiA9IG5vZGUtPnByaXZhdGVGaWVs
ZFB1dEtpbmQoKS5pc0RlZmluZSgpID8gb3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmll
bGRPcHRpbWl6ZSA6IG9wZXJhdGlvblB1dEJ5VmFsU2V0UHJpdmF0ZUZpZWxkT3B0aW1pemU7Cisg
ICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CisgICAgICAgIHNs
b3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdl
bi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZv
R1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRp
b24sCisgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBDQ2FsbEhlbHBlcnM6
OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHlHUFIp
LCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBudWxscHRyKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywg
b3BlcmF0aW9uLAorICAgICAgICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgQ0NhbGxI
ZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKHByb3Bl
cnR5R1BSKSwgdmFsdWVSZWdzLCBnZW4uc3R1YkluZm8oKSwgbnVsbHB0cik7CisgICAgfQorCisg
ICAgbV9qaXQuYWRkUHV0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CisgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAppbmRleCAwYmVmZWRhYzQ5Y2YwYjVkZWVjNTU2ODFjY2EwMGI1YWQ2YzNhY2VmLi41
NTU5ZTEwNTU5NWQ5YzQ5MzU0ZTRmNWU2MmE4MzMzNDRiMTgxOWQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTI1
OTIsMTIgKzI1OTIsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIEdldFByaXZhdGVOYW1lOgotICAg
IGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgY2FzZSBHZXRQcml2YXRlTmFtZTogewog
ICAgICAgICBjb21waWxlR2V0UHJpdmF0ZU5hbWUobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIAorICAgIGNhc2UgR2V0UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgICAgIGNvbXBpbGVHZXRQ
cml2YXRlTmFtZUJ5SWQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2Ug
R2V0QnlWYWw6IHsKICAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkganNWYWx1ZVJlc3VsdDsK
ICAgICAgICAgR1BSVGVtcG9yYXJ5IG9uZVJlZ1Jlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGQ0NTVjYTRlNjhlNDcw
YmQ0Yjk2YmUwYWUxYTkwMjlkN2JlYWNlYTguLjhkOGFlYjEzYThkMTM2ZGE4OWY5OWU5NDRjNmEx
MmM1MmI4ZjMyMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcApAQCAtMzEwOCwxMiArMzEwOCwxNiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNh
c2UgR2V0UHJpdmF0ZU5hbWU6Ci0gICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6IHsKKyAgICBj
YXNlIEdldFByaXZhdGVOYW1lOiB7CiAgICAgICAgIGNvbXBpbGVHZXRQcml2YXRlTmFtZShub2Rl
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRQcml2YXRlTmFtZUJ5SWQ6
IHsKKyAgICAgICAgY29tcGlsZUdldFByaXZhdGVOYW1lQnlJZChub2RlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRCeVZhbDogewogICAgICAgICBKU1ZhbHVlUmVnc1Rl
bXBvcmFyeSByZXN1bHQ7CiAgICAgICAgIGNvbXBpbGVHZXRCeVZhbChub2RlLCBzY29wZWRMYW1i
ZGE8c3RkOjp0dXBsZTxKU1ZhbHVlUmVncywgRGF0YUZvcm1hdD4oRGF0YUZvcm1hdCBwcmVmZXJy
ZWRGb3JtYXQpPihbJl0gKERhdGFGb3JtYXQgcHJlZmVycmVkRm9ybWF0KSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9u
UGhhc2UuY3BwCmluZGV4IDk3YmI2ZTA4Njk5MzUyM2MyOWUxZTExMGEyMDQzODAyOWEwZDI3ZDMu
LmRjMzIwMjE4OGViMjUzYWNhYjBiMmU0ZDJjYjQ0YWFhMDdiMmNlNjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9u
UGhhc2UuY3BwCkBAIC0yNzUsNiArMjc1LDEyIEBAIGNsYXNzIFN0b3JlQmFycmllckluc2VydGlv
blBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgUHV0UHJpdmF0ZU5hbWU6
IHsKKyAgICAgICAgICAgICAgICBpZiAoIW1fZ3JhcGgubV9zbG93UHV0QnlWYWwuY29udGFpbnMo
bV9ub2RlKSAmJiAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSB8fCBtX25v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBLbm93bkNlbGxVc2UpKQorICAgICAgICAgICAgICAg
ICAgICBjb25zaWRlckJhcnJpZXIobV9ub2RlLT5jaGlsZDEoKSwgbV9ub2RlLT5jaGlsZDMoKSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGNh
c2UgUHV0UHJpdmF0ZU5hbWVCeUlkOiB7CiAgICAgICAgICAgICAgICAgLy8gV2UgZW1pdCBJQyBj
b2RlIHdoZW4gd2UgaGF2ZSBhIG5vbi1udWxsIGNhY2hlYWJsZUlkZW50aWZpZXIgYW5kIHdlIG5l
ZWQgdG8gaW50cm9kdWNlIGEKICAgICAgICAgICAgICAgICAvLyBiYXJyaWVyIGZvciBpdC4gT24g
UHV0UHJpdmF0ZU5hbWUsIHdlIHBlcmZvcm0gc3RvcmUgYmFycmllciBkdXJpbmcgc2xvdyBwYXRo
IGV4ZWN1dGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAppbmRleCA5MjE2ZTgyNDdjOTVjYWZhMzZiMDEzNjQwYjkyZmE4MTE2NTMxNWMxLi41ODA3
ZGU0ZTM1ODk3ZWExYjBkODdkNzA5ZjE1NDk1MTBiYTRmZTU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC00MjYyLDE1ICs0MjYyLDEwMCBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgdm9pZCBjb21waWxlUHV0UHJpdmF0ZU5hbWUo
KQogICAgIHsKLSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
KTsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgRWRnZSYgY2hpbGQx
ID0gbV9ub2RlLT5jaGlsZDEoKTsKKyAgICAgICAgRWRnZSYgY2hpbGQyID0gbV9ub2RlLT5jaGls
ZDIoKTsKKyAgICAgICAgRWRnZSYgY2hpbGQzID0gbV9ub2RlLT5jaGlsZDMoKTsKKyAgICAgICAg
aWYgKG1fZ3JhcGgubV9zbG93UHV0QnlWYWwuY29udGFpbnMobV9ub2RlKSB8fCAoY2hpbGQxLnVz
ZUtpbmQoKSAhPSBDZWxsVXNlICYmIGNoaWxkMS51c2VLaW5kKCkgIT0gS25vd25DZWxsVXNlKSkg
eworICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIGNoaWxkMS51c2VLaW5k
KCkgPT0gVW50eXBlZFVzZSwgY2hpbGQxLnVzZUtpbmQoKSk7CiAKLSAgICAgICAgTFZhbHVlIGJh
c2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBMVmFsdWUgcHJvcGVy
dHkgPSBsb3dTeW1ib2wobV9ub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIExWYWx1ZSB2YWx1ZSA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDMoKSk7CisgICAgICAgICAgICBMVmFsdWUgYmFzZSA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBMVmFsdWUgcHJvcGVy
dHkgPSBsb3dTeW1ib2wobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBMVmFsdWUgdmFs
dWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQzKCkpOworCisgICAgICAgICAgICBhdXRvIG9w
ZXJhdGlvbiA9IG1fbm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVmaW5lKCkgPyBvcGVy
YXRpb25QdXRCeVZhbERlZmluZVByaXZhdGVGaWVsZEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZh
bFNldFByaXZhdGVGaWVsZEdlbmVyaWM7CisgICAgICAgICAgICB2bUNhbGwoVm9pZCwgb3BlcmF0
aW9uLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIG1f
b3V0LmNvbnN0SW50UHRyKDApLCBtX291dC5jb25zdEludFB0cigwKSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOwogCi0gICAg
ICAgIHZtQ2FsbChWb2lkLCBvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMsCi0gICAgICAg
ICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIG1f
b3V0LmNvbnN0SW50UHRyKDApLCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+cHJpdmF0ZUZpZWxk
UHV0S2luZCgpLnZhbHVlKCkpKTsKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxsKGNoaWxk
MSk7CisgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd1N5bWJvbChjaGlsZDIpOworICAgICAg
ICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGNoaWxkMyk7CisKKyAgICAgICAgUGF0Y2hwb2lu
dFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChWb2lkKTsKKyAgICAgICAgcGF0
Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGJhc2UpOworICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmRTb21lUmVnaXN0ZXIocHJvcGVydHkpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRT
b21lUmVnaXN0ZXIodmFsdWUpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxs
TWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwor
ICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVn
KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmNsb2Ji
ZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hw
b2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6
OkZUTEpJVCkgPyAxIDogMDsKKworICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhh
bmRsZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBh
dGNocG9pbnQpOworCisgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAg
ICBDb2RlT3JpZ2luIG5vZGVTZW1hbnRpY09yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsK
KyAgICAgICAgYXV0byBvcGVyYXRpb24gPSBub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCkuaXNE
ZWZpbmUoKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGVmaW5lUHJpdmF0ZUZpZWxkT3B0aW1pemUgOiBv
cGVyYXRpb25QdXRCeVZhbFNldFByaXZhdGVGaWVsZE9wdGltaXplOworICAgICAgICBwYXRjaHBv
aW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBH
ZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNo
UmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKworICAgICAgICAgICAgQ2FsbFNpdGVJ
bmRleCBjYWxsU2l0ZUluZGV4ID0gc3RhdGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+
YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlU2VtYW50aWNPcmlnaW4pOworCisgICAgICAgICAg
ICAvLyBUaGlzIGlzIHRoZSBkaXJlY3QgZXhpdCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBjYWxscy4K
KyAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zID0gZXhj
ZXB0aW9uSGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOwor
CisgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBleGl0IGZvciBjYWxsIElDJ3MgY3JlYXRlZCBi
eSB0aGUgSUMgZm9yIGdldHRlcnMuIFdlIGRvbid0IGhhdmUKKyAgICAgICAgICAgIC8vIHRvIGRv
IGFueXRoaW5nIHdlaXJkIG90aGVyIHRoYW4gY2FsbCB0aGlzLCBzaW5jZSBpdCB3aWxsIGFzc29j
aWF0ZSB0aGUgZXhpdCB3aXRoCisgICAgICAgICAgICAvLyB0aGUgY2FsbHNpdGUgaW5kZXguCisg
ICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uRm9yVW53aW5k
KHBhcmFtcywgY2FsbFNpdGVJbmRleCk7CisKKyAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0g
cGFyYW1zWzBdLmdwcigpOworICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcGFyYW1z
WzFdLmdwcigpOworICAgICAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gcGFyYW1zWzJdLmdwcigp
OworICAgICAgICAgICAgR1BSUmVnIHN0dWJJbmZvR1BSID0gSklUQ29kZTo6dXNlRGF0YUlDKEpJ
VFR5cGU6OkZUTEpJVCkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogSW52YWxpZEdQUlJlZzsKKwor
ICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUUHV0QnlWYWxHZW5lcmF0b3I+Ojpj
cmVhdGUoCisgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpGVExKSVQs
IG5vZGVTZW1hbnRpY09yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6UHV0QnlWYWws
CisgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVS
ZWdzKGJhc2VHUFIpLCBKU1ZhbHVlUmVncyhwcm9wZXJ0eUdQUiksIEpTVmFsdWVSZWdzKHZhbHVl
R1BSKSwgSW52YWxpZEdQUlJlZywgc3R1YkluZm9HUFIpOworCisgICAgICAgICAgICBnZW5lcmF0
b3ItPnN0dWJJbmZvKCktPnByb3BlcnR5SXNTeW1ib2wgPSB0cnVlOworCisgICAgICAgICAgICBn
ZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKKyAgICAgICAgICAgIENDYWxsSGVscGVy
czo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOworCisgICAgICAgICAgICBwYXJhbXMuYWRkTGF0
ZVBhdGgoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAgICAgIEFsbG93TWFj
cm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKworICAgICAgICAgICAg
ICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkpCisgICAgICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0KTsKKyAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsK
KyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAg
ICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSkgeworICAg
ICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2Vu
ZXJhdG9yLT5zdHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3ItPnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbjsKKyAgICAg
ICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAg
ICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwg
bm9kZVNlbWFudGljT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5n
ZXQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBJbnZhbGlkR1BSUmVnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZVNlbWFudGlj
T3JpZ2luKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2
YWx1ZUdQUiwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRy
KSkuY2FsbCgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
IHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAq
c3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGVTZW1hbnRpY09y
aWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlv
biwgSW52YWxpZEdQUlJlZywKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2so
KS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGVTZW1hbnRpY09yaWdpbiksCisgICAgICAgICAgICAgICAg
ICAgICAgICBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIsIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIobnVsbHB0cikpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CisKKyAgICAgICAgICAgICAgICBnZW5l
cmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChzbG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwor
CisgICAgICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1
ZmZlcikgeworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmZpbmFsaXplKGxpbmtCdWZm
ZXIsIGxpbmtCdWZmZXIpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0pOwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZUF0b21pY3NSZWFkTW9kaWZ5V3Jp
dGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDUwZGU4NTViNmFjOTBlZTZkM2Qx
Yzk2MWU0NDg0ODIzOTVhNDYxNmYuLjNhMzdiZWUyM2VlM2U1YmVlNjVjZmUyNzA3NDllYTBlNWFh
NmY2MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTUxNyw3ICs1MTcsNiBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgIG1fZGVsQnlWYWxJbmRleCA9
IDA7CiAgICAgbV9pbnN0YW5jZU9mSW5kZXggPSAwOwogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNz
SW5kZXggPSAwOwotICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4ID0gMDsKICAgICBtX2NhbGxM
aW5rSW5mb0luZGV4ID0gMDsKIAogICAgIHVuc2lnbmVkIGJ5dGVjb2RlQ291bnRIYXZpbmdTbG93
Q2FzZSA9IDA7CkBAIC05MTksNDUgKzkxOCw2IEBAIHZvaWQgSklUOjpsaW5rKCkKICAgICBmaW5h
bGl6ZUlubGluZUNhY2hlcyhtX2luc3RhbmNlT2ZzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxp
emVJbmxpbmVDYWNoZXMobV9wcml2YXRlQnJhbmRBY2Nlc3NlcywgcGF0Y2hCdWZmZXIpOwogCi0g
ICAgaWYgKG1fYnlWYWxDb21waWxhdGlvbkluZm8uc2l6ZSgpKSB7Ci0jaWYgRU5BQkxFKEVYVFJB
X0NUSV9USFVOS1MpCi0gICAgICAgIENvZGVMb2NhdGlvbkxhYmVsIGV4Y2VwdGlvbkhhbmRsZXIo
dm0oKS5nZXRDVElTdHViKGhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPEV4
Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KCkpOwotI2Vsc2UKLSAgICAgICAgQ29kZUxvY2F0aW9uTGFi
ZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gZXhjZXB0aW9uSGFuZGxlciA9IHBhdGNoQnVmZmVy
LmxvY2F0aW9uT2Y8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4obV9leGNlcHRpb25IYW5kbGVyKTsK
LSNlbmRpZgotCi0gICAgICAgIGZvciAoY29uc3QgYXV0byYgYnlWYWxDb21waWxhdGlvbkluZm8g
OiBtX2J5VmFsQ29tcGlsYXRpb25JbmZvKSB7Ci0gICAgICAgICAgICBQYXRjaGFibGVKdW1wIHBh
dGNoYWJsZU5vdEluZGV4SnVtcCA9IGJ5VmFsQ29tcGlsYXRpb25JbmZvLm5vdEluZGV4SnVtcDsK
LSAgICAgICAgICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gbm90SW5kZXhK
dW1wOwotICAgICAgICAgICAgaWYgKEp1bXAocGF0Y2hhYmxlTm90SW5kZXhKdW1wKS5pc1NldCgp
KQotICAgICAgICAgICAgICAgIG5vdEluZGV4SnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRl
cm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihwYXRj
aGFibGVOb3RJbmRleEp1bXApKTsKLQotICAgICAgICAgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFi
bGVCYWRUeXBlSnVtcCA9IGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJhZFR5cGVKdW1wOwotICAgICAg
ICAgICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBiYWRUeXBlSnVtcDsKLSAg
ICAgICAgICAgIGlmIChKdW1wKHBhdGNoYWJsZUJhZFR5cGVKdW1wKS5pc1NldCgpKQotICAgICAg
ICAgICAgICAgIGJhZFR5cGVKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFn
PihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRp
b25JbmZvLmJhZFR5cGVKdW1wKSk7Ci0KLSAgICAgICAgICAgIGF1dG8gZG9uZVRhcmdldCA9IENv
ZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8
SlNJbnRlcm5hbFB0clRhZz4oYnlWYWxDb21waWxhdGlvbkluZm8uZG9uZVRhcmdldCkpOwotICAg
ICAgICAgICAgYXV0byBuZXh0SG90UGF0aFRhcmdldCA9IENvZGVMb2NhdGlvbkxhYmVsPEpTSW50
ZXJuYWxQdHJUYWc+KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oYnlW
YWxDb21waWxhdGlvbkluZm8ubmV4dEhvdFBhdGhUYXJnZXQpKTsKLSAgICAgICAgICAgIGF1dG8g
c2xvd1BhdGhUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPihwYXRj
aEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZv
LnNsb3dQYXRoVGFyZ2V0KSk7Ci0KLSAgICAgICAgICAgIGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJ5
VmFsSW5mby0+c2V0VXAoCi0gICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlciwKLSAgICAg
ICAgICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5hcnJheU1vZGUsCi0gICAgICAgICAgICAg
ICAgYnlWYWxDb21waWxhdGlvbkluZm8uYXJyYXlQcm9maWxlLAotICAgICAgICAgICAgICAgIGRv
bmVUYXJnZXQsCi0gICAgICAgICAgICAgICAgbmV4dEhvdFBhdGhUYXJnZXQsCi0gICAgICAgICAg
ICAgICAgc2xvd1BhdGhUYXJnZXQpOwotICAgICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJ
QyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpIHsKLSAgICAgICAgICAgICAgICBieVZhbENvbXBpbGF0
aW9uSW5mby5ieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0ID0gc2xvd1BhdGhUYXJnZXQu
cmV0YWdnZWQ8SklUU3R1YlJvdXRpbmVQdHJUYWc+KCk7Ci0gICAgICAgICAgICAgICAgYnlWYWxD
b21waWxhdGlvbkluZm8uYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wVGFyZ2V0ID0gc2xvd1BhdGhU
YXJnZXQucmV0YWdnZWQ8SklUU3R1YlJvdXRpbmVQdHJUYWc+KCk7Ci0gICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJ5VmFsSW5mby0+bV9u
b3RJbmRleEp1bXAgPSBub3RJbmRleEp1bXA7Ci0gICAgICAgICAgICAgICAgYnlWYWxDb21waWxh
dGlvbkluZm8uYnlWYWxJbmZvLT5tX2JhZFR5cGVKdW1wID0gYmFkVHlwZUp1bXA7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBmb3IgKGF1dG8mIGNvbXBpbGF0aW9uSW5m
byA6IG1fY2FsbENvbXBpbGF0aW9uSW5mbykgewogICAgICAgICBDYWxsTGlua0luZm8mIGluZm8g
PSAqY29tcGlsYXRpb25JbmZvLmNhbGxMaW5rSW5mbzsKICAgICAgICAgaW5mby5zZXRDb2RlTG9j
YXRpb25zKApAQCAtMTA2MCw3ICsxMDIwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlRXhj
ZXB0aW9uSGFuZGxlcnMoKQogICAgICAgICBqdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKCkpOwog
ICAgIH0KIAotICAgIGlmICghbV9leGNlcHRpb25DaGVja3MuZW1wdHkoKSB8fCBtX2J5VmFsQ29t
cGlsYXRpb25JbmZvLnNpemUoKSkgeworICAgIGlmICghbV9leGNlcHRpb25DaGVja3MuZW1wdHko
KSkgewogICAgICAgICBtX2V4Y2VwdGlvbkhhbmRsZXIgPSBsYWJlbCgpOwogICAgICAgICBtX2V4
Y2VwdGlvbkNoZWNrcy5saW5rKHRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA2
YzM0YWM2NzNhMjgyYzg4YmExZWJjZmM0YWNlMTg1NWZhMDIzODAxLi5mMWVjY2NlYTY0YzA0NGNk
YjZjNzQ4ZjA5MjcxYjBkNTQ5MmU2ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTM3
LDcgKzM3LDYgQEAKIAogI2RlZmluZSBBU1NFUlRfSklUX09GRlNFVChhY3R1YWwsIGV4cGVjdGVk
KSBBU1NFUlRfV0lUSF9NRVNTQUdFKGFjdHVhbCA9PSBleHBlY3RlZCwgIkpJVCBPZmZzZXQgXCIl
c1wiIHNob3VsZCBiZSAlZCwgbm90ICVkLlxuIiwgI2V4cGVjdGVkLCBzdGF0aWNfY2FzdDxpbnQ+
KGV4cGVjdGVkKSwgc3RhdGljX2Nhc3Q8aW50PihhY3R1YWwpKTsKIAotI2luY2x1ZGUgIkJ5VmFs
SW5mby5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRo
cy5oIgogI2luY2x1ZGUgIkpJVERpc2Fzc2VtYmxlci5oIgpAQCAtMTQ5LDQyICsxNDgsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogICAgIH07CiAKLSAgICBzdHJ1Y3QgQnlWYWxDb21w
aWxhdGlvbkluZm8gewotICAgICAgICBCeVZhbENvbXBpbGF0aW9uSW5mbygpIHsgfQotICAgICAg
ICAKLSAgICAgICAgQnlWYWxDb21waWxhdGlvbkluZm8oQnlWYWxJbmZvKiBieVZhbEluZm8sIEJ5
dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAg
bm90SW5kZXhKdW1wLCBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBiYWRUeXBlSnVtcCwg
SklUQXJyYXlNb2RlIGFycmF5TW9kZSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUsIE1hY3Jv
QXNzZW1ibGVyOjpMYWJlbCBkb25lVGFyZ2V0LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbmV4dEhv
dFBhdGhUYXJnZXQpCi0gICAgICAgICAgICA6IGJ5VmFsSW5mbyhieVZhbEluZm8pCi0gICAgICAg
ICAgICAsIGJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkKLSAgICAgICAgICAgICwgbm90SW5k
ZXhKdW1wKG5vdEluZGV4SnVtcCkKLSAgICAgICAgICAgICwgYmFkVHlwZUp1bXAoYmFkVHlwZUp1
bXApCi0gICAgICAgICAgICAsIGFycmF5TW9kZShhcnJheU1vZGUpCi0gICAgICAgICAgICAsIGFy
cmF5UHJvZmlsZShhcnJheVByb2ZpbGUpCi0gICAgICAgICAgICAsIGRvbmVUYXJnZXQoZG9uZVRh
cmdldCkKLSAgICAgICAgICAgICwgbmV4dEhvdFBhdGhUYXJnZXQobmV4dEhvdFBhdGhUYXJnZXQp
Ci0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIEJ5VmFsQ29tcGlsYXRpb25JbmZvKEJ5
VmFsSW5mbyogYnlWYWxJbmZvLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIE1hY3JvQXNz
ZW1ibGVyOjpQYXRjaGFibGVKdW1wIG5vdEluZGV4SnVtcCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVs
IGRvbmVUYXJnZXQsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBuZXh0SG90UGF0aFRhcmdldCkKLSAg
ICAgICAgICAgIDogYnlWYWxJbmZvKGJ5VmFsSW5mbykKLSAgICAgICAgICAgICwgYnl0ZWNvZGVJ
bmRleChieXRlY29kZUluZGV4KQotICAgICAgICAgICAgLCBub3RJbmRleEp1bXAobm90SW5kZXhK
dW1wKQotICAgICAgICAgICAgLCBkb25lVGFyZ2V0KGRvbmVUYXJnZXQpCi0gICAgICAgICAgICAs
IG5leHRIb3RQYXRoVGFyZ2V0KG5leHRIb3RQYXRoVGFyZ2V0KQotICAgICAgICB7Ci0gICAgICAg
IH0KLQotICAgICAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbzsKLSAgICAgICAgQnl0ZWNvZGVJbmRl
eCBieXRlY29kZUluZGV4OwotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBu
b3RJbmRleEp1bXA7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIGJhZFR5
cGVKdW1wOwotICAgICAgICBKSVRBcnJheU1vZGUgYXJyYXlNb2RlOwotICAgICAgICBBcnJheVBy
b2ZpbGUqIGFycmF5UHJvZmlsZTsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGRvbmVU
YXJnZXQ7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBuZXh0SG90UGF0aFRhcmdldDsK
LSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHNsb3dQYXRoVGFyZ2V0OwotICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCByZXR1cm5BZGRyZXNzOwotICAgIH07Ci0KICAgICBzdHJ1Y3Qg
Q2FsbENvbXBpbGF0aW9uSW5mbyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBzbG93
UGF0aFN0YXJ0OwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZG9uZUxvY2F0aW9uOwpA
QCAtMjI0LDEzICsxODcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAg
ICAgcmV0dXJuIEpJVCh2bSwgY29kZUJsb2NrLCBieXRlY29kZU9mZnNldCkucHJpdmF0ZUNvbXBp
bGUoZWZmb3J0KTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgc3RhdGljIHZvaWQgY29t
cGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3Ms
IENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBKSVQgaml0KHZtLCBjb2RlQmxvY2spOwotICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVJbmRl
eCA9IGJ5VmFsSW5mby0+Ynl0ZWNvZGVJbmRleDsKLSAgICAgICAgICAgIGppdC5wcml2YXRlQ29t
cGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKGJ5VmFsSW5mbywgcmV0dXJuQWRkcmVzcywg
cHJvcGVydHlOYW1lKTsKLSAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBmcmFt
ZVJlZ2lzdGVyQ291bnRGb3IoQ29kZUJsb2NrKik7CiAgICAgICAgIHN0YXRpYyBpbnQgc3RhY2tQ
b2ludGVyT2Zmc2V0Rm9yKENvZGVCbG9jayopOwpAQCAtMjQ0LDggKzIwMCw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCk7CiAgICAgICAg
IHZvaWQgbGluaygpOwogICAgICAgICBDb21waWxhdGlvblJlc3VsdCBwcml2YXRlQ29tcGlsZShK
SVRDb21waWxhdGlvbkVmZm9ydCk7Ci0gICAgICAgIAotICAgICAgICB2b2lkIHByaXZhdGVDb21w
aWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0
ciwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CiAKICAgICAgICAgLy8gQWRkIGEgY2FsbCBvdXQgZnJv
bSBKSVQgY29kZSwgd2l0aG91dCBhbiBleGNlcHRpb24gY2hlY2suCiAgICAgICAgIENhbGwgYXBw
ZW5kQ2FsbChjb25zdCBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGZ1bmN0aW9uKQpAQCAt
MzUzLDggKzMwNyw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgZW1pdEFycmF5
UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKFJlZ2lzdGVySUQgY2VsbEdQUiwgQXJyYXlQcm9maWxlKiwg
UmVnaXN0ZXJJRCBzY3JhdGNoR1BSKTsKICAgICAgICAgdm9pZCBlbWl0QXJyYXlQcm9maWxpbmdT
aXRlV2l0aENlbGwoUmVnaXN0ZXJJRCBjZWxsR1BSLCBSZWdpc3RlcklEIGFycmF5UHJvZmlsZUdQ
UiwgUmVnaXN0ZXJJRCBzY3JhdGNoR1BSKTsKLSAgICAgICAgdm9pZCBlbWl0QXJyYXlQcm9maWxl
U3RvcmVUb0hvbGVTcGVjaWFsQ2FzZShBcnJheVByb2ZpbGUqKTsKLSAgICAgICAgdm9pZCBlbWl0
QXJyYXlQcm9maWxlT3V0T2ZCb3VuZHNTcGVjaWFsQ2FzZShBcnJheVByb2ZpbGUqKTsKIAogICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUoT3Ap
OwpAQCAtMzYzLDE0ICszMTUsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3A+CiAgICAgICAgIFByaXZhdGVGaWVsZFB1dEtpbmQgcHJpdmF0ZUZpZWxkUHV0
S2luZChPcCk7CiAKLSAgICAgICAgLy8gSWRlbnRpZmllciBjaGVjayBoZWxwZXIgZm9yIEdldEJ5
VmFsIGFuZCBQdXRCeVZhbC4KLSAgICAgICAgdm9pZCBlbWl0QnlWYWxJZGVudGlmaWVyQ2hlY2so
UmVnaXN0ZXJJRCBjZWxsLCBSZWdpc3RlcklEIHNjcmF0Y2gsIENhY2hlYWJsZUlkZW50aWZpZXIs
IEp1bXBMaXN0JiBzbG93Q2FzZXMpOwotCi0gICAgICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZW1p
dFB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKE9wUHV0UHJpdmF0ZU5hbWUsIENhY2hlYWJsZUlk
ZW50aWZpZXIsIEp1bXBMaXN0JiBkb25lQ2FzZXMsIEp1bXBMaXN0JiBzbG93Q2FzZXMpOwotCi0g
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICBKSVRQdXRCeUlkR2VuZXJhdG9y
IGVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCwgUHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmll
ciwgSnVtcExpc3QmIGRvbmVDYXNlcywgSnVtcExpc3QmIHNsb3dDYXNlcyk7Ci0KICAgICAgICAg
ZW51bSBGaW5hbE9iamVjdE1vZGUgeyBNYXlCZUZpbmFsLCBLbm93bk5vdEZpbmFsIH07CiAKICAg
ICAgICAgdm9pZCBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciBzcmMsIEpT
VmFsdWVSZWdzIGRzdCk7CkBAIC0xMDEyLDcgKzk1Niw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBWZWN0b3I8SklURGVsQnlWYWxHZW5lcmF0b3I+IG1fZGVsQnlWYWxzOwogICAgICAgICBW
ZWN0b3I8SklUSW5zdGFuY2VPZkdlbmVyYXRvcj4gbV9pbnN0YW5jZU9mczsKICAgICAgICAgVmVj
dG9yPEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcj4gbV9wcml2YXRlQnJhbmRBY2Nlc3Nl
czsKLSAgICAgICAgVmVjdG9yPEJ5VmFsQ29tcGlsYXRpb25JbmZvPiBtX2J5VmFsQ29tcGlsYXRp
b25JbmZvOwogICAgICAgICBWZWN0b3I8Q2FsbENvbXBpbGF0aW9uSW5mbz4gbV9jYWxsQ29tcGls
YXRpb25JbmZvOwogICAgICAgICBWZWN0b3I8SnVtcFRhYmxlPiBtX2ptcFRhYmxlOwogCkBAIC0x
MDQwLDcgKzk4Myw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX2RlbEJ5
SWRJbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1faW5zdGFuY2VPZkluZGV4
IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9wcml2YXRlQnJhbmRBY2Nlc3NJbmRl
eCB7IFVJTlRfTUFYIH07Ci0gICAgICAgIHVuc2lnbmVkIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4
IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9jYWxsTGlua0luZm9JbmRleCB7IFVJ
TlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1fYnl0ZWNvZGVDb3VudEhhdmluZ1Nsb3dDYXNl
IHsgMCB9OwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5k
ZXggNjdlMGI3ODMwOWE0M2YyYmJiOTlhOTFiMzY4OWI5MjdiMjYyZGI2NS4uYWMwOWY4ZmNmNzVi
MzViYWMyZWRiYTY3MDdkZjI1ODc2N2I2ZTY0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVzLmgKQEAgLTM2MCwxNiArMzYwLDYgQEAgaW5saW5lIHZvaWQgSklUOjplbWl0QXJy
YXlQcm9maWxpbmdTaXRlV2l0aENlbGwoUmVnaXN0ZXJJRCBjZWxsR1BSLCBSZWdpc3RlcklEIGEK
ICAgICB9CiB9CiAKLWlubGluZSB2b2lkIEpJVDo6ZW1pdEFycmF5UHJvZmlsZVN0b3JlVG9Ib2xl
U3BlY2lhbENhc2UoQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUpCi17Ci0gICAgc3RvcmU4KFRy
dXN0ZWRJbW0zMigxKSwgYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZNYXlTdG9yZVRvSG9sZSgpKTsK
LX0KLQotaW5saW5lIHZvaWQgSklUOjplbWl0QXJyYXlQcm9maWxlT3V0T2ZCb3VuZHNTcGVjaWFs
Q2FzZShBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSkKLXsKLSAgICBzdG9yZTgoVHJ1c3RlZElt
bTMyKDEpLCBhcnJheVByb2ZpbGUtPmFkZHJlc3NPZk91dE9mQm91bmRzKCkpOwotfQotCiBBTFdB
WVNfSU5MSU5FIGludDMyX3QgSklUOjpnZXRPcGVyYW5kQ29uc3RhbnRJbnQoVmlydHVhbFJlZ2lz
dGVyIHNyYykKIHsKICAgICByZXR1cm4gZ2V0Q29uc3RhbnRPcGVyYW5kKHNyYykuYXNJbnQzMigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggN2Zk
MDQ2MzI4MWUzNWRmZTU1ZmFlMjA2MTAwYTE1ZGE5NzE5YTI5OC4uMWU1YWNkNDgzODhiODcwYzcw
ZTIwZDM1ZWQ1ZDNlOTk5YTRiODUyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCkBAIC0xMzE1LDExMiArMTMxNSwxMjAgQEAgSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kR2VuZXJpYywgdm9pZCwgKEpTR2xv
YmFsT2JqZWMKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogfQogCi1K
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwg
dm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIFByaXZhdGVGaWVsZFB1dEtp
bmQgcHV0S2luZCkpCit0ZW1wbGF0ZTxib29sIGRlZmluZT4KK3N0YXRpYyBBTFdBWVNfSU5MSU5F
IHZvaWQgcHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2Ny
aXB0LCBKU1ZhbHVlIHZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8pCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUt
PmNvZGVCbG9jaygpOwotCi0gICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZEJhc2VWYWx1ZSk7Ci0gICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFN1YnNjcmlwdCk7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwotCiAgICAgYXV0byBiYXNlT2JqZWN0ID0gYmFzZVZhbHVlLnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xv
YmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CiAK
LSAgICBPcHRpbWl6YXRpb25SZXN1bHQgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9u
UmVzdWx0OjpOb3RPcHRpbWl6ZWQ7CisgICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2FuIG9ubHkgYmUg
YWNjZXNzZWQgd2l0aGluIGNsYXNzIGxleGljYWwgc2NvcGUKKyAgICAvLyBhbmQgY2xhc3MgbWV0
aG9kcyBhcmUgYWx3YXlzIGluIHN0cmljdCBtb2RlCisgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBl
ID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOworICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gQ29tbW9uU2xvd1BhdGhzOjpvcmlnaW5hbFN0cnVjdHVyZUJl
Zm9yZVB1dCh2bSwgYmFzZVZhbHVlKTsKKyAgICBjb25zdGV4cHIgYm9vbCBpc1N0cmljdE1vZGUg
PSB0cnVlOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9k
ZSk7CisgICAgaWYgY29uc3RleHByIChkZWZpbmUpCisgICAgICAgIGJhc2VPYmplY3QtPmRlZmlu
ZVByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwor
ICAgIGVsc2UKKyAgICAgICAgYmFzZU9iamVjdC0+c2V0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKKworICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0PEFjY2Vz
c1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KGJhc2VWYWx1ZS5pc09iamVjdCgpICYmIENhY2hlYWJsZUlkZW50aWZpZXI6OmlzQ2FjaGVhYmxl
SWRlbnRpZmllckNlbGwoc3Vic2NyaXB0KSkgewotICAgICAgICBBU1NFUlQoc3Vic2NyaXB0Lmlz
U3ltYm9sKCkpOwotICAgICAgICBBU1NFUlQoY2FsbEZyYW1lLT5ieXRlY29kZUluZGV4KCkgIT0g
Qnl0ZWNvZGVJbmRleCgwKSk7Ci0gICAgICAgIEFTU0VSVCghYnlWYWxJbmZvLT5zdHViUm91dGlu
ZSk7Ci0gICAgICAgIGlmIChieVZhbEluZm8tPnNlZW4pIHsKLSAgICAgICAgICAgIGlmIChieVZh
bEluZm8tPmNhY2hlZElkLnVpZCgpID09IHByb3BlcnR5TmFtZSkgewotICAgICAgICAgICAgICAg
IEpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKHZtLCBjb2RlQmxvY2ssIGJ5
VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBieVZhbEluZm8t
PmNhY2hlZElkKTsKLSAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6
YXRpb25SZXN1bHQ6Ok9wdGltaXplZDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgLy8gU2VlbSBsaWtlIGEgZ2VuZXJpYyBwcm9wZXJ0eSBhY2Nlc3Mgc2l0ZS4KLSAgICAg
ICAgICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVV
cDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsK
LSAgICAgICAgICAgICAgICBieVZhbEluZm8tPnNlZW4gPSB0cnVlOwotICAgICAgICAgICAgICAg
IGJ5VmFsSW5mby0+Y2FjaGVkSWQgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tQ2Vs
bChzdWJzY3JpcHQuYXNDZWxsKCkpOwotICAgICAgICAgICAgICAgIG9wdGltaXphdGlvblJlc3Vs
dCA9IE9wdGltaXphdGlvblJlc3VsdDo6U2Vlbk9uY2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2ssIHN1YnNjcmlwdC5hc0NlbGwoKSk7
Ci0gICAgICAgIH0KKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUNlbGwoc3Vic2NyaXB0LmFzQ2VsbCgpKTsKKyAg
ICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBzdHJ1
Y3R1cmUsIGlkZW50aWZpZXIpKQorICAgICAgICAgICAgcmVwYXRjaFB1dEJ5KGdsb2JhbE9iamVj
dCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIHN0cnVjdHVyZSwgaWRlbnRpZmllciwgc2xvdCwgKnN0
dWJJbmZvLCBQdXRCeUtpbmQ6OkJ5VmFsLCBkZWZpbmUgPyBQdXRLaW5kOjpEaXJlY3RQcml2YXRl
RmllbGREZWZpbmUgOiBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGRTZXQpOwogICAgIH0KK30K
IAotICAgIGlmIChvcHRpbWl6YXRpb25SZXN1bHQgIT0gT3B0aW1pemF0aW9uUmVzdWx0OjpPcHRp
bWl6ZWQgJiYgb3B0aW1pemF0aW9uUmVzdWx0ICE9IE9wdGltaXphdGlvblJlc3VsdDo6U2Vlbk9u
Y2UpIHsKLSAgICAgICAgLy8gSWYgd2UgdGFrZSBzbG93IHBhdGggbW9yZSB0aGFuIDEwIHRpbWVz
IHdpdGhvdXQgcGF0Y2hpbmcgdGhlbiBtYWtlIHN1cmUgd2UKLSAgICAgICAgLy8gbmV2ZXIgbWFr
ZSB0aGF0IG1pc3Rha2UgYWdhaW4uIFRoaXMgZ2l2ZXMgMTAgaXRlcmF0aW9ucyB3b3J0aCBvZiBv
cHBvcnR1bml0eQotICAgICAgICAvLyBmb3IgdXMgdG8gb2JzZXJ2ZSB0aGF0IHRoZSBwdXRfcHJp
dmF0ZV9uYW1lIG1heSBiZSBwb2x5bW9ycGhpYy4KLSAgICAgICAgLy8gV2UgY291bnQgdXAgc2xv
d1BhdGhDb3VudCBldmVuIGlmIHRoZSByZXN1bHQgaXMgR2l2ZVVwLgotICAgICAgICBpZiAoKyti
eVZhbEluZm8tPnNsb3dQYXRoQ291bnQgPj0gMTApCi0gICAgICAgICAgICBvcHRpbWl6YXRpb25S
ZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcDsKLSAgICB9Cit0ZW1wbGF0ZTxib29s
IGRlZmluZT4KK3N0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0UHJpdmF0ZU5hbWUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2Ny
aXB0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBpZiAob3B0
aW1pemF0aW9uUmVzdWx0ID09IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwKSB7Ci0gICAgICAg
IC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgotICAgICAgICBieVZhbEluZm8tPnRvb2tT
bG93UGF0aCA9IHRydWU7Ci0gICAgICAgIGlmIChjb2RlQmxvY2stPnVzZURhdGFJQygpKQotICAg
ICAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25QdXRQcml2YXRl
TmFtZUdlbmVyaWM7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0
dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlv
blB1dFByaXZhdGVOYW1lR2VuZXJpYyk7Ci0gICAgfQorICAgIGF1dG8gYmFzZU9iamVjdCA9IGJh
c2VWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7CisKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50b1By
b3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhj
ZXB0aW9uKCkpOwogCiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgIAorCiAgICAgLy8gUHJpdmF0
ZSBmaWVsZHMgY2FuIG9ubHkgYmUgYWNjZXNzZWQgd2l0aGluIGNsYXNzIGxleGljYWwgc2NvcGUK
ICAgICAvLyBhbmQgY2xhc3MgbWV0aG9kcyBhcmUgYWx3YXlzIGluIHN0cmljdCBtb2RlCi0gICAg
Y29uc3QgYm9vbCBpc1N0cmljdE1vZGUgPSB0cnVlOworICAgIGNvbnN0ZXhwciBib29sIGlzU3Ry
aWN0TW9kZSA9IHRydWU7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNT
dHJpY3RNb2RlKTsKLSAgICBpZiAocHV0S2luZC5pc0RlZmluZSgpKQorICAgIGlmIGNvbnN0ZXhw
ciAoZGVmaW5lKQogICAgICAgICBiYXNlT2JqZWN0LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICBlbHNlCiAgICAgICAgIGJh
c2VPYmplY3QtPnNldFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNsb3QpOwogfQogCi0vLyBXZSBuZWVkIHRvIG1hdGNoIHRoZSBzaWduYXR1cmUgb2Ygb3Bl
cmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZQotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZv
KiBieVZhbEluZm8sIFByaXZhdGVGaWVsZFB1dEtpbmQgcHJpdmF0ZUZpZWxkUHV0S2luZCkpCitK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmll
bGRPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBBcnJheVByb2ZpbGUqKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
IAotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgSlNWYWx1ZSBiYXNl
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWx1ZSk7CisgICAgSlNWYWx1ZSBz
dWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIHB1dFByaXZhdGVO
YW1lT3B0aW1pemU8dHJ1ZT4oZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgc3Vi
c2NyaXB0LCB2YWx1ZSwgc3R1YkluZm8pOworfQogCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uUHV0QnlWYWxTZXRQcml2YXRlRmllbGRPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBBcnJheVByb2ZpbGUqKSkKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKworICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgcHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZTxm
YWxzZT4oZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCB2YWx1
ZSwgc3R1YkluZm8pOworfQogCi0gICAgYXV0byBiYXNlT2JqZWN0ID0gYmFzZVZhbHVlLnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZhbERlZmluZVByaXZh
dGVGaWVsZEdlbmVyaWMsIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2Ny
aXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbywgQXJyYXlQcm9maWxlKikpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CiAKLSAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGds
b2JhbE9iamVjdCk7Ci0gICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOwor
ICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUp
OworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3Jp
cHQpOworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
IAotICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICBpZiAoc3R1YkluZm8pCisgICAgICAgIHN0dWJJ
bmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogCi0gICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2FuIG9u
bHkgYmUgYWNjZXNzZWQgd2l0aGluIGNsYXNzIGxleGljYWwgc2NvcGUKLSAgICAvLyBhbmQgY2xh
c3MgbWV0aG9kcyBhcmUgYWx3YXlzIGluIHN0cmljdCBtb2RlCi0gICAgY29uc3QgYm9vbCBpc1N0
cmljdE1vZGUgPSB0cnVlOwotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlz
U3RyaWN0TW9kZSk7Ci0gICAgaWYgKHByaXZhdGVGaWVsZFB1dEtpbmQuaXNEZWZpbmUoKSkKLSAg
ICAgICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci0gICAgZWxzZQotICAgICAgICBiYXNlT2JqZWN0LT5zZXRQ
cml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAg
ICBwdXRQcml2YXRlTmFtZTx0cnVlPihnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0
LCB2YWx1ZSk7Cit9CisKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZh
bFNldFByaXZhdGVGaWVsZEdlbmVyaWMsIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgQXJyYXlQcm9maWxlKikpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkQmFzZVZhbHVlKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkU3Vic2NyaXB0KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CisKKyAgICBpZiAoc3R1YkluZm8pCisgICAgICAgIHN0dWJJbmZvLT50
b29rU2xvd1BhdGggPSB0cnVlOwogCi0gICAgaWYgKGJ5VmFsSW5mbykKLSAgICAgICAgYnlWYWxJ
bmZvLT50b29rU2xvd1BhdGggPSB0cnVlOworICAgIHB1dFByaXZhdGVOYW1lPGZhbHNlPihnbG9i
YWxPYmplY3QsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCB2YWx1ZSk7CiB9CiAKIEpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25DYWxsRXZhbCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBFQ01BTW9kZSBl
Y21hTW9kZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4
IGVmYmQ4ODczNTQyZmMzZjRiZTgzZTA2YmUwNjI1N2JmYzI5Y2M0NjIuLmY3MDQ0MDVlZGFlZDdh
MDYxODRlOTg3ODI3MDQyYzg1ZDBmNzcxMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oCkBAIC02NCw3ICs2NCw2IEBAIGNsYXNzIFN5bWJvbFRhYmxlOwogY2xh
c3MgVk07CiBjbGFzcyBXYXRjaHBvaW50U2V0OwogCi1zdHJ1Y3QgQnlWYWxJbmZvOwogc3RydWN0
IEVDTUFNb2RlOwogc3RydWN0IElubGluZUNhbGxGcmFtZTsKIHN0cnVjdCBJbnN0cnVjdGlvbjsK
QEAgLTgwLDcgKzc5LDYgQEAgdHlwZWRlZiBjaGFyKiBVbnVzZWRQdHI7CiAgICAgQXA6IEFycmF5
UHJvZmlsZSoKICAgICBBcnA6IEJpbmFyeUFyaXRoUHJvZmlsZSoKICAgICBCOiBCdXR0ZXJmbHkq
Ci0gICAgQnk6IEJ5VmFsSW5mbyoKICAgICBDOiBKU0NlbGwqCiAgICAgQ2I6IENvZGVCbG9jayoK
ICAgICBDbGk6IENhbGxMaW5rSW5mbyoKQEAgLTIwMSw5ICsxOTksNiBAQCBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIHZvaWQsIChK
U0dsb2JhbE9iagogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25TZXRQcml2YXRl
QnJhbmRHZW5lcmljLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyos
IEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZEdlbmVyaWMsIHZvaWQsIChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
KSk7CiAKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVP
cHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgUHJpdmF0ZUZpZWxkUHV0S2luZCkp
OwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVy
aWMsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIFByaXZhdGVGaWVsZFB1dEtpbmQpKTsKLQog
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZhbE5vblN0cmljdE9wdGlt
aXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEFycmF5UHJvZmlsZSopKTsK
IEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxTdHJpY3RPcHRpbWl6
ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSwgU3RydWN0dXJlU3R1YkluZm8qLCBBcnJheVByb2ZpbGUqKSk7CiBK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsTm9uU3RyaWN0
T3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFN0cnVjdHVyZVN0dWJJbmZvKiwgQXJyYXlQcm9maWxl
KikpOwpAQCAtMjEyLDYgKzIwNywxMCBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvblB1dEJ5VmFsTm9uU3RyaWN0R2VuZXJpYywgdm9pZCwgKEpTR2xvYmFsT2JqZQogSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZhbFN0cmljdEdlbmVyaWMsIHZvaWQs
IChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUsIFN0cnVjdHVyZVN0dWJJbmZvKiwgQXJyYXlQcm9maWxlKikpOwogSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25EaXJlY3RQdXRCeVZhbFN0cmljdEdlbmVyaWMsIHZv
aWQsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUsIFN0cnVjdHVyZVN0dWJJbmZvKiwgQXJyYXlQcm9maWxlKikpOwogSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE5vblN0cmljdEdlbmVy
aWMsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIFN0cnVjdHVyZVN0dWJJbmZvKiwgQXJyYXlQcm9maWxlKikpOwor
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZhbERlZmluZVByaXZhdGVG
aWVsZE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEFycmF5UHJv
ZmlsZSopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxEZWZp
bmVQcml2YXRlRmllbGRHZW5lcmljLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyos
IEFycmF5UHJvZmlsZSopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0
QnlWYWxTZXRQcml2YXRlRmllbGRPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgU3RydWN0dXJlU3R1
YkluZm8qLCBBcnJheVByb2ZpbGUqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvblB1dEJ5VmFsU2V0UHJpdmF0ZUZpZWxkR2VuZXJpYywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgU3RydWN0
dXJlU3R1YkluZm8qLCBBcnJheVByb2ZpbGUqKSk7CiAKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uQ2FsbEV2YWwsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqLCBFQ01BTW9kZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25MaW5rQ2FsbCwgU2xvd1BhdGhSZXR1cm5UeXBlLCAoQ2FsbEZyYW1lKiwgSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsTGlua0luZm8qKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDc5NDAyMWRhZDNlNDZlOTZmNzFkZmQxODA2NzE5ZDM1
ZTk2ZDVkMzkuLmY4YTZkZDdkYzk4M2IzZmM0YWVjMzg0NDIxYjc0MWE3NzAxNWU5MDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC00
NjcsNDkgKzQ2Nyw2IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0V3JpdGVCYXJyaWVyKGJhc2UsIFNo
b3VsZEZpbHRlckJhc2UpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLUpJVFB1dEJ5SWRH
ZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtp
bmQgcHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIEp1bXBMaXN0JiBk
b25lQ2FzZXMsIEp1bXBMaXN0JiBzbG93Q2FzZXMpCi17Ci0gICAgLy8gYmFzZTogcmVnVDAKLSAg
ICAvLyBwcm9wZXJ0eTogcmVnVDEKLSAgICAvLyBzY3JhdGNoOiByZWdUMgotCi0gICAgVmlydHVh
bFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIHZh
bHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKLQotICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoSWZO
b3RDZWxsKHJlZ1QxKSk7Ci0gICAgZW1pdEJ5VmFsSWRlbnRpZmllckNoZWNrKHJlZ1QxLCByZWdU
MSwgcHJvcGVydHlOYW1lLCBzbG93Q2FzZXMpOwotCi0gICAgLy8gV3JpdGUgYmFycmllciBicmVh
a3MgdGhlIHJlZ2lzdGVycy4gU28gYWZ0ZXIgaXNzdWluZyB0aGUgd3JpdGUgYmFycmllciwKLSAg
ICAvLyByZWxvYWQgdGhlIHJlZ2lzdGVycy4KLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhi
YXNlLCByZWdUMCwgdmFsdWUsIHJlZ1QxKTsKLQotICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2Vu
KAotICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4o
bV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3Rl
clNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAgICAg
SlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QzLCByZWdUMiwgZWNt
YU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKLSAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhp
cyk7Ci0gICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0aG91dCB3cml0ZS1iYXJy
aWVyIGlmIGEgYmFzZSBpcyBjZWxsLgotICAgIC8vIEZJWE1FOiBVc2UgVW5jb25kaXRpb25hbFdy
aXRlQmFycmllciBpbiBCYXNlbGluZSBlZmZlY3RpdmVseSB0byByZWR1Y2UgY29kZSBzaXplLgot
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkzOTUKLSAg
ICBlbWl0V3JpdGVCYXJyaWVyKGJhc2UsIFNob3VsZEZpbHRlckJhc2UpOwotICAgIGRvbmVDYXNl
cy5hcHBlbmQoanVtcCgpKTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOwot
ICAgIGdlbi5zbG93UGF0aEp1bXAoKS5saW5rKHRoaXMpOwotCi0gICAgQ2FsbCBjYWxsOwotICAg
IGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7Ci0gICAgICAg
IGdlbi5zdHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBnZW4uc2xvd1BhdGhGdW5jdGlvbigp
OwotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpu
b25BcmdHUFIwKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbjxkZWNsdHlwZShnZW4uc2xvd1BhdGhG
dW5jdGlvbigpKT4oQWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5n
bG9iYWxPYmplY3QoKSksIEdQUkluZm86Om5vbkFyZ0dQUjAsIHJlZ1QxLCByZWdUMCwgcHJvcGVy
dHlOYW1lLnJhd0JpdHMoKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGNhbGwgPSBjYWxsT3BlcmF0
aW9uKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmds
b2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHJlZ1QxLCByZWdUMCwgcHJvcGVydHlOYW1l
LnJhd0JpdHMoKSk7Ci0gICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBj
YWxsKTsKLSAgICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7Ci0KLSAgICByZXR1cm4gZ2VuOwot
fQotCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQogewogICAgIGJvb2wgaXNEaXJlY3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCkg
PT0gb3BfcHV0X2J5X3ZhbF9kaXJlY3Q7CkBAIC02MTEsNzYgKzU2OCw3MiBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQ
cml2YXRlTmFtZT4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFz
ZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5Owot
ICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9jb2RlQmxvY2stPmFkZEJ5VmFsSW5mbyhtX2J5
dGVjb2RlSW5kZXgpOworICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFs
dWU7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7CisgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3Rlcih2YWx1ZSwgcmVnVDIpOwogCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxs
KHJlZ1QwLCBiYXNlKTsKIAotICAgIFBhdGNoYWJsZUp1bXAgZmFzdFBhdGhKbXA7Ci0gICAgaWYg
KEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGZhckp1
bXAoQWJzb2x1dGVBZGRyZXNzKCZieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wVGFyZ2V0KSwgSklU
U3R1YlJvdXRpbmVQdHJUYWcpOwotICAgIGVsc2UgewotICAgICAgICBmYXN0UGF0aEptcCA9IHBh
dGNoYWJsZUp1bXAoKTsKLSAgICAgICAgYWRkU2xvd0Nhc2UoZmFzdFBhdGhKbXApOwotICAgIH0K
LSAgICAKLSAgICBMYWJlbCBkb25lID0gbGFiZWwoKTsKLSAgICAKLSAgICBtX2J5VmFsQ29tcGls
YXRpb25JbmZvLmFwcGVuZChCeVZhbENvbXBpbGF0aW9uSW5mbyhieVZhbEluZm8sIG1fYnl0ZWNv
ZGVJbmRleCwgZmFzdFBhdGhKbXAsIGRvbmUsIGRvbmUpKTsKKyAgICBKSVRQdXRCeVZhbEdlbmVy
YXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCwgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCks
IEFjY2Vzc1R5cGU6OlB1dEJ5VmFsLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCBK
U1ZhbHVlUmVncyhyZWdUMiksIEludmFsaWRHUFJSZWcsIHJlZ1Q0KTsKKyAgICBnZW4uZ2VuZXJh
dGVGYXN0UGF0aCgqdGhpcyk7CisgICAgaWYgKCFKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKQorICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwor
ICAgIGVsc2UKKyAgICAgICAgYWRkU2xvd0Nhc2UoKTsKKyAgICBtX3B1dEJ5VmFscy5hcHBlbmQo
Z2VuKTsKKworICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQgd3JpdGUt
YmFycmllciBpZiBhIGJhc2UgaXMgY2VsbC4KKyAgICAvLyBGSVhNRTogVXNlIFVuY29uZGl0aW9u
YWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNvZGUgc2l6
ZS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5Mzk1
CisgICAgZW1pdFdyaXRlQmFycmllcihiYXNlLCBTaG91bGRGaWx0ZXJCYXNlKTsKIH0KIAogdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
IHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZh
dGVOYW1lPigpOwotICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9ieVZhbENvbXBpbGF0aW9u
SW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0uYnlWYWxJbmZvOwogICAgIFByaXZhdGVGaWVs
ZFB1dEtpbmQgcHV0S2luZCA9IGJ5dGVjb2RlLm1fcHV0S2luZDsKIAorICAgIEpJVFB1dEJ5VmFs
R2VuZXJhdG9yJiBnZW4gPSBtX3B1dEJ5VmFsc1ttX3B1dEJ5VmFsSW5kZXgrK107CisKICAgICBs
aW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotICAgIExhYmVsIHNsb3dQYXRoID0gbGFiZWwoKTsKIAor
ICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisgICAgYXV0byBvcGVyYXRpb24g
PSBwdXRLaW5kLmlzRGVmaW5lKCkgPyBvcGVyYXRpb25QdXRCeVZhbERlZmluZVByaXZhdGVGaWVs
ZE9wdGltaXplIDogb3BlcmF0aW9uUHV0QnlWYWxTZXRQcml2YXRlRmllbGRPcHRpbWl6ZTsKICNp
ZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAgLy8gVGhleSBhcmUgY29uZmlndXJlZCBp
biB0aGUgZmFzdCBwYXRoIGFuZCBub3QgY2xvYmJlcmVkLgogICAgIGNvbnN0ZXhwciBHUFJSZWcg
YmFzZUdQUiA9IHJlZ1QwOwogICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSByZWdU
MTsKICAgICBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gcmVnVDI7Ci0KLSAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fYmFzZSwgYmFzZUdQUik7Ci0gICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3Byb3BlcnR5LCBwcm9wZXJ0eUdQUik7Ci0gICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCB2YWx1ZUdQUik7Ci0gICAgQ2Fs
bCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplLCBU
cnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGJhc2VHUFIsIHByb3Bl
cnR5R1BSLCB2YWx1ZUdQUiwgYnlWYWxJbmZvLCBUcnVzdGVkSW1tMzIocHV0S2luZC52YWx1ZSgp
KSk7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIFRydXN0ZWRJbW1Q
dHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZh
bHVlR1BSLCBnZW4uc3R1YkluZm8oKSwgVHJ1c3RlZEltbVB0cihudWxscHRyKSk7CiAjZWxzZQog
ICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBt
X2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CiAgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJbmRleCk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5
dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIwOwotICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5
dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOworICAgIC8vIGNvbnN0ZXhwciBHUFJS
ZWcgYmFzZUdQUiA9IHJlZ1QwOworICAgIC8vIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIg
PSByZWdUMTsKKyAgICAvLyBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gcmVnVDI7CisgICAg
Y29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHJlZ1QzOworICAgIGNvbnN0ZXhwciBHUFJS
ZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUNDsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFz
ZUdQUiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0g
YXJndW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdmFsdWVHUFIgPSBhcmd1bWVudEdQ
UjM7Ci0gICAgY29uc3RleHByIEdQUlJlZyBieVZhbEluZm9HUFIgPSBhcmd1bWVudEdQUjQ7Ci0g
ICAgY29uc3RleHByIEdQUlJlZyBwdXRLaW5kR1BSID0gYXJndW1lbnRHUFI1OwotCi0gICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VHUFIpOwotICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSwgcHJvcGVydHlHUFIpOwotICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVHUFIpOwotICAg
IG1vdmUoVHJ1c3RlZEltbVB0cihieVZhbEluZm8pLCBieVZhbEluZm9HUFIpOwotICAgIG1vdmUo
VHJ1c3RlZEltbTMyKHB1dEtpbmQudmFsdWUoKSksIHB1dEtpbmRHUFIpOworICAgIG1vdmUoVHJ1
c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOworICAgIG1vdmUo
VHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKICAgICBlbWl0TmFr
ZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJl
Q2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKIAogICAgIENhbGwgY2Fs
bDsKICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAg
ICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb25QdXRQcml2YXRlTmFt
ZU9wdGltaXplOworICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3BlcmF0aW9uID0gb3Bl
cmF0aW9uOwogICAgIGVsc2UKLSAgICAgICAgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uUHV0
UHJpdmF0ZU5hbWVPcHRpbWl6ZSk7CisgICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlv
bik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdl
bmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKICNlbmRpZiAvLyBFTkFCTEUoRVhU
UkFfQ1RJX1RIVU5LUykKIAotICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3Ry
dWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7Ci0gICAgbV9ieVZhbENvbXBp
bGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0dXJuQWRkcmVzcyA9IGNhbGw7
Ci0gICAgbV9ieVZhbEluc3RydWN0aW9uSW5kZXgrKzsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhD
YWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCiAjaWYgRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCkBAIC02OTUsMjQgKzY0OCwyNCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsRwogICAgIGlm
ICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKICAgICAgICAgaml0
LnRhZ1JldHVybkFkZHJlc3MoKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZz
ZXRHUFIgPSBhcmd1bWVudEdQUjA7CisgICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gcmVn
VDA7CisgICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHJlZ1QxOworICAgIGNvbnN0
ZXhwciBHUFJSZWcgdmFsdWVHUFIgPSByZWdUMjsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJ
bmZvR1BSID0gcmVnVDM7CisgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9
IHJlZ1Q0OworCiAgICAgaml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxs
RnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogCi0gICAgY29uc3RleHBy
IEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBhcmd1bWVudEdQUjA7Ci0gICAgY29uc3RleHByIEdQ
UlJlZyBiYXNlR1BSID0gYXJndW1lbnRHUFIxOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvcGVy
dHlHUFIgPSBhcmd1bWVudEdQUjI7Ci0gICAgY29uc3RleHByIEdQUlJlZyB2YWx1ZUdQUiA9IGFy
Z3VtZW50R1BSMzsKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5VmFsSW5mb0dQUiA9IGFyZ3VtZW50
R1BSNDsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHB1dEtpbmRHUFIgPSBhcmd1bWVudEdQUjU7Cisg
ICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSByZWdUNDsKIAogICAgIGppdC5s
b2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgZ2xvYmFsT2JqZWN0
R1BSKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgQ29kZUJsb2Nr
OjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKIAotICAgIGppdC5z
ZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplKT4o
Z2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIsIGJ5VmFsSW5m
b0dQUiwgcHV0S2luZEdQUik7CisgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJh
dGlvblB1dEJ5VmFsRGVmaW5lUHJpdmF0ZUZpZWxkT3B0aW1pemUpPihnbG9iYWxPYmplY3RHUFIs
IGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgc3R1YkluZm9HUFIsIFRydXN0ZWRJbW1Q
dHIobnVsbHB0cikpOwogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAKICAgICBp
ZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkKLSAgICAgICAgaml0
LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQUjQsIEJ5VmFsSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLCBPcGVyYXRpb25QdHJUYWcpOworICAgICAgICBqaXQuZmFySnVtcChBZGRyZXNz
KGFyZ3VtZW50R1BSNCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwgT3BlcmF0aW9uUHRyVGFnKTsKICAgICBlbHNlCiAgICAgICAgIGppdC5yZXQoKTsKIApAQCAt
MzA2MCw2MiArMzAxMyw4IEBAIHZvaWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKEpTQ2VsbCogb3du
ZXIsIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSwgV3JpdGVCYXJyaWVyTW9kCiAgICAgICAgIHZhbHVl
Tm90Q2VsbC5saW5rKHRoaXMpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgT3A+Ci1KSVRQdXRC
eUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQ
dXRLaW5kIHB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKdW1wTGlz
dCYgZG9uZUNhc2VzLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKQotewotICAgIC8vIGJhc2U6IHRhZyhy
ZWdUMSksIHBheWxvYWQocmVnVDApCi0gICAgLy8gcHJvcGVydHk6IHRhZyhyZWdUMyksIHBheWxv
YWQocmVnVDIpCi0KLSAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsK
LSAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwotCi0gICAgc2xv
d0Nhc2VzLmFwcGVuZChicmFuY2hJZk5vdENlbGwocmVnVDMpKTsKLSAgICBlbWl0QnlWYWxJZGVu
dGlmaWVyQ2hlY2socmVnVDIsIHJlZ1QyLCBwcm9wZXJ0eU5hbWUsIHNsb3dDYXNlcyk7Ci0KLSAg
ICAvLyBXcml0ZSBiYXJyaWVyIGJyZWFrcyB0aGUgcmVnaXN0ZXJzLiBTbyBhZnRlciBpc3N1aW5n
IHRoZSB3cml0ZSBiYXJyaWVyLAotICAgIC8vIHJlbG9hZCB0aGUgcmVnaXN0ZXJzLgotICAgIC8v
Ci0gICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0aG91dCB3cml0ZS1iYXJyaWVy
IGlmIGEgYmFzZSBpcyBjZWxsLgotICAgIC8vIFdlIGFyZSBlbWl0dGluZyB3cml0ZS1iYXJyaWVy
IGJlZm9yZSB3cml0aW5nIGhlcmUgYnV0IHRoaXMgaXMgT0sgc2luY2UgMzJiaXQgSlNDIGRvZXMg
bm90IGhhdmUgY29uY3VycmVudCBHQy4KLSAgICAvLyBGSVhNRTogVXNlIFVuY29uZGl0aW9uYWxX
cml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNvZGUgc2l6ZS4K
LSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5Mzk1Ci0g
ICAgZW1pdFdyaXRlQmFycmllcihiYXNlLCBTaG91bGRGaWx0ZXJCYXNlKTsKLSAgICBlbWl0TG9h
ZFBheWxvYWQoYmFzZSwgcmVnVDApOwotICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUMywgcmVnVDIp
OwotCi0gICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBK
SVRUeXBlOjpCYXNlbGluZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBJbnZhbGlkR1BSUmVnLCByZWdUMSwg
ZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kKTsKLSAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgq
dGhpcyk7Ci0gICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwotCi0gICAgTGFiZWwgY29sZFBh
dGhCZWdpbiA9IGxhYmVsKCk7Ci0gICAgZ2VuLnNsb3dQYXRoSnVtcCgpLmxpbmsodGhpcyk7Ci0K
LSAgICAvLyBKSVRQdXRCeUlkR2VuZXJhdG9yIG9ubHkgcHJlc2VydmUgdGhlIHZhbHVlIGFuZCB0
aGUgYmFzZSdzIHBheWxvYWQsIHdlIGhhdmUgdG8gcmVsb2FkIHRoZSB0YWcuCi0gICAgZW1pdExv
YWRUYWcoYmFzZSwgcmVnVDEpOwotCi0gICAgQ2FsbCBjYWxsOwotICAgIGlmIChKSVRDb2RlOjp1
c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKSB7Ci0gICAgICAgIGdlbi5zdHViSW5mbygp
LT5tX3Nsb3dPcGVyYXRpb24gPSBnZW4uc2xvd1BhdGhGdW5jdGlvbigpOwotICAgICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKLSAg
ICAgICAgY2FsbE9wZXJhdGlvbjxkZWNsdHlwZShnZW4uc2xvd1BhdGhGdW5jdGlvbigpKT4oQWRk
cmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIEdQUkluZm86Om5vbkFy
Z0dQUjAsIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdU
MCksIHByb3BlcnR5TmFtZS5yYXdCaXRzKCkpOwotICAgIH0gZWxzZQotICAgICAgICBjYWxsID0g
Y2FsbE9wZXJhdGlvbihnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBKU1Zh
bHVlUmVncyhyZWdUMSwgcmVnVDApLCBwcm9wZXJ0eU5hbWUucmF3Qml0cygpKTsKLSAgICBnZW4u
cmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwotICAgIGRvbmVDYXNlcy5h
cHBlbmQoanVtcCgpKTsKLQotICAgIHJldHVybiBnZW47Ci19Ci0KICNlbmRpZiAvLyBVU0UoSlNW
QUxVRTY0KQogCi1KSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dFByaXZhdGVOYW1lV2l0
aENhY2hlZElkKE9wUHV0UHJpdmF0ZU5hbWUgYnl0ZWNvZGUsIENhY2hlYWJsZUlkZW50aWZpZXIg
cHJvcGVydHlOYW1lLCBKdW1wTGlzdCYgZG9uZUNhc2VzLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKQot
ewotICAgIGF1dG8gcHV0S2luZCA9IGJ5dGVjb2RlLm1fcHV0S2luZC5pc0RlZmluZSgpID8gUHV0
S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lIDogUHV0S2luZDo6RGlyZWN0UHJpdmF0ZUZp
ZWxkU2V0OwotICAgIHJldHVybiBlbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoYnl0ZWNvZGUsIHB1
dEtpbmQsIHByb3BlcnR5TmFtZSwgZG9uZUNhc2VzLCBzbG93Q2FzZXMpOwotfQotCiB2b2lkIEpJ
VDo6ZW1pdFdyaXRlQmFycmllcihWaXJ0dWFsUmVnaXN0ZXIgb3duZXIsIFdyaXRlQmFycmllck1v
ZGUgbW9kZSkKIHsKICAgICBBU1NFUlQobW9kZSA9PSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVy
IHx8IG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZSk7CkBAIC0zMTI5LDU4ICszMDI4LDYgQEAgdm9p
ZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIoSlNDZWxsKiBvd25lcikKICAgICBvd25lcklzUmVtZW1i
ZXJlZE9ySW5FZGVuLmxpbmsodGhpcyk7CiB9CiAKLXZvaWQgSklUOjplbWl0QnlWYWxJZGVudGlm
aWVyQ2hlY2soUmVnaXN0ZXJJRCBjZWxsLCBSZWdpc3RlcklEIHNjcmF0Y2gsIENhY2hlYWJsZUlk
ZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKQotewotICAgIGlmIChw
cm9wZXJ0eU5hbWUuaXNTeW1ib2xDZWxsKCkpCi0gICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJh
bmNoUHRyKE5vdEVxdWFsLCBjZWxsLCBUcnVzdGVkSW1tUHRyKHByb3BlcnR5TmFtZS5jZWxsKCkp
KSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoSWZOb3RTdHJp
bmcoY2VsbCkpOwotICAgICAgICBsb2FkUHRyKEFkZHJlc3MoY2VsbCwgSlNTdHJpbmc6Om9mZnNl
dE9mVmFsdWUoKSksIHNjcmF0Y2gpOwotICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaFB0
cihOb3RFcXVhbCwgc2NyYXRjaCwgVHJ1c3RlZEltbVB0cihwcm9wZXJ0eU5hbWUudWlkKCkpKSk7
Ci0gICAgfQotfQotCi12b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRQcml2YXRlTmFtZVdpdGhD
YWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRy
ZXNzLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKLXsKLSAgICBjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uID0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygp
LmF0KGJ5VmFsSW5mby0+Ynl0ZWNvZGVJbmRleCkucHRyKCk7Ci0gICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKLQotICAgIEp1bXBM
aXN0IGRvbmVDYXNlczsKLSAgICBKdW1wTGlzdCBzbG93Q2FzZXM7Ci0KLSAgICBKSVRQdXRCeUlk
R2VuZXJhdG9yIGdlbiA9IGVtaXRQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChieXRlY29kZSwg
cHJvcGVydHlOYW1lLCBkb25lQ2FzZXMsIHNsb3dDYXNlcyk7Ci0KLSAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKG1fY29kZUJsb2NrLT5tX2xvY2spOwotICAgIExpbmtCdWZmZXIgcGF0Y2hC
dWZmZXIoKnRoaXMsIG1fY29kZUJsb2NrLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpJbmxpbmVDYWNo
ZSk7Ci0gICAgcGF0Y2hCdWZmZXIubGluayhzbG93Q2FzZXMsIGJ5VmFsSW5mby0+c2xvd1BhdGhU
YXJnZXQpOwotICAgIHBhdGNoQnVmZmVyLmxpbmsoZG9uZUNhc2VzLCBieVZhbEluZm8tPmRvbmVU
YXJnZXQpOwotICAgIGlmICghbV9leGNlcHRpb25DaGVja3MuZW1wdHkoKSkKLSAgICAgICAgcGF0
Y2hCdWZmZXIubGluayhtX2V4Y2VwdGlvbkNoZWNrcywgYnlWYWxJbmZvLT5leGNlcHRpb25IYW5k
bGVyKTsKLQotICAgIGZvciAoY29uc3QgYXV0byYgY2FsbFNpdGUgOiBtX25lYXJDYWxscykgewot
ICAgICAgICBpZiAoY2FsbFNpdGUuY2FsbGVlKQotICAgICAgICAgICAgcGF0Y2hCdWZmZXIubGlu
ayhjYWxsU2l0ZS5mcm9tLCBjYWxsU2l0ZS5jYWxsZWUpOwotICAgIH0KLSAgICBmb3IgKGNvbnN0
IGF1dG8mIGNhbGxTaXRlIDogbV9mYXJDYWxscykgewotICAgICAgICBpZiAoY2FsbFNpdGUuY2Fs
bGVlKQotICAgICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhjYWxsU2l0ZS5mcm9tLCBjYWxsU2l0
ZS5jYWxsZWUpOwotICAgIH0KLSAgICBnZW4uZmluYWxpemUocGF0Y2hCdWZmZXIsIHBhdGNoQnVm
ZmVyKTsKLQotICAgIGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUgPSBGSU5BTElaRV9DT0RFX0ZPUl9T
VFVCKAotICAgICAgICBtX2NvZGVCbG9jaywgcGF0Y2hCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRy
VGFnLAotICAgICAgICAiQmFzZWxpbmUgcHV0X3ByaXZhdGVfbmFtZSB3aXRoIGNhY2hlZCBwcm9w
ZXJ0eSBuYW1lICclcycgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHByb3BlcnR5TmFt
ZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCBy
ZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7Ci0gICAgYnlWYWxJbmZvLT5zdHViSW5mbyA9
IGdlbi5zdHViSW5mbygpOwotCi0gICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpC
YXNlbGluZUpJVCkpIHsKLSAgICAgICAgYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcFRhcmdldCA9
IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJS
b3V0aW5lLT5jb2RlKCkuY29kZSgpKTsKLSAgICAgICAgYnlWYWxJbmZvLT5tX3Nsb3dPcGVyYXRp
b24gPSBvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWM7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXAs
IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJS
b3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNo
Q2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRy
PE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljKSk7Ci0gICAg
fQotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cAppbmRleCA4YmExMGU0M2VhNmU1NThhNTdiZmZjZWJhOTNlNGZkYzA5ZWIyODc3Li4yZWI0N2Zk
MzQ4YmRhYTk3NDAwZjI0YzQ3ZTRiMDc5N2FjN2JhMDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAgLTM0MCw0NCAr
MzQwLDQ2IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1lPigpOwogICAgIFZpcnR1YWxSZWdpc3RlciBi
YXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5
dGVjb2RlLm1fcHJvcGVydHk7Ci0gICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2NvZGVCbG9j
ay0+YWRkQnlWYWxJbmZvKG1fYnl0ZWNvZGVJbmRleCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIHZh
bHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKIAogICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVn
VDAsIHByb3BlcnR5LCByZWdUMywgcmVnVDIpOworICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUNSwg
cmVnVDQpOwogCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsK
LSAgICBQYXRjaGFibGVKdW1wIGZhc3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOwotICAgIGFk
ZFNsb3dDYXNlKGZhc3RQYXRoSm1wKTsKIAotICAgIExhYmVsIGRvbmUgPSBsYWJlbCgpOwotICAg
IAotICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm8uYXBwZW5kKEJ5VmFsQ29tcGlsYXRpb25JbmZv
KGJ5VmFsSW5mbywgbV9ieXRlY29kZUluZGV4LCBmYXN0UGF0aEptcCwgZG9uZSwgZG9uZSkpOwor
ICAgIEpJVFB1dEJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ssIEpJVFR5
cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KSwgQWNjZXNzVHlwZTo6UHV0QnlWYWwsIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDEsIHJl
Z1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVnVDUsIHJlZ1Q0
KSwgSW52YWxpZEdQUlJlZywgSW52YWxpZEdQUlJlZyk7CisgICAgZ2VuLnN0dWJJbmZvKCktPnBy
b3BlcnR5SXNTeW1ib2wgPSB0cnVlOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsK
KyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1fcHV0QnlWYWxzLmFw
cGVuZChnZW4pOworCisgICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0aG91dCB3
cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgorICAgIC8vIEZJWE1FOiBVc2UgVW5jb25k
aXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBlZmZlY3RpdmVseSB0byByZWR1Y2UgY29k
ZSBzaXplLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDkzOTUKKyAgICBlbWl0V3JpdGVCYXJyaWVyKGJhc2UsIFNob3VsZEZpbHRlckJhc2UpOwogfQog
CiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0
UHJpdmF0ZU5hbWU+KCk7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jh
c2U7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsK
LSAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwotCi0gICAgQnlW
YWxJbmZvKiBieVZhbEluZm8gPSBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVj
dGlvbkluZGV4XS5ieVZhbEluZm87CiAgICAgUHJpdmF0ZUZpZWxkUHV0S2luZCBwdXRLaW5kID0g
Ynl0ZWNvZGUubV9wdXRLaW5kOwogCisgICAgSklUUHV0QnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1f
cHV0QnlWYWxzW21fcHV0QnlWYWxJbmRleCsrXTsKKwogICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRl
cik7Ci0gICAgTGFiZWwgc2xvd1BhdGggPSBsYWJlbCgpOworCisgICAgTGFiZWwgY29sZFBhdGhC
ZWdpbiA9IGxhYmVsKCk7CiAKICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyhyZWdUMSwgcmVnVDAp
OwogICAgIEpTVmFsdWVSZWdzIHByb3BlcnR5UmVncyhyZWdUMywgcmVnVDIpOwogICAgIEpTVmFs
dWVSZWdzIHZhbHVlUmVncyhyZWdUNSwgcmVnVDQpOwogCi0gICAgZW1pdExvYWQoYmFzZSwgYmFz
ZVJlZ3MudGFnR1BSKCksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSk7Ci0gICAgZW1pdExvYWQocHJv
cGVydHksIHByb3BlcnR5UmVncy50YWdHUFIoKSwgcHJvcGVydHlSZWdzLnBheWxvYWRHUFIoKSk7
Ci0gICAgZW1pdExvYWQodmFsdWUsIHZhbHVlUmVncy50YWdHUFIoKSwgdmFsdWVSZWdzLnBheWxv
YWRHUFIoKSk7Ci0gICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRQcml2
YXRlTmFtZU9wdGltaXplLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KSksIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncywgYnlWYWxJbmZvLCBUcnVzdGVk
SW1tMzIocHV0S2luZC52YWx1ZSgpKSk7CisgICAgYXV0byBvcGVyYXRpb24gPSBwdXRLaW5kLmlz
RGVmaW5lKCkgPyBvcGVyYXRpb25QdXRCeVZhbERlZmluZVByaXZhdGVGaWVsZE9wdGltaXplIDog
b3BlcmF0aW9uUHV0QnlWYWxTZXRQcml2YXRlRmllbGRPcHRpbWl6ZTsKKyAgICBDYWxsIGNhbGwg
PSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCkpLCBiYXNlUmVncywgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MsIGdlbi5zdHVi
SW5mbygpLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpKTsKIAotICAgIG1fYnlWYWxDb21waWxhdGlv
bkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnNsb3dQYXRoVGFyZ2V0ID0gc2xvd1BhdGg7
Ci0gICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0ucmV0
dXJuQWRkcmVzcyA9IGNhbGw7Ci0gICAgbV9ieVZhbEluc3RydWN0aW9uSW5kZXgrKzsKKyAgICBn
ZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9zZXRfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggZTYzYzk5
YmU2YWJmN2ViNzg5ZGNhNmFmMzlmNTA5MDJmYWQzODQ3ZC4uMDlmZGVjN2FjZWExZDA1NTY1ODY3
YmIyM2E2ODNhZDY2ZmM3YzRkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CkBAIC02MDAsOSArNjAwLDEyIEBAIHN0YXRpYyBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+
IGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5RnVuY3Rpb24oY29uc3QgUHV0UHJvCiAgICAgICAgICAg
ICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gb3BlcmF0
aW9uRGlyZWN0UHV0QnlWYWxTdHJpY3RHZW5lcmljOwogICAgICAgICAgICAgcmV0dXJuIG9wZXJh
dGlvbkRpcmVjdFB1dEJ5VmFsTm9uU3RyaWN0R2VuZXJpYzsKLSAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGREZWZpbmU6CisgICAg
ICAgICAgICBBU1NFUlQoc2xvdC5pc1N0cmljdE1vZGUoKSk7CisgICAgICAgICAgICByZXR1cm4g
b3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmllbGRHZW5lcmljOworICAgICAgICBjYXNl
IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldDoKKyAgICAgICAgICAgIEFTU0VSVChzbG90
LmlzU3RyaWN0TW9kZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeVZhbFNl
dFByaXZhdGVGaWVsZEdlbmVyaWM7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpA
QCAtNjMzLDcgKzYzNiw3IEBAIHN0YXRpYyBGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+IGFw
cHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5RnVuY3Rpb24oY29uc3QgUHV0CiAgICAgICAgICAgICBy
ZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFNldFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwogICAg
ICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUHV0QnlLaW5kOjpCeVZhbDogeworICAg
IGNhc2UgUHV0QnlLaW5kOjpCeVZhbDoKICAgICAgICAgc3dpdGNoIChwdXRLaW5kKSB7CiAgICAg
ICAgIGNhc2UgUHV0S2luZDo6Tm90RGlyZWN0OgogICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJp
Y3RNb2RlKCkpCkBAIC02NDMsMTMgKzY0NiwxNSBAQCBzdGF0aWMgRnVuY3Rpb25QdHI8Q0Z1bmN0
aW9uUHRyVGFnPiBhcHByb3ByaWF0ZU9wdGltaXppbmdQdXRCeUZ1bmN0aW9uKGNvbnN0IFB1dAog
ICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsU3RyaWN0T3B0aW1pemU7CiAgICAgICAgICAgICBy
ZXR1cm4gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxOb25TdHJpY3RPcHRpbWl6ZTsKLSAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGRE
ZWZpbmU6CisgICAgICAgICAgICBBU1NFUlQoc2xvdC5pc1N0cmljdE1vZGUoKSk7CisgICAgICAg
ICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmllbGRPcHRpbWl6ZTsK
KyAgICAgICAgY2FzZSBQdXRLaW5kOjpEaXJlY3RQcml2YXRlRmllbGRTZXQ6CisgICAgICAgICAg
ICBBU1NFUlQoc2xvdC5pc1N0cmljdE1vZGUoKSk7CisgICAgICAgICAgICByZXR1cm4gb3BlcmF0
aW9uUHV0QnlWYWxTZXRQcml2YXRlRmllbGRPcHRpbWl6ZTsKICAgICAgICAgfQogICAgICAgICBi
cmVhazsKICAgICB9Ci0gICAgfQogICAgIC8vIE1ha2Ugd2luIHBvcnQgY29tcGlsZXIgaGFwcHkK
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpA
QCAtMTkyMiw2ICsxOTI3LDEwIEBAIHZvaWQgcmVzZXRQdXRCeShDb2RlQmxvY2sqIGNvZGVCbG9j
aywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBQdXRCeUtpbmQga2luCiAgICAgICAgICAg
ICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0T3B0aW1pemU7
CiAgICAgICAgIGVsc2UgaWYgKHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uRGlyZWN0
UHV0QnlWYWxTdHJpY3RHZW5lcmljIHx8IHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9u
RGlyZWN0UHV0QnlWYWxTdHJpY3RPcHRpbWl6ZSkKICAgICAgICAgICAgIG9wdGltaXplZEZ1bmN0
aW9uID0gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxTdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgZWxz
ZSBpZiAodW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeVZhbERlZmluZVByaXZh
dGVGaWVsZEdlbmVyaWMgfHwgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeVZh
bERlZmluZVByaXZhdGVGaWVsZE9wdGltaXplKQorICAgICAgICAgICAgb3B0aW1pemVkRnVuY3Rp
b24gPSBvcGVyYXRpb25QdXRCeVZhbERlZmluZVByaXZhdGVGaWVsZE9wdGltaXplOworICAgICAg
ICBlbHNlIGlmICh1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5VmFsU2V0UHJp
dmF0ZUZpZWxkR2VuZXJpYyB8fCB1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5
VmFsU2V0UHJpdmF0ZUZpZWxkT3B0aW1pemUpCisgICAgICAgICAgICBvcHRpbWl6ZWRGdW5jdGlv
biA9IG9wZXJhdGlvblB1dEJ5VmFsU2V0UHJpdmF0ZUZpZWxkT3B0aW1pemU7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgQVNTRVJUKHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9u
RGlyZWN0UHV0QnlWYWxOb25TdHJpY3RHZW5lcmljIHx8IHVub3B0aW1pemVkRnVuY3Rpb24gPT0g
b3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxOb25TdHJpY3RPcHRpbWl6ZSk7CiAgICAgICAgICAgICBv
cHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsTm9uU3RyaWN0T3B0aW1p
emU7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
MzAyNDdmMGU3ZDVlZTU2MzMyNGNlOGY4ODNlMTdmZmQ1Yzc3OGM1MS4uN2YwNzFiYzdiZDYyODhl
ZjRhOGQ3ZjRjMmNhZDY3ZTFlMWViMjlkYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTA4LTI2ICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gb3BfcHV0X3ByaXZh
dGVfbmFtZSBzaG91bGQgdXNlIG1vZGVybiBJQyBhbmQgcmVtb3ZlIEJ5VmFsSW5mbworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NTQ0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1q
c2MtYmVuY2htYXJrczoKKwogMjAyMS0wOC0yNSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc29tZSBpT1Mtc3BlY2lmaWMgY29tcGlsZS10
aW1lIGd1YXJkcyB0aGF0IGFyZSBubyBsb25nZXIgbmVlZGVkCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3J1bi1qc2MtYmVuY2htYXJrcyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1iZW5jaG1h
cmtzCmluZGV4IDA4MWE3ZjcyZmQ3ZWMwZDUwMmY1M2JjYWE4OGZjYWFiNmY3OWVkNDMuLjAxYjNj
MjA3ZGZkMWUxYmZkZGVhMjY3MmYzZmI0OWMwZWQ3MjRhYzIgMTAwNzU1Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvcnVuLWpzYy1iZW5jaG1hcmtzCisrKyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1iZW5j
aG1hcmtzCkBAIC01MSw3ICs1MSw2IEBAIFY4X1BBVEggPSBQRVJGT1JNQU5DRVRFU1RTX1BBVEgg
KyAiU3VuU3BpZGVyIiArICJ0ZXN0cyIgKyAidjgtdjYiCiBUQUlMQkVOQ0hfUEFUSCA9IFBFUkZP
Uk1BTkNFVEVTVFNfUEFUSCArICJUYWlsQmVuY2g5MDAwIgogQklHSU5UQkVOQ0hfUEFUSCA9IFBF
UkZPUk1BTkNFVEVTVFNfUEFUSCArICJCaWdJbnRCZW5jaCIKIE1JQ1JPQkVOQ0hNQVJLU19QQVRI
ID0gT1BFTlNPVVJDRV9QQVRIICsgIkpTVGVzdHMiICsgIm1pY3JvYmVuY2htYXJrcyIKLVBSSVZB
VEVGSUVMRFNCRU5DSF9QQVRIID0gTUlDUk9CRU5DSE1BUktTX1BBVEggKyAiY2xhc3MtZmllbGRz
LXByaXZhdGUiCiBTTE9XX01JQ1JPQkVOQ0hNQVJLU19QQVRIID0gT1BFTlNPVVJDRV9QQVRIICsg
IkpTVGVzdHMiICsgInNsb3dNaWNyb2JlbmNobWFya3MiCiBPUEVOU09VUkNFX09DVEFORV9QQVRI
ID0gUEVSRk9STUFOQ0VURVNUU19QQVRIICsgIk9jdGFuZSIKIE9DVEFORV9XUkFQUEVSX1BBVEgg
PSBPUEVOU09VUkNFX09DVEFORV9QQVRIICsgIndyYXBwZXJzIgpAQCAtMjM2LDcgKzIzNSw2IEBA
ICRpbmNsdWRlQ29tcHJlc3Npb25CZW5jaCA9IGZhbHNlCiAkaW5jbHVkZVNpeFNwZWVkID0gZmFs
c2UKICRpbmNsdWRlVGFpbEJlbmNoID0gdHJ1ZQogJGluY2x1ZGVCaWdJbnRCZW5jaCA9IGZhbHNl
Ci0kaW5jbHVkZVByaXZhdGVGaWVsZHNCZW5jaCA9IGZhbHNlCiAkbGRkPW5pbAogJG1lYXN1cmVH
Qz1mYWxzZQogJGJlbmNobWFya1BhdHRlcm49bmlsCkBAIC0xNzg2LDIyICsxNzg0LDYgQEAgY2xh
c3MgQmlnSW50QmVuY2hCZW5jaG1hcmsKICAgZW5kCiBlbmQKIAotY2xhc3MgUHJpdmF0ZUZpZWxk
c0JlbmNobWFyawotICAgIGluY2x1ZGUgQmVuY2htYXJrCi0KLSAgICBkZWYgaW5pdGlhbGl6ZShu
YW1lKQotICAgICAgICBAbmFtZSA9IG5hbWUKLSAgICBlbmQKLQotICAgIGRlZiBlbWl0UnVuQ29k
ZShwbGFuKQotICAgICAgICBlbWl0QmVuY2hSdW5Db2RlKGZ1bGxuYW1lLCBwbGFuLCBTaW5nbGVG
aWxlVGltZWRCZW5jaG1hcmtQYXJhbWV0ZXJzLm5ldyhlbnN1cmVGaWxlKCJQcml2YXRlRmllbGRz
QmVuY2gtI3tAbmFtZX0iLCAiI3tQUklWQVRFRklFTERTQkVOQ0hfUEFUSH0vI3tAbmFtZX0uanMi
KSkpCi0gICAgZW5kCi0KLSAgICBkZWYgZW52aXJvbm1lbnQKLSAgICAgICAge30KLSAgICBlbmQK
LWVuZAotCiBjbGFzcyBNaWNyb2JlbmNobWFya3NCZW5jaG1hcmsKICAgaW5jbHVkZSBCZW5jaG1h
cmsKICAgCkBAIC0yOTEwLDcgKzI4OTIsNiBAQCBiZWdpbgogICAgICAgICAgICAgICAgICBbJy0t
c2l4LXNwZWVkJywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdLAogICAgICAgICAgICAgICAgICBb
Jy0tdGFpbC1iZW5jaCcsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKICAgICAgICAgICAgICAg
ICAgWyctLWJpZy1pbnQtYmVuY2gnLCBHZXRvcHRMb25nOjpOT19BUkdVTUVOVF0sCi0gICAgICAg
ICAgICAgICAgIFsnLS1wcml2YXRlLWZpZWxkcy1iZW5jaCcsIEdldG9wdExvbmc6Ok5PX0FSR1VN
RU5UXSwKICAgICAgICAgICAgICAgICAgWyctLWJlbmNobWFya3MnLCBHZXRvcHRMb25nOjpSRVFV
SVJFRF9BUkdVTUVOVF0sCiAgICAgICAgICAgICAgICAgIFsnLS1tZWFzdXJlLWdjJywgR2V0b3B0
TG9uZzo6T1BUSU9OQUxfQVJHVU1FTlRdLAogICAgICAgICAgICAgICAgICBbJy0tZm9yY2Utdm0t
a2luZCcsIEdldG9wdExvbmc6OlJFUVVJUkVEX0FSR1VNRU5UXSwKQEAgLTMwMjgsOSArMzAwOSw2
IEBAIGJlZ2luCiAgICAgd2hlbiAnLS1iaWctaW50LWJlbmNoJwogICAgICAgcmVzZXRCZW5jaE9w
dGlvbnNJZk5lY2Vzc2FyeQogICAgICAgJGluY2x1ZGVCaWdJbnRCZW5jaCA9IHRydWUKLSAgICB3
aGVuICctLXByaXZhdGUtZmllbGRzLWJlbmNoJwotICAgICAgcmVzZXRCZW5jaE9wdGlvbnNJZk5l
Y2Vzc2FyeQotICAgICAgJGluY2x1ZGVQcml2YXRlRmllbGRzQmVuY2ggPSB0cnVlCiAgICAgd2hl
biAnLS1iZW5jaG1hcmtzJwogICAgICAgJGJlbmNobWFya1BhdHRlcm4gPSBSZWdleHAubmV3KGFy
ZykKICAgICB3aGVuICctLW1lYXN1cmUtZ2MnCkBAIC0zMjcwLDE1ICszMjQ4LDYgQEAgYmVnaW4K
ICAgICBlbmQKICAgfQogCi0gIFBSSVZBVEVGSUVMRFNCRU5DSCA9IEJlbmNobWFya1N1aXRlLm5l
dygiUHJpdmF0ZUZpZWxkc0JlbmNoIiwgOmdlb21ldHJpY01lYW4sIDApCi0gIERpci5mb3JlYWNo
KFBSSVZBVEVGSUVMRFNCRU5DSF9QQVRIKSB7Ci0gICAgfCBmaWxlbmFtZSB8Ci0gICAgaWYgZmls
ZW5hbWUgPX4gL1wuanMkLwotICAgICAgICBuYW1lID0gJH4ucHJlX21hdGNoCi0gICAgICAgIFBS
SVZBVEVGSUVMRFNCRU5DSC5hZGQgUHJpdmF0ZUZpZWxkc0JlbmNobWFyay5uZXcobmFtZSkKLSAg
ICBlbmQKLSAgfQotCiAgIE1JQ1JPQkVOQ0hNQVJLUyA9IEJlbmNobWFya1N1aXRlLm5ldygiTWlj
cm9iZW5jaG1hcmtzIiwgOmdlb21ldHJpY01lYW4sIDApCiAgIERpci5mb3JlYWNoKE1JQ1JPQkVO
Q0hNQVJLU19QQVRIKSB7CiAgICAgfCBmaWxlbmFtZSB8CkBAIC0zNDUwLDEwICszNDE5LDYgQEAg
YmVnaW4KICAgICAkc3VpdGVzIDw8IEJJR0lOVEJFTkNICiAgIGVuZAogCi0gIGlmICRpbmNsdWRl
UHJpdmF0ZUZpZWxkc0JlbmNoIGFuZCBub3QgUFJJVkFURUZJRUxEU0JFTkNILmVtcHR5PwotICAg
ICRzdWl0ZXMgPDwgUFJJVkFURUZJRUxEU0JFTkNICi0gIGVuZAotCiAgIGlmICRpbmNsdWRlQXNt
QmVuY2ggYW5kIG5vdCBBU01CRU5DSC5lbXB0eT8KICAgICBpZiBBU01CRU5DSF9QQVRICiAgICAg
ICAkc3VpdGVzIDw8IEFTTUJFTkNICmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGE3MDNkODI0ZDg4YWE1ZDMyNjkxM2MxZDUxMTAxY2QwOTky
NmY2MmMuLjllMWJmOTgyMTY1Nzg3NjJiYmFkZmQ0NDI1ZDFhNWM1ZDI5OGZhZGMgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMjEtMDgtMjYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbSlNDXSBvcF9wdXRfcHJpdmF0ZV9uYW1lIHNob3VsZCB1c2UgbW9kZXJuIElDIGFu
ZCByZW1vdmUgQnlWYWxJbmZvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjk1NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9nZXQtcHJpdmF0ZS1uYW1lLmpzOiBSZW5hbWVk
IGZyb20gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUvZ2V0LXBy
aXZhdGUtbmFtZS5qcy4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvbW9ub21vcnBoaWMtZ2V0
LXByaXZhdGUtZmllbGQuanM6IFJlbmFtZWQgZnJvbSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9j
bGFzcy1maWVsZHMtcHJpdmF0ZS9tb25vbW9ycGhpYy1nZXQtcHJpdmF0ZS1maWVsZC5qcy4KKyAg
ICAgICAgKiBtaWNyb2JlbmNobWFya3MvcG9seW1vcnBoaWMtZ2V0LXByaXZhdGUtZmllbGQuanM6
IFJlbmFtZWQgZnJvbSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0
ZS9wb2x5bW9ycGhpYy1nZXQtcHJpdmF0ZS1maWVsZC5qcy4KKyAgICAgICAgKiBtaWNyb2JlbmNo
bWFya3MvcG9seW1vcnBoaWMtcHV0LXByaXZhdGUtZmllbGQuanM6IFJlbmFtZWQgZnJvbSBKU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9wb2x5bW9ycGhpYy1wdXQt
cHJpdmF0ZS1maWVsZC5qcy4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvcHV0LXByaXZhdGUt
ZmllbGQuanM6IFJlbmFtZWQgZnJvbSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVs
ZHMtcHJpdmF0ZS9wdXQtcHJpdmF0ZS1maWVsZC5qcy4KKwogMjAyMS0wOC0yNCAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBJbnRsIHRlc3RzIHRv
IHN1cHBvcnQgSUNVIDY4CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFz
cy1maWVsZHMtcHJpdmF0ZS9nZXQtcHJpdmF0ZS1uYW1lLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNo
bWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUvZ2V0LXByaXZhdGUtbmFtZS5qcwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZTAzMzZjMjZhYzYwMTZmMDI2NmM4ZjgzNjQ3Njk5N2Q4MjU2
NjBiMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9KU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9nZXQtcHJpdmF0ZS1uYW1l
LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotZnVuY3Rpb24gYXNzZXJ0KGIsIG0g
PSAiQXNzZXJ0aW9uIGZhaWxlZCIpIHsKLSAgICBpZiAoIWIpCi0gICAgICAgIHRocm93IG5ldyBF
cnJvcihtKTsKLX0KLQotZnVuY3Rpb24gdGVzdDEoKSB7Ci0gICAgZnVuY3Rpb24gZmFjdG9yeShp
KSB7Ci0gICAgICAgIHJldHVybiBuZXcgY2xhc3MgewotICAgICAgICAgICAgI3ggPSBpOwotICAg
ICAgICAgICAgZ2V0KCkgeyByZXR1cm4gdGhpcy4jeDsgfQotICAgICAgICB9OwotICAgIH0KLQot
ICAgIGZ1bmN0aW9uIGZvbyhvLCBpKSB7Ci0gICAgICAgIHJldHVybiBvLmdldCgpOwotICAgIH0K
LSAgICBub0lubGluZShmb28pOwotCi0gICAgbGV0IGEgPSBmYWN0b3J5KDQyKTsKLSAgICBsZXQg
YiA9IGZhY3RvcnkoNDMpOwotICAgIGxldCBzdGFydCA9IERhdGUubm93KCk7Ci0gICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwMDAwMDsgKytpKSB7Ci0gICAgICAgIGFzc2VydChmb28oYSwgImEi
KSA9PT0gNDIpOwotICAgICAgICBhc3NlcnQoZm9vKGIsICJiIikgPT09IDQzKTsKLSAgICB9Ci19
Ci10ZXN0MSgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmll
bGRzLXByaXZhdGUvbW9ub21vcnBoaWMtZ2V0LXByaXZhdGUtZmllbGQuanMgYi9KU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9tb25vbW9ycGhpYy1nZXQtcHJpdmF0
ZS1maWVsZC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWMwNDdjZmZjNzRmOTRj
ZTRjNTQ1N2Q4NmJkMzA0OTdmYjBhNDhiNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJp
dmF0ZS9tb25vbW9ycGhpYy1nZXQtcHJpdmF0ZS1maWVsZC5qcworKysgL2Rldi9udWxsCkBAIC0x
LDE4ICswLDAgQEAKLWNsYXNzIEMgewotICAgICNmaWVsZDsKLQotICAgIGNvbnN0cnVjdG9yKGkp
IHsKLSAgICAgICAgdGhpcy4jZmllbGQgPSBpOwotICAgIH0KLQotICAgIGdldEZpZWxkKCkgewot
ICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7Ci0gICAgfQotfQotbm9JbmxpbmUoQy5wcm90b3R5
cGUuZ2V0RmllbGQpOwotCi1sZXQgYyA9IG5ldyBDKCJ0ZXN0Iik7Ci1mb3IgKGxldCBpID0gMDsg
aSA8IDUwMDAwMDA7IGkrKykgewotICAgIGlmIChjLmdldEZpZWxkKCkgIT09ICJ0ZXN0IikKLSAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJ1bmV4cGVjdGVkIGZpZWxkIHZhbHVlIik7Ci19CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9wb2x5
bW9ycGhpYy1nZXQtcHJpdmF0ZS1maWVsZC5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Ns
YXNzLWZpZWxkcy1wcml2YXRlL3BvbHltb3JwaGljLWdldC1wcml2YXRlLWZpZWxkLmpzCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjM0ZDk2ZWU5N2MwMDRiNDg2OGViODIyNTdmZWI0
MzFjMzI4YjVmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL3BvbHltb3JwaGlj
LWdldC1wcml2YXRlLWZpZWxkLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotY2xh
c3MgQyB7Ci0gICAgI2ZpZWxkOwotCi0gICAgc2V0RmllbGQodmFsdWUpIHsKLSAgICAgICAgdGhp
cy4jZmllbGQgPSB2YWx1ZTsKLSAgICB9Ci0KLSAgICBnZXRGaWVsZCgpIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMuI2ZpZWxkOwotICAgIH0KLX0KLW5vSW5saW5lKEMucHJvdG90eXBlLmdldEZpZWxk
KTsKLQotbGV0IGMxID0gbmV3IEMoKTsKLWMxLmZvbyA9IDA7Ci1jMS5zZXRGaWVsZCgiYSIpOwot
Ci1sZXQgYzIgPSBuZXcgQygpOwotYzIuYmFyID0gMDsKLWMyLnNldEZpZWxkKCJiIik7Ci0KLWxl
dCBjMyA9IG5ldyBDKCk7Ci1jMy5iYXogPSAwOwotYzMuc2V0RmllbGQoImMiKTsKLQotbGV0IGFy
ciA9IFtjMSwgYzIsIGMzXTsKLWxldCB2YWx1ZXMgPSBbImEiLCAiYiIsICJjIl07Ci1mb3IgKGxl
dCBpID0gMDsgaSA8IDUwMDAwMDA7IGkrKykgewotICAgIGlmIChhcnJbaSAlIGFyci5sZW5ndGhd
LmdldEZpZWxkKCkgIT09IHZhbHVlc1tpICUgdmFsdWVzLmxlbmd0aF0pCi0gICAgICAgIHRocm93
IG5ldyBFcnJvcigidW5leHBlY3RlZCBmaWVsZCB2YWx1ZSIpOwotfQotCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9wb2x5bW9ycGhpYy1w
dXQtcHJpdmF0ZS1maWVsZC5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxk
cy1wcml2YXRlL3BvbHltb3JwaGljLXB1dC1wcml2YXRlLWZpZWxkLmpzCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmODU0ZGNiNDU2NGQ3ZWI4MGQ5MjUxMzg0OGY4ZjI0NTQyZTNlNmIy
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0pTVGVzdHMv
bWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL3BvbHltb3JwaGljLXB1dC1wcml2
YXRlLWZpZWxkLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotY2xhc3MgQyB7Ci0g
ICAgI2ZpZWxkOwotCi0gICAgc2V0RmllbGQodmFsdWUpIHsKLSAgICAgICAgdGhpcy4jZmllbGQg
PSB2YWx1ZTsKLSAgICB9Ci19Ci1ub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7Ci0KLWxl
dCBjMSA9IG5ldyBDKCk7Ci1jMS5mb28gPSAwOwotCi1sZXQgYzIgPSBuZXcgQygpOwotYzIuYmFy
ID0gMDsKLQotbGV0IGMzID0gbmV3IEMoKTsKLWMzLmJheiA9IDA7Ci0KLWxldCBhcnIgPSBbYzEs
IGMyLCBjM107Ci0KLWZvciAobGV0IGkgPSAwOyBpIDwgNTAwMDAwMDsgaSsrKSB7Ci0gICAgYXJy
W2kgJSBhcnIubGVuZ3RoXS5zZXRGaWVsZChpKTsKLX0KLQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9t
aWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUvcHV0LXByaXZhdGUtZmllbGQuanMg
Yi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9wdXQtcHJpdmF0
ZS1maWVsZC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQzZjg3NjliMjg2M2Zl
NThjZmY4ZjA1NjgxNDk1ZDJjMWZlZmVkYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJp
dmF0ZS9wdXQtcHJpdmF0ZS1maWVsZC5qcworKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAK
LWNsYXNzIEMgewotICAgICNmaWVsZDsKLQotICAgIHNldEZpZWxkKHZhbHVlKSB7Ci0gICAgICAg
IHRoaXMuI2ZpZWxkID0gdmFsdWU7Ci0gICAgfQotfQotbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0
RmllbGQpOwotCi1sZXQgYyA9IG5ldyBDKCk7Ci1mb3IgKGxldCBpID0gMDsgaSA8IDUwMDAwMDA7
IGkrKykgewotICAgIGMuc2V0RmllbGQoaSk7Ci19Ci0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2dldC1wcml2YXRlLW5hbWUuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9nZXQtcHJpdmF0ZS1uYW1lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwMzM2YzI2YWM2MDE2ZjAyNjZjOGY4
MzY0NzY5OTdkODI1NjYwYjIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9nZXQtcHJpdmF0ZS1uYW1lLmpzCkBAIC0wLDAgKzEsMjcgQEAKK2Z1bmN0aW9uIGFzc2Vy
dChiLCBtID0gIkFzc2VydGlvbiBmYWlsZWQiKSB7CisgICAgaWYgKCFiKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IobSk7Cit9CisKK2Z1bmN0aW9uIHRlc3QxKCkgeworICAgIGZ1bmN0aW9uIGZh
Y3RvcnkoaSkgeworICAgICAgICByZXR1cm4gbmV3IGNsYXNzIHsKKyAgICAgICAgICAgICN4ID0g
aTsKKyAgICAgICAgICAgIGdldCgpIHsgcmV0dXJuIHRoaXMuI3g7IH0KKyAgICAgICAgfTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBmb28obywgaSkgeworICAgICAgICByZXR1cm4gby5nZXQoKTsK
KyAgICB9CisgICAgbm9JbmxpbmUoZm9vKTsKKworICAgIGxldCBhID0gZmFjdG9yeSg0Mik7Cisg
ICAgbGV0IGIgPSBmYWN0b3J5KDQzKTsKKyAgICBsZXQgc3RhcnQgPSBEYXRlLm5vdygpOworICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQoZm9v
KGEsICJhIikgPT09IDQyKTsKKyAgICAgICAgYXNzZXJ0KGZvbyhiLCAiYiIpID09PSA0Myk7Cisg
ICAgfQorfQordGVzdDEoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL21v
bm9tb3JwaGljLWdldC1wcml2YXRlLWZpZWxkLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
bW9ub21vcnBoaWMtZ2V0LXByaXZhdGUtZmllbGQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWMwNDdjZmZjNzRm
OTRjZTRjNTQ1N2Q4NmJkMzA0OTdmYjBhNDhiNAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
bWljcm9iZW5jaG1hcmtzL21vbm9tb3JwaGljLWdldC1wcml2YXRlLWZpZWxkLmpzCkBAIC0wLDAg
KzEsMTggQEAKK2NsYXNzIEMgeworICAgICNmaWVsZDsKKworICAgIGNvbnN0cnVjdG9yKGkpIHsK
KyAgICAgICAgdGhpcy4jZmllbGQgPSBpOworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAg
ICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUu
Z2V0RmllbGQpOworCitsZXQgYyA9IG5ldyBDKCJ0ZXN0Iik7Citmb3IgKGxldCBpID0gMDsgaSA8
IDUwMDAwMDA7IGkrKykgeworICAgIGlmIChjLmdldEZpZWxkKCkgIT09ICJ0ZXN0IikKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJ1bmV4cGVjdGVkIGZpZWxkIHZhbHVlIik7Cit9CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wb2x5bW9ycGhpYy1nZXQtcHJpdmF0ZS1maWVs
ZC5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3BvbHltb3JwaGljLWdldC1wcml2YXRlLWZp
ZWxkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY2MzRkOTZlZTk3YzAwNGI0ODY4ZWI4MjI1N2ZlYjQzMWMzMjhi
NWYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wb2x5bW9ycGhp
Yy1nZXQtcHJpdmF0ZS1maWVsZC5qcwpAQCAtMCwwICsxLDMyIEBACitjbGFzcyBDIHsKKyAgICAj
ZmllbGQ7CisKKyAgICBzZXRGaWVsZCh2YWx1ZSkgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHZh
bHVlOworICAgIH0KKworICAgIGdldEZpZWxkKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZmll
bGQ7CisgICAgfQorfQorbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOworCitsZXQgYzEg
PSBuZXcgQygpOworYzEuZm9vID0gMDsKK2MxLnNldEZpZWxkKCJhIik7CisKK2xldCBjMiA9IG5l
dyBDKCk7CitjMi5iYXIgPSAwOworYzIuc2V0RmllbGQoImIiKTsKKworbGV0IGMzID0gbmV3IEMo
KTsKK2MzLmJheiA9IDA7CitjMy5zZXRGaWVsZCgiYyIpOworCitsZXQgYXJyID0gW2MxLCBjMiwg
YzNdOworbGV0IHZhbHVlcyA9IFsiYSIsICJiIiwgImMiXTsKK2ZvciAobGV0IGkgPSAwOyBpIDwg
NTAwMDAwMDsgaSsrKSB7CisgICAgaWYgKGFycltpICUgYXJyLmxlbmd0aF0uZ2V0RmllbGQoKSAh
PT0gdmFsdWVzW2kgJSB2YWx1ZXMubGVuZ3RoXSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ1
bmV4cGVjdGVkIGZpZWxkIHZhbHVlIik7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL3BvbHltb3JwaGljLXB1dC1wcml2YXRlLWZpZWxkLmpzIGIvSlNUZXN0cy9taWNy
b2JlbmNobWFya3MvcG9seW1vcnBoaWMtcHV0LXByaXZhdGUtZmllbGQuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Zjg1NGRjYjQ1NjRkN2ViODBkOTI1MTM4NDhmOGYyNDU0MmUzZTZiMgotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3BvbHltb3JwaGljLXB1dC1wcml2YXRlLWZpZWxk
LmpzCkBAIC0wLDAgKzEsMjQgQEAKK2NsYXNzIEMgeworICAgICNmaWVsZDsKKworICAgIHNldEZp
ZWxkKHZhbHVlKSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdmFsdWU7CisgICAgfQorfQorbm9J
bmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworCitsZXQgYzEgPSBuZXcgQygpOworYzEuZm9v
ID0gMDsKKworbGV0IGMyID0gbmV3IEMoKTsKK2MyLmJhciA9IDA7CisKK2xldCBjMyA9IG5ldyBD
KCk7CitjMy5iYXogPSAwOworCitsZXQgYXJyID0gW2MxLCBjMiwgYzNdOworCitmb3IgKGxldCBp
ID0gMDsgaSA8IDUwMDAwMDA7IGkrKykgeworICAgIGFycltpICUgYXJyLmxlbmd0aF0uc2V0Rmll
bGQoaSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3B1dC1wcml2
YXRlLWZpZWxkLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcHV0LXByaXZhdGUtZmllbGQu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNWQzZjg3NjliMjg2M2ZlNThjZmY4ZjA1NjgxNDk1ZDJjMWZlZmVkYQot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3B1dC1wcml2YXRlLWZp
ZWxkLmpzCkBAIC0wLDAgKzEsMTQgQEAKK2NsYXNzIEMgeworICAgICNmaWVsZDsKKworICAgIHNl
dEZpZWxkKHZhbHVlKSB7CisgICAgICAgIHRoaXMuI2ZpZWxkID0gdmFsdWU7CisgICAgfQorfQor
bm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworCitsZXQgYyA9IG5ldyBDKCk7Citmb3Ig
KGxldCBpID0gMDsgaSA8IDUwMDAwMDA7IGkrKykgeworICAgIGMuc2V0RmllbGQoaSk7Cit9CisK
</data>
<flag name="commit-queue"
          id="459662"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436599</attachid>
            <date>2021-08-26 18:41:14 -0700</date>
            <delta_ts>2021-08-26 19:12:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229544-20210826184113.patch</filename>
            <type>text/plain</type>
            <size>107073</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MGFlNGU2MmViNzc4ZjA5NzExNTE0OTZkNzE1MWI3MTFjMmUzZDE4Li5kNmJmYjRmYWVkYjY0NTdk
YmM0NzRkOWQxY2UzOTc3ODkwOTQwNDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NSBAQAorMjAyMS0wOC0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIG9wX3B1dF9wcml2YXRlX25hbWUgc2hvdWxkIHVzZSBtb2Rlcm4g
SUMgYW5kIHJlbW92ZSBCeVZhbEluZm8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyOTU0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgb3BfcHV0X3ByaXZhdGVfbmFtZSB1c2Ug
bmV3IFB1dEJ5VmFsIElDLiBUaGlzIGFsbG93cyBvcF9wdXRfcHJpdmF0ZV9uYW1lIHRvIHN1cHBv
cnQKKyAgICAgICAgcG9seW1vcnBoaWMgcHJvcGVydGllcywgYW5kIHdlIGNhbiBmaW5hbGx5IHJl
bW92ZSBCYXNlbGluZSdzIGFkaG9jIElDIGFuZCBCeVZhbEluZm8gY29tcGxldGVseS4KKworICAg
ICAgICBBZGRlZCBtaWNyb2JlbmNobWFyayBzaG93ZWQgM3ggaW1wcm92ZW1lbnQgZHVlIHRvIHBv
bHltb3JwaGljIFB1dFByaXZhdGVOYW1lIElDLgorCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9UICAgICAgICAgICAgICAgICAgICAgUGF0Y2hl
ZAorCisgICAgICAgIGNsYXNzLXByaXZhdGUtZmllbGQtcG9seW1vcnBoaWMgICAgICAgIDkuMzY2
NistMC4wMzMyICAgICBeICAgICAgMy4xMTk5Ky0wLjAxODIgICAgICAgIF4gZGVmaW5pdGVseSAz
LjAwMjJ4IGZhc3RlcgorCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5VmFsSW5mby5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnlWYWxJbmZvLmg6
IFJlbW92ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpnZXRJQ1N0YXR1c01hcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmZpbmRCeVZhbEluZm8pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEJ5
VmFsSW5mbyk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAg
ICAgICogYnl0ZWNvZGUvSUNTdGF0dXNNYXAuaDoKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0
ZU5hbWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJp
dmF0ZU5hbWUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhh
c2UuY3BwOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUpOgorICAgICAg
ICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nh
c2VzKToKKyAgICAgICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2
YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAg
ICAgIChKU0M6OkJ5VmFsQ29tcGlsYXRpb25JbmZvOjpCeVZhbENvbXBpbGF0aW9uSW5mbyk6IERl
bGV0ZWQuCisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0QXJyYXlQcm9maWxlU3RvcmVUb0hvbGVTcGVjaWFsQ2FzZSk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdEFycmF5UHJvZmlsZU91dE9mQm91bmRzU3BlY2lhbENhc2UpOiBEZWxl
dGVkLgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6cHV0
UHJpdmF0ZU5hbWVPcHRpbWl6ZSk6CisgICAgICAgIChKU0M6OnB1dFByaXZhdGVOYW1lKToKKyAg
ICAgICAgKEpTQzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBqaXQvSklU
T3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpz
bG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFB1dFByaXZhdGVOYW1lV2l0aENhY2hlZElkKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0QnlWYWxJZGVudGlmaWVyQ2hlY2spOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQpOiBE
ZWxldGVkLgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAqIGppdC9SZXBhdGNo
LmNwcDoKKyAgICAgICAgKEpTQzo6YXBwcm9wcmlhdGVHZW5lcmljUHV0QnlGdW5jdGlvbik6Cisg
ICAgICAgIChKU0M6OmFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5RnVuY3Rpb24pOgorICAgICAg
ICAoSlNDOjpyZXNldFB1dEJ5KToKKwogMjAyMS0wOC0yNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFBvbHltb3JwaGljIFB1dEJ5VmFsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMyM2Q4YTQwZTFmNmUyM2ZjZTI3ZWQ3YzA4ZGI1
MzI0NzNiMjZhNTkuLmE2MDE5NmUyYzY3MDIzYzgxMGQ2MmYyNTA5NjgzYjgxM2YxZmYwNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NDQsNyArNDQ0LDYgQEAKIAkJMEY3REYx
M0MxRTI5NzExMzAwOTU5NTFCIC8qIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdERjEzQTFF
Mjk3MTBFMDA5NTk1MUIgLyogSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjdERjE0NjFF
MkJFRjZBMDA5NTk1MUIgLyogQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjdERjE0NTFFMkJFRjY4MDA5NTk1MUIg
LyogQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3Rjk4OEMxRDk1OTZDODAwRjRGMTJFIC8qIERGR1N0b3Jl
QmFycmllckNsdXN0ZXJpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY3Rjk4OEExRDk1OTZDMzAwRjRGMTJFIC8qIERGR1N0b3JlQmFycmll
ckNsdXN0ZXJpbmdQaGFzZS5oICovOyB9OwotCQkwRjgwMjNFQTE2MTM4MzJCMDBBMEJBNDUgLyog
QnlWYWxJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi87IH07CiAJCTBGODMz
NUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgzMzVCNTE2MzlDMUUzMDAx
NDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGODM2NEI3MTY0QjBDMTEwMDUzMzI5QSAvKiBE
RkdCcmFuY2hEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24u
aCAqLzsgfTsKIAkJMEY4NkEyNkYxRDZGN0IzMzAwQ0IwQzkyIC8qIEdDVHlwZU1hcC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4NkEyNkUxRDZGN0Iz
MTAwQ0IwQzkyIC8qIEdDVHlwZU1hcC5oICovOyB9OwpAQCAtMjgyOCw3ICsyODI3LDYgQEAKIAkJ
MEY3REYxNDUxRTJCRUY2ODAwOTU5NTFCIC8qIEJsb2NrRGlyZWN0b3J5SW5saW5lcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9ja0RpcmVjdG9yeUlubGluZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3Rjk4ODkxRDk1OTZDMzAwRjRGMTJFIC8qIERG
R1N0b3JlQmFycmllckNsdXN0ZXJpbmdQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBERkdTdG9yZUJhcnJpZXJDbHVzdGVyaW5nUGhhc2UuY3BwOyBwYXRoID0g
ZGZnL0RGR1N0b3JlQmFycmllckNsdXN0ZXJpbmdQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGN0Y5ODhBMUQ5NTk2QzMwMEY0RjEyRSAvKiBERkdTdG9yZUJhcnJpZXJD
bHVzdGVyaW5nUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU3Rv
cmVCYXJyaWVyQ2x1c3RlcmluZ1BoYXNlLmg7IHBhdGggPSBkZmcvREZHU3RvcmVCYXJyaWVyQ2x1
c3RlcmluZ1BoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGODAyM0U5MTYx
MzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQnlWYWxJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODMzNUI0
MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgzMzVCNTE2MzlDMUUzMDAxNDQzQjUgLyog
QXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGODM2NEI1MTY0QjBDMEUwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnJhbmNoRGlyZWN0aW9uLmg7IHBhdGggPSBk
ZmcvREZHQnJhbmNoRGlyZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01
MTM1LDcgKzUxMzMsNiBAQAogCQlFMzU1RDM4RTIyNDQ2ODZDMDA4RjFBRDYgLyogR2xvYmFsRXhl
Y3V0YWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHbG9iYWxFeGVjdXRhYmxlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1Njk4NzEyMjg0MTE4MzAwOENEQ0NCIC8qIFBh
Y2tlZENlbGxQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFja2VkQ2VsbFB0ci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzVBMEI5QzIyMEFEODdBMDBBQzQ0NzQgLyogRXhlY3V0YWJs
ZUJhc2VJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4ZWN1dGFi
bGVCYXNlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMzVCQTJDMDI0
MUEwRThDMDBCNjcwODYgLyogQnlWYWxJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ5VmFs
SW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNUNBMTRGMURCQzNBNTYw
MEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRE9NSklUQWJzdHJhY3RIZWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM1Q0ExNTAxREJDM0E1NjAwRjgzNTE2IC8qIERPTUpJVEFic3RyYWN0SGVh
cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRBYnN0cmFjdEhlYXAu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1Q0ExNTExREJDM0E1NjAwRjgzNTE2
IC8qIERPTUpJVEhlYXBSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBET01KSVRIZWFwUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
ODU1NCw4ICs4NTUxLDYgQEAKIAkJCQlFM0QyNjQyQTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNv
ZGVSZXdyaXRlci5oICovLAogCQkJCTUzRDM1NDk4MjQwRDg4QUQwMDg5NTBERCAvKiBCeXRlY29k
ZVVzZURlZi5jcHAgKi8sCiAJCQkJMEY4ODVFMTAxODQ5QTNCRTAwRjFFM0ZBIC8qIEJ5dGVjb2Rl
VXNlRGVmLmggKi8sCi0JCQkJRTM1QkEyQzAyNDFBMEU4QzAwQjY3MDg2IC8qIEJ5VmFsSW5mby5j
cHAgKi8sCi0JCQkJMEY4MDIzRTkxNjEzODMyMzAwQTBCQTQ1IC8qIEJ5VmFsSW5mby5oICovLAog
CQkJCTBGNjRCMjc3MUE3OTU3QjIwMDZFNEU2NiAvKiBDYWxsRWRnZS5jcHAgKi8sCiAJCQkJMEY2
NEIyNzgxQTc5NTdCMjAwNkU0RTY2IC8qIENhbGxFZGdlLmggKi8sCiAJCQkJMEYwQjgzQUUxNEJD
RjcxNDAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5jcHAgKi8sCkBAIC05NDczLDcgKzk0NjgsNiBA
QAogCQkJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZVJld3JpdGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk2NTE0RjIxOTE4QjNFMTY3MDA5OEZGOEIgLyogQnl0ZWNvZGVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjg4NUUxMTE4NDlBM0JFMDBGMUUzRkEgLyogQnl0ZWNvZGVV
c2VEZWYuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGODAyM0VBMTYxMzgzMkIwMEEwQkE0NSAvKiBC
eVZhbEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUZFOERFNTRCMjNBQzFEQUQwMDVDOTE0MiAv
KiBDYWNoZWFibGVJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRThERTU0RDIzQUMx
RTg2MDA1QzkxNDIgLyogQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0NENBMzUwMjIyNDE4MDEwMDgxNzc4OSAvKiBDYWNoZWRCeXRlY29kZS5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggNzA3N2VmOWFlMzExNzZm
NjM4NWViZTM0Y2NiMzFhNTA1YzE5MWVjNS4uNTJiOTNlZThkOGJiYTY2MDY0ZGIyMDE4ZjNmMzE3
NzAyZjc2YWE5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMTk3LDcgKzE5Nyw2
IEBAIGJ5dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2Uu
Y3BwCiBieXRlY29kZS9Bcml0aFByb2ZpbGUuY3BwCiBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Q
cm9maWxlLmNwcAogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAotYnl0ZWNvZGUvQnlWYWxJbmZv
LmNwcAogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAogYnl0ZWNvZGUvQnl0ZWNvZGVE
dW1wZXIuY3BwCiBieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDA1M2U2NjNlOGMxODZlODBjMzNkNmYyNDRmMTgzZGYzZDllZjNhZTku
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQnlWYWxJbmZvLmgiCi0KLSNpbmNs
dWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQot
I2lmIEVOQUJMRShKSVQpCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Ci12b2lkIEJ5VmFs
SW5mbzo6dmlzaXRBZ2dyZWdhdGVJbXBsKFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0gICAgY2FjaGVk
SWQudmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7Ci19Ci0KLURFRklORV9WSVNJVF9BR0dSRUdBVEUo
QnlWYWxJbmZvKTsKLQotI2VuZGlmIC8vIEVOQUJMRShKSVQpCi0KLX0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiMjI2ZmIxNmY1ZGI3NDRmN2ZlNTU2YmVjNzU4ZDdjZWEwNGU0
YWExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaAorKysgL2Rldi9udWxsCkBAIC0x
LDMwMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVyLmgi
Ci0jaW5jbHVkZSAiQ2xhc3NJbmZvLmgiCi0jaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCi0jaW5j
bHVkZSAiSW5kZXhpbmdUeXBlLmgiCi0jaW5jbHVkZSAiSklUU3R1YlJvdXRpbmUuaCIKLSNpbmNs
dWRlICJTdHJ1Y3R1cmUuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIFN5bWJvbDsKLQot
I2lmIEVOQUJMRShKSVQpCi0KLWNsYXNzIEFycmF5UHJvZmlsZTsKLWNsYXNzIFN0cnVjdHVyZVN0
dWJJbmZvOwotCi1lbnVtIEpJVEFycmF5TW9kZSA6IHVpbnQ4X3QgewotICAgIEpJVEludDMyLAot
ICAgIEpJVERvdWJsZSwKLSAgICBKSVRDb250aWd1b3VzLAotICAgIEpJVEFycmF5U3RvcmFnZSwK
LSAgICBKSVREaXJlY3RBcmd1bWVudHMsCi0gICAgSklUU2NvcGVkQXJndW1lbnRzLAotICAgIEpJ
VEludDhBcnJheSwKLSAgICBKSVRJbnQxNkFycmF5LAotICAgIEpJVEludDMyQXJyYXksCi0gICAg
SklUVWludDhBcnJheSwKLSAgICBKSVRVaW50OENsYW1wZWRBcnJheSwKLSAgICBKSVRVaW50MTZB
cnJheSwKLSAgICBKSVRVaW50MzJBcnJheSwKLSAgICBKSVRGbG9hdDMyQXJyYXksCi0gICAgSklU
RmxvYXQ2NEFycmF5LAotICAgIEpJVEJpZ0ludDY0QXJyYXksCi0gICAgSklUQmlnVWludDY0QXJy
YXksCi19OwotCi1pbmxpbmUgYm9vbCBpc09wdGltaXphYmxlSW5kZXhpbmdUeXBlKEluZGV4aW5n
VHlwZSBpbmRleGluZ1R5cGUpCi17Ci0gICAgc3dpdGNoIChpbmRleGluZ1R5cGUpIHsKLSAgICBj
YXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoKLSAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJ
TkdfVFlQRVM6Ci0gICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKLSAgICBj
YXNlIEFSUkFZX1dJVEhfQVJSQVlfU1RPUkFHRV9JTkRFWElOR19UWVBFUzoKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0K
LQotaW5saW5lIGJvb2wgaGFzT3B0aW1pemFibGVJbmRleGluZ0ZvckpTVHlwZShKU1R5cGUgdHlw
ZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIERpcmVjdEFyZ3VtZW50c1R5cGU6
Ci0gICAgY2FzZSBTY29wZWRBcmd1bWVudHNUeXBlOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCi1pbmxpbmUgYm9v
bCBoYXNPcHRpbWl6YWJsZUluZGV4aW5nRm9yQ2xhc3NJbmZvKGNvbnN0IENsYXNzSW5mbyogY2xh
c3NJbmZvKQotewotICAgIHJldHVybiBpc1R5cGVkVmlldyhjbGFzc0luZm8tPnR5cGVkQXJyYXlT
dG9yYWdlVHlwZSk7Ci19Ci0KLWlubGluZSBib29sIGhhc09wdGltaXphYmxlSW5kZXhpbmcoU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCi17Ci0gICAgcmV0dXJuIGlzT3B0aW1pemFibGVJbmRleGluZ1R5
cGUoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkKLSAgICAgICAgfHwgaGFzT3B0aW1pemFibGVJ
bmRleGluZ0ZvckpTVHlwZShzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpKQotICAgICAgICB8
fCBoYXNPcHRpbWl6YWJsZUluZGV4aW5nRm9yQ2xhc3NJbmZvKHN0cnVjdHVyZS0+Y2xhc3NJbmZv
KCkpOwotfQotCi1pbmxpbmUgSklUQXJyYXlNb2RlIGppdEFycmF5TW9kZUZvckluZGV4aW5nVHlw
ZShJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKQotewotICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBl
KSB7Ci0gICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIHJldHVybiBK
SVRJbnQzMjsKLSAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIHJl
dHVybiBKSVREb3VibGU7Ci0gICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoK
LSAgICAgICAgcmV0dXJuIEpJVENvbnRpZ3VvdXM7Ci0gICAgY2FzZSBBUlJBWV9XSVRIX0FSUkFZ
X1NUT1JBR0VfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIHJldHVybiBKSVRBcnJheVN0b3JhZ2U7
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQ1JBU0goKTsKLSAgICAgICAgcmV0dXJuIEpJVENvbnRp
Z3VvdXM7Ci0gICAgfQotfQotCi1pbmxpbmUgSklUQXJyYXlNb2RlIGppdEFycmF5TW9kZUZvckpT
VHlwZShKU1R5cGUgdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIERpcmVj
dEFyZ3VtZW50c1R5cGU6Ci0gICAgICAgIHJldHVybiBKSVREaXJlY3RBcmd1bWVudHM7Ci0gICAg
Y2FzZSBTY29wZWRBcmd1bWVudHNUeXBlOgotICAgICAgICByZXR1cm4gSklUU2NvcGVkQXJndW1l
bnRzOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybiBKSVRDb250aWd1b3VzOwotICAgIH0KLX0KLQotaW5saW5lIEpJVEFy
cmF5TW9kZSBqaXRBcnJheU1vZGVGb3JDbGFzc0luZm8oY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0lu
Zm8pCi17Ci0gICAgc3dpdGNoIChjbGFzc0luZm8tPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkgewot
ICAgIGNhc2UgVHlwZUludDg6Ci0gICAgICAgIHJldHVybiBKSVRJbnQ4QXJyYXk7Ci0gICAgY2Fz
ZSBUeXBlSW50MTY6Ci0gICAgICAgIHJldHVybiBKSVRJbnQxNkFycmF5OwotICAgIGNhc2UgVHlw
ZUludDMyOgotICAgICAgICByZXR1cm4gSklUSW50MzJBcnJheTsKLSAgICBjYXNlIFR5cGVVaW50
ODoKLSAgICAgICAgcmV0dXJuIEpJVFVpbnQ4QXJyYXk7Ci0gICAgY2FzZSBUeXBlVWludDhDbGFt
cGVkOgotICAgICAgICByZXR1cm4gSklUVWludDhDbGFtcGVkQXJyYXk7Ci0gICAgY2FzZSBUeXBl
VWludDE2OgotICAgICAgICByZXR1cm4gSklUVWludDE2QXJyYXk7Ci0gICAgY2FzZSBUeXBlVWlu
dDMyOgotICAgICAgICByZXR1cm4gSklUVWludDMyQXJyYXk7Ci0gICAgY2FzZSBUeXBlRmxvYXQz
MjoKLSAgICAgICAgcmV0dXJuIEpJVEZsb2F0MzJBcnJheTsKLSAgICBjYXNlIFR5cGVGbG9hdDY0
OgotICAgICAgICByZXR1cm4gSklURmxvYXQ2NEFycmF5OwotICAgIGNhc2UgVHlwZUJpZ0ludDY0
OgotICAgICAgICByZXR1cm4gSklUQmlnSW50NjRBcnJheTsKLSAgICBjYXNlIFR5cGVCaWdVaW50
NjQ6Ci0gICAgICAgIHJldHVybiBKSVRCaWdVaW50NjRBcnJheTsKLSAgICBkZWZhdWx0OgotICAg
ICAgICBDUkFTSCgpOwotICAgICAgICByZXR1cm4gSklUQ29udGlndW91czsKLSAgICB9Ci19Ci0K
LWlubGluZSBib29sIGppdEFycmF5TW9kZVBlcm1pdHNQdXQoSklUQXJyYXlNb2RlIG1vZGUpCi17
Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBKSVREaXJlY3RBcmd1bWVudHM6Ci0gICAg
Y2FzZSBKSVRTY29wZWRBcmd1bWVudHM6Ci0gICAgLy8gRklYTUU6IE9wdGltaXplIEJpZ0ludDY0
QXJyYXkgLyBCaWdVaW50NjRBcnJheSBpbiBJQwotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjExODMKLSAgICBjYXNlIEpJVEJpZ0ludDY0QXJyYXk6Ci0g
ICAgY2FzZSBKSVRCaWdVaW50NjRBcnJheToKLSAgICAgICAgLy8gV2UgY291bGQgc3VwcG9ydCBw
dXRfYnlfdmFsIG9uIHRoZXNlIGF0IHNvbWUgcG9pbnQsIGJ1dCBpdCdzIGp1c3Qgbm90IHRoYXQg
cHJvZml0YWJsZQotICAgICAgICAvLyBhdCB0aGUgbW9tZW50LgotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotfQotCi1pbmxp
bmUgYm9vbCBqaXRBcnJheU1vZGVQZXJtaXRzUHV0RGlyZWN0KEpJVEFycmF5TW9kZSBtb2RlKQot
ewotICAgIC8vIFdlIGRvbid0IGFsbG93IHR5cGVkIGFycmF5IHB1dERpcmVjdCBoZXJlIHNpbmNl
IHB1dERpcmVjdCBoYXMKLSAgICAvLyBkZWZpbmVPd25Qcm9wZXJ0eSh7Y29uZmlndXJhYmxlOiB0
cnVlLCB3cml0YWJsZTp0cnVlLCBlbnVtZXJhYmxlOnRydWV9KQotICAgIC8vIHNlbWFudGljcy4g
VHlwZWQgYXJyYXkgaW5kZXhlZCBwcm9wZXJ0aWVzIGFyZSBub24tY29uZmlndXJhYmxlIGJ5Ci0g
ICAgLy8gZGVmYXVsdCwgc28gd2UgY2FuJ3Qgc2ltcGx5IHN0b3JlIHRvIGEgdHlwZWQgYXJyYXkg
Zm9yIHB1dERpcmVjdC4KLSAgICAvLwotICAgIC8vIFdlIGNvdWxkIG1vZGVsIHB1dERpcmVjdCBv
biBTY29wZWRBcmd1bWVudHMgYW5kIERpcmVjdEFyZ3VtZW50cywgYnV0IHdlCi0gICAgLy8gaGF2
ZW4ndCBmb3VuZCBhbnkgcGVyZm9ybWFuY2UgaW5jZW50aXZlIHRvIGRvIGl0IHlldC4KLSAgICBz
d2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEpJVEludDMyOgotICAgIGNhc2UgSklURG91YmxlOgot
ICAgIGNhc2UgSklUQ29udGlndW91czoKLSAgICBjYXNlIEpJVEFycmF5U3RvcmFnZToKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLX0KLQotaW5saW5lIFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlRm9ySklUQXJyYXlN
b2RlKEpJVEFycmF5TW9kZSBtb2RlKQotewotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2Ug
SklUSW50OEFycmF5OgotICAgICAgICByZXR1cm4gVHlwZUludDg7Ci0gICAgY2FzZSBKSVRJbnQx
NkFycmF5OgotICAgICAgICByZXR1cm4gVHlwZUludDE2OwotICAgIGNhc2UgSklUSW50MzJBcnJh
eToKLSAgICAgICAgcmV0dXJuIFR5cGVJbnQzMjsKLSAgICBjYXNlIEpJVFVpbnQ4QXJyYXk6Ci0g
ICAgICAgIHJldHVybiBUeXBlVWludDg7Ci0gICAgY2FzZSBKSVRVaW50OENsYW1wZWRBcnJheToK
LSAgICAgICAgcmV0dXJuIFR5cGVVaW50OENsYW1wZWQ7Ci0gICAgY2FzZSBKSVRVaW50MTZBcnJh
eToKLSAgICAgICAgcmV0dXJuIFR5cGVVaW50MTY7Ci0gICAgY2FzZSBKSVRVaW50MzJBcnJheToK
LSAgICAgICAgcmV0dXJuIFR5cGVVaW50MzI7Ci0gICAgY2FzZSBKSVRGbG9hdDMyQXJyYXk6Ci0g
ICAgICAgIHJldHVybiBUeXBlRmxvYXQzMjsKLSAgICBjYXNlIEpJVEZsb2F0NjRBcnJheToKLSAg
ICAgICAgcmV0dXJuIFR5cGVGbG9hdDY0OwotICAgIGNhc2UgSklUQmlnSW50NjRBcnJheToKLSAg
ICAgICAgcmV0dXJuIFR5cGVCaWdJbnQ2NDsKLSAgICBjYXNlIEpJVEJpZ1VpbnQ2NEFycmF5Ogot
ICAgICAgICByZXR1cm4gVHlwZUJpZ1VpbnQ2NDsKLSAgICBkZWZhdWx0OgotICAgICAgICBDUkFT
SCgpOwotICAgICAgICByZXR1cm4gTm90VHlwZWRBcnJheTsKLSAgICB9Ci19Ci0KLWlubGluZSBK
SVRBcnJheU1vZGUgaml0QXJyYXlNb2RlRm9yU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJl
KQotewotICAgIGlmIChpc09wdGltaXphYmxlSW5kZXhpbmdUeXBlKHN0cnVjdHVyZS0+aW5kZXhp
bmdUeXBlKCkpKQotICAgICAgICByZXR1cm4gaml0QXJyYXlNb2RlRm9ySW5kZXhpbmdUeXBlKHN0
cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpOwotICAgIAotICAgIGlmIChoYXNPcHRpbWl6YWJsZUlu
ZGV4aW5nRm9ySlNUeXBlKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkpKQotICAgICAgICBy
ZXR1cm4gaml0QXJyYXlNb2RlRm9ySlNUeXBlKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkp
OwotICAgIAotICAgIEFTU0VSVChoYXNPcHRpbWl6YWJsZUluZGV4aW5nRm9yQ2xhc3NJbmZvKHN0
cnVjdHVyZS0+Y2xhc3NJbmZvKCkpKTsKLSAgICByZXR1cm4gaml0QXJyYXlNb2RlRm9yQ2xhc3NJ
bmZvKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkpOwotfQotCi1zdHJ1Y3QgQnlWYWxJbmZvIHsKLSAg
ICBCeVZhbEluZm8oQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQotICAgICAgICA6IGJ5dGVj
b2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRVcChD
b2RlTG9jYXRpb25MYWJlbDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBleGNlcHRpb25IYW5kbGVy
LCBKSVRBcnJheU1vZGUgYXJyYXlNb2RlLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSwgQ29k
ZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gZG9uZVRhcmdldCwgQ29kZUxvY2F0aW9u
TGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gYmFkVHlwZU5leHRIb3RQYXRoVGFyZ2V0LCBDb2RlTG9j
YXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBzbG93UGF0aFRhcmdldCkKLSAgICB7Ci0gICAg
ICAgIHRoaXMtPmV4Y2VwdGlvbkhhbmRsZXIgPSBleGNlcHRpb25IYW5kbGVyOwotICAgICAgICB0
aGlzLT5kb25lVGFyZ2V0ID0gZG9uZVRhcmdldDsKLSAgICAgICAgdGhpcy0+YmFkVHlwZU5leHRI
b3RQYXRoVGFyZ2V0ID0gYmFkVHlwZU5leHRIb3RQYXRoVGFyZ2V0OwotICAgICAgICB0aGlzLT5z
bG93UGF0aFRhcmdldCA9IHNsb3dQYXRoVGFyZ2V0OwotICAgICAgICB0aGlzLT5hcnJheVByb2Zp
bGUgPSBhcnJheVByb2ZpbGU7Ci0gICAgICAgIHRoaXMtPnNsb3dQYXRoQ291bnQgPSAwOwotICAg
ICAgICB0aGlzLT5zdHViSW5mbyA9IG51bGxwdHI7Ci0gICAgICAgIHRoaXMtPmFycmF5TW9kZSA9
IGFycmF5TW9kZTsKLSAgICAgICAgdGhpcy0+dG9va1Nsb3dQYXRoID0gZmFsc2U7Ci0gICAgICAg
IHRoaXMtPnNlZW4gPSBmYWxzZTsKLSAgICB9Ci0KLSAgICBERUNMQVJFX1ZJU0lUX0FHR1JFR0FU
RTsKLQotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKEJ5VmFsSW5mbywgbV9zbG93T3BlcmF0aW9uKTsgfQotICAgIHN0
YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZOb3RJbmRleEp1bXBUYXJnZXQoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoQnlWYWxJbmZvLCBtX25vdEluZGV4SnVtcFRhcmdldCk7IH0KLSAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mQmFkVHlwZUp1bXBUYXJnZXQoKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoQnlWYWxJbmZvLCBtX2JhZFR5cGVKdW1wVGFyZ2V0KTsgfQotCi0gICAgRnVuY3Rp
b25QdHI8T3BlcmF0aW9uUHRyVGFnPiBtX3Nsb3dPcGVyYXRpb247Ci0KLSAgICB1bmlvbiB7Ci0g
ICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBtX25vdEluZGV4
SnVtcFRhcmdldDsKLSAgICAgICAgQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPiBt
X25vdEluZGV4SnVtcDsKLSAgICB9OwotICAgIHVuaW9uIHsKLSAgICAgICAgQ29kZUxvY2F0aW9u
TGFiZWw8SklUU3R1YlJvdXRpbmVQdHJUYWc+IG1fYmFkVHlwZUp1bXBUYXJnZXQ7Ci0gICAgICAg
IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gbV9iYWRUeXBlSnVtcDsKLSAgICB9
OwotCi0gICAgQ29kZUxvY2F0aW9uTGFiZWw8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gZXhjZXB0
aW9uSGFuZGxlcjsKLSAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBkb25l
VGFyZ2V0OwotICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGJhZFR5cGVO
ZXh0SG90UGF0aFRhcmdldDsKLSAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFn
PiBzbG93UGF0aFRhcmdldDsKLSAgICBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZTsKLSAgICBC
eXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXg7Ci0gICAgdW5zaWduZWQgc2xvd1BhdGhDb3VudDsK
LSAgICBSZWZQdHI8SklUU3R1YlJvdXRpbmU+IHN0dWJSb3V0aW5lOwotICAgIENhY2hlYWJsZUlk
ZW50aWZpZXIgY2FjaGVkSWQ7IC8vIE9uY2Ugd2Ugc2V0IGNhY2hlZElkLCB3ZSBtdXN0IG5vdCBj
aGFuZ2UgdGhlIHZhbHVlLiBKSVQgY29kZSByZWxpZXMgb24gdGhhdCBjb25maWd1cmVkIGNhY2hl
ZElkIGlzIG1hcmtlZCBhbmQgcmV0YWluZWQgYnkgQ29kZUJsb2NrIHRocm91Z2ggQnlWYWxJbmZv
LgotICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbzsKLSAgICBKSVRBcnJheU1vZGUgYXJy
YXlNb2RlOyAvLyBUaGUgYXJyYXkgbW9kZSB0aGF0IHdhcyBiYWtlZCBpbnRvIHRoZSBpbmxpbmUg
SklUIGNvZGUuCi0gICAgYm9vbCB0b29rU2xvd1BhdGggOiAxOwotICAgIGJvb2wgc2VlbiA6IDE7
Ci19OwotCi1pbmxpbmUgQnl0ZWNvZGVJbmRleCBnZXRCeVZhbEluZm9CeXRlY29kZUluZGV4KEJ5
VmFsSW5mbyogaW5mbykKLXsKLSAgICByZXR1cm4gaW5mby0+Ynl0ZWNvZGVJbmRleDsKLX0KLQot
I2VuZGlmIC8vIEVOQUJMRShKSVQpCi0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBkY2VmYzZhZDZjMmRhMGEx
NDg5OGNmY2Y2MTg5YzZlOTRkMjBlNTZlLi5jNzY2YTI2OWU4Y2RlZDRkNzFkODY4MmE2N2Q3YzQz
YzVmZmE5OTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcApAQCAtMzIsNyArMzIsNiBAQAogCiAjaW5jbHVkZSAiQXJpdGhQcm9maWxlLmgiCiAjaW5j
bHVkZSAiQmFzaWNCbG9ja0xvY2F0aW9uLmgiCi0jaW5jbHVkZSAiQnlWYWxJbmZvLmgiCiAjaW5j
bHVkZSAiQnl0ZWNvZGVEdW1wZXIuaCIKICNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXNJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVPcGVyYW5kc0ZvckNoZWNrcG9pbnQuaCIK
QEAgLTE2MjYsOCArMTYyNSw2IEBAIHZvaWQgQ29kZUJsb2NrOjpnZXRJQ1N0YXR1c01hcChjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImLCBJQ1N0YXR1c01hcCYgcmVzdWx0KQogICAgICAgICAgICAg
ICAgIHJlc3VsdC5hZGQoc3R1YkluZm8tPmNvZGVPcmlnaW4sIElDU3RhdHVzKCkpLml0ZXJhdG9y
LT52YWx1ZS5zdHViSW5mbyA9IHN0dWJJbmZvOwogICAgICAgICAgICAgZm9yIChDYWxsTGlua0lu
Zm8qIGNhbGxMaW5rSW5mbyA6IGppdERhdGEtPm1fY2FsbExpbmtJbmZvcykKICAgICAgICAgICAg
ICAgICByZXN1bHQuYWRkKGNhbGxMaW5rSW5mby0+Y29kZU9yaWdpbigpLCBJQ1N0YXR1cygpKS5p
dGVyYXRvci0+dmFsdWUuY2FsbExpbmtJbmZvID0gY2FsbExpbmtJbmZvOwotICAgICAgICAgICAg
Zm9yIChCeVZhbEluZm8qIGJ5VmFsSW5mbyA6IGppdERhdGEtPm1fYnlWYWxJbmZvcykKLSAgICAg
ICAgICAgICAgICByZXN1bHQuYWRkKENvZGVPcmlnaW4oYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4
KSwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLmJ5VmFsSW5mbyA9IGJ5VmFsSW5mbzsKICAg
ICAgICAgfQogI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBpZiAoSklUQ29kZTo6aXNPcHRp
bWl6aW5nSklUKGppdFR5cGUoKSkpIHsKQEAgLTE2OTksMjQgKzE2OTYsNiBAQCBTdHJ1Y3R1cmVT
dHViSW5mbyogQ29kZUJsb2NrOjpmaW5kU3R1YkluZm8oQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQog
ICAgIHJldHVybiBudWxscHRyOwogfQogCi1CeVZhbEluZm8qIENvZGVCbG9jazo6ZmluZEJ5VmFs
SW5mbyhDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCi17Ci0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxv
Y2tlcihtX2xvY2spOwotICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9qaXREYXRhLmdldCgpKSB7
Ci0gICAgICAgIGZvciAoQnlWYWxJbmZvKiBieVZhbEluZm8gOiBqaXREYXRhLT5tX2J5VmFsSW5m
b3MpIHsKLSAgICAgICAgICAgIGlmIChieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXggPT0gY29kZU9y
aWdpbi5ieXRlY29kZUluZGV4KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGJ5VmFsSW5mbzsK
LSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotQnlWYWxJbmZvKiBD
b2RlQmxvY2s6OmFkZEJ5VmFsSW5mbyhCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCi17Ci0g
ICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIHJldHVybiBlbnN1cmVK
SVREYXRhKGxvY2tlcikubV9ieVZhbEluZm9zLmFkZChieXRlY29kZUluZGV4KTsKLX0KLQogQ2Fs
bExpbmtJbmZvKiBDb2RlQmxvY2s6OmFkZENhbGxMaW5rSW5mbyhDb2RlT3JpZ2luIGNvZGVPcmln
aW4pCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwpAQCAtMTgyOCw4
ICsxODA3LDYgQEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcmVuY2Vz
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLAogCiAjaWYgRU5BQkxFKEpJVCkKICAg
ICBpZiAoYXV0byogaml0RGF0YSA9IG1faml0RGF0YS5nZXQoKSkgewotICAgICAgICBmb3IgKEJ5
VmFsSW5mbyogYnlWYWxJbmZvIDogaml0RGF0YS0+bV9ieVZhbEluZm9zKQotICAgICAgICAgICAg
YnlWYWxJbmZvLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKICAgICAgICAgZm9yIChTdHJ1Y3R1
cmVTdHViSW5mbyogc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykKICAgICAgICAgICAg
IHN0dWJJbmZvLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggZjM4Nzk5MjU2NDI4ZGQ4ZGFiN2Ux
YmFlYjBlMjQxMGIzMTIzNjAwZC4uNGY3MGZhOWZmODFiMzNjN2JmMDQ2OTFkYjUyMWY2OTNhYTNm
OTRiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAt
OTcsNyArOTcsNiBAQCBjbGFzcyBNZXRhZGF0YVRhYmxlOwogY2xhc3MgUENUb0NvZGVPcmlnaW5N
YXA7CiBjbGFzcyBSZWdpc3RlckF0T2Zmc2V0TGlzdDsKIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZv
Owotc3RydWN0IEJ5VmFsSW5mbzsKIAogREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5U
SUZJRVIoQ29kZUJsb2NrUmFyZURhdGEpOwogCkBAIC0yNzUsNyArMjc0LDYgQEAgY2xhc3MgQ29k
ZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIEJhZzxKSVRNdWxJQz4gbV9tdWxJQ3M7
CiAgICAgICAgIEJhZzxKSVROZWdJQz4gbV9uZWdJQ3M7CiAgICAgICAgIEJhZzxKSVRTdWJJQz4g
bV9zdWJJQ3M7Ci0gICAgICAgIEJhZzxCeVZhbEluZm8+IG1fYnlWYWxJbmZvczsKICAgICAgICAg
QmFnPENhbGxMaW5rSW5mbz4gbV9jYWxsTGlua0luZm9zOwogICAgICAgICBTZW50aW5lbExpbmtl
ZExpc3Q8Q2FsbExpbmtJbmZvLCBQYWNrZWRSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPj4g
bV9pbmNvbWluZ0NhbGxzOwogICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8UG9seW1vcnBoaWND
YWxsTm9kZSwgUGFja2VkUmF3U2VudGluZWxOb2RlPFBvbHltb3JwaGljQ2FsbE5vZGU+PiBtX2lu
Y29taW5nUG9seW1vcnBoaWNDYWxsczsKQEAgLTMxNiwxMCArMzE0LDYgQEAgY2xhc3MgQ29kZUJs
b2NrIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICAvLyBPKG4pIG9wZXJhdGlvbi4gVXNlIGdldElD
U3RhdHVzTWFwKCkgdW5sZXNzIHlvdSByZWFsbHkgb25seSBpbnRlbmQgdG8gZ2V0IG9uZSBzdHVi
IGluZm8uCiAgICAgU3RydWN0dXJlU3R1YkluZm8qIGZpbmRTdHViSW5mbyhDb2RlT3JpZ2luKTsK
LSAgICAvLyBPKG4pIG9wZXJhdGlvbi4gVXNlIGdldElDU3RhdHVzTWFwKCkgdW5sZXNzIHlvdSBy
ZWFsbHkgb25seSBpbnRlbmQgdG8gZ2V0IG9uZSBieS12YWwtaW5mby4KLSAgICBCeVZhbEluZm8q
IGZpbmRCeVZhbEluZm8oQ29kZU9yaWdpbik7Ci0KLSAgICBCeVZhbEluZm8qIGFkZEJ5VmFsSW5m
byhCeXRlY29kZUluZGV4KTsKIAogICAgIENhbGxMaW5rSW5mbyogYWRkQ2FsbExpbmtJbmZvKENv
ZGVPcmlnaW4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SUNTdGF0dXNNYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01h
cC5oCmluZGV4IDdhMDU4YzNkMDI1OTZiZjZlYThmZjlhOGE3MmI0ZGMyYTFkMTg5MjMuLmE3Njhh
ODVkYzFiZjA5YjI5ZWI0Yjk5NmZlYTc0YmEyMmQzNTAzMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCkBAIC0zOSwxMiArMzksMTAgQEAgY2xhc3Mg
SW5CeVN0YXR1czsKIGNsYXNzIFB1dEJ5U3RhdHVzOwogY2xhc3MgRGVsZXRlQnlTdGF0dXM7CiBj
bGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKLXN0cnVjdCBCeVZhbEluZm87CiAKIHN0cnVjdCBJQ1N0
YXR1cyB7CiAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvIHsgbnVsbHB0ciB9OwogICAg
IENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvIHsgbnVsbHB0ciB9OwotICAgIEJ5VmFsSW5mbyog
YnlWYWxJbmZvIHsgbnVsbHB0ciB9OwogICAgIENhbGxMaW5rU3RhdHVzKiBjYWxsU3RhdHVzIHsg
bnVsbHB0ciB9OwogICAgIEdldEJ5U3RhdHVzKiBnZXRTdGF0dXMgeyBudWxscHRyIH07CiAgICAg
SW5CeVN0YXR1cyogaW5TdGF0dXMgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGM0NTVlYjViZDUwMDVkN2RmNzUx
ZGYwYTI0NzUxY2ZiYjFlNTU5NzkuLmQwMDljOWEyZTRmNmQ1ZWZiYjc5MzRiNWEwY2VkYWFhNjJj
OTQ0NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCkBAIC02NDUzLDEyICs2NDUzLDExIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChieXRl
Y29kZS5tX3ZhbHVlKTsKICAgICAgICAgICAgIGJvb2wgY29tcGlsZWRBc1B1dFByaXZhdGVOYW1l
QnlJZCA9IGZhbHNlOwogCisgICAgICAgICAgICBQdXRCeVN0YXR1cyBzdGF0dXMgPSBQdXRCeVN0
YXR1czo6Y29tcHV0ZUZvcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1faW5s
aW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssIGN1cnJlbnRDb2Rl
T3JpZ2luKCkpOworCiAgICAgICAgICAgICBpZiAoIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFBy
b2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZElkZW50KQogICAgICAgICAgICAg
ICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3Vy
cmVudEluZGV4LCBCYWRUeXBlKQogICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9w
LT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDb25zdGFudFZh
bHVlKSkgewotCi0gICAgICAgICAgICAgICAgUHV0QnlTdGF0dXMgc3RhdHVzID0gUHV0QnlTdGF0
dXM6OmNvbXB1dGVGb3IobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2lubGlu
ZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrLCBjdXJyZW50Q29kZU9y
aWdpbigpKTsKLQogICAgICAgICAgICAgICAgIGlmIChDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXIgPSBzdGF0dXMuc2luZ2xlSWRlbnRpZmllcigpKSB7CiAgICAgICAgICAgICAgICAgICAg
IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBpZGVudGlmaWVyLnVpZCgpOwogICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygp
LmVuc3VyZSh1aWQpOwpAQCAtNjQ3MywxMSArNjQ3MiwzNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogCiAgICAgICAgICAgICAgICAgICAgIGhhbmRs
ZVB1dFByaXZhdGVOYW1lQnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCB2
YWx1ZSwgc3RhdHVzLCBieXRlY29kZS5tX3B1dEtpbmQpOwogICAgICAgICAgICAgICAgICAgICBj
b21waWxlZEFzUHV0UHJpdmF0ZU5hbWVCeUlkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKHN0YXR1cy50YWtlc1Nsb3dQYXRoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8g
RXZlbiB0aG91Z2ggc3RhdHVzIGlzIHRha2luZyBhIHNsb3cgcGF0aCwgaXQgaXMgcG9zc2libGUg
dGhhdCB0aGlzIG5vZGUgc3RpbGwgaGFzIGNvbnN0YW50IGlkZW50aWZpZXIgYW5kIHVzaW5nIFB1
dEJ5SWQgaXMgYWx3YXlzIGJldHRlciBpbiB0aGF0IGNhc2UuCisgICAgICAgICAgICAgICAgICAg
IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBudWxscHRyOworICAgICAgICAgICAgICAgICAgICBK
U0NlbGwqIHByb3BlcnR5Q2VsbCA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgICAgIGlmIChh
dXRvKiBzeW1ib2wgPSBwcm9wZXJ0eS0+ZHluYW1pY0Nhc3RDb25zdGFudDxTeW1ib2wqPigqbV92
bSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVpZCA9ICZzeW1ib2wtPnVpZCgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlDZWxsID0gc3ltYm9sOworICAgICAgICAgICAg
ICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJlZXplU3Ryb25nKHN5
bWJvbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrSXNDb25zdGFu
dCwgT3BJbmZvKGZyb3plbiksIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IGlmIChhdXRvKiBzdHJpbmcgPSBwcm9wZXJ0eS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU1N0cmlu
Zyo+KCptX3ZtKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGltcGwgPSBz
dHJpbmctPnRyeUdldFZhbHVlSW1wbCgpOyBpbXBsLT5pc0F0b20oKSAmJiAhcGFyc2VJbmRleCgq
Y29uc3RfY2FzdDxTdHJpbmdJbXBsKj4oaW1wbCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWlkID0gYml0d2lzZV9jYXN0PFVuaXF1ZWRTdHJpbmdJbXBsKj4oaW1wbCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlDZWxsID0gc3RyaW5nOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZnJlZXplU3Ryb25nKHN0cmluZyk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0lkZW50LCBPcEluZm8odWlkKSwg
cHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHVpZCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5l
bnN1cmUodWlkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVB1dFByaXZhdGVOYW1l
QnlJZChiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tQ2VsbChwcm9wZXJ0eUNl
bGwpLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgc3RhdHVzLCBieXRlY29kZS5tX3B1dEtpbmQp
OworICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZWRBc1B1dFByaXZhdGVOYW1lQnlJZCA9
IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIGlmICghY29tcGlsZWRBc1B1dFByaXZhdGVOYW1lQnlJZCkK
LSAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dFByaXZhdGVOYW1lLCBPcEluZm8oKSwgT3BJ
bmZvKGJ5dGVjb2RlLm1fcHV0S2luZCksIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSk7CisgICAgICAg
ICAgICBpZiAoIWNvbXBpbGVkQXNQdXRQcml2YXRlTmFtZUJ5SWQpIHsKKyAgICAgICAgICAgICAg
ICBOb2RlKiBwdXRQcml2YXRlTmFtZSA9IGFkZFRvR3JhcGgoUHV0UHJpdmF0ZU5hbWUsIE9wSW5m
bygpLCBPcEluZm8oYnl0ZWNvZGUubV9wdXRLaW5kKSwgYmFzZSwgcHJvcGVydHksIHZhbHVlKTsK
KyAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLm9ic2VydmVkU3RydWN0dXJlU3R1YkluZm9TbG93
UGF0aCgpKQorICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fc2xvd1B1dEJ5VmFsLmFkZChw
dXRQcml2YXRlTmFtZSk7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIE5FWFRfT1BDT0RF
KG9wX3B1dF9wcml2YXRlX25hbWUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCBlMjViMWYzODU0OTM1NGFlMTMyYWRkYmNiNjhh
Y2I5ZGE4MGI1Mjk4Li4wYmViOGJlMDE2ZTIwZjYxYTliODA4MjE2M2E4NzFmMTRlNTBjNmQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE5NTIs
OCArMTk1MiwxNiBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDoK
KyAgICAgICAgY2FzZSBDaGVja1ByaXZhdGVCcmFuZDogeworICAgICAgICAgICAgZml4RWRnZTxT
eW1ib2xVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKICAgICAgICAgY2FzZSBQdXRQcml2YXRlTmFtZTogeworICAgICAgICAgICAgaWYgKCFtX2dy
YXBoLm1fc2xvd1B1dEJ5VmFsLmNvbnRhaW5zKG5vZGUpKSB7CisgICAgICAgICAgICAgICAgaWYg
KG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVDZWxsKCkpCisgICAgICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgfQogICAg
ICAgICAgICAgZml4RWRnZTxTeW1ib2xVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCmluZGV4IDJiNjM2NjYxNjFiMTk3ZDBlNThkY2VlYWZjMDgzZTU0MTYz
ZDI5YmMuLjgxNjRmYWViYzA0MjZiMTRkZDUzNGQ4Mjc3NjE1MDRlNzRlYzRmMGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zNzQ2
LDkgKzM3NDYsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxGb3JPYmpl
Y3RXaXRoU3ltYm9sKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZAogCiB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWUoTm9kZSogbm9kZSkKIHsKLSAgICBpZiAobm9kZS0+
aGFzQ2FjaGVhYmxlSWRlbnRpZmllcigpKQotICAgICAgICByZXR1cm4gY29tcGlsZUdldFByaXZh
dGVOYW1lQnlJZChub2RlKTsKLQogICAgIHN3aXRjaCAobV9ncmFwaC5jaGlsZChub2RlLCAwKS51
c2VLaW5kKCkpIHsKICAgICBjYXNlIENlbGxVc2U6IHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgYmFzZSh0aGlzLCBtX2dyYXBoLmNoaWxkKG5vZGUsIDApKTsKQEAgLTM5NDEsMjEgKzM5
MzgsNzcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsV2l0aFRoaXMoTm9k
ZSogbm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lKE5v
ZGUqIG5vZGUpCiB7Ci0gICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5
cGVkVXNlKTsKLSAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
LSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm9wZXJ0eVZhbHVlKHRoaXMsIG5vZGUtPmNoaWxk
MigpKTsKLSAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDMoKSk7Cisg
ICAgRWRnZSYgY2hpbGQxID0gbm9kZS0+Y2hpbGQxKCk7CisgICAgRWRnZSYgY2hpbGQyID0gbm9k
ZS0+Y2hpbGQyKCk7CisgICAgRWRnZSYgY2hpbGQzID0gbm9kZS0+Y2hpbGQzKCk7CisgICAgaWYg
KG1fZ3JhcGgubV9zbG93UHV0QnlWYWwuY29udGFpbnMobm9kZSkgfHwgKGNoaWxkMS51c2VLaW5k
KCkgIT0gQ2VsbFVzZSAmJiBjaGlsZDEudXNlS2luZCgpICE9IEtub3duQ2VsbFVzZSkpIHsKKyAg
ICAgICAgQVNTRVJUKGNoaWxkMS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CisgICAgICAgIEpT
VmFsdWVPcGVyYW5kIGJhc2UodGhpcywgY2hpbGQxKTsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgcHJvcGVydHlWYWx1ZSh0aGlzLCBjaGlsZDIpOworICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCB2YWx1ZSh0aGlzLCBjaGlsZDMpOwogCi0gICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFs
dWUuanNWYWx1ZVJlZ3MoKTsKLSAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1
ZVJlZ3MoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJl
Z3MoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7
CisKKyAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcHJvcGVydHlWYWx1ZS5ncHIoKTsKKwor
ICAgICAgICBzcGVjdWxhdGVTeW1ib2woY2hpbGQyLCBwcm9wZXJ0eUdQUik7CisKKyAgICAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgYXV0byBvcGVyYXRpb24gPSBub2RlLT5wcml2YXRl
RmllbGRQdXRLaW5kKCkuaXNEZWZpbmUoKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGVmaW5lUHJpdmF0
ZUZpZWxkR2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsU2V0UHJpdmF0ZUZpZWxkR2VuZXJpYzsK
KyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBiYXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHlHUFIpLCB2YWx1
ZVJlZ3MsIFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIFRydXN0ZWRJbW1QdHIobnVsbHB0cikpOwor
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworCisgICAgICAgIG5vUmVzdWx0KG5vZGUp
OworICAgICAgICByZXR1cm47CisgICAgfQogCisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFz
ZSh0aGlzLCBjaGlsZDEpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3BlcnR5VmFsdWUo
dGhpcywgY2hpbGQyKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBjaGlsZDMpOwor
CisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgIEdQUlJlZyBwcm9wZXJ0eUdQ
UiA9IHByb3BlcnR5VmFsdWUuZ3ByKCk7CisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFs
dWUuanNWYWx1ZVJlZ3MoKTsKIAotICAgIHNwZWN1bGF0ZVN5bWJvbChub2RlLT5jaGlsZDIoKSwg
cHJvcGVydHlHUFIpOworICAgIEdQUlRlbXBvcmFyeSBzdHViSW5mbzsKKyAgICBHUFJSZWcgc3R1
YkluZm9HUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklU
VHlwZTo6REZHSklUKSkgeworICAgICAgICBzdHViSW5mbyA9IEdQUlRlbXBvcmFyeSh0aGlzKTsK
KyAgICAgICAgc3R1YkluZm9HUFIgPSBzdHViSW5mby5ncHIoKTsKKyAgICB9CiAKLSAgICBmbHVz
aFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVH
ZW5lcmljLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIENDYWxsSGVscGVy
czo6Q2VsbFZhbHVlKHByb3BlcnR5R1BSKSwgdmFsdWVSZWdzLCBUcnVzdGVkSW1tUHRyKG51bGxw
dHIpLCBUcnVzdGVkSW1tMzIobm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLnZhbHVlKCkpKTsK
LSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgIHNwZWN1bGF0ZVN5bWJvbChjaGlsZDIs
IHByb3BlcnR5R1BSKTsKKworICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPm9yaWdp
bi5zZW1hbnRpYzsKKyAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2Fs
bFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmln
aW4sIG1fc3RyZWFtLT5zaXplKCkpOworICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0
aGlzLT51c2VkUmVnaXN0ZXJzKCk7CisKKyAgICBKSVRQdXRCeVZhbEdlbmVyYXRvciBnZW4oCisg
ICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBKSVRUeXBlOjpERkdKSVQsIGNvZGVPcmlnaW4sIGNh
bGxTaXRlLCBBY2Nlc3NUeXBlOjpQdXRCeVZhbCwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNW
YWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGJhc2VHUFIpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
cHJvcGVydHlHUFIpLCB2YWx1ZVJlZ3MsIEludmFsaWRHUFJSZWcsIHN0dWJJbmZvR1BSKTsKKyAg
ICBnZW4uc3R1YkluZm8oKS0+cHJvcGVydHlJc1N5bWJvbCA9IHRydWU7CisKKyAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aChtX2ppdCk7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nh
c2VzOworICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpCisgICAg
ICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKworICAgIHN0ZDo6dW5p
cXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CisgICAgYXV0byBvcGVyYXRpb24g
PSBub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCkuaXNEZWZpbmUoKSA/IG9wZXJhdGlvblB1dEJ5
VmFsRGVmaW5lUHJpdmF0ZUZpZWxkT3B0aW1pemUgOiBvcGVyYXRpb25QdXRCeVZhbFNldFByaXZh
dGVGaWVsZE9wdGltaXplOworICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZH
SklUKSkgeworICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAorICAgICAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVy
czo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwgb3BlcmF0aW9uLAorICAgICAgICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmln
aW4pKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2Vs
bFZhbHVlKHByb3BlcnR5R1BSKSwgdmFsdWVSZWdzLCBzdHViSW5mb0dQUiwgbnVsbHB0cik7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCisgICAgICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbiwKKyAgICAgICAgICAgIE5vUmVzdWx0LCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBl
cnM6OkNlbGxWYWx1ZShwcm9wZXJ0eUdQUiksIHZhbHVlUmVncywgZ2VuLnN0dWJJbmZvKCksIG51
bGxwdHIpOworICAgIH0KKworICAgIG1faml0LmFkZFB1dEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0
KCkpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKIAogICAg
IG5vUmVzdWx0KG5vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggMGJlZmVkYWM0OWNmMGI1ZGVlYzU1Njgx
Y2NhMDBiNWFkNmMzYWNlZi4uNTU1OWUxMDU1OTVkOWM0OTM1NGU0ZjVlNjJhODMzMzQ0YjE4MTlk
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCkBAIC0yNTkyLDEyICsyNTkyLDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBH
ZXRQcml2YXRlTmFtZToKLSAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDogeworICAgIGNhc2Ug
R2V0UHJpdmF0ZU5hbWU6IHsKICAgICAgICAgY29tcGlsZUdldFByaXZhdGVOYW1lKG5vZGUpOwog
ICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldFByaXZhdGVOYW1lQnlJZDogewor
ICAgICAgICBjb21waWxlR2V0UHJpdmF0ZU5hbWVCeUlkKG5vZGUpOworICAgICAgICBicmVhazsK
KyAgICB9CisKICAgICBjYXNlIEdldEJ5VmFsOiB7CiAgICAgICAgIEpTVmFsdWVSZWdzVGVtcG9y
YXJ5IGpzVmFsdWVSZXN1bHQ7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBvbmVSZWdSZXN1bHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApp
bmRleCBkNDU1Y2E0ZTY4ZTQ3MGJkNGI5NmJlMGFlMWE5MDI5ZDdiZWFjZWE4Li44ZDhhZWIxM2E4
ZDEzNmRhODlmOTllOTQ0YzZhMTJjNTJiOGYzMjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTMxMDgsMTIgKzMxMDgsMTYg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVh
azsKICAgICB9CiAKLSAgICBjYXNlIEdldFByaXZhdGVOYW1lOgotICAgIGNhc2UgR2V0UHJpdmF0
ZU5hbWVCeUlkOiB7CisgICAgY2FzZSBHZXRQcml2YXRlTmFtZTogewogICAgICAgICBjb21waWxl
R2V0UHJpdmF0ZU5hbWUobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2Ug
R2V0UHJpdmF0ZU5hbWVCeUlkOiB7CisgICAgICAgIGNvbXBpbGVHZXRQcml2YXRlTmFtZUJ5SWQo
bm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0QnlWYWw6IHsKICAg
ICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0OwogICAgICAgICBjb21waWxlR2V0QnlW
YWwobm9kZSwgc2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFGb3JtYXQ+
KERhdGFGb3JtYXQgcHJlZmVycmVkRm9ybWF0KT4oWyZdIChEYXRhRm9ybWF0IHByZWZlcnJlZEZv
cm1hdCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJh
cnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0
b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAppbmRleCA5N2JiNmUwODY5OTM1MjNjMjllMWUx
MTBhMjA0MzgwMjlhMGQyN2QzLi5kYzMyMDIxODhlYjI1M2FjYWIwYjJlNGQyY2I0NGFhYTA3YjJj
ZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmll
ckluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0
b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcApAQCAtMjc1LDYgKzI3NSwxMiBAQCBjbGFzcyBT
dG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBj
YXNlIFB1dFByaXZhdGVOYW1lOiB7CisgICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm1fc2xv
d1B1dEJ5VmFsLmNvbnRhaW5zKG1fbm9kZSkgJiYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
ID09IENlbGxVc2UgfHwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gS25vd25DZWxsVXNl
KSkKKyAgICAgICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQxKCks
IG1fbm9kZS0+Y2hpbGQzKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorCiAgICAgICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDogewogICAgICAgICAgICAg
ICAgIC8vIFdlIGVtaXQgSUMgY29kZSB3aGVuIHdlIGhhdmUgYSBub24tbnVsbCBjYWNoZWFibGVJ
ZGVudGlmaWVyIGFuZCB3ZSBuZWVkIHRvIGludHJvZHVjZSBhCiAgICAgICAgICAgICAgICAgLy8g
YmFycmllciBmb3IgaXQuIE9uIFB1dFByaXZhdGVOYW1lLCB3ZSBwZXJmb3JtIHN0b3JlIGJhcnJp
ZXIgZHVyaW5nIHNsb3cgcGF0aCBleGVjdXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggOTIxNmU4MjQ3Yzk1Y2FmYTM2YjAxMzY0MGI5
MmZhODExNjUzMTVjMS4uYWM5ZDBjNDMzZTEyNmM5NWFiMjRmYmFkMDU0MzdiODUzODIxYTRmOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAt
NDI2MiwxNSArNDI2MiwxMDAgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgIHZvaWQgY29t
cGlsZVB1dFByaXZhdGVOYW1lKCkKICAgICB7Ci0gICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwg
bV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBtX25vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSk7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Cisg
ICAgICAgIEVkZ2UmIGNoaWxkMSA9IG1fbm9kZS0+Y2hpbGQxKCk7CisgICAgICAgIEVkZ2UmIGNo
aWxkMiA9IG1fbm9kZS0+Y2hpbGQyKCk7CisgICAgICAgIEVkZ2UmIGNoaWxkMyA9IG1fbm9kZS0+
Y2hpbGQzKCk7CisgICAgICAgIGlmIChtX2dyYXBoLm1fc2xvd1B1dEJ5VmFsLmNvbnRhaW5zKG1f
bm9kZSkgfHwgKGNoaWxkMS51c2VLaW5kKCkgIT0gQ2VsbFVzZSAmJiBjaGlsZDEudXNlS2luZCgp
ICE9IEtub3duQ2VsbFVzZSkpIHsKKyAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9u
b2RlLCBjaGlsZDEudXNlS2luZCgpID09IFVudHlwZWRVc2UsIGNoaWxkMS51c2VLaW5kKCkpOwor
CisgICAgICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUoY2hpbGQxKTsKKyAgICAgICAg
ICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd1N5bWJvbChjaGlsZDIpOworICAgICAgICAgICAgTFZh
bHVlIHZhbHVlID0gbG93SlNWYWx1ZShjaGlsZDMpOwogCi0gICAgICAgIExWYWx1ZSBiYXNlID0g
bG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0g
bG93U3ltYm9sKG1fbm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dK
U1ZhbHVlKG1fbm9kZS0+Y2hpbGQzKCkpOworICAgICAgICAgICAgYXV0byBvcGVyYXRpb24gPSBt
X25vZGUtPnByaXZhdGVGaWVsZFB1dEtpbmQoKS5pc0RlZmluZSgpID8gb3BlcmF0aW9uUHV0QnlW
YWxEZWZpbmVQcml2YXRlRmllbGRHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxTZXRQcml2YXRl
RmllbGRHZW5lcmljOworICAgICAgICAgICAgdm1DYWxsKFZvaWQsIG9wZXJhdGlvbiwgd2Vha1Bv
aW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBtX291dC5jb25zdElu
dFB0cigwKSwgbV9vdXQuY29uc3RJbnRQdHIoMCkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKKworICAgICAgICBMVmFsdWUg
YmFzZSA9IGxvd0NlbGwoY2hpbGQxKTsKKyAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93U3lt
Ym9sKGNoaWxkMik7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUoY2hpbGQzKTsK
KworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50
KFZvaWQpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoYmFzZSk7Cisg
ICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rlcihwcm9wZXJ0eSk7CisgICAgICAg
IHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rlcih2YWx1ZSk7CisgICAgICAgIHBhdGNocG9p
bnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RD
ZWxsTWFza1JlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRh
ZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKKyAgICAg
ICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJz
KCkpOworICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBKSVRDb2Rl
Ojp1c2VEYXRhSUMoSklUVHlwZTo6RlRMSklUKSA/IDEgOiAwOworCisgICAgICAgIFJlZlB0cjxQ
YXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJlUGF0Y2hw
b2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CisKKyAgICAgICAgU3RhdGUqIHN0YXRlID0g
Jm1fZnRsU3RhdGU7CisgICAgICAgIENvZGVPcmlnaW4gbm9kZVNlbWFudGljT3JpZ2luID0gbm9k
ZS0+b3JpZ2luLnNlbWFudGljOworICAgICAgICBhdXRvIG9wZXJhdGlvbiA9IG5vZGUtPnByaXZh
dGVGaWVsZFB1dEtpbmQoKS5pc0RlZmluZSgpID8gb3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2
YXRlRmllbGRPcHRpbWl6ZSA6IG9wZXJhdGlvblB1dEJ5VmFsU2V0UHJpdmF0ZUZpZWxkT3B0aW1p
emU7CisgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAg
ICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisg
ICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBzdGF0ZS0+aml0Q29kZS0+
Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGVTZW1hbnRpY09y
aWdpbik7CisKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRpcmVjdCBleGl0IHRhcmdldCBm
b3Igb3BlcmF0aW9uIGNhbGxzLgorICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExp
c3Q+IGV4Y2VwdGlvbnMgPSBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBh
cmFtcyktPmp1bXBzKGppdCk7CisKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGV4aXQgZm9y
IGNhbGwgSUMncyBjcmVhdGVkIGJ5IHRoZSBJQyBmb3IgZ2V0dGVycy4gV2UgZG9uJ3QgaGF2ZQor
ICAgICAgICAgICAgLy8gdG8gZG8gYW55dGhpbmcgd2VpcmQgb3RoZXIgdGhhbiBjYWxsIHRoaXMs
IHNpbmNlIGl0IHdpbGwgYXNzb2NpYXRlIHRoZSBleGl0IHdpdGgKKyAgICAgICAgICAgIC8vIHRo
ZSBjYWxsc2l0ZSBpbmRleC4KKyAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVF
eGl0Q3JlYXRpb25Gb3JVbndpbmQocGFyYW1zLCBjYWxsU2l0ZUluZGV4KTsKIAotICAgICAgICB2
bUNhbGwoVm9pZCwgb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljLAotICAgICAgICAgICAg
d2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBtX291dC5j
b25zdEludFB0cigwKSwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPnByaXZhdGVGaWVsZFB1dEtp
bmQoKS52YWx1ZSgpKSk7CisgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IHBhcmFtc1swXS5n
cHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHBhcmFtc1sxXS5ncHIoKTsK
KyAgICAgICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHBhcmFtc1syXS5ncHIoKTsKKyAgICAgICAg
ICAgIEdQUlJlZyBzdHViSW5mb0dQUiA9IEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExK
SVQpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IEludmFsaWRHUFJSZWc7CisKKyAgICAgICAgICAg
IGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVFB1dEJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAorICAg
ICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgSklUVHlwZTo6RlRMSklULCBub2RlU2VtYW50
aWNPcmlnaW4sIGNhbGxTaXRlSW5kZXgsIEFjY2Vzc1R5cGU6OlB1dEJ5VmFsLAorICAgICAgICAg
ICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhiYXNlR1BS
KSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlHUFIpLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIEludmFs
aWRHUFJSZWcsIHN0dWJJbmZvR1BSKTsKKworICAgICAgICAgICAgZ2VuZXJhdG9yLT5zdHViSW5m
bygpLT5wcm9wZXJ0eUlzU3ltYm9sID0gdHJ1ZTsKKworICAgICAgICAgICAgZ2VuZXJhdG9yLT5n
ZW5lcmF0ZUZhc3RQYXRoKGppdCk7CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRv
bmUgPSBqaXQubGFiZWwoKTsKKworICAgICAgICAgICAgcGFyYW1zLmFkZExhdGVQYXRoKFs9XSAo
Q0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJl
Z2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisKKyAgICAgICAgICAgICAgICBpZiAoIUpJ
VENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpGVExKSVQpKQorICAgICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CisgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CisgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICBp
ZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkZUTEpJVCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1
YkluZm8oKSksIHN0dWJJbmZvR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5z
dHViSW5mbygpLT5tX3Nsb3dPcGVyYXRpb24gPSBvcGVyYXRpb247CisgICAgICAgICAgICAgICAg
ICAgIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAg
ICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGVTZW1hbnRp
Y09yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIENDYWxs
SGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgSW52YWxpZEdQUlJlZywKKyAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGVTZW1hbnRpY09yaWdpbiksCisg
ICAgICAgICAgICAgICAgICAgICAgICBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIsIHN0
dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0cikpLmNhbGwoKTsK
KyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENh
bGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRlLCBwYXJh
bXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlU2VtYW50aWNPcmlnaW4sCisgICAg
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb24sIEludmFsaWRH
UFJSZWcsCisgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9i
amVjdEZvcihub2RlU2VtYW50aWNPcmlnaW4pLAorICAgICAgICAgICAgICAgICAgICAgICAgYmFz
ZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
Z2VuZXJhdG9yLT5zdHViSW5mbygpKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxw
dHIpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGppdC5qdW1w
KCkubGlua1RvKGRvbmUsICZqaXQpOworCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBv
cnRTbG93UGF0aENhbGwoc2xvd1BhdGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKKworICAgICAgICAg
ICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5maW5hbGl6ZShsaW5rQnVmZmVyLCBsaW5rQnVm
ZmVyKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsK
ICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVBdG9taWNzUmVhZE1vZGlmeVdyaXRlKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA1MGRlODU1YjZhYzkwZWU2ZDNkMWM5NjFlNDQ4NDgy
Mzk1YTQ2MTZmLi4zYTM3YmVlMjNlZTNlNWJlZTY1Y2ZlMjcwNzQ5ZWEwZTVhYTZmNjAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC01MTcsNyArNTE3LDYgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICBtX2RlbEJ5VmFsSW5kZXggPSAwOwogICAgIG1f
aW5zdGFuY2VPZkluZGV4ID0gMDsKICAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4ID0gMDsK
LSAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCA9IDA7CiAgICAgbV9jYWxsTGlua0luZm9JbmRl
eCA9IDA7CiAKICAgICB1bnNpZ25lZCBieXRlY29kZUNvdW50SGF2aW5nU2xvd0Nhc2UgPSAwOwpA
QCAtOTE5LDQ1ICs5MTgsNiBAQCB2b2lkIEpJVDo6bGluaygpCiAgICAgZmluYWxpemVJbmxpbmVD
YWNoZXMobV9pbnN0YW5jZU9mcywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2Fj
aGVzKG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMsIHBhdGNoQnVmZmVyKTsKIAotICAgIGlmIChtX2J5
VmFsQ29tcGlsYXRpb25JbmZvLnNpemUoKSkgewotI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQotICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCBleGNlcHRpb25IYW5kbGVyKHZtKCkuZ2V0Q1RJ
U3R1YihoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxFeGNlcHRpb25IYW5k
bGVyUHRyVGFnPigpKTsKLSNlbHNlCi0gICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEV4Y2VwdGlv
bkhhbmRsZXJQdHJUYWc+IGV4Y2VwdGlvbkhhbmRsZXIgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9m
PEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KG1fZXhjZXB0aW9uSGFuZGxlcik7Ci0jZW5kaWYKLQot
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGJ5VmFsQ29tcGlsYXRpb25JbmZvIDogbV9ieVZhbENv
bXBpbGF0aW9uSW5mbykgewotICAgICAgICAgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVOb3RJ
bmRleEp1bXAgPSBieVZhbENvbXBpbGF0aW9uSW5mby5ub3RJbmRleEp1bXA7Ci0gICAgICAgICAg
ICBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+IG5vdEluZGV4SnVtcDsKLSAgICAg
ICAgICAgIGlmIChKdW1wKHBhdGNoYWJsZU5vdEluZGV4SnVtcCkuaXNTZXQoKSkKLSAgICAgICAg
ICAgICAgICBub3RJbmRleEp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+
KHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hhYmxlTm90SW5k
ZXhKdW1wKSk7Ci0KLSAgICAgICAgICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlQmFkVHlwZUp1
bXAgPSBieVZhbENvbXBpbGF0aW9uSW5mby5iYWRUeXBlSnVtcDsKLSAgICAgICAgICAgIENvZGVM
b2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gYmFkVHlwZUp1bXA7Ci0gICAgICAgICAgICBp
ZiAoSnVtcChwYXRjaGFibGVCYWRUeXBlSnVtcCkuaXNTZXQoKSkKLSAgICAgICAgICAgICAgICBi
YWRUeXBlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZm
ZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5iYWRU
eXBlSnVtcCkpOwotCi0gICAgICAgICAgICBhdXRvIGRvbmVUYXJnZXQgPSBDb2RlTG9jYXRpb25M
YWJlbDxKU0ludGVybmFsUHRyVGFnPihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQ
dHJUYWc+KGJ5VmFsQ29tcGlsYXRpb25JbmZvLmRvbmVUYXJnZXQpKTsKLSAgICAgICAgICAgIGF1
dG8gbmV4dEhvdFBhdGhUYXJnZXQgPSBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFn
PihwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGJ5VmFsQ29tcGlsYXRp
b25JbmZvLm5leHRIb3RQYXRoVGFyZ2V0KSk7Ci0gICAgICAgICAgICBhdXRvIHNsb3dQYXRoVGFy
Z2V0ID0gQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hCdWZmZXIubG9j
YXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihieVZhbENvbXBpbGF0aW9uSW5mby5zbG93UGF0aFRh
cmdldCkpOwotCi0gICAgICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5ieVZhbEluZm8tPnNl
dFVwKAotICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZXIsCi0gICAgICAgICAgICAgICAg
YnlWYWxDb21waWxhdGlvbkluZm8uYXJyYXlNb2RlLAotICAgICAgICAgICAgICAgIGJ5VmFsQ29t
cGlsYXRpb25JbmZvLmFycmF5UHJvZmlsZSwKLSAgICAgICAgICAgICAgICBkb25lVGFyZ2V0LAot
ICAgICAgICAgICAgICAgIG5leHRIb3RQYXRoVGFyZ2V0LAotICAgICAgICAgICAgICAgIHNsb3dQ
YXRoVGFyZ2V0KTsKLSAgICAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
QmFzZWxpbmVKSVQpKSB7Ci0gICAgICAgICAgICAgICAgYnlWYWxDb21waWxhdGlvbkluZm8uYnlW
YWxJbmZvLT5tX25vdEluZGV4SnVtcFRhcmdldCA9IHNsb3dQYXRoVGFyZ2V0LnJldGFnZ2VkPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPigpOwotICAgICAgICAgICAgICAgIGJ5VmFsQ29tcGlsYXRpb25J
bmZvLmJ5VmFsSW5mby0+bV9iYWRUeXBlSnVtcFRhcmdldCA9IHNsb3dQYXRoVGFyZ2V0LnJldGFn
Z2VkPEpJVFN0dWJSb3V0aW5lUHRyVGFnPigpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBieVZhbENvbXBpbGF0aW9uSW5mby5ieVZhbEluZm8tPm1fbm90SW5kZXhKdW1w
ID0gbm90SW5kZXhKdW1wOwotICAgICAgICAgICAgICAgIGJ5VmFsQ29tcGlsYXRpb25JbmZvLmJ5
VmFsSW5mby0+bV9iYWRUeXBlSnVtcCA9IGJhZFR5cGVKdW1wOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgfQotCiAgICAgZm9yIChhdXRvJiBjb21waWxhdGlvbkluZm8gOiBtX2NhbGxD
b21waWxhdGlvbkluZm8pIHsKICAgICAgICAgQ2FsbExpbmtJbmZvJiBpbmZvID0gKmNvbXBpbGF0
aW9uSW5mby5jYWxsTGlua0luZm87CiAgICAgICAgIGluZm8uc2V0Q29kZUxvY2F0aW9ucygKQEAg
LTEwNjAsNyArMTAyMCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRs
ZXJzKCkKICAgICAgICAganVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSgpKTsKICAgICB9CiAKLSAg
ICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkgfHwgbV9ieVZhbENvbXBpbGF0aW9uSW5m
by5zaXplKCkpIHsKKyAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpIHsKICAgICAg
ICAgbV9leGNlcHRpb25IYW5kbGVyID0gbGFiZWwoKTsKICAgICAgICAgbV9leGNlcHRpb25DaGVj
a3MubGluayh0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggNmMzNGFjNjczYTI4
MmM4OGJhMWViY2ZjNGFjZTE4NTVmYTAyMzgwMS4uZjFlY2NjZWE2NGMwNDRjZGI2Yzc0OGYwOTI3
MWIwZDU0OTJlNmQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC0zNyw3ICszNyw2IEBA
CiAKICNkZWZpbmUgQVNTRVJUX0pJVF9PRkZTRVQoYWN0dWFsLCBleHBlY3RlZCkgQVNTRVJUX1dJ
VEhfTUVTU0FHRShhY3R1YWwgPT0gZXhwZWN0ZWQsICJKSVQgT2Zmc2V0IFwiJXNcIiBzaG91bGQg
YmUgJWQsIG5vdCAlZC5cbiIsICNleHBlY3RlZCwgc3RhdGljX2Nhc3Q8aW50PihleHBlY3RlZCks
IHN0YXRpY19jYXN0PGludD4oYWN0dWFsKSk7CiAKLSNpbmNsdWRlICJCeVZhbEluZm8uaCIKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIKICNpbmNs
dWRlICJKSVREaXNhc3NlbWJsZXIuaCIKQEAgLTE0OSw0MiArMTQ4LDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIH0KICAgICB9OwogCi0gICAgc3RydWN0IEJ5VmFsQ29tcGlsYXRpb25JbmZv
IHsKLSAgICAgICAgQnlWYWxDb21waWxhdGlvbkluZm8oKSB7IH0KLSAgICAgICAgCi0gICAgICAg
IEJ5VmFsQ29tcGlsYXRpb25JbmZvKEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBCeXRlY29kZUluZGV4
IGJ5dGVjb2RlSW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIG5vdEluZGV4SnVt
cCwgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgYmFkVHlwZUp1bXAsIEpJVEFycmF5TW9k
ZSBhcnJheU1vZGUsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlLCBNYWNyb0Fzc2VtYmxlcjo6
TGFiZWwgZG9uZVRhcmdldCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG5leHRIb3RQYXRoVGFyZ2V0
KQotICAgICAgICAgICAgOiBieVZhbEluZm8oYnlWYWxJbmZvKQotICAgICAgICAgICAgLCBieXRl
Y29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpCi0gICAgICAgICAgICAsIG5vdEluZGV4SnVtcChub3RJ
bmRleEp1bXApCi0gICAgICAgICAgICAsIGJhZFR5cGVKdW1wKGJhZFR5cGVKdW1wKQotICAgICAg
ICAgICAgLCBhcnJheU1vZGUoYXJyYXlNb2RlKQotICAgICAgICAgICAgLCBhcnJheVByb2ZpbGUo
YXJyYXlQcm9maWxlKQotICAgICAgICAgICAgLCBkb25lVGFyZ2V0KGRvbmVUYXJnZXQpCi0gICAg
ICAgICAgICAsIG5leHRIb3RQYXRoVGFyZ2V0KG5leHRIb3RQYXRoVGFyZ2V0KQotICAgICAgICB7
Ci0gICAgICAgIH0KLQotICAgICAgICBCeVZhbENvbXBpbGF0aW9uSW5mbyhCeVZhbEluZm8qIGJ5
VmFsSW5mbywgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6UGF0
Y2hhYmxlSnVtcCBub3RJbmRleEp1bXAsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkb25lVGFyZ2V0
LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbmV4dEhvdFBhdGhUYXJnZXQpCi0gICAgICAgICAgICA6
IGJ5VmFsSW5mbyhieVZhbEluZm8pCi0gICAgICAgICAgICAsIGJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVJbmRleCkKLSAgICAgICAgICAgICwgbm90SW5kZXhKdW1wKG5vdEluZGV4SnVtcCkKLSAgICAg
ICAgICAgICwgZG9uZVRhcmdldChkb25lVGFyZ2V0KQotICAgICAgICAgICAgLCBuZXh0SG90UGF0
aFRhcmdldChuZXh0SG90UGF0aFRhcmdldCkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAg
ICAgQnlWYWxJbmZvKiBieVZhbEluZm87Ci0gICAgICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJ
bmRleDsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbm90SW5kZXhKdW1w
OwotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBiYWRUeXBlSnVtcDsKLSAg
ICAgICAgSklUQXJyYXlNb2RlIGFycmF5TW9kZTsKLSAgICAgICAgQXJyYXlQcm9maWxlKiBhcnJh
eVByb2ZpbGU7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkb25lVGFyZ2V0OwotICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbmV4dEhvdFBhdGhUYXJnZXQ7Ci0gICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpMYWJlbCBzbG93UGF0aFRhcmdldDsKLSAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgcmV0dXJuQWRkcmVzczsKLSAgICB9OwotCiAgICAgc3RydWN0IENhbGxDb21waWxh
dGlvbkluZm8gewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgc2xvd1BhdGhTdGFydDsK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGRvbmVMb2NhdGlvbjsKQEAgLTIyNCwxMyAr
MTg3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBK
SVQodm0sIGNvZGVCbG9jaywgYnl0ZWNvZGVPZmZzZXQpLnByaXZhdGVDb21waWxlKGVmZm9ydCk7
CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVQdXRQcml2
YXRlTmFtZVdpdGhDYWNoZWRJZChWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBCeVZhbElu
Zm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBDYWNoZWFibGVJ
ZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKLSAgICAgICAgewotICAgICAgICAgICAgSklUIGppdCh2
bSwgY29kZUJsb2NrKTsKLSAgICAgICAgICAgIGppdC5tX2J5dGVjb2RlSW5kZXggPSBieVZhbElu
Zm8tPmJ5dGVjb2RlSW5kZXg7Ci0gICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVQdXRQcml2
YXRlTmFtZVdpdGhDYWNoZWRJZChieVZhbEluZm8sIHJldHVybkFkZHJlc3MsIHByb3BlcnR5TmFt
ZSk7Ci0gICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgdW5zaWduZWQgZnJhbWVSZWdpc3RlckNv
dW50Rm9yKENvZGVCbG9jayopOwogICAgICAgICBzdGF0aWMgaW50IHN0YWNrUG9pbnRlck9mZnNl
dEZvcihDb2RlQmxvY2sqKTsKQEAgLTI0NCw4ICsyMDAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpOwogICAgICAgICB2b2lkIGxpbmso
KTsKICAgICAgICAgQ29tcGlsYXRpb25SZXN1bHQgcHJpdmF0ZUNvbXBpbGUoSklUQ29tcGlsYXRp
b25FZmZvcnQpOwotICAgICAgICAKLSAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVB1dFByaXZh
dGVOYW1lV2l0aENhY2hlZElkKEJ5VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIENhY2hlYWJs
ZUlkZW50aWZpZXIpOwogCiAgICAgICAgIC8vIEFkZCBhIGNhbGwgb3V0IGZyb20gSklUIGNvZGUs
IHdpdGhvdXQgYW4gZXhjZXB0aW9uIGNoZWNrLgogICAgICAgICBDYWxsIGFwcGVuZENhbGwoY29u
c3QgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBmdW5jdGlvbikKQEAgLTM1Myw4ICszMDcs
NiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGVtaXRBcnJheVByb2ZpbGluZ1Np
dGVXaXRoQ2VsbChSZWdpc3RlcklEIGNlbGxHUFIsIEFycmF5UHJvZmlsZSosIFJlZ2lzdGVySUQg
c2NyYXRjaEdQUik7CiAgICAgICAgIHZvaWQgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxs
KFJlZ2lzdGVySUQgY2VsbEdQUiwgUmVnaXN0ZXJJRCBhcnJheVByb2ZpbGVHUFIsIFJlZ2lzdGVy
SUQgc2NyYXRjaEdQUik7Ci0gICAgICAgIHZvaWQgZW1pdEFycmF5UHJvZmlsZVN0b3JlVG9Ib2xl
U3BlY2lhbENhc2UoQXJyYXlQcm9maWxlKik7Ci0gICAgICAgIHZvaWQgZW1pdEFycmF5UHJvZmls
ZU91dE9mQm91bmRzU3BlY2lhbENhc2UoQXJyYXlQcm9maWxlKik7CiAKICAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3A+CiAgICAgICAgIEVDTUFNb2RlIGVjbWFNb2RlKE9wKTsKQEAgLTM2Mywx
NCArMzE1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
PgogICAgICAgICBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVGaWVsZFB1dEtpbmQoT3ApOwog
Ci0gICAgICAgIC8vIElkZW50aWZpZXIgY2hlY2sgaGVscGVyIGZvciBHZXRCeVZhbCBhbmQgUHV0
QnlWYWwuCi0gICAgICAgIHZvaWQgZW1pdEJ5VmFsSWRlbnRpZmllckNoZWNrKFJlZ2lzdGVySUQg
Y2VsbCwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKdW1wTGlzdCYg
c2xvd0Nhc2VzKTsKLQotICAgICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGVtaXRQdXRQcml2YXRl
TmFtZVdpdGhDYWNoZWRJZChPcFB1dFByaXZhdGVOYW1lLCBDYWNoZWFibGVJZGVudGlmaWVyLCBK
dW1wTGlzdCYgZG9uZUNhc2VzLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsKLQotICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcD4KLSAgICAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBlbWl0UHV0QnlW
YWxXaXRoQ2FjaGVkSWQoT3AsIFB1dEtpbmQsIENhY2hlYWJsZUlkZW50aWZpZXIsIEp1bXBMaXN0
JiBkb25lQ2FzZXMsIEp1bXBMaXN0JiBzbG93Q2FzZXMpOwotCiAgICAgICAgIGVudW0gRmluYWxP
YmplY3RNb2RlIHsgTWF5QmVGaW5hbCwgS25vd25Ob3RGaW5hbCB9OwogCiAgICAgICAgIHZvaWQg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIgc3JjLCBKU1ZhbHVlUmVncyBk
c3QpOwpAQCAtMTAxMiw3ICs5NTYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9y
PEpJVERlbEJ5VmFsR2VuZXJhdG9yPiBtX2RlbEJ5VmFsczsKICAgICAgICAgVmVjdG9yPEpJVElu
c3RhbmNlT2ZHZW5lcmF0b3I+IG1faW5zdGFuY2VPZnM7CiAgICAgICAgIFZlY3RvcjxKSVRQcml2
YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I+IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXM7Ci0gICAgICAg
IFZlY3RvcjxCeVZhbENvbXBpbGF0aW9uSW5mbz4gbV9ieVZhbENvbXBpbGF0aW9uSW5mbzsKICAg
ICAgICAgVmVjdG9yPENhbGxDb21waWxhdGlvbkluZm8+IG1fY2FsbENvbXBpbGF0aW9uSW5mbzsK
ICAgICAgICAgVmVjdG9yPEp1bXBUYWJsZT4gbV9qbXBUYWJsZTsKIApAQCAtMTA0MCw3ICs5ODMs
NiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgbV9kZWxCeUlkSW5kZXggeyBV
SU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2luc3RhbmNlT2ZJbmRleCB7IFVJTlRfTUFY
IH07CiAgICAgICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXggeyBVSU5UX01B
WCB9OwotICAgICAgICB1bnNpZ25lZCBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCB7IFVJTlRfTUFY
IH07CiAgICAgICAgIHVuc2lnbmVkIG1fY2FsbExpbmtJbmZvSW5kZXggeyBVSU5UX01BWCB9Owog
ICAgICAgICB1bnNpZ25lZCBtX2J5dGVjb2RlQ291bnRIYXZpbmdTbG93Q2FzZSB7IDAgfTsKICAg
ICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IDY3ZTBiNzgz
MDlhNDNmMmJiYjk5YTkxYjM2ODliOTI3YjI2MmRiNjUuLmFjMDlmOGZjZjc1YjM1YmFjMmVkYmE2
NzA3ZGYyNTg3NjdiNmU2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5o
CkBAIC0zNjAsMTYgKzM2MCw2IEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdEFycmF5UHJvZmlsaW5n
U2l0ZVdpdGhDZWxsKFJlZ2lzdGVySUQgY2VsbEdQUiwgUmVnaXN0ZXJJRCBhCiAgICAgfQogfQog
Ci1pbmxpbmUgdm9pZCBKSVQ6OmVtaXRBcnJheVByb2ZpbGVTdG9yZVRvSG9sZVNwZWNpYWxDYXNl
KEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKQotewotICAgIHN0b3JlOChUcnVzdGVkSW1tMzIo
MSksIGFycmF5UHJvZmlsZS0+YWRkcmVzc09mTWF5U3RvcmVUb0hvbGUoKSk7Ci19Ci0KLWlubGlu
ZSB2b2lkIEpJVDo6ZW1pdEFycmF5UHJvZmlsZU91dE9mQm91bmRzU3BlY2lhbENhc2UoQXJyYXlQ
cm9maWxlKiBhcnJheVByb2ZpbGUpCi17Ci0gICAgc3RvcmU4KFRydXN0ZWRJbW0zMigxKSwgYXJy
YXlQcm9maWxlLT5hZGRyZXNzT2ZPdXRPZkJvdW5kcygpKTsKLX0KLQogQUxXQVlTX0lOTElORSBp
bnQzMl90IEpJVDo6Z2V0T3BlcmFuZENvbnN0YW50SW50KFZpcnR1YWxSZWdpc3RlciBzcmMpCiB7
CiAgICAgcmV0dXJuIGdldENvbnN0YW50T3BlcmFuZChzcmMpLmFzSW50MzIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDdmZDA0NjMyODFlMzVk
ZmU1NWZhZTIwNjEwMGExNWRhOTcxOWEyOTguLjFlNWFjZDQ4Mzg4Yjg3MGM3MGUyMGQzNWVkNWQz
ZTk5OWE0Yjg1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcApAQCAtMTMxNSwxMTIgKzEzMTUsMTIwIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZEdlbmVyaWMsIHZvaWQsIChKU0dsb2JhbE9iamVjCiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIH0KIAotSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUsIHZvaWQsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBQcml2YXRlRmllbGRQdXRLaW5kIHB1dEtpbmQp
KQordGVtcGxhdGU8Ym9vbCBkZWZpbmU+CitzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHB1dFBy
aXZhdGVOYW1lT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCwgSlNWYWx1
ZSB2YWx1ZSwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FM
TF9GUkFNRSh2bSk7Ci0gICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2so
KTsKLQotICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNl
VmFsdWUpOwotICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRT
dWJzY3JpcHQpOwotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKLQogICAgIGF1dG8gYmFzZU9iamVjdCA9IGJhc2VWYWx1ZS50b09iamVjdChnbG9iYWxP
YmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAKICAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7
CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOwogCi0gICAgT3B0aW1p
emF0aW9uUmVzdWx0IG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6Tm90
T3B0aW1pemVkOworICAgIC8vIFByaXZhdGUgZmllbGRzIGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHdp
dGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgLy8gYW5kIGNsYXNzIG1ldGhvZHMgYXJlIGFs
d2F5cyBpbiBzdHJpY3QgbW9kZQorICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19j
YXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKKyAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IENvbW1vblNsb3dQYXRoczo6b3JpZ2luYWxTdHJ1Y3R1cmVCZWZvcmVQdXQodm0s
IGJhc2VWYWx1ZSk7CisgICAgY29uc3RleHByIGJvb2wgaXNTdHJpY3RNb2RlID0gdHJ1ZTsKKyAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOworICAgIGlm
IGNvbnN0ZXhwciAoZGVmaW5lKQorICAgICAgICBiYXNlT2JqZWN0LT5kZWZpbmVQcml2YXRlRmll
bGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICBlbHNlCisg
ICAgICAgIGJhc2VPYmplY3QtPnNldFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CisKKyAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHVi
SW5mby0+YWNjZXNzVHlwZSkpCisgICAgICAgIHJldHVybjsKIAogICAgIGlmIChiYXNlVmFsdWUu
aXNPYmplY3QoKSAmJiBDYWNoZWFibGVJZGVudGlmaWVyOjppc0NhY2hlYWJsZUlkZW50aWZpZXJD
ZWxsKHN1YnNjcmlwdCkpIHsKLSAgICAgICAgQVNTRVJUKHN1YnNjcmlwdC5pc1N5bWJvbCgpKTsK
LSAgICAgICAgQVNTRVJUKGNhbGxGcmFtZS0+Ynl0ZWNvZGVJbmRleCgpICE9IEJ5dGVjb2RlSW5k
ZXgoMCkpOwotICAgICAgICBBU1NFUlQoIWJ5VmFsSW5mby0+c3R1YlJvdXRpbmUpOwotICAgICAg
ICBpZiAoYnlWYWxJbmZvLT5zZWVuKSB7Ci0gICAgICAgICAgICBpZiAoYnlWYWxJbmZvLT5jYWNo
ZWRJZC51aWQoKSA9PSBwcm9wZXJ0eU5hbWUpIHsKLSAgICAgICAgICAgICAgICBKSVQ6OmNvbXBp
bGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZCh2bSwgY29kZUJsb2NrLCBieVZhbEluZm8sIFJl
dHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgYnlWYWxJbmZvLT5jYWNoZWRJZCk7
Ci0gICAgICAgICAgICAgICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0
OjpPcHRpbWl6ZWQ7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIFNl
ZW0gbGlrZSBhIGdlbmVyaWMgcHJvcGVydHkgYWNjZXNzIHNpdGUuCi0gICAgICAgICAgICAgICAg
b3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXA7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAg
ICAgICAgYnlWYWxJbmZvLT5zZWVuID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBieVZhbEluZm8t
PmNhY2hlZElkID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUNlbGwoc3Vic2NyaXB0
LmFzQ2VsbCgpKTsKLSAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6
YXRpb25SZXN1bHQ6OlNlZW5PbmNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdm0uaGVh
cC53cml0ZUJhcnJpZXIoY29kZUJsb2NrLCBzdWJzY3JpcHQuYXNDZWxsKCkpOwotICAgICAgICB9
CisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50
aWZpZXI6OmNyZWF0ZUZyb21DZWxsKHN1YnNjcmlwdC5hc0NlbGwoKSk7CisgICAgICAgIGlmIChz
dHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9jaywgc3RydWN0dXJlLCBpZGVu
dGlmaWVyKSkKKyAgICAgICAgICAgIHJlcGF0Y2hQdXRCeShnbG9iYWxPYmplY3QsIGNvZGVCbG9j
aywgYmFzZVZhbHVlLCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIsIHNsb3QsICpzdHViSW5mbywgUHV0
QnlLaW5kOjpCeVZhbCwgZGVmaW5lID8gUHV0S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5l
IDogUHV0S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkU2V0KTsKICAgICB9Cit9CiAKLSAgICBpZiAo
b3B0aW1pemF0aW9uUmVzdWx0ICE9IE9wdGltaXphdGlvblJlc3VsdDo6T3B0aW1pemVkICYmIG9w
dGltaXphdGlvblJlc3VsdCAhPSBPcHRpbWl6YXRpb25SZXN1bHQ6OlNlZW5PbmNlKSB7Ci0gICAg
ICAgIC8vIElmIHdlIHRha2Ugc2xvdyBwYXRoIG1vcmUgdGhhbiAxMCB0aW1lcyB3aXRob3V0IHBh
dGNoaW5nIHRoZW4gbWFrZSBzdXJlIHdlCi0gICAgICAgIC8vIG5ldmVyIG1ha2UgdGhhdCBtaXN0
YWtlIGFnYWluLiBUaGlzIGdpdmVzIDEwIGl0ZXJhdGlvbnMgd29ydGggb2Ygb3Bwb3J0dW5pdHkK
LSAgICAgICAgLy8gZm9yIHVzIHRvIG9ic2VydmUgdGhhdCB0aGUgcHV0X3ByaXZhdGVfbmFtZSBt
YXkgYmUgcG9seW1vcnBoaWMuCi0gICAgICAgIC8vIFdlIGNvdW50IHVwIHNsb3dQYXRoQ291bnQg
ZXZlbiBpZiB0aGUgcmVzdWx0IGlzIEdpdmVVcC4KLSAgICAgICAgaWYgKCsrYnlWYWxJbmZvLT5z
bG93UGF0aENvdW50ID49IDEwKQotICAgICAgICAgICAgb3B0aW1pemF0aW9uUmVzdWx0ID0gT3B0
aW1pemF0aW9uUmVzdWx0OjpHaXZlVXA7Ci0gICAgfQordGVtcGxhdGU8Ym9vbCBkZWZpbmU+Citz
dGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHB1dFByaXZhdGVOYW1lKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCwgSlNWYWx1
ZSB2YWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgaWYgKG9wdGltaXphdGlvblJl
c3VsdCA9PSBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcCkgewotICAgICAgICAvLyBEb24ndCBl
dmVyIHRyeSB0byBvcHRpbWl6ZS4KLSAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0
cnVlOwotICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VEYXRhSUMoKSkKLSAgICAgICAgICAgIGJ5
VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmlj
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3Mo
UmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBvcGVyYXRpb25QdXRQcml2YXRl
TmFtZUdlbmVyaWMpOwotICAgIH0KKyAgICBhdXRvIGJhc2VPYmplY3QgPSBiYXNlVmFsdWUudG9P
YmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOworCisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShn
bG9iYWxPYmplY3QpOworICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsK
IAogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAKKwogICAgIC8vIFByaXZhdGUgZmllbGRzIGNh
biBvbmx5IGJlIGFjY2Vzc2VkIHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCiAgICAgLy8gYW5k
IGNsYXNzIG1ldGhvZHMgYXJlIGFsd2F5cyBpbiBzdHJpY3QgbW9kZQotICAgIGNvbnN0IGJvb2wg
aXNTdHJpY3RNb2RlID0gdHJ1ZTsKKyAgICBjb25zdGV4cHIgYm9vbCBpc1N0cmljdE1vZGUgPSB0
cnVlOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7
Ci0gICAgaWYgKHB1dEtpbmQuaXNEZWZpbmUoKSkKKyAgICBpZiBjb25zdGV4cHIgKGRlZmluZSkK
ICAgICAgICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgZWxzZQogICAgICAgICBiYXNlT2JqZWN0LT5z
ZXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsK
IH0KIAotLy8gV2UgbmVlZCB0byBtYXRjaCB0aGUgc2lnbmF0dXJlIG9mIG9wZXJhdGlvblB1dFBy
aXZhdGVOYW1lT3B0aW1pemUKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRQ
cml2YXRlTmFtZUdlbmVyaWMsIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vi
c2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZv
LCBQcml2YXRlRmllbGRQdXRLaW5kIHByaXZhdGVGaWVsZFB1dEtpbmQpKQorSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFsRGVmaW5lUHJpdmF0ZUZpZWxkT3B0aW1pemUs
IHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgQXJyYXlQcm9m
aWxlKikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOworICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBwdXRQcml2YXRlTmFtZU9wdGltaXpl
PHRydWU+KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgdmFs
dWUsIHN0dWJJbmZvKTsKK30KIAorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1
dEJ5VmFsU2V0UHJpdmF0ZUZpZWxkT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgQXJyYXlQcm9maWxlKikpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CisKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZEJhc2VWYWx1ZSk7CiAgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFN1YnNjcmlwdCk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOworICAgIHB1dFByaXZhdGVOYW1lT3B0aW1pemU8ZmFsc2U+KGdsb2Jh
bE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgdmFsdWUsIHN0dWJJbmZv
KTsKK30KIAotICAgIGF1dG8gYmFzZU9iamVjdCA9IGJhc2VWYWx1ZS50b09iamVjdChnbG9iYWxP
YmplY3QpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CitKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmllbGRHZW5l
cmljLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEFycmF5
UHJvZmlsZSopKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3Qp
OwotICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKKyAgICBKU1ZhbHVl
IGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKKyAgICBKU1Zh
bHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKKyAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAKLSAgICBzY29w
ZS5yZWxlYXNlKCk7CisgICAgaWYgKHN0dWJJbmZvKQorICAgICAgICBzdHViSW5mby0+dG9va1Ns
b3dQYXRoID0gdHJ1ZTsKIAotICAgIC8vIFByaXZhdGUgZmllbGRzIGNhbiBvbmx5IGJlIGFjY2Vz
c2VkIHdpdGhpbiBjbGFzcyBsZXhpY2FsIHNjb3BlCi0gICAgLy8gYW5kIGNsYXNzIG1ldGhvZHMg
YXJlIGFsd2F5cyBpbiBzdHJpY3QgbW9kZQotICAgIGNvbnN0IGJvb2wgaXNTdHJpY3RNb2RlID0g
dHJ1ZTsKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUp
OwotICAgIGlmIChwcml2YXRlRmllbGRQdXRLaW5kLmlzRGVmaW5lKCkpCi0gICAgICAgIGJhc2VP
YmplY3QtPmRlZmluZVByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNsb3QpOwotICAgIGVsc2UKLSAgICAgICAgYmFzZU9iamVjdC0+c2V0UHJpdmF0ZUZpZWxk
KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgcHV0UHJpdmF0
ZU5hbWU8dHJ1ZT4oZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgdmFsdWUpOwor
fQorCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxTZXRQcml2YXRl
RmllbGRHZW5lcmljLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlw
dCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1Yklu
Zm8sIEFycmF5UHJvZmlsZSopKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAg
SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VW
YWx1ZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1
YnNjcmlwdCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOworCisgICAgaWYgKHN0dWJJbmZvKQorICAgICAgICBzdHViSW5mby0+dG9va1Nsb3dQYXRo
ID0gdHJ1ZTsKIAotICAgIGlmIChieVZhbEluZm8pCi0gICAgICAgIGJ5VmFsSW5mby0+dG9va1Ns
b3dQYXRoID0gdHJ1ZTsKKyAgICBwdXRQcml2YXRlTmFtZTxmYWxzZT4oZ2xvYmFsT2JqZWN0LCBi
YXNlVmFsdWUsIHN1YnNjcmlwdCwgdmFsdWUpOwogfQogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uQ2FsbEV2YWwsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgRUNNQU1vZGUgZWNtYU1vZGUpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCBlZmJkODg3MzU0
MmZjM2Y0YmU4M2UwNmJlMDYyNTdiZmMyOWNjNDYyLi5mNzA0NDA1ZWRhZWQ3YTA2MTg0ZTk4Nzgy
NzA0MmM4NWQwZjc3MTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaApAQCAtNjQsNyArNjQsNiBAQCBjbGFzcyBTeW1ib2xUYWJsZTsKIGNsYXNzIFZNOwogY2xh
c3MgV2F0Y2hwb2ludFNldDsKIAotc3RydWN0IEJ5VmFsSW5mbzsKIHN0cnVjdCBFQ01BTW9kZTsK
IHN0cnVjdCBJbmxpbmVDYWxsRnJhbWU7CiBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CkBAIC04MCw3ICs3
OSw2IEBAIHR5cGVkZWYgY2hhciogVW51c2VkUHRyOwogICAgIEFwOiBBcnJheVByb2ZpbGUqCiAg
ICAgQXJwOiBCaW5hcnlBcml0aFByb2ZpbGUqCiAgICAgQjogQnV0dGVyZmx5KgotICAgIEJ5OiBC
eVZhbEluZm8qCiAgICAgQzogSlNDZWxsKgogICAgIENiOiBDb2RlQmxvY2sqCiAgICAgQ2xpOiBD
YWxsTGlua0luZm8qCkBAIC0yMDEsOSArMTk5LDYgQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplLCB2b2lkLCAoSlNHbG9iYWxPYmoK
IEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kR2VuZXJp
Yywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uQ2hlY2tQcml2YXRlQnJhbmRHZW5lcmljLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkpOwogCi1KU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUsIHZv
aWQsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIFByaXZhdGVGaWVsZFB1dEtpbmQpKTsKLUpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljLCB2b2lkLCAo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlLCBCeVZhbEluZm8qLCBQcml2YXRlRmllbGRQdXRLaW5kKSk7Ci0KIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3RPcHRpbWl6ZSwgdm9pZCwg
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgU3RydWN0dXJlU3R1YkluZm8qLCBBcnJheVByb2ZpbGUqKSk7CiBKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0T3B0aW1pemUsIHZvaWQsIChK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIFN0cnVjdHVyZVN0dWJJbmZvKiwgQXJyYXlQcm9maWxlKikpOwogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE5vblN0cmljdE9wdGltaXplLCB2
b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEFycmF5UHJvZmlsZSopKTsKQEAgLTIx
Miw2ICsyMDcsMTAgQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZh
bE5vblN0cmljdEdlbmVyaWMsIHZvaWQsIChKU0dsb2JhbE9iamUKIEpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxTdHJpY3RHZW5lcmljLCB2b2lkLCAoSlNHbG9iYWxP
YmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEFycmF5UHJvZmlsZSopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxTdHJpY3RHZW5lcmljLCB2b2lkLCAoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEFycmF5UHJvZmlsZSopKTsKIEpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxOb25TdHJpY3RHZW5lcmljLCB2b2lkLCAo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEFycmF5UHJvZmlsZSopKTsKK0pTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmllbGRPcHRpbWl6
ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSwgU3RydWN0dXJlU3R1YkluZm8qLCBBcnJheVByb2ZpbGUqKSk7CitK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFsRGVmaW5lUHJpdmF0ZUZp
ZWxkR2VuZXJpYywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgU3RydWN0dXJlU3R1YkluZm8qLCBBcnJheVByb2Zp
bGUqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5VmFsU2V0UHJp
dmF0ZUZpZWxkT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFN0cnVjdHVyZVN0dWJJbmZvKiwgQXJy
YXlQcm9maWxlKikpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeVZh
bFNldFByaXZhdGVGaWVsZEdlbmVyaWMsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
U1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFN0cnVjdHVyZVN0dWJJbmZv
KiwgQXJyYXlQcm9maWxlKikpOwogCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bkNhbGxFdmFsLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwg
RUNNQU1vZGUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTGlua0NhbGws
IFNsb3dQYXRoUmV0dXJuVHlwZSwgKENhbGxGcmFtZSosIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbExp
bmtJbmZvKikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcAppbmRleCA3OTQwMjFkYWQzZTQ2ZTk2ZjcxZGZkMTgwNjcxOWQzNWU5NmQ1ZDM5Li5m
OGE2ZGQ3ZGM5ODNiM2ZjNGFlYzM4NDQyMWI3NDFhNzcwMTVlOTAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtNDY3LDQ5ICs0Njcs
NiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdFdyaXRlQmFycmllcihiYXNlLCBTaG91bGRGaWx0ZXJC
YXNlKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci1KSVRQdXRCeUlkR2VuZXJhdG9yIEpJ
VDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQs
IENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKdW1wTGlzdCYgZG9uZUNhc2VzLCBK
dW1wTGlzdCYgc2xvd0Nhc2VzKQotewotICAgIC8vIGJhc2U6IHJlZ1QwCi0gICAgLy8gcHJvcGVy
dHk6IHJlZ1QxCi0gICAgLy8gc2NyYXRjaDogcmVnVDIKLQotICAgIFZpcnR1YWxSZWdpc3RlciBi
YXNlID0gYnl0ZWNvZGUubV9iYXNlOwotICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVj
b2RlLm1fdmFsdWU7Ci0KLSAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaElmTm90Q2VsbChyZWdU
MSkpOwotICAgIGVtaXRCeVZhbElkZW50aWZpZXJDaGVjayhyZWdUMSwgcmVnVDEsIHByb3BlcnR5
TmFtZSwgc2xvd0Nhc2VzKTsKLQotICAgIC8vIFdyaXRlIGJhcnJpZXIgYnJlYWtzIHRoZSByZWdp
c3RlcnMuIFNvIGFmdGVyIGlzc3VpbmcgdGhlIHdyaXRlIGJhcnJpZXIsCi0gICAgLy8gcmVsb2Fk
IHRoZSByZWdpc3RlcnMuCi0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMoYmFzZSwgcmVnVDAs
IHZhbHVlLCByZWdUMSk7Ci0KLSAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAg
bV9jb2RlQmxvY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklULCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJV
bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFsdWVSZWdz
KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMywgcmVnVDIsIGVjbWFNb2RlKGJ5dGVj
b2RlKSwgcHV0S2luZCk7Ci0gICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAgIC8v
IElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQgd3JpdGUtYmFycmllciBpZiBhIGJh
c2UgaXMgY2VsbC4KLSAgICAvLyBGSVhNRTogVXNlIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIg
aW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNvZGUgc2l6ZS4KLSAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5Mzk1Ci0gICAgZW1pdFdyaXRl
QmFycmllcihiYXNlLCBTaG91bGRGaWx0ZXJCYXNlKTsKLSAgICBkb25lQ2FzZXMuYXBwZW5kKGp1
bXAoKSk7Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLSAgICBnZW4uc2xv
d1BhdGhKdW1wKCkubGluayh0aGlzKTsKLQotICAgIENhbGwgY2FsbDsKLSAgICBpZiAoSklUQ29k
ZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklUKSkgewotICAgICAgICBnZW4uc3R1Yklu
Zm8oKS0+bV9zbG93T3BlcmF0aW9uID0gZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKTsKLSAgICAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7
Ci0gICAgICAgIGNhbGxPcGVyYXRpb248ZGVjbHR5cGUoZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSk+
KEFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCkpLCBHUFJJbmZvOjpub25BcmdHUFIwLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5TmFtZS5yYXdC
aXRzKCkpOwotICAgIH0gZWxzZQotICAgICAgICBjYWxsID0gY2FsbE9wZXJhdGlvbihnZW4uc2xv
d1BhdGhGdW5jdGlvbigpLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KSksIGdlbi5zdHViSW5mbygpLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5TmFtZS5yYXdCaXRzKCkp
OwotICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7Ci0gICAg
ZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwotCi0gICAgcmV0dXJuIGdlbjsKLX0KLQogdm9pZCBK
SVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBi
b29sIGlzRGlyZWN0ID0gY3VycmVudEluc3RydWN0aW9uLT5vcGNvZGVJRCgpID09IG9wX3B1dF9i
eV92YWxfZGlyZWN0OwpAQCAtNjExLDc2ICs1NjgsNzIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0
X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+
KCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKLSAgICBCeVZhbElu
Zm8qIGJ5VmFsSW5mbyA9IG1fY29kZUJsb2NrLT5hZGRCeVZhbEluZm8obV9ieXRlY29kZUluZGV4
KTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwogCiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFs
dWUsIHJlZ1QyKTsKIAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFz
ZSk7CiAKLSAgICBQYXRjaGFibGVKdW1wIGZhc3RQYXRoSm1wOwotICAgIGlmIChKSVRDb2RlOjp1
c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQpKQotICAgICAgICBmYXJKdW1wKEFic29sdXRl
QWRkcmVzcygmYnlWYWxJbmZvLT5tX25vdEluZGV4SnVtcFRhcmdldCksIEpJVFN0dWJSb3V0aW5l
UHRyVGFnKTsKLSAgICBlbHNlIHsKLSAgICAgICAgZmFzdFBhdGhKbXAgPSBwYXRjaGFibGVKdW1w
KCk7Ci0gICAgICAgIGFkZFNsb3dDYXNlKGZhc3RQYXRoSm1wKTsKLSAgICB9Ci0gICAgCi0gICAg
TGFiZWwgZG9uZSA9IGxhYmVsKCk7Ci0gICAgCi0gICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mby5h
cHBlbmQoQnlWYWxDb21waWxhdGlvbkluZm8oYnlWYWxJbmZvLCBtX2J5dGVjb2RlSW5kZXgsIGZh
c3RQYXRoSm1wLCBkb25lLCBkb25lKSk7CisgICAgSklUUHV0QnlWYWxHZW5lcmF0b3IgZ2VuKAor
ICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQsIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBBY2Nlc3NUeXBl
OjpQdXRCeVZhbCwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAg
ICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3Mo
cmVnVDIpLCBJbnZhbGlkR1BSUmVnLCByZWdUNCk7CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
KnRoaXMpOworICAgIGlmICghSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkJhc2VsaW5lSklU
KSkKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBlbHNlCisg
ICAgICAgIGFkZFNsb3dDYXNlKCk7CisgICAgbV9wdXRCeVZhbHMuYXBwZW5kKGdlbik7CisKKyAg
ICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0IHdyaXRlLWJhcnJpZXIgaWYg
YSBiYXNlIGlzIGNlbGwuCisgICAgLy8gRklYTUU6IFVzZSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJy
aWVyIGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNpemUuCisgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM5NQorICAgIGVtaXRX
cml0ZUJhcnJpZXIoYmFzZSwgU2hvdWxkRmlsdGVyQmFzZSk7CiB9CiAKIHZvaWQgSklUOjplbWl0
U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsK
LSAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1fYnlWYWxDb21waWxhdGlvbkluZm9bbV9ieVZh
bEluc3RydWN0aW9uSW5kZXhdLmJ5VmFsSW5mbzsKICAgICBQcml2YXRlRmllbGRQdXRLaW5kIHB1
dEtpbmQgPSBieXRlY29kZS5tX3B1dEtpbmQ7CiAKKyAgICBKSVRQdXRCeVZhbEdlbmVyYXRvciYg
Z2VuID0gbV9wdXRCeVZhbHNbbV9wdXRCeVZhbEluZGV4KytdOworCiAgICAgbGlua0FsbFNsb3dD
YXNlcyhpdGVyKTsKLSAgICBMYWJlbCBzbG93UGF0aCA9IGxhYmVsKCk7CiAKKyAgICBMYWJlbCBj
b2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKworICAgIGF1dG8gb3BlcmF0aW9uID0gcHV0S2luZC5p
c0RlZmluZSgpID8gb3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmllbGRPcHRpbWl6ZSA6
IG9wZXJhdGlvblB1dEJ5VmFsU2V0UHJpdmF0ZUZpZWxkT3B0aW1pemU7CiAjaWYgIUVOQUJMRShF
WFRSQV9DVElfVEhVTktTKQorICAgIC8vIFRoZXkgYXJlIGNvbmZpZ3VyZWQgaW4gdGhlIGZhc3Qg
cGF0aCBhbmQgbm90IGNsb2JiZXJlZC4KICAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBy
ZWdUMDsKICAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gcmVnVDE7CiAgICAgY29u
c3RleHByIEdQUlJlZyB2YWx1ZUdQUiA9IHJlZ1QyOwotCi0gICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihieXRlY29kZS5tX2Jhc2UsIGJhc2VHUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSwgcHJvcGVydHlHUFIpOwotICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoYnl0ZWNvZGUubV92YWx1ZSwgdmFsdWVHUFIpOwotICAgIENhbGwgY2FsbCA9IGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgVHJ1c3RlZEltbVB0
cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFs
dWVHUFIsIGJ5VmFsSW5mbywgVHJ1c3RlZEltbTMyKHB1dEtpbmQudmFsdWUoKSkpOworICAgIENh
bGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCBUcnVzdGVkSW1tUHRyKG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSksIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUiwgZ2Vu
LnN0dWJJbmZvKCksIFRydXN0ZWRJbW1QdHIobnVsbHB0cikpOwogI2Vsc2UKICAgICBWTSYgdm0g
PSB0aGlzLT52bSgpOwogICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUlu
ZGV4Lm9mZnNldCgpOwogICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9
PSBtX2J5dGVjb2RlSW5kZXgpOwogCi0gICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNl
dEdQUiA9IGFyZ3VtZW50R1BSMDsKLSAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNl
dCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKKyAgICAvLyBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIg
PSByZWdUMDsKKyAgICAvLyBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gcmVnVDE7Cisg
ICAgLy8gY29uc3RleHByIEdQUlJlZyB2YWx1ZUdQUiA9IHJlZ1QyOworICAgIGNvbnN0ZXhwciBH
UFJSZWcgc3R1YkluZm9HUFIgPSByZWdUMzsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2Rl
T2Zmc2V0R1BSID0gcmVnVDQ7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VHUFIgPSBhcmd1
bWVudEdQUjE7Ci0gICAgY29uc3RleHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IGFyZ3VtZW50R1BS
MjsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHZhbHVlR1BSID0gYXJndW1lbnRHUFIzOwotICAgIGNv
bnN0ZXhwciBHUFJSZWcgYnlWYWxJbmZvR1BSID0gYXJndW1lbnRHUFI0OwotICAgIGNvbnN0ZXhw
ciBHUFJSZWcgcHV0S2luZEdQUiA9IGFyZ3VtZW50R1BSNTsKLQotICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoYnl0ZWNvZGUubV9iYXNlLCBiYXNlR1BSKTsKLSAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJ5dGVjb2RlLm1fcHJvcGVydHksIHByb3BlcnR5R1BSKTsKLSAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIHZhbHVlR1BSKTsKLSAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoYnlWYWxJbmZvKSwgYnlWYWxJbmZvR1BSKTsKLSAgICBtb3ZlKFRydXN0ZWRJbW0z
MihwdXRLaW5kLnZhbHVlKCkpLCBwdXRLaW5kR1BSKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW0zMihi
eXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zmc2V0R1BSKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1Q
dHIoZ2VuLnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CiAgICAgZW1pdE5ha2VkTmVhckNhbGwo
dm0uZ2V0Q1RJU3R1YihzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0
b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKICAgICBDYWxsIGNhbGw7CiAgICAgaWYg
KEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGJ5VmFs
SW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZTsK
KyAgICAgICAgZ2VuLnN0dWJJbmZvKCktPm1fc2xvd09wZXJhdGlvbiA9IG9wZXJhdGlvbjsKICAg
ICBlbHNlCi0gICAgICAgIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvblB1dFByaXZhdGVOYW1l
T3B0aW1pemUpOworICAgICAgICBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIGVt
aXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCiAKLSAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlWYWxJbnN0cnVjdGlvbkluZGV4
XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOwotICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm9b
bV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJlc3MgPSBjYWxsOwotICAgIG1fYnlW
YWxJbnN0cnVjdGlvbkluZGV4Kys7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0
aEJlZ2luLCBjYWxsKTsKIH0KIAogI2lmIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtNjk1
LDI0ICs2NDgsMjQgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6
OnNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEcKICAgICBpZiAoIUpJVENvZGU6
OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCiAgICAgICAgIGppdC50YWdSZXR1cm5B
ZGRyZXNzKCk7CiAKLSAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJn
dW1lbnRHUFIwOworICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOworICAgIGNv
bnN0ZXhwciBHUFJSZWcgcHJvcGVydHlHUFIgPSByZWdUMTsKKyAgICBjb25zdGV4cHIgR1BSUmVn
IHZhbHVlR1BSID0gcmVnVDI7CisgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IHJl
Z1QzOworICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSByZWdUNDsKKwog
ICAgIGppdC5zdG9yZTMyKGJ5dGVjb2RlT2Zmc2V0R1BSLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKIAotICAgIGNvbnN0ZXhwciBHUFJSZWcgZ2xv
YmFsT2JqZWN0R1BSID0gYXJndW1lbnRHUFIwOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQ
UiA9IGFyZ3VtZW50R1BSMTsKLSAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gYXJn
dW1lbnRHUFIyOwotICAgIGNvbnN0ZXhwciBHUFJSZWcgdmFsdWVHUFIgPSBhcmd1bWVudEdQUjM7
Ci0gICAgY29uc3RleHByIEdQUlJlZyBieVZhbEluZm9HUFIgPSBhcmd1bWVudEdQUjQ7Ci0gICAg
Y29uc3RleHByIEdQUlJlZyBwdXRLaW5kR1BSID0gYXJndW1lbnRHUFI1OworICAgIGNvbnN0ZXhw
ciBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gcmVnVDQ7CiAKICAgICBqaXQubG9hZFB0cihhZGRy
ZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CiAgICAg
aml0LmxvYWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZH
bG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7CiAKLSAgICBqaXQuc2V0dXBBcmd1bWVu
dHM8ZGVjbHR5cGUob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSk+KGdsb2JhbE9iamVj
dEdQUiwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSLCBieVZhbEluZm9HUFIsIHB1dEtp
bmRHUFIpOworICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25QdXRCeVZh
bERlZmluZVByaXZhdGVGaWVsZE9wdGltaXplKT4oZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBw
cm9wZXJ0eUdQUiwgdmFsdWVHUFIsIHN0dWJJbmZvR1BSLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIp
KTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogCiAgICAgaWYgKEpJVENvZGU6
OnVzZURhdGFJQyhKSVRUeXBlOjpCYXNlbGluZUpJVCkpCi0gICAgICAgIGppdC5mYXJKdW1wKEFk
ZHJlc3MoYXJndW1lbnRHUFI0LCBCeVZhbEluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwg
T3BlcmF0aW9uUHRyVGFnKTsKKyAgICAgICAgaml0LmZhckp1bXAoQWRkcmVzcyhhcmd1bWVudEdQ
UjQsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIE9wZXJhdGlv
blB0clRhZyk7CiAgICAgZWxzZQogICAgICAgICBqaXQucmV0KCk7CiAKQEAgLTMwNjAsNjIgKzMw
MTMsOCBAQCB2b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcihKU0NlbGwqIG93bmVyLCBWaXJ0dWFs
UmVnaXN0ZXIgdmFsdWUsIFdyaXRlQmFycmllck1vZAogICAgICAgICB2YWx1ZU5vdENlbGwubGlu
ayh0aGlzKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIE9wPgotSklUUHV0QnlJZEdlbmVyYXRv
ciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRL
aW5kLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgSnVtcExpc3QmIGRvbmVDYXNl
cywgSnVtcExpc3QmIHNsb3dDYXNlcykKLXsKLSAgICAvLyBiYXNlOiB0YWcocmVnVDEpLCBwYXls
b2FkKHJlZ1QwKQotICAgIC8vIHByb3BlcnR5OiB0YWcocmVnVDMpLCBwYXlsb2FkKHJlZ1QyKQot
Ci0gICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7Ci0gICAgVmlydHVh
bFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKLQotICAgIHNsb3dDYXNlcy5hcHBl
bmQoYnJhbmNoSWZOb3RDZWxsKHJlZ1QzKSk7Ci0gICAgZW1pdEJ5VmFsSWRlbnRpZmllckNoZWNr
KHJlZ1QyLCByZWdUMiwgcHJvcGVydHlOYW1lLCBzbG93Q2FzZXMpOwotCi0gICAgLy8gV3JpdGUg
YmFycmllciBicmVha3MgdGhlIHJlZ2lzdGVycy4gU28gYWZ0ZXIgaXNzdWluZyB0aGUgd3JpdGUg
YmFycmllciwKLSAgICAvLyByZWxvYWQgdGhlIHJlZ2lzdGVycy4KLSAgICAvLwotICAgIC8vIElD
IGNhbiB3cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQgd3JpdGUtYmFycmllciBpZiBhIGJhc2Ug
aXMgY2VsbC4KLSAgICAvLyBXZSBhcmUgZW1pdHRpbmcgd3JpdGUtYmFycmllciBiZWZvcmUgd3Jp
dGluZyBoZXJlIGJ1dCB0aGlzIGlzIE9LIHNpbmNlIDMyYml0IEpTQyBkb2VzIG5vdCBoYXZlIGNv
bmN1cnJlbnQgR0MuCi0gICAgLy8gRklYTUU6IFVzZSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVy
IGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNpemUuCi0gICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM5NQotICAgIGVtaXRXcml0
ZUJhcnJpZXIoYmFzZSwgU2hvdWxkRmlsdGVyQmFzZSk7Ci0gICAgZW1pdExvYWRQYXlsb2FkKGJh
c2UsIHJlZ1QwKTsKLSAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDMsIHJlZ1QyKTsKLQotICAgIEpJ
VFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFz
ZWxpbmVKSVQsIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5
dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHBy
b3BlcnR5TmFtZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNW
YWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSW52YWxpZEdQUlJlZywgcmVnVDEsIGVjbWFNb2RlKGJ5
dGVjb2RlKSwgcHV0S2luZCk7Ci0gICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwotICAg
IGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKLQotICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBs
YWJlbCgpOwotICAgIGdlbi5zbG93UGF0aEp1bXAoKS5saW5rKHRoaXMpOwotCi0gICAgLy8gSklU
UHV0QnlJZEdlbmVyYXRvciBvbmx5IHByZXNlcnZlIHRoZSB2YWx1ZSBhbmQgdGhlIGJhc2UncyBw
YXlsb2FkLCB3ZSBoYXZlIHRvIHJlbG9hZCB0aGUgdGFnLgotICAgIGVtaXRMb2FkVGFnKGJhc2Us
IHJlZ1QxKTsKLQotICAgIENhbGwgY2FsbDsKLSAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJ
VFR5cGU6OkJhc2VsaW5lSklUKSkgewotICAgICAgICBnZW4uc3R1YkluZm8oKS0+bV9zbG93T3Bl
cmF0aW9uID0gZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKTsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1t
UHRyKGdlbi5zdHViSW5mbygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgICAgIGNhbGxP
cGVyYXRpb248ZGVjbHR5cGUoZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSk+KEFkZHJlc3MoR1BSSW5m
bzo6bm9uQXJnR1BSMCwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBHUFJJbmZvOjpub25BcmdHUFIwLCBKU1Zh
bHVlUmVncyhyZWdUMywgcmVnVDIpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBwcm9wZXJ0
eU5hbWUucmF3Qml0cygpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgY2FsbCA9IGNhbGxPcGVyYXRp
b24oZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBn
ZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVn
VDEsIHJlZ1QwKSwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7Ci0gICAgZ2VuLnJlcG9ydFNsb3dQ
YXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKLSAgICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAo
KSk7Ci0KLSAgICByZXR1cm4gZ2VuOwotfQotCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAot
SklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZChP
cFB1dFByaXZhdGVOYW1lIGJ5dGVjb2RlLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFt
ZSwgSnVtcExpc3QmIGRvbmVDYXNlcywgSnVtcExpc3QmIHNsb3dDYXNlcykKLXsKLSAgICBhdXRv
IHB1dEtpbmQgPSBieXRlY29kZS5tX3B1dEtpbmQuaXNEZWZpbmUoKSA/IFB1dEtpbmQ6OkRpcmVj
dFByaXZhdGVGaWVsZERlZmluZSA6IFB1dEtpbmQ6OkRpcmVjdFByaXZhdGVGaWVsZFNldDsKLSAg
ICByZXR1cm4gZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKGJ5dGVjb2RlLCBwdXRLaW5kLCBwcm9w
ZXJ0eU5hbWUsIGRvbmVDYXNlcywgc2xvd0Nhc2VzKTsKLX0KLQogdm9pZCBKSVQ6OmVtaXRXcml0
ZUJhcnJpZXIoVmlydHVhbFJlZ2lzdGVyIG93bmVyLCBXcml0ZUJhcnJpZXJNb2RlIG1vZGUpCiB7
CiAgICAgQVNTRVJUKG1vZGUgPT0gVW5jb25kaXRpb25hbFdyaXRlQmFycmllciB8fCBtb2RlID09
IFNob3VsZEZpbHRlckJhc2UpOwpAQCAtMzEyOSw1OCArMzAyOCw2IEBAIHZvaWQgSklUOjplbWl0
V3JpdGVCYXJyaWVyKEpTQ2VsbCogb3duZXIpCiAgICAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRl
bi5saW5rKHRoaXMpOwogfQogCi12b2lkIEpJVDo6ZW1pdEJ5VmFsSWRlbnRpZmllckNoZWNrKFJl
Z2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBDYWNoZWFibGVJZGVudGlmaWVyIHBy
b3BlcnR5TmFtZSwgSnVtcExpc3QmIHNsb3dDYXNlcykKLXsKLSAgICBpZiAocHJvcGVydHlOYW1l
LmlzU3ltYm9sQ2VsbCgpKQotICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RF
cXVhbCwgY2VsbCwgVHJ1c3RlZEltbVB0cihwcm9wZXJ0eU5hbWUuY2VsbCgpKSkpOwotICAgIGVs
c2UgewotICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaElmTm90U3RyaW5nKGNlbGwpKTsK
LSAgICAgICAgbG9hZFB0cihBZGRyZXNzKGNlbGwsIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkp
LCBzY3JhdGNoKTsKLSAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWws
IHNjcmF0Y2gsIFRydXN0ZWRJbW1QdHIocHJvcGVydHlOYW1lLnVpZCgpKSkpOwotICAgIH0KLX0K
LQotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoQnlW
YWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgQ2FjaGVh
YmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpCi17Ci0gICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiA9IG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChieVZhbElu
Zm8tPmJ5dGVjb2RlSW5kZXgpLnB0cigpOwotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wUHV0UHJpdmF0ZU5hbWU+KCk7Ci0KLSAgICBKdW1wTGlzdCBkb25lQ2Fz
ZXM7Ci0gICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwotCi0gICAgSklUUHV0QnlJZEdlbmVyYXRvciBn
ZW4gPSBlbWl0UHV0UHJpdmF0ZU5hbWVXaXRoQ2FjaGVkSWQoYnl0ZWNvZGUsIHByb3BlcnR5TmFt
ZSwgZG9uZUNhc2VzLCBzbG93Q2FzZXMpOwotCi0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihtX2NvZGVCbG9jay0+bV9sb2NrKTsKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp0aGlz
LCBtX2NvZGVCbG9jaywgTGlua0J1ZmZlcjo6UHJvZmlsZTo6SW5saW5lQ2FjaGUpOwotICAgIHBh
dGNoQnVmZmVyLmxpbmsoc2xvd0Nhc2VzLCBieVZhbEluZm8tPnNsb3dQYXRoVGFyZ2V0KTsKLSAg
ICBwYXRjaEJ1ZmZlci5saW5rKGRvbmVDYXNlcywgYnlWYWxJbmZvLT5kb25lVGFyZ2V0KTsKLSAg
ICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpCi0gICAgICAgIHBhdGNoQnVmZmVyLmxp
bmsobV9leGNlcHRpb25DaGVja3MsIGJ5VmFsSW5mby0+ZXhjZXB0aW9uSGFuZGxlcik7Ci0KLSAg
ICBmb3IgKGNvbnN0IGF1dG8mIGNhbGxTaXRlIDogbV9uZWFyQ2FsbHMpIHsKLSAgICAgICAgaWYg
KGNhbGxTaXRlLmNhbGxlZSkKLSAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoY2FsbFNpdGUu
ZnJvbSwgY2FsbFNpdGUuY2FsbGVlKTsKLSAgICB9Ci0gICAgZm9yIChjb25zdCBhdXRvJiBjYWxs
U2l0ZSA6IG1fZmFyQ2FsbHMpIHsKLSAgICAgICAgaWYgKGNhbGxTaXRlLmNhbGxlZSkKLSAgICAg
ICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoY2FsbFNpdGUuZnJvbSwgY2FsbFNpdGUuY2FsbGVlKTsK
LSAgICB9Ci0gICAgZ2VuLmZpbmFsaXplKHBhdGNoQnVmZmVyLCBwYXRjaEJ1ZmZlcik7Ci0KLSAg
ICBieVZhbEluZm8tPnN0dWJSb3V0aW5lID0gRklOQUxJWkVfQ09ERV9GT1JfU1RVQigKLSAgICAg
ICAgbV9jb2RlQmxvY2ssIHBhdGNoQnVmZmVyLCBKSVRTdHViUm91dGluZVB0clRhZywKLSAgICAg
ICAgIkJhc2VsaW5lIHB1dF9wcml2YXRlX25hbWUgd2l0aCBjYWNoZWQgcHJvcGVydHkgbmFtZSAn
JXMnIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCBwcm9wZXJ0eU5hbWUudWlkKCktPnV0
ZjgoKS5kYXRhKCksIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVz
cy51bnRhZ2dlZFZhbHVlKCkpOwotICAgIGJ5VmFsSW5mby0+c3R1YkluZm8gPSBnZW4uc3R1Yklu
Zm8oKTsKLQotICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6QmFzZWxpbmVKSVQp
KSB7Ci0gICAgICAgIGJ5VmFsSW5mby0+bV9ub3RJbmRleEp1bXBUYXJnZXQgPSBDb2RlTG9jYXRp
b25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29k
ZSgpLmNvZGUoKSk7Ci0gICAgICAgIGJ5VmFsSW5mby0+bV9zbG93T3BlcmF0aW9uID0gb3BlcmF0
aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPm1fbm90SW5kZXhKdW1wLCBDb2RlTG9jYXRp
b25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29k
ZSgpLmNvZGUoKSkpOwotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxv
Y2F0aW9uQ2FsbDxSZXR1cm5BZGRyZXNzUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UmV0
dXJuQWRkcmVzc1B0clRhZz4ocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25Q
dHJUYWc+KG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYykpOwotICAgIH0KLX0KLQogfSAv
LyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggOGJh
MTBlNDNlYTZlNTU4YTU3YmZmY2ViYTkzZTRmZGMwOWViMjg3Ny4uMmViNDdmZDM0OGJkYWE5NzQw
MGYyNGM0N2U0YjA3OTdhYzdiYTAzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0zNDAsNDQgKzM0MCw0NiBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BQdXRQcml2YXRlTmFtZT4oKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVj
b2RlLm1fYmFzZTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3By
b3BlcnR5OwotICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9jb2RlQmxvY2stPmFkZEJ5VmFs
SW5mbyhtX2J5dGVjb2RlSW5kZXgpOworICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVj
b2RlLm1fdmFsdWU7CiAKICAgICBlbWl0TG9hZDIoYmFzZSwgcmVnVDEsIHJlZ1QwLCBwcm9wZXJ0
eSwgcmVnVDMsIHJlZ1QyKTsKKyAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDUsIHJlZ1Q0KTsKIAog
ICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7Ci0gICAgUGF0Y2hh
YmxlSnVtcCBmYXN0UGF0aEptcCA9IHBhdGNoYWJsZUp1bXAoKTsKLSAgICBhZGRTbG93Q2FzZShm
YXN0UGF0aEptcCk7CiAKLSAgICBMYWJlbCBkb25lID0gbGFiZWwoKTsKLSAgICAKLSAgICBtX2J5
VmFsQ29tcGlsYXRpb25JbmZvLmFwcGVuZChCeVZhbENvbXBpbGF0aW9uSW5mbyhieVZhbEluZm8s
IG1fYnl0ZWNvZGVJbmRleCwgZmFzdFBhdGhKbXAsIGRvbmUsIGRvbmUpKTsKKyAgICBKSVRQdXRC
eVZhbEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGlu
ZUpJVCwgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIEFjY2Vzc1R5cGU6OlB1dEJ5VmFsLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIEpTVmFs
dWVSZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFsdWVSZWdzKHJlZ1Q1LCByZWdUNCksIEludmFsaWRH
UFJSZWcsIEludmFsaWRHUFJSZWcpOworICAgIGdlbi5zdHViSW5mbygpLT5wcm9wZXJ0eUlzU3lt
Ym9sID0gdHJ1ZTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xv
d0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBtX3B1dEJ5VmFscy5hcHBlbmQoZ2VuKTsK
KworICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQgd3JpdGUtYmFycmll
ciBpZiBhIGJhc2UgaXMgY2VsbC4KKyAgICAvLyBGSVhNRTogVXNlIFVuY29uZGl0aW9uYWxXcml0
ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNvZGUgc2l6ZS4KKyAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5Mzk1CisgICAg
ZW1pdFdyaXRlQmFycmllcihiYXNlLCBTaG91bGRGaWx0ZXJCYXNlKTsKIH0KIAogdm9pZCBKSVQ6
OmVtaXRTbG93X29wX3B1dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFB1dFByaXZhdGVOYW1l
PigpOwotICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwotICAgIFZp
cnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7Ci0gICAgVmlydHVh
bFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKLQotICAgIEJ5VmFsSW5mbyogYnlW
YWxJbmZvID0gbV9ieVZhbENvbXBpbGF0aW9uSW5mb1ttX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleF0u
YnlWYWxJbmZvOwogICAgIFByaXZhdGVGaWVsZFB1dEtpbmQgcHV0S2luZCA9IGJ5dGVjb2RlLm1f
cHV0S2luZDsKIAorICAgIEpJVFB1dEJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX3B1dEJ5VmFsc1tt
X3B1dEJ5VmFsSW5kZXgrK107CisKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwotICAgIExh
YmVsIHNsb3dQYXRoID0gbGFiZWwoKTsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJl
bCgpOwogCiAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MocmVnVDEsIHJlZ1QwKTsKICAgICBKU1Zh
bHVlUmVncyBwcm9wZXJ0eVJlZ3MocmVnVDMsIHJlZ1QyKTsKICAgICBKU1ZhbHVlUmVncyB2YWx1
ZVJlZ3MocmVnVDUsIHJlZ1Q0KTsKIAotICAgIGVtaXRMb2FkKGJhc2UsIGJhc2VSZWdzLnRhZ0dQ
UigpLCBiYXNlUmVncy5wYXlsb2FkR1BSKCkpOwotICAgIGVtaXRMb2FkKHByb3BlcnR5LCBwcm9w
ZXJ0eVJlZ3MudGFnR1BSKCksIHByb3BlcnR5UmVncy5wYXlsb2FkR1BSKCkpOwotICAgIGVtaXRM
b2FkKHZhbHVlLCB2YWx1ZVJlZ3MudGFnR1BSKCksIHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpOwot
ICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRp
bWl6ZSwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBiYXNlUmVn
cywgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MsIGJ5VmFsSW5mbywgVHJ1c3RlZEltbTMyKHB1dEtp
bmQudmFsdWUoKSkpOworICAgIGF1dG8gb3BlcmF0aW9uID0gcHV0S2luZC5pc0RlZmluZSgpID8g
b3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmllbGRPcHRpbWl6ZSA6IG9wZXJhdGlvblB1
dEJ5VmFsU2V0UHJpdmF0ZUZpZWxkT3B0aW1pemU7CisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJh
dGlvbihvcGVyYXRpb24sIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KSwgYmFzZVJlZ3MsIHByb3BlcnR5UmVncywgdmFsdWVSZWdzLCBnZW4uc3R1YkluZm8oKSwgVHJ1
c3RlZEltbVB0cihudWxscHRyKSk7CiAKLSAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvW21fYnlW
YWxJbnN0cnVjdGlvbkluZGV4XS5zbG93UGF0aFRhcmdldCA9IHNsb3dQYXRoOwotICAgIG1fYnlW
YWxDb21waWxhdGlvbkluZm9bbV9ieVZhbEluc3RydWN0aW9uSW5kZXhdLnJldHVybkFkZHJlc3Mg
PSBjYWxsOwotICAgIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4Kys7CisgICAgZ2VuLnJlcG9ydFNs
b3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3Bf
c2V0X3ByaXZhdGVfYnJhbmQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IGU2M2M5OWJlNmFiZjdlYjc4
OWRjYTZhZjM5ZjUwOTAyZmFkMzg0N2QuLjA5ZmRlYzdhY2VhMWQwNTU2NTg2N2JiMjNhNjgzYWQ2
NmZjN2M0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNjAwLDkg
KzYwMCwxMiBAQCBzdGF0aWMgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBhcHByb3ByaWF0
ZUdlbmVyaWNQdXRCeUZ1bmN0aW9uKGNvbnN0IFB1dFBybwogICAgICAgICAgICAgaWYgKHNsb3Qu
aXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkRpcmVjdFB1
dEJ5VmFsU3RyaWN0R2VuZXJpYzsKICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25EaXJlY3RQ
dXRCeVZhbE5vblN0cmljdEdlbmVyaWM7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgUHV0S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lOgorICAgICAgICAgICAgQVNT
RVJUKHNsb3QuaXNTdHJpY3RNb2RlKCkpOworICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1
dEJ5VmFsRGVmaW5lUHJpdmF0ZUZpZWxkR2VuZXJpYzsKKyAgICAgICAgY2FzZSBQdXRLaW5kOjpE
aXJlY3RQcml2YXRlRmllbGRTZXQ6CisgICAgICAgICAgICBBU1NFUlQoc2xvdC5pc1N0cmljdE1v
ZGUoKSk7CisgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlWYWxTZXRQcml2YXRlRmll
bGRHZW5lcmljOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTYzMyw3ICs2
MzYsNyBAQCBzdGF0aWMgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiBhcHByb3ByaWF0ZU9w
dGltaXppbmdQdXRCeUZ1bmN0aW9uKGNvbnN0IFB1dAogICAgICAgICAgICAgcmV0dXJuIG9wZXJh
dGlvblB1dEJ5SWRTZXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKICAgICAgICAgfQogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFB1dEJ5S2luZDo6QnlWYWw6IHsKKyAgICBjYXNlIFB1dEJ5
S2luZDo6QnlWYWw6CiAgICAgICAgIHN3aXRjaCAocHV0S2luZCkgewogICAgICAgICBjYXNlIFB1
dEtpbmQ6Ok5vdERpcmVjdDoKICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQpA
QCAtNjQzLDEzICs2NDYsMTUgQEAgc3RhdGljIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4g
YXBwcm9wcmlhdGVPcHRpbWl6aW5nUHV0QnlGdW5jdGlvbihjb25zdCBQdXQKICAgICAgICAgICAg
IGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBvcGVyYXRp
b25EaXJlY3RQdXRCeVZhbFN0cmljdE9wdGltaXplOwogICAgICAgICAgICAgcmV0dXJuIG9wZXJh
dGlvbkRpcmVjdFB1dEJ5VmFsTm9uU3RyaWN0T3B0aW1pemU7Ci0gICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgUHV0S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkRGVmaW5lOgorICAg
ICAgICAgICAgQVNTRVJUKHNsb3QuaXNTdHJpY3RNb2RlKCkpOworICAgICAgICAgICAgcmV0dXJu
IG9wZXJhdGlvblB1dEJ5VmFsRGVmaW5lUHJpdmF0ZUZpZWxkT3B0aW1pemU7CisgICAgICAgIGNh
c2UgUHV0S2luZDo6RGlyZWN0UHJpdmF0ZUZpZWxkU2V0OgorICAgICAgICAgICAgQVNTRVJUKHNs
b3QuaXNTdHJpY3RNb2RlKCkpOworICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5VmFs
U2V0UHJpdmF0ZUZpZWxkT3B0aW1pemU7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAg
fQotICAgIH0KICAgICAvLyBNYWtlIHdpbiBwb3J0IGNvbXBpbGVyIGhhcHB5CiAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5MjIsNiAr
MTkyNywxMCBAQCB2b2lkIHJlc2V0UHV0QnkoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVy
ZVN0dWJJbmZvJiBzdHViSW5mbywgUHV0QnlLaW5kIGtpbgogICAgICAgICAgICAgb3B0aW1pemVk
RnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeVZhbE5vblN0cmljdE9wdGltaXplOwogICAgICAgICBl
bHNlIGlmICh1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsU3Ry
aWN0R2VuZXJpYyB8fCB1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvbkRpcmVjdFB1dEJ5
VmFsU3RyaWN0T3B0aW1pemUpCiAgICAgICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJh
dGlvbkRpcmVjdFB1dEJ5VmFsU3RyaWN0T3B0aW1pemU7CisgICAgICAgIGVsc2UgaWYgKHVub3B0
aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmllbGRHZW5l
cmljIHx8IHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2
YXRlRmllbGRPcHRpbWl6ZSkKKyAgICAgICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0
aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmllbGRPcHRpbWl6ZTsKKyAgICAgICAgZWxzZSBpZiAo
dW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeVZhbFNldFByaXZhdGVGaWVsZEdl
bmVyaWMgfHwgdW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeVZhbFNldFByaXZh
dGVGaWVsZE9wdGltaXplKQorICAgICAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRp
b25QdXRCeVZhbFNldFByaXZhdGVGaWVsZE9wdGltaXplOwogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgIEFTU0VSVCh1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvbkRpcmVjdFB1dEJ5
VmFsTm9uU3RyaWN0R2VuZXJpYyB8fCB1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvbkRp
cmVjdFB1dEJ5VmFsTm9uU3RyaWN0T3B0aW1pemUpOwogICAgICAgICAgICAgb3B0aW1pemVkRnVu
Y3Rpb24gPSBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE5vblN0cmljdE9wdGltaXplOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDMwMjQ3ZjBlN2Q1
ZWU1NjMzMjRjZThmODgzZTE3ZmZkNWM3NzhjNTEuLjdmMDcxYmM3YmQ2Mjg4ZWY0YThkN2Y0YzJj
YWQ2N2UxZTFlYjI5ZGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0wOC0yNiAgWXVzdWtlIFN1enVraSAgPHlz
dXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIG9wX3B1dF9wcml2YXRlX25hbWUgc2hv
dWxkIHVzZSBtb2Rlcm4gSUMgYW5kIHJlbW92ZSBCeVZhbEluZm8KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTU0NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9ydW4tanNjLWJlbmNobWFy
a3M6CisKIDIwMjEtMDgtMjUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVtb3ZlIHNvbWUgaU9TLXNwZWNpZmljIGNvbXBpbGUtdGltZSBndWFyZHMg
dGhhdCBhcmUgbm8gbG9uZ2VyIG5lZWRlZApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4t
anNjLWJlbmNobWFya3MgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2MtYmVuY2htYXJrcwppbmRleCAw
ODFhN2Y3MmZkN2VjMGQ1MDJmNTNiY2FhODhmY2FhYjZmNzllZDQzLi4wMWIzYzIwN2RmZDFlMWJm
ZGRlYTI2NzJmM2ZiNDljMGVkNzI0YWMyIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1q
c2MtYmVuY2htYXJrcworKysgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2MtYmVuY2htYXJrcwpAQCAt
NTEsNyArNTEsNiBAQCBWOF9QQVRIID0gUEVSRk9STUFOQ0VURVNUU19QQVRIICsgIlN1blNwaWRl
ciIgKyAidGVzdHMiICsgInY4LXY2IgogVEFJTEJFTkNIX1BBVEggPSBQRVJGT1JNQU5DRVRFU1RT
X1BBVEggKyAiVGFpbEJlbmNoOTAwMCIKIEJJR0lOVEJFTkNIX1BBVEggPSBQRVJGT1JNQU5DRVRF
U1RTX1BBVEggKyAiQmlnSW50QmVuY2giCiBNSUNST0JFTkNITUFSS1NfUEFUSCA9IE9QRU5TT1VS
Q0VfUEFUSCArICJKU1Rlc3RzIiArICJtaWNyb2JlbmNobWFya3MiCi1QUklWQVRFRklFTERTQkVO
Q0hfUEFUSCA9IE1JQ1JPQkVOQ0hNQVJLU19QQVRIICsgImNsYXNzLWZpZWxkcy1wcml2YXRlIgog
U0xPV19NSUNST0JFTkNITUFSS1NfUEFUSCA9IE9QRU5TT1VSQ0VfUEFUSCArICJKU1Rlc3RzIiAr
ICJzbG93TWljcm9iZW5jaG1hcmtzIgogT1BFTlNPVVJDRV9PQ1RBTkVfUEFUSCA9IFBFUkZPUk1B
TkNFVEVTVFNfUEFUSCArICJPY3RhbmUiCiBPQ1RBTkVfV1JBUFBFUl9QQVRIID0gT1BFTlNPVVJD
RV9PQ1RBTkVfUEFUSCArICJ3cmFwcGVycyIKQEAgLTIzNiw3ICsyMzUsNiBAQCAkaW5jbHVkZUNv
bXByZXNzaW9uQmVuY2ggPSBmYWxzZQogJGluY2x1ZGVTaXhTcGVlZCA9IGZhbHNlCiAkaW5jbHVk
ZVRhaWxCZW5jaCA9IHRydWUKICRpbmNsdWRlQmlnSW50QmVuY2ggPSBmYWxzZQotJGluY2x1ZGVQ
cml2YXRlRmllbGRzQmVuY2ggPSBmYWxzZQogJGxkZD1uaWwKICRtZWFzdXJlR0M9ZmFsc2UKICRi
ZW5jaG1hcmtQYXR0ZXJuPW5pbApAQCAtMTc4NiwyMiArMTc4NCw2IEBAIGNsYXNzIEJpZ0ludEJl
bmNoQmVuY2htYXJrCiAgIGVuZAogZW5kCiAKLWNsYXNzIFByaXZhdGVGaWVsZHNCZW5jaG1hcmsK
LSAgICBpbmNsdWRlIEJlbmNobWFyawotCi0gICAgZGVmIGluaXRpYWxpemUobmFtZSkKLSAgICAg
ICAgQG5hbWUgPSBuYW1lCi0gICAgZW5kCi0KLSAgICBkZWYgZW1pdFJ1bkNvZGUocGxhbikKLSAg
ICAgICAgZW1pdEJlbmNoUnVuQ29kZShmdWxsbmFtZSwgcGxhbiwgU2luZ2xlRmlsZVRpbWVkQmVu
Y2htYXJrUGFyYW1ldGVycy5uZXcoZW5zdXJlRmlsZSgiUHJpdmF0ZUZpZWxkc0JlbmNoLSN7QG5h
bWV9IiwgIiN7UFJJVkFURUZJRUxEU0JFTkNIX1BBVEh9LyN7QG5hbWV9LmpzIikpKQotICAgIGVu
ZAotCi0gICAgZGVmIGVudmlyb25tZW50Ci0gICAgICAgIHt9Ci0gICAgZW5kCi1lbmQKLQogY2xh
c3MgTWljcm9iZW5jaG1hcmtzQmVuY2htYXJrCiAgIGluY2x1ZGUgQmVuY2htYXJrCiAgIApAQCAt
MjkxMCw3ICsyODkyLDYgQEAgYmVnaW4KICAgICAgICAgICAgICAgICAgWyctLXNpeC1zcGVlZCcs
IEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKICAgICAgICAgICAgICAgICAgWyctLXRhaWwtYmVu
Y2gnLCBHZXRvcHRMb25nOjpOT19BUkdVTUVOVF0sCiAgICAgICAgICAgICAgICAgIFsnLS1iaWct
aW50LWJlbmNoJywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdLAotICAgICAgICAgICAgICAgICBb
Jy0tcHJpdmF0ZS1maWVsZHMtYmVuY2gnLCBHZXRvcHRMb25nOjpOT19BUkdVTUVOVF0sCiAgICAg
ICAgICAgICAgICAgIFsnLS1iZW5jaG1hcmtzJywgR2V0b3B0TG9uZzo6UkVRVUlSRURfQVJHVU1F
TlRdLAogICAgICAgICAgICAgICAgICBbJy0tbWVhc3VyZS1nYycsIEdldG9wdExvbmc6Ok9QVElP
TkFMX0FSR1VNRU5UXSwKICAgICAgICAgICAgICAgICAgWyctLWZvcmNlLXZtLWtpbmQnLCBHZXRv
cHRMb25nOjpSRVFVSVJFRF9BUkdVTUVOVF0sCkBAIC0zMDI4LDkgKzMwMDksNiBAQCBiZWdpbgog
ICAgIHdoZW4gJy0tYmlnLWludC1iZW5jaCcKICAgICAgIHJlc2V0QmVuY2hPcHRpb25zSWZOZWNl
c3NhcnkKICAgICAgICRpbmNsdWRlQmlnSW50QmVuY2ggPSB0cnVlCi0gICAgd2hlbiAnLS1wcml2
YXRlLWZpZWxkcy1iZW5jaCcKLSAgICAgIHJlc2V0QmVuY2hPcHRpb25zSWZOZWNlc3NhcnkKLSAg
ICAgICRpbmNsdWRlUHJpdmF0ZUZpZWxkc0JlbmNoID0gdHJ1ZQogICAgIHdoZW4gJy0tYmVuY2ht
YXJrcycKICAgICAgICRiZW5jaG1hcmtQYXR0ZXJuID0gUmVnZXhwLm5ldyhhcmcpCiAgICAgd2hl
biAnLS1tZWFzdXJlLWdjJwpAQCAtMzI3MCwxNSArMzI0OCw2IEBAIGJlZ2luCiAgICAgZW5kCiAg
IH0KIAotICBQUklWQVRFRklFTERTQkVOQ0ggPSBCZW5jaG1hcmtTdWl0ZS5uZXcoIlByaXZhdGVG
aWVsZHNCZW5jaCIsIDpnZW9tZXRyaWNNZWFuLCAwKQotICBEaXIuZm9yZWFjaChQUklWQVRFRklF
TERTQkVOQ0hfUEFUSCkgewotICAgIHwgZmlsZW5hbWUgfAotICAgIGlmIGZpbGVuYW1lID1+IC9c
LmpzJC8KLSAgICAgICAgbmFtZSA9ICR+LnByZV9tYXRjaAotICAgICAgICBQUklWQVRFRklFTERT
QkVOQ0guYWRkIFByaXZhdGVGaWVsZHNCZW5jaG1hcmsubmV3KG5hbWUpCi0gICAgZW5kCi0gIH0K
LQogICBNSUNST0JFTkNITUFSS1MgPSBCZW5jaG1hcmtTdWl0ZS5uZXcoIk1pY3JvYmVuY2htYXJr
cyIsIDpnZW9tZXRyaWNNZWFuLCAwKQogICBEaXIuZm9yZWFjaChNSUNST0JFTkNITUFSS1NfUEFU
SCkgewogICAgIHwgZmlsZW5hbWUgfApAQCAtMzQ1MCwxMCArMzQxOSw2IEBAIGJlZ2luCiAgICAg
JHN1aXRlcyA8PCBCSUdJTlRCRU5DSAogICBlbmQKIAotICBpZiAkaW5jbHVkZVByaXZhdGVGaWVs
ZHNCZW5jaCBhbmQgbm90IFBSSVZBVEVGSUVMRFNCRU5DSC5lbXB0eT8KLSAgICAkc3VpdGVzIDw8
IFBSSVZBVEVGSUVMRFNCRU5DSAotICBlbmQKLQogICBpZiAkaW5jbHVkZUFzbUJlbmNoIGFuZCBu
b3QgQVNNQkVOQ0guZW1wdHk/CiAgICAgaWYgQVNNQkVOQ0hfUEFUSAogICAgICAgJHN1aXRlcyA8
PCBBU01CRU5DSApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5n
ZUxvZwppbmRleCBhNzAzZDgyNGQ4OGFhNWQzMjY5MTNjMWQ1MTEwMWNkMDk5MjZmNjJjLi4zMDZj
ZGZjYjIwN2Y1YjBmYjM4YWJkMmVjODA0MTg5NzBjNzQyZTJhIDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIx
LTA4LTI2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pT
Q10gb3BfcHV0X3ByaXZhdGVfbmFtZSBzaG91bGQgdXNlIG1vZGVybiBJQyBhbmQgcmVtb3ZlIEJ5
VmFsSW5mbworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI5NTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TW92ZSBjbGFzcy1maWVsZHMtcHJpdmF0ZSBiZW5jaG1hcmtzIGludG8gbWljcm9iZW5jaG1hcmtz
LgorICAgICAgICBBZGRlZCBzZXZlcmFsIG1pY3JvYmVuY2htYXJrcyBhbmQgc3RyZXNzIHRlc3Rz
LgorCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2NsYXNzLXByaXZhdGUtZmllbGQtcG9seW1v
cnBoaWMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdC5BLnBy
b3RvdHlwZS5wdXQpOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9nZXQtcHJpdmF0ZS1uYW1l
LmpzOiBSZW5hbWVkIGZyb20gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXBy
aXZhdGUvZ2V0LXByaXZhdGUtbmFtZS5qcy4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvbW9u
b21vcnBoaWMtZ2V0LXByaXZhdGUtZmllbGQuanM6IFJlbmFtZWQgZnJvbSBKU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9tb25vbW9ycGhpYy1nZXQtcHJpdmF0ZS1m
aWVsZC5qcy4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvcG9seW1vcnBoaWMtZ2V0LXByaXZh
dGUtZmllbGQuanM6IFJlbmFtZWQgZnJvbSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1m
aWVsZHMtcHJpdmF0ZS9wb2x5bW9ycGhpYy1nZXQtcHJpdmF0ZS1maWVsZC5qcy4KKyAgICAgICAg
KiBtaWNyb2JlbmNobWFya3MvcG9seW1vcnBoaWMtcHV0LXByaXZhdGUtZmllbGQuanM6IFJlbmFt
ZWQgZnJvbSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9wb2x5
bW9ycGhpYy1wdXQtcHJpdmF0ZS1maWVsZC5qcy4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3Mv
cHV0LWJ5LXZhbC1wb2x5bW9ycGhpYy1wcm9wZXJ0aWVzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNo
b3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9wdXQt
cHJpdmF0ZS1maWVsZC5qczogUmVuYW1lZCBmcm9tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Ns
YXNzLWZpZWxkcy1wcml2YXRlL3B1dC1wcml2YXRlLWZpZWxkLmpzLgorICAgICAgICAqIHN0cmVz
cy9jbGFzcy1wcml2YXRlLWZpZWxkLW1lZ2Ftb3JwaGljLmpzOiBBZGRlZC4KKyAgICAgICAgKHNo
b3VsZEJlKToKKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtcHJpdmF0ZS1maWVsZC1wb2x5bW9ycGhp
Yy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0LkEucHJvdG90
eXBlLnB1dCk6CisgICAgICAgICogc3RyZXNzL3B1dC1ieS12YWwtcG9seW1vcnBoaWMtcHJvcGVy
dGllcy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKwog
MjAyMS0wOC0yNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAg
IFVwZGF0ZSBJbnRsIHRlc3RzIHRvIHN1cHBvcnQgSUNVIDY4CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9nZXQtcHJpdmF0ZS1uYW1lLmpz
IGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUvZ2V0LXByaXZh
dGUtbmFtZS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTAzMzZjMjZhYzYwMTZm
MDI2NmM4ZjgzNjQ3Njk5N2Q4MjU2NjBiMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJp
dmF0ZS9nZXQtcHJpdmF0ZS1uYW1lLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAot
ZnVuY3Rpb24gYXNzZXJ0KGIsIG0gPSAiQXNzZXJ0aW9uIGZhaWxlZCIpIHsKLSAgICBpZiAoIWIp
Ci0gICAgICAgIHRocm93IG5ldyBFcnJvcihtKTsKLX0KLQotZnVuY3Rpb24gdGVzdDEoKSB7Ci0g
ICAgZnVuY3Rpb24gZmFjdG9yeShpKSB7Ci0gICAgICAgIHJldHVybiBuZXcgY2xhc3MgewotICAg
ICAgICAgICAgI3ggPSBpOwotICAgICAgICAgICAgZ2V0KCkgeyByZXR1cm4gdGhpcy4jeDsgfQot
ICAgICAgICB9OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGZvbyhvLCBpKSB7Ci0gICAgICAgIHJl
dHVybiBvLmdldCgpOwotICAgIH0KLSAgICBub0lubGluZShmb28pOwotCi0gICAgbGV0IGEgPSBm
YWN0b3J5KDQyKTsKLSAgICBsZXQgYiA9IGZhY3RvcnkoNDMpOwotICAgIGxldCBzdGFydCA9IERh
dGUubm93KCk7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwMDsgKytpKSB7Ci0gICAg
ICAgIGFzc2VydChmb28oYSwgImEiKSA9PT0gNDIpOwotICAgICAgICBhc3NlcnQoZm9vKGIsICJi
IikgPT09IDQzKTsKLSAgICB9Ci19Ci10ZXN0MSgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNy
b2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUvbW9ub21vcnBoaWMtZ2V0LXByaXZhdGUt
ZmllbGQuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9t
b25vbW9ycGhpYy1nZXQtcHJpdmF0ZS1maWVsZC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMWMwNDdjZmZjNzRmOTRjZTRjNTQ1N2Q4NmJkMzA0OTdmYjBhNDhiNC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9KU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9tb25vbW9ycGhpYy1nZXQtcHJpdmF0ZS1maWVsZC5q
cworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLWNsYXNzIEMgewotICAgICNmaWVsZDsK
LQotICAgIGNvbnN0cnVjdG9yKGkpIHsKLSAgICAgICAgdGhpcy4jZmllbGQgPSBpOwotICAgIH0K
LQotICAgIGdldEZpZWxkKCkgewotICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7Ci0gICAgfQot
fQotbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOwotCi1sZXQgYyA9IG5ldyBDKCJ0ZXN0
Iik7Ci1mb3IgKGxldCBpID0gMDsgaSA8IDUwMDAwMDA7IGkrKykgewotICAgIGlmIChjLmdldEZp
ZWxkKCkgIT09ICJ0ZXN0IikKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ1bmV4cGVjdGVkIGZp
ZWxkIHZhbHVlIik7Ci19CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFz
cy1maWVsZHMtcHJpdmF0ZS9wb2x5bW9ycGhpYy1nZXQtcHJpdmF0ZS1maWVsZC5qcyBiL0pTVGVz
dHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL3BvbHltb3JwaGljLWdldC1w
cml2YXRlLWZpZWxkLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjM0ZDk2ZWU5
N2MwMDRiNDg2OGViODIyNTdmZWI0MzFjMzI4YjVmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxk
cy1wcml2YXRlL3BvbHltb3JwaGljLWdldC1wcml2YXRlLWZpZWxkLmpzCisrKyAvZGV2L251bGwK
QEAgLTEsMzIgKzAsMCBAQAotY2xhc3MgQyB7Ci0gICAgI2ZpZWxkOwotCi0gICAgc2V0RmllbGQo
dmFsdWUpIHsKLSAgICAgICAgdGhpcy4jZmllbGQgPSB2YWx1ZTsKLSAgICB9Ci0KLSAgICBnZXRG
aWVsZCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuI2ZpZWxkOwotICAgIH0KLX0KLW5vSW5saW5l
KEMucHJvdG90eXBlLmdldEZpZWxkKTsKLQotbGV0IGMxID0gbmV3IEMoKTsKLWMxLmZvbyA9IDA7
Ci1jMS5zZXRGaWVsZCgiYSIpOwotCi1sZXQgYzIgPSBuZXcgQygpOwotYzIuYmFyID0gMDsKLWMy
LnNldEZpZWxkKCJiIik7Ci0KLWxldCBjMyA9IG5ldyBDKCk7Ci1jMy5iYXogPSAwOwotYzMuc2V0
RmllbGQoImMiKTsKLQotbGV0IGFyciA9IFtjMSwgYzIsIGMzXTsKLWxldCB2YWx1ZXMgPSBbImEi
LCAiYiIsICJjIl07Ci1mb3IgKGxldCBpID0gMDsgaSA8IDUwMDAwMDA7IGkrKykgewotICAgIGlm
IChhcnJbaSAlIGFyci5sZW5ndGhdLmdldEZpZWxkKCkgIT09IHZhbHVlc1tpICUgdmFsdWVzLmxl
bmd0aF0pCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigidW5leHBlY3RlZCBmaWVsZCB2YWx1ZSIp
OwotfQotCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMt
cHJpdmF0ZS9wb2x5bW9ycGhpYy1wdXQtcHJpdmF0ZS1maWVsZC5qcyBiL0pTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlL3BvbHltb3JwaGljLXB1dC1wcml2YXRlLWZp
ZWxkLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODU0ZGNiNDU2NGQ3ZWI4MGQ5
MjUxMzg0OGY4ZjI0NTQyZTNlNmIyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRl
L3BvbHltb3JwaGljLXB1dC1wcml2YXRlLWZpZWxkLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjQg
KzAsMCBAQAotY2xhc3MgQyB7Ci0gICAgI2ZpZWxkOwotCi0gICAgc2V0RmllbGQodmFsdWUpIHsK
LSAgICAgICAgdGhpcy4jZmllbGQgPSB2YWx1ZTsKLSAgICB9Ci19Ci1ub0lubGluZShDLnByb3Rv
dHlwZS5zZXRGaWVsZCk7Ci0KLWxldCBjMSA9IG5ldyBDKCk7Ci1jMS5mb28gPSAwOwotCi1sZXQg
YzIgPSBuZXcgQygpOwotYzIuYmFyID0gMDsKLQotbGV0IGMzID0gbmV3IEMoKTsKLWMzLmJheiA9
IDA7Ci0KLWxldCBhcnIgPSBbYzEsIGMyLCBjM107Ci0KLWZvciAobGV0IGkgPSAwOyBpIDwgNTAw
MDAwMDsgaSsrKSB7Ci0gICAgYXJyW2kgJSBhcnIubGVuZ3RoXS5zZXRGaWVsZChpKTsKLX0KLQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUv
cHV0LXByaXZhdGUtZmllbGQuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVs
ZHMtcHJpdmF0ZS9wdXQtcHJpdmF0ZS1maWVsZC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNWQzZjg3NjliMjg2M2ZlNThjZmY4ZjA1NjgxNDk1ZDJjMWZlZmVkYS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9KU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS9wdXQtcHJpdmF0ZS1maWVsZC5qcworKysgL2Rldi9u
dWxsCkBAIC0xLDE0ICswLDAgQEAKLWNsYXNzIEMgewotICAgICNmaWVsZDsKLQotICAgIHNldEZp
ZWxkKHZhbHVlKSB7Ci0gICAgICAgIHRoaXMuI2ZpZWxkID0gdmFsdWU7Ci0gICAgfQotfQotbm9J
bmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOwotCi1sZXQgYyA9IG5ldyBDKCk7Ci1mb3IgKGxl
dCBpID0gMDsgaSA8IDUwMDAwMDA7IGkrKykgewotICAgIGMuc2V0RmllbGQoaSk7Ci19Ci0KZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLXByaXZhdGUtZmllbGQtcG9s
eW1vcnBoaWMuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1wcml2YXRlLWZpZWxk
LXBvbHltb3JwaGljLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5N2RjYTQ1MTQ1ODNlZmQ5N2JiZTljMTY3NTJl
MDgxZjhmY2Y0M2QKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9j
bGFzcy1wcml2YXRlLWZpZWxkLXBvbHltb3JwaGljLmpzCkBAIC0wLDAgKzEsMzYgQEAKK2Z1bmN0
aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOwor
fQorCitmdW5jdGlvbiB0ZXN0KGkpCit7CisgICAgY2xhc3MgQSB7CisgICAgICAgICNmaWVsZCA9
IDA7CisgICAgICAgIHB1dChpKQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzLiNmaWVsZCA9
IGk7CisgICAgICAgIH0KKyAgICAgICAgZ2V0KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIHRoaXMuI2ZpZWxkOworICAgICAgICB9CisgICAgfQorICAgIG5vSW5saW5lKEEucHJvdG90
eXBlLmdldCk7CisgICAgbm9JbmxpbmUoQS5wcm90b3R5cGUucHV0KTsKKyAgICByZXR1cm4gbmV3
IEE7Cit9CisKK2xldCB0ZXN0MCA9IHRlc3QoMCk7CitsZXQgdGVzdDEgPSB0ZXN0KDEpOworbGV0
IHRlc3QyID0gdGVzdCgyKTsKK2xldCB0ZXN0MyA9IHRlc3QoMyk7CitsZXQgdGVzdDQgPSB0ZXN0
KDQpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgdGVzdDAucHV0KGkg
KyAwKTsKKyAgICB0ZXN0MS5wdXQoaSArIDEpOworICAgIHRlc3QyLnB1dChpICsgMik7CisgICAg
dGVzdDMucHV0KGkgKyAzKTsKKyAgICB0ZXN0NC5wdXQoaSArIDQpOworfQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvZ2V0LXByaXZhdGUtbmFtZS5qcyBiL0pTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2dldC1wcml2YXRlLW5hbWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTAzMzZjMjZhYzYw
MTZmMDI2NmM4ZjgzNjQ3Njk5N2Q4MjU2NjBiMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
bWljcm9iZW5jaG1hcmtzL2dldC1wcml2YXRlLW5hbWUuanMKQEAgLTAsMCArMSwyNyBAQAorZnVu
Y3Rpb24gYXNzZXJ0KGIsIG0gPSAiQXNzZXJ0aW9uIGZhaWxlZCIpIHsKKyAgICBpZiAoIWIpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcihtKTsKK30KKworZnVuY3Rpb24gdGVzdDEoKSB7CisgICAg
ZnVuY3Rpb24gZmFjdG9yeShpKSB7CisgICAgICAgIHJldHVybiBuZXcgY2xhc3MgeworICAgICAg
ICAgICAgI3ggPSBpOworICAgICAgICAgICAgZ2V0KCkgeyByZXR1cm4gdGhpcy4jeDsgfQorICAg
ICAgICB9OworICAgIH0KKworICAgIGZ1bmN0aW9uIGZvbyhvLCBpKSB7CisgICAgICAgIHJldHVy
biBvLmdldCgpOworICAgIH0KKyAgICBub0lubGluZShmb28pOworCisgICAgbGV0IGEgPSBmYWN0
b3J5KDQyKTsKKyAgICBsZXQgYiA9IGZhY3RvcnkoNDMpOworICAgIGxldCBzdGFydCA9IERhdGUu
bm93KCk7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwMDsgKytpKSB7CisgICAgICAg
IGFzc2VydChmb28oYSwgImEiKSA9PT0gNDIpOworICAgICAgICBhc3NlcnQoZm9vKGIsICJiIikg
PT09IDQzKTsKKyAgICB9Cit9Cit0ZXN0MSgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2Jl
bmNobWFya3MvbW9ub21vcnBoaWMtZ2V0LXByaXZhdGUtZmllbGQuanMgYi9KU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9tb25vbW9ycGhpYy1nZXQtcHJpdmF0ZS1maWVsZC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
YzA0N2NmZmM3NGY5NGNlNGM1NDU3ZDg2YmQzMDQ5N2ZiMGE0OGI0Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvbW9ub21vcnBoaWMtZ2V0LXByaXZhdGUtZmllbGQu
anMKQEAgLTAsMCArMSwxOCBAQAorY2xhc3MgQyB7CisgICAgI2ZpZWxkOworCisgICAgY29uc3Ry
dWN0b3IoaSkgeworICAgICAgICB0aGlzLiNmaWVsZCA9IGk7CisgICAgfQorCisgICAgZ2V0Rmll
bGQoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShD
LnByb3RvdHlwZS5nZXRGaWVsZCk7CisKK2xldCBjID0gbmV3IEMoInRlc3QiKTsKK2ZvciAobGV0
IGkgPSAwOyBpIDwgNTAwMDAwMDsgaSsrKSB7CisgICAgaWYgKGMuZ2V0RmllbGQoKSAhPT0gInRl
c3QiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoInVuZXhwZWN0ZWQgZmllbGQgdmFsdWUiKTsK
K30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3BvbHltb3JwaGljLWdldC1w
cml2YXRlLWZpZWxkLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seW1vcnBoaWMtZ2V0
LXByaXZhdGUtZmllbGQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjYzNGQ5NmVlOTdjMDA0YjQ4NjhlYjgyMjU3
ZmViNDMxYzMyOGI1ZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L3BvbHltb3JwaGljLWdldC1wcml2YXRlLWZpZWxkLmpzCkBAIC0wLDAgKzEsMzIgQEAKK2NsYXNz
IEMgeworICAgICNmaWVsZDsKKworICAgIHNldEZpZWxkKHZhbHVlKSB7CisgICAgICAgIHRoaXMu
I2ZpZWxkID0gdmFsdWU7CisgICAgfQorCisgICAgZ2V0RmllbGQoKSB7CisgICAgICAgIHJldHVy
biB0aGlzLiNmaWVsZDsKKyAgICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7
CisKK2xldCBjMSA9IG5ldyBDKCk7CitjMS5mb28gPSAwOworYzEuc2V0RmllbGQoImEiKTsKKwor
bGV0IGMyID0gbmV3IEMoKTsKK2MyLmJhciA9IDA7CitjMi5zZXRGaWVsZCgiYiIpOworCitsZXQg
YzMgPSBuZXcgQygpOworYzMuYmF6ID0gMDsKK2MzLnNldEZpZWxkKCJjIik7CisKK2xldCBhcnIg
PSBbYzEsIGMyLCBjM107CitsZXQgdmFsdWVzID0gWyJhIiwgImIiLCAiYyJdOworZm9yIChsZXQg
aSA9IDA7IGkgPCA1MDAwMDAwOyBpKyspIHsKKyAgICBpZiAoYXJyW2kgJSBhcnIubGVuZ3RoXS5n
ZXRGaWVsZCgpICE9PSB2YWx1ZXNbaSAlIHZhbHVlcy5sZW5ndGhdKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoInVuZXhwZWN0ZWQgZmllbGQgdmFsdWUiKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9taWNyb2JlbmNobWFya3MvcG9seW1vcnBoaWMtcHV0LXByaXZhdGUtZmllbGQuanMgYi9K
U1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wb2x5bW9ycGhpYy1wdXQtcHJpdmF0ZS1maWVsZC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mODU0ZGNiNDU2NGQ3ZWI4MGQ5MjUxMzg0OGY4ZjI0NTQyZTNlNmIyCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seW1vcnBoaWMtcHV0LXBy
aXZhdGUtZmllbGQuanMKQEAgLTAsMCArMSwyNCBAQAorY2xhc3MgQyB7CisgICAgI2ZpZWxkOwor
CisgICAgc2V0RmllbGQodmFsdWUpIHsKKyAgICAgICAgdGhpcy4jZmllbGQgPSB2YWx1ZTsKKyAg
ICB9Cit9Citub0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisKK2xldCBjMSA9IG5ldyBD
KCk7CitjMS5mb28gPSAwOworCitsZXQgYzIgPSBuZXcgQygpOworYzIuYmFyID0gMDsKKworbGV0
IGMzID0gbmV3IEMoKTsKK2MzLmJheiA9IDA7CisKK2xldCBhcnIgPSBbYzEsIGMyLCBjM107CisK
K2ZvciAobGV0IGkgPSAwOyBpIDwgNTAwMDAwMDsgaSsrKSB7CisgICAgYXJyW2kgJSBhcnIubGVu
Z3RoXS5zZXRGaWVsZChpKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFy
a3MvcHV0LWJ5LXZhbC1wb2x5bW9ycGhpYy1wcm9wZXJ0aWVzLmpzIGIvSlNUZXN0cy9taWNyb2Jl
bmNobWFya3MvcHV0LWJ5LXZhbC1wb2x5bW9ycGhpYy1wcm9wZXJ0aWVzLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQ2ZjM5NGM2ZmJkNmVhNWFlZjZmMDQ3Yzg5MWZjNzA4YWVkZWExMGEKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wdXQtYnktdmFsLXBvbHltb3JwaGljLXByb3Bl
cnRpZXMuanMKQEAgLTAsMCArMSwyMCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBl
Y3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qob2JqZWN0
LCBuYW1lLCB2YWx1ZSkKK3sKKyAgICBvYmplY3RbbmFtZV0gPSB2YWx1ZTsKK30KK25vSW5saW5l
KHRlc3QpOworCit2YXIgYXJyYXkgPSBbIDAsIDEsIDIgXTsKK2FycmF5LmhlbGxvID0gNDI7Cith
cnJheS53b3JsZCA9IDQ0OworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAg
dGVzdChhcnJheSwgImhlbGxvIiwgaSk7CisgICAgdGVzdChhcnJheSwgIndvcmxkIiwgaSk7Cisg
ICAgdGVzdChhcnJheSwgMCwgaSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9wdXQtcHJpdmF0ZS1maWVsZC5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3B1dC1w
cml2YXRlLWZpZWxkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkM2Y4NzY5YjI4NjNmZTU4Y2ZmOGYwNTY4MTQ5
NWQyYzFmZWZlZGEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9w
dXQtcHJpdmF0ZS1maWVsZC5qcwpAQCAtMCwwICsxLDE0IEBACitjbGFzcyBDIHsKKyAgICAjZmll
bGQ7CisKKyAgICBzZXRGaWVsZCh2YWx1ZSkgeworICAgICAgICB0aGlzLiNmaWVsZCA9IHZhbHVl
OworICAgIH0KK30KK25vSW5saW5lKEMucHJvdG90eXBlLnNldEZpZWxkKTsKKworbGV0IGMgPSBu
ZXcgQygpOworZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwMDAwOyBpKyspIHsKKyAgICBjLnNldEZp
ZWxkKGkpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1wcml2YXRlLWZp
ZWxkLW1lZ2Ftb3JwaGljLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtcHJpdmF0ZS1maWVsZC1t
ZWdhbW9ycGhpYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjQ0ZTcyNjVkZjMwYzAxZTk1M2I4ZDIwYmZjOGZk
MDg3MWVmNjIwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtcHJpdmF0
ZS1maWVsZC1tZWdhbW9ycGhpYy5qcwpAQCAtMCwwICsxLDI2IEBACitmdW5jdGlvbiBzaG91bGRC
ZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rp
b24gdGVzdChpKQoreworICAgIGNsYXNzIEEgeworICAgICAgICAjZmllbGQgPSAwOworICAgICAg
ICBnZXQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jZmllbGQ7CisgICAg
ICAgIH0KKyAgICAgICAgcHV0KGkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMuI2ZpZWxk
ID0gaTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBpbnN0YW5jZSA9IG5ldyBBOworICAg
IGluc3RhbmNlLnB1dChpKTsKKyAgICByZXR1cm4gaW5zdGFuY2UuZ2V0KCk7Cit9CisKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpCisgICAgc2hvdWxkQmUodGVzdChpKSwgaSk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1wcml2YXRlLWZpZWxkLXBvbHltb3JwaGljLmpz
IGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtcHJpdmF0ZS1maWVsZC1wb2x5bW9ycGhpYy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZGE5N2EyM2U3OTExMTg5YzI4YzYxYjRkN2Y0MTE4MzA3ZDE0NGQ1Ci0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtcHJpdmF0ZS1maWVsZC1wb2x5bW9ycGhp
Yy5qcwpAQCAtMCwwICsxLDQxIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVk
KSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gdGVzdChpKQoreworICAg
IGNsYXNzIEEgeworICAgICAgICAjZmllbGQgPSAwOworICAgICAgICBwdXQoaSkKKyAgICAgICAg
eworICAgICAgICAgICAgdGhpcy4jZmllbGQgPSBpOworICAgICAgICB9CisgICAgICAgIGdldCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNmaWVsZDsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBub0lubGluZShBLnByb3RvdHlwZS5nZXQpOworICAgIG5vSW5saW5lKEEucHJv
dG90eXBlLnB1dCk7CisgICAgcmV0dXJuIG5ldyBBOworfQorCitsZXQgdGVzdDAgPSB0ZXN0KDAp
OworbGV0IHRlc3QxID0gdGVzdCgxKTsKK2xldCB0ZXN0MiA9IHRlc3QoMik7CitsZXQgdGVzdDMg
PSB0ZXN0KDMpOworbGV0IHRlc3Q0ID0gdGVzdCg0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAx
ZTU7ICsraSkgeworICAgIHRlc3QwLnB1dChpICsgMCk7CisgICAgc2hvdWxkQmUodGVzdDAuZ2V0
KCksIGkgKyAwKTsKKyAgICB0ZXN0MS5wdXQoaSArIDEpOworICAgIHNob3VsZEJlKHRlc3QxLmdl
dCgpLCBpICsgMSk7CisgICAgdGVzdDIucHV0KGkgKyAyKTsKKyAgICBzaG91bGRCZSh0ZXN0Mi5n
ZXQoKSwgaSArIDIpOworICAgIHRlc3QzLnB1dChpICsgMyk7CisgICAgc2hvdWxkQmUodGVzdDMu
Z2V0KCksIGkgKyAzKTsKKyAgICB0ZXN0NC5wdXQoaSArIDQpOworICAgIHNob3VsZEJlKHRlc3Q0
LmdldCgpLCBpICsgNCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtYnktdmFs
LXBvbHltb3JwaGljLXByb3BlcnRpZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtYnktdmFsLXBv
bHltb3JwaGljLXByb3BlcnRpZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWZkZjdiZjhiZjNmM2JhZWM3OGQ3
OTcwOTFjYjJiNDI1OWQwOGQ2ZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1
dC1ieS12YWwtcG9seW1vcnBoaWMtcHJvcGVydGllcy5qcwpAQCAtMCwwICsxLDIzIEBACitmdW5j
dGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhw
ZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsK
K30KKworZnVuY3Rpb24gdGVzdChvYmplY3QsIG5hbWUsIHZhbHVlKQoreworICAgIG9iamVjdFtu
YW1lXSA9IHZhbHVlOworfQorbm9JbmxpbmUodGVzdCk7CisKK3ZhciBhcnJheSA9IFsgMCwgMSwg
MiBdOworYXJyYXkuaGVsbG8gPSA0MjsKK2FycmF5LndvcmxkID0gNDQ7CisKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMWU2OyArK2kpIHsKKyAgICB0ZXN0KGFycmF5LCAiaGVsbG8iLCBpKTsKKyAgICBz
aG91bGRCZShhcnJheS5oZWxsbywgaSk7CisgICAgdGVzdChhcnJheSwgIndvcmxkIiwgaSk7Cisg
ICAgc2hvdWxkQmUoYXJyYXkud29ybGQsIGkpOworICAgIHRlc3QoYXJyYXksIDAsIGkpOworICAg
IHNob3VsZEJlKGFycmF5WzBdLCBpKTsKK30K
</data>
<flag name="review"
          id="459658"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>