lkcd kernel patch for linux kernel 2.4. for x86_64

"Sanjay Kumar" <[email protected]> Wed, 7 Jul 2004 09:22:45 +0530
Newsgroups gmane.linux.lkcd.general
Message-ID <33BC33A9E76474479B76AD0DE8A16972FE72@exch-ntd.nec.noida.hcltech.com>
This is a multi-part message in MIME format.

------_=_NextPart_001_01C463D5.DCAC6B0C
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Hello Everybody
please find attached lkcd kernel 2.4 patch for x86_64.

follow these steps to apply the patch:
1. extract lkcd kernel code from LKCD CVS dated 2004-05-22.=20
2. Download 2.4.21 kernel from kernel.org.
3. copy the lkcd cvs code to the linux 2.4.21 kernel.
4. Apply the lkcd-kernel-x86_64.patch on top of it.
5. build the kernel and boot.

Please provide feedback on patch.
I have tested this patch on AMD opterorn dual processor machine with 512 =
MB of RAM.

To Do:
=3D=3D=3D=3D=3D=3D=3D
Currently working on lkcdutils to analyse the dump generated by above =
patch.



thanks and regards
sanjay    =20
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Contributing to the World by creating indispensable value !

System Software CoE @ HCLT-Noida
http://www.hcltechnologies.com
Ph. : +91-120-2510701/702=20
FAX : +91-120-2510713=20
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=20

------_=_NextPart_001_01C463D5.DCAC6B0C
Content-Type: application/octet-stream;
	name="lkcd-kernel-x86_64.patch"
Content-Transfer-Encoding: base64
Content-Description: lkcd-kernel-x86_64.patch
Content-Disposition: attachment;
	filename="lkcd-kernel-x86_64.patch"

ZGlmZiAtTmF1ciBsaW51eC0yLjQuMjFfbGtjZC9hcmNoL3g4Nl82NC9ib290L2luc3RhbGwuc2gg
bGtjZF9saW51eF94ODZfNjQvYXJjaC94ODZfNjQvYm9vdC9pbnN0YWxsLnNoCi0tLSBsaW51eC0y
LjQuMjFfbGtjZC9hcmNoL3g4Nl82NC9ib290L2luc3RhbGwuc2gJMjAwMi0xMS0yOSAwNToyMzox
Mi4wMDAwMDAwMDAgKzA1MzAKKysrIGxrY2RfbGludXhfeDg2XzY0L2FyY2gveDg2XzY0L2Jvb3Qv
aW5zdGFsbC5zaAkyMDA0LTA3LTAxIDIwOjM2OjAzLjAwMDAwMDAwMCArMDUzMApAQCAtMTYsNyAr
MTYsOCBAQAogIyAgICQxIC0ga2VybmVsIHZlcnNpb24KICMgICAkMiAtIGtlcm5lbCBpbWFnZSBm
aWxlCiAjICAgJDMgLSBrZXJuZWwgbWFwIGZpbGUKLSMgICAkNCAtIGRlZmF1bHQgaW5zdGFsbCBw
YXRoIChibGFuayBpZiByb290IGRpcmVjdG9yeSkKKyMgICAkNCAtIGtlcm5lbCB0eXBlIGZpbGUK
KyMgICAkNSAtIGRlZmF1bHQgaW5zdGFsbCBwYXRoIChibGFuayBpZiByb290IGRpcmVjdG9yeSkg
CiAjCiAKICMgVXNlciBtYXkgaGF2ZSBhIGN1c3RvbSBpbnN0YWxsIHNjcmlwdApAQCAtMjUsMTUg
KzI2LDIxIEBACiAKICMgRGVmYXVsdCBpbnN0YWxsIC0gc2FtZSBhcyBtYWtlIHpsaWxvCiAKLWlm
IFsgLWYgJDQvdm1saW51eiBdOyB0aGVuCi0JbXYgJDQvdm1saW51eiAkNC92bWxpbnV6Lm9sZAor
aWYgWyAtZiAkNS92bWxpbnV6IF07IHRoZW4JCQkKKwltdiAkNS92bWxpbnV6ICQ0L3ZtbGludXou
b2xkCQogZmkKIAotaWYgWyAtZiAkNC9TeXN0ZW0ubWFwIF07IHRoZW4KLQltdiAkNC9TeXN0ZW0u
bWFwICQ0L1N5c3RlbS5vbGQKK2lmIFsgLWYgJDUvU3lzdGVtLm1hcCBdOyB0aGVuIAkKKwltdiAk
NS9TeXN0ZW0ubWFwICQ0L1N5c3RlbS5vbGQKIGZpCiAKLWNhdCAkMiA+ICQ0L3ZtbGludXoKLWNw
ICQzICQ0L1N5c3RlbS5tYXAKK2lmIFsgLWYgJDUvS2VybnR5cGVzIF07IHRoZW4KKwltdiAkNS9L
ZXJudHlwZXMgJDUvS2VybnR5cGVzLm9sZAorZmkKKworY2F0ICQyID4gJDUvdm1saW51egorY3Ag
JDMgJDUvU3lzdGVtLm1hcAorY3AgJDQgJDUvS2VybnR5cGVzCisKIAogaWYgWyAteCAvc2Jpbi9s
aWxvIF07IHRoZW4gL3NiaW4vbGlsbzsgZWxzZSAvZXRjL2xpbG8vaW5zdGFsbDsgZmkKZGlmZiAt
TmF1ciBsaW51eC0yLjQuMjFfbGtjZC9hcmNoL3g4Nl82NC9ib290L01ha2VmaWxlIGxrY2RfbGlu
dXhfeDg2XzY0L2FyY2gveDg2XzY0L2Jvb3QvTWFrZWZpbGUKLS0tIGxpbnV4LTIuNC4yMV9sa2Nk
L2FyY2gveDg2XzY0L2Jvb3QvTWFrZWZpbGUJMjAwMi0xMS0yOSAwNToyMzoxMi4wMDAwMDAwMDAg
KzA1MzAKKysrIGxrY2RfbGludXhfeDg2XzY0L2FyY2gveDg2XzY0L2Jvb3QvTWFrZWZpbGUJMjAw
NC0wNy0wMSAyMDozNzo0Ny4wMDAwMDAwMDAgKzA1MzAKQEAgLTM1LDEyICszNSwxNCBAQAogemxp
bG86ICQoQ09ORklHVVJFKSAkKEJPT1RJTUFHRSkKIAlpZiBbIC1mICQoSU5TVEFMTF9QQVRIKS92
bWxpbnV6IF07IHRoZW4gbXYgJChJTlNUQUxMX1BBVEgpL3ZtbGludXogJChJTlNUQUxMX1BBVEgp
L3ZtbGludXoub2xkOyBmaQogCWlmIFsgLWYgJChJTlNUQUxMX1BBVEgpL1N5c3RlbS5tYXAgXTsg
dGhlbiBtdiAkKElOU1RBTExfUEFUSCkvU3lzdGVtLm1hcCAkKElOU1RBTExfUEFUSCkvU3lzdGVt
Lm9sZDsgZmkKKwlpZiBbIC1mICQoSU5TVEFMTF9QQVRIKS9LZXJudHlwZXMgXTsgdGhlbiBtdiAk
KElOU1RBTExfUEFUSCkvS2VybnR5cGVzICQoSU5TVEFMTF9QQVRIKS9LZXJudHlwZXMub2xkOyBm
aQogCWNhdCAkKEJPT1RJTUFHRSkgPiAkKElOU1RBTExfUEFUSCkvdm1saW51egogCWNwICQoVE9Q
RElSKS9TeXN0ZW0ubWFwICQoSU5TVEFMTF9QQVRIKS8KKwljcCAkKFRPUERJUikvS2VybnR5cGVz
ICQoSU5TVEFMTF9QQVRIKS8KIAlpZiBbIC14IC9zYmluL2xpbG8gXTsgdGhlbiAvc2Jpbi9saWxv
OyBlbHNlIC9ldGMvbGlsby9pbnN0YWxsOyBmaQogCiBpbnN0YWxsOiAkKENPTkZJR1VSRSkgJChC
T09USU1BR0UpCi0Jc2ggLXggLi9pbnN0YWxsLnNoICQoS0VSTkVMUkVMRUFTRSkgJChCT09USU1B
R0UpICQoVE9QRElSKS9TeXN0ZW0ubWFwICIkKElOU1RBTExfUEFUSCkiCisJc2ggLXggLi9pbnN0
YWxsLnNoICQoS0VSTkVMUkVMRUFTRSkgJChCT09USU1BR0UpICQoVE9QRElSKS9TeXN0ZW0ubWFw
ICQoVE9QRElSKS9LZXJudHlwZXMgIiQoSU5TVEFMTF9QQVRIKSIKIAogdG9vbHMvYnVpbGQ6IHRv
b2xzL2J1aWxkLmMKIAkkKEhPU1RDQykgJChIT1NUQ0ZMQUdTKSAtbyAkQCAkPApkaWZmIC1OYXVy
IGxpbnV4LTIuNC4yMV9sa2NkL2FyY2gveDg2XzY0L2NvbmZpZy5pbiBsa2NkX2xpbnV4X3g4Nl82
NC9hcmNoL3g4Nl82NC9jb25maWcuaW4KLS0tIGxpbnV4LTIuNC4yMV9sa2NkL2FyY2gveDg2XzY0
L2NvbmZpZy5pbgkyMDAzLTA2LTEzIDIwOjIxOjMyLjAwMDAwMDAwMCArMDUzMAorKysgbGtjZF9s
aW51eF94ODZfNjQvYXJjaC94ODZfNjQvY29uZmlnLmluCTIwMDQtMDctMDEgMjA6Mzg6NDMuMDAw
MDAwMDAwICswNTMwCkBAIC0yMzUsNiArMjM1LDEyIEBACiBtYWlubWVudV9vcHRpb24gbmV4dF9j
b21tZW50CiBjb21tZW50ICdLZXJuZWwgaGFja2luZycKIAordHJpc3RhdGUgJ0xpbnV4IEtlcm5l
bCBDcmFzaCBEdW1wIChMS0NEKSBTdXBwb3J0JyBDT05GSUdfRFVNUAoraWYgWyAiJENPTkZJR19E
VU1QIiAhPSAibiIgXTsgdGhlbgorICAgZGVwX3RyaXN0YXRlICcgIExLQ0QgUkxFIGNvbXByZXNz
aW9uJyBDT05GSUdfRFVNUF9DT01QUkVTU19STEUgJENPTkZJR19EVU1QCisgICBkZXBfdHJpc3Rh
dGUgJyAgTEtDRCBHWklQIGNvbXByZXNzaW9uJyBDT05GSUdfRFVNUF9DT01QUkVTU19HWklQICRD
T05GSUdfRFVNUAorZmkKKwogYm9vbCAnS2VybmVsIGRlYnVnZ2luZycgQ09ORklHX0RFQlVHX0tF
Uk5FTAogaWYgWyAiJENPTkZJR19ERUJVR19LRVJORUwiICE9ICJuIiBdOyB0aGVuCiAgICBib29s
ICcgIERlYnVnIG1lbW9yeSBhbGxvY2F0aW9ucycgQ09ORklHX0RFQlVHX1NMQUIKZGlmZiAtTmF1
ciBsaW51eC0yLjQuMjFfbGtjZC9hcmNoL3g4Nl82NC9rZXJuZWwvaXJxLmMgbGtjZF9saW51eF94
ODZfNjQvYXJjaC94ODZfNjQva2VybmVsL2lycS5jCi0tLSBsaW51eC0yLjQuMjFfbGtjZC9hcmNo
L3g4Nl82NC9rZXJuZWwvaXJxLmMJMjAwMi0xMS0yOSAwNToyMzoxMi4wMDAwMDAwMDAgKzA1MzAK
KysrIGxrY2RfbGludXhfeDg2XzY0L2FyY2gveDg2XzY0L2tlcm5lbC9pcnEuYwkyMDA0LTA3LTAx
IDIxOjExOjU2LjAwMDAwMDAwMCArMDUzMApAQCAtMTEwNiw3ICsxMTA2LDcgQEAKIAogc3RhdGlj
IHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqIHNtcF9hZmZpbml0eV9lbnRyeSBbTlJfSVJRU107CiAK
LXN0YXRpYyB1bnNpZ25lZCBsb25nIGlycV9hZmZpbml0eSBbTlJfSVJRU10gPSB7IFswIC4uLiBO
Ul9JUlFTLTFdID0gfjBVTCB9OwordW5zaWduZWQgbG9uZyBpcnFfYWZmaW5pdHkgW05SX0lSUVNd
ID0geyBbMCAuLi4gTlJfSVJRUy0xXSA9IH4wVUwgfTsKIHN0YXRpYyBpbnQgaXJxX2FmZmluaXR5
X3JlYWRfcHJvYyAoY2hhciAqcGFnZSwgY2hhciAqKnN0YXJ0LCBvZmZfdCBvZmYsCiAJCQlpbnQg
Y291bnQsIGludCAqZW9mLCB2b2lkICpkYXRhKQogewpkaWZmIC1OYXVyIGxpbnV4LTIuNC4yMV9s
a2NkL2FyY2gveDg2XzY0L2tlcm5lbC9ubWkuYyBsa2NkX2xpbnV4X3g4Nl82NC9hcmNoL3g4Nl82
NC9rZXJuZWwvbm1pLmMKLS0tIGxpbnV4LTIuNC4yMV9sa2NkL2FyY2gveDg2XzY0L2tlcm5lbC9u
bWkuYwkyMDAzLTA2LTEzIDIwOjIxOjMyLjAwMDAwMDAwMCArMDUzMAorKysgbGtjZF9saW51eF94
ODZfNjQvYXJjaC94ODZfNjQva2VybmVsL25taS5jCTIwMDQtMDctMDEgMjE6MTI6MTUuMDAwMDAw
MDAwICswNTMwCkBAIC0xOCw2ICsxOCw5IEBACiAjaW5jbHVkZSA8bGludXgvYm9vdG1lbS5oPgog
I2luY2x1ZGUgPGxpbnV4L3NtcF9sb2NrLmg+CiAjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+
CisjaWYgZGVmaW5lZChDT05GSUdfRFVNUCkgfHwgZGVmaW5lZChDT05GSUdfRFVNUF9NT0RVTEUp
CisjaW5jbHVkZSA8bGludXgvZHVtcC5oPgorI2VuZGlmCiAjaW5jbHVkZSA8bGludXgvbWMxNDY4
MThydGMuaD4KICNpbmNsdWRlIDxsaW51eC9rZXJuZWxfc3RhdC5oPgogCkBAIC0zNTQsNiArMzU3
LDE0IEBACiAKIAlpZiAobm1pX3dhdGNoZG9nX2Rpc2FibGVkKQogCQlyZXR1cm47CisjaWYgZGVm
aW5lZChDT05GSUdfRFVNUCkgfHwgZGVmaW5lZChDT05GSUdfRFVNUF9NT0RVTEUpCisgICAgICAg
LyoKKyAgICAgICAgKiBJZ25vcmUgd2F0Y2hkb2cgd2hlbiBkdW1waW5nIGlzIGluIHByb2dyZXNz
LgorICAgICAgICAqIFRvZG86IGNvbnNpZGVyIHVzaW5nIHRoZSB0b3VjaF9ubWlfd2F0Y2hkb2co
KSBhcHByb2FjaCBpbnN0ZWFkCisgICAgICAgICovCisgICAgICAgaWYgKGR1bXBfaW5fcHJvZ3Jl
c3MgJiYgY3B1ICE9IGR1bXBpbmdfY3B1KSByZXR1cm47CisjZW5kaWYKKwogCiAJc3VtID0gYXBp
Y190aW1lcl9pcnFzW2NwdV07CiAKQEAgLTM4MSw2ICszOTIsMTAgQEAKIAkJCXByaW50aygiTk1J
IFdhdGNoZG9nIGRldGVjdGVkIExPQ0tVUCBvbiBDUFUlZCwgZWlwICUxNmx4LCByZWdpc3RlcnM6
XG4iLCBjcHUsIHJlZ3MtPnJpcCk7CiAJCQlzaG93X3JlZ2lzdGVycyhyZWdzKTsKIAkJCXByaW50
aygiY29uc29sZSBzaHV0cyB1cCAuLi5cbiIpOworI2lmIGRlZmluZWQoQ09ORklHX0RVTVApIHx8
IGRlZmluZWQoQ09ORklHX0RVTVBfTU9EVUxFKQorICAgICAgICAgICAgICAgICAgICAgICBkdW1w
KCJOTUkgV2F0Y2hkb2cgRGV0ZWN0ZWQiLCByZWdzKTsKKyNlbmRpZgorCiAJCQljb25zb2xlX3Np
bGVudCgpOwogCQkJc3Bpbl91bmxvY2soJm5taV9wcmludF9sb2NrKTsKIAkJCWJ1c3Rfc3Bpbmxv
Y2tzKDApOwpkaWZmIC1OYXVyIGxpbnV4LTIuNC4yMV9sa2NkL2FyY2gveDg2XzY0L2tlcm5lbC9z
bXAuYyBsa2NkX2xpbnV4X3g4Nl82NC9hcmNoL3g4Nl82NC9rZXJuZWwvc21wLmMKLS0tIGxpbnV4
LTIuNC4yMV9sa2NkL2FyY2gveDg2XzY0L2tlcm5lbC9zbXAuYwkyMDAzLTA2LTEzIDIwOjIxOjMy
LjAwMDAwMDAwMCArMDUzMAorKysgbGtjZF9saW51eF94ODZfNjQvYXJjaC94ODZfNjQva2VybmVs
L3NtcC5jCTIwMDQtMDctMDEgMjE6MTQ6MTAuMDAwMDAwMDAwICswNTMwCkBAIC0xNiw2ICsxNiw5
IEBACiAjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KICNpbmNsdWRlIDxsaW51eC9zcGlubG9jay5o
PgogI2luY2x1ZGUgPGxpbnV4L3NtcF9sb2NrLmg+CisjaWYgZGVmaW5lZChDT05GSUdfRFVNUCkg
fHwgZGVmaW5lZChDT05GSUdfRFVNUF9NT0RVTEUpCisjaW5jbHVkZSA8bGludXgvZHVtcC5oPgor
I2VuZGlmCiAjaW5jbHVkZSA8bGludXgva2VybmVsX3N0YXQuaD4KICNpbmNsdWRlIDxsaW51eC9t
YzE0NjgxOHJ0Yy5oPgogCkBAIC0xNDMsNiArMTQ2LDE2IEBACiAJICogTm8gbmVlZCB0byB0b3Vj
aCB0aGUgdGFyZ2V0IGNoaXAgZmllbGQKIAkgKi8KIAljZmcgPSBfX3ByZXBhcmVfSUNSKHNob3J0
Y3V0LCB2ZWN0b3IpOworI2lmIGRlZmluZWQoQ09ORklHX0RVTVApIHx8IGRlZmluZWQoQ09ORklH
X0RVTVBfTU9EVUxFKQorICAgICAgIGlmICh2ZWN0b3IgPT0gRFVNUF9WRUNUT1IpIHsKKyAgICAg
ICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgKiBTZXR1cCBEVU1QIElQSSB0byBiZSBkZWxp
dmVyZWQgYXMgYW4gTk1JCisgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgIGNmZyA9
IChjZmcmfkFQSUNfVkVDVE9SX01BU0spfEFQSUNfRE1fTk1JOworICAgICAgIH0KKyNlbmRpZiAg
LyogQ09ORklHX0RVTVAgKi8KKworCiAKIAkvKgogCSAqIFNlbmQgdGhlIElQSS4gVGhlIHdyaXRl
IHRvIEFQSUNfSUNSIGZpcmVzIHRoaXMgb2ZmLgpAQCAtMzA4LDYgKzMyMSwxMSBAQAogc3RhdGlj
IHZvaWQgZmx1c2hfdGxiX290aGVycyAodW5zaWduZWQgbG9uZyBjcHVtYXNrLCBzdHJ1Y3QgbW1f
c3RydWN0ICptbSwKIAkJCQkJCXVuc2lnbmVkIGxvbmcgdmEpCiB7CisjaWYgZGVmaW5lZChDT05G
SUdfRFVNUCkgfHwgZGVmaW5lZChDT05GSUdfRFVNUF9NT0RVTEUpCisgICAgICAgLyogc29tZSBj
cHUgbWF5IG5vdCBiZSBydW5uaW5nLi4uIExXUyAqLworICAgICAgIHVuc2lnbmVkIGxvbmcgaXBp
X21hc2s7CisjZW5kaWYKKwogCS8qCiAJICogQSBjb3VwbGUgb2YgKHRvIGJlIHJlbW92ZWQpIHNh
bml0eSBjaGVja3M6CiAJICoKQEAgLTMxNyw4ICszMzUsMTQgQEAKIAkgKi8KIAlpZiAoIWNwdW1h
c2spCiAJCUJVRygpOworI2lmIGRlZmluZWQoQ09ORklHX0RVTVApIHx8IGRlZmluZWQoQ09ORklH
X0RVTVBfTU9EVUxFKQorICAgICAgIC8qIFNvbWUgY3B1cyBtYXkgYmUgc3RvcHBlZC4uLmxpa2Ug
YXQgY3Jhc2ggZHVtcCB0aW1lLi4uIExXUyAqLworICAgICAgIGlmICgoaXBpX21hc2sgPSBjcHVt
YXNrICYgY3B1X29ubGluZV9tYXApID09IDApCisgICAgICAgICAgICAgICByZXR1cm47CisjZWxz
ZQogCWlmICgoY3B1bWFzayAmIGNwdV9vbmxpbmVfbWFwKSAhPSBjcHVtYXNrKQogCQlCVUcoKTsK
KyNlbmRpZgogCWlmIChjcHVtYXNrICYgKDEgPDwgc21wX3Byb2Nlc3Nvcl9pZCgpKSkKIAkJQlVH
KCk7CiAJaWYgKCFtbSkKQEAgLTMzNCwxMiArMzU4LDIwIEBACiAJCiAJZmx1c2hfbW0gPSBtbTsK
IAlmbHVzaF92YSA9IHZhOworI2lmIGRlZmluZWQoQ09ORklHX0RVTVApIHx8IGRlZmluZWQoQ09O
RklHX0RVTVBfTU9EVUxFKQorICAgICAgIGF0b21pY19zZXRfbWFzayhpcGlfbWFzaywgJmZsdXNo
X2NwdW1hc2spOworI2Vsc2UKIAlhdG9taWNfc2V0X21hc2soY3B1bWFzaywgJmZsdXNoX2NwdW1h
c2spOworI2VuZGlmCiAJLyoKIAkgKiBXZSBoYXZlIHRvIHNlbmQgdGhlIElQSSBvbmx5IHRvCiAJ
ICogQ1BVcyBhZmZlY3RlZC4KIAkgKi8KKyNpZiBkZWZpbmVkKENPTkZJR19EVU1QKSB8fCBkZWZp
bmVkKENPTkZJR19EVU1QX01PRFVMRSkKKyAgICAgICBzZW5kX0lQSV9tYXNrKGlwaV9tYXNrLCBJ
TlZBTElEQVRFX1RMQl9WRUNUT1IpOworI2Vsc2UKIAlzZW5kX0lQSV9tYXNrKGNwdW1hc2ssIElO
VkFMSURBVEVfVExCX1ZFQ1RPUik7CisjZW5kaWYKIAogCXdoaWxlIChmbHVzaF9jcHVtYXNrKQog
CQkvKiBub3RoaW5nLiBsb2NrdXAgZGV0ZWN0aW9uIGRvZXMgbm90IGJlbG9uZyBoZXJlICovOwpA
QCAtNDA5LDYgKzQ0MSwxMyBAQAogCiAJZG9fZmx1c2hfdGxiX2FsbF9sb2NhbCgpOwogfQorI2lm
IGRlZmluZWQoQ09ORklHX0RVTVApIHx8IGRlZmluZWQoQ09ORklHX0RVTVBfTU9EVUxFKQordm9p
ZCBkdW1wX3NlbmRfaXBpKHZvaWQpCit7CisgICAgICAgc2VuZF9JUElfYWxsYnV0c2VsZihEVU1Q
X1ZFQ1RPUik7Cit9CisjZW5kaWYKKwogCiAvKgogICogdGhpcyBmdW5jdGlvbiBzZW5kcyBhICdy
ZXNjaGVkdWxlJyBJUEkgdG8gYW5vdGhlciBDUFUuCkBAIC00MTgsNyArNDU3LDE1IEBACiAKIHZv
aWQgc21wX3NlbmRfcmVzY2hlZHVsZShpbnQgY3B1KQogeworI2lmIGRlZmluZWQoQ09ORklHX0RV
TVApIHx8IGRlZmluZWQoQ09ORklHX0RVTVBfTU9EVUxFKQorICAgICAgIC8qIG9ubHkgZG8gdGhp
cyBmb3Igb24tbGluZSBDUFVzICovCisgICAgICAgdW5zaWduZWQgbG9uZyBjcHVtYXNrID0gKDEg
PDwgY3B1KSAmIGNwdV9vbmxpbmVfbWFwOworICAgICAgIGlmIChjcHVtYXNrKSB7CisgICAgICAg
ICAgICAgICBzZW5kX0lQSV9tYXNrKDEgPDwgY3B1LCBSRVNDSEVEVUxFX1ZFQ1RPUik7CisgICAg
ICAgfQorI2Vsc2UKIAlzZW5kX0lQSV9tYXNrKDEgPDwgY3B1LCBSRVNDSEVEVUxFX1ZFQ1RPUik7
CisjZW5kaWYKIH0KIAogLyoKQEAgLTQ3Nyw4ICs1MjQsMjYgQEAKIAlzZW5kX0lQSV9hbGxidXRz
ZWxmKENBTExfRlVOQ1RJT05fVkVDVE9SKTsKIAogCS8qIFdhaXQgZm9yIHJlc3BvbnNlICovCisj
aWYgZGVmaW5lZChDT05GSUdfRFVNUCkgfHwgZGVmaW5lZChDT05GSUdfRFVNUF9NT0RVTEUpCisg
ICAgICAgaWYgKGR1bXBfaW5fcHJvZ3Jlc3MpIHsKKyAgICAgICAgICAgICAgIGludCBpID0gMSAq
IDEwMDA7ICAgLyogbWlsbGlzZWNvbmRzIHRvIGRlbGF5IHdhaXRpbmcgZm9yIG90aGVyIENQVSB0
byBzdGFyCit0IElQSSBwcm9jZXNzaW5nICgxIHNlY29uZCkgKi8KKyAgICAgICAgICAgICAgIHdo
aWxlIChhdG9taWNfcmVhZCgmZGF0YS5zdGFydGVkKSAhPSBjcHVzICYmIGktLSkgeworICAgICAg
ICAgICAgICAgICAgICAgICBtZGVsYXkoMSk7CisgICAgICAgICAgICAgICAgICAgICAgIGJhcnJp
ZXIoKTsKKyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgIGlmIChpIDw9IDApIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgc3Bpbl91bmxvY2tfYmgoJmNhbGxfbG9jayk7CisgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAtRVRJTUVET1VUOworICAgICAgICAgICAgICAgfQorICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICB3aGlsZSAoYXRvbWljX3JlYWQoJmRhdGEuc3Rh
cnRlZCkgIT0gY3B1cykKKyAgICAgICAgICAgICAgICAgICAgICAgYmFycmllcigpOworICAgICAg
IH0KKyNlbHNlCiAJd2hpbGUgKGF0b21pY19yZWFkKCZkYXRhLnN0YXJ0ZWQpICE9IGNwdXMpCiAJ
CWJhcnJpZXIoKTsKKyNlbmRpZgogCiAJaWYgKHdhaXQpCiAJCXdoaWxlIChhdG9taWNfcmVhZCgm
ZGF0YS5maW5pc2hlZCkgIT0gY3B1cykKZGlmZiAtTmF1ciBsaW51eC0yLjQuMjFfbGtjZC9hcmNo
L3g4Nl82NC9rZXJuZWwvdHJhcHMuYyBsa2NkX2xpbnV4X3g4Nl82NC9hcmNoL3g4Nl82NC9rZXJu
ZWwvdHJhcHMuYwotLS0gbGludXgtMi40LjIxX2xrY2QvYXJjaC94ODZfNjQva2VybmVsL3RyYXBz
LmMJMjAwMy0wNi0xMyAyMDoyMTozMi4wMDAwMDAwMDAgKzA1MzAKKysrIGxrY2RfbGludXhfeDg2
XzY0L2FyY2gveDg2XzY0L2tlcm5lbC90cmFwcy5jCTIwMDQtMDctMDEgMjE6MTc6MjYuMDAwMDAw
MDAwICswNTMwCkBAIC0yMiw2ICsyMiwxMCBAQAogI2luY2x1ZGUgPGxpbnV4L3B0cmFjZS5oPgog
I2luY2x1ZGUgPGxpbnV4L3RpbWVyLmg+CiAjaW5jbHVkZSA8bGludXgvbW0uaD4KKyNpZiBkZWZp
bmVkKENPTkZJR19EVU1QKSB8fCBkZWZpbmVkKENPTkZJR19EVU1QX01PRFVMRSkKKyNpbmNsdWRl
IDxsaW51eC9kdW1wLmg+CisjZW5kaWYKKwogI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KICNpbmNs
dWRlIDxsaW51eC9kZWxheS5oPgogI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+CkBAIC04Myw2
ICs4NywyNiBAQAogCiBpbnQga3N0YWNrX2RlcHRoX3RvX3ByaW50ID0gNDA7CiAKKyNpZiBkZWZp
bmVkKENPTkZJR19EVU1QKSB8fCBkZWZpbmVkKENPTkZJR19EVU1QX01PRFVMRSkKKyNpZmRlZiBD
T05GSUdfU01QCit2b2lkICgqZHVtcF90cmFjZV9wdHIpKHN0cnVjdCBwdF9yZWdzICopID0gTlVM
TDsKKy8qCisgKiBUaGlzIGNvZGUgbWltaWNzIHNob3dfdHJhY2UoKSBldGMgaW4gYXJjaC9pMzg2
L2tlcm5lbC90cmFwcy5jLiBXZSBkb24ndAorICogdXNlIHRoZW0gZGlyZWN0bHkgYXMgdGhleSBk
ZXBlbmQgb24gOEsgYWxpZ25lZCBrZXJuZWwgc3RhY2tzIHRoYXQgb3VyCisgKiBzYXZlZCBzdGFj
a3MgZG9uJ3Qgc2F0aXNmeS4gSG93ZXZlciwgdGhlcmUgaXMgbW92ZSB0byByZWxheCB0aGUgcmVx
dWlyZW1lbnQKKyAqIG9uIHRhc2tfc3RydWN0IHRvIGJlIDhLLWFsaWduZWQuIE9uY2UgdGhhdCBo
YXBwZW5zLCB3ZSBjb3VsZCBzaW1waWZ5IHRoaXMKKyAqIGZ1bmN0aW9uLgorICovCit2b2lkIHNo
b3dfdGhpc19jcHVfc3RhdGUoaW50IGNwdSwgc3RydWN0IHB0X3JlZ3MgKiByZWdzLCBzdHJ1Y3Qg
dGFza19zdHJ1Y3QgKnRzaykKK3sKKy8vbm90IGltcGxlbWVudGVkIHlldAorICAgICAgIHJldHVy
bjsKK30KKyNlbmRpZiAvKiBDT05GSUdfU01QICovCisjZW5kaWYgLyogQ09ORklHX0RVTVAgKi8K
KworCisKICNpZmRlZiBDT05GSUdfS0FMTFNZTVMKICNpbmNsdWRlIDxsaW51eC9rYWxsc3ltcy5o
PiAKIGludCBwcmludGtfYWRkcmVzcyh1bnNpZ25lZCBsb25nIGFkZHJlc3MpCkBAIC0zNjMsNiAr
Mzg3LDEwIEBACiAJc2hvd19yZWdpc3RlcnMocmVncyk7CiAJYnVzdF9zcGlubG9ja3MoMCk7CiAJ
c3Bpbl91bmxvY2tfaXJxKCZkaWVfbG9jayk7CisjaWYgZGVmaW5lZChDT05GSUdfRFVNUCkgfHwg
ZGVmaW5lZChDT05GSUdfRFVNUF9NT0RVTEUpCisgICAgICAgZHVtcCgoY2hhciAqKXN0ciwgcmVn
cyk7CisjZW5kaWYKKwogCWRvX2V4aXQoU0lHU0VHVik7CiB9CiAKQEAgLTUzMSw2ICs1NTksMjIg
QEAKIAlyZWFzb24gJj0gfjg7CiAJb3V0YihyZWFzb24sIDB4NjEpOwogfQorI2lmIGRlZmluZWQo
Q09ORklHX0RVTVApIHx8IGRlZmluZWQoQ09ORklHX0RVTVBfTU9EVUxFKQorI2lmZGVmIENPTkZJ
R19TTVAKK2ludCAoKmR1bXBfaXBpX2Z1bmN0aW9uX3B0cikoc3RydWN0IHB0X3JlZ3MgKikgPSBO
VUxMOworc3RhdGljIGludCBkdW1wX2lwaShzdHJ1Y3QgcHRfcmVncyAqcmVncykKK3sKKyAgICAg
ICBpZiAoIShkdW1wX2lwaV9mdW5jdGlvbl9wdHIgJiYgZHVtcF9pcGlfZnVuY3Rpb25fcHRyKHJl
Z3MpKSkgeworICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgfQorICAgICAgIGFja19B
UElDX2lycSgpOworICAgICAgIHJldHVybiAxOworfQorI2Vsc2UKKyNkZWZpbmUgZHVtcF9pcGko
cmVncykgMAorI2VuZGlmCisjZW5kaWYKKwogCiBzdGF0aWMgdm9pZCB1bmtub3duX25taV9lcnJv
cih1bnNpZ25lZCBjaGFyIHJlYXNvbiwgc3RydWN0IHB0X3JlZ3MgKiByZWdzKQogewpAQCAtNTQ0
LDYgKzU4OCwxMSBAQAogCXVuc2lnbmVkIGNoYXIgcmVhc29uID0gaW5iKDB4NjEpOwogCiAJKytu
bWlfY291bnQoc2FmZV9zbXBfcHJvY2Vzc29yX2lkKCkpOworI2lmIGRlZmluZWQoQ09ORklHX0RV
TVApIHx8IGRlZmluZWQoQ09ORklHX0RVTVBfTU9EVUxFKQorICAgICAgIGlmIChkdW1wX2lwaShy
ZWdzKSkgeworICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgIH0KKyNlbmRpZgogCQogCWlm
ICghKHJlYXNvbiAmIDB4YzApKSB7CiAjaWYgQ09ORklHX1g4Nl9MT0NBTF9BUElDCmRpZmYgLU5h
dXIgbGludXgtMi40LjIxX2xrY2QvYXJjaC94ODZfNjQva2VybmVsL3g4NjY0X2tzeW1zLmMgbGtj
ZF9saW51eF94ODZfNjQvYXJjaC94ODZfNjQva2VybmVsL3g4NjY0X2tzeW1zLmMKLS0tIGxpbnV4
LTIuNC4yMV9sa2NkL2FyY2gveDg2XzY0L2tlcm5lbC94ODY2NF9rc3ltcy5jCTIwMDMtMDYtMTMg
MjA6MjE6MzIuMDAwMDAwMDAwICswNTMwCisrKyBsa2NkX2xpbnV4X3g4Nl82NC9hcmNoL3g4Nl82
NC9rZXJuZWwveDg2NjRfa3N5bXMuYwkyMDA0LTA3LTAxIDIwOjQ1OjM2LjAwMDAwMDAwMCArMDUz
MApAQCAtMjIzLDMgKzIyMywzMCBAQAogCiBleHRlcm4gdm9pZCBpbnRfcmV0X2Zyb21fc3lzX2Nh
bGwodm9pZCk7CiBFWFBPUlRfU1lNQk9MKGludF9yZXRfZnJvbV9zeXNfY2FsbCk7IAorCisjaWYg
ZGVmaW5lZChDT05GSUdfRFVNUCkgfHwgZGVmaW5lZChDT05GSUdfRFVNUF9NT0RVTEUpCitleHRl
cm4gdm9pZCBkdW1wIChjaGFyICosIHN0cnVjdCBwdF9yZWdzICopOworRVhQT1JUKGR1bXApOyAK
K2V4dGVybiB2b2lkIGdldF9jdXJyZW50X3JlZ3MoIHN0cnVjdCBwdF9yZWdzICopOworRVhQT1JU
KGdldF9jdXJyZW50X3JlZ3MpOworZXh0ZXJuIGludCAoKmR1bXBfZnVuY3Rpb25fcHRyKShjaGFy
ICosIHN0cnVjdCBwdF9yZWdzICopOworRVhQT1JUKGR1bXBfZnVuY3Rpb25fcHRyKTsKKyNpZmRl
ZiBDT05GSUdfU01QCitleHRlcm4gaXJxX2Rlc2NfdCBpcnFfZGVzY1tdOworZXh0ZXJuIHVuc2ln
bmVkIGxvbmcgaXJxX2FmZmluaXR5W107CitFWFBPUlRfU1lNQk9MKGlycV9hZmZpbml0eSk7CitF
WFBPUlRfU1lNQk9MKGlycV9kZXNjKTsKK2V4dGVybiB2b2lkIGR1bXBfc2VuZF9pcGkodm9pZCk7
CitFWFBPUlRfU1lNQk9MKGR1bXBfc2VuZF9pcGkpOworZXh0ZXJuIGludCAoKmR1bXBfaXBpX2Z1
bmN0aW9uX3B0cikoc3RydWN0IHB0X3JlZ3MgKik7CitFWFBPUlRfU1lNQk9MKGR1bXBfaXBpX2Z1
bmN0aW9uX3B0cik7CitleHRlcm4gdm9pZCAoKmR1bXBfdHJhY2VfcHRyKShzdHJ1Y3QgcHRfcmVn
cyAqKTsKK0VYUE9SVF9TWU1CT0woZHVtcF90cmFjZV9wdHIpOworZXh0ZXJuIHZvaWQgc2hvd190
aGlzX2NwdV9zdGF0ZShpbnQsIHN0cnVjdCBwdF9yZWdzICosIHN0cnVjdCB0YXNrX3N0cnVjdCAq
KTsKK0VYUE9SVF9TWU1CT0woc2hvd190aGlzX2NwdV9zdGF0ZSk7CisjZW5kaWYKKyNpZmRlZiBD
T05GSUdfSElHSE1FTQorRVhQT1JUX1NZTUJPTChrbWFwX3Byb3QpOworRVhQT1JUX1NZTUJPTChr
bWFwX3B0ZSk7CisjZW5kaWYKKyNlbmRpZgpkaWZmIC1OYXVyIGxpbnV4LTIuNC4yMV9sa2NkL2Fy
Y2gveDg2XzY0L21tL2luaXQuYyBsa2NkX2xpbnV4X3g4Nl82NC9hcmNoL3g4Nl82NC9tbS9pbml0
LmMKLS0tIGxpbnV4LTIuNC4yMV9sa2NkL2FyY2gveDg2XzY0L21tL2luaXQuYwkyMDAzLTA2LTEz
IDIwOjIxOjMyLjAwMDAwMDAwMCArMDUzMAorKysgbGtjZF9saW51eF94ODZfNjQvYXJjaC94ODZf
NjQvbW0vaW5pdC5jCTIwMDQtMDctMDEgMjA6NDY6MTEuMDAwMDAwMDAwICswNTMwCkBAIC0zMzgs
NyArMzM4LDExIEBACiAJZnJlZV9hcmVhX2luaXQoem9uZXNfc2l6ZSk7CiB9CiAKKyNpZiBkZWZp
bmVkKENPTkZJR19EVU1QKSB8fCBkZWZpbmVkKENPTkZJR19EVU1QX01PRFVMRSkKK2ludCBwYWdl
X2lzX3JhbSAodW5zaWduZWQgbG9uZyBwYWdlbnIpCisjZWxzZQogc3RhdGljIGlubGluZSBpbnQg
cGFnZV9pc19yYW0gKHVuc2lnbmVkIGxvbmcgcGFnZW5yKQorI2VuZGlmCiB7CiAJaW50IGk7CiAK
ZGlmZiAtTmF1ciBsaW51eC0yLjQuMjFfbGtjZC9kcml2ZXJzL2R1bXAvZHVtcF94ODZfNjQuYyBs
a2NkX2xpbnV4X3g4Nl82NC9kcml2ZXJzL2R1bXAvZHVtcF94ODZfNjQuYwotLS0gbGludXgtMi40
LjIxX2xrY2QvZHJpdmVycy9kdW1wL2R1bXBfeDg2XzY0LmMJMTk3MC0wMS0wMSAwNTozMDowMC4w
MDAwMDAwMDAgKzA1MzAKKysrIGxrY2RfbGludXhfeDg2XzY0L2RyaXZlcnMvZHVtcC9kdW1wX3g4
Nl82NC5jCTIwMDQtMDctMDIgMjA6NTk6NDguMDAwMDAwMDAwICswNTMwCkBAIC0wLDAgKzEsMjk1
IEBACisvKgorICogQXJjaGl0ZWN0dXJlIHNwZWNpZmljICh4ODZfNjQpIGZ1bmN0aW9ucyBmb3Ig
TGludXggY3Jhc2ggZHVtcHMuCisgKgorICogQ3JlYXRlZCBieTogTWF0dCBSb2JpbnNvbiAoeWFr
a2VyQHNnaS5jb20pCisgKgorICogbW9kaWZpZWQgZm9yIHg4Nl82NCBieTogU2FuamF5IEt1bWFy
IChzYW5qYXkua3VtYXJAbm9pZGEuaGNsdGVjaC5jb20pCisgKgorICogQ29weXJpZ2h0IDE5OTkg
U2lsaWNvbiBHcmFwaGljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIDIuMyBr
ZXJuZWwgbW9kaWZpY2F0aW9ucyBieTogTWF0dCBELiBSb2JpbnNvbiAoeWFra2VyQHR1cmJvbGlu
dXguY29tKQorICogQ29weXJpZ2h0IDIwMDAgVHVyYm9MaW51eCwgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIAorICogVGhpcyBjb2RlIGlzIHJlbGVhc2VkIHVuZGVyIHZlcnNpb24gMiBv
ZiB0aGUgR05VIEdQTC4KKyAqLworCisvKgorICogVGhlIGhvb2tzIGZvciBkdW1waW5nIHRoZSBr
ZXJuZWwgdmlydHVhbCBtZW1vcnkgdG8gZGlzayBhcmUgaW4gdGhpcworICogZmlsZS4gIEFueSB0
aW1lIGEgbW9kaWZpY2F0aW9uIGlzIG1hZGUgdG8gdGhlIHZpcnR1YWwgbWVtb3J5IG1lY2hhbmlz
bSwKKyAqIHRoZXNlIHJvdXRpbmVzIG11c3QgYmUgY2hhbmdlZCB0byB1c2UgdGhlIG5ldyBtZWNo
YW5pc21zLgorICovCisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L3R5
cGVzLmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvc21wLmg+
CisjaW5jbHVkZSA8bGludXgvZnMuaD4KKyNpbmNsdWRlIDxsaW51eC92bWFsbG9jLmg+CisjaW5j
bHVkZSA8bGludXgvZHVtcC5oPgorI2luY2x1ZGUgPGxpbnV4L21tLmg+CisjaW5jbHVkZSA8YXNt
L3Byb2Nlc3Nvci5oPgorI2luY2x1ZGUgPGFzbS9oYXJkaXJxLmg+CisjaW5jbHVkZSA8bGludXgv
aXJxLmg+CisKK3N0YXRpYyBpbnQgYWxsb2NfZGhhX3N0YWNrKHZvaWQpCit7CisJaW50IGk7CisJ
dm9pZCAqcHRyOworCQorCWlmIChkdW1wX2hlYWRlcl9hc20uZGhhX3N0YWNrWzBdKQorCQlyZXR1
cm4gMDsKKworICAgICAgIAlwdHIgPSB2bWFsbG9jKFRIUkVBRF9TSVpFICogc21wX251bV9jcHVz
KTsKKwlpZiAoIXB0cikgeworCQlwcmludGsoInZtYWxsb2MgZm9yIGRoYV9zdGFja3MgZmFpbGVk
XG4iKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJZm9yIChpID0gMDsgaSA8IHNtcF9udW1f
Y3B1czsgaSsrKSB7CisJCWR1bXBfaGVhZGVyX2FzbS5kaGFfc3RhY2tbaV0gPSAodWludDY0X3Qp
KCh1bnNpZ25lZCBsb25nKXB0ciArIChpICogVEhSRUFEX1NJWkUpKTsKKwl9CisJcmV0dXJuIDA7
Cit9CisKK3N0YXRpYyBpbnQgZnJlZV9kaGFfc3RhY2sodm9pZCkgCit7CisJaWYgKGR1bXBfaGVh
ZGVyX2FzbS5kaGFfc3RhY2tbMF0pCisJCXZmcmVlKCh2b2lkKilkdW1wX2hlYWRlcl9hc20uZGhh
X3N0YWNrWzBdKTsJCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitzYXZlX3RoaXNfY3B1
X3N0YXRlKGludCBjcHUsIHN0cnVjdCBwdF9yZWdzICpyZWdzLCBzdHJ1Y3QgdGFza19zdHJ1Y3Qg
KnRzaykKK3sKKwlkdW1wX2hlYWRlcl9hc20uZGhhX3NtcF9yZWdzW2NwdV0gPSAqcmVnczsKKwlk
dW1wX2hlYWRlcl9hc20uZGhhX3NtcF9jdXJyZW50X3Rhc2tbY3B1XSA9ICh1aW50NjRfdCkgdHNr
OworCisJaWYgKGR1bXBfaGVhZGVyX2FzbS5kaGFfc3RhY2tbY3B1XSkgeworCQltZW1jcHkoKHZv
aWQqKWR1bXBfaGVhZGVyX2FzbS5kaGFfc3RhY2tbY3B1XSwgdHNrLCBUSFJFQURfU0laRSk7CisJ
fQorCXJldHVybjsKK30KKworI2lmZGVmIENPTkZJR19TTVAKK3N0YXRpYyBpbnQgZHVtcF9leHBl
Y3RfaXBpW05SX0NQVVNdOworc3RhdGljIGF0b21pY190IHdhaXRpbmdfZm9yX2R1bXBfaXBpOwor
c3RhdGljIGludCB3YWl0X2Zvcl9kdW1wX2lwaSA9IDE7IC8qIGFsd2F5cyB3YWl0IGZvciBpcGkg
dG8gdG8gYmUgaGFuZGxlZCAqLworZXh0ZXJuIHZvaWQgKCpkdW1wX3RyYWNlX3B0cikoc3RydWN0
IHB0X3JlZ3MgKik7CitzdGF0aWMgdW5zaWduZWQgbG9uZyBzYXZlZF9hZmZpbml0eVtOUl9JUlFT
XTsKKworc3RhdGljIGludAorZHVtcF9pcGlfaGFuZGxlcihzdHJ1Y3QgcHRfcmVncyAqcmVncykg
Cit7CisJaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKKworCWlmICghZHVtcF9leHBlY3Rf
aXBpW2NwdV0pIHsKKwkJcmV0dXJuIDA7CisJfQorCQorCXNhdmVfdGhpc19jcHVfc3RhdGUoY3B1
LCByZWdzLCBjdXJyZW50KTsKKworCWR1bXBfZXhwZWN0X2lwaVtjcHVdID0gMDsKKwlhdG9taWNf
ZGVjKCZ3YWl0aW5nX2Zvcl9kdW1wX2lwaSk7CisJcmV0dXJuIDE7Cit9CisKKy8qIHNhdmUgcmVn
aXN0ZXJzIG9uIG90aGVyIHByb2Nlc3NvcnMgKi8KK3ZvaWQgCitzYXZlX290aGVyX2NwdV9zdGF0
ZXModm9pZCkKK3sKKwlpbnQgaTsKKworCWlmIChzbXBfbnVtX2NwdXMgPiAxKSB7CisJCWF0b21p
Y19zZXQoJndhaXRpbmdfZm9yX2R1bXBfaXBpLCBzbXBfbnVtX2NwdXMtMSk7CisJCWZvciAoaSA9
IDA7IGkgPCBOUl9DUFVTOyBpKyspCisJCQlkdW1wX2V4cGVjdF9pcGlbaV0gPSAxOworCQkKKwkJ
ZHVtcF9pcGlfZnVuY3Rpb25fcHRyID0gZHVtcF9pcGlfaGFuZGxlcjsKKwkJZHVtcF9zZW5kX2lw
aSgpOworCQkvKiBtYXkgYmUgd2UgZG9udCBuZWVkIHRvIHdhaXQgZm9yIE5NSSB0byBiZSBwcm9j
ZXNzZWQuIAorCQkgICBqdXN0IHdyaXRlIG91dCB0aGUgaGVhZGVyIGF0IHRoZSBlbmQgb2YgZHVt
cGluZywgaWYKKwkJICAgdGhpcyBJUEkgaXMgbm90IHByb2Nlc3NlZCB1bnRpbGwgdGhlbiwgdGhl
cmUgcHJvYmFibHkKKwkJICAgaXMgYSBwcm9ibGVtIGFuZCB3ZSBqdXN0IGZhaWwgdG8gY2FwdHVy
ZSBzdGF0ZSBvZiAKKwkJICAgb3RoZXIgY3B1cy4gKi8KKwkJaWYgKHdhaXRfZm9yX2R1bXBfaXBp
KSB7CisJCQl3aGlsZShhdG9taWNfcmVhZCgmd2FpdGluZ19mb3JfZHVtcF9pcGkpKQorCQkJCWJh
cnJpZXIoKTsKKwkJCWR1bXBfaXBpX2Z1bmN0aW9uX3B0ciA9IE5VTEw7CisJCX0KKwl9CisJcmV0
dXJuOworfQorCisvKiBsb2NhdGVkIGluIGFyY2gvaTM4Ni9rZXJuZWwvdHJhcHMuYyAqLworZXh0
ZXJuIHZvaWQgc2hvd190aGlzX2NwdV9zdGF0ZShpbnQgY3B1LCBzdHJ1Y3QgcHRfcmVncyAqIHJl
Z3MsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKTsKKwordm9pZCAKK3Nob3dfY3B1X3N0YXRlKHN0
cnVjdCBwdF9yZWdzICogcmVncykKK3sKKwlpbnQgaTsKKwlfX2R1bXBfY29uZmlndXJlX2hlYWRl
cihyZWdzKTsJCisJZm9yIChpID0gMDsgaSA8IHNtcF9udW1fY3B1czsgaSsrKSB7CisJCXNob3df
dGhpc19jcHVfc3RhdGUoaSwgJmR1bXBfaGVhZGVyX2FzbS5kaGFfc21wX3JlZ3NbaV0sIAorCQkJ
KHZvaWQqKWR1bXBfaGVhZGVyX2FzbS5kaGFfc3RhY2tbaV0pOworCX0KKwlyZXR1cm47Cit9CisK
Ky8qCisgKiBOb24gZHVtcGluZyBjcHVzIHdpbGwgc3BpbiBoZXJlLiBJZiBhIGNwdSBpcyBoYW5k
bGluZyBhbiBpcnEgd2hlbiBpcGkgaXMKKyAqIHJlY2VpdmVkLCB3ZSBsZXQgZ28gb2YgaXQgaGVy
ZSB3aGlsZSBtYWtpbmcgc3VyZSB0aGF0IGl0IGhpdHMgc2NoZWR1bGUKKyAqIG9uIHRoZSB3YXkg
dXAgYW5kIG1ha2UgaXQgc3BpbiB0aGVyZSBpbnN0ZWFkLgorICovCitzdGF0aWMgdm9pZAorX19k
dW1wX3NwaW4odm9pZCAqYXJnKQoreworCWlmIChpbl9pcnEoKSkgeworCQljdXJyZW50LT5uZWVk
X3Jlc2NoZWQgPSAxOworCX0gZWxzZSB7CisJCXdoaWxlIChkdW1wX2luX3Byb2dyZXNzKSA7CisJ
fQorCXJldHVybjsKK30KKworLyoKKyAqIFJvdXRpbmUgdG8gc2F2ZSB0aGUgb2xkIGlycSBhZmZp
bml0aWVzIGFuZCBjaGFuZ2UgYWZmaW5pdGllcyBvZiBhbGwgaXJxcyB0bworICogdGhlIGR1bXBp
bmcgY3B1LgorICovCitzdGF0aWMgdm9pZAorX19kdW1wX3NldF9pcnFfYWZmaW5pdHkodm9pZCkK
K3sKKwlpbnQgaTsKKwlpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOworCisJbWVtY3B5KHNh
dmVkX2FmZmluaXR5LCBpcnFfYWZmaW5pdHksIE5SX0lSUVMgKiBzaXplb2YodW5zaWduZWQgbG9u
ZykpOworCWZvciAoaSA9IDA7IGkgPCBOUl9JUlFTOyBpKyspIHsKKwkJaWYgKGlycV9kZXNjW2ld
LmhhbmRsZXIgPT0gTlVMTCkKKwkJCWNvbnRpbnVlOworCQlpcnFfYWZmaW5pdHlbaV0gPSAxVUwg
PDwgY3B1OworCQlpZiAoaXJxX2Rlc2NbaV0uaGFuZGxlci0+c2V0X2FmZmluaXR5ICE9IE5VTEwp
CisJCQlpcnFfZGVzY1tpXS5oYW5kbGVyLT5zZXRfYWZmaW5pdHkoaSwgaXJxX2FmZmluaXR5W2ld
KTsKKwl9Cit9CisKKy8qCisgKiBSZXN0b3JlIG9sZCBpcnEgYWZmaW5pdGllcy4KKyAqLworc3Rh
dGljIHZvaWQKK19fZHVtcF9yZXNldF9pcnFfYWZmaW5pdHkodm9pZCkKK3sKKwlpbnQgaTsKKwor
CW1lbWNweShpcnFfYWZmaW5pdHksIHNhdmVkX2FmZmluaXR5LCBOUl9JUlFTICogc2l6ZW9mKHVu
c2lnbmVkIGxvbmcpKTsKKwlmb3IgKGkgPSAwOyBpIDwgTlJfSVJRUzsgaSsrKSB7CisJCWlmIChp
cnFfZGVzY1tpXS5oYW5kbGVyID09IE5VTEwpCisJCQljb250aW51ZTsKKwkJaWYgKGlycV9kZXNj
W2ldLmhhbmRsZXItPnNldF9hZmZpbml0eSAhPSBOVUxMKQorCQkJaXJxX2Rlc2NbaV0uaGFuZGxl
ci0+c2V0X2FmZmluaXR5KGksIHNhdmVkX2FmZmluaXR5W2ldKTsKKwl9Cit9CisKKyNlbHNlIC8q
ICFDT05GSUdfU01QICovCisjZGVmaW5lIHNhdmVfb3RoZXJfY3B1X3N0YXRlcygpCisjZW5kaWYg
LyogIUNPTkZJR19TTVAgKi8KKworLyoKKyAqIE5hbWU6IF9fZHVtcF9zaWxlbmNlX3N5c3RlbSgp
CisgKiBGdW5jOiBEbyBhbiBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgc2lsZW5jaW5nIG9mIHRoZSBz
eXN0ZW0uCisgKiAgICAgLSBDaGFuZ2UgaXJxIGFmZmluaXRpZXMKKyAqICAgICAtIFdhaXQgZm9y
IG90aGVyIGNwdXMgdG8gY29tZSBvdXQgb2YgaXJxIGhhbmRsaW5nCisgKiAgICAgLSBTZW5kIENB
TExfRlVOQ1RJT05fVkVDVE9SIGlwaSB0byBvdGhlciBjcHVzIHRvIHB1dCB0aGVtIHRvIHNwaW4K
KyAqLwordW5zaWduZWQgaW50CitfX2R1bXBfc2lsZW5jZV9zeXN0ZW0odW5zaWduZWQgaW50IHN0
YWdlKQoreworI2lmZGVmIENPTkZJR19TTVAKKwlpZiAoc3RhZ2UpIHsJLyogRG8gdGhpcyBhZnRl
ciBpbnRlcnJ1cHRzIGFyZSBlbmFibGVkICovCisJCS8qIHJlYWQgdGhlIGNvbW1lbnRzIGFib3Zl
IC4uLiAqLworCQlfX2R1bXBfc2V0X2lycV9hZmZpbml0eSgpOworCQlzeW5jaHJvbml6ZV9pcnEo
KTsKKwkJc21wX2NhbGxfZnVuY3Rpb24oX19kdW1wX3NwaW4sIE5VTEwsIDAsIDApOworCX0KKyNl
bmRpZgorCisJLyogcmV0dXJuICovCisJcmV0dXJuICgwKTsKK30KKworLyoKKyAqIE5hbWU6IF9f
ZHVtcF9yZXN1bWVfc3lzdGVtKCkKKyAqIEZ1bmM6IFJlc3VtZSB0aGUgc3lzdGVtIHN0YXRlIGlu
IGFuIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB3YXkuCisgKi8KK3Vuc2lnbmVkIGludAorX19kdW1w
X3Jlc3VtZV9zeXN0ZW0odW5zaWduZWQgaW50IHN0YWdlKQoreworI2lmZGVmIENPTkZJR19TTVAK
KwkvKiBwdXQgdGhlIGlycSBhZmZpbml0eSB0YWJsZXMgYmFjayAqLworCV9fZHVtcF9yZXNldF9p
cnFfYWZmaW5pdHkoKTsKKyNlbmRpZgorCisJLyogcmV0dXJuICovCisJcmV0dXJuICgwKTsKK30K
KworLyoKKyAqIE5hbWU6IF9fZHVtcF9jb25maWd1cmVfaGVhZGVyKCkKKyAqIEZ1bmM6IENvbmZp
Z3VyZSB0aGUgZHVtcCBoZWFkZXIgd2l0aCBhbGwgcHJvcGVyIHZhbHVlcy4KKyAqLworaW50Citf
X2R1bXBfY29uZmlndXJlX2hlYWRlcihzdHJ1Y3QgcHRfcmVncyAqcmVncykKK3sKKwlpbnQgY3B1
ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOworCisJZHVtcF9oZWFkZXJfYXNtLmRoYV9zbXBfbnVtX2Nw
dXMgPSBzbXBfbnVtX2NwdXM7CisJZHVtcF9oZWFkZXJfYXNtLmRoYV9kdW1waW5nX2NwdSA9IGNw
dTsKKworCXNhdmVfdGhpc19jcHVfc3RhdGUoY3B1LCByZWdzLCBjdXJyZW50KTsKKworCXNhdmVf
b3RoZXJfY3B1X3N0YXRlcygpOworCisJcmV0dXJuICgxKTsKK30KKworLyoKKyAqIE5hbWU6IF9f
ZHVtcF9pbml0KCkKKyAqIEZ1bmM6IEluaXRpYWxpemUgdGhlIGR1bXBpbmcgcm91dGluZSBwcm9j
ZXNzLiAgVGhpcyBpcyBpbiBjYXNlCisgKiAgICAgICBpdCdzIG5lY2Vzc2FyeSBpbiB0aGUgZnV0
dXJlLgorICovCit2b2lkCitfX2R1bXBfaW5pdCh1aW50NjRfdCBsb2NhbF9tZW1vcnlfc3RhcnQp
Cit7CisJLyogcmV0dXJuICovCisJcmV0dXJuOworfQorCisvKgorICogTmFtZTogX19kdW1wX29w
ZW4oKQorICogRnVuYzogT3BlbiB0aGUgZHVtcCBkZXZpY2UgKGFyY2hpdGVjdHVyZSBzcGVjaWZp
YykuICBUaGlzIGlzIGluCisgKiAgICAgICBjYXNlIGl0J3MgbmVjZXNzYXJ5IGluIHRoZSBmdXR1
cmUuCisgKi8KK3ZvaWQKK19fZHVtcF9vcGVuKHZvaWQpCit7CisJYWxsb2NfZGhhX3N0YWNrKCk7
CisjaWZkZWYgQ09ORklHX1NNUAkKKwlkdW1wX3RyYWNlX3B0ciA9IHNob3dfY3B1X3N0YXRlOwor
I2VuZGlmCisJLyogcmV0dXJuICovCisJcmV0dXJuOworfQorCisvKgorICogTmFtZTogX19kdW1w
X2NsZWFudXAoKQorICogRnVuYzogRnJlZSBhbnkgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGRhdGEg
c3RydWN0dXJlcy4gVGhpcyBpcyBjYWxsZWQKKyAqICAgICAgIHdoZW4gdGhlIGR1bXAgbW9kdWxl
IGlzIGJlaW5nIHJlbW92ZWQuCisgKi8KK3ZvaWQKK19fZHVtcF9jbGVhbnVwKHZvaWQpCit7CisJ
ZnJlZV9kaGFfc3RhY2soKTsKKyNpZmRlZiBDT05GSUdfU01QCisJZHVtcF90cmFjZV9wdHIgPSBO
VUxMOworI2VuZGlmCisJLyogcmV0dXJuICovCisJcmV0dXJuOworfQorCmRpZmYgLU5hdXIgbGlu
dXgtMi40LjIxX2xrY2QvZHJpdmVycy9kdW1wL01ha2VmaWxlIGxrY2RfbGludXhfeDg2XzY0L2Ry
aXZlcnMvZHVtcC9NYWtlZmlsZQotLS0gbGludXgtMi40LjIxX2xrY2QvZHJpdmVycy9kdW1wL01h
a2VmaWxlCTIwMDQtMDYtMDQgMTA6NTQ6NDQuMDAwMDAwMDAwICswNTMwCisrKyBsa2NkX2xpbnV4
X3g4Nl82NC9kcml2ZXJzL2R1bXAvTWFrZWZpbGUJMjAwNC0wNy0wMSAyMDo0OTowMi4wMDAwMDAw
MDAgKzA1MzAKQEAgLTIyLDYgKzIyLDEwIEBACiAJZHVtcC1vYmpzCQkrPSBkdW1wX2kzODYubwog
ZW5kaWYKIAoraWZlcSAoJChBUkNIKSx4ODZfNjQpCisJZHVtcC1vYmpzCQkrPSBkdW1wX3g4Nl82
NC5vCitlbmRpZgorCiBpZmVxICgkKEFSQ0gpLGFscGhhKQogCWR1bXAtb2JqcwkJKz0gZHVtcF9h
bHBoYS5vCiBlbmRpZgpkaWZmIC1OYXVyIGxpbnV4LTIuNC4yMV9sa2NkL2luY2x1ZGUvYXNtLXg4
Nl82NC9kdW1wLmggbGtjZF9saW51eF94ODZfNjQvaW5jbHVkZS9hc20teDg2XzY0L2R1bXAuaAot
LS0gbGludXgtMi40LjIxX2xrY2QvaW5jbHVkZS9hc20teDg2XzY0L2R1bXAuaAkxOTcwLTAxLTAx
IDA1OjMwOjAwLjAwMDAwMDAwMCArMDUzMAorKysgbGtjZF9saW51eF94ODZfNjQvaW5jbHVkZS9h
c20teDg2XzY0L2R1bXAuaAkyMDA0LTA3LTAyIDIxOjAxOjI4LjAwMDAwMDAwMCArMDUzMApAQCAt
MCwwICsxLDk4IEBACisvKgorICogS2VybmVsIGhlYWRlciBmaWxlIGZvciBMaW51eCBjcmFzaCBk
dW1wcy4KKyAqCisgKiBDcmVhdGVkIGJ5OiBNYXR0IFJvYmluc29uICh5YWtrZXJAc2dpLmNvbSkK
KyAqIAorICogbW9kaWZpZWQgZm9yIHg4Nl82NCBieTogU2FuamF5IEt1bWFyIChzYW5qYXkua3Vt
YXJAbm9pZGEuaGNsdGVjaC5jb20pCisgKgorICogQ29weXJpZ2h0IDE5OTkgU2lsaWNvbiBHcmFw
aGljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgY29kZSBpcyByZWxl
YXNlZCB1bmRlciB2ZXJzaW9uIDIgb2YgdGhlIEdOVSBHUEwuCisgKi8KKworLyogVGhpcyBoZWFk
ZXIgZmlsZSBob2xkcyB0aGUgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGNyYXNoIGR1bXAgaGVhZGVy
ICovCisjaWZuZGVmIF9BU01fRFVNUF9ICisjZGVmaW5lIF9BU01fRFVNUF9ICisKKy8qIG5lY2Vz
c2FyeSBoZWFkZXIgZmlsZXMgKi8KKyNpbmNsdWRlIDxhc20vcHRyYWNlLmg+ICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBmb3IgcHRfcmVncyAgICAgICAgICAgICAqLworI2luY2x1ZGUgPGxp
bnV4L3RocmVhZHMuaD4KKworLyogZGVmaW5pdGlvbnMgKi8KKyNkZWZpbmUgRFVNUF9BU01fTUFH
SUNfTlVNQkVSICAgICAweGRlYWRkZWFkVUxMICAvKiBtYWdpYyBudW1iZXIgICAgICAgICAgICAq
LworI2RlZmluZSBEVU1QX0FTTV9WRVJTSU9OX05VTUJFUiAgIDB4MyAgICAgICAgICAgIC8qIHZl
cnNpb24gbnVtYmVyICAgICAgICAgICovCisKKy8qIG1heCBudW1iZXIgb2YgY3B1cyAqLworI2Rl
ZmluZSBEVU1QX01BWF9OVU1fQ1BVUyAzMgorCisvKgorICogU3RydWN0dXJlOiBkdW1wX2hlYWRl
cl9hc21fdAorICogIEZ1bmN0aW9uOiBUaGlzIGlzIHRoZSBoZWFkZXIgZm9yIGFyY2hpdGVjdHVy
ZS1zcGVjaWZpYyBzdHVmZi4gIEl0CisgKiAgICAgICAgICAgIGZvbGxvd3MgcmlnaHQgYWZ0ZXIg
dGhlIGR1bXAgaGVhZGVyLgorICovCit0eXBlZGVmIHN0cnVjdCBfZHVtcF9oZWFkZXJfYXNtX3Mg
eworCisgICAgICAgIC8qIHRoZSBkdW1wIG1hZ2ljIG51bWJlciAtLSB1bmlxdWUgdG8gdmVyaWZ5
IGR1bXAgaXMgdmFsaWQgKi8KKyAgICAgICAgdWludDY0X3QgICAgICAgICAgICAgZGhhX21hZ2lj
X251bWJlcjsKKworICAgICAgICAvKiB0aGUgdmVyc2lvbiBudW1iZXIgb2YgdGhpcyBkdW1wICov
CisgICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgIGRoYV92ZXJzaW9uOworCisgICAgICAgIC8q
IHRoZSBzaXplIG9mIHRoaXMgaGVhZGVyIChpbiBjYXNlIHdlIGNhbid0IHJlYWQgaXQpICovCisg
ICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgIGRoYV9oZWFkZXJfc2l6ZTsKKworCS8qIHRoZSBl
c3AgZm9yIGkzODYgc3lzdGVtcyAqLworCXVpbnQzMl90ICAgICAgICAgICAgIGRoYV9lc3A7CisK
KwkvKiB0aGUgZWlwIGZvciBpMzg2IHN5c3RlbXMgKi8KKwl1aW50MzJfdCAgICAgICAgICAgICBk
aGFfZWlwOworCisJLyogdGhlIGR1bXAgcmVnaXN0ZXJzICovCisJc3RydWN0IHB0X3JlZ3MgICAg
ICAgZGhhX3JlZ3M7CisKKwkvKiBzbXAgc3BlY2lmaWMgKi8KKwl1aW50MzJfdAkgICAgIGRoYV9z
bXBfbnVtX2NwdXM7CisJdWludDMyX3QJICAgICBkaGFfZHVtcGluZ19jcHU7CQorCXN0cnVjdCBw
dF9yZWdzCSAgICAgZGhhX3NtcF9yZWdzW0RVTVBfTUFYX05VTV9DUFVTXTsKKwl1aW50NjRfdAkg
ICAgIGRoYV9zbXBfY3VycmVudF90YXNrW0RVTVBfTUFYX05VTV9DUFVTXTsKKwl1aW50NjRfdAkg
ICAgIGRoYV9zdGFja1tEVU1QX01BWF9OVU1fQ1BVU107Cit9IF9fYXR0cmlidXRlX18oKHBhY2tl
ZCkpIGR1bXBfaGVhZGVyX2FzbV90OworCisjaWZkZWYgX19LRVJORUxfXworc3RhdGljIGlubGlu
ZSB2b2lkIGdldF9jdXJyZW50X3JlZ3Moc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCit7CisJYXNtKCJt
b3ZxICUlcjE1LCAlMCI6ICI9ciIgKHJlZ3MtPnIxNSkpOworCWFzbSgibW92cSAlJXIxNCwgJTAi
OiAiPXIiIChyZWdzLT5yMTQpKTsKKwlhc20oIm1vdnEgJSVyMTMsICUwIjogIj1yIiAocmVncy0+
cjEzKSk7CisJYXNtKCJtb3ZxICUlcjEyLCAlMCI6ICI9ciIgKHJlZ3MtPnIxMikpOworCWFzbSgi
bW92cSAlJXJicCwgJTAiOiAiPXIiIChyZWdzLT5yYnApKTsKKwlhc20oIm1vdnEgJSVyYngsICUw
IjogIj1yIiAocmVncy0+cmJ4KSk7CisJYXNtKCJtb3ZxICUlcjExLCAlMCI6ICI9ciIgKHJlZ3Mt
PnIxMSkpOworCWFzbSgibW92cSAlJXIxMCwgJTAiOiAiPXIiIChyZWdzLT5yMTApKTsKKwlhc20o
Im1vdnEgJSVyOSwgJTAiOiAiPXIiIChyZWdzLT5yOSkpOworCWFzbSgibW92cSAlJXI4LCAlMCI6
ICI9ciIgKHJlZ3MtPnI4KSk7CisJYXNtKCJtb3ZxICUlcmF4LCAlMCI6ICI9ciIgKHJlZ3MtPnJh
eCkpOworCWFzbSgibW92cSAlJXJjeCwgJTAiOiAiPXIiIChyZWdzLT5yY3gpKTsKKwlhc20oIm1v
dnEgJSVyZHgsICUwIjogIj1yIiAocmVncy0+cmR4KSk7CisJYXNtKCJtb3ZxICUlcnNpLCAlMCI6
ICI9ciIgKHJlZ3MtPnJzaSkpOworCWFzbSgibW92cSAlJXJkaSwgJTAiOiAiPXIiIChyZWdzLT5y
ZGkpKTsKKwlhc20oIm1vdmwgJSVjcywgJTAiOiAiPW0iIChyZWdzLT5jcykpOworCWFzbSgibW92
cSAlJXJzcCwgJTAiOiAiPXIiIChyZWdzLT5yc3ApKTsKKwlhc20oIm1vdmwgJSVzcywgJTAiOiAi
PW0iIChyZWdzLT5zcykpOworCWFzbSgicHVzaGY7IHBvcCAlMCIgOiI9bSIocmVncy0+ZWZsYWdz
KSk7CisJcmVncy0+cmlwID0gKHVuc2lnbmVkIGxvbmcpY3VycmVudF90ZXh0X2FkZHIoKTsKK30K
KworZXh0ZXJuIHZvbGF0aWxlIGludCBkdW1wX2luX3Byb2dyZXNzOworZXh0ZXJuIHVuc2lnbmVk
IGxvbmcgaXJxX2FmZmluaXR5W107CitleHRlcm4gZHVtcF9oZWFkZXJfYXNtX3QgZHVtcF9oZWFk
ZXJfYXNtOworCisjaWZkZWYgQ09ORklHX1NNUAorZXh0ZXJuIGludCAoKmR1bXBfaXBpX2Z1bmN0
aW9uX3B0cikoc3RydWN0IHB0X3JlZ3MgKik7CitleHRlcm4gdm9pZCBkdW1wX3NlbmRfaXBpKHZv
aWQpOworI2Vsc2UKKyNkZWZpbmUgZHVtcF9zZW5kX2lwaSgpCisjZW5kaWYKKyNlbmRpZiAvKiBf
X0tFUk5FTF9fICovCisKKyNlbmRpZiAvKiBfQVNNX0RVTVBfSCAqLwpkaWZmIC1OYXVyIGxpbnV4
LTIuNC4yMV9sa2NkL2luY2x1ZGUvYXNtLXg4Nl82NC9od19pcnEuaCBsa2NkX2xpbnV4X3g4Nl82
NC9pbmNsdWRlL2FzbS14ODZfNjQvaHdfaXJxLmgKLS0tIGxpbnV4LTIuNC4yMV9sa2NkL2luY2x1
ZGUvYXNtLXg4Nl82NC9od19pcnEuaAkyMDAzLTA2LTEzIDIwOjIxOjM4LjAwMDAwMDAwMCArMDUz
MAorKysgbGtjZF9saW51eF94ODZfNjQvaW5jbHVkZS9hc20teDg2XzY0L2h3X2lycS5oCTIwMDQt
MDctMDEgMjA6NTA6NDUuMDAwMDAwMDAwICswNTMwCkBAIC01Miw2ICs1Miw5IEBACiAjZGVmaW5l
IFJFU0NIRURVTEVfVkVDVE9SCTB4ZmMKIC8qIDB4ZmEgZnJlZSAqLwogI2RlZmluZSBDQUxMX0ZV
TkNUSU9OX1ZFQ1RPUgkweGZiCisjaWYgZGVmaW5lZChDT05GSUdfRFVNUCkgfHwgZGVmaW5lZChD
T05GSUdfRFVNUF9NT0RVTEUpCisjZGVmaW5lIERVTVBfVkVDVE9SICAgICAweGZhCisjZW5kaWYK
IAogLyoKICAqIExvY2FsIEFQSUMgdGltZXIgSVJRIHZlY3RvciBpcyBvbiBhIGRpZmZlcmVudCBw
cmlvcml0eSBsZXZlbCwKZGlmZiAtTmF1ciBsaW51eC0yLjQuMjFfbGtjZC9NYWtlZmlsZSBsa2Nk
X2xpbnV4X3g4Nl82NC9NYWtlZmlsZQotLS0gbGludXgtMi40LjIxX2xrY2QvTWFrZWZpbGUJMjAw
NC0wNi0wNCAxMDo1NDo0NS4wMDAwMDAwMDAgKzA1MzAKKysrIGxrY2RfbGludXhfeDg2XzY0L01h
a2VmaWxlCTIwMDQtMDctMDEgMjE6MzI6MDYuMDAwMDAwMDAwICswNTMwCkBAIC0xOTAsNiArMTkw
LDcgQEAKIERSSVZFUlMtJChDT05GSUdfQkxVRVopICs9IGRyaXZlcnMvYmx1ZXRvb3RoL2JsdWV0
b290aC5vCiBEUklWRVJTLSQoQ09ORklHX0hPVFBMVUdfUENJKSArPSBkcml2ZXJzL2hvdHBsdWcv
dm1saW51eC1vYmoubwogRFJJVkVSUy0kKENPTkZJR19JU0ROX0JPT0wpICs9IGRyaXZlcnMvaXNk
bi92bWxpbnV4LW9iai5vCitEUklWRVJTLSQoQ09ORklHX0RVTVApICs9IGRyaXZlcnMvZHVtcC9k
dW1wLm8KIAogRFJJVkVSUyA6PSAkKERSSVZFUlMteSkKIAo=

------_=_NextPart_001_01C463D5.DCAC6B0C--


-------------------------------------------------------
This SF.Net email sponsored by Black Hat Briefings & Training.
Attend Black Hat Briefings & Training, Las Vegas July 24-29 - 
digital self defense, top technical experts, no vendor pitches, 
unmatched networking opportunities. Visit www.blackhat.com