<?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>222342</bug_id>
          
          <creation_ts>2021-02-23 20:47:12 -0800</creation_ts>
          <short_desc>Remove RemoteCommandListenerIOS</short_desc>
          <delta_ts>2021-03-03 21:59:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</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="Jean-Yves Avenard [:jya]">jean-yves.avenard</reporter>
          <assigned_to name="Jean-Yves Avenard [:jya]">jean-yves.avenard</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1732775</commentid>
    <comment_count>0</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-02-23 20:47:12 -0800</bug_when>
    <thetext>Task:
Remove RemoteCommandListenerIOS in favour of RemoteCommandListenerMac to be renamed RemoteCommandListenerCocoa.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733205</commentid>
    <comment_count>1</comment_count>
      <attachid>421499</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-02-24 21:47:14 -0800</bug_when>
    <thetext>Created attachment 421499
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733648</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-25 19:50:03 -0800</bug_when>
    <thetext>&lt;rdar://problem/74773837&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735601</commentid>
    <comment_count>3</comment_count>
      <attachid>421499</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-03-03 16:38:57 -0800</bug_when>
    <thetext>Comment on attachment 421499
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=421499&amp;action=review

&gt; Source/WebCore/ChangeLog:5
&gt; +

Please add the Radar url here.

&gt; Source/WebCore/platform/cocoa/RemoteCommandListenerCocoa.h:42
&gt; +protected:

Can this be private?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735617</commentid>
    <comment_count>4</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-03-03 17:28:34 -0800</bug_when>
    <thetext>It can be private, but all I did is rename the file, there wasn&apos;t any change to it. will do</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735618</commentid>
    <comment_count>5</comment_count>
      <attachid>422166</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-03-03 17:30:32 -0800</bug_when>
    <thetext>Created attachment 422166
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735678</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-03 21:59:30 -0800</bug_when>
    <thetext>Committed r273873: &lt;https://commits.webkit.org/r273873&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 422166.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421499</attachid>
            <date>2021-02-24 21:47:14 -0800</date>
            <delta_ts>2021-03-03 17:30:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222342-20210225164713.patch</filename>
            <type>text/plain</type>
            <size>51674</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2YxNDkwNTQxODc1ODNm
YzFkYmIwN2YxNWQ1YmUyNzg3NDUwM2NmMi4uZTMxZWE0ZmM1OWE2ZjBiMjAzNmY0NDYyYzM5YTBl
NjVmYzMxMjA2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTAyLTI0ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFJlbW90ZUNv
bW1hbmRMaXN0ZW5lcklPUyBpbiBmYXZvciBvZiBhIGNvbW1vbiBSZW1vdGVDb21tYW5kTGlzdGVu
ZXJDb2NvYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIyMzQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhlcmUgaXMgbm8gY2hhbmdlIGluIGJlaGF2aW9yIHdpdGggdGhpcyBjb21taXQuCisKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVyOjpyZXNldENyZWF0aW9u
RnVuY3Rpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1JlbW90ZUNvbW1hbmRMaXN0ZW5l
ckNvY29hLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3Rl
Q29tbWFuZExpc3RlbmVyTWFjLmguCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUmVtb3RlQ29t
bWFuZExpc3RlbmVyQ29jb2EubW06IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tLgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3RlQ29tbWFuZExpc3RlbmVyQ29jb2E6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVDb21tYW5kTGlzdGVuZXJDb2NvYTo6ZGVmYXVsdENvbW1hbmRzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hOjp1cGRhdGVTdXBwb3J0ZWRDb21tYW5kcyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYTo6UmVtb3RlQ29t
bWFuZExpc3RlbmVyQ29jb2EpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFuZExpc3Rl
bmVyQ29jb2E6On5SZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYSk6CisgICAgICAgICogcGxhdGZv
cm0vaW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW06IFJlbW92ZWQuCisKIDIwMjEt
MDItMjMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFJl
ZHVjZSB1c2Ugb2YgcmV0YWluL3JlbGVhc2UgaW4gV0FLV2luZG93IGFuZCByZW1vdmUgdW5uZWVk
ZWQgbWV0aG9kcyBmcm9tIHRoYXQgY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDVl
ZTUzOWZlZGI0OTUzNWEzZTJiZDcxZDdiZjk1MWFkZmE5ZGI1NWMuLmQzODVhMjI2ZDcwM2I4N2Mw
ZTkxNTVkZDg4NzNkYWM3OGU0ZmFjYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMjUx
LDYgKzI1MSw3IEBAIHBsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDdXN0b21EYXRhQ29jb2EubW0K
IHBsYXRmb3JtL2NvY29hL1BsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tCiBwbGF0Zm9ybS9jb2Nv
YS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQogcGxhdGZvcm0vY29jb2EvUG93
ZXJTb3VyY2VOb3RpZmllci5tbQorcGxhdGZvcm0vY29jb2EvUmVtb3RlQ29tbWFuZExpc3RlbmVy
Q29jb2EubW0KIHBsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1t
CiBwbGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5tbQogcGxhdGZvcm0vY29jb2Ev
U2hhcmVkQnVmZmVyQ29jb2EubW0KQEAgLTQ1Miw3ICs0NTMsNiBAQCBwbGF0Zm9ybS9pb3MvUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2lvcy9QbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2lvcy9QcmV2
aWV3Q29udmVydGVySU9TLm1tCiBwbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCi1wbGF0Zm9ybS9p
b3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tCiBwbGF0Zm9ybS9pb3MvU2Nyb2xsQW5pbWF0
b3JJT1MubW0KIHBsYXRmb3JtL2lvcy9TY3JvbGxWaWV3SU9TLm1tCiBwbGF0Zm9ybS9pb3MvU2Ny
b2xsYmFyVGhlbWVJT1MubW0KQEAgLTUwMCw3ICs1MDAsNiBAQCBwbGF0Zm9ybS9tYWMvUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tIEBuby11bmlmeQogcGxhdGZvcm0vbWFjL1BsdWdpbkJs
b2NrbGlzdC5tbQogcGxhdGZvcm0vbWFjL1Bvd2VyT2JzZXJ2ZXJNYWMuY3BwCiBwbGF0Zm9ybS9t
YWMvUHVibGljU3VmZml4TWFjLm1tCi1wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVy
TWFjLm1tCiBwbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLm1tCiBwbGF0Zm9ybS9tYWMv
U2Nyb2xsQW5pbWF0b3JNYWMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQ29udHJv
bGxlci5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDRhMTg3ZjlmNGZlZTFkN2E3ZmQ3NDFjNTYwMmExNjYzZDY2YjBkNzUuLjRj
MWFjZTIwNzUwNGJlNGI0OTkzYjAxNzk2OTQyOGRlYjY3NmMxMjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0MzMsNiArMTQz
Myw3IEBACiAJCTUxMEQ0QTM3MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTMx
MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTBENEEzODEwMzE2NUVFMDA0OUVB
NTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEzMjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTExMEZDRkMxRTAzNjQxRDAwNkY4RDBCIC8qIElEQkN1cnNvclJlY29y
ZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExMEZD
RkIxRTAzNjJBNTAwNkY4RDBCIC8qIElEQkN1cnNvclJlY29yZC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUxMTdGMzBFMjVFNjEwMjAwMDJBOUYx
RSAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExN0YzMEMyNUU2MTAxRjAwMkE5RjFFIC8qIFJlbW90
ZUNvbW1hbmRMaXN0ZW5lckNvY29hLmggKi87IH07CiAJCTUxMUVDMTI4MUM1MEFBQ0EwMDMyRjk4
MyAvKiBJREJTZXJpYWxpemF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTFFQzEyNjFDNTBBQTU3MDAzMkY5ODMgLyogSURCU2VyaWFsaXphdGlv
bi5oICovOyB9OwogCQk1MTFFQzEyQzFDNTBBQkJGMDAzMkY5ODMgLyogU1FMaXRlSURCVHJhbnNh
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
MUVDMTJBMUM1MEFCQkEwMDMyRjk4MyAvKiBTUUxpdGVJREJUcmFuc2FjdGlvbi5oICovOyB9Owog
CQk1MTFFQzEzMDFDNTBBQkY1MDAzMkY5ODMgLyogU1FMaXRlSURCQ3Vyc29yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEyRTFDNTBBQkVDMDAz
MkY5ODMgLyogU1FMaXRlSURCQ3Vyc29yLmggKi87IH07CkBAIC00MzIyLDcgKzQzMjMsNiBAQAog
CQlDRDgzRDM2MjIxMTIyQTIxMDA3NkUxMUMgLyogRGVmZXJyYWJsZVRhc2suaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODNEMzVBMjExMTEwODIwMDc2
RTExQyAvKiBEZWZlcnJhYmxlVGFzay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUNEOEE3QkJCMTk3NzM1RkUwMENCRDY0MyAvKiBBdWRpb1NvdXJj
ZVByb3ZpZGVyQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEOEE3QkI5MTk3NzM1RkUwMENCRDY0MyAvKiBBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQy5tbSAqLzsgfTsKIAkJQ0Q4QTdCQkMxOTc3MzVGRTAwQ0JENjQzIC8qIEF1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDhBN0JCQTE5NzczNUZFMDBDQkQ2NDMgLyogQXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQlDRDhBQ0E4OTFEMjM3QUEyMDBFQ0M1OUUgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFj
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDhBQ0E4
NzFEMjM3QUEyMDBFQ0M1OUUgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmggKi87IH07CiAJ
CUNEOEFDQThGMUQyMzk3MTkwMEVDQzU5RSAvKiBNZWRpYVJlbW90ZVNvZnRMaW5rLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDhBQ0E4RDFEMjM5NzE5
MDBFQ0M1OUUgLyogTWVkaWFSZW1vdGVTb2Z0TGluay5oICovOyB9OwogCQlDRDhCNUE0MjE4MEQx
NDlBMDA4QjhFNjUgLyogVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDhCNUE0MDE4MEQx
NDlBMDA4QjhFNjUgLyogVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gKi87
IH07CiAJCUNEOEI1QTQzMTgwRDE0OUEwMDhCOEU2NSAvKiBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0Q4QjVBNDExODBEMTQ5QTAwOEI4RTY1IC8qIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmggKi87IH07CkBAIC04NTY3LDYgKzg1NjcsOCBAQAogCQk1MTBENEEzMTEw
MzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTBENEEzMjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxl
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvY2tldFN0cmVhbUhh
bmRsZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTEwRkNGQjFFMDM2
MkE1MDA2RjhEMEIgLyogSURCQ3Vyc29yUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IElEQkN1cnNvclJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MTE3RjMwQTI1RTYxMDFFMDAyQTlGMUUgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2Eu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVDb21tYW5k
TGlzdGVuZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTExN0YzMEMy
NUU2MTAxRjAwMkE5RjFFIC8qIFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMUVDMTI1MUM1MEFBNTcwMDMyRjk4MyAvKiBJ
REJTZXJpYWxpemF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IElEQlNlcmlhbGl6YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTFF
QzEyNjFDNTBBQTU3MDAzMkY5ODMgLyogSURCU2VyaWFsaXphdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJREJTZXJpYWxpemF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxMUVDMTI5MUM1MEFCQkEwMDMyRjk4MyAvKiBTUUxpdGVJREJUcmFuc2Fj
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTUUxpdGVJREJU
cmFuc2FjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05Njk2LDcgKzk2
OTgsNiBAQAogCQk2NTZEMzcyQjBBREJBNURFMDBBNDU1NEQgLyogTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NkQzNzMw
MEFEQkE1REUwMEE0NTU0RCAvKiBTdWJyZXNvdXJjZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3VicmVzb3VyY2VMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNjU4NDM2ODUwQUUwMUI3NDAwRTUzNzUzIC8qIEZyYW1lTG9hZFJlcXVlc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lTG9hZFJlcXVlc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjU5MzkyMzkwOUFFNDM1QzAwMkM1MzFGIC8q
IFVSTE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVUkxN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1OUE3RDEyMEI2REI0RDkwMDEx
NTVCMyAvKiBTdWJzdGl0dXRlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3Vic3RpdHV0ZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU5RERD
ODAwOUUxOThCQTAwMUJGM0M2IC8qIEpTRG9jdW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9jdW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2NTlEREM4MTA5RTE5OEJBMDAxQkYzQzYgLyogSlNEb2N1bWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEb2N1bWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTQ4MDksOCArMTQ4MTAsNiBAQAogCQlDRDg3NUE3NTI0MTFCNzk4MDBC
MDlGNTggLyogTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
TWVkaWFTZXNzaW9uSGVscGVySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
RDhBN0JCOTE5NzczNUZFMDBDQkQ2NDMgLyogQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdWRpb1NvdXJjZVByb3Zp
ZGVyQVZGT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4QTdCQkExOTc3
MzVGRTAwQ0JENjQzIC8qIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNEOEFDQTg2MUQyMzdBQTIwMEVDQzU5RSAvKiBSZW1v
dGVDb21tYW5kTGlzdGVuZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUNEOEFDQTg3MUQyMzdBQTIwMEVDQzU5RSAvKiBSZW1vdGVDb21tYW5kTGlzdGVu
ZXJNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ29tbWFuZExp
c3RlbmVyTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOEFDQThDMUQyMzk3
MTkwMEVDQzU5RSAvKiBNZWRpYVJlbW90ZVNvZnRMaW5rLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFSZW1vdGVTb2Z0TGluay5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0Q4QUNBOEQxRDIzOTcxOTAwRUNDNTlFIC8qIE1lZGlhUmVtb3RlU29m
dExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFSZW1vdGVTb2Z0
TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDhCMzFBMTIzNzlEQzgzMDA4
ODNGREUgLyogV2ViVmlkZW9Db250YWluZXJMYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJWaWRl
b0NvbnRhaW5lckxheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTA5NCw4
ICsxNTA5Myw2IEBACiAJCUNERjk5NEZGMjRDMjgxMzYwMDJFQTA2MiAvKiBWaWRlb1RyYWNrUHJp
dmF0ZVdlYk0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RGOTk1MDAyNEMyODE0OTAwMkVBMDYy
IC8qIEF1ZGlvVHJhY2tQcml2YXRlV2ViTS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1RyYWNrUHJp
dmF0ZVdlYk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RGOTk1MDEyNEMyODE0
OTAwMkVBMDYyIC8qIEF1ZGlvVHJhY2tQcml2YXRlV2ViTS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBBdWRpb1RyYWNrUHJpdmF0ZVdlYk0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlDREZDMzYwMTE4Q0E2MTYzMDAyNkU1NkYgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklP
Uy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDREZDMzYwMjE4Q0E2MTYzMDAyNkU1
NkYgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDREZDMzYwMzE4Q0E2MUMyMDAyNkU1NkYgLyogUmVtb3RlQ29t
bWFuZExpc3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
bW90ZUNvbW1hbmRMaXN0ZW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNE
RkMzNjA0MThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQ29tbWFuZExpc3RlbmVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERkQ3OEJBMjI0MkM0RkUwMEQ3MjA4QSAvKiBKU1Rl
eHRUcmFja0N1ZUdlbmVyaWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNU
ZXh0VHJhY2tDdWVHZW5lcmljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjAx
NCw4ICsyMjAxMSw2IEBACiAJCQkJNDYzNDU5MkIxQUMyMjcxMDAwRUNCNzFDIC8qIFBvd2VyT2Jz
ZXJ2ZXJNYWMuY3BwICovLAogCQkJCTQ2REJCNjRFMUFCOEM5NkYwMEQ5QTgxMyAvKiBQb3dlck9i
c2VydmVyTWFjLmggKi8sCiAJCQkJMDA4MUZFRkUxNkIwQTJCNjAwOEFBQTdBIC8qIFB1YmxpY1N1
ZmZpeE1hYy5tbSAqLywKLQkJCQlDRDhBQ0E4NzFEMjM3QUEyMDBFQ0M1OUUgLyogUmVtb3RlQ29t
bWFuZExpc3RlbmVyTWFjLmggKi8sCi0JCQkJQ0Q4QUNBODYxRDIzN0FBMjAwRUNDNTlFIC8qIFJl
bW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbSAqLywKIAkJCQlCQ0FFMUZBNTEyOTM5REI3MDA0Q0Iw
MjYgLyogU2Nyb2xsQW5pbWF0b3JNYWMuaCAqLywKIAkJCQlCQzUxMTU2RDEyQjE3NDlDMDBDOTY3
NTQgLyogU2Nyb2xsQW5pbWF0b3JNYWMubW0gKi8sCiAJCQkJQkM4Qjg1M0MwRTdDN0YxMTAwQUI2
OTg0IC8qIFNjcm9sbGJhclRoZW1lTWFjLmggKi8sCkBAIC0yMjAzMSw3ICsyMjAyNiw2IEBACiAJ
CQkJQkNFNjU5RTUwRUE5MkZCMjAwN0U0NTMzIC8qIFRoZW1lTWFjLmggKi8sCiAJCQkJQkNFNjU5
RTgwRUE5MkZGQTAwN0U0NTMzIC8qIFRoZW1lTWFjLm1tICovLAogCQkJCTUxREY2RDdGMEI5MkEx
OEUwMEMyREM4NSAvKiBUaHJlYWRDaGVjay5tbSAqLywKLQkJCQk2NTkzOTIzOTA5QUU0MzVDMDAy
QzUzMUYgLyogVVJMTWFjLm1tICovLAogCQkJCTg2ODE2MEQzMTg3NjY5RTcwMDIxRTc5RCAvKiBV
c2VyQWN0aXZpdHlNYWMubW0gKi8sCiAJCQkJQTNBRjlEODQyMDMyNTZBMzAwNkNBRDA2IC8qIFVz
ZXJBZ2VudE1hYy5tbSAqLywKIAkJCQk4M0M0NUI4QjFEQzJCNjYzMDA4ODcxQkEgLyogVmFsaWRh
dGlvbkJ1YmJsZU1hYy5tbSAqLywKQEAgLTI0NTQyLDggKzI0NTM2LDYgQEAKIAkJCQlBMUMxNTA3
NzFFM0YyQjNFMDAzMkM5OEMgLyogUHJldmlld0NvbnZlcnRlcklPUy5tbSAqLywKIAkJCQlBMTVF
MzFGMTFFMENCMEFBMDA0QjM3MUMgLyogUXVpY2tMb29rLmggKi8sCiAJCQkJQTE1RTMxRjIxRTBD
QjBBQTAwNEIzNzFDIC8qIFF1aWNrTG9vay5tbSAqLywKLQkJCQlDREZDMzYwMTE4Q0E2MTYzMDAy
NkU1NkYgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLmggKi8sCi0JCQkJQ0RGQzM2MDIxOENB
NjE2MzAwMjZFNTZGIC8qIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5tbSAqLywKIAkJCQkwRjE3
NzQ3RTEzNzhCNzcxMDA5REE3NkEgLyogU2Nyb2xsQW5pbWF0b3JJT1MuaCAqLywKIAkJCQkwRjE3
NzQ3RjEzNzhCNzcyMDA5REE3NkEgLyogU2Nyb2xsQW5pbWF0b3JJT1MubW0gKi8sCiAJCQkJNDRD
OTkxODUwRjNEMUVCRTAwNTg2NjcwIC8qIFNjcm9sbGJhclRoZW1lSU9TLmggKi8sCkBAIC0yNDcw
NSw2ICsyNDY5Nyw4IEBACiAJCQkJQ0RBMjlBMEMxQ0JEOUNGRTAwOTAxQ0NGIC8qIFBsYXliYWNr
U2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tICovLAogCQkJCUNEQzc0NzAwMjRCRTI2NzkwMEMx
ODY4QiAvKiBQb3dlclNvdXJjZU5vdGlmaWVyLmggKi8sCiAJCQkJQ0RDNzQ3MDEyNEJFMjY3OTAw
QzE4NjhCIC8qIFBvd2VyU291cmNlTm90aWZpZXIubW0gKi8sCisJCQkJNTExN0YzMEMyNUU2MTAx
RjAwMkE5RjFFIC8qIFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hLmggKi8sCisJCQkJNTExN0Yz
MEEyNUU2MTAxRTAwMkE5RjFFIC8qIFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hLm1tICovLAog
CQkJCTQ2NUE4RTc4MUM4QTI0Q0UwMEU3RDNFNCAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3ND
b2NvYS5tbSAqLywKIAkJCQkwRTcwNThGMzFCQzVDQ0Q3MDA0NUE1MDcgLyogU2VhcmNoUG9wdXBN
ZW51Q29jb2EuaCAqLywKIAkJCQkwRTcwNThFRDFCQzVCQzE5MDA0NUE1MDcgLyogU2VhcmNoUG9w
dXBNZW51Q29jb2EubW0gKi8sCkBAIC0zNDM2NCw3ICszNDM1OCw3IEBACiAJCQkJNTFCOTE0MTEx
RkQyNzgyRDAwRUUyODU5IC8qIFJlZ2lzdHJhdGlvblN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNTc4RjQzRjFERTBCNjMwMDAzREZDNkEgLyogUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RGQzM2MDYxOENBNjFDMjAwMjZFNTZGIC8qIFJlbW90ZUNvbW1h
bmRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0Q4QUNBODkxRDIzN0FBMjAwRUNDNTlF
IC8qIFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTExN0Yz
MEUyNUU2MTAyMDAwMkE5RjFFIC8qIFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0NkI5NTE5OTIwN0Q2MzREMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5QTIwN0Q2MzU0MDBBN0QyREQgLyogUmVtb3Rl
RnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdCOTA0MTcwMjU1MDExNDIwMDZFRUI4QyAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcAppbmRleCAw
MmI1ZTdkYTMwMTY1NGU3MjMxNWE2NjczMjlkMGQxMzQwNjJhM2ZkLi5kMzhiZmNjMGJiZDEzOWNh
OGVlMmIyYzIzMWVjZWNhOTY0ZDQ3Mjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKQEAgLTI2LDEyICsyNiw4IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVtb3RlQ29tbWFuZExpc3RlbmVyLmgiCiAKLSNpZiBQ
TEFURk9STShNQUMpCi0jaW5jbHVkZSAiUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmgiCi0jZW5k
aWYKLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0jaW5jbHVkZSAiUmVtb3RlQ29tbWFuZExp
c3RlbmVySU9TLmgiCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiUmVtb3RlQ29tbWFu
ZExpc3RlbmVyQ29jb2EuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MCwx
MCArNDYsOCBAQCB2b2lkIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6c2V0Q3JlYXRpb25GdW5jdGlv
bihDcmVhdGlvbkZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB2b2lkIFJlbW90ZUNvbW1hbmRMaXN0ZW5l
cjo6cmVzZXRDcmVhdGlvbkZ1bmN0aW9uKCkKIHsKICAgICByZW1vdGVDb21tYW5kTGlzdGVuZXJD
cmVhdGlvbkZ1bmN0aW9uKCkgPSBbXSAoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JiBjbGll
bnQpIHsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgICAgIHJldHVybiBSZW1vdGVDb21tYW5kTGlz
dGVuZXJNYWM6OmNyZWF0ZShjbGllbnQpOwotI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAg
ICAgICAgcmV0dXJuIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUzo6Y3JlYXRlKGNsaWVudCk7Cisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIHJldHVybiBSZW1vdGVDb21tYW5kTGlzdGVuZXJD
b2NvYTo6Y3JlYXRlKGNsaWVudCk7CiAjZWxzZQogICAgICAgICByZXR1cm4gUmVtb3RlQ29tbWFu
ZExpc3RlbmVyOjpjcmVhdGUoY2xpZW50KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvUmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2EuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1JlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTY2OTVhMWU1ZWQ5ZTUzZTViZmNkZmM5MWRiMmJiMTAwNjU3NjFiYwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1JlbW90ZUNvbW1hbmRM
aXN0ZW5lckNvY29hLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCIKKworI2lmIFBMQVRG
T1JNKENPQ09BKQorCisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBSZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYSA6IHB1YmxpYyBSZW1vdGVD
b21tYW5kTGlzdGVuZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVDb21tYW5kTGlzdGVu
ZXJDb2NvYT4geworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ29t
bWFuZExpc3RlbmVyQ29jb2E+IGNyZWF0ZShSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmKTsK
KyAgICBSZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYShSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGll
bnQmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYSgpOworCitwcm90
ZWN0ZWQ6CisgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRDb21tYW5kcygpIGZpbmFsOworCisgICAg
dm9pZCogbV9jb21tYW5kSGFuZGxlciB7IG51bGxwdHIgfTsKKworICAgIGNvbnN0IFJlbW90ZUNv
bW1hbmRzU2V0JiBkZWZhdWx0Q29tbWFuZHMoKTsKKyAgICBSZW1vdGVDb21tYW5kc1NldCBtX2N1
cnJlbnRDb21tYW5kczsKKyAgICBib29sIG1fc3VwcG9ydHNTZWVraW5nIHsgZmFsc2UgfTsKK307
CisgICAgCit9CisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1JlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhlNzk2NGFjMzc2ZDMwZTEzMzE4MzRjYjk4Yzg0MGU1NjJiYWEzOGMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SZW1vdGVDb21t
YW5kTGlzdGVuZXJDb2NvYS5tbQpAQCAtMCwwICsxLDIyOSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2Eu
aCIKKworI2lmIFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0
IDx3dGYvTWFpblRocmVhZC5oPgorCisjaW1wb3J0ICJNZWRpYVJlbW90ZVNvZnRMaW5rLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIE9wdGlvbmFsPE1STWVkaWFSZW1vdGVDb21t
YW5kPiBtZWRpYVJlbW90ZUNvbW1hbmRGb3JQbGF0Zm9ybUNvbW1hbmQoUGxhdGZvcm1NZWRpYVNl
c3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQoreworICAgIHN0YXRpYyBj
b25zdCBhdXRvIGNvbW1hbmRNYXAgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICB1
c2luZyBDb21tYW5kVG9BY3Rpb25NYXAgPSBIYXNoTWFwPFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpS
ZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIE1STWVkaWFSZW1vdGVDb21tYW5kLCBXVEY6OkludEhh
c2g8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZT4sIFdURjo6
U3Ryb25nRW51bUhhc2hUcmFpdHM8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xD
b21tYW5kVHlwZT4+OworCisgICAgICAgIHJldHVybiBDb21tYW5kVG9BY3Rpb25NYXAgeworICAg
ICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheUNvbW1hbmQsIE1STWVkaWFSZW1v
dGVDb21tYW5kUGxheSB9LAorICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGF1
c2VDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFBhdXNlIH0sCisgICAgICAgICAgICB7IFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpTdG9wQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRTdG9w
IH0sCisgICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpUb2dnbGVQbGF5UGF1c2VD
b21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFRvZ2dsZVBsYXlQYXVzZSB9LAorICAgICAgICAg
ICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nQmFja3dhcmRDb21tYW5kLCBN
Uk1lZGlhUmVtb3RlQ29tbWFuZEJlZ2luUmV3aW5kIH0sCisgICAgICAgICAgICB7IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nQmFja3dhcmRDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29t
bWFuZEVuZFJld2luZCB9LAorICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVn
aW5TZWVraW5nRm9yd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kQmVnaW5GYXN0Rm9y
d2FyZCB9LAorICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kU2Vla2luZ0Zv
cndhcmRDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZEVuZEZhc3RGb3J3YXJkIH0sCisgICAg
ICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29t
bWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRTZWVrVG9QbGF5YmFja1Bvc2l0aW9uIH0sCisgICAg
ICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwRm9yd2FyZENvbW1hbmQsIE1STWVk
aWFSZW1vdGVDb21tYW5kU2tpcEZvcndhcmQgfSwKKyAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRp
YVNlc3Npb246OlNraXBCYWNrd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEJh
Y2t3YXJkIH0sCisgICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOZXh0VHJhY2tD
b21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZE5leHRUcmFjayB9LAorICAgICAgICAgICAgeyBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UHJldmlvdXNUcmFja0NvbW1hbmQsIE1STWVkaWFSZW1vdGVD
b21tYW5kUHJldmlvdXNUcmFjayB9LAorICAgICAgICB9OworICAgIH0oKSk7CisKKyAgICBhdXRv
IGl0ID0gY29tbWFuZE1hcC5nZXQoKS5maW5kKGNvbW1hbmQpOworICAgIGlmIChpdCAhPSBjb21t
YW5kTWFwLmdldCgpLmVuZCgpKQorICAgICAgICByZXR1cm4geyBpdC0+dmFsdWUgfTsKKworICAg
IHJldHVybiB7IH07Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDb21tYW5kTGlzdGVuZXJD
b2NvYT4gUmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2E6OmNyZWF0ZShSZW1vdGVDb21tYW5kTGlz
dGVuZXJDbGllbnQmIGNsaWVudCkKK3sKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVDb21t
YW5kTGlzdGVuZXJDb2NvYT4oY2xpZW50KTsKK30KKworY29uc3QgUmVtb3RlQ29tbWFuZExpc3Rl
bmVyOjpSZW1vdGVDb21tYW5kc1NldCYgUmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2E6OmRlZmF1
bHRDb21tYW5kcygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlbW90ZUNvbW1hbmRz
U2V0PiBjb21tYW5kcyhzdGQ6OmluaXRpYWxpemVyX2xpc3Q8UGxhdGZvcm1NZWRpYVNlc3Npb246
OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZT4geworICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6UGxheUNvbW1hbmQsCisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQYXVzZUNvbW1h
bmQsCisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpUb2dnbGVQbGF5UGF1c2VDb21tYW5k
LAorICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nRm9yd2FyZENvbW1h
bmQsCisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nRm9yd2FyZENvbW1h
bmQsCisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdpblNlZWtpbmdCYWNrd2FyZENv
bW1hbmQsCisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nQmFja3dhcmRD
b21tYW5kLAorICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQb3Np
dGlvbkNvbW1hbmQsCisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwRm9yd2FyZENv
bW1hbmQsCisgICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwQmFja3dhcmRDb21tYW5k
LAorICAgIH0pOworCisgICAgcmV0dXJuIGNvbW1hbmRzOworfQorCitzdGF0aWMgYm9vbCBpc1Nl
ZWtDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUg
Y29tbWFuZCkKK3sKKyAgICByZXR1cm4gY29tbWFuZCA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
U2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQKKyAgICAgICAgfHwgY29tbWFuZCA9PSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEZvcndhcmRDb21tYW5kCisgICAgICAgIHx8IGNvbW1hbmQg
PT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBCYWNrd2FyZENvbW1hbmQKKyAgICAgICAgfHwg
Y29tbWFuZCA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nRm9yd2FyZENvbW1h
bmQKKyAgICAgICAgfHwgY29tbWFuZCA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVr
aW5nQmFja3dhcmRDb21tYW5kOworfQorCit2b2lkIFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29h
Ojp1cGRhdGVTdXBwb3J0ZWRDb21tYW5kcygpCit7CisgICAgaWYgKCFpc01lZGlhUmVtb3RlRnJh
bWV3b3JrQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIHN1cHBvcnRl
ZENvbW1hbmRzID0gIW1fcmVnaXN0ZXJlZENvbW1hbmRzLmlzRW1wdHkoKSA/IG1fcmVnaXN0ZXJl
ZENvbW1hbmRzIDogZGVmYXVsdENvbW1hbmRzKCk7CisgICAgaWYgKG1fY3VycmVudENvbW1hbmRz
ID09IHN1cHBvcnRlZENvbW1hbmRzKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGNvbW1h
bmRJbmZvQXJyYXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHN1cHBvcnRlZENvbW1hbmRzLnNpemUoKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykp
OworICAgIGZvciAoYXV0byBwbGF0Zm9ybUNvbW1hbmQgOiBzdXBwb3J0ZWRDb21tYW5kcykgewor
ICAgICAgICBpZiAoaXNTZWVrQ29tbWFuZChwbGF0Zm9ybUNvbW1hbmQpICYmICFtX3N1cHBvcnRz
U2Vla2luZykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8gY29tbWFuZCA9
IG1lZGlhUmVtb3RlQ29tbWFuZEZvclBsYXRmb3JtQ29tbWFuZChwbGF0Zm9ybUNvbW1hbmQpOwor
ICAgICAgICBBU1NFUlQoY29tbWFuZCk7CisgICAgICAgIGlmICghY29tbWFuZCkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8gY29tbWFuZEluZm8gPSBhZG9wdENGKE1STWVk
aWFSZW1vdGVDb21tYW5kSW5mb0NyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0KSk7CisgICAgICAg
IE1STWVkaWFSZW1vdGVDb21tYW5kSW5mb1NldENvbW1hbmQoY29tbWFuZEluZm8uZ2V0KCksIGNv
bW1hbmQudmFsdWUoKSk7CisgICAgICAgIE1STWVkaWFSZW1vdGVDb21tYW5kSW5mb1NldEVuYWJs
ZWQoY29tbWFuZEluZm8uZ2V0KCksIHRydWUpOworICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUo
Y29tbWFuZEluZm9BcnJheS5nZXQoKSwgY29tbWFuZEluZm8uZ2V0KCkpOworICAgIH0KKworICAg
IE1STWVkaWFSZW1vdGVTZXRTdXBwb3J0ZWRDb21tYW5kcyhjb21tYW5kSW5mb0FycmF5LmdldCgp
LCBNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4oKSwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAg
bV9jdXJyZW50Q29tbWFuZHMgPSBzdXBwb3J0ZWRDb21tYW5kczsKK30KKworUmVtb3RlQ29tbWFu
ZExpc3RlbmVyQ29jb2E6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hKFJlbW90ZUNvbW1hbmRM
aXN0ZW5lckNsaWVudCYgY2xpZW50KQorICAgIDogUmVtb3RlQ29tbWFuZExpc3RlbmVyKGNsaWVu
dCkKK3sKKyAgICBpZiAoIWlzTWVkaWFSZW1vdGVGcmFtZXdvcmtBdmFpbGFibGUoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgc2NoZWR1bGVTdXBwb3J0ZWRDb21tYW5kc1VwZGF0ZSgpOworCisg
ICAgYXV0byB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKKyAgICBtX2NvbW1hbmRIYW5k
bGVyID0gTVJNZWRpYVJlbW90ZUFkZEFzeW5jQ29tbWFuZEhhbmRsZXJCbG9jayheKE1STWVkaWFS
ZW1vdGVDb21tYW5kIGNvbW1hbmQsIENGRGljdGlvbmFyeVJlZiBvcHRpb25zLCB2b2lkKF5jb21w
bGV0aW9uKShDRkFycmF5UmVmKSkgeworCisgICAgICAgIExPRyhNZWRpYSwgIlJlbW90ZUNvbW1h
bmRMaXN0ZW5lckNvY29hOjpSZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYSAtIHJlY2VpdmVkIGNv
bW1hbmQgJXUiLCBjb21tYW5kKTsKKworICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVt
b3RlQ29udHJvbENvbW1hbmRUeXBlIHBsYXRmb3JtQ29tbWFuZCB7IFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpOb0NvbW1hbmQgfTsKKyAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNv
bW1hbmRBcmd1bWVudCBhcmd1bWVudDsKKyAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRIYW5k
bGVyU3RhdHVzIHN0YXR1cyA9IE1STWVkaWFSZW1vdGVDb21tYW5kSGFuZGxlclN0YXR1c1N1Y2Nl
c3M7CisKKyAgICAgICAgc3dpdGNoIChjb21tYW5kKSB7CisgICAgICAgIGNhc2UgTVJNZWRpYVJl
bW90ZUNvbW1hbmRQbGF5OgorICAgICAgICAgICAgcGxhdGZvcm1Db21tYW5kID0gUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlBsYXlDb21tYW5kOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgTVJNZWRpYVJlbW90ZUNvbW1hbmRQYXVzZToKKyAgICAgICAgICAgIHBsYXRmb3JtQ29tbWFu
ZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQYXVzZUNvbW1hbmQ7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBNUk1lZGlhUmVtb3RlQ29tbWFuZFN0b3A6CisgICAgICAgICAgICBw
bGF0Zm9ybUNvbW1hbmQgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U3RvcENvbW1hbmQ7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNUk1lZGlhUmVtb3RlQ29tbWFuZFRvZ2dsZVBs
YXlQYXVzZToKKyAgICAgICAgICAgIHBsYXRmb3JtQ29tbWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpUb2dnbGVQbGF5UGF1c2VDb21tYW5kOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgTVJNZWRpYVJlbW90ZUNvbW1hbmRCZWdpbkZhc3RGb3J3YXJkOgorICAgICAgICAgICAg
cGxhdGZvcm1Db21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkJlZ2luU2Vla2luZ0Zvcndh
cmRDb21tYW5kOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTVJNZWRpYVJlbW90
ZUNvbW1hbmRFbmRGYXN0Rm9yd2FyZDoKKyAgICAgICAgICAgIHBsYXRmb3JtQ29tbWFuZCA9IFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQ7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBNUk1lZGlhUmVtb3RlQ29tbWFuZEJlZ2luUmV3aW5kOgor
ICAgICAgICAgICAgcGxhdGZvcm1Db21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkJlZ2lu
U2Vla2luZ0JhY2t3YXJkQ29tbWFuZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IE1STWVkaWFSZW1vdGVDb21tYW5kRW5kUmV3aW5kOgorICAgICAgICAgICAgcGxhdGZvcm1Db21t
YW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNlZWtpbmdCYWNrd2FyZENvbW1hbmQ7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNUk1lZGlhUmVtb3RlQ29tbWFuZFNlZWtU
b1BsYXliYWNrUG9zaXRpb246IHsKKyAgICAgICAgICAgIGlmICghbV9zdXBwb3J0c1NlZWtpbmcp
IHsKKyAgICAgICAgICAgICAgICBzdGF0dXMgPSBNUk1lZGlhUmVtb3RlQ29tbWFuZEhhbmRsZXJT
dGF0dXNDb21tYW5kRmFpbGVkOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBDRk51bWJlclJlZiBwb3NpdGlvblJlZiA9IHN0YXRpY19jYXN0PENG
TnVtYmVyUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShvcHRpb25zLCBrTVJNZWRpYVJlbW90ZU9w
dGlvblBsYXliYWNrUG9zaXRpb24pKTsKKyAgICAgICAgICAgIGlmICghcG9zaXRpb25SZWYpIHsK
KyAgICAgICAgICAgICAgICBzdGF0dXMgPSBNUk1lZGlhUmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0
dXNDb21tYW5kRmFpbGVkOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBkb3VibGUgcG9zaXRpb24gPSAwOworICAgICAgICAgICAgQ0ZOdW1iZXJH
ZXRWYWx1ZShwb3NpdGlvblJlZiwga0NGTnVtYmVyRG91YmxlVHlwZSwgJnBvc2l0aW9uKTsKKyAg
ICAgICAgICAgIGFyZ3VtZW50LnRpbWUgPSBwb3NpdGlvbjsKKyAgICAgICAgICAgIHBsYXRmb3Jt
Q29tbWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29t
bWFuZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgTVJNZWRp
YVJlbW90ZUNvbW1hbmRTa2lwRm9yd2FyZDoKKyAgICAgICAgY2FzZSBNUk1lZGlhUmVtb3RlQ29t
bWFuZFNraXBCYWNrd2FyZDoKKyAgICAgICAgICAgIGlmICghbV9zdXBwb3J0c1NlZWtpbmcpIHsK
KyAgICAgICAgICAgICAgICBzdGF0dXMgPSBNUk1lZGlhUmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0
dXNDb21tYW5kRmFpbGVkOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAoYXV0byBwb3NpdGlvblJlZiA9IHN0YXRpY19jYXN0PENGTnVtYmVy
UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShvcHRpb25zLCBrTVJNZWRpYVJlbW90ZU9wdGlvblNr
aXBJbnRlcnZhbCkpKSB7CisgICAgICAgICAgICAgICAgZG91YmxlIHBvc2l0aW9uID0gMDsKKyAg
ICAgICAgICAgICAgICBDRk51bWJlckdldFZhbHVlKHBvc2l0aW9uUmVmLCBrQ0ZOdW1iZXJEb3Vi
bGVUeXBlLCAmcG9zaXRpb24pOworICAgICAgICAgICAgICAgIGFyZ3VtZW50LnRpbWUgPSBwb3Np
dGlvbjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcGxhdGZvcm1Db21tYW5kID0gKGNv
bW1hbmQgPT0gTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwRm9yd2FyZCkgPyBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6U2tpcEZvcndhcmRDb21tYW5kIDogUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBC
YWNrd2FyZENvbW1hbmQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNUk1lZGlh
UmVtb3RlQ29tbWFuZE5leHRUcmFjazoKKyAgICAgICAgICAgIHBsYXRmb3JtQ29tbWFuZCA9IFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpOZXh0VHJhY2tDb21tYW5kOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgTVJNZWRpYVJlbW90ZUNvbW1hbmRQcmV2aW91c1RyYWNrOgorICAgICAg
ICAgICAgcGxhdGZvcm1Db21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlByZXZpb3VzVHJh
Y2tDb21tYW5kOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBMT0coTWVkaWEsICJSZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYTo6UmVtb3RlQ29tbWFu
ZExpc3RlbmVyQ29jb2EgLSBjb21tYW5kICV1IG5vdCBzdXBwb3J0ZWQhIiwgY29tbWFuZCk7Cisg
ICAgICAgICAgICBzdGF0dXMgPSBNUk1lZGlhUmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0dXNDb21t
YW5kRmFpbGVkOworICAgICAgICB9OworCisgICAgICAgIGlmICh3ZWFrVGhpcyAmJiBzdGF0dXMg
IT0gTVJNZWRpYVJlbW90ZUNvbW1hbmRIYW5kbGVyU3RhdHVzQ29tbWFuZEZhaWxlZCkKKyAgICAg
ICAgICAgIHdlYWtUaGlzLT5tX2NsaWVudC5kaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQo
cGxhdGZvcm1Db21tYW5kLCBhcmd1bWVudCk7CisKKyAgICAgICAgY29tcGxldGlvbigoX19icmlk
Z2UgQ0ZBcnJheVJlZilAW0Aoc3RhdHVzKV0pOworICAgIH0pOworfQorCitSZW1vdGVDb21tYW5k
TGlzdGVuZXJDb2NvYTo6flJlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hKCkKK3sKKyAgICBpZiAo
bV9jb21tYW5kSGFuZGxlcikKKyAgICAgICAgTVJNZWRpYVJlbW90ZVJlbW92ZUNvbW1hbmRIYW5k
bGVyQmxvY2sobV9jb21tYW5kSGFuZGxlcik7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4ZDU2NTgwNTlmNWExMGRlNDBiZTU5MjQ2
NzQ3NjM2MjI3ZjlmNjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5lcklP
Uy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLQotI2lu
Y2x1ZGUgIlJlbW90ZUNvbW1hbmRMaXN0ZW5lci5oIgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUyBmaW5hbCA6IHB1YmxpYyBSZW1vdGVDb21tYW5k
TGlzdGVuZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1M+
IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNvbW1hbmRMaXN0
ZW5lcklPUz4gY3JlYXRlKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYpOwotICAgIFJlbW90
ZUNvbW1hbmRMaXN0ZW5lcklPUyhSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmKTsKLSAgICB2
aXJ0dWFsIH5SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MoKTsKLQotcHJvdGVjdGVkOgotICAgIHZv
aWQgdXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMoKSBmaW5hbDsKLQotICAgIFJldGFpblB0cjxpZD4g
bV9wbGF5VGFyZ2V0OwotICAgIFJldGFpblB0cjxpZD4gbV9wYXVzZVRhcmdldDsKLSAgICBSZXRh
aW5QdHI8aWQ+IG1fdG9nZ2xlUGxheVBhdXNlVGFyZ2V0OwotICAgIFJldGFpblB0cjxpZD4gbV9z
ZWVrRm9yd2FyZFRhcmdldDsKLSAgICBSZXRhaW5QdHI8aWQ+IG1fc2Vla0JhY2t3YXJkVGFyZ2V0
OwotICAgIFJldGFpblB0cjxpZD4gbV9zZWVrVG9UaW1lVGFyZ2V0OwotfTsKLQotfQotCi0jZW5k
aWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwZWFkOWQ2MjYzNzAyM2FlMTVmN2YyODA1YjJlOGRjMGVkZDFlZTJhLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW0KKysrIC9kZXYvbnVs
bApAQCAtMSwxNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlJlbW90ZUNvbW1hbmRMaXN0
ZW5lcklPUy5oIgotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLQotI2ltcG9ydCA8TWVkaWFQ
bGF5ZXIvTVBSZW1vdGVDb21tYW5kLmg+Ci0jaW1wb3J0IDxNZWRpYVBsYXllci9NUFJlbW90ZUNv
bW1hbmRDZW50ZXIuaD4KLSNpbXBvcnQgPE1lZGlhUGxheWVyL01QUmVtb3RlQ29tbWFuZEV2ZW50
Lmg+Ci0jaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KLQotU09GVF9MSU5LX0ZSQU1FV09SS19P
UFRJT05BTChNZWRpYVBsYXllcikKLVNPRlRfTElOS19DTEFTUyhNZWRpYVBsYXllciwgTVBSZW1v
dGVDb21tYW5kQ2VudGVyKQotU09GVF9MSU5LX0NMQVNTKE1lZGlhUGxheWVyLCBNUFNlZWtDb21t
YW5kRXZlbnQpCi1TT0ZUX0xJTktfQ0xBU1MoTWVkaWFQbGF5ZXIsIE1QQ2hhbmdlUGxheWJhY2tQ
b3NpdGlvbkNvbW1hbmRFdmVudCkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlQ29tbWFuZExpc3RlbmVySU9TPiBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1M6
OmNyZWF0ZShSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmIGNsaWVudCkKLXsKLSAgICBpZiAo
IU1lZGlhUGxheWVyTGlicmFyeSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJl
dHVybiBtYWtlVW5pcXVlPFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUz4oY2xpZW50KTsKLX0KLQot
UmVtb3RlQ29tbWFuZExpc3RlbmVySU9TOjpSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MoUmVtb3Rl
Q29tbWFuZExpc3RlbmVyQ2xpZW50JiBjbGllbnQpCi0gICAgOiBSZW1vdGVDb21tYW5kTGlzdGVu
ZXIoY2xpZW50KQotewotICAgIE1QUmVtb3RlQ29tbWFuZENlbnRlciAqY2VudGVyID0gW2dldE1Q
UmVtb3RlQ29tbWFuZENlbnRlckNsYXNzKCkgc2hhcmVkQ29tbWFuZENlbnRlcl07Ci0gICAgYXV0
byB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKLSAgICAKLSAgICBtX3BhdXNlVGFyZ2V0
ID0gW1tjZW50ZXIgcGF1c2VDb21tYW5kXSBhZGRUYXJnZXRXaXRoSGFuZGxlcjpeKE1QUmVtb3Rl
Q29tbWFuZEV2ZW50ICopIHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXNdIHsK
LSAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgd2Vha1RoaXMtPm1fY2xpZW50LmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFu
ZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGF1c2VDb21tYW5kLCB7IH0pOwotICAgICAgICB9KTsK
LQotICAgICAgICByZXR1cm4gTVBSZW1vdGVDb21tYW5kSGFuZGxlclN0YXR1c1N1Y2Nlc3M7Ci0g
ICAgfV07Ci0KLSAgICBtX3BsYXlUYXJnZXQgPSBbW2NlbnRlciBwbGF5Q29tbWFuZF0gYWRkVGFy
Z2V0V2l0aEhhbmRsZXI6XihNUFJlbW90ZUNvbW1hbmRFdmVudCAqKSB7Ci0gICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW3dlYWtUaGlzXSB7Ci0gICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHdlYWtUaGlzLT5tX2NsaWVudC5kaWRS
ZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlDb21t
YW5kLCB7IH0pOwotICAgICAgICB9KTsKLQotICAgICAgICByZXR1cm4gTVBSZW1vdGVDb21tYW5k
SGFuZGxlclN0YXR1c1N1Y2Nlc3M7Ci0gICAgfV07Ci0KLSAgICBtX3RvZ2dsZVBsYXlQYXVzZVRh
cmdldCA9IFtbY2VudGVyIHRvZ2dsZVBsYXlQYXVzZUNvbW1hbmRdIGFkZFRhcmdldFdpdGhIYW5k
bGVyOl4oTVBSZW1vdGVDb21tYW5kRXZlbnQgKikgewotICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFt3ZWFrVGhpc10gewotICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICB3ZWFrVGhpcy0+bV9jbGllbnQuZGlkUmVjZWl2ZVJlbW90
ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpUb2dnbGVQbGF5UGF1c2VDb21t
YW5kLCB7IH0pOwotICAgICAgICB9KTsKLQotICAgICAgICByZXR1cm4gTVBSZW1vdGVDb21tYW5k
SGFuZGxlclN0YXR1c1N1Y2Nlc3M7Ci0gICAgfV07Ci0KLSAgICBtX3NlZWtCYWNrd2FyZFRhcmdl
dCA9IFtbY2VudGVyIHNlZWtCYWNrd2FyZENvbW1hbmRdIGFkZFRhcmdldFdpdGhIYW5kbGVyOl4o
TVBSZW1vdGVDb21tYW5kRXZlbnQgKmV2ZW50KSB7Ci0gICAgICAgIEFTU0VSVChbZXZlbnQgaXNL
aW5kT2ZDbGFzczpnZXRNUFNlZWtDb21tYW5kRXZlbnRDbGFzcygpXSk7Ci0KLSAgICAgICAgTVBT
ZWVrQ29tbWFuZEV2ZW50KiBzZWVrRXZlbnQgPSBzdGF0aWNfY2FzdDxNUFNlZWtDb21tYW5kRXZl
bnQgKj4oZXZlbnQpOwotICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJv
bENvbW1hbmRUeXBlIGNvbW1hbmQgPSBbc2Vla0V2ZW50IHR5cGVdID09IE1QU2Vla0NvbW1hbmRF
dmVudFR5cGVCZWdpblNlZWtpbmcgPyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5n
QmFja3dhcmRDb21tYW5kIDogUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNlZWtpbmdCYWNrd2Fy
ZENvbW1hbmQ7Ci0KLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMsIGNvbW1hbmRd
IHsKLSAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgd2Vha1RoaXMtPm1fY2xpZW50LmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29t
bWFuZChjb21tYW5kLCB7IH0pOwotICAgICAgICB9KTsKLQotICAgICAgICByZXR1cm4gTVBSZW1v
dGVDb21tYW5kSGFuZGxlclN0YXR1c1N1Y2Nlc3M7Ci0gICAgfV07Ci0gICAgCi0gICAgbV9zZWVr
Rm9yd2FyZFRhcmdldCA9IFtbY2VudGVyIHNlZWtGb3J3YXJkQ29tbWFuZF0gYWRkVGFyZ2V0V2l0
aEhhbmRsZXI6XihNUFJlbW90ZUNvbW1hbmRFdmVudCAqZXZlbnQpIHsKLSAgICAgICAgQVNTRVJU
KFtldmVudCBpc0tpbmRPZkNsYXNzOmdldE1QU2Vla0NvbW1hbmRFdmVudENsYXNzKCldKTsKLSAg
ICAgICAgTVBTZWVrQ29tbWFuZEV2ZW50KiBzZWVrRXZlbnQgPSBzdGF0aWNfY2FzdDxNUFNlZWtD
b21tYW5kRXZlbnQgKj4oZXZlbnQpOwotCi0gICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpS
ZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCA9IFtzZWVrRXZlbnQgdHlwZV0gPT0gTVBT
ZWVrQ29tbWFuZEV2ZW50VHlwZUJlZ2luU2Vla2luZyA/IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpC
ZWdpblNlZWtpbmdGb3J3YXJkQ29tbWFuZCA6IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRTZWVr
aW5nRm9yd2FyZENvbW1hbmQ7Ci0KLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMs
IGNvbW1hbmRdIHsKLSAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgd2Vha1RoaXMtPm1fY2xpZW50LmRpZFJlY2VpdmVSZW1vdGVD
b250cm9sQ29tbWFuZChjb21tYW5kLCB7IH0pOwotICAgICAgICB9KTsKLQotICAgICAgICByZXR1
cm4gTVBSZW1vdGVDb21tYW5kSGFuZGxlclN0YXR1c1N1Y2Nlc3M7Ci0gICAgfV07Ci0KLSAgICBt
X3NlZWtUb1RpbWVUYXJnZXQgPSBbW2NlbnRlciBjaGFuZ2VQbGF5YmFja1Bvc2l0aW9uQ29tbWFu
ZF0gYWRkVGFyZ2V0V2l0aEhhbmRsZXI6XihNUFJlbW90ZUNvbW1hbmRFdmVudCAqZXZlbnQpIHsK
LSAgICAgICAgQVNTRVJUKFtldmVudCBpc0tpbmRPZkNsYXNzOmdldE1QQ2hhbmdlUGxheWJhY2tQ
b3NpdGlvbkNvbW1hbmRFdmVudENsYXNzKCldKTsKLQotICAgICAgICBpZiAoIW1fc3VwcG9ydHNT
ZWVraW5nKQotICAgICAgICAgICAgcmV0dXJuIE1QUmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0dXND
b21tYW5kRmFpbGVkOwotCi0gICAgICAgIE1QQ2hhbmdlUGxheWJhY2tQb3NpdGlvbkNvbW1hbmRF
dmVudCogc2Vla0V2ZW50ID0gc3RhdGljX2Nhc3Q8TVBDaGFuZ2VQbGF5YmFja1Bvc2l0aW9uQ29t
bWFuZEV2ZW50ICo+KGV2ZW50KTsKLSAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90
ZUNvbW1hbmRBcmd1bWVudCBhcmd1bWVudCB7IFtzZWVrRXZlbnQgcG9zaXRpb25UaW1lXSwgeyB9
IH07Ci0KLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMsIGFyZ3VtZW50ID0gV1RG
TW92ZShhcmd1bWVudCldIHsKLSAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgd2Vha1RoaXMtPm1fY2xpZW50LmRpZFJlY2VpdmVS
ZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQ
b3NpdGlvbkNvbW1hbmQsIGFyZ3VtZW50KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgcmV0dXJu
IE1QUmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0dXNTdWNjZXNzOwotICAgIH1dOwotfQotCi1SZW1v
dGVDb21tYW5kTGlzdGVuZXJJT1M6On5SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MoKQotewotICAg
IE1QUmVtb3RlQ29tbWFuZENlbnRlciAqY2VudGVyID0gW2dldE1QUmVtb3RlQ29tbWFuZENlbnRl
ckNsYXNzKCkgc2hhcmVkQ29tbWFuZENlbnRlcl07Ci0gICAgW1tjZW50ZXIgcGF1c2VDb21tYW5k
XSByZW1vdmVUYXJnZXQ6bV9wYXVzZVRhcmdldC5nZXQoKV07Ci0gICAgW1tjZW50ZXIgcGxheUNv
bW1hbmRdIHJlbW92ZVRhcmdldDptX3BsYXlUYXJnZXQuZ2V0KCldOwotICAgIFtbY2VudGVyIHRv
Z2dsZVBsYXlQYXVzZUNvbW1hbmRdIHJlbW92ZVRhcmdldDptX3RvZ2dsZVBsYXlQYXVzZVRhcmdl
dC5nZXQoKV07Ci0gICAgW1tjZW50ZXIgc2Vla0ZvcndhcmRDb21tYW5kXSByZW1vdmVUYXJnZXQ6
bV9zZWVrRm9yd2FyZFRhcmdldC5nZXQoKV07Ci0gICAgW1tjZW50ZXIgc2Vla0JhY2t3YXJkQ29t
bWFuZF0gcmVtb3ZlVGFyZ2V0Om1fc2Vla0JhY2t3YXJkVGFyZ2V0LmdldCgpXTsKLSAgICBbW2Nl
bnRlciBjaGFuZ2VQbGF5YmFja1Bvc2l0aW9uQ29tbWFuZF0gcmVtb3ZlVGFyZ2V0Om1fc2Vla1Rv
VGltZVRhcmdldC5nZXQoKV07Ci19Ci0KLXZvaWQgUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TOjp1
cGRhdGVTdXBwb3J0ZWRDb21tYW5kcygpCi17Ci0gICAgW1tbZ2V0TVBSZW1vdGVDb21tYW5kQ2Vu
dGVyQ2xhc3MoKSBzaGFyZWRDb21tYW5kQ2VudGVyXSBjaGFuZ2VQbGF5YmFja1Bvc2l0aW9uQ29t
bWFuZF0gc2V0RW5hYmxlZDptX3N1cHBvcnRzU2Vla2luZ107Ci19Ci0KLX0KLQotI2VuZGlmIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDgxYzc1OTlhMDQxZDE1MjhlZWEwMWVlNmFiN2Q3MDViNDE1Yzc0ZDEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5oCisrKyAvZGV2L251bGwKQEAgLTEs
NTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJS
ZW1vdGVDb21tYW5kTGlzdGVuZXIuaCIKLQotI2lmIFBMQVRGT1JNKE1BQykKLQotI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgUmVtb3RlQ29t
bWFuZExpc3RlbmVyTWFjIDogcHVibGljIFJlbW90ZUNvbW1hbmRMaXN0ZW5lciwgcHVibGljIENh
bk1ha2VXZWFrUHRyPFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYz4gewotcHVibGljOgotICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjPiBjcmVhdGUoUmVt
b3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50Jik7Ci0gICAgUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFj
KFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYpOwotICAgIHZpcnR1YWwgflJlbW90ZUNvbW1h
bmRMaXN0ZW5lck1hYygpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRD
b21tYW5kcygpIGZpbmFsOwotCi0gICAgdm9pZCogbV9jb21tYW5kSGFuZGxlciB7IG51bGxwdHIg
fTsKLQotICAgIGNvbnN0IFJlbW90ZUNvbW1hbmRzU2V0JiBkZWZhdWx0Q29tbWFuZHMoKTsKLSAg
ICBSZW1vdGVDb21tYW5kc1NldCBtX2N1cnJlbnRDb21tYW5kczsKLSAgICBib29sIG1fc3VwcG9y
dHNTZWVraW5nIHsgZmFsc2UgfTsKLX07Ci0gICAgCi19Ci0KLSNlbmRpZiAvLyBQTEFURk9STShN
QUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFu
ZExpc3RlbmVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1h
bmRMaXN0ZW5lck1hYy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTVkMmI3ZjNj
MDAwMDYyNzMzOTg2MTU5MjlhYTQyYzcwOTM3ZmI0NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3Rl
Q29tbWFuZExpc3RlbmVyTWFjLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMjI5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlJlbW90ZUNvbW1h
bmRMaXN0ZW5lck1hYy5oIgotCi0jaWYgUExBVEZPUk0oTUFDKQotCi0jaW1wb3J0ICJMb2dnaW5n
LmgiCi0jaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgotCi0jaW1wb3J0ICJNZWRpYVJlbW90ZVNv
ZnRMaW5rLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIE9wdGlvbmFsPE1STWVk
aWFSZW1vdGVDb21tYW5kPiBtZWRpYVJlbW90ZUNvbW1hbmRGb3JQbGF0Zm9ybUNvbW1hbmQoUGxh
dGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQotewot
ICAgIHN0YXRpYyBjb25zdCBhdXRvIGNvbW1hbmRNYXAgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10g
ewotICAgICAgICB1c2luZyBDb21tYW5kVG9BY3Rpb25NYXAgPSBIYXNoTWFwPFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIE1STWVkaWFSZW1vdGVDb21tYW5k
LCBXVEY6OkludEhhc2g8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5k
VHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJl
bW90ZUNvbnRyb2xDb21tYW5kVHlwZT4+OwotCi0gICAgICAgIHJldHVybiBDb21tYW5kVG9BY3Rp
b25NYXAgewotICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheUNvbW1hbmQs
IE1STWVkaWFSZW1vdGVDb21tYW5kUGxheSB9LAotICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6UGF1c2VDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFBhdXNlIH0sCi0gICAg
ICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTdG9wQ29tbWFuZCwgTVJNZWRpYVJlbW90
ZUNvbW1hbmRTdG9wIH0sCi0gICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpUb2dn
bGVQbGF5UGF1c2VDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFRvZ2dsZVBsYXlQYXVzZSB9
LAotICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nQmFja3dh
cmRDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZEJlZ2luUmV3aW5kIH0sCi0gICAgICAgICAg
ICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nQmFja3dhcmRDb21tYW5kLCBNUk1l
ZGlhUmVtb3RlQ29tbWFuZEVuZFJld2luZCB9LAotICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6QmVnaW5TZWVraW5nRm9yd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5k
QmVnaW5GYXN0Rm9yd2FyZCB9LAotICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
RW5kU2Vla2luZ0ZvcndhcmRDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZEVuZEZhc3RGb3J3
YXJkIH0sCi0gICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTZWVrVG9QbGF5YmFj
a1Bvc2l0aW9uQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRTZWVrVG9QbGF5YmFja1Bvc2l0
aW9uIH0sCi0gICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwRm9yd2FyZENv
bW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEZvcndhcmQgfSwKLSAgICAgICAgICAgIHsg
UGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBCYWNrd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVD
b21tYW5kU2tpcEJhY2t3YXJkIH0sCi0gICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpOZXh0VHJhY2tDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZE5leHRUcmFjayB9LAotICAg
ICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UHJldmlvdXNUcmFja0NvbW1hbmQsIE1S
TWVkaWFSZW1vdGVDb21tYW5kUHJldmlvdXNUcmFjayB9LAotICAgICAgICB9OwotICAgIH0oKSk7
Ci0KLSAgICBhdXRvIGl0ID0gY29tbWFuZE1hcC5nZXQoKS5maW5kKGNvbW1hbmQpOwotICAgIGlm
IChpdCAhPSBjb21tYW5kTWFwLmdldCgpLmVuZCgpKQotICAgICAgICByZXR1cm4geyBpdC0+dmFs
dWUgfTsKLQotICAgIHJldHVybiB7IH07Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDb21t
YW5kTGlzdGVuZXJNYWM+IFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYzo6Y3JlYXRlKFJlbW90ZUNv
bW1hbmRMaXN0ZW5lckNsaWVudCYgY2xpZW50KQotewotICAgIHJldHVybiBtYWtlVW5pcXVlPFJl
bW90ZUNvbW1hbmRMaXN0ZW5lck1hYz4oY2xpZW50KTsKLX0KLQotY29uc3QgUmVtb3RlQ29tbWFu
ZExpc3RlbmVyOjpSZW1vdGVDb21tYW5kc1NldCYgUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjOjpk
ZWZhdWx0Q29tbWFuZHMoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZW1vdGVDb21t
YW5kc1NldD4gY29tbWFuZHMoc3RkOjppbml0aWFsaXplcl9saXN0PFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGU+IHsKLSAgICAgICAgUGxhdGZvcm1NZWRpYVNl
c3Npb246OlBsYXlDb21tYW5kLAotICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGF1c2VD
b21tYW5kLAotICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6VG9nZ2xlUGxheVBhdXNlQ29t
bWFuZCwKLSAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OkJlZ2luU2Vla2luZ0ZvcndhcmRD
b21tYW5kLAotICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kU2Vla2luZ0ZvcndhcmRD
b21tYW5kLAotICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nQmFja3dh
cmRDb21tYW5kLAotICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kU2Vla2luZ0JhY2t3
YXJkQ29tbWFuZCwKLSAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlNlZWtUb1BsYXliYWNr
UG9zaXRpb25Db21tYW5kLAotICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEZvcndh
cmRDb21tYW5kLAotICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEJhY2t3YXJkQ29t
bWFuZCwKLSAgICB9KTsKLQotICAgIHJldHVybiBjb21tYW5kczsKLX0KLQotc3RhdGljIGJvb2wg
aXNTZWVrQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRU
eXBlIGNvbW1hbmQpCi17Ci0gICAgcmV0dXJuIGNvbW1hbmQgPT0gUGxhdGZvcm1NZWRpYVNlc3Np
b246OlNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5kCi0gICAgICAgIHx8IGNvbW1hbmQgPT0g
UGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBGb3J3YXJkQ29tbWFuZAotICAgICAgICB8fCBjb21t
YW5kID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwQmFja3dhcmRDb21tYW5kCi0gICAgICAg
IHx8IGNvbW1hbmQgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkJlZ2luU2Vla2luZ0ZvcndhcmRD
b21tYW5kCi0gICAgICAgIHx8IGNvbW1hbmQgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkJlZ2lu
U2Vla2luZ0JhY2t3YXJkQ29tbWFuZDsKLX0KLQotdm9pZCBSZW1vdGVDb21tYW5kTGlzdGVuZXJN
YWM6OnVwZGF0ZVN1cHBvcnRlZENvbW1hbmRzKCkKLXsKLSAgICBpZiAoIWlzTWVkaWFSZW1vdGVG
cmFtZXdvcmtBdmFpbGFibGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYgc3VwcG9y
dGVkQ29tbWFuZHMgPSAhbV9yZWdpc3RlcmVkQ29tbWFuZHMuaXNFbXB0eSgpID8gbV9yZWdpc3Rl
cmVkQ29tbWFuZHMgOiBkZWZhdWx0Q29tbWFuZHMoKTsKLSAgICBpZiAobV9jdXJyZW50Q29tbWFu
ZHMgPT0gc3VwcG9ydGVkQ29tbWFuZHMpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gY29t
bWFuZEluZm9BcnJheSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgc3VwcG9ydGVkQ29tbWFuZHMuc2l6ZSgpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tz
KSk7Ci0gICAgZm9yIChhdXRvIHBsYXRmb3JtQ29tbWFuZCA6IHN1cHBvcnRlZENvbW1hbmRzKSB7
Ci0gICAgICAgIGlmIChpc1NlZWtDb21tYW5kKHBsYXRmb3JtQ29tbWFuZCkgJiYgIW1fc3VwcG9y
dHNTZWVraW5nKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgYXV0byBjb21tYW5k
ID0gbWVkaWFSZW1vdGVDb21tYW5kRm9yUGxhdGZvcm1Db21tYW5kKHBsYXRmb3JtQ29tbWFuZCk7
Ci0gICAgICAgIEFTU0VSVChjb21tYW5kKTsKLSAgICAgICAgaWYgKCFjb21tYW5kKQotICAgICAg
ICAgICAgY29udGludWU7Ci0KLSAgICAgICAgYXV0byBjb21tYW5kSW5mbyA9IGFkb3B0Q0YoTVJN
ZWRpYVJlbW90ZUNvbW1hbmRJbmZvQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQpKTsKLSAgICAg
ICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRJbmZvU2V0Q29tbWFuZChjb21tYW5kSW5mby5nZXQoKSwg
Y29tbWFuZC52YWx1ZSgpKTsKLSAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRJbmZvU2V0RW5h
YmxlZChjb21tYW5kSW5mby5nZXQoKSwgdHJ1ZSk7Ci0gICAgICAgIENGQXJyYXlBcHBlbmRWYWx1
ZShjb21tYW5kSW5mb0FycmF5LmdldCgpLCBjb21tYW5kSW5mby5nZXQoKSk7Ci0gICAgfQotCi0g
ICAgTVJNZWRpYVJlbW90ZVNldFN1cHBvcnRlZENvbW1hbmRzKGNvbW1hbmRJbmZvQXJyYXkuZ2V0
KCksIE1STWVkaWFSZW1vdGVHZXRMb2NhbE9yaWdpbigpLCBudWxscHRyLCBudWxscHRyKTsKLSAg
ICBtX2N1cnJlbnRDb21tYW5kcyA9IHN1cHBvcnRlZENvbW1hbmRzOwotfQotCi1SZW1vdGVDb21t
YW5kTGlzdGVuZXJNYWM6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYyhSZW1vdGVDb21tYW5kTGlz
dGVuZXJDbGllbnQmIGNsaWVudCkKLSAgICA6IFJlbW90ZUNvbW1hbmRMaXN0ZW5lcihjbGllbnQp
Ci17Ci0gICAgaWYgKCFpc01lZGlhUmVtb3RlRnJhbWV3b3JrQXZhaWxhYmxlKCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIHNjaGVkdWxlU3VwcG9ydGVkQ29tbWFuZHNVcGRhdGUoKTsKLQotICAg
IGF1dG8gd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyk7Ci0gICAgbV9jb21tYW5kSGFuZGxl
ciA9IE1STWVkaWFSZW1vdGVBZGRBc3luY0NvbW1hbmRIYW5kbGVyQmxvY2soXihNUk1lZGlhUmVt
b3RlQ29tbWFuZCBjb21tYW5kLCBDRkRpY3Rpb25hcnlSZWYgb3B0aW9ucywgdm9pZCheY29tcGxl
dGlvbikoQ0ZBcnJheVJlZikpIHsKLQotICAgICAgICBMT0coTWVkaWEsICJSZW1vdGVDb21tYW5k
TGlzdGVuZXJNYWM6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYyAtIHJlY2VpdmVkIGNvbW1hbmQg
JXUiLCBjb21tYW5kKTsKLQotICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29u
dHJvbENvbW1hbmRUeXBlIHBsYXRmb3JtQ29tbWFuZCB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpO
b0NvbW1hbmQgfTsKLSAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRB
cmd1bWVudCBhcmd1bWVudDsKLSAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRIYW5kbGVyU3Rh
dHVzIHN0YXR1cyA9IE1STWVkaWFSZW1vdGVDb21tYW5kSGFuZGxlclN0YXR1c1N1Y2Nlc3M7Ci0K
LSAgICAgICAgc3dpdGNoIChjb21tYW5kKSB7Ci0gICAgICAgIGNhc2UgTVJNZWRpYVJlbW90ZUNv
bW1hbmRQbGF5OgotICAgICAgICAgICAgcGxhdGZvcm1Db21tYW5kID0gUGxhdGZvcm1NZWRpYVNl
c3Npb246OlBsYXlDb21tYW5kOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTVJN
ZWRpYVJlbW90ZUNvbW1hbmRQYXVzZToKLSAgICAgICAgICAgIHBsYXRmb3JtQ29tbWFuZCA9IFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpQYXVzZUNvbW1hbmQ7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBNUk1lZGlhUmVtb3RlQ29tbWFuZFN0b3A6Ci0gICAgICAgICAgICBwbGF0Zm9y
bUNvbW1hbmQgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U3RvcENvbW1hbmQ7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBNUk1lZGlhUmVtb3RlQ29tbWFuZFRvZ2dsZVBsYXlQYXVz
ZToKLSAgICAgICAgICAgIHBsYXRmb3JtQ29tbWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpU
b2dnbGVQbGF5UGF1c2VDb21tYW5kOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
TVJNZWRpYVJlbW90ZUNvbW1hbmRCZWdpbkZhc3RGb3J3YXJkOgotICAgICAgICAgICAgcGxhdGZv
cm1Db21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkJlZ2luU2Vla2luZ0ZvcndhcmRDb21t
YW5kOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTVJNZWRpYVJlbW90ZUNvbW1h
bmRFbmRGYXN0Rm9yd2FyZDoKLSAgICAgICAgICAgIHBsYXRmb3JtQ29tbWFuZCA9IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQ7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBNUk1lZGlhUmVtb3RlQ29tbWFuZEJlZ2luUmV3aW5kOgotICAgICAg
ICAgICAgcGxhdGZvcm1Db21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkJlZ2luU2Vla2lu
Z0JhY2t3YXJkQ29tbWFuZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1STWVk
aWFSZW1vdGVDb21tYW5kRW5kUmV3aW5kOgotICAgICAgICAgICAgcGxhdGZvcm1Db21tYW5kID0g
UGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNlZWtpbmdCYWNrd2FyZENvbW1hbmQ7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNUk1lZGlhUmVtb3RlQ29tbWFuZFNlZWtUb1BsYXli
YWNrUG9zaXRpb246IHsKLSAgICAgICAgICAgIGlmICghbV9zdXBwb3J0c1NlZWtpbmcpIHsKLSAg
ICAgICAgICAgICAgICBzdGF0dXMgPSBNUk1lZGlhUmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0dXND
b21tYW5kRmFpbGVkOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBDRk51bWJlclJlZiBwb3NpdGlvblJlZiA9IHN0YXRpY19jYXN0PENGTnVtYmVy
UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShvcHRpb25zLCBrTVJNZWRpYVJlbW90ZU9wdGlvblBs
YXliYWNrUG9zaXRpb24pKTsKLSAgICAgICAgICAgIGlmICghcG9zaXRpb25SZWYpIHsKLSAgICAg
ICAgICAgICAgICBzdGF0dXMgPSBNUk1lZGlhUmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0dXNDb21t
YW5kRmFpbGVkOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBkb3VibGUgcG9zaXRpb24gPSAwOwotICAgICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1
ZShwb3NpdGlvblJlZiwga0NGTnVtYmVyRG91YmxlVHlwZSwgJnBvc2l0aW9uKTsKLSAgICAgICAg
ICAgIGFyZ3VtZW50LnRpbWUgPSBwb3NpdGlvbjsKLSAgICAgICAgICAgIHBsYXRmb3JtQ29tbWFu
ZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFuZDsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgTVJNZWRpYVJlbW90
ZUNvbW1hbmRTa2lwRm9yd2FyZDoKLSAgICAgICAgY2FzZSBNUk1lZGlhUmVtb3RlQ29tbWFuZFNr
aXBCYWNrd2FyZDoKLSAgICAgICAgICAgIGlmICghbV9zdXBwb3J0c1NlZWtpbmcpIHsKLSAgICAg
ICAgICAgICAgICBzdGF0dXMgPSBNUk1lZGlhUmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0dXNDb21t
YW5kRmFpbGVkOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBpZiAoYXV0byBwb3NpdGlvblJlZiA9IHN0YXRpY19jYXN0PENGTnVtYmVyUmVmPihD
RkRpY3Rpb25hcnlHZXRWYWx1ZShvcHRpb25zLCBrTVJNZWRpYVJlbW90ZU9wdGlvblNraXBJbnRl
cnZhbCkpKSB7Ci0gICAgICAgICAgICAgICAgZG91YmxlIHBvc2l0aW9uID0gMDsKLSAgICAgICAg
ICAgICAgICBDRk51bWJlckdldFZhbHVlKHBvc2l0aW9uUmVmLCBrQ0ZOdW1iZXJEb3VibGVUeXBl
LCAmcG9zaXRpb24pOwotICAgICAgICAgICAgICAgIGFyZ3VtZW50LnRpbWUgPSBwb3NpdGlvbjsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcGxhdGZvcm1Db21tYW5kID0gKGNvbW1hbmQg
PT0gTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwRm9yd2FyZCkgPyBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6U2tpcEZvcndhcmRDb21tYW5kIDogUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBCYWNrd2Fy
ZENvbW1hbmQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNUk1lZGlhUmVtb3Rl
Q29tbWFuZE5leHRUcmFjazoKLSAgICAgICAgICAgIHBsYXRmb3JtQ29tbWFuZCA9IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpOZXh0VHJhY2tDb21tYW5kOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgTVJNZWRpYVJlbW90ZUNvbW1hbmRQcmV2aW91c1RyYWNrOgotICAgICAgICAgICAg
cGxhdGZvcm1Db21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlByZXZpb3VzVHJhY2tDb21t
YW5kOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBM
T0coTWVkaWEsICJSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM6OlJlbW90ZUNvbW1hbmRMaXN0ZW5l
ck1hYyAtIGNvbW1hbmQgJXUgbm90IHN1cHBvcnRlZCEiLCBjb21tYW5kKTsKLSAgICAgICAgICAg
IHN0YXR1cyA9IE1STWVkaWFSZW1vdGVDb21tYW5kSGFuZGxlclN0YXR1c0NvbW1hbmRGYWlsZWQ7
Ci0gICAgICAgIH07Ci0KLSAgICAgICAgaWYgKHdlYWtUaGlzICYmIHN0YXR1cyAhPSBNUk1lZGlh
UmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0dXNDb21tYW5kRmFpbGVkKQotICAgICAgICAgICAgd2Vh
a1RoaXMtPm1fY2xpZW50LmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChwbGF0Zm9ybUNv
bW1hbmQsIGFyZ3VtZW50KTsKLQotICAgICAgICBjb21wbGV0aW9uKChfX2JyaWRnZSBDRkFycmF5
UmVmKUBbQChzdGF0dXMpXSk7Ci0gICAgfSk7Ci19Ci0KLVJlbW90ZUNvbW1hbmRMaXN0ZW5lck1h
Yzo6flJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYygpCi17Ci0gICAgaWYgKG1fY29tbWFuZEhhbmRs
ZXIpCi0gICAgICAgIE1STWVkaWFSZW1vdGVSZW1vdmVDb21tYW5kSGFuZGxlckJsb2NrKG1fY29t
bWFuZEhhbmRsZXIpOwotfQotCi19Ci0KLSNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422166</attachid>
            <date>2021-03-03 17:30:32 -0800</date>
            <delta_ts>2021-03-03 21:59:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222342-20210304123030.patch</filename>
            <type>text/plain</type>
            <size>51647</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczODU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDJhODRiZmMxMTgxZjkx
ZDQ4ZTc5NTdkNmY5NDJmNTJkZjdlYzQwOS4uZmZhMTM0NDA4N2JmZTdjYTE1NDcwZTUwOTE5Njcz
YmRmYjZhMDcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTAyLTI0ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFJlbW90ZUNv
bW1hbmRMaXN0ZW5lcklPUyBpbiBmYXZvciBvZiBhIGNvbW1vbiBSZW1vdGVDb21tYW5kTGlzdGVu
ZXJDb2NvYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIyMzQyCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzc0NzczODM3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIFRoZXJlIGlzIG5vIGNoYW5nZSBpbiBiZWhh
dmlvciB3aXRoIHRoaXMgY29tbWl0LgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxh
dGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90
ZUNvbW1hbmRMaXN0ZW5lcjo6cmVzZXRDcmVhdGlvbkZ1bmN0aW9uKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9jb2NvYS9SZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYS5oOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5oLgorICAg
ICAgICAqIHBsYXRmb3JtL2NvY29hL1JlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hLm1tOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5l
ck1hYy5tbS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2E6OmRl
ZmF1bHRDb21tYW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVDb21tYW5kTGlzdGVuZXJD
b2NvYTo6dXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
Q29tbWFuZExpc3RlbmVyQ29jb2E6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hOjp+UmVtb3RlQ29tbWFuZExp
c3RlbmVyQ29jb2EpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVu
ZXJJT1MuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExp
c3RlbmVySU9TLm1tOiBSZW1vdmVkLgorCiAyMDIxLTAzLTAzICBSeWFuIEhhZGRhZCAgPHJ5YW5o
YWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjczODMy
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNWVlNTM5ZmVkYjQ5NTM1YTNlMmJkNzFkN2Jm
OTUxYWRmYTlkYjU1Yy4uZDM4NWEyMjZkNzAzYjg3YzBlOTE1NWRkODg3M2RhYzc4ZTRmYWNiMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yNTEsNiArMjUxLDcgQEAgcGxhdGZvcm0vY29j
b2EvUGFzdGVib2FyZEN1c3RvbURhdGFDb2NvYS5tbQogcGxhdGZvcm0vY29jb2EvUGxhdGZvcm1Q
YXN0ZWJvYXJkQ29jb2EubW0KIHBsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVk
aWFFbGVtZW50Lm1tCiBwbGF0Zm9ybS9jb2NvYS9Qb3dlclNvdXJjZU5vdGlmaWVyLm1tCitwbGF0
Zm9ybS9jb2NvYS9SZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYS5tbQogcGxhdGZvcm0vY29jb2Ev
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EubW0KIHBsYXRmb3JtL2NvY29hL1NlYXJjaFBv
cHVwTWVudUNvY29hLm1tCiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQpAQCAt
NDUyLDcgKzQ1Myw2IEBAIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9T
Lm1tIEBuby11bmlmeQogcGxhdGZvcm0vaW9zL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0
Lm1tIEBuby11bmlmeQogcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0KIHBsYXRm
b3JtL2lvcy9RdWlja0xvb2subW0KLXBsYXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJ
T1MubW0KIHBsYXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklPUy5tbQogcGxhdGZvcm0vaW9zL1Nj
cm9sbFZpZXdJT1MubW0KIHBsYXRmb3JtL2lvcy9TY3JvbGxiYXJUaGVtZUlPUy5tbQpAQCAtNTAw
LDcgKzUwMCw2IEBAIHBsYXRmb3JtL21hYy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW0g
QG5vLXVuaWZ5CiBwbGF0Zm9ybS9tYWMvUGx1Z2luQmxvY2tsaXN0Lm1tCiBwbGF0Zm9ybS9tYWMv
UG93ZXJPYnNlcnZlck1hYy5jcHAKIHBsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW0KLXBs
YXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0KIHBsYXRmb3JtL21hYy9TU0xL
ZXlHZW5lcmF0b3JNYWMubW0KIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbSBAbm8t
dW5pZnkKIHBsYXRmb3JtL21hYy9TY3JvbGxDb250cm9sbGVyLm1tCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzYzYmNiMTk0NzQ4
NDhmYjg2Mjk4MTExMGEyMjczMzE4N2M5MjdhNi4uNjdmZTkwZGYyMmVjNWE0ODY5N2VjN2RiN2Y3
Yjk4YmJkMmQ2ZmE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTQzMyw2ICsxNDMzLDcgQEAKIAkJNTEwRDRBMzcxMDMxNjVF
RTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBMzExMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tl
dFN0cmVhbUhhbmRsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUxMEQ0QTM4MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVD
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
MEQ0QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTEwRkNGQzFF
MDM2NDFEMDA2RjhEMEIgLyogSURCQ3Vyc29yUmVjb3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTEwRkNGQjFFMDM2MkE1MDA2RjhEMEIgLyogSURC
Q3Vyc29yUmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNTExN0YzMEUyNUU2MTAyMDAwMkE5RjFFIC8qIFJlbW90ZUNvbW1hbmRMaXN0ZW5l
ckNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTE3RjMwQzI1RTYxMDFGMDAyQTlGMUUgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2EuaCAq
LzsgfTsKIAkJNTExRUMxMjgxQzUwQUFDQTAwMzJGOTgzIC8qIElEQlNlcmlhbGl6YXRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUVDMTI2MUM1
MEFBNTcwMDMyRjk4MyAvKiBJREJTZXJpYWxpemF0aW9uLmggKi87IH07CiAJCTUxMUVDMTJDMUM1
MEFCQkYwMDMyRjk4MyAvKiBTUUxpdGVJREJUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRUMxMkExQzUwQUJCQTAwMzJGOTgzIC8q
IFNRTGl0ZUlEQlRyYW5zYWN0aW9uLmggKi87IH07CiAJCTUxMUVDMTMwMUM1MEFCRjUwMDMyRjk4
MyAvKiBTUUxpdGVJREJDdXJzb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMUVDMTJFMUM1MEFCRUMwMDMyRjk4MyAvKiBTUUxpdGVJREJDdXJzb3Iu
aCAqLzsgfTsKQEAgLTQzMjMsNyArNDMyNCw2IEBACiAJCUNEODNEMzYyMjExMjJBMjEwMDc2RTEx
QyAvKiBEZWZlcnJhYmxlVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0Q4M0QzNUEyMTExMTA4MjAwNzZFMTFDIC8qIERlZmVycmFibGVUYXNrLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Q4QTdC
QkIxOTc3MzVGRTAwQ0JENjQzIC8qIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4QTdCQjkxOTc3MzVG
RTAwQ0JENjQzIC8qIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tICovOyB9OwogCQlDRDhB
N0JCQzE5NzczNUZFMDBDQkQ2NDMgLyogQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOEE3QkJBMTk3NzM1
RkUwMENCRDY0MyAvKiBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUNEOEFDQTg5MUQyMzdBQTIwMEVD
QzU5RSAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOEFDQTg3MUQyMzdBQTIwMEVDQzU5RSAvKiBSZW1v
dGVDb21tYW5kTGlzdGVuZXJNYWMuaCAqLzsgfTsKIAkJQ0Q4QUNBOEYxRDIzOTcxOTAwRUNDNTlF
IC8qIE1lZGlhUmVtb3RlU29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEOEFDQThEMUQyMzk3MTkwMEVDQzU5RSAvKiBNZWRpYVJlbW90ZVNv
ZnRMaW5rLmggKi87IH07CiAJCUNEOEI1QTQyMTgwRDE0OUEwMDhCOEU2NSAvKiBWaWRlb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEOEI1QTQwMTgwRDE0OUEwMDhCOEU2NSAvKiBWaWRlb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSAqLzsgfTsKIAkJQ0Q4QjVBNDMxODBEMTQ5QTAw
OEI4RTY1IC8qIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDhCNUE0MTE4MEQxNDlBMDA4
QjhFNjUgLyogVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCAqLzsgfTsKQEAg
LTg1NzAsNiArODU3MCw4IEBACiAJCTUxMEQ0QTMxMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRT
dHJlYW1IYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29ja2V0U3Ry
ZWFtSGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMEQ0QTMyMTAzMTY1
RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxMTBGQ0ZCMUUwMzYyQTUwMDZGOEQwQiAvKiBJREJDdXJzb3JS
ZWNvcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQ3Vyc29yUmVjb3Jk
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMTdGMzBBMjVFNjEwMUUwMDJBOUYx
RSAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MTE3RjMwQzI1RTYxMDFGMDAyQTlGMUUgLyogUmVtb3Rl
Q29tbWFuZExpc3RlbmVyQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTExRUMxMjUxQzUwQUE1NzAwMzJGOTgzIC8qIElEQlNlcmlhbGl6YXRpb24uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCU2VyaWFsaXphdGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMUVDMTI2MUM1MEFBNTcwMDMyRjk4MyAvKiBJ
REJTZXJpYWxpemF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQlNl
cmlhbGl6YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExRUMxMjkxQzUw
QUJCQTAwMzJGOTgzIC8qIFNRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk2OTksNyArOTcwMSw2IEBACiAJCTY1NkQzNzJCMEFEQkE1
REUwMEE0NTU0RCAvKiBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU2RDM3MzAwQURCQTVERTAwQTQ1NTREIC8qIFN1YnJl
c291cmNlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdWJyZXNv
dXJjZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTg0MzY4NTBBRTAx
Qjc0MDBFNTM3NTMgLyogRnJhbWVMb2FkUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRnJhbWVMb2FkUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk2NTkzOTIzOTA5QUU0MzVDMDAyQzUzMUYgLyogVVJMTWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVSTE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNjU5QTdEMTIwQjZEQjREOTAwMTE1NUIzIC8qIFN1YnN0aXR1dGVEYXRhLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdWJzdGl0dXRlRGF0YS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTlEREM4MDA5RTE5OEJBMDAxQkYzQzYgLyogSlNE
b2N1bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1OUREQzgxMDlFMTk4QkEw
MDFCRjNDNiAvKiBKU0RvY3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0RvY3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDgxMyw4ICsx
NDgxNCw2IEBACiAJCUNEODc1QTc1MjQxMUI3OTgwMEIwOUY1OCAvKiBNZWRpYVNlc3Npb25IZWxw
ZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVNlc3Npb25IZWxwZXJJT1MubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOEE3QkI5MTk3NzM1RkUwMENCRDY0MyAv
KiBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRDhBN0JCQTE5NzczNUZFMDBDQkQ2NDMgLyogQXVkaW9Tb3Vy
Y2VQcm92aWRlckFWRk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
Q0Q4QUNBODYxRDIzN0FBMjAwRUNDNTlFIC8qIFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZUNvbW1hbmRMaXN0
ZW5lck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0Q4QUNBODcxRDIzN0FB
MjAwRUNDNTlFIC8qIFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4QUNBOEMxRDIzOTcxOTAwRUNDNTlFIC8qIE1lZGlhUmVtb3Rl
U29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVJl
bW90ZVNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDhBQ0E4RDFE
MjM5NzE5MDBFQ0M1OUUgLyogTWVkaWFSZW1vdGVTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNZWRpYVJlbW90ZVNvZnRMaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNEOEIzMUExMjM3OURDODMwMDg4M0ZERSAvKiBXZWJWaWRlb0NvbnRhaW5l
ckxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlZpZGVvQ29udGFpbmVyTGF5ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MDk4LDggKzE1MDk3LDYgQEAKIAkJQ0RGOTk0RkYy
NEMyODEzNjAwMkVBMDYyIC8qIFZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBWaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDREY5OTUwMDI0QzI4MTQ5MDAyRUEwNjIgLyogQXVkaW9UcmFja1ByaXZhdGVXZWJN
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvVHJhY2tQcml2YXRlV2ViTS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDREY5OTUwMTI0QzI4MTQ5MDAyRUEwNjIgLyogQXVkaW9UcmFja1By
aXZhdGVXZWJNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvVHJhY2tQcml2YXRlV2ViTS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNERkMzNjAxMThDQTYxNjMwMDI2RTU2
RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUNERkMzNjAyMThDQTYxNjMwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVu
ZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVD
b21tYW5kTGlzdGVuZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERkMz
NjAzMThDQTYxQzIwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RGQzM2MDQxOENBNjFDMjAwMjZFNTZGIC8q
IFJlbW90ZUNvbW1hbmRMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW1vdGVDb21tYW5kTGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0RGRDc4QkEyMjQyQzRGRTAwRDcyMDhBIC8qIEpTVGV4dFRyYWNrQ3VlR2VuZXJpYy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1RleHRUcmFja0N1ZUdlbmVyaWMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMDE4LDggKzIyMDE1LDYgQEAKIAkJCQk0NjM0
NTkyQjFBQzIyNzEwMDBFQ0I3MUMgLyogUG93ZXJPYnNlcnZlck1hYy5jcHAgKi8sCiAJCQkJNDZE
QkI2NEUxQUI4Qzk2RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuaCAqLywKIAkJCQkwMDgx
RkVGRTE2QjBBMkI2MDA4QUFBN0EgLyogUHVibGljU3VmZml4TWFjLm1tICovLAotCQkJCUNEOEFD
QTg3MUQyMzdBQTIwMEVDQzU5RSAvKiBSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMuaCAqLywKLQkJ
CQlDRDhBQ0E4NjFEMjM3QUEyMDBFQ0M1OUUgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1t
ICovLAogCQkJCUJDQUUxRkE1MTI5MzlEQjcwMDRDQjAyNiAvKiBTY3JvbGxBbmltYXRvck1hYy5o
ICovLAogCQkJCUJDNTExNTZEMTJCMTc0OUMwMEM5Njc1NCAvKiBTY3JvbGxBbmltYXRvck1hYy5t
bSAqLywKIAkJCQlCQzhCODUzQzBFN0M3RjExMDBBQjY5ODQgLyogU2Nyb2xsYmFyVGhlbWVNYWMu
aCAqLywKQEAgLTIyMDM1LDcgKzIyMDMwLDYgQEAKIAkJCQlCQ0U2NTlFNTBFQTkyRkIyMDA3RTQ1
MzMgLyogVGhlbWVNYWMuaCAqLywKIAkJCQlCQ0U2NTlFODBFQTkyRkZBMDA3RTQ1MzMgLyogVGhl
bWVNYWMubW0gKi8sCiAJCQkJNTFERjZEN0YwQjkyQTE4RTAwQzJEQzg1IC8qIFRocmVhZENoZWNr
Lm1tICovLAotCQkJCTY1OTM5MjM5MDlBRTQzNUMwMDJDNTMxRiAvKiBVUkxNYWMubW0gKi8sCiAJ
CQkJODY4MTYwRDMxODc2NjlFNzAwMjFFNzlEIC8qIFVzZXJBY3Rpdml0eU1hYy5tbSAqLywKIAkJ
CQlBM0FGOUQ4NDIwMzI1NkEzMDA2Q0FEMDYgLyogVXNlckFnZW50TWFjLm1tICovLAogCQkJCTgz
QzQ1QjhCMURDMkI2NjMwMDg4NzFCQSAvKiBWYWxpZGF0aW9uQnViYmxlTWFjLm1tICovLApAQCAt
MjQ1NDYsOCArMjQ1NDAsNiBAQAogCQkJCUExQzE1MDc3MUUzRjJCM0UwMDMyQzk4QyAvKiBQcmV2
aWV3Q29udmVydGVySU9TLm1tICovLAogCQkJCUExNUUzMUYxMUUwQ0IwQUEwMDRCMzcxQyAvKiBR
dWlja0xvb2suaCAqLywKIAkJCQlBMTVFMzFGMjFFMENCMEFBMDA0QjM3MUMgLyogUXVpY2tMb29r
Lm1tICovLAotCQkJCUNERkMzNjAxMThDQTYxNjMwMDI2RTU2RiAvKiBSZW1vdGVDb21tYW5kTGlz
dGVuZXJJT1MuaCAqLywKLQkJCQlDREZDMzYwMjE4Q0E2MTYzMDAyNkU1NkYgLyogUmVtb3RlQ29t
bWFuZExpc3RlbmVySU9TLm1tICovLAogCQkJCTBGMTc3NDdFMTM3OEI3NzEwMDlEQTc2QSAvKiBT
Y3JvbGxBbmltYXRvcklPUy5oICovLAogCQkJCTBGMTc3NDdGMTM3OEI3NzIwMDlEQTc2QSAvKiBT
Y3JvbGxBbmltYXRvcklPUy5tbSAqLywKIAkJCQk0NEM5OTE4NTBGM0QxRUJFMDA1ODY2NzAgLyog
U2Nyb2xsYmFyVGhlbWVJT1MuaCAqLywKQEAgLTI0NzA5LDYgKzI0NzAxLDggQEAKIAkJCQlDREEy
OUEwQzFDQkQ5Q0ZFMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQu
bW0gKi8sCiAJCQkJQ0RDNzQ3MDAyNEJFMjY3OTAwQzE4NjhCIC8qIFBvd2VyU291cmNlTm90aWZp
ZXIuaCAqLywKIAkJCQlDREM3NDcwMTI0QkUyNjc5MDBDMTg2OEIgLyogUG93ZXJTb3VyY2VOb3Rp
Zmllci5tbSAqLywKKwkJCQk1MTE3RjMwQzI1RTYxMDFGMDAyQTlGMUUgLyogUmVtb3RlQ29tbWFu
ZExpc3RlbmVyQ29jb2EuaCAqLywKKwkJCQk1MTE3RjMwQTI1RTYxMDFFMDAyQTlGMUUgLyogUmVt
b3RlQ29tbWFuZExpc3RlbmVyQ29jb2EubW0gKi8sCiAJCQkJNDY1QThFNzgxQzhBMjRDRTAwRTdE
M0U0IC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tICovLAogCQkJCTBFNzA1OEYz
MUJDNUNDRDcwMDQ1QTUwNyAvKiBTZWFyY2hQb3B1cE1lbnVDb2NvYS5oICovLAogCQkJCTBFNzA1
OEVEMUJDNUJDMTkwMDQ1QTUwNyAvKiBTZWFyY2hQb3B1cE1lbnVDb2NvYS5tbSAqLywKQEAgLTM0
MzY5LDcgKzM0MzYzLDcgQEAKIAkJCQk1MUI5MTQxMTFGRDI3ODJEMDBFRTI4NTkgLyogUmVnaXN0
cmF0aW9uU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NzhGNDNGMURFMEI2MzAwMDNERkM2
QSAvKiBSZWplY3RlZFByb21pc2VUcmFja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREZDMzYw
NjE4Q0E2MUMyMDAyNkU1NkYgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVyLmggaW4gSGVhZGVycyAq
LywKLQkJCQlDRDhBQ0E4OTFEMjM3QUEyMDBFQ0M1OUUgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVy
TWFjLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTE3RjMwRTI1RTYxMDIwMDAyQTlGMUUgLyogUmVt
b3RlQ29tbWFuZExpc3RlbmVyQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTk5MjA3
RDYzNEQwMEE3RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2
Qjk1MTlBMjA3RDYzNTQwMEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJN0I5MDQxNzAyNTUwMTE0MjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9S
ZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwCmluZGV4IDAyYjVlN2RhMzAxNjU0ZTcyMzE1YTY2NzMy
OWQwZDEzNDA2MmEzZmQuLmQzOGJmY2MwYmJkMTM5Y2E4ZWUyYjJjMjMxZWNlY2E5NjRkNDcyOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVy
LmNwcApAQCAtMjYsMTIgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJS
ZW1vdGVDb21tYW5kTGlzdGVuZXIuaCIKIAotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlICJS
ZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMuaCIKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSNpbmNsdWRlICJSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MuaCIKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyNpbmNsdWRlICJSZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYS5oIgogI2VuZGlm
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUwLDEwICs0Niw4IEBAIHZvaWQgUmVtb3RlQ29t
bWFuZExpc3RlbmVyOjpzZXRDcmVhdGlvbkZ1bmN0aW9uKENyZWF0aW9uRnVuY3Rpb24mJiBmdW5j
dGlvbikKIHZvaWQgUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpyZXNldENyZWF0aW9uRnVuY3Rpb24o
KQogewogICAgIHJlbW90ZUNvbW1hbmRMaXN0ZW5lckNyZWF0aW9uRnVuY3Rpb24oKSA9IFtdIChS
ZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmIGNsaWVudCkgewotI2lmIFBMQVRGT1JNKE1BQykK
LSAgICAgICAgcmV0dXJuIFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYzo6Y3JlYXRlKGNsaWVudCk7
Ci0jZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICByZXR1cm4gUmVtb3RlQ29tbWFu
ZExpc3RlbmVySU9TOjpjcmVhdGUoY2xpZW50KTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAg
ICAgcmV0dXJuIFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hOjpjcmVhdGUoY2xpZW50KTsKICNl
bHNlCiAgICAgICAgIHJldHVybiBSZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZShjbGllbnQp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SZW1v
dGVDb21tYW5kTGlzdGVuZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
UmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xN2IyNGM5MjQ1YWRiZGY0
NjM2MDBiZTIxYTM2MjYyYjRiOGFjZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvUmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2EuaApAQCAtMCwwICsx
LDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlJlbW90
ZUNvbW1hbmRMaXN0ZW5lci5oIgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisKKyNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlbW90ZUNvbW1h
bmRMaXN0ZW5lckNvY29hIDogcHVibGljIFJlbW90ZUNvbW1hbmRMaXN0ZW5lciwgcHVibGljIENh
bk1ha2VXZWFrUHRyPFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hPiB7CitwdWJsaWM6CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYT4gY3JlYXRl
KFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYpOworICAgIFJlbW90ZUNvbW1hbmRMaXN0ZW5l
ckNvY29hKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYpOworICAgIHZpcnR1YWwgflJlbW90
ZUNvbW1hbmRMaXN0ZW5lckNvY29hKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCB1cGRhdGVTdXBw
b3J0ZWRDb21tYW5kcygpIGZpbmFsOworCisgICAgdm9pZCogbV9jb21tYW5kSGFuZGxlciB7IG51
bGxwdHIgfTsKKworICAgIGNvbnN0IFJlbW90ZUNvbW1hbmRzU2V0JiBkZWZhdWx0Q29tbWFuZHMo
KTsKKyAgICBSZW1vdGVDb21tYW5kc1NldCBtX2N1cnJlbnRDb21tYW5kczsKKyAgICBib29sIG1f
c3VwcG9ydHNTZWVraW5nIHsgZmFsc2UgfTsKK307CisgICAgCit9CisKKyNlbmRpZiAvLyBQTEFU
Rk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SZW1v
dGVDb21tYW5kTGlzdGVuZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1JlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlNzk2NGFjMzc2ZDMw
ZTEzMzE4MzRjYjk4Yzg0MGU1NjJiYWEzOGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9SZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYS5tbQpAQCAtMCww
ICsxLDIyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiUmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2EuaCIKKworI2lmIFBMQVRGT1JNKENPQ09BKQor
CisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgorCisjaW1w
b3J0ICJNZWRpYVJlbW90ZVNvZnRMaW5rLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Rh
dGljIE9wdGlvbmFsPE1STWVkaWFSZW1vdGVDb21tYW5kPiBtZWRpYVJlbW90ZUNvbW1hbmRGb3JQ
bGF0Zm9ybUNvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5k
VHlwZSBjb21tYW5kKQoreworICAgIHN0YXRpYyBjb25zdCBhdXRvIGNvbW1hbmRNYXAgPSBtYWtl
TmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICB1c2luZyBDb21tYW5kVG9BY3Rpb25NYXAgPSBI
YXNoTWFwPFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIE1S
TWVkaWFSZW1vdGVDb21tYW5kLCBXVEY6OkludEhhc2g8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJl
bW90ZUNvbnRyb2xDb21tYW5kVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8UGxhdGZv
cm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZT4+OworCisgICAgICAgIHJl
dHVybiBDb21tYW5kVG9BY3Rpb25NYXAgeworICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6UGxheUNvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kUGxheSB9LAorICAgICAgICAg
ICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGF1c2VDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29t
bWFuZFBhdXNlIH0sCisgICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTdG9wQ29t
bWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRTdG9wIH0sCisgICAgICAgICAgICB7IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpUb2dnbGVQbGF5UGF1c2VDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFu
ZFRvZ2dsZVBsYXlQYXVzZSB9LAorICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
QmVnaW5TZWVraW5nQmFja3dhcmRDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZEJlZ2luUmV3
aW5kIH0sCisgICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nQmFj
a3dhcmRDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZEVuZFJld2luZCB9LAorICAgICAgICAg
ICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nRm9yd2FyZENvbW1hbmQsIE1S
TWVkaWFSZW1vdGVDb21tYW5kQmVnaW5GYXN0Rm9yd2FyZCB9LAorICAgICAgICAgICAgeyBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kU2Vla2luZ0ZvcndhcmRDb21tYW5kLCBNUk1lZGlhUmVtb3Rl
Q29tbWFuZEVuZEZhc3RGb3J3YXJkIH0sCisgICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpTZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRT
ZWVrVG9QbGF5YmFja1Bvc2l0aW9uIH0sCisgICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpTa2lwRm9yd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEZvcndhcmQg
fSwKKyAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBCYWNrd2FyZENvbW1h
bmQsIE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEJhY2t3YXJkIH0sCisgICAgICAgICAgICB7IFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpOZXh0VHJhY2tDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFu
ZE5leHRUcmFjayB9LAorICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UHJldmlv
dXNUcmFja0NvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kUHJldmlvdXNUcmFjayB9LAorICAg
ICAgICB9OworICAgIH0oKSk7CisKKyAgICBhdXRvIGl0ID0gY29tbWFuZE1hcC5nZXQoKS5maW5k
KGNvbW1hbmQpOworICAgIGlmIChpdCAhPSBjb21tYW5kTWFwLmdldCgpLmVuZCgpKQorICAgICAg
ICByZXR1cm4geyBpdC0+dmFsdWUgfTsKKworICAgIHJldHVybiB7IH07Cit9CisKK3N0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYT4gUmVtb3RlQ29tbWFuZExpc3RlbmVy
Q29jb2E6OmNyZWF0ZShSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmIGNsaWVudCkKK3sKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYT4oY2xpZW50KTsK
K30KKworY29uc3QgUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpSZW1vdGVDb21tYW5kc1NldCYgUmVt
b3RlQ29tbWFuZExpc3RlbmVyQ29jb2E6OmRlZmF1bHRDb21tYW5kcygpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFJlbW90ZUNvbW1hbmRzU2V0PiBjb21tYW5kcyhzdGQ6OmluaXRpYWxp
emVyX2xpc3Q8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZT4g
eworICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheUNvbW1hbmQsCisgICAgICAgIFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpQYXVzZUNvbW1hbmQsCisgICAgICAgIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpUb2dnbGVQbGF5UGF1c2VDb21tYW5kLAorICAgICAgICBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6QmVnaW5TZWVraW5nRm9yd2FyZENvbW1hbmQsCisgICAgICAgIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQsCisgICAgICAgIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpCZWdpblNlZWtpbmdCYWNrd2FyZENvbW1hbmQsCisgICAgICAgIFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpFbmRTZWVraW5nQmFja3dhcmRDb21tYW5kLAorICAgICAgICBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQsCisgICAgICAgIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpTa2lwRm9yd2FyZENvbW1hbmQsCisgICAgICAgIFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpTa2lwQmFja3dhcmRDb21tYW5kLAorICAgIH0pOworCisgICAgcmV0dXJuIGNv
bW1hbmRzOworfQorCitzdGF0aWMgYm9vbCBpc1NlZWtDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCkKK3sKKyAgICByZXR1cm4gY29t
bWFuZCA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1h
bmQKKyAgICAgICAgfHwgY29tbWFuZCA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEZvcndh
cmRDb21tYW5kCisgICAgICAgIHx8IGNvbW1hbmQgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlNr
aXBCYWNrd2FyZENvbW1hbmQKKyAgICAgICAgfHwgY29tbWFuZCA9PSBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6QmVnaW5TZWVraW5nRm9yd2FyZENvbW1hbmQKKyAgICAgICAgfHwgY29tbWFuZCA9PSBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nQmFja3dhcmRDb21tYW5kOworfQorCit2
b2lkIFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hOjp1cGRhdGVTdXBwb3J0ZWRDb21tYW5kcygp
Cit7CisgICAgaWYgKCFpc01lZGlhUmVtb3RlRnJhbWV3b3JrQXZhaWxhYmxlKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8mIHN1cHBvcnRlZENvbW1hbmRzID0gIW1fcmVnaXN0ZXJlZENv
bW1hbmRzLmlzRW1wdHkoKSA/IG1fcmVnaXN0ZXJlZENvbW1hbmRzIDogZGVmYXVsdENvbW1hbmRz
KCk7CisgICAgaWYgKG1fY3VycmVudENvbW1hbmRzID09IHN1cHBvcnRlZENvbW1hbmRzKQorICAg
ICAgICByZXR1cm47CisKKyAgICBhdXRvIGNvbW1hbmRJbmZvQXJyYXkgPSBhZG9wdENGKENGQXJy
YXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN1cHBvcnRlZENvbW1hbmRzLnNp
emUoKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOworICAgIGZvciAoYXV0byBwbGF0Zm9ybUNv
bW1hbmQgOiBzdXBwb3J0ZWRDb21tYW5kcykgeworICAgICAgICBpZiAoaXNTZWVrQ29tbWFuZChw
bGF0Zm9ybUNvbW1hbmQpICYmICFtX3N1cHBvcnRzU2Vla2luZykKKyAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgIGF1dG8gY29tbWFuZCA9IG1lZGlhUmVtb3RlQ29tbWFuZEZvclBsYXRm
b3JtQ29tbWFuZChwbGF0Zm9ybUNvbW1hbmQpOworICAgICAgICBBU1NFUlQoY29tbWFuZCk7Cisg
ICAgICAgIGlmICghY29tbWFuZCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1
dG8gY29tbWFuZEluZm8gPSBhZG9wdENGKE1STWVkaWFSZW1vdGVDb21tYW5kSW5mb0NyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0KSk7CisgICAgICAgIE1STWVkaWFSZW1vdGVDb21tYW5kSW5mb1Nl
dENvbW1hbmQoY29tbWFuZEluZm8uZ2V0KCksIGNvbW1hbmQudmFsdWUoKSk7CisgICAgICAgIE1S
TWVkaWFSZW1vdGVDb21tYW5kSW5mb1NldEVuYWJsZWQoY29tbWFuZEluZm8uZ2V0KCksIHRydWUp
OworICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoY29tbWFuZEluZm9BcnJheS5nZXQoKSwgY29t
bWFuZEluZm8uZ2V0KCkpOworICAgIH0KKworICAgIE1STWVkaWFSZW1vdGVTZXRTdXBwb3J0ZWRD
b21tYW5kcyhjb21tYW5kSW5mb0FycmF5LmdldCgpLCBNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmln
aW4oKSwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgbV9jdXJyZW50Q29tbWFuZHMgPSBzdXBwb3J0
ZWRDb21tYW5kczsKK30KKworUmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2E6OlJlbW90ZUNvbW1h
bmRMaXN0ZW5lckNvY29hKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYgY2xpZW50KQorICAg
IDogUmVtb3RlQ29tbWFuZExpc3RlbmVyKGNsaWVudCkKK3sKKyAgICBpZiAoIWlzTWVkaWFSZW1v
dGVGcmFtZXdvcmtBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2NoZWR1bGVT
dXBwb3J0ZWRDb21tYW5kc1VwZGF0ZSgpOworCisgICAgYXV0byB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKTsKKyAgICBtX2NvbW1hbmRIYW5kbGVyID0gTVJNZWRpYVJlbW90ZUFkZEFzeW5j
Q29tbWFuZEhhbmRsZXJCbG9jayheKE1STWVkaWFSZW1vdGVDb21tYW5kIGNvbW1hbmQsIENGRGlj
dGlvbmFyeVJlZiBvcHRpb25zLCB2b2lkKF5jb21wbGV0aW9uKShDRkFycmF5UmVmKSkgeworCisg
ICAgICAgIExPRyhNZWRpYSwgIlJlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hOjpSZW1vdGVDb21t
YW5kTGlzdGVuZXJDb2NvYSAtIHJlY2VpdmVkIGNvbW1hbmQgJXUiLCBjb21tYW5kKTsKKworICAg
ICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIHBsYXRm
b3JtQ29tbWFuZCB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0NvbW1hbmQgfTsKKyAgICAgICAg
UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCBhcmd1bWVudDsKKyAg
ICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRIYW5kbGVyU3RhdHVzIHN0YXR1cyA9IE1STWVkaWFS
ZW1vdGVDb21tYW5kSGFuZGxlclN0YXR1c1N1Y2Nlc3M7CisKKyAgICAgICAgc3dpdGNoIChjb21t
YW5kKSB7CisgICAgICAgIGNhc2UgTVJNZWRpYVJlbW90ZUNvbW1hbmRQbGF5OgorICAgICAgICAg
ICAgcGxhdGZvcm1Db21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlDb21tYW5kOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTVJNZWRpYVJlbW90ZUNvbW1hbmRQYXVz
ZToKKyAgICAgICAgICAgIHBsYXRmb3JtQ29tbWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQ
YXVzZUNvbW1hbmQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNUk1lZGlhUmVt
b3RlQ29tbWFuZFN0b3A6CisgICAgICAgICAgICBwbGF0Zm9ybUNvbW1hbmQgPSBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6U3RvcENvbW1hbmQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBNUk1lZGlhUmVtb3RlQ29tbWFuZFRvZ2dsZVBsYXlQYXVzZToKKyAgICAgICAgICAgIHBsYXRm
b3JtQ29tbWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpUb2dnbGVQbGF5UGF1c2VDb21tYW5k
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTVJNZWRpYVJlbW90ZUNvbW1hbmRC
ZWdpbkZhc3RGb3J3YXJkOgorICAgICAgICAgICAgcGxhdGZvcm1Db21tYW5kID0gUGxhdGZvcm1N
ZWRpYVNlc3Npb246OkJlZ2luU2Vla2luZ0ZvcndhcmRDb21tYW5kOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgTVJNZWRpYVJlbW90ZUNvbW1hbmRFbmRGYXN0Rm9yd2FyZDoKKyAg
ICAgICAgICAgIHBsYXRmb3JtQ29tbWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRTZWVr
aW5nRm9yd2FyZENvbW1hbmQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNUk1l
ZGlhUmVtb3RlQ29tbWFuZEJlZ2luUmV3aW5kOgorICAgICAgICAgICAgcGxhdGZvcm1Db21tYW5k
ID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkJlZ2luU2Vla2luZ0JhY2t3YXJkQ29tbWFuZDsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1STWVkaWFSZW1vdGVDb21tYW5kRW5kUmV3
aW5kOgorICAgICAgICAgICAgcGxhdGZvcm1Db21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246
OkVuZFNlZWtpbmdCYWNrd2FyZENvbW1hbmQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBNUk1lZGlhUmVtb3RlQ29tbWFuZFNlZWtUb1BsYXliYWNrUG9zaXRpb246IHsKKyAgICAg
ICAgICAgIGlmICghbV9zdXBwb3J0c1NlZWtpbmcpIHsKKyAgICAgICAgICAgICAgICBzdGF0dXMg
PSBNUk1lZGlhUmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0dXNDb21tYW5kRmFpbGVkOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBDRk51bWJlclJl
ZiBwb3NpdGlvblJlZiA9IHN0YXRpY19jYXN0PENGTnVtYmVyUmVmPihDRkRpY3Rpb25hcnlHZXRW
YWx1ZShvcHRpb25zLCBrTVJNZWRpYVJlbW90ZU9wdGlvblBsYXliYWNrUG9zaXRpb24pKTsKKyAg
ICAgICAgICAgIGlmICghcG9zaXRpb25SZWYpIHsKKyAgICAgICAgICAgICAgICBzdGF0dXMgPSBN
Uk1lZGlhUmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0dXNDb21tYW5kRmFpbGVkOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkb3VibGUgcG9zaXRp
b24gPSAwOworICAgICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShwb3NpdGlvblJlZiwga0NGTnVt
YmVyRG91YmxlVHlwZSwgJnBvc2l0aW9uKTsKKyAgICAgICAgICAgIGFyZ3VtZW50LnRpbWUgPSBw
b3NpdGlvbjsKKyAgICAgICAgICAgIHBsYXRmb3JtQ29tbWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpTZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFuZDsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwRm9yd2FyZDoK
KyAgICAgICAgY2FzZSBNUk1lZGlhUmVtb3RlQ29tbWFuZFNraXBCYWNrd2FyZDoKKyAgICAgICAg
ICAgIGlmICghbV9zdXBwb3J0c1NlZWtpbmcpIHsKKyAgICAgICAgICAgICAgICBzdGF0dXMgPSBN
Uk1lZGlhUmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0dXNDb21tYW5kRmFpbGVkOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYXV0byBwb3Np
dGlvblJlZiA9IHN0YXRpY19jYXN0PENGTnVtYmVyUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShv
cHRpb25zLCBrTVJNZWRpYVJlbW90ZU9wdGlvblNraXBJbnRlcnZhbCkpKSB7CisgICAgICAgICAg
ICAgICAgZG91YmxlIHBvc2l0aW9uID0gMDsKKyAgICAgICAgICAgICAgICBDRk51bWJlckdldFZh
bHVlKHBvc2l0aW9uUmVmLCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAmcG9zaXRpb24pOworICAgICAg
ICAgICAgICAgIGFyZ3VtZW50LnRpbWUgPSBwb3NpdGlvbjsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgcGxhdGZvcm1Db21tYW5kID0gKGNvbW1hbmQgPT0gTVJNZWRpYVJlbW90ZUNvbW1h
bmRTa2lwRm9yd2FyZCkgPyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEZvcndhcmRDb21tYW5k
IDogUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBCYWNrd2FyZENvbW1hbmQ7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBNUk1lZGlhUmVtb3RlQ29tbWFuZE5leHRUcmFjazoKKyAg
ICAgICAgICAgIHBsYXRmb3JtQ29tbWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOZXh0VHJh
Y2tDb21tYW5kOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTVJNZWRpYVJlbW90
ZUNvbW1hbmRQcmV2aW91c1RyYWNrOgorICAgICAgICAgICAgcGxhdGZvcm1Db21tYW5kID0gUGxh
dGZvcm1NZWRpYVNlc3Npb246OlByZXZpb3VzVHJhY2tDb21tYW5kOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBMT0coTWVkaWEsICJSZW1vdGVDb21t
YW5kTGlzdGVuZXJDb2NvYTo6UmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2EgLSBjb21tYW5kICV1
IG5vdCBzdXBwb3J0ZWQhIiwgY29tbWFuZCk7CisgICAgICAgICAgICBzdGF0dXMgPSBNUk1lZGlh
UmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0dXNDb21tYW5kRmFpbGVkOworICAgICAgICB9OworCisg
ICAgICAgIGlmICh3ZWFrVGhpcyAmJiBzdGF0dXMgIT0gTVJNZWRpYVJlbW90ZUNvbW1hbmRIYW5k
bGVyU3RhdHVzQ29tbWFuZEZhaWxlZCkKKyAgICAgICAgICAgIHdlYWtUaGlzLT5tX2NsaWVudC5k
aWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQocGxhdGZvcm1Db21tYW5kLCBhcmd1bWVudCk7
CisKKyAgICAgICAgY29tcGxldGlvbigoX19icmlkZ2UgQ0ZBcnJheVJlZilAW0Aoc3RhdHVzKV0p
OworICAgIH0pOworfQorCitSZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYTo6flJlbW90ZUNvbW1h
bmRMaXN0ZW5lckNvY29hKCkKK3sKKyAgICBpZiAobV9jb21tYW5kSGFuZGxlcikKKyAgICAgICAg
TVJNZWRpYVJlbW90ZVJlbW92ZUNvbW1hbmRIYW5kbGVyQmxvY2sobV9jb21tYW5kSGFuZGxlcik7
Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGY4ZDU2NTgwNTlmNWExMGRlNDBiZTU5MjQ2NzQ3NjM2MjI3ZjlmNjguLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLQotI2luY2x1ZGUgIlJlbW90ZUNvbW1hbmRMaXN0ZW5l
ci5oIgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklP
UyBmaW5hbCA6IHB1YmxpYyBSZW1vdGVDb21tYW5kTGlzdGVuZXIsIHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1M+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUz4gY3JlYXRlKFJlbW90ZUNvbW1h
bmRMaXN0ZW5lckNsaWVudCYpOwotICAgIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUyhSZW1vdGVD
b21tYW5kTGlzdGVuZXJDbGllbnQmKTsKLSAgICB2aXJ0dWFsIH5SZW1vdGVDb21tYW5kTGlzdGVu
ZXJJT1MoKTsKLQotcHJvdGVjdGVkOgotICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMo
KSBmaW5hbDsKLQotICAgIFJldGFpblB0cjxpZD4gbV9wbGF5VGFyZ2V0OwotICAgIFJldGFpblB0
cjxpZD4gbV9wYXVzZVRhcmdldDsKLSAgICBSZXRhaW5QdHI8aWQ+IG1fdG9nZ2xlUGxheVBhdXNl
VGFyZ2V0OwotICAgIFJldGFpblB0cjxpZD4gbV9zZWVrRm9yd2FyZFRhcmdldDsKLSAgICBSZXRh
aW5QdHI8aWQ+IG1fc2Vla0JhY2t3YXJkVGFyZ2V0OwotICAgIFJldGFpblB0cjxpZD4gbV9zZWVr
VG9UaW1lVGFyZ2V0OwotfTsKLQotfQotCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlz
dGVuZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExp
c3RlbmVySU9TLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWFkOWQ2MjYzNzAy
M2FlMTVmN2YyODA1YjJlOGRjMGVkZDFlZTJhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9SZW1vdGVDb21t
YW5kTGlzdGVuZXJJT1MubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxNTQgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIlJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5oIgotCi0jaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLQotI2ltcG9ydCA8TWVkaWFQbGF5ZXIvTVBSZW1vdGVDb21tYW5kLmg+Ci0j
aW1wb3J0IDxNZWRpYVBsYXllci9NUFJlbW90ZUNvbW1hbmRDZW50ZXIuaD4KLSNpbXBvcnQgPE1l
ZGlhUGxheWVyL01QUmVtb3RlQ29tbWFuZEV2ZW50Lmg+Ci0jaW1wb3J0IDx3dGYvU29mdExpbmtp
bmcuaD4KLQotU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChNZWRpYVBsYXllcikKLVNPRlRf
TElOS19DTEFTUyhNZWRpYVBsYXllciwgTVBSZW1vdGVDb21tYW5kQ2VudGVyKQotU09GVF9MSU5L
X0NMQVNTKE1lZGlhUGxheWVyLCBNUFNlZWtDb21tYW5kRXZlbnQpCi1TT0ZUX0xJTktfQ0xBU1Mo
TWVkaWFQbGF5ZXIsIE1QQ2hhbmdlUGxheWJhY2tQb3NpdGlvbkNvbW1hbmRFdmVudCkKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ29tbWFuZExpc3RlbmVy
SU9TPiBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1M6OmNyZWF0ZShSZW1vdGVDb21tYW5kTGlzdGVu
ZXJDbGllbnQmIGNsaWVudCkKLXsKLSAgICBpZiAoIU1lZGlhUGxheWVyTGlicmFyeSgpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUNvbW1h
bmRMaXN0ZW5lcklPUz4oY2xpZW50KTsKLX0KLQotUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TOjpS
ZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JiBjbGll
bnQpCi0gICAgOiBSZW1vdGVDb21tYW5kTGlzdGVuZXIoY2xpZW50KQotewotICAgIE1QUmVtb3Rl
Q29tbWFuZENlbnRlciAqY2VudGVyID0gW2dldE1QUmVtb3RlQ29tbWFuZENlbnRlckNsYXNzKCkg
c2hhcmVkQ29tbWFuZENlbnRlcl07Ci0gICAgYXV0byB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0
aGlzKTsKLSAgICAKLSAgICBtX3BhdXNlVGFyZ2V0ID0gW1tjZW50ZXIgcGF1c2VDb21tYW5kXSBh
ZGRUYXJnZXRXaXRoSGFuZGxlcjpeKE1QUmVtb3RlQ29tbWFuZEV2ZW50ICopIHsKLSAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXNdIHsKLSAgICAgICAgICAgIGlmICghd2Vha1RoaXMp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgd2Vha1RoaXMtPm1fY2xpZW50
LmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGF1
c2VDb21tYW5kLCB7IH0pOwotICAgICAgICB9KTsKLQotICAgICAgICByZXR1cm4gTVBSZW1vdGVD
b21tYW5kSGFuZGxlclN0YXR1c1N1Y2Nlc3M7Ci0gICAgfV07Ci0KLSAgICBtX3BsYXlUYXJnZXQg
PSBbW2NlbnRlciBwbGF5Q29tbWFuZF0gYWRkVGFyZ2V0V2l0aEhhbmRsZXI6XihNUFJlbW90ZUNv
bW1hbmRFdmVudCAqKSB7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzXSB7Ci0g
ICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIHdlYWtUaGlzLT5tX2NsaWVudC5kaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQo
UGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlDb21tYW5kLCB7IH0pOwotICAgICAgICB9KTsKLQot
ICAgICAgICByZXR1cm4gTVBSZW1vdGVDb21tYW5kSGFuZGxlclN0YXR1c1N1Y2Nlc3M7Ci0gICAg
fV07Ci0KLSAgICBtX3RvZ2dsZVBsYXlQYXVzZVRhcmdldCA9IFtbY2VudGVyIHRvZ2dsZVBsYXlQ
YXVzZUNvbW1hbmRdIGFkZFRhcmdldFdpdGhIYW5kbGVyOl4oTVBSZW1vdGVDb21tYW5kRXZlbnQg
KikgewotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpc10gewotICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB3ZWFr
VGhpcy0+bV9jbGllbnQuZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpUb2dnbGVQbGF5UGF1c2VDb21tYW5kLCB7IH0pOwotICAgICAgICB9KTsKLQot
ICAgICAgICByZXR1cm4gTVBSZW1vdGVDb21tYW5kSGFuZGxlclN0YXR1c1N1Y2Nlc3M7Ci0gICAg
fV07Ci0KLSAgICBtX3NlZWtCYWNrd2FyZFRhcmdldCA9IFtbY2VudGVyIHNlZWtCYWNrd2FyZENv
bW1hbmRdIGFkZFRhcmdldFdpdGhIYW5kbGVyOl4oTVBSZW1vdGVDb21tYW5kRXZlbnQgKmV2ZW50
KSB7Ci0gICAgICAgIEFTU0VSVChbZXZlbnQgaXNLaW5kT2ZDbGFzczpnZXRNUFNlZWtDb21tYW5k
RXZlbnRDbGFzcygpXSk7Ci0KLSAgICAgICAgTVBTZWVrQ29tbWFuZEV2ZW50KiBzZWVrRXZlbnQg
PSBzdGF0aWNfY2FzdDxNUFNlZWtDb21tYW5kRXZlbnQgKj4oZXZlbnQpOwotICAgICAgICBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1hbmQgPSBbc2Vl
a0V2ZW50IHR5cGVdID09IE1QU2Vla0NvbW1hbmRFdmVudFR5cGVCZWdpblNlZWtpbmcgPyBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nQmFja3dhcmRDb21tYW5kIDogUGxhdGZvcm1N
ZWRpYVNlc3Npb246OkVuZFNlZWtpbmdCYWNrd2FyZENvbW1hbmQ7Ci0KLSAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbd2Vha1RoaXMsIGNvbW1hbmRdIHsKLSAgICAgICAgICAgIGlmICghd2Vha1Ro
aXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgd2Vha1RoaXMtPm1fY2xp
ZW50LmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChjb21tYW5kLCB7IH0pOwotICAgICAg
ICB9KTsKLQotICAgICAgICByZXR1cm4gTVBSZW1vdGVDb21tYW5kSGFuZGxlclN0YXR1c1N1Y2Nl
c3M7Ci0gICAgfV07Ci0gICAgCi0gICAgbV9zZWVrRm9yd2FyZFRhcmdldCA9IFtbY2VudGVyIHNl
ZWtGb3J3YXJkQ29tbWFuZF0gYWRkVGFyZ2V0V2l0aEhhbmRsZXI6XihNUFJlbW90ZUNvbW1hbmRF
dmVudCAqZXZlbnQpIHsKLSAgICAgICAgQVNTRVJUKFtldmVudCBpc0tpbmRPZkNsYXNzOmdldE1Q
U2Vla0NvbW1hbmRFdmVudENsYXNzKCldKTsKLSAgICAgICAgTVBTZWVrQ29tbWFuZEV2ZW50KiBz
ZWVrRXZlbnQgPSBzdGF0aWNfY2FzdDxNUFNlZWtDb21tYW5kRXZlbnQgKj4oZXZlbnQpOwotCi0g
ICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29t
bWFuZCA9IFtzZWVrRXZlbnQgdHlwZV0gPT0gTVBTZWVrQ29tbWFuZEV2ZW50VHlwZUJlZ2luU2Vl
a2luZyA/IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdpblNlZWtpbmdGb3J3YXJkQ29tbWFuZCA6
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQ7Ci0KLSAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMsIGNvbW1hbmRdIHsKLSAgICAgICAgICAgIGlm
ICghd2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgd2Vha1Ro
aXMtPm1fY2xpZW50LmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChjb21tYW5kLCB7IH0p
OwotICAgICAgICB9KTsKLQotICAgICAgICByZXR1cm4gTVBSZW1vdGVDb21tYW5kSGFuZGxlclN0
YXR1c1N1Y2Nlc3M7Ci0gICAgfV07Ci0KLSAgICBtX3NlZWtUb1RpbWVUYXJnZXQgPSBbW2NlbnRl
ciBjaGFuZ2VQbGF5YmFja1Bvc2l0aW9uQ29tbWFuZF0gYWRkVGFyZ2V0V2l0aEhhbmRsZXI6XihN
UFJlbW90ZUNvbW1hbmRFdmVudCAqZXZlbnQpIHsKLSAgICAgICAgQVNTRVJUKFtldmVudCBpc0tp
bmRPZkNsYXNzOmdldE1QQ2hhbmdlUGxheWJhY2tQb3NpdGlvbkNvbW1hbmRFdmVudENsYXNzKCld
KTsKLQotICAgICAgICBpZiAoIW1fc3VwcG9ydHNTZWVraW5nKQotICAgICAgICAgICAgcmV0dXJu
IE1QUmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0dXNDb21tYW5kRmFpbGVkOwotCi0gICAgICAgIE1Q
Q2hhbmdlUGxheWJhY2tQb3NpdGlvbkNvbW1hbmRFdmVudCogc2Vla0V2ZW50ID0gc3RhdGljX2Nh
c3Q8TVBDaGFuZ2VQbGF5YmFja1Bvc2l0aW9uQ29tbWFuZEV2ZW50ICo+KGV2ZW50KTsKLSAgICAg
ICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCBhcmd1bWVudCB7
IFtzZWVrRXZlbnQgcG9zaXRpb25UaW1lXSwgeyB9IH07Ci0KLSAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbd2Vha1RoaXMsIGFyZ3VtZW50ID0gV1RGTW92ZShhcmd1bWVudCldIHsKLSAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
d2Vha1RoaXMtPm1fY2xpZW50LmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQsIGFyZ3VtZW50KTsK
LSAgICAgICAgfSk7Ci0KLSAgICAgICAgcmV0dXJuIE1QUmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0
dXNTdWNjZXNzOwotICAgIH1dOwotfQotCi1SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1M6On5SZW1v
dGVDb21tYW5kTGlzdGVuZXJJT1MoKQotewotICAgIE1QUmVtb3RlQ29tbWFuZENlbnRlciAqY2Vu
dGVyID0gW2dldE1QUmVtb3RlQ29tbWFuZENlbnRlckNsYXNzKCkgc2hhcmVkQ29tbWFuZENlbnRl
cl07Ci0gICAgW1tjZW50ZXIgcGF1c2VDb21tYW5kXSByZW1vdmVUYXJnZXQ6bV9wYXVzZVRhcmdl
dC5nZXQoKV07Ci0gICAgW1tjZW50ZXIgcGxheUNvbW1hbmRdIHJlbW92ZVRhcmdldDptX3BsYXlU
YXJnZXQuZ2V0KCldOwotICAgIFtbY2VudGVyIHRvZ2dsZVBsYXlQYXVzZUNvbW1hbmRdIHJlbW92
ZVRhcmdldDptX3RvZ2dsZVBsYXlQYXVzZVRhcmdldC5nZXQoKV07Ci0gICAgW1tjZW50ZXIgc2Vl
a0ZvcndhcmRDb21tYW5kXSByZW1vdmVUYXJnZXQ6bV9zZWVrRm9yd2FyZFRhcmdldC5nZXQoKV07
Ci0gICAgW1tjZW50ZXIgc2Vla0JhY2t3YXJkQ29tbWFuZF0gcmVtb3ZlVGFyZ2V0Om1fc2Vla0Jh
Y2t3YXJkVGFyZ2V0LmdldCgpXTsKLSAgICBbW2NlbnRlciBjaGFuZ2VQbGF5YmFja1Bvc2l0aW9u
Q29tbWFuZF0gcmVtb3ZlVGFyZ2V0Om1fc2Vla1RvVGltZVRhcmdldC5nZXQoKV07Ci19Ci0KLXZv
aWQgUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TOjp1cGRhdGVTdXBwb3J0ZWRDb21tYW5kcygpCi17
Ci0gICAgW1tbZ2V0TVBSZW1vdGVDb21tYW5kQ2VudGVyQ2xhc3MoKSBzaGFyZWRDb21tYW5kQ2Vu
dGVyXSBjaGFuZ2VQbGF5YmFja1Bvc2l0aW9uQ29tbWFuZF0gc2V0RW5hYmxlZDptX3N1cHBvcnRz
U2Vla2luZ107Ci19Ci0KLX0KLQotI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVy
TWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVy
TWFjLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxYzc1OTlhMDQxZDE1MjhlZWEw
MWVlNmFiN2Q3MDViNDE1Yzc0ZDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0
ZW5lck1hYy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJSZW1vdGVDb21tYW5kTGlzdGVuZXIuaCIKLQot
I2lmIFBMQVRGT1JNKE1BQykKLQotI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjIDogcHVibGljIFJl
bW90ZUNvbW1hbmRMaXN0ZW5lciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90ZUNvbW1hbmRM
aXN0ZW5lck1hYz4gewotcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
Q29tbWFuZExpc3RlbmVyTWFjPiBjcmVhdGUoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50Jik7
Ci0gICAgUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVu
dCYpOwotICAgIHZpcnR1YWwgflJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYygpOwotCi1wcm90ZWN0
ZWQ6Ci0gICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRDb21tYW5kcygpIGZpbmFsOwotCi0gICAgdm9p
ZCogbV9jb21tYW5kSGFuZGxlciB7IG51bGxwdHIgfTsKLQotICAgIGNvbnN0IFJlbW90ZUNvbW1h
bmRzU2V0JiBkZWZhdWx0Q29tbWFuZHMoKTsKLSAgICBSZW1vdGVDb21tYW5kc1NldCBtX2N1cnJl
bnRDb21tYW5kczsKLSAgICBib29sIG1fc3VwcG9ydHNTZWVraW5nIHsgZmFsc2UgfTsKLX07Ci0g
ICAgCi19Ci0KLSNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZTVkMmI3ZjNjMDAwMDYyNzMzOTg2MTU5MjlhYTQyYzcwOTM3
ZmI0NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tCisrKyAv
ZGV2L251bGwKQEAgLTEsMjI5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJj
b25maWcuaCIKLSNpbXBvcnQgIlJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5oIgotCi0jaWYgUExB
VEZPUk0oTUFDKQotCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDx3dGYvTWFpblRocmVh
ZC5oPgotCi0jaW1wb3J0ICJNZWRpYVJlbW90ZVNvZnRMaW5rLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotc3RhdGljIE9wdGlvbmFsPE1STWVkaWFSZW1vdGVDb21tYW5kPiBtZWRpYVJlbW90
ZUNvbW1hbmRGb3JQbGF0Zm9ybUNvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNv
bnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQotewotICAgIHN0YXRpYyBjb25zdCBhdXRvIGNvbW1h
bmRNYXAgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAgICAgICB1c2luZyBDb21tYW5kVG9B
Y3Rpb25NYXAgPSBIYXNoTWFwPFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29t
bWFuZFR5cGUsIE1STWVkaWFSZW1vdGVDb21tYW5kLCBXVEY6OkludEhhc2g8UGxhdGZvcm1NZWRp
YVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hU
cmFpdHM8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZT4+Owot
Ci0gICAgICAgIHJldHVybiBDb21tYW5kVG9BY3Rpb25NYXAgewotICAgICAgICAgICAgeyBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheUNvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kUGxheSB9
LAotICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGF1c2VDb21tYW5kLCBNUk1l
ZGlhUmVtb3RlQ29tbWFuZFBhdXNlIH0sCi0gICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpTdG9wQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRTdG9wIH0sCi0gICAgICAgICAg
ICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpUb2dnbGVQbGF5UGF1c2VDb21tYW5kLCBNUk1lZGlh
UmVtb3RlQ29tbWFuZFRvZ2dsZVBsYXlQYXVzZSB9LAotICAgICAgICAgICAgeyBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nQmFja3dhcmRDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29t
bWFuZEJlZ2luUmV3aW5kIH0sCi0gICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpF
bmRTZWVraW5nQmFja3dhcmRDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZEVuZFJld2luZCB9
LAotICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nRm9yd2Fy
ZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kQmVnaW5GYXN0Rm9yd2FyZCB9LAotICAgICAg
ICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kU2Vla2luZ0ZvcndhcmRDb21tYW5kLCBN
Uk1lZGlhUmVtb3RlQ29tbWFuZEVuZEZhc3RGb3J3YXJkIH0sCi0gICAgICAgICAgICB7IFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpTZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFuZCwgTVJNZWRpYVJl
bW90ZUNvbW1hbmRTZWVrVG9QbGF5YmFja1Bvc2l0aW9uIH0sCi0gICAgICAgICAgICB7IFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpTa2lwRm9yd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5k
U2tpcEZvcndhcmQgfSwKLSAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBC
YWNrd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEJhY2t3YXJkIH0sCi0gICAg
ICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOZXh0VHJhY2tDb21tYW5kLCBNUk1lZGlh
UmVtb3RlQ29tbWFuZE5leHRUcmFjayB9LAotICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6UHJldmlvdXNUcmFja0NvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kUHJldmlvdXNU
cmFjayB9LAotICAgICAgICB9OwotICAgIH0oKSk7Ci0KLSAgICBhdXRvIGl0ID0gY29tbWFuZE1h
cC5nZXQoKS5maW5kKGNvbW1hbmQpOwotICAgIGlmIChpdCAhPSBjb21tYW5kTWFwLmdldCgpLmVu
ZCgpKQotICAgICAgICByZXR1cm4geyBpdC0+dmFsdWUgfTsKLQotICAgIHJldHVybiB7IH07Ci19
Ci0KLXN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM+IFJlbW90ZUNvbW1h
bmRMaXN0ZW5lck1hYzo6Y3JlYXRlKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYgY2xpZW50
KQotewotICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYz4oY2xp
ZW50KTsKLX0KLQotY29uc3QgUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpSZW1vdGVDb21tYW5kc1Nl
dCYgUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjOjpkZWZhdWx0Q29tbWFuZHMoKQotewotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxSZW1vdGVDb21tYW5kc1NldD4gY29tbWFuZHMoc3RkOjppbml0
aWFsaXplcl9saXN0PFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5
cGU+IHsKLSAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlDb21tYW5kLAotICAgICAg
ICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGF1c2VDb21tYW5kLAotICAgICAgICBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6VG9nZ2xlUGxheVBhdXNlQ29tbWFuZCwKLSAgICAgICAgUGxhdGZvcm1NZWRp
YVNlc3Npb246OkJlZ2luU2Vla2luZ0ZvcndhcmRDb21tYW5kLAotICAgICAgICBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6RW5kU2Vla2luZ0ZvcndhcmRDb21tYW5kLAotICAgICAgICBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nQmFja3dhcmRDb21tYW5kLAotICAgICAgICBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6RW5kU2Vla2luZ0JhY2t3YXJkQ29tbWFuZCwKLSAgICAgICAgUGxhdGZv
cm1NZWRpYVNlc3Npb246OlNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5kLAotICAgICAgICBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEZvcndhcmRDb21tYW5kLAotICAgICAgICBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6U2tpcEJhY2t3YXJkQ29tbWFuZCwKLSAgICB9KTsKLQotICAgIHJldHVy
biBjb21tYW5kczsKLX0KLQotc3RhdGljIGJvb2wgaXNTZWVrQ29tbWFuZChQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1hbmQpCi17Ci0gICAgcmV0dXJu
IGNvbW1hbmQgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlNlZWtUb1BsYXliYWNrUG9zaXRpb25D
b21tYW5kCi0gICAgICAgIHx8IGNvbW1hbmQgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBG
b3J3YXJkQ29tbWFuZAotICAgICAgICB8fCBjb21tYW5kID09IFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpTa2lwQmFja3dhcmRDb21tYW5kCi0gICAgICAgIHx8IGNvbW1hbmQgPT0gUGxhdGZvcm1NZWRp
YVNlc3Npb246OkJlZ2luU2Vla2luZ0ZvcndhcmRDb21tYW5kCi0gICAgICAgIHx8IGNvbW1hbmQg
PT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkJlZ2luU2Vla2luZ0JhY2t3YXJkQ29tbWFuZDsKLX0K
LQotdm9pZCBSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM6OnVwZGF0ZVN1cHBvcnRlZENvbW1hbmRz
KCkKLXsKLSAgICBpZiAoIWlzTWVkaWFSZW1vdGVGcmFtZXdvcmtBdmFpbGFibGUoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgYXV0byYgc3VwcG9ydGVkQ29tbWFuZHMgPSAhbV9yZWdpc3RlcmVk
Q29tbWFuZHMuaXNFbXB0eSgpID8gbV9yZWdpc3RlcmVkQ29tbWFuZHMgOiBkZWZhdWx0Q29tbWFu
ZHMoKTsKLSAgICBpZiAobV9jdXJyZW50Q29tbWFuZHMgPT0gc3VwcG9ydGVkQ29tbWFuZHMpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gY29tbWFuZEluZm9BcnJheSA9IGFkb3B0Q0YoQ0ZB
cnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3VwcG9ydGVkQ29tbWFuZHMu
c2l6ZSgpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7Ci0gICAgZm9yIChhdXRvIHBsYXRmb3Jt
Q29tbWFuZCA6IHN1cHBvcnRlZENvbW1hbmRzKSB7Ci0gICAgICAgIGlmIChpc1NlZWtDb21tYW5k
KHBsYXRmb3JtQ29tbWFuZCkgJiYgIW1fc3VwcG9ydHNTZWVraW5nKQotICAgICAgICAgICAgY29u
dGludWU7Ci0KLSAgICAgICAgYXV0byBjb21tYW5kID0gbWVkaWFSZW1vdGVDb21tYW5kRm9yUGxh
dGZvcm1Db21tYW5kKHBsYXRmb3JtQ29tbWFuZCk7Ci0gICAgICAgIEFTU0VSVChjb21tYW5kKTsK
LSAgICAgICAgaWYgKCFjb21tYW5kKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAg
YXV0byBjb21tYW5kSW5mbyA9IGFkb3B0Q0YoTVJNZWRpYVJlbW90ZUNvbW1hbmRJbmZvQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQpKTsKLSAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRJbmZv
U2V0Q29tbWFuZChjb21tYW5kSW5mby5nZXQoKSwgY29tbWFuZC52YWx1ZSgpKTsKLSAgICAgICAg
TVJNZWRpYVJlbW90ZUNvbW1hbmRJbmZvU2V0RW5hYmxlZChjb21tYW5kSW5mby5nZXQoKSwgdHJ1
ZSk7Ci0gICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShjb21tYW5kSW5mb0FycmF5LmdldCgpLCBj
b21tYW5kSW5mby5nZXQoKSk7Ci0gICAgfQotCi0gICAgTVJNZWRpYVJlbW90ZVNldFN1cHBvcnRl
ZENvbW1hbmRzKGNvbW1hbmRJbmZvQXJyYXkuZ2V0KCksIE1STWVkaWFSZW1vdGVHZXRMb2NhbE9y
aWdpbigpLCBudWxscHRyLCBudWxscHRyKTsKLSAgICBtX2N1cnJlbnRDb21tYW5kcyA9IHN1cHBv
cnRlZENvbW1hbmRzOwotfQotCi1SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM6OlJlbW90ZUNvbW1h
bmRMaXN0ZW5lck1hYyhSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmIGNsaWVudCkKLSAgICA6
IFJlbW90ZUNvbW1hbmRMaXN0ZW5lcihjbGllbnQpCi17Ci0gICAgaWYgKCFpc01lZGlhUmVtb3Rl
RnJhbWV3b3JrQXZhaWxhYmxlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNjaGVkdWxlU3Vw
cG9ydGVkQ29tbWFuZHNVcGRhdGUoKTsKLQotICAgIGF1dG8gd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cigqdGhpcyk7Ci0gICAgbV9jb21tYW5kSGFuZGxlciA9IE1STWVkaWFSZW1vdGVBZGRBc3luY0Nv
bW1hbmRIYW5kbGVyQmxvY2soXihNUk1lZGlhUmVtb3RlQ29tbWFuZCBjb21tYW5kLCBDRkRpY3Rp
b25hcnlSZWYgb3B0aW9ucywgdm9pZCheY29tcGxldGlvbikoQ0ZBcnJheVJlZikpIHsKLQotICAg
ICAgICBMT0coTWVkaWEsICJSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM6OlJlbW90ZUNvbW1hbmRM
aXN0ZW5lck1hYyAtIHJlY2VpdmVkIGNvbW1hbmQgJXUiLCBjb21tYW5kKTsKLQotICAgICAgICBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIHBsYXRmb3JtQ29t
bWFuZCB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0NvbW1hbmQgfTsKLSAgICAgICAgUGxhdGZv
cm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCBhcmd1bWVudDsKLSAgICAgICAg
TVJNZWRpYVJlbW90ZUNvbW1hbmRIYW5kbGVyU3RhdHVzIHN0YXR1cyA9IE1STWVkaWFSZW1vdGVD
b21tYW5kSGFuZGxlclN0YXR1c1N1Y2Nlc3M7Ci0KLSAgICAgICAgc3dpdGNoIChjb21tYW5kKSB7
Ci0gICAgICAgIGNhc2UgTVJNZWRpYVJlbW90ZUNvbW1hbmRQbGF5OgotICAgICAgICAgICAgcGxh
dGZvcm1Db21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlDb21tYW5kOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTVJNZWRpYVJlbW90ZUNvbW1hbmRQYXVzZToKLSAg
ICAgICAgICAgIHBsYXRmb3JtQ29tbWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQYXVzZUNv
bW1hbmQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNUk1lZGlhUmVtb3RlQ29t
bWFuZFN0b3A6Ci0gICAgICAgICAgICBwbGF0Zm9ybUNvbW1hbmQgPSBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6U3RvcENvbW1hbmQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNUk1l
ZGlhUmVtb3RlQ29tbWFuZFRvZ2dsZVBsYXlQYXVzZToKLSAgICAgICAgICAgIHBsYXRmb3JtQ29t
bWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpUb2dnbGVQbGF5UGF1c2VDb21tYW5kOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTVJNZWRpYVJlbW90ZUNvbW1hbmRCZWdpbkZh
c3RGb3J3YXJkOgotICAgICAgICAgICAgcGxhdGZvcm1Db21tYW5kID0gUGxhdGZvcm1NZWRpYVNl
c3Npb246OkJlZ2luU2Vla2luZ0ZvcndhcmRDb21tYW5kOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgTVJNZWRpYVJlbW90ZUNvbW1hbmRFbmRGYXN0Rm9yd2FyZDoKLSAgICAgICAg
ICAgIHBsYXRmb3JtQ29tbWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nRm9y
d2FyZENvbW1hbmQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNUk1lZGlhUmVt
b3RlQ29tbWFuZEJlZ2luUmV3aW5kOgotICAgICAgICAgICAgcGxhdGZvcm1Db21tYW5kID0gUGxh
dGZvcm1NZWRpYVNlc3Npb246OkJlZ2luU2Vla2luZ0JhY2t3YXJkQ29tbWFuZDsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1STWVkaWFSZW1vdGVDb21tYW5kRW5kUmV3aW5kOgot
ICAgICAgICAgICAgcGxhdGZvcm1Db21tYW5kID0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNl
ZWtpbmdCYWNrd2FyZENvbW1hbmQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBN
Uk1lZGlhUmVtb3RlQ29tbWFuZFNlZWtUb1BsYXliYWNrUG9zaXRpb246IHsKLSAgICAgICAgICAg
IGlmICghbV9zdXBwb3J0c1NlZWtpbmcpIHsKLSAgICAgICAgICAgICAgICBzdGF0dXMgPSBNUk1l
ZGlhUmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0dXNDb21tYW5kRmFpbGVkOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBDRk51bWJlclJlZiBwb3Np
dGlvblJlZiA9IHN0YXRpY19jYXN0PENGTnVtYmVyUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShv
cHRpb25zLCBrTVJNZWRpYVJlbW90ZU9wdGlvblBsYXliYWNrUG9zaXRpb24pKTsKLSAgICAgICAg
ICAgIGlmICghcG9zaXRpb25SZWYpIHsKLSAgICAgICAgICAgICAgICBzdGF0dXMgPSBNUk1lZGlh
UmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0dXNDb21tYW5kRmFpbGVkOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBkb3VibGUgcG9zaXRpb24gPSAw
OwotICAgICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShwb3NpdGlvblJlZiwga0NGTnVtYmVyRG91
YmxlVHlwZSwgJnBvc2l0aW9uKTsKLSAgICAgICAgICAgIGFyZ3VtZW50LnRpbWUgPSBwb3NpdGlv
bjsKLSAgICAgICAgICAgIHBsYXRmb3JtQ29tbWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpT
ZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFuZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwRm9yd2FyZDoKLSAgICAg
ICAgY2FzZSBNUk1lZGlhUmVtb3RlQ29tbWFuZFNraXBCYWNrd2FyZDoKLSAgICAgICAgICAgIGlm
ICghbV9zdXBwb3J0c1NlZWtpbmcpIHsKLSAgICAgICAgICAgICAgICBzdGF0dXMgPSBNUk1lZGlh
UmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0dXNDb21tYW5kRmFpbGVkOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoYXV0byBwb3NpdGlvblJl
ZiA9IHN0YXRpY19jYXN0PENGTnVtYmVyUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShvcHRpb25z
LCBrTVJNZWRpYVJlbW90ZU9wdGlvblNraXBJbnRlcnZhbCkpKSB7Ci0gICAgICAgICAgICAgICAg
ZG91YmxlIHBvc2l0aW9uID0gMDsKLSAgICAgICAgICAgICAgICBDRk51bWJlckdldFZhbHVlKHBv
c2l0aW9uUmVmLCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAmcG9zaXRpb24pOwotICAgICAgICAgICAg
ICAgIGFyZ3VtZW50LnRpbWUgPSBwb3NpdGlvbjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgcGxhdGZvcm1Db21tYW5kID0gKGNvbW1hbmQgPT0gTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lw
Rm9yd2FyZCkgPyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEZvcndhcmRDb21tYW5kIDogUGxh
dGZvcm1NZWRpYVNlc3Npb246OlNraXBCYWNrd2FyZENvbW1hbmQ7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBNUk1lZGlhUmVtb3RlQ29tbWFuZE5leHRUcmFjazoKLSAgICAgICAg
ICAgIHBsYXRmb3JtQ29tbWFuZCA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOZXh0VHJhY2tDb21t
YW5kOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTVJNZWRpYVJlbW90ZUNvbW1h
bmRQcmV2aW91c1RyYWNrOgotICAgICAgICAgICAgcGxhdGZvcm1Db21tYW5kID0gUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlByZXZpb3VzVHJhY2tDb21tYW5kOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBMT0coTWVkaWEsICJSZW1vdGVDb21tYW5kTGlz
dGVuZXJNYWM6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYyAtIGNvbW1hbmQgJXUgbm90IHN1cHBv
cnRlZCEiLCBjb21tYW5kKTsKLSAgICAgICAgICAgIHN0YXR1cyA9IE1STWVkaWFSZW1vdGVDb21t
YW5kSGFuZGxlclN0YXR1c0NvbW1hbmRGYWlsZWQ7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgaWYg
KHdlYWtUaGlzICYmIHN0YXR1cyAhPSBNUk1lZGlhUmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0dXND
b21tYW5kRmFpbGVkKQotICAgICAgICAgICAgd2Vha1RoaXMtPm1fY2xpZW50LmRpZFJlY2VpdmVS
ZW1vdGVDb250cm9sQ29tbWFuZChwbGF0Zm9ybUNvbW1hbmQsIGFyZ3VtZW50KTsKLQotICAgICAg
ICBjb21wbGV0aW9uKChfX2JyaWRnZSBDRkFycmF5UmVmKUBbQChzdGF0dXMpXSk7Ci0gICAgfSk7
Ci19Ci0KLVJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYzo6flJlbW90ZUNvbW1hbmRMaXN0ZW5lck1h
YygpCi17Ci0gICAgaWYgKG1fY29tbWFuZEhhbmRsZXIpCi0gICAgICAgIE1STWVkaWFSZW1vdGVS
ZW1vdmVDb21tYW5kSGFuZGxlckJsb2NrKG1fY29tbWFuZEhhbmRsZXIpOwotfQotCi19Ci0KLSNl
bmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>