From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1IkmTJ-0006BH-Q9 for qemu-devel@nongnu.org; Wed, 24 Oct 2007 16:04:57 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1IkmTJ-00068u-1h for qemu-devel@nongnu.org; Wed, 24 Oct 2007 16:04:57 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IkmTG-00068T-Sr for qemu-devel@nongnu.org; Wed, 24 Oct 2007 16:04:54 -0400 Received: from ug-out-1314.google.com ([66.249.92.174]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1IkmTF-0001Fp-JT for qemu-devel@nongnu.org; Wed, 24 Oct 2007 16:04:54 -0400 Received: by ug-out-1314.google.com with SMTP id m2so381462uge for ; Wed, 24 Oct 2007 13:04:51 -0700 (PDT) Message-ID: Date: Wed, 24 Oct 2007 23:04:51 +0300 From: "Blue Swirl" Subject: Re: [Qemu-devel] Re: PATCH, RFC: Slirp improvements In-Reply-To: <471E5BE9.9080307@bellard.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_9064_18526688.1193256291341" References: <471E5BE9.9080307@bellard.org> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Fabrice Bellard Cc: qemu-devel@nongnu.org ------=_Part_9064_18526688.1193256291341 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline On 10/23/07, Fabrice Bellard wrote: > > I tried harder to change the SLIRP queue stuff to something saner by > > hiding the pointer access inside inlined functions. Still when I > > changed the 32 bit pointers to native 64 bit (or moved the pointers > > outside the packet), qemu crashes. Must be some devilishly hidden > > access somewhere. I already fixed one, which involved recycling port > > number fields for buffer pointers. IMHO there should be some kind of > > corporeal punishments mandated by law for writing this kind of mess. > > Maybe it would even be easier to create a new userland IP stack based > > on Linux from scratch instead of fixing this. > > > > I think I'll just commit in the log part, unless there are objections. > > IMHO you should add a context in the 'struct socket' structure so that > you can avoid adding a context in all the functions manipulating this > structure. The same holds for mbuf. That way some changes could be avoided, maybe gain some performance. Somehow I feel this reverses the hierarchy, though. I extracted the logging parts and safest fixes into two patches. Comments? ------=_Part_9064_18526688.1193256291341 Content-Type: text/x-diff; name=slirp_const_etc.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_f869rz2y Content-Disposition: attachment; filename=slirp_const_etc.diff SW5kZXg6IHFlbXUvc2xpcnAvYm9vdHAuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvc2xpcnAv Ym9vdHAuYwkyMDA3LTEwLTI0IDE5OjM4OjIwLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9zbGly cC9ib290cC5jCTIwMDctMTAtMjQgMTk6NDI6NDAuMDAwMDAwMDAwICswMDAwCkBAIC0xNDksNyAr MTQ5LDcgQEAKIAogICAgIGlmICgobSA9IG1fZ2V0KCkpID09IE5VTEwpCiAgICAgICAgIHJldHVy bjsKLSAgICBtLT5tX2RhdGEgKz0gaWZfbWF4bGlua2hkcjsKKyAgICBtLT5tX2RhdGEgKz0gSUZf TUFYTElOS0hEUjsKICAgICByYnAgPSAoc3RydWN0IGJvb3RwX3QgKiltLT5tX2RhdGE7CiAgICAg bS0+bV9kYXRhICs9IHNpemVvZihzdHJ1Y3QgdWRwaXBoZHIpOwogICAgIG1lbXNldChyYnAsIDAs IHNpemVvZihzdHJ1Y3QgYm9vdHBfdCkpOwpJbmRleDogcWVtdS9zbGlycC9kZWJ1Zy5jCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIHFlbXUub3JpZy9zbGlycC9kZWJ1Zy5jCTIwMDctMTAtMjQgMTk6Mzg6MjAuMDAw MDAwMDAwICswMDAwCisrKyBxZW11L3NsaXJwL2RlYnVnLmMJMjAwNy0xMC0yNCAxOTo0Mjo0MC4w MDAwMDAwMDAgKzAwMDAKQEAgLTkyLDkgKzkyLDkgQEAKIAogCWxwcmludCgiIFxyXG4iKTsKIAot CWlmIChpZl9jb21wICYgSUZfQ09NUFJFU1MpCisJaWYgKElGX0NPTVAgJiBJRl9DT01QUkVTUykK IAkgICBzdHJjcHkoYnVmZiwgIm9uIik7Ci0JZWxzZSBpZiAoaWZfY29tcCAmIElGX05PQ09NUFJF U1MpCisJZWxzZSBpZiAoSUZfQ09NUCAmIElGX05PQ09NUFJFU1MpCiAJICAgc3RyY3B5KGJ1ZmYs ICJvZmYiKTsKIAllbHNlCiAJICAgc3RyY3B5KGJ1ZmYsICJvZmYgKGZvciBub3cpIik7CkluZGV4 OiBxZW11L3NsaXJwL2lmLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL3NsaXJwL2lmLmMJMjAw Ny0xMC0yNCAxOTozODoyMC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvc2xpcnAvaWYuYwkyMDA3 LTEwLTI0IDE5OjQyOjQwLjAwMDAwMDAwMCArMDAwMApAQCAtNyw5ICs3LDYgQEAKIAogI2luY2x1 ZGUgPHNsaXJwLmg+CiAKLWludCBpZl9tdHUsIGlmX21ydTsKLWludCBpZl9jb21wOwotaW50IGlm X21heGxpbmtoZHI7CiBpbnQgICAgIGlmX3F1ZXVlZCA9IDA7ICAgICAgICAgICAgICAgICAgLyog TnVtYmVyIG9mIHBhY2tldHMgcXVldWVkIHNvIGZhciAqLwogaW50ICAgICBpZl90aHJlc2ggPSAx MDsgICAgICAgICAgICAgICAgIC8qIE51bWJlciBvZiBwYWNrZXRzIHF1ZXVlZCBiZWZvcmUgd2Ug c3RhcnQgc2VuZGluZwogCQkJCQkgKiAodG8gcHJldmVudCBhbGxvY2luZyB0b28gbWFueSBtYnVm cykgKi8KQEAgLTQxLDIzICszOCw2IEBACiB2b2lkCiBpZl9pbml0KCkKIHsKLSNpZiAwCi0JLyoK LQkgKiBTZXQgaWZfbWF4bGlua2hkciB0byA0OCBiZWNhdXNlIGl0J3MgNDAgYnl0ZXMgZm9yIFRD UC9JUCwKLQkgKiBhbmQgOCBieXRlcyBmb3IgUFBQLCBidXQgbmVlZCB0byBoYXZlIGl0IG9uIGFu IDhieXRlIGJvdW5kYXJ5Ci0JICovCi0jaWZkZWYgVVNFX1BQUAotCWlmX21heGxpbmtoZHIgPSA0 ODsKLSNlbHNlCi0JaWZfbWF4bGlua2hkciA9IDQwOwotI2VuZGlmCi0jZWxzZQotICAgICAgICAv KiAyIGZvciBhbGlnbm1lbnQsIDE0IGZvciBldGhlcm5ldCwgNDAgZm9yIFRDUC9JUCAqLwotICAg ICAgICBpZl9tYXhsaW5raGRyID0gMiArIDE0ICsgNDA7Ci0jZW5kaWYKLQlpZl9tdHUgPSAxNTAw OwotCWlmX21ydSA9IDE1MDA7Ci0JaWZfY29tcCA9IElGX0FVVE9DT01QOwogCWlmX2Zhc3RxLmlm cV9uZXh0ID0gaWZfZmFzdHEuaWZxX3ByZXYgPSAmaWZfZmFzdHE7CiAJaWZfYmF0Y2hxLmlmcV9u ZXh0ID0gaWZfYmF0Y2hxLmlmcV9wcmV2ID0gJmlmX2JhdGNocTsKICAgICAgICAgLy8Jc2xfY29t cHJlc3NfaW5pdCgmY29tcF9zKTsKSW5kZXg6IHFlbXUvc2xpcnAvaWYuaAo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBxZW11Lm9yaWcvc2xpcnAvaWYuaAkyMDA3LTEwLTI0IDE5OjM4OjIwLjAwMDAwMDAwMCArMDAw MAorKysgcWVtdS9zbGlycC9pZi5oCTIwMDctMTAtMjQgMTk6NDI6NDAuMDAwMDAwMDAwICswMDAw CkBAIC0xMywxMiArMTMsMjUgQEAKICNkZWZpbmUgSUZfQVVUT0NPTVAJMHgwNAkvKiBBdXRvZGV0 ZWN0IChkZWZhdWx0KSAqLwogI2RlZmluZSBJRl9OT0NJRENPTVAJMHgwOAkvKiBDSUQgY29tcHJl c3Npb24gKi8KIAotLyogTmVlZGVkIGZvciBGcmVlQlNEICovCi0jdW5kZWYgaWZfbXR1Ci1leHRl cm4gaW50CWlmX210dTsKLWV4dGVybiBpbnQJaWZfbXJ1OwkvKiBNVFUgYW5kIE1SVSAqLwotZXh0 ZXJuIGludAlpZl9jb21wOwkvKiBGbGFncyBmb3IgY29tcHJlc3Npb24gKi8KLWV4dGVybiBpbnQJ aWZfbWF4bGlua2hkcjsKKyNkZWZpbmUgSUZfTVRVIDE1MDAKKyNkZWZpbmUgSUZfTVJVIDE1MDAK KyNkZWZpbmUJSUZfQ09NUCBJRl9BVVRPQ09NUAkvKiBGbGFncyBmb3IgY29tcHJlc3Npb24gKi8K KworI2lmIDAKKy8qCisgKiBTZXQgaWZfbWF4bGlua2hkciB0byA0OCBiZWNhdXNlIGl0J3MgNDAg Ynl0ZXMgZm9yIFRDUC9JUCwKKyAqIGFuZCA4IGJ5dGVzIGZvciBQUFAsIGJ1dCBuZWVkIHRvIGhh dmUgaXQgb24gYW4gOGJ5dGUgYm91bmRhcnkKKyAqLworI2lmZGVmIFVTRV9QUFAKKyNkZWZpbmUg SUZfTUFYTElOS0hEUiA0OAorI2Vsc2UKKyNkZWZpbmUgSUZfTUFYTElOS0hEUiA0MAorI2VuZGlm CisjZWxzZQorICAgICAgICAvKiAyIGZvciBhbGlnbm1lbnQsIDE0IGZvciBldGhlcm5ldCwgNDAg Zm9yIFRDUC9JUCAqLworI2RlZmluZSBJRl9NQVhMSU5LSERSICgyICsgMTQgKyA0MCkKKyNlbmRp ZgorCiBleHRlcm4gaW50CWlmX3F1ZXVlZDsJLyogTnVtYmVyIG9mIHBhY2tldHMgcXVldWVkIHNv IGZhciAqLwogZXh0ZXJuIGludAlpZl90aHJlc2g7CS8qIE51bWJlciBvZiBwYWNrZXRzIHF1ZXVl ZCBiZWZvcmUgd2Ugc3RhcnQgc2VuZGluZwogCQkJCSAqICh0byBwcmV2ZW50IGFsbG9jaW5nIHRv byBtYW55IG1idWZzKSAqLwpJbmRleDogcWVtdS9zbGlycC9pcF9pY21wLmMKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gcWVtdS5vcmlnL3NsaXJwL2lwX2ljbXAuYwkyMDA3LTEwLTI0IDE5OjM4OjIwLjAwMDAwMDAw MCArMDAwMAorKysgcWVtdS9zbGlycC9pcF9pY21wLmMJMjAwNy0xMC0yNCAxOTo0Mjo0MC4wMDAw MDAwMDAgKzAwMDAKQEAgLTQ2LDcgKzQ2LDcgQEAKIGNoYXIgaWNtcF9waW5nX21zZ1tdID0gIlRo aXMgaXMgYSBwc3VlZG8tUElORyBwYWNrZXQgdXNlZCBieSBTbGlycCB0byBlbXVsYXRlIElDTVAg RUNITy1SRVFVRVNUIHBhY2tldHMuXG4iOwogCiAvKiBsaXN0IG9mIGFjdGlvbnMgZm9yIGljbXBf ZXJyb3IoKSBvbiBSWCBvZiBhbiBpY21wIG1lc3NhZ2UgKi8KLXN0YXRpYyBpbnQgaWNtcF9mbHVz aFsxOV0gPSB7CitzdGF0aWMgY29uc3QgaW50IGljbXBfZmx1c2hbMTldID0gewogLyogIEVDSE8g UkVQTFkgKDApICAqLyAgIDAsCiAJCSAgICAgICAgIDEsCiAJCSAgICAgICAgIDEsCkluZGV4OiBx ZW11L3NsaXJwL2lwX2lucHV0LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL3NsaXJwL2lwX2lu cHV0LmMJMjAwNy0xMC0yNCAxOTozODoyMC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvc2xpcnAv aXBfaW5wdXQuYwkyMDA3LTEwLTI0IDE5OjQyOjQwLjAwMDAwMDAwMCArMDAwMApAQCAtNDUsMTQg KzQ1LDE5IEBACiAjaW5jbHVkZSA8c2xpcnAuaD4KICNpbmNsdWRlICJpcF9pY21wLmgiCiAKLWlu dCBpcF9kZWZ0dGw7Ci0KICNpZmRlZiBMT0dfRU5BQkxFRAogc3RydWN0IGlwc3RhdCBpcHN0YXQ7 CiAjZW5kaWYKIAogc3RydWN0IGlwcSBpcHE7CiAKK3N0YXRpYyBzdHJ1Y3QgaXAgKmlwX3JlYXNz KHJlZ2lzdGVyIHN0cnVjdCBpcGFzZnJhZyAqaXAsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICByZWdpc3RlciBzdHJ1Y3QgaXBxICpmcCk7CitzdGF0aWMgdm9pZCBpcF9mcmVlZihzdHJ1Y3Qg aXBxICpmcCk7CitzdGF0aWMgdm9pZCBpcF9lbnEocmVnaXN0ZXIgc3RydWN0IGlwYXNmcmFnICpw LAorICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIHN0cnVjdCBpcGFzZnJhZyAqcHJldik7Citz dGF0aWMgdm9pZCBpcF9kZXEocmVnaXN0ZXIgc3RydWN0IGlwYXNmcmFnICpwKTsKKwogLyoKICAq IElQIGluaXRpYWxpemF0aW9uOiBmaWxsIGluIElQIHByb3RvY29sIHN3aXRjaCB0YWJsZS4KICAq IEFsbCBwcm90b2NvbHMgbm90IGltcGxlbWVudGVkIGluIGtlcm5lbCBnbyB0byByYXcgSVAgcHJv dG9jb2wgaGFuZGxlci4KQEAgLTY0LDcgKzY5LDYgQEAKIAlpcF9pZCA9IHR0LnR2X3NlYyAmIDB4 ZmZmZjsKIAl1ZHBfaW5pdCgpOwogCXRjcF9pbml0KCk7Ci0JaXBfZGVmdHRsID0gSVBERUZUVEw7 CiB9CiAKIC8qCkBAIC0yMzksMTAgKzI0Myw4IEBACiAgKiByZWFzc2VtYmx5IG9mIHRoaXMgZGF0 YWdyYW0gYWxyZWFkeSBleGlzdHMsIHRoZW4gaXQKICAqIGlzIGdpdmVuIGFzIGZwOyBvdGhlcndp c2UgaGF2ZSB0byBtYWtlIGEgY2hhaW4uCiAgKi8KLXN0cnVjdCBpcCAqCi1pcF9yZWFzcyhpcCwg ZnApCi0JcmVnaXN0ZXIgc3RydWN0IGlwYXNmcmFnICppcDsKLQlyZWdpc3RlciBzdHJ1Y3QgaXBx ICpmcDsKK3N0YXRpYyBzdHJ1Y3QgaXAgKgoraXBfcmVhc3MocmVnaXN0ZXIgc3RydWN0IGlwYXNm cmFnICppcCwgcmVnaXN0ZXIgc3RydWN0IGlwcSAqZnApCiB7CiAJcmVnaXN0ZXIgc3RydWN0IG1i dWYgKm0gPSBkdG9tKGlwKTsKIAlyZWdpc3RlciBzdHJ1Y3QgaXBhc2ZyYWcgKnE7CkBAIC0zOTgs OSArNDAwLDggQEAKICAqIEZyZWUgYSBmcmFnbWVudCByZWFzc2VtYmx5IGhlYWRlciBhbmQgYWxs CiAgKiBhc3NvY2lhdGVkIGRhdGFncmFtcy4KICAqLwotdm9pZAotaXBfZnJlZWYoZnApCi0Jc3Ry dWN0IGlwcSAqZnA7CitzdGF0aWMgdm9pZAoraXBfZnJlZWYoc3RydWN0IGlwcSAqZnApCiB7CiAJ cmVnaXN0ZXIgc3RydWN0IGlwYXNmcmFnICpxLCAqcDsKIApAQCAtNDE4LDkgKzQxOSw4IEBACiAg KiBQdXQgYW4gaXAgZnJhZ21lbnQgb24gYSByZWFzc2VtYmx5IGNoYWluLgogICogTGlrZSBpbnNx dWUsIGJ1dCBwb2ludGVycyBpbiBtaWRkbGUgb2Ygc3RydWN0dXJlLgogICovCi12b2lkCi1pcF9l bnEocCwgcHJldikKLQlyZWdpc3RlciBzdHJ1Y3QgaXBhc2ZyYWcgKnAsICpwcmV2Oworc3RhdGlj IHZvaWQKK2lwX2VucShyZWdpc3RlciBzdHJ1Y3QgaXBhc2ZyYWcgKnAsIHJlZ2lzdGVyIHN0cnVj dCBpcGFzZnJhZyAqcHJldikKIHsKIAlERUJVR19DQUxMKCJpcF9lbnEiKTsKIAlERUJVR19BUkco InByZXYgPSAlbHgiLCAobG9uZylwcmV2KTsKQEAgLTQzMyw5ICs0MzMsOCBAQAogLyoKICAqIFRv IGlwX2VucSBhcyByZW1xdWUgaXMgdG8gaW5zcXVlLgogICovCi12b2lkCi1pcF9kZXEocCkKLQly ZWdpc3RlciBzdHJ1Y3QgaXBhc2ZyYWcgKnA7CitzdGF0aWMgdm9pZAoraXBfZGVxKHJlZ2lzdGVy IHN0cnVjdCBpcGFzZnJhZyAqcCkKIHsKIAkoKHN0cnVjdCBpcGFzZnJhZyAqKShwLT5pcGZfcHJl dikpLT5pcGZfbmV4dCA9IHAtPmlwZl9uZXh0OwogCSgoc3RydWN0IGlwYXNmcmFnICopKHAtPmlw Zl9uZXh0KSktPmlwZl9wcmV2ID0gcC0+aXBmX3ByZXY7CkluZGV4OiBxZW11L3NsaXJwL2lwX291 dHB1dC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9zbGlycC9pcF9vdXRwdXQuYwkyMDA3LTEw LTI0IDE5OjM4OjIwLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9zbGlycC9pcF9vdXRwdXQuYwky MDA3LTEwLTI0IDE5OjQyOjQwLjAwMDAwMDAwMCArMDAwMApAQCAtOTYsNyArOTYsNyBAQAogCS8q CiAJICogSWYgc21hbGwgZW5vdWdoIGZvciBpbnRlcmZhY2UsIGNhbiBqdXN0IHNlbmQgZGlyZWN0 bHkuCiAJICovCi0JaWYgKCh1X2ludDE2X3QpaXAtPmlwX2xlbiA8PSBpZl9tdHUpIHsKKwlpZiAo KHVfaW50MTZfdClpcC0+aXBfbGVuIDw9IElGX01UVSkgewogCQlpcC0+aXBfbGVuID0gaHRvbnMo KHVfaW50MTZfdClpcC0+aXBfbGVuKTsKIAkJaXAtPmlwX29mZiA9IGh0b25zKCh1X2ludDE2X3Qp aXAtPmlwX29mZik7CiAJCWlwLT5pcF9zdW0gPSAwOwpAQCAtMTE2LDcgKzExNiw3IEBACiAJCWdv dG8gYmFkOwogCX0KIAotCWxlbiA9IChpZl9tdHUgLSBobGVuKSAmfiA3OyAgICAgICAvKiBpcCBk YXRhYnl0ZXMgcGVyIHBhY2tldCAqLworCWxlbiA9IChJRl9NVFUgLSBobGVuKSAmfiA3OyAgICAg ICAvKiBpcCBkYXRhYnl0ZXMgcGVyIHBhY2tldCAqLwogCWlmIChsZW4gPCA4KSB7CiAJCWVycm9y ID0gLTE7CiAJCWdvdG8gYmFkOwpAQCAtMTQwLDcgKzE0MCw3IEBACiAJICAgIFNUQVQoaXBzdGF0 Lmlwc19vZHJvcHBlZCsrKTsKIAkgICAgZ290byBzZW5kb3JmcmVlOwogCSAgfQotCSAgbS0+bV9k YXRhICs9IGlmX21heGxpbmtoZHI7CisJICBtLT5tX2RhdGEgKz0gSUZfTUFYTElOS0hEUjsKIAkg IG1oaXAgPSBtdG9kKG0sIHN0cnVjdCBpcCAqKTsKIAkgICptaGlwID0gKmlwOwogCkluZGV4OiBx ZW11L3NsaXJwL21haW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvc2xpcnAvbWFpbi5oCTIw MDctMTAtMjQgMTk6Mzg6MjAuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L3NsaXJwL21haW4uaAky MDA3LTEwLTI0IDE5OjQyOjQwLjAwMDAwMDAwMCArMDAwMApAQCAtNDIsNyArNDIsNiBAQAogZXh0 ZXJuIGNoYXIgKnNvY2tldF9wYXRoOwogZXh0ZXJuIGludCB0b3dyaXRlX21heDsKIGV4dGVybiBp bnQgcHBwX2V4aXQ7Ci1leHRlcm4gaW50IHNvX29wdGlvbnM7CiBleHRlcm4gaW50IHRjcF9rZWVw aW50dmw7CiBleHRlcm4gdWludDhfdCBjbGllbnRfZXRoYWRkcls2XTsKIApJbmRleDogcWVtdS9z bGlycC9tYnVmLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL3NsaXJwL21idWYuYwkyMDA3LTEw LTI0IDE5OjM4OjIwLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9zbGlycC9tYnVmLmMJMjAwNy0x MC0yNCAxOTo0Mjo0MC4wMDAwMDAwMDAgKzAwMDAKQEAgLTIxLDI3ICsyMSwyMCBAQAogY2hhcgkq bWNscmVmY250OwogaW50IG1idWZfYWxsb2NlZCA9IDA7CiBzdHJ1Y3QgbWJ1ZiBtX2ZyZWVsaXN0 LCBtX3VzZWRsaXN0OwotaW50IG1idWZfdGhyZXNoID0gMzA7CisjZGVmaW5lIE1CVUZfVEhSRVNI IDMwCiBpbnQgbWJ1Zl9tYXggPSAwOwotaW50IG1zaXplOworCisvKgorICogRmluZCBhIG5pY2Ug dmFsdWUgZm9yIG1zaXplCisgKiBYWFggaWZfbWF4bGlua2hkciBhbHJlYWR5IGluIG10dQorICov CisjZGVmaW5lIE1TSVpFIChJRl9NVFUgKyBJRl9NQVhMSU5LSERSICsgc2l6ZW9mKHN0cnVjdCBt X2hkciApICsgNikKIAogdm9pZAogbV9pbml0KCkKIHsKIAltX2ZyZWVsaXN0Lm1fbmV4dCA9IG1f ZnJlZWxpc3QubV9wcmV2ID0gJm1fZnJlZWxpc3Q7CiAJbV91c2VkbGlzdC5tX25leHQgPSBtX3Vz ZWRsaXN0Lm1fcHJldiA9ICZtX3VzZWRsaXN0OwotCW1zaXplX2luaXQoKTsKLX0KLQotdm9pZAot bXNpemVfaW5pdCgpCi17Ci0JLyoKLQkgKiBGaW5kIGEgbmljZSB2YWx1ZSBmb3IgbXNpemUKLQkg KiBYWFggaWZfbWF4bGlua2hkciBhbHJlYWR5IGluIG10dQotCSAqLwotCW1zaXplID0gKGlmX210 dT5pZl9tcnU/aWZfbXR1OmlmX21ydSkgKwotCQkJaWZfbWF4bGlua2hkciArIHNpemVvZihzdHJ1 Y3QgbV9oZHIgKSArIDY7CiB9CiAKIC8qCkBAIC02MSwxMCArNTQsMTAgQEAKIAlERUJVR19DQUxM KCJtX2dldCIpOwogCiAJaWYgKG1fZnJlZWxpc3QubV9uZXh0ID09ICZtX2ZyZWVsaXN0KSB7Ci0J CW0gPSAoc3RydWN0IG1idWYgKiltYWxsb2MobXNpemUpOworCQltID0gKHN0cnVjdCBtYnVmICop bWFsbG9jKE1TSVpFKTsKIAkJaWYgKG0gPT0gTlVMTCkgZ290byBlbmRfZXJyb3I7CiAJCW1idWZf YWxsb2NlZCsrOwotCQlpZiAobWJ1Zl9hbGxvY2VkID4gbWJ1Zl90aHJlc2gpCisJCWlmIChtYnVm X2FsbG9jZWQgPiBNQlVGX1RIUkVTSCkKIAkJCWZsYWdzID0gTV9ET0ZSRUU7CiAJCWlmIChtYnVm X2FsbG9jZWQgPiBtYnVmX21heCkKIAkJCW1idWZfbWF4ID0gbWJ1Zl9hbGxvY2VkOwpAQCAtNzgs NyArNzEsNyBAQAogCW0tPm1fZmxhZ3MgPSAoZmxhZ3MgfCBNX1VTRURMSVNUKTsKIAogCS8qIElu aXRpYWxpc2UgaXQgKi8KLQltLT5tX3NpemUgPSBtc2l6ZSAtIHNpemVvZihzdHJ1Y3QgbV9oZHIp OworCW0tPm1fc2l6ZSA9IE1TSVpFIC0gc2l6ZW9mKHN0cnVjdCBtX2hkcik7CiAJbS0+bV9kYXRh ID0gbS0+bV9kYXQ7CiAJbS0+bV9sZW4gPSAwOwogCW0tPm1fbmV4dHBrdCA9IDA7CkluZGV4OiBx ZW11L3NsaXJwL21idWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvc2xpcnAvbWJ1Zi5oCTIw MDctMTAtMjQgMTk6Mzg6MjAuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L3NsaXJwL21idWYuaAky MDA3LTEwLTI0IDE5OjQyOjQwLjAwMDAwMDAwMCArMDAwMApAQCAtMTM1LDcgKzEzNSw2IEBACiBl eHRlcm4gaW50IG1idWZfbWF4OwogCiB2b2lkIG1faW5pdCBfUCgodm9pZCkpOwotdm9pZCBtc2l6 ZV9pbml0IF9QKCh2b2lkKSk7CiBzdHJ1Y3QgbWJ1ZiAqIG1fZ2V0IF9QKCh2b2lkKSk7CiB2b2lk IG1fZnJlZSBfUCgoc3RydWN0IG1idWYgKikpOwogdm9pZCBtX2NhdCBfUCgocmVnaXN0ZXIgc3Ry dWN0IG1idWYgKiwgcmVnaXN0ZXIgc3RydWN0IG1idWYgKikpOwpJbmRleDogcWVtdS9zbGlycC9t aXNjLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL3NsaXJwL21pc2MuYwkyMDA3LTEwLTI0IDE5 OjM4OjIwLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9zbGlycC9taXNjLmMJMjAwNy0xMC0yNCAx OTo0Mjo0MC4wMDAwMDAwMDAgKzAwMDAKQEAgLTgsOCArOCw3IEBACiAjZGVmaW5lIFdBTlRfU1lT X0lPQ1RMX0gKICNpbmNsdWRlIDxzbGlycC5oPgogCi11X2ludCBjdXJ0aW1lLCB0aW1lX2Zhc3R0 aW1vLCBsYXN0X3Nsb3d0aW1vLCBkZXRhY2hfdGltZTsKLXVfaW50IGRldGFjaF93YWl0ID0gNjAw MDAwOwkvKiAxMCBtaW51dGVzICovCit1X2ludCBjdXJ0aW1lLCB0aW1lX2Zhc3R0aW1vLCBsYXN0 X3Nsb3d0aW1vOwogCiAjaWYgMAogaW50IHhfcG9ydCA9IC0xOwpAQCAtMjE0LDEwICsyMTMsNyBA QAogI2lmZGVmIF9XSU4zMgogCiBpbnQKLWZvcmtfZXhlYyhzbywgZXgsIGRvX3B0eSkKLQlzdHJ1 Y3Qgc29ja2V0ICpzbzsKLQljaGFyICpleDsKLQlpbnQgZG9fcHR5OworZm9ya19leGVjKHN0cnVj dCBzb2NrZXQgKnNvLCBjb25zdCBjaGFyICpleCwgaW50IGRvX3B0eSkKIHsKICAgICAvKiBub3Qg aW1wbGVtZW50ZWQgKi8KICAgICByZXR1cm4gMDsKQEAgLTIyNSw2ICsyMjEsNyBAQAogCiAjZWxz ZQogCisjaWZuZGVmIENPTkZJR19RRU1VCiBpbnQKIHNsaXJwX29wZW5wdHkoYW1hc3RlciwgYXNs YXZlKQogICAgICBpbnQgKmFtYXN0ZXIsICphc2xhdmU7CkBAIC0yODksNiArMjg2LDcgQEAKIAly ZXR1cm4gKC0xKTsKICNlbmRpZgogfQorI2VuZGlmCiAKIC8qCiAgKiBYWFggVGhpcyBpcyB1Z2x5 CkBAIC0zMDIsMjMgKzMwMCwyMCBAQAogICogZG9fcHRyID0gMiAgIEZvcmsvZXhlYyB1c2luZyBw dHkKICAqLwogaW50Ci1mb3JrX2V4ZWMoc28sIGV4LCBkb19wdHkpCi0Jc3RydWN0IHNvY2tldCAq c287Ci0JY2hhciAqZXg7Ci0JaW50IGRvX3B0eTsKK2ZvcmtfZXhlYyhzdHJ1Y3Qgc29ja2V0ICpz bywgY29uc3QgY2hhciAqZXgsIGludCBkb19wdHkpCiB7CiAJaW50IHM7CiAJc3RydWN0IHNvY2th ZGRyX2luIGFkZHI7CiAJaW50IGFkZHJsZW4gPSBzaXplb2YoYWRkcik7CiAJaW50IG9wdDsKLSAg ICAgICAgaW50IG1hc3RlcjsKKyAgICAgICAgaW50IG1hc3RlciA9IC0xOwogCWNoYXIgKmFyZ3Zb MjU2XTsKICNpZiAwCiAJY2hhciBidWZmWzI1Nl07CiAjZW5kaWYKIAkvKiBkb24ndCB3YW50IHRv IGNsb2JiZXIgdGhlIG9yaWdpbmFsICovCiAJY2hhciAqYnB0cjsKLQljaGFyICpjdXJhcmc7CisJ Y29uc3QgY2hhciAqY3VyYXJnOwogCWludCBjLCBpLCByZXQ7CiAKIAlERUJVR19DQUxMKCJmb3Jr X2V4ZWMiKTsKQEAgLTMyNywxMCArMzIyLDEyIEBACiAJREVCVUdfQVJHKCJkb19wdHkgPSAlbHgi LCAobG9uZylkb19wdHkpOwogCiAJaWYgKGRvX3B0eSA9PSAyKSB7CisjaWYgMAogCQlpZiAoc2xp cnBfb3BlbnB0eSgmbWFzdGVyLCAmcykgPT0gLTEpIHsKIAkJCWxwcmludCgiRXJyb3I6IG9wZW5w dHkgZmFpbGVkOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKIAkJCXJldHVybiAwOwogCQl9Cisj ZW5kaWYKIAl9IGVsc2UgewogCQlhZGRyLnNpbl9mYW1pbHkgPSBBRl9JTkVUOwogCQlhZGRyLnNp bl9wb3J0ID0gMDsKQEAgLTM5MCw3ICszODcsNyBAQAogCQlkdXAyKHMsIDApOwogCQlkdXAyKHMs IDEpOwogCQlkdXAyKHMsIDIpOwotCQlmb3IgKHMgPSAzOyBzIDw9IDI1NTsgcysrKQorCQlmb3Ig KHMgPSBnZXRkdGFibGVzaXplKCkgLSAxOyBzID49IDM7IHMtLSkKIAkJICAgY2xvc2Uocyk7CiAK IAkJaSA9IDA7CkluZGV4OiBxZW11L3NsaXJwL21pc2MuaAo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9y aWcvc2xpcnAvbWlzYy5oCTIwMDctMTAtMjQgMTk6Mzg6MjAuMDAwMDAwMDAwICswMDAwCisrKyBx ZW11L3NsaXJwL21pc2MuaAkyMDA3LTEwLTI0IDE5OjQyOjQwLjAwMDAwMDAwMCArMDAwMApAQCAt MTIsMTIgKzEyLDEyIEBACiAJaW50IGV4X3B0eTsJCQkvKiBEbyB3ZSB3YW50IGEgcHR5PyAqLwog CWludCBleF9hZGRyOwkJCS8qIFRoZSBsYXN0IGJ5dGUgb2YgdGhlIGFkZHJlc3MgKi8KIAlpbnQg ZXhfZnBvcnQ7ICAgICAgICAgICAgICAgICAgIC8qIFBvcnQgdG8gdGVsbmV0IHRvICovCi0JY2hh ciAqZXhfZXhlYzsgICAgICAgICAgICAgICAgICAvKiBDb21tYW5kIGxpbmUgb2Ygd2hhdCB0byBl eGVjICovCisJY29uc3QgY2hhciAqZXhfZXhlYzsgICAgICAgICAgICAvKiBDb21tYW5kIGxpbmUg b2Ygd2hhdCB0byBleGVjICovCiAJc3RydWN0IGV4X2xpc3QgKmV4X25leHQ7CiB9OwogCiBleHRl cm4gc3RydWN0IGV4X2xpc3QgKmV4ZWNfbGlzdDsKLWV4dGVybiB1X2ludCBjdXJ0aW1lLCB0aW1l X2Zhc3R0aW1vLCBsYXN0X3Nsb3d0aW1vLCBkZXRhY2hfdGltZSwgZGV0YWNoX3dhaXQ7CitleHRl cm4gdV9pbnQgY3VydGltZSwgdGltZV9mYXN0dGltbywgbGFzdF9zbG93dGltbzsKIAogZXh0ZXJu IGludCAoKmxwcmludF9wcmludCkgX1AoKHZvaWQgKiwgY29uc3QgY2hhciAqLCB2YV9saXN0KSk7 CiBleHRlcm4gY2hhciAqbHByaW50X3B0ciwgKmxwcmludF9wdHIyLCAqKmxwcmludF9hcmc7CkBA IC03NCw3ICs3NCw3IEBACiBpbmxpbmUgIHZvaWQgc2xpcnBfcmVtcXVlICBfUCgodm9pZCAqKSk7 CiBpbnQgYWRkX2V4ZWMgX1AoKHN0cnVjdCBleF9saXN0ICoqLCBpbnQsIGNoYXIgKiwgaW50LCBp bnQpKTsKIGludCBzbGlycF9vcGVucHR5IF9QKChpbnQgKiwgaW50ICopKTsKLWludCBmb3JrX2V4 ZWMgX1AoKHN0cnVjdCBzb2NrZXQgKiwgY2hhciAqLCBpbnQpKTsKK2ludCBmb3JrX2V4ZWMoc3Ry dWN0IHNvY2tldCAqc28sIGNvbnN0IGNoYXIgKmV4LCBpbnQgZG9fcHR5KTsKIHZvaWQgc25vb3pl X2h1cCBfUCgoaW50KSk7CiB2b2lkIHNub296ZSBfUCgodm9pZCkpOwogdm9pZCByZWxheSBfUCgo aW50KSk7CkluZGV4OiBxZW11L3NsaXJwL3NidWYuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcv c2xpcnAvc2J1Zi5jCTIwMDctMTAtMjQgMTk6Mzg6MjAuMDAwMDAwMDAwICswMDAwCisrKyBxZW11 L3NsaXJwL3NidWYuYwkyMDA3LTEwLTI0IDE5OjQyOjQwLjAwMDAwMDAwMCArMDAwMApAQCAtNyw2 ICs3LDggQEAKIAogI2luY2x1ZGUgPHNsaXJwLmg+CiAKK3N0YXRpYyB2b2lkIHNiYXBwZW5kc2Io c3RydWN0IHNidWYgKnNiLCBzdHJ1Y3QgbWJ1ZiAqbSk7CisKIC8qIERvbmUgYXMgYSBtYWNybyBp biBzb2NrZXQuaCAqLwogLyogaW50CiAgKiBzYnNwYWNlKHN0cnVjdCBzb2NrYnVmZiAqc2IpCkBA IC0xMzMsMTAgKzEzNSw4IEBACiAgKiBDb3B5IHRoZSBkYXRhIGZyb20gbSBpbnRvIHNiCiAgKiBU aGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIHRvIG1ha2Ugc3VyZSB0aGVyZSdzIGVub3VnaCByb29t CiAgKi8KLXZvaWQKLXNiYXBwZW5kc2Ioc2IsIG0pCi0JIHN0cnVjdCBzYnVmICpzYjsKLQkgc3Ry dWN0IG1idWYgKm07CitzdGF0aWMgdm9pZAorc2JhcHBlbmRzYihzdHJ1Y3Qgc2J1ZiAqc2IsIHN0 cnVjdCBtYnVmICptKQogewogCWludCBsZW4sIG4sICBubjsKIApJbmRleDogcWVtdS9zbGlycC9z YnVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL3NsaXJwL3NidWYuaAkyMDA3LTEwLTI0IDE5 OjM4OjIwLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9zbGlycC9zYnVmLmgJMjAwNy0xMC0yNCAx OTo0Mjo0MC4wMDAwMDAwMDAgKzAwMDAKQEAgLTI1LDcgKzI1LDYgQEAKIHZvaWQgc2Jkcm9wIF9Q KChzdHJ1Y3Qgc2J1ZiAqLCBpbnQpKTsKIHZvaWQgc2JyZXNlcnZlIF9QKChzdHJ1Y3Qgc2J1ZiAq LCBpbnQpKTsKIHZvaWQgc2JhcHBlbmQgX1AoKHN0cnVjdCBzb2NrZXQgKiwgc3RydWN0IG1idWYg KikpOwotdm9pZCBzYmFwcGVuZHNiIF9QKChzdHJ1Y3Qgc2J1ZiAqLCBzdHJ1Y3QgbWJ1ZiAqKSk7 CiB2b2lkIHNiY29weSBfUCgoc3RydWN0IHNidWYgKiwgaW50LCBpbnQsIGNoYXIgKikpOwogCiAj ZW5kaWYKSW5kZXg6IHFlbXUvc2xpcnAvc2xpcnAuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcv c2xpcnAvc2xpcnAuYwkyMDA3LTEwLTI0IDE5OjM4OjIwLjAwMDAwMDAwMCArMDAwMAorKysgcWVt dS9zbGlycC9zbGlycC5jCTIwMDctMTAtMjQgMTk6NDI6NDAuMDAwMDAwMDAwICswMDAwCkBAIC0x Miw3ICsxMiw3IEBACiAvKiB2aXJ0dWFsIGFkZHJlc3MgYWxpYXMgZm9yIGhvc3QgKi8KIHN0cnVj dCBpbl9hZGRyIGFsaWFzX2FkZHI7CiAKLWNvbnN0IHVpbnQ4X3Qgc3BlY2lhbF9ldGhhZGRyWzZd ID0geworc3RhdGljIGNvbnN0IHVpbnQ4X3Qgc3BlY2lhbF9ldGhhZGRyWzZdID0gewogICAgIDB4 NTIsIDB4NTQsIDB4MDAsIDB4MTIsIDB4MzUsIDB4MDAKIH07CiAKQEAgLTkzLDcgKzkzLDkgQEAK ICAgICBpZiAoIWYpCiAgICAgICAgIHJldHVybiAtMTsKIAorI2lmZGVmIERFQlVHCiAgICAgbHBy aW50KCJJUCBhZGRyZXNzIG9mIHlvdXIgRE5TKHMpOiAiKTsKKyNlbmRpZgogICAgIHdoaWxlIChm Z2V0cyhidWZmLCA1MTIsIGYpICE9IE5VTEwpIHsKICAgICAgICAgaWYgKHNzY2FuZihidWZmLCAi bmFtZXNlcnZlciUqWyBcdF0lMjU2cyIsIGJ1ZmYyKSA9PSAxKSB7CiAgICAgICAgICAgICBpZiAo IWluZXRfYXRvbihidWZmMiwgJnRtcF9hZGRyKSkKQEAgLTEwMywxMyArMTA1LDIwIEBACiAgICAg ICAgICAgICAvKiBJZiBpdCdzIHRoZSBmaXJzdCBvbmUsIHNldCBpdCB0byBkbnNfYWRkciAqLwog ICAgICAgICAgICAgaWYgKCFmb3VuZCkKICAgICAgICAgICAgICAgICAqcGRuc19hZGRyID0gdG1w X2FkZHI7CisjaWZkZWYgREVCVUcKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBs cHJpbnQoIiwgIik7CisjZW5kaWYKICAgICAgICAgICAgIGlmICgrK2ZvdW5kID4gMykgeworI2lm ZGVmIERFQlVHCiAgICAgICAgICAgICAgICAgbHByaW50KCIobW9yZSkiKTsKKyNlbmRpZgogICAg ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB9Cisj aWZkZWYgREVCVUcKKyAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBscHJpbnQoIiVz IiwgaW5ldF9udG9hKHRtcF9hZGRyKSk7CisjZW5kaWYKICAgICAgICAgfQogICAgIH0KICAgICBm Y2xvc2UoZik7CkBAIC0xMjEsNyArMTMwLDcgQEAKICNlbmRpZgogCiAjaWZkZWYgX1dJTjMyCi12 b2lkIHNsaXJwX2NsZWFudXAodm9pZCkKK3N0YXRpYyB2b2lkIHNsaXJwX2NsZWFudXAodm9pZCkK IHsKICAgICBXU0FDbGVhbnVwKCk7CiB9CkluZGV4OiBxZW11L3NsaXJwL3NsaXJwLmgKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gcWVtdS5vcmlnL3NsaXJwL3NsaXJwLmgJMjAwNy0xMC0yNCAxOTozODoyMC4wMDAw MDAwMDAgKzAwMDAKKysrIHFlbXUvc2xpcnAvc2xpcnAuaAkyMDA3LTEwLTI0IDE5OjQyOjQwLjAw MDAwMDAwMCArMDAwMApAQCAtNiw3ICs2LDcgQEAKIC8vI2RlZmluZSBERUJVRyAxCiAKIC8vIFVu Y29tbWVudCB0aGUgZm9sbG93aW5nIGxpbmUgdG8gZW5hYmxlIFNMSVJQIHN0YXRpc3RpY3MgcHJp bnRpbmcgaW4gUWVtdQotLy8jZGVmaW5lIExPR19FTkFCTEVECisjZGVmaW5lIExPR19FTkFCTEVE CiAKICNpZmRlZiBMT0dfRU5BQkxFRAogI2RlZmluZSBTVEFUKGV4cHIpIGV4cHIKQEAgLTI5Miw2 ICsyOTIsOSBAQAogCiAjZGVmaW5lIERFRkFVTFRfQkFVRCAxMTUyMDAKIAorI2RlZmluZSBTT19P UFRJT05TIERPX0tFRVBBTElWRQorI2RlZmluZSBUQ1BfTUFYSURMRSAoVENQVFZfS0VFUENOVCAq IFRDUFRWX0tFRVBJTlRWTCkKKwogLyogY2tzdW0uYyAqLwogaW50IGNrc3VtKHN0cnVjdCBtYnVm ICptLCBpbnQgbGVuKTsKIApAQCAtMzAyLDEwICszMDUsNiBAQAogLyogaXBfaW5wdXQuYyAqLwog dm9pZCBpcF9pbml0IF9QKCh2b2lkKSk7CiB2b2lkIGlwX2lucHV0IF9QKChzdHJ1Y3QgbWJ1ZiAq KSk7Ci1zdHJ1Y3QgaXAgKiBpcF9yZWFzcyBfUCgocmVnaXN0ZXIgc3RydWN0IGlwYXNmcmFnICos IHJlZ2lzdGVyIHN0cnVjdCBpcHEgKikpOwotdm9pZCBpcF9mcmVlZiBfUCgoc3RydWN0IGlwcSAq KSk7Ci12b2lkIGlwX2VucSBfUCgocmVnaXN0ZXIgc3RydWN0IGlwYXNmcmFnICosIHJlZ2lzdGVy IHN0cnVjdCBpcGFzZnJhZyAqKSk7Ci12b2lkIGlwX2RlcSBfUCgocmVnaXN0ZXIgc3RydWN0IGlw YXNmcmFnICopKTsKIHZvaWQgaXBfc2xvd3RpbW8gX1AoKHZvaWQpKTsKIHZvaWQgaXBfc3RyaXBv cHRpb25zIF9QKChyZWdpc3RlciBzdHJ1Y3QgbWJ1ZiAqLCBzdHJ1Y3QgbWJ1ZiAqKSk7CiAKQEAg LTMxMywxMCArMzEyLDcgQEAKIGludCBpcF9vdXRwdXQgX1AoKHN0cnVjdCBzb2NrZXQgKiwgc3Ry dWN0IG1idWYgKikpOwogCiAvKiB0Y3BfaW5wdXQuYyAqLwotaW50IHRjcF9yZWFzcyBfUCgocmVn aXN0ZXIgc3RydWN0IHRjcGNiICosIHJlZ2lzdGVyIHN0cnVjdCB0Y3BpcGhkciAqLCBzdHJ1Y3Qg bWJ1ZiAqKSk7CiB2b2lkIHRjcF9pbnB1dCBfUCgocmVnaXN0ZXIgc3RydWN0IG1idWYgKiwgaW50 LCBzdHJ1Y3Qgc29ja2V0ICopKTsKLXZvaWQgdGNwX2Rvb3B0aW9ucyBfUCgoc3RydWN0IHRjcGNi ICosIHVfY2hhciAqLCBpbnQsIHN0cnVjdCB0Y3BpcGhkciAqKSk7Ci12b2lkIHRjcF94bWl0X3Rp bWVyIF9QKChyZWdpc3RlciBzdHJ1Y3QgdGNwY2IgKiwgaW50KSk7CiBpbnQgdGNwX21zcyBfUCgo cmVnaXN0ZXIgc3RydWN0IHRjcGNiICosIHVfaW50KSk7CiAKIC8qIHRjcF9vdXRwdXQuYyAqLwpA QCAtMzI5LDcgKzMyNSw2IEBACiB2b2lkIHRjcF9yZXNwb25kIF9QKChzdHJ1Y3QgdGNwY2IgKiwg cmVnaXN0ZXIgc3RydWN0IHRjcGlwaGRyICosIHJlZ2lzdGVyIHN0cnVjdCBtYnVmICosIHRjcF9z ZXEsIHRjcF9zZXEsIGludCkpOwogc3RydWN0IHRjcGNiICogdGNwX25ld3RjcGNiIF9QKChzdHJ1 Y3Qgc29ja2V0ICopKTsKIHN0cnVjdCB0Y3BjYiAqIHRjcF9jbG9zZSBfUCgocmVnaXN0ZXIgc3Ry dWN0IHRjcGNiICopKTsKLXZvaWQgdGNwX2RyYWluIF9QKCh2b2lkKSk7CiB2b2lkIHRjcF9zb2Nr Y2xvc2VkIF9QKChzdHJ1Y3QgdGNwY2IgKikpOwogaW50IHRjcF9mY29ubmVjdCBfUCgoc3RydWN0 IHNvY2tldCAqKSk7CiB2b2lkIHRjcF9jb25uZWN0IF9QKChzdHJ1Y3Qgc29ja2V0ICopKTsKSW5k ZXg6IHFlbXUvc2xpcnAvc29ja2V0LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL3NsaXJwL3Nv Y2tldC5jCTIwMDctMTAtMjQgMTk6Mzg6MjAuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L3NsaXJw L3NvY2tldC5jCTIwMDctMTAtMjQgMTk6NDI6NDAuMDAwMDAwMDAwICswMDAwCkBAIC0xMywxMiAr MTMsMTYgQEAKICNpbmNsdWRlIDxzeXMvZmlsaW8uaD4KICNlbmRpZgogCi12b2lkCitzdGF0aWMg dm9pZCBzb2ZjYW50cmN2bW9yZShzdHJ1Y3Qgc29ja2V0ICpzbyk7CitzdGF0aWMgdm9pZCBzb2Zj YW50c2VuZG1vcmUoc3RydWN0IHNvY2tldCAqc28pOworCisjaWYgMAorc3RhdGljIHZvaWQKIHNv X2luaXQoKQogewogCS8qIE5vdGhpbmcgeWV0ICovCiB9Ci0KKyNlbmRpZgogCiBzdHJ1Y3Qgc29j a2V0ICoKIHNvbG9va3VwKGhlYWQsIGxhZGRyLCBscG9ydCwgZmFkZHIsIGZwb3J0KQpAQCAtNDIx LDcgKzQyNSw3IEBACiAJICBpbnQgbGVuLCBuOwogCiAJICBpZiAoIShtID0gbV9nZXQoKSkpIHJl dHVybjsKLQkgIG0tPm1fZGF0YSArPSBpZl9tYXhsaW5raGRyOworCSAgbS0+bV9kYXRhICs9IElG X01BWExJTktIRFI7CiAKIAkgIC8qCiAJICAgKiBYWFggU2hvdWxkbid0IEZJT05SRUFEIHBhY2tl dHMgZGVzdGluZWQgZm9yIHBvcnQgNTMsCkBAIC02MDQsMTIgKzYwOCwxMyBAQAogCXJldHVybiBz bzsKIH0KIAorI2lmIDAKIC8qCiAgKiBEYXRhIGlzIGF2YWlsYWJsZSBpbiBzb19yY3YKICAqIEp1 c3Qgd3JpdGUoKSB0aGUgZGF0YSB0byB0aGUgc29ja2V0CiAgKiBYWFggbm90IHlldC4uLgogICov Ci12b2lkCitzdGF0aWMgdm9pZAogc29yd2FrZXVwKHNvKQogCXN0cnVjdCBzb2NrZXQgKnNvOwog ewpAQCAtNjIyLDEyICs2MjcsMTMgQEAKICAqIFdlIGhhdmUgcm9vbSBmb3IgYSByZWFkKCkgaWYg d2Ugd2FudCB0bwogICogRm9yIG5vdywgZG9uJ3QgcmVhZCwgaXQnbGwgYmUgZG9uZSBpbiB0aGUg bWFpbiBsb29wCiAgKi8KLXZvaWQKK3N0YXRpYyB2b2lkCiBzb3d3YWtldXAoc28pCiAJc3RydWN0 IHNvY2tldCAqc287CiB7CiAJLyogTm90aGluZywgeWV0ICovCiB9CisjZW5kaWYKIAogLyoKICAq IFZhcmlvdXMgc2Vzc2lvbiBzdGF0ZSBjYWxscwpAQCAtNjUyLDkgKzY1OCw4IEBACiAJc28tPnNv X3N0YXRlIHw9IFNTX0lTRkNPTk5FQ1RFRDsgLyogQ2xvYmJlciBvdGhlciBzdGF0ZXMgKi8KIH0K IAotdm9pZAotc29mY2FudHJjdm1vcmUoc28pCi0Jc3RydWN0ICBzb2NrZXQgKnNvOworc3RhdGlj IHZvaWQKK3NvZmNhbnRyY3Ztb3JlKHN0cnVjdCBzb2NrZXQgKnNvKQogewogCWlmICgoc28tPnNv X3N0YXRlICYgU1NfTk9GRFJFRikgPT0gMCkgewogCQlzaHV0ZG93bihzby0+cywwKTsKQEAgLTY2 OSw5ICs2NzQsOCBAQAogCSAgIHNvLT5zb19zdGF0ZSB8PSBTU19GQ0FOVFJDVk1PUkU7CiB9CiAK LXZvaWQKLXNvZmNhbnRzZW5kbW9yZShzbykKLQlzdHJ1Y3Qgc29ja2V0ICpzbzsKK3N0YXRpYyB2 b2lkCitzb2ZjYW50c2VuZG1vcmUoc3RydWN0IHNvY2tldCAqc28pCiB7CiAJaWYgKChzby0+c29f c3RhdGUgJiBTU19OT0ZEUkVGKSA9PSAwKSB7CiAgICAgICAgICAgICBzaHV0ZG93bihzby0+cywx KTsgICAgICAgICAgIC8qIHNlbmQgRklOIHRvIGZob3N0ICovCkluZGV4OiBxZW11L3NsaXJwL3Nv Y2tldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9zbGlycC9zb2NrZXQuaAkyMDA3LTEwLTI0 IDE5OjM4OjIwLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9zbGlycC9zb2NrZXQuaAkyMDA3LTEw LTI0IDE5OjQyOjQwLjAwMDAwMDAwMCArMDAwMApAQCAtODEsNyArODEsNiBAQAogfTsKICNlbmRp ZgogCi12b2lkIHNvX2luaXQgX1AoKHZvaWQpKTsKIHN0cnVjdCBzb2NrZXQgKiBzb2xvb2t1cCBf UCgoc3RydWN0IHNvY2tldCAqLCBzdHJ1Y3QgaW5fYWRkciwgdV9pbnQsIHN0cnVjdCBpbl9hZGRy LCB1X2ludCkpOwogc3RydWN0IHNvY2tldCAqIHNvY3JlYXRlIF9QKCh2b2lkKSk7CiB2b2lkIHNv ZnJlZSBfUCgoc3RydWN0IHNvY2tldCAqKSk7CkBAIC05MiwxMiArOTEsOCBAQAogdm9pZCBzb3Jl Y3Zmcm9tIF9QKChzdHJ1Y3Qgc29ja2V0ICopKTsKIGludCBzb3NlbmR0byBfUCgoc3RydWN0IHNv Y2tldCAqLCBzdHJ1Y3QgbWJ1ZiAqKSk7CiBzdHJ1Y3Qgc29ja2V0ICogc29saXN0ZW4gX1AoKHVf aW50LCB1X2ludDMyX3QsIHVfaW50LCBpbnQpKTsKLXZvaWQgc29yd2FrZXVwIF9QKChzdHJ1Y3Qg c29ja2V0ICopKTsKLXZvaWQgc293d2FrZXVwIF9QKChzdHJ1Y3Qgc29ja2V0ICopKTsKIHZvaWQg c29pc2Zjb25uZWN0aW5nIF9QKChyZWdpc3RlciBzdHJ1Y3Qgc29ja2V0ICopKTsKIHZvaWQgc29p c2Zjb25uZWN0ZWQgX1AoKHJlZ2lzdGVyIHN0cnVjdCBzb2NrZXQgKikpOwotdm9pZCBzb2ZjYW50 cmN2bW9yZSBfUCgoc3RydWN0ICBzb2NrZXQgKikpOwotdm9pZCBzb2ZjYW50c2VuZG1vcmUgX1Ao KHN0cnVjdCBzb2NrZXQgKikpOwogdm9pZCBzb2lzZmRpc2Nvbm5lY3RlZCBfUCgoc3RydWN0IHNv Y2tldCAqKSk7CiB2b2lkIHNvZndkcmFpbiBfUCgoc3RydWN0IHNvY2tldCAqKSk7CiAKSW5kZXg6 IHFlbXUvc2xpcnAvdGNwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL3NsaXJwL3RjcC5oCTIw MDctMTAtMjQgMTk6Mzg6MjAuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L3NsaXJwL3RjcC5oCTIw MDctMTAtMjQgMTk6NDI6NDAuMDAwMDAwMDAwICswMDAwCkBAIC00Miw4ICs0Miw2IEBACiAjZGVm aW5lICAgICAgUFJfU0xPV0haICAgICAgIDIgICAgICAgICAgICAgICAvKiAyIHNsb3cgdGltZW91 dHMgcGVyIHNlY29uZCAoYXBwcm94KSAqLwogI2RlZmluZSAgICAgIFBSX0ZBU1RIWiAgICAgICA1 ICAgICAgICAgICAgICAgLyogNSBmYXN0IHRpbWVvdXRzIHBlciBzZWNvbmQgKG5vdCBpbXBvcnRh bnQpICovCiAKLWV4dGVybiBpbnQgdGNwX3JjdnNwYWNlOwotZXh0ZXJuIGludCB0Y3Bfc25kc3Bh Y2U7CiBleHRlcm4gc3RydWN0IHNvY2tldCAqdGNwX2xhc3Rfc287CiAKICNkZWZpbmUgVENQX1NO RFNQQUNFIDgxOTIKQEAgLTE3Miw2ICsxNzAsNiBAQAogCiBleHRlcm4gdGNwX3NlcSB0Y3BfaXNz OyAgICAgICAgICAgICAgICAvKiB0Y3AgaW5pdGlhbCBzZW5kIHNlcSAjICovCiAKLWV4dGVybiBj aGFyICp0Y3BzdGF0ZXNbXTsKK2V4dGVybiBjb25zdCBjaGFyICogY29uc3QgdGNwc3RhdGVzW107 CiAKICNlbmRpZgpJbmRleDogcWVtdS9zbGlycC90Y3BfaW5wdXQuYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBx ZW11Lm9yaWcvc2xpcnAvdGNwX2lucHV0LmMJMjAwNy0xMC0yNCAxOTozODoyMC4wMDAwMDAwMDAg KzAwMDAKKysrIHFlbXUvc2xpcnAvdGNwX2lucHV0LmMJMjAwNy0xMC0yNCAxOTo0Mjo0MC4wMDAw MDAwMDAgKzAwMDAKQEAgLTQ3LDcgKzQ3LDcgQEAKIAogc3RydWN0IHNvY2tldCB0Y2I7CiAKLWlu dAl0Y3ByZXhtdHRocmVzaCA9IDM7CisjZGVmaW5lCVRDUFJFWE1UVEhSRVNIIDMKIHN0cnVjdAlz b2NrZXQgKnRjcF9sYXN0X3NvID0gJnRjYjsKIAogdGNwX3NlcSB0Y3BfaXNzOyAgICAgICAgICAg ICAgICAvKiB0Y3AgaW5pdGlhbCBzZW5kIHNlcSAjICovCkBAIC0xMTIsMTIgKzExMiwxMyBAQAog CX0gXAogfQogI2VuZGlmCi0KLWludAotdGNwX3JlYXNzKHRwLCB0aSwgbSkKLQlyZWdpc3RlciBz dHJ1Y3QgdGNwY2IgKnRwOwotCXJlZ2lzdGVyIHN0cnVjdCB0Y3BpcGhkciAqdGk7Ci0Jc3RydWN0 IG1idWYgKm07CitzdGF0aWMgdm9pZCB0Y3BfZG9vcHRpb25zKHN0cnVjdCB0Y3BjYiAqdHAsIHVf Y2hhciAqY3AsIGludCBjbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0Y3Bp cGhkciAqdGkpOworc3RhdGljIHZvaWQgdGNwX3htaXRfdGltZXIocmVnaXN0ZXIgc3RydWN0IHRj cGNiICp0cCwgaW50IHJ0dCk7CisKK3N0YXRpYyBpbnQKK3RjcF9yZWFzcyhyZWdpc3RlciBzdHJ1 Y3QgdGNwY2IgKnRwLCByZWdpc3RlciBzdHJ1Y3QgdGNwaXBoZHIgKnRpLAorICAgICAgICAgIHN0 cnVjdCBtYnVmICptKQogewogCXJlZ2lzdGVyIHN0cnVjdCB0Y3BpcGhkciAqcTsKIAlzdHJ1Y3Qg c29ja2V0ICpzbyA9IHRwLT50X3NvY2tldDsKQEAgLTQwMiw4ICs0MDMsOCBAQAogCSAgICBnb3Rv IGRyb3B3aXRocmVzZXQ7CiAJICB9CiAKLQkgIHNicmVzZXJ2ZSgmc28tPnNvX3NuZCwgdGNwX3Nu ZHNwYWNlKTsKLQkgIHNicmVzZXJ2ZSgmc28tPnNvX3JjdiwgdGNwX3JjdnNwYWNlKTsKKwkgIHNi cmVzZXJ2ZSgmc28tPnNvX3NuZCwgVENQX1NORFNQQUNFKTsKKwkgIHNicmVzZXJ2ZSgmc28tPnNv X3JjdiwgVENQX1JDVlNQQUNFKTsKIAogCSAgLyoJCXRjcF9sYXN0X3NvID0gc287ICovICAvKiBY WFggPyAqLwogCSAgLyoJCXRwID0gc290b3RjcGNiKHNvKTsgICAgKi8KQEAgLTQ0OCwxMCArNDQ5 LDEwIEBACiAJICogUmVzZXQgaWRsZSB0aW1lIGFuZCBrZWVwLWFsaXZlIHRpbWVyLgogCSAqLwog CXRwLT50X2lkbGUgPSAwOwotCWlmIChzb19vcHRpb25zKQotCSAgIHRwLT50X3RpbWVyW1RDUFRf S0VFUF0gPSB0Y3Bfa2VlcGludHZsOworCWlmIChTT19PUFRJT05TKQorCSAgIHRwLT50X3RpbWVy W1RDUFRfS0VFUF0gPSBUQ1BUVl9LRUVQSU5UVkw7CiAJZWxzZQotCSAgIHRwLT50X3RpbWVyW1RD UFRfS0VFUF0gPSB0Y3Bfa2VlcGlkbGU7CisJICAgdHAtPnRfdGltZXJbVENQVF9LRUVQXSA9IFRD UFRWX0tFRVBfSURMRTsKIAogCS8qCiAJICogUHJvY2VzcyBvcHRpb25zIGlmIG5vdCBpbiBMSVNU RU4gc3RhdGUsCkBAIC0xMTAyLDcgKzExMDMsNyBAQAogCQkJCWlmICh0cC0+dF90aW1lcltUQ1BU X1JFWE1UXSA9PSAwIHx8CiAJCQkJICAgIHRpLT50aV9hY2sgIT0gdHAtPnNuZF91bmEpCiAJCQkJ CXRwLT50X2R1cGFja3MgPSAwOwotCQkJCWVsc2UgaWYgKCsrdHAtPnRfZHVwYWNrcyA9PSB0Y3By ZXhtdHRocmVzaCkgeworCQkJCWVsc2UgaWYgKCsrdHAtPnRfZHVwYWNrcyA9PSBUQ1BSRVhNVFRI UkVTSCkgewogCQkJCQl0Y3Bfc2VxIG9ueHQgPSB0cC0+c25kX254dDsKIAkJCQkJdV9pbnQgd2lu ID0KIAkJCQkJICAgIG1pbih0cC0+c25kX3duZCwgdHAtPnNuZF9jd25kKSAvIDIgLwpAQCAtMTEy MSw3ICsxMTIyLDcgQEAKIAkJCQkJaWYgKFNFUV9HVChvbnh0LCB0cC0+c25kX254dCkpCiAJCQkJ CQl0cC0+c25kX254dCA9IG9ueHQ7CiAJCQkJCWdvdG8gZHJvcDsKLQkJCQl9IGVsc2UgaWYgKHRw LT50X2R1cGFja3MgPiB0Y3ByZXhtdHRocmVzaCkgeworCQkJCX0gZWxzZSBpZiAodHAtPnRfZHVw YWNrcyA+IFRDUFJFWE1UVEhSRVNIKSB7CiAJCQkJCXRwLT5zbmRfY3duZCArPSB0cC0+dF9tYXhz ZWc7CiAJCQkJCSh2b2lkKSB0Y3Bfb3V0cHV0KHRwKTsKIAkJCQkJZ290byBkcm9wOwpAQCAtMTEz NSw3ICsxMTM2LDcgQEAKIAkJICogSWYgdGhlIGNvbmdlc3Rpb24gd2luZG93IHdhcyBpbmZsYXRl ZCB0byBhY2NvdW50CiAJCSAqIGZvciB0aGUgb3RoZXIgc2lkZSdzIGNhY2hlZCBwYWNrZXRzLCBy ZXRyYWN0IGl0LgogCQkgKi8KLQkJaWYgKHRwLT50X2R1cGFja3MgPiB0Y3ByZXhtdHRocmVzaCAm JgorCQlpZiAodHAtPnRfZHVwYWNrcyA+IFRDUFJFWE1UVEhSRVNIICYmCiAJCSAgICB0cC0+c25k X2N3bmQgPiB0cC0+c25kX3NzdGhyZXNoKQogCQkJdHAtPnNuZF9jd25kID0gdHAtPnNuZF9zc3Ro cmVzaDsKIAkJdHAtPnRfZHVwYWNrcyA9IDA7CkBAIC0xMjI3LDcgKzEyMjgsNyBAQAogCQkJCSAq LwogCQkJCWlmIChzby0+c29fc3RhdGUgJiBTU19GQ0FOVFJDVk1PUkUpIHsKIAkJCQkJc29pc2Zk aXNjb25uZWN0ZWQoc28pOwotCQkJCQl0cC0+dF90aW1lcltUQ1BUXzJNU0xdID0gdGNwX21heGlk bGU7CisJCQkJCXRwLT50X3RpbWVyW1RDUFRfMk1TTF0gPSBUQ1BfTUFYSURMRTsKIAkJCQl9CiAJ CQkJdHAtPnRfc3RhdGUgPSBUQ1BTX0ZJTl9XQUlUXzI7CiAJCQl9CkBAIC0xNDkwLDEyICsxNDkx LDggQEAKIC8qCWludCAqdHNfcHJlc2VudDsKICAqCXVfaW50MzJfdCAqdHNfdmFsLCAqdHNfZWNy OwogICovCi12b2lkCi10Y3BfZG9vcHRpb25zKHRwLCBjcCwgY250LCB0aSkKLQlzdHJ1Y3QgdGNw Y2IgKnRwOwotCXVfY2hhciAqY3A7Ci0JaW50IGNudDsKLQlzdHJ1Y3QgdGNwaXBoZHIgKnRpOwor c3RhdGljIHZvaWQKK3RjcF9kb29wdGlvbnMoc3RydWN0IHRjcGNiICp0cCwgdV9jaGFyICpjcCwg aW50IGNudCwgc3RydWN0IHRjcGlwaGRyICp0aSkKIHsKIAl1X2ludDE2X3QgbXNzOwogCWludCBv cHQsIG9wdGxlbjsKQEAgLTE2MDUsMTAgKzE2MDIsOCBAQAogICogYW5kIHVwZGF0ZSBhdmVyYWdl cyBhbmQgY3VycmVudCB0aW1lb3V0LgogICovCiAKLXZvaWQKLXRjcF94bWl0X3RpbWVyKHRwLCBy dHQpCi0JcmVnaXN0ZXIgc3RydWN0IHRjcGNiICp0cDsKLQlpbnQgcnR0Oworc3RhdGljIHZvaWQK K3RjcF94bWl0X3RpbWVyKHJlZ2lzdGVyIHN0cnVjdCB0Y3BjYiAqdHAsIGludCBydHQpCiB7CiAJ cmVnaXN0ZXIgc2hvcnQgZGVsdGE7CiAKQEAgLTE3MDcsNyArMTcwMiw3IEBACiAJREVCVUdfQVJH KCJ0cCA9ICVseCIsIChsb25nKXRwKTsKIAlERUJVR19BUkcoIm9mZmVyID0gJWQiLCBvZmZlcik7 CiAKLQltc3MgPSBtaW4oaWZfbXR1LCBpZl9tcnUpIC0gc2l6ZW9mKHN0cnVjdCB0Y3BpcGhkcik7 CisJbXNzID0gbWluKElGX01UVSwgSUZfTVJVKSAtIHNpemVvZihzdHJ1Y3QgdGNwaXBoZHIpOwog CWlmIChvZmZlcikKIAkJbXNzID0gbWluKG1zcywgb2ZmZXIpOwogCW1zcyA9IG1heChtc3MsIDMy KTsKQEAgLTE3MTYsOCArMTcxMSwxMiBAQAogCiAJdHAtPnNuZF9jd25kID0gbXNzOwogCi0Jc2Jy ZXNlcnZlKCZzby0+c29fc25kLCB0Y3Bfc25kc3BhY2UrKCh0Y3Bfc25kc3BhY2UlbXNzKT8obXNz LSh0Y3Bfc25kc3BhY2UlbXNzKSk6MCkpOwotCXNicmVzZXJ2ZSgmc28tPnNvX3JjdiwgdGNwX3Jj dnNwYWNlKygodGNwX3JjdnNwYWNlJW1zcyk/KG1zcy0odGNwX3JjdnNwYWNlJW1zcykpOjApKTsK KwlzYnJlc2VydmUoJnNvLT5zb19zbmQsIFRDUF9TTkRTUEFDRSArICgoVENQX1NORFNQQUNFICUg bXNzKSA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICht c3MgLSAoVENQX1NORFNQQUNFICUgbXNzKSkgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAwKSk7CisJc2JyZXNlcnZlKCZzby0+c29fcmN2LCBUQ1BfUkNW U1BBQ0UgKyAoKFRDUF9SQ1ZTUEFDRSAlIG1zcykgPworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobXNzIC0gKFRDUF9SQ1ZTUEFDRSAlIG1zcykpIDoKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCkpOwogCiAJREVC VUdfTUlTQygoZGZkLCAiIHJldHVybmluZyBtc3MgPSAlZFxuIiwgbXNzKSk7CiAKSW5kZXg6IHFl bXUvc2xpcnAvdGNwX291dHB1dC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9zbGlycC90Y3Bf b3V0cHV0LmMJMjAwNy0xMC0yNCAxOTozODoyMC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvc2xp cnAvdGNwX291dHB1dC5jCTIwMDctMTAtMjQgMTk6NDI6NDAuMDAwMDAwMDAwICswMDAwCkBAIC00 OCwxNCArNDgsMTQgQEAKICAqIFNpbmNlIHRoaXMgaXMgb25seSB1c2VkIGluICJzdGF0cyBzb2Nr ZXQiLCB3ZSBnaXZlIG1lYW5pbmcKICAqIG5hbWVzIGluc3RlYWQgb2YgdGhlIFJFQUwgbmFtZXMK ICAqLwotY2hhciAqdGNwc3RhdGVzW10gPSB7Citjb25zdCBjaGFyICogY29uc3QgdGNwc3RhdGVz W10gPSB7CiAvKgkiQ0xPU0VEIiwgICAgICAgIkxJU1RFTiIsICAgICAgICJTWU5fU0VOVCIsICAg ICAiU1lOX1JDVkQiLCAqLwogCSJSRURJUkVDVCIsCSJMSVNURU4iLAkiU1lOX1NFTlQiLCAgICAg IlNZTl9SQ1ZEIiwKIAkiRVNUQUJMSVNIRUQiLCAgIkNMT1NFX1dBSVQiLCAgICJGSU5fV0FJVF8x IiwgICAiQ0xPU0lORyIsCiAJIkxBU1RfQUNLIiwgICAgICJGSU5fV0FJVF8yIiwgICAiVElNRV9X QUlUIiwKIH07CiAKLXVfY2hhciAgdGNwX291dGZsYWdzW1RDUF9OU1RBVEVTXSA9IHsKK3N0YXRp YyBjb25zdCB1X2NoYXIgIHRjcF9vdXRmbGFnc1tUQ1BfTlNUQVRFU10gPSB7CiAJVEhfUlNUfFRI X0FDSywgMCwgICAgICBUSF9TWU4sICAgICAgICBUSF9TWU58VEhfQUNLLAogCVRIX0FDSywgICAg ICAgIFRIX0FDSywgVEhfRklOfFRIX0FDSywgVEhfRklOfFRIX0FDSywKIAlUSF9GSU58VEhfQUNL LCBUSF9BQ0ssIFRIX0FDSywKQEAgLTM1NCw3ICszNTQsNyBAQAogCQkJZXJyb3IgPSAxOwogCQkJ Z290byBvdXQ7CiAJCX0KLQkJbS0+bV9kYXRhICs9IGlmX21heGxpbmtoZHI7CisJCW0tPm1fZGF0 YSArPSBJRl9NQVhMSU5LSERSOwogCQltLT5tX2xlbiA9IGhkcmxlbjsKIAogCQkvKgpAQCAtMzk2 LDcgKzM5Niw3IEBACiAJCQllcnJvciA9IDE7CiAJCQlnb3RvIG91dDsKIAkJfQotCQltLT5tX2Rh dGEgKz0gaWZfbWF4bGlua2hkcjsKKwkJbS0+bV9kYXRhICs9IElGX01BWExJTktIRFI7CiAJCW0t Pm1fbGVuID0gaGRybGVuOwogCX0KIApAQCAtNTM2LDcgKzUzNiw3IEBACiAKIAkoKHN0cnVjdCBp cCAqKXRpKS0+aXBfbGVuID0gbS0+bV9sZW47CiAKLQkoKHN0cnVjdCBpcCAqKXRpKS0+aXBfdHRs ID0gaXBfZGVmdHRsOworCSgoc3RydWN0IGlwICopdGkpLT5pcF90dGwgPSBJUERFRlRUTDsKIAko KHN0cnVjdCBpcCAqKXRpKS0+aXBfdG9zID0gc28tPnNvX2lwdG9zOwogCiAvKiAjaWYgQlNEID49 IDQzICovCkluZGV4OiBxZW11L3NsaXJwL3RjcF9zdWJyLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5v cmlnL3NsaXJwL3RjcF9zdWJyLmMJMjAwNy0xMC0yNCAxOTozODoyMC4wMDAwMDAwMDAgKzAwMDAK KysrIHFlbXUvc2xpcnAvdGNwX3N1YnIuYwkyMDA3LTEwLTI0IDE5OjQyOjQwLjAwMDAwMDAwMCAr MDAwMApAQCAtNDYsMTEgKzQ2LDggQEAKICNpbmNsdWRlIDxzbGlycC5oPgogCiAvKiBwYXRjaGFi bGUvc2V0dGFibGUgcGFyYW1ldGVycyBmb3IgdGNwICovCi1pbnQgCXRjcF9tc3NkZmx0ID0gVENQ X01TUzsKLWludCAJdGNwX3J0dGRmbHQgPSBUQ1BUVl9TUlRUREZMVCAvIFBSX1NMT1dIWjsKLWlu dAl0Y3BfZG9fcmZjMTMyMyA9IDA7CS8qIERvbid0IGRvIHJmYzEzMjMgcGVyZm9ybWFuY2UgZW5o YW5jZW1lbnRzICovCi1pbnQJdGNwX3JjdnNwYWNlOwkvKiBZb3UgbWF5IHdhbnQgdG8gY2hhbmdl IHRoaXMgKi8KLWludAl0Y3Bfc25kc3BhY2U7CS8qIEtlZXAgc21hbGwgaWYgeW91IGhhdmUgYW4g ZXJyb3IgcHJvbmUgbGluayAqLworLyogRG9uJ3QgZG8gcmZjMTMyMyBwZXJmb3JtYW5jZSBlbmhh bmNlbWVudHMgKi8KKyNkZWZpbmUgVENQX0RPX1JGQzEzMjMgMAogCiAvKgogICogVGNwIGluaXRp YWxpemF0aW9uCkBAIC02MCwxNCArNTcsNiBAQAogewogCXRjcF9pc3MgPSAxOwkJLyogd3Jvbmcg Ki8KIAl0Y2Iuc29fbmV4dCA9IHRjYi5zb19wcmV2ID0gJnRjYjsKLQotCS8qIHRjcF9yY3ZzcGFj ZSA9IG91ciBXaW5kb3cgd2UgYWR2ZXJ0aXNlIHRvIHRoZSByZW1vdGUgKi8KLQl0Y3BfcmN2c3Bh Y2UgPSBUQ1BfUkNWU1BBQ0U7Ci0JdGNwX3NuZHNwYWNlID0gVENQX1NORFNQQUNFOwotCi0JLyog TWFrZSBzdXJlIHRjcF9zbmRzcGFjZSBpcyBhdCBsZWFzdCAyKk1TUyAqLwotCWlmICh0Y3Bfc25k c3BhY2UgPCAyKihtaW4oaWZfbXR1LCBpZl9tcnUpIC0gc2l6ZW9mKHN0cnVjdCB0Y3BpcGhkcikp KQotCQl0Y3Bfc25kc3BhY2UgPSAyKihtaW4oaWZfbXR1LCBpZl9tcnUpIC0gc2l6ZW9mKHN0cnVj dCB0Y3BpcGhkcikpOwogfQogCiAvKgpAQCAtMTQ1LDcgKzEzNCw3IEBACiAjZWxzZQogCQl0bGVu ID0gMDsKICNlbmRpZgotCQltLT5tX2RhdGEgKz0gaWZfbWF4bGlua2hkcjsKKwkJbS0+bV9kYXRh ICs9IElGX01BWExJTktIRFI7CiAJCSptdG9kKG0sIHN0cnVjdCB0Y3BpcGhkciAqKSA9ICp0aTsK IAkJdGkgPSBtdG9kKG0sIHN0cnVjdCB0Y3BpcGhkciAqKTsKIAkJZmxhZ3MgPSBUSF9BQ0s7CkBA IC0xODYsNyArMTc1LDcgQEAKIAlpZihmbGFncyAmIFRIX1JTVCkKIAkgICgoc3RydWN0IGlwICop dGkpLT5pcF90dGwgPSBNQVhUVEw7CiAJZWxzZQotCSAgKChzdHJ1Y3QgaXAgKil0aSktPmlwX3R0 bCA9IGlwX2RlZnR0bDsKKwkgICgoc3RydWN0IGlwICopdGkpLT5pcF90dGwgPSBJUERFRlRUTDsK IAogCSh2b2lkKSBpcF9vdXRwdXQoKHN0cnVjdCBzb2NrZXQgKikwLCBtKTsKIH0KQEAgLTIwOCw5 ICsxOTcsOSBAQAogCiAJbWVtc2V0KChjaGFyICopIHRwLCAwLCBzaXplb2Yoc3RydWN0IHRjcGNi KSk7CiAJdHAtPnNlZ19uZXh0ID0gdHAtPnNlZ19wcmV2ID0gKHRjcGlwaGRycF8zMil0cDsKLQl0 cC0+dF9tYXhzZWcgPSB0Y3BfbXNzZGZsdDsKKwl0cC0+dF9tYXhzZWcgPSBUQ1BfTVNTOwogCi0J dHAtPnRfZmxhZ3MgPSB0Y3BfZG9fcmZjMTMyMyA/IChURl9SRVFfU0NBTEV8VEZfUkVRX1RTVE1Q KSA6IDA7CisJdHAtPnRfZmxhZ3MgPSBUQ1BfRE9fUkZDMTMyMyA/IChURl9SRVFfU0NBTEV8VEZf UkVRX1RTVE1QKSA6IDA7CiAJdHAtPnRfc29ja2V0ID0gc287CiAKIAkvKgpAQCAtMjE5LDcgKzIw OCw3IEBACiAJICogcmVhc29uYWJsZSBpbml0aWFsIHJldHJhbnNtaXQgdGltZS4KIAkgKi8KIAl0 cC0+dF9zcnR0ID0gVENQVFZfU1JUVEJBU0U7Ci0JdHAtPnRfcnR0dmFyID0gdGNwX3J0dGRmbHQg KiBQUl9TTE9XSFogPDwgMjsKKwl0cC0+dF9ydHR2YXIgPSBUQ1BUVl9TUlRUREZMVCA8PCAyOwog CXRwLT50X3J0dG1pbiA9IFRDUFRWX01JTjsKIAogCVRDUFRfUkFOR0VTRVQodHAtPnRfcnh0Y3Vy LApAQCAtMzA5LDYgKzI5OCw3IEBACiAJcmV0dXJuICgoc3RydWN0IHRjcGNiICopMCk7CiB9CiAK KyNpZmRlZiBub3RkZWYKIHZvaWQKIHRjcF9kcmFpbigpCiB7CkBAIC0zMTksOSArMzA5LDYgQEAK ICAqIFdoZW4gYSBzb3VyY2UgcXVlbmNoIGlzIHJlY2VpdmVkLCBjbG9zZSBjb25nZXN0aW9uIHdp bmRvdwogICogdG8gb25lIHNlZ21lbnQuICBXZSB3aWxsIGdyYWR1YWxseSBvcGVuIGl0IGFnYWlu IGFzIHdlIHByb2NlZWQuCiAgKi8KLQotI2lmZGVmIG5vdGRlZgotCiB2b2lkCiB0Y3BfcXVlbmNo KGksIGVycm5vKQogCkBAIC01NTYsNyArNTQzLDcgQEAKIC8qCiAgKiBTZXQgdGhlIHNvY2tldCdz IHR5cGUgb2Ygc2VydmljZSBmaWVsZAogICovCi1zdHJ1Y3QgdG9zX3QgdGNwdG9zW10gPSB7Citz dGF0aWMgY29uc3Qgc3RydWN0IHRvc190IHRjcHRvc1tdID0gewogCSAgezAsIDIwLCBJUFRPU19U SFJPVUdIUFVULCAwfSwJLyogZnRwIGRhdGEgKi8KIAkgIHsyMSwgMjEsIElQVE9TX0xPV0RFTEFZ LCAgRU1VX0ZUUH0sCS8qIGZ0cCBjb250cm9sICovCiAJICB7MCwgMjMsIElQVE9TX0xPV0RFTEFZ LCAwfSwJLyogdGVsbmV0ICovCkBAIC01NzIsNyArNTU5LDcgQEAKIAkgIHswLCAwLCAwLCAwfQog fTsKIAotc3RydWN0IGVtdV90ICp0Y3BlbXUgPSAwOworc3RhdGljIHN0cnVjdCBlbXVfdCAqdGNw ZW11ID0gMDsKIAogLyoKICAqIFJldHVybiBUT1MgYWNjb3JkaW5nIHRvIHRoZSBhYm92ZSB0YWJs ZQpAQCAtNjY1LDcgKzY1Miw3IEBACiAJCQlzb19yY3YtPnNiX3JwdHIgKz0gbS0+bV9sZW47CiAJ CQltLT5tX2RhdGFbbS0+bV9sZW5dID0gMDsgLyogTlVMTCB0ZXJtaW5hdGUgKi8KIAkJCWlmIChz dHJjaHIobS0+bV9kYXRhLCAnXHInKSB8fCBzdHJjaHIobS0+bV9kYXRhLCAnXG4nKSkgewotCQkJ CWlmIChzc2NhbmYoc29fcmN2LT5zYl9kYXRhLCAiJWQlKlsgLF0lZCIsICZuMSwgJm4yKSA9PSAy KSB7CisJCQkJaWYgKHNzY2FuZihzb19yY3YtPnNiX2RhdGEsICIldSUqWyAsXSV1IiwgJm4xLCAm bjIpID09IDIpIHsKIAkJCQkJSFRPTlMobjEpOwogCQkJCQlIVE9OUyhuMik7CiAJCQkJCS8qIG4y IGlzIHRoZSBvbmUgb24gb3VyIGhvc3QgKi8KQEAgLTk5MSw3ICs5NzgsNyBAQAogCQkJLyoKIAkJ CSAqIE5lZWQgdG8gZW11bGF0ZSB0aGUgUE9SVCBjb21tYW5kCiAJCQkgKi8KLQkJCXggPSBzc2Nh bmYoYnB0ciwgIk9SVCAlZCwlZCwlZCwlZCwlZCwlZFxyXG4lMjU2W15cMTc3XSIsCisJCQl4ID0g c3NjYW5mKGJwdHIsICJPUlQgJXUsJXUsJXUsJXUsJXUsJXVcclxuJTI1NlteXDE3N10iLAogCQkJ CSAgICZuMSwgJm4yLCAmbjMsICZuNCwgJm41LCAmbjYsIGJ1ZmYpOwogCQkJaWYgKHggPCA2KQog CQkJICAgcmV0dXJuIDE7CkBAIC0xMDIyLDcgKzEwMDksNyBAQAogCQkJLyoKIAkJCSAqIE5lZWQg dG8gZW11bGF0ZSB0aGUgUEFTViByZXNwb25zZQogCQkJICovCi0JCQl4ID0gc3NjYW5mKGJwdHIs ICIyNyBFbnRlcmluZyBQYXNzaXZlIE1vZGUgKCVkLCVkLCVkLCVkLCVkLCVkKVxyXG4lMjU2W15c MTc3XSIsCisJCQl4ID0gc3NjYW5mKGJwdHIsICIyNyBFbnRlcmluZyBQYXNzaXZlIE1vZGUgKCV1 LCV1LCV1LCV1LCV1LCV1KVxyXG4lMjU2W15cMTc3XSIsCiAJCQkJICAgJm4xLCAmbjIsICZuMywg Jm40LCAmbjUsICZuNiwgYnVmZik7CiAJCQlpZiAoeCA8IDYpCiAJCQkgICByZXR1cm4gMTsKSW5k ZXg6IHFlbXUvc2xpcnAvdGNwX3RpbWVyLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL3NsaXJw L3RjcF90aW1lci5jCTIwMDctMTAtMjQgMTk6Mzg6MjAuMDAwMDAwMDAwICswMDAwCisrKyBxZW11 L3NsaXJwL3RjcF90aW1lci5jCTIwMDctMTAtMjQgMTk6NDI6NDAuMDAwMDAwMDAwICswMDAwCkBA IC0zNiwxNyArMzYsMTQgQEAKIAogI2luY2x1ZGUgPHNsaXJwLmg+CiAKLWludAl0Y3Bfa2VlcGlk bGUgPSBUQ1BUVl9LRUVQX0lETEU7Ci1pbnQJdGNwX2tlZXBpbnR2bCA9IFRDUFRWX0tFRVBJTlRW TDsKLWludAl0Y3BfbWF4aWRsZTsKLWludAlzb19vcHRpb25zID0gRE9fS0VFUEFMSVZFOwotCiAj aWZkZWYgTE9HX0VOQUJMRUQKIHN0cnVjdCAgIHRjcHN0YXQgdGNwc3RhdDsgICAgICAgIC8qIHRj cCBzdGF0aXN0aWNzICovCiAjZW5kaWYKIAogdV9pbnQzMl90ICAgICAgICB0Y3Bfbm93OyAgICAg ICAgICAgICAgICAvKiBmb3IgUkZDIDEzMjMgdGltZXN0YW1wcyAqLwogCitzdGF0aWMgc3RydWN0 IHRjcGNiICp0Y3BfdGltZXJzKHJlZ2lzdGVyIHN0cnVjdCB0Y3BjYiAqdHAsIGludCB0aW1lcik7 CisKIC8qCiAgKiBGYXN0IHRpbWVvdXQgcm91dGluZSBmb3IgcHJvY2Vzc2luZyBkZWxheWVkIGFj a3MKICAqLwpAQCAtODQsNyArODEsNiBAQAogCiAJREVCVUdfQ0FMTCgidGNwX3Nsb3d0aW1vIik7 CiAKLQl0Y3BfbWF4aWRsZSA9IFRDUFRWX0tFRVBDTlQgKiB0Y3Bfa2VlcGludHZsOwogCS8qCiAJ ICogU2VhcmNoIHRocm91Z2ggdGNiJ3MgYW5kIHVwZGF0ZSBhY3RpdmUgdGltZXJzLgogCSAqLwpA QCAtMTMwLDE2ICsxMjYsMTQgQEAKIAkJdHAtPnRfdGltZXJbaV0gPSAwOwogfQogCi1pbnQJdGNw X2JhY2tvZmZbVENQX01BWFJYVFNISUZUICsgMV0gPQorY29uc3QgaW50IHRjcF9iYWNrb2ZmW1RD UF9NQVhSWFRTSElGVCArIDFdID0KICAgIHsgMSwgMiwgNCwgOCwgMTYsIDMyLCA2NCwgNjQsIDY0 LCA2NCwgNjQsIDY0LCA2NCB9OwogCiAvKgogICogVENQIHRpbWVyIHByb2Nlc3NpbmcuCiAgKi8K LXN0cnVjdCB0Y3BjYiAqCi10Y3BfdGltZXJzKHRwLCB0aW1lcikKLQlyZWdpc3RlciBzdHJ1Y3Qg dGNwY2IgKnRwOwotCWludCB0aW1lcjsKK3N0YXRpYyBzdHJ1Y3QgdGNwY2IgKgordGNwX3RpbWVy cyhyZWdpc3RlciBzdHJ1Y3QgdGNwY2IgKnRwLCBpbnQgdGltZXIpCiB7CiAJcmVnaXN0ZXIgaW50 IHJleG10OwogCkBAIC0xNTUsOCArMTQ5LDggQEAKIAkgKi8KIAljYXNlIFRDUFRfMk1TTDoKIAkJ aWYgKHRwLT50X3N0YXRlICE9IFRDUFNfVElNRV9XQUlUICYmCi0JCSAgICB0cC0+dF9pZGxlIDw9 IHRjcF9tYXhpZGxlKQotCQkJdHAtPnRfdGltZXJbVENQVF8yTVNMXSA9IHRjcF9rZWVwaW50dmw7 CisJCSAgICB0cC0+dF9pZGxlIDw9IFRDUF9NQVhJRExFKQorCQkJdHAtPnRfdGltZXJbVENQVF8y TVNMXSA9IFRDUFRWX0tFRVBJTlRWTDsKIAkJZWxzZQogCQkJdHAgPSB0Y3BfY2xvc2UodHApOwog CQlicmVhazsKQEAgLTI4Nyw4ICsyODEsOCBAQAogCQkJZ290byBkcm9waXQ7CiAKIC8qCQlpZiAo dHAtPnRfc29ja2V0LT5zb19vcHRpb25zICYgU09fS0VFUEFMSVZFICYmICovCi0JCWlmICgoc29f b3B0aW9ucykgJiYgdHAtPnRfc3RhdGUgPD0gVENQU19DTE9TRV9XQUlUKSB7Ci0JCSAgICAJaWYg KHRwLT50X2lkbGUgPj0gdGNwX2tlZXBpZGxlICsgdGNwX21heGlkbGUpCisJCWlmICgoU09fT1BU SU9OUykgJiYgdHAtPnRfc3RhdGUgPD0gVENQU19DTE9TRV9XQUlUKSB7CisJCSAgICAJaWYgKHRw LT50X2lkbGUgPj0gVENQVFZfS0VFUF9JRExFICsgVENQX01BWElETEUpCiAJCQkJZ290byBkcm9w aXQ7CiAJCQkvKgogCQkJICogU2VuZCBhIHBhY2tldCBkZXNpZ25lZCB0byBmb3JjZSBhIHJlc3Bv bnNlCkBAIC0zMTQsOSArMzA4LDkgQEAKIAkJCXRjcF9yZXNwb25kKHRwLCAmdHAtPnRfdGVtcGxh dGUsIChzdHJ1Y3QgbWJ1ZiAqKU5VTEwsCiAJCQkgICAgdHAtPnJjdl9ueHQsIHRwLT5zbmRfdW5h IC0gMSwgMCk7CiAjZW5kaWYKLQkJCXRwLT50X3RpbWVyW1RDUFRfS0VFUF0gPSB0Y3Bfa2VlcGlu dHZsOworCQkJdHAtPnRfdGltZXJbVENQVF9LRUVQXSA9IFRDUFRWX0tFRVBJTlRWTDsKIAkJfSBl bHNlCi0JCQl0cC0+dF90aW1lcltUQ1BUX0tFRVBdID0gdGNwX2tlZXBpZGxlOworCQkJdHAtPnRf dGltZXJbVENQVF9LRUVQXSA9IFRDUFRWX0tFRVBfSURMRTsKIAkJYnJlYWs7CiAKIAlkcm9waXQ6 CkluZGV4OiBxZW11L3NsaXJwL3RjcF90aW1lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9z bGlycC90Y3BfdGltZXIuaAkyMDA3LTEwLTI0IDE5OjM4OjIwLjAwMDAwMDAwMCArMDAwMAorKysg cWVtdS9zbGlycC90Y3BfdGltZXIuaAkyMDA3LTEwLTI0IDE5OjQyOjQwLjAwMDAwMDAwMCArMDAw MApAQCAtMTI2LDE3ICsxMjYsMTIgQEAKIAkJKHR2KSA9ICh0dm1heCk7IFwKIH0KIAotZXh0ZXJu IGludCB0Y3Bfa2VlcGlkbGU7CQkvKiB0aW1lIGJlZm9yZSBrZWVwYWxpdmUgcHJvYmVzIGJlZ2lu ICovCi1leHRlcm4gaW50IHRjcF9rZWVwaW50dmw7CQkvKiB0aW1lIGJldHdlZW4ga2VlcGFsaXZl IHByb2JlcyAqLwotZXh0ZXJuIGludCB0Y3BfbWF4aWRsZTsJCQkvKiB0aW1lIHRvIGRyb3AgYWZ0 ZXIgc3RhcnRpbmcgcHJvYmVzICovCi1leHRlcm4gaW50IHRjcF90dGw7CQkJLyogdGltZSB0byBs aXZlIGZvciBUQ1Agc2VncyAqLwotZXh0ZXJuIGludCB0Y3BfYmFja29mZltdOworZXh0ZXJuIGNv bnN0IGludCB0Y3BfYmFja29mZltdOwogCiBzdHJ1Y3QgdGNwY2I7CiAKIHZvaWQgdGNwX2Zhc3R0 aW1vIF9QKCh2b2lkKSk7CiB2b2lkIHRjcF9zbG93dGltbyBfUCgodm9pZCkpOwogdm9pZCB0Y3Bf Y2FuY2VsdGltZXJzIF9QKChzdHJ1Y3QgdGNwY2IgKikpOwotc3RydWN0IHRjcGNiICogdGNwX3Rp bWVycyBfUCgocmVnaXN0ZXIgc3RydWN0IHRjcGNiICosIGludCkpOwogCiAjZW5kaWYKSW5kZXg6 IHFlbXUvc2xpcnAvdGZ0cC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9zbGlycC90ZnRwLmMJ MjAwNy0xMC0yNCAxOTozODoyMC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvc2xpcnAvdGZ0cC5j CTIwMDctMTAtMjQgMTk6NDI6NDAuMDAwMDAwMDAwICswMDAwCkBAIC0zNCw3ICszNCw3IEBACiAg ICAgaW50IHRpbWVzdGFtcDsKIH07CiAKLXN0cnVjdCB0ZnRwX3Nlc3Npb24gdGZ0cF9zZXNzaW9u c1tURlRQX1NFU1NJT05TX01BWF07CitzdGF0aWMgc3RydWN0IHRmdHBfc2Vzc2lvbiB0ZnRwX3Nl c3Npb25zW1RGVFBfU0VTU0lPTlNfTUFYXTsKIAogY29uc3QgY2hhciAqdGZ0cF9wcmVmaXg7CiAK QEAgLTE0Myw3ICsxNDMsNyBAQAogCiAgICAgbWVtc2V0KG0tPm1fZGF0YSwgMCwgbS0+bV9zaXpl KTsKIAotICAgIG0tPm1fZGF0YSArPSBpZl9tYXhsaW5raGRyOworICAgIG0tPm1fZGF0YSArPSBJ Rl9NQVhMSU5LSERSOwogICAgIHRwID0gKHZvaWQgKiltLT5tX2RhdGE7CiAgICAgbS0+bV9kYXRh ICs9IHNpemVvZihzdHJ1Y3QgdWRwaXBoZHIpOwogCkBAIC0xODMsNyArMTgzLDcgQEAKIAogICBt ZW1zZXQobS0+bV9kYXRhLCAwLCBtLT5tX3NpemUpOwogCi0gIG0tPm1fZGF0YSArPSBpZl9tYXhs aW5raGRyOworICBtLT5tX2RhdGEgKz0gSUZfTUFYTElOS0hEUjsKICAgdHAgPSAodm9pZCAqKW0t Pm1fZGF0YTsKICAgbS0+bV9kYXRhICs9IHNpemVvZihzdHJ1Y3QgdWRwaXBoZHIpOwogCkBAIC0y MzAsNyArMjMwLDcgQEAKIAogICBtZW1zZXQobS0+bV9kYXRhLCAwLCBtLT5tX3NpemUpOwogCi0g IG0tPm1fZGF0YSArPSBpZl9tYXhsaW5raGRyOworICBtLT5tX2RhdGEgKz0gSUZfTUFYTElOS0hE UjsKICAgdHAgPSAodm9pZCAqKW0tPm1fZGF0YTsKICAgbS0+bV9kYXRhICs9IHNpemVvZihzdHJ1 Y3QgdWRwaXBoZHIpOwogCkluZGV4OiBxZW11L3NsaXJwL3VkcC5oCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFl bXUub3JpZy9zbGlycC91ZHAuaAkyMDA3LTEwLTI0IDE5OjM4OjIwLjAwMDAwMDAwMCArMDAwMAor KysgcWVtdS9zbGlycC91ZHAuaAkyMDA3LTEwLTI0IDE5OjQyOjQwLjAwMDAwMDAwMCArMDAwMApA QCAtMTA2LDggKzEwNiw2IEBACiBpbnQgdWRwX291dHB1dCBfUCgoc3RydWN0IHNvY2tldCAqLCBz dHJ1Y3QgbWJ1ZiAqLCBzdHJ1Y3Qgc29ja2FkZHJfaW4gKikpOwogaW50IHVkcF9hdHRhY2ggX1Ao KHN0cnVjdCBzb2NrZXQgKikpOwogdm9pZCB1ZHBfZGV0YWNoIF9QKChzdHJ1Y3Qgc29ja2V0ICop KTsKLXVfaW50OF90IHVkcF90b3MgX1AoKHN0cnVjdCBzb2NrZXQgKikpOwotdm9pZCB1ZHBfZW11 IF9QKChzdHJ1Y3Qgc29ja2V0ICosIHN0cnVjdCBtYnVmICopKTsKIHN0cnVjdCBzb2NrZXQgKiB1 ZHBfbGlzdGVuIF9QKCh1X2ludCwgdV9pbnQzMl90LCB1X2ludCwgaW50KSk7CiBpbnQgdWRwX291 dHB1dDIoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICptLAogICAgICAgICAgICAgICAg IHN0cnVjdCBzb2NrYWRkcl9pbiAqc2FkZHIsIHN0cnVjdCBzb2NrYWRkcl9pbiAqZGFkZHIsCklu ZGV4OiBxZW11L3NsaXJwL3VkcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9zbGlycC91ZHAu YwkyMDA3LTEwLTI0IDE5OjQyOjU4LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9zbGlycC91ZHAu YwkyMDA3LTEwLTI0IDE5OjQ5OjQ0LjAwMDAwMDAwMCArMDAwMApAQCAtNTEsMTQgKzUxLDE3IEBA CiAKIHN0cnVjdCBzb2NrZXQgdWRiOwogCitzdGF0aWMgdV9pbnQ4X3QgdWRwX3RvcyhzdHJ1Y3Qg c29ja2V0ICpzbyk7CitzdGF0aWMgdm9pZCB1ZHBfZW11KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1 Y3QgbWJ1ZiAqbSk7CisKIC8qCiAgKiBVRFAgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24uCiAgKiBQ ZXIgUkZDIDc2OCwgQXVndXN0LCAxOTgwLgogICovCiAjaWZuZGVmCUNPTVBBVF80MgotaW50CXVk cGNrc3VtID0gMTsKKyNkZWZpbmUgVURQQ0tTVU0gMQogI2Vsc2UKLWludAl1ZHBja3N1bSA9IDA7 CQkvKiBYWFggKi8KKyNkZWZpbmUgVURQQ0tTVU0gMCAvKiBYWFggKi8KICNlbmRpZgogCiBzdHJ1 Y3QJc29ja2V0ICp1ZHBfbGFzdF9zbyA9ICZ1ZGI7CkBAIC0xMzIsNyArMTM1LDcgQEAKIAkvKgog CSAqIENoZWNrc3VtIGV4dGVuZGVkIFVEUCBoZWFkZXIgYW5kIGRhdGEuCiAJICovCi0JaWYgKHVk cGNrc3VtICYmIHVoLT51aF9zdW0pIHsKKwlpZiAoVURQQ0tTVU0gJiYgdWgtPnVoX3N1bSkgewog CSAgKChzdHJ1Y3QgaXBvdmx5ICopaXApLT5paF9uZXh0ID0gMDsKIAkgICgoc3RydWN0IGlwb3Zs eSAqKWlwKS0+aWhfcHJldiA9IDA7CiAJICAoKHN0cnVjdCBpcG92bHkgKilpcCktPmloX3gxID0g MDsKQEAgLTI5MiwxMyArMjk1LDEzIEBACiAJICogU3R1ZmYgY2hlY2tzdW0gYW5kIG91dHB1dCBk YXRhZ3JhbS4KIAkgKi8KIAl1aS0+dWlfc3VtID0gMDsKLQlpZiAodWRwY2tzdW0pIHsKKwlpZiAo VURQQ0tTVU0pIHsKIAkgICAgaWYgKCh1aS0+dWlfc3VtID0gY2tzdW0obSwgLyogc2l6ZW9mIChz dHJ1Y3QgdWRwaXBoZHIpICsgKi8gbS0+bV9sZW4pKSA9PSAwKQogCQl1aS0+dWlfc3VtID0gMHhm ZmZmOwogCX0KIAkoKHN0cnVjdCBpcCAqKXVpKS0+aXBfbGVuID0gbS0+bV9sZW47CiAKLQkoKHN0 cnVjdCBpcCAqKXVpKS0+aXBfdHRsID0gaXBfZGVmdHRsOworCSgoc3RydWN0IGlwICopdWkpLT5p cF90dGwgPSBJUERFRlRUTDsKIAkoKHN0cnVjdCBpcCAqKXVpKS0+aXBfdG9zID0gaXB0b3M7CiAK IAlTVEFUKHVkcHN0YXQudWRwc19vcGFja2V0cysrKTsKQEAgLTM2OSw3ICszNzIsNyBAQAogCXNv ZnJlZShzbyk7CiB9CiAKLXN0cnVjdCB0b3NfdCB1ZHB0b3NbXSA9IHsKK3N0YXRpYyBjb25zdCBz dHJ1Y3QgdG9zX3QgdWRwdG9zW10gPSB7CiAJezAsIDUzLCBJUFRPU19MT1dERUxBWSwgMH0sCQkJ LyogRE5TICovCiAJezUxNywgNTE3LCBJUFRPU19MT1dERUxBWSwgRU1VX1RBTEt9LAkvKiB0YWxr ICovCiAJezUxOCwgNTE4LCBJUFRPU19MT1dERUxBWSwgRU1VX05UQUxLfSwJLyogbnRhbGsgKi8K QEAgLTM3Nyw5ICszODAsOCBAQAogCXswLCAwLCAwLCAwfQogfTsKIAotdV9pbnQ4X3QKLXVkcF90 b3Moc28pCi0Jc3RydWN0IHNvY2tldCAqc287CitzdGF0aWMgdV9pbnQ4X3QKK3VkcF90b3Moc3Ry dWN0IHNvY2tldCAqc28pCiB7CiAJaW50IGkgPSAwOwogCkBAIC00MDIsMTAgKzQwNCw4IEBACiAv KgogICogSGVyZSwgdGFsay95dGFsay9udGFsayByZXF1ZXN0cyBtdXN0IGJlIGVtdWxhdGVkCiAg Ki8KLXZvaWQKLXVkcF9lbXUoc28sIG0pCi0Jc3RydWN0IHNvY2tldCAqc287Ci0Jc3RydWN0IG1i dWYgKm07CitzdGF0aWMgdm9pZAordWRwX2VtdShzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1i dWYgKm0pCiB7CiAJc3RydWN0IHNvY2thZGRyX2luIGFkZHI7CiAgICAgICAgIGludCBhZGRybGVu ID0gc2l6ZW9mKGFkZHIpOwo= ------=_Part_9064_18526688.1193256291341 Content-Type: text/x-diff; name=slirp_debug.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_f869sapd Content-Disposition: attachment; filename=slirp_debug.diff SW5kZXg6IHFlbXUvc2xpcnAvZGVidWcuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvc2xpcnAv ZGVidWcuYwkyMDA3LTEwLTI0IDE4OjIzOjA5LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9zbGly cC9kZWJ1Zy5jCTIwMDctMTAtMjQgMTk6Mzg6MjAuMDAwMDAwMDAwICswMDAwCkBAIC0yMCw2ICsy MCw3IEBACiAKIC8qIENhcnJ5IG92ZXIgb25lIGl0ZW0gZnJvbSBtYWluLmMgc28gdGhhdCB0aGUg dHR5J3MgcmVzdG9yZWQuCiAgKiBPbmx5IGRvbmUgd2hlbiB0aGUgdHR5IGJlaW5nIHVzZWQgaXMg L2Rldi90dHkgLS1SZWRXb2xmICovCisjaWZuZGVmIENPTkZJR19RRU1VCiBleHRlcm4gc3RydWN0 IHRlcm1pb3Mgc2xpcnBfdHR5X3NldHRpbmdzOwogZXh0ZXJuIGludCBzbGlycF90dHlfcmVzdG9y ZTsKIApAQCAtNzAsNyArNzEsOSBAQAogCX0KIH0KICNlbmRpZgorI2VuZGlmCiAKKyNpZmRlZiBM T0dfRU5BQkxFRAogI2lmIDAKIC8qCiAgKiBTdGF0aXN0aWMgcm91dGluZXMKQEAgLTgwLDcgKzgz LDcgQEAKICAqIHRoZSBsaW5rIGFzIHdlbGwuCiAgKi8KIAotdm9pZAorc3RhdGljIHZvaWQKIHR0 eXN0YXRzKHR0eXApCiAJc3RydWN0IHR0eXMgKnR0eXA7CiB7CkBAIC0xMTksOCArMTIyLDggQEAK IAlscHJpbnQoIiAgJTZkIGJhZCBpbnB1dCBwYWNrZXRzXHJcbiIsIGlzLT5pbl9tYmFkKTsKIH0K IAotdm9pZAotYWxsdHR5c3RhdHMoKQorc3RhdGljIHZvaWQKK2FsbHR0eXN0YXRzKHZvaWQpCiB7 CiAJc3RydWN0IHR0eXMgKnR0eXA7CiAKQEAgLTEyOSw4ICsxMzIsOCBAQAogfQogI2VuZGlmCiAK LXZvaWQKLWlwc3RhdHMoKQorc3RhdGljIHZvaWQKK2lwc3RhdHModm9pZCkKIHsKIAlscHJpbnQo IiBcclxuIik7CiAKQEAgLTE1Myw5ICsxNTYsOSBAQAogCWxwcmludCgiICAlNmQgdG90YWwgcGFj a2V0cyBkZWxpdmVyZWRcclxuIiwgaXBzdGF0Lmlwc19kZWxpdmVyZWQpOwogfQogCi0jaWYgMAot dm9pZAotdmpzdGF0cygpCisjaWZuZGVmIENPTkZJR19RRU1VCitzdGF0aWMgdm9pZAordmpzdGF0 cyh2b2lkKQogewogCWxwcmludCgiIFxyXG4iKTsKIApAQCAtMTcyLDggKzE3NSw4IEBACiB9CiAj ZW5kaWYKIAotdm9pZAotdGNwc3RhdHMoKQorc3RhdGljIHZvaWQKK3RjcHN0YXRzKHZvaWQpCiB7 CiAJbHByaW50KCIgXHJcbiIpOwogCkBAIC0yNDAsOCArMjQzLDggQEAKIAogfQogCi12b2lkCi11 ZHBzdGF0cygpCitzdGF0aWMgdm9pZAordWRwc3RhdHModm9pZCkKIHsKICAgICAgICAgbHByaW50 KCIgXHJcbiIpOwogCkBAIC0yNTQsOCArMjU3LDggQEAKIAlscHJpbnQoIiAgJTZkIGRhdGFncmFt cyBzZW50XHJcbiIsIHVkcHN0YXQudWRwc19vcGFja2V0cyk7CiB9CiAKLXZvaWQKLWljbXBzdGF0 cygpCitzdGF0aWMgdm9pZAoraWNtcHN0YXRzKHZvaWQpCiB7CiAJbHByaW50KCIgXHJcbiIpOwog CWxwcmludCgiSUNNUCBzdGF0czpcclxuIik7CkBAIC0yNjcsOCArMjcwLDggQEAKIAlscHJpbnQo IiAgJTZkIElDTVAgcGFja2V0cyBzZW50IGluIHJlcGx5XHJcbiIsIGljbXBzdGF0LmljcHNfcmVm bGVjdCk7CiB9CiAKLXZvaWQKLW1idWZzdGF0cygpCitzdGF0aWMgdm9pZAorbWJ1ZnN0YXRzKHZv aWQpCiB7CiAJc3RydWN0IG1idWYgKm07CiAJaW50IGk7CkBAIC0yOTEsOCArMjk0LDggQEAKICAg ICAgICAgbHByaW50KCIgICU2ZCBtYnVmcyBxdWV1ZWQgYXMgcGFja2V0c1xyXG5cclxuIiwgaWZf cXVldWVkKTsKIH0KIAotdm9pZAotc29ja3N0YXRzKCkKK3N0YXRpYyB2b2lkCitzb2Nrc3RhdHMo dm9pZCkKIHsKIAljaGFyIGJ1ZmZbMjU2XTsKIAlpbnQgbjsKQEAgLTMzMSw4ICszMzQsOSBAQAog CQkJCXNvLT5zb19yY3Yuc2JfY2MsIHNvLT5zb19zbmQuc2JfY2MpOwogCX0KIH0KKyNlbmRpZgog Ci0jaWYgMAorI2lmbmRlZiBDT05GSUdfUUVNVQogdm9pZAogc2xpcnBfZXhpdChleGl0X3N0YXR1 cykKIAlpbnQgZXhpdF9zdGF0dXM7CkBAIC0zNzQsMyArMzc4LDE4IEBACiAJZXhpdChleGl0X3N0 YXR1cyk7CiB9CiAjZW5kaWYKKwordm9pZAorc2xpcnBfc3RhdHModm9pZCkKK3sKKyNpZmRlZiBM T0dfRU5BQkxFRAorICAgIGlwc3RhdHMoKTsKKyAgICB0Y3BzdGF0cygpOworICAgIHVkcHN0YXRz KCk7CisgICAgaWNtcHN0YXRzKCk7CisgICAgbWJ1ZnN0YXRzKCk7CisgICAgc29ja3N0YXRzKCk7 CisjZWxzZQorICAgIGxwcmludCgiU0xJUlAgc3RhdGlzdGljcyBub3QgY29tcGlsZWRcbiIpOwor I2VuZGlmCit9CkluZGV4OiBxZW11L3NsaXJwL2RlYnVnLmgKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5v cmlnL3NsaXJwL2RlYnVnLmgJMjAwNy0xMC0yNCAxODoyMzowOS4wMDAwMDAwMDAgKzAwMDAKKysr IHFlbXUvc2xpcnAvZGVidWcuaAkyMDA3LTEwLTI0IDE4OjQ1OjQyLjAwMDAwMDAwMCArMDAwMApA QCAtMzcsMTQgKzM3LDQgQEAKICNlbmRpZgogCiB2b2lkIGRlYnVnX2luaXQgX1AoKGNoYXIgKiwg aW50KSk7Ci0vL3ZvaWQgdHR5c3RhdHMgX1AoKHN0cnVjdCB0dHlzICopKTsKLXZvaWQgYWxsdHR5 c3RhdHMgX1AoKHZvaWQpKTsKLXZvaWQgaXBzdGF0cyBfUCgodm9pZCkpOwotdm9pZCB2anN0YXRz IF9QKCh2b2lkKSk7Ci12b2lkIHRjcHN0YXRzIF9QKCh2b2lkKSk7Ci12b2lkIHVkcHN0YXRzIF9Q KCh2b2lkKSk7Ci12b2lkIGljbXBzdGF0cyBfUCgodm9pZCkpOwotdm9pZCBtYnVmc3RhdHMgX1Ao KHZvaWQpKTsKLXZvaWQgc29ja3N0YXRzIF9QKCh2b2lkKSk7Ci12b2lkIHNsaXJwX2V4aXQgX1Ao KGludCkpOwogCkluZGV4OiBxZW11L3NsaXJwL2ljbXBfdmFyLmgKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVt dS5vcmlnL3NsaXJwL2ljbXBfdmFyLmgJMjAwNy0xMC0yNCAxODoyMzowOS4wMDAwMDAwMDAgKzAw MDAKKysrIHFlbXUvc2xpcnAvaWNtcF92YXIuaAkyMDA3LTEwLTI0IDE4OjQ1OjQyLjAwMDAwMDAw MCArMDAwMApAQCAtNjQsNiArNjQsOCBAQAogCXsgInN0YXRzIiwgQ1RMVFlQRV9TVFJVQ1QgfSwg XAogfQogCisjaWZkZWYgTE9HX0VOQUJMRUQKIGV4dGVybiBzdHJ1Y3QgaWNtcHN0YXQgaWNtcHN0 YXQ7CisjZW5kaWYKIAogI2VuZGlmCkluZGV4OiBxZW11L3NsaXJwL2lwLmgKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gcWVtdS5vcmlnL3NsaXJwL2lwLmgJMjAwNy0xMC0yNCAxODoyMzowOS4wMDAwMDAwMDAgKzAw MDAKKysrIHFlbXUvc2xpcnAvaXAuaAkyMDA3LTEwLTI0IDE4OjUxOjA2LjAwMDAwMDAwMCArMDAw MApAQCAtMjcyLDYgKzI3Miw3IEBACiAJaW50OF90CWlwb3B0X2xpc3RbTUFYX0lQT1BUTEVOXTsJ Lyogb3B0aW9ucyBwcm9wZXIgKi8KIH07CiAKKyNpZmRlZiBMT0dfRU5BQkxFRAogLyoKICAqIFN0 cnVjdHVyZSBhdHRhY2hlZCB0byBpbnBjYi5pcF9tb3B0aW9ucyBhbmQKICAqIHBhc3NlZCB0byBp cF9vdXRwdXQgd2hlbiBJUCBtdWx0aWNhc3Qgb3B0aW9ucyBhcmUgaW4gdXNlLgpAQCAtMzA2LDgg KzMwNyw5IEBACiB9OwogCiBleHRlcm4gc3RydWN0CWlwc3RhdAlpcHN0YXQ7CisjZW5kaWYKKwog ZXh0ZXJuIHN0cnVjdAlpcHEJaXBxOwkJCS8qIGlwIHJlYXNzLiBxdWV1ZSAqLwogZXh0ZXJuIHVf aW50MTZfdAlpcF9pZDsJCQkJLyogaXAgcGFja2V0IGN0ciwgZm9yIGlkcyAqLwotZXh0ZXJuIGlu dAlpcF9kZWZ0dGw7CQkJLyogZGVmYXVsdCBJUCB0dGwgKi8KIAogI2VuZGlmCkluZGV4OiBxZW11 L3NsaXJwL2lwX2ljbXAuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvc2xpcnAvaXBfaWNtcC5j CTIwMDctMTAtMjQgMTg6MjM6MDkuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L3NsaXJwL2lwX2lj bXAuYwkyMDA3LTEwLTI0IDE5OjM4OjIwLjAwMDAwMDAwMCArMDAwMApAQCAtMzcsNyArMzcsOSBA QAogI2luY2x1ZGUgInNsaXJwLmgiCiAjaW5jbHVkZSAiaXBfaWNtcC5oIgogCisjaWZkZWYgTE9H X0VOQUJMRUQKIHN0cnVjdCBpY21wc3RhdCBpY21wc3RhdDsKKyNlbmRpZgogCiAvKiBUaGUgbWVz c2FnZSBzZW50IHdoZW4gZW11bGF0aW5nIFBJTkcgKi8KIC8qIEJlIG5pY2UgYW5kIHRlbGwgdGhl bSBpdCdzIGp1c3QgYSBwc3VlZG8tcGluZyBwYWNrZXQgKi8KQEAgLTgzLDE0ICs4NSwxNCBAQAog ICBERUJVR19BUkcoIm0gPSAlbHgiLCAobG9uZyApbSk7CiAgIERFQlVHX0FSRygibV9sZW4gPSAl ZCIsIG0tPm1fbGVuKTsKIAotICBpY21wc3RhdC5pY3BzX3JlY2VpdmVkKys7CisgIFNUQVQoaWNt cHN0YXQuaWNwc19yZWNlaXZlZCsrKTsKIAogICAvKgogICAgKiBMb2NhdGUgaWNtcCBzdHJ1Y3R1 cmUgaW4gbWJ1ZiwgYW5kIGNoZWNrCiAgICAqIHRoYXQgaXRzIG5vdCBjb3JydXB0ZWQgYW5kIG9m IGF0IGxlYXN0IG1pbmltdW0gbGVuZ3RoLgogICAgKi8KICAgaWYgKGljbXBsZW4gPCBJQ01QX01J TkxFTikgeyAgICAgICAgICAvKiBtaW4gOCBieXRlcyBwYXlsb2FkICovCi0gICAgaWNtcHN0YXQu aWNwc190b29zaG9ydCsrOworICAgIFNUQVQoaWNtcHN0YXQuaWNwc190b29zaG9ydCsrKTsKICAg ZnJlZWl0OgogICAgIG1fZnJlZW0obSk7CiAgICAgZ290byBlbmRfZXJyb3I7CkBAIC0xMDAsNyAr MTAyLDcgQEAKICAgbS0+bV9kYXRhICs9IGhsZW47CiAgIGljcCA9IG10b2QobSwgc3RydWN0IGlj bXAgKik7CiAgIGlmIChja3N1bShtLCBpY21wbGVuKSkgewotICAgIGljbXBzdGF0LmljcHNfY2hl Y2tzdW0rKzsKKyAgICBTVEFUKGljbXBzdGF0LmljcHNfY2hlY2tzdW0rKyk7CiAgICAgZ290byBm cmVlaXQ7CiAgIH0KICAgbS0+bV9sZW4gKz0gaGxlbjsKQEAgLTE3MCwxMiArMTcyLDEyIEBACiAg IGNhc2UgSUNNUF9UU1RBTVA6CiAgIGNhc2UgSUNNUF9NQVNLUkVROgogICBjYXNlIElDTVBfUkVE SVJFQ1Q6Ci0gICAgaWNtcHN0YXQuaWNwc19ub3RzdXBwKys7CisgICAgU1RBVChpY21wc3RhdC5p Y3BzX25vdHN1cHArKyk7CiAgICAgbV9mcmVlbShtKTsKICAgICBicmVhazsKIAogICBkZWZhdWx0 OgotICAgIGljbXBzdGF0LmljcHNfYmFkdHlwZSsrOworICAgIFNUQVQoaWNtcHN0YXQuaWNwc19i YWR0eXBlKyspOwogICAgIG1fZnJlZW0obSk7CiAgIH0gLyogc3dpdGggKi8KIApAQCAtMzE0LDcg KzMxNiw3IEBACiAKICAgKHZvaWQgKSBpcF9vdXRwdXQoKHN0cnVjdCBzb2NrZXQgKilOVUxMLCBt KTsKIAotICBpY21wc3RhdC5pY3BzX3JlZmxlY3QrKzsKKyAgU1RBVChpY21wc3RhdC5pY3BzX3Jl ZmxlY3QrKyk7CiAKIGVuZF9lcnJvcjoKICAgcmV0dXJuOwpAQCAtMzcxLDUgKzM3Myw1IEBACiAK ICAgKHZvaWQgKSBpcF9vdXRwdXQoKHN0cnVjdCBzb2NrZXQgKilOVUxMLCBtKTsKIAotICBpY21w c3RhdC5pY3BzX3JlZmxlY3QrKzsKKyAgU1RBVChpY21wc3RhdC5pY3BzX3JlZmxlY3QrKyk7CiB9 CkluZGV4OiBxZW11L3NsaXJwL2lwX2lucHV0LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL3Ns aXJwL2lwX2lucHV0LmMJMjAwNy0xMC0yNCAxODoyMzowOS4wMDAwMDAwMDAgKzAwMDAKKysrIHFl bXUvc2xpcnAvaXBfaW5wdXQuYwkyMDA3LTEwLTI0IDE5OjM4OjIwLjAwMDAwMDAwMCArMDAwMApA QCAtNDYsNyArNDYsMTEgQEAKICNpbmNsdWRlICJpcF9pY21wLmgiCiAKIGludCBpcF9kZWZ0dGw7 CisKKyNpZmRlZiBMT0dfRU5BQkxFRAogc3RydWN0IGlwc3RhdCBpcHN0YXQ7CisjZW5kaWYKKwog c3RydWN0IGlwcSBpcHE7CiAKIC8qCkBAIC03OCwyMyArODIsMjMgQEAKIAlERUJVR19BUkcoIm0g PSAlbHgiLCAobG9uZyltKTsKIAlERUJVR19BUkcoIm1fbGVuID0gJWQiLCBtLT5tX2xlbik7CiAK LQlpcHN0YXQuaXBzX3RvdGFsKys7CisJU1RBVChpcHN0YXQuaXBzX3RvdGFsKyspOwogCiAJaWYg KG0tPm1fbGVuIDwgc2l6ZW9mIChzdHJ1Y3QgaXApKSB7Ci0JCWlwc3RhdC5pcHNfdG9vc21hbGwr KzsKKwkJU1RBVChpcHN0YXQuaXBzX3Rvb3NtYWxsKyspOwogCQlyZXR1cm47CiAJfQogCiAJaXAg PSBtdG9kKG0sIHN0cnVjdCBpcCAqKTsKIAogCWlmIChpcC0+aXBfdiAhPSBJUFZFUlNJT04pIHsK LQkJaXBzdGF0Lmlwc19iYWR2ZXJzKys7CisJCVNUQVQoaXBzdGF0Lmlwc19iYWR2ZXJzKyspOwog CQlnb3RvIGJhZDsKIAl9CiAKIAlobGVuID0gaXAtPmlwX2hsIDw8IDI7CiAJaWYgKGhsZW48c2l6 ZW9mKHN0cnVjdCBpcCApIHx8IGhsZW4+bS0+bV9sZW4pIHsvKiBtaW4gaGVhZGVyIGxlbmd0aCAq LwotCSAgaXBzdGF0Lmlwc19iYWRobGVuKys7ICAgICAgICAgICAgICAgICAgICAgLyogb3IgcGFj a2V0IHRvbyBzaG9ydCAqLworCSAgU1RBVChpcHN0YXQuaXBzX2JhZGhsZW4rKyk7ICAgICAgICAg ICAgICAgICAgICAgLyogb3IgcGFja2V0IHRvbyBzaG9ydCAqLwogCSAgZ290byBiYWQ7CiAJfQog CkBAIC0xMDMsNyArMTA3LDcgQEAKIAkgKiBpZiAoaXAtPmlwX3N1bSkgewogCSAqLwogCWlmKGNr c3VtKG0saGxlbikpIHsKLQkgIGlwc3RhdC5pcHNfYmFkc3VtKys7CisJICBTVEFUKGlwc3RhdC5p cHNfYmFkc3VtKyspOwogCSAgZ290byBiYWQ7CiAJfQogCkBAIC0xMTIsNyArMTE2LDcgQEAKIAkg Ki8KIAlOVE9IUyhpcC0+aXBfbGVuKTsKIAlpZiAoaXAtPmlwX2xlbiA8IGhsZW4pIHsKLQkJaXBz dGF0Lmlwc19iYWRsZW4rKzsKKwkJU1RBVChpcHN0YXQuaXBzX2JhZGxlbisrKTsKIAkJZ290byBi YWQ7CiAJfQogCU5UT0hTKGlwLT5pcF9pZCk7CkBAIC0xMjUsNyArMTI5LDcgQEAKIAkgKiBEcm9w IHBhY2tldCBpZiBzaG9ydGVyIHRoYW4gd2UgZXhwZWN0LgogCSAqLwogCWlmIChtLT5tX2xlbiA8 IGlwLT5pcF9sZW4pIHsKLQkJaXBzdGF0Lmlwc190b29zaG9ydCsrOworCQlTVEFUKGlwc3RhdC5p cHNfdG9vc2hvcnQrKyk7CiAJCWdvdG8gYmFkOwogCX0KIAkvKiBTaG91bGQgZHJvcCBwYWNrZXQg aWYgbWJ1ZiB0b28gbG9uZz8gaG1tbS4uLiAqLwpAQCAtMTkyLDExICsxOTYsMTEgQEAKIAkJICog YXR0ZW1wdCByZWFzc2VtYmx5OyBpZiBpdCBzdWNjZWVkcywgcHJvY2VlZC4KIAkJICovCiAJCWlm ICgoKHN0cnVjdCBpcGFzZnJhZyAqKWlwKS0+aXBmX21mZiAmIDEgfHwgaXAtPmlwX29mZikgewot CQkJaXBzdGF0Lmlwc19mcmFnbWVudHMrKzsKKwkJCVNUQVQoaXBzdGF0Lmlwc19mcmFnbWVudHMr Kyk7CiAJCQlpcCA9IGlwX3JlYXNzKChzdHJ1Y3QgaXBhc2ZyYWcgKilpcCwgZnApOwogCQkJaWYg KGlwID09IDApCiAJCQkJcmV0dXJuOwotCQkJaXBzdGF0Lmlwc19yZWFzc2VtYmxlZCsrOworCQkJ U1RBVChpcHN0YXQuaXBzX3JlYXNzZW1ibGVkKyspOwogCQkJbSA9IGR0b20oaXApOwogCQl9IGVs c2UKIAkJCWlmIChmcCkKQEAgLTIwOCw3ICsyMTIsNyBAQAogCS8qCiAJICogU3dpdGNoIG91dCB0 byBwcm90b2NvbCdzIGlucHV0IHJvdXRpbmUuCiAJICovCi0JaXBzdGF0Lmlwc19kZWxpdmVyZWQr KzsKKwlTVEFUKGlwc3RhdC5pcHNfZGVsaXZlcmVkKyspOwogCXN3aXRjaCAoaXAtPmlwX3ApIHsK IAkgY2FzZSBJUFBST1RPX1RDUDoKIAkJdGNwX2lucHV0KG0sIGhsZW4sIChzdHJ1Y3Qgc29ja2V0 ICopTlVMTCk7CkBAIC0yMjAsNyArMjI0LDcgQEAKIAkJaWNtcF9pbnB1dChtLCBobGVuKTsKIAkJ YnJlYWs7CiAJIGRlZmF1bHQ6Ci0JCWlwc3RhdC5pcHNfbm9wcm90bysrOworCQlTVEFUKGlwc3Rh dC5pcHNfbm9wcm90bysrKTsKIAkJbV9mcmVlKG0pOwogCX0KIAlyZXR1cm47CkBAIC0zODUsNyAr Mzg5LDcgQEAKIAlyZXR1cm4gKChzdHJ1Y3QgaXAgKilpcCk7CiAKIGRyb3BmcmFnOgotCWlwc3Rh dC5pcHNfZnJhZ2Ryb3BwZWQrKzsKKwlTVEFUKGlwc3RhdC5pcHNfZnJhZ2Ryb3BwZWQrKyk7CiAJ bV9mcmVlbShtKTsKIAlyZXR1cm4gKDApOwogfQpAQCAtNDU3LDcgKzQ2MSw3IEBACiAJCS0tZnAt PmlwcV90dGw7CiAJCWZwID0gKHN0cnVjdCBpcHEgKikgZnAtPm5leHQ7CiAJCWlmICgoKHN0cnVj dCBpcHEgKikoZnAtPnByZXYpKS0+aXBxX3R0bCA9PSAwKSB7Ci0JCQlpcHN0YXQuaXBzX2ZyYWd0 aW1lb3V0Kys7CisJCQlTVEFUKGlwc3RhdC5pcHNfZnJhZ3RpbWVvdXQrKyk7CiAJCQlpcF9mcmVl Zigoc3RydWN0IGlwcSAqKSBmcC0+cHJldik7CiAJCX0KIAl9CkBAIC02NjQsNyArNjY4LDcgQEAK IC8qIE5vdCB5ZXQgKi8KICAJaWNtcF9lcnJvcihtLCB0eXBlLCBjb2RlLCAwLCAwKTsKIAotCWlw c3RhdC5pcHNfYmFkb3B0aW9ucysrOworCVNUQVQoaXBzdGF0Lmlwc19iYWRvcHRpb25zKyspOwog CXJldHVybiAoMSk7CiB9CiAKSW5kZXg6IHFlbXUvc2xpcnAvaXBfb3V0cHV0LmMKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gcWVtdS5vcmlnL3NsaXJwL2lwX291dHB1dC5jCTIwMDctMTAtMjQgMTg6MjM6MDkuMDAw MDAwMDAwICswMDAwCisrKyBxZW11L3NsaXJwL2lwX291dHB1dC5jCTIwMDctMTAtMjQgMTk6Mzg6 MjAuMDAwMDAwMDAwICswMDAwCkBAIC04MCw3ICs4MCw3IEBACiAJaXAtPmlwX29mZiAmPSBJUF9E RjsKIAlpcC0+aXBfaWQgPSBodG9ucyhpcF9pZCsrKTsKIAlpcC0+aXBfaGwgPSBobGVuID4+IDI7 Ci0JaXBzdGF0Lmlwc19sb2NhbG91dCsrOworCVNUQVQoaXBzdGF0Lmlwc19sb2NhbG91dCsrKTsK IAogCS8qCiAJICogVmVyaWZ5IHRoYXQgd2UgaGF2ZSBhbnkgY2hhbmNlIGF0IGFsbCBvZiBiZWlu ZyBhYmxlIHRvIHF1ZXVlCkBAIC0xMTIsNyArMTEyLDcgQEAKIAkgKi8KIAlpZiAoaXAtPmlwX29m ZiAmIElQX0RGKSB7CiAJCWVycm9yID0gLTE7Ci0JCWlwc3RhdC5pcHNfY2FudGZyYWcrKzsKKwkJ U1RBVChpcHN0YXQuaXBzX2NhbnRmcmFnKyspOwogCQlnb3RvIGJhZDsKIAl9CiAKQEAgLTEzNyw3 ICsxMzcsNyBAQAogCSAgbSA9IG1fZ2V0KCk7CiAJICBpZiAobSA9PSAwKSB7CiAJICAgIGVycm9y ID0gLTE7Ci0JICAgIGlwc3RhdC5pcHNfb2Ryb3BwZWQrKzsKKwkgICAgU1RBVChpcHN0YXQuaXBz X29kcm9wcGVkKyspOwogCSAgICBnb3RvIHNlbmRvcmZyZWU7CiAJICB9CiAJICBtLT5tX2RhdGEg Kz0gaWZfbWF4bGlua2hkcjsKQEAgLTE3MCw3ICsxNzAsNyBAQAogCSAgbWhpcC0+aXBfc3VtID0g Y2tzdW0obSwgbWhsZW4pOwogCSAgKm1uZXh0ID0gbTsKIAkgIG1uZXh0ID0gJm0tPm1fbmV4dHBr dDsKLQkgIGlwc3RhdC5pcHNfb2ZyYWdtZW50cysrOworCSAgU1RBVChpcHN0YXQuaXBzX29mcmFn bWVudHMrKyk7CiAJfQogCS8qCiAJICogVXBkYXRlIGZpcnN0IGZyYWdtZW50IGJ5IHRyaW1taW5n IHdoYXQncyBiZWVuIGNvcGllZCBvdXQKQEAgLTE5Myw3ICsxOTMsNyBAQAogCX0KIAogCWlmIChl cnJvciA9PSAwKQotCQlpcHN0YXQuaXBzX2ZyYWdtZW50ZWQrKzsKKwkJU1RBVChpcHN0YXQuaXBz X2ZyYWdtZW50ZWQrKyk7CiAgICAgfQogCiBkb25lOgpJbmRleDogcWVtdS9zbGlycC9taXNjLmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gcWVtdS5vcmlnL3NsaXJwL21pc2MuYwkyMDA3LTEwLTI0IDE4OjIzOjA5 LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9zbGlycC9taXNjLmMJMjAwNy0xMC0yNCAxOTozODoy MC4wMDAwMDAwMDAgKzAwMDAKQEAgLTYwMyw2ICs2MDMsNyBAQAogfQogI2VuZGlmCiAKKyNpZm5k ZWYgQ09ORklHX1FFTVUKIGludCAoKmxwcmludF9wcmludCkgX1AoKHZvaWQgKiwgY29uc3QgY2hh ciAqLCB2YV9saXN0KSk7CiBjaGFyICpscHJpbnRfcHRyLCAqbHByaW50X3B0cjIsICoqbHByaW50 X2FyZzsKIApAQCAtNzU0LDYgKzc1NSw3IEBACiAKIAlscHJpbnQoIkFkZGluZyBlbXVsYXRpb24g Zm9yICVzIHRvIHBvcnQgJWQvJWRcclxuIiwgYnVmZjEsIGVtdXAtPmxwb3J0LCBlbXVwLT5mcG9y dCk7CiB9CisjZW5kaWYKIAogI2lmZGVmIEJBRF9TUFJJTlRGCiAKSW5kZXg6IHFlbXUvc2xpcnAv c2xpcnAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvc2xpcnAvc2xpcnAuaAkyMDA3LTEwLTI0 IDE4OjIzOjA5LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9zbGlycC9zbGlycC5oCTIwMDctMTAt MjQgMTk6Mzg6MjAuMDAwMDAwMDAwICswMDAwCkBAIC0zLDcgKzMsMTYgQEAKIAogI2RlZmluZSBD T05GSUdfUUVNVQogCi0jZGVmaW5lIERFQlVHIDEKKy8vI2RlZmluZSBERUJVRyAxCisKKy8vIFVu Y29tbWVudCB0aGUgZm9sbG93aW5nIGxpbmUgdG8gZW5hYmxlIFNMSVJQIHN0YXRpc3RpY3MgcHJp bnRpbmcgaW4gUWVtdQorLy8jZGVmaW5lIExPR19FTkFCTEVECisKKyNpZmRlZiBMT0dfRU5BQkxF RAorI2RlZmluZSBTVEFUKGV4cHIpIGV4cHIKKyNlbHNlCisjZGVmaW5lIFNUQVQoZXhwcikgZG8g eyB9IHdoaWxlKDApCisjZW5kaWYKIAogI2lmbmRlZiBDT05GSUdfUUVNVQogI2luY2x1ZGUgInZl cnNpb24uaCIKQEAgLTI1Myw3ICsyNjIsMTkgQEAKICBsb25nIGdldGhvc3RpZCBfUCgodm9pZCkp OwogI2VuZGlmCiAKKyNpZmRlZiBDT05GSUdfUUVNVQorc3RhdGljIGlubGluZSB2b2lkIGxwcmlu dChjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKK3sKKyNpZmRlZiBMT0dfRU5BQkxFRAorICAgIHZh X2xpc3QgYXJnczsKKyAgICB2YV9zdGFydChhcmdzLCBmb3JtYXQpOworICAgIHRlcm1fdnByaW50 Zihmb3JtYXQsIGFyZ3MpOworICAgIHZhX2VuZChhcmdzKTsKKyNlbmRpZgorfQorI2Vsc2UKIHZv aWQgbHByaW50IF9QKChjb25zdCBjaGFyICosIC4uLikpOworI2VuZGlmCiAKIGV4dGVybiBpbnQg ZG9fZWNobzsKIApJbmRleDogcWVtdS9zbGlycC90Y3BfaW5wdXQuYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBx ZW11Lm9yaWcvc2xpcnAvdGNwX2lucHV0LmMJMjAwNy0xMC0yNCAxODoyMzowOS4wMDAwMDAwMDAg KzAwMDAKKysrIHFlbXUvc2xpcnAvdGNwX2lucHV0LmMJMjAwNy0xMC0yNCAxOTozODoyMC4wMDAw MDAwMDAgKzAwMDAKQEAgLTc5LDggKzc5LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgdHAt PnRfZmxhZ3MgfD0gVEZfREVMQUNLOyBcCiAgICAgICAgICAgICAgICAodHApLT5yY3Zfbnh0ICs9 ICh0aSktPnRpX2xlbjsgXAogICAgICAgICAgICAgICAgZmxhZ3MgPSAodGkpLT50aV9mbGFncyAm IFRIX0ZJTjsgXAotICAgICAgICAgICAgICAgdGNwc3RhdC50Y3BzX3JjdnBhY2srKztcCi0gICAg ICAgICAgICAgICB0Y3BzdGF0LnRjcHNfcmN2Ynl0ZSArPSAodGkpLT50aV9sZW47XAorICAgICAg ICAgICAgICAgU1RBVCh0Y3BzdGF0LnRjcHNfcmN2cGFjaysrKTsgICAgICAgICBcCisgICAgICAg ICAgICAgICBTVEFUKHRjcHN0YXQudGNwc19yY3ZieXRlICs9ICh0aSktPnRpX2xlbik7ICAgXAog ICAgICAgICAgICAgICAgaWYgKHNvLT5zb19lbXUpIHsgXAogCQkgICAgICAgaWYgKHRjcF9lbXUo KHNvKSwobSkpKSBzYmFwcGVuZCgoc28pLCAobSkpOyBcCiAJICAgICAgIH0gZWxzZSBcCkBAIC05 OSw4ICs5OSw4IEBACiAJCXRwLT50X2ZsYWdzIHw9IFRGX0RFTEFDSzsgXAogCQkodHApLT5yY3Zf bnh0ICs9ICh0aSktPnRpX2xlbjsgXAogCQlmbGFncyA9ICh0aSktPnRpX2ZsYWdzICYgVEhfRklO OyBcCi0JCXRjcHN0YXQudGNwc19yY3ZwYWNrKys7XAotCQl0Y3BzdGF0LnRjcHNfcmN2Ynl0ZSAr PSAodGkpLT50aV9sZW47XAorCQlTVEFUKHRjcHN0YXQudGNwc19yY3ZwYWNrKyspOyAgICAgICAg XAorCQlTVEFUKHRjcHN0YXQudGNwc19yY3ZieXRlICs9ICh0aSktPnRpX2xlbik7ICBcCiAJCWlm IChzby0+c29fZW11KSB7IFwKIAkJCWlmICh0Y3BfZW11KChzbyksKG0pKSkgc2JhcHBlbmQoc28s IChtKSk7IFwKIAkJfSBlbHNlIFwKQEAgLTE1MCw4ICsxNTAsOCBAQAogCQlpID0gcS0+dGlfc2Vx ICsgcS0+dGlfbGVuIC0gdGktPnRpX3NlcTsKIAkJaWYgKGkgPiAwKSB7CiAJCQlpZiAoaSA+PSB0 aS0+dGlfbGVuKSB7Ci0JCQkJdGNwc3RhdC50Y3BzX3JjdmR1cHBhY2srKzsKLQkJCQl0Y3BzdGF0 LnRjcHNfcmN2ZHVwYnl0ZSArPSB0aS0+dGlfbGVuOworCQkJCVNUQVQodGNwc3RhdC50Y3BzX3Jj dmR1cHBhY2srKyk7CisJCQkJU1RBVCh0Y3BzdGF0LnRjcHNfcmN2ZHVwYnl0ZSArPSB0aS0+dGlf bGVuKTsKIAkJCQltX2ZyZWVtKG0pOwogCQkJCS8qCiAJCQkJICogVHJ5IHRvIHByZXNlbnQgYW55 IHF1ZXVlZCBkYXRhCkBAIC0xNjcsOCArMTY3LDggQEAKIAkJfQogCQlxID0gKHN0cnVjdCB0Y3Bp cGhkciAqKShxLT50aV9uZXh0KTsKIAl9Ci0JdGNwc3RhdC50Y3BzX3Jjdm9vcGFjaysrOwotCXRj cHN0YXQudGNwc19yY3Zvb2J5dGUgKz0gdGktPnRpX2xlbjsKKwlTVEFUKHRjcHN0YXQudGNwc19y Y3Zvb3BhY2srKyk7CisJU1RBVCh0Y3BzdGF0LnRjcHNfcmN2b29ieXRlICs9IHRpLT50aV9sZW4p OwogCVJFQVNTX01CVUYodGkpID0gKG1idWZwXzMyKSBtOwkJLyogWFhYICovCiAKIAkvKgpAQCAt Mjc1LDcgKzI3NSw3IEBACiAJfQogCiAKLQl0Y3BzdGF0LnRjcHNfcmN2dG90YWwrKzsKKwlTVEFU KHRjcHN0YXQudGNwc19yY3Z0b3RhbCsrKTsKIAkvKgogCSAqIEdldCBJUCBhbmQgVENQIGhlYWRl ciB0b2dldGhlciBpbiBmaXJzdCBtYnVmLgogCSAqIE5vdGU6IElQIGxlYXZlcyBJUCBoZWFkZXIg aW4gZmlyc3QgbWJ1Zi4KQEAgLTMwOCw3ICszMDgsNyBAQAogCSAqIHRpLT50aV9zdW0gPSBja3N1 bShtLCBsZW4pOwogCSAqIGlmICh0aS0+dGlfc3VtKSB7ICovCiAJaWYoY2tzdW0obSwgbGVuKSkg ewotCSAgdGNwc3RhdC50Y3BzX3JjdmJhZHN1bSsrOworCSAgU1RBVCh0Y3BzdGF0LnRjcHNfcmN2 YmFkc3VtKyspOwogCSAgZ290byBkcm9wOwogCX0KIApAQCAtMzE4LDcgKzMxOCw3IEBACiAJICov CiAJb2ZmID0gdGktPnRpX29mZiA8PCAyOwogCWlmIChvZmYgPCBzaXplb2YgKHN0cnVjdCB0Y3Bo ZHIpIHx8IG9mZiA+IHRsZW4pIHsKLQkgIHRjcHN0YXQudGNwc19yY3ZiYWRvZmYrKzsKKwkgIFNU QVQodGNwc3RhdC50Y3BzX3JjdmJhZG9mZisrKTsKIAkgIGdvdG8gZHJvcDsKIAl9CiAJdGxlbiAt PSBvZmY7CkBAIC0zNzUsNyArMzc1LDcgQEAKIAkJCSAgICAgICB0aS0+dGlfZHN0LCB0aS0+dGlf ZHBvcnQpOwogCQlpZiAoc28pCiAJCQl0Y3BfbGFzdF9zbyA9IHNvOwotCQkrK3RjcHN0YXQudGNw c19zb2NhY2hlbWlzczsKKwkJU1RBVCh0Y3BzdGF0LnRjcHNfc29jYWNoZW1pc3MrKyk7CiAJfQog CiAJLyoKQEAgLTUwMyw3ICs1MDMsNyBAQAogCQkJCS8qCiAJCQkJICogdGhpcyBpcyBhIHB1cmUg YWNrIGZvciBvdXRzdGFuZGluZyBkYXRhLgogCQkJCSAqLwotCQkJCSsrdGNwc3RhdC50Y3BzX3By ZWRhY2s7CisJCQkJU1RBVCh0Y3BzdGF0LnRjcHNfcHJlZGFjaysrKTsKIC8qCQkJCWlmICh0c19w cmVzZW50KQogICoJCQkJCXRjcF94bWl0X3RpbWVyKHRwLCB0Y3Bfbm93LXRzX2VjcisxKTsKICAq CQkJCWVsc2UKQEAgLTUxMSw4ICs1MTEsOCBAQAogCQkJCQkgICAgU0VRX0dUKHRpLT50aV9hY2ss IHRwLT50X3J0c2VxKSkKIAkJCQkJdGNwX3htaXRfdGltZXIodHAsIHRwLT50X3J0dCk7CiAJCQkJ YWNrZWQgPSB0aS0+dGlfYWNrIC0gdHAtPnNuZF91bmE7Ci0JCQkJdGNwc3RhdC50Y3BzX3JjdmFj a3BhY2srKzsKLQkJCQl0Y3BzdGF0LnRjcHNfcmN2YWNrYnl0ZSArPSBhY2tlZDsKKwkJCQlTVEFU KHRjcHN0YXQudGNwc19yY3ZhY2twYWNrKyspOworCQkJCVNUQVQodGNwc3RhdC50Y3BzX3JjdmFj a2J5dGUgKz0gYWNrZWQpOwogCQkJCXNiZHJvcCgmc28tPnNvX3NuZCwgYWNrZWQpOwogCQkJCXRw LT5zbmRfdW5hID0gdGktPnRpX2FjazsKIAkJCQltX2ZyZWVtKG0pOwpAQCAtNTU2LDEwICs1NTYs MTAgQEAKIAkJCSAqIHdpdGggbm90aGluZyBvbiB0aGUgcmVhc3NlbWJseSBxdWV1ZSBhbmQKIAkJ CSAqIHdlIGhhdmUgZW5vdWdoIGJ1ZmZlciBzcGFjZSB0byB0YWtlIGl0LgogCQkJICovCi0JCQkr K3RjcHN0YXQudGNwc19wcmVkZGF0OworCQkJU1RBVCh0Y3BzdGF0LnRjcHNfcHJlZGRhdCsrKTsK IAkJCXRwLT5yY3Zfbnh0ICs9IHRpLT50aV9sZW47Ci0JCQl0Y3BzdGF0LnRjcHNfcmN2cGFjaysr OwotCQkJdGNwc3RhdC50Y3BzX3JjdmJ5dGUgKz0gdGktPnRpX2xlbjsKKwkJCVNUQVQodGNwc3Rh dC50Y3BzX3JjdnBhY2srKyk7CisJCQlTVEFUKHRjcHN0YXQudGNwc19yY3ZieXRlICs9IHRpLT50 aV9sZW4pOwogCQkJLyoKIAkJCSAqIEFkZCBkYXRhIHRvIHNvY2tldCBidWZmZXIuCiAJCQkgKi8K QEAgLTcyNiw3ICs3MjYsNyBAQAogCSAgdHAtPnRfZmxhZ3MgfD0gVEZfQUNLTk9XOwogCSAgdHAt PnRfc3RhdGUgPSBUQ1BTX1NZTl9SRUNFSVZFRDsKIAkgIHRwLT50X3RpbWVyW1RDUFRfS0VFUF0g PSBUQ1BUVl9LRUVQX0lOSVQ7Ci0JICB0Y3BzdGF0LnRjcHNfYWNjZXB0cysrOworCSAgU1RBVCh0 Y3BzdGF0LnRjcHNfYWNjZXB0cysrKTsKIAkgIGdvdG8gdHJpbXRoZW5zdGVwNjsKIAl9IC8qIGNh c2UgVENQU19MSVNURU4gKi8KIApAQCAtNzY3LDcgKzc2Nyw3IEBACiAJCXRjcF9yY3ZzZXFpbml0 KHRwKTsKIAkJdHAtPnRfZmxhZ3MgfD0gVEZfQUNLTk9XOwogCQlpZiAodGlmbGFncyAmIFRIX0FD SyAmJiBTRVFfR1QodHAtPnNuZF91bmEsIHRwLT5pc3MpKSB7Ci0JCQl0Y3BzdGF0LnRjcHNfY29u bmVjdHMrKzsKKwkJCVNUQVQodGNwc3RhdC50Y3BzX2Nvbm5lY3RzKyspOwogCQkJc29pc2Zjb25u ZWN0ZWQoc28pOwogCQkJdHAtPnRfc3RhdGUgPSBUQ1BTX0VTVEFCTElTSEVEOwogCkBAIC04MDEs OCArODAxLDggQEAKIAkJCW1fYWRqKG0sIC10b2Ryb3ApOwogCQkJdGktPnRpX2xlbiA9IHRwLT5y Y3Zfd25kOwogCQkJdGlmbGFncyAmPSB+VEhfRklOOwotCQkJdGNwc3RhdC50Y3BzX3JjdnBhY2th ZnRlcndpbisrOwotCQkJdGNwc3RhdC50Y3BzX3JjdmJ5dGVhZnRlcndpbiArPSB0b2Ryb3A7CisJ CQlTVEFUKHRjcHN0YXQudGNwc19yY3ZwYWNrYWZ0ZXJ3aW4rKyk7CisJCQlTVEFUKHRjcHN0YXQu dGNwc19yY3ZieXRlYWZ0ZXJ3aW4gKz0gdG9kcm9wKTsKIAkJfQogCQl0cC0+c25kX3dsMSA9IHRp LT50aV9zZXEgLSAxOwogCQl0cC0+cmN2X3VwID0gdGktPnRpX3NlcTsKQEAgLTg3MywxMSArODcz LDExIEBACiAJCQkgKi8KIAkJCXRwLT50X2ZsYWdzIHw9IFRGX0FDS05PVzsKIAkJCXRvZHJvcCA9 IHRpLT50aV9sZW47Ci0JCQl0Y3BzdGF0LnRjcHNfcmN2ZHVwcGFjaysrOwotCQkJdGNwc3RhdC50 Y3BzX3JjdmR1cGJ5dGUgKz0gdG9kcm9wOworCQkJU1RBVCh0Y3BzdGF0LnRjcHNfcmN2ZHVwcGFj aysrKTsKKwkJCVNUQVQodGNwc3RhdC50Y3BzX3JjdmR1cGJ5dGUgKz0gdG9kcm9wKTsKIAkJfSBl bHNlIHsKLQkJCXRjcHN0YXQudGNwc19yY3ZwYXJ0ZHVwcGFjaysrOwotCQkJdGNwc3RhdC50Y3Bz X3JjdnBhcnRkdXBieXRlICs9IHRvZHJvcDsKKwkJCVNUQVQodGNwc3RhdC50Y3BzX3JjdnBhcnRk dXBwYWNrKyspOworCQkJU1RBVCh0Y3BzdGF0LnRjcHNfcmN2cGFydGR1cGJ5dGUgKz0gdG9kcm9w KTsKIAkJfQogCQltX2FkaihtLCB0b2Ryb3ApOwogCQl0aS0+dGlfc2VxICs9IHRvZHJvcDsKQEAg LTg5Niw3ICs4OTYsNyBAQAogCWlmICgoc28tPnNvX3N0YXRlICYgU1NfTk9GRFJFRikgJiYKIAkg ICAgdHAtPnRfc3RhdGUgPiBUQ1BTX0NMT1NFX1dBSVQgJiYgdGktPnRpX2xlbikgewogCQl0cCA9 IHRjcF9jbG9zZSh0cCk7Ci0JCXRjcHN0YXQudGNwc19yY3ZhZnRlcmNsb3NlKys7CisJCVNUQVQo dGNwc3RhdC50Y3BzX3JjdmFmdGVyY2xvc2UrKyk7CiAJCWdvdG8gZHJvcHdpdGhyZXNldDsKIAl9 CiAKQEAgLTkwNiw5ICs5MDYsOSBAQAogCSAqLwogCXRvZHJvcCA9ICh0aS0+dGlfc2VxK3RpLT50 aV9sZW4pIC0gKHRwLT5yY3Zfbnh0K3RwLT5yY3Zfd25kKTsKIAlpZiAodG9kcm9wID4gMCkgewot CQl0Y3BzdGF0LnRjcHNfcmN2cGFja2FmdGVyd2luKys7CisJCVNUQVQodGNwc3RhdC50Y3BzX3Jj dnBhY2thZnRlcndpbisrKTsKIAkJaWYgKHRvZHJvcCA+PSB0aS0+dGlfbGVuKSB7Ci0JCQl0Y3Bz dGF0LnRjcHNfcmN2Ynl0ZWFmdGVyd2luICs9IHRpLT50aV9sZW47CisJCQlTVEFUKHRjcHN0YXQu dGNwc19yY3ZieXRlYWZ0ZXJ3aW4gKz0gdGktPnRpX2xlbik7CiAJCQkvKgogCQkJICogSWYgYSBu ZXcgY29ubmVjdGlvbiByZXF1ZXN0IGlzIHJlY2VpdmVkCiAJCQkgKiB3aGlsZSBpbiBUSU1FX1dB SVQsIGRyb3AgdGhlIG9sZCBjb25uZWN0aW9uCkBAIC05MzEsMTEgKzkzMSwxMSBAQAogCQkJICov CiAJCQlpZiAodHAtPnJjdl93bmQgPT0gMCAmJiB0aS0+dGlfc2VxID09IHRwLT5yY3Zfbnh0KSB7 CiAJCQkJdHAtPnRfZmxhZ3MgfD0gVEZfQUNLTk9XOwotCQkJCXRjcHN0YXQudGNwc19yY3Z3aW5w cm9iZSsrOworCQkJCVNUQVQodGNwc3RhdC50Y3BzX3JjdndpbnByb2JlKyspOwogCQkJfSBlbHNl CiAJCQkJZ290byBkcm9wYWZ0ZXJhY2s7CiAJCX0gZWxzZQotCQkJdGNwc3RhdC50Y3BzX3JjdmJ5 dGVhZnRlcndpbiArPSB0b2Ryb3A7CisJCQlTVEFUKHRjcHN0YXQudGNwc19yY3ZieXRlYWZ0ZXJ3 aW4gKz0gdG9kcm9wKTsKIAkJbV9hZGoobSwgLXRvZHJvcCk7CiAJCXRpLT50aV9sZW4gLT0gdG9k cm9wOwogCQl0aWZsYWdzICY9IH4oVEhfUFVTSHxUSF9GSU4pOwpAQCAtOTc2LDcgKzk3Niw3IEBA CiAvKgkJc28tPnNvX2Vycm9yID0gRUNPTk5SRVNFVDsgKi8KIAljbG9zZToKIAkJdHAtPnRfc3Rh dGUgPSBUQ1BTX0NMT1NFRDsKLQkJdGNwc3RhdC50Y3BzX2Ryb3BzKys7CisJCVNUQVQodGNwc3Rh dC50Y3BzX2Ryb3BzKyspOwogCQl0cCA9IHRjcF9jbG9zZSh0cCk7CiAJCWdvdG8gZHJvcDsKIApA QCAtMTAxNSw3ICsxMDE1LDcgQEAKIAkJaWYgKFNFUV9HVCh0cC0+c25kX3VuYSwgdGktPnRpX2Fj aykgfHwKIAkJICAgIFNFUV9HVCh0aS0+dGlfYWNrLCB0cC0+c25kX21heCkpCiAJCQlnb3RvIGRy b3B3aXRocmVzZXQ7Ci0JCXRjcHN0YXQudGNwc19jb25uZWN0cysrOworCQlTVEFUKHRjcHN0YXQu dGNwc19jb25uZWN0cysrKTsKIAkJdHAtPnRfc3RhdGUgPSBUQ1BTX0VTVEFCTElTSEVEOwogCQkv KgogCQkgKiBUaGUgc2VudCBTWU4gaXMgYWNrJ2VkIHdpdGggb3VyIHNlcXVlbmNlIG51bWJlciAr MQpAQCAtMTA3Miw3ICsxMDcyLDcgQEAKIAogCQlpZiAoU0VRX0xFUSh0aS0+dGlfYWNrLCB0cC0+ c25kX3VuYSkpIHsKIAkJCWlmICh0aS0+dGlfbGVuID09IDAgJiYgdGl3aW4gPT0gdHAtPnNuZF93 bmQpIHsKLQkJCSAgdGNwc3RhdC50Y3BzX3JjdmR1cGFjaysrOworCQkJICBTVEFUKHRjcHN0YXQu dGNwc19yY3ZkdXBhY2srKyk7CiAJCQkgIERFQlVHX01JU0MoKGRmZCwiIGR1cCBhY2sgIG0gPSAl bHggIHNvID0gJWx4IFxuIiwKIAkJCQkgICAgICAobG9uZyApbSwgKGxvbmcgKXNvKSk7CiAJCQkJ LyoKQEAgLTExNDAsMTIgKzExNDAsMTIgQEAKIAkJCXRwLT5zbmRfY3duZCA9IHRwLT5zbmRfc3N0 aHJlc2g7CiAJCXRwLT50X2R1cGFja3MgPSAwOwogCQlpZiAoU0VRX0dUKHRpLT50aV9hY2ssIHRw LT5zbmRfbWF4KSkgewotCQkJdGNwc3RhdC50Y3BzX3JjdmFja3Rvb211Y2grKzsKKwkJCVNUQVQo dGNwc3RhdC50Y3BzX3JjdmFja3Rvb211Y2grKyk7CiAJCQlnb3RvIGRyb3BhZnRlcmFjazsKIAkJ fQogCQlhY2tlZCA9IHRpLT50aV9hY2sgLSB0cC0+c25kX3VuYTsKLQkJdGNwc3RhdC50Y3BzX3Jj dmFja3BhY2srKzsKLQkJdGNwc3RhdC50Y3BzX3JjdmFja2J5dGUgKz0gYWNrZWQ7CisJCVNUQVQo dGNwc3RhdC50Y3BzX3JjdmFja3BhY2srKyk7CisJCVNUQVQodGNwc3RhdC50Y3BzX3JjdmFja2J5 dGUgKz0gYWNrZWQpOwogCiAJCS8qCiAJCSAqIElmIHdlIGhhdmUgYSB0aW1lc3RhbXAgcmVwbHks IHVwZGF0ZSBzbW9vdGhlZApAQCAtMTI4NCw3ICsxMjg0LDcgQEAKIAkJLyoga2VlcCB0cmFjayBv ZiBwdXJlIHdpbmRvdyB1cGRhdGVzICovCiAJCWlmICh0aS0+dGlfbGVuID09IDAgJiYKIAkJICAg IHRwLT5zbmRfd2wyID09IHRpLT50aV9hY2sgJiYgdGl3aW4gPiB0cC0+c25kX3duZCkKLQkJCXRj cHN0YXQudGNwc19yY3Z3aW51cGQrKzsKKwkJCVNUQVQodGNwc3RhdC50Y3BzX3JjdndpbnVwZCsr KTsKIAkJdHAtPnNuZF93bmQgPSB0aXdpbjsKIAkJdHAtPnNuZF93bDEgPSB0aS0+dGlfc2VxOwog CQl0cC0+c25kX3dsMiA9IHRpLT50aV9hY2s7CkBAIC0xNjE2LDcgKzE2MTYsNyBAQAogCURFQlVH X0FSRygidHAgPSAlbHgiLCAobG9uZyl0cCk7CiAJREVCVUdfQVJHKCJydHQgPSAlZCIsIHJ0dCk7 CiAKLQl0Y3BzdGF0LnRjcHNfcnR0dXBkYXRlZCsrOworCVNUQVQodGNwc3RhdC50Y3BzX3J0dHVw ZGF0ZWQrKyk7CiAJaWYgKHRwLT50X3NydHQgIT0gMCkgewogCQkvKgogCQkgKiBzcnR0IGlzIHN0 b3JlZCBhcyBmaXhlZCBwb2ludCB3aXRoIDMgYml0cyBhZnRlciB0aGUKSW5kZXg6IHFlbXUvc2xp cnAvdGNwX291dHB1dC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9zbGlycC90Y3Bfb3V0cHV0 LmMJMjAwNy0xMC0yNCAxODoyMzowOS4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvc2xpcnAvdGNw X291dHB1dC5jCTIwMDctMTAtMjQgMTk6Mzg6MjAuMDAwMDAwMDAwICswMDAwCkBAIC0yNjMsNyAr MjYzLDcgQEAKIAkvKgogCSAqIE5vIHJlYXNvbiB0byBzZW5kIGEgc2VnbWVudCwganVzdCByZXR1 cm4uCiAJICovCi0JdGNwc3RhdC50Y3BzX2RpZG51dHRpbisrOworCVNUQVQodGNwc3RhdC50Y3Bz X2RpZG51dHRpbisrKTsKIAogCXJldHVybiAoMCk7CiAKQEAgLTMzOSwxMyArMzM5LDEzIEBACiAJ ICovCiAJaWYgKGxlbikgewogCQlpZiAodHAtPnRfZm9yY2UgJiYgbGVuID09IDEpCi0JCQl0Y3Bz dGF0LnRjcHNfc25kcHJvYmUrKzsKKwkJCVNUQVQodGNwc3RhdC50Y3BzX3NuZHByb2JlKyspOwog CQllbHNlIGlmIChTRVFfTFQodHAtPnNuZF9ueHQsIHRwLT5zbmRfbWF4KSkgewotCQkJdGNwc3Rh dC50Y3BzX3NuZHJleG1pdHBhY2srKzsKLQkJCXRjcHN0YXQudGNwc19zbmRyZXhtaXRieXRlICs9 IGxlbjsKKwkJCVNUQVQodGNwc3RhdC50Y3BzX3NuZHJleG1pdHBhY2srKyk7CisJCQlTVEFUKHRj cHN0YXQudGNwc19zbmRyZXhtaXRieXRlICs9IGxlbik7CiAJCX0gZWxzZSB7Ci0JCQl0Y3BzdGF0 LnRjcHNfc25kcGFjaysrOwotCQkJdGNwc3RhdC50Y3BzX3NuZGJ5dGUgKz0gbGVuOworCQkJU1RB VCh0Y3BzdGF0LnRjcHNfc25kcGFjaysrKTsKKwkJCVNUQVQodGNwc3RhdC50Y3BzX3NuZGJ5dGUg Kz0gbGVuKTsKIAkJfQogCiAJCW0gPSBtX2dldCgpOwpAQCAtMzgyLDEzICszODIsMTMgQEAKIAkJ CWZsYWdzIHw9IFRIX1BVU0g7CiAJfSBlbHNlIHsKIAkJaWYgKHRwLT50X2ZsYWdzICYgVEZfQUNL Tk9XKQotCQkJdGNwc3RhdC50Y3BzX3NuZGFja3MrKzsKKwkJCVNUQVQodGNwc3RhdC50Y3BzX3Nu ZGFja3MrKyk7CiAJCWVsc2UgaWYgKGZsYWdzICYgKFRIX1NZTnxUSF9GSU58VEhfUlNUKSkKLQkJ CXRjcHN0YXQudGNwc19zbmRjdHJsKys7CisJCQlTVEFUKHRjcHN0YXQudGNwc19zbmRjdHJsKysp OwogCQllbHNlIGlmIChTRVFfR1QodHAtPnNuZF91cCwgdHAtPnNuZF91bmEpKQotCQkJdGNwc3Rh dC50Y3BzX3NuZHVyZysrOworCQkJU1RBVCh0Y3BzdGF0LnRjcHNfc25kdXJnKyspOwogCQllbHNl Ci0JCQl0Y3BzdGF0LnRjcHNfc25kd2ludXArKzsKKwkJCVNUQVQodGNwc3RhdC50Y3BzX3NuZHdp bnVwKyspOwogCiAJCW0gPSBtX2dldCgpOwogCQlpZiAobSA9PSBOVUxMKSB7CkBAIC01MDAsNyAr NTAwLDcgQEAKIAkJCWlmICh0cC0+dF9ydHQgPT0gMCkgewogCQkJCXRwLT50X3J0dCA9IDE7CiAJ CQkJdHAtPnRfcnRzZXEgPSBzdGFydHNlcTsKLQkJCQl0Y3BzdGF0LnRjcHNfc2Vnc3RpbWVkKys7 CisJCQkJU1RBVCh0Y3BzdGF0LnRjcHNfc2Vnc3RpbWVkKyspOwogCQkJfQogCQl9CiAKQEAgLTU2 Nyw3ICs1NjcsNyBAQAogICovCiAJCXJldHVybiAoZXJyb3IpOwogCX0KLQl0Y3BzdGF0LnRjcHNf c25kdG90YWwrKzsKKwlTVEFUKHRjcHN0YXQudGNwc19zbmR0b3RhbCsrKTsKIAogCS8qCiAJICog RGF0YSBzZW50IChhcyBmYXIgYXMgd2UgY2FuIHRlbGwpLgpJbmRleDogcWVtdS9zbGlycC90Y3Bf c3Vici5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9zbGlycC90Y3Bfc3Vici5jCTIwMDctMTAt MjQgMTg6MjM6MDkuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L3NsaXJwL3RjcF9zdWJyLmMJMjAw Ny0xMC0yNCAxOTozODoyMC4wMDAwMDAwMDAgKzAwMDAKQEAgLTI1NSw5ICsyNTUsOSBAQAogCWlm IChUQ1BTX0hBVkVSQ1ZEU1lOKHRwLT50X3N0YXRlKSkgewogCQl0cC0+dF9zdGF0ZSA9IFRDUFNf Q0xPU0VEOwogCQkodm9pZCkgdGNwX291dHB1dCh0cCk7Ci0JCXRjcHN0YXQudGNwc19kcm9wcysr OworCQlTVEFUKHRjcHN0YXQudGNwc19kcm9wcysrKTsKIAl9IGVsc2UKLQkJdGNwc3RhdC50Y3Bz X2Nvbm5kcm9wcysrOworCQlTVEFUKHRjcHN0YXQudGNwc19jb25uZHJvcHMrKyk7CiAvKglpZiAo ZXJybm8gPT0gRVRJTUVET1VUICYmIHRwLT50X3NvZnRlcnJvcikKICAqCQllcnJubyA9IHRwLT50 X3NvZnRlcnJvcjsKICAqLwpAQCAtMzA1LDcgKzMwNSw3IEBACiAJc2JmcmVlKCZzby0+c29fcmN2 KTsKIAlzYmZyZWUoJnNvLT5zb19zbmQpOwogCXNvZnJlZShzbyk7Ci0JdGNwc3RhdC50Y3BzX2Ns b3NlZCsrOworCVNUQVQodGNwc3RhdC50Y3BzX2Nsb3NlZCsrKTsKIAlyZXR1cm4gKChzdHJ1Y3Qg dGNwY2IgKikwKTsKIH0KIApAQCAtNTI4LDcgKzUyOCw3IEBACiAgKi8KIAogLyoJc29pc2Nvbm5l Y3Rpbmcoc28pOyAqLyAvKiBOT0ZEUkVGIHVzZWQgaW5zdGVhZCAqLwotCXRjcHN0YXQudGNwc19j b25uYXR0ZW1wdCsrOworCVNUQVQodGNwc3RhdC50Y3BzX2Nvbm5hdHRlbXB0KyspOwogCiAJdHAt PnRfc3RhdGUgPSBUQ1BTX1NZTl9TRU5UOwogCXRwLT50X3RpbWVyW1RDUFRfS0VFUF0gPSBUQ1BU Vl9LRUVQX0lOSVQ7CkBAIC04NTcsNyArODU3LDcgQEAKIAogICAgICAgICAgICAgICAgIC8qc29p c2Zjb25uZWN0aW5nKG5zKTsqLwogCi0JCQkJdGNwc3RhdC50Y3BzX2Nvbm5hdHRlbXB0Kys7CisJ CQkJU1RBVCh0Y3BzdGF0LnRjcHNfY29ubmF0dGVtcHQrKyk7CiAKIAkJCQl0cC0+dF9zdGF0ZSA9 IFRDUFNfU1lOX1NFTlQ7CiAJCQkJdHAtPnRfdGltZXJbVENQVF9LRUVQXSA9IFRDUFRWX0tFRVBf SU5JVDsKSW5kZXg6IHFlbXUvc2xpcnAvaWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvc2xp cnAvaWYuaAkyMDA3LTEwLTI0IDE4OjIzOjA5LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9zbGly cC9pZi5oCTIwMDctMTAtMjQgMTk6Mzg6MjAuMDAwMDAwMDAwICswMDAwCkBAIC0yOSw2ICsyOSw3 IEBACiAKICNkZWZpbmUgaWZzX2luaXQoaWZtKSAoKGlmbSktPmlmc19uZXh0ID0gKGlmbSktPmlm c19wcmV2ID0gKGlmbSkpCiAKKyNpZmRlZiBMT0dfRU5BQkxFRAogLyogSW50ZXJmYWNlIHN0YXRp c3RpY3MgKi8KIHN0cnVjdCBzbGlycF9pZnN0YXRzIHsKIAl1X2ludCBvdXRfcGt0czsJCS8qIE91 dHB1dCBwYWNrZXRzICovCkBAIC00Niw1ICs0Nyw2IEBACiAKIAl1X2ludCBpbl9tYmFkOwkJLyog QmFkIGluY29taW5nIHBhY2tldHMgKi8KIH07CisjZW5kaWYKIAogI2VuZGlmCkluZGV4OiBxZW11 L3NsaXJwL3RjcF90aW1lci5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9zbGlycC90Y3BfdGlt ZXIuYwkyMDA3LTEwLTI0IDE4OjIzOjA5LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9zbGlycC90 Y3BfdGltZXIuYwkyMDA3LTEwLTI0IDE5OjM4OjIwLjAwMDAwMDAwMCArMDAwMApAQCAtNDEsNyAr NDEsMTAgQEAKIGludAl0Y3BfbWF4aWRsZTsKIGludAlzb19vcHRpb25zID0gRE9fS0VFUEFMSVZF OwogCisjaWZkZWYgTE9HX0VOQUJMRUQKIHN0cnVjdCAgIHRjcHN0YXQgdGNwc3RhdDsgICAgICAg IC8qIHRjcCBzdGF0aXN0aWNzICovCisjZW5kaWYKKwogdV9pbnQzMl90ICAgICAgICB0Y3Bfbm93 OyAgICAgICAgICAgICAgICAvKiBmb3IgUkZDIDEzMjMgdGltZXN0YW1wcyAqLwogCiAvKgpAQCAt NjIsNyArNjUsNyBAQAogCQkgICAgKHRwLT50X2ZsYWdzICYgVEZfREVMQUNLKSkgewogCQkJdHAt PnRfZmxhZ3MgJj0gflRGX0RFTEFDSzsKIAkJCXRwLT50X2ZsYWdzIHw9IFRGX0FDS05PVzsKLQkJ CXRjcHN0YXQudGNwc19kZWxhY2srKzsKKwkJCVNUQVQodGNwc3RhdC50Y3BzX2RlbGFjaysrKTsK IAkJCSh2b2lkKSB0Y3Bfb3V0cHV0KHRwKTsKIAkJfQogfQpAQCAtMTkyLDcgKzE5NSw3IEBACiAJ CQkJICogV2UgdHJpZWQgb3VyIGJlc3QsIG5vdyB0aGUgY29ubmVjdGlvbiBtdXN0IGRpZSEKIAkJ CQkgKi8KIAkJCQl0cC0+dF9yeHRzaGlmdCA9IFRDUF9NQVhSWFRTSElGVDsKLQkJCQl0Y3BzdGF0 LnRjcHNfdGltZW91dGRyb3ArKzsKKwkJCQlTVEFUKHRjcHN0YXQudGNwc190aW1lb3V0ZHJvcCsr KTsKIAkJCQl0cCA9IHRjcF9kcm9wKHRwLCB0cC0+dF9zb2Z0ZXJyb3IpOwogCQkJCS8qIHRwLT50 X3NvZnRlcnJvciA6IEVUSU1FRE9VVCk7ICovIC8qIFhYWCAqLwogCQkJCXJldHVybiAodHApOyAv KiBYWFggKi8KQEAgLTIwNCw3ICsyMDcsNyBAQAogCQkJICovCiAJCQl0cC0+dF9yeHRzaGlmdCA9 IDY7CiAJCX0KLQkJdGNwc3RhdC50Y3BzX3JleG10dGltZW8rKzsKKwkJU1RBVCh0Y3BzdGF0LnRj cHNfcmV4bXR0aW1lbysrKTsKIAkJcmV4bXQgPSBUQ1BfUkVYTVRWQUwodHApICogdGNwX2JhY2tv ZmZbdHAtPnRfcnh0c2hpZnRdOwogCQlUQ1BUX1JBTkdFU0VUKHRwLT50X3J4dGN1ciwgcmV4bXQs CiAJCSAgICAoc2hvcnQpdHAtPnRfcnR0bWluLCBUQ1BUVl9SRVhNVE1BWCk7IC8qIFhYWCAqLwpA QCAtMjY3LDcgKzI3MCw3IEBACiAJICogRm9yY2UgYSBieXRlIHRvIGJlIG91dHB1dCwgaWYgcG9z c2libGUuCiAJICovCiAJY2FzZSBUQ1BUX1BFUlNJU1Q6Ci0JCXRjcHN0YXQudGNwc19wZXJzaXN0 dGltZW8rKzsKKwkJU1RBVCh0Y3BzdGF0LnRjcHNfcGVyc2lzdHRpbWVvKyspOwogCQl0Y3Bfc2V0 cGVyc2lzdCh0cCk7CiAJCXRwLT50X2ZvcmNlID0gMTsKIAkJKHZvaWQpIHRjcF9vdXRwdXQodHAp OwpAQCAtMjc5LDcgKzI4Miw3IEBACiAJICogb3IgZHJvcCBjb25uZWN0aW9uIGlmIGlkbGUgZm9y IHRvbyBsb25nLgogCSAqLwogCWNhc2UgVENQVF9LRUVQOgotCQl0Y3BzdGF0LnRjcHNfa2VlcHRp bWVvKys7CisJCVNUQVQodGNwc3RhdC50Y3BzX2tlZXB0aW1lbysrKTsKIAkJaWYgKHRwLT50X3N0 YXRlIDwgVENQU19FU1RBQkxJU0hFRCkKIAkJCWdvdG8gZHJvcGl0OwogCkBAIC0yOTksNyArMzAy LDcgQEAKIAkJCSAqIGJ5IHRoZSBwcm90b2NvbCBzcGVjLCB0aGlzIHJlcXVpcmVzIHRoZQogCQkJ ICogY29ycmVzcG9uZGVudCBUQ1AgdG8gcmVzcG9uZC4KIAkJCSAqLwotCQkJdGNwc3RhdC50Y3Bz X2tlZXBwcm9iZSsrOworCQkJU1RBVCh0Y3BzdGF0LnRjcHNfa2VlcHByb2JlKyspOwogI2lmZGVm IFRDUF9DT01QQVRfNDIKIAkJCS8qCiAJCQkgKiBUaGUga2VlcGFsaXZlIHBhY2tldCBtdXN0IGhh dmUgbm9uemVybyBsZW5ndGgKQEAgLTMxNyw3ICszMjAsNyBAQAogCQlicmVhazsKIAogCWRyb3Bp dDoKLQkJdGNwc3RhdC50Y3BzX2tlZXBkcm9wcysrOworCQlTVEFUKHRjcHN0YXQudGNwc19rZWVw ZHJvcHMrKyk7CiAJCXRwID0gdGNwX2Ryb3AodHAsIDApOyAvKiBFVElNRURPVVQpOyAqLwogCQli cmVhazsKIAl9CkluZGV4OiBxZW11L3NsaXJwL3RjcF92YXIuaAo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11 Lm9yaWcvc2xpcnAvdGNwX3Zhci5oCTIwMDctMTAtMjQgMTg6MjM6MDkuMDAwMDAwMDAwICswMDAw CisrKyBxZW11L3NsaXJwL3RjcF92YXIuaAkyMDA3LTEwLTI0IDE4OjQ1OjQyLjAwMDAwMDAwMCAr MDAwMApAQCAtMTg1LDYgKzE4NSw3IEBACiAjZW5kaWYKICNkZWZpbmUgUkVBU1NfTUJVRih0aSkg KCoobWJ1ZnBfMzIgKikmKCh0aSktPnRpX3QpKQogCisjaWZkZWYgTE9HX0VOQUJMRUQKIC8qCiAg KiBUQ1Agc3RhdGlzdGljcy4KICAqIE1hbnkgb2YgdGhlc2Ugc2hvdWxkIGJlIGtlcHQgcGVyIGNv bm5lY3Rpb24sCkBAIC0yNDcsNiArMjQ4LDggQEAKIH07CiAKIGV4dGVybiBzdHJ1Y3QJdGNwc3Rh dCB0Y3BzdGF0OwkvKiB0Y3Agc3RhdGlzdGljcyAqLworI2VuZGlmCisKIGV4dGVybiB1X2ludDMy X3QJdGNwX25vdzsJCS8qIGZvciBSRkMgMTMyMyB0aW1lc3RhbXBzICovCiAKICNlbmRpZgpJbmRl eDogcWVtdS9zbGlycC91ZHAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvc2xpcnAvdWRwLmgJ MjAwNy0xMC0yNCAxODoyMzowOS4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvc2xpcnAvdWRwLmgJ MjAwNy0xMC0yNCAxOTozODoyMC4wMDAwMDAwMDAgKzAwMDAKQEAgLTcyLDYgKzcyLDcgQEAKICNk ZWZpbmUgdWlfdWxlbiAgICAgICAgIHVpX3UudWhfdWxlbgogI2RlZmluZSB1aV9zdW0gICAgICAg ICAgdWlfdS51aF9zdW0KIAorI2lmZGVmIExPR19FTkFCTEVECiBzdHJ1Y3QgdWRwc3RhdCB7CiAJ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCBzdGF0aXN0aWNzOiAqLwog CSAgICAgICAgdV9sb25nICB1ZHBzX2lwYWNrZXRzOyAgICAgICAgICAvKiB0b3RhbCBpbnB1dCBw YWNrZXRzICovCkBAIC04NSw2ICs4Niw3IEBACiAJICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvKiBvdXRwdXQgc3RhdGlzdGljczogKi8KIAkgICAgICAgIHVfbG9uZyAgdWRwc19vcGFj a2V0czsgICAgICAgICAgLyogdG90YWwgb3V0cHV0IHBhY2tldHMgKi8KIH07CisjZW5kaWYKIAog LyoKICAqIE5hbWVzIGZvciBVRFAgc3lzY3RsIG9iamVjdHMKQEAgLTkyLDcgKzk0LDEwIEBACiAj ZGVmaW5lIFVEUENUTF9DSEVDS1NVTSAgICAgICAgIDEgICAgICAgLyogY2hlY2tzdW0gVURQIHBh Y2tldHMgKi8KICNkZWZpbmUgVURQQ1RMX01BWElEICAgICAgICAgICAgMgogCisjaWZkZWYgTE9H X0VOQUJMRUQKIGV4dGVybiBzdHJ1Y3QgdWRwc3RhdCB1ZHBzdGF0OworI2VuZGlmCisKIGV4dGVy biBzdHJ1Y3Qgc29ja2V0IHVkYjsKIHN0cnVjdCBtYnVmOwogCkluZGV4OiBxZW11L3NsaXJwL3Vk cC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9zbGlycC91ZHAuYwkyMDA3LTEwLTI0IDE4OjIz OjA5LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9zbGlycC91ZHAuYwkyMDA3LTEwLTI0IDE5OjQy OjE0LjAwMDAwMDAwMCArMDAwMApAQCAtNDUsNyArNDUsOSBAQAogI2luY2x1ZGUgPHNsaXJwLmg+ CiAjaW5jbHVkZSAiaXBfaWNtcC5oIgogCisjaWZkZWYgTE9HX0VOQUJMRUQKIHN0cnVjdCB1ZHBz dGF0IHVkcHN0YXQ7CisjZW5kaWYKIAogc3RydWN0IHNvY2tldCB1ZGI7CiAKQEAgLTg2LDcgKzg4 LDcgQEAKIAlERUJVR19BUkcoIm0gPSAlbHgiLCAobG9uZyltKTsKIAlERUJVR19BUkcoImlwaGxl biA9ICVkIiwgaXBobGVuKTsKIAotCXVkcHN0YXQudWRwc19pcGFja2V0cysrOworCVNUQVQodWRw c3RhdC51ZHBzX2lwYWNrZXRzKyspOwogCiAJLyoKIAkgKiBTdHJpcCBJUCBvcHRpb25zLCBpZiBh bnk7IHNob3VsZCBza2lwIHRoaXMsCkBAIC0xMTMsNyArMTE1LDcgQEAKIAogCWlmIChpcC0+aXBf bGVuICE9IGxlbikgewogCQlpZiAobGVuID4gaXAtPmlwX2xlbikgewotCQkJdWRwc3RhdC51ZHBz X2JhZGxlbisrOworCQkJU1RBVCh1ZHBzdGF0LnVkcHNfYmFkbGVuKyspOwogCQkJZ290byBiYWQ7 CiAJCX0KIAkJbV9hZGoobSwgbGVuIC0gaXAtPmlwX2xlbik7CkBAIC0xNDAsNyArMTQyLDcgQEAK IAkgICAqIGlmICh1aC0+dWhfc3VtKSB7CiAJICAgKi8KIAkgIGlmKGNrc3VtKG0sIGxlbiArIHNp emVvZihzdHJ1Y3QgaXApKSkgewotCSAgICB1ZHBzdGF0LnVkcHNfYmFkc3VtKys7CisJICAgIFNU QVQodWRwc3RhdC51ZHBzX2JhZHN1bSsrKTsKIAkgICAgZ290byBiYWQ7CiAJICB9CiAJfQpAQCAt MTgxLDcgKzE4Myw3IEBACiAJCWlmICh0bXAgPT0gJnVkYikgewogCQkgIHNvID0gTlVMTDsKIAkJ fSBlbHNlIHsKLQkJICB1ZHBzdGF0LnVkcHBzX3BjYmNhY2hlbWlzcysrOworCQkgIFNUQVQodWRw c3RhdC51ZHBwc19wY2JjYWNoZW1pc3MrKyk7CiAJCSAgdWRwX2xhc3Rfc28gPSBzbzsKIAkJfQog CX0KQEAgLTI5OSw3ICszMDEsNyBAQAogCSgoc3RydWN0IGlwICopdWkpLT5pcF90dGwgPSBpcF9k ZWZ0dGw7CiAJKChzdHJ1Y3QgaXAgKil1aSktPmlwX3RvcyA9IGlwdG9zOwogCi0JdWRwc3RhdC51 ZHBzX29wYWNrZXRzKys7CisJU1RBVCh1ZHBzdGF0LnVkcHNfb3BhY2tldHMrKyk7CiAKIAllcnJv ciA9IGlwX291dHB1dChzbywgbSk7CiAKSW5kZXg6IHFlbXUvbW9uaXRvci5jCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tIHFlbXUub3JpZy9tb25pdG9yLmMJMjAwNy0xMC0yNCAxODoyMzowOS4wMDAwMDAwMDAgKzAw MDAKKysrIHFlbXUvbW9uaXRvci5jCTIwMDctMTAtMjQgMTg6NDU6NDIuMDAwMDAwMDAwICswMDAw CkBAIC0xMzY1LDYgKzEzNjUsMTAgQEAKICAgICB7ICJjcHVzdGF0cyIsICIiLCBkb19pbmZvX2Nw dV9zdGF0cywKICAgICAgICIiLCAic2hvdyBDUFUgc3RhdGlzdGljcyIsIH0sCiAjZW5kaWYKKyNp ZiBkZWZpbmVkKENPTkZJR19TTElSUCkKKyAgICB7ICJzbGlycCIsICIiLCBkb19pbmZvX3NsaXJw LAorICAgICAgIiIsICJzaG93IFNMSVJQIHN0YXRpc3RpY3MiLCB9LAorI2VuZGlmCiAgICAgeyBO VUxMLCBOVUxMLCB9LAogfTsKIApJbmRleDogcWVtdS9zbGlycC9saWJzbGlycC5oCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIHFlbXUub3JpZy9zbGlycC9saWJzbGlycC5oCTIwMDctMTAtMjQgMTg6MjM6MDkuMDAw MDAwMDAwICswMDAwCisrKyBxZW11L3NsaXJwL2xpYnNsaXJwLmgJMjAwNy0xMC0yNCAxODo0NTo0 Mi4wMDAwMDAwMDAgKzAwMDAKQEAgLTI2LDYgKzI2LDggQEAKIGV4dGVybiBjb25zdCBjaGFyICp0 ZnRwX3ByZWZpeDsKIGV4dGVybiBjaGFyIHNsaXJwX2hvc3RuYW1lWzMzXTsKIAordm9pZCBzbGly cF9zdGF0cyh2b2lkKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IHFl bXUvdmwuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvdmwuYwkyMDA3LTEwLTI0IDE4OjIzOjA5 LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS92bC5jCTIwMDctMTAtMjQgMTg6NDU6NDIuMDAwMDAw MDAwICswMDAwCkBAIC0zNzgxLDYgKzM3ODEsMTAgQEAKIH0KIAogI2VuZGlmIC8qICFkZWZpbmVk KF9XSU4zMikgKi8KK3ZvaWQgZG9faW5mb19zbGlycCh2b2lkKQoreworICAgIHNsaXJwX3N0YXRz KCk7Cit9CiAKICNlbmRpZiAvKiBDT05GSUdfU0xJUlAgKi8KIApJbmRleDogcWVtdS92bC5oCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIHFlbXUub3JpZy92bC5oCTIwMDctMTAtMjQgMTg6MjM6MDkuMDAwMDAwMDAw ICswMDAwCisrKyBxZW11L3ZsLmgJMjAwNy0xMC0yNCAxODo0NTo0Mi4wMDAwMDAwMDAgKzAwMDAK QEAgLTQzOSw2ICs0MzksOSBAQAogZXh0ZXJuIGludCBuYl9uaWNzOwogZXh0ZXJuIE5JQ0luZm8g bmRfdGFibGVbTUFYX05JQ1NdOwogCisvKiBTTElSUCAqLwordm9pZCBkb19pbmZvX3NsaXJwKHZv aWQpOworCiAvKiB0aW1lcnMgKi8KIAogdHlwZWRlZiBzdHJ1Y3QgUUVNVUNsb2NrIFFFTVVDbG9j azsK ------=_Part_9064_18526688.1193256291341--