Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 15 Jan 1998 20:02:33 +0200 (EET)
From:      Vallo Kallaste <vallo@matti.ee>
To:        freebsd-multimedia@FreeBSD.ORG
Subject:   snd971209.tgz and patching 2.2.5-stable
Message-ID:  <Pine.GSO.3.96.980115194532.23379A-300000@solaris>

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

---559023410-851401618-884887353=:23379
Content-Type: TEXT/PLAIN; charset=US-ASCII


Helo !

At this moment I use Hasty's guspnp package because I use only gusPnP
soundcard. Now I need SB32 PnP support and there are only one way to do
this, or I am wrong, sorry. So I grab the L.Rizzo snd971209.tgz and try
install it on 2.2.5-STABLE. Patching isa.c gives me errors:

File to patch: /opt1/sys/i386/conf/files.i386
Patching file /opt1/sys/i386/conf/files.i386 using Plan A...
Hunk #1 succeeded at 152 (offset 1 line).
Hmm...  The next patch looks like a unified diff to me...
The text leading up to this was:
--------------------------
|--- /opt1/sys/i386/isa/isa.c.971018    Mon Oct 20 09:51:00 1997
|+++ /opt1/sys/i386/isa/isa.c   Sat Oct 18 11:38:46 1997
--------------------------
File to patch: /opt1/sys/i386/isa/isa.c
Patching file /opt1/sys/i386/isa/isa.c using Plan A...
Hunk #1 failed at 34.
Hunk #2 failed at 513.
Hunk #3 failed at 575.
Hunk #4 failed at 607.
Hunk #5 succeeded at 719 with fuzz 1 (offset 86 lines).
Hunk #6 failed at 818.
Hunk #7 succeeded at 764 with fuzz 2 (offset 6 lines).
Hunk #8 succeeded at 938 with fuzz 2 (offset 104 lines).
Hunk #9 failed at 966.
6 out of 9 hunks failed--saving rejects to /opt1/sys/i386/isa/isa.c.rej
done

I mean there are some differences between 2.2.5-RELEASE and 2.2.5-STABLE.
Also 2.2.5-STABLE includes PnP support and there are no need for L.Rizzo's
extra PnP package, right? Attachment is isa.c.rej file and original isa.c.

Please reply directly to me, I'm not subscriber.

Vallo Kallaste
vallo@matti.ee

---559023410-851401618-884887353=:23379
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="isa.c.orig"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.GSO.3.96.980115200233.23379B@solaris>
Content-Description: 

LyotDQogKiBDb3B5cmlnaHQgKGMpIDE5OTEgVGhlIFJlZ2VudHMgb2YgdGhl
IFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4NCiAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuDQogKg0KICogVGhpcyBjb2RlIGlzIGRlcml2ZWQgZnJvbSBzb2Z0
d2FyZSBjb250cmlidXRlZCB0byBCZXJrZWxleSBieQ0KICogV2lsbGlhbSBK
b2xpdHouDQogKg0KICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQogKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMNCiAqIGFyZSBtZXQ6DQogKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodA0KICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQNCiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUNCiAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQogKiAzLiBBbGwg
YWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3Ig
dXNlIG9mIHRoaXMgc29mdHdhcmUNCiAqICAgIG11c3QgZGlzcGxheSB0aGUg
Zm9sbG93aW5nIGFja25vd2xlZGdlbWVudDoNCiAqCVRoaXMgcHJvZHVjdCBp
bmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIFVuaXZlcnNpdHkg
b2YNCiAqCUNhbGlmb3JuaWEsIEJlcmtlbGV5IGFuZCBpdHMgY29udHJpYnV0
b3JzLg0KICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0
eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMNCiAqICAgIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20gdGhpcyBzb2Z0d2FyZQ0KICogICAgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQogKg0KICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUkVHRU5UUyBBTkQgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQNCiAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQ0KICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCiAqIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFJFR0VOVFMgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRQ0KICogRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwNCiAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTDQog
KiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikNCiAqIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUDQogKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZDQogKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GDQogKiBTVUNIIERB
TUFHRS4NCiAqDQogKglmcm9tOiBAKCMpaXNhLmMJNy4yIChCZXJrZWxleSkg
NS8xMy85MQ0KICoJJElkOiBpc2EuYyx2IDEuNzQuMi41IDE5OTgvMDEvMDgg
MTI6MzI6MzEgamtoIEV4cCAkDQogKi8NCg0KLyoNCiAqIGNvZGUgdG8gbWFu
YWdlIEFUIGJ1cw0KICoNCiAqIDkyLzA4LzE4ICBGcmFuayBQLiBNYWNMYWNo
bGFuIChmcG1AY3Jhc2guY3RzLmNvbSk6DQogKiBGaXhlZCB1bmluaXRpYWxp
emVkIHZhcmlhYmxlIHByb2JsZW0gYW5kIGFkZGVkIGNvZGUgdG8gZGVhbA0K
ICogd2l0aCBETUEgcGFnZSBib3VuZGFyaWVzIGluIGlzYV9kbWFyYW5nZWNo
ZWNrKCkuICBGaXhlZCB3b3JkDQogKiBtb2RlIERNQSBjb3VudCBjb21wdXRp
b24gYW5kIHJlb3JnYW5pemVkIERNQSBzZXR1cCBjb2RlIGluDQogKiBpc2Ff
ZG1hc3RhcnQoKQ0KICovDQoNCiNpbmNsdWRlICJvcHRfYXV0b19lb2kuaCIN
Cg0KI2luY2x1ZGUgPHN5cy9wYXJhbS5oPg0KI2luY2x1ZGUgPHN5cy9zeXN0
bS5oPg0KI2luY2x1ZGUgPHN5cy9idWYuaD4NCiNpbmNsdWRlIDxzeXMvc3lz
bG9nLmg+DQojaW5jbHVkZSA8c3lzL21hbGxvYy5oPg0KI2luY2x1ZGUgPG1h
Y2hpbmUvbWRfdmFyLmg+DQojaW5jbHVkZSA8bWFjaGluZS9zZWdtZW50cy5o
Pg0KI2luY2x1ZGUgPHZtL3ZtLmg+DQojaW5jbHVkZSA8dm0vdm1fcGFyYW0u
aD4NCiNpbmNsdWRlIDx2bS9wbWFwLmg+DQojaW5jbHVkZSA8aTM4Ni9pc2Ev
aXNhX2RldmljZS5oPg0KI2luY2x1ZGUgPGkzODYvaXNhL2lzYS5oPg0KI2lu
Y2x1ZGUgPGkzODYvaXNhL2ljdS5oPg0KI2luY2x1ZGUgPGkzODYvaXNhL2lj
L2k4MjM3Lmg+DQojaW5jbHVkZSAidmVjdG9yLmgiDQoNCi8qDQoqKiAgUmVn
aXN0ZXIgZGVmaW5pdGlvbnMgZm9yIERNQSBjb250cm9sbGVyIDEgKGNoYW5u
ZWxzIDAuLjMpOg0KKi8NCiNkZWZpbmUJRE1BMV9DSE4oYykJKElPX0RNQTEg
KyAxKigyKihjKSkpCS8qIGFkZHIgcmVnIGZvciBjaGFubmVsIGMgKi8NCiNk
ZWZpbmUJRE1BMV9TTVNLCShJT19ETUExICsgMSoxMCkJLyogc2luZ2xlIG1h
c2sgcmVnaXN0ZXIgKi8NCiNkZWZpbmUJRE1BMV9NT0RFCShJT19ETUExICsg
MSoxMSkJLyogbW9kZSByZWdpc3RlciAqLw0KI2RlZmluZQlETUExX0ZGQwko
SU9fRE1BMSArIDEqMTIpCS8qIGNsZWFyIGZpcnN0L2xhc3QgRkYgKi8NCg0K
LyoNCioqICBSZWdpc3RlciBkZWZpbml0aW9ucyBmb3IgRE1BIGNvbnRyb2xs
ZXIgMiAoY2hhbm5lbHMgNC4uNyk6DQoqLw0KI2RlZmluZQlETUEyX0NITihj
KQkoSU9fRE1BMiArIDIqKDIqKGMpKSkJLyogYWRkciByZWcgZm9yIGNoYW5u
ZWwgYyAqLw0KI2RlZmluZQlETUEyX1NNU0sJKElPX0RNQTIgKyAyKjEwKQkv
KiBzaW5nbGUgbWFzayByZWdpc3RlciAqLw0KI2RlZmluZQlETUEyX01PREUJ
KElPX0RNQTIgKyAyKjExKQkvKiBtb2RlIHJlZ2lzdGVyICovDQojZGVmaW5l
CURNQTJfRkZDCShJT19ETUEyICsgMioxMikJLyogY2xlYXIgZmlyc3QvbGFz
dCBGRiAqLw0KDQp1X2xvbmcJKmludHJfY291bnRwW0lDVV9MRU5dOw0KaW50
aGFuZDJfdCAqaW50cl9oYW5kbGVyW0lDVV9MRU5dOw0KdV9pbnQJaW50cl9t
YXNrW0lDVV9MRU5dOw0KdV9pbnQqCWludHJfbXB0cltJQ1VfTEVOXTsNCmlu
dAlpbnRyX3VuaXRbSUNVX0xFTl07DQoNCnN0YXRpYyBpbnRoYW5kX3QgKmZh
c3RpbnRyW0lDVV9MRU5dID0gew0KCSZJRFRWRUMoZmFzdGludHIwKSwgJklE
VFZFQyhmYXN0aW50cjEpLA0KCSZJRFRWRUMoZmFzdGludHIyKSwgJklEVFZF
QyhmYXN0aW50cjMpLA0KCSZJRFRWRUMoZmFzdGludHI0KSwgJklEVFZFQyhm
YXN0aW50cjUpLA0KCSZJRFRWRUMoZmFzdGludHI2KSwgJklEVFZFQyhmYXN0
aW50cjcpLA0KCSZJRFRWRUMoZmFzdGludHI4KSwgJklEVFZFQyhmYXN0aW50
cjkpLA0KCSZJRFRWRUMoZmFzdGludHIxMCksICZJRFRWRUMoZmFzdGludHIx
MSksDQoJJklEVFZFQyhmYXN0aW50cjEyKSwgJklEVFZFQyhmYXN0aW50cjEz
KSwNCgkmSURUVkVDKGZhc3RpbnRyMTQpLCAmSURUVkVDKGZhc3RpbnRyMTUp
DQp9Ow0KDQpzdGF0aWMgaW50aGFuZF90ICpzbG93aW50cltJQ1VfTEVOXSA9
IHsNCgkmSURUVkVDKGludHIwKSwgJklEVFZFQyhpbnRyMSksICZJRFRWRUMo
aW50cjIpLCAmSURUVkVDKGludHIzKSwNCgkmSURUVkVDKGludHI0KSwgJklE
VFZFQyhpbnRyNSksICZJRFRWRUMoaW50cjYpLCAmSURUVkVDKGludHI3KSwN
CgkmSURUVkVDKGludHI4KSwgJklEVFZFQyhpbnRyOSksICZJRFRWRUMoaW50
cjEwKSwgJklEVFZFQyhpbnRyMTEpLA0KCSZJRFRWRUMoaW50cjEyKSwgJklE
VFZFQyhpbnRyMTMpLCAmSURUVkVDKGludHIxNCksICZJRFRWRUMoaW50cjE1
KQ0KfTsNCg0Kc3RhdGljIHZvaWQgY29uZmlnX2lzYWRldiBfX1AoKHN0cnVj
dCBpc2FfZGV2aWNlICppc2RwLCB1X2ludCAqbXApKTsNCnN0YXRpYyB2b2lk
IGNvbmZpZ19pc2FkZXZfYyBfX1AoKHN0cnVjdCBpc2FfZGV2aWNlICppc2Rw
LCB1X2ludCAqbXAsDQoJCQkJIGludCByZWNvbmZpZykpOw0Kc3RhdGljIHZv
aWQgY29uZmxpY3QgX19QKChzdHJ1Y3QgaXNhX2RldmljZSAqZHZwLCBzdHJ1
Y3QgaXNhX2RldmljZSAqdG1wZHZwLA0KCQkJICBpbnQgaXRlbSwgY2hhciBj
b25zdCAqd2hhdG5vdCwgY2hhciBjb25zdCAqcmVhc29uLA0KCQkJICBjaGFy
IGNvbnN0ICpmb3JtYXQpKTsNCnN0YXRpYyBpbnQgaGF2ZXNlZW4gX19QKChz
dHJ1Y3QgaXNhX2RldmljZSAqZHZwLCBzdHJ1Y3QgaXNhX2RldmljZSAqdG1w
ZHZwLA0KCQkJIHVfaW50IGNoZWNrYml0cykpOw0Kc3RhdGljIGludCBpc2Ff
ZG1hcmFuZ2VjaGVjayBfX1AoKGNhZGRyX3QgdmEsIHVfaW50IGxlbmd0aCwg
aW50IGNoYW4pKTsNCnN0YXRpYyBpbnRoYW5kMl90IGlzYV9zdHJheWludHI7
DQpzdGF0aWMgdm9pZCByZWdpc3Rlcl9pbWFzayBfX1AoKHN0cnVjdCBpc2Ff
ZGV2aWNlICpkdnAsIHVfaW50IG1hc2spKTsNCg0KLyoNCiAqIHByaW50IGEg
Y29uZmxpY3QgbWVzc2FnZQ0KICovDQpzdGF0aWMgdm9pZA0KY29uZmxpY3Qo
ZHZwLCB0bXBkdnAsIGl0ZW0sIHdoYXRub3QsIHJlYXNvbiwgZm9ybWF0KQ0K
CXN0cnVjdCBpc2FfZGV2aWNlCSpkdnA7DQoJc3RydWN0IGlzYV9kZXZpY2UJ
KnRtcGR2cDsNCglpbnQJCQlpdGVtOw0KCWNoYXIgY29uc3QJCSp3aGF0bm90
Ow0KCWNoYXIgY29uc3QJCSpyZWFzb247DQoJY2hhciBjb25zdAkJKmZvcm1h
dDsNCnsNCglwcmludGYoIiVzJWQgbm90ICVzZWQgZHVlIHRvICVzIGNvbmZs
aWN0IHdpdGggJXMlZCBhdCAiLA0KCQlkdnAtPmlkX2RyaXZlci0+bmFtZSwg
ZHZwLT5pZF91bml0LCB3aGF0bm90LCByZWFzb24sDQoJCXRtcGR2cC0+aWRf
ZHJpdmVyLT5uYW1lLCB0bXBkdnAtPmlkX3VuaXQpOw0KCXByaW50Zihmb3Jt
YXQsIGl0ZW0pOw0KCXByaW50ZigiXG4iKTsNCn0NCg0KLyoNCiAqIENoZWNr
IHRvIHNlZSBpZiB0aGluZ3MgYXJlIGFscmVhZHkgaW4gdXNlLCBsaWtlIElS
USdzLCBJL08gYWRkcmVzc2VzDQogKiBhbmQgTWVtb3J5IGFkZHJlc3Nlcy4N
CiAqLw0Kc3RhdGljIGludA0KaGF2ZXNlZW4oZHZwLCB0bXBkdnAsIGNoZWNr
Yml0cykNCglzdHJ1Y3QgaXNhX2RldmljZSAqZHZwOw0KCXN0cnVjdCBpc2Ff
ZGV2aWNlICp0bXBkdnA7DQoJdV9pbnQJY2hlY2tiaXRzOw0Kew0KCS8qDQoJ
ICogT25seSBjaGVjayBhZ2FpbnN0IGRldmljZXMgdGhhdCBoYXZlIGFscmVh
ZHkgYmVlbiBmb3VuZCBhbmQgYXJlIG5vdA0KCSAqIHVuaWxhdGVyYWxseSBh
bGxvd2VkIHRvIGNvbmZsaWN0IGFueXdheS4NCgkgKi8NCglpZiAodG1wZHZw
LT5pZF9hbGl2ZSAmJiAhZHZwLT5pZF9jb25mbGljdHMpIHsNCgkJY2hhciBj
b25zdCAqd2hhdG5vdDsNCg0KCQl3aGF0bm90ID0gY2hlY2tiaXRzICYgQ0Nf
QVRUQUNIID8gImF0dGFjaCIgOiAicHJvYiI7DQoJCS8qDQoJCSAqIENoZWNr
IGZvciBJL08gYWRkcmVzcyBjb25mbGljdC4gIFdlIGNhbiBvbmx5IGNoZWNr
IHRoZQ0KCQkgKiBzdGFydGluZyBhZGRyZXNzIG9mIHRoZSBkZXZpY2UgYWdh
aW5zdCB0aGUgcmFuZ2Ugb2YgdGhlDQoJCSAqIGRldmljZSB0aGF0IGhhcyBh
bHJlYWR5IGJlZW4gcHJvYmVkIHNpbmNlIHdlIGRvIG5vdA0KCQkgKiBrbm93
IGhvdyBtYW55IEkvTyBhZGRyZXNzZXMgdGhpcyBkZXZpY2UgdXNlcy4NCgkJ
ICovDQoJCWlmIChjaGVja2JpdHMgJiBDQ19JT0FERFIgJiYgdG1wZHZwLT5p
ZF9hbGl2ZSAhPSAtMSkgew0KCQkJaWYgKChkdnAtPmlkX2lvYmFzZSA+PSB0
bXBkdnAtPmlkX2lvYmFzZSkgJiYNCgkJCSAgICAoZHZwLT5pZF9pb2Jhc2Ug
PD0NCgkJCQkgICh0bXBkdnAtPmlkX2lvYmFzZSArIHRtcGR2cC0+aWRfYWxp
dmUgLSAxKSkpIHsNCgkJCQljb25mbGljdChkdnAsIHRtcGR2cCwgZHZwLT5p
ZF9pb2Jhc2UsIHdoYXRub3QsDQoJCQkJCSAiSS9PIGFkZHJlc3MiLCAiMHgl
eCIpOw0KCQkJCXJldHVybiAxOw0KCQkJfQ0KCQl9DQoJCS8qDQoJCSAqIENo
ZWNrIGZvciBNZW1vcnkgYWRkcmVzcyBjb25mbGljdC4gIFdlIGNhbiBjaGVj
ayBmb3INCgkJICogcmFuZ2Ugb3ZlcmxhcCwgYnV0IGl0IHdpbGwgbm90IGNh
dGNoIGFsbCBjYXNlcyBzaW5jZSB0aGUNCgkJICogZHJpdmVyIG1heSBhZGp1
c3QgdGhlIG1zaXplIHBhcmFtYXRlciBkdXJpbmcgcHJvYmUsIGZvcg0KCQkg
KiBub3cgd2UganVzdCBjaGVjayB0aGF0IHRoZSBzdGFydGluZyBhZGRyZXNz
IGRvZXMgbm90DQoJCSAqIGZhbGwgd2l0aGluIGFueSBhbGxvY2F0ZWQgcmVn
aW9uLg0KCQkgKiBYWFggY291bGQgYWRkIGEgc2Vjb25kIGNoZWNrIGFmdGVy
IHRoZSBwcm9iZSBmb3Igb3ZlcmxhcCwNCgkJICogc2luY2UgYXQgdGhhdCB0
aW1lIHdlIHdvdWxkIGtub3cgdGhlIGZ1bGwgcmFuZ2UuDQoJCSAqIFhYWCBL
RVJOQkFTRSBpcyBhIGhhY2ssIHdlIHNob3VsZCBoYXZlIHZhZGRyIGluIHRo
ZSB0YWJsZSENCgkJICovDQoJCWlmIChjaGVja2JpdHMgJiBDQ19NRU1BRERS
ICYmIHRtcGR2cC0+aWRfbWFkZHIpIHsNCgkJCWlmICgoS0VSTkJBU0UgKyBk
dnAtPmlkX21hZGRyID49IHRtcGR2cC0+aWRfbWFkZHIpICYmDQoJCQkgICAg
KEtFUk5CQVNFICsgZHZwLT5pZF9tYWRkciA8PQ0KCQkJICAgICAodG1wZHZw
LT5pZF9tYWRkciArIHRtcGR2cC0+aWRfbXNpemUgLSAxKSkpIHsNCgkJCQlj
b25mbGljdChkdnAsIHRtcGR2cCwgKGludClkdnAtPmlkX21hZGRyLA0KCQkJ
CQkgd2hhdG5vdCwgIm1hZGRyIiwgIjB4JXgiKTsNCgkJCQlyZXR1cm4gMTsN
CgkJCX0NCgkJfQ0KCQkvKg0KCQkgKiBDaGVjayBmb3IgSVJRIGNvbmZsaWN0
cy4NCgkJICovDQoJCWlmIChjaGVja2JpdHMgJiBDQ19JUlEgJiYgdG1wZHZw
LT5pZF9pcnEpIHsNCgkJCWlmICh0bXBkdnAtPmlkX2lycSA9PSBkdnAtPmlk
X2lycSkgew0KCQkJCWNvbmZsaWN0KGR2cCwgdG1wZHZwLCBmZnMoZHZwLT5p
ZF9pcnEpIC0gMSwNCgkJCQkJIHdoYXRub3QsICJpcnEiLCAiJWQiKTsNCgkJ
CQlyZXR1cm4gMTsNCgkJCX0NCgkJfQ0KCQkvKg0KCQkgKiBDaGVjayBmb3Ig
RFJRIGNvbmZsaWN0cy4NCgkJICovDQoJCWlmIChjaGVja2JpdHMgJiBDQ19E
UlEgJiYgdG1wZHZwLT5pZF9kcnEgIT0gLTEpIHsNCgkJCWlmICh0bXBkdnAt
PmlkX2RycSA9PSBkdnAtPmlkX2RycSkgew0KCQkJCWNvbmZsaWN0KGR2cCwg
dG1wZHZwLCBkdnAtPmlkX2RycSwgd2hhdG5vdCwNCgkJCQkJICJkcnEiLCAi
JWQiKTsNCgkJCQlyZXR1cm4gMTsNCgkJCX0NCgkJfQ0KCX0NCglyZXR1cm4g
MDsNCn0NCg0KLyoNCiAqIFNlYXJjaCB0aHJvdWdoIGFsbCB0aGUgaXNhX2Rl
dnRhYl8qIHRhYmxlcyBsb29raW5nIGZvciBhbnl0aGluZyB0aGF0DQogKiBj
b25mbGljdHMgd2l0aCB0aGUgY3VycmVudCBkZXZpY2UuDQogKi8NCmludA0K
aGF2ZXNlZW5faXNhZGV2KGR2cCwgY2hlY2tiaXRzKQ0KCXN0cnVjdCBpc2Ff
ZGV2aWNlICpkdnA7DQoJdV9pbnQJY2hlY2tiaXRzOw0Kew0KCXN0cnVjdCBp
c2FfZGV2aWNlICp0bXBkdnA7DQoJaW50CXN0YXR1cyA9IDA7DQoNCglmb3Ig
KHRtcGR2cCA9IGlzYV9kZXZ0YWJfdHR5OyB0bXBkdnAtPmlkX2RyaXZlcjsg
dG1wZHZwKyspIHsNCgkJc3RhdHVzIHw9IGhhdmVzZWVuKGR2cCwgdG1wZHZw
LCBjaGVja2JpdHMpOw0KCQlpZiAoc3RhdHVzKQ0KCQkJcmV0dXJuIHN0YXR1
czsNCgl9DQoJZm9yICh0bXBkdnAgPSBpc2FfZGV2dGFiX2JpbzsgdG1wZHZw
LT5pZF9kcml2ZXI7IHRtcGR2cCsrKSB7DQoJCXN0YXR1cyB8PSBoYXZlc2Vl
bihkdnAsIHRtcGR2cCwgY2hlY2tiaXRzKTsNCgkJaWYgKHN0YXR1cykNCgkJ
CXJldHVybiBzdGF0dXM7DQoJfQ0KCWZvciAodG1wZHZwID0gaXNhX2RldnRh
Yl9uZXQ7IHRtcGR2cC0+aWRfZHJpdmVyOyB0bXBkdnArKykgew0KCQlzdGF0
dXMgfD0gaGF2ZXNlZW4oZHZwLCB0bXBkdnAsIGNoZWNrYml0cyk7DQoJCWlm
IChzdGF0dXMpDQoJCQlyZXR1cm4gc3RhdHVzOw0KCX0NCglmb3IgKHRtcGR2
cCA9IGlzYV9kZXZ0YWJfbnVsbDsgdG1wZHZwLT5pZF9kcml2ZXI7IHRtcGR2
cCsrKSB7DQoJCXN0YXR1cyB8PSBoYXZlc2VlbihkdnAsIHRtcGR2cCwgY2hl
Y2tiaXRzKTsNCgkJaWYgKHN0YXR1cykNCgkJCXJldHVybiBzdGF0dXM7DQoJ
fQ0KCXJldHVybihzdGF0dXMpOw0KfQ0KDQovKg0KICogQ29uZmlndXJlIGFs
bCBJU0EgZGV2aWNlcw0KICovDQp2b2lkDQppc2FfY29uZmlndXJlKCkgew0K
CXN0cnVjdCBpc2FfZGV2aWNlICpkdnA7DQoNCglzcGxoaWdoKCk7DQoJcHJp
bnRmKCJQcm9iaW5nIGZvciBkZXZpY2VzIG9uIHRoZSBJU0EgYnVzOlxuIik7
DQoJLyogRmlyc3QgcHJvYmUgYWxsIHRoZSBzZW5zaXRpdmUgcHJvYmVzICov
DQoJZm9yIChkdnAgPSBpc2FfZGV2dGFiX3R0eTsgZHZwLT5pZF9kcml2ZXI7
IGR2cCsrKQ0KCQlpZiAoZHZwLT5pZF9kcml2ZXItPnNlbnNpdGl2ZV9odykN
CgkJCWNvbmZpZ19pc2FkZXYoZHZwLCAmdHR5X2ltYXNrKTsNCglmb3IgKGR2
cCA9IGlzYV9kZXZ0YWJfYmlvOyBkdnAtPmlkX2RyaXZlcjsgZHZwKyspDQoJ
CWlmIChkdnAtPmlkX2RyaXZlci0+c2Vuc2l0aXZlX2h3KQ0KCQkJY29uZmln
X2lzYWRldihkdnAsICZiaW9faW1hc2spOw0KCWZvciAoZHZwID0gaXNhX2Rl
dnRhYl9uZXQ7IGR2cC0+aWRfZHJpdmVyOyBkdnArKykNCgkJaWYgKGR2cC0+
aWRfZHJpdmVyLT5zZW5zaXRpdmVfaHcpDQoJCQljb25maWdfaXNhZGV2KGR2
cCwgJm5ldF9pbWFzayk7DQoJZm9yIChkdnAgPSBpc2FfZGV2dGFiX251bGw7
IGR2cC0+aWRfZHJpdmVyOyBkdnArKykNCgkJaWYgKGR2cC0+aWRfZHJpdmVy
LT5zZW5zaXRpdmVfaHcpDQoJCQljb25maWdfaXNhZGV2KGR2cCwgKHVfaW50
ICopTlVMTCk7DQoNCgkvKiBUaGVuIGFsbCB0aGUgYmFkIG9uZXMgKi8NCglm
b3IgKGR2cCA9IGlzYV9kZXZ0YWJfdHR5OyBkdnAtPmlkX2RyaXZlcjsgZHZw
KyspDQoJCWlmICghZHZwLT5pZF9kcml2ZXItPnNlbnNpdGl2ZV9odykNCgkJ
CWNvbmZpZ19pc2FkZXYoZHZwLCAmdHR5X2ltYXNrKTsNCglmb3IgKGR2cCA9
IGlzYV9kZXZ0YWJfYmlvOyBkdnAtPmlkX2RyaXZlcjsgZHZwKyspDQoJCWlm
ICghZHZwLT5pZF9kcml2ZXItPnNlbnNpdGl2ZV9odykNCgkJCWNvbmZpZ19p
c2FkZXYoZHZwLCAmYmlvX2ltYXNrKTsNCglmb3IgKGR2cCA9IGlzYV9kZXZ0
YWJfbmV0OyBkdnAtPmlkX2RyaXZlcjsgZHZwKyspDQoJCWlmICghZHZwLT5p
ZF9kcml2ZXItPnNlbnNpdGl2ZV9odykNCgkJCWNvbmZpZ19pc2FkZXYoZHZw
LCAmbmV0X2ltYXNrKTsNCglmb3IgKGR2cCA9IGlzYV9kZXZ0YWJfbnVsbDsg
ZHZwLT5pZF9kcml2ZXI7IGR2cCsrKQ0KCQlpZiAoIWR2cC0+aWRfZHJpdmVy
LT5zZW5zaXRpdmVfaHcpDQoJCQljb25maWdfaXNhZGV2KGR2cCwgKHVfaW50
ICopTlVMTCk7DQoNCgliaW9faW1hc2sgfD0gU1dJX0NMT0NLX01BU0s7DQoJ
bmV0X2ltYXNrIHw9IFNXSV9ORVRfTUFTSzsNCgl0dHlfaW1hc2sgfD0gU1dJ
X1RUWV9NQVNLOw0KDQovKg0KICogWFhYIHdlIHNob3VsZCByZWFsbHkgYWRk
IHRoZSB0dHkgZGV2aWNlIHRvIG5ldF9pbWFzayB3aGVuIHRoZSBsaW5lIGlz
DQogKiBzd2l0Y2hlZCB0byBTTElQRElTQywgYW5kIHRoZW4gcmVtb3ZlIGl0
IHdoZW4gaXQgaXMgc3dpdGNoZWQgYXdheSBmcm9tDQogKiBTTElQRElTQy4g
IE5vIG5lZWQgdG8gYmxvY2sgb3V0IEFMTCB0dHlzIGR1cmluZyBhIHNwbGlt
cCB3aGVuIG9ubHkgb25lDQogKiBvZiB0aGVtIGlzIHJ1bm5pbmcgc2xpcC4N
CiAqDQogKiBYWFggYWN0dWFsbHksIGJsb2NraW5nIGFsbCB0dHlzIGR1cmlu
ZyBhIHNwbGltcCBkb2Vzbid0IG1hdHRlciBzbyBtdWNoDQogKiB3aXRoIHNp
byBiZWNhdXNlIHRoZSBzZXJpYWwgaW50ZXJydXB0IGxheWVyIGRvZXNuJ3Qg
dXNlIHR0eV9pbWFzay4gIE9ubHkNCiAqIG5vbi1zZXJpYWwgdHR5cyBzdWZm
ZXIuICBJdCdzIG1vcmUgc3R1cGlkIHRoYXQgQUxMICduZXQncyBhcmUgYmxv
Y2tlZA0KICogZHVyaW5nIHNwbHR0eS4NCiAqLw0KI2luY2x1ZGUgInNsLmgi
DQojaWYgTlNMID4gMA0KCW5ldF9pbWFzayB8PSB0dHlfaW1hc2s7DQoJdHR5
X2ltYXNrID0gbmV0X2ltYXNrOw0KI2VuZGlmDQoNCgkvKiBiaW9faW1hc2sg
fD0gdHR5X2ltYXNrIDsgIGNhbiBzb21lIHR0eSBkZXZpY2VzIHVzZSBidWZm
ZXJzPyAqLw0KDQoJaWYgKGJvb3R2ZXJib3NlKQ0KCQlwcmludGYoImltYXNr
czogYmlvICV4LCB0dHkgJXgsIG5ldCAleFxuIiwNCgkJICAgICAgIGJpb19p
bWFzaywgdHR5X2ltYXNrLCBuZXRfaW1hc2spOw0KDQoJLyoNCgkgKiBGaW5p
c2ggaW5pdGlhbGl6aW5nIGludHJfbWFza1tdLiAgTm90ZSB0aGF0IHRoZSBw
YXJ0bHkNCgkgKiBjb25zdHJ1Y3RlZCBtYXNrcyBhcmVuJ3QgYWN0dWFsbHkg
dXNlZCBzaW5jZSB3ZSdyZSBhdCBzcGxoaWdoLg0KCSAqIEZvciBmdWxseSBk
eW5hbWljIGluaXRpYWxpemF0aW9uLCByZWdpc3Rlcl9pbnRyKCkgYW5kDQoJ
ICogdW5yZWdpc3Rlcl9pbnRyKCkgd2lsbCBoYXZlIHRvIGFkanVzdCB0aGUg
bWFza3MgZm9yIF9hbGxfDQoJICogaW50ZXJydXB0cyBhbmQgZm9yIHR0eV9p
bWFzaywgZXRjLg0KCSAqLw0KCWZvciAoZHZwID0gaXNhX2RldnRhYl90dHk7
IGR2cC0+aWRfZHJpdmVyOyBkdnArKykNCgkJcmVnaXN0ZXJfaW1hc2soZHZw
LCB0dHlfaW1hc2spOw0KCWZvciAoZHZwID0gaXNhX2RldnRhYl9iaW87IGR2
cC0+aWRfZHJpdmVyOyBkdnArKykNCgkJcmVnaXN0ZXJfaW1hc2soZHZwLCBi
aW9faW1hc2spOw0KCWZvciAoZHZwID0gaXNhX2RldnRhYl9uZXQ7IGR2cC0+
aWRfZHJpdmVyOyBkdnArKykNCgkJcmVnaXN0ZXJfaW1hc2soZHZwLCBuZXRf
aW1hc2spOw0KCWZvciAoZHZwID0gaXNhX2RldnRhYl9udWxsOyBkdnAtPmlk
X2RyaXZlcjsgZHZwKyspDQoJCXJlZ2lzdGVyX2ltYXNrKGR2cCwgU1dJX0NM
T0NLX01BU0spOw0KCXNwbDAoKTsNCn0NCg0KLyoNCiAqIENvbmZpZ3VyZSBh
biBJU0EgZGV2aWNlLg0KICovDQoNCg0Kc3RhdGljIHZvaWQNCmNvbmZpZ19p
c2FkZXYoaXNkcCwgbXApDQogICAgIHN0cnVjdCBpc2FfZGV2aWNlICppc2Rw
Ow0KICAgICB1X2ludCAqbXA7DQp7DQoJY29uZmlnX2lzYWRldl9jKGlzZHAs
IG1wLCAwKTsNCn0NCg0Kdm9pZA0KcmVjb25maWdfaXNhZGV2KGlzZHAsIG1w
KQ0KCXN0cnVjdCBpc2FfZGV2aWNlICppc2RwOw0KCXVfaW50ICptcDsNCnsN
Cgljb25maWdfaXNhZGV2X2MoaXNkcCwgbXAsIDEpOw0KfQ0KDQpzdGF0aWMg
dm9pZA0KY29uZmlnX2lzYWRldl9jKGlzZHAsIG1wLCByZWNvbmZpZykNCglz
dHJ1Y3QgaXNhX2RldmljZSAqaXNkcDsNCgl1X2ludCAqbXA7DQoJaW50IHJl
Y29uZmlnOw0Kew0KCXVfaW50IGNoZWNrYml0czsNCglpbnQgaWRfYWxpdmU7
DQoJaW50IGxhc3RfYWxpdmU7DQoJc3RydWN0IGlzYV9kcml2ZXIgKmRwID0g
aXNkcC0+aWRfZHJpdmVyOw0KDQoJaWYgKCFpc2RwLT5pZF9lbmFibGVkKSB7
DQoJCWlmIChib290dmVyYm9zZSkNCgkJCXByaW50ZigiJXMlZDogZGlzYWJs
ZWQsIG5vdCBwcm9iZWQuXG4iLA0KCQkJCWRwLT5uYW1lLCBpc2RwLT5pZF91
bml0KTsNCgkJcmV0dXJuOw0KCX0NCgljaGVja2JpdHMgPSBDQ19EUlEgfCBD
Q19JT0FERFIgfCBDQ19NRU1BRERSOw0KCWlmICghcmVjb25maWcgJiYgaGF2
ZXNlZW5faXNhZGV2KGlzZHAsIGNoZWNrYml0cykpDQoJCXJldHVybjsNCglp
ZiAoIXJlY29uZmlnICYmIGlzZHAtPmlkX21hZGRyKSB7DQoJCWlzZHAtPmlk
X21hZGRyIC09IElTQV9IT0xFX1NUQVJUOw0KCQlpc2RwLT5pZF9tYWRkciAr
PSBhdGRldmJhc2U7DQoJfQ0KCWlmIChyZWNvbmZpZykgew0KCQlsYXN0X2Fs
aXZlID0gaXNkcC0+aWRfYWxpdmU7DQoJCWlzZHAtPmlkX3JlY29uZmlnID0g
MTsNCgl9DQoJZWxzZSB7DQoJCWxhc3RfYWxpdmUgPSAwOw0KCQlpc2RwLT5p
ZF9yZWNvbmZpZyA9IDA7DQoJfQ0KCWlkX2FsaXZlID0gKCpkcC0+cHJvYmUp
KGlzZHApOw0KCWlmIChpZF9hbGl2ZSkgew0KCQkvKg0KCQkgKiBPbmx5IHBy
aW50IHRoZSBJL08gYWRkcmVzcyByYW5nZSBpZiBpZF9hbGl2ZSAhPSAtMQ0K
CQkgKiBSaWdodCBub3cgdGhpcyBpcyBhIHRlbXBvcmFyeSBmaXgganVzdCBm
b3IgdGhlIG5ldw0KCQkgKiBOUFggY29kZSBzbyB0aGF0IGlmIGl0IGZpbmRz
IGEgNDg2IHRoYXQgY2FuIHVzZSB0cmFwDQoJCSAqIDE2IGl0IHdpbGwgbm90
IHJlcG9ydCBJL08gYWRkcmVzc2VzLg0KCQkgKiBSb2QgR3JpbWVzIDA0LzI2
Lzk0DQoJCSAqLw0KCQlpZiAoIWlzZHAtPmlkX3JlY29uZmlnKSB7DQoJCQlw
cmludGYoIiVzJWQiLCBkcC0+bmFtZSwgaXNkcC0+aWRfdW5pdCk7DQoJCQlp
ZiAoaWRfYWxpdmUgIT0gLTEpIHsNCgkJCQlwcmludGYoIiBhdCAweCV4Iiwg
aXNkcC0+aWRfaW9iYXNlKTsNCgkJCQlpZiAoaXNkcC0+aWRfaW9iYXNlICsg
aWRfYWxpdmUgLSAxICE9DQoJCQkJICAgIGlzZHAtPmlkX2lvYmFzZSkgew0K
CQkJCQlwcmludGYoIi0weCV4IiwNCgkJCQkJICAgICAgIGlzZHAtPmlkX2lv
YmFzZSArIGlkX2FsaXZlIC0gMSk7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKGlz
ZHAtPmlkX2lycSkNCgkJCQlwcmludGYoIiBpcnEgJWQiLCBmZnMoaXNkcC0+
aWRfaXJxKSAtIDEpOw0KCQkJaWYgKGlzZHAtPmlkX2RycSAhPSAtMSkNCgkJ
CQlwcmludGYoIiBkcnEgJWQiLCBpc2RwLT5pZF9kcnEpOw0KCQkJaWYgKGlz
ZHAtPmlkX21hZGRyKQ0KCQkJCXByaW50ZigiIG1hZGRyIDB4JWx4Iiwga3Z0
b3AoaXNkcC0+aWRfbWFkZHIpKTsNCgkJCWlmIChpc2RwLT5pZF9tc2l6ZSkN
CgkJCQlwcmludGYoIiBtc2l6ZSAlZCIsIGlzZHAtPmlkX21zaXplKTsNCgkJ
CWlmIChpc2RwLT5pZF9mbGFncykNCgkJCQlwcmludGYoIiBmbGFncyAweCV4
IiwgaXNkcC0+aWRfZmxhZ3MpOw0KCQkJaWYgKGlzZHAtPmlkX2lvYmFzZSAm
JiAhKGlzZHAtPmlkX2lvYmFzZSAmIDB4ZjMwMCkpIHsNCgkJCQlwcmludGYo
IiBvbiBtb3RoZXJib2FyZCIpOw0KCQkJfSBlbHNlIGlmIChpc2RwLT5pZF9p
b2Jhc2UgPj0gMHgxMDAwICYmDQoJCQkJICAgICEoaXNkcC0+aWRfaW9iYXNl
ICYgMHgzMDApKSB7DQoJCQkJcHJpbnRmICgiIG9uIGVpc2Egc2xvdCAlZCIs
DQoJCQkJCWlzZHAtPmlkX2lvYmFzZSA+PiAxMik7DQoJCQl9IGVsc2Ugew0K
CQkJCXByaW50ZiAoIiBvbiBpc2EiKTsNCgkJCX0NCgkJCXByaW50ZigiXG4i
KTsNCgkJCS8qDQoJCQkgKiBDaGVjayBmb3IgY29uZmxpY3RzIGFnYWluLiAg
VGhlIGRyaXZlciBtYXkgaGF2ZQ0KCQkJICogY2hhbmdlZCAqZHZwLiAgV2Ug
c2hvdWxkIHdlYWtlbiB0aGUgZWFybHkgY2hlY2sNCgkJCSAqIHNpbmNlIHRo
ZSBkcml2ZXIgbWF5IGhhdmUgYmVlbiBhYmxlIHRvIGNoYW5nZQ0KCQkJICog
KmR2cCB0byBhdm9pZCBjb25mbGljdHMgaWYgZ2l2ZW4gYSBjaGFuY2UuICBX
ZQ0KCQkJICogYWxyZWFkeSBza2lwIHRoZSBlYXJseSBjaGVjayBmb3IgSVJR
cyBhbmQgZm9yY2UNCgkJCSAqIGEgY2hlY2sgZm9yIElSUXMgaW4gdGhlIG5l
eHQgZ3JvdXAgb2YgY2hlY2tzLg0KCQkJICovDQoJCQljaGVja2JpdHMgfD0g
Q0NfSVJROw0KCQkJaWYgKGhhdmVzZWVuX2lzYWRldihpc2RwLCBjaGVja2Jp
dHMpKQ0KCQkJCXJldHVybjsNCgkJCWlzZHAtPmlkX2FsaXZlID0gaWRfYWxp
dmU7DQoJCX0NCgkJKCpkcC0+YXR0YWNoKShpc2RwKTsNCgkJaWYgKGlzZHAt
PmlkX2lycSkgew0KCQkJaWYgKG1wKQ0KCQkJCUlOVFJNQVNLKCptcCwgaXNk
cC0+aWRfaXJxKTsNCgkJCXJlZ2lzdGVyX2ludHIoZmZzKGlzZHAtPmlkX2ly
cSkgLSAxLCBpc2RwLT5pZF9pZCwNCgkJCQkgICAgICBpc2RwLT5pZF9yaV9m
bGFncywgaXNkcC0+aWRfaW50ciwNCgkJCQkgICAgICBtcCwgaXNkcC0+aWRf
dW5pdCk7DQoJCQlJTlRSRU4oaXNkcC0+aWRfaXJxKTsNCgkJfQ0KCX0gZWxz
ZSB7DQoJCWlmIChpc2RwLT5pZF9yZWNvbmZpZykgew0KCQkJKCpkcC0+YXR0
YWNoKShpc2RwKTsgLyogcmVjb25maWd1cmF0aW9uIGF0dGFjaCAqLw0KCQl9
DQoJCWlmICghbGFzdF9hbGl2ZSkgew0KCQkJaWYgKCFpc2RwLT5pZF9yZWNv
bmZpZykgew0KCQkJCXByaW50ZigiJXMlZCBub3QgZm91bmQiLA0KCQkJCSAg
ICAgICBkcC0+bmFtZSwgaXNkcC0+aWRfdW5pdCk7DQoJCQkJaWYgKGlzZHAt
PmlkX2lvYmFzZSkgew0KCQkJCQlwcmludGYoIiBhdCAweCV4IiwgaXNkcC0+
aWRfaW9iYXNlKTsNCgkJCQl9DQoJCQkJcHJpbnRmKCJcbiIpOw0KCQkJfQ0K
CQl9DQoJCWVsc2Ugew0KCQkJLyogVGhpcyBjb2RlIGhhcyBub3QgYmVlbiB0
ZXN0ZWQuLi4uICovDQoJCQlpZiAoaXNkcC0+aWRfaXJxKSB7DQoJCQkJSU5U
UkRJUyhpc2RwLT5pZF9pcnEpOw0KCQkJCXVucmVnaXN0ZXJfaW50cihmZnMo
aXNkcC0+aWRfaXJxKSAtIDEsDQoJCQkJCQlpc2RwLT5pZF9pbnRyKTsNCgkJ
CQlpZiAobXApDQoJCQkJCUlOVFJVTk1BU0soKm1wLCBpc2RwLT5pZF9pcnEp
Ow0KCQkJfQ0KCQl9DQoJfQ0KfQ0KDQovKg0KICogRmlsbCBpbiBkZWZhdWx0
IGludGVycnVwdCB0YWJsZSAoaW4gY2FzZSBvZiBzcHVydWlvdXMgaW50ZXJy
dXB0DQogKiBkdXJpbmcgY29uZmlndXJhdGlvbiBvZiBrZXJuZWwsIHNldHVw
IGludGVycnVwdCBjb250cm9sIHVuaXQNCiAqLw0Kdm9pZA0KaXNhX2RlZmF1
bHRpcnEoKQ0Kew0KCWludCBpOw0KDQoJLyogaWN1IHZlY3RvcnMgKi8NCglm
b3IgKGkgPSAwOyBpIDwgSUNVX0xFTjsgaSsrKQ0KCQl1bnJlZ2lzdGVyX2lu
dHIoaSwgKGludGhhbmQyX3QgKilOVUxMKTsNCg0KCS8qIGluaXRpYWxpemUg
ODI1OSdzICovDQoJb3V0YihJT19JQ1UxLCAweDExKTsJCS8qIHJlc2V0OyBw
cm9ncmFtIGRldmljZSwgZm91ciBieXRlcyAqLw0KCW91dGIoSU9fSUNVMSsx
LCBOUlNWSURUKTsJLyogc3RhcnRpbmcgYXQgdGhpcyB2ZWN0b3IgaW5kZXgg
Ki8NCglvdXRiKElPX0lDVTErMSwgMTw8Mik7CQkvKiBzbGF2ZSBvbiBsaW5l
IDIgKi8NCiNpZmRlZiBBVVRPX0VPSV8xDQoJb3V0YihJT19JQ1UxKzEsIDIg
fCAxKTsJCS8qIGF1dG8gRU9JLCA4MDg2IG1vZGUgKi8NCiNlbHNlDQoJb3V0
YihJT19JQ1UxKzEsIDEpOwkJLyogODA4NiBtb2RlICovDQojZW5kaWYNCglv
dXRiKElPX0lDVTErMSwgMHhmZik7CQkvKiBsZWF2ZSBpbnRlcnJ1cHRzIG1h
c2tlZCAqLw0KCW91dGIoSU9fSUNVMSwgMHgwYSk7CQkvKiBkZWZhdWx0IHRv
IElSUiBvbiByZWFkICovDQoJb3V0YihJT19JQ1UxLCAweGMwIHwgKDMgLSAx
KSk7CS8qIHByaSBvcmRlciAzLTcsIDAtMiAoY29tMiBmaXJzdCkgKi8NCg0K
CW91dGIoSU9fSUNVMiwgMHgxMSk7CQkvKiByZXNldDsgcHJvZ3JhbSBkZXZp
Y2UsIGZvdXIgYnl0ZXMgKi8NCglvdXRiKElPX0lDVTIrMSwgTlJTVklEVCs4
KTsJLyogc3RhcmluZyBhdCB0aGlzIHZlY3RvciBpbmRleCAqLw0KCW91dGIo
SU9fSUNVMisxLDIpOwkJLyogbXkgc2xhdmUgaWQgaXMgMiAqLw0KI2lmZGVm
IEFVVE9fRU9JXzINCglvdXRiKElPX0lDVTIrMSwgMiB8IDEpOwkJLyogYXV0
byBFT0ksIDgwODYgbW9kZSAqLw0KI2Vsc2UNCglvdXRiKElPX0lDVTIrMSwx
KTsJCS8qIDgwODYgbW9kZSAqLw0KI2VuZGlmDQoJb3V0YihJT19JQ1UyKzEs
IDB4ZmYpOwkJLyogbGVhdmUgaW50ZXJydXB0cyBtYXNrZWQgKi8NCglvdXRi
KElPX0lDVTIsIDB4MGEpOwkJLyogZGVmYXVsdCB0byBJUlIgb24gcmVhZCAq
Lw0KfQ0KDQpzdGF0aWMgY2FkZHJfdAlkbWFfYm91bmNlYnVmWzhdOw0Kc3Rh
dGljIHVfaW50CWRtYV9ib3VuY2VidWZzaXplWzhdOw0Kc3RhdGljIHVfaW50
OF90CWRtYV9ib3VuY2VkID0gMDsNCnN0YXRpYyB1X2ludDhfdAlkbWFfYnVz
eSA9IDA7CQkvKiBVc2VkIGluIGlzYV9kbWFzdGFydCgpICovDQpzdGF0aWMg
dV9pbnQ4X3QJZG1hX2ludXNlID0gMDsJCS8qIFVzZXIgZm9yIGFjcXVpcmUv
cmVsZWFzZSAqLw0Kc3RhdGljIHVfaW50OF90ICAgICAgICBkbWFfYXV0b19t
b2RlID0gMDsNCg0KI2RlZmluZSBWQUxJRF9ETUFfTUFTSyAoNykNCg0KLyog
aGlnaCBieXRlIG9mIGFkZHJlc3MgaXMgc3RvcmVkIGluIHRoaXMgcG9ydCBm
b3IgaS10aCBkbWEgY2hhbm5lbCAqLw0Kc3RhdGljIGludCBkbWFwYWdlcG9y
dFs4XSA9IHsgMHg4NywgMHg4MywgMHg4MSwgMHg4MiwgMHg4ZiwgMHg4Yiwg
MHg4OSwgMHg4YSB9Ow0KDQovKg0KICogU2V0dXAgYSBETUEgY2hhbm5lbCdz
IGJvdW5jZSBidWZmZXIuDQogKi8NCnZvaWQNCmlzYV9kbWFpbml0KGNoYW4s
IGJvdW5jZWJ1ZnNpemUpDQoJaW50IGNoYW47DQoJdV9pbnQgYm91bmNlYnVm
c2l6ZTsNCnsNCgl2b2lkICpidWY7DQoNCiNpZmRlZiBESUFHTk9TVElDDQoJ
aWYgKGNoYW4gJiB+VkFMSURfRE1BX01BU0spDQoJCXBhbmljKCJpc2FfZG1h
aW5pdDogY2hhbm5lbCBvdXQgb2YgcmFuZ2UiKTsNCg0KCWlmIChkbWFfYm91
bmNlYnVmW2NoYW5dICE9IE5VTEwpDQoJCXBhbmljKCJpc2FfZG1haW5pdDog
aW1wb3NzaWJsZSByZXF1ZXN0Iik7IA0KI2VuZGlmDQoNCglkbWFfYm91bmNl
YnVmc2l6ZVtjaGFuXSA9IGJvdW5jZWJ1ZnNpemU7DQoNCgkvKiBUcnkgbWFs
bG9jKCkgZmlyc3QuICBJdCB3b3JrcyBiZXR0ZXIgaWYgaXQgd29ya3MuICov
DQoJYnVmID0gbWFsbG9jKGJvdW5jZWJ1ZnNpemUsIE1fREVWQlVGLCBNX05P
V0FJVCk7DQoJaWYgKGJ1ZiAhPSBOVUxMKSB7DQoJCWlmIChpc2FfZG1hcmFu
Z2VjaGVjayhidWYsIGJvdW5jZWJ1ZnNpemUsIGNoYW4pID09IDApIHsNCgkJ
CWRtYV9ib3VuY2VidWZbY2hhbl0gPSBidWY7DQoJCQlyZXR1cm47DQoJCX0N
CgkJZnJlZShidWYsIE1fREVWQlVGKTsNCgl9DQoJYnVmID0gY29udGlnbWFs
bG9jKGJvdW5jZWJ1ZnNpemUsIE1fREVWQlVGLCBNX05PV0FJVCwgMHVsLCAw
eGZmZmZmZnVsLA0KCQkJICAgMXVsLCBjaGFuICYgNCA/IDB4MjAwMDB1bCA6
IDB4MTAwMDB1bCk7DQoJaWYgKGJ1ZiA9PSBOVUxMKQ0KCQlwcmludGYoImlz
YV9kbWFpbml0KCVkLCAlZCkgZmFpbGVkXG4iLCBjaGFuLCBib3VuY2VidWZz
aXplKTsNCgllbHNlDQoJCWRtYV9ib3VuY2VidWZbY2hhbl0gPSBidWY7DQp9
DQoNCi8qDQogKiBSZWdpc3RlciBhIERNQSBjaGFubmVsJ3MgdXNhZ2UuICBV
c3VhbGx5IGNhbGxlZCBmcm9tIGEgZGV2aWNlIGRyaXZlcg0KICogaW4gb3Bl
bigpIG9yIGR1cmluZyBpdCdzIGluaXRpYWxpemF0aW9uLg0KICovDQppbnQN
CmlzYV9kbWFfYWNxdWlyZShjaGFuKQ0KCWludCBjaGFuOw0Kew0KI2lmZGVm
IERJQUdOT1NUSUMNCglpZiAoY2hhbiAmIH5WQUxJRF9ETUFfTUFTSykNCgkJ
cGFuaWMoImlzYV9kbWFfYWNxdWlyZTogY2hhbm5lbCBvdXQgb2YgcmFuZ2Ui
KTsNCiNlbmRpZg0KDQoJaWYgKGRtYV9pbnVzZSAmICgxIDw8IGNoYW4pKSB7
DQoJCXByaW50ZigiaXNhX2RtYV9hY3F1aXJlOiBjaGFubmVsICVkIGFscmVh
ZHkgaW4gdXNlXG4iLCBjaGFuKTsNCgkJcmV0dXJuIChFQlVTWSk7DQoJfQ0K
CWRtYV9pbnVzZSB8PSAoMSA8PCBjaGFuKTsNCglkbWFfYXV0b19tb2RlICY9
IH4oMSA8PCBjaGFuKTsNCg0KCXJldHVybiAoMCk7DQp9DQoNCi8qDQogKiBV
bnJlZ2lzdGVyIGEgRE1BIGNoYW5uZWwncyB1c2FnZS4gIFVzdWFsbHkgY2Fs
bGVkIGZyb20gYSBkZXZpY2UgZHJpdmVyDQogKiBkdXJpbmcgY2xvc2UoKSBv
ciBkdXJpbmcgaXQncyBzaHV0ZG93bi4NCiAqLw0Kdm9pZA0KaXNhX2RtYV9y
ZWxlYXNlKGNoYW4pDQoJaW50IGNoYW47DQp7DQojaWZkZWYgRElBR05PU1RJ
Qw0KCWlmIChjaGFuICYgflZBTElEX0RNQV9NQVNLKQ0KCQlwYW5pYygiaXNh
X2RtYV9yZWxlYXNlOiBjaGFubmVsIG91dCBvZiByYW5nZSIpOw0KDQoJaWYg
KChkbWFfaW51c2UgJiAoMSA8PCBjaGFuKSkgPT0gMCkNCgkJcHJpbnRmKCJp
c2FfZG1hX3JlbGVhc2U6IGNoYW5uZWwgJWQgbm90IGluIHVzZVxuIiwgY2hh
bik7DQojZW5kaWYNCg0KCWlmIChkbWFfYnVzeSAmICgxIDw8IGNoYW4pKSB7
DQoJCWRtYV9idXN5ICY9IH4oMSA8PCBjaGFuKTsNCgkJLyogDQoJCSAqIFhY
WCBXZSBzaG91bGQgYWxzbyBkbyAiZG1hX2JvdW5jZWQgJj0gKDEgPDwgY2hh
bik7Ig0KCQkgKiBiZWNhdXNlIHdlIGFyZSBhY3Rpbmcgb24gYmVoYWxmIG9m
IGlzYV9kbWFkb25lKCkgd2hpY2gNCgkJICogd2FzIG5vdCBjYWxsZWQgdG8g
ZW5kIHRoZSBsYXN0IERNQSBvcGVyYXRpb24uICBUaGlzIGRvZXMNCgkJICog
bm90IG1hdHRlciBub3csIGJ1dCBpdCBtYXkgaW4gdGhlIGZ1dHVyZS4NCgkJ
ICovDQoJfQ0KDQoJZG1hX2ludXNlICY9IH4oMSA8PCBjaGFuKTsNCglkbWFf
YXV0b19tb2RlICY9IH4oMSA8PCBjaGFuKTsNCn0NCg0KLyoNCiAqIGlzYV9k
bWFjYXNjYWRlKCk6IHByb2dyYW0gODIzNyBETUEgY29udHJvbGxlciBjaGFu
bmVsIHRvIGFjY2VwdA0KICogZXh0ZXJuYWwgZG1hIGNvbnRyb2wgYnkgYSBi
b2FyZC4NCiAqLw0Kdm9pZCBpc2FfZG1hY2FzY2FkZShjaGFuKQ0KCWludCBj
aGFuOw0Kew0KI2lmZGVmIERJQUdOT1NUSUMNCglpZiAoY2hhbiAmIH5WQUxJ
RF9ETUFfTUFTSykNCgkJcGFuaWMoImlzYV9kbWFjYXNjYWRlOiBjaGFubmVs
IG91dCBvZiByYW5nZSIpOw0KI2VuZGlmDQoNCgkvKiBzZXQgZG1hIGNoYW5u
ZWwgbW9kZSwgYW5kIHNldCBkbWEgY2hhbm5lbCBtb2RlICovDQoJaWYgKChj
aGFuICYgNCkgPT0gMCkgew0KCQlvdXRiKERNQTFfTU9ERSwgRE1BMzdNRF9D
QVNDQURFIHwgY2hhbik7DQoJCW91dGIoRE1BMV9TTVNLLCBjaGFuKTsNCgl9
IGVsc2Ugew0KCQlvdXRiKERNQTJfTU9ERSwgRE1BMzdNRF9DQVNDQURFIHwg
KGNoYW4gJiAzKSk7DQoJCW91dGIoRE1BMl9TTVNLLCBjaGFuICYgMyk7DQoJ
fQ0KfQ0KDQovKg0KICogUXVlcnkgdGhlIHByb2dyZXNzIG9mIGEgdHJhbnNm
ZXIgb24gYSBETUEgY2hhbm5lbC4NCiAqDQogKiBUbyBhdm9pZCBoYXZpbmcg
dG8gaW50ZXJydXB0IGEgdHJhbnNmZXIgaW4gcHJvZ3Jlc3MsIHdlIHNhbXBs
ZQ0KICogZWFjaCBvZiB0aGUgaGlnaCBhbmQgbG93IGRhdGFieXRlcyB0d2lj
ZSwgYW5kIGFwcGx5IHRoZSBmb2xsb3dpbmcNCiAqIGxvZ2ljIHRvIGRldGVy
bWluZSB0aGUgY29ycmVjdCBjb3VudC4NCiAqDQogKiBSZWFkcyBhcmUgcGVy
Zm9ybWVkIHdpdGggaW50ZXJydXB0cyBkaXNhYmxlZCwgdGh1cyBpdCBpcyB0
byBiZQ0KICogZXhwZWN0ZWQgdGhhdCB0aGUgdGltZSBiZXR3ZWVuIHJlYWRz
IGlzIHZlcnkgc21hbGwuICBBdCBtb3N0DQogKiBvbmUgcm9sbG92ZXIgaW4g
dGhlIGxvdyBjb3VudCBieXRlIGNhbiBiZSBleHBlY3RlZCB3aXRoaW4gdGhl
DQogKiBmb3VyIHJlYWRzIHRoYXQgYXJlIHBlcmZvcm1lZC4NCiAqDQogKiBU
aGVyZSBhcmUgdGhyZWUgZ2FwcyBpbiB3aGljaCBhIHJvbGxvdmVyIGNhbiBv
Y2N1ciA6DQogKg0KICogLSByZWFkIGxvdzEgDQogKiAgICAgICAgICAgICAg
Z2FwMQ0KICogLSByZWFkIGhpZ2gxDQogKiAgICAgICAgICAgICAgZ2FwMg0K
ICogLSByZWFkIGxvdzINCiAqICAgICAgICAgICAgICBnYXAzDQogKiAtIHJl
YWQgaGlnaDINCiAqDQogKiBJZiBhIHJvbGxvdmVyIG9jY3VycyBpbiBnYXAx
IG9yIGdhcDIsIHRoZSBsb3cyIHZhbHVlIHdpbGwgYmUNCiAqIGdyZWF0ZXIg
dGhhbiB0aGUgbG93MSB2YWx1ZS4gIEluIHRoaXMgY2FzZSwgbG93MiBhbmQg
aGlnaDIgYXJlIGENCiAqIGNvcnJlc3BvbmRpbmcgcGFpci4NCiAqICAgICAN
CiAqIEluIGFueSBvdGhlciBjYXNlLCBsb3cxIGFuZCBoaWdoMSBjYW4gYmUg
Y29uc2lkZXJlZCB0byBiZSBjb3JyZWN0Lg0KICogICAgICAgICAgICAgDQog
KiBUaGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJl
bWFpbmluZyBpbiB0aGUgdHJhbnNmZXIsDQogKiBvciAtMSBpZiB0aGUgY2hh
bm5lbCByZXF1ZXN0ZWQgaXMgbm90IGFjdGl2ZS4NCiAqDQogKi8gICAgDQpp
bnQNCmlzYV9kbWFzdGF0dXMoaW50IGNoYW4pIA0KeyAgICAgIA0KICAgICAg
ICAgdV9sb25nICBjbnQgPSAwOw0KICAgICAgICBpbnQgICAgIGZmcG9ydCwg
d2Fwb3J0LCBzOw0KICAgICAgICAgdV9sb25nICBsb3csIGhpZ2gsIGxvdzIs
IGhpZ2gyOw0KIA0KICAgICAgICAgLyogY2hhbm5lbCBhY3RpdmU/ICovDQog
ICAgICAgICBpZiAoKGRtYV9pbnVzZSAmICgxIDw8IGNoYW4pKSA9PSAwKSB7
DQogICAgICAgICAgICAgICAgIHByaW50ZigiaXNhX2RtYXN0YXR1czogY2hh
bm5lbCAlZCBub3QgaW4gdXNlXG4iLCBjaGFuKTsNCiAgICAgICAgICAgICAg
ICAgcmV0dXJuKC0xKTsNCiAgICAgICAgIH0NCiAgDQogICAgICAgICAvKiAN
CiAgICAgICAgICogZG8gbm90IHByaW50IGFuIGVycm9yIG1lc3NhZ2UgaWYg
dGhlIGNoYW4gaXMgbm90IGJ1c3ksDQogICAgICAgICAqIGl0IG1pZ2h0IGp1
c3QgYmUgYSByYWNlIGNvbmRpdGlvbi4NCiAgICAgICAgICovDQogICAgICAg
ICBpZiAoICEoZG1hX2J1c3kgJiAoMSA8PCBjaGFuKSkgJiYgIShkbWFfYXV0
b19tb2RlICYgKDE8PGNoYW4pKSApDQogICAgICAgICAgICAgICAgIHJldHVy
bigwKTsgDQogIA0KICAgICAgICAgaWYgKGNoYW4gPCA0KSB7ICAgICAgICAg
ICAgICAgICAvKiBsb3cgRE1BIGNvbnRyb2xsZXIgKi8NCiAgICAgICAgICAg
ICAgICAgZmZwb3J0ID0gRE1BMV9GRkM7IA0KICAgICAgICAgICAgICAgICB3
YXBvcnQgPSBETUExX0NITihjaGFuKSArIDE7DQogICAgICAgICB9IGVsc2Ug
eyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGhpZ2ggRE1BIGNvbnRyb2xs
ZXIgKi8NCiAgICAgICAgICAgICAgICAgZmZwb3J0ID0gRE1BMl9GRkM7DQog
ICAgICAgICAgICAgICAgIHdhcG9ydCA9IERNQTJfQ0hOKGNoYW4gLSA0KSAr
IDI7DQogICAgICAgICB9ICAgICAgIA0KICANCiAgICAgICAgIGRpc2FibGVf
aW50cigpOyAgICAgICAgICAgICAgICAgIC8qIG5vIGludGVycnVwdHMgTXIg
Sm9uZXMhICovDQogICAgICAgICBvdXRiKGZmcG9ydCwgMCk7ICAgICAgICAg
ICAgICAgIC8qIGNsZWFyIHJlZ2lzdGVyIExTQiBmbGlwZmxvcCAqLw0KICAg
ICAgICAgbG93ID0gaW5iKHdhcG9ydCk7DQogICAgICAgICBoaWdoID0gaW5i
KHdhcG9ydCk7DQogICAgICAgICBvdXRiKGZmcG9ydCwgMCk7ICAgICAgICAg
ICAgICAgIC8qIGNsZWFyIGFnYWluIChwYXJhbm9pYT8gKi8NCiAgICAgICAg
IGxvdzIgPSBpbmIod2Fwb3J0KTsNCiAgICAgICAgIGhpZ2gyID0gaW5iKHdh
cG9ydCk7DQogICAgICAgICBlbmFibGVfaW50cigpOw0KICAgICAgICAgICAg
ICAgIA0KICAgICAgICAgLyogbm93IGRlY2lkZSBpZiBhIHdyYXAgaGFzIHRy
aWVkIHRvIHNrZXcgb3VyIHJlc3VsdHMgKi8NCiAgICAgICAgIGlmIChsb3cg
Pj0gbG93MikNCiAgICAgICAgICAgICAgICAgY250ID0gbG93ICsgKGhpZ2gg
PDwgOCkgOw0KICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICBjbnQg
PSBsb3cyICsgKGhpZ2gyIDw8IDgpIDsNCiANCiAgICAgICAgY250ID0gKGNu
dCArIDEpICYgMHhmZmZmIDsNCiAgDQogICAgICAgIGlmIChjaGFuID49NCkg
ICAvKiAxNi1iaXQgY2hhbnMgdHJhbnNmZXIgd29yZHMgKi8NCiAgICAgICAg
ICAgICAgICBjbnQgKj0gMiA7DQogICAgICAgICByZXR1cm4oY250KTsNCn0N
Cg0KDQovKg0KICogaXNhX2RtYXN0YXJ0KCk6IHByb2dyYW0gODIzNyBETUEg
Y29udHJvbGxlciBjaGFubmVsLCBhdm9pZCBwYWdlIGFsaWdubWVudA0KICog
cHJvYmxlbXMgYnkgdXNpbmcgYSBib3VuY2UgYnVmZmVyLg0KICovDQp2b2lk
IGlzYV9kbWFzdGFydChpbnQgZmxhZ3MsIGNhZGRyX3QgYWRkciwgdV9pbnQg
bmJ5dGVzLCBpbnQgY2hhbikNCnsNCgl2bV9vZmZzZXRfdCBwaHlzOw0KCWlu
dCB3YXBvcnQ7DQoJY2FkZHJfdCBuZXdhZGRyOw0KDQojaWZkZWYgRElBR05P
U1RJQw0KCWlmIChjaGFuICYgflZBTElEX0RNQV9NQVNLKQ0KCQlwYW5pYygi
aXNhX2RtYXN0YXJ0OiBjaGFubmVsIG91dCBvZiByYW5nZSIpOw0KDQoJaWYg
KChjaGFuIDwgNCAmJiBuYnl0ZXMgPiAoMTw8MTYpKQ0KCSAgICB8fCAoY2hh
biA+PSA0ICYmIChuYnl0ZXMgPiAoMTw8MTcpIHx8ICh1X2ludClhZGRyICYg
MSkpKQ0KCQlwYW5pYygiaXNhX2RtYXN0YXJ0OiBpbXBvc3NpYmxlIHJlcXVl
c3QiKTsNCiNlbmRpZg0KCWlmICgoZG1hX2ludXNlICYgKDEgPDwgY2hhbikp
ID09IDApDQoJCXByaW50ZigiaXNhX2RtYXN0YXJ0OiBjaGFubmVsICVkIG5v
dCBhY3F1aXJlZFxuIiwgY2hhbik7DQoNCiAgICBpZiAoIShmbGFncyAmIEJf
UkFXKSkNCglpZiAoZG1hX2J1c3kgJiAoMSA8PCBjaGFuKSkNCgkJcHJpbnRm
KCJpc2FfZG1hc3RhcnQ6IGNoYW5uZWwgJWQgYnVzeVxuIiwgY2hhbik7DQoN
CglkbWFfYnVzeSB8PSAoMSA8PCBjaGFuKTsNCg0KCWlmIChpc2FfZG1hcmFu
Z2VjaGVjayhhZGRyLCBuYnl0ZXMsIGNoYW4pKSB7DQoJCWlmIChkbWFfYm91
bmNlYnVmW2NoYW5dID09IE5VTEwNCgkJICAgIHx8IGRtYV9ib3VuY2VidWZz
aXplW2NoYW5dIDwgbmJ5dGVzKQ0KCQkJcGFuaWMoImlzYV9kbWFzdGFydDog
YmFkIGJvdW5jZSBidWZmZXIiKTsgDQoJCWRtYV9ib3VuY2VkIHw9ICgxIDw8
IGNoYW4pOw0KCQluZXdhZGRyID0gZG1hX2JvdW5jZWJ1ZltjaGFuXTsNCg0K
CQkvKiBjb3B5IGJvdW5jZSBidWZmZXIgb24gd3JpdGUgKi8NCgkJaWYgKCEo
ZmxhZ3MgJiBCX1JFQUQpKQ0KCQkJYmNvcHkoYWRkciwgbmV3YWRkciwgbmJ5
dGVzKTsNCgkJYWRkciA9IG5ld2FkZHI7DQoJfQ0KDQoJLyogdHJhbnNsYXRl
IHRvIHBoeXNpY2FsICovDQoJcGh5cyA9IHBtYXBfZXh0cmFjdChwbWFwX2tl
cm5lbCgpLCAodm1fb2Zmc2V0X3QpYWRkcik7DQoNCiAgICAgICAgaWYgKGZs
YWdzICYgQl9SQVcpIA0KICAgICAgICAgICAgICAgIGRtYV9hdXRvX21vZGUg
fD0gKDEgPDwgY2hhbik7DQogICAgICAgIGVsc2UNCiAgICAgICAgICAgICAg
ICBkbWFfYXV0b19tb2RlICY9IH4oMSA8PCBjaGFuKTsNCg0KDQoJaWYgKChj
aGFuICYgNCkgPT0gMCkgew0KCQkvKg0KCQkgKiBQcm9ncmFtIG9uZSBvZiBE
TUEgY2hhbm5lbHMgMC4uMy4gIFRoZXNlIGFyZQ0KCQkgKiBieXRlIG1vZGUg
Y2hhbm5lbHMuDQoJCSAqLw0KCQkvKiBzZXQgZG1hIGNoYW5uZWwgbW9kZSwg
YW5kIHJlc2V0IGFkZHJlc3MgZmYgKi8NCg0KCQkvKiBJZiBCX1JBVyBmbGFn
IGlzIHNldCwgdGhlbiB1c2UgYXV0b2luaXRpYWxpc2UgbW9kZSAqLw0KCQlp
ZiAoZmxhZ3MgJiBCX1JBVykgew0KCQkgIGlmIChmbGFncyAmIEJfUkVBRCkN
CgkJCW91dGIoRE1BMV9NT0RFLCBETUEzN01EX0FVVE98RE1BMzdNRF9XUklU
RXxjaGFuKTsNCgkJICBlbHNlDQoJCQlvdXRiKERNQTFfTU9ERSwgRE1BMzdN
RF9BVVRPfERNQTM3TURfUkVBRHxjaGFuKTsNCgkJfQ0KCQllbHNlDQoJCWlm
IChmbGFncyAmIEJfUkVBRCkNCgkJCW91dGIoRE1BMV9NT0RFLCBETUEzN01E
X1NJTkdMRXxETUEzN01EX1dSSVRFfGNoYW4pOw0KCQllbHNlDQoJCQlvdXRi
KERNQTFfTU9ERSwgRE1BMzdNRF9TSU5HTEV8RE1BMzdNRF9SRUFEfGNoYW4p
Ow0KCQlvdXRiKERNQTFfRkZDLCAwKTsNCg0KCQkvKiBzZW5kIHN0YXJ0IGFk
ZHJlc3MgKi8NCgkJd2Fwb3J0ID0gIERNQTFfQ0hOKGNoYW4pOw0KCQlvdXRi
KHdhcG9ydCwgcGh5cyk7DQoJCW91dGIod2Fwb3J0LCBwaHlzPj44KTsNCgkJ
b3V0YihkbWFwYWdlcG9ydFtjaGFuXSwgcGh5cz4+MTYpOw0KDQoJCS8qIHNl
bmQgY291bnQgKi8NCgkJb3V0Yih3YXBvcnQgKyAxLCAtLW5ieXRlcyk7DQoJ
CW91dGIod2Fwb3J0ICsgMSwgbmJ5dGVzPj44KTsNCg0KCQkvKiB1bm1hc2sg
Y2hhbm5lbCAqLw0KCQlvdXRiKERNQTFfU01TSywgY2hhbik7DQoJfSBlbHNl
IHsNCgkJLyoNCgkJICogUHJvZ3JhbSBvbmUgb2YgRE1BIGNoYW5uZWxzIDQu
LjcuICBUaGVzZSBhcmUNCgkJICogd29yZCBtb2RlIGNoYW5uZWxzLg0KCQkg
Ki8NCgkJLyogc2V0IGRtYSBjaGFubmVsIG1vZGUsIGFuZCByZXNldCBhZGRy
ZXNzIGZmICovDQoNCgkJLyogSWYgQl9SQVcgZmxhZyBpcyBzZXQsIHRoZW4g
dXNlIGF1dG9pbml0aWFsaXNlIG1vZGUgKi8NCgkJaWYgKGZsYWdzICYgQl9S
QVcpIHsNCgkJICBpZiAoZmxhZ3MgJiBCX1JFQUQpDQoJCQlvdXRiKERNQTJf
TU9ERSwgRE1BMzdNRF9BVVRPfERNQTM3TURfV1JJVEV8KGNoYW4mMykpOw0K
CQkgIGVsc2UNCgkJCW91dGIoRE1BMl9NT0RFLCBETUEzN01EX0FVVE98RE1B
MzdNRF9SRUFEfChjaGFuJjMpKTsNCgkJfQ0KCQllbHNlDQoJCWlmIChmbGFn
cyAmIEJfUkVBRCkNCgkJCW91dGIoRE1BMl9NT0RFLCBETUEzN01EX1NJTkdM
RXxETUEzN01EX1dSSVRFfChjaGFuJjMpKTsNCgkJZWxzZQ0KCQkJb3V0YihE
TUEyX01PREUsIERNQTM3TURfU0lOR0xFfERNQTM3TURfUkVBRHwoY2hhbiYz
KSk7DQoJCW91dGIoRE1BMl9GRkMsIDApOw0KDQoJCS8qIHNlbmQgc3RhcnQg
YWRkcmVzcyAqLw0KCQl3YXBvcnQgPSBETUEyX0NITihjaGFuIC0gNCk7DQoJ
CW91dGIod2Fwb3J0LCBwaHlzPj4xKTsNCgkJb3V0Yih3YXBvcnQsIHBoeXM+
PjkpOw0KCQlvdXRiKGRtYXBhZ2Vwb3J0W2NoYW5dLCBwaHlzPj4xNik7DQoN
CgkJLyogc2VuZCBjb3VudCAqLw0KCQluYnl0ZXMgPj49IDE7DQoJCW91dGIo
d2Fwb3J0ICsgMiwgLS1uYnl0ZXMpOw0KCQlvdXRiKHdhcG9ydCArIDIsIG5i
eXRlcz4+OCk7DQoNCgkJLyogdW5tYXNrIGNoYW5uZWwgKi8NCgkJb3V0YihE
TUEyX1NNU0ssIGNoYW4gJiAzKTsNCgl9DQp9DQoNCi8qDQogKiB0aGlzIHN0
b3BzIHRoZSBkbWEgY2hhbm5lbCBhbmQgcmV0dXJucyB0aGUgcmVzaWR1YWwg
Y291bnQNCiAqIGRlcml2ZWQgY2FsbGluZyBpc2FfZG1hc3RhdHVzDQogKi8g
ICAgDQppbnQgaXNhX2RtYXN0b3AoaW50IGNoYW4pDQp7DQogICAgIGlmICgg
IShkbWFfaW51c2UgJiAoMSA8PCBjaGFuKSkgKQ0KICAgICAgICBwcmludGYo
ImlzYV9kbWFzdG9wOiBjaGFubmVsICVkIG5vdCBhY3F1aXJlZFxuIiwgY2hh
bik7DQogICAgIGlmICggISAoZG1hX2J1c3kgJiAoMSA8PCBjaGFuKSkgICYm
DQogICAgICAgICAhIChkbWFfYXV0b19tb2RlICYgKDEgPDwgY2hhbikpICkN
CiAgICAgICAgcHJpbnRmKCJpc2FfZG1hc3RvcDogY2hhbm5lbCAlZCBub3Qg
YWN0aXZlXG4iLCBjaGFuKTsNCiAgICAgaWYgKCBjaGFuICYgNCApDQogICAg
ICAgIG91dGIoRE1BMl9TTVNLLCAoY2hhbiAmIDMpIHwgNCAvKiBkaXNhYmxl
IG1hc2sgKi8pOw0KICAgICBlbHNlICAgDQogICAgICAgIG91dGIoRE1BMV9T
TVNLLCAoY2hhbiAmIDMpIHwgNCAvKiBkaXNhYmxlIG1hc2sgKi8pOw0KICAg
ICByZXR1cm4gaXNhX2RtYXN0YXR1cyhjaGFuKTsNCn0gICAgICANCg0Kdm9p
ZCBpc2FfZG1hZG9uZShpbnQgZmxhZ3MsIGNhZGRyX3QgYWRkciwgaW50IG5i
eXRlcywgaW50IGNoYW4pDQp7ICANCiNpZmRlZiBESUFHTk9TVElDDQoJaWYg
KGNoYW4gJiB+VkFMSURfRE1BX01BU0spDQoJCXBhbmljKCJpc2FfZG1hZG9u
ZTogY2hhbm5lbCBvdXQgb2YgcmFuZ2UiKTsNCg0KCWlmICgoZG1hX2ludXNl
ICYgKDEgPDwgY2hhbikpID09IDApDQoJCXByaW50ZigiaXNhX2RtYWRvbmU6
IGNoYW5uZWwgJWQgbm90IGFjcXVpcmVkXG4iLCBjaGFuKTsNCiNlbmRpZg0K
DQogICAgICAgIGlmICggISAoZG1hX2J1c3kgJiAoMSA8PCBjaGFuKSkgICYm
DQogICAgICAgICAgICAgISAoZG1hX2F1dG9fbW9kZSAmICgxIDw8IGNoYW4p
KSApDQogICAgICAgICAgICAgICAgcHJpbnRmKCJpc2FfZG1hZG9uZTogY2hh
bm5lbCAlZCBub3QgYWN0aXZlXG4iLCBjaGFuKTsNCg0KCWlmIChkbWFfYm91
bmNlZCAmICgxIDw8IGNoYW4pKSB7DQoJCS8qIGNvcHkgYm91bmNlIGJ1ZmZl
ciBvbiByZWFkICovDQoJCWlmIChmbGFncyAmIEJfUkVBRCkNCgkJCWJjb3B5
KGRtYV9ib3VuY2VidWZbY2hhbl0sIGFkZHIsIG5ieXRlcyk7DQoNCgkJZG1h
X2JvdW5jZWQgJj0gfigxIDw8IGNoYW4pOw0KCX0NCglkbWFfYnVzeSAmPSB+
KDEgPDwgY2hhbik7DQp9DQoNCi8qDQogKiBDaGVjayBmb3IgcHJvYmxlbXMg
d2l0aCB0aGUgYWRkcmVzcyByYW5nZSBvZiBhIERNQSB0cmFuc2Zlcg0KICog
KG5vbi1jb250aWd1b3VzIHBoeXNpY2FsIHBhZ2VzLCBvdXRzaWRlIG9mIGJ1
cyBhZGRyZXNzIHNwYWNlLA0KICogY3Jvc3NpbmcgRE1BIHBhZ2UgYm91bmRh
cmllcykuDQogKiBSZXR1cm4gdHJ1ZSBpZiBzcGVjaWFsIGhhbmRsaW5nIG5l
ZWRlZC4NCiAqLw0KDQpzdGF0aWMgaW50DQppc2FfZG1hcmFuZ2VjaGVjayhj
YWRkcl90IHZhLCB1X2ludCBsZW5ndGgsIGludCBjaGFuKSB7DQoJdm1fb2Zm
c2V0X3QgcGh5cywgcHJpb3JwYWdlID0gMCwgZW5kdmE7DQoJdV9pbnQgZG1h
X3BnbXNrID0gKGNoYW4gJiA0KSA/ICB+KDEyOCoxMDI0LTEpIDogfig2NCox
MDI0LTEpOw0KDQoJZW5kdmEgPSAodm1fb2Zmc2V0X3Qpcm91bmRfcGFnZSh2
YSArIGxlbmd0aCk7DQoJZm9yICg7IHZhIDwgKGNhZGRyX3QpIGVuZHZhIDsg
dmEgKz0gUEFHRV9TSVpFKSB7DQoJCXBoeXMgPSB0cnVuY19wYWdlKHBtYXBf
ZXh0cmFjdChwbWFwX2tlcm5lbCgpLCAodm1fb2Zmc2V0X3QpdmEpKTsNCiNk
ZWZpbmUgSVNBUkFNX0VORAlSQU1fRU5EDQoJCWlmIChwaHlzID09IDApDQoJ
CQlwYW5pYygiaXNhX2RtYWNoZWNrOiBubyBwaHlzaWNhbCBwYWdlIHByZXNl
bnQiKTsNCgkJaWYgKHBoeXMgPj0gSVNBUkFNX0VORCkNCgkJCXJldHVybiAo
MSk7DQoJCWlmIChwcmlvcnBhZ2UpIHsNCgkJCWlmIChwcmlvcnBhZ2UgKyBQ
QUdFX1NJWkUgIT0gcGh5cykNCgkJCQlyZXR1cm4gKDEpOw0KCQkJLyogY2hl
Y2sgaWYgY3Jvc3NpbmcgYSBETUEgcGFnZSBib3VuZGFyeSAqLw0KCQkJaWYg
KCgodV9pbnQpcHJpb3JwYWdlIF4gKHVfaW50KXBoeXMpICYgZG1hX3BnbXNr
KQ0KCQkJCXJldHVybiAoMSk7DQoJCX0NCgkJcHJpb3JwYWdlID0gcGh5czsN
Cgl9DQoJcmV0dXJuICgwKTsNCn0NCg0KI2RlZmluZSBOTUlfUEFSSVRZICgx
IDw8IDcpDQojZGVmaW5lIE5NSV9JT0NIQU4gKDEgPDwgNikNCiNkZWZpbmUg
RU5NSV9XQVRDSERPRyAoMSA8PCA3KQ0KI2RlZmluZSBFTk1JX0JVU1RJTUVS
ICgxIDw8IDYpDQojZGVmaW5lIEVOTUlfSU9TVEFUVVMgKDEgPDwgNSkNCg0K
LyoNCiAqIEhhbmRsZSBhIE5NSSwgcG9zc2libHkgYSBtYWNoaW5lIGNoZWNr
Lg0KICogcmV0dXJuIHRydWUgdG8gcGFuaWMgc3lzdGVtLCBmYWxzZSB0byBp
Z25vcmUuDQogKi8NCmludA0KaXNhX25taShjZCkNCglpbnQgY2Q7DQp7DQoJ
aW50IGlzYV9wb3J0ID0gaW5iKDB4NjEpOw0KCWludCBlaXNhX3BvcnQgPSBp
bmIoMHg0NjEpOw0KDQoJaWYgKGlzYV9wb3J0ICYgTk1JX1BBUklUWSkNCgkJ
cGFuaWMoIlJBTSBwYXJpdHkgZXJyb3IsIGxpa2VseSBoYXJkd2FyZSBmYWls
dXJlLiIpOw0KDQoJaWYgKGlzYV9wb3J0ICYgTk1JX0lPQ0hBTikNCgkJcGFu
aWMoIkkvTyBjaGFubmVsIGNoZWNrLCBsaWtlbHkgaGFyZHdhcmUgZmFpbHVy
ZS4iKTsNCg0KCS8qDQoJICogT24gYSByZWFsIEVJU0EgbWFjaGluZSwgdGhp
cyB3aWxsIG5ldmVyIGhhcHBlbi4gIEhvd2V2ZXIgaXQgY2FuDQoJICogaGFw
cGVuIG9uIElTQSBtYWNoaW5lcyB3aGljaCBpbXBsZW1lbnQgWFQgc3R5bGUg
ZmxvYXRpbmcgcG9pbnQNCgkgKiBlcnJvciBoYW5kbGluZyAodmVyeSByYXJl
KS4gIFNhdmUgdGhlbSBmcm9tIGEgbWVhbmluZ2xlc3MgcGFuaWMuDQoJICov
DQoJaWYgKGVpc2FfcG9ydCA9PSAweGZmKQ0KCQlyZXR1cm4oMCk7DQoNCglp
ZiAoZWlzYV9wb3J0ICYgRU5NSV9XQVRDSERPRykNCgkJcGFuaWMoIkVJU0Eg
d2F0Y2hkb2cgdGltZXIgZXhwaXJlZCwgbGlrZWx5IGhhcmR3YXJlIGZhaWx1
cmUuIik7DQoNCglpZiAoZWlzYV9wb3J0ICYgRU5NSV9CVVNUSU1FUikNCgkJ
cGFuaWMoIkVJU0EgYnVzIHRpbWVvdXQsIGxpa2VseSBoYXJkd2FyZSBmYWls
dXJlLiIpOw0KDQoJaWYgKGVpc2FfcG9ydCAmIEVOTUlfSU9TVEFUVVMpDQoJ
CXBhbmljKCJFSVNBIEkvTyBwb3J0IHN0YXR1cyBlcnJvci4iKTsNCg0KCXBy
aW50ZigiXG5OTUkgSVNBICV4LCBFSVNBICV4XG4iLCBpc2FfcG9ydCwgZWlz
YV9wb3J0KTsNCglyZXR1cm4oMCk7DQp9DQoNCi8qDQogKiBDYXVnaHQgYSBz
dHJheSBpbnRlcnJ1cHQsIG5vdGlmeQ0KICovDQpzdGF0aWMgdm9pZA0KaXNh
X3N0cmF5aW50cihkKQ0KCWludCBkOw0Kew0KDQoJLyogRE9OJ1QgQk9USEVS
IEZPUiBOT1chICovDQoJLyogZm9yIHNvbWUgcmVhc29uLCB3ZSBnZXQgYnVy
c3RzIG9mIGludHIgIzcsIGV2ZW4gaWYgbm90IGVuYWJsZWQhICovDQoJLyoN
CgkgKiBXZWxsIHRoZSByZWFzb24geW91IGdvdCBidXJzdHMgb2YgaW50ciAj
NyBpcyBiZWNhdXNlIHNvbWVvbmUNCgkgKiByYWlzZWQgYW4gaW50ZXJydXB0
IGxpbmUgYW5kIGRyb3BwZWQgaXQgYmVmb3JlIHRoZSA4MjU5IGNvdWxkDQoJ
ICogcHJpb3JpdGl6ZSBpdC4gIFRoaXMgaXMgZG9jdW1lbnRlZCBpbiB0aGUg
aW50ZWwgZGF0YSBib29rLiAgVGhpcw0KCSAqIG1lYW5zIHlvdSBoYXZlIEJB
RCBoYXJkd2FyZSEgIEkgaGF2ZSBjaGFuZ2VkIHRoaXMgc28gdGhhdCBvbmx5
DQoJICogdGhlIGZpcnN0IDUgZ2V0IGxvZ2dlZCwgdGhlbiBpdCBxdWl0cyBs
b2dnaW5nIHRoZW0sIGFuZCBwdXRzDQoJICogb3V0IGEgc3BlY2lhbCBtZXNz
YWdlLiByZ3JpbWVzIDMvMjUvMTk5Mw0KCSAqLw0KCS8qDQoJICogWFhYIFRP
RE8gcHJpbnQgYSBkaWZmZXJlbnQgbWVzc2FnZSBmb3IgIzcgaWYgaXQgaXMg
Zm9yIGENCgkgKiBnbGl0Y2guICBHbGl0Y2hlcyBjYW4gYmUgZGlzdGluZ3Vp
c2hlZCBmcm9tIHJlYWwgIzcncyBieQ0KCSAqIHRlc3RpbmcgdGhhdCB0aGUg
aW4tc2VydmljZSBiaXQgaXMgX25vdF8gc2V0LiAgVGhlIHRlc3QNCgkgKiBt
dXN0IGJlIGRvbmUgYmVmb3JlIHNlbmRpbmcgYW4gRU9JIHNvIGl0IGNhbid0
IGJlIGRvbmUgaWYNCgkgKiB3ZSBhcmUgdXNpbmcgQVVUT19FT0lfMS4NCgkg
Ki8NCglpZiAoaW50cmNudFtOUl9ERVZJQ0VTICsgZF0gPD0gNSkNCgkJbG9n
KExPR19FUlIsICJzdHJheSBpcnEgJWRcbiIsIGQpOw0KCWlmIChpbnRyY250
W05SX0RFVklDRVMgKyBkXSA9PSA1KQ0KCQlsb2coTE9HX0NSSVQsDQoJCSAg
ICAidG9vIG1hbnkgc3RyYXkgaXJxICVkJ3M7IG5vdCBsb2dnaW5nIGFueSBt
b3JlXG4iLCBkKTsNCn0NCg0KLyoNCiAqIEZpbmQgdGhlIGhpZ2hlc3QgcHJp
b3JpdHkgZW5hYmxlZCBkaXNwbGF5IGRldmljZS4gIFNpbmNlIHdlIGNhbid0
DQogKiBkaXN0aW5ndWlzaCBkaXNwbGF5IGRldmljZXMgZnJvbSB0dHlzLCBk
ZXBlbmQgb24gZGlzcGxheSBkZXZpY2VzDQogKiBiZWluZyBzZW5zaXRpdmUg
YW5kIGJlZm9yZSBzZW5zaXRpdmUgbm9uLWRpc3BsYXkgZGV2aWNlcyAoaWYg
YW55KQ0KICogaW4gaXNhX2RldnRhYl90dHkuDQogKg0KICogWFhYIHdlIHNo
b3VsZCBhZGQgY2FwYWJpbGl0eSBmbGFncyBJQU1ESVNQTEFZIGFuZCBJU1VQ
UE9SVENPTlNPTEVTLg0KICovDQpzdHJ1Y3QgaXNhX2RldmljZSAqDQpmaW5k
X2Rpc3BsYXkoKQ0Kew0KCXN0cnVjdCBpc2FfZGV2aWNlICpkdnA7DQoNCglm
b3IgKGR2cCA9IGlzYV9kZXZ0YWJfdHR5OyBkdnAtPmlkX2RyaXZlciAhPSBO
VUxMOyBkdnArKykNCgkJaWYgKGR2cC0+aWRfZHJpdmVyLT5zZW5zaXRpdmVf
aHcgJiYgZHZwLT5pZF9lbmFibGVkKQ0KCQkJcmV0dXJuIChkdnApOw0KCXJl
dHVybiAoTlVMTCk7DQp9DQoNCi8qDQogKiBmaW5kIGFuIElTQSBkZXZpY2Ug
aW4gYSBnaXZlbiBpc2FfZGV2dGFiXyogdGFibGUsIGdpdmVuDQogKiB0aGUg
dGFibGUgdG8gc2VhcmNoLCB0aGUgZXhwZWN0ZWQgaWRfZHJpdmVyIGVudHJ5
LCBhbmQgdGhlIHVuaXQgbnVtYmVyLg0KICoNCiAqIHRoaXMgZnVuY3Rpb24g
aXMgZGVmaW5lZCBpbiBpc2FfZGV2aWNlLmgsIGFuZCB0aGlzIGxvY2F0aW9u
IGlzIGRlYmF0YWJsZTsNCiAqIGkgcHV0IGl0IHRoZXJlIGJlY2F1c2UgaXQn
cyB1c2VsZXNzIHcvbywgYW5kIGRpcmVjdGx5IG9wZXJhdGVzIG9uDQogKiB0
aGUgb3RoZXIgc3R1ZmYgaW4gdGhhdCBmaWxlLg0KICoNCiAqLw0KDQpzdHJ1
Y3QgaXNhX2RldmljZSAqZmluZF9pc2FkZXYodGFibGUsIGRyaXZlcnAsIHVu
aXQpDQogICAgIHN0cnVjdCBpc2FfZGV2aWNlICp0YWJsZTsNCiAgICAgc3Ry
dWN0IGlzYV9kcml2ZXIgKmRyaXZlcnA7DQogICAgIGludCB1bml0Ow0Kew0K
ICBpZiAoZHJpdmVycCA9PSBOVUxMKSAvKiBzYW5pdHkgY2hlY2sgKi8NCiAg
ICByZXR1cm4gTlVMTDsNCg0KICB3aGlsZSAoKHRhYmxlLT5pZF9kcml2ZXIg
IT0gZHJpdmVycCkgfHwgKHRhYmxlLT5pZF91bml0ICE9IHVuaXQpKSB7DQog
ICAgaWYgKHRhYmxlLT5pZF9kcml2ZXIgPT0gMCkNCiAgICAgIHJldHVybiBO
VUxMOw0KDQogICAgdGFibGUrKzsNCiAgfQ0KDQogIHJldHVybiB0YWJsZTsN
Cn0NCg0KLyoNCiAqIFJldHVybiBub256ZXJvIGlmIGEgKG1hc2tlZCkgaXJx
IGlzIHBlbmRpbmcgZm9yIGEgZ2l2ZW4gZGV2aWNlLg0KICovDQppbnQNCmlz
YV9pcnFfcGVuZGluZyhkdnApDQoJc3RydWN0IGlzYV9kZXZpY2UgKmR2cDsN
CnsNCgl1bnNpZ25lZCBpZF9pcnE7DQoNCglpZF9pcnEgPSBkdnAtPmlkX2ly
cTsNCglpZiAoaWRfaXJxICYgMHhmZikNCgkJcmV0dXJuIChpbmIoSU9fSUNV
MSkgJiBpZF9pcnEpOw0KCXJldHVybiAoaW5iKElPX0lDVTIpICYgKGlkX2ly
cSA+PiA4KSk7DQp9DQoNCmludA0KdXBkYXRlX2ludHJfbWFza3Modm9pZCkN
CnsNCglpbnQgaW50ciwgbj0wOw0KCXVfaW50IG1hc2ssKm1hc2twdHI7DQoN
Cglmb3IgKGludHI9MDsgaW50ciA8IElDVV9MRU47IGludHIgKyspIHsNCgkJ
aWYgKGludHI9PTIpIGNvbnRpbnVlOw0KCQltYXNrcHRyID0gaW50cl9tcHRy
W2ludHJdOw0KCQlpZiAoIW1hc2twdHIpIGNvbnRpbnVlOw0KCQkqbWFza3B0
ciB8PSAxIDw8IGludHI7DQoJCW1hc2sgPSAqbWFza3B0cjsNCgkJaWYgKG1h
c2sgIT0gaW50cl9tYXNrW2ludHJdKSB7DQojaWYgMA0KCQkJcHJpbnRmICgi
aW50cl9tYXNrWyUyZF0gb2xkPSUwOHggbmV3PSUwOHggcHRyPSVwLlxuIiwN
CgkJCQlpbnRyLCBpbnRyX21hc2tbaW50cl0sIG1hc2ssIG1hc2twdHIpOw0K
I2VuZGlmDQoJCQlpbnRyX21hc2tbaW50cl09bWFzazsNCgkJCW4rKzsNCgkJ
fQ0KDQoJfQ0KCXJldHVybiAobik7DQp9DQoNCmludA0KcmVnaXN0ZXJfaW50
cihpbnRyLCBkZXZpY2VfaWQsIGZsYWdzLCBoYW5kbGVyLCBtYXNrcHRyLCB1
bml0KQ0KCWludAlpbnRyOw0KCWludAlkZXZpY2VfaWQ7DQoJdV9pbnQJZmxh
Z3M7DQoJaW50aGFuZDJfdCAqaGFuZGxlcjsNCgl1X2ludAkqbWFza3B0cjsN
CglpbnQJdW5pdDsNCnsNCgljaGFyCSpjcDsNCgl1X2xvbmcJZWY7DQoJaW50
CWlkOw0KCXVfaW50CW1hc2sgPSAobWFza3B0ciA/ICptYXNrcHRyIDogMCk7
DQoNCglpZiAoKHVfaW50KWludHIgPj0gSUNVX0xFTiB8fCBpbnRyID09IDIN
CgkgICAgfHwgKHVfaW50KWRldmljZV9pZCA+PSBOUl9ERVZJQ0VTKQ0KCQly
ZXR1cm4gKEVJTlZBTCk7DQoJaWYgKGludHJfaGFuZGxlcltpbnRyXSAhPSBp
c2Ffc3RyYXlpbnRyKQ0KCQlyZXR1cm4gKEVCVVNZKTsNCgllZiA9IHJlYWRf
ZWZsYWdzKCk7DQoJZGlzYWJsZV9pbnRyKCk7DQoJaW50cl9jb3VudHBbaW50
cl0gPSAmaW50cmNudFtkZXZpY2VfaWRdOw0KCWludHJfaGFuZGxlcltpbnRy
XSA9IGhhbmRsZXI7DQoJaW50cl9tcHRyW2ludHJdID0gbWFza3B0cjsNCglp
bnRyX21hc2tbaW50cl0gPSBtYXNrIHwgKDEgPDwgaW50cik7DQoJaW50cl91
bml0W2ludHJdID0gdW5pdDsNCglzZXRpZHQoSUNVX09GRlNFVCArIGludHIs
DQoJICAgICAgIGZsYWdzICYgUklfRkFTVCA/IGZhc3RpbnRyW2ludHJdIDog
c2xvd2ludHJbaW50cl0sDQoJICAgICAgIFNEVF9TWVMzODZJR1QsIFNFTF9L
UEwsIEdTRUwoR0NPREVfU0VMLCBTRUxfS1BMKSk7DQoJd3JpdGVfZWZsYWdz
KGVmKTsNCglmb3IgKGNwID0gaW50cm5hbWVzLCBpZCA9IDA7IGlkIDw9IGRl
dmljZV9pZDsgaWQrKykNCgkJd2hpbGUgKCpjcCsrICE9ICdcMCcpDQoJCQk7
DQoJaWYgKGNwID4gZWludHJuYW1lcykNCgkJcmV0dXJuICgwKTsNCglpZiAo
aW50ciA8IDEwKSB7DQoJCWNwWy0zXSA9IGludHIgKyAnMCc7DQoJCWNwWy0y
XSA9ICcgJzsNCgl9IGVsc2Ugew0KCQljcFstM10gPSAnMSc7DQoJCWNwWy0y
XSA9IGludHIgLSAxMCArICcwJzsNCgl9DQoJcmV0dXJuICgwKTsNCn0NCg0K
c3RhdGljIHZvaWQNCnJlZ2lzdGVyX2ltYXNrKGR2cCwgbWFzaykNCglzdHJ1
Y3QgaXNhX2RldmljZSAqZHZwOw0KCXVfaW50CW1hc2s7DQp7DQoJaWYgKGR2
cC0+aWRfYWxpdmUgJiYgZHZwLT5pZF9pcnEpIHsNCgkJaW50CWludHI7DQoN
CgkJaW50ciA9IGZmcyhkdnAtPmlkX2lycSkgLSAxOw0KCQlpbnRyX21hc2tb
aW50cl0gPSBtYXNrIHwgKDEgPDxpbnRyKTsNCgl9DQoJKHZvaWQpIHVwZGF0
ZV9pbnRyX21hc2tzKCk7DQp9DQoNCmludA0KdW5yZWdpc3Rlcl9pbnRyKGlu
dHIsIGhhbmRsZXIpDQoJaW50CWludHI7DQoJaW50aGFuZDJfdCAqaGFuZGxl
cjsNCnsNCgl1X2xvbmcJZWY7DQoNCglpZiAoKHVfaW50KWludHIgPj0gSUNV
X0xFTiB8fCBoYW5kbGVyICE9IGludHJfaGFuZGxlcltpbnRyXSkNCgkJcmV0
dXJuIChFSU5WQUwpOw0KCWVmID0gcmVhZF9lZmxhZ3MoKTsNCglkaXNhYmxl
X2ludHIoKTsNCglpbnRyX2NvdW50cFtpbnRyXSA9ICZpbnRyY250W05SX0RF
VklDRVMgKyBpbnRyXTsNCglpbnRyX2hhbmRsZXJbaW50cl0gPSBpc2Ffc3Ry
YXlpbnRyOw0KCWludHJfbXB0cltpbnRyXSA9IE5VTEw7DQoJaW50cl9tYXNr
W2ludHJdID0gSFdJX01BU0sgfCBTV0lfTUFTSzsNCglpbnRyX3VuaXRbaW50
cl0gPSBpbnRyOw0KCXNldGlkdChJQ1VfT0ZGU0VUICsgaW50ciwgc2xvd2lu
dHJbaW50cl0sIFNEVF9TWVMzODZJR1QsIFNFTF9LUEwsDQoJICAgIEdTRUwo
R0NPREVfU0VMLCBTRUxfS1BMKSk7DQoJd3JpdGVfZWZsYWdzKGVmKTsNCgly
ZXR1cm4gKDApOw0KfQ0K
---559023410-851401618-884887353=:23379
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="isa.c.rej"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.GSO.3.96.980115200233.23379C@solaris>
Content-Description: 

KioqKioqKioqKioqKioqDQoqKiogMzQsNDAgKioqKg0KICAgKiBTVUNIIERB
TUFHRS4NCiAgICoNCiAgICoJZnJvbTogQCgjKWlzYS5jCTcuMiAoQmVya2Vs
ZXkpIDUvMTMvOTENCi0gICoJJElkOiBpc2EuYyx2IDEuNzQuMi40IDE5OTcv
MTAvMTggMTA6MTA6MjEgamtoIEV4cCAkDQogICAqLw0KICANCiAgLyoNCi0t
LSAzNCw0MCAtLS0tDQogICAqIFNVQ0ggREFNQUdFLg0KICAgKg0KICAgKglm
cm9tOiBAKCMpaXNhLmMJNy4yIChCZXJrZWxleSkgNS8xMy85MQ0KKyAgKgkk
SWQ6IGlzYS5jLHYgMS43NC4yLjMgMTk5Ny8xMC8xMiAxNjowNzo0MiBqa2gg
RXhwICQNCiAgICovDQogIA0KICAvKg0KKioqKioqKioqKioqKioqDQoqKiog
NTEzLDUxOCAqKioqDQogIHN0YXRpYyB1X2ludDhfdAlkbWFfYm91bmNlZCA9
IDA7DQogIHN0YXRpYyB1X2ludDhfdAlkbWFfYnVzeSA9IDA7CQkvKiBVc2Vk
IGluIGlzYV9kbWFzdGFydCgpICovDQogIHN0YXRpYyB1X2ludDhfdAlkbWFf
aW51c2UgPSAwOwkJLyogVXNlciBmb3IgYWNxdWlyZS9yZWxlYXNlICovDQog
IA0KICAjZGVmaW5lIFZBTElEX0RNQV9NQVNLICg3KQ0KICANCi0tLSA1MTMs
NTE5IC0tLS0NCiAgc3RhdGljIHVfaW50OF90CWRtYV9ib3VuY2VkID0gMDsN
CiAgc3RhdGljIHVfaW50OF90CWRtYV9idXN5ID0gMDsJCS8qIFVzZWQgaW4g
aXNhX2RtYXN0YXJ0KCkgKi8NCiAgc3RhdGljIHVfaW50OF90CWRtYV9pbnVz
ZSA9IDA7CQkvKiBVc2VyIGZvciBhY3F1aXJlL3JlbGVhc2UgKi8NCisgc3Rh
dGljIHVfaW50OF90ICAgICAgICBkbWFfYXV0b19tb2RlID0gMDsNCiAgDQog
ICNkZWZpbmUgVkFMSURfRE1BX01BU0sgKDcpDQogIA0KKioqKioqKioqKioq
KioqDQoqKiogNTc0LDU3OSAqKioqDQogIAkJcmV0dXJuIChFQlVTWSk7DQog
IAl9DQogIAlkbWFfaW51c2UgfD0gKDEgPDwgY2hhbik7DQogIA0KICAJcmV0
dXJuICgwKTsNCiAgfQ0KLS0tIDU3NSw1ODEgLS0tLQ0KICAJCXJldHVybiAo
RUJVU1kpOw0KICAJfQ0KICAJZG1hX2ludXNlIHw9ICgxIDw8IGNoYW4pOw0K
KyAJZG1hX2F1dG9fbW9kZSAmPSB+KDEgPDwgY2hhbik7DQogIA0KICAJcmV0
dXJuICgwKTsNCiAgfQ0KKioqKioqKioqKioqKioqDQoqKiogNjA1LDYxMCAq
KioqDQogIAl9DQogIA0KICAJZG1hX2ludXNlICY9IH4oMSA8PCBjaGFuKTsN
CiAgfQ0KICANCiAgLyoNCi0tLSA2MDcsNjEzIC0tLS0NCiAgCX0NCiAgDQog
IAlkbWFfaW51c2UgJj0gfigxIDw8IGNoYW4pOw0KKyAJZG1hX2F1dG9fbW9k
ZSAmPSB+KDEgPDwgY2hhbik7DQogIH0NCiAgDQogIC8qDQoqKioqKioqKioq
KioqKioNCioqKiA3MzIsNzQyICoqKioNCiAgCWlmICgoY2hhbiA8IDQgJiYg
bmJ5dGVzID4gKDE8PDE2KSkNCiAgCSAgICB8fCAoY2hhbiA+PSA0ICYmIChu
Ynl0ZXMgPiAoMTw8MTcpIHx8ICh1X2ludClhZGRyICYgMSkpKQ0KICAJCXBh
bmljKCJpc2FfZG1hc3RhcnQ6IGltcG9zc2libGUgcmVxdWVzdCIpOw0KLSAN
CiAgCWlmICgoZG1hX2ludXNlICYgKDEgPDwgY2hhbikpID09IDApDQogIAkJ
cHJpbnRmKCJpc2FfZG1hc3RhcnQ6IGNoYW5uZWwgJWQgbm90IGFjcXVpcmVk
XG4iLCBjaGFuKTsNCi0gI2VuZGlmDQogIA0KICAJaWYgKGRtYV9idXN5ICYg
KDEgPDwgY2hhbikpDQogIAkJcHJpbnRmKCJpc2FfZG1hc3RhcnQ6IGNoYW5u
ZWwgJWQgYnVzeVxuIiwgY2hhbik7DQogIA0KLS0tIDgxOCw4MjggLS0tLQ0K
ICAJaWYgKChjaGFuIDwgNCAmJiBuYnl0ZXMgPiAoMTw8MTYpKQ0KICAJICAg
IHx8IChjaGFuID49IDQgJiYgKG5ieXRlcyA+ICgxPDwxNykgfHwgKHVfaW50
KWFkZHIgJiAxKSkpDQogIAkJcGFuaWMoImlzYV9kbWFzdGFydDogaW1wb3Nz
aWJsZSByZXF1ZXN0Iik7DQorICNlbmRpZg0KICAJaWYgKChkbWFfaW51c2Ug
JiAoMSA8PCBjaGFuKSkgPT0gMCkNCiAgCQlwcmludGYoImlzYV9kbWFzdGFy
dDogY2hhbm5lbCAlZCBub3QgYWNxdWlyZWRcbiIsIGNoYW4pOw0KICANCisg
ICAgIGlmICghKGZsYWdzICYgQl9SQVcpKQ0KICAJaWYgKGRtYV9idXN5ICYg
KDEgPDwgY2hhbikpDQogIAkJcHJpbnRmKCJpc2FfZG1hc3RhcnQ6IGNoYW5u
ZWwgJWQgYnVzeVxuIiwgY2hhbik7DQogIA0KKioqKioqKioqKioqKioqDQoq
KiogODU2LDg3MCAqKioqDQogIAkJcHJpbnRmKCJpc2FfZG1hZG9uZTogY2hh
bm5lbCAlZCBub3QgYWNxdWlyZWRcbiIsIGNoYW4pOw0KICAjZW5kaWYNCiAg
DQotICNpZiAwDQotIAkvKg0KLSAJICogWFhYIFRoaXMgc2hvdWxkIGJlIGNo
ZWNrZWQsIGJ1dCBkcml2ZXJzIGxpa2UgYWQxODQ4IG9ubHkgY2FsbA0KLSAJ
ICogaXNhX2RtYXN0YXJ0KCkgb25jZSBiZWNhdXNlIHRoZXkgdXNlIEF1dG8g
RE1BIG1vZGUuICBJZiB3ZQ0KLSAJICogbGVhdmUgdGhpcyBpbiwgZHJpdmVy
cyB0aGF0IGRvIHRoaXMgd2lsbCBwcmludCB0aGlzIGNvbnRpbnVvdXNseS4N
Ci0gCSAqLw0KLSAJaWYgKGRtYV9idXN5ICYgKDEgPDwgY2hhbikgPT0gMCkN
Ci0gCQlwcmludGYoImlzYV9kbWFkb25lOiBjaGFubmVsICVkIG5vdCBidXN5
XG4iLCBjaGFuKTsNCi0gI2VuZGlmDQogIA0KICAJaWYgKGRtYV9ib3VuY2Vk
ICYgKDEgPDwgY2hhbikpIHsNCiAgCQkvKiBjb3B5IGJvdW5jZSBidWZmZXIg
b24gcmVhZCAqLw0KLS0tIDk2Niw5NzQgLS0tLQ0KICAJCXByaW50ZigiaXNh
X2RtYWRvbmU6IGNoYW5uZWwgJWQgbm90IGFjcXVpcmVkXG4iLCBjaGFuKTsN
CiAgI2VuZGlmDQogIA0KKyAgICAgICAgIGlmICggISAoZG1hX2J1c3kgJiAo
MSA8PCBjaGFuKSkgICYmDQorICAgICAgICAgICAgICAhIChkbWFfYXV0b19t
b2RlICYgKDEgPDwgY2hhbikpICkNCisgICAgICAgICAgICAgICAgIHByaW50
ZigiaXNhX2RtYWRvbmU6IGNoYW5uZWwgJWQgbm90IGFjdGl2ZVxuIiwgY2hh
bik7DQogIA0KICAJaWYgKGRtYV9ib3VuY2VkICYgKDEgPDwgY2hhbikpIHsN
CiAgCQkvKiBjb3B5IGJvdW5jZSBidWZmZXIgb24gcmVhZCAqLw0K
---559023410-851401618-884887353=:23379--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.3.96.980115194532.23379A-300000>