ports/150493: Update for: security/openssh-portable port from 5.2p1 to 5.6p1
Oleg Gawriloff
barzog at telecom.by
Wed Mar 9 17:00:40 UTC 2011
The following reply was made to PR ports/150493; it has been noted by GNATS.
From: Oleg Gawriloff <barzog at telecom.by>
To: bug-followup at FreeBSD.org, magik at roorback.net
Cc:
Subject: Re: ports/150493: Update for: security/openssh-portable port from
5.2p1 to 5.6p1
Date: Wed, 09 Mar 2011 18:37:54 +0200
This is a multi-part message in MIME format.
--------------090100050300010803050402
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Is there any news?
Because sftp is also broken in 5.2pl1.
[gawriloff at martin /usr/ports]$ sftp gawriloff at falcon-cl4
Connecting to falcon-cl4...
Password:
sftp> ls -l
Bus error: 10
5.3pl1 is working perfectly. Patch attached.
--
Signed, Oleg Gawriloff.
--------------090100050300010803050402
Content-Type: text/plain;
name="openssh-5.3pl1.diff"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="openssh-5.3pl1.diff"
ZGlmZiAtTnJ1IC9ob21lL2dhd3JpbG9mZi9scGsvb3BlbnNzaC1wb3J0YWJsZS9NYWtlZmls
ZSAvaG9tZS9nYXdyaWxvZmYvb3BlbnNzaC1wb3J0YWJsZS9NYWtlZmlsZQ0KLS0tIC9ob21l
L2dhd3JpbG9mZi9scGsvb3BlbnNzaC1wb3J0YWJsZS9NYWtlZmlsZQkyMDEwLTExLTIyIDAx
OjQ4OjQ5LjAwMDAwMDAwMCArMDIwMA0KKysrIC9ob21lL2dhd3JpbG9mZi9vcGVuc3NoLXBv
cnRhYmxlL01ha2VmaWxlCTIwMTAtMTItMjEgMTE6MzA6MzYuMDAwMDAwMDAwICswMjAwDQpA
QCAtNiw3ICs2LDcgQEANCiAjDQogDQogUE9SVE5BTUU9CW9wZW5zc2gNCi1ESVNUVkVSU0lP
Tj0JNS4ycDENCitESVNUVkVSU0lPTj0JNS4zcDENCiBQT1JUUkVWSVNJT049CTMNCiBQT1JU
RVBPQ0g9CTENCiBDQVRFR09SSUVTPQlzZWN1cml0eSBpcHY2DQpAQCAtMTYxLDcgKzE2MSw3
IEBADQogDQogIyBTZWUgaHR0cDovL2Rldi5pbnZlcnNlcGF0aC5jb20vdHJhYy9vcGVuc3No
LWxwaw0KIC5pZiBkZWZpbmVkKFdJVEhfTFBLKQ0KLUVYVFJBX1BBVENIRVMrPQkJJHtGSUxF
U0RJUn0vY29udHJpYi1vcGVuc3NoLWxway01LjFwMS0wLjMuMTAucGF0Y2gNCitFWFRSQV9Q
QVRDSEVTKz0JCSR7RklMRVNESVJ9L2NvbnRyaWItb3BlbnNzaC1scGstNS4zcDEtMC4zLjEw
LnBhdGNoDQogVVNFX09QRU5MREFQPQkJeWVzDQogQ1BQRkxBR1MrPQkJIi1JJHtMT0NBTEJB
U0V9L2luY2x1ZGUgLURXSVRIX0xEQVBfUFVCS0VZIg0KIENPTkZJR1VSRV9BUkdTKz0JLS13
aXRoLWxpYnM9Jy1sbGRhcCcgLS13aXRoLWxkZmxhZ3M9Jy1MJHtMT0NBTEJBU0V9L2xpYicg
XA0KQEAgLTE3NCwxMiArMTc0LDYgQEANCiBFWFRSQV9QQVRDSEVTKz0JCSR7RklMRVNESVJ9
L2xwaytocG4tc2VydmNvbmYuYy5wYXRjaA0KIC5lbGlmIGRlZmluZWQoV0lUSF9IUE4pICYm
ICFkZWZpbmVkKFdJVEhfTFBLKQ0KIEVYVFJBX1BBVENIRVMrPQkJJHtGSUxFU0RJUn0vb3Bl
bnNzaC01LjJwMS1ocG4xM3Y2LXNlcnZjb25mLmMuZGlmZg0KLS5lbGlmIGRlZmluZWQoV0lU
SF9MUEspICYmICFkZWZpbmVkKFdJVEhfSFBOKQ0KLUVYVFJBX1BBVENIRVMrPQkJJHtGSUxF
U0RJUn0vY29udHJpYi1vcGVuc3NoLWxway01LjFwMS0wLjMuMTAtc2VydmNvbmYuYy5wYXRj
aA0KLS5lbmRpZg0KLQ0KLS5pZiBkZWZpbmVkKFdJVEhfTFBLKSAmJiAke0FSQ0h9ID09ICJh
bWQ2NCINCi1FWFRSQV9QQVRDSEVTKz0JCSR7RklMRVNESVJ9L2NvbnRyaWItb3BlbnNzaC01
LjFfcDEtbHBrLTY0Yml0LnBhdGNoDQogLmVuZGlmDQogDQogIyBTZWUgaHR0cDovL3d3dy5y
b3VtZW5wZXRyb3YuaW5mby9vcGVuc3NoLw0KZGlmZiAtTnJ1IC9ob21lL2dhd3JpbG9mZi9s
cGsvb3BlbnNzaC1wb3J0YWJsZS9kaXN0aW5mbyAvaG9tZS9nYXdyaWxvZmYvb3BlbnNzaC1w
b3J0YWJsZS9kaXN0aW5mbw0KLS0tIC9ob21lL2dhd3JpbG9mZi9scGsvb3BlbnNzaC1wb3J0
YWJsZS9kaXN0aW5mbwkyMDA5LTA5LTE4IDE3OjA1OjUyLjAwMDAwMDAwMCArMDMwMA0KKysr
IC9ob21lL2dhd3JpbG9mZi9vcGVuc3NoLXBvcnRhYmxlL2Rpc3RpbmZvCTIwMTAtMTItMjEg
MTE6MTY6MTcuMDAwMDAwMDAwICswMjAwDQpAQCAtMSw2ICsxLDYgQEANCi1NRDUgKG9wZW5z
c2gtNS4ycDEudGFyLmd6KSA9IGFkYTc5YzczMjhhODU1MWJkZjU1Yzk1ZTYzMWU3ZGFkDQot
U0hBMjU2IChvcGVuc3NoLTUuMnAxLnRhci5neikgPSA0MDIzNzEwYzM3ZDBiM2Q3OWU2Mjk5
Y2I3OWI2ZGUyYTMxZGI3ZDU4MWZlNTllNzc1YTUzNTE3ODQwMzRlY2FlDQotU0laRSAob3Bl
bnNzaC01LjJwMS50YXIuZ3opID0gMTAxNjYxMg0KK01ENSAob3BlbnNzaC01LjNwMS50YXIu
Z3opID0gMTM1NjNkYmY2MWYzNmNhOWExZTQyNTQyNjAxMzEwNDENCitTSEEyNTYgKG9wZW5z
c2gtNS4zcDEudGFyLmd6KSA9IGQwYzkxNzQ2Mjg5Njk3NDQ4MGIxNDQ1NGE4ZTFjYjhiODA5
MjkxZjY3ZTViOTc3OWM5YjRkYzQxNTZjNWVmMTINCitTSVpFIChvcGVuc3NoLTUuM3AxLnRh
ci5neikgPSAxMDI3MTMwDQogTUQ1IChvcGVuc3NoLTUuMnAxK3g1MDktNi4yLmRpZmYuZ3op
ID0gOGRiYmZiNzQzMjI2ODY0ZjZiYjQ5YjU2ZTc3Nzc2ZDkNCiBTSEEyNTYgKG9wZW5zc2gt
NS4ycDEreDUwOS02LjIuZGlmZi5neikgPSA3MmNmYjFlMjMyYjZhZTBhOWRmNmU4NTM5YTlm
NmI1M2RiN2MwYTIxNDFjZjJlNGRkNjViNDA3NzQ4ZmE5ZjM0DQogU0laRSAob3BlbnNzaC01
LjJwMSt4NTA5LTYuMi5kaWZmLmd6KSA9IDE1MzAxMA0KZGlmZiAtTnJ1IC9ob21lL2dhd3Jp
bG9mZi9scGsvb3BlbnNzaC1wb3J0YWJsZS9maWxlcy9jb250cmliLW9wZW5zc2gtNS4xX3Ax
LWxway02NGJpdC5wYXRjaCAvaG9tZS9nYXdyaWxvZmYvb3BlbnNzaC1wb3J0YWJsZS9maWxl
cy9jb250cmliLW9wZW5zc2gtNS4xX3AxLWxway02NGJpdC5wYXRjaA0KLS0tIC9ob21lL2dh
d3JpbG9mZi9scGsvb3BlbnNzaC1wb3J0YWJsZS9maWxlcy9jb250cmliLW9wZW5zc2gtNS4x
X3AxLWxway02NGJpdC5wYXRjaAkyMDA5LTA2LTIxIDIzOjM2OjE1LjAwMDAwMDAwMCArMDMw
MA0KKysrIC9ob21lL2dhd3JpbG9mZi9vcGVuc3NoLXBvcnRhYmxlL2ZpbGVzL2NvbnRyaWIt
b3BlbnNzaC01LjFfcDEtbHBrLTY0Yml0LnBhdGNoCTE5NzAtMDEtMDEgMDM6MDA6MDAuMDAw
MDAwMDAwICswMzAwDQpAQCAtMSw0NCArMCwwIEBADQotZGlmZiAtTnVhciAtLWV4Y2x1ZGUg
JyoucmVqJyBzZXJ2Y29uZi5jLm9yaWcgc2VydmNvbmYuYw0KLS0tLSBzZXJ2Y29uZi5jLm9y
aWcJMjAwOC0wOC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDANCi0rKysgc2VydmNvbmYu
YwkyMDA4LTA4LTIzIDE1OjA0OjIxLjAwMDAwMDAwMCAtMDcwMA0KLUBAIC03MDEsNiArNzAx
LDcgQEANCi0gCWludCBjbWRsaW5lID0gMCwgKmludHB0ciwgdmFsdWUsIG47DQotIAlTeXNs
b2dGYWNpbGl0eSAqbG9nX2ZhY2lsaXR5X3B0cjsNCi0gCUxvZ0xldmVsICpsb2dfbGV2ZWxf
cHRyOw0KLSsgCXVuc2lnbmVkIGxvbmcgbHZhbHVlLCAqbG9uZ3B0cjsNCi0gCVNlcnZlck9w
Q29kZXMgb3Bjb2RlOw0KLSAJdV9zaG9ydCBwb3J0Ow0KLSAJdV9pbnQgaSwgZmxhZ3MgPSAw
Ow0KLUBAIC03MTUsNiArNzE2LDcgQEANCi0gCWlmICghYXJnIHx8ICEqYXJnIHx8ICphcmcg
PT0gJyMnKQ0KLSAJCXJldHVybiAwOw0KLSAJaW50cHRyID0gTlVMTDsNCi0rCWxvbmdwdHIg
PSBOVUxMOw0KLSAJY2hhcnB0ciA9IE5VTEw7DQotIAlvcGNvZGUgPSBwYXJzZV90b2tlbihh
cmcsIGZpbGVuYW1lLCBsaW5lbnVtLCAmZmxhZ3MpOw0KLSANCi1AQCAtMTQ0OSwxMSArMTQ1
MSwyMCBAQA0KLSAJCQkqaW50cHRyID0gdmFsdWU7DQotIAkJYnJlYWs7DQotIAljYXNlIHNC
aW5kVGltZW91dDoNCi0tCQlpbnRwdHIgPSAoaW50ICopICZvcHRpb25zLT5scGsuYl90aW1l
b3V0LnR2X3NlYzsNCi0tCQlnb3RvIHBhcnNlX2ludDsNCi0rCQlsb25ncHRyID0gKHVuc2ln
bmVkIGxvbmcgKikgJm9wdGlvbnMtPmxway5iX3RpbWVvdXQudHZfc2VjOw0KLStwYXJzZV91
bG9uZzoNCi0rCQlhcmcgPSBzdHJkZWxpbSgmY3ApOw0KLSsJCWlmICghYXJnIHx8ICphcmcg
PT0gJ1wwJykNCi0rCQkJZmF0YWwoIiVzIGxpbmUgJWQ6IG1pc3NpbmcgaW50ZWdlciB2YWx1
ZS4iLA0KLSsJCQkgICAgZmlsZW5hbWUsIGxpbmVudW0pOw0KLSsJCWx2YWx1ZSA9IGF0b2wo
YXJnKTsNCi0rCQlpZiAoKmFjdGl2ZXAgJiYgKmxvbmdwdHIgPT0gLTEpDQotKwkJCSpsb25n
cHRyID0gbHZhbHVlOw0KLSsJCWJyZWFrOw0KLSsNCi0gCWNhc2Ugc1NlYXJjaFRpbWVvdXQ6
DQotLQkJaW50cHRyID0gKGludCAqKSAmb3B0aW9ucy0+bHBrLnNfdGltZW91dC50dl9zZWM7
DQotLQkJZ290byBwYXJzZV9pbnQ7DQotKwkJbG9uZ3B0ciA9ICh1bnNpZ25lZCBsb25nICop
ICZvcHRpb25zLT5scGsuc190aW1lb3V0LnR2X3NlYzsNCi0rCQlnb3RvIHBhcnNlX3Vsb25n
Ow0KLSAJCWJyZWFrOw0KLSAJY2FzZSBzTGRhcENvbmY6DQotIAkJYXJnID0gY3A7DQpkaWZm
IC1OcnUgL2hvbWUvZ2F3cmlsb2ZmL2xway9vcGVuc3NoLXBvcnRhYmxlL2ZpbGVzL2NvbnRy
aWItb3BlbnNzaC1scGstNS4xcDEtMC4zLjEwLXNlcnZjb25mLmMucGF0Y2ggL2hvbWUvZ2F3
cmlsb2ZmL29wZW5zc2gtcG9ydGFibGUvZmlsZXMvY29udHJpYi1vcGVuc3NoLWxway01LjFw
MS0wLjMuMTAtc2VydmNvbmYuYy5wYXRjaA0KLS0tIC9ob21lL2dhd3JpbG9mZi9scGsvb3Bl
bnNzaC1wb3J0YWJsZS9maWxlcy9jb250cmliLW9wZW5zc2gtbHBrLTUuMXAxLTAuMy4xMC1z
ZXJ2Y29uZi5jLnBhdGNoCTIwMDktMDYtMjEgMjM6MzY6MTUuMDAwMDAwMDAwICswMzAwDQor
KysgL2hvbWUvZ2F3cmlsb2ZmL29wZW5zc2gtcG9ydGFibGUvZmlsZXMvY29udHJpYi1vcGVu
c3NoLWxway01LjFwMS0wLjMuMTAtc2VydmNvbmYuYy5wYXRjaAkxOTcwLTAxLTAxIDAzOjAw
OjAwLjAwMDAwMDAwMCArMDMwMA0KQEAgLTEsMjEzICswLDAgQEANCi0tLS0gc2VydmNvbmYu
Yy5vcmlnCTIwMDktMDUtMjYgMTU6MTM6MzIuMDAwMDAwMDAwICswNDAwDQotKysrIHNlcnZj
b25mLmMJMjAwOS0wNS0yNiAxNToyNDozOS4wMDAwMDAwMDAgKzA0MDANCi1AQCAtNDIsNiAr
NDIsMTAgQEANCi0gI2luY2x1ZGUgImNoYW5uZWxzLmgiDQotICNpbmNsdWRlICJncm91cGFj
Y2Vzcy5oIg0KLSANCi0rI2lmZGVmIFdJVEhfTERBUF9QVUJLRVkNCi0rI2luY2x1ZGUgImxk
YXBhdXRoLmgiDQotKyNlbmRpZg0KLSsNCi0gc3RhdGljIHZvaWQgYWRkX2xpc3Rlbl9hZGRy
KFNlcnZlck9wdGlvbnMgKiwgY2hhciAqLCBpbnQpOw0KLSBzdGF0aWMgdm9pZCBhZGRfb25l
X2xpc3Rlbl9hZGRyKFNlcnZlck9wdGlvbnMgKiwgY2hhciAqLCBpbnQpOw0KLSANCi1AQCAt
MTI4LDYgKzEzMiwyNCBAQA0KLSAJb3B0aW9ucy0+YWRtX2ZvcmNlZF9jb21tYW5kID0gTlVM
TDsNCi0gCW9wdGlvbnMtPmNocm9vdF9kaXJlY3RvcnkgPSBOVUxMOw0KLSAJb3B0aW9ucy0+
emVyb19rbm93bGVkZ2VfcGFzc3dvcmRfYXV0aGVudGljYXRpb24gPSAtMTsNCi0rI2lmZGVm
IFdJVEhfTERBUF9QVUJLRVkNCi0rIAkvKiBYWFggZGlydHkgKi8NCi0rIAlvcHRpb25zLT5s
cGsubGQgPSBOVUxMOw0KLSsgCW9wdGlvbnMtPmxway5vbiA9IC0xOw0KLSsgCW9wdGlvbnMt
Pmxway5zZXJ2ZXJzID0gTlVMTDsNCi0rIAlvcHRpb25zLT5scGsudV9iYXNlZG4gPSBOVUxM
Ow0KLSsgCW9wdGlvbnMtPmxway5nX2Jhc2VkbiA9IE5VTEw7DQotKyAJb3B0aW9ucy0+bHBr
LmJpbmRkbiA9IE5VTEw7DQotKyAJb3B0aW9ucy0+bHBrLmJpbmRwdyA9IE5VTEw7DQotKyAJ
b3B0aW9ucy0+bHBrLnNncm91cCA9IE5VTEw7DQotKyAJb3B0aW9ucy0+bHBrLmZpbHRlciA9
IE5VTEw7DQotKyAJb3B0aW9ucy0+bHBrLmZncm91cCA9IE5VTEw7DQotKyAJb3B0aW9ucy0+
bHBrLmxfY29uZiA9IE5VTEw7DQotKyAJb3B0aW9ucy0+bHBrLnRscyA9IC0xOw0KLSsgCW9w
dGlvbnMtPmxway5iX3RpbWVvdXQudHZfc2VjID0gLTE7DQotKyAJb3B0aW9ucy0+bHBrLnNf
dGltZW91dC50dl9zZWMgPSAtMTsNCi0rIAlvcHRpb25zLT5scGsuZmxhZ3MgPSBGTEFHX0VN
UFRZOw0KLSsjZW5kaWYNCi0gfQ0KLSANCi0gdm9pZA0KLUBAIC0yNjUsNiArMjg3LDMyIEBA
DQotIAkJb3B0aW9ucy0+cGVybWl0X3R1biA9IFNTSF9UVU5NT0RFX05POw0KLSAJaWYgKG9w
dGlvbnMtPnplcm9fa25vd2xlZGdlX3Bhc3N3b3JkX2F1dGhlbnRpY2F0aW9uID09IC0xKQ0K
LSAJCW9wdGlvbnMtPnplcm9fa25vd2xlZGdlX3Bhc3N3b3JkX2F1dGhlbnRpY2F0aW9uID0g
MDsNCi0rI2lmZGVmIFdJVEhfTERBUF9QVUJLRVkNCi0rCWlmIChvcHRpb25zLT5scGsub24g
PT0gLTEpDQotKwkgICAgb3B0aW9ucy0+bHBrLm9uID0gX0RFRkFVTFRfTFBLX09OOw0KLSsJ
aWYgKG9wdGlvbnMtPmxway5zZXJ2ZXJzID09IE5VTEwpDQotKwkgICAgb3B0aW9ucy0+bHBr
LnNlcnZlcnMgPSBfREVGQVVMVF9MUEtfU0VSVkVSUzsNCi0rCWlmIChvcHRpb25zLT5scGsu
dV9iYXNlZG4gPT0gTlVMTCkNCi0rCSAgICBvcHRpb25zLT5scGsudV9iYXNlZG4gPSBfREVG
QVVMVF9MUEtfVUROOw0KLSsJaWYgKG9wdGlvbnMtPmxway5nX2Jhc2VkbiA9PSBOVUxMKQ0K
LSsJICAgIG9wdGlvbnMtPmxway5nX2Jhc2VkbiA9IF9ERUZBVUxUX0xQS19HRE47DQotKwlp
ZiAob3B0aW9ucy0+bHBrLmJpbmRkbiA9PSBOVUxMKQ0KLSsJICAgIG9wdGlvbnMtPmxway5i
aW5kZG4gPSBfREVGQVVMVF9MUEtfQklOREROOw0KLSsJaWYgKG9wdGlvbnMtPmxway5iaW5k
cHcgPT0gTlVMTCkNCi0rCSAgICBvcHRpb25zLT5scGsuYmluZHB3ID0gX0RFRkFVTFRfTFBL
X0JJTkRQVzsNCi0rCWlmIChvcHRpb25zLT5scGsuc2dyb3VwID09IE5VTEwpDQotKwkgICAg
b3B0aW9ucy0+bHBrLnNncm91cCA9IF9ERUZBVUxUX0xQS19TR1JPVVA7DQotKwlpZiAob3B0
aW9ucy0+bHBrLmZpbHRlciA9PSBOVUxMKQ0KLSsJICAgIG9wdGlvbnMtPmxway5maWx0ZXIg
PSBfREVGQVVMVF9MUEtfRklMVEVSOw0KLSsJaWYgKG9wdGlvbnMtPmxway50bHMgPT0gLTEp
DQotKwkgICAgb3B0aW9ucy0+bHBrLnRscyA9IF9ERUZBVUxUX0xQS19UTFM7DQotKwlpZiAo
b3B0aW9ucy0+bHBrLmJfdGltZW91dC50dl9zZWMgPT0gLTEpDQotKwkgICAgb3B0aW9ucy0+
bHBrLmJfdGltZW91dC50dl9zZWMgPSBfREVGQVVMVF9MUEtfQlRJTUVPVVQ7DQotKwlpZiAo
b3B0aW9ucy0+bHBrLnNfdGltZW91dC50dl9zZWMgPT0gLTEpDQotKwkgICAgb3B0aW9ucy0+
bHBrLnNfdGltZW91dC50dl9zZWMgPSBfREVGQVVMVF9MUEtfU1RJTUVPVVQ7DQotKwlpZiAo
b3B0aW9ucy0+bHBrLmxfY29uZiA9PSBOVUxMKQ0KLSsJICAgIG9wdGlvbnMtPmxway5sX2Nv
bmYgPSBfREVGQVVMVF9MUEtfTERQOw0KLSsjZW5kaWYNCi0gDQotIAkvKiBUdXJuIHByaXZp
bGVnZSBzZXBhcmF0aW9uIG9uIGJ5IGRlZmF1bHQgKi8NCi0gCWlmICh1c2VfcHJpdnNlcCA9
PSAtMSkNCi1AQCAtMzExLDYgKzM1OSwxMiBAQA0KLSAJc1VzZVByaXZpbGVnZVNlcGFyYXRp
b24sIHNBbGxvd0FnZW50Rm9yd2FyZGluZywNCi0gCXNaZXJvS25vd2xlZGdlUGFzc3dvcmRB
dXRoZW50aWNhdGlvbiwNCi0gCXNEZXByZWNhdGVkLCBzVW5zdXBwb3J0ZWQNCi0rI2lmZGVm
IFdJVEhfTERBUF9QVUJLRVkNCi0rCSxzTGRhcFB1YmxpY2tleSwgc0xkYXBTZXJ2ZXJzLCBz
TGRhcFVzZXJETg0KLSsJLHNMZGFwR3JvdXBETiwgc0JpbmRETiwgc0JpbmRQdywgc015R3Jv
dXANCi0rCSxzTGRhcEZpbHRlciwgc0ZvcmNlVExTLCBzQmluZFRpbWVvdXQNCi0rCSxzU2Vh
cmNoVGltZW91dCwgc0xkYXBDb25mDQotKyNlbmRpZg0KLSB9IFNlcnZlck9wQ29kZXM7DQot
IA0KLSAjZGVmaW5lIFNTSENGR19HTE9CQUwJMHgwMQkvKiBhbGxvd2VkIGluIG1haW4gc2Vj
dGlvbiBvZiBzc2hkX2NvbmZpZyAqLw0KLUBAIC00MjEsNiArNDc1LDIwIEBADQotIAl7ICJj
bGllbnRhbGl2ZWNvdW50bWF4Iiwgc0NsaWVudEFsaXZlQ291bnRNYXgsIFNTSENGR19HTE9C
QUwgfSwNCi0gCXsgImF1dGhvcml6ZWRrZXlzZmlsZSIsIHNBdXRob3JpemVkS2V5c0ZpbGUs
IFNTSENGR19HTE9CQUwgfSwNCi0gCXsgImF1dGhvcml6ZWRrZXlzZmlsZTIiLCBzQXV0aG9y
aXplZEtleXNGaWxlMiwgU1NIQ0ZHX0dMT0JBTCB9LA0KLSsjaWZkZWYgV0lUSF9MREFQX1BV
QktFWQ0KLSsJeyBfREVGQVVMVF9MUEtfVE9LRU4sIHNMZGFwUHVibGlja2V5LCBTU0hDRkdf
R0xPQkFMIH0sDQotKwl7IF9ERUZBVUxUX1NSVl9UT0tFTiwgc0xkYXBTZXJ2ZXJzLCBTU0hD
RkdfR0xPQkFMIH0sDQotKwl7IF9ERUZBVUxUX1VTUl9UT0tFTiwgc0xkYXBVc2VyRE4sIFNT
SENGR19HTE9CQUwgfSwNCi0rCXsgX0RFRkFVTFRfR1JQX1RPS0VOLCBzTGRhcEdyb3VwRE4s
IFNTSENGR19HTE9CQUwgfSwNCi0rCXsgX0RFRkFVTFRfQkROX1RPS0VOLCBzQmluZEROLCBT
U0hDRkdfR0xPQkFMIH0sDQotKwl7IF9ERUZBVUxUX0JQV19UT0tFTiwgc0JpbmRQdywgU1NI
Q0ZHX0dMT0JBTCB9LA0KLSsJeyBfREVGQVVMVF9NWUdfVE9LRU4sIHNNeUdyb3VwLCBTU0hD
RkdfR0xPQkFMIH0sDQotKwl7IF9ERUZBVUxUX0ZJTF9UT0tFTiwgc0xkYXBGaWx0ZXIsIFNT
SENGR19HTE9CQUwgfSwNCi0rCXsgX0RFRkFVTFRfVExTX1RPS0VOLCBzRm9yY2VUTFMsIFNT
SENGR19HTE9CQUwgfSwNCi0rCXsgX0RFRkFVTFRfQlRJX1RPS0VOLCBzQmluZFRpbWVvdXQs
IFNTSENGR19HTE9CQUwgfSwNCi0rCXsgX0RFRkFVTFRfU1RJX1RPS0VOLCBzU2VhcmNoVGlt
ZW91dCwgU1NIQ0ZHX0dMT0JBTCB9LA0KLSsJeyBfREVGQVVMVF9MRFBfVE9LRU4sIHNMZGFw
Q29uZiwgU1NIQ0ZHX0dMT0JBTCB9LA0KLSsjZW5kaWYNCi0gCXsgInVzZXByaXZpbGVnZXNl
cGFyYXRpb24iLCBzVXNlUHJpdmlsZWdlU2VwYXJhdGlvbiwgU1NIQ0ZHX0dMT0JBTCB9LA0K
LSAJeyAiYWNjZXB0ZW52Iiwgc0FjY2VwdEVudiwgU1NIQ0ZHX0dMT0JBTCB9LA0KLSAJeyAi
cGVybWl0dHVubmVsIiwgc1Blcm1pdFR1bm5lbCwgU1NIQ0ZHX0dMT0JBTCB9LA0KLUBAIC0x
MzExLDYgKzEzNzksMTA3IEBADQotIAkJd2hpbGUgKGFyZykNCi0gCQkgICAgYXJnID0gc3Ry
ZGVsaW0oJmNwKTsNCi0gCQlicmVhazsNCi0rI2lmZGVmIFdJVEhfTERBUF9QVUJLRVkNCi0r
CWNhc2Ugc0xkYXBQdWJsaWNrZXk6DQotKwkJaW50cHRyID0gJm9wdGlvbnMtPmxway5vbjsN
Ci0rCQlnb3RvIHBhcnNlX2ZsYWc7DQotKwljYXNlIHNMZGFwU2VydmVyczoNCi0rCQkvKiBh
cmcgPSBzdHJkZWxpbSgmY3ApOyAqLw0KLSsJCXAgPSBsaW5lOw0KLSsJCXdoaWxlKCpwKysp
Ow0KLSsJCWFyZyA9IHA7DQotKwkJaWYgKCFhcmcgfHwgKmFyZyA9PSAnXDAnKQ0KLSsJCSAg
ICBmYXRhbCgiJXMgbGluZSAlZDogbWlzc2luZyBsZGFwIHNlcnZlciIsZmlsZW5hbWUsbGlu
ZW51bSk7DQotKwkJYXJnW3N0cmxlbihhcmcpXSA9ICdcMCc7DQotKwkJaWYgKChvcHRpb25z
LT5scGsuc2VydmVycyA9IGxkYXBfcGFyc2Vfc2VydmVycyhhcmcpKSA9PSBOVUxMKQ0KLSsJ
CSAgICBmYXRhbCgiJXMgbGluZSAlZDogZXJyb3IgaW4gbGRhcCBzZXJ2ZXJzIiwgZmlsZW5h
bWUsIGxpbmVudW0pOw0KLSsJCW1lbXNldChhcmcsMCxzdHJsZW4oYXJnKSk7DQotKwkJYnJl
YWs7DQotKwljYXNlIHNMZGFwVXNlckROOg0KLSsJCWFyZyA9IGNwOw0KLSsJCWlmICghYXJn
IHx8ICphcmcgPT0gJ1wwJykNCi0rCQkgICAgZmF0YWwoIiVzIGxpbmUgJWQ6IG1pc3Npbmcg
bGRhcCBzZXJ2ZXIiLGZpbGVuYW1lLGxpbmVudW0pOw0KLSsJCWFyZ1tzdHJsZW4oYXJnKV0g
PSAnXDAnOw0KLSsJCW9wdGlvbnMtPmxway51X2Jhc2VkbiA9IHhzdHJkdXAoYXJnKTsNCi0r
CQltZW1zZXQoYXJnLDAsc3RybGVuKGFyZykpOw0KLSsJCWJyZWFrOw0KLSsJY2FzZSBzTGRh
cEdyb3VwRE46DQotKwkJYXJnID0gY3A7DQotKwkJaWYgKCFhcmcgfHwgKmFyZyA9PSAnXDAn
KQ0KLSsJCSAgICBmYXRhbCgiJXMgbGluZSAlZDogbWlzc2luZyBsZGFwIHNlcnZlciIsZmls
ZW5hbWUsbGluZW51bSk7DQotKwkJYXJnW3N0cmxlbihhcmcpXSA9ICdcMCc7DQotKwkJb3B0
aW9ucy0+bHBrLmdfYmFzZWRuID0geHN0cmR1cChhcmcpOw0KLSsJCW1lbXNldChhcmcsMCxz
dHJsZW4oYXJnKSk7DQotKwkJYnJlYWs7DQotKwljYXNlIHNCaW5kRE46DQotKwkJYXJnID0g
Y3A7DQotKwkJaWYgKCFhcmcgfHwgKmFyZyA9PSAnXDAnKQ0KLSsJCSAgICBmYXRhbCgiJXMg
bGluZSAlZDogbWlzc2luZyBiaW5kZG4iLGZpbGVuYW1lLGxpbmVudW0pOw0KLSsJCWFyZ1tz
dHJsZW4oYXJnKV0gPSAnXDAnOw0KLSsJCW9wdGlvbnMtPmxway5iaW5kZG4gPSB4c3RyZHVw
KGFyZyk7DQotKwkJbWVtc2V0KGFyZywwLHN0cmxlbihhcmcpKTsNCi0rCQlicmVhazsNCi0r
CWNhc2Ugc0JpbmRQdzoNCi0rCQlhcmcgPSBjcDsNCi0rCQlpZiAoIWFyZyB8fCAqYXJnID09
ICdcMCcpDQotKwkJICAgIGZhdGFsKCIlcyBsaW5lICVkOiBtaXNzaW5nIGJpbmRwdyIsZmls
ZW5hbWUsbGluZW51bSk7DQotKwkJYXJnW3N0cmxlbihhcmcpXSA9ICdcMCc7DQotKwkJb3B0
aW9ucy0+bHBrLmJpbmRwdyA9IHhzdHJkdXAoYXJnKTsNCi0rCQltZW1zZXQoYXJnLDAsc3Ry
bGVuKGFyZykpOw0KLSsJCWJyZWFrOw0KLSsJY2FzZSBzTXlHcm91cDoNCi0rCQlhcmcgPSBj
cDsNCi0rCQlpZiAoIWFyZyB8fCAqYXJnID09ICdcMCcpDQotKwkJICAgIGZhdGFsKCIlcyBs
aW5lICVkOiBtaXNzaW5nIGdyb3VwbmFtZSIsZmlsZW5hbWUsIGxpbmVudW0pOw0KLSsJCWFy
Z1tzdHJsZW4oYXJnKV0gPSAnXDAnOw0KLSsJCW9wdGlvbnMtPmxway5zZ3JvdXAgPSB4c3Ry
ZHVwKGFyZyk7DQotKwkJaWYgKG9wdGlvbnMtPmxway5zZ3JvdXApDQotKwkJICAgIG9wdGlv
bnMtPmxway5mZ3JvdXAgPSBsZGFwX3BhcnNlX2dyb3VwcyhvcHRpb25zLT5scGsuc2dyb3Vw
KTsNCi0rCQltZW1zZXQoYXJnLDAsc3RybGVuKGFyZykpOw0KLSsJCWJyZWFrOw0KLSsJY2Fz
ZSBzTGRhcEZpbHRlcjoNCi0rCQlhcmcgPSBjcDsNCi0rCQlpZiAoIWFyZyB8fCAqYXJnID09
ICdcMCcpDQotKwkJICAgIGZhdGFsKCIlcyBsaW5lICVkOiBtaXNzaW5nIGZpbHRlciIsZmls
ZW5hbWUsIGxpbmVudW0pOw0KLSsJCWFyZ1tzdHJsZW4oYXJnKV0gPSAnXDAnOw0KLSsJCW9w
dGlvbnMtPmxway5maWx0ZXIgPSB4c3RyZHVwKGFyZyk7DQotKwkJbWVtc2V0KGFyZywwLHN0
cmxlbihhcmcpKTsNCi0rCQlicmVhazsNCi0rCWNhc2Ugc0ZvcmNlVExTOg0KLSsJCWludHB0
ciA9ICZvcHRpb25zLT5scGsudGxzOw0KLSsJCWFyZyA9IHN0cmRlbGltKCZjcCk7DQotKwkJ
aWYgKCFhcmcgfHwgKmFyZyA9PSAnXDAnKQ0KLSsJCQlmYXRhbCgiJXMgbGluZSAlZDogbWlz
c2luZyB5ZXMvbm8gYXJndW1lbnQuIiwNCi0rCQkJICAgIGZpbGVuYW1lLCBsaW5lbnVtKTsN
Ci0rCQl2YWx1ZSA9IDA7CS8qIHNpbGVuY2UgY29tcGlsZXIgKi8NCi0rCQlpZiAoc3RyY21w
KGFyZywgInllcyIpID09IDApDQotKwkJCXZhbHVlID0gMTsNCi0rCQllbHNlIGlmIChzdHJj
bXAoYXJnLCAibm8iKSA9PSAwKQ0KLSsJCQl2YWx1ZSA9IDA7DQotKwkJZWxzZSBpZiAoc3Ry
Y21wKGFyZywgInRyeSIpID09IDApDQotKwkJCXZhbHVlID0gLTE7DQotKwkJZWxzZQ0KLSsJ
CQlmYXRhbCgiJXMgbGluZSAlZDogQmFkIHllcy9ubyBhcmd1bWVudDogJXMiLA0KLSsJCQkJ
ZmlsZW5hbWUsIGxpbmVudW0sIGFyZyk7DQotKwkJaWYgKCppbnRwdHIgPT0gLTEpDQotKwkJ
CSppbnRwdHIgPSB2YWx1ZTsNCi0rCQlicmVhazsNCi0rCWNhc2Ugc0JpbmRUaW1lb3V0Og0K
LSsJCWludHB0ciA9IChpbnQgKikgJm9wdGlvbnMtPmxway5iX3RpbWVvdXQudHZfc2VjOw0K
LSsJCWdvdG8gcGFyc2VfaW50Ow0KLSsJY2FzZSBzU2VhcmNoVGltZW91dDoNCi0rCQlpbnRw
dHIgPSAoaW50ICopICZvcHRpb25zLT5scGsuc190aW1lb3V0LnR2X3NlYzsNCi0rCQlnb3Rv
IHBhcnNlX2ludDsNCi0rCQlicmVhazsNCi0rCWNhc2Ugc0xkYXBDb25mOg0KLSsJCWFyZyA9
IGNwOw0KLSsJCWlmICghYXJnIHx8ICphcmcgPT0gJ1wwJykNCi0rCQkgICAgZmF0YWwoIiVz
IGxpbmUgJWQ6IG1pc3NpbmcgTHBrTGRhcENvbmYiLCBmaWxlbmFtZSwgbGluZW51bSk7DQot
KwkJYXJnW3N0cmxlbihhcmcpXSA9ICdcMCc7DQotKwkJb3B0aW9ucy0+bHBrLmxfY29uZiA9
IHhzdHJkdXAoYXJnKTsNCi0rCQltZW1zZXQoYXJnLCAwLCBzdHJsZW4oYXJnKSk7DQotKwkJ
YnJlYWs7DQotKyNlbmRpZg0KLSANCi0gCWRlZmF1bHQ6DQotIAkJZmF0YWwoIiVzIGxpbmUg
JWQ6IE1pc3NpbmcgaGFuZGxlciBmb3Igb3Bjb2RlICVzICglZCkiLA0KZGlmZiAtTnJ1IC9o
b21lL2dhd3JpbG9mZi9scGsvb3BlbnNzaC1wb3J0YWJsZS9maWxlcy9jb250cmliLW9wZW5z
c2gtbHBrLTUuMXAxLTAuMy4xMC5wYXRjaCAvaG9tZS9nYXdyaWxvZmYvb3BlbnNzaC1wb3J0
YWJsZS9maWxlcy9jb250cmliLW9wZW5zc2gtbHBrLTUuMXAxLTAuMy4xMC5wYXRjaA0KLS0t
IC9ob21lL2dhd3JpbG9mZi9scGsvb3BlbnNzaC1wb3J0YWJsZS9maWxlcy9jb250cmliLW9w
ZW5zc2gtbHBrLTUuMXAxLTAuMy4xMC5wYXRjaAkyMDA5LTA2LTIxIDIzOjM2OjE1LjAwMDAw
MDAwMCArMDMwMA0KKysrIC9ob21lL2dhd3JpbG9mZi9vcGVuc3NoLXBvcnRhYmxlL2ZpbGVz
L2NvbnRyaWItb3BlbnNzaC1scGstNS4xcDEtMC4zLjEwLnBhdGNoCTE5NzAtMDEtMDEgMDM6
MDA6MDAuMDAwMDAwMDAwICswMzAwDQpAQCAtMSwxNjgyICswLDAgQEANCi1UaGlzIGlzIGEg
Zm9yd2FyZC1wb3J0IG9mIHRoZSBPcGVuU1NIIExQSyBzdXBwb3J0IHBhdGNoLg0KLQ0KLUl0
IGFkZHMgc3VwcG9ydCBmb3Igc3RvcmluZyBPcGVuU1NIIHB1YmxpYyBrZXlzIGluIExEQVAu
IEl0IGFsc28gc3VwcG9ydHMNCi1ncm91cGluZyBvZiBtYWNoaW5lcyBpbiB0aGUgTERBUCBk
YXRhIHRvIGxpbWl0IHVzZXJzIHRvIHNwZWNpZmljIG1hY2hpbmVzLg0KLQ0KLVRoZSBsYXRl
c3QgaG9tZXBhZ2UgZm9yIHRoZSBMUEsgcHJvamVjdCBpczoNCi1odHRwOi8vY29kZS5nb29n
bGUuY29tL3Avb3BlbnNzaC1scGsvDQotDQotVGhlIDAuMy4xMCB2ZXJzaW9uIG9mIHRoZSBw
YXRjaCBpbmNsdWRlcyBhIGZpeCBmb3IgNjQtYml0IHBsYXRmb3JtcywgYXMNCi1kaXNjb3Zl
cmVkIGJ5IEdlbnRvbywgd2hlcmUgdGhlIGJpbmQgdGltZW91dCBhbmQgc2VhcmNoIHRpbWVv
dXQgdmFsdWVzIHdlcmUgbm90DQotYmVpbmcgcGFyc2VkIGNvcnJlY3RseTogaHR0cDovL2J1
Z3MuZ2VudG9vLm9yZy8yMTAxMTANCi0NCi1Gb3J3YXJkLXBvcnRlZC1mcm9tOiBvcGVuc3No
LWxway01LjFwMS0wLjMuOS5wYXRjaA0KLVNpZ25lZC1vZmYtYnk6IFJvYmluIEguIEpvaG5z
b24gPHJvYmJhdDJAZ2VudG9vLm9yZz4NCi0NCi1kaWZmIC1OdWFyIC0tZXhjbHVkZSAnKi5v
cmlnJyAtLWV4Y2x1ZGUgJyoucmVqJyBhdXRoMi1wdWJrZXkuYyBhdXRoMi1wdWJrZXkuYw0K
LS0tLSBhdXRoMi1wdWJrZXkuYwkyMDA4LTA3LTAzIDE5OjU0OjI1LjAwMDAwMDAwMCAtMDcw
MA0KLSsrKyBhdXRoMi1wdWJrZXkuYwkyMDA4LTA4LTIzIDE1OjAyOjQ3LjAwMDAwMDAwMCAt
MDcwMA0KLUBAIC01NSw2ICs1NSwxMCBAQA0KLSAjaW5jbHVkZSAibW9uaXRvcl93cmFwLmgi
DQotICNpbmNsdWRlICJtaXNjLmgiDQotIA0KLSsjaWZkZWYgV0lUSF9MREFQX1BVQktFWQ0K
LSsjaW5jbHVkZSAibGRhcGF1dGguaCINCi0rI2VuZGlmDQotKw0KLSAvKiBpbXBvcnQgKi8N
Ci0gZXh0ZXJuIFNlcnZlck9wdGlvbnMgb3B0aW9uczsNCi0gZXh0ZXJuIHVfY2hhciAqc2Vz
c2lvbl9pZDI7DQotQEAgLTE4NywxMCArMTkxLDc5IEBADQotIAl1X2xvbmcgbGluZW51bSA9
IDA7DQotIAlLZXkgKmZvdW5kOw0KLSAJY2hhciAqZnA7DQotKyNpZmRlZiBXSVRIX0xEQVBf
UFVCS0VZDQotKwlsZGFwX2tleV90ICogazsNCi0rCXVuc2lnbmVkIGludCBpID0gMDsNCi0r
I2VuZGlmDQotIA0KLSAJLyogVGVtcG9yYXJpbHkgdXNlIHRoZSB1c2VyJ3MgdWlkLiAqLw0K
LSAJdGVtcG9yYXJpbHlfdXNlX3VpZChwdyk7DQotIA0KLSsjaWZkZWYgV0lUSF9MREFQX1BV
QktFWQ0KLSsgCWZvdW5kX2tleSA9IDA7DQotKyAJLyogYWxsb2NhdGUgYSBuZXcga2V5IHR5
cGUgKi8NCi0rIAlmb3VuZCA9IGtleV9uZXcoa2V5LT50eXBlKTsNCi0rIA0KLSsgCS8qIGZp
cnN0IGNoZWNrIGlmIHRoZSBvcHRpb25zIGlzIGVuYWJsZWQsIHRoZW4gdHJ5Li4gKi8NCi0r
CWlmIChvcHRpb25zLmxway5vbikgew0KLSsJICAgIGRlYnVnKCJbTERBUF0gdHJ5aW5nIExE
QVAgZmlyc3QgdWlkPSVzIixwdy0+cHdfbmFtZSk7DQotKwkgICAgaWYgKGxkYXBfaXNtZW1i
ZXIoJm9wdGlvbnMubHBrLCBwdy0+cHdfbmFtZSkgPiAwKSB7DQotKwkJaWYgKChrID0gbGRh
cF9nZXR1c2Vya2V5KCZvcHRpb25zLmxwaywgcHctPnB3X25hbWUpKSAhPSBOVUxMKSB7DQot
KwkJICAgIC8qIFNraXAgbGVhZGluZyB3aGl0ZXNwYWNlLCBlbXB0eSBhbmQgY29tbWVudCBs
aW5lcy4gKi8NCi0rCQkgICAgZm9yIChpID0gMCA7IGkgPCBrLT5udW0gOyBpKyspIHsNCi0r
CQkJLyogZG9udCBmb3JnZXQgaWYgbXVsdGlwbGUga2V5cyB0byByZXNldCBvcHRpb25zICov
DQotKwkJCWNoYXIgKmNwLCAqb3B0aW9ucyA9IE5VTEw7DQotKw0KLSsJCQlmb3IgKGNwID0g
KGNoYXIgKilrLT5rZXlzW2ldLT5idl92YWw7ICpjcCA9PSAnICcgfHwgKmNwID09ICdcdCc7
IGNwKyspDQotKwkJCSAgICA7DQotKwkJCWlmICghKmNwIHx8ICpjcCA9PSAnXG4nIHx8ICpj
cCA9PSAnIycpDQotKwkJCSAgICBjb250aW51ZTsNCi0rDQotKwkJCWlmIChrZXlfcmVhZChm
b3VuZCwgJmNwKSAhPSAxKSB7DQotKwkJCSAgICAvKiBubyBrZXk/ICBjaGVjayBpZiB0aGVy
ZSBhcmUgb3B0aW9ucyBmb3IgdGhpcyBrZXkgKi8NCi0rCQkJICAgIGludCBxdW90ZWQgPSAw
Ow0KLSsJCQkgICAgZGVidWcyKCJbTERBUF0gdXNlcl9rZXlfYWxsb3dlZDogY2hlY2sgb3B0
aW9uczogJyVzJyIsIGNwKTsNCi0rCQkJICAgIG9wdGlvbnMgPSBjcDsNCi0rCQkJICAgIGZv
ciAoOyAqY3AgJiYgKHF1b3RlZCB8fCAoKmNwICE9ICcgJyAmJiAqY3AgIT0gJ1x0JykpOyBj
cCsrKSB7DQotKwkJCQlpZiAoKmNwID09ICdcXCcgJiYgY3BbMV0gPT0gJyInKQ0KLSsJCQkJ
ICAgIGNwKys7CS8qIFNraXAgYm90aCAqLw0KLSsJCQkJZWxzZSBpZiAoKmNwID09ICciJykN
Ci0rCQkJCSAgICBxdW90ZWQgPSAhcXVvdGVkOw0KLSsJCQkgICAgfQ0KLSsJCQkgICAgLyog
U2tpcCByZW1haW5pbmcgd2hpdGVzcGFjZS4gKi8NCi0rCQkJICAgIGZvciAoOyAqY3AgPT0g
JyAnIHx8ICpjcCA9PSAnXHQnOyBjcCsrKQ0KLSsJCQkJOw0KLSsJCQkgICAgaWYgKGtleV9y
ZWFkKGZvdW5kLCAmY3ApICE9IDEpIHsNCi0rCQkJCWRlYnVnMigiW0xEQVBdIHVzZXJfa2V5
X2FsbG93ZWQ6IGFkdmFuY2U6ICclcyciLCBjcCk7DQotKwkJCQkvKiBzdGlsbCBubyBrZXk/
ICBhZHZhbmNlIHRvIG5leHQgbGluZSovDQotKwkJCQljb250aW51ZTsNCi0rCQkJICAgIH0N
Ci0rCQkJfQ0KLSsNCi0rCQkJaWYgKGtleV9lcXVhbChmb3VuZCwga2V5KSAmJg0KLSsJCQkJ
YXV0aF9wYXJzZV9vcHRpb25zKHB3LCBvcHRpb25zLCBmaWxlLCBsaW5lbnVtKSA9PSAxKSB7
DQotKwkJCSAgICBmb3VuZF9rZXkgPSAxOw0KLSsJCQkgICAgZGVidWcoIltMREFQXSBtYXRj
aGluZyBrZXkgZm91bmQiKTsNCi0rCQkJICAgIGZwID0ga2V5X2ZpbmdlcnByaW50KGZvdW5k
LCBTU0hfRlBfTUQ1LCBTU0hfRlBfSEVYKTsNCi0rCQkJICAgIHZlcmJvc2UoIltMREFQXSBG
b3VuZCBtYXRjaGluZyAlcyBrZXk6ICVzIiwga2V5X3R5cGUoZm91bmQpLCBmcCk7DQotKw0K
LSsJCQkgICAgLyogcmVzdG9yaW5nIG1lbW9yeSAqLw0KLSsJCQkgICAgbGRhcF9rZXlzX2Zy
ZWUoayk7DQotKwkJCSAgICB4ZnJlZShmcCk7DQotKwkJCSAgICByZXN0b3JlX3VpZCgpOw0K
LSsJCQkgICAga2V5X2ZyZWUoZm91bmQpOw0KLSsJCQkgICAgcmV0dXJuIGZvdW5kX2tleTsN
Ci0rCQkJICAgIGJyZWFrOw0KLSsJCQl9DQotKwkJICAgIH0vKiBlbmQgb2YgTERBUCBmb3Io
KSAqLw0KLSsJCX0gZWxzZSB7DQotKwkJICAgIGxvZ2l0KCJbTERBUF0gbm8ga2V5cyBmb3Vu
ZCBmb3IgJyVzJyEiLCBwdy0+cHdfbmFtZSk7DQotKwkJfQ0KLSsJICAgIH0gZWxzZSB7DQot
KwkJbG9naXQoIltMREFQXSAnJXMnIGlzIG5vdCBpbiAnJXMnIiwgcHctPnB3X25hbWUsIG9w
dGlvbnMubHBrLnNncm91cCk7DQotKwkgICAgfQ0KLSsJfQ0KLSsjZW5kaWYNCi0gCWRlYnVn
KCJ0cnlpbmcgcHVibGljIGtleSBmaWxlICVzIiwgZmlsZSk7DQotIAlmID0gYXV0aF9vcGVu
a2V5ZmlsZShmaWxlLCBwdywgb3B0aW9ucy5zdHJpY3RfbW9kZXMpOw0KLSANCi1kaWZmIC1O
dWFyIC0tZXhjbHVkZSAnKi5vcmlnJyAtLWV4Y2x1ZGUgJyoucmVqJyBhdXRoLXJzYS5jIGF1
dGgtcnNhLmMNCi0tLS0gYXV0aC1yc2EuYwkyMDA4LTA3LTAyIDA1OjM3OjMwLjAwMDAwMDAw
MCAtMDcwMA0KLSsrKyBhdXRoLXJzYS5jCTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAw
IC0wNzAwDQotQEAgLTE3NCwxMCArMTc0LDk2IEBADQotIAlGSUxFICpmOw0KLSAJdV9sb25n
IGxpbmVudW0gPSAwOw0KLSAJS2V5ICprZXk7DQotKyNpZmRlZiBXSVRIX0xEQVBfUFVCS0VZ
DQotKwlsZGFwX2tleV90ICogazsNCi0rCXVuc2lnbmVkIGludCBpID0gMDsNCi0rI2VuZGlm
DQotIA0KLSAJLyogVGVtcG9yYXJpbHkgdXNlIHRoZSB1c2VyJ3MgdWlkLiAqLw0KLSAJdGVt
cG9yYXJpbHlfdXNlX3VpZChwdyk7DQotIA0KLSsjaWZkZWYgV0lUSF9MREFQX1BVQktFWQ0K
LSsJLyogaGVyZSBpcyB0aGUgam9iICovDQotKwlrZXkgPSBrZXlfbmV3KEtFWV9SU0ExKTsN
Ci0rDQotKwlpZiAob3B0aW9ucy5scGsub24pIHsNCi0rCSAgICBkZWJ1ZygiW0xEQVBdIHRy
eWluZyBMREFQIGZpcnN0IHVpZD0lcyIsIHB3LT5wd19uYW1lKTsNCi0rCSAgICBpZiAoIGxk
YXBfaXNtZW1iZXIoJm9wdGlvbnMubHBrLCBwdy0+cHdfbmFtZSkgPiAwKSB7DQotKwkJaWYg
KCAoayA9IGxkYXBfZ2V0dXNlcmtleSgmb3B0aW9ucy5scGssIHB3LT5wd19uYW1lKSkgIT0g
TlVMTCkgew0KLSsJCSAgICBmb3IgKGkgPSAwIDsgaSA8IGstPm51bSA7IGkrKykgew0KLSsJ
CQljaGFyICpjcCwgKm9wdGlvbnMgPSBOVUxMOw0KLSsNCi0rCQkJZm9yIChjcCA9IGstPmtl
eXNbaV0tPmJ2X3ZhbDsgKmNwID09ICcgJyB8fCAqY3AgPT0gJ1x0JzsgY3ArKykNCi0rCQkJ
ICAgIDsNCi0rCQkJaWYgKCEqY3AgfHwgKmNwID09ICdcbicgfHwgKmNwID09ICcjJykNCi0r
CQkJICAgIGNvbnRpbnVlOw0KLSsNCi0rCQkJLyoNCi0rCQkJKiBDaGVjayBpZiB0aGVyZSBh
cmUgb3B0aW9ucyBmb3IgdGhpcyBrZXksIGFuZCBpZiBzbywNCi0rCQkJKiBzYXZlIHRoZWly
IHN0YXJ0aW5nIGFkZHJlc3MgYW5kIHNraXAgdGhlIG9wdGlvbiBwYXJ0DQotKwkJCSogZm9y
IG5vdy4gIElmIHRoZXJlIGFyZSBubyBvcHRpb25zLCBzZXQgdGhlIHN0YXJ0aW5nDQotKwkJ
CSogYWRkcmVzcyB0byBOVUxMLg0KLSsJCQkgKi8NCi0rCQkJaWYgKCpjcCA8ICcwJyB8fCAq
Y3AgPiAnOScpIHsNCi0rCQkJICAgIGludCBxdW90ZWQgPSAwOw0KLSsJCQkgICAgb3B0aW9u
cyA9IGNwOw0KLSsJCQkgICAgZm9yICg7ICpjcCAmJiAocXVvdGVkIHx8ICgqY3AgIT0gJyAn
ICYmICpjcCAhPSAnXHQnKSk7IGNwKyspIHsNCi0rCQkJCWlmICgqY3AgPT0gJ1xcJyAmJiBj
cFsxXSA9PSAnIicpDQotKwkJCQkgICAgY3ArKzsJLyogU2tpcCBib3RoICovDQotKwkJCQll
bHNlIGlmICgqY3AgPT0gJyInKQ0KLSsJCQkJICAgIHF1b3RlZCA9ICFxdW90ZWQ7DQotKwkJ
CSAgICB9DQotKwkJCX0gZWxzZQ0KLSsJCQkgICAgb3B0aW9ucyA9IE5VTEw7DQotKw0KLSsJ
CQkvKiBQYXJzZSB0aGUga2V5IGZyb20gdGhlIGxpbmUuICovDQotKwkJCWlmIChob3N0Zmls
ZV9yZWFkX2tleSgmY3AsICZiaXRzLCBrZXkpID09IDApIHsNCi0rCQkJICAgIGRlYnVnKCJb
TERBUF0gbGluZSAlZDogbm9uIHNzaDEga2V5IHN5bnRheCIsIGkpOw0KLSsJCQkgICAgY29u
dGludWU7DQotKwkJCX0NCi0rCQkJLyogY3Agbm93IHBvaW50cyB0byB0aGUgY29tbWVudCBw
YXJ0LiAqLw0KLSsNCi0rCQkJLyogQ2hlY2sgaWYgdGhlIHdlIGhhdmUgZm91bmQgdGhlIGRl
c2lyZWQga2V5IChpZGVudGlmaWVkIGJ5IGl0cyBtb2R1bHVzKS4gKi8NCi0rCQkJaWYgKEJO
X2NtcChrZXktPnJzYS0+biwgY2xpZW50X24pICE9IDApDQotKwkJCSAgICBjb250aW51ZTsN
Ci0rDQotKwkJCS8qIGNoZWNrIHRoZSByZWFsIGJpdHMgICovDQotKwkJCWlmIChiaXRzICE9
ICh1bnNpZ25lZCBpbnQpQk5fbnVtX2JpdHMoa2V5LT5yc2EtPm4pKQ0KLSsJCQkgICAgbG9n
aXQoIltMREFQXSBXYXJuaW5nOiBsZGFwLCBsaW5lICVsdToga2V5c2l6ZSBtaXNtYXRjaDog
Ig0KLSsJCQkJICAgICJhY3R1YWwgJWQgdnMuIGFubm91bmNlZCAlZC4iLCAodW5zaWduZWQg
bG9uZylpLCBCTl9udW1fYml0cyhrZXktPnJzYS0+biksIGJpdHMpOw0KLSsNCi0rCQkJLyog
V2UgaGF2ZSBmb3VuZCB0aGUgZGVzaXJlZCBrZXkuICovDQotKwkJCS8qDQotKwkJCSogSWYg
b3VyIG9wdGlvbnMgZG8gbm90IGFsbG93IHRoaXMga2V5IHRvIGJlIHVzZWQsDQotKwkJCSog
ZG8gbm90IHNlbmQgY2hhbGxlbmdlLg0KLSsJCQkgKi8NCi0rCQkJaWYgKCFhdXRoX3BhcnNl
X29wdGlvbnMocHcsIG9wdGlvbnMsICJbTERBUF0iLCAodW5zaWduZWQgbG9uZykgaSkpDQot
KwkJCSAgICBjb250aW51ZTsNCi0rDQotKwkJCS8qIGJyZWFrIG91dCwgdGhpcyBrZXkgaXMg
YWxsb3dlZCAqLw0KLSsJCQlhbGxvd2VkID0gMTsNCi0rDQotKwkJCS8qIGFkZCB0aGUgcmV0
dXJuIHN0dWZmIGV0Yy4uLiAqLw0KLSsJCQkvKiBSZXN0b3JlIHRoZSBwcml2aWxlZ2VkIHVp
ZC4gKi8NCi0rCQkJcmVzdG9yZV91aWQoKTsNCi0rDQotKwkJCS8qIHJldHVybiBrZXkgaWYg
YWxsb3dlZCAqLw0KLSsJCQlpZiAoYWxsb3dlZCAmJiBya2V5ICE9IE5VTEwpDQotKwkJCSAg
ICAqcmtleSA9IGtleTsNCi0rCQkJZWxzZQ0KLSsJCQkgICAga2V5X2ZyZWUoa2V5KTsNCi0r
DQotKwkJCWxkYXBfa2V5c19mcmVlKGspOw0KLSsJCQlyZXR1cm4gKGFsbG93ZWQpOw0KLSsJ
CSAgICB9DQotKwkJfSBlbHNlIHsNCi0rCQkgICAgbG9naXQoIltMREFQXSBubyBrZXlzIGZv
dW5kIGZvciAnJXMnISIsIHB3LT5wd19uYW1lKTsNCi0rCQl9DQotKwkgICAgfSBlbHNlIHsN
Ci0rCQlsb2dpdCgiW0xEQVBdICclcycgaXMgbm90IGluICclcyciLCBwdy0+cHdfbmFtZSwg
b3B0aW9ucy5scGsuc2dyb3VwKTsNCi0rCSAgICB9DQotKwl9DQotKyNlbmRpZg0KLSAJLyog
VGhlIGF1dGhvcml6ZWQga2V5cy4gKi8NCi0gCWZpbGUgPSBhdXRob3JpemVkX2tleXNfZmls
ZShwdyk7DQotIAlkZWJ1ZygidHJ5aW5nIHB1YmxpYyBSU0Ega2V5IGZpbGUgJXMiLCBmaWxl
KTsNCi1kaWZmIC1OdWFyIC0tZXhjbHVkZSAnKi5vcmlnJyAtLWV4Y2x1ZGUgJyoucmVqJyBj
b25maWcuaC5pbiBjb25maWcuaC5pbg0KLS0tLSBjb25maWcuaC5pbgkyMDA4LTA3LTIxIDAx
OjMwOjQ5LjAwMDAwMDAwMCAtMDcwMA0KLSsrKyBjb25maWcuaC5pbgkyMDA4LTA4LTIzIDE1
OjAyOjQ3LjAwMDAwMDAwMCAtMDcwMA0KLUBAIC01NjAsNiArNTYwLDkgQEANCi0gLyogRGVm
aW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaW51eC9pZl90dW4uaD4gaGVhZGVyIGZpbGUu
ICovDQotICN1bmRlZiBIQVZFX0xJTlVYX0lGX1RVTl9IDQotIA0KLSsvKiBEZWZpbmUgaWYg
eW91IHdhbnQgTERBUCBzdXBwb3J0ICovDQotKyN1bmRlZiBXSVRIX0xEQVBfUFVCS0VZDQot
Kw0KLSAvKiBEZWZpbmUgaWYgeW91ciBsaWJyYXJpZXMgZGVmaW5lIGxvZ2luKCkgKi8NCi0g
I3VuZGVmIEhBVkVfTE9HSU4NCi0gDQotZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3JpZycg
LS1leGNsdWRlICcqLnJlaicgY29uZmlndXJlIGNvbmZpZ3VyZQ0KLS0tLSBjb25maWd1cmUJ
MjAwOC0wNy0yMSAwMTozMDo1MC4wMDAwMDAwMDAgLTA3MDANCi0rKysgY29uZmlndXJlCTIw
MDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwDQotQEAgLTEzNDAsNiArMTM0MCw3
IEBADQotICAgLS13aXRoLXRjcC13cmFwcGVyc1s9UEFUSF0gRW5hYmxlIHRjcHdyYXBwZXJz
IHN1cHBvcnQgKG9wdGlvbmFsbHkgaW4gUEFUSCkNCi0gICAtLXdpdGgtbGliZWRpdFs9UEFU
SF0gICBFbmFibGUgbGliZWRpdCBzdXBwb3J0IGZvciBzZnRwDQotICAgLS13aXRoLWF1ZGl0
PW1vZHVsZSAgICAgRW5hYmxlIEVYUEVSSU1FTlRBTCBhdWRpdCBzdXBwb3J0IChtb2R1bGVz
PWRlYnVnLGJzbSkNCi0rICAtLXdpdGgtbGRhcFs9UEFUSF0gICAgICBFbmFibGUgTERBUCBw
dWJrZXkgc3VwcG9ydCAob3B0aW9uYWxseSBpbiBQQVRIKQ0KLSAgIC0td2l0aC1zc2wtZGly
PVBBVEggICAgIFNwZWNpZnkgcGF0aCB0byBPcGVuU1NMIGluc3RhbGxhdGlvbg0KLSAgIC0t
d2l0aG91dC1vcGVuc3NsLWhlYWRlci1jaGVjayBEaXNhYmxlIE9wZW5TU0wgdmVyc2lvbiBj
b25zaXN0ZW5jeSBjaGVjaw0KLSAgIC0td2l0aC1zc2wtZW5naW5lICAgICAgIEVuYWJsZSBP
cGVuU1NMIChoYXJkd2FyZSkgRU5HSU5FIHN1cHBvcnQNCi1AQCAtMTI1NjgsNiArMTI1Njks
ODUgQEANCi0gZmkNCi0gDQotIA0KLSsjIENoZWNrIHdoZXRoZXIgdXNlciB3YW50cyBMREFQ
IHN1cHBvcnQNCi0rTERBUF9NU0c9Im5vIg0KLSsNCi0rIyBDaGVjayB3aGV0aGVyIC0td2l0
aC1sZGFwIHdhcyBnaXZlbi4NCi0raWYgdGVzdCAiJHt3aXRoX2xkYXArc2V0fSIgPSBzZXQ7
IHRoZW4NCi0rICB3aXRodmFsPSR3aXRoX2xkYXA7DQotKwkJaWYgdGVzdCAieCR3aXRodmFs
IiAhPSAieG5vIiA7IHRoZW4NCi0rDQotKwkJCWlmIHRlc3QgIngkd2l0aHZhbCIgIT0gInh5
ZXMiIDsgdGhlbg0KLSsJCQkJQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSSR7d2l0aHZhbH0vaW5j
bHVkZSINCi0rCQkJCUxERkxBR1M9IiRMREZMQUdTIC1MJHt3aXRodmFsfS9saWIiDQotKwkJ
CWZpDQotKw0KLSsNCi0rY2F0ID4+Y29uZmRlZnMuaCA8PFxfQUNFT0YNCi0rI2RlZmluZSBX
SVRIX0xEQVBfUFVCS0VZIDENCi0rX0FDRU9GDQotKw0KLSsJCQlMSUJTPSItbGxkYXAgJExJ
QlMiDQotKwkJCUxEQVBfTVNHPSJ5ZXMiDQotKw0KLSsJCQl7IGVjaG8gIiRhc19tZTokTElO
RU5POiBjaGVja2luZyBmb3IgTERBUCBzdXBwb3J0IiA+JjUNCi0rZWNobyAkRUNIT19OICJj
aGVja2luZyBmb3IgTERBUCBzdXBwb3J0Li4uICRFQ0hPX0MiID4mNjsgfQ0KLSsJCQljYXQg
PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YNCi0rLyogY29uZmRlZnMuaC4gICovDQotK19B
Q0VPRg0KLStjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQNCi0rY2F0ID4+Y29u
ZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRg0KLSsvKiBlbmQgY29uZmRlZnMuaC4gICovDQotKyNp
bmNsdWRlIDxzeXMvdHlwZXMuaD4NCi0rCQkJCSAjaW5jbHVkZSA8bGRhcC5oPg0KLStpbnQN
Ci0rbWFpbiAoKQ0KLSt7DQotKyh2b2lkKWxkYXBfaW5pdCgwLCAwKTsNCi0rICA7DQotKyAg
cmV0dXJuIDA7DQotK30NCi0rX0FDRU9GDQotK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQN
Ci0raWYgeyAoYWNfdHJ5PSIkYWNfY29tcGlsZSINCi0rY2FzZSAiKCgkYWNfdHJ5IiBpbg0K
LSsgICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7Ow0KLSsgICop
IGFjX3RyeV9lY2hvPSRhY190cnk7Ow0KLStlc2FjDQotK2V2YWwgImVjaG8gXCJcJGFzX21l
OiRMSU5FTk86ICRhY190cnlfZWNob1wiIikgPiY1DQotKyAgKGV2YWwgIiRhY19jb21waWxl
IikgMj5jb25mdGVzdC5lcjENCi0rICBhY19zdGF0dXM9JD8NCi0rICBncmVwIC12ICdeICor
JyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycg0KLSsgIHJtIC1mIGNvbmZ0ZXN0LmVyMQ0K
LSsgIGNhdCBjb25mdGVzdC5lcnIgPiY1DQotKyAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwk
PyA9ICRhY19zdGF0dXMiID4mNQ0KLSsgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmIHsNCi0r
CSB0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIgfHwNCi0rCSB0ZXN0ICEgLXMgY29uZnRl
c3QuZXJyDQotKyAgICAgICB9ICYmIHRlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dDsgdGhl
bg0KLSsgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogeWVzIiA+JjUNCi0rZWNo
byAiJHtFQ0hPX1R9eWVzIiA+JjY7IH0NCi0rZWxzZQ0KLSsgIGVjaG8gIiRhc19tZTogZmFp
bGVkIHByb2dyYW0gd2FzOiIgPiY1DQotK3NlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4
dCA+JjUNCi0rDQotKw0KLSsJCQkJICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3Vs
dDogbm8iID4mNQ0KLStlY2hvICIke0VDSE9fVH1ubyIgPiY2OyB9DQotKwkJCQkJeyB7IGVj
aG8gIiRhc19tZTokTElORU5POiBlcnJvcjogKiogSW5jb21wbGV0ZSBvciBtaXNzaW5nIGxk
YXAgbGlicmFyaWVzICoqIiA+JjUNCi0rZWNobyAiJGFzX21lOiBlcnJvcjogKiogSW5jb21w
bGV0ZSBvciBtaXNzaW5nIGxkYXAgbGlicmFyaWVzICoqIiA+JjI7fQ0KLSsgICB7IChleGl0
IDEpOyBleGl0IDE7IH07IH0NCi0rDQotKw0KLStmaQ0KLSsNCi0rcm0gLWYgY29yZSBjb25m
dGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0DQotKwkJZmkN
Ci0rDQotKw0KLStmaQ0KLSsNCi0rDQotIA0KLSANCi0gDQotQEAgLTMwMTM1LDYgKzMwMjE1
LDcgQEANCi0gZWNobyAiICAgICAgICAgICAgICAgICBTbWFydGNhcmQgc3VwcG9ydDogJFND
QVJEX01TRyINCi0gZWNobyAiICAgICAgICAgICAgICAgICAgICAgUy9LRVkgc3VwcG9ydDog
JFNLRVlfTVNHIg0KLSBlY2hvICIgICAgICAgICAgICAgIFRDUCBXcmFwcGVycyBzdXBwb3J0
OiAkVENQV19NU0ciDQotK2VjaG8gIiAgICAgICAgICAgICAgICAgICAgICBMREFQIHN1cHBv
cnQ6ICRMREFQX01TRyINCi0gZWNobyAiICAgICAgICAgICAgICBNRDUgcGFzc3dvcmQgc3Vw
cG9ydDogJE1ENV9NU0ciDQotIGVjaG8gIiAgICAgICAgICAgICAgICAgICBsaWJlZGl0IHN1
cHBvcnQ6ICRMSUJFRElUX01TRyINCi0gZWNobyAiICBTb2xhcmlzIHByb2Nlc3MgY29udHJh
Y3Qgc3VwcG9ydDogJFNQQ19NU0ciDQotZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3JpZycg
LS1leGNsdWRlICcqLnJlaicgY29uZmlndXJlLmFjIGNvbmZpZ3VyZS5hYw0KLS0tLSBjb25m
aWd1cmUuYWMJMjAwOC0wNy0wOSAwNDowNzoxOS4wMDAwMDAwMDAgLTA3MDANCi0rKysgY29u
ZmlndXJlLmFjCTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwDQotQEAgLTEy
OTksNiArMTI5OSwzNyBAQA0KLSAJZXNhYyBdDQotICkNCi0gDQotKyMgQ2hlY2sgd2hldGhl
ciB1c2VyIHdhbnRzIExEQVAgc3VwcG9ydA0KLStMREFQX01TRz0ibm8iDQotK0FDX0FSR19X
SVRIKGxkYXAsDQotKwlbICAtLXdpdGgtbGRhcFtbPVBBVEhdXSAgICAgIEVuYWJsZSBMREFQ
IHB1YmtleSBzdXBwb3J0IChvcHRpb25hbGx5IGluIFBBVEgpXSwNCi0rCVsNCi0rCQlpZiB0
ZXN0ICJ4JHdpdGh2YWwiICE9ICJ4bm8iIDsgdGhlbg0KLSsNCi0rCQkJaWYgdGVzdCAieCR3
aXRodmFsIiAhPSAieHllcyIgOyB0aGVuDQotKwkJCQlDUFBGTEFHUz0iJENQUEZMQUdTIC1J
JHt3aXRodmFsfS9pbmNsdWRlIg0KLSsJCQkJTERGTEFHUz0iJExERkxBR1MgLUwke3dpdGh2
YWx9L2xpYiINCi0rCQkJZmkNCi0rDQotKwkJCUFDX0RFRklORShbV0lUSF9MREFQX1BVQktF
WV0sIDEsIFtFbmFibGUgTERBUCBwdWJrZXkgc3VwcG9ydF0pDQotKwkJCUxJQlM9Ii1sbGRh
cCAkTElCUyINCi0rCQkJTERBUF9NU0c9InllcyINCi0rCQ0KLSsJCQlBQ19NU0dfQ0hFQ0tJ
TkcoW2ZvciBMREFQIHN1cHBvcnRdKQ0KLSsJCQlBQ19UUllfQ09NUElMRSgNCi0rCQkJCVsj
aW5jbHVkZSA8c3lzL3R5cGVzLmg+DQotKwkJCQkgI2luY2x1ZGUgPGxkYXAuaD5dLA0KLSsJ
CQkJWyh2b2lkKWxkYXBfaW5pdCgwLCAwKTtdLA0KLSsJCQkJW0FDX01TR19SRVNVTFQoeWVz
KV0sDQotKwkJCQlbDQotKwkJCQkgICAgQUNfTVNHX1JFU1VMVChubykgDQotKwkJCQkJQUNf
TVNHX0VSUk9SKFsqKiBJbmNvbXBsZXRlIG9yIG1pc3NpbmcgbGRhcCBsaWJyYXJpZXMgKipd
KQ0KLSsJCQkJXQ0KLSsgICAgICAgIAkpDQotKwkJZmkNCi0rCV0NCi0rKQ0KLSsNCi0gZG5s
ICAgIENoZWNrcyBmb3IgbGlicmFyeSBmdW5jdGlvbnMuIFBsZWFzZSBrZWVwIGluIGFscGhh
YmV0aWNhbCBvcmRlcg0KLSBBQ19DSEVDS19GVU5DUyggXA0KLSAJYXJjNHJhbmRvbSBcDQot
QEAgLTQxMzcsNiArNDE2OCw3IEBADQotIGVjaG8gIiAgICAgICAgICAgICAgICAgU21hcnRj
YXJkIHN1cHBvcnQ6ICRTQ0FSRF9NU0ciDQotIGVjaG8gIiAgICAgICAgICAgICAgICAgICAg
IFMvS0VZIHN1cHBvcnQ6ICRTS0VZX01TRyINCi0gZWNobyAiICAgICAgICAgICAgICBUQ1Ag
V3JhcHBlcnMgc3VwcG9ydDogJFRDUFdfTVNHIg0KLStlY2hvICIgICAgICAgICAgICAgICAg
ICAgICAgTERBUCBzdXBwb3J0OiAkTERBUF9NU0ciDQotIGVjaG8gIiAgICAgICAgICAgICAg
TUQ1IHBhc3N3b3JkIHN1cHBvcnQ6ICRNRDVfTVNHIg0KLSBlY2hvICIgICAgICAgICAgICAg
ICAgICAgbGliZWRpdCBzdXBwb3J0OiAkTElCRURJVF9NU0ciDQotIGVjaG8gIiAgU29sYXJp
cyBwcm9jZXNzIGNvbnRyYWN0IHN1cHBvcnQ6ICRTUENfTVNHIg0KLWRpZmYgLU51YXIgLS1l
eGNsdWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIGxkYXBhdXRoLmMgbGRhcGF1dGgu
Yw0KLS0tLSBsZGFwYXV0aC5jCTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAw
DQotKysrIGxkYXBhdXRoLmMJMjAwOC0wOC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDAN
Ci1AQCAtMCwwICsxLDU3NSBAQA0KLSsvKiANCi0rICogJElkOiBvcGVuc3NoLWxway00LjNw
MS0wLjMuNy5wYXRjaCx2IDEuMyAyMDA2LzA0LzE4IDE1OjI5OjA5IGVhdSBFeHAgJA0KLSsg
Ki8NCi0rDQotKy8qDQotKyAqDQotKyAqIENvcHlyaWdodCAoYykgMjAwNSwgRXJpYyBBVUdF
IDxlYXVAcGhlYXIub3JnPg0KLSsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSsgKg0KLSsg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6DQotKyAqDQotKyAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4NCi0rICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLg0KLSsgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBwaGVhci5vcmcgbm9yIHRoZSBu
YW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCi0rICoNCi0rICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgDQotKyAqIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiANCi0rICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCANCi0rICogT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgDQotKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgDQotKyAqIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuDQotKyAqDQotKyAqDQotKyAqLw0KLSsNCi0rI2luY2x1
ZGUgImluY2x1ZGVzLmgiDQotKw0KLSsjaWZkZWYgV0lUSF9MREFQX1BVQktFWQ0KLSsNCi0r
I2luY2x1ZGUgPHN0ZGlvLmg+DQotKyNpbmNsdWRlIDxzdGRsaWIuaD4NCi0rI2luY2x1ZGUg
PHVuaXN0ZC5oPg0KLSsjaW5jbHVkZSA8c3RyaW5nLmg+DQotKw0KLSsjaW5jbHVkZSAibGRh
cGF1dGguaCINCi0rI2luY2x1ZGUgImxvZy5oIg0KLSsNCi0rc3RhdGljIGNoYXIgKmF0dHJz
W10gPSB7DQotKyAgICBQVUJLRVlBVFRSLA0KLSsgICAgTlVMTA0KLSt9Ow0KLSsNCi0rLyog
ZmlsdGVyIGJ1aWxkaW5nIGluZm9zICovDQotKyNkZWZpbmUgRklMVEVSX0dST1VQX1BSRUZJ
WCAiKCYob2JqZWN0Y2xhc3M9cG9zaXhHcm91cCkiDQotKyNkZWZpbmUgRklMVEVSX09SX1BS
RUZJWCAiKHwiDQotKyNkZWZpbmUgRklMVEVSX09SX1NVRkZJWCAiKSINCi0rI2RlZmluZSBG
SUxURVJfQ05fUFJFRklYICIoY249Ig0KLSsjZGVmaW5lIEZJTFRFUl9DTl9TVUZGSVggIiki
DQotKyNkZWZpbmUgRklMVEVSX1VJRF9GT1JNQVQgIihtZW1iZXJVaWQ9JXMpIg0KLSsjZGVm
aW5lIEZJTFRFUl9HUk9VUF9TVUZGSVggIikiDQotKyNkZWZpbmUgRklMVEVSX0dST1VQX1NJ
WkUoZ3JvdXApIChzaXplX3QpIChzdHJsZW4oZ3JvdXApKyhsZGFwX2NvdW50X2dyb3VwKGdy
b3VwKSo1KSs1MikNCi0rDQotKy8qIGp1c3QgZmlsdGVyIGJ1aWxkaW5nIHN0dWZmICovDQot
KyNkZWZpbmUgUkVRVUVTVF9HUk9VUF9TSVpFKGZpbHRlciwgdWlkKSAoc2l6ZV90KSAoc3Ry
bGVuKGZpbHRlcikrc3RybGVuKHVpZCkrMSkNCi0rI2RlZmluZSBSRVFVRVNUX0dST1VQKGJ1
ZmZlciwgcHJlZmlsdGVyLCBwd25hbWUpIFwNCi0rICAgIGJ1ZmZlciA9IChjaGFyICopIGNh
bGxvYyhSRVFVRVNUX0dST1VQX1NJWkUocHJlZmlsdGVyLCBwd25hbWUpLCBzaXplb2YoY2hh
cikpOyBcDQotKyAgICBpZiAoIWJ1ZmZlcikgeyBcDQotKyAgICAgICAgcGVycm9yKCJjYWxs
b2MoKSIpOyBcDQotKyAgICAgICAgcmV0dXJuIEZBSUxVUkU7IFwNCi0rICAgIH0gXA0KLSsg
ICAgc25wcmludGYoYnVmZmVyLCBSRVFVRVNUX0dST1VQX1NJWkUocHJlZmlsdGVyLHB3bmFt
ZSksIHByZWZpbHRlciwgcHduYW1lKQ0KLSsvKg0KLStYWFggT0xEIGdyb3VwIGJ1aWxkaW5n
IG1hY3Jvcw0KLSsjZGVmaW5lIFJFUVVFU1RfR1JPVVBfU0laRShncnAsIHVpZCkgKHNpemVf
dCkgKHN0cmxlbihncnApK3N0cmxlbih1aWQpKzQ2KQ0KLSsjZGVmaW5lIFJFUVVFU1RfR1JP
VVAoYnVmZmVyLHB3bmFtZSxncnApIFwNCi0rICAgIGJ1ZmZlciA9IChjaGFyICopIGNhbGxv
YyhSRVFVRVNUX0dST1VQX1NJWkUoZ3JwLCBwd25hbWUpLCBzaXplb2YoY2hhcikpOyBcDQot
KyAgICBpZiAoIWJ1ZmZlcikgeyBcDQotKyAgICAgICAgcGVycm9yKCJjYWxsb2MoKSIpOyBc
DQotKyAgICAgICAgcmV0dXJuIEZBSUxVUkU7IFwNCi0rICAgIH0gXA0KLSsgICAgc25wcmlu
dGYoYnVmZmVyLFJFUVVFU1RfR1JPVVBfU0laRShncnAscHduYW1lKSwiKCYob2JqZWN0Y2xh
c3M9cG9zaXhHcm91cCkoY249JXMpKG1lbWJlclVpZD0lcykpIixncnAscHduYW1lKQ0KLSsg
ICAgKi8NCi0rDQotKy8qDQotK1hYWCBzdG9jayB1cHN0cmVhbSB2ZXJzaW9uIHdpdGhvdXQg
ZXh0cmEgZmlsdGVyIHN1cHBvcnQNCi0rI2RlZmluZSBSRVFVRVNUX1VTRVJfU0laRSh1aWQp
IChzaXplX3QpIChzdHJsZW4odWlkKSs2NCkNCi0rI2RlZmluZSBSRVFVRVNUX1VTRVIoYnVm
ZmVyLCBwd25hbWUpIFwNCi0rICAgIGJ1ZmZlciA9IChjaGFyICopIGNhbGxvYyhSRVFVRVNU
X1VTRVJfU0laRShwd25hbWUpLCBzaXplb2YoY2hhcikpOyBcDQotKyAgICBpZiAoIWJ1ZmZl
cikgeyBcDQotKyAgICAgICAgcGVycm9yKCJjYWxsb2MoKSIpOyBcDQotKyAgICAgICAgcmV0
dXJuIE5VTEw7IFwNCi0rICAgIH0gXA0KLSsgICAgc25wcmludGYoYnVmZmVyLFJFUVVFU1Rf
VVNFUl9TSVpFKHB3bmFtZSksIigmKG9iamVjdGNsYXNzPXBvc2l4QWNjb3VudCkob2JqZWN0
Y2xhc3M9bGRhcFB1YmxpY0tleSkodWlkPSVzKSkiLHB3bmFtZSkNCi0rICAgKi8NCi0rDQot
KyNkZWZpbmUgUkVRVUVTVF9VU0VSX1NJWkUodWlkLCBmaWx0ZXIpIChzaXplX3QpIChzdHJs
ZW4odWlkKSs2NCsoZmlsdGVyICE9IE5VTEwgPyBzdHJsZW4oZmlsdGVyKSA6IDApKQ0KLSsj
ZGVmaW5lIFJFUVVFU1RfVVNFUihidWZmZXIsIHB3bmFtZSwgY3VzdG9tZmlsdGVyKSBcDQot
KyAgICBidWZmZXIgPSAoY2hhciAqKSBjYWxsb2MoUkVRVUVTVF9VU0VSX1NJWkUocHduYW1l
LCBjdXN0b21maWx0ZXIpLCBzaXplb2YoY2hhcikpOyBcDQotKyAgICBpZiAoIWJ1ZmZlcikg
eyBcDQotKyAgICAgICAgcGVycm9yKCJjYWxsb2MoKSIpOyBcDQotKyAgICAgICAgcmV0dXJu
IE5VTEw7IFwNCi0rICAgIH0gXA0KLSsgICAgc25wcmludGYoYnVmZmVyLCBSRVFVRVNUX1VT
RVJfU0laRShwd25hbWUsIGN1c3RvbWZpbHRlciksIFwNCi0rICAgIAkiKCYob2JqZWN0Y2xh
c3M9cG9zaXhBY2NvdW50KShvYmplY3RjbGFzcz1sZGFwUHVibGljS2V5KSh1aWQ9JXMpJXMp
IiwgXA0KLSsJcHduYW1lLCAoY3VzdG9tZmlsdGVyICE9IE5VTEwgPyBjdXN0b21maWx0ZXIg
OiAiIikpDQotKw0KLSsvKiBzb21lIHBvcnRhYmxlIGFuZCB3b3JraW5nIHRva2VuaXplciwg
bGFtZSB0aG91Z2ggKi8NCi0rc3RhdGljIGludCB0b2tlbml6ZShjaGFyICoqIG8sIHNpemVf
dCBzaXplLCBjaGFyICogaW5wdXQpIHsNCi0rICAgIHVuc2lnbmVkIGludCBpID0gMCwgbnVt
Ow0KLSsgICAgY29uc3QgY2hhciAqIGNoYXJzZXQgPSAiIFx0IjsNCi0rICAgIGNoYXIgKiBw
dHIgPSBpbnB1dDsNCi0rDQotKyAgICAvKiBsZWFkaW5nIHdoaXRlIHNwYWNlcyBhcmUgaWdu
b3JlZCAqLw0KLSsgICAgbnVtID0gc3Ryc3BuKHB0ciwgY2hhcnNldCk7DQotKyAgICBwdHIg
Kz0gbnVtOw0KLSsNCi0rICAgIHdoaWxlICgobnVtID0gc3RyY3NwbihwdHIsIGNoYXJzZXQp
KSkgew0KLSsgICAgICAgIGlmIChpIDwgc2l6ZS0xKSB7DQotKyAgICAgICAgICAgIG9baSsr
XSA9IHB0cjsNCi0rICAgICAgICAgICAgcHRyICs9IG51bTsNCi0rICAgICAgICAgICAgaWYg
KCpwdHIpDQotKyAgICAgICAgICAgICAgICAqcHRyKysgPSAnXDAnOw0KLSsgICAgICAgIH0N
Ci0rICAgIH0NCi0rICAgIG9baV0gPSBOVUxMOw0KLSsgICAgcmV0dXJuIFNVQ0NFU1M7DQot
K30NCi0rDQotK3ZvaWQgbGRhcF9jbG9zZShsZGFwX29wdF90ICogbGRhcCkgew0KLSsNCi0r
ICAgIGlmICghbGRhcCkNCi0rICAgICAgICByZXR1cm47DQotKw0KLSsgICAgaWYgKCBsZGFw
X3VuYmluZF9leHQobGRhcC0+bGQsIE5VTEwsIE5VTEwpIDwgMCkNCi0rCWxkYXBfcGVycm9y
KGxkYXAtPmxkLCAibGRhcF91bmJpbmQoKSIpOw0KLSsNCi0rICAgIGxkYXAtPmxkID0gTlVM
TDsNCi0rICAgIEZMQUdfU0VUX0RJU0NPTk5FQ1RFRChsZGFwLT5mbGFncyk7DQotKw0KLSsg
ICAgcmV0dXJuOw0KLSt9DQotKw0KLSsvKiBpbml0ICYmIGJpbmQgKi8NCi0raW50IGxkYXBf
Y29ubmVjdChsZGFwX29wdF90ICogbGRhcCkgew0KLSsgICAgaW50IHZlcnNpb24gPSBMREFQ
X1ZFUlNJT04zOw0KLSsNCi0rICAgIGlmICghbGRhcC0+c2VydmVycykNCi0rICAgICAgICBy
ZXR1cm4gRkFJTFVSRTsNCi0rDQotKyAgICAvKiBDb25uZWN0aW9uIEluaXQgYW5kIHNldHVw
ICovDQotKyAgICBsZGFwLT5sZCA9IGxkYXBfaW5pdChsZGFwLT5zZXJ2ZXJzLCBMREFQX1BP
UlQpOw0KLSsgICAgaWYgKCFsZGFwLT5sZCkgew0KLSsgICAgICAgIGxkYXBfcGVycm9yKGxk
YXAtPmxkLCAibGRhcF9pbml0KCkiKTsNCi0rICAgICAgICByZXR1cm4gRkFJTFVSRTsNCi0r
ICAgIH0NCi0rDQotKyAgICBpZiAoIGxkYXBfc2V0X29wdGlvbihsZGFwLT5sZCwgTERBUF9P
UFRfUFJPVE9DT0xfVkVSU0lPTiwgJnZlcnNpb24pICE9IExEQVBfT1BUX1NVQ0NFU1MpIHsN
Ci0rICAgICAgICBsZGFwX3BlcnJvcihsZGFwLT5sZCwgImxkYXBfc2V0X29wdGlvbihMREFQ
X09QVF9QUk9UT0NPTF9WRVJTSU9OKSIpOw0KLSsgICAgICAgIHJldHVybiBGQUlMVVJFOw0K
LSsgICAgfQ0KLSsNCi0rICAgIC8qIFRpbWVvdXRzIHNldHVwICovDQotKyAgICBpZiAobGRh
cF9zZXRfb3B0aW9uKGxkYXAtPmxkLCBMREFQX09QVF9ORVRXT1JLX1RJTUVPVVQsICZsZGFw
LT5iX3RpbWVvdXQpICE9IExEQVBfU1VDQ0VTUykgew0KLSsgICAgICAgIGxkYXBfcGVycm9y
KGxkYXAtPmxkLCAibGRhcF9zZXRfb3B0aW9uKExEQVBfT1BUX05FVFdPUktfVElNRU9VVCki
KTsNCi0rICAgIH0NCi0rICAgIGlmIChsZGFwX3NldF9vcHRpb24obGRhcC0+bGQsIExEQVBf
T1BUX1RJTUVPVVQsICZsZGFwLT5zX3RpbWVvdXQpICE9IExEQVBfU1VDQ0VTUykgew0KLSsg
ICAgICAgIGxkYXBfcGVycm9yKGxkYXAtPmxkLCAibGRhcF9zZXRfb3B0aW9uKExEQVBfT1BU
X1RJTUVPVVQpIik7DQotKyAgICB9DQotKw0KLSsgICAgLyogVExTIHN1cHBvcnQgKi8NCi0r
ICAgIGlmICggKGxkYXAtPnRscyA9PSAtMSkgfHwgKGxkYXAtPnRscyA9PSAxKSApIHsNCi0r
ICAgICAgICBpZiAobGRhcF9zdGFydF90bHNfcyhsZGFwLT5sZCwgTlVMTCwgTlVMTCApICE9
IExEQVBfU1VDQ0VTUykgew0KLSsgICAgICAgICAgICAvKiBmYWlsZWQgdGhlbiByZWluaXQg
dGhlIGluaXRpYWwgY29ubmVjdCAqLw0KLSsgICAgICAgICAgICBsZGFwX3BlcnJvcihsZGFw
LT5sZCwgImxkYXBfY29ubmVjdDogKFRMUykgbGRhcF9zdGFydF90bHMoKSIpOw0KLSsgICAg
ICAgICAgICBpZiAobGRhcC0+dGxzID09IDEpDQotKyAgICAgICAgICAgICAgICByZXR1cm4g
RkFJTFVSRTsNCi0rDQotKyAgICAgICAgICAgIGxkYXAtPmxkID0gbGRhcF9pbml0KGxkYXAt
PnNlcnZlcnMsIExEQVBfUE9SVCk7DQotKyAgICAgICAgICAgIGlmICghbGRhcC0+bGQpIHsg
DQotKyAgICAgICAgICAgICAgICBsZGFwX3BlcnJvcihsZGFwLT5sZCwgImxkYXBfaW5pdCgp
Iik7DQotKyAgICAgICAgICAgICAgICByZXR1cm4gRkFJTFVSRTsNCi0rICAgICAgICAgICAg
fQ0KLSsNCi0rICAgICAgICAgICAgaWYgKCBsZGFwX3NldF9vcHRpb24obGRhcC0+bGQsIExE
QVBfT1BUX1BST1RPQ09MX1ZFUlNJT04sICZ2ZXJzaW9uKSAhPSBMREFQX09QVF9TVUNDRVNT
KSB7DQotKyAgICAgICAgICAgICAgICAgbGRhcF9wZXJyb3IobGRhcC0+bGQsICJsZGFwX3Nl
dF9vcHRpb24oKSIpOw0KLSsgICAgICAgICAgICAgICAgIHJldHVybiBGQUlMVVJFOw0KLSsg
ICAgICAgICAgICB9DQotKyAgICAgICAgfQ0KLSsgICAgfQ0KLSsNCi0rDQotKyAgICBpZiAo
IGxkYXBfc2ltcGxlX2JpbmRfcyhsZGFwLT5sZCwgbGRhcC0+YmluZGRuLCBsZGFwLT5iaW5k
cHcpICE9IExEQVBfU1VDQ0VTUykgew0KLSsgICAgICAgIGxkYXBfcGVycm9yKGxkYXAtPmxk
LCAibGRhcF9zaW1wbGVfYmluZF9zKCkiKTsNCi0rICAgICAgICByZXR1cm4gRkFJTFVSRTsN
Ci0rICAgIH0NCi0rDQotKyAgICAvKiBzYXlzIGl0IGlzIGNvbm5lY3RlZCAqLw0KLSsgICAg
RkxBR19TRVRfQ09OTkVDVEVEKGxkYXAtPmZsYWdzKTsNCi0rDQotKyAgICByZXR1cm4gU1VD
Q0VTUzsNCi0rfQ0KLSsNCi0rLyogbXVzdCBmcmVlIGFsbG9jYXRlZCByZXNzb3VyY2UgKi8N
Ci0rc3RhdGljIGNoYXIgKiBsZGFwX2J1aWxkX2hvc3QoY2hhciAqaG9zdCwgaW50IHBvcnQp
IHsNCi0rICAgIHVuc2lnbmVkIGludCBzaXplID0gc3RybGVuKGhvc3QpKzExOw0KLSsgICAg
Y2hhciAqIGggPSAoY2hhciAqKSBjYWxsb2MgKHNpemUsIHNpemVvZihjaGFyKSk7DQotKyAg
ICBpbnQgcmM7DQotKyAgICBpZiAoIWgpDQotKyAgICAgICAgIHJldHVybiBOVUxMOw0KLSsN
Ci0rICAgIHJjID0gc25wcmludGYoaCwgc2l6ZSwgIiVzOiVkICIsIGhvc3QsIHBvcnQpOw0K
LSsgICAgaWYgKHJjID09IC0xKQ0KLSsgICAgICAgIHJldHVybiBOVUxMOw0KLSsgICAgcmV0
dXJuIGg7DQotK30NCi0rDQotK3N0YXRpYyBpbnQgbGRhcF9jb3VudF9ncm91cChjb25zdCBj
aGFyICogaW5wdXQpIHsNCi0rICAgIGNvbnN0IGNoYXIgKiBjaGFyc2V0ID0gIiBcdCI7DQot
KyAgICBjb25zdCBjaGFyICogcHRyID0gaW5wdXQ7DQotKyAgICB1bnNpZ25lZCBpbnQgY291
bnQgPSAwOw0KLSsgICAgdW5zaWduZWQgaW50IG51bTsNCi0rDQotKyAgICBudW0gPSBzdHJz
cG4ocHRyLCBjaGFyc2V0KTsNCi0rICAgIHB0ciArPSBudW07DQotKw0KLSsgICAgd2hpbGUg
KChudW0gPSBzdHJjc3BuKHB0ciwgY2hhcnNldCkpKSB7DQotKyAgICBjb3VudCsrOw0KLSsg
ICAgcHRyICs9IG51bTsNCi0rICAgIHB0cisrOw0KLSsgICAgfQ0KLSsNCi0rICAgIHJldHVy
biBjb3VudDsNCi0rfQ0KLSsNCi0rLyogZm9ybWF0IGZpbHRlciAqLw0KLStjaGFyICogbGRh
cF9wYXJzZV9ncm91cHMoY29uc3QgY2hhciAqIGdyb3Vwcykgew0KLSsgICAgdW5zaWduZWQg
aW50IGJ1ZmZlcl9zaXplID0gRklMVEVSX0dST1VQX1NJWkUoZ3JvdXBzKTsNCi0rICAgIGNo
YXIgKiBidWZmZXIgPSAoY2hhciAqKSBjYWxsb2MoYnVmZmVyX3NpemUsIHNpemVvZihjaGFy
KSk7DQotKyAgICBjaGFyICogZyA9IE5VTEw7DQotKyAgICBjaGFyICogZ2FycmF5WzMyXTsN
Ci0rICAgIHVuc2lnbmVkIGludCBpID0gMDsNCi0rDQotKyAgICBpZiAoKCFncm91cHMpfHwo
IWJ1ZmZlcikpDQotKyAgICAgICAgcmV0dXJuIE5VTEw7DQotKw0KLSsgICAgZyA9IHN0cmR1
cChncm91cHMpOw0KLSsgICAgaWYgKCFnKSB7DQotKyAgICAgICAgZnJlZShidWZmZXIpOw0K
LSsgICAgICAgIHJldHVybiBOVUxMOw0KLSsgICAgfQ0KLSsNCi0rICAgIC8qIGZpcnN0IHNl
cGFyYXRlIGludG8gbiB0b2tlbnMgKi8NCi0rICAgIGlmICggdG9rZW5pemUoZ2FycmF5LCBz
aXplb2YoZ2FycmF5KS9zaXplb2YoKmdhcnJheSksIGcpIDwgMCkgew0KLSsgICAgICAgIGZy
ZWUoZyk7DQotKyAgICAgICAgZnJlZShidWZmZXIpOw0KLSsgICAgICAgIHJldHVybiBOVUxM
Ow0KLSsgICAgfQ0KLSsNCi0rICAgIC8qIGJ1aWxkIHRoZSBmaW5hbCBmaWx0ZXIgZm9ybWF0
ICovDQotKyAgICBzdHJsY2F0KGJ1ZmZlciwgRklMVEVSX0dST1VQX1BSRUZJWCwgYnVmZmVy
X3NpemUpOw0KLSsgICAgc3RybGNhdChidWZmZXIsIEZJTFRFUl9PUl9QUkVGSVgsIGJ1ZmZl
cl9zaXplKTsNCi0rICAgIGkgPSAwOw0KLSsgICAgd2hpbGUgKGdhcnJheVtpXSkgew0KLSsg
ICAgICAgIHN0cmxjYXQoYnVmZmVyLCBGSUxURVJfQ05fUFJFRklYLCBidWZmZXJfc2l6ZSk7
DQotKyAgICAgICAgc3RybGNhdChidWZmZXIsIGdhcnJheVtpXSwgYnVmZmVyX3NpemUpOw0K
LSsgICAgICAgIHN0cmxjYXQoYnVmZmVyLCBGSUxURVJfQ05fU1VGRklYLCBidWZmZXJfc2l6
ZSk7DQotKyAgICAgICAgaSsrOw0KLSsgICAgfQ0KLSsgICAgc3RybGNhdChidWZmZXIsIEZJ
TFRFUl9PUl9TVUZGSVgsIGJ1ZmZlcl9zaXplKTsNCi0rICAgIHN0cmxjYXQoYnVmZmVyLCBG
SUxURVJfVUlEX0ZPUk1BVCwgYnVmZmVyX3NpemUpOw0KLSsgICAgc3RybGNhdChidWZmZXIs
IEZJTFRFUl9HUk9VUF9TVUZGSVgsIGJ1ZmZlcl9zaXplKTsNCi0rDQotKyAgICBmcmVlKGcp
Ow0KLSsgICAgcmV0dXJuIGJ1ZmZlcjsNCi0rfQ0KLSsNCi0rLyogYSBiaXQgZGlydHkgYnV0
IGxlYWsgZnJlZSAgKi8NCi0rY2hhciAqIGxkYXBfcGFyc2Vfc2VydmVycyhjb25zdCBjaGFy
ICogc2VydmVycykgew0KLSsgICAgY2hhciAqIHMgPSBOVUxMOw0KLSsgICAgY2hhciAqIHRt
cCA9IE5VTEwsICp1cmxzWzMyXTsNCi0rICAgIHVuc2lnbmVkIGludCBudW0gPSAwICwgaSA9
IDAgLCBhc2l6ZSA9IDA7DQotKyAgICBMREFQVVJMRGVzYyAqdXJsZFszMl07DQotKw0KLSsg
ICAgaWYgKCFzZXJ2ZXJzKQ0KLSsgICAgICAgIHJldHVybiBOVUxMOw0KLSsNCi0rICAgIC8q
IGxvY2FsIGNvcHkgb2YgdGhlIGFyZyAqLw0KLSsgICAgcyA9IHN0cmR1cChzZXJ2ZXJzKTsN
Ci0rICAgIGlmICghcykNCi0rICAgICAgICByZXR1cm4gTlVMTDsNCi0rDQotKyAgICAvKiBm
aXJzdCBzZXBhcmF0ZSBpbnRvIFVSTCB0b2tlbnMgKi8NCi0rICAgIGlmICggdG9rZW5pemUo
dXJscywgc2l6ZW9mKHVybHMpL3NpemVvZigqdXJscyksIHMpIDwgMCkNCi0rICAgICAgICBy
ZXR1cm4gTlVMTDsNCi0rDQotKyAgICBpID0gMDsNCi0rICAgIHdoaWxlICh1cmxzW2ldKSB7
DQotKyAgICAgICAgaWYgKCEgbGRhcF9pc19sZGFwX3VybCh1cmxzW2ldKSB8fA0KLSsgICAg
ICAgICAgIChsZGFwX3VybF9wYXJzZSh1cmxzW2ldLCAmdXJsZFtpXSkgIT0gMCkpIHsNCi0r
ICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOw0KLSsgICAgICAgIH0NCi0rICAgICAgICBp
Kys7DQotKyAgICB9DQotKw0KLSsgICAgLyogbm93IGZyZWUocykgKi8NCi0rICAgIGZyZWUg
KHMpOw0KLSsNCi0rICAgIC8qIGhvdyBtdWNoIG1lbW9yeSBkbyB3ZSBuZWVkICovDQotKyAg
ICBudW0gPSBpOw0KLSsgICAgZm9yIChpID0gMCA7IGkgPCBudW0gOyBpKyspDQotKyAgICAg
ICAgYXNpemUgKz0gc3RybGVuKHVybGRbaV0tPmx1ZF9ob3N0KSsxMTsNCi0rDQotKyAgICAv
KiBhbGxvYyAqLw0KLSsgICAgcyA9IChjaGFyICopIGNhbGxvYyggYXNpemUrMSAsIHNpemVv
ZihjaGFyKSk7DQotKyAgICBpZiAoIXMpIHsNCi0rICAgICAgICBmb3IgKGkgPSAwIDsgaSA8
IG51bSA7IGkrKykNCi0rICAgICAgICAgICAgbGRhcF9mcmVlX3VybGRlc2ModXJsZFtpXSk7
DQotKyAgICAgICAgcmV0dXJuIE5VTEw7DQotKyAgICB9DQotKw0KLSsgICAgLyogdGhlbiBi
dWlsZCB0aGUgZmluYWwgaG9zdCBzdHJpbmcgKi8NCi0rICAgIGZvciAoaSA9IDAgOyBpIDwg
bnVtIDsgaSsrKSB7DQotKyAgICAgICAgLyogYnVpbHQgaG9zdCBwYXJ0ICovDQotKyAgICAg
ICAgdG1wID0gbGRhcF9idWlsZF9ob3N0KHVybGRbaV0tPmx1ZF9ob3N0LCB1cmxkW2ldLT5s
dWRfcG9ydCk7DQotKyAgICAgICAgc3RybmNhdChzLCB0bXAsIHN0cmxlbih0bXApKTsNCi0r
ICAgICAgICBsZGFwX2ZyZWVfdXJsZGVzYyh1cmxkW2ldKTsNCi0rICAgICAgICBmcmVlKHRt
cCk7DQotKyAgICB9DQotKw0KLSsgICAgcmV0dXJuIHM7DQotK30NCi0rDQotK3ZvaWQgbGRh
cF9vcHRpb25zX3ByaW50KGxkYXBfb3B0X3QgKiBsZGFwKSB7DQotKyAgICBkZWJ1ZygibGRh
cCBvcHRpb25zOiIpOw0KLSsgICAgZGVidWcoInNlcnZlcnM6ICVzIiwgbGRhcC0+c2VydmVy
cyk7DQotKyAgICBpZiAobGRhcC0+dV9iYXNlZG4pDQotKyAgICAgICAgZGVidWcoInVzZXIg
YmFzZWRuOiAlcyIsIGxkYXAtPnVfYmFzZWRuKTsNCi0rICAgIGlmIChsZGFwLT5nX2Jhc2Vk
bikNCi0rICAgICAgICBkZWJ1ZygiZ3JvdXAgYmFzZWRuOiAlcyIsIGxkYXAtPmdfYmFzZWRu
KTsNCi0rICAgIGlmIChsZGFwLT5iaW5kZG4pDQotKyAgICAgICAgZGVidWcoImJpbmRkbjog
JXMiLCBsZGFwLT5iaW5kZG4pOw0KLSsgICAgaWYgKGxkYXAtPmJpbmRwdykNCi0rICAgICAg
ICBkZWJ1ZygiYmluZHB3OiAlcyIsIGxkYXAtPmJpbmRwdyk7DQotKyAgICBpZiAobGRhcC0+
c2dyb3VwKQ0KLSsgICAgICAgIGRlYnVnKCJncm91cDogJXMiLCBsZGFwLT5zZ3JvdXApOw0K
LSsgICAgaWYgKGxkYXAtPmZpbHRlcikNCi0rICAgICAgICBkZWJ1ZygiZmlsdGVyOiAlcyIs
IGxkYXAtPmZpbHRlcik7DQotK30NCi0rDQotK3ZvaWQgbGRhcF9vcHRpb25zX2ZyZWUobGRh
cF9vcHRfdCAqIGwpIHsNCi0rICAgIGlmICghbCkNCi0rICAgICAgICByZXR1cm47DQotKyAg
ICBpZiAobC0+c2VydmVycykNCi0rICAgICAgICBmcmVlKGwtPnNlcnZlcnMpOw0KLSsgICAg
aWYgKGwtPnVfYmFzZWRuKQ0KLSsgICAgICAgIGZyZWUobC0+dV9iYXNlZG4pOw0KLSsgICAg
aWYgKGwtPmdfYmFzZWRuKQ0KLSsgICAgICAgIGZyZWUobC0+Z19iYXNlZG4pOw0KLSsgICAg
aWYgKGwtPmJpbmRkbikNCi0rICAgICAgICBmcmVlKGwtPmJpbmRkbik7DQotKyAgICBpZiAo
bC0+YmluZHB3KQ0KLSsgICAgICAgIGZyZWUobC0+YmluZHB3KTsNCi0rICAgIGlmIChsLT5z
Z3JvdXApDQotKyAgICAgICAgZnJlZShsLT5zZ3JvdXApOw0KLSsgICAgaWYgKGwtPmZncm91
cCkNCi0rICAgICAgICBmcmVlKGwtPmZncm91cCk7DQotKyAgICBpZiAobC0+ZmlsdGVyKQ0K
LSsgICAgICAgIGZyZWUobC0+ZmlsdGVyKTsNCi0rICAgIGlmIChsLT5sX2NvbmYpDQotKyAg
ICAgICAgZnJlZShsLT5sX2NvbmYpOw0KLSsgICAgZnJlZShsKTsNCi0rfQ0KLSsNCi0rLyog
ZnJlZSBrZXlzICovDQotK3ZvaWQgbGRhcF9rZXlzX2ZyZWUobGRhcF9rZXlfdCAqIGspIHsN
Ci0rICAgIGxkYXBfdmFsdWVfZnJlZV9sZW4oay0+a2V5cyk7DQotKyAgICBmcmVlKGspOw0K
LSsgICAgcmV0dXJuOw0KLSt9DQotKw0KLStsZGFwX2tleV90ICogbGRhcF9nZXR1c2Vya2V5
KGxkYXBfb3B0X3QgKmwsIGNvbnN0IGNoYXIgKiB1c2VyKSB7DQotKyAgICBsZGFwX2tleV90
ICogayA9IChsZGFwX2tleV90ICopIGNhbGxvYyAoMSwgc2l6ZW9mKGxkYXBfa2V5X3QpKTsN
Ci0rICAgIExEQVBNZXNzYWdlICpyZXMsICplOw0KLSsgICAgY2hhciAqIGZpbHRlcjsNCi0r
ICAgIGludCBpOw0KLSsNCi0rICAgIGlmICgoIWspIHx8ICghbCkpDQotKyAgICAgICAgIHJl
dHVybiBOVUxMOw0KLSsNCi0rICAgIC8qIEFtIGkgc3RpbGwgY29ubmVjdGVkID8gUkVUUlkg
biB0aW1lcyAqLw0KLSsgICAgLyogWFhYIFRPRE86IHNldHVwIHNvbWUgY29uZiB2YWx1ZSBm
b3IgcmV0cnlpbmcgKi8NCi0rICAgIGlmICghKGwtPmZsYWdzICYgRkxBR19DT05ORUNURUQp
KQ0KLSsgICAgICAgIGZvciAoaSA9IDAgOyBpIDwgMiA7IGkrKykNCi0rICAgICAgICAgICAg
aWYgKGxkYXBfY29ubmVjdChsKSA9PSAwKQ0KLSsgICAgICAgICAgICAgICAgYnJlYWs7DQot
Kw0KLSsgICAgLyogcXVpY2sgY2hlY2sgZm9yIGF0dGVtcHRzIHRvIGJlIGV2aWwgKi8NCi0r
ICAgIGlmICgoc3RyY2hyKHVzZXIsICcoJykgIT0gTlVMTCkgfHwgKHN0cmNocih1c2VyLCAn
KScpICE9IE5VTEwpIHx8DQotKyAgICAgICAgKHN0cmNocih1c2VyLCAnKicpICE9IE5VTEwp
IHx8IChzdHJjaHIodXNlciwgJ1xcJykgIT0gTlVMTCkpDQotKyAgICAgICAgcmV0dXJuIE5V
TEw7DQotKw0KLSsgICAgLyogYnVpbGQgIGZpbHRlciBmb3IgTERBUCByZXF1ZXN0ICovDQot
KyAgICBSRVFVRVNUX1VTRVIoZmlsdGVyLCB1c2VyLCBsLT5maWx0ZXIpOw0KLSsNCi0rICAg
IGlmICggbGRhcF9zZWFyY2hfc3QoIGwtPmxkLA0KLSsgICAgICAgIGwtPnVfYmFzZWRuLA0K
LSsgICAgICAgIExEQVBfU0NPUEVfU1VCVFJFRSwNCi0rICAgICAgICBmaWx0ZXIsDQotKyAg
ICAgICAgYXR0cnMsIDAsICZsLT5zX3RpbWVvdXQsICZyZXMgKSAhPSBMREFQX1NVQ0NFU1Mp
IHsNCi0rICAgICAgICANCi0rICAgICAgICBsZGFwX3BlcnJvcihsLT5sZCwgImxkYXBfc2Vh
cmNoX3N0KCkiKTsNCi0rDQotKyAgICAgICAgZnJlZShmaWx0ZXIpOw0KLSsgICAgICAgIGZy
ZWUoayk7DQotKw0KLSsgICAgICAgIC8qIFhYWCBlcnJvciBvbiBzZWFyY2gsIHRpbWVvdXQg
ZXRjLi4gY2xvc2UgYXNrIGZvciByZWNvbm5lY3QgKi8NCi0rICAgICAgICBsZGFwX2Nsb3Nl
KGwpOw0KLSsNCi0rICAgICAgICByZXR1cm4gTlVMTDsNCi0rICAgIH0gDQotKw0KLSsgICAg
LyogZnJlZSAqLw0KLSsgICAgZnJlZShmaWx0ZXIpOw0KLSsNCi0rICAgIC8qIGNoZWNrIGlm
IGFueSByZXN1bHRzICovDQotKyAgICBpID0gbGRhcF9jb3VudF9lbnRyaWVzKGwtPmxkLHJl
cyk7DQotKyAgICBpZiAoaSA8PSAwKSB7DQotKyAgICAgICAgbGRhcF9tc2dmcmVlKHJlcyk7
DQotKyAgICAgICAgZnJlZShrKTsNCi0rICAgICAgICByZXR1cm4gTlVMTDsNCi0rICAgIH0N
Ci0rDQotKyAgICBpZiAoaSA+IDEpDQotKyAgICAgICAgZGVidWcoIltMREFQXSBkdXBsaWNh
dGUgZW50cmllcywgdXNpbmcgdGhlIEZJUlNUIGVudHJ5IHJldHVybmVkIik7DQotKw0KLSsg
ICAgZSA9IGxkYXBfZmlyc3RfZW50cnkobC0+bGQsIHJlcyk7DQotKyAgICBrLT5rZXlzID0g
bGRhcF9nZXRfdmFsdWVzX2xlbihsLT5sZCwgZSwgUFVCS0VZQVRUUik7DQotKyAgICBrLT5u
dW0gPSBsZGFwX2NvdW50X3ZhbHVlc19sZW4oay0+a2V5cyk7DQotKw0KLSsgICAgbGRhcF9t
c2dmcmVlKHJlcyk7DQotKyAgICByZXR1cm4gazsNCi0rfQ0KLSsNCi0rDQotKy8qIC0xIGlm
IHRyb3VibGUNCi0rICAgMCBpZiB1c2VyIGlzIE5PVCBtZW1iZXIgb2YgY3VycmVudCBzZXJ2
ZXIgZ3JvdXANCi0rICAgMSBpZiB1c2VyIElTIE1FTUJFUiBvZiBjdXJyZW50IHNlcnZlciBn
cm91cCANCi0rICovDQotK2ludCBsZGFwX2lzbWVtYmVyKGxkYXBfb3B0X3QgKiBsLCBjb25z
dCBjaGFyICogdXNlcikgew0KLSsgICAgTERBUE1lc3NhZ2UgKnJlczsNCi0rICAgIGNoYXIg
KiBmaWx0ZXI7DQotKyAgICBpbnQgaTsNCi0rDQotKyAgICBpZiAoKCFsLT5zZ3JvdXApIHx8
ICEobC0+Z19iYXNlZG4pKQ0KLSsgICAgICAgIHJldHVybiAxOw0KLSsNCi0rICAgIC8qIEFt
IGkgc3RpbGwgY29ubmVjdGVkID8gUkVUUlkgbiB0aW1lcyAqLw0KLSsgICAgLyogWFhYIFRP
RE86IHNldHVwIHNvbWUgY29uZiB2YWx1ZSBmb3IgcmV0cnlpbmcgKi8NCi0rICAgIGlmICgh
KGwtPmZsYWdzICYgRkxBR19DT05ORUNURUQpKSANCi0rICAgICAgICBmb3IgKGkgPSAwIDsg
aSA8IDIgOyBpKyspDQotKyAgICAgICAgICAgIGlmIChsZGFwX2Nvbm5lY3QobCkgPT0gMCkN
Ci0rICAgICAgICAgICAgICAgICBicmVhazsNCi0rDQotKyAgICAvKiBxdWljayBjaGVjayBm
b3IgYXR0ZW1wdHMgdG8gYmUgZXZpbCAqLw0KLSsgICAgaWYgKChzdHJjaHIodXNlciwgJygn
KSAhPSBOVUxMKSB8fCAoc3RyY2hyKHVzZXIsICcpJykgIT0gTlVMTCkgfHwNCi0rICAgICAg
ICAoc3RyY2hyKHVzZXIsICcqJykgIT0gTlVMTCkgfHwgKHN0cmNocih1c2VyLCAnXFwnKSAh
PSBOVUxMKSkNCi0rICAgICAgICByZXR1cm4gRkFJTFVSRTsNCi0rDQotKyAgICAvKiBidWls
ZCBmaWx0ZXIgZm9yIExEQVAgcmVxdWVzdCAqLw0KLSsgICAgUkVRVUVTVF9HUk9VUChmaWx0
ZXIsIGwtPmZncm91cCwgdXNlcik7DQotKw0KLSsgICAgaWYgKGxkYXBfc2VhcmNoX3N0KCBs
LT5sZCwgDQotKyAgICAgICAgbC0+Z19iYXNlZG4sDQotKyAgICAgICAgTERBUF9TQ09QRV9T
VUJUUkVFLA0KLSsgICAgICAgIGZpbHRlciwNCi0rICAgICAgICBOVUxMLCAwLCAmbC0+c190
aW1lb3V0LCAmcmVzKSAhPSBMREFQX1NVQ0NFU1MpIHsNCi0rICAgIA0KLSsgICAgICAgIGxk
YXBfcGVycm9yKGwtPmxkLCAibGRhcF9zZWFyY2hfc3QoKSIpOw0KLSsNCi0rICAgICAgICBm
cmVlKGZpbHRlcik7DQotKw0KLSsgICAgICAgIC8qIFhYWCBlcnJvciBvbiBzZWFyY2gsIHRp
bWVvdXQgZXRjLi4gY2xvc2UgYXNrIGZvciByZWNvbm5lY3QgKi8NCi0rICAgICAgICBsZGFw
X2Nsb3NlKGwpOw0KLSsNCi0rICAgICAgICByZXR1cm4gRkFJTFVSRTsNCi0rICAgIH0NCi0r
DQotKyAgICBmcmVlKGZpbHRlcik7DQotKw0KLSsgICAgLyogY2hlY2sgaWYgYW55IHJlc3Vs
dHMgKi8NCi0rICAgIGlmIChsZGFwX2NvdW50X2VudHJpZXMobC0+bGQsIHJlcykgPiAwKSB7
DQotKyAgICAgICAgbGRhcF9tc2dmcmVlKHJlcyk7DQotKyAgICAgICAgcmV0dXJuIDE7DQot
KyAgICB9DQotKw0KLSsgICAgbGRhcF9tc2dmcmVlKHJlcyk7DQotKyAgICByZXR1cm4gMDsN
Ci0rfQ0KLSsNCi0rLyoNCi0rICogbGRhcC5jb25mIHNpbXBsZSBwYXJzZXINCi0rICogWFhY
IFRPRE86ICBzYW5pdHkgY2hlY2tzDQotKyAqIG11c3QgZWl0aGVyDQotKyAqIC0gZnJlZSB0
aGUgcHJldmlvdXMgbGRhcF9vcHRfYmVmb3JlIHJlcGxhY2luZyBlbnRyaWVzDQotKyAqIC0g
ZnJlZSBlYWNoIG5lY2Vzc2FyeSBwcmV2aW91c2x5IHBhcnNlZCBlbGVtZW50cw0KLSsgKiBy
ZXQ6DQotKyAqIC0xIG9uIEZBSUxVUkUsIDAgb24gU1VDQ0VTUw0KLSsgKi8NCi0raW50IGxk
YXBfcGFyc2VfbGNvbmYobGRhcF9vcHRfdCAqIGwpIHsNCi0rICAgIEZJTEUgKiBsY2Q7IC8q
IGxkYXAuY29uZiBkZXNjcmlwdG9yICovDQotKyAgICBjaGFyIGJ1ZltCVUZTSVpdOw0KLSsg
ICAgY2hhciAqIHMgPSBOVUxMLCAqIGsgPSBOVUxMLCAqIHYgPSBOVUxMOw0KLSsgICAgaW50
IGxpLCBsZW47DQotKw0KLSsgICAgbGNkID0gZm9wZW4gKGwtPmxfY29uZiwgInIiKTsNCi0r
ICAgIGlmIChsY2QgPT0gTlVMTCkgew0KLSsgICAgICAgIC8qIGRlYnVnKCJDYW5ub3Qgb3Bl
biAlcyIsIGwtPmxfY29uZik7ICovDQotKyAgICAgICAgcGVycm9yKCJsZGFwX3BhcnNlX2xj
b25mKCkiKTsNCi0rICAgICAgICByZXR1cm4gRkFJTFVSRTsNCi0rICAgIH0NCi0rICAgIA0K
LSsgICAgd2hpbGUgKGZnZXRzIChidWYsIHNpemVvZiAoYnVmKSwgbGNkKSAhPSBOVUxMKSB7
DQotKw0KLSsgICAgICAgIGlmICgqYnVmID09ICdcbicgfHwgKmJ1ZiA9PSAnIycpDQotKyAg
ICAgICAgICAgIGNvbnRpbnVlOw0KLSsNCi0rICAgICAgICBrID0gYnVmOw0KLSsgICAgICAg
IHYgPSBrOw0KLSsgICAgICAgIHdoaWxlICgqdiAhPSAnXDAnICYmICp2ICE9ICcgJyAmJiAq
diAhPSAnXHQnKQ0KLSsgICAgICAgICAgICB2Kys7DQotKw0KLSsgICAgICAgIGlmICgqdiA9
PSAnXDAnKQ0KLSsgICAgICAgICAgICBjb250aW51ZTsNCi0rDQotKyAgICAgICAgKih2Kysp
ID0gJ1wwJzsNCi0rDQotKyAgICAgICAgd2hpbGUgKCp2ID09ICcgJyB8fCAqdiA9PSAnXHQn
KQ0KLSsgICAgICAgICAgICB2Kys7DQotKw0KLSsgICAgICAgIGxpID0gc3RybGVuICh2KSAt
IDE7DQotKyAgICAgICAgd2hpbGUgKHZbbGldID09ICcgJyB8fCB2W2xpXSA9PSAnXHQnIHx8
IHZbbGldID09ICdcbicpDQotKyAgICAgICAgICAgIC0tbGk7DQotKyAgICAgICAgdltsaSAr
IDFdID0gJ1wwJzsNCi0rDQotKyAgICAgICAgaWYgKCFzdHJjYXNlY21wIChrLCAidXJpIikp
IHsNCi0rICAgICAgICAgICAgaWYgKChsLT5zZXJ2ZXJzID0gbGRhcF9wYXJzZV9zZXJ2ZXJz
KHYpKSA9PSBOVUxMKSB7DQotKyAgICAgICAgICAgICAgICBmYXRhbCgiZXJyb3IgaW4gbGRh
cCBzZXJ2ZXJzIik7DQotKyAgICAgICAgICAgIHJldHVybiBGQUlMVVJFOw0KLSsgICAgICAg
ICAgICB9DQotKw0KLSsgICAgICAgIH0NCi0rICAgICAgICBlbHNlIGlmICghc3RyY2FzZWNt
cCAoaywgImJhc2UiKSkgeyANCi0rICAgICAgICAgICAgcyA9IHN0cmNociAodiwgJz8nKTsN
Ci0rICAgICAgICAgICAgaWYgKHMgIT0gTlVMTCkgew0KLSsgICAgICAgICAgICAgICAgbGVu
ID0gcyAtIHY7DQotKyAgICAgICAgICAgICAgICBsLT51X2Jhc2VkbiA9IG1hbGxvYyAobGVu
ICsgMSk7DQotKyAgICAgICAgICAgICAgICBzdHJuY3B5IChsLT51X2Jhc2VkbiwgdiwgbGVu
KTsNCi0rICAgICAgICAgICAgICAgIGwtPnVfYmFzZWRuW2xlbl0gPSAnXDAnOw0KLSsgICAg
ICAgICAgICB9IGVsc2Ugew0KLSsgICAgICAgICAgICAgICAgbC0+dV9iYXNlZG4gPSBzdHJk
dXAgKHYpOw0KLSsgICAgICAgICAgICB9DQotKyAgICAgICAgfQ0KLSsgICAgICAgIGVsc2Ug
aWYgKCFzdHJjYXNlY21wIChrLCAiYmluZGRuIikpIHsNCi0rICAgICAgICAgICAgbC0+Ymlu
ZGRuID0gc3RyZHVwICh2KTsNCi0rICAgICAgICB9DQotKyAgICAgICAgZWxzZSBpZiAoIXN0
cmNhc2VjbXAgKGssICJiaW5kcHciKSkgew0KLSsgICAgICAgICAgICBsLT5iaW5kcHcgPSBz
dHJkdXAgKHYpOw0KLSsgICAgICAgIH0NCi0rICAgICAgICBlbHNlIGlmICghc3RyY2FzZWNt
cCAoaywgInRpbWVsaW1pdCIpKSB7DQotKyAgICAgICAgICAgIGwtPnNfdGltZW91dC50dl9z
ZWMgPSBhdG9pICh2KTsNCi0rICAgICAgICAgICAgICAgIH0NCi0rICAgICAgICBlbHNlIGlm
ICghc3RyY2FzZWNtcCAoaywgImJpbmRfdGltZWxpbWl0IikpIHsNCi0rICAgICAgICAgICAg
bC0+Yl90aW1lb3V0LnR2X3NlYyA9IGF0b2kgKHYpOw0KLSsgICAgICAgIH0NCi0rICAgICAg
ICBlbHNlIGlmICghc3RyY2FzZWNtcCAoaywgInNzbCIpKSB7DQotKyAgICAgICAgICAgIGlm
ICghc3RyY2FzZWNtcCAodiwgInN0YXJ0X3RscyIpKQ0KLSsgICAgICAgICAgICAgICAgbC0+
dGxzID0gMTsNCi0rICAgICAgICB9DQotKyAgICB9DQotKw0KLSsgICAgZmNsb3NlIChsY2Qp
Ow0KLSsgICAgcmV0dXJuIFNVQ0NFU1M7DQotK30NCi0rDQotKyNlbmRpZiAvKiBXSVRIX0xE
QVBfUFVCS0VZICovDQotZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRl
ICcqLnJlaicgbGRhcGF1dGguaCBsZGFwYXV0aC5oDQotLS0tIGxkYXBhdXRoLmgJMTk2OS0x
Mi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDANCi0rKysgbGRhcGF1dGguaAkyMDA4LTA4
LTIzIDE1OjAyOjQ3LjAwMDAwMDAwMCAtMDcwMA0KLUBAIC0wLDAgKzEsMTI0IEBADQotKy8q
DQotKyAqICRJZDogb3BlbnNzaC1scGstNC4zcDEtMC4zLjcucGF0Y2gsdiAxLjMgMjAwNi8w
NC8xOCAxNToyOTowOSBlYXUgRXhwICQgDQotKyAqLw0KLSsNCi0rLyoNCi0rICoNCi0rICog
Q29weXJpZ2h0IChjKSAyMDA1LCBFcmljIEFVR0UgPGVhdUBwaGVhci5vcmc+DQotKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuDQotKyAqDQotKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlIG1ldDoNCi0rICoNCi0rICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KLSsgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQotKyAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgdGhlIHBoZWFyLm9yZyBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLg0KLSsgKg0KLSsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCANCi0rICogQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIA0KLSsg
KiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIA0KLSsgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyANCi0rICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCANCi0rICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCi0r
ICoNCi0rICoNCi0rICovDQotKw0KLSsjaWZuZGVmIExEQVBBVVRIX0gNCi0rI2RlZmluZSBM
REFQQVVUSF9IDQotKw0KLSsjZGVmaW5lIExEQVBfREVQUkVDQVRFRCAxDQotKw0KLSsjaW5j
bHVkZSA8c3RyaW5nLmg+DQotKyNpbmNsdWRlIDx0aW1lLmg+DQotKyNpbmNsdWRlIDxsZGFw
Lmg+DQotKyNpbmNsdWRlIDxsYmVyLmg+DQotKw0KLSsvKiB0b2tlbnMgaW4gdXNlIGZvciBj
b25maWcgKi8NCi0rI2RlZmluZSBfREVGQVVMVF9MUEtfVE9LRU4gIlVzZUxQSyINCi0rI2Rl
ZmluZSBfREVGQVVMVF9TUlZfVE9LRU4gIkxwa1NlcnZlcnMiDQotKyNkZWZpbmUgX0RFRkFV
TFRfVVNSX1RPS0VOICJMcGtVc2VyRE4iDQotKyNkZWZpbmUgX0RFRkFVTFRfR1JQX1RPS0VO
ICJMcGtHcm91cEROIg0KLSsjZGVmaW5lIF9ERUZBVUxUX0JETl9UT0tFTiAiTHBrQmluZERO
Ig0KLSsjZGVmaW5lIF9ERUZBVUxUX0JQV19UT0tFTiAiTHBrQmluZFB3Ig0KLSsjZGVmaW5l
IF9ERUZBVUxUX01ZR19UT0tFTiAiTHBrU2VydmVyR3JvdXAiDQotKyNkZWZpbmUgX0RFRkFV
TFRfRklMX1RPS0VOICJMcGtGaWx0ZXIiDQotKyNkZWZpbmUgX0RFRkFVTFRfVExTX1RPS0VO
ICJMcGtGb3JjZVRMUyINCi0rI2RlZmluZSBfREVGQVVMVF9CVElfVE9LRU4gIkxwa0JpbmRU
aW1lbGltaXQiDQotKyNkZWZpbmUgX0RFRkFVTFRfU1RJX1RPS0VOICJMcGtTZWFyY2hUaW1l
bGltaXQiDQotKyNkZWZpbmUgX0RFRkFVTFRfTERQX1RPS0VOICJMcGtMZGFwQ29uZiINCi0r
DQotKy8qIGRlZmF1bHQgb3B0aW9ucyAqLw0KLSsjZGVmaW5lIF9ERUZBVUxUX0xQS19PTiAw
DQotKyNkZWZpbmUgX0RFRkFVTFRfTFBLX1NFUlZFUlMgTlVMTA0KLSsjZGVmaW5lIF9ERUZB
VUxUX0xQS19VRE4gTlVMTA0KLSsjZGVmaW5lIF9ERUZBVUxUX0xQS19HRE4gTlVMTA0KLSsj
ZGVmaW5lIF9ERUZBVUxUX0xQS19CSU5ERE4gTlVMTA0KLSsjZGVmaW5lIF9ERUZBVUxUX0xQ
S19CSU5EUFcgTlVMTA0KLSsjZGVmaW5lIF9ERUZBVUxUX0xQS19TR1JPVVAgTlVMTA0KLSsj
ZGVmaW5lIF9ERUZBVUxUX0xQS19GSUxURVIgTlVMTA0KLSsjZGVmaW5lIF9ERUZBVUxUX0xQ
S19UTFMgLTENCi0rI2RlZmluZSBfREVGQVVMVF9MUEtfQlRJTUVPVVQgMTANCi0rI2RlZmlu
ZSBfREVGQVVMVF9MUEtfU1RJTUVPVVQgMTANCi0rI2RlZmluZSBfREVGQVVMVF9MUEtfTERQ
IE5VTEwNCi0rDQotKy8qIGZsYWdzICovDQotKyNkZWZpbmUgRkxBR19FTVBUWQkgICAgMHgw
MDAwMDAwMA0KLSsjZGVmaW5lIEZMQUdfQ09OTkVDVEVECSAgICAweDAwMDAwMDAxDQotKw0K
LSsvKiBmbGFnIG1hY3JvcyAqLw0KLSsjZGVmaW5lIEZMQUdfU0VUX0VNUFRZKHgpCQl4Jj0o
RkxBR19FTVBUWSkNCi0rI2RlZmluZSBGTEFHX1NFVF9DT05ORUNURUQoeCkJCXh8PShGTEFH
X0NPTk5FQ1RFRCkNCi0rI2RlZmluZSBGTEFHX1NFVF9ESVNDT05ORUNURUQoeCkJeCY9fihG
TEFHX0NPTk5FQ1RFRCkNCi0rDQotKy8qIGRlZmluZXMgKi8NCi0rI2RlZmluZSBGQUlMVVJF
IC0xDQotKyNkZWZpbmUgU1VDQ0VTUyAwDQotKyNkZWZpbmUgUFVCS0VZQVRUUiAic3NoUHVi
bGljS2V5Ig0KLSsNCi0rLyogDQotKyAqDQotKyAqIGRlZmluZWQgZmlsZXMgcGF0aCANCi0r
ICogKHNob3VsZCBiZSByZWxvY2F0ZWQgdG8gcGF0aG5hbWVzLmgsDQotKyAqIGlmIG9uZSBk
YXkgaXQncyBpbmNsdWRlZCB3aXRoaW4gdGhlIHRyZWUpIA0KLSsgKg0KLSsgKi8NCi0rI2Rl
ZmluZSBfUEFUSF9MREFQX0NPTkZJR19GSUxFICIvZXRjL2xkYXAuY29uZiINCi0rDQotKy8q
IHN0cnVjdHVyZXMgKi8NCi0rdHlwZWRlZiBzdHJ1Y3QgbGRhcF9vcHRpb25zIHsNCi0rICAg
IGludCBvbjsJCQkvKiBVc2UgaXQgb3IgTk9UICovDQotKyAgICBMREFQICogbGQ7CQkJLyog
TERBUCBmaWxlIGRlc2MgKi8NCi0rICAgIGNoYXIgKiBzZXJ2ZXJzOwkJLyogcGFyc2VkIHNl
cnZlcnMgZm9yIGxkYXBsaWIgZmFpbG92ZXIgaGFuZGxpbmcgKi8NCi0rICAgIGNoYXIgKiB1
X2Jhc2VkbjsJCS8qIHVzZXIgYmFzZWRuICovDQotKyAgICBjaGFyICogZ19iYXNlZG47CQkv
KiBncm91cCBiYXNlZG4gKi8NCi0rICAgIGNoYXIgKiBiaW5kZG47CQkvKiBiaW5kZG4gKi8N
Ci0rICAgIGNoYXIgKiBiaW5kcHc7CQkvKiBiaW5kIHBhc3N3b3JkICovDQotKyAgICBjaGFy
ICogc2dyb3VwOwkJLyogc2VydmVyIGdyb3VwICovDQotKyAgICBjaGFyICogZmdyb3VwOwkJ
LyogZ3JvdXAgZmlsdGVyICovDQotKyAgICBjaGFyICogZmlsdGVyOwkJLyogYWRkaXRpb25h
bCBmaWx0ZXIgKi8NCi0rICAgIGNoYXIgKiBsX2NvbmY7CQkvKiB1c2UgbGRhcC5jb25mICov
DQotKyAgICBpbnQgdGxzOwkJCS8qIFRMUyBvbmx5ICovDQotKyAgICBzdHJ1Y3QgdGltZXZh
bCBiX3RpbWVvdXQ7ICAgLyogYmluZCB0aW1lb3V0ICovDQotKyAgICBzdHJ1Y3QgdGltZXZh
bCBzX3RpbWVvdXQ7ICAgLyogc2VhcmNoIHRpbWVvdXQgKi8NCi0rICAgIHVuc2lnbmVkIGlu
dCBmbGFnczsJCS8qIG1pc2MgZmxhZ3MgKHJlY29ubmVjdGlvbiwgZnV0dXJlIHVzZT8pICov
DQotK30gbGRhcF9vcHRfdDsNCi0rDQotK3R5cGVkZWYgc3RydWN0IGxkYXBfa2V5cyB7DQot
KyAgICBzdHJ1Y3QgYmVydmFsICoqIGtleXM7CS8qIHRoZSBwdWJsaWMga2V5cyByZXRyaWV2
ZWQgKi8NCi0rICAgIHVuc2lnbmVkIGludCBudW07CQkvKiBudW1iZXIgb2Yga2V5cyAqLw0K
LSt9IGxkYXBfa2V5X3Q7DQotKw0KLSsNCi0rLyogZnVuY3Rpb24gaGVhZGVycyAqLw0KLSt2
b2lkIGxkYXBfY2xvc2UobGRhcF9vcHRfdCAqKTsNCi0raW50IGxkYXBfY29ubmVjdChsZGFw
X29wdF90ICopOw0KLStjaGFyICogbGRhcF9wYXJzZV9ncm91cHMoY29uc3QgY2hhciAqKTsN
Ci0rY2hhciAqIGxkYXBfcGFyc2Vfc2VydmVycyhjb25zdCBjaGFyICopOw0KLSt2b2lkIGxk
YXBfb3B0aW9uc19wcmludChsZGFwX29wdF90ICopOw0KLSt2b2lkIGxkYXBfb3B0aW9uc19m
cmVlKGxkYXBfb3B0X3QgKik7DQotK3ZvaWQgbGRhcF9rZXlzX2ZyZWUobGRhcF9rZXlfdCAq
KTsNCi0raW50IGxkYXBfcGFyc2VfbGNvbmYobGRhcF9vcHRfdCAqKTsNCi0rbGRhcF9rZXlf
dCAqIGxkYXBfZ2V0dXNlcmtleShsZGFwX29wdF90ICosIGNvbnN0IGNoYXIgKik7DQotK2lu
dCBsZGFwX2lzbWVtYmVyKGxkYXBfb3B0X3QgKiwgY29uc3QgY2hhciAqKTsNCi0rDQotKyNl
bmRpZg0KLWRpZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5yZWon
IGxway11c2VyLWV4YW1wbGUudHh0IGxway11c2VyLWV4YW1wbGUudHh0DQotLS0tIGxway11
c2VyLWV4YW1wbGUudHh0CTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwDQot
KysrIGxway11c2VyLWV4YW1wbGUudHh0CTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAw
IC0wNzAwDQotQEAgLTAsMCArMSwxMTcgQEANCi0rDQotK1Bvc3QgdG8gTUwgLT4gVXNlciBN
YWRlIFF1aWNrIEluc3RhbGwgRG9jLg0KLStDb250cmlidXRpb24gZnJvbSBKb2huIExhbmUg
PGpvaG5AbGFuZS51ay5uZXQ+DQotKw0KLSsrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQotKw0K
LStPcGVuU1NIIExEQVAga2V5c3RvcmUgUGF0Y2gNCi0rPT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotKw0KLStOT1RFOiB0aGVzZSBub3RlcyBhcmUgYSB0cmFuc2NyaXB0IG9mIGEg
c3BlY2lmaWMgaW5zdGFsbGF0aW9uDQotKyAgICAgIHRoZXkgd29yayBmb3IgbWUsIHlvdXIg
c3BlY2lmaWNzIG1heSBiZSBkaWZmZXJlbnQhDQotKyAgICAgIGZyb20gSm9obiBMYW5lIE1h
cmNoIDE3dGggMjAwNSAgICAgICAgIGpvaG5AbGFuZS51ay5uZXQNCi0rDQotK1RoaXMgaXMg
YSBwYXRjaCB0byBPcGVuU1NIIDQuMHAxIHRvIGFsbG93IGl0IHRvIG9idGFpbiB1c2Vycycg
cHVibGljIGtleXMNCi0rZnJvbSB0aGVpciBMREFQIHJlY29yZCBhcyBhbiBhbHRlcm5hdGl2
ZSB0byB+Ly5zc2gvYXV0aG9yaXplZF9rZXlzLg0KLSsNCi0rKEFzc3VtaW5nIGhlcmUgdGhh
dCBuZWNlc3NhcnkgYnVpbGQgc3R1ZmYgaXMgaW4gJEJVSUxEKQ0KLSsNCi0rY2QgJEJVSUxE
L29wZW5zc2gtNC4wcDENCi0rcGF0Y2ggLU5wMSAtaSAkQlVJTEQvb3BlbnNzaC1scGstNC4w
cDEtMC4zLnBhdGNoDQotK21rZGlyIC1wIC92YXIvZW1wdHkgJiYNCi0rLi9jb25maWd1cmUg
LS1wcmVmaXg9L3VzciAtLXN5c2NvbmZkaXI9L2V0Yy9zc2ggXA0KLSsgICAgLS1saWJleGVj
ZGlyPS91c3Ivc2JpbiAtLXdpdGgtbWQ1LXBhc3N3b3JkcyAtLXdpdGgtcGFtIFwNCi0rICAg
IC0td2l0aC1saWJzPSItbGxkYXAiIC0td2l0aC1jcHBmbGFncz0iLURXSVRIX0xEQVBfUFVC
S0VZIg0KLStOb3cgZG8uDQotK21ha2UgJiYNCi0rbWFrZSBpbnN0YWxsDQotKw0KLStBZGQg
dGhlIGZvbGxvd2luZyBjb25maWcgdG8gL2V0Yy9zc2gvc3NoX2NvbmZpZw0KLStVc2VMUEsg
eWVzDQotK0xwa1NlcnZlcnMgbGRhcDovL215aG9zdC5teWRvbWFpbi5jb20NCi0rTHBrVXNl
ckROICBvdT1QZW9wbGUsZGM9bXlkb21haW4sZGM9Y29tDQotKw0KLStXZSBuZWVkIHRvIHRl
bGwgc3NoZCBhYm91dCB0aGUgU1NMIGtleXMgZHVyaW5nIGJvb3QsIGFzIHJvb3Qncw0KLStl
bnZpcm9ubWVudCBkb2VzIG5vdCBleGlzdCBhdCB0aGF0IHRpbWUuIEVkaXQgL2V0Yy9yYy5k
L2luaXQuZC9zc2hkLg0KLStDaGFuZ2UgdGhlIHN0YXJ0dXAgY29kZSBmcm9tIHRoaXM6DQot
KyAgICAgICAgICAgICAgICBlY2hvICJTdGFydGluZyBTU0ggU2VydmVyLi4uIg0KLSsgICAg
ICAgICAgICAgICAgbG9hZHByb2MgL3Vzci9zYmluL3NzaGQNCi0rICAgICAgICAgICAgICAg
IDs7DQotK3RvIHRoaXM6DQotKyAgICAgICAgICAgICAgICBlY2hvICJTdGFydGluZyBTU0gg
U2VydmVyLi4uIg0KLSsgICAgICAgICAgICAgICAgTERBUFJDPSIvcm9vdC8ubGRhcHJjIiBs
b2FkcHJvYyAvdXNyL3NiaW4vc3NoZA0KLSsgICAgICAgICAgICAgICAgOzsNCi0rDQotK1Jl
LXN0YXJ0IHRoZSBzc2hkIGRhZW1vbjoNCi0rL2V0Yy9yYy5kL2luaXQuZC9zc2hkIHJlc3Rh
cnQNCi0rDQotK0luc3RhbGwgdGhlIGFkZGl0aW9uYWwgTERBUCBzY2hlbWENCi0rY3AgJEJV
SUxEL29wZW5zc2gtbHBrLTAuMi5zY2hlbWEgIC9ldGMvb3BlbmxkYXAvc2NoZW1hL29wZW5z
c2guc2NoZW1hDQotKw0KLStOb3cgYWRkIHRoZSBvcGVuU1NIIExEQVAgc2NoZW1hIHRvIC9l
dGMvb3BlbmxkYXAvc2xhcGQuY29uZjoNCi0rQWRkIHRoZSBmb2xsb3dpbmcgdG8gdGhlIGVu
ZCBvZiB0aGUgZXhpc3RpbmcgYmxvY2sgb2Ygc2NoZW1hIGluY2x1ZGVzDQotK2luY2x1ZGUg
ICAgICAgICAvZXRjL29wZW5sZGFwL3NjaGVtYS9vcGVuc3NoLnNjaGVtYQ0KLSsNCi0rUmUt
c3RhcnQgdGhlIExEQVAgc2VydmVyOg0KLSsvZXRjL3JjLmQvaW5pdC5kL3NsYXBkIHJlc3Rh
cnQNCi0rDQotK1RvIGFkZCBvbmUgb3IgbW9yZSBwdWJsaWMga2V5cyB0byBhIHVzZXIsIGVn
ICJ0ZXN0dXNlciIgOg0KLStsZGFwc2VhcmNoIC14IC1XIC1aIC1MTEwgLWIgInVpZD10ZXN0
dXNlcixvdT1QZW9wbGUsZGM9bXlkb21haW4sZGM9Y29tIiAtRA0KLSsidWlkPXRlc3R1c2Vy
LG91PVBlb3BsZSxkYz1teWRvbWFpbixkYz1jb20iID4gL3RtcC90ZXN0dXNlcg0KLSsNCi0r
YXBwZW5kIHRoZSBmb2xsb3dpbmcgdG8gdGhpcyAvdG1wL3Rlc3R1c2VyIGZpbGUNCi0rb2Jq
ZWN0Y2xhc3M6IGxkYXBQdWJsaWNLZXkNCi0rc3NoUHVibGljS2V5OiBzc2gtcnNhDQotK0FB
QUFCM056YUMxeWMyRUFBQUFCSlFBQUFJQjNkc3J3cVhxRDdFNHpZWXJ4d2RES0JVUXhLTWlv
WHk5cHhGVmFpNjRrQVB4alU5S1MNCi0rcUlvN1Fma2pzbGZzamZsa3NqZmxkZmtqc2xkZmpM
WC81emt6Um1UMjhJNXBpR3p1blB2MTdTODl6OFh3U3N1QW9SMXQ4NnQrNWRsSQ0KLSs3ZVpF
L2dWYm4yVVFrUXE3K2tkRFRTMnlYVjZWbkM1Mk4va0tMRzNjaUJrQkF3PT0gR2VuZXJhbCBQ
dXJwb3NlIFJTQSBLZXkNCi0rDQotK1RoZW4gZG8gYSBtb2RpZnk6DQotK2xkYXBtb2RpZnkg
LXggLUQgInVpZD10ZXN0dXNlcixvdT1QZW9wbGUsZGM9bXlkb21haW4sZGM9Y29tIiAtVyAt
Zg0KLSsvdG1wL3Rlc3R1c2VyIC1aDQotK0VudGVyIExEQVAgUGFzc3dvcmQ6DQotK21vZGlm
eWluZyBlbnRyeSAidWlkPXRlc3R1c2VyLG91PVBlb3BsZSxkYz1teWRvbWFpbixkYz1jb20i
DQotK0FuZCBjaGVjayB0aGUgbW9kaWZ5IGlzIG9rOg0KLStsZGFwc2VhcmNoIC14IC1XIC1a
IC1iICJ1aWQ9dGVzdHVzZXIsb3U9UGVvcGxlLGRjPW15ZG9tYWluLGRjPWNvbSIgLUQNCi0r
InVpZD10ZXN0dXNlcixvdT1QZW9wbGUsZGM9bXlkb21haW4sZGM9Y29tIg0KLStFbnRlciBM
REFQIFBhc3N3b3JkOg0KLSsjIGV4dGVuZGVkIExESUYNCi0rIw0KLSsjIExEQVB2Mw0KLSsj
IGJhc2UgPHVpZD10ZXN0dXNlcixvdT1QZW9wbGUsZGM9bXlkb21haW4sZGM9Y29tPiB3aXRo
IHNjb3BlIHN1Yg0KLSsjIGZpbHRlcjogKG9iamVjdGNsYXNzPSopDQotKyMgcmVxdWVzdGlu
ZzogQUxMDQotKyMNCi0rDQotKyMgdGVzdHVzZXIsIFBlb3BsZSwgbXlkb21haW4uY29tDQot
K2RuOiB1aWQ9dGVzdHVzZXIsb3U9UGVvcGxlLGRjPW15ZG9tYWluLGRjPWNvbQ0KLSt1aWQ6
IHRlc3R1c2VyDQotK2NuOiB0ZXN0dXNlcg0KLStvYmplY3RDbGFzczogYWNjb3VudA0KLStv
YmplY3RDbGFzczogcG9zaXhBY2NvdW50DQotK29iamVjdENsYXNzOiB0b3ANCi0rb2JqZWN0
Q2xhc3M6IHNoYWRvd0FjY291bnQNCi0rb2JqZWN0Q2xhc3M6IGxkYXBQdWJsaWNLZXkNCi0r
c2hhZG93TGFzdENoYW5nZTogMTI3NTcNCi0rc2hhZG93TWF4OiA5OTk5OQ0KLStzaGFkb3dX
YXJuaW5nOiA3DQotK2xvZ2luU2hlbGw6IC9iaW4vYmFzaA0KLSt1aWROdW1iZXI6IDk5OTkN
Ci0rZ2lkTnVtYmVyOiA1MDENCi0raG9tZURpcmVjdG9yeTogL2hvbWUvdGVzdHVzZXINCi0r
dXNlclBhc3N3b3JkOjogZTFOVFNFRjlVRGd3VjFobk0xVmpVRFJKSzBrMVluRmlMMWQ0WlVK
T2JYbFpaM1ozVVRVPQ0KLStzc2hQdWJsaWNLZXk6IHNzaC1yc2ENCi0rQUFBQUIzTnphQzF5
YzJFQUFBQUJKUUFBQUlCM2RzcndxWHFEN0U0ellZcnh3ZERLQlVReEtNaW9YeTlweEZWYWk2
NGtBUHhqVTlLU3FJbzdRZmtqc2xmc2pmbGtzamZsZGZranNsZGZqTFgvNXprelJtVDI4STVw
aUd6dW5QdjE3Uzg5eg0KLSs4WHdTc3VBb1IxdDg2dCs1ZGxJN2VaRS9nVmJuMlVRa1FxNytr
ZERUUzJ5WFY2Vm5DNTJOL2tLTEczY2lCa0JBdz09IEdlbmVyYWwgUHVycG9zZSBSU0EgS2V5
DQotKw0KLSsjIHNlYXJjaCByZXN1bHQNCi0rc2VhcmNoOiAzDQotK3Jlc3VsdDogMCBTdWNj
ZXNzDQotKw0KLSsjIG51bVJlc3BvbnNlczogMg0KLSsjIG51bUVudHJpZXM6IDENCi0rDQot
K05vdyBzdGFydCBhIHNzaCBzZXNzaW9uIHRvIHVzZXIgInRlc3R1c2VyIiBmcm9tIHVzdWFs
IHNzaCBjbGllbnQgKGUuZy4NCi0rcHVUVFkpLiBMb2dpbiBzaG91bGQgc3VjY2VlZC4NCi0r
DQotKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysNCi1kaWZmIC1OdWFyIC0tZXhjbHVkZSAnKi5v
cmlnJyAtLWV4Y2x1ZGUgJyoucmVqJyBNYWtlZmlsZS5pbiBNYWtlZmlsZS5pbg0KLS0tLSBN
YWtlZmlsZS5pbgkyMDA4LTA3LTA4IDA3OjIxOjEyLjAwMDAwMDAwMCAtMDcwMA0KLSsrKyBN
YWtlZmlsZS5pbgkyMDA4LTA4LTIzIDE1OjAyOjQ3LjAwMDAwMDAwMCAtMDcwMA0KLUBAIC04
Niw3ICs4Niw3IEBADQotIAlhdXRoLWtyYjUubyBcDQotIAlhdXRoMi1nc3MubyBnc3Mtc2Vy
di5vIGdzcy1zZXJ2LWtyYjUubyBcDQotIAlsb2dpbnJlYy5vIGF1dGgtcGFtLm8gYXV0aC1z
aGFkb3cubyBhdXRoLXNpYS5vIG1kNWNyeXB0Lm8gXA0KLS0JYXVkaXQubyBhdWRpdC1ic20u
byBwbGF0Zm9ybS5vIHNmdHAtc2VydmVyLm8gc2Z0cC1jb21tb24ubw0KLSsJYXVkaXQubyBh
dWRpdC1ic20ubyBwbGF0Zm9ybS5vIGxkYXBhdXRoLm8gc2Z0cC1zZXJ2ZXIubyBzZnRwLWNv
bW1vbi5vDQotIA0KLSBNQU5QQUdFUwk9IG1vZHVsaS41Lm91dCBzY3AuMS5vdXQgc3NoLWFk
ZC4xLm91dCBzc2gtYWdlbnQuMS5vdXQgc3NoLWtleWdlbi4xLm91dCBzc2gta2V5c2Nhbi4x
Lm91dCBzc2guMS5vdXQgc3NoZC44Lm91dCBzZnRwLXNlcnZlci44Lm91dCBzZnRwLjEub3V0
IHNzaC1yYW5kLWhlbHBlci44Lm91dCBzc2gta2V5c2lnbi44Lm91dCBzc2hkX2NvbmZpZy41
Lm91dCBzc2hfY29uZmlnLjUub3V0DQotIE1BTlBBR0VTX0lOCT0gbW9kdWxpLjUgc2NwLjEg
c3NoLWFkZC4xIHNzaC1hZ2VudC4xIHNzaC1rZXlnZW4uMSBzc2gta2V5c2Nhbi4xIHNzaC4x
IHNzaGQuOCBzZnRwLXNlcnZlci44IHNmdHAuMSBzc2gtcmFuZC1oZWxwZXIuOCBzc2gta2V5
c2lnbi44IHNzaGRfY29uZmlnLjUgc3NoX2NvbmZpZy41DQotZGlmZiAtTnVhciAtLWV4Y2x1
ZGUgJyoub3JpZycgLS1leGNsdWRlICcqLnJlaicgb3BlbnNzaC1scGtfb3BlbmxkYXAuc2No
ZW1hIG9wZW5zc2gtbHBrX29wZW5sZGFwLnNjaGVtYQ0KLS0tLSBvcGVuc3NoLWxwa19vcGVu
bGRhcC5zY2hlbWEJMTk2OS0xMi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDANCi0rKysg
b3BlbnNzaC1scGtfb3BlbmxkYXAuc2NoZW1hCTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAw
MDAwIC0wNzAwDQotQEAgLTAsMCArMSwxOSBAQA0KLSsjDQotKyMgTERBUCBQdWJsaWMgS2V5
IFBhdGNoIHNjaGVtYSBmb3IgdXNlIHdpdGggb3BlbnNzaC1sZGFwcHVia2V5DQotKyMgQXV0
aG9yOiBFcmljIEFVR0UgPGVhdUBwaGVhci5vcmc+DQotKyMgDQotKyMgQmFzZWQgb24gdGhl
IHByb3Bvc2FsIG9mIDogTWFyayBSdWlqdGVyDQotKyMNCi0rDQotKw0KLSsjIG9jdGV0U3Ry
aW5nIFNZTlRBWA0KLSthdHRyaWJ1dGV0eXBlICggMS4zLjYuMS40LjEuMjQ1NTIuNTAwLjEu
MS4xLjEzIE5BTUUgJ3NzaFB1YmxpY0tleScgDQotKwlERVNDICdNQU5EQVRPUlk6IE9wZW5T
U0ggUHVibGljIGtleScgDQotKwlFUVVBTElUWSBvY3RldFN0cmluZ01hdGNoDQotKwlTWU5U
QVggMS4zLjYuMS40LjEuMTQ2Ni4xMTUuMTIxLjEuNDAgKQ0KLSsNCi0rIyBwcmludGFibGVT
dHJpbmcgU1lOVEFYIHllc3xubw0KLStvYmplY3RjbGFzcyAoIDEuMy42LjEuNC4xLjI0NTUy
LjUwMC4xLjEuMi4wIE5BTUUgJ2xkYXBQdWJsaWNLZXknIFNVUCB0b3AgQVVYSUxJQVJZDQot
KwlERVNDICdNQU5EQVRPUlk6IE9wZW5TU0ggTFBLIG9iamVjdGNsYXNzJw0KLSsJTVVTVCAo
IHNzaFB1YmxpY0tleSAkIHVpZCApIA0KLSsJKQ0KLWRpZmYgLU51YXIgLS1leGNsdWRlICcq
Lm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIG9wZW5zc2gtbHBrX3N1bi5zY2hlbWEgb3BlbnNz
aC1scGtfc3VuLnNjaGVtYQ0KLS0tLSBvcGVuc3NoLWxwa19zdW4uc2NoZW1hCTE5NjktMTIt
MzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwDQotKysrIG9wZW5zc2gtbHBrX3N1bi5zY2hl
bWEJMjAwOC0wOC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDANCi1AQCAtMCwwICsxLDIx
IEBADQotKyMNCi0rIyBMREFQIFB1YmxpYyBLZXkgUGF0Y2ggc2NoZW1hIGZvciB1c2Ugd2l0
aCBvcGVuc3NoLWxkYXBwdWJrZXkNCi0rIyBBdXRob3I6IEVyaWMgQVVHRSA8ZWF1QHBoZWFy
Lm9yZz4NCi0rIyANCi0rIyBTY2hlbWEgZm9yIFN1biBEaXJlY3RvcnkgU2VydmVyLg0KLSsj
IEJhc2VkIG9uIHRoZSBvcmlnaW5hbCBzY2hlbWEsIG1vZGlmaWVkIGJ5IFN0ZWZhbiBGaXNj
aGVyLg0KLSsjDQotKw0KLStkbjogY249c2NoZW1hDQotKw0KLSsjIG9jdGV0U3RyaW5nIFNZ
TlRBWA0KLSthdHRyaWJ1dGVUeXBlczogKCAxLjMuNi4xLjQuMS4yNDU1Mi41MDAuMS4xLjEu
MTMgTkFNRSAnc3NoUHVibGljS2V5JyANCi0rCURFU0MgJ01BTkRBVE9SWTogT3BlblNTSCBQ
dWJsaWMga2V5JyANCi0rCUVRVUFMSVRZIG9jdGV0U3RyaW5nTWF0Y2gNCi0rCVNZTlRBWCAx
LjMuNi4xLjQuMS4xNDY2LjExNS4xMjEuMS40MCApDQotKw0KLSsjIHByaW50YWJsZVN0cmlu
ZyBTWU5UQVggeWVzfG5vDQotK29iamVjdENsYXNzZXM6ICggMS4zLjYuMS40LjEuMjQ1NTIu
NTAwLjEuMS4yLjAgTkFNRSAnbGRhcFB1YmxpY0tleScgU1VQIHRvcCBBVVhJTElBUlkNCi0r
CURFU0MgJ01BTkRBVE9SWTogT3BlblNTSCBMUEsgb2JqZWN0Y2xhc3MnDQotKwlNVVNUICgg
c3NoUHVibGljS2V5ICQgdWlkICkgDQotKwkpDQotZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyou
b3JpZycgLS1leGNsdWRlICcqLnJlaicgUkVBRE1FLmxwayBSRUFETUUubHBrDQotLS0tIFJF
QURNRS5scGsJMTk2OS0xMi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDANCi0rKysgUkVB
RE1FLmxwawkyMDA4LTA4LTIzIDE1OjAyOjQ3LjAwMDAwMDAwMCAtMDcwMA0KLUBAIC0wLDAg
KzEsMjY3IEBADQotK09wZW5TU0ggTERBUCBQVUJMSUMgS0VZIFBBVENIIA0KLStDb3B5cmln
aHQgKGMpIDIwMDMgRXJpYyBBVUdFIChlYXVAcGhlYXIub3JnKQ0KLStBbGwgcmlnaHRzIHJl
c2VydmVkLg0KLSsNCi0rUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQotK21vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KLSthcmUgbWV0
Og0KLSsxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodA0KLSsgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQotKzIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQotKyAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUNCi0rICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCi0rMy4gVGhlIG5hbWUgb2Yg
dGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzDQotKyAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KLSsNCi0rVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1INCi0rSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUw0KLStPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELg0KLStJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsDQot
K0lOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVA0KLStOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsDQotK0RBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQ0KLStUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUDQotKyhJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRg0KLStUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLg0KLSsNCi0rcHVycG9zZXMgb2YgdGhpcyBwYXRjaDoNCi0rDQotK1RoaXMgcGF0
Y2ggd291bGQgaGVscCB0byBoYXZlIGF1dGhlbnRpY2F0aW9uIGNlbnRyYWxpemF0aW9uIHBv
bGljeQ0KLSt1c2luZyBzc2ggcHVibGljIGtleSBhdXRoZW50aWNhdGlvbi4NCi0rVGhpcyBw
YXRjaCBjb3VsZCBiZSBhbiBhbHRlcm5hdGl2ZSB0byBvdGhlciAic2VjdXJlIiBhdXRoZW50
aWNhdGlvbiBzeXN0ZW0NCi0rd29ya2luZyBpbiBhIHNpbWlsYXIgd2F5IChLZXJiZXJvcywg
U2VjdXJJRCwgZXRjLi4uKSwgZXhjZXB0IHRoZSBmYWN0IA0KLSt0aGF0IGl0J3MgYmFzZWQg
b24gT3BlblNTSCBhbmQgaXRzIHB1YmxpYyBrZXkgYWJpbGl0aWVzLg0KLSsNCi0rPj4gRllJ
OiA8PA0KLSsndWlkJzogbWVhbnMgdW5peCBhY2NvdW50cyBleGlzdGluZyBvbiB0aGUgY3Vy
cmVudCBzZXJ2ZXINCi0rJ2xwa1NlcnZlckdyb3VwOicgbWVhbiBzZXJ2ZXIgZ3JvdXAgY29u
ZmlndXJlZCBvbiB0aGUgY3VycmVudCBzZXJ2ZXIgKCdscGtTZXJ2ZXJHcm91cCcgaW4gc3No
ZF9jb25maWcpDQotKw0KLStleGFtcGxlIHNjaGVtYToNCi0rDQotKw0KLSsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyMSAodWlkOiBlYXUscml2YWwsdG90bykg
KGxwa1NlcnZlckdyb3VwOiB1bml4KQ0KLSsgICAgICAgICAgICAgICAgX19fX19fX19fX18g
ICAgICAvDQotKyAgICAgICAgICAgICAgIC8gICAgICAgICAgIFwgLS0tIC0gc2VydmVyMyAo
dWlkOiBlYXUsIHRpdGkpIChscGtTZXJ2ZXJHcm91cDogdW5peCkNCi0rICAgICAgICAgICAg
ICB8IExEQVAgU2VydmVyIHwgICAgXA0KLSsJICAgICAgfCBlYXUgICxyaXZhbCB8ICAgICBz
ZXJ2ZXIyICh1aWQ6IHJpdmFsLCBlYXUpIChscGtTZXJ2ZXJHcm91cDogdW5peCkNCi0rCSAg
ICAgIHwgdGl0aSAsdG90byAgfA0KLSsJICAgICAgfCB1c2VyeCwuLi4uICB8ICAgICAgICAg
c2VydmVyNSAodWlkOiBlYXUpICAobHBrU2VydmVyR3JvdXA6IG1haWwpDQotKyAgICAgICAg
ICAgICAgIFxfX19fX19fX19fXy8gXCAgICAgICAvDQotKwkgICAgICAgICAgICAgICAgICAg
ICAgIC0tLS0tIC0gc2VydmVyNCAodWlkOiBlYXUsIHJpdmFsKSAgKG5vIGdyb3VwIGNvbmZp
Z3VyZWQpDQotKwkJCSAgICAgICAgICAgICBcDQotKwkJCQkgICAgICAgIGV0Yy4uLg0KLSsN
Ci0rLSBXSEFUIFdFIE5FRUQgOg0KLSsNCi0rICAqIGNvbmZpZ3VyZWQgTERBUCBzZXJ2ZXIg
c29tZXdoZXJlIG9uIHRoZSBuZXR3b3JrIChpLmUuIE9wZW5MREFQKQ0KLSsgICogcGF0Y2hl
ZCBzc2hkICh3aXRoIHRoaXMgcGF0Y2ggOykNCi0rICAqIExEQVAgdXNlcigvZ3JvdXApIGVu
dHJ5IChsb29rIGF0IHVzZXJzLmxkaWYgKCYgZ3JvdXBzLmxkaWYpKToNCi0rICAgICAgICBV
c2VyIGVudHJ5Og0KLSsJLSBhdHRhY2hlZCB0byB0aGUgJ2xkYXBQdWJsaWNLZXknIG9iamVj
dGNsYXNzDQotKwktIGF0dGFjaGVkIHRvIHRoZSAncG9zaXhBY2NvdW50JyBvYmplY3RjbGFz
cw0KLSsJLSB3aXRoIGEgZmlsbGVkICdzc2hQdWJsaWNLZXknIGF0dHJpYnV0ZSANCi0rCUV4
YW1wbGU6DQotKwkJZG46IHVpZD1lYXUsb3U9dXNlcnMsZGM9Y3Vja29vcyxkYz1uZXQNCi0r
CQlvYmplY3RjbGFzczogdG9wDQotKwkJb2JqZWN0Y2xhc3M6IHBlcnNvbg0KLSsJCW9iamVj
dGNsYXNzOiBvcmdhbml6YXRpb25hbFBlcnNvbg0KLSsJCW9iamVjdGNsYXNzOiBwb3NpeEFj
Y291bnQNCi0rCQlvYmplY3RjbGFzczogbGRhcFB1YmxpY0tleQ0KLSsJCWRlc2NyaXB0aW9u
OiBFcmljIEFVR0UgQWNjb3VudA0KLSsJCXVzZXJQYXNzd29yZDogYmxhaA0KLSsJCWNuOiBF
cmljIEFVR0UNCi0rCQlzbjogRXJpYyBBVUdFDQotKwkJdWlkOiBlYXUNCi0rCQl1aWROdW1i
ZXI6IDEwMzQNCi0rCQlnaWROdW1iZXI6IDENCi0rCQlob21lRGlyZWN0b3J5OiAvZXhwb3J0
L2hvbWUvZWF1DQotKwkJc3NoUHVibGljS2V5OiBzc2gtZHNzIEFBQUFCMy4uLg0KLSsJCXNz
aFB1YmxpY0tleTogc3NoLWRzcyBBQUFBTTUuLi4NCi0rDQotKwlHcm91cCBlbnRyeToNCi0r
CS0gYXR0YWNoZWQgdG8gdGhlICdwb3NpeEdyb3VwJyBvYmplY3RjbGFzcw0KLSsJLSB3aXRo
IGEgJ2NuJyBncm91cG5hbWUgYXR0cmlidXRlDQotKwktIHdpdGggbXVsdGlwbGUgJ21lbWJl
clVpZCcgYXR0cmlidXRlcyBmaWxsZWQgd2l0aCB1c2VybmFtZXMgYWxsb3dlZCBpbiB0aGlz
IGdyb3VwDQotKwlFeGFtcGxlOg0KLSsJCSMgZmV3IG1lbWJlcnMNCi0rCQlkbjogY249dW5p
eCxvdT1ncm91cHMsZGM9Y3Vja29vcyxkYz1uZXQNCi0rCQlvYmplY3RjbGFzczogdG9wDQot
KwkJb2JqZWN0Y2xhc3M6IHBvc2l4R3JvdXANCi0rCQlkZXNjcmlwdGlvbjogVW5peCBiYXNl
ZCBzZXJ2ZXJzIGdyb3VwDQotKwkJY246IHVuaXgNCi0rCQlnaWROdW1iZXI6IDEwMDINCi0r
CQltZW1iZXJVaWQ6IGVhdQ0KLSsJCW1lbWJlclVpZDogdXNlcjENCi0rCQltZW1iZXJVaWQ6
IHVzZXIyDQotKw0KLSsNCi0rLSBIT1cgSVQgV09SS1MgOg0KLSsNCi0rICAqIHdpdGhvdXQg
cGF0Y2gNCi0rICBJZiBhIHVzZXIgd2FudHMgdG8gYXV0aGVudGljYXRlIHRvIGxvZyBpbiBh
IHNlcnZlciB0aGUgc3NoZCwgd2lsbCBmaXJzdCBsb29rIGZvciBhdXRoZW50aWNhdGlvbiBt
ZXRob2QgYWxsb3dlZCAoUlNBYXV0aCxrZXJiZXJvcyxldGMuLikNCi0rICBhbmQgaWYgUlNB
YXV0aCBhbmQgdGlja2V0cyBiYXNlZCBhdXRoIGZhaWxzLCBpdCB3aWxsIGZhbGxiYWNrIHRv
IHN0YW5kYXJkIHBhc3N3b3JkIGF1dGhlbnRpY2F0aW9uIChpZiBlbmFibGVkKS4NCi0rDQot
KyAgKiB3aXRoIHRoZSBwYXRjaA0KLSsgIElmIGEgdXNlciB3YW50IHRvIGF1dGhlbnRpY2F0
ZSB0byBsb2cgaW4gYSBzZXJ2ZXIsIHRoZSBzc2hkIHdpbGwgZmlyc3QgbG9vayBmb3IgYXV0
aCBtZXRob2QgaW5jbHVkaW5nIExEQVAgcHVia2V5LCBpZiB0aGUgbGRhcHB1YmtleSBvcHRp
b25zIGlzIGVuYWJsZWQuDQotKyAgSXQgd2lsbCBkbyBhbiBsZGFwc2VhcmNoIHRvIGdldCB0
aGUgcHVibGljIGtleSBkaXJlY3RseSBmcm9tIHRoZSBMREFQIGluc3RlYWQgb2YgcmVhZGlu
ZyBpdCBmcm9tIHRoZSBzZXJ2ZXIgZmlsZXN5c3RlbS4gDQotKyAgKHVzdWFsbHkgaW4gJEhP
TUUvLnNzaC9hdXRob3JpemVkX2tleXMpDQotKw0KLSsgIElmIGdyb3VwcyBhcmUgZW5hYmxl
ZCwgaXQgd2lsbCBhbHNvIGNoZWNrIGlmIHRoZSB1c2VyIHRoYXQgd2FudHMgdG8gbG9naW4g
aXMgaW4gdGhlIGdyb3VwIG9mIHRoZSBzZXJ2ZXIgaGUgaXMgdHJ5aW5nIHRvIGxvZyBpbnRv
Lg0KLSsgIElmIGl0IGZhaWxzLCBpdCBmYWxscyBiYWNrIG9uIFJTQSBhdXRoIGZpbGVzICgk
SE9NRS8uc3NoL2F1dGhvcml6ZWRfa2V5cyksIGV0Yy4uIGFuZCBmaW5hbGx5IHRvIHN0YW5k
YXJkIHBhc3N3b3JkIGF1dGhlbnRpY2F0aW9uIChpZiBlbmFibGVkKS4NCi0rDQotKyAgNyB0
b2tlbnMgYXJlIGFkZGVkIHRvIHNzaGRfY29uZmlnIDoNCi0rICAjIGhlcmUgaXMgdGhlIG5l
dyBwYXRjaGVkIGxkYXAgcmVsYXRlZCB0b2tlbnMNCi0rICAjIGVudHJpZXMgaW4geW91ciBM
REFQIG11c3QgYmUgcG9zaXhBY2NvdW50ICYgc3Ryb25nQXV0aGVudGljYXRpb25Vc2VyICYg
cG9zaXhHcm91cA0KLSsgIFVzZUxQSyB5ZXMJCQkJCQkJCSMgbG9vayB0aGUgcHViIGtleSBp
bnRvIExEQVANCi0rICBMcGtTZXJ2ZXJzIGxkYXA6Ly8xMC4zMS4zMi41LyBsZGFwOi8vMTAu
MzEuMzIuNCBsZGFwOi8vMTAuMzEuMzIuMwkjIHdoaWNoIExEQVAgc2VydmVyIGZvciB1c2Vy
cyA/IChVUkwgZm9ybWF0KQ0KLSsgIExwa1VzZXJETiAgb3U9dXNlcnMsZGM9Zm9vYmFyLGRj
PW5ldAkJCQkJIyB3aGljaCBiYXNlIEROIGZvciB1c2VycyA/DQotKyAgTHBrR3JvdXBETiBv
dT1ncm91cHMsZGM9Zm9vYmFyLGRjPW5ldAkJCQkJIyB3aGljaCBiYXNlIEROIGZvciBncm91
cHMgPyANCi0rICBMcGtCaW5kRE4gY249bWFuYWdlcixkYz1mb29iYXIsZGM9bmV0CQkJCQkj
IHdoaWNoIGJpbmQgRE4gPw0KLSsgIExwa0JpbmRQdyBhc2VjcmV0CQkJCQkJCSMgYmluZCBE
TiBjcmVkaWRlbnRpYWxzDQotKyAgTHBrU2VydmVyR3JvdXAgYWdyb3VwbmFtZQkJCQkJCSMg
dGhlIGdyb3VwIHRoZSBzZXJ2ZXIgaXMgcGFydCBvZg0KLSsNCi0rICBSaWdodCBub3cgaSdt
IHVzaW5nIGFub255bW91cyBiaW5kaW5nIHRvIGdldCBwdWJsaWMga2V5cywgYmVjYXVzZSBn
ZXR0aW5nIHB1YmxpYyBrZXlzIG9mIHNvbWVvbmUgZG9lc24ndCBpbXBlcnNvbmF0ZSBoaW24
IGJ1dCB0aGVyZSBpcyBzb21lDQotKyAgZmxhd3MgeW91IGhhdmUgdG8gdGFrZSBjYXJlIG9m
Lg0KLSsNCi0rLSBIT1cgVE8gSU5TRVJUIEEgVVNFUi9LRVkgSU5UTyBBTiBMREFQIEVOVFJZ
DQotKw0KLSsgICogbXkgd2F5ICh0aGVyZSBpcyBwbGVudHkgOikNCi0rICAtIGNyZWF0ZSBs
ZGlmIGZpbGUgKGkuZS4gdXNlcnMubGRpZikNCi0rICAtIGNhdCB+Ly5zc2gvaWRfZHNhLnB1
YiBPUiBjYXQgfi8uc3NoL2lkX3JzYS5wdWIgT1IgY2F0IH4vLnNzaC9pZGVudGl0eS5wdWIN
Ci0rICAtIG15IHdheSBpbiA0IHN0ZXBzIDoNCi0rICBFeGFtcGxlOg0KLSsNCi0rICAjIHlv
dSBhZGQgdGhpcyB0byB0aGUgdXNlciBlbnRyeSBpbiB0aGUgTERJRiBmaWxlIDoNCi0rICBb
Li4uXQ0KLSsgIG9iamVjdGNsYXNzOiBwb3NpeEFjY291bnQNCi0rICBvYmplY3RjbGFzczog
bGRhcFB1YmxpY0tleQ0KLSsgIFsuLi5dDQotKyAgc3NoUHVibGlLZXk6IHNzaC1kc3MgQUFB
QUJEaDEyRERVUjIuLi4NCi0rICBbLi4uXQ0KLSsNCi0rICAjIGluc2VydCB5b3VyIGVudHJ5
IGFuZCB5b3UncmUgZG9uZSA6KQ0KLSsgIGxkYXBhZGQgLUQgYmFsYmxhYmxhIC13IGJsZWgg
PCBmaWxlLmxkaWYgDQotKyAgDQotKyAgYWxsIHN0YW5kYXJkIG9wdGlvbnMgY2FuIGJlIHBy
ZXNlbnQgaW4gdGhlICdzc2hQdWJsaWNLZXknIGF0dHJpYnV0ZS4NCi0rDQotKy0gV0hZIDoN
Ci0rDQotKyAgU2ltcGx5IGJlY2F1c2UsIGkgd2FzIGxvb2tpbmcgZm9yIGEgd2F5IHRvIGNl
bnRyYWxpemUgYWxsIHN5c2FkbWlucyBhdXRoZW50aWNhdGlvbiwgZWFzaWx5LCAgd2l0aG91
dCBjb21wbGV0ZWx5IHVzaW5nIExEQVAgDQotKyAgYXMgYXV0aGVudGljYXRpb24gbWV0aG9k
IChsaWtlIHBhbV9sZGFwIGV0Yy4uKS4gIA0KLSsgIA0KLSsgIEFmdGVyIGxvb2tpbmcgaW50
byBLZXJiZXJvcywgU2VjdXJJRCwgYW5kIG90aGVyIGNlbnRyYWxpemVkIHNlY3VyZSBhdXRo
ZW50aWNhdGlvbnMgc3lzdGVtcywgdGhlIHVzZSBvZiBSU0EgYW5kIExEQVAgdG8gZ2V0IA0K
LSsgIHB1YmxpYyBrZXkgZm9yIGF1dGhlbnRpY2F0aW9uIGFsbG93cyB1cyB0byBjb250cm9s
IHdobyBoYXMgYWNjZXNzIHRvIHdoaWNoIHNlcnZlciAodGhlIHVzZXIgbmVlZHMgYW4gYWNj
b3VudCBhbmQgdG8gYmUgaW4gJ3N0cm9uZ0F1dGhlbnRpY2F0aW9uVXNlcicNCi0rICBvYmpl
Y3RjbGFzcyB3aXRoaW4gTERBUCBhbmQgcGFydCBvZiB0aGUgZ3JvdXAgdGhlIFNTSCBzZXJ2
ZXIgaXMgaW4pLiANCi0rDQotKyAgUGFzc3dvcmRzIHVwZGF0ZSBhcmUgbm8gbG9uZ2VyIGEg
bmlnaHRtYXJlIGZvciBhIHNlcnZlciBmYXJtIChrZXkgcGFpciBwYXNzcGhyYXNlIGlzIHN0
b3JlZCBvbiBlYWNoIHVzZXIncyBib3ggYW5kIHByaXZhdGUga2V5IGlzIGxvY2FsbHkgZW5j
cnlwdGVkIHVzaW5nIGhpcyBwYXNzcGhyYXNlIA0KLSsgIHNvIGVhY2ggdXNlciBjYW4gY2hh
bmdlIGl0IGFzIG11Y2ggYXMgaGUgd2FudHMpLiANCi0rDQotKyAgQmxvY2tpbmcgYSB1c2Vy
IGFjY291bnQgY2FuIGJlIGRvbmUgZGlyZWN0bHkgZnJvbSB0aGUgTERBUCAoaWYgc3NoZCBp
cyB1c2luZyBSU0FBdXRoICsgbGRhcCBvbmx5KS4NCi0rDQotKy0gUlVMRVMgOiAgDQotKyAg
RW50cnkgaW4gdGhlIExEQVAgc2VydmVyIG11c3QgcmVzcGVjdCAncG9zaXhBY2NvdW50JyBh
bmQgJ2xkYXBQdWJsaWNLZXknIHdoaWNoIGFyZSBkZWZpbmVkIGluIGNvcmUuc2NoZW1hLiAN
Ci0rICBhbmQgdGhlIGFkZGl0aW9ubmFsIGxway5zY2hlbWEuDQotKw0KLSsgIFRoaXMgcGF0
Y2ggY291bGQgYWxsb3cgYSBzbW9vdGggdHJhbnNpdGlvbiBiZXR3ZWVuIHN0YW5kYXJkIGF1
dGggKC9ldGMvcGFzc3dkKSBhbmQgY29tcGxldGUgTERBUCBiYXNlZCBhdXRoZW50aWNhdGlv
biANCi0rICAocGFtbGRhcCwgbnNzX2xkYXAsIGV0Yy4uKS4NCi0rDQotKyAgVGhpcyBjYW4g
YmUgYW4gYWx0ZXJuYXRpdmUgdG8gb3RoZXIgKG9sZD8vZXhwZW5zaXZlPykgYXV0aGVudGlj
YXRpb24gbWV0aG9kcyAoS2VyYmVyb3MvU2VjdXJJRC8uLikuDQotKyAgDQotKyAgUmVmZXJy
aW5nIHRvIHNjaGVtYSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoaXMgZmlsZSBpZiB1c2VyICdl
YXUnIGlzIG9ubHkgaW4gZ3JvdXAgJ3VuaXgnDQotKyAgJ2VhdScgd291bGQgT05MWSBhY2Nl
c3MgJ3NlcnZlcjEnLCAnc2VydmVyMicsICdzZXJ2ZXIzJyBBTkQgJ3NlcnZlcjQnIEJVVCBO
T1QgJ3NlcnZlcjUnLg0KLSsgIElmIHlvdSB0aGVuIG1vZGlmeSB0aGUgTERBUCAnbWFpbCcg
Z3JvdXAgZW50cnkgdG8gYWRkICdtZW1iZXJVaWQ6IGVhdScgVEhFTiB1c2VyICdlYXUnIHdv
dWxkIGJlIGFibGUNCi0rICB0byBsb2cgaW4gJ3NlcnZlcjUnIChpIGhvcGUgeW91IGdvdCB0
aGUgaWRlYSwgbXkgZW5nbGlzaCBpcyBiYWQgOikuDQotKw0KLSsgIEVhY2ggc2VydmVyJ3Mg
c3NoZCBpcyBwYXRjaGVkIGFuZCBjb25maWd1cmVkIHRvIGFzayB0aGUgcHVibGljIGtleSBh
bmQgdGhlIGdyb3VwIGluZm9zIGluIHRoZSBMREFQDQotKyAgc2VydmVyLg0KLSsgIFdoZW4g
eW91IHdhbnQgdG8gYWxsb3cgYSBuZXcgdXNlciB0byBoYXZlIGFjY2VzcyB0byB0aGUgc2Vy
dmVyIHBhcmMsIHlvdSBqdXN0IGFkZCBoaW0gYW4gYWNjb3VudCBvbiANCi0rICB5b3VyIHNl
cnZlcnMsIHlvdSBhZGQgaGlzIHB1YmxpYyBrZXkgaW50byBoaXMgZW50cnkgb24gdGhlIExE
QVAgc2VydmVyLCBpdCdzIGRvbmUuIA0KLSsNCi0rICBCZWNhdXNlIHNzaGRzIGFyZSBsb29r
aW5nIHB1YmxpYyBrZXlzIGludG8gdGhlIExEQVAgZGlyZWN0bHkgaW5zdGVhZCBvZiBhIGZp
bGUgKCRIT01FLy5zc2gvYXV0aG9yaXplZF9rZXlzKS4NCi0rDQotKyAgV2hlbiB0aGUgdXNl
ciBuZWVkcyB0byBjaGFuZ2UgaGlzIHBhc3NwaHJhc2UgaGUgY2FuIGRvIGl0IGRpcmVjdGx5
IGZyb20gaGlzIHdvcmtzdGF0aW9uIGJ5IGNoYW5naW5nIA0KLSsgIGhpcyBvd24ga2V5IHNl
dCBsb2NrIHBhc3NwaHJhc2UsIGFuZCBhbGwgc2VydmVycyBhcmUgYXV0b21hdGljYWxseSBh
d2FyZS4NCi0rIA0KLSsgIFdpdGggYSBDQVJFRlVMIExEQVAgc2VydmVyIGNvbmZpZ3VyYXRp
b24geW91IGNvdWxkIGFsbG93IGEgdXNlciB0byBhZGQvZGVsZXRlL21vZGlmeSBoaXMgb3du
IGVudHJ5IGhpbXNlbGYNCi0rICBzbyBoZSBjYW4gYWRkL21vZGlmeS9kZWxldGUgaGltc2Vs
ZiBoaXMgcHVibGljIGtleSB3aGVuIG5lZWRlZC4NCi0rDQotK60gRkxBV1MgOg0KLSsgIExE
QVAgbXVzdCBiZSB3ZWxsIGNvbmZpZ3VyZWQsIGdldHRpbmcgdGhlIHB1YmxpYyBrZXkgb2Yg
c29tZSB1c2VyIGlzIG5vdCBhIHByb2JsZW0sIGJ1dCBpZiBhbm9ueW1vdXMgTERBUCANCi0r
ICBhbGxvdyB3cml0ZSB0byB1c2VycyBkbiwgc29tZWJvZHkgY291bGQgcmVwbGFjZSBzb21l
dXNlcidzIHB1YmxpYyBrZXkgYnkgaXRzIG93biBhbmQgaW1wZXJzb25hdGUgc29tZSANCi0r
ICBvZiB5b3VyIHVzZXJzIGluIGFsbCB5b3VyIHNlcnZlciBmYXJtIGJlIFZFUlkgQ0FSRUZV
TC4NCi0rICANCi0rICBNSVRNIGF0dGFjayB3aGVuIHNzaGQgaXMgcmVxdWVzdGluZyB0aGUg
cHVibGljIGtleSwgY291bGQgbGVhZCB0byBhIGNvbXByb21pc2Ugb2YgeW91ciBzZXJ2ZXJz
IGFsbG93aW5nIGxvZ2luIA0KLSsgIGFzIHRoZSBpbXBlcnNvbm5hdGVkIHVzZXIuDQotKw0K
LSsgIElmIExEQVAgc2VydmVyIGlzIGRvd24gdGhlbiwgZmFsbGJhY2sgb24gcGFzc3dkIGF1
dGguDQotKyAgDQotKyAgdGhlIGxkYXAgY29kZSBwYXJ0IGhhcyBub3QgYmVlbiB3ZWxsIGF1
ZGl0ZWQgeWV0Lg0KLSsNCi0rLSBMREFQIFVTRVIgRU5UUlkgRVhBTVBMRVMgKExESUYgRm9y
bWF0LCBsb29rIGluIHVzZXJzLmxkaWYpDQotKyAgICAtLS0gQ1VUIEhFUkUgLS0tDQotKyAg
ICBkbjogdWlkPWpkb2Usb3U9dXNlcnMsZGM9Zm9vYmFyLGRjPW5ldA0KLSsgICAgb2JqZWN0
Y2xhc3M6IHRvcA0KLSsgICAgb2JqZWN0Y2xhc3M6IHBlcnNvbg0KLSsgICAgb2JqZWN0Y2xh
c3M6IG9yZ2FuaXphdGlvbmFsUGVyc29uDQotKyAgICBvYmplY3RjbGFzczogcG9zaXhBY2Nv
dW50DQotKyAgICBvYmplY3RjbGFzczogbGRhcFB1YmxpY0tleQ0KLSsgICAgZGVzY3JpcHRp
b246IE15IGFjY291bnQNCi0rICAgIGNuOiBKb2huIERvZQ0KLSsgICAgc246IEpvaG4gRG9l
DQotKyAgICB1aWQ6IGpkb2UNCi0rICAgIHVpZE51bWJlcjogMTAwDQotKyAgICBnaWROdW1i
ZXI6IDEwMA0KLSsgICAgaG9tZURpcmVjdG9yeTogL2hvbWUvamRvZQ0KLSsgICAgc3NoUHVi
bGljS2V5OiBzc2gtZHNzIEFBQUFCM056YUMxa2MzTUFBQUVCQU92TDhwUkVVZzl3U3kvOCto
UUo1NFlGM0FYa0IwT1pyWEIuLi4uDQotKyAgICBbLi4uXQ0KLSsgICAgLS0tIENVVCBIRVJF
IC0tLQ0KLSsNCi0rLSBMREFQIEdST1VQIEVOVFJZIEVYQU1QTEVTIChMRElGIEZvcm1hdCwg
bG9vayBpbiBncm91cHMubGRpZikNCi0rICAgIC0tLSBDVVQgSEVSRSAtLS0NCi0rICAgIGRu
OiBjbj11bml4LG91PWdyb3VwcyxkYz1jdWNrb29zLGRjPW5ldA0KLSsgICAgb2JqZWN0Y2xh
c3M6IHRvcA0KLSsgICAgb2JqZWN0Y2xhc3M6IHBvc2l4R3JvdXANCi0rICAgIGRlc2NyaXB0
aW9uOiBVbml4IGJhc2VkIHNlcnZlcnMgZ3JvdXANCi0rICAgIGNuOiB1bml4DQotKyAgICBn
aWROdW1iZXI6IDEwMDINCi0rICAgIG1lbWJlclVpZDogamRvZQ0KLSsgICAgbWVtYmVyVWlk
OiB1c2VyMQ0KLSsgICAgbWVtYmVyVWlkOiB1c2VyMg0KLSsgICAgWy4uLl0NCi0rICAgIC0t
LSBDVVQgSEVSRSAtLS0NCi0rDQotKz4+IEZZSTogPDwgDQotK011bHRpcGxlICdzc2hQdWJs
aWNLZXknIGluIGEgdXNlciBlbnRyeSBhcmUgYWxsb3dlZCwgYXMgd2VsbCBhcyBtdWx0aXBs
ZSAnbWVtYmVyVWlkJyBhdHRyaWJ1dGVzIGluIGEgZ3JvdXAgZW50cnkNCi0rDQotKy0gQ09N
UElMSU5HOg0KLSsgIDEuIEFwcGx5IHRoZSBwYXRjaA0KLSsgIDIuIC4vY29uZmlndXJlIC0t
d2l0aC15b3VyLW9wdGlvbnMgLS13aXRoLWxkYXA9L3ByZWZpeC90by9sZGFwX2xpYnNfYW5k
X2luY2x1ZGVzDQotKyAgMy4gbWFrZQ0KLSsgIDQuIGl0J3MgZG9uZS4NCi0rDQotKy0gQkxB
IDoNCi0rICBJIGhvcGUgdGhpcyBjb3VsZCBoZWxwLCBhbmQgaSBob3BlIHRvIGJlIGNsZWFy
IGVub3VnaCwsIG9yIGdpdmUgaWRlYXMuICBxdWVzdGlvbnMvY29tbWVudHMvaW1wcm92ZW1l
bnRzIGFyZSB3ZWxjb21lLg0KLSsgIA0KLSstIFRPRE8gOg0KLSsgIFJlZGVzaWduIGRpZmZl
cmVudGx5Lg0KLSsNCi0rLSBET0NTL0xJTksgOg0KLSsgIGh0dHA6Ly9wYWNzZWMuanAvY29y
ZTA1L3BzajA1LWJhcmlzYW5pLWVuLnBkZg0KLSsgIGh0dHA6Ly9mcml0ei5wb3RzZGFtLmVk
dS9wcm9qZWN0cy9vcGVuc3NoLWxway8NCi0rICBodHRwOi8vZnJpdHoucG90c2RhbS5lZHUv
cHJvamVjdHMvc3NoZ2F0ZS8NCi0rICBodHRwOi8vZGV2LmludmVyc2VwYXRoLmNvbS90cmFj
L29wZW5zc2gtbHBrDQotKyAgaHR0cDovL2xhbS5zZi5uZXQvICggaHR0cDovL2xhbS5zb3Vy
Y2Vmb3JnZS5uZXQvZG9jdW1lbnRhdGlvbi9zdXBwb3J0ZWRTY2hlbWFzLmh0bSApDQotKw0K
LSstIENPTlRSSUJVVE9SUy9JREVBUy9HUkVFVFMgOg0KLSsgIC0gRmFsayBTaWVtb25zbWVp
ZXIuDQotKyAgLSBKYWNvYiBSaWVmLg0KLSsgIC0gTWljaGFlbCBEdXJjaGdyYWYuDQotKyAg
LSBmcmVkZXJpYyBwZXRlcnMuDQotKyAgLSBGaW5sYXkgZG9iYmllLg0KLSsgIC0gU3RlZmFu
IEZpc2hlci4NCi0rICAtIFJvYmluIEguIEpvaG5zb24uDQotKyAgLSBBZHJpYW4gQnJpZGdl
dHQuDQotKw0KLSstIENPTlRBQ1QgOg0KLSsgIC0gRXJpYyBBVUdFIDxlYXVAcGhlYXIub3Jn
Pg0KLSsgIC0gQW5kcmVhIEJhcmlzYW5pIDxhbmRyZWFAaW52ZXJzZXBhdGguY29tPg0KLQ0K
LWRpZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIHNlcnZj
b25mLmggc2VydmNvbmYuaA0KLS0tLSBzZXJ2Y29uZi5oCTIwMDgtMDYtMTAgMDY6MDE6NTEu
MDAwMDAwMDAwIC0wNzAwDQotKysrIHNlcnZjb25mLmgJMjAwOC0wOC0yMyAxNTowMjo0Ny4w
MDAwMDAwMDAgLTA3MDANCi1AQCAtMTYsNiArMTYsMTAgQEANCi0gI2lmbmRlZiBTRVJWQ09O
Rl9IDQotICNkZWZpbmUgU0VSVkNPTkZfSA0KLSANCi0rI2lmZGVmIFdJVEhfTERBUF9QVUJL
RVkNCi0rI2luY2x1ZGUgImxkYXBhdXRoLmgiDQotKyNlbmRpZg0KLSsNCi0gI2RlZmluZSBN
QVhfUE9SVFMJCTI1NgkvKiBNYXggIyBwb3J0cy4gKi8NCi0gDQotICNkZWZpbmUgTUFYX0FM
TE9XX1VTRVJTCQkyNTYJLyogTWF4ICMgdXNlcnMgb24gYWxsb3cgbGlzdC4gKi8NCi1AQCAt
MTQ1LDYgKzE0OSw5IEBADQotIAlpbnQJdXNlX3BhbTsJCS8qIEVuYWJsZSBhdXRoIHZpYSBQ
QU0gKi8NCi0gDQotIAlpbnQJcGVybWl0X3R1bjsNCi0rI2lmZGVmIFdJVEhfTERBUF9QVUJL
RVkNCi0rICAgICAgICBsZGFwX29wdF90IGxwazsNCi0rI2VuZGlmDQotIA0KLSAJaW50CW51
bV9wZXJtaXR0ZWRfb3BlbnM7DQotIA0KLWRpZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcn
IC0tZXhjbHVkZSAnKi5yZWonIHNzaGQuYyBzc2hkLmMNCi0tLS0gc3NoZC5jCTIwMDgtMDct
MTEgMDA6MzY6NDkuMDAwMDAwMDAwIC0wNzAwDQotKysrIHNzaGQuYwkyMDA4LTA4LTIzIDE1
OjAyOjQ3LjAwMDAwMDAwMCAtMDcwMA0KLUBAIC0xMjcsNiArMTI3LDEwIEBADQotIGludCBk
ZW55X3NldmVyaXR5Ow0KLSAjZW5kaWYgLyogTElCV1JBUCAqLw0KLSANCi0rI2lmZGVmIFdJ
VEhfTERBUF9QVUJLRVkNCi0rI2luY2x1ZGUgImxkYXBhdXRoLmgiDQotKyNlbmRpZg0KLSsN
Ci0gI2lmbmRlZiBPX05PQ1RUWQ0KLSAjZGVmaW5lIE9fTk9DVFRZCTANCi0gI2VuZGlmDQot
QEAgLTE0ODQsNiArMTQ4OCwxNiBAQA0KLSAJCWV4aXQoMSk7DQotIAl9DQotIA0KLSsjaWZk
ZWYgV0lUSF9MREFQX1BVQktFWQ0KLSsgICAgLyogbGRhcF9vcHRpb25zX3ByaW50KCZvcHRp
b25zLmxwayk7ICovDQotKyAgICAvKiBYWFggaW5pdGlhbGl6ZS9jaGVjayBsZGFwIGNvbm5l
Y3Rpb24gYW5kIHNldCAqTEQgKi8NCi0rICAgIGlmIChvcHRpb25zLmxway5vbikgew0KLSsg
ICAgICAgIGlmIChvcHRpb25zLmxway5sX2NvbmYgJiYgKGxkYXBfcGFyc2VfbGNvbmYoJm9w
dGlvbnMubHBrKSA8IDApICkNCi0rICAgICAgICAgICAgZXJyb3IoIltMREFQXSBjb3VsZCBu
b3QgcGFyc2UgJXMiLCBvcHRpb25zLmxway5sX2NvbmYpOw0KLSsgICAgICAgIGlmIChsZGFw
X2Nvbm5lY3QoJm9wdGlvbnMubHBrKSA8IDApDQotKyAgICAgICAgICAgIGVycm9yKCJbTERB
UF0gY291bGQgbm90IGluaXRpYWxpemUgbGRhcCBjb25uZWN0aW9uIik7DQotKyAgICB9DQot
KyNlbmRpZg0KLSAJZGVidWcoInNzaGQgdmVyc2lvbiAlLjEwMHMiLCBTU0hfUkVMRUFTRSk7
DQotIA0KLSAJLyogU3RvcmUgcHJpdmlsZWdlIHNlcGFyYXRpb24gdXNlciBmb3IgbGF0ZXIg
dXNlIGlmIHJlcXVpcmVkLiAqLw0KLWRpZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0t
ZXhjbHVkZSAnKi5yZWonIHNzaGRfY29uZmlnIHNzaGRfY29uZmlnDQotLS0tIHNzaGRfY29u
ZmlnCTIwMDgtMDctMDIgMDU6MzU6NDMuMDAwMDAwMDAwIC0wNzAwDQotKysrIHNzaGRfY29u
ZmlnCTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwDQotQEAgLTEwOSw2ICsx
MDksMjEgQEANCi0gIyBubyBkZWZhdWx0IGJhbm5lciBwYXRoDQotICNCYW5uZXIgbm9uZQ0K
LSANCi0rIyBoZXJlIGFyZSB0aGUgbmV3IHBhdGNoZWQgbGRhcCByZWxhdGVkIHRva2Vucw0K
LSsjIGVudHJpZXMgaW4geW91ciBMREFQIG11c3QgaGF2ZSBwb3NpeEFjY291bnQgJiBsZGFw
UHVibGljS2V5IG9iamVjdGNsYXNzDQotKyNVc2VMUEsgeWVzDQotKyNMcGtMZGFwQ29uZiAv
ZXRjL2xkYXAuY29uZg0KLSsjTHBrU2VydmVycyAgbGRhcDovLzEwLjEuNy4xLyBsZGFwOi8v
MTAuMS43LjIvDQotKyNMcGtVc2VyRE4gICBvdT11c2VycyxkYz1waGVhcixkYz1vcmcNCi0r
I0xwa0dyb3VwRE4gIG91PWdyb3VwcyxkYz1waGVhcixkYz1vcmcNCi0rI0xwa0JpbmRETiBj
bj1NYW5hZ2VyLGRjPXBoZWFyLGRjPW9yZw0KLSsjTHBrQmluZFB3IHNlY3JldA0KLSsjTHBr
U2VydmVyR3JvdXAgbWFpbA0KLSsjTHBrRmlsdGVyIChob3N0QWNjZXNzPW1hc3Rlci5waGVh
ci5vcmcpDQotKyNMcGtGb3JjZVRMUyBubw0KLSsjTHBrU2VhcmNoVGltZWxpbWl0IDMNCi0r
I0xwa0JpbmRUaW1lbGltaXQgMw0KLSsNCi0gIyBvdmVycmlkZSBkZWZhdWx0IG9mIG5vIHN1
YnN5c3RlbXMNCi0gU3Vic3lzdGVtCXNmdHAJL3Vzci9saWJleGVjL3NmdHAtc2VydmVyDQot
IA0KLWRpZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIHNz
aGRfY29uZmlnLjUgc3NoZF9jb25maWcuNQ0KLS0tLSBzc2hkX2NvbmZpZy41CTIwMDgtMDct
MDIgMDU6MzU6NDMuMDAwMDAwMDAwIC0wNzAwDQotKysrIHNzaGRfY29uZmlnLjUJMjAwOC0w
OC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDANCi1AQCAtMTAwMyw2ICsxMDAzLDYyIEBA
DQotIHByb2dyYW0uDQotIFRoZSBkZWZhdWx0IGlzDQotIC5QYSAvdXNyL1gxMVI2L2Jpbi94
YXV0aCAuDQotKy5JdCBDbSBVc2VMUEsNCi0rU3BlY2lmaWVzIHdoZXRoZXIgTERBUCBwdWJs
aWMga2V5IHJldHJpZXZhbCBtdXN0IGJlIHVzZWQgb3Igbm90LiBJdCBhbGxvdw0KLSthbiBl
YXN5IGNlbnRyYWxpc2F0aW9uIG9mIHB1YmxpYyBrZXlzIHdpdGhpbiBhbiBMREFQIGRpcmVj
dG9yeS4gVGhlIGFyZ3VtZW50IG11c3QgYmUNCi0rLkRxIHllcw0KLStvcg0KLSsuRHEgbm8g
Lg0KLSsuSXQgQ20gTHBrTGRhcENvbmYNCi0rU3BlY2lmaWVzIHdoZXRoZXIgTERBUCBQdWJs
aWMga2V5cyBzaG91bGQgcGFyc2UgdGhlIHNwZWNpZmllZCBsZGFwLmNvbmYgZmlsZQ0KLStp
bnN0ZWFkIG9mIHNzaGRfY29uZmlnIFRva2Vucy4gVGhlIGFyZ3VtZW50IG11c3QgYmUgYSB2
YWxpZCBwYXRoIHRvIGFuIGxkYXAuY29uZg0KLStmaWxlIGxpa2UNCi0rLlBhIC9ldGMvbGRh
cC5jb25mDQotKy5JdCBDbSBMcGtTZXJ2ZXJzDQotK1NwZWNpZmllcyBMREFQIG9uZSBvciBt
b3JlIFs6c3BhY2U6XSBzZXBhcmF0ZWQgc2VydmVyJ3MgdXJsIHRoZSBmb2xsb3dpbmcgZm9y
bSBtYXkgYmUgdXNlZDoNCi0rLlBwDQotK0xwa1NlcnZlcnMgbGRhcHM6Ly8xMjcuMC4wLjEg
bGRhcDovLzEyNy4wLjAuMiBsZGFwOi8vMTI3LjAuMC4zDQotKy5JdCBDbSBMcGtVc2VyRE4N
Ci0rU3BlY2lmaWVzIHRoZSBMREFQIHVzZXIgRE4uDQotKy5QcA0KLStMcGtVc2VyRE4gb3U9
dXNlcnMsZGM9cGhlYXIsZGM9b3JnDQotKy5JdCBDbSBMcGtHcm91cERODQotK1NwZWNpZmll
cyB0aGUgTERBUCBncm91cHMgRE4uDQotKy5QcA0KLStMcGtHcm91cEROIG91PWdyb3Vwcyxk
Yz1waGVhcixkYz1vcmcNCi0rLkl0IENtIExwa0JpbmRETg0KLStTcGVjaWZpZXMgdGhlIExE
QVAgYmluZCBETiB0byB1c2UgaWYgbmVjZXNzYXJ5Lg0KLSsuUHANCi0rTHBrQmluZEROIGNu
PU1hbmFnZXIsZGM9cGhlYXIsZGM9b3JnDQotKy5JdCBDbSBMcGtCaW5kUHcNCi0rU3BlY2lm
aWVzIHRoZSBMREFQIGJpbmQgY3JlZGVudGlhbC4gDQotKy5QcA0KLStMcGtCaW5kUHcgc2Vj
cmV0DQotKy5JdCBDbSBMcGtTZXJ2ZXJHcm91cA0KLStTcGVjaWZpZXMgb25lIG9yIG1vcmUg
WzpzcGFjZTpdIHNlcGFyYXRlZCBncm91cCB0aGUgc2VydmVyIGlzIHBhcnQgb2YuIA0KLSsu
UHANCi0rTHBrU2VydmVyR3JvdXAgdW5peCBtYWlsIHByb2QNCi0rLkl0IENtIExwa0ZpbHRl
cg0KLStTcGVjaWZpZXMgYW4gYWRkaXRpb25hbCBMREFQIGZpbHRlciB0byB1c2UgZm9yIGZp
bmRpbmcgU1NIIGtleXMNCi0rLlBwDQotK0xwa0ZpbHRlciAoaG9zdEFjY2Vzcz1tYXN0ZXIu
cGhlYXIub3JnKQ0KLSsuSXQgQ20gTHBrRm9yY2VUTFMNCi0rU3BlY2lmaWVzIGlmIHRoZSBM
REFQIHNlcnZlciBjb25uZWN0aW9uIG11c3QgYmUgdHJpZWQsIGZvcmNlZCBvciBub3QgdXNl
ZC4gVGhlIGFyZ3VtZW50IG11c3QgYmUgDQotKy5EcSB5ZXMNCi0rb3INCi0rLkRxIG5vDQot
K29yDQotKy5EcSB0cnkgLg0KLSsuSXQgQ20gTHBrU2VhcmNoVGltZWxpbWl0DQotK1NlcGNp
ZmllcyB0aGUgc2VhcmNoIHRpbWUgbGltaXQgYmVmb3JlIHRoZSBzZWFyY2ggaXMgY29uc2lk
ZXJlZCBvdmVyLiB2YWx1ZSBpcw0KLStpbiBzZWNvbmRzLg0KLSsuUHANCi0rTHBrU2VhcmNo
VGltZWxpbWl0IDMNCi0rLkl0IENtIExwa0JpbmRUaW1lbGltaXQNCi0rU2VwY2lmaWVzIHRo
ZSBiaW5kIHRpbWUgbGltaXQgYmVmb3JlIHRoZSBjb25uZWN0aW9uIGlzIGNvbnNpZGVyZWQg
ZGVhZC4gdmFsdWUgaXMNCi0raW4gc2Vjb25kcy4NCi0rLlBwDQotK0xwa0JpbmRUaW1lbGlt
aXQgMw0KLSAuRWwNCi0gLlNoIFRJTUUgRk9STUFUUw0KLSAuWHIgc3NoZCA4DQpkaWZmIC1O
cnUgL2hvbWUvZ2F3cmlsb2ZmL2xway9vcGVuc3NoLXBvcnRhYmxlL2ZpbGVzL2NvbnRyaWIt
b3BlbnNzaC1scGstNS4zcDEtMC4zLjEwLnBhdGNoIC9ob21lL2dhd3JpbG9mZi9vcGVuc3No
LXBvcnRhYmxlL2ZpbGVzL2NvbnRyaWItb3BlbnNzaC1scGstNS4zcDEtMC4zLjEwLnBhdGNo
DQotLS0gL2hvbWUvZ2F3cmlsb2ZmL2xway9vcGVuc3NoLXBvcnRhYmxlL2ZpbGVzL2NvbnRy
aWItb3BlbnNzaC1scGstNS4zcDEtMC4zLjEwLnBhdGNoCTE5NzAtMDEtMDEgMDM6MDA6MDAu
MDAwMDAwMDAwICswMzAwDQorKysgL2hvbWUvZ2F3cmlsb2ZmL29wZW5zc2gtcG9ydGFibGUv
ZmlsZXMvY29udHJpYi1vcGVuc3NoLWxway01LjNwMS0wLjMuMTAucGF0Y2gJMjAxMC0xMi0y
MSAxMTozMDowMi4wMDAwMDAwMDAgKzAyMDANCkBAIC0wLDAgKzEsMTg4MSBAQA0KK2RpZmYg
LU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIGF1dGgyLXB1Ymtl
eS5jIGF1dGgyLXB1YmtleS5jDQorLS0tIGF1dGgyLXB1YmtleS5jCTIwMDgtMDctMDMgMTk6
NTQ6MjUuMDAwMDAwMDAwIC0wNzAwDQorKysrIGF1dGgyLXB1YmtleS5jCTIwMDgtMDgtMjMg
MTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwDQorQEAgLTU1LDYgKzU1LDEwIEBADQorICNpbmNs
dWRlICJtb25pdG9yX3dyYXAuaCINCisgI2luY2x1ZGUgIm1pc2MuaCINCisgDQorKyNpZmRl
ZiBXSVRIX0xEQVBfUFVCS0VZDQorKyNpbmNsdWRlICJsZGFwYXV0aC5oIg0KKysjZW5kaWYN
CisrDQorIC8qIGltcG9ydCAqLw0KKyBleHRlcm4gU2VydmVyT3B0aW9ucyBvcHRpb25zOw0K
KyBleHRlcm4gdV9jaGFyICpzZXNzaW9uX2lkMjsNCitAQCAtMTgzLDEwICsxODcsNzkgQEAN
CisgCXVfbG9uZyBsaW5lbnVtID0gMDsNCisgCUtleSAqZm91bmQ7DQorIAljaGFyICpmcDsN
CisrI2lmZGVmIFdJVEhfTERBUF9QVUJLRVkNCisrCWxkYXBfa2V5X3QgKiBrOw0KKysJdW5z
aWduZWQgaW50IGkgPSAwOw0KKysjZW5kaWYNCisgDQorIAkvKiBUZW1wb3JhcmlseSB1c2Ug
dGhlIHVzZXIncyB1aWQuICovDQorIAl0ZW1wb3JhcmlseV91c2VfdWlkKHB3KTsNCisgDQor
KyNpZmRlZiBXSVRIX0xEQVBfUFVCS0VZDQorKyAJZm91bmRfa2V5ID0gMDsNCisrIAkvKiBh
bGxvY2F0ZSBhIG5ldyBrZXkgdHlwZSAqLw0KKysgCWZvdW5kID0ga2V5X25ldyhrZXktPnR5
cGUpOw0KKysgDQorKyAJLyogZmlyc3QgY2hlY2sgaWYgdGhlIG9wdGlvbnMgaXMgZW5hYmxl
ZCwgdGhlbiB0cnkuLiAqLw0KKysJaWYgKG9wdGlvbnMubHBrLm9uKSB7DQorKwkgICAgZGVi
dWcoIltMREFQXSB0cnlpbmcgTERBUCBmaXJzdCB1aWQ9JXMiLHB3LT5wd19uYW1lKTsNCisr
CSAgICBpZiAobGRhcF9pc21lbWJlcigmb3B0aW9ucy5scGssIHB3LT5wd19uYW1lKSA+IDAp
IHsNCisrCQlpZiAoKGsgPSBsZGFwX2dldHVzZXJrZXkoJm9wdGlvbnMubHBrLCBwdy0+cHdf
bmFtZSkpICE9IE5VTEwpIHsNCisrCQkgICAgLyogU2tpcCBsZWFkaW5nIHdoaXRlc3BhY2Us
IGVtcHR5IGFuZCBjb21tZW50IGxpbmVzLiAqLw0KKysJCSAgICBmb3IgKGkgPSAwIDsgaSA8
IGstPm51bSA7IGkrKykgew0KKysJCQkvKiBkb250IGZvcmdldCBpZiBtdWx0aXBsZSBrZXlz
IHRvIHJlc2V0IG9wdGlvbnMgKi8NCisrCQkJY2hhciAqY3AsICpvcHRpb25zID0gTlVMTDsN
CisrDQorKwkJCWZvciAoY3AgPSAoY2hhciAqKWstPmtleXNbaV0tPmJ2X3ZhbDsgKmNwID09
ICcgJyB8fCAqY3AgPT0gJ1x0JzsgY3ArKykNCisrCQkJICAgIDsNCisrCQkJaWYgKCEqY3Ag
fHwgKmNwID09ICdcbicgfHwgKmNwID09ICcjJykNCisrCQkJICAgIGNvbnRpbnVlOw0KKysN
CisrCQkJaWYgKGtleV9yZWFkKGZvdW5kLCAmY3ApICE9IDEpIHsNCisrCQkJICAgIC8qIG5v
IGtleT8gIGNoZWNrIGlmIHRoZXJlIGFyZSBvcHRpb25zIGZvciB0aGlzIGtleSAqLw0KKysJ
CQkgICAgaW50IHF1b3RlZCA9IDA7DQorKwkJCSAgICBkZWJ1ZzIoIltMREFQXSB1c2VyX2tl
eV9hbGxvd2VkOiBjaGVjayBvcHRpb25zOiAnJXMnIiwgY3ApOw0KKysJCQkgICAgb3B0aW9u
cyA9IGNwOw0KKysJCQkgICAgZm9yICg7ICpjcCAmJiAocXVvdGVkIHx8ICgqY3AgIT0gJyAn
ICYmICpjcCAhPSAnXHQnKSk7IGNwKyspIHsNCisrCQkJCWlmICgqY3AgPT0gJ1xcJyAmJiBj
cFsxXSA9PSAnIicpDQorKwkJCQkgICAgY3ArKzsJLyogU2tpcCBib3RoICovDQorKwkJCQll
bHNlIGlmICgqY3AgPT0gJyInKQ0KKysJCQkJICAgIHF1b3RlZCA9ICFxdW90ZWQ7DQorKwkJ
CSAgICB9DQorKwkJCSAgICAvKiBTa2lwIHJlbWFpbmluZyB3aGl0ZXNwYWNlLiAqLw0KKysJ
CQkgICAgZm9yICg7ICpjcCA9PSAnICcgfHwgKmNwID09ICdcdCc7IGNwKyspDQorKwkJCQk7
DQorKwkJCSAgICBpZiAoa2V5X3JlYWQoZm91bmQsICZjcCkgIT0gMSkgew0KKysJCQkJZGVi
dWcyKCJbTERBUF0gdXNlcl9rZXlfYWxsb3dlZDogYWR2YW5jZTogJyVzJyIsIGNwKTsNCisr
CQkJCS8qIHN0aWxsIG5vIGtleT8gIGFkdmFuY2UgdG8gbmV4dCBsaW5lKi8NCisrCQkJCWNv
bnRpbnVlOw0KKysJCQkgICAgfQ0KKysJCQl9DQorKw0KKysJCQlpZiAoa2V5X2VxdWFsKGZv
dW5kLCBrZXkpICYmDQorKwkJCQlhdXRoX3BhcnNlX29wdGlvbnMocHcsIG9wdGlvbnMsIGZp
bGUsIGxpbmVudW0pID09IDEpIHsNCisrCQkJICAgIGZvdW5kX2tleSA9IDE7DQorKwkJCSAg
ICBkZWJ1ZygiW0xEQVBdIG1hdGNoaW5nIGtleSBmb3VuZCIpOw0KKysJCQkgICAgZnAgPSBr
ZXlfZmluZ2VycHJpbnQoZm91bmQsIFNTSF9GUF9NRDUsIFNTSF9GUF9IRVgpOw0KKysJCQkg
ICAgdmVyYm9zZSgiW0xEQVBdIEZvdW5kIG1hdGNoaW5nICVzIGtleTogJXMiLCBrZXlfdHlw
ZShmb3VuZCksIGZwKTsNCisrDQorKwkJCSAgICAvKiByZXN0b3JpbmcgbWVtb3J5ICovDQor
KwkJCSAgICBsZGFwX2tleXNfZnJlZShrKTsNCisrCQkJICAgIHhmcmVlKGZwKTsNCisrCQkJ
ICAgIHJlc3RvcmVfdWlkKCk7DQorKwkJCSAgICBrZXlfZnJlZShmb3VuZCk7DQorKwkJCSAg
ICByZXR1cm4gZm91bmRfa2V5Ow0KKysJCQkgICAgYnJlYWs7DQorKwkJCX0NCisrCQkgICAg
fS8qIGVuZCBvZiBMREFQIGZvcigpICovDQorKwkJfSBlbHNlIHsNCisrCQkgICAgbG9naXQo
IltMREFQXSBubyBrZXlzIGZvdW5kIGZvciAnJXMnISIsIHB3LT5wd19uYW1lKTsNCisrCQl9
DQorKwkgICAgfSBlbHNlIHsNCisrCQlsb2dpdCgiW0xEQVBdICclcycgaXMgbm90IGluICcl
cyciLCBwdy0+cHdfbmFtZSwgb3B0aW9ucy5scGsuc2dyb3VwKTsNCisrCSAgICB9DQorKwl9
DQorKyNlbmRpZg0KKyAJZGVidWcoInRyeWluZyBwdWJsaWMga2V5IGZpbGUgJXMiLCBmaWxl
KTsNCisgCWYgPSBhdXRoX29wZW5rZXlmaWxlKGZpbGUsIHB3LCBvcHRpb25zLnN0cmljdF9t
b2Rlcyk7DQorIA0KK2RpZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhjbHVkZSAn
Ki5yZWonIGF1dGgtcnNhLmMgYXV0aC1yc2EuYw0KKy0tLSBhdXRoLXJzYS5jCTIwMDgtMDct
MDIgMDU6Mzc6MzAuMDAwMDAwMDAwIC0wNzAwDQorKysrIGF1dGgtcnNhLmMJMjAwOC0wOC0y
MyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDANCitAQCAtMTc0LDEwICsxNzQsOTYgQEANCisg
CUZJTEUgKmY7DQorIAl1X2xvbmcgbGluZW51bSA9IDA7DQorIAlLZXkgKmtleTsNCisrI2lm
ZGVmIFdJVEhfTERBUF9QVUJLRVkNCisrCWxkYXBfa2V5X3QgKiBrOw0KKysJdW5zaWduZWQg
aW50IGkgPSAwOw0KKysjZW5kaWYNCisgDQorIAkvKiBUZW1wb3JhcmlseSB1c2UgdGhlIHVz
ZXIncyB1aWQuICovDQorIAl0ZW1wb3JhcmlseV91c2VfdWlkKHB3KTsNCisgDQorKyNpZmRl
ZiBXSVRIX0xEQVBfUFVCS0VZDQorKwkvKiBoZXJlIGlzIHRoZSBqb2IgKi8NCisrCWtleSA9
IGtleV9uZXcoS0VZX1JTQTEpOw0KKysNCisrCWlmIChvcHRpb25zLmxway5vbikgew0KKysJ
ICAgIGRlYnVnKCJbTERBUF0gdHJ5aW5nIExEQVAgZmlyc3QgdWlkPSVzIiwgcHctPnB3X25h
bWUpOw0KKysJICAgIGlmICggbGRhcF9pc21lbWJlcigmb3B0aW9ucy5scGssIHB3LT5wd19u
YW1lKSA+IDApIHsNCisrCQlpZiAoIChrID0gbGRhcF9nZXR1c2Vya2V5KCZvcHRpb25zLmxw
aywgcHctPnB3X25hbWUpKSAhPSBOVUxMKSB7DQorKwkJICAgIGZvciAoaSA9IDAgOyBpIDwg
ay0+bnVtIDsgaSsrKSB7DQorKwkJCWNoYXIgKmNwLCAqb3B0aW9ucyA9IE5VTEw7DQorKw0K
KysJCQlmb3IgKGNwID0gay0+a2V5c1tpXS0+YnZfdmFsOyAqY3AgPT0gJyAnIHx8ICpjcCA9
PSAnXHQnOyBjcCsrKQ0KKysJCQkgICAgOw0KKysJCQlpZiAoISpjcCB8fCAqY3AgPT0gJ1xu
JyB8fCAqY3AgPT0gJyMnKQ0KKysJCQkgICAgY29udGludWU7DQorKw0KKysJCQkvKg0KKysJ
CQkqIENoZWNrIGlmIHRoZXJlIGFyZSBvcHRpb25zIGZvciB0aGlzIGtleSwgYW5kIGlmIHNv
LA0KKysJCQkqIHNhdmUgdGhlaXIgc3RhcnRpbmcgYWRkcmVzcyBhbmQgc2tpcCB0aGUgb3B0
aW9uIHBhcnQNCisrCQkJKiBmb3Igbm93LiAgSWYgdGhlcmUgYXJlIG5vIG9wdGlvbnMsIHNl
dCB0aGUgc3RhcnRpbmcNCisrCQkJKiBhZGRyZXNzIHRvIE5VTEwuDQorKwkJCSAqLw0KKysJ
CQlpZiAoKmNwIDwgJzAnIHx8ICpjcCA+ICc5Jykgew0KKysJCQkgICAgaW50IHF1b3RlZCA9
IDA7DQorKwkJCSAgICBvcHRpb25zID0gY3A7DQorKwkJCSAgICBmb3IgKDsgKmNwICYmIChx
dW90ZWQgfHwgKCpjcCAhPSAnICcgJiYgKmNwICE9ICdcdCcpKTsgY3ArKykgew0KKysJCQkJ
aWYgKCpjcCA9PSAnXFwnICYmIGNwWzFdID09ICciJykNCisrCQkJCSAgICBjcCsrOwkvKiBT
a2lwIGJvdGggKi8NCisrCQkJCWVsc2UgaWYgKCpjcCA9PSAnIicpDQorKwkJCQkgICAgcXVv
dGVkID0gIXF1b3RlZDsNCisrCQkJICAgIH0NCisrCQkJfSBlbHNlDQorKwkJCSAgICBvcHRp
b25zID0gTlVMTDsNCisrDQorKwkJCS8qIFBhcnNlIHRoZSBrZXkgZnJvbSB0aGUgbGluZS4g
Ki8NCisrCQkJaWYgKGhvc3RmaWxlX3JlYWRfa2V5KCZjcCwgJmJpdHMsIGtleSkgPT0gMCkg
ew0KKysJCQkgICAgZGVidWcoIltMREFQXSBsaW5lICVkOiBub24gc3NoMSBrZXkgc3ludGF4
IiwgaSk7DQorKwkJCSAgICBjb250aW51ZTsNCisrCQkJfQ0KKysJCQkvKiBjcCBub3cgcG9p
bnRzIHRvIHRoZSBjb21tZW50IHBhcnQuICovDQorKw0KKysJCQkvKiBDaGVjayBpZiB0aGUg
d2UgaGF2ZSBmb3VuZCB0aGUgZGVzaXJlZCBrZXkgKGlkZW50aWZpZWQgYnkgaXRzIG1vZHVs
dXMpLiAqLw0KKysJCQlpZiAoQk5fY21wKGtleS0+cnNhLT5uLCBjbGllbnRfbikgIT0gMCkN
CisrCQkJICAgIGNvbnRpbnVlOw0KKysNCisrCQkJLyogY2hlY2sgdGhlIHJlYWwgYml0cyAg
Ki8NCisrCQkJaWYgKGJpdHMgIT0gKHVuc2lnbmVkIGludClCTl9udW1fYml0cyhrZXktPnJz
YS0+bikpDQorKwkJCSAgICBsb2dpdCgiW0xEQVBdIFdhcm5pbmc6IGxkYXAsIGxpbmUgJWx1
OiBrZXlzaXplIG1pc21hdGNoOiAiDQorKwkJCQkgICAgImFjdHVhbCAlZCB2cy4gYW5ub3Vu
Y2VkICVkLiIsICh1bnNpZ25lZCBsb25nKWksIEJOX251bV9iaXRzKGtleS0+cnNhLT5uKSwg
Yml0cyk7DQorKw0KKysJCQkvKiBXZSBoYXZlIGZvdW5kIHRoZSBkZXNpcmVkIGtleS4gKi8N
CisrCQkJLyoNCisrCQkJKiBJZiBvdXIgb3B0aW9ucyBkbyBub3QgYWxsb3cgdGhpcyBrZXkg
dG8gYmUgdXNlZCwNCisrCQkJKiBkbyBub3Qgc2VuZCBjaGFsbGVuZ2UuDQorKwkJCSAqLw0K
KysJCQlpZiAoIWF1dGhfcGFyc2Vfb3B0aW9ucyhwdywgb3B0aW9ucywgIltMREFQXSIsICh1
bnNpZ25lZCBsb25nKSBpKSkNCisrCQkJICAgIGNvbnRpbnVlOw0KKysNCisrCQkJLyogYnJl
YWsgb3V0LCB0aGlzIGtleSBpcyBhbGxvd2VkICovDQorKwkJCWFsbG93ZWQgPSAxOw0KKysN
CisrCQkJLyogYWRkIHRoZSByZXR1cm4gc3R1ZmYgZXRjLi4uICovDQorKwkJCS8qIFJlc3Rv
cmUgdGhlIHByaXZpbGVnZWQgdWlkLiAqLw0KKysJCQlyZXN0b3JlX3VpZCgpOw0KKysNCisr
CQkJLyogcmV0dXJuIGtleSBpZiBhbGxvd2VkICovDQorKwkJCWlmIChhbGxvd2VkICYmIHJr
ZXkgIT0gTlVMTCkNCisrCQkJICAgICpya2V5ID0ga2V5Ow0KKysJCQllbHNlDQorKwkJCSAg
ICBrZXlfZnJlZShrZXkpOw0KKysNCisrCQkJbGRhcF9rZXlzX2ZyZWUoayk7DQorKwkJCXJl
dHVybiAoYWxsb3dlZCk7DQorKwkJICAgIH0NCisrCQl9IGVsc2Ugew0KKysJCSAgICBsb2dp
dCgiW0xEQVBdIG5vIGtleXMgZm91bmQgZm9yICclcychIiwgcHctPnB3X25hbWUpOw0KKysJ
CX0NCisrCSAgICB9IGVsc2Ugew0KKysJCWxvZ2l0KCJbTERBUF0gJyVzJyBpcyBub3QgaW4g
JyVzJyIsIHB3LT5wd19uYW1lLCBvcHRpb25zLmxway5zZ3JvdXApOw0KKysJICAgIH0NCisr
CX0NCisrI2VuZGlmDQorIAkvKiBUaGUgYXV0aG9yaXplZCBrZXlzLiAqLw0KKyAJZmlsZSA9
IGF1dGhvcml6ZWRfa2V5c19maWxlKHB3KTsNCisgCWRlYnVnKCJ0cnlpbmcgcHVibGljIFJT
QSBrZXkgZmlsZSAlcyIsIGZpbGUpOw0KK2RpZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcn
IC0tZXhjbHVkZSAnKi5yZWonIGNvbmZpZy5oLmluIGNvbmZpZy5oLmluDQorLS0tIGNvbmZp
Zy5oLmluCTIwMDgtMDctMjEgMDE6MzA6NDkuMDAwMDAwMDAwIC0wNzAwDQorKysrIGNvbmZp
Zy5oLmluCTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwDQorQEAgLTU3NSw2
ICs1NzUsOSBAQA0KKyAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxpbnV4L2lm
X3R1bi5oPiBoZWFkZXIgZmlsZS4gKi8NCisgI3VuZGVmIEhBVkVfTElOVVhfSUZfVFVOX0gN
CisgDQorKy8qIERlZmluZSBpZiB5b3Ugd2FudCBMREFQIHN1cHBvcnQgKi8NCisrI3VuZGVm
IFdJVEhfTERBUF9QVUJLRVkNCisrDQorIC8qIERlZmluZSBpZiB5b3VyIGxpYnJhcmllcyBk
ZWZpbmUgbG9naW4oKSAqLw0KKyAjdW5kZWYgSEFWRV9MT0dJTg0KKyANCitkaWZmIC1OdWFy
IC0tZXhjbHVkZSAnKi5vcmlnJyAtLWV4Y2x1ZGUgJyoucmVqJyBjb25maWd1cmUgY29uZmln
dXJlDQorLS0tIGNvbmZpZ3VyZQkyMDA4LTA3LTIxIDAxOjMwOjUwLjAwMDAwMDAwMCAtMDcw
MA0KKysrKyBjb25maWd1cmUJMjAwOC0wOC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDAN
CitAQCAtMTQ2OCw2ICsxNDY4LDcgQEANCisgICAtLXdpdGgtdGNwLXdyYXBwZXJzWz1QQVRI
XSBFbmFibGUgdGNwd3JhcHBlcnMgc3VwcG9ydCAob3B0aW9uYWxseSBpbiBQQVRIKQ0KKyAg
IC0td2l0aC1saWJlZGl0Wz1QQVRIXSAgIEVuYWJsZSBsaWJlZGl0IHN1cHBvcnQgZm9yIHNm
dHANCisgICAtLXdpdGgtYXVkaXQ9bW9kdWxlICAgICBFbmFibGUgRVhQRVJJTUVOVEFMIGF1
ZGl0IHN1cHBvcnQgKG1vZHVsZXM9ZGVidWcsYnNtKQ0KKysgIC0td2l0aC1sZGFwWz1QQVRI
XSAgICAgIEVuYWJsZSBMREFQIHB1YmtleSBzdXBwb3J0IChvcHRpb25hbGx5IGluIFBBVEgp
DQorICAgLS13aXRoLXNzbC1kaXI9UEFUSCAgICAgU3BlY2lmeSBwYXRoIHRvIE9wZW5TU0wg
aW5zdGFsbGF0aW9uDQorICAgLS13aXRob3V0LW9wZW5zc2wtaGVhZGVyLWNoZWNrIERpc2Fi
bGUgT3BlblNTTCB2ZXJzaW9uIGNvbnNpc3RlbmN5IGNoZWNrDQorICAgLS13aXRoLXNzbC1l
bmdpbmUgICAgICAgRW5hYmxlIE9wZW5TU0wgKGhhcmR3YXJlKSBFTkdJTkUgc3VwcG9ydA0K
K0BAIC0xMzQxMSw2ICsxMzQxMiw4NSBAQA0KKyBmaQ0KKyANCisgDQorKyMgQ2hlY2sgd2hl
dGhlciB1c2VyIHdhbnRzIExEQVAgc3VwcG9ydA0KKytMREFQX01TRz0ibm8iDQorKw0KKysj
IENoZWNrIHdoZXRoZXIgLS13aXRoLWxkYXAgd2FzIGdpdmVuLg0KKytpZiB0ZXN0ICIke3dp
dGhfbGRhcCtzZXR9IiA9IHNldDsgdGhlbg0KKysgIHdpdGh2YWw9JHdpdGhfbGRhcDsNCisr
CQlpZiB0ZXN0ICJ4JHdpdGh2YWwiICE9ICJ4bm8iIDsgdGhlbg0KKysNCisrCQkJaWYgdGVz
dCAieCR3aXRodmFsIiAhPSAieHllcyIgOyB0aGVuDQorKwkJCQlDUFBGTEFHUz0iJENQUEZM
QUdTIC1JJHt3aXRodmFsfS9pbmNsdWRlIg0KKysJCQkJTERGTEFHUz0iJExERkxBR1MgLUwk
e3dpdGh2YWx9L2xpYiINCisrCQkJZmkNCisrDQorKw0KKytjYXQgPj5jb25mZGVmcy5oIDw8
XF9BQ0VPRg0KKysjZGVmaW5lIFdJVEhfTERBUF9QVUJLRVkgMQ0KKytfQUNFT0YNCisrDQor
KwkJCUxJQlM9Ii1sbGRhcCAkTElCUyINCisrCQkJTERBUF9NU0c9InllcyINCisrDQorKwkJ
CXsgZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBMREFQIHN1cHBvcnQiID4m
NQ0KKytlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBMREFQIHN1cHBvcnQuLi4gJEVDSE9f
QyIgPiY2OyB9DQorKwkJCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRg0KKysvKiBj
b25mZGVmcy5oLiAgKi8NCisrX0FDRU9GDQorK2NhdCBjb25mZGVmcy5oID4+Y29uZnRlc3Qu
JGFjX2V4dA0KKytjYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GDQorKy8qIGVuZCBj
b25mZGVmcy5oLiAgKi8NCisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPg0KKysJCQkJICNpbmNs
dWRlIDxsZGFwLmg+DQorK2ludA0KKyttYWluICgpDQorK3sNCisrKHZvaWQpbGRhcF9pbml0
KDAsIDApOw0KKysgIDsNCisrICByZXR1cm4gMDsNCisrfQ0KKytfQUNFT0YNCisrcm0gLWYg
Y29uZnRlc3QuJGFjX29iamV4dA0KKytpZiB7IChhY190cnk9IiRhY19jb21waWxlIg0KKytj
YXNlICIoKCRhY190cnkiIGluDQorKyAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNo
bz1cJGFjX3RyeTs7DQorKyAgKikgYWNfdHJ5X2VjaG89JGFjX3RyeTs7DQorK2VzYWMNCisr
ZXZhbCAiZWNobyBcIlwkYXNfbWU6JExJTkVOTzogJGFjX3RyeV9lY2hvXCIiKSA+JjUNCisr
ICAoZXZhbCAiJGFjX2NvbXBpbGUiKSAyPmNvbmZ0ZXN0LmVyMQ0KKysgIGFjX3N0YXR1cz0k
Pw0KKysgIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyDQorKyAg
cm0gLWYgY29uZnRlc3QuZXIxDQorKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUNCisrICBlY2hv
ICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1DQorKyAgKGV4aXQgJGFj
X3N0YXR1cyk7IH0gJiYgew0KKysJIHRlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIiB8fA0K
KysJIHRlc3QgISAtcyBjb25mdGVzdC5lcnINCisrICAgICAgIH0gJiYgdGVzdCAtcyBjb25m
dGVzdC4kYWNfb2JqZXh0OyB0aGVuDQorKyAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVz
dWx0OiB5ZXMiID4mNQ0KKytlY2hvICIke0VDSE9fVH15ZXMiID4mNjsgfQ0KKytlbHNlDQor
KyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUNCisrc2VkICdzL14v
fCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQ0KKysNCisrDQorKwkJCQkgICAgeyBlY2hvICIk
YXNfbWU6JExJTkVOTzogcmVzdWx0OiBubyIgPiY1DQorK2VjaG8gIiR7RUNIT19UfW5vIiA+
JjY7IH0NCisrCQkJCQl7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiAqKiBJbmNv
bXBsZXRlIG9yIG1pc3NpbmcgbGRhcCBsaWJyYXJpZXMgKioiID4mNQ0KKytlY2hvICIkYXNf
bWU6IGVycm9yOiAqKiBJbmNvbXBsZXRlIG9yIG1pc3NpbmcgbGRhcCBsaWJyYXJpZXMgKioi
ID4mMjt9DQorKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQ0KKysNCisrDQorK2ZpDQor
Kw0KKytybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0
ZXN0LiRhY19leHQNCisrCQlmaQ0KKysNCisrDQorK2ZpDQorKw0KKysNCisgDQorIA0KKyAN
CitAQCAtMzIyMjUsNiArMzIzMDUsNyBAQA0KKyBlY2hvICIgICAgICAgICAgICAgICAgIFNt
YXJ0Y2FyZCBzdXBwb3J0OiAkU0NBUkRfTVNHIg0KKyBlY2hvICIgICAgICAgICAgICAgICAg
ICAgICBTL0tFWSBzdXBwb3J0OiAkU0tFWV9NU0ciDQorIGVjaG8gIiAgICAgICAgICAgICAg
VENQIFdyYXBwZXJzIHN1cHBvcnQ6ICRUQ1BXX01TRyINCisrZWNobyAiICAgICAgICAgICAg
ICAgICAgICAgIExEQVAgc3VwcG9ydDogJExEQVBfTVNHIg0KKyBlY2hvICIgICAgICAgICAg
ICAgIE1ENSBwYXNzd29yZCBzdXBwb3J0OiAkTUQ1X01TRyINCisgZWNobyAiICAgICAgICAg
ICAgICAgICAgIGxpYmVkaXQgc3VwcG9ydDogJExJQkVESVRfTVNHIg0KKyBlY2hvICIgIFNv
bGFyaXMgcHJvY2VzcyBjb250cmFjdCBzdXBwb3J0OiAkU1BDX01TRyINCitkaWZmIC1OdWFy
IC0tZXhjbHVkZSAnKi5vcmlnJyAtLWV4Y2x1ZGUgJyoucmVqJyBjb25maWd1cmUuYWMgY29u
ZmlndXJlLmFjDQorLS0tIGNvbmZpZ3VyZS5hYwkyMDA4LTA3LTA5IDA0OjA3OjE5LjAwMDAw
MDAwMCAtMDcwMA0KKysrKyBjb25maWd1cmUuYWMJMjAwOC0wOC0yMyAxNTowMjo0Ny4wMDAw
MDAwMDAgLTA3MDANCitAQCAtMTMxOSw2ICsxMzE5LDM3IEBADQorIAllc2FjIF0NCisgKQ0K
KyANCisrIyBDaGVjayB3aGV0aGVyIHVzZXIgd2FudHMgTERBUCBzdXBwb3J0DQorK0xEQVBf
TVNHPSJubyINCisrQUNfQVJHX1dJVEgobGRhcCwNCisrCVsgIC0td2l0aC1sZGFwW1s9UEFU
SF1dICAgICAgRW5hYmxlIExEQVAgcHVia2V5IHN1cHBvcnQgKG9wdGlvbmFsbHkgaW4gUEFU
SCldLA0KKysJWw0KKysJCWlmIHRlc3QgIngkd2l0aHZhbCIgIT0gInhubyIgOyB0aGVuDQor
Kw0KKysJCQlpZiB0ZXN0ICJ4JHdpdGh2YWwiICE9ICJ4eWVzIiA7IHRoZW4NCisrCQkJCUNQ
UEZMQUdTPSIkQ1BQRkxBR1MgLUkke3dpdGh2YWx9L2luY2x1ZGUiDQorKwkJCQlMREZMQUdT
PSIkTERGTEFHUyAtTCR7d2l0aHZhbH0vbGliIg0KKysJCQlmaQ0KKysNCisrCQkJQUNfREVG
SU5FKFtXSVRIX0xEQVBfUFVCS0VZXSwgMSwgW0VuYWJsZSBMREFQIHB1YmtleSBzdXBwb3J0
XSkNCisrCQkJTElCUz0iLWxsZGFwICRMSUJTIg0KKysJCQlMREFQX01TRz0ieWVzIg0KKysJ
DQorKwkJCUFDX01TR19DSEVDS0lORyhbZm9yIExEQVAgc3VwcG9ydF0pDQorKwkJCUFDX1RS
WV9DT01QSUxFKA0KKysJCQkJWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4NCisrCQkJCSAjaW5j
bHVkZSA8bGRhcC5oPl0sDQorKwkJCQlbKHZvaWQpbGRhcF9pbml0KDAsIDApO10sDQorKwkJ
CQlbQUNfTVNHX1JFU1VMVCh5ZXMpXSwNCisrCQkJCVsNCisrCQkJCSAgICBBQ19NU0dfUkVT
VUxUKG5vKSANCisrCQkJCQlBQ19NU0dfRVJST1IoWyoqIEluY29tcGxldGUgb3IgbWlzc2lu
ZyBsZGFwIGxpYnJhcmllcyAqKl0pDQorKwkJCQldDQorKyAgICAgICAgCSkNCisrCQlmaQ0K
KysJXQ0KKyspDQorKw0KKyBkbmwgICAgQ2hlY2tzIGZvciBsaWJyYXJ5IGZ1bmN0aW9ucy4g
UGxlYXNlIGtlZXAgaW4gYWxwaGFiZXRpY2FsIG9yZGVyDQorIEFDX0NIRUNLX0ZVTkNTKCBc
DQorIAlhcmM0cmFuZG9tIFwNCitAQCAtNDIyOSw2ICs0MjYwLDcgQEANCisgZWNobyAiICAg
ICAgICAgICAgICAgICBTbWFydGNhcmQgc3VwcG9ydDogJFNDQVJEX01TRyINCisgZWNobyAi
ICAgICAgICAgICAgICAgICAgICAgUy9LRVkgc3VwcG9ydDogJFNLRVlfTVNHIg0KKyBlY2hv
ICIgICAgICAgICAgICAgIFRDUCBXcmFwcGVycyBzdXBwb3J0OiAkVENQV19NU0ciDQorK2Vj
aG8gIiAgICAgICAgICAgICAgICAgICAgICBMREFQIHN1cHBvcnQ6ICRMREFQX01TRyINCisg
ZWNobyAiICAgICAgICAgICAgICBNRDUgcGFzc3dvcmQgc3VwcG9ydDogJE1ENV9NU0ciDQor
IGVjaG8gIiAgICAgICAgICAgICAgICAgICBsaWJlZGl0IHN1cHBvcnQ6ICRMSUJFRElUX01T
RyINCisgZWNobyAiICBTb2xhcmlzIHByb2Nlc3MgY29udHJhY3Qgc3VwcG9ydDogJFNQQ19N
U0ciDQorZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRlICcqLnJlaicg
bGRhcGF1dGguYyBsZGFwYXV0aC5jDQorLS0tIGxkYXBhdXRoLmMJMTk2OS0xMi0zMSAxNjow
MDowMC4wMDAwMDAwMDAgLTA4MDANCisrKysgbGRhcGF1dGguYwkyMDA4LTA4LTIzIDE1OjAy
OjQ3LjAwMDAwMDAwMCAtMDcwMA0KK0BAIC0wLDAgKzEsNTc1IEBADQorKy8qIA0KKysgKiAk
SWQ6IG9wZW5zc2gtbHBrLTQuM3AxLTAuMy43LnBhdGNoLHYgMS4zIDIwMDYvMDQvMTggMTU6
Mjk6MDkgZWF1IEV4cCAkDQorKyAqLw0KKysNCisrLyoNCisrICoNCisrICogQ29weXJpZ2h0
IChjKSAyMDA1LCBFcmljIEFVR0UgPGVhdUBwaGVhci5vcmc+DQorKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuDQorKyAqDQorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1l
dDoNCisrICoNCisrICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKysgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorKyAqIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhl
IHBoZWFyLm9yZyBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KKysg
Kg0KKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCANCisrICogQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIA0KKysgKiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIA0KKysgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyANCisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCANCisr
ICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCisrICoNCisrICoN
CisrICovDQorKw0KKysjaW5jbHVkZSAiaW5jbHVkZXMuaCINCisrDQorKyNpZmRlZiBXSVRI
X0xEQVBfUFVCS0VZDQorKw0KKysjaW5jbHVkZSA8c3RkaW8uaD4NCisrI2luY2x1ZGUgPHN0
ZGxpYi5oPg0KKysjaW5jbHVkZSA8dW5pc3RkLmg+DQorKyNpbmNsdWRlIDxzdHJpbmcuaD4N
CisrDQorKyNpbmNsdWRlICJsZGFwYXV0aC5oIg0KKysjaW5jbHVkZSAibG9nLmgiDQorKw0K
KytzdGF0aWMgY2hhciAqYXR0cnNbXSA9IHsNCisrICAgIFBVQktFWUFUVFIsDQorKyAgICBO
VUxMDQorK307DQorKw0KKysvKiBmaWx0ZXIgYnVpbGRpbmcgaW5mb3MgKi8NCisrI2RlZmlu
ZSBGSUxURVJfR1JPVVBfUFJFRklYICIoJihvYmplY3RjbGFzcz1wb3NpeEdyb3VwKSINCisr
I2RlZmluZSBGSUxURVJfT1JfUFJFRklYICIofCINCisrI2RlZmluZSBGSUxURVJfT1JfU1VG
RklYICIpIg0KKysjZGVmaW5lIEZJTFRFUl9DTl9QUkVGSVggIihjbj0iDQorKyNkZWZpbmUg
RklMVEVSX0NOX1NVRkZJWCAiKSINCisrI2RlZmluZSBGSUxURVJfVUlEX0ZPUk1BVCAiKG1l
bWJlclVpZD0lcykiDQorKyNkZWZpbmUgRklMVEVSX0dST1VQX1NVRkZJWCAiKSINCisrI2Rl
ZmluZSBGSUxURVJfR1JPVVBfU0laRShncm91cCkgKHNpemVfdCkgKHN0cmxlbihncm91cCkr
KGxkYXBfY291bnRfZ3JvdXAoZ3JvdXApKjUpKzUyKQ0KKysNCisrLyoganVzdCBmaWx0ZXIg
YnVpbGRpbmcgc3R1ZmYgKi8NCisrI2RlZmluZSBSRVFVRVNUX0dST1VQX1NJWkUoZmlsdGVy
LCB1aWQpIChzaXplX3QpIChzdHJsZW4oZmlsdGVyKStzdHJsZW4odWlkKSsxKQ0KKysjZGVm
aW5lIFJFUVVFU1RfR1JPVVAoYnVmZmVyLCBwcmVmaWx0ZXIsIHB3bmFtZSkgXA0KKysgICAg
YnVmZmVyID0gKGNoYXIgKikgY2FsbG9jKFJFUVVFU1RfR1JPVVBfU0laRShwcmVmaWx0ZXIs
IHB3bmFtZSksIHNpemVvZihjaGFyKSk7IFwNCisrICAgIGlmICghYnVmZmVyKSB7IFwNCisr
ICAgICAgICBwZXJyb3IoImNhbGxvYygpIik7IFwNCisrICAgICAgICByZXR1cm4gRkFJTFVS
RTsgXA0KKysgICAgfSBcDQorKyAgICBzbnByaW50ZihidWZmZXIsIFJFUVVFU1RfR1JPVVBf
U0laRShwcmVmaWx0ZXIscHduYW1lKSwgcHJlZmlsdGVyLCBwd25hbWUpDQorKy8qDQorK1hY
WCBPTEQgZ3JvdXAgYnVpbGRpbmcgbWFjcm9zDQorKyNkZWZpbmUgUkVRVUVTVF9HUk9VUF9T
SVpFKGdycCwgdWlkKSAoc2l6ZV90KSAoc3RybGVuKGdycCkrc3RybGVuKHVpZCkrNDYpDQor
KyNkZWZpbmUgUkVRVUVTVF9HUk9VUChidWZmZXIscHduYW1lLGdycCkgXA0KKysgICAgYnVm
ZmVyID0gKGNoYXIgKikgY2FsbG9jKFJFUVVFU1RfR1JPVVBfU0laRShncnAsIHB3bmFtZSks
IHNpemVvZihjaGFyKSk7IFwNCisrICAgIGlmICghYnVmZmVyKSB7IFwNCisrICAgICAgICBw
ZXJyb3IoImNhbGxvYygpIik7IFwNCisrICAgICAgICByZXR1cm4gRkFJTFVSRTsgXA0KKysg
ICAgfSBcDQorKyAgICBzbnByaW50ZihidWZmZXIsUkVRVUVTVF9HUk9VUF9TSVpFKGdycCxw
d25hbWUpLCIoJihvYmplY3RjbGFzcz1wb3NpeEdyb3VwKShjbj0lcykobWVtYmVyVWlkPSVz
KSkiLGdycCxwd25hbWUpDQorKyAgICAqLw0KKysNCisrLyoNCisrWFhYIHN0b2NrIHVwc3Ry
ZWFtIHZlcnNpb24gd2l0aG91dCBleHRyYSBmaWx0ZXIgc3VwcG9ydA0KKysjZGVmaW5lIFJF
UVVFU1RfVVNFUl9TSVpFKHVpZCkgKHNpemVfdCkgKHN0cmxlbih1aWQpKzY0KQ0KKysjZGVm
aW5lIFJFUVVFU1RfVVNFUihidWZmZXIsIHB3bmFtZSkgXA0KKysgICAgYnVmZmVyID0gKGNo
YXIgKikgY2FsbG9jKFJFUVVFU1RfVVNFUl9TSVpFKHB3bmFtZSksIHNpemVvZihjaGFyKSk7
IFwNCisrICAgIGlmICghYnVmZmVyKSB7IFwNCisrICAgICAgICBwZXJyb3IoImNhbGxvYygp
Iik7IFwNCisrICAgICAgICByZXR1cm4gTlVMTDsgXA0KKysgICAgfSBcDQorKyAgICBzbnBy
aW50ZihidWZmZXIsUkVRVUVTVF9VU0VSX1NJWkUocHduYW1lKSwiKCYob2JqZWN0Y2xhc3M9
cG9zaXhBY2NvdW50KShvYmplY3RjbGFzcz1sZGFwUHVibGljS2V5KSh1aWQ9JXMpKSIscHdu
YW1lKQ0KKysgICAqLw0KKysNCisrI2RlZmluZSBSRVFVRVNUX1VTRVJfU0laRSh1aWQsIGZp
bHRlcikgKHNpemVfdCkgKHN0cmxlbih1aWQpKzY0KyhmaWx0ZXIgIT0gTlVMTCA/IHN0cmxl
bihmaWx0ZXIpIDogMCkpDQorKyNkZWZpbmUgUkVRVUVTVF9VU0VSKGJ1ZmZlciwgcHduYW1l
LCBjdXN0b21maWx0ZXIpIFwNCisrICAgIGJ1ZmZlciA9IChjaGFyICopIGNhbGxvYyhSRVFV
RVNUX1VTRVJfU0laRShwd25hbWUsIGN1c3RvbWZpbHRlciksIHNpemVvZihjaGFyKSk7IFwN
CisrICAgIGlmICghYnVmZmVyKSB7IFwNCisrICAgICAgICBwZXJyb3IoImNhbGxvYygpIik7
IFwNCisrICAgICAgICByZXR1cm4gTlVMTDsgXA0KKysgICAgfSBcDQorKyAgICBzbnByaW50
ZihidWZmZXIsIFJFUVVFU1RfVVNFUl9TSVpFKHB3bmFtZSwgY3VzdG9tZmlsdGVyKSwgXA0K
KysgICAgCSIoJihvYmplY3RjbGFzcz1wb3NpeEFjY291bnQpKG9iamVjdGNsYXNzPWxkYXBQ
dWJsaWNLZXkpKHVpZD0lcyklcykiLCBcDQorKwlwd25hbWUsIChjdXN0b21maWx0ZXIgIT0g
TlVMTCA/IGN1c3RvbWZpbHRlciA6ICIiKSkNCisrDQorKy8qIHNvbWUgcG9ydGFibGUgYW5k
IHdvcmtpbmcgdG9rZW5pemVyLCBsYW1lIHRob3VnaCAqLw0KKytzdGF0aWMgaW50IHRva2Vu
aXplKGNoYXIgKiogbywgc2l6ZV90IHNpemUsIGNoYXIgKiBpbnB1dCkgew0KKysgICAgdW5z
aWduZWQgaW50IGkgPSAwLCBudW07DQorKyAgICBjb25zdCBjaGFyICogY2hhcnNldCA9ICIg
XHQiOw0KKysgICAgY2hhciAqIHB0ciA9IGlucHV0Ow0KKysNCisrICAgIC8qIGxlYWRpbmcg
d2hpdGUgc3BhY2VzIGFyZSBpZ25vcmVkICovDQorKyAgICBudW0gPSBzdHJzcG4ocHRyLCBj
aGFyc2V0KTsNCisrICAgIHB0ciArPSBudW07DQorKw0KKysgICAgd2hpbGUgKChudW0gPSBz
dHJjc3BuKHB0ciwgY2hhcnNldCkpKSB7DQorKyAgICAgICAgaWYgKGkgPCBzaXplLTEpIHsN
CisrICAgICAgICAgICAgb1tpKytdID0gcHRyOw0KKysgICAgICAgICAgICBwdHIgKz0gbnVt
Ow0KKysgICAgICAgICAgICBpZiAoKnB0cikNCisrICAgICAgICAgICAgICAgICpwdHIrKyA9
ICdcMCc7DQorKyAgICAgICAgfQ0KKysgICAgfQ0KKysgICAgb1tpXSA9IE5VTEw7DQorKyAg
ICByZXR1cm4gU1VDQ0VTUzsNCisrfQ0KKysNCisrdm9pZCBsZGFwX2Nsb3NlKGxkYXBfb3B0
X3QgKiBsZGFwKSB7DQorKw0KKysgICAgaWYgKCFsZGFwKQ0KKysgICAgICAgIHJldHVybjsN
CisrDQorKyAgICBpZiAoIGxkYXBfdW5iaW5kX2V4dChsZGFwLT5sZCwgTlVMTCwgTlVMTCkg
PCAwKQ0KKysJbGRhcF9wZXJyb3IobGRhcC0+bGQsICJsZGFwX3VuYmluZCgpIik7DQorKw0K
KysgICAgbGRhcC0+bGQgPSBOVUxMOw0KKysgICAgRkxBR19TRVRfRElTQ09OTkVDVEVEKGxk
YXAtPmZsYWdzKTsNCisrDQorKyAgICByZXR1cm47DQorK30NCisrDQorKy8qIGluaXQgJiYg
YmluZCAqLw0KKytpbnQgbGRhcF9jb25uZWN0KGxkYXBfb3B0X3QgKiBsZGFwKSB7DQorKyAg
ICBpbnQgdmVyc2lvbiA9IExEQVBfVkVSU0lPTjM7DQorKw0KKysgICAgaWYgKCFsZGFwLT5z
ZXJ2ZXJzKQ0KKysgICAgICAgIHJldHVybiBGQUlMVVJFOw0KKysNCisrICAgIC8qIENvbm5l
Y3Rpb24gSW5pdCBhbmQgc2V0dXAgKi8NCisrICAgIGxkYXAtPmxkID0gbGRhcF9pbml0KGxk
YXAtPnNlcnZlcnMsIExEQVBfUE9SVCk7DQorKyAgICBpZiAoIWxkYXAtPmxkKSB7DQorKyAg
ICAgICAgbGRhcF9wZXJyb3IobGRhcC0+bGQsICJsZGFwX2luaXQoKSIpOw0KKysgICAgICAg
IHJldHVybiBGQUlMVVJFOw0KKysgICAgfQ0KKysNCisrICAgIGlmICggbGRhcF9zZXRfb3B0
aW9uKGxkYXAtPmxkLCBMREFQX09QVF9QUk9UT0NPTF9WRVJTSU9OLCAmdmVyc2lvbikgIT0g
TERBUF9PUFRfU1VDQ0VTUykgew0KKysgICAgICAgIGxkYXBfcGVycm9yKGxkYXAtPmxkLCAi
bGRhcF9zZXRfb3B0aW9uKExEQVBfT1BUX1BST1RPQ09MX1ZFUlNJT04pIik7DQorKyAgICAg
ICAgcmV0dXJuIEZBSUxVUkU7DQorKyAgICB9DQorKw0KKysgICAgLyogVGltZW91dHMgc2V0
dXAgKi8NCisrICAgIGlmIChsZGFwX3NldF9vcHRpb24obGRhcC0+bGQsIExEQVBfT1BUX05F
VFdPUktfVElNRU9VVCwgJmxkYXAtPmJfdGltZW91dCkgIT0gTERBUF9TVUNDRVNTKSB7DQor
KyAgICAgICAgbGRhcF9wZXJyb3IobGRhcC0+bGQsICJsZGFwX3NldF9vcHRpb24oTERBUF9P
UFRfTkVUV09SS19USU1FT1VUKSIpOw0KKysgICAgfQ0KKysgICAgaWYgKGxkYXBfc2V0X29w
dGlvbihsZGFwLT5sZCwgTERBUF9PUFRfVElNRU9VVCwgJmxkYXAtPnNfdGltZW91dCkgIT0g
TERBUF9TVUNDRVNTKSB7DQorKyAgICAgICAgbGRhcF9wZXJyb3IobGRhcC0+bGQsICJsZGFw
X3NldF9vcHRpb24oTERBUF9PUFRfVElNRU9VVCkiKTsNCisrICAgIH0NCisrDQorKyAgICAv
KiBUTFMgc3VwcG9ydCAqLw0KKysgICAgaWYgKCAobGRhcC0+dGxzID09IC0xKSB8fCAobGRh
cC0+dGxzID09IDEpICkgew0KKysgICAgICAgIGlmIChsZGFwX3N0YXJ0X3Rsc19zKGxkYXAt
PmxkLCBOVUxMLCBOVUxMICkgIT0gTERBUF9TVUNDRVNTKSB7DQorKyAgICAgICAgICAgIC8q
IGZhaWxlZCB0aGVuIHJlaW5pdCB0aGUgaW5pdGlhbCBjb25uZWN0ICovDQorKyAgICAgICAg
ICAgIGxkYXBfcGVycm9yKGxkYXAtPmxkLCAibGRhcF9jb25uZWN0OiAoVExTKSBsZGFwX3N0
YXJ0X3RscygpIik7DQorKyAgICAgICAgICAgIGlmIChsZGFwLT50bHMgPT0gMSkNCisrICAg
ICAgICAgICAgICAgIHJldHVybiBGQUlMVVJFOw0KKysNCisrICAgICAgICAgICAgbGRhcC0+
bGQgPSBsZGFwX2luaXQobGRhcC0+c2VydmVycywgTERBUF9QT1JUKTsNCisrICAgICAgICAg
ICAgaWYgKCFsZGFwLT5sZCkgeyANCisrICAgICAgICAgICAgICAgIGxkYXBfcGVycm9yKGxk
YXAtPmxkLCAibGRhcF9pbml0KCkiKTsNCisrICAgICAgICAgICAgICAgIHJldHVybiBGQUlM
VVJFOw0KKysgICAgICAgICAgICB9DQorKw0KKysgICAgICAgICAgICBpZiAoIGxkYXBfc2V0
X29wdGlvbihsZGFwLT5sZCwgTERBUF9PUFRfUFJPVE9DT0xfVkVSU0lPTiwgJnZlcnNpb24p
ICE9IExEQVBfT1BUX1NVQ0NFU1MpIHsNCisrICAgICAgICAgICAgICAgICBsZGFwX3BlcnJv
cihsZGFwLT5sZCwgImxkYXBfc2V0X29wdGlvbigpIik7DQorKyAgICAgICAgICAgICAgICAg
cmV0dXJuIEZBSUxVUkU7DQorKyAgICAgICAgICAgIH0NCisrICAgICAgICB9DQorKyAgICB9
DQorKw0KKysNCisrICAgIGlmICggbGRhcF9zaW1wbGVfYmluZF9zKGxkYXAtPmxkLCBsZGFw
LT5iaW5kZG4sIGxkYXAtPmJpbmRwdykgIT0gTERBUF9TVUNDRVNTKSB7DQorKyAgICAgICAg
bGRhcF9wZXJyb3IobGRhcC0+bGQsICJsZGFwX3NpbXBsZV9iaW5kX3MoKSIpOw0KKysgICAg
ICAgIHJldHVybiBGQUlMVVJFOw0KKysgICAgfQ0KKysNCisrICAgIC8qIHNheXMgaXQgaXMg
Y29ubmVjdGVkICovDQorKyAgICBGTEFHX1NFVF9DT05ORUNURUQobGRhcC0+ZmxhZ3MpOw0K
KysNCisrICAgIHJldHVybiBTVUNDRVNTOw0KKyt9DQorKw0KKysvKiBtdXN0IGZyZWUgYWxs
b2NhdGVkIHJlc3NvdXJjZSAqLw0KKytzdGF0aWMgY2hhciAqIGxkYXBfYnVpbGRfaG9zdChj
aGFyICpob3N0LCBpbnQgcG9ydCkgew0KKysgICAgdW5zaWduZWQgaW50IHNpemUgPSBzdHJs
ZW4oaG9zdCkrMTE7DQorKyAgICBjaGFyICogaCA9IChjaGFyICopIGNhbGxvYyAoc2l6ZSwg
c2l6ZW9mKGNoYXIpKTsNCisrICAgIGludCByYzsNCisrICAgIGlmICghaCkNCisrICAgICAg
ICAgcmV0dXJuIE5VTEw7DQorKw0KKysgICAgcmMgPSBzbnByaW50ZihoLCBzaXplLCAiJXM6
JWQgIiwgaG9zdCwgcG9ydCk7DQorKyAgICBpZiAocmMgPT0gLTEpDQorKyAgICAgICAgcmV0
dXJuIE5VTEw7DQorKyAgICByZXR1cm4gaDsNCisrfQ0KKysNCisrc3RhdGljIGludCBsZGFw
X2NvdW50X2dyb3VwKGNvbnN0IGNoYXIgKiBpbnB1dCkgew0KKysgICAgY29uc3QgY2hhciAq
IGNoYXJzZXQgPSAiIFx0IjsNCisrICAgIGNvbnN0IGNoYXIgKiBwdHIgPSBpbnB1dDsNCisr
ICAgIHVuc2lnbmVkIGludCBjb3VudCA9IDA7DQorKyAgICB1bnNpZ25lZCBpbnQgbnVtOw0K
KysNCisrICAgIG51bSA9IHN0cnNwbihwdHIsIGNoYXJzZXQpOw0KKysgICAgcHRyICs9IG51
bTsNCisrDQorKyAgICB3aGlsZSAoKG51bSA9IHN0cmNzcG4ocHRyLCBjaGFyc2V0KSkpIHsN
CisrICAgIGNvdW50Kys7DQorKyAgICBwdHIgKz0gbnVtOw0KKysgICAgcHRyKys7DQorKyAg
ICB9DQorKw0KKysgICAgcmV0dXJuIGNvdW50Ow0KKyt9DQorKw0KKysvKiBmb3JtYXQgZmls
dGVyICovDQorK2NoYXIgKiBsZGFwX3BhcnNlX2dyb3Vwcyhjb25zdCBjaGFyICogZ3JvdXBz
KSB7DQorKyAgICB1bnNpZ25lZCBpbnQgYnVmZmVyX3NpemUgPSBGSUxURVJfR1JPVVBfU0la
RShncm91cHMpOw0KKysgICAgY2hhciAqIGJ1ZmZlciA9IChjaGFyICopIGNhbGxvYyhidWZm
ZXJfc2l6ZSwgc2l6ZW9mKGNoYXIpKTsNCisrICAgIGNoYXIgKiBnID0gTlVMTDsNCisrICAg
IGNoYXIgKiBnYXJyYXlbMzJdOw0KKysgICAgdW5zaWduZWQgaW50IGkgPSAwOw0KKysNCisr
ICAgIGlmICgoIWdyb3Vwcyl8fCghYnVmZmVyKSkNCisrICAgICAgICByZXR1cm4gTlVMTDsN
CisrDQorKyAgICBnID0gc3RyZHVwKGdyb3Vwcyk7DQorKyAgICBpZiAoIWcpIHsNCisrICAg
ICAgICBmcmVlKGJ1ZmZlcik7DQorKyAgICAgICAgcmV0dXJuIE5VTEw7DQorKyAgICB9DQor
Kw0KKysgICAgLyogZmlyc3Qgc2VwYXJhdGUgaW50byBuIHRva2VucyAqLw0KKysgICAgaWYg
KCB0b2tlbml6ZShnYXJyYXksIHNpemVvZihnYXJyYXkpL3NpemVvZigqZ2FycmF5KSwgZykg
PCAwKSB7DQorKyAgICAgICAgZnJlZShnKTsNCisrICAgICAgICBmcmVlKGJ1ZmZlcik7DQor
KyAgICAgICAgcmV0dXJuIE5VTEw7DQorKyAgICB9DQorKw0KKysgICAgLyogYnVpbGQgdGhl
IGZpbmFsIGZpbHRlciBmb3JtYXQgKi8NCisrICAgIHN0cmxjYXQoYnVmZmVyLCBGSUxURVJf
R1JPVVBfUFJFRklYLCBidWZmZXJfc2l6ZSk7DQorKyAgICBzdHJsY2F0KGJ1ZmZlciwgRklM
VEVSX09SX1BSRUZJWCwgYnVmZmVyX3NpemUpOw0KKysgICAgaSA9IDA7DQorKyAgICB3aGls
ZSAoZ2FycmF5W2ldKSB7DQorKyAgICAgICAgc3RybGNhdChidWZmZXIsIEZJTFRFUl9DTl9Q
UkVGSVgsIGJ1ZmZlcl9zaXplKTsNCisrICAgICAgICBzdHJsY2F0KGJ1ZmZlciwgZ2FycmF5
W2ldLCBidWZmZXJfc2l6ZSk7DQorKyAgICAgICAgc3RybGNhdChidWZmZXIsIEZJTFRFUl9D
Tl9TVUZGSVgsIGJ1ZmZlcl9zaXplKTsNCisrICAgICAgICBpKys7DQorKyAgICB9DQorKyAg
ICBzdHJsY2F0KGJ1ZmZlciwgRklMVEVSX09SX1NVRkZJWCwgYnVmZmVyX3NpemUpOw0KKysg
ICAgc3RybGNhdChidWZmZXIsIEZJTFRFUl9VSURfRk9STUFULCBidWZmZXJfc2l6ZSk7DQor
KyAgICBzdHJsY2F0KGJ1ZmZlciwgRklMVEVSX0dST1VQX1NVRkZJWCwgYnVmZmVyX3NpemUp
Ow0KKysNCisrICAgIGZyZWUoZyk7DQorKyAgICByZXR1cm4gYnVmZmVyOw0KKyt9DQorKw0K
KysvKiBhIGJpdCBkaXJ0eSBidXQgbGVhayBmcmVlICAqLw0KKytjaGFyICogbGRhcF9wYXJz
ZV9zZXJ2ZXJzKGNvbnN0IGNoYXIgKiBzZXJ2ZXJzKSB7DQorKyAgICBjaGFyICogcyA9IE5V
TEw7DQorKyAgICBjaGFyICogdG1wID0gTlVMTCwgKnVybHNbMzJdOw0KKysgICAgdW5zaWdu
ZWQgaW50IG51bSA9IDAgLCBpID0gMCAsIGFzaXplID0gMDsNCisrICAgIExEQVBVUkxEZXNj
ICp1cmxkWzMyXTsNCisrDQorKyAgICBpZiAoIXNlcnZlcnMpDQorKyAgICAgICAgcmV0dXJu
IE5VTEw7DQorKw0KKysgICAgLyogbG9jYWwgY29weSBvZiB0aGUgYXJnICovDQorKyAgICBz
ID0gc3RyZHVwKHNlcnZlcnMpOw0KKysgICAgaWYgKCFzKQ0KKysgICAgICAgIHJldHVybiBO
VUxMOw0KKysNCisrICAgIC8qIGZpcnN0IHNlcGFyYXRlIGludG8gVVJMIHRva2VucyAqLw0K
KysgICAgaWYgKCB0b2tlbml6ZSh1cmxzLCBzaXplb2YodXJscykvc2l6ZW9mKCp1cmxzKSwg
cykgPCAwKQ0KKysgICAgICAgIHJldHVybiBOVUxMOw0KKysNCisrICAgIGkgPSAwOw0KKysg
ICAgd2hpbGUgKHVybHNbaV0pIHsNCisrICAgICAgICBpZiAoISBsZGFwX2lzX2xkYXBfdXJs
KHVybHNbaV0pIHx8DQorKyAgICAgICAgICAgKGxkYXBfdXJsX3BhcnNlKHVybHNbaV0sICZ1
cmxkW2ldKSAhPSAwKSkgew0KKysgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorKyAg
ICAgICAgfQ0KKysgICAgICAgIGkrKzsNCisrICAgIH0NCisrDQorKyAgICAvKiBub3cgZnJl
ZShzKSAqLw0KKysgICAgZnJlZSAocyk7DQorKw0KKysgICAgLyogaG93IG11Y2ggbWVtb3J5
IGRvIHdlIG5lZWQgKi8NCisrICAgIG51bSA9IGk7DQorKyAgICBmb3IgKGkgPSAwIDsgaSA8
IG51bSA7IGkrKykNCisrICAgICAgICBhc2l6ZSArPSBzdHJsZW4odXJsZFtpXS0+bHVkX2hv
c3QpKzExOw0KKysNCisrICAgIC8qIGFsbG9jICovDQorKyAgICBzID0gKGNoYXIgKikgY2Fs
bG9jKCBhc2l6ZSsxICwgc2l6ZW9mKGNoYXIpKTsNCisrICAgIGlmICghcykgew0KKysgICAg
ICAgIGZvciAoaSA9IDAgOyBpIDwgbnVtIDsgaSsrKQ0KKysgICAgICAgICAgICBsZGFwX2Zy
ZWVfdXJsZGVzYyh1cmxkW2ldKTsNCisrICAgICAgICByZXR1cm4gTlVMTDsNCisrICAgIH0N
CisrDQorKyAgICAvKiB0aGVuIGJ1aWxkIHRoZSBmaW5hbCBob3N0IHN0cmluZyAqLw0KKysg
ICAgZm9yIChpID0gMCA7IGkgPCBudW0gOyBpKyspIHsNCisrICAgICAgICAvKiBidWlsdCBo
b3N0IHBhcnQgKi8NCisrICAgICAgICB0bXAgPSBsZGFwX2J1aWxkX2hvc3QodXJsZFtpXS0+
bHVkX2hvc3QsIHVybGRbaV0tPmx1ZF9wb3J0KTsNCisrICAgICAgICBzdHJuY2F0KHMsIHRt
cCwgc3RybGVuKHRtcCkpOw0KKysgICAgICAgIGxkYXBfZnJlZV91cmxkZXNjKHVybGRbaV0p
Ow0KKysgICAgICAgIGZyZWUodG1wKTsNCisrICAgIH0NCisrDQorKyAgICByZXR1cm4gczsN
CisrfQ0KKysNCisrdm9pZCBsZGFwX29wdGlvbnNfcHJpbnQobGRhcF9vcHRfdCAqIGxkYXAp
IHsNCisrICAgIGRlYnVnKCJsZGFwIG9wdGlvbnM6Iik7DQorKyAgICBkZWJ1Zygic2VydmVy
czogJXMiLCBsZGFwLT5zZXJ2ZXJzKTsNCisrICAgIGlmIChsZGFwLT51X2Jhc2VkbikNCisr
ICAgICAgICBkZWJ1ZygidXNlciBiYXNlZG46ICVzIiwgbGRhcC0+dV9iYXNlZG4pOw0KKysg
ICAgaWYgKGxkYXAtPmdfYmFzZWRuKQ0KKysgICAgICAgIGRlYnVnKCJncm91cCBiYXNlZG46
ICVzIiwgbGRhcC0+Z19iYXNlZG4pOw0KKysgICAgaWYgKGxkYXAtPmJpbmRkbikNCisrICAg
ICAgICBkZWJ1ZygiYmluZGRuOiAlcyIsIGxkYXAtPmJpbmRkbik7DQorKyAgICBpZiAobGRh
cC0+YmluZHB3KQ0KKysgICAgICAgIGRlYnVnKCJiaW5kcHc6ICVzIiwgbGRhcC0+YmluZHB3
KTsNCisrICAgIGlmIChsZGFwLT5zZ3JvdXApDQorKyAgICAgICAgZGVidWcoImdyb3VwOiAl
cyIsIGxkYXAtPnNncm91cCk7DQorKyAgICBpZiAobGRhcC0+ZmlsdGVyKQ0KKysgICAgICAg
IGRlYnVnKCJmaWx0ZXI6ICVzIiwgbGRhcC0+ZmlsdGVyKTsNCisrfQ0KKysNCisrdm9pZCBs
ZGFwX29wdGlvbnNfZnJlZShsZGFwX29wdF90ICogbCkgew0KKysgICAgaWYgKCFsKQ0KKysg
ICAgICAgIHJldHVybjsNCisrICAgIGlmIChsLT5zZXJ2ZXJzKQ0KKysgICAgICAgIGZyZWUo
bC0+c2VydmVycyk7DQorKyAgICBpZiAobC0+dV9iYXNlZG4pDQorKyAgICAgICAgZnJlZShs
LT51X2Jhc2Vkbik7DQorKyAgICBpZiAobC0+Z19iYXNlZG4pDQorKyAgICAgICAgZnJlZShs
LT5nX2Jhc2Vkbik7DQorKyAgICBpZiAobC0+YmluZGRuKQ0KKysgICAgICAgIGZyZWUobC0+
YmluZGRuKTsNCisrICAgIGlmIChsLT5iaW5kcHcpDQorKyAgICAgICAgZnJlZShsLT5iaW5k
cHcpOw0KKysgICAgaWYgKGwtPnNncm91cCkNCisrICAgICAgICBmcmVlKGwtPnNncm91cCk7
DQorKyAgICBpZiAobC0+Zmdyb3VwKQ0KKysgICAgICAgIGZyZWUobC0+Zmdyb3VwKTsNCisr
ICAgIGlmIChsLT5maWx0ZXIpDQorKyAgICAgICAgZnJlZShsLT5maWx0ZXIpOw0KKysgICAg
aWYgKGwtPmxfY29uZikNCisrICAgICAgICBmcmVlKGwtPmxfY29uZik7DQorKyAgICBmcmVl
KGwpOw0KKyt9DQorKw0KKysvKiBmcmVlIGtleXMgKi8NCisrdm9pZCBsZGFwX2tleXNfZnJl
ZShsZGFwX2tleV90ICogaykgew0KKysgICAgbGRhcF92YWx1ZV9mcmVlX2xlbihrLT5rZXlz
KTsNCisrICAgIGZyZWUoayk7DQorKyAgICByZXR1cm47DQorK30NCisrDQorK2xkYXBfa2V5
X3QgKiBsZGFwX2dldHVzZXJrZXkobGRhcF9vcHRfdCAqbCwgY29uc3QgY2hhciAqIHVzZXIp
IHsNCisrICAgIGxkYXBfa2V5X3QgKiBrID0gKGxkYXBfa2V5X3QgKikgY2FsbG9jICgxLCBz
aXplb2YobGRhcF9rZXlfdCkpOw0KKysgICAgTERBUE1lc3NhZ2UgKnJlcywgKmU7DQorKyAg
ICBjaGFyICogZmlsdGVyOw0KKysgICAgaW50IGk7DQorKw0KKysgICAgaWYgKCghaykgfHwg
KCFsKSkNCisrICAgICAgICAgcmV0dXJuIE5VTEw7DQorKw0KKysgICAgLyogQW0gaSBzdGls
bCBjb25uZWN0ZWQgPyBSRVRSWSBuIHRpbWVzICovDQorKyAgICAvKiBYWFggVE9ETzogc2V0
dXAgc29tZSBjb25mIHZhbHVlIGZvciByZXRyeWluZyAqLw0KKysgICAgaWYgKCEobC0+Zmxh
Z3MgJiBGTEFHX0NPTk5FQ1RFRCkpDQorKyAgICAgICAgZm9yIChpID0gMCA7IGkgPCAyIDsg
aSsrKQ0KKysgICAgICAgICAgICBpZiAobGRhcF9jb25uZWN0KGwpID09IDApDQorKyAgICAg
ICAgICAgICAgICBicmVhazsNCisrDQorKyAgICAvKiBxdWljayBjaGVjayBmb3IgYXR0ZW1w
dHMgdG8gYmUgZXZpbCAqLw0KKysgICAgaWYgKChzdHJjaHIodXNlciwgJygnKSAhPSBOVUxM
KSB8fCAoc3RyY2hyKHVzZXIsICcpJykgIT0gTlVMTCkgfHwNCisrICAgICAgICAoc3RyY2hy
KHVzZXIsICcqJykgIT0gTlVMTCkgfHwgKHN0cmNocih1c2VyLCAnXFwnKSAhPSBOVUxMKSkN
CisrICAgICAgICByZXR1cm4gTlVMTDsNCisrDQorKyAgICAvKiBidWlsZCAgZmlsdGVyIGZv
ciBMREFQIHJlcXVlc3QgKi8NCisrICAgIFJFUVVFU1RfVVNFUihmaWx0ZXIsIHVzZXIsIGwt
PmZpbHRlcik7DQorKw0KKysgICAgaWYgKCBsZGFwX3NlYXJjaF9zdCggbC0+bGQsDQorKyAg
ICAgICAgbC0+dV9iYXNlZG4sDQorKyAgICAgICAgTERBUF9TQ09QRV9TVUJUUkVFLA0KKysg
ICAgICAgIGZpbHRlciwNCisrICAgICAgICBhdHRycywgMCwgJmwtPnNfdGltZW91dCwgJnJl
cyApICE9IExEQVBfU1VDQ0VTUykgew0KKysgICAgICAgIA0KKysgICAgICAgIGxkYXBfcGVy
cm9yKGwtPmxkLCAibGRhcF9zZWFyY2hfc3QoKSIpOw0KKysNCisrICAgICAgICBmcmVlKGZp
bHRlcik7DQorKyAgICAgICAgZnJlZShrKTsNCisrDQorKyAgICAgICAgLyogWFhYIGVycm9y
IG9uIHNlYXJjaCwgdGltZW91dCBldGMuLiBjbG9zZSBhc2sgZm9yIHJlY29ubmVjdCAqLw0K
KysgICAgICAgIGxkYXBfY2xvc2UobCk7DQorKw0KKysgICAgICAgIHJldHVybiBOVUxMOw0K
KysgICAgfSANCisrDQorKyAgICAvKiBmcmVlICovDQorKyAgICBmcmVlKGZpbHRlcik7DQor
Kw0KKysgICAgLyogY2hlY2sgaWYgYW55IHJlc3VsdHMgKi8NCisrICAgIGkgPSBsZGFwX2Nv
dW50X2VudHJpZXMobC0+bGQscmVzKTsNCisrICAgIGlmIChpIDw9IDApIHsNCisrICAgICAg
ICBsZGFwX21zZ2ZyZWUocmVzKTsNCisrICAgICAgICBmcmVlKGspOw0KKysgICAgICAgIHJl
dHVybiBOVUxMOw0KKysgICAgfQ0KKysNCisrICAgIGlmIChpID4gMSkNCisrICAgICAgICBk
ZWJ1ZygiW0xEQVBdIGR1cGxpY2F0ZSBlbnRyaWVzLCB1c2luZyB0aGUgRklSU1QgZW50cnkg
cmV0dXJuZWQiKTsNCisrDQorKyAgICBlID0gbGRhcF9maXJzdF9lbnRyeShsLT5sZCwgcmVz
KTsNCisrICAgIGstPmtleXMgPSBsZGFwX2dldF92YWx1ZXNfbGVuKGwtPmxkLCBlLCBQVUJL
RVlBVFRSKTsNCisrICAgIGstPm51bSA9IGxkYXBfY291bnRfdmFsdWVzX2xlbihrLT5rZXlz
KTsNCisrDQorKyAgICBsZGFwX21zZ2ZyZWUocmVzKTsNCisrICAgIHJldHVybiBrOw0KKyt9
DQorKw0KKysNCisrLyogLTEgaWYgdHJvdWJsZQ0KKysgICAwIGlmIHVzZXIgaXMgTk9UIG1l
bWJlciBvZiBjdXJyZW50IHNlcnZlciBncm91cA0KKysgICAxIGlmIHVzZXIgSVMgTUVNQkVS
IG9mIGN1cnJlbnQgc2VydmVyIGdyb3VwIA0KKysgKi8NCisraW50IGxkYXBfaXNtZW1iZXIo
bGRhcF9vcHRfdCAqIGwsIGNvbnN0IGNoYXIgKiB1c2VyKSB7DQorKyAgICBMREFQTWVzc2Fn
ZSAqcmVzOw0KKysgICAgY2hhciAqIGZpbHRlcjsNCisrICAgIGludCBpOw0KKysNCisrICAg
IGlmICgoIWwtPnNncm91cCkgfHwgIShsLT5nX2Jhc2VkbikpDQorKyAgICAgICAgcmV0dXJu
IDE7DQorKw0KKysgICAgLyogQW0gaSBzdGlsbCBjb25uZWN0ZWQgPyBSRVRSWSBuIHRpbWVz
ICovDQorKyAgICAvKiBYWFggVE9ETzogc2V0dXAgc29tZSBjb25mIHZhbHVlIGZvciByZXRy
eWluZyAqLw0KKysgICAgaWYgKCEobC0+ZmxhZ3MgJiBGTEFHX0NPTk5FQ1RFRCkpIA0KKysg
ICAgICAgIGZvciAoaSA9IDAgOyBpIDwgMiA7IGkrKykNCisrICAgICAgICAgICAgaWYgKGxk
YXBfY29ubmVjdChsKSA9PSAwKQ0KKysgICAgICAgICAgICAgICAgIGJyZWFrOw0KKysNCisr
ICAgIC8qIHF1aWNrIGNoZWNrIGZvciBhdHRlbXB0cyB0byBiZSBldmlsICovDQorKyAgICBp
ZiAoKHN0cmNocih1c2VyLCAnKCcpICE9IE5VTEwpIHx8IChzdHJjaHIodXNlciwgJyknKSAh
PSBOVUxMKSB8fA0KKysgICAgICAgIChzdHJjaHIodXNlciwgJyonKSAhPSBOVUxMKSB8fCAo
c3RyY2hyKHVzZXIsICdcXCcpICE9IE5VTEwpKQ0KKysgICAgICAgIHJldHVybiBGQUlMVVJF
Ow0KKysNCisrICAgIC8qIGJ1aWxkIGZpbHRlciBmb3IgTERBUCByZXF1ZXN0ICovDQorKyAg
ICBSRVFVRVNUX0dST1VQKGZpbHRlciwgbC0+Zmdyb3VwLCB1c2VyKTsNCisrDQorKyAgICBp
ZiAobGRhcF9zZWFyY2hfc3QoIGwtPmxkLCANCisrICAgICAgICBsLT5nX2Jhc2VkbiwNCisr
ICAgICAgICBMREFQX1NDT1BFX1NVQlRSRUUsDQorKyAgICAgICAgZmlsdGVyLA0KKysgICAg
ICAgIE5VTEwsIDAsICZsLT5zX3RpbWVvdXQsICZyZXMpICE9IExEQVBfU1VDQ0VTUykgew0K
KysgICAgDQorKyAgICAgICAgbGRhcF9wZXJyb3IobC0+bGQsICJsZGFwX3NlYXJjaF9zdCgp
Iik7DQorKw0KKysgICAgICAgIGZyZWUoZmlsdGVyKTsNCisrDQorKyAgICAgICAgLyogWFhY
IGVycm9yIG9uIHNlYXJjaCwgdGltZW91dCBldGMuLiBjbG9zZSBhc2sgZm9yIHJlY29ubmVj
dCAqLw0KKysgICAgICAgIGxkYXBfY2xvc2UobCk7DQorKw0KKysgICAgICAgIHJldHVybiBG
QUlMVVJFOw0KKysgICAgfQ0KKysNCisrICAgIGZyZWUoZmlsdGVyKTsNCisrDQorKyAgICAv
KiBjaGVjayBpZiBhbnkgcmVzdWx0cyAqLw0KKysgICAgaWYgKGxkYXBfY291bnRfZW50cmll
cyhsLT5sZCwgcmVzKSA+IDApIHsNCisrICAgICAgICBsZGFwX21zZ2ZyZWUocmVzKTsNCisr
ICAgICAgICByZXR1cm4gMTsNCisrICAgIH0NCisrDQorKyAgICBsZGFwX21zZ2ZyZWUocmVz
KTsNCisrICAgIHJldHVybiAwOw0KKyt9DQorKw0KKysvKg0KKysgKiBsZGFwLmNvbmYgc2lt
cGxlIHBhcnNlcg0KKysgKiBYWFggVE9ETzogIHNhbml0eSBjaGVja3MNCisrICogbXVzdCBl
aXRoZXINCisrICogLSBmcmVlIHRoZSBwcmV2aW91cyBsZGFwX29wdF9iZWZvcmUgcmVwbGFj
aW5nIGVudHJpZXMNCisrICogLSBmcmVlIGVhY2ggbmVjZXNzYXJ5IHByZXZpb3VzbHkgcGFy
c2VkIGVsZW1lbnRzDQorKyAqIHJldDoNCisrICogLTEgb24gRkFJTFVSRSwgMCBvbiBTVUND
RVNTDQorKyAqLw0KKytpbnQgbGRhcF9wYXJzZV9sY29uZihsZGFwX29wdF90ICogbCkgew0K
KysgICAgRklMRSAqIGxjZDsgLyogbGRhcC5jb25mIGRlc2NyaXB0b3IgKi8NCisrICAgIGNo
YXIgYnVmW0JVRlNJWl07DQorKyAgICBjaGFyICogcyA9IE5VTEwsICogayA9IE5VTEwsICog
diA9IE5VTEw7DQorKyAgICBpbnQgbGksIGxlbjsNCisrDQorKyAgICBsY2QgPSBmb3BlbiAo
bC0+bF9jb25mLCAiciIpOw0KKysgICAgaWYgKGxjZCA9PSBOVUxMKSB7DQorKyAgICAgICAg
LyogZGVidWcoIkNhbm5vdCBvcGVuICVzIiwgbC0+bF9jb25mKTsgKi8NCisrICAgICAgICBw
ZXJyb3IoImxkYXBfcGFyc2VfbGNvbmYoKSIpOw0KKysgICAgICAgIHJldHVybiBGQUlMVVJF
Ow0KKysgICAgfQ0KKysgICAgDQorKyAgICB3aGlsZSAoZmdldHMgKGJ1Ziwgc2l6ZW9mIChi
dWYpLCBsY2QpICE9IE5VTEwpIHsNCisrDQorKyAgICAgICAgaWYgKCpidWYgPT0gJ1xuJyB8
fCAqYnVmID09ICcjJykNCisrICAgICAgICAgICAgY29udGludWU7DQorKw0KKysgICAgICAg
IGsgPSBidWY7DQorKyAgICAgICAgdiA9IGs7DQorKyAgICAgICAgd2hpbGUgKCp2ICE9ICdc
MCcgJiYgKnYgIT0gJyAnICYmICp2ICE9ICdcdCcpDQorKyAgICAgICAgICAgIHYrKzsNCisr
DQorKyAgICAgICAgaWYgKCp2ID09ICdcMCcpDQorKyAgICAgICAgICAgIGNvbnRpbnVlOw0K
KysNCisrICAgICAgICAqKHYrKykgPSAnXDAnOw0KKysNCisrICAgICAgICB3aGlsZSAoKnYg
PT0gJyAnIHx8ICp2ID09ICdcdCcpDQorKyAgICAgICAgICAgIHYrKzsNCisrDQorKyAgICAg
ICAgbGkgPSBzdHJsZW4gKHYpIC0gMTsNCisrICAgICAgICB3aGlsZSAodltsaV0gPT0gJyAn
IHx8IHZbbGldID09ICdcdCcgfHwgdltsaV0gPT0gJ1xuJykNCisrICAgICAgICAgICAgLS1s
aTsNCisrICAgICAgICB2W2xpICsgMV0gPSAnXDAnOw0KKysNCisrICAgICAgICBpZiAoIXN0
cmNhc2VjbXAgKGssICJ1cmkiKSkgew0KKysgICAgICAgICAgICBpZiAoKGwtPnNlcnZlcnMg
PSBsZGFwX3BhcnNlX3NlcnZlcnModikpID09IE5VTEwpIHsNCisrICAgICAgICAgICAgICAg
IGZhdGFsKCJlcnJvciBpbiBsZGFwIHNlcnZlcnMiKTsNCisrICAgICAgICAgICAgcmV0dXJu
IEZBSUxVUkU7DQorKyAgICAgICAgICAgIH0NCisrDQorKyAgICAgICAgfQ0KKysgICAgICAg
IGVsc2UgaWYgKCFzdHJjYXNlY21wIChrLCAiYmFzZSIpKSB7IA0KKysgICAgICAgICAgICBz
ID0gc3RyY2hyICh2LCAnPycpOw0KKysgICAgICAgICAgICBpZiAocyAhPSBOVUxMKSB7DQor
KyAgICAgICAgICAgICAgICBsZW4gPSBzIC0gdjsNCisrICAgICAgICAgICAgICAgIGwtPnVf
YmFzZWRuID0gbWFsbG9jIChsZW4gKyAxKTsNCisrICAgICAgICAgICAgICAgIHN0cm5jcHkg
KGwtPnVfYmFzZWRuLCB2LCBsZW4pOw0KKysgICAgICAgICAgICAgICAgbC0+dV9iYXNlZG5b
bGVuXSA9ICdcMCc7DQorKyAgICAgICAgICAgIH0gZWxzZSB7DQorKyAgICAgICAgICAgICAg
ICBsLT51X2Jhc2VkbiA9IHN0cmR1cCAodik7DQorKyAgICAgICAgICAgIH0NCisrICAgICAg
ICB9DQorKyAgICAgICAgZWxzZSBpZiAoIXN0cmNhc2VjbXAgKGssICJiaW5kZG4iKSkgew0K
KysgICAgICAgICAgICBsLT5iaW5kZG4gPSBzdHJkdXAgKHYpOw0KKysgICAgICAgIH0NCisr
ICAgICAgICBlbHNlIGlmICghc3RyY2FzZWNtcCAoaywgImJpbmRwdyIpKSB7DQorKyAgICAg
ICAgICAgIGwtPmJpbmRwdyA9IHN0cmR1cCAodik7DQorKyAgICAgICAgfQ0KKysgICAgICAg
IGVsc2UgaWYgKCFzdHJjYXNlY21wIChrLCAidGltZWxpbWl0IikpIHsNCisrICAgICAgICAg
ICAgbC0+c190aW1lb3V0LnR2X3NlYyA9IGF0b2kgKHYpOw0KKysgICAgICAgICAgICAgICAg
fQ0KKysgICAgICAgIGVsc2UgaWYgKCFzdHJjYXNlY21wIChrLCAiYmluZF90aW1lbGltaXQi
KSkgew0KKysgICAgICAgICAgICBsLT5iX3RpbWVvdXQudHZfc2VjID0gYXRvaSAodik7DQor
KyAgICAgICAgfQ0KKysgICAgICAgIGVsc2UgaWYgKCFzdHJjYXNlY21wIChrLCAic3NsIikp
IHsNCisrICAgICAgICAgICAgaWYgKCFzdHJjYXNlY21wICh2LCAic3RhcnRfdGxzIikpDQor
KyAgICAgICAgICAgICAgICBsLT50bHMgPSAxOw0KKysgICAgICAgIH0NCisrICAgIH0NCisr
DQorKyAgICBmY2xvc2UgKGxjZCk7DQorKyAgICByZXR1cm4gU1VDQ0VTUzsNCisrfQ0KKysN
CisrI2VuZGlmIC8qIFdJVEhfTERBUF9QVUJLRVkgKi8NCitkaWZmIC1OdWFyIC0tZXhjbHVk
ZSAnKi5vcmlnJyAtLWV4Y2x1ZGUgJyoucmVqJyBsZGFwYXV0aC5oIGxkYXBhdXRoLmgNCist
LS0gbGRhcGF1dGguaAkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMA0KKysr
KyBsZGFwYXV0aC5oCTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwDQorQEAg
LTAsMCArMSwxMjQgQEANCisrLyoNCisrICogJElkOiBvcGVuc3NoLWxway00LjNwMS0wLjMu
Ny5wYXRjaCx2IDEuMyAyMDA2LzA0LzE4IDE1OjI5OjA5IGVhdSBFeHAgJCANCisrICovDQor
Kw0KKysvKg0KKysgKg0KKysgKiBDb3B5cmlnaHQgKGMpIDIwMDUsIEVyaWMgQVVHRSA8ZWF1
QHBoZWFyLm9yZz4NCisrICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisrICoNCisrICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Og0KKysgKg0KKysgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuDQorKyAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4N
CisrICogTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgcGhlYXIub3JnIG5vciB0aGUgbmFtZXMg
b2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQorKyAqDQorKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IA0KKysgKiBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gDQorKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgDQorKyAqIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IA0KKysgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIA0KKysgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLg0KKysgKg0KKysgKg0KKysgKi8NCisrDQorKyNpZm5kZWYgTERB
UEFVVEhfSA0KKysjZGVmaW5lIExEQVBBVVRIX0gNCisrDQorKyNkZWZpbmUgTERBUF9ERVBS
RUNBVEVEIDENCisrDQorKyNpbmNsdWRlIDxzdHJpbmcuaD4NCisrI2luY2x1ZGUgPHRpbWUu
aD4NCisrI2luY2x1ZGUgPGxkYXAuaD4NCisrI2luY2x1ZGUgPGxiZXIuaD4NCisrDQorKy8q
IHRva2VucyBpbiB1c2UgZm9yIGNvbmZpZyAqLw0KKysjZGVmaW5lIF9ERUZBVUxUX0xQS19U
T0tFTiAiVXNlTFBLIg0KKysjZGVmaW5lIF9ERUZBVUxUX1NSVl9UT0tFTiAiTHBrU2VydmVy
cyINCisrI2RlZmluZSBfREVGQVVMVF9VU1JfVE9LRU4gIkxwa1VzZXJETiINCisrI2RlZmlu
ZSBfREVGQVVMVF9HUlBfVE9LRU4gIkxwa0dyb3VwRE4iDQorKyNkZWZpbmUgX0RFRkFVTFRf
QkROX1RPS0VOICJMcGtCaW5kRE4iDQorKyNkZWZpbmUgX0RFRkFVTFRfQlBXX1RPS0VOICJM
cGtCaW5kUHciDQorKyNkZWZpbmUgX0RFRkFVTFRfTVlHX1RPS0VOICJMcGtTZXJ2ZXJHcm91
cCINCisrI2RlZmluZSBfREVGQVVMVF9GSUxfVE9LRU4gIkxwa0ZpbHRlciINCisrI2RlZmlu
ZSBfREVGQVVMVF9UTFNfVE9LRU4gIkxwa0ZvcmNlVExTIg0KKysjZGVmaW5lIF9ERUZBVUxU
X0JUSV9UT0tFTiAiTHBrQmluZFRpbWVsaW1pdCINCisrI2RlZmluZSBfREVGQVVMVF9TVElf
VE9LRU4gIkxwa1NlYXJjaFRpbWVsaW1pdCINCisrI2RlZmluZSBfREVGQVVMVF9MRFBfVE9L
RU4gIkxwa0xkYXBDb25mIg0KKysNCisrLyogZGVmYXVsdCBvcHRpb25zICovDQorKyNkZWZp
bmUgX0RFRkFVTFRfTFBLX09OIDANCisrI2RlZmluZSBfREVGQVVMVF9MUEtfU0VSVkVSUyBO
VUxMDQorKyNkZWZpbmUgX0RFRkFVTFRfTFBLX1VETiBOVUxMDQorKyNkZWZpbmUgX0RFRkFV
TFRfTFBLX0dETiBOVUxMDQorKyNkZWZpbmUgX0RFRkFVTFRfTFBLX0JJTkRETiBOVUxMDQor
KyNkZWZpbmUgX0RFRkFVTFRfTFBLX0JJTkRQVyBOVUxMDQorKyNkZWZpbmUgX0RFRkFVTFRf
TFBLX1NHUk9VUCBOVUxMDQorKyNkZWZpbmUgX0RFRkFVTFRfTFBLX0ZJTFRFUiBOVUxMDQor
KyNkZWZpbmUgX0RFRkFVTFRfTFBLX1RMUyAtMQ0KKysjZGVmaW5lIF9ERUZBVUxUX0xQS19C
VElNRU9VVCAxMA0KKysjZGVmaW5lIF9ERUZBVUxUX0xQS19TVElNRU9VVCAxMA0KKysjZGVm
aW5lIF9ERUZBVUxUX0xQS19MRFAgTlVMTA0KKysNCisrLyogZmxhZ3MgKi8NCisrI2RlZmlu
ZSBGTEFHX0VNUFRZCSAgICAweDAwMDAwMDAwDQorKyNkZWZpbmUgRkxBR19DT05ORUNURUQJ
ICAgIDB4MDAwMDAwMDENCisrDQorKy8qIGZsYWcgbWFjcm9zICovDQorKyNkZWZpbmUgRkxB
R19TRVRfRU1QVFkoeCkJCXgmPShGTEFHX0VNUFRZKQ0KKysjZGVmaW5lIEZMQUdfU0VUX0NP
Tk5FQ1RFRCh4KQkJeHw9KEZMQUdfQ09OTkVDVEVEKQ0KKysjZGVmaW5lIEZMQUdfU0VUX0RJ
U0NPTk5FQ1RFRCh4KQl4Jj1+KEZMQUdfQ09OTkVDVEVEKQ0KKysNCisrLyogZGVmaW5lcyAq
Lw0KKysjZGVmaW5lIEZBSUxVUkUgLTENCisrI2RlZmluZSBTVUNDRVNTIDANCisrI2RlZmlu
ZSBQVUJLRVlBVFRSICJzc2hQdWJsaWNLZXkiDQorKw0KKysvKiANCisrICoNCisrICogZGVm
aW5lZCBmaWxlcyBwYXRoIA0KKysgKiAoc2hvdWxkIGJlIHJlbG9jYXRlZCB0byBwYXRobmFt
ZXMuaCwNCisrICogaWYgb25lIGRheSBpdCdzIGluY2x1ZGVkIHdpdGhpbiB0aGUgdHJlZSkg
DQorKyAqDQorKyAqLw0KKysjZGVmaW5lIF9QQVRIX0xEQVBfQ09ORklHX0ZJTEUgIi9ldGMv
bGRhcC5jb25mIg0KKysNCisrLyogc3RydWN0dXJlcyAqLw0KKyt0eXBlZGVmIHN0cnVjdCBs
ZGFwX29wdGlvbnMgew0KKysgICAgaW50IG9uOwkJCS8qIFVzZSBpdCBvciBOT1QgKi8NCisr
ICAgIExEQVAgKiBsZDsJCQkvKiBMREFQIGZpbGUgZGVzYyAqLw0KKysgICAgY2hhciAqIHNl
cnZlcnM7CQkvKiBwYXJzZWQgc2VydmVycyBmb3IgbGRhcGxpYiBmYWlsb3ZlciBoYW5kbGlu
ZyAqLw0KKysgICAgY2hhciAqIHVfYmFzZWRuOwkJLyogdXNlciBiYXNlZG4gKi8NCisrICAg
IGNoYXIgKiBnX2Jhc2VkbjsJCS8qIGdyb3VwIGJhc2VkbiAqLw0KKysgICAgY2hhciAqIGJp
bmRkbjsJCS8qIGJpbmRkbiAqLw0KKysgICAgY2hhciAqIGJpbmRwdzsJCS8qIGJpbmQgcGFz
c3dvcmQgKi8NCisrICAgIGNoYXIgKiBzZ3JvdXA7CQkvKiBzZXJ2ZXIgZ3JvdXAgKi8NCisr
ICAgIGNoYXIgKiBmZ3JvdXA7CQkvKiBncm91cCBmaWx0ZXIgKi8NCisrICAgIGNoYXIgKiBm
aWx0ZXI7CQkvKiBhZGRpdGlvbmFsIGZpbHRlciAqLw0KKysgICAgY2hhciAqIGxfY29uZjsJ
CS8qIHVzZSBsZGFwLmNvbmYgKi8NCisrICAgIGludCB0bHM7CQkJLyogVExTIG9ubHkgKi8N
CisrICAgIHN0cnVjdCB0aW1ldmFsIGJfdGltZW91dDsgICAvKiBiaW5kIHRpbWVvdXQgKi8N
CisrICAgIHN0cnVjdCB0aW1ldmFsIHNfdGltZW91dDsgICAvKiBzZWFyY2ggdGltZW91dCAq
Lw0KKysgICAgdW5zaWduZWQgaW50IGZsYWdzOwkJLyogbWlzYyBmbGFncyAocmVjb25uZWN0
aW9uLCBmdXR1cmUgdXNlPykgKi8NCisrfSBsZGFwX29wdF90Ow0KKysNCisrdHlwZWRlZiBz
dHJ1Y3QgbGRhcF9rZXlzIHsNCisrICAgIHN0cnVjdCBiZXJ2YWwgKioga2V5czsJLyogdGhl
IHB1YmxpYyBrZXlzIHJldHJpZXZlZCAqLw0KKysgICAgdW5zaWduZWQgaW50IG51bTsJCS8q
IG51bWJlciBvZiBrZXlzICovDQorK30gbGRhcF9rZXlfdDsNCisrDQorKw0KKysvKiBmdW5j
dGlvbiBoZWFkZXJzICovDQorK3ZvaWQgbGRhcF9jbG9zZShsZGFwX29wdF90ICopOw0KKytp
bnQgbGRhcF9jb25uZWN0KGxkYXBfb3B0X3QgKik7DQorK2NoYXIgKiBsZGFwX3BhcnNlX2dy
b3Vwcyhjb25zdCBjaGFyICopOw0KKytjaGFyICogbGRhcF9wYXJzZV9zZXJ2ZXJzKGNvbnN0
IGNoYXIgKik7DQorK3ZvaWQgbGRhcF9vcHRpb25zX3ByaW50KGxkYXBfb3B0X3QgKik7DQor
K3ZvaWQgbGRhcF9vcHRpb25zX2ZyZWUobGRhcF9vcHRfdCAqKTsNCisrdm9pZCBsZGFwX2tl
eXNfZnJlZShsZGFwX2tleV90ICopOw0KKytpbnQgbGRhcF9wYXJzZV9sY29uZihsZGFwX29w
dF90ICopOw0KKytsZGFwX2tleV90ICogbGRhcF9nZXR1c2Vya2V5KGxkYXBfb3B0X3QgKiwg
Y29uc3QgY2hhciAqKTsNCisraW50IGxkYXBfaXNtZW1iZXIobGRhcF9vcHRfdCAqLCBjb25z
dCBjaGFyICopOw0KKysNCisrI2VuZGlmDQorZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3Jp
ZycgLS1leGNsdWRlICcqLnJlaicgbHBrLXVzZXItZXhhbXBsZS50eHQgbHBrLXVzZXItZXhh
bXBsZS50eHQNCistLS0gbHBrLXVzZXItZXhhbXBsZS50eHQJMTk2OS0xMi0zMSAxNjowMDow
MC4wMDAwMDAwMDAgLTA4MDANCisrKysgbHBrLXVzZXItZXhhbXBsZS50eHQJMjAwOC0wOC0y
MyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDANCitAQCAtMCwwICsxLDExNyBAQA0KKysNCisr
UG9zdCB0byBNTCAtPiBVc2VyIE1hZGUgUXVpY2sgSW5zdGFsbCBEb2MuDQorK0NvbnRyaWJ1
dGlvbiBmcm9tIEpvaG4gTGFuZSA8am9obkBsYW5lLnVrLm5ldD4NCisrDQorKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysNCisrDQorK09wZW5TU0ggTERBUCBrZXlzdG9yZSBQYXRjaA0KKys9
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisrDQorK05PVEU6IHRoZXNlIG5vdGVzIGFy
ZSBhIHRyYW5zY3JpcHQgb2YgYSBzcGVjaWZpYyBpbnN0YWxsYXRpb24NCisrICAgICAgdGhl
eSB3b3JrIGZvciBtZSwgeW91ciBzcGVjaWZpY3MgbWF5IGJlIGRpZmZlcmVudCENCisrICAg
ICAgZnJvbSBKb2huIExhbmUgTWFyY2ggMTd0aCAyMDA1ICAgICAgICAgam9obkBsYW5lLnVr
Lm5ldA0KKysNCisrVGhpcyBpcyBhIHBhdGNoIHRvIE9wZW5TU0ggNC4wcDEgdG8gYWxsb3cg
aXQgdG8gb2J0YWluIHVzZXJzJyBwdWJsaWMga2V5cw0KKytmcm9tIHRoZWlyIExEQVAgcmVj
b3JkIGFzIGFuIGFsdGVybmF0aXZlIHRvIH4vLnNzaC9hdXRob3JpemVkX2tleXMuDQorKw0K
KysoQXNzdW1pbmcgaGVyZSB0aGF0IG5lY2Vzc2FyeSBidWlsZCBzdHVmZiBpcyBpbiAkQlVJ
TEQpDQorKw0KKytjZCAkQlVJTEQvb3BlbnNzaC00LjBwMQ0KKytwYXRjaCAtTnAxIC1pICRC
VUlMRC9vcGVuc3NoLWxway00LjBwMS0wLjMucGF0Y2gNCisrbWtkaXIgLXAgL3Zhci9lbXB0
eSAmJg0KKysuL2NvbmZpZ3VyZSAtLXByZWZpeD0vdXNyIC0tc3lzY29uZmRpcj0vZXRjL3Nz
aCBcDQorKyAgICAtLWxpYmV4ZWNkaXI9L3Vzci9zYmluIC0td2l0aC1tZDUtcGFzc3dvcmRz
IC0td2l0aC1wYW0gXA0KKysgICAgLS13aXRoLWxpYnM9Ii1sbGRhcCIgLS13aXRoLWNwcGZs
YWdzPSItRFdJVEhfTERBUF9QVUJLRVkiDQorK05vdyBkby4NCisrbWFrZSAmJg0KKyttYWtl
IGluc3RhbGwNCisrDQorK0FkZCB0aGUgZm9sbG93aW5nIGNvbmZpZyB0byAvZXRjL3NzaC9z
c2hfY29uZmlnDQorK1VzZUxQSyB5ZXMNCisrTHBrU2VydmVycyBsZGFwOi8vbXlob3N0Lm15
ZG9tYWluLmNvbQ0KKytMcGtVc2VyRE4gIG91PVBlb3BsZSxkYz1teWRvbWFpbixkYz1jb20N
CisrDQorK1dlIG5lZWQgdG8gdGVsbCBzc2hkIGFib3V0IHRoZSBTU0wga2V5cyBkdXJpbmcg
Ym9vdCwgYXMgcm9vdCdzDQorK2Vudmlyb25tZW50IGRvZXMgbm90IGV4aXN0IGF0IHRoYXQg
dGltZS4gRWRpdCAvZXRjL3JjLmQvaW5pdC5kL3NzaGQuDQorK0NoYW5nZSB0aGUgc3RhcnR1
cCBjb2RlIGZyb20gdGhpczoNCisrICAgICAgICAgICAgICAgIGVjaG8gIlN0YXJ0aW5nIFNT
SCBTZXJ2ZXIuLi4iDQorKyAgICAgICAgICAgICAgICBsb2FkcHJvYyAvdXNyL3NiaW4vc3No
ZA0KKysgICAgICAgICAgICAgICAgOzsNCisrdG8gdGhpczoNCisrICAgICAgICAgICAgICAg
IGVjaG8gIlN0YXJ0aW5nIFNTSCBTZXJ2ZXIuLi4iDQorKyAgICAgICAgICAgICAgICBMREFQ
UkM9Ii9yb290Ly5sZGFwcmMiIGxvYWRwcm9jIC91c3Ivc2Jpbi9zc2hkDQorKyAgICAgICAg
ICAgICAgICA7Ow0KKysNCisrUmUtc3RhcnQgdGhlIHNzaGQgZGFlbW9uOg0KKysvZXRjL3Jj
LmQvaW5pdC5kL3NzaGQgcmVzdGFydA0KKysNCisrSW5zdGFsbCB0aGUgYWRkaXRpb25hbCBM
REFQIHNjaGVtYQ0KKytjcCAkQlVJTEQvb3BlbnNzaC1scGstMC4yLnNjaGVtYSAgL2V0Yy9v
cGVubGRhcC9zY2hlbWEvb3BlbnNzaC5zY2hlbWENCisrDQorK05vdyBhZGQgdGhlIG9wZW5T
U0ggTERBUCBzY2hlbWEgdG8gL2V0Yy9vcGVubGRhcC9zbGFwZC5jb25mOg0KKytBZGQgdGhl
IGZvbGxvd2luZyB0byB0aGUgZW5kIG9mIHRoZSBleGlzdGluZyBibG9jayBvZiBzY2hlbWEg
aW5jbHVkZXMNCisraW5jbHVkZSAgICAgICAgIC9ldGMvb3BlbmxkYXAvc2NoZW1hL29wZW5z
c2guc2NoZW1hDQorKw0KKytSZS1zdGFydCB0aGUgTERBUCBzZXJ2ZXI6DQorKy9ldGMvcmMu
ZC9pbml0LmQvc2xhcGQgcmVzdGFydA0KKysNCisrVG8gYWRkIG9uZSBvciBtb3JlIHB1Ymxp
YyBrZXlzIHRvIGEgdXNlciwgZWcgInRlc3R1c2VyIiA6DQorK2xkYXBzZWFyY2ggLXggLVcg
LVogLUxMTCAtYiAidWlkPXRlc3R1c2VyLG91PVBlb3BsZSxkYz1teWRvbWFpbixkYz1jb20i
IC1EDQorKyJ1aWQ9dGVzdHVzZXIsb3U9UGVvcGxlLGRjPW15ZG9tYWluLGRjPWNvbSIgPiAv
dG1wL3Rlc3R1c2VyDQorKw0KKythcHBlbmQgdGhlIGZvbGxvd2luZyB0byB0aGlzIC90bXAv
dGVzdHVzZXIgZmlsZQ0KKytvYmplY3RjbGFzczogbGRhcFB1YmxpY0tleQ0KKytzc2hQdWJs
aWNLZXk6IHNzaC1yc2ENCisrQUFBQUIzTnphQzF5YzJFQUFBQUJKUUFBQUlCM2RzcndxWHFE
N0U0ellZcnh3ZERLQlVReEtNaW9YeTlweEZWYWk2NGtBUHhqVTlLUw0KKytxSW83UWZranNs
ZnNqZmxrc2pmbGRma2pzbGRmakxYLzV6a3pSbVQyOEk1cGlHenVuUHYxN1M4OXo4WHdTc3VB
b1IxdDg2dCs1ZGxJDQorKzdlWkUvZ1ZibjJVUWtRcTcra2REVFMyeVhWNlZuQzUyTi9rS0xH
M2NpQmtCQXc9PSBHZW5lcmFsIFB1cnBvc2UgUlNBIEtleQ0KKysNCisrVGhlbiBkbyBhIG1v
ZGlmeToNCisrbGRhcG1vZGlmeSAteCAtRCAidWlkPXRlc3R1c2VyLG91PVBlb3BsZSxkYz1t
eWRvbWFpbixkYz1jb20iIC1XIC1mDQorKy90bXAvdGVzdHVzZXIgLVoNCisrRW50ZXIgTERB
UCBQYXNzd29yZDoNCisrbW9kaWZ5aW5nIGVudHJ5ICJ1aWQ9dGVzdHVzZXIsb3U9UGVvcGxl
LGRjPW15ZG9tYWluLGRjPWNvbSINCisrQW5kIGNoZWNrIHRoZSBtb2RpZnkgaXMgb2s6DQor
K2xkYXBzZWFyY2ggLXggLVcgLVogLWIgInVpZD10ZXN0dXNlcixvdT1QZW9wbGUsZGM9bXlk
b21haW4sZGM9Y29tIiAtRA0KKysidWlkPXRlc3R1c2VyLG91PVBlb3BsZSxkYz1teWRvbWFp
bixkYz1jb20iDQorK0VudGVyIExEQVAgUGFzc3dvcmQ6DQorKyMgZXh0ZW5kZWQgTERJRg0K
KysjDQorKyMgTERBUHYzDQorKyMgYmFzZSA8dWlkPXRlc3R1c2VyLG91PVBlb3BsZSxkYz1t
eWRvbWFpbixkYz1jb20+IHdpdGggc2NvcGUgc3ViDQorKyMgZmlsdGVyOiAob2JqZWN0Y2xh
c3M9KikNCisrIyByZXF1ZXN0aW5nOiBBTEwNCisrIw0KKysNCisrIyB0ZXN0dXNlciwgUGVv
cGxlLCBteWRvbWFpbi5jb20NCisrZG46IHVpZD10ZXN0dXNlcixvdT1QZW9wbGUsZGM9bXlk
b21haW4sZGM9Y29tDQorK3VpZDogdGVzdHVzZXINCisrY246IHRlc3R1c2VyDQorK29iamVj
dENsYXNzOiBhY2NvdW50DQorK29iamVjdENsYXNzOiBwb3NpeEFjY291bnQNCisrb2JqZWN0
Q2xhc3M6IHRvcA0KKytvYmplY3RDbGFzczogc2hhZG93QWNjb3VudA0KKytvYmplY3RDbGFz
czogbGRhcFB1YmxpY0tleQ0KKytzaGFkb3dMYXN0Q2hhbmdlOiAxMjc1Nw0KKytzaGFkb3dN
YXg6IDk5OTk5DQorK3NoYWRvd1dhcm5pbmc6IDcNCisrbG9naW5TaGVsbDogL2Jpbi9iYXNo
DQorK3VpZE51bWJlcjogOTk5OQ0KKytnaWROdW1iZXI6IDUwMQ0KKytob21lRGlyZWN0b3J5
OiAvaG9tZS90ZXN0dXNlcg0KKyt1c2VyUGFzc3dvcmQ6OiBlMU5UU0VGOVVEZ3dWMWhuTTFW
alVEUkpLMGsxWW5GaUwxZDRaVUpPYlhsWlozWjNVVFU9DQorK3NzaFB1YmxpY0tleTogc3No
LXJzYQ0KKytBQUFBQjNOemFDMXljMkVBQUFBQkpRQUFBSUIzZHNyd3FYcUQ3RTR6WVlyeHdk
REtCVVF4S01pb1h5OXB4RlZhaTY0a0FQeGpVOUtTcUlvN1Fma2pzbGZzamZsa3NqZmxkZmtq
c2xkZmpMWC81emt6Um1UMjhJNXBpR3p1blB2MTdTODl6DQorKzhYd1NzdUFvUjF0ODZ0KzVk
bEk3ZVpFL2dWYm4yVVFrUXE3K2tkRFRTMnlYVjZWbkM1Mk4va0tMRzNjaUJrQkF3PT0gR2Vu
ZXJhbCBQdXJwb3NlIFJTQSBLZXkNCisrDQorKyMgc2VhcmNoIHJlc3VsdA0KKytzZWFyY2g6
IDMNCisrcmVzdWx0OiAwIFN1Y2Nlc3MNCisrDQorKyMgbnVtUmVzcG9uc2VzOiAyDQorKyMg
bnVtRW50cmllczogMQ0KKysNCisrTm93IHN0YXJ0IGEgc3NoIHNlc3Npb24gdG8gdXNlciAi
dGVzdHVzZXIiIGZyb20gdXN1YWwgc3NoIGNsaWVudCAoZS5nLg0KKytwdVRUWSkuIExvZ2lu
IHNob3VsZCBzdWNjZWVkLg0KKysNCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KK2RpZmYg
LU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIE1ha2VmaWxlLmlu
IE1ha2VmaWxlLmluDQorLS0tIE1ha2VmaWxlLmluCTIwMDgtMDctMDggMDc6MjE6MTIuMDAw
MDAwMDAwIC0wNzAwDQorKysrIE1ha2VmaWxlLmluCTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAw
MDAwMDAwIC0wNzAwDQorQEAgLTg3LDcgKzg3LDcgQEANCisgCWF1dGgta3JiNS5vIFwNCisg
CWF1dGgyLWdzcy5vIGdzcy1zZXJ2Lm8gZ3NzLXNlcnYta3JiNS5vIFwNCisgCWxvZ2lucmVj
Lm8gYXV0aC1wYW0ubyBhdXRoLXNoYWRvdy5vIGF1dGgtc2lhLm8gbWQ1Y3J5cHQubyBcDQor
LQlhdWRpdC5vIGF1ZGl0LWJzbS5vIHBsYXRmb3JtLm8gc2Z0cC1zZXJ2ZXIubyBzZnRwLWNv
bW1vbi5vIFwNCisrCWF1ZGl0Lm8gYXVkaXQtYnNtLm8gcGxhdGZvcm0ubyBsZGFwYXV0aC5v
IHNmdHAtc2VydmVyLm8gc2Z0cC1jb21tb24ubyBcDQorIAlyb2FtaW5nX2NvbW1vbi5vDQor
IA0KKyBNQU5QQUdFUwk9IG1vZHVsaS41Lm91dCBzY3AuMS5vdXQgc3NoLWFkZC4xLm91dCBz
c2gtYWdlbnQuMS5vdXQgc3NoLWtleWdlbi4xLm91dCBzc2gta2V5c2Nhbi4xLm91dCBzc2gu
MS5vdXQgc3NoZC44Lm91dCBzZnRwLXNlcnZlci44Lm91dCBzZnRwLjEub3V0IHNzaC1yYW5k
LWhlbHBlci44Lm91dCBzc2gta2V5c2lnbi44Lm91dCBzc2hkX2NvbmZpZy41Lm91dCBzc2hf
Y29uZmlnLjUub3V0DQorZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRl
ICcqLnJlaicgb3BlbnNzaC1scGtfb3BlbmxkYXAuc2NoZW1hIG9wZW5zc2gtbHBrX29wZW5s
ZGFwLnNjaGVtYQ0KKy0tLSBvcGVuc3NoLWxwa19vcGVubGRhcC5zY2hlbWEJMTk2OS0xMi0z
MSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDANCisrKysgb3BlbnNzaC1scGtfb3BlbmxkYXAu
c2NoZW1hCTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwDQorQEAgLTAsMCAr
MSwxOSBAQA0KKysjDQorKyMgTERBUCBQdWJsaWMgS2V5IFBhdGNoIHNjaGVtYSBmb3IgdXNl
IHdpdGggb3BlbnNzaC1sZGFwcHVia2V5DQorKyMgQXV0aG9yOiBFcmljIEFVR0UgPGVhdUBw
aGVhci5vcmc+DQorKyMgDQorKyMgQmFzZWQgb24gdGhlIHByb3Bvc2FsIG9mIDogTWFyayBS
dWlqdGVyDQorKyMNCisrDQorKw0KKysjIG9jdGV0U3RyaW5nIFNZTlRBWA0KKythdHRyaWJ1
dGV0eXBlICggMS4zLjYuMS40LjEuMjQ1NTIuNTAwLjEuMS4xLjEzIE5BTUUgJ3NzaFB1Ymxp
Y0tleScgDQorKwlERVNDICdNQU5EQVRPUlk6IE9wZW5TU0ggUHVibGljIGtleScgDQorKwlF
UVVBTElUWSBvY3RldFN0cmluZ01hdGNoDQorKwlTWU5UQVggMS4zLjYuMS40LjEuMTQ2Ni4x
MTUuMTIxLjEuNDAgKQ0KKysNCisrIyBwcmludGFibGVTdHJpbmcgU1lOVEFYIHllc3xubw0K
KytvYmplY3RjbGFzcyAoIDEuMy42LjEuNC4xLjI0NTUyLjUwMC4xLjEuMi4wIE5BTUUgJ2xk
YXBQdWJsaWNLZXknIFNVUCB0b3AgQVVYSUxJQVJZDQorKwlERVNDICdNQU5EQVRPUlk6IE9w
ZW5TU0ggTFBLIG9iamVjdGNsYXNzJw0KKysJTVVTVCAoIHNzaFB1YmxpY0tleSAkIHVpZCAp
IA0KKysJKQ0KK2RpZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5y
ZWonIG9wZW5zc2gtbHBrX3N1bi5zY2hlbWEgb3BlbnNzaC1scGtfc3VuLnNjaGVtYQ0KKy0t
LSBvcGVuc3NoLWxwa19zdW4uc2NoZW1hCTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAw
IC0wODAwDQorKysrIG9wZW5zc2gtbHBrX3N1bi5zY2hlbWEJMjAwOC0wOC0yMyAxNTowMjo0
Ny4wMDAwMDAwMDAgLTA3MDANCitAQCAtMCwwICsxLDIxIEBADQorKyMNCisrIyBMREFQIFB1
YmxpYyBLZXkgUGF0Y2ggc2NoZW1hIGZvciB1c2Ugd2l0aCBvcGVuc3NoLWxkYXBwdWJrZXkN
CisrIyBBdXRob3I6IEVyaWMgQVVHRSA8ZWF1QHBoZWFyLm9yZz4NCisrIyANCisrIyBTY2hl
bWEgZm9yIFN1biBEaXJlY3RvcnkgU2VydmVyLg0KKysjIEJhc2VkIG9uIHRoZSBvcmlnaW5h
bCBzY2hlbWEsIG1vZGlmaWVkIGJ5IFN0ZWZhbiBGaXNjaGVyLg0KKysjDQorKw0KKytkbjog
Y249c2NoZW1hDQorKw0KKysjIG9jdGV0U3RyaW5nIFNZTlRBWA0KKythdHRyaWJ1dGVUeXBl
czogKCAxLjMuNi4xLjQuMS4yNDU1Mi41MDAuMS4xLjEuMTMgTkFNRSAnc3NoUHVibGljS2V5
JyANCisrCURFU0MgJ01BTkRBVE9SWTogT3BlblNTSCBQdWJsaWMga2V5JyANCisrCUVRVUFM
SVRZIG9jdGV0U3RyaW5nTWF0Y2gNCisrCVNZTlRBWCAxLjMuNi4xLjQuMS4xNDY2LjExNS4x
MjEuMS40MCApDQorKw0KKysjIHByaW50YWJsZVN0cmluZyBTWU5UQVggeWVzfG5vDQorK29i
amVjdENsYXNzZXM6ICggMS4zLjYuMS40LjEuMjQ1NTIuNTAwLjEuMS4yLjAgTkFNRSAnbGRh
cFB1YmxpY0tleScgU1VQIHRvcCBBVVhJTElBUlkNCisrCURFU0MgJ01BTkRBVE9SWTogT3Bl
blNTSCBMUEsgb2JqZWN0Y2xhc3MnDQorKwlNVVNUICggc3NoUHVibGljS2V5ICQgdWlkICkg
DQorKwkpDQorZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRlICcqLnJl
aicgUkVBRE1FLmxwayBSRUFETUUubHBrDQorLS0tIFJFQURNRS5scGsJMTk2OS0xMi0zMSAx
NjowMDowMC4wMDAwMDAwMDAgLTA4MDANCisrKysgUkVBRE1FLmxwawkyMDA4LTA4LTIzIDE1
OjAyOjQ3LjAwMDAwMDAwMCAtMDcwMA0KK0BAIC0wLDAgKzEsMjY3IEBADQorK09wZW5TU0gg
TERBUCBQVUJMSUMgS0VZIFBBVENIIA0KKytDb3B5cmlnaHQgKGMpIDIwMDMgRXJpYyBBVUdF
IChlYXVAcGhlYXIub3JnKQ0KKytBbGwgcmlnaHRzIHJlc2VydmVkLg0KKysNCisrUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0DQorK21vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKythcmUgbWV0Og0KKysxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KKysg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuDQorKzIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQorKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCisrICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4NCisrMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzDQorKyAgIGRlcml2ZWQgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLg0KKysNCisrVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBg
QVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1INCisrSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUw0KKytP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELg0KKytJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsDQorK0lOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVA0K
KytOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsDQorK0RBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQ0KKytUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUDQorKyhJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRg0KKytUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKysNCisrcHVycG9z
ZXMgb2YgdGhpcyBwYXRjaDoNCisrDQorK1RoaXMgcGF0Y2ggd291bGQgaGVscCB0byBoYXZl
IGF1dGhlbnRpY2F0aW9uIGNlbnRyYWxpemF0aW9uIHBvbGljeQ0KKyt1c2luZyBzc2ggcHVi
bGljIGtleSBhdXRoZW50aWNhdGlvbi4NCisrVGhpcyBwYXRjaCBjb3VsZCBiZSBhbiBhbHRl
cm5hdGl2ZSB0byBvdGhlciAic2VjdXJlIiBhdXRoZW50aWNhdGlvbiBzeXN0ZW0NCisrd29y
a2luZyBpbiBhIHNpbWlsYXIgd2F5IChLZXJiZXJvcywgU2VjdXJJRCwgZXRjLi4uKSwgZXhj
ZXB0IHRoZSBmYWN0IA0KKyt0aGF0IGl0J3MgYmFzZWQgb24gT3BlblNTSCBhbmQgaXRzIHB1
YmxpYyBrZXkgYWJpbGl0aWVzLg0KKysNCisrPj4gRllJOiA8PA0KKysndWlkJzogbWVhbnMg
dW5peCBhY2NvdW50cyBleGlzdGluZyBvbiB0aGUgY3VycmVudCBzZXJ2ZXINCisrJ2xwa1Nl
cnZlckdyb3VwOicgbWVhbiBzZXJ2ZXIgZ3JvdXAgY29uZmlndXJlZCBvbiB0aGUgY3VycmVu
dCBzZXJ2ZXIgKCdscGtTZXJ2ZXJHcm91cCcgaW4gc3NoZF9jb25maWcpDQorKw0KKytleGFt
cGxlIHNjaGVtYToNCisrDQorKw0KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VydmVyMSAodWlkOiBlYXUscml2YWwsdG90bykgKGxwa1NlcnZlckdyb3VwOiB1bml4
KQ0KKysgICAgICAgICAgICAgICAgX19fX19fX19fX18gICAgICAvDQorKyAgICAgICAgICAg
ICAgIC8gICAgICAgICAgIFwgLS0tIC0gc2VydmVyMyAodWlkOiBlYXUsIHRpdGkpIChscGtT
ZXJ2ZXJHcm91cDogdW5peCkNCisrICAgICAgICAgICAgICB8IExEQVAgU2VydmVyIHwgICAg
XA0KKysJICAgICAgfCBlYXUgICxyaXZhbCB8ICAgICBzZXJ2ZXIyICh1aWQ6IHJpdmFsLCBl
YXUpIChscGtTZXJ2ZXJHcm91cDogdW5peCkNCisrCSAgICAgIHwgdGl0aSAsdG90byAgfA0K
KysJICAgICAgfCB1c2VyeCwuLi4uICB8ICAgICAgICAgc2VydmVyNSAodWlkOiBlYXUpICAo
bHBrU2VydmVyR3JvdXA6IG1haWwpDQorKyAgICAgICAgICAgICAgIFxfX19fX19fX19fXy8g
XCAgICAgICAvDQorKwkgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tIC0gc2VydmVyNCAo
dWlkOiBlYXUsIHJpdmFsKSAgKG5vIGdyb3VwIGNvbmZpZ3VyZWQpDQorKwkJCSAgICAgICAg
ICAgICBcDQorKwkJCQkgICAgICAgIGV0Yy4uLg0KKysNCisrLSBXSEFUIFdFIE5FRUQgOg0K
KysNCisrICAqIGNvbmZpZ3VyZWQgTERBUCBzZXJ2ZXIgc29tZXdoZXJlIG9uIHRoZSBuZXR3
b3JrIChpLmUuIE9wZW5MREFQKQ0KKysgICogcGF0Y2hlZCBzc2hkICh3aXRoIHRoaXMgcGF0
Y2ggOykNCisrICAqIExEQVAgdXNlcigvZ3JvdXApIGVudHJ5IChsb29rIGF0IHVzZXJzLmxk
aWYgKCYgZ3JvdXBzLmxkaWYpKToNCisrICAgICAgICBVc2VyIGVudHJ5Og0KKysJLSBhdHRh
Y2hlZCB0byB0aGUgJ2xkYXBQdWJsaWNLZXknIG9iamVjdGNsYXNzDQorKwktIGF0dGFjaGVk
IHRvIHRoZSAncG9zaXhBY2NvdW50JyBvYmplY3RjbGFzcw0KKysJLSB3aXRoIGEgZmlsbGVk
ICdzc2hQdWJsaWNLZXknIGF0dHJpYnV0ZSANCisrCUV4YW1wbGU6DQorKwkJZG46IHVpZD1l
YXUsb3U9dXNlcnMsZGM9Y3Vja29vcyxkYz1uZXQNCisrCQlvYmplY3RjbGFzczogdG9wDQor
KwkJb2JqZWN0Y2xhc3M6IHBlcnNvbg0KKysJCW9iamVjdGNsYXNzOiBvcmdhbml6YXRpb25h
bFBlcnNvbg0KKysJCW9iamVjdGNsYXNzOiBwb3NpeEFjY291bnQNCisrCQlvYmplY3RjbGFz
czogbGRhcFB1YmxpY0tleQ0KKysJCWRlc2NyaXB0aW9uOiBFcmljIEFVR0UgQWNjb3VudA0K
KysJCXVzZXJQYXNzd29yZDogYmxhaA0KKysJCWNuOiBFcmljIEFVR0UNCisrCQlzbjogRXJp
YyBBVUdFDQorKwkJdWlkOiBlYXUNCisrCQl1aWROdW1iZXI6IDEwMzQNCisrCQlnaWROdW1i
ZXI6IDENCisrCQlob21lRGlyZWN0b3J5OiAvZXhwb3J0L2hvbWUvZWF1DQorKwkJc3NoUHVi
bGljS2V5OiBzc2gtZHNzIEFBQUFCMy4uLg0KKysJCXNzaFB1YmxpY0tleTogc3NoLWRzcyBB
QUFBTTUuLi4NCisrDQorKwlHcm91cCBlbnRyeToNCisrCS0gYXR0YWNoZWQgdG8gdGhlICdw
b3NpeEdyb3VwJyBvYmplY3RjbGFzcw0KKysJLSB3aXRoIGEgJ2NuJyBncm91cG5hbWUgYXR0
cmlidXRlDQorKwktIHdpdGggbXVsdGlwbGUgJ21lbWJlclVpZCcgYXR0cmlidXRlcyBmaWxs
ZWQgd2l0aCB1c2VybmFtZXMgYWxsb3dlZCBpbiB0aGlzIGdyb3VwDQorKwlFeGFtcGxlOg0K
KysJCSMgZmV3IG1lbWJlcnMNCisrCQlkbjogY249dW5peCxvdT1ncm91cHMsZGM9Y3Vja29v
cyxkYz1uZXQNCisrCQlvYmplY3RjbGFzczogdG9wDQorKwkJb2JqZWN0Y2xhc3M6IHBvc2l4
R3JvdXANCisrCQlkZXNjcmlwdGlvbjogVW5peCBiYXNlZCBzZXJ2ZXJzIGdyb3VwDQorKwkJ
Y246IHVuaXgNCisrCQlnaWROdW1iZXI6IDEwMDINCisrCQltZW1iZXJVaWQ6IGVhdQ0KKysJ
CW1lbWJlclVpZDogdXNlcjENCisrCQltZW1iZXJVaWQ6IHVzZXIyDQorKw0KKysNCisrLSBI
T1cgSVQgV09SS1MgOg0KKysNCisrICAqIHdpdGhvdXQgcGF0Y2gNCisrICBJZiBhIHVzZXIg
d2FudHMgdG8gYXV0aGVudGljYXRlIHRvIGxvZyBpbiBhIHNlcnZlciB0aGUgc3NoZCwgd2ls
bCBmaXJzdCBsb29rIGZvciBhdXRoZW50aWNhdGlvbiBtZXRob2QgYWxsb3dlZCAoUlNBYXV0
aCxrZXJiZXJvcyxldGMuLikNCisrICBhbmQgaWYgUlNBYXV0aCBhbmQgdGlja2V0cyBiYXNl
ZCBhdXRoIGZhaWxzLCBpdCB3aWxsIGZhbGxiYWNrIHRvIHN0YW5kYXJkIHBhc3N3b3JkIGF1
dGhlbnRpY2F0aW9uIChpZiBlbmFibGVkKS4NCisrDQorKyAgKiB3aXRoIHRoZSBwYXRjaA0K
KysgIElmIGEgdXNlciB3YW50IHRvIGF1dGhlbnRpY2F0ZSB0byBsb2cgaW4gYSBzZXJ2ZXIs
IHRoZSBzc2hkIHdpbGwgZmlyc3QgbG9vayBmb3IgYXV0aCBtZXRob2QgaW5jbHVkaW5nIExE
QVAgcHVia2V5LCBpZiB0aGUgbGRhcHB1YmtleSBvcHRpb25zIGlzIGVuYWJsZWQuDQorKyAg
SXQgd2lsbCBkbyBhbiBsZGFwc2VhcmNoIHRvIGdldCB0aGUgcHVibGljIGtleSBkaXJlY3Rs
eSBmcm9tIHRoZSBMREFQIGluc3RlYWQgb2YgcmVhZGluZyBpdCBmcm9tIHRoZSBzZXJ2ZXIg
ZmlsZXN5c3RlbS4gDQorKyAgKHVzdWFsbHkgaW4gJEhPTUUvLnNzaC9hdXRob3JpemVkX2tl
eXMpDQorKw0KKysgIElmIGdyb3VwcyBhcmUgZW5hYmxlZCwgaXQgd2lsbCBhbHNvIGNoZWNr
IGlmIHRoZSB1c2VyIHRoYXQgd2FudHMgdG8gbG9naW4gaXMgaW4gdGhlIGdyb3VwIG9mIHRo
ZSBzZXJ2ZXIgaGUgaXMgdHJ5aW5nIHRvIGxvZyBpbnRvLg0KKysgIElmIGl0IGZhaWxzLCBp
dCBmYWxscyBiYWNrIG9uIFJTQSBhdXRoIGZpbGVzICgkSE9NRS8uc3NoL2F1dGhvcml6ZWRf
a2V5cyksIGV0Yy4uIGFuZCBmaW5hbGx5IHRvIHN0YW5kYXJkIHBhc3N3b3JkIGF1dGhlbnRp
Y2F0aW9uIChpZiBlbmFibGVkKS4NCisrDQorKyAgNyB0b2tlbnMgYXJlIGFkZGVkIHRvIHNz
aGRfY29uZmlnIDoNCisrICAjIGhlcmUgaXMgdGhlIG5ldyBwYXRjaGVkIGxkYXAgcmVsYXRl
ZCB0b2tlbnMNCisrICAjIGVudHJpZXMgaW4geW91ciBMREFQIG11c3QgYmUgcG9zaXhBY2Nv
dW50ICYgc3Ryb25nQXV0aGVudGljYXRpb25Vc2VyICYgcG9zaXhHcm91cA0KKysgIFVzZUxQ
SyB5ZXMJCQkJCQkJCSMgbG9vayB0aGUgcHViIGtleSBpbnRvIExEQVANCisrICBMcGtTZXJ2
ZXJzIGxkYXA6Ly8xMC4zMS4zMi41LyBsZGFwOi8vMTAuMzEuMzIuNCBsZGFwOi8vMTAuMzEu
MzIuMwkjIHdoaWNoIExEQVAgc2VydmVyIGZvciB1c2VycyA/IChVUkwgZm9ybWF0KQ0KKysg
IExwa1VzZXJETiAgb3U9dXNlcnMsZGM9Zm9vYmFyLGRjPW5ldAkJCQkJIyB3aGljaCBiYXNl
IEROIGZvciB1c2VycyA/DQorKyAgTHBrR3JvdXBETiBvdT1ncm91cHMsZGM9Zm9vYmFyLGRj
PW5ldAkJCQkJIyB3aGljaCBiYXNlIEROIGZvciBncm91cHMgPyANCisrICBMcGtCaW5kRE4g
Y249bWFuYWdlcixkYz1mb29iYXIsZGM9bmV0CQkJCQkjIHdoaWNoIGJpbmQgRE4gPw0KKysg
IExwa0JpbmRQdyBhc2VjcmV0CQkJCQkJCSMgYmluZCBETiBjcmVkaWRlbnRpYWxzDQorKyAg
THBrU2VydmVyR3JvdXAgYWdyb3VwbmFtZQkJCQkJCSMgdGhlIGdyb3VwIHRoZSBzZXJ2ZXIg
aXMgcGFydCBvZg0KKysNCisrICBSaWdodCBub3cgaSdtIHVzaW5nIGFub255bW91cyBiaW5k
aW5nIHRvIGdldCBwdWJsaWMga2V5cywgYmVjYXVzZSBnZXR0aW5nIHB1YmxpYyBrZXlzIG9m
IHNvbWVvbmUgZG9lc24ndCBpbXBlcnNvbmF0ZSBoaW24IGJ1dCB0aGVyZSBpcyBzb21lDQor
KyAgZmxhd3MgeW91IGhhdmUgdG8gdGFrZSBjYXJlIG9mLg0KKysNCisrLSBIT1cgVE8gSU5T
RVJUIEEgVVNFUi9LRVkgSU5UTyBBTiBMREFQIEVOVFJZDQorKw0KKysgICogbXkgd2F5ICh0
aGVyZSBpcyBwbGVudHkgOikNCisrICAtIGNyZWF0ZSBsZGlmIGZpbGUgKGkuZS4gdXNlcnMu
bGRpZikNCisrICAtIGNhdCB+Ly5zc2gvaWRfZHNhLnB1YiBPUiBjYXQgfi8uc3NoL2lkX3Jz
YS5wdWIgT1IgY2F0IH4vLnNzaC9pZGVudGl0eS5wdWINCisrICAtIG15IHdheSBpbiA0IHN0
ZXBzIDoNCisrICBFeGFtcGxlOg0KKysNCisrICAjIHlvdSBhZGQgdGhpcyB0byB0aGUgdXNl
ciBlbnRyeSBpbiB0aGUgTERJRiBmaWxlIDoNCisrICBbLi4uXQ0KKysgIG9iamVjdGNsYXNz
OiBwb3NpeEFjY291bnQNCisrICBvYmplY3RjbGFzczogbGRhcFB1YmxpY0tleQ0KKysgIFsu
Li5dDQorKyAgc3NoUHVibGlLZXk6IHNzaC1kc3MgQUFBQUJEaDEyRERVUjIuLi4NCisrICBb
Li4uXQ0KKysNCisrICAjIGluc2VydCB5b3VyIGVudHJ5IGFuZCB5b3UncmUgZG9uZSA6KQ0K
KysgIGxkYXBhZGQgLUQgYmFsYmxhYmxhIC13IGJsZWggPCBmaWxlLmxkaWYgDQorKyAgDQor
KyAgYWxsIHN0YW5kYXJkIG9wdGlvbnMgY2FuIGJlIHByZXNlbnQgaW4gdGhlICdzc2hQdWJs
aWNLZXknIGF0dHJpYnV0ZS4NCisrDQorKy0gV0hZIDoNCisrDQorKyAgU2ltcGx5IGJlY2F1
c2UsIGkgd2FzIGxvb2tpbmcgZm9yIGEgd2F5IHRvIGNlbnRyYWxpemUgYWxsIHN5c2FkbWlu
cyBhdXRoZW50aWNhdGlvbiwgZWFzaWx5LCAgd2l0aG91dCBjb21wbGV0ZWx5IHVzaW5nIExE
QVAgDQorKyAgYXMgYXV0aGVudGljYXRpb24gbWV0aG9kIChsaWtlIHBhbV9sZGFwIGV0Yy4u
KS4gIA0KKysgIA0KKysgIEFmdGVyIGxvb2tpbmcgaW50byBLZXJiZXJvcywgU2VjdXJJRCwg
YW5kIG90aGVyIGNlbnRyYWxpemVkIHNlY3VyZSBhdXRoZW50aWNhdGlvbnMgc3lzdGVtcywg
dGhlIHVzZSBvZiBSU0EgYW5kIExEQVAgdG8gZ2V0IA0KKysgIHB1YmxpYyBrZXkgZm9yIGF1
dGhlbnRpY2F0aW9uIGFsbG93cyB1cyB0byBjb250cm9sIHdobyBoYXMgYWNjZXNzIHRvIHdo
aWNoIHNlcnZlciAodGhlIHVzZXIgbmVlZHMgYW4gYWNjb3VudCBhbmQgdG8gYmUgaW4gJ3N0
cm9uZ0F1dGhlbnRpY2F0aW9uVXNlcicNCisrICBvYmplY3RjbGFzcyB3aXRoaW4gTERBUCBh
bmQgcGFydCBvZiB0aGUgZ3JvdXAgdGhlIFNTSCBzZXJ2ZXIgaXMgaW4pLiANCisrDQorKyAg
UGFzc3dvcmRzIHVwZGF0ZSBhcmUgbm8gbG9uZ2VyIGEgbmlnaHRtYXJlIGZvciBhIHNlcnZl
ciBmYXJtIChrZXkgcGFpciBwYXNzcGhyYXNlIGlzIHN0b3JlZCBvbiBlYWNoIHVzZXIncyBi
b3ggYW5kIHByaXZhdGUga2V5IGlzIGxvY2FsbHkgZW5jcnlwdGVkIHVzaW5nIGhpcyBwYXNz
cGhyYXNlIA0KKysgIHNvIGVhY2ggdXNlciBjYW4gY2hhbmdlIGl0IGFzIG11Y2ggYXMgaGUg
d2FudHMpLiANCisrDQorKyAgQmxvY2tpbmcgYSB1c2VyIGFjY291bnQgY2FuIGJlIGRvbmUg
ZGlyZWN0bHkgZnJvbSB0aGUgTERBUCAoaWYgc3NoZCBpcyB1c2luZyBSU0FBdXRoICsgbGRh
cCBvbmx5KS4NCisrDQorKy0gUlVMRVMgOiAgDQorKyAgRW50cnkgaW4gdGhlIExEQVAgc2Vy
dmVyIG11c3QgcmVzcGVjdCAncG9zaXhBY2NvdW50JyBhbmQgJ2xkYXBQdWJsaWNLZXknIHdo
aWNoIGFyZSBkZWZpbmVkIGluIGNvcmUuc2NoZW1hLiANCisrICBhbmQgdGhlIGFkZGl0aW9u
bmFsIGxway5zY2hlbWEuDQorKw0KKysgIFRoaXMgcGF0Y2ggY291bGQgYWxsb3cgYSBzbW9v
dGggdHJhbnNpdGlvbiBiZXR3ZWVuIHN0YW5kYXJkIGF1dGggKC9ldGMvcGFzc3dkKSBhbmQg
Y29tcGxldGUgTERBUCBiYXNlZCBhdXRoZW50aWNhdGlvbiANCisrICAocGFtbGRhcCwgbnNz
X2xkYXAsIGV0Yy4uKS4NCisrDQorKyAgVGhpcyBjYW4gYmUgYW4gYWx0ZXJuYXRpdmUgdG8g
b3RoZXIgKG9sZD8vZXhwZW5zaXZlPykgYXV0aGVudGljYXRpb24gbWV0aG9kcyAoS2VyYmVy
b3MvU2VjdXJJRC8uLikuDQorKyAgDQorKyAgUmVmZXJyaW5nIHRvIHNjaGVtYSBhdCB0aGUg
YmVnaW5uaW5nIG9mIHRoaXMgZmlsZSBpZiB1c2VyICdlYXUnIGlzIG9ubHkgaW4gZ3JvdXAg
J3VuaXgnDQorKyAgJ2VhdScgd291bGQgT05MWSBhY2Nlc3MgJ3NlcnZlcjEnLCAnc2VydmVy
MicsICdzZXJ2ZXIzJyBBTkQgJ3NlcnZlcjQnIEJVVCBOT1QgJ3NlcnZlcjUnLg0KKysgIElm
IHlvdSB0aGVuIG1vZGlmeSB0aGUgTERBUCAnbWFpbCcgZ3JvdXAgZW50cnkgdG8gYWRkICdt
ZW1iZXJVaWQ6IGVhdScgVEhFTiB1c2VyICdlYXUnIHdvdWxkIGJlIGFibGUNCisrICB0byBs
b2cgaW4gJ3NlcnZlcjUnIChpIGhvcGUgeW91IGdvdCB0aGUgaWRlYSwgbXkgZW5nbGlzaCBp
cyBiYWQgOikuDQorKw0KKysgIEVhY2ggc2VydmVyJ3Mgc3NoZCBpcyBwYXRjaGVkIGFuZCBj
b25maWd1cmVkIHRvIGFzayB0aGUgcHVibGljIGtleSBhbmQgdGhlIGdyb3VwIGluZm9zIGlu
IHRoZSBMREFQDQorKyAgc2VydmVyLg0KKysgIFdoZW4geW91IHdhbnQgdG8gYWxsb3cgYSBu
ZXcgdXNlciB0byBoYXZlIGFjY2VzcyB0byB0aGUgc2VydmVyIHBhcmMsIHlvdSBqdXN0IGFk
ZCBoaW0gYW4gYWNjb3VudCBvbiANCisrICB5b3VyIHNlcnZlcnMsIHlvdSBhZGQgaGlzIHB1
YmxpYyBrZXkgaW50byBoaXMgZW50cnkgb24gdGhlIExEQVAgc2VydmVyLCBpdCdzIGRvbmUu
IA0KKysNCisrICBCZWNhdXNlIHNzaGRzIGFyZSBsb29raW5nIHB1YmxpYyBrZXlzIGludG8g
dGhlIExEQVAgZGlyZWN0bHkgaW5zdGVhZCBvZiBhIGZpbGUgKCRIT01FLy5zc2gvYXV0aG9y
aXplZF9rZXlzKS4NCisrDQorKyAgV2hlbiB0aGUgdXNlciBuZWVkcyB0byBjaGFuZ2UgaGlz
IHBhc3NwaHJhc2UgaGUgY2FuIGRvIGl0IGRpcmVjdGx5IGZyb20gaGlzIHdvcmtzdGF0aW9u
IGJ5IGNoYW5naW5nIA0KKysgIGhpcyBvd24ga2V5IHNldCBsb2NrIHBhc3NwaHJhc2UsIGFu
ZCBhbGwgc2VydmVycyBhcmUgYXV0b21hdGljYWxseSBhd2FyZS4NCisrIA0KKysgIFdpdGgg
YSBDQVJFRlVMIExEQVAgc2VydmVyIGNvbmZpZ3VyYXRpb24geW91IGNvdWxkIGFsbG93IGEg
dXNlciB0byBhZGQvZGVsZXRlL21vZGlmeSBoaXMgb3duIGVudHJ5IGhpbXNlbGYNCisrICBz
byBoZSBjYW4gYWRkL21vZGlmeS9kZWxldGUgaGltc2VsZiBoaXMgcHVibGljIGtleSB3aGVu
IG5lZWRlZC4NCisrDQorK60gRkxBV1MgOg0KKysgIExEQVAgbXVzdCBiZSB3ZWxsIGNvbmZp
Z3VyZWQsIGdldHRpbmcgdGhlIHB1YmxpYyBrZXkgb2Ygc29tZSB1c2VyIGlzIG5vdCBhIHBy
b2JsZW0sIGJ1dCBpZiBhbm9ueW1vdXMgTERBUCANCisrICBhbGxvdyB3cml0ZSB0byB1c2Vy
cyBkbiwgc29tZWJvZHkgY291bGQgcmVwbGFjZSBzb21ldXNlcidzIHB1YmxpYyBrZXkgYnkg
aXRzIG93biBhbmQgaW1wZXJzb25hdGUgc29tZSANCisrICBvZiB5b3VyIHVzZXJzIGluIGFs
bCB5b3VyIHNlcnZlciBmYXJtIGJlIFZFUlkgQ0FSRUZVTC4NCisrICANCisrICBNSVRNIGF0
dGFjayB3aGVuIHNzaGQgaXMgcmVxdWVzdGluZyB0aGUgcHVibGljIGtleSwgY291bGQgbGVh
ZCB0byBhIGNvbXByb21pc2Ugb2YgeW91ciBzZXJ2ZXJzIGFsbG93aW5nIGxvZ2luIA0KKysg
IGFzIHRoZSBpbXBlcnNvbm5hdGVkIHVzZXIuDQorKw0KKysgIElmIExEQVAgc2VydmVyIGlz
IGRvd24gdGhlbiwgZmFsbGJhY2sgb24gcGFzc3dkIGF1dGguDQorKyAgDQorKyAgdGhlIGxk
YXAgY29kZSBwYXJ0IGhhcyBub3QgYmVlbiB3ZWxsIGF1ZGl0ZWQgeWV0Lg0KKysNCisrLSBM
REFQIFVTRVIgRU5UUlkgRVhBTVBMRVMgKExESUYgRm9ybWF0LCBsb29rIGluIHVzZXJzLmxk
aWYpDQorKyAgICAtLS0gQ1VUIEhFUkUgLS0tDQorKyAgICBkbjogdWlkPWpkb2Usb3U9dXNl
cnMsZGM9Zm9vYmFyLGRjPW5ldA0KKysgICAgb2JqZWN0Y2xhc3M6IHRvcA0KKysgICAgb2Jq
ZWN0Y2xhc3M6IHBlcnNvbg0KKysgICAgb2JqZWN0Y2xhc3M6IG9yZ2FuaXphdGlvbmFsUGVy
c29uDQorKyAgICBvYmplY3RjbGFzczogcG9zaXhBY2NvdW50DQorKyAgICBvYmplY3RjbGFz
czogbGRhcFB1YmxpY0tleQ0KKysgICAgZGVzY3JpcHRpb246IE15IGFjY291bnQNCisrICAg
IGNuOiBKb2huIERvZQ0KKysgICAgc246IEpvaG4gRG9lDQorKyAgICB1aWQ6IGpkb2UNCisr
ICAgIHVpZE51bWJlcjogMTAwDQorKyAgICBnaWROdW1iZXI6IDEwMA0KKysgICAgaG9tZURp
cmVjdG9yeTogL2hvbWUvamRvZQ0KKysgICAgc3NoUHVibGljS2V5OiBzc2gtZHNzIEFBQUFC
M056YUMxa2MzTUFBQUVCQU92TDhwUkVVZzl3U3kvOCtoUUo1NFlGM0FYa0IwT1pyWEIuLi4u
DQorKyAgICBbLi4uXQ0KKysgICAgLS0tIENVVCBIRVJFIC0tLQ0KKysNCisrLSBMREFQIEdS
T1VQIEVOVFJZIEVYQU1QTEVTIChMRElGIEZvcm1hdCwgbG9vayBpbiBncm91cHMubGRpZikN
CisrICAgIC0tLSBDVVQgSEVSRSAtLS0NCisrICAgIGRuOiBjbj11bml4LG91PWdyb3Vwcyxk
Yz1jdWNrb29zLGRjPW5ldA0KKysgICAgb2JqZWN0Y2xhc3M6IHRvcA0KKysgICAgb2JqZWN0
Y2xhc3M6IHBvc2l4R3JvdXANCisrICAgIGRlc2NyaXB0aW9uOiBVbml4IGJhc2VkIHNlcnZl
cnMgZ3JvdXANCisrICAgIGNuOiB1bml4DQorKyAgICBnaWROdW1iZXI6IDEwMDINCisrICAg
IG1lbWJlclVpZDogamRvZQ0KKysgICAgbWVtYmVyVWlkOiB1c2VyMQ0KKysgICAgbWVtYmVy
VWlkOiB1c2VyMg0KKysgICAgWy4uLl0NCisrICAgIC0tLSBDVVQgSEVSRSAtLS0NCisrDQor
Kz4+IEZZSTogPDwgDQorK011bHRpcGxlICdzc2hQdWJsaWNLZXknIGluIGEgdXNlciBlbnRy
eSBhcmUgYWxsb3dlZCwgYXMgd2VsbCBhcyBtdWx0aXBsZSAnbWVtYmVyVWlkJyBhdHRyaWJ1
dGVzIGluIGEgZ3JvdXAgZW50cnkNCisrDQorKy0gQ09NUElMSU5HOg0KKysgIDEuIEFwcGx5
IHRoZSBwYXRjaA0KKysgIDIuIC4vY29uZmlndXJlIC0td2l0aC15b3VyLW9wdGlvbnMgLS13
aXRoLWxkYXA9L3ByZWZpeC90by9sZGFwX2xpYnNfYW5kX2luY2x1ZGVzDQorKyAgMy4gbWFr
ZQ0KKysgIDQuIGl0J3MgZG9uZS4NCisrDQorKy0gQkxBIDoNCisrICBJIGhvcGUgdGhpcyBj
b3VsZCBoZWxwLCBhbmQgaSBob3BlIHRvIGJlIGNsZWFyIGVub3VnaCwsIG9yIGdpdmUgaWRl
YXMuICBxdWVzdGlvbnMvY29tbWVudHMvaW1wcm92ZW1lbnRzIGFyZSB3ZWxjb21lLg0KKysg
IA0KKystIFRPRE8gOg0KKysgIFJlZGVzaWduIGRpZmZlcmVudGx5Lg0KKysNCisrLSBET0NT
L0xJTksgOg0KKysgIGh0dHA6Ly9wYWNzZWMuanAvY29yZTA1L3BzajA1LWJhcmlzYW5pLWVu
LnBkZg0KKysgIGh0dHA6Ly9mcml0ei5wb3RzZGFtLmVkdS9wcm9qZWN0cy9vcGVuc3NoLWxw
ay8NCisrICBodHRwOi8vZnJpdHoucG90c2RhbS5lZHUvcHJvamVjdHMvc3NoZ2F0ZS8NCisr
ICBodHRwOi8vZGV2LmludmVyc2VwYXRoLmNvbS90cmFjL29wZW5zc2gtbHBrDQorKyAgaHR0
cDovL2xhbS5zZi5uZXQvICggaHR0cDovL2xhbS5zb3VyY2Vmb3JnZS5uZXQvZG9jdW1lbnRh
dGlvbi9zdXBwb3J0ZWRTY2hlbWFzLmh0bSApDQorKw0KKystIENPTlRSSUJVVE9SUy9JREVB
Uy9HUkVFVFMgOg0KKysgIC0gRmFsayBTaWVtb25zbWVpZXIuDQorKyAgLSBKYWNvYiBSaWVm
Lg0KKysgIC0gTWljaGFlbCBEdXJjaGdyYWYuDQorKyAgLSBmcmVkZXJpYyBwZXRlcnMuDQor
KyAgLSBGaW5sYXkgZG9iYmllLg0KKysgIC0gU3RlZmFuIEZpc2hlci4NCisrICAtIFJvYmlu
IEguIEpvaG5zb24uDQorKyAgLSBBZHJpYW4gQnJpZGdldHQuDQorKw0KKystIENPTlRBQ1Qg
Og0KKysgIC0gRXJpYyBBVUdFIDxlYXVAcGhlYXIub3JnPg0KKysgIC0gQW5kcmVhIEJhcmlz
YW5pIDxhbmRyZWFAaW52ZXJzZXBhdGguY29tPg0KK2RpZmYgLU51YXIgLS1leGNsdWRlICcq
Lm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIHNlcnZjb25mLmMgc2VydmNvbmYuYw0KKy0tLSBz
ZXJ2Y29uZi5jCTIwMDgtMDctMDMgMjA6NTE6MTIuMDAwMDAwMDAwIC0wNzAwDQorKysrIHNl
cnZjb25mLmMJMjAwOC0wOC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDANCitAQCAtNDIs
NiArNDIsMTAgQEANCisgI2luY2x1ZGUgImNoYW5uZWxzLmgiDQorICNpbmNsdWRlICJncm91
cGFjY2Vzcy5oIg0KKyANCisrI2lmZGVmIFdJVEhfTERBUF9QVUJLRVkNCisrI2luY2x1ZGUg
ImxkYXBhdXRoLmgiDQorKyNlbmRpZg0KKysNCisgc3RhdGljIHZvaWQgYWRkX2xpc3Rlbl9h
ZGRyKFNlcnZlck9wdGlvbnMgKiwgY2hhciAqLCBpbnQpOw0KKyBzdGF0aWMgdm9pZCBhZGRf
b25lX2xpc3Rlbl9hZGRyKFNlcnZlck9wdGlvbnMgKiwgY2hhciAqLCBpbnQpOw0KKyANCitA
QCAtMTI4LDYgKzEzMiwyNSBAQA0KKyAJb3B0aW9ucy0+YWRtX2ZvcmNlZF9jb21tYW5kID0g
TlVMTDsNCisgCW9wdGlvbnMtPmNocm9vdF9kaXJlY3RvcnkgPSBOVUxMOw0KKyAJb3B0aW9u
cy0+emVyb19rbm93bGVkZ2VfcGFzc3dvcmRfYXV0aGVudGljYXRpb24gPSAtMTsNCisrI2lm
ZGVmIFdJVEhfTERBUF9QVUJLRVkNCisrIAkvKiBYWFggZGlydHkgKi8NCisrIAlvcHRpb25z
LT5scGsubGQgPSBOVUxMOw0KKysgCW9wdGlvbnMtPmxway5vbiA9IC0xOw0KKysgCW9wdGlv
bnMtPmxway5zZXJ2ZXJzID0gTlVMTDsNCisrIAlvcHRpb25zLT5scGsudV9iYXNlZG4gPSBO
VUxMOw0KKysgCW9wdGlvbnMtPmxway5nX2Jhc2VkbiA9IE5VTEw7DQorKyAJb3B0aW9ucy0+
bHBrLmJpbmRkbiA9IE5VTEw7DQorKyAJb3B0aW9ucy0+bHBrLmJpbmRwdyA9IE5VTEw7DQor
KyAJb3B0aW9ucy0+bHBrLnNncm91cCA9IE5VTEw7DQorKyAJb3B0aW9ucy0+bHBrLmZpbHRl
ciA9IE5VTEw7DQorKyAJb3B0aW9ucy0+bHBrLmZncm91cCA9IE5VTEw7DQorKyAJb3B0aW9u
cy0+bHBrLmxfY29uZiA9IE5VTEw7DQorKyAJb3B0aW9ucy0+bHBrLnRscyA9IC0xOw0KKysg
CW9wdGlvbnMtPmxway5iX3RpbWVvdXQudHZfc2VjID0gLTE7DQorKyAJb3B0aW9ucy0+bHBr
LnNfdGltZW91dC50dl9zZWMgPSAtMTsNCisrIAlvcHRpb25zLT5scGsuZmxhZ3MgPSBGTEFH
X0VNUFRZOw0KKysjZW5kaWYNCisrDQorIH0NCisgDQorIHZvaWQNCitAQCAtMjYxLDYgKzI4
NCwzMiBAQA0KKyAJCW9wdGlvbnMtPnBlcm1pdF90dW4gPSBTU0hfVFVOTU9ERV9OTzsNCisg
CWlmIChvcHRpb25zLT56ZXJvX2tub3dsZWRnZV9wYXNzd29yZF9hdXRoZW50aWNhdGlvbiA9
PSAtMSkNCisgCQlvcHRpb25zLT56ZXJvX2tub3dsZWRnZV9wYXNzd29yZF9hdXRoZW50aWNh
dGlvbiA9IDA7DQorKyNpZmRlZiBXSVRIX0xEQVBfUFVCS0VZDQorKwlpZiAob3B0aW9ucy0+
bHBrLm9uID09IC0xKQ0KKysJICAgIG9wdGlvbnMtPmxway5vbiA9IF9ERUZBVUxUX0xQS19P
TjsNCisrCWlmIChvcHRpb25zLT5scGsuc2VydmVycyA9PSBOVUxMKQ0KKysJICAgIG9wdGlv
bnMtPmxway5zZXJ2ZXJzID0gX0RFRkFVTFRfTFBLX1NFUlZFUlM7DQorKwlpZiAob3B0aW9u
cy0+bHBrLnVfYmFzZWRuID09IE5VTEwpDQorKwkgICAgb3B0aW9ucy0+bHBrLnVfYmFzZWRu
ID0gX0RFRkFVTFRfTFBLX1VETjsNCisrCWlmIChvcHRpb25zLT5scGsuZ19iYXNlZG4gPT0g
TlVMTCkNCisrCSAgICBvcHRpb25zLT5scGsuZ19iYXNlZG4gPSBfREVGQVVMVF9MUEtfR0RO
Ow0KKysJaWYgKG9wdGlvbnMtPmxway5iaW5kZG4gPT0gTlVMTCkNCisrCSAgICBvcHRpb25z
LT5scGsuYmluZGRuID0gX0RFRkFVTFRfTFBLX0JJTkRETjsNCisrCWlmIChvcHRpb25zLT5s
cGsuYmluZHB3ID09IE5VTEwpDQorKwkgICAgb3B0aW9ucy0+bHBrLmJpbmRwdyA9IF9ERUZB
VUxUX0xQS19CSU5EUFc7DQorKwlpZiAob3B0aW9ucy0+bHBrLnNncm91cCA9PSBOVUxMKQ0K
KysJICAgIG9wdGlvbnMtPmxway5zZ3JvdXAgPSBfREVGQVVMVF9MUEtfU0dST1VQOw0KKysJ
aWYgKG9wdGlvbnMtPmxway5maWx0ZXIgPT0gTlVMTCkNCisrCSAgICBvcHRpb25zLT5scGsu
ZmlsdGVyID0gX0RFRkFVTFRfTFBLX0ZJTFRFUjsNCisrCWlmIChvcHRpb25zLT5scGsudGxz
ID09IC0xKQ0KKysJICAgIG9wdGlvbnMtPmxway50bHMgPSBfREVGQVVMVF9MUEtfVExTOw0K
KysJaWYgKG9wdGlvbnMtPmxway5iX3RpbWVvdXQudHZfc2VjID09IC0xKQ0KKysJICAgIG9w
dGlvbnMtPmxway5iX3RpbWVvdXQudHZfc2VjID0gX0RFRkFVTFRfTFBLX0JUSU1FT1VUOw0K
KysJaWYgKG9wdGlvbnMtPmxway5zX3RpbWVvdXQudHZfc2VjID09IC0xKQ0KKysJICAgIG9w
dGlvbnMtPmxway5zX3RpbWVvdXQudHZfc2VjID0gX0RFRkFVTFRfTFBLX1NUSU1FT1VUOw0K
KysJaWYgKG9wdGlvbnMtPmxway5sX2NvbmYgPT0gTlVMTCkNCisrCSAgICBvcHRpb25zLT5s
cGsubF9jb25mID0gX0RFRkFVTFRfTFBLX0xEUDsNCisrI2VuZGlmDQorIA0KKyAJLyogVHVy
biBwcml2aWxlZ2Ugc2VwYXJhdGlvbiBvbiBieSBkZWZhdWx0ICovDQorIAlpZiAodXNlX3By
aXZzZXAgPT0gLTEpDQorQEAgLTMwNyw2ICszNTYsMTIgQEANCisgCXNVc2VQcml2aWxlZ2VT
ZXBhcmF0aW9uLCBzQWxsb3dBZ2VudEZvcndhcmRpbmcsDQorCXNaZXJvS25vd2xlZGdlUGFz
c3dvcmRBdXRoZW50aWNhdGlvbiwNCisgCXNEZXByZWNhdGVkLCBzVW5zdXBwb3J0ZWQNCisr
I2lmZGVmIFdJVEhfTERBUF9QVUJLRVkNCisrCSxzTGRhcFB1YmxpY2tleSwgc0xkYXBTZXJ2
ZXJzLCBzTGRhcFVzZXJETg0KKysJLHNMZGFwR3JvdXBETiwgc0JpbmRETiwgc0JpbmRQdywg
c015R3JvdXANCisrCSxzTGRhcEZpbHRlciwgc0ZvcmNlVExTLCBzQmluZFRpbWVvdXQNCisr
CSxzU2VhcmNoVGltZW91dCwgc0xkYXBDb25mDQorKyNlbmRpZg0KKyB9IFNlcnZlck9wQ29k
ZXM7DQorIA0KKyAjZGVmaW5lIFNTSENGR19HTE9CQUwJMHgwMQkvKiBhbGxvd2VkIGluIG1h
aW4gc2VjdGlvbiBvZiBzc2hkX2NvbmZpZyAqLw0KK0BAIC00MTcsNiArNDcyLDIwIEBADQor
IAl7ICJjbGllbnRhbGl2ZWNvdW50bWF4Iiwgc0NsaWVudEFsaXZlQ291bnRNYXgsIFNTSENG
R19HTE9CQUwgfSwNCisgCXsgImF1dGhvcml6ZWRrZXlzZmlsZSIsIHNBdXRob3JpemVkS2V5
c0ZpbGUsIFNTSENGR19HTE9CQUwgfSwNCisgCXsgImF1dGhvcml6ZWRrZXlzZmlsZTIiLCBz
QXV0aG9yaXplZEtleXNGaWxlMiwgU1NIQ0ZHX0dMT0JBTCB9LA0KKysjaWZkZWYgV0lUSF9M
REFQX1BVQktFWQ0KKysJeyBfREVGQVVMVF9MUEtfVE9LRU4sIHNMZGFwUHVibGlja2V5LCBT
U0hDRkdfR0xPQkFMIH0sDQorKwl7IF9ERUZBVUxUX1NSVl9UT0tFTiwgc0xkYXBTZXJ2ZXJz
LCBTU0hDRkdfR0xPQkFMIH0sDQorKwl7IF9ERUZBVUxUX1VTUl9UT0tFTiwgc0xkYXBVc2Vy
RE4sIFNTSENGR19HTE9CQUwgfSwNCisrCXsgX0RFRkFVTFRfR1JQX1RPS0VOLCBzTGRhcEdy
b3VwRE4sIFNTSENGR19HTE9CQUwgfSwNCisrCXsgX0RFRkFVTFRfQkROX1RPS0VOLCBzQmlu
ZEROLCBTU0hDRkdfR0xPQkFMIH0sDQorKwl7IF9ERUZBVUxUX0JQV19UT0tFTiwgc0JpbmRQ
dywgU1NIQ0ZHX0dMT0JBTCB9LA0KKysJeyBfREVGQVVMVF9NWUdfVE9LRU4sIHNNeUdyb3Vw
LCBTU0hDRkdfR0xPQkFMIH0sDQorKwl7IF9ERUZBVUxUX0ZJTF9UT0tFTiwgc0xkYXBGaWx0
ZXIsIFNTSENGR19HTE9CQUwgfSwNCisrCXsgX0RFRkFVTFRfVExTX1RPS0VOLCBzRm9yY2VU
TFMsIFNTSENGR19HTE9CQUwgfSwNCisrCXsgX0RFRkFVTFRfQlRJX1RPS0VOLCBzQmluZFRp
bWVvdXQsIFNTSENGR19HTE9CQUwgfSwNCisrCXsgX0RFRkFVTFRfU1RJX1RPS0VOLCBzU2Vh
cmNoVGltZW91dCwgU1NIQ0ZHX0dMT0JBTCB9LA0KKysJeyBfREVGQVVMVF9MRFBfVE9LRU4s
IHNMZGFwQ29uZiwgU1NIQ0ZHX0dMT0JBTCB9LA0KKysjZW5kaWYNCisgCXsgInVzZXByaXZp
bGVnZXNlcGFyYXRpb24iLCBzVXNlUHJpdmlsZWdlU2VwYXJhdGlvbiwgU1NIQ0ZHX0dMT0JB
TH0sDQorIAl7ICJhY2NlcHRlbnYiLCBzQWNjZXB0RW52LCBTU0hDRkdfR0xPQkFMIH0sDQor
IAl7ICJwZXJtaXR0dW5uZWwiLCBzUGVybWl0VHVubmVsLCBTU0hDRkdfR0xPQkFMIH0sDQor
QEAgLTEzMDcsNiArMTM3NiwxMDcgQEANCisgCQl3aGlsZSAoYXJnKQ0KKyAJCSAgICBhcmcg
PSBzdHJkZWxpbSgmY3ApOw0KKyAJCWJyZWFrOw0KKysjaWZkZWYgV0lUSF9MREFQX1BVQktF
WQ0KKysJY2FzZSBzTGRhcFB1YmxpY2tleToNCisrCQlpbnRwdHIgPSAmb3B0aW9ucy0+bHBr
Lm9uOw0KKysJCWdvdG8gcGFyc2VfZmxhZzsNCisrCWNhc2Ugc0xkYXBTZXJ2ZXJzOg0KKysJ
CS8qIGFyZyA9IHN0cmRlbGltKCZjcCk7ICovDQorKwkJcCA9IGxpbmU7DQorKwkJd2hpbGUo
KnArKyk7DQorKwkJYXJnID0gcDsNCisrCQlpZiAoIWFyZyB8fCAqYXJnID09ICdcMCcpDQor
KwkJICAgIGZhdGFsKCIlcyBsaW5lICVkOiBtaXNzaW5nIGxkYXAgc2VydmVyIixmaWxlbmFt
ZSxsaW5lbnVtKTsNCisrCQlhcmdbc3RybGVuKGFyZyldID0gJ1wwJzsNCisrCQlpZiAoKG9w
dGlvbnMtPmxway5zZXJ2ZXJzID0gbGRhcF9wYXJzZV9zZXJ2ZXJzKGFyZykpID09IE5VTEwp
DQorKwkJICAgIGZhdGFsKCIlcyBsaW5lICVkOiBlcnJvciBpbiBsZGFwIHNlcnZlcnMiLCBm
aWxlbmFtZSwgbGluZW51bSk7DQorKwkJbWVtc2V0KGFyZywwLHN0cmxlbihhcmcpKTsNCisr
CQlicmVhazsNCisrCWNhc2Ugc0xkYXBVc2VyRE46DQorKwkJYXJnID0gY3A7DQorKwkJaWYg
KCFhcmcgfHwgKmFyZyA9PSAnXDAnKQ0KKysJCSAgICBmYXRhbCgiJXMgbGluZSAlZDogbWlz
c2luZyBsZGFwIHNlcnZlciIsZmlsZW5hbWUsbGluZW51bSk7DQorKwkJYXJnW3N0cmxlbihh
cmcpXSA9ICdcMCc7DQorKwkJb3B0aW9ucy0+bHBrLnVfYmFzZWRuID0geHN0cmR1cChhcmcp
Ow0KKysJCW1lbXNldChhcmcsMCxzdHJsZW4oYXJnKSk7DQorKwkJYnJlYWs7DQorKwljYXNl
IHNMZGFwR3JvdXBETjoNCisrCQlhcmcgPSBjcDsNCisrCQlpZiAoIWFyZyB8fCAqYXJnID09
ICdcMCcpDQorKwkJICAgIGZhdGFsKCIlcyBsaW5lICVkOiBtaXNzaW5nIGxkYXAgc2VydmVy
IixmaWxlbmFtZSxsaW5lbnVtKTsNCisrCQlhcmdbc3RybGVuKGFyZyldID0gJ1wwJzsNCisr
CQlvcHRpb25zLT5scGsuZ19iYXNlZG4gPSB4c3RyZHVwKGFyZyk7DQorKwkJbWVtc2V0KGFy
ZywwLHN0cmxlbihhcmcpKTsNCisrCQlicmVhazsNCisrCWNhc2Ugc0JpbmRETjoNCisrCQlh
cmcgPSBjcDsNCisrCQlpZiAoIWFyZyB8fCAqYXJnID09ICdcMCcpDQorKwkJICAgIGZhdGFs
KCIlcyBsaW5lICVkOiBtaXNzaW5nIGJpbmRkbiIsZmlsZW5hbWUsbGluZW51bSk7DQorKwkJ
YXJnW3N0cmxlbihhcmcpXSA9ICdcMCc7DQorKwkJb3B0aW9ucy0+bHBrLmJpbmRkbiA9IHhz
dHJkdXAoYXJnKTsNCisrCQltZW1zZXQoYXJnLDAsc3RybGVuKGFyZykpOw0KKysJCWJyZWFr
Ow0KKysJY2FzZSBzQmluZFB3Og0KKysJCWFyZyA9IGNwOw0KKysJCWlmICghYXJnIHx8ICph
cmcgPT0gJ1wwJykNCisrCQkgICAgZmF0YWwoIiVzIGxpbmUgJWQ6IG1pc3NpbmcgYmluZHB3
IixmaWxlbmFtZSxsaW5lbnVtKTsNCisrCQlhcmdbc3RybGVuKGFyZyldID0gJ1wwJzsNCisr
CQlvcHRpb25zLT5scGsuYmluZHB3ID0geHN0cmR1cChhcmcpOw0KKysJCW1lbXNldChhcmcs
MCxzdHJsZW4oYXJnKSk7DQorKwkJYnJlYWs7DQorKwljYXNlIHNNeUdyb3VwOg0KKysJCWFy
ZyA9IGNwOw0KKysJCWlmICghYXJnIHx8ICphcmcgPT0gJ1wwJykNCisrCQkgICAgZmF0YWwo
IiVzIGxpbmUgJWQ6IG1pc3NpbmcgZ3JvdXBuYW1lIixmaWxlbmFtZSwgbGluZW51bSk7DQor
KwkJYXJnW3N0cmxlbihhcmcpXSA9ICdcMCc7DQorKwkJb3B0aW9ucy0+bHBrLnNncm91cCA9
IHhzdHJkdXAoYXJnKTsNCisrCQlpZiAob3B0aW9ucy0+bHBrLnNncm91cCkNCisrCQkgICAg
b3B0aW9ucy0+bHBrLmZncm91cCA9IGxkYXBfcGFyc2VfZ3JvdXBzKG9wdGlvbnMtPmxway5z
Z3JvdXApOw0KKysJCW1lbXNldChhcmcsMCxzdHJsZW4oYXJnKSk7DQorKwkJYnJlYWs7DQor
KwljYXNlIHNMZGFwRmlsdGVyOg0KKysJCWFyZyA9IGNwOw0KKysJCWlmICghYXJnIHx8ICph
cmcgPT0gJ1wwJykNCisrCQkgICAgZmF0YWwoIiVzIGxpbmUgJWQ6IG1pc3NpbmcgZmlsdGVy
IixmaWxlbmFtZSwgbGluZW51bSk7DQorKwkJYXJnW3N0cmxlbihhcmcpXSA9ICdcMCc7DQor
KwkJb3B0aW9ucy0+bHBrLmZpbHRlciA9IHhzdHJkdXAoYXJnKTsNCisrCQltZW1zZXQoYXJn
LDAsc3RybGVuKGFyZykpOw0KKysJCWJyZWFrOw0KKysJY2FzZSBzRm9yY2VUTFM6DQorKwkJ
aW50cHRyID0gJm9wdGlvbnMtPmxway50bHM7DQorKwkJYXJnID0gc3RyZGVsaW0oJmNwKTsN
CisrCQlpZiAoIWFyZyB8fCAqYXJnID09ICdcMCcpDQorKwkJCWZhdGFsKCIlcyBsaW5lICVk
OiBtaXNzaW5nIHllcy9ubyBhcmd1bWVudC4iLA0KKysJCQkgICAgZmlsZW5hbWUsIGxpbmVu
dW0pOw0KKysJCXZhbHVlID0gMDsJLyogc2lsZW5jZSBjb21waWxlciAqLw0KKysJCWlmIChz
dHJjbXAoYXJnLCAieWVzIikgPT0gMCkNCisrCQkJdmFsdWUgPSAxOw0KKysJCWVsc2UgaWYg
KHN0cmNtcChhcmcsICJubyIpID09IDApDQorKwkJCXZhbHVlID0gMDsNCisrCQllbHNlIGlm
IChzdHJjbXAoYXJnLCAidHJ5IikgPT0gMCkNCisrCQkJdmFsdWUgPSAtMTsNCisrCQllbHNl
DQorKwkJCWZhdGFsKCIlcyBsaW5lICVkOiBCYWQgeWVzL25vIGFyZ3VtZW50OiAlcyIsDQor
KwkJCQlmaWxlbmFtZSwgbGluZW51bSwgYXJnKTsNCisrCQlpZiAoKmludHB0ciA9PSAtMSkN
CisrCQkJKmludHB0ciA9IHZhbHVlOw0KKysJCWJyZWFrOw0KKysJY2FzZSBzQmluZFRpbWVv
dXQ6DQorKwkJaW50cHRyID0gKGludCAqKSAmb3B0aW9ucy0+bHBrLmJfdGltZW91dC50dl9z
ZWM7DQorKwkJZ290byBwYXJzZV9pbnQ7DQorKwljYXNlIHNTZWFyY2hUaW1lb3V0Og0KKysJ
CWludHB0ciA9IChpbnQgKikgJm9wdGlvbnMtPmxway5zX3RpbWVvdXQudHZfc2VjOw0KKysJ
CWdvdG8gcGFyc2VfaW50Ow0KKysJCWJyZWFrOw0KKysJY2FzZSBzTGRhcENvbmY6DQorKwkJ
YXJnID0gY3A7DQorKwkJaWYgKCFhcmcgfHwgKmFyZyA9PSAnXDAnKQ0KKysJCSAgICBmYXRh
bCgiJXMgbGluZSAlZDogbWlzc2luZyBMcGtMZGFwQ29uZiIsIGZpbGVuYW1lLCBsaW5lbnVt
KTsNCisrCQlhcmdbc3RybGVuKGFyZyldID0gJ1wwJzsNCisrCQlvcHRpb25zLT5scGsubF9j
b25mID0geHN0cmR1cChhcmcpOw0KKysJCW1lbXNldChhcmcsIDAsIHN0cmxlbihhcmcpKTsN
CisrCQlicmVhazsNCisrI2VuZGlmDQorIA0KKyAJZGVmYXVsdDoNCisgCQlmYXRhbCgiJXMg
bGluZSAlZDogTWlzc2luZyBoYW5kbGVyIGZvciBvcGNvZGUgJXMgKCVkKSIsDQorZGlmZiAt
TnVhciAtLWV4Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRlICcqLnJlaicgc2VydmNvbmYuaCBz
ZXJ2Y29uZi5oDQorLS0tIHNlcnZjb25mLmgJMjAwOC0wNi0xMCAwNjowMTo1MS4wMDAwMDAw
MDAgLTA3MDANCisrKysgc2VydmNvbmYuaAkyMDA4LTA4LTIzIDE1OjAyOjQ3LjAwMDAwMDAw
MCAtMDcwMA0KK0BAIC0xNiw2ICsxNiwxMCBAQA0KKyAjaWZuZGVmIFNFUlZDT05GX0gNCisg
I2RlZmluZSBTRVJWQ09ORl9IDQorIA0KKysjaWZkZWYgV0lUSF9MREFQX1BVQktFWQ0KKysj
aW5jbHVkZSAibGRhcGF1dGguaCINCisrI2VuZGlmDQorKw0KKyAjZGVmaW5lIE1BWF9QT1JU
UwkJMjU2CS8qIE1heCAjIHBvcnRzLiAqLw0KKyANCisgI2RlZmluZSBNQVhfQUxMT1dfVVNF
UlMJCTI1NgkvKiBNYXggIyB1c2VycyBvbiBhbGxvdyBsaXN0LiAqLw0KK0BAIC0xNDcsNiAr
MTUxLDkgQEANCisgCWludAl1c2VfcGFtOwkJLyogRW5hYmxlIGF1dGggdmlhIFBBTSAqLw0K
KyANCisgCWludAlwZXJtaXRfdHVuOw0KKysjaWZkZWYgV0lUSF9MREFQX1BVQktFWQ0KKysg
ICAgICAgIGxkYXBfb3B0X3QgbHBrOw0KKysjZW5kaWYNCisgDQorIAlpbnQJbnVtX3Blcm1p
dHRlZF9vcGVuczsNCisgDQorZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3JpZycgLS1leGNs
dWRlICcqLnJlaicgc3NoZC5jIHNzaGQuYw0KKy0tLSBzc2hkLmMJMjAwOC0wNy0xMSAwMDoz
Njo0OS4wMDAwMDAwMDAgLTA3MDANCisrKysgc3NoZC5jCTIwMDgtMDgtMjMgMTU6MDI6NDcu
MDAwMDAwMDAwIC0wNzAwDQorQEAgLTEyNyw2ICsxMjcsMTAgQEANCisgaW50IGRlbnlfc2V2
ZXJpdHk7DQorICNlbmRpZiAvKiBMSUJXUkFQICovDQorIA0KKysjaWZkZWYgV0lUSF9MREFQ
X1BVQktFWQ0KKysjaW5jbHVkZSAibGRhcGF1dGguaCINCisrI2VuZGlmDQorKw0KKyAjaWZu
ZGVmIE9fTk9DVFRZDQorICNkZWZpbmUgT19OT0NUVFkJMA0KKyAjZW5kaWYNCitAQCAtMTQ4
NCw2ICsxNDg4LDE2IEBADQorIAkJZXhpdCgxKTsNCisgCX0NCisgDQorKyNpZmRlZiBXSVRI
X0xEQVBfUFVCS0VZDQorKyAgICAvKiBsZGFwX29wdGlvbnNfcHJpbnQoJm9wdGlvbnMubHBr
KTsgKi8NCisrICAgIC8qIFhYWCBpbml0aWFsaXplL2NoZWNrIGxkYXAgY29ubmVjdGlvbiBh
bmQgc2V0ICpMRCAqLw0KKysgICAgaWYgKG9wdGlvbnMubHBrLm9uKSB7DQorKyAgICAgICAg
aWYgKG9wdGlvbnMubHBrLmxfY29uZiAmJiAobGRhcF9wYXJzZV9sY29uZigmb3B0aW9ucy5s
cGspIDwgMCkgKQ0KKysgICAgICAgICAgICBlcnJvcigiW0xEQVBdIGNvdWxkIG5vdCBwYXJz
ZSAlcyIsIG9wdGlvbnMubHBrLmxfY29uZik7DQorKyAgICAgICAgaWYgKGxkYXBfY29ubmVj
dCgmb3B0aW9ucy5scGspIDwgMCkNCisrICAgICAgICAgICAgZXJyb3IoIltMREFQXSBjb3Vs
ZCBub3QgaW5pdGlhbGl6ZSBsZGFwIGNvbm5lY3Rpb24iKTsNCisrICAgIH0NCisrI2VuZGlm
DQorIAlkZWJ1Zygic3NoZCB2ZXJzaW9uICUuMTAwcyIsIFNTSF9SRUxFQVNFKTsNCisgDQor
IAkvKiBTdG9yZSBwcml2aWxlZ2Ugc2VwYXJhdGlvbiB1c2VyIGZvciBsYXRlciB1c2UgaWYg
cmVxdWlyZWQuICovDQorZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRl
ICcqLnJlaicgc3NoZF9jb25maWcgc3NoZF9jb25maWcNCistLS0gc3NoZF9jb25maWcJMjAw
OC0wNy0wMiAwNTozNTo0My4wMDAwMDAwMDAgLTA3MDANCisrKysgc3NoZF9jb25maWcJMjAw
OC0wOC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDANCitAQCAtMTA5LDYgKzEwOSwyMSBA
QA0KKyAjIG5vIGRlZmF1bHQgYmFubmVyIHBhdGgNCisgI0Jhbm5lciBub25lDQorIA0KKysj
IGhlcmUgYXJlIHRoZSBuZXcgcGF0Y2hlZCBsZGFwIHJlbGF0ZWQgdG9rZW5zDQorKyMgZW50
cmllcyBpbiB5b3VyIExEQVAgbXVzdCBoYXZlIHBvc2l4QWNjb3VudCAmIGxkYXBQdWJsaWNL
ZXkgb2JqZWN0Y2xhc3MNCisrI1VzZUxQSyB5ZXMNCisrI0xwa0xkYXBDb25mIC9ldGMvbGRh
cC5jb25mDQorKyNMcGtTZXJ2ZXJzICBsZGFwOi8vMTAuMS43LjEvIGxkYXA6Ly8xMC4xLjcu
Mi8NCisrI0xwa1VzZXJETiAgIG91PXVzZXJzLGRjPXBoZWFyLGRjPW9yZw0KKysjTHBrR3Jv
dXBETiAgb3U9Z3JvdXBzLGRjPXBoZWFyLGRjPW9yZw0KKysjTHBrQmluZEROIGNuPU1hbmFn
ZXIsZGM9cGhlYXIsZGM9b3JnDQorKyNMcGtCaW5kUHcgc2VjcmV0DQorKyNMcGtTZXJ2ZXJH
cm91cCBtYWlsDQorKyNMcGtGaWx0ZXIgKGhvc3RBY2Nlc3M9bWFzdGVyLnBoZWFyLm9yZykN
CisrI0xwa0ZvcmNlVExTIG5vDQorKyNMcGtTZWFyY2hUaW1lbGltaXQgMw0KKysjTHBrQmlu
ZFRpbWVsaW1pdCAzDQorKw0KKyAjIG92ZXJyaWRlIGRlZmF1bHQgb2Ygbm8gc3Vic3lzdGVt
cw0KKyBTdWJzeXN0ZW0Jc2Z0cAkvdXNyL2xpYmV4ZWMvc2Z0cC1zZXJ2ZXINCisgDQorZGlm
ZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRlICcqLnJlaicgc3NoZF9jb25m
aWcuNSBzc2hkX2NvbmZpZy41DQorLS0tIHNzaGRfY29uZmlnLjUJMjAwOC0wNy0wMiAwNToz
NTo0My4wMDAwMDAwMDAgLTA3MDANCisrKysgc3NoZF9jb25maWcuNQkyMDA4LTA4LTIzIDE1
OjAyOjQ3LjAwMDAwMDAwMCAtMDcwMA0KK0BAIC0xMDEwLDYgKzEwMTAsNjIgQEANCisgcHJv
Z3JhbS4NCisgVGhlIGRlZmF1bHQgaXMNCisgLlBhIC91c3IvWDExUjYvYmluL3hhdXRoIC4N
CisrLkl0IENtIFVzZUxQSw0KKytTcGVjaWZpZXMgd2hldGhlciBMREFQIHB1YmxpYyBrZXkg
cmV0cmlldmFsIG11c3QgYmUgdXNlZCBvciBub3QuIEl0IGFsbG93DQorK2FuIGVhc3kgY2Vu
dHJhbGlzYXRpb24gb2YgcHVibGljIGtleXMgd2l0aGluIGFuIExEQVAgZGlyZWN0b3J5LiBU
aGUgYXJndW1lbnQgbXVzdCBiZQ0KKysuRHEgeWVzDQorK29yDQorKy5EcSBubyAuDQorKy5J
dCBDbSBMcGtMZGFwQ29uZg0KKytTcGVjaWZpZXMgd2hldGhlciBMREFQIFB1YmxpYyBrZXlz
IHNob3VsZCBwYXJzZSB0aGUgc3BlY2lmaWVkIGxkYXAuY29uZiBmaWxlDQorK2luc3RlYWQg
b2Ygc3NoZF9jb25maWcgVG9rZW5zLiBUaGUgYXJndW1lbnQgbXVzdCBiZSBhIHZhbGlkIHBh
dGggdG8gYW4gbGRhcC5jb25mDQorK2ZpbGUgbGlrZQ0KKysuUGEgL2V0Yy9sZGFwLmNvbmYN
CisrLkl0IENtIExwa1NlcnZlcnMNCisrU3BlY2lmaWVzIExEQVAgb25lIG9yIG1vcmUgWzpz
cGFjZTpdIHNlcGFyYXRlZCBzZXJ2ZXIncyB1cmwgdGhlIGZvbGxvd2luZyBmb3JtIG1heSBi
ZSB1c2VkOg0KKysuUHANCisrTHBrU2VydmVycyBsZGFwczovLzEyNy4wLjAuMSBsZGFwOi8v
MTI3LjAuMC4yIGxkYXA6Ly8xMjcuMC4wLjMNCisrLkl0IENtIExwa1VzZXJETg0KKytTcGVj
aWZpZXMgdGhlIExEQVAgdXNlciBETi4NCisrLlBwDQorK0xwa1VzZXJETiBvdT11c2Vycyxk
Yz1waGVhcixkYz1vcmcNCisrLkl0IENtIExwa0dyb3VwRE4NCisrU3BlY2lmaWVzIHRoZSBM
REFQIGdyb3VwcyBETi4NCisrLlBwDQorK0xwa0dyb3VwRE4gb3U9Z3JvdXBzLGRjPXBoZWFy
LGRjPW9yZw0KKysuSXQgQ20gTHBrQmluZERODQorK1NwZWNpZmllcyB0aGUgTERBUCBiaW5k
IEROIHRvIHVzZSBpZiBuZWNlc3NhcnkuDQorKy5QcA0KKytMcGtCaW5kRE4gY249TWFuYWdl
cixkYz1waGVhcixkYz1vcmcNCisrLkl0IENtIExwa0JpbmRQdw0KKytTcGVjaWZpZXMgdGhl
IExEQVAgYmluZCBjcmVkZW50aWFsLiANCisrLlBwDQorK0xwa0JpbmRQdyBzZWNyZXQNCisr
Lkl0IENtIExwa1NlcnZlckdyb3VwDQorK1NwZWNpZmllcyBvbmUgb3IgbW9yZSBbOnNwYWNl
Ol0gc2VwYXJhdGVkIGdyb3VwIHRoZSBzZXJ2ZXIgaXMgcGFydCBvZi4gDQorKy5QcA0KKytM
cGtTZXJ2ZXJHcm91cCB1bml4IG1haWwgcHJvZA0KKysuSXQgQ20gTHBrRmlsdGVyDQorK1Nw
ZWNpZmllcyBhbiBhZGRpdGlvbmFsIExEQVAgZmlsdGVyIHRvIHVzZSBmb3IgZmluZGluZyBT
U0gga2V5cw0KKysuUHANCisrTHBrRmlsdGVyIChob3N0QWNjZXNzPW1hc3Rlci5waGVhci5v
cmcpDQorKy5JdCBDbSBMcGtGb3JjZVRMUw0KKytTcGVjaWZpZXMgaWYgdGhlIExEQVAgc2Vy
dmVyIGNvbm5lY3Rpb24gbXVzdCBiZSB0cmllZCwgZm9yY2VkIG9yIG5vdCB1c2VkLiBUaGUg
YXJndW1lbnQgbXVzdCBiZSANCisrLkRxIHllcw0KKytvcg0KKysuRHEgbm8NCisrb3INCisr
LkRxIHRyeSAuDQorKy5JdCBDbSBMcGtTZWFyY2hUaW1lbGltaXQNCisrU2VwY2lmaWVzIHRo
ZSBzZWFyY2ggdGltZSBsaW1pdCBiZWZvcmUgdGhlIHNlYXJjaCBpcyBjb25zaWRlcmVkIG92
ZXIuIHZhbHVlIGlzDQorK2luIHNlY29uZHMuDQorKy5QcA0KKytMcGtTZWFyY2hUaW1lbGlt
aXQgMw0KKysuSXQgQ20gTHBrQmluZFRpbWVsaW1pdA0KKytTZXBjaWZpZXMgdGhlIGJpbmQg
dGltZSBsaW1pdCBiZWZvcmUgdGhlIGNvbm5lY3Rpb24gaXMgY29uc2lkZXJlZCBkZWFkLiB2
YWx1ZSBpcw0KKytpbiBzZWNvbmRzLg0KKysuUHANCisrTHBrQmluZFRpbWVsaW1pdCAzDQor
IC5FbA0KKyAuU2ggVElNRSBGT1JNQVRTDQorIC5YciBzc2hkIDgNCmRpZmYgLU5ydSAvaG9t
ZS9nYXdyaWxvZmYvbHBrL29wZW5zc2gtcG9ydGFibGUvZmlsZXMvcGF0Y2gtc3NoZF9jb25m
aWcuNSAvaG9tZS9nYXdyaWxvZmYvb3BlbnNzaC1wb3J0YWJsZS9maWxlcy9wYXRjaC1zc2hk
X2NvbmZpZy41DQotLS0gL2hvbWUvZ2F3cmlsb2ZmL2xway9vcGVuc3NoLXBvcnRhYmxlL2Zp
bGVzL3BhdGNoLXNzaGRfY29uZmlnLjUJMjAwNi0xMC0wMSAwNToxNTowMC4wMDAwMDAwMDAg
KzAzMDANCisrKyAvaG9tZS9nYXdyaWxvZmYvb3BlbnNzaC1wb3J0YWJsZS9maWxlcy9wYXRj
aC1zc2hkX2NvbmZpZy41CTIwMTAtMTItMjEgMTE6MzY6MDYuMDAwMDAwMDAwICswMjAwDQpA
QCAtMSwyNSArMSw1IEBADQogLS0tIHNzaGRfY29uZmlnLjUub3JpZwlUdWUgQXVnIDI5IDIy
OjA2OjM0IDIwMDYNCiArKysgc3NoZF9jb25maWcuNQlTYXQgU2VwIDMwIDEwOjM5OjA3IDIw
MDYNCi1AQCAtMTY5LDkgKzE3MCwxNiBAQA0KLSBCeSBkZWZhdWx0LCBubyBiYW5uZXIgaXMg
ZGlzcGxheWVkLg0KLSAuSXQgQ20gQ2hhbGxlbmdlUmVzcG9uc2VBdXRoZW50aWNhdGlvbg0K
LSBTcGVjaWZpZXMgd2hldGhlciBjaGFsbGVuZ2UtcmVzcG9uc2UgYXV0aGVudGljYXRpb24g
aXMgYWxsb3dlZC4NCi0tQWxsIGF1dGhlbnRpY2F0aW9uIHN0eWxlcyBmcm9tDQotLS5YciBs
b2dpbi5jb25mIDUNCi0tYXJlIHN1cHBvcnRlZC4NCi0rU3BlY2lmaWNhbGx5LCBpbg0KLSsu
RnggLA0KLSt0aGlzIGNvbnRyb2xzIHRoZSB1c2Ugb2YgUEFNIChzZWUNCi0rLlhyIHBhbSAz
ICkNCi0rZm9yIGF1dGhlbnRpY2F0aW9uLg0KLStOb3RlIHRoYXQgdGhpcyBhZmZlY3RzIHRo
ZSBlZmZlY3RpdmVuZXNzIG9mIHRoZQ0KLSsuQ20gUGFzc3dvcmRBdXRoZW50aWNhdGlvbg0K
LSthbmQNCi0rLkNtIFBlcm1pdFJvb3RMb2dpbg0KLSt2YXJpYWJsZXMuDQotIFRoZSBkZWZh
dWx0IGlzDQotIC5EcSB5ZXMgLg0KLSAuSXQgQ20gQ2lwaGVycw0KIEBAIC01NTQsNyArNTYw
LDIyIEBADQogIC5JdCBDbSBQYXNzd29yZEF1dGhlbnRpY2F0aW9uDQogIFNwZWNpZmllcyB3
aGV0aGVyIHBhc3N3b3JkIGF1dGhlbnRpY2F0aW9uIGlzIGFsbG93ZWQuDQo=
--------------090100050300010803050402--
More information about the freebsd-ports-bugs
mailing list