---1463811072-981693039-946787501=:6648
Content-Type: TEXT/PLAIN; charset=US-ASCII
Drop this on top of 2.3.34/5/6.
This fixes a bunch of issues.
Andre Hedrick
The Linux IDE guy
---1463811072-981693039-946787501=:6648
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="ide.2.3.34.19991231.patch"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.10.10001012031410.6648@home.suse.com>
Content-Description:
Content-Disposition: attachment; filename="ide.2.3.34.19991231.patch"
ZGlmZiAtdXJOIGxpbnV4LTIuMy4zNC1wcmlzdGluZS9Eb2N1bWVudGF0aW9u
L0NvbmZpZ3VyZS5oZWxwIGxpbnV4L0RvY3VtZW50YXRpb24vQ29uZmlndXJl
LmhlbHANCi0tLSBsaW51eC0yLjMuMzQtcHJpc3RpbmUvRG9jdW1lbnRhdGlv
bi9Db25maWd1cmUuaGVscAlNb24gRGVjIDIwIDE1OjQzOjAxIDE5OTkNCisr
KyBsaW51eC9Eb2N1bWVudGF0aW9uL0NvbmZpZ3VyZS5oZWxwCVRodSBEZWMg
MzAgMDQ6Mjk6MTcgMTk5OQ0KQEAgLTQ1MCw2ICs0NTAsOCBAQA0KICAgY2Fu
IHNheSBOIGhlcmUuDQogDQogICBUaGlzIG5vdyBpbmNsdWRlcyB0aGUgT25T
dHJlYW0gREktMzAgdGFwZSBkcml2ZSBzdXBwb3J0Lg0KKyAgV2lsbCBub3Qg
d29yayB3aXRoIFNDU0kgcHJvdG9jb2wsIHVudGlsIHRoZXJlIGlzIHN1cHBv
cnQgZm9yIHRoZQ0KKyAgU0MtMzAgYW5kIFNDLTUwIHZlcnNpb25zLg0KIA0K
ICAgSWYgeW91IHNheSBZIGhlcmUsIHRoZSB0YXBlIGRyaXZlIHdpbGwgYmUg
aWRlbnRpZmllZCBhdCBib290IHRpbWUNCiAgIGFsb25nIHdpdGggb3RoZXIg
SURFIGRldmljZXMsIGFzICJoZGIiIG9yICJoZGMiLCBvciBzb21ldGhpbmcN
CkBAIC00ODksNiArNDkxLDkgQEANCiAgIGFuZCB3aWxsIGFsbG93IHlvdSB0
byB1c2UgYSBTQ1NJIGRldmljZSBkcml2ZXIgaW5zdGVhZCBvZiBhIG5hdGl2
ZQ0KICAgQVRBUEkgZHJpdmVyLg0KIA0KKyAgTXVzdCBwYXNzICJoZHg9c2Nz
aSIgcGVyIGRldmljZXMgaWYgeW91IHdhbnQgdGhlIG5hdGl2ZSBFSURFIHN1
Yi1kcml2ZXJzDQorICB0byBza2lwIG92ZXIgdGhlIG5hdGl2ZSBzdXBwb3J0
LiAgVGhpcyBpcyByZXF1aXJlZCBmb3IgdXNlIG9mIENELVJXJ3MuDQorDQog
ICBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgaGF2ZSBhbiBBVEFQSSBkZXZpY2Ug
Zm9yIHdoaWNoIG5vIG5hdGl2ZQ0KICAgZHJpdmVyIGhhcyBiZWVuIHdyaXR0
ZW4gKGZvciBleGFtcGxlLCBhbiBBVEFQSSBQRC1DRCBvciBDRFIgZHJpdmUp
Ow0KICAgeW91IGNhbiB0aGVuIHVzZSB0aGlzIGVtdWxhdGlvbiB0b2dldGhl
ciB3aXRoIGFuIGFwcHJvcHJpYXRlIFNDU0kNCkBAIC02NDcsOSArNjUyLDE1
IEBADQogDQogICBJZiB1bnN1cmUsIHNheSBOLg0KIA0KLUNNRDY0NiBjaGlw
c2V0IHN1cHBvcnQgKEVYUEVSSU1FTlRBTCkNCi1DT05GSUdfQkxLX0RFVl9D
TUQ2NDYNCi0gIFNheSBZIGhlcmUgaWYgeW91IGhhdmUgYW4gSURFIGNvbnRy
b2xsZXIgd2hpY2ggdXNlcyB0aGlzIGNoaXBzZXQuDQorQ01ENjRYIGNoaXBz
ZXQgc3VwcG9ydCAoRVhQRVJJTUVOVEFMKQ0KK0NPTkZJR19CTEtfREVWX0NN
RDY0WA0KKyAgU2F5IFkgaGVyZSBpZiB5b3UgaGF2ZSBhbiBJREUgY29udHJv
bGxlciB3aGljaCB1c2VzIGFueSBvZiB0aGVzZSBjaGlwc2V0cywNCisgIENN
RDY0MywgQ01ENjQ2LCBvciBDTUQ2NDguDQorDQorQ01ENjRYIGNoaXBzZXQg
UkFJRCBzdXBwb3J0IChFWFBFUklNRU5UQUwpIChXSVApDQorQ09ORklHX0JM
S19ERVZfQ01ENjRYDQorICBXb3JrIGluIHByb2dyZXNzIGZvciBoYXJkd2Fy
ZSByYWlkIGF0YS0zMy82Ni4uLi4uLi4uLi5yZXYgNyBtaW5pbXVtLg0KKyAg
U2F5IE4gZm9yIG5vdy4NCiANCiBDWTgyQzY5MyBjaGlwc2V0IHN1cHBvcnQg
KEVYUEVSSU1FTlRBTCkNCiBDT05GSUdfQkxLX0RFVl9DWTgyQzY5Mw0KQEAg
LTY4NywxMSArNjk4LDE2IEBADQogDQogICBQbGVhc2UgcmVhZCB0aGUgY29t
bWVudHMgYXQgdGhlIHRvcCBvZiBkcml2ZXJzL2Jsb2NrL2hwdDM2Ni5jDQog
DQotSFBUMzY2IEZhc3QgSW50ZXJydXB0IHN1cHBvcnQgKEVYUEVSSU1FTlRB
TCkNCitIUFQzNjYgRmFzdCBJbnRlcnJ1cHQgc3VwcG9ydCAoRVhQRVJJTUVO
VEFMKSAoV0lQKQ0KIEhQVDM2Nl9GQVNUX0lSUV9QUkVESUNUSU9ODQogDQog
ICBJZiB1bnN1cmUsIHNheSBOLg0KIA0KK0hQVDM2NiBtb2RlIHRocmVlIHVu
c3VwcG9ydGVkIChFWFBFUklNRU5UQUwpIChXSVApDQorSFBUMzY2X01PREUz
DQorICBUaGlzIGlzIGFuIHVuZG9jdW1lbnRlZCBtb2RlIHRoYXQgdGhlIEhB
MzY2IGNhbiBkZWZhdWx0IHRvIGluIG1hbnkgY2FzZXMuDQorICBJZiB1bnN1
cmUsIHNheSBOLg0KKw0KIE5TODc0MTUgc3VwcG9ydCAoRVhQRVJJTUVOVEFM
KQ0KIENPTkZJR19CTEtfREVWX05TODc0MTUNCiAgIFRoaXMgZHJpdmVyIGFk
ZHMgZGV0ZWN0aW9uIGFuZCBzdXBwb3J0IGZvciB0aGUgTlM4NzQxNSBjaGlw
DQpAQCAtNzEzLDcgKzcyOSw3IEBADQogDQogICBQbGVhc2UgcmVhZCB0aGUg
Y29tbWVudHMgYXQgdGhlIHRvcCBvZiBkcml2ZXJzL2Jsb2NrL3BpaXguYw0K
IA0KLSAgSWYgdW5zdXJlLCBzYXkgTi4NCisgIElmIHVuc3VyZSwgc2F5IFku
DQogDQogUElJWG4gVHVuaW5nIHN1cHBvcnQNCiBDT05GSUdfQkxLX0RFVl9Q
SUlYX1RVTklORw0KQEAgLTcyNSw3ICs3NDEsNyBAQA0KICAgQ2FzZSA0MzBI
WC80NDBGWCBQSUlYMyBuZWVkIHNwZWVkIGxpbWl0cyB0byByZWR1Y2UgVURN
QSB0byBETUEgbW9kZQ0KICAgMiBpZiB0aGUgQklPUyBjYW4gbm90IHBlcmZv
cm0gdGhpcyB0YXNrIGF0IGluaXRpYWxpemF0aW9uLg0KIA0KLSAgSWYgdW5z
dXJlLCBzYXkgTi4NCisgIElmIHVuc3VyZSwgc2F5IFkuDQogDQogUFJPTUlT
RSBQREMyMDI0Ni9QREMyMDI2MiBzdXBwb3J0DQogQ09ORklHX0JMS19ERVZf
UERDMjAyWFgNCmRpZmYgLXVyTiBsaW51eC0yLjMuMzQtcHJpc3RpbmUvRG9j
dW1lbnRhdGlvbi9pZGUudHh0IGxpbnV4L0RvY3VtZW50YXRpb24vaWRlLnR4
dA0KLS0tIGxpbnV4LTIuMy4zNC1wcmlzdGluZS9Eb2N1bWVudGF0aW9uL2lk
ZS50eHQJV2VkIERlYyAgOCAxNToxNzo1NSAxOTk5DQorKysgbGludXgvRG9j
dW1lbnRhdGlvbi9pZGUudHh0CVRodSBEZWMgMzAgMDQ6Mjk6MTcgMTk5OQ0K
QEAgLTEsNCArMSw0IEBADQotaWRlLnR4dCAtLSBJbmZvcm1hdGlvbiByZWdh
cmRpbmcgdGhlIEVuaGFuY2VkIElERSBkcml2ZSBpbiBMaW51eCAyLjEvMi4y
DQoraWRlLnR4dCAtLSBJbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlIEVuaGFu
Y2VkIElERSBkcml2ZSBpbiBMaW51eCAyLjIvMi4zLzIuNA0KID09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiANCiAgICArLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rDQpkaWZmIC11ck4gbGludXgtMi4zLjM0LXByaXN0aW5l
L2FyY2gvaTM4Ni9rZXJuZWwvaW9fYXBpYy5jIGxpbnV4L2FyY2gvaTM4Ni9r
ZXJuZWwvaW9fYXBpYy5jDQotLS0gbGludXgtMi4zLjM0LXByaXN0aW5lL2Fy
Y2gvaTM4Ni9rZXJuZWwvaW9fYXBpYy5jCVNhdCBOb3YgMjcgMTU6Mjc6NDgg
MTk5OQ0KKysrIGxpbnV4L2FyY2gvaTM4Ni9rZXJuZWwvaW9fYXBpYy5jCVRo
dSBEZWMgMzAgMTg6MTM6MzUgMTk5OQ0KQEAgLTEzMjAsNiArMTMyMCw4IEBA
DQogCXBpbjEgPSBmaW5kX3RpbWVyX3BpbihtcF9JTlQpOw0KIAlwaW4yID0g
ZmluZF90aW1lcl9waW4obXBfRXh0SU5UKTsNCiANCisJcHJpbnRrKCIuLlRJ
TUVSOiB2ZWN0b3I9JWQgcGluMT0lZCBwaW4yPSVkXG4iLCB2ZWN0b3IsIHBp
bjEsIHBpbjIpOw0KKw0KIAkvKg0KIAkgKiBPaywgZG9lcyBJUlEwIHRocm91
Z2ggdGhlIElPQVBJQyB3b3JrPw0KIAkgKi8NCmRpZmYgLXVyTiBsaW51eC0y
LjMuMzQtcHJpc3RpbmUvZHJpdmVycy9ibG9jay9Db25maWcuaW4gbGludXgv
ZHJpdmVycy9ibG9jay9Db25maWcuaW4NCi0tLSBsaW51eC0yLjMuMzQtcHJp
c3RpbmUvZHJpdmVycy9ibG9jay9Db25maWcuaW4JTW9uIERlYyAyMCAxNToz
Mzo0NiAxOTk5DQorKysgbGludXgvZHJpdmVycy9ibG9jay9Db25maWcuaW4J
VGh1IERlYyAzMCAwNDoyODo0MyAxOTk5DQpAQCAtNTgsNyArNTgsMTAgQEAN
CiAJICAgICAgIGZpDQogCSAgICBpZiBbICIkQ09ORklHX0lERURNQV9QQ0lf
RVhQRVJJTUVOVEFMIiA9ICJ5IiBdOyB0aGVuDQogCSAgICAgICBib29sICcg
ICAgQUxJIE0xNXgzIGNoaXBzZXQgc3VwcG9ydCAoRVhQRVJJTUVOVEFMKScg
Q09ORklHX0JMS19ERVZfQUxJMTVYMw0KLQkgICAgICAgYm9vbCAnICAgIENN
RDY0NiBjaGlwc2V0IHN1cHBvcnQgKEVYUEVSSU1FTlRBTCknIENPTkZJR19C
TEtfREVWX0NNRDY0Ng0KKwkgICAgICAgYm9vbCAnICAgIENNRDY0WCBjaGlw
c2V0IHN1cHBvcnQgKEVYUEVSSU1FTlRBTCknIENPTkZJR19CTEtfREVWX0NN
RDY0WA0KKwkgICAgICAgaWYgWyAiJENPTkZJR19CTEtfREVWX0NNRDY0WCIg
PSAieSIgXTsgdGhlbg0KKwkJICBib29sICcgICAgICAgQ01ENjRYIGNoaXBz
ZXQgUkFJRCBzdXBwb3J0IChFWFBFUklNRU5UQUwpIChXSVApJyBDT05GSUdf
QkxLX0RFVl9DTUQ2NFhfUkFJRA0KKwkgICAgICAgZmkNCiAJICAgICAgIGJv
b2wgJyAgICBDWTgyQzY5MyBjaGlwc2V0IHN1cHBvcnQgKEVYUEVSSU1FTlRB
TCknIENPTkZJR19CTEtfREVWX0NZODJDNjkzDQogCSAgICBmaQ0KIAkgICAg
aWYgWyAiJENPTkZJR19CTEtfREVWX0lERURNQV9QQ0kiID0gInkiIF07IHRo
ZW4NCkBAIC02OCw3ICs3MSw4IEBADQogCSAgICAgICBmaQ0KIAkgICAgICAg
Ym9vbCAnICAgIEhQVDM2NiBjaGlwc2V0IHN1cHBvcnQnIENPTkZJR19CTEtf
REVWX0hQVDM2Ng0KIAkgICAgICAgaWYgWyAiJENPTkZJR19JREVETUFfUENJ
X0VYUEVSSU1FTlRBTCIgPSAieSIgLWEgIiRDT05GSUdfQkxLX0RFVl9IUFQz
NjYiID0gInkiIF07IHRoZW4NCi0JCSAgYm9vbCAnICAgICAgSFBUMzY2IEZh
c3QgSW50ZXJydXB0IHN1cHBvcnQgKEVYUEVSSU1FTlRBTCknIEhQVDM2Nl9G
QVNUX0lSUV9QUkVESUNUSU9ODQorCQkgIGJvb2wgJyAgICAgIEhQVDM2NiBG
YXN0IEludGVycnVwdCBzdXBwb3J0IChFWFBFUklNRU5UQUwpIChXSVApJyBI
UFQzNjZfRkFTVF9JUlFfUFJFRElDVElPTg0KKwkJICBib29sICcgICAgICBI
UFQzNjYgbW9kZSB0aHJlZSB1bnN1cHBvcnRlZCAoRVhQRVJJTUVOVEFMKSAo
V0lQKScgSFBUMzY2X01PREUzDQogCSAgICAgICBmaQ0KIAkgICAgICAgaWYg
WyAiJENPTkZJR19YODYiID0gInkiIF07IHRoZW4NCiAJCSAgYm9vbCAnICAg
IEludGVsIFBJSVhuIGNoaXBzZXRzIHN1cHBvcnQnIENPTkZJR19CTEtfREVW
X1BJSVgNCkBAIC0yMjYsNiArMjMwLDcgQEANCiAgICAgICIkQ09ORklHX0JM
S19ERVZfQUVDNjIxMCIgPSAieSIgLW8gXA0KICAgICAgIiRDT05GSUdfQkxL
X0RFVl9BTEkxNVgzIiA9ICJ5IiAtbyBcDQogICAgICAiJENPTkZJR19CTEtf
REVWX0NNRDY0MCIgPSAieSIgLW8gXA0KKyAgICAgIiRDT05GSUdfQkxLX0RF
Vl9DTUQ2NFgiID0gInkiIC1vIFwNCiAgICAgICIkQ09ORklHX0JMS19ERVZf
Q1k4MkM2OTMiID0gInkiIC1vIFwNCiAgICAgICIkQ09ORklHX0JMS19ERVZf
SFBUMzRYIiA9ICJ5IiAtbyBcDQogICAgICAiJENPTkZJR19CTEtfREVWX0hQ
VDM2NiIgPSAieSIgLW8gXA0KZGlmZiAtdXJOIGxpbnV4LTIuMy4zNC1wcmlz
dGluZS9kcml2ZXJzL2Jsb2NrL01ha2VmaWxlIGxpbnV4L2RyaXZlcnMvYmxv
Y2svTWFrZWZpbGUNCi0tLSBsaW51eC0yLjMuMzQtcHJpc3RpbmUvZHJpdmVy
cy9ibG9jay9NYWtlZmlsZQlGcmkgTm92IDEyIDEwOjEyOjExIDE5OTkNCisr
KyBsaW51eC9kcml2ZXJzL2Jsb2NrL01ha2VmaWxlCVRodSBEZWMgMzAgMDQ6
Mjg6NDMgMTk5OQ0KQEAgLTEyMiw4ICsxMjIsOCBAQA0KIElERV9PQkpTICs9
IGNtZDY0MC5vDQogZW5kaWYNCiANCi1pZmVxICgkKENPTkZJR19CTEtfREVW
X0NNRDY0NikseSkNCi1JREVfT0JKUyArPSBjbWQ2NDYubw0KK2lmZXEgKCQo
Q09ORklHX0JMS19ERVZfQ01ENjRYKSx5KQ0KK0lERV9PQkpTICs9IGNtZDY0
eC5vDQogZW5kaWYNCiANCiBpZmVxICgkKENPTkZJR19CTEtfREVWX0NZODJD
NjkzKSx5KQ0KZGlmZiAtdXJOIGxpbnV4LTIuMy4zNC1wcmlzdGluZS9kcml2
ZXJzL2Jsb2NrL2FlYzYyMTAuYyBsaW51eC9kcml2ZXJzL2Jsb2NrL2FlYzYy
MTAuYw0KLS0tIGxpbnV4LTIuMy4zNC1wcmlzdGluZS9kcml2ZXJzL2Jsb2Nr
L2FlYzYyMTAuYwlUdWUgRGVjIDE0IDIzOjAzOjQ5IDE5OTkNCisrKyBsaW51
eC9kcml2ZXJzL2Jsb2NrL2FlYzYyMTAuYwlUaHUgRGVjIDMwIDA0OjI4OjQz
IDE5OTkNCkBAIC0yODcsOCArMjg3LDYgQEANCiANCiAJaWYgKGh3aWYtPmRt
YV9iYXNlKSB7DQogCQlod2lmLT5kbWFwcm9jID0gJmFlYzYyMTBfZG1hcHJv
YzsNCi0JCWh3aWYtPmRyaXZlc1swXS5hdXRvdHVuZSA9IDA7DQotCQlod2lm
LT5kcml2ZXNbMV0uYXV0b3R1bmUgPSAwOw0KIAl9IGVsc2Ugew0KIAkJaHdp
Zi0+ZHJpdmVzWzBdLmF1dG90dW5lID0gMTsNCiAJCWh3aWYtPmRyaXZlc1sx
XS5hdXRvdHVuZSA9IDE7DQpkaWZmIC11ck4gbGludXgtMi4zLjM0LXByaXN0
aW5lL2RyaXZlcnMvYmxvY2svYWxpbTE1eDMuYyBsaW51eC9kcml2ZXJzL2Js
b2NrL2FsaW0xNXgzLmMNCi0tLSBsaW51eC0yLjMuMzQtcHJpc3RpbmUvZHJp
dmVycy9ibG9jay9hbGltMTV4My5jCVR1ZSBEZWMgMTQgMjM6MDM6NDkgMTk5
OQ0KKysrIGxpbnV4L2RyaXZlcnMvYmxvY2svYWxpbTE1eDMuYwlUaHUgRGVj
IDMwIDEzOjM4OjE3IDE5OTkNCkBAIC0yNzQsOCArMjc0LDggQEANCiAJCWlm
IChyX2NsYyA+PSAxNikNCiAJCQlyX2NsYyA9IDA7DQogCX0NCi0Jc2F2ZV9m
bGFncyhmbGFncyk7DQotCWNsaSgpOw0KKwlfX3NhdmVfZmxhZ3MoZmxhZ3Mp
Ow0KKwlfX2NsaSgpOw0KIAkNCiAJLyogDQogCSAqIFBJTyBtb2RlID0+IEFU
QSBGSUZPIG9uLCBBVEFQSSBGSUZPIG9mZg0KQEAgLTI5Nyw3ICsyOTcsNyBA
QA0KIAkNCiAJcGNpX3dyaXRlX2NvbmZpZ19ieXRlKGRldiwgcG9ydCwgc19j
bGMpOw0KIAlwY2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2LCBwb3J0K2RyaXZl
LT5zZWxlY3QuYi51bml0KzIsIChhX2NsYyA8PCA0KSB8IHJfY2xjKTsNCi0J
cmVzdG9yZV9mbGFncyhmbGFncyk7DQorCV9fcmVzdG9yZV9mbGFncyhmbGFn
cyk7DQogDQogCS8qDQogCSAqIHNldHVwICAgYWN0aXZlICByZWMNCkBAIC0z
NjMsOCArMzYzLDggQEANCiAJdW5zaWduZWQgbG9uZyBmbGFnczsNCiAJYnl0
ZSBvbGRfc2VsZWN0Ow0KIA0KLQlzYXZlX2ZsYWdzKGZsYWdzKTsNCi0JY2xp
KCk7DQorCV9fc2F2ZV9mbGFncyhmbGFncyk7DQorCV9fY2xpKCk7DQogCQkN
CiAJLyogc2F2ZSBvbGQgc2VsZWN0ZWQgZGV2aWNlICovDQogCW9sZF9zZWxl
Y3QgPSBJTl9CWVRFKElERV9TRUxFQ1RfUkVHKTsNCkBAIC0zODgsNyArMzg4
LDcgQEANCiAJICogcmVzdG9yZSB0byBvbGQgInNlbGVjdGVkIGRldmljZSIN
CiAJICovDQogCU9VVF9CWVRFKG9sZF9zZWxlY3QsIElERV9TRUxFQ1RfUkVH
KTsNCi0JcmVzdG9yZV9mbGFncyhmbGFncyk7DQorCV9fcmVzdG9yZV9mbGFn
cyhmbGFncyk7DQogfQ0KIA0KIHN0YXRpYyB2b2lkIGFsaTE1eDNfZG1hMl9l
bmFibGUoaWRlX2RyaXZlX3QgKmRyaXZlLCB1bnNpZ25lZCBsb25nIGRtYV9i
YXNlKQ0KQEAgLTQxNiwxMCArNDE2LDEwIEBADQogI2Vsc2UNCiAJdG1wYnl0
ZSAmPSB1bHRyYTsNCiAjZW5kaWYNCi0Jc2F2ZV9mbGFncyhmbGFncyk7DQot
CWNsaSgpOw0KKwlfX3NhdmVfZmxhZ3MoZmxhZ3MpOw0KKwlfX2NsaSgpOw0K
IAlwY2lfd3JpdGVfY29uZmlnX2J5dGUoaHdpZi0+cGNpX2RldiwgbTUyMjlf
dWRtYV9zZXR0aW5nX2luZGV4LCB0bXBieXRlKTsNCi0JcmVzdG9yZV9mbGFn
cyhmbGFncyk7DQorCV9fcmVzdG9yZV9mbGFncyhmbGFncyk7DQogCWRyaXZl
LT5pZC0+ZG1hX3VsdHJhID0gMHgwMDsNCiANCiAJLyoNCkBAIC00OTcsMTAg
KzQ5NywxMCBAQA0KIAkvKg0KIAkgKiBzZXQgdG8gbTUyMjkNCiAJICovDQot
CXNhdmVfZmxhZ3MoZmxhZ3MpOw0KLQljbGkoKTsJCQ0KKwlfX3NhdmVfZmxh
Z3MoZmxhZ3MpOw0KKwlfX2NsaSgpOwkJDQogCXBjaV93cml0ZV9jb25maWdf
Ynl0ZShod2lmLT5wY2lfZGV2LCBtNTIyOV91ZG1hX3NldHRpbmdfaW5kZXgs
IHRtcGJ5dGUpOw0KLQlyZXN0b3JlX2ZsYWdzKGZsYWdzKTsNCisJX19yZXN0
b3JlX2ZsYWdzKGZsYWdzKTsNCiANCiAJaWYgKHVkbWFfbW9kZSA+PSAzKSB7
DQogCQkvKg0KQEAgLTUwOCwxMCArNTA4LDEwIEBADQogCQkgKi8NCiAJCXBj
aV9yZWFkX2NvbmZpZ19ieXRlKGh3aWYtPnBjaV9kZXYsIDB4NGIsICZ0bXBi
eXRlKTsNCiAJCXRtcGJ5dGUgfD0gMTsJCQkNCi0JCXNhdmVfZmxhZ3MoZmxh
Z3MpOw0KLQkJY2xpKCk7DQorCQlfX3NhdmVfZmxhZ3MoZmxhZ3MpOw0KKwkJ
X19jbGkoKTsNCiAJCXBjaV93cml0ZV9jb25maWdfYnl0ZShod2lmLT5wY2lf
ZGV2LCAweDRiLCB0bXBieXRlKTsJCQ0KLQkJcmVzdG9yZV9mbGFncyhmbGFn
cyk7DQorCQlfX3Jlc3RvcmVfZmxhZ3MoZmxhZ3MpOw0KIAl9DQogDQogCXBy
aW50aygiQUxJMTVYMzogVWx0cmEgRE1BIGVuYWJsZWRcbiIpOw0KQEAgLTY1
NSw4ICs2NTUsOCBAQA0KIAkJICogICAgICAgICBidXQgaW4gdGhpcyBjYXNl
LCB3ZSB3aWxsIG5vdCBzZXQgdGhlIGRldmljZSB0bw0KIAkJICogICAgICAg
ICB1bHRyYSA2NiwgdGhlIGRldGVjdGlvbiByZXN1bHQgaXMgbm90IGltcG9y
dGFudA0KIAkJICovDQotCQlzYXZlX2ZsYWdzKGZsYWdzKTsNCi0JCWNsaSgp
Ow0KKwkJX19zYXZlX2ZsYWdzKGZsYWdzKTsNCisJCV9fY2xpKCk7DQogDQog
CQkvKg0KIAkJICogZW5hYmxlICJDYWJsZSBEZXRlY3Rpb24iLCBtNTIyOSwg
MHg0YiwgYml0Mw0KQEAgLTY3OSw3ICs2NzksNyBAQA0KIAkJCSAqLw0KIAkJ
CXBjaV93cml0ZV9jb25maWdfYnl0ZShpc2FfZGV2LCAweDc5LCB0bXBieXRl
IHwgMHgwMik7DQogCQl9DQotCQlyZXN0b3JlX2ZsYWdzKGZsYWdzKTsNCisJ
CV9fcmVzdG9yZV9mbGFncyhmbGFncyk7DQogCQkvKg0KIAkJICogVWx0cmE2
NiBjYWJsZSBkZXRlY3Rpb24gKGZyb20gSG9zdCBWaWV3KQ0KIAkJICogbTUy
MjksIDB4NGEsIGJpdDA6IHByaW1hcnksIGJpdDE6IHNlY29uZGFyeSA4MCBw
aW4NCkBAIC03MDUsMTMgKzcwNSwxMyBAQA0KIAkJICogY2xlYXIgQ0QtUk9N
IERNQSB3cml0ZSBiaXQsIG01MjI5LCAweDRiLCBiaXQgNw0KIAkJICovDQog
CQlwY2lfcmVhZF9jb25maWdfYnl0ZShkZXYsIDB4NGIsICZ0bXBieXRlKTsN
Ci0JCXNhdmVfZmxhZ3MoZmxhZ3MpOw0KLQkJY2xpKCk7DQorCQlfX3NhdmVf
ZmxhZ3MoZmxhZ3MpOw0KKwkJX19jbGkoKTsNCiAJCS8qDQogCQkgKiBjbGVh
ciBiaXQgNw0KIAkJICovDQogCQlwY2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2
LCAweDRiLCB0bXBieXRlICYgMHg3Rik7DQotCQlyZXN0b3JlX2ZsYWdzKGZs
YWdzKTsNCisJCV9fcmVzdG9yZV9mbGFncyhmbGFncyk7DQogDQogCQkvKg0K
IAkJICogY2hlY2sgbTE1MzMsIDB4NWUsIGJpdCAxfjQgPT0gMTAwMSA9PiAm
IDAwMDExMTEwID0gMDAwMTAwMTANCkBAIC03MjgsMTMgKzcyOCwxMyBAQA0K
IAkJaWYgKHRtcGJ5dGUgPT0gMHgwQSkgew0KIAkJCXVuc2lnbmVkIGxvbmcg
ZmxhZ3M7DQogCQkJcGNpX3JlYWRfY29uZmlnX2J5dGUoZGV2LCAweDRlLCAm
dG1wYnl0ZSk7DQotCQkJc2F2ZV9mbGFncyhmbGFncyk7DQotCQkJY2xpKCk7
DQorCQkJX19zYXZlX2ZsYWdzKGZsYWdzKTsNCisJCQlfX2NsaSgpOw0KIAkJ
CS8qDQogCQkJICogc2V0IGJpdCA2DQogCQkJICovDQogCQkJcGNpX3dyaXRl
X2NvbmZpZ19ieXRlKGRldiwgMHg0ZSwgdG1wYnl0ZSB8IDB4NDApOw0KLQkJ
CXJlc3RvcmVfZmxhZ3MoZmxhZ3MpOw0KKwkJCV9fcmVzdG9yZV9mbGFncyhm
bGFncyk7DQogDQogCQkJLyoNCiAJCQkgKiB0aGlzIHNwZWNpYWwgdmVyc2lv
biBpcyBzaW1pbGFyIHRvIHJldmlzaW9uIDB4QzINCkBAIC03NTMsMTAgKzc1
MywxMCBAQA0KIAkgKi8NCiAJcGNpX3JlYWRfY29uZmlnX2J5dGUoZGV2LCAw
eDUzLCAmdG1wYnl0ZSk7DQogCXRtcGJ5dGUgPSAodG1wYnl0ZSAmICh+MHgw
MikpIHwgMHgwMTsNCi0Jc2F2ZV9mbGFncyhmbGFncyk7DQotCWNsaSgpOw0K
KwlfX3NhdmVfZmxhZ3MoZmxhZ3MpOw0KKwlfX2NsaSgpOw0KIAlwY2lfd3Jp
dGVfY29uZmlnX2J5dGUoZGV2LCAweDUzLCB0bXBieXRlKTsNCi0JcmVzdG9y
ZV9mbGFncyhmbGFncyk7CSANCisJX19yZXN0b3JlX2ZsYWdzKGZsYWdzKTsJ
IA0KIA0KIAlyZXR1cm4gMDsNCiB9DQpAQCAtNzc4LDggKzc3OCw4IEBADQog
CQkgKiAgICAgICAgIGJ1dCBpbiB0aGlzIGNhc2UsIHdlIHdpbGwgbm90IHNl
dCB0aGUgZGV2aWNlIHRvDQogCQkgKiAgICAgICAgIHVsdHJhIDY2LCB0aGUg
ZGV0ZWN0aW9uIHJlc3VsdCBpcyBub3QgaW1wb3J0YW50DQogCQkgKi8NCi0J
CXNhdmVfZmxhZ3MoZmxhZ3MpOw0KLQkJY2xpKCk7DQorCQlfX3NhdmVfZmxh
Z3MoZmxhZ3MpOw0KKwkJX19jbGkoKTsNCiANCiAJCS8qDQogCQkgKiBlbmFi
bGUgIkNhYmxlIERldGVjdGlvbiIsIG01MjI5LCAweDRiLCBiaXQzDQpAQCAt
ODAyLDcgKzgwMiw3IEBADQogCQkJICovDQogCQkJcGNpX3dyaXRlX2NvbmZp
Z19ieXRlKGlzYV9kZXYsIDB4NzksIHRtcGJ5dGUgfCAweDAyKTsNCiAJCX0N
Ci0JCXJlc3RvcmVfZmxhZ3MoZmxhZ3MpOw0KKwkJX19yZXN0b3JlX2ZsYWdz
KGZsYWdzKTsNCiAJCS8qDQogCQkgKiBVbHRyYTY2IGNhYmxlIGRldGVjdGlv
biAoZnJvbSBIb3N0IFZpZXcpDQogCQkgKiBtNTIyOSwgMHg0YSwgYml0MDog
cHJpbWFyeSwgYml0MTogc2Vjb25kYXJ5IDgwIHBpbg0KQEAgLTgyOCwxMyAr
ODI4LDEzIEBADQogCQkgKiBjbGVhciBDRC1ST00gRE1BIHdyaXRlIGJpdCwg
bTUyMjksIDB4NGIsIGJpdCA3DQogCQkgKi8NCiAJCXBjaV9yZWFkX2NvbmZp
Z19ieXRlKGRldiwgMHg0YiwgJnRtcGJ5dGUpOw0KLQkJc2F2ZV9mbGFncyhm
bGFncyk7DQotCQljbGkoKTsNCisJCV9fc2F2ZV9mbGFncyhmbGFncyk7DQor
CQlfX2NsaSgpOw0KIAkJLyoNCiAJCSAqIGNsZWFyIGJpdCA3DQogCQkgKi8N
CiAJCXBjaV93cml0ZV9jb25maWdfYnl0ZShkZXYsIDB4NGIsIHRtcGJ5dGUg
JiAweDdGKTsNCi0JCXJlc3RvcmVfZmxhZ3MoZmxhZ3MpOw0KKwkJX19yZXN0
b3JlX2ZsYWdzKGZsYWdzKTsNCiANCiAJCS8qDQogCQkgKiBjaGVjayBtMTUz
MywgMHg1ZSwgYml0IDF+NCA9PSAxMDAxID0+ICYgMDAwMTExMTAgPSAwMDAx
MDAxMA0KZGlmZiAtdXJOIGxpbnV4LTIuMy4zNC1wcmlzdGluZS9kcml2ZXJz
L2Jsb2NrL2NtZDY0Ni5jIGxpbnV4L2RyaXZlcnMvYmxvY2svY21kNjQ2LmMN
Ci0tLSBsaW51eC0yLjMuMzQtcHJpc3RpbmUvZHJpdmVycy9ibG9jay9jbWQ2
NDYuYwlNb24gQXVnICAyIDIyOjA3OjE2IDE5OTkNCisrKyBsaW51eC9kcml2
ZXJzL2Jsb2NrL2NtZDY0Ni5jCVdlZCBEZWMgMzEgMTY6MDA6MDAgMTk2OQ0K
QEAgLTEsMjg5ICswLDAgQEANCi0vKiAkSWQ6IGNtZDY0Ni5jLHYgMS4xNSAx
OTk5LzA3LzIzIDAxOjQ4OjM3IGRhdmVtIEV4cCAkDQotICogY21kNjQ2LmM6
IEVuYWJsZSBpbnRlcnJ1cHRzIGF0IGluaXRpYWxpemF0aW9uIHRpbWUgb24g
VWx0cmEvUENJIG1hY2hpbmVzLg0KLSAqICAgICAgICAgICBOb3RlLCB0aGlz
IGRyaXZlciBpcyBub3QgdXNlZCBhdCBhbGwgb24gb3RoZXIgc3lzdGVtcyBi
ZWNhdXNlDQotICogICAgICAgICAgIHRoZXJlIHRoZSAiQklPUyIgaGFzIGRv
bmUgYWxsIG9mIHRoZSBmb2xsb3dpbmcgYWxyZWFkeS4NCi0gKiAgICAgICAg
ICAgRHVlIHRvIG1hc3NpdmUgaGFyZHdhcmUgYnVncywgVWx0cmFETUEgaXMg
b25seSBzdXBwb3J0ZWQNCi0gKiAgICAgICAgICAgb24gdGhlIDY0NlUyIGFu
ZCBub3Qgb24gdGhlIDY0NlUuDQotICoNCi0gKiBDb3B5cmlnaHQgKEMpIDE5
OTggICAgICAgRWRkaWUgQy4gRG9zdCAgKGVjZEBza3luZXQuYmUpDQotICog
Q29weXJpZ2h0IChDKSAxOTk4ICAgICAgIERhdmlkIFMuIE1pbGxlciAoZGF2
ZW1AZG0uY29iYWx0bWljcm8uY29tKQ0KLSAqLw0KLQ0KLSNpbmNsdWRlIDxs
aW51eC90eXBlcy5oPg0KLSNpbmNsdWRlIDxsaW51eC9wY2kuaD4NCi0jaW5j
bHVkZSA8bGludXgvZGVsYXkuaD4NCi0jaW5jbHVkZSA8bGludXgvaGRyZWcu
aD4NCi0jaW5jbHVkZSA8bGludXgvaWRlLmg+DQotDQotI2luY2x1ZGUgPGFz
bS9pby5oPg0KLQ0KLXN0YXRpYyBpbnQgY21kNjQ2X2NvbmZpZ19kcml2ZV9m
b3JfZG1hKGlkZV9kcml2ZV90ICpkcml2ZSkNCi17DQotCXN0cnVjdCBoZF9k
cml2ZWlkICppZCA9IGRyaXZlLT5pZDsNCi0JaWRlX2h3aWZfdCAqaHdpZiA9
IEhXSUYoZHJpdmUpOw0KLQ0KLQkvKiBFdmVuIGlmIHRoZSBkcml2ZSBpcyBu
b3QgX2N1cnJlbnRseV8gaW4gYSBETUENCi0JICogbW9kZSwgd2Ugc3VjY2Vl
ZCwgYW5kIHdlJ2xsIGVuYWJsZSBpdCBtYW51YWxseQ0KLQkgKiBiZWxvdyBp
biBjbWQ2NDZfZG1hX29ub2ZmLg0KLQkgKg0KLQkgKiBUaGlzIGlzIGRvbmUg
Zm9yIGRpc2tzIG9ubHksIENEUk9NcyBhbmQgb3RoZXINCi0JICogSURFIGRl
dmljZXMgYXJlIGp1c3QgdG9vIHF1aXJreS4NCi0JICovDQotCWlmKChpZCAh
PSBOVUxMKSAmJg0KLQkgICAoKGlkLT5jYXBhYmlsaXR5ICYgMSkgIT0gMCkg
JiYNCi0JICAgaHdpZi0+YXV0b2RtYSAmJg0KLQkgICAoZHJpdmUtPm1lZGlh
ID09IGlkZV9kaXNrKSkgew0KLQkJaWYoaWQtPmZpZWxkX3ZhbGlkICYgMHgw
MDA0KSB7DQotCQkJaWYoaWQtPmRtYV91bHRyYSAmIDB4MDAwNykNCi0JCQkJ
cmV0dXJuIGh3aWYtPmRtYXByb2MoaWRlX2RtYV9vbiwgZHJpdmUpOw0KLQkJ
fQ0KLQkJaWYoaWQtPmZpZWxkX3ZhbGlkICYgMHgwMDAyKQ0KLQkJCWlmKChp
ZC0+ZG1hX213b3JkICYgMHgwMDA0KSB8fCAoaWQtPmRtYV8xd29yZCAmIDB4
MDAwNCkpDQotCQkJCXJldHVybiBod2lmLT5kbWFwcm9jKGlkZV9kbWFfb24s
IGRyaXZlKTsNCi0JfQ0KLQlyZXR1cm4gaHdpZi0+ZG1hcHJvYyhpZGVfZG1h
X29mZl9xdWlldGx5LCBkcml2ZSk7DQotfQ0KLQ0KLS8qIFRoaXMgaXMgZnVu
LiAgLURhdmVNICovDQotI2RlZmluZSBJREVfU0VUWEZFUgkJU0VURkVBVFVS
RVNfWEZFUg0KLSNkZWZpbmUgSURFX1NFVEZFQVRVUkUJCVdJTl9TRVRGRUFU
VVJFUw0KLSNkZWZpbmUgSURFX0RNQTJfRU5BQkxFCQlYRkVSX01XX0RNQV8y
DQotI2RlZmluZSBJREVfRE1BMV9FTkFCTEUJCVhGRVJfTVdfRE1BXzENCi0j
ZGVmaW5lIElERV9ETUEwX0VOQUJMRQkJWEZFUl9NV19ETUFfMA0KLSNkZWZp
bmUgSURFX1VETUEyX0VOQUJMRQlYRkVSX1VETUFfMg0KLSNkZWZpbmUgSURF
X1VETUExX0VOQUJMRQlYRkVSX1VETUFfMQ0KLSNkZWZpbmUgSURFX1VETUEw
X0VOQUJMRQlYRkVSX1VETUFfMA0KLQ0KLXN0YXRpYyBfX2lubGluZV9fIHVu
c2lnbmVkIGNoYXIgZG1hMl9iaXRzX3RvX2NvbW1hbmQodW5zaWduZWQgY2hh
ciBiaXRzKQ0KLXsNCi0JaWYoYml0cyAmIDB4MDQpDQotCQlyZXR1cm4gSURF
X0RNQTJfRU5BQkxFOw0KLQlpZihiaXRzICYgMHgwMikNCi0JCXJldHVybiBJ
REVfRE1BMV9FTkFCTEU7DQotCXJldHVybiBJREVfRE1BMF9FTkFCTEU7DQot
fQ0KLQ0KLXN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGNoYXIgdWRtYTJf
Yml0c190b19jb21tYW5kKHVuc2lnbmVkIGNoYXIgYml0cykNCi17DQotCWlm
KGJpdHMgJiAweDA0KQ0KLQkJcmV0dXJuIElERV9VRE1BMl9FTkFCTEU7DQot
CWlmKGJpdHMgJiAweDAyKQ0KLQkJcmV0dXJuIElERV9VRE1BMV9FTkFCTEU7
DQotCXJldHVybiBJREVfVURNQTBfRU5BQkxFOw0KLX0NCi0NCi1zdGF0aWMg
X19pbmxpbmVfXyBpbnQgd2FpdF9mb3JfcmVhZHkoaWRlX2RyaXZlX3QgKmRy
aXZlKQ0KLXsNCi0JaW50IHRpbWVvdXQgPSAxMDA7DQotCWJ5dGUgc3RhdDsN
Ci0NCi0Jd2hpbGUoLS10aW1lb3V0KSB7DQotCQlzdGF0ID0gR0VUX1NUQVQo
KTsNCi0NCi0JCXByaW50aygiU1RBVCglMngpICIsIHN0YXQpOw0KLQkJaWYo
IShzdGF0ICYgQlVTWV9TVEFUKSkgew0KLQkJCWlmKChzdGF0ICYgUkVBRFlf
U1RBVCkgfHwgKHN0YXQgJiBFUlJfU1RBVCkpDQotCQkJCWJyZWFrOw0KLQkJ
fQ0KLQkJdWRlbGF5KDEwMCk7DQotCX0NCi0JaWYoKHN0YXQgJiBFUlJfU1RB
VCkgfHwgdGltZW91dCA8PSAwKQ0KLQkJcmV0dXJuIDE7DQotCXJldHVybiAw
Ow0KLX0NCi0NCi1zdGF0aWMgdm9pZCBjbWQ2NDZfZG9fc2V0ZmVhdHVyZShp
ZGVfZHJpdmVfdCAqZHJpdmUsIGJ5dGUgY29tbWFuZCkNCi17DQotI2lmIDAN
Ci0JKHZvaWQpIGlkZV9jb25maWdfZHJpdmVfc3BlZWQoZHJpdmUsIGNvbW1h
bmQpOw0KLSNlbHNlDQotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQotCWJ5dGUg
b2xkX3NlbGVjdDsNCi0NCi0Jc2F2ZV9mbGFncyhmbGFncyk7DQotCWNsaSgp
Ow0KLQlwcmludGsoIlNFTEVDVCAiKTsNCi0Jb2xkX3NlbGVjdCA9IElOX0JZ
VEUoSURFX1NFTEVDVF9SRUcpOw0KLQlPVVRfQllURShkcml2ZS0+c2VsZWN0
LmFsbCwgSURFX1NFTEVDVF9SRUcpOw0KLQlwcmludGsoIlNFVFhGRVIgIik7
DQotCU9VVF9CWVRFKElERV9TRVRYRkVSLCBJREVfRkVBVFVSRV9SRUcpOw0K
LQlwcmludGsoIkNNTkQgIik7DQotCU9VVF9CWVRFKGNvbW1hbmQsIElERV9O
U0VDVE9SX1JFRyk7DQotCXByaW50aygid2FpdCAiKTsNCi0JaWYod2FpdF9m
b3JfcmVhZHkoZHJpdmUpKQ0KLQkJZ290byBvdXQ7DQotCXByaW50aygiU0VU
RkVBVFVSRSAiKTsNCi0JT1VUX0JZVEUoSURFX1NFVEZFQVRVUkUsIElERV9D
T01NQU5EX1JFRyk7DQotCXByaW50aygid2FpdCAiKTsNCi0JKHZvaWQpIHdh
aXRfZm9yX3JlYWR5KGRyaXZlKTsNCi1vdXQ6DQotCU9VVF9CWVRFKG9sZF9z
ZWxlY3QsIElERV9TRUxFQ1RfUkVHKTsNCi0JcmVzdG9yZV9mbGFncyhmbGFn
cyk7DQotI2VuZGlmDQotfQ0KLQ0KLXN0YXRpYyB2b2lkIGNtZDY0Nl9kbWEy
X2VuYWJsZShpZGVfZHJpdmVfdCAqZHJpdmUsIHVuc2lnbmVkIGxvbmcgZG1h
X2Jhc2UpDQotew0KLQlieXRlIHVuaXQgPSAoZHJpdmUtPnNlbGVjdC5iLnVu
aXQgJiAweDAxKTsNCi0JYnl0ZSBiaXRzID0gKGRyaXZlLT5pZC0+ZG1hX213
b3JkIHwgZHJpdmUtPmlkLT5kbWFfMXdvcmQpICYgMHgwNzsNCi0NCi0JcHJp
bnRrKCJDTUQ2NDY6IE1ETUEgZW5hYmxlIFsiKTsNCi0JaWYoKCgoZHJpdmUt
PmlkLT5kbWFfbXdvcmQgJiAweDAwMDcpIDw8IDgpICE9DQotCSAgICAoZHJp
dmUtPmlkLT5kbWFfbXdvcmQgJiAweDA3MDApKSkNCi0JCWNtZDY0Nl9kb19z
ZXRmZWF0dXJlKGRyaXZlLCBkbWEyX2JpdHNfdG9fY29tbWFuZChiaXRzKSk7
DQotCXByaW50aygiRE1BX0NBUCAiKTsNCi0Jb3V0YihpbmIoZG1hX2Jhc2Ur
Mil8KDE8PCg1K3VuaXQpKSwgZG1hX2Jhc2UrMik7DQotCXByaW50aygiRE9O
RV1cbiIpOw0KLX0NCi0NCi1zdGF0aWMgdm9pZCBjbWQ2NDZfdWRtYV9lbmFi
bGUoaWRlX2RyaXZlX3QgKmRyaXZlLCB1bnNpZ25lZCBsb25nIGRtYV9iYXNl
KQ0KLXsNCi0JYnl0ZSB1bml0ID0gKGRyaXZlLT5zZWxlY3QuYi51bml0ICYg
MHgwMSk7DQotCWJ5dGUgdWRtYV9jdHJsLCBiaXRzID0gZHJpdmUtPmlkLT5k
bWFfdWx0cmEgJiAweDA3Ow0KLQlieXRlIHVkbWFfdGltaW5nX2JpdHM7DQot
DQotCXByaW50aygiQ01ENjQ2OiBVRE1BIGVuYWJsZSBbIik7DQotCWlmKCgo
ZHJpdmUtPmlkLT5kbWFfdWx0cmEgJiAweDAwMDcpIDw8IDgpICE9DQotCSAg
IChkcml2ZS0+aWQtPmRtYV91bHRyYSAmIDB4MDcwMCkpDQotCQljbWQ2NDZf
ZG9fc2V0ZmVhdHVyZShkcml2ZSwgdWRtYTJfYml0c190b19jb21tYW5kKGJp
dHMpKTsNCi0NCi0JLyogRW5hYmxlIERNQSBhbmQgVWx0cmFETUEgKi8NCi0J
cHJpbnRrKCJETUFfQ0FQICIpOw0KLQlvdXRiKGluYihkbWFfYmFzZSsyKXwo
MTw8KDUrdW5pdCkpLCBkbWFfYmFzZSsyKTsNCi0NCi0JdWRtYV9jdHJsID0g
aW5iKGRtYV9iYXNlICsgMyk7DQotDQotCS8qIFB1dCB0aGlzIGNoYW5uZWwg
aW50byBVRE1BIG1vZGUuICovDQotCXByaW50aygiVURNQV9DVFJMICIpOw0K
LQl1ZG1hX2N0cmwgfD0gKDEgPDwgdW5pdCk7DQotDQotCS8qIFNldCBVRE1B
MiB1c2FibGUgdGltaW5ncy4gKi8NCi0JaWYoYml0cyAmIDB4MDQpDQotCQl1
ZG1hX3RpbWluZ19iaXRzID0gMHgxMDsNCi0JZWxzZSBpZihiaXRzICYgMHgw
MikNCi0JCXVkbWFfdGltaW5nX2JpdHMgPSAweDIwOw0KLQllbHNlDQotCQl1
ZG1hX3RpbWluZ19iaXRzID0gMHgzMDsNCi0JdWRtYV9jdHJsICY9IH4oMHgz
MCA8PCAodW5pdCAqIDIpKTsNCi0JdWRtYV9jdHJsIHw9ICAodWRtYV90aW1p
bmdfYml0cyA8PCAodW5pdCAqIDIpKTsNCi0NCi0Jb3V0Yih1ZG1hX2N0cmws
IGRtYV9iYXNlKzMpOw0KLQlwcmludGsoIkRPTkVdXG4iKTsNCi19DQotDQot
c3RhdGljIGludCBjbWQ2NDZfZG1hX29ub2ZmKGlkZV9kcml2ZV90ICpkcml2
ZSwgaW50IGVuYWJsZSkNCi17DQotCWlmKGVuYWJsZSkgew0KLQkJaWRlX2h3
aWZfdCAqaHdpZiA9IEhXSUYoZHJpdmUpOw0KLQkJdW5zaWduZWQgbG9uZyBk
bWFfYmFzZSA9IGh3aWYtPmRtYV9iYXNlOw0KLQkJc3RydWN0IGhkX2RyaXZl
aWQgKmlkID0gZHJpdmUtPmlkOw0KLQkJdW5zaWduZWQgaW50IGNsYXNzX3Jl
djsNCi0NCi0JCS8qIFVsdHJhRE1BIG9ubHkgc3VwcG9ydGVkIG9uIFBDSTY0
NlUgYW5kIFBDSTY0NlUyLA0KLQkJICogd2hpY2ggY29ycmVzcG9uZCB0byBy
ZXZpc2lvbnMgMHgwMyBhbmQgMHgwNSByZXNwZWN0aXZlbHkuDQotCQkgKiBB
Y3R1YWxseSwgYWx0aG91Z2ggdGhlIENNRCB0ZWNoIHN1cHBvcnQgcGVvcGxl
IHdvbid0DQotCQkgKiB0ZWxsIG1lIHRoZSBkZXRhaWxzLCB0aGUgMHgwMyBy
ZXZpc2lvbiBjYW5ub3Qgc3VwcG9ydA0KLQkJICogVURNQSBjb3JyZWN0bHkg
d2l0aG91dCBoYXJkd2FyZSBtb2RpZmljYXRpb25zLCBhbmQgZXZlbg0KLQkJ
ICogdGhlbiBpdCBvbmx5IHdvcmtzIHdpdGggUXVhbnR1bSBkaXNrcyBkdWUg
dG8gc29tZQ0KLQkJICogaG9sZCB0aW1lIGFzc3VtcHRpb25zIGluIHRoZSA2
NDZVIHBhcnQgd2hpY2ggYXJlIGZpeGVkDQotCQkgKiBpbiB0aGUgNjQ2VTIu
DQotCQkgKiBTbyB3ZSBvbmx5IGRvIFVsdHJhRE1BIG9uIHJldmlzaW9uIDB4
MDUgY2hpcHNldHMuDQotCQkgKi8NCi0JCXBjaV9yZWFkX2NvbmZpZ19kd29y
ZChod2lmLT5wY2lfZGV2LA0KLQkJCQkgICAgICBQQ0lfQ0xBU1NfUkVWSVNJ
T04sDQotCQkJCSAgICAgICZjbGFzc19yZXYpOw0KLQkJY2xhc3NfcmV2ICY9
IDB4ZmY7DQotCQlpZigoY2xhc3NfcmV2ID09IDB4MDUpICYmDQotCQkgICAo
aWQtPmZpZWxkX3ZhbGlkICYgMHgwMDA0KSAmJg0KLQkJICAgKGlkLT5kbWFf
dWx0cmEgJiAweDA3KSkgew0KLQkJCS8qIFVsdHJhRE1BIG1vZGVzLiAqLw0K
LQkJCWNtZDY0Nl91ZG1hX2VuYWJsZShkcml2ZSwgZG1hX2Jhc2UpOw0KLQkJ
fSBlbHNlIHsNCi0JCQkvKiBOb3JtYWwgTXVsdGlXb3JkIERNQSBtb2Rlcy4g
Ki8NCi0JCQljbWQ2NDZfZG1hMl9lbmFibGUoZHJpdmUsIGRtYV9iYXNlKTsN
Ci0JCX0NCi0JfQ0KLQlkcml2ZS0+dXNpbmdfZG1hID0gZW5hYmxlOw0KLQly
ZXR1cm4gMDsNCi19DQotDQotc3RhdGljIGludCBjbWQ2NDZfZG1hcHJvYyhp
ZGVfZG1hX2FjdGlvbl90IGZ1bmMsIGlkZV9kcml2ZV90ICpkcml2ZSkNCi17
DQotCWlmKGZ1bmMgPT0gaWRlX2RtYV9jaGVjaykNCi0JCXJldHVybiBjbWQ2
NDZfY29uZmlnX2RyaXZlX2Zvcl9kbWEoZHJpdmUpOw0KLQllbHNlIGlmKGZ1
bmMgPT0gaWRlX2RtYV9vbiB8fCBmdW5jID09IGlkZV9kbWFfb2ZmIHx8IGZ1
bmMgPT0gaWRlX2RtYV9vZmZfcXVpZXRseSkNCi0JCXJldHVybiBjbWQ2NDZf
ZG1hX29ub2ZmKGRyaXZlLCAoZnVuYyA9PSBpZGVfZG1hX29uKSk7DQotDQot
CS8qIE90aGVyIGNhc2VzIGFyZSBkb25lIGJ5IGdlbmVyaWMgSURFLURNQSBj
b2RlLiAqLw0KLQlyZXR1cm4gaWRlX2RtYXByb2MoZnVuYywgZHJpdmUpOw0K
LX0NCi0NCi0vKg0KLSAqIEFTVVMgUDU1VDJQNEQgd2l0aCBDTUQ2NDYgY2hp
cHNldCByZXZpc2lvbiAweDAxIHJlcXVpcmVzIHRoZSBvbGQNCi0gKiBldmVu
dCBvcmRlciBmb3IgRE1BIHRyYW5zZmVycy4NCi0gKi8NCi1zdGF0aWMgaW50
IGNtZDY0Nl8xX2RtYXByb2MoaWRlX2RtYV9hY3Rpb25fdCBmdW5jLCBpZGVf
ZHJpdmVfdCAqZHJpdmUpDQotew0KLQlpZGVfaHdpZl90ICpod2lmID0gSFdJ
Rihkcml2ZSk7DQotCXVuc2lnbmVkIGxvbmcgZG1hX2Jhc2UgPSBod2lmLT5k
bWFfYmFzZTsNCi0JYnl0ZSBkbWFfc3RhdDsNCi0NCi0JaWYgKGZ1bmMgPT0g
aWRlX2RtYV9lbmQpIHsNCi0JCWRyaXZlLT53YWl0aW5nX2Zvcl9kbWEgPSAw
Ow0KLQkJZG1hX3N0YXQgPSBpbmIoZG1hX2Jhc2UrMik7CQkvKiBnZXQgRE1B
IHN0YXR1cyAqLw0KLQkJb3V0YihpbmIoZG1hX2Jhc2UpJn4xLCBkbWFfYmFz
ZSk7CS8qIHN0b3AgRE1BICovDQotCQlvdXRiKGRtYV9zdGF0fDYsIGRtYV9i
YXNlKzIpOwkvKiBjbGVhciB0aGUgSU5UUiAmIEVSUk9SIGJpdHMgKi8NCi0J
CXJldHVybiAoZG1hX3N0YXQgJiA3KSAhPSA0OwkvKiB2ZXJpZnkgZ29vZCBE
TUEgc3RhdHVzICovDQotCX0NCi0NCi0JLyogT3RoZXIgY2FzZXMgYXJlIGRv
bmUgYnkgZ2VuZXJpYyBJREUtRE1BIGNvZGUuICovDQotCXJldHVybiBjbWQ2
NDZfZG1hcHJvYyhmdW5jLCBkcml2ZSk7DQotfQ0KLQ0KLXZvaWQgX19pbml0
IGlkZV9pbml0X2NtZDY0NiAoaWRlX2h3aWZfdCAqaHdpZikNCi17DQotCXN0
cnVjdCBwY2lfZGV2ICpkZXYgPSBod2lmLT5wY2lfZGV2Ow0KLQl1bnNpZ25l
ZCBjaGFyIG1yZG1vZGU7DQotCXVuc2lnbmVkIGludCBjbGFzc19yZXY7DQot
DQotCXBjaV9yZWFkX2NvbmZpZ19kd29yZChod2lmLT5wY2lfZGV2LCBQQ0lf
Q0xBU1NfUkVWSVNJT04sICZjbGFzc19yZXYpOw0KLQljbGFzc19yZXYgJj0g
MHhmZjsNCi0NCi0JaHdpZi0+Y2hpcHNldCA9IGlkZV9jbWQ2NDY7DQotDQot
CS8qIFNldCBhIGdvb2QgbGF0ZW5jeSB0aW1lciBhbmQgY2FjaGUgbGluZSBz
aXplIHZhbHVlLiAqLw0KLQkodm9pZCkgcGNpX3dyaXRlX2NvbmZpZ19ieXRl
KGRldiwgUENJX0xBVEVOQ1lfVElNRVIsIDY0KTsNCi0jaWZkZWYgX19zcGFy
Y192OV9fDQotCSh2b2lkKSBwY2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2LCBQ
Q0lfQ0FDSEVfTElORV9TSVpFLCAweDEwKTsNCi0jZW5kaWYNCi0NCi0JLyog
U2V0dXAgaW50ZXJydXB0cy4gKi8NCi0JKHZvaWQpIHBjaV9yZWFkX2NvbmZp
Z19ieXRlKGRldiwgMHg3MSwgJm1yZG1vZGUpOw0KLQltcmRtb2RlICY9IH4o
MHgzMCk7DQotCSh2b2lkKSBwY2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2LCAw
eDcxLCBtcmRtb2RlKTsNCi0NCi0JLyogVXNlIE1FTU9SWSBSRUFEIExJTkUg
Zm9yIHJlYWRzLg0KLQkgKiBOT1RFOiBBbHRob3VnaCBub3QgbWVudGlvbmVk
IGluIHRoZSBQQ0kwNjQ2VSBzcGVjcywNCi0JICogICAgICAgdGhlc2UgYml0
cyBhcmUgd3JpdGUgb25seSBhbmQgd29uJ3QgYmUgcmVhZA0KLQkgKiAgICAg
ICBiYWNrIGFzIHNldCBvciBub3QuICBUaGUgUENJMDY0NlUyIHNwZWNzIGNs
YXJpZnkNCi0JICogICAgICAgdGhpcyBwb2ludC4NCi0JICovDQotCSh2b2lk
KSBwY2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2LCAweDcxLCBtcmRtb2RlIHwg
MHgwMik7DQotDQotCS8qIFNldCByZWFzb25hYmxlIGFjdGl2ZS9yZWNvdmVy
eS9hZGRyZXNzLXNldHVwIHZhbHVlcy4gKi8NCi0JKHZvaWQpIHBjaV93cml0
ZV9jb25maWdfYnl0ZShkZXYsIDB4NTMsIDB4NDApOw0KLQkodm9pZCkgcGNp
X3dyaXRlX2NvbmZpZ19ieXRlKGRldiwgMHg1NCwgMHgzZik7DQotCSh2b2lk
KSBwY2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2LCAweDU1LCAweDQwKTsNCi0J
KHZvaWQpIHBjaV93cml0ZV9jb25maWdfYnl0ZShkZXYsIDB4NTYsIDB4M2Yp
Ow0KLQkodm9pZCkgcGNpX3dyaXRlX2NvbmZpZ19ieXRlKGRldiwgMHg1Nywg
MHg1Yyk7DQotCSh2b2lkKSBwY2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2LCAw
eDU4LCAweDNmKTsNCi0JKHZvaWQpIHBjaV93cml0ZV9jb25maWdfYnl0ZShk
ZXYsIDB4NWIsIDB4M2YpOw0KLQ0KLQlpZiAoaHdpZi0+ZG1hX2Jhc2UpIHsN
Ci0JCWlmIChjbGFzc19yZXYgPT0gMHgwMSkgew0KLQkJCWh3aWYtPmRtYXBy
b2MgPSAmY21kNjQ2XzFfZG1hcHJvYzsNCi0JCX0gZWxzZSB7DQotCQkJaHdp
Zi0+ZG1hcHJvYyA9ICZjbWQ2NDZfZG1hcHJvYzsNCi0JCX0NCi0JfQ0KLX0N
CmRpZmYgLXVyTiBsaW51eC0yLjMuMzQtcHJpc3RpbmUvZHJpdmVycy9ibG9j
ay9jbWQ2NHguYyBsaW51eC9kcml2ZXJzL2Jsb2NrL2NtZDY0eC5jDQotLS0g
bGludXgtMi4zLjM0LXByaXN0aW5lL2RyaXZlcnMvYmxvY2svY21kNjR4LmMJ
V2VkIERlYyAzMSAxNjowMDowMCAxOTY5DQorKysgbGludXgvZHJpdmVycy9i
bG9jay9jbWQ2NHguYwlUaHUgRGVjIDMwIDE4OjU5OjQyIDE5OTkNCkBAIC0w
LDAgKzEsMzQyIEBADQorLyogJElkOiBjbWQ2NHguYyx2IDEuMjAgMTk5OS8x
Mi8zMCAwMzo0ODozNw0KKyAqDQorICogY21kNjR4LmM6IEVuYWJsZSBpbnRl
cnJ1cHRzIGF0IGluaXRpYWxpemF0aW9uIHRpbWUgb24gVWx0cmEvUENJIG1h
Y2hpbmVzLg0KKyAqICAgICAgICAgICBOb3RlLCB0aGlzIGRyaXZlciBpcyBu
b3QgdXNlZCBhdCBhbGwgb24gb3RoZXIgc3lzdGVtcyBiZWNhdXNlDQorICog
ICAgICAgICAgIHRoZXJlIHRoZSAiQklPUyIgaGFzIGRvbmUgYWxsIG9mIHRo
ZSBmb2xsb3dpbmcgYWxyZWFkeS4NCisgKiAgICAgICAgICAgRHVlIHRvIG1h
c3NpdmUgaGFyZHdhcmUgYnVncywgVWx0cmFETUEgaXMgb25seSBzdXBwb3J0
ZWQNCisgKiAgICAgICAgICAgb24gdGhlIDY0NlUyIGFuZCBub3Qgb24gdGhl
IDY0NlUuDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggICAgICAgRWRk
aWUgQy4gRG9zdCAgKGVjZEBza3luZXQuYmUpDQorICogQ29weXJpZ2h0IChD
KSAxOTk4ICAgICAgIERhdmlkIFMuIE1pbGxlciAoZGF2ZW1AZG0uY29iYWx0
bWljcm8uY29tKQ0KKyAqIENvcHlyaWdodCAoQykgMTk5OSAgICAgICBBbmRy
ZSBIZWRyaWNrIChhbmRyZUBzdXNlLmNvbSkNCisgKi8NCisNCisjaW5jbHVk
ZSA8bGludXgvdHlwZXMuaD4NCisjaW5jbHVkZSA8bGludXgvcGNpLmg+DQor
I2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+DQorI2luY2x1ZGUgPGxpbnV4L2hk
cmVnLmg+DQorI2luY2x1ZGUgPGxpbnV4L2lkZS5oPg0KKw0KKyNpbmNsdWRl
IDxhc20vaW8uaD4NCisNCisjZGVmaW5lIENNRF9ERUJVRyAwDQorDQorI2lm
IENNRF9ERUJVRw0KKyNkZWZpbmUgY21kcHJpbnRrKHguLi4pCXByaW50aygj
I3gpDQorI2Vsc2UNCisjZGVmaW5lIGNtZHByaW50ayh4Li4uKQ0KKyNlbmRp
Zg0KKw0KK3N0YXRpYyBpbnQgY29uZmlnX2NoaXBzZXRfZm9yX2RtYSAoaWRl
X2RyaXZlX3QgKmRyaXZlLCB1bnNpZ25lZCBpbnQgcmV2LCBieXRlIHVsdHJh
XzY2KQ0KK3sNCisJc3RydWN0IGhkX2RyaXZlaWQgKmlkCT0gZHJpdmUtPmlk
Ow0KKwlpZGVfaHdpZl90ICpod2lmCT0gSFdJRihkcml2ZSk7DQorCXN0cnVj
dCBwY2lfZGV2ICpkZXYJPSBod2lmLT5wY2lfZGV2Ow0KKwl1bnNpZ25lZCBs
b25nIGRtYV9iYXNlCT0gaHdpZi0+ZG1hX2Jhc2U7DQorDQorIAlieXRlIHVu
aXQJCT0gKGRyaXZlLT5zZWxlY3QuYi51bml0ICYgMHgwMSk7DQorCWJ5dGUg
c3BlZWQJCT0gMHgwMDsNCisJYnl0ZSB1ZG1hX3RpbWluZ19iaXRzCT0gMHgw
MDsNCisJYnl0ZSB1ZG1hXzMzCQk9ICgocmV2ID49IDB4MDUpIHx8ICh1bHRy
YV82NikpID8gMSA6IDA7DQorCWJ5dGUgdWRtYV82NgkJPSAoKGlkLT53b3Jk
OTMgJiAweDIwMDApICYmIChod2lmLT51ZG1hX2ZvdXIpKSA/IDEgOiAwOw0K
KwkvKiBpbnQgZHJpdmVfbnVtYmVyCT0gKChod2lmLT5jaGFubmVsID8gMiA6
IDApICsgdW5pdCk7ICovDQorCWludCBydmFsOw0KKw0KKwlzd2l0Y2goZGV2
LT5kZXZpY2UpIHsNCisJCWNhc2UgUENJX0RFVklDRV9JRF9DTURfNjQzOg0K
KwkJY2FzZSBQQ0lfREVWSUNFX0lEX0NNRF82NDY6DQorCQljYXNlIFBDSV9E
RVZJQ0VfSURfQ01EXzY0ODoNCisJCWRlZmF1bHQ6DQorCQkJYnJlYWs7DQor
CX0NCisNCisJaWYgKGRyaXZlLT5tZWRpYSAhPSBpZGVfZGlzaykgew0KKwkJ
Y21kcHJpbnRrKCJDTUQ2NFg6IGRyaXZlLT5tZWRpYSAhPSBpZGVfZGlzayBh
dCBkb3VibGUgY2hlY2ssIGluaXRhbCBjaGVjayBmYWlsZWQhIVxuIik7DQor
CQlyZXR1cm4gKChpbnQpIGlkZV9kbWFfb2ZmKTsNCisJfQ0KKw0KKwkvKiBV
bHRyYURNQSBvbmx5IHN1cHBvcnRlZCBvbiBQQ0k2NDZVIGFuZCBQQ0k2NDZV
MiwNCisJICogd2hpY2ggY29ycmVzcG9uZCB0byByZXZpc2lvbnMgMHgwMywg
MHgwNSBhbmQgMHgwNyByZXNwZWN0aXZlbHkuDQorCSAqIEFjdHVhbGx5LCBh
bHRob3VnaCB0aGUgQ01EIHRlY2ggc3VwcG9ydCBwZW9wbGUgd29uJ3QNCisJ
ICogdGVsbCBtZSB0aGUgZGV0YWlscywgdGhlIDB4MDMgcmV2aXNpb24gY2Fu
bm90IHN1cHBvcnQNCisJICogVURNQSBjb3JyZWN0bHkgd2l0aG91dCBoYXJk
d2FyZSBtb2RpZmljYXRpb25zLCBhbmQgZXZlbg0KKwkgKiB0aGVuIGl0IG9u
bHkgd29ya3Mgd2l0aCBRdWFudHVtIGRpc2tzIGR1ZSB0byBzb21lDQorCSAq
IGhvbGQgdGltZSBhc3N1bXB0aW9ucyBpbiB0aGUgNjQ2VSBwYXJ0IHdoaWNo
IGFyZSBmaXhlZA0KKwkgKiBpbiB0aGUgNjQ2VTIuDQorCSAqIFNvIHdlIG9u
bHkgZG8gVWx0cmFETUEgb24gcmV2aXNpb24gMHgwNSBhbmQgMHgwNyBjaGlw
c2V0cy4NCisJICovDQorDQorCWlmICgoaWQtPmRtYV91bHRyYSAmIDB4MDAx
MCkgJiYgKHVkbWFfNjYpICYmICh1ZG1hXzMzKSkgew0KKwkJc3BlZWQgPSBY
RkVSX1VETUFfNDsNCisJCXVkbWFfdGltaW5nX2JpdHMgPSAweDAwOwkvKiAx
IGNsb2NrICovDQorCX0gZWxzZSBpZiAoKGlkLT5kbWFfdWx0cmEgJiAweDAw
MDgpICYmICh1ZG1hXzY2KSAmJiAodWRtYV8zMykpIHsNCisJCXNwZWVkID0g
WEZFUl9VRE1BXzM7DQorCQl1ZG1hX3RpbWluZ19iaXRzID0gMHgwMDsJLyog
MSBjbG9jayAqLw0KKwl9IGVsc2UgaWYgKChpZC0+ZG1hX3VsdHJhICYgMHgw
MDA0KSAmJiAodWRtYV8zMykpIHsNCisJCXNwZWVkID0gWEZFUl9VRE1BXzI7
DQorCQl1ZG1hX3RpbWluZ19iaXRzID0gMHgxMDsJLyogMiBjbG9jayAqLw0K
Kwl9IGVsc2UgaWYgKChpZC0+ZG1hX3VsdHJhICYgMHgwMDAyKSAmJiAodWRt
YV8zMykpIHsNCisJCXNwZWVkID0gWEZFUl9VRE1BXzE7DQorCQl1ZG1hX3Rp
bWluZ19iaXRzID0gMHgyMDsJLyogMyBjbG9jayAqLw0KKwl9IGVsc2UgaWYg
KChpZC0+ZG1hX3VsdHJhICYgMHgwMDAxKSAmJiAodWRtYV8zMykpIHsNCisJ
CXNwZWVkID0gWEZFUl9VRE1BXzA7DQorCQl1ZG1hX3RpbWluZ19iaXRzID0g
MHgzMDsJLyogNCBjbG9jayAqLw0KKwl9IGVsc2UgaWYgKGlkLT5kbWFfbXdv
cmQgJiAweDAwMDQpIHsNCisJCXNwZWVkID0gWEZFUl9NV19ETUFfMjsNCisJ
fSBlbHNlIGlmIChpZC0+ZG1hX213b3JkICYgMHgwMDAyKSB7DQorCQlzcGVl
ZCA9IFhGRVJfTVdfRE1BXzE7DQorCX0gZWxzZSBpZiAoaWQtPmRtYV9td29y
ZCAmIDB4MDAwMSkgew0KKwkJc3BlZWQgPSBYRkVSX01XX0RNQV8wOw0KKwl9
IGVsc2UgaWYgKGlkLT5kbWFfMXdvcmQgJiAweDAwMDQpIHsNCisJCXNwZWVk
ID0gWEZFUl9TV19ETUFfMjsNCisJfSBlbHNlIGlmIChpZC0+ZG1hXzF3b3Jk
ICYgMHgwMDAyKSB7DQorCQlzcGVlZCA9IFhGRVJfU1dfRE1BXzE7DQorCX0g
ZWxzZSBpZiAoaWQtPmRtYV8xd29yZCAmIDB4MDAwMSkgew0KKwkJc3BlZWQg
PSBYRkVSX1NXX0RNQV8wOw0KKwl9IGVsc2Ugew0KKwkJcmV0dXJuICgoaW50
KSBpZGVfZG1hX29mZl9xdWlldGx5KTsNCisJfQ0KKw0KKwkodm9pZCkgaWRl
X2NvbmZpZ19kcml2ZV9zcGVlZChkcml2ZSwgc3BlZWQpOw0KKwlvdXRiKGlu
YihkbWFfYmFzZSsyKXwoMTw8KDUrdW5pdCkpLCBkbWFfYmFzZSsyKTsNCisN
CisJaWYgKHNwZWVkID49IFhGRVJfVURNQV8wKSB7DQorCQlieXRlIHVkbWFf
Y3RybCA9IGluYihkbWFfYmFzZSArIDMpOw0KKwkJLyogUHV0IHRoaXMgY2hh
bm5lbCBpbnRvIFVETUEgbW9kZS4gKi8NCisJCXVkbWFfY3RybCB8PSAoMSA8
PCB1bml0KTsNCisJCXVkbWFfY3RybCAmPSB+KDB4MzAgPDwgKHVuaXQgKiAy
KSk7DQorCQl1ZG1hX2N0cmwgfD0gICh1ZG1hX3RpbWluZ19iaXRzIDw8ICh1
bml0ICogMikpOw0KKwkJb3V0Yih1ZG1hX2N0cmwsIGRtYV9iYXNlKzMpOw0K
Kwl9DQorDQorCXJ2YWwgPSAoaW50KSgJKChpZC0+ZG1hX3VsdHJhID4+IDEx
KSAmIDMpID8gaWRlX2RtYV9vbiA6DQorCQkJKChpZC0+ZG1hX3VsdHJhID4+
IDgpICYgNykgPyBpZGVfZG1hX29uIDoNCisJCQkoKGlkLT5kbWFfbXdvcmQg
Pj4gOCkgJiA3KSA/IGlkZV9kbWFfb24gOg0KKwkJCSgoaWQtPmRtYV8xd29y
ZCA+PiA4KSAmIDcpID8gaWRlX2RtYV9vbiA6DQorCQkJCQkJICAgICBpZGVf
ZG1hX29mZl9xdWlldGx5KTsNCisNCisJcmV0dXJuIHJ2YWw7DQorfQ0KKw0K
K3N0YXRpYyB2b2lkIGNvbmZpZ19jaGlwc2V0X2Zvcl9waW8gKGlkZV9kcml2
ZV90ICpkcml2ZSwgdW5zaWduZWQgaW50IHJldikNCit7DQorCS8qICBGSVhN
RSEhIGZpZ3VyZSBvdXQgc29tZSBQSU9pbmcganVuay4uLi4gKi8NCit9DQor
DQorc3RhdGljIGludCBjbWQ2NHhfY29uZmlnX2RyaXZlX2Zvcl9kbWEgKGlk
ZV9kcml2ZV90ICpkcml2ZSkNCit7DQorCXN0cnVjdCBoZF9kcml2ZWlkICpp
ZAk9IGRyaXZlLT5pZDsNCisJaWRlX2h3aWZfdCAqaHdpZgk9IEhXSUYoZHJp
dmUpOw0KKwlzdHJ1Y3QgcGNpX2RldiAqZGV2CT0gaHdpZi0+cGNpX2RldjsN
CisJdW5zaWduZWQgaW50IGNsYXNzX3Jldgk9IDA7DQorCWJ5dGUgY2FuX3Vs
dHJhXzMzCT0gMDsNCisJYnl0ZSBjYW5fdWx0cmFfNjYJPSAwOw0KKwlpZGVf
ZG1hX2FjdGlvbl90IGRtYV9mdW5jID0gaWRlX2RtYV9vbjsNCisNCisJcGNp
X3JlYWRfY29uZmlnX2R3b3JkKGRldiwgUENJX0NMQVNTX1JFVklTSU9OLCAm
Y2xhc3NfcmV2KTsNCisJY2xhc3NfcmV2ICY9IDB4ZmY7CQ0KKw0KKwlzd2l0
Y2goZGV2LT5kZXZpY2UpIHsNCisJCWNhc2UgUENJX0RFVklDRV9JRF9DTURf
NjQzOg0KKwkJCWNhbl91bHRyYV8zMyA9IDE7DQorCQkJY2FuX3VsdHJhXzY2
ID0gMDsNCisJCQlicmVhazsNCisJCWNhc2UgUENJX0RFVklDRV9JRF9DTURf
NjQ2Og0KKwkJCWNhbl91bHRyYV8zMyA9IChjbGFzc19yZXYgPj0gMHgwNSkg
PyAxIDogMDsNCisJCQljYW5fdWx0cmFfNjYgPSAwOw0KKwkJCWJyZWFrOw0K
KwkJY2FzZSBQQ0lfREVWSUNFX0lEX0NNRF82NDg6DQorCQkJY2FuX3VsdHJh
XzMzID0gMTsNCisJCQljYW5fdWx0cmFfNjYgPSAxOw0KKwkJCWJyZWFrOw0K
KwkJZGVmYXVsdDoNCisJCQlyZXR1cm4gaHdpZi0+ZG1hcHJvYyhpZGVfZG1h
X29mZiwgZHJpdmUpOw0KKwl9DQorDQorCWlmICgoaWQgIT0gTlVMTCkgJiYg
KChpZC0+Y2FwYWJpbGl0eSAmIDEpICE9IDApICYmDQorCSAgICBod2lmLT5h
dXRvZG1hICYmIChkcml2ZS0+bWVkaWEgPT0gaWRlX2Rpc2spKSB7DQorCQkv
KiBDb25zdWx0IHRoZSBsaXN0IG9mIGtub3duICJiYWQiIGRyaXZlcyAqLw0K
KwkJaWYgKGlkZV9kbWFwcm9jKGlkZV9kbWFfYmFkX2RyaXZlLCBkcml2ZSkp
IHsNCisJCQlkbWFfZnVuYyA9IGlkZV9kbWFfb2ZmOw0KKwkJCWdvdG8gZmFz
dF9hdGFfcGlvOw0KKwkJfQ0KKwkJZG1hX2Z1bmMgPSBpZGVfZG1hX29mZl9x
dWlldGx5Ow0KKwkJaWYgKChpZC0+ZmllbGRfdmFsaWQgJiA0KSAmJiAoY2Fu
X3VsdHJhXzMzKSkgew0KKwkJCWlmIChpZC0+ZG1hX3VsdHJhICYgMHgwMDFG
KSB7DQorCQkJCS8qIEZvcmNlIGlmIENhcGFibGUgVWx0cmFETUEgKi8NCisJ
CQkJZG1hX2Z1bmMgPSBjb25maWdfY2hpcHNldF9mb3JfZG1hKGRyaXZlLCBj
bGFzc19yZXYsIGNhbl91bHRyYV82Nik7DQorCQkJCWlmICgoaWQtPmZpZWxk
X3ZhbGlkICYgMikgJiYNCisJCQkJICAgIChkbWFfZnVuYyAhPSBpZGVfZG1h
X29uKSkNCisJCQkJCWdvdG8gdHJ5X2RtYV9tb2RlczsNCisJCQl9DQorCQl9
IGVsc2UgaWYgKGlkLT5maWVsZF92YWxpZCAmIDIpIHsNCit0cnlfZG1hX21v
ZGVzOg0KKwkJCWlmICgoaWQtPmRtYV9td29yZCAmIDB4MDAwNykgfHwNCisJ
CQkgICAgKGlkLT5kbWFfMXdvcmQgJiAweDAwMDcpKSB7DQorCQkJCS8qIEZv
cmNlIGlmIENhcGFibGUgcmVndWxhciBETUEgbW9kZXMgKi8NCisJCQkJZG1h
X2Z1bmMgPSBjb25maWdfY2hpcHNldF9mb3JfZG1hKGRyaXZlLCBjbGFzc19y
ZXYsIDApOw0KKwkJCQlpZiAoZG1hX2Z1bmMgIT0gaWRlX2RtYV9vbikNCisJ
CQkJCWdvdG8gbm9fZG1hX3NldDsNCisJCQl9DQorCQl9IGVsc2UgaWYgKGlk
ZV9kbWFwcm9jKGlkZV9kbWFfZ29vZF9kcml2ZSwgZHJpdmUpKSB7DQorCQkJ
aWYgKGlkLT5laWRlX2RtYV90aW1lID4gMTUwKSB7DQorCQkJCWdvdG8gbm9f
ZG1hX3NldDsNCisJCQl9DQorCQkJLyogQ29uc3VsdCB0aGUgbGlzdCBvZiBr
bm93biAiZ29vZCIgZHJpdmVzICovDQorCQkJZG1hX2Z1bmMgPSBjb25maWdf
Y2hpcHNldF9mb3JfZG1hKGRyaXZlLCBjbGFzc19yZXYsIDApOw0KKwkJCWlm
IChkbWFfZnVuYyAhPSBpZGVfZG1hX29uKQ0KKwkJCQlnb3RvIG5vX2RtYV9z
ZXQ7DQorCQl9IGVsc2Ugew0KKwkJCWdvdG8gZmFzdF9hdGFfcGlvOw0KKwkJ
fQ0KKwl9IGVsc2UgaWYgKChpZC0+Y2FwYWJpbGl0eSAmIDgpIHx8IChpZC0+
ZmllbGRfdmFsaWQgJiAyKSkgew0KK2Zhc3RfYXRhX3BpbzoNCisJCWRtYV9m
dW5jID0gaWRlX2RtYV9vZmZfcXVpZXRseTsNCitub19kbWFfc2V0Og0KKwkJ
Y29uZmlnX2NoaXBzZXRfZm9yX3Bpbyhkcml2ZSwgY2xhc3NfcmV2KTsNCisJ
fQ0KKwlyZXR1cm4gaHdpZi0+ZG1hcHJvYyhkbWFfZnVuYywgZHJpdmUpOw0K
K30NCisNCitzdGF0aWMgaW50IGNtZDY0eF9kbWFwcm9jIChpZGVfZG1hX2Fj
dGlvbl90IGZ1bmMsIGlkZV9kcml2ZV90ICpkcml2ZSkNCit7DQorCXN3aXRj
aCAoZnVuYykgew0KKwkJY2FzZSBpZGVfZG1hX2NoZWNrOg0KKwkJCXJldHVy
biBjbWQ2NHhfY29uZmlnX2RyaXZlX2Zvcl9kbWEoZHJpdmUpOw0KKwkJZGVm
YXVsdDoNCisJCQlicmVhazsNCisJfQ0KKwkvKiBPdGhlciBjYXNlcyBhcmUg
ZG9uZSBieSBnZW5lcmljIElERS1ETUEgY29kZS4gKi8NCisJcmV0dXJuIGlk
ZV9kbWFwcm9jKGZ1bmMsIGRyaXZlKTsNCit9DQorDQorLyoNCisgKiBBU1VT
IFA1NVQyUDREIHdpdGggQ01ENjQ2IGNoaXBzZXQgcmV2aXNpb24gMHgwMSBy
ZXF1aXJlcyB0aGUgb2xkDQorICogZXZlbnQgb3JkZXIgZm9yIERNQSB0cmFu
c2ZlcnMuDQorICovDQorc3RhdGljIGludCBjbWQ2NDZfMV9kbWFwcm9jIChp
ZGVfZG1hX2FjdGlvbl90IGZ1bmMsIGlkZV9kcml2ZV90ICpkcml2ZSkNCit7
DQorCWlkZV9od2lmX3QgKmh3aWYgPSBIV0lGKGRyaXZlKTsNCisJdW5zaWdu
ZWQgbG9uZyBkbWFfYmFzZSA9IGh3aWYtPmRtYV9iYXNlOw0KKwlieXRlIGRt
YV9zdGF0Ow0KKw0KKwlpZiAoZnVuYyA9PSBpZGVfZG1hX2VuZCkgew0KKwkJ
ZHJpdmUtPndhaXRpbmdfZm9yX2RtYSA9IDA7DQorCQlkbWFfc3RhdCA9IGlu
YihkbWFfYmFzZSsyKTsJCS8qIGdldCBETUEgc3RhdHVzICovDQorCQlvdXRi
KGluYihkbWFfYmFzZSkmfjEsIGRtYV9iYXNlKTsJLyogc3RvcCBETUEgKi8N
CisJCW91dGIoZG1hX3N0YXR8NiwgZG1hX2Jhc2UrMik7CQkvKiBjbGVhciB0
aGUgSU5UUiAmIEVSUk9SIGJpdHMgKi8NCisJCXJldHVybiAoZG1hX3N0YXQg
JiA3KSAhPSA0OwkJLyogdmVyaWZ5IGdvb2QgRE1BIHN0YXR1cyAqLw0KKwl9
DQorDQorCS8qIE90aGVyIGNhc2VzIGFyZSBkb25lIGJ5IGdlbmVyaWMgSURF
LURNQSBjb2RlLiAqLw0KKwlyZXR1cm4gY21kNjR4X2RtYXByb2MoZnVuYywg
ZHJpdmUpOw0KK30NCisNCit1bnNpZ25lZCBpbnQgX19pbml0IHBjaV9pbml0
X2NtZDY0eCAoc3RydWN0IHBjaV9kZXYgKmRldiwgY29uc3QgY2hhciAqbmFt
ZSkNCit7DQorCXVuc2lnbmVkIGNoYXIgbXJkbW9kZTsNCisJdW5zaWduZWQg
aW50IGNsYXNzX3JldjsNCisNCisJcGNpX3JlYWRfY29uZmlnX2R3b3JkKGRl
diwgUENJX0NMQVNTX1JFVklTSU9OLCAmY2xhc3NfcmV2KTsNCisJY2xhc3Nf
cmV2ICY9IDB4ZmY7DQorDQorCXN3aXRjaChkZXYtPmRldmljZSkgew0KKwkJ
Y2FzZSBQQ0lfREVWSUNFX0lEX0NNRF82NDM6DQorCQkJYnJlYWs7DQorCQlj
YXNlIFBDSV9ERVZJQ0VfSURfQ01EXzY0NjoNCisJCQlwcmludGsoIiVzOiBj
aGlwc2V0IHJldmlzaW9uIDB4JTAyWCwgIiwgbmFtZSwgY2xhc3NfcmV2KTsN
CisJCQlzd2l0Y2goY2xhc3NfcmV2KSB7DQorCQkJCWNhc2UgMHgwNzoNCisJ
CQkJY2FzZSAweDA1Og0KKwkJCQkJcHJpbnRrKCJVbHRyYURNQSBDYXBhYmxl
Iik7DQorCQkJCQlicmVhazsNCisJCQkJY2FzZSAweDAzOg0KKwkJCQkJcHJp
bnRrKCJNdWx0aVdvcmQgRE1BIEZvcmNlIExpbWl0ZWQiKTsNCisJCQkJCWJy
ZWFrOw0KKwkJCQljYXNlIDB4MDE6DQorCQkJCWRlZmF1bHQ6DQorCQkJCQlw
cmludGsoIk11bHRpV29yZCBETUEgTGltaXRlZCwgSVJRIHdvcmthcm91bmQg
ZW5hYmxlZCIpOw0KKwkJCQkJYnJlYWs7DQorCQkJCX0NCisJCQlwcmludGso
IlxuIik7DQorDQorCQkJLyogU2V0IGEgZ29vZCBsYXRlbmN5IHRpbWVyIGFu
ZCBjYWNoZSBsaW5lIHNpemUgdmFsdWUuICovDQorCQkJKHZvaWQpIHBjaV93
cml0ZV9jb25maWdfYnl0ZShkZXYsIFBDSV9MQVRFTkNZX1RJTUVSLCA2NCk7
DQorI2lmZGVmIF9fc3BhcmNfdjlfXw0KKwkJCSh2b2lkKSBwY2lfd3JpdGVf
Y29uZmlnX2J5dGUoZGV2LCBQQ0lfQ0FDSEVfTElORV9TSVpFLCAweDEwKTsN
CisjZW5kaWYNCisNCisJCQkvKiBTZXR1cCBpbnRlcnJ1cHRzLiAqLw0KKwkJ
CSh2b2lkKSBwY2lfcmVhZF9jb25maWdfYnl0ZShkZXYsIDB4NzEsICZtcmRt
b2RlKTsNCisJCQltcmRtb2RlICY9IH4oMHgzMCk7DQorCQkJKHZvaWQpIHBj
aV93cml0ZV9jb25maWdfYnl0ZShkZXYsIDB4NzEsIG1yZG1vZGUpOw0KKw0K
KwkJCS8qIFVzZSBNRU1PUlkgUkVBRCBMSU5FIGZvciByZWFkcy4NCisJCQkg
KiBOT1RFOiBBbHRob3VnaCBub3QgbWVudGlvbmVkIGluIHRoZSBQQ0kwNjQ2
VSBzcGVjcywNCisJCQkgKiAgICAgICB0aGVzZSBiaXRzIGFyZSB3cml0ZSBv
bmx5IGFuZCB3b24ndCBiZSByZWFkDQorCQkJICogICAgICAgYmFjayBhcyBz
ZXQgb3Igbm90LiAgVGhlIFBDSTA2NDZVMiBzcGVjcyBjbGFyaWZ5DQorCQkJ
ICogICAgICAgdGhpcyBwb2ludC4NCisJCQkgKi8NCisJCQkodm9pZCkgcGNp
X3dyaXRlX2NvbmZpZ19ieXRlKGRldiwgMHg3MSwgbXJkbW9kZSB8IDB4MDIp
Ow0KKw0KKwkJCS8qIFNldCByZWFzb25hYmxlIGFjdGl2ZS9yZWNvdmVyeS9h
ZGRyZXNzLXNldHVwIHZhbHVlcy4gKi8NCisJCQkodm9pZCkgcGNpX3dyaXRl
X2NvbmZpZ19ieXRlKGRldiwgMHg1MywgMHg0MCk7DQorCQkJKHZvaWQpIHBj
aV93cml0ZV9jb25maWdfYnl0ZShkZXYsIDB4NTQsIDB4M2YpOw0KKwkJCSh2
b2lkKSBwY2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2LCAweDU1LCAweDQwKTsN
CisJCQkodm9pZCkgcGNpX3dyaXRlX2NvbmZpZ19ieXRlKGRldiwgMHg1Niwg
MHgzZik7DQorCQkJKHZvaWQpIHBjaV93cml0ZV9jb25maWdfYnl0ZShkZXYs
IDB4NTcsIDB4NWMpOw0KKwkJCSh2b2lkKSBwY2lfd3JpdGVfY29uZmlnX2J5
dGUoZGV2LCAweDU4LCAweDNmKTsNCisJCQkodm9pZCkgcGNpX3dyaXRlX2Nv
bmZpZ19ieXRlKGRldiwgMHg1YiwgMHgzZik7DQorCQkJYnJlYWs7DQorCQlj
YXNlIFBDSV9ERVZJQ0VfSURfQ01EXzY0ODoNCisJCQlicmVhazsNCisJCWRl
ZmF1bHQ6DQorCQkJYnJlYWs7DQorCX0NCisJcmV0dXJuIDA7DQorfQ0KKw0K
K3Vuc2lnbmVkIGludCBfX2luaXQgYXRhNjZfY21kNjR4IChpZGVfaHdpZl90
ICpod2lmKQ0KK3sNCisJYnl0ZSBhdGE2NiA9IDA7DQorCWJ5dGUgbWFzayA9
IChod2lmLT5jaGFubmVsKSA/IDB4MDIgOiAweDAxOw0KKw0KKwlwY2lfcmVh
ZF9jb25maWdfYnl0ZShod2lmLT5wY2lfZGV2LCAweDc5LCAmYXRhNjYpOw0K
KwlyZXR1cm4gKGF0YTY2ICYgbWFzaykgPyAxIDogMDsNCit9DQorDQordm9p
ZCBfX2luaXQgaWRlX2luaXRfY21kNjR4IChpZGVfaHdpZl90ICpod2lmKQ0K
K3sNCisJc3RydWN0IHBjaV9kZXYgKmRldgk9IGh3aWYtPnBjaV9kZXY7DQor
CXVuc2lnbmVkIGludCBjbGFzc19yZXY7DQorDQorCXBjaV9yZWFkX2NvbmZp
Z19kd29yZChkZXYsIFBDSV9DTEFTU19SRVZJU0lPTiwgJmNsYXNzX3Jldik7
DQorCWNsYXNzX3JldiAmPSAweGZmOw0KKw0KKwlpZiAoIWh3aWYtPmRtYV9i
YXNlKQ0KKwkJcmV0dXJuOw0KKw0KKwlzd2l0Y2goZGV2LT5kZXZpY2UpIHsN
CisJCWNhc2UgUENJX0RFVklDRV9JRF9DTURfNjQzOg0KKwkJCWh3aWYtPmRt
YXByb2MgPSAmY21kNjR4X2RtYXByb2M7DQorCQkJYnJlYWs7DQorCQljYXNl
IFBDSV9ERVZJQ0VfSURfQ01EXzY0NjoNCisJCQlod2lmLT5jaGlwc2V0ID0g
aWRlX2NtZDY0NjsNCisJCQlpZiAoY2xhc3NfcmV2ID09IDB4MDEpIHsNCisJ
CQkJaHdpZi0+ZG1hcHJvYyA9ICZjbWQ2NDZfMV9kbWFwcm9jOw0KKwkJCX0g
ZWxzZSB7DQorCQkJCWh3aWYtPmRtYXByb2MgPSAmY21kNjR4X2RtYXByb2M7
DQorCQkJfQ0KKwkJCWJyZWFrOw0KKwkJY2FzZSBQQ0lfREVWSUNFX0lEX0NN
RF82NDg6DQorCQkJaHdpZi0+ZG1hcHJvYyA9ICZjbWQ2NHhfZG1hcHJvYzsN
CisJCQlicmVhazsNCisJCWRlZmF1bHQ6DQorCQkJYnJlYWs7DQorCX0NCit9
DQorDQordm9pZCBpZGVfZG1hY2FwYWJsZV9jbWQ2NHggKGlkZV9od2lmX3Qg
Kmh3aWYsIHVuc2lnbmVkIGxvbmcgZG1hYmFzZSkNCit7DQorCWlkZV9zZXR1
cF9kbWEoaHdpZiwgZG1hYmFzZSwgOCk7DQorfQ0KZGlmZiAtdXJOIGxpbnV4
LTIuMy4zNC1wcmlzdGluZS9kcml2ZXJzL2Jsb2NrL2N5ODJjNjkzLmMgbGlu
dXgvZHJpdmVycy9ibG9jay9jeTgyYzY5My5jDQotLS0gbGludXgtMi4zLjM0
LXByaXN0aW5lL2RyaXZlcnMvYmxvY2svY3k4MmM2OTMuYwlUdWUgRGVjIDE0
IDIzOjAzOjQ5IDE5OTkNCisrKyBsaW51eC9kcml2ZXJzL2Jsb2NrL2N5ODJj
NjkzLmMJVGh1IERlYyAzMCAwNDoyODo0MyAxOTk5DQpAQCAtNDI5LDggKzQy
OSw2IEBADQogCWh3aWYtPnR1bmVwcm9jID0gJmN5ODJjNjkzX3R1bmVfZHJp
dmU7DQogCWlmIChod2lmLT5kbWFfYmFzZSkgew0KIAkJaHdpZi0+ZG1hcHJv
YyA9ICZjeTgyYzY5M19kbWFwcm9jOw0KLQkJaHdpZi0+ZHJpdmVzWzBdLmF1
dG90dW5lID0gMDsNCi0JCWh3aWYtPmRyaXZlc1sxXS5hdXRvdHVuZSA9IDA7
DQogCX0gZWxzZSB7DQogCQlod2lmLT5kcml2ZXNbMF0uYXV0b3R1bmUgPSAx
Ow0KIAkJaHdpZi0+ZHJpdmVzWzFdLmF1dG90dW5lID0gMTsNCmRpZmYgLXVy
TiBsaW51eC0yLjMuMzQtcHJpc3RpbmUvZHJpdmVycy9ibG9jay9ocHQzNHgu
YyBsaW51eC9kcml2ZXJzL2Jsb2NrL2hwdDM0eC5jDQotLS0gbGludXgtMi4z
LjM0LXByaXN0aW5lL2RyaXZlcnMvYmxvY2svaHB0MzR4LmMJVHVlIERlYyAx
NCAyMzowMzo0OSAxOTk5DQorKysgbGludXgvZHJpdmVycy9ibG9jay9ocHQz
NHguYwlUaHUgRGVjIDMwIDA0OjI4OjQzIDE5OTkNCkBAIC0zNzcsOCArMzc3
LDYgQEANCiAjZW5kaWYNCiAjZW5kaWYgLyogQ09ORklHX0JMS19ERVZfSFBU
MzRYX0RNQSAqLw0KIAkJaHdpZi0+ZG1hcHJvYyA9ICZocHQzNHhfZG1hcHJv
YzsNCi0JCWh3aWYtPmRyaXZlc1swXS5hdXRvdHVuZSA9IDA7DQotCQlod2lm
LT5kcml2ZXNbMV0uYXV0b3R1bmUgPSAwOw0KIAl9IGVsc2Ugew0KIAkJaHdp
Zi0+ZHJpdmVzWzBdLmF1dG90dW5lID0gMTsNCiAJCWh3aWYtPmRyaXZlc1sx
XS5hdXRvdHVuZSA9IDE7DQpkaWZmIC11ck4gbGludXgtMi4zLjM0LXByaXN0
aW5lL2RyaXZlcnMvYmxvY2svaHB0MzY2LmMgbGludXgvZHJpdmVycy9ibG9j
ay9ocHQzNjYuYw0KLS0tIGxpbnV4LTIuMy4zNC1wcmlzdGluZS9kcml2ZXJz
L2Jsb2NrL2hwdDM2Ni5jCVR1ZSBEZWMgMTQgMjM6MDM6NDkgMTk5OQ0KKysr
IGxpbnV4L2RyaXZlcnMvYmxvY2svaHB0MzY2LmMJVGh1IERlYyAzMCAwNDoy
ODo0MyAxOTk5DQpAQCAtMSw1ICsxLDUgQEANCiAvKg0KLSAqIGxpbnV4L2Ry
aXZlcnMvYmxvY2svaHB0MzY2LmMJCVZlcnNpb24gMC4xNAlEZWMuIDEzLCAx
OTk5DQorICogbGludXgvZHJpdmVycy9ibG9jay9ocHQzNjYuYwkJVmVyc2lv
biAwLjE1CURlYy4gMjIsIDE5OTkNCiAgKg0KICAqIENvcHlyaWdodCAoQykg
MTk5OQkJCUFuZHJlIEhlZHJpY2sgPGFuZHJlQHN1c2UuY29tPg0KICAqIE1h
eSBiZSBjb3BpZWQgb3IgbW9kaWZpZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KQEAgLTMwLDYgKzMwLDcg
QEANCiAjaW5jbHVkZSAiaWRlX21vZGVzLmgiDQogDQogY29uc3QgY2hhciAq
YmFkX2F0YTY2XzRbXSA9IHsNCisJIlFVQU5UVU0gRklSRUJBTExQIEtBOS4x
IiwNCiAJIldEQyBBQzMxMDIwMFIiLA0KIAlOVUxMDQogfTsNCkBAIC0xMjEs
NiArMTIyLDcgQEANCiANCiBleHRlcm4gY2hhciAqaWRlX3hmZXJfdmVyYm9z
ZSAoYnl0ZSB4ZmVyX3JhdGUpOw0KIGJ5dGUgaHB0MzYzX3NoYXJlZF9pcnEg
PSAwOw0KK2J5dGUgaHB0MzYzX3NoYXJlZF9waW4gPSAwOw0KIA0KIHN0YXRp
YyBpbnQgY2hlY2tfaW5fZHJpdmVfbGlzdHMgKGlkZV9kcml2ZV90ICpkcml2
ZSwgY29uc3QgY2hhciAqKmxpc3QpDQogew0KQEAgLTQyMSwzNCArNDIzLDMx
IEBADQogDQogaW50IGhwdDM2Nl9kbWFwcm9jIChpZGVfZG1hX2FjdGlvbl90
IGZ1bmMsIGlkZV9kcml2ZV90ICpkcml2ZSkNCiB7DQotI2lmIDANCi0JYnl0
ZSByZWc1MGggPSAwLCByZWc1MmggPSAwOw0KLSNlbmRpZg0KIAlzd2l0Y2gg
KGZ1bmMpIHsNCiAJCWNhc2UgaWRlX2RtYV9jaGVjazoNCiAJCQlyZXR1cm4g
Y29uZmlnX2RyaXZlX3hmZXJfcmF0ZShkcml2ZSk7DQotI2lmIDANCi0JCWNh
c2UgaWRlX2RtYV9sb3N0aXJxOg0KLQkJCXBjaV9yZWFkX2NvbmZpZ19ieXRl
KEhXSUYoZHJpdmUpLT5wY2lfZGV2LCAweDUyLCAmcmVnNTJoKTsNCi0JCQlw
cmludGsoIiVzOiAoaWRlX2RtYV9sb3N0aXJxKSByZWc1Mmg9MHglMDJ4XG4i
LCBkcml2ZS0+bmFtZSwgcmVnNTJoKTsNCi0JCQlicmVhazsNCiAJCWNhc2Ug
aWRlX2RtYV90aW1lb3V0Og0KLQkJCSh2b2lkKSBpZGVfZG1hcHJvYyhpZGVf
ZG1hX29mZl9xdWlldGx5LCBkcml2ZSk7DQotCQkJcGNpX3JlYWRfY29uZmln
X2J5dGUoSFdJRihkcml2ZSktPnBjaV9kZXYsIDB4NTIsICZyZWc1MmgpOw0K
LQkJCXByaW50aygiJXM6IChpZGVfZG1hX3RpbWVvdXQpIHJlZzUyaD0weCUw
MnhcbiIsIGRyaXZlLT5uYW1lLCByZWc1MmgpOw0KLQkJCWlmIChyZWc1Mmgg
JiAweDA0KSB7DQorCQkJLyogaWRlX2RvX3Jlc2V0KGRyaXZlKTsgKi8NCisN
CisJCQlpZiAoMCkgew0KKwkJCQlieXRlIHJlZzUwaCA9IDAsIHJlZzUyaCA9
IDA7DQorCQkJCSh2b2lkKSBpZGVfZG1hcHJvYyhpZGVfZG1hX29mZl9xdWll
dGx5LCBkcml2ZSk7DQorCQkJCXBjaV9yZWFkX2NvbmZpZ19ieXRlKEhXSUYo
ZHJpdmUpLT5wY2lfZGV2LCAweDUwLCAmcmVnNTBoKTsNCisJCQkJcGNpX3Jl
YWRfY29uZmlnX2J5dGUoSFdJRihkcml2ZSktPnBjaV9kZXYsIDB4NTIsICZy
ZWc1MmgpOw0KKwkJCQlwcmludGsoIiVzOiAoaWRlX2RtYV90aW1lb3V0KSBy
ZWc1Mmg9MHglMDJ4XG4iLCBkcml2ZS0+bmFtZSwgcmVnNTJoKTsNCisJCQkJ
aWYgKHJlZzUyaCAmIDB4MDQpIHsNCisJCQkJCXBjaV9yZWFkX2NvbmZpZ19i
eXRlKEhXSUYoZHJpdmUpLT5wY2lfZGV2LCAweDUwLCAmcmVnNTBoKTsNCisJ
CQkJCXBjaV93cml0ZV9jb25maWdfYnl0ZShIV0lGKGRyaXZlKS0+cGNpX2Rl
diwgMHg1MCwgcmVnNTBofDB4ZmYpOw0KKwkJCQkJcGNpX3dyaXRlX2NvbmZp
Z19ieXRlKEhXSUYoZHJpdmUpLT5wY2lfZGV2LCAweDUwLCByZWc1MGgpOw0K
KwkJCQl9DQogCQkJCXBjaV9yZWFkX2NvbmZpZ19ieXRlKEhXSUYoZHJpdmUp
LT5wY2lfZGV2LCAweDUwLCAmcmVnNTBoKTsNCi0JCQkJcGNpX3dyaXRlX2Nv
bmZpZ19ieXRlKEhXSUYoZHJpdmUpLT5wY2lfZGV2LCAweDUwLCByZWc1MGh8
MHhmZik7DQotCQkJCXBjaV93cml0ZV9jb25maWdfYnl0ZShIV0lGKGRyaXZl
KS0+cGNpX2RldiwgMHg1MCwgcmVnNTBoKTsNCisJCQkJcGNpX3JlYWRfY29u
ZmlnX2J5dGUoSFdJRihkcml2ZSktPnBjaV9kZXYsIDB4NTIsICZyZWc1Mmgp
Ow0KKwkJCQlwcmludGsoIiVzOiAoaWRlX2RtYV90aW1lb3V0KSByZWc1MGg9
MHglMDJ4IHJlZzUyaD0weCUwMnggOjogYWdhaW5cbiIsIGRyaXZlLT5uYW1l
LCByZWc1MGgsIHJlZzUyaCk7DQorCQkJCSh2b2lkKSBpZGVfZG1hcHJvYyhp
ZGVfZG1hX29uLCBkcml2ZSk7DQorCQkJCWlmIChyZWc1MmggJiAweDA0KQ0K
KwkJCQkJKHZvaWQpIGlkZV9kbWFwcm9jKGlkZV9kbWFfb2ZmLCBkcml2ZSk7
DQogCQkJfQ0KLQkJCXBjaV9yZWFkX2NvbmZpZ19ieXRlKEhXSUYoZHJpdmUp
LT5wY2lfZGV2LCAweDUwLCAmcmVnNTBoKTsNCi0JCQlwY2lfcmVhZF9jb25m
aWdfYnl0ZShIV0lGKGRyaXZlKS0+cGNpX2RldiwgMHg1MiwgJnJlZzUyaCk7
DQotCQkJcHJpbnRrKCIlczogKGlkZV9kbWFfdGltZW91dCkgcmVnNTBoPTB4
JTAyeCByZWc1Mmg9MHglMDJ4IDo6IGFnYWluXG4iLCBkcml2ZS0+bmFtZSwg
cmVnNTBoLCByZWc1MmgpOw0KLQkJCSh2b2lkKSBpZGVfZG1hcHJvYyhpZGVf
ZG1hX29uLCBkcml2ZSk7DQotCQkJaWYgKHJlZzUyaCAmIDB4MDQpDQotCQkJ
CSh2b2lkKSBpZGVfZG1hcHJvYyhpZGVfZG1hX29mZiwgZHJpdmUpOw0KLQkJ
CXJldHVybiAxOw0KLSNlbmRpZg0KKwkJCWJyZWFrOw0KIAkJZGVmYXVsdDoN
CiAJCQlicmVhazsNCiAJfQ0KQEAgLTUwMiwxNSArNTAxLDE1IEBADQogCQlo
d2lmLT5tYXRlLT5tYXRlID0gaHdpZjsNCiAJCWh3aWYtPnNlcmlhbGl6ZWQg
PSBod2lmLT5tYXRlLT5zZXJpYWxpemVkID0gMTsNCiAJfQ0KKw0KKwlpZiAo
KFBDSV9GVU5DKGh3aWYtPnBjaV9kZXYtPmRldmZuKSAmIDEpICYmIChocHQz
NjNfc2hhcmVkX3BpbikpIHsNCisNCisJfQ0KICNlbmRpZg0KIA0KIAlod2lm
LT50dW5lcHJvYyA9ICZocHQzNjZfdHVuZV9kcml2ZTsNCiAJaWYgKGh3aWYt
PmRtYV9iYXNlKSB7DQogCQlod2lmLT5kbWFwcm9jID0gJmhwdDM2Nl9kbWFw
cm9jOw0KLSNpZiAwDQotCQlod2lmLT5kcml2ZXNbMF0uYXV0b3R1bmUgPSAw
Ow0KLQkJaHdpZi0+ZHJpdmVzWzFdLmF1dG90dW5lID0gMDsNCi0jZW5kaWYN
CiAJfSBlbHNlIHsNCiAJCWh3aWYtPmF1dG9kbWEgPSAwOw0KIAkJaHdpZi0+
ZHJpdmVzWzBdLmF1dG90dW5lID0gMTsNCmRpZmYgLXVyTiBsaW51eC0yLjMu
MzQtcHJpc3RpbmUvZHJpdmVycy9ibG9jay9pZGUtZGlzay5jIGxpbnV4L2Ry
aXZlcnMvYmxvY2svaWRlLWRpc2suYw0KLS0tIGxpbnV4LTIuMy4zNC1wcmlz
dGluZS9kcml2ZXJzL2Jsb2NrL2lkZS1kaXNrLmMJVHVlIERlYyAxNCAyMzow
Mzo1MCAxOTk5DQorKysgbGludXgvZHJpdmVycy9ibG9jay9pZGUtZGlzay5j
CVRodSBEZWMgMzAgMDQ6Mjg6NDMgMTk5OQ0KQEAgLTEzOSwxMCArMTM5LDIw
IEBADQogCWludCBpOw0KIAl1bnNpZ25lZCBpbnQgbXNlY3QsIG5zZWN0Ow0K
IAlzdHJ1Y3QgcmVxdWVzdCAqcnE7DQotDQorI2lmIDANCiAJaWYgKCFPS19T
VEFUKHN0YXQ9R0VUX1NUQVQoKSxEQVRBX1JFQURZLEJBRF9SX1NUQVQpKSB7
DQogCQlyZXR1cm4gaWRlX2Vycm9yKGRyaXZlLCAicmVhZF9pbnRyIiwgc3Rh
dCk7DQogCX0NCisjZWxzZQkvKiBuZXcgd2F5IGZvciBkZWFsaW5nIHdpdGgg
cHJlbWF0dXJlIHNoYXJlZCBQQ0kgaW50ZXJydXB0cyAqLw0KKwlpZiAoIU9L
X1NUQVQoc3RhdD1HRVRfU1RBVCgpLERBVEFfUkVBRFksQkFEX1JfU1RBVCkp
IHsNCisJCWlmIChzdGF0ICYgKEVSUl9TVEFUfERSUV9TVEFUKSkgew0KKwkJ
CXJldHVybiBpZGVfZXJyb3IoZHJpdmUsICJyZWFkX2ludHIiLCBzdGF0KTsN
CisJCX0NCisJCS8qIG5vIGRhdGEgeWV0LCBzbyB3YWl0IGZvciBhbm90aGVy
IGludGVycnVwdCAqLw0KKwkJaWRlX3NldF9oYW5kbGVyKGRyaXZlLCAmcmVh
ZF9pbnRyLCBXQUlUX0NNRCwgTlVMTCk7DQorCQlyZXR1cm4gaWRlX3N0YXJ0
ZWQ7DQorCX0NCisjZW5kaWYNCiAJbXNlY3QgPSBkcml2ZS0+bXVsdF9jb3Vu
dDsNCiAJDQogcmVhZF9uZXh0Og0KQEAgLTE2Myw3ICsxNzMsNyBAQA0KIAly
cS0+YnVmZmVyICs9IG5zZWN0PDw5Ow0KIAlycS0+ZXJyb3JzID0gMDsNCiAJ
aSA9IChycS0+bnJfc2VjdG9ycyAtPSBuc2VjdCk7DQotCWlmICgocnEtPmN1
cnJlbnRfbnJfc2VjdG9ycyAtPSBuc2VjdCkgPD0gMCkNCisJaWYgKCgobG9u
ZykocnEtPmN1cnJlbnRfbnJfc2VjdG9ycyAtPSBuc2VjdCkpIDw9IDApDQog
CQlpZGVfZW5kX3JlcXVlc3QoMSwgSFdHUk9VUChkcml2ZSkpOw0KIAlpZiAo
aSA+IDApIHsNCiAJCWlmIChtc2VjdCkNCkBAIC0xOTgsNyArMjA4LDcgQEAN
CiAJCQlycS0+ZXJyb3JzID0gMDsNCiAJCQlpID0gLS1ycS0+bnJfc2VjdG9y
czsNCiAJCQktLXJxLT5jdXJyZW50X25yX3NlY3RvcnM7DQotCQkJaWYgKHJx
LT5jdXJyZW50X25yX3NlY3RvcnMgPD0gMCkNCisJCQlpZiAoKChsb25nKXJx
LT5jdXJyZW50X25yX3NlY3RvcnMpIDw9IDApDQogCQkJCWlkZV9lbmRfcmVx
dWVzdCgxLCBod2dyb3VwKTsNCiAJCQlpZiAoaSA+IDApIHsNCiAJCQkJaWRl
ZGlza19vdXRwdXRfZGF0YSAoZHJpdmUsIHJxLT5idWZmZXIsIFNFQ1RPUl9X
T1JEUyk7DQpAQCAtMjA3LDggKzIxNyw4IEBADQogCQkJfQ0KICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBpZGVfc3RvcHBlZDsNCiAJCX0NCi0g
ICAgICAgICAgICAgICAgcHJpbnRrKCIlczogd3JpdGVfaW50ciBlcnJvcjI6
IG5yX3NlY3RvcnM9JWxkLCBzdGF0PTB4JTAyeFxuIiwgZHJpdmUtPm5hbWUs
IHJxLT5ucl9zZWN0b3JzLCBzdGF0KTsNCi0gICAgICAgIH0NCisJCXJldHVy
biBpZGVfc3RvcHBlZDsJLyogdGhlIG9yaWdpbmFsIGNvZGUgZGlkIHRoaXMg
aGVyZSAoPykgKi8NCisJfQ0KIAlyZXR1cm4gaWRlX2Vycm9yKGRyaXZlLCAi
d3JpdGVfaW50ciIsIHN0YXQpOw0KIH0NCiANCkBAIC0yMjEsMTIgKzIzMSwy
MiBAQA0KIGludCBpZGVfbXVsdHdyaXRlIChpZGVfZHJpdmVfdCAqZHJpdmUs
IHVuc2lnbmVkIGludCBtY291bnQpDQogew0KICAJaWRlX2h3Z3JvdXBfdAkq
aHdncm91cD0gSFdHUk9VUChkcml2ZSk7DQorDQorCS8qDQorCSAqCVRoaXMg
bWF5IGxvb2sgYSBiaXQgb2RkLCBidXQgcmVtZW1iZXIgd3JxIGlzIGEgY29w
eSBvZiB0aGUNCisJICoJcmVxdWVzdCBub3QgdGhlIG9yaWdpbmFsLiBUaGUg
cG9pbnRlcnMgYXJlIHJlYWwgaG93ZXZlciBzbyB0aGUNCisJICoJYmgncyBh
cmUgbm90IGNvcGllcy4gUmVtZW1iZXIgdGhhdCBvciBiYWQgc3R1ZmYgd2ls
bCBoYXBwZW4NCisJICoNCisJICoJQXQgdGhlIHBvaW50IHdlIGFyZSBjYWxs
ZWQgdGhlIGRyaXZlIGhhcyBhc2tlZCB1cyBmb3IgdGhlDQorCSAqCWRhdGEs
IGFuZCBpdHMgb3VyIGpvYiB0byBmZWVkIGl0LCB3YWxraW5nIGFjcm9zcyBi
aCBib3VuZGFyaWVzDQorCSAqCWlmIG5lZWQgYmUuDQorCSAqLw0KKw0KICAJ
c3RydWN0IHJlcXVlc3QJKnJxID0gJmh3Z3JvdXAtPndycTsNCiANCiAgIAlk
byB7DQogIAkJdW5zaWduZWQgbG9uZyBmbGFnczsNCiAgIAkJdW5zaWduZWQg
aW50IG5zZWN0ID0gcnEtPmN1cnJlbnRfbnJfc2VjdG9yczsNCi0NCiAJCWlm
IChuc2VjdCA+IG1jb3VudCkNCiAJCQluc2VjdCA9IG1jb3VudDsNCiAJCW1j
b3VudCAtPSBuc2VjdDsNCkBAIC0yNDEsOSArMjYxLDExIEBADQogI2lmZGVm
IENPTkZJR19CTEtfREVWX1BEQzQwMzANCiAJCXJxLT5zZWN0b3IgKz0gbnNl
Y3Q7DQogI2VuZGlmDQotCQlpZiAoKHJxLT5ucl9zZWN0b3JzIC09IG5zZWN0
KSA8PSAwKSB7DQorCQlpZiAoKChsb25nKShycS0+bnJfc2VjdG9ycyAtPSBu
c2VjdCkpIDw9IDApIHsNCisjaWZkZWYgREVCVUcNCiAJCQlwcmludGsoIiVz
OiBtdWx0d3JpdGU6IGNvdW50PSVkLCBjdXJyZW50PSVsZFxuIiwNCiAJCQkJ
ZHJpdmUtPm5hbWUsIG5zZWN0LCBycS0+bnJfc2VjdG9ycyk7DQorI2VuZGlm
DQogCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9fcmVxdWVzdF9sb2Nr
LCBmbGFncyk7DQogCQkJYnJlYWs7DQogCQl9DQpAQCAtMjUzLDExICsyNzUs
MTQgQEANCiAJCQkJcnEtPmJ1ZmZlciAgICAgICAgICAgICA9IHJxLT5iaC0+
Yl9kYXRhOw0KIAkJCX0gZWxzZSB7DQogCQkJCXNwaW5fdW5sb2NrX2lycXJl
c3RvcmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3MpOw0KLQkJCQlwcmludGso
IiVzOiBidWZmZXIgbGlzdCBjb3JydXB0ZWRcbiIsIGRyaXZlLT5uYW1lKTsN
CisJCQkJcHJpbnRrKCIlczogYnVmZmVyIGxpc3QgY29ycnVwdGVkICglbGQs
ICVsZCwgJWQpXG4iLA0KKwkJCQkJZHJpdmUtPm5hbWUsIHJxLT5jdXJyZW50
X25yX3NlY3RvcnMsDQorCQkJCQlycS0+bnJfc2VjdG9ycywgbnNlY3QpOw0K
IAkJCQlpZGVfZW5kX3JlcXVlc3QoMCwgaHdncm91cCk7DQogCQkJCXJldHVy
biAxOw0KIAkJCX0NCiAJCX0gZWxzZSB7DQorCQkJLyogRml4IHRoZSBwb2lu
dGVyLi4gd2UgYXRlIGRhdGEgKi8NCiAJCQlycS0+YnVmZmVyICs9IG5zZWN0
IDw8IDk7DQogCQl9DQogICAgICAgICAgICAgICAgIHNwaW5fdW5sb2NrX2ly
cXJlc3RvcmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3MpOw0KQEAgLTI3Nyw2
ICszMDIsMTAgQEANCiANCiAJaWYgKE9LX1NUQVQoc3RhdD1HRVRfU1RBVCgp
LERSSVZFX1JFQURZLGRyaXZlLT5iYWRfd3N0YXQpKSB7DQogCQlpZiAoc3Rh
dCAmIERSUV9TVEFUKSB7DQorCQkJLyoNCisJCQkgKglUaGUgZHJpdmUgd2Fu
dHMgZGF0YS4gUmVtZW1iZXIgcnEgaXMgdGhlIGNvcHkNCisJCQkgKglvZiB0
aGUgcmVxdWVzdA0KKwkJCSAqLw0KIAkJCWlmIChycS0+bnJfc2VjdG9ycykg
ew0KIAkJCQlpZiAoaWRlX211bHR3cml0ZShkcml2ZSwgZHJpdmUtPm11bHRf
Y291bnQpKQ0KIAkJCQkJcmV0dXJuIGlkZV9zdG9wcGVkOw0KQEAgLTI4NCw2
ICszMTMsMTAgQEANCiAJCQkJcmV0dXJuIGlkZV9zdGFydGVkOw0KIAkJCX0N
CiAJCX0gZWxzZSB7DQorCQkJLyoNCisJCQkgKglJZiB0aGUgY29weSBoYXMg
YWxsIHRoZSBibG9ja3MgY29tcGxldGVkIHRoZW4NCisJCQkgKgl3ZSBjYW4g
ZW5kIHRoZSBvcmlnaW5hbCByZXF1ZXN0Lg0KKwkJCSAqLw0KIAkJCWlmICgh
cnEtPm5yX3NlY3RvcnMpIHsJLyogYWxsIGRvbmU/ICovDQogCQkJCXJxID0g
aHdncm91cC0+cnE7DQogCQkJCWZvciAoaSA9IHJxLT5ucl9zZWN0b3JzOyBp
ID4gMDspew0KQEAgLTI5Myw2ICszMjYsNyBAQA0KIAkJCQlyZXR1cm4gaWRl
X3N0b3BwZWQ7DQogCQkJfQ0KIAkJfQ0KKwkJcmV0dXJuIGlkZV9zdG9wcGVk
OwkvKiB0aGUgb3JpZ2luYWwgY29kZSBkaWQgdGhpcyBoZXJlICg/KSAqLw0K
IAl9DQogCXJldHVybiBpZGVfZXJyb3IoZHJpdmUsICJtdWx0d3JpdGVfaW50
ciIsIHN0YXQpOw0KIH0NCkBAIC0zMDIsMTMgKzMzNiw5IEBADQogICovDQog
c3RhdGljIGlkZV9zdGFydHN0b3BfdCBzZXRfbXVsdG1vZGVfaW50ciAoaWRl
X2RyaXZlX3QgKmRyaXZlKQ0KIHsNCi0JYnl0ZSBzdGF0ID0gR0VUX1NUQVQo
KTsNCisJYnl0ZSBzdGF0Ow0KIA0KLSNpZiAwDQotCWlmIChPS19TVEFUKHN0
YXQsUkVBRFlfU1RBVCxCQURfU1RBVCkgfHwgZHJpdmUtPm11bHRfcmVxID09
IDApIHsNCi0jZWxzZQ0KLQlpZiAoT0tfU1RBVChzdGF0LFJFQURZX1NUQVQs
QkFEX1NUQVQpKSB7DQotI2VuZGlmDQorCWlmIChPS19TVEFUKHN0YXQ9R0VU
X1NUQVQoKSxSRUFEWV9TVEFULEJBRF9TVEFUKSkgew0KIAkJZHJpdmUtPm11
bHRfY291bnQgPSBkcml2ZS0+bXVsdF9yZXE7DQogCX0gZWxzZSB7DQogCQlk
cml2ZS0+bXVsdF9yZXEgPSBkcml2ZS0+bXVsdF9jb3VudCA9IDA7DQpAQCAt
MzIzLDExICszNTMsMTYgQEANCiAgKi8NCiBzdGF0aWMgaWRlX3N0YXJ0c3Rv
cF90IHNldF9nZW9tZXRyeV9pbnRyIChpZGVfZHJpdmVfdCAqZHJpdmUpDQog
ew0KLQlieXRlIHN0YXQgPSBHRVRfU1RBVCgpOw0KKwlieXRlIHN0YXQ7DQog
DQotCWlmICghT0tfU1RBVChzdGF0LFJFQURZX1NUQVQsQkFEX1NUQVQpKQ0K
KwlpZiAoT0tfU1RBVChzdGF0PUdFVF9TVEFUKCksUkVBRFlfU1RBVCxCQURf
U1RBVCkpDQorCQlyZXR1cm4gaWRlX3N0b3BwZWQ7DQorDQorCWlmIChzdGF0
ICYgKEVSUl9TVEFUfERSUV9TVEFUKSkNCiAJCXJldHVybiBpZGVfZXJyb3Io
ZHJpdmUsICJzZXRfZ2VvbWV0cnlfaW50ciIsIHN0YXQpOw0KLQlyZXR1cm4g
aWRlX3N0b3BwZWQ7DQorDQorCWlkZV9zZXRfaGFuZGxlcihkcml2ZSwgJnNl
dF9nZW9tZXRyeV9pbnRyLCBXQUlUX0NNRCwgTlVMTCk7DQorCXJldHVybiBp
ZGVfc3RhcnRlZDsJDQogfQ0KIA0KIC8qDQpAQCAtNDE5LDYgKzQ1NCw4IEBA
DQogCQkJICogb2YgZGF0YSB0byBiZSB3cml0dGVuLiAgSWYgd2UgaGl0IGFu
IGVycm9yIChjb3JydXB0ZWQgYnVmZmVyIGxpc3QpDQogCQkJICogaW4gaWRl
X211bHR3cml0ZSgpLCB0aGVuIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBoYW5k
bGVyL3RpbWVyDQogCQkJICogYmVmb3JlIHJldHVybmluZy4gIEZvcnR1bmF0
ZWx5LCB0aGlzIE5FVkVSIGhhcHBlbnMgKHJpZ2h0PykuDQorCQkJICoNCisJ
CQkgKiBFeGNlcHQgd2hlbiB5b3UgZ2V0IGFuIGVycm9yIGl0IHNlZW1zLi4u
DQogCQkJICovDQogCQkJaHdncm91cC0+d3JxID0gKnJxOyAvKiBzY3JhdGNo
cGFkICovDQogCQkJaWRlX3NldF9oYW5kbGVyIChkcml2ZSwgJm11bHR3cml0
ZV9pbnRyLCBXQUlUX0NNRCwgTlVMTCk7DQpkaWZmIC11ck4gbGludXgtMi4z
LjM0LXByaXN0aW5lL2RyaXZlcnMvYmxvY2svaWRlLWZlYXR1cmVzLmMgbGlu
dXgvZHJpdmVycy9ibG9jay9pZGUtZmVhdHVyZXMuYw0KLS0tIGxpbnV4LTIu
My4zNC1wcmlzdGluZS9kcml2ZXJzL2Jsb2NrL2lkZS1mZWF0dXJlcy5jCVR1
ZSBEZWMgMTQgMjM6MDM6NTAgMTk5OQ0KKysrIGxpbnV4L2RyaXZlcnMvYmxv
Y2svaWRlLWZlYXR1cmVzLmMJVGh1IERlYyAzMCAwNDoyODo0MyAxOTk5DQpA
QCAtMjEzLDYgKzIxMywyMiBAQA0KIAlyZXR1cm4gMDsNCiB9DQogDQorI2lm
IDANCitpZGVfc3RhcnRzdG9wX3Qgc2V0X2RyaXZlX3NwZWVkX2ludHIgKGlk
ZV9kcml2ZV90ICpkcml2ZSkNCit7DQorCWJ5dGUgc3RhdDsNCisNCisJaWYg
KCFPS19TVEFUKHN0YXQ9R0VUX1NUQVQoKSxSRUFEWV9TVEFULEJBRF9TVEFU
KSkNCisvKg0KKyAqCWlmICghT0tfU1RBVChzdGF0PUdFVF9TVEFUKCksRFJJ
VkVfUkVBRFksQkFEX1NUQVQpKQ0KKyAqCWlmIChzdGF0ICE9IERSSVZFX1JF
QURZKQ0KKyAqLw0KKwkJKHZvaWQpIGlkZV9kdW1wX3N0YXR1cyhkcml2ZSwg
InNldF9kcml2ZV9zcGVlZF9zdGF0dXMiLCBzdGF0KTsNCisNCisJcmV0dXJu
IGlkZV9zdG9wcGVkOw0KK30NCisjZW5kaWYNCisNCiBpbnQgaWRlX2NvbmZp
Z19kcml2ZV9zcGVlZCAoaWRlX2RyaXZlX3QgKmRyaXZlLCBieXRlIHNwZWVk
KQ0KIHsNCiAJdW5zaWduZWQgbG9uZyBmbGFnczsNCkBAIC0yNDMsNiArMjU5
LDEwIEBADQogI2VuZGlmDQogDQogCV9fcmVzdG9yZV9mbGFncyhmbGFncyk7
CS8qIGxvY2FsIENQVSBvbmx5ICovDQorDQorI2lmIDANCisJaWRlX3NldF9o
YW5kbGVyKGRyaXZlLCAmc2V0X2RyaXZlX3NwZWVkX2ludHIsIFdBSVRfQ01E
LCBOVUxMKTsNCisjZW5kaWYNCiANCiAJc3RhdCA9IEdFVF9TVEFUKCk7DQog
CWlmIChzdGF0ICE9IERSSVZFX1JFQURZKQ0KZGlmZiAtdXJOIGxpbnV4LTIu
My4zNC1wcmlzdGluZS9kcml2ZXJzL2Jsb2NrL2lkZS1nZW9tZXRyeS5jIGxp
bnV4L2RyaXZlcnMvYmxvY2svaWRlLWdlb21ldHJ5LmMNCi0tLSBsaW51eC0y
LjMuMzQtcHJpc3RpbmUvZHJpdmVycy9ibG9jay9pZGUtZ2VvbWV0cnkuYwlU
aHUgTm92IDE4IDE5OjEyOjI2IDE5OTkNCisrKyBsaW51eC9kcml2ZXJzL2Js
b2NrL2lkZS1nZW9tZXRyeS5jCVRodSBEZWMgMzAgMDQ6Mjg6NDMgMTk5OQ0K
QEAgLTYwLDYgKzYwLDcgQEANCiAJLyogRXh0cmFjdCBkcml2ZSBnZW9tZXRy
eSBmcm9tIENNT1MrQklPUyBpZiBub3QgYWxyZWFkeSBzZXR1cCAqLw0KIAlm
b3IgKHVuaXQgPSAwOyB1bml0IDwgTUFYX0RSSVZFUzsgKyt1bml0KSB7DQog
CQlpZGVfZHJpdmVfdCAqZHJpdmUgPSAmaHdpZi0+ZHJpdmVzW3VuaXRdOw0K
KyNpZiAwDQogCQlpZiAoKGNtb3NfZGlza3MgJiAoMHhmMCA+PiAodW5pdCo0
KSkpICYmDQogCQkgICAgIWRyaXZlLT5wcmVzZW50ICYmICFkcml2ZS0+bm9i
aW9zKSB7DQogCQkJZHJpdmUtPmN5bCAgID0gZHJpdmUtPmJpb3NfY3lsICA9
ICoodW5zaWduZWQgc2hvcnQgKilCSU9TOw0KQEAgLTY3LDYgKzY4LDIyIEBA
DQogCQkJZHJpdmUtPnNlY3QgID0gZHJpdmUtPmJpb3Nfc2VjdCA9ICooQklP
UysxNCk7DQogCQkJZHJpdmUtPmN0bCAgID0gKihCSU9TKzgpOw0KIAkJfQ0K
KyNlbHNlDQorCQlpZiAoKGNtb3NfZGlza3MgJiAoMHhmMCA+PiAodW5pdCo0
KSkpDQorCQkgICAmJiAhZHJpdmUtPnByZXNlbnQgJiYgIWRyaXZlLT5ub2Jp
b3MpIHsNCisJCQl1bnNpZ25lZCBzaG9ydCBjeWwgPSAqKHVuc2lnbmVkIHNo
b3J0ICopQklPUzsNCisJCQl1bnNpZ25lZCBjaGFyIGhlYWQgPSAqKEJJT1Mr
Mik7DQorCQkJdW5zaWduZWQgY2hhciBzZWN0ID0gKihCSU9TKzE0KTsNCisJ
CQlpZiAoY3lsID4gMCAmJiBoZWFkID4gMCAmJiBzZWN0ID4gMCAmJiBzZWN0
IDwgNjQpIHsNCisJCQkJZHJpdmUtPmN5bCAgID0gZHJpdmUtPmJpb3NfY3ls
ICA9IGN5bDsNCisJCQkJZHJpdmUtPmhlYWQgID0gZHJpdmUtPmJpb3NfaGVh
ZCA9IGhlYWQ7DQorCQkJCWRyaXZlLT5zZWN0ICA9IGRyaXZlLT5iaW9zX3Nl
Y3QgPSBzZWN0Ow0KKwkJCQlkcml2ZS0+Y3RsICAgPSAqKEJJT1MrOCk7DQor
CQkJfSBlbHNlIHsNCisJCQkJcHJpbnRrKCJoZCVkOiBDL0gvUz0lZC8lZC8l
ZCBmcm9tIEJJT1MgaWdub3JlZFxuIiwgdW5pdCwgY3lsLCBoZWFkLCBzZWN0
KTsNCisJCQl9DQorCQl9DQorI2VuZGlmDQogCQlCSU9TICs9IDE2Ow0KIAl9
DQogI2VuZGlmDQpkaWZmIC11ck4gbGludXgtMi4zLjM0LXByaXN0aW5lL2Ry
aXZlcnMvYmxvY2svaWRlLXBjaS5jIGxpbnV4L2RyaXZlcnMvYmxvY2svaWRl
LXBjaS5jDQotLS0gbGludXgtMi4zLjM0LXByaXN0aW5lL2RyaXZlcnMvYmxv
Y2svaWRlLXBjaS5jCVR1ZSBEZWMgMTQgMjM6MDM6NTAgMTk5OQ0KKysrIGxp
bnV4L2RyaXZlcnMvYmxvY2svaWRlLXBjaS5jCVRodSBEZWMgMzAgMDc6NTE6
MjEgMTk5OQ0KQEAgLTQxLDYgKzQxLDcgQEANCiAjZGVmaW5lIERFVklEX0NN
RDY0MAkoKGlkZV9wY2lfZGV2aWRfdCl7UENJX1ZFTkRPUl9JRF9DTUQsICAg
ICBQQ0lfREVWSUNFX0lEX0NNRF82NDB9KQ0KICNkZWZpbmUgREVWSURfQ01E
NjQzCSgoaWRlX3BjaV9kZXZpZF90KXtQQ0lfVkVORE9SX0lEX0NNRCwgICAg
IFBDSV9ERVZJQ0VfSURfQ01EXzY0M30pDQogI2RlZmluZSBERVZJRF9DTUQ2
NDYJKChpZGVfcGNpX2RldmlkX3Qpe1BDSV9WRU5ET1JfSURfQ01ELCAgICAg
UENJX0RFVklDRV9JRF9DTURfNjQ2fSkNCisjZGVmaW5lIERFVklEX0NNRDY0
OAkoKGlkZV9wY2lfZGV2aWRfdCl7UENJX1ZFTkRPUl9JRF9DTUQsICAgICBQ
Q0lfREVWSUNFX0lEX0NNRF82NDh9KQ0KICNkZWZpbmUgREVWSURfU0lTNTUx
MwkoKGlkZV9wY2lfZGV2aWRfdCl7UENJX1ZFTkRPUl9JRF9TSSwgICAgICBQ
Q0lfREVWSUNFX0lEX1NJXzU1MTN9KQ0KICNkZWZpbmUgREVWSURfT1BUSTYy
MQkoKGlkZV9wY2lfZGV2aWRfdCl7UENJX1ZFTkRPUl9JRF9PUFRJLCAgICBQ
Q0lfREVWSUNFX0lEX09QVElfODJDNjIxfSkNCiAjZGVmaW5lIERFVklEX09Q
VEk2MjFWCSgoaWRlX3BjaV9kZXZpZF90KXtQQ0lfVkVORE9SX0lEX09QVEks
ICAgIFBDSV9ERVZJQ0VfSURfT1BUSV84MkM1NTh9KQ0KQEAgLTkzLDE1ICs5
NCwyNCBAQA0KICNkZWZpbmUgRE1BX0FMSTE1WDMJTlVMTA0KICNlbmRpZg0K
IA0KLSNpZmRlZiBDT05GSUdfQkxLX0RFVl9DTUQ2NDYNCi1leHRlcm4gdm9p
ZCBpZGVfaW5pdF9jbWQ2NDYoaWRlX2h3aWZfdCAqKTsNCi0jZGVmaW5lIElO
SVRfQ01ENjQ2CSZpZGVfaW5pdF9jbWQ2NDYNCisjaWZkZWYgQ09ORklHX0JM
S19ERVZfQ01ENjRYDQorZXh0ZXJuIHVuc2lnbmVkIGludCBwY2lfaW5pdF9j
bWQ2NHgoc3RydWN0IHBjaV9kZXYgKiwgY29uc3QgY2hhciAqKTsNCitleHRl
cm4gdW5zaWduZWQgaW50IGF0YTY2X2NtZDY0eChpZGVfaHdpZl90ICopOw0K
K2V4dGVybiB2b2lkIGlkZV9pbml0X2NtZDY0eChpZGVfaHdpZl90ICopOw0K
K2V4dGVybiB2b2lkIGlkZV9kbWFjYXBhYmxlX2NtZDY0eChpZGVfaHdpZl90
ICosIHVuc2lnbmVkIGxvbmcpOw0KKyNkZWZpbmUgUENJX0NNRDY0WAkmcGNp
X2luaXRfY21kNjR4DQorI2RlZmluZSBBVEE2Nl9DTUQ2NFgJJmF0YTY2X2Nt
ZDY0eA0KKyNkZWZpbmUgSU5JVF9DTUQ2NFgJJmlkZV9pbml0X2NtZDY0eA0K
KyNkZWZpbmUgRE1BX0NNRDY0WAkmaWRlX2RtYWNhcGFibGVfY21kNjR4DQog
I2Vsc2UNCisjZGVmaW5lIFBDSV9DTUQ2NFgJTlVMTA0KKyNkZWZpbmUgQVRB
NjZfQ01ENjRYCU5VTEwNCiAjaWZkZWYgX19zcGFyY192OV9fDQotI2RlZmlu
ZSBJTklUX0NNRDY0NglJREVfSUdOT1JFDQorI2RlZmluZSBJTklUX0NNRDY0
WAlJREVfSUdOT1JFDQogI2Vsc2UNCi0jZGVmaW5lIElOSVRfQ01ENjQ2CU5V
TEwNCisjZGVmaW5lIElOSVRfQ01ENjRYCU5VTEwNCiAjZW5kaWYNCisjZGVm
aW5lIERNQV9DTUQ2NFgJTlVMTA0KICNlbmRpZg0KIA0KICNpZmRlZiBDT05G
SUdfQkxLX0RFVl9DWTgyQzY5Mw0KQEAgLTEyOCw2ICsxMzgsNyBAQA0KIA0K
ICNpZmRlZiBDT05GSUdfQkxLX0RFVl9IUFQzNjYNCiBleHRlcm4gYnl0ZSBo
cHQzNjNfc2hhcmVkX2lycTsNCitleHRlcm4gYnl0ZSBocHQzNjNfc2hhcmVk
X3BpbjsNCiBleHRlcm4gdW5zaWduZWQgaW50IHBjaV9pbml0X2hwdDM2Nihz
dHJ1Y3QgcGNpX2RldiAqLCBjb25zdCBjaGFyICopOw0KIGV4dGVybiB1bnNp
Z25lZCBpbnQgYXRhNjZfaHB0MzY2KGlkZV9od2lmX3QgKik7DQogZXh0ZXJu
IHZvaWQgaWRlX2luaXRfaHB0MzY2KGlkZV9od2lmX3QgKik7DQpAQCAtMTM4
LDYgKzE0OSw3IEBADQogI2RlZmluZSBETUFfSFBUMzY2CSZpZGVfZG1hY2Fw
YWJsZV9ocHQzNjYNCiAjZWxzZQ0KIHN0YXRpYyBieXRlIGhwdDM2M19zaGFy
ZWRfaXJxID0gMDsNCitzdGF0aWMgYnl0ZSBocHQzNjNfc2hhcmVkX3BpbiA9
IDA7DQogI2RlZmluZSBQQ0lfSFBUMzY2CU5VTEwNCiAjZGVmaW5lIEFUQTY2
X0hQVDM2NglOVUxMDQogI2RlZmluZSBJTklUX0hQVDM2NglOVUxMDQpAQCAt
MjcxLDggKzI4Myw5IEBADQogCXtERVZJRF9DTUQ2NDAsCSJDTUQ2NDAiLAlO
VUxMLAkJTlVMTCwJCUlERV9JR05PUkUsCU5VTEwsCQl7ezB4MDAsMHgwMCww
eDAwfSwgezB4MDAsMHgwMCwweDAwfX0sIAlPTl9CT0FSRCwJMCB9LA0KIAl7
REVWSURfTlM4NzQxMCwJIk5TODc0MTAiLAlOVUxMLAkJTlVMTCwJCU5VTEws
CQlOVUxMLAkJe3sweDQzLDB4MDgsMHgwOH0sIHsweDQ3LDB4MDgsMHgwOH19
LCAJT05fQk9BUkQsCTAgfSwNCiAJe0RFVklEX1NJUzU1MTMsCSJTSVM1NTEz
IiwJUENJX1NJUzU1MTMsCUFUQTY2X1NJUzU1MTMsCUlOSVRfU0lTNTUxMywJ
TlVMTCwJCXt7MHg0YSwweDAyLDB4MDJ9LCB7MHg0YSwweDA0LDB4MDR9fSwg
CU9OX0JPQVJELAkwIH0sDQotCXtERVZJRF9DTUQ2NDMsCSJDTUQ2NDMiLAlO
VUxMLAkJTlVMTCwJCU5VTEwsCQlOVUxMLAkJe3sweDAwLDB4MDAsMHgwMH0s
IHsweDAwLDB4MDAsMHgwMH19LAlPTl9CT0FSRCwJMCB9LA0KLQl7REVWSURf
Q01ENjQ2LAkiQ01ENjQ2IiwJTlVMTCwJCU5VTEwsCQlJTklUX0NNRDY0NiwJ
TlVMTCwJCXt7MHgwMCwweDAwLDB4MDB9LCB7MHg1MSwweDgwLDB4ODB9fSwg
CU9OX0JPQVJELAkwIH0sDQorCXtERVZJRF9DTUQ2NDMsCSJDTUQ2NDMiLAlQ
Q0lfQ01ENjRYLAlOVUxMLAkJSU5JVF9DTUQ2NFgsCU5VTEwsCQl7ezB4MDAs
MHgwMCwweDAwfSwgezB4MDAsMHgwMCwweDAwfX0sCU9OX0JPQVJELAkwIH0s
DQorCXtERVZJRF9DTUQ2NDYsCSJDTUQ2NDYiLAlQQ0lfQ01ENjRYLAlOVUxM
LAkJSU5JVF9DTUQ2NFgsCU5VTEwsCQl7ezB4MDAsMHgwMCwweDAwfSwgezB4
NTEsMHg4MCwweDgwfX0sIAlPTl9CT0FSRCwJMCB9LA0KKwl7REVWSURfQ01E
NjQ4LAkiQ01ENjQ4IiwJUENJX0NNRDY0WCwJQVRBNjZfQ01ENjRYLAlJTklU
X0NNRDY0WCwJRE1BX0NNRDY0WCwJe3sweDAwLDB4MDAsMHgwMH0sIHsweDAw
LDB4MDAsMHgwMH19LAlPTl9CT0FSRCwJMCB9LA0KIAl7REVWSURfSFQ2NTY1
LAkiSFQ2NTY1IiwJTlVMTCwJCU5VTEwsCQlOVUxMLAkJTlVMTCwJCXt7MHgw
MCwweDAwLDB4MDB9LCB7MHgwMCwweDAwLDB4MDB9fSwgCU9OX0JPQVJELAkw
IH0sDQogCXtERVZJRF9PUFRJNjIxLAkiT1BUSTYyMSIsCU5VTEwsCQlOVUxM
LAkJSU5JVF9PUFRJNjIxLAlOVUxMLAkJe3sweDQ1LDB4ODAsMHgwMH0sIHsw
eDQwLDB4MDgsMHgwMH19LCAJT05fQk9BUkQsCTAgfSwNCiAJe0RFVklEX09Q
VEk2MjFYLCJPUFRJNjIxWCIsCU5VTEwsCQlOVUxMLAkJSU5JVF9PUFRJNjIx
LAlOVUxMLAkJe3sweDQ1LDB4ODAsMHgwMH0sIHsweDQwLDB4MDgsMHgwMH19
LCAJT05fQk9BUkQsCTAgfSwNCkBAIC00OTYsNiArNTA5LDEwIEBADQogCQlw
cmludGsoIiVzOiBiYWQgaXJxICglZCk6IHdpbGwgcHJvYmUgbGF0ZXJcbiIs
IGQtPm5hbWUsIHBjaWlycSk7DQogCQlwY2lpcnEgPSAwOw0KIAl9IGVsc2Ug
ew0KKyNpZmRlZiBDT05GSUdfQkxLX0RFVl9DTUQ2NFgNCisJCWlmIChkLT5p
bml0X2NoaXBzZXQpDQorCQkJKHZvaWQpIGQtPmluaXRfY2hpcHNldChkZXYs
IGQtPm5hbWUpOw0KKyNlbmRpZg0KICNpZmRlZiBfX3NwYXJjX18NCiAJCXBy
aW50aygiJXM6IDEwMCUlIG5hdGl2ZSBtb2RlIG9uIGlycSAlc1xuIiwNCiAJ
CSAgICAgICBkLT5uYW1lLCBfX2lycV9pdG9hKHBjaWlycSkpOw0KQEAgLTY0
Miw4ICs2NTksOSBAQA0KIAkJICAgIChQQ0lfRlVOQyhmaW5kZXYtPmRldmZu
KSAmIDEpKSB7DQogCQkJZGV2MiA9IGZpbmRldjsNCiAJCQlwY2lfcmVhZF9j
b25maWdfYnl0ZShkZXYyLCBQQ0lfSU5URVJSVVBUX1BJTiwgJnBpbjIpOw0K
LQkJCWhwdDM2M19zaGFyZWRfaXJxID0gKHBpbjEgIT0gcGluMikgPyAxIDog
MDsNCi0JCQlpZiAoaHB0MzYzX3NoYXJlZF9pcnEpIHsNCisJCQlocHQzNjNf
c2hhcmVkX3BpbiA9IChwaW4xICE9IHBpbjIpID8gMSA6IDA7DQorCQkJaHB0
MzYzX3NoYXJlZF9pcnEgPSAoZGV2LT5pcnEgPT0gZGV2Mi0+aXJxKSA/IDEg
OiAwOw0KKwkJCWlmIChocHQzNjNfc2hhcmVkX3BpbiAmJiBocHQzNjNfc2hh
cmVkX2lycSkgew0KIAkJCQlkLT5ib290YWJsZSA9IE9OX0JPQVJEOw0KIAkJ
CQlwcmludGsoIiVzOiBvbmJvYXJkIHZlcnNpb24gb2YgY2hpcHNldCwgcGlu
MT0lZCBwaW4yPSVkXG4iLCBkLT5uYW1lLCBwaW4xLCBwaW4yKTsNCiAJCQl9
DQpAQCAtNjU2LDYgKzY3NCwxNSBAQA0KIAkJcmV0dXJuOw0KIAlkMiA9IGQ7
DQogCXByaW50aygiJXM6IElERSBjb250cm9sbGVyIG9uIFBDSSBidXMgJTAy
eCBkZXYgJTAyeFxuIiwgZDItPm5hbWUsIGRldjItPmJ1cy0+bnVtYmVyLCBk
ZXYyLT5kZXZmbik7DQorI2lmbmRlZiBIUFQzNjZfTU9ERTMNCisJaWYgKGhw
dDM2M19zaGFyZWRfcGluICYmICFocHQzNjNfc2hhcmVkX2lycSkgew0KKwkJ
cHJpbnRrKCIlczogSURFIGNvbnRyb2xsZXIgcnVuIHVuc3VwcG9ydGVkIG1v
ZGUgdGhyZWUhISFcbiIsIGQyLT5uYW1lKTsNCisJCXByaW50aygiJXM6IElE
RSBjb250cm9sbGVyIHJlcG9ydCB0byA8YW5kcmVAc3VzZS5jb20+XG4iLCBk
LT5uYW1lKTsNCisJCXJldHVybjsNCisJfQ0KKyNlbHNlIC8qIEhQVDM2Nl9N
T0RFMyAqLw0KKw0KKyNlbmRpZiAvKiBIUFQzNjZfTU9ERTMgKi8NCiAJaWRl
X3NldHVwX3BjaV9kZXZpY2UoZGV2MiwgZDIpOw0KIH0NCiANCmRpZmYgLXVy
TiBsaW51eC0yLjMuMzQtcHJpc3RpbmUvZHJpdmVycy9ibG9jay9pZGUtdGFw
ZS5jIGxpbnV4L2RyaXZlcnMvYmxvY2svaWRlLXRhcGUuYw0KLS0tIGxpbnV4
LTIuMy4zNC1wcmlzdGluZS9kcml2ZXJzL2Jsb2NrL2lkZS10YXBlLmMJVHVl
IERlYyAxNCAyMzowMzo1MCAxOTk5DQorKysgbGludXgvZHJpdmVycy9ibG9j
ay9pZGUtdGFwZS5jCVRodSBEZWMgMzAgMDQ6Mjg6NDMgMTk5OQ0KQEAgLTEs
NSArMSw1IEBADQogLyoNCi0gKiBsaW51eC9kcml2ZXJzL2Jsb2NrL2lkZS10
YXBlLmMJVmVyc2lvbiAxLjE2ZQkJT2N0ICAgMywgMTk5OQ0KKyAqIGxpbnV4
L2RyaXZlcnMvYmxvY2svaWRlLXRhcGUuYwlWZXJzaW9uIDEuMTZmCQlEZWMg
IDE1LCAxOTk5DQogICoNCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTUgLSAxOTk5
IEdhZGkgT3htYW4gPGdhZGlvQG5ldHZpc2lvbi5uZXQuaWw+DQogICoNCkBA
IC0yMjQsNiArMjI0LDcgQEANCiAgKiAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgdGhlIHRhcGUgYmxvY2sgc2l6ZSBpcyBsYXJnZXIgdGhhbiBQQUdF
X1NJWkUuDQogICogICAgICAgICAgICAgICAgICAgICAgIERlY3JlYXNlIHRo
ZSBkZWZhdWx0IGRpc2Nvbm5lY3Rpb24gdGltZSB0byB0bi4NCiAgKiBWZXIg
MS4xNmUgT2N0ICAzIDk5ICAgTWlub3IgZml4ZXMuDQorICogVmVyIDEuMTZm
IERlYyAxNSA5OSAgIENoYW5nZSBwbGFjZSBvZiB0aGUgc2Vjb25kYXJ5IE9u
U3RyZWFtIGhlYWRlciBmcmFtZXMuDQogICoNCiAgKiBIZXJlIGFyZSBzb21l
IHdvcmRzIGZyb20gdGhlIGZpcnN0IHJlbGVhc2VzIG9mIGhkLmMsIHdoaWNo
IGFyZSBxdW90ZWQNCiAgKiBpbiBpZGUuYyBhbmQgYXBwbHkgaGVyZSBhcyB3
ZWxsOg0KQEAgLTI5NTIsNyArMjk1Myw3IEBADQogCXBjLT5jYWxsYmFjayA9
ICZpZGV0YXBlX3BjX2NhbGxiYWNrOw0KIH0NCiANCi1zdGF0aWMgaW50IGlk
ZXRhcGVfd2FpdF9yZWFkeShpZGVfZHJpdmVfdCAqZHJpdmUsIHVuc2lnbmVk
IGxvbmcgbG9uZyB0aW1lb3V0KQ0KK3N0YXRpYyBpbnQgaWRldGFwZV93YWl0
X3JlYWR5IChpZGVfZHJpdmVfdCAqZHJpdmUsIHVuc2lnbmVkIGxvbmcgbG9u
ZyB0aW1lb3V0KQ0KIHsNCiAJaWRldGFwZV90YXBlX3QgKnRhcGUgPSBkcml2
ZS0+ZHJpdmVyX2RhdGE7DQogCWlkZXRhcGVfcGNfdCBwYzsNCkBAIC0zMDEy
LDcgKzMwMTMsNyBAQA0KIAlwYy0+Y2FsbGJhY2sgPSAmaWRldGFwZV9yZWFk
X3Bvc2l0aW9uX2NhbGxiYWNrOw0KIH0NCiANCi1zdGF0aWMgaW50IGlkZXRh
cGVfcmVhZF9wb3NpdGlvbihpZGVfZHJpdmVfdCAqZHJpdmUpDQorc3RhdGlj
IGludCBpZGV0YXBlX3JlYWRfcG9zaXRpb24gKGlkZV9kcml2ZV90ICpkcml2
ZSkNCiB7DQogCWlkZXRhcGVfdGFwZV90ICp0YXBlID0gZHJpdmUtPmRyaXZl
cl9kYXRhOw0KIAlpZGV0YXBlX3BjX3QgcGM7DQpAQCAtMzA1NCw3ICszMDU1
LDcgQEANCiAJcGMtPmNhbGxiYWNrID0gJmlkZXRhcGVfcGNfY2FsbGJhY2s7
DQogfQ0KIA0KLXN0YXRpYyB2b2lkIGlkZXRhcGVfY3JlYXRlX3ByZXZlbnRf
Y21kKGlkZV9kcml2ZV90ICpkcml2ZSwgaWRldGFwZV9wY190ICpwYywgaW50
IHByZXZlbnQpDQorc3RhdGljIHZvaWQgaWRldGFwZV9jcmVhdGVfcHJldmVu
dF9jbWQgKGlkZV9kcml2ZV90ICpkcml2ZSwgaWRldGFwZV9wY190ICpwYywg
aW50IHByZXZlbnQpDQogew0KIAlpZGV0YXBlX2luaXRfcGMocGMpOw0KIAlw
Yy0+Y1swXSA9IElERVRBUEVfUFJFVkVOVF9DTUQ7DQpAQCAtMzE0MCw3ICsz
MTQxLDcgQEANCiAJfQ0KIH0NCiANCi1zdGF0aWMgdm9pZCBpZGV0YXBlX3Vw
ZGF0ZV9zdGF0cyhpZGVfZHJpdmVfdCAqZHJpdmUpDQorc3RhdGljIHZvaWQg
aWRldGFwZV91cGRhdGVfc3RhdHMgKGlkZV9kcml2ZV90ICpkcml2ZSkNCiB7
DQogCWlkZXRhcGVfcGNfdCBwYzsNCiANCkBAIC0zMTkyLDcgKzMxOTMsNyBA
QA0KICAqIG9mIHRoZSB3cml0ZSBlcnJvciByZWNvdmVyeSBtZWNoYW5pc20g
Zm9yIG9sZCBPblN0cmVhbQ0KICAqIGZpcm13YXJlIHJldmlzaW9ucy4NCiAg
Ki8NCi1zdGF0aWMgdm9pZCBpZGV0YXBlX29uc3RyZWFtX3JlYWRfYmFja19i
dWZmZXIoaWRlX2RyaXZlX3QgKmRyaXZlKQ0KK3N0YXRpYyB2b2lkIGlkZXRh
cGVfb25zdHJlYW1fcmVhZF9iYWNrX2J1ZmZlciAoaWRlX2RyaXZlX3QgKmRy
aXZlKQ0KIHsNCiAJaWRldGFwZV90YXBlX3QgKnRhcGUgPSBkcml2ZS0+ZHJp
dmVyX2RhdGE7DQogCWludCBmcmFtZXMsIGksIGxvZ2ljYWxfYmxrX251bTsN
CkBAIC0zMjQ0LDcgKzMyNDUsNyBAQA0KIC8qDQogICogRXJyb3IgcmVjb3Zl
cnkgYWxnb3JpdGhtIGZvciB0aGUgT25TdHJlYW0gdGFwZS4NCiAgKi8NCi1z
dGF0aWMgdm9pZCBpZGV0YXBlX29uc3RyZWFtX3dyaXRlX2Vycm9yX3JlY292
ZXJ5KGlkZV9kcml2ZV90ICpkcml2ZSkNCitzdGF0aWMgdm9pZCBpZGV0YXBl
X29uc3RyZWFtX3dyaXRlX2Vycm9yX3JlY292ZXJ5IChpZGVfZHJpdmVfdCAq
ZHJpdmUpDQogew0KIAlpZGV0YXBlX3RhcGVfdCAqdGFwZSA9IGRyaXZlLT5k
cml2ZXJfZGF0YTsNCiAJdW5zaWduZWQgaW50IGJsb2NrOw0KQEAgLTMyOTcs
NyArMzI5OCw3IEBADQogCX0NCiB9DQogDQotc3RhdGljIHZvaWQgaWRldGFw
ZV9jcmVhdGVfaW5xdWlyeV9jbWQoaWRldGFwZV9wY190ICpwYykNCitzdGF0
aWMgdm9pZCBpZGV0YXBlX2NyZWF0ZV9pbnF1aXJ5X2NtZCAoaWRldGFwZV9w
Y190ICpwYykNCiB7DQogCWlkZXRhcGVfaW5pdF9wYyhwYyk7DQogCXBjLT5j
WzBdID0gSURFVEFQRV9JTlFVSVJZX0NNRDsNCkBAIC0zMzUwLDcgKzMzNTEs
NyBAQA0KIC8qDQogICogVmVyaWZ5IHRoYXQgd2UgaGF2ZSB0aGUgY29ycmVj
dCB0YXBlIGZyYW1lDQogICovDQotc3RhdGljIGludCBpZGV0YXBlX3Zlcmlm
eV9zdGFnZShpZGVfZHJpdmVfdCAqZHJpdmUsIGlkZXRhcGVfc3RhZ2VfdCAq
c3RhZ2UsIGludCBsb2dpY2FsX2Jsa19udW0sIGludCBxdWlldCkNCitzdGF0
aWMgaW50IGlkZXRhcGVfdmVyaWZ5X3N0YWdlIChpZGVfZHJpdmVfdCAqZHJp
dmUsIGlkZXRhcGVfc3RhZ2VfdCAqc3RhZ2UsIGludCBsb2dpY2FsX2Jsa19u
dW0sIGludCBxdWlldCkNCiB7DQogCWlkZXRhcGVfdGFwZV90ICp0YXBlID0g
ZHJpdmUtPmRyaXZlcl9kYXRhOw0KIAlvc19hdXhfdCAqYXV4ID0gc3RhZ2Ut
PmF1eDsNCkBAIC0zNDIzLDcgKzM0MjQsNyBAQA0KIAlyZXR1cm4gMTsNCiB9
DQogDQotc3RhdGljIHZvaWQgaWRldGFwZV93YWl0X2ZpcnN0X3N0YWdlKGlk
ZV9kcml2ZV90ICpkcml2ZSkNCitzdGF0aWMgdm9pZCBpZGV0YXBlX3dhaXRf
Zmlyc3Rfc3RhZ2UgKGlkZV9kcml2ZV90ICpkcml2ZSkNCiB7DQogCWlkZXRh
cGVfdGFwZV90ICp0YXBlID0gZHJpdmUtPmRyaXZlcl9kYXRhOw0KIAl1bnNp
Z25lZCBsb25nIGZsYWdzOw0KQEAgLTM2MTQsNyArMzYxNSw3IEBADQogI2Vu
ZGlmIC8qIElERVRBUEVfREVCVUdfQlVHUyAqLw0KIH0NCiANCi1zdGF0aWMg
dm9pZCBpZGV0YXBlX3Jlc3RhcnRfc3BlZWRfY29udHJvbChpZGVfZHJpdmVf
dCAqZHJpdmUpDQorc3RhdGljIHZvaWQgaWRldGFwZV9yZXN0YXJ0X3NwZWVk
X2NvbnRyb2wgKGlkZV9kcml2ZV90ICpkcml2ZSkNCiB7DQogCWlkZXRhcGVf
dGFwZV90ICp0YXBlID0gZHJpdmUtPmRyaXZlcl9kYXRhOw0KIA0KQEAgLTM2
MjksNyArMzYzMCw3IEBADQogCXRhcGUtPmNvbnRyb2xsZWRfcHJldmlvdXNf
aGVhZF90aW1lID0gdGFwZS0+dW5jb250cm9sbGVkX3ByZXZpb3VzX2hlYWRf
dGltZSA9IGppZmZpZXM7DQogfQ0KIA0KLXN0YXRpYyBpbnQgaWRldGFwZV9p
bml0aWF0ZV9yZWFkKGlkZV9kcml2ZV90ICpkcml2ZSwgaW50IG1heF9zdGFn
ZXMpDQorc3RhdGljIGludCBpZGV0YXBlX2luaXRpYXRlX3JlYWQgKGlkZV9k
cml2ZV90ICpkcml2ZSwgaW50IG1heF9zdGFnZXMpDQogew0KIAlpZGV0YXBl
X3RhcGVfdCAqdGFwZSA9IGRyaXZlLT5kcml2ZXJfZGF0YTsNCiAJaWRldGFw
ZV9zdGFnZV90ICpuZXdfc3RhZ2U7DQpAQCAtMzY5OCw3ICszNjk5LDcgQEAN
CiAJcmV0dXJuIDA7DQogfQ0KIA0KLXN0YXRpYyBpbnQgaWRldGFwZV9nZXRf
bG9naWNhbF9ibGsoaWRlX2RyaXZlX3QgKmRyaXZlLCBpbnQgbG9naWNhbF9i
bGtfbnVtLCBpbnQgbWF4X3N0YWdlcywgaW50IHF1aWV0KQ0KK3N0YXRpYyBp
bnQgaWRldGFwZV9nZXRfbG9naWNhbF9ibGsgKGlkZV9kcml2ZV90ICpkcml2
ZSwgaW50IGxvZ2ljYWxfYmxrX251bSwgaW50IG1heF9zdGFnZXMsIGludCBx
dWlldCkNCiB7DQogCWlkZXRhcGVfdGFwZV90ICp0YXBlID0gZHJpdmUtPmRy
aXZlcl9kYXRhOw0KIAl1bnNpZ25lZCBsb25nIGZsYWdzOw0KQEAgLTQwMDEs
NyArNDAwMiw3IEBADQogICoNCiAgKiBKdXN0IHNjYW5zIGZvciB0aGUgZmls
ZW1hcmsgc2VxdWVudGlhbGx5Lg0KICAqLw0KLXN0YXRpYyBpbnQgaWRldGFw
ZV9vbnN0cmVhbV9zcGFjZV9vdmVyX2ZpbGVtYXJrc19mb3J3YXJkX3Nsb3co
aWRlX2RyaXZlX3QgKmRyaXZlLHNob3J0IG10X29wLGludCBtdF9jb3VudCkN
CitzdGF0aWMgaW50IGlkZXRhcGVfb25zdHJlYW1fc3BhY2Vfb3Zlcl9maWxl
bWFya3NfZm9yd2FyZF9zbG93IChpZGVfZHJpdmVfdCAqZHJpdmUsc2hvcnQg
bXRfb3AsaW50IG10X2NvdW50KQ0KIHsNCiAJaWRldGFwZV90YXBlX3QgKnRh
cGUgPSBkcml2ZS0+ZHJpdmVyX2RhdGE7DQogCWludCBjbnQgPSAwOw0KQEAg
LTQwNDMsNyArNDA0NCw3IEBADQogLyoNCiAgKiBGYXN0IGxpbnV4IHNwZWNp
ZmljIHZlcnNpb24gb2YgT25TdHJlYW0gRlNGDQogICovDQotc3RhdGljIGlu
dCBpZGV0YXBlX29uc3RyZWFtX3NwYWNlX292ZXJfZmlsZW1hcmtzX2Zvcndh
cmRfZmFzdChpZGVfZHJpdmVfdCAqZHJpdmUsc2hvcnQgbXRfb3AsaW50IG10
X2NvdW50KQ0KK3N0YXRpYyBpbnQgaWRldGFwZV9vbnN0cmVhbV9zcGFjZV9v
dmVyX2ZpbGVtYXJrc19mb3J3YXJkX2Zhc3QgKGlkZV9kcml2ZV90ICpkcml2
ZSxzaG9ydCBtdF9vcCxpbnQgbXRfY291bnQpDQogew0KIAlpZGV0YXBlX3Rh
cGVfdCAqdGFwZSA9IGRyaXZlLT5kcml2ZXJfZGF0YTsNCiAJaW50IGNudCA9
IDAsIG5leHRfbWFya19hZGRyOw0KQEAgLTQyOTMsNyArNDI5NCw3IEBADQog
CXJldHVybiBhY3R1YWxseV9yZWFkOw0KIH0NCiANCi1zdGF0aWMgdm9pZCBp
ZGV0YXBlX3VwZGF0ZV9sYXN0X21hcmtlcihpZGVfZHJpdmVfdCAqZHJpdmUs
IGludCBsYXN0X21hcmtfYWRkciwgaW50IG5leHRfbWFya19hZGRyKQ0KK3N0
YXRpYyB2b2lkIGlkZXRhcGVfdXBkYXRlX2xhc3RfbWFya2VyIChpZGVfZHJp
dmVfdCAqZHJpdmUsIGludCBsYXN0X21hcmtfYWRkciwgaW50IG5leHRfbWFy
a19hZGRyKQ0KIHsNCiAJaWRldGFwZV90YXBlX3QgKnRhcGUgPSBkcml2ZS0+
ZHJpdmVyX2RhdGE7DQogCWlkZXRhcGVfc3RhZ2VfdCAqc3RhZ2U7DQpAQCAt
NDM0NCw3ICs0MzQ1LDcgQEANCiAJcmV0dXJuOw0KIH0NCiANCi1zdGF0aWMg
dm9pZCBfX2lkZXRhcGVfd3JpdGVfaGVhZGVyKGlkZV9kcml2ZV90ICpkcml2
ZSwgaW50IGJsb2NrLCBpbnQgY250KQ0KK3N0YXRpYyB2b2lkIF9faWRldGFw
ZV93cml0ZV9oZWFkZXIgKGlkZV9kcml2ZV90ICpkcml2ZSwgaW50IGJsb2Nr
LCBpbnQgY250KQ0KIHsNCiAJaWRldGFwZV90YXBlX3QgKnRhcGUgPSBkcml2
ZS0+ZHJpdmVyX2RhdGE7DQogCWlkZXRhcGVfc3RhZ2VfdCAqc3RhZ2U7DQpA
QCAtNDM3OCw3ICs0Mzc5LDcgQEANCiAJaWRldGFwZV9mbHVzaF90YXBlX2J1
ZmZlcnMgKGRyaXZlKTsNCiB9DQogDQotc3RhdGljIHZvaWQgaWRldGFwZV93
cml0ZV9oZWFkZXIoaWRlX2RyaXZlX3QgKmRyaXZlLCBpbnQgbG9jYXRlX2Vv
ZCkNCitzdGF0aWMgdm9pZCBpZGV0YXBlX3dyaXRlX2hlYWRlciAoaWRlX2Ry
aXZlX3QgKmRyaXZlLCBpbnQgbG9jYXRlX2VvZCkNCiB7DQogCWlkZXRhcGVf
dGFwZV90ICp0YXBlID0gZHJpdmUtPmRyaXZlcl9kYXRhOw0KIA0KQEAgLTQz
ODksNyArNDM5MCw3IEBADQogCQlyZXR1cm47DQogCXRhcGUtPnVwZGF0ZV9m
cmFtZV9jbnRyKys7DQogCV9faWRldGFwZV93cml0ZV9oZWFkZXIoZHJpdmUs
IDUsIDUpOw0KLQlfX2lkZXRhcGVfd3JpdGVfaGVhZGVyKGRyaXZlLCAweGJi
MiwgNik7DQorCV9faWRldGFwZV93cml0ZV9oZWFkZXIoZHJpdmUsIDB4YmFl
LCA1KTsNCiAJaWYgKGxvY2F0ZV9lb2QpIHsNCiAjaWYgT05TVFJFQU1fREVC
VUcNCiAJCXByaW50ayhLRVJOX0lORk8gImlkZS10YXBlOiAlczogbG9jYXRp
bmcgYmFjayB0byBlb2QgZnJhbWUgYWRkciAlZFxuIiwgdGFwZS0+bmFtZSwg
dGFwZS0+ZW9kX2ZyYW1lX2FkZHIpOw0KQEAgLTQ1MTIsNyArNDUxMyw3IEBA
DQogCXJldHVybiAoYWN0dWFsbHlfd3JpdHRlbik7DQogfQ0KIA0KLXN0YXRp
YyBpbnQgaWRldGFwZV93cml0ZV9maWxlbWFyayhpZGVfZHJpdmVfdCAqZHJp
dmUpDQorc3RhdGljIGludCBpZGV0YXBlX3dyaXRlX2ZpbGVtYXJrIChpZGVf
ZHJpdmVfdCAqZHJpdmUpDQogew0KIAlpZGV0YXBlX3RhcGVfdCAqdGFwZSA9
IGRyaXZlLT5kcml2ZXJfZGF0YTsNCiAJaW50IGxhc3RfbWFya19hZGRyOw0K
QEAgLTQ1NDMsNyArNDU0NCw3IEBADQogCXJldHVybiAwOw0KIH0NCiANCi1z
dGF0aWMgdm9pZCBpZGV0YXBlX3dyaXRlX2VvZChpZGVfZHJpdmVfdCAqZHJp
dmUpDQorc3RhdGljIHZvaWQgaWRldGFwZV93cml0ZV9lb2QgKGlkZV9kcml2
ZV90ICpkcml2ZSkNCiB7DQogCWlkZXRhcGVfdGFwZV90ICp0YXBlID0gZHJp
dmUtPmRyaXZlcl9kYXRhOw0KIA0KQEAgLTQ1NjAsNyArNDU2MSw3IEBADQog
CXJldHVybjsNCiB9DQogDQotaW50IGlkZXRhcGVfc2Vla19sb2dpY2FsX2Js
ayhpZGVfZHJpdmVfdCAqZHJpdmUsIGludCBsb2dpY2FsX2Jsa19udW0pDQor
aW50IGlkZXRhcGVfc2Vla19sb2dpY2FsX2JsayAoaWRlX2RyaXZlX3QgKmRy
aXZlLCBpbnQgbG9naWNhbF9ibGtfbnVtKQ0KIHsNCiAJaWRldGFwZV90YXBl
X3QgKnRhcGUgPSBkcml2ZS0+ZHJpdmVyX2RhdGE7DQogCWludCBlc3RpbWF0
ZWRfYWRkcmVzcyA9IGxvZ2ljYWxfYmxrX251bSArIDIwOw0KQEAgLTQ4OTAs
NyArNDg5MSw3IEBADQogCX0NCiB9DQogDQotc3RhdGljIGludCBfX2lkZXRh
cGVfYW5hbHl6ZV9oZWFkZXJzKGlkZV9kcml2ZV90ICpkcml2ZSwgaW50IGJs
b2NrKQ0KK3N0YXRpYyBpbnQgX19pZGV0YXBlX2FuYWx5emVfaGVhZGVycyAo
aWRlX2RyaXZlX3QgKmRyaXZlLCBpbnQgYmxvY2spDQogew0KIAlpZGV0YXBl
X3RhcGVfdCAqdGFwZSA9IGRyaXZlLT5kcml2ZXJfZGF0YTsNCiAJaWRldGFw
ZV9zdGFnZV90ICpzdGFnZTsNCkBAIC00OTUyLDcgKzQ5NTMsNyBAQA0KIAly
ZXR1cm4gMTsNCiB9DQogDQotc3RhdGljIGludCBpZGV0YXBlX2FuYWx5emVf
aGVhZGVycyhpZGVfZHJpdmVfdCAqZHJpdmUpDQorc3RhdGljIGludCBpZGV0
YXBlX2FuYWx5emVfaGVhZGVycyAoaWRlX2RyaXZlX3QgKmRyaXZlKQ0KIHsN
CiAJaWRldGFwZV90YXBlX3QgKnRhcGUgPSBkcml2ZS0+ZHJpdmVyX2RhdGE7
DQogCWludCBwb3NpdGlvbiwgYmxvY2s7DQpAQCAtNDk2Niw3ICs0OTY3LDcg
QEANCiAJZm9yIChibG9jayA9IDU7IGJsb2NrIDwgMTA7IGJsb2NrKyspDQog
CQlpZiAoX19pZGV0YXBlX2FuYWx5emVfaGVhZGVycyhkcml2ZSwgYmxvY2sp
KQ0KIAkJCWdvdG8gb2s7DQotCWZvciAoYmxvY2sgPSAweGJiMjsgYmxvY2sg
PCAweGJiODsgYmxvY2srKykNCisJZm9yIChibG9jayA9IDB4YmFlOyBibG9j
ayA8IDB4YmI4OyBibG9jaysrKQ0KIAkJaWYgKF9faWRldGFwZV9hbmFseXpl
X2hlYWRlcnMoZHJpdmUsIGJsb2NrKSkNCiAJCQlnb3RvIG9rOw0KIAlwcmlu
dGsoS0VSTl9FUlIgImlkZS10YXBlOiAlczogZmFpbGVkIHRvIGZpbmQgdmFs
aWQgQURSTCBoZWFkZXJcbiIsIHRhcGUtPm5hbWUpOw0KQEAgLTUyMjEsNyAr
NTIyMiw3IEBADQogLyoNCiAgKiBOb3RpZnkgdmVuZG9yIElEIHRvIHRoZSBP
blN0cmVhbSB0YXBlIGRyaXZlDQogICovDQotc3RhdGljIHZvaWQgaWRldGFw
ZV9vbnN0cmVhbV9zZXRfdmVuZG9yKGlkZV9kcml2ZV90ICpkcml2ZSwgY2hh
ciAqdmVuZG9yKQ0KK3N0YXRpYyB2b2lkIGlkZXRhcGVfb25zdHJlYW1fc2V0
X3ZlbmRvciAoaWRlX2RyaXZlX3QgKmRyaXZlLCBjaGFyICp2ZW5kb3IpDQog
ew0KIAlpZGV0YXBlX3BjX3QgcGM7DQogCWlkZXRhcGVfbW9kZV9wYXJhbWV0
ZXJfaGVhZGVyX3QgKmhlYWRlcjsNCkBAIC01MjQ4LDcgKzUyNDksNyBAQA0K
ICAqIFZhcmlvdXMgdW51c2VkIE9uU3RyZWFtIGNvbW1hbmRzDQogICovDQog
I2lmIE9OU1RSRUFNX0RFQlVHDQotc3RhdGljIHZvaWQgaWRldGFwZV9vbnN0
cmVhbV9zZXRfcmV0cmllcyhpZGVfZHJpdmVfdCAqZHJpdmUsIGludCByZXRy
aWVzKQ0KK3N0YXRpYyB2b2lkIGlkZXRhcGVfb25zdHJlYW1fc2V0X3JldHJp
ZXMgKGlkZV9kcml2ZV90ICpkcml2ZSwgaW50IHJldHJpZXMpDQogew0KIAlp
ZGV0YXBlX3BjX3QgcGM7DQogDQpAQCAtNTI2OSw3ICs1MjcwLDcgQEANCiAv
Kg0KICAqIENvbmZpZ3VyZSAzMi41S0IgYmxvY2sgc2l6ZS4NCiAgKi8NCi1z
dGF0aWMgdm9pZCBpZGV0YXBlX29uc3RyZWFtX2NvbmZpZ3VyZV9ibG9ja19z
aXplKGlkZV9kcml2ZV90ICpkcml2ZSkNCitzdGF0aWMgdm9pZCBpZGV0YXBl
X29uc3RyZWFtX2NvbmZpZ3VyZV9ibG9ja19zaXplIChpZGVfZHJpdmVfdCAq
ZHJpdmUpDQogew0KIAlpZGV0YXBlX3BjX3QgcGM7DQogCWlkZXRhcGVfbW9k
ZV9wYXJhbWV0ZXJfaGVhZGVyX3QgKmhlYWRlcjsNCkBAIC01MzE1LDcgKzUz
MTYsNyBAQA0KIC8qDQogICogVXNlIElOUVVJUlkgdG8gZ2V0IHRoZSBmaXJt
d2FyZSByZXZpc2lvbg0KICAqLw0KLXN0YXRpYyB2b2lkIGlkZXRhcGVfZ2V0
X2lucXVpcnlfcmVzdWx0cyhpZGVfZHJpdmVfdCAqZHJpdmUpDQorc3RhdGlj
IHZvaWQgaWRldGFwZV9nZXRfaW5xdWlyeV9yZXN1bHRzIChpZGVfZHJpdmVf
dCAqZHJpdmUpDQogew0KIAljaGFyICpyOw0KIAlpZGV0YXBlX3RhcGVfdCAq
dGFwZSA9IGRyaXZlLT5kcml2ZXJfZGF0YTsNCkBAIC01MzQ1LDcgKzUzNDYs
NyBAQA0KIC8qDQogICogQ29uZmlndXJlIHRoZSBPblN0cmVhbSBBVEFQSSB0
YXBlIGRyaXZlIGZvciBkZWZhdWx0IG9wZXJhdGlvbg0KICAqLw0KLXN0YXRp
YyB2b2lkIGlkZXRhcGVfY29uZmlndXJlX29uc3RyZWFtKGlkZV9kcml2ZV90
ICpkcml2ZSkNCitzdGF0aWMgdm9pZCBpZGV0YXBlX2NvbmZpZ3VyZV9vbnN0
cmVhbSAoaWRlX2RyaXZlX3QgKmRyaXZlKQ0KIHsNCiAJaWRldGFwZV90YXBl
X3QgKnRhcGUgPSBkcml2ZS0+ZHJpdmVyX2RhdGE7DQogDQpAQCAtNTQ0MCw3
ICs1NDQxLDcgQEANCiAjZW5kaWYgLyogSURFVEFQRV9ERUJVR19MT0cgKi8N
CiB9DQogDQotc3RhdGljIHZvaWQgaWRldGFwZV9hZGRfc2V0dGluZ3MoaWRl
X2RyaXZlX3QgKmRyaXZlKQ0KK3N0YXRpYyB2b2lkIGlkZXRhcGVfYWRkX3Nl
dHRpbmdzIChpZGVfZHJpdmVfdCAqZHJpdmUpDQogew0KIAlpZGV0YXBlX3Rh
cGVfdCAqdGFwZSA9IGRyaXZlLT5kcml2ZXJfZGF0YTsNCiANCmRpZmYgLXVy
TiBsaW51eC0yLjMuMzQtcHJpc3RpbmUvZHJpdmVycy9ibG9jay9pZGUuYyBs
aW51eC9kcml2ZXJzL2Jsb2NrL2lkZS5jDQotLS0gbGludXgtMi4zLjM0LXBy
aXN0aW5lL2RyaXZlcnMvYmxvY2svaWRlLmMJVGh1IERlYyAxNiAxNzo0Njow
OSAxOTk5DQorKysgbGludXgvZHJpdmVycy9ibG9jay9pZGUuYwlUaHUgRGVj
IDMwIDA0OjI4OjQzIDE5OTkNCkBAIC0xLDUgKzEsNSBAQA0KIC8qDQotICog
IGxpbnV4L2RyaXZlcnMvYmxvY2svaWRlLmMJCVZlcnNpb24gNi4yMQlOb3Zl
bWJlciA5LCAxOTk5DQorICogIGxpbnV4L2RyaXZlcnMvYmxvY2svaWRlLmMJ
CVZlcnNpb24gNi4zMAlEZWMgMjYsIDE5OTkNCiAgKg0KICAqICBDb3B5cmln
aHQgKEMpIDE5OTQtMTk5OCAgTGludXMgVG9ydmFsZHMgJiBhdXRob3JzIChz
ZWUgYmVsb3cpDQogICovDQpAQCAtMTA4LDYgKzEwOCw3IEBADQogICoJCQkg
IFNwZWNpZmljYWxseSBQcm9taXNlJ3MgUERDMjAyNjIgY2hpcHNldC4NCiAg
KiBWZXJzaW9uIDYuMjEJCUZpeGluZy9GaXhlZCBTTVAgc3BpbmxvY2sgaXNz
dWUgd2l0aCBpbnNpZ2h0IGZyb20gYW4gb2xkDQogICoJCQkgIGhhdCB0aGF0
IGNsYXJpZmllZCBvcmlnaW5hbCBsb3cgbGV2ZWwgZHJpdmVyIGRlc2lnbi4N
CisgKiBWZXJzaW9uIDYuMzAJCUFkZGVkIFNNUCBzdXBwb3J0OyBmaXhlZCBt
dWx0bW9kZSBpc3N1ZXMuICAtbWwNCiAgKg0KICAqICBTb21lIGFkZGl0aW9u
YWwgZHJpdmVyIGNvbXBpbGUtdGltZSBvcHRpb25zIGFyZSBpbiAuL2luY2x1
ZGUvbGludXgvaWRlLmgNCiAgKg0KQEAgLTExNiw4ICsxMTcsOCBAQA0KICAq
DQogICovDQogDQotI2RlZmluZQlSRVZJU0lPTgkiUmV2aXNpb246IDYuMjEi
DQotI2RlZmluZQlWRVJTSU9OCQkiSWQ6IGlkZS5jIDYuMjEgMTk5OS8xMS8x
MCINCisjZGVmaW5lCVJFVklTSU9OCSJSZXZpc2lvbjogNi4zMCINCisjZGVm
aW5lCVZFUlNJT04JCSJJZDogaWRlLmMgNi4zMCAxOTk5LzEyLzI2Ig0KIA0K
ICN1bmRlZiBSRUFMTFlfU0xPV19JTwkJLyogbW9zdCBzeXN0ZW1zIGNhbiBz
YWZlbHkgdW5kZWYgdGhpcyAqLw0KIA0KQEAgLTY2OSw3ICs2NzAsNyBAQA0K
ICAqICh1cCB0byAzMCBzZWNvbmRzIHdvcnN0Y2FzZSkuICBTbywgaW5zdGVh
ZCBvZiBidXN5LXdhaXRpbmcgaGVyZSBmb3IgaXQsDQogICogd2Ugc2V0IGEg
dGltZXIgdG8gcG9sbCBhdCA1MG1zIGludGVydmFscy4NCiAgKi8NCi1zdGF0
aWMgaWRlX3N0YXJ0c3RvcF90IGRvX3Jlc2V0MSAoaWRlX2RyaXZlX3QgKmRy
aXZlLCBpbnQgIGRvX25vdF90cnlfYXRhcGkpDQorc3RhdGljIGlkZV9zdGFy
dHN0b3BfdCBkb19yZXNldDEgKGlkZV9kcml2ZV90ICpkcml2ZSwgaW50IGRv
X25vdF90cnlfYXRhcGkpDQogew0KIAl1bnNpZ25lZCBpbnQgdW5pdDsNCiAJ
dW5zaWduZWQgbG9uZyBmbGFnczsNCkBAIC0xMjEzLDcgKzEyMTQsNyBAQA0K
ICAqIHRoZSBkcml2ZXIuICBUaGlzIG1ha2VzIHRoZSBkcml2ZXIgbXVjaCBt
b3JlIGZyaWVuZGxpZXIgdG8gc2hhcmVkIElSUXMNCiAgKiB0aGFuIHByZXZp
b3VzIGRlc2lnbnMsIHdoaWxlIHJlbWFpbmluZyAxMDAlICg/KSBTTVAgc2Fm
ZSBhbmQgY2FwYWJsZS4NCiAgKi8NCi1zdGF0aWMgdm9pZCBpZGVfZG9fcmVx
dWVzdCAoaWRlX2h3Z3JvdXBfdCAqaHdncm91cCkNCitzdGF0aWMgdm9pZCBp
ZGVfZG9fcmVxdWVzdCAoaWRlX2h3Z3JvdXBfdCAqaHdncm91cCwgaW50IG1h
c2tlZF9pcnEpDQogew0KIAlzdHJ1Y3QgYmxrX2Rldl9zdHJ1Y3QgKmJkZXY7
DQogCWlkZV9kcml2ZV90CSpkcml2ZTsNCkBAIC0xMjcyLDE0ICsxMjczLDMw
IEBADQogCQlkcml2ZS0+c2VydmljZV9zdGFydCA9IGppZmZpZXM7DQogDQog
CQliZGV2ID0gJmJsa19kZXZbaHdpZi0+bWFqb3JdOw0KLQkJaWYoIGJkZXYt
PnJlcXVlc3RfcXVldWUucGx1Z2dlZCApCS8qIEZJWE1FOiBwYXJhbm9pYSAq
Lw0KKwkJaWYgKCBiZGV2LT5yZXF1ZXN0X3F1ZXVlLnBsdWdnZWQgKQkvKiBG
SVhNRTogcGFyYW5vaWEgKi8NCiAJCQlwcmludGsoIiVzOiBIdWg/IG51a2lu
ZyBwbHVnZ2VkIHF1ZXVlXG4iLCBkcml2ZS0+bmFtZSk7DQogCQliZGV2LT5y
ZXF1ZXN0X3F1ZXVlLmN1cnJlbnRfcmVxdWVzdCA9IGh3Z3JvdXAtPnJxID0g
ZHJpdmUtPnF1ZXVlLmN1cnJlbnRfcmVxdWVzdDsNCisJCS8qDQorCQkgKiBT
b21lIHN5c3RlbXMgaGF2ZSB0cm91YmxlIHdpdGggSURFIElSUXMgYXJyaXZp
bmcgd2hpbGUNCisJCSAqIHRoZSBkcml2ZXIgaXMgc3RpbGwgc2V0dGluZyB0
aGluZ3MgdXAuICBTbywgaGVyZSB3ZSBkaXNhYmxlDQorCQkgKiB0aGUgSVJR
IHVzZWQgYnkgdGhpcyBpbnRlcmZhY2Ugd2hpbGUgdGhlIHJlcXVlc3QgaXMg
YmVpbmcgc3RhcnRlZC4NCisJCSAqIFRoaXMgbWF5IGxvb2sgYmFkIGF0IGZp
cnN0LCBidXQgcHJldHR5IG11Y2ggdGhlIHNhbWUgdGhpbmcNCisJCSAqIGhh
cHBlbnMgYW55d2F5IHdoZW4gYW55IGludGVycnVwdCBjb21lcyBpbiwgSURF
IG9yIG90aGVyd2lzZQ0KKwkJICogIC0tIHRoZSBrZXJuZWwgbWFza3MgdGhl
IElSUSB3aGlsZSBpdCBpcyBiZWluZyBoYW5kbGVkLg0KKwkJICovDQorCQlp
ZiAoaHdpZi0+aXJxICE9IG1hc2tlZF9pcnEpDQorCQkJZGlzYWJsZV9pcnFf
bm9zeW5jKGh3aWYtPmlycSk7DQogCQlzcGluX3VubG9jaygmaW9fcmVxdWVz
dF9sb2NrKTsNCisjaWYgMA0KIAkJaWYgKCFod2lmLT5zZXJpYWxpemVkKQkv
KiBwbGF5IGl0IHNhZmUgd2l0aCBidWdneSBoYXJkd2FyZSAqLw0KIAkJCWlk
ZV9fc3RpKCk7DQorI2Vsc2UNCisJCWlkZV9fc3RpKCk7CS8qIGFsbG93IG90
aGVyIElSUXMgd2hpbGUgd2Ugc3RhcnQgdGhpcyByZXF1ZXN0ICovDQorI2Vu
ZGlmDQogCQlzdGFydHN0b3AgPSBzdGFydF9yZXF1ZXN0KGRyaXZlKTsNCiAJ
CXNwaW5fbG9ja19pcnEoJmlvX3JlcXVlc3RfbG9jayk7DQorCQlpZiAoaHdp
Zi0+aXJxICE9IG1hc2tlZF9pcnEpDQorCQkJZW5hYmxlX2lycShod2lmLT5p
cnEpOw0KIAkJaWYgKHN0YXJ0c3RvcCA9PSBpZGVfc3RvcHBlZCkNCiAJCQlo
d2dyb3VwLT5idXN5ID0gMDsNCiAJfQ0KQEAgLTEyOTcsNjkgKzEzMTQsNjkg
QEANCiANCiB2b2lkIGRvX2lkZTBfcmVxdWVzdCAocmVxdWVzdF9xdWV1ZV90
ICpxKQ0KIHsNCi0JaWRlX2RvX3JlcXVlc3QgKGlkZV9od2lmc1swXS5od2dy
b3VwKTsNCisJaWRlX2RvX3JlcXVlc3QgKGlkZV9od2lmc1swXS5od2dyb3Vw
LCAwKTsNCiB9DQogDQogI2lmIE1BWF9IV0lGUyA+IDENCiB2b2lkIGRvX2lk
ZTFfcmVxdWVzdCAocmVxdWVzdF9xdWV1ZV90ICpxKQ0KIHsNCi0JaWRlX2Rv
X3JlcXVlc3QgKGlkZV9od2lmc1sxXS5od2dyb3VwKTsNCisJaWRlX2RvX3Jl
cXVlc3QgKGlkZV9od2lmc1sxXS5od2dyb3VwLCAwKTsNCiB9DQogI2VuZGlm
IC8qIE1BWF9IV0lGUyA+IDEgKi8NCiANCiAjaWYgTUFYX0hXSUZTID4gMg0K
IHZvaWQgZG9faWRlMl9yZXF1ZXN0IChyZXF1ZXN0X3F1ZXVlX3QgKnEpDQog
ew0KLQlpZGVfZG9fcmVxdWVzdCAoaWRlX2h3aWZzWzJdLmh3Z3JvdXApOw0K
KwlpZGVfZG9fcmVxdWVzdCAoaWRlX2h3aWZzWzJdLmh3Z3JvdXAsIDApOw0K
IH0NCiAjZW5kaWYgLyogTUFYX0hXSUZTID4gMiAqLw0KIA0KICNpZiBNQVhf
SFdJRlMgPiAzDQogdm9pZCBkb19pZGUzX3JlcXVlc3QgKHJlcXVlc3RfcXVl
dWVfdCAqcSkNCiB7DQotCWlkZV9kb19yZXF1ZXN0IChpZGVfaHdpZnNbM10u
aHdncm91cCk7DQorCWlkZV9kb19yZXF1ZXN0IChpZGVfaHdpZnNbM10uaHdn
cm91cCwgMCk7DQogfQ0KICNlbmRpZiAvKiBNQVhfSFdJRlMgPiAzICovDQog
DQogI2lmIE1BWF9IV0lGUyA+IDQNCiB2b2lkIGRvX2lkZTRfcmVxdWVzdCAo
cmVxdWVzdF9xdWV1ZV90ICpxKQ0KIHsNCi0JaWRlX2RvX3JlcXVlc3QgKGlk
ZV9od2lmc1s0XS5od2dyb3VwKTsNCisJaWRlX2RvX3JlcXVlc3QgKGlkZV9o
d2lmc1s0XS5od2dyb3VwLCAwKTsNCiB9DQogI2VuZGlmIC8qIE1BWF9IV0lG
UyA+IDQgKi8NCiANCiAjaWYgTUFYX0hXSUZTID4gNQ0KIHZvaWQgZG9faWRl
NV9yZXF1ZXN0IChyZXF1ZXN0X3F1ZXVlX3QgKnEpDQogew0KLQlpZGVfZG9f
cmVxdWVzdCAoaWRlX2h3aWZzWzVdLmh3Z3JvdXApOw0KKwlpZGVfZG9fcmVx
dWVzdCAoaWRlX2h3aWZzWzVdLmh3Z3JvdXAsIDApOw0KIH0NCiAjZW5kaWYg
LyogTUFYX0hXSUZTID4gNSAqLw0KIA0KICNpZiBNQVhfSFdJRlMgPiA2DQog
dm9pZCBkb19pZGU2X3JlcXVlc3QgKHJlcXVlc3RfcXVldWVfdCAqcSkNCiB7
DQotCWlkZV9kb19yZXF1ZXN0IChpZGVfaHdpZnNbNl0uaHdncm91cCk7DQor
CWlkZV9kb19yZXF1ZXN0IChpZGVfaHdpZnNbNl0uaHdncm91cCwgMCk7DQog
fQ0KICNlbmRpZiAvKiBNQVhfSFdJRlMgPiA2ICovDQogDQogI2lmIE1BWF9I
V0lGUyA+IDcNCiB2b2lkIGRvX2lkZTdfcmVxdWVzdCAocmVxdWVzdF9xdWV1
ZV90ICpxKQ0KIHsNCi0JaWRlX2RvX3JlcXVlc3QgKGlkZV9od2lmc1s3XS5o
d2dyb3VwKTsNCisJaWRlX2RvX3JlcXVlc3QgKGlkZV9od2lmc1s3XS5od2dy
b3VwLCAwKTsNCiB9DQogI2VuZGlmIC8qIE1BWF9IV0lGUyA+IDcgKi8NCiAN
CiAjaWYgTUFYX0hXSUZTID4gOA0KIHZvaWQgZG9faWRlOF9yZXF1ZXN0IChy
ZXF1ZXN0X3F1ZXVlX3QgKnEpDQogew0KLQlpZGVfZG9fcmVxdWVzdCAoaWRl
X2h3aWZzWzhdLmh3Z3JvdXApOw0KKwlpZGVfZG9fcmVxdWVzdCAoaWRlX2h3
aWZzWzhdLmh3Z3JvdXAsIDApOw0KIH0NCiAjZW5kaWYgLyogTUFYX0hXSUZT
ID4gOCAqLw0KIA0KICNpZiBNQVhfSFdJRlMgPiA5DQogdm9pZCBkb19pZGU5
X3JlcXVlc3QgKHJlcXVlc3RfcXVldWVfdCAqcSkNCiB7DQotCWlkZV9kb19y
ZXF1ZXN0IChpZGVfaHdpZnNbOV0uaHdncm91cCk7DQorCWlkZV9kb19yZXF1
ZXN0IChpZGVfaHdpZnNbOV0uaHdncm91cCwgMCk7DQogfQ0KICNlbmRpZiAv
KiBNQVhfSFdJRlMgPiA5ICovDQogDQpAQCAtMTQ0NSw3ICsxNDYyLDcgQEAN
CiAJCQkJaHdncm91cC0+YnVzeSA9IDA7DQogCQl9DQogCX0NCi0JaWRlX2Rv
X3JlcXVlc3QoaHdncm91cCk7DQorCWlkZV9kb19yZXF1ZXN0KGh3Z3JvdXAs
IDApOw0KIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpb19yZXF1ZXN0X2xv
Y2ssIGZsYWdzKTsNCiB9DQogDQpAQCAtMTU5Myw3ICsxNjEwLDcgQEANCiAJ
aWYgKHN0YXJ0c3RvcCA9PSBpZGVfc3RvcHBlZCkgew0KIAkJaWYgKGh3Z3Jv
dXAtPmhhbmRsZXIgPT0gTlVMTCkgewkvKiBwYXJhbm9pYSAqLw0KIAkJCWh3
Z3JvdXAtPmJ1c3kgPSAwOw0KLQkJCWlkZV9kb19yZXF1ZXN0KGh3Z3JvdXAp
Ow0KKwkJCWlkZV9kb19yZXF1ZXN0KGh3Z3JvdXAsIGh3aWYtPmlycSk7DQog
CQl9IGVsc2Ugew0KIAkJCXByaW50aygiJXM6IGlkZV9pbnRyOiBodWg/IGV4
cGVjdGVkIE5VTEwgaGFuZGxlciBvbiBleGl0XG4iLCBkcml2ZS0+bmFtZSk7
DQogCQl9DQpAQCAtMTY5OCw3ICsxNzE1LDcgQEANCiAJCXJxLT5uZXh0ID0g
Y3VyX3JxLT5uZXh0Ow0KIAkJY3VyX3JxLT5uZXh0ID0gcnE7DQogCX0NCi0J
aWRlX2RvX3JlcXVlc3QoaHdncm91cCk7DQorCWlkZV9kb19yZXF1ZXN0KGh3
Z3JvdXAsIDApOw0KIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpb19yZXF1
ZXN0X2xvY2ssIGZsYWdzKTsNCiAJaWYgKGFjdGlvbiA9PSBpZGVfd2FpdCkg
ew0KIAkJZG93bigmc2VtKTsJCQkvKiB3YWl0IGZvciBpdCB0byBiZSBzZXJ2
aWNlZCAqLw0KZGlmZiAtdXJOIGxpbnV4LTIuMy4zNC1wcmlzdGluZS9kcml2
ZXJzL2Jsb2NrL3BkYzIwMnh4LmMgbGludXgvZHJpdmVycy9ibG9jay9wZGMy
MDJ4eC5jDQotLS0gbGludXgtMi4zLjM0LXByaXN0aW5lL2RyaXZlcnMvYmxv
Y2svcGRjMjAyeHguYwlUaHUgRGVjIDE2IDIwOjMzOjEwIDE5OTkNCisrKyBs
aW51eC9kcml2ZXJzL2Jsb2NrL3BkYzIwMnh4LmMJVGh1IERlYyAzMCAwNDoy
ODo0MyAxOTk5DQpAQCAtNjYxLDggKzY2MSw2IEBADQogDQogCWlmIChod2lm
LT5kbWFfYmFzZSkgew0KIAkJaHdpZi0+ZG1hcHJvYyA9ICZwZGMyMDJ4eF9k
bWFwcm9jOw0KLQkJaHdpZi0+ZHJpdmVzWzBdLmF1dG90dW5lID0gMDsNCi0J
CWh3aWYtPmRyaXZlc1sxXS5hdXRvdHVuZSA9IDA7DQogCX0gZWxzZSB7DQog
CQlod2lmLT5kcml2ZXNbMF0uYXV0b3R1bmUgPSAxOw0KIAkJaHdpZi0+ZHJp
dmVzWzFdLmF1dG90dW5lID0gMTsNCmRpZmYgLXVyTiBsaW51eC0yLjMuMzQt
cHJpc3RpbmUvZHJpdmVycy9ibG9jay9zaXM1NTEzLmMgbGludXgvZHJpdmVy
cy9ibG9jay9zaXM1NTEzLmMNCi0tLSBsaW51eC0yLjMuMzQtcHJpc3RpbmUv
ZHJpdmVycy9ibG9jay9zaXM1NTEzLmMJVHVlIERlYyAxNCAyMzowMzo1MCAx
OTk5DQorKysgbGludXgvZHJpdmVycy9ibG9jay9zaXM1NTEzLmMJVGh1IERl
YyAzMCAwNDoyODo0MyAxOTk5DQpAQCAtNDcyLDYgKzQ3Miw3IEBADQogDQog
CQlob3N0X2RldiA9IGhvc3Q7DQogCQlwcmludGsoU2lTSG9zdENoaXBJbmZv
W2ldLm5hbWUpOw0KKwkJcHJpbnRrKCJcbiIpOw0KIAkJaWYgKFNpU0hvc3RD
aGlwSW5mb1tpXS5mbGFncyAmIFNJUzU1MTNfRkxBR19MQVRFTkNZKSB7DQog
CQkJaWYgKGxhdGVuY3kgIT0gMHgxMCkNCiAJCQkJcGNpX3dyaXRlX2NvbmZp
Z19ieXRlKGRldiwgUENJX0xBVEVOQ1lfVElNRVIsIDB4MTApOw0KZGlmZiAt
dXJOIGxpbnV4LTIuMy4zNC1wcmlzdGluZS9kcml2ZXJzL2Jsb2NrL3ZpYTgy
Y3h4eC5jIGxpbnV4L2RyaXZlcnMvYmxvY2svdmlhODJjeHh4LmMNCi0tLSBs
aW51eC0yLjMuMzQtcHJpc3RpbmUvZHJpdmVycy9ibG9jay92aWE4MmN4eHgu
YwlUdWUgRGVjIDE0IDIzOjAzOjUwIDE5OTkNCisrKyBsaW51eC9kcml2ZXJz
L2Jsb2NrL3ZpYTgyY3h4eC5jCVRodSBEZWMgMzAgMDQ6Mjg6NDMgMTk5OQ0K
QEAgLTU0Niw4ICs1NDYsNiBAQA0KIAlod2lmLT50dW5lcHJvYyA9ICZ2aWE4
MmN4eHhfdHVuZV9kcml2ZTsNCiAJaWYgKGh3aWYtPmRtYV9iYXNlKSB7DQog
CQlod2lmLT5kbWFwcm9jID0gJnZpYTgyY3h4eF9kbWFwcm9jOw0KLQkJaHdp
Zi0+ZHJpdmVzWzBdLmF1dG90dW5lID0gMDsNCi0JCWh3aWYtPmRyaXZlc1sx
XS5hdXRvdHVuZSA9IDA7DQogCX0gZWxzZSB7DQogCQlod2lmLT5hdXRvZG1h
ID0gMDsNCiAJCWh3aWYtPmRyaXZlc1swXS5hdXRvdHVuZSA9IDE7DQpkaWZm
IC11ck4gbGludXgtMi4zLjM0LXByaXN0aW5lL2RyaXZlcnMvcGNpL3BjaS5p
ZHMgbGludXgvZHJpdmVycy9wY2kvcGNpLmlkcw0KLS0tIGxpbnV4LTIuMy4z
NC1wcmlzdGluZS9kcml2ZXJzL3BjaS9wY2kuaWRzCVR1ZSBEZWMgMTQgMjM6
MDM6NTAgMTk5OQ0KKysrIGxpbnV4L2RyaXZlcnMvcGNpL3BjaS5pZHMJVGh1
IERlYyAzMCAwNDoyODo1MiAxOTk5DQpAQCAtOTI5LDggKzkyOSw5IEBADQog
CTA2NDAgIFBDSTA2NDANCiAJMDY0MyAgUENJMDY0Mw0KIAkwNjQ2ICBQQ0kw
NjQ2DQotCTA2NTAgIFBCQzA2NTBBDQogCTA2NDcgIFBDSTA2NDcNCisJMDY0
OCAgUENJMDY0OA0KKwkwNjUwICBQQkMwNjUwQQ0KIAkwNjcwICBVU0IwNjcw
DQogCTA2NzMgIFVTQjA2NzMNCiAxMDk2ICBBbGFjcm9uDQpkaWZmIC11ck4g
bGludXgtMi4zLjM0LXByaXN0aW5lL2RyaXZlcnMvc2NzaS9pZGUtc2NzaS5j
IGxpbnV4L2RyaXZlcnMvc2NzaS9pZGUtc2NzaS5jDQotLS0gbGludXgtMi4z
LjM0LXByaXN0aW5lL2RyaXZlcnMvc2NzaS9pZGUtc2NzaS5jCVdlZCBEZWMg
IDggMTU6MTc6NTUgMTk5OQ0KKysrIGxpbnV4L2RyaXZlcnMvc2NzaS9pZGUt
c2NzaS5jCVRodSBEZWMgMzAgMDQ6Mjg6NDUgMTk5OQ0KQEAgLTU3OSw2ICs1
NzksMTcgQEANCiAJZm9yIChpID0gMDsgbWVkaWFbaV0gIT0gMjU1OyBpKysp
IHsNCiAJCWZhaWxlZCA9IDA7DQogCQl3aGlsZSAoKGRyaXZlID0gaWRlX3Nj
YW5fZGV2aWNlcyAobWVkaWFbaV0sIGlkZXNjc2lfZHJpdmVyLm5hbWUsIE5V
TEwsIGZhaWxlZCsrKSkgIT0gTlVMTCkgew0KKw0KKyNpZm5kZWYgQ09ORklH
X0JMS19ERVZfSURFVEFQRQ0KKwkJCS8qDQorCQkJICogVGhlIE9uc3RyZWFt
IERJLTMwIGRvZXMgbm90IGhhbmRsZSBjbGVhbiBlbXVsYXRpb24sIHlldC4N
CisJCQkgKi8NCisJCQlpZiAoc3Ryc3RyKGRyaXZlLT5pZC0+bW9kZWwsICJP
blN0cmVhbSBESS0zMCIpKSB7DQorCQkJCXByaW50aygiaWRlLXRhcGU6IGlk
ZS1zY3NpIGVtdWxhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciAlcy5cbiIs
IGRyaXZlLT5pZC0+bW9kZWwpOw0KKwkJCQljb250aW51ZTsNCisJCQl9DQor
I2VuZGlmIC8qIENPTkZJR19CTEtfREVWX0lERVRBUEUgKi8NCisNCiAJCQlp
ZiAoKHNjc2kgPSAoaWRlc2NzaV9zY3NpX3QgKikga21hbGxvYyAoc2l6ZW9m
IChpZGVzY3NpX3Njc2lfdCksIEdGUF9LRVJORUwpKSA9PSBOVUxMKSB7DQog
CQkJCXByaW50ayAoS0VSTl9FUlIgImlkZS1zY3NpOiAlczogQ2FuJ3QgYWxs
b2NhdGUgYSBzY3NpIHN0cnVjdHVyZVxuIiwgZHJpdmUtPm5hbWUpOw0KIAkJ
CQljb250aW51ZTsNCmRpZmYgLXVyTiBsaW51eC0yLjMuMzQtcHJpc3RpbmUv
aW5jbHVkZS9saW51eC9pZGUuaCBsaW51eC9pbmNsdWRlL2xpbnV4L2lkZS5o
DQotLS0gbGludXgtMi4zLjM0LXByaXN0aW5lL2luY2x1ZGUvbGludXgvaWRl
LmgJTW9uIERlYyAyMCAxNjoyNjozMCAxOTk5DQorKysgbGludXgvaW5jbHVk
ZS9saW51eC9pZGUuaAlUaHUgRGVjIDMwIDA0OjM0OjEyIDE5OTkNCkBAIC01
MTMsMTcgKzUxMywxNyBAQA0KICAqLw0KICNkZWZpbmUgSURFX1NVQkRSSVZF
Ul9WRVJTSU9OCTENCiANCi10eXBlZGVmIGludAkoaWRlX2NsZWFudXBfcHJv
YykoaWRlX2RyaXZlX3QgKik7DQotdHlwZWRlZiBpZGVfc3RhcnRzdG9wX3Qg
KGlkZV9kb19yZXF1ZXN0X3Byb2MpKGlkZV9kcml2ZV90ICosIHN0cnVjdCBy
ZXF1ZXN0ICosIHVuc2lnbmVkIGxvbmcpOw0KLXR5cGVkZWYgdm9pZAkoaWRl
X2VuZF9yZXF1ZXN0X3Byb2MpKGJ5dGUsIGlkZV9od2dyb3VwX3QgKik7DQot
dHlwZWRlZiBpbnQgCShpZGVfaW9jdGxfcHJvYykoaWRlX2RyaXZlX3QgKiwg
c3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICosIHVuc2lnbmVkIGludCwg
dW5zaWduZWQgbG9uZyk7DQotdHlwZWRlZiBpbnQJKGlkZV9vcGVuX3Byb2Mp
KHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqLCBpZGVfZHJpdmVfdCAq
KTsNCi10eXBlZGVmIHZvaWQgCShpZGVfcmVsZWFzZV9wcm9jKShzdHJ1Y3Qg
aW5vZGUgKiwgc3RydWN0IGZpbGUgKiwgaWRlX2RyaXZlX3QgKik7DQotdHlw
ZWRlZiBpbnQJKGlkZV9jaGVja19tZWRpYV9jaGFuZ2VfcHJvYykoaWRlX2Ry
aXZlX3QgKik7DQotdHlwZWRlZiB2b2lkCShpZGVfcHJlX3Jlc2V0X3Byb2Mp
KGlkZV9kcml2ZV90ICopOw0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyAoaWRl
X2NhcGFjaXR5X3Byb2MpKGlkZV9kcml2ZV90ICopOw0KLXR5cGVkZWYgaWRl
X3N0YXJ0c3RvcF90IChpZGVfc3BlY2lhbF9wcm9jKShpZGVfZHJpdmVfdCAq
KTsNCi10eXBlZGVmIHZvaWQJKGlkZV9zZXR0aW5nX3Byb2MpKGlkZV9kcml2
ZV90ICopOw0KK3R5cGVkZWYgaW50CQkoaWRlX2NsZWFudXBfcHJvYykoaWRl
X2RyaXZlX3QgKik7DQordHlwZWRlZiBpZGVfc3RhcnRzdG9wX3QJKGlkZV9k
b19yZXF1ZXN0X3Byb2MpKGlkZV9kcml2ZV90ICosIHN0cnVjdCByZXF1ZXN0
ICosIHVuc2lnbmVkIGxvbmcpOw0KK3R5cGVkZWYgdm9pZAkJKGlkZV9lbmRf
cmVxdWVzdF9wcm9jKShieXRlLCBpZGVfaHdncm91cF90ICopOw0KK3R5cGVk
ZWYgaW50CQkoaWRlX2lvY3RsX3Byb2MpKGlkZV9kcml2ZV90ICosIHN0cnVj
dCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqLCB1bnNpZ25lZCBpbnQsIHVuc2ln
bmVkIGxvbmcpOw0KK3R5cGVkZWYgaW50CQkoaWRlX29wZW5fcHJvYykoc3Ry
dWN0IGlub2RlICosIHN0cnVjdCBmaWxlICosIGlkZV9kcml2ZV90ICopOw0K
K3R5cGVkZWYgdm9pZAkJKGlkZV9yZWxlYXNlX3Byb2MpKHN0cnVjdCBpbm9k
ZSAqLCBzdHJ1Y3QgZmlsZSAqLCBpZGVfZHJpdmVfdCAqKTsNCit0eXBlZGVm
IGludAkJKGlkZV9jaGVja19tZWRpYV9jaGFuZ2VfcHJvYykoaWRlX2RyaXZl
X3QgKik7DQordHlwZWRlZiB2b2lkCQkoaWRlX3ByZV9yZXNldF9wcm9jKShp
ZGVfZHJpdmVfdCAqKTsNCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcJKGlkZV9j
YXBhY2l0eV9wcm9jKShpZGVfZHJpdmVfdCAqKTsNCit0eXBlZGVmIGlkZV9z
dGFydHN0b3BfdAkoaWRlX3NwZWNpYWxfcHJvYykoaWRlX2RyaXZlX3QgKik7
DQordHlwZWRlZiB2b2lkCQkoaWRlX3NldHRpbmdfcHJvYykoaWRlX2RyaXZl
X3QgKik7DQogDQogdHlwZWRlZiBzdHJ1Y3QgaWRlX2RyaXZlcl9zIHsNCiAJ
Y29uc3QgY2hhcgkJCSpuYW1lOw0KZGlmZiAtdXJOIGxpbnV4LTIuMy4zNC1w
cmlzdGluZS9pbmNsdWRlL2xpbnV4L3BjaV9pZHMuaCBsaW51eC9pbmNsdWRl
L2xpbnV4L3BjaV9pZHMuaA0KLS0tIGxpbnV4LTIuMy4zNC1wcmlzdGluZS9p
bmNsdWRlL2xpbnV4L3BjaV9pZHMuaAlUdWUgRGVjIDE0IDIzOjAzOjUwIDE5
OTkNCisrKyBsaW51eC9pbmNsdWRlL2xpbnV4L3BjaV9pZHMuaAlUaHUgRGVj
IDMwIDA0OjI4OjI4IDE5OTkNCkBAIC00ODgsNiArNDg4LDcgQEANCiAjZGVm
aW5lIFBDSV9ERVZJQ0VfSURfQ01EXzY0MwkJMHgwNjQzDQogI2RlZmluZSBQ
Q0lfREVWSUNFX0lEX0NNRF82NDYJCTB4MDY0Ng0KICNkZWZpbmUgUENJX0RF
VklDRV9JRF9DTURfNjQ3CQkweDA2NDcNCisjZGVmaW5lIFBDSV9ERVZJQ0Vf
SURfQ01EXzY0OAkJMHgwNjQ4DQogI2RlZmluZSBQQ0lfREVWSUNFX0lEX0NN
RF82NzAJCTB4MDY3MA0KIA0KICNkZWZpbmUgUENJX1ZFTkRPUl9JRF9WSVNJ
T04JCTB4MTA5OA0K
---1463811072-981693039-946787501=:6648--
-
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.tux.org/lkml/