ports/144041: security/openssh-portable: sftp coredumps when 'ls'ing
Oleg Gawriloff
barzog at telecom.by
Tue Dec 21 10:00:28 UTC 2010
The following reply was made to PR ports/144041; it has been noted by GNATS.
From: Oleg Gawriloff <barzog at telecom.by>
To: bug-followup at FreeBSD.org, gnrp at physik.tu-berlin.de
Cc:
Subject: Re: ports/144041: security/openssh-portable: sftp coredumps when
'ls'ing
Date: Tue, 21 Dec 2010 11:58:36 +0200
This is a cryptographically signed message in MIME format.
--------------ms040800010301040905010606
Content-Type: multipart/mixed;
boundary="------------090401030803030509030101"
This is a multi-part message in MIME format.
--------------090401030803030509030101
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: quoted-printable
Problem was fixed in 5.3p1.
Here's port update.
PS: Yes, I know about=20
http://www.freebsd.org/cgi/query-pr.cgi?pr=3Dports/150493. But there is=20
very slow progress since september and lpk patch is gone.
--=20
Signed, Oleg Gawriloff.
--------------090401030803030509030101
Content-Type: text/plain;
name="openssh-portable-5.3p1.diff"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="openssh-portable-5.3p1.diff"
ZGlmZiAtTnJ1IC9ob21lL2dhd3JpbG9mZi9scGsvb3BlbnNzaC1wb3J0YWJsZS9NYWtlZmls
ZSAvaG9tZS9nYXdyaWxvZmYvb3BlbnNzaC1wb3J0YWJsZS9NYWtlZmlsZQotLS0gL2hvbWUv
Z2F3cmlsb2ZmL2xway9vcGVuc3NoLXBvcnRhYmxlL01ha2VmaWxlCTIwMTAtMTEtMjIgMDE6
NDg6NDkuMDAwMDAwMDAwICswMjAwCisrKyAvaG9tZS9nYXdyaWxvZmYvb3BlbnNzaC1wb3J0
YWJsZS9NYWtlZmlsZQkyMDEwLTEyLTIxIDExOjMwOjM2LjAwMDAwMDAwMCArMDIwMApAQCAt
Niw3ICs2LDcgQEAKICMKIAogUE9SVE5BTUU9CW9wZW5zc2gKLURJU1RWRVJTSU9OPQk1LjJw
MQorRElTVFZFUlNJT049CTUuM3AxCiBQT1JUUkVWSVNJT049CTMKIFBPUlRFUE9DSD0JMQog
Q0FURUdPUklFUz0Jc2VjdXJpdHkgaXB2NgpAQCAtMTYxLDcgKzE2MSw3IEBACiAKICMgU2Vl
IGh0dHA6Ly9kZXYuaW52ZXJzZXBhdGguY29tL3RyYWMvb3BlbnNzaC1scGsKIC5pZiBkZWZp
bmVkKFdJVEhfTFBLKQotRVhUUkFfUEFUQ0hFUys9CQkke0ZJTEVTRElSfS9jb250cmliLW9w
ZW5zc2gtbHBrLTUuMXAxLTAuMy4xMC5wYXRjaAorRVhUUkFfUEFUQ0hFUys9CQkke0ZJTEVT
RElSfS9jb250cmliLW9wZW5zc2gtbHBrLTUuM3AxLTAuMy4xMC5wYXRjaAogVVNFX09QRU5M
REFQPQkJeWVzCiBDUFBGTEFHUys9CQkiLUkke0xPQ0FMQkFTRX0vaW5jbHVkZSAtRFdJVEhf
TERBUF9QVUJLRVkiCiBDT05GSUdVUkVfQVJHUys9CS0td2l0aC1saWJzPSctbGxkYXAnIC0t
d2l0aC1sZGZsYWdzPSctTCR7TE9DQUxCQVNFfS9saWInIFwKQEAgLTE3NCwxMiArMTc0LDYg
QEAKIEVYVFJBX1BBVENIRVMrPQkJJHtGSUxFU0RJUn0vbHBrK2hwbi1zZXJ2Y29uZi5jLnBh
dGNoCiAuZWxpZiBkZWZpbmVkKFdJVEhfSFBOKSAmJiAhZGVmaW5lZChXSVRIX0xQSykKIEVY
VFJBX1BBVENIRVMrPQkJJHtGSUxFU0RJUn0vb3BlbnNzaC01LjJwMS1ocG4xM3Y2LXNlcnZj
b25mLmMuZGlmZgotLmVsaWYgZGVmaW5lZChXSVRIX0xQSykgJiYgIWRlZmluZWQoV0lUSF9I
UE4pCi1FWFRSQV9QQVRDSEVTKz0JCSR7RklMRVNESVJ9L2NvbnRyaWItb3BlbnNzaC1scGst
NS4xcDEtMC4zLjEwLXNlcnZjb25mLmMucGF0Y2gKLS5lbmRpZgotCi0uaWYgZGVmaW5lZChX
SVRIX0xQSykgJiYgJHtBUkNIfSA9PSAiYW1kNjQiCi1FWFRSQV9QQVRDSEVTKz0JCSR7RklM
RVNESVJ9L2NvbnRyaWItb3BlbnNzaC01LjFfcDEtbHBrLTY0Yml0LnBhdGNoCiAuZW5kaWYK
IAogIyBTZWUgaHR0cDovL3d3dy5yb3VtZW5wZXRyb3YuaW5mby9vcGVuc3NoLwpkaWZmIC1O
cnUgL2hvbWUvZ2F3cmlsb2ZmL2xway9vcGVuc3NoLXBvcnRhYmxlL2Rpc3RpbmZvIC9ob21l
L2dhd3JpbG9mZi9vcGVuc3NoLXBvcnRhYmxlL2Rpc3RpbmZvCi0tLSAvaG9tZS9nYXdyaWxv
ZmYvbHBrL29wZW5zc2gtcG9ydGFibGUvZGlzdGluZm8JMjAwOS0wOS0xOCAxNzowNTo1Mi4w
MDAwMDAwMDAgKzAzMDAKKysrIC9ob21lL2dhd3JpbG9mZi9vcGVuc3NoLXBvcnRhYmxlL2Rp
c3RpbmZvCTIwMTAtMTItMjEgMTE6MTY6MTcuMDAwMDAwMDAwICswMjAwCkBAIC0xLDYgKzEs
NiBAQAotTUQ1IChvcGVuc3NoLTUuMnAxLnRhci5neikgPSBhZGE3OWM3MzI4YTg1NTFiZGY1
NWM5NWU2MzFlN2RhZAotU0hBMjU2IChvcGVuc3NoLTUuMnAxLnRhci5neikgPSA0MDIzNzEw
YzM3ZDBiM2Q3OWU2Mjk5Y2I3OWI2ZGUyYTMxZGI3ZDU4MWZlNTllNzc1YTUzNTE3ODQwMzRl
Y2FlCi1TSVpFIChvcGVuc3NoLTUuMnAxLnRhci5neikgPSAxMDE2NjEyCitNRDUgKG9wZW5z
c2gtNS4zcDEudGFyLmd6KSA9IDEzNTYzZGJmNjFmMzZjYTlhMWU0MjU0MjYwMTMxMDQxCitT
SEEyNTYgKG9wZW5zc2gtNS4zcDEudGFyLmd6KSA9IGQwYzkxNzQ2Mjg5Njk3NDQ4MGIxNDQ1
NGE4ZTFjYjhiODA5MjkxZjY3ZTViOTc3OWM5YjRkYzQxNTZjNWVmMTIKK1NJWkUgKG9wZW5z
c2gtNS4zcDEudGFyLmd6KSA9IDEwMjcxMzAKIE1ENSAob3BlbnNzaC01LjJwMSt4NTA5LTYu
Mi5kaWZmLmd6KSA9IDhkYmJmYjc0MzIyNjg2NGY2YmI0OWI1NmU3Nzc3NmQ5CiBTSEEyNTYg
KG9wZW5zc2gtNS4ycDEreDUwOS02LjIuZGlmZi5neikgPSA3MmNmYjFlMjMyYjZhZTBhOWRm
NmU4NTM5YTlmNmI1M2RiN2MwYTIxNDFjZjJlNGRkNjViNDA3NzQ4ZmE5ZjM0CiBTSVpFIChv
cGVuc3NoLTUuMnAxK3g1MDktNi4yLmRpZmYuZ3opID0gMTUzMDEwCmRpZmYgLU5ydSAvaG9t
ZS9nYXdyaWxvZmYvbHBrL29wZW5zc2gtcG9ydGFibGUvZmlsZXMvY29udHJpYi1vcGVuc3No
LTUuMV9wMS1scGstNjRiaXQucGF0Y2ggL2hvbWUvZ2F3cmlsb2ZmL29wZW5zc2gtcG9ydGFi
bGUvZmlsZXMvY29udHJpYi1vcGVuc3NoLTUuMV9wMS1scGstNjRiaXQucGF0Y2gKLS0tIC9o
b21lL2dhd3JpbG9mZi9scGsvb3BlbnNzaC1wb3J0YWJsZS9maWxlcy9jb250cmliLW9wZW5z
c2gtNS4xX3AxLWxway02NGJpdC5wYXRjaAkyMDA5LTA2LTIxIDIzOjM2OjE1LjAwMDAwMDAw
MCArMDMwMAorKysgL2hvbWUvZ2F3cmlsb2ZmL29wZW5zc2gtcG9ydGFibGUvZmlsZXMvY29u
dHJpYi1vcGVuc3NoLTUuMV9wMS1scGstNjRiaXQucGF0Y2gJMTk3MC0wMS0wMSAwMzowMDow
MC4wMDAwMDAwMDAgKzAzMDAKQEAgLTEsNDQgKzAsMCBAQAotZGlmZiAtTnVhciAtLWV4Y2x1
ZGUgJyoucmVqJyBzZXJ2Y29uZi5jLm9yaWcgc2VydmNvbmYuYwotLS0tIHNlcnZjb25mLmMu
b3JpZwkyMDA4LTA4LTIzIDE1OjAyOjQ3LjAwMDAwMDAwMCAtMDcwMAotKysrIHNlcnZjb25m
LmMJMjAwOC0wOC0yMyAxNTowNDoyMS4wMDAwMDAwMDAgLTA3MDAKLUBAIC03MDEsNiArNzAx
LDcgQEAKLSAJaW50IGNtZGxpbmUgPSAwLCAqaW50cHRyLCB2YWx1ZSwgbjsKLSAJU3lzbG9n
RmFjaWxpdHkgKmxvZ19mYWNpbGl0eV9wdHI7Ci0gCUxvZ0xldmVsICpsb2dfbGV2ZWxfcHRy
OwotKyAJdW5zaWduZWQgbG9uZyBsdmFsdWUsICpsb25ncHRyOwotIAlTZXJ2ZXJPcENvZGVz
IG9wY29kZTsKLSAJdV9zaG9ydCBwb3J0OwotIAl1X2ludCBpLCBmbGFncyA9IDA7Ci1AQCAt
NzE1LDYgKzcxNiw3IEBACi0gCWlmICghYXJnIHx8ICEqYXJnIHx8ICphcmcgPT0gJyMnKQot
IAkJcmV0dXJuIDA7Ci0gCWludHB0ciA9IE5VTEw7Ci0rCWxvbmdwdHIgPSBOVUxMOwotIAlj
aGFycHRyID0gTlVMTDsKLSAJb3Bjb2RlID0gcGFyc2VfdG9rZW4oYXJnLCBmaWxlbmFtZSwg
bGluZW51bSwgJmZsYWdzKTsKLSAKLUBAIC0xNDQ5LDExICsxNDUxLDIwIEBACi0gCQkJKmlu
dHB0ciA9IHZhbHVlOwotIAkJYnJlYWs7Ci0gCWNhc2Ugc0JpbmRUaW1lb3V0OgotLQkJaW50
cHRyID0gKGludCAqKSAmb3B0aW9ucy0+bHBrLmJfdGltZW91dC50dl9zZWM7Ci0tCQlnb3Rv
IHBhcnNlX2ludDsKLSsJCWxvbmdwdHIgPSAodW5zaWduZWQgbG9uZyAqKSAmb3B0aW9ucy0+
bHBrLmJfdGltZW91dC50dl9zZWM7Ci0rcGFyc2VfdWxvbmc6Ci0rCQlhcmcgPSBzdHJkZWxp
bSgmY3ApOwotKwkJaWYgKCFhcmcgfHwgKmFyZyA9PSAnXDAnKQotKwkJCWZhdGFsKCIlcyBs
aW5lICVkOiBtaXNzaW5nIGludGVnZXIgdmFsdWUuIiwKLSsJCQkgICAgZmlsZW5hbWUsIGxp
bmVudW0pOwotKwkJbHZhbHVlID0gYXRvbChhcmcpOwotKwkJaWYgKCphY3RpdmVwICYmICps
b25ncHRyID09IC0xKQotKwkJCSpsb25ncHRyID0gbHZhbHVlOwotKwkJYnJlYWs7Ci0rCi0g
CWNhc2Ugc1NlYXJjaFRpbWVvdXQ6Ci0tCQlpbnRwdHIgPSAoaW50ICopICZvcHRpb25zLT5s
cGsuc190aW1lb3V0LnR2X3NlYzsKLS0JCWdvdG8gcGFyc2VfaW50OwotKwkJbG9uZ3B0ciA9
ICh1bnNpZ25lZCBsb25nICopICZvcHRpb25zLT5scGsuc190aW1lb3V0LnR2X3NlYzsKLSsJ
CWdvdG8gcGFyc2VfdWxvbmc7Ci0gCQlicmVhazsKLSAJY2FzZSBzTGRhcENvbmY6Ci0gCQlh
cmcgPSBjcDsKZGlmZiAtTnJ1IC9ob21lL2dhd3JpbG9mZi9scGsvb3BlbnNzaC1wb3J0YWJs
ZS9maWxlcy9jb250cmliLW9wZW5zc2gtbHBrLTUuMXAxLTAuMy4xMC1zZXJ2Y29uZi5jLnBh
dGNoIC9ob21lL2dhd3JpbG9mZi9vcGVuc3NoLXBvcnRhYmxlL2ZpbGVzL2NvbnRyaWItb3Bl
bnNzaC1scGstNS4xcDEtMC4zLjEwLXNlcnZjb25mLmMucGF0Y2gKLS0tIC9ob21lL2dhd3Jp
bG9mZi9scGsvb3BlbnNzaC1wb3J0YWJsZS9maWxlcy9jb250cmliLW9wZW5zc2gtbHBrLTUu
MXAxLTAuMy4xMC1zZXJ2Y29uZi5jLnBhdGNoCTIwMDktMDYtMjEgMjM6MzY6MTUuMDAwMDAw
MDAwICswMzAwCisrKyAvaG9tZS9nYXdyaWxvZmYvb3BlbnNzaC1wb3J0YWJsZS9maWxlcy9j
b250cmliLW9wZW5zc2gtbHBrLTUuMXAxLTAuMy4xMC1zZXJ2Y29uZi5jLnBhdGNoCTE5NzAt
MDEtMDEgMDM6MDA6MDAuMDAwMDAwMDAwICswMzAwCkBAIC0xLDIxMyArMCwwIEBACi0tLS0g
c2VydmNvbmYuYy5vcmlnCTIwMDktMDUtMjYgMTU6MTM6MzIuMDAwMDAwMDAwICswNDAwCi0r
Kysgc2VydmNvbmYuYwkyMDA5LTA1LTI2IDE1OjI0OjM5LjAwMDAwMDAwMCArMDQwMAotQEAg
LTQyLDYgKzQyLDEwIEBACi0gI2luY2x1ZGUgImNoYW5uZWxzLmgiCi0gI2luY2x1ZGUgImdy
b3VwYWNjZXNzLmgiCi0gCi0rI2lmZGVmIFdJVEhfTERBUF9QVUJLRVkKLSsjaW5jbHVkZSAi
bGRhcGF1dGguaCIKLSsjZW5kaWYKLSsKLSBzdGF0aWMgdm9pZCBhZGRfbGlzdGVuX2FkZHIo
U2VydmVyT3B0aW9ucyAqLCBjaGFyICosIGludCk7Ci0gc3RhdGljIHZvaWQgYWRkX29uZV9s
aXN0ZW5fYWRkcihTZXJ2ZXJPcHRpb25zICosIGNoYXIgKiwgaW50KTsKLSAKLUBAIC0xMjgs
NiArMTMyLDI0IEBACi0gCW9wdGlvbnMtPmFkbV9mb3JjZWRfY29tbWFuZCA9IE5VTEw7Ci0g
CW9wdGlvbnMtPmNocm9vdF9kaXJlY3RvcnkgPSBOVUxMOwotIAlvcHRpb25zLT56ZXJvX2tu
b3dsZWRnZV9wYXNzd29yZF9hdXRoZW50aWNhdGlvbiA9IC0xOwotKyNpZmRlZiBXSVRIX0xE
QVBfUFVCS0VZCi0rIAkvKiBYWFggZGlydHkgKi8KLSsgCW9wdGlvbnMtPmxway5sZCA9IE5V
TEw7Ci0rIAlvcHRpb25zLT5scGsub24gPSAtMTsKLSsgCW9wdGlvbnMtPmxway5zZXJ2ZXJz
ID0gTlVMTDsKLSsgCW9wdGlvbnMtPmxway51X2Jhc2VkbiA9IE5VTEw7Ci0rIAlvcHRpb25z
LT5scGsuZ19iYXNlZG4gPSBOVUxMOwotKyAJb3B0aW9ucy0+bHBrLmJpbmRkbiA9IE5VTEw7
Ci0rIAlvcHRpb25zLT5scGsuYmluZHB3ID0gTlVMTDsKLSsgCW9wdGlvbnMtPmxway5zZ3Jv
dXAgPSBOVUxMOwotKyAJb3B0aW9ucy0+bHBrLmZpbHRlciA9IE5VTEw7Ci0rIAlvcHRpb25z
LT5scGsuZmdyb3VwID0gTlVMTDsKLSsgCW9wdGlvbnMtPmxway5sX2NvbmYgPSBOVUxMOwot
KyAJb3B0aW9ucy0+bHBrLnRscyA9IC0xOwotKyAJb3B0aW9ucy0+bHBrLmJfdGltZW91dC50
dl9zZWMgPSAtMTsKLSsgCW9wdGlvbnMtPmxway5zX3RpbWVvdXQudHZfc2VjID0gLTE7Ci0r
IAlvcHRpb25zLT5scGsuZmxhZ3MgPSBGTEFHX0VNUFRZOwotKyNlbmRpZgotIH0KLSAKLSB2
b2lkCi1AQCAtMjY1LDYgKzI4NywzMiBAQAotIAkJb3B0aW9ucy0+cGVybWl0X3R1biA9IFNT
SF9UVU5NT0RFX05POwotIAlpZiAob3B0aW9ucy0+emVyb19rbm93bGVkZ2VfcGFzc3dvcmRf
YXV0aGVudGljYXRpb24gPT0gLTEpCi0gCQlvcHRpb25zLT56ZXJvX2tub3dsZWRnZV9wYXNz
d29yZF9hdXRoZW50aWNhdGlvbiA9IDA7Ci0rI2lmZGVmIFdJVEhfTERBUF9QVUJLRVkKLSsJ
aWYgKG9wdGlvbnMtPmxway5vbiA9PSAtMSkKLSsJICAgIG9wdGlvbnMtPmxway5vbiA9IF9E
RUZBVUxUX0xQS19PTjsKLSsJaWYgKG9wdGlvbnMtPmxway5zZXJ2ZXJzID09IE5VTEwpCi0r
CSAgICBvcHRpb25zLT5scGsuc2VydmVycyA9IF9ERUZBVUxUX0xQS19TRVJWRVJTOwotKwlp
ZiAob3B0aW9ucy0+bHBrLnVfYmFzZWRuID09IE5VTEwpCi0rCSAgICBvcHRpb25zLT5scGsu
dV9iYXNlZG4gPSBfREVGQVVMVF9MUEtfVUROOwotKwlpZiAob3B0aW9ucy0+bHBrLmdfYmFz
ZWRuID09IE5VTEwpCi0rCSAgICBvcHRpb25zLT5scGsuZ19iYXNlZG4gPSBfREVGQVVMVF9M
UEtfR0ROOwotKwlpZiAob3B0aW9ucy0+bHBrLmJpbmRkbiA9PSBOVUxMKQotKwkgICAgb3B0
aW9ucy0+bHBrLmJpbmRkbiA9IF9ERUZBVUxUX0xQS19CSU5ERE47Ci0rCWlmIChvcHRpb25z
LT5scGsuYmluZHB3ID09IE5VTEwpCi0rCSAgICBvcHRpb25zLT5scGsuYmluZHB3ID0gX0RF
RkFVTFRfTFBLX0JJTkRQVzsKLSsJaWYgKG9wdGlvbnMtPmxway5zZ3JvdXAgPT0gTlVMTCkK
LSsJICAgIG9wdGlvbnMtPmxway5zZ3JvdXAgPSBfREVGQVVMVF9MUEtfU0dST1VQOwotKwlp
ZiAob3B0aW9ucy0+bHBrLmZpbHRlciA9PSBOVUxMKQotKwkgICAgb3B0aW9ucy0+bHBrLmZp
bHRlciA9IF9ERUZBVUxUX0xQS19GSUxURVI7Ci0rCWlmIChvcHRpb25zLT5scGsudGxzID09
IC0xKQotKwkgICAgb3B0aW9ucy0+bHBrLnRscyA9IF9ERUZBVUxUX0xQS19UTFM7Ci0rCWlm
IChvcHRpb25zLT5scGsuYl90aW1lb3V0LnR2X3NlYyA9PSAtMSkKLSsJICAgIG9wdGlvbnMt
Pmxway5iX3RpbWVvdXQudHZfc2VjID0gX0RFRkFVTFRfTFBLX0JUSU1FT1VUOwotKwlpZiAo
b3B0aW9ucy0+bHBrLnNfdGltZW91dC50dl9zZWMgPT0gLTEpCi0rCSAgICBvcHRpb25zLT5s
cGsuc190aW1lb3V0LnR2X3NlYyA9IF9ERUZBVUxUX0xQS19TVElNRU9VVDsKLSsJaWYgKG9w
dGlvbnMtPmxway5sX2NvbmYgPT0gTlVMTCkKLSsJICAgIG9wdGlvbnMtPmxway5sX2NvbmYg
PSBfREVGQVVMVF9MUEtfTERQOwotKyNlbmRpZgotIAotIAkvKiBUdXJuIHByaXZpbGVnZSBz
ZXBhcmF0aW9uIG9uIGJ5IGRlZmF1bHQgKi8KLSAJaWYgKHVzZV9wcml2c2VwID09IC0xKQot
QEAgLTMxMSw2ICszNTksMTIgQEAKLSAJc1VzZVByaXZpbGVnZVNlcGFyYXRpb24sIHNBbGxv
d0FnZW50Rm9yd2FyZGluZywKLSAJc1plcm9Lbm93bGVkZ2VQYXNzd29yZEF1dGhlbnRpY2F0
aW9uLAotIAlzRGVwcmVjYXRlZCwgc1Vuc3VwcG9ydGVkCi0rI2lmZGVmIFdJVEhfTERBUF9Q
VUJLRVkKLSsJLHNMZGFwUHVibGlja2V5LCBzTGRhcFNlcnZlcnMsIHNMZGFwVXNlckROCi0r
CSxzTGRhcEdyb3VwRE4sIHNCaW5kRE4sIHNCaW5kUHcsIHNNeUdyb3VwCi0rCSxzTGRhcEZp
bHRlciwgc0ZvcmNlVExTLCBzQmluZFRpbWVvdXQKLSsJLHNTZWFyY2hUaW1lb3V0LCBzTGRh
cENvbmYKLSsjZW5kaWYKLSB9IFNlcnZlck9wQ29kZXM7Ci0gCi0gI2RlZmluZSBTU0hDRkdf
R0xPQkFMCTB4MDEJLyogYWxsb3dlZCBpbiBtYWluIHNlY3Rpb24gb2Ygc3NoZF9jb25maWcg
Ki8KLUBAIC00MjEsNiArNDc1LDIwIEBACi0gCXsgImNsaWVudGFsaXZlY291bnRtYXgiLCBz
Q2xpZW50QWxpdmVDb3VudE1heCwgU1NIQ0ZHX0dMT0JBTCB9LAotIAl7ICJhdXRob3JpemVk
a2V5c2ZpbGUiLCBzQXV0aG9yaXplZEtleXNGaWxlLCBTU0hDRkdfR0xPQkFMIH0sCi0gCXsg
ImF1dGhvcml6ZWRrZXlzZmlsZTIiLCBzQXV0aG9yaXplZEtleXNGaWxlMiwgU1NIQ0ZHX0dM
T0JBTCB9LAotKyNpZmRlZiBXSVRIX0xEQVBfUFVCS0VZCi0rCXsgX0RFRkFVTFRfTFBLX1RP
S0VOLCBzTGRhcFB1YmxpY2tleSwgU1NIQ0ZHX0dMT0JBTCB9LAotKwl7IF9ERUZBVUxUX1NS
Vl9UT0tFTiwgc0xkYXBTZXJ2ZXJzLCBTU0hDRkdfR0xPQkFMIH0sCi0rCXsgX0RFRkFVTFRf
VVNSX1RPS0VOLCBzTGRhcFVzZXJETiwgU1NIQ0ZHX0dMT0JBTCB9LAotKwl7IF9ERUZBVUxU
X0dSUF9UT0tFTiwgc0xkYXBHcm91cEROLCBTU0hDRkdfR0xPQkFMIH0sCi0rCXsgX0RFRkFV
TFRfQkROX1RPS0VOLCBzQmluZEROLCBTU0hDRkdfR0xPQkFMIH0sCi0rCXsgX0RFRkFVTFRf
QlBXX1RPS0VOLCBzQmluZFB3LCBTU0hDRkdfR0xPQkFMIH0sCi0rCXsgX0RFRkFVTFRfTVlH
X1RPS0VOLCBzTXlHcm91cCwgU1NIQ0ZHX0dMT0JBTCB9LAotKwl7IF9ERUZBVUxUX0ZJTF9U
T0tFTiwgc0xkYXBGaWx0ZXIsIFNTSENGR19HTE9CQUwgfSwKLSsJeyBfREVGQVVMVF9UTFNf
VE9LRU4sIHNGb3JjZVRMUywgU1NIQ0ZHX0dMT0JBTCB9LAotKwl7IF9ERUZBVUxUX0JUSV9U
T0tFTiwgc0JpbmRUaW1lb3V0LCBTU0hDRkdfR0xPQkFMIH0sCi0rCXsgX0RFRkFVTFRfU1RJ
X1RPS0VOLCBzU2VhcmNoVGltZW91dCwgU1NIQ0ZHX0dMT0JBTCB9LAotKwl7IF9ERUZBVUxU
X0xEUF9UT0tFTiwgc0xkYXBDb25mLCBTU0hDRkdfR0xPQkFMIH0sCi0rI2VuZGlmCi0gCXsg
InVzZXByaXZpbGVnZXNlcGFyYXRpb24iLCBzVXNlUHJpdmlsZWdlU2VwYXJhdGlvbiwgU1NI
Q0ZHX0dMT0JBTCB9LAotIAl7ICJhY2NlcHRlbnYiLCBzQWNjZXB0RW52LCBTU0hDRkdfR0xP
QkFMIH0sCi0gCXsgInBlcm1pdHR1bm5lbCIsIHNQZXJtaXRUdW5uZWwsIFNTSENGR19HTE9C
QUwgfSwKLUBAIC0xMzExLDYgKzEzNzksMTA3IEBACi0gCQl3aGlsZSAoYXJnKQotIAkJICAg
IGFyZyA9IHN0cmRlbGltKCZjcCk7Ci0gCQlicmVhazsKLSsjaWZkZWYgV0lUSF9MREFQX1BV
QktFWQotKwljYXNlIHNMZGFwUHVibGlja2V5OgotKwkJaW50cHRyID0gJm9wdGlvbnMtPmxw
ay5vbjsKLSsJCWdvdG8gcGFyc2VfZmxhZzsKLSsJY2FzZSBzTGRhcFNlcnZlcnM6Ci0rCQkv
KiBhcmcgPSBzdHJkZWxpbSgmY3ApOyAqLwotKwkJcCA9IGxpbmU7Ci0rCQl3aGlsZSgqcCsr
KTsKLSsJCWFyZyA9IHA7Ci0rCQlpZiAoIWFyZyB8fCAqYXJnID09ICdcMCcpCi0rCQkgICAg
ZmF0YWwoIiVzIGxpbmUgJWQ6IG1pc3NpbmcgbGRhcCBzZXJ2ZXIiLGZpbGVuYW1lLGxpbmVu
dW0pOwotKwkJYXJnW3N0cmxlbihhcmcpXSA9ICdcMCc7Ci0rCQlpZiAoKG9wdGlvbnMtPmxw
ay5zZXJ2ZXJzID0gbGRhcF9wYXJzZV9zZXJ2ZXJzKGFyZykpID09IE5VTEwpCi0rCQkgICAg
ZmF0YWwoIiVzIGxpbmUgJWQ6IGVycm9yIGluIGxkYXAgc2VydmVycyIsIGZpbGVuYW1lLCBs
aW5lbnVtKTsKLSsJCW1lbXNldChhcmcsMCxzdHJsZW4oYXJnKSk7Ci0rCQlicmVhazsKLSsJ
Y2FzZSBzTGRhcFVzZXJETjoKLSsJCWFyZyA9IGNwOwotKwkJaWYgKCFhcmcgfHwgKmFyZyA9
PSAnXDAnKQotKwkJICAgIGZhdGFsKCIlcyBsaW5lICVkOiBtaXNzaW5nIGxkYXAgc2VydmVy
IixmaWxlbmFtZSxsaW5lbnVtKTsKLSsJCWFyZ1tzdHJsZW4oYXJnKV0gPSAnXDAnOwotKwkJ
b3B0aW9ucy0+bHBrLnVfYmFzZWRuID0geHN0cmR1cChhcmcpOwotKwkJbWVtc2V0KGFyZyww
LHN0cmxlbihhcmcpKTsKLSsJCWJyZWFrOwotKwljYXNlIHNMZGFwR3JvdXBETjoKLSsJCWFy
ZyA9IGNwOwotKwkJaWYgKCFhcmcgfHwgKmFyZyA9PSAnXDAnKQotKwkJICAgIGZhdGFsKCIl
cyBsaW5lICVkOiBtaXNzaW5nIGxkYXAgc2VydmVyIixmaWxlbmFtZSxsaW5lbnVtKTsKLSsJ
CWFyZ1tzdHJsZW4oYXJnKV0gPSAnXDAnOwotKwkJb3B0aW9ucy0+bHBrLmdfYmFzZWRuID0g
eHN0cmR1cChhcmcpOwotKwkJbWVtc2V0KGFyZywwLHN0cmxlbihhcmcpKTsKLSsJCWJyZWFr
OwotKwljYXNlIHNCaW5kRE46Ci0rCQlhcmcgPSBjcDsKLSsJCWlmICghYXJnIHx8ICphcmcg
PT0gJ1wwJykKLSsJCSAgICBmYXRhbCgiJXMgbGluZSAlZDogbWlzc2luZyBiaW5kZG4iLGZp
bGVuYW1lLGxpbmVudW0pOwotKwkJYXJnW3N0cmxlbihhcmcpXSA9ICdcMCc7Ci0rCQlvcHRp
b25zLT5scGsuYmluZGRuID0geHN0cmR1cChhcmcpOwotKwkJbWVtc2V0KGFyZywwLHN0cmxl
bihhcmcpKTsKLSsJCWJyZWFrOwotKwljYXNlIHNCaW5kUHc6Ci0rCQlhcmcgPSBjcDsKLSsJ
CWlmICghYXJnIHx8ICphcmcgPT0gJ1wwJykKLSsJCSAgICBmYXRhbCgiJXMgbGluZSAlZDog
bWlzc2luZyBiaW5kcHciLGZpbGVuYW1lLGxpbmVudW0pOwotKwkJYXJnW3N0cmxlbihhcmcp
XSA9ICdcMCc7Ci0rCQlvcHRpb25zLT5scGsuYmluZHB3ID0geHN0cmR1cChhcmcpOwotKwkJ
bWVtc2V0KGFyZywwLHN0cmxlbihhcmcpKTsKLSsJCWJyZWFrOwotKwljYXNlIHNNeUdyb3Vw
OgotKwkJYXJnID0gY3A7Ci0rCQlpZiAoIWFyZyB8fCAqYXJnID09ICdcMCcpCi0rCQkgICAg
ZmF0YWwoIiVzIGxpbmUgJWQ6IG1pc3NpbmcgZ3JvdXBuYW1lIixmaWxlbmFtZSwgbGluZW51
bSk7Ci0rCQlhcmdbc3RybGVuKGFyZyldID0gJ1wwJzsKLSsJCW9wdGlvbnMtPmxway5zZ3Jv
dXAgPSB4c3RyZHVwKGFyZyk7Ci0rCQlpZiAob3B0aW9ucy0+bHBrLnNncm91cCkKLSsJCSAg
ICBvcHRpb25zLT5scGsuZmdyb3VwID0gbGRhcF9wYXJzZV9ncm91cHMob3B0aW9ucy0+bHBr
LnNncm91cCk7Ci0rCQltZW1zZXQoYXJnLDAsc3RybGVuKGFyZykpOwotKwkJYnJlYWs7Ci0r
CWNhc2Ugc0xkYXBGaWx0ZXI6Ci0rCQlhcmcgPSBjcDsKLSsJCWlmICghYXJnIHx8ICphcmcg
PT0gJ1wwJykKLSsJCSAgICBmYXRhbCgiJXMgbGluZSAlZDogbWlzc2luZyBmaWx0ZXIiLGZp
bGVuYW1lLCBsaW5lbnVtKTsKLSsJCWFyZ1tzdHJsZW4oYXJnKV0gPSAnXDAnOwotKwkJb3B0
aW9ucy0+bHBrLmZpbHRlciA9IHhzdHJkdXAoYXJnKTsKLSsJCW1lbXNldChhcmcsMCxzdHJs
ZW4oYXJnKSk7Ci0rCQlicmVhazsKLSsJY2FzZSBzRm9yY2VUTFM6Ci0rCQlpbnRwdHIgPSAm
b3B0aW9ucy0+bHBrLnRsczsKLSsJCWFyZyA9IHN0cmRlbGltKCZjcCk7Ci0rCQlpZiAoIWFy
ZyB8fCAqYXJnID09ICdcMCcpCi0rCQkJZmF0YWwoIiVzIGxpbmUgJWQ6IG1pc3NpbmcgeWVz
L25vIGFyZ3VtZW50LiIsCi0rCQkJICAgIGZpbGVuYW1lLCBsaW5lbnVtKTsKLSsJCXZhbHVl
ID0gMDsJLyogc2lsZW5jZSBjb21waWxlciAqLwotKwkJaWYgKHN0cmNtcChhcmcsICJ5ZXMi
KSA9PSAwKQotKwkJCXZhbHVlID0gMTsKLSsJCWVsc2UgaWYgKHN0cmNtcChhcmcsICJubyIp
ID09IDApCi0rCQkJdmFsdWUgPSAwOwotKwkJZWxzZSBpZiAoc3RyY21wKGFyZywgInRyeSIp
ID09IDApCi0rCQkJdmFsdWUgPSAtMTsKLSsJCWVsc2UKLSsJCQlmYXRhbCgiJXMgbGluZSAl
ZDogQmFkIHllcy9ubyBhcmd1bWVudDogJXMiLAotKwkJCQlmaWxlbmFtZSwgbGluZW51bSwg
YXJnKTsKLSsJCWlmICgqaW50cHRyID09IC0xKQotKwkJCSppbnRwdHIgPSB2YWx1ZTsKLSsJ
CWJyZWFrOwotKwljYXNlIHNCaW5kVGltZW91dDoKLSsJCWludHB0ciA9IChpbnQgKikgJm9w
dGlvbnMtPmxway5iX3RpbWVvdXQudHZfc2VjOwotKwkJZ290byBwYXJzZV9pbnQ7Ci0rCWNh
c2Ugc1NlYXJjaFRpbWVvdXQ6Ci0rCQlpbnRwdHIgPSAoaW50ICopICZvcHRpb25zLT5scGsu
c190aW1lb3V0LnR2X3NlYzsKLSsJCWdvdG8gcGFyc2VfaW50OwotKwkJYnJlYWs7Ci0rCWNh
c2Ugc0xkYXBDb25mOgotKwkJYXJnID0gY3A7Ci0rCQlpZiAoIWFyZyB8fCAqYXJnID09ICdc
MCcpCi0rCQkgICAgZmF0YWwoIiVzIGxpbmUgJWQ6IG1pc3NpbmcgTHBrTGRhcENvbmYiLCBm
aWxlbmFtZSwgbGluZW51bSk7Ci0rCQlhcmdbc3RybGVuKGFyZyldID0gJ1wwJzsKLSsJCW9w
dGlvbnMtPmxway5sX2NvbmYgPSB4c3RyZHVwKGFyZyk7Ci0rCQltZW1zZXQoYXJnLCAwLCBz
dHJsZW4oYXJnKSk7Ci0rCQlicmVhazsKLSsjZW5kaWYKLSAKLSAJZGVmYXVsdDoKLSAJCWZh
dGFsKCIlcyBsaW5lICVkOiBNaXNzaW5nIGhhbmRsZXIgZm9yIG9wY29kZSAlcyAoJWQpIiwK
ZGlmZiAtTnJ1IC9ob21lL2dhd3JpbG9mZi9scGsvb3BlbnNzaC1wb3J0YWJsZS9maWxlcy9j
b250cmliLW9wZW5zc2gtbHBrLTUuMXAxLTAuMy4xMC5wYXRjaCAvaG9tZS9nYXdyaWxvZmYv
b3BlbnNzaC1wb3J0YWJsZS9maWxlcy9jb250cmliLW9wZW5zc2gtbHBrLTUuMXAxLTAuMy4x
MC5wYXRjaAotLS0gL2hvbWUvZ2F3cmlsb2ZmL2xway9vcGVuc3NoLXBvcnRhYmxlL2ZpbGVz
L2NvbnRyaWItb3BlbnNzaC1scGstNS4xcDEtMC4zLjEwLnBhdGNoCTIwMDktMDYtMjEgMjM6
MzY6MTUuMDAwMDAwMDAwICswMzAwCisrKyAvaG9tZS9nYXdyaWxvZmYvb3BlbnNzaC1wb3J0
YWJsZS9maWxlcy9jb250cmliLW9wZW5zc2gtbHBrLTUuMXAxLTAuMy4xMC5wYXRjaAkxOTcw
LTAxLTAxIDAzOjAwOjAwLjAwMDAwMDAwMCArMDMwMApAQCAtMSwxNjgyICswLDAgQEAKLVRo
aXMgaXMgYSBmb3J3YXJkLXBvcnQgb2YgdGhlIE9wZW5TU0ggTFBLIHN1cHBvcnQgcGF0Y2gu
Ci0KLUl0IGFkZHMgc3VwcG9ydCBmb3Igc3RvcmluZyBPcGVuU1NIIHB1YmxpYyBrZXlzIGlu
IExEQVAuIEl0IGFsc28gc3VwcG9ydHMKLWdyb3VwaW5nIG9mIG1hY2hpbmVzIGluIHRoZSBM
REFQIGRhdGEgdG8gbGltaXQgdXNlcnMgdG8gc3BlY2lmaWMgbWFjaGluZXMuCi0KLVRoZSBs
YXRlc3QgaG9tZXBhZ2UgZm9yIHRoZSBMUEsgcHJvamVjdCBpczoKLWh0dHA6Ly9jb2RlLmdv
b2dsZS5jb20vcC9vcGVuc3NoLWxway8KLQotVGhlIDAuMy4xMCB2ZXJzaW9uIG9mIHRoZSBw
YXRjaCBpbmNsdWRlcyBhIGZpeCBmb3IgNjQtYml0IHBsYXRmb3JtcywgYXMKLWRpc2NvdmVy
ZWQgYnkgR2VudG9vLCB3aGVyZSB0aGUgYmluZCB0aW1lb3V0IGFuZCBzZWFyY2ggdGltZW91
dCB2YWx1ZXMgd2VyZSBub3QKLWJlaW5nIHBhcnNlZCBjb3JyZWN0bHk6IGh0dHA6Ly9idWdz
LmdlbnRvby5vcmcvMjEwMTEwCi0KLUZvcndhcmQtcG9ydGVkLWZyb206IG9wZW5zc2gtbHBr
LTUuMXAxLTAuMy45LnBhdGNoCi1TaWduZWQtb2ZmLWJ5OiBSb2JpbiBILiBKb2huc29uIDxy
b2JiYXQyQGdlbnRvby5vcmc+Ci0KLWRpZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0t
ZXhjbHVkZSAnKi5yZWonIGF1dGgyLXB1YmtleS5jIGF1dGgyLXB1YmtleS5jCi0tLS0gYXV0
aDItcHVia2V5LmMJMjAwOC0wNy0wMyAxOTo1NDoyNS4wMDAwMDAwMDAgLTA3MDAKLSsrKyBh
dXRoMi1wdWJrZXkuYwkyMDA4LTA4LTIzIDE1OjAyOjQ3LjAwMDAwMDAwMCAtMDcwMAotQEAg
LTU1LDYgKzU1LDEwIEBACi0gI2luY2x1ZGUgIm1vbml0b3Jfd3JhcC5oIgotICNpbmNsdWRl
ICJtaXNjLmgiCi0gCi0rI2lmZGVmIFdJVEhfTERBUF9QVUJLRVkKLSsjaW5jbHVkZSAibGRh
cGF1dGguaCIKLSsjZW5kaWYKLSsKLSAvKiBpbXBvcnQgKi8KLSBleHRlcm4gU2VydmVyT3B0
aW9ucyBvcHRpb25zOwotIGV4dGVybiB1X2NoYXIgKnNlc3Npb25faWQyOwotQEAgLTE4Nywx
MCArMTkxLDc5IEBACi0gCXVfbG9uZyBsaW5lbnVtID0gMDsKLSAJS2V5ICpmb3VuZDsKLSAJ
Y2hhciAqZnA7Ci0rI2lmZGVmIFdJVEhfTERBUF9QVUJLRVkKLSsJbGRhcF9rZXlfdCAqIGs7
Ci0rCXVuc2lnbmVkIGludCBpID0gMDsKLSsjZW5kaWYKLSAKLSAJLyogVGVtcG9yYXJpbHkg
dXNlIHRoZSB1c2VyJ3MgdWlkLiAqLwotIAl0ZW1wb3JhcmlseV91c2VfdWlkKHB3KTsKLSAK
LSsjaWZkZWYgV0lUSF9MREFQX1BVQktFWQotKyAJZm91bmRfa2V5ID0gMDsKLSsgCS8qIGFs
bG9jYXRlIGEgbmV3IGtleSB0eXBlICovCi0rIAlmb3VuZCA9IGtleV9uZXcoa2V5LT50eXBl
KTsKLSsgCi0rIAkvKiBmaXJzdCBjaGVjayBpZiB0aGUgb3B0aW9ucyBpcyBlbmFibGVkLCB0
aGVuIHRyeS4uICovCi0rCWlmIChvcHRpb25zLmxway5vbikgewotKwkgICAgZGVidWcoIltM
REFQXSB0cnlpbmcgTERBUCBmaXJzdCB1aWQ9JXMiLHB3LT5wd19uYW1lKTsKLSsJICAgIGlm
IChsZGFwX2lzbWVtYmVyKCZvcHRpb25zLmxwaywgcHctPnB3X25hbWUpID4gMCkgewotKwkJ
aWYgKChrID0gbGRhcF9nZXR1c2Vya2V5KCZvcHRpb25zLmxwaywgcHctPnB3X25hbWUpKSAh
PSBOVUxMKSB7Ci0rCQkgICAgLyogU2tpcCBsZWFkaW5nIHdoaXRlc3BhY2UsIGVtcHR5IGFu
ZCBjb21tZW50IGxpbmVzLiAqLwotKwkJICAgIGZvciAoaSA9IDAgOyBpIDwgay0+bnVtIDsg
aSsrKSB7Ci0rCQkJLyogZG9udCBmb3JnZXQgaWYgbXVsdGlwbGUga2V5cyB0byByZXNldCBv
cHRpb25zICovCi0rCQkJY2hhciAqY3AsICpvcHRpb25zID0gTlVMTDsKLSsKLSsJCQlmb3Ig
KGNwID0gKGNoYXIgKilrLT5rZXlzW2ldLT5idl92YWw7ICpjcCA9PSAnICcgfHwgKmNwID09
ICdcdCc7IGNwKyspCi0rCQkJICAgIDsKLSsJCQlpZiAoISpjcCB8fCAqY3AgPT0gJ1xuJyB8
fCAqY3AgPT0gJyMnKQotKwkJCSAgICBjb250aW51ZTsKLSsKLSsJCQlpZiAoa2V5X3JlYWQo
Zm91bmQsICZjcCkgIT0gMSkgewotKwkJCSAgICAvKiBubyBrZXk/ICBjaGVjayBpZiB0aGVy
ZSBhcmUgb3B0aW9ucyBmb3IgdGhpcyBrZXkgKi8KLSsJCQkgICAgaW50IHF1b3RlZCA9IDA7
Ci0rCQkJICAgIGRlYnVnMigiW0xEQVBdIHVzZXJfa2V5X2FsbG93ZWQ6IGNoZWNrIG9wdGlv
bnM6ICclcyciLCBjcCk7Ci0rCQkJICAgIG9wdGlvbnMgPSBjcDsKLSsJCQkgICAgZm9yICg7
ICpjcCAmJiAocXVvdGVkIHx8ICgqY3AgIT0gJyAnICYmICpjcCAhPSAnXHQnKSk7IGNwKysp
IHsKLSsJCQkJaWYgKCpjcCA9PSAnXFwnICYmIGNwWzFdID09ICciJykKLSsJCQkJICAgIGNw
Kys7CS8qIFNraXAgYm90aCAqLwotKwkJCQllbHNlIGlmICgqY3AgPT0gJyInKQotKwkJCQkg
ICAgcXVvdGVkID0gIXF1b3RlZDsKLSsJCQkgICAgfQotKwkJCSAgICAvKiBTa2lwIHJlbWFp
bmluZyB3aGl0ZXNwYWNlLiAqLwotKwkJCSAgICBmb3IgKDsgKmNwID09ICcgJyB8fCAqY3Ag
PT0gJ1x0JzsgY3ArKykKLSsJCQkJOwotKwkJCSAgICBpZiAoa2V5X3JlYWQoZm91bmQsICZj
cCkgIT0gMSkgewotKwkJCQlkZWJ1ZzIoIltMREFQXSB1c2VyX2tleV9hbGxvd2VkOiBhZHZh
bmNlOiAnJXMnIiwgY3ApOwotKwkJCQkvKiBzdGlsbCBubyBrZXk/ICBhZHZhbmNlIHRvIG5l
eHQgbGluZSovCi0rCQkJCWNvbnRpbnVlOwotKwkJCSAgICB9Ci0rCQkJfQotKwotKwkJCWlm
IChrZXlfZXF1YWwoZm91bmQsIGtleSkgJiYKLSsJCQkJYXV0aF9wYXJzZV9vcHRpb25zKHB3
LCBvcHRpb25zLCBmaWxlLCBsaW5lbnVtKSA9PSAxKSB7Ci0rCQkJICAgIGZvdW5kX2tleSA9
IDE7Ci0rCQkJICAgIGRlYnVnKCJbTERBUF0gbWF0Y2hpbmcga2V5IGZvdW5kIik7Ci0rCQkJ
ICAgIGZwID0ga2V5X2ZpbmdlcnByaW50KGZvdW5kLCBTU0hfRlBfTUQ1LCBTU0hfRlBfSEVY
KTsKLSsJCQkgICAgdmVyYm9zZSgiW0xEQVBdIEZvdW5kIG1hdGNoaW5nICVzIGtleTogJXMi
LCBrZXlfdHlwZShmb3VuZCksIGZwKTsKLSsKLSsJCQkgICAgLyogcmVzdG9yaW5nIG1lbW9y
eSAqLwotKwkJCSAgICBsZGFwX2tleXNfZnJlZShrKTsKLSsJCQkgICAgeGZyZWUoZnApOwot
KwkJCSAgICByZXN0b3JlX3VpZCgpOwotKwkJCSAgICBrZXlfZnJlZShmb3VuZCk7Ci0rCQkJ
ICAgIHJldHVybiBmb3VuZF9rZXk7Ci0rCQkJICAgIGJyZWFrOwotKwkJCX0KLSsJCSAgICB9
LyogZW5kIG9mIExEQVAgZm9yKCkgKi8KLSsJCX0gZWxzZSB7Ci0rCQkgICAgbG9naXQoIltM
REFQXSBubyBrZXlzIGZvdW5kIGZvciAnJXMnISIsIHB3LT5wd19uYW1lKTsKLSsJCX0KLSsJ
ICAgIH0gZWxzZSB7Ci0rCQlsb2dpdCgiW0xEQVBdICclcycgaXMgbm90IGluICclcyciLCBw
dy0+cHdfbmFtZSwgb3B0aW9ucy5scGsuc2dyb3VwKTsKLSsJICAgIH0KLSsJfQotKyNlbmRp
ZgotIAlkZWJ1ZygidHJ5aW5nIHB1YmxpYyBrZXkgZmlsZSAlcyIsIGZpbGUpOwotIAlmID0g
YXV0aF9vcGVua2V5ZmlsZShmaWxlLCBwdywgb3B0aW9ucy5zdHJpY3RfbW9kZXMpOwotIAot
ZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRlICcqLnJlaicgYXV0aC1y
c2EuYyBhdXRoLXJzYS5jCi0tLS0gYXV0aC1yc2EuYwkyMDA4LTA3LTAyIDA1OjM3OjMwLjAw
MDAwMDAwMCAtMDcwMAotKysrIGF1dGgtcnNhLmMJMjAwOC0wOC0yMyAxNTowMjo0Ny4wMDAw
MDAwMDAgLTA3MDAKLUBAIC0xNzQsMTAgKzE3NCw5NiBAQAotIAlGSUxFICpmOwotIAl1X2xv
bmcgbGluZW51bSA9IDA7Ci0gCUtleSAqa2V5OwotKyNpZmRlZiBXSVRIX0xEQVBfUFVCS0VZ
Ci0rCWxkYXBfa2V5X3QgKiBrOwotKwl1bnNpZ25lZCBpbnQgaSA9IDA7Ci0rI2VuZGlmCi0g
Ci0gCS8qIFRlbXBvcmFyaWx5IHVzZSB0aGUgdXNlcidzIHVpZC4gKi8KLSAJdGVtcG9yYXJp
bHlfdXNlX3VpZChwdyk7Ci0gCi0rI2lmZGVmIFdJVEhfTERBUF9QVUJLRVkKLSsJLyogaGVy
ZSBpcyB0aGUgam9iICovCi0rCWtleSA9IGtleV9uZXcoS0VZX1JTQTEpOwotKwotKwlpZiAo
b3B0aW9ucy5scGsub24pIHsKLSsJICAgIGRlYnVnKCJbTERBUF0gdHJ5aW5nIExEQVAgZmly
c3QgdWlkPSVzIiwgcHctPnB3X25hbWUpOwotKwkgICAgaWYgKCBsZGFwX2lzbWVtYmVyKCZv
cHRpb25zLmxwaywgcHctPnB3X25hbWUpID4gMCkgewotKwkJaWYgKCAoayA9IGxkYXBfZ2V0
dXNlcmtleSgmb3B0aW9ucy5scGssIHB3LT5wd19uYW1lKSkgIT0gTlVMTCkgewotKwkJICAg
IGZvciAoaSA9IDAgOyBpIDwgay0+bnVtIDsgaSsrKSB7Ci0rCQkJY2hhciAqY3AsICpvcHRp
b25zID0gTlVMTDsKLSsKLSsJCQlmb3IgKGNwID0gay0+a2V5c1tpXS0+YnZfdmFsOyAqY3Ag
PT0gJyAnIHx8ICpjcCA9PSAnXHQnOyBjcCsrKQotKwkJCSAgICA7Ci0rCQkJaWYgKCEqY3Ag
fHwgKmNwID09ICdcbicgfHwgKmNwID09ICcjJykKLSsJCQkgICAgY29udGludWU7Ci0rCi0r
CQkJLyoKLSsJCQkqIENoZWNrIGlmIHRoZXJlIGFyZSBvcHRpb25zIGZvciB0aGlzIGtleSwg
YW5kIGlmIHNvLAotKwkJCSogc2F2ZSB0aGVpciBzdGFydGluZyBhZGRyZXNzIGFuZCBza2lw
IHRoZSBvcHRpb24gcGFydAotKwkJCSogZm9yIG5vdy4gIElmIHRoZXJlIGFyZSBubyBvcHRp
b25zLCBzZXQgdGhlIHN0YXJ0aW5nCi0rCQkJKiBhZGRyZXNzIHRvIE5VTEwuCi0rCQkJICov
Ci0rCQkJaWYgKCpjcCA8ICcwJyB8fCAqY3AgPiAnOScpIHsKLSsJCQkgICAgaW50IHF1b3Rl
ZCA9IDA7Ci0rCQkJICAgIG9wdGlvbnMgPSBjcDsKLSsJCQkgICAgZm9yICg7ICpjcCAmJiAo
cXVvdGVkIHx8ICgqY3AgIT0gJyAnICYmICpjcCAhPSAnXHQnKSk7IGNwKyspIHsKLSsJCQkJ
aWYgKCpjcCA9PSAnXFwnICYmIGNwWzFdID09ICciJykKLSsJCQkJICAgIGNwKys7CS8qIFNr
aXAgYm90aCAqLwotKwkJCQllbHNlIGlmICgqY3AgPT0gJyInKQotKwkJCQkgICAgcXVvdGVk
ID0gIXF1b3RlZDsKLSsJCQkgICAgfQotKwkJCX0gZWxzZQotKwkJCSAgICBvcHRpb25zID0g
TlVMTDsKLSsKLSsJCQkvKiBQYXJzZSB0aGUga2V5IGZyb20gdGhlIGxpbmUuICovCi0rCQkJ
aWYgKGhvc3RmaWxlX3JlYWRfa2V5KCZjcCwgJmJpdHMsIGtleSkgPT0gMCkgewotKwkJCSAg
ICBkZWJ1ZygiW0xEQVBdIGxpbmUgJWQ6IG5vbiBzc2gxIGtleSBzeW50YXgiLCBpKTsKLSsJ
CQkgICAgY29udGludWU7Ci0rCQkJfQotKwkJCS8qIGNwIG5vdyBwb2ludHMgdG8gdGhlIGNv
bW1lbnQgcGFydC4gKi8KLSsKLSsJCQkvKiBDaGVjayBpZiB0aGUgd2UgaGF2ZSBmb3VuZCB0
aGUgZGVzaXJlZCBrZXkgKGlkZW50aWZpZWQgYnkgaXRzIG1vZHVsdXMpLiAqLwotKwkJCWlm
IChCTl9jbXAoa2V5LT5yc2EtPm4sIGNsaWVudF9uKSAhPSAwKQotKwkJCSAgICBjb250aW51
ZTsKLSsKLSsJCQkvKiBjaGVjayB0aGUgcmVhbCBiaXRzICAqLwotKwkJCWlmIChiaXRzICE9
ICh1bnNpZ25lZCBpbnQpQk5fbnVtX2JpdHMoa2V5LT5yc2EtPm4pKQotKwkJCSAgICBsb2dp
dCgiW0xEQVBdIFdhcm5pbmc6IGxkYXAsIGxpbmUgJWx1OiBrZXlzaXplIG1pc21hdGNoOiAi
Ci0rCQkJCSAgICAiYWN0dWFsICVkIHZzLiBhbm5vdW5jZWQgJWQuIiwgKHVuc2lnbmVkIGxv
bmcpaSwgQk5fbnVtX2JpdHMoa2V5LT5yc2EtPm4pLCBiaXRzKTsKLSsKLSsJCQkvKiBXZSBo
YXZlIGZvdW5kIHRoZSBkZXNpcmVkIGtleS4gKi8KLSsJCQkvKgotKwkJCSogSWYgb3VyIG9w
dGlvbnMgZG8gbm90IGFsbG93IHRoaXMga2V5IHRvIGJlIHVzZWQsCi0rCQkJKiBkbyBub3Qg
c2VuZCBjaGFsbGVuZ2UuCi0rCQkJICovCi0rCQkJaWYgKCFhdXRoX3BhcnNlX29wdGlvbnMo
cHcsIG9wdGlvbnMsICJbTERBUF0iLCAodW5zaWduZWQgbG9uZykgaSkpCi0rCQkJICAgIGNv
bnRpbnVlOwotKwotKwkJCS8qIGJyZWFrIG91dCwgdGhpcyBrZXkgaXMgYWxsb3dlZCAqLwot
KwkJCWFsbG93ZWQgPSAxOwotKwotKwkJCS8qIGFkZCB0aGUgcmV0dXJuIHN0dWZmIGV0Yy4u
LiAqLwotKwkJCS8qIFJlc3RvcmUgdGhlIHByaXZpbGVnZWQgdWlkLiAqLwotKwkJCXJlc3Rv
cmVfdWlkKCk7Ci0rCi0rCQkJLyogcmV0dXJuIGtleSBpZiBhbGxvd2VkICovCi0rCQkJaWYg
KGFsbG93ZWQgJiYgcmtleSAhPSBOVUxMKQotKwkJCSAgICAqcmtleSA9IGtleTsKLSsJCQll
bHNlCi0rCQkJICAgIGtleV9mcmVlKGtleSk7Ci0rCi0rCQkJbGRhcF9rZXlzX2ZyZWUoayk7
Ci0rCQkJcmV0dXJuIChhbGxvd2VkKTsKLSsJCSAgICB9Ci0rCQl9IGVsc2UgewotKwkJICAg
IGxvZ2l0KCJbTERBUF0gbm8ga2V5cyBmb3VuZCBmb3IgJyVzJyEiLCBwdy0+cHdfbmFtZSk7
Ci0rCQl9Ci0rCSAgICB9IGVsc2UgewotKwkJbG9naXQoIltMREFQXSAnJXMnIGlzIG5vdCBp
biAnJXMnIiwgcHctPnB3X25hbWUsIG9wdGlvbnMubHBrLnNncm91cCk7Ci0rCSAgICB9Ci0r
CX0KLSsjZW5kaWYKLSAJLyogVGhlIGF1dGhvcml6ZWQga2V5cy4gKi8KLSAJZmlsZSA9IGF1
dGhvcml6ZWRfa2V5c19maWxlKHB3KTsKLSAJZGVidWcoInRyeWluZyBwdWJsaWMgUlNBIGtl
eSBmaWxlICVzIiwgZmlsZSk7Ci1kaWZmIC1OdWFyIC0tZXhjbHVkZSAnKi5vcmlnJyAtLWV4
Y2x1ZGUgJyoucmVqJyBjb25maWcuaC5pbiBjb25maWcuaC5pbgotLS0tIGNvbmZpZy5oLmlu
CTIwMDgtMDctMjEgMDE6MzA6NDkuMDAwMDAwMDAwIC0wNzAwCi0rKysgY29uZmlnLmguaW4J
MjAwOC0wOC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDAKLUBAIC01NjAsNiArNTYwLDkg
QEAKLSAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxpbnV4L2lmX3R1bi5oPiBo
ZWFkZXIgZmlsZS4gKi8KLSAjdW5kZWYgSEFWRV9MSU5VWF9JRl9UVU5fSAotIAotKy8qIERl
ZmluZSBpZiB5b3Ugd2FudCBMREFQIHN1cHBvcnQgKi8KLSsjdW5kZWYgV0lUSF9MREFQX1BV
QktFWQotKwotIC8qIERlZmluZSBpZiB5b3VyIGxpYnJhcmllcyBkZWZpbmUgbG9naW4oKSAq
LwotICN1bmRlZiBIQVZFX0xPR0lOCi0gCi1kaWZmIC1OdWFyIC0tZXhjbHVkZSAnKi5vcmln
JyAtLWV4Y2x1ZGUgJyoucmVqJyBjb25maWd1cmUgY29uZmlndXJlCi0tLS0gY29uZmlndXJl
CTIwMDgtMDctMjEgMDE6MzA6NTAuMDAwMDAwMDAwIC0wNzAwCi0rKysgY29uZmlndXJlCTIw
MDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwCi1AQCAtMTM0MCw2ICsxMzQwLDcg
QEAKLSAgIC0td2l0aC10Y3Atd3JhcHBlcnNbPVBBVEhdIEVuYWJsZSB0Y3B3cmFwcGVycyBz
dXBwb3J0IChvcHRpb25hbGx5IGluIFBBVEgpCi0gICAtLXdpdGgtbGliZWRpdFs9UEFUSF0g
ICBFbmFibGUgbGliZWRpdCBzdXBwb3J0IGZvciBzZnRwCi0gICAtLXdpdGgtYXVkaXQ9bW9k
dWxlICAgICBFbmFibGUgRVhQRVJJTUVOVEFMIGF1ZGl0IHN1cHBvcnQgKG1vZHVsZXM9ZGVi
dWcsYnNtKQotKyAgLS13aXRoLWxkYXBbPVBBVEhdICAgICAgRW5hYmxlIExEQVAgcHVia2V5
IHN1cHBvcnQgKG9wdGlvbmFsbHkgaW4gUEFUSCkKLSAgIC0td2l0aC1zc2wtZGlyPVBBVEgg
ICAgIFNwZWNpZnkgcGF0aCB0byBPcGVuU1NMIGluc3RhbGxhdGlvbgotICAgLS13aXRob3V0
LW9wZW5zc2wtaGVhZGVyLWNoZWNrIERpc2FibGUgT3BlblNTTCB2ZXJzaW9uIGNvbnNpc3Rl
bmN5IGNoZWNrCi0gICAtLXdpdGgtc3NsLWVuZ2luZSAgICAgICBFbmFibGUgT3BlblNTTCAo
aGFyZHdhcmUpIEVOR0lORSBzdXBwb3J0Ci1AQCAtMTI1NjgsNiArMTI1NjksODUgQEAKLSBm
aQotIAotIAotKyMgQ2hlY2sgd2hldGhlciB1c2VyIHdhbnRzIExEQVAgc3VwcG9ydAotK0xE
QVBfTVNHPSJubyIKLSsKLSsjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxkYXAgd2FzIGdpdmVu
LgotK2lmIHRlc3QgIiR7d2l0aF9sZGFwK3NldH0iID0gc2V0OyB0aGVuCi0rICB3aXRodmFs
PSR3aXRoX2xkYXA7Ci0rCQlpZiB0ZXN0ICJ4JHdpdGh2YWwiICE9ICJ4bm8iIDsgdGhlbgot
KwotKwkJCWlmIHRlc3QgIngkd2l0aHZhbCIgIT0gInh5ZXMiIDsgdGhlbgotKwkJCQlDUFBG
TEFHUz0iJENQUEZMQUdTIC1JJHt3aXRodmFsfS9pbmNsdWRlIgotKwkJCQlMREZMQUdTPSIk
TERGTEFHUyAtTCR7d2l0aHZhbH0vbGliIgotKwkJCWZpCi0rCi0rCi0rY2F0ID4+Y29uZmRl
ZnMuaCA8PFxfQUNFT0YKLSsjZGVmaW5lIFdJVEhfTERBUF9QVUJLRVkgMQotK19BQ0VPRgot
KwotKwkJCUxJQlM9Ii1sbGRhcCAkTElCUyIKLSsJCQlMREFQX01TRz0ieWVzIgotKwotKwkJ
CXsgZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBMREFQIHN1cHBvcnQiID4m
NQotK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIExEQVAgc3VwcG9ydC4uLiAkRUNIT19D
IiA+JjY7IH0KLSsJCQljYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSsvKiBjb25m
ZGVmcy5oLiAgKi8KLStfQUNFT0YKLStjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19l
eHQKLStjYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0rLyogZW5kIGNvbmZkZWZz
LmguICAqLwotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsJCQkJICNpbmNsdWRlIDxsZGFw
Lmg+Ci0raW50Ci0rbWFpbiAoKQotK3sKLSsodm9pZClsZGFwX2luaXQoMCwgMCk7Ci0rICA7
Ci0rICByZXR1cm4gMDsKLSt9Ci0rX0FDRU9GCi0rcm0gLWYgY29uZnRlc3QuJGFjX29iamV4
dAotK2lmIHsgKGFjX3RyeT0iJGFjX2NvbXBpbGUiCi0rY2FzZSAiKCgkYWNfdHJ5IiBpbgot
KyAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3RyeTs7Ci0rICAqKSBh
Y190cnlfZWNobz0kYWNfdHJ5OzsKLStlc2FjCi0rZXZhbCAiZWNobyBcIlwkYXNfbWU6JExJ
TkVOTzogJGFjX3RyeV9lY2hvXCIiKSA+JjUKLSsgIChldmFsICIkYWNfY29tcGlsZSIpIDI+
Y29uZnRlc3QuZXIxCi0rICBhY19zdGF0dXM9JD8KLSsgIGdyZXAgLXYgJ14gKisnIGNvbmZ0
ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCi0rICBybSAtZiBjb25mdGVzdC5lcjEKLSsgIGNhdCBj
b25mdGVzdC5lcnIgPiY1Ci0rICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0
YXR1cyIgPiY1Ci0rICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJiB7Ci0rCSB0ZXN0IC16ICIk
YWNfY193ZXJyb3JfZmxhZyIgfHwKLSsJIHRlc3QgISAtcyBjb25mdGVzdC5lcnIKLSsgICAg
ICAgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQ7IHRoZW4KLSsgIHsgZWNobyAi
JGFzX21lOiRMSU5FTk86IHJlc3VsdDogeWVzIiA+JjUKLStlY2hvICIke0VDSE9fVH15ZXMi
ID4mNjsgfQotK2Vsc2UKLSsgIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIg
PiY1Ci0rc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotKwotKwotKwkJCQkg
ICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBubyIgPiY1Ci0rZWNobyAiJHtF
Q0hPX1R9bm8iID4mNjsgfQotKwkJCQkJeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJv
cjogKiogSW5jb21wbGV0ZSBvciBtaXNzaW5nIGxkYXAgbGlicmFyaWVzICoqIiA+JjUKLStl
Y2hvICIkYXNfbWU6IGVycm9yOiAqKiBJbmNvbXBsZXRlIG9yIG1pc3NpbmcgbGRhcCBsaWJy
YXJpZXMgKioiID4mMjt9Ci0rICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0rCi0rCi0r
ZmkKLSsKLStybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNv
bmZ0ZXN0LiRhY19leHQKLSsJCWZpCi0rCi0rCi0rZmkKLSsKLSsKLSAKLSAKLSAKLUBAIC0z
MDEzNSw2ICszMDIxNSw3IEBACi0gZWNobyAiICAgICAgICAgICAgICAgICBTbWFydGNhcmQg
c3VwcG9ydDogJFNDQVJEX01TRyIKLSBlY2hvICIgICAgICAgICAgICAgICAgICAgICBTL0tF
WSBzdXBwb3J0OiAkU0tFWV9NU0ciCi0gZWNobyAiICAgICAgICAgICAgICBUQ1AgV3JhcHBl
cnMgc3VwcG9ydDogJFRDUFdfTVNHIgotK2VjaG8gIiAgICAgICAgICAgICAgICAgICAgICBM
REFQIHN1cHBvcnQ6ICRMREFQX01TRyIKLSBlY2hvICIgICAgICAgICAgICAgIE1ENSBwYXNz
d29yZCBzdXBwb3J0OiAkTUQ1X01TRyIKLSBlY2hvICIgICAgICAgICAgICAgICAgICAgbGli
ZWRpdCBzdXBwb3J0OiAkTElCRURJVF9NU0ciCi0gZWNobyAiICBTb2xhcmlzIHByb2Nlc3Mg
Y29udHJhY3Qgc3VwcG9ydDogJFNQQ19NU0ciCi1kaWZmIC1OdWFyIC0tZXhjbHVkZSAnKi5v
cmlnJyAtLWV4Y2x1ZGUgJyoucmVqJyBjb25maWd1cmUuYWMgY29uZmlndXJlLmFjCi0tLS0g
Y29uZmlndXJlLmFjCTIwMDgtMDctMDkgMDQ6MDc6MTkuMDAwMDAwMDAwIC0wNzAwCi0rKysg
Y29uZmlndXJlLmFjCTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwCi1AQCAt
MTI5OSw2ICsxMjk5LDM3IEBACi0gCWVzYWMgXQotICkKLSAKLSsjIENoZWNrIHdoZXRoZXIg
dXNlciB3YW50cyBMREFQIHN1cHBvcnQKLStMREFQX01TRz0ibm8iCi0rQUNfQVJHX1dJVEgo
bGRhcCwKLSsJWyAgLS13aXRoLWxkYXBbWz1QQVRIXV0gICAgICBFbmFibGUgTERBUCBwdWJr
ZXkgc3VwcG9ydCAob3B0aW9uYWxseSBpbiBQQVRIKV0sCi0rCVsKLSsJCWlmIHRlc3QgIngk
d2l0aHZhbCIgIT0gInhubyIgOyB0aGVuCi0rCi0rCQkJaWYgdGVzdCAieCR3aXRodmFsIiAh
PSAieHllcyIgOyB0aGVuCi0rCQkJCUNQUEZMQUdTPSIkQ1BQRkxBR1MgLUkke3dpdGh2YWx9
L2luY2x1ZGUiCi0rCQkJCUxERkxBR1M9IiRMREZMQUdTIC1MJHt3aXRodmFsfS9saWIiCi0r
CQkJZmkKLSsKLSsJCQlBQ19ERUZJTkUoW1dJVEhfTERBUF9QVUJLRVldLCAxLCBbRW5hYmxl
IExEQVAgcHVia2V5IHN1cHBvcnRdKQotKwkJCUxJQlM9Ii1sbGRhcCAkTElCUyIKLSsJCQlM
REFQX01TRz0ieWVzIgotKwkKLSsJCQlBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBMREFQIHN1cHBv
cnRdKQotKwkJCUFDX1RSWV9DT01QSUxFKAotKwkJCQlbI2luY2x1ZGUgPHN5cy90eXBlcy5o
PgotKwkJCQkgI2luY2x1ZGUgPGxkYXAuaD5dLAotKwkJCQlbKHZvaWQpbGRhcF9pbml0KDAs
IDApO10sCi0rCQkJCVtBQ19NU0dfUkVTVUxUKHllcyldLAotKwkJCQlbCi0rCQkJCSAgICBB
Q19NU0dfUkVTVUxUKG5vKSAKLSsJCQkJCUFDX01TR19FUlJPUihbKiogSW5jb21wbGV0ZSBv
ciBtaXNzaW5nIGxkYXAgbGlicmFyaWVzICoqXSkKLSsJCQkJXQotKyAgICAgICAgCSkKLSsJ
CWZpCi0rCV0KLSspCi0rCi0gZG5sICAgIENoZWNrcyBmb3IgbGlicmFyeSBmdW5jdGlvbnMu
IFBsZWFzZSBrZWVwIGluIGFscGhhYmV0aWNhbCBvcmRlcgotIEFDX0NIRUNLX0ZVTkNTKCBc
Ci0gCWFyYzRyYW5kb20gXAotQEAgLTQxMzcsNiArNDE2OCw3IEBACi0gZWNobyAiICAgICAg
ICAgICAgICAgICBTbWFydGNhcmQgc3VwcG9ydDogJFNDQVJEX01TRyIKLSBlY2hvICIgICAg
ICAgICAgICAgICAgICAgICBTL0tFWSBzdXBwb3J0OiAkU0tFWV9NU0ciCi0gZWNobyAiICAg
ICAgICAgICAgICBUQ1AgV3JhcHBlcnMgc3VwcG9ydDogJFRDUFdfTVNHIgotK2VjaG8gIiAg
ICAgICAgICAgICAgICAgICAgICBMREFQIHN1cHBvcnQ6ICRMREFQX01TRyIKLSBlY2hvICIg
ICAgICAgICAgICAgIE1ENSBwYXNzd29yZCBzdXBwb3J0OiAkTUQ1X01TRyIKLSBlY2hvICIg
ICAgICAgICAgICAgICAgICAgbGliZWRpdCBzdXBwb3J0OiAkTElCRURJVF9NU0ciCi0gZWNo
byAiICBTb2xhcmlzIHByb2Nlc3MgY29udHJhY3Qgc3VwcG9ydDogJFNQQ19NU0ciCi1kaWZm
IC1OdWFyIC0tZXhjbHVkZSAnKi5vcmlnJyAtLWV4Y2x1ZGUgJyoucmVqJyBsZGFwYXV0aC5j
IGxkYXBhdXRoLmMKLS0tLSBsZGFwYXV0aC5jCTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAw
MDAwIC0wODAwCi0rKysgbGRhcGF1dGguYwkyMDA4LTA4LTIzIDE1OjAyOjQ3LjAwMDAwMDAw
MCAtMDcwMAotQEAgLTAsMCArMSw1NzUgQEAKLSsvKiAKLSsgKiAkSWQ6IG9wZW5zc2gtbHBr
LTQuM3AxLTAuMy43LnBhdGNoLHYgMS4zIDIwMDYvMDQvMTggMTU6Mjk6MDkgZWF1IEV4cCAk
Ci0rICovCi0rCi0rLyoKLSsgKgotKyAqIENvcHlyaWdodCAoYykgMjAwNSwgRXJpYyBBVUdF
IDxlYXVAcGhlYXIub3JnPgotKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICoKLSsgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Ci0rICoKLSsgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0rICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
KyAqIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIHBoZWFyLm9yZyBub3IgdGhlIG5hbWVzIG9m
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotKyAqCi0rICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgCi0r
ICogQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIAotKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgCi0rICogT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgCi0rICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCAKLSsgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotKyAqCi0rICoKLSsgKi8KLSsKLSsjaW5jbHVkZSAiaW5jbHVkZXMuaCIKLSsK
LSsjaWZkZWYgV0lUSF9MREFQX1BVQktFWQotKwotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNp
bmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgPHN0
cmluZy5oPgotKwotKyNpbmNsdWRlICJsZGFwYXV0aC5oIgotKyNpbmNsdWRlICJsb2cuaCIK
LSsKLStzdGF0aWMgY2hhciAqYXR0cnNbXSA9IHsKLSsgICAgUFVCS0VZQVRUUiwKLSsgICAg
TlVMTAotK307Ci0rCi0rLyogZmlsdGVyIGJ1aWxkaW5nIGluZm9zICovCi0rI2RlZmluZSBG
SUxURVJfR1JPVVBfUFJFRklYICIoJihvYmplY3RjbGFzcz1wb3NpeEdyb3VwKSIKLSsjZGVm
aW5lIEZJTFRFUl9PUl9QUkVGSVggIih8IgotKyNkZWZpbmUgRklMVEVSX09SX1NVRkZJWCAi
KSIKLSsjZGVmaW5lIEZJTFRFUl9DTl9QUkVGSVggIihjbj0iCi0rI2RlZmluZSBGSUxURVJf
Q05fU1VGRklYICIpIgotKyNkZWZpbmUgRklMVEVSX1VJRF9GT1JNQVQgIihtZW1iZXJVaWQ9
JXMpIgotKyNkZWZpbmUgRklMVEVSX0dST1VQX1NVRkZJWCAiKSIKLSsjZGVmaW5lIEZJTFRF
Ul9HUk9VUF9TSVpFKGdyb3VwKSAoc2l6ZV90KSAoc3RybGVuKGdyb3VwKSsobGRhcF9jb3Vu
dF9ncm91cChncm91cCkqNSkrNTIpCi0rCi0rLyoganVzdCBmaWx0ZXIgYnVpbGRpbmcgc3R1
ZmYgKi8KLSsjZGVmaW5lIFJFUVVFU1RfR1JPVVBfU0laRShmaWx0ZXIsIHVpZCkgKHNpemVf
dCkgKHN0cmxlbihmaWx0ZXIpK3N0cmxlbih1aWQpKzEpCi0rI2RlZmluZSBSRVFVRVNUX0dS
T1VQKGJ1ZmZlciwgcHJlZmlsdGVyLCBwd25hbWUpIFwKLSsgICAgYnVmZmVyID0gKGNoYXIg
KikgY2FsbG9jKFJFUVVFU1RfR1JPVVBfU0laRShwcmVmaWx0ZXIsIHB3bmFtZSksIHNpemVv
ZihjaGFyKSk7IFwKLSsgICAgaWYgKCFidWZmZXIpIHsgXAotKyAgICAgICAgcGVycm9yKCJj
YWxsb2MoKSIpOyBcCi0rICAgICAgICByZXR1cm4gRkFJTFVSRTsgXAotKyAgICB9IFwKLSsg
ICAgc25wcmludGYoYnVmZmVyLCBSRVFVRVNUX0dST1VQX1NJWkUocHJlZmlsdGVyLHB3bmFt
ZSksIHByZWZpbHRlciwgcHduYW1lKQotKy8qCi0rWFhYIE9MRCBncm91cCBidWlsZGluZyBt
YWNyb3MKLSsjZGVmaW5lIFJFUVVFU1RfR1JPVVBfU0laRShncnAsIHVpZCkgKHNpemVfdCkg
KHN0cmxlbihncnApK3N0cmxlbih1aWQpKzQ2KQotKyNkZWZpbmUgUkVRVUVTVF9HUk9VUChi
dWZmZXIscHduYW1lLGdycCkgXAotKyAgICBidWZmZXIgPSAoY2hhciAqKSBjYWxsb2MoUkVR
VUVTVF9HUk9VUF9TSVpFKGdycCwgcHduYW1lKSwgc2l6ZW9mKGNoYXIpKTsgXAotKyAgICBp
ZiAoIWJ1ZmZlcikgeyBcCi0rICAgICAgICBwZXJyb3IoImNhbGxvYygpIik7IFwKLSsgICAg
ICAgIHJldHVybiBGQUlMVVJFOyBcCi0rICAgIH0gXAotKyAgICBzbnByaW50ZihidWZmZXIs
UkVRVUVTVF9HUk9VUF9TSVpFKGdycCxwd25hbWUpLCIoJihvYmplY3RjbGFzcz1wb3NpeEdy
b3VwKShjbj0lcykobWVtYmVyVWlkPSVzKSkiLGdycCxwd25hbWUpCi0rICAgICovCi0rCi0r
LyoKLStYWFggc3RvY2sgdXBzdHJlYW0gdmVyc2lvbiB3aXRob3V0IGV4dHJhIGZpbHRlciBz
dXBwb3J0Ci0rI2RlZmluZSBSRVFVRVNUX1VTRVJfU0laRSh1aWQpIChzaXplX3QpIChzdHJs
ZW4odWlkKSs2NCkKLSsjZGVmaW5lIFJFUVVFU1RfVVNFUihidWZmZXIsIHB3bmFtZSkgXAot
KyAgICBidWZmZXIgPSAoY2hhciAqKSBjYWxsb2MoUkVRVUVTVF9VU0VSX1NJWkUocHduYW1l
KSwgc2l6ZW9mKGNoYXIpKTsgXAotKyAgICBpZiAoIWJ1ZmZlcikgeyBcCi0rICAgICAgICBw
ZXJyb3IoImNhbGxvYygpIik7IFwKLSsgICAgICAgIHJldHVybiBOVUxMOyBcCi0rICAgIH0g
XAotKyAgICBzbnByaW50ZihidWZmZXIsUkVRVUVTVF9VU0VSX1NJWkUocHduYW1lKSwiKCYo
b2JqZWN0Y2xhc3M9cG9zaXhBY2NvdW50KShvYmplY3RjbGFzcz1sZGFwUHVibGljS2V5KSh1
aWQ9JXMpKSIscHduYW1lKQotKyAgICovCi0rCi0rI2RlZmluZSBSRVFVRVNUX1VTRVJfU0la
RSh1aWQsIGZpbHRlcikgKHNpemVfdCkgKHN0cmxlbih1aWQpKzY0KyhmaWx0ZXIgIT0gTlVM
TCA/IHN0cmxlbihmaWx0ZXIpIDogMCkpCi0rI2RlZmluZSBSRVFVRVNUX1VTRVIoYnVmZmVy
LCBwd25hbWUsIGN1c3RvbWZpbHRlcikgXAotKyAgICBidWZmZXIgPSAoY2hhciAqKSBjYWxs
b2MoUkVRVUVTVF9VU0VSX1NJWkUocHduYW1lLCBjdXN0b21maWx0ZXIpLCBzaXplb2YoY2hh
cikpOyBcCi0rICAgIGlmICghYnVmZmVyKSB7IFwKLSsgICAgICAgIHBlcnJvcigiY2FsbG9j
KCkiKTsgXAotKyAgICAgICAgcmV0dXJuIE5VTEw7IFwKLSsgICAgfSBcCi0rICAgIHNucHJp
bnRmKGJ1ZmZlciwgUkVRVUVTVF9VU0VSX1NJWkUocHduYW1lLCBjdXN0b21maWx0ZXIpLCBc
Ci0rICAgIAkiKCYob2JqZWN0Y2xhc3M9cG9zaXhBY2NvdW50KShvYmplY3RjbGFzcz1sZGFw
UHVibGljS2V5KSh1aWQ9JXMpJXMpIiwgXAotKwlwd25hbWUsIChjdXN0b21maWx0ZXIgIT0g
TlVMTCA/IGN1c3RvbWZpbHRlciA6ICIiKSkKLSsKLSsvKiBzb21lIHBvcnRhYmxlIGFuZCB3
b3JraW5nIHRva2VuaXplciwgbGFtZSB0aG91Z2ggKi8KLStzdGF0aWMgaW50IHRva2VuaXpl
KGNoYXIgKiogbywgc2l6ZV90IHNpemUsIGNoYXIgKiBpbnB1dCkgewotKyAgICB1bnNpZ25l
ZCBpbnQgaSA9IDAsIG51bTsKLSsgICAgY29uc3QgY2hhciAqIGNoYXJzZXQgPSAiIFx0IjsK
LSsgICAgY2hhciAqIHB0ciA9IGlucHV0OwotKwotKyAgICAvKiBsZWFkaW5nIHdoaXRlIHNw
YWNlcyBhcmUgaWdub3JlZCAqLwotKyAgICBudW0gPSBzdHJzcG4ocHRyLCBjaGFyc2V0KTsK
LSsgICAgcHRyICs9IG51bTsKLSsKLSsgICAgd2hpbGUgKChudW0gPSBzdHJjc3BuKHB0ciwg
Y2hhcnNldCkpKSB7Ci0rICAgICAgICBpZiAoaSA8IHNpemUtMSkgewotKyAgICAgICAgICAg
IG9baSsrXSA9IHB0cjsKLSsgICAgICAgICAgICBwdHIgKz0gbnVtOwotKyAgICAgICAgICAg
IGlmICgqcHRyKQotKyAgICAgICAgICAgICAgICAqcHRyKysgPSAnXDAnOwotKyAgICAgICAg
fQotKyAgICB9Ci0rICAgIG9baV0gPSBOVUxMOwotKyAgICByZXR1cm4gU1VDQ0VTUzsKLSt9
Ci0rCi0rdm9pZCBsZGFwX2Nsb3NlKGxkYXBfb3B0X3QgKiBsZGFwKSB7Ci0rCi0rICAgIGlm
ICghbGRhcCkKLSsgICAgICAgIHJldHVybjsKLSsKLSsgICAgaWYgKCBsZGFwX3VuYmluZF9l
eHQobGRhcC0+bGQsIE5VTEwsIE5VTEwpIDwgMCkKLSsJbGRhcF9wZXJyb3IobGRhcC0+bGQs
ICJsZGFwX3VuYmluZCgpIik7Ci0rCi0rICAgIGxkYXAtPmxkID0gTlVMTDsKLSsgICAgRkxB
R19TRVRfRElTQ09OTkVDVEVEKGxkYXAtPmZsYWdzKTsKLSsKLSsgICAgcmV0dXJuOwotK30K
LSsKLSsvKiBpbml0ICYmIGJpbmQgKi8KLStpbnQgbGRhcF9jb25uZWN0KGxkYXBfb3B0X3Qg
KiBsZGFwKSB7Ci0rICAgIGludCB2ZXJzaW9uID0gTERBUF9WRVJTSU9OMzsKLSsKLSsgICAg
aWYgKCFsZGFwLT5zZXJ2ZXJzKQotKyAgICAgICAgcmV0dXJuIEZBSUxVUkU7Ci0rCi0rICAg
IC8qIENvbm5lY3Rpb24gSW5pdCBhbmQgc2V0dXAgKi8KLSsgICAgbGRhcC0+bGQgPSBsZGFw
X2luaXQobGRhcC0+c2VydmVycywgTERBUF9QT1JUKTsKLSsgICAgaWYgKCFsZGFwLT5sZCkg
ewotKyAgICAgICAgbGRhcF9wZXJyb3IobGRhcC0+bGQsICJsZGFwX2luaXQoKSIpOwotKyAg
ICAgICAgcmV0dXJuIEZBSUxVUkU7Ci0rICAgIH0KLSsKLSsgICAgaWYgKCBsZGFwX3NldF9v
cHRpb24obGRhcC0+bGQsIExEQVBfT1BUX1BST1RPQ09MX1ZFUlNJT04sICZ2ZXJzaW9uKSAh
PSBMREFQX09QVF9TVUNDRVNTKSB7Ci0rICAgICAgICBsZGFwX3BlcnJvcihsZGFwLT5sZCwg
ImxkYXBfc2V0X29wdGlvbihMREFQX09QVF9QUk9UT0NPTF9WRVJTSU9OKSIpOwotKyAgICAg
ICAgcmV0dXJuIEZBSUxVUkU7Ci0rICAgIH0KLSsKLSsgICAgLyogVGltZW91dHMgc2V0dXAg
Ki8KLSsgICAgaWYgKGxkYXBfc2V0X29wdGlvbihsZGFwLT5sZCwgTERBUF9PUFRfTkVUV09S
S19USU1FT1VULCAmbGRhcC0+Yl90aW1lb3V0KSAhPSBMREFQX1NVQ0NFU1MpIHsKLSsgICAg
ICAgIGxkYXBfcGVycm9yKGxkYXAtPmxkLCAibGRhcF9zZXRfb3B0aW9uKExEQVBfT1BUX05F
VFdPUktfVElNRU9VVCkiKTsKLSsgICAgfQotKyAgICBpZiAobGRhcF9zZXRfb3B0aW9uKGxk
YXAtPmxkLCBMREFQX09QVF9USU1FT1VULCAmbGRhcC0+c190aW1lb3V0KSAhPSBMREFQX1NV
Q0NFU1MpIHsKLSsgICAgICAgIGxkYXBfcGVycm9yKGxkYXAtPmxkLCAibGRhcF9zZXRfb3B0
aW9uKExEQVBfT1BUX1RJTUVPVVQpIik7Ci0rICAgIH0KLSsKLSsgICAgLyogVExTIHN1cHBv
cnQgKi8KLSsgICAgaWYgKCAobGRhcC0+dGxzID09IC0xKSB8fCAobGRhcC0+dGxzID09IDEp
ICkgewotKyAgICAgICAgaWYgKGxkYXBfc3RhcnRfdGxzX3MobGRhcC0+bGQsIE5VTEwsIE5V
TEwgKSAhPSBMREFQX1NVQ0NFU1MpIHsKLSsgICAgICAgICAgICAvKiBmYWlsZWQgdGhlbiBy
ZWluaXQgdGhlIGluaXRpYWwgY29ubmVjdCAqLwotKyAgICAgICAgICAgIGxkYXBfcGVycm9y
KGxkYXAtPmxkLCAibGRhcF9jb25uZWN0OiAoVExTKSBsZGFwX3N0YXJ0X3RscygpIik7Ci0r
ICAgICAgICAgICAgaWYgKGxkYXAtPnRscyA9PSAxKQotKyAgICAgICAgICAgICAgICByZXR1
cm4gRkFJTFVSRTsKLSsKLSsgICAgICAgICAgICBsZGFwLT5sZCA9IGxkYXBfaW5pdChsZGFw
LT5zZXJ2ZXJzLCBMREFQX1BPUlQpOwotKyAgICAgICAgICAgIGlmICghbGRhcC0+bGQpIHsg
Ci0rICAgICAgICAgICAgICAgIGxkYXBfcGVycm9yKGxkYXAtPmxkLCAibGRhcF9pbml0KCki
KTsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIEZBSUxVUkU7Ci0rICAgICAgICAgICAgfQot
KwotKyAgICAgICAgICAgIGlmICggbGRhcF9zZXRfb3B0aW9uKGxkYXAtPmxkLCBMREFQX09Q
VF9QUk9UT0NPTF9WRVJTSU9OLCAmdmVyc2lvbikgIT0gTERBUF9PUFRfU1VDQ0VTUykgewot
KyAgICAgICAgICAgICAgICAgbGRhcF9wZXJyb3IobGRhcC0+bGQsICJsZGFwX3NldF9vcHRp
b24oKSIpOwotKyAgICAgICAgICAgICAgICAgcmV0dXJuIEZBSUxVUkU7Ci0rICAgICAgICAg
ICAgfQotKyAgICAgICAgfQotKyAgICB9Ci0rCi0rCi0rICAgIGlmICggbGRhcF9zaW1wbGVf
YmluZF9zKGxkYXAtPmxkLCBsZGFwLT5iaW5kZG4sIGxkYXAtPmJpbmRwdykgIT0gTERBUF9T
VUNDRVNTKSB7Ci0rICAgICAgICBsZGFwX3BlcnJvcihsZGFwLT5sZCwgImxkYXBfc2ltcGxl
X2JpbmRfcygpIik7Ci0rICAgICAgICByZXR1cm4gRkFJTFVSRTsKLSsgICAgfQotKwotKyAg
ICAvKiBzYXlzIGl0IGlzIGNvbm5lY3RlZCAqLwotKyAgICBGTEFHX1NFVF9DT05ORUNURUQo
bGRhcC0+ZmxhZ3MpOwotKwotKyAgICByZXR1cm4gU1VDQ0VTUzsKLSt9Ci0rCi0rLyogbXVz
dCBmcmVlIGFsbG9jYXRlZCByZXNzb3VyY2UgKi8KLStzdGF0aWMgY2hhciAqIGxkYXBfYnVp
bGRfaG9zdChjaGFyICpob3N0LCBpbnQgcG9ydCkgewotKyAgICB1bnNpZ25lZCBpbnQgc2l6
ZSA9IHN0cmxlbihob3N0KSsxMTsKLSsgICAgY2hhciAqIGggPSAoY2hhciAqKSBjYWxsb2Mg
KHNpemUsIHNpemVvZihjaGFyKSk7Ci0rICAgIGludCByYzsKLSsgICAgaWYgKCFoKQotKyAg
ICAgICAgIHJldHVybiBOVUxMOwotKwotKyAgICByYyA9IHNucHJpbnRmKGgsIHNpemUsICIl
czolZCAiLCBob3N0LCBwb3J0KTsKLSsgICAgaWYgKHJjID09IC0xKQotKyAgICAgICAgcmV0
dXJuIE5VTEw7Ci0rICAgIHJldHVybiBoOwotK30KLSsKLStzdGF0aWMgaW50IGxkYXBfY291
bnRfZ3JvdXAoY29uc3QgY2hhciAqIGlucHV0KSB7Ci0rICAgIGNvbnN0IGNoYXIgKiBjaGFy
c2V0ID0gIiBcdCI7Ci0rICAgIGNvbnN0IGNoYXIgKiBwdHIgPSBpbnB1dDsKLSsgICAgdW5z
aWduZWQgaW50IGNvdW50ID0gMDsKLSsgICAgdW5zaWduZWQgaW50IG51bTsKLSsKLSsgICAg
bnVtID0gc3Ryc3BuKHB0ciwgY2hhcnNldCk7Ci0rICAgIHB0ciArPSBudW07Ci0rCi0rICAg
IHdoaWxlICgobnVtID0gc3RyY3NwbihwdHIsIGNoYXJzZXQpKSkgewotKyAgICBjb3VudCsr
OwotKyAgICBwdHIgKz0gbnVtOwotKyAgICBwdHIrKzsKLSsgICAgfQotKwotKyAgICByZXR1
cm4gY291bnQ7Ci0rfQotKwotKy8qIGZvcm1hdCBmaWx0ZXIgKi8KLStjaGFyICogbGRhcF9w
YXJzZV9ncm91cHMoY29uc3QgY2hhciAqIGdyb3VwcykgewotKyAgICB1bnNpZ25lZCBpbnQg
YnVmZmVyX3NpemUgPSBGSUxURVJfR1JPVVBfU0laRShncm91cHMpOwotKyAgICBjaGFyICog
YnVmZmVyID0gKGNoYXIgKikgY2FsbG9jKGJ1ZmZlcl9zaXplLCBzaXplb2YoY2hhcikpOwot
KyAgICBjaGFyICogZyA9IE5VTEw7Ci0rICAgIGNoYXIgKiBnYXJyYXlbMzJdOwotKyAgICB1
bnNpZ25lZCBpbnQgaSA9IDA7Ci0rCi0rICAgIGlmICgoIWdyb3Vwcyl8fCghYnVmZmVyKSkK
LSsgICAgICAgIHJldHVybiBOVUxMOwotKwotKyAgICBnID0gc3RyZHVwKGdyb3Vwcyk7Ci0r
ICAgIGlmICghZykgewotKyAgICAgICAgZnJlZShidWZmZXIpOwotKyAgICAgICAgcmV0dXJu
IE5VTEw7Ci0rICAgIH0KLSsKLSsgICAgLyogZmlyc3Qgc2VwYXJhdGUgaW50byBuIHRva2Vu
cyAqLwotKyAgICBpZiAoIHRva2VuaXplKGdhcnJheSwgc2l6ZW9mKGdhcnJheSkvc2l6ZW9m
KCpnYXJyYXkpLCBnKSA8IDApIHsKLSsgICAgICAgIGZyZWUoZyk7Ci0rICAgICAgICBmcmVl
KGJ1ZmZlcik7Ci0rICAgICAgICByZXR1cm4gTlVMTDsKLSsgICAgfQotKwotKyAgICAvKiBi
dWlsZCB0aGUgZmluYWwgZmlsdGVyIGZvcm1hdCAqLwotKyAgICBzdHJsY2F0KGJ1ZmZlciwg
RklMVEVSX0dST1VQX1BSRUZJWCwgYnVmZmVyX3NpemUpOwotKyAgICBzdHJsY2F0KGJ1ZmZl
ciwgRklMVEVSX09SX1BSRUZJWCwgYnVmZmVyX3NpemUpOwotKyAgICBpID0gMDsKLSsgICAg
d2hpbGUgKGdhcnJheVtpXSkgewotKyAgICAgICAgc3RybGNhdChidWZmZXIsIEZJTFRFUl9D
Tl9QUkVGSVgsIGJ1ZmZlcl9zaXplKTsKLSsgICAgICAgIHN0cmxjYXQoYnVmZmVyLCBnYXJy
YXlbaV0sIGJ1ZmZlcl9zaXplKTsKLSsgICAgICAgIHN0cmxjYXQoYnVmZmVyLCBGSUxURVJf
Q05fU1VGRklYLCBidWZmZXJfc2l6ZSk7Ci0rICAgICAgICBpKys7Ci0rICAgIH0KLSsgICAg
c3RybGNhdChidWZmZXIsIEZJTFRFUl9PUl9TVUZGSVgsIGJ1ZmZlcl9zaXplKTsKLSsgICAg
c3RybGNhdChidWZmZXIsIEZJTFRFUl9VSURfRk9STUFULCBidWZmZXJfc2l6ZSk7Ci0rICAg
IHN0cmxjYXQoYnVmZmVyLCBGSUxURVJfR1JPVVBfU1VGRklYLCBidWZmZXJfc2l6ZSk7Ci0r
Ci0rICAgIGZyZWUoZyk7Ci0rICAgIHJldHVybiBidWZmZXI7Ci0rfQotKwotKy8qIGEgYml0
IGRpcnR5IGJ1dCBsZWFrIGZyZWUgICovCi0rY2hhciAqIGxkYXBfcGFyc2Vfc2VydmVycyhj
b25zdCBjaGFyICogc2VydmVycykgewotKyAgICBjaGFyICogcyA9IE5VTEw7Ci0rICAgIGNo
YXIgKiB0bXAgPSBOVUxMLCAqdXJsc1szMl07Ci0rICAgIHVuc2lnbmVkIGludCBudW0gPSAw
ICwgaSA9IDAgLCBhc2l6ZSA9IDA7Ci0rICAgIExEQVBVUkxEZXNjICp1cmxkWzMyXTsKLSsK
LSsgICAgaWYgKCFzZXJ2ZXJzKQotKyAgICAgICAgcmV0dXJuIE5VTEw7Ci0rCi0rICAgIC8q
IGxvY2FsIGNvcHkgb2YgdGhlIGFyZyAqLwotKyAgICBzID0gc3RyZHVwKHNlcnZlcnMpOwot
KyAgICBpZiAoIXMpCi0rICAgICAgICByZXR1cm4gTlVMTDsKLSsKLSsgICAgLyogZmlyc3Qg
c2VwYXJhdGUgaW50byBVUkwgdG9rZW5zICovCi0rICAgIGlmICggdG9rZW5pemUodXJscywg
c2l6ZW9mKHVybHMpL3NpemVvZigqdXJscyksIHMpIDwgMCkKLSsgICAgICAgIHJldHVybiBO
VUxMOwotKwotKyAgICBpID0gMDsKLSsgICAgd2hpbGUgKHVybHNbaV0pIHsKLSsgICAgICAg
IGlmICghIGxkYXBfaXNfbGRhcF91cmwodXJsc1tpXSkgfHwKLSsgICAgICAgICAgIChsZGFw
X3VybF9wYXJzZSh1cmxzW2ldLCAmdXJsZFtpXSkgIT0gMCkpIHsKLSsgICAgICAgICAgICAg
ICAgcmV0dXJuIE5VTEw7Ci0rICAgICAgICB9Ci0rICAgICAgICBpKys7Ci0rICAgIH0KLSsK
LSsgICAgLyogbm93IGZyZWUocykgKi8KLSsgICAgZnJlZSAocyk7Ci0rCi0rICAgIC8qIGhv
dyBtdWNoIG1lbW9yeSBkbyB3ZSBuZWVkICovCi0rICAgIG51bSA9IGk7Ci0rICAgIGZvciAo
aSA9IDAgOyBpIDwgbnVtIDsgaSsrKQotKyAgICAgICAgYXNpemUgKz0gc3RybGVuKHVybGRb
aV0tPmx1ZF9ob3N0KSsxMTsKLSsKLSsgICAgLyogYWxsb2MgKi8KLSsgICAgcyA9IChjaGFy
ICopIGNhbGxvYyggYXNpemUrMSAsIHNpemVvZihjaGFyKSk7Ci0rICAgIGlmICghcykgewot
KyAgICAgICAgZm9yIChpID0gMCA7IGkgPCBudW0gOyBpKyspCi0rICAgICAgICAgICAgbGRh
cF9mcmVlX3VybGRlc2ModXJsZFtpXSk7Ci0rICAgICAgICByZXR1cm4gTlVMTDsKLSsgICAg
fQotKwotKyAgICAvKiB0aGVuIGJ1aWxkIHRoZSBmaW5hbCBob3N0IHN0cmluZyAqLwotKyAg
ICBmb3IgKGkgPSAwIDsgaSA8IG51bSA7IGkrKykgewotKyAgICAgICAgLyogYnVpbHQgaG9z
dCBwYXJ0ICovCi0rICAgICAgICB0bXAgPSBsZGFwX2J1aWxkX2hvc3QodXJsZFtpXS0+bHVk
X2hvc3QsIHVybGRbaV0tPmx1ZF9wb3J0KTsKLSsgICAgICAgIHN0cm5jYXQocywgdG1wLCBz
dHJsZW4odG1wKSk7Ci0rICAgICAgICBsZGFwX2ZyZWVfdXJsZGVzYyh1cmxkW2ldKTsKLSsg
ICAgICAgIGZyZWUodG1wKTsKLSsgICAgfQotKwotKyAgICByZXR1cm4gczsKLSt9Ci0rCi0r
dm9pZCBsZGFwX29wdGlvbnNfcHJpbnQobGRhcF9vcHRfdCAqIGxkYXApIHsKLSsgICAgZGVi
dWcoImxkYXAgb3B0aW9uczoiKTsKLSsgICAgZGVidWcoInNlcnZlcnM6ICVzIiwgbGRhcC0+
c2VydmVycyk7Ci0rICAgIGlmIChsZGFwLT51X2Jhc2VkbikKLSsgICAgICAgIGRlYnVnKCJ1
c2VyIGJhc2VkbjogJXMiLCBsZGFwLT51X2Jhc2Vkbik7Ci0rICAgIGlmIChsZGFwLT5nX2Jh
c2VkbikKLSsgICAgICAgIGRlYnVnKCJncm91cCBiYXNlZG46ICVzIiwgbGRhcC0+Z19iYXNl
ZG4pOwotKyAgICBpZiAobGRhcC0+YmluZGRuKQotKyAgICAgICAgZGVidWcoImJpbmRkbjog
JXMiLCBsZGFwLT5iaW5kZG4pOwotKyAgICBpZiAobGRhcC0+YmluZHB3KQotKyAgICAgICAg
ZGVidWcoImJpbmRwdzogJXMiLCBsZGFwLT5iaW5kcHcpOwotKyAgICBpZiAobGRhcC0+c2dy
b3VwKQotKyAgICAgICAgZGVidWcoImdyb3VwOiAlcyIsIGxkYXAtPnNncm91cCk7Ci0rICAg
IGlmIChsZGFwLT5maWx0ZXIpCi0rICAgICAgICBkZWJ1ZygiZmlsdGVyOiAlcyIsIGxkYXAt
PmZpbHRlcik7Ci0rfQotKwotK3ZvaWQgbGRhcF9vcHRpb25zX2ZyZWUobGRhcF9vcHRfdCAq
IGwpIHsKLSsgICAgaWYgKCFsKQotKyAgICAgICAgcmV0dXJuOwotKyAgICBpZiAobC0+c2Vy
dmVycykKLSsgICAgICAgIGZyZWUobC0+c2VydmVycyk7Ci0rICAgIGlmIChsLT51X2Jhc2Vk
bikKLSsgICAgICAgIGZyZWUobC0+dV9iYXNlZG4pOwotKyAgICBpZiAobC0+Z19iYXNlZG4p
Ci0rICAgICAgICBmcmVlKGwtPmdfYmFzZWRuKTsKLSsgICAgaWYgKGwtPmJpbmRkbikKLSsg
ICAgICAgIGZyZWUobC0+YmluZGRuKTsKLSsgICAgaWYgKGwtPmJpbmRwdykKLSsgICAgICAg
IGZyZWUobC0+YmluZHB3KTsKLSsgICAgaWYgKGwtPnNncm91cCkKLSsgICAgICAgIGZyZWUo
bC0+c2dyb3VwKTsKLSsgICAgaWYgKGwtPmZncm91cCkKLSsgICAgICAgIGZyZWUobC0+Zmdy
b3VwKTsKLSsgICAgaWYgKGwtPmZpbHRlcikKLSsgICAgICAgIGZyZWUobC0+ZmlsdGVyKTsK
LSsgICAgaWYgKGwtPmxfY29uZikKLSsgICAgICAgIGZyZWUobC0+bF9jb25mKTsKLSsgICAg
ZnJlZShsKTsKLSt9Ci0rCi0rLyogZnJlZSBrZXlzICovCi0rdm9pZCBsZGFwX2tleXNfZnJl
ZShsZGFwX2tleV90ICogaykgewotKyAgICBsZGFwX3ZhbHVlX2ZyZWVfbGVuKGstPmtleXMp
OwotKyAgICBmcmVlKGspOwotKyAgICByZXR1cm47Ci0rfQotKwotK2xkYXBfa2V5X3QgKiBs
ZGFwX2dldHVzZXJrZXkobGRhcF9vcHRfdCAqbCwgY29uc3QgY2hhciAqIHVzZXIpIHsKLSsg
ICAgbGRhcF9rZXlfdCAqIGsgPSAobGRhcF9rZXlfdCAqKSBjYWxsb2MgKDEsIHNpemVvZihs
ZGFwX2tleV90KSk7Ci0rICAgIExEQVBNZXNzYWdlICpyZXMsICplOwotKyAgICBjaGFyICog
ZmlsdGVyOwotKyAgICBpbnQgaTsKLSsKLSsgICAgaWYgKCghaykgfHwgKCFsKSkKLSsgICAg
ICAgICByZXR1cm4gTlVMTDsKLSsKLSsgICAgLyogQW0gaSBzdGlsbCBjb25uZWN0ZWQgPyBS
RVRSWSBuIHRpbWVzICovCi0rICAgIC8qIFhYWCBUT0RPOiBzZXR1cCBzb21lIGNvbmYgdmFs
dWUgZm9yIHJldHJ5aW5nICovCi0rICAgIGlmICghKGwtPmZsYWdzICYgRkxBR19DT05ORUNU
RUQpKQotKyAgICAgICAgZm9yIChpID0gMCA7IGkgPCAyIDsgaSsrKQotKyAgICAgICAgICAg
IGlmIChsZGFwX2Nvbm5lY3QobCkgPT0gMCkKLSsgICAgICAgICAgICAgICAgYnJlYWs7Ci0r
Ci0rICAgIC8qIHF1aWNrIGNoZWNrIGZvciBhdHRlbXB0cyB0byBiZSBldmlsICovCi0rICAg
IGlmICgoc3RyY2hyKHVzZXIsICcoJykgIT0gTlVMTCkgfHwgKHN0cmNocih1c2VyLCAnKScp
ICE9IE5VTEwpIHx8Ci0rICAgICAgICAoc3RyY2hyKHVzZXIsICcqJykgIT0gTlVMTCkgfHwg
KHN0cmNocih1c2VyLCAnXFwnKSAhPSBOVUxMKSkKLSsgICAgICAgIHJldHVybiBOVUxMOwot
KwotKyAgICAvKiBidWlsZCAgZmlsdGVyIGZvciBMREFQIHJlcXVlc3QgKi8KLSsgICAgUkVR
VUVTVF9VU0VSKGZpbHRlciwgdXNlciwgbC0+ZmlsdGVyKTsKLSsKLSsgICAgaWYgKCBsZGFw
X3NlYXJjaF9zdCggbC0+bGQsCi0rICAgICAgICBsLT51X2Jhc2VkbiwKLSsgICAgICAgIExE
QVBfU0NPUEVfU1VCVFJFRSwKLSsgICAgICAgIGZpbHRlciwKLSsgICAgICAgIGF0dHJzLCAw
LCAmbC0+c190aW1lb3V0LCAmcmVzICkgIT0gTERBUF9TVUNDRVNTKSB7Ci0rICAgICAgICAK
LSsgICAgICAgIGxkYXBfcGVycm9yKGwtPmxkLCAibGRhcF9zZWFyY2hfc3QoKSIpOwotKwot
KyAgICAgICAgZnJlZShmaWx0ZXIpOwotKyAgICAgICAgZnJlZShrKTsKLSsKLSsgICAgICAg
IC8qIFhYWCBlcnJvciBvbiBzZWFyY2gsIHRpbWVvdXQgZXRjLi4gY2xvc2UgYXNrIGZvciBy
ZWNvbm5lY3QgKi8KLSsgICAgICAgIGxkYXBfY2xvc2UobCk7Ci0rCi0rICAgICAgICByZXR1
cm4gTlVMTDsKLSsgICAgfSAKLSsKLSsgICAgLyogZnJlZSAqLwotKyAgICBmcmVlKGZpbHRl
cik7Ci0rCi0rICAgIC8qIGNoZWNrIGlmIGFueSByZXN1bHRzICovCi0rICAgIGkgPSBsZGFw
X2NvdW50X2VudHJpZXMobC0+bGQscmVzKTsKLSsgICAgaWYgKGkgPD0gMCkgewotKyAgICAg
ICAgbGRhcF9tc2dmcmVlKHJlcyk7Ci0rICAgICAgICBmcmVlKGspOwotKyAgICAgICAgcmV0
dXJuIE5VTEw7Ci0rICAgIH0KLSsKLSsgICAgaWYgKGkgPiAxKQotKyAgICAgICAgZGVidWco
IltMREFQXSBkdXBsaWNhdGUgZW50cmllcywgdXNpbmcgdGhlIEZJUlNUIGVudHJ5IHJldHVy
bmVkIik7Ci0rCi0rICAgIGUgPSBsZGFwX2ZpcnN0X2VudHJ5KGwtPmxkLCByZXMpOwotKyAg
ICBrLT5rZXlzID0gbGRhcF9nZXRfdmFsdWVzX2xlbihsLT5sZCwgZSwgUFVCS0VZQVRUUik7
Ci0rICAgIGstPm51bSA9IGxkYXBfY291bnRfdmFsdWVzX2xlbihrLT5rZXlzKTsKLSsKLSsg
ICAgbGRhcF9tc2dmcmVlKHJlcyk7Ci0rICAgIHJldHVybiBrOwotK30KLSsKLSsKLSsvKiAt
MSBpZiB0cm91YmxlCi0rICAgMCBpZiB1c2VyIGlzIE5PVCBtZW1iZXIgb2YgY3VycmVudCBz
ZXJ2ZXIgZ3JvdXAKLSsgICAxIGlmIHVzZXIgSVMgTUVNQkVSIG9mIGN1cnJlbnQgc2VydmVy
IGdyb3VwIAotKyAqLwotK2ludCBsZGFwX2lzbWVtYmVyKGxkYXBfb3B0X3QgKiBsLCBjb25z
dCBjaGFyICogdXNlcikgewotKyAgICBMREFQTWVzc2FnZSAqcmVzOwotKyAgICBjaGFyICog
ZmlsdGVyOwotKyAgICBpbnQgaTsKLSsKLSsgICAgaWYgKCghbC0+c2dyb3VwKSB8fCAhKGwt
PmdfYmFzZWRuKSkKLSsgICAgICAgIHJldHVybiAxOwotKwotKyAgICAvKiBBbSBpIHN0aWxs
IGNvbm5lY3RlZCA/IFJFVFJZIG4gdGltZXMgKi8KLSsgICAgLyogWFhYIFRPRE86IHNldHVw
IHNvbWUgY29uZiB2YWx1ZSBmb3IgcmV0cnlpbmcgKi8KLSsgICAgaWYgKCEobC0+ZmxhZ3Mg
JiBGTEFHX0NPTk5FQ1RFRCkpIAotKyAgICAgICAgZm9yIChpID0gMCA7IGkgPCAyIDsgaSsr
KQotKyAgICAgICAgICAgIGlmIChsZGFwX2Nvbm5lY3QobCkgPT0gMCkKLSsgICAgICAgICAg
ICAgICAgIGJyZWFrOwotKwotKyAgICAvKiBxdWljayBjaGVjayBmb3IgYXR0ZW1wdHMgdG8g
YmUgZXZpbCAqLwotKyAgICBpZiAoKHN0cmNocih1c2VyLCAnKCcpICE9IE5VTEwpIHx8IChz
dHJjaHIodXNlciwgJyknKSAhPSBOVUxMKSB8fAotKyAgICAgICAgKHN0cmNocih1c2VyLCAn
KicpICE9IE5VTEwpIHx8IChzdHJjaHIodXNlciwgJ1xcJykgIT0gTlVMTCkpCi0rICAgICAg
ICByZXR1cm4gRkFJTFVSRTsKLSsKLSsgICAgLyogYnVpbGQgZmlsdGVyIGZvciBMREFQIHJl
cXVlc3QgKi8KLSsgICAgUkVRVUVTVF9HUk9VUChmaWx0ZXIsIGwtPmZncm91cCwgdXNlcik7
Ci0rCi0rICAgIGlmIChsZGFwX3NlYXJjaF9zdCggbC0+bGQsIAotKyAgICAgICAgbC0+Z19i
YXNlZG4sCi0rICAgICAgICBMREFQX1NDT1BFX1NVQlRSRUUsCi0rICAgICAgICBmaWx0ZXIs
Ci0rICAgICAgICBOVUxMLCAwLCAmbC0+c190aW1lb3V0LCAmcmVzKSAhPSBMREFQX1NVQ0NF
U1MpIHsKLSsgICAgCi0rICAgICAgICBsZGFwX3BlcnJvcihsLT5sZCwgImxkYXBfc2VhcmNo
X3N0KCkiKTsKLSsKLSsgICAgICAgIGZyZWUoZmlsdGVyKTsKLSsKLSsgICAgICAgIC8qIFhY
WCBlcnJvciBvbiBzZWFyY2gsIHRpbWVvdXQgZXRjLi4gY2xvc2UgYXNrIGZvciByZWNvbm5l
Y3QgKi8KLSsgICAgICAgIGxkYXBfY2xvc2UobCk7Ci0rCi0rICAgICAgICByZXR1cm4gRkFJ
TFVSRTsKLSsgICAgfQotKwotKyAgICBmcmVlKGZpbHRlcik7Ci0rCi0rICAgIC8qIGNoZWNr
IGlmIGFueSByZXN1bHRzICovCi0rICAgIGlmIChsZGFwX2NvdW50X2VudHJpZXMobC0+bGQs
IHJlcykgPiAwKSB7Ci0rICAgICAgICBsZGFwX21zZ2ZyZWUocmVzKTsKLSsgICAgICAgIHJl
dHVybiAxOwotKyAgICB9Ci0rCi0rICAgIGxkYXBfbXNnZnJlZShyZXMpOwotKyAgICByZXR1
cm4gMDsKLSt9Ci0rCi0rLyoKLSsgKiBsZGFwLmNvbmYgc2ltcGxlIHBhcnNlcgotKyAqIFhY
WCBUT0RPOiAgc2FuaXR5IGNoZWNrcwotKyAqIG11c3QgZWl0aGVyCi0rICogLSBmcmVlIHRo
ZSBwcmV2aW91cyBsZGFwX29wdF9iZWZvcmUgcmVwbGFjaW5nIGVudHJpZXMKLSsgKiAtIGZy
ZWUgZWFjaCBuZWNlc3NhcnkgcHJldmlvdXNseSBwYXJzZWQgZWxlbWVudHMKLSsgKiByZXQ6
Ci0rICogLTEgb24gRkFJTFVSRSwgMCBvbiBTVUNDRVNTCi0rICovCi0raW50IGxkYXBfcGFy
c2VfbGNvbmYobGRhcF9vcHRfdCAqIGwpIHsKLSsgICAgRklMRSAqIGxjZDsgLyogbGRhcC5j
b25mIGRlc2NyaXB0b3IgKi8KLSsgICAgY2hhciBidWZbQlVGU0laXTsKLSsgICAgY2hhciAq
IHMgPSBOVUxMLCAqIGsgPSBOVUxMLCAqIHYgPSBOVUxMOwotKyAgICBpbnQgbGksIGxlbjsK
LSsKLSsgICAgbGNkID0gZm9wZW4gKGwtPmxfY29uZiwgInIiKTsKLSsgICAgaWYgKGxjZCA9
PSBOVUxMKSB7Ci0rICAgICAgICAvKiBkZWJ1ZygiQ2Fubm90IG9wZW4gJXMiLCBsLT5sX2Nv
bmYpOyAqLwotKyAgICAgICAgcGVycm9yKCJsZGFwX3BhcnNlX2xjb25mKCkiKTsKLSsgICAg
ICAgIHJldHVybiBGQUlMVVJFOwotKyAgICB9Ci0rICAgIAotKyAgICB3aGlsZSAoZmdldHMg
KGJ1Ziwgc2l6ZW9mIChidWYpLCBsY2QpICE9IE5VTEwpIHsKLSsKLSsgICAgICAgIGlmICgq
YnVmID09ICdcbicgfHwgKmJ1ZiA9PSAnIycpCi0rICAgICAgICAgICAgY29udGludWU7Ci0r
Ci0rICAgICAgICBrID0gYnVmOwotKyAgICAgICAgdiA9IGs7Ci0rICAgICAgICB3aGlsZSAo
KnYgIT0gJ1wwJyAmJiAqdiAhPSAnICcgJiYgKnYgIT0gJ1x0JykKLSsgICAgICAgICAgICB2
Kys7Ci0rCi0rICAgICAgICBpZiAoKnYgPT0gJ1wwJykKLSsgICAgICAgICAgICBjb250aW51
ZTsKLSsKLSsgICAgICAgICoodisrKSA9ICdcMCc7Ci0rCi0rICAgICAgICB3aGlsZSAoKnYg
PT0gJyAnIHx8ICp2ID09ICdcdCcpCi0rICAgICAgICAgICAgdisrOwotKwotKyAgICAgICAg
bGkgPSBzdHJsZW4gKHYpIC0gMTsKLSsgICAgICAgIHdoaWxlICh2W2xpXSA9PSAnICcgfHwg
dltsaV0gPT0gJ1x0JyB8fCB2W2xpXSA9PSAnXG4nKQotKyAgICAgICAgICAgIC0tbGk7Ci0r
ICAgICAgICB2W2xpICsgMV0gPSAnXDAnOwotKwotKyAgICAgICAgaWYgKCFzdHJjYXNlY21w
IChrLCAidXJpIikpIHsKLSsgICAgICAgICAgICBpZiAoKGwtPnNlcnZlcnMgPSBsZGFwX3Bh
cnNlX3NlcnZlcnModikpID09IE5VTEwpIHsKLSsgICAgICAgICAgICAgICAgZmF0YWwoImVy
cm9yIGluIGxkYXAgc2VydmVycyIpOwotKyAgICAgICAgICAgIHJldHVybiBGQUlMVVJFOwot
KyAgICAgICAgICAgIH0KLSsKLSsgICAgICAgIH0KLSsgICAgICAgIGVsc2UgaWYgKCFzdHJj
YXNlY21wIChrLCAiYmFzZSIpKSB7IAotKyAgICAgICAgICAgIHMgPSBzdHJjaHIgKHYsICc/
Jyk7Ci0rICAgICAgICAgICAgaWYgKHMgIT0gTlVMTCkgewotKyAgICAgICAgICAgICAgICBs
ZW4gPSBzIC0gdjsKLSsgICAgICAgICAgICAgICAgbC0+dV9iYXNlZG4gPSBtYWxsb2MgKGxl
biArIDEpOwotKyAgICAgICAgICAgICAgICBzdHJuY3B5IChsLT51X2Jhc2VkbiwgdiwgbGVu
KTsKLSsgICAgICAgICAgICAgICAgbC0+dV9iYXNlZG5bbGVuXSA9ICdcMCc7Ci0rICAgICAg
ICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICAgICAgbC0+dV9iYXNlZG4gPSBzdHJkdXAg
KHYpOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgIH0KLSsgICAgICAgIGVsc2UgaWYgKCFz
dHJjYXNlY21wIChrLCAiYmluZGRuIikpIHsKLSsgICAgICAgICAgICBsLT5iaW5kZG4gPSBz
dHJkdXAgKHYpOwotKyAgICAgICAgfQotKyAgICAgICAgZWxzZSBpZiAoIXN0cmNhc2VjbXAg
KGssICJiaW5kcHciKSkgewotKyAgICAgICAgICAgIGwtPmJpbmRwdyA9IHN0cmR1cCAodik7
Ci0rICAgICAgICB9Ci0rICAgICAgICBlbHNlIGlmICghc3RyY2FzZWNtcCAoaywgInRpbWVs
aW1pdCIpKSB7Ci0rICAgICAgICAgICAgbC0+c190aW1lb3V0LnR2X3NlYyA9IGF0b2kgKHYp
OwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICBlbHNlIGlmICghc3RyY2FzZWNtcCAo
aywgImJpbmRfdGltZWxpbWl0IikpIHsKLSsgICAgICAgICAgICBsLT5iX3RpbWVvdXQudHZf
c2VjID0gYXRvaSAodik7Ci0rICAgICAgICB9Ci0rICAgICAgICBlbHNlIGlmICghc3RyY2Fz
ZWNtcCAoaywgInNzbCIpKSB7Ci0rICAgICAgICAgICAgaWYgKCFzdHJjYXNlY21wICh2LCAi
c3RhcnRfdGxzIikpCi0rICAgICAgICAgICAgICAgIGwtPnRscyA9IDE7Ci0rICAgICAgICB9
Ci0rICAgIH0KLSsKLSsgICAgZmNsb3NlIChsY2QpOwotKyAgICByZXR1cm4gU1VDQ0VTUzsK
LSt9Ci0rCi0rI2VuZGlmIC8qIFdJVEhfTERBUF9QVUJLRVkgKi8KLWRpZmYgLU51YXIgLS1l
eGNsdWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIGxkYXBhdXRoLmggbGRhcGF1dGgu
aAotLS0tIGxkYXBhdXRoLmgJMTk2OS0xMi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDAK
LSsrKyBsZGFwYXV0aC5oCTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwCi1A
QCAtMCwwICsxLDEyNCBAQAotKy8qCi0rICogJElkOiBvcGVuc3NoLWxway00LjNwMS0wLjMu
Ny5wYXRjaCx2IDEuMyAyMDA2LzA0LzE4IDE1OjI5OjA5IGVhdSBFeHAgJCAKLSsgKi8KLSsK
LSsvKgotKyAqCi0rICogQ29weXJpZ2h0IChjKSAyMDA1LCBFcmljIEFVR0UgPGVhdUBwaGVh
ci5vcmc+Ci0rICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLSsgKgotKyAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSsg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0rICogTmVpdGhl
ciB0aGUgbmFtZSBvZiB0aGUgcGhlYXIub3JnIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0rICoKLSsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCAKLSsgKiBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
Ci0rICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCAKLSsgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyAKLSsgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIAotKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0r
ICoKLSsgKgotKyAqLwotKwotKyNpZm5kZWYgTERBUEFVVEhfSAotKyNkZWZpbmUgTERBUEFV
VEhfSAotKwotKyNkZWZpbmUgTERBUF9ERVBSRUNBVEVEIDEKLSsKLSsjaW5jbHVkZSA8c3Ry
aW5nLmg+Ci0rI2luY2x1ZGUgPHRpbWUuaD4KLSsjaW5jbHVkZSA8bGRhcC5oPgotKyNpbmNs
dWRlIDxsYmVyLmg+Ci0rCi0rLyogdG9rZW5zIGluIHVzZSBmb3IgY29uZmlnICovCi0rI2Rl
ZmluZSBfREVGQVVMVF9MUEtfVE9LRU4gIlVzZUxQSyIKLSsjZGVmaW5lIF9ERUZBVUxUX1NS
Vl9UT0tFTiAiTHBrU2VydmVycyIKLSsjZGVmaW5lIF9ERUZBVUxUX1VTUl9UT0tFTiAiTHBr
VXNlckROIgotKyNkZWZpbmUgX0RFRkFVTFRfR1JQX1RPS0VOICJMcGtHcm91cEROIgotKyNk
ZWZpbmUgX0RFRkFVTFRfQkROX1RPS0VOICJMcGtCaW5kRE4iCi0rI2RlZmluZSBfREVGQVVM
VF9CUFdfVE9LRU4gIkxwa0JpbmRQdyIKLSsjZGVmaW5lIF9ERUZBVUxUX01ZR19UT0tFTiAi
THBrU2VydmVyR3JvdXAiCi0rI2RlZmluZSBfREVGQVVMVF9GSUxfVE9LRU4gIkxwa0ZpbHRl
ciIKLSsjZGVmaW5lIF9ERUZBVUxUX1RMU19UT0tFTiAiTHBrRm9yY2VUTFMiCi0rI2RlZmlu
ZSBfREVGQVVMVF9CVElfVE9LRU4gIkxwa0JpbmRUaW1lbGltaXQiCi0rI2RlZmluZSBfREVG
QVVMVF9TVElfVE9LRU4gIkxwa1NlYXJjaFRpbWVsaW1pdCIKLSsjZGVmaW5lIF9ERUZBVUxU
X0xEUF9UT0tFTiAiTHBrTGRhcENvbmYiCi0rCi0rLyogZGVmYXVsdCBvcHRpb25zICovCi0r
I2RlZmluZSBfREVGQVVMVF9MUEtfT04gMAotKyNkZWZpbmUgX0RFRkFVTFRfTFBLX1NFUlZF
UlMgTlVMTAotKyNkZWZpbmUgX0RFRkFVTFRfTFBLX1VETiBOVUxMCi0rI2RlZmluZSBfREVG
QVVMVF9MUEtfR0ROIE5VTEwKLSsjZGVmaW5lIF9ERUZBVUxUX0xQS19CSU5ERE4gTlVMTAot
KyNkZWZpbmUgX0RFRkFVTFRfTFBLX0JJTkRQVyBOVUxMCi0rI2RlZmluZSBfREVGQVVMVF9M
UEtfU0dST1VQIE5VTEwKLSsjZGVmaW5lIF9ERUZBVUxUX0xQS19GSUxURVIgTlVMTAotKyNk
ZWZpbmUgX0RFRkFVTFRfTFBLX1RMUyAtMQotKyNkZWZpbmUgX0RFRkFVTFRfTFBLX0JUSU1F
T1VUIDEwCi0rI2RlZmluZSBfREVGQVVMVF9MUEtfU1RJTUVPVVQgMTAKLSsjZGVmaW5lIF9E
RUZBVUxUX0xQS19MRFAgTlVMTAotKwotKy8qIGZsYWdzICovCi0rI2RlZmluZSBGTEFHX0VN
UFRZCSAgICAweDAwMDAwMDAwCi0rI2RlZmluZSBGTEFHX0NPTk5FQ1RFRAkgICAgMHgwMDAw
MDAwMQotKwotKy8qIGZsYWcgbWFjcm9zICovCi0rI2RlZmluZSBGTEFHX1NFVF9FTVBUWSh4
KQkJeCY9KEZMQUdfRU1QVFkpCi0rI2RlZmluZSBGTEFHX1NFVF9DT05ORUNURUQoeCkJCXh8
PShGTEFHX0NPTk5FQ1RFRCkKLSsjZGVmaW5lIEZMQUdfU0VUX0RJU0NPTk5FQ1RFRCh4KQl4
Jj1+KEZMQUdfQ09OTkVDVEVEKQotKwotKy8qIGRlZmluZXMgKi8KLSsjZGVmaW5lIEZBSUxV
UkUgLTEKLSsjZGVmaW5lIFNVQ0NFU1MgMAotKyNkZWZpbmUgUFVCS0VZQVRUUiAic3NoUHVi
bGljS2V5IgotKwotKy8qIAotKyAqCi0rICogZGVmaW5lZCBmaWxlcyBwYXRoIAotKyAqIChz
aG91bGQgYmUgcmVsb2NhdGVkIHRvIHBhdGhuYW1lcy5oLAotKyAqIGlmIG9uZSBkYXkgaXQn
cyBpbmNsdWRlZCB3aXRoaW4gdGhlIHRyZWUpIAotKyAqCi0rICovCi0rI2RlZmluZSBfUEFU
SF9MREFQX0NPTkZJR19GSUxFICIvZXRjL2xkYXAuY29uZiIKLSsKLSsvKiBzdHJ1Y3R1cmVz
ICovCi0rdHlwZWRlZiBzdHJ1Y3QgbGRhcF9vcHRpb25zIHsKLSsgICAgaW50IG9uOwkJCS8q
IFVzZSBpdCBvciBOT1QgKi8KLSsgICAgTERBUCAqIGxkOwkJCS8qIExEQVAgZmlsZSBkZXNj
ICovCi0rICAgIGNoYXIgKiBzZXJ2ZXJzOwkJLyogcGFyc2VkIHNlcnZlcnMgZm9yIGxkYXBs
aWIgZmFpbG92ZXIgaGFuZGxpbmcgKi8KLSsgICAgY2hhciAqIHVfYmFzZWRuOwkJLyogdXNl
ciBiYXNlZG4gKi8KLSsgICAgY2hhciAqIGdfYmFzZWRuOwkJLyogZ3JvdXAgYmFzZWRuICov
Ci0rICAgIGNoYXIgKiBiaW5kZG47CQkvKiBiaW5kZG4gKi8KLSsgICAgY2hhciAqIGJpbmRw
dzsJCS8qIGJpbmQgcGFzc3dvcmQgKi8KLSsgICAgY2hhciAqIHNncm91cDsJCS8qIHNlcnZl
ciBncm91cCAqLwotKyAgICBjaGFyICogZmdyb3VwOwkJLyogZ3JvdXAgZmlsdGVyICovCi0r
ICAgIGNoYXIgKiBmaWx0ZXI7CQkvKiBhZGRpdGlvbmFsIGZpbHRlciAqLwotKyAgICBjaGFy
ICogbF9jb25mOwkJLyogdXNlIGxkYXAuY29uZiAqLwotKyAgICBpbnQgdGxzOwkJCS8qIFRM
UyBvbmx5ICovCi0rICAgIHN0cnVjdCB0aW1ldmFsIGJfdGltZW91dDsgICAvKiBiaW5kIHRp
bWVvdXQgKi8KLSsgICAgc3RydWN0IHRpbWV2YWwgc190aW1lb3V0OyAgIC8qIHNlYXJjaCB0
aW1lb3V0ICovCi0rICAgIHVuc2lnbmVkIGludCBmbGFnczsJCS8qIG1pc2MgZmxhZ3MgKHJl
Y29ubmVjdGlvbiwgZnV0dXJlIHVzZT8pICovCi0rfSBsZGFwX29wdF90OwotKwotK3R5cGVk
ZWYgc3RydWN0IGxkYXBfa2V5cyB7Ci0rICAgIHN0cnVjdCBiZXJ2YWwgKioga2V5czsJLyog
dGhlIHB1YmxpYyBrZXlzIHJldHJpZXZlZCAqLwotKyAgICB1bnNpZ25lZCBpbnQgbnVtOwkJ
LyogbnVtYmVyIG9mIGtleXMgKi8KLSt9IGxkYXBfa2V5X3Q7Ci0rCi0rCi0rLyogZnVuY3Rp
b24gaGVhZGVycyAqLwotK3ZvaWQgbGRhcF9jbG9zZShsZGFwX29wdF90ICopOwotK2ludCBs
ZGFwX2Nvbm5lY3QobGRhcF9vcHRfdCAqKTsKLStjaGFyICogbGRhcF9wYXJzZV9ncm91cHMo
Y29uc3QgY2hhciAqKTsKLStjaGFyICogbGRhcF9wYXJzZV9zZXJ2ZXJzKGNvbnN0IGNoYXIg
Kik7Ci0rdm9pZCBsZGFwX29wdGlvbnNfcHJpbnQobGRhcF9vcHRfdCAqKTsKLSt2b2lkIGxk
YXBfb3B0aW9uc19mcmVlKGxkYXBfb3B0X3QgKik7Ci0rdm9pZCBsZGFwX2tleXNfZnJlZShs
ZGFwX2tleV90ICopOwotK2ludCBsZGFwX3BhcnNlX2xjb25mKGxkYXBfb3B0X3QgKik7Ci0r
bGRhcF9rZXlfdCAqIGxkYXBfZ2V0dXNlcmtleShsZGFwX29wdF90ICosIGNvbnN0IGNoYXIg
Kik7Ci0raW50IGxkYXBfaXNtZW1iZXIobGRhcF9vcHRfdCAqLCBjb25zdCBjaGFyICopOwot
KwotKyNlbmRpZgotZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRlICcq
LnJlaicgbHBrLXVzZXItZXhhbXBsZS50eHQgbHBrLXVzZXItZXhhbXBsZS50eHQKLS0tLSBs
cGstdXNlci1leGFtcGxlLnR4dAkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgw
MAotKysrIGxway11c2VyLWV4YW1wbGUudHh0CTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAw
MDAwIC0wNzAwCi1AQCAtMCwwICsxLDExNyBAQAotKwotK1Bvc3QgdG8gTUwgLT4gVXNlciBN
YWRlIFF1aWNrIEluc3RhbGwgRG9jLgotK0NvbnRyaWJ1dGlvbiBmcm9tIEpvaG4gTGFuZSA8
am9obkBsYW5lLnVrLm5ldD4KLSsKLSsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0rCi0rT3Bl
blNTSCBMREFQIGtleXN0b3JlIFBhdGNoCi0rPT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0rCi0rTk9URTogdGhlc2Ugbm90ZXMgYXJlIGEgdHJhbnNjcmlwdCBvZiBhIHNwZWNpZmlj
IGluc3RhbGxhdGlvbgotKyAgICAgIHRoZXkgd29yayBmb3IgbWUsIHlvdXIgc3BlY2lmaWNz
IG1heSBiZSBkaWZmZXJlbnQhCi0rICAgICAgZnJvbSBKb2huIExhbmUgTWFyY2ggMTd0aCAy
MDA1ICAgICAgICAgam9obkBsYW5lLnVrLm5ldAotKwotK1RoaXMgaXMgYSBwYXRjaCB0byBP
cGVuU1NIIDQuMHAxIHRvIGFsbG93IGl0IHRvIG9idGFpbiB1c2VycycgcHVibGljIGtleXMK
LStmcm9tIHRoZWlyIExEQVAgcmVjb3JkIGFzIGFuIGFsdGVybmF0aXZlIHRvIH4vLnNzaC9h
dXRob3JpemVkX2tleXMuCi0rCi0rKEFzc3VtaW5nIGhlcmUgdGhhdCBuZWNlc3NhcnkgYnVp
bGQgc3R1ZmYgaXMgaW4gJEJVSUxEKQotKwotK2NkICRCVUlMRC9vcGVuc3NoLTQuMHAxCi0r
cGF0Y2ggLU5wMSAtaSAkQlVJTEQvb3BlbnNzaC1scGstNC4wcDEtMC4zLnBhdGNoCi0rbWtk
aXIgLXAgL3Zhci9lbXB0eSAmJgotKy4vY29uZmlndXJlIC0tcHJlZml4PS91c3IgLS1zeXNj
b25mZGlyPS9ldGMvc3NoIFwKLSsgICAgLS1saWJleGVjZGlyPS91c3Ivc2JpbiAtLXdpdGgt
bWQ1LXBhc3N3b3JkcyAtLXdpdGgtcGFtIFwKLSsgICAgLS13aXRoLWxpYnM9Ii1sbGRhcCIg
LS13aXRoLWNwcGZsYWdzPSItRFdJVEhfTERBUF9QVUJLRVkiCi0rTm93IGRvLgotK21ha2Ug
JiYKLSttYWtlIGluc3RhbGwKLSsKLStBZGQgdGhlIGZvbGxvd2luZyBjb25maWcgdG8gL2V0
Yy9zc2gvc3NoX2NvbmZpZwotK1VzZUxQSyB5ZXMKLStMcGtTZXJ2ZXJzIGxkYXA6Ly9teWhv
c3QubXlkb21haW4uY29tCi0rTHBrVXNlckROICBvdT1QZW9wbGUsZGM9bXlkb21haW4sZGM9
Y29tCi0rCi0rV2UgbmVlZCB0byB0ZWxsIHNzaGQgYWJvdXQgdGhlIFNTTCBrZXlzIGR1cmlu
ZyBib290LCBhcyByb290J3MKLStlbnZpcm9ubWVudCBkb2VzIG5vdCBleGlzdCBhdCB0aGF0
IHRpbWUuIEVkaXQgL2V0Yy9yYy5kL2luaXQuZC9zc2hkLgotK0NoYW5nZSB0aGUgc3RhcnR1
cCBjb2RlIGZyb20gdGhpczoKLSsgICAgICAgICAgICAgICAgZWNobyAiU3RhcnRpbmcgU1NI
IFNlcnZlci4uLiIKLSsgICAgICAgICAgICAgICAgbG9hZHByb2MgL3Vzci9zYmluL3NzaGQK
LSsgICAgICAgICAgICAgICAgOzsKLSt0byB0aGlzOgotKyAgICAgICAgICAgICAgICBlY2hv
ICJTdGFydGluZyBTU0ggU2VydmVyLi4uIgotKyAgICAgICAgICAgICAgICBMREFQUkM9Ii9y
b290Ly5sZGFwcmMiIGxvYWRwcm9jIC91c3Ivc2Jpbi9zc2hkCi0rICAgICAgICAgICAgICAg
IDs7Ci0rCi0rUmUtc3RhcnQgdGhlIHNzaGQgZGFlbW9uOgotKy9ldGMvcmMuZC9pbml0LmQv
c3NoZCByZXN0YXJ0Ci0rCi0rSW5zdGFsbCB0aGUgYWRkaXRpb25hbCBMREFQIHNjaGVtYQot
K2NwICRCVUlMRC9vcGVuc3NoLWxway0wLjIuc2NoZW1hICAvZXRjL29wZW5sZGFwL3NjaGVt
YS9vcGVuc3NoLnNjaGVtYQotKwotK05vdyBhZGQgdGhlIG9wZW5TU0ggTERBUCBzY2hlbWEg
dG8gL2V0Yy9vcGVubGRhcC9zbGFwZC5jb25mOgotK0FkZCB0aGUgZm9sbG93aW5nIHRvIHRo
ZSBlbmQgb2YgdGhlIGV4aXN0aW5nIGJsb2NrIG9mIHNjaGVtYSBpbmNsdWRlcwotK2luY2x1
ZGUgICAgICAgICAvZXRjL29wZW5sZGFwL3NjaGVtYS9vcGVuc3NoLnNjaGVtYQotKwotK1Jl
LXN0YXJ0IHRoZSBMREFQIHNlcnZlcjoKLSsvZXRjL3JjLmQvaW5pdC5kL3NsYXBkIHJlc3Rh
cnQKLSsKLStUbyBhZGQgb25lIG9yIG1vcmUgcHVibGljIGtleXMgdG8gYSB1c2VyLCBlZyAi
dGVzdHVzZXIiIDoKLStsZGFwc2VhcmNoIC14IC1XIC1aIC1MTEwgLWIgInVpZD10ZXN0dXNl
cixvdT1QZW9wbGUsZGM9bXlkb21haW4sZGM9Y29tIiAtRAotKyJ1aWQ9dGVzdHVzZXIsb3U9
UGVvcGxlLGRjPW15ZG9tYWluLGRjPWNvbSIgPiAvdG1wL3Rlc3R1c2VyCi0rCi0rYXBwZW5k
IHRoZSBmb2xsb3dpbmcgdG8gdGhpcyAvdG1wL3Rlc3R1c2VyIGZpbGUKLStvYmplY3RjbGFz
czogbGRhcFB1YmxpY0tleQotK3NzaFB1YmxpY0tleTogc3NoLXJzYQotK0FBQUFCM056YUMx
eWMyRUFBQUFCSlFBQUFJQjNkc3J3cVhxRDdFNHpZWXJ4d2RES0JVUXhLTWlvWHk5cHhGVmFp
NjRrQVB4alU5S1MKLStxSW83UWZranNsZnNqZmxrc2pmbGRma2pzbGRmakxYLzV6a3pSbVQy
OEk1cGlHenVuUHYxN1M4OXo4WHdTc3VBb1IxdDg2dCs1ZGxJCi0rN2VaRS9nVmJuMlVRa1Fx
NytrZERUUzJ5WFY2Vm5DNTJOL2tLTEczY2lCa0JBdz09IEdlbmVyYWwgUHVycG9zZSBSU0Eg
S2V5Ci0rCi0rVGhlbiBkbyBhIG1vZGlmeToKLStsZGFwbW9kaWZ5IC14IC1EICJ1aWQ9dGVz
dHVzZXIsb3U9UGVvcGxlLGRjPW15ZG9tYWluLGRjPWNvbSIgLVcgLWYKLSsvdG1wL3Rlc3R1
c2VyIC1aCi0rRW50ZXIgTERBUCBQYXNzd29yZDoKLSttb2RpZnlpbmcgZW50cnkgInVpZD10
ZXN0dXNlcixvdT1QZW9wbGUsZGM9bXlkb21haW4sZGM9Y29tIgotK0FuZCBjaGVjayB0aGUg
bW9kaWZ5IGlzIG9rOgotK2xkYXBzZWFyY2ggLXggLVcgLVogLWIgInVpZD10ZXN0dXNlcixv
dT1QZW9wbGUsZGM9bXlkb21haW4sZGM9Y29tIiAtRAotKyJ1aWQ9dGVzdHVzZXIsb3U9UGVv
cGxlLGRjPW15ZG9tYWluLGRjPWNvbSIKLStFbnRlciBMREFQIFBhc3N3b3JkOgotKyMgZXh0
ZW5kZWQgTERJRgotKyMKLSsjIExEQVB2MwotKyMgYmFzZSA8dWlkPXRlc3R1c2VyLG91PVBl
b3BsZSxkYz1teWRvbWFpbixkYz1jb20+IHdpdGggc2NvcGUgc3ViCi0rIyBmaWx0ZXI6IChv
YmplY3RjbGFzcz0qKQotKyMgcmVxdWVzdGluZzogQUxMCi0rIwotKwotKyMgdGVzdHVzZXIs
IFBlb3BsZSwgbXlkb21haW4uY29tCi0rZG46IHVpZD10ZXN0dXNlcixvdT1QZW9wbGUsZGM9
bXlkb21haW4sZGM9Y29tCi0rdWlkOiB0ZXN0dXNlcgotK2NuOiB0ZXN0dXNlcgotK29iamVj
dENsYXNzOiBhY2NvdW50Ci0rb2JqZWN0Q2xhc3M6IHBvc2l4QWNjb3VudAotK29iamVjdENs
YXNzOiB0b3AKLStvYmplY3RDbGFzczogc2hhZG93QWNjb3VudAotK29iamVjdENsYXNzOiBs
ZGFwUHVibGljS2V5Ci0rc2hhZG93TGFzdENoYW5nZTogMTI3NTcKLStzaGFkb3dNYXg6IDk5
OTk5Ci0rc2hhZG93V2FybmluZzogNwotK2xvZ2luU2hlbGw6IC9iaW4vYmFzaAotK3VpZE51
bWJlcjogOTk5OQotK2dpZE51bWJlcjogNTAxCi0raG9tZURpcmVjdG9yeTogL2hvbWUvdGVz
dHVzZXIKLSt1c2VyUGFzc3dvcmQ6OiBlMU5UU0VGOVVEZ3dWMWhuTTFWalVEUkpLMGsxWW5G
aUwxZDRaVUpPYlhsWlozWjNVVFU9Ci0rc3NoUHVibGljS2V5OiBzc2gtcnNhCi0rQUFBQUIz
TnphQzF5YzJFQUFBQUJKUUFBQUlCM2RzcndxWHFEN0U0ellZcnh3ZERLQlVReEtNaW9YeTlw
eEZWYWk2NGtBUHhqVTlLU3FJbzdRZmtqc2xmc2pmbGtzamZsZGZranNsZGZqTFgvNXprelJt
VDI4STVwaUd6dW5QdjE3Uzg5egotKzhYd1NzdUFvUjF0ODZ0KzVkbEk3ZVpFL2dWYm4yVVFr
UXE3K2tkRFRTMnlYVjZWbkM1Mk4va0tMRzNjaUJrQkF3PT0gR2VuZXJhbCBQdXJwb3NlIFJT
QSBLZXkKLSsKLSsjIHNlYXJjaCByZXN1bHQKLStzZWFyY2g6IDMKLStyZXN1bHQ6IDAgU3Vj
Y2VzcwotKwotKyMgbnVtUmVzcG9uc2VzOiAyCi0rIyBudW1FbnRyaWVzOiAxCi0rCi0rTm93
IHN0YXJ0IGEgc3NoIHNlc3Npb24gdG8gdXNlciAidGVzdHVzZXIiIGZyb20gdXN1YWwgc3No
IGNsaWVudCAoZS5nLgotK3B1VFRZKS4gTG9naW4gc2hvdWxkIHN1Y2NlZWQuCi0rCi0rKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKwotZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3JpZycgLS1l
eGNsdWRlICcqLnJlaicgTWFrZWZpbGUuaW4gTWFrZWZpbGUuaW4KLS0tLSBNYWtlZmlsZS5p
bgkyMDA4LTA3LTA4IDA3OjIxOjEyLjAwMDAwMDAwMCAtMDcwMAotKysrIE1ha2VmaWxlLmlu
CTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwCi1AQCAtODYsNyArODYsNyBA
QAotIAlhdXRoLWtyYjUubyBcCi0gCWF1dGgyLWdzcy5vIGdzcy1zZXJ2Lm8gZ3NzLXNlcnYt
a3JiNS5vIFwKLSAJbG9naW5yZWMubyBhdXRoLXBhbS5vIGF1dGgtc2hhZG93Lm8gYXV0aC1z
aWEubyBtZDVjcnlwdC5vIFwKLS0JYXVkaXQubyBhdWRpdC1ic20ubyBwbGF0Zm9ybS5vIHNm
dHAtc2VydmVyLm8gc2Z0cC1jb21tb24ubwotKwlhdWRpdC5vIGF1ZGl0LWJzbS5vIHBsYXRm
b3JtLm8gbGRhcGF1dGgubyBzZnRwLXNlcnZlci5vIHNmdHAtY29tbW9uLm8KLSAKLSBNQU5Q
QUdFUwk9IG1vZHVsaS41Lm91dCBzY3AuMS5vdXQgc3NoLWFkZC4xLm91dCBzc2gtYWdlbnQu
MS5vdXQgc3NoLWtleWdlbi4xLm91dCBzc2gta2V5c2Nhbi4xLm91dCBzc2guMS5vdXQgc3No
ZC44Lm91dCBzZnRwLXNlcnZlci44Lm91dCBzZnRwLjEub3V0IHNzaC1yYW5kLWhlbHBlci44
Lm91dCBzc2gta2V5c2lnbi44Lm91dCBzc2hkX2NvbmZpZy41Lm91dCBzc2hfY29uZmlnLjUu
b3V0Ci0gTUFOUEFHRVNfSU4JPSBtb2R1bGkuNSBzY3AuMSBzc2gtYWRkLjEgc3NoLWFnZW50
LjEgc3NoLWtleWdlbi4xIHNzaC1rZXlzY2FuLjEgc3NoLjEgc3NoZC44IHNmdHAtc2VydmVy
Ljggc2Z0cC4xIHNzaC1yYW5kLWhlbHBlci44IHNzaC1rZXlzaWduLjggc3NoZF9jb25maWcu
NSBzc2hfY29uZmlnLjUKLWRpZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhjbHVk
ZSAnKi5yZWonIG9wZW5zc2gtbHBrX29wZW5sZGFwLnNjaGVtYSBvcGVuc3NoLWxwa19vcGVu
bGRhcC5zY2hlbWEKLS0tLSBvcGVuc3NoLWxwa19vcGVubGRhcC5zY2hlbWEJMTk2OS0xMi0z
MSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDAKLSsrKyBvcGVuc3NoLWxwa19vcGVubGRhcC5z
Y2hlbWEJMjAwOC0wOC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDAKLUBAIC0wLDAgKzEs
MTkgQEAKLSsjCi0rIyBMREFQIFB1YmxpYyBLZXkgUGF0Y2ggc2NoZW1hIGZvciB1c2Ugd2l0
aCBvcGVuc3NoLWxkYXBwdWJrZXkKLSsjIEF1dGhvcjogRXJpYyBBVUdFIDxlYXVAcGhlYXIu
b3JnPgotKyMgCi0rIyBCYXNlZCBvbiB0aGUgcHJvcG9zYWwgb2YgOiBNYXJrIFJ1aWp0ZXIK
LSsjCi0rCi0rCi0rIyBvY3RldFN0cmluZyBTWU5UQVgKLSthdHRyaWJ1dGV0eXBlICggMS4z
LjYuMS40LjEuMjQ1NTIuNTAwLjEuMS4xLjEzIE5BTUUgJ3NzaFB1YmxpY0tleScgCi0rCURF
U0MgJ01BTkRBVE9SWTogT3BlblNTSCBQdWJsaWMga2V5JyAKLSsJRVFVQUxJVFkgb2N0ZXRT
dHJpbmdNYXRjaAotKwlTWU5UQVggMS4zLjYuMS40LjEuMTQ2Ni4xMTUuMTIxLjEuNDAgKQot
KwotKyMgcHJpbnRhYmxlU3RyaW5nIFNZTlRBWCB5ZXN8bm8KLStvYmplY3RjbGFzcyAoIDEu
My42LjEuNC4xLjI0NTUyLjUwMC4xLjEuMi4wIE5BTUUgJ2xkYXBQdWJsaWNLZXknIFNVUCB0
b3AgQVVYSUxJQVJZCi0rCURFU0MgJ01BTkRBVE9SWTogT3BlblNTSCBMUEsgb2JqZWN0Y2xh
c3MnCi0rCU1VU1QgKCBzc2hQdWJsaWNLZXkgJCB1aWQgKSAKLSsJKQotZGlmZiAtTnVhciAt
LWV4Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRlICcqLnJlaicgb3BlbnNzaC1scGtfc3VuLnNj
aGVtYSBvcGVuc3NoLWxwa19zdW4uc2NoZW1hCi0tLS0gb3BlbnNzaC1scGtfc3VuLnNjaGVt
YQkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAotKysrIG9wZW5zc2gtbHBr
X3N1bi5zY2hlbWEJMjAwOC0wOC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDAKLUBAIC0w
LDAgKzEsMjEgQEAKLSsjCi0rIyBMREFQIFB1YmxpYyBLZXkgUGF0Y2ggc2NoZW1hIGZvciB1
c2Ugd2l0aCBvcGVuc3NoLWxkYXBwdWJrZXkKLSsjIEF1dGhvcjogRXJpYyBBVUdFIDxlYXVA
cGhlYXIub3JnPgotKyMgCi0rIyBTY2hlbWEgZm9yIFN1biBEaXJlY3RvcnkgU2VydmVyLgot
KyMgQmFzZWQgb24gdGhlIG9yaWdpbmFsIHNjaGVtYSwgbW9kaWZpZWQgYnkgU3RlZmFuIEZp
c2NoZXIuCi0rIwotKwotK2RuOiBjbj1zY2hlbWEKLSsKLSsjIG9jdGV0U3RyaW5nIFNZTlRB
WAotK2F0dHJpYnV0ZVR5cGVzOiAoIDEuMy42LjEuNC4xLjI0NTUyLjUwMC4xLjEuMS4xMyBO
QU1FICdzc2hQdWJsaWNLZXknIAotKwlERVNDICdNQU5EQVRPUlk6IE9wZW5TU0ggUHVibGlj
IGtleScgCi0rCUVRVUFMSVRZIG9jdGV0U3RyaW5nTWF0Y2gKLSsJU1lOVEFYIDEuMy42LjEu
NC4xLjE0NjYuMTE1LjEyMS4xLjQwICkKLSsKLSsjIHByaW50YWJsZVN0cmluZyBTWU5UQVgg
eWVzfG5vCi0rb2JqZWN0Q2xhc3NlczogKCAxLjMuNi4xLjQuMS4yNDU1Mi41MDAuMS4xLjIu
MCBOQU1FICdsZGFwUHVibGljS2V5JyBTVVAgdG9wIEFVWElMSUFSWQotKwlERVNDICdNQU5E
QVRPUlk6IE9wZW5TU0ggTFBLIG9iamVjdGNsYXNzJwotKwlNVVNUICggc3NoUHVibGljS2V5
ICQgdWlkICkgCi0rCSkKLWRpZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhjbHVk
ZSAnKi5yZWonIFJFQURNRS5scGsgUkVBRE1FLmxwawotLS0tIFJFQURNRS5scGsJMTk2OS0x
Mi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDAKLSsrKyBSRUFETUUubHBrCTIwMDgtMDgt
MjMgMTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwCi1AQCAtMCwwICsxLDI2NyBAQAotK09wZW5T
U0ggTERBUCBQVUJMSUMgS0VZIFBBVENIIAotK0NvcHlyaWdodCAoYykgMjAwMyBFcmljIEFV
R0UgKGVhdUBwaGVhci5vcmcpCi0rQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsKLStSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSttb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSthcmUgbWV0OgotKzEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotKzIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotKyAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0rMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCi0rICAgZGVyaXZlZCBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0rCi0r
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQg
QU5ZIEVYUFJFU1MgT1IKLStJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTCi0rT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4KLStJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsCi0rSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUCi0rTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotK0RBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotK1RIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSsoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKLStUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotKwotK3B1cnBvc2VzIG9mIHRoaXMgcGF0Y2g6Ci0rCi0r
VGhpcyBwYXRjaCB3b3VsZCBoZWxwIHRvIGhhdmUgYXV0aGVudGljYXRpb24gY2VudHJhbGl6
YXRpb24gcG9saWN5Ci0rdXNpbmcgc3NoIHB1YmxpYyBrZXkgYXV0aGVudGljYXRpb24uCi0r
VGhpcyBwYXRjaCBjb3VsZCBiZSBhbiBhbHRlcm5hdGl2ZSB0byBvdGhlciAic2VjdXJlIiBh
dXRoZW50aWNhdGlvbiBzeXN0ZW0KLSt3b3JraW5nIGluIGEgc2ltaWxhciB3YXkgKEtlcmJl
cm9zLCBTZWN1cklELCBldGMuLi4pLCBleGNlcHQgdGhlIGZhY3QgCi0rdGhhdCBpdCdzIGJh
c2VkIG9uIE9wZW5TU0ggYW5kIGl0cyBwdWJsaWMga2V5IGFiaWxpdGllcy4KLSsKLSs+PiBG
WUk6IDw8Ci0rJ3VpZCc6IG1lYW5zIHVuaXggYWNjb3VudHMgZXhpc3Rpbmcgb24gdGhlIGN1
cnJlbnQgc2VydmVyCi0rJ2xwa1NlcnZlckdyb3VwOicgbWVhbiBzZXJ2ZXIgZ3JvdXAgY29u
ZmlndXJlZCBvbiB0aGUgY3VycmVudCBzZXJ2ZXIgKCdscGtTZXJ2ZXJHcm91cCcgaW4gc3No
ZF9jb25maWcpCi0rCi0rZXhhbXBsZSBzY2hlbWE6Ci0rCi0rCi0rICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlcnZlcjEgKHVpZDogZWF1LHJpdmFsLHRvdG8pIChscGtT
ZXJ2ZXJHcm91cDogdW5peCkKLSsgICAgICAgICAgICAgICAgX19fX19fX19fX18gICAgICAv
Ci0rICAgICAgICAgICAgICAgLyAgICAgICAgICAgXCAtLS0gLSBzZXJ2ZXIzICh1aWQ6IGVh
dSwgdGl0aSkgKGxwa1NlcnZlckdyb3VwOiB1bml4KQotKyAgICAgICAgICAgICAgfCBMREFQ
IFNlcnZlciB8ICAgIFwKLSsJICAgICAgfCBlYXUgICxyaXZhbCB8ICAgICBzZXJ2ZXIyICh1
aWQ6IHJpdmFsLCBlYXUpIChscGtTZXJ2ZXJHcm91cDogdW5peCkKLSsJICAgICAgfCB0aXRp
ICx0b3RvICB8Ci0rCSAgICAgIHwgdXNlcngsLi4uLiAgfCAgICAgICAgIHNlcnZlcjUgKHVp
ZDogZWF1KSAgKGxwa1NlcnZlckdyb3VwOiBtYWlsKQotKyAgICAgICAgICAgICAgIFxfX19f
X19fX19fXy8gXCAgICAgICAvCi0rCSAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0gLSBz
ZXJ2ZXI0ICh1aWQ6IGVhdSwgcml2YWwpICAobm8gZ3JvdXAgY29uZmlndXJlZCkKLSsJCQkg
ICAgICAgICAgICAgXAotKwkJCQkgICAgICAgIGV0Yy4uLgotKwotKy0gV0hBVCBXRSBORUVE
IDoKLSsKLSsgICogY29uZmlndXJlZCBMREFQIHNlcnZlciBzb21ld2hlcmUgb24gdGhlIG5l
dHdvcmsgKGkuZS4gT3BlbkxEQVApCi0rICAqIHBhdGNoZWQgc3NoZCAod2l0aCB0aGlzIHBh
dGNoIDspCi0rICAqIExEQVAgdXNlcigvZ3JvdXApIGVudHJ5IChsb29rIGF0IHVzZXJzLmxk
aWYgKCYgZ3JvdXBzLmxkaWYpKToKLSsgICAgICAgIFVzZXIgZW50cnk6Ci0rCS0gYXR0YWNo
ZWQgdG8gdGhlICdsZGFwUHVibGljS2V5JyBvYmplY3RjbGFzcwotKwktIGF0dGFjaGVkIHRv
IHRoZSAncG9zaXhBY2NvdW50JyBvYmplY3RjbGFzcwotKwktIHdpdGggYSBmaWxsZWQgJ3Nz
aFB1YmxpY0tleScgYXR0cmlidXRlIAotKwlFeGFtcGxlOgotKwkJZG46IHVpZD1lYXUsb3U9
dXNlcnMsZGM9Y3Vja29vcyxkYz1uZXQKLSsJCW9iamVjdGNsYXNzOiB0b3AKLSsJCW9iamVj
dGNsYXNzOiBwZXJzb24KLSsJCW9iamVjdGNsYXNzOiBvcmdhbml6YXRpb25hbFBlcnNvbgot
KwkJb2JqZWN0Y2xhc3M6IHBvc2l4QWNjb3VudAotKwkJb2JqZWN0Y2xhc3M6IGxkYXBQdWJs
aWNLZXkKLSsJCWRlc2NyaXB0aW9uOiBFcmljIEFVR0UgQWNjb3VudAotKwkJdXNlclBhc3N3
b3JkOiBibGFoCi0rCQljbjogRXJpYyBBVUdFCi0rCQlzbjogRXJpYyBBVUdFCi0rCQl1aWQ6
IGVhdQotKwkJdWlkTnVtYmVyOiAxMDM0Ci0rCQlnaWROdW1iZXI6IDEKLSsJCWhvbWVEaXJl
Y3Rvcnk6IC9leHBvcnQvaG9tZS9lYXUKLSsJCXNzaFB1YmxpY0tleTogc3NoLWRzcyBBQUFB
QjMuLi4KLSsJCXNzaFB1YmxpY0tleTogc3NoLWRzcyBBQUFBTTUuLi4KLSsKLSsJR3JvdXAg
ZW50cnk6Ci0rCS0gYXR0YWNoZWQgdG8gdGhlICdwb3NpeEdyb3VwJyBvYmplY3RjbGFzcwot
KwktIHdpdGggYSAnY24nIGdyb3VwbmFtZSBhdHRyaWJ1dGUKLSsJLSB3aXRoIG11bHRpcGxl
ICdtZW1iZXJVaWQnIGF0dHJpYnV0ZXMgZmlsbGVkIHdpdGggdXNlcm5hbWVzIGFsbG93ZWQg
aW4gdGhpcyBncm91cAotKwlFeGFtcGxlOgotKwkJIyBmZXcgbWVtYmVycwotKwkJZG46IGNu
PXVuaXgsb3U9Z3JvdXBzLGRjPWN1Y2tvb3MsZGM9bmV0Ci0rCQlvYmplY3RjbGFzczogdG9w
Ci0rCQlvYmplY3RjbGFzczogcG9zaXhHcm91cAotKwkJZGVzY3JpcHRpb246IFVuaXggYmFz
ZWQgc2VydmVycyBncm91cAotKwkJY246IHVuaXgKLSsJCWdpZE51bWJlcjogMTAwMgotKwkJ
bWVtYmVyVWlkOiBlYXUKLSsJCW1lbWJlclVpZDogdXNlcjEKLSsJCW1lbWJlclVpZDogdXNl
cjIKLSsKLSsKLSstIEhPVyBJVCBXT1JLUyA6Ci0rCi0rICAqIHdpdGhvdXQgcGF0Y2gKLSsg
IElmIGEgdXNlciB3YW50cyB0byBhdXRoZW50aWNhdGUgdG8gbG9nIGluIGEgc2VydmVyIHRo
ZSBzc2hkLCB3aWxsIGZpcnN0IGxvb2sgZm9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBhbGxv
d2VkIChSU0FhdXRoLGtlcmJlcm9zLGV0Yy4uKQotKyAgYW5kIGlmIFJTQWF1dGggYW5kIHRp
Y2tldHMgYmFzZWQgYXV0aCBmYWlscywgaXQgd2lsbCBmYWxsYmFjayB0byBzdGFuZGFyZCBw
YXNzd29yZCBhdXRoZW50aWNhdGlvbiAoaWYgZW5hYmxlZCkuCi0rCi0rICAqIHdpdGggdGhl
IHBhdGNoCi0rICBJZiBhIHVzZXIgd2FudCB0byBhdXRoZW50aWNhdGUgdG8gbG9nIGluIGEg
c2VydmVyLCB0aGUgc3NoZCB3aWxsIGZpcnN0IGxvb2sgZm9yIGF1dGggbWV0aG9kIGluY2x1
ZGluZyBMREFQIHB1YmtleSwgaWYgdGhlIGxkYXBwdWJrZXkgb3B0aW9ucyBpcyBlbmFibGVk
LgotKyAgSXQgd2lsbCBkbyBhbiBsZGFwc2VhcmNoIHRvIGdldCB0aGUgcHVibGljIGtleSBk
aXJlY3RseSBmcm9tIHRoZSBMREFQIGluc3RlYWQgb2YgcmVhZGluZyBpdCBmcm9tIHRoZSBz
ZXJ2ZXIgZmlsZXN5c3RlbS4gCi0rICAodXN1YWxseSBpbiAkSE9NRS8uc3NoL2F1dGhvcml6
ZWRfa2V5cykKLSsKLSsgIElmIGdyb3VwcyBhcmUgZW5hYmxlZCwgaXQgd2lsbCBhbHNvIGNo
ZWNrIGlmIHRoZSB1c2VyIHRoYXQgd2FudHMgdG8gbG9naW4gaXMgaW4gdGhlIGdyb3VwIG9m
IHRoZSBzZXJ2ZXIgaGUgaXMgdHJ5aW5nIHRvIGxvZyBpbnRvLgotKyAgSWYgaXQgZmFpbHMs
IGl0IGZhbGxzIGJhY2sgb24gUlNBIGF1dGggZmlsZXMgKCRIT01FLy5zc2gvYXV0aG9yaXpl
ZF9rZXlzKSwgZXRjLi4gYW5kIGZpbmFsbHkgdG8gc3RhbmRhcmQgcGFzc3dvcmQgYXV0aGVu
dGljYXRpb24gKGlmIGVuYWJsZWQpLgotKwotKyAgNyB0b2tlbnMgYXJlIGFkZGVkIHRvIHNz
aGRfY29uZmlnIDoKLSsgICMgaGVyZSBpcyB0aGUgbmV3IHBhdGNoZWQgbGRhcCByZWxhdGVk
IHRva2VucwotKyAgIyBlbnRyaWVzIGluIHlvdXIgTERBUCBtdXN0IGJlIHBvc2l4QWNjb3Vu
dCAmIHN0cm9uZ0F1dGhlbnRpY2F0aW9uVXNlciAmIHBvc2l4R3JvdXAKLSsgIFVzZUxQSyB5
ZXMJCQkJCQkJCSMgbG9vayB0aGUgcHViIGtleSBpbnRvIExEQVAKLSsgIExwa1NlcnZlcnMg
bGRhcDovLzEwLjMxLjMyLjUvIGxkYXA6Ly8xMC4zMS4zMi40IGxkYXA6Ly8xMC4zMS4zMi4z
CSMgd2hpY2ggTERBUCBzZXJ2ZXIgZm9yIHVzZXJzID8gKFVSTCBmb3JtYXQpCi0rICBMcGtV
c2VyRE4gIG91PXVzZXJzLGRjPWZvb2JhcixkYz1uZXQJCQkJCSMgd2hpY2ggYmFzZSBETiBm
b3IgdXNlcnMgPwotKyAgTHBrR3JvdXBETiBvdT1ncm91cHMsZGM9Zm9vYmFyLGRjPW5ldAkJ
CQkJIyB3aGljaCBiYXNlIEROIGZvciBncm91cHMgPyAKLSsgIExwa0JpbmRETiBjbj1tYW5h
Z2VyLGRjPWZvb2JhcixkYz1uZXQJCQkJCSMgd2hpY2ggYmluZCBETiA/Ci0rICBMcGtCaW5k
UHcgYXNlY3JldAkJCQkJCQkjIGJpbmQgRE4gY3JlZGlkZW50aWFscwotKyAgTHBrU2VydmVy
R3JvdXAgYWdyb3VwbmFtZQkJCQkJCSMgdGhlIGdyb3VwIHRoZSBzZXJ2ZXIgaXMgcGFydCBv
ZgotKwotKyAgUmlnaHQgbm93IGknbSB1c2luZyBhbm9ueW1vdXMgYmluZGluZyB0byBnZXQg
cHVibGljIGtleXMsIGJlY2F1c2UgZ2V0dGluZyBwdWJsaWMga2V5cyBvZiBzb21lb25lIGRv
ZXNuJ3QgaW1wZXJzb25hdGUgaGltuCBidXQgdGhlcmUgaXMgc29tZQotKyAgZmxhd3MgeW91
IGhhdmUgdG8gdGFrZSBjYXJlIG9mLgotKwotKy0gSE9XIFRPIElOU0VSVCBBIFVTRVIvS0VZ
IElOVE8gQU4gTERBUCBFTlRSWQotKwotKyAgKiBteSB3YXkgKHRoZXJlIGlzIHBsZW50eSA6
KQotKyAgLSBjcmVhdGUgbGRpZiBmaWxlIChpLmUuIHVzZXJzLmxkaWYpCi0rICAtIGNhdCB+
Ly5zc2gvaWRfZHNhLnB1YiBPUiBjYXQgfi8uc3NoL2lkX3JzYS5wdWIgT1IgY2F0IH4vLnNz
aC9pZGVudGl0eS5wdWIKLSsgIC0gbXkgd2F5IGluIDQgc3RlcHMgOgotKyAgRXhhbXBsZToK
LSsKLSsgICMgeW91IGFkZCB0aGlzIHRvIHRoZSB1c2VyIGVudHJ5IGluIHRoZSBMRElGIGZp
bGUgOgotKyAgWy4uLl0KLSsgIG9iamVjdGNsYXNzOiBwb3NpeEFjY291bnQKLSsgIG9iamVj
dGNsYXNzOiBsZGFwUHVibGljS2V5Ci0rICBbLi4uXQotKyAgc3NoUHVibGlLZXk6IHNzaC1k
c3MgQUFBQUJEaDEyRERVUjIuLi4KLSsgIFsuLi5dCi0rCi0rICAjIGluc2VydCB5b3VyIGVu
dHJ5IGFuZCB5b3UncmUgZG9uZSA6KQotKyAgbGRhcGFkZCAtRCBiYWxibGFibGEgLXcgYmxl
aCA8IGZpbGUubGRpZiAKLSsgIAotKyAgYWxsIHN0YW5kYXJkIG9wdGlvbnMgY2FuIGJlIHBy
ZXNlbnQgaW4gdGhlICdzc2hQdWJsaWNLZXknIGF0dHJpYnV0ZS4KLSsKLSstIFdIWSA6Ci0r
Ci0rICBTaW1wbHkgYmVjYXVzZSwgaSB3YXMgbG9va2luZyBmb3IgYSB3YXkgdG8gY2VudHJh
bGl6ZSBhbGwgc3lzYWRtaW5zIGF1dGhlbnRpY2F0aW9uLCBlYXNpbHksICB3aXRob3V0IGNv
bXBsZXRlbHkgdXNpbmcgTERBUCAKLSsgIGFzIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCAobGlr
ZSBwYW1fbGRhcCBldGMuLikuICAKLSsgIAotKyAgQWZ0ZXIgbG9va2luZyBpbnRvIEtlcmJl
cm9zLCBTZWN1cklELCBhbmQgb3RoZXIgY2VudHJhbGl6ZWQgc2VjdXJlIGF1dGhlbnRpY2F0
aW9ucyBzeXN0ZW1zLCB0aGUgdXNlIG9mIFJTQSBhbmQgTERBUCB0byBnZXQgCi0rICBwdWJs
aWMga2V5IGZvciBhdXRoZW50aWNhdGlvbiBhbGxvd3MgdXMgdG8gY29udHJvbCB3aG8gaGFz
IGFjY2VzcyB0byB3aGljaCBzZXJ2ZXIgKHRoZSB1c2VyIG5lZWRzIGFuIGFjY291bnQgYW5k
IHRvIGJlIGluICdzdHJvbmdBdXRoZW50aWNhdGlvblVzZXInCi0rICBvYmplY3RjbGFzcyB3
aXRoaW4gTERBUCBhbmQgcGFydCBvZiB0aGUgZ3JvdXAgdGhlIFNTSCBzZXJ2ZXIgaXMgaW4p
LiAKLSsKLSsgIFBhc3N3b3JkcyB1cGRhdGUgYXJlIG5vIGxvbmdlciBhIG5pZ2h0bWFyZSBm
b3IgYSBzZXJ2ZXIgZmFybSAoa2V5IHBhaXIgcGFzc3BocmFzZSBpcyBzdG9yZWQgb24gZWFj
aCB1c2VyJ3MgYm94IGFuZCBwcml2YXRlIGtleSBpcyBsb2NhbGx5IGVuY3J5cHRlZCB1c2lu
ZyBoaXMgcGFzc3BocmFzZSAKLSsgIHNvIGVhY2ggdXNlciBjYW4gY2hhbmdlIGl0IGFzIG11
Y2ggYXMgaGUgd2FudHMpLiAKLSsKLSsgIEJsb2NraW5nIGEgdXNlciBhY2NvdW50IGNhbiBi
ZSBkb25lIGRpcmVjdGx5IGZyb20gdGhlIExEQVAgKGlmIHNzaGQgaXMgdXNpbmcgUlNBQXV0
aCArIGxkYXAgb25seSkuCi0rCi0rLSBSVUxFUyA6ICAKLSsgIEVudHJ5IGluIHRoZSBMREFQ
IHNlcnZlciBtdXN0IHJlc3BlY3QgJ3Bvc2l4QWNjb3VudCcgYW5kICdsZGFwUHVibGljS2V5
JyB3aGljaCBhcmUgZGVmaW5lZCBpbiBjb3JlLnNjaGVtYS4gCi0rICBhbmQgdGhlIGFkZGl0
aW9ubmFsIGxway5zY2hlbWEuCi0rCi0rICBUaGlzIHBhdGNoIGNvdWxkIGFsbG93IGEgc21v
b3RoIHRyYW5zaXRpb24gYmV0d2VlbiBzdGFuZGFyZCBhdXRoICgvZXRjL3Bhc3N3ZCkgYW5k
IGNvbXBsZXRlIExEQVAgYmFzZWQgYXV0aGVudGljYXRpb24gCi0rICAocGFtbGRhcCwgbnNz
X2xkYXAsIGV0Yy4uKS4KLSsKLSsgIFRoaXMgY2FuIGJlIGFuIGFsdGVybmF0aXZlIHRvIG90
aGVyIChvbGQ/L2V4cGVuc2l2ZT8pIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgKEtlcmJlcm9z
L1NlY3VySUQvLi4pLgotKyAgCi0rICBSZWZlcnJpbmcgdG8gc2NoZW1hIGF0IHRoZSBiZWdp
bm5pbmcgb2YgdGhpcyBmaWxlIGlmIHVzZXIgJ2VhdScgaXMgb25seSBpbiBncm91cCAndW5p
eCcKLSsgICdlYXUnIHdvdWxkIE9OTFkgYWNjZXNzICdzZXJ2ZXIxJywgJ3NlcnZlcjInLCAn
c2VydmVyMycgQU5EICdzZXJ2ZXI0JyBCVVQgTk9UICdzZXJ2ZXI1Jy4KLSsgIElmIHlvdSB0
aGVuIG1vZGlmeSB0aGUgTERBUCAnbWFpbCcgZ3JvdXAgZW50cnkgdG8gYWRkICdtZW1iZXJV
aWQ6IGVhdScgVEhFTiB1c2VyICdlYXUnIHdvdWxkIGJlIGFibGUKLSsgIHRvIGxvZyBpbiAn
c2VydmVyNScgKGkgaG9wZSB5b3UgZ290IHRoZSBpZGVhLCBteSBlbmdsaXNoIGlzIGJhZCA6
KS4KLSsKLSsgIEVhY2ggc2VydmVyJ3Mgc3NoZCBpcyBwYXRjaGVkIGFuZCBjb25maWd1cmVk
IHRvIGFzayB0aGUgcHVibGljIGtleSBhbmQgdGhlIGdyb3VwIGluZm9zIGluIHRoZSBMREFQ
Ci0rICBzZXJ2ZXIuCi0rICBXaGVuIHlvdSB3YW50IHRvIGFsbG93IGEgbmV3IHVzZXIgdG8g
aGF2ZSBhY2Nlc3MgdG8gdGhlIHNlcnZlciBwYXJjLCB5b3UganVzdCBhZGQgaGltIGFuIGFj
Y291bnQgb24gCi0rICB5b3VyIHNlcnZlcnMsIHlvdSBhZGQgaGlzIHB1YmxpYyBrZXkgaW50
byBoaXMgZW50cnkgb24gdGhlIExEQVAgc2VydmVyLCBpdCdzIGRvbmUuIAotKwotKyAgQmVj
YXVzZSBzc2hkcyBhcmUgbG9va2luZyBwdWJsaWMga2V5cyBpbnRvIHRoZSBMREFQIGRpcmVj
dGx5IGluc3RlYWQgb2YgYSBmaWxlICgkSE9NRS8uc3NoL2F1dGhvcml6ZWRfa2V5cykuCi0r
Ci0rICBXaGVuIHRoZSB1c2VyIG5lZWRzIHRvIGNoYW5nZSBoaXMgcGFzc3BocmFzZSBoZSBj
YW4gZG8gaXQgZGlyZWN0bHkgZnJvbSBoaXMgd29ya3N0YXRpb24gYnkgY2hhbmdpbmcgCi0r
ICBoaXMgb3duIGtleSBzZXQgbG9jayBwYXNzcGhyYXNlLCBhbmQgYWxsIHNlcnZlcnMgYXJl
IGF1dG9tYXRpY2FsbHkgYXdhcmUuCi0rIAotKyAgV2l0aCBhIENBUkVGVUwgTERBUCBzZXJ2
ZXIgY29uZmlndXJhdGlvbiB5b3UgY291bGQgYWxsb3cgYSB1c2VyIHRvIGFkZC9kZWxldGUv
bW9kaWZ5IGhpcyBvd24gZW50cnkgaGltc2VsZgotKyAgc28gaGUgY2FuIGFkZC9tb2RpZnkv
ZGVsZXRlIGhpbXNlbGYgaGlzIHB1YmxpYyBrZXkgd2hlbiBuZWVkZWQuCi0rCi0rrSBGTEFX
UyA6Ci0rICBMREFQIG11c3QgYmUgd2VsbCBjb25maWd1cmVkLCBnZXR0aW5nIHRoZSBwdWJs
aWMga2V5IG9mIHNvbWUgdXNlciBpcyBub3QgYSBwcm9ibGVtLCBidXQgaWYgYW5vbnltb3Vz
IExEQVAgCi0rICBhbGxvdyB3cml0ZSB0byB1c2VycyBkbiwgc29tZWJvZHkgY291bGQgcmVw
bGFjZSBzb21ldXNlcidzIHB1YmxpYyBrZXkgYnkgaXRzIG93biBhbmQgaW1wZXJzb25hdGUg
c29tZSAKLSsgIG9mIHlvdXIgdXNlcnMgaW4gYWxsIHlvdXIgc2VydmVyIGZhcm0gYmUgVkVS
WSBDQVJFRlVMLgotKyAgCi0rICBNSVRNIGF0dGFjayB3aGVuIHNzaGQgaXMgcmVxdWVzdGlu
ZyB0aGUgcHVibGljIGtleSwgY291bGQgbGVhZCB0byBhIGNvbXByb21pc2Ugb2YgeW91ciBz
ZXJ2ZXJzIGFsbG93aW5nIGxvZ2luIAotKyAgYXMgdGhlIGltcGVyc29ubmF0ZWQgdXNlci4K
LSsKLSsgIElmIExEQVAgc2VydmVyIGlzIGRvd24gdGhlbiwgZmFsbGJhY2sgb24gcGFzc3dk
IGF1dGguCi0rICAKLSsgIHRoZSBsZGFwIGNvZGUgcGFydCBoYXMgbm90IGJlZW4gd2VsbCBh
dWRpdGVkIHlldC4KLSsKLSstIExEQVAgVVNFUiBFTlRSWSBFWEFNUExFUyAoTERJRiBGb3Jt
YXQsIGxvb2sgaW4gdXNlcnMubGRpZikKLSsgICAgLS0tIENVVCBIRVJFIC0tLQotKyAgICBk
bjogdWlkPWpkb2Usb3U9dXNlcnMsZGM9Zm9vYmFyLGRjPW5ldAotKyAgICBvYmplY3RjbGFz
czogdG9wCi0rICAgIG9iamVjdGNsYXNzOiBwZXJzb24KLSsgICAgb2JqZWN0Y2xhc3M6IG9y
Z2FuaXphdGlvbmFsUGVyc29uCi0rICAgIG9iamVjdGNsYXNzOiBwb3NpeEFjY291bnQKLSsg
ICAgb2JqZWN0Y2xhc3M6IGxkYXBQdWJsaWNLZXkKLSsgICAgZGVzY3JpcHRpb246IE15IGFj
Y291bnQKLSsgICAgY246IEpvaG4gRG9lCi0rICAgIHNuOiBKb2huIERvZQotKyAgICB1aWQ6
IGpkb2UKLSsgICAgdWlkTnVtYmVyOiAxMDAKLSsgICAgZ2lkTnVtYmVyOiAxMDAKLSsgICAg
aG9tZURpcmVjdG9yeTogL2hvbWUvamRvZQotKyAgICBzc2hQdWJsaWNLZXk6IHNzaC1kc3Mg
QUFBQUIzTnphQzFrYzNNQUFBRUJBT3ZMOHBSRVVnOXdTeS84K2hRSjU0WUYzQVhrQjBPWnJY
Qi4uLi4KLSsgICAgWy4uLl0KLSsgICAgLS0tIENVVCBIRVJFIC0tLQotKwotKy0gTERBUCBH
Uk9VUCBFTlRSWSBFWEFNUExFUyAoTERJRiBGb3JtYXQsIGxvb2sgaW4gZ3JvdXBzLmxkaWYp
Ci0rICAgIC0tLSBDVVQgSEVSRSAtLS0KLSsgICAgZG46IGNuPXVuaXgsb3U9Z3JvdXBzLGRj
PWN1Y2tvb3MsZGM9bmV0Ci0rICAgIG9iamVjdGNsYXNzOiB0b3AKLSsgICAgb2JqZWN0Y2xh
c3M6IHBvc2l4R3JvdXAKLSsgICAgZGVzY3JpcHRpb246IFVuaXggYmFzZWQgc2VydmVycyBn
cm91cAotKyAgICBjbjogdW5peAotKyAgICBnaWROdW1iZXI6IDEwMDIKLSsgICAgbWVtYmVy
VWlkOiBqZG9lCi0rICAgIG1lbWJlclVpZDogdXNlcjEKLSsgICAgbWVtYmVyVWlkOiB1c2Vy
MgotKyAgICBbLi4uXQotKyAgICAtLS0gQ1VUIEhFUkUgLS0tCi0rCi0rPj4gRllJOiA8PCAK
LStNdWx0aXBsZSAnc3NoUHVibGljS2V5JyBpbiBhIHVzZXIgZW50cnkgYXJlIGFsbG93ZWQs
IGFzIHdlbGwgYXMgbXVsdGlwbGUgJ21lbWJlclVpZCcgYXR0cmlidXRlcyBpbiBhIGdyb3Vw
IGVudHJ5Ci0rCi0rLSBDT01QSUxJTkc6Ci0rICAxLiBBcHBseSB0aGUgcGF0Y2gKLSsgIDIu
IC4vY29uZmlndXJlIC0td2l0aC15b3VyLW9wdGlvbnMgLS13aXRoLWxkYXA9L3ByZWZpeC90
by9sZGFwX2xpYnNfYW5kX2luY2x1ZGVzCi0rICAzLiBtYWtlCi0rICA0LiBpdCdzIGRvbmUu
Ci0rCi0rLSBCTEEgOgotKyAgSSBob3BlIHRoaXMgY291bGQgaGVscCwgYW5kIGkgaG9wZSB0
byBiZSBjbGVhciBlbm91Z2gsLCBvciBnaXZlIGlkZWFzLiAgcXVlc3Rpb25zL2NvbW1lbnRz
L2ltcHJvdmVtZW50cyBhcmUgd2VsY29tZS4KLSsgIAotKy0gVE9ETyA6Ci0rICBSZWRlc2ln
biBkaWZmZXJlbnRseS4KLSsKLSstIERPQ1MvTElOSyA6Ci0rICBodHRwOi8vcGFjc2VjLmpw
L2NvcmUwNS9wc2owNS1iYXJpc2FuaS1lbi5wZGYKLSsgIGh0dHA6Ly9mcml0ei5wb3RzZGFt
LmVkdS9wcm9qZWN0cy9vcGVuc3NoLWxway8KLSsgIGh0dHA6Ly9mcml0ei5wb3RzZGFtLmVk
dS9wcm9qZWN0cy9zc2hnYXRlLwotKyAgaHR0cDovL2Rldi5pbnZlcnNlcGF0aC5jb20vdHJh
Yy9vcGVuc3NoLWxwawotKyAgaHR0cDovL2xhbS5zZi5uZXQvICggaHR0cDovL2xhbS5zb3Vy
Y2Vmb3JnZS5uZXQvZG9jdW1lbnRhdGlvbi9zdXBwb3J0ZWRTY2hlbWFzLmh0bSApCi0rCi0r
LSBDT05UUklCVVRPUlMvSURFQVMvR1JFRVRTIDoKLSsgIC0gRmFsayBTaWVtb25zbWVpZXIu
Ci0rICAtIEphY29iIFJpZWYuCi0rICAtIE1pY2hhZWwgRHVyY2hncmFmLgotKyAgLSBmcmVk
ZXJpYyBwZXRlcnMuCi0rICAtIEZpbmxheSBkb2JiaWUuCi0rICAtIFN0ZWZhbiBGaXNoZXIu
Ci0rICAtIFJvYmluIEguIEpvaG5zb24uCi0rICAtIEFkcmlhbiBCcmlkZ2V0dC4KLSsKLSst
IENPTlRBQ1QgOgotKyAgLSBFcmljIEFVR0UgPGVhdUBwaGVhci5vcmc+Ci0rICAtIEFuZHJl
YSBCYXJpc2FuaSA8YW5kcmVhQGludmVyc2VwYXRoLmNvbT4KLQotZGlmZiAtTnVhciAtLWV4
Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRlICcqLnJlaicgc2VydmNvbmYuaCBzZXJ2Y29uZi5o
Ci0tLS0gc2VydmNvbmYuaAkyMDA4LTA2LTEwIDA2OjAxOjUxLjAwMDAwMDAwMCAtMDcwMAot
KysrIHNlcnZjb25mLmgJMjAwOC0wOC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDAKLUBA
IC0xNiw2ICsxNiwxMCBAQAotICNpZm5kZWYgU0VSVkNPTkZfSAotICNkZWZpbmUgU0VSVkNP
TkZfSAotIAotKyNpZmRlZiBXSVRIX0xEQVBfUFVCS0VZCi0rI2luY2x1ZGUgImxkYXBhdXRo
LmgiCi0rI2VuZGlmCi0rCi0gI2RlZmluZSBNQVhfUE9SVFMJCTI1NgkvKiBNYXggIyBwb3J0
cy4gKi8KLSAKLSAjZGVmaW5lIE1BWF9BTExPV19VU0VSUwkJMjU2CS8qIE1heCAjIHVzZXJz
IG9uIGFsbG93IGxpc3QuICovCi1AQCAtMTQ1LDYgKzE0OSw5IEBACi0gCWludAl1c2VfcGFt
OwkJLyogRW5hYmxlIGF1dGggdmlhIFBBTSAqLwotIAotIAlpbnQJcGVybWl0X3R1bjsKLSsj
aWZkZWYgV0lUSF9MREFQX1BVQktFWQotKyAgICAgICAgbGRhcF9vcHRfdCBscGs7Ci0rI2Vu
ZGlmCi0gCi0gCWludAludW1fcGVybWl0dGVkX29wZW5zOwotIAotZGlmZiAtTnVhciAtLWV4
Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRlICcqLnJlaicgc3NoZC5jIHNzaGQuYwotLS0tIHNz
aGQuYwkyMDA4LTA3LTExIDAwOjM2OjQ5LjAwMDAwMDAwMCAtMDcwMAotKysrIHNzaGQuYwky
MDA4LTA4LTIzIDE1OjAyOjQ3LjAwMDAwMDAwMCAtMDcwMAotQEAgLTEyNyw2ICsxMjcsMTAg
QEAKLSBpbnQgZGVueV9zZXZlcml0eTsKLSAjZW5kaWYgLyogTElCV1JBUCAqLwotIAotKyNp
ZmRlZiBXSVRIX0xEQVBfUFVCS0VZCi0rI2luY2x1ZGUgImxkYXBhdXRoLmgiCi0rI2VuZGlm
Ci0rCi0gI2lmbmRlZiBPX05PQ1RUWQotICNkZWZpbmUgT19OT0NUVFkJMAotICNlbmRpZgot
QEAgLTE0ODQsNiArMTQ4OCwxNiBAQAotIAkJZXhpdCgxKTsKLSAJfQotIAotKyNpZmRlZiBX
SVRIX0xEQVBfUFVCS0VZCi0rICAgIC8qIGxkYXBfb3B0aW9uc19wcmludCgmb3B0aW9ucy5s
cGspOyAqLwotKyAgICAvKiBYWFggaW5pdGlhbGl6ZS9jaGVjayBsZGFwIGNvbm5lY3Rpb24g
YW5kIHNldCAqTEQgKi8KLSsgICAgaWYgKG9wdGlvbnMubHBrLm9uKSB7Ci0rICAgICAgICBp
ZiAob3B0aW9ucy5scGsubF9jb25mICYmIChsZGFwX3BhcnNlX2xjb25mKCZvcHRpb25zLmxw
aykgPCAwKSApCi0rICAgICAgICAgICAgZXJyb3IoIltMREFQXSBjb3VsZCBub3QgcGFyc2Ug
JXMiLCBvcHRpb25zLmxway5sX2NvbmYpOwotKyAgICAgICAgaWYgKGxkYXBfY29ubmVjdCgm
b3B0aW9ucy5scGspIDwgMCkKLSsgICAgICAgICAgICBlcnJvcigiW0xEQVBdIGNvdWxkIG5v
dCBpbml0aWFsaXplIGxkYXAgY29ubmVjdGlvbiIpOwotKyAgICB9Ci0rI2VuZGlmCi0gCWRl
YnVnKCJzc2hkIHZlcnNpb24gJS4xMDBzIiwgU1NIX1JFTEVBU0UpOwotIAotIAkvKiBTdG9y
ZSBwcml2aWxlZ2Ugc2VwYXJhdGlvbiB1c2VyIGZvciBsYXRlciB1c2UgaWYgcmVxdWlyZWQu
ICovCi1kaWZmIC1OdWFyIC0tZXhjbHVkZSAnKi5vcmlnJyAtLWV4Y2x1ZGUgJyoucmVqJyBz
c2hkX2NvbmZpZyBzc2hkX2NvbmZpZwotLS0tIHNzaGRfY29uZmlnCTIwMDgtMDctMDIgMDU6
MzU6NDMuMDAwMDAwMDAwIC0wNzAwCi0rKysgc3NoZF9jb25maWcJMjAwOC0wOC0yMyAxNTow
Mjo0Ny4wMDAwMDAwMDAgLTA3MDAKLUBAIC0xMDksNiArMTA5LDIxIEBACi0gIyBubyBkZWZh
dWx0IGJhbm5lciBwYXRoCi0gI0Jhbm5lciBub25lCi0gCi0rIyBoZXJlIGFyZSB0aGUgbmV3
IHBhdGNoZWQgbGRhcCByZWxhdGVkIHRva2VucwotKyMgZW50cmllcyBpbiB5b3VyIExEQVAg
bXVzdCBoYXZlIHBvc2l4QWNjb3VudCAmIGxkYXBQdWJsaWNLZXkgb2JqZWN0Y2xhc3MKLSsj
VXNlTFBLIHllcwotKyNMcGtMZGFwQ29uZiAvZXRjL2xkYXAuY29uZgotKyNMcGtTZXJ2ZXJz
ICBsZGFwOi8vMTAuMS43LjEvIGxkYXA6Ly8xMC4xLjcuMi8KLSsjTHBrVXNlckROICAgb3U9
dXNlcnMsZGM9cGhlYXIsZGM9b3JnCi0rI0xwa0dyb3VwRE4gIG91PWdyb3VwcyxkYz1waGVh
cixkYz1vcmcKLSsjTHBrQmluZEROIGNuPU1hbmFnZXIsZGM9cGhlYXIsZGM9b3JnCi0rI0xw
a0JpbmRQdyBzZWNyZXQKLSsjTHBrU2VydmVyR3JvdXAgbWFpbAotKyNMcGtGaWx0ZXIgKGhv
c3RBY2Nlc3M9bWFzdGVyLnBoZWFyLm9yZykKLSsjTHBrRm9yY2VUTFMgbm8KLSsjTHBrU2Vh
cmNoVGltZWxpbWl0IDMKLSsjTHBrQmluZFRpbWVsaW1pdCAzCi0rCi0gIyBvdmVycmlkZSBk
ZWZhdWx0IG9mIG5vIHN1YnN5c3RlbXMKLSBTdWJzeXN0ZW0Jc2Z0cAkvdXNyL2xpYmV4ZWMv
c2Z0cC1zZXJ2ZXIKLSAKLWRpZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhjbHVk
ZSAnKi5yZWonIHNzaGRfY29uZmlnLjUgc3NoZF9jb25maWcuNQotLS0tIHNzaGRfY29uZmln
LjUJMjAwOC0wNy0wMiAwNTozNTo0My4wMDAwMDAwMDAgLTA3MDAKLSsrKyBzc2hkX2NvbmZp
Zy41CTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwCi1AQCAtMTAwMyw2ICsx
MDAzLDYyIEBACi0gcHJvZ3JhbS4KLSBUaGUgZGVmYXVsdCBpcwotIC5QYSAvdXNyL1gxMVI2
L2Jpbi94YXV0aCAuCi0rLkl0IENtIFVzZUxQSwotK1NwZWNpZmllcyB3aGV0aGVyIExEQVAg
cHVibGljIGtleSByZXRyaWV2YWwgbXVzdCBiZSB1c2VkIG9yIG5vdC4gSXQgYWxsb3cKLSth
biBlYXN5IGNlbnRyYWxpc2F0aW9uIG9mIHB1YmxpYyBrZXlzIHdpdGhpbiBhbiBMREFQIGRp
cmVjdG9yeS4gVGhlIGFyZ3VtZW50IG11c3QgYmUKLSsuRHEgeWVzCi0rb3IKLSsuRHEgbm8g
LgotKy5JdCBDbSBMcGtMZGFwQ29uZgotK1NwZWNpZmllcyB3aGV0aGVyIExEQVAgUHVibGlj
IGtleXMgc2hvdWxkIHBhcnNlIHRoZSBzcGVjaWZpZWQgbGRhcC5jb25mIGZpbGUKLStpbnN0
ZWFkIG9mIHNzaGRfY29uZmlnIFRva2Vucy4gVGhlIGFyZ3VtZW50IG11c3QgYmUgYSB2YWxp
ZCBwYXRoIHRvIGFuIGxkYXAuY29uZgotK2ZpbGUgbGlrZQotKy5QYSAvZXRjL2xkYXAuY29u
ZgotKy5JdCBDbSBMcGtTZXJ2ZXJzCi0rU3BlY2lmaWVzIExEQVAgb25lIG9yIG1vcmUgWzpz
cGFjZTpdIHNlcGFyYXRlZCBzZXJ2ZXIncyB1cmwgdGhlIGZvbGxvd2luZyBmb3JtIG1heSBi
ZSB1c2VkOgotKy5QcAotK0xwa1NlcnZlcnMgbGRhcHM6Ly8xMjcuMC4wLjEgbGRhcDovLzEy
Ny4wLjAuMiBsZGFwOi8vMTI3LjAuMC4zCi0rLkl0IENtIExwa1VzZXJETgotK1NwZWNpZmll
cyB0aGUgTERBUCB1c2VyIEROLgotKy5QcAotK0xwa1VzZXJETiBvdT11c2VycyxkYz1waGVh
cixkYz1vcmcKLSsuSXQgQ20gTHBrR3JvdXBETgotK1NwZWNpZmllcyB0aGUgTERBUCBncm91
cHMgRE4uCi0rLlBwCi0rTHBrR3JvdXBETiBvdT1ncm91cHMsZGM9cGhlYXIsZGM9b3JnCi0r
Lkl0IENtIExwa0JpbmRETgotK1NwZWNpZmllcyB0aGUgTERBUCBiaW5kIEROIHRvIHVzZSBp
ZiBuZWNlc3NhcnkuCi0rLlBwCi0rTHBrQmluZEROIGNuPU1hbmFnZXIsZGM9cGhlYXIsZGM9
b3JnCi0rLkl0IENtIExwa0JpbmRQdwotK1NwZWNpZmllcyB0aGUgTERBUCBiaW5kIGNyZWRl
bnRpYWwuIAotKy5QcAotK0xwa0JpbmRQdyBzZWNyZXQKLSsuSXQgQ20gTHBrU2VydmVyR3Jv
dXAKLStTcGVjaWZpZXMgb25lIG9yIG1vcmUgWzpzcGFjZTpdIHNlcGFyYXRlZCBncm91cCB0
aGUgc2VydmVyIGlzIHBhcnQgb2YuIAotKy5QcAotK0xwa1NlcnZlckdyb3VwIHVuaXggbWFp
bCBwcm9kCi0rLkl0IENtIExwa0ZpbHRlcgotK1NwZWNpZmllcyBhbiBhZGRpdGlvbmFsIExE
QVAgZmlsdGVyIHRvIHVzZSBmb3IgZmluZGluZyBTU0gga2V5cwotKy5QcAotK0xwa0ZpbHRl
ciAoaG9zdEFjY2Vzcz1tYXN0ZXIucGhlYXIub3JnKQotKy5JdCBDbSBMcGtGb3JjZVRMUwot
K1NwZWNpZmllcyBpZiB0aGUgTERBUCBzZXJ2ZXIgY29ubmVjdGlvbiBtdXN0IGJlIHRyaWVk
LCBmb3JjZWQgb3Igbm90IHVzZWQuIFRoZSBhcmd1bWVudCBtdXN0IGJlIAotKy5EcSB5ZXMK
LStvcgotKy5EcSBubwotK29yCi0rLkRxIHRyeSAuCi0rLkl0IENtIExwa1NlYXJjaFRpbWVs
aW1pdAotK1NlcGNpZmllcyB0aGUgc2VhcmNoIHRpbWUgbGltaXQgYmVmb3JlIHRoZSBzZWFy
Y2ggaXMgY29uc2lkZXJlZCBvdmVyLiB2YWx1ZSBpcwotK2luIHNlY29uZHMuCi0rLlBwCi0r
THBrU2VhcmNoVGltZWxpbWl0IDMKLSsuSXQgQ20gTHBrQmluZFRpbWVsaW1pdAotK1NlcGNp
ZmllcyB0aGUgYmluZCB0aW1lIGxpbWl0IGJlZm9yZSB0aGUgY29ubmVjdGlvbiBpcyBjb25z
aWRlcmVkIGRlYWQuIHZhbHVlIGlzCi0raW4gc2Vjb25kcy4KLSsuUHAKLStMcGtCaW5kVGlt
ZWxpbWl0IDMKLSAuRWwKLSAuU2ggVElNRSBGT1JNQVRTCi0gLlhyIHNzaGQgOApkaWZmIC1O
cnUgL2hvbWUvZ2F3cmlsb2ZmL2xway9vcGVuc3NoLXBvcnRhYmxlL2ZpbGVzL2NvbnRyaWIt
b3BlbnNzaC1scGstNS4zcDEtMC4zLjEwLnBhdGNoIC9ob21lL2dhd3JpbG9mZi9vcGVuc3No
LXBvcnRhYmxlL2ZpbGVzL2NvbnRyaWItb3BlbnNzaC1scGstNS4zcDEtMC4zLjEwLnBhdGNo
Ci0tLSAvaG9tZS9nYXdyaWxvZmYvbHBrL29wZW5zc2gtcG9ydGFibGUvZmlsZXMvY29udHJp
Yi1vcGVuc3NoLWxway01LjNwMS0wLjMuMTAucGF0Y2gJMTk3MC0wMS0wMSAwMzowMDowMC4w
MDAwMDAwMDAgKzAzMDAKKysrIC9ob21lL2dhd3JpbG9mZi9vcGVuc3NoLXBvcnRhYmxlL2Zp
bGVzL2NvbnRyaWItb3BlbnNzaC1scGstNS4zcDEtMC4zLjEwLnBhdGNoCTIwMTAtMTItMjEg
MTE6MzA6MDIuMDAwMDAwMDAwICswMjAwCkBAIC0wLDAgKzEsMTg4MSBAQAorZGlmZiAtTnVh
ciAtLWV4Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRlICcqLnJlaicgYXV0aDItcHVia2V5LmMg
YXV0aDItcHVia2V5LmMKKy0tLSBhdXRoMi1wdWJrZXkuYwkyMDA4LTA3LTAzIDE5OjU0OjI1
LjAwMDAwMDAwMCAtMDcwMAorKysrIGF1dGgyLXB1YmtleS5jCTIwMDgtMDgtMjMgMTU6MDI6
NDcuMDAwMDAwMDAwIC0wNzAwCitAQCAtNTUsNiArNTUsMTAgQEAKKyAjaW5jbHVkZSAibW9u
aXRvcl93cmFwLmgiCisgI2luY2x1ZGUgIm1pc2MuaCIKKyAKKysjaWZkZWYgV0lUSF9MREFQ
X1BVQktFWQorKyNpbmNsdWRlICJsZGFwYXV0aC5oIgorKyNlbmRpZgorKworIC8qIGltcG9y
dCAqLworIGV4dGVybiBTZXJ2ZXJPcHRpb25zIG9wdGlvbnM7CisgZXh0ZXJuIHVfY2hhciAq
c2Vzc2lvbl9pZDI7CitAQCAtMTgzLDEwICsxODcsNzkgQEAKKyAJdV9sb25nIGxpbmVudW0g
PSAwOworIAlLZXkgKmZvdW5kOworIAljaGFyICpmcDsKKysjaWZkZWYgV0lUSF9MREFQX1BV
QktFWQorKwlsZGFwX2tleV90ICogazsKKysJdW5zaWduZWQgaW50IGkgPSAwOworKyNlbmRp
ZgorIAorIAkvKiBUZW1wb3JhcmlseSB1c2UgdGhlIHVzZXIncyB1aWQuICovCisgCXRlbXBv
cmFyaWx5X3VzZV91aWQocHcpOworIAorKyNpZmRlZiBXSVRIX0xEQVBfUFVCS0VZCisrIAlm
b3VuZF9rZXkgPSAwOworKyAJLyogYWxsb2NhdGUgYSBuZXcga2V5IHR5cGUgKi8KKysgCWZv
dW5kID0ga2V5X25ldyhrZXktPnR5cGUpOworKyAKKysgCS8qIGZpcnN0IGNoZWNrIGlmIHRo
ZSBvcHRpb25zIGlzIGVuYWJsZWQsIHRoZW4gdHJ5Li4gKi8KKysJaWYgKG9wdGlvbnMubHBr
Lm9uKSB7CisrCSAgICBkZWJ1ZygiW0xEQVBdIHRyeWluZyBMREFQIGZpcnN0IHVpZD0lcyIs
cHctPnB3X25hbWUpOworKwkgICAgaWYgKGxkYXBfaXNtZW1iZXIoJm9wdGlvbnMubHBrLCBw
dy0+cHdfbmFtZSkgPiAwKSB7CisrCQlpZiAoKGsgPSBsZGFwX2dldHVzZXJrZXkoJm9wdGlv
bnMubHBrLCBwdy0+cHdfbmFtZSkpICE9IE5VTEwpIHsKKysJCSAgICAvKiBTa2lwIGxlYWRp
bmcgd2hpdGVzcGFjZSwgZW1wdHkgYW5kIGNvbW1lbnQgbGluZXMuICovCisrCQkgICAgZm9y
IChpID0gMCA7IGkgPCBrLT5udW0gOyBpKyspIHsKKysJCQkvKiBkb250IGZvcmdldCBpZiBt
dWx0aXBsZSBrZXlzIHRvIHJlc2V0IG9wdGlvbnMgKi8KKysJCQljaGFyICpjcCwgKm9wdGlv
bnMgPSBOVUxMOworKworKwkJCWZvciAoY3AgPSAoY2hhciAqKWstPmtleXNbaV0tPmJ2X3Zh
bDsgKmNwID09ICcgJyB8fCAqY3AgPT0gJ1x0JzsgY3ArKykKKysJCQkgICAgOworKwkJCWlm
ICghKmNwIHx8ICpjcCA9PSAnXG4nIHx8ICpjcCA9PSAnIycpCisrCQkJICAgIGNvbnRpbnVl
OworKworKwkJCWlmIChrZXlfcmVhZChmb3VuZCwgJmNwKSAhPSAxKSB7CisrCQkJICAgIC8q
IG5vIGtleT8gIGNoZWNrIGlmIHRoZXJlIGFyZSBvcHRpb25zIGZvciB0aGlzIGtleSAqLwor
KwkJCSAgICBpbnQgcXVvdGVkID0gMDsKKysJCQkgICAgZGVidWcyKCJbTERBUF0gdXNlcl9r
ZXlfYWxsb3dlZDogY2hlY2sgb3B0aW9uczogJyVzJyIsIGNwKTsKKysJCQkgICAgb3B0aW9u
cyA9IGNwOworKwkJCSAgICBmb3IgKDsgKmNwICYmIChxdW90ZWQgfHwgKCpjcCAhPSAnICcg
JiYgKmNwICE9ICdcdCcpKTsgY3ArKykgeworKwkJCQlpZiAoKmNwID09ICdcXCcgJiYgY3Bb
MV0gPT0gJyInKQorKwkJCQkgICAgY3ArKzsJLyogU2tpcCBib3RoICovCisrCQkJCWVsc2Ug
aWYgKCpjcCA9PSAnIicpCisrCQkJCSAgICBxdW90ZWQgPSAhcXVvdGVkOworKwkJCSAgICB9
CisrCQkJICAgIC8qIFNraXAgcmVtYWluaW5nIHdoaXRlc3BhY2UuICovCisrCQkJICAgIGZv
ciAoOyAqY3AgPT0gJyAnIHx8ICpjcCA9PSAnXHQnOyBjcCsrKQorKwkJCQk7CisrCQkJICAg
IGlmIChrZXlfcmVhZChmb3VuZCwgJmNwKSAhPSAxKSB7CisrCQkJCWRlYnVnMigiW0xEQVBd
IHVzZXJfa2V5X2FsbG93ZWQ6IGFkdmFuY2U6ICclcyciLCBjcCk7CisrCQkJCS8qIHN0aWxs
IG5vIGtleT8gIGFkdmFuY2UgdG8gbmV4dCBsaW5lKi8KKysJCQkJY29udGludWU7CisrCQkJ
ICAgIH0KKysJCQl9CisrCisrCQkJaWYgKGtleV9lcXVhbChmb3VuZCwga2V5KSAmJgorKwkJ
CQlhdXRoX3BhcnNlX29wdGlvbnMocHcsIG9wdGlvbnMsIGZpbGUsIGxpbmVudW0pID09IDEp
IHsKKysJCQkgICAgZm91bmRfa2V5ID0gMTsKKysJCQkgICAgZGVidWcoIltMREFQXSBtYXRj
aGluZyBrZXkgZm91bmQiKTsKKysJCQkgICAgZnAgPSBrZXlfZmluZ2VycHJpbnQoZm91bmQs
IFNTSF9GUF9NRDUsIFNTSF9GUF9IRVgpOworKwkJCSAgICB2ZXJib3NlKCJbTERBUF0gRm91
bmQgbWF0Y2hpbmcgJXMga2V5OiAlcyIsIGtleV90eXBlKGZvdW5kKSwgZnApOworKworKwkJ
CSAgICAvKiByZXN0b3JpbmcgbWVtb3J5ICovCisrCQkJICAgIGxkYXBfa2V5c19mcmVlKGsp
OworKwkJCSAgICB4ZnJlZShmcCk7CisrCQkJICAgIHJlc3RvcmVfdWlkKCk7CisrCQkJICAg
IGtleV9mcmVlKGZvdW5kKTsKKysJCQkgICAgcmV0dXJuIGZvdW5kX2tleTsKKysJCQkgICAg
YnJlYWs7CisrCQkJfQorKwkJICAgIH0vKiBlbmQgb2YgTERBUCBmb3IoKSAqLworKwkJfSBl
bHNlIHsKKysJCSAgICBsb2dpdCgiW0xEQVBdIG5vIGtleXMgZm91bmQgZm9yICclcychIiwg
cHctPnB3X25hbWUpOworKwkJfQorKwkgICAgfSBlbHNlIHsKKysJCWxvZ2l0KCJbTERBUF0g
JyVzJyBpcyBub3QgaW4gJyVzJyIsIHB3LT5wd19uYW1lLCBvcHRpb25zLmxway5zZ3JvdXAp
OworKwkgICAgfQorKwl9CisrI2VuZGlmCisgCWRlYnVnKCJ0cnlpbmcgcHVibGljIGtleSBm
aWxlICVzIiwgZmlsZSk7CisgCWYgPSBhdXRoX29wZW5rZXlmaWxlKGZpbGUsIHB3LCBvcHRp
b25zLnN0cmljdF9tb2Rlcyk7CisgCitkaWZmIC1OdWFyIC0tZXhjbHVkZSAnKi5vcmlnJyAt
LWV4Y2x1ZGUgJyoucmVqJyBhdXRoLXJzYS5jIGF1dGgtcnNhLmMKKy0tLSBhdXRoLXJzYS5j
CTIwMDgtMDctMDIgMDU6Mzc6MzAuMDAwMDAwMDAwIC0wNzAwCisrKysgYXV0aC1yc2EuYwky
MDA4LTA4LTIzIDE1OjAyOjQ3LjAwMDAwMDAwMCAtMDcwMAorQEAgLTE3NCwxMCArMTc0LDk2
IEBACisgCUZJTEUgKmY7CisgCXVfbG9uZyBsaW5lbnVtID0gMDsKKyAJS2V5ICprZXk7Cisr
I2lmZGVmIFdJVEhfTERBUF9QVUJLRVkKKysJbGRhcF9rZXlfdCAqIGs7CisrCXVuc2lnbmVk
IGludCBpID0gMDsKKysjZW5kaWYKKyAKKyAJLyogVGVtcG9yYXJpbHkgdXNlIHRoZSB1c2Vy
J3MgdWlkLiAqLworIAl0ZW1wb3JhcmlseV91c2VfdWlkKHB3KTsKKyAKKysjaWZkZWYgV0lU
SF9MREFQX1BVQktFWQorKwkvKiBoZXJlIGlzIHRoZSBqb2IgKi8KKysJa2V5ID0ga2V5X25l
dyhLRVlfUlNBMSk7CisrCisrCWlmIChvcHRpb25zLmxway5vbikgeworKwkgICAgZGVidWco
IltMREFQXSB0cnlpbmcgTERBUCBmaXJzdCB1aWQ9JXMiLCBwdy0+cHdfbmFtZSk7CisrCSAg
ICBpZiAoIGxkYXBfaXNtZW1iZXIoJm9wdGlvbnMubHBrLCBwdy0+cHdfbmFtZSkgPiAwKSB7
CisrCQlpZiAoIChrID0gbGRhcF9nZXR1c2Vya2V5KCZvcHRpb25zLmxwaywgcHctPnB3X25h
bWUpKSAhPSBOVUxMKSB7CisrCQkgICAgZm9yIChpID0gMCA7IGkgPCBrLT5udW0gOyBpKysp
IHsKKysJCQljaGFyICpjcCwgKm9wdGlvbnMgPSBOVUxMOworKworKwkJCWZvciAoY3AgPSBr
LT5rZXlzW2ldLT5idl92YWw7ICpjcCA9PSAnICcgfHwgKmNwID09ICdcdCc7IGNwKyspCisr
CQkJICAgIDsKKysJCQlpZiAoISpjcCB8fCAqY3AgPT0gJ1xuJyB8fCAqY3AgPT0gJyMnKQor
KwkJCSAgICBjb250aW51ZTsKKysKKysJCQkvKgorKwkJCSogQ2hlY2sgaWYgdGhlcmUgYXJl
IG9wdGlvbnMgZm9yIHRoaXMga2V5LCBhbmQgaWYgc28sCisrCQkJKiBzYXZlIHRoZWlyIHN0
YXJ0aW5nIGFkZHJlc3MgYW5kIHNraXAgdGhlIG9wdGlvbiBwYXJ0CisrCQkJKiBmb3Igbm93
LiAgSWYgdGhlcmUgYXJlIG5vIG9wdGlvbnMsIHNldCB0aGUgc3RhcnRpbmcKKysJCQkqIGFk
ZHJlc3MgdG8gTlVMTC4KKysJCQkgKi8KKysJCQlpZiAoKmNwIDwgJzAnIHx8ICpjcCA+ICc5
JykgeworKwkJCSAgICBpbnQgcXVvdGVkID0gMDsKKysJCQkgICAgb3B0aW9ucyA9IGNwOwor
KwkJCSAgICBmb3IgKDsgKmNwICYmIChxdW90ZWQgfHwgKCpjcCAhPSAnICcgJiYgKmNwICE9
ICdcdCcpKTsgY3ArKykgeworKwkJCQlpZiAoKmNwID09ICdcXCcgJiYgY3BbMV0gPT0gJyIn
KQorKwkJCQkgICAgY3ArKzsJLyogU2tpcCBib3RoICovCisrCQkJCWVsc2UgaWYgKCpjcCA9
PSAnIicpCisrCQkJCSAgICBxdW90ZWQgPSAhcXVvdGVkOworKwkJCSAgICB9CisrCQkJfSBl
bHNlCisrCQkJICAgIG9wdGlvbnMgPSBOVUxMOworKworKwkJCS8qIFBhcnNlIHRoZSBrZXkg
ZnJvbSB0aGUgbGluZS4gKi8KKysJCQlpZiAoaG9zdGZpbGVfcmVhZF9rZXkoJmNwLCAmYml0
cywga2V5KSA9PSAwKSB7CisrCQkJICAgIGRlYnVnKCJbTERBUF0gbGluZSAlZDogbm9uIHNz
aDEga2V5IHN5bnRheCIsIGkpOworKwkJCSAgICBjb250aW51ZTsKKysJCQl9CisrCQkJLyog
Y3Agbm93IHBvaW50cyB0byB0aGUgY29tbWVudCBwYXJ0LiAqLworKworKwkJCS8qIENoZWNr
IGlmIHRoZSB3ZSBoYXZlIGZvdW5kIHRoZSBkZXNpcmVkIGtleSAoaWRlbnRpZmllZCBieSBp
dHMgbW9kdWx1cykuICovCisrCQkJaWYgKEJOX2NtcChrZXktPnJzYS0+biwgY2xpZW50X24p
ICE9IDApCisrCQkJICAgIGNvbnRpbnVlOworKworKwkJCS8qIGNoZWNrIHRoZSByZWFsIGJp
dHMgICovCisrCQkJaWYgKGJpdHMgIT0gKHVuc2lnbmVkIGludClCTl9udW1fYml0cyhrZXkt
PnJzYS0+bikpCisrCQkJICAgIGxvZ2l0KCJbTERBUF0gV2FybmluZzogbGRhcCwgbGluZSAl
bHU6IGtleXNpemUgbWlzbWF0Y2g6ICIKKysJCQkJICAgICJhY3R1YWwgJWQgdnMuIGFubm91
bmNlZCAlZC4iLCAodW5zaWduZWQgbG9uZylpLCBCTl9udW1fYml0cyhrZXktPnJzYS0+biks
IGJpdHMpOworKworKwkJCS8qIFdlIGhhdmUgZm91bmQgdGhlIGRlc2lyZWQga2V5LiAqLwor
KwkJCS8qCisrCQkJKiBJZiBvdXIgb3B0aW9ucyBkbyBub3QgYWxsb3cgdGhpcyBrZXkgdG8g
YmUgdXNlZCwKKysJCQkqIGRvIG5vdCBzZW5kIGNoYWxsZW5nZS4KKysJCQkgKi8KKysJCQlp
ZiAoIWF1dGhfcGFyc2Vfb3B0aW9ucyhwdywgb3B0aW9ucywgIltMREFQXSIsICh1bnNpZ25l
ZCBsb25nKSBpKSkKKysJCQkgICAgY29udGludWU7CisrCisrCQkJLyogYnJlYWsgb3V0LCB0
aGlzIGtleSBpcyBhbGxvd2VkICovCisrCQkJYWxsb3dlZCA9IDE7CisrCisrCQkJLyogYWRk
IHRoZSByZXR1cm4gc3R1ZmYgZXRjLi4uICovCisrCQkJLyogUmVzdG9yZSB0aGUgcHJpdmls
ZWdlZCB1aWQuICovCisrCQkJcmVzdG9yZV91aWQoKTsKKysKKysJCQkvKiByZXR1cm4ga2V5
IGlmIGFsbG93ZWQgKi8KKysJCQlpZiAoYWxsb3dlZCAmJiBya2V5ICE9IE5VTEwpCisrCQkJ
ICAgICpya2V5ID0ga2V5OworKwkJCWVsc2UKKysJCQkgICAga2V5X2ZyZWUoa2V5KTsKKysK
KysJCQlsZGFwX2tleXNfZnJlZShrKTsKKysJCQlyZXR1cm4gKGFsbG93ZWQpOworKwkJICAg
IH0KKysJCX0gZWxzZSB7CisrCQkgICAgbG9naXQoIltMREFQXSBubyBrZXlzIGZvdW5kIGZv
ciAnJXMnISIsIHB3LT5wd19uYW1lKTsKKysJCX0KKysJICAgIH0gZWxzZSB7CisrCQlsb2dp
dCgiW0xEQVBdICclcycgaXMgbm90IGluICclcyciLCBwdy0+cHdfbmFtZSwgb3B0aW9ucy5s
cGsuc2dyb3VwKTsKKysJICAgIH0KKysJfQorKyNlbmRpZgorIAkvKiBUaGUgYXV0aG9yaXpl
ZCBrZXlzLiAqLworIAlmaWxlID0gYXV0aG9yaXplZF9rZXlzX2ZpbGUocHcpOworIAlkZWJ1
ZygidHJ5aW5nIHB1YmxpYyBSU0Ega2V5IGZpbGUgJXMiLCBmaWxlKTsKK2RpZmYgLU51YXIg
LS1leGNsdWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIGNvbmZpZy5oLmluIGNvbmZp
Zy5oLmluCistLS0gY29uZmlnLmguaW4JMjAwOC0wNy0yMSAwMTozMDo0OS4wMDAwMDAwMDAg
LTA3MDAKKysrKyBjb25maWcuaC5pbgkyMDA4LTA4LTIzIDE1OjAyOjQ3LjAwMDAwMDAwMCAt
MDcwMAorQEAgLTU3NSw2ICs1NzUsOSBAQAorIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZl
IHRoZSA8bGludXgvaWZfdHVuLmg+IGhlYWRlciBmaWxlLiAqLworICN1bmRlZiBIQVZFX0xJ
TlVYX0lGX1RVTl9ICisgCisrLyogRGVmaW5lIGlmIHlvdSB3YW50IExEQVAgc3VwcG9ydCAq
LworKyN1bmRlZiBXSVRIX0xEQVBfUFVCS0VZCisrCisgLyogRGVmaW5lIGlmIHlvdXIgbGli
cmFyaWVzIGRlZmluZSBsb2dpbigpICovCisgI3VuZGVmIEhBVkVfTE9HSU4KKyAKK2RpZmYg
LU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIGNvbmZpZ3VyZSBj
b25maWd1cmUKKy0tLSBjb25maWd1cmUJMjAwOC0wNy0yMSAwMTozMDo1MC4wMDAwMDAwMDAg
LTA3MDAKKysrKyBjb25maWd1cmUJMjAwOC0wOC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3
MDAKK0BAIC0xNDY4LDYgKzE0NjgsNyBAQAorICAgLS13aXRoLXRjcC13cmFwcGVyc1s9UEFU
SF0gRW5hYmxlIHRjcHdyYXBwZXJzIHN1cHBvcnQgKG9wdGlvbmFsbHkgaW4gUEFUSCkKKyAg
IC0td2l0aC1saWJlZGl0Wz1QQVRIXSAgIEVuYWJsZSBsaWJlZGl0IHN1cHBvcnQgZm9yIHNm
dHAKKyAgIC0td2l0aC1hdWRpdD1tb2R1bGUgICAgIEVuYWJsZSBFWFBFUklNRU5UQUwgYXVk
aXQgc3VwcG9ydCAobW9kdWxlcz1kZWJ1Zyxic20pCisrICAtLXdpdGgtbGRhcFs9UEFUSF0g
ICAgICBFbmFibGUgTERBUCBwdWJrZXkgc3VwcG9ydCAob3B0aW9uYWxseSBpbiBQQVRIKQor
ICAgLS13aXRoLXNzbC1kaXI9UEFUSCAgICAgU3BlY2lmeSBwYXRoIHRvIE9wZW5TU0wgaW5z
dGFsbGF0aW9uCisgICAtLXdpdGhvdXQtb3BlbnNzbC1oZWFkZXItY2hlY2sgRGlzYWJsZSBP
cGVuU1NMIHZlcnNpb24gY29uc2lzdGVuY3kgY2hlY2sKKyAgIC0td2l0aC1zc2wtZW5naW5l
ICAgICAgIEVuYWJsZSBPcGVuU1NMIChoYXJkd2FyZSkgRU5HSU5FIHN1cHBvcnQKK0BAIC0x
MzQxMSw2ICsxMzQxMiw4NSBAQAorIGZpCisgCisgCisrIyBDaGVjayB3aGV0aGVyIHVzZXIg
d2FudHMgTERBUCBzdXBwb3J0CisrTERBUF9NU0c9Im5vIgorKworKyMgQ2hlY2sgd2hldGhl
ciAtLXdpdGgtbGRhcCB3YXMgZ2l2ZW4uCisraWYgdGVzdCAiJHt3aXRoX2xkYXArc2V0fSIg
PSBzZXQ7IHRoZW4KKysgIHdpdGh2YWw9JHdpdGhfbGRhcDsKKysJCWlmIHRlc3QgIngkd2l0
aHZhbCIgIT0gInhubyIgOyB0aGVuCisrCisrCQkJaWYgdGVzdCAieCR3aXRodmFsIiAhPSAi
eHllcyIgOyB0aGVuCisrCQkJCUNQUEZMQUdTPSIkQ1BQRkxBR1MgLUkke3dpdGh2YWx9L2lu
Y2x1ZGUiCisrCQkJCUxERkxBR1M9IiRMREZMQUdTIC1MJHt3aXRodmFsfS9saWIiCisrCQkJ
ZmkKKysKKysKKytjYXQgPj5jb25mZGVmcy5oIDw8XF9BQ0VPRgorKyNkZWZpbmUgV0lUSF9M
REFQX1BVQktFWSAxCisrX0FDRU9GCisrCisrCQkJTElCUz0iLWxsZGFwICRMSUJTIgorKwkJ
CUxEQVBfTVNHPSJ5ZXMiCisrCisrCQkJeyBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tp
bmcgZm9yIExEQVAgc3VwcG9ydCIgPiY1CisrZWNobyAkRUNIT19OICJjaGVja2luZyBmb3Ig
TERBUCBzdXBwb3J0Li4uICRFQ0hPX0MiID4mNjsgfQorKwkJCWNhdCA+Y29uZnRlc3QuJGFj
X2V4dCA8PF9BQ0VPRgorKy8qIGNvbmZkZWZzLmguICAqLworK19BQ0VPRgorK2NhdCBjb25m
ZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dAorK2NhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxf
QUNFT0YKKysvKiBlbmQgY29uZmRlZnMuaC4gICovCisrI2luY2x1ZGUgPHN5cy90eXBlcy5o
PgorKwkJCQkgI2luY2x1ZGUgPGxkYXAuaD4KKytpbnQKKyttYWluICgpCisreworKyh2b2lk
KWxkYXBfaW5pdCgwLCAwKTsKKysgIDsKKysgIHJldHVybiAwOworK30KKytfQUNFT0YKKyty
bSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CisraWYgeyAoYWNfdHJ5PSIkYWNfY29tcGlsZSIK
KytjYXNlICIoKCRhY190cnkiIGluCisrICAqXCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9l
Y2hvPVwkYWNfdHJ5OzsKKysgICopIGFjX3RyeV9lY2hvPSRhY190cnk7OworK2VzYWMKKytl
dmFsICJlY2hvIFwiXCRhc19tZTokTElORU5POiAkYWNfdHJ5X2VjaG9cIiIpID4mNQorKyAg
KGV2YWwgIiRhY19jb21waWxlIikgMj5jb25mdGVzdC5lcjEKKysgIGFjX3N0YXR1cz0kPwor
KyAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKKysgIHJtIC1m
IGNvbmZ0ZXN0LmVyMQorKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKysgIGVjaG8gIiRhc19t
ZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIChleGl0ICRhY19zdGF0dXMp
OyB9ICYmIHsKKysJIHRlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIiB8fAorKwkgdGVzdCAh
IC1zIGNvbmZ0ZXN0LmVycgorKyAgICAgICB9ICYmIHRlc3QgLXMgY29uZnRlc3QuJGFjX29i
amV4dDsgdGhlbgorKyAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiB5ZXMiID4m
NQorK2VjaG8gIiR7RUNIT19UfXllcyIgPiY2OyB9CisrZWxzZQorKyAgZWNobyAiJGFzX21l
OiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKKytzZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRh
Y19leHQgPiY1CisrCisrCisrCQkJCSAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiByZXN1
bHQ6IG5vIiA+JjUKKytlY2hvICIke0VDSE9fVH1ubyIgPiY2OyB9CisrCQkJCQl7IHsgZWNo
byAiJGFzX21lOiRMSU5FTk86IGVycm9yOiAqKiBJbmNvbXBsZXRlIG9yIG1pc3NpbmcgbGRh
cCBsaWJyYXJpZXMgKioiID4mNQorK2VjaG8gIiRhc19tZTogZXJyb3I6ICoqIEluY29tcGxl
dGUgb3IgbWlzc2luZyBsZGFwIGxpYnJhcmllcyAqKiIgPiYyO30KKysgICB7IChleGl0IDEp
OyBleGl0IDE7IH07IH0KKysKKysKKytmaQorKworK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJy
IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorKwkJZmkKKysKKysKKytm
aQorKworKworIAorIAorIAorQEAgLTMyMjI1LDYgKzMyMzA1LDcgQEAKKyBlY2hvICIgICAg
ICAgICAgICAgICAgIFNtYXJ0Y2FyZCBzdXBwb3J0OiAkU0NBUkRfTVNHIgorIGVjaG8gIiAg
ICAgICAgICAgICAgICAgICAgIFMvS0VZIHN1cHBvcnQ6ICRTS0VZX01TRyIKKyBlY2hvICIg
ICAgICAgICAgICAgIFRDUCBXcmFwcGVycyBzdXBwb3J0OiAkVENQV19NU0ciCisrZWNobyAi
ICAgICAgICAgICAgICAgICAgICAgIExEQVAgc3VwcG9ydDogJExEQVBfTVNHIgorIGVjaG8g
IiAgICAgICAgICAgICAgTUQ1IHBhc3N3b3JkIHN1cHBvcnQ6ICRNRDVfTVNHIgorIGVjaG8g
IiAgICAgICAgICAgICAgICAgICBsaWJlZGl0IHN1cHBvcnQ6ICRMSUJFRElUX01TRyIKKyBl
Y2hvICIgIFNvbGFyaXMgcHJvY2VzcyBjb250cmFjdCBzdXBwb3J0OiAkU1BDX01TRyIKK2Rp
ZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIGNvbmZpZ3Vy
ZS5hYyBjb25maWd1cmUuYWMKKy0tLSBjb25maWd1cmUuYWMJMjAwOC0wNy0wOSAwNDowNzox
OS4wMDAwMDAwMDAgLTA3MDAKKysrKyBjb25maWd1cmUuYWMJMjAwOC0wOC0yMyAxNTowMjo0
Ny4wMDAwMDAwMDAgLTA3MDAKK0BAIC0xMzE5LDYgKzEzMTksMzcgQEAKKyAJZXNhYyBdCisg
KQorIAorKyMgQ2hlY2sgd2hldGhlciB1c2VyIHdhbnRzIExEQVAgc3VwcG9ydAorK0xEQVBf
TVNHPSJubyIKKytBQ19BUkdfV0lUSChsZGFwLAorKwlbICAtLXdpdGgtbGRhcFtbPVBBVEhd
XSAgICAgIEVuYWJsZSBMREFQIHB1YmtleSBzdXBwb3J0IChvcHRpb25hbGx5IGluIFBBVEgp
XSwKKysJWworKwkJaWYgdGVzdCAieCR3aXRodmFsIiAhPSAieG5vIiA7IHRoZW4KKysKKysJ
CQlpZiB0ZXN0ICJ4JHdpdGh2YWwiICE9ICJ4eWVzIiA7IHRoZW4KKysJCQkJQ1BQRkxBR1M9
IiRDUFBGTEFHUyAtSSR7d2l0aHZhbH0vaW5jbHVkZSIKKysJCQkJTERGTEFHUz0iJExERkxB
R1MgLUwke3dpdGh2YWx9L2xpYiIKKysJCQlmaQorKworKwkJCUFDX0RFRklORShbV0lUSF9M
REFQX1BVQktFWV0sIDEsIFtFbmFibGUgTERBUCBwdWJrZXkgc3VwcG9ydF0pCisrCQkJTElC
Uz0iLWxsZGFwICRMSUJTIgorKwkJCUxEQVBfTVNHPSJ5ZXMiCisrCQorKwkJCUFDX01TR19D
SEVDS0lORyhbZm9yIExEQVAgc3VwcG9ydF0pCisrCQkJQUNfVFJZX0NPTVBJTEUoCisrCQkJ
CVsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisrCQkJCSAjaW5jbHVkZSA8bGRhcC5oPl0sCisr
CQkJCVsodm9pZClsZGFwX2luaXQoMCwgMCk7XSwKKysJCQkJW0FDX01TR19SRVNVTFQoeWVz
KV0sCisrCQkJCVsKKysJCQkJICAgIEFDX01TR19SRVNVTFQobm8pIAorKwkJCQkJQUNfTVNH
X0VSUk9SKFsqKiBJbmNvbXBsZXRlIG9yIG1pc3NpbmcgbGRhcCBsaWJyYXJpZXMgKipdKQor
KwkJCQldCisrICAgICAgICAJKQorKwkJZmkKKysJXQorKykKKysKKyBkbmwgICAgQ2hlY2tz
IGZvciBsaWJyYXJ5IGZ1bmN0aW9ucy4gUGxlYXNlIGtlZXAgaW4gYWxwaGFiZXRpY2FsIG9y
ZGVyCisgQUNfQ0hFQ0tfRlVOQ1MoIFwKKyAJYXJjNHJhbmRvbSBcCitAQCAtNDIyOSw2ICs0
MjYwLDcgQEAKKyBlY2hvICIgICAgICAgICAgICAgICAgIFNtYXJ0Y2FyZCBzdXBwb3J0OiAk
U0NBUkRfTVNHIgorIGVjaG8gIiAgICAgICAgICAgICAgICAgICAgIFMvS0VZIHN1cHBvcnQ6
ICRTS0VZX01TRyIKKyBlY2hvICIgICAgICAgICAgICAgIFRDUCBXcmFwcGVycyBzdXBwb3J0
OiAkVENQV19NU0ciCisrZWNobyAiICAgICAgICAgICAgICAgICAgICAgIExEQVAgc3VwcG9y
dDogJExEQVBfTVNHIgorIGVjaG8gIiAgICAgICAgICAgICAgTUQ1IHBhc3N3b3JkIHN1cHBv
cnQ6ICRNRDVfTVNHIgorIGVjaG8gIiAgICAgICAgICAgICAgICAgICBsaWJlZGl0IHN1cHBv
cnQ6ICRMSUJFRElUX01TRyIKKyBlY2hvICIgIFNvbGFyaXMgcHJvY2VzcyBjb250cmFjdCBz
dXBwb3J0OiAkU1BDX01TRyIKK2RpZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhj
bHVkZSAnKi5yZWonIGxkYXBhdXRoLmMgbGRhcGF1dGguYworLS0tIGxkYXBhdXRoLmMJMTk2
OS0xMi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDAKKysrKyBsZGFwYXV0aC5jCTIwMDgt
MDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwCitAQCAtMCwwICsxLDU3NSBAQAorKy8q
IAorKyAqICRJZDogb3BlbnNzaC1scGstNC4zcDEtMC4zLjcucGF0Y2gsdiAxLjMgMjAwNi8w
NC8xOCAxNToyOTowOSBlYXUgRXhwICQKKysgKi8KKysKKysvKgorKyAqCisrICogQ29weXJp
Z2h0IChjKSAyMDA1LCBFcmljIEFVR0UgPGVhdUBwaGVhci5vcmc+CisrICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKysgKgorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1l
dDoKKysgKgorKyAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKysgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisrICogTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgcGhl
YXIub3JnIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisrICoKKysg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCAKKysgKiBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gCisrICogSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCAK
KysgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyAK
KysgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIAorKyAqIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrICoKKysgKgorKyAqLworKworKyNp
bmNsdWRlICJpbmNsdWRlcy5oIgorKworKyNpZmRlZiBXSVRIX0xEQVBfUFVCS0VZCisrCisr
I2luY2x1ZGUgPHN0ZGlvLmg+CisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDx1
bmlzdGQuaD4KKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrCisrI2luY2x1ZGUgImxkYXBhdXRo
LmgiCisrI2luY2x1ZGUgImxvZy5oIgorKworK3N0YXRpYyBjaGFyICphdHRyc1tdID0gewor
KyAgICBQVUJLRVlBVFRSLAorKyAgICBOVUxMCisrfTsKKysKKysvKiBmaWx0ZXIgYnVpbGRp
bmcgaW5mb3MgKi8KKysjZGVmaW5lIEZJTFRFUl9HUk9VUF9QUkVGSVggIigmKG9iamVjdGNs
YXNzPXBvc2l4R3JvdXApIgorKyNkZWZpbmUgRklMVEVSX09SX1BSRUZJWCAiKHwiCisrI2Rl
ZmluZSBGSUxURVJfT1JfU1VGRklYICIpIgorKyNkZWZpbmUgRklMVEVSX0NOX1BSRUZJWCAi
KGNuPSIKKysjZGVmaW5lIEZJTFRFUl9DTl9TVUZGSVggIikiCisrI2RlZmluZSBGSUxURVJf
VUlEX0ZPUk1BVCAiKG1lbWJlclVpZD0lcykiCisrI2RlZmluZSBGSUxURVJfR1JPVVBfU1VG
RklYICIpIgorKyNkZWZpbmUgRklMVEVSX0dST1VQX1NJWkUoZ3JvdXApIChzaXplX3QpIChz
dHJsZW4oZ3JvdXApKyhsZGFwX2NvdW50X2dyb3VwKGdyb3VwKSo1KSs1MikKKysKKysvKiBq
dXN0IGZpbHRlciBidWlsZGluZyBzdHVmZiAqLworKyNkZWZpbmUgUkVRVUVTVF9HUk9VUF9T
SVpFKGZpbHRlciwgdWlkKSAoc2l6ZV90KSAoc3RybGVuKGZpbHRlcikrc3RybGVuKHVpZCkr
MSkKKysjZGVmaW5lIFJFUVVFU1RfR1JPVVAoYnVmZmVyLCBwcmVmaWx0ZXIsIHB3bmFtZSkg
XAorKyAgICBidWZmZXIgPSAoY2hhciAqKSBjYWxsb2MoUkVRVUVTVF9HUk9VUF9TSVpFKHBy
ZWZpbHRlciwgcHduYW1lKSwgc2l6ZW9mKGNoYXIpKTsgXAorKyAgICBpZiAoIWJ1ZmZlcikg
eyBcCisrICAgICAgICBwZXJyb3IoImNhbGxvYygpIik7IFwKKysgICAgICAgIHJldHVybiBG
QUlMVVJFOyBcCisrICAgIH0gXAorKyAgICBzbnByaW50ZihidWZmZXIsIFJFUVVFU1RfR1JP
VVBfU0laRShwcmVmaWx0ZXIscHduYW1lKSwgcHJlZmlsdGVyLCBwd25hbWUpCisrLyoKKytY
WFggT0xEIGdyb3VwIGJ1aWxkaW5nIG1hY3JvcworKyNkZWZpbmUgUkVRVUVTVF9HUk9VUF9T
SVpFKGdycCwgdWlkKSAoc2l6ZV90KSAoc3RybGVuKGdycCkrc3RybGVuKHVpZCkrNDYpCisr
I2RlZmluZSBSRVFVRVNUX0dST1VQKGJ1ZmZlcixwd25hbWUsZ3JwKSBcCisrICAgIGJ1ZmZl
ciA9IChjaGFyICopIGNhbGxvYyhSRVFVRVNUX0dST1VQX1NJWkUoZ3JwLCBwd25hbWUpLCBz
aXplb2YoY2hhcikpOyBcCisrICAgIGlmICghYnVmZmVyKSB7IFwKKysgICAgICAgIHBlcnJv
cigiY2FsbG9jKCkiKTsgXAorKyAgICAgICAgcmV0dXJuIEZBSUxVUkU7IFwKKysgICAgfSBc
CisrICAgIHNucHJpbnRmKGJ1ZmZlcixSRVFVRVNUX0dST1VQX1NJWkUoZ3JwLHB3bmFtZSks
IigmKG9iamVjdGNsYXNzPXBvc2l4R3JvdXApKGNuPSVzKShtZW1iZXJVaWQ9JXMpKSIsZ3Jw
LHB3bmFtZSkKKysgICAgKi8KKysKKysvKgorK1hYWCBzdG9jayB1cHN0cmVhbSB2ZXJzaW9u
IHdpdGhvdXQgZXh0cmEgZmlsdGVyIHN1cHBvcnQKKysjZGVmaW5lIFJFUVVFU1RfVVNFUl9T
SVpFKHVpZCkgKHNpemVfdCkgKHN0cmxlbih1aWQpKzY0KQorKyNkZWZpbmUgUkVRVUVTVF9V
U0VSKGJ1ZmZlciwgcHduYW1lKSBcCisrICAgIGJ1ZmZlciA9IChjaGFyICopIGNhbGxvYyhS
RVFVRVNUX1VTRVJfU0laRShwd25hbWUpLCBzaXplb2YoY2hhcikpOyBcCisrICAgIGlmICgh
YnVmZmVyKSB7IFwKKysgICAgICAgIHBlcnJvcigiY2FsbG9jKCkiKTsgXAorKyAgICAgICAg
cmV0dXJuIE5VTEw7IFwKKysgICAgfSBcCisrICAgIHNucHJpbnRmKGJ1ZmZlcixSRVFVRVNU
X1VTRVJfU0laRShwd25hbWUpLCIoJihvYmplY3RjbGFzcz1wb3NpeEFjY291bnQpKG9iamVj
dGNsYXNzPWxkYXBQdWJsaWNLZXkpKHVpZD0lcykpIixwd25hbWUpCisrICAgKi8KKysKKysj
ZGVmaW5lIFJFUVVFU1RfVVNFUl9TSVpFKHVpZCwgZmlsdGVyKSAoc2l6ZV90KSAoc3RybGVu
KHVpZCkrNjQrKGZpbHRlciAhPSBOVUxMID8gc3RybGVuKGZpbHRlcikgOiAwKSkKKysjZGVm
aW5lIFJFUVVFU1RfVVNFUihidWZmZXIsIHB3bmFtZSwgY3VzdG9tZmlsdGVyKSBcCisrICAg
IGJ1ZmZlciA9IChjaGFyICopIGNhbGxvYyhSRVFVRVNUX1VTRVJfU0laRShwd25hbWUsIGN1
c3RvbWZpbHRlciksIHNpemVvZihjaGFyKSk7IFwKKysgICAgaWYgKCFidWZmZXIpIHsgXAor
KyAgICAgICAgcGVycm9yKCJjYWxsb2MoKSIpOyBcCisrICAgICAgICByZXR1cm4gTlVMTDsg
XAorKyAgICB9IFwKKysgICAgc25wcmludGYoYnVmZmVyLCBSRVFVRVNUX1VTRVJfU0laRShw
d25hbWUsIGN1c3RvbWZpbHRlciksIFwKKysgICAgCSIoJihvYmplY3RjbGFzcz1wb3NpeEFj
Y291bnQpKG9iamVjdGNsYXNzPWxkYXBQdWJsaWNLZXkpKHVpZD0lcyklcykiLCBcCisrCXB3
bmFtZSwgKGN1c3RvbWZpbHRlciAhPSBOVUxMID8gY3VzdG9tZmlsdGVyIDogIiIpKQorKwor
Ky8qIHNvbWUgcG9ydGFibGUgYW5kIHdvcmtpbmcgdG9rZW5pemVyLCBsYW1lIHRob3VnaCAq
LworK3N0YXRpYyBpbnQgdG9rZW5pemUoY2hhciAqKiBvLCBzaXplX3Qgc2l6ZSwgY2hhciAq
IGlucHV0KSB7CisrICAgIHVuc2lnbmVkIGludCBpID0gMCwgbnVtOworKyAgICBjb25zdCBj
aGFyICogY2hhcnNldCA9ICIgXHQiOworKyAgICBjaGFyICogcHRyID0gaW5wdXQ7CisrCisr
ICAgIC8qIGxlYWRpbmcgd2hpdGUgc3BhY2VzIGFyZSBpZ25vcmVkICovCisrICAgIG51bSA9
IHN0cnNwbihwdHIsIGNoYXJzZXQpOworKyAgICBwdHIgKz0gbnVtOworKworKyAgICB3aGls
ZSAoKG51bSA9IHN0cmNzcG4ocHRyLCBjaGFyc2V0KSkpIHsKKysgICAgICAgIGlmIChpIDwg
c2l6ZS0xKSB7CisrICAgICAgICAgICAgb1tpKytdID0gcHRyOworKyAgICAgICAgICAgIHB0
ciArPSBudW07CisrICAgICAgICAgICAgaWYgKCpwdHIpCisrICAgICAgICAgICAgICAgICpw
dHIrKyA9ICdcMCc7CisrICAgICAgICB9CisrICAgIH0KKysgICAgb1tpXSA9IE5VTEw7Cisr
ICAgIHJldHVybiBTVUNDRVNTOworK30KKysKKyt2b2lkIGxkYXBfY2xvc2UobGRhcF9vcHRf
dCAqIGxkYXApIHsKKysKKysgICAgaWYgKCFsZGFwKQorKyAgICAgICAgcmV0dXJuOworKwor
KyAgICBpZiAoIGxkYXBfdW5iaW5kX2V4dChsZGFwLT5sZCwgTlVMTCwgTlVMTCkgPCAwKQor
KwlsZGFwX3BlcnJvcihsZGFwLT5sZCwgImxkYXBfdW5iaW5kKCkiKTsKKysKKysgICAgbGRh
cC0+bGQgPSBOVUxMOworKyAgICBGTEFHX1NFVF9ESVNDT05ORUNURUQobGRhcC0+ZmxhZ3Mp
OworKworKyAgICByZXR1cm47CisrfQorKworKy8qIGluaXQgJiYgYmluZCAqLworK2ludCBs
ZGFwX2Nvbm5lY3QobGRhcF9vcHRfdCAqIGxkYXApIHsKKysgICAgaW50IHZlcnNpb24gPSBM
REFQX1ZFUlNJT04zOworKworKyAgICBpZiAoIWxkYXAtPnNlcnZlcnMpCisrICAgICAgICBy
ZXR1cm4gRkFJTFVSRTsKKysKKysgICAgLyogQ29ubmVjdGlvbiBJbml0IGFuZCBzZXR1cCAq
LworKyAgICBsZGFwLT5sZCA9IGxkYXBfaW5pdChsZGFwLT5zZXJ2ZXJzLCBMREFQX1BPUlQp
OworKyAgICBpZiAoIWxkYXAtPmxkKSB7CisrICAgICAgICBsZGFwX3BlcnJvcihsZGFwLT5s
ZCwgImxkYXBfaW5pdCgpIik7CisrICAgICAgICByZXR1cm4gRkFJTFVSRTsKKysgICAgfQor
KworKyAgICBpZiAoIGxkYXBfc2V0X29wdGlvbihsZGFwLT5sZCwgTERBUF9PUFRfUFJPVE9D
T0xfVkVSU0lPTiwgJnZlcnNpb24pICE9IExEQVBfT1BUX1NVQ0NFU1MpIHsKKysgICAgICAg
IGxkYXBfcGVycm9yKGxkYXAtPmxkLCAibGRhcF9zZXRfb3B0aW9uKExEQVBfT1BUX1BST1RP
Q09MX1ZFUlNJT04pIik7CisrICAgICAgICByZXR1cm4gRkFJTFVSRTsKKysgICAgfQorKwor
KyAgICAvKiBUaW1lb3V0cyBzZXR1cCAqLworKyAgICBpZiAobGRhcF9zZXRfb3B0aW9uKGxk
YXAtPmxkLCBMREFQX09QVF9ORVRXT1JLX1RJTUVPVVQsICZsZGFwLT5iX3RpbWVvdXQpICE9
IExEQVBfU1VDQ0VTUykgeworKyAgICAgICAgbGRhcF9wZXJyb3IobGRhcC0+bGQsICJsZGFw
X3NldF9vcHRpb24oTERBUF9PUFRfTkVUV09SS19USU1FT1VUKSIpOworKyAgICB9CisrICAg
IGlmIChsZGFwX3NldF9vcHRpb24obGRhcC0+bGQsIExEQVBfT1BUX1RJTUVPVVQsICZsZGFw
LT5zX3RpbWVvdXQpICE9IExEQVBfU1VDQ0VTUykgeworKyAgICAgICAgbGRhcF9wZXJyb3Io
bGRhcC0+bGQsICJsZGFwX3NldF9vcHRpb24oTERBUF9PUFRfVElNRU9VVCkiKTsKKysgICAg
fQorKworKyAgICAvKiBUTFMgc3VwcG9ydCAqLworKyAgICBpZiAoIChsZGFwLT50bHMgPT0g
LTEpIHx8IChsZGFwLT50bHMgPT0gMSkgKSB7CisrICAgICAgICBpZiAobGRhcF9zdGFydF90
bHNfcyhsZGFwLT5sZCwgTlVMTCwgTlVMTCApICE9IExEQVBfU1VDQ0VTUykgeworKyAgICAg
ICAgICAgIC8qIGZhaWxlZCB0aGVuIHJlaW5pdCB0aGUgaW5pdGlhbCBjb25uZWN0ICovCisr
ICAgICAgICAgICAgbGRhcF9wZXJyb3IobGRhcC0+bGQsICJsZGFwX2Nvbm5lY3Q6IChUTFMp
IGxkYXBfc3RhcnRfdGxzKCkiKTsKKysgICAgICAgICAgICBpZiAobGRhcC0+dGxzID09IDEp
CisrICAgICAgICAgICAgICAgIHJldHVybiBGQUlMVVJFOworKworKyAgICAgICAgICAgIGxk
YXAtPmxkID0gbGRhcF9pbml0KGxkYXAtPnNlcnZlcnMsIExEQVBfUE9SVCk7CisrICAgICAg
ICAgICAgaWYgKCFsZGFwLT5sZCkgeyAKKysgICAgICAgICAgICAgICAgbGRhcF9wZXJyb3Io
bGRhcC0+bGQsICJsZGFwX2luaXQoKSIpOworKyAgICAgICAgICAgICAgICByZXR1cm4gRkFJ
TFVSRTsKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgaWYgKCBsZGFwX3NldF9v
cHRpb24obGRhcC0+bGQsIExEQVBfT1BUX1BST1RPQ09MX1ZFUlNJT04sICZ2ZXJzaW9uKSAh
PSBMREFQX09QVF9TVUNDRVNTKSB7CisrICAgICAgICAgICAgICAgICBsZGFwX3BlcnJvcihs
ZGFwLT5sZCwgImxkYXBfc2V0X29wdGlvbigpIik7CisrICAgICAgICAgICAgICAgICByZXR1
cm4gRkFJTFVSRTsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgIH0KKysKKysK
KysgICAgaWYgKCBsZGFwX3NpbXBsZV9iaW5kX3MobGRhcC0+bGQsIGxkYXAtPmJpbmRkbiwg
bGRhcC0+YmluZHB3KSAhPSBMREFQX1NVQ0NFU1MpIHsKKysgICAgICAgIGxkYXBfcGVycm9y
KGxkYXAtPmxkLCAibGRhcF9zaW1wbGVfYmluZF9zKCkiKTsKKysgICAgICAgIHJldHVybiBG
QUlMVVJFOworKyAgICB9CisrCisrICAgIC8qIHNheXMgaXQgaXMgY29ubmVjdGVkICovCisr
ICAgIEZMQUdfU0VUX0NPTk5FQ1RFRChsZGFwLT5mbGFncyk7CisrCisrICAgIHJldHVybiBT
VUNDRVNTOworK30KKysKKysvKiBtdXN0IGZyZWUgYWxsb2NhdGVkIHJlc3NvdXJjZSAqLwor
K3N0YXRpYyBjaGFyICogbGRhcF9idWlsZF9ob3N0KGNoYXIgKmhvc3QsIGludCBwb3J0KSB7
CisrICAgIHVuc2lnbmVkIGludCBzaXplID0gc3RybGVuKGhvc3QpKzExOworKyAgICBjaGFy
ICogaCA9IChjaGFyICopIGNhbGxvYyAoc2l6ZSwgc2l6ZW9mKGNoYXIpKTsKKysgICAgaW50
IHJjOworKyAgICBpZiAoIWgpCisrICAgICAgICAgcmV0dXJuIE5VTEw7CisrCisrICAgIHJj
ID0gc25wcmludGYoaCwgc2l6ZSwgIiVzOiVkICIsIGhvc3QsIHBvcnQpOworKyAgICBpZiAo
cmMgPT0gLTEpCisrICAgICAgICByZXR1cm4gTlVMTDsKKysgICAgcmV0dXJuIGg7CisrfQor
KworK3N0YXRpYyBpbnQgbGRhcF9jb3VudF9ncm91cChjb25zdCBjaGFyICogaW5wdXQpIHsK
KysgICAgY29uc3QgY2hhciAqIGNoYXJzZXQgPSAiIFx0IjsKKysgICAgY29uc3QgY2hhciAq
IHB0ciA9IGlucHV0OworKyAgICB1bnNpZ25lZCBpbnQgY291bnQgPSAwOworKyAgICB1bnNp
Z25lZCBpbnQgbnVtOworKworKyAgICBudW0gPSBzdHJzcG4ocHRyLCBjaGFyc2V0KTsKKysg
ICAgcHRyICs9IG51bTsKKysKKysgICAgd2hpbGUgKChudW0gPSBzdHJjc3BuKHB0ciwgY2hh
cnNldCkpKSB7CisrICAgIGNvdW50Kys7CisrICAgIHB0ciArPSBudW07CisrICAgIHB0cisr
OworKyAgICB9CisrCisrICAgIHJldHVybiBjb3VudDsKKyt9CisrCisrLyogZm9ybWF0IGZp
bHRlciAqLworK2NoYXIgKiBsZGFwX3BhcnNlX2dyb3Vwcyhjb25zdCBjaGFyICogZ3JvdXBz
KSB7CisrICAgIHVuc2lnbmVkIGludCBidWZmZXJfc2l6ZSA9IEZJTFRFUl9HUk9VUF9TSVpF
KGdyb3Vwcyk7CisrICAgIGNoYXIgKiBidWZmZXIgPSAoY2hhciAqKSBjYWxsb2MoYnVmZmVy
X3NpemUsIHNpemVvZihjaGFyKSk7CisrICAgIGNoYXIgKiBnID0gTlVMTDsKKysgICAgY2hh
ciAqIGdhcnJheVszMl07CisrICAgIHVuc2lnbmVkIGludCBpID0gMDsKKysKKysgICAgaWYg
KCghZ3JvdXBzKXx8KCFidWZmZXIpKQorKyAgICAgICAgcmV0dXJuIE5VTEw7CisrCisrICAg
IGcgPSBzdHJkdXAoZ3JvdXBzKTsKKysgICAgaWYgKCFnKSB7CisrICAgICAgICBmcmVlKGJ1
ZmZlcik7CisrICAgICAgICByZXR1cm4gTlVMTDsKKysgICAgfQorKworKyAgICAvKiBmaXJz
dCBzZXBhcmF0ZSBpbnRvIG4gdG9rZW5zICovCisrICAgIGlmICggdG9rZW5pemUoZ2FycmF5
LCBzaXplb2YoZ2FycmF5KS9zaXplb2YoKmdhcnJheSksIGcpIDwgMCkgeworKyAgICAgICAg
ZnJlZShnKTsKKysgICAgICAgIGZyZWUoYnVmZmVyKTsKKysgICAgICAgIHJldHVybiBOVUxM
OworKyAgICB9CisrCisrICAgIC8qIGJ1aWxkIHRoZSBmaW5hbCBmaWx0ZXIgZm9ybWF0ICov
CisrICAgIHN0cmxjYXQoYnVmZmVyLCBGSUxURVJfR1JPVVBfUFJFRklYLCBidWZmZXJfc2l6
ZSk7CisrICAgIHN0cmxjYXQoYnVmZmVyLCBGSUxURVJfT1JfUFJFRklYLCBidWZmZXJfc2l6
ZSk7CisrICAgIGkgPSAwOworKyAgICB3aGlsZSAoZ2FycmF5W2ldKSB7CisrICAgICAgICBz
dHJsY2F0KGJ1ZmZlciwgRklMVEVSX0NOX1BSRUZJWCwgYnVmZmVyX3NpemUpOworKyAgICAg
ICAgc3RybGNhdChidWZmZXIsIGdhcnJheVtpXSwgYnVmZmVyX3NpemUpOworKyAgICAgICAg
c3RybGNhdChidWZmZXIsIEZJTFRFUl9DTl9TVUZGSVgsIGJ1ZmZlcl9zaXplKTsKKysgICAg
ICAgIGkrKzsKKysgICAgfQorKyAgICBzdHJsY2F0KGJ1ZmZlciwgRklMVEVSX09SX1NVRkZJ
WCwgYnVmZmVyX3NpemUpOworKyAgICBzdHJsY2F0KGJ1ZmZlciwgRklMVEVSX1VJRF9GT1JN
QVQsIGJ1ZmZlcl9zaXplKTsKKysgICAgc3RybGNhdChidWZmZXIsIEZJTFRFUl9HUk9VUF9T
VUZGSVgsIGJ1ZmZlcl9zaXplKTsKKysKKysgICAgZnJlZShnKTsKKysgICAgcmV0dXJuIGJ1
ZmZlcjsKKyt9CisrCisrLyogYSBiaXQgZGlydHkgYnV0IGxlYWsgZnJlZSAgKi8KKytjaGFy
ICogbGRhcF9wYXJzZV9zZXJ2ZXJzKGNvbnN0IGNoYXIgKiBzZXJ2ZXJzKSB7CisrICAgIGNo
YXIgKiBzID0gTlVMTDsKKysgICAgY2hhciAqIHRtcCA9IE5VTEwsICp1cmxzWzMyXTsKKysg
ICAgdW5zaWduZWQgaW50IG51bSA9IDAgLCBpID0gMCAsIGFzaXplID0gMDsKKysgICAgTERB
UFVSTERlc2MgKnVybGRbMzJdOworKworKyAgICBpZiAoIXNlcnZlcnMpCisrICAgICAgICBy
ZXR1cm4gTlVMTDsKKysKKysgICAgLyogbG9jYWwgY29weSBvZiB0aGUgYXJnICovCisrICAg
IHMgPSBzdHJkdXAoc2VydmVycyk7CisrICAgIGlmICghcykKKysgICAgICAgIHJldHVybiBO
VUxMOworKworKyAgICAvKiBmaXJzdCBzZXBhcmF0ZSBpbnRvIFVSTCB0b2tlbnMgKi8KKysg
ICAgaWYgKCB0b2tlbml6ZSh1cmxzLCBzaXplb2YodXJscykvc2l6ZW9mKCp1cmxzKSwgcykg
PCAwKQorKyAgICAgICAgcmV0dXJuIE5VTEw7CisrCisrICAgIGkgPSAwOworKyAgICB3aGls
ZSAodXJsc1tpXSkgeworKyAgICAgICAgaWYgKCEgbGRhcF9pc19sZGFwX3VybCh1cmxzW2ld
KSB8fAorKyAgICAgICAgICAgKGxkYXBfdXJsX3BhcnNlKHVybHNbaV0sICZ1cmxkW2ldKSAh
PSAwKSkgeworKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKysgICAgICAgIH0KKysg
ICAgICAgIGkrKzsKKysgICAgfQorKworKyAgICAvKiBub3cgZnJlZShzKSAqLworKyAgICBm
cmVlIChzKTsKKysKKysgICAgLyogaG93IG11Y2ggbWVtb3J5IGRvIHdlIG5lZWQgKi8KKysg
ICAgbnVtID0gaTsKKysgICAgZm9yIChpID0gMCA7IGkgPCBudW0gOyBpKyspCisrICAgICAg
ICBhc2l6ZSArPSBzdHJsZW4odXJsZFtpXS0+bHVkX2hvc3QpKzExOworKworKyAgICAvKiBh
bGxvYyAqLworKyAgICBzID0gKGNoYXIgKikgY2FsbG9jKCBhc2l6ZSsxICwgc2l6ZW9mKGNo
YXIpKTsKKysgICAgaWYgKCFzKSB7CisrICAgICAgICBmb3IgKGkgPSAwIDsgaSA8IG51bSA7
IGkrKykKKysgICAgICAgICAgICBsZGFwX2ZyZWVfdXJsZGVzYyh1cmxkW2ldKTsKKysgICAg
ICAgIHJldHVybiBOVUxMOworKyAgICB9CisrCisrICAgIC8qIHRoZW4gYnVpbGQgdGhlIGZp
bmFsIGhvc3Qgc3RyaW5nICovCisrICAgIGZvciAoaSA9IDAgOyBpIDwgbnVtIDsgaSsrKSB7
CisrICAgICAgICAvKiBidWlsdCBob3N0IHBhcnQgKi8KKysgICAgICAgIHRtcCA9IGxkYXBf
YnVpbGRfaG9zdCh1cmxkW2ldLT5sdWRfaG9zdCwgdXJsZFtpXS0+bHVkX3BvcnQpOworKyAg
ICAgICAgc3RybmNhdChzLCB0bXAsIHN0cmxlbih0bXApKTsKKysgICAgICAgIGxkYXBfZnJl
ZV91cmxkZXNjKHVybGRbaV0pOworKyAgICAgICAgZnJlZSh0bXApOworKyAgICB9CisrCisr
ICAgIHJldHVybiBzOworK30KKysKKyt2b2lkIGxkYXBfb3B0aW9uc19wcmludChsZGFwX29w
dF90ICogbGRhcCkgeworKyAgICBkZWJ1ZygibGRhcCBvcHRpb25zOiIpOworKyAgICBkZWJ1
Zygic2VydmVyczogJXMiLCBsZGFwLT5zZXJ2ZXJzKTsKKysgICAgaWYgKGxkYXAtPnVfYmFz
ZWRuKQorKyAgICAgICAgZGVidWcoInVzZXIgYmFzZWRuOiAlcyIsIGxkYXAtPnVfYmFzZWRu
KTsKKysgICAgaWYgKGxkYXAtPmdfYmFzZWRuKQorKyAgICAgICAgZGVidWcoImdyb3VwIGJh
c2VkbjogJXMiLCBsZGFwLT5nX2Jhc2Vkbik7CisrICAgIGlmIChsZGFwLT5iaW5kZG4pCisr
ICAgICAgICBkZWJ1ZygiYmluZGRuOiAlcyIsIGxkYXAtPmJpbmRkbik7CisrICAgIGlmIChs
ZGFwLT5iaW5kcHcpCisrICAgICAgICBkZWJ1ZygiYmluZHB3OiAlcyIsIGxkYXAtPmJpbmRw
dyk7CisrICAgIGlmIChsZGFwLT5zZ3JvdXApCisrICAgICAgICBkZWJ1ZygiZ3JvdXA6ICVz
IiwgbGRhcC0+c2dyb3VwKTsKKysgICAgaWYgKGxkYXAtPmZpbHRlcikKKysgICAgICAgIGRl
YnVnKCJmaWx0ZXI6ICVzIiwgbGRhcC0+ZmlsdGVyKTsKKyt9CisrCisrdm9pZCBsZGFwX29w
dGlvbnNfZnJlZShsZGFwX29wdF90ICogbCkgeworKyAgICBpZiAoIWwpCisrICAgICAgICBy
ZXR1cm47CisrICAgIGlmIChsLT5zZXJ2ZXJzKQorKyAgICAgICAgZnJlZShsLT5zZXJ2ZXJz
KTsKKysgICAgaWYgKGwtPnVfYmFzZWRuKQorKyAgICAgICAgZnJlZShsLT51X2Jhc2Vkbik7
CisrICAgIGlmIChsLT5nX2Jhc2VkbikKKysgICAgICAgIGZyZWUobC0+Z19iYXNlZG4pOwor
KyAgICBpZiAobC0+YmluZGRuKQorKyAgICAgICAgZnJlZShsLT5iaW5kZG4pOworKyAgICBp
ZiAobC0+YmluZHB3KQorKyAgICAgICAgZnJlZShsLT5iaW5kcHcpOworKyAgICBpZiAobC0+
c2dyb3VwKQorKyAgICAgICAgZnJlZShsLT5zZ3JvdXApOworKyAgICBpZiAobC0+Zmdyb3Vw
KQorKyAgICAgICAgZnJlZShsLT5mZ3JvdXApOworKyAgICBpZiAobC0+ZmlsdGVyKQorKyAg
ICAgICAgZnJlZShsLT5maWx0ZXIpOworKyAgICBpZiAobC0+bF9jb25mKQorKyAgICAgICAg
ZnJlZShsLT5sX2NvbmYpOworKyAgICBmcmVlKGwpOworK30KKysKKysvKiBmcmVlIGtleXMg
Ki8KKyt2b2lkIGxkYXBfa2V5c19mcmVlKGxkYXBfa2V5X3QgKiBrKSB7CisrICAgIGxkYXBf
dmFsdWVfZnJlZV9sZW4oay0+a2V5cyk7CisrICAgIGZyZWUoayk7CisrICAgIHJldHVybjsK
Kyt9CisrCisrbGRhcF9rZXlfdCAqIGxkYXBfZ2V0dXNlcmtleShsZGFwX29wdF90ICpsLCBj
b25zdCBjaGFyICogdXNlcikgeworKyAgICBsZGFwX2tleV90ICogayA9IChsZGFwX2tleV90
ICopIGNhbGxvYyAoMSwgc2l6ZW9mKGxkYXBfa2V5X3QpKTsKKysgICAgTERBUE1lc3NhZ2Ug
KnJlcywgKmU7CisrICAgIGNoYXIgKiBmaWx0ZXI7CisrICAgIGludCBpOworKworKyAgICBp
ZiAoKCFrKSB8fCAoIWwpKQorKyAgICAgICAgIHJldHVybiBOVUxMOworKworKyAgICAvKiBB
bSBpIHN0aWxsIGNvbm5lY3RlZCA/IFJFVFJZIG4gdGltZXMgKi8KKysgICAgLyogWFhYIFRP
RE86IHNldHVwIHNvbWUgY29uZiB2YWx1ZSBmb3IgcmV0cnlpbmcgKi8KKysgICAgaWYgKCEo
bC0+ZmxhZ3MgJiBGTEFHX0NPTk5FQ1RFRCkpCisrICAgICAgICBmb3IgKGkgPSAwIDsgaSA8
IDIgOyBpKyspCisrICAgICAgICAgICAgaWYgKGxkYXBfY29ubmVjdChsKSA9PSAwKQorKyAg
ICAgICAgICAgICAgICBicmVhazsKKysKKysgICAgLyogcXVpY2sgY2hlY2sgZm9yIGF0dGVt
cHRzIHRvIGJlIGV2aWwgKi8KKysgICAgaWYgKChzdHJjaHIodXNlciwgJygnKSAhPSBOVUxM
KSB8fCAoc3RyY2hyKHVzZXIsICcpJykgIT0gTlVMTCkgfHwKKysgICAgICAgIChzdHJjaHIo
dXNlciwgJyonKSAhPSBOVUxMKSB8fCAoc3RyY2hyKHVzZXIsICdcXCcpICE9IE5VTEwpKQor
KyAgICAgICAgcmV0dXJuIE5VTEw7CisrCisrICAgIC8qIGJ1aWxkICBmaWx0ZXIgZm9yIExE
QVAgcmVxdWVzdCAqLworKyAgICBSRVFVRVNUX1VTRVIoZmlsdGVyLCB1c2VyLCBsLT5maWx0
ZXIpOworKworKyAgICBpZiAoIGxkYXBfc2VhcmNoX3N0KCBsLT5sZCwKKysgICAgICAgIGwt
PnVfYmFzZWRuLAorKyAgICAgICAgTERBUF9TQ09QRV9TVUJUUkVFLAorKyAgICAgICAgZmls
dGVyLAorKyAgICAgICAgYXR0cnMsIDAsICZsLT5zX3RpbWVvdXQsICZyZXMgKSAhPSBMREFQ
X1NVQ0NFU1MpIHsKKysgICAgICAgIAorKyAgICAgICAgbGRhcF9wZXJyb3IobC0+bGQsICJs
ZGFwX3NlYXJjaF9zdCgpIik7CisrCisrICAgICAgICBmcmVlKGZpbHRlcik7CisrICAgICAg
ICBmcmVlKGspOworKworKyAgICAgICAgLyogWFhYIGVycm9yIG9uIHNlYXJjaCwgdGltZW91
dCBldGMuLiBjbG9zZSBhc2sgZm9yIHJlY29ubmVjdCAqLworKyAgICAgICAgbGRhcF9jbG9z
ZShsKTsKKysKKysgICAgICAgIHJldHVybiBOVUxMOworKyAgICB9IAorKworKyAgICAvKiBm
cmVlICovCisrICAgIGZyZWUoZmlsdGVyKTsKKysKKysgICAgLyogY2hlY2sgaWYgYW55IHJl
c3VsdHMgKi8KKysgICAgaSA9IGxkYXBfY291bnRfZW50cmllcyhsLT5sZCxyZXMpOworKyAg
ICBpZiAoaSA8PSAwKSB7CisrICAgICAgICBsZGFwX21zZ2ZyZWUocmVzKTsKKysgICAgICAg
IGZyZWUoayk7CisrICAgICAgICByZXR1cm4gTlVMTDsKKysgICAgfQorKworKyAgICBpZiAo
aSA+IDEpCisrICAgICAgICBkZWJ1ZygiW0xEQVBdIGR1cGxpY2F0ZSBlbnRyaWVzLCB1c2lu
ZyB0aGUgRklSU1QgZW50cnkgcmV0dXJuZWQiKTsKKysKKysgICAgZSA9IGxkYXBfZmlyc3Rf
ZW50cnkobC0+bGQsIHJlcyk7CisrICAgIGstPmtleXMgPSBsZGFwX2dldF92YWx1ZXNfbGVu
KGwtPmxkLCBlLCBQVUJLRVlBVFRSKTsKKysgICAgay0+bnVtID0gbGRhcF9jb3VudF92YWx1
ZXNfbGVuKGstPmtleXMpOworKworKyAgICBsZGFwX21zZ2ZyZWUocmVzKTsKKysgICAgcmV0
dXJuIGs7CisrfQorKworKworKy8qIC0xIGlmIHRyb3VibGUKKysgICAwIGlmIHVzZXIgaXMg
Tk9UIG1lbWJlciBvZiBjdXJyZW50IHNlcnZlciBncm91cAorKyAgIDEgaWYgdXNlciBJUyBN
RU1CRVIgb2YgY3VycmVudCBzZXJ2ZXIgZ3JvdXAgCisrICovCisraW50IGxkYXBfaXNtZW1i
ZXIobGRhcF9vcHRfdCAqIGwsIGNvbnN0IGNoYXIgKiB1c2VyKSB7CisrICAgIExEQVBNZXNz
YWdlICpyZXM7CisrICAgIGNoYXIgKiBmaWx0ZXI7CisrICAgIGludCBpOworKworKyAgICBp
ZiAoKCFsLT5zZ3JvdXApIHx8ICEobC0+Z19iYXNlZG4pKQorKyAgICAgICAgcmV0dXJuIDE7
CisrCisrICAgIC8qIEFtIGkgc3RpbGwgY29ubmVjdGVkID8gUkVUUlkgbiB0aW1lcyAqLwor
KyAgICAvKiBYWFggVE9ETzogc2V0dXAgc29tZSBjb25mIHZhbHVlIGZvciByZXRyeWluZyAq
LworKyAgICBpZiAoIShsLT5mbGFncyAmIEZMQUdfQ09OTkVDVEVEKSkgCisrICAgICAgICBm
b3IgKGkgPSAwIDsgaSA8IDIgOyBpKyspCisrICAgICAgICAgICAgaWYgKGxkYXBfY29ubmVj
dChsKSA9PSAwKQorKyAgICAgICAgICAgICAgICAgYnJlYWs7CisrCisrICAgIC8qIHF1aWNr
IGNoZWNrIGZvciBhdHRlbXB0cyB0byBiZSBldmlsICovCisrICAgIGlmICgoc3RyY2hyKHVz
ZXIsICcoJykgIT0gTlVMTCkgfHwgKHN0cmNocih1c2VyLCAnKScpICE9IE5VTEwpIHx8Cisr
ICAgICAgICAoc3RyY2hyKHVzZXIsICcqJykgIT0gTlVMTCkgfHwgKHN0cmNocih1c2VyLCAn
XFwnKSAhPSBOVUxMKSkKKysgICAgICAgIHJldHVybiBGQUlMVVJFOworKworKyAgICAvKiBi
dWlsZCBmaWx0ZXIgZm9yIExEQVAgcmVxdWVzdCAqLworKyAgICBSRVFVRVNUX0dST1VQKGZp
bHRlciwgbC0+Zmdyb3VwLCB1c2VyKTsKKysKKysgICAgaWYgKGxkYXBfc2VhcmNoX3N0KCBs
LT5sZCwgCisrICAgICAgICBsLT5nX2Jhc2VkbiwKKysgICAgICAgIExEQVBfU0NPUEVfU1VC
VFJFRSwKKysgICAgICAgIGZpbHRlciwKKysgICAgICAgIE5VTEwsIDAsICZsLT5zX3RpbWVv
dXQsICZyZXMpICE9IExEQVBfU1VDQ0VTUykgeworKyAgICAKKysgICAgICAgIGxkYXBfcGVy
cm9yKGwtPmxkLCAibGRhcF9zZWFyY2hfc3QoKSIpOworKworKyAgICAgICAgZnJlZShmaWx0
ZXIpOworKworKyAgICAgICAgLyogWFhYIGVycm9yIG9uIHNlYXJjaCwgdGltZW91dCBldGMu
LiBjbG9zZSBhc2sgZm9yIHJlY29ubmVjdCAqLworKyAgICAgICAgbGRhcF9jbG9zZShsKTsK
KysKKysgICAgICAgIHJldHVybiBGQUlMVVJFOworKyAgICB9CisrCisrICAgIGZyZWUoZmls
dGVyKTsKKysKKysgICAgLyogY2hlY2sgaWYgYW55IHJlc3VsdHMgKi8KKysgICAgaWYgKGxk
YXBfY291bnRfZW50cmllcyhsLT5sZCwgcmVzKSA+IDApIHsKKysgICAgICAgIGxkYXBfbXNn
ZnJlZShyZXMpOworKyAgICAgICAgcmV0dXJuIDE7CisrICAgIH0KKysKKysgICAgbGRhcF9t
c2dmcmVlKHJlcyk7CisrICAgIHJldHVybiAwOworK30KKysKKysvKgorKyAqIGxkYXAuY29u
ZiBzaW1wbGUgcGFyc2VyCisrICogWFhYIFRPRE86ICBzYW5pdHkgY2hlY2tzCisrICogbXVz
dCBlaXRoZXIKKysgKiAtIGZyZWUgdGhlIHByZXZpb3VzIGxkYXBfb3B0X2JlZm9yZSByZXBs
YWNpbmcgZW50cmllcworKyAqIC0gZnJlZSBlYWNoIG5lY2Vzc2FyeSBwcmV2aW91c2x5IHBh
cnNlZCBlbGVtZW50cworKyAqIHJldDoKKysgKiAtMSBvbiBGQUlMVVJFLCAwIG9uIFNVQ0NF
U1MKKysgKi8KKytpbnQgbGRhcF9wYXJzZV9sY29uZihsZGFwX29wdF90ICogbCkgeworKyAg
ICBGSUxFICogbGNkOyAvKiBsZGFwLmNvbmYgZGVzY3JpcHRvciAqLworKyAgICBjaGFyIGJ1
ZltCVUZTSVpdOworKyAgICBjaGFyICogcyA9IE5VTEwsICogayA9IE5VTEwsICogdiA9IE5V
TEw7CisrICAgIGludCBsaSwgbGVuOworKworKyAgICBsY2QgPSBmb3BlbiAobC0+bF9jb25m
LCAiciIpOworKyAgICBpZiAobGNkID09IE5VTEwpIHsKKysgICAgICAgIC8qIGRlYnVnKCJD
YW5ub3Qgb3BlbiAlcyIsIGwtPmxfY29uZik7ICovCisrICAgICAgICBwZXJyb3IoImxkYXBf
cGFyc2VfbGNvbmYoKSIpOworKyAgICAgICAgcmV0dXJuIEZBSUxVUkU7CisrICAgIH0KKysg
ICAgCisrICAgIHdoaWxlIChmZ2V0cyAoYnVmLCBzaXplb2YgKGJ1ZiksIGxjZCkgIT0gTlVM
TCkgeworKworKyAgICAgICAgaWYgKCpidWYgPT0gJ1xuJyB8fCAqYnVmID09ICcjJykKKysg
ICAgICAgICAgICBjb250aW51ZTsKKysKKysgICAgICAgIGsgPSBidWY7CisrICAgICAgICB2
ID0gazsKKysgICAgICAgIHdoaWxlICgqdiAhPSAnXDAnICYmICp2ICE9ICcgJyAmJiAqdiAh
PSAnXHQnKQorKyAgICAgICAgICAgIHYrKzsKKysKKysgICAgICAgIGlmICgqdiA9PSAnXDAn
KQorKyAgICAgICAgICAgIGNvbnRpbnVlOworKworKyAgICAgICAgKih2KyspID0gJ1wwJzsK
KysKKysgICAgICAgIHdoaWxlICgqdiA9PSAnICcgfHwgKnYgPT0gJ1x0JykKKysgICAgICAg
ICAgICB2Kys7CisrCisrICAgICAgICBsaSA9IHN0cmxlbiAodikgLSAxOworKyAgICAgICAg
d2hpbGUgKHZbbGldID09ICcgJyB8fCB2W2xpXSA9PSAnXHQnIHx8IHZbbGldID09ICdcbicp
CisrICAgICAgICAgICAgLS1saTsKKysgICAgICAgIHZbbGkgKyAxXSA9ICdcMCc7CisrCisr
ICAgICAgICBpZiAoIXN0cmNhc2VjbXAgKGssICJ1cmkiKSkgeworKyAgICAgICAgICAgIGlm
ICgobC0+c2VydmVycyA9IGxkYXBfcGFyc2Vfc2VydmVycyh2KSkgPT0gTlVMTCkgeworKyAg
ICAgICAgICAgICAgICBmYXRhbCgiZXJyb3IgaW4gbGRhcCBzZXJ2ZXJzIik7CisrICAgICAg
ICAgICAgcmV0dXJuIEZBSUxVUkU7CisrICAgICAgICAgICAgfQorKworKyAgICAgICAgfQor
KyAgICAgICAgZWxzZSBpZiAoIXN0cmNhc2VjbXAgKGssICJiYXNlIikpIHsgCisrICAgICAg
ICAgICAgcyA9IHN0cmNociAodiwgJz8nKTsKKysgICAgICAgICAgICBpZiAocyAhPSBOVUxM
KSB7CisrICAgICAgICAgICAgICAgIGxlbiA9IHMgLSB2OworKyAgICAgICAgICAgICAgICBs
LT51X2Jhc2VkbiA9IG1hbGxvYyAobGVuICsgMSk7CisrICAgICAgICAgICAgICAgIHN0cm5j
cHkgKGwtPnVfYmFzZWRuLCB2LCBsZW4pOworKyAgICAgICAgICAgICAgICBsLT51X2Jhc2Vk
bltsZW5dID0gJ1wwJzsKKysgICAgICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgICAg
ICBsLT51X2Jhc2VkbiA9IHN0cmR1cCAodik7CisrICAgICAgICAgICAgfQorKyAgICAgICAg
fQorKyAgICAgICAgZWxzZSBpZiAoIXN0cmNhc2VjbXAgKGssICJiaW5kZG4iKSkgeworKyAg
ICAgICAgICAgIGwtPmJpbmRkbiA9IHN0cmR1cCAodik7CisrICAgICAgICB9CisrICAgICAg
ICBlbHNlIGlmICghc3RyY2FzZWNtcCAoaywgImJpbmRwdyIpKSB7CisrICAgICAgICAgICAg
bC0+YmluZHB3ID0gc3RyZHVwICh2KTsKKysgICAgICAgIH0KKysgICAgICAgIGVsc2UgaWYg
KCFzdHJjYXNlY21wIChrLCAidGltZWxpbWl0IikpIHsKKysgICAgICAgICAgICBsLT5zX3Rp
bWVvdXQudHZfc2VjID0gYXRvaSAodik7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAg
IGVsc2UgaWYgKCFzdHJjYXNlY21wIChrLCAiYmluZF90aW1lbGltaXQiKSkgeworKyAgICAg
ICAgICAgIGwtPmJfdGltZW91dC50dl9zZWMgPSBhdG9pICh2KTsKKysgICAgICAgIH0KKysg
ICAgICAgIGVsc2UgaWYgKCFzdHJjYXNlY21wIChrLCAic3NsIikpIHsKKysgICAgICAgICAg
ICBpZiAoIXN0cmNhc2VjbXAgKHYsICJzdGFydF90bHMiKSkKKysgICAgICAgICAgICAgICAg
bC0+dGxzID0gMTsKKysgICAgICAgIH0KKysgICAgfQorKworKyAgICBmY2xvc2UgKGxjZCk7
CisrICAgIHJldHVybiBTVUNDRVNTOworK30KKysKKysjZW5kaWYgLyogV0lUSF9MREFQX1BV
QktFWSAqLworZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRlICcqLnJl
aicgbGRhcGF1dGguaCBsZGFwYXV0aC5oCistLS0gbGRhcGF1dGguaAkxOTY5LTEyLTMxIDE2
OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAorKysrIGxkYXBhdXRoLmgJMjAwOC0wOC0yMyAxNTow
Mjo0Ny4wMDAwMDAwMDAgLTA3MDAKK0BAIC0wLDAgKzEsMTI0IEBACisrLyoKKysgKiAkSWQ6
IG9wZW5zc2gtbHBrLTQuM3AxLTAuMy43LnBhdGNoLHYgMS4zIDIwMDYvMDQvMTggMTU6Mjk6
MDkgZWF1IEV4cCAkIAorKyAqLworKworKy8qCisrICoKKysgKiBDb3B5cmlnaHQgKGMpIDIw
MDUsIEVyaWMgQVVHRSA8ZWF1QHBoZWFyLm9yZz4KKysgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorKyAqCisrICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorKyAqCisr
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorKyAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKysgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBwaGVhci5vcmcgbm9y
IHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKysgKgorKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIAorKyAqIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAKKysgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIAorKyAqIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IAorKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgCisrICogT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKysgKgorKyAqCisrICovCisrCisrI2lmbmRlZiBMREFQ
QVVUSF9ICisrI2RlZmluZSBMREFQQVVUSF9ICisrCisrI2RlZmluZSBMREFQX0RFUFJFQ0FU
RUQgMQorKworKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8dGltZS5oPgorKyNp
bmNsdWRlIDxsZGFwLmg+CisrI2luY2x1ZGUgPGxiZXIuaD4KKysKKysvKiB0b2tlbnMgaW4g
dXNlIGZvciBjb25maWcgKi8KKysjZGVmaW5lIF9ERUZBVUxUX0xQS19UT0tFTiAiVXNlTFBL
IgorKyNkZWZpbmUgX0RFRkFVTFRfU1JWX1RPS0VOICJMcGtTZXJ2ZXJzIgorKyNkZWZpbmUg
X0RFRkFVTFRfVVNSX1RPS0VOICJMcGtVc2VyRE4iCisrI2RlZmluZSBfREVGQVVMVF9HUlBf
VE9LRU4gIkxwa0dyb3VwRE4iCisrI2RlZmluZSBfREVGQVVMVF9CRE5fVE9LRU4gIkxwa0Jp
bmRETiIKKysjZGVmaW5lIF9ERUZBVUxUX0JQV19UT0tFTiAiTHBrQmluZFB3IgorKyNkZWZp
bmUgX0RFRkFVTFRfTVlHX1RPS0VOICJMcGtTZXJ2ZXJHcm91cCIKKysjZGVmaW5lIF9ERUZB
VUxUX0ZJTF9UT0tFTiAiTHBrRmlsdGVyIgorKyNkZWZpbmUgX0RFRkFVTFRfVExTX1RPS0VO
ICJMcGtGb3JjZVRMUyIKKysjZGVmaW5lIF9ERUZBVUxUX0JUSV9UT0tFTiAiTHBrQmluZFRp
bWVsaW1pdCIKKysjZGVmaW5lIF9ERUZBVUxUX1NUSV9UT0tFTiAiTHBrU2VhcmNoVGltZWxp
bWl0IgorKyNkZWZpbmUgX0RFRkFVTFRfTERQX1RPS0VOICJMcGtMZGFwQ29uZiIKKysKKysv
KiBkZWZhdWx0IG9wdGlvbnMgKi8KKysjZGVmaW5lIF9ERUZBVUxUX0xQS19PTiAwCisrI2Rl
ZmluZSBfREVGQVVMVF9MUEtfU0VSVkVSUyBOVUxMCisrI2RlZmluZSBfREVGQVVMVF9MUEtf
VUROIE5VTEwKKysjZGVmaW5lIF9ERUZBVUxUX0xQS19HRE4gTlVMTAorKyNkZWZpbmUgX0RF
RkFVTFRfTFBLX0JJTkRETiBOVUxMCisrI2RlZmluZSBfREVGQVVMVF9MUEtfQklORFBXIE5V
TEwKKysjZGVmaW5lIF9ERUZBVUxUX0xQS19TR1JPVVAgTlVMTAorKyNkZWZpbmUgX0RFRkFV
TFRfTFBLX0ZJTFRFUiBOVUxMCisrI2RlZmluZSBfREVGQVVMVF9MUEtfVExTIC0xCisrI2Rl
ZmluZSBfREVGQVVMVF9MUEtfQlRJTUVPVVQgMTAKKysjZGVmaW5lIF9ERUZBVUxUX0xQS19T
VElNRU9VVCAxMAorKyNkZWZpbmUgX0RFRkFVTFRfTFBLX0xEUCBOVUxMCisrCisrLyogZmxh
Z3MgKi8KKysjZGVmaW5lIEZMQUdfRU1QVFkJICAgIDB4MDAwMDAwMDAKKysjZGVmaW5lIEZM
QUdfQ09OTkVDVEVECSAgICAweDAwMDAwMDAxCisrCisrLyogZmxhZyBtYWNyb3MgKi8KKysj
ZGVmaW5lIEZMQUdfU0VUX0VNUFRZKHgpCQl4Jj0oRkxBR19FTVBUWSkKKysjZGVmaW5lIEZM
QUdfU0VUX0NPTk5FQ1RFRCh4KQkJeHw9KEZMQUdfQ09OTkVDVEVEKQorKyNkZWZpbmUgRkxB
R19TRVRfRElTQ09OTkVDVEVEKHgpCXgmPX4oRkxBR19DT05ORUNURUQpCisrCisrLyogZGVm
aW5lcyAqLworKyNkZWZpbmUgRkFJTFVSRSAtMQorKyNkZWZpbmUgU1VDQ0VTUyAwCisrI2Rl
ZmluZSBQVUJLRVlBVFRSICJzc2hQdWJsaWNLZXkiCisrCisrLyogCisrICoKKysgKiBkZWZp
bmVkIGZpbGVzIHBhdGggCisrICogKHNob3VsZCBiZSByZWxvY2F0ZWQgdG8gcGF0aG5hbWVz
LmgsCisrICogaWYgb25lIGRheSBpdCdzIGluY2x1ZGVkIHdpdGhpbiB0aGUgdHJlZSkgCisr
ICoKKysgKi8KKysjZGVmaW5lIF9QQVRIX0xEQVBfQ09ORklHX0ZJTEUgIi9ldGMvbGRhcC5j
b25mIgorKworKy8qIHN0cnVjdHVyZXMgKi8KKyt0eXBlZGVmIHN0cnVjdCBsZGFwX29wdGlv
bnMgeworKyAgICBpbnQgb247CQkJLyogVXNlIGl0IG9yIE5PVCAqLworKyAgICBMREFQICog
bGQ7CQkJLyogTERBUCBmaWxlIGRlc2MgKi8KKysgICAgY2hhciAqIHNlcnZlcnM7CQkvKiBw
YXJzZWQgc2VydmVycyBmb3IgbGRhcGxpYiBmYWlsb3ZlciBoYW5kbGluZyAqLworKyAgICBj
aGFyICogdV9iYXNlZG47CQkvKiB1c2VyIGJhc2VkbiAqLworKyAgICBjaGFyICogZ19iYXNl
ZG47CQkvKiBncm91cCBiYXNlZG4gKi8KKysgICAgY2hhciAqIGJpbmRkbjsJCS8qIGJpbmRk
biAqLworKyAgICBjaGFyICogYmluZHB3OwkJLyogYmluZCBwYXNzd29yZCAqLworKyAgICBj
aGFyICogc2dyb3VwOwkJLyogc2VydmVyIGdyb3VwICovCisrICAgIGNoYXIgKiBmZ3JvdXA7
CQkvKiBncm91cCBmaWx0ZXIgKi8KKysgICAgY2hhciAqIGZpbHRlcjsJCS8qIGFkZGl0aW9u
YWwgZmlsdGVyICovCisrICAgIGNoYXIgKiBsX2NvbmY7CQkvKiB1c2UgbGRhcC5jb25mICov
CisrICAgIGludCB0bHM7CQkJLyogVExTIG9ubHkgKi8KKysgICAgc3RydWN0IHRpbWV2YWwg
Yl90aW1lb3V0OyAgIC8qIGJpbmQgdGltZW91dCAqLworKyAgICBzdHJ1Y3QgdGltZXZhbCBz
X3RpbWVvdXQ7ICAgLyogc2VhcmNoIHRpbWVvdXQgKi8KKysgICAgdW5zaWduZWQgaW50IGZs
YWdzOwkJLyogbWlzYyBmbGFncyAocmVjb25uZWN0aW9uLCBmdXR1cmUgdXNlPykgKi8KKyt9
IGxkYXBfb3B0X3Q7CisrCisrdHlwZWRlZiBzdHJ1Y3QgbGRhcF9rZXlzIHsKKysgICAgc3Ry
dWN0IGJlcnZhbCAqKiBrZXlzOwkvKiB0aGUgcHVibGljIGtleXMgcmV0cmlldmVkICovCisr
ICAgIHVuc2lnbmVkIGludCBudW07CQkvKiBudW1iZXIgb2Yga2V5cyAqLworK30gbGRhcF9r
ZXlfdDsKKysKKysKKysvKiBmdW5jdGlvbiBoZWFkZXJzICovCisrdm9pZCBsZGFwX2Nsb3Nl
KGxkYXBfb3B0X3QgKik7CisraW50IGxkYXBfY29ubmVjdChsZGFwX29wdF90ICopOworK2No
YXIgKiBsZGFwX3BhcnNlX2dyb3Vwcyhjb25zdCBjaGFyICopOworK2NoYXIgKiBsZGFwX3Bh
cnNlX3NlcnZlcnMoY29uc3QgY2hhciAqKTsKKyt2b2lkIGxkYXBfb3B0aW9uc19wcmludChs
ZGFwX29wdF90ICopOworK3ZvaWQgbGRhcF9vcHRpb25zX2ZyZWUobGRhcF9vcHRfdCAqKTsK
Kyt2b2lkIGxkYXBfa2V5c19mcmVlKGxkYXBfa2V5X3QgKik7CisraW50IGxkYXBfcGFyc2Vf
bGNvbmYobGRhcF9vcHRfdCAqKTsKKytsZGFwX2tleV90ICogbGRhcF9nZXR1c2Vya2V5KGxk
YXBfb3B0X3QgKiwgY29uc3QgY2hhciAqKTsKKytpbnQgbGRhcF9pc21lbWJlcihsZGFwX29w
dF90ICosIGNvbnN0IGNoYXIgKik7CisrCisrI2VuZGlmCitkaWZmIC1OdWFyIC0tZXhjbHVk
ZSAnKi5vcmlnJyAtLWV4Y2x1ZGUgJyoucmVqJyBscGstdXNlci1leGFtcGxlLnR4dCBscGst
dXNlci1leGFtcGxlLnR4dAorLS0tIGxway11c2VyLWV4YW1wbGUudHh0CTE5NjktMTItMzEg
MTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCisrKysgbHBrLXVzZXItZXhhbXBsZS50eHQJMjAw
OC0wOC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDAKK0BAIC0wLDAgKzEsMTE3IEBACisr
CisrUG9zdCB0byBNTCAtPiBVc2VyIE1hZGUgUXVpY2sgSW5zdGFsbCBEb2MuCisrQ29udHJp
YnV0aW9uIGZyb20gSm9obiBMYW5lIDxqb2huQGxhbmUudWsubmV0PgorKworKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysKKysKKytPcGVuU1NIIExEQVAga2V5c3RvcmUgUGF0Y2gKKys9PT09
PT09PT09PT09PT09PT09PT09PT09PT0KKysKKytOT1RFOiB0aGVzZSBub3RlcyBhcmUgYSB0
cmFuc2NyaXB0IG9mIGEgc3BlY2lmaWMgaW5zdGFsbGF0aW9uCisrICAgICAgdGhleSB3b3Jr
IGZvciBtZSwgeW91ciBzcGVjaWZpY3MgbWF5IGJlIGRpZmZlcmVudCEKKysgICAgICBmcm9t
IEpvaG4gTGFuZSBNYXJjaCAxN3RoIDIwMDUgICAgICAgICBqb2huQGxhbmUudWsubmV0Cisr
CisrVGhpcyBpcyBhIHBhdGNoIHRvIE9wZW5TU0ggNC4wcDEgdG8gYWxsb3cgaXQgdG8gb2J0
YWluIHVzZXJzJyBwdWJsaWMga2V5cworK2Zyb20gdGhlaXIgTERBUCByZWNvcmQgYXMgYW4g
YWx0ZXJuYXRpdmUgdG8gfi8uc3NoL2F1dGhvcml6ZWRfa2V5cy4KKysKKysoQXNzdW1pbmcg
aGVyZSB0aGF0IG5lY2Vzc2FyeSBidWlsZCBzdHVmZiBpcyBpbiAkQlVJTEQpCisrCisrY2Qg
JEJVSUxEL29wZW5zc2gtNC4wcDEKKytwYXRjaCAtTnAxIC1pICRCVUlMRC9vcGVuc3NoLWxw
ay00LjBwMS0wLjMucGF0Y2gKKytta2RpciAtcCAvdmFyL2VtcHR5ICYmCisrLi9jb25maWd1
cmUgLS1wcmVmaXg9L3VzciAtLXN5c2NvbmZkaXI9L2V0Yy9zc2ggXAorKyAgICAtLWxpYmV4
ZWNkaXI9L3Vzci9zYmluIC0td2l0aC1tZDUtcGFzc3dvcmRzIC0td2l0aC1wYW0gXAorKyAg
ICAtLXdpdGgtbGlicz0iLWxsZGFwIiAtLXdpdGgtY3BwZmxhZ3M9Ii1EV0lUSF9MREFQX1BV
QktFWSIKKytOb3cgZG8uCisrbWFrZSAmJgorK21ha2UgaW5zdGFsbAorKworK0FkZCB0aGUg
Zm9sbG93aW5nIGNvbmZpZyB0byAvZXRjL3NzaC9zc2hfY29uZmlnCisrVXNlTFBLIHllcwor
K0xwa1NlcnZlcnMgbGRhcDovL215aG9zdC5teWRvbWFpbi5jb20KKytMcGtVc2VyRE4gIG91
PVBlb3BsZSxkYz1teWRvbWFpbixkYz1jb20KKysKKytXZSBuZWVkIHRvIHRlbGwgc3NoZCBh
Ym91dCB0aGUgU1NMIGtleXMgZHVyaW5nIGJvb3QsIGFzIHJvb3QncworK2Vudmlyb25tZW50
IGRvZXMgbm90IGV4aXN0IGF0IHRoYXQgdGltZS4gRWRpdCAvZXRjL3JjLmQvaW5pdC5kL3Nz
aGQuCisrQ2hhbmdlIHRoZSBzdGFydHVwIGNvZGUgZnJvbSB0aGlzOgorKyAgICAgICAgICAg
ICAgICBlY2hvICJTdGFydGluZyBTU0ggU2VydmVyLi4uIgorKyAgICAgICAgICAgICAgICBs
b2FkcHJvYyAvdXNyL3NiaW4vc3NoZAorKyAgICAgICAgICAgICAgICA7OworK3RvIHRoaXM6
CisrICAgICAgICAgICAgICAgIGVjaG8gIlN0YXJ0aW5nIFNTSCBTZXJ2ZXIuLi4iCisrICAg
ICAgICAgICAgICAgIExEQVBSQz0iL3Jvb3QvLmxkYXByYyIgbG9hZHByb2MgL3Vzci9zYmlu
L3NzaGQKKysgICAgICAgICAgICAgICAgOzsKKysKKytSZS1zdGFydCB0aGUgc3NoZCBkYWVt
b246CisrL2V0Yy9yYy5kL2luaXQuZC9zc2hkIHJlc3RhcnQKKysKKytJbnN0YWxsIHRoZSBh
ZGRpdGlvbmFsIExEQVAgc2NoZW1hCisrY3AgJEJVSUxEL29wZW5zc2gtbHBrLTAuMi5zY2hl
bWEgIC9ldGMvb3BlbmxkYXAvc2NoZW1hL29wZW5zc2guc2NoZW1hCisrCisrTm93IGFkZCB0
aGUgb3BlblNTSCBMREFQIHNjaGVtYSB0byAvZXRjL29wZW5sZGFwL3NsYXBkLmNvbmY6Cisr
QWRkIHRoZSBmb2xsb3dpbmcgdG8gdGhlIGVuZCBvZiB0aGUgZXhpc3RpbmcgYmxvY2sgb2Yg
c2NoZW1hIGluY2x1ZGVzCisraW5jbHVkZSAgICAgICAgIC9ldGMvb3BlbmxkYXAvc2NoZW1h
L29wZW5zc2guc2NoZW1hCisrCisrUmUtc3RhcnQgdGhlIExEQVAgc2VydmVyOgorKy9ldGMv
cmMuZC9pbml0LmQvc2xhcGQgcmVzdGFydAorKworK1RvIGFkZCBvbmUgb3IgbW9yZSBwdWJs
aWMga2V5cyB0byBhIHVzZXIsIGVnICJ0ZXN0dXNlciIgOgorK2xkYXBzZWFyY2ggLXggLVcg
LVogLUxMTCAtYiAidWlkPXRlc3R1c2VyLG91PVBlb3BsZSxkYz1teWRvbWFpbixkYz1jb20i
IC1ECisrInVpZD10ZXN0dXNlcixvdT1QZW9wbGUsZGM9bXlkb21haW4sZGM9Y29tIiA+IC90
bXAvdGVzdHVzZXIKKysKKythcHBlbmQgdGhlIGZvbGxvd2luZyB0byB0aGlzIC90bXAvdGVz
dHVzZXIgZmlsZQorK29iamVjdGNsYXNzOiBsZGFwUHVibGljS2V5Cisrc3NoUHVibGljS2V5
OiBzc2gtcnNhCisrQUFBQUIzTnphQzF5YzJFQUFBQUJKUUFBQUlCM2RzcndxWHFEN0U0ellZ
cnh3ZERLQlVReEtNaW9YeTlweEZWYWk2NGtBUHhqVTlLUworK3FJbzdRZmtqc2xmc2pmbGtz
amZsZGZranNsZGZqTFgvNXprelJtVDI4STVwaUd6dW5QdjE3Uzg5ejhYd1NzdUFvUjF0ODZ0
KzVkbEkKKys3ZVpFL2dWYm4yVVFrUXE3K2tkRFRTMnlYVjZWbkM1Mk4va0tMRzNjaUJrQkF3
PT0gR2VuZXJhbCBQdXJwb3NlIFJTQSBLZXkKKysKKytUaGVuIGRvIGEgbW9kaWZ5OgorK2xk
YXBtb2RpZnkgLXggLUQgInVpZD10ZXN0dXNlcixvdT1QZW9wbGUsZGM9bXlkb21haW4sZGM9
Y29tIiAtVyAtZgorKy90bXAvdGVzdHVzZXIgLVoKKytFbnRlciBMREFQIFBhc3N3b3JkOgor
K21vZGlmeWluZyBlbnRyeSAidWlkPXRlc3R1c2VyLG91PVBlb3BsZSxkYz1teWRvbWFpbixk
Yz1jb20iCisrQW5kIGNoZWNrIHRoZSBtb2RpZnkgaXMgb2s6CisrbGRhcHNlYXJjaCAteCAt
VyAtWiAtYiAidWlkPXRlc3R1c2VyLG91PVBlb3BsZSxkYz1teWRvbWFpbixkYz1jb20iIC1E
CisrInVpZD10ZXN0dXNlcixvdT1QZW9wbGUsZGM9bXlkb21haW4sZGM9Y29tIgorK0VudGVy
IExEQVAgUGFzc3dvcmQ6CisrIyBleHRlbmRlZCBMRElGCisrIworKyMgTERBUHYzCisrIyBi
YXNlIDx1aWQ9dGVzdHVzZXIsb3U9UGVvcGxlLGRjPW15ZG9tYWluLGRjPWNvbT4gd2l0aCBz
Y29wZSBzdWIKKysjIGZpbHRlcjogKG9iamVjdGNsYXNzPSopCisrIyByZXF1ZXN0aW5nOiBB
TEwKKysjCisrCisrIyB0ZXN0dXNlciwgUGVvcGxlLCBteWRvbWFpbi5jb20KKytkbjogdWlk
PXRlc3R1c2VyLG91PVBlb3BsZSxkYz1teWRvbWFpbixkYz1jb20KKyt1aWQ6IHRlc3R1c2Vy
CisrY246IHRlc3R1c2VyCisrb2JqZWN0Q2xhc3M6IGFjY291bnQKKytvYmplY3RDbGFzczog
cG9zaXhBY2NvdW50Cisrb2JqZWN0Q2xhc3M6IHRvcAorK29iamVjdENsYXNzOiBzaGFkb3dB
Y2NvdW50Cisrb2JqZWN0Q2xhc3M6IGxkYXBQdWJsaWNLZXkKKytzaGFkb3dMYXN0Q2hhbmdl
OiAxMjc1NworK3NoYWRvd01heDogOTk5OTkKKytzaGFkb3dXYXJuaW5nOiA3CisrbG9naW5T
aGVsbDogL2Jpbi9iYXNoCisrdWlkTnVtYmVyOiA5OTk5CisrZ2lkTnVtYmVyOiA1MDEKKyto
b21lRGlyZWN0b3J5OiAvaG9tZS90ZXN0dXNlcgorK3VzZXJQYXNzd29yZDo6IGUxTlRTRUY5
VURnd1YxaG5NMVZqVURSSkswazFZbkZpTDFkNFpVSk9iWGxaWjNaM1VUVT0KKytzc2hQdWJs
aWNLZXk6IHNzaC1yc2EKKytBQUFBQjNOemFDMXljMkVBQUFBQkpRQUFBSUIzZHNyd3FYcUQ3
RTR6WVlyeHdkREtCVVF4S01pb1h5OXB4RlZhaTY0a0FQeGpVOUtTcUlvN1Fma2pzbGZzamZs
a3NqZmxkZmtqc2xkZmpMWC81emt6Um1UMjhJNXBpR3p1blB2MTdTODl6CisrOFh3U3N1QW9S
MXQ4NnQrNWRsSTdlWkUvZ1ZibjJVUWtRcTcra2REVFMyeVhWNlZuQzUyTi9rS0xHM2NpQmtC
QXc9PSBHZW5lcmFsIFB1cnBvc2UgUlNBIEtleQorKworKyMgc2VhcmNoIHJlc3VsdAorK3Nl
YXJjaDogMworK3Jlc3VsdDogMCBTdWNjZXNzCisrCisrIyBudW1SZXNwb25zZXM6IDIKKysj
IG51bUVudHJpZXM6IDEKKysKKytOb3cgc3RhcnQgYSBzc2ggc2Vzc2lvbiB0byB1c2VyICJ0
ZXN0dXNlciIgZnJvbSB1c3VhbCBzc2ggY2xpZW50IChlLmcuCisrcHVUVFkpLiBMb2dpbiBz
aG91bGQgc3VjY2VlZC4KKysKKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCitkaWZmIC1OdWFy
IC0tZXhjbHVkZSAnKi5vcmlnJyAtLWV4Y2x1ZGUgJyoucmVqJyBNYWtlZmlsZS5pbiBNYWtl
ZmlsZS5pbgorLS0tIE1ha2VmaWxlLmluCTIwMDgtMDctMDggMDc6MjE6MTIuMDAwMDAwMDAw
IC0wNzAwCisrKysgTWFrZWZpbGUuaW4JMjAwOC0wOC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAg
LTA3MDAKK0BAIC04Nyw3ICs4Nyw3IEBACisgCWF1dGgta3JiNS5vIFwKKyAJYXV0aDItZ3Nz
Lm8gZ3NzLXNlcnYubyBnc3Mtc2Vydi1rcmI1Lm8gXAorIAlsb2dpbnJlYy5vIGF1dGgtcGFt
Lm8gYXV0aC1zaGFkb3cubyBhdXRoLXNpYS5vIG1kNWNyeXB0Lm8gXAorLQlhdWRpdC5vIGF1
ZGl0LWJzbS5vIHBsYXRmb3JtLm8gc2Z0cC1zZXJ2ZXIubyBzZnRwLWNvbW1vbi5vIFwKKysJ
YXVkaXQubyBhdWRpdC1ic20ubyBwbGF0Zm9ybS5vIGxkYXBhdXRoLm8gc2Z0cC1zZXJ2ZXIu
byBzZnRwLWNvbW1vbi5vIFwKKyAJcm9hbWluZ19jb21tb24ubworIAorIE1BTlBBR0VTCT0g
bW9kdWxpLjUub3V0IHNjcC4xLm91dCBzc2gtYWRkLjEub3V0IHNzaC1hZ2VudC4xLm91dCBz
c2gta2V5Z2VuLjEub3V0IHNzaC1rZXlzY2FuLjEub3V0IHNzaC4xLm91dCBzc2hkLjgub3V0
IHNmdHAtc2VydmVyLjgub3V0IHNmdHAuMS5vdXQgc3NoLXJhbmQtaGVscGVyLjgub3V0IHNz
aC1rZXlzaWduLjgub3V0IHNzaGRfY29uZmlnLjUub3V0IHNzaF9jb25maWcuNS5vdXQKK2Rp
ZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIG9wZW5zc2gt
bHBrX29wZW5sZGFwLnNjaGVtYSBvcGVuc3NoLWxwa19vcGVubGRhcC5zY2hlbWEKKy0tLSBv
cGVuc3NoLWxwa19vcGVubGRhcC5zY2hlbWEJMTk2OS0xMi0zMSAxNjowMDowMC4wMDAwMDAw
MDAgLTA4MDAKKysrKyBvcGVuc3NoLWxwa19vcGVubGRhcC5zY2hlbWEJMjAwOC0wOC0yMyAx
NTowMjo0Ny4wMDAwMDAwMDAgLTA3MDAKK0BAIC0wLDAgKzEsMTkgQEAKKysjCisrIyBMREFQ
IFB1YmxpYyBLZXkgUGF0Y2ggc2NoZW1hIGZvciB1c2Ugd2l0aCBvcGVuc3NoLWxkYXBwdWJr
ZXkKKysjIEF1dGhvcjogRXJpYyBBVUdFIDxlYXVAcGhlYXIub3JnPgorKyMgCisrIyBCYXNl
ZCBvbiB0aGUgcHJvcG9zYWwgb2YgOiBNYXJrIFJ1aWp0ZXIKKysjCisrCisrCisrIyBvY3Rl
dFN0cmluZyBTWU5UQVgKKythdHRyaWJ1dGV0eXBlICggMS4zLjYuMS40LjEuMjQ1NTIuNTAw
LjEuMS4xLjEzIE5BTUUgJ3NzaFB1YmxpY0tleScgCisrCURFU0MgJ01BTkRBVE9SWTogT3Bl
blNTSCBQdWJsaWMga2V5JyAKKysJRVFVQUxJVFkgb2N0ZXRTdHJpbmdNYXRjaAorKwlTWU5U
QVggMS4zLjYuMS40LjEuMTQ2Ni4xMTUuMTIxLjEuNDAgKQorKworKyMgcHJpbnRhYmxlU3Ry
aW5nIFNZTlRBWCB5ZXN8bm8KKytvYmplY3RjbGFzcyAoIDEuMy42LjEuNC4xLjI0NTUyLjUw
MC4xLjEuMi4wIE5BTUUgJ2xkYXBQdWJsaWNLZXknIFNVUCB0b3AgQVVYSUxJQVJZCisrCURF
U0MgJ01BTkRBVE9SWTogT3BlblNTSCBMUEsgb2JqZWN0Y2xhc3MnCisrCU1VU1QgKCBzc2hQ
dWJsaWNLZXkgJCB1aWQgKSAKKysJKQorZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3JpZycg
LS1leGNsdWRlICcqLnJlaicgb3BlbnNzaC1scGtfc3VuLnNjaGVtYSBvcGVuc3NoLWxwa19z
dW4uc2NoZW1hCistLS0gb3BlbnNzaC1scGtfc3VuLnNjaGVtYQkxOTY5LTEyLTMxIDE2OjAw
OjAwLjAwMDAwMDAwMCAtMDgwMAorKysrIG9wZW5zc2gtbHBrX3N1bi5zY2hlbWEJMjAwOC0w
OC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDAKK0BAIC0wLDAgKzEsMjEgQEAKKysjCisr
IyBMREFQIFB1YmxpYyBLZXkgUGF0Y2ggc2NoZW1hIGZvciB1c2Ugd2l0aCBvcGVuc3NoLWxk
YXBwdWJrZXkKKysjIEF1dGhvcjogRXJpYyBBVUdFIDxlYXVAcGhlYXIub3JnPgorKyMgCisr
IyBTY2hlbWEgZm9yIFN1biBEaXJlY3RvcnkgU2VydmVyLgorKyMgQmFzZWQgb24gdGhlIG9y
aWdpbmFsIHNjaGVtYSwgbW9kaWZpZWQgYnkgU3RlZmFuIEZpc2NoZXIuCisrIworKworK2Ru
OiBjbj1zY2hlbWEKKysKKysjIG9jdGV0U3RyaW5nIFNZTlRBWAorK2F0dHJpYnV0ZVR5cGVz
OiAoIDEuMy42LjEuNC4xLjI0NTUyLjUwMC4xLjEuMS4xMyBOQU1FICdzc2hQdWJsaWNLZXkn
IAorKwlERVNDICdNQU5EQVRPUlk6IE9wZW5TU0ggUHVibGljIGtleScgCisrCUVRVUFMSVRZ
IG9jdGV0U3RyaW5nTWF0Y2gKKysJU1lOVEFYIDEuMy42LjEuNC4xLjE0NjYuMTE1LjEyMS4x
LjQwICkKKysKKysjIHByaW50YWJsZVN0cmluZyBTWU5UQVggeWVzfG5vCisrb2JqZWN0Q2xh
c3NlczogKCAxLjMuNi4xLjQuMS4yNDU1Mi41MDAuMS4xLjIuMCBOQU1FICdsZGFwUHVibGlj
S2V5JyBTVVAgdG9wIEFVWElMSUFSWQorKwlERVNDICdNQU5EQVRPUlk6IE9wZW5TU0ggTFBL
IG9iamVjdGNsYXNzJworKwlNVVNUICggc3NoUHVibGljS2V5ICQgdWlkICkgCisrCSkKK2Rp
ZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIFJFQURNRS5s
cGsgUkVBRE1FLmxwaworLS0tIFJFQURNRS5scGsJMTk2OS0xMi0zMSAxNjowMDowMC4wMDAw
MDAwMDAgLTA4MDAKKysrKyBSRUFETUUubHBrCTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAw
MDAwIC0wNzAwCitAQCAtMCwwICsxLDI2NyBAQAorK09wZW5TU0ggTERBUCBQVUJMSUMgS0VZ
IFBBVENIIAorK0NvcHlyaWdodCAoYykgMjAwMyBFcmljIEFVR0UgKGVhdUBwaGVhci5vcmcp
CisrQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysKKytSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyttb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKythcmUgbWV0OgorKzEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisrICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKzIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisrICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorKyAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisrMy4gVGhlIG5h
bWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzCisrICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisrCisrVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IKKytJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTCisrT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4KKytJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCisr
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUCisrTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorK0RBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorK1RIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKysoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKytUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorKworK3B1cnBvc2VzIG9mIHRoaXMgcGF0Y2g6CisrCisrVGhpcyBwYXRjaCB3b3VsZCBo
ZWxwIHRvIGhhdmUgYXV0aGVudGljYXRpb24gY2VudHJhbGl6YXRpb24gcG9saWN5CisrdXNp
bmcgc3NoIHB1YmxpYyBrZXkgYXV0aGVudGljYXRpb24uCisrVGhpcyBwYXRjaCBjb3VsZCBi
ZSBhbiBhbHRlcm5hdGl2ZSB0byBvdGhlciAic2VjdXJlIiBhdXRoZW50aWNhdGlvbiBzeXN0
ZW0KKyt3b3JraW5nIGluIGEgc2ltaWxhciB3YXkgKEtlcmJlcm9zLCBTZWN1cklELCBldGMu
Li4pLCBleGNlcHQgdGhlIGZhY3QgCisrdGhhdCBpdCdzIGJhc2VkIG9uIE9wZW5TU0ggYW5k
IGl0cyBwdWJsaWMga2V5IGFiaWxpdGllcy4KKysKKys+PiBGWUk6IDw8CisrJ3VpZCc6IG1l
YW5zIHVuaXggYWNjb3VudHMgZXhpc3Rpbmcgb24gdGhlIGN1cnJlbnQgc2VydmVyCisrJ2xw
a1NlcnZlckdyb3VwOicgbWVhbiBzZXJ2ZXIgZ3JvdXAgY29uZmlndXJlZCBvbiB0aGUgY3Vy
cmVudCBzZXJ2ZXIgKCdscGtTZXJ2ZXJHcm91cCcgaW4gc3NoZF9jb25maWcpCisrCisrZXhh
bXBsZSBzY2hlbWE6CisrCisrCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlcnZlcjEgKHVpZDogZWF1LHJpdmFsLHRvdG8pIChscGtTZXJ2ZXJHcm91cDogdW5peCkK
KysgICAgICAgICAgICAgICAgX19fX19fX19fX18gICAgICAvCisrICAgICAgICAgICAgICAg
LyAgICAgICAgICAgXCAtLS0gLSBzZXJ2ZXIzICh1aWQ6IGVhdSwgdGl0aSkgKGxwa1NlcnZl
ckdyb3VwOiB1bml4KQorKyAgICAgICAgICAgICAgfCBMREFQIFNlcnZlciB8ICAgIFwKKysJ
ICAgICAgfCBlYXUgICxyaXZhbCB8ICAgICBzZXJ2ZXIyICh1aWQ6IHJpdmFsLCBlYXUpIChs
cGtTZXJ2ZXJHcm91cDogdW5peCkKKysJICAgICAgfCB0aXRpICx0b3RvICB8CisrCSAgICAg
IHwgdXNlcngsLi4uLiAgfCAgICAgICAgIHNlcnZlcjUgKHVpZDogZWF1KSAgKGxwa1NlcnZl
ckdyb3VwOiBtYWlsKQorKyAgICAgICAgICAgICAgIFxfX19fX19fX19fXy8gXCAgICAgICAv
CisrCSAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0gLSBzZXJ2ZXI0ICh1aWQ6IGVhdSwg
cml2YWwpICAobm8gZ3JvdXAgY29uZmlndXJlZCkKKysJCQkgICAgICAgICAgICAgXAorKwkJ
CQkgICAgICAgIGV0Yy4uLgorKworKy0gV0hBVCBXRSBORUVEIDoKKysKKysgICogY29uZmln
dXJlZCBMREFQIHNlcnZlciBzb21ld2hlcmUgb24gdGhlIG5ldHdvcmsgKGkuZS4gT3BlbkxE
QVApCisrICAqIHBhdGNoZWQgc3NoZCAod2l0aCB0aGlzIHBhdGNoIDspCisrICAqIExEQVAg
dXNlcigvZ3JvdXApIGVudHJ5IChsb29rIGF0IHVzZXJzLmxkaWYgKCYgZ3JvdXBzLmxkaWYp
KToKKysgICAgICAgIFVzZXIgZW50cnk6CisrCS0gYXR0YWNoZWQgdG8gdGhlICdsZGFwUHVi
bGljS2V5JyBvYmplY3RjbGFzcworKwktIGF0dGFjaGVkIHRvIHRoZSAncG9zaXhBY2NvdW50
JyBvYmplY3RjbGFzcworKwktIHdpdGggYSBmaWxsZWQgJ3NzaFB1YmxpY0tleScgYXR0cmli
dXRlIAorKwlFeGFtcGxlOgorKwkJZG46IHVpZD1lYXUsb3U9dXNlcnMsZGM9Y3Vja29vcyxk
Yz1uZXQKKysJCW9iamVjdGNsYXNzOiB0b3AKKysJCW9iamVjdGNsYXNzOiBwZXJzb24KKysJ
CW9iamVjdGNsYXNzOiBvcmdhbml6YXRpb25hbFBlcnNvbgorKwkJb2JqZWN0Y2xhc3M6IHBv
c2l4QWNjb3VudAorKwkJb2JqZWN0Y2xhc3M6IGxkYXBQdWJsaWNLZXkKKysJCWRlc2NyaXB0
aW9uOiBFcmljIEFVR0UgQWNjb3VudAorKwkJdXNlclBhc3N3b3JkOiBibGFoCisrCQljbjog
RXJpYyBBVUdFCisrCQlzbjogRXJpYyBBVUdFCisrCQl1aWQ6IGVhdQorKwkJdWlkTnVtYmVy
OiAxMDM0CisrCQlnaWROdW1iZXI6IDEKKysJCWhvbWVEaXJlY3Rvcnk6IC9leHBvcnQvaG9t
ZS9lYXUKKysJCXNzaFB1YmxpY0tleTogc3NoLWRzcyBBQUFBQjMuLi4KKysJCXNzaFB1Ymxp
Y0tleTogc3NoLWRzcyBBQUFBTTUuLi4KKysKKysJR3JvdXAgZW50cnk6CisrCS0gYXR0YWNo
ZWQgdG8gdGhlICdwb3NpeEdyb3VwJyBvYmplY3RjbGFzcworKwktIHdpdGggYSAnY24nIGdy
b3VwbmFtZSBhdHRyaWJ1dGUKKysJLSB3aXRoIG11bHRpcGxlICdtZW1iZXJVaWQnIGF0dHJp
YnV0ZXMgZmlsbGVkIHdpdGggdXNlcm5hbWVzIGFsbG93ZWQgaW4gdGhpcyBncm91cAorKwlF
eGFtcGxlOgorKwkJIyBmZXcgbWVtYmVycworKwkJZG46IGNuPXVuaXgsb3U9Z3JvdXBzLGRj
PWN1Y2tvb3MsZGM9bmV0CisrCQlvYmplY3RjbGFzczogdG9wCisrCQlvYmplY3RjbGFzczog
cG9zaXhHcm91cAorKwkJZGVzY3JpcHRpb246IFVuaXggYmFzZWQgc2VydmVycyBncm91cAor
KwkJY246IHVuaXgKKysJCWdpZE51bWJlcjogMTAwMgorKwkJbWVtYmVyVWlkOiBlYXUKKysJ
CW1lbWJlclVpZDogdXNlcjEKKysJCW1lbWJlclVpZDogdXNlcjIKKysKKysKKystIEhPVyBJ
VCBXT1JLUyA6CisrCisrICAqIHdpdGhvdXQgcGF0Y2gKKysgIElmIGEgdXNlciB3YW50cyB0
byBhdXRoZW50aWNhdGUgdG8gbG9nIGluIGEgc2VydmVyIHRoZSBzc2hkLCB3aWxsIGZpcnN0
IGxvb2sgZm9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBhbGxvd2VkIChSU0FhdXRoLGtlcmJl
cm9zLGV0Yy4uKQorKyAgYW5kIGlmIFJTQWF1dGggYW5kIHRpY2tldHMgYmFzZWQgYXV0aCBm
YWlscywgaXQgd2lsbCBmYWxsYmFjayB0byBzdGFuZGFyZCBwYXNzd29yZCBhdXRoZW50aWNh
dGlvbiAoaWYgZW5hYmxlZCkuCisrCisrICAqIHdpdGggdGhlIHBhdGNoCisrICBJZiBhIHVz
ZXIgd2FudCB0byBhdXRoZW50aWNhdGUgdG8gbG9nIGluIGEgc2VydmVyLCB0aGUgc3NoZCB3
aWxsIGZpcnN0IGxvb2sgZm9yIGF1dGggbWV0aG9kIGluY2x1ZGluZyBMREFQIHB1YmtleSwg
aWYgdGhlIGxkYXBwdWJrZXkgb3B0aW9ucyBpcyBlbmFibGVkLgorKyAgSXQgd2lsbCBkbyBh
biBsZGFwc2VhcmNoIHRvIGdldCB0aGUgcHVibGljIGtleSBkaXJlY3RseSBmcm9tIHRoZSBM
REFQIGluc3RlYWQgb2YgcmVhZGluZyBpdCBmcm9tIHRoZSBzZXJ2ZXIgZmlsZXN5c3RlbS4g
CisrICAodXN1YWxseSBpbiAkSE9NRS8uc3NoL2F1dGhvcml6ZWRfa2V5cykKKysKKysgIElm
IGdyb3VwcyBhcmUgZW5hYmxlZCwgaXQgd2lsbCBhbHNvIGNoZWNrIGlmIHRoZSB1c2VyIHRo
YXQgd2FudHMgdG8gbG9naW4gaXMgaW4gdGhlIGdyb3VwIG9mIHRoZSBzZXJ2ZXIgaGUgaXMg
dHJ5aW5nIHRvIGxvZyBpbnRvLgorKyAgSWYgaXQgZmFpbHMsIGl0IGZhbGxzIGJhY2sgb24g
UlNBIGF1dGggZmlsZXMgKCRIT01FLy5zc2gvYXV0aG9yaXplZF9rZXlzKSwgZXRjLi4gYW5k
IGZpbmFsbHkgdG8gc3RhbmRhcmQgcGFzc3dvcmQgYXV0aGVudGljYXRpb24gKGlmIGVuYWJs
ZWQpLgorKworKyAgNyB0b2tlbnMgYXJlIGFkZGVkIHRvIHNzaGRfY29uZmlnIDoKKysgICMg
aGVyZSBpcyB0aGUgbmV3IHBhdGNoZWQgbGRhcCByZWxhdGVkIHRva2VucworKyAgIyBlbnRy
aWVzIGluIHlvdXIgTERBUCBtdXN0IGJlIHBvc2l4QWNjb3VudCAmIHN0cm9uZ0F1dGhlbnRp
Y2F0aW9uVXNlciAmIHBvc2l4R3JvdXAKKysgIFVzZUxQSyB5ZXMJCQkJCQkJCSMgbG9vayB0
aGUgcHViIGtleSBpbnRvIExEQVAKKysgIExwa1NlcnZlcnMgbGRhcDovLzEwLjMxLjMyLjUv
IGxkYXA6Ly8xMC4zMS4zMi40IGxkYXA6Ly8xMC4zMS4zMi4zCSMgd2hpY2ggTERBUCBzZXJ2
ZXIgZm9yIHVzZXJzID8gKFVSTCBmb3JtYXQpCisrICBMcGtVc2VyRE4gIG91PXVzZXJzLGRj
PWZvb2JhcixkYz1uZXQJCQkJCSMgd2hpY2ggYmFzZSBETiBmb3IgdXNlcnMgPworKyAgTHBr
R3JvdXBETiBvdT1ncm91cHMsZGM9Zm9vYmFyLGRjPW5ldAkJCQkJIyB3aGljaCBiYXNlIERO
IGZvciBncm91cHMgPyAKKysgIExwa0JpbmRETiBjbj1tYW5hZ2VyLGRjPWZvb2JhcixkYz1u
ZXQJCQkJCSMgd2hpY2ggYmluZCBETiA/CisrICBMcGtCaW5kUHcgYXNlY3JldAkJCQkJCQkj
IGJpbmQgRE4gY3JlZGlkZW50aWFscworKyAgTHBrU2VydmVyR3JvdXAgYWdyb3VwbmFtZQkJ
CQkJCSMgdGhlIGdyb3VwIHRoZSBzZXJ2ZXIgaXMgcGFydCBvZgorKworKyAgUmlnaHQgbm93
IGknbSB1c2luZyBhbm9ueW1vdXMgYmluZGluZyB0byBnZXQgcHVibGljIGtleXMsIGJlY2F1
c2UgZ2V0dGluZyBwdWJsaWMga2V5cyBvZiBzb21lb25lIGRvZXNuJ3QgaW1wZXJzb25hdGUg
aGltuCBidXQgdGhlcmUgaXMgc29tZQorKyAgZmxhd3MgeW91IGhhdmUgdG8gdGFrZSBjYXJl
IG9mLgorKworKy0gSE9XIFRPIElOU0VSVCBBIFVTRVIvS0VZIElOVE8gQU4gTERBUCBFTlRS
WQorKworKyAgKiBteSB3YXkgKHRoZXJlIGlzIHBsZW50eSA6KQorKyAgLSBjcmVhdGUgbGRp
ZiBmaWxlIChpLmUuIHVzZXJzLmxkaWYpCisrICAtIGNhdCB+Ly5zc2gvaWRfZHNhLnB1YiBP
UiBjYXQgfi8uc3NoL2lkX3JzYS5wdWIgT1IgY2F0IH4vLnNzaC9pZGVudGl0eS5wdWIKKysg
IC0gbXkgd2F5IGluIDQgc3RlcHMgOgorKyAgRXhhbXBsZToKKysKKysgICMgeW91IGFkZCB0
aGlzIHRvIHRoZSB1c2VyIGVudHJ5IGluIHRoZSBMRElGIGZpbGUgOgorKyAgWy4uLl0KKysg
IG9iamVjdGNsYXNzOiBwb3NpeEFjY291bnQKKysgIG9iamVjdGNsYXNzOiBsZGFwUHVibGlj
S2V5CisrICBbLi4uXQorKyAgc3NoUHVibGlLZXk6IHNzaC1kc3MgQUFBQUJEaDEyRERVUjIu
Li4KKysgIFsuLi5dCisrCisrICAjIGluc2VydCB5b3VyIGVudHJ5IGFuZCB5b3UncmUgZG9u
ZSA6KQorKyAgbGRhcGFkZCAtRCBiYWxibGFibGEgLXcgYmxlaCA8IGZpbGUubGRpZiAKKysg
IAorKyAgYWxsIHN0YW5kYXJkIG9wdGlvbnMgY2FuIGJlIHByZXNlbnQgaW4gdGhlICdzc2hQ
dWJsaWNLZXknIGF0dHJpYnV0ZS4KKysKKystIFdIWSA6CisrCisrICBTaW1wbHkgYmVjYXVz
ZSwgaSB3YXMgbG9va2luZyBmb3IgYSB3YXkgdG8gY2VudHJhbGl6ZSBhbGwgc3lzYWRtaW5z
IGF1dGhlbnRpY2F0aW9uLCBlYXNpbHksICB3aXRob3V0IGNvbXBsZXRlbHkgdXNpbmcgTERB
UCAKKysgIGFzIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCAobGlrZSBwYW1fbGRhcCBldGMuLiku
ICAKKysgIAorKyAgQWZ0ZXIgbG9va2luZyBpbnRvIEtlcmJlcm9zLCBTZWN1cklELCBhbmQg
b3RoZXIgY2VudHJhbGl6ZWQgc2VjdXJlIGF1dGhlbnRpY2F0aW9ucyBzeXN0ZW1zLCB0aGUg
dXNlIG9mIFJTQSBhbmQgTERBUCB0byBnZXQgCisrICBwdWJsaWMga2V5IGZvciBhdXRoZW50
aWNhdGlvbiBhbGxvd3MgdXMgdG8gY29udHJvbCB3aG8gaGFzIGFjY2VzcyB0byB3aGljaCBz
ZXJ2ZXIgKHRoZSB1c2VyIG5lZWRzIGFuIGFjY291bnQgYW5kIHRvIGJlIGluICdzdHJvbmdB
dXRoZW50aWNhdGlvblVzZXInCisrICBvYmplY3RjbGFzcyB3aXRoaW4gTERBUCBhbmQgcGFy
dCBvZiB0aGUgZ3JvdXAgdGhlIFNTSCBzZXJ2ZXIgaXMgaW4pLiAKKysKKysgIFBhc3N3b3Jk
cyB1cGRhdGUgYXJlIG5vIGxvbmdlciBhIG5pZ2h0bWFyZSBmb3IgYSBzZXJ2ZXIgZmFybSAo
a2V5IHBhaXIgcGFzc3BocmFzZSBpcyBzdG9yZWQgb24gZWFjaCB1c2VyJ3MgYm94IGFuZCBw
cml2YXRlIGtleSBpcyBsb2NhbGx5IGVuY3J5cHRlZCB1c2luZyBoaXMgcGFzc3BocmFzZSAK
KysgIHNvIGVhY2ggdXNlciBjYW4gY2hhbmdlIGl0IGFzIG11Y2ggYXMgaGUgd2FudHMpLiAK
KysKKysgIEJsb2NraW5nIGEgdXNlciBhY2NvdW50IGNhbiBiZSBkb25lIGRpcmVjdGx5IGZy
b20gdGhlIExEQVAgKGlmIHNzaGQgaXMgdXNpbmcgUlNBQXV0aCArIGxkYXAgb25seSkuCisr
CisrLSBSVUxFUyA6ICAKKysgIEVudHJ5IGluIHRoZSBMREFQIHNlcnZlciBtdXN0IHJlc3Bl
Y3QgJ3Bvc2l4QWNjb3VudCcgYW5kICdsZGFwUHVibGljS2V5JyB3aGljaCBhcmUgZGVmaW5l
ZCBpbiBjb3JlLnNjaGVtYS4gCisrICBhbmQgdGhlIGFkZGl0aW9ubmFsIGxway5zY2hlbWEu
CisrCisrICBUaGlzIHBhdGNoIGNvdWxkIGFsbG93IGEgc21vb3RoIHRyYW5zaXRpb24gYmV0
d2VlbiBzdGFuZGFyZCBhdXRoICgvZXRjL3Bhc3N3ZCkgYW5kIGNvbXBsZXRlIExEQVAgYmFz
ZWQgYXV0aGVudGljYXRpb24gCisrICAocGFtbGRhcCwgbnNzX2xkYXAsIGV0Yy4uKS4KKysK
KysgIFRoaXMgY2FuIGJlIGFuIGFsdGVybmF0aXZlIHRvIG90aGVyIChvbGQ/L2V4cGVuc2l2
ZT8pIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgKEtlcmJlcm9zL1NlY3VySUQvLi4pLgorKyAg
CisrICBSZWZlcnJpbmcgdG8gc2NoZW1hIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhpcyBmaWxl
IGlmIHVzZXIgJ2VhdScgaXMgb25seSBpbiBncm91cCAndW5peCcKKysgICdlYXUnIHdvdWxk
IE9OTFkgYWNjZXNzICdzZXJ2ZXIxJywgJ3NlcnZlcjInLCAnc2VydmVyMycgQU5EICdzZXJ2
ZXI0JyBCVVQgTk9UICdzZXJ2ZXI1Jy4KKysgIElmIHlvdSB0aGVuIG1vZGlmeSB0aGUgTERB
UCAnbWFpbCcgZ3JvdXAgZW50cnkgdG8gYWRkICdtZW1iZXJVaWQ6IGVhdScgVEhFTiB1c2Vy
ICdlYXUnIHdvdWxkIGJlIGFibGUKKysgIHRvIGxvZyBpbiAnc2VydmVyNScgKGkgaG9wZSB5
b3UgZ290IHRoZSBpZGVhLCBteSBlbmdsaXNoIGlzIGJhZCA6KS4KKysKKysgIEVhY2ggc2Vy
dmVyJ3Mgc3NoZCBpcyBwYXRjaGVkIGFuZCBjb25maWd1cmVkIHRvIGFzayB0aGUgcHVibGlj
IGtleSBhbmQgdGhlIGdyb3VwIGluZm9zIGluIHRoZSBMREFQCisrICBzZXJ2ZXIuCisrICBX
aGVuIHlvdSB3YW50IHRvIGFsbG93IGEgbmV3IHVzZXIgdG8gaGF2ZSBhY2Nlc3MgdG8gdGhl
IHNlcnZlciBwYXJjLCB5b3UganVzdCBhZGQgaGltIGFuIGFjY291bnQgb24gCisrICB5b3Vy
IHNlcnZlcnMsIHlvdSBhZGQgaGlzIHB1YmxpYyBrZXkgaW50byBoaXMgZW50cnkgb24gdGhl
IExEQVAgc2VydmVyLCBpdCdzIGRvbmUuIAorKworKyAgQmVjYXVzZSBzc2hkcyBhcmUgbG9v
a2luZyBwdWJsaWMga2V5cyBpbnRvIHRoZSBMREFQIGRpcmVjdGx5IGluc3RlYWQgb2YgYSBm
aWxlICgkSE9NRS8uc3NoL2F1dGhvcml6ZWRfa2V5cykuCisrCisrICBXaGVuIHRoZSB1c2Vy
IG5lZWRzIHRvIGNoYW5nZSBoaXMgcGFzc3BocmFzZSBoZSBjYW4gZG8gaXQgZGlyZWN0bHkg
ZnJvbSBoaXMgd29ya3N0YXRpb24gYnkgY2hhbmdpbmcgCisrICBoaXMgb3duIGtleSBzZXQg
bG9jayBwYXNzcGhyYXNlLCBhbmQgYWxsIHNlcnZlcnMgYXJlIGF1dG9tYXRpY2FsbHkgYXdh
cmUuCisrIAorKyAgV2l0aCBhIENBUkVGVUwgTERBUCBzZXJ2ZXIgY29uZmlndXJhdGlvbiB5
b3UgY291bGQgYWxsb3cgYSB1c2VyIHRvIGFkZC9kZWxldGUvbW9kaWZ5IGhpcyBvd24gZW50
cnkgaGltc2VsZgorKyAgc28gaGUgY2FuIGFkZC9tb2RpZnkvZGVsZXRlIGhpbXNlbGYgaGlz
IHB1YmxpYyBrZXkgd2hlbiBuZWVkZWQuCisrCisrrSBGTEFXUyA6CisrICBMREFQIG11c3Qg
YmUgd2VsbCBjb25maWd1cmVkLCBnZXR0aW5nIHRoZSBwdWJsaWMga2V5IG9mIHNvbWUgdXNl
ciBpcyBub3QgYSBwcm9ibGVtLCBidXQgaWYgYW5vbnltb3VzIExEQVAgCisrICBhbGxvdyB3
cml0ZSB0byB1c2VycyBkbiwgc29tZWJvZHkgY291bGQgcmVwbGFjZSBzb21ldXNlcidzIHB1
YmxpYyBrZXkgYnkgaXRzIG93biBhbmQgaW1wZXJzb25hdGUgc29tZSAKKysgIG9mIHlvdXIg
dXNlcnMgaW4gYWxsIHlvdXIgc2VydmVyIGZhcm0gYmUgVkVSWSBDQVJFRlVMLgorKyAgCisr
ICBNSVRNIGF0dGFjayB3aGVuIHNzaGQgaXMgcmVxdWVzdGluZyB0aGUgcHVibGljIGtleSwg
Y291bGQgbGVhZCB0byBhIGNvbXByb21pc2Ugb2YgeW91ciBzZXJ2ZXJzIGFsbG93aW5nIGxv
Z2luIAorKyAgYXMgdGhlIGltcGVyc29ubmF0ZWQgdXNlci4KKysKKysgIElmIExEQVAgc2Vy
dmVyIGlzIGRvd24gdGhlbiwgZmFsbGJhY2sgb24gcGFzc3dkIGF1dGguCisrICAKKysgIHRo
ZSBsZGFwIGNvZGUgcGFydCBoYXMgbm90IGJlZW4gd2VsbCBhdWRpdGVkIHlldC4KKysKKyst
IExEQVAgVVNFUiBFTlRSWSBFWEFNUExFUyAoTERJRiBGb3JtYXQsIGxvb2sgaW4gdXNlcnMu
bGRpZikKKysgICAgLS0tIENVVCBIRVJFIC0tLQorKyAgICBkbjogdWlkPWpkb2Usb3U9dXNl
cnMsZGM9Zm9vYmFyLGRjPW5ldAorKyAgICBvYmplY3RjbGFzczogdG9wCisrICAgIG9iamVj
dGNsYXNzOiBwZXJzb24KKysgICAgb2JqZWN0Y2xhc3M6IG9yZ2FuaXphdGlvbmFsUGVyc29u
CisrICAgIG9iamVjdGNsYXNzOiBwb3NpeEFjY291bnQKKysgICAgb2JqZWN0Y2xhc3M6IGxk
YXBQdWJsaWNLZXkKKysgICAgZGVzY3JpcHRpb246IE15IGFjY291bnQKKysgICAgY246IEpv
aG4gRG9lCisrICAgIHNuOiBKb2huIERvZQorKyAgICB1aWQ6IGpkb2UKKysgICAgdWlkTnVt
YmVyOiAxMDAKKysgICAgZ2lkTnVtYmVyOiAxMDAKKysgICAgaG9tZURpcmVjdG9yeTogL2hv
bWUvamRvZQorKyAgICBzc2hQdWJsaWNLZXk6IHNzaC1kc3MgQUFBQUIzTnphQzFrYzNNQUFB
RUJBT3ZMOHBSRVVnOXdTeS84K2hRSjU0WUYzQVhrQjBPWnJYQi4uLi4KKysgICAgWy4uLl0K
KysgICAgLS0tIENVVCBIRVJFIC0tLQorKworKy0gTERBUCBHUk9VUCBFTlRSWSBFWEFNUExF
UyAoTERJRiBGb3JtYXQsIGxvb2sgaW4gZ3JvdXBzLmxkaWYpCisrICAgIC0tLSBDVVQgSEVS
RSAtLS0KKysgICAgZG46IGNuPXVuaXgsb3U9Z3JvdXBzLGRjPWN1Y2tvb3MsZGM9bmV0Cisr
ICAgIG9iamVjdGNsYXNzOiB0b3AKKysgICAgb2JqZWN0Y2xhc3M6IHBvc2l4R3JvdXAKKysg
ICAgZGVzY3JpcHRpb246IFVuaXggYmFzZWQgc2VydmVycyBncm91cAorKyAgICBjbjogdW5p
eAorKyAgICBnaWROdW1iZXI6IDEwMDIKKysgICAgbWVtYmVyVWlkOiBqZG9lCisrICAgIG1l
bWJlclVpZDogdXNlcjEKKysgICAgbWVtYmVyVWlkOiB1c2VyMgorKyAgICBbLi4uXQorKyAg
ICAtLS0gQ1VUIEhFUkUgLS0tCisrCisrPj4gRllJOiA8PCAKKytNdWx0aXBsZSAnc3NoUHVi
bGljS2V5JyBpbiBhIHVzZXIgZW50cnkgYXJlIGFsbG93ZWQsIGFzIHdlbGwgYXMgbXVsdGlw
bGUgJ21lbWJlclVpZCcgYXR0cmlidXRlcyBpbiBhIGdyb3VwIGVudHJ5CisrCisrLSBDT01Q
SUxJTkc6CisrICAxLiBBcHBseSB0aGUgcGF0Y2gKKysgIDIuIC4vY29uZmlndXJlIC0td2l0
aC15b3VyLW9wdGlvbnMgLS13aXRoLWxkYXA9L3ByZWZpeC90by9sZGFwX2xpYnNfYW5kX2lu
Y2x1ZGVzCisrICAzLiBtYWtlCisrICA0LiBpdCdzIGRvbmUuCisrCisrLSBCTEEgOgorKyAg
SSBob3BlIHRoaXMgY291bGQgaGVscCwgYW5kIGkgaG9wZSB0byBiZSBjbGVhciBlbm91Z2gs
LCBvciBnaXZlIGlkZWFzLiAgcXVlc3Rpb25zL2NvbW1lbnRzL2ltcHJvdmVtZW50cyBhcmUg
d2VsY29tZS4KKysgIAorKy0gVE9ETyA6CisrICBSZWRlc2lnbiBkaWZmZXJlbnRseS4KKysK
KystIERPQ1MvTElOSyA6CisrICBodHRwOi8vcGFjc2VjLmpwL2NvcmUwNS9wc2owNS1iYXJp
c2FuaS1lbi5wZGYKKysgIGh0dHA6Ly9mcml0ei5wb3RzZGFtLmVkdS9wcm9qZWN0cy9vcGVu
c3NoLWxway8KKysgIGh0dHA6Ly9mcml0ei5wb3RzZGFtLmVkdS9wcm9qZWN0cy9zc2hnYXRl
LworKyAgaHR0cDovL2Rldi5pbnZlcnNlcGF0aC5jb20vdHJhYy9vcGVuc3NoLWxwaworKyAg
aHR0cDovL2xhbS5zZi5uZXQvICggaHR0cDovL2xhbS5zb3VyY2Vmb3JnZS5uZXQvZG9jdW1l
bnRhdGlvbi9zdXBwb3J0ZWRTY2hlbWFzLmh0bSApCisrCisrLSBDT05UUklCVVRPUlMvSURF
QVMvR1JFRVRTIDoKKysgIC0gRmFsayBTaWVtb25zbWVpZXIuCisrICAtIEphY29iIFJpZWYu
CisrICAtIE1pY2hhZWwgRHVyY2hncmFmLgorKyAgLSBmcmVkZXJpYyBwZXRlcnMuCisrICAt
IEZpbmxheSBkb2JiaWUuCisrICAtIFN0ZWZhbiBGaXNoZXIuCisrICAtIFJvYmluIEguIEpv
aG5zb24uCisrICAtIEFkcmlhbiBCcmlkZ2V0dC4KKysKKystIENPTlRBQ1QgOgorKyAgLSBF
cmljIEFVR0UgPGVhdUBwaGVhci5vcmc+CisrICAtIEFuZHJlYSBCYXJpc2FuaSA8YW5kcmVh
QGludmVyc2VwYXRoLmNvbT4KK2RpZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhj
bHVkZSAnKi5yZWonIHNlcnZjb25mLmMgc2VydmNvbmYuYworLS0tIHNlcnZjb25mLmMJMjAw
OC0wNy0wMyAyMDo1MToxMi4wMDAwMDAwMDAgLTA3MDAKKysrKyBzZXJ2Y29uZi5jCTIwMDgt
MDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwCitAQCAtNDIsNiArNDIsMTAgQEAKKyAj
aW5jbHVkZSAiY2hhbm5lbHMuaCIKKyAjaW5jbHVkZSAiZ3JvdXBhY2Nlc3MuaCIKKyAKKysj
aWZkZWYgV0lUSF9MREFQX1BVQktFWQorKyNpbmNsdWRlICJsZGFwYXV0aC5oIgorKyNlbmRp
ZgorKworIHN0YXRpYyB2b2lkIGFkZF9saXN0ZW5fYWRkcihTZXJ2ZXJPcHRpb25zICosIGNo
YXIgKiwgaW50KTsKKyBzdGF0aWMgdm9pZCBhZGRfb25lX2xpc3Rlbl9hZGRyKFNlcnZlck9w
dGlvbnMgKiwgY2hhciAqLCBpbnQpOworIAorQEAgLTEyOCw2ICsxMzIsMjUgQEAKKyAJb3B0
aW9ucy0+YWRtX2ZvcmNlZF9jb21tYW5kID0gTlVMTDsKKyAJb3B0aW9ucy0+Y2hyb290X2Rp
cmVjdG9yeSA9IE5VTEw7CisgCW9wdGlvbnMtPnplcm9fa25vd2xlZGdlX3Bhc3N3b3JkX2F1
dGhlbnRpY2F0aW9uID0gLTE7CisrI2lmZGVmIFdJVEhfTERBUF9QVUJLRVkKKysgCS8qIFhY
WCBkaXJ0eSAqLworKyAJb3B0aW9ucy0+bHBrLmxkID0gTlVMTDsKKysgCW9wdGlvbnMtPmxw
ay5vbiA9IC0xOworKyAJb3B0aW9ucy0+bHBrLnNlcnZlcnMgPSBOVUxMOworKyAJb3B0aW9u
cy0+bHBrLnVfYmFzZWRuID0gTlVMTDsKKysgCW9wdGlvbnMtPmxway5nX2Jhc2VkbiA9IE5V
TEw7CisrIAlvcHRpb25zLT5scGsuYmluZGRuID0gTlVMTDsKKysgCW9wdGlvbnMtPmxway5i
aW5kcHcgPSBOVUxMOworKyAJb3B0aW9ucy0+bHBrLnNncm91cCA9IE5VTEw7CisrIAlvcHRp
b25zLT5scGsuZmlsdGVyID0gTlVMTDsKKysgCW9wdGlvbnMtPmxway5mZ3JvdXAgPSBOVUxM
OworKyAJb3B0aW9ucy0+bHBrLmxfY29uZiA9IE5VTEw7CisrIAlvcHRpb25zLT5scGsudGxz
ID0gLTE7CisrIAlvcHRpb25zLT5scGsuYl90aW1lb3V0LnR2X3NlYyA9IC0xOworKyAJb3B0
aW9ucy0+bHBrLnNfdGltZW91dC50dl9zZWMgPSAtMTsKKysgCW9wdGlvbnMtPmxway5mbGFn
cyA9IEZMQUdfRU1QVFk7CisrI2VuZGlmCisrCisgfQorIAorIHZvaWQKK0BAIC0yNjEsNiAr
Mjg0LDMyIEBACisgCQlvcHRpb25zLT5wZXJtaXRfdHVuID0gU1NIX1RVTk1PREVfTk87Cisg
CWlmIChvcHRpb25zLT56ZXJvX2tub3dsZWRnZV9wYXNzd29yZF9hdXRoZW50aWNhdGlvbiA9
PSAtMSkKKyAJCW9wdGlvbnMtPnplcm9fa25vd2xlZGdlX3Bhc3N3b3JkX2F1dGhlbnRpY2F0
aW9uID0gMDsKKysjaWZkZWYgV0lUSF9MREFQX1BVQktFWQorKwlpZiAob3B0aW9ucy0+bHBr
Lm9uID09IC0xKQorKwkgICAgb3B0aW9ucy0+bHBrLm9uID0gX0RFRkFVTFRfTFBLX09OOwor
KwlpZiAob3B0aW9ucy0+bHBrLnNlcnZlcnMgPT0gTlVMTCkKKysJICAgIG9wdGlvbnMtPmxw
ay5zZXJ2ZXJzID0gX0RFRkFVTFRfTFBLX1NFUlZFUlM7CisrCWlmIChvcHRpb25zLT5scGsu
dV9iYXNlZG4gPT0gTlVMTCkKKysJICAgIG9wdGlvbnMtPmxway51X2Jhc2VkbiA9IF9ERUZB
VUxUX0xQS19VRE47CisrCWlmIChvcHRpb25zLT5scGsuZ19iYXNlZG4gPT0gTlVMTCkKKysJ
ICAgIG9wdGlvbnMtPmxway5nX2Jhc2VkbiA9IF9ERUZBVUxUX0xQS19HRE47CisrCWlmIChv
cHRpb25zLT5scGsuYmluZGRuID09IE5VTEwpCisrCSAgICBvcHRpb25zLT5scGsuYmluZGRu
ID0gX0RFRkFVTFRfTFBLX0JJTkRETjsKKysJaWYgKG9wdGlvbnMtPmxway5iaW5kcHcgPT0g
TlVMTCkKKysJICAgIG9wdGlvbnMtPmxway5iaW5kcHcgPSBfREVGQVVMVF9MUEtfQklORFBX
OworKwlpZiAob3B0aW9ucy0+bHBrLnNncm91cCA9PSBOVUxMKQorKwkgICAgb3B0aW9ucy0+
bHBrLnNncm91cCA9IF9ERUZBVUxUX0xQS19TR1JPVVA7CisrCWlmIChvcHRpb25zLT5scGsu
ZmlsdGVyID09IE5VTEwpCisrCSAgICBvcHRpb25zLT5scGsuZmlsdGVyID0gX0RFRkFVTFRf
TFBLX0ZJTFRFUjsKKysJaWYgKG9wdGlvbnMtPmxway50bHMgPT0gLTEpCisrCSAgICBvcHRp
b25zLT5scGsudGxzID0gX0RFRkFVTFRfTFBLX1RMUzsKKysJaWYgKG9wdGlvbnMtPmxway5i
X3RpbWVvdXQudHZfc2VjID09IC0xKQorKwkgICAgb3B0aW9ucy0+bHBrLmJfdGltZW91dC50
dl9zZWMgPSBfREVGQVVMVF9MUEtfQlRJTUVPVVQ7CisrCWlmIChvcHRpb25zLT5scGsuc190
aW1lb3V0LnR2X3NlYyA9PSAtMSkKKysJICAgIG9wdGlvbnMtPmxway5zX3RpbWVvdXQudHZf
c2VjID0gX0RFRkFVTFRfTFBLX1NUSU1FT1VUOworKwlpZiAob3B0aW9ucy0+bHBrLmxfY29u
ZiA9PSBOVUxMKQorKwkgICAgb3B0aW9ucy0+bHBrLmxfY29uZiA9IF9ERUZBVUxUX0xQS19M
RFA7CisrI2VuZGlmCisgCisgCS8qIFR1cm4gcHJpdmlsZWdlIHNlcGFyYXRpb24gb24gYnkg
ZGVmYXVsdCAqLworIAlpZiAodXNlX3ByaXZzZXAgPT0gLTEpCitAQCAtMzA3LDYgKzM1Niwx
MiBAQAorIAlzVXNlUHJpdmlsZWdlU2VwYXJhdGlvbiwgc0FsbG93QWdlbnRGb3J3YXJkaW5n
LAorCXNaZXJvS25vd2xlZGdlUGFzc3dvcmRBdXRoZW50aWNhdGlvbiwKKyAJc0RlcHJlY2F0
ZWQsIHNVbnN1cHBvcnRlZAorKyNpZmRlZiBXSVRIX0xEQVBfUFVCS0VZCisrCSxzTGRhcFB1
YmxpY2tleSwgc0xkYXBTZXJ2ZXJzLCBzTGRhcFVzZXJETgorKwksc0xkYXBHcm91cEROLCBz
QmluZEROLCBzQmluZFB3LCBzTXlHcm91cAorKwksc0xkYXBGaWx0ZXIsIHNGb3JjZVRMUywg
c0JpbmRUaW1lb3V0CisrCSxzU2VhcmNoVGltZW91dCwgc0xkYXBDb25mCisrI2VuZGlmCisg
fSBTZXJ2ZXJPcENvZGVzOworIAorICNkZWZpbmUgU1NIQ0ZHX0dMT0JBTAkweDAxCS8qIGFs
bG93ZWQgaW4gbWFpbiBzZWN0aW9uIG9mIHNzaGRfY29uZmlnICovCitAQCAtNDE3LDYgKzQ3
MiwyMCBAQAorIAl7ICJjbGllbnRhbGl2ZWNvdW50bWF4Iiwgc0NsaWVudEFsaXZlQ291bnRN
YXgsIFNTSENGR19HTE9CQUwgfSwKKyAJeyAiYXV0aG9yaXplZGtleXNmaWxlIiwgc0F1dGhv
cml6ZWRLZXlzRmlsZSwgU1NIQ0ZHX0dMT0JBTCB9LAorIAl7ICJhdXRob3JpemVka2V5c2Zp
bGUyIiwgc0F1dGhvcml6ZWRLZXlzRmlsZTIsIFNTSENGR19HTE9CQUwgfSwKKysjaWZkZWYg
V0lUSF9MREFQX1BVQktFWQorKwl7IF9ERUZBVUxUX0xQS19UT0tFTiwgc0xkYXBQdWJsaWNr
ZXksIFNTSENGR19HTE9CQUwgfSwKKysJeyBfREVGQVVMVF9TUlZfVE9LRU4sIHNMZGFwU2Vy
dmVycywgU1NIQ0ZHX0dMT0JBTCB9LAorKwl7IF9ERUZBVUxUX1VTUl9UT0tFTiwgc0xkYXBV
c2VyRE4sIFNTSENGR19HTE9CQUwgfSwKKysJeyBfREVGQVVMVF9HUlBfVE9LRU4sIHNMZGFw
R3JvdXBETiwgU1NIQ0ZHX0dMT0JBTCB9LAorKwl7IF9ERUZBVUxUX0JETl9UT0tFTiwgc0Jp
bmRETiwgU1NIQ0ZHX0dMT0JBTCB9LAorKwl7IF9ERUZBVUxUX0JQV19UT0tFTiwgc0JpbmRQ
dywgU1NIQ0ZHX0dMT0JBTCB9LAorKwl7IF9ERUZBVUxUX01ZR19UT0tFTiwgc015R3JvdXAs
IFNTSENGR19HTE9CQUwgfSwKKysJeyBfREVGQVVMVF9GSUxfVE9LRU4sIHNMZGFwRmlsdGVy
LCBTU0hDRkdfR0xPQkFMIH0sCisrCXsgX0RFRkFVTFRfVExTX1RPS0VOLCBzRm9yY2VUTFMs
IFNTSENGR19HTE9CQUwgfSwKKysJeyBfREVGQVVMVF9CVElfVE9LRU4sIHNCaW5kVGltZW91
dCwgU1NIQ0ZHX0dMT0JBTCB9LAorKwl7IF9ERUZBVUxUX1NUSV9UT0tFTiwgc1NlYXJjaFRp
bWVvdXQsIFNTSENGR19HTE9CQUwgfSwKKysJeyBfREVGQVVMVF9MRFBfVE9LRU4sIHNMZGFw
Q29uZiwgU1NIQ0ZHX0dMT0JBTCB9LAorKyNlbmRpZgorIAl7ICJ1c2Vwcml2aWxlZ2VzZXBh
cmF0aW9uIiwgc1VzZVByaXZpbGVnZVNlcGFyYXRpb24sIFNTSENGR19HTE9CQUx9LAorIAl7
ICJhY2NlcHRlbnYiLCBzQWNjZXB0RW52LCBTU0hDRkdfR0xPQkFMIH0sCisgCXsgInBlcm1p
dHR1bm5lbCIsIHNQZXJtaXRUdW5uZWwsIFNTSENGR19HTE9CQUwgfSwKK0BAIC0xMzA3LDYg
KzEzNzYsMTA3IEBACisgCQl3aGlsZSAoYXJnKQorIAkJICAgIGFyZyA9IHN0cmRlbGltKCZj
cCk7CisgCQlicmVhazsKKysjaWZkZWYgV0lUSF9MREFQX1BVQktFWQorKwljYXNlIHNMZGFw
UHVibGlja2V5OgorKwkJaW50cHRyID0gJm9wdGlvbnMtPmxway5vbjsKKysJCWdvdG8gcGFy
c2VfZmxhZzsKKysJY2FzZSBzTGRhcFNlcnZlcnM6CisrCQkvKiBhcmcgPSBzdHJkZWxpbSgm
Y3ApOyAqLworKwkJcCA9IGxpbmU7CisrCQl3aGlsZSgqcCsrKTsKKysJCWFyZyA9IHA7Cisr
CQlpZiAoIWFyZyB8fCAqYXJnID09ICdcMCcpCisrCQkgICAgZmF0YWwoIiVzIGxpbmUgJWQ6
IG1pc3NpbmcgbGRhcCBzZXJ2ZXIiLGZpbGVuYW1lLGxpbmVudW0pOworKwkJYXJnW3N0cmxl
bihhcmcpXSA9ICdcMCc7CisrCQlpZiAoKG9wdGlvbnMtPmxway5zZXJ2ZXJzID0gbGRhcF9w
YXJzZV9zZXJ2ZXJzKGFyZykpID09IE5VTEwpCisrCQkgICAgZmF0YWwoIiVzIGxpbmUgJWQ6
IGVycm9yIGluIGxkYXAgc2VydmVycyIsIGZpbGVuYW1lLCBsaW5lbnVtKTsKKysJCW1lbXNl
dChhcmcsMCxzdHJsZW4oYXJnKSk7CisrCQlicmVhazsKKysJY2FzZSBzTGRhcFVzZXJETjoK
KysJCWFyZyA9IGNwOworKwkJaWYgKCFhcmcgfHwgKmFyZyA9PSAnXDAnKQorKwkJICAgIGZh
dGFsKCIlcyBsaW5lICVkOiBtaXNzaW5nIGxkYXAgc2VydmVyIixmaWxlbmFtZSxsaW5lbnVt
KTsKKysJCWFyZ1tzdHJsZW4oYXJnKV0gPSAnXDAnOworKwkJb3B0aW9ucy0+bHBrLnVfYmFz
ZWRuID0geHN0cmR1cChhcmcpOworKwkJbWVtc2V0KGFyZywwLHN0cmxlbihhcmcpKTsKKysJ
CWJyZWFrOworKwljYXNlIHNMZGFwR3JvdXBETjoKKysJCWFyZyA9IGNwOworKwkJaWYgKCFh
cmcgfHwgKmFyZyA9PSAnXDAnKQorKwkJICAgIGZhdGFsKCIlcyBsaW5lICVkOiBtaXNzaW5n
IGxkYXAgc2VydmVyIixmaWxlbmFtZSxsaW5lbnVtKTsKKysJCWFyZ1tzdHJsZW4oYXJnKV0g
PSAnXDAnOworKwkJb3B0aW9ucy0+bHBrLmdfYmFzZWRuID0geHN0cmR1cChhcmcpOworKwkJ
bWVtc2V0KGFyZywwLHN0cmxlbihhcmcpKTsKKysJCWJyZWFrOworKwljYXNlIHNCaW5kRE46
CisrCQlhcmcgPSBjcDsKKysJCWlmICghYXJnIHx8ICphcmcgPT0gJ1wwJykKKysJCSAgICBm
YXRhbCgiJXMgbGluZSAlZDogbWlzc2luZyBiaW5kZG4iLGZpbGVuYW1lLGxpbmVudW0pOwor
KwkJYXJnW3N0cmxlbihhcmcpXSA9ICdcMCc7CisrCQlvcHRpb25zLT5scGsuYmluZGRuID0g
eHN0cmR1cChhcmcpOworKwkJbWVtc2V0KGFyZywwLHN0cmxlbihhcmcpKTsKKysJCWJyZWFr
OworKwljYXNlIHNCaW5kUHc6CisrCQlhcmcgPSBjcDsKKysJCWlmICghYXJnIHx8ICphcmcg
PT0gJ1wwJykKKysJCSAgICBmYXRhbCgiJXMgbGluZSAlZDogbWlzc2luZyBiaW5kcHciLGZp
bGVuYW1lLGxpbmVudW0pOworKwkJYXJnW3N0cmxlbihhcmcpXSA9ICdcMCc7CisrCQlvcHRp
b25zLT5scGsuYmluZHB3ID0geHN0cmR1cChhcmcpOworKwkJbWVtc2V0KGFyZywwLHN0cmxl
bihhcmcpKTsKKysJCWJyZWFrOworKwljYXNlIHNNeUdyb3VwOgorKwkJYXJnID0gY3A7Cisr
CQlpZiAoIWFyZyB8fCAqYXJnID09ICdcMCcpCisrCQkgICAgZmF0YWwoIiVzIGxpbmUgJWQ6
IG1pc3NpbmcgZ3JvdXBuYW1lIixmaWxlbmFtZSwgbGluZW51bSk7CisrCQlhcmdbc3RybGVu
KGFyZyldID0gJ1wwJzsKKysJCW9wdGlvbnMtPmxway5zZ3JvdXAgPSB4c3RyZHVwKGFyZyk7
CisrCQlpZiAob3B0aW9ucy0+bHBrLnNncm91cCkKKysJCSAgICBvcHRpb25zLT5scGsuZmdy
b3VwID0gbGRhcF9wYXJzZV9ncm91cHMob3B0aW9ucy0+bHBrLnNncm91cCk7CisrCQltZW1z
ZXQoYXJnLDAsc3RybGVuKGFyZykpOworKwkJYnJlYWs7CisrCWNhc2Ugc0xkYXBGaWx0ZXI6
CisrCQlhcmcgPSBjcDsKKysJCWlmICghYXJnIHx8ICphcmcgPT0gJ1wwJykKKysJCSAgICBm
YXRhbCgiJXMgbGluZSAlZDogbWlzc2luZyBmaWx0ZXIiLGZpbGVuYW1lLCBsaW5lbnVtKTsK
KysJCWFyZ1tzdHJsZW4oYXJnKV0gPSAnXDAnOworKwkJb3B0aW9ucy0+bHBrLmZpbHRlciA9
IHhzdHJkdXAoYXJnKTsKKysJCW1lbXNldChhcmcsMCxzdHJsZW4oYXJnKSk7CisrCQlicmVh
azsKKysJY2FzZSBzRm9yY2VUTFM6CisrCQlpbnRwdHIgPSAmb3B0aW9ucy0+bHBrLnRsczsK
KysJCWFyZyA9IHN0cmRlbGltKCZjcCk7CisrCQlpZiAoIWFyZyB8fCAqYXJnID09ICdcMCcp
CisrCQkJZmF0YWwoIiVzIGxpbmUgJWQ6IG1pc3NpbmcgeWVzL25vIGFyZ3VtZW50LiIsCisr
CQkJICAgIGZpbGVuYW1lLCBsaW5lbnVtKTsKKysJCXZhbHVlID0gMDsJLyogc2lsZW5jZSBj
b21waWxlciAqLworKwkJaWYgKHN0cmNtcChhcmcsICJ5ZXMiKSA9PSAwKQorKwkJCXZhbHVl
ID0gMTsKKysJCWVsc2UgaWYgKHN0cmNtcChhcmcsICJubyIpID09IDApCisrCQkJdmFsdWUg
PSAwOworKwkJZWxzZSBpZiAoc3RyY21wKGFyZywgInRyeSIpID09IDApCisrCQkJdmFsdWUg
PSAtMTsKKysJCWVsc2UKKysJCQlmYXRhbCgiJXMgbGluZSAlZDogQmFkIHllcy9ubyBhcmd1
bWVudDogJXMiLAorKwkJCQlmaWxlbmFtZSwgbGluZW51bSwgYXJnKTsKKysJCWlmICgqaW50
cHRyID09IC0xKQorKwkJCSppbnRwdHIgPSB2YWx1ZTsKKysJCWJyZWFrOworKwljYXNlIHNC
aW5kVGltZW91dDoKKysJCWludHB0ciA9IChpbnQgKikgJm9wdGlvbnMtPmxway5iX3RpbWVv
dXQudHZfc2VjOworKwkJZ290byBwYXJzZV9pbnQ7CisrCWNhc2Ugc1NlYXJjaFRpbWVvdXQ6
CisrCQlpbnRwdHIgPSAoaW50ICopICZvcHRpb25zLT5scGsuc190aW1lb3V0LnR2X3NlYzsK
KysJCWdvdG8gcGFyc2VfaW50OworKwkJYnJlYWs7CisrCWNhc2Ugc0xkYXBDb25mOgorKwkJ
YXJnID0gY3A7CisrCQlpZiAoIWFyZyB8fCAqYXJnID09ICdcMCcpCisrCQkgICAgZmF0YWwo
IiVzIGxpbmUgJWQ6IG1pc3NpbmcgTHBrTGRhcENvbmYiLCBmaWxlbmFtZSwgbGluZW51bSk7
CisrCQlhcmdbc3RybGVuKGFyZyldID0gJ1wwJzsKKysJCW9wdGlvbnMtPmxway5sX2NvbmYg
PSB4c3RyZHVwKGFyZyk7CisrCQltZW1zZXQoYXJnLCAwLCBzdHJsZW4oYXJnKSk7CisrCQli
cmVhazsKKysjZW5kaWYKKyAKKyAJZGVmYXVsdDoKKyAJCWZhdGFsKCIlcyBsaW5lICVkOiBN
aXNzaW5nIGhhbmRsZXIgZm9yIG9wY29kZSAlcyAoJWQpIiwKK2RpZmYgLU51YXIgLS1leGNs
dWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIHNlcnZjb25mLmggc2VydmNvbmYuaAor
LS0tIHNlcnZjb25mLmgJMjAwOC0wNi0xMCAwNjowMTo1MS4wMDAwMDAwMDAgLTA3MDAKKysr
KyBzZXJ2Y29uZi5oCTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwCitAQCAt
MTYsNiArMTYsMTAgQEAKKyAjaWZuZGVmIFNFUlZDT05GX0gKKyAjZGVmaW5lIFNFUlZDT05G
X0gKKyAKKysjaWZkZWYgV0lUSF9MREFQX1BVQktFWQorKyNpbmNsdWRlICJsZGFwYXV0aC5o
IgorKyNlbmRpZgorKworICNkZWZpbmUgTUFYX1BPUlRTCQkyNTYJLyogTWF4ICMgcG9ydHMu
ICovCisgCisgI2RlZmluZSBNQVhfQUxMT1dfVVNFUlMJCTI1NgkvKiBNYXggIyB1c2VycyBv
biBhbGxvdyBsaXN0LiAqLworQEAgLTE0Nyw2ICsxNTEsOSBAQAorIAlpbnQJdXNlX3BhbTsJ
CS8qIEVuYWJsZSBhdXRoIHZpYSBQQU0gKi8KKyAKKyAJaW50CXBlcm1pdF90dW47CisrI2lm
ZGVmIFdJVEhfTERBUF9QVUJLRVkKKysgICAgICAgIGxkYXBfb3B0X3QgbHBrOworKyNlbmRp
ZgorIAorIAlpbnQJbnVtX3Blcm1pdHRlZF9vcGVuczsKKyAKK2RpZmYgLU51YXIgLS1leGNs
dWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIHNzaGQuYyBzc2hkLmMKKy0tLSBzc2hk
LmMJMjAwOC0wNy0xMSAwMDozNjo0OS4wMDAwMDAwMDAgLTA3MDAKKysrKyBzc2hkLmMJMjAw
OC0wOC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDAKK0BAIC0xMjcsNiArMTI3LDEwIEBA
CisgaW50IGRlbnlfc2V2ZXJpdHk7CisgI2VuZGlmIC8qIExJQldSQVAgKi8KKyAKKysjaWZk
ZWYgV0lUSF9MREFQX1BVQktFWQorKyNpbmNsdWRlICJsZGFwYXV0aC5oIgorKyNlbmRpZgor
KworICNpZm5kZWYgT19OT0NUVFkKKyAjZGVmaW5lIE9fTk9DVFRZCTAKKyAjZW5kaWYKK0BA
IC0xNDg0LDYgKzE0ODgsMTYgQEAKKyAJCWV4aXQoMSk7CisgCX0KKyAKKysjaWZkZWYgV0lU
SF9MREFQX1BVQktFWQorKyAgICAvKiBsZGFwX29wdGlvbnNfcHJpbnQoJm9wdGlvbnMubHBr
KTsgKi8KKysgICAgLyogWFhYIGluaXRpYWxpemUvY2hlY2sgbGRhcCBjb25uZWN0aW9uIGFu
ZCBzZXQgKkxEICovCisrICAgIGlmIChvcHRpb25zLmxway5vbikgeworKyAgICAgICAgaWYg
KG9wdGlvbnMubHBrLmxfY29uZiAmJiAobGRhcF9wYXJzZV9sY29uZigmb3B0aW9ucy5scGsp
IDwgMCkgKQorKyAgICAgICAgICAgIGVycm9yKCJbTERBUF0gY291bGQgbm90IHBhcnNlICVz
Iiwgb3B0aW9ucy5scGsubF9jb25mKTsKKysgICAgICAgIGlmIChsZGFwX2Nvbm5lY3QoJm9w
dGlvbnMubHBrKSA8IDApCisrICAgICAgICAgICAgZXJyb3IoIltMREFQXSBjb3VsZCBub3Qg
aW5pdGlhbGl6ZSBsZGFwIGNvbm5lY3Rpb24iKTsKKysgICAgfQorKyNlbmRpZgorIAlkZWJ1
Zygic3NoZCB2ZXJzaW9uICUuMTAwcyIsIFNTSF9SRUxFQVNFKTsKKyAKKyAJLyogU3RvcmUg
cHJpdmlsZWdlIHNlcGFyYXRpb24gdXNlciBmb3IgbGF0ZXIgdXNlIGlmIHJlcXVpcmVkLiAq
LworZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRlICcqLnJlaicgc3No
ZF9jb25maWcgc3NoZF9jb25maWcKKy0tLSBzc2hkX2NvbmZpZwkyMDA4LTA3LTAyIDA1OjM1
OjQzLjAwMDAwMDAwMCAtMDcwMAorKysrIHNzaGRfY29uZmlnCTIwMDgtMDgtMjMgMTU6MDI6
NDcuMDAwMDAwMDAwIC0wNzAwCitAQCAtMTA5LDYgKzEwOSwyMSBAQAorICMgbm8gZGVmYXVs
dCBiYW5uZXIgcGF0aAorICNCYW5uZXIgbm9uZQorIAorKyMgaGVyZSBhcmUgdGhlIG5ldyBw
YXRjaGVkIGxkYXAgcmVsYXRlZCB0b2tlbnMKKysjIGVudHJpZXMgaW4geW91ciBMREFQIG11
c3QgaGF2ZSBwb3NpeEFjY291bnQgJiBsZGFwUHVibGljS2V5IG9iamVjdGNsYXNzCisrI1Vz
ZUxQSyB5ZXMKKysjTHBrTGRhcENvbmYgL2V0Yy9sZGFwLmNvbmYKKysjTHBrU2VydmVycyAg
bGRhcDovLzEwLjEuNy4xLyBsZGFwOi8vMTAuMS43LjIvCisrI0xwa1VzZXJETiAgIG91PXVz
ZXJzLGRjPXBoZWFyLGRjPW9yZworKyNMcGtHcm91cEROICBvdT1ncm91cHMsZGM9cGhlYXIs
ZGM9b3JnCisrI0xwa0JpbmRETiBjbj1NYW5hZ2VyLGRjPXBoZWFyLGRjPW9yZworKyNMcGtC
aW5kUHcgc2VjcmV0CisrI0xwa1NlcnZlckdyb3VwIG1haWwKKysjTHBrRmlsdGVyIChob3N0
QWNjZXNzPW1hc3Rlci5waGVhci5vcmcpCisrI0xwa0ZvcmNlVExTIG5vCisrI0xwa1NlYXJj
aFRpbWVsaW1pdCAzCisrI0xwa0JpbmRUaW1lbGltaXQgMworKworICMgb3ZlcnJpZGUgZGVm
YXVsdCBvZiBubyBzdWJzeXN0ZW1zCisgU3Vic3lzdGVtCXNmdHAJL3Vzci9saWJleGVjL3Nm
dHAtc2VydmVyCisgCitkaWZmIC1OdWFyIC0tZXhjbHVkZSAnKi5vcmlnJyAtLWV4Y2x1ZGUg
JyoucmVqJyBzc2hkX2NvbmZpZy41IHNzaGRfY29uZmlnLjUKKy0tLSBzc2hkX2NvbmZpZy41
CTIwMDgtMDctMDIgMDU6MzU6NDMuMDAwMDAwMDAwIC0wNzAwCisrKysgc3NoZF9jb25maWcu
NQkyMDA4LTA4LTIzIDE1OjAyOjQ3LjAwMDAwMDAwMCAtMDcwMAorQEAgLTEwMTAsNiArMTAx
MCw2MiBAQAorIHByb2dyYW0uCisgVGhlIGRlZmF1bHQgaXMKKyAuUGEgL3Vzci9YMTFSNi9i
aW4veGF1dGggLgorKy5JdCBDbSBVc2VMUEsKKytTcGVjaWZpZXMgd2hldGhlciBMREFQIHB1
YmxpYyBrZXkgcmV0cmlldmFsIG11c3QgYmUgdXNlZCBvciBub3QuIEl0IGFsbG93CisrYW4g
ZWFzeSBjZW50cmFsaXNhdGlvbiBvZiBwdWJsaWMga2V5cyB3aXRoaW4gYW4gTERBUCBkaXJl
Y3RvcnkuIFRoZSBhcmd1bWVudCBtdXN0IGJlCisrLkRxIHllcworK29yCisrLkRxIG5vIC4K
KysuSXQgQ20gTHBrTGRhcENvbmYKKytTcGVjaWZpZXMgd2hldGhlciBMREFQIFB1YmxpYyBr
ZXlzIHNob3VsZCBwYXJzZSB0aGUgc3BlY2lmaWVkIGxkYXAuY29uZiBmaWxlCisraW5zdGVh
ZCBvZiBzc2hkX2NvbmZpZyBUb2tlbnMuIFRoZSBhcmd1bWVudCBtdXN0IGJlIGEgdmFsaWQg
cGF0aCB0byBhbiBsZGFwLmNvbmYKKytmaWxlIGxpa2UKKysuUGEgL2V0Yy9sZGFwLmNvbmYK
KysuSXQgQ20gTHBrU2VydmVycworK1NwZWNpZmllcyBMREFQIG9uZSBvciBtb3JlIFs6c3Bh
Y2U6XSBzZXBhcmF0ZWQgc2VydmVyJ3MgdXJsIHRoZSBmb2xsb3dpbmcgZm9ybSBtYXkgYmUg
dXNlZDoKKysuUHAKKytMcGtTZXJ2ZXJzIGxkYXBzOi8vMTI3LjAuMC4xIGxkYXA6Ly8xMjcu
MC4wLjIgbGRhcDovLzEyNy4wLjAuMworKy5JdCBDbSBMcGtVc2VyRE4KKytTcGVjaWZpZXMg
dGhlIExEQVAgdXNlciBETi4KKysuUHAKKytMcGtVc2VyRE4gb3U9dXNlcnMsZGM9cGhlYXIs
ZGM9b3JnCisrLkl0IENtIExwa0dyb3VwRE4KKytTcGVjaWZpZXMgdGhlIExEQVAgZ3JvdXBz
IEROLgorKy5QcAorK0xwa0dyb3VwRE4gb3U9Z3JvdXBzLGRjPXBoZWFyLGRjPW9yZworKy5J
dCBDbSBMcGtCaW5kRE4KKytTcGVjaWZpZXMgdGhlIExEQVAgYmluZCBETiB0byB1c2UgaWYg
bmVjZXNzYXJ5LgorKy5QcAorK0xwa0JpbmRETiBjbj1NYW5hZ2VyLGRjPXBoZWFyLGRjPW9y
ZworKy5JdCBDbSBMcGtCaW5kUHcKKytTcGVjaWZpZXMgdGhlIExEQVAgYmluZCBjcmVkZW50
aWFsLiAKKysuUHAKKytMcGtCaW5kUHcgc2VjcmV0CisrLkl0IENtIExwa1NlcnZlckdyb3Vw
CisrU3BlY2lmaWVzIG9uZSBvciBtb3JlIFs6c3BhY2U6XSBzZXBhcmF0ZWQgZ3JvdXAgdGhl
IHNlcnZlciBpcyBwYXJ0IG9mLiAKKysuUHAKKytMcGtTZXJ2ZXJHcm91cCB1bml4IG1haWwg
cHJvZAorKy5JdCBDbSBMcGtGaWx0ZXIKKytTcGVjaWZpZXMgYW4gYWRkaXRpb25hbCBMREFQ
IGZpbHRlciB0byB1c2UgZm9yIGZpbmRpbmcgU1NIIGtleXMKKysuUHAKKytMcGtGaWx0ZXIg
KGhvc3RBY2Nlc3M9bWFzdGVyLnBoZWFyLm9yZykKKysuSXQgQ20gTHBrRm9yY2VUTFMKKytT
cGVjaWZpZXMgaWYgdGhlIExEQVAgc2VydmVyIGNvbm5lY3Rpb24gbXVzdCBiZSB0cmllZCwg
Zm9yY2VkIG9yIG5vdCB1c2VkLiBUaGUgYXJndW1lbnQgbXVzdCBiZSAKKysuRHEgeWVzCisr
b3IKKysuRHEgbm8KKytvcgorKy5EcSB0cnkgLgorKy5JdCBDbSBMcGtTZWFyY2hUaW1lbGlt
aXQKKytTZXBjaWZpZXMgdGhlIHNlYXJjaCB0aW1lIGxpbWl0IGJlZm9yZSB0aGUgc2VhcmNo
IGlzIGNvbnNpZGVyZWQgb3Zlci4gdmFsdWUgaXMKKytpbiBzZWNvbmRzLgorKy5QcAorK0xw
a1NlYXJjaFRpbWVsaW1pdCAzCisrLkl0IENtIExwa0JpbmRUaW1lbGltaXQKKytTZXBjaWZp
ZXMgdGhlIGJpbmQgdGltZSBsaW1pdCBiZWZvcmUgdGhlIGNvbm5lY3Rpb24gaXMgY29uc2lk
ZXJlZCBkZWFkLiB2YWx1ZSBpcworK2luIHNlY29uZHMuCisrLlBwCisrTHBrQmluZFRpbWVs
aW1pdCAzCisgLkVsCisgLlNoIFRJTUUgRk9STUFUUworIC5YciBzc2hkIDgKZGlmZiAtTnJ1
IC9ob21lL2dhd3JpbG9mZi9scGsvb3BlbnNzaC1wb3J0YWJsZS9maWxlcy9wYXRjaC1zc2hk
X2NvbmZpZy41IC9ob21lL2dhd3JpbG9mZi9vcGVuc3NoLXBvcnRhYmxlL2ZpbGVzL3BhdGNo
LXNzaGRfY29uZmlnLjUKLS0tIC9ob21lL2dhd3JpbG9mZi9scGsvb3BlbnNzaC1wb3J0YWJs
ZS9maWxlcy9wYXRjaC1zc2hkX2NvbmZpZy41CTIwMDYtMTAtMDEgMDU6MTU6MDAuMDAwMDAw
MDAwICswMzAwCisrKyAvaG9tZS9nYXdyaWxvZmYvb3BlbnNzaC1wb3J0YWJsZS9maWxlcy9w
YXRjaC1zc2hkX2NvbmZpZy41CTIwMTAtMTItMjEgMTE6MzY6MDYuMDAwMDAwMDAwICswMjAw
CkBAIC0xLDI1ICsxLDUgQEAKIC0tLSBzc2hkX2NvbmZpZy41Lm9yaWcJVHVlIEF1ZyAyOSAy
MjowNjozNCAyMDA2CiArKysgc3NoZF9jb25maWcuNQlTYXQgU2VwIDMwIDEwOjM5OjA3IDIw
MDYKLUBAIC0xNjksOSArMTcwLDE2IEBACi0gQnkgZGVmYXVsdCwgbm8gYmFubmVyIGlzIGRp
c3BsYXllZC4KLSAuSXQgQ20gQ2hhbGxlbmdlUmVzcG9uc2VBdXRoZW50aWNhdGlvbgotIFNw
ZWNpZmllcyB3aGV0aGVyIGNoYWxsZW5nZS1yZXNwb25zZSBhdXRoZW50aWNhdGlvbiBpcyBh
bGxvd2VkLgotLUFsbCBhdXRoZW50aWNhdGlvbiBzdHlsZXMgZnJvbQotLS5YciBsb2dpbi5j
b25mIDUKLS1hcmUgc3VwcG9ydGVkLgotK1NwZWNpZmljYWxseSwgaW4KLSsuRnggLAotK3Ro
aXMgY29udHJvbHMgdGhlIHVzZSBvZiBQQU0gKHNlZQotKy5YciBwYW0gMyApCi0rZm9yIGF1
dGhlbnRpY2F0aW9uLgotK05vdGUgdGhhdCB0aGlzIGFmZmVjdHMgdGhlIGVmZmVjdGl2ZW5l
c3Mgb2YgdGhlCi0rLkNtIFBhc3N3b3JkQXV0aGVudGljYXRpb24KLSthbmQKLSsuQ20gUGVy
bWl0Um9vdExvZ2luCi0rdmFyaWFibGVzLgotIFRoZSBkZWZhdWx0IGlzCi0gLkRxIHllcyAu
Ci0gLkl0IENtIENpcGhlcnMKIEBAIC01NTQsNyArNTYwLDIyIEBACiAgLkl0IENtIFBhc3N3
b3JkQXV0aGVudGljYXRpb24KICBTcGVjaWZpZXMgd2hldGhlciBwYXNzd29yZCBhdXRoZW50
aWNhdGlvbiBpcyBhbGxvd2VkLgo=
--------------090401030803030509030101--
--------------ms040800010301040905010606
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature
MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIITbDCC
BjQwggQcoAMCAQICAR4wDQYJKoZIhvcNAQEFBQAwfTELMAkGA1UEBhMCSUwxFjAUBgNVBAoT
DVN0YXJ0Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNp
Z25pbmcxKTAnBgNVBAMTIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA3
MTAyNDIxMDE1NVoXDTE3MTAyNDIxMDE1NVowgYwxCzAJBgNVBAYTAklMMRYwFAYDVQQKEw1T
dGFydENvbSBMdGQuMSswKQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWdu
aW5nMTgwNgYDVQQDEy9TdGFydENvbSBDbGFzcyAxIFByaW1hcnkgSW50ZXJtZWRpYXRlIENs
aWVudCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMcJg8zOLdgasSmkLhOr
lr6KMoOMpohBllVHrdRvEg/q6r8jR+EK75xCGhR8ToREoqe7zM9/UnC6TS2y9UKTpT1v7RSM
zR0t6ndl0TWBuUr/UXBhPk+Kmy7bI4yW4urC+y7P3/1/X7U8ocb8VpH/Clt+4iq7nirMcNh6
qJR+xjOhV+VHzQMALuGYn5KZmc1NbJQYclsGkDxDz2UbFqE2+6vIZoL+jb9x4Pa5gNf1TwSD
kOkikZB1xtB4ZqtXThaABSONdfmv/Z1pua3FYxnCFmdr/+N2JLKutIxMYqQOJebr/f/h5t95
m4JgrM3Y/w7YX9d7YAL9jvN4SydHsU6n65cCAwEAAaOCAa0wggGpMA8GA1UdEwEB/wQFMAMB
Af8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRTcu2SnODaywFcfH6WNU7y1LhRgjAfBgNV
HSMEGDAWgBROC+8apEBbpRdphzDKNGhD0EGu8jBmBggrBgEFBQcBAQRaMFgwJwYIKwYBBQUH
MAGGG2h0dHA6Ly9vY3NwLnN0YXJ0c3NsLmNvbS9jYTAtBggrBgEFBQcwAoYhaHR0cDovL3d3
dy5zdGFydHNzbC5jb20vc2ZzY2EuY3J0MFsGA1UdHwRUMFIwJ6AloCOGIWh0dHA6Ly93d3cu
c3RhcnRzc2wuY29tL3Nmc2NhLmNybDAnoCWgI4YhaHR0cDovL2NybC5zdGFydHNzbC5jb20v
c2ZzY2EuY3JsMIGABgNVHSAEeTB3MHUGCysGAQQBgbU3AQIBMGYwLgYIKwYBBQUHAgEWImh0
dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93
d3cuc3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwDQYJKoZIhvcNAQEFBQADggIBAAqD
CH14qywGXLhjjF6uHLkjd02hcdh9hrw+VUsv+q1eeQWB21jWj3kJ96AUlPCoEGZ/ynJNScWy
6QMVQjbbMXltUfO4n4bGGdKo3awPWp61tjAFgraLJgDk+DsSvUD6EowjMTNx25GQgyYJ5RPI
zKKR9tQW8gGK+2+RHxkUCTbYFnL6kl8Ch507rUdPPipJ9CgJFws3kDS3gOS5WFMxcjO5DwKf
KSETEPrHh7p5shuuNktvsv6hxHTLhiMKX893gxdT3XLS9OKmCv87vkINQcNEcIIoFWbP9HOR
z9v3vQwR4e3ksLc2JZOAFK+ssS5XMEoznzpihEP0PLc4dCBYjbvSD7kxgDwZ+Aj8Q9PkbvE9
sIPP7ON0fz095HdThKjiVJe6vofq+n6b1NBc8XdrQvBmunwxD5nvtTW4vtN6VY7mUCmxsCie
uoBJ9OlqmsVWQvifIYf40dJPZkk9YgGTzWLpXDSfLSplbY2LL9C9U0ptvjcDjefLTvqSFc7t
w1sEhF0n/qpA2r0GpvkLRDmcSwVyPvmjFBGqUp/pNy8ZuPGQmHwFi2/14+xeSUDG2bwnsYJQ
G2EdJCB6luQ57GEnTA/yKZSTKI8dDQa8Sd3zfXb19mOgSF0bBdXbuKhEpuP9wirslFe6fQ1t
5j5R0xi72MZ8ikMu1RQZKCyDbMwazlHiMIIGljCCBX6gAwIBAgIDAb7OMA0GCSqGSIb3DQEB
BQUAMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi
U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4MDYGA1UEAxMvU3RhcnRDb20g
Q2xhc3MgMSBQcmltYXJ5IEludGVybWVkaWF0ZSBDbGllbnQgQ0EwHhcNMTAxMDIyMDcwNjU0
WhcNMTExMDIzMDQ0MjE0WjCBjzEgMB4GA1UEDRMXMjc5NzY1LW9JYUoyZzVWbFlOMkIxMHYx
HjAcBgNVBAoTFVBlcnNvbmEgTm90IFZhbGlkYXRlZDEpMCcGA1UEAxMgU3RhcnRDb20gRnJl
ZSBDZXJ0aWZpY2F0ZSBNZW1iZXIxIDAeBgkqhkiG9w0BCQEWEWJhcnpvZ0B0ZWxlY29tLmJ5
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqNuuLPvrhyATcaXqYPmx3ZnDuFut
5stBO/WRcGXglYk1RDr5LUeY40HLNOHEVRmQlZ0kAmm8K3W3pwICQZ93LDMEsi5IUWpd2azw
QaIvzkA3fXRk+aVUYWbFAm8rcHbbEzYmDEfegs+oocriK5AQEpMs7HjbRwHj+nb2Fk1aiaRP
vxThAILKqjAXGcr2K1qRsWV7Kf4bp36EhAzOTf8mazbsOXEqagkIfnwFDqEd0bJ2XhJMnwBt
SXOnulSRuYFfQ/kP3IQd7vZZimikcx9z2LJB4lDr/422Lh/G4cMteqHKZhAVUCDGP0E6uzEj
kFRUkGb4AIbcUp5QpYD/FQxgdwIDAQABo4IC+jCCAvYwCQYDVR0TBAIwADALBgNVHQ8EBAMC
BLAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMB0GA1UdDgQWBBSV0VEMqvSMGFoV
4sk6rIxeUbJnQzAfBgNVHSMEGDAWgBRTcu2SnODaywFcfH6WNU7y1LhRgjAcBgNVHREEFTAT
gRFiYXJ6b2dAdGVsZWNvbS5ieTCCAUIGA1UdIASCATkwggE1MIIBMQYLKwYBBAGBtTcBAgIw
ggEgMC4GCCsGAQUFBwIBFiJodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9wb2xpY3kucGRmMDQG
CCsGAQUFBwIBFihodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9pbnRlcm1lZGlhdGUucGRmMIG3
BggrBgEFBQcCAjCBqjAUFg1TdGFydENvbSBMdGQuMAMCAQEagZFMaW1pdGVkIExpYWJpbGl0
eSwgc2VlIHNlY3Rpb24gKkxlZ2FsIExpbWl0YXRpb25zKiBvZiB0aGUgU3RhcnRDb20gQ2Vy
dGlmaWNhdGlvbiBBdXRob3JpdHkgUG9saWN5IGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LnN0
YXJ0c3NsLmNvbS9wb2xpY3kucGRmMGMGA1UdHwRcMFowK6ApoCeGJWh0dHA6Ly93d3cuc3Rh
cnRzc2wuY29tL2NydHUxLWNybC5jcmwwK6ApoCeGJWh0dHA6Ly9jcmwuc3RhcnRzc2wuY29t
L2NydHUxLWNybC5jcmwwgY4GCCsGAQUFBwEBBIGBMH8wOQYIKwYBBQUHMAGGLWh0dHA6Ly9v
Y3NwLnN0YXJ0c3NsLmNvbS9zdWIvY2xhc3MxL2NsaWVudC9jYTBCBggrBgEFBQcwAoY2aHR0
cDovL3d3dy5zdGFydHNzbC5jb20vY2VydHMvc3ViLmNsYXNzMS5jbGllbnQuY2EuY3J0MCMG
A1UdEgQcMBqGGGh0dHA6Ly93d3cuc3RhcnRzc2wuY29tLzANBgkqhkiG9w0BAQUFAAOCAQEA
n+1siaVAwT+f6HNr6rws73QegfthCYrLPy3Ep7nEqM5NCWLNfRh+lhmF8TsvCyPqnIzRMcPZ
zFTJ3OverwgP/+tW5X2TtRRtl9gZRfo1uKCB4faRtAHMm1gogjm/SmzuHtH7dFd+dA8+pRbW
inpAd3+jjw1zmMoBfq4PoQMK8W8UIRgCUFWrjvBgvNxNrFHw/+wVyirC6Bqu4IWkR3ccrWva
VC2MJ3zBKf5rcELYFGubVr1qt4Fc2BS2AI2wD+F/YXgxqzzgjj9I8MYj56qpdEcPT89XHZxO
Dg4zl1OLjKDeIa5VIcKCDsqvbV/unbrvLocpNY6vq5pxoS46D//JGjCCBpYwggV+oAMCAQIC
AwG+zjANBgkqhkiG9w0BAQUFADCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29t
IEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxODA2
BgNVBAMTL1N0YXJ0Q29tIENsYXNzIDEgUHJpbWFyeSBJbnRlcm1lZGlhdGUgQ2xpZW50IENB
MB4XDTEwMTAyMjA3MDY1NFoXDTExMTAyMzA0NDIxNFowgY8xIDAeBgNVBA0TFzI3OTc2NS1v
SWFKMmc1VmxZTjJCMTB2MR4wHAYDVQQKExVQZXJzb25hIE5vdCBWYWxpZGF0ZWQxKTAnBgNV
BAMTIFN0YXJ0Q29tIEZyZWUgQ2VydGlmaWNhdGUgTWVtYmVyMSAwHgYJKoZIhvcNAQkBFhFi
YXJ6b2dAdGVsZWNvbS5ieTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKjbriz7
64cgE3Gl6mD5sd2Zw7hbrebLQTv1kXBl4JWJNUQ6+S1HmONByzThxFUZkJWdJAJpvCt1t6cC
AkGfdywzBLIuSFFqXdms8EGiL85AN310ZPmlVGFmxQJvK3B22xM2JgxH3oLPqKHK4iuQEBKT
LOx420cB4/p29hZNWomkT78U4QCCyqowFxnK9itakbFleyn+G6d+hIQMzk3/Jms27DlxKmoJ
CH58BQ6hHdGydl4STJ8AbUlzp7pUkbmBX0P5D9yEHe72WYpopHMfc9iyQeJQ6/+Nti4fxuHD
LXqhymYQFVAgxj9BOrsxI5BUVJBm+ACG3FKeUKWA/xUMYHcCAwEAAaOCAvowggL2MAkGA1Ud
EwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAdBgNV
HQ4EFgQUldFRDKr0jBhaFeLJOqyMXlGyZ0MwHwYDVR0jBBgwFoAUU3Ltkpzg2ssBXHx+ljVO
8tS4UYIwHAYDVR0RBBUwE4ERYmFyem9nQHRlbGVjb20uYnkwggFCBgNVHSAEggE5MIIBNTCC
ATEGCysGAQQBgbU3AQICMIIBIDAuBggrBgEFBQcCARYiaHR0cDovL3d3dy5zdGFydHNzbC5j
b20vcG9saWN5LnBkZjA0BggrBgEFBQcCARYoaHR0cDovL3d3dy5zdGFydHNzbC5jb20vaW50
ZXJtZWRpYXRlLnBkZjCBtwYIKwYBBQUHAgIwgaowFBYNU3RhcnRDb20gTHRkLjADAgEBGoGR
TGltaXRlZCBMaWFiaWxpdHksIHNlZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2Yg
dGhlIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUg
YXQgaHR0cDovL3d3dy5zdGFydHNzbC5jb20vcG9saWN5LnBkZjBjBgNVHR8EXDBaMCugKaAn
hiVodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9jcnR1MS1jcmwuY3JsMCugKaAnhiVodHRwOi8v
Y3JsLnN0YXJ0c3NsLmNvbS9jcnR1MS1jcmwuY3JsMIGOBggrBgEFBQcBAQSBgTB/MDkGCCsG
AQUFBzABhi1odHRwOi8vb2NzcC5zdGFydHNzbC5jb20vc3ViL2NsYXNzMS9jbGllbnQvY2Ew
QgYIKwYBBQUHMAKGNmh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL2NlcnRzL3N1Yi5jbGFzczEu
Y2xpZW50LmNhLmNydDAjBgNVHRIEHDAahhhodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS8wDQYJ
KoZIhvcNAQEFBQADggEBAJ/tbImlQME/n+hza+q8LO90HoH7YQmKyz8txKe5xKjOTQlizX0Y
fpYZhfE7Lwsj6pyM0THD2cxUydzr3q8ID//rVuV9k7UUbZfYGUX6NbiggeH2kbQBzJtYKII5
v0ps7h7R+3RXfnQPPqUW1op6QHd/o48Nc5jKAX6uD6EDCvFvFCEYAlBVq47wYLzcTaxR8P/s
FcoqwugaruCFpEd3HK1r2lQtjCd8wSn+a3BC2BRrm1a9areBXNgUtgCNsA/hf2F4Mas84I4/
SPDGI+eqqXRHD0/PVx2cTg4OM5dTi4yg3iGuVSHCgg7Kr21f7p267y6HKTWOr6uacaEuOg//
yRoxggPQMIIDzAIBATCBlDCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0
ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxODA2BgNV
BAMTL1N0YXJ0Q29tIENsYXNzIDEgUHJpbWFyeSBJbnRlcm1lZGlhdGUgQ2xpZW50IENBAgMB
vs4wCQYFKw4DAhoFAKCCAhAwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0B
CQUxDxcNMTAxMjIxMDk1ODM2WjAjBgkqhkiG9w0BCQQxFgQUDxS+v9VVzcQnPeXOcNZQhHzi
oYUwXwYJKoZIhvcNAQkPMVIwUDALBglghkgBZQMEAQIwCgYIKoZIhvcNAwcwDgYIKoZIhvcN
AwICAgCAMA0GCCqGSIb3DQMCAgFAMAcGBSsOAwIHMA0GCCqGSIb3DQMCAgEoMIGlBgkrBgEE
AYI3EAQxgZcwgZQwgYwxCzAJBgNVBAYTAklMMRYwFAYDVQQKEw1TdGFydENvbSBMdGQuMSsw
KQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWduaW5nMTgwNgYDVQQDEy9T
dGFydENvbSBDbGFzcyAxIFByaW1hcnkgSW50ZXJtZWRpYXRlIENsaWVudCBDQQIDAb7OMIGn
BgsqhkiG9w0BCRACCzGBl6CBlDCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29t
IEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxODA2
BgNVBAMTL1N0YXJ0Q29tIENsYXNzIDEgUHJpbWFyeSBJbnRlcm1lZGlhdGUgQ2xpZW50IENB
AgMBvs4wDQYJKoZIhvcNAQEBBQAEggEAiOmZH/WmErhgUKsNxFwgdipLPE4anw3Lr0wSMa9K
nikmruaDLgZ2YUmO6IxElqghPkVRxGgqX/zWwpgy1diM8XUGJeJ97ztxQhKmfJcC9hsKkFn+
wvQagDmmkmggshWbUUn6htTzFCV3v2OYqf00zxMwAE0ZUQ1ZureXNGpPHjNUOLGoAiCmQQej
Goaj934IJucpzA4voO1TzWDi+ZeT/wrBoEigt6VQ4AmTqNriyCmpEv0DKhjwojcBLd1LcfUv
VERyj83r7ug/wIzmVp0H9ps8gttZpbuXJiGjdqr1v77e5llAAuhJGSaRgoYOQQ8uQDS30FZ7
7oU3q7WdeefODQAAAAAAAA==
--------------ms040800010301040905010606--
More information about the freebsd-ports-bugs
mailing list