IDE-Driver Update :: Testing Requested

Andre M. Hedrick (hedrick@astro.dyer.vanderbilt.edu)
Thu, 20 Aug 1998 13:25:48 -0500 (CDT)


This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.

--998314481-513185178-903627920=:28909
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
Content-ID: <Pine.LNX.3.96.980820112325.29137B@Astro.Dyer.Vanderbilt.Edu>

This is the combination of both my ide-drivers suggested update, and
Russell King's work on ARM, PPC, and M68K IDE-Systems.

This patch is function and stable on two (2) intel SMP boxes.
The other attachments are syslog and mptable reports from
a Dual P5.

Geert Uytterhoeven for Amiga's reported that an earlier patch
failed to complete the IDE setup, but no crash. This problem
should be fixed, since I added back the missing code.

Eddie C. Dost for Sparc64 informed me of the need for the
IDE_CONTROL_OFFSET be set to zero (0), if it is not properly
setup by the driver. This is to eases the debug of core_dumps,
and brings the new driver into compliance with old one.

The depth of this patch and the proposed changes are kernel wide.
All platforms are touched except for Sparc, note that Sparc64 is
included and not excluded.

If this is adopted before 2.2, then the following systems should
have IDE-driver support as a default option.

ARM Acorn Archimedes/A5000
ICS IDE Interface
RAPIDE32 Interface
M68K Atari/Amiga/Macintosh
linux/drivers/block/buddha.c -- Amiga Buddha and Catweasel IDE Driver
Buddha IDE interface
Catweasel IDE interface
linux/drivers/block/falconide.c -- Atari Falcon IDE Driver
Falcon IDE interface
linux/drivers/block/gayle.c -- Amiga Gayle IDE Driver
Gayle IDE interface
IDE doubler interface
linux/drivers/block/macide.c -- Macintosh IDE Driver
Macintosh Quadra IDE interface
Macintosh Powerbook IDE interface

PPC Apus/PMac/Mbx/Chrp/Prep

Granted that some of these may be present in the current development
kernel, however many are not. IMHO it is important for those who can
and are will to test this do so. The methodolgy for this change
allows for future additions for IDE hardware/chipsets that have
non-standard locations/steppings of the IDE hardware ioports.
Some hardware use only a subset of the ioports.

Being allowed to dynamically assign the address locations and
then perfrom a blanket memcopy into the standard ide-driver
calls, yields a greater flexablity for new hardware additions.

This concept is brought to you by Russell King et al. and integrating
attemps by me.

Please note the following, this should be considered an ALPHA development
patch for all systems except intel's. PPC's and M68K's should exercise
caution since these changes are for conformity. Alpha's, MIPS, and
Sparc64's should be unaffected.

In all cases "BACK UP FIRST" or use a crashable system.....

Lastly, Please maintian this CC-list so that all platforms can cross
report successes and failures (none, I hope).

Regards,
Andre Hedrick
Dyer Observatory
Vanderbilt University

--998314481-513185178-903627920=:28909
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="2.1.117.ide+apm.patch.13"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.96.980820104520.28909B@Astro.Dyer.Vanderbilt.Edu>
Content-Description:

ZGlmZiAtdXJOIGxpbnV4LTIuMS4xMTctcHJpc3RpbmUvRG9jdW1lbnRhdGlv
bi9Db25maWd1cmUuaGVscCBsaW51eC9Eb2N1bWVudGF0aW9uL0NvbmZpZ3Vy
ZS5oZWxwDQotLS0gbGludXgtMi4xLjExNy1wcmlzdGluZS9Eb2N1bWVudGF0
aW9uL0NvbmZpZ3VyZS5oZWxwCVRodSBBdWcgMjAgMDA6MTQ6MTIgMTk5OA0K
KysrIGxpbnV4L0RvY3VtZW50YXRpb24vQ29uZmlndXJlLmhlbHAJVGh1IEF1
ZyAyMCAwMDoxODozMCAxOTk4DQpAQCAtMzA4LDYgKzMwOCwxNyBAQA0KICAg
c2F5IE0gaGVyZSBhbmQgcmVhZCBEb2N1bWVudGF0aW9uL21vZHVsZXMudHh0
LiBUaGUgbW9kdWxlIHdpbGwgYmUNCiAgIGNhbGxlZCBpZGUtY2Quby4NCiAN
CitJbmNsdWRlIENELUNoYW5nZXIgUmVwb3J0aW5nIHN1cHBvcnQgKEVYUEVS
SU1FTlRBTCkNCitDT05GSUdfQkxLX0RFVl9JREVDRF9TTE9UUw0KKyAgSWYg
eW91IGhhdmUgYW4gSURFL0FUQVBJIG11bHRpLXNsb3QgY2QtY2hhbmdlciBh
bmQgeW91IHdhbnQNCisgIHRvIHJlcG9ydCB3aGljaCBzbG90cyBoYXZlIGRp
c2stcHJlc2VudCwgc2F5IFkuICBJZiB5b3Ugc2F5IFkNCisgIGFuZCB0aGVy
ZSBpcyBub3QgYSBtdWx0aS1zbG90IGNkcm9tIHByZXNlbnQsIHRoaXMgY29k
ZSBpcyBza2lwcGVkLg0KKw0KKyAgVGhpcyBjb3VsZCBiZSB0aGUgYmFzZXMg
b2YgbXVsdGktZGlzayBhY2Nlc3MgYmFzZWQgb24gbXVsdGktbW91bnRzLg0K
KyAgVGhpcyBpcyBzdGlsbCBwaWUtaW4tdGhlLXNreS4NCisNCisgIElmIHVu
c3VyZSwgc2F5IE4uDQorDQogSW5jbHVkZSBJREUvQVRBUEkgVEFQRSBzdXBw
b3J0DQogQ09ORklHX0JMS19ERVZfSURFVEFQRQ0KICAgSWYgeW91IGhhdmUg
YW4gSURFIHRhcGUgZHJpdmUgdXNpbmcgdGhlIEFUQVBJIHByb3RvY29sLCBz
YXkgWS4NCkBAIC01MDYsNiArNTE3LDI3IEBADQogICAodXNlZCBpbiBTUEFS
QzY0LCBhbW9uZyBvdGhlcnMpLg0KIA0KICAgUGxlYXNlIHJlYWQgdGhlIGNv
bW1lbnRzIGF0IHRoZSB0b3Agb2YgZHJpdmVycy9ibG9jay9uczg3NDE1LmMu
DQorDQorVklBODJDNTg2IGNoaXBzZXQgc3VwcG9ydCAoRVhQRVJJTUVOVEFM
KQ0KK0NPTkZJR19CTEtfREVWX1ZJQTgyQzU4Ng0KKyAgVGhpcyBhZGRzIGlu
aXRpYWwgdGltaW5nIHNldHRpbmdzIGZvciBWSUEgKFUpRE1BIG9uYm9hcmQg
aWRlDQorICBjb250cm9sbGVycyB0aGF0IGFyZSBBVEEzIGNvbXBsaWFudC4g
IE1heSB3b3JrIHdpdGggQVRBNCBzeXN0ZW1zLA0KKyAgYnV0IG5vdCB0ZXN0
ZWQgdG8gZGF0ZS4NCisNCisgIFRoaXMgcmVxdWlyZXMgQ09ORklHX0lERURN
QV9BVVRPIHRvIGJlIGVuYWJsZWQuDQorICBQbGVhc2UgcmVhZCB0aGUgY29t
bWVudHMgYXQgdGhlIHRvcCBvZiBkcml2ZXJzL2Jsb2NrL3ZpYTgyQzU4Ni5j
DQorDQorICBJZiB1bnN1cmUsIHNheSBOLg0KKw0KK0hQVDM0MyBjaGlwc2V0
IHN1cHBvcnQgKEVYUEVSSU1FTlRBTCkNCitDT05GSUdfQkxLX0RFVl9IUFQz
NDMNCisgIFRoaXMgZHJpdmVyIGFkZHMgdXAgdG8gNCBtb3JlIGVpZGUgZGV2
aWNlcyBzaGFyaW5nIGEgc2luZ2xlIGludGVycnVwdC4NCisgIFRoZSBIUFQz
NDMgY2hpcHNldCBpbiBpdCdzIGN1cnJlbnQgZm9ybSBpcyBhIG5vbi1ib290
YWJsZSBQQ0kNCisgIFVETUEgY29udHJvbGxlci4gIFRoaXMgZHJpdmVyIHJl
cXVpcmVzIGR5bmFtaWMgdHVuaW5nIG9mIHRoZQ0KKyAgY2hpcHNldCBkdXJp
bmcgdGhlIGlkZS1wcm9iZSBhdCBib290LiAgSXQgaXMgcmVwb3J0ZWQgdG8g
c3VwcG9ydA0KKyAgRFZEIElJIGRyaXZlcywgYnkgdGhlIG1hbnVmYWN0dXJl
ci4NCisNCisgIFBsZWFzZSByZWFkIHRoZSBjb21tZW50cyBhdCB0aGUgdG9w
IG9mIGRyaXZlcnMvYmxvY2svaHB0MzQzLmMNCiANCiBRREkgUUQ2NTgwIHN1
cHBvcnQNCiBDT05GSUdfQkxLX0RFVl9RRDY1ODANCmRpZmYgLXVyTiBsaW51
eC0yLjEuMTE3LXByaXN0aW5lL2FyY2gvcHBjL2tlcm5lbC9tYnhfc2V0dXAu
YyBsaW51eC9hcmNoL3BwYy9rZXJuZWwvbWJ4X3NldHVwLmMNCi0tLSBsaW51
eC0yLjEuMTE3LXByaXN0aW5lL2FyY2gvcHBjL2tlcm5lbC9tYnhfc2V0dXAu
YwlUaHUgQXVnIDIwIDAwOjA5OjU5IDE5OTgNCisrKyBsaW51eC9hcmNoL3Bw
Yy9rZXJuZWwvbWJ4X3NldHVwLmMJVGh1IEF1ZyAyMCAwMDoxODoxOSAxOTk4
DQpAQCAtNTMsMjIgKzUzLDM3IEBADQogZXh0ZXJuIHVuc2lnbmVkIGxvbmcg
ZmluZF9hdmFpbGFibGVfbWVtb3J5KHZvaWQpOw0KIGV4dGVybiB2b2lkIG1i
eF9jcG1fcmVzZXQodWludCk7DQogDQotDQotdm9pZCBtYnhfaWRlX2luaXRf
aHdpZl9wb3J0cyhpZGVfaW9yZWdfdCAqcCwgaWRlX2lvcmVnX3QgYmFzZSwg
aW50ICppcnEpDQordm9pZCBtYnhfaWRlX2luaXRfaHdpZl9wb3J0cygJaHdf
cmVnc190ICpodywNCisJCQkJaW50IGRhdGFfcG9ydCwNCisJCQkJaW50IGN0
cmxfcG9ydCwNCisJCQkJaW50ICppcnEpDQogew0KKwlpZGVfaW9yZWdfdCBy
ZWcgPSAoaWRlX2lvcmVnX3QpIGRhdGFfcG9ydDsNCisJaW50IGk7DQogDQot
CSpwID0gMDsNCiAJKmlycSA9IDA7DQogDQotCWlmIChiYXNlICE9IDApCQkv
KiBPbmx5IG1hcCB0aGUgZmlyc3QgQVRBIGZsYXNoIGRyaXZlICovDQorCWlm
IChkYXRhX3BvcnQgIT0gMCkJLyogT25seSBtYXAgdGhlIGZpcnN0IEFUQSBm
bGFzaCBkcml2ZSAqLw0KIAkJcmV0dXJuOw0KKw0KICNpZmRlZiBBVEFfRkxB
U0gNCi0JYmFzZSA9ICh1bnNpZ25lZCBsb25nKSBpb3JlbWFwKFBDTUNJQV9N
RU1fQUREUiwgMHgyMDApOw0KLQlmb3IgKGkgPSAwOyBpIDwgODsgKytpKQ0K
LQkJKnArKyA9IGJhc2UrKzsNCi0JKnAgPSArK2Jhc2U7CQkvKiBEb2VzIG5v
dCBtYXR0ZXIgKi8NCisNCisJcmVnID0gKGlkZV9pb3JlZ190KSBpb3JlbWFw
KFBDTUNJQV9NRU1fQUREUiwgMHgyMDApOw0KKw0KKwlmb3IgKGkgPSBJREVf
REFUQV9PRkZTRVQ7IGkgPD0gSURFX1NUQVRVU19PRkZTRVQ7IGkrKykgew0K
KwkJaHctPmlvX3BvcnRzW2ldID0gcmVnOw0KKwkJcmVnICs9IDE7DQorCX0N
CisNCisJLyogRG9lcyBub3QgbWF0dGVyICovDQorDQorCWlmIChjdHJsX3Bv
cnQpIHsNCisJCWh3LT5pb19wb3J0c1tJREVfQ09OVFJPTF9PRkZTRVRdID0g
KGlkZV9pb3JlZ190KSBjdHJsX3BvcnQ7DQorCX0gZWxzZSB7DQorCQlody0+
aW9fcG9ydHNbSURFX0NPTlRST0xfT0ZGU0VUXSA9IHJlZzsNCisJfQ0KIAlp
ZiAoaXJxKQ0KLQkJKmlycSA9IDEzOw0KKwkJaHctPmlycSA9IDEzOw0KICNl
bmRpZg0KIH0NCiANCmRpZmYgLXVyTiBsaW51eC0yLjEuMTE3LXByaXN0aW5l
L2FyY2gvcHBjL2tlcm5lbC9wbWFjX3NldHVwLmMgbGludXgvYXJjaC9wcGMv
a2VybmVsL3BtYWNfc2V0dXAuYw0KLS0tIGxpbnV4LTIuMS4xMTctcHJpc3Rp
bmUvYXJjaC9wcGMva2VybmVsL3BtYWNfc2V0dXAuYwlUaHUgQXVnIDIwIDAw
OjA5OjU5IDE5OTgNCisrKyBsaW51eC9hcmNoL3BwYy9rZXJuZWwvcG1hY19z
ZXR1cC5jCVRodSBBdWcgMjAgMDA6MTg6MTkgMTk5OA0KQEAgLTMwMyw2ICsz
MDMsNDYgQEANCiAJfQ0KIH0NCiANCisjaWZkZWYgX19ORVdfX0lERQ0KKw0K
K19faW5pdGZ1bmModm9pZCBwbWFjX2lkZV9pbml0X2h3aWZfcG9ydHMgKAlo
d19yZWdzX3QgKmh3LA0KKwkJCQkJCWludCBkYXRhX3BvcnQsDQorCQkJCQkJ
aW50IGN0cmxfcG9ydCwNCisJCQkJCQlpbnQgKmlycSkpDQorew0KKwlpZGVf
aW9yZWdfdCByZWcgPSAoaWRlX2lvcmVnX3QpIGRhdGFfcG9ydDsNCisJaW50
IGk7DQorDQorCWlmIChkYXRhX3BvcnQgPT0gMCkNCisJCXJldHVybjsNCisN
CisJaWYgKHJlZyA9PSBtYl9jZF9iYXNlICYmICFjaGVja19tZWRpYV9iYXko
TUJfQ0QpKSB7DQorCQltYl9jZF9pbmRleCA9IC0xOw0KKwkJcmV0dXJuOw0K
Kwl9DQorDQorCWZvciAoaSA9IElERV9EQVRBX09GRlNFVDsgaSA8PSBJREVf
U1RBVFVTX09GRlNFVDsgaSsrKSB7DQorCQlody0+aW9fcG9ydHNbaV0gPSBy
ZWcgKiAweDEwOw0KKwkJcmVnICs9IDE7DQorCX0NCisJaWYgKGN0cmxfcG9y
dCkgew0KKwkJaHctPmlvX3BvcnRzW0lERV9DT05UUk9MX09GRlNFVF0gPSAo
aWRlX2lvcmVnX3QpIGN0cmxfcG9ydDsNCisJfSBlbHNlIHsNCisJCWh3LT5p
b19wb3J0c1tJREVfQ09OVFJPTF9PRkZTRVRdID0gaHctPmlvX3BvcnRzW0lE
RV9EQVRBX09GRlNFVF0gKyAweDE2MDsNCisJfQ0KKwlpZiAoaXJxICE9IE5V
TEwpIHsNCisJCSppcnEgPSAwOw0KKwkJZm9yIChpID0gMDsgaSA8IE1BWF9I
V0lGUzsgKytpKSB7DQorCQkJaWYgKGJhc2UgPT0gcG1hY19pZGVfcmVnYmFz
ZVtpXSkgew0KKwkJCQkqaXJxID0gcG1hY19pZGVfaXJxW2ldOw0KKwkJCQli
cmVhazsNCisJCQl9DQorCQl9DQorCX0NCit9DQorDQorI2VuZGlmIC8qIF9f
TkVXX19JREUgKi8NCisNCiBfX2luaXRmdW5jKHZvaWQgcG1hY19pZGVfcHJv
YmUodm9pZCkpDQogew0KIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wOw0KZGlm
ZiAtdXJOIGxpbnV4LTIuMS4xMTctcHJpc3RpbmUvYXJjaC9wcGMva2VybmVs
L3ByZXBfc2V0dXAuYyBsaW51eC9hcmNoL3BwYy9rZXJuZWwvcHJlcF9zZXR1
cC5jDQotLS0gbGludXgtMi4xLjExNy1wcmlzdGluZS9hcmNoL3BwYy9rZXJu
ZWwvcHJlcF9zZXR1cC5jCVRodSBBdWcgMjAgMDA6MDk6NTkgMTk5OA0KKysr
IGxpbnV4L2FyY2gvcHBjL2tlcm5lbC9wcmVwX3NldHVwLmMJVGh1IEF1ZyAy
MCAwMDoxODoxOSAxOTk4DQpAQCAtMjE2LDE0ICsyMTYsMjMgQEANCiAjZW5k
aWYNCiB9DQogDQotX19pbml0ZnVuYyh2b2lkIHByZXBfaWRlX2luaXRfaHdp
Zl9wb3J0cyAoaWRlX2lvcmVnX3QgKnAsIGlkZV9pb3JlZ190IGJhc2UsIGlu
dCAqaXJxKSkNCitfX2luaXRmdW5jKHZvaWQgcHJlcF9pZGVfaW5pdF9od2lm
X3BvcnRzICgJaHdfcmVnc190ICpodywNCisJCQkJCQlpbnQgZGF0YV9wb3J0
LA0KKwkJCQkJCWludCBjdHJsX3BvcnQsDQorCQkJCQkJaW50ICppcnEpKQ0K
IHsNCi0JaWRlX2lvcmVnX3QgcG9ydCA9IGJhc2U7DQotCWludCBpID0gODsN
CisJaWRlX2lvcmVnX3QgcmVnID0gKGlkZV9pb3JlZ190KSBkYXRhX3BvcnQ7
DQorCWludCBpOw0KIA0KLQl3aGlsZSAoaS0tKQ0KLQkJKnArKyA9IHBvcnQr
KzsNCi0JKnArKyA9IGJhc2UgKyAweDIwNjsNCisJZm9yIChpID0gSURFX0RB
VEFfT0ZGU0VUOyBpIDw9IElERV9TVEFUVVNfT0ZGU0VUOyBpKyspIHsNCisJ
CWh3LT5pb19wb3J0c1tpXSA9IHJlZzsNCisJCXJlZyArPSAxOw0KKwl9DQor
CWlmIChjdHJsX3BvcnQpIHsNCisJCWh3LT5pb19wb3J0c1tJREVfQ09OVFJP
TF9PRkZTRVRdID0gKGlkZV9pb3JlZ190KSBjdHJsX3BvcnQ7DQorCX0gZWxz
ZSB7DQorCQlody0+aW9fcG9ydHNbSURFX0NPTlRST0xfT0ZGU0VUXSA9ICBo
dy0+aW9fcG9ydHNbSURFX0RBVEFfT0ZGU0VUXSArIDB4MjA2Ow0KKwl9DQog
CWlmIChpcnEgIT0gTlVMTCkNCiAJCSppcnEgPSAwOw0KIH0NCmRpZmYgLXVy
TiBsaW51eC0yLjEuMTE3LXByaXN0aW5lL2FyY2gvcHBjL2tlcm5lbC9zZXR1
cC5jIGxpbnV4L2FyY2gvcHBjL2tlcm5lbC9zZXR1cC5jDQotLS0gbGludXgt
Mi4xLjExNy1wcmlzdGluZS9hcmNoL3BwYy9rZXJuZWwvc2V0dXAuYwlUaHUg
QXVnIDIwIDAwOjA5OjU5IDE5OTgNCisrKyBsaW51eC9hcmNoL3BwYy9rZXJu
ZWwvc2V0dXAuYwlUaHUgQXVnIDIwIDAwOjE4OjE5IDE5OTgNCkBAIC0yNDAs
MTggKzI0MCwyMSBAQA0KIH0NCiANCiAjaWZkZWYgQ09ORklHX0JMS19ERVZf
SURFDQotdm9pZCBpZGVfaW5pdF9od2lmX3BvcnRzIChpZGVfaW9yZWdfdCAq
cCwgaWRlX2lvcmVnX3QgYmFzZSwgaW50ICppcnEpDQordm9pZCBpZGVfaW5p
dF9od2lmX3BvcnRzICgJaHdfcmVnc190ICpodywNCisJCQkJaW50IGRhdGFf
cG9ydCwNCisJCQkJaW50IGN0cmxfcG9ydCwNCisJCQkJaW50ICppcnEpDQog
ew0KICNpZiAhZGVmaW5lZChDT05GSUdfTUJYKSAmJiAhZGVmaW5lZChDT05G
SUdfQVBVUykNCiAJc3dpdGNoIChfbWFjaGluZSkgew0KIAljYXNlIF9NQUNI
X1BtYWM6DQotCQlwbWFjX2lkZV9pbml0X2h3aWZfcG9ydHMocCxiYXNlLGly
cSk7DQorCQlwbWFjX2lkZV9pbml0X2h3aWZfcG9ydHMoJmh3LCBkYXRhX3Bv
cnQsIGN0cmxfcG9ydCwgaXJxKTsNCiAJCWJyZWFrOw0KIAljYXNlIF9NQUNI
X2NocnA6DQotCQljaHJwX2lkZV9pbml0X2h3aWZfcG9ydHMocCxiYXNlLGly
cSk7DQorCQljaHJwX2lkZV9pbml0X2h3aWZfcG9ydHMoJmh3LCBkYXRhX3Bv
cnQsIGN0cmxfcG9ydCwgaXJxKTsNCiAJCWJyZWFrOw0KIAljYXNlIF9NQUNI
X3ByZXA6DQotCQlwcmVwX2lkZV9pbml0X2h3aWZfcG9ydHMocCxiYXNlLGly
cSk7DQorCQlwcmVwX2lkZV9pbml0X2h3aWZfcG9ydHMoJmh3LCBkYXRhX3Bv
cnQsIGN0cmxfcG9ydCwgaXJxKTsNCiAJCWJyZWFrOw0KIAl9DQogI2VuZGlm
DQpkaWZmIC11ck4gbGludXgtMi4xLjExNy1wcmlzdGluZS9kcml2ZXJzL2Js
b2NrL0NvbmZpZy5pbiBsaW51eC9kcml2ZXJzL2Jsb2NrL0NvbmZpZy5pbg0K
LS0tIGxpbnV4LTIuMS4xMTctcHJpc3RpbmUvZHJpdmVycy9ibG9jay9Db25m
aWcuaW4JVGh1IEF1ZyAyMCAwMDowOTo0MCAxOTk4DQorKysgbGludXgvZHJp
dmVycy9ibG9jay9Db25maWcuaW4JVGh1IEF1ZyAyMCAwMDoyNzozOSAxOTk4
DQpAQCAtMjAsNiArMjAsMTEgQEANCiAgIGJvb2wgJyAgIFVzZSBvbGQgZGlz
ay1vbmx5IGRyaXZlciBvbiBwcmltYXJ5IGludGVyZmFjZScgQ09ORklHX0JM
S19ERVZfSERfSURFDQogICBkZXBfdHJpc3RhdGUgJyAgIEluY2x1ZGUgSURF
L0FUQS0yIERJU0sgc3VwcG9ydCcgQ09ORklHX0JMS19ERVZfSURFRElTSyAk
Q09ORklHX0JMS19ERVZfSURFDQogICBkZXBfdHJpc3RhdGUgJyAgIEluY2x1
ZGUgSURFL0FUQVBJIENEUk9NIHN1cHBvcnQnIENPTkZJR19CTEtfREVWX0lE
RUNEICRDT05GSUdfQkxLX0RFVl9JREUNCisgIGlmIFsgIiRDT05GSUdfRVhQ
RVJJTUVOVEFMIiA9ICJ5IiBdOyB0aGVuDQorICAgIGlmIFsgIiRDT05GSUdf
QkxLX0RFVl9JREVDRCIgPSAieSIgXTsgdGhlbg0KKyAgICAgIGJvb2wgJyAg
ICAgSW5jbHVkZSBDRC1DaGFuZ2VyIFJlcG9ydGluZyBzdXBwb3J0IChFWFBF
UklNRU5UQUwpJyBDT05GSUdfQkxLX0RFVl9JREVDRF9TTE9UUw0KKyAgICBm
aQ0KKyAgZmkNCiAgIGRlcF90cmlzdGF0ZSAnICAgSW5jbHVkZSBJREUvQVRB
UEkgVEFQRSBzdXBwb3J0JyBDT05GSUdfQkxLX0RFVl9JREVUQVBFICRDT05G
SUdfQkxLX0RFVl9JREUNCiAgIGRlcF90cmlzdGF0ZSAnICAgSW5jbHVkZSBJ
REUvQVRBUEkgRkxPUFBZIHN1cHBvcnQnIENPTkZJR19CTEtfREVWX0lERUZM
T1BQWSAkQ09ORklHX0JMS19ERVZfSURFDQogICBkZXBfdHJpc3RhdGUgJyAg
IFNDU0kgZW11bGF0aW9uIHN1cHBvcnQnIENPTkZJR19CTEtfREVWX0lERVND
U0kgJENPTkZJR19CTEtfREVWX0lERQ0KQEAgLTQxLDYgKzQ2LDggQEANCiAg
ICAgICAgICAgaWYgWyAiJENPTkZJR19CTEtfREVWX0lERURNQSIgPSAieSIg
XTsgdGhlbg0KICAgICAgICAgICAgIGJvb2wgJyAgICAgVGVrcmFtIFRSTTI5
MCBjaGlwc2V0IHN1cHBvcnQgKEVYUEVSSU1FTlRBTCknIENPTkZJR19CTEtf
REVWX1RSTTI5MA0KICAgICAgICAgICAgIGJvb2wgJyAgICAgTlM4NzQxNSBj
aGlwc2V0IHN1cHBvcnQgKEVYUEVSSU1FTlRBTCknIENPTkZJR19CTEtfREVW
X05TODc0MTUNCisgICAgICAgICAgICBib29sICcgICAgIFZJQTgyQzU4NiBj
aGlwc2V0IHN1cHBvcnQgKEVYUEVSSU1FTlRBTCknIENPTkZJR19CTEtfREVW
X1ZJQTgyQzU4Ng0KKyMgICAgICAgICAgICBib29sICcgICAgIEhQVDM0MyBj
aGlwc2V0IHN1cHBvcnQgKEVYUEVSSU1FTlRBTCknIENPTkZJR19CTEtfREVW
X0hQVDM0Mw0KICAgICAgICAgICBmaQ0KICAgICAgICAgZmkNCiAgICAgICBm
aQ0KQEAgLTYyLDYgKzY5LDIxIEBADQogICAgICAgICBib29sICcgICAgIFBS
T01JU0UgREM0MDMwIHN1cHBvcnQgKEVYUEVSSU1FTlRBTCknIENPTkZJR19C
TEtfREVWX1BEQzQwMzANCiAJIGZpDQogICAgICAgZmkNCisgICAgZmkNCisg
ICAgaWYgWyAiJENPTkZJR19BTUlHQSIgPSAieSIgXTsgdGhlbg0KKyAgICAg
IGJvb2wgJyAgIEFtaWdhIEdheWxlIElERSBpbnRlcmZhY2Ugc3VwcG9ydCcg
Q09ORklHX0JMS19ERVZfR0FZTEUNCisgICAgICBpZiBbICIkQ09ORklHX0VY
UEVSSU1FTlRBTCIgPSAieSIgXTsgdGhlbg0KKyAgICAgICAgYm9vbCAnICAg
QW1pZ2EgSURFIERvdWJsZXIgc3VwcG9ydCcgQ09ORklHX0JMS19ERVZfSURF
RE9VQkxFUiAkQ09ORklHX0JMS19ERVZfR0FZTEUNCisgICAgICBmaQ0KKyAg
ICBmaQ0KKyAgICBpZiBbICIkQ09ORklHX1pPUlJPIiA9ICJ5IiAtYSAiJENP
TkZJR19FWFBFUklNRU5UQUwiID0gInkiIF07IHRoZW4NCisgICAgICAgIGJv
b2wgJyAgIEJ1ZGRoYS9DYXR3ZWFzZWwgSURFIGludGVyZmFjZSBzdXBwb3J0
JyBDT05GSUdfQkxLX0RFVl9CVURESEENCisgICAgZmkNCisgICAgaWYgWyAi
JENPTkZJR19BVEFSSSIgPSAieSIgXTsgdGhlbg0KKyAgICAgIGJvb2wgJyAg
IEZhbGNvbiBJREUgaW50ZXJmYWNlIHN1cHBvcnQnIENPTkZJR19CTEtfREVW
X0ZBTENPTl9JREUNCisgICAgZmkNCisgICAgaWYgWyAiJENPTkZJR19NQUMi
ID0gInkiIF07IHRoZW4NCisgICAgICBib29sICcgICBNYWNpbnRvc2ggUXVh
ZHJhL1Bvd2VyYm9vayBJREUgaW50ZXJmYWNlIHN1cHBvcnQnIENPTkZJR19C
TEtfREVWX01BQ19JREUNCiAgICAgZmkNCiAgIGZpDQogZmkNCmRpZmYgLXVy
TiBsaW51eC0yLjEuMTE3LXByaXN0aW5lL2RyaXZlcnMvYmxvY2svTUFLRURF
Vi1JREU0NSBsaW51eC9kcml2ZXJzL2Jsb2NrL01BS0VERVYtSURFNDUNCi0t
LSBsaW51eC0yLjEuMTE3LXByaXN0aW5lL2RyaXZlcnMvYmxvY2svTUFLRURF
Vi1JREU0NQlXZWQgRGVjIDMxIDE4OjAwOjAwIDE5NjkNCisrKyBsaW51eC9k
cml2ZXJzL2Jsb2NrL01BS0VERVYtSURFNDUJVGh1IEF1ZyAyMCAwMDoxODow
NSAxOTk4DQpAQCAtMCwwICsxLDk5IEBADQorIyEvYmluL3NoDQorIw0KKyMJ
QW5kcmUgSGVkcmljayA8aGVkcmlja0Bhc3Ryby5keWVyLnZhbmRlcmJpbHQu
ZWR1Pg0KKyMNCisjCVRoZSBzb25nIGdvZXMsICJJIGRpZCBpdCB0aGUgaGFy
ZCB3YXkuLi4uLi4uLi4uLiINCisjDQorDQoraWYgWyAhIC1mIC9kZXYvaGRp
IF07IHRoZW4gXA0KKwllY2hvICJNYWtpbmcgSURFNCBQcmltYXJ5IERldmlj
ZXMgaGRpJ3MiOyBcDQorCW1rbm9kIC9kZXYvaGRpIGIgNTYgMDsgXA0KKwlt
a25vZCAvZGV2L2hkaTEgYiA1NiAxOyBcDQorCW1rbm9kIC9kZXYvaGRpMiBi
IDU2IDI7IFwNCisJbWtub2QgL2Rldi9oZGkzIGIgNTYgMzsgXA0KKwlta25v
ZCAvZGV2L2hkaTQgYiA1NiA0OyBcDQorCW1rbm9kIC9kZXYvaGRpNSBiIDU2
IDU7IFwNCisJbWtub2QgL2Rldi9oZGk2IGIgNTYgNjsgXA0KKwlta25vZCAv
ZGV2L2hkaTcgYiA1NiA3OyBcDQorCW1rbm9kIC9kZXYvaGRpOCBiIDU2IDg7
IFwNCisJbWtub2QgL2Rldi9oZGk5IGIgNTYgOTsgXA0KKwlta25vZCAvZGV2
L2hkaTEwIGIgNTYgMTA7IFwNCisJbWtub2QgL2Rldi9oZGkxMSBiIDU2IDEx
OyBcDQorCW1rbm9kIC9kZXYvaGRpMTIgYiA1NiAxMjsgXA0KKwlta25vZCAv
ZGV2L2hkaTEzIGIgNTYgMTM7IFwNCisJbWtub2QgL2Rldi9oZGkxNCBiIDU2
IDE0OyBcDQorCW1rbm9kIC9kZXYvaGRpMTUgYiA1NiAxNTsgXA0KKwlta25v
ZCAvZGV2L2hkaTE2IGIgNTYgMTY7IFwNCisJY2hvd24gcm9vdC5kaXNrIC9k
ZXYvaGRpKjsgXA0KKwljaG1vZCA2NjAgL2Rldi9oZGkqOyBcDQorZmkNCisN
CitpZiBbICEgLWYgL2Rldi9oZGogXTsgdGhlbiBcDQorCWVjaG8gIk1ha2lu
ZyBJREU0IFNlY29uZGFyeSBEZXZpY2VzIGhkaidzIjsgXA0KKwlta25vZCAv
ZGV2L2hkaiBiIDU2IDY0OyBcDQorCW1rbm9kIC9kZXYvaGRqMSBiIDU2IDY1
OyBcDQorCW1rbm9kIC9kZXYvaGRqMiBiIDU2IDY2OyBcDQorCW1rbm9kIC9k
ZXYvaGRqMyBiIDU2IDY3OyBcDQorCW1rbm9kIC9kZXYvaGRqNCBiIDU2IDY4
OyBcDQorCW1rbm9kIC9kZXYvaGRqNSBiIDU2IDY5OyBcDQorCW1rbm9kIC9k
ZXYvaGRqNiBiIDU2IDcwOyBcDQorCW1rbm9kIC9kZXYvaGRqNyBiIDU2IDcx
OyBcDQorCW1rbm9kIC9kZXYvaGRqOCBiIDU2IDcyOyBcDQorCW1rbm9kIC9k
ZXYvaGRqOSBiIDU2IDczOyBcDQorCW1rbm9kIC9kZXYvaGRqMTAgYiA1NiA3
NDsgXA0KKwlta25vZCAvZGV2L2hkajExIGIgNTYgNzU7IFwNCisJbWtub2Qg
L2Rldi9oZGoxMiBiIDU2IDc2OyBcDQorCW1rbm9kIC9kZXYvaGRqMTMgYiA1
NiA3NzsgXA0KKwlta25vZCAvZGV2L2hkajE0IGIgNTYgNzg7IFwNCisJbWtu
b2QgL2Rldi9oZGoxNSBiIDU2IDc5OyBcDQorCW1rbm9kIC9kZXYvaGRqMTYg
YiA1NiA4MDsgXA0KKwljaG93biByb290LmRpc2sgL2Rldi9oZGoqOyBcDQor
CWNobW9kIDY2MCAvZGV2L2hkaio7IFwNCitmaQ0KKw0KK2lmIFsgISAtZiAv
ZGV2L2hkayBdOyB0aGVuIFwNCisJZWNobyAiTWFraW5nIElERTUgUHJpbWFy
eSBEZXZpY2VzIGhkaydzIjsgXA0KKwlta25vZCAvZGV2L2hkayBiIDU3IDA7
IFwNCisJbWtub2QgL2Rldi9oZGsxIGIgNTcgMTsgXA0KKwlta25vZCAvZGV2
L2hkazIgYiA1NyAyOyBcDQorCW1rbm9kIC9kZXYvaGRrMyBiIDU3IDM7IFwN
CisJbWtub2QgL2Rldi9oZGs0IGIgNTcgNDsgXA0KKwlta25vZCAvZGV2L2hk
azUgYiA1NyA1OyBcDQorCW1rbm9kIC9kZXYvaGRrNiBiIDU3IDY7IFwNCisJ
bWtub2QgL2Rldi9oZGs3IGIgNTcgNzsgXA0KKwlta25vZCAvZGV2L2hkazgg
YiA1NyA4OyBcDQorCW1rbm9kIC9kZXYvaGRrOSBiIDU3IDk7IFwNCisJbWtu
b2QgL2Rldi9oZGsxMCBiIDU3IDEwOyBcDQorCW1rbm9kIC9kZXYvaGRrMTEg
YiA1NyAxMTsgXA0KKwlta25vZCAvZGV2L2hkazEyIGIgNTcgMTI7IFwNCisJ
bWtub2QgL2Rldi9oZGsxMyBiIDU3IDEzOyBcDQorCW1rbm9kIC9kZXYvaGRr
MTQgYiA1NyAxNDsgXA0KKwlta25vZCAvZGV2L2hkazE1IGIgNTcgMTU7IFwN
CisJbWtub2QgL2Rldi9oZGsxNiBiIDU3IDE2OyBcDQorCWNob3duIHJvb3Qu
ZGlzayAvZGV2L2hkayo7IFwNCisJY2htb2QgNjYwIC9kZXYvaGRrKjsgXA0K
K2ZpDQorDQoraWYgWyAhIC1mIC9kZXYvaGRsIF07IHRoZW4gXA0KKwllY2hv
ICJNYWtpbmcgSURFNSBTZWNvbmRhcnkgRGV2aWNlcyBoZGwncyI7IFwNCisJ
bWtub2QgL2Rldi9oZGwgYiA1NyA2NDsgXA0KKwlta25vZCAvZGV2L2hkbDEg
YiA1NyA2NTsgXA0KKwlta25vZCAvZGV2L2hkbDIgYiA1NyA2NjsgXA0KKwlt
a25vZCAvZGV2L2hkbDMgYiA1NyA2NzsgXA0KKwlta25vZCAvZGV2L2hkbDQg
YiA1NyA2ODsgXA0KKwlta25vZCAvZGV2L2hkbDUgYiA1NyA2OTsgXA0KKwlt
a25vZCAvZGV2L2hkbDYgYiA1NyA3MDsgXA0KKwlta25vZCAvZGV2L2hkbDcg
YiA1NyA3MTsgXA0KKwlta25vZCAvZGV2L2hkbDggYiA1NyA3MjsgXA0KKwlt
a25vZCAvZGV2L2hkbDkgYiA1NyA3MzsgXA0KKwlta25vZCAvZGV2L2hkbDEw
IGIgNTcgNzQ7IFwNCisJbWtub2QgL2Rldi9oZGwxMSBiIDU3IDc1OyBcDQor
CW1rbm9kIC9kZXYvaGRsMTIgYiA1NyA3NjsgXA0KKwlta25vZCAvZGV2L2hk
bDEzIGIgNTcgNzc7IFwNCisJbWtub2QgL2Rldi9oZGwxNCBiIDU3IDc4OyBc
DQorCW1rbm9kIC9kZXYvaGRsMTUgYiA1NyA3OTsgXA0KKwlta25vZCAvZGV2
L2hkbDE2IGIgNTcgODA7IFwNCisJY2hvd24gcm9vdC5kaXNrIC9kZXYvaGRs
KjsgXA0KKwljaG1vZCA2NjAgL2Rldi9oZGwqOyBcDQorZmkNCisNCmRpZmYg
LXVyTiBsaW51eC0yLjEuMTE3LXByaXN0aW5lL2RyaXZlcnMvYmxvY2svTWFr
ZWZpbGUgbGludXgvZHJpdmVycy9ibG9jay9NYWtlZmlsZQ0KLS0tIGxpbnV4
LTIuMS4xMTctcHJpc3RpbmUvZHJpdmVycy9ibG9jay9NYWtlZmlsZQlUaHUg
QXVnIDIwIDAwOjA5OjQwIDE5OTgNCisrKyBsaW51eC9kcml2ZXJzL2Jsb2Nr
L01ha2VmaWxlCVRodSBBdWcgMjAgMDA6Mjc6MjAgMTk5OA0KQEAgLTE1MCw2
ICsxNTAsMjYgQEANCiBJREVfT0JKUyArPSBuczg3NDE1Lm8NCiBlbmRpZg0K
IA0KK2lmZXEgKCQoQ09ORklHX0JMS19ERVZfVklBODJDNTg2KSx5KQ0KK0lE
RV9PQkpTICs9IHZpYTgyYzU4Ni5vDQorZW5kaWYNCisNCitpZmVxICgkKENP
TkZJR19CTEtfREVWX0dBWUxFKSx5KQ0KK0lERV9PQkpTICs9IGdheWxlLm8N
CitlbmRpZg0KKw0KK2lmZXEgKCQoQ09ORklHX0JMS19ERVZfRkFMQ09OX0lE
RSkseSkNCitJREVfT0JKUyArPSBmYWxjb25pZGUubw0KK2VuZGlmDQorDQor
aWZlcSAoJChDT05GSUdfQkxLX0RFVl9NQUNfSURFKSx5KQ0KK0lERV9PQkpT
ICs9IG1hY2lkZS5vDQorZW5kaWYNCisNCitpZmVxICgkKENPTkZJR19CTEtf
REVWX0JVRERIQSkseSkNCitJREVfT0JKUyArPSBidWRkaGEubw0KK2VuZGlm
DQorDQogaWZlcSAoJChDT05GSUdfQkxLX0RFVl9DTUQ2NDYpLHkpDQogSURF
X09CSlMgKz0gY21kNjQ2Lm8NCiBlbmRpZg0KQEAgLTE1Nyw2ICsxNzcsMTAg
QEANCiBpZmVxICgkKENPTkZJR19CTEtfREVWX1NMODJDMTA1KSx5KQ0KIElE
RV9PQkpTICs9IHNsODJjMTA1Lm8NCiBlbmRpZg0KKw0KKyMjIyBpZmVxICgk
KENPTkZJR19CTEtfREVWX0hQVDM0MykseSkNCisjIyMgSURFX09CSlMgKz0g
aHB0MzQzLm8NCisjIyMgZW5kaWYNCiANCiAjIyMgaWYgQ09ORklHX0JMS19E
RVZfSURFIGlzIG4sIElERV9PQkpTIHdpbGwgYmUgaWdub3JlZA0KIA0KZGlm
ZiAtdXJOIGxpbnV4LTIuMS4xMTctcHJpc3RpbmUvZHJpdmVycy9ibG9jay9i
dWRkaGEuYyBsaW51eC9kcml2ZXJzL2Jsb2NrL2J1ZGRoYS5jDQotLS0gbGlu
dXgtMi4xLjExNy1wcmlzdGluZS9kcml2ZXJzL2Jsb2NrL2J1ZGRoYS5jCVdl
ZCBEZWMgMzEgMTg6MDA6MDAgMTk2OQ0KKysrIGxpbnV4L2RyaXZlcnMvYmxv
Y2svYnVkZGhhLmMJVGh1IEF1ZyAyMCAwMDoxODowNSAxOTk4DQpAQCAtMCww
ICsxLDE2MiBAQA0KKy8qDQorICogIGxpbnV4L2RyaXZlcnMvYmxvY2svYnVk
ZGhhLmMgLS0gQW1pZ2EgQnVkZGhhIGFuZCBDYXR3ZWFzZWwgSURFIERyaXZl
cg0KKyAqDQorICoJQ29weXJpZ2h0IChDKSAxOTk3IGJ5IEdlZXJ0IFV5dHRl
cmhvZXZlbg0KKyAqDQorICogIFRoaXMgZHJpdmVyIHdhcyB3cml0dGVuIGJ5
IGJhc2VkIG9uIHRoZSBzcGVjaWZpY2F0aW9ucyBpbiBSRUFETUUuYnVkZGhh
Lg0KKyAqDQorICogIFRoaXMgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJt
cyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQor
ICogIExpY2Vuc2UuICBTZWUgdGhlIGZpbGUgQ09QWUlORyBpbiB0aGUgbWFp
biBkaXJlY3Rvcnkgb2YgdGhpcyBhcmNoaXZlIGZvcg0KKyAqICBtb3JlIGRl
dGFpbHMuDQorICoNCisgKiAgVE9ETzoNCisgKiAgICAtIHRlc3QgaXQgOi0p
DQorICogICAgLSB0dW5lIHRoZSB0aW1pbmdzIHVzaW5nIHRoZSBzcGVlZC1y
ZWdpc3Rlcg0KKyAqLw0KKw0KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPg0K
KyNpbmNsdWRlIDxsaW51eC9tbS5oPg0KKyNpbmNsdWRlIDxsaW51eC9pbnRl
cnJ1cHQuaD4NCisjaW5jbHVkZSA8bGludXgvYmxrZGV2Lmg+DQorI2luY2x1
ZGUgPGxpbnV4L2hkcmVnLmg+DQorI2luY2x1ZGUgPGxpbnV4L3pvcnJvLmg+
DQorDQorI2luY2x1ZGUgImlkZS5oIg0KKw0KKyNpbmNsdWRlIDxhc20vYW1p
Z2Fody5oPg0KKyNpbmNsdWRlIDxhc20vYW1pZ2FpbnRzLmg+DQorDQorDQor
ICAgIC8qDQorICAgICAqICBUaGUgQnVkZGhhIGhhcyAyIElERSBpbnRlcmZh
Y2VzLCB0aGUgQ2F0d2Vhc2VsIGhhcyAzDQorICAgICAqLw0KKw0KKyNkZWZp
bmUgQlVEREhBX05VTV9IV0lGUwkyDQorI2RlZmluZSBDQVRXRUFTRUxfTlVN
X0hXSUZTCTMNCisNCisNCisgICAgLyoNCisgICAgICogIEJhc2VzIG9mIHRo
ZSBJREUgaW50ZXJmYWNlcyAocmVsYXRpdmUgdG8gdGhlIGJvYXJkIGFkZHJl
c3MpDQorICAgICAqLw0KKw0KKyNkZWZpbmUgQlVEREhBX0JBU0UxCTB4ODAw
DQorI2RlZmluZSBCVURESEFfQkFTRTIJMHhhMDANCisjZGVmaW5lIEJVRERI
QV9CQVNFMwkweGMwMA0KKw0KK3N0YXRpYyBjb25zdCB1X2ludCBidWRkaGFf
YmFzZXNbQ0FUV0VBU0VMX05VTV9IV0lGU10gPSB7DQorICAgIEJVRERIQV9C
QVNFMSwgQlVEREhBX0JBU0UyLCBCVURESEFfQkFTRTMNCit9Ow0KKw0KKw0K
KyAgICAvKg0KKyAgICAgKiAgT2Zmc2V0cyBmcm9tIG9uZSBvZiB0aGUgYWJv
dmUgYmFzZXMNCisgICAgICovDQorDQorI2RlZmluZSBCVURESEFfREFUQQkw
eDAwDQorI2RlZmluZSBCVURESEFfRVJST1IJMHgwNgkJLyogc2VlIGVyci1i
aXRzICovDQorI2RlZmluZSBCVURESEFfTlNFQ1RPUgkweDBhCQkvKiBuciBv
ZiBzZWN0b3JzIHRvIHJlYWQvd3JpdGUgKi8NCisjZGVmaW5lIEJVRERIQV9T
RUNUT1IJMHgwZQkJLyogc3RhcnRpbmcgc2VjdG9yICovDQorI2RlZmluZSBC
VURESEFfTENZTAkweDEyCQkvKiBzdGFydGluZyBjeWxpbmRlciAqLw0KKyNk
ZWZpbmUgQlVEREhBX0hDWUwJMHgxNgkJLyogaGlnaCBieXRlIG9mIHN0YXJ0
aW5nIGN5bCAqLw0KKyNkZWZpbmUgQlVEREhBX1NFTEVDVAkweDFhCQkvKiAx
MDFkaGhoaCAsIGQ9ZHJpdmUsIGhoaGg9aGVhZCAqLw0KKyNkZWZpbmUgQlVE
REhBX1NUQVRVUwkweDFlCQkvKiBzZWUgc3RhdHVzLWJpdHMgKi8NCisjZGVm
aW5lIEJVRERIQV9DT05UUk9MCTB4MTFhDQorDQorc3RhdGljIGlkZV9pb3Jl
Z190IGJ1ZGRoYV9vZmZzZXRzW0lERV9OUl9QT1JUU10gPSB7DQorICAgIEJV
RERIQV9EQVRBLCBCVURESEFfRVJST1IsIEJVRERIQV9OU0VDVE9SLCBCVURE
SEFfU0VDVE9SLCBCVURESEFfTENZTCwNCisgICAgQlVEREhBX0hDWUwsIEJV
RERIQV9TRUxFQ1QsIEJVRERIQV9TVEFUVVMsIEJVRERIQV9DT05UUk9MDQor
fTsNCisNCisNCisgICAgLyoNCisgICAgICogIE90aGVyIHJlZ2lzdGVycw0K
KyAgICAgKi8NCisNCisjZGVmaW5lIEJVRERIQV9JUlExCTB4ZjAwCQkvKiBN
U0IgPSAxLCBIYXJkZGlzayBpcyBzb3VyY2Ugb2YgKi8NCisjZGVmaW5lIEJV
RERIQV9JUlEyCTB4ZjQwCQkvKiBpbnRlcnJ1cHQgKi8NCisjZGVmaW5lIEJV
RERIQV9JUlEzCTB4ZjgwDQorDQorc3RhdGljIGNvbnN0IGludCBidWRkaGFf
aXJxcG9ydHNbQ0FUV0VBU0VMX05VTV9IV0lGU10gPSB7DQorICAgIEJVRERI
QV9JUlExLCBCVURESEFfSVJRMiwgQlVEREhBX0lSUTMNCit9Ow0KKw0KKyNk
ZWZpbmUgQlVEREhBX0lSUV9NUgkweGZjMAkJLyogbWFzdGVyIGludGVycnVw
dCBlbmFibGUgKi8NCisNCisNCisgICAgLyoNCisgICAgICogIEJvYXJkIGlu
Zm9ybWF0aW9uDQorICAgICAqLw0KKw0KK3N0YXRpYyB1X2xvbmcgYnVkZGhh
X2JvYXJkID0gMDsNCitzdGF0aWMgaW50IGJ1ZGRoYV9udW1faHdpZnMgPSAt
MTsNCisNCisNCisgICAgLyoNCisgICAgICogIENoZWNrIGFuZCBhY2tub3ds
ZWRnZSB0aGUgaW50ZXJydXB0IHN0YXR1cw0KKyAgICAgKi8NCisNCitzdGF0
aWMgaW50IGJ1ZGRoYV9hY2tfaW50cihpZGVfaHdpZl90ICpod2lmKQ0KK3sN
CisgICAgdW5zaWduZWQgY2hhciBjaDsNCisNCisgICAgY2ggPSBpbmIoaHdp
Zi0+aHcuaW9fcG9ydHNbSURFX0lSUV9PRkZTRVRdKTsNCisgICAgaWYgKCEo
Y2ggJiAweDgwKSkNCisJcmV0dXJuIDA7DQorICAgIHJldHVybiAxOw0KK30N
CisNCisNCisgICAgLyoNCisgICAgICogIEFueSBCdWRkaGEgb3IgQ2F0d2Vh
c2VsIGJvYXJkcyBwcmVzZW50Pw0KKyAgICAgKi8NCisNCitzdGF0aWMgaW50
IGZpbmRfYnVkZGhhKHZvaWQpDQorew0KKyAgICB1X2ludCBrZXk7DQorICAg
IGNvbnN0IHN0cnVjdCBDb25maWdEZXYgKmNkOw0KKw0KKyAgICBidWRkaGFf
bnVtX2h3aWZzID0gMDsNCisgICAgaWYgKChrZXkgPSB6b3Jyb19maW5kKFpP
UlJPX1BST0RfSU5ESVZJRFVBTF9DT01QVVRFUlNfQlVEREhBLCAwLCAwKSkp
DQorCWJ1ZGRoYV9udW1faHdpZnMgPSBCVURESEFfTlVNX0hXSUZTOw0KKyAg
ICBlbHNlIGlmICgoa2V5ID0gem9ycm9fZmluZChaT1JST19QUk9EX0lORElW
SURVQUxfQ09NUFVURVJTX0NBVFdFQVNFTCwgMCwNCisJCQkgICAgICAgMCkp
KQ0KKwlidWRkaGFfbnVtX2h3aWZzID0gQ0FUV0VBU0VMX05VTV9IV0lGUzsN
CisgICAgaWYgKGtleSkgew0KKwljZCA9IHpvcnJvX2dldF9ib2FyZChrZXkp
Ow0KKwlidWRkaGFfYm9hcmQgPSAodV9sb25nKWNkLT5jZF9Cb2FyZEFkZHI7
DQorCWlmIChidWRkaGFfYm9hcmQpIHsNCisJICAgIGJ1ZGRoYV9ib2FyZCA9
IFpUV09fVkFERFIoYnVkZGhhX2JvYXJkKTsNCisJICAgIC8qIHdyaXRlIHRv
IEJVRERIQV9JUlFfTVIgdG8gZW5hYmxlIHRoZSBib2FyZCBJUlEgKi8NCisJ
ICAgICooY2hhciAqKShidWRkaGFfYm9hcmQrQlVEREhBX0lSUV9NUikgPSAw
Ow0KKwkgICAgem9ycm9fY29uZmlnX2JvYXJkKGtleSwgMCk7DQorCX0NCisg
ICAgfQ0KKyAgICByZXR1cm4gYnVkZGhhX251bV9od2lmczsNCit9DQorDQor
DQorICAgIC8qDQorICAgICAqICBQcm9iZSBmb3IgYSBCdWRkaGEgb3IgQ2F0
d2Vhc2VsIElERSBpbnRlcmZhY2UNCisgICAgICogIFdlIHN1cHBvcnQgb25s
eSBfb25lXyBvZiB0aGVtLCBubyBtdWx0aXBsZSBib2FyZHMhDQorICAgICAq
Lw0KKw0KK3ZvaWQgYnVkZGhhX2luaXQodm9pZCkNCit7DQorICAgIGh3X3Jl
Z3NfdCBodzsNCisgICAgaW50IGksIGluZGV4Ow0KKw0KKyAgICBpZiAoYnVk
ZGhhX251bV9od2lmcyA8IDAgJiYgIWZpbmRfYnVkZGhhKCkpDQorCXJldHVy
bjsNCisNCisgICAgZm9yIChpID0gMDsgaSA8IGJ1ZGRoYV9udW1faHdpZnM7
IGkrKykgew0KKwlpZGVfc2V0dXBfcG9ydHMoJmh3LCAoaWRlX2lvcmVnX3Qp
KGJ1ZGRoYV9ib2FyZCtidWRkaGFfYmFzZXNbaV0pLA0KKwkJCWJ1ZGRoYV9v
ZmZzZXRzLCAwLA0KKwkJCShpZGVfaW9yZWdfdCkoYnVkZGhhX2JvYXJkK2J1
ZGRoYV9pcnFwb3J0c1tpXSksDQorCQkJYnVkZGhhX2Fja19pbnRyLCBJUlFf
QU1JR0FfUE9SVFMpOw0KKwlpbmRleCA9IGlkZV9yZWdpc3Rlcl9odygmaHcs
IE5VTEwpOw0KKwlpZiAoaW5kZXggIT0gLTEpDQorCSAgICBwcmludGsoImlk
ZSVkOiAlcyBJREUgaW50ZXJmYWNlXG4iLCBpbmRleCwNCisJCSAgIGJ1ZGRo
YV9udW1faHdpZnMgPT0gQlVEREhBX05VTV9IV0lGUyA/ICJCdWRkaGEiIDoN
CisJCSAgIAkJCQkJICAiQ2F0d2Vhc2VsIik7DQorICAgIH0NCit9DQpkaWZm
IC11ck4gbGludXgtMi4xLjExNy1wcmlzdGluZS9kcml2ZXJzL2Jsb2NrL2Zh
bGNvbmlkZS5jIGxpbnV4L2RyaXZlcnMvYmxvY2svZmFsY29uaWRlLmMNCi0t
LSBsaW51eC0yLjEuMTE3LXByaXN0aW5lL2RyaXZlcnMvYmxvY2svZmFsY29u
aWRlLmMJV2VkIERlYyAzMSAxODowMDowMCAxOTY5DQorKysgbGludXgvZHJp
dmVycy9ibG9jay9mYWxjb25pZGUuYwlUaHUgQXVnIDIwIDAwOjE4OjA1IDE5
OTgNCkBAIC0wLDAgKzEsNjcgQEANCisvKg0KKyAqICBsaW51eC9kcml2ZXJz
L2Jsb2NrL2ZhbGNvbmlkZS5jIC0tIEF0YXJpIEZhbGNvbiBJREUgRHJpdmVy
DQorICoNCisgKiAgICAgQ3JlYXRlZCAxMiBKdWwgMTk5NyBieSBHZWVydCBV
eXR0ZXJob2V2ZW4NCisgKg0KKyAqICBUaGlzIGZpbGUgaXMgc3ViamVjdCB0
byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFs
IFB1YmxpYw0KKyAqICBMaWNlbnNlLiAgU2VlIHRoZSBmaWxlIENPUFlJTkcg
aW4gdGhlIG1haW4gZGlyZWN0b3J5IG9mIHRoaXMgYXJjaGl2ZSBmb3INCisg
KiAgbW9yZSBkZXRhaWxzLg0KKyAqLw0KKw0KKyNpbmNsdWRlIDxsaW51eC90
eXBlcy5oPg0KKyNpbmNsdWRlIDxsaW51eC9tbS5oPg0KKyNpbmNsdWRlIDxs
aW51eC9pbnRlcnJ1cHQuaD4NCisjaW5jbHVkZSA8bGludXgvYmxrZGV2Lmg+
DQorI2luY2x1ZGUgPGxpbnV4L2hkcmVnLmg+DQorDQorI2luY2x1ZGUgImlk
ZS5oIg0KKw0KKyNpbmNsdWRlIDxhc20vYXRhcmlody5oPg0KKyNpbmNsdWRl
IDxhc20vYXRhcmlpbnRzLmg+DQorI2luY2x1ZGUgPGFzbS9hdGFyaV9zdGRt
YS5oPg0KKw0KKw0KKyAgICAvKg0KKyAgICAgKiAgQmFzZSBvZiB0aGUgSURF
IGludGVyZmFjZQ0KKyAgICAgKi8NCisNCisjZGVmaW5lIEFUQV9IRF9CQVNF
CTB4ZmZmMDAwMDANCisNCisgICAgLyoNCisgICAgICogIE9mZnNldHMgZnJv
bSB0aGUgYWJvdmUgYmFzZQ0KKyAgICAgKi8NCisNCisjZGVmaW5lIEFUQV9I
RF9EQVRBCTB4MDANCisjZGVmaW5lIEFUQV9IRF9FUlJPUgkweDA1CQkvKiBz
ZWUgZXJyLWJpdHMgKi8NCisjZGVmaW5lIEFUQV9IRF9OU0VDVE9SCTB4MDkJ
CS8qIG5yIG9mIHNlY3RvcnMgdG8gcmVhZC93cml0ZSAqLw0KKyNkZWZpbmUg
QVRBX0hEX1NFQ1RPUgkweDBkCQkvKiBzdGFydGluZyBzZWN0b3IgKi8NCisj
ZGVmaW5lIEFUQV9IRF9MQ1lMCTB4MTEJCS8qIHN0YXJ0aW5nIGN5bGluZGVy
ICovDQorI2RlZmluZSBBVEFfSERfSENZTAkweDE1CQkvKiBoaWdoIGJ5dGUg
b2Ygc3RhcnRpbmcgY3lsICovDQorI2RlZmluZSBBVEFfSERfU0VMRUNUCTB4
MTkJCS8qIDEwMWRoaGhoICwgZD1kcml2ZSwgaGhoaD1oZWFkICovDQorI2Rl
ZmluZSBBVEFfSERfU1RBVFVTCTB4MWQJCS8qIHNlZSBzdGF0dXMtYml0cyAq
Lw0KKyNkZWZpbmUgQVRBX0hEX0NPTlRST0wJMHgzOQ0KKw0KK3N0YXRpYyBp
ZGVfaW9yZWdfdCBmYWxjb25pZGVfb2Zmc2V0c1tJREVfTlJfUE9SVFNdID0g
ew0KKyAgICBBVEFfSERfREFUQSwgQVRBX0hEX0VSUk9SLCBBVEFfSERfTlNF
Q1RPUiwgQVRBX0hEX1NFQ1RPUiwgQVRBX0hEX0xDWUwsDQorICAgIEFUQV9I
RF9IQ1lMLCBBVEFfSERfU0VMRUNULCBBVEFfSERfU1RBVFVTLCBBVEFfSERf
Q09OVFJPTCwgLTENCit9Ow0KKw0KKw0KKyAgICAvKg0KKyAgICAgKiAgUHJv
YmUgZm9yIGEgRmFsY29uIElERSBpbnRlcmZhY2UNCisgICAgICovDQorDQor
dm9pZCBmYWxjb25pZGVfaW5pdCh2b2lkKQ0KK3sNCisgICAgaWYgKE1BQ0hf
SVNfQVRBUkkgJiYgQVRBUklIV19QUkVTRU5UKElERSkpIHsNCisJaHdfcmVn
c190IGh3Ow0KKwlpbnQgaW5kZXg7DQorDQorCWlkZV9zZXR1cF9wb3J0cygm
aHcsIChpZGVfaW9yZWdfdClBVEFfSERfQkFTRSwgZmFsY29uaWRlX29mZnNl
dHMsDQorCQkJMCwgMCwgTlVMTCwgSVJRX01GUF9JREUpOw0KKwlpbmRleCA9
IGlkZV9yZWdpc3Rlcl9odygmaHcsIE5VTEwpOw0KKw0KKwlpZiAoaW5kZXgg
IT0gLTEpDQorCSAgICBwcmludGsoImlkZSVkOiBGYWxjb24gSURFIGludGVy
ZmFjZVxuIiwgaW5kZXgpOw0KKyAgICB9DQorfQ0KZGlmZiAtdXJOIGxpbnV4
LTIuMS4xMTctcHJpc3RpbmUvZHJpdmVycy9ibG9jay9nYXlsZS5jIGxpbnV4
L2RyaXZlcnMvYmxvY2svZ2F5bGUuYw0KLS0tIGxpbnV4LTIuMS4xMTctcHJp
c3RpbmUvZHJpdmVycy9ibG9jay9nYXlsZS5jCVdlZCBEZWMgMzEgMTg6MDA6
MDAgMTk2OQ0KKysrIGxpbnV4L2RyaXZlcnMvYmxvY2svZ2F5bGUuYwlUaHUg
QXVnIDIwIDAwOjE4OjA1IDE5OTgNCkBAIC0wLDAgKzEsMTcwIEBADQorLyoN
CisgKiAgbGludXgvZHJpdmVycy9ibG9jay9nYXlsZS5jIC0tIEFtaWdhIEdh
eWxlIElERSBEcml2ZXINCisgKg0KKyAqICAgICBDcmVhdGVkIDkgSnVsIDE5
OTcgYnkgR2VlcnQgVXl0dGVyaG9ldmVuDQorICoNCisgKiAgVGhpcyBmaWxl
IGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRo
ZSBHTlUgR2VuZXJhbCBQdWJsaWMNCisgKiAgTGljZW5zZS4gIFNlZSB0aGUg
ZmlsZSBDT1BZSU5HIGluIHRoZSBtYWluIGRpcmVjdG9yeSBvZiB0aGlzIGFy
Y2hpdmUgZm9yDQorICogIG1vcmUgZGV0YWlscy4NCisgKi8NCisNCisjaW5j
bHVkZSA8bGludXgvY29uZmlnLmg+DQorI2luY2x1ZGUgPGxpbnV4L3R5cGVz
Lmg+DQorI2luY2x1ZGUgPGxpbnV4L21tLmg+DQorI2luY2x1ZGUgPGxpbnV4
L2ludGVycnVwdC5oPg0KKyNpbmNsdWRlIDxsaW51eC9ibGtkZXYuaD4NCisj
aW5jbHVkZSA8bGludXgvaGRyZWcuaD4NCisNCisjaW5jbHVkZSAiaWRlLmgi
DQorDQorI2luY2x1ZGUgPGFzbS9hbWlnYWh3Lmg+DQorI2luY2x1ZGUgPGFz
bS9hbWlnYWludHMuaD4NCisNCisNCisgICAgLyoNCisgICAgICogIEJhc2Vz
IG9mIHRoZSBJREUgaW50ZXJmYWNlcw0KKyAgICAgKi8NCisNCisjZGVmaW5l
IEdBWUxFX0JBU0VfNDAwMAkweGRkMjAyMAkvKiBBNDAwMC9BNDAwMFQgKi8N
CisjZGVmaW5lIEdBWUxFX0JBU0VfMTIwMAkweGRhMDAwMAkvKiBBMTIwMC9B
NjAwICovDQorDQorICAgIC8qDQorICAgICAqICBPZmZzZXRzIGZyb20gb25l
IG9mIHRoZSBhYm92ZSBiYXNlcw0KKyAgICAgKi8NCisNCisjZGVmaW5lIEdB
WUxFX0RBVEEJMHgwMA0KKyNkZWZpbmUgR0FZTEVfRVJST1IJMHgwNgkJLyog
c2VlIGVyci1iaXRzICovDQorI2RlZmluZSBHQVlMRV9OU0VDVE9SCTB4MGEJ
CS8qIG5yIG9mIHNlY3RvcnMgdG8gcmVhZC93cml0ZSAqLw0KKyNkZWZpbmUg
R0FZTEVfU0VDVE9SCTB4MGUJCS8qIHN0YXJ0aW5nIHNlY3RvciAqLw0KKyNk
ZWZpbmUgR0FZTEVfTENZTAkweDEyCQkvKiBzdGFydGluZyBjeWxpbmRlciAq
Lw0KKyNkZWZpbmUgR0FZTEVfSENZTAkweDE2CQkvKiBoaWdoIGJ5dGUgb2Yg
c3RhcnRpbmcgY3lsICovDQorI2RlZmluZSBHQVlMRV9TRUxFQ1QJMHgxYQkJ
LyogMTAxZGhoaGggLCBkPWRyaXZlLCBoaGhoPWhlYWQgKi8NCisjZGVmaW5l
IEdBWUxFX1NUQVRVUwkweDFlCQkvKiBzZWUgc3RhdHVzLWJpdHMgKi8NCisj
ZGVmaW5lIEdBWUxFX0NPTlRST0wJMHgxMDFhDQorDQorc3RhdGljIGlkZV9p
b3JlZ190IGdheWxlX29mZnNldHNbSURFX05SX1BPUlRTXSA9IHsNCisgICAg
R0FZTEVfREFUQSwgR0FZTEVfRVJST1IsIEdBWUxFX05TRUNUT1IsIEdBWUxF
X1NFQ1RPUiwgR0FZTEVfTENZTCwNCisgICAgR0FZTEVfSENZTCwgR0FZTEVf
U0VMRUNULCBHQVlMRV9TVEFUVVMsIC0xLCAtMQ0KK307DQorDQorDQorICAg
IC8qDQorICAgICAqICBUaGVzZSBhcmUgYXQgZGlmZmVyZW50IG9mZnNldHMg
ZnJvbSB0aGUgYmFzZQ0KKyAgICAgKi8NCisNCisjZGVmaW5lIEdBWUxFX0lS
UV80MDAwCTB4ZGQzMDIwCS8qIE1TQiA9IDEsIEhhcmRkaXNrIGlzIHNvdXJj
ZSBvZiAqLw0KKyNkZWZpbmUgR0FZTEVfSVJRXzEyMDAJMHhkYTkwMDAJLyog
aW50ZXJydXB0ICovDQorDQorDQorICAgIC8qDQorICAgICAqICBPZmZzZXQg
b2YgdGhlIHNlY29uZGFyeSBwb3J0IGZvciBJREUgZG91YmxlcnMNCisgICAg
ICogIE5vdGUgdGhhdCBHQVlMRV9DT05UUk9MIGlzIE5PVCBhdmFpbGFibGUg
dGhlbiENCisgICAgICovDQorDQorI2RlZmluZSBHQVlMRV9ORVhUX1BPUlQJ
MHgxMDAwDQorDQorI2lmbmRlZiBDT05GSUdfQkxLX0RFVl9JREVET1VCTEVS
DQorI2RlZmluZSBHQVlMRV9OVU1fSFdJRlMJCTENCisjZGVmaW5lIEdBWUxF
X05VTV9QUk9CRV9IV0lGUwlHQVlMRV9OVU1fSFdJRlMNCisjZGVmaW5lIEdB
WUxFX0hBU19DT05UUk9MX1JFRwkxDQorI2Vsc2UgLyogQ09ORklHX0JMS19E
RVZfSURFRE9VQkxFUiAqLw0KKyNkZWZpbmUgR0FZTEVfTlVNX0hXSUZTCQky
DQorI2RlZmluZSBHQVlMRV9OVU1fUFJPQkVfSFdJRlMJKGlkZV9kb3VibGVy
ID8gR0FZTEVfTlVNX0hXSUZTIDogXA0KKwkJCQkJICAgICAgIEdBWUxFX05V
TV9IV0lGUy0xKQ0KKyNkZWZpbmUgR0FZTEVfSEFTX0NPTlRST0xfUkVHCSgh
aWRlX2RvdWJsZXIpDQoraW50IGlkZV9kb3VibGVyID0gMDsJLyogc3VwcG9y
dCBJREUgZG91YmxlcnM/ICovDQorI2VuZGlmIC8qIENPTkZJR19CTEtfREVW
X0lERURPVUJMRVIgKi8NCisNCisNCisgICAgLyoNCisgICAgICogIENoZWNr
IGFuZCBhY2tub3dsZWRnZSB0aGUgaW50ZXJydXB0IHN0YXR1cw0KKyAgICAg
Ki8NCisNCitzdGF0aWMgaW50IGdheWxlX2Fja19pbnRyX2E0MDAwKGlkZV9o
d2lmX3QgKmh3aWYpDQorew0KKyAgICB1bnNpZ25lZCBjaGFyIGNoOw0KKw0K
KyAgICBjaCA9IGluYihod2lmLT5ody5pb19wb3J0c1tJREVfSVJRX09GRlNF
VF0pOw0KKyAgICBpZiAoIShjaCAmIDB4ODApKQ0KKwlyZXR1cm4gMDsNCisg
ICAgcmV0dXJuIDE7DQorfQ0KKw0KK3N0YXRpYyBpbnQgZ2F5bGVfYWNrX2lu
dHJfYTEyMDAoaWRlX2h3aWZfdCAqaHdpZikNCit7DQorICAgIHVuc2lnbmVk
IGNoYXIgY2g7DQorDQorICAgIGNoID0gaW5iKGh3aWYtPmh3LmlvX3BvcnRz
W0lERV9JUlFfT0ZGU0VUXSk7DQorICAgIGlmICghKGNoICYgMHg4MCkpDQor
CXJldHVybiAwOw0KKyAgICAodm9pZClpbmIoaHdpZi0+aHcuaW9fcG9ydHNb
SURFX1NUQVRVU19PRkZTRVRdKTsNCisgICAgb3V0YigweDdjIHwgKGNoICYg
MHgwMyksIGh3aWYtPmh3LmlvX3BvcnRzW0lERV9JUlFfT0ZGU0VUXSk7DQor
ICAgIHJldHVybiAxOw0KK30NCisNCisgICAgLyoNCisgICAgICogIFByb2Jl
IGZvciBhIEdheWxlIElERSBpbnRlcmZhY2UgKGFuZCBvcHRpb25hbGx5IGZv
ciBhbiBJREUgZG91YmxlcikNCisgICAgICovDQorDQordm9pZCBnYXlsZV9p
bml0KHZvaWQpDQorew0KKyAgICBpbnQgYTQwMDAsIGk7DQorDQorICAgIGlm
ICghTUFDSF9JU19BTUlHQSkNCisJcmV0dXJuOw0KKw0KKyAgICBpZiAoIShh
NDAwMCA9IEFNSUdBSFdfUFJFU0VOVChBNDAwMF9JREUpKSAmJiAhQU1JR0FI
V19QUkVTRU5UKEExMjAwX0lERSkpDQorCXJldHVybjsNCisNCisgICAgZm9y
IChpID0gMDsgaSA8IEdBWUxFX05VTV9QUk9CRV9IV0lGUzsgaSsrKSB7DQor
CWlkZV9pb3JlZ190IGJhc2UsIGN0cmxwb3J0LCBpcnFwb3J0Ow0KKwlpZGVf
YWNrX2ludHJfdCAqYWNrX2ludHI7DQorCWh3X3JlZ3NfdCBodzsNCisJaW50
IGluZGV4Ow0KKw0KKwlpZiAoYTQwMDApIHsNCisJICAgIGJhc2UgPSAoaWRl
X2lvcmVnX3QpWlRXT19WQUREUihHQVlMRV9CQVNFXzQwMDApOw0KKwkgICAg
aXJxcG9ydCA9IChpZGVfaW9yZWdfdClaVFdPX1ZBRERSKEdBWUxFX0lSUV80
MDAwKTsNCisJICAgIGFja19pbnRyID0gZ2F5bGVfYWNrX2ludHJfYTQwMDA7
DQorCX0gZWxzZSB7DQorCSAgICBiYXNlID0gKGlkZV9pb3JlZ190KVpUV09f
VkFERFIoR0FZTEVfQkFTRV8xMjAwKTsNCisJICAgIGlycXBvcnQgPSAoaWRl
X2lvcmVnX3QpWlRXT19WQUREUihHQVlMRV9JUlFfMTIwMCk7DQorCSAgICBh
Y2tfaW50ciA9IGdheWxlX2Fja19pbnRyX2ExMjAwOw0KKwl9DQorDQorCWlm
IChHQVlMRV9IQVNfQ09OVFJPTF9SRUcpDQorCSAgICBjdHJscG9ydCA9IGJh
c2UgKyBHQVlMRV9DT05UUk9MOw0KKwllbHNlDQorCSAgICBjdHJscG9ydCA9
IDA7DQorDQorCWJhc2UgKz0gaSpHQVlMRV9ORVhUX1BPUlQ7DQorDQorCWlk
ZV9zZXR1cF9wb3J0cygmaHcsIGJhc2UsIGdheWxlX29mZnNldHMsDQorCQkJ
Y3RybHBvcnQsIGlycXBvcnQsIGFja19pbnRyLCBJUlFfQU1JR0FfUE9SVFMp
Ow0KKw0KKwlpbmRleCA9IGlkZV9yZWdpc3Rlcl9odygmaHcsIE5VTEwpOw0K
KwlpZiAoaW5kZXggIT0gLTEpIHsNCisJICAgIHN3aXRjaCAoaSkgew0KKwkJ
Y2FzZSAwOg0KKwkJICAgIHByaW50aygiaWRlJWQ6IEdheWxlIElERSBpbnRl
cmZhY2UgKEElZCBzdHlsZSlcbiIsIGluZGV4LA0KKwkJCSAgIGE0MDAwID8g
NDAwMCA6IDEyMDApOw0KKwkJICAgIGJyZWFrOw0KKyNpZmRlZiBDT05GSUdf
QkxLX0RFVl9JREVET1VCTEVSDQorCQljYXNlIDE6DQorCQkgICAgcHJpbnRr
KCJpZGUlZDogSURFIGRvdWJsZXJcbiIsIGluZGV4KTsNCisJCSAgICBicmVh
azsNCisjZW5kaWYgLyogQ09ORklHX0JMS19ERVZfSURFRE9VQkxFUiAqLw0K
KwkgICAgfQ0KKwl9DQorI2lmIDEgLyogVEVTVElORyAqLw0KKwlpZiAoaSA9
PSAxKSB7DQorCSAgICB2b2xhdGlsZSB1X3Nob3J0ICphZGRyID0gKHVfc2hv
cnQgKiliYXNlOw0KKwkgICAgdV9zaG9ydCBkYXRhOw0KKwkgICAgcHJpbnRr
KCIrKysgUHJvYmluZyBmb3IgSURFIGRvdWJsZXIuLi4gIik7DQorCSAgICAq
YWRkciA9IDB4ZmZmZjsNCisJICAgIGRhdGEgPSAqYWRkcjsNCisJICAgIHBy
aW50aygicHJvYmUgcmV0dXJuZWQgMHglMDJ4IChQTEVBU0UgUkVQT1JUIFRI
SVMhISlcbiIsIGRhdGEpOw0KKwl9DQorI2VuZGlmIC8qIFRFU1RJTkcgKi8N
CisgICAgfQ0KK30NCmRpZmYgLXVyTiBsaW51eC0yLjEuMTE3LXByaXN0aW5l
L2RyaXZlcnMvYmxvY2svZ2VuaGQuYyBsaW51eC9kcml2ZXJzL2Jsb2NrL2dl
bmhkLmMNCi0tLSBsaW51eC0yLjEuMTE3LXByaXN0aW5lL2RyaXZlcnMvYmxv
Y2svZ2VuaGQuYwlUaHUgQXVnIDIwIDAwOjA5OjQwIDE5OTgNCisrKyBsaW51
eC9kcml2ZXJzL2Jsb2NrL2dlbmhkLmMJVGh1IEF1ZyAyMCAwMDoxODowNSAx
OTk4DQpAQCAtMTYsNiArMTYsOCBAQA0KICAqICBNb3JlIGZsZXhpYmxlIGhh
bmRsaW5nIG9mIGV4dGVuZGVkIHBhcnRpdGlvbnMgLSBhZWIsIDk1MDgzMQ0K
ICAqDQogICogIENoZWNrIHBhcnRpdGlvbiB0YWJsZSBvbiBJREUgZGlza3Mg
Zm9yIGNvbW1vbiBDSFMgdHJhbnNsYXRpb25zDQorICoNCisgKiAgQWRkZWQg
bmVlZGVkIE1BSk9SUyBmb3IgbmV3IHBhaXJzLCB7aGRpLGhkan0sIHtoZGss
aGRsfQ0KICAqLw0KIA0KICNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4NCkBA
IC03Nyw2ICs3OSwxMCBAQA0KIAkgKiBUaGlzIHJlcXVpcmVzIHNwZWNpYWwg
aGFuZGxpbmcgaGVyZS4NCiAJICovDQogCXN3aXRjaCAoaGQtPm1ham9yKSB7
DQorCQljYXNlIElERTVfTUFKT1I6DQorCQkJdW5pdCArPSAyOw0KKwkJY2Fz
ZSBJREU0X01BSk9SOg0KKwkJCXVuaXQgKz0gMjsNCiAJCWNhc2UgSURFM19N
QUpPUjoNCiAJCQl1bml0ICs9IDI7DQogCQljYXNlIElERTJfTUFKT1I6DQpk
aWZmIC11ck4gbGludXgtMi4xLjExNy1wcmlzdGluZS9kcml2ZXJzL2Jsb2Nr
L2lkZS1jZC5jIGxpbnV4L2RyaXZlcnMvYmxvY2svaWRlLWNkLmMNCi0tLSBs
aW51eC0yLjEuMTE3LXByaXN0aW5lL2RyaXZlcnMvYmxvY2svaWRlLWNkLmMJ
VGh1IEF1ZyAyMCAwMDowOTo0MCAxOTk4DQorKysgbGludXgvZHJpdmVycy9i
bG9jay9pZGUtY2QuYwlUaHUgQXVnIDIwIDAwOjE4OjA1IDE5OTgNCkBAIC0x
LDQgKzEsNCBAQA0KLSNkZWZpbmUgVkVSQk9TRV9JREVfQ0RfRVJST1JTIDEN
CisjZGVmaW5lIFZFUkJPU0VfSURFX0NEX0VSUk9SUwkxDQogLyoNCiAgKiBs
aW51eC9kcml2ZXJzL2Jsb2NrL2lkZS1jZC5jDQogICogQ29weXJpZ2h0IChD
KSAxOTk0LCAxOTk1LCAxOTk2ICBzY290dCBzbnlkZXIgIDxzbnlkZXJAZm5h
bGQwLmZuYWwuZ292Pg0KQEAgLTI5MDcsNiArMjkwNyw2NCBAQA0KIAlpZGVf
YWRkX3NldHRpbmcoZHJpdmUsCSJkc2Nfb3ZlcmxhcCIsCQlTRVRUSU5HX1JX
LAkJCQkJLTEsCQkJLTEsCQkJVFlQRV9CWVRFLAkwLAkxLAkJCQkxLAkxLAkm
ZHJpdmUtPmRzY19vdmVybGFwLAkJTlVMTCk7DQogfQ0KIA0KKyNpZmRlZiBD
T05GSUdfQkxLX0RFVl9JREVDRF9TTE9UUw0KK3N0YXRpYyB2b2lkIGlkZV9j
ZHJvbV9zbG90X2NoZWNrIChpZGVfZHJpdmVfdCAqZHJpdmUsIGludCBuc2xv
dHMpDQorew0KKwlzdHJ1Y3QgY2Ryb21faW5mbyAqaW5mbyA9IGRyaXZlLT5k
cml2ZXJfZGF0YTsNCisJc3RydWN0IGNkcm9tX2RldmljZV9pbmZvICpkZXZp
bmZvID0gJmluZm8tPmRldmluZm87DQorCWludCBzbG90X2NvdW50ID0gMCwg
ZHJpdmVfc3RhdCA9IDAsIHRvY19zdGF0ID0gMDsNCisNCisJZm9yIChzbG90
X2NvdW50PTA7c2xvdF9jb3VudDxuc2xvdHM7c2xvdF9jb3VudCsrKSB7DQor
CQkodm9pZCkgaWRlX2Nkcm9tX3NlbGVjdF9kaXNjKGRldmluZm8sIHNsb3Rf
Y291bnQpOw0KKwkJcHJpbnRrKCIgICAgIENEIFNsb3QgJWQgIiwgc2xvdF9j
b3VudCsxKTsNCisNCisJCWRyaXZlX3N0YXQgPSBpZGVfY2Ryb21fZHJpdmVf
c3RhdHVzKGRldmluZm8sIHNsb3RfY291bnQpOw0KKwkJaWYgKGRyaXZlX3N0
YXQ8MCkgew0KKwkJCWNvbnRpbnVlOw0KKwkJfSBlbHNlIHN3aXRjaChkcml2
ZV9zdGF0KSB7DQorCQkJY2FzZSBDRFNfRElTQ19PSzoNCisJCQkJdG9jX3N0
YXQgPSBjZHJvbV9yZWFkX3RvYyhkcml2ZSwgTlVMTCk7DQorCQkJCXByaW50
aygiRGlzYyBwcmVzZW50LiAiKTsNCisJCQkJcHJpbnRrKCJzdGF0dXMgOjog
MHglMDR4XG4iLCB0b2Nfc3RhdCk7DQorLyoNCisJCQkJc3dpdGNoKHRvY19z
dGF0KSB7DQorCQkJCQljYXNlIENEU19BVURJTzoNCisJCQkJCQlwcmludGso
IkF1ZGlvIGRpc2MuIik7DQorCQkJCQkJYnJlYWs7DQorCQkJCQljYXNlIENE
U19EQVRBXzE6DQorCQkJCQljYXNlIENEU19EQVRBXzI6DQorCQkJCQkJcHJp
bnRrKCJEYXRhIGRpc2MgdHlwZSAlZC4iLCB0b2Nfc3RhdC1DRFNfREFUQV8x
KzEpOw0KKwkJCQkJCWJyZWFrOw0KKwkJCQkJY2FzZSBDRFNfWEFfMl8xOg0K
KwkJCQkJY2FzZSBDRFNfWEFfMl8yOg0KKwkJCQkJCXByaW50aygiWEEgZGF0
YSBkaXNjIHR5cGUgJWQuIiwgdG9jX3N0YXQtQ0RTX1hBXzJfMSsxKTsNCisJ
CQkJCQlicmVhazsNCisJCQkJCWRlZmF1bHQ6DQorCQkJCQkJcHJpbnRrKCJV
bmtub3duIGRpc2MgdHlwZSAweCV4ISIsIHRvY19zdGF0KTsNCisJCQkJCQli
cmVhazsNCisJCQkJfQ0KKyovDQorCQkJCWJyZWFrOw0KKwkJCWNhc2UgQ0RT
X05PX0RJU0M6DQorCQkJCXByaW50aygiRW1wdHkgc2xvdC5cbiIpOw0KKwkJ
CQlicmVhazsNCisJCQljYXNlIENEU19UUkFZX09QRU46DQorCQkJCXByaW50
aygiQ0QtUk9NIHRyYXkgb3Blbi5cbiIpOw0KKwkJCQlicmVhazsNCisJCQlj
YXNlIENEU19EUklWRV9OT1RfUkVBRFk6DQorCQkJCXByaW50aygiQ0QtUk9N
IGRyaXZlIG5vdCByZWFkeS5cbiIpOw0KKwkJCQlicmVhazsNCisJCQljYXNl
IENEU19OT19JTkZPOg0KKwkJCQlwcmludGsoIk5vIEluZm9ybWF0aW9uIGF2
YWlsYWJsZS5cbiIpOw0KKwkJCQlicmVhazsNCisJCQlkZWZhdWx0Og0KKwkJ
CQlwcmludGsoIlRoaXMgU2hvdWxkIG5vdCBoYXBwZW4hXG4iKTsNCisJCQkJ
YnJlYWs7DQorCQl9DQorCX0NCit9DQorI2VuZGlmIC8qIENPTkZJR19CTEtf
REVWX0lERUNEX1NMT1RTICovDQorDQogc3RhdGljDQogaW50IGlkZV9jZHJv
bV9zZXR1cCAoaWRlX2RyaXZlX3QgKmRyaXZlKQ0KIHsNCkBAIC0zMDIxLDYg
KzMwNzksMTEgQEANCiAJCXJldHVybiAxOw0KIAl9DQogCWlkZV9jZHJvbV9h
ZGRfc2V0dGluZ3MoZHJpdmUpOw0KKyNpZmRlZiBDT05GSUdfQkxLX0RFVl9J
REVDRF9TTE9UUw0KKwlpZiAoQ0RST01fQ09ORklHX0ZMQUdTIChkcml2ZSkt
PmlzX2NoYW5nZXIpIHsNCisJCWlkZV9jZHJvbV9zbG90X2NoZWNrKGRyaXZl
LCBuc2xvdHMpOw0KKwl9DQorI2VuZGlmIC8qIENPTkZJR19CTEtfREVWX0lE
RUNEX1NMT1RTICovDQogCXJldHVybiAwOw0KIH0NCiANCmRpZmYgLXVyTiBs
aW51eC0yLjEuMTE3LXByaXN0aW5lL2RyaXZlcnMvYmxvY2svaWRlLWRpc2su
YyBsaW51eC9kcml2ZXJzL2Jsb2NrL2lkZS1kaXNrLmMNCi0tLSBsaW51eC0y
LjEuMTE3LXByaXN0aW5lL2RyaXZlcnMvYmxvY2svaWRlLWRpc2suYwlUaHUg
QXVnIDIwIDAwOjA5OjQwIDE5OTgNCisrKyBsaW51eC9kcml2ZXJzL2Jsb2Nr
L2lkZS1kaXNrLmMJVGh1IEF1ZyAyMCAwMDoxODowNSAxOTk4DQpAQCAtMTks
NiArMTksNyBAQA0KICAqIFZlcnNpb24gMS4wNQkJYWRkIGNhcGFjaXR5IHN1
cHBvcnQgZm9yIEFUQTMgPj0gOEdCDQogICogVmVyc2lvbiAxLjA2CQlnZXQg
Ym9vdC11cCBtZXNzYWdlcyB0byBzaG93IGZ1bGwgY3lsIGNvdW50DQogICog
VmVyc2lvbiAxLjA3CQlkaXNhYmxlIGRvb3ItbG9ja2luZyBpZiBpdCBmYWls
cw0KKyAqIFZlcnNpb24gMS4wN2EJZml4ZWQgbXVsdF9jb3VudCBlbmFibGVz
DQogICovDQogDQogI2RlZmluZSBJREVESVNLX1ZFUlNJT04JIjEuMDciDQpA
QCAtMzEyLDcgKzMxMyw4IEBADQogCWludCB1c2VfcGRjNDAzMF9pbyA9IDA7
DQogI2VuZGlmIC8qIENPTkZJR19CTEtfREVWX1BEQzQwMzAgKi8NCiANCi0J
T1VUX0JZVEUoZHJpdmUtPmN0bCxJREVfQ09OVFJPTF9SRUcpOw0KKwlpZiAo
SURFX0NPTlRST0xfUkVHKQ0KKwkJT1VUX0JZVEUoZHJpdmUtPmN0bCxJREVf
Q09OVFJPTF9SRUcpOw0KIAlPVVRfQllURShycS0+bnJfc2VjdG9ycyxJREVf
TlNFQ1RPUl9SRUcpOw0KICNpZmRlZiBDT05GSUdfQkxLX0RFVl9QREM0MDMw
DQogCWlmIChJU19QREM0MDMwX0RSSVZFKSB7DQpAQCAtNzI0LDIwICs3MjYs
MjQgQEANCiAJIGRyaXZlLT5uYW1lLCBpZC0+bW9kZWwsIGlkZWRpc2tfY2Fw
YWNpdHkoZHJpdmUpLzIwNDhMLCBpZC0+YnVmX3NpemUvMiwNCiAJIGRyaXZl
LT5iaW9zX2N5bCwgZHJpdmUtPmJpb3NfaGVhZCwgZHJpdmUtPmJpb3Nfc2Vj
dCk7DQogCWlmIChkcml2ZS0+dXNpbmdfZG1hKSB7DQotCQlpZiAoKGlkLT5m
aWVsZF92YWxpZCAmIDQpICYmIChpZC0+ZG1hX3VsdHJhICYgKGlkLT5kbWFf
dWx0cmEgPj4gOCkgJiA3KSkNCi0JCQlwcmludGsoIiwgVURNQSIpOw0KLQkJ
ZWxzZQ0KKwkJaWYgKChpZC0+ZmllbGRfdmFsaWQgJiA0KSAmJg0KKwkJICAg
IChpZC0+ZG1hX3VsdHJhICYgKGlkLT5kbWFfdWx0cmEgPj4gOCkgJiA3KSkg
ew0KKwkJCXByaW50aygiLCBVRE1BIik7CS8qIFVETUEgQklPUy1lbmFibGVk
ISAqLw0KKwkJfSBlbHNlIGlmIChpZC0+ZmllbGRfdmFsaWQgJiA0KSB7DQor
CQkJcHJpbnRrKCIsIChVKURNQSIpOwkvKiBDYW4gYmUgQklPUy1lbmFibGVk
ISAqLw0KKwkJfSBlbHNlIHsNCiAJCQlwcmludGsoIiwgRE1BIik7DQorCQl9
DQogCX0NCiAJcHJpbnRrKCJcbiIpOw0KIAlkcml2ZS0+bXVsdF9jb3VudCA9
IDA7DQogCWlmIChpZC0+bWF4X211bHRzZWN0KSB7DQotCQlkcml2ZS0+bXVs
dF9yZXEgPSBJTklUSUFMX01VTFRfQ09VTlQ7DQotCQlpZiAoZHJpdmUtPm11
bHRfcmVxID4gaWQtPm1heF9tdWx0c2VjdCkNCi0JCQlkcml2ZS0+bXVsdF9y
ZXEgPSBpZC0+bWF4X211bHRzZWN0Ow0KLQkJaWYgKGRyaXZlLT5tdWx0X3Jl
cSB8fCAoKGlkLT5tdWx0c2VjdF92YWxpZCAmIDEpICYmIGlkLT5tdWx0c2Vj
dCkpDQotCQkJZHJpdmUtPnNwZWNpYWwuYi5zZXRfbXVsdG1vZGUgPSAxOw0K
KwkJaWQtPm11bHRzZWN0ID0gKChpZC0+bWF4X211bHRzZWN0LzIpID4gMSkg
PyBpZC0+bWF4X211bHRzZWN0IDogMDsNCisJCWlkLT5tdWx0c2VjdF92YWxp
ZCA9IGlkLT5tdWx0c2VjdCA/IDEgOiAwOw0KKwkJZHJpdmUtPm11bHRfcmVx
ID0gaWQtPm11bHRzZWN0X3ZhbGlkID8gaWQtPm1heF9tdWx0c2VjdCA6IElO
SVRJQUxfTVVMVF9DT1VOVDsNCisJCWRyaXZlLT5zcGVjaWFsLmIuc2V0X211
bHRtb2RlID0gZHJpdmUtPm11bHRfcmVxID8gMSA6IDA7DQogCX0NCisJZHJp
dmUtPm5vX2lvXzMyYml0ID0gaWQtPmR3b3JkX2lvID8gMSA6IDA7DQogfQ0K
IA0KIGludCBpZGVkaXNrX2luaXQgKHZvaWQpDQpkaWZmIC11ck4gbGludXgt
Mi4xLjExNy1wcmlzdGluZS9kcml2ZXJzL2Jsb2NrL2lkZS1kbWEuYyBsaW51
eC9kcml2ZXJzL2Jsb2NrL2lkZS1kbWEuYw0KLS0tIGxpbnV4LTIuMS4xMTct
cHJpc3RpbmUvZHJpdmVycy9ibG9jay9pZGUtZG1hLmMJVGh1IEF1ZyAyMCAw
MDowOTo0MCAxOTk4DQorKysgbGludXgvZHJpdmVycy9ibG9jay9pZGUtZG1h
LmMJVGh1IEF1ZyAyMCAwMDoxODowNSAxOTk4DQpAQCAtNjIsNiArNjIsMTMg
QEANCiAgKiBmb3Igc3VwcGx5aW5nIGEgUHJvbWlzZSBVRE1BIGJvYXJkICYg
V0QgVURNQSBkcml2ZSBmb3IgdGhpcyB3b3JrIQ0KICAqDQogICogQW5kLCB5
ZXMsIEludGVsIFphcHBhIGJvYXJkcyByZWFsbHkgKmRvKiB1c2UgYm90aCBQ
SUlYIElERSBwb3J0cy4NCisgKg0KKyAqIEFDQVJEIEFUUDg1MFVGIENoaXBz
ZXQgIk1vZGlmaWVkIFNDU0kgQ2xhc3MiIHdpdGggb3RoZXIgbmFtZXMNCisg
KiAgICAgICBBRUM2MjEwIFUvVUYNCisgKiAgICAgICBTSUlHJ3MgVWx0cmFJ
REUgUHJvIENOLTI0NDkNCisgKiBUVEkgICBIUFQzNDMgQ2hpcHNldCAiTW9k
aWZpZWQgU0NTSSBDbGFzcyIgYnV0IHJlcG9ydHMgYXMgYW4NCisgKiAgICAg
ICB1bmtub3duIHN0b3JhZ2UgZGV2aWNlLg0KKyAqIE5FVwljaGVja19kcml2
ZV9saXN0cyhpZGVfZHJpdmVfdCAqZHJpdmUsIGludCBnb29kX2JhZCkNCiAg
Ki8NCiAjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+DQogI2luY2x1ZGUgPGxp
bnV4L3R5cGVzLmg+DQpAQCAtODUsOSArOTIsMTkgQEANCiBjb25zdCBjaGFy
ICpnb29kX2RtYV9kcml2ZXNbXSA9IHsiTWljcm9wb2xpcyAyMTEyQSIsDQog
CQkJCSAiQ09OTkVSIENUTUEgNDAwMCIsDQogCQkJCSAiU1QzNDM0MkEiLAkv
KiBmb3IgU3VuIFVsdHJhICovDQorCQkJCSAiV0RDIEFDMjM0MEYiLAkvKiBE
TUEgbW9kZTEgKi8NCisJCQkJICJXREMgQUMyMzQwSCIsCS8qIERNQSBtb2Rl
MSAqLw0KIAkJCQkgTlVMTH07DQogDQogLyoNCisgKiBiYWRfZG1hX2RyaXZl
cygpIGxpc3RzIHRoZSBtb2RlbCBuYW1lcyAoZnJvbSAiaGRwYXJtIC1pIikN
CisgKiBvZiBkcml2ZXMgd2hpY2ggc3VwcG9zZWRseSBzdXBwb3J0IChVKURN
QSBidXQgd2hpY2ggYXJlDQorICoga25vd24gdG8gY29ycnVwdCBkYXRhIHdp
dGggdGhpcyBpbnRlcmZhY2UgdW5kZXIgTGludXguDQorICovDQorY29uc3Qg
Y2hhciAqYmFkX2RtYV9kcml2ZXNbXSA9IHsiV0RDIEFDMjIxMDBIIiwNCisg
CQkJCU5VTEx9Ow0KKw0KKy8qDQogICogT3VyIFBoeXNpY2FsIFJlZ2lvbiBE
ZXNjcmlwdG9yIChQUkQpIHRhYmxlIHNob3VsZCBiZSBsYXJnZSBlbm91Z2gN
CiAgKiB0byBoYW5kbGUgdGhlIGJpZ2dlc3QgSS9PIHJlcXVlc3Qgd2UgYXJl
IGxpa2VseSB0byBzZWUuICBTaW5jZSByZXF1ZXN0cw0KICAqIGNhbiBoYXZl
IG5vIG1vcmUgdGhhbiAyNTYgc2VjdG9ycywgYW5kIHNpbmNlIHRoZSB0eXBp
Y2FsIGJsb2Nrc2l6ZSBpcw0KQEAgLTIwNCwyNyArMjIxLDU3IEBADQogCXJl
dHVybiBjb3VudDsNCiB9DQogDQotc3RhdGljIGludCBjb25maWdfZHJpdmVf
Zm9yX2RtYSAoaWRlX2RyaXZlX3QgKmRyaXZlKQ0KKy8qDQorICogIEZvciBi
b3RoIEJsYWNrbGlzdGVkIGFuZCBXaGl0ZWxpc3RlZCBkcml2ZXMuDQorICog
IFRoaXMgaXMgc2V0dXAgdG8gYmUgY2FsbGVkIGFzIGFuIGV4dGVybiBmb3Ig
ZnV0dXJlIHN1cHBvcnQNCisgKiAgdG8gb3RoZXIgc3BlY2lhbCBkcml2ZXIg
Y29kZS4NCisgKi8NCitpbnQgY2hlY2tfZHJpdmVfbGlzdHMgKGlkZV9kcml2
ZV90ICpkcml2ZSwgaW50IGdvb2RfYmFkKQ0KIHsNCiAJY29uc3QgY2hhciAq
Kmxpc3Q7DQogCXN0cnVjdCBoZF9kcml2ZWlkICppZCA9IGRyaXZlLT5pZDsN
CisNCisJaWYgKGdvb2RfYmFkKSB7DQorCQkvKiBDb25zdWx0IHRoZSBsaXN0
IG9mIGtub3duICJnb29kIiBkcml2ZXMgKi8NCisJCWxpc3QgPSBnb29kX2Rt
YV9kcml2ZXM7DQorCQl3aGlsZSAoKmxpc3QpIHsNCisJCQlpZiAoIXN0cmNt
cCgqbGlzdCsrLGlkLT5tb2RlbCkpDQorCQkJCXJldHVybiAxOw0KKwkJfQ0K
Kwl9IGVsc2Ugew0KKwkJLyogQ29uc3VsdCB0aGUgbGlzdCBvZiBrbm93biAi
YmFkIiBkcml2ZXMgKi8NCisJCWxpc3QgPSBiYWRfZG1hX2RyaXZlczsNCisJ
CXdoaWxlICgqbGlzdCkgew0KKwkJCWlmICghc3RyY21wKCpsaXN0KyssaWQt
Pm1vZGVsKSkgew0KKwkJCQlwcmludGsoIiVzOiAoVSlETUEgY2FwYWJpbGl0
eSBpcyBicm9rZW4gZm9yICVzXG4iLA0KKwkJCQkJZHJpdmUtPm5hbWUsIGlk
LT5tb2RlbCk7DQorCQkJCXJldHVybiAxOw0KKwkJCX0NCisJCX0NCisJfQ0K
KwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGludCBjb25maWdfZHJpdmVf
Zm9yX2RtYSAoaWRlX2RyaXZlX3QgKmRyaXZlKQ0KK3sNCisJc3RydWN0IGhk
X2RyaXZlaWQgKmlkID0gZHJpdmUtPmlkOw0KIAlpZGVfaHdpZl90ICpod2lm
ID0gSFdJRihkcml2ZSk7DQogDQogCWlmIChpZCAmJiAoaWQtPmNhcGFiaWxp
dHkgJiAxKSAmJiBod2lmLT5hdXRvZG1hKSB7DQorCQkvKiBDb25zdWx0IHRo
ZSBsaXN0IG9mIGtub3duICJiYWQiIGRyaXZlcyAqLw0KKwkJaWYgKGNoZWNr
X2RyaXZlX2xpc3RzKGRyaXZlLCBCQURfRE1BX0RSSVZFKSkNCisJCQlyZXR1
cm4gaHdpZi0+ZG1hcHJvYyhpZGVfZG1hX29mZiwgZHJpdmUpOw0KIAkJLyog
RW5hYmxlIERNQSBvbiBhbnkgZHJpdmUgdGhhdCBoYXMgVWx0cmFETUEgKG1v
ZGUgMC8xLzIpIGVuYWJsZWQgKi8NCiAJCWlmIChpZC0+ZmllbGRfdmFsaWQg
JiA0KQkvKiBVbHRyYURNQSAqLw0KIAkJCWlmICAoKGlkLT5kbWFfdWx0cmEg
JiAoaWQtPmRtYV91bHRyYSA+PiA4KSAmIDcpKQ0KIAkJCQlyZXR1cm4gaHdp
Zi0+ZG1hcHJvYyhpZGVfZG1hX29uLCBkcml2ZSk7DQogCQkvKiBFbmFibGUg
RE1BIG9uIGFueSBkcml2ZSB0aGF0IGhhcyBtb2RlMiBETUEgKG11bHRpIG9y
IHNpbmdsZSkgZW5hYmxlZCAqLw0KIAkJaWYgKGlkLT5maWVsZF92YWxpZCAm
IDIpCS8qIHJlZ3VsYXIgRE1BICovDQotCQkJaWYgICgoaWQtPmRtYV9td29y
ZCAmIDB4NDA0KSA9PSAweDQwNCB8fCAoaWQtPmRtYV8xd29yZCAmIDB4NDA0
KSA9PSAweDQwNCkNCisJCQlpZiAoKGlkLT5kbWFfbXdvcmQgJiAweDQwNCkg
PT0gMHg0MDQgfHwgKGlkLT5kbWFfMXdvcmQgJiAweDQwNCkgPT0gMHg0MDQp
DQogCQkJCXJldHVybiBod2lmLT5kbWFwcm9jKGlkZV9kbWFfb24sIGRyaXZl
KTsNCiAJCS8qIENvbnN1bHQgdGhlIGxpc3Qgb2Yga25vd24gImdvb2QiIGRy
aXZlcyAqLw0KLQkJbGlzdCA9IGdvb2RfZG1hX2RyaXZlczsNCi0JCXdoaWxl
ICgqbGlzdCkgew0KLQkJCWlmICghc3RyY21wKCpsaXN0KyssaWQtPm1vZGVs
KSkNCi0JCQkJcmV0dXJuIGh3aWYtPmRtYXByb2MoaWRlX2RtYV9vbiwgZHJp
dmUpOw0KLQkJfQ0KKwkJaWYgKGNoZWNrX2RyaXZlX2xpc3RzKGRyaXZlLCBH
T09EX0RNQV9EUklWRSkpDQorCQkJcmV0dXJuIGh3aWYtPmRtYXByb2MoaWRl
X2RtYV9vbiwgZHJpdmUpOw0KIAl9DQogCXJldHVybiBod2lmLT5kbWFwcm9j
KGlkZV9kbWFfb2ZmX3F1aWV0bHksIGRyaXZlKTsNCiB9DQpAQCAtMzU0LDcg
KzQwMSw3IEBADQogCQl9DQogCX0NCiAJaWYgKGRtYV9iYXNlKSB7DQotCQlp
ZiAoZXh0cmEpIC8qIFBEQzIwMjQ2ICovDQorCQlpZiAoZXh0cmEpIC8qIFBE
QzIwMjQ2ICYgSFBUMzQzICovDQogCQkJcmVxdWVzdF9yZWdpb24oZG1hX2Jh
c2UrMTYsIGV4dHJhLCBuYW1lKTsNCiAJCWRtYV9iYXNlICs9IGh3aWYtPmNo
YW5uZWwgPyA4IDogMDsNCiAJCWlmIChpbmIoZG1hX2Jhc2UrMikgJiAweDgw
KSB7DQpkaWZmIC11ck4gbGludXgtMi4xLjExNy1wcmlzdGluZS9kcml2ZXJz
L2Jsb2NrL2lkZS1mbG9wcHkuYyBsaW51eC9kcml2ZXJzL2Jsb2NrL2lkZS1m
bG9wcHkuYw0KLS0tIGxpbnV4LTIuMS4xMTctcHJpc3RpbmUvZHJpdmVycy9i
bG9jay9pZGUtZmxvcHB5LmMJVGh1IEF1ZyAyMCAwMDowOTo0MCAxOTk4DQor
KysgbGludXgvZHJpdmVycy9ibG9jay9pZGUtZmxvcHB5LmMJVGh1IEF1ZyAy
MCAwMDoxODowNSAxOTk4DQpAQCAtMTM3MSw3ICsxMzcxLDggQEANCiAJaWYg
KGdjdy5kcnFfdHlwZSA9PSAxKQ0KIAkJc2V0X2JpdCAoSURFRkxPUFBZX0RS
UV9JTlRFUlJVUFQsICZmbG9wcHktPmZsYWdzKTsNCiAJaWYgKHN0cmNtcChk
cml2ZS0+aWQtPm1vZGVsLCAiSU9NRUdBIFpJUCAxMDAgQVRBUEkiKSA9PSAw
ICYmDQotCSAgICBzdHJjbXAoZHJpdmUtPmlkLT5md19yZXYsICIyMS5EIikg
PT0gMCkgew0KKwkgICAgKChzdHJjbXAoZHJpdmUtPmlkLT5md19yZXYsICIy
MS5EIikgPT0gMCkgfHwNCisJICAgICAoc3RyY21wKGRyaXZlLT5pZC0+Zndf
cmV2LCAiMjMuRCIpID09IDApKSkgew0KIAkJZm9yIChpID0gMDsgaSA8IDEg
PDwgUEFSVE5fQklUUzsgaSsrKQ0KIAkJCW1heF9zZWN0b3JzW21ham9yXVtt
aW5vciArIGldID0gNjQ7DQogCX0NCmRpZmYgLXVyTiBsaW51eC0yLjEuMTE3
LXByaXN0aW5lL2RyaXZlcnMvYmxvY2svaWRlLXBjaS5jIGxpbnV4L2RyaXZl
cnMvYmxvY2svaWRlLXBjaS5jDQotLS0gbGludXgtMi4xLjExNy1wcmlzdGlu
ZS9kcml2ZXJzL2Jsb2NrL2lkZS1wY2kuYwlUaHUgQXVnIDIwIDAwOjA5OjQw
IDE5OTgNCisrKyBsaW51eC9kcml2ZXJzL2Jsb2NrL2lkZS1wY2kuYwlUaHUg
QXVnIDIwIDAwOjE4OjA1IDE5OTgNCkBAIC00MiwxMCArNDIsMTMgQEANCiAj
ZGVmaW5lIERFVklEX05TODc0MTAJKChpZGVfcGNpX2RldmlkX3Qpe1BDSV9W
RU5ET1JfSURfTlMsICAgICAgUENJX0RFVklDRV9JRF9OU184NzQxMH0pDQog
I2RlZmluZSBERVZJRF9OUzg3NDE1CSgoaWRlX3BjaV9kZXZpZF90KXtQQ0lf
VkVORE9SX0lEX05TLCAgICAgIFBDSV9ERVZJQ0VfSURfTlNfODc0MTV9KQ0K
ICNkZWZpbmUgREVWSURfSFQ2NTY1CSgoaWRlX3BjaV9kZXZpZF90KXtQQ0lf
VkVORE9SX0lEX0hPTFRFSywgIFBDSV9ERVZJQ0VfSURfSE9MVEVLXzY1NjV9
KQ0KLSNkZWZpbmUgREVWSURfQUVDNjIxMAkoKGlkZV9wY2lfZGV2aWRfdCl7
MHgxMTkxLCAgICAgICAgICAgICAgICAweDAwMDV9KQ0KKyNkZWZpbmUgREVW
SURfQUVDNjIxMAkoKGlkZV9wY2lfZGV2aWRfdCl7UENJX1ZFTkRPUl9JRF9B
UlRPUCwgICBQQ0lfREVWSUNFX0lEX0FSVE9QX0FUUDg1MFVGfSkNCiAjZGVm
aW5lIERFVklEX1c4MkMxMDUJKChpZGVfcGNpX2RldmlkX3Qpe1BDSV9WRU5E
T1JfSURfV0lOQk9ORCwgUENJX0RFVklDRV9JRF9XSU5CT05EXzgyQzEwNX0p
DQorI2RlZmluZSBERVZJRF9VTTg4ODZCRgkoKGlkZV9wY2lfZGV2aWRfdCl7
UENJX1ZFTkRPUl9JRF9VTUMsICAgICBQQ0lfREVWSUNFX0lEX1VNQ19VTTg4
ODZCRn0pDQorI2RlZmluZSBERVZJRF9IUFQzNDMJKChpZGVfcGNpX2Rldmlk
X3Qpe1BDSV9WRU5ET1JfSURfVFRJLCAgICAgUENJX0RFVklDRV9JRF9UVElf
SFBUMzQzfSkNCiANCiAjZGVmaW5lIElERV9JR05PUkUJKCh2b2lkICopLTEp
DQorI2RlZmluZSBQT1JUU19JR05PUkUJKCh2b2lkICopLTEpDQogDQogI2lm
ZGVmIENPTkZJR19CTEtfREVWX1RSTTI5MA0KIGV4dGVybiB2b2lkIGlkZV9p
bml0X3RybTI5MChpZGVfaHdpZl90ICopOw0KQEAgLTkzLDYgKzk2LDI0IEBA
DQogI2RlZmluZSBJTklUX1JaMTAwMAlJREVfSUdOT1JFDQogI2VuZGlmDQog
DQorI2lmZGVmIENPTkZJR19CTEtfREVWX1ZJQTgyQzU4Ng0KK2V4dGVybiB2
b2lkIGlkZV9pbml0X3ZpYTgyYzU4NihpZGVfaHdpZl90ICopOw0KKyNkZWZp
bmUgSU5JVF9WSUE4MkM1ODYJJmlkZV9pbml0X3ZpYTgyYzU4Ng0KKyNlbHNl
DQorI2RlZmluZSBJTklUX1ZJQTgyQzU4NglOVUxMDQorI2VuZGlmDQorDQor
DQorI2lmZGVmIENPTkZJR19CTEtfREVWX0hQVDM0Mw0KK2V4dGVybiB2b2lk
IGlkZV9pbml0X2hwdDM0MyhpZGVfaHdpZl90ICopOw0KKyNkZWZpbmUgSU5J
VF9IUFQzNDMJJmlkZV9pbml0X2hwdDM0Mw0KK2V4dGVybiB2b2lkIGluaXRf
aW9faHB0MzQzKHN0cnVjdCBwY2lfZGV2ICosIHVuc2lnbmVkIGludCwgdW5z
aWduZWQgbG9uZyAqLCB1bnNpZ25lZCBsb25nICosIHVuc2lnbmVkIGludCAq
KTsNCisjZGVmaW5lIFBPUlRTX0hQVDM0MwkmaW5pdF9pb19ocHQzNDMNCisj
ZWxzZQ0KKyNkZWZpbmUgSU5JVF9IUFQzNDMJSURFX0lHTk9SRQ0KKyNkZWZp
bmUgUE9SVFNfSFBUMzQzCVBPUlRTX0lHTk9SRQ0KKyNlbmRpZg0KKw0KIHR5
cGVkZWYgc3RydWN0IGlkZV9wY2lfZW5hYmxlYml0X3Mgew0KIAlieXRlCXJl
ZzsJLyogYnl0ZSBwY2kgcmVnIGhvbGRpbmcgdGhlIGVuYWJsZS1iaXQgKi8N
CiAJYnl0ZQltYXNrOwkvKiBtYXNrIHRvIGlzb2xhdGUgdGhlIGVuYWJsZS1i
aXQgKi8NCkBAIC0xMDMsMzYgKzEyNCw4NSBAQA0KIAlpZGVfcGNpX2Rldmlk
X3QJCWRldmlkOw0KIAljb25zdCBjaGFyCQkqbmFtZTsNCiAJdm9pZCAJCQko
KmluaXRfaHdpZikoaWRlX2h3aWZfdCAqaHdpZik7DQorCXZvaWQJCQkoKmlu
aXRfaW9fc3BhY2UpKHN0cnVjdCBwY2lfZGV2ICpkZXYsDQorCQkJCQkJdW5z
aWduZWQgaW50IHBvcnQsDQorCQkJCQkJdW5zaWduZWQgbG9uZyAqYmFzZSwN
CisJCQkJCQl1bnNpZ25lZCBsb25nICpjdGwsDQorCQkJCQkJdW5zaWduZWQg
aW50ICppcnEpOw0KIAlpZGVfcGNpX2VuYWJsZWJpdF90CWVuYWJsZWJpdHNb
Ml07DQorCWJ5dGUJCQlib290YWJsZTsNCisJdW5zaWduZWQgaW50CQlleHRy
YTsNCiB9IGlkZV9wY2lfZGV2aWNlX3Q7DQogDQogc3RhdGljIGlkZV9wY2lf
ZGV2aWNlX3QgaWRlX3BjaV9jaGlwc2V0c1tdIF9faW5pdGRhdGEgPSB7DQot
CXtERVZJRF9QSUlYYSwJIlBJSVgiLAkJTlVMTCwJCXt7MHg0MSwweDgwLDB4
ODB9LCB7MHg0MywweDgwLDB4ODB9fSB9LA0KLQl7REVWSURfUElJWGIsCSJQ
SUlYIiwJCU5VTEwsCQl7ezB4NDEsMHg4MCwweDgwfSwgezB4NDMsMHg4MCww
eDgwfX0gfSwNCi0Je0RFVklEX1BJSVgzLAkiUElJWDMiLAlOVUxMLAkJe3sw
eDQxLDB4ODAsMHg4MH0sIHsweDQzLDB4ODAsMHg4MH19IH0sDQotCXtERVZJ
RF9QSUlYNCwJIlBJSVg0IiwJTlVMTCwJCXt7MHg0MSwweDgwLDB4ODB9LCB7
MHg0MywweDgwLDB4ODB9fSB9LA0KLQl7REVWSURfVlBfSURFLAkiVlBfSURF
IiwJTlVMTCwJCXt7MHg0MCwweDAyLDB4MDJ9LCB7MHg0MCwweDAxLDB4MDF9
fSB9LA0KLQl7REVWSURfUERDMjAyNDYsIlBEQzIwMjQ2IiwJTlVMTCwJCXt7
MHg1MCwweDAyLDB4MDJ9LCB7MHg1MCwweDA0LDB4MDR9fSB9LA0KLQl7REVW
SURfUloxMDAwLAkiUloxMDAwIiwJSU5JVF9SWjEwMDAsCXt7MHgwMCwweDAw
LDB4MDB9LCB7MHgwMCwweDAwLDB4MDB9fSB9LA0KLQl7REVWSURfUloxMDAx
LAkiUloxMDAxIiwJSU5JVF9SWjEwMDAsCXt7MHgwMCwweDAwLDB4MDB9LCB7
MHgwMCwweDAwLDB4MDB9fSB9LA0KLQl7REVWSURfQ01ENjQwLAkiQ01ENjQw
IiwJSURFX0lHTk9SRSwJe3sweDAwLDB4MDAsMHgwMH0sIHsweDAwLDB4MDAs
MHgwMH19IH0sDQotCXtERVZJRF9OUzg3NDEwLAkiTlM4NzQxMCIsCU5VTEws
CQl7ezB4NDMsMHgwOCwweDA4fSwgezB4NDcsMHgwOCwweDA4fX0gfSwNCi0J
e0RFVklEX1NJUzU1MTMsCSJTSVM1NTEzIiwJTlVMTCwJCXt7MHg0YSwweDAy
LDB4MDJ9LCB7MHg0YSwweDA0LDB4MDR9fSB9LA0KLQl7REVWSURfQ01ENjQ2
LAkiQ01ENjQ2IiwJSU5JVF9DTUQ2NDYsCXt7MHgwMCwweDAwLDB4MDB9LCB7
MHg1MSwweDgwLDB4ODB9fSB9LA0KLQl7REVWSURfSFQ2NTY1LAkiSFQ2NTY1
IiwJTlVMTCwJCXt7MHgwMCwweDAwLDB4MDB9LCB7MHgwMCwweDAwLDB4MDB9
fSB9LA0KLQl7REVWSURfT1BUSTYyMSwJIk9QVEk2MjEiLAlJTklUX09QVEk2
MjEsCXt7MHg0NSwweDgwLDB4MDB9LCB7MHg0MCwweDA4LDB4MDB9fSB9LA0K
LQl7REVWSURfT1BUSTYyMVgsIk9QVEk2MjFYIiwJSU5JVF9PUFRJNjIxLAl7
ezB4NDUsMHg4MCwweDAwfSwgezB4NDAsMHgwOCwweDAwfX0gfSwNCi0Je0RF
VklEX1RSTTI5MCwJIlRSTTI5MCIsCUlOSVRfVFJNMjkwLAl7ezB4MDAsMHgw
MCwweDAwfSwgezB4MDAsMHgwMCwweDAwfX0gfSwNCi0Je0RFVklEX05TODc0
MTUsCSJOUzg3NDE1IiwJSU5JVF9OUzg3NDE1LAl7ezB4MDAsMHgwMCwweDAw
fSwgezB4MDAsMHgwMCwweDAwfX0gfSwNCi0Je0RFVklEX0FFQzYyMTAsCSJB
RUM2MjEwIiwJTlVMTCwJCXt7MHgwMCwweDAwLDB4MDB9LCB7MHgwMCwweDAw
LDB4MDB9fSB9LA0KLQl7REVWSURfVzgyQzEwNSwJIlc4MkMxMDUiLAlJTklU
X1c4MkMxMDUsCXt7MHg0MCwweDAxLDB4MDF9LCB7MHg0MCwweDEwLDB4MTB9
fSB9LA0KLQl7SURFX1BDSV9ERVZJRF9OVUxMLCAiUENJX0lERSIsCU5VTEws
CQl7ezB4MDAsMHgwMCwweDAwfSwgezB4MDAsMHgwMCwweDAwfX0gfX07DQor
CXtERVZJRF9QSUlYYSwJIlBJSVgiLAkJTlVMTCwJCU5VTEwsCQl7ezB4NDEs
MHg4MCwweDgwfSwgezB4NDMsMHg4MCwweDgwfX0sCTB4MDEsCTAgfSwNCisJ
e0RFVklEX1BJSVhiLAkiUElJWCIsCQlOVUxMLAkJTlVMTCwJCXt7MHg0MSww
eDgwLDB4ODB9LCB7MHg0MywweDgwLDB4ODB9fSwJMHgwMSwJMCB9LA0KKwl7
REVWSURfUElJWDMsCSJQSUlYMyIsCU5VTEwsCQlOVUxMLAkJe3sweDQxLDB4
ODAsMHg4MH0sIHsweDQzLDB4ODAsMHg4MH19LAkweDAxLAkwIH0sDQorCXtE
RVZJRF9QSUlYNCwJIlBJSVg0IiwJTlVMTCwJCU5VTEwsCQl7ezB4NDEsMHg4
MCwweDgwfSwgezB4NDMsMHg4MCwweDgwfX0sCTB4MDEsCTAgfSwNCisJe0RF
VklEX1ZQX0lERSwJIlZQX0lERSIsCUlOSVRfVklBODJDNTg2LAlOVUxMLAkJ
e3sweDQwLDB4MDIsMHgwMn0sIHsweDQwLDB4MDEsMHgwMX19LAkweDAxLAkw
IH0sDQorCXtERVZJRF9QREMyMDI0NiwiUERDMjAyNDYiLAlOVUxMLAkJTlVM
TCwJCXt7MHg1MCwweDAyLDB4MDJ9LCB7MHg1MCwweDA0LDB4MDR9fSwJMHgw
MSwJMTYgfSwNCisJe0RFVklEX1JaMTAwMCwJIlJaMTAwMCIsCUlOSVRfUlox
MDAwLAlOVUxMLAkJe3sweDAwLDB4MDAsMHgwMH0sIHsweDAwLDB4MDAsMHgw
MH19LAkweDAxLAkwIH0sDQorCXtERVZJRF9SWjEwMDEsCSJSWjEwMDEiLAlJ
TklUX1JaMTAwMCwJTlVMTCwJCXt7MHgwMCwweDAwLDB4MDB9LCB7MHgwMCww
eDAwLDB4MDB9fSwJMHgwMSwJMCB9LA0KKwl7REVWSURfQ01ENjQwLAkiQ01E
NjQwIiwJSURFX0lHTk9SRSwJTlVMTCwJCXt7MHgwMCwweDAwLDB4MDB9LCB7
MHgwMCwweDAwLDB4MDB9fSwJMHgwMSwJMCB9LA0KKwl7REVWSURfTlM4NzQx
MCwJIk5TODc0MTAiLAlOVUxMLAkJTlVMTCwJCXt7MHg0MywweDA4LDB4MDh9
LCB7MHg0NywweDA4LDB4MDh9fSwJMHgwMSwJMCB9LA0KKwl7REVWSURfU0lT
NTUxMywJIlNJUzU1MTMiLAlOVUxMLAkJTlVMTCwJCXt7MHg0YSwweDAyLDB4
MDJ9LCB7MHg0YSwweDA0LDB4MDR9fSwJMHgwMSwJMCB9LA0KKwl7REVWSURf
Q01ENjQ2LAkiQ01ENjQ2IiwJSU5JVF9DTUQ2NDYsCU5VTEwsCQl7ezB4MDAs
MHgwMCwweDAwfSwgezB4NTEsMHg4MCwweDgwfX0sCTB4MDEsCTAgfSwNCisJ
e0RFVklEX0hUNjU2NSwJIkhUNjU2NSIsCU5VTEwsCQlOVUxMLAkJe3sweDAw
LDB4MDAsMHgwMH0sIHsweDAwLDB4MDAsMHgwMH19LAkweDAxLAkwIH0sDQor
CXtERVZJRF9PUFRJNjIxLAkiT1BUSTYyMSIsCUlOSVRfT1BUSTYyMSwJTlVM
TCwJCXt7MHg0NSwweDgwLDB4MDB9LCB7MHg0MCwweDA4LDB4MDB9fSwJMHgw
MSwJMCB9LA0KKwl7REVWSURfT1BUSTYyMVgsIk9QVEk2MjFYIiwJSU5JVF9P
UFRJNjIxLAlOVUxMLAkJe3sweDQ1LDB4ODAsMHgwMH0sIHsweDQwLDB4MDgs
MHgwMH19LAkweDAxLAkwIH0sDQorCXtERVZJRF9UUk0yOTAsCSJUUk0yOTAi
LAlJTklUX1RSTTI5MCwJTlVMTCwJCXt7MHgwMCwweDAwLDB4MDB9LCB7MHgw
MCwweDAwLDB4MDB9fSwJMHgwMSwJMCB9LA0KKwl7REVWSURfTlM4NzQxNSwJ
Ik5TODc0MTUiLAlJTklUX05TODc0MTUsCU5VTEwsCQl7ezB4MDAsMHgwMCww
eDAwfSwgezB4MDAsMHgwMCwweDAwfX0sCTB4MDEsCTAgfSwNCisJe0RFVklE
X0FFQzYyMTAsCSJBRUM2MjEwIiwJTlVMTCwJCU5VTEwsCQl7ezB4MDAsMHgw
MCwweDAwfSwgezB4MDAsMHgwMCwweDAwfX0sCTB4MDEsCTAgfSwNCisJe0RF
VklEX1c4MkMxMDUsCSJXODJDMTA1IiwJSU5JVF9XODJDMTA1LAlOVUxMLAkJ
e3sweDQwLDB4MDEsMHgwMX0sIHsweDQwLDB4MTAsMHgxMH19LAkweDAxLAkw
IH0sDQorCXtERVZJRF9VTTg4ODZCRiwiVU04ODg2QkYiLAlOVUxMLAkJTlVM
TCwJCXt7MHgwMCwweDAwLDB4MDB9LCB7MHgwMCwweDAwLDB4MDB9fSwJMHgw
MSwJMCB9LA0KKwl7REVWSURfSFBUMzQzLAkiSFBUMzQzIiwJSU5JVF9IUFQz
NDMsCVBPUlRTX0hQVDM0MywJe3sweDAwLDB4MDAsMHgwMH0sIHsweDAwLDB4
MDAsMHgwMH19LAkweDAwLAkxNiB9LA0KKwl7SURFX1BDSV9ERVZJRF9OVUxM
LCAiUENJX0lERSIsCU5VTEwsCQlOVUxMLAkJe3sweDAwLDB4MDAsMHgwMH0s
IHsweDAwLDB4MDAsMHgwMH19LAkweDAwLCAJMCB9fTsNCisNCisvKg0KKyAq
IFRoaXMgYWxsb3dzIG9mZmJvYXJkIGlkZS1wY2kgY2FyZHMgdGhlIGVuYWJs
ZSBhIEJJT1MsIHZlcmlmeSBpbnRlcnJ1cHQNCisgKiBzZXR0aW5ncyBvZiBz
cGxpdC1taXJyb3IgcGNpLWNvbmZpZyBzcGFjZSwgcGxhY2UgY2hpcHNldCBp
bnRvIGluaXQtbW9kZSwNCisgKiBhbmQvb3IgcHJlc2VydmUgYW4gaW50ZXJy
dXB0IGlmIHRoZSBjYXJkIGlzIG5vdCBuYXRpdmUgaWRlIHN1cHBvcnQuDQor
ICovDQorX19pbml0ZnVuYyhzdGF0aWMgdW5zaWduZWQgaW50IGlkZV9zcGVj
aWFsX3NldHRpbmdzIChzdHJ1Y3QgcGNpX2RldiAqZGV2LCBjb25zdCBjaGFy
ICpuYW1lKSkNCit7DQorCXVuc2lnbmVkIGludCBhZGRyZXNzYmlvcyA9IDA7
DQorDQorCXBjaV9yZWFkX2NvbmZpZ19kd29yZChkZXYsIFBDSV9ST01fQURE
UkVTUywgJmFkZHJlc3NiaW9zKTsNCisNCisJc3dpdGNoKGRldi0+ZGV2aWNl
KSB7DQorCQljYXNlIFBDSV9ERVZJQ0VfSURfQVJUT1BfQVRQODUwVUY6DQor
CQljYXNlIFBDSV9ERVZJQ0VfSURfUFJPTUlTRV8yMDI0NjoNCisJCQlwY2lf
d3JpdGVfY29uZmlnX2J5dGUoZGV2LCAweDMwLCAweDAxKTsNCisJCQlwcmlu
dGsoIiVzOiBST00gZW5hYmxlZCAiLCBuYW1lKTsNCisNCisJCQlpZiAoIWFk
ZHJlc3NiaW9zKSB7DQorCQkJCXByaW50aygiYnV0IG5vIGFkZHJlc3NcbiIp
Ow0KKwkJCX0gZWxzZSB7DQorCQkJCXByaW50aygiYXQgMHglMDh4XG4iLCBh
ZGRyZXNzYmlvcyk7DQorCQkJfQ0KKw0KKwkJCWlmICgoZGV2LT5jbGFzcyA+
PiA4KSA9PSBQQ0lfQ0xBU1NfU1RPUkFHRV9SQUlEKSB7DQorCQkJCXVuc2ln
bmVkIGNoYXIgaXJxMSA9IDAsIGlycTIgPSAwOw0KKw0KKwkJCQlwY2lfcmVh
ZF9jb25maWdfYnl0ZShkZXYsIDB4M2MsICZpcnExKTsNCisJCQkJcGNpX3Jl
YWRfY29uZmlnX2J5dGUoZGV2LCAweGJjLCAmaXJxMik7DQorCQkJCWlmIChp
cnExICE9IGlycTIpIHsNCisJCQkJCXByaW50aygiJXM6IElSUTEgJWQgSVJR
MiAlZFxuIiwNCisJCQkJCQluYW1lLCBpcnExLCBpcnEyKTsNCisJCQkJCXBj
aV93cml0ZV9jb25maWdfYnl0ZShkZXYsIDB4YmMsIGlycTEpOw0KKwkJCQl9
DQorCQkJfQ0KKwkJCXJldHVybiBkZXYtPmlycTsNCisJCWRlZmF1bHQ6DQor
CQkJcmV0dXJuIDA7DQorCX0NCit9DQogDQogLyoNCiAgKiBNYXRjaCBhIFBD
SSBJREUgcG9ydCBhZ2FpbnN0IGFuIGVudHJ5IGluIGlkZV9od2lmc1tdLA0K
ICAqIGJhc2VkIG9uIGlvX2Jhc2UgcG9ydCBpZiBwb3NzaWJsZS4NCiAgKi8N
Ci1fX2luaXRmdW5jKHN0YXRpYyBpZGVfaHdpZl90ICppZGVfbWF0Y2hfaHdp
ZiAodW5zaWduZWQgbG9uZyBpb19iYXNlLCBjb25zdCBjaGFyICpuYW1lKSkN
CitfX2luaXRmdW5jKHN0YXRpYyBpZGVfaHdpZl90ICppZGVfbWF0Y2hfaHdp
ZiAodW5zaWduZWQgbG9uZyBpb19iYXNlLCBieXRlIGJvb3RhYmxlLCBjb25z
dCBjaGFyICpuYW1lKSkNCiB7DQogCWludCBoOw0KIAlpZGVfaHdpZl90ICpo
d2lmOw0KQEAgLTE2OCwxMSArMjM4LDIyIEBADQogCSAqIEdpdmUgcHJlZmVy
ZW5jZSB0byBjbGFpbWluZyBvdGhlciBzbG90cyBiZWZvcmUgY2xhaW1pbmcg
aWRlMC9pZGUxLA0KIAkgKiBqdXN0IGluIGNhc2UgdGhlcmUncyBhbm90aGVy
IGludGVyZmFjZSB5ZXQtdG8tYmUtc2Nhbm5lZA0KIAkgKiB3aGljaCB1c2Vz
IHBvcnRzIDFmMC8xNzAgKHRoZSBpZGUwL2lkZTEgZGVmYXVsdHMpLg0KKwkg
Kg0KKwkgKiBVbmxlc3MgdGhlcmUgaXMgYSBib290YWJsZSBjYXJkIHRoYXQg
ZG9lcyBub3QgdXNlIHRoZSBzdGFuZGFyZA0KKwkgKiBwb3J0cyAxZjAvMTcw
ICh0aGUgaWRlMC9pZGUxIGRlZmF1bHRzKS4gVGhlIChib290YWJsZSkgZmxh
Zy4NCiAJICovDQotCWZvciAoaCA9IDI7IGggPCBNQVhfSFdJRlM7ICsraCkg
ew0KLQkJaHdpZiA9IGlkZV9od2lmcyArIGg7DQotCQlpZiAoaHdpZi0+Y2hp
cHNldCA9PSBpZGVfdW5rbm93bikNCi0JCQlyZXR1cm4gaHdpZjsJLyogcGlj
ayBhbiB1bnVzZWQgZW50cnkgKi8NCisJaWYgKGJvb3RhYmxlKSB7DQorCQlm
b3IgKGggPSAwOyBoIDwgTUFYX0hXSUZTOyArK2gpIHsNCisJCQlod2lmID0g
JmlkZV9od2lmc1toXTsNCisJCQlpZiAoaHdpZi0+Y2hpcHNldCA9PSBpZGVf
dW5rbm93bikNCisJCQkJcmV0dXJuIGh3aWY7CS8qIHBpY2sgYW4gdW51c2Vk
IGVudHJ5ICovDQorCQl9DQorCX0gZWxzZSB7DQorCQlmb3IgKGggPSAyOyBo
IDwgTUFYX0hXSUZTOyArK2gpIHsNCisJCQlod2lmID0gaWRlX2h3aWZzICsg
aDsNCisJCQlpZiAoaHdpZi0+Y2hpcHNldCA9PSBpZGVfdW5rbm93bikNCisJ
CQkJcmV0dXJuIGh3aWY7CS8qIHBpY2sgYW4gdW51c2VkIGVudHJ5ICovDQor
CQl9DQogCX0NCiAJZm9yIChoID0gMDsgaCA8IDI7ICsraCkgew0KIAkJaHdp
ZiA9IGlkZV9od2lmcyArIGg7DQpAQCAtMjYzLDcgKzM0NCw3IEBADQogCXBj
aWlycSA9IGRldi0+aXJxOw0KIAlpZiAoKGRldi0+Y2xhc3MgJiB+KDB4ZmEp
KSAhPSAoKFBDSV9DTEFTU19TVE9SQUdFX0lERSA8PCA4KSB8IDUpKSB7DQog
CQlwcmludGsoIiVzOiBub3QgMTAwJSUgbmF0aXZlIG1vZGU6IHdpbGwgcHJv
YmUgaXJxcyBsYXRlclxuIiwgZC0+bmFtZSk7DQotCQlwY2lpcnEgPSAwOw0K
KwkJcGNpaXJxID0gaWRlX3NwZWNpYWxfc2V0dGluZ3MoZGV2LCBkLT5uYW1l
KTsNCiAJfSBlbHNlIGlmICh0cmllZF9jb25maWcpIHsNCiAJCXByaW50aygi
JXM6IHdpbGwgcHJvYmUgaXJxcyBsYXRlclxuIiwgZC0+bmFtZSk7DQogCQlw
Y2lpcnEgPSAwOw0KQEAgLTI3OCw2ICszNTksNyBAQA0KIAkJcHJpbnRrKCIl
czogMTAwJSUgbmF0aXZlIG1vZGUgb24gaXJxICVkXG4iLCBkLT5uYW1lLCBw
Y2lpcnEpOw0KICNlbmRpZg0KIAl9DQorDQogCS8qDQogCSAqIFNldCB1cCB0
aGUgSURFIHBvcnRzDQogCSAqLw0KQEAgLTI4Nyw4ICszNjksMTkgQEANCiAJ
CWlmIChlLT5yZWcgJiYgKHBjaV9yZWFkX2NvbmZpZ19ieXRlKGRldiwgZS0+
cmVnLCAmdG1wKSB8fCAodG1wICYgZS0+bWFzaykgIT0gZS0+dmFsKSkNCiAJ
CQljb250aW51ZTsJLyogcG9ydCBub3QgZW5hYmxlZCAqLw0KIAkJaWYgKChk
ZXYtPmNsYXNzID4+IDgpICE9IFBDSV9DTEFTU19TVE9SQUdFX0lERSB8fCAo
ZGV2LT5jbGFzcyAmIChwb3J0ID8gNCA6IDEpKSAhPSAwKSB7DQotCQkJY3Rs
ICA9IGRldi0+YmFzZV9hZGRyZXNzWygyKnBvcnQpKzFdICYgUENJX0JBU0Vf
QUREUkVTU19JT19NQVNLOw0KLQkJCWJhc2UgPSBkZXYtPmJhc2VfYWRkcmVz
c1syKnBvcnRdICYgfjc7DQorCQkJaWYgKGQtPmluaXRfaW9fc3BhY2UpIHsN
CisNCisJCQkJLyoNCisJCQkJICogIFRoaXMgYWxsb3dzIGZvciBvZmYtYm9h
cmQgaWRlLXBjaSBjYXJkcw0KKwkJCQkgKiAgdGhhdCBoYXZlIG5vbi1zdGFu
ZGFyZCBpby1zcGFjZSBhbmQgYXJlDQorCQkJCSAqICBjb25zaWRlcmVkIG5h
dGl2ZSBpZGUtc3VwcG9ydC4NCisJCQkJICovDQorDQorCQkJCWQtPmluaXRf
aW9fc3BhY2UoZGV2LCBwb3J0LCAmYmFzZSwgJmN0bCwgJnBjaWlycSk7DQor
CQkJfSBlbHNlIHsNCisJCQkJY3RsICA9IGRldi0+YmFzZV9hZGRyZXNzWygy
KnBvcnQpKzFdICYgUENJX0JBU0VfQUREUkVTU19JT19NQVNLOw0KKwkJCQli
YXNlID0gZGV2LT5iYXNlX2FkZHJlc3NbMipwb3J0XSAmIH43Ow0KKwkJCX0N
CiAJCX0NCiAJCWlmICgoY3RsICYmICFiYXNlKSB8fCAoYmFzZSAmJiAhY3Rs
KSkgew0KIAkJCXByaW50aygiJXM6IGluY29uc2lzdGVudCBiYXNlcmVncyAo
QklPUykgZm9yIHBvcnQgJWQsIHNraXBwaW5nXG4iLCBkLT5uYW1lLCBwb3J0
KTsNCkBAIC0yOTgsMTEgKzM5MSwxMSBAQA0KIAkJCWN0bCA9IHBvcnQgPyAw
eDM3NCA6IDB4M2Y0OwkvKiB1c2UgZGVmYXVsdCB2YWx1ZSAqLw0KIAkJaWYg
KCFiYXNlKQ0KIAkJCWJhc2UgPSBwb3J0ID8gMHgxNzAgOiAweDFmMDsJLyog
dXNlIGRlZmF1bHQgdmFsdWUgKi8NCi0JCWlmICgoaHdpZiA9IGlkZV9tYXRj
aF9od2lmKGJhc2UsIGQtPm5hbWUpKSA9PSBOVUxMKQ0KKwkJaWYgKChod2lm
ID0gaWRlX21hdGNoX2h3aWYoYmFzZSwgZC0+Ym9vdGFibGUsIGQtPm5hbWUp
KSA9PSBOVUxMKQ0KIAkJCWNvbnRpbnVlOwkvKiBubyByb29tIGluIGlkZV9o
d2lmc1tdICovDQogCQlpZiAoaHdpZi0+aW9fcG9ydHNbSURFX0RBVEFfT0ZG
U0VUXSAhPSBiYXNlKSB7DQotCQkJaWRlX2luaXRfaHdpZl9wb3J0cyhod2lm
LT5pb19wb3J0cywgYmFzZSwgTlVMTCk7DQotCQkJaHdpZi0+aW9fcG9ydHNb
SURFX0NPTlRST0xfT0ZGU0VUXSA9IGN0bCArIDI7DQorCQkJaWRlX2luaXRf
aHdpZl9wb3J0cygmaHdpZi0+aHcsIGJhc2UsIChjdGwgKyAyKSwgTlVMTCk7
DQorCQkJbWVtY3B5KGh3aWYtPmlvX3BvcnRzLCBod2lmLT5ody5pb19wb3J0
cywgc2l6ZW9mKGh3aWYtPmlvX3BvcnRzKSk7DQogCQkJaHdpZi0+bm9wcm9i
ZSA9ICFod2lmLT5pb19wb3J0c1tJREVfREFUQV9PRkZTRVRdOw0KIAkJfQ0K
IAkJaHdpZi0+Y2hpcHNldCA9IGlkZV9wY2k7DQpAQCAtMzE0LDYgKzQwNywx
MCBAQA0KIAkJaWYgKG1hdGUpIHsNCiAJCQlod2lmLT5tYXRlID0gbWF0ZTsN
CiAJCQltYXRlLT5tYXRlID0gaHdpZjsNCisJCQlpZiAoSURFX1BDSV9ERVZJ
RF9FUShkLT5kZXZpZCwgREVWSURfQUVDNjIxMCkpIHsNCisJCQkJaHdpZi0+
c2VyaWFsaXplZCA9IDE7DQorCQkJCW1hdGUtPnNlcmlhbGl6ZWQgPSAxOw0K
KwkJCX0NCiAJCX0NCiAjaWZkZWYgQ09ORklHX0JMS19ERVZfSURFRE1BDQog
CQlpZiAoSURFX1BDSV9ERVZJRF9FUShkLT5kZXZpZCwgREVWSURfU0lTNTUx
MykpDQpAQCAtMzIxLDkgKzQxOCwxMCBAQA0KIAkJaWYgKGF1dG9kbWEpDQog
CQkJaHdpZi0+YXV0b2RtYSA9IDE7DQogCQlpZiAoSURFX1BDSV9ERVZJRF9F
UShkLT5kZXZpZCwgREVWSURfUERDMjAyNDYpIHx8DQorCQkgICAgSURFX1BD
SV9ERVZJRF9FUShkLT5kZXZpZCwgREVWSURfQUVDNjIxMCkgfHwNCisJCSAg
ICBJREVfUENJX0RFVklEX0VRKGQtPmRldmlkLCBERVZJRF9IUFQzNDMpIHx8
DQogCQkgICAgKChkZXYtPmNsYXNzID4+IDgpID09IFBDSV9DTEFTU19TVE9S
QUdFX0lERSAmJiAoZGV2LT5jbGFzcyAmIDB4ODApKSkgew0KLQkJCXVuc2ln
bmVkIGludCBleHRyYSA9ICghbWF0ZSAmJiBJREVfUENJX0RFVklEX0VRKGQt
PmRldmlkLCBERVZJRF9QREMyMDI0NikpID8gMTYgOiAwOw0KLQkJCXVuc2ln
bmVkIGxvbmcgZG1hX2Jhc2UgPSBpZGVfZ2V0X29yX3NldF9kbWFfYmFzZSho
d2lmLCBleHRyYSwgZC0+bmFtZSk7DQorCQkJdW5zaWduZWQgbG9uZyBkbWFf
YmFzZSA9IGlkZV9nZXRfb3Jfc2V0X2RtYV9iYXNlKGh3aWYsICghbWF0ZSAm
JiBkLT5leHRyYSkgPyBkLT5leHRyYSA6IDAsIGQtPm5hbWUpOw0KIAkJCWlm
IChkbWFfYmFzZSAmJiAhKHBjaWNtZCAmIFBDSV9DT01NQU5EX01BU1RFUikp
IHsNCiAJCQkJLyoNCiAgCSAJCQkgKiBTZXQgdXAgQk0tRE1BIGNhcGFiaWxp
dHkgKFBuUCBCSU9TIHNob3VsZCBoYXZlIGRvbmUgdGhpcykNCkBAIC0zNzYs
NiArNDc0LDcgQEANCiAJCQkJCWQtPm5hbWUsIGRldi0+YnVzLT5udW1iZXIs
IGRldi0+ZGV2Zm4sIGRldmlkLnZpZCwgZGV2aWQuZGlkKTsNCiAJCQllbHNl
DQogCQkJCXByaW50aygiJXM6IElERSBjb250cm9sbGVyIG9uIFBDSSBidXMg
JTAyeCBkZXYgJTAyeFxuIiwgZC0+bmFtZSwgZGV2LT5idXMtPm51bWJlciwg
ZGV2LT5kZXZmbik7DQorDQogCQkJaWRlX3NldHVwX3BjaV9kZXZpY2UoZGV2
LCBkKTsNCiAJCX0NCiAJfQ0KZGlmZiAtdXJOIGxpbnV4LTIuMS4xMTctcHJp
c3RpbmUvZHJpdmVycy9ibG9jay9pZGUtcHJvYmUuYyBsaW51eC9kcml2ZXJz
L2Jsb2NrL2lkZS1wcm9iZS5jDQotLS0gbGludXgtMi4xLjExNy1wcmlzdGlu
ZS9kcml2ZXJzL2Jsb2NrL2lkZS1wcm9iZS5jCVRodSBBdWcgMjAgMDA6MDk6
NDAgMTk5OA0KKysrIGxpbnV4L2RyaXZlcnMvYmxvY2svaWRlLXByb2JlLmMJ
VGh1IEF1ZyAyMCAwMDoxODowNSAxOTk4DQpAQCAtMTU1LDIwICsxNTUsMjYg
QEANCiAJdW5zaWduZWQgbG9uZyBpcnFzID0gMDsNCiAJYnl0ZSBzLCBhOw0K
IA0KLQlpZiAoIUhXSUYoZHJpdmUpLT5pcnEpIHsJCS8qIGFscmVhZHkgZ290
IGFuIElSUT8gKi8NCi0JCXByb2JlX2lycV9vZmYocHJvYmVfaXJxX29uKCkp
OwkvKiBjbGVhciBkYW5nbGluZyBpcnFzICovDQotCQlpcnFzID0gcHJvYmVf
aXJxX29uKCk7CQkvKiBzdGFydCBtb25pdG9yaW5nIGlycXMgKi8NCi0JCU9V
VF9CWVRFKGRyaXZlLT5jdGwsSURFX0NPTlRST0xfUkVHKTsJLyogZW5hYmxl
IGRldmljZSBpcnEgKi8NCi0JfQ0KKwlpZiAoSURFX0NPTlRST0xfUkVHKSB7
DQorCQlpZiAoIUhXSUYoZHJpdmUpLT5pcnEpIHsJCS8qIGFscmVhZHkgZ290
IGFuIElSUT8gKi8NCisJCQlwcm9iZV9pcnFfb2ZmKHByb2JlX2lycV9vbigp
KTsJLyogY2xlYXIgZGFuZ2xpbmcgaXJxcyAqLw0KKwkJCWlycXMgPSBwcm9i
ZV9pcnFfb24oKTsJCS8qIHN0YXJ0IG1vbml0b3JpbmcgaXJxcyAqLw0KKwkJ
CU9VVF9CWVRFKGRyaXZlLT5jdGwsSURFX0NPTlRST0xfUkVHKTsJLyogZW5h
YmxlIGRldmljZSBpcnEgKi8NCisJCX0NCiANCi0JZGVsYXlfNTBtcygpOwkJ
CQkvKiB0YWtlIGEgZGVlcCBicmVhdGggKi8NCi0JYSA9IElOX0JZVEUoSURF
X0FMVFNUQVRVU19SRUcpOw0KLQlzID0gSU5fQllURShJREVfU1RBVFVTX1JF
Ryk7DQotCWlmICgoYSBeIHMpICYgfklOREVYX1NUQVQpIHsNCi0JCXByaW50
aygiJXM6IHByb2Jpbmcgd2l0aCBTVEFUVVMoMHglMDJ4KSBpbnN0ZWFkIG9m
IEFMVFNUQVRVUygweCUwMngpXG4iLCBkcml2ZS0+bmFtZSwgcywgYSk7DQot
CQloZF9zdGF0dXMgPSBJREVfU1RBVFVTX1JFRzsJLyogYW5jaWVudCBTZWFn
YXRlIGRyaXZlcywgYnJva2VuIGludGVyZmFjZXMgKi8NCi0JfSBlbHNlDQot
CQloZF9zdGF0dXMgPSBJREVfQUxUU1RBVFVTX1JFRzsJLyogdXNlIG5vbi1p
bnRydXNpdmUgcG9sbGluZyAqLw0KKwkJZGVsYXlfNTBtcygpOwkJCQkvKiB0
YWtlIGEgZGVlcCBicmVhdGggKi8NCisJCWEgPSBJTl9CWVRFKElERV9BTFRT
VEFUVVNfUkVHKTsNCisJCXMgPSBJTl9CWVRFKElERV9TVEFUVVNfUkVHKTsN
CisJCWlmICgoYSBeIHMpICYgfklOREVYX1NUQVQpIHsNCisJCQlwcmludGso
IiVzOiBwcm9iaW5nIHdpdGggU1RBVFVTKDB4JTAyeCkgaW5zdGVhZCBvZiBB
TFRTVEFUVVMoMHglMDJ4KVxuIiwgZHJpdmUtPm5hbWUsIHMsIGEpOw0KKwkJ
CWhkX3N0YXR1cyA9IElERV9TVEFUVVNfUkVHOwkvKiBhbmNpZW50IFNlYWdh
dGUgZHJpdmVzLCBicm9rZW4gaW50ZXJmYWNlcyAqLw0KKwkJfSBlbHNlIHsN
CisJCQloZF9zdGF0dXMgPSBJREVfQUxUU1RBVFVTX1JFRzsJLyogdXNlIG5v
bi1pbnRydXNpdmUgcG9sbGluZyAqLw0KKwkJfQ0KKwl9IGVsc2Ugew0KKwkJ
ZGVsYXlfNTBtcygpOw0KKwkJaGRfc3RhdHVzID0gSURFX1NUQVRVU19SRUc7
DQorCX0NCiANCiAjaWYgQ09ORklHX0JMS19ERVZfUERDNDAzMA0KIAlpZiAo
SVNfUERDNDAzMF9EUklWRSkgew0KQEAgLTIwMyw3ICsyMDksNyBAQA0KIAkJ
X19yZXN0b3JlX2ZsYWdzKGZsYWdzKTsJLyogbG9jYWwgQ1BVIG9ubHkgKi8N
CiAJfSBlbHNlDQogCQlyYyA9IDI7CQkJLyogZHJpdmUgcmVmdXNlZCBJRCAq
Lw0KLQlpZiAoIUhXSUYoZHJpdmUpLT5pcnEpIHsNCisJaWYgKElERV9DT05U
Uk9MX1JFRyAmJiAhSFdJRihkcml2ZSktPmlycSkgew0KIAkJaXJxcyA9IHBy
b2JlX2lycV9vZmYoaXJxcyk7CS8qIGdldCBvdXIgaXJxIG51bWJlciAqLw0K
IAkJaWYgKGlycXMgPiAwKSB7DQogCQkJSFdJRihkcml2ZSktPmlycSA9IGly
cXM7IC8qIHNhdmUgaXQgZm9yIGxhdGVyICovDQpAQCAtMjczLDYgKzI3OSwx
OSBAQA0KIAl7DQogCQlpZiAoKHJjID0gdHJ5X3RvX2lkZW50aWZ5KGRyaXZl
LGNtZCkpKSAgIC8qIHNlbmQgY21kIGFuZCB3YWl0ICovDQogCQkJcmMgPSB0
cnlfdG9faWRlbnRpZnkoZHJpdmUsY21kKTsgLyogZmFpbGVkOiB0cnkgYWdh
aW4gKi8NCisJCWlmIChyYyA9PSAxICYmIGNtZCA9PSBXSU5fUElERU5USUZZ
ICYmIGRyaXZlLT5hdXRvdHVuZSAhPSAyKSB7DQorCQkJdW5zaWduZWQgbG9u
ZyB0aW1lb3V0Ow0KKwkJCXByaW50aygiJXM6IG5vIHJlc3BvbnNlIChzdGF0
dXMgPSAweCUwMngpLCByZXNldHRpbmcgZHJpdmVcbiIsIGRyaXZlLT5uYW1l
LCBHRVRfU1RBVCgpKTsNCisJCQlkZWxheV81MG1zKCk7DQorCQkJT1VUX0JZ
VEUgKGRyaXZlLT5zZWxlY3QuYWxsLCBJREVfU0VMRUNUX1JFRyk7DQorCQkJ
ZGVsYXlfNTBtcygpOw0KKwkJCU9VVF9CWVRFKFdJTl9TUlNULCBJREVfQ09N
TUFORF9SRUcpOw0KKwkJCXRpbWVvdXQgPSBqaWZmaWVzOw0KKwkJCXdoaWxl
ICgoR0VUX1NUQVQoKSAmIEJVU1lfU1RBVCkgJiYgamlmZmllcyA8IHRpbWVv
dXQgKyBXQUlUX1dPUlNUQ0FTRSkNCisJCQkJZGVsYXlfNTBtcygpOw0KKwkJ
CXJjID0gdHJ5X3RvX2lkZW50aWZ5KGRyaXZlLCBjbWQpOw0KKw0KKwkJfQ0K
IAkJaWYgKHJjID09IDEpDQogCQkJcHJpbnRrKCIlczogbm8gcmVzcG9uc2Ug
KHN0YXR1cyA9IDB4JTAyeClcbiIsIGRyaXZlLT5uYW1lLCBHRVRfU1RBVCgp
KTsNCiAJCSh2b2lkKSBHRVRfU1RBVCgpOwkJLyogZW5zdXJlIGRyaXZlIGly
cSBpcyBjbGVhciAqLw0KQEAgLTM3NCwxNSArMzkzLDM4IEBADQogCXVuc2ln
bmVkIGludCB1bml0Ow0KIAl1bnNpZ25lZCBsb25nIGZsYWdzOw0KIA0KKwlp
ZGVfaW9yZWdfdCBpZGVfY29udHJvbF9yZWcgCT0gaHdpZi0+aW9fcG9ydHNb
SURFX0NPTlRST0xfT0ZGU0VUXTsNCisJaWRlX2lvcmVnX3QgcmVnaW9uX2xv
dyAJCT0gaHdpZi0+aW9fcG9ydHNbSURFX0RBVEFfT0ZGU0VUXTsNCisJaWRl
X2lvcmVnX3QgcmVnaW9uX2hpZ2ggCT0gcmVnaW9uX2xvdzsNCisJaW50IGk7
DQorDQogCWlmIChod2lmLT5ub3Byb2JlKQ0KIAkJcmV0dXJuOw0KIAlpZiAo
aHdpZi0+aW9fcG9ydHNbSURFX0RBVEFfT0ZGU0VUXSA9PSBIRF9EQVRBKQ0K
IAkJcHJvYmVfY21vc19mb3JfZHJpdmVzIChod2lmKTsNCisNCisJLyoNCisJ
ICogQ2FsY3VsYXRlIHRoZSByZWdpb24gdGhhdCB0aGlzIGludGVyZmFjZSBv
Y2N1cGllcywNCisJICogaGFuZGxpbmcgaW50ZXJmYWNlcyB3aGVyZSB0aGUg
cmVnaXN0ZXJzIG1heSBub3QgYmUNCisJICogb3JkZXJlZCBzYW5lbHkuICBX
ZSBkZWFsIHdpdGggdGhlIENPTlRST0wgcmVnaXN0ZXINCisJICogc2VwYXJh
dGVseS4NCisJICovDQorCWZvciAoaSA9IElERV9EQVRBX09GRlNFVDsgaSA8
PSBJREVfU1RBVFVTX09GRlNFVDsgaSsrKSB7DQorCQlpZiAoaHdpZi0+aW9f
cG9ydHNbaV0pIHsNCisJCQlpZiAoaHdpZi0+aW9fcG9ydHNbaV0gPCByZWdp
b25fbG93KQ0KKwkJCQlyZWdpb25fbG93ID0gaHdpZi0+aW9fcG9ydHNbaV07
DQorCQkJaWYgKGh3aWYtPmlvX3BvcnRzW2ldID4gcmVnaW9uX2hpZ2gpDQor
CQkJCXJlZ2lvbl9oaWdoID0gaHdpZi0+aW9fcG9ydHNbaV07DQorCQl9DQor
CX0NCisNCiAJaWYgKChod2lmLT5jaGlwc2V0ICE9IGlkZV80ZHJpdmVzIHx8
ICFod2lmLT5tYXRlLT5wcmVzZW50KQ0KICNpZiBDT05GSUdfQkxLX0RFVl9Q
REM0MDMwDQogCSAmJiAoaHdpZi0+Y2hpcHNldCAhPSBpZGVfcGRjNDAzMCB8
fCBod2lmLT5jaGFubmVsID09IDApDQogI2VuZGlmIC8qIENPTkZJR19CTEtf
REVWX1BEQzQwMzAgKi8NCi0JICYmIChpZGVfY2hlY2tfcmVnaW9uKGh3aWYt
PmlvX3BvcnRzW0lERV9EQVRBX09GRlNFVF0sOCkgfHwgaWRlX2NoZWNrX3Jl
Z2lvbihod2lmLT5pb19wb3J0c1tJREVfQ09OVFJPTF9PRkZTRVRdLDEpKSkN
CisJICYmIChpZGVfY2hlY2tfcmVnaW9uKHJlZ2lvbl9sb3csIHJlZ2lvbl9o
aWdoIC0gcmVnaW9uX2xvdykgfHwNCisJICAgIChpZGVfY29udHJvbF9yZWcg
JiYgaWRlX2NoZWNrX3JlZ2lvbihpZGVfY29udHJvbF9yZWcsMSkpKSkNCisN
CiAJew0KIAkJaW50IG1zZ291dCA9IDA7DQogCQlmb3IgKHVuaXQgPSAwOyB1
bml0IDwgTUFYX0RSSVZFUzsgKyt1bml0KSB7DQpAQCAtNDEwLDE5ICs0NTIs
MjAgQEANCiAJCWlmIChkcml2ZS0+cHJlc2VudCAmJiAhaHdpZi0+cHJlc2Vu
dCkgew0KIAkJCWh3aWYtPnByZXNlbnQgPSAxOw0KIAkJCWlmIChod2lmLT5j
aGlwc2V0ICE9IGlkZV80ZHJpdmVzIHx8ICFod2lmLT5tYXRlLT5wcmVzZW50
KSB7DQotCQkJCWlkZV9yZXF1ZXN0X3JlZ2lvbihod2lmLT5pb19wb3J0c1tJ
REVfREFUQV9PRkZTRVRdLCAgOCwgaHdpZi0+bmFtZSk7DQotCQkJCWlkZV9y
ZXF1ZXN0X3JlZ2lvbihod2lmLT5pb19wb3J0c1tJREVfQ09OVFJPTF9PRkZT
RVRdLCAxLCBod2lmLT5uYW1lKTsNCisJCQkJaWRlX3JlcXVlc3RfcmVnaW9u
KHJlZ2lvbl9sb3csIHJlZ2lvbl9oaWdoIC0gcmVnaW9uX2xvdywgaHdpZi0+
bmFtZSk7DQorCQkJCWlmIChpZGVfY29udHJvbF9yZWcpDQorCQkJCQlpZGVf
cmVxdWVzdF9yZWdpb24oaWRlX2NvbnRyb2xfcmVnLCAxLCBod2lmLT5uYW1l
KTsNCiAJCQl9DQogCQl9DQogCX0NCi0JaWYgKGh3aWYtPnJlc2V0KSB7DQor
CWlmIChpZGVfY29udHJvbF9yZWcgJiYgaHdpZi0+cmVzZXQpIHsNCiAJCXVu
c2lnbmVkIGxvbmcgdGltZW91dCA9IGppZmZpZXMgKyBXQUlUX1dPUlNUQ0FT
RTsNCiAJCWJ5dGUgc3RhdDsNCiANCiAJCXByaW50aygiJXM6IHJlc2V0XG4i
LCBod2lmLT5uYW1lKTsNCi0JCU9VVF9CWVRFKDEyLCBod2lmLT5pb19wb3J0
c1tJREVfQ09OVFJPTF9PRkZTRVRdKTsNCisJCU9VVF9CWVRFKDEyLCBpZGVf
Y29udHJvbF9yZWcpOw0KIAkJdWRlbGF5KDEwKTsNCi0JCU9VVF9CWVRFKDgs
IGh3aWYtPmlvX3BvcnRzW0lERV9DT05UUk9MX09GRlNFVF0pOw0KKwkJT1VU
X0JZVEUoOCwgaWRlX2NvbnRyb2xfcmVnKTsNCiAJCWRvIHsNCiAJCQlkZWxh
eV81MG1zKCk7DQogCQkJc3RhdCA9IElOX0JZVEUoaHdpZi0+aW9fcG9ydHNb
SURFX1NUQVRVU19PRkZTRVRdKTsNCkBAIC02NTUsNyArNjk4LDggQEANCiAJ
aWYgKCFod2lmLT5wcmVzZW50KQ0KIAkJcmV0dXJuIDA7DQogCWlmICghaHdp
Zi0+aXJxKSB7DQotCQlpZiAoIShod2lmLT5pcnEgPSBpZGVfZGVmYXVsdF9p
cnEoaHdpZi0+aW9fcG9ydHNbSURFX0RBVEFfT0ZGU0VUXSkpKSB7DQorCQlp
ZiAoIShod2lmLT5pcnEgPSBpZGVfZGVmYXVsdF9pcnEoaHdpZi0+aW9fcG9y
dHNbSURFX0RBVEFfT0ZGU0VUXSkpKQ0KKwkJew0KIAkJCXByaW50aygiJXM6
IERJU0FCTEVELCBOTyBJUlFcbiIsIGh3aWYtPm5hbWUpOw0KIAkJCXJldHVy
biAoaHdpZi0+cHJlc2VudCA9IDApOw0KIAkJfQ0KZGlmZiAtdXJOIGxpbnV4
LTIuMS4xMTctcHJpc3RpbmUvZHJpdmVycy9ibG9jay9pZGUuYyBsaW51eC9k
cml2ZXJzL2Jsb2NrL2lkZS5jDQotLS0gbGludXgtMi4xLjExNy1wcmlzdGlu
ZS9kcml2ZXJzL2Jsb2NrL2lkZS5jCVRodSBBdWcgMjAgMDA6MDk6NDAgMTk5
OA0KKysrIGxpbnV4L2RyaXZlcnMvYmxvY2svaWRlLmMJVGh1IEF1ZyAyMCAw
MDoxODowNSAxOTk4DQpAQCAtMTM1LDExICsxMzUsMTMgQEANCiBzdGF0aWMg
aW50CXN5c3RlbV9idXNfc3BlZWQ7IC8qIGhvbGRzIHdoYXQgd2UgdGhpbmsg
aXMgVkVTQS9QQ0kgYnVzIHNwZWVkICovDQogc3RhdGljIGludAlpbml0aWFs
aXppbmc7ICAgICAvKiBzZXQgd2hpbGUgaW5pdGlhbGl6aW5nIGJ1aWx0LWlu
IGRyaXZlcnMgKi8NCiANCisjaWYgZGVmaW5lZChfX21jNjgwMDBfXykgfHwg
ZGVmaW5lZChDT05GSUdfQVBVUykNCiAvKg0KICAqIGlkZV9sb2NrIGlzIHVz
ZWQgYnkgdGhlIEF0YXJpIGNvZGUgdG8gb2J0YWluIGFjY2VzcyB0byB0aGUg
SURFIGludGVycnVwdCwNCiAgKiB3aGljaCBpcyBzaGFyZWQgYmV0d2VlbiBz
ZXZlcmFsIGRyaXZlcnMuDQogICovDQogc3RhdGljIGludAlpZGVfbG9jayA9
IDA7DQorI2VuZGlmIC8qIF9fbWM2ODAwMF9fIHx8IENPTkZJR19BUFVTICov
DQogDQogLyoNCiAgKiBpZGVfbW9kdWxlcyBrZWVwcyB0cmFjayBvZiB0aGUg
YXZhaWxhYmxlIElERSBjaGlwc2V0L3Byb2JlL2RyaXZlciBtb2R1bGVzLg0K
QEAgLTE4NSwxNCArMTg3LDE4IEBADQogc3RhdGljIHZvaWQgaW5pdF9od2lm
X2RhdGEgKHVuc2lnbmVkIGludCBpbmRleCkNCiB7DQogCXVuc2lnbmVkIGlu
dCB1bml0Ow0KKwlod19yZWdzX3QgaHc7DQogCWlkZV9od2lmX3QgKmh3aWYg
PSAmaWRlX2h3aWZzW2luZGV4XTsNCiANCiAJLyogYnVsayBpbml0aWFsaXpl
IGh3aWYgJiBkcml2ZSBpbmZvIHdpdGggemVyb3MgKi8NCiAJbWVtc2V0KGh3
aWYsIDAsIHNpemVvZihpZGVfaHdpZl90KSk7DQorCW1lbXNldCgmaHcsIDAs
IHNpemVvZihod19yZWdzX3QpKTsNCiANCiAJLyogZmlsbCBpbiBhbnkgbm9u
LXplcm8gaW5pdGlhbCB2YWx1ZXMgKi8NCiAJaHdpZi0+aW5kZXggICAgID0g
aW5kZXg7DQotCWlkZV9pbml0X2h3aWZfcG9ydHMoaHdpZi0+aW9fcG9ydHMs
IGlkZV9kZWZhdWx0X2lvX2Jhc2UoaW5kZXgpLCAmaHdpZi0+aXJxKTsNCisJ
aWRlX2luaXRfaHdpZl9wb3J0cygmaHcsIGlkZV9kZWZhdWx0X2lvX2Jhc2Uo
aW5kZXgpLCAwLCAmaHdpZi0+aXJxKTsNCisJbWVtY3B5KCZod2lmLT5odywg
Jmh3LCBzaXplb2YoaHcpKTsNCisJbWVtY3B5KGh3aWYtPmlvX3BvcnRzLCBo
dy5pb19wb3J0cywgc2l6ZW9mKGh3LmlvX3BvcnRzKSk7DQogCWh3aWYtPm5v
cHJvYmUJPSAhaHdpZi0+aW9fcG9ydHNbSURFX0RBVEFfT0ZGU0VUXTsNCiAj
aWZkZWYgQ09ORklHX0JMS19ERVZfSEQNCiAJaWYgKGh3aWYtPmlvX3BvcnRz
W0lERV9EQVRBX09GRlNFVF0gPT0gSERfREFUQSkNCkBAIC0yNDQsOSArMjUw
LDEzIEBADQogCQlyZXR1cm47CQkvKiBhbHJlYWR5IGluaXRpYWxpemVkICov
DQogCW1hZ2ljX2Nvb2tpZSA9IDA7DQogDQorCS8qIEluaXRpYWxpc2UgYWxs
IGludGVyZmFjZSBzdHJ1Y3R1cmVzICovDQogCWZvciAoaW5kZXggPSAwOyBp
bmRleCA8IE1BWF9IV0lGUzsgKytpbmRleCkNCiAJCWluaXRfaHdpZl9kYXRh
KGluZGV4KTsNCiANCisJLyogQWRkIGRlZmF1bHQgaHcgaW50ZXJmYWNlcyAq
Lw0KKwlpZGVfaW5pdF9kZWZhdWx0X2h3aWZzKCk7DQorDQogCWlkZWJ1c19w
YXJhbWV0ZXIgPSAwOw0KIAlzeXN0ZW1fYnVzX3NwZWVkID0gMDsNCiB9DQpA
QCAtNjIzLDYgKzYzMywxMCBAQA0KIAkJcHJlX3Jlc2V0KCZod2lmLT5kcml2
ZXNbdW5pdF0pOw0KIA0KICNpZiBPS19UT19SRVNFVF9DT05UUk9MTEVSDQor
CWlmICghSURFX0NPTlRST0xfUkVHKSB7DQorCQlfX3Jlc3RvcmVfZmxhZ3Mo
ZmxhZ3MpOw0KKwkJcmV0dXJuOw0KKwl9DQogCS8qDQogCSAqIE5vdGUgdGhh
dCB3ZSBhbHNvIHNldCBuSUVOIHdoaWxlIHJlc2V0dGluZyB0aGUgZGV2aWNl
LA0KIAkgKiB0byBtYXNrIHVud2FudGVkIGludGVycnVwdHMgZnJvbSB0aGUg
aW50ZXJmYWNlIGR1cmluZyB0aGUgcmVzZXQuDQpAQCAtODI4LDcgKzg0Miw4
IEBADQogdm9pZCBpZGVfY21kKGlkZV9kcml2ZV90ICpkcml2ZSwgYnl0ZSBj
bWQsIGJ5dGUgbnNlY3QsIGlkZV9oYW5kbGVyX3QgKmhhbmRsZXIpDQogew0K
IAlpZGVfc2V0X2hhbmRsZXIgKGRyaXZlLCBoYW5kbGVyLCBXQUlUX0NNRCk7
DQotCU9VVF9CWVRFKGRyaXZlLT5jdGwsSURFX0NPTlRST0xfUkVHKTsJLyog
Y2xlYXIgbklFTiAqLw0KKwlpZiAoSURFX0NPTlRST0xfUkVHKQ0KKwkJT1VU
X0JZVEUoZHJpdmUtPmN0bCxJREVfQ09OVFJPTF9SRUcpOwkvKiBjbGVhciBu
SUVOICovDQogCU9VVF9CWVRFKG5zZWN0LElERV9OU0VDVE9SX1JFRyk7DQog
CU9VVF9CWVRFKGNtZCxJREVfQ09NTUFORF9SRUcpOw0KIH0NCkBAIC0xMzU1
LDcgKzEzNzAsNyBAQA0KIAkJCSAqIFByb2JhYmx5IG5vdCBhIHNoYXJlZCBQ
Q0kgaW50ZXJydXB0LA0KIAkJCSAqIHNvIHdlIGNhbiBzYWZlbHkgdHJ5IHRv
IGRvIHNvbWV0aGluZyBhYm91dCBpdDoNCiAJCQkgKi8NCi0JCQkodm9pZClp
ZGVfYWNrX2ludHIoaHdpZi0+aW9fcG9ydHNbSURFX1NUQVRVU19PRkZTRVRd
LCBod2lmLT5pb19wb3J0c1tJREVfSVJRX09GRlNFVF0pOw0KKwkJCSh2b2lk
KWlkZV9hY2tfaW50cihod2lmKTsNCiAJCQl1bmV4cGVjdGVkX2ludHIoaXJx
LCBod2dyb3VwKTsNCiAJCX0NCiAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo
Jmh3Z3JvdXAtPnNwaW5sb2NrLCBmbGFncyk7DQpAQCAtMTM2Nyw3ICsxMzgy
LDcgQEANCiAJCXJldHVybjsNCiAJfQ0KIAlod2dyb3VwLT5oYW5kbGVyID0g
TlVMTDsNCi0JKHZvaWQpaWRlX2Fja19pbnRyKGh3aWYtPmlvX3BvcnRzW0lE
RV9TVEFUVVNfT0ZGU0VUXSwgaHdpZi0+aW9fcG9ydHNbSURFX0lSUV9PRkZT
RVRdKTsNCisJKHZvaWQpaWRlX2Fja19pbnRyKGh3aWYpOw0KIAlkZWxfdGlt
ZXIoJihod2dyb3VwLT50aW1lcikpOw0KIAlzcGluX3VubG9ja19pcnFyZXN0
b3JlKCZod2dyb3VwLT5zcGlubG9jaywgZmxhZ3MpOw0KIAlpZiAoZHJpdmUt
PnVubWFzaykNCkBAIC0xNjk4LDcgKzE3MTMsOCBAQA0KIAkgKiBhbGxvY2F0
ZWQgZm9yIHdlaXJkIElERSBpbnRlcmZhY2UgY2hpcHNldHMuDQogCSAqLw0K
IAlpZGVfcmVsZWFzZV9yZWdpb24oaHdpZi0+aW9fcG9ydHNbSURFX0RBVEFf
T0ZGU0VUXSwgOCk7DQotCWlkZV9yZWxlYXNlX3JlZ2lvbihod2lmLT5pb19w
b3J0c1tJREVfQ09OVFJPTF9PRkZTRVRdLCAxKTsNCisJaWYgKGh3aWYtPmlv
X3BvcnRzW0lERV9DT05UUk9MX09GRlNFVF0pDQorCQlpZGVfcmVsZWFzZV9y
ZWdpb24oaHdpZi0+aW9fcG9ydHNbSURFX0NPTlRST0xfT0ZGU0VUXSwgMSk7
DQogDQogCS8qDQogCSAqIFJlbW92ZSB1cyBmcm9tIHRoZSBod2dyb3VwLCBh
bmQgZnJlZQ0KQEAgLTE3NTcsMjEgKzE3NzMsNTggQEANCiAJcmVzdG9yZV9m
bGFncyhmbGFncyk7CS8qIGFsbCBDUFVzICovDQogfQ0KIA0KLWludCBpZGVf
cmVnaXN0ZXIgKGludCBhcmcxLCBpbnQgYXJnMiwgaW50IGlycSkNCisvKg0K
KyAqIFNldHVwIGh3X3JlZ3NfdCBzdHJ1Y3R1cmUgZGVzY3JpYmVkIGJ5IHBh
cmFtZXRlcnMuICBZb3UNCisgKiBtYXkgc2V0IHVwIHRoZSBodyBzdHJ1Y3R1
cmUgeW91cnNlbGYgT1IgdXNlIHRoaXMgcm91dGluZSB0bw0KKyAqIGRvIGl0
IGZvciB5b3UuDQorICovDQordm9pZCBpZGVfc2V0dXBfcG9ydHMgKAlod19y
ZWdzX3QgKmh3LA0KKwkJCWlkZV9pb3JlZ190IGJhc2UsIGlkZV9pb3JlZ190
ICpvZmZzZXRzLA0KKwkJCWlkZV9pb3JlZ190IGN0cmwsIGlkZV9pb3JlZ190
IGludHIsDQorCQkJaWRlX2Fja19pbnRyX3QgKmFja19pbnRyLCBpbnQgaXJx
KQ0KK3sNCisJaW50IGk7DQorDQorCWZvciAoaSA9IDA7IGkgPCBJREVfTlJf
UE9SVFM7IGkrKykgew0KKwkJaWYgKG9mZnNldHNbaV0gPT0gKGlkZV9pb3Jl
Z190KS0xKSB7DQorCQkJc3dpdGNoKGkpIHsNCisJCQkJY2FzZSBJREVfQ09O
VFJPTF9PRkZTRVQ6DQorCQkJCQlody0+aW9fcG9ydHNbaV0gPSBjdHJsOw0K
KwkJCQkJYnJlYWs7DQorCQkJCWNhc2UgSURFX0lSUV9PRkZTRVQ6DQorCQkJ
CQlody0+aW9fcG9ydHNbaV0gPSBpbnRyOw0KKwkJCQkJYnJlYWs7DQorCQkJ
CWRlZmF1bHQ6DQorCQkJCQlody0+aW9fcG9ydHNbaV0gPSAwOw0KKwkJCQkJ
YnJlYWs7DQorCQkJfQ0KKwkJfSBlbHNlIHsNCisJCQlody0+aW9fcG9ydHNb
aV0gPSBiYXNlICsgb2Zmc2V0c1tpXTsNCisJCX0NCisJfQ0KKwlody0+aXJx
ID0gaXJxOw0KKwlody0+YWNrX2ludHIgPSBhY2tfaW50cjsNCit9DQorDQor
LyoNCisgKiBSZWdpc3RlciBhbiBJREUgaW50ZXJmYWNlLCBzcGVjaWZpbmcg
ZXhhY3RseSB0aGUgcmVnaXN0ZXJzIGV0Yw0KKyAqIFNldCBpbml0PTEgaWZm
IGNhbGxpbmcgYmVmb3JlIHByb2JlcyBoYXZlIHRha2VuIHBsYWNlLg0KKyAq
Lw0KK2ludCBpZGVfcmVnaXN0ZXJfaHcgKGh3X3JlZ3NfdCAqaHcsIGlkZV9o
d2lmX3QgKipod2lmcCkNCiB7DQogCWludCBpbmRleCwgcmV0cnkgPSAxOw0K
IAlpZGVfaHdpZl90ICpod2lmOw0KLQlpZGVfaW9yZWdfdCBkYXRhX3BvcnQg
PSAoaWRlX2lvcmVnX3QpIGFyZzEsIGN0bF9wb3J0ID0gKGlkZV9pb3JlZ190
KSBhcmcyOw0KIA0KIAlkbyB7DQogCQlmb3IgKGluZGV4ID0gMDsgaW5kZXgg
PCBNQVhfSFdJRlM7ICsraW5kZXgpIHsNCiAJCQlod2lmID0gJmlkZV9od2lm
c1tpbmRleF07DQotCQkJaWYgKGh3aWYtPmlvX3BvcnRzW0lERV9EQVRBX09G
RlNFVF0gPT0gZGF0YV9wb3J0KQ0KKwkJCWlmIChod2lmLT5ody5pb19wb3J0
c1tJREVfREFUQV9PRkZTRVRdID09IGh3LT5pb19wb3J0c1tJREVfREFUQV9P
RkZTRVRdKQ0KIAkJCQlnb3RvIGZvdW5kOw0KIAkJfQ0KIAkJZm9yIChpbmRl
eCA9IDA7IGluZGV4IDwgTUFYX0hXSUZTOyArK2luZGV4KSB7DQogCQkJaHdp
ZiA9ICZpZGVfaHdpZnNbaW5kZXhdOw0KLQkJCWlmICghaHdpZi0+cHJlc2Vu
dCkNCisJCQlpZiAoKCFod2lmLT5wcmVzZW50ICYmICFpbml0aWFsaXppbmcp
IHx8DQorCQkJICAgICghaHdpZi0+aHcuaW9fcG9ydHNbSURFX0RBVEFfT0ZG
U0VUXSAmJiBpbml0aWFsaXppbmcpKQ0KIAkJCQlnb3RvIGZvdW5kOw0KIAkJ
fQ0KIAkJZm9yIChpbmRleCA9IDA7IGluZGV4IDwgTUFYX0hXSUZTOyBpbmRl
eCsrKQ0KQEAgLTE3ODMsMTQgKzE4MzYsMzIgQEANCiAJCWlkZV91bnJlZ2lz
dGVyKGluZGV4KTsNCiAJaWYgKGh3aWYtPnByZXNlbnQpDQogCQlyZXR1cm4g
LTE7DQotCWlkZV9pbml0X2h3aWZfcG9ydHMoaHdpZi0+aW9fcG9ydHMsIGRh
dGFfcG9ydCwgJmh3aWYtPmlycSk7DQotCWlmIChjdGxfcG9ydCkNCi0JCWh3
aWYtPmlvX3BvcnRzW0lERV9DT05UUk9MX09GRlNFVF0gPSBjdGxfcG9ydDsN
Ci0JaHdpZi0+aXJxID0gaXJxOw0KKwltZW1jcHkoJmh3aWYtPmh3LCBodywg
c2l6ZW9mKCpodykpOw0KKwltZW1jcHkoaHdpZi0+aW9fcG9ydHMsIGh3aWYt
Pmh3LmlvX3BvcnRzLCBzaXplb2YoaHdpZi0+aHcuaW9fcG9ydHMpKTsNCiAJ
aHdpZi0+bm9wcm9iZSA9IDA7DQotCWlkZV9pbml0X21vZHVsZShJREVfUFJP
QkVfTU9EVUxFKTsNCi0JaWRlX2luaXRfbW9kdWxlKElERV9EUklWRVJfTU9E
VUxFKTsNCi0JcmV0dXJuIGh3aWYtPnByZXNlbnQgPyBpbmRleCA6IC0xOw0K
Kw0KKwlpZiAoIWluaXRpYWxpemluZykgew0KKwkJaWRlX2luaXRfbW9kdWxl
KElERV9QUk9CRV9NT0RVTEUpOw0KKwkJaWRlX2luaXRfbW9kdWxlKElERV9E
UklWRVJfTU9EVUxFKTsNCisJfQ0KKw0KKwlpZiAoaHdpZnApDQorCQkqaHdp
ZnAgPSBod2lmOw0KKw0KKwlyZXR1cm4gKGluaXRpYWxpemluZyB8fCBod2lm
LT5wcmVzZW50KSA/IGluZGV4IDogLTE7DQorfQ0KKw0KKy8qDQorICogQ29t
cGF0YWJpbGl0eSBmdW5jdGlvbiB3aXRoIGV4aXN0aW5nIGRyaXZlcnMuICBJ
ZiB5b3Ugd2FudA0KKyAqIHNvbWV0aGluZyBkaWZmZXJlbnQsIHVzZSB0aGUg
ZnVuY3Rpb24gYWJvdmUuDQorICovDQoraW50IGlkZV9yZWdpc3RlciAoaW50
IGFyZzEsIGludCBhcmcyLCBpbnQgaXJxKQ0KK3sNCisJaHdfcmVnc190IGh3
Ow0KKw0KKwlpZGVfaW5pdF9od2lmX3BvcnRzKCZodywgYXJnMSwgYXJnMiwg
TlVMTCk7DQorCWh3LmlycSA9IGlycTsNCisJcmV0dXJuIGlkZV9yZWdpc3Rl
cl9odygmaHcsIE5VTEwpOw0KIH0NCiANCiB2b2lkIGlkZV9hZGRfc2V0dGlu
ZyhpZGVfZHJpdmVfdCAqZHJpdmUsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBy
dywgaW50IHJlYWRfaW9jdGwsIGludCB3cml0ZV9pb2N0bCwgaW50IGRhdGFf
dHlwZSwgaW50IG1pbiwgaW50IG1heCwgaW50IG11bF9mYWN0b3IsIGludCBk
aXZfZmFjdG9yLCB2b2lkICpkYXRhLCBpZGVfcHJvY3NldF90ICpzZXQpDQpA
QCAtMjMxMyw2ICsyMzg0LDE3IEBADQogCWNvbnN0IGNoYXIgbWF4X2h3aWYg
ID0gJzAnICsgKE1BWF9IV0lGUyAtIDEpOw0KIA0KIAlwcmludGsoImlkZV9z
ZXR1cDogJXMiLCBzKTsNCisNCisjaWZkZWYgQ09ORklHX0JMS19ERVZfSURF
RE9VQkxFUg0KKwlpZiAoIXN0cmNtcChzLCAiaWRlPWRvdWJsZXIiKSkgew0K
KwkJZXh0ZXJuIGludCBpZGVfZG91YmxlcjsNCisNCisJCXByaW50aygiaWRl
OiBFbmFibGVkIHN1cHBvcnQgZm9yIElERSBkb3VibGVyc1xuIik7DQorCQlp
ZGVfZG91YmxlciA9IDE7DQorCQlyZXR1cm47DQorCX0NCisjZW5kaWYgLyog
Q09ORklHX0JMS19ERVZfSURFRE9VQkxFUiAqLw0KKw0KIAlpbml0X2lkZV9k
YXRhICgpOw0KIA0KIAkvKg0KQEAgLTI1MTAsOCArMjU5Miw5IEBADQogCQkJ
Y2FzZSAyOiAvKiBiYXNlLGN0bCAqLw0KIAkJCQl2YWxzWzJdID0gMDsJLyog
ZGVmYXVsdCBpcnEgPSBwcm9iZSBmb3IgaXQgKi8NCiAJCQljYXNlIDM6IC8q
IGJhc2UsY3RsLGlycSAqLw0KLQkJCQlpZGVfaW5pdF9od2lmX3BvcnRzKGh3
aWYtPmlvX3BvcnRzLCAoaWRlX2lvcmVnX3QpIHZhbHNbMF0sICZod2lmLT5p
cnEpOw0KLQkJCQlod2lmLT5pb19wb3J0c1tJREVfQ09OVFJPTF9PRkZTRVRd
ID0gKGlkZV9pb3JlZ190KSB2YWxzWzFdOw0KKwkJCQlod2lmLT5ody5pcnEg
PSB2YWxzWzJdOw0KKwkJCQlpZGVfaW5pdF9od2lmX3BvcnRzKCZod2lmLT5o
dywgdmFsc1swXSwgdmFsc1sxXSwgJmh3aWYtPmlycSk7DQorCQkJCW1lbWNw
eShod2lmLT5pb19wb3J0cywgaHdpZi0+aHcuaW9fcG9ydHMsIHNpemVvZiho
d2lmLT5pb19wb3J0cykpOw0KIAkJCQlod2lmLT5pcnEgICAgICA9IHZhbHNb
Ml07DQogCQkJCWh3aWYtPm5vcHJvYmUgID0gMDsNCiAJCQkJaHdpZi0+Y2hp
cHNldCAgPSBpZGVfZ2VuZXJpYzsNCkBAIC0yNjM4LDYgKzI3MjEsNDIgQEAN
CiAJCSh2b2lkKSBpbml0X3BkYzQwMzAoKTsNCiAJfQ0KICNlbmRpZiAvKiBD
T05GSUdfQkxLX0RFVl9QREM0MDMwICovDQorI2lmZGVmIENPTkZJR19CTEtf
REVWX0lERV9JQ1NJREUNCisJew0KKwkJZXh0ZXJuIHZvaWQgaWNzaWRlX2lu
aXQodm9pZCk7DQorCQlpY3NpZGVfaW5pdCgpOw0KKwl9DQorI2VuZGlmIC8q
IENPTkZJR19CTEtfREVWX0lERV9JQ1NJREUgKi8NCisjaWZkZWYgQ09ORklH
X0JMS19ERVZfSURFX1JBUElERQ0KKwl7DQorCQlleHRlcm4gdm9pZCByYXBp
ZGVfaW5pdCh2b2lkKTsNCisJCXJhcGlkZV9pbml0KCk7DQorCX0NCisjZW5k
aWYgLyogQ09ORklHX0JMS19ERVZfSURFX1JBUElERSAqLw0KKyNpZmRlZiBD
T05GSUdfQkxLX0RFVl9HQVlMRQ0KKwl7DQorCQlleHRlcm4gdm9pZCBnYXls
ZV9pbml0KHZvaWQpOw0KKwkJZ2F5bGVfaW5pdCgpOw0KKwl9DQorI2VuZGlm
IC8qIENPTkZJR19CTEtfREVWX0dBWUxFICovDQorI2lmZGVmIENPTkZJR19C
TEtfREVWX0ZBTENPTl9JREUNCisJew0KKwkJZXh0ZXJuIHZvaWQgZmFsY29u
aWRlX2luaXQodm9pZCk7DQorCQlmYWxjb25pZGVfaW5pdCgpOw0KKwl9DQor
I2VuZGlmIC8qIENPTkZJR19CTEtfREVWX0ZBTENPTl9JREUgKi8NCisjaWZk
ZWYgQ09ORklHX0JMS19ERVZfTUFDX0lERQ0KKwl7DQorCQlleHRlcm4gdm9p
ZCBtYWNpZGVfaW5pdCh2b2lkKTsNCisJCW1hY2lkZV9pbml0KCk7DQorCX0N
CisjZW5kaWYgLyogQ09ORklHX0JMS19ERVZfTUFDX0lERSAqLw0KKyNpZmRl
ZiBDT05GSUdfQkxLX0RFVl9CVURESEENCisJew0KKwkJZXh0ZXJuIHZvaWQg
YnVkZGhhX2luaXQodm9pZCk7DQorCQlidWRkaGFfaW5pdCgpOw0KKwl9DQor
I2VuZGlmIC8qIENPTkZJR19CTEtfREVWX0JVRERIQSAqLw0KIH0NCiANCiBf
X2luaXRmdW5jKHZvaWQgaWRlX2luaXRfYnVpbHRpbl9kcml2ZXJzICh2b2lk
KSkNCkBAIC0yOTM5LDggKzMwNTgsMTAgQEANCiBFWFBPUlRfU1lNQk9MKGlk
ZV9hZGRfc2V0dGluZyk7DQogRVhQT1JUX1NZTUJPTChpZGVfcmVtb3ZlX3Nl
dHRpbmcpOw0KIA0KK0VYUE9SVF9TWU1CT0woaWRlX3JlZ2lzdGVyX2h3KTsN
CiBFWFBPUlRfU1lNQk9MKGlkZV9yZWdpc3Rlcik7DQogRVhQT1JUX1NZTUJP
TChpZGVfdW5yZWdpc3Rlcik7DQorRVhQT1JUX1NZTUJPTChpZGVfc2V0dXBf
cG9ydHMpOw0KIA0KIC8qDQogICogVGhpcyBpcyBnZXRzIGludm9rZWQgb25j
ZSBkdXJpbmcgaW5pdGlhbGl6YXRpb24sIHRvIHNldCAqZXZlcnl0aGluZyog
dXANCmRpZmYgLXVyTiBsaW51eC0yLjEuMTE3LXByaXN0aW5lL2RyaXZlcnMv
YmxvY2svaWRlLmggbGludXgvZHJpdmVycy9ibG9jay9pZGUuaA0KLS0tIGxp
bnV4LTIuMS4xMTctcHJpc3RpbmUvZHJpdmVycy9ibG9jay9pZGUuaAlUaHUg
QXVnIDIwIDAwOjA5OjQwIDE5OTgNCisrKyBsaW51eC9kcml2ZXJzL2Jsb2Nr
L2lkZS5oCVRodSBBdWcgMjAgMDA6MTg6MDUgMTk5OA0KQEAgLTEyLDcgKzEy
LDcgQEANCiAjaW5jbHVkZSA8bGludXgvaGRyZWcuaD4NCiAjaW5jbHVkZSA8
bGludXgvYmxrZGV2Lmg+DQogI2luY2x1ZGUgPGxpbnV4L3Byb2NfZnMuaD4N
Ci0jaW5jbHVkZSA8YXNtL2lkZS5oPg0KKyNpbmNsdWRlIDxhc20vaGRyZWcu
aD4NCiANCiAvKg0KICAqIFRoaXMgaXMgdGhlIG11bHRpcGxlIElERSBpbnRl
cmZhY2UgZHJpdmVyLCBhcyBldm9sdmVkIGZyb20gaGQuYy4NCkBAIC0xNzcs
NiArMTc3LDQwIEBADQogfQ0KIA0KIC8qDQorICogQ2hlY2sgZm9yIGFuIGlu
dGVycnVwdCBhbmQgYWNrbm93bGVkZ2UgdGhlIGludGVycnVwdCBzdGF0dXMN
CisgKi8NCitzdHJ1Y3QgaHdpZl9zOw0KK3R5cGVkZWYgaW50IChpZGVfYWNr
X2ludHJfdCkoc3RydWN0IGh3aWZfcyAqKTsNCisNCisvKg0KKyAqIFN0cnVj
dHVyZSB0byBob2xkIGFsbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbG9jYXRp
b24gb2YgdGhpcyBwb3J0DQorICovDQordHlwZWRlZiBzdHJ1Y3QgaHdfcmVn
c19zIHsNCisJaWRlX2lvcmVnX3QJaW9fcG9ydHNbSURFX05SX1BPUlRTXTsJ
LyogdGFzayBmaWxlIHJlZ2lzdGVycyAqLw0KKwlpbnQJCWlycTsJCQkvKiBv
dXIgaXJxIG51bWJlciAqLw0KKwlpZGVfYWNrX2ludHJfdAkqYWNrX2ludHI7
CQkvKiBhY2tub3dsZWRnZSBpbnRlcnJ1cHQgKi8NCisJdm9pZAkJKnByaXY7
CQkJLyogaW50ZXJmYWNlIHNwZWNpZmljIGRhdGEgKi8NCit9IGh3X3JlZ3Nf
dDsNCisNCisvKg0KKyAqIFJlZ2lzdGVyIG5ldyBoYXJkd2FyZSB3aXRoIGlk
ZQ0KKyAqLw0KK2ludCBpZGVfcmVnaXN0ZXJfaHcoaHdfcmVnc190ICpodywg
c3RydWN0IGh3aWZfcyAqKmh3aWZwKTsNCisNCisvKg0KKyAqIFNldCB1cCBo
d19yZWdzX3Qgc3RydWN0dXJlIGJlZm9yZSBjYWxsaW5nIGlkZV9yZWdpc3Rl
cl9odyAob3B0aW9uYWwpDQorICovDQordm9pZCBpZGVfc2V0dXBfcG9ydHMo
CWh3X3JlZ3NfdCAqaHcsDQorCQkJaWRlX2lvcmVnX3QgYmFzZSwNCisJCQlp
ZGVfaW9yZWdfdCAqb2Zmc2V0cywNCisJCQlpZGVfaW9yZWdfdCBjdHJsLA0K
KwkJCWlkZV9pb3JlZ190IGludHIsDQorCQkJaWRlX2Fja19pbnRyX3QgKmFj
a19pbnRyLA0KKwkJCWludCBpcnEpOw0KKw0KKyNpbmNsdWRlIDxhc20vaWRl
Lmg+DQorDQorLyoNCiAgKiBOb3cgZm9yIHRoZSBkYXRhIHdlIG5lZWQgdG8g
bWFpbnRhaW4gcGVyLWRyaXZlOiAgaWRlX2RyaXZlX3QNCiAgKi8NCiANCkBA
IC0zMjAsNiArMzU0LDcgQEANCiAJc3RydWN0IGh3aWZfcwkqbmV4dDsJCS8q
IGZvciBsaW5rZWQtbGlzdCBpbiBpZGVfaHdncm91cF90ICovDQogCXZvaWQJ
CSpod2dyb3VwOwkvKiBhY3R1YWxseSAoaWRlX2h3Z3JvdXBfdCAqKSAqLw0K
IAlpZGVfaW9yZWdfdAlpb19wb3J0c1tJREVfTlJfUE9SVFNdOwkvKiB0YXNr
IGZpbGUgcmVnaXN0ZXJzICovDQorCWh3X3JlZ3NfdAlodzsJCS8qIEhhcmR3
YXJlIGluZm8gKi8NCiAJaWRlX2RyaXZlX3QJZHJpdmVzW01BWF9EUklWRVNd
OwkvKiBkcml2ZSBpbmZvICovDQogCXN0cnVjdCBnZW5kaXNrCSpnZDsJCS8q
IGdlbmRpc2sgc3RydWN0dXJlICovDQogCWlkZV90dW5lcHJvY190CSp0dW5l
cHJvYzsJLyogcm91dGluZSB0byB0dW5lIFBJTyBtb2RlIGZvciBkcml2ZXMg
Ki8NCkBAIC03MjksOCArNzY0LDExIEBADQogdm9pZCBpZGVfc2Nhbl9wY2li
dXMgKHZvaWQpIF9faW5pdDsNCiAjZW5kaWYNCiAjaWZkZWYgQ09ORklHX0JM
S19ERVZfSURFRE1BDQorI2RlZmluZSBCQURfRE1BX0RSSVZFCQkwDQorI2Rl
ZmluZSBHT09EX0RNQV9EUklWRQkJMQ0KIGludCBpZGVfYnVpbGRfZG1hdGFi
bGUgKGlkZV9kcml2ZV90ICpkcml2ZSk7DQogdm9pZCBpZGVfZG1hX2ludHIg
IChpZGVfZHJpdmVfdCAqZHJpdmUpOw0KK2ludCBjaGVja19kcml2ZV9saXN0
cyAoaWRlX2RyaXZlX3QgKmRyaXZlLCBpbnQgZ29vZF9iYWQpOw0KIGludCBp
ZGVfZG1hcHJvYyAoaWRlX2RtYV9hY3Rpb25fdCBmdW5jLCBpZGVfZHJpdmVf
dCAqZHJpdmUpOw0KIHZvaWQgaWRlX3NldHVwX2RtYSAoaWRlX2h3aWZfdCAq
aHdpZiwgdW5zaWduZWQgbG9uZyBkbWFiYXNlLCB1bnNpZ25lZCBpbnQgbnVt
X3BvcnRzKSBfX2luaXQ7DQogdW5zaWduZWQgbG9uZyBpZGVfZ2V0X29yX3Nl
dF9kbWFfYmFzZSAoaWRlX2h3aWZfdCAqaHdpZiwgaW50IGV4dHJhLCBjb25z
dCBjaGFyICpuYW1lKSBfX2luaXQ7DQpkaWZmIC11ck4gbGludXgtMi4xLjEx
Ny1wcmlzdGluZS9kcml2ZXJzL2Jsb2NrL2xsX3J3X2Jsay5jIGxpbnV4L2Ry
aXZlcnMvYmxvY2svbGxfcndfYmxrLmMNCi0tLSBsaW51eC0yLjEuMTE3LXBy
aXN0aW5lL2RyaXZlcnMvYmxvY2svbGxfcndfYmxrLmMJVGh1IEF1ZyAyMCAw
MDowOTo0MCAxOTk4DQorKysgbGludXgvZHJpdmVycy9ibG9jay9sbF9yd19i
bGsuYwlUaHUgQXVnIDIwIDAwOjE4OjA1IDE5OTgNCkBAIC0zMTAsNiArMzEw
LDIyIEBADQogCQljYXNlIElERTFfTUFKT1I6DQogCQkJZGlza19pbmRleCA9
ICgoTUlOT1IocmVxLT5ycV9kZXYpICYgMHgwMDQwKSA+PiA2KSArIDI7DQog
CQkJZHJpdmVfc3RhdF9hY2N0KHJlcS0+Y21kLCByZXEtPm5yX3NlY3RvcnMs
IGRpc2tfaW5kZXgpOw0KKwkJCWJyZWFrOw0KKwkJY2FzZSBJREUyX01BSk9S
Og0KKwkJCWRpc2tfaW5kZXggPSAoKE1JTk9SKHJlcS0+cnFfZGV2KSAmIDB4
MDA0MCkgPj4gNikgKyA0Ow0KKwkJCWRyaXZlX3N0YXRfYWNjdChyZXEtPmNt
ZCwgcmVxLT5ucl9zZWN0b3JzLCBkaXNrX2luZGV4KTsNCisJCQlicmVhazsN
CisJCWNhc2UgSURFM19NQUpPUjoNCisJCQlkaXNrX2luZGV4ID0gKChNSU5P
UihyZXEtPnJxX2RldikgJiAweDAwNDApID4+IDYpICsgNjsNCisJCQlkcml2
ZV9zdGF0X2FjY3QocmVxLT5jbWQsIHJlcS0+bnJfc2VjdG9ycywgZGlza19p
bmRleCk7DQorCQkJYnJlYWs7DQorCQljYXNlIElERTRfTUFKT1I6DQorCQkJ
ZGlza19pbmRleCA9ICgoTUlOT1IocmVxLT5ycV9kZXYpICYgMHgwMDQwKSA+
PiA2KSArIDg7DQorCQkJZHJpdmVfc3RhdF9hY2N0KHJlcS0+Y21kLCByZXEt
Pm5yX3NlY3RvcnMsIGRpc2tfaW5kZXgpOw0KKwkJCWJyZWFrOw0KKwkJY2Fz
ZSBJREU1X01BSk9SOg0KKwkJCWRpc2tfaW5kZXggPSAoKE1JTk9SKHJlcS0+
cnFfZGV2KSAmIDB4MDA0MCkgPj4gNikgKyAxMDsNCisJCQlkcml2ZV9zdGF0
X2FjY3QocmVxLT5jbWQsIHJlcS0+bnJfc2VjdG9ycywgZGlza19pbmRleCk7
DQogCQlkZWZhdWx0Og0KIAkJCWJyZWFrOw0KIAl9DQpkaWZmIC11ck4gbGlu
dXgtMi4xLjExNy1wcmlzdGluZS9kcml2ZXJzL2Jsb2NrL21hY2lkZS5jIGxp
bnV4L2RyaXZlcnMvYmxvY2svbWFjaWRlLmMNCi0tLSBsaW51eC0yLjEuMTE3
LXByaXN0aW5lL2RyaXZlcnMvYmxvY2svbWFjaWRlLmMJV2VkIERlYyAzMSAx
ODowMDowMCAxOTY5DQorKysgbGludXgvZHJpdmVycy9ibG9jay9tYWNpZGUu
YwlUaHUgQXVnIDIwIDAwOjE4OjA1IDE5OTgNCkBAIC0wLDAgKzEsMTY4IEBA
DQorLyoNCisgKiAgbGludXgvZHJpdmVycy9ibG9jay9tYWNpZGUuYyAtLSBN
YWNpbnRvc2ggSURFIERyaXZlcg0KKyAqDQorICogICAgIENvcHlyaWdodCAo
QykgMTk5OCBieSBNaWNoYWVsIFNjaG1pdHoNCisgKg0KKyAqICBUaGlzIGRy
aXZlciB3YXMgd3JpdHRlbiBiYXNlZCBvbiBpbmZvcm1hdGlvbiBvYnRhaW5l
ZCBmcm9tIHRoZSBNYWNPUyBJREUNCisgKiAgZHJpdmVyIGJpbmFyeSBieSBN
aWthZWwgRm9yc2VsaXVzDQorICoNCisgKiAgVGhpcyBmaWxlIGlzIHN1Ympl
Y3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2Vu
ZXJhbCBQdWJsaWMNCisgKiAgTGljZW5zZS4gIFNlZSB0aGUgZmlsZSBDT1BZ
SU5HIGluIHRoZSBtYWluIGRpcmVjdG9yeSBvZiB0aGlzIGFyY2hpdmUgZm9y
DQorICogIG1vcmUgZGV0YWlscy4NCisgKi8NCisNCisjaW5jbHVkZSA8bGlu
dXgvdHlwZXMuaD4NCisjaW5jbHVkZSA8bGludXgvbW0uaD4NCisjaW5jbHVk
ZSA8bGludXgvaW50ZXJydXB0Lmg+DQorI2luY2x1ZGUgPGxpbnV4L2Jsa2Rl
di5oPg0KKyNpbmNsdWRlIDxsaW51eC9oZHJlZy5oPg0KKyNpbmNsdWRlIDxs
aW51eC96b3Jyby5oPg0KKw0KKyNpbmNsdWRlICJpZGUuaCINCisNCisjaW5j
bHVkZSA8YXNtL21hY2h3Lmg+DQorI2luY2x1ZGUgPGFzbS9tYWNpbnRvc2gu
aD4NCisjaW5jbHVkZSA8YXNtL21hY2ludHMuaD4NCisNCisgICAgLyoNCisg
ICAgICogIEJhc2Ugb2YgdGhlIElERSBpbnRlcmZhY2UgKHNlZSBBVEFNYW5h
Z2VyIFJPTSBjb2RlKQ0KKyAgICAgKi8NCisNCisjZGVmaW5lIE1BQ19IRF9C
QVNFCTB4NTBmMWEwMDANCisNCisgICAgLyoNCisgICAgICogIE9mZnNldHMg
ZnJvbSB0aGUgYWJvdmUgYmFzZSAoc2NhbGluZyA0KQ0KKyAgICAgKi8NCisN
CisjZGVmaW5lIE1BQ19IRF9EQVRBCTB4MDANCisjZGVmaW5lIE1BQ19IRF9F
UlJPUgkweDA0CQkvKiBzZWUgZXJyLWJpdHMgKi8NCisjZGVmaW5lIE1BQ19I
RF9OU0VDVE9SCTB4MDgJCS8qIG5yIG9mIHNlY3RvcnMgdG8gcmVhZC93cml0
ZSAqLw0KKyNkZWZpbmUgTUFDX0hEX1NFQ1RPUgkweDBjCQkvKiBzdGFydGlu
ZyBzZWN0b3IgKi8NCisjZGVmaW5lIE1BQ19IRF9MQ1lMCTB4MTAJCS8qIHN0
YXJ0aW5nIGN5bGluZGVyICovDQorI2RlZmluZSBNQUNfSERfSENZTAkweDE0
CQkvKiBoaWdoIGJ5dGUgb2Ygc3RhcnRpbmcgY3lsICovDQorI2RlZmluZSBN
QUNfSERfU0VMRUNUCTB4MTgJCS8qIDEwMWRoaGhoICwgZD1kcml2ZSwgaGho
aD1oZWFkICovDQorI2RlZmluZSBNQUNfSERfU1RBVFVTCTB4MWMJCS8qIHNl
ZSBzdGF0dXMtYml0cyAqLw0KKyNkZWZpbmUgTUFDX0hEX0NPTlRST0wJMHgz
OAkJLyogY29udHJvbC9hbHRzdGF0dXMgKi8NCisNCitzdGF0aWMgaWRlX2lv
cmVnX3QgbWFjaWRlX29mZnNldHNbSURFX05SX1BPUlRTXSA9IHsNCisgICAg
TUFDX0hEX0RBVEEsIE1BQ19IRF9FUlJPUiwgTUFDX0hEX05TRUNUT1IsIE1B
Q19IRF9TRUNUT1IsIE1BQ19IRF9MQ1lMLA0KKyAgICBNQUNfSERfSENZTCwg
TUFDX0hEX1NFTEVDVCwgTUFDX0hEX1NUQVRVUywgTUFDX0hEX0NPTlRST0wN
Cit9Ow0KKw0KKwkvKg0KKwkgKiBPdGhlciByZWdpc3RlcnMNCisJICovDQor
DQorCS8qIA0KKwkgKiBJREUgaW50ZXJydXB0IHN0YXR1cyByZWdpc3RlciBm
b3IgYm90aCAoPykgaHdpZnMgb24gUXVhZHJhDQorCSAqIEluaXRpYWwgc2V0
dGluZzogMHhjDQorCSAqIEd1ZXNzaW5nIGFnYWluOg0KKwkgKiBCaXQgMCsx
OiBzb21lIGludGVycnVwdCBmbGFncw0KKwkgKiBCaXQgMiszOiBzb21lIGlu
dGVycnVwdCBlbmFibGUNCisJICogQml0IDQ6ICAgPz8NCisJICogQml0IDU6
ICAgSURFIGludGVycnVwdCBmbGFnIChhbnkgaHdpZikNCisJICogQml0IDY6
ICAgbWF5YmUgSURFIGludGVycnVwdCBlbmFibGUgKGFueSBod2lmKSA/Pw0K
KwkgKiBCaXQgNzogICBBbnkgaW50ZXJydXB0IGNvbmRpdGlvbg0KKwkgKg0K
KwkgKiBPbmx5IHJlbGV2YW50IGl0ZW06IGJpdCA1LCB0byBiZSBjaGVja2Vk
IGJ5IG1hY19hY2tfaW50cg0KKwkgKi8NCisNCisjZGVmaW5lIE1BQ19IRF9J
U1IJMHgxMDENCisNCisJLyoNCisJICogSURFIGludGVycnVwdCBnbHVlIC0g
c2VlbXMgdG8gYmUgd2lyZWQgdG8gTnVidXMsIFNsb3QgQz8NCisJICogKFJP
TSBjb2RlIGRpc2Fzc2VtYmx5IGFnYWluKQ0KKwkgKiBGaXJzdCB0cnk6IGp1
c3QgdXNlIE51YnVzIGludGVycnVwdCBmb3IgU2xvdCBDLiBIYXZlIE51YnVz
IGNvZGUgY2FsbA0KKwkgKiBhIHdyYXBwZXIgdG8gaWRlX2ludHIgdGhhdCBj
aGVja3MgdGhlIElTUiAoc2VlIGFib3ZlKS4NCisJICogTmVlZCB0byAjZGVm
aW5lIElERV9JUlFfTlVCVVMgdGhvdWdoLg0KKwkgKiBBbHRlcm5hdGl2ZSBt
ZXRob2Q6IHNldCBhIG1hY19pZGVfaG9vayBmdW5jdGlvbiBwb2ludGVyIHRv
IHRoZSB3cmFwcGVyIA0KKwkgKiBoZXJlIGFuZCBoYXZlIHZpYV9kb19udWJ1
cyBjYWxsIHRoYXQgaG9vayBpZiBzZXQuIA0KKwkgKg0KKwkgKiBRdWFkcmEg
bmVlZHMgdGhlIGhvb2ssIFBvd2VyYm9vayBjYW4gdXNlIE51YnVzIHNsb3Qg
Qy4gDQorCSAqIENoZWNraW5nIHRoZSBJU1Igb24gUXVhZHJhIGlzIGRvbmUg
YnkgbWFjX2Fja19pbnRyIChzZWUgQW1pZ2EgY29kZSkuIG1hY19pZGVfaW50
cg0KKwkgKiBtYWNfaWRlX2ludHIgaXMgb2Jzb2xldGUgZXhjZXB0IGZvciBw
cm92aWRpbmcgdGhlIGh3Z3JvdXAgYXJndW1lbnQuDQorCSAqLw0KKw0KKwkv
KiBUaGUgTWFjIGh3aWYgZGF0YSwgZm9yIHBhc3NpbmcgaHdncm91cCB0byBp
ZGVfaW50ciAqLw0KK3N0YXRpYyBpZGVfaHdpZl90ICptYWNfaHdpZiA9IE5V
TEw7DQorDQorCS8qIFRoZSBmdW5jdGlvbiBwb2ludGVyIHVzZWQgaW4gdGhl
IE51YnVzIGhhbmRsZXIgKi8NCit2b2lkICgqbWFjX2lkZV9pbnRyX2hvb2sp
KGludCwgdm9pZCAqLCBzdHJ1Y3QgcHRfcmVncyAqKSA9IE5VTEw7DQorDQor
CS8qDQorCSAqIE9ubHkgcHVycG9zZTogZmVlZHMgdGhlIGh3Z3JvdXAgdG8g
dGhlIG1haW4gSURFIGhhbmRsZXIuIA0KKwkgKiBPYnNvbGV0ZSBhcyBzb29u
IGFzIE51YnVzIGNvZGUgaXMgZml4ZWQgV1JUIHBzZXVkbyBzbG90IEMgaW50
Lg0KKwkgKiAoc2hvdWxkIGJlIHRoZSBjYXNlIG9uIFBvd2VyYm9va3MpDQor
CSAqIEFsYXMsIHNlY29uZCBwdXJwb3NlOiBmZWVkIGNvcnJlY3QgaXJxIHRv
IElERSBoYW5kbGVyIChJIGtub3csDQorCSAqIHRoYXQncyBjaGVhdGluZykg
Oi0oKCgNCisJICogRml4IG5lZWRlZCBmb3IgaW50ZXJydXB0IGNvZGU6IGFj
Y2VwdCBOdWJ1cyBpbnRzIGluIHRoZSByZWd1bGFyDQorCSAqIHJlcXVlc3Rf
aXJxIGNvZGUsIHRoZW4gcmVnaXN0ZXIgUG93ZXJib29rIElERSBhcyBOdWJ1
cyBzbG90IEMsIA0KKwkgKiBRdWFkcmEgYXMgc2xvdCBGIChGIGZvciBmaWN0
aW91cykuDQorCSAqLw0KK3ZvaWQgbWFjX2lkZV9pbnRyKGludCBpcnEsIHZv
aWQgKmRldl9pZCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpDQorew0KKwlpZGVf
aW50cihtYWNfaHdpZi0+aHcuaXJxLCBtYWNfaHdpZi0+aHdncm91cCwgcmVn
cyk7DQorfQ0KKw0KKyAgICAvKg0KKyAgICAgKiAgQ2hlY2sgdGhlIGludGVy
cnVwdCBzdGF0dXMNCisgICAgICoNCisgICAgICogIE5vdGU6IEluIDIuMCBr
ZXJuZWxzLCB0aGVyZSBoYXZlIGJlZW4gdGltaW5nIHByb2JsZW1zIHdpdGgg
dGhlIA0KKyAgICAgKiAgUG93ZXJib29rIElERSBpbnRlcmZhY2UgKEJVU1kg
d2FzIGFzc2VydGVkIHRvbyBsb25nIGFmdGVyIHRoZQ0KKyAgICAgKiAgaW50
ZXJydXB0IHRyaWdnZXJlZCkuIFJlc3VsdDogcmVwZWF0ZWQgZXJyb3JzLCBy
ZWNhbGlicmF0ZSBldGMuIA0KKyAgICAgKiAgQWRkaW5nIGEgd2FpdCBsb29w
IHRvIHJlYWRfaW50ciwgd3JpdGVfaW50ciBhbmQgc2V0X2dlb21faW50cg0K
KyAgICAgKiAgZml4ZWQgdGhlIHByb2JsZW0gKHdhaXRzIGluIHJlYWQvd3Jp
dGVfaW50ciB3ZXJlIHByZXNlbnQgZm9yIEFtaWdhDQorICAgICAqICBhbHJl
YWR5KS4gDQorICAgICAqICBQb3dlcmJvb2tzIHdlcmUgbm90IHRlc3RlZCB3
aXRoIDIuMSBkdWUgdG8gbGFjayBvZiBGUFUgZW11bGF0aW9uDQorICAgICAq
ICAodGhhbmtzIEFwcGxlIGZvciB1c2luZyBMQzA0MCkuIElmIHRoZSBCVVNZ
IHByb2JsZW0gcmVzdXJmYWNlcyBpbiANCisgICAgICogIDIuMSwgbXkgYmVz
dCBiZXQgd291bGQgYmUgdG8gYWRkIHRoZSB3YWl0IGxvb3AgcmlnaHQgaGVy
ZSwgYWZ0ZXJyDQorICAgICAqICBjaGVja2luZyB0aGUgaW50ZXJydXB0IHJl
Z2lzdGVyLg0KKyAgICAgKi8NCisNCitzdGF0aWMgaW50IG1hY19hY2tfaW50
cihpZGVfaHdpZl90ICpod2lmKQ0KK3sNCisgICAgdW5zaWduZWQgY2hhciBj
aDsNCisNCisgICAgY2ggPSBpbmIoaHdpZi0+aHcuaW9fcG9ydHNbSURFX0lS
UV9PRkZTRVRdKTsNCisgICAgaWYgKCEoY2ggJiAweDIwKSkNCisJcmV0dXJu
IDA7DQorICAgIHJldHVybiAxOw0KK30NCisNCisgICAgLyoNCisgICAgICog
IFByb2JlIGZvciBhIE1hY2ludG9zaCBJREUgaW50ZXJmYWNlDQorICAgICAq
Lw0KKw0KK3ZvaWQgbWFjaWRlX2luaXQodm9pZCkNCit7DQorICAgIGh3X3Jl
Z3NfdCBodzsNCisgICAgaW50IGluZGV4ID0gLTE7DQorDQorICAgIGlmIChN
QUNIX0lTX01BQykgew0KKwlzd2l0Y2gobWFjaW50b3NoX2NvbmZpZy0+aWRl
X3R5cGUpIHsNCisJY2FzZSAwOg0KKwkgICAgYnJlYWs7DQorDQorCWNhc2Ug
TUFDX0lERV9RVUFEUkE6DQorCSAgICBpZGVfc2V0dXBfcG9ydHMoJmh3LCAo
aWRlX2lvcmVnX3QpTUFDX0hEX0JBU0UsIG1hY2lkZV9vZmZzZXRzLA0KKwkg
ICAgCQkgICAgMCwgKGlkZV9pb3JlZ190KShNQUNfSERfQkFTRStNQUNfSERf
SVNSKSwNCisJCQkgICAgbWFjX2Fja19pbnRyLCBJUlFfTUFDX05VQlVTKTsN
CisJICAgIGluZGV4ID0gaWRlX3JlZ2lzdGVyX2h3KCZodywgJm1hY19od2lm
KTsNCisJICAgIG1hY19pZGVfaW50cl9ob29rID0gbWFjX2lkZV9pbnRyOw0K
KwkgICAgYnJlYWs7DQorDQorCWRlZmF1bHQ6DQorCSAgICBpZGVfc2V0dXBf
cG9ydHMoJmh3LCAoaWRlX2lvcmVnX3QpTUFDX0hEX0JBU0UsIG1hY2lkZV9v
ZmZzZXRzLA0KKwkgICAgCQkgICAgMCwgMCwgTlVMTCwgSVJRX01BQ19OVUJV
Uyk7DQorCSAgICBpbmRleCA9IGlkZV9yZWdpc3Rlcl9odygmaHcsICZtYWNf
aHdpZik7DQorCSAgICBicmVhazsNCisJfQ0KKw0KKyAgICAgICAgaWYgKGlu
ZGV4ICE9IC0xKSB7DQorCSAgICBpZiAobWFjaW50b3NoX2NvbmZpZy0+aWRl
X3R5cGUgPT0gTUFDX0lERV9RVUFEUkEpDQorCQlwcmludGsoImlkZSVkOiBN
YWNpbnRvc2ggUXVhZHJhIElERSBpbnRlcmZhY2VcbiIsIGluZGV4KTsNCisJ
ICAgIGVsc2UNCisJCXByaW50aygiaWRlJWQ6IE1hY2ludG9zaCBQb3dlcmJv
b2sgSURFIGludGVyZmFjZVxuIiwgaW5kZXgpOw0KKwl9DQorICAgIH0NCit9
DQpkaWZmIC11ck4gbGludXgtMi4xLjExNy1wcmlzdGluZS9kcml2ZXJzL2Js
b2NrL3BkYzQwMzAuYyBsaW51eC9kcml2ZXJzL2Jsb2NrL3BkYzQwMzAuYw0K
LS0tIGxpbnV4LTIuMS4xMTctcHJpc3RpbmUvZHJpdmVycy9ibG9jay9wZGM0
MDMwLmMJVGh1IEF1ZyAyMCAwMDowOTo0MCAxOTk4DQorKysgbGludXgvZHJp
dmVycy9ibG9jay9wZGM0MDMwLmMJVGh1IEF1ZyAyMCAwMDoxODowNSAxOTk4
DQpAQCAtMTc3LDEzICsxNzcsMTQgQEANCiAJCWlkZV9od2lmX3QgKmggPSAm
aWRlX2h3aWZzW2ldOw0KIA0KIAkJcHJpbnRrKCJTaGlmdGluZyBpL2YgJWQg
dmFsdWVzIHRvIGkvZiAlZFxuIixpLTEsaSk7DQotCQlpZGVfaW5pdF9od2lm
X3BvcnRzKGgtPmlvX3BvcnRzLCAoaC0xKS0+aW9fcG9ydHNbSURFX0RBVEFf
T0ZGU0VUXSwgTlVMTCk7DQotCQloLT5pb19wb3J0c1tJREVfQ09OVFJPTF9P
RkZTRVRdID0gKGgtMSktPmlvX3BvcnRzW0lERV9DT05UUk9MX09GRlNFVF07
DQorCQlpZGVfaW5pdF9od2lmX3BvcnRzKCZoLT5odywgKGgtMSktPmlvX3Bv
cnRzW0lERV9EQVRBX09GRlNFVF0sIDAsIE5VTEwpOw0KKwkJbWVtY3B5KGgt
PmlvX3BvcnRzLCBoLT5ody5pb19wb3J0cywgc2l6ZW9mKGgtPmlvX3BvcnRz
KSk7DQogCQloLT5ub3Byb2JlID0gKGgtMSktPm5vcHJvYmU7DQogCX0NCi0J
aWRlX2luaXRfaHdpZl9wb3J0cyhzZWNvbmRfaHdpZi0+aW9fcG9ydHMsIGh3
aWYtPmlvX3BvcnRzW0lERV9EQVRBX09GRlNFVF0sIE5VTEwpOw0KLQlzZWNv
bmRfaHdpZi0+aW9fcG9ydHNbSURFX0NPTlRST0xfT0ZGU0VUXSA9IGh3aWYt
PmlvX3BvcnRzW0lERV9DT05UUk9MX09GRlNFVF07DQorCWlkZV9pbml0X2h3
aWZfcG9ydHMoJnNlY29uZF9od2lmLT5odywgaHdpZi0+aW9fcG9ydHNbSURF
X0RBVEFfT0ZGU0VUXSwgMCwgTlVMTCk7DQorCW1lbWNweShzZWNvbmRfaHdp
Zi0+aW9fcG9ydHMsIGh3aWYtPmh3LmlvX3BvcnRzLCBzaXplb2Yoc2Vjb25k
X2h3aWYtPmlvX3BvcnRzKSk7DQogCXNlY29uZF9od2lmLT5pcnEgPSBod2lm
LT5pcnE7DQorCXNlY29uZF9od2lmLT5ody5pcnEgPSBod2lmLT5ody5pcnEg
PSBod2lmLT5pcnE7DQogCWZvciAoaT0wOyBpPDIgOyBpKyspIHsNCiAgICAg
ICAgICAgICBod2lmLT5kcml2ZXNbaV0uaW9fMzJiaXQgPSAzOw0KIAkgICAg
c2Vjb25kX2h3aWYtPmRyaXZlc1tpXS5pb18zMmJpdCA9IDM7DQpkaWZmIC11
ck4gbGludXgtMi4xLjExNy1wcmlzdGluZS9kcml2ZXJzL2Jsb2NrL3NsODJj
MTA1LmMgbGludXgvZHJpdmVycy9ibG9jay9zbDgyYzEwNS5jDQotLS0gbGlu
dXgtMi4xLjExNy1wcmlzdGluZS9kcml2ZXJzL2Jsb2NrL3NsODJjMTA1LmMJ
VGh1IEF1ZyAyMCAwMDowOTo0MCAxOTk4DQorKysgbGludXgvZHJpdmVycy9i
bG9jay9zbDgyYzEwNS5jCVRodSBBdWcgMjAgMDA6MTg6MDUgMTk5OA0KQEAg
LTU5LDE1ICs1OSwyNCBAQA0KICAgICAgICAgfQ0KIH0NCiANCi0NCi12b2lk
IGNocnBfaWRlX2luaXRfaHdpZl9wb3J0cyAoaWRlX2lvcmVnX3QgKnAsIGlk
ZV9pb3JlZ190IGJhc2UsIGludCAqaXJxKQ0KK3ZvaWQgY2hycF9pZGVfaW5p
dF9od2lmX3BvcnRzICgJaHdfcmVnc190ICpodywNCisJCQkJaW50IGRhdGFf
cG9ydCwNCisJCQkJaW50IGN0cmxfcG9ydCwNCisJCQkJaW50ICppcnEpDQog
ew0KLSAgICAgICAgaWRlX2lvcmVnX3QgcG9ydCA9IGJhc2U7DQotICAgICAg
ICBpbnQgaSA9IDg7DQorCWlkZV9pb3JlZ190IHJlZyA9IChpZGVfaW9yZWdf
dCkgZGF0YV9wb3J0Ow0KKwlpbnQgaTsNCiANCi0gICAgICAgIHdoaWxlIChp
LS0pDQotICAgICAgICAgICAgICAgICpwKysgPSBwb3J0Kys7DQotICAgICAg
ICAqcCsrID0gcG9ydDsNCi0gICAgICAgIGlmIChpcnEgIT0gTlVMTCkNCi0g
ICAgICAgICAgICAgICAgKmlycSA9IGNocnBfaWRlX2lycTsNCisJZm9yIChp
ID0gSURFX0RBVEFfT0ZGU0VUOyBpIDw9IElERV9TVEFUVVNfT0ZGU0VUOyBp
KyspIHsNCisJCWh3LT5pb19wb3J0c1tpXSA9IHJlZzsNCisJCXJlZyArPSAx
Ow0KKwkJfQ0KKwlpZiAoY3RybF9wb3J0KSB7DQorCQlody0+aW9fcG9ydHNb
SURFX0NPTlRST0xfT0ZGU0VUXSA9IChpZGVfaW9yZWdfdCkgY3RybF9wb3J0
Ow0KKwl9IGVsc2Ugew0KKwkJaHctPmlvX3BvcnRzW0lERV9DT05UUk9MX09G
RlNFVF0gPSAwOw0KKwl9DQorCWlmIChpcnEgIT0gTlVMTCkNCisJCWh3LT5p
cnEgPSBjaHJwX2lkZV9pcnE7DQogfQ0KKw0KZGlmZiAtdXJOIGxpbnV4LTIu
MS4xMTctcHJpc3RpbmUvZHJpdmVycy9ibG9jay92aWE4MmM1ODYuYyBsaW51
eC9kcml2ZXJzL2Jsb2NrL3ZpYTgyYzU4Ni5jDQotLS0gbGludXgtMi4xLjEx
Ny1wcmlzdGluZS9kcml2ZXJzL2Jsb2NrL3ZpYTgyYzU4Ni5jCVdlZCBEZWMg
MzEgMTg6MDA6MDAgMTk2OQ0KKysrIGxpbnV4L2RyaXZlcnMvYmxvY2svdmlh
ODJjNTg2LmMJVGh1IEF1ZyAyMCAwMDoxODowNSAxOTk4DQpAQCAtMCwwICsx
LDc3IEBADQorLyoNCisgKiBsaW51eC9kcml2ZXJzL2Jsb2NrL3ZpYTgyQzU4
Ni5jCVZlcnNpb24gMC4wMQlBdWcgMTYsIDE5OTgNCisgKg0KKyAqICBDb3B5
cmlnaHQgKEMpIDE5OTggTWljaGVsIEF1YnJ5DQorICogIENvcHlyaWdodCAo
QykgMTk5OCBBbmRyZSBIZWRyaWNrDQorICoNCisgKiAgVGhlIFZJQSBNVlAt
MyBpcyByZXBvcnRlZCBPSyB3aXRoIFVETUEuDQorICoNCisgKiAgVklBIGNo
aXBzIGFsc28gaGF2ZSBhIHNpbmdsZSBGSUZPLCB3aXRoIHRoZSBzYW1lIDY0
IGJ5dGVzIGRlZXAgYnVmZmVyLg0KKyAqICBIb3dldmVyLCBWSUEgY2hpcHMg
Y2FuIGhhdmUgdGhlIGJ1ZmZlciBzcGxpdCAxOjEgb3IgMzoxIGJldHdlZW4g
Ym90aCBJREUNCisgKiAgY2hhbm5lbHM7IGFuIGludGVyZXN0aW5nIGZlYXR1
cmUsIGJ1dCBkaWZmaWN1bHQgdG8gdXNlLg0KKyAqDQorICovDQorDQorI2lu
Y2x1ZGUgPGxpbnV4L3R5cGVzLmg+DQorI2luY2x1ZGUgPGxpbnV4L2tlcm5l
bC5oPg0KKyNpbmNsdWRlIDxsaW51eC90aW1lci5oPg0KKyNpbmNsdWRlIDxs
aW51eC9tbS5oPg0KKyNpbmNsdWRlIDxsaW51eC9pb3BvcnQuaD4NCisjaW5j
bHVkZSA8bGludXgvaW50ZXJydXB0Lmg+DQorI2luY2x1ZGUgPGxpbnV4L2Js
a2Rldi5oPg0KKyNpbmNsdWRlIDxsaW51eC9oZHJlZy5oPg0KKyNpbmNsdWRl
IDxsaW51eC9wY2kuaD4NCisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4NCisj
aW5jbHVkZSA8YXNtL2lvLmg+DQorI2luY2x1ZGUgImlkZS5oIg0KKw0KKy8q
DQorICogIFNldCBWSUEgQ2hpcHNldCBUaW1pbmdzIGZvciAoVSlETUEgbW9k
ZXMgZW5hYmxlZC4NCisgKg0KKyAqICBWSUEgQXBvbGxvIGNoaXBzZXQgaGFz
IGNvbXBsZXRlIHN1cHBvcnQgZm9yDQorICogIHNldHRpbmcgdXAgdGhlIHRp
bWluZyBwYXJhbWV0ZXJzLg0KKyAqLw0KK3N0YXRpYyB2b2lkIHNldF92aWFf
dGltaW5ncyAoaWRlX2h3aWZfdCAqaHdpZikNCit7DQorCXN0cnVjdCBwY2lf
ZGV2ICAqZGV2ID0gaHdpZi0+cGNpX2RldjsNCisJYnl0ZSBwb3N0ICA9IGh3
aWYtPmNoYW5uZWwgPyAweGMwIDogMHgzMDsNCisJYnl0ZSBmbHVzaCA9IGh3
aWYtPmNoYW5uZWwgPyAweGEwIDogMHg1MDsNCisJYnl0ZSB2aWFfY29uZmln
ID0gMDsNCisJaW50IHJjID0gMCwgZXJyb3JzID0gMDsNCisNCisJcHJpbnRr
KCIlczogVklBIEJ1cy1NYXN0ZXIgIiwgaHdpZi0+bmFtZSk7DQorDQorCWlm
ICghaHdpZi0+ZG1hX2Jhc2UpIHsNCisJCXByaW50aygiIEVSUk9SLCBOTyBE
TUFfQkFTRVxuIik7DQorCQlyZXR1cm47DQorCX0NCisNCisJLyogc2V0dGlu
ZyBJREUgcmVhZCBwcmVmZXRjaCBidWZmZXIgYW5kIElERSBwb3N0IHdyaXRl
IGJ1ZmZlciAqLw0KKwlpZiAoKHJjID0gcGNpX3JlYWRfY29uZmlnX2J5dGUo
ZGV2LCAweDQxLCAmdmlhX2NvbmZpZykpKSB7DQorCQllcnJvcnMrKzsNCisJ
CWdvdG8gdmlhX2Vycm9yOw0KKwl9DQorCWlmICgocmMgPSBwY2lfd3JpdGVf
Y29uZmlnX2J5dGUoZGV2LCAweDQxLCB2aWFfY29uZmlnIHwgcG9zdCkpKSB7
DQorCQllcnJvcnMrKzsNCisJCWdvdG8gdmlhX2Vycm9yOw0KKwl9DQorDQor
CS8qIHNldHRpbmcgQ2hhbm5lbCByZWFkIGFuZCBFbmQtb2Ytc2VjdG9yIEZJ
Rk8gZmx1c2g6ICovDQorCWlmICgocmMgPSBwY2lfcmVhZF9jb25maWdfYnl0
ZShkZXYsIDB4NDYsICZ2aWFfY29uZmlnKSkpIHsNCisJCWVycm9ycysrOw0K
KwkJZ290byB2aWFfZXJyb3I7DQorCX0NCisgICAgICAgIGlmICgocmMgPSBw
Y2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2LCAweDQ2LCB2aWFfY29uZmlnIHwg
Zmx1c2gpKSkgew0KKwkJZXJyb3JzKys7DQorCQlnb3RvIHZpYV9lcnJvcjsN
CisJfQ0KKw0KK3ZpYV9lcnJvcjoNCisJcHJpbnRrKCIoVSlETUEgVGltaW5n
IENvbmZpZyAlc1xuIiwgZXJyb3JzID8gIkVSUk9SIiA6ICJTdWNjZXNzIik7
DQorfQ0KKw0KK3ZvaWQgaWRlX2luaXRfdmlhODJjNTg2IChpZGVfaHdpZl90
ICpod2lmKQ0KK3sNCisJc2V0X3ZpYV90aW1pbmdzKGh3aWYpOw0KK30NCisN
CmRpZmYgLXVyTiBsaW51eC0yLjEuMTE3LXByaXN0aW5lL2RyaXZlcnMvcGNp
L29sZHByb2MuYyBsaW51eC9kcml2ZXJzL3BjaS9vbGRwcm9jLmMNCi0tLSBs
aW51eC0yLjEuMTE3LXByaXN0aW5lL2RyaXZlcnMvcGNpL29sZHByb2MuYwlU
aHUgQXVnIDIwIDAwOjA5OjQ5IDE5OTgNCisrKyBsaW51eC9kcml2ZXJzL3Bj
aS9vbGRwcm9jLmMJVGh1IEF1ZyAyMCAwMDozMDoxNiAxOTk4DQpAQCAtMzEy
LDYgKzMxMiw3IEBADQogCURFVklDRSggVFJVRVZJU0lPTiwJVFJVRVZJU0lP
Tl9UMTAwMCwiVEFSR0EgMTAwMCIpLA0KIAlERVZJQ0UoIElOSVQsCQlJTklU
XzMyMFAsCSIzMjAgUCIpLA0KIAlERVZJQ0UoIElOSVQsCQlJTklUXzM2MFAs
CSIzNjAgUCIpLA0KKwlERVZJQ0UoCVRUSSwJCVRUSV9IUFQzNDMsCSJIUFQz
NDMiKSwNCiAJREVWSUNFKCBWSUEsCQlWSUFfODJDNTA1LAkiVlQgODJDNTA1
IiksDQogCURFVklDRSggVklBLAkJVklBXzgyQzU2MSwJIlZUIDgyQzU2MSIp
LA0KIAlERVZJQ0UoIFZJQSwJCVZJQV84MkM1ODZfMSwJIlZUIDgyQzU4NiBB
cG9sbG8gSURFIiksDQpAQCAtNzIwLDYgKzcyMSw3IEBADQogCSAgICAgIGNh
c2UgUENJX1ZFTkRPUl9JRF9SRUFMVEVLOglyZXR1cm4gIlJlYWx0ZWsiOw0K
IAkgICAgICBjYXNlIFBDSV9WRU5ET1JfSURfVFJVRVZJU0lPTjoJcmV0dXJu
ICJUcnVldmlzaW9uIjsNCiAJICAgICAgY2FzZSBQQ0lfVkVORE9SX0lEX0lO
SVQ6CQlyZXR1cm4gIkluaXRpbyBDb3JwIjsNCisJICAgICAgY2FzZSBQQ0lf
VkVORE9SX0lEX1RUSToJCXJldHVybiAiVHJpb25lcyBUZWNobm9sb2dpZXMs
IEluYy4iOw0KIAkgICAgICBjYXNlIFBDSV9WRU5ET1JfSURfVklBOgkJcmV0
dXJuICJWSUEgVGVjaG5vbG9naWVzIjsNCiAJICAgICAgY2FzZSBQQ0lfVkVO
RE9SX0lEX1ZPUlRFWDoJcmV0dXJuICJWT1JURVgiOw0KIAkgICAgICBjYXNl
IFBDSV9WRU5ET1JfSURfRUY6CQlyZXR1cm4gIkVmZmljaWVudCBOZXR3b3Jr
cyI7DQpkaWZmIC11ck4gbGludXgtMi4xLjExNy1wcmlzdGluZS9pbmNsdWRl
L2FzbS1hbHBoYS9oZHJlZy5oIGxpbnV4L2luY2x1ZGUvYXNtLWFscGhhL2hk
cmVnLmgNCi0tLSBsaW51eC0yLjEuMTE3LXByaXN0aW5lL2luY2x1ZGUvYXNt
LWFscGhhL2hkcmVnLmgJV2VkIERlYyAzMSAxODowMDowMCAxOTY5DQorKysg
bGludXgvaW5jbHVkZS9hc20tYWxwaGEvaGRyZWcuaAlUaHUgQXVnIDIwIDAw
OjE3OjU0IDE5OTgNCkBAIC0wLDAgKzEsMTIgQEANCisvKg0KKyAqICBsaW51
eC9pbmNsdWRlL2FzbS1hbHBoYS9oZHJlZy5oDQorICoNCisgKiAgQ29weXJp
Z2h0IChDKSAxOTk0LTE5OTYgIExpbnVzIFRvcnZhbGRzICYgYXV0aG9ycw0K
KyAqLw0KKw0KKyNpZm5kZWYgX19BU01hbHBoYV9IRFJFR19IDQorI2RlZmlu
ZSBfX0FTTWFscGhhX0hEUkVHX0gNCisNCit0eXBlZGVmIHVuc2lnbmVkIHNo
b3J0IGlkZV9pb3JlZ190Ow0KKw0KKyNlbmRpZiAvKiBfX0FTTWFscGhhX0hE
UkVHX0ggKi8NCmRpZmYgLXVyTiBsaW51eC0yLjEuMTE3LXByaXN0aW5lL2lu
Y2x1ZGUvYXNtLWFscGhhL2lkZS5oIGxpbnV4L2luY2x1ZGUvYXNtLWFscGhh
L2lkZS5oDQotLS0gbGludXgtMi4xLjExNy1wcmlzdGluZS9pbmNsdWRlL2Fz
bS1hbHBoYS9pZGUuaAlUaHUgQXVnIDIwIDAwOjA5OjI5IDE5OTgNCisrKyBs
aW51eC9pbmNsdWRlL2FzbS1hbHBoYS9pZGUuaAlUaHUgQXVnIDIwIDAwOjE3
OjU0IDE5OTgNCkBAIC0xMyw4ICsxMyw2IEBADQogDQogI2lmZGVmIF9fS0VS
TkVMX18NCiANCi10eXBlZGVmIHVuc2lnbmVkIHNob3J0IGlkZV9pb3JlZ190
Ow0KLQ0KICNpZm5kZWYgTUFYX0hXSUZTDQogI2RlZmluZSBNQVhfSFdJRlMJ
NA0KICNlbmRpZg0KQEAgLTQ1LDE4ICs0Myw0NyBAQA0KIAl9DQogfQ0KIA0K
LXN0YXRpYyBfX2lubGluZV9fIHZvaWQgaWRlX2luaXRfaHdpZl9wb3J0cyAo
aWRlX2lvcmVnX3QgKnAsIGlkZV9pb3JlZ190IGJhc2UsIGludCAqaXJxKQ0K
LXsNCi0JaWRlX2lvcmVnX3QgcG9ydCA9IGJhc2U7DQotCWludCBpID0gODsN
Ci0NCi0Jd2hpbGUgKGktLSkNCi0JCSpwKysgPSBwb3J0Kys7DQotCSpwKysg
PSBiYXNlICsgMHgyMDY7DQorc3RhdGljIF9faW5saW5lX18gdm9pZCBpZGVf
aW5pdF9od2lmX3BvcnRzICgJaHdfcmVnc190ICpodywNCisJCQkJCQlpbnQg
ZGF0YV9wb3J0LA0KKwkJCQkJCWludCBjdHJsX3BvcnQsDQorCQkJCQkJaW50
IGlycSkNCit7DQorCWlkZV9pb3JlZ190IHJlZyA9IChpZGVfaW9yZWdfdCkg
ZGF0YV9wb3J0Ow0KKwlpbnQgaTsNCisNCisJZm9yIChpID0gSURFX0RBVEFf
T0ZGU0VUOyBpIDw9IElERV9TVEFUVVNfT0ZGU0VUOyBpKyspIHsNCisJCWh3
LT5pb19wb3J0c1tpXSA9IHJlZzsNCisJCXJlZyArPSAxOw0KKwl9DQorCWlm
IChjdHJsX3BvcnQpIHsNCisJCWh3LT5pb19wb3J0c1tJREVfQ09OVFJPTF9P
RkZTRVRdID0gKGlkZV9pb3JlZ190KSBjdHJsX3BvcnQ7DQorCX0gZWxzZSB7
DQorCQlody0+aW9fcG9ydHNbSURFX0NPTlRST0xfT0ZGU0VUXSA9IGh3LT5p
b19wb3J0c1tJREVfREFUQV9PRkZTRVRdICsgMHgyMDY7DQorCX0NCiAJaWYg
KGlycSAhPSBOVUxMKQ0KIAkJKmlycSA9IDA7DQogfQ0KIA0KKy8qDQorICog
VGhpcyByZWdpc3RlcnMgdGhlIHN0YW5kYXJkIHBvcnRzIGZvciB0aGlzIGFy
Y2hpdGVjdHVyZSB3aXRoIHRoZSBJREUNCisgKiBkcml2ZXIuDQorICovDQor
c3RhdGljIF9faW5saW5lX18gdm9pIGlkZV9pbml0X2RlZmF1bHRfaHdpZnMo
dm9pZCkNCit7DQorI2lmZGVmIF9fRE9fSV9ORUVEX1RISVMNCisJaHdfcmVn
c190IGh3Ow0KKw0KKwlpZGVfaW5pdF9od2lmX3BvcnRzKCZodywgMHgxZjAs
IDB4M2Y2LCAxNCk7DQorCWlkZV9yZWdpc3Rlcl9odygmaHcsIE5VTEwpOw0K
KwlpZGVfaW5pdF9od2lmX3BvcnRzKCZodywgMHgxNzAsIDB4Mzc2LCAxNSk7
DQorCWlkZV9yZWdpc3Rlcl9odygmaHcsIE5VTEwpOw0KKwlpZGVfaW5pdF9o
d2lmX3BvcnRzKCZodywgMHgxZTgsIDB4M2VlLCAxMSk7DQorCWlkZV9yZWdp
c3Rlcl9odygmaHcsIE5VTEwpOw0KKwlpZGVfaW5pdF9od2lmX3BvcnRzKCZo
dywgMHgxNjgsIDB4MzZlLCAxMCk7DQorCWlkZV9yZWdpc3Rlcl9odygmaHcs
IE5VTEwpOw0KKyNlbmRpZiAvKiBfX0RPX0lfTkVFRF9USElTICovDQorfQ0K
Kw0KIHR5cGVkZWYgdW5pb24gew0KIAl1bnNpZ25lZCBhbGwJCQk6IDg7CS8q
IGFsbCBvZiB0aGUgYml0cyB0b2dldGhlciAqLw0KIAlzdHJ1Y3Qgew0KQEAg
LTY4LDUxICs5NSwxOSBAQA0KIAl9IGI7DQogCX0gc2VsZWN0X3Q7DQogDQot
c3RhdGljIF9faW5saW5lX18gaW50IGlkZV9yZXF1ZXN0X2lycSh1bnNpZ25l
ZCBpbnQgaXJxLCB2b2lkICgqaGFuZGxlcikoaW50LCB2b2lkICosIHN0cnVj
dCBwdF9yZWdzICopLA0KLQkJCXVuc2lnbmVkIGxvbmcgZmxhZ3MsIGNvbnN0
IGNoYXIgKmRldmljZSwgdm9pZCAqZGV2X2lkKQ0KLXsNCi0JcmV0dXJuIHJl
cXVlc3RfaXJxKGlycSwgaGFuZGxlciwgZmxhZ3MsIGRldmljZSwgZGV2X2lk
KTsNCi19CQkJDQotDQotc3RhdGljIF9faW5saW5lX18gdm9pZCBpZGVfZnJl
ZV9pcnEodW5zaWduZWQgaW50IGlycSwgdm9pZCAqZGV2X2lkKQ0KLXsNCi0J
ZnJlZV9pcnEoaXJxLCBkZXZfaWQpOw0KLX0NCi0NCi1zdGF0aWMgX19pbmxp
bmVfXyBpbnQgaWRlX2NoZWNrX3JlZ2lvbiAoaWRlX2lvcmVnX3QgZnJvbSwg
dW5zaWduZWQgaW50IGV4dGVudCkNCi17DQotCXJldHVybiBjaGVja19yZWdp
b24oZnJvbSwgZXh0ZW50KTsNCi19DQotDQotc3RhdGljIF9faW5saW5lX18g
dm9pZCBpZGVfcmVxdWVzdF9yZWdpb24gKGlkZV9pb3JlZ190IGZyb20sIHVu
c2lnbmVkIGludCBleHRlbnQsIGNvbnN0IGNoYXIgKm5hbWUpDQotew0KLQly
ZXF1ZXN0X3JlZ2lvbihmcm9tLCBleHRlbnQsIG5hbWUpOw0KLX0NCi0NCi1z
dGF0aWMgX19pbmxpbmVfXyB2b2lkIGlkZV9yZWxlYXNlX3JlZ2lvbiAoaWRl
X2lvcmVnX3QgZnJvbSwgdW5zaWduZWQgaW50IGV4dGVudCkNCi17DQotCXJl
bGVhc2VfcmVnaW9uKGZyb20sIGV4dGVudCk7DQotfQ0KKyNkZWZpbmUgaWRl
X3JlcXVlc3RfaXJxKGlycSxoYW5kLGZsZyxkZXYsaWQpCXJlcXVlc3RfaXJx
KChpcnEpLChoYW5kKSwoZmxnKSwoZGV2KSwoaWQpKQ0KKyNkZWZpbmUgaWRl
X2ZyZWVfaXJxKGlycSxkZXZfaWQpCQlmcmVlX2lycSgoaXJxKSwgKGRldl9p
ZCkpDQorI2RlZmluZSBpZGVfY2hlY2tfcmVnaW9uKGZyb20sZXh0ZW50KQkJ
Y2hlY2tfcmVnaW9uKChmcm9tKSwgKGV4dGVudCkpDQorI2RlZmluZSBpZGVf
cmVxdWVzdF9yZWdpb24oZnJvbSxleHRlbnQsbmFtZSkJcmVxdWVzdF9yZWdp
b24oKGZyb20pLCAoZXh0ZW50KSwgKG5hbWUpKQ0KKyNkZWZpbmUgaWRlX3Jl
bGVhc2VfcmVnaW9uKGZyb20sZXh0ZW50KQkJcmVsZWFzZV9yZWdpb24oKGZy
b20pLCAoZXh0ZW50KSkNCiANCiAvKg0KICAqIFRoZSBmb2xsb3dpbmcgYXJl
IG5vdCBuZWVkZWQgZm9yIHRoZSBub24tbTY4ayBwb3J0cw0KICAqLw0KLXN0
YXRpYyBfX2lubGluZV9fIGludCBpZGVfYWNrX2ludHIgKGlkZV9pb3JlZ190
IHN0YXR1c19wb3J0LCBpZGVfaW9yZWdfdCBpcnFfcG9ydCkNCi17DQotCXJl
dHVybigxKTsNCi19DQotDQotc3RhdGljIF9faW5saW5lX18gdm9pZCBpZGVf
Zml4X2RyaXZlaWQoc3RydWN0IGhkX2RyaXZlaWQgKmlkKQ0KLXsNCi19DQot
DQotc3RhdGljIF9faW5saW5lX18gdm9pZCBpZGVfcmVsZWFzZV9sb2NrIChp
bnQgKmlkZV9sb2NrKQ0KLXsNCi19DQotDQotc3RhdGljIF9faW5saW5lX18g
dm9pZCBpZGVfZ2V0X2xvY2sgKGludCAqaWRlX2xvY2ssIHZvaWQgKCpoYW5k
bGVyKShpbnQsIHZvaWQgKiwgc3RydWN0IHB0X3JlZ3MgKiksIHZvaWQgKmRh
dGEpDQotew0KLX0NCisjZGVmaW5lIGlkZV9hY2tfaW50cihod2lmKQkJKDEp
DQorI2RlZmluZSBpZGVfZml4X2RyaXZlaWQoaWQpCQlkbyB7fSB3aGlsZSAo
MCkNCisjZGVmaW5lIGlkZV9yZWxlYXNlX2xvY2sobG9jaykJCWRvIHt9IHdo
aWxlICgwKQ0KKyNkZWZpbmUgaWRlX2dldF9sb2NrKGxvY2ssIGhkbHIsIGRh
dGEpCWRvIHt9IHdoaWxlICgwKQ0KIA0KICNlbmRpZiAvKiBfX0tFUk5FTF9f
ICovDQogDQpkaWZmIC11ck4gbGludXgtMi4xLjExNy1wcmlzdGluZS9pbmNs
dWRlL2FzbS1hcm0vYXJjaC1hcmMvaWRlLmggbGludXgvaW5jbHVkZS9hc20t
YXJtL2FyY2gtYXJjL2lkZS5oDQotLS0gbGludXgtMi4xLjExNy1wcmlzdGlu
ZS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hcmMvaWRlLmgJVGh1IEF1ZyAyMCAw
MDowOTozMSAxOTk4DQorKysgbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gt
YXJjL2lkZS5oCVRodSBBdWcgMjAgMDA6MTc6NTcgMTk5OA0KQEAgLTEzLDgg
KzEzLDcgQEANCiAjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+DQogI2luY2x1
ZGUgPGFzbS9pcnEuaD4NCiANCi1zdGF0aWMgX19pbmxpbmVfXyBpbnQNCi1p
ZGVfZGVmYXVsdF9pcnEoaWRlX2lvcmVnX3QgYmFzZSkNCitzdGF0aWMgX19p
bmxpbmVfXyBpZGVfZGVmYXVsdF9pcnEoaWRlX2lvcmVnX3QgYmFzZSkNCiB7
DQogI2lmZGVmIENPTkZJR19BUkNIX0E1Sw0KIAlpZiAoYmFzZSA9PSAweDFm
MCkNCkBAIC0yMyw4ICsyMiw3IEBADQogCXJldHVybiAwOw0KIH0NCiANCi1z
dGF0aWMgX19pbmxpbmVfXyBpZGVfaW9yZWdfdA0KLWlkZV9kZWZhdWx0X2lv
X2Jhc2UoaW50IGluZGV4KQ0KK3N0YXRpYyBfX2lubGluZV9fIGlkZV9pb3Jl
Z190IGlkZV9kZWZhdWx0X2lvX2Jhc2UoaW50IGluZGV4KQ0KIHsNCiAjaWZk
ZWYgQ09ORklHX0FSQ0hfQTVLDQogCWlmIChpbmRleCA9PSAwKQ0KQEAgLTMz
LDI1ICszMSw0NSBAQA0KIAlyZXR1cm4gMDsNCiB9DQogDQotc3RhdGljIF9f
aW5saW5lX18gaW50DQotaWRlX2RlZmF1bHRfc3RlcHBpbmcoaW50IGluZGV4
KQ0KK3N0YXRpYyBfX2lubGluZV9fIGludCBpZGVfZGVmYXVsdF9zdGVwcGlu
ZyhpbnQgaW5kZXgpDQogew0KIAlyZXR1cm4gMDsNCiB9DQogDQotc3RhdGlj
IF9faW5saW5lX18gdm9pZA0KLWlkZV9pbml0X2h3aWZfcG9ydHMgKGlkZV9p
b3JlZ190ICpwLCBpZGVfaW9yZWdfdCBiYXNlLCBpbnQgc3RlcHBpbmcsIGlu
dCAqaXJxKQ0KKy8qDQorICogU2V0IHVwIGEgaHcgc3RydWN0dXJlIGZvciBh
IHNwZWNpZmllZCBkYXRhIHBvcnQsIGNvbnRyb2wgcG9ydCBhbmQgSVJRLg0K
KyAqIFRoaXMgc2hvdWxkIGZvbGxvdyB3aGF0ZXZlciB0aGUgZGVmYXVsdCBp
bnRlcmZhY2UgdXNlcy4NCisgKi8NCitzdGF0aWMgX19pbmxpbmVfXyB2b2lk
IGlkZV9pbml0X2h3aWZfcG9ydHMgKAlod19yZWdzX3QgKmh3LA0KKwkJCQkJ
CWludCBkYXRhX3BvcnQsDQorCQkJCQkJaW50IGN0cmxfcG9ydCwNCisJCQkJ
CQlpbnQgKmlycSkNCiB7DQotCWlkZV9pb3JlZ190IHBvcnQgPSBiYXNlOw0K
LQlpZGVfaW9yZWdfdCBjdHJsID0gYmFzZSArIDB4MjA2Ow0KKwlpZGVfaW9y
ZWdfdCByZWcgPSAoaWRlX2lvcmVnX3QpIGRhdGFfcG9ydDsNCiAJaW50IGk7
DQogDQotCWkgPSA4Ow0KLQl3aGlsZSAoaS0tKSB7DQotCQkqcCsrID0gcG9y
dDsNCi0JCXBvcnQgKz0gMSA8PCBzdGVwcGluZzsNCisJZm9yIChpID0gSURF
X0RBVEFfT0ZGU0VUOyBpIDw9IElERV9TVEFUVVNfT0ZGU0VUOyBpKyspIHsN
CisJCWh3LT5pb19wb3J0c1tpXSA9IHJlZzsNCisJCXJlZyArPSAxOw0KIAl9
DQotCSpwKysgPSBjdHJsOw0KLQlpZiAoaXJxICE9IE5VTEwpDQotCQkqaXJx
ID0gMDsNCisJaHctPmlvX3BvcnRzW0lERV9DT05UUk9MX09GRlNFVF0gPSAo
aWRlX2lvcmVnX3QpIGN0cmxfcG9ydDsNCisJaHctPmlycSA9ICppcnE7DQog
fQ0KKw0KKy8qDQorICogVGhpcyByZWdpc3RlcnMgdGhlIHN0YW5kYXJkIHBv
cnRzIGZvciB0aGlzIGFyY2hpdGVjdHVyZSB3aXRoIHRoZSBJREUNCisgKiBk
cml2ZXIuDQorICovDQorc3RhdGljIF9faW5saW5lX18gdm9pZCBpZGVfaW5p
dF9kZWZhdWx0X2h3aWZzKHZvaWQpDQorew0KKyNpZmRlZiBDT05GSUdfQVJD
SF9BNUsNCisJaHdfcmVnc190IGh3Ow0KKw0KKwltZW1zZXQoJmh3LCAwLCBz
aXplb2YoaHcpKTsNCisNCisJaWRlX2luaXRfaHdpZl9wb3J0cygmaHcsIDB4
MWYwLCAweDNmNiwgTlVMTCk7DQorCWh3LmlycSA9IElSUV9IQVJERElTSzsN
CisJaWRlX3JlZ2lzdGVyX2h3KCZodywgTlVMTCk7DQorI2VuZGlmDQorfQ0K
Kw0KZGlmZiAtdXJOIGxpbnV4LTIuMS4xMTctcHJpc3RpbmUvaW5jbHVkZS9h
c20tYXJtL2FyY2gtcnBjL2lkZS5oIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9h
cmNoLXJwYy9pZGUuaA0KLS0tIGxpbnV4LTIuMS4xMTctcHJpc3RpbmUvaW5j
bHVkZS9hc20tYXJtL2FyY2gtcnBjL2lkZS5oCVRodSBBdWcgMjAgMDA6MDk6
MzIgMTk5OA0KKysrIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLXJwYy9p
ZGUuaAlUaHUgQXVnIDIwIDAwOjE3OjU4IDE5OTgNCkBAIC01LDQxICs1LDU4
IEBADQogICovDQogI2luY2x1ZGUgPGFzbS9pcnEuaD4NCiANCi1zdGF0aWMg
X19pbmxpbmVfXyBpbnQNCi1pZGVfZGVmYXVsdF9pcnEoaWRlX2lvcmVnX3Qg
YmFzZSkNCitzdGF0aWMgX19pbmxpbmVfXyBpbnQgaWRlX2RlZmF1bHRfaXJx
KGlkZV9pb3JlZ190IGJhc2UpDQogew0KIAlpZiAoYmFzZSA9PSAweDFmMCkN
CiAJCXJldHVybiBJUlFfSEFSRERJU0s7DQogCXJldHVybiAwOw0KIH0NCiAN
Ci1zdGF0aWMgX19pbmxpbmVfXyBpZGVfaW9yZWdfdA0KLWlkZV9kZWZhdWx0
X2lvX2Jhc2UoaW50IGluZGV4KQ0KK3N0YXRpYyBfX2lubGluZV9fIGlkZV9p
b3JlZ190IGlkZV9kZWZhdWx0X2lvX2Jhc2UoaW50IGluZGV4KQ0KIHsNCiAJ
aWYgKGluZGV4ID09IDApDQogCQlyZXR1cm4gMHgxZjA7DQogCXJldHVybiAw
Ow0KIH0NCiANCi1zdGF0aWMgX19pbmxpbmVfXyBpbnQNCi1pZGVfZGVmYXVs
dF9zdGVwcGluZyhpbnQgaW5kZXgpDQorc3RhdGljIF9faW5saW5lX18gaW50
IGlkZV9kZWZhdWx0X3N0ZXBwaW5nKGludCBpbmRleCkNCiB7DQogCXJldHVy
biAwOw0KIH0NCiANCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkDQotaWRlX2lu
aXRfaHdpZl9wb3J0cyAoaWRlX2lvcmVnX3QgKnAsIGlkZV9pb3JlZ190IGJh
c2UsIGludCBzdGVwcGluZywgaW50ICppcnEpDQorLyoNCisgKiBTZXQgdXAg
YSBodyBzdHJ1Y3R1cmUgZm9yIGEgc3BlY2lmaWVkIGRhdGEgcG9ydCwgY29u
dHJvbCBwb3J0IGFuZCBJUlEuDQorICogVGhpcyBzaG91bGQgZm9sbG93IHdo
YXRldmVyIHRoZSBkZWZhdWx0IGludGVyZmFjZSB1c2VzLg0KKyAqLw0KKw0K
K3N0YXRpYyBfX2lubGluZV9fIHZvaWQgaWRlX2luaXRfaHdpZl9wb3J0cyAo
CWh3X3JlZ3NfdCAqaHcsDQorCQkJCQkJaW50IGRhdGFfcG9ydCwNCisJCQkJ
CQlpbnQgY3RybF9wb3J0LA0KKwkJCQkJCWludCAqaXJxKQ0KIHsNCi0JaWRl
X2lvcmVnX3QgcG9ydCA9IGJhc2U7DQotCWlkZV9pb3JlZ190IGN0cmwgPSBi
YXNlICsgMHgyMDY7DQorCWlkZV9pb3JlZ190IHJlZyA9IChpZGVfaW9yZWdf
dCkgZGF0YV9wb3J0Ow0KIAlpbnQgaTsNCiANCi0JaSA9IDg7DQotCXdoaWxl
IChpLS0pIHsNCi0JCSpwKysgPSBwb3J0Ow0KLQkJcG9ydCArPSAxIDw8IHN0
ZXBwaW5nOw0KKwlmb3IgKGkgPSBJREVfREFUQV9PRkZTRVQ7IGkgPD0gSURF
X1NUQVRVU19PRkZTRVQ7IGkrKykgew0KKwkJaHctPmlvX3BvcnRzW2ldID0g
cmVnOw0KKwkJcmVnICs9IDE7DQogCX0NCi0JKnArKyA9IGN0cmw7DQotCWlm
IChpcnEgIT0gTlVMTCkNCi0JCSppcnEgPSAwOw0KKwlody0+aW9fcG9ydHNb
SURFX0NPTlRST0xfT0ZGU0VUXSA9IChpZGVfaW9yZWdfdCkgY3RybF9wb3J0
Ow0KKwlody0+aXJxID0gKmlycTsNCiB9DQorDQorLyoNCisgKiBUaGlzIHJl
Z2lzdGVycyB0aGUgc3RhbmRhcmQgcG9ydHMgZm9yIHRoaXMgYXJjaGl0ZWN0
dXJlIHdpdGggdGhlIElERQ0KKyAqIGRyaXZlci4NCisgKi8NCitzdGF0aWMg
X19pbmxpbmVfXyB2b2lkIGlkZV9pbml0X2RlZmF1bHRfaHdpZnModm9pZCkN
Cit7DQorCWh3X3JlZ3NfdCBodzsNCisNCisJbWVtc2V0KCZodywgMCwgc2l6
ZW9mKGh3KSk7DQorDQorCWlkZV9pbml0X2h3aWZfcG9ydHMoJmh3LCAweDFm
MCwgMHgzZjYsIE5VTEwpOw0KKwlody5pcnEgPSBJUlFfSEFSRERJU0s7DQor
CWlkZV9yZWdpc3Rlcl9odygmaHcsIE5VTEwpOw0KK30NCisNCmRpZmYgLXVy
TiBsaW51eC0yLjEuMTE3LXByaXN0aW5lL2luY2x1ZGUvYXNtLWFybS9oZHJl
Zy5oIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9oZHJlZy5oDQotLS0gbGludXgt
Mi4xLjExNy1wcmlzdGluZS9pbmNsdWRlL2FzbS1hcm0vaGRyZWcuaAlXZWQg
RGVjIDMxIDE4OjAwOjAwIDE5NjkNCisrKyBsaW51eC9pbmNsdWRlL2FzbS1h
cm0vaGRyZWcuaAlUaHUgQXVnIDIwIDAwOjE4OjAzIDE5OTgNCkBAIC0wLDAg
KzEsMTMgQEANCisvKg0KKyAqICBsaW51eC9pbmNsdWRlL2FzbS1hcm0vaGRy
ZWcuaA0KKyAqDQorICogIENvcHlyaWdodCAoQykgMTk5NC0xOTk2ICBMaW51
cyBUb3J2YWxkcyAmIGF1dGhvcnMNCisgKi8NCisNCisjaWZuZGVmIF9fQVNN
QVJNX0hEUkVHX0gNCisjZGVmaW5lIF9fQVNNQVJNX0hEUkVHX0gNCisNCit0
eXBlZGVmIHVuc2lnbmVkIGxvbmcgaWRlX2lvcmVnX3Q7DQorDQorI2VuZGlm
IC8qIF9fQVNNQVJNX0hEUkVHX0ggKi8NCisNCmRpZmYgLXVyTiBsaW51eC0y
LjEuMTE3LXByaXN0aW5lL2luY2x1ZGUvYXNtLWFybS9pZGUuaCBsaW51eC9p
bmNsdWRlL2FzbS1hcm0vaWRlLmgNCi0tLSBsaW51eC0yLjEuMTE3LXByaXN0
aW5lL2luY2x1ZGUvYXNtLWFybS9pZGUuaAlUaHUgQXVnIDIwIDAwOjA5OjMx
IDE5OTgNCisrKyBsaW51eC9pbmNsdWRlL2FzbS1hcm0vaWRlLmgJVGh1IEF1
ZyAyMCAwMDoxNzo1NyAxOTk4DQpAQCAtMTMsOCArMTMsNiBAQA0KIA0KICNp
ZmRlZiBfX0tFUk5FTF9fDQogDQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGlk
ZV9pb3JlZ190Ow0KLQ0KICNpZm5kZWYgTUFYX0hXSUZTDQogI2RlZmluZSBN
QVhfSFdJRlMJNA0KICNlbmRpZg0KQEAgLTM0LDUyICszMiwyMSBAQA0KIAl9
IGI7DQogCX0gc2VsZWN0X3Q7DQogDQotc3RhdGljIF9faW5saW5lX18gaW50
IGlkZV9yZXF1ZXN0X2lycSh1bnNpZ25lZCBpbnQgaXJxLCB2b2lkICgqaGFu
ZGxlcikoaW50LCB2b2lkICosIHN0cnVjdCBwdF9yZWdzICopLA0KLQkJCXVu
c2lnbmVkIGxvbmcgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldmljZSwgdm9pZCAq
ZGV2X2lkKQ0KLXsNCi0JcmV0dXJuIHJlcXVlc3RfaXJxKGlycSwgaGFuZGxl
ciwgZmxhZ3MsIGRldmljZSwgZGV2X2lkKTsNCi19CQkJDQotDQotc3RhdGlj
IF9faW5saW5lX18gdm9pZCBpZGVfZnJlZV9pcnEodW5zaWduZWQgaW50IGly
cSwgdm9pZCAqZGV2X2lkKQ0KLXsNCi0JZnJlZV9pcnEoaXJxLCBkZXZfaWQp
Ow0KLX0NCi0NCi1zdGF0aWMgX19pbmxpbmVfXyBpbnQgaWRlX2NoZWNrX3Jl
Z2lvbiAoaWRlX2lvcmVnX3QgZnJvbSwgdW5zaWduZWQgaW50IGV4dGVudCkN
Ci17DQotCXJldHVybiBjaGVja19yZWdpb24oZnJvbSwgZXh0ZW50KTsNCi19
DQotDQotc3RhdGljIF9faW5saW5lX18gdm9pZCBpZGVfcmVxdWVzdF9yZWdp
b24gKGlkZV9pb3JlZ190IGZyb20sIHVuc2lnbmVkIGludCBleHRlbnQsIGNv
bnN0IGNoYXIgKm5hbWUpDQotew0KLQlyZXF1ZXN0X3JlZ2lvbihmcm9tLCBl
eHRlbnQsIG5hbWUpOw0KLX0NCi0NCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lk
IGlkZV9yZWxlYXNlX3JlZ2lvbiAoaWRlX2lvcmVnX3QgZnJvbSwgdW5zaWdu
ZWQgaW50IGV4dGVudCkNCi17DQotCXJlbGVhc2VfcmVnaW9uKGZyb20sIGV4
dGVudCk7DQotfQ0KKw0KKyNkZWZpbmUgaWRlX3JlcXVlc3RfaXJxKGlycSxo
YW5kLGZsZyxkZXYsaWQpCXJlcXVlc3RfaXJxKChpcnEpLChoYW5kKSwoZmxn
KSwoZGV2KSwoaWQpKQ0KKyNkZWZpbmUgaWRlX2ZyZWVfaXJxKGlycSxkZXZf
aWQpCQlmcmVlX2lycSgoaXJxKSwgKGRldl9pZCkpDQorI2RlZmluZSBpZGVf
Y2hlY2tfcmVnaW9uKGZyb20sZXh0ZW50KQkJY2hlY2tfcmVnaW9uKChmcm9t
KSwgKGV4dGVudCkpDQorI2RlZmluZSBpZGVfcmVxdWVzdF9yZWdpb24oZnJv
bSxleHRlbnQsbmFtZSkJcmVxdWVzdF9yZWdpb24oKGZyb20pLCAoZXh0ZW50
KSwgKG5hbWUpKQ0KKyNkZWZpbmUgaWRlX3JlbGVhc2VfcmVnaW9uKGZyb20s
ZXh0ZW50KQkJcmVsZWFzZV9yZWdpb24oKGZyb20pLCAoZXh0ZW50KSkNCiAN
CiAvKg0KICAqIFRoZSBmb2xsb3dpbmcgYXJlIG5vdCBuZWVkZWQgZm9yIHRo
ZSBub24tbTY4ayBwb3J0cw0KICAqLw0KLXN0YXRpYyBfX2lubGluZV9fIGlu
dCBpZGVfYWNrX2ludHIgKGlkZV9pb3JlZ190IHN0YXR1c19wb3J0LCBpZGVf
aW9yZWdfdCBpcnFfcG9ydCkNCi17DQotCXJldHVybigxKTsNCi19DQotDQot
c3RhdGljIF9faW5saW5lX18gdm9pZCBpZGVfZml4X2RyaXZlaWQoc3RydWN0
IGhkX2RyaXZlaWQgKmlkKQ0KLXsNCi19DQotDQotc3RhdGljIF9faW5saW5l
X18gdm9pZCBpZGVfcmVsZWFzZV9sb2NrIChpbnQgKmlkZV9sb2NrKQ0KLXsN
Ci19DQotDQotc3RhdGljIF9faW5saW5lX18gdm9pZCBpZGVfZ2V0X2xvY2sg
KGludCAqaWRlX2xvY2ssIHZvaWQgKCpoYW5kbGVyKShpbnQsIHZvaWQgKiwg
c3RydWN0IHB0X3JlZ3MgKiksIHZvaWQgKmRhdGEpDQotew0KLX0NCisjZGVm
aW5lIGlkZV9hY2tfaW50cihod2lmKQkJKDEpDQorI2RlZmluZSBpZGVfZml4
X2RyaXZlaWQoaWQpCQlkbyB7fSB3aGlsZSAoMCkNCisjZGVmaW5lIGlkZV9y
ZWxlYXNlX2xvY2sobG9jaykJCWRvIHt9IHdoaWxlICgwKQ0KKyNkZWZpbmUg
aWRlX2dldF9sb2NrKGxvY2ssIGhkbHIsIGRhdGEpCWRvIHt9IHdoaWxlICgw
KQ0KIA0KICNlbmRpZiAvKiBfX0tFUk5FTF9fICovDQogDQotI2VuZGlmIC8q
IF9fQVNNaTM4Nl9JREVfSCAqLw0KKyNlbmRpZiAvKiBfX0FTTUFSTV9JREVf
SCAqLw0KZGlmZiAtdXJOIGxpbnV4LTIuMS4xMTctcHJpc3RpbmUvaW5jbHVk
ZS9hc20taTM4Ni9oZHJlZy5oIGxpbnV4L2luY2x1ZGUvYXNtLWkzODYvaGRy
ZWcuaA0KLS0tIGxpbnV4LTIuMS4xMTctcHJpc3RpbmUvaW5jbHVkZS9hc20t
aTM4Ni9oZHJlZy5oCVdlZCBEZWMgMzEgMTg6MDA6MDAgMTk2OQ0KKysrIGxp
bnV4L2luY2x1ZGUvYXNtLWkzODYvaGRyZWcuaAlUaHUgQXVnIDIwIDAwOjE3
OjU0IDE5OTgNCkBAIC0wLDAgKzEsMTIgQEANCisvKg0KKyAqICBsaW51eC9p
bmNsdWRlL2FzbS1pMzg2L2hkcmVnLmgNCisgKg0KKyAqICBDb3B5cmlnaHQg
KEMpIDE5OTQtMTk5NiAgTGludXMgVG9ydmFsZHMgJiBhdXRob3JzDQorICov
DQorDQorI2lmbmRlZiBfX0FTTWkzODZfSERSRUdfSA0KKyNkZWZpbmUgX19B
U01pMzg2X0hEUkVHX0gNCisNCit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGlk
ZV9pb3JlZ190Ow0KKw0KKyNlbmRpZiAvKiBfX0FTTWkzODZfSERSRUdfSCAq
Lw0KZGlmZiAtdXJOIGxpbnV4LTIuMS4xMTctcHJpc3RpbmUvaW5jbHVkZS9h
c20taTM4Ni9pZGUuaCBsaW51eC9pbmNsdWRlL2FzbS1pMzg2L2lkZS5oDQot
LS0gbGludXgtMi4xLjExNy1wcmlzdGluZS9pbmNsdWRlL2FzbS1pMzg2L2lk
ZS5oCVRodSBBdWcgMjAgMDA6MDk6MjggMTk5OA0KKysrIGxpbnV4L2luY2x1
ZGUvYXNtLWkzODYvaWRlLmgJVGh1IEF1ZyAyMCAwMDoxNzo1NCAxOTk4DQpA
QCAtMTMsOCArMTMsNiBAQA0KIA0KICNpZmRlZiBfX0tFUk5FTF9fDQogDQot
dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpZGVfaW9yZWdfdDsNCi0NCiAjaWZu
ZGVmIE1BWF9IV0lGUw0KICNkZWZpbmUgTUFYX0hXSUZTCTYNCiAjZW5kaWYN
CkBAIC00OSwxOCArNDcsNDcgQEANCiAJfQ0KIH0NCiANCi1zdGF0aWMgX19p
bmxpbmVfXyB2b2lkIGlkZV9pbml0X2h3aWZfcG9ydHMgKGlkZV9pb3JlZ190
ICpwLCBpZGVfaW9yZWdfdCBiYXNlLCBpbnQgKmlycSkNCi17DQotCWlkZV9p
b3JlZ190IHBvcnQgPSBiYXNlOw0KLQlpbnQgaSA9IDg7DQotDQotCXdoaWxl
IChpLS0pDQotCQkqcCsrID0gcG9ydCsrOw0KLQkqcCsrID0gYmFzZSArIDB4
MjA2Ow0KK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgaWRlX2luaXRfaHdpZl9w
b3J0cyAoCWh3X3JlZ3NfdCAqaHcsDQorCQkJCQkJaW50IGRhdGFfcG9ydCwN
CisJCQkJCQlpbnQgY3RybF9wb3J0LA0KKwkJCQkJCWludCAqaXJxKQ0KK3sN
CisJaWRlX2lvcmVnX3QgcmVnID0gKGlkZV9pb3JlZ190KSBkYXRhX3BvcnQ7
DQorCWludCBpOw0KKw0KKwlmb3IgKGkgPSBJREVfREFUQV9PRkZTRVQ7IGkg
PD0gSURFX1NUQVRVU19PRkZTRVQ7IGkrKykgew0KKwkJaHctPmlvX3BvcnRz
W2ldID0gcmVnOw0KKwkJcmVnICs9IDE7DQorCX0NCisJaWYgKGN0cmxfcG9y
dCkgew0KKwkJaHctPmlvX3BvcnRzW0lERV9DT05UUk9MX09GRlNFVF0gPSAo
aWRlX2lvcmVnX3QpIGN0cmxfcG9ydDsNCisJfSBlbHNlIHsNCisJCWh3LT5p
b19wb3J0c1tJREVfQ09OVFJPTF9PRkZTRVRdID0gaHctPmlvX3BvcnRzW0lE
RV9EQVRBX09GRlNFVF0gKyAweDIwNjsNCisJfQ0KIAlpZiAoaXJxICE9IE5V
TEwpDQogCQkqaXJxID0gMDsNCiB9DQogDQorc3RhdGljIF9faW5saW5lX18g
dm9pZCBpZGVfaW5pdF9kZWZhdWx0X2h3aWZzKHZvaWQpDQorew0KKyNpZmRl
ZiBfX0RPX0lfTkVFRF9USElTDQorCWh3X3JlZ3NfdCBodzsNCisNCisJaWRl
X2luaXRfaHdpZl9wb3J0cygmaHcsIDB4MWYwLCAweDNmNiwgMTQpOw0KKwlp
ZGVfcmVnaXN0ZXJfaHcoJmh3LCBOVUxMKTsNCisJaWRlX2luaXRfaHdpZl9w
b3J0cygmaHcsIDB4MTcwLCAweDM3NiwgMTUpOw0KKwlpZGVfcmVnaXN0ZXJf
aHcoJmh3LCBOVUxMKTsNCisJaWRlX2luaXRfaHdpZl9wb3J0cygmaHcsIDB4
MWU4LCAweDNlZSwgMTEpOw0KKwlpZGVfcmVnaXN0ZXJfaHcoJmh3LCBOVUxM
KTsNCisJaWRlX2luaXRfaHdpZl9wb3J0cygmaHcsIDB4MTY4LCAweDM2ZSwg
MTApOw0KKwlpZGVfcmVnaXN0ZXJfaHcoJmh3LCBOVUxMKTsNCisJaWRlX2lu
aXRfaHdpZl9wb3J0cygmaHcsIDB4MWUwLCAweDNlNiwgOCk7DQorCWlkZV9y
ZWdpc3Rlcl9odygmaHcsIE5VTEwpOw0KKwlpZGVfaW5pdF9od2lmX3BvcnRz
KCZodywgMHgxNjAsIDB4MzY2LCAxMik7DQorCWlkZV9yZWdpc3Rlcl9odygm
aHcsIE5VTEwpOw0KKyNlbmRpZiAvKiBfX0RPX0lfTkVFRF9USElTICovDQor
fQ0KKw0KIHR5cGVkZWYgdW5pb24gew0KIAl1bnNpZ25lZCBhbGwJCQk6IDg7
CS8qIGFsbCBvZiB0aGUgYml0cyB0b2dldGhlciAqLw0KIAlzdHJ1Y3Qgew0K
QEAgLTcyLDUxICs5OSwxOSBAQA0KIAl9IGI7DQogCX0gc2VsZWN0X3Q7DQog
DQotc3RhdGljIF9faW5saW5lX18gaW50IGlkZV9yZXF1ZXN0X2lycSh1bnNp
Z25lZCBpbnQgaXJxLCB2b2lkICgqaGFuZGxlcikoaW50LCB2b2lkICosIHN0
cnVjdCBwdF9yZWdzICopLA0KLQkJCXVuc2lnbmVkIGxvbmcgZmxhZ3MsIGNv
bnN0IGNoYXIgKmRldmljZSwgdm9pZCAqZGV2X2lkKQ0KLXsNCi0JcmV0dXJu
IHJlcXVlc3RfaXJxKGlycSwgaGFuZGxlciwgZmxhZ3MsIGRldmljZSwgZGV2
X2lkKTsNCi19CQkJDQotDQotc3RhdGljIF9faW5saW5lX18gdm9pZCBpZGVf
ZnJlZV9pcnEodW5zaWduZWQgaW50IGlycSwgdm9pZCAqZGV2X2lkKQ0KLXsN
Ci0JZnJlZV9pcnEoaXJxLCBkZXZfaWQpOw0KLX0NCi0NCi1zdGF0aWMgX19p
bmxpbmVfXyBpbnQgaWRlX2NoZWNrX3JlZ2lvbiAoaWRlX2lvcmVnX3QgZnJv
bSwgdW5zaWduZWQgaW50IGV4dGVudCkNCi17DQotCXJldHVybiBjaGVja19y
ZWdpb24oZnJvbSwgZXh0ZW50KTsNCi19DQotDQotc3RhdGljIF9faW5saW5l
X18gdm9pZCBpZGVfcmVxdWVzdF9yZWdpb24gKGlkZV9pb3JlZ190IGZyb20s
IHVuc2lnbmVkIGludCBleHRlbnQsIGNvbnN0IGNoYXIgKm5hbWUpDQotew0K
LQlyZXF1ZXN0X3JlZ2lvbihmcm9tLCBleHRlbnQsIG5hbWUpOw0KLX0NCi0N
Ci1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIGlkZV9yZWxlYXNlX3JlZ2lvbiAo
aWRlX2lvcmVnX3QgZnJvbSwgdW5zaWduZWQgaW50IGV4dGVudCkNCi17DQot
CXJlbGVhc2VfcmVnaW9uKGZyb20sIGV4dGVudCk7DQotfQ0KKyNkZWZpbmUg
aWRlX3JlcXVlc3RfaXJxKGlycSxoYW5kLGZsZyxkZXYsaWQpCXJlcXVlc3Rf
aXJxKChpcnEpLChoYW5kKSwoZmxnKSwoZGV2KSwoaWQpKQ0KKyNkZWZpbmUg
aWRlX2ZyZWVfaXJxKGlycSxkZXZfaWQpCQlmcmVlX2lycSgoaXJxKSwgKGRl
dl9pZCkpDQorI2RlZmluZSBpZGVfY2hlY2tfcmVnaW9uKGZyb20sZXh0ZW50
KQkJY2hlY2tfcmVnaW9uKChmcm9tKSwgKGV4dGVudCkpDQorI2RlZmluZSBp
ZGVfcmVxdWVzdF9yZWdpb24oZnJvbSxleHRlbnQsbmFtZSkJcmVxdWVzdF9y
ZWdpb24oKGZyb20pLCAoZXh0ZW50KSwgKG5hbWUpKQ0KKyNkZWZpbmUgaWRl
X3JlbGVhc2VfcmVnaW9uKGZyb20sZXh0ZW50KQkJcmVsZWFzZV9yZWdpb24o
KGZyb20pLCAoZXh0ZW50KSkNCiANCiAvKg0KICAqIFRoZSBmb2xsb3dpbmcg
YXJlIG5vdCBuZWVkZWQgZm9yIHRoZSBub24tbTY4ayBwb3J0cw0KICAqLw0K
LXN0YXRpYyBfX2lubGluZV9fIGludCBpZGVfYWNrX2ludHIgKGlkZV9pb3Jl
Z190IHN0YXR1c19wb3J0LCBpZGVfaW9yZWdfdCBpcnFfcG9ydCkNCi17DQot
CXJldHVybigxKTsNCi19DQotDQotc3RhdGljIF9faW5saW5lX18gdm9pZCBp
ZGVfZml4X2RyaXZlaWQoc3RydWN0IGhkX2RyaXZlaWQgKmlkKQ0KLXsNCi19
DQotDQotc3RhdGljIF9faW5saW5lX18gdm9pZCBpZGVfcmVsZWFzZV9sb2Nr
IChpbnQgKmlkZV9sb2NrKQ0KLXsNCi19DQotDQotc3RhdGljIF9faW5saW5l
X18gdm9pZCBpZGVfZ2V0X2xvY2sgKGludCAqaWRlX2xvY2ssIHZvaWQgKCpo
YW5kbGVyKShpbnQsIHZvaWQgKiwgc3RydWN0IHB0X3JlZ3MgKiksIHZvaWQg
KmRhdGEpDQotew0KLX0NCisjZGVmaW5lIGlkZV9hY2tfaW50cihod2lmKQkJ
KDEpDQorI2RlZmluZSBpZGVfZml4X2RyaXZlaWQoaWQpCQlkbyB7fSB3aGls
ZSAoMCkNCisjZGVmaW5lIGlkZV9yZWxlYXNlX2xvY2sobG9jaykJCWRvIHt9
IHdoaWxlICgwKQ0KKyNkZWZpbmUgaWRlX2dldF9sb2NrKGxvY2ssIGhkbHIs
IGRhdGEpCWRvIHt9IHdoaWxlICgwKQ0KIA0KICNlbmRpZiAvKiBfX0tFUk5F
TF9fICovDQogDQpkaWZmIC11ck4gbGludXgtMi4xLjExNy1wcmlzdGluZS9p
bmNsdWRlL2FzbS1tNjhrL2hkcmVnLmggbGludXgvaW5jbHVkZS9hc20tbTY4
ay9oZHJlZy5oDQotLS0gbGludXgtMi4xLjExNy1wcmlzdGluZS9pbmNsdWRl
L2FzbS1tNjhrL2hkcmVnLmgJV2VkIERlYyAzMSAxODowMDowMCAxOTY5DQor
KysgbGludXgvaW5jbHVkZS9hc20tbTY4ay9oZHJlZy5oCVRodSBBdWcgMjAg
MDA6MTc6NTQgMTk5OA0KQEAgLTAsMCArMSwxMiBAQA0KKy8qDQorICogIGxp
bnV4L2luY2x1ZGUvYXNtLW02OGsvaGRyZWcuaA0KKyAqDQorICogIENvcHly
aWdodCAoQykgMTk5NC0xOTk2ICBMaW51cyBUb3J2YWxkcyAmIGF1dGhvcnMN
CisgKi8NCisNCisjaWZuZGVmIF9NNjhLX0hEUkVHX0gNCisjZGVmaW5lIF9N
NjhLX0hEUkVHX0gNCisNCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgKiBpZGVf
aW9yZWdfdDsNCisNCisjZW5kaWYgLyogX002OEtfSERSRUdfSCAqLw0KZGlm
ZiAtdXJOIGxpbnV4LTIuMS4xMTctcHJpc3RpbmUvaW5jbHVkZS9hc20tbTY4
ay9pZGUuaCBsaW51eC9pbmNsdWRlL2FzbS1tNjhrL2lkZS5oDQotLS0gbGlu
dXgtMi4xLjExNy1wcmlzdGluZS9pbmNsdWRlL2FzbS1tNjhrL2lkZS5oCVRo
dSBBdWcgMjAgMDA6MDk6MjkgMTk5OA0KKysrIGxpbnV4L2luY2x1ZGUvYXNt
LW02OGsvaWRlLmgJVGh1IEF1ZyAyMCAwMDoxNzo1NCAxOTk4DQpAQCAtNDUs
OCArNDUsNiBAQA0KICNpbmNsdWRlIDxhc20vbWFjaW50cy5oPg0KICNlbmRp
Zg0KIA0KLXR5cGVkZWYgdW5zaWduZWQgY2hhciAqIGlkZV9pb3JlZ190Ow0K
LQ0KICNpZm5kZWYgTUFYX0hXSUZTDQogI2RlZmluZSBNQVhfSFdJRlMJNAkv
KiBzYW1lIGFzIHRoZSBvdGhlciBhcmNocyAqLw0KICNlbmRpZg0KQEAgLTU3
LDExICs1NSw0MCBAQA0KIH0NCiANCiAvKg0KLSAqICBDYW4gd2UgZG8gdGhp
cyBpbiBhIGdlbmVyaWMgbWFubmVyPz8NCisgKiBTZXQgdXAgYSBodyBzdHJ1
Y3R1cmUgZm9yIGEgc3BlY2lmaWVkIGRhdGEgcG9ydCwgY29udHJvbCBwb3J0
IGFuZCBJUlEuDQorICogVGhpcyBzaG91bGQgZm9sbG93IHdoYXRldmVyIHRo
ZSBkZWZhdWx0IGludGVyZmFjZSB1c2VzLg0KKyAqLw0KK3N0YXRpYyBfX2lu
bGluZV9fIHZvaWQgaWRlX2luaXRfaHdpZl9wb3J0cyAoCWh3X3JlZ3NfdCAq
aHcsDQorCQkJCQkJaW50IGRhdGFfcG9ydCwNCisJCQkJCQlpbnQgY3RybF9w
b3J0LA0KKwkJCQkJCWludCAqaXJxKQ0KK3sNCisJcHJpbnRrKCJpZGVfaW5p
dF9od2lmX3BvcnRzOiBtdXN0IG5vdCBiZSBjYWxsZWRcbiIpOw0KKw0KKyNp
ZmRlZiBfX05FV19JREVfU1RVRkYNCisJaWRlX2lvcmVnX3QgcmVnID0gKGlk
ZV9pb3JlZ190KSBkYXRhX3BvcnQ7DQorCWludCBpOw0KKw0KKwlmb3IgKGkg
PSBJREVfREFUQV9PRkZTRVQ7IGkgPD0gSURFX1NUQVRVU19PRkZTRVQ7IGkr
Kykgew0KKwkJaHctPmlvX3BvcnRzW2ldID0gcmVnOw0KKwkJcmVnICs9IDE7
DQorCX0NCisJaWYgKGN0cmxfcG9ydCkgew0KKwkJaHctPmlvX3BvcnRzW0lE
RV9DT05UUk9MX09GRlNFVF0gPSAoaWRlX2lvcmVnX3QpIGN0cmxfcG9ydDsN
CisJfSBlbHNlIHsNCisJCWh3LT5pb19wb3J0c1tJREVfQ09OVFJPTF9PRkZT
RVRdID0gaHctPmlvX3BvcnRzW0lERV9EQVRBX09GRlNFVF0gKyAweDIwNjsN
CisJfQ0KKwlpZiAoaXJxICE9IE5VTEwpDQorCQkqaXJxID0gMDsNCisjZW5k
aWYgLyogX19ORVdfSURFX1NUVUZGICovDQorfQ0KKw0KKy8qDQorICogVGhp
cyByZWdpc3RlcnMgdGhlIHN0YW5kYXJkIHBvcnRzIGZvciB0aGlzIGFyY2hp
dGVjdHVyZSB3aXRoIHRoZSBJREUNCisgKiBkcml2ZXIuDQogICovDQotc3Rh
dGljIF9faW5saW5lX18gdm9pZCBpZGVfaW5pdF9od2lmX3BvcnRzIChpZGVf
aW9yZWdfdCAqcCwgaWRlX2lvcmVnX3QgYmFzZSwgaW50ICppcnEpDQorc3Rh
dGljIF9faW5saW5lX18gdm9pZCBpZGVfaW5pdF9kZWZhdWx0X2h3aWZzKHZv
aWQpDQogew0KLSAgICBwcmludGsoImlkZV9pbml0X2h3aWZfcG9ydHM6IG11
c3Qgbm90IGJlIGNhbGxlZFxuIik7DQogfQ0KIA0KIHR5cGVkZWYgdW5pb24g
ew0KZGlmZiAtdXJOIGxpbnV4LTIuMS4xMTctcHJpc3RpbmUvaW5jbHVkZS9h
c20tbWlwcy9oZHJlZy5oIGxpbnV4L2luY2x1ZGUvYXNtLW1pcHMvaGRyZWcu
aA0KLS0tIGxpbnV4LTIuMS4xMTctcHJpc3RpbmUvaW5jbHVkZS9hc20tbWlw
cy9oZHJlZy5oCVdlZCBEZWMgMzEgMTg6MDA6MDAgMTk2OQ0KKysrIGxpbnV4
L2luY2x1ZGUvYXNtLW1pcHMvaGRyZWcuaAlUaHUgQXVnIDIwIDAwOjE3OjU0
IDE5OTgNCkBAIC0wLDAgKzEsMTggQEANCisvKiAkSWQ6IGhkcmVnLmgsdiAx
LjQgMTk5OC8wNS8wOCAyMTowNToyNiBkYXZlbSBFeHAgJA0KKyAqDQorICog
IGxpbnV4L2luY2x1ZGUvYXNtLW1pcHMvaGRyZWcuaA0KKyAqDQorICogIENv
cHlyaWdodCAoQykgMTk5NC0xOTk2ICBMaW51cyBUb3J2YWxkcyAmIGF1dGhv
cnMNCisgKi8NCisNCisvKg0KKyAqICBUaGlzIGZpbGUgY29udGFpbnMgdGhl
IE1JUFMgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIElERSBjb2RlLg0KKyAqLw0K
Kw0KKyNpZm5kZWYgX19BU01fTUlQU19IRFJFR19IDQorI2RlZmluZSBfX0FT
TV9NSVBTX0hEUkVHX0gNCisNCit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGlk
ZV9pb3JlZ190Ow0KKw0KKyNlbmRpZiAvKiBfX0FTTV9NSVBTX0hEUkVHX0gg
Ki8NCisNCmRpZmYgLXVyTiBsaW51eC0yLjEuMTE3LXByaXN0aW5lL2luY2x1
ZGUvYXNtLW1pcHMvaWRlLmggbGludXgvaW5jbHVkZS9hc20tbWlwcy9pZGUu
aA0KLS0tIGxpbnV4LTIuMS4xMTctcHJpc3RpbmUvaW5jbHVkZS9hc20tbWlw
cy9pZGUuaAlUaHUgQXVnIDIwIDAwOjA5OjI4IDE5OTgNCisrKyBsaW51eC9p
bmNsdWRlL2FzbS1taXBzL2lkZS5oCVRodSBBdWcgMjAgMDA6MTc6NTQgMTk5
OA0KQEAgLTE0LDggKzE0LDYgQEANCiANCiAjaWZkZWYgX19LRVJORUxfXw0K
IA0KLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaWRlX2lvcmVnX3Q7DQotDQog
I2lmbmRlZiBNQVhfSFdJRlMNCiAjZGVmaW5lIE1BWF9IV0lGUwk2DQogI2Vu
ZGlmDQpAQCAtNDgsMTAgKzQ2LDM3IEBADQogCXJldHVybiBpZGVfb3BzLT5p
ZGVfZGVmYXVsdF9pb19iYXNlKGluZGV4KTsNCiB9DQogDQotc3RhdGljIF9f
aW5saW5lX18gdm9pZCBpZGVfaW5pdF9od2lmX3BvcnRzKGlkZV9pb3JlZ190
ICpwLCBpZGVfaW9yZWdfdCBiYXNlLA0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmlycSkNCitzdGF0aWMgX19p
bmxpbmVfXyB2b2lkIGlkZV9pbml0X2h3aWZfcG9ydHMoCWh3X3JlZ3NfdCAq
aHcsDQorCQkJCQkJaW50IGRhdGFfcG9ydCwNCisJCQkJCQlpbnQgY3RybF9w
b3J0LA0KKwkJCQkJCWludCAqaXJxKQ0KK3sNCisJaWRlX2lvcmVnX3QgcmVn
ID0gKGlkZV9pb3JlZ190KSBkYXRhX3BvcnQ7DQorDQorI2lmZGVmIF9fTkVX
X0lERV9TVFVGRg0KKwlpZGVfb3BzLT5pZGVfaW5pdF9od2lmX3BvcnRzKGh3
LT5pb19wb3J0cywgZGF0YV9wb3J0LCAmaHctPmlycSk7DQorI2Vsc2UNCisJ
aWRlX29wcy0+aWRlX2luaXRfaHdpZl9wb3J0cyhody0+aW9fcG9ydHMsIGRh
dGFfcG9ydCwgaXJxKTsNCisjZW5kaWYgLyogX19ORVdfSURFX1NUVUZGICov
DQorDQorCWh3LT5pcnEgPSBpZGVfb3BzLT5pZGVfZGVmYXVsdF9pcnEoZGF0
YV9wb3J0KTsNCit9DQorDQorLyoNCisgKiBUaGlzIHJlZ2lzdGVycyB0aGUg
c3RhbmRhcmQgcG9ydHMgZm9yIHRoaXMgYXJjaGl0ZWN0dXJlIHdpdGggdGhl
IElERQ0KKyAqIGRyaXZlci4NCisgKi8NCitzdGF0aWMgX19pbmxpbmVfXyB2
b2lkIGlkZV9pbml0X2RlZmF1bHRfaHdpZnModm9pZCkNCiB7DQotCWlkZV9v
cHMtPmlkZV9pbml0X2h3aWZfcG9ydHMocCwgYmFzZSwgaXJxKTsNCisjaWZk
ZWYgX19ET19JX05FRURfVEhJUw0KKwlod19yZWdzX3QgaHc7DQorCWludCBp
bmRleDsNCisNCisJZm9yIChpbmRleCA9IDA7IGluZGV4IDwgTUFYX0hXSUZT
OyBpbmRleCsrKSB7DQorCQlpZGVfaW5pdF9od2lmX3BvcnRzKCZodywgaWRl
X2RlZmF1bHRfaW9fYmFzZShpZHgpLCAwLCAwKTsNCisJCWlkZV9yZWdpc3Rl
cl9odygmaHcsIE5VTEwpOw0KKwl9DQorI2VuZGlmIC8qIF9fRE9fSV9ORUVE
X1RISVMgKi8NCiB9DQogDQogdHlwZWRlZiB1bmlvbiB7DQpAQCAtOTYsMjYg
KzEyMSwxMCBAQA0KIC8qDQogICogVGhlIGZvbGxvd2luZyBhcmUgbm90IG5l
ZWRlZCBmb3IgdGhlIG5vbi1tNjhrIHBvcnRzDQogICovDQotc3RhdGljIF9f
aW5saW5lX18gaW50IGlkZV9hY2tfaW50ciAoaWRlX2lvcmVnX3Qgc3RhdHVz
X3BvcnQsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWRlX2lvcmVnX3QgaXJxX3BvcnQpDQotew0KLQlyZXR1cm4gMTsNCi19DQot
DQotc3RhdGljIF9faW5saW5lX18gdm9pZCBpZGVfZml4X2RyaXZlaWQoc3Ry
dWN0IGhkX2RyaXZlaWQgKmlkKQ0KLXsNCi19DQotDQotc3RhdGljIF9faW5s
aW5lX18gdm9pZCBpZGVfcmVsZWFzZV9sb2NrIChpbnQgKmlkZV9sb2NrKQ0K
LXsNCi19DQotDQotc3RhdGljIF9faW5saW5lX18gdm9pZCBpZGVfZ2V0X2xv
Y2sgKGludCAqaWRlX2xvY2ssDQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZvaWQgKCpoYW5kbGVyKShpbnQsIHZvaWQgKiwNCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IHB0X3JlZ3MgKiksDQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEpDQotew0KLX0NCisjZGVm
aW5lIGlkZV9hY2tfaW50cihod2lmKQkJKDEpDQorI2RlZmluZSBpZGVfZml4
X2RyaXZlaWQoaWQpCQlkbyB7fSB3aGlsZSAoMCkNCisjZGVmaW5lIGlkZV9y
ZWxlYXNlX2xvY2sobG9jaykJCWRvIHt9IHdoaWxlICgwKQ0KKyNkZWZpbmUg
aWRlX2dldF9sb2NrKGxvY2ssIGhkbHIsIGRhdGEpCWRvIHt9IHdoaWxlICgw
KQ0KIA0KICNlbmRpZiAvKiBfX0tFUk5FTF9fICovDQogDQpkaWZmIC11ck4g
bGludXgtMi4xLjExNy1wcmlzdGluZS9pbmNsdWRlL2FzbS1wcGMvaGRyZWcu
aCBsaW51eC9pbmNsdWRlL2FzbS1wcGMvaGRyZWcuaA0KLS0tIGxpbnV4LTIu
MS4xMTctcHJpc3RpbmUvaW5jbHVkZS9hc20tcHBjL2hkcmVnLmgJV2VkIERl
YyAzMSAxODowMDowMCAxOTY5DQorKysgbGludXgvaW5jbHVkZS9hc20tcHBj
L2hkcmVnLmgJVGh1IEF1ZyAyMCAwMDoxNzo1NSAxOTk4DQpAQCAtMCwwICsx
LDE3IEBADQorLyoNCisgKiAgbGludXgvaW5jbHVkZS9hc20tcHBjL2hkcmVn
LmgNCisgKg0KKyAqICBDb3B5cmlnaHQgKEMpIDE5OTQtMTk5NiAgTGludXMg
VG9ydmFsZHMgJiBhdXRob3JzDQorICovDQorDQorLyoNCisgKiAgVGhpcyBm
aWxlIGNvbnRhaW5zIHRoZSBwcGMgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIElE
RSBjb2RlLg0KKyAqLw0KKw0KKyNpZm5kZWYgX19BU01QUENfSERSRUdfSA0K
KyNkZWZpbmUgX19BU01QUENfSERSRUdfSA0KKw0KK3R5cGVkZWYgdW5zaWdu
ZWQgaW50IGlkZV9pb3JlZ190Ow0KKw0KKyNlbmRpZiAvKiBfX0FTTVBQQ19I
RFJFR19IICovDQorDQpkaWZmIC11ck4gbGludXgtMi4xLjExNy1wcmlzdGlu
ZS9pbmNsdWRlL2FzbS1wcGMvaWRlLmggbGludXgvaW5jbHVkZS9hc20tcHBj
L2lkZS5oDQotLS0gbGludXgtMi4xLjExNy1wcmlzdGluZS9pbmNsdWRlL2Fz
bS1wcGMvaWRlLmgJVGh1IEF1ZyAyMCAwMDowOTozMSAxOTk4DQorKysgbGlu
dXgvaW5jbHVkZS9hc20tcHBjL2lkZS5oCVRodSBBdWcgMjAgMDA6MTc6NTUg
MTk5OA0KQEAgLTE1LDcgKzE1LDcgQEANCiAjaWZkZWYgQ09ORklHX0FQVVMN
CiAjaW5jbHVkZSA8bGludXgvaGRyZWcuaD4NCiAjaW5jbHVkZSA8YXNtLW02
OGsvaWRlLmg+DQotdm9pZCBpZGVfaW5pdF9od2lmX3BvcnRzKGlkZV9pb3Jl
Z190ICpwLCBpZGVfaW9yZWdfdCBiYXNlLCBpbnQgKmlycSk7DQordm9pZCBp
ZGVfaW5pdF9od2lmX3BvcnRzKGh3X3JlZ3NfdCAqaHcsIGludCBkYXRhX3Bv
cnQsIGludCBjdHJsX3BvcnQsIGludCAqaXJxKTsNCiB2b2lkIGlkZV9pbnN3
KGlkZV9pb3JlZ190IHBvcnQsIHZvaWQgKmJ1ZiwgaW50IG5zKTsNCiB2b2lk
IGlkZV9vdXRzdyhpZGVfaW9yZWdfdCBwb3J0LCB2b2lkICpidWYsIGludCBu
cyk7DQogI3VuZGVmIGluc3cNCkBAIC01MywxMiArNTMsMTEgQEANCiANCiAj
ZGVmaW5lIGlkZV9fc3RpKCkJX19zdGkoKQ0KIA0KLXR5cGVkZWYgdW5zaWdu
ZWQgaW50IGlkZV9pb3JlZ190Ow0KLXZvaWQgaWRlX2luaXRfaHdpZl9wb3J0
cyhpZGVfaW9yZWdfdCAqcCwgaWRlX2lvcmVnX3QgYmFzZSwgaW50ICppcnEp
Ow0KLXZvaWQgcHJlcF9pZGVfaW5pdF9od2lmX3BvcnRzKGlkZV9pb3JlZ190
ICpwLCBpZGVfaW9yZWdfdCBiYXNlLCBpbnQgKmlycSk7DQotdm9pZCBtYnhf
aWRlX2luaXRfaHdpZl9wb3J0cyhpZGVfaW9yZWdfdCAqcCwgaWRlX2lvcmVn
X3QgYmFzZSwgaW50ICppcnEpOw0KLXZvaWQgcG1hY19pZGVfaW5pdF9od2lm
X3BvcnRzKGlkZV9pb3JlZ190ICpwLCBpZGVfaW9yZWdfdCBiYXNlLCBpbnQg
KmlycSk7DQotdm9pZCBjaHJwX2lkZV9pbml0X2h3aWZfcG9ydHMoaWRlX2lv
cmVnX3QgKnAsIGlkZV9pb3JlZ190IGJhc2UsIGludCAqaXJxKTsNCit2b2lk
IGlkZV9pbml0X2h3aWZfcG9ydHMoaHdfcmVnc190ICpodywgaW50IGRhdGFf
cG9ydCwgaW50IGN0cmxfcG9ydCwgaW50ICppcnEpOw0KK3ZvaWQgcHJlcF9p
ZGVfaW5pdF9od2lmX3BvcnRzKGh3X3JlZ3NfdCAqaHcsIGludCBkYXRhX3Bv
cnQsIGludCBjdHJsX3BvcnQsIGludCAqaXJxKTsNCit2b2lkIG1ieF9pZGVf
aW5pdF9od2lmX3BvcnRzKGh3X3JlZ3NfdCAqaHcsIGludCBkYXRhX3BvcnQs
IGludCBjdHJsX3BvcnQsIGludCAqaXJxKTsNCit2b2lkIHBtYWNfaWRlX2lu
aXRfaHdpZl9wb3J0cyhod19yZWdzX3QgKmh3LCBpbnQgZGF0YV9wb3J0LCBp
bnQgY3RybF9wb3J0LCBpbnQgKmlycSk7DQordm9pZCBjaHJwX2lkZV9pbml0
X2h3aWZfcG9ydHMoaHdfcmVnc190ICpodywgaW50IGRhdGFfcG9ydCwgaW50
IGN0cmxfcG9ydCwgaW50ICppcnEpOw0KIHZvaWQgaWRlX2luc3coaWRlX2lv
cmVnX3QgcG9ydCwgdm9pZCAqYnVmLCBpbnQgbnMpOw0KIHZvaWQgaWRlX291
dHN3KGlkZV9pb3JlZ190IHBvcnQsIHZvaWQgKmJ1ZiwgaW50IG5zKTsNCiAN
CkBAIC0xOTIsMjEgKzE5MSwxMyBAQA0KIAl9IGI7DQogfSBzZWxlY3RfdDsN
CiANCi1zdGF0aWMgX19pbmxpbmVfXyBpbnQgaWRlX3JlcXVlc3RfaXJxKHVu
c2lnbmVkIGludCBpcnEsIHZvaWQgKCpoYW5kbGVyKShpbnQsIHZvaWQgKiwg
c3RydWN0IHB0X3JlZ3MgKiksDQotCQkJdW5zaWduZWQgbG9uZyBmbGFncywg
Y29uc3QgY2hhciAqZGV2aWNlLCB2b2lkICpkZXZfaWQpDQotew0KLQlyZXR1
cm4gcmVxdWVzdF9pcnEoaXJxLCBoYW5kbGVyLCBmbGFncywgZGV2aWNlLCBk
ZXZfaWQpOw0KLX0JCQkNCi0NCi1zdGF0aWMgX19pbmxpbmVfXyB2b2lkIGlk
ZV9mcmVlX2lycSh1bnNpZ25lZCBpbnQgaXJxLCB2b2lkICpkZXZfaWQpDQot
ew0KLQlmcmVlX2lycShpcnEsIGRldl9pZCk7DQotfQ0KKyNkZWZpbmUgaWRl
X3JlcXVlc3RfaXJxKGlycSxoYW5kLGZsZyxkZXYsaWQpCXJlcXVlc3RfaXJx
KChpcnEpLChoYW5kKSwoZmxnKSwoZGV2KSwoaWQpKQ0KKyNkZWZpbmUgaWRl
X2ZyZWVfaXJxKGlycSxkZXZfaWQpCQlmcmVlX2lycSgoaXJxKSwgKGRldl9p
ZCkpDQogDQogLyoNCiAgKiBUaGUgZm9sbG93aW5nIGFyZSBub3QgbmVlZGVk
IGZvciB0aGUgbm9uLW02OGsgcG9ydHMNCiAgKi8NCi0jZGVmaW5lIGlkZV9h
Y2tfaW50cihiYXNlLCBpcnEpCQkoMSkNCisjZGVmaW5lIGlkZV9hY2tfaW50
cihod2lmKQkJKDEpDQogI2RlZmluZSBpZGVfcmVsZWFzZV9sb2NrKGxvY2sp
CQlkbyB7fSB3aGlsZSAoMCkNCiAjZGVmaW5lIGlkZV9nZXRfbG9jayhsb2Nr
LCBoZGxyLCBkYXRhKQlkbyB7fSB3aGlsZSAoMCkNCiANCmRpZmYgLXVyTiBs
aW51eC0yLjEuMTE3LXByaXN0aW5lL2luY2x1ZGUvYXNtLXNwYXJjNjQvaGRy
ZWcuaCBsaW51eC9pbmNsdWRlL2FzbS1zcGFyYzY0L2hkcmVnLmgNCi0tLSBs
aW51eC0yLjEuMTE3LXByaXN0aW5lL2luY2x1ZGUvYXNtLXNwYXJjNjQvaGRy
ZWcuaAlXZWQgRGVjIDMxIDE4OjAwOjAwIDE5NjkNCisrKyBsaW51eC9pbmNs
dWRlL2FzbS1zcGFyYzY0L2hkcmVnLmgJVGh1IEF1ZyAyMCAwMDoxNzo1NyAx
OTk4DQpAQCAtMCwwICsxLDEzIEBADQorLyogJElkOiBoZHJlZy5oLHYgMS45
IDE5OTgvMDUvMDggMjE6MDU6MjggZGF2ZW0gRXhwICQNCisgKiBoZHJlZy5o
OiBVbHRyYS9QQ0kgc3BlY2lmaWMgSURFIGdsdWUuDQorICoNCisgKiBDb3B5
cmlnaHQgKEMpIDE5OTcgIERhdmlkIFMuIE1pbGxlciAoZGF2ZW1AY2FpcC5y
dXRnZXJzLmVkdSkNCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggIEVkZGllIEMu
IERvc3QgICAoZWNkQHNreW5ldC5iZSkNCisgKi8NCisNCisjaWZuZGVmIF9f
U1BBUkM2NF9IRFJFR19IDQorI2RlZmluZSBfX1NQQVJDNjRfSERSRUdfSA0K
Kw0KK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBpZGVfaW9yZWdfdDsNCisNCisj
ZW5kaWYgLyogX19TUEFSQzY0X0hEUkVHX0ggKi8NCmRpZmYgLXVyTiBsaW51
eC0yLjEuMTE3LXByaXN0aW5lL2luY2x1ZGUvYXNtLXNwYXJjNjQvaWRlLmgg
bGludXgvaW5jbHVkZS9hc20tc3BhcmM2NC9pZGUuaA0KLS0tIGxpbnV4LTIu
MS4xMTctcHJpc3RpbmUvaW5jbHVkZS9hc20tc3BhcmM2NC9pZGUuaAlUaHUg
QXVnIDIwIDAwOjA5OjMxIDE5OTgNCisrKyBsaW51eC9pbmNsdWRlL2FzbS1z
cGFyYzY0L2lkZS5oCVRodSBBdWcgMjAgMDA6MTc6NTYgMTk5OA0KQEAgLTEw
LDggKzEwLDYgQEANCiANCiAjaWZkZWYgX19LRVJORUxfXw0KIA0KLXR5cGVk
ZWYgdW5zaWduZWQgbG9uZyBpZGVfaW9yZWdfdDsNCi0NCiAjdW5kZWYgIE1B
WF9IV0lGUw0KICNkZWZpbmUgTUFYX0hXSUZTCTINCiANCkBAIC0yNywyMSAr
MjUsMzUgQEANCiAJcmV0dXJuIDA7DQogfQ0KIA0KLXN0YXRpYyBfX2lubGlu
ZV9fIHZvaWQgaWRlX2luaXRfaHdpZl9wb3J0cyhpZGVfaW9yZWdfdCAqcCwg
aWRlX2lvcmVnX3QgYmFzZSwgaW50ICppcnEpDQorc3RhdGljIF9faW5saW5l
X18gdm9pZCBpZGVfaW5pdF9od2lmX3BvcnRzICgJaHdfcmVnc190ICpodywN
CisJCQkJCQlpbnQgZGF0YV9wb3J0LA0KKwkJCQkJCWludCBjdHJsX3BvcnQs
DQorCQkJCQkJaW50ICppcnEpDQogew0KKwlpZGVfaW9yZWdfdCByZWcgPSAo
aWRlX2lvcmVnX3QpIGRhdGFfcG9ydDsNCiAJaW50IGk7DQogDQotCS8qIFRo
ZXNlIGFyZSBzaW1wbHkgb2Zmc2V0cyBmcm9tIGJhc2UuICovDQotCWZvciAo
aSA9IDA7IGkgPCA4OyBpKyspDQotCQkqcCsrID0gYmFzZSsrOw0KLQkvKiBQ
Q0kgY29kZSBuZWVkcyB0byBmaWd1cmUgb3V0IHRoZXNlLiAqLw0KLQlmb3Ig
KCA7IGkgPCAxMDsgaSsrKQ0KLQkJKnArKyA9IDA7DQotCS8qIFBDSSBjb2Rl
IG5lZWRzIHRvIGZpZ3VyZSBvdXQgdGhpcy4gKi8NCisJZm9yIChpID0gSURF
X0RBVEFfT0ZGU0VUOyBpIDw9IElERV9TVEFUVVNfT0ZGU0VUOyBpKyspIHsN
CisJCWh3LT5pb19wb3J0c1tpXSA9IHJlZzsNCisJCXJlZyArPSAxOw0KKwl9
DQorCWlmIChjdHJsX3BvcnQpIHsNCisJCWh3LT5pb19wb3J0c1tJREVfQ09O
VFJPTF9PRkZTRVRdID0gKGlkZV9pb3JlZ190KSBjdHJsX3BvcnQ7DQorCX0g
ZWxzZSB7DQorCQlody0+aW9fcG9ydHNbSURFX0NPTlRST0xfT0ZGU0VUXSA9
IDA7DQorCX0NCiAJaWYgKGlycSAhPSBOVUxMKQ0KIAkJKmlycSA9IDA7DQog
fQ0KIA0KKy8qDQorICogVGhpcyByZWdpc3RlcnMgdGhlIHN0YW5kYXJkIHBv
cnRzIGZvciB0aGlzIGFyY2hpdGVjdHVyZSB3aXRoIHRoZSBJREUNCisgKiBk
cml2ZXIuDQorICovDQorc3RhdGljIF9faW5saW5lX18gdm9pZCBpZGVfaW5p
dF9kZWZhdWx0X2h3aWZzKHZvaWQpDQorew0KK30NCisNCiB0eXBlZGVmIHVu
aW9uIHsNCiAJdW5zaWduZWQgaW50CQlhbGwJOiA4OwkvKiBhbGwgb2YgdGhl
IGJpdHMgdG9nZXRoZXIgKi8NCiAJc3RydWN0IHsNCkBAIC05MCwxMSArMTAy
LDYgQEANCiAjdW5kZWYgIEhEX0RBVEENCiAjZGVmaW5lIEhEX0RBVEEgKChp
ZGVfaW9yZWdfdCkwKQ0KIA0KLXN0YXRpYyBfX2lubGluZV9fIGludCBpZGVf
YWNrX2ludHIoaWRlX2lvcmVnX3Qgc3RhdHVzX3BvcnQsIGlkZV9pb3JlZ190
IGlycV9wb3J0KQ0KLXsNCi0JcmV0dXJuIDE7DQotfQ0KLQ0KIC8qIEZyb20g
bTY4ayBjb2RlLi4uICovDQogDQogI2lmZGVmIGluc2wNCkBAIC0yNjksMTMg
KzI3NiwxMiBAQA0KIAl9DQogfQ0KIA0KLXN0YXRpYyBfX2lubGluZV9fIHZv
aWQgaWRlX3JlbGVhc2VfbG9jayAoaW50ICppZGVfbG9jaykNCi17DQotfQ0K
LQ0KLXN0YXRpYyBfX2lubGluZV9fIHZvaWQgaWRlX2dldF9sb2NrIChpbnQg
KmlkZV9sb2NrLCB2b2lkICgqaGFuZGxlcikoaW50LCB2b2lkICosIHN0cnVj
dCBwdF9yZWdzICopLCB2b2lkICpkYXRhKQ0KLXsNCi19DQorLyoNCisgKiBU
aGUgZm9sbG93aW5nIGFyZSBub3QgbmVlZGVkIGZvciB0aGUgbm9uLW02OGsg
cG9ydHMNCisgKi8NCisjZGVmaW5lIGlkZV9hY2tfaW50cihod2lmKQkJKDEp
DQorI2RlZmluZSBpZGVfcmVsZWFzZV9sb2NrKGxvY2spCQlkbyB7fSB3aGls
ZSAoMCkNCisjZGVmaW5lIGlkZV9nZXRfbG9jayhsb2NrLCBoZGxyLCBkYXRh
KQlkbyB7fSB3aGlsZSAoMCkNCiANCiAjZW5kaWYgLyogX19LRVJORUxfXyAq
Lw0KIA0KZGlmZiAtdXJOIGxpbnV4LTIuMS4xMTctcHJpc3RpbmUvaW5jbHVk
ZS9saW51eC9oZHJlZy5oIGxpbnV4L2luY2x1ZGUvbGludXgvaGRyZWcuaA0K
LS0tIGxpbnV4LTIuMS4xMTctcHJpc3RpbmUvaW5jbHVkZS9saW51eC9oZHJl
Zy5oCVRodSBBdWcgMjAgMDA6MDk6MjYgMTk5OA0KKysrIGxpbnV4L2luY2x1
ZGUvbGludXgvaGRyZWcuaAlUaHUgQXVnIDIwIDAwOjE3OjUzIDE5OTgNCkBA
IC00Miw2ICs0Miw3IEBADQogI2RlZmluZSBXSU5fUkVTVE9SRQkJMHgxMA0K
ICNkZWZpbmUgV0lOX1JFQUQJCTB4MjANCiAjZGVmaW5lIFdJTl9XUklURQkJ
MHgzMA0KKyNkZWZpbmUgV0lOX1dSSVRFX1ZFUklGWQkweDNDDQogI2RlZmlu
ZSBXSU5fVkVSSUZZCQkweDQwDQogI2RlZmluZSBXSU5fRk9STUFUCQkweDUw
DQogI2RlZmluZSBXSU5fSU5JVAkJMHg2MA0KQEAgLTYyLDYgKzYzLDkgQEAN
CiAjZGVmaW5lIFdJTl9SRUFERE1BCQkweGM4CS8qIHJlYWQgc2VjdG9ycyB1
c2luZyBETUEgdHJhbnNmZXJzICovDQogI2RlZmluZSBXSU5fV1JJVEVETUEJ
CTB4Y2EJLyogd3JpdGUgc2VjdG9ycyB1c2luZyBETUEgdHJhbnNmZXJzICov
DQogDQorI2RlZmluZSBXSU5fUkVBRF9CVUZGRVIJCTB4RTQJLyogZm9yY2Ug
cmVhZCBvbmx5IDEgc2VjdG9yICovDQorI2RlZmluZSBXSU5fV1JJVEVfQlVG
RkVSCTB4RTgJLyogZm9yY2Ugd3JpdGUgb25seSAxIHNlY3RvciAqLw0KKw0K
ICNkZWZpbmUgV0lOX1NNQVJUCQkweGIwCS8qIHNlbGYtbW9uaXRvcmluZyBh
bmQgcmVwb3J0aW5nICovDQogDQogLyogQWRkaXRpb25hbCBkcml2ZSBjb21t
YW5kIGNvZGVzIHVzZWQgYnkgQVRBUEkgZGV2aWNlcy4gKi8NCkBAIC04NSw2
ICs4OSw3IEBADQogI2RlZmluZSBNQVJLX0VSUgkweDAxCS8qIEJhZCBhZGRy
ZXNzIG1hcmsgKi8NCiAjZGVmaW5lIFRSSzBfRVJSCTB4MDIJLyogY291bGRu
J3QgZmluZCB0cmFjayAwICovDQogI2RlZmluZSBBQlJUX0VSUgkweDA0CS8q
IENvbW1hbmQgYWJvcnRlZCAqLw0KKyNkZWZpbmUgTUNSX0VSUgkJMHgwOAkv
KiBtZWRpYSBjaGFuZ2UgcmVxdWVzdCAqLw0KICNkZWZpbmUgSURfRVJSCQkw
eDEwCS8qIElEIGZpZWxkIG5vdCBmb3VuZCAqLw0KICNkZWZpbmUgRUNDX0VS
UgkJMHg0MAkvKiBVbmNvcnJlY3RhYmxlIEVDQyBlcnJvciAqLw0KICNkZWZp
bmUJQkJEX0VSUgkJMHg4MAkvKiBwcmUtRUlERSBtZWFuaW5nOiAgYmxvY2sg
bWFya2VkIGJhZCAqLw0KZGlmZiAtdXJOIGxpbnV4LTIuMS4xMTctcHJpc3Rp
bmUvaW5jbHVkZS9saW51eC9wY2kuaCBsaW51eC9pbmNsdWRlL2xpbnV4L3Bj
aS5oDQotLS0gbGludXgtMi4xLjExNy1wcmlzdGluZS9pbmNsdWRlL2xpbnV4
L3BjaS5oCVRodSBBdWcgMjAgMDA6MDk6MjcgMTk5OA0KKysrIGxpbnV4L2lu
Y2x1ZGUvbGludXgvcGNpLmgJVGh1IEF1ZyAyMCAwMDozMjowNyAxOTk4DQpA
QCAtNjk4LDYgKzY5OCw5IEBADQogI2RlZmluZSBQQ0lfREVWSUNFX0lEX0lO
SVRfMzIwUAkJMHg5MTAwDQogI2RlZmluZSBQQ0lfREVWSUNFX0lEX0lOSVRf
MzYwUAkJMHg5NTAwDQogDQorI2RlZmluZSBQQ0lfVkVORE9SX0lEX1RUSQkJ
MHgxMTAzDQorI2RlZmluZSBQQ0lfREVWSUNFX0lEX1RUSV9IUFQzNDMJMHgw
MDAzDQorDQogI2RlZmluZSBQQ0lfVkVORE9SX0lEX1ZJQQkJMHgxMTA2DQog
I2RlZmluZSBQQ0lfREVWSUNFX0lEX1ZJQV84MkM1MDUJMHgwNTA1DQogI2Rl
ZmluZSBQQ0lfREVWSUNFX0lEX1ZJQV84MkM1NjEJMHgwNTYxDQpkaWZmIC11
ck4gbGludXgtMi4xLjExNy1wcmlzdGluZS9pbml0L21haW4uYyBsaW51eC9p
bml0L21haW4uYw0KLS0tIGxpbnV4LTIuMS4xMTctcHJpc3RpbmUvaW5pdC9t
YWluLmMJVGh1IEF1ZyAyMCAwMDowOToyNSAxOTk4DQorKysgbGludXgvaW5p
dC9tYWluLmMJVGh1IEF1ZyAyMCAwMDoxNzo1MyAxOTk4DQpAQCAtMzg0LDYg
KzM4NCwxMCBAQA0KIAl7ICJoZGYiLCAgICAgMHgyMTQwIH0sDQogCXsgImhk
ZyIsICAgICAweDIyMDAgfSwNCiAJeyAiaGRoIiwgICAgIDB4MjI0MCB9LA0K
Kwl7ICJoZGkiLCAgICAgMHgzODAwIH0sDQorCXsgImhkaiIsICAgICAweDM4
NDAgfSwNCisJeyAiaGRrIiwgICAgIDB4MzkwMCB9LA0KKwl7ICJoZGwiLCAg
ICAgMHgzOTQwIH0sDQogI2VuZGlmDQogI2lmZGVmIENPTkZJR19CTEtfREVW
X1NEDQogCXsgInNkYSIsICAgICAweDA4MDAgfSwNCg==
--998314481-513185178-903627920=:28909
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="mptable.2.1.117"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.96.980820112818.29137C@Astro.Dyer.Vanderbilt.Edu>
Content-Description:

DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo9PT0NCg0KTVBU
YWJsZSwgdmVyc2lvbiAyLjAuMTINCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQ0KLS0tDQoNCk1QIEZsb2F0aW5nIFBvaW50ZXIgU3RydWN0
dXJlOg0KDQogIGxvY2F0aW9uOgkJCUJJT1MNCiAgcGh5c2ljYWwgYWRkcmVz
czoJCTB4MDAwZjVhNjANCiAgc2lnbmF0dXJlOgkJCSdfTVBfJw0KICBsZW5n
dGg6CQkJMTYgYnl0ZXMNCiAgdmVyc2lvbjoJCQkxLjQNCiAgY2hlY2tzdW06
CQkJMHhjMw0KICBtb2RlOgkJCQlWaXJ0dWFsIFdpcmUNCg0KLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS0tDQoNCk1QIENvbmZpZyBUYWJs
ZSBIZWFkZXI6DQoNCiAgcGh5c2ljYWwgYWRkcmVzczoJCTB4MDAwZjVhNzQN
CiAgc2lnbmF0dXJlOgkJCSdQQ01QJw0KICBiYXNlIHRhYmxlIGxlbmd0aDoJ
CTM5Ng0KICB2ZXJzaW9uOgkJCTEuMQ0KICBjaGVja3N1bToJCQkweDNhDQog
IE9FTSBJRDoJCQknT0VNMDAwMDAnDQogIFByb2R1Y3QgSUQ6CQkJJ1BST0Qw
MDAwMDAwMCcNCiAgT0VNIHRhYmxlIHBvaW50ZXI6CQkweDAwMDAwMDAwDQog
IE9FTSB0YWJsZSBzaXplOgkJMA0KICBlbnRyeSBjb3VudDoJCQkyOA0KICBs
b2NhbCBBUElDIGFkZHJlc3M6CQkweGZlZTAwMDAwDQogIGV4dGVuZGVkIHRh
YmxlIGxlbmd0aDoJMA0KICBleHRlbmRlZCB0YWJsZSBjaGVja3N1bToJMA0K
DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotLS0NCg0KTVAg
Q29uZmlnIEJhc2UgVGFibGUgRW50cmllczoNCg0KLS0NClByb2Nlc3NvcnM6
CUFQSUMgSUQJVmVyc2lvbglTdGF0ZQkJRmFtaWx5CU1vZGVsCVN0ZXAJRmxh
Z3MNCgkJIDAJIDB4MTEJIEJTUCwgdXNhYmxlCSA1CSAyCSAxCSAweDA3YmYN
CgkJIDEJIDB4MTEJIEFQLCB1c2FibGUJIDUJIDIJIDEJIDB4MDdiZg0KLS0N
CkJ1czoJCUJ1cyBJRAlUeXBlDQoJCSAwCSBQQ0kgICANCgkJIDEJIElTQSAg
IA0KLS0NCkkvTyBBUElDczoJQVBJQyBJRAlWZXJzaW9uCVN0YXRlCQlBZGRy
ZXNzDQoJCSAyCSAweDExCSB1c2FibGUJCSAweGZlYzAwMDAwDQotLQ0KSS9P
IEludHM6CVR5cGUJUG9sYXJpdHkgICAgVHJpZ2dlcglCdXMgSUQJIElSUQlB
UElDIElECUkNCk5UIw0KCQlFeHRJTlQJIGNvbmZvcm1zICAgIGNvbmZvcm1z
CSAgICAgMQkgICAwCSAgICAgIDIJICAgMA0KCQlJTlQJIGNvbmZvcm1zICAg
IGNvbmZvcm1zCSAgICAgMQkgICAxCSAgICAgIDIJICAgMQ0KCQlJTlQJIGNv
bmZvcm1zICAgIGNvbmZvcm1zCSAgICAgMQkgICAwCSAgICAgIDIJICAgMg0K
CQlJTlQJIGNvbmZvcm1zICAgIGNvbmZvcm1zCSAgICAgMQkgICAzCSAgICAg
IDIJICAgMw0KCQlJTlQJIGNvbmZvcm1zICAgIGNvbmZvcm1zCSAgICAgMQkg
ICA0CSAgICAgIDIJICAgNA0KCQlJTlQJIGNvbmZvcm1zICAgIGNvbmZvcm1z
CSAgICAgMQkgICA1CSAgICAgIDIJICAgNQ0KCQlJTlQJIGNvbmZvcm1zICAg
IGNvbmZvcm1zCSAgICAgMQkgICA2CSAgICAgIDIJICAgNg0KCQlJTlQJIGNv
bmZvcm1zICAgIGNvbmZvcm1zCSAgICAgMQkgICA3CSAgICAgIDIJICAgNw0K
CQlJTlQJIGNvbmZvcm1zICAgIGNvbmZvcm1zCSAgICAgMQkgICA4CSAgICAg
IDIJICAgOA0KCQlJTlQJIGNvbmZvcm1zICAgIGNvbmZvcm1zCSAgICAgMQkg
ICA5CSAgICAgIDIJICAgOQ0KCQlJTlQJIGNvbmZvcm1zICAgIGNvbmZvcm1z
CSAgICAgMQkgIDEwCSAgICAgIDIJICAxMA0KCQlJTlQJIGNvbmZvcm1zICAg
IGNvbmZvcm1zCSAgICAgMQkgIDExCSAgICAgIDIJICAxMQ0KCQlJTlQJIGNv
bmZvcm1zICAgIGNvbmZvcm1zCSAgICAgMQkgIDEyCSAgICAgIDIJICAxMg0K
CQlJTlQJIGNvbmZvcm1zICAgIGNvbmZvcm1zCSAgICAgMQkgIDEzCSAgICAg
IDIJICAxMw0KCQlJTlQJIGNvbmZvcm1zICAgIGNvbmZvcm1zCSAgICAgMQkg
IDE0CSAgICAgIDIJICAxNA0KCQlJTlQJIGNvbmZvcm1zICAgIGNvbmZvcm1z
CSAgICAgMQkgIDE1CSAgICAgIDIJICAxNQ0KCQlJTlQJYWN0aXZlLWxvICAg
ICAgIGxldmVsCSAgICAgMAkyMDpBCSAgICAgIDIJICAxNg0KCQlJTlQJYWN0
aXZlLWxvICAgICAgIGxldmVsCSAgICAgMAkxOTpBCSAgICAgIDIJICAxNw0K
CQlJTlQJYWN0aXZlLWxvICAgICAgIGxldmVsCSAgICAgMAkxODpBCSAgICAg
IDIJICAxOA0KCQlJTlQJYWN0aXZlLWxvICAgICAgIGxldmVsCSAgICAgMAkx
NzpBCSAgICAgIDIJICAxOQ0KCQlTTUkJIGNvbmZvcm1zICAgIGNvbmZvcm1z
CSAgICAgMQkgICAwCSAgICAgIDIJICAyMw0KLS0NCkxvY2FsIEludHM6CVR5
cGUJUG9sYXJpdHkgICAgVHJpZ2dlcglCdXMgSUQJIElSUQlBUElDIElEdElO
VCMNCgkJRXh0SU5UCSBjb25mb3JtcyAgICBjb25mb3JtcwkgICAgIDAJIDA6
QQkgICAgMjU1CSAgIDANCgkJTk1JCSBjb25mb3JtcyAgICBjb25mb3Jtcwkg
ICAgIDAJIDA6QQkgICAgMjU1CSAgIDENCg0KLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQ0KLS0tDQoNCmRtZXNnIG91dHB1dDoNCg0KIDM3LT4t
MSAzOC0+LTEgMzktPi0xIDQwLT4tMSA0MS0+LTEgNDItPi0xIDQzLT4tMSA0
NC0+LTEgNDUtPi0xIDQ2LT4tMSA0Ny0+LTEgNDgtPi0xIDQ5LT4tMSA1MC0+
LTEgNTEtPi0xIDUyLT4tMSA1My0+LTEgNTQtPi0xIDU1LT4tMSA1Ni0+LTEg
NTctPi0xIDU4LT4tMSA1OS0+LTEgNjAtPi0xIDYxLT4tMSA2Mi0+LTEgNjMt
Pi0xIA0KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIGRv
bmUuDQpDaGVja2luZyAzODYvMzg3IGNvdXBsaW5nLi4uIE9LLCBGUFUgdXNp
bmcgZXhjZXB0aW9uIDE2IGVycm9yIHJlcG9ydGluZy4NCkNoZWNraW5nICdo
bHQnIGluc3RydWN0aW9uLi4uIE9LLg0KSW50ZWwgUGVudGl1bSB3aXRoIEYw
IDBGIGJ1ZyAtIHdvcmthcm91bmQgZW5hYmxlZC4NClN3YW5zZWEgVW5pdmVy
c2l0eSBDb21wdXRlciBTb2NpZXR5IE5FVDMuMDM5IGZvciBMaW51eCAyLjEN
Ck5FVDM6IFVuaXggZG9tYWluIHNvY2tldHMgMC4xNiBmb3IgTGludXggTkVU
My4wMzguDQpTd2Fuc2VhIFVuaXZlcnNpdHkgQ29tcHV0ZXIgU29jaWV0eSBU
Q1AvSVAgZm9yIE5FVDMuMDM3DQpJUCBQcm90b2NvbHM6IElDTVAsIFVEUCwg
VENQDQpJbml0aWFsaXppbmcgUlQgbmV0bGluayBzb2NrZXQNClBDSTogUENJ
IEJJT1MgcmV2aXNpb24gMi4xMCBlbnRyeSBhdCAweGZiM2IwDQpQQ0k6IFVz
aW5nIGNvbmZpZ3VyYXRpb24gdHlwZSAxDQpQQ0k6IFByb2JpbmcgUENJIGhh
cmR3YXJlDQpQQ0ktPkFQSUMgSVJRIHRyYW5zZm9ybTogKEIwLEkxNyxQMCkg
LT4gMTkNClBDSS0+QVBJQyBJUlEgdHJhbnNmb3JtOiAoQjAsSTE4LFAwKSAt
PiAxOA0KUENJLT5BUElDIElSUSB0cmFuc2Zvcm06IChCMCxJMTksUDApIC0+
IDE3DQpQQ0ktPkFQSUMgSVJRIHRyYW5zZm9ybTogKEIwLEkyMCxQMCkgLT4g
MTYNClN0YXJ0aW5nIGtzd2FwZCB2IDEuNSANClNlcmlhbCBkcml2ZXIgdmVy
c2lvbiA0LjI2IHdpdGggU0hBUkVfSVJRIGVuYWJsZWQNCnR0eVMwMCBhdCAw
eDAzZjggKGlycSA9IDQpIGlzIGEgMTY1NTBBDQp0dHlTMDIgYXQgMHgwM2U4
IChpcnEgPSA0KSBpcyBhIDE2NTUwQQ0KUFMvMiBhdXhpbGlhcnkgcG9pbnRp
bmcgZGV2aWNlIGRldGVjdGVkIC0tIGRyaXZlciBpbnN0YWxsZWQuDQpTb2Z0
d2FyZSBXYXRjaGRvZyBUaW1lcjogMC4wNSwgdGltZXIgbWFyZ2luOiA2MCBz
ZWMNClJlYWwgVGltZSBDbG9jayBEcml2ZXIgdjEuMDkNCk5vbi12b2xhdGls
ZSBtZW1vcnkgZHJpdmVyIHYxLjANCmxvb3A6IHJlZ2lzdGVyZWQgZGV2aWNl
IGF0IG1ham9yIDcNClBJSVgzOiBJREUgY29udHJvbGxlciBvbiBQQ0kgYnVz
IDAwIGRldiAzOQ0KUElJWDM6IGRldmljZSBub3QgY2FwYWJsZSBvZiBmdWxs
IG5hdGl2ZSBQQ0kgbW9kZQ0KUElJWDM6IGRldmljZSBkaXNhYmxlZCAoQklP
UykNCkFFQzYyMTA6IElERSBjb250cm9sbGVyIG9uIFBDSSBidXMgMDAgZGV2
IGEwDQpBRUM2MjEwOiBub3QgMTAwJSBuYXRpdmUgbW9kZTogd2lsbCBwcm9i
ZSBpcnFzIGxhdGVyDQpBRUM2MjEwOiBST00gZW5hYmxlZCBidXQgbm8gYWRk
cmVzcw0KICAgIGlkZTA6IEJNLURNQSBhdCAweDY3MDAtMHg2NzA3LCBCSU9T
IHNldHRpbmdzOiBoZGE6cGlvLCBoZGI6cGlvDQogICAgaWRlMTogQk0tRE1B
IGF0IDB4NjcwOC0weDY3MGYsIEJJT1Mgc2V0dGluZ3M6IGhkYzpwaW8sIGhk
ZDpwaW8NCmhkYTogUVVBTlRVTSBGSVJFQkFMTCBTRTguNEEsIEFUQSBESVNL
IGRyaXZlDQpoZGM6IElPTUVHQSBaSVAgMTAwIEFUQVBJLCBBVEFQSSBGTE9Q
UFkgZHJpdmUNCmhkZDogSFAgQ09MT1JBRE8gNUdCLCBBVEFQSSBUQVBFIGRy
aXZlDQppZGUyOiBwb3J0cyBhbHJlYWR5IGluIHVzZSwgc2tpcHBpbmcgcHJv
YmUNCmlkZTAgYXQgMHg2MzAwLTB4NjMwNywweDY0MDIgb24gaXJxIDE2DQpp
ZGUxIGF0IDB4NjUwMC0weDY1MDcsMHg2NjAyIG9uIGlycSAxNiAoc2hhcmVk
IHdpdGggaWRlMCkNCmhkYTogUVVBTlRVTSBGSVJFQkFMTCBTRTguNEEsIDgw
NjNNQiB3Lzgwa0IgQ2FjaGUsIENIUz0xMDI3LzI1NS82MywgVURNQQ0KaWRl
LXRhcGU6IGhkZDogb3ZlcnJpZGluZyBjYXBhYmlsaXRpZXMtPnNwZWVkIChh
c3N1bWluZyA2NTBLQi9zZWMpDQppZGUtdGFwZTogaGRkOiBvdmVycmlkaW5n
IGNhcGFiaWxpdGllcy0+bWF4X3NwZWVkIChhc3N1bWluZyA2NTBLQi9zZWMp
DQppZGUtdGFwZTogaGRkIDwtPiBodDAsIDY1MEtCcHMsIDE2KjMya0IgYnVm
ZmVyLCAzMjAwa0IgcGlwZWxpbmUsIDI1MG1zIHREU0MNCmhkYzogOTgzMDRr
QiwgMTk2NjA4IGJsb2NrcywgNTEyIHNlY3RvciBzaXplDQpoZGM6IDk4MzA0
a0IsIDMyLzY0Lzk2IENIUywgNDA5NiBrQnBzLCA1MTIgc2VjdG9yIHNpemUs
IDI5NDEgcnBtDQpGbG9wcHkgZHJpdmUocyk6IGZkMCBpcyAxLjQ0TQ0KRkRD
IDAgaXMgYSBwb3N0LTE5OTEgODIwNzcNCm5jcjUzYzh4eDogYXQgUENJIGJ1
cyAwLCBkZXZpY2UgMTcsIGZ1bmN0aW9uIDANCm5jcjUzYzh4eDogNTNjODEw
YSBkZXRlY3RlZCANCm5jcjUzYzgxMGEtMDogcmV2PTB4MTIsIGJhc2U9MHhl
NDAwMDAwMCwgaW9fcG9ydD0weDYxMDAsIGlycT0xOQ0KbmNyNTNjODEwYS0w
OiBJRCA3LCBGYXN0LTEwLCBQYXJpdHkgQ2hlY2tpbmcNCm5jcjUzYzgxMGEt
MDogcmVzdGFydCAoc2NzaSByZXNldCkuDQpzY3NpMCA6IG5jcjUzYzh4eCAt
IHJldmlzaW9uIDMuMGcNCnNjc2kgOiAxIGhvc3QuDQogIFZlbmRvcjogSFAg
ICAgICAgIE1vZGVsOiBDNDMyNC9DNDMyNSAgICAgICBSZXY6IDEuMjcNCiAg
VHlwZTogICBDRC1ST00gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFO
U0kgU0NTSSByZXZpc2lvbjogMDINCkRldGVjdGVkIHNjc2kgQ0QtUk9NIHNy
MCBhdCBzY3NpMCwgY2hhbm5lbCAwLCBpZCAyLCBsdW4gMA0Kc2NzaSA6IGRl
dGVjdGVkIDEgU0NTSSBjZHJvbSB0b3RhbC4NCm5jcjUzYzgxMGEtMC08Miwq
PjogU1lOQyB0cmFuc2ZlcnMgbm90IHN1cHBvcnRlZC4NClVuaWZvcm0gQ0RS
T00gZHJpdmVyIFJldmlzaW9uOiAyLjEzDQp0dWxpcC5jOnYwLjgzIDEwLzE5
Lzk3IGJlY2tlckBjZXNkaXMuZ3NmYy5uYXNhLmdvdg0KZXRoMDogRGlnaXRh
bCBEUzIxMTQwIFR1bGlwIGF0IDB4NjIwMCwgMDAgNDAgMDUgYTMgNDkgN2Qs
IElSUSAxNy4NCmV0aDA6ICBFRVBST00gZGVmYXVsdCBtZWRpYSB0eXBlIEF1
dG9zZW5zZS4NCmV0aDA6ICBJbmRleCAjMCAtIE1lZGlhIE1JSSAoIzExKSBk
ZXNjcmliZWQgYnkgYSAyMTE0MCBNSUkgUEhZICgxKSBibG9jay4NCmV0aDA6
ICBNSUkgdHJhbnNjZWl2ZXIgZm91bmQgYXQgTURJTyBhZGRyZXNzIDAuDQpQ
YXJ0aXRpb24gY2hlY2s6DQogaGRhOiBoZGExIGhkYTIgaGRhMyBoZGE0DQog
aGRjOiBbTEJBXSAgaGRjMQ0KVkZTOiBNb3VudGVkIHJvb3QgKGV4dDIgZmls
ZXN5c3RlbSkgcmVhZG9ubHkuDQpGcmVlaW5nIHVudXNlZCBrZXJuZWwgbWVt
b3J5OiA4NGsgZnJlZWQNCmV0aDA6IE1JSSBtb25pdG9yaW5nIHRpY2s6IENT
UjEyIGZmZmZmZjgwLCBNSUkgc3RhdHVzIDc4MmQsIExpbmsgcGFydG5lciBy
ZXBvcnQgMDAyMS4NCg0KUENTIERyaXZlciB2MS4wLjAgMDQvMjgvOTcgOjog
UG9ydD0weDE0MA0KICAgICAoYykgMTk5NC05NSBMYXN6bG8gU3R1cm1hbm4g
KHN0dXJtYW5uQHRkaS5waHkudmFuZGVyYmlsdC5lZHUpDQogICAgIChjKSAx
OTk2LTk3IEFuZHJlIEhlZHJpY2sgKGhlZHJpY2tAYXN0cm8uZHllci52YW5k
ZXJiaWx0LmVkdSkNCklPNjQgRHJpdmVyIHYxLjMuMCAwMi8wOC85OCA6OiBQ
b3J0PTB4M0UwDQogICAgIChjKSAxOTk2LTk4IEFuZHJlIEhlZHJpY2sgKGhl
ZHJpY2tAYXN0cm8uZHllci52YW5kZXJiaWx0LmVkdSkNCkhQQy0xIFRLNTEy
IDEuOC44IDA2LzA1Lzk4IDo6IFBvcnQ9MHgxMjAgSVJRNT1UUlVFDQogICAg
IChjKSAxOTk2LTk4IEFuZHJlIEhlZHJpY2sgKGhlZHJpY2tAYXN0cm8uZHll
ci52YW5kZXJiaWx0LmVkdSkNCg0KDQotLS0tLS0tLS0tLS0tLS0NCnNjYW5w
Y2kgb3V0cHV0Og0KDQpQQ0kgc2F5cyBjb25maWd1cmF0aW9uIHR5cGUgMQ0K
DQpQQ0kgcHJvYmluZyBjb25maWd1cmF0aW9uIHR5cGUgMQ0KUHJvYmluZyBm
b3IgZGV2aWNlcyBvbiBQQ0kgYnVzIDA6DQoNCg0KcGNpIGJ1cyAweDAgY2Fy
ZG51bSAweDAwIGZ1bmN0aW9uIDB4MDAwMDogdmVuZG9yIDB4ODA4NiBkZXZp
Y2UgMHgxMjUwDQogSW50ZWwgODI0MzkNCiAgU1RBVFVTICAgIDB4MjIwMCAg
Q09NTUFORCAweDAwMDYNCiAgQ0xBU1MgICAgIDB4MDYgMHgwMCAweDAwICBS
RVZJU0lPTiAweDAzDQogIEJJU1QgICAgICAweDAwICBIRUFERVIgMHgwMCAg
TEFURU5DWSAweDIwICBDQUNIRSAweDAwDQoNCnBjaSBidXMgMHgwIGNhcmRu
dW0gMHgwNyBmdW5jdGlvbiAweDAwMDA6IHZlbmRvciAweDgwODYgZGV2aWNl
IDB4NzAwMA0KIEludGVsIDgyMzcxIHBjaS1pc2EgYnJpZGdlDQogIFNUQVRV
UyAgICAweDAyODAgIENPTU1BTkQgMHgwMDBmDQogIENMQVNTICAgICAweDA2
IDB4MDEgMHgwMCAgUkVWSVNJT04gMHgwMQ0KICBCSVNUICAgICAgMHgwMCAg
SEVBREVSIDB4ODAgIExBVEVOQ1kgMHgwMCAgQ0FDSEUgMHgwMA0KDQpwY2kg
YnVzIDB4MCBjYXJkbnVtIDB4MDcgZnVuY3Rpb24gMHgwMDAxOiB2ZW5kb3Ig
MHg4MDg2IGRldmljZSAweDcwMTANCiBJbnRlbCA4MjM3MSBidXMtbWFzdGVy
IElERSBjb250cm9sbGVyDQogIFNUQVRVUyAgICAweDAyODAgIENPTU1BTkQg
MHgwMDAwDQogIENMQVNTICAgICAweDAxIDB4MDEgMHg4MCAgUkVWSVNJT04g
MHgwMA0KICBCSVNUICAgICAgMHgwMCAgSEVBREVSIDB4MDAgIExBVEVOQ1kg
MHgyMCAgQ0FDSEUgMHgwMA0KICBCQVNFNCAgICAgMHgwMDAwZjAwMSAgYWRk
ciAweDAwMDBmMDAwICBJL08NCg0KcGNpIGJ1cyAweDAgY2FyZG51bSAweDEx
IGZ1bmN0aW9uIDB4MDAwMDogdmVuZG9yIDB4MTAwMCBkZXZpY2UgMHgwMDAx
DQogTkNSIDUzQzgxMA0KICBTVEFUVVMgICAgMHgwMjAwICBDT01NQU5EIDB4
MDAwNw0KICBDTEFTUyAgICAgMHgwMSAweDAwIDB4MDAgIFJFVklTSU9OIDB4
MTINCiAgQklTVCAgICAgIDB4MDAgIEhFQURFUiAweDAwICBMQVRFTkNZIDB4
MjAgIENBQ0hFIDB4MDgNCiAgQkFTRTAgICAgIDB4MDAwMDYxMDEgIGFkZHIg
MHgwMDAwNjEwMCAgSS9PDQogIEJBU0UxICAgICAweGU0MDAwMDAwICBhZGRy
IDB4ZTQwMDAwMDAgIE1FTQ0KICBNQVhfTEFUICAgMHg0MCAgTUlOX0dOVCAw
eDA4ICBJTlRfUElOIDB4MDEgIElOVF9MSU5FIDB4MDkNCg0KcGNpIGJ1cyAw
eDAgY2FyZG51bSAweDEyIGZ1bmN0aW9uIDB4MDAwMDogdmVuZG9yIDB4NTMz
MyBkZXZpY2UgMHg4YTAxDQogUzMgVmlSR0UvRFggb3IgL0dYDQogIFNUQVRV
UyAgICAweDAyMDAgIENPTU1BTkQgMHgwMDA3DQogIENMQVNTICAgICAweDAz
IDB4MDAgMHgwMCAgUkVWSVNJT04gMHgwMQ0KICBCSVNUICAgICAgMHgwMCAg
SEVBREVSIDB4MDAgIExBVEVOQ1kgMHgyMCAgQ0FDSEUgMHgwMA0KICBCQVNF
MCAgICAgMHhlMDAwMDAwMCAgYWRkciAweGUwMDAwMDAwICBNRU0NCiAgTUFY
X0xBVCAgIDB4ZmYgIE1JTl9HTlQgMHgwNCAgSU5UX1BJTiAweDAxICBJTlRf
TElORSAweDBhDQoNCnBjaSBidXMgMHgwIGNhcmRudW0gMHgxMyBmdW5jdGlv
biAweDAwMDA6IHZlbmRvciAweDEwMTEgZGV2aWNlIDB4MDAwOQ0KIERpZ2l0
YWwgRXF1aXBtZW50IENvcnBvcmF0aW9uIERDMjExNDAgMTAvMTAwIE1iL3Mg
RXRoZXJuZXQNCiAgU1RBVFVTICAgIDB4MDI4MCAgQ09NTUFORCAweDAwMDcN
CiAgQ0xBU1MgICAgIDB4MDIgMHgwMCAweDAwICBSRVZJU0lPTiAweDIyDQog
IEJJU1QgICAgICAweDAwICBIRUFERVIgMHgwMCAgTEFURU5DWSAweDIwICBD
QUNIRSAweDA4DQogIEJBU0UwICAgICAweDAwMDA2MjAxICBhZGRyIDB4MDAw
MDYyMDAgIEkvTw0KICBCQVNFMSAgICAgMHhlNDAwMTAwMCAgYWRkciAweGU0
MDAxMDAwICBNRU0NCiAgTUFYX0xBVCAgIDB4MjggIE1JTl9HTlQgMHgxNCAg
SU5UX1BJTiAweDAxICBJTlRfTElORSAweDBiDQoNCnBjaSBidXMgMHgwIGNh
cmRudW0gMHgxNCBmdW5jdGlvbiAweDAwMDA6IHZlbmRvciAweDExOTEgZGV2
aWNlIDB4MDAwNQ0KIERldmljZSB1bmtub3duDQogIFNUQVRVUyAgICAweDAw
MDAgIENPTU1BTkQgMHgwMDA3DQogIENMQVNTICAgICAweDAxIDB4MDAgMHgw
MCAgUkVWSVNJT04gMHgwMQ0KICBCSVNUICAgICAgMHgwMCAgSEVBREVSIDB4
MDAgIExBVEVOQ1kgMHhmZSAgQ0FDSEUgMHgwMA0KICBCQVNFMCAgICAgMHgw
MDAwNjMwMSAgYWRkciAweDAwMDA2MzAwICBJL08NCiAgQkFTRTEgICAgIDB4
MDAwMDY0MDEgIGFkZHIgMHgwMDAwNjQwMCAgSS9PDQogIEJBU0UyICAgICAw
eDAwMDA2NTAxICBhZGRyIDB4MDAwMDY1MDAgIEkvTw0KICBCQVNFMyAgICAg
MHgwMDAwNjYwMSAgYWRkciAweDAwMDA2NjAwICBJL08NCiAgQkFTRTQgICAg
IDB4MDAwMDY3MDEgIGFkZHIgMHgwMDAwNjcwMCAgSS9PDQogIEJBU0VST00g
ICAweDAwMDAwMDAxICBhZGRyIDB4MDAwMDAwMDAgIGRlY29kZS1lbmFibGVk
DQogIE1BWF9MQVQgICAweDAwICBNSU5fR05UIDB4MDAgIElOVF9QSU4gMHgw
MSAgSU5UX0xJTkUgMHgwZg0KICBCWVRFXzAgICAgMHgwMSAgQllURV8xICAw
eDA0ICBCWVRFXzIgIDB4MDAgIEJZVEVfMyAgMHgwMA0KDQpQQ0kgcHJvYmlu
ZyBjb25maWd1cmF0aW9uIHR5cGUgMg0KDQoNCi0tLS0tLS0tLS0tLS0tLS0t
DQovcHJvYy9wY2kgb3V0cHV0Og0KDQpQQ0kgZGV2aWNlcyBmb3VuZDoNCiAg
QnVzICAwLCBkZXZpY2UgICAwLCBmdW5jdGlvbiAgMDoNCiAgICBIb3N0IGJy
aWRnZTogSW50ZWwgODI0MzlIWCBUcml0b24gSUkgKHJldiAzKS4NCiAgICAg
IE1lZGl1bSBkZXZzZWwuICBNYXN0ZXIgQ2FwYWJsZS4gIExhdGVuY3k9MzIu
ICANCiAgQnVzICAwLCBkZXZpY2UgICA3LCBmdW5jdGlvbiAgMDoNCiAgICBJ
U0EgYnJpZGdlOiBJbnRlbCA4MjM3MVNCIFBJSVgzIElTQSAocmV2IDEpLg0K
ICAgICAgTWVkaXVtIGRldnNlbC4gIEZhc3QgYmFjay10by1iYWNrIGNhcGFi
bGUuICBNYXN0ZXIgQ2FwYWJsZS4gIE5vIGJ1cnN0cy4gIA0KICBCdXMgIDAs
IGRldmljZSAgIDcsIGZ1bmN0aW9uICAxOg0KICAgIElERSBpbnRlcmZhY2U6
IEludGVsIDgyMzcxU0IgUElJWDMgSURFIChyZXYgMCkuDQogICAgICBNZWRp
dW0gZGV2c2VsLiAgRmFzdCBiYWNrLXRvLWJhY2sgY2FwYWJsZS4gIE1hc3Rl
ciBDYXBhYmxlLiAgTGF0ZW5jeT0zMi4gIA0KICAgICAgSS9PIGF0IDB4ZjAw
MCBbMHhmMDAxXS4NCiAgQnVzICAwLCBkZXZpY2UgIDE3LCBmdW5jdGlvbiAg
MDoNCiAgICBTQ1NJIHN0b3JhZ2UgY29udHJvbGxlcjogTkNSIDUzYzgxMCAo
cmV2IDE4KS4NCiAgICAgIE1lZGl1bSBkZXZzZWwuICBJUlEgMTMuICBNYXN0
ZXIgQ2FwYWJsZS4gIExhdGVuY3k9MzIuICBNaW4gR250PTguTWF4IExhdD02
NC4NCiAgICAgIEkvTyBhdCAweDYxMDAgWzB4NjEwMV0uDQogICAgICBOb24t
cHJlZmV0Y2hhYmxlIDMyIGJpdCBtZW1vcnkgYXQgMHhlNDAwMDAwMCBbMHhl
NDAwMDAwMF0uDQogIEJ1cyAgMCwgZGV2aWNlICAxOCwgZnVuY3Rpb24gIDA6
DQogICAgVkdBIGNvbXBhdGlibGUgY29udHJvbGxlcjogUzMgSW5jLiBWaVJH
RS9EWCBvciAvR1ggKHJldiAxKS4NCiAgICAgIE1lZGl1bSBkZXZzZWwuICBJ
UlEgMTIuICBNYXN0ZXIgQ2FwYWJsZS4gIExhdGVuY3k9MzIuICBNaW4gR250
PTQuTWF4IExhdD0yNTUuDQogICAgICBOb24tcHJlZmV0Y2hhYmxlIDMyIGJp
dCBtZW1vcnkgYXQgMHhlMDAwMDAwMCBbMHhlMDAwMDAwMF0uDQogIEJ1cyAg
MCwgZGV2aWNlICAxOSwgZnVuY3Rpb24gIDA6DQogICAgRXRoZXJuZXQgY29u
dHJvbGxlcjogREVDIERDMjExNDAgKHJldiAzNCkuDQogICAgICBNZWRpdW0g
ZGV2c2VsLiAgRmFzdCBiYWNrLXRvLWJhY2sgY2FwYWJsZS4gIElSUSAxMS4g
IE1hc3RlciBDYXBhYmxlLiAgTGF0ZW5jeT0zMi4gIE1pbiBHbnQ9MjAuTWF4
IExhdD00MC4NCiAgICAgIEkvTyBhdCAweDYyMDAgWzB4NjIwMV0uDQogICAg
ICBOb24tcHJlZmV0Y2hhYmxlIDMyIGJpdCBtZW1vcnkgYXQgMHhlNDAwMTAw
MCBbMHhlNDAwMTAwMF0uDQogIEJ1cyAgMCwgZGV2aWNlICAyMCwgZnVuY3Rp
b24gIDA6DQogICAgU0NTSSBzdG9yYWdlIGNvbnRyb2xsZXI6IEFydG9wIEVs
ZWN0cm9uaWNzIEFUUDg1MFVGIChyZXYgMSkuDQogICAgICBGYXN0IGRldnNl
bC4gIElSUSAxMC4gIE1hc3RlciBDYXBhYmxlLiAgTGF0ZW5jeT0yNTQuICAN
CiAgICAgIEkvTyBhdCAweDYzMDAgWzB4NjMwMV0uDQogICAgICBJL08gYXQg
MHg2NDAwIFsweDY0MDFdLg0KICAgICAgSS9PIGF0IDB4NjUwMCBbMHg2NTAx
XS4NCiAgICAgIEkvTyBhdCAweDY2MDAgWzB4NjYwMV0uDQogICAgICBJL08g
YXQgMHg2NzAwIFsweDY3MDFdLg0KDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQ0KL3Byb2MvaW50ZXJydXB0cyBvdXRwdXQ6DQoNCiAgICAgICAgICAg
Q1BVMCAgICAgICBDUFUxICAgICAgIA0KICAwOiAgICAgIDc3NjY3ICAgICAg
NjM5NzYgICAgSU8tQVBJQy1lZGdlICB0aW1lcg0KICAxOiAgICAgICAgIDUx
ICAgICAgICAgNDcgICAgSU8tQVBJQy1lZGdlICBrZXlib2FyZA0KICAyOiAg
ICAgICAgICAwICAgICAgICAgIDAgICAgICAgICAgWFQtUElDICBjYXNjYWRl
DQogIDQ6ICAgICAgIDMyNTQgICAgICAgMjMxNiAgICBJTy1BUElDLWVkZ2Ug
IHNlcmlhbA0KICA1OiAgICAgICAgICAwICAgICAgICAgIDEgICAgSU8tQVBJ
Qy1lZGdlICBocGMNCiAgODogICAgICAgICAgMSAgICAgICAgICAwICAgIElP
LUFQSUMtZWRnZSAgcnRjDQogMTI6ICAgICAgICA3NzYgICAgICAgIDM4OCAg
ICBJTy1BUElDLWVkZ2UgIFBTLzIgTW91c2UNCiAxMzogICAgICAgICAgMSAg
ICAgICAgICAwICAgICAgICAgIFhULVBJQyAgZnB1DQogMTY6ICAgICAgIDE4
MDYgICAgICAgMTgwNyAgIElPLUFQSUMtbGV2ZWwgIGlkZTANCiAxNzogICAg
ICAgICA0OSAgICAgICAgIDQ1ICAgSU8tQVBJQy1sZXZlbCAgRGlnaXRhbCBE
UzIxMTQwIFR1bGlwDQogMTk6ICAgICAgICAgIDkgICAgICAgICAgOSAgIElP
LUFQSUMtbGV2ZWwgIG5jcjUzYzh4eA0KTk1JOiAgICAgICAgICAwDQpJUEk6
ICAgICAgICAgIDANCg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KPT09DQoNCg==
--998314481-513185178-903627920=:28909
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="syslog.2.1.117"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.96.980820120645.29513A@Astro.Dyer.Vanderbilt.Edu>
Content-Description:

QXVnIDIwIDExOjMzOjA0IFpvc21hIGtlcm5lbDogTGludXggdmVyc2lvbiAy
LjEuMTE3IChyb290QFpvc21hKSAoZ2NjIHZlcnNpb24gMi44LjEpICMxIFNN
UCBUaHUgQXVnIDIwIDEwOjMxOjAzIENEVCAxOTk4DQpBdWcgMjAgMTE6MzM6
MDQgWm9zbWEga2VybmVsOiBJbnRlbCBNdWx0aVByb2Nlc3NvciBTcGVjaWZp
Y2F0aW9uIHYxLjQNCkF1ZyAyMCAxMTozMzowNCBab3NtYSBrZXJuZWw6ICAg
ICBWaXJ0dWFsIFdpcmUgY29tcGF0aWJpbGl0eSBtb2RlLg0KQXVnIDIwIDEx
OjMzOjA0IFpvc21hIGtlcm5lbDogT0VNIElEOiBPRU0wMDAwMCBQcm9kdWN0
IElEOiBQUk9EMDAwMDAwMDAgQVBJQyBhdDogMHhGRUUwMDAwMA0KQXVnIDIw
IDExOjMzOjA0IFpvc21hIGtlcm5lbDogUHJvY2Vzc29yICMwIFBlbnRpdW0o
dG0pIEFQSUMgdmVyc2lvbiAxNw0KQXVnIDIwIDExOjMzOjA0IFpvc21hIGtl
cm5lbDogUHJvY2Vzc29yICMxIFBlbnRpdW0odG0pIEFQSUMgdmVyc2lvbiAx
Nw0KQXVnIDIwIDExOjMzOjA0IFpvc21hIGtlcm5lbDogSS9PIEFQSUMgIzIg
VmVyc2lvbiAxNyBhdCAweEZFQzAwMDAwLg0KQXVnIDIwIDExOjMzOjA0IFpv
c21hIGtlcm5lbDogUHJvY2Vzc29yczogMg0KQXVnIDIwIDExOjMzOjA0IFpv
c21hIGtlcm5lbDogbWFwcGVkIEFQSUMgdG8gZmZmZmUwMDAgKGZlZTAwMDAw
KQ0KQXVnIDIwIDExOjMzOjA0IFpvc21hIGtlcm5lbDogbWFwcGVkIElPQVBJ
QyB0byBmZmZmZDAwMCAoZmVjMDAwMDApDQpBdWcgMjAgMTE6MzM6MDQgWm9z
bWEga2VybmVsOiBpZGVfc2V0dXA6IGhkYT0xMDI3LDI1NSw2Mw0KQXVnIDIw
IDExOjMzOjA0IFpvc21hIGtlcm5lbDogQ29uc29sZTogY29sb3VyIFZHQSsg
ODB4MjUNCkF1ZyAyMCAxMTozMzowNCBab3NtYSBrZXJuZWw6IENhbGlicmF0
aW5nIGRlbGF5IGxvb3AuLi4gNzkuNjcgQm9nb01JUFMNCkF1ZyAyMCAxMToz
MzowNCBab3NtYSBrZXJuZWw6IE1lbW9yeTogMTI2NjQway8xMzAwNDhrIGF2
YWlsYWJsZSAoMTE0NGsga2VybmVsIGNvZGUsIDQwMGsgcmVzZXJ2ZWQsIDE3
ODBrIGRhdGEsIDg0ayBpbml0KQ0KQXVnIDIwIDExOjMzOjA0IFpvc21hIGtl
cm5lbDogUE9TSVggY29uZm9ybWFuY2UgdGVzdGluZyBieSBVTklGSVgNCkF1
ZyAyMCAxMTozMzowNCBab3NtYSBrZXJuZWw6IENQVTA6IEludGVsIFBlbnRp
dW0gNzUrIHN0ZXBwaW5nIDBjDQpBdWcgMjAgMTE6MzM6MDQgWm9zbWEga2Vy
bmVsOiBjYWxpYnJhdGluZyBBUElDIHRpbWVyIC4uLiANCkF1ZyAyMCAxMToz
MzowNCBab3NtYSBrZXJuZWw6IC4uLi4uIENQVSBjbG9jayBzcGVlZCBpcyAx
OTkuMzk5MCBNSHouDQpBdWcgMjAgMTE6MzM6MDQgWm9zbWEga2VybmVsOiAu
Li4uLiBBUElDIGJ1cyBjbG9jayBzcGVlZCBpcyA2Ni40NjYyIE1Iei4NCkF1
ZyAyMCAxMTozMzowNCBab3NtYSBrZXJuZWw6IEJvb3RpbmcgcHJvY2Vzc29y
IDEgZWlwIDIwMDANCkF1ZyAyMCAxMTozMzowNCBab3NtYSBrZXJuZWw6IENh
bGlicmF0aW5nIGRlbGF5IGxvb3AuLi4gNzkuNjcgQm9nb01JUFMNCkF1ZyAy
MCAxMTozMzowNCBab3NtYSBrZXJuZWw6IE9LLg0KQXVnIDIwIDExOjMzOjA0
IFpvc21hIGtlcm5lbDogQ1BVMTogSW50ZWwgUGVudGl1bSA3NSsgc3RlcHBp
bmcgMGMNCkF1ZyAyMCAxMTozMzowNCBab3NtYSBrZXJuZWw6IGVuYWJsaW5n
IHN5bW1ldHJpYyBJTyBtb2RlLi4uIC4uLmRvbmUuDQpBdWcgMjAgMTE6MzM6
MDQgWm9zbWEga2VybmVsOiBFTkFCTElORyBJTy1BUElDIElSUXMNCkF1ZyAy
MCAxMTozMzowNCBab3NtYSBrZXJuZWw6IGluaXQgSU9fQVBJQyBJUlFzDQpB
dWcgMjAgMTE6MzM6MDQgWm9zbWEga2VybmVsOiAgSU8tQVBJQyBwaW4gMCwg
MjAsIDIxLCAyMiwgMjMgbm90IGNvbm5lY3RlZC4NCkF1ZyAyMCAxMTozMzow
NCBab3NtYSBrZXJuZWw6IG51bWJlciBvZiBNUCBJUlEgc291cmNlczogMjEu
DQpBdWcgMjAgMTE6MzM6MDQgWm9zbWEga2VybmVsOiBudW1iZXIgb2YgSU8t
QVBJQyByZWdpc3RlcnM6IDI0Lg0KQXVnIDIwIDExOjMzOjA0IFpvc21hIGtl
cm5lbDogdGVzdGluZyB0aGUgSU8gQVBJQy4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uDQpBdWcgMjAgMTE6MzM6MDQgWm9zbWEga2VybmVsOiAuLi4uIHJlZ2lz
dGVyICMwMDogMDIwMDAwMDANCkF1ZyAyMCAxMTozMzowNCBab3NtYSBrZXJu
ZWw6IC4uLi4uLi4gICAgOiBwaHlzaWNhbCBBUElDIGlkOiAwMg0KQXVnIDIw
IDExOjMzOjA0IFpvc21hIGtlcm5lbDogLi4uLiByZWdpc3RlciAjMDE6IDAw
MTcwMDExDQpBdWcgMjAgMTE6MzM6MDQgWm9zbWEga2VybmVsOiAuLi4uLi4u
ICAgICA6IG1heCByZWRpcmVjdGlvbiBlbnRyaWVzOiAwMDE3DQpBdWcgMjAg
MTE6MzM6MDQgWm9zbWEga2VybmVsOiAuLi4uLi4uICAgICA6IElPIEFQSUMg
dmVyc2lvbjogMDAxMQ0KQXVnIDIwIDExOjMzOjA0IFpvc21hIGtlcm5lbDog
Li4uLiByZWdpc3RlciAjMDI6IDAwMDAwMDAwDQpBdWcgMjAgMTE6MzM6MDQg
Wm9zbWEga2VybmVsOiAuLi4uLi4uICAgICA6IGFyYml0cmF0aW9uOiAwMA0K
QXVnIDIwIDExOjMzOjA0IFpvc21hIGtlcm5lbDogLi4uLiBJUlEgcmVkaXJl
Y3Rpb24gdGFibGU6DQpBdWcgMjAgMTE6MzM6MDQgWm9zbWEga2VybmVsOiAg
TlIgTG9nIFBoeSBNYXNrIFRyaWcgSVJSIFBvbCBTdGF0IERlc3QgRGVsaSBW
ZWN0OiAgIA0KQXVnIDIwIDExOjMzOjA0IFpvc21hIGtlcm5lbDogIDAwIDAw
MCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAgICAwICAgIDAgICAgMDANCkF1
ZyAyMCAxMTozMzowNCBab3NtYSBrZXJuZWw6ICAwMSAwRkYgMEYgIDAgICAg
MCAgICAwICAgMCAgIDAgICAgMSAgICAxICAgIDU5DQpBdWcgMjAgMTE6MzM6
MDQgWm9zbWEga2VybmVsOiAgMDIgMEZGIDBGICAwICAgIDAgICAgMCAgIDAg
ICAwICAgIDEgICAgMSAgICA1MQ0KQXVnIDIwIDExOjMzOjA0IFpvc21hIGtl
cm5lbDogIDAzIDBGRiAwRiAgMCAgICAwICAgIDAgICAwICAgMCAgICAxICAg
IDEgICAgNjENCkF1ZyAyMCAxMTozMzowNCBab3NtYSBrZXJuZWw6ICAwNCAw
RkYgMEYgIDAgICAgMCAgICAwICAgMCAgIDAgICAgMSAgICAxICAgIDY5DQpB
dWcgMjAgMTE6MzM6MDQgWm9zbWEga2VybmVsOiAgMDUgMEZGIDBGICAwICAg
IDAgICAgMCAgIDAgICAwICAgIDEgICAgMSAgICA3MQ0KQXVnIDIwIDExOjMz
OjA0IFpvc21hIGtlcm5lbDogIDA2IDBGRiAwRiAgMCAgICAwICAgIDAgICAw
ICAgMCAgICAxICAgIDEgICAgNzkNCkF1ZyAyMCAxMTozMzowNCBab3NtYSBr
ZXJuZWw6ICAwNyAwRkYgMEYgIDAgICAgMCAgICAwICAgMCAgIDAgICAgMSAg
ICAxICAgIDgxDQpBdWcgMjAgMTE6MzM6MDQgWm9zbWEga2VybmVsOiAgMDgg
MEZGIDBGICAwICAgIDAgICAgMCAgIDAgICAwICAgIDEgICAgMSAgICA4OQ0K
QXVnIDIwIDExOjMzOjA0IFpvc21hIGtlcm5lbDogIDA5IDAwMCAwMCAgMSAg
ICAwICAgIDAgICAwICAgMCAgICAwICAgIDAgICAgMDANCkF1ZyAyMCAxMToz
MzowNCBab3NtYSBrZXJuZWw6ICAwYSAwRkYgMEYgIDAgICAgMCAgICAwICAg
MCAgIDAgICAgMSAgICAxICAgIDkxDQpBdWcgMjAgMTE6MzM6MDQgWm9zbWEg
a2VybmVsOiAgMGIgMEZGIDBGICAwICAgIDAgICAgMCAgIDAgICAwICAgIDEg
ICAgMSAgICA5OQ0KQXVnIDIwIDExOjMzOjA0IFpvc21hIGtlcm5lbDogIDBj
IDBGRiAwRiAgMCAgICAwICAgIDAgICAwICAgMCAgICAxICAgIDEgICAgQTEN
CkF1ZyAyMCAxMTozMzowNCBab3NtYSBrZXJuZWw6ICAwZCAwMDAgMDAgIDEg
ICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAwICAgIDAwDQpBdWcgMjAgMTE6
MzM6MDQgWm9zbWEga2VybmVsOiAgMGUgMEZGIDBGICAwICAgIDAgICAgMCAg
IDAgICAwICAgIDEgICAgMSAgICBBOQ0KQXVnIDIwIDExOjMzOjA0IFpvc21h
IGtlcm5lbDogIDBmIDBGRiAwRiAgMCAgICAwICAgIDAgICAwICAgMCAgICAx
ICAgIDEgICAgQjENCkF1ZyAyMCAxMTozMzowNCBab3NtYSBrZXJuZWw6ICAx
MCAwRkYgMEYgIDAgICAgMSAgICAwICAgMSAgIDAgICAgMSAgICAxICAgIEI5
DQpBdWcgMjAgMTE6MzM6MDQgWm9zbWEga2VybmVsOiAgMTEgMEZGIDBGICAw
ICAgIDEgICAgMCAgIDEgICAwICAgIDEgICAgMSAgICBDMQ0KQXVnIDIwIDEx
OjMzOjA0IFpvc21hIGtlcm5lbDogIDEyIDBGRiAwRiAgMCAgICAxICAgIDAg
ICAxICAgMCAgICAxICAgIDEgICAgQzkNCkF1ZyAyMCAxMTozMzowNCBab3Nt
YSBrZXJuZWw6ICAxMyAwRkYgMEYgIDAgICAgMSAgICAwICAgMSAgIDAgICAg
MSAgICAxICAgIEQxDQpBdWcgMjAgMTE6MzM6MDQgWm9zbWEga2VybmVsOiAg
MTQgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMCAgICAw
MA0KQXVnIDIwIDExOjMzOjA0IFpvc21hIGtlcm5lbDogIDE1IDAwMCAwMCAg
MSAgICAwICAgIDAgICAwICAgMCAgICAwICAgIDAgICAgMDANCkF1ZyAyMCAx
MTozMzowNCBab3NtYSBrZXJuZWw6ICAxNiAwMDAgMDAgIDEgICAgMCAgICAw
ICAgMCAgIDAgICAgMCAgICAwICAgIDAwDQpBdWcgMjAgMTE6MzM6MDQgWm9z
bWEga2VybmVsOiAgMTcgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAg
IDAgICAgMCAgICAwMA0KQXVnIDIwIDExOjMzOjA0IFpvc21hIGtlcm5lbDog
SVJRIHRvIHBpbiBtYXBwaW5nczoNCkF1ZyAyMCAxMTozMzowNCBab3NtYSBr
ZXJuZWw6IDAtPjIgMS0+MSAyLT4tMSAzLT4zIDQtPjQgNS0+NSA2LT42IDct
PjcgOC0+OCA5LT45IDEwLT4xMCAxMS0+MTEgMTItPjEyIDEzLT4xMyAxNC0+
MTQgMTUtPjE1IDE2LT4xNiAxNy0+MTcgMTgtPjE4IDE5LT4xOSAyMC0+LTEg
MjEtPi0xIDIyLT4tMSAyMy0+LTEgMjQtPi0xIDI1LT4tMSAyNi0+LTEgMjct
Pi0xIDI4LT4tMSAyOS0+LTEgMzAtPi0xIDMxLT4tMSAzMi0+LTEgMzMtPi0x
IDM0LT4tMSAzNS0+LTEgMzYtPi0xIDM3LT4tMSAzOC0+LTEgMzktPi0xIDQw
LT4tMSA0MS0+LTEgNDItPi0xIDQzLT4tMSA0NC0+LTEgNDUtPi0xIDQ2LT4t
MSA0Ny0+LTEgNDgtPi0xIDQ5LT4tMSA1MC0+LTEgNTEtPi0xIDUyLT4tMSA1
My0+LTEgNTQtPi0xIDU1LT4tMSA1Ni0+LTEgNTctPi0xIDU4LT4tMSA1OS0+
LTEgNjAtPi0xIDYxLT4tMSA2Mi0+LTEgNjMtPi0xIA0KQXVnIDIwIDExOjMz
OjA0IFpvc21hIGtlcm5lbDogLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uIGRvbmUuDQpBdWcgMjAgMTE6MzM6MDUgWm9zbWEgd2F0Y2hk
b2dbNjBdOiBjYW5ub3Qgb3BlbiAvZGV2L3RlbXBlcmF0dXJlIChlcnJubyA9
IDE5KQ0KQXVnIDIwIDExOjMzOjA0IFpvc21hIGtlcm5lbDogSW5pdGlhbGl6
aW5nIFJUIG5ldGxpbmsgc29ja2V0DQpBdWcgMjAgMTE6MzM6MDQgWm9zbWEg
a2VybmVsOiBQQ0k6IFBDSSBCSU9TIHJldmlzaW9uIDIuMTAgZW50cnkgYXQg
MHhmYjNiMA0KQXVnIDIwIDExOjMzOjA0IFpvc21hIGtlcm5lbDogUENJOiBV
c2luZyBjb25maWd1cmF0aW9uIHR5cGUgMQ0KQXVnIDIwIDExOjMzOjA0IFpv
c21hIGtlcm5lbDogUENJOiBQcm9iaW5nIFBDSSBoYXJkd2FyZQ0KQXVnIDIw
IDExOjMzOjA0IFpvc21hIGtlcm5lbDogUENJLT5BUElDIElSUSB0cmFuc2Zv
cm06IChCMCxJMTcsUDApIC0+IDE5DQpBdWcgMjAgMTE6MzM6MDQgWm9zbWEg
a2VybmVsOiBQQ0ktPkFQSUMgSVJRIHRyYW5zZm9ybTogKEIwLEkxOCxQMCkg
LT4gMTgNCkF1ZyAyMCAxMTozMzowNCBab3NtYSBrZXJuZWw6IFBDSS0+QVBJ
QyBJUlEgdHJhbnNmb3JtOiAoQjAsSTE5LFAwKSAtPiAxNw0KQXVnIDIwIDEx
OjMzOjA0IFpvc21hIGtlcm5lbDogUENJLT5BUElDIElSUSB0cmFuc2Zvcm06
IChCMCxJMjAsUDApIC0+IDE2DQpBdWcgMjAgMTE6MzM6MDQgWm9zbWEga2Vy
bmVsOiBTdGFydGluZyBrc3dhcGQgdiAxLjUgDQpBdWcgMjAgMTE6MzM6MDQg
Wm9zbWEga2VybmVsOiBTb2Z0d2FyZSBXYXRjaGRvZyBUaW1lcjogMC4wNSwg
dGltZXIgbWFyZ2luOiA2MCBzZWMNCkF1ZyAyMCAxMTozMzowNCBab3NtYSBr
ZXJuZWw6IFBJSVgzOiBJREUgY29udHJvbGxlciBvbiBQQ0kgYnVzIDAwIGRl
diAzOQ0KQXVnIDIwIDExOjMzOjA0IFpvc21hIGtlcm5lbDogUElJWDM6IGRl
dmljZSBub3QgY2FwYWJsZSBvZiBmdWxsIG5hdGl2ZSBQQ0kgbW9kZQ0KQXVn
IDIwIDExOjMzOjA0IFpvc21hIGtlcm5lbDogUElJWDM6IGRldmljZSBkaXNh
YmxlZCAoQklPUykNCkF1ZyAyMCAxMTozMzowNCBab3NtYSBrZXJuZWw6IEFF
QzYyMTA6IElERSBjb250cm9sbGVyIG9uIFBDSSBidXMgMDAgZGV2IGEwDQpB
dWcgMjAgMTE6MzM6MDQgWm9zbWEga2VybmVsOiBBRUM2MjEwOiBub3QgMTAw
YXRpdmUgbW9kZTogd2lsbCBwcm9iZSBpcnFzIGxhdGVyDQpBdWcgMjAgMTE6
MzM6MDQgWm9zbWEga2VybmVsOiBBRUM2MjEwOiBST00gZW5hYmxlZCBidXQg
bm8gYWRkcmVzcw0KQXVnIDIwIDExOjMzOjA0IFpvc21hIGtlcm5lbDogICAg
IGlkZTA6IEJNLURNQSBhdCAweDY3MDAtMHg2NzA3LCBCSU9TIHNldHRpbmdz
OiBoZGE6cGlvLCBoZGI6cGlvDQpBdWcgMjAgMTE6MzM6MDQgWm9zbWEga2Vy
bmVsOiAgICAgaWRlMTogQk0tRE1BIGF0IDB4NjcwOC0weDY3MGYsIEJJT1Mg
c2V0dGluZ3M6IGhkYzpwaW8sIGhkZDpwaW8NCkF1ZyAyMCAxMTozMzowNCBa
b3NtYSBrZXJuZWw6IGhkYTogUVVBTlRVTSBGSVJFQkFMTCBTRTguNEEsIEFU
QSBESVNLIGRyaXZlDQpBdWcgMjAgMTE6MzM6MDQgWm9zbWEga2VybmVsOiBo
ZGM6IElPTUVHQSBaSVAgMTAwIEFUQVBJLCBBVEFQSSBGTE9QUFkgZHJpdmUN
CkF1ZyAyMCAxMTozMzowNCBab3NtYSBrZXJuZWw6IGhkZDogSFAgQ09MT1JB
RE8gNUdCLCBBVEFQSSBUQVBFIGRyaXZlDQpBdWcgMjAgMTE6MzM6MDQgWm9z
bWEga2VybmVsOiBpZGUyOiBwb3J0cyBhbHJlYWR5IGluIHVzZSwgc2tpcHBp
bmcgcHJvYmUNCkF1ZyAyMCAxMTozMzowNCBab3NtYSBrZXJuZWw6IGlkZTAg
YXQgMHg2MzAwLTB4NjMwNywweDY0MDIgb24gaXJxIDE2DQpBdWcgMjAgMTE6
MzM6MDQgWm9zbWEga2VybmVsOiBpZGUxIGF0IDB4NjUwMC0weDY1MDcsMHg2
NjAyIG9uIGlycSAxNiAoc2hhcmVkIHdpdGggaWRlMCkNCkF1ZyAyMCAxMToz
MzowNCBab3NtYSBrZXJuZWw6IGlkZS10YXBlOiBoZGQ6IG92ZXJyaWRpbmcg
Y2FwYWJpbGl0aWVzLT5zcGVlZCAoYXNzdW1pbmcgNjUwS0Ivc2VjKQ0KQXVn
IDIwIDExOjMzOjA0IFpvc21hIGtlcm5lbDogaWRlLXRhcGU6IGhkZDogb3Zl
cnJpZGluZyBjYXBhYmlsaXRpZXMtPm1heF9zcGVlZCAoYXNzdW1pbmcgNjUw
S0Ivc2VjKQ0KQXVnIDIwIDExOjMzOjA0IFpvc21hIGtlcm5lbDogc2NzaTAg
OiBuY3I1M2M4eHggLSByZXZpc2lvbiAzLjBnDQpBdWcgMjAgMTE6MzM6MDQg
Wm9zbWEga2VybmVsOiBzY3NpIDogMSBob3N0Lg0KQXVnIDIwIDExOjMzOjA0
IFpvc21hIGtlcm5lbDogICBWZW5kb3I6IEhQICAgICAgICBNb2RlbDogQzQz
MjQvQzQzMjUgICAgICAgUmV2OiAxLjI3DQpBdWcgMjAgMTE6MzM6MDQgWm9z
bWEga2VybmVsOiAgIFR5cGU6ICAgQ0QtUk9NICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBTlNJIFNDU0kgcmV2aXNpb246IDAyDQpBdWcgMjAgMTE6
MzM6MDQgWm9zbWEga2VybmVsOiBEZXRlY3RlZCBzY3NpIENELVJPTSBzcjAg
YXQgc2NzaTAsIGNoYW5uZWwgMCwgaWQgMiwgbHVuIDANCkF1ZyAyMCAxMToz
MzowNCBab3NtYSBrZXJuZWw6IHNjc2kgOiBkZXRlY3RlZCAxIFNDU0kgY2Ry
b20gdG90YWwuDQpBdWcgMjAgMTE6MzM6MDQgWm9zbWEga2VybmVsOiBQYXJ0
aXRpb24gY2hlY2s6DQpBdWcgMjAgMTE6MzM6MDQgWm9zbWEga2VybmVsOiAg
aGRhOiBoZGExIGhkYTIgaGRhMyBoZGE0DQpBdWcgMjAgMTE6MzM6MDQgWm9z
bWEga2VybmVsOiAgaGRjOiBbTEJBXSAgaGRjMQ0KQXVnIDIwIDExOjMzOjA0
IFpvc21hIGtlcm5lbDogVkZTOiBNb3VudGVkIHJvb3QgKGV4dDIgZmlsZXN5
c3RlbSkgcmVhZG9ubHkuDQpBdWcgMjAgMTE6MzM6MDQgWm9zbWEga2VybmVs
OiBGcmVlaW5nIHVudXNlZCBrZXJuZWwgbWVtb3J5OiA4NGsgZnJlZWQNCkF1
ZyAyMCAxMTozMzoxMiBab3NtYSBrZXJuZWw6IA0KQXVnIDIwIDExOjMzOjEy
IFpvc21hIGtlcm5lbDogUENTIERyaXZlciB2MS4wLjAgMDQvMjgvOTcgOjog
UG9ydD0weDE0MA0KQXVnIDIwIDExOjMzOjEyIFpvc21hIGtlcm5lbDogICAg
ICAoYykgMTk5NC05NSBMYXN6bG8gU3R1cm1hbm4gKHN0dXJtYW5uQHRkaS5w
aHkudmFuZGVyYmlsdC5lZHUpDQpBdWcgMjAgMTE6MzM6MzUgWm9zbWEga2Vy
bmVsOiAgICAgIChjKSAxOTk2LTk3IEFuZHJlIEhlZHJpY2sgKGhlZHJpY2tA
YXN0cm8uZHllci52YW5kZXJiaWx0LmVkdSkNCkF1ZyAyMCAxMTozMzozNSBa
b3NtYSBrZXJuZWw6IElPNjQgRHJpdmVyIHYxLjMuMCAwMi8wOC85OCA6OiBQ
b3J0PTB4M0UwDQpBdWcgMjAgMTE6MzM6MzUgWm9zbWEga2VybmVsOiAgICAg
IChjKSAxOTk2LTk4IEFuZHJlIEhlZHJpY2sgKGhlZHJpY2tAYXN0cm8uZHll
ci52YW5kZXJiaWx0LmVkdSkNCkF1ZyAyMCAxMTozMzozNSBab3NtYSBrZXJu
ZWw6IEhQQy0xIFRLNTEyIDEuOC44IDA2LzA1Lzk4IDo6IFBvcnQ9MHgxMjAg
SVJRNT1UUlVFDQpBdWcgMjAgMTE6NTg6MzYgWm9zbWEga2VybmVsOiAgICAg
IChjKSAxOTk2LTk4IEFuZHJlIEhlZHJpY2sgKGhlZHJpY2tAYXN0cm8uZHll
ci52YW5kZXJiaWx0LmVkdSk8Nz5WRlM6IERpc2sgY2hhbmdlIGRldGVjdGVk
IG9uIGRldmljZSAxNjowMQ0KQXVnIDIwIDExOjU4OjM2IFpvc21hIGtlcm5l
bDogIGhkYzogW0xCQV0gIGhkYzENCg==
--998314481-513185178-903627920=:28909--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.altern.org/andrebalsa/doc/lkml-faq.html