ports/110767: [UPDATE]java/jboss3:update to jboss3.2.8
nemo
nemoliu at gmail.com
Sun Mar 25 15:50:14 UTC 2007
The following reply was made to PR ports/110767; it has been noted by GNATS.
From: nemo <nemoliu at gmail.com>
To: bug-followup at FreeBSD.org, nemoliu at gmail.com, pav at freebsd.org
Cc:
Subject: Re: ports/110767: [UPDATE]java/jboss3:update to jboss3.2.8
Date: Sun, 25 Mar 2007 23:41:50 +0800
------=_Part_225893_17557009.1174837310764
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
I rewrite the patch .this one should be better.
such as:
change USE_RC_SUBR value to jboss3.sh;
use ant to build src;
use SUB_FILES and SUB_LIST replace use sed manaully.
I rewrite another patch in the same way.
http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/110768
------=_Part_225893_17557009.1174837310764
Content-Type: text/plain; name=patch-jboss3.txt; charset=ANSI_X3.4-1968
Content-Transfer-Encoding: base64
X-Attachment-Id: f_ezpnm5j5
Content-Disposition: attachment; filename="patch-jboss3.txt"
SW5kZXg6IE1ha2VmaWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9ob21lL25jdnMvcG9ydHMvamF2
YS9qYm9zczMvTWFrZWZpbGUsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMzAKZGlmZiAtdSAtcjEu
MzAgTWFrZWZpbGUKLS0tIE1ha2VmaWxlCTkgTWF5IDIwMDYgMDA6MTg6MDQgLTAwMDAJMS4zMAor
KysgTWFrZWZpbGUJMjUgTWFyIDIwMDcgMTM6NTU6NTcgLTAwMDAKQEAgLTIsMTEgKzIsMTEgQEAK
ICMgRGF0ZSBjcmVhdGVkOiAgICAgICAgICAgICAgICAgIDE2IEFwcmlsIDIwMDIKICMgV2hvbTog
ICAgICAgICAgICAgICAgICAgICAgICAgIEVybnN0IGRlIEhhYW4gPHpuZXJkQEZyZWVCU0Qub3Jn
PgogIwotIyAkRnJlZUJTRDogcG9ydHMvamF2YS9qYm9zczMvTWFrZWZpbGUsdiAxLjMwIDIwMDYv
MDUvMDkgMDA6MTg6MDQgZWR3aW4gRXhwICQKKyMgJEZyZWVCU0QkCiAjCiAKIFBPUlROQU1FPQkk
e0FQUF9USVRMRTpMfQotUE9SVFZFUlNJT049CTMuMi43CitQT1JUVkVSU0lPTj0JMy4yLjguU1Ax
CiBDQVRFR09SSUVTPQlqYXZhIGRldmVsCiBNQVNURVJfU0lURVM9CSR7TUFTVEVSX1NJVEVfU09V
UkNFRk9SR0V9CiBNQVNURVJfU0lURV9TVUJESVI9CSR7UE9SVE5BTUV9CkBAIC0xNSwxNCArMTUs
MTUgQEAKIE1BSU5UQUlORVI9CWpvbmNAY2hlbi5vcmcubnoKIENPTU1FTlQ9CUpCb3NzIDMueCwg
YW4gb3Blbi1zb3VyY2UgSjJFRSBhcHBsaWNhdGlvbiBzZXJ2ZXIKIAotQlVJTERfREVQRU5EUz0J
YW50OiR7UE9SVFNESVJ9L2RldmVsL2FwYWNoZS1hbnQKLQogTEFURVNUX0xJTks9CWpib3NzMwog
VVNFX0pBVkE9CXllcwogSkFWQV9WRVJTSU9OPQkxLjQKK1VTRV9BTlQ9CXllcworTUFLRV9BUkdT
PQktYnVpbGRmaWxlIGJ1aWxkL2J1aWxkLnhtbAogCi1VU0VfUkNfU1VCUj0JWUVTCitVU0VfUkNf
U1VCUj0JamJvc3MzLnNoCiBVU0VfQlpJUDI9CVlFUworU1VCX0ZJTEVTPQlwa2ctaW5zdGFsbCBw
a2ctZGVpbnN0YWxsIHBrZy1tZXNzYWdlIGRhZW1vbmN0bC4xIGRhZW1vbmN0bC5jCiAKIC5pZiAh
ZGVmaW5lZChOT1BPUlRET0NTKQogUE9SVERPQ1M9CSoKQEAgLTU3LDQ3ICs1OCw0MSBAQAogQVBQ
X0hPTUVfRklMRVM9CWJpbiBjbGllbnQgbGliIHNlcnZlcgogCiBQTElTVF9GSUxFUz0JJHtDT05U
Uk9MX1NDUklQVDpTLF4ke1BSRUZJWH0vLCx9IFwKLQkJJHtTVEFSVFVQX1NDUklQVDpTLF4ke1BS
RUZJWH0vLCx9IFwKIAkJJHtTVERPVVRfTE9HOlMsXiR7UFJFRklYfS8sLH0gXAogCQkke1NUREVS
Ul9MT0c6UyxeJHtQUkVGSVh9LywsfQogCi1QS0dNRVNTQUdFPQkke1dSS0RJUn0vcGtnLW1lc3Nh
Z2UuZm10CitQS0dNRVNTQUdFPQkke1dSS0RJUn0vcGtnLW1lc3NhZ2UKIAotLmluY2x1ZGUgPGJz
ZC5wb3J0LnByZS5taz4KK1NVQl9MSVNUPQlBUFBfSE9NRT0ke0FQUF9IT01FfSBcCisJCUFQUF9T
SE9SVE5BTUU9JHtBUFBfU0hPUlROQU1FfSBcCisJCUFQUF9USVRMRT0ke0FQUF9USVRMRX0gXAor
CQlDT05UUk9MX1NDUklQVD0ke0NPTlRST0xfU0NSSVBUfSBcCisJCUNPTlRST0xfU0NSSVBUX01B
TlBBR0VfVElUTEU9JHtDT05UUk9MX1NDUklQVF9NQU5QQUdFX1RJVExFfSBcCisJCUNPTlRST0xf
U0NSSVBUX05BTUU9JHtDT05UUk9MX1NDUklQVF9OQU1FfSBcCisJCUdST1VQPSR7R1JPVVB9IFwK
KwkJSkFWQT0ke0pBVkF9IFwKKwkJSkFWQV9DUD0ke0pBVkFfQ1B9IFwKKwkJSkFWQV9IT01FPSR7
SkFWQV9IT01FfSBcCisJCUpBVkFfTUFJTj0ke0pBVkFfTUFJTn0gXAorCQlKQVZBX09QVFM9JHtK
QVZBX09QVFN9IFwKKwkJSkFWQV9QT1JUX1ZFUlNJT049JHtKQVZBX1BPUlRfVkVSU0lPTn0gXAor
CQlKQVZBX1BPUlRfT1NfREVTQ1JJUFRJT049JHtKQVZBX1BPUlRfT1NfREVTQ1JJUFRJT059IFwK
KwkJSkFSX0ZJTEU9JHtKQVJfRklMRX0gXAorCQlMT0dfRElSPSR7TE9HX0RJUn0gXAorCQlQSURf
RklMRT0ke1BJRF9GSUxFfSBcCisJCVBLR05BTUU9JHtQS0dOQU1FfSBcCisJCVBPUlROQU1FPSR7
UE9SVE5BTUV9IFwKKwkJUE9SVFZFUlNJT049JHtQT1JUVkVSU0lPTn0gXAorCQlQUkVGSVg9JHtQ
UkVGSVh9IFwKKwkJU1RBUlRVUF9TQ1JJUFQ9JHtTVEFSVFVQX1NDUklQVH0gXAorCQlTVERFUlJf
TE9HPSR7U1RERVJSX0xPR30gXAorCQlTVERPVVRfTE9HPSR7U1RET1VUX0xPR30gXAorCQlTVE9Q
X1RJTUVPVVQ9JHtTVE9QX1RJTUVPVVR9IFwKKwkJVVNFUj0ke1VTRVJ9CiAKLWRvLWNvbmZpZ3Vy
ZToKLQlAKGNkICR7REFFTU9OQ1RMX0RJUn0gJiYgJHtDUH0gJHtEQUVNT05DVExfRklMRVN9ICR7
V1JLRElSfSkKLQlAKGNkICR7V1JLRElSfSAmJiAke1JFSU5QTEFDRV9DTUR9IFwKLQkJLWUgInN8
JSVSQ19TVUJSJSV8JHtSQ19TVUJSfXxnOyIgXAotCQktZSAic3wlJUFQUF9IT01FJSV8JHtBUFBf
SE9NRX18ZzsiIFwKLQkJLWUgInN8JSVBUFBfU0hPUlROQU1FJSV8JHtBUFBfU0hPUlROQU1FfXxn
OyIgXAotCQktZSAic3wlJUFQUF9USVRMRSUlfCR7QVBQX1RJVExFfXxnOyIgXAotCQktZSAic3wl
JUNPTlRST0xfU0NSSVBUJSV8JHtDT05UUk9MX1NDUklQVH18ZzsiIFwKLQkJLWUgInN8JSVDT05U
Uk9MX1NDUklQVF9NQU5QQUdFX1RJVExFJSV8JHtDT05UUk9MX1NDUklQVF9NQU5QQUdFX1RJVExF
fXxnOyIgXAotCQktZSAic3wlJUNPTlRST0xfU0NSSVBUX05BTUUlJXwke0NPTlRST0xfU0NSSVBU
X05BTUV9fGc7IiBcCi0JCS1lICJzfCUlR1JPVVAlJXwke0dST1VQfXxnOyIgXAotCQktZSAic3wl
JUpBVkElJXwke0pBVkF9fGc7IiBcCi0JCS1lICJzfCUlSkFWQV9DUCUlfCR7SkFWQV9DUH18Zzsi
IFwKLQkJLWUgInN8JSVKQVZBX0hPTUUlJXwke0pBVkFfSE9NRX18ZzsiIFwKLQkJLWUgInN8JSVK
QVZBX01BSU4lJXwke0pBVkFfTUFJTn18ZzsiIFwKLQkJLWUgInN8JSVKQVZBX09QVFMlJXwke0pB
VkFfT1BUU318ZzsiIFwKLQkJLWUgInN8JSVKQVZBX1BPUlRfVkVSU0lPTiUlfCR7SkFWQV9QT1JU
X1ZFUlNJT059fGc7IiBcCi0JCS1lICJzfCUlSkFWQV9QT1JUX09TX0RFU0NSSVBUSU9OJSV8JHtK
QVZBX1BPUlRfT1NfREVTQ1JJUFRJT059fGc7IiBcCi0JCS1lICJzfCUlSkFSX0ZJTEUlJXwke0pB
Ul9GSUxFfXxnOyIgXAotCQktZSAic3wlJUxPR19ESVIlJXwke0xPR19ESVJ9fGc7IiBcCi0JCS1l
ICJzfCUlUElEX0ZJTEUlJXwke1BJRF9GSUxFfXxnOyIgXAotCQktZSAic3wlJVBLR05BTUUlJXwk
e1BLR05BTUV9fGc7IiBcCi0JCS1lICJzfCUlUE9SVE5BTUUlJXwke1BPUlROQU1FfXxnOyIgXAot
CQktZSAic3wlJVBPUlRWRVJTSU9OJSV8JHtQT1JUVkVSU0lPTn18ZzsiIFwKLQkJLWUgInN8JSVQ
UkVGSVglJXwke1BSRUZJWH18ZzsiIFwKLQkJLWUgInN8JSVTVEFSVFVQX1NDUklQVCUlfCR7U1RB
UlRVUF9TQ1JJUFR9fGc7IiBcCi0JCS1lICJzfCUlU1RERVJSX0xPRyUlfCR7U1RERVJSX0xPR318
ZzsiIFwKLQkJLWUgInN8JSVTVERPVVRfTE9HJSV8JHtTVERPVVRfTE9HfXxnOyIgXAotCQktZSAi
c3wlJVNUT1BfVElNRU9VVCUlfCR7U1RPUF9USU1FT1VUfXxnOyIgXAotCQktZSAic3wlJVVTRVIl
JXwke1VTRVJ9fGc7IiAke0RBRU1PTkNUTF9GSUxFU30pCi0JQCR7Rk1UfSAtcyA4MCAke1dSS0RJ
Un0vcGtnLW1lc3NhZ2UgPiR7UEtHTUVTU0FHRX0KKy5pbmNsdWRlIDxic2QucG9ydC5wcmUubWs+
CiAKLXBvc3QtY29uZmlndXJlOgorcG9zdC1wYXRjaDoKIAlAJHtFQ0hPX01TR30gIkluc3RhbGxh
dGlvbiBzZXR0aW5nczoiCiAJQCR7RUNIT19NU0d9ICIgICBEZXN0aW5hdGlvbiBkaXJlY3Rvcnk6
ICAgICR7QVBQX0hPTUV9IgogCUAke0VDSE9fTVNHfSAiICAgQ29udHJvbCBwcm9ncmFtIGxvY2F0
aW9uOiAke0NPTlRST0xfU0NSSVBUfSIKQEAgLTExMSwyMSArMTA2LDE3IEBACiAJQCR7RUNIT19N
U0d9ICIgICBTdGFydGluZyBhZnRlciBpbnN0YWxsOiAgICR7QVVUT19TVEFSVH0iCiAJQCR7RUNI
T19NU0d9ICIgICBTdG9wIHRpbWUtb3V0OiAgICAgICAgICAgICR7U1RPUF9USU1FT1VUfSBzZWMu
IgogCi1kby1idWlsZDoKLQkoY2QgJHtXUktESVJ9ICYmICR7Q0N9ICR7Q0ZMQUdTfSAtbyAke0NP
TlRST0xfU0NSSVBUX05BTUV9IGRhZW1vbmN0bC5jKQotCShjZCAke1dSS1NSQ30vYnVpbGQgJiYg
JHtTRVRFTlZ9IEpBVkFfSE9NRT0iJHtKQVZBX0hPTUV9IiBQQVRIPSIke0pBVkFfSE9NRX0vYmlu
OiR7UEFUSH0iICR7U0h9IGJ1aWxkLnNoKQotCiBwcmUtaW5zdGFsbDoKIAlAJHtTRVRFTlZ9IFBL
R19QUkVGSVg9JHtQUkVGSVh9ICR7U0h9ICR7UEtHSU5TVEFMTH0gJHtQS0dOQU1FfSBQUkUtSU5T
VEFMTAogCiBkby1pbnN0YWxsOgorCWNkICR7V1JLRElSfSAmJiAke0NDfSAke0NGTEFHU30gLW8g
JHtDT05UUk9MX1NDUklQVF9OQU1FfSBkYWVtb25jdGwuYwogCSR7TUtESVJ9ICR7QVBQX0hPTUV9
ICYmICR7Q0hPV059ICR7VVNFUn06JHtHUk9VUH0gJHtBUFBfSE9NRX0KIAkke01LRElSfSAke0xP
R19ESVJ9ICYmICR7Q0hPV059ICR7VVNFUn06JHtHUk9VUH0gJHtMT0dfRElSfQogCShjZCAke0pC
T1NTT1VUUFVUfSAmJiAke0ZJTkR9ICR7QVBQX0hPTUVfRklMRVN9IHxcCiAJCSR7Q1BJT30gLXBk
bXUgLVIgJHtVU0VSfToke0dST1VQfSAke0FQUF9IT01FfSkKIAkke0lOU1RBTEx9IC1vICR7VVNF
Un0gLWcgJHtHUk9VUH0gLW0gMDY3NTRcCiAJCSR7V1JLRElSfS8ke0NPTlRST0xfU0NSSVBUX05B
TUV9ICR7Q09OVFJPTF9TQ1JJUFR9Ci0JJHtJTlNUQUxMX1NDUklQVH0gJHtXUktESVJ9L3N0YXJ0
dXAuc2ggJHtTVEFSVFVQX1NDUklQVH0KIAkke0lOU1RBTEx9IC1vICR7VVNFUn0gLWcgJHtHUk9V
UH0gLW0gMDY0MCAvZGV2L251bGwgJHtTVERPVVRfTE9HfQogCSR7SU5TVEFMTH0gLW8gJHtVU0VS
fSAtZyAke0dST1VQfSAtbSAwNjQwIC9kZXYvbnVsbCAke1NUREVSUl9MT0d9CiAJJHtJTlNUQUxM
fSAtbyAke1VTRVJ9IC1nICR7R1JPVVB9IC1tIDA2NDAgL2Rldi9udWxsICR7UElEX0ZJTEV9Cklu
ZGV4OiBkaXN0aW5mbwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvaG9tZS9uY3ZzL3BvcnRzL2phdmEv
amJvc3MzL2Rpc3RpbmZvLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEzCmRpZmYgLXUgLXIxLjEz
IGRpc3RpbmZvCi0tLSBkaXN0aW5mbwkyMiBKYW4gMjAwNiAxMjozOTo1NCAtMDAwMAkxLjEzCisr
KyBkaXN0aW5mbwkyNSBNYXIgMjAwNyAwODozMzoyNCAtMDAwMApAQCAtMSwzICsxLDMgQEAKLU1E
NSAoamJvc3MtMy4yLjctc3JjLnRhci5iejIpID0gMWQzZDY2ZDFkNzc5YWYwZDQ3ZWYwYmExYzE4
OWJmZmMKLVNIQTI1NiAoamJvc3MtMy4yLjctc3JjLnRhci5iejIpID0gMWRhMGRmYjU5MmU1YmFh
NGU0MWYyNzJjZTNkY2I2NWYwZjY1ZTI5MGNlZjllMDA5Zjk2NDQ1MjdiYWQ4NmM1NAotU0laRSAo
amJvc3MtMy4yLjctc3JjLnRhci5iejIpID0gNDg2ODgxMzMKK01ENSAoamJvc3MtMy4yLjguU1Ax
LXNyYy50YXIuYnoyKSA9IGEzZTJjMjQwOTQ2NWEyMjc2YWE1ODRkOTEwMDAyNmI3CitTSEEyNTYg
KGpib3NzLTMuMi44LlNQMS1zcmMudGFyLmJ6MikgPSBlZDRlNDVmYTVmNTFjZDhhMmEzNjQzZjM2
NzY1ODA3MjRiNWM2YmY2OGEzNDdiYjNhZWUxNzAyZDRkMzg0OTE0CitTSVpFIChqYm9zcy0zLjIu
OC5TUDEtc3JjLnRhci5iejIpID0gMzc5OTUyMjcKSW5kZXg6IHBrZy1kZWluc3RhbGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpSQ1MgZmlsZTogcGtnLWRlaW5zdGFsbApkaWZmIC1OIHBrZy1kZWluc3RhbGwKLS0tIHBr
Zy1kZWluc3RhbGwJMTQgSnVsIDIwMDMgMTA6MDM6MTMgLTAwMDAJMS4yCisrKyAvZGV2L251bGwJ
MSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMApAQCAtMSwzNSArMCwwIEBACi0jIS9iaW4vc2gKLSMK
LSMgVGhpcyBzY3JpcHQgZG9lcyB0aGUgZm9sbG93aW5nLgotIwotIyAqIENoZWNrcyBpZiB0aGUg
SkJvc3MgUElEIGZpbGUgZXhpc3RzLiBJZiBpdCBkb2VzLCBpdCBraWxscyB0aGUKLSMgICBKQm9z
cyBwcm9jZXNzIGFuZCByZW1vdmVzIHRoZSBQSUQgZmlsZS4KLSMKLSMgJEZyZWVCU0Q6IHBvcnRz
L2phdmEvamJvc3MzL3BrZy1kZWluc3RhbGwsdiAxLjIgMjAwMy8wNy8xNCAxMDowMzoxMyBkZXMg
RXhwICQKLSMKLQotIyBNYWtlIHN1cmUgd2UncmUgaW4gdGhlIHJpZ2h0IHN0YWdlIG9mIHRoZSBw
cm9jZXNzCi1pZiBbICIkMiIgPSAiREVJTlNUQUxMIiBdOyB0aGVuCi0KLQkjIEtpbGwgSkJvc3Mg
aWYgaXQgaXMgc3RpbGwgcnVubmluZwotCVBJRF9GSUxFPS92YXIvcnVuL2pib3NzLnBpZAotCWlm
IFsgLXMgJHtQSURfRklMRX0gXTsgdGhlbgotCQlQSUQ9YGNhdCAke1BJRF9GSUxFfWAKLQkJZWNo
byAtbiAiPj4gS2lsbGluZyBKQm9zcyBTZXJ2ZXIgcHJvY2VzcyAoJHtQSUR9KS4uLiIKLQkJL2Jp
bi9raWxsICR7UElEfSA+IC9kZXYvbnVsbCAyPiAvZGV2L251bGwKLQkJaWYgWyAkPyAtZXEgMCBd
OyB0aGVuCi0JCQllY2hvICIgWyBET05FIF0iCi0JCWVsc2UKLQkJCWVjaG8gIiBbIEZBSUxFRCBd
IgotCQlmaQotCQllY2hvIC1uICI+PiBSZW1vdmluZyBQSUQgZmlsZSAoJHtQSURfRklMRX0pLi4u
IgotCQlybSAke1BJRF9GSUxFfSA+IC9kZXYvbnVsbCAyPiAvZGV2L251bGwKLQkJaWYgWyAkPyAt
ZXEgMCBdOyB0aGVuCi0JCQllY2hvICIgWyBET05FIF0iCi0JCWVsc2UKLQkJCWVjaG8gIiBbIEZB
SUxFRCBdIgotCQlmaQotCWZpCi1maQotCi1leGl0IDAKSW5kZXg6IHBrZy1pbnN0YWxsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IHBrZy1pbnN0YWxsCmRpZmYgLU4gcGtnLWluc3RhbGwKLS0tIHBrZy1p
bnN0YWxsCTI2IEFwciAyMDAyIDIxOjU0OjE1IC0wMDAwCTEuMQorKysgL2Rldi9udWxsCTEgSmFu
IDE5NzAgMDA6MDA6MDAgLTAwMDAKQEAgLTEsNDYgKzAsMCBAQAotIyEvYmluL3NoCi0jCi0jIENo
ZWNrcyBpZiB0aGUgJ3d3dycgdXNlciBhbmQgZ3JvdXAgZXhpc3QuIElmIHRoZXkgZG9uJ3QsIHRo
ZW4KLSMgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIGNyZWF0ZSBib3RoLgotIwotIyAkRnJlZUJTRDog
cG9ydHMvamF2YS9qYm9zczMvcGtnLWluc3RhbGwsdiAxLjEgMjAwMi8wNC8yNiAyMTo1NDoxNSB6
bmVyZCBFeHAgJAotIwotCi0jIE1ha2Ugc3VyZSB3ZSdyZSBjYWxsZWQgZHVyaW5nIHRoZSAnbWFr
ZSBpbnN0YWxsJyBwcm9jZXNzCi1pZiBbICIkMiIgIT0gIlBSRS1JTlNUQUxMIiBdOyB0aGVuCi0g
ICAgZXhpdCAwCi1maQotCi0jIFNldCBzb21lIGNvbnN0YW50cwotVVNFUj13d3cKLUdST1VQPSR7
VVNFUn0KLVVJRD04MAotR0lEPSR7VUlEfQotCi0jIFNlZSBpZiB0aGUgZ3JvdXAgYWxyZWFkeSBl
eGlzdHMKLWlmICEgcHcgZ3JvdXBzaG93ICIke0dST1VQfSIgMj4vZGV2L251bGwgMT4mMjsgdGhl
bgotCi0JIyBJZiBub3QsIHRyeSB0byBjcmVhdGUgaXQKLQlpZiBwdyBncm91cGFkZCAke0dST1VQ
fSAtZyAke0dJRH07IHRoZW4KLQkJZWNobyAiQWRkZWQgZ3JvdXAgXCIke0dST1VQfVwiLiIKLQll
bHNlCi0JCWVjaG8gIkFkZGluZyBncm91cCBcIiR7R1JPVVB9XCIgZmFpbGVkLi4uIgotCQlleGl0
IDEKLQlmaQotZmkKLQotIyBTZWUgaWYgdGhlIHVzZXIgYWxyZWFkeSBleGlzdHMKLWlmICEgcHcg
dXNlcnNob3cgIiR7VVNFUn0iIDI+L2Rldi9udWxsIDE+JjI7IHRoZW4KLQotCSMgSWYgbm90LCB0
cnkgdG8gY3JlYXRlIGl0Ci0JaWYgcHcgdXNlcmFkZCAke1VTRVJ9IC11ICR7VUlEfSAtZyAke0dS
T1VQfSAtaCAtIFwKLQkJLXMgIi9zYmluL25vbG9naW4iIC1kICIvbm9uZXhpc3RlbnQiIFwKLQkJ
LWMgIldvcmxkIFdpZGUgV2ViIE93bmVyIjsgXAotCXRoZW4KLQkJZWNobyAiQWRkZWQgdXNlciBc
IiR7VVNFUn1cIi4iCi0JZWxzZQotCQllY2hvICJBZGRpbmcgdXNlciBcIiR7VVNFUn1cIiBmYWls
ZWQuLi4iCi0JCWV4aXQgMQotCWZpCi1maQotZXhpdCAwCkluZGV4OiBmaWxlcy9kYWVtb25jdGwu
MQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ClJDUyBmaWxlOiBmaWxlcy9kYWVtb25jdGwuMQpkaWZmIC1OIGZpbGVzL2Rh
ZW1vbmN0bC4xCi0tLSBmaWxlcy9kYWVtb25jdGwuMQkyMSBKdW4gMjAwNCAxNjo0Mjo1OSAtMDAw
MAkxLjEKKysrIC9kZXYvbnVsbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCkBAIC0xLDc4ICsw
LDAgQEAKLS5EZCBGZWJydWFyeSAyMSwgMjAwMgotLkR0ICUlQ09OVFJPTF9TQ1JJUFRfTUFOUEFH
RV9USVRMRSUlIDEKLS5PcyBGcmVlQlNECi0uU2ggTkFNRQotLk5tICUlQ09OVFJPTF9TQ1JJUFRf
TkFNRSUlCi0uTmQgJSVBUFBfVElUTEUlJSBzZXJ2ZXIgY29udHJvbCBpbnRlcmZhY2UKLS5TaCBT
WU5PUFNJUwotLk5tCi0uT3AgRmwgamF2YS1vcHRpb25zCi0uQXIge3N0YXJ0fHJlc3RhcnR8c3Rv
cH0KLS5TaCBERVNDUklQVElPTgotVGhlCi0uTm0KLXByb2dyYW0gcHJvdmlkZXMgYW4gcmVzdHJp
Y3RlZCBpbnRlcmZhY2UgdG8gdGhlICUlQVBQX1RJVExFJSUKLWFwcGxpY2F0aW9uIHNlcnZlci4g
VGhlCi0uTm0KLXByb2dyYW0gaXMgb25seSBhY2Nlc3NpYmxlIHRvIHVzZXJzIGluIHRoZSAnd3d3
JyBncm91cCwgYW5kIHdpbGwKLW9ubHkgaW52b2tlIHRoZSAlJUpBVkFfUE9SVF9PU19ERVNDUklQ
VElPTiUlICUlSkFWQV9QT1JUX1ZFUlNJT04lJSBKVk0uCi0uUHAKLUFueSBKYXZhIG9wdGlvbnMg
bGlzdGVkIGFyZSBoYW5kZWQgb2ZmIGRpcmVjdGx5IHRvIHRoZSBKVk0uIEFueQotY2xhc3NwYXRo
IG9wdGlvbnMgd2lsbCBiZSBpZ25vcmVkLgotLlBwCi1UaGUgcHJvZ3JhbSBleHBlY3RzIGV4YWN0
bHkgb25lIG9mIHRoZSBmb2xsb3dpbmcgdGVybWluYXRpbmcgY29tbWFuZHM6Ci0uQmwgLXRhZyAt
d2lkdGggaW5kZW50Ci0uSXQgQXIgc3RhcnQKLVN0YXJ0ICUlQVBQX1RJVExFJSUsIGlmIGl0IGlz
IG5vdCBhbHJlYWR5IHJ1bm5pbmcuCi0uSXQgQXIgcmVzdGFydAotUmVzdGFydCAlJUFQUF9USVRM
RSUlLiBJZiBpdCBpcyBhbHJlYWR5IHJ1bm5pbmcsIHRoZW4gaXQgd2lsbCBiZSBzdG9wcGVkIGFu
ZAotdGhlbiBzdGFydGVkIHJpZ2h0IGFmdGVyIHRoYXQuIE90aGVyd2lzZSBpdCB3aWxsIGp1c3Qg
YmUgc3RhcnRlZCB1cC4KLS5JdCBBciBzdG9wCi1TdG9wICUlQVBQX1RJVExFJSUsIGlmIGl0IGlz
IGFjdHVhbGx5IHJ1bm5pbmcuCi0uRWwKLS5TaCBFUlJPUlMKLVRoZSBmb2xsb3dpbmcgZXJyb3Ig
Y29uZGl0aW9ucyBhcmUgZGV0ZWN0ZWQuIFRoZXkgd2lsbCBiZSBjaGVja2VkIGluIHRoZQotc3Bl
Y2lmaWVkIG9yZGVyLiBJbiBlYWNoIGNhc2UgYW4gZXJyb3IgbWVzc2FnZSBpcyBwcmludGVkIHdp
dGggdGhlIG5hbWUgb2YgdGhlCi1jb250cm9sIHByb2dyYW0gcHJlcGVuZGVkLgotLlBwCi1JZiBu
byBhcmd1bWVudCBpcyBwYXNzZWQsIHRoZW4gYSBzaW1wbGUgaGVscCBtZXNzYWdlIGlzIHByaW50
ZWQgYW5kIHRoZQotcHJvZ3JhbSBleGlzdHMgd2l0aCBlcnJvciBjb2RlIDAuCi0uUHAKLUlmIGF0
IGxlYXN0IG9uZSBhcmd1bWVudCBpcyBwYXNzZWQsIGJ1dCBpdCBpcyBkaWZmZXJlbnQgZnJvbQot
LkFyIHN0YXJ0ICwKLS5BciByZXN0YXJ0Ci1vcgotLkFyIHN0b3AKLXRoZW4gdGhlIGhlbHAgbWVz
c2FnZSBpcyBwcmludGVkIGFzIHdlbGwsIGFuZCB0aGUgcHJvZ3JhbSBleGl0cyB3aXRoIGVycm9y
Ci1jb2RlIDEuCi0uUHAKLVRoZSBmb2xsb3dpbmcgZXJyb3JzIGNvbmRpdGlvbnMgYXJlIGRlZmlu
ZWQ6Ci0uQmwgLXRhZyAtd2lkdGggaW5kZW50Ci0uSXQgRW0gSWxsZWdhbCBwcm9ncmFtIGFyZ3Vt
ZW50IChlcnJvciBjb2RlIDEpCi0uSXQgRW0gUElEIGZpbGUgbm90IGZvdW5kIChlcnJvciBjb2Rl
IDIpCi0uSXQgRW0gUElEIGZpbGUgdG9vIGxhcmdlIChlcnJvciBjb2RlIDMpCi0uSXQgRW0gUElE
IGZpbGUgY29udGFpbnMgaWxsZWdhbCBjaGFyYWN0ZXIgKGVycm9yIGNvZGUgNCkKLS5JdCBFbSBL
aWxsIG9mIHByb2Nlc3MgZmFpbGVkIChlcnJvciBjb2RlIDUpCi0uSXQgRW0gJSVBUFBfVElUTEUl
JSBpcyBhbHJlYWR5IHJ1bm5pbmcgKGVycm9yIGNvZGUgNikKLS5JdCBFbSAlJUFQUF9USVRMRSUl
IGlzIG5vdCBydW5uaW5nIChlcnJvciBjb2RlIDcpCi0uSXQgRW0gVW5hYmxlIHRvIGNoZGlyIHRv
IHRoZSAlJUFQUF9USVRMRSUlIGhvbWUgZGlyZWN0b3J5IChlcnJvciBjb2RlIDgpCi0uSXQgRW0g
VW5hYmxlIHRvIG9wZW4gdGhlIHN0ZG91dCBsb2cgZmlsZSAoZXJyb3IgY29kZSA5KQotLkl0IEVt
IFVuYWJsZSB0byBvcGVuIHRoZSBzdGRlcnIgbG9nIGZpbGUgKGVycm9yIGNvZGUgMTApCi0uSXQg
RW0gVW5hYmxlIHRvIHN0YXJ0ICUlQVBQX1RJVExFJSUgKGVycm9yIGNvZGUgMTEpCi0uRWwKLS5T
aCBGSUxFUwotLkJsIC10YWcgLXdpZHRoIC1pbmRlbnQKLS5JdCBQYSAlJVBJRF9GSUxFJSUKLVRo
ZSAlJUFQUF9USVRMRSUlIFBJRCBmaWxlIHRoYXQgaXMgdXNlZCB0byBzdG9yZSB0aGUgcHJvY2Vz
cyBJRCBvZiB0aGUKLWN1cnJlbnRseSBydW5uaW5nIHByb2Nlc3MgaW4uIEl0IGlzIGVtcHRpZWQg
YXMgc29vbiBhcyB0aGUgc2VydmVyIGlzIHN0b3BwZWQKLWFuZCBmaWxsZWQgd2l0aCB0aGUgcHJv
Y2VzcyBJRCB3aGVuIGl0IGlzIHN0YXJ0ZWQuIEl0IHNob3VsZCBuZXZlciBiZSB3cml0YWJsZQot
Zm9yIGFueW9uZSBidXQKLS5FbSB3d3cgLAotLkl0IFBhICUlU1RBUlRVUF9TQ1JJUFQlJQotQSBz
Y3JpcHQgdGhhdCBzdGFydHMgdGhlCi0uTm0KLXByb2dyYW0uIEl0IGlzIHVzZWQgdG8gc3RhcnQg
JSVBUFBfVElUTEUlJSBhdCBzdGFydHVwIHRpbWUuCi0uRWwKLS5TaCBBVVRIT1JTCi0uQW4gRXJu
c3QgZGUgSGFhbiBBcSB6bmVyZEBGcmVlQlNELm9yZwotLkFuIEpvbmF0aGFuIENoZW4gQXEgam9u
Y0BjaGVuLm9yZy5uegpJbmRleDogZmlsZXMvZGFlbW9uY3RsLjEuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg
ZmlsZTogZmlsZXMvZGFlbW9uY3RsLjEuaW4KZGlmZiAtTiBmaWxlcy9kYWVtb25jdGwuMS5pbgot
LS0gL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIGZpbGVzL2RhZW1vbmN0
bC4xLmluCTIxIEp1biAyMDA0IDE2OjQyOjU5IC0wMDAwCkBAIC0wLDAgKzEsNzggQEAKKy5EZCBG
ZWJydWFyeSAyMSwgMjAwMgorLkR0ICUlQ09OVFJPTF9TQ1JJUFRfTUFOUEFHRV9USVRMRSUlIDEK
Ky5PcyBGcmVlQlNECisuU2ggTkFNRQorLk5tICUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlCisuTmQg
JSVBUFBfVElUTEUlJSBzZXJ2ZXIgY29udHJvbCBpbnRlcmZhY2UKKy5TaCBTWU5PUFNJUworLk5t
CisuT3AgRmwgamF2YS1vcHRpb25zCisuQXIge3N0YXJ0fHJlc3RhcnR8c3RvcH0KKy5TaCBERVND
UklQVElPTgorVGhlCisuTm0KK3Byb2dyYW0gcHJvdmlkZXMgYW4gcmVzdHJpY3RlZCBpbnRlcmZh
Y2UgdG8gdGhlICUlQVBQX1RJVExFJSUKK2FwcGxpY2F0aW9uIHNlcnZlci4gVGhlCisuTm0KK3By
b2dyYW0gaXMgb25seSBhY2Nlc3NpYmxlIHRvIHVzZXJzIGluIHRoZSAnd3d3JyBncm91cCwgYW5k
IHdpbGwKK29ubHkgaW52b2tlIHRoZSAlJUpBVkFfUE9SVF9PU19ERVNDUklQVElPTiUlICUlSkFW
QV9QT1JUX1ZFUlNJT04lJSBKVk0uCisuUHAKK0FueSBKYXZhIG9wdGlvbnMgbGlzdGVkIGFyZSBo
YW5kZWQgb2ZmIGRpcmVjdGx5IHRvIHRoZSBKVk0uIEFueQorY2xhc3NwYXRoIG9wdGlvbnMgd2ls
bCBiZSBpZ25vcmVkLgorLlBwCitUaGUgcHJvZ3JhbSBleHBlY3RzIGV4YWN0bHkgb25lIG9mIHRo
ZSBmb2xsb3dpbmcgdGVybWluYXRpbmcgY29tbWFuZHM6CisuQmwgLXRhZyAtd2lkdGggaW5kZW50
CisuSXQgQXIgc3RhcnQKK1N0YXJ0ICUlQVBQX1RJVExFJSUsIGlmIGl0IGlzIG5vdCBhbHJlYWR5
IHJ1bm5pbmcuCisuSXQgQXIgcmVzdGFydAorUmVzdGFydCAlJUFQUF9USVRMRSUlLiBJZiBpdCBp
cyBhbHJlYWR5IHJ1bm5pbmcsIHRoZW4gaXQgd2lsbCBiZSBzdG9wcGVkIGFuZAordGhlbiBzdGFy
dGVkIHJpZ2h0IGFmdGVyIHRoYXQuIE90aGVyd2lzZSBpdCB3aWxsIGp1c3QgYmUgc3RhcnRlZCB1
cC4KKy5JdCBBciBzdG9wCitTdG9wICUlQVBQX1RJVExFJSUsIGlmIGl0IGlzIGFjdHVhbGx5IHJ1
bm5pbmcuCisuRWwKKy5TaCBFUlJPUlMKK1RoZSBmb2xsb3dpbmcgZXJyb3IgY29uZGl0aW9ucyBh
cmUgZGV0ZWN0ZWQuIFRoZXkgd2lsbCBiZSBjaGVja2VkIGluIHRoZQorc3BlY2lmaWVkIG9yZGVy
LiBJbiBlYWNoIGNhc2UgYW4gZXJyb3IgbWVzc2FnZSBpcyBwcmludGVkIHdpdGggdGhlIG5hbWUg
b2YgdGhlCitjb250cm9sIHByb2dyYW0gcHJlcGVuZGVkLgorLlBwCitJZiBubyBhcmd1bWVudCBp
cyBwYXNzZWQsIHRoZW4gYSBzaW1wbGUgaGVscCBtZXNzYWdlIGlzIHByaW50ZWQgYW5kIHRoZQor
cHJvZ3JhbSBleGlzdHMgd2l0aCBlcnJvciBjb2RlIDAuCisuUHAKK0lmIGF0IGxlYXN0IG9uZSBh
cmd1bWVudCBpcyBwYXNzZWQsIGJ1dCBpdCBpcyBkaWZmZXJlbnQgZnJvbQorLkFyIHN0YXJ0ICwK
Ky5BciByZXN0YXJ0CitvcgorLkFyIHN0b3AKK3RoZW4gdGhlIGhlbHAgbWVzc2FnZSBpcyBwcmlu
dGVkIGFzIHdlbGwsIGFuZCB0aGUgcHJvZ3JhbSBleGl0cyB3aXRoIGVycm9yCitjb2RlIDEuCisu
UHAKK1RoZSBmb2xsb3dpbmcgZXJyb3JzIGNvbmRpdGlvbnMgYXJlIGRlZmluZWQ6CisuQmwgLXRh
ZyAtd2lkdGggaW5kZW50CisuSXQgRW0gSWxsZWdhbCBwcm9ncmFtIGFyZ3VtZW50IChlcnJvciBj
b2RlIDEpCisuSXQgRW0gUElEIGZpbGUgbm90IGZvdW5kIChlcnJvciBjb2RlIDIpCisuSXQgRW0g
UElEIGZpbGUgdG9vIGxhcmdlIChlcnJvciBjb2RlIDMpCisuSXQgRW0gUElEIGZpbGUgY29udGFp
bnMgaWxsZWdhbCBjaGFyYWN0ZXIgKGVycm9yIGNvZGUgNCkKKy5JdCBFbSBLaWxsIG9mIHByb2Nl
c3MgZmFpbGVkIChlcnJvciBjb2RlIDUpCisuSXQgRW0gJSVBUFBfVElUTEUlJSBpcyBhbHJlYWR5
IHJ1bm5pbmcgKGVycm9yIGNvZGUgNikKKy5JdCBFbSAlJUFQUF9USVRMRSUlIGlzIG5vdCBydW5u
aW5nIChlcnJvciBjb2RlIDcpCisuSXQgRW0gVW5hYmxlIHRvIGNoZGlyIHRvIHRoZSAlJUFQUF9U
SVRMRSUlIGhvbWUgZGlyZWN0b3J5IChlcnJvciBjb2RlIDgpCisuSXQgRW0gVW5hYmxlIHRvIG9w
ZW4gdGhlIHN0ZG91dCBsb2cgZmlsZSAoZXJyb3IgY29kZSA5KQorLkl0IEVtIFVuYWJsZSB0byBv
cGVuIHRoZSBzdGRlcnIgbG9nIGZpbGUgKGVycm9yIGNvZGUgMTApCisuSXQgRW0gVW5hYmxlIHRv
IHN0YXJ0ICUlQVBQX1RJVExFJSUgKGVycm9yIGNvZGUgMTEpCisuRWwKKy5TaCBGSUxFUworLkJs
IC10YWcgLXdpZHRoIC1pbmRlbnQKKy5JdCBQYSAlJVBJRF9GSUxFJSUKK1RoZSAlJUFQUF9USVRM
RSUlIFBJRCBmaWxlIHRoYXQgaXMgdXNlZCB0byBzdG9yZSB0aGUgcHJvY2VzcyBJRCBvZiB0aGUK
K2N1cnJlbnRseSBydW5uaW5nIHByb2Nlc3MgaW4uIEl0IGlzIGVtcHRpZWQgYXMgc29vbiBhcyB0
aGUgc2VydmVyIGlzIHN0b3BwZWQKK2FuZCBmaWxsZWQgd2l0aCB0aGUgcHJvY2VzcyBJRCB3aGVu
IGl0IGlzIHN0YXJ0ZWQuIEl0IHNob3VsZCBuZXZlciBiZSB3cml0YWJsZQorZm9yIGFueW9uZSBi
dXQKKy5FbSB3d3cgLAorLkl0IFBhICUlU1RBUlRVUF9TQ1JJUFQlJQorQSBzY3JpcHQgdGhhdCBz
dGFydHMgdGhlCisuTm0KK3Byb2dyYW0uIEl0IGlzIHVzZWQgdG8gc3RhcnQgJSVBUFBfVElUTEUl
JSBhdCBzdGFydHVwIHRpbWUuCisuRWwKKy5TaCBBVVRIT1JTCisuQW4gRXJuc3QgZGUgSGFhbiBB
cSB6bmVyZEBGcmVlQlNELm9yZworLkFuIEpvbmF0aGFuIENoZW4gQXEgam9uY0BjaGVuLm9yZy5u
egpJbmRleDogZmlsZXMvZGFlbW9uY3RsLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogZmlsZXMvZGFl
bW9uY3RsLmMKZGlmZiAtTiBmaWxlcy9kYWVtb25jdGwuYwotLS0gZmlsZXMvZGFlbW9uY3RsLmMJ
MTMgSmFuIDIwMDUgMDE6NTU6MTMgLTAwMDAJMS4yCisrKyAvZGV2L251bGwJMSBKYW4gMTk3MCAw
MDowMDowMCAtMDAwMApAQCAtMSw1NTcgKzAsMCBAQAotLyoKLSAqIC0qLSBtb2RlOiBGdW5kYW1l
bnRhbDsgdGFiLXdpZHRoOiA0OyAtKi0KLSAqIGV4OnRzPTQKLSAqCi0gKiBEYWVtb24gY29udHJv
bCBwcm9ncmFtLCB3aXRoIEphdmEgU3RhcnR1cCBvcHRpb25zLgotICoKLSAqCU9yaWdpbmFsIGJ5
IEVybnN0IGRlIEhhYW4gPHpuZXJkQGZyZWVic2Qub3JnPgotICoJd3d3L2pha2FydGEtdG9tY2F0
NC9maWxlcy9kYWVtb25jdGwuYwotICoKLSAqICRGcmVlQlNEOiBwb3J0cy9qYXZhL2pib3NzMy9m
aWxlcy9kYWVtb25jdGwuYyx2IDEuMiAyMDA1LzAxLzEzIDAxOjU1OjEzIGhxIEV4cCAkCi0gKi8K
LQotI2luY2x1ZGUgPGFzc2VydC5oPgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8c2ln
bmFsLmg+Ci0jaW5jbHVkZSA8c3RkYXJnLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRl
IDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxzeXNsb2cuaD4KLSNp
bmNsdWRlIDx1bmlzdGQuaD4KLSNpbmNsdWRlIDxzeXMvZXJybm8uaD4KLSNpbmNsdWRlIDxzeXMv
c3RhdC5oPgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHN5cy91aW8uaD4KLQot
I2RlZmluZQlUUlVFCTEKLSNkZWZpbmUJRkFMU0UJMAotCi0vKiBUaGUgaW50ZXJ2YWwgaW4gc2Vj
b25kcyBiZXR3ZWVuIHRoZSBjaGVja3MgdG8gbWFrZSBzdXJlIHRoZSBwcm9jZXNzCi0gICBkaWVk
IGFmdGVyIGEga2lsbCAqLwotI2RlZmluZSBTVE9QX1RJTUVfSU5URVJWQUwJCTEKLQotI2RlZmlu
ZSBFUlJfSUxMRUdBTF9BUkdVTUVOVAkJCQkxCi0jZGVmaW5lIEVSUl9QSURfRklMRV9OT1RfRk9V
TkQJCQkJMgotI2RlZmluZSBFUlJfS0lMTF9GQUlMRUQJCQkJCQk1Ci0jZGVmaW5lIEVSUl9BTFJF
QURZX1JVTk5JTkcJCQkJCTYKLSNkZWZpbmUgRVJSX05PVF9SVU5OSU5HCQkJCQkJNwotI2RlZmlu
ZSBFUlJfQ0hESVJfVE9fQVBQX0hPTUUJCQkJOAotI2RlZmluZSBFUlJfQUNDRVNTX0pBUl9GSUxF
CQkJCQkxNwotI2RlZmluZSBFUlJfU1RET1VUX0xPR0ZJTEVfT1BFTgkJCQk5Ci0jZGVmaW5lIEVS
Ul9TVERFUlJfTE9HRklMRV9PUEVOCQkJCTEwCi0jZGVmaW5lIEVSUl9GT1JLX0ZBSUxFRAkJCQkJ
CTExCi0jZGVmaW5lIEVSUl9TVEFUX0pBVkFfSE9NRQkJCQkJMTIKLSNkZWZpbmUgRVJSX0pBVkFf
SE9NRV9OT1RfRElSCQkJCTEzCi0jZGVmaW5lIEVSUl9TVEFUX0pBVkFfQ01ECQkJCQkxNAotI2Rl
ZmluZSBFUlJfSkFWQV9DTURfTk9UX0ZJTEUJCQkJMTUKLSNkZWZpbmUgRVJSX0pBVkFfQ01EX05P
VF9FWEVDVVRBQkxFCQkJMTYKLQotLyoKLQlGdW5jdGlvbiBkZWNsYXJhdGlvbnMuCi0gKi8KLXN0
YXRpYyB2b2lkIHByaW50VXNhZ2UgKHZvaWQpOwotc3RhdGljIGludCByZWFkUElEICh2b2lkKTsK
LXN0YXRpYyB2b2lkIHdyaXRlUElEIChpbnQgcGlkKTsKLXN0YXRpYyB2b2lkIGNsZWFyUElEICh2
b2lkKTsKLXN0YXRpYyB2b2lkIHN0YXJ0IChpbnQgamF2YU9wdCwgY2hhciAqIGphdmFBcmdzIFtd
LCBpbnQgamJvc3NPcHQsIGNoYXIgKiBqYm9zc0FyZ3MgW10pOwotc3RhdGljIHZvaWQgc3RvcCAo
dm9pZCk7Ci1zdGF0aWMgdm9pZCByZXN0YXJ0IChpbnQgamF2YU9wdCwgY2hhciAqIGphdmFBcmdz
IFtdLCBpbnQgamJvc3NPcHQsIGNoYXIgKiBqYm9zc0FyZ3MgW10pOwotc3RhdGljIHZvaWQgbG9n
T3V0cHV0IChjaGFyICopOwotCi0vKgotCUdsb2JhbHMKLSAqLwotc3RhdGljIGludCBpc1F1aWV0
ID0gRkFMU0U7Ci1zdGF0aWMgY2hhciAqIG9wdFF1aWV0ID0gIi1xIiwJCQkvKiBxdWlldCBvcHRp
b24gKi8KLQkJCSogb3B0Q29uZmlnID0gIi1jb25maWciOwkvKiBqYm9zcyBjb25maWd1cmF0aW9u
IG9wdGlvbiAqLwotCi0vKioKLSAqIE1haW4gZnVuY3Rpb24uIFRoaXMgZnVuY3Rpb24gaXMgY2Fs
bGVkIHdoZW4gdGhpcyBwcm9ncmFtIGlzIGV4ZWN1dGVkLgotICoKLSAqIEBwYXJhbSBhcmdjCi0g
KiAgICB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBwbHVzIG9uZSwgc28gYWx3YXlzIGdyZWF0ZXIg
dGhhbiAwLgotICoKLSAqIEBwYXJhbSBhcmd2Ci0gKiAgICB0aGUgYXJndW1lbnRzIGluIGFuIGFy
cmF5IG9mIGNoYXJhY3RlciBwb2ludGVycywgd2hlcmUgdGhlIGxhc3QgYXJndW1lbnQKLSAqICAg
IGVsZW1lbnQgaXMgZm9sbG93ZWQgYnkgYSBOVUxMIGVsZW1lbnQuCi0gKi8KLWludAotbWFpbiAo
Ci0gaW50IGFyZ2MsCi0gY2hhciAqYXJndiBbXSkKLXsKLQkvKiBEZWNsYXJlIHZhcmlhYmxlcywg
bGlrZSBhbGwgb3RoZXIgZ29vZCBBTlNJIEMgcHJvZ3JhbXMgZG8gOikgKi8KLQlpbnQgaSwgamF2
YU9wdCwgamJvc3NPcHQ7Ci0JY2hhciAqYXJndW1lbnQsICoqamF2YUFyZ3MsICoqamJvc3NBcmdz
OwotCi0JLyogUGFyc2UgdGhlIGFyZ3VtZW50cyAqLwotCWlmIChhcmdjIDwgMikKLQl7Ci0JCXBy
aW50VXNhZ2UgKCk7Ci0JCXJldHVybiAwOwotCX0KLQotCS8qIFhYWDogRml4IGZvciBzZXR0aW5n
IHVwIHRoZSBlbnZpcm9ubWVudCBmb3IgdGhlIGphdmEgd3JhcHBlciBzY3JpcHQgKi8KLQlzZXR1
aWQgKGdldGV1aWQgKCkpOwotCXNldGdpZCAoZ2V0ZWdpZCAoKSk7Ci0KLQkvKgotCQlCdWlsZCB1
cCBqYXZhIGFuZCBqYm9zcyBvcHRpb24gYmxvY2tzLgotCSAqLwotCWphdmFPcHQgPSBqYm9zc09w
dCA9IDA7Ci0JZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykKLQl7Ci0JCWlmIChzdHJjbXAgKGFy
Z3YgW2ldLCBvcHRRdWlldCkgPT0gMCkKLQkJewotCQkJaXNRdWlldCA9IFRSVUU7Ci0KLQkJfSBl
bHNlIGlmIChzdHJjbXAgKGFyZ3YgW2ldLCBvcHRDb25maWcpID09IDApCi0JCXsKLQkJCWpib3Nz
T3B0ICs9IDI7Ci0JCQlpZiAoKytpID49IGFyZ2MpCi0JCQl7Ci0JCQkJcHJpbnRVc2FnZSAoKTsK
LQkJCQlyZXR1cm4gRVJSX0lMTEVHQUxfQVJHVU1FTlQ7Ci0JCQl9Ci0KLQkJfSBlbHNlIGlmICgq
YXJndiBbaV0gPT0gJy0nKQotCQl7Ci0JCQlqYXZhT3B0Kys7Ci0JCX0KLQl9Ci0JaWYgKGphdmFP
cHQgPT0gMCkKLQkJamF2YUFyZ3MgPSBOVUxMOwotCWVsc2UKLQl7Ci0JCWludCBqID0gMDsKLQkJ
amF2YUFyZ3MgPSBtYWxsb2MgKHNpemVvZiAoY2hhciAqKSAqIGphdmFPcHQpOwotCQlmb3IgKGkg
PSAwOyBpIDwgYXJnYzsgaSsrKQotCQl7Ci0JCQlpZiAoc3RyY21wIChhcmd2IFtpXSwgb3B0UXVp
ZXQpICYmCi0JCQkJc3RyY21wIChhcmd2IFtpXSwgb3B0Q29uZmlnKSAmJgotCQkJCSphcmd2IFtp
XSA9PSAnLScpCi0JCQl7Ci0JCQkJamF2YUFyZ3MgW2orK10gPSBhcmd2IFtpXTsKLQkJCX0KLQkJ
fQotCX0KLQlpZiAoamJvc3NPcHQgPT0gMCkKLQkJamJvc3NBcmdzID0gTlVMTDsKLQllbHNlCi0J
ewotCQlpbnQgaiA9IDA7Ci0JCWpib3NzQXJncyA9IG1hbGxvYyAoc2l6ZW9mIChjaGFyICopICog
amJvc3NPcHQpOwotCQlmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKQotCQl7Ci0JCQlpZiAoc3Ry
Y21wIChhcmd2IFtpXSwgb3B0Q29uZmlnKSA9PSAwKQotCQkJewotCQkJCWpib3NzQXJncyBbaisr
XSA9ICItYyI7Ci0JCQkJamJvc3NBcmdzIFtqKytdID0gYXJndiBbKytpXTsKLQkJCX0KLQkJfQot
CX0KLQotCS8qCi0JCURlY2lkZSBvbiBqdXN0IHdoYXQgdG8gY2FsbC4KLQkgKi8KLQlhcmd1bWVu
dCA9IGFyZ3YgW2FyZ2MgLSAxXTsKLQlpZiAoc3RyY21wICgic3RhcnQiLCBhcmd1bWVudCkgPT0g
MCkKLQl7Ci0JCXN0YXJ0IChqYXZhT3B0LCBqYXZhQXJncywgamJvc3NPcHQsIGpib3NzQXJncyk7
Ci0KLQl9IGVsc2UgaWYgKHN0cmNtcCAoInN0b3AiLCBhcmd1bWVudCkgPT0gMCkKLQl7Ci0JCXN0
b3AgKCk7Ci0KLQl9IGVsc2UgaWYgKHN0cmNtcCAoInJlc3RhcnQiLCBhcmd1bWVudCkgPT0gMCkK
LQl7Ci0JCXJlc3RhcnQgKGphdmFPcHQsIGphdmFBcmdzLCBqYm9zc09wdCwgamJvc3NBcmdzKTsK
LQotCX0gZWxzZSB7Ci0JCWZwcmludGYgKHN0ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUl
OiBJbGxlZ2FsIGFyZ3VtZW50IFwiJXNcIi5cbiIsIGFyZ3VtZW50KTsKLQkJcHJpbnRVc2FnZSAo
KTsKLQkJZXhpdCAoRVJSX0lMTEVHQUxfQVJHVU1FTlQpOwotCX0KLQotCXJldHVybiBFWElUX1NV
Q0NFU1M7Ci19Ci0KLS8qKgotICogUHJpbnRzIHVzYWdlIGluZm9ybWF0aW9uIHRvIHN0ZG91dC4K
LSAqLwotc3RhdGljIHZvaWQKLXByaW50VXNhZ2UgKHZvaWQpCi17Ci0JcHJpbnRmICgiVXNhZ2U6
ICUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlIFtqYXZhLW9wdGlvbnNdIFstY29uZmlnIGpib3NzY29u
ZmlnXSB7c3RhcnR8c3RvcHxyZXN0YXJ0fVxuIik7Ci19Ci0KLS8qKgotICogUmVhZHMgYSBQSUQg
ZnJvbSB0aGUgUElEIGZpbGUuCi0gKgotICogQHJldHVybgotICogICAgdGhlIFBJRCwgb3IgLTEg
aWYgdGhlIGZpbGUgd2FzIGVtcHR5LgotICovCi1zdGF0aWMgaW50Ci1yZWFkUElEICh2b2lkKQot
ewotCUZJTEUgKiBmaWxlOwotCWludCBwaWQ7Ci0KLQlsb2dPdXRwdXQgKCI+PiBSZWFkaW5nIFBJ
RCBmaWxlICglJVBJRF9GSUxFJSUpLi4uIik7Ci0JZmlsZSA9IGZvcGVuICgiJSVQSURfRklMRSUl
IiwgInIiKTsKLQlpZiAoIWZpbGUpCi0JewotCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7
Ci0JCXBlcnJvciAoIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiBVbmFibGUgdG8gb3BlbiAlJVBJ
RF9GSUxFJSUgZm9yIHJlYWRpbmc6ICIpOwotCQlleGl0IChFUlJfUElEX0ZJTEVfTk9UX0ZPVU5E
KTsKLQl9Ci0JaWYgKGZzY2FuZiAoZmlsZSwgIiVkIiwgJnBpZCkgPCAxKQotCQlwaWQgPSAtMTsK
LQlmY2xvc2UgKGZpbGUpOwotCi0JbG9nT3V0cHV0ICgiIFsgRE9ORSBdXG4iKTsKLQlyZXR1cm4g
cGlkOwotfQotCi0vKioKLSAqIFdyaXRlcyBhIHByb2Nlc3MgSUQgdG8gdGhlIHNwZWNpZmllZCBm
aWxlLiBUaGUgZmlsZSBpcyBpZGVudGlmaWVkIGJ5IGEgZmlsZQotICogaGFuZGxlLgotICoKLSAq
IEBwYXJhbSBwaWQKLSAqICAgIHRoZSBQSUQgdG8gc3RvcmUsIGFsd2F5cyBncmVhdGVyIHRoYW4g
MC4KLSAqLwotc3RhdGljIHZvaWQKLXdyaXRlUElEICgKLSBpbnQgcGlkKQotewotCUZJTEUgKiBm
aWxlOwotCi0JbG9nT3V0cHV0ICgiPj4gV3JpdGluZyBQSUQgZmlsZS4uLiIpOwotCWZpbGUgPSBm
b3BlbiAoIiUlUElEX0ZJTEUlJSIsICJ3Iik7Ci0JaWYgKCFmaWxlKQotCXsKLQkJbG9nT3V0cHV0
ICgiIFsgRkFJTEVEIF1cbiIpOwotCQlwZXJyb3IgKCIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTog
VW5hYmxlIHRvIG9wZW4gJSVQSURfRklMRSUlIGZvciB3cml0aW5nOiAiKTsKLQkJZXhpdCAoRVJS
X1BJRF9GSUxFX05PVF9GT1VORCk7Ci0JfQotCWZwcmludGYgKGZpbGUsICIlZFxuIiwgcGlkKTsK
LQlmY2xvc2UgKGZpbGUpOwotCi0JbG9nT3V0cHV0ICgiIFsgRE9ORSBdXG4iKTsKLX0KLQotLyoq
Ci0JVHJ1bmNhdGUgdGhlIFBJRCBmaWxlLgotICovCi1zdGF0aWMgdm9pZAotY2xlYXJQSUQgKHZv
aWQpCi17Ci0JaWYgKHRydW5jYXRlICgiJSVQSURfRklMRSUlIiwgMCkgIT0gMCkKLQl7Ci0JCXBl
cnJvciAoIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiBVbmFibGUgdG8gY2xlYXIgJSVQSURfRklM
RSUlOiAiKTsKLQkJZXhpdCAoRVJSX1BJRF9GSUxFX05PVF9GT1VORCk7Ci0JfQotfQotCi0vKioK
LSAqIENoZWNrcyBpZiB0aGUgc3BlY2lmaWVkIHByb2Nlc3MgaXMgcnVubmluZy4KLSAqCi0gKiBA
cGFyYW0gcGlkCi0gKiAgICB0aGUgcHJvY2VzcyBpZCwgZ3JlYXRlciB0aGFuIDAuCi0gKgotICog
QHJldHVybgotICogICAgMCBpZiB0aGUgc3BlY2lmaWVkIHByb2Nlc3MgaXMgbm90IHJ1bm5pbmcs
IGEgZGlmZmVyZW50IHZhbHVlIG90aGVyd2lzZS4KLSAqLwotc3RhdGljIGludAotZXhpc3RzUHJv
Y2VzcyAoCi0gaW50IHBpZCkKLXsKLQlpbnQgcmVzdWx0OwotCi0JLyogQ2hlY2sgcHJlY29uZGl0
aW9ucyAqLwotCWFzc2VydCAocGlkID4gMCk7Ci0KLQkvKiBTZWUgaWYgdGhlIHByb2Nlc3MgZXhp
c3RzICovCi0gICAJcmVzdWx0ID0ga2lsbCAocGlkLCAwKTsKLQotCS8qIElmIHRoZSByZXN1bHQg
aXMgMCwgdGhlbiB0aGUgcHJvY2VzcyBleGlzdHMgKi8KLQlyZXR1cm4gcmVzdWx0ID09IDA7Ci19
Ci0KLS8qKgotICogS2lsbHMgdGhlIHByb2Nlc3MgaWRlbnRpZmllZCBieSB0aGUgc3BlY2lmaWVk
IElELgotICoKLSAqIEBwYXJhbSBwaWQKLSAqICAgIHRoZSBwcm9jZXNzIGlkLCBncmVhdGVyIHRo
YW4gMC4KLSAqLwotc3RhdGljIHZvaWQKLWtpbGxQcm9jZXNzICgKLSBpbnQgcGlkKQotewotCWlu
dCByZXN1bHQ7Ci0JdW5zaWduZWQgaW50IHdhaXRlZDsKLQl1bnNpZ25lZCBpbnQgZm9yY2VkOwot
CXVuc2lnbmVkIGludCBpbnRlcnZhbCA9IFNUT1BfVElNRV9JTlRFUlZBTDsKLQl1bnNpZ25lZCBp
bnQgdGltZW91dCAgPSAlJVNUT1BfVElNRU9VVCUlOwotCi0JLyogQ2hlY2sgcHJlY29uZGl0aW9u
cyAqLwotCWFzc2VydCAocGlkID4gMCk7Ci0KLQlpZiAoIWlzUXVpZXQpCi0JCXByaW50ZiAoIj4+
IFRlcm1pbmF0aW5nIHByb2Nlc3MgJWQuLi4iLCBwaWQpOwotCXJlc3VsdCA9IGtpbGwgKHBpZCwg
U0lHVEVSTSk7Ci0JaWYgKHJlc3VsdCA8IDApIHsKLQkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1c
biIpOwotCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5hYmxl
IHRvIGtpbGwgcHJvY2VzcyAlZDogIiwgcGlkKTsKLQkJcGVycm9yIChOVUxMKTsKLQkJZXhpdCAo
RVJSX0tJTExfRkFJTEVEKTsKLQl9Ci0KLQkvKiBXYWl0IHVudGlsIHRoZSBwcm9jZXNzIGlzIGFj
dHVhbGx5IGtpbGxlZCAqLwotICAgIHJlc3VsdCA9IGV4aXN0c1Byb2Nlc3MgKHBpZCk7Ci0JZm9y
ICh3YWl0ZWQ9MDsgcmVzdWx0ID09IDEgJiYgd2FpdGVkIDwgdGltZW91dDsgd2FpdGVkICs9IGlu
dGVydmFsKQotCXsKLQkJbG9nT3V0cHV0ICgiLiIpOwotCQlmZmx1c2ggKHN0ZG91dCk7Ci0JCXNs
ZWVwIChpbnRlcnZhbCk7Ci0gICAgCXJlc3VsdCA9IGV4aXN0c1Byb2Nlc3MgKHBpZCk7Ci0JfQot
Ci0JLyogSWYgdGhlIHByb2Nlc3Mgc3RpbGwgZXhpc3RzLCB0aGVuIGhhdmUgbm8gbWVyY3kgYW5k
IGtpbGwgaXQgKi8KLQlmb3JjZWQgPSAwOwotCWlmIChyZXN1bHQgPT0gMSkKLQl7Ci0JCS8qIEZv
cmNlIHRoZSBwcm9jZXNzIHRvIGRpZSAqLwotCQlyZXN1bHQgPSBraWxsIChwaWQsIFNJR0tJTEwp
OwotCQlpZiAocmVzdWx0ID09IDApIHsKLQkJCWZvcmNlZCA9IDE7Ci0JCQlsb2dPdXRwdXQgKCIg
WyBLSUxMRUQgXVxuIik7Ci0JCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05B
TUUlJTogUHJvY2VzcyAlZCBkaWQgbm90IHRlcm1pbmF0ZSB3aXRoaW4gJSVTVE9QX1RJTUVPVVQl
JSBzZWMuIEtpbGxlZC5cbiIsIHBpZCk7Ci0JCX0gZWxzZSBpZiAocmVzdWx0ICE9IEVTUkNIKSB7
Ci0JCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7Ci0JCQlmcHJpbnRmIChzdGRlcnIsICIl
JUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5hYmxlIHRvIGtpbGwgcHJvY2VzcyAlZDogIiwgcGlk
KTsKLQkJCXBlcnJvciAoTlVMTCk7Ci0JCQlleGl0IChFUlJfS0lMTF9GQUlMRUQpOwotCQl9Ci0J
fQotCi0JaWYgKGZvcmNlZCA9PSAwKSB7Ci0JCWxvZ091dHB1dCAoIiBbIERPTkUgXVxuIik7Ci0J
fQotfQotCi0vKioKLSAqIFN0YXJ0cyB0aGUgZGFlbW9uLgotICovCi1zdGF0aWMgdm9pZAotc3Rh
cnQgKAotIGludCBqYXZhT3B0LAotIGNoYXIgKiBqYXZhQXJncyBbXSwKLSBpbnQgamJvc3NPcHQs
Ci0gY2hhciAqIGpib3NzQXJncyBbXSkKLXsKLQlpbnQgaSwgYXJnYzsKLQljaGFyICoqIGFyZ3Y7
Ci0JaW50IHBpZDsKLQlpbnQgcmVzdWx0OwotCWludCBzdGRvdXRMb2dGaWxlOwotCWludCBzdGRl
cnJMb2dGaWxlOwotCXN0cnVjdCBzdGF0IHNiOwotCi0JcGlkID0gcmVhZFBJRCAoKTsKLQotCWxv
Z091dHB1dCAoIj4+IFN0YXJ0aW5nICUlQVBQX1RJVExFJSUgJSVQT1JUVkVSU0lPTiUlLi4uIik7
Ci0JaWYgKHBpZCAhPSAtMSkKLQl7Ci0JCS8qIENoZWNrIGlmIHRoZSBwcm9jZXNzIGFjdHVhbGx5
IGV4aXN0cyAqLwotCQlyZXN1bHQgPSBleGlzdHNQcm9jZXNzIChwaWQpOwotCQlpZiAocmVzdWx0
ID09IDEpCi0JCXsKLQkJCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKLQkJCWZwcmludGYg
KHN0ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiAlJUFQUF9USVRMRSUlICUlUE9SVFZF
UlNJT04lJSBpcyBhbHJlYWR5IHJ1bm5pbmcsIFBJRCBpcyAlZC5cbiIsIHBpZCk7Ci0JCQlleGl0
IChFUlJfQUxSRUFEWV9SVU5OSU5HKTsKLQkJfQotCX0KLQotCS8qIENoZWNrIGlmIHRoZSBKREsg
aG9tZSBkaXJlY3RvcnkgaXMgYWN0dWFsbHkgYSBkaXJlY3RvcnkgKi8KLQlyZXN1bHQgPSBzdGF0
ICgiJSVKQVZBX0hPTUUlJSIsICZzYik7Ci0JaWYgKHJlc3VsdCAhPSAwKSB7Ci0JCWxvZ091dHB1
dCAoIiBbIEZBSUxFRCBdXG4iKTsKLQkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQ
VF9OQU1FJSU6IFVuYWJsZSB0byBzdGF0ICUlSkFWQV9IT01FJSU6ICIpOwotCQlwZXJyb3IgKE5V
TEwpOwotCQlleGl0IChFUlJfU1RBVF9KQVZBX0hPTUUpOwotCX0KLQlpZiAoIVNfSVNESVIgKHNi
LnN0X21vZGUpKSB7Ci0JCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKLQkJZnByaW50ZiAo
c3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IEphdmEgaG9tZSBkaXJlY3RvcnkgJSVK
QVZBX0hPTUUlJSBpcyBub3QgYSBkaXJlY3RvcnkuXG4iKTsKLQkJZXhpdCAoRVJSX0pBVkFfSE9N
RV9OT1RfRElSKTsKLQl9Ci0KLQkvKiBDaGVjayBpZiB0aGUgSmF2YSBjb21tYW5kIGlzIGFjdHVh
bGx5IGFuIGV4ZWN1dGFibGUgcmVndWxhciBmaWxlICovCi0JcmVzdWx0ID0gc3RhdCAoIiUlSkFW
QSUlIiwgJnNiKTsKLQlpZiAocmVzdWx0ICE9IDApIHsKLQkJbG9nT3V0cHV0ICgiIFsgRkFJTEVE
IF1cbiIpOwotCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5h
YmxlIHRvIHN0YXQgJSVKQVZBJSU6ICIpOwotCQlwZXJyb3IgKE5VTEwpOwotCQlleGl0IChFUlJf
U1RBVF9KQVZBX0NNRCk7Ci0JfQotCWlmICghU19JU1JFRyAoc2Iuc3RfbW9kZSkpIHsKLQkJbG9n
T3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOwotCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xf
U0NSSVBUX05BTUUlJTogSmF2YSBjb21tYW5kICUlSkFWQSUlIGlzIG5vdCBhIHJlZ3VsYXIgZmls
ZS5cbiIpOwotCQlleGl0IChFUlJfSkFWQV9DTURfTk9UX0ZJTEUpOwotCX0KLQlyZXN1bHQgPSBh
Y2Nlc3MgKCIlJUpBVkElJSIsIFhfT0spOwotCWlmIChyZXN1bHQgIT0gMCkgewotCQlsb2dPdXRw
dXQgKCIgWyBGQUlMRUQgXVxuIik7Ci0JCWZwcmludGYgKHN0ZGVyciwgIiUlQ09OVFJPTF9TQ1JJ
UFRfTkFNRSUlOiBKYXZhIGNvbW1hbmQgJSVKQVZBJSUgaXMgbm90IGV4ZWN1dGFibGU6ICIpOwot
CQlwZXJyb3IgKE5VTEwpOwotCQlleGl0IChFUlJfSkFWQV9DTURfTk9UX0VYRUNVVEFCTEUpOwot
CX0KLQotCS8qIENoYW5nZSBkaXJlY3RvcnkgKi8KLQlyZXN1bHQgPSBjaGRpciAoIiUlQVBQX0hP
TUUlJSIpOwotCWlmIChyZXN1bHQgPCAwKSB7Ci0JCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4i
KTsKLQkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFVuYWJsZSB0
byBhY2Nlc3MgZGlyZWN0b3J5ICUlQVBQX0hPTUUlJTogIik7Ci0JCXBlcnJvciAoTlVMTCk7Ci0J
CWV4aXQgKEVSUl9DSERJUl9UT19BUFBfSE9NRSk7Ci0JfQotCi0JLyogU2VlIGlmIHRoZSBKQVIg
ZmlsZSBleGlzdHMgKi8KLQlyZXN1bHQgPSBhY2Nlc3MgKCIlJUFQUF9IT01FJSUvJSVKQVJfRklM
RSUlIiwgUl9PSyk7Ci0JaWYgKHJlc3VsdCA8IDApIHsKLQkJbG9nT3V0cHV0ICgiIFsgRkFJTEVE
IF1cbiIpOwotCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5h
YmxlIHRvIGFjY2VzcyBKQVIgZmlsZSAlJUFQUF9IT01FJSUvJSVKQVJfRklMRSUlOiAiKTsKLQkJ
cGVycm9yIChOVUxMKTsKLQkJZXhpdCAoRVJSX0FDQ0VTU19KQVJfRklMRSk7Ci0JfQotCi0JLyog
T3BlbiB0aGUgc3Rkb3V0IGxvZyBmaWxlICovCi0Jc3Rkb3V0TG9nRmlsZSA9IG9wZW4gKCIlJVNU
RE9VVF9MT0clJSIsIE9fV1JPTkxZKTsKLQlpZiAoc3Rkb3V0TG9nRmlsZSA8IDApIHsKLQkJbG9n
T3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOwotCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xf
U0NSSVBUX05BTUUlJTogVW5hYmxlIHRvIG9wZW4gJSVTVERPVVRfTE9HJSUgZm9yIHdyaXRpbmc6
ICIpOwotCQlwZXJyb3IgKE5VTEwpOwotCQlleGl0IChFUlJfU1RET1VUX0xPR0ZJTEVfT1BFTik7
Ci0JfQotCWxzZWVrIChzdGRvdXRMb2dGaWxlLCAob2ZmX3QpIDAsIFNFRUtfRU5EKTsKLQotCS8q
IE9wZW4gdGhlIHN0ZGVyciBsb2cgZmlsZSAqLwotCXN0ZGVyckxvZ0ZpbGUgPSBvcGVuICgiJSVT
VERFUlJfTE9HJSUiLCBPX1dST05MWSk7Ci0JaWYgKHN0ZGVyckxvZ0ZpbGUgPCAwKSB7Ci0JCWxv
Z091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKLQkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9M
X1NDUklQVF9OQU1FJSU6IFVuYWJsZSB0byBvcGVuICUlU1RERVJSX0xPRyUlIGZvciB3cml0aW5n
OiAiKTsKLQkJcGVycm9yIChOVUxMKTsKLQkJZXhpdCAoRVJSX1NUREVSUl9MT0dGSUxFX09QRU4p
OwotCX0KLQlsc2VlayAoc3RkZXJyTG9nRmlsZSwgKG9mZl90KSAwLCBTRUVLX0VORCk7Ci0KLQkv
KiBTcGxpdCB0aGlzIHByb2Nlc3MgaW4gdHdvICovCi0Jc3dpdGNoIChwaWQgPSBmb3JrICgpKQot
CXsKLQljYXNlIC0xOgotCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7Ci0JCWZwcmludGYg
KHN0ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiBVbmFibGUgdG8gZm9yazogIik7Ci0J
CXBlcnJvciAoTlVMTCk7Ci0JCWV4aXQgKEVSUl9GT1JLX0ZBSUxFRCk7Ci0JCWJyZWFrOwotCi0J
Y2FzZSAwOgotCQkvKiBSZWRpcmVjdCBzdGRvdXQgdG8gbG9nIGZpbGUgKi8KLQkJZHVwMiAoc3Rk
b3V0TG9nRmlsZSwgU1RET1VUX0ZJTEVOTyk7Ci0KLQkJLyogUmVkaXJlY3Qgc3RkZXJyIHRvIGxv
ZyBmaWxlICovCi0JCWR1cDIgKHN0ZGVyckxvZ0ZpbGUsIFNUREVSUl9GSUxFTk8pOwotCi0JCS8q
IFRPRE86IFN1cHBvcnQgcmVkaXJlY3Rpb24gb2YgYm90aCBzdGRvdXQgYW5kIHN0ZGVyciB0byB0
aGUgc2FtZQotCQkJCSBmaWxlIHVzaW5nIHBpcGUgKDIpICovCi0KLQkJLyoKLQkJCUJ1aWxkIHRo
ZSBhcmd1bWVudCB2ZWN0b3IsIHdpdGggdGhlIGphdmEvamJvc3Mgb3B0aW9ucyBpZiBhbnkuCi0J
CSAqLwotCQlhcmd2ID0gbWFsbG9jIChzaXplb2YgKGNoYXIgKikgKiAoamF2YU9wdCArIGpib3Nz
T3B0ICsgNSkpOwotCQlhcmdjID0gMDsKLQkJYXJndiBbYXJnYysrXSA9ICIlJUpBVkElJSI7Ci0J
CWZvciAoaSA9IDA7IGkgPCBqYXZhT3B0OyBpKyspCi0JCQlhcmd2IFthcmdjKytdID0gamF2YUFy
Z3MgW2ldOwotCQlhcmd2IFthcmdjKytdID0gIi1jcCI7Ci0JCWFyZ3YgW2FyZ2MrK10gPSAiJSVK
QVZBX0NQJSUiOwotCQlhcmd2IFthcmdjKytdID0gIiUlSkFWQV9NQUlOJSUiOwotCQlmb3IgKGkg
PSAwOyBpIDwgamJvc3NPcHQ7IGkrKykKLQkJCWFyZ3YgW2FyZ2MrK10gPSBqYm9zc0FyZ3MgW2ld
OwotCQlhcmd2IFthcmdjKytdID0gTlVMTDsKLQotCQkvKiBFeGVjdXRlIHRoZSBjb21tYW5kICov
Ci0JCWV4ZWN2IChhcmd2IFswXSwgYXJndik7Ci0JCXBlcnJvciAoTlVMTCk7Ci0JCWJyZWFrOwot
Ci0JZGVmYXVsdDoKLQkJbG9nT3V0cHV0ICgiIFsgRE9ORSBdXG4iKTsKLQkJd3JpdGVQSUQgKHBp
ZCk7Ci0JfQotfQotCi0vKioKLSAqIFN0b3BzIHRoZSBkYWVtb24uCi0gKi8KLXN0YXRpYyB2b2lk
Ci1zdG9wICh2b2lkKQotewotCWludCBwaWQ7Ci0KLQlwaWQgPSByZWFkUElEICgpOwotCi0JbG9n
T3V0cHV0ICgiPj4gQ2hlY2tpbmcgaWYgJSVBUFBfVElUTEUlJSAlJVBPUlRWRVJTSU9OJSUgaXMg
cnVubmluZy4uLiIpOwotCi0JLyogSWYgdGhlcmUgaXMgYSBQSUQsIHNlZSBpZiB0aGUgcHJvY2Vz
cyBzdGlsbCBleGlzdHMgKi8KLQlpZiAocGlkICE9IC0xKQotCXsKLQkJaW50IHJlc3VsdCA9IGtp
bGwgKHBpZCwgMCk7Ci0JCWlmIChyZXN1bHQgIT0gMCAmJiBlcnJubyA9PSBFU1JDSCkKLQkJewot
CQkJY2xlYXJQSUQgKCk7Ci0JCQlwaWQgPSAtMTsKLQkJfQotCX0KLQotCS8qIElmIHRoZXJlIGlz
IG5vIHJ1bm5pbmcgcHJvY2VzcywgcHJvZHVjZSBhbiBlcnJvciAqLwotCWlmIChwaWQgPT0gLTEp
Ci0JewotCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7Ci0JCWZwcmludGYgKHN0ZGVyciwg
IiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiAlJUFQUF9USVRMRSUlICUlUE9SVFZFUlNJT04lJSBp
cyBjdXJyZW50bHkgbm90IHJ1bm5pbmcuXG4iKTsKLQkJZXhpdCAoRVJSX05PVF9SVU5OSU5HKTsK
LQl9Ci0JbG9nT3V0cHV0ICgiIFsgRE9ORSBdXG4iKTsKLQotCS8qIFRlcm1pbmF0ZSB0aGUgcHJv
Y2VzcyAqLwotCWtpbGxQcm9jZXNzIChwaWQpOwotCWNsZWFyUElEICgpOwotfQotCi0KLS8qKgot
ICogUmVzdGFydHMgdGhlIHByb2Nlc3MuIElmIGl0IG5vdCBjdXJyZW50bHkgcnVubmluZywgdGhl
biBpdCB3aWxsIGZhaWwuCi0gKi8KLXN0YXRpYyB2b2lkCi1yZXN0YXJ0ICgKLSBpbnQgamF2YU9w
dCwKLSBjaGFyICogamF2YUFyZ3MgW10sCi0gaW50IGpib3NzT3B0LAotIGNoYXIgKiBqYm9zc0Fy
Z3MgW10pCi17Ci0Jc3RvcCAoKTsKLQlzdGFydCAoamF2YU9wdCwgamF2YUFyZ3MsIGpib3NzT3B0
LCBqYm9zc0FyZ3MpOwotfQotCi0vKioKLQlPdXRwdXQgbG9nIHRvIHN0ZG91dC4KLSAqLwotc3Rh
dGljIHZvaWQKLWxvZ091dHB1dCAoCi0gY2hhciAqIHN0cmluZykKLXsKLQlpZiAoIWlzUXVpZXQp
Ci0JCXByaW50ZiAoc3RyaW5nKTsKLX0KSW5kZXg6IGZpbGVzL2RhZW1vbmN0bC5jLmluCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IGZpbGVzL2RhZW1vbmN0bC5jLmluCmRpZmYgLU4gZmlsZXMvZGFlbW9u
Y3RsLmMuaW4KLS0tIC9kZXYvbnVsbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBmaWxl
cy9kYWVtb25jdGwuYy5pbgkxMyBKYW4gMjAwNSAwMTo1NToxMyAtMDAwMApAQCAtMCwwICsxLDU1
NyBAQAorLyoKKyAqIC0qLSBtb2RlOiBGdW5kYW1lbnRhbDsgdGFiLXdpZHRoOiA0OyAtKi0KKyAq
IGV4OnRzPTQKKyAqCisgKiBEYWVtb24gY29udHJvbCBwcm9ncmFtLCB3aXRoIEphdmEgU3RhcnR1
cCBvcHRpb25zLgorICoKKyAqCU9yaWdpbmFsIGJ5IEVybnN0IGRlIEhhYW4gPHpuZXJkQGZyZWVi
c2Qub3JnPgorICoJd3d3L2pha2FydGEtdG9tY2F0NC9maWxlcy9kYWVtb25jdGwuYworICoKKyAq
ICRGcmVlQlNEOiBwb3J0cy9qYXZhL2pib3NzMy9maWxlcy9kYWVtb25jdGwuYyx2IDEuMiAyMDA1
LzAxLzEzIDAxOjU1OjEzIGhxIEV4cCAkCisgKi8KKworI2luY2x1ZGUgPGFzc2VydC5oPgorI2lu
Y2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8c2lnbmFsLmg+CisjaW5jbHVkZSA8c3RkYXJnLmg+
CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJp
bmcuaD4KKyNpbmNsdWRlIDxzeXNsb2cuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRl
IDxzeXMvZXJybm8uaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy90eXBl
cy5oPgorI2luY2x1ZGUgPHN5cy91aW8uaD4KKworI2RlZmluZQlUUlVFCTEKKyNkZWZpbmUJRkFM
U0UJMAorCisvKiBUaGUgaW50ZXJ2YWwgaW4gc2Vjb25kcyBiZXR3ZWVuIHRoZSBjaGVja3MgdG8g
bWFrZSBzdXJlIHRoZSBwcm9jZXNzCisgICBkaWVkIGFmdGVyIGEga2lsbCAqLworI2RlZmluZSBT
VE9QX1RJTUVfSU5URVJWQUwJCTEKKworI2RlZmluZSBFUlJfSUxMRUdBTF9BUkdVTUVOVAkJCQkx
CisjZGVmaW5lIEVSUl9QSURfRklMRV9OT1RfRk9VTkQJCQkJMgorI2RlZmluZSBFUlJfS0lMTF9G
QUlMRUQJCQkJCQk1CisjZGVmaW5lIEVSUl9BTFJFQURZX1JVTk5JTkcJCQkJCTYKKyNkZWZpbmUg
RVJSX05PVF9SVU5OSU5HCQkJCQkJNworI2RlZmluZSBFUlJfQ0hESVJfVE9fQVBQX0hPTUUJCQkJ
OAorI2RlZmluZSBFUlJfQUNDRVNTX0pBUl9GSUxFCQkJCQkxNworI2RlZmluZSBFUlJfU1RET1VU
X0xPR0ZJTEVfT1BFTgkJCQk5CisjZGVmaW5lIEVSUl9TVERFUlJfTE9HRklMRV9PUEVOCQkJCTEw
CisjZGVmaW5lIEVSUl9GT1JLX0ZBSUxFRAkJCQkJCTExCisjZGVmaW5lIEVSUl9TVEFUX0pBVkFf
SE9NRQkJCQkJMTIKKyNkZWZpbmUgRVJSX0pBVkFfSE9NRV9OT1RfRElSCQkJCTEzCisjZGVmaW5l
IEVSUl9TVEFUX0pBVkFfQ01ECQkJCQkxNAorI2RlZmluZSBFUlJfSkFWQV9DTURfTk9UX0ZJTEUJ
CQkJMTUKKyNkZWZpbmUgRVJSX0pBVkFfQ01EX05PVF9FWEVDVVRBQkxFCQkJMTYKKworLyoKKwlG
dW5jdGlvbiBkZWNsYXJhdGlvbnMuCisgKi8KK3N0YXRpYyB2b2lkIHByaW50VXNhZ2UgKHZvaWQp
Oworc3RhdGljIGludCByZWFkUElEICh2b2lkKTsKK3N0YXRpYyB2b2lkIHdyaXRlUElEIChpbnQg
cGlkKTsKK3N0YXRpYyB2b2lkIGNsZWFyUElEICh2b2lkKTsKK3N0YXRpYyB2b2lkIHN0YXJ0IChp
bnQgamF2YU9wdCwgY2hhciAqIGphdmFBcmdzIFtdLCBpbnQgamJvc3NPcHQsIGNoYXIgKiBqYm9z
c0FyZ3MgW10pOworc3RhdGljIHZvaWQgc3RvcCAodm9pZCk7CitzdGF0aWMgdm9pZCByZXN0YXJ0
IChpbnQgamF2YU9wdCwgY2hhciAqIGphdmFBcmdzIFtdLCBpbnQgamJvc3NPcHQsIGNoYXIgKiBq
Ym9zc0FyZ3MgW10pOworc3RhdGljIHZvaWQgbG9nT3V0cHV0IChjaGFyICopOworCisvKgorCUds
b2JhbHMKKyAqLworc3RhdGljIGludCBpc1F1aWV0ID0gRkFMU0U7CitzdGF0aWMgY2hhciAqIG9w
dFF1aWV0ID0gIi1xIiwJCQkvKiBxdWlldCBvcHRpb24gKi8KKwkJCSogb3B0Q29uZmlnID0gIi1j
b25maWciOwkvKiBqYm9zcyBjb25maWd1cmF0aW9uIG9wdGlvbiAqLworCisvKioKKyAqIE1haW4g
ZnVuY3Rpb24uIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhpcyBwcm9ncmFtIGlzIGV4
ZWN1dGVkLgorICoKKyAqIEBwYXJhbSBhcmdjCisgKiAgICB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50
cyBwbHVzIG9uZSwgc28gYWx3YXlzIGdyZWF0ZXIgdGhhbiAwLgorICoKKyAqIEBwYXJhbSBhcmd2
CisgKiAgICB0aGUgYXJndW1lbnRzIGluIGFuIGFycmF5IG9mIGNoYXJhY3RlciBwb2ludGVycywg
d2hlcmUgdGhlIGxhc3QgYXJndW1lbnQKKyAqICAgIGVsZW1lbnQgaXMgZm9sbG93ZWQgYnkgYSBO
VUxMIGVsZW1lbnQuCisgKi8KK2ludAorbWFpbiAoCisgaW50IGFyZ2MsCisgY2hhciAqYXJndiBb
XSkKK3sKKwkvKiBEZWNsYXJlIHZhcmlhYmxlcywgbGlrZSBhbGwgb3RoZXIgZ29vZCBBTlNJIEMg
cHJvZ3JhbXMgZG8gOikgKi8KKwlpbnQgaSwgamF2YU9wdCwgamJvc3NPcHQ7CisJY2hhciAqYXJn
dW1lbnQsICoqamF2YUFyZ3MsICoqamJvc3NBcmdzOworCisJLyogUGFyc2UgdGhlIGFyZ3VtZW50
cyAqLworCWlmIChhcmdjIDwgMikKKwl7CisJCXByaW50VXNhZ2UgKCk7CisJCXJldHVybiAwOwor
CX0KKworCS8qIFhYWDogRml4IGZvciBzZXR0aW5nIHVwIHRoZSBlbnZpcm9ubWVudCBmb3IgdGhl
IGphdmEgd3JhcHBlciBzY3JpcHQgKi8KKwlzZXR1aWQgKGdldGV1aWQgKCkpOworCXNldGdpZCAo
Z2V0ZWdpZCAoKSk7CisKKwkvKgorCQlCdWlsZCB1cCBqYXZhIGFuZCBqYm9zcyBvcHRpb24gYmxv
Y2tzLgorCSAqLworCWphdmFPcHQgPSBqYm9zc09wdCA9IDA7CisJZm9yIChpID0gMTsgaSA8IGFy
Z2M7IGkrKykKKwl7CisJCWlmIChzdHJjbXAgKGFyZ3YgW2ldLCBvcHRRdWlldCkgPT0gMCkKKwkJ
eworCQkJaXNRdWlldCA9IFRSVUU7CisKKwkJfSBlbHNlIGlmIChzdHJjbXAgKGFyZ3YgW2ldLCBv
cHRDb25maWcpID09IDApCisJCXsKKwkJCWpib3NzT3B0ICs9IDI7CisJCQlpZiAoKytpID49IGFy
Z2MpCisJCQl7CisJCQkJcHJpbnRVc2FnZSAoKTsKKwkJCQlyZXR1cm4gRVJSX0lMTEVHQUxfQVJH
VU1FTlQ7CisJCQl9CisKKwkJfSBlbHNlIGlmICgqYXJndiBbaV0gPT0gJy0nKQorCQl7CisJCQlq
YXZhT3B0Kys7CisJCX0KKwl9CisJaWYgKGphdmFPcHQgPT0gMCkKKwkJamF2YUFyZ3MgPSBOVUxM
OworCWVsc2UKKwl7CisJCWludCBqID0gMDsKKwkJamF2YUFyZ3MgPSBtYWxsb2MgKHNpemVvZiAo
Y2hhciAqKSAqIGphdmFPcHQpOworCQlmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKQorCQl7CisJ
CQlpZiAoc3RyY21wIChhcmd2IFtpXSwgb3B0UXVpZXQpICYmCisJCQkJc3RyY21wIChhcmd2IFtp
XSwgb3B0Q29uZmlnKSAmJgorCQkJCSphcmd2IFtpXSA9PSAnLScpCisJCQl7CisJCQkJamF2YUFy
Z3MgW2orK10gPSBhcmd2IFtpXTsKKwkJCX0KKwkJfQorCX0KKwlpZiAoamJvc3NPcHQgPT0gMCkK
KwkJamJvc3NBcmdzID0gTlVMTDsKKwllbHNlCisJeworCQlpbnQgaiA9IDA7CisJCWpib3NzQXJn
cyA9IG1hbGxvYyAoc2l6ZW9mIChjaGFyICopICogamJvc3NPcHQpOworCQlmb3IgKGkgPSAwOyBp
IDwgYXJnYzsgaSsrKQorCQl7CisJCQlpZiAoc3RyY21wIChhcmd2IFtpXSwgb3B0Q29uZmlnKSA9
PSAwKQorCQkJeworCQkJCWpib3NzQXJncyBbaisrXSA9ICItYyI7CisJCQkJamJvc3NBcmdzIFtq
KytdID0gYXJndiBbKytpXTsKKwkJCX0KKwkJfQorCX0KKworCS8qCisJCURlY2lkZSBvbiBqdXN0
IHdoYXQgdG8gY2FsbC4KKwkgKi8KKwlhcmd1bWVudCA9IGFyZ3YgW2FyZ2MgLSAxXTsKKwlpZiAo
c3RyY21wICgic3RhcnQiLCBhcmd1bWVudCkgPT0gMCkKKwl7CisJCXN0YXJ0IChqYXZhT3B0LCBq
YXZhQXJncywgamJvc3NPcHQsIGpib3NzQXJncyk7CisKKwl9IGVsc2UgaWYgKHN0cmNtcCAoInN0
b3AiLCBhcmd1bWVudCkgPT0gMCkKKwl7CisJCXN0b3AgKCk7CisKKwl9IGVsc2UgaWYgKHN0cmNt
cCAoInJlc3RhcnQiLCBhcmd1bWVudCkgPT0gMCkKKwl7CisJCXJlc3RhcnQgKGphdmFPcHQsIGph
dmFBcmdzLCBqYm9zc09wdCwgamJvc3NBcmdzKTsKKworCX0gZWxzZSB7CisJCWZwcmludGYgKHN0
ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiBJbGxlZ2FsIGFyZ3VtZW50IFwiJXNcIi5c
biIsIGFyZ3VtZW50KTsKKwkJcHJpbnRVc2FnZSAoKTsKKwkJZXhpdCAoRVJSX0lMTEVHQUxfQVJH
VU1FTlQpOworCX0KKworCXJldHVybiBFWElUX1NVQ0NFU1M7Cit9CisKKy8qKgorICogUHJpbnRz
IHVzYWdlIGluZm9ybWF0aW9uIHRvIHN0ZG91dC4KKyAqLworc3RhdGljIHZvaWQKK3ByaW50VXNh
Z2UgKHZvaWQpCit7CisJcHJpbnRmICgiVXNhZ2U6ICUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlIFtq
YXZhLW9wdGlvbnNdIFstY29uZmlnIGpib3NzY29uZmlnXSB7c3RhcnR8c3RvcHxyZXN0YXJ0fVxu
Iik7Cit9CisKKy8qKgorICogUmVhZHMgYSBQSUQgZnJvbSB0aGUgUElEIGZpbGUuCisgKgorICog
QHJldHVybgorICogICAgdGhlIFBJRCwgb3IgLTEgaWYgdGhlIGZpbGUgd2FzIGVtcHR5LgorICov
CitzdGF0aWMgaW50CityZWFkUElEICh2b2lkKQoreworCUZJTEUgKiBmaWxlOworCWludCBwaWQ7
CisKKwlsb2dPdXRwdXQgKCI+PiBSZWFkaW5nIFBJRCBmaWxlICglJVBJRF9GSUxFJSUpLi4uIik7
CisJZmlsZSA9IGZvcGVuICgiJSVQSURfRklMRSUlIiwgInIiKTsKKwlpZiAoIWZpbGUpCisJewor
CQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7CisJCXBlcnJvciAoIiUlQ09OVFJPTF9TQ1JJ
UFRfTkFNRSUlOiBVbmFibGUgdG8gb3BlbiAlJVBJRF9GSUxFJSUgZm9yIHJlYWRpbmc6ICIpOwor
CQlleGl0IChFUlJfUElEX0ZJTEVfTk9UX0ZPVU5EKTsKKwl9CisJaWYgKGZzY2FuZiAoZmlsZSwg
IiVkIiwgJnBpZCkgPCAxKQorCQlwaWQgPSAtMTsKKwlmY2xvc2UgKGZpbGUpOworCisJbG9nT3V0
cHV0ICgiIFsgRE9ORSBdXG4iKTsKKwlyZXR1cm4gcGlkOworfQorCisvKioKKyAqIFdyaXRlcyBh
IHByb2Nlc3MgSUQgdG8gdGhlIHNwZWNpZmllZCBmaWxlLiBUaGUgZmlsZSBpcyBpZGVudGlmaWVk
IGJ5IGEgZmlsZQorICogaGFuZGxlLgorICoKKyAqIEBwYXJhbSBwaWQKKyAqICAgIHRoZSBQSUQg
dG8gc3RvcmUsIGFsd2F5cyBncmVhdGVyIHRoYW4gMC4KKyAqLworc3RhdGljIHZvaWQKK3dyaXRl
UElEICgKKyBpbnQgcGlkKQoreworCUZJTEUgKiBmaWxlOworCisJbG9nT3V0cHV0ICgiPj4gV3Jp
dGluZyBQSUQgZmlsZS4uLiIpOworCWZpbGUgPSBmb3BlbiAoIiUlUElEX0ZJTEUlJSIsICJ3Iik7
CisJaWYgKCFmaWxlKQorCXsKKwkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOworCQlwZXJy
b3IgKCIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5hYmxlIHRvIG9wZW4gJSVQSURfRklMRSUl
IGZvciB3cml0aW5nOiAiKTsKKwkJZXhpdCAoRVJSX1BJRF9GSUxFX05PVF9GT1VORCk7CisJfQor
CWZwcmludGYgKGZpbGUsICIlZFxuIiwgcGlkKTsKKwlmY2xvc2UgKGZpbGUpOworCisJbG9nT3V0
cHV0ICgiIFsgRE9ORSBdXG4iKTsKK30KKworLyoqCisJVHJ1bmNhdGUgdGhlIFBJRCBmaWxlLgor
ICovCitzdGF0aWMgdm9pZAorY2xlYXJQSUQgKHZvaWQpCit7CisJaWYgKHRydW5jYXRlICgiJSVQ
SURfRklMRSUlIiwgMCkgIT0gMCkKKwl7CisJCXBlcnJvciAoIiUlQ09OVFJPTF9TQ1JJUFRfTkFN
RSUlOiBVbmFibGUgdG8gY2xlYXIgJSVQSURfRklMRSUlOiAiKTsKKwkJZXhpdCAoRVJSX1BJRF9G
SUxFX05PVF9GT1VORCk7CisJfQorfQorCisvKioKKyAqIENoZWNrcyBpZiB0aGUgc3BlY2lmaWVk
IHByb2Nlc3MgaXMgcnVubmluZy4KKyAqCisgKiBAcGFyYW0gcGlkCisgKiAgICB0aGUgcHJvY2Vz
cyBpZCwgZ3JlYXRlciB0aGFuIDAuCisgKgorICogQHJldHVybgorICogICAgMCBpZiB0aGUgc3Bl
Y2lmaWVkIHByb2Nlc3MgaXMgbm90IHJ1bm5pbmcsIGEgZGlmZmVyZW50IHZhbHVlIG90aGVyd2lz
ZS4KKyAqLworc3RhdGljIGludAorZXhpc3RzUHJvY2VzcyAoCisgaW50IHBpZCkKK3sKKwlpbnQg
cmVzdWx0OworCisJLyogQ2hlY2sgcHJlY29uZGl0aW9ucyAqLworCWFzc2VydCAocGlkID4gMCk7
CisKKwkvKiBTZWUgaWYgdGhlIHByb2Nlc3MgZXhpc3RzICovCisgICAJcmVzdWx0ID0ga2lsbCAo
cGlkLCAwKTsKKworCS8qIElmIHRoZSByZXN1bHQgaXMgMCwgdGhlbiB0aGUgcHJvY2VzcyBleGlz
dHMgKi8KKwlyZXR1cm4gcmVzdWx0ID09IDA7Cit9CisKKy8qKgorICogS2lsbHMgdGhlIHByb2Nl
c3MgaWRlbnRpZmllZCBieSB0aGUgc3BlY2lmaWVkIElELgorICoKKyAqIEBwYXJhbSBwaWQKKyAq
ICAgIHRoZSBwcm9jZXNzIGlkLCBncmVhdGVyIHRoYW4gMC4KKyAqLworc3RhdGljIHZvaWQKK2tp
bGxQcm9jZXNzICgKKyBpbnQgcGlkKQoreworCWludCByZXN1bHQ7CisJdW5zaWduZWQgaW50IHdh
aXRlZDsKKwl1bnNpZ25lZCBpbnQgZm9yY2VkOworCXVuc2lnbmVkIGludCBpbnRlcnZhbCA9IFNU
T1BfVElNRV9JTlRFUlZBTDsKKwl1bnNpZ25lZCBpbnQgdGltZW91dCAgPSAlJVNUT1BfVElNRU9V
VCUlOworCisJLyogQ2hlY2sgcHJlY29uZGl0aW9ucyAqLworCWFzc2VydCAocGlkID4gMCk7CisK
KwlpZiAoIWlzUXVpZXQpCisJCXByaW50ZiAoIj4+IFRlcm1pbmF0aW5nIHByb2Nlc3MgJWQuLi4i
LCBwaWQpOworCXJlc3VsdCA9IGtpbGwgKHBpZCwgU0lHVEVSTSk7CisJaWYgKHJlc3VsdCA8IDAp
IHsKKwkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOworCQlmcHJpbnRmIChzdGRlcnIsICIl
JUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5hYmxlIHRvIGtpbGwgcHJvY2VzcyAlZDogIiwgcGlk
KTsKKwkJcGVycm9yIChOVUxMKTsKKwkJZXhpdCAoRVJSX0tJTExfRkFJTEVEKTsKKwl9CisKKwkv
KiBXYWl0IHVudGlsIHRoZSBwcm9jZXNzIGlzIGFjdHVhbGx5IGtpbGxlZCAqLworICAgIHJlc3Vs
dCA9IGV4aXN0c1Byb2Nlc3MgKHBpZCk7CisJZm9yICh3YWl0ZWQ9MDsgcmVzdWx0ID09IDEgJiYg
d2FpdGVkIDwgdGltZW91dDsgd2FpdGVkICs9IGludGVydmFsKQorCXsKKwkJbG9nT3V0cHV0ICgi
LiIpOworCQlmZmx1c2ggKHN0ZG91dCk7CisJCXNsZWVwIChpbnRlcnZhbCk7CisgICAgCXJlc3Vs
dCA9IGV4aXN0c1Byb2Nlc3MgKHBpZCk7CisJfQorCisJLyogSWYgdGhlIHByb2Nlc3Mgc3RpbGwg
ZXhpc3RzLCB0aGVuIGhhdmUgbm8gbWVyY3kgYW5kIGtpbGwgaXQgKi8KKwlmb3JjZWQgPSAwOwor
CWlmIChyZXN1bHQgPT0gMSkKKwl7CisJCS8qIEZvcmNlIHRoZSBwcm9jZXNzIHRvIGRpZSAqLwor
CQlyZXN1bHQgPSBraWxsIChwaWQsIFNJR0tJTEwpOworCQlpZiAocmVzdWx0ID09IDApIHsKKwkJ
CWZvcmNlZCA9IDE7CisJCQlsb2dPdXRwdXQgKCIgWyBLSUxMRUQgXVxuIik7CisJCQlmcHJpbnRm
IChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogUHJvY2VzcyAlZCBkaWQgbm90IHRl
cm1pbmF0ZSB3aXRoaW4gJSVTVE9QX1RJTUVPVVQlJSBzZWMuIEtpbGxlZC5cbiIsIHBpZCk7CisJ
CX0gZWxzZSBpZiAocmVzdWx0ICE9IEVTUkNIKSB7CisJCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQg
XVxuIik7CisJCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5h
YmxlIHRvIGtpbGwgcHJvY2VzcyAlZDogIiwgcGlkKTsKKwkJCXBlcnJvciAoTlVMTCk7CisJCQll
eGl0IChFUlJfS0lMTF9GQUlMRUQpOworCQl9CisJfQorCisJaWYgKGZvcmNlZCA9PSAwKSB7CisJ
CWxvZ091dHB1dCAoIiBbIERPTkUgXVxuIik7CisJfQorfQorCisvKioKKyAqIFN0YXJ0cyB0aGUg
ZGFlbW9uLgorICovCitzdGF0aWMgdm9pZAorc3RhcnQgKAorIGludCBqYXZhT3B0LAorIGNoYXIg
KiBqYXZhQXJncyBbXSwKKyBpbnQgamJvc3NPcHQsCisgY2hhciAqIGpib3NzQXJncyBbXSkKK3sK
KwlpbnQgaSwgYXJnYzsKKwljaGFyICoqIGFyZ3Y7CisJaW50IHBpZDsKKwlpbnQgcmVzdWx0Owor
CWludCBzdGRvdXRMb2dGaWxlOworCWludCBzdGRlcnJMb2dGaWxlOworCXN0cnVjdCBzdGF0IHNi
OworCisJcGlkID0gcmVhZFBJRCAoKTsKKworCWxvZ091dHB1dCAoIj4+IFN0YXJ0aW5nICUlQVBQ
X1RJVExFJSUgJSVQT1JUVkVSU0lPTiUlLi4uIik7CisJaWYgKHBpZCAhPSAtMSkKKwl7CisJCS8q
IENoZWNrIGlmIHRoZSBwcm9jZXNzIGFjdHVhbGx5IGV4aXN0cyAqLworCQlyZXN1bHQgPSBleGlz
dHNQcm9jZXNzIChwaWQpOworCQlpZiAocmVzdWx0ID09IDEpCisJCXsKKwkJCWxvZ091dHB1dCAo
IiBbIEZBSUxFRCBdXG4iKTsKKwkJCWZwcmludGYgKHN0ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRf
TkFNRSUlOiAlJUFQUF9USVRMRSUlICUlUE9SVFZFUlNJT04lJSBpcyBhbHJlYWR5IHJ1bm5pbmcs
IFBJRCBpcyAlZC5cbiIsIHBpZCk7CisJCQlleGl0IChFUlJfQUxSRUFEWV9SVU5OSU5HKTsKKwkJ
fQorCX0KKworCS8qIENoZWNrIGlmIHRoZSBKREsgaG9tZSBkaXJlY3RvcnkgaXMgYWN0dWFsbHkg
YSBkaXJlY3RvcnkgKi8KKwlyZXN1bHQgPSBzdGF0ICgiJSVKQVZBX0hPTUUlJSIsICZzYik7CisJ
aWYgKHJlc3VsdCAhPSAwKSB7CisJCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKKwkJZnBy
aW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFVuYWJsZSB0byBzdGF0ICUl
SkFWQV9IT01FJSU6ICIpOworCQlwZXJyb3IgKE5VTEwpOworCQlleGl0IChFUlJfU1RBVF9KQVZB
X0hPTUUpOworCX0KKwlpZiAoIVNfSVNESVIgKHNiLnN0X21vZGUpKSB7CisJCWxvZ091dHB1dCAo
IiBbIEZBSUxFRCBdXG4iKTsKKwkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9O
QU1FJSU6IEphdmEgaG9tZSBkaXJlY3RvcnkgJSVKQVZBX0hPTUUlJSBpcyBub3QgYSBkaXJlY3Rv
cnkuXG4iKTsKKwkJZXhpdCAoRVJSX0pBVkFfSE9NRV9OT1RfRElSKTsKKwl9CisKKwkvKiBDaGVj
ayBpZiB0aGUgSmF2YSBjb21tYW5kIGlzIGFjdHVhbGx5IGFuIGV4ZWN1dGFibGUgcmVndWxhciBm
aWxlICovCisJcmVzdWx0ID0gc3RhdCAoIiUlSkFWQSUlIiwgJnNiKTsKKwlpZiAocmVzdWx0ICE9
IDApIHsKKwkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOworCQlmcHJpbnRmIChzdGRlcnIs
ICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5hYmxlIHRvIHN0YXQgJSVKQVZBJSU6ICIpOwor
CQlwZXJyb3IgKE5VTEwpOworCQlleGl0IChFUlJfU1RBVF9KQVZBX0NNRCk7CisJfQorCWlmICgh
U19JU1JFRyAoc2Iuc3RfbW9kZSkpIHsKKwkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOwor
CQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogSmF2YSBjb21tYW5k
ICUlSkFWQSUlIGlzIG5vdCBhIHJlZ3VsYXIgZmlsZS5cbiIpOworCQlleGl0IChFUlJfSkFWQV9D
TURfTk9UX0ZJTEUpOworCX0KKwlyZXN1bHQgPSBhY2Nlc3MgKCIlJUpBVkElJSIsIFhfT0spOwor
CWlmIChyZXN1bHQgIT0gMCkgeworCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7CisJCWZw
cmludGYgKHN0ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiBKYXZhIGNvbW1hbmQgJSVK
QVZBJSUgaXMgbm90IGV4ZWN1dGFibGU6ICIpOworCQlwZXJyb3IgKE5VTEwpOworCQlleGl0IChF
UlJfSkFWQV9DTURfTk9UX0VYRUNVVEFCTEUpOworCX0KKworCS8qIENoYW5nZSBkaXJlY3Rvcnkg
Ki8KKwlyZXN1bHQgPSBjaGRpciAoIiUlQVBQX0hPTUUlJSIpOworCWlmIChyZXN1bHQgPCAwKSB7
CisJCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKKwkJZnByaW50ZiAoc3RkZXJyLCAiJSVD
T05UUk9MX1NDUklQVF9OQU1FJSU6IFVuYWJsZSB0byBhY2Nlc3MgZGlyZWN0b3J5ICUlQVBQX0hP
TUUlJTogIik7CisJCXBlcnJvciAoTlVMTCk7CisJCWV4aXQgKEVSUl9DSERJUl9UT19BUFBfSE9N
RSk7CisJfQorCisJLyogU2VlIGlmIHRoZSBKQVIgZmlsZSBleGlzdHMgKi8KKwlyZXN1bHQgPSBh
Y2Nlc3MgKCIlJUFQUF9IT01FJSUvJSVKQVJfRklMRSUlIiwgUl9PSyk7CisJaWYgKHJlc3VsdCA8
IDApIHsKKwkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOworCQlmcHJpbnRmIChzdGRlcnIs
ICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5hYmxlIHRvIGFjY2VzcyBKQVIgZmlsZSAlJUFQ
UF9IT01FJSUvJSVKQVJfRklMRSUlOiAiKTsKKwkJcGVycm9yIChOVUxMKTsKKwkJZXhpdCAoRVJS
X0FDQ0VTU19KQVJfRklMRSk7CisJfQorCisJLyogT3BlbiB0aGUgc3Rkb3V0IGxvZyBmaWxlICov
CisJc3Rkb3V0TG9nRmlsZSA9IG9wZW4gKCIlJVNURE9VVF9MT0clJSIsIE9fV1JPTkxZKTsKKwlp
ZiAoc3Rkb3V0TG9nRmlsZSA8IDApIHsKKwkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOwor
CQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5hYmxlIHRvIG9w
ZW4gJSVTVERPVVRfTE9HJSUgZm9yIHdyaXRpbmc6ICIpOworCQlwZXJyb3IgKE5VTEwpOworCQll
eGl0IChFUlJfU1RET1VUX0xPR0ZJTEVfT1BFTik7CisJfQorCWxzZWVrIChzdGRvdXRMb2dGaWxl
LCAob2ZmX3QpIDAsIFNFRUtfRU5EKTsKKworCS8qIE9wZW4gdGhlIHN0ZGVyciBsb2cgZmlsZSAq
LworCXN0ZGVyckxvZ0ZpbGUgPSBvcGVuICgiJSVTVERFUlJfTE9HJSUiLCBPX1dST05MWSk7CisJ
aWYgKHN0ZGVyckxvZ0ZpbGUgPCAwKSB7CisJCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsK
KwkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFVuYWJsZSB0byBv
cGVuICUlU1RERVJSX0xPRyUlIGZvciB3cml0aW5nOiAiKTsKKwkJcGVycm9yIChOVUxMKTsKKwkJ
ZXhpdCAoRVJSX1NUREVSUl9MT0dGSUxFX09QRU4pOworCX0KKwlsc2VlayAoc3RkZXJyTG9nRmls
ZSwgKG9mZl90KSAwLCBTRUVLX0VORCk7CisKKwkvKiBTcGxpdCB0aGlzIHByb2Nlc3MgaW4gdHdv
ICovCisJc3dpdGNoIChwaWQgPSBmb3JrICgpKQorCXsKKwljYXNlIC0xOgorCQlsb2dPdXRwdXQg
KCIgWyBGQUlMRUQgXVxuIik7CisJCWZwcmludGYgKHN0ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRf
TkFNRSUlOiBVbmFibGUgdG8gZm9yazogIik7CisJCXBlcnJvciAoTlVMTCk7CisJCWV4aXQgKEVS
Ul9GT1JLX0ZBSUxFRCk7CisJCWJyZWFrOworCisJY2FzZSAwOgorCQkvKiBSZWRpcmVjdCBzdGRv
dXQgdG8gbG9nIGZpbGUgKi8KKwkJZHVwMiAoc3Rkb3V0TG9nRmlsZSwgU1RET1VUX0ZJTEVOTyk7
CisKKwkJLyogUmVkaXJlY3Qgc3RkZXJyIHRvIGxvZyBmaWxlICovCisJCWR1cDIgKHN0ZGVyckxv
Z0ZpbGUsIFNUREVSUl9GSUxFTk8pOworCisJCS8qIFRPRE86IFN1cHBvcnQgcmVkaXJlY3Rpb24g
b2YgYm90aCBzdGRvdXQgYW5kIHN0ZGVyciB0byB0aGUgc2FtZQorCQkJCSBmaWxlIHVzaW5nIHBp
cGUgKDIpICovCisKKwkJLyoKKwkJCUJ1aWxkIHRoZSBhcmd1bWVudCB2ZWN0b3IsIHdpdGggdGhl
IGphdmEvamJvc3Mgb3B0aW9ucyBpZiBhbnkuCisJCSAqLworCQlhcmd2ID0gbWFsbG9jIChzaXpl
b2YgKGNoYXIgKikgKiAoamF2YU9wdCArIGpib3NzT3B0ICsgNSkpOworCQlhcmdjID0gMDsKKwkJ
YXJndiBbYXJnYysrXSA9ICIlJUpBVkElJSI7CisJCWZvciAoaSA9IDA7IGkgPCBqYXZhT3B0OyBp
KyspCisJCQlhcmd2IFthcmdjKytdID0gamF2YUFyZ3MgW2ldOworCQlhcmd2IFthcmdjKytdID0g
Ii1jcCI7CisJCWFyZ3YgW2FyZ2MrK10gPSAiJSVKQVZBX0NQJSUiOworCQlhcmd2IFthcmdjKytd
ID0gIiUlSkFWQV9NQUlOJSUiOworCQlmb3IgKGkgPSAwOyBpIDwgamJvc3NPcHQ7IGkrKykKKwkJ
CWFyZ3YgW2FyZ2MrK10gPSBqYm9zc0FyZ3MgW2ldOworCQlhcmd2IFthcmdjKytdID0gTlVMTDsK
KworCQkvKiBFeGVjdXRlIHRoZSBjb21tYW5kICovCisJCWV4ZWN2IChhcmd2IFswXSwgYXJndik7
CisJCXBlcnJvciAoTlVMTCk7CisJCWJyZWFrOworCisJZGVmYXVsdDoKKwkJbG9nT3V0cHV0ICgi
IFsgRE9ORSBdXG4iKTsKKwkJd3JpdGVQSUQgKHBpZCk7CisJfQorfQorCisvKioKKyAqIFN0b3Bz
IHRoZSBkYWVtb24uCisgKi8KK3N0YXRpYyB2b2lkCitzdG9wICh2b2lkKQoreworCWludCBwaWQ7
CisKKwlwaWQgPSByZWFkUElEICgpOworCisJbG9nT3V0cHV0ICgiPj4gQ2hlY2tpbmcgaWYgJSVB
UFBfVElUTEUlJSAlJVBPUlRWRVJTSU9OJSUgaXMgcnVubmluZy4uLiIpOworCisJLyogSWYgdGhl
cmUgaXMgYSBQSUQsIHNlZSBpZiB0aGUgcHJvY2VzcyBzdGlsbCBleGlzdHMgKi8KKwlpZiAocGlk
ICE9IC0xKQorCXsKKwkJaW50IHJlc3VsdCA9IGtpbGwgKHBpZCwgMCk7CisJCWlmIChyZXN1bHQg
IT0gMCAmJiBlcnJubyA9PSBFU1JDSCkKKwkJeworCQkJY2xlYXJQSUQgKCk7CisJCQlwaWQgPSAt
MTsKKwkJfQorCX0KKworCS8qIElmIHRoZXJlIGlzIG5vIHJ1bm5pbmcgcHJvY2VzcywgcHJvZHVj
ZSBhbiBlcnJvciAqLworCWlmIChwaWQgPT0gLTEpCisJeworCQlsb2dPdXRwdXQgKCIgWyBGQUlM
RUQgXVxuIik7CisJCWZwcmludGYgKHN0ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiAl
JUFQUF9USVRMRSUlICUlUE9SVFZFUlNJT04lJSBpcyBjdXJyZW50bHkgbm90IHJ1bm5pbmcuXG4i
KTsKKwkJZXhpdCAoRVJSX05PVF9SVU5OSU5HKTsKKwl9CisJbG9nT3V0cHV0ICgiIFsgRE9ORSBd
XG4iKTsKKworCS8qIFRlcm1pbmF0ZSB0aGUgcHJvY2VzcyAqLworCWtpbGxQcm9jZXNzIChwaWQp
OworCWNsZWFyUElEICgpOworfQorCisKKy8qKgorICogUmVzdGFydHMgdGhlIHByb2Nlc3MuIElm
IGl0IG5vdCBjdXJyZW50bHkgcnVubmluZywgdGhlbiBpdCB3aWxsIGZhaWwuCisgKi8KK3N0YXRp
YyB2b2lkCityZXN0YXJ0ICgKKyBpbnQgamF2YU9wdCwKKyBjaGFyICogamF2YUFyZ3MgW10sCisg
aW50IGpib3NzT3B0LAorIGNoYXIgKiBqYm9zc0FyZ3MgW10pCit7CisJc3RvcCAoKTsKKwlzdGFy
dCAoamF2YU9wdCwgamF2YUFyZ3MsIGpib3NzT3B0LCBqYm9zc0FyZ3MpOworfQorCisvKioKKwlP
dXRwdXQgbG9nIHRvIHN0ZG91dC4KKyAqLworc3RhdGljIHZvaWQKK2xvZ091dHB1dCAoCisgY2hh
ciAqIHN0cmluZykKK3sKKwlpZiAoIWlzUXVpZXQpCisJCXByaW50ZiAoc3RyaW5nKTsKK30KSW5k
ZXg6IGZpbGVzL2pib3NzMy5zaC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBmaWxlcy9qYm9zczMu
c2guaW4KZGlmZiAtTiBmaWxlcy9qYm9zczMuc2guaW4KLS0tIC9kZXYvbnVsbAkxIEphbiAxOTcw
IDAwOjAwOjAwIC0wMDAwCisrKyBmaWxlcy9qYm9zczMuc2guaW4JMTMgSmFuIDIwMDUgMDE6NTU6
MTMgLTAwMDAKQEAgLTAsMCArMSw1OCBAQAorIyEvYmluL3NoCisjCisjICUlQVBQX1RJVExFJSUg
c3RhcnR1cCBzY3JpcHQuCisjCisjICRGcmVlQlNEOiBwb3J0cy9qYXZhL2pib3NzMy9maWxlcy9z
dGFydHVwLnNoLHYgMS4yIDIwMDUvMDEvMTMgMDE6NTU6MTMgaHEgRXhwICQKKyMKKworIyBQUk9W
SURFOiAlJUFQUF9TSE9SVE5BTUUlJQorIyBSRVFVSVJFOiBORVRXT1JLSU5HIFNFUlZFUlMKKwor
IyBBZGQgdGhlIGZvbGxvd2luZyBsaW5lcyB0byAvZXRjL3JjLmNvbmYgdG8gZW5hYmxlICUlQVBQ
X1NIT1JUTkFNRSUlOgorIyAlJUFQUF9TSE9SVE5BTUUlJV9lbmFibGUgKGJvb2wpOgkJU2V0IHRv
ICJOTyIgYnkgZGVmYXVsdC4KKyMJCQkJU2V0IGl0IHRvICJZRVMiIHRvIGVuYWJsZSAlJUFQUF9T
SE9SVE5BTUUlJQorIyAlJUFQUF9TSE9SVE5BTUUlJV9mbGFncyAoc3RyKToJCVNldCB0byAiLXNl
cnZlciIgYnkgZGVmYXVsdC4KKyMJCQkJRXh0cmEgSlZNIGZsYWdzLgorIyAlJUFQUF9TSE9SVE5B
TUUlJV9jb25maWcgKHN0cik6CQlTZXQgdG8gIiIgYnkgZGVmYXVsdAorIwkJCQlKQm9zcyBzZXJ2
ZXIgY29uZmlnLCBlZyB7YWxsfGRlZmF1bHR8bWluaW1hbHxzdGFuZGFyZH0KKyMKKy4gJSVSQ19T
VUJSJSUKKworbmFtZT0iJSVBUFBfU0hPUlROQU1FJSUiCityY3Zhcj1gc2V0X3JjdmFyYAorCitz
dGFydF9jbWQ9IiUlQVBQX1NIT1JUTkFNRSUlX3N0YXJ0IgorcmVzdGFydF9jbWQ9IiUlQVBQX1NI
T1JUTkFNRSUlX3Jlc3RhcnQiCitwaWRmaWxlPSIlJVBJRF9GSUxFJSUiCitwcm9jbmFtZT0iJSVK
QVZBJSUiCisKK1sgLXogIiQlJUFQUF9TSE9SVE5BTUUlJV9lbmFibGUiIF0JJiYgJSVBUFBfU0hP
UlROQU1FJSVfZW5hYmxlPSJOTyIKK1sgLXogIiQlJUFQUF9TSE9SVE5BTUUlJV9mbGFncyIgXQkm
JiAlJUFQUF9TSE9SVE5BTUUlJV9mbGFncz0iLXNlcnZlciIKK1sgLXogIiQlJUFQUF9TSE9SVE5B
TUUlJV9jb25maWciIF0JJiYgJSVBUFBfU0hPUlROQU1FJSVfY29uZmlnPSIiCisKKyUlQVBQX1NI
T1JUTkFNRSUlX3N0YXJ0ICgpCit7CisJY2hlY2t5ZXNubyAlJUFQUF9TSE9SVE5BTUUlJV9lbmFi
bGUgJiYKKwl7CisJCWlmIFsgISAtZiAke3BpZGZpbGV9IF0KKwkJdGhlbgorCQkJdG91Y2ggJHtw
aWRmaWxlfQorCQkJY2hvd24gJSVVU0VSJSU6JSVHUk9VUCUlICR7cGlkZmlsZX0KKwkJZmkKKwor
CQklJUNPTlRST0xfU0NSSVBUJSUgLXEgJHslJUFQUF9TSE9SVE5BTUUlJV9mbGFnc30gJHslJUFQ
UF9TSE9SVE5BTUUlJV9jb25maWdmbGFnfSAkeyUlQVBQX1NIT1JUTkFNRSUlX2NvbmZpZ30gc3Rh
cnQgJiYKKwkJZWNobyAtbiAiICUlQVBQX1NIT1JUTkFNRSUlIgorCX0KK30KKworJSVBUFBfU0hP
UlROQU1FJSVfcmVzdGFydCAoKQoreworCWNoZWNreWVzbm8gJSVBUFBfU0hPUlROQU1FJSVfZW5h
YmxlICYmCisJCSUlQ09OVFJPTF9TQ1JJUFQlJSAtcSAkeyUlQVBQX1NIT1JUTkFNRSUlX2ZsYWdz
fSAkeyUlQVBQX1NIT1JUTkFNRSUlX2NvbmZpZ2ZsYWd9ICR7JSVBUFBfU0hPUlROQU1FJSVfY29u
ZmlnfSByZXN0YXJ0Cit9CisKK2xvYWRfcmNfY29uZmlnICRuYW1lCisKK1sgLW4gIiR7JSVBUFBf
U0hPUlROQU1FJSVfY29uZmlnfSIgXSAmJiAlJUFQUF9TSE9SVE5BTUUlJV9jb25maWdmbGFnPSIt
Y29uZmlnIgorCitydW5fcmNfY29tbWFuZCAiJDEiCkluZGV4OiBmaWxlcy9wYXRjaC1idWlsZC54
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpSQ1MgZmlsZTogZmlsZXMvcGF0Y2gtYnVpbGQueG1sCmRpZmYgLU4gZmls
ZXMvcGF0Y2gtYnVpbGQueG1sCi0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAw
MAorKysgZmlsZXMvcGF0Y2gtYnVpbGQueG1sCTI1IE1hciAyMDA3IDE1OjA1OjIzIC0wMDAwCkBA
IC0wLDAgKzEsMzggQEAKKy0tLSAuL2J1aWxkL2J1aWxkLnhtbC5vcmlnCVN1biBNYXIgMjUgMjI6
NTU6MjAgMjAwNworKysrIC4vYnVpbGQvYnVpbGQueG1sCVN1biBNYXIgMjUgMjI6NTg6NTcgMjAw
NworQEAgLTQzLDYgKzQzLDM1IEBACisgICAgLS0+CisgCisgICA8dGFyZ2V0IG5hbWU9ImluaXQi
IHVubGVzcz0iaW5pdC5kaXNhYmxlIiBkZXBlbmRzPSJfYnVpbGRtYWdpYzppbml0Ij4KKysgIDwh
LS0gTWFrZSBzdXJlIHdlIGhhdmUgdGhlIHJpZ2h0IHZlcnNpb24gb2YgQW50IC0tPgorKyAgPHBy
b3BlcnR5IG5hbWU9ImJ1aWxkbWFnaWMuYW50MTUuYmFzZXZlcnNpb24iIHZhbHVlPSIxLjUiLz4K
KysgIDxwcm9wZXJ0eSBuYW1lPSJidWlsZG1hZ2ljLmFudDE2LmJhc2V2ZXJzaW9uIiB2YWx1ZT0i
MS42Ii8+CisrICA8cHJvcGVydHkgbmFtZT0iYnVpbGRtYWdpYy5hbnQxNi5iYXNldmVyc2lvbiIg
dmFsdWU9IjEuNyIvPgorKyAgPCEtLQorKyAgICAgIHwgQWRkIG5ldyBjb25kaXRpb25zIGZvciBv
dGhlciBzdXBwb3J0ZWQgQW50IHZlcnNpb25zIHdoZW4gdGhleQorKyAgICAgIHwgYmVjb21lIGF2
YWlhbGJsZS4KKysgICAtLT4KKysKKysgICA8Y29uZGl0aW9uIHByb3BlcnR5PSJidWlsZG1hZ2lj
LmFudC5jb21wYXRpYmxlIj4KKysgICAgIDxvcj4KKysgICAgICAgIDxjb250YWlucyBzdHJpbmc9
IiR7YW50LnZlcnNpb259IgorKwkJICBzdWJzdHJpbmc9IkFudCB2ZXJzaW9uICR7YnVpbGRtYWdp
Yy5hbnQxNS5iYXNldmVyc2lvbn0iLz4KKysJPGNvbnRhaW5zIHN0cmluZz0iJHthbnQudmVyc2lv
bn0iCisrCSAgICAJICBzdWJzdHJpbmc9IkFudCB2ZXJzaW9uICR7YnVpbGRtYWdpYy5hbnQxNi5i
YXNldmVyc2lvbn0iLz4KKysJPGNvbnRhaW5zIHN0cmluZz0iJHthbnQudmVyc2lvbn0iCisrCSAg
ICAgICAgICBzdWJzdHJpbmc9IkFudCB2ZXJzaW9uICR7YnVpbGRtYWdpYy5hbnQxNy5iYXNldmVy
c2lvbn0iLz4KKysgICAgIDwvb3I+CisrICAgPC9jb25kaXRpb24+CisrCisrICAgPGZhaWwgdW5s
ZXNzPSJidWlsZG1hZ2ljLmFudC5jb21wYXRpYmxlIj4KKysKKysgICAgICBVbnN1cHBvcnRlZCBB
bnQgdmVyc2lvbjoKKysKKysgICAgICAgJHthbnQudmVyc2lvbn0KKysKKysgICAgICBQbGVhc2Ug
aW5zdGFsbCBhIHZlcnNpb24gd2hpY2ggaXMgY29tcGF0aWJsZSB3aXRoIEFudCAke2J1aWxkbWFn
aWMuYW50MTUuYmFzZXZlcnNpb259IG9yICR7YnVpbGRtYWdpYy5hbnQxNi5iYXNldmVyc2lvbn0g
b3IgJHtidWlsZG1hZ2ljLmFudDE3LmJhc2V2ZXJzaW9ufS4KKysKKysgICA8L2ZhaWw+CisgICA8
L3RhcmdldD4KKyAKKyAKSW5kZXg6IGZpbGVzL3BhdGNoLWJ1aWxkbWFnaWMuZW50Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KUkNTIGZpbGU6IGZpbGVzL3BhdGNoLWJ1aWxkbWFnaWMuZW50CmRpZmYgLU4gZmlsZXMvcGF0
Y2gtYnVpbGRtYWdpYy5lbnQKLS0tIC9kZXYvbnVsbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAw
CisrKyBmaWxlcy9wYXRjaC1idWlsZG1hZ2ljLmVudAkyNSBNYXIgMjAwNyAxNTowMTo1OCAtMDAw
MApAQCAtMCwwICsxLDM3IEBACistLS0gLi90b29scy9ldGMvYnVpbGRtYWdpYy9idWlsZG1hZ2lj
LmVudC5vcmlnCVN1biBNYXIgMjUgMjI6NTM6NTEgMjAwNworKysrIC4vdG9vbHMvZXRjL2J1aWxk
bWFnaWMvYnVpbGRtYWdpYy5lbnQJU3VuIE1hciAyNSAyMjo1NDoyMSAyMDA3CitAQCAtNywzNCAr
Nyw2IEBACisgPCEtLSBJbml0aWFsaXplIHRoZSBidWlsZCBzeXN0ZW0uIC0tPgorIDx0YXJnZXQg
bmFtZT0iX2J1aWxkbWFnaWM6aW5pdCIgdW5sZXNzPSJpbml0LmRpc2FibGUiPgorIAorLSAgPCEt
LSBNYWtlIHN1cmUgd2UgaGF2ZSB0aGUgcmlnaHQgdmVyc2lvbiBvZiBBbnQgLS0+CistICA8cHJv
cGVydHkgbmFtZT0iYnVpbGRtYWdpYy5hbnQxNS5iYXNldmVyc2lvbiIgdmFsdWU9IjEuNSIvPgor
LSAgPHByb3BlcnR5IG5hbWU9ImJ1aWxkbWFnaWMuYW50MTYuYmFzZXZlcnNpb24iIHZhbHVlPSIx
LjYiLz4KKy0KKy0gIDwhLS0KKy0gICAgIHwgQWRkIG5ldyBjb25kaXRpb25zIGZvciBvdGhlciBz
dXBwb3J0ZWQgQW50IHZlcnNpb25zIHdoZW4gdGhleQorLSAgICAgfCBiZWNvbWUgYXZhaWFsYmxl
LgorLSAgIC0tPgorLQorLSAgPGNvbmRpdGlvbiBwcm9wZXJ0eT0iYnVpbGRtYWdpYy5hbnQuY29t
cGF0aWJsZSI+CistICAgIDxvcj4KKy0gICAgICA8Y29udGFpbnMgc3RyaW5nPSIke2FudC52ZXJz
aW9ufSIKKy0gICAgICAgIHN1YnN0cmluZz0iQW50IHZlcnNpb24gJHtidWlsZG1hZ2ljLmFudDE1
LmJhc2V2ZXJzaW9ufSIvPgorLSAgICAgIDxjb250YWlucyBzdHJpbmc9IiR7YW50LnZlcnNpb259
IgorLSAgICAgICAgc3Vic3RyaW5nPSJBbnQgdmVyc2lvbiAke2J1aWxkbWFnaWMuYW50MTYuYmFz
ZXZlcnNpb259Ii8+CistICAgIDwvb3I+CistICA8L2NvbmRpdGlvbj4KKy0KKy0gIDxmYWlsIHVu
bGVzcz0iYnVpbGRtYWdpYy5hbnQuY29tcGF0aWJsZSI+CistCistICBVbnN1cHBvcnRlZCBBbnQg
dmVyc2lvbjoKKy0KKy0gICAgJHthbnQudmVyc2lvbn0KKy0KKy0gIFBsZWFzZSBpbnN0YWxsIGEg
dmVyc2lvbiB3aGljaCBpcyBjb21wYXRpYmxlIHdpdGggQW50ICR7YnVpbGRtYWdpYy5hbnQxNS5i
YXNldmVyc2lvbn0gb3IgJHtidWlsZG1hZ2ljLmFudDE2LmJhc2V2ZXJzaW9ufS4KKy0KKy0gIDwv
ZmFpbD4KKy0KKyAgIDwhLS0gSkRLIERldGVjdGlvbiAtLT4KKyAgIDxhdmFpbGFibGUgY2xhc3Nu
YW1lPSJqYXZhLmxhbmcuU3RyaWN0TWF0aCIgcHJvcGVydHk9IkhBVkVfSkRLXzEuMyIvPgorICAg
PGF2YWlsYWJsZSBjbGFzc25hbWU9ImphdmEubGFuZy5TdGFja1RyYWNlRWxlbWVudCIgcHJvcGVy
dHk9IkhBVkVfSkRLXzEuNCIvPgpJbmRleDogZmlsZXMvcGtnLWRlaW5zdGFsbC5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ClJDUyBmaWxlOiBmaWxlcy9wa2ctZGVpbnN0YWxsLmluCmRpZmYgLU4gZmlsZXMvcGtnLWRl
aW5zdGFsbC5pbgotLS0gL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIGZp
bGVzL3BrZy1kZWluc3RhbGwuaW4JMTQgSnVsIDIwMDMgMTA6MDM6MTMgLTAwMDAKQEAgLTAsMCAr
MSwzNSBAQAorIyEvYmluL3NoCisjCisjIFRoaXMgc2NyaXB0IGRvZXMgdGhlIGZvbGxvd2luZy4K
KyMKKyMgKiBDaGVja3MgaWYgdGhlIEpCb3NzIFBJRCBmaWxlIGV4aXN0cy4gSWYgaXQgZG9lcywg
aXQga2lsbHMgdGhlCisjICAgSkJvc3MgcHJvY2VzcyBhbmQgcmVtb3ZlcyB0aGUgUElEIGZpbGUu
CisjCisjICRGcmVlQlNEOiBwb3J0cy9qYXZhL2pib3NzMy9wa2ctZGVpbnN0YWxsLHYgMS4yIDIw
MDMvMDcvMTQgMTA6MDM6MTMgZGVzIEV4cCAkCisjCisKKyMgTWFrZSBzdXJlIHdlJ3JlIGluIHRo
ZSByaWdodCBzdGFnZSBvZiB0aGUgcHJvY2VzcworaWYgWyAiJDIiID0gIkRFSU5TVEFMTCIgXTsg
dGhlbgorCisJIyBLaWxsIEpCb3NzIGlmIGl0IGlzIHN0aWxsIHJ1bm5pbmcKKwlQSURfRklMRT0v
dmFyL3J1bi9qYm9zcy5waWQKKwlpZiBbIC1zICR7UElEX0ZJTEV9IF07IHRoZW4KKwkJUElEPWBj
YXQgJHtQSURfRklMRX1gCisJCWVjaG8gLW4gIj4+IEtpbGxpbmcgSkJvc3MgU2VydmVyIHByb2Nl
c3MgKCR7UElEfSkuLi4iCisJCS9iaW4va2lsbCAke1BJRH0gPiAvZGV2L251bGwgMj4gL2Rldi9u
dWxsCisJCWlmIFsgJD8gLWVxIDAgXTsgdGhlbgorCQkJZWNobyAiIFsgRE9ORSBdIgorCQllbHNl
CisJCQllY2hvICIgWyBGQUlMRUQgXSIKKwkJZmkKKwkJZWNobyAtbiAiPj4gUmVtb3ZpbmcgUElE
IGZpbGUgKCR7UElEX0ZJTEV9KS4uLiIKKwkJcm0gJHtQSURfRklMRX0gPiAvZGV2L251bGwgMj4g
L2Rldi9udWxsCisJCWlmIFsgJD8gLWVxIDAgXTsgdGhlbgorCQkJZWNobyAiIFsgRE9ORSBdIgor
CQllbHNlCisJCQllY2hvICIgWyBGQUlMRUQgXSIKKwkJZmkKKwlmaQorZmkKKworZXhpdCAwCklu
ZGV4OiBmaWxlcy9wa2ctaW5zdGFsbC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBmaWxlcy9wa2ct
aW5zdGFsbC5pbgpkaWZmIC1OIGZpbGVzL3BrZy1pbnN0YWxsLmluCi0tLSAvZGV2L251bGwJMSBK
YW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgZmlsZXMvcGtnLWluc3RhbGwuaW4JMjYgQXByIDIw
MDIgMjE6NTQ6MTUgLTAwMDAKQEAgLTAsMCArMSw0NiBAQAorIyEvYmluL3NoCisjCisjIENoZWNr
cyBpZiB0aGUgJ3d3dycgdXNlciBhbmQgZ3JvdXAgZXhpc3QuIElmIHRoZXkgZG9uJ3QsIHRoZW4K
KyMgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIGNyZWF0ZSBib3RoLgorIworIyAkRnJlZUJTRDogcG9y
dHMvamF2YS9qYm9zczMvcGtnLWluc3RhbGwsdiAxLjEgMjAwMi8wNC8yNiAyMTo1NDoxNSB6bmVy
ZCBFeHAgJAorIworCisjIE1ha2Ugc3VyZSB3ZSdyZSBjYWxsZWQgZHVyaW5nIHRoZSAnbWFrZSBp
bnN0YWxsJyBwcm9jZXNzCitpZiBbICIkMiIgIT0gIlBSRS1JTlNUQUxMIiBdOyB0aGVuCisgICAg
ZXhpdCAwCitmaQorCisjIFNldCBzb21lIGNvbnN0YW50cworVVNFUj13d3cKK0dST1VQPSR7VVNF
Un0KK1VJRD04MAorR0lEPSR7VUlEfQorCisjIFNlZSBpZiB0aGUgZ3JvdXAgYWxyZWFkeSBleGlz
dHMKK2lmICEgcHcgZ3JvdXBzaG93ICIke0dST1VQfSIgMj4vZGV2L251bGwgMT4mMjsgdGhlbgor
CisJIyBJZiBub3QsIHRyeSB0byBjcmVhdGUgaXQKKwlpZiBwdyBncm91cGFkZCAke0dST1VQfSAt
ZyAke0dJRH07IHRoZW4KKwkJZWNobyAiQWRkZWQgZ3JvdXAgXCIke0dST1VQfVwiLiIKKwllbHNl
CisJCWVjaG8gIkFkZGluZyBncm91cCBcIiR7R1JPVVB9XCIgZmFpbGVkLi4uIgorCQlleGl0IDEK
KwlmaQorZmkKKworIyBTZWUgaWYgdGhlIHVzZXIgYWxyZWFkeSBleGlzdHMKK2lmICEgcHcgdXNl
cnNob3cgIiR7VVNFUn0iIDI+L2Rldi9udWxsIDE+JjI7IHRoZW4KKworCSMgSWYgbm90LCB0cnkg
dG8gY3JlYXRlIGl0CisJaWYgcHcgdXNlcmFkZCAke1VTRVJ9IC11ICR7VUlEfSAtZyAke0dST1VQ
fSAtaCAtIFwKKwkJLXMgIi9zYmluL25vbG9naW4iIC1kICIvbm9uZXhpc3RlbnQiIFwKKwkJLWMg
IldvcmxkIFdpZGUgV2ViIE93bmVyIjsgXAorCXRoZW4KKwkJZWNobyAiQWRkZWQgdXNlciBcIiR7
VVNFUn1cIi4iCisJZWxzZQorCQllY2hvICJBZGRpbmcgdXNlciBcIiR7VVNFUn1cIiBmYWlsZWQu
Li4iCisJCWV4aXQgMQorCWZpCitmaQorZXhpdCAwCkluZGV4OiBmaWxlcy9wa2ctbWVzc2FnZQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09ClJDUyBmaWxlOiBmaWxlcy9wa2ctbWVzc2FnZQpkaWZmIC1OIGZpbGVzL3BrZy1t
ZXNzYWdlCi0tLSBmaWxlcy9wa2ctbWVzc2FnZQkxMyBKYW4gMjAwNSAwMTo1NToxMyAtMDAwMAkx
LjEKKysrIC9kZXYvbnVsbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCkBAIC0xLDcgKzAsMCBA
QAotJSVQS0dOQU1FJSUgaGFzIGJlZW4gaW5zdGFsbGVkIGluICUlQVBQX0hPTUUlJS4KLQotSWYg
YSB1c2VyIHNob3VsZCBiZSBhYmxlIHRvIHVzZSAlJUNPTlRST0xfU0NSSVBUX05BTUUlJSwgcHV0
IGl0IGluIHRoZSBncm91cCAnJSVHUk9VUCUlJy4KLQotVXNlICdtYW4gJSVDT05UUk9MX1NDUklQ
VF9OQU1FJSUnIGZvciBpbmZvcm1hdGlvbiBhYm91dCBzdGFydGluZyBhbmQgc3RvcHBpbmcgJSVB
UFBfVElUTEUlJS4KLQotVG8gcnVuIHRoZSAlJUFQUF9USVRMRSUlIHNlcnZlciBmcm9tIHN0YXJ0
dXAsIGFkZCAlJUFQUF9TSE9SVE5BTUUlJV9lbmFibGU9IllFUyIgaW4geW91ciAvZXRjL3JjLmNv
bmYuIEV4dHJhIG9wdGlvbnMgY2FuIGJlIGZvdW5kIGluIHRoZSBzdGFydHVwIHNjcmlwdC4KSW5k
ZXg6IGZpbGVzL3BrZy1tZXNzYWdlLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IGZpbGVzL3BrZy1t
ZXNzYWdlLmluCmRpZmYgLU4gZmlsZXMvcGtnLW1lc3NhZ2UuaW4KLS0tIC9kZXYvbnVsbAkxIEph
biAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBmaWxlcy9wa2ctbWVzc2FnZS5pbgkxMyBKYW4gMjAw
NSAwMTo1NToxMyAtMDAwMApAQCAtMCwwICsxLDcgQEAKKyUlUEtHTkFNRSUlIGhhcyBiZWVuIGlu
c3RhbGxlZCBpbiAlJUFQUF9IT01FJSUuCisKK0lmIGEgdXNlciBzaG91bGQgYmUgYWJsZSB0byB1
c2UgJSVDT05UUk9MX1NDUklQVF9OQU1FJSUsIHB1dCBpdCBpbiB0aGUgZ3JvdXAgJyUlR1JPVVAl
JScuCisKK1VzZSAnbWFuICUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlJyBmb3IgaW5mb3JtYXRpb24g
YWJvdXQgc3RhcnRpbmcgYW5kIHN0b3BwaW5nICUlQVBQX1RJVExFJSUuCisKK1RvIHJ1biB0aGUg
JSVBUFBfVElUTEUlJSBzZXJ2ZXIgZnJvbSBzdGFydHVwLCBhZGQgJSVBUFBfU0hPUlROQU1FJSVf
ZW5hYmxlPSJZRVMiIGluIHlvdXIgL2V0Yy9yYy5jb25mLiBFeHRyYSBvcHRpb25zIGNhbiBiZSBm
b3VuZCBpbiB0aGUgc3RhcnR1cCBzY3JpcHQuCkluZGV4OiBmaWxlcy9zdGFydHVwLnNoCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IGZpbGVzL3N0YXJ0dXAuc2gKZGlmZiAtTiBmaWxlcy9zdGFydHVwLnNo
Ci0tLSBmaWxlcy9zdGFydHVwLnNoCTEzIEphbiAyMDA1IDAxOjU1OjEzIC0wMDAwCTEuMgorKysg
L2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKQEAgLTEsNTggKzAsMCBAQAotIyEv
YmluL3NoCi0jCi0jICUlQVBQX1RJVExFJSUgc3RhcnR1cCBzY3JpcHQuCi0jCi0jICRGcmVlQlNE
OiBwb3J0cy9qYXZhL2pib3NzMy9maWxlcy9zdGFydHVwLnNoLHYgMS4yIDIwMDUvMDEvMTMgMDE6
NTU6MTMgaHEgRXhwICQKLSMKLQotIyBQUk9WSURFOiAlJUFQUF9TSE9SVE5BTUUlJQotIyBSRVFV
SVJFOiBORVRXT1JLSU5HIFNFUlZFUlMKLQotIyBBZGQgdGhlIGZvbGxvd2luZyBsaW5lcyB0byAv
ZXRjL3JjLmNvbmYgdG8gZW5hYmxlICUlQVBQX1NIT1JUTkFNRSUlOgotIyAlJUFQUF9TSE9SVE5B
TUUlJV9lbmFibGUgKGJvb2wpOgkJU2V0IHRvICJOTyIgYnkgZGVmYXVsdC4KLSMJCQkJU2V0IGl0
IHRvICJZRVMiIHRvIGVuYWJsZSAlJUFQUF9TSE9SVE5BTUUlJQotIyAlJUFQUF9TSE9SVE5BTUUl
JV9mbGFncyAoc3RyKToJCVNldCB0byAiLXNlcnZlciIgYnkgZGVmYXVsdC4KLSMJCQkJRXh0cmEg
SlZNIGZsYWdzLgotIyAlJUFQUF9TSE9SVE5BTUUlJV9jb25maWcgKHN0cik6CQlTZXQgdG8gIiIg
YnkgZGVmYXVsdAotIwkJCQlKQm9zcyBzZXJ2ZXIgY29uZmlnLCBlZyB7YWxsfGRlZmF1bHR8bWlu
aW1hbHxzdGFuZGFyZH0KLSMKLS4gJSVSQ19TVUJSJSUKLQotbmFtZT0iJSVBUFBfU0hPUlROQU1F
JSUiCi1yY3Zhcj1gc2V0X3JjdmFyYAotCi1zdGFydF9jbWQ9IiUlQVBQX1NIT1JUTkFNRSUlX3N0
YXJ0IgotcmVzdGFydF9jbWQ9IiUlQVBQX1NIT1JUTkFNRSUlX3Jlc3RhcnQiCi1waWRmaWxlPSIl
JVBJRF9GSUxFJSUiCi1wcm9jbmFtZT0iJSVKQVZBJSUiCi0KLVsgLXogIiQlJUFQUF9TSE9SVE5B
TUUlJV9lbmFibGUiIF0JJiYgJSVBUFBfU0hPUlROQU1FJSVfZW5hYmxlPSJOTyIKLVsgLXogIiQl
JUFQUF9TSE9SVE5BTUUlJV9mbGFncyIgXQkmJiAlJUFQUF9TSE9SVE5BTUUlJV9mbGFncz0iLXNl
cnZlciIKLVsgLXogIiQlJUFQUF9TSE9SVE5BTUUlJV9jb25maWciIF0JJiYgJSVBUFBfU0hPUlRO
QU1FJSVfY29uZmlnPSIiCi0KLSUlQVBQX1NIT1JUTkFNRSUlX3N0YXJ0ICgpCi17Ci0JY2hlY2t5
ZXNubyAlJUFQUF9TSE9SVE5BTUUlJV9lbmFibGUgJiYKLQl7Ci0JCWlmIFsgISAtZiAke3BpZGZp
bGV9IF0KLQkJdGhlbgotCQkJdG91Y2ggJHtwaWRmaWxlfQotCQkJY2hvd24gJSVVU0VSJSU6JSVH
Uk9VUCUlICR7cGlkZmlsZX0KLQkJZmkKLQotCQklJUNPTlRST0xfU0NSSVBUJSUgLXEgJHslJUFQ
UF9TSE9SVE5BTUUlJV9mbGFnc30gJHslJUFQUF9TSE9SVE5BTUUlJV9jb25maWdmbGFnfSAkeyUl
QVBQX1NIT1JUTkFNRSUlX2NvbmZpZ30gc3RhcnQgJiYKLQkJZWNobyAtbiAiICUlQVBQX1NIT1JU
TkFNRSUlIgotCX0KLX0KLQotJSVBUFBfU0hPUlROQU1FJSVfcmVzdGFydCAoKQotewotCWNoZWNr
eWVzbm8gJSVBUFBfU0hPUlROQU1FJSVfZW5hYmxlICYmCi0JCSUlQ09OVFJPTF9TQ1JJUFQlJSAt
cSAkeyUlQVBQX1NIT1JUTkFNRSUlX2ZsYWdzfSAkeyUlQVBQX1NIT1JUTkFNRSUlX2NvbmZpZ2Zs
YWd9ICR7JSVBUFBfU0hPUlROQU1FJSVfY29uZmlnfSByZXN0YXJ0Ci19Ci0KLWxvYWRfcmNfY29u
ZmlnICRuYW1lCi0KLVsgLW4gIiR7JSVBUFBfU0hPUlROQU1FJSVfY29uZmlnfSIgXSAmJiAlJUFQ
UF9TSE9SVE5BTUUlJV9jb25maWdmbGFnPSItY29uZmlnIgotCi1ydW5fcmNfY29tbWFuZCAiJDEi
Cg==
------=_Part_225893_17557009.1174837310764--
More information about the freebsd-ports-bugs
mailing list