<?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>231912</bug_id>
          
          <creation_ts>2021-10-18 15:11:32 -0700</creation_ts>
          <short_desc>Remove TCPServer</short_desc>
          <delta_ts>2021-10-18 17:44:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1805726</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-18 15:11:32 -0700</bug_when>
    <thetext>Remove TCPServer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805727</commentid>
    <comment_count>1</comment_count>
      <attachid>441641</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-18 15:13:27 -0700</bug_when>
    <thetext>Created attachment 441641
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805802</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-18 17:23:28 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 441641 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805807</commentid>
    <comment_count>3</comment_count>
      <attachid>441641</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-18 17:44:33 -0700</bug_when>
    <thetext>Comment on attachment 441641
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/Proxy.mm:-42
&gt; -#if HAVE(SSL)

This was removed earlier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805808</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-18 17:44:45 -0700</bug_when>
    <thetext>r284418</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441641</attachid>
            <date>2021-10-18 15:13:27 -0700</date>
            <delta_ts>2021-10-18 17:23:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231912-20211018151326.patch</filename>
            <type>text/plain</type>
            <size>52376</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0Mzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDBkN2I2ZDU0ZDRlZTUwYzU5ZTM3MGY3
ZDdjMDNiY2EzYTNkMzEwMTUuLjVmMTIwYjBhOWI4NWJhMmNhM2RhNTg3ZWI4NjllZTBmY2EwZWYy
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTAtMTggIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgVENQU2VydmVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE5MTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9y
bUhhdmUuaDoKKwogMjAyMS0xMC0xOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CiAKICAgICAgICAgW0dMSUJdIFNpbXBsaWZ5IFNsZWVwRGlzYWJsZXIgYnkgY2hl
Y2tpbmcgaWYgd2UgYXJlIHVuZGVyIHNhbmRib3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtSGF2ZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggOTAw
N2U2ZTZlN2FlMjIwOWExNjFkOGU3NDY0OGI2NDk0M2U0ZTgyYS4uNTM1YjE1MTk0N2ZhMjNjYjAw
NzNhYThiZGVjZDNmMGYwYTM3MGU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1IYXZlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTk0NSw2ICs5
NDUsNyBAQAogICAgIHx8IChQTEFURk9STShXQVRDSE9TKSAmJiBfX1dBVENIX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDgwMDAwKSBcCiAgICAgfHwgKFBMQVRGT1JNKEFQUExFVFYpICYmIF9f
VFZfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTUwMDAwKQogI2RlZmluZSBIQVZFX0NGTkVU
V09SS19OU1VSTFNFU1NJT05fQVRUUklCVVRFRF9CVU5ETEVfSURFTlRJRklFUiAxCisjZGVmaW5l
IEhBVkVfQ0ZORVRXT1JLX05TVVJMU0VTU0lPTl9IU1RTX1dJVEhfVU5UUlVTVEVEX1JPT1QgMQog
I2RlZmluZSBIQVZFX0FVRElPX09CSkVDVF9QUk9QRVJUWV9FTEVNRU5UX01BSU4gMQogI2RlZmlu
ZSBIQVZFX0lNQUdFX1JFU1RSSUNURURfREVDT0RJTkcgMQogI2VuZGlmCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzViODM3YjUyYjc2YWY4ODc1
Y2QwMGFlMzIwNjczOTM1MmYxOWNmNC4uYzA0NGQwZjZhMjQ2ZTE4OTkwZmExMjgyYzk2Yjc3M2Vm
ZGYzOWViMiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDM1IEBACisyMDIxLTEwLTE4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIFRDUFNlcnZlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxOTEyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXQgaGFzIGJlZW4gcmVwbGFj
ZWQgYnkgSFRUUFNlcnZlciwgd2hpY2ggZG9lc24ndCB0aW1lIG91dCBpbiBpdHMgZGVzdHJ1Y3Rv
ciB3aGVuIG5vdCBldmVyeXRoaW5nIGlzIHBlcmZlY3QsCisgICAgICAgIGFuZCB3aGljaCBkb2Vz
IGl0cyBsb2dpYyBvbiB0aGUgbWFpbiB0aHJlYWQuICBJdCBhbHNvIGRvZXNuJ3QgdXNlIGJvcmlu
Z3NzbCBkaXJlY3RseSwgc28gd2UgY2FuIGNvbXBpbGUgaXQgb24gd2F0Y2hPUyBhbmQgdHZPUy4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvU291cmNlcy50eHQ6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UQ1BTZXJ2ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VENQU2VydmVyLmg6IFJlbW92ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW06CisgICAgICAgICh0ZXN0Q2VydGlmaWNhdGUp
OgorICAgICAgICAodGVzdElkZW50aXR5KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0NvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbi5tbToKKyAgICAgICAgKFRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSFNUUy5tbToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmhzdHNXZWJWaWV3QW5kRGVsZWdhdGUpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6aHN0c1NlcnZlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Omhhc1JhZGFyODA1NTAxMjMpOiBEZWxldGVk
LgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJveHkubW06Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyVENQ
U2VydmVyLmg6CisgICAgICAgIChTZXJ2aWNlV29ya2VyVENQU2VydmVyOjpyZXNwb25kVG9SZXF1
ZXN0cyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmg6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6SFRUUFNlcnZlcjo6dGVzdENlcnRpZmljYXRlKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OkhUVFBTZXJ2ZXI6OnRlc3RQcml2YXRlS2V5KToKKwogMjAyMS0xMC0xOCAgSm9uYXRo
YW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW3dlYmtpdHNjbXB5XSBB
bGxvdyByZXBvc2l0b3JpZXMgdG8gZGVmaW5lIGN1c3RvbSBzZXR1cCBjb21tYW5kcyAoRm9sbG93
MC11cCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlcy50eHQgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1NvdXJjZXMudHh0CmluZGV4IGMzYWE0YmYyZjA3MzJmNGQwZTAzMTM4
NjA5NDEzODJiODY4NTA2YTEuLmI2Y2Q1NjI1MGJhYTU3YjAyMDZhZDI2MjM2MGY5MjNhZTk1MGNm
YzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlcy50eHQKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzLnR4dApAQCAtMjMsNiArMjMsNSBAQAogCiBKYXZhU2Ny
aXB0VGVzdC5jcHAKIFBsYXRmb3JtVXRpbGl0aWVzLmNwcAotVENQU2VydmVyLmNwcAogVGVzdHND
b250cm9sbGVyLmNwcAogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1RDUFNlcnZl
ci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDY1YjMzZjVkOTQ3NWJlOGFjYjc4YmIwNDhjYTNlMTcwODFlMjYyOTAu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UQ1BTZXJ2ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDc1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVENQU2VydmVyLmgi
Ci0KLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jaW5jbHVkZSA8dGhyZWFkPgotI2luY2x1ZGUg
PHVuaXN0ZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgotCi0jaWYgSEFWRShTU0wp
Ci0KLSNkZWZpbmUgU1RBQ0tfT0YodHlwZSkgc3RydWN0IHN0YWNrX3N0XyMjdHlwZQotCi1leHRl
cm4gIkMiIHsKLQotZW51bSBzc2xfdmVyaWZ5X3Jlc3VsdF90IHsKLSAgICBzc2xfdmVyaWZ5X29r
LAotICAgIHNzbF92ZXJpZnlfaW52YWxpZCwKLSAgICBzc2xfdmVyaWZ5X3JldHJ5LAotfTsKLQot
c3RydWN0IEJJTzsKLXN0cnVjdCBDUllQVE9fQlVGRkVSOwotc3RydWN0IFNTTF9DVFg7Ci1zdHJ1
Y3QgRVZQX1BLRVk7Ci1zdHJ1Y3QgU1NMX01FVEhPRDsKLXN0cnVjdCBTU0xfUFJJVkFURV9LRVlf
TUVUSE9EOwotc3RydWN0IF9TVEFDSzsKLXN0cnVjdCBDUllQVE9fQlVGRkVSX1BPT0w7Ci1zdHJ1
Y3QgcGVtX3Bhc3N3b3JkX2NiOwotaW50IEJJT19mcmVlKEJJTyopOwotaW50IFNTTF9mcmVlKFNT
TCopOwotaW50IFNTTF9DVFhfZnJlZShTU0xfQ1RYKik7Ci1pbnQgRVZQX1BLRVlfZnJlZShFVlBf
UEtFWSopOwotaW50IFNTTF9saWJyYXJ5X2luaXQoKTsKLWNvbnN0IFNTTF9NRVRIT0QqIFRMU193
aXRoX2J1ZmZlcnNfbWV0aG9kKCk7Ci1CSU8qIEJJT19uZXdfbWVtX2J1Zihjb25zdCB2b2lkKiwg
aW50KTsKLUVWUF9QS0VZKiBQRU1fcmVhZF9iaW9fUHJpdmF0ZUtleShCSU8qLCBFVlBfUEtFWSoq
LCBwZW1fcGFzc3dvcmRfY2IqLCB2b2lkKik7Ci1TU0xfQ1RYKiBTU0xfQ1RYX25ldyhjb25zdCBT
U0xfTUVUSE9EKik7Ci1TU0wqIFNTTF9uZXcoU1NMX0NUWCopOwotaW50IFNTTF9hY2NlcHQoU1NM
Kik7Ci1pbnQgU1NMX3NldF9mZChTU0wqLCBpbnQpOwotaW50IFNTTF9nZXRfZXJyb3IoY29uc3Qg
U1NMKiwgaW50KTsKLXZvaWQgU1NMX0NUWF9zZXRfY3VzdG9tX3ZlcmlmeShTU0xfQ1RYKiwgaW50
IG1vZGUsIGVudW0gc3NsX3ZlcmlmeV9yZXN1bHRfdCAoKmNhbGxiYWNrKShTU0wgKnNzbCwgdWlu
dDhfdCAqb3V0X2FsZXJ0KSk7Ci1pbnQgU1NMX3JlYWQoU1NMKiwgdm9pZCosIGludCk7Ci1pbnQg
U1NMX3dyaXRlKFNTTCosIGNvbnN0IHZvaWQqLCBpbnQpOwotY29uc3QgdWludDhfdCogQ1JZUFRP
X0JVRkZFUl9kYXRhKGNvbnN0IENSWVBUT19CVUZGRVIqKTsKLXNpemVfdCBDUllQVE9fQlVGRkVS
X2xlbihjb25zdCBDUllQVE9fQlVGRkVSKik7Ci12b2lkIE9QRU5TU0xfZnJlZSh2b2lkKik7Ci1p
bnQgU1NMX0NUWF9zZXRfY2hhaW5fYW5kX2tleShTU0xfQ1RYKiwgQ1JZUFRPX0JVRkZFUiAqY29u
c3QgKmNlcnRzLCBzaXplX3QgbnVtX2NlcnRzLCBFVlBfUEtFWSosIGNvbnN0IFNTTF9QUklWQVRF
X0tFWV9NRVRIT0QqKTsKLUNSWVBUT19CVUZGRVIqIENSWVBUT19CVUZGRVJfbmV3KGNvbnN0IHVp
bnQ4X3QqLCBzaXplX3QsIENSWVBUT19CVUZGRVJfUE9PTCopOwotdm9pZCBDUllQVE9fQlVGRkVS
X2ZyZWUoQ1JZUFRPX0JVRkZFUiopOwotc2l6ZV90IHNrX251bShjb25zdCBfU1RBQ0sqKTsKLXZv
aWQqIHNrX3ZhbHVlKGNvbnN0IF9TVEFDSyosIHNpemVfdCk7Ci1jb25zdCBTVEFDS19PRihDUllQ
VE9fQlVGRkVSKSAqU1NMX2dldDBfcGVlcl9jZXJ0aWZpY2F0ZXMoY29uc3QgU1NMKik7Ci12b2lk
IFNTTF9DVFhfc2V0X21heF9wcm90b192ZXJzaW9uKFNTTF9DVFgqLCB1aW50MTZfdCk7Ci0jZGVm
aW5lIFNTTF9WRVJJRllfUEVFUiAweDAxCi0jZGVmaW5lIFNTTF9WRVJJRllfRkFJTF9JRl9OT19Q
RUVSX0NFUlQgMHgwMgotCi19IC8vIGV4dGVybiAiQyIKLQotaW5saW5lIHNpemVfdCBza19DUllQ
VE9fQlVGRkVSX251bShjb25zdCBTVEFDS19PRihDUllQVE9fQlVGRkVSKSAqc2spIHsgcmV0dXJu
IHNrX251bSgoY29uc3QgX1NUQUNLICopc2spOyB9Ci1pbmxpbmUgQ1JZUFRPX0JVRkZFUiogc2tf
Q1JZUFRPX0JVRkZFUl92YWx1ZShjb25zdCBTVEFDS19PRihDUllQVE9fQlVGRkVSKSAqc2ssIHNp
emVfdCBpKSB7IHJldHVybiAoQ1JZUFRPX0JVRkZFUiAqKXNrX3ZhbHVlKChjb25zdCBfU1RBQ0sg
KilzaywgaSk7IH0KLSNlbmRpZiAvLyBIQVZFKFNTTCkKLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgewotCi0jaWYgSEFWRShTU0wpCi10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IGRlbGV0ZXI7
Ci10ZW1wbGF0ZTw+IHN0cnVjdCBkZWxldGVyPEJJTz4gewotICAgIHZvaWQgb3BlcmF0b3IoKShC
SU8qIGJpbykKLSAgICB7Ci0gICAgICAgIEJJT19mcmVlKGJpbyk7Ci0gICAgfQotfTsKLXRlbXBs
YXRlPD4gc3RydWN0IGRlbGV0ZXI8U1NMPiB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKFNTTCogc3Ns
KQotICAgIHsKLSAgICAgICAgU1NMX2ZyZWUoc3NsKTsKLSAgICB9Ci19OwotdGVtcGxhdGU8PiBz
dHJ1Y3QgZGVsZXRlcjxTU0xfQ1RYPiB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKFNTTF9DVFgqIGN0
eCkKLSAgICB7Ci0gICAgICAgIFNTTF9DVFhfZnJlZShjdHgpOwotICAgIH0KLX07Ci10ZW1wbGF0
ZTw+IHN0cnVjdCBkZWxldGVyPEVWUF9QS0VZPiB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKEVWUF9Q
S0VZKiBrZXkpCi0gICAgewotICAgICAgICBFVlBfUEtFWV9mcmVlKGtleSk7Ci0gICAgfQotfTsK
LXRlbXBsYXRlPD4gc3RydWN0IGRlbGV0ZXI8Q1JZUFRPX0JVRkZFUj4gewotICAgIHZvaWQgb3Bl
cmF0b3IoKShDUllQVE9fQlVGRkVSKiBidWZmZXIpCi0gICAgewotICAgICAgICBDUllQVE9fQlVG
RkVSX2ZyZWUoYnVmZmVyKTsKLSAgICB9Ci19OwotbmFtZXNwYWNlIHNzbCB7Ci10ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gdXNpbmcgdW5pcXVlX3B0ciA9IHN0ZDo6dW5pcXVlX3B0cjxULCBkZWxldGVy
PFQ+PjsKLX0KLSNlbmRpZiAvLyBIQVZFKFNTTCkKLQotVENQU2VydmVyOjpUQ1BTZXJ2ZXIoRnVu
Y3Rpb248dm9pZChTb2NrZXQpPiYmIGNvbm5lY3Rpb25IYW5kbGVyLCBzaXplX3QgY29ubmVjdGlv
bnMpCi0gICAgOiBtX2Nvbm5lY3Rpb25IYW5kbGVyKFdURk1vdmUoY29ubmVjdGlvbkhhbmRsZXIp
KQotewotICAgIGxpc3RlbkZvckNvbm5lY3Rpb25zKGNvbm5lY3Rpb25zKTsKLX0KLQotI2lmIEhB
VkUoU1NMKQotdm9pZCBUQ1BTZXJ2ZXI6OnN0YXJ0U2VjdXJlQ29ubmVjdGlvbihTb2NrZXQgc29j
a2V0LCBGdW5jdGlvbjx2b2lkKFNTTCopPiYmIHNlY3VyZUNvbm5lY3Rpb25IYW5kbGVyLCBib29s
IHJlcXVlc3RDbGllbnRDZXJ0aWZpY2F0ZSwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gbWF4VExT
VmVyc2lvbikKLXsKLSAgICBTU0xfbGlicmFyeV9pbml0KCk7Ci0KLSAgICBzc2w6OnVuaXF1ZV9w
dHI8U1NMX0NUWD4gY3R4KFNTTF9DVFhfbmV3KFRMU193aXRoX2J1ZmZlcnNfbWV0aG9kKCkpKTsK
LQotICAgIC8vIFRoaXMgaXMgYSB0ZXN0IGNlcnRpZmljYXRlIGZyb20gQm9yaW5nU1NMLgotICAg
IFN0cmluZyBjZXJ0UEVNKAotICAgICJNSUlDV0RDQ0FjR2dBd0lCQWdJSkFQdXdUQzZyRUpzTU1B
MEdDU3FHU0liM0RRRUJCUVVBTUVVeEN6QUpCZ05WIgotICAgICJCQVlUQWtGVk1STXdFUVlEVlFR
SURBcFRiMjFsTFZOMFlYUmxNU0V3SHdZRFZRUUtEQmhKYm5SbGNtNWxkQ0JYIgotICAgICJhV1Ju
YVhSeklGQjBlU0JNZEdRd0hoY05NVFF3TkRJek1qQTFNRFF3V2hjTk1UY3dOREl5TWpBMU1EUXdX
akJGIgotICAgICJNUXN3Q1FZRFZRUUdFd0pCVlRFVE1CRUdBMVVFQ0F3S1UyOXRaUzFUZEdGMFpU
RWhNQjhHQTFVRUNnd1lTVzUwIgotICAgICJaWEp1WlhRZ1YybGtaMmwwY3lCUWRIa2dUSFJrTUlH
Zk1BMEdDU3FHU0liM0RRRUJBUVVBQTRHTkFEQ0JpUUtCIgotICAgICJnUURZSzhpbU11UmkvMDN6
MEsxWmkwV252ZkZIdndsWWV5SzlOYTZYSllhVW9JREF0Qjkya1dkR01kQVFoTGNpIgotICAgICJI
bkFqa1hMSTZXMTVPb1YzZ0EvRWxSWjF4VXB4VE1oalA2UHlZNXdxVDVyNnk4RnhiaWlGS0tBbkht
VWNyZ2ZWIgotICAgICJXMjh0USswcmtMR01yeVJ0cnVrWE9nWEJ2N2djcm1VN0cxakMyYTdXcW1l
SThRSURBUUFCbzFBd1RqQWRCZ05WIgotICAgICJIUTRFRmdRVWkzWFZyTXNJdmc0ZlpiZjZWcjVz
cDNYYWhhOHdId1lEVlIwakJCZ3dGb0FVaTNYVnJNc0l2ZzRmIgotICAgICJaYmY2VnI1c3AzWGFo
YTh3REFZRFZSMFRCQVV3QXdFQi96QU5CZ2txaGtpRzl3MEJBUVVGQUFPQmdRQTc2SGh0IgotICAg
ICJsZFk5YXZjVEdTd2J3b2l1SXF2MGpUTDFmSEZuenkzUkhNTERoK0xwdm9sYzVEU3JTSkhDUDVX
dUswZWVKWGhyIgotICAgICJUNW9RcEhMOXovY0NETEFLQ0tSYTR1VjBmaEVkT1dCcXlSOXA4eTVq
SnR5ZTcydDZDdUZVVjVpcWNwRjRCSDRmIgotICAgICJqMlZOSHdzU3JKd2tENFFVR2xVdEg3dndu
UW15Q0Z4Wk1tV0FKZz09Iik7Ci0gICAgYXV0byBjZXJ0REVSID0gYmFzZTY0RGVjb2RlKGNlcnRQ
RU0pOwotICAgIHNzbDo6dW5pcXVlX3B0cjxDUllQVE9fQlVGRkVSPiBjZXJ0KENSWVBUT19CVUZG
RVJfbmV3KGNlcnRERVItPmRhdGEoKSwgY2VydERFUi0+c2l6ZSgpLCBudWxscHRyKSk7Ci0gICAg
QVNTRVJUKGNlcnQpOwotCi0gICAgLy8gVGhpcyBpcyBhIHRlc3Qga2V5IGZyb20gQm9yaW5nU1NM
LgotICAgIGNoYXIga0tleVBFTVtdID0KLSAgICAiLS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt
LS0tLVxuIgotICAgICJNSUlDWGdJQkFBS0JnUURZSzhpbU11UmkvMDN6MEsxWmkwV252ZkZIdnds
WWV5SzlOYTZYSllhVW9JREF0QjkyXG4iCi0gICAgImtXZEdNZEFRaExjaUhuQWprWExJNlcxNU9v
VjNnQS9FbFJaMXhVcHhUTWhqUDZQeVk1d3FUNXI2eThGeGJpaUZcbiIKLSAgICAiS0tBbkhtVWNy
Z2ZWVzI4dFErMHJrTEdNcnlSdHJ1a1hPZ1hCdjdnY3JtVTdHMWpDMmE3V3FtZUk4UUlEQVFBQlxu
IgotICAgICJBb0dCQUlCeTA5RmQ0RE9xL0lqcDhIZUt1Q01LVEhxVFcxeEdIc2hMUTZqd1ZWMnZX
WkluOWFJZ21Ec3ZrakNlXG4iCi0gICAgImk2c3Nadm5ialZjd3pTb0J5aGpOOFpDZi9pMTVIRUNX
REZGaDZndDBQNXowTW5DaHd6Wm12YXRWL0ZYQ1QwaitcbiIKLSAgICAiV21HTkIvZ2tlaEtqR1hM
TGNqVGI2ZFJZVkpTQ1poVnVPTExjYldJVjEwZ2dnSlFCQWtFQThTOHNHZTRlenl5WlxuIgotICAg
ICJtNGU5cjk1ZzZzNDNrUHF0ajVyZXdUc1V4dCsybjRlVm9kRCtaVWxDVUxXVk5BRkxrWVJUQkNB
U2xTcm05WGhqXG4iCi0gICAgIlFwbVdBSEpVa1FKQkFPVnpRZEZVYWV3THRkT0pvUEN0cFlvWTF6
ZDIyZWFlOFRRRW1wR09SMTFMNmtieExRc2tcbiIKLSAgICAiYU1seS9ET25PYWE4MnRxQUdUZHFE
RVpnU05tQ2VLS2tubUVDUUF2cG5ZOEdVT1ZBdWJHUjZjK1c5MGlCdVFMalxuIgotICAgICJMdEZw
LzlpaGQydy9Qb0R3ckhaYW9VWVZjVDRWU2ZKUW9nL2s3a2pFNE1ZWFlXTDhlRUtnM1dUV1FORUNR
UURrXG4iCi0gICAgIjEwNFdpOTFVbWQxUHpGMGlqZDJqWE9FUkpVMXdFS2U2WExrWVlOSFdRQWU1
bDRKNE1XajlPZHhGWEF4SXV1Ui9cbiIKLSAgICAidGZEd2Jxa3RhNHhjdXg2Ny8va2hBa0VBdnZS
WExIVGFhNlZGelRhaWlPOFNhRnNIVjNsUXlYT3RNckJwQjVqZFxuIgotICAgICJtb1pXZ2pIdkIy
VzlDa243c0Rxc1BCK1UydHlYMGpvRGRRRXl1aU1FQ0RZOG9RPT1cbiIKLSAgICAiLS0tLS1FTkQg
UlNBIFBSSVZBVEUgS0VZLS0tLS1cbiI7Ci0KLSAgICBzc2w6OnVuaXF1ZV9wdHI8QklPPiBwcml2
YXRlS2V5QklPKEJJT19uZXdfbWVtX2J1ZihrS2V5UEVNLCBzdHJsZW4oa0tleVBFTSkpKTsKLSAg
ICBzc2w6OnVuaXF1ZV9wdHI8RVZQX1BLRVk+IHByaXZhdGVLZXkoUEVNX3JlYWRfYmlvX1ByaXZh
dGVLZXkocHJpdmF0ZUtleUJJTy5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikpOwot
ICAgIEFTU0VSVChwcml2YXRlS2V5KTsKLQotICAgIFNTTF9DVFhfc2V0X2NoYWluX2FuZF9rZXko
Y3R4LmdldCgpLCByZWludGVycHJldF9jYXN0PENSWVBUT19CVUZGRVIgKmNvbnN0ICo+KCZjZXJ0
KSwgMSwgcHJpdmF0ZUtleS5nZXQoKSwgbnVsbHB0cik7Ci0KLSAgICBpZiAocmVxdWVzdENsaWVu
dENlcnRpZmljYXRlKSB7Ci0gICAgICAgIFNTTF9DVFhfc2V0X2N1c3RvbV92ZXJpZnkoY3R4Lmdl
dCgpLCBTU0xfVkVSSUZZX1BFRVIgfCBTU0xfVkVSSUZZX0ZBSUxfSUZfTk9fUEVFUl9DRVJULCBb
XSAoU1NMKiBzc2wsIHVpbnQ4X3QqKSAtPiBzc2xfdmVyaWZ5X3Jlc3VsdF90IHsKLSAgICAgICAg
ICAgIGF1dG8gY2hhaW4gPSBTU0xfZ2V0MF9wZWVyX2NlcnRpZmljYXRlcyhzc2wpOwotICAgICAg
ICAgICAgRVhQRUNUX0VRKHNrX0NSWVBUT19CVUZGRVJfbnVtKGNoYWluKSwgMnUpOwotICAgICAg
ICAgICAgYXV0byBjZXJ0ID0gc2tfQ1JZUFRPX0JVRkZFUl92YWx1ZShjaGFpbiwgMCk7Ci0gICAg
ICAgICAgICBhdXRvIGV4cGVjdGVkQ2VydCA9IHRlc3RDZXJ0aWZpY2F0ZSgpOwotICAgICAgICAg
ICAgRVhQRUNUX0VRKENSWVBUT19CVUZGRVJfbGVuKGNlcnQpLCBleHBlY3RlZENlcnQuc2l6ZSgp
KTsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoQ1JZUFRPX0JVRkZFUl9kYXRhKGNl
cnQpLCBleHBlY3RlZENlcnQuZGF0YSgpLCBleHBlY3RlZENlcnQuc2l6ZSgpKSk7Ci0gICAgICAg
ICAgICByZXR1cm4gc3NsX3ZlcmlmeV9vazsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgaWYg
KG1heFRMU1ZlcnNpb24pCi0gICAgICAgIFNTTF9DVFhfc2V0X21heF9wcm90b192ZXJzaW9uKGN0
eC5nZXQoKSwgKm1heFRMU1ZlcnNpb24pOwotCi0gICAgc3NsOjp1bmlxdWVfcHRyPFNTTD4gc3Ns
KFNTTF9uZXcoY3R4LmdldCgpKSk7Ci0gICAgQVNTRVJUKHNzbCk7Ci0gICAgU1NMX3NldF9mZChz
c2wuZ2V0KCksIHNvY2tldCk7Ci0KLSAgICBhdXRvIGFjY2VwdFJlc3VsdCA9IFNTTF9hY2NlcHQo
c3NsLmdldCgpKTsKLSAgICBzZWN1cmVDb25uZWN0aW9uSGFuZGxlcihhY2NlcHRSZXN1bHQgPiAw
ID8gc3NsLmdldCgpIDogbnVsbHB0cik7Ci19OwotCi1UQ1BTZXJ2ZXI6OlRDUFNlcnZlcihQcm90
b2NvbCBwcm90b2NvbCwgRnVuY3Rpb248dm9pZChTU0wqKT4mJiBzZWN1cmVDb25uZWN0aW9uSGFu
ZGxlciwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gbWF4VExTVmVyc2lvbiwgc2l6ZV90IGNvbm5l
Y3Rpb25zKQotewotICAgIHN3aXRjaCAocHJvdG9jb2wpIHsKLSAgICBjYXNlIFByb3RvY29sOjpI
VFRQUzoKLSAgICBjYXNlIFByb3RvY29sOjpIVFRQU1dpdGhDbGllbnRDZXJ0aWZpY2F0ZVJlcXVl
c3Q6Ci0gICAgICAgIG1fY29ubmVjdGlvbkhhbmRsZXIgPSBbc2VjdXJlQ29ubmVjdGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKHNlY3VyZUNvbm5lY3Rpb25IYW5kbGVyKSwgcHJvdG9jb2wsIG1heFRMU1Zl
cnNpb25dIChTb2NrZXQgc29ja2V0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHN0YXJ0U2VjdXJl
Q29ubmVjdGlvbihzb2NrZXQsIFdURk1vdmUoc2VjdXJlQ29ubmVjdGlvbkhhbmRsZXIpLCBwcm90
b2NvbCA9PSBQcm90b2NvbDo6SFRUUFNXaXRoQ2xpZW50Q2VydGlmaWNhdGVSZXF1ZXN0LCBtYXhU
TFNWZXJzaW9uKTsKLSAgICAgICAgfTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQcm90b2Nv
bDo6SFRUUFNQcm94eToKLSAgICAgICAgbV9jb25uZWN0aW9uSGFuZGxlciA9IFtzZWN1cmVDb25u
ZWN0aW9uSGFuZGxlciA9IFdURk1vdmUoc2VjdXJlQ29ubmVjdGlvbkhhbmRsZXIpXSAoU29ja2V0
IHNvY2tldCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBjaGFyIHJlYWRCdWZmZXJbMTAwMF07Ci0g
ICAgICAgICAgICBhdXRvIGJ5dGVzUmVhZCA9IDo6cmVhZChzb2NrZXQsIHJlYWRCdWZmZXIsIHNp
emVvZihyZWFkQnVmZmVyKSk7Ci0gICAgICAgICAgICBFWFBFQ1RfR1QoYnl0ZXNSZWFkLCAwKTsK
LSAgICAgICAgICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZXNSZWFkKSA8
IHNpemVvZihyZWFkQnVmZmVyKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGNvbnN0IGNo
YXIqIHJlc3BvbnNlSGVhZGVyID0gIiIKLSAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgQ29ubmVj
dGlvbiBFc3RhYmxpc2hlZFxyXG4iCi0gICAgICAgICAgICAiQ29ubmVjdGlvbjogY2xvc2Vcclxu
XHJcbiI7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVzV3JpdHRlbiA9IDo6d3JpdGUoc29ja2V0LCBy
ZXNwb25zZUhlYWRlciwgc3RybGVuKHJlc3BvbnNlSGVhZGVyKSk7Ci0gICAgICAgICAgICBFWFBF
Q1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlc1dyaXR0ZW4pLCBzdHJsZW4ocmVzcG9uc2VI
ZWFkZXIpKTsKLSAgICAgICAgICAgIHN0YXJ0U2VjdXJlQ29ubmVjdGlvbihzb2NrZXQsIFdURk1v
dmUoc2VjdXJlQ29ubmVjdGlvbkhhbmRsZXIpKTsKLSAgICAgICAgfTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotICAgIGxpc3RlbkZvckNvbm5lY3Rpb25zKGNvbm5lY3Rpb25zKTsKLX0KLSNlbmRp
ZiAvLyBIQVZFKFNTTCkKLQotdm9pZCBUQ1BTZXJ2ZXI6Omxpc3RlbkZvckNvbm5lY3Rpb25zKHNp
emVfdCBjb25uZWN0aW9ucykKLXsKLSAgICBhdXRvIGxpc3RlbmluZ1NvY2tldCA9IHNvY2tldEJp
bmRMaXN0ZW4oY29ubmVjdGlvbnMpOwotICAgIEFTU0VSVChsaXN0ZW5pbmdTb2NrZXQpOwotICAg
IG1fbGlzdGVuaW5nVGhyZWFkID0gc3RkOjp0aHJlYWQoW3RoaXMsIGxpc3RlbmluZ1NvY2tldCA9
ICpsaXN0ZW5pbmdTb2NrZXQsIGNvbm5lY3Rpb25zXSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgY29ubmVjdGlvbnM7ICsraSkgewotICAgICAgICAgICAgU29ja2V0IGNvbm5lY3Rp
b25Tb2NrZXQgPSBhY2NlcHQobGlzdGVuaW5nU29ja2V0LCBudWxscHRyLCBudWxscHRyKTsKLSAg
ICAgICAgICAgIG1fY29ubmVjdGlvblRocmVhZHMuYXBwZW5kKHN0ZDo6dGhyZWFkKFt0aGlzLCBj
b25uZWN0aW9uU29ja2V0XSB7Ci0gICAgICAgICAgICAgICAgbV9jb25uZWN0aW9uSGFuZGxlcihj
b25uZWN0aW9uU29ja2V0KTsKLSAgICAgICAgICAgICAgICBzaHV0ZG93bihjb25uZWN0aW9uU29j
a2V0LCBTSFVUX1JEV1IpOwotICAgICAgICAgICAgICAgIGNsb3NlKGNvbm5lY3Rpb25Tb2NrZXQp
OwotICAgICAgICAgICAgfSkpOwotICAgICAgICB9Ci0gICAgICAgIGNsb3NlKGxpc3RlbmluZ1Nv
Y2tldCk7Ci0gICAgfSk7Ci19Ci0KLVRDUFNlcnZlcjo6flRDUFNlcnZlcigpCi17Ci0gICAgbV9s
aXN0ZW5pbmdUaHJlYWQuam9pbigpOwotICAgIGZvciAoYXV0byYgY29ubmVjdGlvblRocmVhZHMg
OiBtX2Nvbm5lY3Rpb25UaHJlYWRzKQotICAgICAgICBjb25uZWN0aW9uVGhyZWFkcy5qb2luKCk7
Ci19Ci0KLWF1dG8gVENQU2VydmVyOjpzb2NrZXRCaW5kTGlzdGVuKHNpemVfdCBjb25uZWN0aW9u
cykgLT4gc3RkOjpvcHRpb25hbDxTb2NrZXQ+Ci17Ci0gICAgU29ja2V0IGxpc3RlbmluZ1NvY2tl
dCA9IHNvY2tldChQRl9JTkVULCBTT0NLX1NUUkVBTSwgMCk7Ci0gICAgaWYgKGxpc3RlbmluZ1Nv
Y2tldCA9PSAtMSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAKLSAgICAvLyBQ
b3J0cyA0OTE1Mi02NTUzNSBhcmUgdW5hbGxvY2F0ZWQgcG9ydHMuIFRyeSB1bnRpbCB3ZSBmaW5k
IG9uZSB0aGF0J3MgZnJlZS4KLSAgICBmb3IgKFBvcnQgcG9ydCA9IDQ5MTUyOyBwb3J0OyBwb3J0
KyspIHsKLSAgICAgICAgc3RydWN0IHNvY2thZGRyX2luIG5hbWU7Ci0gICAgICAgIG1lbXNldCgm
bmFtZSwgMCwgc2l6ZW9mKG5hbWUpKTsKLSAgICAgICAgbmFtZS5zaW5fZmFtaWx5ID0gQUZfSU5F
VDsKLSAgICAgICAgbmFtZS5zaW5fcG9ydCA9IGh0b25zKHBvcnQpOwotICAgICAgICBuYW1lLnNp
bl9hZGRyLnNfYWRkciA9IGh0b25sKElOQUREUl9BTlkpOwotICAgICAgICBpZiAoYmluZChsaXN0
ZW5pbmdTb2NrZXQsIHJlaW50ZXJwcmV0X2Nhc3Q8c29ja2FkZHIqPigmbmFtZSksIHNpemVvZihu
YW1lKSkgPCAwKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIHBvcnQgaXMgYnVzeS4gVHJ5IHRoZSBu
ZXh0IHBvcnQuCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAo
bGlzdGVuKGxpc3RlbmluZ1NvY2tldCwgY29ubmVjdGlvbnMpID09IC0xKSB7Ci0gICAgICAgICAg
ICAvLyBMaXN0ZW5pbmcgZmFpbGVkLgotICAgICAgICAgICAgY2xvc2UobGlzdGVuaW5nU29ja2V0
KTsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIH0KLSAgICAgICAg
bV9wb3J0ID0gcG9ydDsKLSAgICAgICAgcmV0dXJuIGxpc3RlbmluZ1NvY2tldDsgLy8gU3VjY2Vz
c2Z1bGx5IHNldCB1cCBsaXN0ZW5pbmcgcG9ydC4KLSAgICB9Ci0gICAgCi0gICAgLy8gQ291bGRu
J3QgZmluZCBhbiBhdmFpbGFibGUgcG9ydC4KLSAgICBjbG9zZShsaXN0ZW5pbmdTb2NrZXQpOwot
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci19Ci0KLXRlbXBsYXRlPD4gVmVjdG9yPHVpbnQ4X3Q+
IFRDUFNlcnZlcjo6cmVhZChTb2NrZXQgc29ja2V0KQotewotICAgIHVpbnQ4X3QgYnVmZmVyWzEw
MDBdOwotICAgIGF1dG8gYnl0ZXNSZWFkID0gOjpyZWFkKHNvY2tldCwgYnVmZmVyLCBzaXplb2Yo
YnVmZmVyKSk7Ci0gICAgaWYgKGJ5dGVzUmVhZCA8PSAwKQotICAgICAgICByZXR1cm4geyB9Owot
ICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzUmVhZCkgPCBzaXplb2YoYnVmZmVy
KSk7Ci0KLSAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwotICAgIHZlY3Rvci5hcHBlbmQoYnVm
ZmVyLCBieXRlc1JlYWQpOwotICAgIHJldHVybiB2ZWN0b3I7Ci19Ci0KLXRlbXBsYXRlPD4gdm9p
ZCBUQ1BTZXJ2ZXI6OndyaXRlKFNvY2tldCBzb2NrZXQsIGNvbnN0IHZvaWQqIHJlc3BvbnNlLCBz
aXplX3QgbGVuZ3RoKQotewotICAgIGF1dG8gYnl0ZXNXcml0dGVuID0gOjp3cml0ZShzb2NrZXQs
IHJlc3BvbnNlLCBsZW5ndGgpOwotICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5
dGVzV3JpdHRlbiksIGxlbmd0aCk7Ci19Ci0KLSNpZiBIQVZFKFNTTCkKLXRlbXBsYXRlPD4gVmVj
dG9yPHVpbnQ4X3Q+IFRDUFNlcnZlcjo6cmVhZChTU0wqIHNzbCkKLXsKLSAgICB1aW50OF90IGJ1
ZmZlclsxMDAwXTsKLSAgICBhdXRvIGJ5dGVzUmVhZCA9IFNTTF9yZWFkKHNzbCwgYnVmZmVyLCBz
aXplb2YoYnVmZmVyKSk7Ci0gICAgaWYgKGJ5dGVzUmVhZCA8PSAwKQotICAgICAgICByZXR1cm4g
eyB9OwotICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzUmVhZCkgPCBzaXplb2Yo
YnVmZmVyKSk7Ci0KLSAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwotICAgIHZlY3Rvci5hcHBl
bmQoYnVmZmVyLCBieXRlc1JlYWQpOwotICAgIHJldHVybiB2ZWN0b3I7Ci19Ci0KLXRlbXBsYXRl
PD4gdm9pZCBUQ1BTZXJ2ZXI6OndyaXRlKFNTTCogc3NsLCBjb25zdCB2b2lkKiByZXNwb25zZSwg
c2l6ZV90IGxlbmd0aCkKLXsKLSAgICBhdXRvIGJ5dGVzV3JpdHRlbiA9IFNTTF93cml0ZShzc2ws
IHJlc3BvbnNlLCBsZW5ndGgpOwotICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5
dGVzV3JpdHRlbiksIGxlbmd0aCk7Ci19Ci0jZW5kaWYKLQotdm9pZCBUQ1BTZXJ2ZXI6OnJlc3Bv
bmRXaXRoQ2hhbGxlbmdlVGhlbk9LKFNvY2tldCBzb2NrZXQpCi17Ci0gICAgcmVhZChzb2NrZXQp
OwotICAgIAotICAgIGNvbnN0IGNoYXIqIGNoYWxsZW5nZUhlYWRlciA9Ci0gICAgIkhUVFAvMS4x
IDQwMSBVbmF1dGhvcml6ZWRcclxuIgotICAgICJEYXRlOiBTYXQsIDIzIE1hciAyMDE5IDA2OjI5
OjAxIEdNVFxyXG4iCi0gICAgIkNvbnRlbnQtTGVuZ3RoOiAwXHJcbiIKLSAgICAiV1dXLUF1dGhl
bnRpY2F0ZTogQmFzaWMgcmVhbG09XCJ0ZXN0cmVhbG1cIlxyXG5cclxuIjsKLSAgICB3cml0ZShz
b2NrZXQsIGNoYWxsZW5nZUhlYWRlciwgc3RybGVuKGNoYWxsZW5nZUhlYWRlcikpOwotICAgIAot
ICAgIHJlYWQoc29ja2V0KTsKLSAgICAKLSAgICBjb25zdCBjaGFyKiByZXNwb25zZUhlYWRlciA9
Ci0gICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCi0gICAgIkNvbnRlbnQtTGVuZ3RoOiAxM1xyXG5c
clxuIgotICAgICJIZWxsbywgV29ybGQhIjsKLSAgICB3cml0ZShzb2NrZXQsIHJlc3BvbnNlSGVh
ZGVyLCBzdHJsZW4ocmVzcG9uc2VIZWFkZXIpKTsKLX0KLQotI2lmIEhBVkUoU1NMKQotdm9pZCBU
Q1BTZXJ2ZXI6OnJlc3BvbmRXaXRoT0soU1NMKiBzc2wpCi17Ci0gICAgQVNTRVJUKHNzbCk7Ci0g
ICAgcmVhZChzc2wpOwotICAgIAotICAgIGNvbnN0IGNoYXIqIHJlcGx5ID0gIiIKLSAgICAiSFRU
UC8xLjEgMjAwIE9LXHJcbiIKLSAgICAiQ29udGVudC1MZW5ndGg6IDM0XHJcblxyXG4iCi0gICAg
IjxzY3JpcHQ+YWxlcnQoJ3N1Y2Nlc3MhJyk8L3NjcmlwdD4iOwotICAgIHdyaXRlKHNzbCwgcmVw
bHksIHN0cmxlbihyZXBseSkpOwotfQotI2VuZGlmCi0KLVZlY3Rvcjx1aW50OF90PiBUQ1BTZXJ2
ZXI6OnRlc3RDZXJ0aWZpY2F0ZSgpCi17Ci0gICAgLy8gQ2VydGlmaWNhdGUgYW5kIHByaXZhdGUg
a2V5IHdlcmUgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgdGhpcyBjb21tYW5kOgotICAgIC8vIG9wZW5z
c2wgcmVxIC14NTA5IC1uZXdrZXkgcnNhOjQwOTYgLWtleW91dCBrZXkucGVtIC1vdXQgY2VydC5w
ZW0gLWRheXMgMzY1IC1ub2RlcwotICAgIC8vIGFuZCBlbnRlcmluZyB0aGlzIGluZm9ybWF0aW9u
OgotICAgIC8qCi0gICAgIENvdW50cnkgTmFtZSAoMiBsZXR0ZXIgY29kZSkgW106VVMKLSAgICAg
U3RhdGUgb3IgUHJvdmluY2UgTmFtZSAoZnVsbCBuYW1lKSBbXTpOZXcgTWV4aWNvCi0gICAgIExv
Y2FsaXR5IE5hbWUgKGVnLCBjaXR5KSBbXTpTYW50YSBGZQotICAgICBPcmdhbml6YXRpb24gTmFt
ZSAoZWcsIGNvbXBhbnkpIFtdOlNlbGYKLSAgICAgT3JnYW5pemF0aW9uYWwgVW5pdCBOYW1lIChl
Zywgc2VjdGlvbikgW106TXlzZWxmCi0gICAgIENvbW1vbiBOYW1lIChlZywgZnVsbHkgcXVhbGlm
aWVkIGhvc3QgbmFtZSkgW106TWUKLSAgICAgRW1haWwgQWRkcmVzcyBbXTptZUBleGFtcGxlLmNv
bQotICAgICAqLwotICAgIAotICAgIFN0cmluZyBwZW1FbmNvZGVkQ2VydGlmaWNhdGUoIiIKLSAg
ICAiTUlJRmdEQ0NBMmdDQ1FDS0hpUFJVNU1RdURBTkJna3Foa2lHOXcwQkFRc0ZBRENCZ1RFTE1B
a0dBMVVFQmhNQyIKLSAgICAiVlZNeEV6QVJCZ05WQkFnTUNrNWxkeUJOWlhocFkyOHhFVEFQQmdO
VkJBY01DRk5oYm5SaElFWmxNUTB3Q3dZRCIKLSAgICAiVlFRS0RBUlRaV3htTVE4d0RRWURWUVFM
REFaTmVYTmxiR1l4Q3pBSkJnTlZCQU1NQWsxbE1SMHdHd1lKS29aSSIKLSAgICAiaHZjTkFRa0JG
ZzV0WlVCbGVHRnRjR3hsTG1OdmJUQWVGdzB4T1RBek1qTXdOVFV3TVRSYUZ3MHlNREF6TWpJdyIK
LSAgICAiTlRVd01UUmFNSUdCTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNBd0tUbVYzSUUx
bGVHbGpiekVSTUE4RyIKLSAgICAiQTFVRUJ3d0lVMkZ1ZEdFZ1JtVXhEVEFMQmdOVkJBb01CRk5s
YkdZeER6QU5CZ05WQkFzTUJrMTVjMlZzWmpFTCIKLSAgICAiTUFrR0ExVUVBd3dDVFdVeEhUQWJC
Z2txaGtpRzl3MEJDUUVXRG0xbFFHVjRZVzF3YkdVdVkyOXRNSUlDSWpBTiIKLSAgICAiQmdrcWhr
aUc5dzBCQVFFRkFBT0NBZzhBTUlJQ0NnS0NBZ0VBM3JoTjRTUGc4VlkvUHRHRE5LWTNUOUpJU2di
eSIKLSAgICAiOFlHTUp4MHZPK1laRlptM0czZnNUVXN5dkR5RUh3cXA1YWJDWlJCL0J5MVB3V2tO
cmZ4bi9YUDhQMDM0SlBsRSIKLSAgICAiNmlyVml1QVlRcnFVaDZrN1pSOENwT001R0VjUlpnQVVK
R0dRd05sT2tFd2FIbk1HYzhTc0h1cmdEUGg1WEJwZyIKLSAgICAiYkR5dGQ3Qkp1QjFOb0kvS0pt
aGNhamtBdVYzdmFyUyt1UExvZlBITnFlK2NMOGhObmpaUXdIV2FyUDQ1a3M0ZSIKLSAgICAiQmNP
RDd0d3F4dUhuVm0vRldFcnBZOFdzNXMxTXJQVGhVZERhaGpFTWYrWWZESjlLTDh5MzA0eVM4Sjhm
ZUN4WSIKLSAgICAiZmNINEJ2Z0x0Sm1CTkhKZ2ozZU5EL0VNWmpKZ3oyRnNCanJKazhrS0QzMWN3
KzRXcDhVRjRza1dYQ2Y0NittTiIKLSAgICAiT0hwMTNQZVNDWkx5RjRaQUhhelVWa25EUGNjMllO
cldWVjFpNm4zVDE1a0kwVDVaN2JzdGRtQUx1U2tFMmN1SiIKLSAgICAiU1ZOTzZnUitac1ZSVG5l
dVF4d1dUVTBNTkVoQVBGT1gyQmhHUDVlaXNnRVV6a254TUpkZEZEbjlXeGtsdTFKaCIKLSAgICAi
Z2t6QVNBLyszQW1sckZaTVBoT2hqRXVsMHpqZ05SNVJCbDFHOEh6OTJMQXg1VUVEQnRkTGc3MUkr
SThBelFPaCIKLSAgICAiZDZMdEJla0VDeEExNnBTYXBwZzV2Y1c5Wi84TjZabHNIbloyRnp0QTBu
Q09mbGtvTzlpZWpPcGN1Rk40RVZZRCIKLSAgICAieEl0d2N0S3cxTENlTkQvczRrbW9SUm5YYlg3
azlPNmNJMVVVV001OTVHc3U1dFBhMzNNNUFaRkNhdjJnT1Z1WSIKLSAgICAiZGpwcFMwSE9mbzVo
djZjQ0F3RUFBVEFOQmdrcWhraUc5dzBCQVFzRkFBT0NBZ0VBWThFV2FBRkVmdzdPVitvRCIKLSAg
ICAiWFVaU0lZWHEzRUgyRTVwM3EzOEFoSU9MUmpCdUIrdXR5dTdRNnJ4TU1IdXcyVHRzTit6YkFS
N3lyamZzc2VBMyIKLSAgICAiNFRNMXhlNE5rN05WTkhSb1pRK0MwSXFmOWZ2Y2lvTXZUMXRUcm1h
ME1oS1NqRlFweCtQdnlMVmJEN1lkUDg2TCIKLSAgICAibWVlaEtxVTdoMXBMR0FpR3dqb2FaOVli
aDZLdXEvTVRBSHkzRDgrd2s3QjM2VkJ4RjZkaVZsVVBaSlpRV0tKeSIKLSAgICAiTUt5OUczc3pl
MVpHdDlXZUUwQU12a04ySEllZjBIVEtDVVozZUJ2ZWNPTWlqeEwwV2hXbzVReWY1azZ5bENhVSIK
LSAgICAiMmZ4K004RGZEY3dGbzd0U2dMeFNLM0dDRnB4UGZpRHQ2UWs4Yzl0UW41UzFnWTN0NkxK
dXdWQ0Z3VUlYbE5rQiIKLSAgICAiSkQ3K2NaMVovdENyRWh6ajNZQ2swdVVVOENpZm9VKzRGRytI
R0ZQK1NQenRzWUUwNTVtU2ozK0VzaCtveW9WQiIKLSAgICAiZ0JIOTBzRTJUMWkwZU5JOGY2MW9T
Z3dZRmVIc2Y3ZkM3MVhFWExGUitHd05kbXdxbG13bERaRXBUdTdCb05OKyIKLSAgICAicTcrVGZr
MU1Sa0psTDFQSDZZdS9JUGhaaU5oNHR5SXFET3RsWWZ6cDU3N0ErT1VVK3E1UFBSRlJJc3FoZU94
dCIKLSAgICAibU5sSHg0VXpkNFUzSVRmbW9nSmF6anF3WU8ydmlCWlk0alVRbXlaczc1ZUgvamlV
RkhXUnNoYTNBZG5XNUxXYSIKLSAgICAiRzNQRm5ZYlc4dXJIME5TSkcvVysvOURBK1k3QWEwY3M0
VFBwdUJHWjBOVTFXOTRPb0NNbzRsa082SC95NkxldSIKLSAgICAiM3ZqWkQzeTlrWms3bXJlOVhI
d2tJOE1kSzVzPSIpOwotICAgIAotICAgIGF1dG8gZGVjb2RlZENlcnRpZmljYXRlID0gYmFzZTY0
RGVjb2RlKHBlbUVuY29kZWRDZXJ0aWZpY2F0ZSk7Ci0gICAgcmV0dXJuIFdURk1vdmUoKmRlY29k
ZWRDZXJ0aWZpY2F0ZSk7Ci19Ci0KLVZlY3Rvcjx1aW50OF90PiBUQ1BTZXJ2ZXI6OnRlc3RQcml2
YXRlS2V5KCkKLXsKLSAgICBTdHJpbmcgcGVtRW5jb2RlZFByaXZhdGVLZXkoIiIKLSAgICAiTUlJ
SlFnSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NDU3d3Z2drb0FnRUFBb0lDQVFEZXVFM2hJK0R4
Vmo4KyIKLSAgICAiMFlNMHBqZFAwa2hLQnZMeGdZd25IUzg3NWhrVm1iY2JkK3hOU3pLOFBJUWZD
cW5scHNKbEVIOEhMVS9CYVEydCIKLSAgICAiL0dmOWMvdy9UZmdrK1VUcUt0V0s0QmhDdXBTSHFU
dGxId0trNHprWVJ4Rm1BQlFrWVpEQTJVNlFUQm9lY3daeiIKLSAgICAieEt3ZTZ1QU0rSGxjR21C
c1BLMTNzRW00SFUyZ2o4b21hRnhxT1FDNVhlOXF0TDY0OHVoODhjMnA3NXd2eUUyZSIKLSAgICAi
TmxEQWRacXMvam1Temg0Rnc0UHUzQ3JHNGVkV2I4VllTdWxqeGF6bXpVeXM5T0ZSME5xR01ReC81
aDhNbjBvdiIKLSAgICAiekxmVGpKTHdueDk0TEZoOXdmZ0crQXUwbVlFMGNtQ1BkNDBQOFF4bU1t
RFBZV3dHT3NtVHlRb1BmVnpEN2hhbiIKLSAgICAieFFYaXlSWmNKL2pyNlkwNGVuWGM5NUlKa3ZJ
WGhrQWRyTlJXU2NNOXh6WmcydFpWWFdMcWZkUFhtUWpSUGxudCIKLSAgICAidXkxMllBdTVLUVRa
eTRsSlUwN3FCSDVteFZGT2Q2NURIQlpOVFF3MFNFQThVNWZZR0VZL2w2S3lBUlRPU2ZFdyIKLSAg
ICAibDEwVU9mMWJHU1c3VW1HQ1RNQklELzdjQ2FXc1ZrdytFNkdNUzZYVE9PQTFIbEVHWFVid2ZQ
M1lzREhsUVFNRyIKLSAgICAiMTB1RHZVajRqd0ROQTZGM291MEY2UVFMRURYcWxKcW1tRG05eGIx
bi93M3BtV3dlZG5ZWE8wRFNjSTUrV1NnNyIKLSAgICAiMko2TTZseTRVM2dSVmdQRWkzQnkwckRV
c0o0MFAremlTYWhGR2RkdGZ1VDA3cHdqVlJSWXpuM2theTdtMDlyZiIKLSAgICAiY3prQmtVSnEv
YUE1VzVoMk9tbExRYzUram1HL3B3SURBUUFCQW9JQ0FHcmEvQ3AvZjBYcXZrOVNUK1BydDIvcCIK
LSAgICAia050TGVEWGNsTFNUY1AwSkNaSHVmUWFGdys3Vm5GTHBxZTRHdkxxOUJsbGN6OFZPdlF3
cmJlL0N3TlcrVnhDOCIKLSAgICAiUk1qZ2UycnFBQ2d3R2hPeDF0ODdsNDZOa1VRdzdFeTBsQ2xl
OGtyK01HZ0dHb1pxck1GZEtJUlVvTXY0bm1RNiIKLSAgICAidG1jMUZIdjVwTFJlOVErTHA1bllR
d0dvWW1ab1VPdWVvT2FPTDA4bTQ5cEdYUWtpTjhwSkRNeFNmTzNKdnRzdSIKLSAgICAiNGNxSWI2
a09RL2RPMUlzMUNUdlVSbGQxSVlMSDdZdVNoaTRaRXgyZzJhYzJVeXZ0NllteHh2TW1BakJTS3BH
ZCIKLSAgICAibG9pZXBobzMvTnJER1VLZHYzcTlRWXl6ckE4dzlHVDMyTERHcWdCWEppMXNjQkk4
Y0V4a3A2UDRpRGxsaHY3cyIKLSAgICAidlpzc3B2b2JSSmEzTzF6azg2M0xIWGEyNEpDbnl1emlt
cWV6WjJPbGg3bDRvbEhvWUQ2VUZDOWpmZDRLY0hSZyIKLSAgICAiMWM0c3lxdC9uOEFLLzFzMWVC
ZlM5ZHpiNUNmanQ5TXRLWXNseHZMenExV3dPSU53ejhySVl1UmkwUGNMbTlocyIKLSAgICAibCtV
MHUvekIzN2VNZ3Y2K2l3RFhrMWZTamJ1WXNFL2JFVFdZa25LR05GRkw1SlNpS1Y3V0NwbWdOVFRy
ckU0SyIKLSAgICAiUzhFNmhSOXVQT0Fhb3c3dlBDQ3Q0eExYLzQ4bDJFSTZaZXE2cU9wcTFsSjJx
Y3k4cjR0eXVRZ05STFFNa1pnMSIKLSAgICAiQXhRbDZ2blE4Q3U0aXUrTkloZWYweTlaN3FrZk52
WmVDajVHbEZCOWMyWWpWOFkybWRXZkpCNHFXSzNaLytNSiIKLSAgICAiUU9UQ0tSejcvTHhMTkJV
ZXBSakpBb0lCQVFEM1pzVjV0V1U5WlNLY1ZKOURDN1RaazBQK2xoY2lzWnIwbkwwdCIKLSAgICAi
UFF1UU8rcEh2UEkxTXFSbk5za0hKaHlQbnFWQ2krZHA4OXRLL0l0NTkwVUxsOG9zNlVDMUZoeXRC
UG9UMVlQZCIKLSAgICAiV0dXZXAycE9jN2JWcGk0aXAzMXkrSW1mZ2VaeUp0TUFUZG1lM2tCUEFP
ZTVOR0U5R2lnL2w1bnFMeWIwMnNkMSIKLSAgICAiUVc3TzBHZHFMeDNEcEx3NFNMbGhNZjZhRTB1
R1JTOHNmQjA4NWU0REduNTRPMndFVnVTWnFabDVOTkVmMzVSeiIKLSAgICAiWGdpbTNoK1JXRjFa
RlNRempCL3NtTjBaaCt2M0l6N3ZFSjFoMHl3VjZvK0d6dkhrUDlIRTZnTElodHlWOE9FdyIKLSAg
ICAidmx5WWsxR2E3cFVWR1JoOG84T01lNlJSOURRaTdKcUM0ZUk3R2NrbUJ6YXF6SmNEQW9JQkFR
RG1kZTZBVGV3MyIKLSAgICAiSDliUUs2eG5iTUluY3ovQ09wSUlTZGxjRmIyM0FIR0ViNGI0VmhK
RkJOd3hyTkw2dEhLU0ZMZVlaRkxoVGRoeCIKLSAgICAiUGZYeVVMSE5mNW96ZEVrbDBXcmxlcm9E
ZG9nYkN5V2c1dUpwOS9RNjhzYndiR3I4Q0FsTzdaSFlUcmp1UWYxSyIKLSAgICAiQVM5cENtNzdL
UDNrMmQzVWxHK3BlbERqWExvQnppWHEwTmp4SnBNejQ1dnJJeDhyU1d6Rk5qTUdqWFQzZlhhUyIK
LSAgICAiOTYyay8wQVhlaTUvYmZ1aEJ4bG03UG5pMGJRSklXRmtlYVV1R2xyT2FIRFJ4VWlYMXI5
SVpTOXd2NWxrMVB0ZyIKLSAgICAiaWRwYmNXeXcxOGNGR1R2amRLaFJiWkg4RXNibXptTk5zQ0dk
Z0NNcUZrS1lzVzE2UUtvQ2ovTkFvdkkzbjBxbiIKLSAgICAiNlZvUmEwc0dtVEdOQW9JQkFDbC9t
cVpFc0J1eFNESHkyOWdTTVo3QlhnbHBRYTQzSG1mamxyUHM1bkNtTERFbSIKLSAgICAiVjNabTdU
N0c2TWVETkEwL0xqZFFZbHZhWkxGYVZVYjdIQ0RLc0VZQ1JqRlo2U3Q0aHo0bWRYeitZK1ZON2I0
RiIKLSAgICAiR09rVGUrK2lLcC9MWXNKWHRzRDFGRFdiMldJVm83SGMxQUd6OEkrZ1FKb1NJdVl1
VEptTHpTTTArNUpEVU9WMSIKLSAgICAieThkU2JhUC9SdUV2MHFZamtHcVFWazVlNzBTVXlPektW
K1p4Q1RoZEh2Rkxpb3ZUT1RUZ2V2VXpFNzV4eWRmRyIKLSAgICAiZTdvQ210VHVyemd2bC82OVZ1
NVlnaWoxbjRDV1BISGNxNENRVy9ET1o3QmhGR0J3aHJXNzl2b0hKRjhQYndQTyIKLSAgICAiKzBE
VHVkREdZM25BRDVzVG5GOHpVdU9iWWloSnRmemovdDU5Zk9NQ2dnRUJBSVl1dUJVQVNiNjJ6UTRi
djUvZyIKLSAgICAiVlJNL0tTcGZpOU5EbkVqZlo3eDdoNXpDaXVWZ3gvWmpwQWxRUk84dnpWMThy
b0VPT0t0eDljbkpkOEFFZCtIYyIKLSAgICAibjkzQm9TMWh4MG1oc1ZoKzFUUlp3eWp5QlhZSnBx
d0Qyd3oxTXoxWE9JUTZFcWJNL3lQS1REMmdmd2c3eU81MyIKLSAgICAicVl4cnhac1dhZ1ZWY0c5
UStBUkJFUmF0VHdMcG9OK2ZjSkx4dWg0ci9DYS9MZXBzeG1Pckt6VGEvTUdLMUxoVyIKLSAgICAi
cldnSWsyL29nRVBMU3B0ajJkMVBFRE8rR0F6Rno0VktqaFcxTmxVaDlmR2k2SUpQTEhMbkJ3M29k
YmkwUzhLVCIKLSAgICAiZ0E5WjUrTEJjNWNsb3RBUDVydFFBOFdoL1pDRW9QVEtUVEEyYmpXMkhN
YXRKY2JHbVIwRnBDUXIzQU0wWTFTTyIKLSAgICAiTWFrQ2dnRUFMcnU2UVo2WVV3SkpHNDVIMWVx
L3JQZERZOHRxcWpKVlZpS29CVnZ6S2ovWGZKWllFVlFpSXc1cCIKLSAgICAidW9HaERveUZ1RlVl
SWgvZDFKYzJJcnV5Mldqb09raVFZdEl1Z0RISHhScmtMZFFjalBobENUQ0UvbW15U0p0KyIKLSAg
ICAiYmtVYmlISWJROGRKNXlqOFNLcjBiSHpxRXRPeTkvSmVSamtZR0hDNmJWV3BxNUZBMk1CaGY0
ZE5qSjRVRGxuVCIKLSAgICAidnVlUGNUanI3bm5mWTFzenR2ZlZsOUQ4ZG1nVCtUQm5PT1Y2eVdq
MWdtNWJTMUR4UVNMZ05tdEt4Sjh0QWgydSIKLSAgICAiZEVPYnZjcFNoUDIySXRPVmpTYW1wUnVB
dVJHMjZaZW1FYkdDSTNKNk1xeDN5Nm0rNkh3dWx0c2d0ZHpEZ3JGZSIKLSAgICAicUpmVThiYmRi
dTJwaTQ3WTRGZEpLMEhMZmZsNVJ3PT0iKTsKLQotICAgIGF1dG8gZGVjb2RlZFByaXZhdGVLZXkg
PSBiYXNlNjREZWNvZGUocGVtRW5jb2RlZFByaXZhdGVLZXkpOwotICAgIHJldHVybiBXVEZNb3Zl
KCpkZWNvZGVkUHJpdmF0ZUtleSk7Ci19Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5oIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ODE2ZTk0OTM1NTY1ODY5NTEzZjNiODMwYTA3NDhmMzFkMzQ3N2RlMi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1RDUFNl
cnZlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaW5jbHVkZSA8dGhyZWFkPgotI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgot
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotI2lmIEhBVkUoU1NMKQotc3RydWN0IFNTTDsKLSNl
bmRpZiAvLyBIQVZFKFNTTCkKLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCi1jbGFzcyBU
Q1BTZXJ2ZXIgewotcHVibGljOgotICAgIHVzaW5nIFNvY2tldCA9IGludDsKLSAgICB1c2luZyBQ
b3J0ID0gdWludDE2X3Q7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBQb3J0IEludmFsaWRQb3J0ID0g
MDsKLSAgICAKLSAgICBUQ1BTZXJ2ZXIoRnVuY3Rpb248dm9pZChTb2NrZXQpPiYmLCBzaXplX3Qg
Y29ubmVjdGlvbnMgPSAxKTsKLSNpZiBIQVZFKFNTTCkKLSAgICBlbnVtIGNsYXNzIFByb3RvY29s
IDogdWludDhfdCB7Ci0gICAgICAgIEhUVFBTLCBIVFRQU1Byb3h5LCBIVFRQU1dpdGhDbGllbnRD
ZXJ0aWZpY2F0ZVJlcXVlc3QKLSAgICB9OwotICAgIFRDUFNlcnZlcihQcm90b2NvbCwgRnVuY3Rp
b248dm9pZChTU0wqKT4mJiwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gbWF4VExTVmVyc2lvbiA9
IHN0ZDo6bnVsbG9wdCwgc2l6ZV90IGNvbm5lY3Rpb25zID0gMSk7Ci0jZW5kaWYgLy8gSEFWRShT
U0wpCi0gICAgflRDUFNlcnZlcigpOwotICAgIAotICAgIFBvcnQgcG9ydCgpIGNvbnN0IHsgcmV0
dXJuIG1fcG9ydDsgfQotICAgIAotI2lmIEhBVkUoU1NMKQotICAgIHN0YXRpYyB2b2lkIHJlc3Bv
bmRXaXRoT0soU1NMKik7Ci0gICAgc3RhdGljIHZvaWQgc3RhcnRTZWN1cmVDb25uZWN0aW9uKFNv
Y2tldCwgRnVuY3Rpb248dm9pZChTU0wqKT4mJiBzZWN1cmVDb25uZWN0aW9uSGFuZGxlciwgYm9v
bCByZXF1ZXN0Q2xpZW50Q2VydGlmaWNhdGUgPSBmYWxzZSwgc3RkOjpvcHRpb25hbDx1aW50MTZf
dD4gbWF4VExTVmVyc2lvbiA9IHN0ZDo6bnVsbG9wdCk7Ci0jZW5kaWYKLSAgICBzdGF0aWMgdm9p
ZCByZXNwb25kV2l0aENoYWxsZW5nZVRoZW5PSyhTb2NrZXQpOwotCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RhdGljIFZlY3Rvcjx1aW50OF90PiByZWFkKFQpOwotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0YXRpYyB2b2lkIHdyaXRlKFQsIGNvbnN0IHZvaWQqLCBzaXplX3QpOwotICAg
IAotICAgIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gdGVzdFByaXZhdGVLZXkoKTsKLSAgICBzdGF0
aWMgVmVjdG9yPHVpbnQ4X3Q+IHRlc3RDZXJ0aWZpY2F0ZSgpOwotICAgIAotcHJpdmF0ZToKLSAg
ICBzdGQ6Om9wdGlvbmFsPFNvY2tldD4gc29ja2V0QmluZExpc3RlbihzaXplX3QgY29ubmVjdGlv
bnMpOwotICAgIHZvaWQgbGlzdGVuRm9yQ29ubmVjdGlvbnMoc2l6ZV90IGNvbm5lY3Rpb25zKTsK
LQotICAgIFBvcnQgbV9wb3J0IHsgSW52YWxpZFBvcnQgfTsKLSAgICBzdGQ6OnRocmVhZCBtX2xp
c3RlbmluZ1RocmVhZDsKLSAgICBWZWN0b3I8c3RkOjp0aHJlYWQ+IG1fY29ubmVjdGlvblRocmVh
ZHM7Ci0gICAgRnVuY3Rpb248dm9pZChTb2NrZXQpPiBtX2Nvbm5lY3Rpb25IYW5kbGVyOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBjYmY1OWY2OTRjZjcwNjlmOGFmMDU2YjdjODZhMWI3YWRjZDZmMGNiLi5jMTc5MTY3NmI1OGE1
OTRhYTBlZjhiMzQ0ZGJhMWM1MGJjMmQ2YzFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MjM5OCw4ICsyMzk4LDYgQEAKIAkJNUM3Qzc0Q0ExRkI1MjhENDAwMkY5QUJFIC8qIFdlYlZpZXdT
Y2hlZHVsZUluUnVuTG9vcC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdlYlZpZXdTY2hlZHVsZUluUnVuTG9vcC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUM4QkM3OTgyMThDRjNFOTAwODEzODg2IC8qIE5ldHdvcmtQcm9jZXNzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDOTczRjVCMUY1OEVGMEEwMDM1OUMyNyAvKiBX
ZWJHTFBvbGljeS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdl
YkdMUG9saWN5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1QzlCNTQ4QzIyM0M0
QkY1MDBCMTUwQzQgLyogVENQU2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFRDUFNlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVD
OUI1NDhEMjIzQzRCRjUwMEIxNTBDNCAvKiBUQ1BTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVENQU2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVDOUQ5MjFEMjJEN0RCRjcwMDhFOTI2NiAvKiBTb3VyY2VzLnR4dCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBTb3VyY2VzLnR4dDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM5RDky
MUUyMkQ3REJGODAwOEU5MjY2IC8qIFNvdXJjZXNDb2NvYS50eHQgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gU291cmNlc0NvY29hLnR4dDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM5
RDkyMjgyMkQ3REUwMDAwOEU5MjY2IC8qIFVuaWZpZWRTb3VyY2UyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVuaWZpZWRTb3VyY2UyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTMzMTAsOCArMzMwOCw2IEBACiAJCQkJQkM1NzVCQkYxMjZGNTc1
MjAwNkYwRjEyIC8qIFBsYXRmb3JtVXRpbGl0aWVzLmNwcCAqLywKIAkJCQlCQzEzMTg4MzExNzEx
NEE4MDBCNjk3MjcgLyogUGxhdGZvcm1VdGlsaXRpZXMuaCAqLywKIAkJCQlCQzkwOTUxQjEyNTUz
M0Q3MDAwODM3NTYgLyogUGxhdGZvcm1XZWJWaWV3LmggKi8sCi0JCQkJNUM5QjU0OEMyMjNDNEJG
NTAwQjE1MEM0IC8qIFRDUFNlcnZlci5jcHAgKi8sCi0JCQkJNUM5QjU0OEQyMjNDNEJGNTAwQjE1
MEM0IC8qIFRDUFNlcnZlci5oICovLAogCQkJCUJDQjlFN0ZBMTEyMzU5QTMwMEExMzdFMCAvKiBU
ZXN0LmggKi8sCiAJCQkJQkMxMzFBQTgxMTcxMzFGQzAwQjY5NzI3IC8qIFRlc3RzQ29udHJvbGxl
ci5jcHAgKi8sCiAJCQkJQkNCOUU3QzcxMTIzNEUzQTAwQTEzN0UwIC8qIFRlc3RzQ29udHJvbGxl
ci5oICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9DaGFsbGVuZ2UubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0No
YWxsZW5nZS5tbQppbmRleCA2YTUzM2RjZTJmOWM2NTNkZDU3MzYyNjZlZWI4YmExYjcwN2EyNTdk
Li44M2JkYzU5ZTA1NDgwMTI4MDM0OWEzMDg4ZGUwZjRkZTZkYTU4YWNkIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NoYWxsZW5nZS5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NoYWxsZW5nZS5tbQpAQCAtMjcs
NyArMjcsNiBAQAogCiAjaW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0
aWxpdGllcy5oIgotI2ltcG9ydCAiVENQU2VydmVyLmgiCiAjaW1wb3J0ICJUZXN0LmgiCiAjaW1w
b3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3Lmgi
CkBAIC00OSw3ICs0OCw3IEBAIHN0YXRpYyBib29sIG5hdmlnYXRpb25GaW5pc2hlZDsKIAogUmV0
YWluUHRyPFNlY0NlcnRpZmljYXRlUmVmPiB0ZXN0Q2VydGlmaWNhdGUoKQogewotICAgIGF1dG8g
Y2VydGlmaWNhdGVCeXRlcyA9IFRlc3RXZWJLaXRBUEk6OlRDUFNlcnZlcjo6dGVzdENlcnRpZmlj
YXRlKCk7CisgICAgYXV0byBjZXJ0aWZpY2F0ZUJ5dGVzID0gVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlcjo6dGVzdENlcnRpZmljYXRlKCk7CiAgICAgcmV0dXJuIGFkb3B0Q0YoU2VjQ2VydGlmaWNh
dGVDcmVhdGVXaXRoRGF0YShudWxscHRyLCAoX19icmlkZ2UgQ0ZEYXRhUmVmKVtOU0RhdGEgZGF0
YVdpdGhCeXRlczpjZXJ0aWZpY2F0ZUJ5dGVzLmRhdGEoKSBsZW5ndGg6Y2VydGlmaWNhdGVCeXRl
cy5zaXplKCldKSk7CiB9CiAKQEAgLTc0LDcgKzczLDcgQEAgc3RhdGljIFJldGFpblB0cjxTZWNJ
ZGVudGl0eVJlZj4gY3JlYXRlVGVzdElkZW50aXR5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcHJp
dmEKIAogUmV0YWluUHRyPFNlY0lkZW50aXR5UmVmPiB0ZXN0SWRlbnRpdHkoKQogewotICAgIHJl
dHVybiBjcmVhdGVUZXN0SWRlbnRpdHkoVGVzdFdlYktpdEFQSTo6VENQU2VydmVyOjp0ZXN0UHJp
dmF0ZUtleSgpLCBUZXN0V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6OnRlc3RDZXJ0aWZpY2F0ZSgpKTsK
KyAgICByZXR1cm4gY3JlYXRlVGVzdElkZW50aXR5KFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6
OnRlc3RQcml2YXRlS2V5KCksIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OnRlc3RDZXJ0aWZp
Y2F0ZSgpKTsKIH0KIAogUmV0YWluUHRyPFNlY0lkZW50aXR5UmVmPiB0ZXN0SWRlbnRpdHkyKCkK
QEAgLTM5OSw3ICszOTgsNiBAQCBURVNUKENoYWxsZW5nZSwgQmFzaWNQZXJzaXN0ZW50Q3JlZGVu
dGlhbCkKICAgICBFWFBFQ1RfTlVMTChyZW1vdmVkQ3JlZGVudGlhbCk7CiB9CiAKLSNpZiBIQVZF
KFNTTCkKIHN0YXRpYyB2b2lkIHZlcmlmeUNlcnRpZmljYXRlQW5kUHVibGljS2V5KFNlY1RydXN0
UmVmIHRydXN0KQogewogICAgIEVYUEVDVF9OT1RfTlVMTCh0cnVzdCk7CkBAIC02NTYsNSArNjU0
LDMgQEAgVEVTVChXZWJLaXQsIEVycm9yU2VjdXJlQ29kaW5nKQogfQogCiB9IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCi0KLSNlbmRpZiAvLyBIQVZFKFNTTCkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudFJ1bGVMaXN0Tm90aWZpY2F0
aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50UnVs
ZUxpc3ROb3RpZmljYXRpb24ubW0KaW5kZXggMjM3MzdlZTU0MWJhNjI0OWQxMmQ0ZGI2NTUwYWUx
MzA5ZjA5NGVlYy4uYjkzYTI5N2NlMjk2YzI2MmQyMjQxNzUyMzMxYWZjYTQ1ZWEzMWYyZSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50UnVs
ZUxpc3ROb3RpZmljYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Db250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24ubW0KQEAgLTI3LDcgKzI3LDYgQEAK
IAogI2ltcG9ydCAiSFRUUFNlcnZlci5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIK
LSNpbXBvcnQgIlRDUFNlcnZlci5oIgogI2ltcG9ydCAiVGVzdC5oIgogI2ltcG9ydCAiVGVzdE5h
dmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFVJRGVsZWdhdGUuaCIKQEAgLTQ5NSwz
OSArNDk0LDE1IEBAIFRFU1QoQ29udGVudFJ1bGVMaXN0LCBMZWdhY3lWZXJzaW9uQW5kTmFtZSkK
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdFNvdXJjZSk7CiB9CiAKLSNpZiBIQVZF
KFNTTCkKLQogVEVTVChXZWJLaXQsIFJlZGlyZWN0VG9QbGFpbnRleHRIVFRQU1VwZ3JhZGUpCiB7
CiAgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7Ci0gICAgVENQU2VydmVyIHNlcnZl
cihbY29ubmVjdGlvbkNvdW50ID0gMF0gKGludCBzb2NrZXQpIG11dGFibGUgewotICAgICAgICBU
Q1BTZXJ2ZXI6OnJlYWQoc29ja2V0KTsKLSAgICAgICAgaWYgKCFjb25uZWN0aW9uQ291bnQrKykg
ewotICAgICAgICAgICAgY29uc3QgY2hhciogY29ubmVjdGlvbkVzdGFibGlzaGVkID0KLSAgICAg
ICAgICAgICAgICAiSFRUUC8xLjEgMjAwIENvbm5lY3Rpb24gRXN0YWJsaXNoZWRcclxuIgotICAg
ICAgICAgICAgICAgICJDb25uZWN0aW9uOiBjbG9zZVxyXG4iCi0gICAgICAgICAgICAgICAgIlxy
XG4iOwotICAgICAgICAgICAgVENQU2VydmVyOjp3cml0ZShzb2NrZXQsIGNvbm5lY3Rpb25Fc3Rh
Ymxpc2hlZCwgc3RybGVuKGNvbm5lY3Rpb25Fc3RhYmxpc2hlZCkpOwotICAgICAgICAgICAgVENQ
U2VydmVyOjpzdGFydFNlY3VyZUNvbm5lY3Rpb24oc29ja2V0LCBbXSAoU1NMKiBzc2wpIHsKLSAg
ICAgICAgICAgICAgICBUQ1BTZXJ2ZXI6OnJlYWQoc3NsKTsKLSAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiByZWRpcmVjdCA9ICIiCi0gICAgICAgICAgICAgICAgIkhUVFAvMS4xIDMwMiBGb3Vu
ZFxyXG4iCi0gICAgICAgICAgICAgICAgIkxvY2F0aW9uOiBodHRwOi8vZG93bmxvYWQvXHJcbiIK
LSAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDBcclxuXHJcbiI7Ci0gICAgICAgICAg
ICAgICAgVENQU2VydmVyOjp3cml0ZShzc2wsIHJlZGlyZWN0LCBzdHJsZW4ocmVkaXJlY3QpKTsK
LSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAg
IGNvbnN0IGNoYXIqIGNvbnRlbnQgPSAiIgotICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIK
LSAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAzNFxyXG5cclxuIgotICAgICAgICAiPHNjcmlwdD5h
bGVydCgnc3VjY2VzcyEnKTwvc2NyaXB0PiI7Ci0gICAgICAgIFRDUFNlcnZlcjo6d3JpdGUoc29j
a2V0LCBjb250ZW50LCBzdHJsZW4oY29udGVudCkpOwotICAgIH0sIDIpOworICAgIEhUVFBTZXJ2
ZXIgcGxhaW50ZXh0U2VydmVyKHsgeyAiaHR0cDovL2Rvd25sb2FkL3JlZGlyZWN0VGFyZ2V0Iiwg
eyAiPHNjcmlwdD5hbGVydCgnc3VjY2VzcyEnKTwvc2NyaXB0PiIgfSB9IH0pOworICAgIEhUVFBT
ZXJ2ZXIgc2VjdXJlU2VydmVyKHsgeyAiL29yaWdpbmFsUmVxdWVzdCIsIHsgMzAyLCB7IHsgIkxv
Y2F0aW9uIiwgImh0dHA6Ly9kb3dubG9hZC9yZWRpcmVjdFRhcmdldCIgfSB9LCAiIiB9IH0gfSwg
SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzUHJveHkpOwogCiAgICAgYXV0byBzdG9yZUNvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXROb25QZXJzaXN0ZW50Q29uZmlndXJhdGlvbl0pOwotICAgIFtzdG9yZUNvbmZpZ3Vy
YXRpb24gc2V0SFRUUFByb3h5OltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyLnBvcnQoKV1dXTsKLSAg
ICBbc3RvcmVDb25maWd1cmF0aW9uIHNldEhUVFBTUHJveHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2
ZXIucG9ydCgpXV1dOworICAgIFtzdG9yZUNvbmZpZ3VyYXRpb24gc2V0SFRUUFByb3h5OltOU1VS
TCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cDovLzEyNy4w
LjAuMTolZC8iLCBwbGFpbnRleHRTZXJ2ZXIucG9ydCgpXV1dOworICAgIFtzdG9yZUNvbmZpZ3Vy
YXRpb24gc2V0SFRUUFNQcm94eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlY3VyZVNlcnZlci5wb3J0KCld
XV07CiAgICAgW3N0b3JlQ29uZmlndXJhdGlvbiBzZXRBbGxvd3NTZXJ2ZXJQcmVjb25uZWN0Ok5P
XTsKICAgICBhdXRvIHZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBuZXddKTsKICAgICBbdmlld0NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9y
ZTphZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0
aW9uOnN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmdldCgpXTsKQEAgLTUzNyw4ICs1MTIsNiBA
QCBURVNUKFdlYktpdCwgUmVkaXJlY3RUb1BsYWludGV4dEhUVFBTVXBncmFkZSkKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWws
IFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9u
U3BhY2Uuc2VydmVyVHJ1c3RdKTsKICAgICB9OwogICAgIHdlYlZpZXcuZ2V0KCkubmF2aWdhdGlv
bkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7Ci0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8v
ZG93bmxvYWQvIl1dXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9kb3dubG9hZC9vcmln
aW5hbFJlcXVlc3QiXV1dOwogICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBfdGVzdF93YWl0
Rm9yQWxlcnRdLCAic3VjY2VzcyEiKTsKIH0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0hTVFMubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0hTVFMubW0KaW5kZXggNmJmMzRlNjVlNzY5YjhiNzliZjE4
NmZkOTU2ZGJmMmZjZTc1NTRlYi4uYjMzZDc2Njk2YWNjNGEyYjAwOTNmMjBjYjY5NmI1MTQ0NDFj
ZDc1ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9I
U1RTLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSFNUUy5t
bQpAQCAtMjcsNyArMjcsNiBAQAogCiAjaW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0ICJQ
bGF0Zm9ybVV0aWxpdGllcy5oIgotI2ltcG9ydCAiVENQU2VydmVyLmgiCiAjaW1wb3J0ICJUZXN0
TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0VUlEZWxlZ2F0ZS5oIgogI2ltcG9y
dCAiVXRpbGl0aWVzLmgiCkBAIC0zNywxNSArMzYsOSBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CiAKLSNpZiBIQVZFKFNTTCkKKyNpZiBIQVZFKENGTkVUV09SS19OU1VSTFNFU1NJT05f
SFNUU19XSVRIX1VOVFJVU1RFRF9ST09UKQogCi1zdGF0aWMgYm9vbCBoYXNSYWRhcjgwNTUwMTIz
KCkKLXsKLSAgICAvLyBGSVhNRTogUmVwbGFjZSB0aGlzIHdpdGggYSBIQVMgbWFjcm8gb25jZSBy
ZGFyOi8vODA1NTAxMjMgaXMgaW4gYSBidWlsZC4KLSAgICByZXR1cm4gW1tOU1VSTFNlc3Npb25D
b25maWd1cmF0aW9uIGVwaGVtZXJhbFNlc3Npb25Db25maWd1cmF0aW9uXSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKF9hbGxvd3NIU1RTV2l0aFVudHJ1c3RlZFJvb3RDZXJ0aWZpY2F0ZSld
OwotfQotCi1zdGQ6OnBhaXI8UmV0YWluUHRyPFdLV2ViVmlldz4sIFJldGFpblB0cjxUZXN0TmF2
aWdhdGlvbkRlbGVnYXRlPj4gaHN0c1dlYlZpZXdBbmREZWxlZ2F0ZShjb25zdCBUQ1BTZXJ2ZXIm
IGh0dHBzU2VydmVyLCBjb25zdCBIVFRQU2VydmVyJiBodHRwU2VydmVyKQorc3RkOjpwYWlyPFJl
dGFpblB0cjxXS1dlYlZpZXc+LCBSZXRhaW5QdHI8VGVzdE5hdmlnYXRpb25EZWxlZ2F0ZT4+IGhz
dHNXZWJWaWV3QW5kRGVsZWdhdGUoY29uc3QgSFRUUFNlcnZlciYgaHR0cHNTZXJ2ZXIsIGNvbnN0
IEhUVFBTZXJ2ZXImIGh0dHBTZXJ2ZXIpCiB7CiAgICAgYXV0byBzdG9yZUNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRO
b25QZXJzaXN0ZW50Q29uZmlndXJhdGlvbl0pOwogICAgIFtzdG9yZUNvbmZpZ3VyYXRpb24gc2V0
SFRUUFNQcm94eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIGh0dHBzU2VydmVyLnBvcnQoKV1dXTsKQEAgLTY1
LDI4ICs1OCwxNCBAQCBzdGQ6OnBhaXI8UmV0YWluUHRyPFdLV2ViVmlldz4sIFJldGFpblB0cjxU
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlPj4gaHN0c1dlYlZpZXdBbgogICAgIHJldHVybiB7IFdURk1v
dmUod2ViVmlldyksIFdURk1vdmUoZGVsZWdhdGUpIH07CiB9CiAKLXN0YXRpYyBUQ1BTZXJ2ZXIg
aHN0c1NlcnZlcihzaXplX3QgcmVwbGllcykKK3N0YXRpYyBIVFRQU2VydmVyIGhzdHNTZXJ2ZXIo
KQogewotICAgIC8vIEZJWE1FOiBVc2UgbndfZnJhbWVyX3QgdG8gc3VwcG9ydCBIVFRQUyBwcm94
aWVzIGluIEhUVFBTZXJ2ZXIgYW5kIHJlbW92ZSBUQ1BTZXJ2ZXIuCi0gICAgcmV0dXJuIFRDUFNl
cnZlcihUQ1BTZXJ2ZXI6OlByb3RvY29sOjpIVFRQU1Byb3h5LCBbPV0gKFNTTCogc3NsKSB7Ci0g
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVwbGllczsgaSsrKSB7Ci0gICAgICAgICAg
ICBUQ1BTZXJ2ZXI6OnJlYWQoc3NsKTsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJlc3BvbnNl
ID0KLSAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKLSAgICAgICAgICAgICAg
ICAiQ29udGVudC1MZW5ndGg6IDBcclxuIgotICAgICAgICAgICAgICAgICJTdHJpY3QtVHJhbnNw
b3J0LVNlY3VyaXR5OiBtYXgtYWdlPTMxNTM2MDAwXHJcbiIKLSAgICAgICAgICAgICAgICAiXHJc
biI7Ci0gICAgICAgICAgICBUQ1BTZXJ2ZXI6OndyaXRlKHNzbCwgcmVzcG9uc2UsIHN0cmxlbihy
ZXNwb25zZSkpOwotICAgICAgICB9Ci0gICAgfSk7CisgICAgcmV0dXJuIEhUVFBTZXJ2ZXIoe3sg
Ii8iLCB7e3siU3RyaWN0LVRyYW5zcG9ydC1TZWN1cml0eSIgLCAibWF4LWFnZT0zMTUzNjAwMCJ9
fSwgIiIgfX19LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHNQcm94eSk7CiB9CiAKIFRFU1Qo
SFNUUywgQmFzaWMpCiB7Ci0gICAgaWYgKCFoYXNSYWRhcjgwNTUwMTIzKCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGF1dG8gaHR0cHNTZXJ2ZXIgPSBoc3RzU2VydmVyKDIpOworICAgIGF1dG8g
aHR0cHNTZXJ2ZXIgPSBoc3RzU2VydmVyKCk7CiAKICAgICBIVFRQU2VydmVyIGh0dHBTZXJ2ZXIo
e3sgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCB7IHt7ICJTdHJpY3QtVHJhbnNwb3J0LVNlY3VyaXR5
IiwgIm1heC1hZ2U9MzE1MzYwMDAifX0sICJoaSIgfX19KTsKIApAQCAtMTE0LDEwICs5Myw3IEBA
IFRFU1QoSFNUUywgQmFzaWMpCiAKIFRFU1QoSFNUUywgVGhpcmRQYXJ0eSkKIHsKLSAgICBpZiAo
IWhhc1JhZGFyODA1NTAxMjMoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBodHRwc1Nl
cnZlciA9IGhzdHNTZXJ2ZXIoMSk7CisgICAgYXV0byBodHRwc1NlcnZlciA9IGhzdHNTZXJ2ZXIo
KTsKIAogICAgIGNvbnN0IGNoYXIqIGh0bWwgPSAiPHNjcmlwdD4iCiAgICAgICAgICJ2YXIgeGhy
ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7IgpAQCAtMTQ0LDEwICsxMjAsNyBAQCBURVNUKEhTVFMs
IFRoaXJkUGFydHkpCiAKIFRFU1QoSFNUUywgQ3Jvc3NPcmlnaW5SZWRpcmVjdCkKIHsKLSAgICBp
ZiAoIWhhc1JhZGFyODA1NTAxMjMoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBodHRw
c1NlcnZlciA9IGhzdHNTZXJ2ZXIoMik7CisgICAgYXV0byBodHRwc1NlcnZlciA9IGhzdHNTZXJ2
ZXIoKTsKIAogICAgIEhUVFBTZXJ2ZXIgaHR0cFNlcnZlcih7CiAgICAgICAgIHsgImh0dHA6Ly9l
eGFtcGxlLmNvbS8iLCB7ICJoaSIgfX0sCkBAIC0xNjYsNiArMTM5LDYgQEAgVEVTVChIU1RTLCBD
cm9zc09yaWdpblJlZGlyZWN0KQogICAgIEVYUEVDVF9FUShodHRwU2VydmVyLnRvdGFsUmVxdWVz
dHMoKSwgMXUpOwogfQogCi0jZW5kaWYgLy8gSEFWRShTU0wpCisjZW5kaWYgLy8gSEFWRShDRk5F
VFdPUktfTlNVUkxTRVNTSU9OX0hTVFNfV0lUSF9VTlRSVVNURURfUk9PVCkKIAogfSAvLyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Qcm94eS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUHJveHkubW0KaW5kZXggYzg2YjFiYzk1MTdjYWYzOTliODJmYmQwMDE5NTAwOTZhNDBh
MjBkMy4uNjkzYjg3ZGNkNWUwZDAzOGFiYmRiYzBjYjdkY2U0NjU3Mjk4ZjczOCAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm94eS5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb3h5Lm1tCkBAIC0zOSw4ICsz
OSw2IEBACiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJp
bmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KIAotI2lmIEhBVkUoU1NMKQotCiBAaW50ZXJmYWNlIFBy
b3h5RGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGUsIFdLVUlEZWxlZ2F0
ZT4KIC0gKE5TU3RyaW5nICopd2FpdEZvckFsZXJ0OwogQGVuZApAQCAtMjQyLDEyICsyNDAsNiBA
QCBURVNUKFdlYktpdCwgU2VjdXJlUHJveHlDb25uZWN0aW9uKQogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmcmVjZWl2ZWRWYWxpZENsaWVudEhlbGxvKTsKIH0KIAotfSAvLyBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSQotCi0jZW5kaWYgLy8gSEFWRShTU0wpCi0KLW5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKLQogVEVTVChXZWJLaXQsIFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
KQogewogICAgIF9fYmxvY2sgYm9vbCBzZXREZWZhdWx0Q29va2llQWNjZXB0UG9saWN5ID0gZmFs
c2U7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Nl
cnZpY2VXb3JrZXJUQ1BTZXJ2ZXIuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvU2VydmljZVdvcmtlclRDUFNlcnZlci5oCmluZGV4IDMwZTZhN2NhNjYyMjEwNzg3YmUy
NTc2MDUyMjY3YzRlY2I0YWU2OGEuLmVhMjA3YzdiMjc4N2RiMGMwYzRjYWM3NDFjNjU4MWNiYmU0
NzNkMTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
U2VydmljZVdvcmtlclRDUFNlcnZlci5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvU2VydmljZVdvcmtlclRDUFNlcnZlci5oCkBAIC0yMywxMCArMjMsMTAgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1wb3J0ICJUQ1BT
ZXJ2ZXIuaCIKKyNpbXBvcnQgIkhUVFBTZXJ2ZXIuaCIKICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCi1jbGFzcyBTZXJ2aWNlV29ya2VyVENQU2VydmVyIDogcHVibGljIFRlc3RXZWJL
aXRBUEk6OlRDUFNlcnZlciB7CitjbGFzcyBTZXJ2aWNlV29ya2VyVENQU2VydmVyIDogcHVibGlj
IFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgewogcHVibGljOgogICAgIHN0cnVjdCBSZXNvdXJj
ZUluZm8gewogICAgICAgICBjb25zdCBjaGFyKiBtaW1lVHlwZSB7IG51bGxwdHIgfTsKQEAgLTQw
LDI4ICs0MCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIDogU2VydmljZVdvcmtlclRDUFNlcnZlcihX
VEZNb3ZlKGZpcnN0Q29ubmVjdGlvbiksIFdURk1vdmUoc2Vjb25kQ29ubmVjdGlvbiksIHsgfSwg
Y29ubmVjdGlvbnMsIFdURk1vdmUoZXhwZWN0ZWRVc2VyQWdlbnRzKSkgeyB9CiAKICAgICBTZXJ2
aWNlV29ya2VyVENQU2VydmVyKFZlY3RvcjxSZXNvdXJjZUluZm8+JiYgZmlyc3RDb25uZWN0aW9u
LCBWZWN0b3I8UmVzb3VyY2VJbmZvPiYmIHNlY29uZENvbm5lY3Rpb24sIFZlY3RvcjxSZXNvdXJj
ZUluZm8+JiYgdGhpcmRDb25uZWN0aW9uLCBzaXplX3QgY29ubmVjdGlvbnMgPSAzLCBWZWN0b3I8
U3RyaW5nPiYmIGV4cGVjdGVkVXNlckFnZW50cyA9IHsgfSkKLSAgICAgICAgOiBUQ1BTZXJ2ZXIo
W3RoaXMsIGZpcnN0Q29ubmVjdGlvbiA9IFdURk1vdmUoZmlyc3RDb25uZWN0aW9uKSwgc2Vjb25k
Q29ubmVjdGlvbiA9IFdURk1vdmUoc2Vjb25kQ29ubmVjdGlvbiksIHRoaXJkQ29ubmVjdGlvbiA9
IFdURk1vdmUodGhpcmRDb25uZWN0aW9uKSwgZXhwZWN0ZWRVc2VyQWdlbnRzID0gV1RGTW92ZShl
eHBlY3RlZFVzZXJBZ2VudHMpXSAoaW50IHNvY2tldCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBh
dXRvIHJlc3BvbmRUb1JlcXVlc3RzID0gW3RoaXMsIHNvY2tldF0gKFZlY3RvcjxSZXNvdXJjZUlu
Zm8+JiYgdmVjdG9yLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVXNlckFnZW50KSB7Ci0gICAgICAg
ICAgICAgICAgZm9yIChhdXRvJiBpbmZvIDogdmVjdG9yKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGF1dG8gcmVxdWVzdCA9IFRDUFNlcnZlcjo6cmVhZChzb2NrZXQpOwotICAgICAgICAgICAgICAg
ICAgICBpZiAoIWV4cGVjdGVkVXNlckFnZW50LmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKChjb25zdCBjaGFyKilyZXF1ZXN0LmRhdGEoKSwg
bWFrZVN0cmluZygiVXNlci1BZ2VudDogIiwgZXhwZWN0ZWRVc2VyQWdlbnQpLnV0ZjgoKS5kYXRh
KCksIHJlcXVlc3Quc2l6ZSgpKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3VzZXJBZ2Vu
dHNDaGVja2VkKys7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
TlNTdHJpbmcgKmZvcm1hdCA9IEAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKLSAgICAgICAgICAgICAg
ICAgICAgIkNvbnRlbnQtVHlwZTogJXNcclxuIgotICAgICAgICAgICAgICAgICAgICAiQ29udGVu
dC1MZW5ndGg6ICVkXHJcblxyXG4iCi0gICAgICAgICAgICAgICAgICAgICIlcyI7Ci0gICAgICAg
ICAgICAgICAgICAgIE5TU3RyaW5nICpyZXNwb25zZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OmZvcm1hdCwgaW5mby5taW1lVHlwZSwgc3RybGVuKGluZm8ucmVzcG9uc2UpLCBpbmZvLnJl
c3BvbnNlXTsKLSAgICAgICAgICAgICAgICAgICAgVENQU2VydmVyOjp3cml0ZShzb2NrZXQsIHJl
c3BvbnNlLlVURjhTdHJpbmcsIHJlc3BvbnNlLmxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfTsKKyAgICAgICAgOiBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyKFt0aGlz
LCBmaXJzdENvbm5lY3Rpb24gPSBXVEZNb3ZlKGZpcnN0Q29ubmVjdGlvbiksIHNlY29uZENvbm5l
Y3Rpb24gPSBXVEZNb3ZlKHNlY29uZENvbm5lY3Rpb24pLCB0aGlyZENvbm5lY3Rpb24gPSBXVEZN
b3ZlKHRoaXJkQ29ubmVjdGlvbiksIGV4cGVjdGVkVXNlckFnZW50cyA9IFdURk1vdmUoZXhwZWN0
ZWRVc2VyQWdlbnRzKV0gKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgbXV0
YWJsZSB7CiAgICAgICAgICAgICBpZiAoIWZpcnN0Q29ubmVjdGlvbi5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3BvbmRUb1JlcXVlc3RzKHN0ZDo6ZXhjaGFuZ2UoZmlyc3RD
b25uZWN0aW9uLCB7IH0pLCAhZXhwZWN0ZWRVc2VyQWdlbnRzLmlzRW1wdHkoKSA/IGV4cGVjdGVk
VXNlckFnZW50c1swXSA6IFN0cmluZygpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9u
ZFRvUmVxdWVzdHMoY29ubmVjdGlvbiwgc3RkOjpleGNoYW5nZShmaXJzdENvbm5lY3Rpb24sIHsg
fSksICFleHBlY3RlZFVzZXJBZ2VudHMuaXNFbXB0eSgpID8gZXhwZWN0ZWRVc2VyQWdlbnRzWzBd
IDogU3RyaW5nKCkpOwogICAgICAgICAgICAgaWYgKCFzZWNvbmRDb25uZWN0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uZFRvUmVxdWVzdHMoc3RkOjpleGNoYW5n
ZShzZWNvbmRDb25uZWN0aW9uLCB7IH0pLCBleHBlY3RlZFVzZXJBZ2VudHMuc2l6ZSgpID4gMSA/
IGV4cGVjdGVkVXNlckFnZW50c1sxXSA6IFN0cmluZygpKTsKLSAgICAgICAgICAgIHJlc3BvbmRU
b1JlcXVlc3RzKHN0ZDo6ZXhjaGFuZ2UodGhpcmRDb25uZWN0aW9uLCB7IH0pLCB7IH0pOwotICAg
ICAgICB9LCBjb25uZWN0aW9ucykgeyB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbmRU
b1JlcXVlc3RzKGNvbm5lY3Rpb24sIHN0ZDo6ZXhjaGFuZ2Uoc2Vjb25kQ29ubmVjdGlvbiwgeyB9
KSwgZXhwZWN0ZWRVc2VyQWdlbnRzLnNpemUoKSA+IDEgPyBleHBlY3RlZFVzZXJBZ2VudHNbMV0g
OiBTdHJpbmcoKSk7CisgICAgICAgICAgICByZXNwb25kVG9SZXF1ZXN0cyhjb25uZWN0aW9uLCBz
dGQ6OmV4Y2hhbmdlKHRoaXJkQ29ubmVjdGlvbiwgeyB9KSwgeyB9KTsKKyAgICAgICAgfSkgeyB9
CiAKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QoKSB7IHJldHVybiByZXF1ZXN0V2l0aEZvcm1h
dChAImh0dHA6Ly8xMjcuMC4wLjE6JWQvbWFpbi5odG1sIik7IH0KICAgICBOU1VSTFJlcXVlc3Qg
KnJlcXVlc3RXaXRoTG9jYWxob3N0KCkgeyByZXR1cm4gcmVxdWVzdFdpdGhGb3JtYXQoQCJodHRw
Oi8vbG9jYWxob3N0OiVkL21haW4uaHRtbCIpOyB9CkBAIC02OSw2ICs1NCwyOSBAQCBwdWJsaWM6
CiAgICAgc2l6ZV90IHVzZXJBZ2VudHNDaGVja2VkKCkgY29uc3QgeyByZXR1cm4gbV91c2VyQWdl
bnRzQ2hlY2tlZDsgfQogCiBwcml2YXRlOgorICAgIHZvaWQgcmVzcG9uZFRvUmVxdWVzdHMoVGVz
dFdlYktpdEFQSTo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgVmVjdG9yPFJlc291cmNlSW5mbz4m
JiB2ZWN0b3IsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRVc2VyQWdlbnQsIHNpemVfdCB2ZWN0b3JJ
bmRleCA9IDApCisgICAgeworICAgICAgICBpZiAodmVjdG9ySW5kZXggPj0gdmVjdG9yLnNpemUo
KSkgeworICAgICAgICAgICAgY29ubmVjdGlvbi50ZXJtaW5hdGUoKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChb
PSwgdmVjdG9yID0gV1RGTW92ZSh2ZWN0b3IpXSAoVmVjdG9yPGNoYXI+JiYgcmVxdWVzdCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBpZiAoIWV4cGVjdGVkVXNlckFnZW50LmlzTnVsbCgpKSB7Cisg
ICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3RybnN0cigoY29uc3QgY2hhciopcmVxdWVzdC5k
YXRhKCksIG1ha2VTdHJpbmcoIlVzZXItQWdlbnQ6ICIsIGV4cGVjdGVkVXNlckFnZW50KS51dGY4
KCkuZGF0YSgpLCByZXF1ZXN0LnNpemUoKSkpOworICAgICAgICAgICAgICAgIG1fdXNlckFnZW50
c0NoZWNrZWQrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIE5TU3RyaW5nICpmb3JtYXQg
PSBAIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAiQ29udGVudC1UeXBlOiAlc1xy
XG4iCisgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6ICVkXHJcblxyXG4iCisgICAgICAgICAg
ICAiJXMiOworICAgICAgICAgICAgYXV0byYgaW5mbyA9IHZlY3Rvclt2ZWN0b3JJbmRleF07Cisg
ICAgICAgICAgICBOU1N0cmluZyAqcmVzcG9uc2UgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpmb3JtYXQsIGluZm8ubWltZVR5cGUsIHN0cmxlbihpbmZvLnJlc3BvbnNlKSwgaW5mby5yZXNw
b25zZV07CisgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQocmVzcG9uc2UsIFs9LCB2ZWN0b3Ig
PSBXVEZNb3ZlKHZlY3RvcildICgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIHJlc3BvbmRU
b1JlcXVlc3RzKGNvbm5lY3Rpb24sIFdURk1vdmUodmVjdG9yKSwgZXhwZWN0ZWRVc2VyQWdlbnQs
IHZlY3RvckluZGV4ICsgMSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQor
CiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0V2l0aEZvcm1hdChOU1N0cmluZyAqZm9ybWF0KSB7
IHJldHVybiBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5n
OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OmZvcm1hdCwgcG9ydCgpXV1dOyB9Ci0gICAgc3Rk
OjphdG9taWM8c2l6ZV90PiBtX3VzZXJBZ2VudHNDaGVja2VkIHsgMCB9OworICAgIHNpemVfdCBt
X3VzZXJBZ2VudHNDaGVja2VkIHsgMCB9OwogfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvSFRUUFNlcnZlci5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQ
U2VydmVyLmgKaW5kZXggMmU4MjM1Mzg1MThhNTNkYTkzYWQ0OTIyNDhiOWJmZTBlZGQxM2E3Mi4u
ZjhhMTcyYWI2MGE1MmMyNWJlOTZjMDNjMzNjMDkwYWViNDgzMjJjNSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9IVFRQU2VydmVyLmgKQEAgLTMyLDYgKzMyLDggQEAKICNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAorT0JKQ19DTEFT
UyBOU1VSTFJlcXVlc3Q7CisKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogY2xhc3MgQ29u
bmVjdGlvbjsKQEAgLTU4LDYgKzYwLDkgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHJlc3Bv
bmRXaXRoQ2hhbGxlbmdlVGhlbk9LKENvbm5lY3Rpb24pOwogICAgIHN0YXRpYyBTdHJpbmcgcGFy
c2VQYXRoKGNvbnN0IFZlY3RvcjxjaGFyPiYgcmVxdWVzdCk7CiAKKyAgICBzdGF0aWMgVmVjdG9y
PHVpbnQ4X3Q+IHRlc3RQcml2YXRlS2V5KCk7CisgICAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiB0
ZXN0Q2VydGlmaWNhdGUoKTsKKwogcHJpdmF0ZToKICAgICBzdGF0aWMgUmV0YWluUHRyPG53X3Bh
cmFtZXRlcnNfdD4gbGlzdGVuZXJQYXJhbWV0ZXJzKFByb3RvY29sLCBDZXJ0aWZpY2F0ZVZlcmlm
aWVyJiYsIFJldGFpblB0cjxTZWNJZGVudGl0eVJlZj4mJiwgc3RkOjpvcHRpb25hbDx1aW50MTZf
dD4gcG9ydCk7CiAgICAgc3RhdGljIHZvaWQgcmVzcG9uZFRvUmVxdWVzdHMoQ29ubmVjdGlvbiwg
UmVmPFJlcXVlc3REYXRhPik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L0hUVFBTZXJ2ZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0K
aW5kZXggNWNhN2E5NmM3NDc3NzY2MjA0MGZhM2U2MGM0N2ExNDcwNDY0NTg2Mi4uYmRiMTc1ZWFk
NGYwNTljMGY1ZjE5YjMzNDY3NmYxOGEzNjVkMzY4MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvSFRUUFNlcnZlci5tbQpAQCAtNTM5LDQgKzUzOSwxMTMgQEAgdm9pZCBIMjo6Q29ubmVjdGlv
bjo6cmVjZWl2ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEZyYW1lJiYpPiYmIGNvbXBsZXRpb25I
YW5kbGUKICAgICB9KTsKIH0KIAorVmVjdG9yPHVpbnQ4X3Q+IEhUVFBTZXJ2ZXI6OnRlc3RDZXJ0
aWZpY2F0ZSgpCit7CisgICAgLy8gQ2VydGlmaWNhdGUgYW5kIHByaXZhdGUga2V5IHdlcmUgZ2Vu
ZXJhdGVkIGJ5IHJ1bm5pbmcgdGhpcyBjb21tYW5kOgorICAgIC8vIG9wZW5zc2wgcmVxIC14NTA5
IC1uZXdrZXkgcnNhOjQwOTYgLWtleW91dCBrZXkucGVtIC1vdXQgY2VydC5wZW0gLWRheXMgMzY1
IC1ub2RlcworICAgIC8vIGFuZCBlbnRlcmluZyB0aGlzIGluZm9ybWF0aW9uOgorICAgIC8qCisg
ICAgIENvdW50cnkgTmFtZSAoMiBsZXR0ZXIgY29kZSkgW106VVMKKyAgICAgU3RhdGUgb3IgUHJv
dmluY2UgTmFtZSAoZnVsbCBuYW1lKSBbXTpOZXcgTWV4aWNvCisgICAgIExvY2FsaXR5IE5hbWUg
KGVnLCBjaXR5KSBbXTpTYW50YSBGZQorICAgICBPcmdhbml6YXRpb24gTmFtZSAoZWcsIGNvbXBh
bnkpIFtdOlNlbGYKKyAgICAgT3JnYW5pemF0aW9uYWwgVW5pdCBOYW1lIChlZywgc2VjdGlvbikg
W106TXlzZWxmCisgICAgIENvbW1vbiBOYW1lIChlZywgZnVsbHkgcXVhbGlmaWVkIGhvc3QgbmFt
ZSkgW106TWUKKyAgICAgRW1haWwgQWRkcmVzcyBbXTptZUBleGFtcGxlLmNvbQorICAgICAqLwor
ICAgIAorICAgIFN0cmluZyBwZW1FbmNvZGVkQ2VydGlmaWNhdGUoIiIKKyAgICAiTUlJRmdEQ0NB
MmdDQ1FDS0hpUFJVNU1RdURBTkJna3Foa2lHOXcwQkFRc0ZBRENCZ1RFTE1Ba0dBMVVFQmhNQyIK
KyAgICAiVlZNeEV6QVJCZ05WQkFnTUNrNWxkeUJOWlhocFkyOHhFVEFQQmdOVkJBY01DRk5oYm5S
aElFWmxNUTB3Q3dZRCIKKyAgICAiVlFRS0RBUlRaV3htTVE4d0RRWURWUVFMREFaTmVYTmxiR1l4
Q3pBSkJnTlZCQU1NQWsxbE1SMHdHd1lKS29aSSIKKyAgICAiaHZjTkFRa0JGZzV0WlVCbGVHRnRj
R3hsTG1OdmJUQWVGdzB4T1RBek1qTXdOVFV3TVRSYUZ3MHlNREF6TWpJdyIKKyAgICAiTlRVd01U
UmFNSUdCTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNBd0tUbVYzSUUxbGVHbGpiekVSTUE4
RyIKKyAgICAiQTFVRUJ3d0lVMkZ1ZEdFZ1JtVXhEVEFMQmdOVkJBb01CRk5sYkdZeER6QU5CZ05W
QkFzTUJrMTVjMlZzWmpFTCIKKyAgICAiTUFrR0ExVUVBd3dDVFdVeEhUQWJCZ2txaGtpRzl3MEJD
UUVXRG0xbFFHVjRZVzF3YkdVdVkyOXRNSUlDSWpBTiIKKyAgICAiQmdrcWhraUc5dzBCQVFFRkFB
T0NBZzhBTUlJQ0NnS0NBZ0VBM3JoTjRTUGc4VlkvUHRHRE5LWTNUOUpJU2dieSIKKyAgICAiOFlH
TUp4MHZPK1laRlptM0czZnNUVXN5dkR5RUh3cXA1YWJDWlJCL0J5MVB3V2tOcmZ4bi9YUDhQMDM0
SlBsRSIKKyAgICAiNmlyVml1QVlRcnFVaDZrN1pSOENwT001R0VjUlpnQVVKR0dRd05sT2tFd2FI
bk1HYzhTc0h1cmdEUGg1WEJwZyIKKyAgICAiYkR5dGQ3Qkp1QjFOb0kvS0ptaGNhamtBdVYzdmFy
Uyt1UExvZlBITnFlK2NMOGhObmpaUXdIV2FyUDQ1a3M0ZSIKKyAgICAiQmNPRDd0d3F4dUhuVm0v
RldFcnBZOFdzNXMxTXJQVGhVZERhaGpFTWYrWWZESjlLTDh5MzA0eVM4SjhmZUN4WSIKKyAgICAi
ZmNINEJ2Z0x0Sm1CTkhKZ2ozZU5EL0VNWmpKZ3oyRnNCanJKazhrS0QzMWN3KzRXcDhVRjRza1dY
Q2Y0NittTiIKKyAgICAiT0hwMTNQZVNDWkx5RjRaQUhhelVWa25EUGNjMllOcldWVjFpNm4zVDE1
a0kwVDVaN2JzdGRtQUx1U2tFMmN1SiIKKyAgICAiU1ZOTzZnUitac1ZSVG5ldVF4d1dUVTBNTkVo
QVBGT1gyQmhHUDVlaXNnRVV6a254TUpkZEZEbjlXeGtsdTFKaCIKKyAgICAiZ2t6QVNBLyszQW1s
ckZaTVBoT2hqRXVsMHpqZ05SNVJCbDFHOEh6OTJMQXg1VUVEQnRkTGc3MUkrSThBelFPaCIKKyAg
ICAiZDZMdEJla0VDeEExNnBTYXBwZzV2Y1c5Wi84TjZabHNIbloyRnp0QTBuQ09mbGtvTzlpZWpP
cGN1Rk40RVZZRCIKKyAgICAieEl0d2N0S3cxTENlTkQvczRrbW9SUm5YYlg3azlPNmNJMVVVV001
OTVHc3U1dFBhMzNNNUFaRkNhdjJnT1Z1WSIKKyAgICAiZGpwcFMwSE9mbzVodjZjQ0F3RUFBVEFO
QmdrcWhraUc5dzBCQVFzRkFBT0NBZ0VBWThFV2FBRkVmdzdPVitvRCIKKyAgICAiWFVaU0lZWHEz
RUgyRTVwM3EzOEFoSU9MUmpCdUIrdXR5dTdRNnJ4TU1IdXcyVHRzTit6YkFSN3lyamZzc2VBMyIK
KyAgICAiNFRNMXhlNE5rN05WTkhSb1pRK0MwSXFmOWZ2Y2lvTXZUMXRUcm1hME1oS1NqRlFweCtQ
dnlMVmJEN1lkUDg2TCIKKyAgICAibWVlaEtxVTdoMXBMR0FpR3dqb2FaOVliaDZLdXEvTVRBSHkz
RDgrd2s3QjM2VkJ4RjZkaVZsVVBaSlpRV0tKeSIKKyAgICAiTUt5OUczc3plMVpHdDlXZUUwQU12
a04ySEllZjBIVEtDVVozZUJ2ZWNPTWlqeEwwV2hXbzVReWY1azZ5bENhVSIKKyAgICAiMmZ4K004
RGZEY3dGbzd0U2dMeFNLM0dDRnB4UGZpRHQ2UWs4Yzl0UW41UzFnWTN0NkxKdXdWQ0Z3VUlYbE5r
QiIKKyAgICAiSkQ3K2NaMVovdENyRWh6ajNZQ2swdVVVOENpZm9VKzRGRytIR0ZQK1NQenRzWUUw
NTVtU2ozK0VzaCtveW9WQiIKKyAgICAiZ0JIOTBzRTJUMWkwZU5JOGY2MW9TZ3dZRmVIc2Y3ZkM3
MVhFWExGUitHd05kbXdxbG13bERaRXBUdTdCb05OKyIKKyAgICAicTcrVGZrMU1Sa0psTDFQSDZZ
dS9JUGhaaU5oNHR5SXFET3RsWWZ6cDU3N0ErT1VVK3E1UFBSRlJJc3FoZU94dCIKKyAgICAibU5s
SHg0VXpkNFUzSVRmbW9nSmF6anF3WU8ydmlCWlk0alVRbXlaczc1ZUgvamlVRkhXUnNoYTNBZG5X
NUxXYSIKKyAgICAiRzNQRm5ZYlc4dXJIME5TSkcvVysvOURBK1k3QWEwY3M0VFBwdUJHWjBOVTFX
OTRPb0NNbzRsa082SC95NkxldSIKKyAgICAiM3ZqWkQzeTlrWms3bXJlOVhId2tJOE1kSzVzPSIp
OworICAgIAorICAgIGF1dG8gZGVjb2RlZENlcnRpZmljYXRlID0gYmFzZTY0RGVjb2RlKHBlbUVu
Y29kZWRDZXJ0aWZpY2F0ZSk7CisgICAgcmV0dXJuIFdURk1vdmUoKmRlY29kZWRDZXJ0aWZpY2F0
ZSk7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBIVFRQU2VydmVyOjp0ZXN0UHJpdmF0ZUtleSgpCit7
CisgICAgU3RyaW5nIHBlbUVuY29kZWRQcml2YXRlS2V5KCIiCisgICAgIk1JSUpRZ0lCQURBTkJn
a3Foa2lHOXcwQkFRRUZBQVNDQ1N3d2dna29BZ0VBQW9JQ0FRRGV1RTNoSStEeFZqOCsiCisgICAg
IjBZTTBwamRQMGtoS0J2THhnWXduSFM4NzVoa1ZtYmNiZCt4TlN6SzhQSVFmQ3FubHBzSmxFSDhI
TFUvQmFRMnQiCisgICAgIi9HZjljL3cvVGZnaytVVHFLdFdLNEJoQ3VwU0hxVHRsSHdLazR6a1lS
eEZtQUJRa1laREEyVTZRVEJvZWN3WnoiCisgICAgInhLd2U2dUFNK0hsY0dtQnNQSzEzc0VtNEhV
MmdqOG9tYUZ4cU9RQzVYZTlxdEw2NDh1aDg4YzJwNzV3dnlFMmUiCisgICAgIk5sREFkWnFzL2pt
U3poNEZ3NFB1M0NyRzRlZFdiOFZZU3Vsanhhem16VXlzOU9GUjBOcUdNUXgvNWg4TW4wb3YiCisg
ICAgInpMZlRqSkx3bng5NExGaDl3ZmdHK0F1MG1ZRTBjbUNQZDQwUDhReG1NbURQWVd3R09zbVR5
UW9QZlZ6RDdoYW4iCisgICAgInhRWGl5UlpjSi9qcjZZMDRlblhjOTVJSmt2SVhoa0Fkck5SV1Nj
TTl4elpnMnRaVlhXTHFmZFBYbVFqUlBsbnQiCisgICAgInV5MTJZQXU1S1FUWnk0bEpVMDdxQkg1
bXhWRk9kNjVESEJaTlRRdzBTRUE4VTVmWUdFWS9sNkt5QVJUT1NmRXciCisgICAgImwxMFVPZjFi
R1NXN1VtR0NUTUJJRC83Y0NhV3NWa3crRTZHTVM2WFRPT0ExSGxFR1hVYndmUDNZc0RIbFFRTUci
CisgICAgIjEwdUR2VWo0andETkE2RjNvdTBGNlFRTEVEWHFsSnFtbURtOXhiMW4vdzNwbVd3ZWRu
WVhPMERTY0k1K1dTZzciCisgICAgIjJKNk02bHk0VTNnUlZnUEVpM0J5MHJEVXNKNDBQK3ppU2Fo
RkdkZHRmdVQwN3B3alZSUll6bjNrYXk3bTA5cmYiCisgICAgImN6a0JrVUpxL2FBNVc1aDJPbWxM
UWM1K2ptRy9wd0lEQVFBQkFvSUNBR3JhL0NwL2YwWHF2azlTVCtQcnQyL3AiCisgICAgImtOdExl
RFhjbExTVGNQMEpDWkh1ZlFhRncrN1ZuRkxwcWU0R3ZMcTlCbGxjejhWT3ZRd3JiZS9Dd05XK1Z4
QzgiCisgICAgIlJNamdlMnJxQUNnd0doT3gxdDg3bDQ2TmtVUXc3RXkwbENsZThrcitNR2dHR29a
cXJNRmRLSVJVb012NG5tUTYiCisgICAgInRtYzFGSHY1cExSZTlRK0xwNW5ZUXdHb1ltWm9VT3Vl
b09hT0wwOG00OXBHWFFraU44cEpETXhTZk8zSnZ0c3UiCisgICAgIjRjcUliNmtPUS9kTzFJczFD
VHZVUmxkMUlZTEg3WXVTaGk0WkV4MmcyYWMyVXl2dDZZbXh4dk1tQWpCU0twR2QiCisgICAgImxv
aWVwaG8zL05yREdVS2R2M3E5UVl5enJBOHc5R1QzMkxER3FnQlhKaTFzY0JJOGNFeGtwNlA0aURs
bGh2N3MiCisgICAgInZac3Nwdm9iUkphM08xems4NjNMSFhhMjRKQ255dXppbXFleloyT2xoN2w0
b2xIb1lENlVGQzlqZmQ0S2NIUmciCisgICAgIjFjNHN5cXQvbjhBSy8xczFlQmZTOWR6YjVDZmp0
OU10S1lzbHh2THpxMVd3T0lOd3o4cklZdVJpMFBjTG05aHMiCisgICAgImwrVTB1L3pCMzdlTWd2
Nitpd0RYazFmU2pidVlzRS9iRVRXWWtuS0dORkZMNUpTaUtWN1dDcG1nTlRUcnJFNEsiCisgICAg
IlM4RTZoUjl1UE9BYW93N3ZQQ0N0NHhMWC80OGwyRUk2WmVxNnFPcHExbEoycWN5OHI0dHl1UWdO
UkxRTWtaZzEiCisgICAgIkF4UWw2dm5ROEN1NGl1K05JaGVmMHk5Wjdxa2ZOdlplQ2o1R2xGQjlj
MllqVjhZMm1kV2ZKQjRxV0szWi8rTUoiCisgICAgIlFPVENLUno3L0x4TE5CVWVwUmpKQW9JQkFR
RDNac1Y1dFdVOVpTS2NWSjlEQzdUWmswUCtsaGNpc1pyMG5MMHQiCisgICAgIlBRdVFPK3BIdlBJ
MU1xUm5Oc2tISmh5UG5xVkNpK2RwODl0Sy9JdDU5MFVMbDhvczZVQzFGaHl0QlBvVDFZUGQiCisg
ICAgIldHV2VwMnBPYzdiVnBpNGlwMzF5K0ltZmdlWnlKdE1BVGRtZTNrQlBBT2U1TkdFOUdpZy9s
NW5xTHliMDJzZDEiCisgICAgIlFXN08wR2RxTHgzRHBMdzRTTGxoTWY2YUUwdUdSUzhzZkIwODVl
NERHbjU0TzJ3RVZ1U1pxWmw1Tk5FZjM1UnoiCisgICAgIlhnaW0zaCtSV0YxWkZTUXpqQi9zbU4w
WmgrdjNJejd2RUoxaDB5d1Y2bytHenZIa1A5SEU2Z0xJaHR5VjhPRXciCisgICAgInZseVlrMUdh
N3BVVkdSaDhvOE9NZTZSUjlEUWk3SnFDNGVJN0dja21CemFxekpjREFvSUJBUURtZGU2QVRldzMi
CisgICAgIkg5YlFLNnhuYk1JbmN6L0NPcElJU2RsY0ZiMjNBSEdFYjRiNFZoSkZCTnd4ck5MNnRI
S1NGTGVZWkZMaFRkaHgiCisgICAgIlBmWHlVTEhOZjVvemRFa2wwV3JsZXJvRGRvZ2JDeVdnNXVK
cDkvUTY4c2J3YkdyOENBbE83WkhZVHJqdVFmMUsiCisgICAgIkFTOXBDbTc3S1AzazJkM1VsRytw
ZWxEalhMb0J6aVhxME5qeEpwTXo0NXZySXg4clNXekZOak1HalhUM2ZYYVMiCisgICAgIjk2Mmsv
MEFYZWk1L2JmdWhCeGxtN1BuaTBiUUpJV0ZrZWFVdUdsck9hSERSeFVpWDFyOUlaUzl3djVsazFQ
dGciCisgICAgImlkcGJjV3l3MThjRkdUdmpkS2hSYlpIOEVzYm16bU5Oc0NHZGdDTXFGa0tZc1cx
NlFLb0NqL05Bb3ZJM24wcW4iCisgICAgIjZWb1JhMHNHbVRHTkFvSUJBQ2wvbXFaRXNCdXhTREh5
MjlnU01aN0JYZ2xwUWE0M0htZmpsclBzNW5DbUxERW0iCisgICAgIlYzWm03VDdHNk1lRE5BMC9M
amRRWWx2YVpMRmFWVWI3SENES3NFWUNSakZaNlN0NGh6NG1kWHorWStWTjdiNEYiCisgICAgIkdP
a1RlKytpS3AvTFlzSlh0c0QxRkRXYjJXSVZvN0hjMUFHejhJK2dRSm9TSXVZdVRKbUx6U00wKzVK
RFVPVjEiCisgICAgInk4ZFNiYVAvUnVFdjBxWWprR3FRVms1ZTcwU1V5T3pLVitaeENUaGRIdkZM
aW92VE9UVGdldlV6RTc1eHlkZkciCisgICAgImU3b0NtdFR1cnpndmwvNjlWdTVZZ2lqMW40Q1dQ
SEhjcTRDUVcvRE9aN0JoRkdCd2hyVzc5dm9ISkY4UGJ3UE8iCisgICAgIiswRFR1ZERHWTNuQUQ1
c1RuRjh6VXVPYllpaEp0ZnpqL3Q1OWZPTUNnZ0VCQUlZdXVCVUFTYjYyelE0YnY1L2ciCisgICAg
IlZSTS9LU3BmaTlORG5FamZaN3g3aDV6Q2l1Vmd4L1pqcEFsUVJPOHZ6VjE4cm9FT09LdHg5Y25K
ZDhBRWQrSGMiCisgICAgIm45M0JvUzFoeDBtaHNWaCsxVFJad3lqeUJYWUpwcXdEMnd6MU16MVhP
SVE2RXFiTS95UEtURDJnZndnN3lPNTMiCisgICAgInFZeHJ4WnNXYWdWVmNHOVErQVJCRVJhdFR3
THBvTitmY0pMeHVoNHIvQ2EvTGVwc3htT3JLelRhL01HSzFMaFciCisgICAgInJXZ0lrMi9vZ0VQ
TFNwdGoyZDFQRURPK0dBekZ6NFZLamhXMU5sVWg5ZkdpNklKUExITG5CdzNvZGJpMFM4S1QiCisg
ICAgImdBOVo1K0xCYzVjbG90QVA1cnRRQThXaC9aQ0VvUFRLVFRBMmJqVzJITWF0SmNiR21SMEZw
Q1FyM0FNMFkxU08iCisgICAgIk1ha0NnZ0VBTHJ1NlFaNllVd0pKRzQ1SDFlcS9yUGREWTh0cXFq
SlZWaUtvQlZ2ektqL1hmSlpZRVZRaUl3NXAiCisgICAgInVvR2hEb3lGdUZVZUloL2QxSmMySXJ1
eTJXam9Pa2lRWXRJdWdESEh4UnJrTGRRY2pQaGxDVENFL21teVNKdCsiCisgICAgImJrVWJpSEli
UThkSjV5ajhTS3IwYkh6cUV0T3k5L0plUmprWUdIQzZiVldwcTVGQTJNQmhmNGROako0VURsblQi
CisgICAgInZ1ZVBjVGpyN25uZlkxc3p0dmZWbDlEOGRtZ1QrVEJuT09WNnlXajFnbTViUzFEeFFT
TGdObXRLeEo4dEFoMnUiCisgICAgImRFT2J2Y3BTaFAyMkl0T1ZqU2FtcFJ1QXVSRzI2WmVtRWJH
Q0kzSjZNcXgzeTZtKzZId3VsdHNndGR6RGdyRmUiCisgICAgInFKZlU4YmJkYnUycGk0N1k0RmRK
SzBITGZmbDVSdz09Iik7CisKKyAgICBhdXRvIGRlY29kZWRQcml2YXRlS2V5ID0gYmFzZTY0RGVj
b2RlKHBlbUVuY29kZWRQcml2YXRlS2V5KTsKKyAgICByZXR1cm4gV1RGTW92ZSgqZGVjb2RlZFBy
aXZhdGVLZXkpOworfQorICAgIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>
<flag name="review"
          id="465965"
          type_id="1"
          status="+"
          setter="cdumez"
    />
    <flag name="commit-queue"
          id="465981"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>