Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 3 Jun 1998 10:11:26 +0700 (NSS)
From:      Ustimenko Semen <semen@iclub.nsu.ru>
To:        FreeBSD-current@FreeBSD.ORG
Subject:   volonteers need to test tx driver :-)
Message-ID:  <Pine.BSF.3.96.980603100249.20905B-300000@iclub.nsu.ru>

next in thread | raw e-mail | index | archive | help
  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.

--0-535351022-896843486=:20905
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hello!

Here is new version of driver, not commited yet.
It have a lot of debug output, and will dump
card state on any error if debug flag on interface is on.

Best regards.

P.S: It is NEW driver, not only debug output enabled.

--0-535351022-896843486=:20905
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="smc83c170.h"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.BSF.3.96.980603101126.20905C@iclub.nsu.ru>
Content-Description: /sys/pci/smc83c170.h

LyotDQogKiBDb3B5cmlnaHQgKGMpIDE5OTcgU2VtZW4gVXN0aW1lbmtvDQog
KiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KICoNCiAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dA0KICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQogKiBhcmUgbWV0
Og0KICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCiAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4NCiAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQogKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlDQogKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLg0KICoNCiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQNCiAqIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQ0KICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UNCiAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFDQog
KiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTA0KICogREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMNCiAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KQ0KICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QNCiAqIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkNCiAqIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YNCiAqIFNVQ0ggREFNQUdFLg0KICoNCiAqICAgICAgJElkOiBz
bWM4M2MxNzAuaCx2IDEuMTEgMTk5OC8wNS8yNCAxOTowNzowNSBnYWx2IEV4
cCAkDQogKg0KICovDQoNCi8qDQogKiBDb25maWd1cmF0aW9uDQogKi8NCiNk
ZWZpbmUgRVBJQ19NQVhfREVWSUNFUwk0DQoNCiNkZWZpbmUgVFhfUklOR19T
SVpFCQk4DQojZGVmaW5lIFJYX1JJTkdfU0laRQkJOA0KI2RlZmluZSBFUElD
X0ZVTExfRFVQTEVYCTENCiNkZWZpbmUgRVBJQ19IQUxGX0RVUExFWAkwDQoj
ZGVmaW5lIEVUSEVSX01BWF9GUkFNRV9MRU4JKEVUSEVSX01BWF9MRU4gKyBF
VEhFUl9DUkNfTEVOKQ0KDQovKiBQQ0kgaWRlbnRpZmljYXRpb24gKi8NCiNk
ZWZpbmUgU01DX1ZFTkRPUklECQkweDEwQjgNCiNkZWZpbmUgQ0hJUElEXzgz
QzE3MAkJMHgwMDA1DQojZGVmaW5lCVBDSV9WRU5ET1JJRCh4KQkJKCh4KSAm
IDB4RkZGRikNCiNkZWZpbmUJUENJX0NISVBJRCh4KQkJKCgoeCkgPj4gMTYp
ICYgMHhGRkZGKQ0KDQovKiBQQ0kgY29uZmlndXJhdGlvbiAqLw0KI2RlZmlu
ZQlQQ0lfQ0ZJRAkweDAwCS8qIENvbmZpZ3VyYXRpb24gSUQgKi8NCiNkZWZp
bmUJUENJX0NGQ1MJMHgwNAkvKiBDb25maWd1cnRpb24gQ29tbWFuZC9TdGF0
dXMgKi8NCiNkZWZpbmUJUENJX0NGUlYJMHgwOAkvKiBDb25maWd1cmF0aW9u
IFJldmlzaW9uICovDQojZGVmaW5lCVBDSV9DRkxUCTB4MGMJLyogQ29uZmln
dXJhdGlvbiBMYXRlbmN5IFRpbWVyICovDQojZGVmaW5lCVBDSV9DQklPCTB4
MTAJLyogQ29uZmlndXJhdGlvbiBCYXNlIElPIEFkZHJlc3MgKi8NCiNkZWZp
bmUJUENJX0NCTUEJMHgxNAkvKiBDb25maWd1cmF0aW9uIEJhc2UgTWVtb3J5
IEFkZHJlc3MgKi8NCiNkZWZpbmUJUENJX0NGSVQJMHgzYwkvKiBDb25maWd1
cmF0aW9uIEludGVycnVwdCAqLw0KI2RlZmluZQlQQ0lfQ0ZEQQkweDQwCS8q
IENvbmZpZ3VyYXRpb24gRHJpdmVyIEFyZWEgKi8NCg0KI2RlZmluZQlQQ0lf
Q09ORl9XUklURShyLCB2KQlwY2lfY29uZl93cml0ZShjb25maWdfaWQsIChy
KSwgKHYpKQ0KI2RlZmluZQlQQ0lfQ09ORl9SRUFEKHIpCXBjaV9jb25mX3Jl
YWQoY29uZmlnX2lkLCAocikpDQoNCi8qIEVQSUMncyByZWdpc3RlcnMgKi8N
CiNkZWZpbmUJQ09NTUFORAkJMHgwMDAwDQojZGVmaW5lCUlOVFNUQVQJCTB4
MDAwNAkJLyogSW50ZXJydXB0IHN0YXR1cy4gU2VlIGJlbG93ICovDQojZGVm
aW5lCUlOVE1BU0sJCTB4MDAwOAkJLyogSW50ZXJydXB0IG1hc2suIFNlZSBi
ZWxvdyAqLw0KI2RlZmluZQlHRU5DVEwJCTB4MDAwQw0KI2RlZmluZQlOVkNU
TAkJMHgwMDEwDQojZGVmaW5lCUVFQ1RMCQkweDAwMTQJCS8qIEVFUFJPTSBj
b250cm9sICoqLw0KI2RlZmluZQlURVNUMQkJMHgwMDFDCQkvKiBYWFhYWCAq
Lw0KI2RlZmluZQlDUkNDTlQJCTB4MDAyMAkJLyogQ1JDIGVycm9yIGNvdW50
ZXIgKi8NCiNkZWZpbmUJQUxJQ05UCQkweDAwMjQJCS8qIEZyYW1lVG9vTGFu
ZyBlcnJvciBjb3VudGVyICovDQojZGVmaW5lCU1QQ05UCQkweDAwMjgJCS8q
IE1pc3NlZEZyYW1lcyBlcnJvciBjb3VudGVycyAqLw0KI2RlZmluZQlNSUlD
VEwJCTB4MDAzMA0KI2RlZmluZQlNSUlEQVRBCQkweDAwMzQNCiNkZWZpbmUJ
TUlJQ0ZHCQkweDAwMzgNCiNkZWZpbmUgSVBHCQkweDAwM0MNCiNkZWZpbmUJ
TEFOMAkJMHgwMDQwCQkvKiBNQUMgYWRkcmVzcyAqLw0KI2RlZmluZQlMQU4x
CQkweDAwNDQJCS8qIE1BQyBhZGRyZXNzICovDQojZGVmaW5lCUxBTjIJCTB4
MDA0OAkJLyogTUFDIGFkZHJlc3MgKi8NCiNkZWZpbmUJSURfQ0hLCQkweDAw
NEMNCiNkZWZpbmUJTUMwCQkweDAwNTAJCS8qIE11bHRpY2FzdCBmaWx0ZXIg
dGFibGUgKi8NCiNkZWZpbmUJTUMxCQkweDAwNTQJCS8qIE11bHRpY2FzdCBm
aWx0ZXIgdGFibGUgKi8NCiNkZWZpbmUJTUMyCQkweDAwNTgJCS8qIE11bHRp
Y2FzdCBmaWx0ZXIgdGFibGUgKi8NCiNkZWZpbmUJTUMzCQkweDAwNUMJCS8q
IE11bHRpY2FzdCBmaWx0ZXIgdGFibGUgKi8NCiNkZWZpbmUJUlhDT04JCTB4
MDA2MAkJLyogUnggY29udHJvbCByZWdpc3RlciAqLw0KI2RlZmluZQlUWENP
TgkJMHgwMDcwCQkvKiBUeCBjb250cm9sIHJlZ2lzdGVyICovDQojZGVmaW5l
CVRYU1RBVAkJMHgwMDc0DQojZGVmaW5lCVBSQ0RBUgkJMHgwMDg0CQkvKiBS
eFJpbmcgYnVzIGFkZHJlc3MgKi8NCiNkZWZpbmUJUFJTVEFUCQkweDAwQTQN
CiNkZWZpbmUJUFJDUFRIUgkJMHgwMEIwDQojZGVmaW5lCVBUQ0RBUgkJMHgw
MEM0CQkvKiBUeFJpbmcgYnVzIGFkZHJlc3MgKi8NCiNkZWZpbmUJRVRYVEhS
CQkweDAwREMNCg0KI2RlZmluZQlDT01NQU5EX1NUT1BfUlgJCTB4MDENCiNk
ZWZpbmUJQ09NTUFORF9TVEFSVF9SWAkweDAyDQojZGVmaW5lCUNPTU1BTkRf
VFhRVUVVRUQJMHgwNA0KI2RlZmluZQlDT01NQU5EX1JYUVVFVUVECTB4MDgN
CiNkZWZpbmUJQ09NTUFORF9ORVhURlJBTUUJMHgxMA0KI2RlZmluZQlDT01N
QU5EX1NUT1BfVERNQQkweDIwDQojZGVmaW5lCUNPTU1BTkRfU1RPUF9SRE1B
CTB4NDANCiNkZWZpbmUJQ09NTUFORF9UWFVHTwkJMHg4MA0KDQovKiBUeCB0
aHJlc2hvbGQgKi8NCiNkZWZpbmUgVFhfRklGT19USFJFU0gJMHg4MAkJLyog
MHg0MCBvciAweDEwICovDQoNCi8qIEludGVycnVwdCByZWdpc3RlciBiaXRz
ICovDQojZGVmaW5lIElOVFNUQVRfUkNDCTB4MDAwMDAwMDENCiNkZWZpbmUg
SU5UU1RBVF9IQ0MJMHgwMDAwMDAwMg0KI2RlZmluZSBJTlRTVEFUX1JRRQkw
eDAwMDAwMDA0DQojZGVmaW5lIElOVFNUQVRfT1ZXCTB4MDAwMDAwMDgJDQoj
ZGVmaW5lIElOVFNUQVRfUlhFCTB4MDAwMDAwMTAJDQojZGVmaW5lIElOVFNU
QVRfVFhDCTB4MDAwMDAwMjANCiNkZWZpbmUgSU5UU1RBVF9UQ0MJMHgwMDAw
MDA0MAkNCiNkZWZpbmUgSU5UU1RBVF9UUUUJMHgwMDAwMDA4MAkNCiNkZWZp
bmUgSU5UU1RBVF9UWFUJMHgwMDAwMDEwMA0KI2RlZmluZSBJTlRTVEFUX0NO
VAkweDAwMDAwMjAwDQojZGVmaW5lIElOVFNUQVRfUFJFSQkweDAwMDAwNDAw
DQojZGVmaW5lIElOVFNUQVRfUkNUCTB4MDAwMDA4MDAJDQojZGVmaW5lIElO
VFNUQVRfRkFUQUwJMHgwMDAwMTAwMAkvKiBPbmUgb2YgRFBFLEFQRSxQTUEs
UFRBIGhhcHBlbmQgKi8JDQojZGVmaW5lIElOVFNUQVRfVU5VU0VEMQkweDAw
MDAyMDAwDQojZGVmaW5lIElOVFNUQVRfVU5VU0VEMgkweDAwMDA0MDAwCQ0K
I2RlZmluZSBJTlRTVEFUX0dQMgkweDAwMDA4MDAwCS8qIFBIWSBFdmVudCAq
LwkNCiNkZWZpbmUgSU5UU1RBVF9JTlRfQUNUViAweDAwMDEwMDAwDQojZGVm
aW5lIElOVFNUQVRfUlhJRExFCTB4MDAwMjAwMDANCiNkZWZpbmUgSU5UU1RB
VF9UWElETEUJMHgwMDA0MDAwMA0KI2RlZmluZSBJTlRTVEFUX1JDSVAJMHgw
MDA4MDAwMAkNCiNkZWZpbmUgSU5UU1RBVF9UQ0lQCTB4MDAxMDAwMDAJDQoj
ZGVmaW5lIElOVFNUQVRfUkJFCTB4MDAyMDAwMDANCiNkZWZpbmUgSU5UU1RB
VF9SQ1RTCTB4MDA0MDAwMDAJDQojZGVmaW5lCUlOVFNUQVRfUlNWCTB4MDA4
MDAwMDANCiNkZWZpbmUJSU5UU1RBVF9EUEUJMHgwMTAwMDAwMAkvKiBQQ0kg
RmF0YWwgZXJyb3IgKi8NCiNkZWZpbmUJSU5UU1RBVF9BUEUJMHgwMjAwMDAw
MAkvKiBQQ0kgRmF0YWwgZXJyb3IgKi8NCiNkZWZpbmUJSU5UU1RBVF9QTUEJ
MHgwNDAwMDAwMAkvKiBQQ0kgRmF0YWwgZXJyb3IgKi8NCiNkZWZpbmUJSU5U
U1RBVF9QVEEJMHgwODAwMDAwMAkvKiBQQ0kgRmF0YWwgZXJyb3IgKi8NCg0K
I2RlZmluZQlHRU5DVExfU09GVF9SRVNFVAkJMHgwMDAwMDAwMQ0KI2RlZmlu
ZQlHRU5DVExfRU5BQkxFX0lOVEVSUlVQVAkJMHgwMDAwMDAwMg0KI2RlZmlu
ZQlHRU5DVExfU09GVFdBUkVfSU5URVJSVVBUCTB4MDAwMDAwMDQNCiNkZWZp
bmUJR0VOQ1RMX1BPV0VSX0RPV04JCTB4MDAwMDAwMDgNCiNkZWZpbmUJR0VO
Q1RMX09ORUNPUFkJCQkweDAwMDAwMDEwDQojZGVmaW5lCUdFTkNUTF9CSUdf
RU5ESUFOCQkweDAwMDAwMDIwDQojZGVmaW5lCUdFTkNUTF9SRUNFSVZFX0RN
QV9QUklPUklUWQkweDAwMDAwMDQwDQojZGVmaW5lCUdFTkNUTF9UUkFOU01J
VF9ETUFfUFJJT1JJVFkJMHgwMDAwMDA4MA0KI2RlZmluZQlHRU5DVExfUkVD
RUlWRV9GSUZPX1RIUkVTSE9MRDEyOAkweDAwMDAwMzAwDQojZGVmaW5lCUdF
TkNUTF9SRUNFSVZFX0ZJRk9fVEhSRVNIT0xEOTYJMHgwMDAwMDIwMA0KI2Rl
ZmluZQlHRU5DVExfUkVDRUlWRV9GSUZPX1RIUkVTSE9MRDY0CTB4MDAwMDAx
MDANCiNkZWZpbmUJR0VOQ1RMX1JFQ0VJVkVfRklGT19USFJFU0hPTEQzMgkw
eDAwMDAwMDAwDQojZGVmaW5lCUdFTkNUTF9NRU1PUllfUkVBRF9MSU5FCQkw
eDAwMDAwNDAwDQojZGVmaW5lCUdFTkNUTF9NRU1PUllfUkVBRF9NVUxUSVBM
RQkweDAwMDAwODAwDQojZGVmaW5lCUdFTkNUTF9TT0ZUV0FSRTEJCTB4MDAw
MDEwMDANCiNkZWZpbmUJR0VOQ1RMX1NPRlRXQVJFMgkJMHgwMDAwMjAwMA0K
I2RlZmluZQlHRU5DVExfUkVTRVRfUEhZCQkweDAwMDA0MDAwDQoNCiNkZWZp
bmUJTlZDVExfRU5BQkxFX01FTU9SWV9NQVAJCTB4MDAwMDAwMDENCiNkZWZp
bmUJTlZDVExfQ0xPQ0tfUlVOX1NVUFBPUlRFRAkweDAwMDAwMDAyDQojZGVm
aW5lCU5WQ1RMX0dQMV9PVVRQVVRfRU5BQkxFCQkweDAwMDAwMDA0DQojZGVm
aW5lCU5WQ1RMX0dQMl9PVVRQVVRfRU5BQkxFCQkweDAwMDAwMDA4DQojZGVm
aW5lCU5WQ1RMX0dQMQkJCTB4MDAwMDAwMTANCiNkZWZpbmUJTlZDVExfR1Ay
CQkJMHgwMDAwMDAyMA0KI2RlZmluZQlOVkNUTF9DQVJEQlVTX01PREUJCTB4
MDAwMDAwNDANCiNkZWZpbmUJTlZDVExfSVBHX0RFTEFZX01BU0soeCkJCSgo
eCYweEYpPDw3KQ0KDQojZGVmaW5lCVJYQ09OX1NBVkVfRVJST1JFRF9QQUNL
RVRTCTB4MDAwMDAwMDENCiNkZWZpbmUJUlhDT05fUkVDRUlWRV9SVU5UX0ZS
QU1FUwkweDAwMDAwMDAyDQojZGVmaW5lCVJYQ09OX1JFQ0VJVkVfQlJPQURD
QVNUX0ZSQU1FUwkweDAwMDAwMDA0DQojZGVmaW5lCVJYQ09OX1JFQ0VJVkVf
TVVMVElDQVNUX0ZSQU1FUwkweDAwMDAwMDA4DQojZGVmaW5lCVJYQ09OX1JF
Q0VJVkVfSU5WRVJTRV9JTkRJVklEVUFMX0FERFJFU1NfRlJBTUVTCTB4MDAw
MDAwMTANCiNkZWZpbmUJUlhDT05fUFJPTUlTQ1VPVVNfTU9ERQkJMHgwMDAw
MDAyMA0KI2RlZmluZQlSWENPTl9NT05JVE9SX01PREUJCTB4MDAwMDAwNDAN
CiNkZWZpbmUJUlhDT05fRUFSTFlfUkVDRUlWRV9FTkFCTEUJMHgwMDAwMDA4
MA0KI2RlZmluZQlSWENPTl9FWFRFUk5BTF9CVUZGRVJfRElTQUJMRQkweDAw
MDAwMDAwDQojZGVmaW5lCVJYQ09OX0VYVEVSTkFMX0JVRkZFUl8xNksJMHgw
MDAwMDEwMA0KI2RlZmluZQlSWENPTl9FWFRFUk5BTF9CVUZGRVJfMzJLCTB4
MDAwMDAyMDANCiNkZWZpbmUJUlhDT05fRVhURVJOQUxfQlVGRkVSXzEyOEsJ
MHgwMDAwMDMwMA0KDQojZGVmaW5lIFRYQ09OX0VBUkxZX1RSQU5TTUlUX0VO
QUJMRQkweDAwMDAwMDAxDQojZGVmaW5lIFRYQ09OX0xPT1BCQUNLX0RJU0FC
TEUJCTB4MDAwMDAwMDANCiNkZWZpbmUgVFhDT05fTE9PUEJBQ0tfTU9ERV9J
TlQJCTB4MDAwMDAwMDINCiNkZWZpbmUgVFhDT05fTE9PUEJBQ0tfTU9ERV9Q
SFkJCTB4MDAwMDAwMDQNCiNkZWZpbmUgVFhDT05fTE9PUEJBQ0tfTU9ERQkJ
MHgwMDAwMDAwNg0KI2RlZmluZSBUWENPTl9GVUxMX0RVUExFWAkJMHgwMDAw
MDAwNg0KI2RlZmluZSBUWENPTl9TTE9UX1RJTUUJCQkweDAwMDAwMDc4DQoN
CiNpZiBkZWZpbmVkKEVBUkxZX1RYKQ0KICNkZWZpbmUgVFhDT05fREVGQVVM
VAkJKFRYQ09OX1NMT1RfVElNRSB8IFRYQ09OX0VBUkxZX1RSQU5TTUlUX0VO
QUJMRSkNCiAjZGVmaW5lIFRSQU5TTUlUX1RIUkVTSE9MRAkweDQwDQojZWxz
ZQ0KICNkZWZpbmUgVFhDT05fREVGQVVMVAkJKFRYQ09OX1NMT1RfVElNRSkN
CiNlbmRpZg0KI2lmIGRlZmluZWQoRUFSTFlfUlgpDQogI2RlZmluZSBSWENP
Tl9ERUZBVUxUCQkoUlhDT05fRUFSTFlfUkVDRUlWRV9FTkFCTEUgfCBSWENP
Tl9TQVZFX0VSUk9SRURfUEFDS0VUUykNCiNlbHNlDQogI2RlZmluZSBSWENP
Tl9ERUZBVUxUCQkoMCkNCiNlbmRpZg0KLyoNCiAqIE5hdGlvbmFsIFNlbWlj
b25kdWN0b3IncyBEUDgzODQwQSBSZWdpc3RlcnMgYW5kIGJpdHMNCiAqLw0K
I2RlZmluZQlEUDgzODQwX09VSQkweDA4MDAxNw0KI2RlZmluZSBEUDgzODQw
X0JNQ1IJMHgwMAkvKiBDb250cm9sIHJlZ2lzdGVyICovDQojZGVmaW5lIERQ
ODM4NDBfQk1TUgkweDAxCS8qIFN0YXR1cyByZ2lzdGVyICovDQojZGVmaW5l
CURQODM4NDBfQU5BUgkweDA0CS8qIEF1dG9uZWdvdGlhdGlvbiBhZHZlcnRp
c2luZyByZWdpc3RlciAqLw0KI2RlZmluZQlEUDgzODQwX0xQQVIJMHgwNQkv
KiBMaW5rIFBhcnRuZXIgQWJpbGl0eSByZWdpc3RlciAqLw0KI2RlZmluZSBE
UDgzODQwX0FORVIJMHgwNgkvKiBBdXRvLU5lZ290aWF0aW9uIEV4cGFuc2lv
biBSZWdpc3RlciAqLw0KI2RlZmluZSBEUDgzODQwX1BBUgkweDE5CS8qIFBI
WSBBZGRyZXNzIFJlZ2lzdGVyICovDQojZGVmaW5lCURQODM4NDBfUEhZSURS
MQkweDAyDQojZGVmaW5lCURQODM4NDBfUEhZSURSMgkweDAzDQoNCiNkZWZp
bmUgQk1DUl9SRVNFVAkJMHg4MDAwDQojZGVmaW5lIEJNQ1JfMTAwTUJQUwkJ
MHgyMDAwCS8qIDEwLzEwMCBNYnBzICovDQojZGVmaW5lIEJNQ1JfQVVUT05F
R09USUFUSU9OCTB4MTAwMAkvKiBPTi9PRkYgKi8NCiNkZWZpbmUgQk1DUl9S
RVNUQVJUX0FVVE9ORUcJMHgwMjAwDQojZGVmaW5lCUJNQ1JfRlVMTF9EVVBM
RVgJMHgwMTAwDQoNCiNkZWZpbmUJQk1TUl8xMDBCQVNFX1Q0CQkweDgwMDAN
CiNkZWZpbmUJQk1TUl8xMDBCQVNFX1RYX0ZECTB4NDAwMA0KI2RlZmluZQlC
TVNSXzEwMEJBU0VfVFgJCTB4MjAwMA0KI2RlZmluZQlCTVNSXzEwQkFTRV9U
X0ZECTB4MTAwMA0KI2RlZmluZQlCTVNSXzEwQkFTRV9UCQkweDA4MDANCiNk
ZWZpbmUJQk1TUl9BVVRPTkVHX0NPTVBMRVRFCTB4MDAyMA0KI2RlZmluZSBC
TVNSX0FVVE9ORUdfQUJMRQkweDAwMDgNCiNkZWZpbmUJQk1TUl9MSU5LX1NU
QVRVUwkweDAwMDQNCg0KI2RlZmluZSBQQVJfRlVMTF9EVVBMRVgJCTB4MDQw
MA0KDQojZGVmaW5lIEFORVJfTVVMVElQTEVfTElOS19GQVVMVAkweDEwDQoN
Ci8qIEFOQVIgYW5kIExQQVIgaGF2ZSB0aGUgc2FtZSBiaXRzLCBkZWZpbmUg
dGhlbSBvbmx5IG9uY2UgKi8NCiNkZWZpbmUJQU5BUl8xMAkJCTB4MDAyMA0K
I2RlZmluZQlBTkFSXzEwX0ZECQkweDAwNDANCiNkZWZpbmUJQU5BUl8xMDBf
VFgJCTB4MDA4MA0KI2RlZmluZQlBTkFSXzEwMF9UWF9GRAkJMHgwMTAwDQoj
ZGVmaW5lCUFOQVJfMTAwX1Q0CQkweDAyMDANCg0KLyoNCiAqIFF1YWxpdHkg
U2VtaWNvbmR1Y3RvcidzIFFTNjYxMiByZWdpc3RlcnMgYW5kIGJpdHMNCiAq
Lw0KI2RlZmluZQlRUzY2MTJfT1VJCQkweDAwNjA1MQ0KI2RlZmluZQlRUzY2
MTJfTUNUTAkJMTcNCiNkZWZpbmUJUVM2NjEyX0lOVFNUQVQJCTI5DQojZGVm
aW5lCVFTNjYxMl9JTlRNQVNLCQkzMA0KDQojZGVmaW5lCU1DVExfVDRfUFJF
U0VOVAkJMHgxMDAwCS8qIEV4dGVybmFsIFQ0IEVuYWJsZWQsIGlnbm9yZWQg
Ki8NCgkJCQkJLyogaWYgQXV0b05lZyBpcyBlbmFibGVkICovDQojZGVmaW5l
CU1DVExfQlRFWFQJCTB4MDgwMAkvKiBSZWR1Y2VzIDEwYmFzZXQgc3F1ZWxj
aCBsZXZlbCAqLw0KCQkJCQkvKiBmb3IgZXh0ZW5kZWQgY2FibGUgbGVuZ3Ro
ICovDQoNCiNkZWZpbmUJSU5UU1RBVF9BTl9DT01QTEVURQkweDQwCS8qIEF1
dG9uZWdvdGlhdGlvbiBjb21wbGV0ZSAqLw0KI2RlZmluZQlJTlRTVEFUX1JG
X0RFVEVDVEVECTB4MjAJLyogUmVtb3RlIEZhdWx0IGRldGVjdGVkICovDQoj
ZGVmaW5lCUlOVFNUQVRfTElOS19TVEFUVVMJMHgxMAkvKiBMaW5rIHN0YXR1
cyBjaGFuZ2VkICovDQojZGVmaW5lCUlOVFNUQVRfQU5fTFBfQUNLCTB4MDgJ
LyogQXV0b25lZy4gTFAgQWNrbm9sZWRnZSAqLw0KI2RlZmluZQlJTlRTVEFU
X1BEX0ZBVUxUCTB4MDQJLyogUGFyYWxsZWwgRGV0ZWN0aW9uIEZhdWx0ICov
DQojZGVmaW5lCUlOVFNUQVRfQU5fUEFHRQkJMHgwNAkvKiBBdXRvbmVnLiBQ
YWdlIFJlY2VpdmVkICovDQojZGVmaW5lCUlOVFNUQVRfUkVfQ05UX0ZVTEwJ
MHgwMQkvKiBSZWNlaXZlIEVycm9yIENvdW50ZXIgRnVsbCAqLw0KDQojZGVm
aW5lCUlOVE1BU0tfVEhVTkRFUkxBTgkweDgwMDAJLyogRW5hYmxlIGludGVy
cnVwdHMgKi8NCg0KLyoNCiAqIFN0cnVjdHVyZXMgZGVmaW5pdGlvbiBhbmQg
RnVuY3Rpb25zIHByb3RvdHlwZXMNCiAqLw0KDQovKiBFUElDJ3MgaGFyZHdh
cmUgZGVzY3JpcHRvcnMsIG11c3QgYmUgYWxpZ25lZCBvbiBkd29yZCBpbiBt
ZW1vcnkgKi8NCi8qIE5COiB0byBtYWtlIGRyaXZlciBoYXBweSwgdGhpcyB0
d28gc3RydWN0dXJlcyBNVVNUIGhhdmUgdGhpZXIgc2l6ZXMgKi8NCi8qIGJl
IGRpdmlzb3Igb2YgUEFHRV9TSVpFICovDQpzdHJ1Y3QgZXBpY190eF9kZXNj
IHsNCgl2b2xhdGlsZSB1X2ludDE2X3QJc3RhdHVzOw0KCXZvbGF0aWxlIHVf
aW50MTZfdAl0eGxlbmd0aDsNCgl2b2xhdGlsZSB1X2ludDMyX3QJYnVmYWRk
cjsNCgl2b2xhdGlsZSB1X2ludDE2X3QJYnVmbGVuZ3RoOw0KCXZvbGF0aWxl
IHVfaW50MTZfdAljb250cm9sOw0KCXZvbGF0aWxlIHVfaW50MzJfdAluZXh0
Ow0KfTsNCnN0cnVjdCBlcGljX3J4X2Rlc2Mgew0KCXZvbGF0aWxlIHVfaW50
MTZfdAlzdGF0dXM7DQoJdm9sYXRpbGUgdV9pbnQxNl90CXJ4bGVuZ3RoOw0K
CXZvbGF0aWxlIHVfaW50MzJfdAlidWZhZGRyOw0KCXZvbGF0aWxlIHVfaW50
MzJfdAlidWZsZW5ndGg7DQoJdm9sYXRpbGUgdV9pbnQzMl90CW5leHQ7DQp9
Ow0KDQovKiBUaGlzIHN0cnVjdHVyZSBkZWZpbmVzIEVQSUMncyBmcmFnbWVu
dCBsaXN0LCBtYXhpbXVtIG51bWJlciBvZiBmcmFncyAqLw0KLyogaXMgNjMu
IExldCB1c2UgbWF4aW11bSwgYmVjb3VzZSBzaXplIG9mIHN0cnVjdCBNVVNU
IGJlIGRpdmlzb3Igb2YgKi8NCi8qIFBBR0VfU0laRSwgYW5kIHNvbWV0aW1l
cyBjb21lIG1idWZzIHdpdGggbW9yZSB0aGVuIDMwIGZyYWdzICovDQpzdHJ1
Y3QgZXBpY19mcmFnX2xpc3Qgew0KCXZvbGF0aWxlIHVfaW50MzJfdAkJbnVt
ZnJhZ3M7DQoJc3RydWN0IHsNCgkJdm9sYXRpbGUgdV9pbnQzMl90CWZyYWdh
ZGRyOw0KCQl2b2xhdGlsZSB1X2ludDMyX3QJZnJhZ2xlbjsNCgl9IGZyYWdb
NjNdOyANCgl2b2xhdGlsZSB1X2ludDMyX3QJCXBhZDsJCS8qIGFsaWduIG9u
IDI1NiBieXRlcyAqLw0KfTsNCg0KLyogVGhpcyBpcyBkcml2ZXIncyBzdHJ1
Y3R1cmUgdG8gZGVmaW5lIEVQSUMgZGVzY3JpcHRvcnMgKi8NCnN0cnVjdCBl
cGljX3J4X2J1ZmZlciB7DQoJc3RydWN0IG1idWYgKgkJbWJ1ZjsJCS8qIG1i
dWYgcmVjZWl2aW5nIHBhY2tldCAqLw0KfTsNCg0Kc3RydWN0IGVwaWNfdHhf
YnVmZmVyIHsNCglzdHJ1Y3QgbWJ1ZiAqCQltYnVmOwkJLyogbWJ1ZiBjb250
YWluZWQgcGFja2V0ICovDQp9Ow0KDQovKg0KICogTkI6IEFMSUdOIE9GIEFC
T1ZFIFNUUlVDVFVSRVMNCiAqIGVwaWNfcnhfZGVzYywgZXBpY190eF9kZXNj
LCBlcGljX2ZyYWdfbGlzdCAtIG11c3QgYmUgYWxpZ25lZCBvbiBkd29yZA0K
ICovDQoNCi8qIERyaXZlciBzdGF0dXMgc3RydWN0dXJlICovDQp0eXBlZGVm
IHN0cnVjdCB7DQoJdV9pbnQzMl90CQl1bml0Ow0KCXN0cnVjdCBlcGljX3J4
X2J1ZmZlcglyeF9idWZmZXJbUlhfUklOR19TSVpFXTsNCglzdHJ1Y3QgZXBp
Y190eF9idWZmZXIJdHhfYnVmZmVyW1RYX1JJTkdfU0laRV07DQoNCgkvKiBF
YWNoIGVsZW1lbnQgb2YgYXJyYXkgTVVTVCBiZSBhbGlnbmVkIG9uIGR3b3Jk
ICAqLw0KCS8qIGFuZCBib3VuZGVkIG9uIFBBR0VfU0laRSAJCQkgICAqLw0K
CXN0cnVjdCBlcGljX3J4X2Rlc2MJKnJ4X2Rlc2M7DQoJc3RydWN0IGVwaWNf
dHhfZGVzYwkqdHhfZGVzYzsNCglzdHJ1Y3QgZXBpY19mcmFnX2xpc3QJKnR4
X2ZsaXN0Ow0KI2lmIGRlZmluZWQoX05FVF9JRl9NRURJQV9IXykNCglzdHJ1
Y3QgaWZtZWRpYSAJCWlmbWVkaWE7DQojZW5kaWYNCglzdHJ1Y3QgYXJwY29t
CQllcGljX2FjOw0KCXVfaW50MzJfdAkJcGh5aWQ7DQoJdV9pbnQzMl90CQlj
dXJfdHg7DQoJdV9pbnQzMl90CQljdXJfcng7DQoJdV9pbnQzMl90CQlkaXJ0
eV90eDsNCgl1X2ludDMyX3QJCXBlbmRpbmdfdHhzOw0KI2lmIGRlZmluZWQo
RVBJQ19VU0VJT1NQQUNFKQ0KCXVfaW50MzJfdAkJaW9iYXNlOw0KI2Vsc2UN
CgljYWRkcl90CQkJY3NyOw0KI2VuZGlmDQoJc3RydWN0IGlmbWliX2lzb184
ODAyXzMJZG90M3N0YXRzOw0KfSBlcGljX3NvZnRjX3Q7DQoNCiNkZWZpbmUg
ZXBpY19pZiBlcGljX2FjLmFjX2lmDQojZGVmaW5lIGVwaWNfbWFjYWRkciBl
cGljX2FjLmFjX2VuYWRkcg0KI2lmIGRlZmluZWQoRVBJQ19VU0VJT1NQQUNF
KQ0KICNkZWZpbmUgQ1NSX1dSSVRFXzQoc2MscmVnLHZhbCkgb3V0bCggKHNj
KS0+aW9iYXNlICsgKHVfaW50MzJfdCkocmVnKSwgKHZhbCkgKQ0KICNkZWZp
bmUgQ1NSX1dSSVRFXzIoc2MscmVnLHZhbCkgb3V0dyggKHNjKS0+aW9iYXNl
ICsgKHVfaW50MzJfdCkocmVnKSwgKHZhbCkgKQ0KICNkZWZpbmUgQ1NSX1dS
SVRFXzEoc2MscmVnLHZhbCkgb3V0YiggKHNjKS0+aW9iYXNlICsgKHVfaW50
MzJfdCkocmVnKSwgKHZhbCkgKQ0KICNkZWZpbmUgQ1NSX1JFQURfNChzYyxy
ZWcpIGlubCggKHNjKS0+aW9iYXNlICsgKHVfaW50MzJfdCkocmVnKSApDQog
I2RlZmluZSBDU1JfUkVBRF8yKHNjLHJlZykgaW53KCAoc2MpLT5pb2Jhc2Ug
KyAodV9pbnQzMl90KShyZWcpICkNCiAjZGVmaW5lIENTUl9SRUFEXzEoc2Ms
cmVnKSBpbmIoIChzYyktPmlvYmFzZSArICh1X2ludDMyX3QpKHJlZykgKQ0K
I2Vsc2UNCiAjZGVmaW5lIENTUl9XUklURV8xKHNjLHJlZyx2YWwpICgoKih1
X2ludDhfdCopKChzYyktPmNzciArICh1X2ludDMyX3QpKHJlZykpKSA9ICh1
X2ludDhfdCkodmFsKSkNCiAjZGVmaW5lIENTUl9XUklURV8yKHNjLHJlZyx2
YWwpICgoKih1X2ludDE2X3QqKSgoc2MpLT5jc3IgKyAodV9pbnQzMl90KShy
ZWcpKSkgPSAodV9pbnQxNl90KSh2YWwpKQ0KICNkZWZpbmUgQ1NSX1dSSVRF
XzQoc2MscmVnLHZhbCkgKCgqKHVfaW50MzJfdCopKChzYyktPmNzciArICh1
X2ludDMyX3QpKHJlZykpKSA9ICh1X2ludDMyX3QpKHZhbCkpDQogI2RlZmlu
ZSBDU1JfUkVBRF8xKHNjLHJlZykgKCoodV9pbnQ4X3QqKSgoc2MpLT5jc3Ig
KyAodV9pbnQzMl90KShyZWcpKSkNCiAjZGVmaW5lIENTUl9SRUFEXzIoc2Ms
cmVnKSAoKih1X2ludDE2X3QqKSgoc2MpLT5jc3IgKyAodV9pbnQzMl90KShy
ZWcpKSkNCiAjZGVmaW5lIENTUl9SRUFEXzQoc2MscmVnKSAoKih1X2ludDMy
X3QqKSgoc2MpLT5jc3IgKyAodV9pbnQzMl90KShyZWcpKSkNCiNlbmRpZg0K
DQpzdGF0aWMgY2hhciogZXBpY19wY2lfcHJvYmUgX19QKChwY2ljaV90LCBw
Y2lkaV90KSk7DQoNCi8qIEZvbG93aW5nIGZ1bmN0aW9ucyBjYWxscyBzcGxp
bXAoKSAqLw0Kc3RhdGljIGludCBlcGljX2lmaW9jdGwgX19QKChyZWdpc3Rl
ciBzdHJ1Y3QgaWZuZXQgKiwgaW50LCBjYWRkcl90KSk7DQpzdGF0aWMgdm9p
ZCBlcGljX2lmc3RhcnQgX19QKChzdHJ1Y3QgaWZuZXQgKikpOw0Kc3RhdGlj
IHZvaWQgZXBpY19pZndhdGNoZG9nIF9fUCgoc3RydWN0IGlmbmV0ICopKTsN
CnN0YXRpYyB2b2lkIGVwaWNfcGNpX2F0dGFjaCBfX1AoKHBjaWNpX3QsIGlu
dCkpOw0Kc3RhdGljIGludCBlcGljX2luaXQgX19QKChlcGljX3NvZnRjX3Qg
KikpOw0Kc3RhdGljIHZvaWQgZXBpY19zdG9wIF9fUCgoZXBpY19zb2Z0Y190
ICopKTsNCg0Kc3RhdGljIGludCBlcGljX2lmbWVkaWFfY2hhbmdlIF9fUCgo
c3RydWN0IGlmbmV0ICopKTsNCnN0YXRpYyB2b2lkIGVwaWNfaWZtZWRpYV9z
dGF0dXMgX19QKChzdHJ1Y3QgaWZuZXQgKiwgc3RydWN0IGlmbWVkaWFyZXEg
KikpOw0KDQovKiBGb2xsb3dpbmcgZnVuY3Rpb25zIGRvZXNuJ3QgY2FsbCBz
cGxpbXAoKSAqLw0Kc3RhdGljIHZvaWQgZXBpY19pbnRyX25vcm1hbCBfX1Ao
KHZvaWQgKikpOw0Kc3RhdGljIF9faW5saW5lIHZvaWQgZXBpY19yeF9kb25l
IF9fUCgoZXBpY19zb2Z0Y190ICopKTsNCnN0YXRpYyBfX2lubGluZSB2b2lk
IGVwaWNfdHhfZG9uZSBfX1AoKGVwaWNfc29mdGNfdCAqKSk7DQpzdGF0aWMg
dm9pZCBlcGljX3NodXRkb3duIF9fUCgoaW50LCB2b2lkICopKTsNCg0Kc3Rh
dGljIGludCBlcGljX2luaXRfcmluZ3MgX19QKChlcGljX3NvZnRjX3QgKikp
Ow0Kc3RhdGljIHZvaWQgZXBpY19mcmVlX3JpbmdzIF9fUCgoZXBpY19zb2Z0
Y190ICopKTsNCnN0YXRpYyB2b2lkIGVwaWNfc3RvcF9hY3Rpdml0eSBfX1Ao
KGVwaWNfc29mdGNfdCAqKSk7DQpzdGF0aWMgdm9pZCBlcGljX3N0YXJ0X2Fj
dGl2aXR5IF9fUCgoZXBpY19zb2Z0Y190ICopKTsNCnN0YXRpYyB2b2lkIGVw
aWNfc2V0X3J4X21vZGUgX19QKChlcGljX3NvZnRjX3QgKikpOw0Kc3RhdGlj
IHZvaWQgZXBpY19zZXRfbWNfdGFibGUgX19QKChlcGljX3NvZnRjX3QgKikp
Ow0Kc3RhdGljIHZvaWQgZXBpY19zZXRfbWVkaWFfc3BlZWQgX19QKChlcGlj
X3NvZnRjX3QgKikpOw0Kc3RhdGljIHZvaWQgZXBpY19pbml0X3BoeSBfX1Ao
KGVwaWNfc29mdGNfdCAqKSk7DQpzdGF0aWMgdm9pZCBlcGljX2R1bXBfc3Rh
dGUgX19QKChlcGljX3NvZnRjX3QgKikpOw0Kc3RhdGljIGludCBlcGljX2F1
dG9uZWcgX19QKChlcGljX3NvZnRjX3QgKikpOw0KDQpzdGF0aWMgaW50IGVw
aWNfcmVhZF9lZXByb20gX19QKChlcGljX3NvZnRjX3QgKix1X2ludDE2X3Qp
KTsNCnN0YXRpYyB2b2lkIGVwaWNfb3V0cHV0X2VlcHJvbXcgX19QKChlcGlj
X3NvZnRjX3QgKiwgdV9pbnQxNl90KSk7DQpzdGF0aWMgdV9pbnQxNl90IGVw
aWNfaW5wdXRfZWVwcm9tdyBfX1AoKGVwaWNfc29mdGNfdCAqKSk7DQpzdGF0
aWMgdV9pbnQ4X3QgZXBpY19lZXByb21fY2xvY2sgX19QKChlcGljX3NvZnRj
X3QgKix1X2ludDhfdCkpOw0Kc3RhdGljIHZvaWQgZXBpY193cml0ZV9lZXBy
b21yZWcgX19QKChlcGljX3NvZnRjX3QgKix1X2ludDhfdCkpOw0Kc3RhdGlj
IHVfaW50OF90IGVwaWNfcmVhZF9lZXByb21yZWcgX19QKChlcGljX3NvZnRj
X3QgKikpOw0KDQpzdGF0aWMgaW50IGVwaWNfcmVhZF9waHlfcmVnaXN0ZXIg
X19QKChlcGljX3NvZnRjX3QgKiwgdV9pbnQxNl90KSk7DQpzdGF0aWMgdm9p
ZCBlcGljX3dyaXRlX3BoeV9yZWdpc3RlciBfX1AoKGVwaWNfc29mdGNfdCAq
LCB1X2ludDE2X3QsdV9pbnQxNl90KSk7DQo=
--0-535351022-896843486=:20905
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="if_tx.c"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.BSF.3.96.980603101126.20905D@iclub.nsu.ru>
Content-Description: /sys/pci/if_tx.c

LyotDQogKiBDb3B5cmlnaHQgKGMpIDE5OTcgU2VtZW4gVXN0aW1lbmtvIChz
ZW1lbkBpY2x1Yi5uc3UucnUpDQogKiBBbGwgcmlnaHRzIHJlc2VydmVkLg0K
ICoNCiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zDQogKiBhcmUgbWV0Og0KICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQNCiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCiAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0DQogKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlDQogKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KICoNCiAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQNCiAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQ0K
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCiAqIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFDQogKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTA0KICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMNCiAqIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKQ0KICogSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QNCiAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkN
CiAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YNCiAqIFNVQ0ggREFNQUdF
Lg0KICoNCiAqCSRJZDogaWZfdHguYyx2IDEuMjkgMTk5OC8wNS8yNiAwMjox
NjoxMSBnYWx2IEV4cCAkDQogKg0KICovDQoNCi8qDQogKiBFdGhlclBvd2Vy
IElJIDEwLzEwMCAgRmFzdCBFdGhlcm5ldCAodHgwKQ0KICogKGFrYSBTTUM5
NDMyVFggYmFzZWQgb24gU01DODNjMTcwIEVQSUMgY2hpcCkNCiAqDQogKiBU
T0RPOg0KICoJRGVhbCB3aXRoIFRYIHRocmVzaG9sZCAocHJvYmFibHkgd2Ug
c2hvdWxkIGNhbGN1bGF0ZSBpdCBkZXBlbmRpbmcNCiAqCSAgICBvbiBwcm9j
ZXNzb3Igc3BlZWQsIGFzIGRpZCB0aGUgTVMtRE9TIGRyaXZlcikuDQogKglE
ZWFsIHdpdGggYnVzIG1hc3RlcmluZywgaS5lLiBpIHJlYWx5IGRvbid0IGtu
b3cgd2hhdCB0byBkbyB3aXRoDQogKgkgICAgaXQgYW5kIGhvdyBpdCBjYW4g
aW1wcm92ZSBwZXJmb3JtYW5jZS4NCiAqCUltcGxlbWVudCBGVUxMIElGRl9N
VUxUSUNBU1Qgc3VwcG9ydC4NCiAqCUNhbGN1bGF0ZSBvcHRpbWFsIFJYIGFu
ZCBUWCByaW5ncyBzaXplLg0KICoJVGVzdCwgdGVzdCBhbmQgdGVzdCBhZ2Fp
bjotKQ0KICoJDQogKi8NCg0KLyogV2Ugc2hvdWxkIGRlZmluZSBjb21waWxl
IHRpbWUgb3B0aW9ucyBiZWZvcmUgc21jODNjMTcwLmggaW5jbHVkZWQgKi8N
Ci8qI2RlZmluZQlFUElDX05PSUZNRURJQQkxKi8NCi8qI2RlZmluZQlFUElD
X1VTRUlPU1BBQ0UJMSovDQovKiNkZWZpbmUJRUFSTFlfUlgJMSovDQovKiNk
ZWZpbmUJRUFSTFlfVFgJMSovDQojZGVmaW5lCUVQSUNfREVCVUcJMQ0KDQoj
aWYgZGVmaW5lZChFUElDX0RFQlVHKQ0KI2RlZmluZSBkcHJpbnRmKGEpIHBy
aW50ZiBhDQojZWxzZQ0KI2RlZmluZSBkcHJpbnRmKGEpDQojZW5kaWYNCg0K
LyogTWFjcm8gdG8gZ2V0IGVpdGhlciBtYnVmIGNsdXN0ZXIgb3Igbm90aGlu
ZyAqLw0KI2RlZmluZSBFUElDX01HRVRDTFVTVEVSKG0pIFwNCgl7IE1HRVRI
RFIoKG0pLE1fRE9OVFdBSVQsTVRfREFUQSk7IFwNCgkgIGlmIChtKSB7IFwN
CgkJTUNMR0VUKChtKSxNX0RPTlRXQUlUKTsgXA0KCQlpZiggTlVMTCA9PSAo
KG0pLT5tX2ZsYWdzICYgTV9FWFQpICl7IFwNCgkJCW1fZnJlZW0obSk7IFwN
CgkJCShtKSA9IE5VTEw7IFwNCgkJfSBcDQoJICB9IFwNCgl9DQoNCiNpbmNs
dWRlICJwY2kuaCINCiNpZiBOUENJID4gMA0KDQojaW5jbHVkZSA8c3lzL3Bh
cmFtLmg+DQojaW5jbHVkZSA8c3lzL3N5c3RtLmg+DQojaW5jbHVkZSA8c3lz
L21idWYuaD4NCiNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+DQojaW5jbHVkZSA8
c3lzL21hbGxvYy5oPg0KI2luY2x1ZGUgPHN5cy9rZXJuZWwuaD4NCiNpbmNs
dWRlIDxzeXMvc29ja2lvLmg+DQojaW5jbHVkZSA8bmV0L2lmLmg+DQojaWYg
ZGVmaW5lZChTSU9DU0lGTUVESUEpICYmICFkZWZpbmVkKEVQSUNfTk9JRk1F
RElBKQ0KI2luY2x1ZGUgPG5ldC9pZl9tZWRpYS5oPg0KI2VuZGlmDQojaW5j
bHVkZSA8bmV0L2lmX21pYi5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4N
CiNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+DQojaW5jbHVkZSA8dm0v
dm0uaD4NCiNpbmNsdWRlIDx2bS9wbWFwLmg+DQojaW5jbHVkZSA8bWFjaGlu
ZS9jbG9jay5oPg0KDQojaW5jbHVkZSA8cGNpL3BjaXZhci5oPg0KI2luY2x1
ZGUgPHBjaS9zbWM4M2MxNzAuaD4NCg0KI2luY2x1ZGUgImJwZmlsdGVyLmgi
DQojaWYgTkJQRklMVEVSID4gMA0KI2luY2x1ZGUgPG5ldC9icGYuaD4NCiNl
bmRpZg0KDQovKg0KICogR2xvYmFsIHZhcmlhYmxlcw0KICovDQpzdGF0aWMg
dV9sb25nIGVwaWNfcGNpX2NvdW50Ow0Kc3RhdGljIHN0cnVjdCBwY2lfZGV2
aWNlIHR4ZGV2aWNlID0geyANCgkidHgiLA0KCWVwaWNfcGNpX3Byb2JlLA0K
CWVwaWNfcGNpX2F0dGFjaCwNCgkmZXBpY19wY2lfY291bnQsDQoJTlVMTCB9
Ow0KDQovKg0KICogQXBwZW5kIHRoaXMgZHJpdmVyIHRvIHBjaSBkcml2ZXJz
IGxpc3QNCiAqLw0KREFUQV9TRVQgKCBwY2lkZXZpY2Vfc2V0LCB0eGRldmlj
ZSApOw0KDQovKg0KICogaWZpb2N0bCBmdW5jdGlvbg0KICoNCiAqIHNwbGlt
cCgpIGludm9rZWQgaGVyZQ0KICovDQpzdGF0aWMgaW50DQplcGljX2lmaW9j
dGwgX19QKCgNCiAgICByZWdpc3RlciBzdHJ1Y3QgaWZuZXQgKiBpZnAsDQog
ICAgaW50IGNvbW1hbmQsIGNhZGRyX3QgZGF0YSkpDQp7DQoJZXBpY19zb2Z0
Y190ICpzYyA9IGlmcC0+aWZfc29mdGM7DQoJc3RydWN0IGlmcmVxICppZnIg
PSAoc3RydWN0IGlmcmVxICopIGRhdGE7DQoJaW50IHgsIGVycm9yID0gMDsN
Cg0KCXggPSBzcGxpbXAoKTsNCg0KCXN3aXRjaCAoY29tbWFuZCkgew0KDQoJ
Y2FzZSBTSU9DU0lGQUREUjoNCgljYXNlIFNJT0NHSUZBRERSOg0KCQlldGhl
cl9pb2N0bChpZnAsIGNvbW1hbmQsIGRhdGEpOw0KCQlicmVhazsNCg0KCWNh
c2UgU0lPQ1NJRkZMQUdTOg0KCQkvKg0KCQkgKiBJZiB0aGUgaW50ZXJmYWNl
IGlzIG1hcmtlZCB1cCBhbmQgc3RvcHBlZCwgdGhlbiBzdGFydCBpdC4NCgkJ
ICogSWYgaXQgaXMgbWFya2VkIGRvd24gYW5kIHJ1bm5pbmcsIHRoZW4gc3Rv
cCBpdC4NCgkJICovDQoJCWlmIChpZnAtPmlmX2ZsYWdzICYgSUZGX1VQKSB7
DQoJCQlpZiAoKGlmcC0+aWZfZmxhZ3MgJiBJRkZfUlVOTklORykgPT0gMCkg
ew0KCQkJCWVwaWNfaW5pdChzYyk7DQoJCQkJYnJlYWs7DQoJCQl9DQoJCX0g
ZWxzZSB7DQoJCQlpZiAoaWZwLT5pZl9mbGFncyAmIElGRl9SVU5OSU5HKSB7
DQoJCQkJZXBpY19zdG9wKHNjKTsNCgkJCQlicmVhazsNCgkJCX0NCgkJfQ0K
DQoJCS8qIEhhbmRsZSBJRkZfUFJPTUlTQyBmbGFnICovDQoJCWVwaWNfc2V0
X3J4X21vZGUoc2MpOw0KDQojaWYgIWRlZmluZWQoX05FVF9JRl9NRURJQV9I
XykNCgkJLyogSGFuZGxlIElGRl9MSU5LeCBmbGFncyAqLw0KCQllcGljX3Nl
dF9tZWRpYV9zcGVlZChzYyk7DQojZW5kaWYNCg0KCQlicmVhazsNCg0KCWNh
c2UgU0lPQ0FERE1VTFRJOg0KCWNhc2UgU0lPQ0RFTE1VTFRJOg0KDQoJCS8q
IFVwZGF0ZSBvdXQgbXVsdGljYXN0IGxpc3QgKi8NCiNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfXyA+PSAzDQoJCWVwaWNfc2V0X21j
X3RhYmxlKHNjKTsNCgkJZXJyb3IgPSAwOw0KI2Vsc2UNCgkJZXJyb3IgPSAo
Y29tbWFuZCA9PSBTSU9DQURETVVMVEkpID8NCgkJICAgIGV0aGVyX2FkZG11
bHRpKGlmciwgJnNjLT5lcGljX2FjKSA6DQoJCSAgICBldGhlcl9kZWxtdWx0
aShpZnIsICZzYy0+ZXBpY19hYyk7DQoNCgkJaWYgKGVycm9yID09IEVORVRS
RVNFVCkgew0KCQkJZXBpY19zZXRfbWNfdGFibGUoc2MpOw0KCQkJZXJyb3Ig
PSAwOw0KCQl9DQojZW5kaWYNCgkJYnJlYWs7DQoNCgljYXNlIFNJT0NTSUZN
VFU6DQoJCS8qDQoJCSAqIFNldCB0aGUgaW50ZXJmYWNlIE1UVS4NCgkJICov
DQoJCWlmIChpZnItPmlmcl9tdHUgPiBFVEhFUk1UVSkgew0KCQkJZXJyb3Ig
PSBFSU5WQUw7DQoJCX0gZWxzZSB7DQoJCQlpZnAtPmlmX210dSA9IGlmci0+
aWZyX210dTsNCgkJfQ0KCQlicmVhazsNCg0KI2lmIGRlZmluZWQoX05FVF9J
Rl9NRURJQV9IXykNCgljYXNlIFNJT0NTSUZNRURJQToNCgljYXNlIFNJT0NH
SUZNRURJQToNCgkJZXJyb3IgPSBpZm1lZGlhX2lvY3RsKGlmcCwgaWZyLCAm
c2MtPmlmbWVkaWEsIGNvbW1hbmQpOw0KCQlicmVhazsNCiNlbmRpZg0KDQoJ
ZGVmYXVsdDoNCgkJZXJyb3IgPSBFSU5WQUw7DQoJfQ0KCXNwbHgoeCk7DQoN
CglyZXR1cm4gZXJyb3I7DQp9DQoNCi8qDQogKiBpZnN0YXJ0IGZ1bmN0aW9u
DQogKg0KICogc3BsaW1wKCkgYXNzdW1lZCB0byBiZSBkb25lDQogKi8NCnN0
YXRpYyB2b2lkDQplcGljX2lmc3RhcnQoc3RydWN0IGlmbmV0ICogY29uc3Qg
aWZwKXsNCgllcGljX3NvZnRjX3QgKnNjID0gaWZwLT5pZl9zb2Z0YzsNCglz
dHJ1Y3QgZXBpY190eF9idWZmZXIgKmJ1ZjsNCglzdHJ1Y3QgZXBpY190eF9k
ZXNjICpkZXNjOw0KCXN0cnVjdCBlcGljX2ZyYWdfbGlzdCAqZmxpc3Q7DQoJ
c3RydWN0IG1idWYgKm0sKm0wOw0KDQoJd2hpbGUoIHNjLT5wZW5kaW5nX3R4
cyA8IFRYX1JJTkdfU0laRSAgKXsNCgkJYnVmID0gc2MtPnR4X2J1ZmZlciAr
IHNjLT5jdXJfdHg7DQoJCWRlc2MgPSBzYy0+dHhfZGVzYyArIHNjLT5jdXJf
dHg7DQoJCWZsaXN0ID0gc2MtPnR4X2ZsaXN0ICsgc2MtPmN1cl90eDsNCg0K
CQkvKiBHZXQgbmV4dCBwYWNrZXQgdG8gc2VuZCAqLw0KCQlJRl9ERVFVRVVF
KCAmKHNjLT5lcGljX2lmLmlmX3NuZCksIG0wICk7DQoNCgkJLyogSWYgbm90
aGluZyB0byBzZW5kLCByZXR1cm4gKi8NCgkJaWYoIE5VTEwgPT0gbTAgKSBy
ZXR1cm47DQoNCgkJLyogSWYgZGVzY3JpcHRvciBpcyBidXN5LCBzZXQgSUZG
X09BQ1RJVkUgYW5kIGV4aXQgKi8NCgkJaWYoIGRlc2MtPnN0YXR1cyAmIDB4
ODAwMCApIHsNCgkJCWRwcmludGYoKCJ0eCVkOiBkZXNjIGlzIGJ1c3kgaW4g
aWZzdGFydCwgdXAgYW5kIGRvd24gaW50ZXJmYWNlIHBsZWFzZVxuIixzYy0+
dW5pdCkpOw0KCQkJYnJlYWs7DQoJCX0NCg0KCQlpZiggYnVmLT5tYnVmICkg
ew0KCQkJZHByaW50ZigoInR4JWQ6IG1idWYgbm90IGZyZWVkIGluIGlmc3Rh
cnQsIHVwIGFuZCBkb3duIGludGVyZmFjZSBwbGFzZVxuIixzYy0+dW5pdCkp
Ow0KCQkJYnJlYWs7DQoJCX0NCg0KCQkvKiBGaWxsIGZyYWdtZW50cyBsaXN0
ICovDQoJCWZsaXN0LT5udW1mcmFncyA9IDA7DQoJCWZvcihtPW0wOyhOVUxM
IT1tKSYmKGZsaXN0LT5udW1mcmFnczw2Myk7bT1tLT5tX25leHQpIHsNCgkJ
CWZsaXN0LT5mcmFnW2ZsaXN0LT5udW1mcmFnc10uZnJhZ2xlbiA9IG0tPm1f
bGVuOyANCgkJCWZsaXN0LT5mcmFnW2ZsaXN0LT5udW1mcmFnc10uZnJhZ2Fk
ZHIgPSB2dG9waHlzKCBtdG9kKG0sIGNhZGRyX3QpICk7DQoJCQlmbGlzdC0+
bnVtZnJhZ3MrKzsNCgkJfQ0KDQoJCS8qIElmIHBhY2tldCB3YXMgbW9yZSB0
aGFuIDYzIHBhcnRzLCAqLw0KCQkvKiByZWNvcHkgcGFja2V0IHRvIG5ldyBh
bGxvY2F0ZWQgbWJ1ZiBjbHVzdGVyICovDQoJCWlmKCBOVUxMICE9IG0gKXsN
CgkJCUVQSUNfTUdFVENMVVNURVIobSk7DQoJCQlpZiggTlVMTCA9PSBtICl7
DQoJCQkJcHJpbnRmKCJ0eCVkOiBjYW5ub3QgYWxsb2NhdGUgbWJ1ZiBjbHVz
dGVyXG4iLHNjLT51bml0KTsNCgkJCQltX2ZyZWVtKG0wKTsNCgkJCQlzYy0+
ZXBpY19pZi5pZl9vZXJyb3JzKys7DQoJCQkJY29udGludWU7DQoJCQl9DQoN
CgkJCW1fY29weWRhdGEoIG0wLCAwLCBtMC0+bV9wa3RoZHIubGVuLCBtdG9k
KG0sY2FkZHJfdCkgKTsNCgkJCWZsaXN0LT5mcmFnWzBdLmZyYWdsZW4gPSBt
LT5tX3BrdGhkci5sZW4gPSBtLT5tX2xlbiA9IG0wLT5tX3BrdGhkci5sZW47
DQoJCQltLT5tX3BrdGhkci5yY3ZpZiA9ICZzYy0+ZXBpY19pZjsNCg0KCQkJ
Zmxpc3QtPm51bWZyYWdzID0gMTsNCgkJCWZsaXN0LT5mcmFnWzBdLmZyYWdh
ZGRyID0gdnRvcGh5cyggbXRvZChtLCBjYWRkcl90KSApOw0KCQkJbV9mcmVl
bShtMCk7DQoJCQltMCA9IG07DQoJCX0NCg0KCQkvKiBTYXZlIG1idWYgKi8N
CgkJYnVmLT5tYnVmID0gbTA7DQoNCgkJLyogRG9lcyBub3QgZ2VuZXJhdGUg
VFhDICovDQoJCWRlc2MtPmNvbnRyb2wgPSAweDAxOw0KDQoJCS8qIFBhY2tl
dCBzaG91bGQgYmUgYXQgbGVhc3QgRVRIRVJfTUlOX0xFTiAqLw0KCQlkZXNj
LT50eGxlbmd0aCA9IG1heChtMC0+bV9wa3RoZHIubGVuLEVUSEVSX01JTl9M
RU4tRVRIRVJfQ1JDX0xFTik7DQoNCgkJLyogUGFzcyBvd25lcnNoaXAgdG8g
dGhlIGNoaXAgKi8NCgkJZGVzYy0+c3RhdHVzID0gMHg4MDAwOw0KDQoJCS8q
IFRyaWdnZXIgYW4gaW1tZWRpYXRlIHRyYW5zbWl0IGRlbWFuZC4gKi8NCgkJ
Q1NSX1dSSVRFXzQoIHNjLCBDT01NQU5ELCBDT01NQU5EX1RYUVVFVUVEICk7
DQoNCgkJLyogU2V0IHdhdGNoZG9nIHRpbWVyICovDQoJCWlmcC0+aWZfdGlt
ZXIgPSA0Ow0KDQojaWYgTkJQRklMVEVSID4gMA0KCQlpZiggaWZwLT5pZl9i
cGYgKSBicGZfbXRhcCggaWZwLCBtMCApOw0KI2VuZGlmDQoNCgkJLyogUGFj
a2V0IHF1ZXVlZCBzdWNjZXNzZnVsICovDQoJCXNjLT5wZW5kaW5nX3R4cysr
Ow0KDQoJCS8qIFN3aXRjaCB0byBuZXh0IGRlc2NyaXB0b3IgKi8NCgkJc2Mt
PmN1cl90eCA9ICggc2MtPmN1cl90eCArIDEgKSAlIFRYX1JJTkdfU0laRTsN
Cgl9DQoNCglzYy0+ZXBpY19pZi5pZl9mbGFncyB8PSBJRkZfT0FDVElWRTsN
Cg0KCXJldHVybjsNCgkNCn0NCg0KLyoNCiAqDQogKiBzcGxpbXAoKSBpbnZv
a2VkIGJlZm9yZSBlcGljX2ludHJfbm9ybWFsKCkNCiAqLw0Kc3RhdGljIF9f
aW5saW5lIHZvaWQNCmVwaWNfcnhfZG9uZSBfX1AoKA0KCWVwaWNfc29mdGNf
dCAqc2MgKSkNCnsNCiAgICAgICAgaW50IGkgPSAwOw0KCXVfaW50MTZfdCBs
ZW47DQoJc3RydWN0IGVwaWNfcnhfYnVmZmVyICpidWY7DQoJc3RydWN0IGVw
aWNfcnhfZGVzYyAqZGVzYzsNCglzdHJ1Y3QgbWJ1ZiAqbTsNCglzdHJ1Y3Qg
ZXRoZXJfaGVhZGVyICplaDsNCg0KCXdoaWxlKCAhKHNjLT5yeF9kZXNjW3Nj
LT5jdXJfcnhdLnN0YXR1cyAmIDB4ODAwMCkgJiYgXA0KCQlpKysgPCBSWF9S
SU5HX1NJWkUgKSB7DQoNCgkJYnVmID0gc2MtPnJ4X2J1ZmZlciArIHNjLT5j
dXJfcng7DQoJCWRlc2MgPSBzYy0+cnhfZGVzYyArIHNjLT5jdXJfcng7DQoN
CgkJLyogU3dpdGNoIHRvIG5leHQgZGVzY3JpcHRvciAqLw0KCQlzYy0+Y3Vy
X3J4ID0gKHNjLT5jdXJfcngrMSkgJSBSWF9SSU5HX1NJWkU7DQoNCgkJLyog
Q2hlY2sgZm9yIGVycm9ycywgdGhpcyBzaG91bGQgaGFwcGVuZCAqLw0KCQkv
KiBvbmx5IGlmIFNBVkVfRVJST1JFRF9QQUNLRVRTIGlzIHNldCwgKi8NCgkJ
Lyogbm9ybWFseSByeCBlcnJvcnMgZ2VuZXJhdGUgUlhFIGludGVycnVwdCAq
Lw0KCQlpZiggIShkZXNjLT5zdGF0dXMgJiAxKSApIHsNCgkJCWRwcmludGYo
KCJ0eCVkOiBSeCBlcnJvciBzdGF0dXM6IDB4JXhcbiIsc2MtPnVuaXQsZGVz
Yy0+c3RhdHVzKSk7DQoJCQlzYy0+ZXBpY19pZi5pZl9pZXJyb3JzKys7DQoJ
CQlkZXNjLT5zdGF0dXMgPSAweDgwMDA7DQoJCQljb250aW51ZTsNCgkJfQ0K
DQoJCS8qIFNhdmUgcGFja2V0IGxlbmd0aCBhbmQgbWJ1ZiBjb250YWluZWQg
cGFja2V0ICovIA0KCQlsZW4gPSBkZXNjLT5yeGxlbmd0aCAtIEVUSEVSX0NS
Q19MRU47DQoJCW0gPSBidWYtPm1idWY7DQoNCgkJLyogVHJ5IHRvIGdldCBt
YnVmIGNsdXN0ZXIgKi8NCgkJRVBJQ19NR0VUQ0xVU1RFUiggYnVmLT5tYnVm
ICk7DQoJCWlmKCBOVUxMID09IGJ1Zi0+bWJ1ZiApIHsgDQoJCQlwcmludGYo
InR4JWQ6IGNhbm5vdCBhbGxvY2F0ZSBtYnVmIGNsdXN0ZXJcbiIsc2MtPnVu
aXQpOw0KCQkJYnVmLT5tYnVmID0gbTsNCgkJCWRlc2MtPnN0YXR1cyA9IDB4
ODAwMDsNCgkJCXNjLT5lcGljX2lmLmlmX2llcnJvcnMrKzsNCgkJCWNvbnRp
bnVlOw0KCQl9DQoNCgkJLyogUG9pbnQgdG8gbmV3IG1idWYsIGFuZCBnaXZl
IGRlc2NyaXB0b3IgdG8gY2hpcCAqLw0KCQlkZXNjLT5idWZhZGRyID0gdnRv
cGh5cyggbXRvZCggYnVmLT5tYnVmLCBjYWRkcl90ICkgKTsNCgkJZGVzYy0+
c3RhdHVzID0gMHg4MDAwOw0KCQkNCgkJLyogRmlyc3QgbWJ1ZiBpbiBwYWNr
ZXQgaG9sZHMgdGhlIGV0aGVybmV0IGFuZCBwYWNrZXQgaGVhZGVycyAqLw0K
CQllaCA9IG10b2QoIG0sIHN0cnVjdCBldGhlcl9oZWFkZXIgKiApOw0KCQlt
LT5tX3BrdGhkci5yY3ZpZiA9ICYoc2MtPmVwaWNfaWYpOw0KCQltLT5tX3Br
dGhkci5sZW4gPSBtLT5tX2xlbiA9IGxlbjsNCg0KI2lmIE5CUEZJTFRFUiA+
IDANCgkJLyogR2l2ZSBtYnVmIHRvIEJQRklMVEVSICovDQoJCWlmKCBzYy0+
ZXBpY19pZi5pZl9icGYgKSBicGZfbXRhcCggJnNjLT5lcGljX2lmLCBtICk7
DQoNCgkJLyogQWNjZXB0IG9ubHkgb3VyIHBhY2tldHMsIGJyb2FkY2FzdHMg
YW5kIG11bHRpY2FzdHMgKi8NCgkJaWYoIChlaC0+ZXRoZXJfZGhvc3RbMF0g
JiAxKSA9PSAwICYmDQoJCSAgICBiY21wKGVoLT5ldGhlcl9kaG9zdCxzYy0+
ZXBpY19hYy5hY19lbmFkZHIsRVRIRVJfQUREUl9MRU4pKXsNCgkJCW1fZnJl
ZW0obSk7DQoJCQljb250aW51ZTsNCgkJfQ0KI2VuZGlmDQoNCgkJLyogU2Vj
b25kIG1idWYgaG9sZHMgcGFja2V0IGlmc2VsZiAqLw0KCQltLT5tX3BrdGhk
ci5sZW4gPSBtLT5tX2xlbiA9IGxlbiAtIHNpemVvZihzdHJ1Y3QgZXRoZXJf
aGVhZGVyKTsNCgkJbS0+bV9kYXRhICs9IHNpemVvZiggc3RydWN0IGV0aGVy
X2hlYWRlciApOw0KDQoJCS8qIEdpdmUgbWJ1ZiB0byBPUyAqLw0KCQlldGhl
cl9pbnB1dCgmc2MtPmVwaWNfaWYsIGVoLCBtKTsNCg0KCQkvKiBTdWNjZXNz
ZnVseSByZWNlaXZlZCBmcmFtZSAqLw0KCQlzYy0+ZXBpY19pZi5pZl9pcGFj
a2V0cysrOw0KICAgICAgICB9DQoNCglyZXR1cm47DQp9DQoNCi8qDQogKiBT
eW5vcHNpczogRG8gbGFzdCBwaGFzZSBvZiB0cmFuc21pc3Npb24uIEkuZS4g
aWYgZGVzYyBpcyANCiAqIHRyYW5zbWl0dGVkLCBkZWNyZWFzZSBwZW5kaW5n
X3R4cyBjb3VudGVyLCBmcmVlIG1idWYgY29udGFpbmVkDQogKiBwYWNrZXQs
IHN3aXRjaCB0byBuZXh0IGRlc2NyaXB0b3IgYW5kIHJlcGVhdCB1bnRpbCBu
byBwYWNrZXRzDQogKiBhcmUgcGVuZGluZyBvciBkZXNjcmlwdHJvIGlzIG5v
dCB0cmFuc21pdHRlZCB5ZXQuDQogKi8NCnN0YXRpYyBfX2lubGluZSB2b2lk
DQplcGljX3R4X2RvbmUgX19QKCggDQogICAgcmVnaXN0ZXIgZXBpY19zb2Z0
Y190ICpzYyApKQ0Kew0KCXN0cnVjdCBlcGljX3R4X2J1ZmZlciAqYnVmOw0K
CXN0cnVjdCBlcGljX3R4X2Rlc2MgKmRlc2M7DQoJdV9pbnQxNl90IHN0YXR1
czsNCg0KCXdoaWxlKCBzYy0+cGVuZGluZ190eHMgPiAwICl7DQoJCWJ1ZiA9
IHNjLT50eF9idWZmZXIgKyBzYy0+ZGlydHlfdHg7DQoJCWRlc2MgPSBzYy0+
dHhfZGVzYyArIHNjLT5kaXJ0eV90eDsNCgkJc3RhdHVzID0gZGVzYy0+c3Rh
dHVzOw0KDQoJCS8qIElmIHBhY2tldCBpcyBub3QgdHJhbnNtaXR0ZWQsIHRo
b3UgZm9sbG93ZWQgKi8NCgkJLyogcGFja2V0cyBhcmUgbm90IHRyYW5zbWl0
dGVkIHRvbyAqLw0KCQlpZiggc3RhdHVzICYgMHg4MDAwICkgYnJlYWs7DQoN
CgkJLyogUGFja2V0IGlzIHRyYW5zbWl0dGVkLiBTd2l0Y2ggdG8gbmV4dCBh
bmQgKi8NCgkJLyogZnJlZSBtYnVmICovDQoJCXNjLT5wZW5kaW5nX3R4cy0t
Ow0KCQlzYy0+ZGlydHlfdHggPSAoc2MtPmRpcnR5X3R4ICsgMSkgJSBUWF9S
SU5HX1NJWkU7DQoJCW1fZnJlZW0oIGJ1Zi0+bWJ1ZiApOw0KCQlidWYtPm1i
dWYgPSBOVUxMOw0KDQoJCS8qIENoZWNrIGZvciBlcnJvcnMgYW5kIGNvbGxp
c2lvbnMgKi8NCgkJaWYoIHN0YXR1cyAmIDB4MDAwMSApIHNjLT5lcGljX2lm
LmlmX29wYWNrZXRzKys7DQoJCWVsc2Ugc2MtPmVwaWNfaWYuaWZfb2Vycm9y
cysrOw0KCQlzYy0+ZXBpY19pZi5pZl9jb2xsaXNpb25zICs9IChzdGF0dXMg
Pj4gOCkgJiAweDFGOw0KI2lmIGRlZmluZWQoRVBJQ19ERUJVRykNCgkJaWYo
IChzdGF0dXMgJiAweDEwMDEpID09IDB4MTAwMSApIA0KCQkJcHJpbnRmKCJ0
eCVkOiBmcmFtZSBub3QgdHJhbnNtaXR0ZWQgZHVlIGNvbGxpc2lvbnNcbiIs
c2MtPnVuaXQpOw0KI2VuZGlmDQoJfQ0KDQoJaWYoIHNjLT5wZW5kaW5nX3R4
cyA8IFRYX1JJTkdfU0laRSApIHNjLT5lcGljX2lmLmlmX2ZsYWdzICY9IH5J
RkZfT0FDVElWRTsNCn0NCg0KLyoNCiAqIEludGVycnVwdCBmdW5jdGlvbg0K
ICoNCiAqIHNwbGltcCgpIGFzc3VtZWQgdG8gYmUgZG9uZSANCiAqLw0Kc3Rh
dGljIHZvaWQNCmVwaWNfaW50cl9ub3JtYWwoDQogICAgdm9pZCAqYXJnKQ0K
ew0KCWVwaWNfc29mdGNfdCAqIHNjID0gKGVwaWNfc29mdGNfdCAqKSBhcmc7
DQogICAgICAgIGludCBzdGF0dXMsaT00Ow0KDQpkbyB7DQoJc3RhdHVzID0g
Q1NSX1JFQURfNCggc2MsIElOVFNUQVQgKTsNCglDU1JfV1JJVEVfNCggc2Ms
IElOVFNUQVQsIHN0YXR1cyApOw0KDQoJaWYoIHN0YXR1cyAmIChJTlRTVEFU
X1JRRXxJTlRTVEFUX1JDQ3xJTlRTVEFUX09WVykgKSB7DQoJCWVwaWNfcnhf
ZG9uZSggc2MgKTsNCgkJaWYoIHN0YXR1cyAmIChJTlRTVEFUX1JRRXxJTlRT
VEFUX09WVykgKXsNCiNpZiBkZWZpbmVkKEVQSUNfREVCVUcpDQoJCQlpZigg
c3RhdHVzICYgSU5UU1RBVF9PVlcgKSBwcmludGYoInR4JWQ6IG9uY2hpcCBS
eCBidWZmZXIgb3ZlcmZsb3dlZFxuIixzYy0+dW5pdCk7DQoJCQlpZiggc3Rh
dHVzICYgSU5UU1RBVF9SUUUgKSBwcmludGYoInR4JWQ6IFJ4IEZJRk8gb3Zl
cmZsb3dlZFxuIixzYy0+dW5pdCk7DQoJCQlpZiggc2MtPmVwaWNfaWYuaWZf
ZmxhZ3MgJiBJRkZfREVCVUcgKSBlcGljX2R1bXBfc3RhdGUoc2MpOw0KI2Vu
ZGlmDQoJCQlpZiggIShDU1JfUkVBRF80KCBzYywgQ09NTUFORCApICYgQ09N
TUFORF9SWFFVRVVFRCkgKQ0KCQkJCUNTUl9XUklURV80KCBzYywgQ09NTUFO
RCwgQ09NTUFORF9SWFFVRVVFRCApOw0KCQkJc2MtPmVwaWNfaWYuaWZfaWVy
cm9ycysrOw0KCQl9DQoJfQ0KDQoJaWYoIHN0YXR1cyAmIChJTlRTVEFUX1RY
Q3xJTlRTVEFUX1RDQ3xJTlRTVEFUX1RRRSkgKSB7DQoJCWVwaWNfdHhfZG9u
ZSggc2MgKTsNCiNpZiBkZWZpbmVkKEVQSUNfREVCVUcpDQoJCWlmKCAoc3Rh
dHVzICYgKElOVFNUQVRfVFFFIHwgSU5UU1RBVF9UQ0MpKSAmJiAoc2MtPnBl
bmRpbmdfdHhzID4gMSkgKQ0KCQkJcHJpbnRmKCJ0eCVkOiAlZCBwYWNrZXRz
IHBlbmRpbmcgYWZ0ZXIgVFFFL1RDQ1xuIixzYy0+dW5pdCxzYy0+cGVuZGlu
Z190eHMpOw0KI2VuZGlmDQoJCWlmKCAhKHNjLT5lcGljX2lmLmlmX2ZsYWdz
ICYgSUZGX09BQ1RJVkUpICkNCgkJCWVwaWNfaWZzdGFydCggJnNjLT5lcGlj
X2lmICk7DQoJfQ0KDQoJaWYoIChzdGF0dXMgJiBJTlRTVEFUX0dQMikgJiYg
KFFTNjYxMl9PVUkgPT0gc2MtPnBoeWlkKSApIHsNCgkJdV9pbnQzMl90IHN0
YXR1czsNCg0KCQlzdGF0dXMgPSBlcGljX3JlYWRfcGh5X3JlZ2lzdGVyKCBz
YywgUVM2NjEyX0lOVFNUQVQgKTsNCg0KCQlpZiggKHN0YXR1cyAmIElOVFNU
QVRfQU5fQ09NUExFVEUpICYmIChlcGljX2F1dG9uZWcoc2MpID09IEVQSUNf
RlVMTF9EVVBMRVgpICkgew0KCQkJc3RhdHVzID0gQk1DUl9GVUxMX0RVUExF
WCB8IGVwaWNfcmVhZF9waHlfcmVnaXN0ZXIoIHNjLCBEUDgzODQwX0JNQ1Ig
KTsNCgkJCUNTUl9XUklURV80KCBzYywgVFhDT04sIFRYQ09OX0ZVTExfRFVQ
TEVYIHwgVFhDT05fREVGQVVMVCApOw0KCQl9IGVsc2Ugew0KCQkJLyogRGVm
YXVsdCB0byBoYWxmLWR1cGxleCAqLw0KCQkJc3RhdHVzID0gfkJNQ1JfRlVM
TF9EVVBMRVggJiBlcGljX3JlYWRfcGh5X3JlZ2lzdGVyKCBzYywgRFA4Mzg0
MF9CTUNSICk7DQoJCQlDU1JfV1JJVEVfNCggc2MsIFRYQ09OLCBUWENPTl9E
RUZBVUxUICk7DQoJCX0NCg0KCQkvKiBUaGVyZSBpcyBhcHBhcmVudGx5IFFT
NjYxMiBjaGlwIGJ1ZzogKi8NCgkJLyogQk1DUl9GVUxMX0RVUExFWCBmbGFn
IGlzIG5vdCB1cGRhdGVkIGJ5ICovDQoJCS8qIGF1dG9uZWdvdGlhdGlvbiBw
cm9jZXNzLCBzbyB1cGRhdGUgaXQgYnkgaGFuZHMgKi8NCgkJLyogc28gd2Ug
Y2FuIHJlbHkgb24gaXQgaW4gZXBpY19pZm1lZGlhX3N0YXR1cygpICovDQoJ
CWVwaWNfd3JpdGVfcGh5X3JlZ2lzdGVyKHNjLCBEUDgzODQwX0JNQ1IsIHN0
YXR1cyk7DQoNCgkJLyogV2Ugc2hvdWxkIGNsZWFyIEdQMiBpbnQgYWdhaW4g
YWZ0ZXIgd2UgY2xlYXIgaXQgb24gUEhZICovDQoJCUNTUl9XUklURV80KCBz
YywgSU5UU1RBVCwgSU5UU1RBVF9HUDIgKTsgDQoJfQ0KDQoJLyogQ2hlY2sg
Zm9yIGVycm9ycyAqLw0KCWlmKCBzdGF0dXMgJiAoSU5UU1RBVF9GQVRBTHxJ
TlRTVEFUX1BNQXxJTlRTVEFUX1BUQXxJTlRTVEFUX0FQRXxJTlRTVEFUX0RQ
RXxJTlRTVEFUX1RYVXxJTlRTVEFUX1JYRSkgKXsNCgkJaWYoIHN0YXR1cyAm
IChJTlRTVEFUX0ZBVEFMfElOVFNUQVRfUE1BfElOVFNUQVRfUFRBfElOVFNU
QVRfQVBFfElOVFNUQVRfRFBFKSApew0KCQkJcHJpbnRmKCJ0eCVkOiBQQ0kg
ZmF0YWwgZXJyb3Igb2NjdXJlZCAoJXMlcyVzJXMpXG4iLA0KCQkJCXNjLT51
bml0LA0KCQkJCShzdGF0dXMmSU5UU1RBVF9QTUEpPyJQTUEiOiIiLA0KCQkJ
CShzdGF0dXMmSU5UU1RBVF9QVEEpPyIgUFRBIjoiIiwNCgkJCQkoc3RhdHVz
JklOVFNUQVRfQVBFKT8iIEFQRSI6IiIsDQoJCQkJKHN0YXR1cyZJTlRTVEFU
X0RQRSk/IiBEUEUiOiIiDQoJCQkpOw0KDQojaWYgZGVmaW5lZChFUElDX0RF
QlVHKQ0KCQkJZXBpY19kdW1wX3N0YXRlKHNjKTsNCiNlbmRpZg0KCQkJZXBp
Y19zdG9wKHNjKTsNCgkJCWVwaWNfaW5pdChzYyk7DQoJCQ0KCQkJcmV0dXJu
Ow0KCQl9DQoNCgkJaWYgKHN0YXR1cyAmIElOVFNUQVRfUlhFKSB7DQoJCQlk
cHJpbnRmKCgidHglZDogQ1JDL0FsaWdubWVudCBlcnJvclxuIixzYy0+dW5p
dCkpOw0KCQkJc2MtPmVwaWNfaWYuaWZfaWVycm9ycysrOw0KCQl9DQoNCgkJ
LyogVHggRklGTyB1bmRlcmZsb3cuIFNob3VsZCBub3QgaGFwcGVuZCBpZiAq
Lw0KCQkvKiB3ZSBkb24ndCB1c2UgZWFybHkgdHgsIGhhbmRsZSBpdCBhbnl3
YXkgKi8NCgkJaWYgKHN0YXR1cyAmIElOVFNUQVRfVFhVKSB7DQoJCQlkcHJp
bnRmKCgidHglZDogVHggdW5kZXJydW4gZXJyb3IsIHJlc3RhcnRpbmcgdHJh
bmNpZXZlclxuIixzYy0+dW5pdCkpOw0KCQkJc2MtPmVwaWNfaWYuaWZfb2Vy
cm9ycysrOw0KDQoJCQkvKiBSZXN0YXJ0IHRoZSB0cmFuc21pdCBwcm9jZXNz
LiAqLw0KCQkJQ1NSX1dSSVRFXzQoc2MsIENPTU1BTkQsIENPTU1BTkRfVFhV
R08gfCBDT01NQU5EX1RYUVVFVUVEKTsNCgkJfQ0KCX0NCg0KfSB3aGlsZSgg
aS0tICYmIChDU1JfUkVBRF80KHNjLCBJTlRTVEFUKSAmIElOVFNUQVRfSU5U
X0FDVFYpICk7DQoNCgkvKiBJZiBubyBwYWNrZXRzIGFyZSBwZW5kaW5nLCB0
aHVzIG5vIHRpbWVvdXRzICovDQoJaWYoIHNjLT5wZW5kaW5nX3R4cyA9PSAw
ICkNCgkJc2MtPmVwaWNfaWYuaWZfdGltZXIgPSAwOw0KDQoJcmV0dXJuOw0K
fQ0KDQovKg0KICogU3lub3BzaXM6IFRoaXMgb25lIGlzIGNhbGxlZCBpZiBw
YWNrZXRzIHdhc24ndCB0cmFuc21pdHRlZA0KICogZHVyaW5nIHRpbWVvdXQu
IFRyeSB0byBkZWFsbG9jYXRlIHRyYW5zbWl0dGVkIHBhY2tldHMsIGFuZCAN
CiAqIGlmIHN1Y2Nlc3MgY29udGludWUgdG8gd29yay4NCiAqDQogKiBzcGxp
bXAoKSBpbnZva2VkIGhlcmUNCiAqLw0Kc3RhdGljIHZvaWQNCmVwaWNfaWZ3
YXRjaGRvZyBfX1AoKA0KICAgIHN0cnVjdCBpZm5ldCAqaWZwKSkNCnsNCgll
cGljX3NvZnRjX3QgKnNjID0gaWZwLT5pZl9zb2Z0YzsNCglpbnQgeDsNCg0K
CXggPSBzcGxpbXAoKTsNCg0KCXByaW50ZigidHglZDogZGV2aWNlIHRpbWVv
dXQgJWQgcGFja2V0cywgIiwgc2MtPnVuaXQsc2MtPnBlbmRpbmdfdHhzKTsN
Cg0KCS8qIFRyeSB0byBmaW5pc2ggcXVldWVkIHBhY2tldHMgKi8NCgllcGlj
X3R4X2RvbmUoIHNjICk7DQoNCgkvKiBJZiBub3Qgc3VjY2Vzc2Z1bCAqLw0K
CWlmKCBzYy0+cGVuZGluZ190eHMgPiAwICl7DQojaWYgZGVmaW5lZChFUElD
X0RFQlVHKQ0KCQlpZiggc2MtPmVwaWNfaWYuaWZfZmxhZ3MgJiBJRkZfREVC
VUcgKSBlcGljX2R1bXBfc3RhdGUoc2MpOw0KI2VuZGlmDQoJCWlmcC0+aWZf
b2Vycm9ycys9c2MtPnBlbmRpbmdfdHhzOw0KDQoJCS8qIFJlaW5pdGlhbGl6
ZSBib2FyZCAqLw0KCQlwcmludGYoInJlaW5pdGlhbGl6YXRpb25cbiIpOw0K
CQllcGljX3N0b3Aoc2MpOw0KCQllcGljX2luaXQoc2MpOw0KDQoJfSBlbHNl
IHByaW50Zigic2VlbXMgd2UgY2FuIGNvbnRpbnVlIG5vcm1hbHlcbiIpOw0K
DQoJLyogU3RhcnQgb3V0cHV0ICovDQoJZXBpY19pZnN0YXJ0KCZzYy0+ZXBp
Y19pZik7DQoNCglzcGx4KHgpOw0KfQ0KDQovKg0KICogU3lub3BzaXM6IENo
ZWNrIGlmIFBDSSBpZCBjb3JyZXNwb25kcyB3aXRoIGJvYXJkIGlkLg0KICov
DQpzdGF0aWMgY2hhcioNCmVwaWNfcGNpX3Byb2JlKA0KICAgIHBjaWNpX3Qg
Y29uZmlnX2lkLA0KICAgIHBjaWRpX3QgZGV2aWNlX2lkKQ0Kew0KCWlmKCBQ
Q0lfVkVORE9SSUQoZGV2aWNlX2lkKSAhPSBTTUNfVkVORE9SSUQgKQ0KCQly
ZXR1cm4gTlVMTDsNCg0KCWlmKCBQQ0lfQ0hJUElEKGRldmljZV9pZCkgPT0g
Q0hJUElEXzgzQzE3MCApDQoJCXJldHVybiAiU01DIDgzYzE3MCI7DQoNCgly
ZXR1cm4gTlVMTDsNCn0NCg0KLyoNCiAqIFN5bm9wc2lzOiBBbGxvY2F0ZSBt
ZW1vcnkgZm9yIHNvZnRjLCBkZXNjcmlwdG9ycyBhbmQgZnJhZyBsaXN0cy4N
CiAqIENvbm5lY3QgdG8gaW50ZXJydXB0LCBhbmQgZ2V0IG1lbW9yeS9pbyBh
ZGRyZXNzIG9mIGNhcmQgcmVnaXN0ZXJzLg0KICogUHJlaW5pdGlhbGl6ZSBz
b2Z0YyBzdHJ1Y3R1cmUsIGF0dGFjaCB0byBpZiBtYW5hZ2VyLCBpZm1lZGlh
IG1hbmFnZXINCiAqIGFuZCBicGYuIFJlYWQgbWVkaWEgY29uZmlndXJhdGlv
biBhbmQgZXRjLg0KICoNCiAqIHNwbGltcCgpIGludm9rZWQgaGVyZQ0KICov
DQpzdGF0aWMgdm9pZA0KZXBpY19wY2lfYXR0YWNoKA0KICAgIHBjaWNpX3Qg
Y29uZmlnX2lkLA0KICAgIGludCB1bml0KQ0Kew0KCXN0cnVjdCBpZm5ldCAq
IGlmcDsNCgllcGljX3NvZnRjX3QgKnNjOw0KI2lmIGRlZmluZWQoRVBJQ19V
U0VJT1NQQUNFKQ0KCXVfaW50MzJfdCBpb2Jhc2U7DQojZWxzZQ0KCWNhZGRy
X3QJcG1lbWJhc2U7DQojZW5kaWYNCglpbnQgaSxrLHMsdG1wOw0KCXVfaW50
MzJfdCBwb29sOw0KDQoJLyogQWxsb2NhdGUgbWVtb3J5IGZvciBzb2Z0Yywg
aGFyZHdhcmUgZGVzY3JpcHRvcnMgYW5kIGZyYWcgbGlzdHMgKi8NCglzYyA9
IChlcGljX3NvZnRjX3QgKikgbWFsbG9jKA0KCQlzaXplb2YoZXBpY19zb2Z0
Y190KSArDQoJCXNpemVvZihzdHJ1Y3QgZXBpY19mcmFnX2xpc3QpKlRYX1JJ
TkdfU0laRSArDQoJCXNpemVvZihzdHJ1Y3QgZXBpY19yeF9kZXNjKSpSWF9S
SU5HX1NJWkUgKyANCgkJc2l6ZW9mKHN0cnVjdCBlcGljX3R4X2Rlc2MpKlRY
X1JJTkdfU0laRSArIFBBR0VfU0laRSwNCgkJTV9ERVZCVUYsIE1fTk9XQUlU
KTsNCg0KCWlmIChzYyA9PSBOVUxMKQlyZXR1cm47DQoNCgkvKiBBbGlnbiBw
b29sIG9uIFBBR0VfU0laRSAqLw0KCXBvb2wgPSAoKHVfaW50MzJfdClzYykg
KyBzaXplb2YoZXBpY19zb2Z0Y190KTsNCglwb29sID0gKHBvb2wgKyBQQUdF
X1NJWkUgLSAxKSAmIH4oUEFHRV9TSVpFIC0gMSk7DQoNCgkvKiBQcmVpbml0
aWFsaXplIHNvZnRjIHN0cnVjdHVyZSAqLw0KICAgIAliemVybyhzYywgc2l6
ZW9mKGVwaWNfc29mdGNfdCkpOwkJDQoJc2MtPnVuaXQgPSB1bml0Ow0KDQoJ
LyogRmlsbCBpZm5ldCBzdHJ1Y3R1cmUgKi8NCglpZnAgPSAmc2MtPmVwaWNf
aWY7DQoJaWZwLT5pZl91bml0ID0gdW5pdDsNCglpZnAtPmlmX25hbWUgPSAi
dHgiOw0KCWlmcC0+aWZfc29mdGMgPSBzYzsNCglpZnAtPmlmX2ZsYWdzID0g
SUZGX0JST0FEQ0FTVHxJRkZfU0lNUExFWHxJRkZfTVVMVElDQVNUOw0KCWlm
cC0+aWZfaW9jdGwgPSBlcGljX2lmaW9jdGw7DQoJaWZwLT5pZl9zdGFydCA9
IGVwaWNfaWZzdGFydDsNCglpZnAtPmlmX3dhdGNoZG9nID0gZXBpY19pZndh
dGNoZG9nOw0KCWlmcC0+aWZfaW5pdCA9IChpZl9pbml0X2ZfdCopZXBpY19p
bml0Ow0KCWlmcC0+aWZfdGltZXIgPSAwOw0KCWlmcC0+aWZfb3V0cHV0ID0g
ZXRoZXJfb3V0cHV0Ow0KDQoJLyogR2V0IGlvYmFzZSBvciBtZW1iYXNlICov
DQojaWYgZGVmaW5lZChFUElDX1VTRUlPU1BBQ0UpDQoJaWYgKCFwY2lfbWFw
X3BvcnQoY29uZmlnX2lkLCBQQ0lfQ0JJTywodV9zaG9ydCAqKSAmKHNjLT5p
b2Jhc2UpKSkgew0KCQlwcmludGYoInR4JWQ6IGNhbm5vdCBtYXAgcG9ydFxu
Iix1bml0KTsNCgkJZnJlZShzYywgTV9ERVZCVUYpOw0KCQlyZXR1cm47DQoJ
fQ0KI2Vsc2UNCglpZiAoIXBjaV9tYXBfbWVtKGNvbmZpZ19pZCwgUENJX0NC
TUEsKHZtX29mZnNldF90ICopICYoc2MtPmNzciksKHZtX29mZnNldF90ICop
ICZwbWVtYmFzZSkpIHsNCgkJcHJpbnRmKCJ0eCVkOiBjYW5ub3QgbWFwIG1l
bW9yeVxuIix1bml0KTsgDQoJCWZyZWUoc2MsIE1fREVWQlVGKTsNCgkJcmV0
dXJuOw0KCX0NCiNlbmRpZg0KDQoJc2MtPnR4X2ZsaXN0ID0gKHZvaWQgKilw
b29sOw0KCXBvb2wgKz0gc2l6ZW9mKHN0cnVjdCBlcGljX2ZyYWdfbGlzdCkq
VFhfUklOR19TSVpFOw0KCXNjLT5yeF9kZXNjID0gKHZvaWQgKilwb29sOw0K
CXBvb2wgKz0gc2l6ZW9mKHN0cnVjdCBlcGljX3J4X2Rlc2MpKlJYX1JJTkdf
U0laRTsNCglzYy0+dHhfZGVzYyA9ICh2b2lkICopcG9vbDsNCg0KCS8qIEJy
aW5nIHRoZSBjaGlwIG91dCBvZiBsb3ctcG93ZXIgbW9kZS4gKi8NCglDU1Jf
V1JJVEVfNCggc2MsIEdFTkNUTCwgMHgwMDAwICk7DQoNCgkvKiBNYWdpYz8h
ICBJZiB3ZSBkb24ndCBzZXQgdGhpcyBiaXQgdGhlIE1JSSBpbnRlcmZhY2Ug
d29uJ3Qgd29yay4gKi8NCglDU1JfV1JJVEVfNCggc2MsIFRFU1QxLCAweDAw
MDggKTsNCg0KCS8qIFJlYWQgbWFjIGFkZHJlc3MgZnJvbSBFRVBST00gKi8N
Cglmb3IgKGkgPSAwOyBpIDwgRVRIRVJfQUREUl9MRU4gLyBzaXplb2YodV9p
bnQxNl90KTsgaSsrKQ0KCQkoKHVfaW50MTZfdCAqKXNjLT5lcGljX21hY2Fk
ZHIpW2ldID0gZXBpY19yZWFkX2VlcHJvbShzYyxpKTsNCg0KCS8qIERpc3Bs
YXkgZXRoZXJuZXQgYWRkcmVzcyAsLi4uICovDQoJcHJpbnRmKCJ0eCVkOiBh
ZGRyZXNzICUwMng6JTAyeDolMDJ4OiUwMng6JTAyeDolMDJ4LCIsc2MtPnVu
aXQsDQoJCXNjLT5lcGljX21hY2FkZHJbMF0sc2MtPmVwaWNfbWFjYWRkclsx
XSxzYy0+ZXBpY19tYWNhZGRyWzJdLA0KCQlzYy0+ZXBpY19tYWNhZGRyWzNd
LHNjLT5lcGljX21hY2FkZHJbNF0sc2MtPmVwaWNfbWFjYWRkcls1XSk7DQoN
CgkvKiBib2FyZCB0eXBlIGFuZCAuLi4gKi8NCglwcmludGYoIiB0eXBlICIp
Ow0KCWZvcihpPTB4MmM7aTwweDMyO2krKykgew0KCQl0bXAgPSBlcGljX3Jl
YWRfZWVwcm9tKCBzYywgaSApOw0KCQlwcmludGYoIiVjJWMiLCh1X2ludDhf
dCl0bXAsKHVfaW50OF90KSh0bXA+PjgpKTsNCgkJaWYoICcgJyA9PSAodV9p
bnQ4X3QpdG1wIHx8ICcgJyA9PSAodV9pbnQ4X3QpKHRtcD4+OCkgKSBicmVh
azsNCgl9DQoNCgkvKiBSZWFkIGN1cnJlbnQgbWVkaWEgY29uZmlnIGFuZCBk
aXNwbGF5IGl0IHRvbyAqLw0KCWkgPSBlcGljX3JlYWRfcGh5X3JlZ2lzdGVy
KCBzYywgRFA4Mzg0MF9CTUNSICk7DQojaWYgZGVmaW5lZChfTkVUX0lGX01F
RElBX0hfKQ0KCXRtcCA9IElGTV9FVEhFUjsNCiNlbmRpZg0KCWlmKCBpICYg
Qk1DUl9BVVRPTkVHT1RJQVRJT04gKXsNCgkJcHJpbnRmKCIsIEF1dG8tTmVn
ICIpOw0KDQoJCS8qIFRvIGF2b2lkIGJ1ZyBpbiBRUzY2MTIgcmVhZCBMUEFS
IGVuc3RlYWQgb2YgQk1TUiAqLw0KCQlpID0gZXBpY19yZWFkX3BoeV9yZWdp
c3Rlciggc2MsIERQODM4NDBfTFBBUiApOw0KCQlpZiggaSAmIChBTkFSXzEw
MF9UWHxBTkFSXzEwMF9UWF9GRCkgKSBwcmludGYoIjEwME1icHMgIik7DQoJ
CWVsc2UgcHJpbnRmKCIxME1icHMgIik7DQoJCWlmKCBpICYgKEFOQVJfMTBf
RkR8QU5BUl8xMDBfVFhfRkQpICkgcHJpbnRmKCJGRCIpOw0KI2lmIGRlZmlu
ZWQoX05FVF9JRl9NRURJQV9IXykNCgkJdG1wIHw9IElGTV9BVVRPOw0KI2Vu
ZGlmDQoJfSBlbHNlIHsNCiNpZiAhZGVmaW5lZChfTkVUX0lGX01FRElBX0hf
KQ0KCQlpZnAtPmlmX2ZsYWdzIHw9IElGRl9MSU5LMDsNCiNlbmRpZg0KCQlp
ZiggaSAmIEJNQ1JfMTAwTUJQUyApIHsNCgkJCXByaW50ZigiLCAxMDBNYnBz
ICIpOw0KI2lmIGRlZmluZWQoX05FVF9JRl9NRURJQV9IXykNCgkJCXRtcCB8
PSBJRk1fMTAwX1RYOw0KI2Vsc2UNCgkJCWlmcC0+aWZfZmxhZ3MgfD0gSUZG
X0xJTksyOw0KI2VuZGlmDQoJCX0gZWxzZSB7DQoJCQlwcmludGYoIiwgMTBN
YnBzICIpOw0KI2lmIGRlZmluZWQoX05FVF9JRl9NRURJQV9IXykNCgkJCXRt
cCB8PSBJRk1fMTBfVDsNCiNlbmRpZg0KCQl9DQoJCWlmKCBpICYgQk1DUl9G
VUxMX0RVUExFWCApIHsNCgkJCXByaW50ZigiRkQiKTsNCiNpZiBkZWZpbmVk
KF9ORVRfSUZfTUVESUFfSF8pDQoJCQl0bXAgfD0gSUZNX0ZEWDsNCiNlbHNl
DQoJCQlpZnAtPmlmX2ZsYWdzIHw9IElGRl9MSU5LMTsNCiNlbmRpZg0KCQl9
DQoJfQ0KCXByaW50ZigiXG4iKTsNCg0KCS8qIEluaXQgaWZtZWRpYSBpbnRl
cmZhY2UgKi8NCiNpZiBkZWZpbmVkKFNJT0NTSUZNRURJQSkgJiYgIWRlZmlu
ZWQoRVBJQ19OT0lGTUVESUEpDQoJaWZtZWRpYV9pbml0KCZzYy0+aWZtZWRp
YSwwLGVwaWNfaWZtZWRpYV9jaGFuZ2UsZXBpY19pZm1lZGlhX3N0YXR1cyk7
DQoJaWZtZWRpYV9hZGQoJnNjLT5pZm1lZGlhLElGTV9FVEhFUnxJRk1fMTBf
VCwwLE5VTEwpOw0KCWlmbWVkaWFfYWRkKCZzYy0+aWZtZWRpYSxJRk1fRVRI
RVJ8SUZNXzEwX1R8SUZNX0xPT1AsMCxOVUxMKTsNCglpZm1lZGlhX2FkZCgm
c2MtPmlmbWVkaWEsSUZNX0VUSEVSfElGTV8xMF9UfElGTV9GRFgsMCxOVUxM
KTsNCglpZm1lZGlhX2FkZCgmc2MtPmlmbWVkaWEsSUZNX0VUSEVSfElGTV8x
MDBfVFgsMCxOVUxMKTsNCglpZm1lZGlhX2FkZCgmc2MtPmlmbWVkaWEsSUZN
X0VUSEVSfElGTV8xMDBfVFh8SUZNX0xPT1AsMCxOVUxMKTsNCglpZm1lZGlh
X2FkZCgmc2MtPmlmbWVkaWEsSUZNX0VUSEVSfElGTV8xMDBfVFh8SUZNX0ZE
WCwwLE5VTEwpOw0KCWlmbWVkaWFfYWRkKCZzYy0+aWZtZWRpYSxJRk1fRVRI
RVJ8SUZNX0FVVE8sMCxOVUxMKTsNCglpZm1lZGlhX2FkZCgmc2MtPmlmbWVk
aWEsSUZNX0VUSEVSfElGTV9MT09QLDAsTlVMTCk7DQoJaWZtZWRpYV9zZXQo
JnNjLT5pZm1lZGlhLCB0bXApOw0KI2VuZGlmDQoNCgkvKiBJZGVudGlmeSBQ
SFkgKi8NCglzYy0+cGh5aWQgPSBlcGljX3JlYWRfcGh5X3JlZ2lzdGVyKCBz
YywgRFA4Mzg0MF9QSFlJRFIxICk8PDY7DQoJc2MtPnBoeWlkfD0gKGVwaWNf
cmVhZF9waHlfcmVnaXN0ZXIoIHNjLCBEUDgzODQwX1BIWUlEUjIgKT4+MTAp
JjB4M0Y7DQoJaWYoIFFTNjYxMl9PVUkgIT0gc2MtPnBoeWlkICkgcHJpbnRm
KCJ0eCVkOiBXQVJOSU5HISBwaHkgdW5rbm93biAoMHgleCksICIsc2MtPnVu
aXQsc2MtPnBoeWlkKTsNCg0KCS8qIENoZWNrIGlmIHRoZXJlIGlzIGxpbmsg
ZXN0YWJpbHNoZWQgKi8NCgllcGljX3JlYWRfcGh5X3JlZ2lzdGVyKCBzYywg
RFA4Mzg0MF9CTVNSICk7DQoJaT1lcGljX3JlYWRfcGh5X3JlZ2lzdGVyKCBz
YywgRFA4Mzg0MF9CTVNSICk7DQoJaWYoICEoaSAmIEJNU1JfTElOS19TVEFU
VVMpICkgcHJpbnRmKCJ0eCVkOiBXQVJOSU5HISBubyBsaW5rIGVzdGFiaWxp
c2hlZFxuIixzYy0+dW5pdCk7DQoNCglzID0gc3BsaW1wKCk7DQoNCgkvKiBN
YXAgaW50ZXJydXB0ICovDQoJaWYoICFwY2lfbWFwX2ludChjb25maWdfaWQs
IGVwaWNfaW50cl9ub3JtYWwsICh2b2lkKilzYywgJm5ldF9pbWFzaykgKSB7
DQoJCXByaW50ZigidHglZDogY291bGRuJ3QgbWFwIGludGVycnVwdFxuIix1
bml0KTsNCgkJZnJlZShzYywgTV9ERVZCVUYpOw0KCQlyZXR1cm47DQoJfQ0K
DQoJLyogU2V0IHNodXQgZG93biByb3V0aW5lIHRvIHN0b3AgRE1BIHByb2Nl
c3NlcyBvbiByZWJvb3QgKi8NCglhdF9zaHV0ZG93bihlcGljX3NodXRkb3du
LCBzYywgU0hVVERPV05fUE9TVF9TWU5DKTsNCg0KCS8qICBBdHRhY2ggdG8g
aWYgbWFuYWdlciAqLw0KCWlmX2F0dGFjaChpZnApOw0KCWV0aGVyX2lmYXR0
YWNoKGlmcCk7DQoNCiNpZiBOQlBGSUxURVIgPiAwDQoJYnBmYXR0YWNoKGlm
cCxETFRfRU4xME1CLCBzaXplb2Yoc3RydWN0IGV0aGVyX2hlYWRlcikpOw0K
I2VuZGlmDQoNCglzcGx4KHMpOw0KDQoJcmV0dXJuOw0KfQ0KDQojaWYgZGVm
aW5lZChTSU9DU0lGTUVESUEpICYmICFkZWZpbmVkKEVQSUNfTk9JRk1FRElB
KQ0Kc3RhdGljIGludA0KZXBpY19pZm1lZGlhX2NoYW5nZSBfX1AoKA0KICAg
IHN0cnVjdCBpZm5ldCAqIGlmcCkpDQp7DQoJaWYgKElGTV9UWVBFKCgoZXBp
Y19zb2Z0Y190ICopKGlmcC0+aWZfc29mdGMpKS0+aWZtZWRpYS5pZm1fbWVk
aWEpICE9IElGTV9FVEhFUikNCiAgICAgICAgCXJldHVybiAoRUlOVkFMKTsN
Cg0KCWVwaWNfc2V0X21lZGlhX3NwZWVkKCBpZnAtPmlmX3NvZnRjICk7DQoN
CglyZXR1cm4gMDsNCn0NCg0Kc3RhdGljIHZvaWQNCmVwaWNfaWZtZWRpYV9z
dGF0dXMgX19QKCgNCiAgICBzdHJ1Y3QgaWZuZXQgKiBpZnAsDQogICAgc3Ry
dWN0IGlmbWVkaWFyZXEgKmlmbXIpKQ0Kew0KCWVwaWNfc29mdGNfdCAqc2Mg
PSBpZnAtPmlmX3NvZnRjOw0KCXVfaW50MzJfdAlibWNyOw0KCXVfaW50MzJf
dAlibXNyOw0KDQoJYm1jciA9IGVwaWNfcmVhZF9waHlfcmVnaXN0ZXIoIHNj
LCBEUDgzODQwX0JNQ1IgKTsNCg0KCWVwaWNfcmVhZF9waHlfcmVnaXN0ZXIo
IHNjLCBEUDgzODQwX0JNU1IgKTsNCglibXNyID0gZXBpY19yZWFkX3BoeV9y
ZWdpc3Rlciggc2MsIERQODM4NDBfQk1TUiApOw0KDQoJaWZtci0+aWZtX2Fj
dGl2ZSA9IElGTV9FVEhFUjsNCglpZm1yLT5pZm1fc3RhdHVzID0gSUZNX0FW
QUxJRDsNCg0KCWlmKCAhKGJtc3IgJiBCTVNSX0xJTktfU1RBVFVTKSApIHsg
DQoJCWlmbXItPmlmbV9hY3RpdmUgfD0gKGJtY3ImQk1DUl9BVVRPTkVHT1RJ
QVRJT04pP0lGTV9BVVRPOklGTV9OT05FOw0KCQlyZXR1cm47DQoJfQ0KDQoJ
aWZtci0+aWZtX3N0YXR1cyB8PSBJRk1fQUNUSVZFOw0KCWlmbXItPmlmbV9h
Y3RpdmUgfD0gKGJtY3ImQk1DUl8xMDBNQlBTKT9JRk1fMTAwX1RYOklGTV8x
MF9UOw0KCWlmbXItPmlmbV9hY3RpdmUgfD0gKGJtY3ImQk1DUl9GVUxMX0RV
UExFWCk/SUZNX0ZEWDowOw0KCWlmbXItPmlmbV9hY3RpdmUgfD0gKChDU1Jf
UkVBRF80KHNjLFRYQ09OKSZUWENPTl9MT09QQkFDS19NT0RFKT09VFhDT05f
TE9PUEJBQ0tfTU9ERV9JTlQpP0lGTV9MT09QOjA7DQp9DQojZW5kaWYNCg0K
LyoNCiAqIFJlc2V0IGNoaXAsIFBIWSwgYWxsb2NhdGUgcmluZ3MNCiAqIA0K
ICogc3BsaW1wKCkgaW52b2tlZCBoZXJlDQogKi8NCnN0YXRpYyBpbnQgDQpl
cGljX2luaXQgX19QKCgNCiAgICBlcGljX3NvZnRjX3QgKiBzYykpDQp7ICAg
ICAgIA0KCXN0cnVjdCBpZm5ldCAqaWZwID0gJnNjLT5lcGljX2lmOw0KCWlu
dCBpLHM7DQogDQoJcyA9IHNwbGltcCgpOw0KDQoJLyogU29mdCByZXNldCB0
aGUgY2hpcCAqLw0KCUNTUl9XUklURV80KCBzYywgR0VOQ1RMLCBHRU5DVExf
U09GVF9SRVNFVCApOw0KDQoJLyogUmVzZXQgdGFrZXMgMTUgcGNpIHRpY2tz
IHdoaWNoIGRlcGVuZHMgb24gcHJvY2Vzc29yIHNwZWVkICovDQoJREVMQVko
MSk7DQoNCgkvKiBXYWtlIHVwICovDQoJQ1NSX1dSSVRFXzQoIHNjLCBHRU5D
VEwsIDAgKTsNCg0KCS8qID8/Pz8/PyAqLw0KCUNTUl9XUklURV80KCBzYywg
VEVTVDEsIDB4MDAwOCk7DQoNCgkvKiBJbml0aWFsaXplIHJpbmdzICovDQoJ
aWYoIGVwaWNfaW5pdF9yaW5ncyggc2MgKSApIHsNCgkJcHJpbnRmKCJ0eCVk
OiBmYWlsZWQgdG8gaW5pdGlhbGl6ZSByaW5nc1xuIixzYy0+dW5pdCk7DQoJ
CXNwbHgocyk7DQoJCXJldHVybiAtMTsNCgl9CQ0KDQoJLyogR2l2ZSByaW5n
cyB0byBFUElDICovDQoJQ1NSX1dSSVRFXzQoIHNjLCBQUkNEQVIsIHZ0b3Bo
eXMoIHNjLT5yeF9kZXNjICkgKTsNCglDU1JfV1JJVEVfNCggc2MsIFBUQ0RB
UiwgdnRvcGh5cyggc2MtPnR4X2Rlc2MgKSApOw0KDQoJLyogUHV0IG5vZGUg
YWRkcmVzcyB0byBFUElDICovDQoJQ1NSX1dSSVRFXzQoIHNjLCBMQU4wLCAo
KHVfaW50MTZfdCAqKXNjLT5lcGljX21hY2FkZHIpWzBdICk7DQogICAgICAg
IENTUl9XUklURV80KCBzYywgTEFOMSwgKCh1X2ludDE2X3QgKilzYy0+ZXBp
Y19tYWNhZGRyKVsxXSApOw0KCUNTUl9XUklURV80KCBzYywgTEFOMiwgKCh1
X2ludDE2X3QgKilzYy0+ZXBpY19tYWNhZGRyKVsyXSApOw0KDQojaWYgZGVm
aW5lZChFQVJMWV9UWCkNCgkvKiBTZXQgdHJhbnNtaXQgdGhyZXNob2xkICov
DQoJQ1NSX1dSSVRFXzQoIHNjLCBFVFhUSFIsIFRSQU5TTUlUX1RIUkVTSE9M
RCApOw0KI2VuZGlmDQoNCglDU1JfV1JJVEVfNCggc2MsIElQRywgMHgxMDEw
ICk7DQoNCgkvKiBDb21wdXRlIGFuZCBzZXQgUlhDT04uICovDQoJZXBpY19z
ZXRfcnhfbW9kZSggc2MgKTsNCg0KCS8qIFNldCBtZWRpYSBzcGVlZCBtb2Rl
ICovDQoJZXBpY19pbml0X3BoeSggc2MgKTsNCgllcGljX3NldF9tZWRpYV9z
cGVlZCggc2MgKTsNCg0KCS8qIFNldCBtdWx0aWNhc3QgdGFibGUgKi8NCgll
cGljX3NldF9tY190YWJsZSggc2MgKTsNCg0KCS8qIEVuYWJsZSBpbnRlcnJ1
cHRzIGJ5IHNldHRpbmcgdGhlIGludGVycnVwdCBtYXNrLiAqLw0KCUNTUl9X
UklURV80KCBzYywgSU5UTUFTSywNCgkJSU5UU1RBVF9SQ0MgfCBJTlRTVEFU
X1JRRSB8IElOVFNUQVRfT1ZXIHwgSU5UU1RBVF9SWEUgfA0KCQlJTlRTVEFU
X1RYQyB8IElOVFNUQVRfVENDIHwgSU5UU1RBVF9UUUUgfCBJTlRTVEFUX1RY
VSB8DQoJCUlOVFNUQVRfRkFUQUwgfA0KCQkoKFFTNjYxMl9PVUkgPT0gc2Mt
PnBoeWlkKT9JTlRTVEFUX0dQMjowKSApOw0KDQoJLyogRW5hYmxlIGludGVy
cnVwdHMsICBzZXQgZm9yIFBDSSByZWFkIG11bHRpcGxlIGFuZCBldGMgKi8N
CglDU1JfV1JJVEVfNCggc2MsIEdFTkNUTCwNCgkJR0VOQ1RMX0VOQUJMRV9J
TlRFUlJVUFQgfCBHRU5DVExfTUVNT1JZX1JFQURfTVVMVElQTEUgfA0KCQlH
RU5DVExfT05FQ09QWSB8IEdFTkNUTF9SRUNFSVZFX0ZJRk9fVEhSRVNIT0xE
NjQgKTsNCg0KCS8qIE1hcmsgaW50ZXJmYWNlIHJ1bm5pbmcgLi4uICovDQoJ
aWYoIGlmcC0+aWZfZmxhZ3MgJiBJRkZfVVAgKSBpZnAtPmlmX2ZsYWdzIHw9
IElGRl9SVU5OSU5HOw0KCWVsc2UgaWZwLT5pZl9mbGFncyAmPSB+SUZGX1JV
Tk5JTkc7DQoNCgkvKiAuLi4gYW5kIGZyZWUgKi8NCglpZnAtPmlmX2ZsYWdz
ICY9IH5JRkZfT0FDVElWRTsNCg0KCS8qIFN0YXJ0IFJ4IHByb2Nlc3MgKi8N
CgllcGljX3N0YXJ0X2FjdGl2aXR5KHNjKTsNCg0KCXNwbHgocyk7DQoJcmV0
dXJuIDA7DQp9DQoNCi8qDQogKiBTeW5vcHNpczogY2FsY3VsYXRlIGFuZCBz
ZXQgUnggbW9kZQ0KICovDQpzdGF0aWMgdm9pZA0KZXBpY19zZXRfcnhfbW9k
ZSgNCiAgICBlcGljX3NvZnRjX3QgKiBzYykNCnsNCgl1X2ludDMyX3QgZmxh
Z3MgPSBzYy0+ZXBpY19pZi5pZl9mbGFnczsNCiAgICAgICAgdV9pbnQzMl90
IHJ4Y29uID0gUlhDT05fREVGQVVMVCB8IFJYQ09OX1JFQ0VJVkVfTVVMVElD
QVNUX0ZSQU1FUyB8IFJYQ09OX1JFQ0VJVkVfQlJPQURDQVNUX0ZSQU1FUzsN
Cg0KCXJ4Y29uIHw9IChmbGFncyAmIElGRl9QUk9NSVNDKT9SWENPTl9QUk9N
SVNDVU9VU19NT0RFOjA7DQoNCglDU1JfV1JJVEVfNCggc2MsIFJYQ09OLCBy
eGNvbiApOw0KDQoJcmV0dXJuOw0KfQ0KDQovKg0KICogU3lub3BzaXM6IFJl
c2V0IFBIWSBhbmQgZG8gUEhZLXNwZWNpYWwgaW5pdGlhbGl6YXRpb246DQog
Ki8NCnN0YXRpYyB2b2lkDQplcGljX2luaXRfcGh5IF9fUCgoDQogICAgZXBp
Y19zb2Z0Y190ICogc2MpKQ0Kew0KCXVfaW50MzJfdCBpOw0KDQoJLyogUmVz
ZXQgUEhZICovDQoJZXBpY193cml0ZV9waHlfcmVnaXN0ZXIoIHNjLCBEUDgz
ODQwX0JNQ1IsIEJNQ1JfUkVTRVQgKTsNCglmb3IoaT0wO2k8MHgxMDAwMDA7
aSsrKQ0KCQlpZiggIShlcGljX3JlYWRfcGh5X3JlZ2lzdGVyKCBzYywgRFA4
Mzg0MF9CTUNSICkgJiBCTUNSX1JFU0VUKSApIGJyZWFrOw0KDQoJaWYoIGVw
aWNfcmVhZF9waHlfcmVnaXN0ZXIoIHNjLCBEUDgzODQwX0JNQ1IgKSAmIEJN
Q1JfUkVTRVQgKQ0KCQlwcmludGYoInR4JWQ6IFdBUk5JTkchIGNhbm5vdCBy
ZXNldCBQSFlcbiIsc2MtPnVuaXQpOw0KDQoJc3dpdGNoKCBzYy0+cGh5aWQg
KXsNCgljYXNlIFFTNjYxMl9PVUk6DQoJCS8qIEluaXQgUVM2NjEyIGFuZCBF
UElDIHRvIGdlbmVyYXRlIGludGVycnVwdCB3aGVuIEFOIGNvbXBsZXRlICov
DQoJCUNTUl9XUklURV80KCBzYywgTlZDVEwsIE5WQ1RMX0dQMV9PVVRQVVRf
RU5BQkxFICk7DQoJCWVwaWNfcmVhZF9waHlfcmVnaXN0ZXIoIHNjLCBRUzY2
MTJfSU5UU1RBVCApOw0KCQllcGljX3dyaXRlX3BoeV9yZWdpc3Rlciggc2Ms
IFFTNjYxMl9JTlRNQVNLLCBJTlRNQVNLX1RIVU5ERVJMQU4gfCBJTlRTVEFU
X0FOX0NPTVBMRVRFICk7DQoNCgkJLyogRW5hYmxlIFFTNjYxMiBleHRlbmRl
ZCBjYWJsZSBsZW5ndGggY2FwYWJpbGl0ZXMgKi8NCgkJZXBpY193cml0ZV9w
aHlfcmVnaXN0ZXIoIHNjLCBRUzY2MTJfTUNUTCwgZXBpY19yZWFkX3BoeV9y
ZWdpc3Rlciggc2MsUVM2NjEyX01DVEwgKSB8IE1DVExfQlRFWFQgKTsNCgkJ
YnJlYWs7DQoJZGVmYXVsdDoNCgkJYnJlYWs7DQoJfQ0KfQ0KDQovKg0KICog
U3lub3BzaXM6IFNldCBQSFkgdG8gbWVkaWEgdHlwZSBzcGVjaWZpZWQgYnkg
SUZGX0xJTksqIGZsYWdzIG9yDQogKiBpZm1lZGlhIHN0cnVjdHVyZS4NCiAq
Lw0Kc3RhdGljIHZvaWQNCmVwaWNfc2V0X21lZGlhX3NwZWVkIF9fUCgoDQog
ICAgZXBpY19zb2Z0Y190ICogc2MpKQ0Kew0KCXVfaW50MTZfdCBtZWRpYTsN
Cg0KI2lmIGRlZmluZWQoX05FVF9JRl9NRURJQV9IXykNCgl1X2ludDMyX3Qg
dGd0bWVkaWEgPSBzYy0+aWZtZWRpYS5pZm1fY3VyLT5pZm1fbWVkaWE7DQoN
CglpZiggSUZNX1NVQlRZUEUodGd0bWVkaWEpICE9IElGTV9BVVRPICl7DQoJ
CS8qIFNldCBtb2RlICovDQoJCW1lZGlhID0gKElGTV9TVUJUWVBFKHRndG1l
ZGlhKT09SUZNXzEwMF9UWCkgPyBCTUNSXzEwME1CUFMgOiAwOw0KCQltZWRp
YXw9ICh0Z3RtZWRpYSZJRk1fRkRYKSA/IEJNQ1JfRlVMTF9EVVBMRVggOiAw
Ow0KDQoJCXNjLT5lcGljX2lmLmlmX2JhdWRyYXRlID0gDQoJCQkoSUZNX1NV
QlRZUEUodGd0bWVkaWEpPT1JRk1fMTAwX1RYKT8xMDAwMDAwMDA6MTAwMDAw
MDA7DQoNCgkJZXBpY193cml0ZV9waHlfcmVnaXN0ZXIoIHNjLCBEUDgzODQw
X0JNQ1IsIG1lZGlhICk7DQoNCgkJbWVkaWEgPSBUWENPTl9ERUZBVUxUOw0K
CQlpZiggdGd0bWVkaWEgJiBJRk1fRkRYICkgbWVkaWEgfD0gVFhDT05fRlVM
TF9EVVBMRVg7DQoJCWVsc2UgaWYoIHRndG1lZGlhICYgSUZNX0xPT1AgKSBt
ZWRpYSB8PSBUWENPTl9MT09QQkFDS19NT0RFX0lOVDsNCgkJDQoJCUNTUl9X
UklURV80KCBzYywgVFhDT04sIG1lZGlhICk7DQoJfQ0KI2Vsc2UNCglzdHJ1
Y3QgaWZuZXQgKmlmcCA9ICZzYy0+ZXBpY19pZjsNCg0KCWlmKCBpZnAtPmlm
X2ZsYWdzICYgSUZGX0xJTkswICkgew0KCQkvKiBTZXQgbW9kZSAqLw0KCQlt
ZWRpYSA9IChpZnAtPmlmX2ZsYWdzICYgSUZGX0xJTksyKSA/IEJNQ1JfMTAw
TUJQUyA6IDA7DQoJCW1lZGlhfD0gKGlmcC0+aWZfZmxhZ3MgJiBJRkZfTElO
SzEpID8gQk1DUl9GVUxMX0RVUExFWCA6IDA7DQoNCgkJc2MtPmVwaWNfaWYu
aWZfYmF1ZHJhdGUgPSANCgkJCShpZnAtPmlmX2ZsYWdzICYgSUZGX0xJTksy
KT8xMDAwMDAwMDA6MTAwMDAwMDA7DQoNCgkJZXBpY193cml0ZV9waHlfcmVn
aXN0ZXIoIHNjLCBEUDgzODQwX0JNQ1IsIG1lZGlhICk7DQoNCgkJbWVkaWEg
PSBUWENPTl9ERUZBVUxUOw0KCQltZWRpYSB8PSAoaWZwLT5pZl9mbGFncyZJ
RkZfTElOSzIpP1RYQ09OX0ZVTExfRFVQTEVYOjA7DQogDQoJCUNTUl9XUklU
RV80KCBzYywgVFhDT04sIG1lZGlhICk7DQoJfQ0KI2VuZGlmDQoJICBlbHNl
IHsNCgkJc2MtPmVwaWNfaWYuaWZfYmF1ZHJhdGUgPSAxMDAwMDAwMDA7DQoN
CgkJQ1NSX1dSSVRFXzQoIHNjLCBUWENPTiwgVFhDT05fREVGQVVMVCApOw0K
DQoJCS8qIFNldCBhbmQgcmVzdGFydCBhdXRvbmVnICovDQoJCWVwaWNfd3Jp
dGVfcGh5X3JlZ2lzdGVyKCBzYywgRFA4Mzg0MF9CTUNSLA0KCQkJQk1DUl9B
VVRPTkVHT1RJQVRJT04gfCBCTUNSX1JFU1RBUlRfQVVUT05FRyApOw0KDQoJ
CS8qIElmIGl0IGlzIG5vdCBRUzY2MTIgUEhZLCB0cnkgdG8gZ2V0IHJlc3Vs
dCBvZiBhdXRvbmVnLiAqLw0KCQlpZiggUVM2NjEyX09VSSAhPSBzYy0+cGh5
aWQgKSB7DQoJCQkvKiBXYWl0IDMgc2Vjb25kcyBmb3IgdGhlIGF1dG9uZWcg
dG8gZmluaXNoDQoJCQkgKiBUaGlzIGlzIHRoZSByZWNvbW1lbmRlZCB0aW1l
IGZyb20gdGhlIERQODM4NDBBIGRhdGENCgkJCSAqIHNoZWV0IFNlY3Rpb24g
Ny4xDQoJCQkgKi8NCiAgICAgICAgCQlERUxBWSgzMDAwMDAwKTsNCgkJCQ0K
CQkJaWYoIGVwaWNfYXV0b25lZyhzYykgPT0gRVBJQ19GVUxMX0RVUExFWCAp
DQoJCQkJQ1NSX1dSSVRFXzQoIHNjLCBUWENPTiwgVFhDT05fRlVMTF9EVVBM
RVh8VFhDT05fREVGQVVMVCk7DQoJCX0NCgkJLyogRWxzZSBpdCB3aWxsIGJl
IGRvbmUgd2hlbiBHUDIgaW50IG9jY3VyZWQgKi8NCgl9DQoNCglyZXR1cm47
DQp9DQoNCi8qDQogKiBUaGlzIGZ1bmN0aW9ucyBnZXQgcmVzdWx0cyBvZiB0
aGUgYXV0b25lZyBwcm9jZXNzZXMgb2YgdGhlIHBoeQ0KICogSXQgaW1wbGVt
ZW50cyB0aGUgd29ya2Fyb3VuZCB0aGF0IGlzIGRlc2NyaWJlZCBpbiBzZWN0
aW9uIDcuMiAmIDcuMyBvZiB0aGUgDQogKiBEUDgzODQwQSBkYXRhIHNoZWV0
DQogKiBodHRwOi8vd3d3Lm5hdGlvbmFsLmNvbS9kcy9EUC9EUDgzODQwQS5w
ZGYNCiAqLw0Kc3RhdGljIGludCANCmVwaWNfYXV0b25lZygNCiAgICBlcGlj
X3NvZnRjX3QgKiBzYykNCnsNCglzdHJ1Y3QgaWZuZXQgKmlmcCA9ICZzYy0+
ZXBpY19pZjsNCgl1X2ludDE2X3QgbWVkaWE7DQoJdV9pbnQxNl90IGk7DQoN
CiAgICAgICAgLyogQk1TUiBtdXN0IGJlIHJlYWQgdHdpY2UgdG8gdXBkYXRl
IHRoZSBsaW5rIHN0YXR1cyBiaXQNCgkgKiBzaW5jZSB0aGF0IGJpdCBpcyBh
IGxhdGNoIGJpdA0KICAgICAgICAgKi8NCgllcGljX3JlYWRfcGh5X3JlZ2lz
dGVyKCBzYywgRFA4Mzg0MF9CTVNSKTsNCglpID0gZXBpY19yZWFkX3BoeV9y
ZWdpc3Rlciggc2MsIERQODM4NDBfQk1TUik7DQogICAgICAgIA0KICAgICAg
ICBpZiAoKGkgJiBCTVNSX0xJTktfU1RBVFVTKSAmJiAoaSAmIEJNU1JfQVVU
T05FR19DT01QTEVURSkpew0KCQlpID0gZXBpY19yZWFkX3BoeV9yZWdpc3Rl
ciggc2MsIERQODM4NDBfTFBBUiApOw0KDQoJCWlmICggaSAmIChBTkFSXzEw
MF9UWF9GRHxBTkFSXzEwX0ZEKSApDQoJCQlyZXR1cm4gCUVQSUNfRlVMTF9E
VVBMRVg7DQoJCWVsc2UNCgkJCXJldHVybiBFUElDX0hBTEZfRFVQTEVYOw0K
ICAgICAgICB9IA0KCWVsc2UgeyAgIC8qQXV0by1uZWdvdGlhdGlvbiBvciBs
aW5rIHN0YXR1cyBpcyBub3QgMQ0KCQkgICBUaHVzIHRoZSBhdXRvLW5lZ290
aWF0aW9uIGZhaWxlZCBhbmQgb25lDQoJCSAgIG11c3QgdGFrZSBvdGhlciBt
ZWFucyB0byBmaXggaXQuDQoJCSAgKi8NCg0KCQkvKiBBTkVSIG11c3QgYmUg
cmVhZCB0d2ljZSB0byBnZXQgdGhlIGNvcnJlY3QgcmVhZGluZyBmb3IgdGhl
IA0KCQkgKiBNdWx0aXBsZSBsaW5rIGZhdWx0IGJpdCAtLSBpdCBpcyBhIGxh
dGNoZWQgYml0DQoJIAkgKi8NCiAJCWVwaWNfcmVhZF9waHlfcmVnaXN0ZXIo
IHNjLCBEUDgzODQwX0FORVIgKTsNCgkJaSA9IGVwaWNfcmVhZF9waHlfcmVn
aXN0ZXIoIHNjLCBEUDgzODQwX0FORVIgKTsNCgkNCgkJaWYgKCBpICYgQU5F
Ul9NVUxUSVBMRV9MSU5LX0ZBVUxUICkgew0KCQkJLyogaXQgY2FuIGJlIGZv
cmNlZCB0byAxMDBNYi9zIEhhbGYtRHVwbGV4ICovDQoJIAkJbWVkaWEgPSBl
cGljX3JlYWRfcGh5X3JlZ2lzdGVyKCBzYywgRFA4Mzg0MF9CTUNSICk7DQoJ
CQltZWRpYSAmPSB+KEJNQ1JfQVVUT05FR09USUFUSU9OIHwgQk1DUl9GVUxM
X0RVUExFWCk7DQoJCQltZWRpYSB8PSBCTUNSXzEwME1CUFM7DQoJCQllcGlj
X3dyaXRlX3BoeV9yZWdpc3Rlciggc2MsIERQODM4NDBfQk1DUiwgbWVkaWEg
KTsNCgkJDQoJCQkvKiByZWFkIEJNU1IgYWdhaW4gdG8gZGV0ZXJtaW5lIGxp
bmsgc3RhdHVzICovDQoJCQllcGljX3JlYWRfcGh5X3JlZ2lzdGVyKCBzYywg
RFA4Mzg0MF9CTVNSICk7DQoJCQlpPWVwaWNfcmVhZF9waHlfcmVnaXN0ZXIo
IHNjLCBEUDgzODQwX0JNU1IgKTsNCgkJDQoJCQlpZiAoaSAmIEJNU1JfTElO
S19TVEFUVVMpew0KCQkJCS8qIHBvcnQgaXMgbGlua2VkIHRvIHRoZSBub24g
QXV0by1OZWdvdGlhdGlvbg0KCQkJCSAqIDEwME1icyBwYXJ0bmVyLg0KCQkJ
IAkgKi8NCgkJCQlyZXR1cm4gRVBJQ19IQUxGX0RVUExFWDsNCgkJCX0NCgkJ
CWVsc2Ugew0KCQkJCW1lZGlhID0gZXBpY19yZWFkX3BoeV9yZWdpc3Rlcigg
c2MsIERQODM4NDBfQk1DUik7DQoJCQkJbWVkaWEgJj0gfihCTUNSX0FVVE9O
RUdPVElBVElPTiB8IEJNQ1JfRlVMTF9EVVBMRVggfCBCTUNSXzEwME1CUFMp
Ow0KCQkJCWVwaWNfd3JpdGVfcGh5X3JlZ2lzdGVyKCBzYywgRFA4Mzg0MF9C
TUNSLCBtZWRpYSk7DQoJCQkJZXBpY19yZWFkX3BoeV9yZWdpc3Rlciggc2Ms
IERQODM4NDBfQk1TUiApOw0KCQkJCWk9ZXBpY19yZWFkX3BoeV9yZWdpc3Rl
ciggc2MsIERQODM4NDBfQk1TUiApOw0KDQoJCQkJaWYgKGkgJiBCTVNSX0xJ
TktfU1RBVFVTKSB7DQoJCQkJCS8qcG9ydCBpcyBsaW5rZWQgdG8gdGhlIG5v
bg0KCQkJCQkgKiBBdXRvLU5lZ290aWF0aW9uMTBNYnMgcGFydG5lcg0KCQkJ
IAkgCSAqLw0KCQkJCQlyZXR1cm4gRVBJQ19IQUxGX0RVUExFWDsNCgkJCQl9
DQoJCQl9DQoJCX0NCgkJLyogSWYgd2UgZ2V0IGhlcmUgd2UgYXJlIG1vc3Qg
bGlrZWx5IG5vdCBjb25uZWN0ZWQNCgkJICogc28gbGV0cyBkZWZhdWx0IGl0
IHRvIGhhbGYgZHVwbGV4DQoJCSAqLw0KCQlyZXR1cm4gRVBJQ19IQUxGX0RV
UExFWDsNCgl9DQoJDQp9DQoNCi8qDQogKiBTeW5vcHNpczogVGhpcyBmdW5j
dGlvbiBzaG91bGQgdXBkYXRlIG11bHRpY2FzdCBoYXNoIHRhYmxlLg0KICog
SSBzdXBwb3NlIHRoZXJlIGlzIGEgYnVnIGluIGNoaXBzIE1DIGZpbHRlciBz
byB0aGlzIGZ1bmN0aW9uDQogKiBvbmx5IHNldCBpdCB0byByZWNlaXZlIGFs
bCBNQyBwYWNrZXRzLiBUaGUgc2Vjb25kIHByb2JsZW0gaXMNCiAqIHRoYXQg
d2Ugc2hvdWxkIHdhaXQgZm9yIFRYIGFuZCBSWCBwcm9jZXNzZXMgdG8gc3Rv
cCBiZWZvcmUNCiAqIHJlcHJvZ3JhbW1pbmcgTUMgZmlsdGVyLiBUaGUgZXBp
Y19zdG9wX2FjdGl2aXR5KCkgYW5kIA0KICogZXBpY19zdGFydF9hY3Rpdml0
eSgpIHNob3VsZCBoZWxwIHRvIGRvIHRoaXMuDQogKi8NCnN0YXRpYyB2b2lk
DQplcGljX3NldF9tY190YWJsZSAoDQogICAgZXBpY19zb2Z0Y190ICogc2Mp
DQp7DQoJc3RydWN0IGlmbmV0ICppZnAgPSAmc2MtPmVwaWNfaWY7DQoNCglp
ZiggaWZwLT5pZl9mbGFncyAmIElGRl9NVUxUSUNBU1QgKXsNCgkJQ1NSX1dS
SVRFXzQoIHNjLCBNQzAsIDB4RkZGRiApOw0KCQlDU1JfV1JJVEVfNCggc2Ms
IE1DMSwgMHhGRkZGICk7DQoJCUNTUl9XUklURV80KCBzYywgTUMyLCAweEZG
RkYgKTsNCgkJQ1NSX1dSSVRFXzQoIHNjLCBNQzMsIDB4RkZGRiApOw0KCX0N
Cg0KCXJldHVybjsNCn0NCg0Kc3RhdGljIHZvaWQNCmVwaWNfc2h1dGRvd24o
DQogICAgaW50IGhvd3RvLA0KICAgIHZvaWQgKnNjKQ0Kew0KCWVwaWNfc3Rv
cChzYyk7DQp9DQoNCi8qIA0KICogU3lub3BzaXM6IFN0YXJ0IHJlY2VpdmUg
cHJvY2Vzcywgc2hvdWxkIGNoZWNrIHRoYXQgYWxsIGludGVybmFsIGNoaXAg
DQogKiBwb2ludGVycyBhcmUgc2V0IHByb3Blcmx5Lg0KICovDQpzdGF0aWMg
dm9pZA0KZXBpY19zdGFydF9hY3Rpdml0eSBfX1AoKA0KICAgIGVwaWNfc29m
dGNfdCAqIHNjKSkNCnsNCgkvKiBTdGFydCByeCBwcm9jZXNzICovDQoJQ1NS
X1dSSVRFXzQoIHNjLCBDT01NQU5ELCBDT01NQU5EX1JYUVVFVUVEIHwgQ09N
TUFORF9TVEFSVF9SWCApOw0KfQ0KDQovKg0KICogU3lub3BzaXM6IENvbXBs
ZXRlbHkgc3RvcCBSeCBhbmQgVHggcHJvY2Vzc2VzLiBJZiBUUUUgaXMgc2V0
IGFkZGl0aW9uYWwNCiAqIHBhY2tldCBuZWVkcyB0byBiZSBxdWV1ZWQgdG8g
c3RvcCBUeCBETUEuDQogKi8NCnN0YXRpYyB2b2lkDQplcGljX3N0b3BfYWN0
aXZpdHkgX19QKCgNCiAgICBlcGljX3NvZnRjX3QgKiBzYykpDQp7DQoJaW50
IGk7DQoNCgkvKiBTdG9wIFR4IGFuZCBSeCBETUEgKi8NCglDU1JfV1JJVEVf
NCggc2MsIENPTU1BTkQsIENPTU1BTkRfU1RPUF9SWCB8IENPTU1BTkRfU1RP
UF9SRE1BIHwgQ09NTUFORF9TVE9QX1RETUEpOw0KDQoJLyogV2FpdCBvbmx5
IFJ4IERNQSAqLw0KCWRwcmludGYoKCJ0eCVkOiB3YWl0aW5nIFJ4IERNQSB0
byBzdG9wXG4iLHNjLT51bml0KSk7DQoJZm9yKGk9MDtpPDB4MTAwMDAwO2kr
KykNCgkJaWYoIChDU1JfUkVBRF80KHNjLElOVFNUQVQpJklOVFNUQVRfUlhJ
RExFKSA9PSBJTlRTVEFUX1JYSURMRSApIGJyZWFrOw0KDQoJaWYoICEoQ1NS
X1JFQURfNChzYyxJTlRTVEFUKSZJTlRTVEFUX1JYSURMRSkgKSANCgkJcHJp
bnRmKCJ0eCVkOiBjYW4ndCBzdG9wIFJYIERNQVxuIixzYy0+dW5pdCk7DQoN
CgkvKiBNYXkgbmVlZCB0byBxdWV1ZSBvbmUgbW9yZSBwYWNrZXQgaWYgVFFF
ICovDQoJaWYoIChDU1JfUkVBRF80KCBzYywgSU5UU1RBVCApICYgSU5UU1RB
VF9UUUUpICYmDQoJICAgICEoQ1NSX1JFQURfNCggc2MsIElOVFNUQVQgKSAm
IElOVFNUQVRfVFhJRExFKSApew0KCQlkcHJpbnRmKCgidHglZDogcXVldWUg
bGFzdCBwYWNrZXRcbiIsc2MtPnVuaXQpKTsNCg0KCQkvKiBUdXJuIGl0IHRv
IGxvb3BiYWNrIG1vZGUgKi8JDQoJCUNTUl9XUklURV80KCBzYywgVFhDT04s
IFRYQ09OX0RFRkFVTFQgfCBUWENPTl9MT09QQkFDS19NT0RFX0lOVCApOw0K
DQoJCXNjLT50eF9kZXNjW3NjLT5jdXJfdHhdLmJ1ZmFkZHIgPSB2dG9waHlz
KCBzYyApOw0KCQlzYy0+dHhfZGVzY1tzYy0+Y3VyX3R4XS5idWZsZW5ndGgg
PSBFVEhFUl9NSU5fTEVOLUVUSEVSX0NSQ19MRU47DQoJCXNjLT50eF9kZXNj
W3NjLT5jdXJfdHhdLmNvbnRyb2wgPSAweDE0Ow0KCQlzYy0+dHhfZGVzY1tz
Yy0+Y3VyX3R4XS50eGxlbmd0aCA9IEVUSEVSX01JTl9MRU4tRVRIRVJfQ1JD
X0xFTjsNCgkJc2MtPnR4X2Rlc2Nbc2MtPmN1cl90eF0uc3RhdHVzID0gMHg4
MDAwOw0KDQoJCUNTUl9XUklURV80KCBzYywgQ09NTUFORCwgQ09NTUFORF9U
WFFVRVVFRCApOw0KDQoJCWRwcmludGYoKCJ0eCVkOiB3YWl0aW5nIFR4IERN
QSB0byBzdG9wXG4iLHNjLT51bml0KSk7DQoJCS8qIFdhaXQgVFggRE1BIHRv
IHN0b3AgKi8NCgkJZm9yKGk9MDtpPDB4MTAwMDAwO2krKykNCgkJCWlmKCAo
Q1NSX1JFQURfNChzYyxJTlRTVEFUKSZJTlRTVEFUX1RYSURMRSkgPT0gSU5U
U1RBVF9UWElETEUgKSBicmVhazsNCg0KCQlpZiggIShDU1JfUkVBRF80KHNj
LElOVFNUQVQpJklOVFNUQVRfVFhJRExFKSApDQoJCQlwcmludGYoInR4JWQ6
IGNhbid0IHN0b3AgVFggRE1BXG4iLHNjLT51bml0KTsNCgl9DQp9DQoNCi8q
DQogKiAgU3lub3BzaXM6IFNodXQgZG93biBib2FyZCBhbmQgZGVhbGxvY2F0
ZXMgcmluZ3MuDQogKg0KICogIHNwbGltcCgpIGludm9rZWQgaGVyZQ0KICov
DQpzdGF0aWMgdm9pZA0KZXBpY19zdG9wIF9fUCgoDQogICAgZXBpY19zb2Z0
Y190ICogc2MpKQ0Kew0KCWludCBpLHM7DQoNCglzID0gc3BsaW1wKCk7DQoN
CglzYy0+ZXBpY19pZi5pZl90aW1lciA9IDA7DQoNCgkvKiBEaXNhYmxlIGlu
dGVycnVwdHMgKi8NCglDU1JfV1JJVEVfNCggc2MsIElOVE1BU0ssIDAgKTsN
CglDU1JfV1JJVEVfNCggc2MsIEdFTkNUTCwgMCApOw0KDQoJLyogVHJ5IHRv
IHN0b3AgUnggYW5kIFRYIHByb2Nlc3NlcyAqLw0KCWVwaWNfc3RvcF9hY3Rp
dml0eShzYyk7DQoNCgkvKiBSZXNldCBjaGlwICovDQoJQ1NSX1dSSVRFXzQo
IHNjLCBHRU5DVEwsIEdFTkNUTF9TT0ZUX1JFU0VUICk7DQoJREVMQVkoMSk7
DQoNCgkvKiBGcmVlIG1lbW9yeSBhbGxvY2F0ZWQgZm9yIHJpbmdzICovDQoJ
ZXBpY19mcmVlX3JpbmdzKHNjKTsNCg0KCS8qIE1hcmsgYXMgc3RvcGVkICov
DQoJc2MtPmVwaWNfaWYuaWZfZmxhZ3MgJj0gfklGRl9SVU5OSU5HOw0KDQoJ
c3BseChzKTsNCglyZXR1cm47DQp9DQoNCi8qDQogKiBTeW5vcHNpczogVGhp
cyBmdW5jdGlvbiBzaG91bGQgZnJlZSBhbGwgbWVtb3J5IGFsbG9jYXRlZCBm
b3IgcmluZ3MuDQogKi8gDQpzdGF0aWMgdm9pZA0KZXBpY19mcmVlX3Jpbmdz
IF9fUCgoDQogICAgZXBpY19zb2Z0Y190ICogc2MpKQ0Kew0KCWludCBpOw0K
DQoJZm9yKGk9MDtpPFJYX1JJTkdfU0laRTtpKyspew0KCQlzdHJ1Y3QgZXBp
Y19yeF9idWZmZXIgKmJ1ZiA9IHNjLT5yeF9idWZmZXIgKyBpOw0KCQlzdHJ1
Y3QgZXBpY19yeF9kZXNjICpkZXNjID0gc2MtPnJ4X2Rlc2MgKyBpOw0KCQkN
CgkJZGVzYy0+c3RhdHVzID0gMDsNCgkJZGVzYy0+YnVmbGVuZ3RoID0gMDsN
CgkJZGVzYy0+YnVmYWRkciA9IDA7DQoNCgkJaWYoIGJ1Zi0+bWJ1ZiApIG1f
ZnJlZW0oIGJ1Zi0+bWJ1ZiApOw0KCQlidWYtPm1idWYgPSBOVUxMOw0KCX0N
Cg0KCWZvcihpPTA7aTxUWF9SSU5HX1NJWkU7aSsrKXsNCgkJc3RydWN0IGVw
aWNfdHhfYnVmZmVyICpidWYgPSBzYy0+dHhfYnVmZmVyICsgaTsNCgkJc3Ry
dWN0IGVwaWNfdHhfZGVzYyAqZGVzYyA9IHNjLT50eF9kZXNjICsgaTsNCg0K
CQlkZXNjLT5zdGF0dXMgPSAwOw0KCQlkZXNjLT5idWZsZW5ndGggPSAwOw0K
CQlkZXNjLT5idWZhZGRyID0gMDsNCg0KCQlpZiggYnVmLT5tYnVmICkgbV9m
cmVlbSggYnVmLT5tYnVmICk7DQoJCWJ1Zi0+bWJ1ZiA9IE5VTEw7DQoJfQ0K
fQ0KDQovKg0KICogU3lub3BzaXM6ICBBbGxvY2F0ZXMgbWJ1ZnMgZm9yIFJ4
IHJpbmcgYW5kIHBvaW50IFJ4IGRlc2NzIHRvIHRoZW0uDQogKiBQb2ludCBU
eCBkZXNjcyB0byBmcmFnbWVudCBsaXN0cy4gQ2hlY2sgdGhhdCBhbGwgZGVz
Y3MgYW5kIGZyYWdsaXN0cw0KICogYXJlIGJvdW5kZWQgYW5kIGFsaWduZWQg
cHJvcGVybHkuDQogKi8NCnN0YXRpYyBpbnQNCmVwaWNfaW5pdF9yaW5ncyhl
cGljX3NvZnRjX3QgKiBzYyl7DQoJaW50IGk7DQoJc3RydWN0IG1idWYgKm07
DQoNCglzYy0+Y3VyX3J4ID0gc2MtPmN1cl90eCA9IHNjLT5kaXJ0eV90eCA9
IHNjLT5wZW5kaW5nX3R4cyA9IDA7DQoNCglmb3IgKGkgPSAwOyBpIDwgUlhf
UklOR19TSVpFOyBpKyspIHsNCgkJc3RydWN0IGVwaWNfcnhfYnVmZmVyICpi
dWYgPSBzYy0+cnhfYnVmZmVyICsgaTsNCgkJc3RydWN0IGVwaWNfcnhfZGVz
YyAqZGVzYyA9IHNjLT5yeF9kZXNjICsgaTsNCg0KCQlkZXNjLT5zdGF0dXMg
PSAwOwkJLyogT3duZWQgYnkgZHJpdmVyICovDQoJCWRlc2MtPm5leHQgPSB2
dG9waHlzKCBzYy0+cnhfZGVzYyArICgoaSsxKSVSWF9SSU5HX1NJWkUpICk7
DQoNCgkJaWYoIChkZXNjLT5uZXh0ICYgMykgfHwgKChkZXNjLT5uZXh0ICYg
MHhGRkYpICsgc2l6ZW9mKHN0cnVjdCBlcGljX3J4X2Rlc2MpID4gMHgxMDAw
ICkgKQ0KCQkJcHJpbnRmKCJ0eCVkOiBXQVJOSU5HISByeF9kZXNjIGlzIG1p
c2JvdW5kIG9yIG1pc2FsaWduZWRcbiIsc2MtPnVuaXQpOw0KDQoJCUVQSUNf
TUdFVENMVVNURVIoIGJ1Zi0+bWJ1ZiApOw0KCQlpZiggTlVMTCA9PSBidWYt
Pm1idWYgKSB7DQoJCQllcGljX2ZyZWVfcmluZ3Moc2MpOw0KCQkJcmV0dXJu
IC0xOw0KCQl9DQoJCWRlc2MtPmJ1ZmFkZHIgPSB2dG9waHlzKCBtdG9kKGJ1
Zi0+bWJ1ZixjYWRkcl90KSApOw0KDQoJCWRlc2MtPmJ1Zmxlbmd0aCA9IEVU
SEVSX01BWF9GUkFNRV9MRU47DQoJCWRlc2MtPnN0YXR1cyA9IDB4ODAwMDsJ
CQkvKiBHaXZlIHRvIEVQSUMgKi8NCg0KCX0NCg0KCWZvciAoaSA9IDA7IGkg
PCBUWF9SSU5HX1NJWkU7IGkrKykgew0KCQlzdHJ1Y3QgZXBpY190eF9idWZm
ZXIgKmJ1ZiA9IHNjLT50eF9idWZmZXIgKyBpOw0KCQlzdHJ1Y3QgZXBpY190
eF9kZXNjICpkZXNjID0gc2MtPnR4X2Rlc2MgKyBpOw0KDQoJCWRlc2MtPnN0
YXR1cyA9IDA7DQoJCWRlc2MtPm5leHQgPSB2dG9waHlzKCBzYy0+dHhfZGVz
YyArICggKGkrMSklVFhfUklOR19TSVpFICkgKTsNCg0KCQlpZiggKGRlc2Mt
Pm5leHQgJiAzKSB8fCAoKGRlc2MtPm5leHQgJiAweEZGRikgKyBzaXplb2Yo
c3RydWN0IGVwaWNfdHhfZGVzYykgPiAweDEwMDAgKSApDQoJCQlwcmludGYo
InR4JWQ6IFdBUk5JTkchIHR4X2Rlc2MgaXMgbWlzYm91bmQgb3IgbWlzYWxp
Z25lZFxuIixzYy0+dW5pdCk7DQoNCgkJYnVmLT5tYnVmID0gTlVMTDsNCgkJ
ZGVzYy0+YnVmYWRkciA9IHZ0b3BoeXMoIHNjLT50eF9mbGlzdCArIGkgKTsN
CgkJaWYoIChkZXNjLT5idWZhZGRyICYgMykgfHwgKChkZXNjLT5idWZhZGRy
ICYgMHhGRkYpICsgc2l6ZW9mKHN0cnVjdCBlcGljX2ZyYWdfbGlzdCkgPiAw
eDEwMDAgKSApDQoJCQlwcmludGYoInR4JWQ6IFdBUk5JTkchIGZyYWdfbGlz
dCBpcyBtaXNib3VuZCBvciBtaXNhbGlnbmVkXG4iLHNjLT51bml0KTsNCgl9
DQoNCglyZXR1cm4gMDsNCn0NCg0KLyoNCiAqIEVFUFJPTSBvcGVyYXRpb24g
ZnVuY3Rpb25zDQogKi8NCnN0YXRpYyB2b2lkIGVwaWNfd3JpdGVfZWVwcm9t
cmVnIF9fUCgoDQogICAgZXBpY19zb2Z0Y190ICpzYywNCiAgICB1X2ludDhf
dCB2YWwpKQ0Kew0KCXVfaW50MTZfdCBpOw0KDQoJQ1NSX1dSSVRFXzEoIHNj
LCBFRUNUTCwgdmFsICk7DQoNCglmb3IoIGk9MDtpPDB4RkY7IGkrKykNCgkJ
aWYoICEoQ1NSX1JFQURfMSggc2MsIEVFQ1RMICkgJiAweDIwKSApIGJyZWFr
Ow0KDQoJcmV0dXJuOw0KfQ0KDQpzdGF0aWMgdV9pbnQ4X3QNCmVwaWNfcmVh
ZF9lZXByb21yZWcgX19QKCgNCiAgICBlcGljX3NvZnRjX3QgKnNjKSkNCnsN
CglyZXR1cm4gQ1NSX1JFQURfMSggc2MsRUVDVEwgKTsNCn0gIA0KDQpzdGF0
aWMgdV9pbnQ4X3QNCmVwaWNfZWVwcm9tX2Nsb2NrIF9fUCgoDQogICAgZXBp
Y19zb2Z0Y190ICpzYywNCiAgICB1X2ludDhfdCB2YWwpKQ0Kew0KCWVwaWNf
d3JpdGVfZWVwcm9tcmVnKCBzYywgdmFsICk7DQoJZXBpY193cml0ZV9lZXBy
b21yZWcoIHNjLCAodmFsIHwgMHg0KSApOw0KCWVwaWNfd3JpdGVfZWVwcm9t
cmVnKCBzYywgdmFsICk7DQoJDQoJcmV0dXJuIGVwaWNfcmVhZF9lZXByb21y
ZWcoIHNjICk7DQp9DQoNCnN0YXRpYyB2b2lkDQplcGljX291dHB1dF9lZXBy
b213IF9fUCgoDQogICAgZXBpY19zb2Z0Y190ICogc2MsDQogICAgdV9pbnQx
Nl90IHZhbCkpDQp7DQoJaW50IGk7ICAgICAgICAgIA0KCWZvciggaSA9IDB4
RjsgaSA+PSAwOyBpLS0pew0KCQlpZiggKHZhbCAmICgxIDw8IGkpKSApIGVw
aWNfZWVwcm9tX2Nsb2NrKCBzYywgMHgwQiApOw0KCQllbHNlIGVwaWNfZWVw
cm9tX2Nsb2NrKCBzYywgMyk7DQoJfQ0KfQ0KDQpzdGF0aWMgdV9pbnQxNl90
DQplcGljX2lucHV0X2VlcHJvbXcgX19QKCgNCiAgICBlcGljX3NvZnRjX3Qg
KnNjKSkNCnsNCglpbnQgaTsNCglpbnQgdG1wOw0KCXVfaW50MTZfdCByZXR2
YWwgPSAwOw0KDQoJZm9yKCBpID0gMHhGOyBpID49IDA7IGktLSkgewkNCgkJ
dG1wID0gZXBpY19lZXByb21fY2xvY2soIHNjLCAweDMgKTsNCgkJaWYoIHRt
cCAmIDB4MTAgKXsNCgkJCXJldHZhbCB8PSAoMSA8PCBpKTsNCgkJfQ0KCX0N
CglyZXR1cm4gcmV0dmFsOw0KfQ0KDQpzdGF0aWMgaW50DQplcGljX3JlYWRf
ZWVwcm9tIF9fUCgoDQogICAgZXBpY19zb2Z0Y190ICpzYywNCiAgICB1X2lu
dDE2X3QgbG9jKSkNCnsNCglpbnQgaTsNCgl1X2ludDE2X3QgZGF0YXZhbDsN
Cgl1X2ludDE2X3QgcmVhZF9jbWQ7DQoNCgllcGljX3dyaXRlX2VlcHJvbXJl
Zyggc2MgLCAzKTsNCg0KCWlmKCBlcGljX3JlYWRfZWVwcm9tcmVnKCBzYyAp
ICYgMHg0MCApDQoJCXJlYWRfY21kID0gKCBsb2MgJiAweDNGICkgfCAweDE4
MDsNCgllbHNlDQoJCXJlYWRfY21kID0gKCBsb2MgJiAweEZGICkgfCAweDYw
MDsNCg0KCWVwaWNfb3V0cHV0X2VlcHJvbXcoIHNjLCByZWFkX2NtZCApOw0K
DQogICAgICAgIGRhdGF2YWwgPSBlcGljX2lucHV0X2VlcHJvbXcoIHNjICk7
DQoNCgllcGljX3dyaXRlX2VlcHJvbXJlZyggc2MsIDEgKTsNCgkNCglyZXR1
cm4gZGF0YXZhbDsNCn0NCg0Kc3RhdGljIGludA0KZXBpY19yZWFkX3BoeV9y
ZWdpc3RlciBfX1AoKA0KICAgIGVwaWNfc29mdGNfdCAqc2MsDQogICAgdV9p
bnQxNl90IGxvYykpDQp7DQoJaW50IGk7DQoNCglDU1JfV1JJVEVfNCggc2Ms
IE1JSUNUTCwgKChsb2MgPDwgNCkgfCAweDA2MDEpICk7DQoNCglmb3IoIGk9
MDtpPDB4MTAwMDtpKyspIGlmKCAhKENTUl9SRUFEXzQoIHNjLCBNSUlDVEwg
KSYxKSApIGJyZWFrOw0KDQoJcmV0dXJuIENTUl9SRUFEXzQoIHNjLCBNSUlE
QVRBICk7DQp9DQoNCnN0YXRpYyB2b2lkDQplcGljX3dyaXRlX3BoeV9yZWdp
c3RlciBfX1AoKA0KICAgIGVwaWNfc29mdGNfdCAqIHNjLA0KICAgIHVfaW50
MTZfdCBsb2MsDQogICAgdV9pbnQxNl90IHZhbCkpDQp7DQoJaW50IGk7DQoN
CglDU1JfV1JJVEVfNCggc2MsIE1JSURBVEEsIHZhbCApOw0KCUNTUl9XUklU
RV80KCBzYywgTUlJQ1RMLCAoKGxvYyA8PCA0KSB8IDB4MDYwMikgKTsNCg0K
CWZvciggaT0wO2k8MHgxMDAwO2krKykgaWYoICEoQ1NSX1JFQURfNCggc2Ms
IE1JSUNUTCApJjIpICkgYnJlYWs7DQoNCglyZXR1cm47DQp9DQoNCiNpZiBk
ZWZpbmVkKEVQSUNfREVCVUcpDQpzdGF0aWMgdm9pZA0KZXBpY19kdW1wX3N0
YXRlIF9fUCgoDQogICAgZXBpY19zb2Z0Y190ICogc2MpKQ0Kew0KCWludCBq
Ow0KCXN0cnVjdCBlcGljX3R4X2Rlc2MgKnRkZXNjOw0KCXN0cnVjdCBlcGlj
X3J4X2Rlc2MgKnJkZXNjOw0KCXByaW50ZigidHglZDogY3VyX3J4OiAlZCwg
cGVuZGluZ190eHM6ICVkLCBkaXJ0eV90eDogJWQsIGN1cl90eDogJWRcbiIs
DQoJCXNjLT51bml0LHNjLT5jdXJfcngsc2MtPnBlbmRpbmdfdHhzLHNjLT5k
aXJ0eV90eCxzYy0+Y3VyX3R4KTsNCglwcmludGYoInR4JWQ6IENPTU1BTkQ6
IDB4JTA4eCwgSU5UU1RBVDogMHglMDh4XG4iLHNjLT51bml0LENTUl9SRUFE
XzQoc2MsQ09NTUFORCksQ1NSX1JFQURfNChzYyxJTlRTVEFUKSk7DQoJcHJp
bnRmKCJ0eCVkOiBQUkNEQVI6IDB4JTA4eCwgUFRDREFSOiAweCUwOHhcbiIs
c2MtPnVuaXQsQ1NSX1JFQURfNChzYyxQUkNEQVIpLENTUl9SRUFEXzQoc2Ms
UFRDREFSKSk7DQoJcHJpbnRmKCJ0eCVkOiBkdW1waW5nIHJ4IGRlc2NyaXB0
b3JzXG4iLHNjLT51bml0KTsNCglmb3Ioaj0wO2o8UlhfUklOR19TSVpFO2or
Kyl7DQoJCXJkZXNjID0gc2MtPnJ4X2Rlc2MgKyBqOw0KCQlwcmludGYoImRl
c2MlZDogJTRkIDB4JTA0eCwgMHglMDh4LCAlNGQsIDB4JTA4eFxuIiwNCgkJ
CWosDQoJCQlyZGVzYy0+cnhsZW5ndGgscmRlc2MtPnN0YXR1cywNCgkJCXJk
ZXNjLT5idWZhZGRyLA0KCQkJcmRlc2MtPmJ1Zmxlbmd0aCwNCgkJCXJkZXNj
LT5uZXh0DQoJCSk7DQoJfQ0KCXByaW50ZigidHglZDogZHVtcGluZyB0eCBk
ZXNjcmlwdG9yc1xuIixzYy0+dW5pdCk7DQoJZm9yKGo9MDtqPFRYX1JJTkdf
U0laRTtqKyspew0KCQl0ZGVzYyA9IHNjLT50eF9kZXNjICsgajsNCgkJcHJp
bnRmKCJkZXNjJWQ6ICU0ZCAweCUwNHgsIDB4JTA4eCwgMHglMDR4ICU0ZCwg
MHglMDh4LCBtYnVmOiAweCUwOHhcbiIsDQoJCQlqLA0KCQkJdGRlc2MtPnR4
bGVuZ3RoLHRkZXNjLT5zdGF0dXMsDQoJCQl0ZGVzYy0+YnVmYWRkciwNCgkJ
CXRkZXNjLT5jb250cm9sLHRkZXNjLT5idWZsZW5ndGgsDQoJCQl0ZGVzYy0+
bmV4dCwNCgkJCXNjLT50eF9idWZmZXJbal0ubWJ1Zg0KCQkpOw0KCX0NCn0N
CiNlbmRpZg0KI2VuZGlmIC8qIE5QQ0kgPiAwICovDQo=
--0-535351022-896843486=:20905--

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.96.980603100249.20905B-300000>