From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17720 invoked by alias); 19 Mar 2009 07:17:04 -0000 Received: (qmail 17680 invoked by uid 22791); 19 Mar 2009 07:17:01 -0000 X-SWARE-Spam-Status: Yes, hits=6.0 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_14,MIME_BASE64_TEXT,MIME_CHARSET_FARAWAY,ROUND_THE_WORLD_LOCAL,TVD_RCVD_IP X-Spam-Check-By: sourceware.org Received: from 219-87-157-169.static.tfn.net.tw (HELO mswedge2.sunplus.com) (219.87.157.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 19 Mar 2009 07:16:54 +0000 Received: from sphsml08.sunplus.com.tw (msw.sunplus.com.tw [172.17.10.162] (may be forged)) by mswedge2.sunplus.com (8.14.1/8.14.1) with ESMTP id n2J7GHZI012773 for ; Thu, 19 Mar 2009 15:16:17 +0800 Received: from maillog.sunplus.com (unverified [172.17.10.158]) by sphsml08.sunplus.com.tw (Mail System 5.2) with ESMTP id ; Thu, 19 Mar 2009 15:16:33 +0800 Received: from ctmail01.sunplusct.com ([172.23.3.54]) by maillog.sunplus.com (8.12.10/8.12.10) with ESMTP id n2J7GJWl009481; Thu, 19 Mar 2009 15:16:19 +0800 In-Reply-To: <20090317155743.GA31979@adacore.com> To: Joel Brobecker Cc: gdb-patches@sourceware.org MIME-Version: 1.0 Subject: Re: [PATCH] Support new target S+core 3, a variant of S+core Message-ID: From: don.lee@sunplusct.com Date: Thu, 19 Mar 2009 07:36:00 -0000 Content-Type: multipart/mixed; boundary="=_mixed 0027F1AC4825757E_=" X-IsSubscribed: yes 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: 2009-03/txt/msg00391.txt.bz2 --=_mixed 0027F1AC4825757E_= Content-Type: text/plain; charset="GB2312" Content-Transfer-Encoding: base64 Content-length: 2920 Z2RiLXBhdGNoZXMtb3duZXJAc291cmNld2FyZS5vcmcg0LTT2iAyMDA5LTAz LTE3IDIzOjU3OjQzOg0KDQo+IA0KPiANCj4gTm90ZSB0aGF0IFFpbndlaSBp cyBhbHNvIGNhcGFibGUgb2YgcmV2aWV3aW5nIHlvdXIgY29kZS4NCj4gSSBj YW4gdGFrZSBhIGxvb2ssIGJ1dCBpdCdzIGJldHRlciBpZiBRaW53ZWkgZG9l cyBpdCwgYmVjYXVzZSBoZSBoYXMNCj4gYWN0dWFsIGtub3dsZWRnZSBvZiB0 aGUgdGFyZ2V0Lg0KDQpUaGVzZSBjb2RlIGhhdmUgYmVlbiByZXZpZXdlZCBi eSBRaW53ZWkuIEFjdHVhbGx5LCBwYXJ0IG9mIHRoZSBjb2RlcyBhcmUgDQp3 cml0dGVuIGJ5IGhpbS4gDQoNCg0KPiANCj4gSWYgeW91IGhhdmVuJ3QgZG9u ZSBzbywgdGhlIGdkYi9DT05UUklCVVRFIGZpbGUgY29udGFpbnMgdmFsdWFi bGUNCj4gaW5mb3JtYXRpb24uIFlvdSBtYXkgYWxzbyB3YW50IHRvIGdpdmUg Z2RiL01BSU5UQUlORVJTIGEgcXVpY2sgcmVhZC4NCj4gDQo+IFRoZSBmaXJz dCB0aGluZyB0aGF0IHN0cnVjayBtZSB3YXMgdGhlIGZhY3QgdGhhdCB0aGUg cGF0Y2ggd2FzIHByb2R1Y2VkDQo+IGluIHRoZSB3cm9uZyBmb3JtYXQsIHNv ICJjb250ZXh0IiBpcyBtaXNzaW5nLiBDb3VsZCB5b3UgcmVzdWJtaXQgeW91 cg0KPiBwYXRjaCB1c2luZyB0aGUgIi11IiBvcHRpb24/IEZvciBpbnN0YW5j ZSAiY3ZzIGRpZmYgLXUgLi4uIi4NCg0KU29ycnksIGZvcmdldCB0aGF0LCBt eSBtaXN0YWtlLg0KDQo+IA0KPiBBbHNvLCBpdCBsb29rcyBsaWtlIHlvdSBh cmUgc3VibWl0dGluZyBzZXZlcmFsIGNoYW5nZXMgaW4gb25lIHBhdGNoLA0K PiB3aGljaCB3ZSBwcmVmZXIgbm90IHRvLiBGb3IgaW5zdGFuY2UsIHlvdXIg Y2hhbmdlIHRvIGdkYi9jb25maWd1cmUudGd0DQo+IGNhbiBiZSBzdWJtaXR0 ZWQgYXMgaXMsIGFzIGl0IGlzIGluZGVwZW5kZW50IG9mIHRoZSB0YXJnZXQ7 IGl0IGp1c3QNCj4gdGVsbHMgZ2RiIGFib3V0IHRoZSB0aGUgc2ltdWxhdG9y Lg0KDQpUaGVzZSBjaGFuZ2VzIGFyZSBwYXJ0cyBvZiBhIGxvZ2ljYWwgY2hh bmdlLCBzbyBJIHRoaW5rIHN1Ym1pdCBhcyBhIHdob2xlIA0KaXMgT0suDQpC dXQgdGhpcyB0aW1lLCBJIHB1dCBjaGFuZ2UgYWJvdXQgZ2RiL2NvbmZpZ3Vy ZS50Z3Qgb24gYW5vdGhlciBwYXRjaC4NCg0KPiBJbiBhbnkgY2FzZSwNCj4g dGhpcyBpcyBhbHNvIGFuIGluZGVwZW5kZW50IGNoYW5nZSwgc28gdGhpcyBj YW4gYmUgc3VibWl0dGVkIHNlcGFyYXRlbHkNCj4gZnJvbSB0aGUgcmVzdC4N Cg0KQnkgbm93LCBsZWF2ZSB0aGVtIGFsb25lIGZvciBhIG1vbWVudC4NCg0K PiANCj4gVGhlcmUgaXMgbm8gc2NvcmUgc3ViZGlyZWN0b3J5IGluIHNpbS8u IEFyZSB5b3UgZ29pbmcgdG8gc3VibWl0DQo+IGEgc2ltdWxhdG9yIGZvciB0 aGF0IHRhcmdldD8NCg0KV2UgaGF2ZSBhIHNpbXVsYXRvciBmb3IgaXQsIHNv IHB1dCBhIGNoZWNrIGZvciBzaW11bGF0b3IgaW4gDQpnZGIvY29uZmlndXJl LnRndCANCm1heSBtYWtlIG91ciBsaWZlIGEgYml0IGVhc3kuIEJ1dCBhcyBm YXIgYXMgSSBrbm93LCB0aGVzZSBpcyBubyBwbGFuIHRvIA0Kc3VibWl0DQp0 aGlzIHNpbXVsYXRvciwgZXZlbiBpbiBiaW5hcnkgZm9ybS4NCg0KPiANCj4g VGhlIHJlc3Qgb2YgdGhlIHBhdGNoIGlzIHZlcnkgaGFyZCB0byByZWFkISBD b3VsZCB5b3UgZXhwbGFpbiBhIGxpdHRsZQ0KPiBiaXQgdGhlIGFjdHVhbCBj aGFuZ2VzIHlvdSBtYWRlPyBBdCBmaXJzdCBzaWdodCwgd2hhdCB0aGUgcGF0 Y2ggc2F5cw0KPiBpcyB0aGF0IHlvdSByZXBsYWNlZCBwcmV0dHkgbXVjaCBl dmVyeXRoaW5nLCB3aGljaCBJIGRvdWJ0IGlzIHRoZSBjYXNlLg0KDQpUaGUg b3JpZ2luYWwgUytjb3JlIGhhdmUgYmVlbiByZW5hbWVkIFMrY29yZSA3LCB0 aGUgbmV3IHZhcmlhbnQgbmFtZWQgDQpTK2NvcmUgMy4NClNvIGxvdHMgb2Yg ZnVuY3Rpb25zIGluIHNjb3JlLXRkZXAuYyBoYXZlIGJlZW4gcmV3cml0dGVu IG9yIGJlZW4gcmVuYW1lZCwgDQp0aGF0J3MNCndoeSB5b3Ugc2VlIGFsbW9z dCBldmVyeXRoaW5nIGhhdmUgY2hhbmdlZC4NCg0KQXR0YWNobWVudHMgYXJl IG15IG5ldyBwYXRjaGVzLCB3aXRoIGNvbnRleHQgaW5mb3JtYXRpb24uDQoN ClRoYW5rIHlvdSBmb3IgeW91ciB0aW1lLA0KRG9uDQoNCg0KDQo= --=_mixed 0027F1AC4825757E_= Content-Type: application/octet-stream; name="gdb-configure.patch" Content-Disposition: attachment; filename="gdb-configure.patch" Content-Transfer-Encoding: base64 Content-length: 537 LS0tIHNyYy9nZGIvY29uZmlndXJlLnRndAkyMDA5LTAzLTE2IDIzOjA0OjE0 LjAwMDAwMDAwMCArMDgwMAorKysgc3JjLm1vZC9nZGIvY29uZmlndXJlLnRn dAkyMDA5LTAzLTE3IDA5OjI2OjQ0LjAwMDAwMDAwMCArMDgwMApAQCAtMzc1 LDcgKzM3NSwxMSBAQAogCiBzY29yZS0qLSopCiAJIyBUYXJnZXQ6IFMrY29y ZSBlbWJlZGRlZCBzeXN0ZW0KLQlnZGJfdGFyZ2V0X29icz0ic2NvcmUtdGRl cC5vIgorCWdkYl90YXJnZXRfb2JzPSJzY29yZS10ZGVwLm8gY29yZWxvdy5v IgorCWlmIHRlc3QgLWYgLi4vc2ltL3Njb3JlL01ha2VmaWxlOyB0aGVuCisJ ICBnZGJfc2ltPS4uL3NpbS9zY29yZS9saWJzaW0uYQorCWZpCisJYnVpbGRf Z2Ric2VydmVyPXllcwogCTs7CiAKIHNoKi0qLWxpbnV4KikK --=_mixed 0027F1AC4825757E_= Content-Type: application/octet-stream; name="gdb-score.patch" Content-Disposition: attachment; filename="gdb-score.patch" Content-Transfer-Encoding: base64 Content-length: 67129 LS0tIHNyYy9nZGIvc2NvcmUtdGRlcC5oCTIwMDktMDEtMDMgMTM6NTc6NTMu MDAwMDAwMDAwICswODAwCisrKyBzcmMubW9kL2dkYi9zY29yZS10ZGVwLmgJ MjAwOS0wMy0wMyAxNzo0OToyNi4wMDAwMDAwMDAgKzA4MDAKQEAgLTM4LDEx ICszOCwxMTUgQEAKICNkZWZpbmUgU0NPUkVfQTBfUkVHTlVNICAgICAgICA0 CiAjZGVmaW5lIFNDT1JFX0ExX1JFR05VTSAgICAgICAgNQogI2RlZmluZSBT Q09SRV9SRUdTSVpFICAgICAgICAgIDQKLSNkZWZpbmUgU0NPUkVfTlVNX1JF R1MgICAgICAgICA1NgorI2RlZmluZSBTQ09SRTdfTlVNX1JFR1MgICAgICAg ICA1NgorI2RlZmluZSBTQ09SRTNfTlVNX1JFR1MgICAgICAgICA1MAogI2Rl ZmluZSBTQ09SRV9CRUdJTl9BUkdfUkVHTlVNIDQKICNkZWZpbmUgU0NPUkVf TEFTVF9BUkdfUkVHTlVNICA3CiAKICNkZWZpbmUgU0NPUkVfSU5TVExFTiAg ICAgICAgICA0CiAjZGVmaW5lIFNDT1JFMTZfSU5TVExFTiAgICAgICAgMgog CisvKiBGb3J3YXJkIGRlY2xhcmF0aW9ucy4gKi8KK3N0cnVjdCByZWdzZXQ7 CisKKy8qIFRhcmdldC1kZXBlbmRlbnQgc3RydWN0dXJlIGluIGdkYmFyY2gg Ki8KK3N0cnVjdCBnZGJhcmNoX3RkZXAKK3sKKyAgICAvKiBDYWNoZWQgY29y ZSBmaWxlIGhlbHBlcnMuICovCisgICAgc3RydWN0IHJlZ3NldCAqZ3JlZ3Nl dDsKK307CisKKy8qIExpbnV4IENvcmUgZmlsZSBzdXBwb3J0IChkaXJ0eSBo YWNrKQorICAKKyAgIFMrY29yZSBMaW51eCByZWdpc3RlciBzZXQgZGVmaW5p dGlvbiwgY29weSBmcm9tIFMrY29yZSBMaW51eCAqLworc3RydWN0IHB0X3Jl Z3MgeworICAgIC8qIFBhZCBieXRlcyBmb3IgYXJndW1lbnQgc2F2ZSBzcGFj ZSBvbiB0aGUgc3RhY2suICovCisgICAgdW5zaWduZWQgbG9uZyBwYWQwWzZd OyAvKiBtYXkgYmUgNCxNSVBTIGFjY2VwdCA2dmFyLFNDb3JlIGFjY2VwdHMg NCBWYXItLXl1Y2hlbiAqLworCisgICAgLyogU2F2ZWQgbWFpbiBwcm9jZXNz b3IgcmVnaXN0ZXJzLiAqLworICAgIHVuc2lnbmVkIGxvbmcgb3JpZ19yNDsK KyAgICB1bnNpZ25lZCBsb25nIHJlZ3NbMzJdOworCisgICAgLyogT3RoZXIg c2F2ZWQgcmVnaXN0ZXJzLiAqLworICAgIHVuc2lnbmVkIGxvbmcgY2VsOwor ICAgIHVuc2lnbmVkIGxvbmcgY2VoOworCisgICAgdW5zaWduZWQgbG9uZyBz cjA7ICAvKmNudCovCisgICAgdW5zaWduZWQgbG9uZyBzcjE7ICAvKmxjciov CisgICAgdW5zaWduZWQgbG9uZyBzcjI7ICAvKnNjciovCisKKyAgICAvKiBz YXZlZCBjcDAgcmVnaXN0ZXJzICovCisgICAgdW5zaWduZWQgbG9uZyBjcDBf ZXBjOworICAgIHVuc2lnbmVkIGxvbmcgY3AwX2VtYTsKKyAgICB1bnNpZ25l ZCBsb25nIGNwMF9wc3I7CisgICAgdW5zaWduZWQgbG9uZyBjcDBfZWNyOwor ICAgIHVuc2lnbmVkIGxvbmcgY3AwX2NvbmRpdGlvbjsKK307CisKK3R5cGVk ZWYgc3RydWN0IHB0X3JlZ3MgZWxmX2dyZWdzZXRfdDsKKworI2lmZGVmIFdJ VEhfU0lNCisKKyNpbmNsdWRlIDxicmVha3BvaW50Lmg+CisKK2ludCBzb2Nf Z2hfY2FuX3VzZV93YXRjaChpbnQgdHlwZSwgaW50IGNudCk7CitpbnQgc29j X2doX2FkZF93YXRjaCh1bnNpZ25lZCBpbnQgYWRkciwgaW50IGxlbiwgaW50 IHR5cGUpOworaW50IHNvY19naF9kZWxfd2F0Y2godW5zaWduZWQgaW50IGFk ZHIsIGludCBsZW4sIGludCB0eXBlKTsKK2ludCBzb2NfZ2hfc3RvcHBlZF9i eV93YXRjaCh2b2lkKTsKK2ludCBzb2NfZ2hfYWRkX2hhcmRicCh1bnNpZ25l ZCBpbnQgYWRkcik7IAoraW50IHNvY19naF9kZWxfaGFyZGJwKHVuc2lnbmVk IGludCBhZGRyKTsgCisKK2ludCBzY29yZV90YXJnZXRfY2FuX3VzZV93YXRj aChpbnQgdHlwZSwgaW50IGNudCwgaW50IG90KTsKK2ludCBzY29yZV9zdG9w cGVkX2J5X3dhdGNoKHZvaWQpOworaW50IHNjb3JlX3RhcmdldF9pbnNlcnRf d2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBl KTsKK2ludCBzY29yZV90YXJnZXRfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVf QUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgdHlwZSk7CitpbnQgc2NvcmVfdGFy Z2V0X2luc2VydF9od19icmVha3BvaW50IChzdHJ1Y3QgYnBfdGFyZ2V0X2lu Zm8gKiBicF90Z3QpOworaW50IHNjb3JlX3RhcmdldF9yZW1vdmVfaHdfYnJl YWtwb2ludCAoc3RydWN0IGJwX3RhcmdldF9pbmZvICogYnBfdGd0KTsKKwor I2RlZmluZSBUQVJHRVRfSEFTX0hBUkRXQVJFX1dBVENIUE9JTlRTCisKKyNp ZmRlZiBUQVJHRVRfQ0FOX1VTRV9IQVJEV0FSRV9XQVRDSFBPSU5UCisjdW5k ZWYgVEFSR0VUX0NBTl9VU0VfSEFSRFdBUkVfV0FUQ0hQT0lOVAorCisjZGVm aW5lIFRBUkdFVF9DQU5fVVNFX0hBUkRXQVJFX1dBVENIUE9JTlQodHlwZSwg Y250LCBvdCkgXAorICAgIHNjb3JlX3RhcmdldF9jYW5fdXNlX3dhdGNoKHR5 cGUsIGNudCwgb3QpCisjZW5kaWYKKworI2lmZGVmIFNUT1BQRURfQllfV0FU Q0hQT0lOVAorI3VuZGVmIFNUT1BQRURfQllfV0FUQ0hQT0lOVAorCisjZGVm aW5lIFNUT1BQRURfQllfV0FUQ0hQT0lOVCh3KSBcCisgICAgc2NvcmVfc3Rv cHBlZF9ieV93YXRjaCgpCisjZW5kaWYKKworI2lmZGVmIHRhcmdldF9pbnNl cnRfd2F0Y2hwb2ludAorI3VuZGVmIHRhcmdldF9pbnNlcnRfd2F0Y2hwb2lu dAorCisjZGVmaW5lIHRhcmdldF9pbnNlcnRfd2F0Y2hwb2ludChhZGRyLCBs ZW4sIHR5cGUpIFwKKyAgICBzY29yZV90YXJnZXRfaW5zZXJ0X3dhdGNocG9p bnQgKGFkZHIsIGxlbiwgdHlwZSkKKyNlbmRpZgorCisjaWZkZWYgdGFyZ2V0 X3JlbW92ZV93YXRjaHBvaW50CisjdW5kZWYgdGFyZ2V0X3JlbW92ZV93YXRj aHBvaW50CisKKyNkZWZpbmUgdGFyZ2V0X3JlbW92ZV93YXRjaHBvaW50KGFk ZHIsIGxlbiwgdHlwZSkgXAorICAgIHNjb3JlX3RhcmdldF9yZW1vdmVfd2F0 Y2hwb2ludCAoYWRkciwgbGVuLCB0eXBlKQorI2VuZGlmCisKKyNpZmRlZiB0 YXJnZXRfaW5zZXJ0X2h3X2JyZWFrcG9pbnQKKyN1bmRlZiB0YXJnZXRfaW5z ZXJ0X2h3X2JyZWFrcG9pbnQKKworI2RlZmluZSB0YXJnZXRfaW5zZXJ0X2h3 X2JyZWFrcG9pbnQoYnBfdGd0KSBcCisgICAgc2NvcmVfdGFyZ2V0X2luc2Vy dF9od19icmVha3BvaW50IChicF90Z3QpCisjZW5kaWYKKworI2lmZGVmIHRh cmdldF9yZW1vdmVfaHdfYnJlYWtwb2ludAorI3VuZGVmIHRhcmdldF9yZW1v dmVfaHdfYnJlYWtwb2ludAorCisjZGVmaW5lIHRhcmdldF9yZW1vdmVfaHdf YnJlYWtwb2ludChicF90Z3QpIFwKKyAgICBzY29yZV90YXJnZXRfcmVtb3Zl X2h3X2JyZWFrcG9pbnQgKGJwX3RndCkKKyNlbmRpZgorCisjZW5kaWYgLyog V0lUSF9TSU0gKi8KKwogI2VuZGlmIC8qIFNDT1JFX1RERVBfSCAqLwotLS0g c3JjL2dkYi9zY29yZS10ZGVwLmMJMjAwOS0wMS0wMyAxMzo1Nzo1My4wMDAw MDAwMDAgKzA4MDAKKysrIHNyYy5tb2QvZ2RiL3Njb3JlLXRkZXAuYwkyMDA5 LTAzLTE5IDE0OjI5OjU0LjAwMDAwMDAwMCArMDgwMApAQCAtMzAsNiArMzAs NyBAQAogI2luY2x1ZGUgInRhcmdldC5oIgogI2luY2x1ZGUgImFyY2gtdXRp bHMuaCIKICNpbmNsdWRlICJyZWdjYWNoZS5oIgorI2luY2x1ZGUgInJlZ3Nl dC5oIgogI2luY2x1ZGUgImRpcy1hc20uaCIKICNpbmNsdWRlICJmcmFtZS11 bndpbmQuaCIKICNpbmNsdWRlICJmcmFtZS1iYXNlLmgiCkBAIC0zNywxMyAr MzgsMTIgQEAKICNpbmNsdWRlICJkd2FyZjItZnJhbWUuaCIKICNpbmNsdWRl ICJzY29yZS10ZGVwLmgiCiAKLSNkZWZpbmUgR19GTEQoX2ksX21zLF9scykg ICAoKChfaSkgPDwgKDMxIC0gKF9tcykpKSA+PiAoMzEgLSAoX21zKSArIChf bHMpKSkKLSNkZWZpbmUgUk1fUEJJVFMoX3JhdykgICAgICAoKEdfRkxEKF9y YXcsIDMxLCAxNikgPDwgMTUpIHwgR19GTEQoX3JhdywgMTQsIDApKQorI2Rl ZmluZSBHX0ZMRChfaSxfbXMsX2xzKSAgICgodW5zaWduZWQpKChfaSkgPDwg KDMxIC0gKF9tcykpKSA+PiAoMzEgLSAoX21zKSArIChfbHMpKSkKIAogdHlw ZWRlZiBzdHJ1Y3R7Ci0gICAgdW5zaWduZWQgaW50IHY7Ci0gICAgdW5zaWdu ZWQgaW50IHJhdzsKLSAgICBjaGFyICAgICAgICAgaXMxNTsKKyAgICB1bnNp Z25lZCBsb25nIGxvbmcgdjsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgcmF3 OworICAgIHVuc2lnbmVkIGludCBsZW47CiB9aW5zdF90OwogCiBzdHJ1Y3Qg c2NvcmVfZnJhbWVfY2FjaGUKQEAgLTUzLDIzOCArNTMsMTEwIEBACiAgIHN0 cnVjdCB0cmFkX2ZyYW1lX3NhdmVkX3JlZyAqc2F2ZWRfcmVnczsKIH07CiAK LSNpZiAwCi0vKiBJZiBTK2NvcmUgR0NDIHdpbGwgZ2VuZXJhdGUgdGhlc2Ug aW5zdHJ1Y3Rpb25zIGluIHRoZSBwcm9sb2d1ZToKLQotICAgbHcgICByeCwg aW1tMQotICAgYWRkaSByeCwgLWltbTIKLSAgIG12ISAgcjIsIHJ4Ci0KLSAg IHRoZW4gLnBkciBzZWN0aW9uIGlzIHVzZWQuICAqLwotCi0jZGVmaW5lIFBf U0laRSAgICAgICAgICA4Ci0jZGVmaW5lIFBJX1NZTSAgICAgICAgICAwCi0j ZGVmaW5lIFBJX1JfTVNLICAgICAgICAxCi0jZGVmaW5lIFBJX1JfT0ZGICAg ICAgICAyCi0jZGVmaW5lIFBJX1JfTEVGICAgICAgICA0Ci0jZGVmaW5lIFBJ X0ZfT0ZGICAgICAgICA1Ci0jZGVmaW5lIFBJX0ZfUkVHICAgICAgICA2Ci0j ZGVmaW5lIFBJX1JBUkVHICAgICAgICA3Ci0KLXR5cGVkZWYgc3RydWN0IGZy YW1lX2V4dHJhX2luZm8KLXsKLSAgQ09SRV9BRERSIHBfZnJhbWU7Ci0gIHVu c2lnbmVkIGludCBwZHJbUF9TSVpFXTsKLX0gZXh0cmFfaW5mb190OwotCi1z dHJ1Y3Qgb2JqX3ByaXYKLXsKLSAgYmZkX3NpemVfdHlwZSBzaXplOwotICBj aGFyICpjb250ZW50czsKLX07Ci0KLXN0YXRpYyBiZmQgKnRoZV9iZmQ7Ci0K LXN0YXRpYyBpbnQKLXNjb3JlX2NvbXBhcmVfcGRyX2VudHJpZXMgKGNvbnN0 IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCi17Ci0gIENPUkVfQUREUiBsaHMg PSBiZmRfZ2V0XzMyICh0aGVfYmZkLCAoYmZkX2J5dGUgKikgYSk7Ci0gIENP UkVfQUREUiByaHMgPSBiZmRfZ2V0XzMyICh0aGVfYmZkLCAoYmZkX2J5dGUg KikgYik7Ci0gIGlmIChsaHMgPCByaHMpCi0gICAgcmV0dXJuIC0xOwotICBl bHNlIGlmIChsaHMgPT0gcmhzKQotICAgIHJldHVybiAwOwotICBlbHNlCi0g ICAgcmV0dXJuIDE7Ci19Ci0KLXN0YXRpYyB2b2lkCi1zY29yZV9hbmFseXpl X3Bkcl9zZWN0aW9uIChDT1JFX0FERFIgc3RhcnRhZGRyLCBDT1JFX0FERFIg cGMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZnJhbWVf aW5mbyAqdGhpc19mcmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBzY29yZV9mcmFtZV9jYWNoZSAqdGhpc19jYWNoZSkKLXsKLSAg c3RydWN0IHN5bWJvbCAqc3ltOwotICBzdHJ1Y3Qgb2JqX3NlY3Rpb24gKnNl YzsKLSAgZXh0cmFfaW5mb190ICpmY2lfZXh0OwotICBDT1JFX0FERFIgbGVh Zl9yYV9zdGFja19hZGRyID0gLTE7Ci0KLSAgZ2RiX2Fzc2VydCAoc3RhcnRh ZGRyIDw9IHBjKTsKLSAgZ2RiX2Fzc2VydCAodGhpc19jYWNoZSAhPSBOVUxM KTsKLQotICBmY2lfZXh0ID0gZnJhbWVfb2JzdGFja196YWxsb2MgKHNpemVv ZiAoZXh0cmFfaW5mb190KSk7Ci0gIGlmICgoc2VjID0gZmluZF9wY19zZWN0 aW9uIChwYykpID09IE5VTEwpCi0gICAgewotICAgICAgZXJyb3IgKCJFcnJv cjogQ2FuJ3QgZmluZCBzZWN0aW9uIGluIGZpbGU6JXMsIGxpbmU6JWQhIiwK LSAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pOwotICAgICAgcmV0 dXJuOwotICAgIH0KLQotICAvKiBBbnlseXplIC5wZHIgc2VjdGlvbiBhbmQg Z2V0IGNvcmVzcG9uZGluZyBmaWVsZHMuICAqLwotICB7Ci0gICAgc3RhdGlj IHN0cnVjdCBvYmpfcHJpdiAqcHJpdiA9IE5VTEw7Ci0KLSAgICBpZiAocHJp diA9PSBOVUxMKQotICAgICAgewotICAgICAgICBhc2VjdGlvbiAqYmZkc2Vj OwotICAgICAgICBwcml2ID0gb2JzdGFja19hbGxvYyAoJnNlYy0+b2JqZmls ZS0+b2JqZmlsZV9vYnN0YWNrLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2l6ZW9mIChzdHJ1Y3Qgb2JqX3ByaXYpKTsKLSAgICAgICAgaWYg KChiZmRzZWMgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoc2VjLT5vYmpm aWxlLT5vYmZkLCAiLnBkciIpKSkKLSAgICAgICAgICB7Ci0gICAgICAgICAg ICBwcml2LT5zaXplID0gYmZkX3NlY3Rpb25fc2l6ZSAoc2VjLT5vYmpmaWxl LT5vYmZkLCBiZmRzZWMpOwotICAgICAgICAgICAgcHJpdi0+Y29udGVudHMg PSBvYnN0YWNrX2FsbG9jICgmc2VjLT5vYmpmaWxlLT5vYmpmaWxlX29ic3Rh Y2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHByaXYtPnNpemUpOwotICAgICAgICAgICAgYmZkX2dldF9zZWN0aW9u X2NvbnRlbnRzIChzZWMtPm9iamZpbGUtPm9iZmQsIGJmZHNlYywKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+Y29udGVu dHMsIDAsIHByaXYtPnNpemUpOwotICAgICAgICAgICAgdGhlX2JmZCA9IHNl Yy0+b2JqZmlsZS0+b2JmZDsKLSAgICAgICAgICAgIHFzb3J0IChwcml2LT5j b250ZW50cywgcHJpdi0+c2l6ZSAvIDMyLCAzMiwKLSAgICAgICAgICAgICAg ICAgICBzY29yZV9jb21wYXJlX3Bkcl9lbnRyaWVzKTsKLSAgICAgICAgICAg IHRoZV9iZmQgPSBOVUxMOwotICAgICAgICAgIH0KLSAgICAgICAgZWxzZQot ICAgICAgICAgIHByaXYtPnNpemUgPSAwOwotICAgICAgfQotICAgIGlmIChw cml2LT5zaXplICE9IDApCi0gICAgICB7Ci0gICAgICAgIGludCBsb3cgPSAw LCBtaWQsIGhpZ2ggPSBwcml2LT5zaXplIC8gMzI7Ci0gICAgICAgIGNoYXIg KnB0cjsKLSAgICAgICAgZG8KLSAgICAgICAgICB7Ci0gICAgICAgICAgICBD T1JFX0FERFIgcGRyX3BjOwotICAgICAgICAgICAgbWlkID0gKGxvdyArIGhp Z2gpIC8gMjsKLSAgICAgICAgICAgIHB0ciA9IHByaXYtPmNvbnRlbnRzICsg bWlkICogMzI7Ci0gICAgICAgICAgICBwZHJfcGMgPSBiZmRfZ2V0X3NpZ25l ZF8zMiAoc2VjLT5vYmpmaWxlLT5vYmZkLCBwdHIpOwotICAgICAgICAgICAg cGRyX3BjICs9IEFOT0ZGU0VUIChzZWMtPm9iamZpbGUtPnNlY3Rpb25fb2Zm c2V0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VDVF9P RkZfVEVYVCAoc2VjLT5vYmpmaWxlKSk7Ci0gICAgICAgICAgICBpZiAocGRy X3BjID09IHN0YXJ0YWRkcikKLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg ICAgICAgICBpZiAocGRyX3BjID4gc3RhcnRhZGRyKQotICAgICAgICAgICAg ICBoaWdoID0gbWlkOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg ICBsb3cgPSBtaWQgKyAxOwotICAgICAgICAgIH0KLSAgICAgICAgd2hpbGUg KGxvdyAhPSBoaWdoKTsKLQotICAgICAgICBpZiAobG93ICE9IGhpZ2gpCi0g ICAgICAgICAgewotICAgICAgICAgICAgZ2RiX2Fzc2VydCAoYmZkX2dldF8z MiAoc2VjLT5vYmpmaWxlLT5vYmZkLCBwdHIpID09IHN0YXJ0YWRkcik7Ci0j ZGVmaW5lIEVYVF9QRFIoX3BpKSAgICBiZmRfZ2V0XzMyKHNlYy0+b2JqZmls ZS0+b2JmZCwgcHRyKygoX3BpKTw8MikpCi0gICAgICAgICAgICBmY2lfZXh0 LT5wZHJbUElfU1lNXSA9IEVYVF9QRFIgKFBJX1NZTSk7Ci0gICAgICAgICAg ICBmY2lfZXh0LT5wZHJbUElfUl9NU0tdID0gRVhUX1BEUiAoUElfUl9NU0sp OwotICAgICAgICAgICAgZmNpX2V4dC0+cGRyW1BJX1JfT0ZGXSA9IEVYVF9Q RFIgKFBJX1JfT0ZGKTsKLSAgICAgICAgICAgIGZjaV9leHQtPnBkcltQSV9S X0xFRl0gPSBFWFRfUERSIChQSV9SX0xFRik7Ci0gICAgICAgICAgICBmY2lf ZXh0LT5wZHJbUElfRl9PRkZdID0gRVhUX1BEUiAoUElfRl9PRkYpOwotICAg ICAgICAgICAgZmNpX2V4dC0+cGRyW1BJX0ZfUkVHXSA9IEVYVF9QRFIgKFBJ X0ZfUkVHKTsKLSAgICAgICAgICAgIGZjaV9leHQtPnBkcltQSV9SQVJFR10g PSBFWFRfUERSIChQSV9SQVJFRyk7Ci0jdW5kZWYgRVhUX1BEUgotICAgICAg ICAgIH0KLSAgICAgIH0KLSAgfQotfQotI2VuZGlmCi0KLSNpZiAwCi0vKiBP cGVuIHRoZXNlIGZ1bmN0aW9ucyBpZiBidWlsZCB3aXRoIHNpbXVsYXRvci4g ICovCitzdGF0aWMgaW50IHRhcmdldF9tYWNoID0gYmZkX21hY2hfc2NvcmU3 OwogCiBpbnQKIHNjb3JlX3RhcmdldF9jYW5fdXNlX3dhdGNoIChpbnQgdHlw ZSwgaW50IGNudCwgaW50IG90aGVydHlwZSkKIHsKKyNpZiBXSVRIX1NJTQog ICBpZiAoc3RyY21wIChjdXJyZW50X3RhcmdldC50b19zaG9ydG5hbWUsICJz aW0iKSA9PSAwKQotICAgIHsgICAgICAKICAgICAgIHJldHVybiBzb2NfZ2hf Y2FuX3VzZV93YXRjaCAodHlwZSwgY250KTsKLSAgICB9Ci0gIGVsc2UKLSAg ICB7Ci0gICAgICByZXR1cm4gKCpjdXJyZW50X3RhcmdldC50b19jYW5fdXNl X2h3X2JyZWFrcG9pbnQpICh0eXBlLCBjbnQsIG90aGVydHlwZSk7Ci0gICAg fQorI2VuZGlmCisgIHJldHVybiAoKmN1cnJlbnRfdGFyZ2V0LnRvX2Nhbl91 c2VfaHdfYnJlYWtwb2ludCkgKHR5cGUsIGNudCwgb3RoZXJ0eXBlKTsKIH0K IAogaW50CiBzY29yZV9zdG9wcGVkX2J5X3dhdGNoICh2b2lkKQogeworI2lm IFdJVEhfU0lNCiAgIGlmIChzdHJjbXAgKGN1cnJlbnRfdGFyZ2V0LnRvX3No b3J0bmFtZSwgInNpbSIpID09IDApCi0gICAgeyAgICAgIAogICAgICAgcmV0 dXJuIHNvY19naF9zdG9wcGVkX2J5X3dhdGNoICgpOwotICAgIH0KLSAgZWxz ZQotICAgIHsKLSAgICAgIHJldHVybiAoKmN1cnJlbnRfdGFyZ2V0LnRvX3N0 b3BwZWRfYnlfd2F0Y2hwb2ludCkgKCk7Ci0gICAgfQorI2VuZGlmCisgIHJl dHVybiAoKmN1cnJlbnRfdGFyZ2V0LnRvX3N0b3BwZWRfYnlfd2F0Y2hwb2lu dCkgKCk7CiB9CiAKIGludAogc2NvcmVfdGFyZ2V0X2luc2VydF93YXRjaHBv aW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUpCiB7Cisj aWYgV0lUSF9TSU0KICAgaWYgKHN0cmNtcCAoY3VycmVudF90YXJnZXQudG9f c2hvcnRuYW1lLCAic2ltIikgPT0gMCkKLSAgICB7ICAgICAgCiAgICAgICBy ZXR1cm4gc29jX2doX2FkZF93YXRjaCAoYWRkciwgbGVuLCB0eXBlKTsKLSAg ICB9Ci0gIGVsc2UKLSAgICB7Ci0gICAgICByZXR1cm4gKCpjdXJyZW50X3Rh cmdldC50b19pbnNlcnRfd2F0Y2hwb2ludCkgKGFkZHIsIGxlbiwgdHlwZSk7 IAotICAgIH0KKyNlbmRpZgorICByZXR1cm4gKCpjdXJyZW50X3RhcmdldC50 b19pbnNlcnRfd2F0Y2hwb2ludCkgKGFkZHIsIGxlbiwgdHlwZSk7IAogfQog CiBpbnQKIHNjb3JlX3RhcmdldF9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9B RERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlKQogeworI2lmIFdJVEhfU0lN CiAgIGlmIChzdHJjbXAgKGN1cnJlbnRfdGFyZ2V0LnRvX3Nob3J0bmFtZSwg InNpbSIpID09IDApCi0gICAgeyAgICAgIAogICAgICAgcmV0dXJuIHNvY19n aF9kZWxfd2F0Y2ggKGFkZHIsIGxlbiwgdHlwZSk7Ci0gICAgfQotICBlbHNl Ci0gICAgewotICAgICAgcmV0dXJuICgqY3VycmVudF90YXJnZXQudG9fcmVt b3ZlX3dhdGNocG9pbnQpIChhZGRyLCBsZW4sIHR5cGUpOyAKLSAgICB9Cisj ZW5kaWYKKyAgcmV0dXJuICgqY3VycmVudF90YXJnZXQudG9fcmVtb3ZlX3dh dGNocG9pbnQpIChhZGRyLCBsZW4sIHR5cGUpOyAKIH0KIAogaW50CiBzY29y ZV90YXJnZXRfaW5zZXJ0X2h3X2JyZWFrcG9pbnQgKHN0cnVjdCBicF90YXJn ZXRfaW5mbyAqIGJwX3RndCkKIHsKKyNpZiBXSVRIX1NJTQogICBpZiAoc3Ry Y21wIChjdXJyZW50X3RhcmdldC50b19zaG9ydG5hbWUsICJzaW0iKSA9PSAw KQotICAgIHsgICAgICAKICAgICAgIHJldHVybiBzb2NfZ2hfYWRkX2hhcmRi cCAoYnBfdGd0LT5wbGFjZWRfYWRkcmVzcyk7Ci0gICAgfQotICBlbHNlCi0g ICAgewotICAgICAgcmV0dXJuICgqY3VycmVudF90YXJnZXQudG9faW5zZXJ0 X2h3X2JyZWFrcG9pbnQpIChicF90Z3QpOyAKLSAgICB9CisjZW5kaWYKKyAg cmV0dXJuICgqY3VycmVudF90YXJnZXQudG9faW5zZXJ0X2h3X2JyZWFrcG9p bnQpIChicF90Z3QpOyAKIH0KIAogaW50CiBzY29yZV90YXJnZXRfcmVtb3Zl X2h3X2JyZWFrcG9pbnQgKHN0cnVjdCBicF90YXJnZXRfaW5mbyAqIGJwX3Rn dCkKIHsKKyNpZiBXSVRIX1NJTQogICBpZiAoc3RyY21wIChjdXJyZW50X3Rh cmdldC50b19zaG9ydG5hbWUsICJzaW0iKSA9PSAwKQotICAgIHsgICAgICAK ICAgICAgIHJldHVybiBzb2NfZ2hfZGVsX2hhcmRicCAoYnBfdGd0LT5wbGFj ZWRfYWRkcmVzcyk7Ci0gICAgfQotICBlbHNlCi0gICAgewotICAgICAgcmV0 dXJuICgqY3VycmVudF90YXJnZXQudG9fcmVtb3ZlX2h3X2JyZWFrcG9pbnQp IChicF90Z3QpOyAKLSAgICB9Ci19CiAjZW5kaWYKKyAgcmV0dXJuICgqY3Vy cmVudF90YXJnZXQudG9fcmVtb3ZlX2h3X2JyZWFrcG9pbnQpIChicF90Z3Qp OyAKK30KIAogc3RhdGljIHN0cnVjdCB0eXBlICoKIHNjb3JlX3JlZ2lzdGVy X3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBpbnQgcmVnbnVtKQog ewotICBnZGJfYXNzZXJ0IChyZWdudW0gPj0gMCAmJiByZWdudW0gPCBTQ09S RV9OVU1fUkVHUyk7CisgIGdkYl9hc3NlcnQgKHJlZ251bSA+PSAwIAorICAg ICAgICAgICAgICAmJiByZWdudW0gPCAoKHRhcmdldF9tYWNoID09IGJmZF9t YWNoX3Njb3JlNykgPyBTQ09SRTdfTlVNX1JFR1MgOiBTQ09SRTNfTlVNX1JF R1MpKTsKICAgcmV0dXJuIGJ1aWx0aW5fdHlwZV91aW50MzI7CiB9CiAKIHN0 YXRpYyBDT1JFX0FERFIKK3Njb3JlX3Vud2luZF9zcCAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsIHN0cnVjdCBmcmFtZV9pbmZvICpuZXh0X2ZyYW1lKQor eworICByZXR1cm4gZnJhbWVfdW53aW5kX3JlZ2lzdGVyX3Vuc2lnbmVkIChu ZXh0X2ZyYW1lLCBTQ09SRV9TUF9SRUdOVU0pOworfQorCitzdGF0aWMgQ09S RV9BRERSCiBzY29yZV91bndpbmRfcGMgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqbmV4dF9mcmFtZSkKIHsKICAgcmV0 dXJuIGZyYW1lX3Vud2luZF9yZWdpc3Rlcl91bnNpZ25lZCAobmV4dF9mcmFt ZSwgU0NPUkVfUENfUkVHTlVNKTsKIH0KIAotc3RhdGljIENPUkVfQUREUgot c2NvcmVfdW53aW5kX3NwIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3Ry dWN0IGZyYW1lX2luZm8gKm5leHRfZnJhbWUpCitzdGF0aWMgY29uc3QgY2hh ciAqCitzY29yZTdfcmVnaXN0ZXJfbmFtZSAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gsIGludCByZWdudW0pCiB7Ci0gIHJldHVybiBmcmFtZV91bndpbmRf cmVnaXN0ZXJfdW5zaWduZWQgKG5leHRfZnJhbWUsIFNDT1JFX1NQX1JFR05V TSk7CisgIGNvbnN0IGNoYXIgKnNjb3JlX3JlZ2lzdGVyX25hbWVzW10gPSB7 CisgICAgInIwIiwgICJyMSIsICAicjIiLCAgInIzIiwgICJyNCIsICAicjUi LCAgInI2IiwgICJyNyIsCisgICAgInI4IiwgICJyOSIsICAicjEwIiwgInIx MSIsICJyMTIiLCAicjEzIiwgInIxNCIsICJyMTUiLAorICAgICJyMTYiLCAi cjE3IiwgInIxOCIsICJyMTkiLCAicjIwIiwgInIyMSIsICJyMjIiLCAicjIz IiwKKyAgICAicjI0IiwgInIyNSIsICJyMjYiLCAicjI3IiwgInIyOCIsICJy MjkiLCAicjMwIiwgInIzMSIsCisKKyAgICAiUFNSIiwgICAgICJDT05EIiwg ICJFQ1IiLCAgICAgIkVYQ1BWRUMiLCAiQ0NSIiwKKyAgICAiRVBDIiwgICAg ICJFTUEiLCAgICJUTEJMT0NLIiwgIlRMQlBUIiwgICAiUEVBRERSIiwKKyAg ICAiVExCUlBUIiwgICJQRVZOIiwgICJQRUNUWCIsICAgIkxJTVBGTiIsICAi TERNUEZOIiwgCisgICAgIlBSRVYiLCAgICAiRFJFRyIsICAiUEMiLCAgICAg ICJEU0FWRSIsICAgIkNPVU5URVIiLAorICAgICJMRENSIiwgICAgIlNUQ1Ii LCAgIkNFSCIsICAgICAiQ0VMIiwKKyAgfTsKKworICBnZGJfYXNzZXJ0IChy ZWdudW0gPj0gMCAmJiByZWdudW0gPCBTQ09SRTdfTlVNX1JFR1MpOworICBy ZXR1cm4gc2NvcmVfcmVnaXN0ZXJfbmFtZXNbcmVnbnVtXTsKIH0KIAogc3Rh dGljIGNvbnN0IGNoYXIgKgotc2NvcmVfcmVnaXN0ZXJfbmFtZSAoc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWdudW0pCitzY29yZTNfcmVnaXN0 ZXJfbmFtZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWdudW0p CiB7CiAgIGNvbnN0IGNoYXIgKnNjb3JlX3JlZ2lzdGVyX25hbWVzW10gPSB7 CiAgICAgInIwIiwgICJyMSIsICAicjIiLCAgInIzIiwgICJyNCIsICAicjUi LCAgInI2IiwgICJyNyIsCkBAIC0yOTIsMjQgKzE2NCwyNSBAQAogICAgICJy MTYiLCAicjE3IiwgInIxOCIsICJyMTkiLCAicjIwIiwgInIyMSIsICJyMjIi LCAicjIzIiwKICAgICAicjI0IiwgInIyNSIsICJyMjYiLCAicjI3IiwgInIy OCIsICJyMjkiLCAicjMwIiwgInIzMSIsCiAKLSAgICAiUFNSIiwgICAiQ09O RCIsICAgIkVDUiIsICAgICJFWENQVkVDIiwKLSAgICAiQ0NSIiwgICAiRVBD IiwgICAgIkVNQSIsICAgICJUTEJMT0NLIiwKLSAgICAiVExCUFQiLCAiUEVB RERSIiwgIlRMQlJQVCIsICJQRVZOIiwKLSAgICAiUEVDVFgiLCAiTElNUEZO IiwgIkxETVBGTiIsICJQUkVWIiwKLSAgICAiRFJFRyIsICAiUEMiLCAgICAg IkRTQVZFIiwgICJDT1VOVEVSIiwKLSAgICAiTERDUiIsICAiU1RDUiIsICAg IkNFSCIsICAgICJDRUwiLAorICAgICJQU1IiLCAgICAgICJDT05EIiwgICAi RUNSIiwgICAiRVhDUFZFQyIsICAiQ0NSIiwKKyAgICAiRVBDIiwgICAgICAi RU1BIiwgICAgIlBSRVYiLCAgIkRSRUciLCAgICAgIkRTQVZFIiwKKyAgICAi Q09VTlRFUiIsICAiTERDUiIsICAgIlNUQ1IiLCAgIkNFSCIsICAgICAgIkNF TCIsCisgICAgIiIsICAgICAgICAgIiIsICAgICAgICJQQyIsCiAgIH07CiAK LSAgZ2RiX2Fzc2VydCAocmVnbnVtID49IDAgJiYgcmVnbnVtIDwgU0NPUkVf TlVNX1JFR1MpOworICBnZGJfYXNzZXJ0IChyZWdudW0gPj0gMCAmJiByZWdu dW0gPCBTQ09SRTNfTlVNX1JFR1MpOwogICByZXR1cm4gc2NvcmVfcmVnaXN0 ZXJfbmFtZXNbcmVnbnVtXTsKIH0KIAorI2lmIFdJVEhfU0lNCiBzdGF0aWMg aW50CiBzY29yZV9yZWdpc3Rlcl9zaW1fcmVnbm8gKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLCBpbnQgcmVnbnVtKQogewotICBnZGJfYXNzZXJ0IChyZWdu dW0gPj0gMCAmJiByZWdudW0gPCBTQ09SRV9OVU1fUkVHUyk7CisgIGdkYl9h c3NlcnQgKHJlZ251bSA+PSAwIAorICAgICAgICAgICAgICAmJiByZWdudW0g PCAoKHRhcmdldF9tYWNoID09IGJmZF9tYWNoX3Njb3JlNykgPyBTQ09SRTdf TlVNX1JFR1MgOiBTQ09SRTNfTlVNX1JFR1MpKTsKICAgcmV0dXJuIHJlZ251 bTsKIH0KKyNlbmRpZgogCiBzdGF0aWMgaW50CiBzY29yZV9wcmludF9pbnNu IChiZmRfdm1hIG1lbWFkZHIsIHN0cnVjdCBkaXNhc3NlbWJsZV9pbmZvICpp bmZvKQpAQCAtMzIwLDkgKzE5MywxNjcgQEAKICAgICByZXR1cm4gcHJpbnRf aW5zbl9saXR0bGVfc2NvcmUgKG1lbWFkZHIsIGluZm8pOwogfQogCitzdGF0 aWMgaW5zdF90ICoKK3Njb3JlN19mZXRjaF9pbnN0IChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCwgQ09SRV9BRERSIGFkZHIsIGNoYXIgKm1lbWJsb2NrKQor eworICBzdGF0aWMgaW5zdF90IGluc3QgPSB7IDAsIDAsIDAgfTsKKyAgY2hh ciBidWZbU0NPUkVfSU5TVExFTl0gPSB7IDAgfTsKKyAgaW50IGJpZzsKKyAg aW50IHJldDsKKworICBpZiAodGFyZ2V0X2hhc19leGVjdXRpb24gJiYgbWVt YmxvY2sgIT0gTlVMTCkKKyAgICB7CisgICAgICAvKiBGZXRjaCBpbnN0cnVj dGlvbiBmcm9tIGxvY2FsIE1FTUJMT0NLLiAgKi8KKyAgICAgIG1lbWNweSAo YnVmLCBtZW1ibG9jaywgU0NPUkVfSU5TVExFTik7CisgICAgfQorICBlbHNl CisgICAgeworICAgICAgLyogRmV0Y2ggaW5zdHJ1Y3Rpb24gZnJvbSB0YXJn ZXQuICAqLworICAgICAgcmV0ID0gdGFyZ2V0X3JlYWRfbWVtb3J5IChhZGRy ICYgfjB4MywgYnVmLCBTQ09SRV9JTlNUTEVOKTsKKyAgICAgIGlmIChyZXQp CisgICAgICAgIHsKKyAgICAgICAgICBlcnJvciAoIkVycm9yOiB0YXJnZXRf cmVhZF9tZW1vcnkgaW4gZmlsZTolcywgbGluZTolZCEiLAorICAgICAgICAg ICAgICAgICAgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAgICAgICByZXR1 cm4gMDsKKyAgICAgICAgfQorICAgIH0KKworICBpbnN0LnJhdyA9IGV4dHJh Y3RfdW5zaWduZWRfaW50ZWdlciAoYnVmLCBTQ09SRV9JTlNUTEVOKTsKKyAg aW5zdC5sZW4gPSAoaW5zdC5yYXcgJiAweDgwMDA4MDAwKSA/IDQgOiAyOwor ICBpbnN0LnYgPSAoKGluc3QucmF3ID4+IDE2ICYgMHg3RkZGKSA8PCAxNSkg fCAoaW5zdC5yYXcgJiAweDdGRkYpOyAKKyAgYmlnID0gKGdkYmFyY2hfYnl0 ZV9vcmRlcihnZGJhcmNoKSA9PSBCRkRfRU5ESUFOX0JJRyk7CisgIGlmIChp bnN0LmxlbiA9PSAyKQorICAgIHsKKyAgICAgIGlmIChiaWcgXiAoKGFkZHIg JiAweDIpID09IDIpKQorICAgICAgICBpbnN0LnYgPSBHX0ZMRCAoaW5zdC52 LCAyOSwgMTUpOworICAgICAgZWxzZQorICAgICAgICBpbnN0LnYgPSBHX0ZM RCAoaW5zdC52LCAxNCwgMCk7CisgICAgfQorICByZXR1cm4gJmluc3Q7Cit9 CisKK3N0YXRpYyBpbnN0X3QgKgorc2NvcmUzX2FkanVzdF9wY19hbmRfZmV0 Y2hfaW5zdCAoQ09SRV9BRERSICpwY3B0ciwgaW50ICpsZW5wdHIpCit7Cisg IHN0YXRpYyBpbnN0X3QgaW5zdCA9IHsgMCwgMCwgMCB9OworCisgIHN0cnVj dCBicmVha3BsYWNlCisgIHsKKyAgICBpbnQgYnJlYWtfb2Zmc2V0OworICAg IGludCBpbnN0X2xlbjsKKyAgfTsKKyAgLyogICAgIHJhdyAgICAgICAgdGFi bGUgMSAoY29sdW1uIDIsIDMsIDQpCisgICAgKiAgMCAgMSAgMCAgKiAgICMg MgorICAgICogIDAgIDEgIDEgIDAgICAjIDMKKyAgICAwICAxICAxICAwICAq ICAgIyA2CisgICAgICAgICAgICAgICAgICAgIHRhYmxlIDIgKGNvbHVtbiAx LCAyLCAzKQorICAgICogIDAgIDAgICogICogICAjIDAsIDQKKyAgICAwICAx ICAwICAqICAqICAgIyAyCisgICAgMSAgMSAgMCAgKiAgKiAgICMgNgorICAg Ki8KKworICBzdGF0aWMgY29uc3Qgc3RydWN0IGJyZWFrcGxhY2UgYmtfdGFi bGVbMTZdID0KKyAgICB7CisgICAgICAvKiB0YWJsZSAxICovCisgICAgICB7 MCwgMH0sCisgICAgICB7MCwgMH0sCisgICAgICB7MCwgNH0sCisgICAgICB7 MCwgNn0sCisgICAgICB7MCwgMH0sCisgICAgICB7MCwgMH0sCisgICAgICB7 LTIsIDZ9LAorICAgICAgezAsIDB9LAorICAgICAgLyogdGFibGUgMiAqLwor ICAgICAgezAsIDJ9LAorICAgICAgezAsIDB9LAorICAgICAgey0yLCA0fSwK KyAgICAgIHswLCAwfSwKKyAgICAgIHswLCAyfSwKKyAgICAgIHswLCAwfSwK KyAgICAgIHstNCwgNn0sCisgICAgICB7MCwgMH0KKyAgICB9OworCisjZGVm aW5lIEVYVFJBQ1RfTEVOIDIKKyAgQ09SRV9BRERSIGFkanVzdF9wYyA9ICpw Y3B0ciAmIH4weDE7CisgIGludCBpbnN0X2xlbjsKKyAgZ2RiX2J5dGUgYnVm WzVdW0VYVFJBQ1RfTEVOXSA9IHt7J1wwJywgJ1wwJ30sIHsnXDAnLCAnXDAn fSwgeydcMCcsICdcMCd9LCB7J1wwJywgJ1wwJ30sIHsnXDAnLCAnXDAnfX07 CisgIGludCByZXQ7CisgIHVuc2lnbmVkIGludCByYXc7CisgIHVuc2lnbmVk IGludCBjYml0cyA9IDA7CisgIGludCBia19pbmRleDsKKyAgaW50IGksIGNv dW50OworCisgIGluc3QudiA9IDA7CisgIGluc3QucmF3ID0gMDsKKyAgaW5z dC5sZW4gPSAwOworCisgIGFkanVzdF9wYyAtPSA0OworICBmb3IgKGkgPSAw OyBpIDwgNTsgaSsrKQorICAgIHsKKyAgICAgIHJldCA9IHRhcmdldF9yZWFk X21lbW9yeSAoYWRqdXN0X3BjICsgMiAqIGksIGJ1ZltpXSwgRVhUUkFDVF9M RU4pOworICAgICAgaWYgKHJldCAhPSAwKQorICAgICAgICB7CisgICAgICAg ICAgYnVmW2ldWzBdID0gJ1wwJzsKKyAgICAgICAgICBidWZbaV1bMV0gPSAn XDAnOworCSAgaWYgKGkgPT0gMikKKyAgICAgICAgICAgIGVycm9yICgiRXJy b3I6IHRhcmdldF9yZWFkX21lbW9yeSBpbiBmaWxlOiVzLCBsaW5lOiVkISIs IF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICAgIH0KKworICAgICAgcmF3 ID0gZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2VyIChidWZbaV0sIEVYVFJBQ1Rf TEVOKTsKKyAgICAgIGNiaXRzID0gKGNiaXRzIDw8IDEpIHwgKHJhdyA+PiAx NSk7IAorICAgIH0KKyAgYWRqdXN0X3BjICs9IDQ7CisKKyAgaWYgKGNiaXRz ICYgMHg0KQorICAgIHsKKyAgICAgIC8qIHRhYmxlIDEgKi8KKyAgICAgIGNi aXRzID0gKGNiaXRzID4+IDEpICYgMHg3OworICAgICAgYmtfaW5kZXggPSBj Yml0czsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICAvKiB0YWJsZSAy ICovCisgICAgICBjYml0cyA9IChjYml0cyA+PiAyKSAmIDB4NzsKKyAgICAg IGJrX2luZGV4ID0gY2JpdHMgKyA4OyAKKyAgICB9CisKKyAgZ2RiX2Fzc2Vy dCAoISgoYmtfdGFibGVbYmtfaW5kZXhdLmJyZWFrX29mZnNldCA9PSAwKSAm JiAoYmtfdGFibGVbYmtfaW5kZXhdLmluc3RfbGVuID09IDApKSk7CisKKyAg aW5zdC5sZW4gPSBia190YWJsZVtia19pbmRleF0uaW5zdF9sZW47CisKKyAg aSA9IChia190YWJsZVtia19pbmRleF0uYnJlYWtfb2Zmc2V0ICsgNCkgLyAy OworICBjb3VudCA9IGluc3QubGVuIC8gMjsKKyAgZm9yICg7IGNvdW50ID4g MDsgaSsrLCBjb3VudC0tKQorICAgIHsKKyAgICAgIGluc3QucmF3ID0gKGlu c3QucmF3IDw8IDE2KSB8IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAoYnVm W2ldLCBFWFRSQUNUX0xFTik7CisgICAgfQorCisgIHN3aXRjaCAoaW5zdC5s ZW4pCisgICAgeworICAgIGNhc2UgMjoKKyAgICAgIGluc3QudiA9IGluc3Qu cmF3ICYgMHg3RkZGOworICAgICAgYnJlYWs7CisgICAgY2FzZSA0OgorICAg ICAgaW5zdC52ID0gKChpbnN0LnJhdyA+PiAxNiAmIDB4N0ZGRikgPDwgMTUp IHwgKGluc3QucmF3ICYgMHg3RkZGKTsKKyAgICAgIGJyZWFrOworICAgIGNh c2UgNjoKKyAgICAgIGluc3QudiA9ICgoaW5zdC5yYXcgPj4gMzIgJiAweDdG RkYpIDw8IDMwKSB8ICgoaW5zdC5yYXcgPj4gMTYgJiAweDdGRkYpIDw8IDE1 KSB8IChpbnN0LnJhdyAmIDB4N0ZGRik7CisgICAgICBicmVhazsKKyAgICB9 CisKKyAgaWYgKHBjcHRyKQorICAgICpwY3B0ciA9IGFkanVzdF9wYyArIGJr X3RhYmxlW2JrX2luZGV4XS5icmVha19vZmZzZXQ7CisgIGlmIChsZW5wdHIp CisgICAgKmxlbnB0ciA9IGJrX3RhYmxlW2JrX2luZGV4XS5pbnN0X2xlbjsK KworI3VuZGVmIEVYVFJBQ1RfTEVOCisKKyAgcmV0dXJuICZpbnN0OworfQor CiBzdGF0aWMgY29uc3QgZ2RiX2J5dGUgKgotc2NvcmVfYnJlYWtwb2ludF9m cm9tX3BjIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSICpw Y3B0ciwKLQkJCSAgaW50ICpsZW5wdHIpCitzY29yZTdfYnJlYWtwb2ludF9m cm9tX3BjIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSICpw Y3B0ciwgaW50ICpsZW5wdHIpCiB7CiAgIGdkYl9ieXRlIGJ1ZltTQ09SRV9J TlNUTEVOXSA9IHsgMCB9OwogICBpbnQgcmV0OwpAQCAtMzc1LDYgKzQwNiw0 OCBAQAogICAgIH0KIH0KIAorc3RhdGljIGNvbnN0IGdkYl9ieXRlICoKK3Nj b3JlM19icmVha3BvaW50X2Zyb21fcGMgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLCBDT1JFX0FERFIgKnBjcHRyLCBpbnQgKmxlbnB0cikKK3sKKyAgQ09S RV9BRERSIGFkanVzdF9wYyA9ICpwY3B0cjsgCisgIGludCBsZW47CisgIHN0 YXRpYyBnZGJfYnl0ZSBzY29yZV9icmVha19pbnNuc1s2XVs2XSA9IHsKKyAg ICAvKiBUaGUgZm9sbG93aW5nIHRocmVlIGluc3RydWN0aW9ucyBhcmUgYmln IGVuZGlhbi4gICovCisgICAgeyAweDAwLCAweDIwIH0sCisgICAgeyAweDgw LCAweDAwLCAweDAwLCAweDA2IH0sCisgICAgeyAweDgwLCAweDAwLCAweDgw LCAweDAwLCAweDAwLCAweDAwIH0sCisgICAgLyogVGhlIGZvbGxvd2luZyB0 aHJlZSBpbnN0cnVjdGlvbnMgYXJlIGxpdHRsZSBlbmRpYW4uICAqLworICAg IHsgMHgyMCwgMHgwMCB9LAorICAgIHsgMHgwMCwgMHg4MCwgMHgwNiwgMHgw MCB9LAorICAgIHsgMHgwMCwgMHg4MCwgMHgwMCwgMHg4MCwgMHgwMCwgMHgw MCB9fTsKKworICBnZGJfYnl0ZSAqcCA9IE5VTEw7CisgIGludCBpbmRleCA9 IDA7CisKKyAgc2NvcmUzX2FkanVzdF9wY19hbmRfZmV0Y2hfaW5zdCAoJmFk anVzdF9wYywgJmxlbik7CisKKyAgaW5kZXggPSAoKGdkYmFyY2hfYnl0ZV9v cmRlcihnZGJhcmNoKSA9PSBCRkRfRU5ESUFOX0JJRykgPyAwIDogMykgKyAo bGVuIC8gMiAtIDEpOworICBwID0gc2NvcmVfYnJlYWtfaW5zbnNbaW5kZXhd OworCisgICpwY3B0ciA9IGFkanVzdF9wYzsKKyAgKmxlbnB0ciA9IGxlbjsK KworICByZXR1cm4gcDsKK30KKworc3RhdGljIENPUkVfQUREUgorc2NvcmVf YWRqdXN0X2JyZWFrcG9pbnRfYWRkcmVzcyAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gsIENPUkVfQUREUiBicGFkZHIpCit7CisgIENPUkVfQUREUiBhZGp1 c3RfcGMgPSBicGFkZHI7IAorCisgIGlmICh0YXJnZXRfbWFjaCA9PSBiZmRf bWFjaF9zY29yZTMpCisgICAgc2NvcmUzX2FkanVzdF9wY19hbmRfZmV0Y2hf aW5zdCAoJmFkanVzdF9wYywgTlVMTCk7CisgIGVsc2UKKyAgICBhZGp1c3Rf cGMgPSBhbGlnbl9kb3duIChhZGp1c3RfcGMsIDIpOworICAKKyAgcmV0dXJu IGFkanVzdF9wYzsKK30KKwogc3RhdGljIENPUkVfQUREUgogc2NvcmVfZnJh bWVfYWxpZ24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIg YWRkcikKIHsKQEAgLTM4Nyw3ICs0NjAsOCBAQAogICAgICAgICAgICAgICAg ICAgICAgY29uc3QgZ2RiX2J5dGUgKndyaXRlYnVmLCBpbnQgYnVmX29mZnNl dCkKIHsKICAgaW50IHJlZ19vZmZzZXQgPSAwOwotICBnZGJfYXNzZXJ0IChy ZWdudW0gPj0gMCAmJiByZWdudW0gPCBTQ09SRV9OVU1fUkVHUyk7CisgIGdk Yl9hc3NlcnQgKHJlZ251bSA+PSAwIAorICAgICAgICAgICAgICAmJiByZWdu dW0gPCAoKHRhcmdldF9tYWNoID09IGJmZF9tYWNoX3Njb3JlNykgPyBTQ09S RTdfTlVNX1JFR1MgOiBTQ09SRTNfTlVNX1JFR1MpKTsKIAogICBzd2l0Y2gg KGVuZGlhbikKICAgICB7CkBAIC00MTUsNyArNDg5LDcgQEAKIAogc3RhdGlj IGVudW0gcmV0dXJuX3ZhbHVlX2NvbnZlbnRpb24KIHNjb3JlX3JldHVybl92 YWx1ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCB0eXBlICpm dW5jX3R5cGUsCi0JCSAgICBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHJl Z2NhY2hlICpyZWdjYWNoZSwKKyAgICAgICAgICAgICAgICAgICAgc3RydWN0 IHR5cGUgKnR5cGUsIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCiAgICAg ICAgICAgICAgICAgICAgIGdkYl9ieXRlICogcmVhZGJ1ZiwgY29uc3QgZ2Ri X2J5dGUgKiB3cml0ZWJ1ZikKIHsKICAgaWYgKFRZUEVfQ09ERSAodHlwZSkg PT0gVFlQRV9DT0RFX1NUUlVDVApAQCAtNDMzLDggKzUwNyw3IEBACiAgICAg ICAgICAgaW50IHhmZXIgPSBTQ09SRV9SRUdTSVpFOwogICAgICAgICAgIGlm IChvZmZzZXQgKyB4ZmVyID4gVFlQRV9MRU5HVEggKHR5cGUpKQogICAgICAg ICAgICAgeGZlciA9IFRZUEVfTEVOR1RIICh0eXBlKSAtIG9mZnNldDsKLSAg ICAgICAgICBzY29yZV94ZmVyX3JlZ2lzdGVyIChyZWdjYWNoZSwgcmVnbnVt LCB4ZmVyLAotCQkJICAgICAgIGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJj aCksCisgICAgICAgICAgc2NvcmVfeGZlcl9yZWdpc3RlciAocmVnY2FjaGUs IHJlZ251bSwgeGZlciwgZ2RiYXJjaF9ieXRlX29yZGVyKGdkYmFyY2gpLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRidWYsIHdyaXRl YnVmLCBvZmZzZXQpOwogICAgICAgICB9CiAgICAgICByZXR1cm4gUkVUVVJO X1ZBTFVFX1JFR0lTVEVSX0NPTlZFTlRJT047CkBAIC01NDMsNyArNjE2LDcg QEAKIAogICAgICAgICAgV2hlcmUgWCBpcyBhIGhvbGUuICAqLwogCi0gICAg ICBpZiAoZ2RiYXJjaF9ieXRlX29yZGVyIChnZGJhcmNoKSA9PSBCRkRfRU5E SUFOX0JJRworICAgICAgaWYgKGdkYmFyY2hfYnl0ZV9vcmRlcihnZGJhcmNo KSA9PSBCRkRfRU5ESUFOX0JJRwogICAgICAgICAgICYmICh0eXBlY29kZSA9 PSBUWVBFX0NPREVfU1RSVUNUCiAgICAgICAgICAgICAgIHx8IHR5cGVjb2Rl ID09IFRZUEVfQ09ERV9VTklPTikKICAgICAgICAgICAmJiBhcmdyZWcgPiBT Q09SRV9MQVNUX0FSR19SRUdOVU0KQEAgLTU1Nyw3ICs2MzAsNyBAQAogCiAg ICAgICAgICAgLyogVGhlIGxhc3QgcGFydCBvZiBhIGFyZyBzaG91bGQgc2hp ZnQgbGVmdCB3aGVuCiAgICAgICAgICAgICAgZ2RiYXJjaF9ieXRlX29yZGVy IGlzIEJGRF9FTkRJQU5fQklHLiAgKi8KLSAgICAgICAgICBpZiAoZ2RiYXJj aF9ieXRlX29yZGVyIChnZGJhcmNoKSA9PSBCRkRfRU5ESUFOX0JJRworICAg ICAgICAgIGlmIChnZGJhcmNoX2J5dGVfb3JkZXIoZ2RiYXJjaCkgPT0gQkZE X0VORElBTl9CSUcKICAgICAgICAgICAgICAgJiYgYXJnX2xhc3RfcGFydF9w ID09IDEKICAgICAgICAgICAgICAgJiYgKHR5cGVjb2RlID09IFRZUEVfQ09E RV9TVFJVQ1QKICAgICAgICAgICAgICAgICAgIHx8IHR5cGVjb2RlID09IFRZ UEVfQ09ERV9VTklPTikpCkBAIC01ODYsMTYyICs2NTksMTMyIEBACiAgIHJl dHVybiBzcDsKIH0KIAotc3RhdGljIGNoYXIgKgotc2NvcmVfbWFsbG9jX2Fu ZF9nZXRfbWVtYmxvY2sgKENPUkVfQUREUiBhZGRyLCBDT1JFX0FERFIgc2l6 ZSkKLXsKLSAgaW50IHJldDsKLSAgY2hhciAqbWVtYmxvY2sgPSBOVUxMOwot Ci0gIGlmIChzaXplIDwgMCkKLSAgICB7Ci0gICAgICBlcnJvciAoIkVycm9y OiBtYWxsb2Mgc2l6ZSA8IDAgaW4gZmlsZTolcywgbGluZTolZCEiLAotICAg ICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXyk7Ci0gICAgICByZXR1cm4g TlVMTDsKLSAgICB9Ci0gIGVsc2UgaWYgKHNpemUgPT0gMCkKLSAgICByZXR1 cm4gTlVMTDsKLQotICBtZW1ibG9jayA9IChjaGFyICopIHhtYWxsb2MgKHNp emUpOwotICBtZW1zZXQgKG1lbWJsb2NrLCAwLCBzaXplKTsKLSAgcmV0ID0g dGFyZ2V0X3JlYWRfbWVtb3J5IChhZGRyICYgfjB4MywgbWVtYmxvY2ssIHNp emUpOwotICBpZiAocmV0KQotICAgIHsKLSAgICAgIGVycm9yICgiRXJyb3I6 IHRhcmdldF9yZWFkX21lbW9yeSBpbiBmaWxlOiVzLCBsaW5lOiVkISIsCi0g ICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fKTsKLSAgICAgIHJldHVy biBOVUxMOwotICAgIH0KLSAgcmV0dXJuIG1lbWJsb2NrOwotfQotCi1zdGF0 aWMgdm9pZAotc2NvcmVfZnJlZV9tZW1ibG9jayAoY2hhciAqbWVtYmxvY2sp Ci17Ci0gIHhmcmVlIChtZW1ibG9jayk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1z Y29yZV9hZGp1c3RfbWVtYmxvY2tfcHRyIChjaGFyICoqbWVtYmxvY2ssIENP UkVfQUREUiBwcmV2X3BjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg Q09SRV9BRERSIGN1cl9wYykKLXsKLSAgaWYgKHByZXZfcGMgPT0gLTEpCi0g ICAgewotICAgICAgLyogRmlyc3QgdGltZSBjYWxsIHRoaXMgZnVuY3Rpb24s IGRvIG5vdGhpbmcuICAqLwotICAgIH0KLSAgZWxzZSBpZiAoY3VyX3BjIC0g cHJldl9wYyA9PSAyICYmIChjdXJfcGMgJiAweDMpID09IDApCi0gICAgewot ICAgICAgLyogRmlyc3QgMTYtYml0IGluc3RydWN0aW9uLCB0aGVuIDMyLWJp dCBpbnN0cnVjdGlvbi4gICovCi0gICAgICAqbWVtYmxvY2sgKz0gU0NPUkVf SU5TVExFTjsKLSAgICB9Ci0gIGVsc2UgaWYgKGN1cl9wYyAtIHByZXZfcGMg PT0gNCkKLSAgICB7Ci0gICAgICAvKiBJcyAzMi1iaXQgaW5zdHJ1Y3Rpb24s IGluY3JlYXNlIE1FTUJMT0NLIGJ5IDQuICAqLwotICAgICAgKm1lbWJsb2Nr ICs9IFNDT1JFX0lOU1RMRU47Ci0gICAgfQotfQotCi1zdGF0aWMgaW5zdF90 ICoKLXNjb3JlX2ZldGNoX2luc3QgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo LCBDT1JFX0FERFIgYWRkciwgY2hhciAqbWVtYmxvY2spCi17Ci0gIHN0YXRp YyBpbnN0X3QgaW5zdCA9IHsgMCwgMCB9OwotICBjaGFyIGJ1ZltTQ09SRV9J TlNUTEVOXSA9IHsgMCB9OwotICBpbnQgYmlnOwotICBpbnQgcmV0OwotCi0g IGlmICh0YXJnZXRfaGFzX2V4ZWN1dGlvbiAmJiBtZW1ibG9jayAhPSBOVUxM KQotICAgIHsKLSAgICAgIC8qIEZldGNoIGluc3RydWN0aW9uIGZyb20gbG9j YWwgTUVNQkxPQ0suICAqLwotICAgICAgbWVtY3B5IChidWYsIG1lbWJsb2Nr LCBTQ09SRV9JTlNUTEVOKTsKLSAgICB9Ci0gIGVsc2UKLSAgICB7Ci0gICAg ICAvKiBGZXRjaCBpbnN0cnVjdGlvbiBmcm9tIHRhcmdldC4gICovCi0gICAg ICByZXQgPSB0YXJnZXRfcmVhZF9tZW1vcnkgKGFkZHIgJiB+MHgzLCBidWYs IFNDT1JFX0lOU1RMRU4pOwotICAgICAgaWYgKHJldCkKLSAgICAgICAgewot ICAgICAgICAgIGVycm9yICgiRXJyb3I6IHRhcmdldF9yZWFkX21lbW9yeSBp biBmaWxlOiVzLCBsaW5lOiVkISIsCi0gICAgICAgICAgICAgICAgICBfX0ZJ TEVfXywgX19MSU5FX18pOwotICAgICAgICAgIHJldHVybiAwOwotICAgICAg ICB9Ci0gICAgfQotCi0gIGluc3QucmF3ID0gZXh0cmFjdF91bnNpZ25lZF9p bnRlZ2VyIChidWYsIFNDT1JFX0lOU1RMRU4pOwotICBpbnN0LmlzMTUgPSAh KGluc3QucmF3ICYgMHg4MDAwODAwMCk7Ci0gIGluc3QudiA9IFJNX1BCSVRT IChpbnN0LnJhdyk7Ci0gIGJpZyA9IChnZGJhcmNoX2J5dGVfb3JkZXIgKGdk YmFyY2gpID09IEJGRF9FTkRJQU5fQklHKTsKLSAgaWYgKGluc3QuaXMxNSkK LSAgICB7Ci0gICAgICBpZiAoYmlnIF4gKChhZGRyICYgMHgyKSA9PSAyKSkK LSAgICAgICAgaW5zdC52ID0gR19GTEQgKGluc3QudiwgMjksIDE1KTsKLSAg ICAgIGVsc2UKLSAgICAgICAgaW5zdC52ID0gR19GTEQgKGluc3QudiwgMTQs IDApOwotICAgIH0KLSAgcmV0dXJuICZpbnN0OwotfQotCiBzdGF0aWMgQ09S RV9BRERSCi1zY29yZV9za2lwX3Byb2xvZ3VlIChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwgQ09SRV9BRERSIHBjKQorc2NvcmU3X3NraXBfcHJvbG9ndWUg KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgcGMpCiB7CiAg IENPUkVfQUREUiBjcGMgPSBwYzsKICAgaW50IGlzY2FuID0gMzIsIHN0YWNr X3N1YiA9IDA7CiAgIHdoaWxlIChpc2Nhbi0tID4gMCkKICAgICB7Ci0gICAg ICBpbnN0X3QgKmluc3QgPSBzY29yZV9mZXRjaF9pbnN0IChnZGJhcmNoLCBj cGMsIE5VTEwpOworICAgICAgaW5zdF90ICppbnN0ID0gc2NvcmU3X2ZldGNo X2luc3QgKGdkYmFyY2gsIGNwYywgTlVMTCk7CiAgICAgICBpZiAoIWluc3Qp CiAgICAgICAgIGJyZWFrOwotICAgICAgaWYgKCFpbnN0LT5pczE1ICYmICFz dGFja19zdWIKKyAgICAgIGlmICgoaW5zdC0+bGVuID09IDQpICYmICFzdGFj a19zdWIKICAgICAgICAgICAmJiAoR19GTEQgKGluc3QtPnYsIDI5LCAyNSkg PT0gMHgxCiAgICAgICAgICAgICAgICYmIEdfRkxEIChpbnN0LT52LCAyNCwg MjApID09IDB4MCkpCiAgICAgICAgIHsKICAgICAgICAgICAvKiBhZGRpIHIw LCBvZmZzZXQgKi8KLSAgICAgICAgICBwYyA9IHN0YWNrX3N1YiA9IGNwYyAr IFNDT1JFX0lOU1RMRU47CisgICAgICAgICAgc3RhY2tfc3ViID0gY3BjICsg U0NPUkVfSU5TVExFTjsKKyAgICAgICAgICBwYyA9IGNwYyArIFNDT1JFX0lO U1RMRU47CiAgICAgICAgIH0KLSAgICAgIGVsc2UgaWYgKCFpbnN0LT5pczE1 Ci0gICAgICAgICAgICAgICAmJiBpbnN0LT52ID09IFJNX1BCSVRTICgweDgw NDBiYzU2KSkKKyAgICAgIGVsc2UgaWYgKChpbnN0LT5sZW4gPT0gNCkKKyAg ICAgICAgICAgICAgICYmIChHX0ZMRCAoaW5zdC0+diwgMjksIDI1KSA9PSAw eDApCisgICAgICAgICAgICAgICAmJiAoR19GTEQgKGluc3QtPnYsIDI0LCAy MCkgPT0gMHgyKQorICAgICAgICAgICAgICAgJiYgKEdfRkxEIChpbnN0LT52 LCAxOSwgMTUpID09IDB4MCkKKyAgICAgICAgICAgICAgICYmIChHX0ZMRCAo aW5zdC0+diwgMTQsIDEwKSA9PSAweEYpCisgICAgICAgICAgICAgICAmJiAo R19GTEQgKGluc3QtPnYsIDksIDApID09IDB4NTYpKQogICAgICAgICB7CiAg ICAgICAgICAgLyogbXYgcjIsIHIwICAqLwogICAgICAgICAgIHBjID0gY3Bj ICsgU0NPUkVfSU5TVExFTjsKICAgICAgICAgICBicmVhazsKICAgICAgICAg fQotICAgICAgZWxzZSBpZiAoaW5zdC0+aXMxNQotICAgICAgICAgICAgICAg JiYgaW5zdC0+diA9PSBSTV9QQklUUyAoMHgwMjAzKSkKKyAgICAgIGVsc2Ug aWYgKChpbnN0LT5sZW4gPT0gMikKKyAgICAgICAgICAgICAgICYmIChHX0ZM RCAoaW5zdC0+diwgMTQsIDEyKSA9PSAweDApCisgICAgICAgICAgICAgICAm JiAoR19GTEQgKGluc3QtPnYsIDExLCA4KSA9PSAweDIpCisgICAgICAgICAg ICAgICAmJiAoR19GTEQgKGluc3QtPnYsIDcsIDQpID09IDB4MCkKKyAgICAg ICAgICAgICAgICYmIChHX0ZMRCAoaW5zdC0+diwgMywgMCkgPT0gMHgzKSkK ICAgICAgICAgewogICAgICAgICAgIC8qIG12ISByMiwgcjAgKi8KICAgICAg ICAgICBwYyA9IGNwYyArIFNDT1JFMTZfSU5TVExFTjsKICAgICAgICAgICBi cmVhazsKICAgICAgICAgfQotICAgICAgZWxzZSBpZiAoaW5zdC0+aXMxNQor ICAgICAgZWxzZSBpZiAoKGluc3QtPmxlbiA9PSAyKQogICAgICAgICAgICAg ICAgJiYgKChHX0ZMRCAoaW5zdC0+diwgMTQsIDEyKSA9PSAzKSAgICAvKiBq MTUgZm9ybSAqLwogICAgICAgICAgICAgICAgICAgIHx8IChHX0ZMRCAoaW5z dC0+diwgMTQsIDEyKSA9PSA0KSAvKiBiMTUgZm9ybSAqLwogICAgICAgICAg ICAgICAgICAgIHx8IChHX0ZMRCAoaW5zdC0+diwgMTQsIDEyKSA9PSAweDAK ICAgICAgICAgICAgICAgICAgICAgICAgJiYgR19GTEQgKGluc3QtPnYsIDMs IDApID09IDB4NCkpKSAvKiBiciEgKi8KICAgICAgICAgYnJlYWs7Ci0gICAg ICBlbHNlIGlmICghaW5zdC0+aXMxNQorICAgICAgZWxzZSBpZiAoKGluc3Qt PmxlbiA9PSA0KQogICAgICAgICAgICAgICAgJiYgKChHX0ZMRCAoaW5zdC0+ diwgMjksIDI1KSA9PSAyKSAgICAvKiBqMzIgZm9ybSAqLwogICAgICAgICAg ICAgICAgICAgIHx8IChHX0ZMRCAoaW5zdC0+diwgMjksIDI1KSA9PSA0KSAv KiBiMzIgZm9ybSAqLwogICAgICAgICAgICAgICAgICAgIHx8IChHX0ZMRCAo aW5zdC0+diwgMjksIDI1KSA9PSAweDAKICAgICAgICAgICAgICAgICAgICAg ICAgJiYgR19GTEQgKGluc3QtPnYsIDYsIDEpID09IDB4NCkpKSAgLyogYnIg Ki8KICAgICAgICAgYnJlYWs7CiAKLSAgICAgIGNwYyArPSBpbnN0LT5pczE1 ID8gU0NPUkUxNl9JTlNUTEVOIDogU0NPUkVfSU5TVExFTjsKKyAgICAgIGNw YyArPSAoaW5zdC0+bGVuID09IDIpID8gU0NPUkUxNl9JTlNUTEVOIDogU0NP UkVfSU5TVExFTjsKICAgICB9CiAgIHJldHVybiBwYzsKIH0KIAotc3RhdGlj IGludAotc2NvcmVfaW5fZnVuY3Rpb25fZXBpbG9ndWVfcCAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBjdXJfcGMpCitzdGF0aWMgQ09S RV9BRERSCitzY29yZTNfc2tpcF9wcm9sb2d1ZSAoc3RydWN0IGdkYmFyY2gg KmdkYmFyY2gsIENPUkVfQUREUiBwYykKIHsKLSAgaW5zdF90ICppbnN0ID0g c2NvcmVfZmV0Y2hfaW5zdCAoZ2RiYXJjaCwgY3VyX3BjLCBOVUxMKTsKLQot ICBpZiAoaW5zdC0+diA9PSAweDIzKQotICAgIHJldHVybiAxOyAgIC8qIG12 ISByMCwgcjIgKi8KLSAgZWxzZSBpZiAoR19GTEQgKGluc3QtPnYsIDE0LCAx MikgPT0gMHgyCi0gICAgICAgICAgICYmIEdfRkxEIChpbnN0LT52LCAzLCAw KSA9PSAweGEpCi0gICAgcmV0dXJuIDE7ICAgLyogcG9wISAqLwotICBlbHNl IGlmIChHX0ZMRCAoaW5zdC0+diwgMTQsIDEyKSA9PSAweDAKLSAgICAgICAg ICAgJiYgR19GTEQgKGluc3QtPnYsIDcsIDApID09IDB4MzQpCi0gICAgcmV0 dXJuIDE7ICAgLyogYnIhIHIzICovCi0gIGVsc2UgaWYgKEdfRkxEIChpbnN0 LT52LCAyOSwgMTUpID09IDB4MgotICAgICAgICAgICAmJiBHX0ZMRCAoaW5z dC0+diwgNiwgMSkgPT0gMHgyYikKKyAgQ09SRV9BRERSIGNwYyA9IHBjOwor ICBpbnQgaXNjYW4gPSAzMiwgc3RhY2tfc3ViID0gMDsKKyAgd2hpbGUgKGlz Y2FuLS0gPiAwKQorICAgIHsKKyAgICAgIGluc3RfdCAqaW5zdCA9IHNjb3Jl M19hZGp1c3RfcGNfYW5kX2ZldGNoX2luc3QgKCZjcGMsIE5VTEwpOworICAg ICAgaWYgKCFpbnN0KQorICAgICAgICBicmVhazsKKyAgICAgIGlmIChpbnN0 LT5sZW4gPT0gNCAmJiAhc3RhY2tfc3ViCisgICAgICAgICAgJiYgKEdfRkxE IChpbnN0LT52LCAyOSwgMjUpID09IDB4MSkKKyAgICAgICAgICAmJiAoR19G TEQgKGluc3QtPnYsIDE5LCAxNykgPT0gMHgwKQorCSAgJiYgKEdfRkxEIChp bnN0LT52LCAyNCwgMjApID09IDB4MCkpCisgICAgICAgIHsKKyAgICAgICAg ICAvKiBhZGRpIHIwLCBvZmZzZXQgKi8KKyAgICAgICAgICBzdGFja19zdWIg PSBjcGMgKyBpbnN0LT5sZW47CisgICAgICAgICAgcGMgPSBjcGMgKyBpbnN0 LT5sZW47CisgICAgICAgIH0KKyAgICAgIGVsc2UgaWYgKGluc3QtPmxlbiA9 PSA0CisgICAgICAgICAgICAgICAmJiAoR19GTEQgKGluc3QtPnYsIDI5LCAy NSkgPT0gMHgwKQorCSAgICAgICAmJiAoR19GTEQgKGluc3QtPnYsIDI0LCAy MCkgPT0gMHgyKQorCSAgICAgICAmJiAoR19GTEQgKGluc3QtPnYsIDE5LCAx NSkgPT0gMHgwKQorCSAgICAgICAmJiAoR19GTEQgKGluc3QtPnYsIDE0LCAx MCkgPT0gMHhGKQorCSAgICAgICAmJiAoR19GTEQgKGluc3QtPnYsIDksIDAp ID09IDB4NTYpKQorICAgICAgICB7CisgICAgICAgICAgLyogbXYgcjIsIHIw ICAqLworICAgICAgICAgIHBjID0gY3BjICsgaW5zdC0+bGVuOworICAgICAg ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICBlbHNlIGlmICgoaW5zdC0+ bGVuID09IDIpCisgICAgICAgICAgICAgICAmJiAoR19GTEQgKGluc3QtPnYs IDE0LCAxMCkgPT0gMHgxMCkKKyAgICAgICAgICAgICAgICYmIChHX0ZMRCAo aW5zdC0+diwgOSwgNSkgPT0gMHgyKQorCSAgICAgICAmJiAoR19GTEQgKGlu c3QtPnYsIDQsIDApID09IDB4MCkpCisgICAgICAgIHsKKyAgICAgICAgICAv KiBtdiEgcjIsIHIwICovCisgICAgICAgICAgcGMgPSBjcGMgKyBpbnN0LT5s ZW47CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgIGVsc2Ug aWYgKGluc3QtPmxlbiA9PSAyCisgICAgICAgICAgICAgICAmJiAoKEdfRkxE IChpbnN0LT52LCAxNCwgMTIpID09IDMpIC8qIGIxNSBmb3JtICovCisgICAg ICAgICAgICAgICAgICAgfHwgKEdfRkxEIChpbnN0LT52LCAxNCwgMTIpID09 IDB4MAorICAgICAgICAgICAgICAgICAgICAgICAmJiBHX0ZMRCAoaW5zdC0+ diwgMTEsIDUpID09IDB4NCkpKSAvKiBiciEgKi8KKyAgICAgICAgYnJlYWs7 CisgICAgICBlbHNlIGlmIChpbnN0LT5sZW4gPT0gNAorICAgICAgICAgICAg ICAgJiYgKChHX0ZMRCAoaW5zdC0+diwgMjksIDI1KSA9PSAyKSAgICAvKiBq MzIgZm9ybSAqLworICAgICAgICAgICAgICAgICAgIHx8IChHX0ZMRCAoaW5z dC0+diwgMjksIDI1KSA9PSA0KSkpIC8qIGIzMiBmb3JtICovCisgICAgICAg IGJyZWFrOworCisgICAgICBjcGMgKz0gaW5zdC0+bGVuOworICAgIH0KKyAg cmV0dXJuIHBjOworfQorCitzdGF0aWMgaW50CitzY29yZTdfaW5fZnVuY3Rp b25fZXBpbG9ndWVfcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVf QUREUiBjdXJfcGMpCit7CisgIGluc3RfdCAqaW5zdCA9IHNjb3JlN19mZXRj aF9pbnN0IChnZGJhcmNoLCBjdXJfcGMsIE5VTEwpOworCisgIGlmIChpbnN0 LT52ID09IDB4MjMpCisgICAgcmV0dXJuIDE7ICAgLyogbXYhIHIwLCByMiAq LworICBlbHNlIGlmIChHX0ZMRCAoaW5zdC0+diwgMTQsIDEyKSA9PSAweDIK KyAgICAgICAgICAgJiYgR19GTEQgKGluc3QtPnYsIDMsIDApID09IDB4YSkK KyAgICByZXR1cm4gMTsgICAvKiBwb3AhICovCisgIGVsc2UgaWYgKEdfRkxE IChpbnN0LT52LCAxNCwgMTIpID09IDB4MAorICAgICAgICAgICAmJiBHX0ZM RCAoaW5zdC0+diwgNywgMCkgPT0gMHgzNCkKKyAgICByZXR1cm4gMTsgICAv KiBiciEgcjMgKi8KKyAgZWxzZSBpZiAoR19GTEQgKGluc3QtPnYsIDI5LCAx NSkgPT0gMHgyCisgICAgICAgICAgICYmIEdfRkxEIChpbnN0LT52LCA2LCAx KSA9PSAweDJiKQogICAgIHJldHVybiAxOyAgIC8qIG12IHIwLCByMiAqLwog ICBlbHNlIGlmIChHX0ZMRCAoaW5zdC0+diwgMjksIDI1KSA9PSAweDAKICAg ICAgICAgICAgJiYgR19GTEQgKGluc3QtPnYsIDYsIDEpID09IDB4NApAQCAt NzUxLDggKzc5NCwxMDQgQEAKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGlj IGludAorc2NvcmUzX2luX2Z1bmN0aW9uX2VwaWxvZ3VlX3AgKHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgY3VyX3BjKQoreworICBDT1JF X0FERFIgcGMgPSBjdXJfcGM7CisgIGluc3RfdCAqaW5zdCA9IHNjb3JlM19h ZGp1c3RfcGNfYW5kX2ZldGNoX2luc3QgKCZwYywgTlVMTCk7CisKKyAgaWYg KGluc3QtPmxlbiA9PSAyCisgICAgICAmJiAoR19GTEQgKGluc3QtPnYsIDE0 LCAxMCkgPT0gMHgxMCkKKyAgICAgICYmIChHX0ZMRCAoaW5zdC0+diwgOSwg NSkgPT0gMHgwKQorICAgICAgJiYgKEdfRkxEIChpbnN0LT52LCA0LCAwKSA9 PSAweDIpKQorICAgIHJldHVybiAxOyAgIC8qIG12ISByMCwgcjIgKi8KKyAg ZWxzZSBpZiAoaW5zdC0+bGVuID09IDQKKyAgICAgICAgICAgJiYgKEdfRkxE IChpbnN0LT52LCAyOSwgMjUpID09IDB4MCkKKyAgICAgICAgICAgJiYgKEdf RkxEIChpbnN0LT52LCAyNCwgMjApID09IDB4MikKKyAgICAgICAgICAgJiYg KEdfRkxEIChpbnN0LT52LCAxOSwgMTUpID09IDB4MCkKKwkgICAmJiAoR19G TEQgKGluc3QtPnYsIDE0LCAxMCkgPT0gMHhGKQorCSAgICYmIChHX0ZMRCAo aW5zdC0+diwgOSwgMCkgPT0gMHg1NikpCisgICAgcmV0dXJuIDE7ICAgLyog bXYgcjAsIHIyICovCisgIGVsc2UgaWYgKGluc3QtPmxlbiA9PSAyCisgICAg ICAgICAgICYmIChHX0ZMRCAoaW5zdC0+diwgMTQsIDEyKSA9PSAweDApCisg ICAgICAgICAgICYmIChHX0ZMRCAoaW5zdC0+diwgMTEsIDUpID09IDB4Mikp CisgICAgcmV0dXJuIDE7ICAgLyogcG9wISAqLworICBlbHNlIGlmIChpbnN0 LT5sZW4gPT0gMgorICAgICAgICAgICAmJiAoR19GTEQgKGluc3QtPnYsIDE0 LCAxMikgPT0gMHgwKQorICAgICAgICAgICAmJiAoR19GTEQgKGluc3QtPnYs IDExLCA3KSA9PSAweDApCisgICAgICAgICAgICYmIChHX0ZMRCAoaW5zdC0+ diwgNiwgNSkgPT0gMHgyKSkKKyAgICByZXR1cm4gMTsgICAvKiBycG9wISAq LworICBlbHNlIGlmIChpbnN0LT5sZW4gPT0gMgorICAgICAgICAgICAmJiAo R19GTEQgKGluc3QtPnYsIDE0LCAxMikgPT0gMHgwKQorICAgICAgICAgICAm JiAoR19GTEQgKGluc3QtPnYsIDExLCA1KSA9PSAweDQpCisgICAgICAgICAg ICYmIChHX0ZMRCAoaW5zdC0+diwgNCwgMCkgPT0gMHgzKSkKKyAgICByZXR1 cm4gMTsgICAvKiBiciEgcjMgKi8KKyAgZWxzZSBpZiAoaW5zdC0+bGVuID09 IDQKKyAgICAgICAgICAgJiYgKEdfRkxEIChpbnN0LT52LCAyOSwgMjUpID09 IDB4MCkKKyAgICAgICAgICAgJiYgKEdfRkxEIChpbnN0LT52LCAyNCwgMjAp ID09IDB4MCkKKyAgICAgICAgICAgJiYgKEdfRkxEIChpbnN0LT52LCAxOSwg MTUpID09IDB4MykKKyAgICAgICAgICAgJiYgKEdfRkxEIChpbnN0LT52LCAx NCwgMTApID09IDB4RikKKyAgICAgICAgICAgJiYgKEdfRkxEIChpbnN0LT52 LCA5LCAwKSA9PSAweDgpKQorICAgIHJldHVybiAxOyAgIC8qIGJyIHIzICov CisgIGVsc2UKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGNoYXIgKgor c2NvcmU3X21hbGxvY19hbmRfZ2V0X21lbWJsb2NrIChDT1JFX0FERFIgYWRk ciwgQ09SRV9BRERSIHNpemUpCit7CisgIGludCByZXQ7CisgIGNoYXIgKm1l bWJsb2NrID0gTlVMTDsKKworICBpZiAoc2l6ZSA8IDApCisgICAgeworICAg ICAgZXJyb3IgKCJFcnJvcjogbWFsbG9jIHNpemUgPCAwIGluIGZpbGU6JXMs IGxpbmU6JWQhIiwKKyAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18p OworICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICBlbHNlIGlmIChzaXpl ID09IDApCisgICAgcmV0dXJuIE5VTEw7CisKKyAgbWVtYmxvY2sgPSAoY2hh ciAqKSB4bWFsbG9jIChzaXplKTsKKyAgbWVtc2V0IChtZW1ibG9jaywgMCwg c2l6ZSk7CisgIHJldCA9IHRhcmdldF9yZWFkX21lbW9yeSAoYWRkciAmIH4w eDMsIG1lbWJsb2NrLCBzaXplKTsKKyAgaWYgKHJldCkKKyAgICB7CisgICAg ICBlcnJvciAoIkVycm9yOiB0YXJnZXRfcmVhZF9tZW1vcnkgaW4gZmlsZTol cywgbGluZTolZCEiLAorICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVf Xyk7CisgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgIHJldHVybiBtZW1i bG9jazsKK30KKworc3RhdGljIHZvaWQKK3Njb3JlN19mcmVlX21lbWJsb2Nr IChjaGFyICptZW1ibG9jaykKK3sKKyAgeGZyZWUgKG1lbWJsb2NrKTsKK30K Kworc3RhdGljIHZvaWQKK3Njb3JlN19hZGp1c3RfbWVtYmxvY2tfcHRyIChj aGFyICoqbWVtYmxvY2ssIENPUkVfQUREUiBwcmV2X3BjLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgQ09SRV9BRERSIGN1cl9wYykKK3sKKyAgaWYg KHByZXZfcGMgPT0gLTEpCisgICAgeworICAgICAgLyogRmlyc3QgdGltZSBj YWxsIHRoaXMgZnVuY3Rpb24sIGRvIG5vdGhpbmcuICAqLworICAgIH0KKyAg ZWxzZSBpZiAoY3VyX3BjIC0gcHJldl9wYyA9PSAyICYmIChjdXJfcGMgJiAw eDMpID09IDApCisgICAgeworICAgICAgLyogRmlyc3QgMTYtYml0IGluc3Ry dWN0aW9uLCB0aGVuIDMyLWJpdCBpbnN0cnVjdGlvbi4gICovCisgICAgICAq bWVtYmxvY2sgKz0gU0NPUkVfSU5TVExFTjsKKyAgICB9CisgIGVsc2UgaWYg KGN1cl9wYyAtIHByZXZfcGMgPT0gNCkKKyAgICB7CisgICAgICAvKiBJcyAz Mi1iaXQgaW5zdHJ1Y3Rpb24sIGluY3JlYXNlIE1FTUJMT0NLIGJ5IDQuICAq LworICAgICAgKm1lbWJsb2NrICs9IFNDT1JFX0lOU1RMRU47CisgICAgfQor fQorCiBzdGF0aWMgdm9pZAotc2NvcmVfYW5hbHl6ZV9wcm9sb2d1ZSAoQ09S RV9BRERSIHN0YXJ0YWRkciwgQ09SRV9BRERSIHBjLAorc2NvcmU3X2FuYWx5 emVfcHJvbG9ndWUgKENPUkVfQUREUiBzdGFydGFkZHIsIENPUkVfQUREUiBw YywKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmcmFtZV9pbmZv ICp0aGlzX2ZyYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IHNjb3JlX2ZyYW1lX2NhY2hlICp0aGlzX2NhY2hlKQogewpAQCAtNzc0LDcg KzkxMyw3IEBACiAKICAgLyogQWxsb2NhdGUgTUVNQkxPQ0sgaWYgUEMgLSBT VEFSVEFERFIgPiAwLiAgKi8KICAgbWVtYmxvY2tfcHRyID0gbWVtYmxvY2sg PQotICAgIHNjb3JlX21hbGxvY19hbmRfZ2V0X21lbWJsb2NrIChzdGFydGFk ZHIsIHBjIC0gc3RhcnRhZGRyKTsKKyAgICBzY29yZTdfbWFsbG9jX2FuZF9n ZXRfbWVtYmxvY2sgKHN0YXJ0YWRkciwgcGMgLSBzdGFydGFkZHIpOwogCiAg IHNwID0gZ2V0X2ZyYW1lX3JlZ2lzdGVyX3Vuc2lnbmVkICh0aGlzX2ZyYW1l LCBTQ09SRV9TUF9SRUdOVU0pOwogICBmcCA9IGdldF9mcmFtZV9yZWdpc3Rl cl91bnNpZ25lZCAodGhpc19mcmFtZSwgU0NPUkVfRlBfUkVHTlVNKTsKQEAg LTc4NiwxNyArOTI1LDE4IEBACiAgICAgICAgIHsKICAgICAgICAgICAvKiBS ZWFkaW5nIG1lbW9yeSBibG9jayBmcm9tIHRhcmdldCBzdWNjZWZ1bGx5IGFu ZCBnb3QgYWxsCiAgICAgICAgICAgICAgdGhlIGluc3RydWN0aW9ucyhmcm9t IFNUQVJUQUREUiB0byBQQykgbmVlZGVkLiAgKi8KLSAgICAgICAgICBzY29y ZV9hZGp1c3RfbWVtYmxvY2tfcHRyICgmbWVtYmxvY2ssIHByZXZfcGMsIGN1 cl9wYyk7Ci0gICAgICAgICAgaW5zdCA9IHNjb3JlX2ZldGNoX2luc3QgKGdk YmFyY2gsIGN1cl9wYywgbWVtYmxvY2spOworICAgICAgICAgIHNjb3JlN19h ZGp1c3RfbWVtYmxvY2tfcHRyICgmbWVtYmxvY2ssIHByZXZfcGMsIGN1cl9w Yyk7CisgICAgICAgICAgaW5zdCA9IHNjb3JlN19mZXRjaF9pbnN0IChnZGJh cmNoLCBjdXJfcGMsIG1lbWJsb2NrKTsKICAgICAgICAgfQogICAgICAgZWxz ZQogICAgICAgICB7CiAgICAgICAgICAgLyogT3RoZXJ3aXNlLCB3ZSBmZXRj aCA0IGJ5dGVzIGZyb20gdGFyZ2V0LCBhbmQgR0RCIGFsc28KICAgICAgICAg ICAgICB3b3JrIGNvcnJlY3RseS4gICovCi0gICAgICAgICAgaW5zdCA9IHNj b3JlX2ZldGNoX2luc3QgKGdkYmFyY2gsIGN1cl9wYywgTlVMTCk7CisgICAg ICAgICAgaW5zdCA9IHNjb3JlN19mZXRjaF9pbnN0IChnZGJhcmNoLCBjdXJf cGMsIE5VTEwpOwogICAgICAgICB9CiAKLSAgICAgIGlmIChpbnN0LT5pczE1 ID09IDEpCisgICAgICAvKiBGSVhNRTogbWFrZSBhIGZ1bGwtcG93ZXIgcHJv bG9ndWUgYW5hbHl6ZXIgKi8KKyAgICAgIGlmIChpbnN0LT5sZW4gPT0gMikK ICAgICAgICAgewogICAgICAgICAgIGluc3RfbGVuID0gU0NPUkUxNl9JTlNU TEVOOwogCkBAIC04NDQsMjcgKzk4NCw0OCBAQAogICAgICAgICB7CiAgICAg ICAgICAgaW5zdF9sZW4gPSBTQ09SRV9JTlNUTEVOOwogCi0gICAgICAgICAg aWYgKEdfRkxEIChpbnN0LT52LCAyOSwgMTUpID09IDB4YzYwCi0gICAgICAg ICAgICAgICYmIEdfRkxEIChpbnN0LT52LCAyLCAwKSA9PSAweDQpCisgICAg ICAgICAgaWYgKEdfRkxEKGluc3QtPnYsIDI5LCAyNSkgPT0gMHgzCisgICAg ICAgICAgICAgICYmIEdfRkxEKGluc3QtPnYsIDIsIDApID09IDB4NAorICAg ICAgICAgICAgICAmJiBHX0ZMRChpbnN0LT52LCAxOSwgMTUpID09IDApCiAg ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIC8qIHN3IHIzLCBbcjAsIG9m ZnNldF0rICovCi0gICAgICAgICAgICAgIHNwX29mZnNldCArPSBTQ09SRV9J TlNUTEVOOwotICAgICAgICAgICAgICBpZiAocmFfb2Zmc2V0X3AgPT0gMCkK LSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICByYV9vZmZz ZXQgPSBzcF9vZmZzZXQ7Ci0gICAgICAgICAgICAgICAgICByYV9vZmZzZXRf cCA9IDE7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8q IHN3IHJELCBbcjAsIG9mZnNldF0rICovCisgICAgICAgICAgICAgICAgc3Bf b2Zmc2V0ICs9IFNDT1JFX0lOU1RMRU47CisKKyAgICAgICAgICAgICAgICBp ZiAoR19GTEQoaW5zdC0+diwgMjQsIDIwKSA9PSAweDMpCisgICAgICAgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgLyogckQgPSByMyAq LworICAgICAgICAgICAgICAgICAgICAgIGlmIChyYV9vZmZzZXRfcCA9PSAw KQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJhX29mZnNldCA9IHNwX29mZnNldDsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICByYV9vZmZzZXRfcCA9IDE7CisgICAgICAg ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgZWxzZSBpZiAoR19GTEQoaW5zdC0+diwgMjQsIDIwKSA9 PSAweDIpCisgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg ICAgICAgLyogckQgPSByMiAqLworICAgICAgICAgICAgICAgICAgICAgIGlm IChmcF9vZmZzZXRfcCA9PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAg eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwX29mZnNldCA9IHNw X29mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcF9vZmZz ZXRfcCA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKEdf RkxEIChpbnN0LT52LCAyOSwgMTUpID09IDB4YzQwCi0gICAgICAgICAgICAg ICYmIEdfRkxEIChpbnN0LT52LCAyLCAwKSA9PSAweDQpCisgICAgICAgICAg ZWxzZSBpZiAoR19GTEQoaW5zdC0+diwgMjksIDI1KSA9PSAweDE0CisgICAg ICAgICAgICAgICAgICAgJiYgR19GTEQoaW5zdC0+diwgMTksMTUpID09IDAp CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIC8qIHN3IHIyLCBbcjAs IG9mZnNldF0rICovCi0gICAgICAgICAgICAgIHNwX29mZnNldCArPSBTQ09S RV9JTlNUTEVOOwotICAgICAgICAgICAgICBpZiAoZnBfb2Zmc2V0X3AgPT0g MCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBmcF9v ZmZzZXQgPSBzcF9vZmZzZXQ7Ci0gICAgICAgICAgICAgICAgICBmcF9vZmZz ZXRfcCA9IDE7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg IC8qIHN3IHJELCBbcjAsIG9mZnNldF0gKi8KKyAgICAgICAgICAgICAgICBp ZiAoR19GTEQoaW5zdC0+diwgMjQsIDIwKSA9PSAweDMpCisgICAgICAgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgLyogckQgPSByMyAq LworICAgICAgICAgICAgICAgICAgICAgIHJhX29mZnNldCA9IHNwX29mZnNl dCAtIEdfRkxEKGluc3QtPnYsIDE0LCAwKTsKKyAgICAgICAgICAgICAgICAg ICAgICByYV9vZmZzZXRfcCA9IDE7CisgICAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgZWxzZSBpZiAoR19GTEQoaW5zdC0+diwgMjQsIDIw KSA9PSAweDIpCisgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgICAgICAgLyogckQgPSByMiAqLworICAgICAgICAgICAgICAgICAgICAg IGZwX29mZnNldCA9IHNwX29mZnNldCAtIEdfRkxEKGluc3QtPnYsIDE0LCAw KTsKKyAgICAgICAgICAgICAgICAgICAgICBmcF9vZmZzZXRfcCA9IDE7Cisg ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAg ZWxzZSBpZiAoR19GTEQgKGluc3QtPnYsIDI5LCAxNSkgPT0gMHgxYzYwCiAg ICAgICAgICAgICAgICAgICAgJiYgR19GTEQgKGluc3QtPnYsIDIsIDApID09 IDB4MCkKQEAgLTg5NSw3ICsxMDU2LDcgQEAKICAgICAgICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2F2ZV92ID0gaW5z dC0+djsKICAgICAgICAgICAgICAgICAgIGluc3RfdCAqaW5zdDIgPQotICAg ICAgICAgICAgICAgICAgICBzY29yZV9mZXRjaF9pbnN0IChnZGJhcmNoLCBj dXJfcGMgKyBTQ09SRV9JTlNUTEVOLCBOVUxMKTsKKyAgICAgICAgICAgICAg ICAgICAgc2NvcmU3X2ZldGNoX2luc3QgKGdkYmFyY2gsIGN1cl9wYyArIFND T1JFX0lOU1RMRU4sIE5VTEwpOwogICAgICAgICAgICAgICAgICAgaWYgKGlu c3QyLT52ID09IDB4MjMpCiAgICAgICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgICAvKiBtdiEgcjAsIHIyICovCkBAIC05MzMsNyAr MTA5NCwyNDkgQEAKIAogICAvKiBEb24ndCBmb3JnZXQgdG8gZnJlZSBNRU1C TE9DSyBpZiB3ZSBhbGxvY2F0ZWQgaXQuICAqLwogICBpZiAobWVtYmxvY2tf cHRyICE9IE5VTEwpCi0gICAgc2NvcmVfZnJlZV9tZW1ibG9jayAobWVtYmxv Y2tfcHRyKTsKKyAgICBzY29yZTdfZnJlZV9tZW1ibG9jayAobWVtYmxvY2tf cHRyKTsKK30KKworc3RhdGljIHZvaWQKK3Njb3JlM19hbmFseXplX3Byb2xv Z3VlIChDT1JFX0FERFIgc3RhcnRhZGRyLCBDT1JFX0FERFIgcGMsCisgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19m cmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY29yZV9m cmFtZV9jYWNoZSAqdGhpc19jYWNoZSkKK3sKKyAgQ09SRV9BRERSIHNwOwor ICBDT1JFX0FERFIgZnA7CisgIENPUkVfQUREUiBjdXJfcGMgPSBzdGFydGFk ZHI7CisKKyAgaW50IHNwX29mZnNldCA9IDA7CisgIGludCByYV9vZmZzZXQg PSAwOworICBpbnQgZnBfb2Zmc2V0ID0gMDsKKyAgaW50IHJhX29mZnNldF9w ID0gMDsKKyAgaW50IGZwX29mZnNldF9wID0gMDsKKyAgaW50IGluc3RfbGVu ID0gMDsKKworICBDT1JFX0FERFIgcHJldl9wYyA9IC0xOworCisgIHNwID0g Z2V0X2ZyYW1lX3JlZ2lzdGVyX3Vuc2lnbmVkICh0aGlzX2ZyYW1lLCBTQ09S RV9TUF9SRUdOVU0pOworICBmcCA9IGdldF9mcmFtZV9yZWdpc3Rlcl91bnNp Z25lZCAodGhpc19mcmFtZSwgU0NPUkVfRlBfUkVHTlVNKTsKKworICBmb3Ig KDsgY3VyX3BjIDwgcGM7IHByZXZfcGMgPSBjdXJfcGMsIGN1cl9wYyArPSBp bnN0X2xlbikKKyAgICB7CisgICAgICBpbnN0X3QgKmluc3QgPSBOVUxMOwor CisgICAgICBpbnN0ID0gc2NvcmUzX2FkanVzdF9wY19hbmRfZmV0Y2hfaW5z dCAoJmN1cl9wYywgJmluc3RfbGVuKTsKKworICAgICAgLyogRklYTUU6IG1h a2UgYSBmdWxsLXBvd2VyIHByb2xvZ3VlIGFuYWx5emVyICovCisgICAgICBp ZiAoaW5zdC0+bGVuID09IDIpCisgICAgICAgIHsKKyAgICAgICAgICBpZiAo R19GTEQgKGluc3QtPnYsIDE0LCAxMikgPT0gMHgwCisgICAgICAgICAgICAg ICYmIEdfRkxEIChpbnN0LT52LCAxMSwgNykgPT0gMHgwCisgICAgICAgICAg ICAgICYmIEdfRkxEIChpbnN0LT52LCA2LCA1KSA9PSAweDMpCisgICAgICAg ICAgICB7CisgICAgICAgICAgICAgIC8qIHB1c2ghICovCisgICAgICAgICAg ICAgIHNwX29mZnNldCArPSA0OworCisgICAgICAgICAgICAgIGlmIChHX0ZM RCAoaW5zdC0+diwgNCwgMCkgPT0gMHgzCisgICAgICAgICAgICAgICAgICAm JiByYV9vZmZzZXRfcCA9PSAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAg ICAgICAgICAgICAgIC8qIHB1c2ghIHIzLCBbcjBdICovCisgICAgICAgICAg ICAgICAgICByYV9vZmZzZXQgPSBzcF9vZmZzZXQ7CisgICAgICAgICAgICAg ICAgICByYV9vZmZzZXRfcCA9IDE7CisgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICBlbHNlIGlmIChHX0ZMRCAoaW5zdC0+diwgNCwgMCkgPT0g MHgyCisgICAgICAgICAgICAgICAgICAgICAgICYmIGZwX29mZnNldF9wID09 IDApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgLyog cHVzaCEgcjIsIFtyMF0gKi8KKyAgICAgICAgICAgICAgICAgIGZwX29mZnNl dCA9IHNwX29mZnNldDsKKyAgICAgICAgICAgICAgICAgIGZwX29mZnNldF9w ID0gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg ICAgICAgZWxzZSBpZiAoR19GTEQgKGluc3QtPnYsIDE0LCAxMikgPT0gMHg2 CisgICAgICAgICAgICAgICAgICAgJiYgR19GTEQgKGluc3QtPnYsIDExLCAx MCkgPT0gMHgzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAvKiBy cHVzaCEgKi8KKyAgICAgICAgICAgICAgaW50IHN0YXJ0X3IgPSBHX0ZMRCAo aW5zdC0+diwgOSwgNSk7CisgICAgICAgICAgICAgIGludCBjbnQgPSBHX0ZM RCAoaW5zdC0+diwgNCwgMCk7CisgICAgIAorICAgICAgICAgICAgICBpZiAo KHJhX29mZnNldF9wID09IDApCisJCSAgJiYgKHN0YXJ0X3IgPD0gU0NPUkVf UkFfUkVHTlVNKQorICAgICAgICAgICAgICAgICAgJiYgKFNDT1JFX1JBX1JF R05VTSA8IHN0YXJ0X3IgKyBjbnQpKQorICAgICAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgICAgIC8qIHJwdXNoISBjb250YWlucyByMyAqLworICAg ICAgICAgICAgICAgICAgcmFfb2Zmc2V0X3AgPSAxOworICAgICAgICAgICAg ICAgICAgcmFfb2Zmc2V0ID0gc3Bfb2Zmc2V0ICsgNCAqIChTQ09SRV9SQV9S RUdOVU0gLSBzdGFydF9yKSArIDQ7CisgICAgICAgICAgICAgICAgfQorCisg ICAgICAgICAgICAgIGlmICgoZnBfb2Zmc2V0X3AgPT0gMCkKKwkJICAmJiAo c3RhcnRfciA8PSBTQ09SRV9GUF9SRUdOVU0pCisgICAgICAgICAgICAgICAg ICAmJiAoU0NPUkVfRlBfUkVHTlVNIDwgc3RhcnRfciArIGNudCkpCisgICAg ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgLyogcnB1c2ghIGNv bnRhaW5zIHIyICovCisgICAgICAgICAgICAgICAgICBmcF9vZmZzZXRfcCA9 IDE7CisgICAgICAgICAgICAgICAgICBmcF9vZmZzZXQgPSBzcF9vZmZzZXQg KyA0ICogKFNDT1JFX0ZQX1JFR05VTSAtIHN0YXJ0X3IpICsgNDsKKyAgICAg ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgc3Bfb2Zmc2V0ICs9IDQg KiBjbnQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAoR19G TEQgKGluc3QtPnYsIDE0LCAxMikgPT0gMHgwCisgICAgICAgICAgICAgICAg ICAgJiYgR19GTEQgKGluc3QtPnYsIDExLCA3KSA9PSAweDAKKyAgICAgICAg ICAgICAgICAgICAmJiBHX0ZMRCAoaW5zdC0+diwgNiwgNSkgPT0gMHgyKQor ICAgICAgICAgICAgeworICAgICAgICAgICAgICAvKiBwb3AhICovCisgICAg ICAgICAgICAgIHNwX29mZnNldCAtPSA0OworICAgICAgICAgICAgfQorICAg ICAgICAgIGVsc2UgaWYgKEdfRkxEIChpbnN0LT52LCAxNCwgMTIpID09IDB4 NgorICAgICAgICAgICAgICAgICAgICYmIEdfRkxEIChpbnN0LT52LCAxMSwg MTApID09IDB4MikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgLyog cnBvcCEgKi8KKyAgICAgICAgICAgICAgc3Bfb2Zmc2V0IC09IDQgKiBHX0ZM RCAoaW5zdC0+diwgNCwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAg ZWxzZSBpZiAoR19GTEQgKGluc3QtPnYsIDE0LCAxMikgPT0gMHg1CisgICAg ICAgICAgICAgICAgICAgJiYgR19GTEQgKGluc3QtPnYsIDExLCAxMCkgPT0g MHgzCisgICAgICAgICAgICAgICAgICAgJiYgR19GTEQgKGluc3QtPnYsIDks IDYpID09IDB4MCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgLyog YWRkaSEgcjAsIC1vZmZzZXQgKi8KKyAgICAgICAgICAgICAgaW50IGltbSA9 IEdfRkxEIChpbnN0LT52LCA1LCAwKTsKKwkgICAgICBpZiAoaW1tID4+IDUp CisJCWltbSA9IC0oMHgzRiAtIGltbSArIDEpOworCSAgICAgIHNwX29mZnNl dCAtPSBpbW07CisgICAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZiAo R19GTEQgKGluc3QtPnYsIDE0LCAxMikgPT0gMHg1CisgICAgICAgICAgICAg ICAgICAgJiYgR19GTEQgKGluc3QtPnYsIDExLCAxMCkgPT0gMHgzCisgICAg ICAgICAgICAgICAgICAgJiYgR19GTEQgKGluc3QtPnYsIDksIDYpID09IDB4 MikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgLyogYWRkaSEgcjIs IG9mZnNldCAqLworICAgICAgICAgICAgICBpZiAocGMgLSBjdXJfcGMgPj0g MikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBpbnQgc2F2ZV92ID0gaW5zdC0+djsKKyAgICAgICAgICAgICAgICAg IGluc3RfdCAqaW5zdDI7CisKKwkJICAgICAgICAgIGN1cl9wYyArPSBpbnN0 LT5sZW47CisgICAgICAgICAgICAgICAgICBpbnN0MiA9IHNjb3JlM19hZGp1 c3RfcGNfYW5kX2ZldGNoX2luc3QgKCZjdXJfcGMsIE5VTEwpOworCisgICAg ICAgICAgICAgICAgICBpZiAoaW5zdDItPmxlbiA9PSAyCisgICAgICAgICAg ICAgICAgICAgICAgJiYgR19GTEQgKGluc3QyLT52LCAxNCwgMTApID09IDB4 MTAKKyAgICAgICAgICAgICAgICAgICAgICAmJiBHX0ZMRCAoaW5zdDItPnYs IDksIDUpID09IDB4MAorICAgICAgICAgICAgICAgICAgICAgICYmIEdfRkxE IChpbnN0Mi0+diwgNCwgMCkgPT0gMHgyKQorICAgICAgICAgICAgICAgICAg ICB7CisgICAgICAgICAgICAgICAgICAgICAgLyogbXYhIHIwLCByMiAqLwor ICAgICAgICAgICAgICAgICAgICAgIGludCBpbW0gPSBHX0ZMRCAoaW5zdC0+ diwgNSwgMCk7CisJICAgICAgICAgICAgICBpZiAoaW1tID4+IDUpCisJCSAg ICAgICAgaW1tID0gLSgweDNGIC0gaW1tICsgMSk7CisgICAgICAgICAgICAg ICAgICAgICAgc3Bfb2Zmc2V0IC09IGltbTsKKyAgICAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgIH0KKwkgICAgfQorICAgICAgICB9Cisg ICAgICBlbHNlIGlmIChpbnN0LT5sZW4gPT0gNCkKKyAgICAgICAgeworICAg ICAgICAgIGlmIChHX0ZMRCAoaW5zdC0+diwgMjksIDI1KSA9PSAweDMKKyAg ICAgICAgICAgICAgJiYgR19GTEQgKGluc3QtPnYsIDIsIDApID09IDB4NAor ICAgICAgICAgICAgICAmJiBHX0ZMRCAoaW5zdC0+diwgMjQsIDIwKSA9PSAw eDMKKyAgICAgICAgICAgICAgJiYgR19GTEQgKGluc3QtPnYsIDE5LCAxNSkg PT0gMHgwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAvKiBzdyBy MywgW3IwLCBvZmZzZXRdKyAqLworICAgICAgICAgICAgICBzcF9vZmZzZXQg Kz0gaW5zdC0+bGVuOworICAgICAgICAgICAgICBpZiAocmFfb2Zmc2V0X3Ag PT0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBy YV9vZmZzZXQgPSBzcF9vZmZzZXQ7CisgICAgICAgICAgICAgICAgICByYV9v ZmZzZXRfcCA9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg fQorICAgICAgICAgIGVsc2UgaWYgKEdfRkxEIChpbnN0LT52LCAyOSwgMjUp ID09IDB4MworICAgICAgICAgICAgICAgICAgICYmIEdfRkxEIChpbnN0LT52 LCAyLCAwKSA9PSAweDQKKyAgICAgICAgICAgICAgICAgICAmJiBHX0ZMRCAo aW5zdC0+diwgMjQsIDIwKSA9PSAweDIKKyAgICAgICAgICAgICAgICAgICAm JiBHX0ZMRCAoaW5zdC0+diwgMTksIDE1KSA9PSAweDApCisgICAgICAgICAg ICB7CisgICAgICAgICAgICAgIC8qIHN3IHIyLCBbcjAsIG9mZnNldF0rICov CisgICAgICAgICAgICAgIHNwX29mZnNldCArPSBpbnN0LT5sZW47CisgICAg ICAgICAgICAgIGlmIChmcF9vZmZzZXRfcCA9PSAwKQorICAgICAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgICAgIGZwX29mZnNldCA9IHNwX29mZnNl dDsKKyAgICAgICAgICAgICAgICAgIGZwX29mZnNldF9wID0gMTsKKyAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBp ZiAoR19GTEQgKGluc3QtPnYsIDI5LCAyNSkgPT0gMHg3CisgICAgICAgICAg ICAgICAgICAgJiYgR19GTEQgKGluc3QtPnYsIDIsIDApID09IDB4MAorICAg ICAgICAgICAgICAgICAgICYmIEdfRkxEIChpbnN0LT52LCAyNCwgMjApID09 IDB4MworICAgICAgICAgICAgICAgICAgICYmIEdfRkxEIChpbnN0LT52LCAx OSwgMTUpID09IDB4MCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg LyogbHcgcjMsIFtyMF0rLCA0ICovCisgICAgICAgICAgICAgIHNwX29mZnNl dCAtPSBpbnN0LT5sZW47CisgICAgICAgICAgICAgIHJhX29mZnNldF9wID0g MTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChHX0ZMRCAo aW5zdC0+diwgMjksIDI1KSA9PSAweDcKKyAgICAgICAgICAgICAgICAgICAm JiBHX0ZMRCAoaW5zdC0+diwgMiwgMCkgPT0gMHgwCisgICAgICAgICAgICAg ICAgICAgJiYgR19GTEQgKGluc3QtPnYsIDI0LCAyMCkgPT0gMHgyCisgICAg ICAgICAgICAgICAgICAgJiYgR19GTEQgKGluc3QtPnYsIDE5LCAxNSkgPT0g MHgwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAvKiBsdyByMiwg W3IwXSssIDQgKi8KKyAgICAgICAgICAgICAgc3Bfb2Zmc2V0IC09IGluc3Qt PmxlbjsKKyAgICAgICAgICAgICAgZnBfb2Zmc2V0X3AgPSAxOworICAgICAg ICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKEdfRkxEIChpbnN0LT52LCAy OSwgMjUpID09IDB4MQorICAgICAgICAgICAgICAgICAgICYmIEdfRkxEIChp bnN0LT52LCAxOSwgMTcpID09IDB4MAorICAgICAgICAgICAgICAgICAgICYm IEdfRkxEIChpbnN0LT52LCAyNCwgMjApID09IDB4MAorICAgICAgICAgICAg ICAgICAgICYmIEdfRkxEIChpbnN0LT52LCAwLCAwKSA9PSAweDApCisgICAg ICAgICAgICB7CisgICAgICAgICAgICAgIC8qIGFkZGkgcjAsIC1vZmZzZXQg Ki8KKyAgICAgICAgICAgICAgaW50IGltbSA9IEdfRkxEIChpbnN0LT52LCAx NiwgMSk7CisJICAgICAgaWYgKGltbSA+PiAxNSkKKwkJaW1tID0gLSgweEZG RkYgLSBpbW0gKyAxKTsKKyAgICAgICAgICAgICAgc3Bfb2Zmc2V0IC09IGlt bTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChHX0ZMRCAo aW5zdC0+diwgMjksIDI1KSA9PSAweDEKKyAgICAgICAgICAgICAgICAgICAm JiBHX0ZMRCAoaW5zdC0+diwgMTksIDE3KSA9PSAweDAKKyAgICAgICAgICAg ICAgICAgICAmJiBHX0ZMRCAoaW5zdC0+diwgMjQsIDIwKSA9PSAweDIKKyAg ICAgICAgICAgICAgICAgICAmJiBHX0ZMRCAoaW5zdC0+diwgMCwgMCkgPT0g MHgwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAvKiBhZGRpIHIy LCBvZmZzZXQgKi8KKyAgICAgICAgICAgICAgaWYgKHBjIC0gY3VyX3BjID49 IDIpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgdW5z aWduZWQgaW50IHNhdmVfdiA9IGluc3QtPnY7CisgICAgICAgICAgICAgICAg ICBpbnN0X3QgKmluc3QyOworCisJCSAgICAgICAgICBjdXJfcGMgKz0gaW5z dC0+bGVuOworICAgICAgICAgICAgICAgICAgaW5zdDIgPSBzY29yZTNfYWRq dXN0X3BjX2FuZF9mZXRjaF9pbnN0ICgmY3VyX3BjLCBOVUxMKTsKKworICAg ICAgICAgICAgICAgICAgaWYgKGluc3QyLT5sZW4gPT0gMgorICAgICAgICAg ICAgICAgICAgICAgICYmIEdfRkxEIChpbnN0Mi0+diwgMTQsIDEwKSA9PSAw eDEwCisgICAgICAgICAgICAgICAgICAgICAgJiYgR19GTEQgKGluc3QyLT52 LCA5LCA1KSA9PSAweDAKKyAgICAgICAgICAgICAgICAgICAgICAmJiBHX0ZM RCAoaW5zdDItPnYsIDQsIDApID09IDB4MikKKyAgICAgICAgICAgICAgICAg ICAgeworICAgICAgICAgICAgICAgICAgICAgIC8qIG12ISByMCwgcjIgKi8K KyAgICAgICAgICAgICAgICAgICAgICBpbnQgaW1tID0gR19GTEQgKGluc3Qt PnYsIDE2LCAxKTsKKwkgICAgICAgICAgICAgIGlmIChpbW0gPj4gMTUpCisJ CSAgICAgICAgaW1tID0gLSgweEZGRkYgLSBpbW0gKyAxKTsKKyAgICAgICAg ICAgICAgICAgICAgICBzcF9vZmZzZXQgLT0gaW1tOworICAgICAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor ICAgICAgICB9CisgICAgfQorCisgIC8qIFNhdmUgUkEuICAqLworICBpZiAo cmFfb2Zmc2V0X3AgPT0gMSkKKyAgICB7CisgICAgICBpZiAodGhpc19jYWNo ZS0+c2F2ZWRfcmVnc1tTQ09SRV9QQ19SRUdOVU1dLmFkZHIgPT0gLTEpCisg ICAgICAgIHRoaXNfY2FjaGUtPnNhdmVkX3JlZ3NbU0NPUkVfUENfUkVHTlVN XS5hZGRyID0KKyAgICAgICAgICBzcCArIHNwX29mZnNldCAtIHJhX29mZnNl dDsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICB0aGlzX2NhY2hlLT5z YXZlZF9yZWdzW1NDT1JFX1BDX1JFR05VTV0gPQorICAgICAgICB0aGlzX2Nh Y2hlLT5zYXZlZF9yZWdzW1NDT1JFX1JBX1JFR05VTV07CisgICAgfQorCisg IC8qIFNhdmUgRlAuICAqLworICBpZiAoZnBfb2Zmc2V0X3AgPT0gMSkKKyAg ICB7CisgICAgICBpZiAodGhpc19jYWNoZS0+c2F2ZWRfcmVnc1tTQ09SRV9G UF9SRUdOVU1dLmFkZHIgPT0gLTEpCisgICAgICAgIHRoaXNfY2FjaGUtPnNh dmVkX3JlZ3NbU0NPUkVfRlBfUkVHTlVNXS5hZGRyID0KKyAgICAgICAgICBz cCArIHNwX29mZnNldCAtIGZwX29mZnNldDsKKyAgICB9CisKKyAgLyogU2F2 ZSBTUCBhbmQgRlAuICAqLworICB0aGlzX2NhY2hlLT5iYXNlID0gc3AgKyBz cF9vZmZzZXQ7CisgIHRoaXNfY2FjaGUtPmZwID0gZnA7CiB9CiAKIHN0YXRp YyBzdHJ1Y3Qgc2NvcmVfZnJhbWVfY2FjaGUgKgpAQCAtOTU2LDcgKzEzNTks MTEgQEAKICAgICBmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gKHBjLCBOVUxM LCAmc3RhcnRfYWRkciwgTlVMTCk7CiAgICAgaWYgKHN0YXJ0X2FkZHIgPT0g MCkKICAgICAgIHJldHVybiBjYWNoZTsKLSAgICBzY29yZV9hbmFseXplX3By b2xvZ3VlIChzdGFydF9hZGRyLCBwYywgdGhpc19mcmFtZSwgKnRoaXNfY2Fj aGUpOworCisgICAgaWYgKHRhcmdldF9tYWNoID09IGJmZF9tYWNoX3Njb3Jl MykKKyAgICAgIHNjb3JlM19hbmFseXplX3Byb2xvZ3VlIChzdGFydF9hZGRy LCBwYywgdGhpc19mcmFtZSwgKnRoaXNfY2FjaGUpOworICAgIGVsc2UKKyAg ICAgIHNjb3JlN19hbmFseXplX3Byb2xvZ3VlIChzdGFydF9hZGRyLCBwYywg dGhpc19mcmFtZSwgKnRoaXNfY2FjaGUpOwogICB9CiAKICAgLyogU2F2ZSBT UC4gICovCkBAIC05ODksNyArMTM5Niw4IEBACiAgIHNjb3JlX3Byb2xvZ3Vl X3RoaXNfaWQsCiAgIHNjb3JlX3Byb2xvZ3VlX3ByZXZfcmVnaXN0ZXIsCiAg IE5VTEwsCi0gIGRlZmF1bHRfZnJhbWVfc25pZmZlcgorICBkZWZhdWx0X2Zy YW1lX3NuaWZmZXIsCisgIE5VTEwKIH07CiAKIHN0YXRpYyBDT1JFX0FERFIK QEAgLTEwMTUsMzcgKzE0MjMsMTMxIEBACiAgIHJldHVybiAmc2NvcmVfcHJv bG9ndWVfZnJhbWVfYmFzZTsKIH0KIAorLyogQ29yZSBmaWxlIHN1cHBvcnQg KGRpcnR5IGhhY2spCisgIAorICAgVGhlIGNvcmUgZmlsZSBNVVNUIGJlIGdl bmVyYXRlZCBieSBHTlUvTGludXggb24gUytjb3JlICovCisKK3N0YXRpYyB2 b2lkCitzY29yZTdfbGludXhfc3VwcGx5X2dyZWdzZXQoY29uc3Qgc3RydWN0 IHJlZ3NldCAqcmVnc2V0LAorICAgICAgICAgICAgICAgIHN0cnVjdCByZWdj YWNoZSAqcmVnY2FjaGUsCisgICAgICAgICAgICAgICAgaW50IHJlZ251bSwg Y29uc3Qgdm9pZCAqZ3JlZ3NfYnVmLCBzaXplX3QgbGVuKQoreworICAgIGlu dCByZWdubzsKKyAgICBlbGZfZ3JlZ3NldF90ICpncmVnczsKKworICAgIGdk Yl9hc3NlcnQgKHJlZ3NldCAhPSBOVUxMKTsKKyAgICBnZGJfYXNzZXJ0ICgo cmVnY2FjaGUgIT0gTlVMTCkgJiYgKGdyZWdzX2J1ZiAhPSBOVUxMKSk7CisK KyAgICBncmVncyA9IChlbGZfZ3JlZ3NldF90ICopIGdyZWdzX2J1ZjsKKwor ICAgIGZvciAocmVnbm8gPSAwOyByZWdubyA8IDMyOyByZWdubysrKQorICAg ICAgICBpZiAocmVnbnVtID09IC0xIHx8IHJlZ251bSA9PSByZWdubykKKyAg ICAgICAgICAgIHJlZ2NhY2hlX3Jhd19zdXBwbHkgKHJlZ2NhY2hlLCByZWdu bywgZ3JlZ3MtPnJlZ3MgKyByZWdubyk7CisKKyAgICB7CisgICAgICAgIHN0 cnVjdCBzcmVnIHsKKyAgICAgICAgICAgICAgICBpbnQgcmVnbnVtOworICAg ICAgICAgICAgICAgIHZvaWQgKmJ1ZjsKKyAgICAgICAgfSBzcmVncyBbXSA9 IHsKKyAgICAgICAgICAgICAgICB7IDU1LCAmKGdyZWdzLT5jZWwpIH0sICAv KiBDRUwgKi8KKyAgICAgICAgICAgICAgICB7IDU0LCAmKGdyZWdzLT5jZWgp IH0sICAvKiBDRUggKi8KKyAgICAgICAgICAgICAgICB7IDUzLCAmKGdyZWdz LT5zcjApIH0sICAvKiBzcjAsIGkuZS4gY250IG9yIENPVU5URVIgKi8KKyAg ICAgICAgICAgICAgICB7IDUyLCAmKGdyZWdzLT5zcjEpIH0sICAvKiBzcjEs IGkuZS4gbGNyIG9yIExEQ1IgKi8KKyAgICAgICAgICAgICAgICB7IDUxLCAm KGdyZWdzLT5zcjEpIH0sICAvKiBzcjIsIGkuZS4gc2NyIG9yIFNUQ1IgKi8K KworICAgICAgICAgICAgICAgIC8qIEV4Y2VwdGlvbiBvY2N1cmVkIGF0IHRo aXMgYWRkcmVzcywgZXhhY3RseSB0aGUgUEMgd2Ugd2FudCAqLworICAgICAg ICAgICAgICAgIHsgNDksICYoZ3JlZ3MtPmNwMF9lcGMpIH0sIC8qIFBDICov CisKKyAgICAgICAgICAgICAgICB7IDM4LCAmKGdyZWdzLT5jcDBfZW1hKSB9 LCAvKiBFTUEgKi8KKyAgICAgICAgICAgICAgICB7IDM3LCAmKGdyZWdzLT5j cDBfZXBjKSB9LCAvKiBFUEMgKi8KKyAgICAgICAgICAgICAgICB7IDM0LCAm KGdyZWdzLT5jcDBfZWNyKSB9LCAvKiBFQ1IgKi8KKyAgICAgICAgICAgICAg ICB7IDMzLCAmKGdyZWdzLT5jcDBfY29uZGl0aW9uKSB9LCAvKiBDT05EICov CisgICAgICAgICAgICAgICAgeyAzMiwgJihncmVncy0+Y3AwX3BzcikgfSwg LyogUFNSICovCisgICAgICAgIH07CisKKyAgICAgICAgZm9yIChyZWdubyA9 IDA7IHJlZ25vIDwgc2l6ZW9mKHNyZWdzKS9zaXplb2Yoc3JlZ3NbMF0pOyBy ZWdubysrKQorICAgICAgICAgICAgICAgIGlmIChyZWdudW0gPT0gLTEgfHwg cmVnbnVtID09IHNyZWdzW3JlZ25vXS5yZWdudW0pCisgICAgICAgICAgICAg ICAgICAgICAgICByZWdjYWNoZV9yYXdfc3VwcGx5IChyZWdjYWNoZSwgc3Jl Z3NbcmVnbm9dLnJlZ251bSwgc3JlZ3NbcmVnbm9dLmJ1Zik7CisgICAgfQor fQorCisvKiBSZXR1cm4gdGhlIGFwcHJvcHJpYXRlIHJlZ2lzdGVyIHNldCBm cm9tIHRoZSBjb3JlIHNlY3Rpb24gaWRlbnRpZmllZAorICAgYnkgU0VDVF9O QU1FIGFuZCBTRUNUX1NJWkUuICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg cmVnc2V0ICoKK3Njb3JlN19saW51eF9yZWdzZXRfZnJvbV9jb3JlX3NlY3Rp b24oc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGNoYXIgKnNlY3RfbmFtZSwgc2l6ZV90IHNlY3Rfc2l6ZSkK K3sKKyAgICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwOworCisgICAgZ2Ri X2Fzc2VydCAoZ2RiYXJjaCAhPSBOVUxMKTsKKyAgICBnZGJfYXNzZXJ0IChz ZWN0X25hbWUgIT0gTlVMTCk7CisKKyAgICB0ZGVwID0gZ2RiYXJjaF90ZGVw IChnZGJhcmNoKTsKKworICAgIGlmIChzdHJjbXAoc2VjdF9uYW1lLCAiLnJl ZyIpID09IDAgJiYgc2VjdF9zaXplID09IHNpemVvZihlbGZfZ3JlZ3NldF90 KSkKKyAgICB7CisgICAgICAgIGlmICh0ZGVwLT5ncmVnc2V0ID09IE5VTEwp CisgICAgICAgICAgICB0ZGVwLT5ncmVnc2V0ID0gcmVnc2V0X2FsbG9jIChn ZGJhcmNoLCBzY29yZTdfbGludXhfc3VwcGx5X2dyZWdzZXQsIE5VTEwpOwor ICAgICAgICByZXR1cm4gdGRlcC0+Z3JlZ3NldDsKKyAgICB9CisKKyAgICBy ZXR1cm4gTlVMTDsKK30KKwogc3RhdGljIHN0cnVjdCBnZGJhcmNoICoKIHNj b3JlX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBz dHJ1Y3QgZ2RiYXJjaF9saXN0ICphcmNoZXMpCiB7CiAgIHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoOworICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwOwor ICB0YXJnZXRfbWFjaCA9IGluZm8uYmZkX2FyY2hfaW5mby0+bWFjaDsKIAog ICBhcmNoZXMgPSBnZGJhcmNoX2xpc3RfbG9va3VwX2J5X2luZm8gKGFyY2hl cywgJmluZm8pOwogICBpZiAoYXJjaGVzICE9IE5VTEwpCiAgICAgewogICAg ICAgcmV0dXJuIChhcmNoZXMtPmdkYmFyY2gpOwogICAgIH0KLSAgZ2RiYXJj aCA9IGdkYmFyY2hfYWxsb2MgKCZpbmZvLCAwKTsKKyAgdGRlcCA9IHhjYWxs b2MoMSwgc2l6ZW9mKHN0cnVjdCBnZGJhcmNoX3RkZXApKTsKKyAgZ2RiYXJj aCA9IGdkYmFyY2hfYWxsb2MgKCZpbmZvLCB0ZGVwKTsKIAogICBzZXRfZ2Ri YXJjaF9zaG9ydF9iaXQgKGdkYmFyY2gsIDE2KTsKICAgc2V0X2dkYmFyY2hf aW50X2JpdCAoZ2RiYXJjaCwgMzIpOwogICBzZXRfZ2RiYXJjaF9mbG9hdF9i aXQgKGdkYmFyY2gsIDMyKTsKICAgc2V0X2dkYmFyY2hfZG91YmxlX2JpdCAo Z2RiYXJjaCwgNjQpOwogICBzZXRfZ2RiYXJjaF9sb25nX2RvdWJsZV9iaXQg KGdkYmFyY2gsIDY0KTsKKyNpZiBXSVRIX1NJTQogICBzZXRfZ2RiYXJjaF9y ZWdpc3Rlcl9zaW1fcmVnbm8gKGdkYmFyY2gsIHNjb3JlX3JlZ2lzdGVyX3Np bV9yZWdubyk7CisjZW5kaWYKICAgc2V0X2dkYmFyY2hfcGNfcmVnbnVtIChn ZGJhcmNoLCBTQ09SRV9QQ19SRUdOVU0pOwogICBzZXRfZ2RiYXJjaF9zcF9y ZWdudW0gKGdkYmFyY2gsIFNDT1JFX1NQX1JFR05VTSk7Ci0gIHNldF9nZGJh cmNoX251bV9yZWdzIChnZGJhcmNoLCBTQ09SRV9OVU1fUkVHUyk7Ci0gIHNl dF9nZGJhcmNoX3JlZ2lzdGVyX25hbWUgKGdkYmFyY2gsIHNjb3JlX3JlZ2lz dGVyX25hbWUpOwotICBzZXRfZ2RiYXJjaF9icmVha3BvaW50X2Zyb21fcGMg KGdkYmFyY2gsIHNjb3JlX2JyZWFrcG9pbnRfZnJvbV9wYyk7CisgIHNldF9n ZGJhcmNoX2FkanVzdF9icmVha3BvaW50X2FkZHJlc3MgKGdkYmFyY2gsIHNj b3JlX2FkanVzdF9icmVha3BvaW50X2FkZHJlc3MpOwogICBzZXRfZ2RiYXJj aF9yZWdpc3Rlcl90eXBlIChnZGJhcmNoLCBzY29yZV9yZWdpc3Rlcl90eXBl KTsKICAgc2V0X2dkYmFyY2hfZnJhbWVfYWxpZ24gKGdkYmFyY2gsIHNjb3Jl X2ZyYW1lX2FsaWduKTsKICAgc2V0X2dkYmFyY2hfaW5uZXJfdGhhbiAoZ2Ri YXJjaCwgY29yZV9hZGRyX2xlc3N0aGFuKTsKLSAgc2V0X2dkYmFyY2hfdW53 aW5kX3BjIChnZGJhcmNoLCBzY29yZV91bndpbmRfcGMpOwogICBzZXRfZ2Ri YXJjaF91bndpbmRfc3AgKGdkYmFyY2gsIHNjb3JlX3Vud2luZF9zcCk7Cisg IHNldF9nZGJhcmNoX3Vud2luZF9wYyAoZ2RiYXJjaCwgc2NvcmVfdW53aW5k X3BjKTsKICAgc2V0X2dkYmFyY2hfcHJpbnRfaW5zbiAoZ2RiYXJjaCwgc2Nv cmVfcHJpbnRfaW5zbik7Ci0gIHNldF9nZGJhcmNoX3NraXBfcHJvbG9ndWUg KGdkYmFyY2gsIHNjb3JlX3NraXBfcHJvbG9ndWUpOwotICBzZXRfZ2RiYXJj aF9pbl9mdW5jdGlvbl9lcGlsb2d1ZV9wIChnZGJhcmNoLCBzY29yZV9pbl9m dW5jdGlvbl9lcGlsb2d1ZV9wKTsKKworICBzd2l0Y2ggKHRhcmdldF9tYWNo KQorICAgIHsKKyAgICBjYXNlIGJmZF9tYWNoX3Njb3JlNzoKKyAgICAgIHNl dF9nZGJhcmNoX2JyZWFrcG9pbnRfZnJvbV9wYyAoZ2RiYXJjaCwgc2NvcmU3 X2JyZWFrcG9pbnRfZnJvbV9wYyk7CisgICAgICBzZXRfZ2RiYXJjaF9za2lw X3Byb2xvZ3VlIChnZGJhcmNoLCBzY29yZTdfc2tpcF9wcm9sb2d1ZSk7Cisg ICAgICBzZXRfZ2RiYXJjaF9pbl9mdW5jdGlvbl9lcGlsb2d1ZV9wIChnZGJh cmNoLCBzY29yZTdfaW5fZnVuY3Rpb25fZXBpbG9ndWVfcCk7CisgICAgICBz ZXRfZ2RiYXJjaF9yZWdpc3Rlcl9uYW1lIChnZGJhcmNoLCBzY29yZTdfcmVn aXN0ZXJfbmFtZSk7CisgICAgICBzZXRfZ2RiYXJjaF9udW1fcmVncyAoZ2Ri YXJjaCwgU0NPUkU3X05VTV9SRUdTKTsKKyAgICAgIC8qIENvcmUgZmlsZSBz dXBwb3J0LiAqLworICAgICAgc2V0X2dkYmFyY2hfcmVnc2V0X2Zyb21fY29y ZV9zZWN0aW9uIChnZGJhcmNoLCBzY29yZTdfbGludXhfcmVnc2V0X2Zyb21f Y29yZV9zZWN0aW9uKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBiZmRf bWFjaF9zY29yZTM6CisgICAgICBzZXRfZ2RiYXJjaF9icmVha3BvaW50X2Zy b21fcGMgKGdkYmFyY2gsIHNjb3JlM19icmVha3BvaW50X2Zyb21fcGMpOwor ICAgICAgc2V0X2dkYmFyY2hfc2tpcF9wcm9sb2d1ZSAoZ2RiYXJjaCwgc2Nv cmUzX3NraXBfcHJvbG9ndWUpOworICAgICAgc2V0X2dkYmFyY2hfaW5fZnVu Y3Rpb25fZXBpbG9ndWVfcCAoZ2RiYXJjaCwgc2NvcmUzX2luX2Z1bmN0aW9u X2VwaWxvZ3VlX3ApOworICAgICAgc2V0X2dkYmFyY2hfcmVnaXN0ZXJfbmFt ZSAoZ2RiYXJjaCwgc2NvcmUzX3JlZ2lzdGVyX25hbWUpOworICAgICAgc2V0 X2dkYmFyY2hfbnVtX3JlZ3MgKGdkYmFyY2gsIFNDT1JFM19OVU1fUkVHUyk7 CisgICAgICBicmVhazsKKyAgICB9CiAKICAgLyogV2F0Y2hwb2ludCBob29r cy4gICovCiAgIHNldF9nZGJhcmNoX2hhdmVfbm9uc3RlcHBhYmxlX3dhdGNo cG9pbnQgKGdkYmFyY2gsIDEpOwo= --=_mixed 0027F1AC4825757E_=--