From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27682 invoked by alias); 9 Dec 2006 06:23:38 -0000 Received: (qmail 27668 invoked by uid 22791); 9 Dec 2006 06:23:36 -0000 X-Spam-Check-By: sourceware.org Received: from Unknown (HELO mswbj01.sunnorth.com.cn) (218.247.162.66) by sourceware.org (qpsmtpd/0.31) with ESMTP; Sat, 09 Dec 2006 06:23:29 +0000 Received: from maillog.sunnorth.com.cn (unverified [172.20.10.250]) by mswbj01.sunnorth.com.cn (Clearswift SMTPRS 5.2.5) with ESMTP id ; Sat, 9 Dec 2006 14:24:29 +0800 Received: from ntns1cn.sunnorth.com.cn (ntns1cn.sunnorth.com.cn [172.20.10.252]) by maillog.sunnorth.com.cn (8.12.10/8.12.10) with ESMTP id kB97opWT003035; Sat, 9 Dec 2006 15:50:52 +0800 In-Reply-To: To: Jim Blandy Cc: bjgnu@sunnorth.com.cn, gdb-patches@sourceware.org Subject: Re: [patch] add target Score to GDB MIME-Version: 1.0 X-Mailer: Lotus Notes Release 6.5 September 26, 2003 Message-ID: From: =?Big5?B?r7PE3g==?= Date: Sat, 09 Dec 2006 06:23:00 -0000 Content-Type: multipart/mixed; boundary="=_mixed 002331794825723F_=" Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2006-12/txt/msg00137.txt.bz2 --=_mixed 002331794825723F_= Content-Type: text/plain; charset="US-ASCII" Content-length: 2481 Sorry Jim i didn't reply you yesterday for the reason that i can't checkout the current cvs caused by our network. > Jim Blandy wrote on 2006-12-08 04:19:03: > >> Does score_integer_to_address do exactly the same thing that GCC does > >> when the user casts an integer to an address? If they don't, then the > >> user could become quite confused when GDB and GCC evaluate their > >> expressions differently. > > > > I didn't see clearly about this hook when i was porting score gdb. > > I have seen your NOTES in 'value_as_address'. > > The pointer and the address are the same on score target, > > and a pointer to a function always points to the entry point address of > > that function. > > So we don't need to implement this hook. Can i say that? > > If you don't need to set it to get clean test suite results, then I > would definitely recommend leaving it out. I will leave it out. > Please keep all lines under 80 characters in length; for example, > score_unwind_dummy_id needs to be reformatted. > > I'm surprised by score_type_needs_double_align --- is it really true > that struct types only need double alignment if their *first* member > does? Why is that? I'd expect the code for structs and unions to be > the same. I have modified that. > There should be patches to Makefile.in; could you post those? We need > to see the complete patch in order to approve it. > > All changes need a ChangeLog entry. You don't need to say much for > score-tdep.c and score-tdep.h; here's the entry for the xtensa port: > > 2006-11-14 Maxim Grigoriev > > * NEWS: New port to Xtensa. > * Makefile.in: Add dependencies for Xtensa files. > * configure.tgt (xtensa*, xtensa*-*-elf*): New. > * configure.host (xtensa*-*-elf*): New. > * config/xtensa/xtensa.mt: New file. > * xtensa-config.c: New file. > * xtensa-tdep.h: New file. > * xtensa-tdep.c: New file. > > (I would prefer that the Makefile.in entry actually listed the > variables and rules added.) > > Other than that, this looks good. Please post a complete patch, > generated against the current CVS sources, and with a ChangeLog entry, > for a final review, and then we'll get it committed. I have added S+core target to ChangeLog and dependencies to Makefile.in. The following is a complete patch. Thanks for checking it! Best regards, Qinwei Mail qinwei@sunnorth.com.cn Phone +86-010-62981668-2708 Fax +86-010-62985972 --=_mixed 002331794825723F_= Content-Type: application/octet-stream; name="score_gdb.patch" Content-Disposition: attachment; filename="score_gdb.patch" Content-Transfer-Encoding: base64 Content-length: 44498 ZGlmZiAtcnVOIGdkYi02LjYvZ2RiL0NoYW5nZUxvZyBnZGItNi42LXNjb3Jl L2dkYi9DaGFuZ2VMb2cKLS0tIGdkYi02LjYvZ2RiL0NoYW5nZUxvZwkyMDA2 LTEyLTA5IDA2OjA1OjM2LjAwMDAwMDAwMCArMDgwMAorKysgZ2RiLTYuNi1z Y29yZS9nZGIvQ2hhbmdlTG9nCTIwMDYtMTItMDkgMTQ6MDM6NTAuMDAwMDAw MDAwICswODAwCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDYtMTItMDkgIFFpbndl aSAgPHFpbndlaUBzdW5ub3J0aC5jb20uY24+CisKKwkqIE5FV1M6IE5ldyBw b3J0IHRvIFMrY29yZS4KKwkqIE1ha2VmaWxlLmluOiBBZGQgZGVwZW5kZW5j aWVzIGZvciBTK2NvcmUgZmlsZXMuCisJKiBjb25maWd1cmUudGd0IChzY29y ZSosIHNjb3JlLSotKik6IE5ldy4KKwkqIGNvbmZpZy9zY29yZS9lbWJlZC5t dDogTmV3IGZpbGUuCisJKiBzY29yZS10ZGVwLmg6IE5ldyBmaWxlLgorCSog c2NvcmUtdGRlcC5jOiBOZXcgZmlsZS4KKwogMjAwNi0xMi0wOSAgTmljayBS b2JlcnRzICA8bmlja3JvYkBzbmFwLm5ldC5uej4KIAogCSogdmFyb2JqLmMg KHZhcm9ial91cGRhdGUpOiBFbnN1cmUgZnJhbWUgaXMgcmVzdG9yZWQgd2hl bgpkaWZmIC1ydU4gZ2RiLTYuNi9nZGIvY29uZmlnL3Njb3JlL2VtYmVkLm10 IGdkYi02LjYtc2NvcmUvZ2RiL2NvbmZpZy9zY29yZS9lbWJlZC5tdAotLS0g Z2RiLTYuNi9nZGIvY29uZmlnL3Njb3JlL2VtYmVkLm10CTE5NzAtMDEtMDEg MDg6MDA6MDAuMDAwMDAwMDAwICswODAwCisrKyBnZGItNi42LXNjb3JlL2dk Yi9jb25maWcvc2NvcmUvZW1iZWQubXQJMjAwNi0xMi0wOSAxNDowMzo1MC4w MDAwMDAwMDAgKzA4MDAKQEAgLTAsMCArMSwyIEBACisjIFRhcmdldDogUytj b3JlIGVtYmVkZGVkIHN5c3RlbQorVERFUEZJTEVTPSBzY29yZS10ZGVwLm8g CmRpZmYgLXJ1TiBnZGItNi42L2dkYi9jb25maWd1cmUudGd0IGdkYi02LjYt c2NvcmUvZ2RiL2NvbmZpZ3VyZS50Z3QKLS0tIGdkYi02LjYvZ2RiL2NvbmZp Z3VyZS50Z3QJMjAwNi0xMS0yMyAwMTozNDoxNS4wMDAwMDAwMDAgKzA4MDAK KysrIGdkYi02LjYtc2NvcmUvZ2RiL2NvbmZpZ3VyZS50Z3QJMjAwNi0xMi0w OSAxNDowMzo1MC4wMDAwMDAwMDAgKzA4MDAKQEAgLTI0LDYgKzI0LDcgQEAK IHNwYXJjKikJCQlnZGJfdGFyZ2V0X2NwdT1zcGFyYyA7OwogdGh1bWIqKQkJ CWdkYl90YXJnZXRfY3B1PWFybSA7OwogczM5MCopCQkJZ2RiX3RhcmdldF9j cHU9czM5MCA7Oworc2NvcmUqKQkJCWdkYl90YXJnZXRfY3B1PXNjb3JlIDs7 CiBzaCopCQkJZ2RiX3RhcmdldF9jcHU9c2ggOzsKIHNwdSopCQkJZ2RiX3Rh cmdldF9jcHU9c3B1IDs7CiBzdHJvbmdhcm0qKQkJZ2RiX3RhcmdldF9jcHU9 YXJtIDs7CkBAIC0xNzksNiArMTgwLDcgQEAKIAkJCWJ1aWxkX2dkYnNlcnZl cj15ZXMKIAkJCTs7CiAKK3Njb3JlLSotKikJCWdkYl90YXJnZXQ9ZW1iZWQg OzsKIHNoKi0qLXBlKQkJZ2RiX3RhcmdldD13aW5jZSA7Owogc2gtKi1jb2Zm KikJCWdkYl90YXJnZXQ9ZW1iZWQgOzsKIHNoLSotZWxmKikJCWdkYl90YXJn ZXQ9ZW1iZWQgOzsKZGlmZiAtcnVOIGdkYi02LjYvZ2RiL01ha2VmaWxlLmlu IGdkYi02LjYtc2NvcmUvZ2RiL01ha2VmaWxlLmluCi0tLSBnZGItNi42L2dk Yi9NYWtlZmlsZS5pbgkyMDA2LTExLTI5IDA2OjE0OjMxLjAwMDAwMDAwMCAr MDgwMAorKysgZ2RiLTYuNi1zY29yZS9nZGIvTWFrZWZpbGUuaW4JMjAwNi0x Mi0wOSAxNDowMzo1MC4wMDAwMDAwMDAgKzA4MDAKQEAgLTc4Miw2ICs3ODIs NyBAQAogczM5MF90ZGVwX2ggPSBzMzkwLXRkZXAuaAogc2NtX2xhbmdfaCA9 IHNjbS1sYW5nLmggJChzY21fdGFnc19oKQogc2NtX3RhZ3NfaCA9IHNjbS10 YWdzLmgKK3Njb3JlX3RkZXBfaCA9IHNjb3JlLXRkZXAuaAogc2VudGluZWxf ZnJhbWVfaCA9IHNlbnRpbmVsLWZyYW1lLmgKIHNlcmlhbF9oID0gc2VyaWFs LmgKIHNlcl9iYXNlX2ggPSBzZXItYmFzZS5oCkBAIC0xNDkwLDYgKzE0OTEs NyBAQAogCXJlbW90ZS1zdC5jIHJlbW90ZS11dGlscy5jIGRjYWNoZS5jIFwK IAlyczYwMDAtbmF0LmMgcnM2MDAwLXRkZXAuYyBcCiAJczM5MC10ZGVwLmMg czM5MC1uYXQuYyBcCisJc2NvcmUtdGRlcC5jIFwKIAlzZXItZ28zMi5jIHNl ci1waXBlLmMgc2VyLXRjcC5jIHNlci1taW5ndy5jIFwKIAlzaC10ZGVwLmMg c2g2NC10ZGVwLmMgc2huYnNkLXRkZXAuYyBzaG5ic2QtbmF0LmMgXAogCXNv bDItdGRlcC5jIFwKQEAgLTI1ODAsNiArMjU4MiwxMCBAQAogc2NtLXZhbHBy aW50Lm86IHNjbS12YWxwcmludC5jICQoZGVmc19oKSAkKHN5bXRhYl9oKSAk KGdkYnR5cGVzX2gpIFwKIAkkKGV4cHJlc3Npb25faCkgJChwYXJzZXJfZGVm c19oKSAkKGxhbmd1YWdlX2gpICQodmFsdWVfaCkgXAogCSQoc2NtX2xhbmdf aCkgJCh2YWxwcmludF9oKSAkKGdkYmNvcmVfaCkgJChjX2xhbmdfaCkKK3Nj b3JlLXRkZXAubzogc2NvcmUtdGRlcC5jICQoZGVmc19oKSAkKGdkYl9hc3Nl cnRfaCkgJChpbmZlcmlvcl9oKSBcCisJJChzeW10YWJfaCkgJChvYmpmaWxl c19oKSAkKGdkYmNvcmVfaCkgJCh0YXJnZXRfaCkgXAorCSQoYXJjaF91dGls c19oKSAkKHJlZ2NhY2hlX2gpICQoZGlzX2FzbV9oKSAkKGZyYW1lX3Vud2lu ZF9oKSBcCisJJChmcmFtZV9iYXNlX2gpICQodHJhZF9mcmFtZV9oKSAkKGR3 YXJmMl9mcmFtZV9oKSAkKHNjb3JlX3RkZXBfaCkKIHNlbnRpbmVsLWZyYW1l Lm86IHNlbnRpbmVsLWZyYW1lLmMgJChkZWZzX2gpICQocmVnY2FjaGVfaCkg XAogCSQoc2VudGluZWxfZnJhbWVfaCkgJChpbmZlcmlvcl9oKSAkKGZyYW1l X3Vud2luZF9oKQogc2VyLWU3a3BjLm86IHNlci1lN2twYy5jICQoZGVmc19o KSAkKHNlcmlhbF9oKSAkKGdkYl9zdHJpbmdfaCkKZGlmZiAtcnVOIGdkYi02 LjYvZ2RiL3Njb3JlLXRkZXAuYyBnZGItNi42LXNjb3JlL2dkYi9zY29yZS10 ZGVwLmMKLS0tIGdkYi02LjYvZ2RiL3Njb3JlLXRkZXAuYwkxOTcwLTAxLTAx IDA4OjAwOjAwLjAwMDAwMDAwMCArMDgwMAorKysgZ2RiLTYuNi1zY29yZS9n ZGIvc2NvcmUtdGRlcC5jCTIwMDYtMTItMDkgMTQ6MDM6NTAuMDAwMDAwMDAw ICswODAwCkBAIC0wLDAgKzEsOTA1IEBACisvKiBUYXJnZXQtZGVwZW5kZW50 IGNvZGUgZm9yIHRoZSBTK2NvcmUgYXJjaGl0ZWN0dXJlLCBmb3IgR0RCLCB0 aGUgR05VIERlYnVnZ2VyLgorCisgICBDb3B5cmlnaHQgKEMpIDIwMDYKKyAg IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBDb250cmli dXRlZCBieSBRaW53ZWkgKHFpbndlaUBzdW5ub3J0aC5jb20uY24pCisgICBD b250cmlidXRlZCBieSBDaGluZy1QZW5nIExpbiAoY3BsaW5Ac3VucGx1cy5j b20pCisKKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKworICAgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv ZnR3YXJlCisgICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl ZXQsIEZpZnRoIEZsb29yLAorICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV U0EuICAqLworCisjaW5jbHVkZSAiZGVmcy5oIgorI2luY2x1ZGUgImdkYl9h c3NlcnQuaCIKKyNpbmNsdWRlICJpbmZlcmlvci5oIgorI2luY2x1ZGUgInN5 bXRhYi5oIgorI2luY2x1ZGUgIm9iamZpbGVzLmgiCisjaW5jbHVkZSAiZ2Ri Y29yZS5oIgorI2luY2x1ZGUgInRhcmdldC5oIgorI2luY2x1ZGUgImFyY2gt dXRpbHMuaCIKKyNpbmNsdWRlICJyZWdjYWNoZS5oIgorI2luY2x1ZGUgImRp cy1hc20uaCIKKyNpbmNsdWRlICJmcmFtZS11bndpbmQuaCIKKyNpbmNsdWRl ICJmcmFtZS1iYXNlLmgiCisjaW5jbHVkZSAidHJhZC1mcmFtZS5oIgorI2lu Y2x1ZGUgImR3YXJmMi1mcmFtZS5oIgorI2luY2x1ZGUgInNjb3JlLXRkZXAu aCIKKworI2RlZmluZSBHX0ZMRChfaSxfbXMsX2xzKSAgICgoKF9pKSA8PCAo MzEgLSAoX21zKSkpID4+ICgzMSAtIChfbXMpICsgKF9scykpKQorI2RlZmlu ZSBSTV9QQklUUyhfcmF3KSAgICAgICgoR19GTEQoX3JhdywgMzEsIDE2KSA8 PCAxNSkgfCBHX0ZMRChfcmF3LCAxNCwgMCkpCisKK3R5cGVkZWYgc3RydWN0 eworICAgIHVuc2lnbmVkIGludCB2OworICAgIHVuc2lnbmVkIGludCByYXc7 CisgICAgY2hhciAgICAgICAgIGlzMTU7Cit9aW5zdF90OworCitzdHJ1Y3Qg c2NvcmVfZnJhbWVfY2FjaGUKK3sKKyAgQ09SRV9BRERSIGJhc2U7CisgIHN0 cnVjdCB0cmFkX2ZyYW1lX3NhdmVkX3JlZyAqc2F2ZWRfcmVnczsKK307CisK KyNpZiAwCisvKiBJZiBTK2NvcmUgR0NDIHdpbGwgZ2VuZXJhdGUgdGhlc2Ug aW5zdHJ1Y3Rpb25zIGluIHRoZSBwcm9sb2d1ZToKKworICAgbHcgICByeCwg aW1tMQorICAgYWRkaSByeCwgLWltbTIKKyAgIG12ISAgcjIsIHJ4CisKKyAg IHRoZW4gLnBkciBzZWN0aW9uIGlzIHVzZWQuICAqLworCisjZGVmaW5lIFBf U0laRSAgICAgICAgICA4CisjZGVmaW5lIFBJX1NZTSAgICAgICAgICAwCisj ZGVmaW5lIFBJX1JfTVNLICAgICAgICAxCisjZGVmaW5lIFBJX1JfT0ZGICAg ICAgICAyCisjZGVmaW5lIFBJX1JfTEVGICAgICAgICA0CisjZGVmaW5lIFBJ X0ZfT0ZGICAgICAgICA1CisjZGVmaW5lIFBJX0ZfUkVHICAgICAgICA2Cisj ZGVmaW5lIFBJX1JBUkVHICAgICAgICA3CisKK3R5cGVkZWYgc3RydWN0IGZy YW1lX2V4dHJhX2luZm8KK3sKKyAgQ09SRV9BRERSIHBfZnJhbWU7CisgIHVu c2lnbmVkIGludCBwZHJbUF9TSVpFXTsKK30gZXh0cmFfaW5mb190OworCitz dHJ1Y3Qgb2JqX3ByaXYKK3sKKyAgYmZkX3NpemVfdHlwZSBzaXplOworICBj aGFyICpjb250ZW50czsKK307CisKK3N0YXRpYyBiZmQgKnRoZV9iZmQ7CisK K3N0YXRpYyBpbnQKK3Njb3JlX2NvbXBhcmVfcGRyX2VudHJpZXMgKGNvbnN0 IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCit7CisgIENPUkVfQUREUiBsaHMg PSBiZmRfZ2V0XzMyICh0aGVfYmZkLCAoYmZkX2J5dGUgKikgYSk7CisgIENP UkVfQUREUiByaHMgPSBiZmRfZ2V0XzMyICh0aGVfYmZkLCAoYmZkX2J5dGUg KikgYik7CisgIGlmIChsaHMgPCByaHMpCisgICAgcmV0dXJuIC0xOworICBl bHNlIGlmIChsaHMgPT0gcmhzKQorICAgIHJldHVybiAwOworICBlbHNlCisg ICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyB2b2lkCitzY29yZV9hbmFseXpl X3Bkcl9zZWN0aW9uIChDT1JFX0FERFIgc3RhcnRhZGRyLCBDT1JFX0FERFIg cGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZnJhbWVf aW5mbyAqbmV4dF9mcmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBzY29yZV9mcmFtZV9jYWNoZSAqdGhpc19jYWNoZSkKK3sKKyAg c3RydWN0IHN5bWJvbCAqc3ltOworICBzdHJ1Y3Qgb2JqX3NlY3Rpb24gKnNl YzsKKyAgZXh0cmFfaW5mb190ICpmY2lfZXh0OworICBDT1JFX0FERFIgbGVh Zl9yYV9zdGFja19hZGRyID0gLTE7CisKKyAgZ2RiX2Fzc2VydCAoc3RhcnRh ZGRyIDw9IHBjKTsKKyAgZ2RiX2Fzc2VydCAodGhpc19jYWNoZSAhPSBOVUxM KTsKKworICBmY2lfZXh0ID0gZnJhbWVfb2JzdGFja196YWxsb2MgKHNpemVv ZiAoZXh0cmFfaW5mb190KSk7CisgIGlmICgoc2VjID0gZmluZF9wY19zZWN0 aW9uIChwYykpID09IE5VTEwpCisgICAgeworICAgICAgZXJyb3IgKCJDYW4n dCBmaW5kIHNlY3Rpb24gaW4gZmlsZTolcywgbGluZTolZCEiLCBfX0ZJTEVf XywgX19MSU5FX18pOworICAgICAgcmV0dXJuOworICAgIH0KKworICAvKiBB bnlseXplIC5wZHIgc2VjdGlvbiBhbmQgZ2V0IGNvcmVzcG9uZGluZyBmaWVs ZHMuICAqLworICB7CisgICAgc3RhdGljIHN0cnVjdCBvYmpfcHJpdiAqcHJp diA9IE5VTEw7CisKKyAgICBpZiAocHJpdiA9PSBOVUxMKQorICAgICAgewor ICAgICAgICBhc2VjdGlvbiAqYmZkc2VjOworICAgICAgICBwcml2ID0gb2Jz dGFja19hbGxvYyAoJnNlYy0+b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mIChzdHJ1Y3Qg b2JqX3ByaXYpKTsKKyAgICAgICAgaWYgKChiZmRzZWMgPSBiZmRfZ2V0X3Nl Y3Rpb25fYnlfbmFtZSAoc2VjLT5vYmpmaWxlLT5vYmZkLCAiLnBkciIpKSkK KyAgICAgICAgICB7CisgICAgICAgICAgICBwcml2LT5zaXplID0gYmZkX3Nl Y3Rpb25fc2l6ZSAoc2VjLT5vYmpmaWxlLT5vYmZkLCBiZmRzZWMpOworICAg ICAgICAgICAgcHJpdi0+Y29udGVudHMgPSBvYnN0YWNrX2FsbG9jICgmc2Vj LT5vYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPnNpemUpOworICAg ICAgICAgICAgYmZkX2dldF9zZWN0aW9uX2NvbnRlbnRzIChzZWMtPm9iamZp bGUtPm9iZmQsIGJmZHNlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcHJpdi0+Y29udGVudHMsIDAsIHByaXYtPnNpemUpOwor ICAgICAgICAgICAgdGhlX2JmZCA9IHNlYy0+b2JqZmlsZS0+b2JmZDsKKyAg ICAgICAgICAgIHFzb3J0IChwcml2LT5jb250ZW50cywgcHJpdi0+c2l6ZSAv IDMyLCAzMiwKKyAgICAgICAgICAgICAgICAgICBzY29yZV9jb21wYXJlX3Bk cl9lbnRyaWVzKTsKKyAgICAgICAgICAgIHRoZV9iZmQgPSBOVUxMOworICAg ICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgIHByaXYtPnNpemUg PSAwOworICAgICAgfQorICAgIGlmIChwcml2LT5zaXplICE9IDApCisgICAg ICB7CisgICAgICAgIGludCBsb3cgPSAwLCBtaWQsIGhpZ2ggPSBwcml2LT5z aXplIC8gMzI7CisgICAgICAgIGNoYXIgKnB0cjsKKyAgICAgICAgZG8KKwor ICAgICAgICAgIHsKKyAgICAgICAgICAgIENPUkVfQUREUiBwZHJfcGM7Cisg ICAgICAgICAgICBtaWQgPSAobG93ICsgaGlnaCkgLyAyOworICAgICAgICAg ICAgcHRyID0gcHJpdi0+Y29udGVudHMgKyBtaWQgKiAzMjsKKyAgICAgICAg ICAgIHBkcl9wYyA9IGJmZF9nZXRfc2lnbmVkXzMyIChzZWMtPm9iamZpbGUt Pm9iZmQsIHB0cik7CisgICAgICAgICAgICBwZHJfcGMgKz0gQU5PRkZTRVQg KHNlYy0+b2JqZmlsZS0+c2VjdGlvbl9vZmZzZXRzLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBTRUNUX09GRl9URVhUIChzZWMtPm9iamZp bGUpKTsKKyAgICAgICAgICAgIGlmIChwZHJfcGMgPT0gc3RhcnRhZGRyKQor ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChwZHJfcGMg PiBzdGFydGFkZHIpCisgICAgICAgICAgICAgIGhpZ2ggPSBtaWQ7CisgICAg ICAgICAgICBlbHNlCisgICAgICAgICAgICAgIGxvdyA9IG1pZCArIDE7Cisg ICAgICAgICAgfQorICAgICAgICB3aGlsZSAobG93ICE9IGhpZ2gpOworCisg ICAgICAgIGlmIChsb3cgIT0gaGlnaCkKKyAgICAgICAgICB7CisgICAgICAg ICAgICBnZGJfYXNzZXJ0IChiZmRfZ2V0XzMyIChzZWMtPm9iamZpbGUtPm9i ZmQsIHB0cikgPT0gc3RhcnRhZGRyKTsKKyNkZWZpbmUgRVhUX1BEUihfcGkp ICAgIGJmZF9nZXRfMzIoc2VjLT5vYmpmaWxlLT5vYmZkLCBwdHIrKChfcGkp PDwyKSkKKyAgICAgICAgICAgIGZjaV9leHQtPnBkcltQSV9TWU1dID0gRVhU X1BEUiAoUElfU1lNKTsKKyAgICAgICAgICAgIGZjaV9leHQtPnBkcltQSV9S X01TS10gPSBFWFRfUERSIChQSV9SX01TSyk7CisgICAgICAgICAgICBmY2lf ZXh0LT5wZHJbUElfUl9PRkZdID0gRVhUX1BEUiAoUElfUl9PRkYpOworICAg ICAgICAgICAgZmNpX2V4dC0+cGRyW1BJX1JfTEVGXSA9IEVYVF9QRFIgKFBJ X1JfTEVGKTsKKyAgICAgICAgICAgIGZjaV9leHQtPnBkcltQSV9GX09GRl0g PSBFWFRfUERSIChQSV9GX09GRik7CisgICAgICAgICAgICBmY2lfZXh0LT5w ZHJbUElfRl9SRUddID0gRVhUX1BEUiAoUElfRl9SRUcpOworICAgICAgICAg ICAgZmNpX2V4dC0+cGRyW1BJX1JBUkVHXSA9IEVYVF9QRFIgKFBJX1JBUkVH KTsKKyN1bmRlZiBFWFRfUERSCisgICAgICAgICAgfQorICAgICAgfQorICB9 Cit9CisjZW5kaWYKKworc3RhdGljIHN0cnVjdCB0eXBlICoKK3Njb3JlX3Jl Z2lzdGVyX3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBpbnQgcmVn bnVtKQoreworICBnZGJfYXNzZXJ0IChyZWdudW0gPj0gMCAmJiByZWdudW0g PCBTQ09SRV9OVU1fUkVHUyk7CisgIHJldHVybiBidWlsdGluX3R5cGVfdWlu dDMyOworfQorCitzdGF0aWMgTE9OR0VTVAorc2NvcmVfcmVhZF91bnNpZ25l ZF9yZWdpc3RlciAoaW50IHJlZ251bSkKK3sKKyAgTE9OR0VTVCB2YWw7Cisg IHJlZ2NhY2hlX2Nvb2tlZF9yZWFkX3Vuc2lnbmVkIChjdXJyZW50X3JlZ2Nh Y2hlLCByZWdudW0sICZ2YWwpOworICByZXR1cm4gdmFsOworfQorCitzdGF0 aWMgQ09SRV9BRERSCitzY29yZV9yZWFkX3NwICh2b2lkKQoreworICByZXR1 cm4gc2NvcmVfcmVhZF91bnNpZ25lZF9yZWdpc3RlciAoU0NPUkVfU1BfUkVH TlVNKTsKK30KKworc3RhdGljIENPUkVfQUREUgorc2NvcmVfdW53aW5kX3Bj IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IGZyYW1lX2luZm8g Km5leHRfZnJhbWUpCit7CisgIHJldHVybiBmcmFtZV91bndpbmRfcmVnaXN0 ZXJfdW5zaWduZWQgKG5leHRfZnJhbWUsIFNDT1JFX1BDX1JFR05VTSk7Cit9 CisKK3N0YXRpYyBjb25zdCBjaGFyICoKK3Njb3JlX3JlZ2lzdGVyX25hbWUg KGludCByZWdudW0pCit7CisgIGNvbnN0IGNoYXIgKnNjb3JlX3JlZ2lzdGVy X25hbWVzW10gPSB7CisgICAgInIwIiwgICJyMSIsICAicjIiLCAgInIzIiwg ICJyNCIsICAicjUiLCAgInI2IiwgICJyNyIsCisgICAgInI4IiwgICJyOSIs ICAicjEwIiwgInIxMSIsICJyMTIiLCAicjEzIiwgInIxNCIsICJyMTUiLAor ICAgICJyMTYiLCAicjE3IiwgInIxOCIsICJyMTkiLCAicjIwIiwgInIyMSIs ICJyMjIiLCAicjIzIiwKKyAgICAicjI0IiwgInIyNSIsICJyMjYiLCAicjI3 IiwgInIyOCIsICJyMjkiLCAicjMwIiwgInIzMSIsCisKKyAgICAiUFNSIiwg ICAiQ09ORCIsICAgIkVDUiIsICAgICJFWENQVkVDIiwKKyAgICAiQ0NSIiwg ICAiRVBDIiwgICAgIkVNQSIsICAgICJUTEJMT0NLIiwKKyAgICAiVExCUFQi LCAiUEVBRERSIiwgIlRMQlJQVCIsICJQRVZOIiwKKyAgICAiUEVDVFgiLCAi TElNUEZOIiwgIkxETVBGTiIsICJQUkVWIiwKKyAgICAiRFJFRyIsICAiUEMi LCAgICAgIkRTQVZFIiwgICJDT1VOVEVSIiwKKyAgICAiTERDUiIsICAiU1RD UiIsICAgIkNFSCIsICAgICJDRUwiLAorICB9OworCisgIGdkYl9hc3NlcnQg KHJlZ251bSA+PSAwICYmIHJlZ251bSA8IFNDT1JFX05VTV9SRUdTKTsKKyAg cmV0dXJuIHNjb3JlX3JlZ2lzdGVyX25hbWVzW3JlZ251bV07Cit9CisKK3N0 YXRpYyBpbnQKK3Njb3JlX3JlZ2lzdGVyX3NpbV9yZWdubyAoaW50IHJlZ251 bSkKK3sKKyAgZ2RiX2Fzc2VydCAocmVnbnVtID49IDAgJiYgcmVnbnVtIDwg U0NPUkVfTlVNX1JFR1MpOworICByZXR1cm4gcmVnbnVtOworfQorCitzdGF0 aWMgaW50CitzY29yZV9wcmludF9pbnNuIChiZmRfdm1hIG1lbWFkZHIsIHN0 cnVjdCBkaXNhc3NlbWJsZV9pbmZvICppbmZvKQoreworICBpZiAoVEFSR0VU X0JZVEVfT1JERVIgPT0gQkZEX0VORElBTl9CSUcpCisgICAgcmV0dXJuIHBy aW50X2luc25fYmlnX3Njb3JlIChtZW1hZGRyLCBpbmZvKTsKKyAgZWxzZQor ICAgIHJldHVybiBwcmludF9pbnNuX2xpdHRsZV9zY29yZSAobWVtYWRkciwg aW5mbyk7Cit9CisKK3N0YXRpYyBjb25zdCBnZGJfYnl0ZSAqCitzY29yZV9i cmVha3BvaW50X2Zyb21fcGMgKENPUkVfQUREUiAqcGNwdHIsIGludCAqbGVu cHRyKQoreworICBnZGJfYnl0ZSBidWZbU0NPUkVfSU5TVExFTl0gPSB7IDAg fTsKKyAgaW50IHJldDsKKyAgdW5zaWduZWQgaW50IHJhdzsKKworICBpZiAo KHJldCA9IHRhcmdldF9yZWFkX21lbW9yeSAoKnBjcHRyICYgfjB4MywgYnVm LCBTQ09SRV9JTlNUTEVOKSkgIT0gMCkKKyAgICB7CisgICAgICBtZW1vcnlf ZXJyb3IgKHJldCwgKnBjcHRyKTsKKyAgICB9CisgIHJhdyA9IGV4dHJhY3Rf dW5zaWduZWRfaW50ZWdlciAoYnVmLCBTQ09SRV9JTlNUTEVOKTsKKworICBp ZiAoVEFSR0VUX0JZVEVfT1JERVIgPT0gQkZEX0VORElBTl9CSUcpCisgICAg eworICAgICAgaWYgKCEocmF3ICYgMHg4MDAwODAwMCkpCisgICAgICAgIHsK KyAgICAgICAgICAvKiAxNmJpdHMgaW5zdHJ1Y3Rpb24uICAqLworICAgICAg ICAgIHN0YXRpYyBnZGJfYnl0ZSBiaWdfYnJlYWtwb2ludDE2W10gPSB7IDB4 NjAsIDB4MDIgfTsKKyAgICAgICAgICAqcGNwdHIgJj0gfjB4MTsKKyAgICAg ICAgICAqbGVucHRyID0gc2l6ZW9mIChiaWdfYnJlYWtwb2ludDE2KTsKKyAg ICAgICAgICByZXR1cm4gYmlnX2JyZWFrcG9pbnQxNjsKKyAgICAgICAgfQor ICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgLyogMzJiaXRzIGlu c3RydWN0aW9uLiAgKi8KKyAgICAgICAgICBzdGF0aWMgZ2RiX2J5dGUgYmln X2JyZWFrcG9pbnQzMltdID0geyAweDgwLCAweDAwLCAweDgwLCAweDA2IH07 CisgICAgICAgICAgKnBjcHRyICY9IH4weDM7CisgICAgICAgICAgKmxlbnB0 ciA9IHNpemVvZiAoYmlnX2JyZWFrcG9pbnQzMik7CisgICAgICAgICAgcmV0 dXJuIGJpZ19icmVha3BvaW50MzI7CisgICAgICAgIH0KKyAgICB9CisgIGVs c2UKKyAgICB7CisgICAgICBpZiAoIShyYXcgJiAweDgwMDA4MDAwKSkKKyAg ICAgICAgeworICAgICAgICAgIC8qIDE2Yml0cyBpbnN0cnVjdGlvbi4gICov CisgICAgICAgICAgc3RhdGljIGdkYl9ieXRlIGxpdHRsZV9icmVha3BvaW50 MTZbXSA9IHsgMHgwMiwgMHg2MCB9OworICAgICAgICAgICpwY3B0ciAmPSB+ MHgxOworICAgICAgICAgICpsZW5wdHIgPSBzaXplb2YgKGxpdHRsZV9icmVh a3BvaW50MTYpOworICAgICAgICAgIHJldHVybiBsaXR0bGVfYnJlYWtwb2lu dDE2OworICAgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAg ICAgICAvKiAzMmJpdHMgaW5zdHJ1Y3Rpb24uICAqLworICAgICAgICAgIHN0 YXRpYyBnZGJfYnl0ZSBsaXR0bGVfYnJlYWtwb2ludDMyW10gPSB7IDB4MDYs IDB4ODAsIDB4MDAsIDB4ODAgfTsKKyAgICAgICAgICAqcGNwdHIgJj0gfjB4 MzsKKyAgICAgICAgICAqbGVucHRyID0gc2l6ZW9mIChsaXR0bGVfYnJlYWtw b2ludDMyKTsKKyAgICAgICAgICByZXR1cm4gbGl0dGxlX2JyZWFrcG9pbnQz MjsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIENPUkVfQUREUgor c2NvcmVfZnJhbWVfYWxpZ24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBD T1JFX0FERFIgYWRkcikKK3sKKyAgcmV0dXJuIGFsaWduX2Rvd24gKGFkZHIs IDE2KTsKK30KKworc3RhdGljIHZvaWQKK3Njb3JlX3hmZXJfcmVnaXN0ZXIg KHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdudW0sIGludCBs ZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICBlbnVtIGJmZF9lbmRpYW4g ZW5kaWFuLCBnZGJfYnl0ZSAqcmVhZGJ1ZiwKKyAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGdkYl9ieXRlICp3cml0ZWJ1ZiwgaW50IGJ1Zl9vZmZzZXQp Cit7CisgIGludCByZWdfb2Zmc2V0ID0gMDsKKyAgZ2RiX2Fzc2VydCAocmVn bnVtID49IDAgJiYgcmVnbnVtIDwgU0NPUkVfTlVNX1JFR1MpOworCisgIHN3 aXRjaCAoZW5kaWFuKQorICAgIHsKKyAgICBjYXNlIEJGRF9FTkRJQU5fQklH OgorICAgICAgcmVnX29mZnNldCA9IFNDT1JFX1JFR1NJWkUgLSBsZW5ndGg7 CisgICAgICBicmVhazsKKyAgICBjYXNlIEJGRF9FTkRJQU5fTElUVExFOgor ICAgICAgcmVnX29mZnNldCA9IDA7CisgICAgICBicmVhazsKKyAgICBjYXNl IEJGRF9FTkRJQU5fVU5LTk9XTjoKKyAgICAgIHJlZ19vZmZzZXQgPSAwOwor ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIGludGVybmFsX2Vy cm9yIChfX0ZJTEVfXywgX19MSU5FX18sIF8oInNjb3JlX3hmZXJfcmVnaXN0 ZXIgZXJyb3IhIikpOworICAgIH0KKworICBpZiAocmVhZGJ1ZiAhPSBOVUxM KQorICAgIHJlZ2NhY2hlX2Nvb2tlZF9yZWFkX3BhcnQgKHJlZ2NhY2hlLCBy ZWdudW0sIHJlZ19vZmZzZXQsIGxlbmd0aCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZWFkYnVmICsgYnVmX29mZnNldCk7CisgIGlmICh3 cml0ZWJ1ZiAhPSBOVUxMKQorICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV9w YXJ0IChyZWdjYWNoZSwgcmVnbnVtLCByZWdfb2Zmc2V0LCBsZW5ndGgsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlYnVmICsgYnVm X29mZnNldCk7Cit9CisKK3N0YXRpYyBlbnVtIHJldHVybl92YWx1ZV9jb252 ZW50aW9uCitzY29yZV9yZXR1cm5fdmFsdWUgKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKKyAgICAgICAgICAgICAgICAg ICAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKKyAgICAgICAgICAgICAg ICAgICAgZ2RiX2J5dGUgKiByZWFkYnVmLCBjb25zdCBnZGJfYnl0ZSAqIHdy aXRlYnVmKQoreworICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NP REVfU1RSVUNUCisgICAgICB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVf Q09ERV9VTklPTgorICAgICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBF X0NPREVfQVJSQVkpCisgICAgcmV0dXJuIFJFVFVSTl9WQUxVRV9TVFJVQ1Rf Q09OVkVOVElPTjsKKyAgZWxzZQorICAgIHsKKyAgICAgIGludCBvZmZzZXQ7 CisgICAgICBpbnQgcmVnbnVtOworICAgICAgZm9yIChvZmZzZXQgPSAwLCBy ZWdudW0gPSBTQ09SRV9BMF9SRUdOVU07CisgICAgICAgICAgIG9mZnNldCA8 IFRZUEVfTEVOR1RIICh0eXBlKTsKKyAgICAgICAgICAgb2Zmc2V0ICs9IFND T1JFX1JFR1NJWkUsIHJlZ251bSsrKQorICAgICAgICB7CisgICAgICAgICAg aW50IHhmZXIgPSBTQ09SRV9SRUdTSVpFOworICAgICAgICAgIGlmIChvZmZz ZXQgKyB4ZmVyID4gVFlQRV9MRU5HVEggKHR5cGUpKQorICAgICAgICAgICAg eGZlciA9IFRZUEVfTEVOR1RIICh0eXBlKSAtIG9mZnNldDsKKyAgICAgICAg ICBzY29yZV94ZmVyX3JlZ2lzdGVyIChyZWdjYWNoZSwgcmVnbnVtLCB4ZmVy LCBUQVJHRVRfQllURV9PUkRFUiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZWFkYnVmLCB3cml0ZWJ1Ziwgb2Zmc2V0KTsKKyAgICAgICAg fQorICAgICAgcmV0dXJuIFJFVFVSTl9WQUxVRV9SRUdJU1RFUl9DT05WRU5U SU9OOworICAgIH0KK30KKworc3RhdGljIHN0cnVjdCBmcmFtZV9pZAorc2Nv cmVfdW53aW5kX2R1bW15X2lkIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwg c3RydWN0IGZyYW1lX2luZm8gKm5leHRfZnJhbWUpCit7CisgIHJldHVybiBm cmFtZV9pZF9idWlsZCAoCisgICAgICAgICAgIGZyYW1lX3Vud2luZF9yZWdp c3Rlcl91bnNpZ25lZCAobmV4dF9mcmFtZSwgU0NPUkVfU1BfUkVHTlVNKSwK KyAgICAgICAgICAgZnJhbWVfcGNfdW53aW5kIChuZXh0X2ZyYW1lKSk7Cit9 CisKK3N0YXRpYyBpbnQKK3Njb3JlX3R5cGVfbmVlZHNfZG91YmxlX2FsaWdu IChzdHJ1Y3QgdHlwZSAqdHlwZSkKK3sKKyAgZW51bSB0eXBlX2NvZGUgdHlw ZWNvZGUgPSBUWVBFX0NPREUgKHR5cGUpOworCisgIGlmICh0eXBlY29kZSA9 PSBUWVBFX0NPREVfSU5UICYmIFRZUEVfTEVOR1RIICh0eXBlKSA9PSA4KQor ICAgIHJldHVybiAxOworICBpZiAodHlwZWNvZGUgPT0gVFlQRV9DT0RFX0ZM VCAmJiBUWVBFX0xFTkdUSCAodHlwZSkgPT0gOCkKKyAgICByZXR1cm4gMTsK KyAgZWxzZSBpZiAodHlwZWNvZGUgPT0gVFlQRV9DT0RFX1NUUlVDVCB8fCB0 eXBlY29kZSA9PSBUWVBFX0NPREVfVU5JT04pCisgICAgeworICAgICAgaW50 IGksIG47CisKKyAgICAgIG4gPSBUWVBFX05GSUVMRFMgKHR5cGUpOworICAg ICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKKyAgICAgICAgaWYgKHNjb3Jl X3R5cGVfbmVlZHNfZG91YmxlX2FsaWduIChUWVBFX0ZJRUxEX1RZUEUgKHR5 cGUsIGkpKSkKKyAgICAgICAgICByZXR1cm4gMTsKKyAgICAgIHJldHVybiAw OworICAgIH0KKyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBDT1JFX0FERFIK K3Njb3JlX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2gsIHN0cnVjdCB2YWx1ZSAqZnVuY3Rpb24sCisgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIENPUkVfQUREUiBi cF9hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmFyZ3MsIHN0 cnVjdCB2YWx1ZSAqKmFyZ3MsIENPUkVfQUREUiBzcCwKKyAgICAgICAgICAg ICAgICAgICAgICAgaW50IHN0cnVjdF9yZXR1cm4sIENPUkVfQUREUiBzdHJ1 Y3RfYWRkcikKK3sKKyAgaW50IGFyZ251bTsKKyAgaW50IGFyZ3JlZzsKKyAg aW50IGFyZ2xlbiA9IDA7CisgIENPUkVfQUREUiBzdGFja19vZmZzZXQgPSAw OworICBDT1JFX0FERFIgYWRkciA9IDA7CisKKyAgLyogU3RlcCAxLCBTYXZl IFJBLiAgKi8KKyAgcmVnY2FjaGVfY29va2VkX3dyaXRlX3Vuc2lnbmVkIChy ZWdjYWNoZSwgU0NPUkVfUkFfUkVHTlVNLCBicF9hZGRyKTsKKworICAvKiBT dGVwIDIsIE1ha2Ugc3BhY2Ugb24gdGhlIHN0YWNrIGZvciB0aGUgYXJncy4g ICovCisgIHN0cnVjdF9hZGRyID0gYWxpZ25fZG93biAoc3RydWN0X2FkZHIs IDE2KTsKKyAgc3AgPSBhbGlnbl9kb3duIChzcCwgMTYpOworICBmb3IgKGFy Z251bSA9IDA7IGFyZ251bSA8IG5hcmdzOyBhcmdudW0rKykKKyAgICBhcmds ZW4gKz0gYWxpZ25fdXAgKFRZUEVfTEVOR1RIICh2YWx1ZV90eXBlIChhcmdz W2FyZ251bV0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFNDT1JFX1JF R1NJWkUpOworICBzcCAtPSBhbGlnbl91cCAoYXJnbGVuLCAxNik7CisKKyAg YXJncmVnID0gU0NPUkVfQkVHSU5fQVJHX1JFR05VTTsKKworICAvKiBTdGVw IDMsIENoZWNrIGlmIHN0cnVjdCByZXR1cm4gdGhlbiBzYXZlIHRoZSBzdHJ1 Y3QgYWRkcmVzcyB0byByNCBhbmQKKyAgICAgaW5jcmVhc2UgdGhlIHN0YWNr X29mZnNldCBieSA0LiAgKi8KKyAgaWYgKHN0cnVjdF9yZXR1cm4pCisgICAg eworICAgICAgcmVnY2FjaGVfY29va2VkX3dyaXRlX3Vuc2lnbmVkIChyZWdj YWNoZSwgYXJncmVnKyssIHN0cnVjdF9hZGRyKTsKKyAgICAgIHN0YWNrX29m ZnNldCArPSBTQ09SRV9SRUdTSVpFOworICAgIH0KKworICAvKiBTdGVwIDQs IExvYWQgYXJndW1lbnRzOgorICAgICBJZiBhcmcgbGVuZ3RoIGlzIHRvbyBs b25nICg+IDQgYnl0ZXMpLAorICAgICB0aGVuIHNwbGl0IHRoZSBhcmcgYW5k IHNhdmUgZXZlcnkgcGFydHMuICAqLworICBmb3IgKGFyZ251bSA9IDA7IGFy Z251bSA8IG5hcmdzOyBhcmdudW0rKykKKyAgICB7CisgICAgICBzdHJ1Y3Qg dmFsdWUgKmFyZyA9IGFyZ3NbYXJnbnVtXTsKKyAgICAgIHN0cnVjdCB0eXBl ICphcmdfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZykp OworICAgICAgYXJnbGVuID0gVFlQRV9MRU5HVEggKGFyZ190eXBlKTsKKyAg ICAgIGVudW0gdHlwZV9jb2RlIHR5cGVjb2RlID0gVFlQRV9DT0RFIChhcmdf dHlwZSk7CisgICAgICBjb25zdCBnZGJfYnl0ZSAqdmFsID0gdmFsdWVfY29u dGVudHMgKGFyZyk7CisgICAgICBpbnQgZG93bndhcmRfb2Zmc2V0ID0gMDsK KworICAgICAgaW50IG9kZF9zaXplZF9zdHJ1Y3RfcCA9IChhcmdsZW4gPiBT Q09SRV9SRUdTSVpFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICYmIGFyZ2xlbiAlIFNDT1JFX1JFR1NJWkUgIT0gMCk7CisgICAgICBpbnQg YXJnX2xhc3RfcGFydF9wID0gMDsKKworICAgICAgLyogSWYgYSBhcmcgc2hv dWxkIGJlIGFsaWduZWQgdG8gOCBieXRlcyAobG9uZyBsb25nIG9yIGRvdWJs ZSksCisgICAgICAgICB0aGUgdmFsdWUgc2hvdWxkIGJlIHB1dCB0byBldmVu IHJlZ2lzdGVyIG51bWJlcnMuICAqLworICAgICAgaWYgKHNjb3JlX3R5cGVf bmVlZHNfZG91YmxlX2FsaWduIChhcmdfdHlwZSkpCisgICAgICAgIHsKKyAg ICAgICAgICBpZiAoYXJncmVnICYgMSkKKyAgICAgICAgICAgIGFyZ3JlZysr OworICAgICAgICB9CisKKyAgICAgIC8qIElmIHNpemVvZiBhIGJsb2NrIDwg U0NPUkVfUkVHU0laRSwgdGhlbiBTY29yZSBHQ0Mgd2lsbCBjaG9zZQorICAg ICAgICAgdGhlIGRlZmF1bHQgImRvd253YXJkIi8idXB3YXJkIiBtZXRob2Q6 CisKKyAgICAgICAgIEV4YW1wbGU6CisKKyAgICAgICAgIHN0cnVjdCBzdHJ1 YworICAgICAgICAgeworICAgICAgICAgICBjaGFyIGE7IGNoYXIgYjsgY2hh ciBjOworICAgICAgICAgfSBzID0geydhJywgJ2InLCAnYyd9OworCisgICAg ICAgICBCaWcgZW5kaWFuOiAgICBzID0ge1gsICdhJywgJ2InLCAnYyd9Cisg ICAgICAgICBMaXR0bGUgZW5kaWFuOiBzID0geydhJywgJ2InLCAnYycsIFh9 CisKKyAgICAgICAgIFdoZXJlIFggaXMgYSBob2xlLiAgKi8KKworICAgICAg aWYgKFRBUkdFVF9CWVRFX09SREVSID09IEJGRF9FTkRJQU5fQklHCisgICAg ICAgICAgJiYgKHR5cGVjb2RlID09IFRZUEVfQ09ERV9TVFJVQ1QKKyAgICAg ICAgICAgICAgfHwgdHlwZWNvZGUgPT0gVFlQRV9DT0RFX1VOSU9OKQorICAg ICAgICAgICYmIGFyZ3JlZyA+IFNDT1JFX0xBU1RfQVJHX1JFR05VTQorICAg ICAgICAgICYmIGFyZ2xlbiA8IFNDT1JFX1JFR1NJWkUpCisgICAgICAgIGRv d253YXJkX29mZnNldCArPSAoU0NPUkVfUkVHU0laRSAtIGFyZ2xlbik7CisK KyAgICAgIHdoaWxlIChhcmdsZW4gPiAwKQorICAgICAgICB7CisgICAgICAg ICAgaW50IHBhcnRpYWxfbGVuID0gYXJnbGVuIDwgU0NPUkVfUkVHU0laRSA/ IGFyZ2xlbiA6IFNDT1JFX1JFR1NJWkU7CisgICAgICAgICAgVUxPTkdFU1Qg cmVndmFsID0gZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2VyICh2YWwsIHBhcnRp YWxfbGVuKTsKKworICAgICAgICAgIC8qIFRoZSBsYXN0IHBhcnQgb2YgYSBh cmcgc2hvdWxkIHNoaWZ0IGxlZnQgd2hlbgorICAgICAgICAgICAgIFRBUkdF VF9CWVRFX09SREVSIGlzIEJGRF9FTkRJQU5fQklHLiAgKi8KKyAgICAgICAg ICBpZiAoVEFSR0VUX0JZVEVfT1JERVIgPT0gQkZEX0VORElBTl9CSUcKKyAg ICAgICAgICAgICAgJiYgYXJnX2xhc3RfcGFydF9wID09IDEKKyAgICAgICAg ICAgICAgJiYgKHR5cGVjb2RlID09IFRZUEVfQ09ERV9TVFJVQ1QKKyAgICAg ICAgICAgICAgICAgIHx8IHR5cGVjb2RlID09IFRZUEVfQ09ERV9VTklPTikp CisgICAgICAgICAgICByZWd2YWwgPDw9ICgoU0NPUkVfUkVHU0laRSAtIHBh cnRpYWxfbGVuKSAqIFRBUkdFVF9DSEFSX0JJVCk7CisKKyAgICAgICAgICAv KiBBbHdheXMgaW5jcmVhc2UgdGhlIHN0YWNrX29mZnNldCBhbmQgc2F2ZSBh cmdzIHRvIHN0YWNrLiAgKi8KKyAgICAgICAgICBhZGRyID0gc3AgKyBzdGFj a19vZmZzZXQgKyBkb3dud2FyZF9vZmZzZXQ7CisgICAgICAgICAgd3JpdGVf bWVtb3J5IChhZGRyLCB2YWwsIHBhcnRpYWxfbGVuKTsKKworICAgICAgICAg IGlmIChhcmdyZWcgPD0gU0NPUkVfTEFTVF9BUkdfUkVHTlVNKQorICAgICAg ICAgICAgeworICAgICAgICAgICAgICByZWdjYWNoZV9jb29rZWRfd3JpdGVf dW5zaWduZWQgKHJlZ2NhY2hlLCBhcmdyZWcrKywgcmVndmFsKTsKKyAgICAg ICAgICAgICAgaWYgKGFyZ2xlbiA+IFNDT1JFX1JFR1NJWkUgJiYgYXJnbGVu IDwgU0NPUkVfUkVHU0laRSAqIDIpCisgICAgICAgICAgICAgICAgYXJnX2xh c3RfcGFydF9wID0gMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgIHZh bCArPSBwYXJ0aWFsX2xlbjsKKyAgICAgICAgICBhcmdsZW4gLT0gcGFydGlh bF9sZW47CisgICAgICAgICAgc3RhY2tfb2Zmc2V0ICs9IGFsaWduX3VwIChw YXJ0aWFsX2xlbiwgU0NPUkVfUkVHU0laRSk7CisgICAgICAgIH0KKyAgICB9 CisKKyAgLyogU3RlcCA1LCBTYXZlIFNQLiAgKi8KKyAgcmVnY2FjaGVfY29v a2VkX3dyaXRlX3Vuc2lnbmVkIChyZWdjYWNoZSwgU0NPUkVfU1BfUkVHTlVN LCBzcCk7CisKKyAgcmV0dXJuIHNwOworfQorCitzdGF0aWMgaW5zdF90ICoK K3Njb3JlX2ZldGNoX2luc3RydWN0aW9uIChDT1JFX0FERFIgYWRkcikKK3sK KyAgc3RhdGljIGluc3RfdCBpbnN0ID0geyAwLCAwIH07CisgIGNoYXIgYnVm W1NDT1JFX0lOU1RMRU5dOworICBpbnQgYmlnOworICBpbnQgcmV0ID0gdGFy Z2V0X3JlYWRfbWVtb3J5IChhZGRyICYgfjB4MywgYnVmLCBTQ09SRV9JTlNU TEVOKTsKKyAgdW5zaWduZWQgaW50IHJhdzsKKworICBpZiAocmV0KQorICAg IHsKKyAgICAgIG1lbW9yeV9lcnJvciAocmV0LCBhZGRyKTsKKyAgICAgIHJl dHVybiAwOworICAgIH0KKyAgaW5zdC5yYXcgPSBleHRyYWN0X3Vuc2lnbmVk X2ludGVnZXIgKGJ1ZiwgU0NPUkVfSU5TVExFTik7CisgIGluc3QuaXMxNSA9 ICEoaW5zdC5yYXcgJiAweDgwMDA4MDAwKTsKKyAgaW5zdC52ID0gUk1fUEJJ VFMgKGluc3QucmF3KTsKKyAgYmlnID0gKFRBUkdFVF9CWVRFX09SREVSID09 IEJGRF9FTkRJQU5fQklHKTsKKworICBpZiAoaW5zdC5pczE1KQorICAgIHsK KyAgICAgIGlmIChiaWcgXiAoKGFkZHIgJiAweDIpID09IDIpKQorICAgICAg ICBpbnN0LnYgPSBHX0ZMRCAoaW5zdC52LCAyOSwgMTUpOworICAgICAgZWxz ZQorICAgICAgICBpbnN0LnYgPSBHX0ZMRCAoaW5zdC52LCAxNCwgMCk7Cisg ICAgfQorICByZXR1cm4gJmluc3Q7Cit9CisKK3N0YXRpYyBDT1JFX0FERFIK K3Njb3JlX3NraXBfcHJvbG9ndWUgKENPUkVfQUREUiBwYykKK3sKKyAgQ09S RV9BRERSIGNwYyA9IHBjOworICBpbnQgaXNjYW4gPSAzMiwgc3RhY2tfc3Vi ID0gMDsKKyAgd2hpbGUgKGlzY2FuLS0gPiAwKQorICAgIHsKKyAgICAgIGlu c3RfdCAqaW5zdCA9IHNjb3JlX2ZldGNoX2luc3RydWN0aW9uIChjcGMpOwor ICAgICAgaWYgKCFpbnN0KQorICAgICAgICBicmVhazsKKyAgICAgIGlmICgh aW5zdC0+aXMxNSAmJiAhc3RhY2tfc3ViCisgICAgICAgICAgJiYgKEdfRkxE IChpbnN0LT52LCAyOSwgMjUpID09IDB4MQorICAgICAgICAgICAgICAmJiBH X0ZMRCAoaW5zdC0+diwgMjQsIDIwKSA9PSAweDApKQorICAgICAgICB7Cisg ICAgICAgICAgLyogYWRkaSByMCwgb2Zmc2V0ICovCisgICAgICAgICAgcGMg PSBzdGFja19zdWIgPSBjcGMgKyBTQ09SRV9JTlNUTEVOOworICAgICAgICB9 CisgICAgICBlbHNlIGlmICghaW5zdC0+aXMxNQorICAgICAgICAgICAgICAg JiYgaW5zdC0+diA9PSBSTV9QQklUUyAoMHg4MDQwYmM1NikpCisgICAgICAg IHsKKyAgICAgICAgICAvKiBtdiByMiwgcjAgICovCisgICAgICAgICAgcGMg PSBjcGMgKyBTQ09SRV9JTlNUTEVOOworICAgICAgICAgIGJyZWFrOworICAg ICAgICB9CisgICAgICBlbHNlIGlmIChpbnN0LT5pczE1CisgICAgICAgICAg ICAgICAmJiBpbnN0LT52ID09IFJNX1BCSVRTICgweDAyMDMpKQorICAgICAg ICB7CisgICAgICAgICAgLyogbXYhIHIyLCByMCAqLworICAgICAgICAgIHBj ID0gY3BjICsgU0NPUkUxNl9JTlNUTEVOOworICAgICAgICAgIGJyZWFrOwor ICAgICAgICB9CisgICAgICBlbHNlIGlmIChpbnN0LT5pczE1CisgICAgICAg ICAgICAgICAmJiAoKEdfRkxEIChpbnN0LT52LCAxNCwgMTIpID09IDMpICAg IC8qIGoxNSBmb3JtICovCisgICAgICAgICAgICAgICAgICAgfHwgKEdfRkxE IChpbnN0LT52LCAxNCwgMTIpID09IDQpIC8qIGIxNSBmb3JtICovCisgICAg ICAgICAgICAgICAgICAgfHwgKEdfRkxEIChpbnN0LT52LCAxNCwgMTIpID09 IDB4MAorICAgICAgICAgICAgICAgICAgICAgICAmJiBHX0ZMRCAoaW5zdC0+ diwgMywgMCkgPT0gMHg0KSkpIC8qIGJyISAqLworICAgICAgICBicmVhazsK KyAgICAgIGVsc2UgaWYgKCFpbnN0LT5pczE1CisgICAgICAgICAgICAgICAm JiAoKEdfRkxEIChpbnN0LT52LCAyOSwgMjUpID09IDIpICAgIC8qIGozMiBm b3JtICovCisgICAgICAgICAgICAgICAgICAgfHwgKEdfRkxEIChpbnN0LT52 LCAyOSwgMjUpID09IDQpIC8qIGIzMiBmb3JtICovCisgICAgICAgICAgICAg ICAgICAgfHwgKEdfRkxEIChpbnN0LT52LCAyOSwgMjUpID09IDB4MAorICAg ICAgICAgICAgICAgICAgICAgICAmJiBHX0ZMRCAoaW5zdC0+diwgNiwgMSkg PT0gMHg0KSkpICAvKiBiciAqLworICAgICAgICBicmVhazsKKworICAgICAg Y3BjICs9IGluc3QtPmlzMTUgPyBTQ09SRTE2X0lOU1RMRU4gOiBTQ09SRV9J TlNUTEVOOworICAgIH0KKyAgcmV0dXJuIHBjOworfQorCitzdGF0aWMgaW50 CitzY29yZV9pbl9mdW5jdGlvbl9lcGlsb2d1ZV9wIChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCwgQ09SRV9BRERSIGN1cl9wYykKK3sKKyAgaW5zdF90ICpp bnN0ID0gc2NvcmVfZmV0Y2hfaW5zdHJ1Y3Rpb24gKGN1cl9wYyk7CisKKyAg aWYgKGluc3QtPnYgPT0gMHgyMykKKyAgICByZXR1cm4gMTsgICAvKiBtdiEg cjAsIHIyICovCisgIGVsc2UgaWYgKEdfRkxEIChpbnN0LT52LCAxNCwgMTIp ID09IDB4MgorICAgICAgICAgICAmJiBHX0ZMRCAoaW5zdC0+diwgMywgMCkg PT0gMHhhKQorICAgIHJldHVybiAxOyAgIC8qIHBvcCEgKi8KKyAgZWxzZSBp ZiAoR19GTEQgKGluc3QtPnYsIDE0LCAxMikgPT0gMHgwCisgICAgICAgICAg ICYmIEdfRkxEIChpbnN0LT52LCA3LCAwKSA9PSAweDM0KQorICAgIHJldHVy biAxOyAgIC8qIGJyISByMyAqLworICBlbHNlIGlmIChHX0ZMRCAoaW5zdC0+ diwgMjksIDE1KSA9PSAweDIKKyAgICAgICAgICAgJiYgR19GTEQgKGluc3Qt PnYsIDYsIDEpID09IDB4MmIpCisgICAgcmV0dXJuIDE7ICAgLyogbXYgcjAs IHIyICovCisgIGVsc2UgaWYgKEdfRkxEIChpbnN0LT52LCAyOSwgMjUpID09 IDB4MAorICAgICAgICAgICAmJiBHX0ZMRCAoaW5zdC0+diwgNiwgMSkgPT0g MHg0CisgICAgICAgICAgICYmIEdfRkxEIChpbnN0LT52LCAxOSwgMTUpID09 IDB4MykKKyAgICByZXR1cm4gMTsgICAvKiBiciByMyAqLworICBlbHNlCisg ICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitzY29yZV9hbmFseXpl X3Byb2xvZ3VlIChDT1JFX0FERFIgc3RhcnRhZGRyLCBDT1JFX0FERFIgcGMs CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAq bmV4dF9mcmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBz Y29yZV9mcmFtZV9jYWNoZSAqdGhpc19jYWNoZSkKK3sKKyAgQ09SRV9BRERS IHNwOworICBDT1JFX0FERFIgY3VyX3BjID0gc3RhcnRhZGRyOworCisgIGlu dCBzcF9vZmZzZXQgPSAwOworICBpbnQgcmFfb2Zmc2V0ID0gMDsKKyAgaW50 IGZwX29mZnNldCA9IDA7CisgIGludCByYV9vZmZzZXRfcCA9IDA7CisgIGlu dCBmcF9vZmZzZXRfcCA9IDA7CisgIGludCBpbnN0X2xlbiA9IDA7CisKKyAg c3AgPSBmcmFtZV91bndpbmRfcmVnaXN0ZXJfdW5zaWduZWQgKG5leHRfZnJh bWUsIFNDT1JFX1NQX1JFR05VTSk7CisKKyAgZm9yICg7IGN1cl9wYyA8IHBj OyBjdXJfcGMgKz0gaW5zdF9sZW4pCisgICAgeworICAgICAgaW5zdF90ICpp bnN0ID0gc2NvcmVfZmV0Y2hfaW5zdHJ1Y3Rpb24gKGN1cl9wYyk7CisgICAg ICBpZiAoaW5zdC0+aXMxNSA9PSAxKQorICAgICAgICB7CisgICAgICAgICAg aW5zdF9sZW4gPSBTQ09SRTE2X0lOU1RMRU47CisKKyAgICAgICAgICBpZiAo R19GTEQgKGluc3QtPnYsIDE0LCAxMikgPT0gMHgyCisgICAgICAgICAgICAg ICYmIEdfRkxEIChpbnN0LT52LCAzLCAwKSA9PSAweGUpCisgICAgICAgICAg ICB7CisgICAgICAgICAgICAgIC8qIHB1c2ghICovCisgICAgICAgICAgICAg IHNwX29mZnNldCArPSA0OworCisgICAgICAgICAgICAgIGlmIChHX0ZMRCAo aW5zdC0+diwgMTEsIDcpID09IDB4NgorICAgICAgICAgICAgICAgICAgJiYg cmFfb2Zmc2V0X3AgPT0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAg ICAgICAgICAgICAvKiBwdXNoISByMywgW3IwXSAqLworICAgICAgICAgICAg ICAgICAgcmFfb2Zmc2V0ID0gc3Bfb2Zmc2V0OworICAgICAgICAgICAgICAg ICAgcmFfb2Zmc2V0X3AgPSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgZWxzZSBpZiAoR19GTEQgKGluc3QtPnYsIDExLCA3KSA9PSAw eDQKKyAgICAgICAgICAgICAgICAgICAgICAgJiYgZnBfb2Zmc2V0X3AgPT0g MCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAvKiBw dXNoISByMiwgW3IwXSAqLworICAgICAgICAgICAgICAgICAgZnBfb2Zmc2V0 ID0gc3Bfb2Zmc2V0OworICAgICAgICAgICAgICAgICAgZnBfb2Zmc2V0X3Ag PSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg ICAgICBlbHNlIGlmIChHX0ZMRCAoaW5zdC0+diwgMTQsIDEyKSA9PSAweDIK KyAgICAgICAgICAgICAgICAgICAmJiBHX0ZMRCAoaW5zdC0+diwgMywgMCkg PT0gMHhhKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAvKiBwb3Ah ICovCisgICAgICAgICAgICAgIHNwX29mZnNldCAtPSA0OworICAgICAgICAg ICAgfQorICAgICAgICAgIGVsc2UgaWYgKEdfRkxEIChpbnN0LT52LCAxNCwg NykgPT0gMHhjMQorICAgICAgICAgICAgICAgICAgICYmIEdfRkxEIChpbnN0 LT52LCAyLCAwKSA9PSAweDApCisgICAgICAgICAgICB7CisgICAgICAgICAg ICAgIC8qIHN1YmVpISByMCwgbiAqLworICAgICAgICAgICAgICBzcF9vZmZz ZXQgKz0gKGludCkgcG93ICgyLCBHX0ZMRCAoaW5zdC0+diwgNiwgMykpOwor ICAgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKEdfRkxEIChpbnN0 LT52LCAxNCwgNykgPT0gMHhjMAorICAgICAgICAgICAgICAgICAgICYmIEdf RkxEIChpbnN0LT52LCAyLCAwKSA9PSAweDApCisgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgIC8qIGFkZGVpISByMCwgbiAqLworICAgICAgICAgICAg ICBzcF9vZmZzZXQgLT0gKGludCkgcG93ICgyLCBHX0ZMRCAoaW5zdC0+diwg NiwgMykpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICBlbHNl CisgICAgICAgIHsKKyAgICAgICAgICBpbnN0X2xlbiA9IFNDT1JFX0lOU1RM RU47CisKKyAgICAgICAgICBpZiAoR19GTEQgKGluc3QtPnYsIDI5LCAxNSkg PT0gMHhjNjAKKyAgICAgICAgICAgICAgJiYgR19GTEQgKGluc3QtPnYsIDIs IDApID09IDB4NCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgLyog c3cgcjMsIFtyMCwgb2Zmc2V0XSsgKi8KKyAgICAgICAgICAgICAgc3Bfb2Zm c2V0ICs9IFNDT1JFX0lOU1RMRU47CisgICAgICAgICAgICAgIGlmIChyYV9v ZmZzZXRfcCA9PSAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICAgIHJhX29mZnNldCA9IHNwX29mZnNldDsKKyAgICAgICAgICAgICAg ICAgIHJhX29mZnNldF9wID0gMTsKKyAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICB9CisgICAgICAgICAgaWYgKEdfRkxEIChpbnN0LT52LCAyOSwg MTUpID09IDB4YzQwCisgICAgICAgICAgICAgICYmIEdfRkxEIChpbnN0LT52 LCAyLCAwKSA9PSAweDQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg IC8qIHN3IHIyLCBbcjAsIG9mZnNldF0rICovCisgICAgICAgICAgICAgIHNw X29mZnNldCArPSBTQ09SRV9JTlNUTEVOOworICAgICAgICAgICAgICBpZiAo ZnBfb2Zmc2V0X3AgPT0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAg ICAgICAgICAgICBmcF9vZmZzZXQgPSBzcF9vZmZzZXQ7CisgICAgICAgICAg ICAgICAgICBmcF9vZmZzZXRfcCA9IDE7CisgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKEdfRkxEIChpbnN0 LT52LCAyOSwgMTUpID09IDB4MWM2MAorICAgICAgICAgICAgICAgICAgICYm IEdfRkxEIChpbnN0LT52LCAyLCAwKSA9PSAweDApCisgICAgICAgICAgICB7 CisgICAgICAgICAgICAgIC8qIGx3IHIzLCBbcjBdKywgNCAqLworICAgICAg ICAgICAgICBzcF9vZmZzZXQgLT0gU0NPUkVfSU5TVExFTjsKKyAgICAgICAg ICAgICAgcmFfb2Zmc2V0X3AgPSAxOworICAgICAgICAgICAgfQorICAgICAg ICAgIGVsc2UgaWYgKEdfRkxEIChpbnN0LT52LCAyOSwgMTUpID09IDB4MWM0 MAorICAgICAgICAgICAgICAgICAgICYmIEdfRkxEIChpbnN0LT52LCAyLCAw KSA9PSAweDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIC8qIGx3 IHIyLCBbcjBdKywgNCAqLworICAgICAgICAgICAgICBzcF9vZmZzZXQgLT0g U0NPUkVfSU5TVExFTjsKKyAgICAgICAgICAgICAgZnBfb2Zmc2V0X3AgPSAx OworICAgICAgICAgICAgfQorCisgICAgICAgICAgZWxzZSBpZiAoR19GTEQg KGluc3QtPnYsIDI5LCAxNykgPT0gMHgxMDAKKyAgICAgICAgICAgICAgICAg ICAmJiBHX0ZMRCAoaW5zdC0+diwgMCwgMCkgPT0gMHgwKQorICAgICAgICAg ICAgeworICAgICAgICAgICAgICAvKiBhZGRpIHIwLCAtb2Zmc2V0ICovCisg ICAgICAgICAgICAgIHNwX29mZnNldCArPSA2NTUzNiAtIEdfRkxEIChpbnN0 LT52LCAxNiwgMSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBp ZiAoR19GTEQgKGluc3QtPnYsIDI5LCAxNykgPT0gMHgxMTAKKyAgICAgICAg ICAgICAgICAgICAmJiBHX0ZMRCAoaW5zdC0+diwgMCwgMCkgPT0gMHgwKQor ICAgICAgICAgICAgeworICAgICAgICAgICAgICAvKiBhZGRpIHIyLCBvZmZz ZXQgKi8KKyAgICAgICAgICAgICAgaWYgKHBjIC0gY3VyX3BjID4gNCkKKyAg ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgc2F2ZV92ID0gaW5zdC0+djsKKyAgICAgICAgICAgICAgICAgIGluc3Rf dCAqaW5zdDIgPQorICAgICAgICAgICAgICAgICAgICBzY29yZV9mZXRjaF9p bnN0cnVjdGlvbiAoY3VyX3BjICsgU0NPUkVfSU5TVExFTik7CisgICAgICAg ICAgICAgICAgICBpZiAoaW5zdDItPnYgPT0gMHgyMykKKyAgICAgICAgICAg ICAgICAgICAgLyogbXYhIHIwLCByMiAqLworICAgICAgICAgICAgICAgICAg ICBzcF9vZmZzZXQgLT0gR19GTEQgKHNhdmVfdiwgMTYsIDEpOworICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K KworICAvKiBTYXZlIFJBLiAgKi8KKyAgaWYgKHJhX29mZnNldF9wID09IDEp CisgICAgeworICAgICAgaWYgKHRoaXNfY2FjaGUtPnNhdmVkX3JlZ3NbU0NP UkVfUENfUkVHTlVNXS5hZGRyID09IC0xKQorICAgICAgICB0aGlzX2NhY2hl LT5zYXZlZF9yZWdzW1NDT1JFX1BDX1JFR05VTV0uYWRkciA9CisgICAgICAg ICAgc3AgKyBzcF9vZmZzZXQgLSByYV9vZmZzZXQ7CisgICAgfQorICBlbHNl CisgICAgeworICAgICAgdGhpc19jYWNoZS0+c2F2ZWRfcmVnc1tTQ09SRV9Q Q19SRUdOVU1dID0KKyAgICAgICAgdGhpc19jYWNoZS0+c2F2ZWRfcmVnc1tT Q09SRV9SQV9SRUdOVU1dOworICAgIH0KKworICAvKiBTYXZlIEZQLiAgKi8K KyAgaWYgKGZwX29mZnNldF9wID09IDEpCisgICAgeworICAgICAgaWYgKHRo aXNfY2FjaGUtPnNhdmVkX3JlZ3NbU0NPUkVfRlBfUkVHTlVNXS5hZGRyID09 IC0xKQorICAgICAgICB0aGlzX2NhY2hlLT5zYXZlZF9yZWdzW1NDT1JFX0ZQ X1JFR05VTV0uYWRkciA9CisgICAgICAgICAgc3AgKyBzcF9vZmZzZXQgLSBm cF9vZmZzZXQ7CisgICAgfQorCisgIC8qIFNhdmUgU1AuICAqLworICB0aGlz X2NhY2hlLT5iYXNlID0KKyAgICBmcmFtZV91bndpbmRfcmVnaXN0ZXJfdW5z aWduZWQgKG5leHRfZnJhbWUsIFNDT1JFX1NQX1JFR05VTSkgKyBzcF9vZmZz ZXQ7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgc2NvcmVfZnJhbWVfY2FjaGUgKgor c2NvcmVfbWFrZV9wcm9sb2d1ZV9jYWNoZSAoc3RydWN0IGZyYW1lX2luZm8g Km5leHRfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlKQoreworICBzdHJ1Y3Qg c2NvcmVfZnJhbWVfY2FjaGUgKmNhY2hlOworCisgIGlmICgoKnRoaXNfY2Fj aGUpICE9IE5VTEwpCisgICAgcmV0dXJuICgqdGhpc19jYWNoZSk7CisKKyAg Y2FjaGUgPSBGUkFNRV9PQlNUQUNLX1pBTExPQyAoc3RydWN0IHNjb3JlX2Zy YW1lX2NhY2hlKTsKKyAgKCp0aGlzX2NhY2hlKSA9IGNhY2hlOworICBjYWNo ZS0+c2F2ZWRfcmVncyA9IHRyYWRfZnJhbWVfYWxsb2Nfc2F2ZWRfcmVncyAo bmV4dF9mcmFtZSk7CisKKyAgLyogQW5hbHl6ZSB0aGUgcHJvbG9ndWUuICAq LworICB7CisgICAgY29uc3QgQ09SRV9BRERSIHBjID0gZnJhbWVfcGNfdW53 aW5kIChuZXh0X2ZyYW1lKTsKKyAgICBDT1JFX0FERFIgc3RhcnRfYWRkcjsK KworICAgIGZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbiAocGMsIE5VTEwsICZz dGFydF9hZGRyLCBOVUxMKTsKKyAgICBpZiAoc3RhcnRfYWRkciA9PSAwKQor ICAgICAgcmV0dXJuIGNhY2hlOworICAgIHNjb3JlX2FuYWx5emVfcHJvbG9n dWUgKHN0YXJ0X2FkZHIsIHBjLCBuZXh0X2ZyYW1lLCAqdGhpc19jYWNoZSk7 CisgIH0KKworICAvKiBTYXZlIFNQLiAgKi8KKyAgdHJhZF9mcmFtZV9zZXRf dmFsdWUgKGNhY2hlLT5zYXZlZF9yZWdzLCBTQ09SRV9TUF9SRUdOVU0sIGNh Y2hlLT5iYXNlKTsKKworICByZXR1cm4gKCp0aGlzX2NhY2hlKTsKK30KKwor c3RhdGljIHZvaWQKK3Njb3JlX3Byb2xvZ3VlX3RoaXNfaWQgKHN0cnVjdCBm cmFtZV9pbmZvICpuZXh0X2ZyYW1lLCB2b2lkICoqdGhpc19jYWNoZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmcmFtZV9pZCAqdGhpc19p ZCkKK3sKKyAgc3RydWN0IHNjb3JlX2ZyYW1lX2NhY2hlICppbmZvID0gc2Nv cmVfbWFrZV9wcm9sb2d1ZV9jYWNoZSAobmV4dF9mcmFtZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGhpc19jYWNoZSk7CisgICgqdGhpc19pZCkgPSBmcmFtZV9p ZF9idWlsZCAoaW5mby0+YmFzZSwgZnJhbWVfZnVuY191bndpbmQgKG5leHRf ZnJhbWUpKTsKK30KKworc3RhdGljIHZvaWQKK3Njb3JlX3Byb2xvZ3VlX3By ZXZfcmVnaXN0ZXIgKHN0cnVjdCBmcmFtZV9pbmZvICpuZXh0X2ZyYW1lLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKnRoaXNfY2Fj aGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVnbnVt LCBpbnQgKm9wdGltaXplZHAsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlbnVtIGx2YWxfdHlwZSAqbHZhbHAsIENPUkVfQUREUiAqIGFkZHJw LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpyZWFsbnVt cCwgZ2RiX2J5dGUgKiB2YWx1ZXApCit7CisgIHN0cnVjdCBzY29yZV9mcmFt ZV9jYWNoZSAqaW5mbyA9IHNjb3JlX21ha2VfcHJvbG9ndWVfY2FjaGUgKG5l eHRfZnJhbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNfY2FjaGUpOworICB0 cmFkX2ZyYW1lX2dldF9wcmV2X3JlZ2lzdGVyIChuZXh0X2ZyYW1lLCBpbmZv LT5zYXZlZF9yZWdzLCByZWdudW0sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG9wdGltaXplZHAsIGx2YWxwLCBhZGRycCwgcmVhbG51bXAs IHZhbHVlcCk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZnJhbWVfdW53 aW5kIHNjb3JlX3Byb2xvZ3VlX3Vud2luZCA9Cit7CisgIE5PUk1BTF9GUkFN RSwKKyAgc2NvcmVfcHJvbG9ndWVfdGhpc19pZCwKKyAgc2NvcmVfcHJvbG9n dWVfcHJldl9yZWdpc3RlcgorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBm cmFtZV91bndpbmQgKgorc2NvcmVfcHJvbG9ndWVfc25pZmZlciAoc3RydWN0 IGZyYW1lX2luZm8gKm5leHRfZnJhbWUpCit7CisgIHJldHVybiAmc2NvcmVf cHJvbG9ndWVfdW53aW5kOworfQorCitzdGF0aWMgQ09SRV9BRERSCitzY29y ZV9wcm9sb2d1ZV9mcmFtZV9iYXNlX2FkZHJlc3MgKHN0cnVjdCBmcmFtZV9p bmZvICpuZXh0X2ZyYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2b2lkICoqdGhpc19jYWNoZSkKK3sKKyAgc3RydWN0IHNjb3Jl X2ZyYW1lX2NhY2hlICppbmZvID0KKyAgICBzY29yZV9tYWtlX3Byb2xvZ3Vl X2NhY2hlIChuZXh0X2ZyYW1lLCB0aGlzX2NhY2hlKTsKKyAgcmV0dXJuIGlu Zm8tPmJhc2U7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZnJhbWVfYmFz ZSBzY29yZV9wcm9sb2d1ZV9mcmFtZV9iYXNlID0KK3sKKyAgJnNjb3JlX3By b2xvZ3VlX3Vud2luZCwKKyAgc2NvcmVfcHJvbG9ndWVfZnJhbWVfYmFzZV9h ZGRyZXNzLAorICBzY29yZV9wcm9sb2d1ZV9mcmFtZV9iYXNlX2FkZHJlc3Ms CisgIHNjb3JlX3Byb2xvZ3VlX2ZyYW1lX2Jhc2VfYWRkcmVzcywKK307CisK K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZnJhbWVfYmFzZSAqCitzY29yZV9wcm9s b2d1ZV9mcmFtZV9iYXNlX3NuaWZmZXIgKHN0cnVjdCBmcmFtZV9pbmZvICpu ZXh0X2ZyYW1lKQoreworICByZXR1cm4gJnNjb3JlX3Byb2xvZ3VlX2ZyYW1l X2Jhc2U7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZ2RiYXJjaCAqCitzY29yZV9n ZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0 IGdkYmFyY2hfbGlzdCAqYXJjaGVzKQoreworICBzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaDsKKworICBhcmNoZXMgPSBnZGJhcmNoX2xpc3RfbG9va3VwX2J5 X2luZm8gKGFyY2hlcywgJmluZm8pOworICBpZiAoYXJjaGVzICE9IE5VTEwp CisgICAgeworICAgICAgcmV0dXJuIChhcmNoZXMtPmdkYmFyY2gpOworICAg IH0KKyAgZ2RiYXJjaCA9IGdkYmFyY2hfYWxsb2MgKCZpbmZvLCAwKTsKKwor ICBzZXRfZ2RiYXJjaF9zaG9ydF9iaXQgKGdkYmFyY2gsIDE2KTsKKyAgc2V0 X2dkYmFyY2hfaW50X2JpdCAoZ2RiYXJjaCwgMzIpOworICBzZXRfZ2RiYXJj aF9mbG9hdF9iaXQgKGdkYmFyY2gsIDMyKTsKKyAgc2V0X2dkYmFyY2hfZG91 YmxlX2JpdCAoZ2RiYXJjaCwgNjQpOworICBzZXRfZ2RiYXJjaF9sb25nX2Rv dWJsZV9iaXQgKGdkYmFyY2gsIDY0KTsKKyAgc2V0X2dkYmFyY2hfcmVnaXN0 ZXJfc2ltX3JlZ25vIChnZGJhcmNoLCBzY29yZV9yZWdpc3Rlcl9zaW1fcmVn bm8pOworICBzZXRfZ2RiYXJjaF9wY19yZWdudW0gKGdkYmFyY2gsIFNDT1JF X1BDX1JFR05VTSk7CisgIHNldF9nZGJhcmNoX3NwX3JlZ251bSAoZ2RiYXJj aCwgU0NPUkVfU1BfUkVHTlVNKTsKKyAgc2V0X2dkYmFyY2hfbnVtX3JlZ3Mg KGdkYmFyY2gsIFNDT1JFX05VTV9SRUdTKTsKKyAgc2V0X2dkYmFyY2hfcmVn aXN0ZXJfbmFtZSAoZ2RiYXJjaCwgc2NvcmVfcmVnaXN0ZXJfbmFtZSk7Cisg IHNldF9nZGJhcmNoX2JyZWFrcG9pbnRfZnJvbV9wYyAoZ2RiYXJjaCwgc2Nv cmVfYnJlYWtwb2ludF9mcm9tX3BjKTsKKyAgc2V0X2dkYmFyY2hfcmVnaXN0 ZXJfdHlwZSAoZ2RiYXJjaCwgc2NvcmVfcmVnaXN0ZXJfdHlwZSk7CisgIHNl dF9nZGJhcmNoX2ZyYW1lX2FsaWduIChnZGJhcmNoLCBzY29yZV9mcmFtZV9h bGlnbik7CisgIHNldF9nZGJhcmNoX2lubmVyX3RoYW4gKGdkYmFyY2gsIGNv cmVfYWRkcl9sZXNzdGhhbik7CisgIHNldF9nZGJhcmNoX3JlYWRfc3AgKGdk YmFyY2gsIHNjb3JlX3JlYWRfc3ApOworICBzZXRfZ2RiYXJjaF91bndpbmRf cGMgKGdkYmFyY2gsIHNjb3JlX3Vud2luZF9wYyk7CisgIHNldF9nZGJhcmNo X3ByaW50X2luc24gKGdkYmFyY2gsIHNjb3JlX3ByaW50X2luc24pOworICBz ZXRfZ2RiYXJjaF9za2lwX3Byb2xvZ3VlIChnZGJhcmNoLCBzY29yZV9za2lw X3Byb2xvZ3VlKTsKKyAgc2V0X2dkYmFyY2hfaW5fZnVuY3Rpb25fZXBpbG9n dWVfcCAoZ2RiYXJjaCwgc2NvcmVfaW5fZnVuY3Rpb25fZXBpbG9ndWVfcCk7 CisgIHNldF9nZGJhcmNoX2NhbGxfZHVtbXlfbG9jYXRpb24gKGdkYmFyY2gs IEFUX0VOVFJZX1BPSU5UKTsKKyAgc2V0X2dkYmFyY2hfcmV0dXJuX3ZhbHVl IChnZGJhcmNoLCBzY29yZV9yZXR1cm5fdmFsdWUpOworICBzZXRfZ2RiYXJj aF91bndpbmRfZHVtbXlfaWQgKGdkYmFyY2gsIHNjb3JlX3Vud2luZF9kdW1t eV9pZCk7CisgIHNldF9nZGJhcmNoX3B1c2hfZHVtbXlfY2FsbCAoZ2RiYXJj aCwgc2NvcmVfcHVzaF9kdW1teV9jYWxsKTsKKworICBmcmFtZV91bndpbmRf YXBwZW5kX3NuaWZmZXIgKGdkYmFyY2gsIGR3YXJmMl9mcmFtZV9zbmlmZmVy KTsKKyAgZnJhbWVfYmFzZV9hcHBlbmRfc25pZmZlciAoZ2RiYXJjaCwgZHdh cmYyX2ZyYW1lX2Jhc2Vfc25pZmZlcik7CisgIGZyYW1lX3Vud2luZF9hcHBl bmRfc25pZmZlciAoZ2RiYXJjaCwgc2NvcmVfcHJvbG9ndWVfc25pZmZlcik7 CisgIGZyYW1lX2Jhc2VfYXBwZW5kX3NuaWZmZXIgKGdkYmFyY2gsIHNjb3Jl X3Byb2xvZ3VlX2ZyYW1lX2Jhc2Vfc25pZmZlcik7CisKKyAgcmV0dXJuIGdk YmFyY2g7Cit9CisKK2V4dGVybiBpbml0aWFsaXplX2ZpbGVfZnR5cGUgX2lu aXRpYWxpemVfc2NvcmVfdGRlcDsKKwordm9pZAorX2luaXRpYWxpemVfc2Nv cmVfdGRlcCAodm9pZCkKK3sKKyAgZ2RiYXJjaF9yZWdpc3RlciAoYmZkX2Fy Y2hfc2NvcmUsIHNjb3JlX2dkYmFyY2hfaW5pdCwgTlVMTCk7Cit9CmRpZmYg LXJ1TiBnZGItNi42L2dkYi9zY29yZS10ZGVwLmggZ2RiLTYuNi1zY29yZS9n ZGIvc2NvcmUtdGRlcC5oCi0tLSBnZGItNi42L2dkYi9zY29yZS10ZGVwLmgJ MTk3MC0wMS0wMSAwODowMDowMC4wMDAwMDAwMDAgKzA4MDAKKysrIGdkYi02 LjYtc2NvcmUvZ2RiL3Njb3JlLXRkZXAuaAkyMDA2LTEyLTA5IDE0OjAzOjUw LjAwMDAwMDAwMCArMDgwMApAQCAtMCwwICsxLDUwIEBACisvKiBUYXJnZXQt ZGVwZW5kZW50IGNvZGUgZm9yIHRoZSBTK2NvcmUgYXJjaGl0ZWN0dXJlLCBm b3IgR0RCLCB0aGUgR05VIERlYnVnZ2VyLgorCisgICBDb3B5cmlnaHQgKEMp IDIwMDYKKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisg ICBDb250cmlidXRlZCBieSBRaW53ZWkgKHFpbndlaUBzdW5ub3J0aC5jb20u Y24pCisgICBDb250cmlidXRlZCBieSBDaGluZy1QZW5nIExpbiAoY3BsaW5A c3VucGx1cy5jb20pCisKKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4K KworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAg IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRo ZSBGcmVlIFNvZnR3YXJlCisgICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgQm9zdG9uLCBNQSAwMjEx MC0xMzAxLCBVU0EuICAqLworCisjaWZuZGVmIFNDT1JFX1RERVBfSAorI2Rl ZmluZSBTQ09SRV9UREVQX0gKKyNpbmNsdWRlICJtYXRoLmgiCisKK2VudW0g Z2RiX3JlZ251bQoreworICBTQ09SRV9TUF9SRUdOVU0gPSAwLAorICBTQ09S RV9GUF9SRUdOVU0gPSAyLAorICBTQ09SRV9SQV9SRUdOVU0gPSAzLAorICBT Q09SRV9BMF9SRUdOVU0gPSA0LAorICBTQ09SRV9BTF9SRUdOVU0gPSA3LAor ICBTQ09SRV9QQ19SRUdOVU0gPSA0OSwKK307CisKKyNkZWZpbmUgU0NPUkVf QTBfUkVHTlVNICAgICAgICA0CisjZGVmaW5lIFNDT1JFX0ExX1JFR05VTSAg ICAgICAgNQorI2RlZmluZSBTQ09SRV9SRUdTSVpFICAgICAgICAgIDQKKyNk ZWZpbmUgU0NPUkVfTlVNX1JFR1MgICAgICAgICA1NgorI2RlZmluZSBTQ09S RV9CRUdJTl9BUkdfUkVHTlVNIDQKKyNkZWZpbmUgU0NPUkVfTEFTVF9BUkdf UkVHTlVNICA3CisKKyNkZWZpbmUgU0NPUkVfSU5TVExFTiAgICAgICAgICA0 CisjZGVmaW5lIFNDT1JFMTZfSU5TVExFTiAgICAgICAgMgorCisjZW5kaWYg LyogU0NPUkVfVERFUF9IICovCg== --=_mixed 002331794825723F_=--