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>