From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-wg0-x229.google.com ([2a00:1450:400c:c00::229]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1XEN9c-0003BN-KC for barebox@lists.infradead.org; Mon, 04 Aug 2014 18:38:42 +0000 Received: by mail-wg0-f41.google.com with SMTP id z12so8113261wgg.12 for ; Mon, 04 Aug 2014 11:38:16 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <2F914EFB-7A29-4025-8D54-080D28CF9FA8@jcrosoft.com> References: <1406899464-29144-1-git-send-email-poggi.raph@gmail.com> <1406899464-29144-2-git-send-email-poggi.raph@gmail.com> <2F914EFB-7A29-4025-8D54-080D28CF9FA8@jcrosoft.com> From: =?UTF-8?Q?Rapha=C3=ABl_Poggi?= Date: Mon, 4 Aug 2014 20:37:35 +0200 Message-ID: List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "barebox" Errors-To: barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org Subject: Re: [PATCH 1/2] pinctrl: at91: add pinctrl driver To: Jean-Christophe PLAGNIOL-VILLARD Cc: barebox@lists.infradead.org SSBoYXZlIHBsYW5uZWQgdG8gYWRkIGRldmljZSB0cmVlIHN1cHBvcnQgZm9yIHRoZSBBVDkxIHBv cnQuCgpTbyBJIHBvcnQgdGhlIHBpbmN0cmwgZHJpdmVyIGZyb20gbGludXggdG8gYmFyZWJveCB0 byBiZSBhYmxlIHRvIHVzZQp0aGUgcGluY3RybCBpbiBkZXZpY2UgdHJlZSwgYnV0IG1heWJlIEkg bWFkZSBhIG1pc3Rha2UgYW5kIHRoZXJlIGlzCmFub3RoZXIgc29sdXRpb24uCgpCZXN0IFJlZ2Fy ZHMsClJhcGhhw6tsCgoyMDE0LTA4LTA0IDIwOjI2IEdNVCswMjowMCBKZWFuLUNocmlzdG9waGUg UExBR05JT0wtVklMTEFSRAo8cGxhZ25pb2pAamNyb3NvZnQuY29tPjoKPiB3aHkgZG8gd2UgbmVl ZCBpdCBvbiBiYXJlYm94Pwo+Cj4gdGhpcyBkcml2ZXIgd2FzIGRlc2lnbiBmb3IgZHQtb25seSBp biBsaW51eAo+Cj4gQmVzdCBSZWdhcmRzLAo+IEouCj4gT24gQXVnIDEsIDIwMTQsIGF0IDk6MjQg UE0sIFJhcGhhw6tsIFBvZ2dpIDxwb2dnaS5yYXBoQGdtYWlsLmNvbT4gd3JvdGU6Cj4KPj4gVGhp cyBkcml2ZXIgaXMgYmFzZWQgb24gbWFjaC1hdDkxL2dwaW8uYyBhbmQgbGludXggcGluY3RybCBk cml2ZXIuCj4+IFRoZSBkcml2ZXIgY29udGFpbnMgdGhlIGdwaW8gYW5kIHBpbmN0cmwgcGFydHMg KGxpa2UgaW4gbGludXgpIGJlY2F1c2UgdGhlIHR3byBwYXJ0cwo+PiBzaGFyZSBzb21lIHN0cnVj dHVyZXMgYW5kIGxvZ2ljcy4KPj4KPj4gU2lnbmVkLW9mZi1ieTogUmFwaGHDq2wgUG9nZ2kgPHBv Z2dpLnJhcGhAZ21haWwuY29tPgo+PiAtLS0KPj4gZHJpdmVycy9waW5jdHJsL0tjb25maWcgICAg ICAgIHwgICAgNiArCj4+IGRyaXZlcnMvcGluY3RybC9NYWtlZmlsZSAgICAgICB8ICAgIDEgKwo+ PiBkcml2ZXJzL3BpbmN0cmwvcGluY3RybC1hdDkxLmMgfCAgNTI5ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKPj4gZHJpdmVycy9waW5jdHJsL3BpbmN0cmwtYXQ5MS5o IHwgIDE0OCArKysrKysrKysrKwo+PiA0IGZpbGVzIGNoYW5nZWQsIDY4NCBpbnNlcnRpb25zKCsp Cj4+IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3BpbmN0cmwvcGluY3RybC1hdDkxLmMKPj4g Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcGluY3RybC9waW5jdHJsLWF0OTEuaAo+Pgo+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9waW5jdHJsL0tjb25maWcgYi9kcml2ZXJzL3BpbmN0cmwvS2Nv bmZpZwo+PiBpbmRleCBkZmZhYTRlLi5jZTU1YzdiIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL3Bp bmN0cmwvS2NvbmZpZwo+PiArKysgYi9kcml2ZXJzL3BpbmN0cmwvS2NvbmZpZwo+PiBAQCAtNyw2 ICs3LDEyIEBAIGNvbmZpZyBQSU5DVFJMCj4+ICAgICAgICAgZnJvbSB0aGUgZGV2aWNldHJlZS4g TGVnYWN5IGRyaXZlcnMgaGVyZSBtYXkgbm90IG5lZWQgdGhpcyBjb3JlCj4+ICAgICAgICAgc3Vw cG9ydCBidXQgaW5zdGVhZCBwcm92aWRlIHRoZWlyIG93biBTb0Mgc3BlY2lmaWMgQVBJcwo+Pgo+ PiArY29uZmlnIFBJTkNUUkxfQVQ5MQo+PiArICAgICBzZWxlY3QgUElOQ1RSTAo+PiArICAgICBi b29sCj4+ICsgICAgIGhlbHAKPj4gKyAgICAgICAgIFRoZSBwaW5tdXggY29udHJvbGxlciBmb3Vu ZCBvbiBBVDkxIFNvQ3MuCj4+ICsKPj4gY29uZmlnIFBJTkNUUkxfSU1YX0lPTVVYX1YxCj4+ICAg ICAgIHNlbGVjdCBQSU5DVFJMIGlmIE9GREVWSUNFCj4+ICAgICAgIGJvb2wKPj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvcGluY3RybC9NYWtlZmlsZSBiL2RyaXZlcnMvcGluY3RybC9NYWtlZmlsZQo+ PiBpbmRleCA1NjZiYTExLi4zZWE4NjQ5IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL3BpbmN0cmwv TWFrZWZpbGUKPj4gKysrIGIvZHJpdmVycy9waW5jdHJsL01ha2VmaWxlCj4+IEBAIC0xLDQgKzEs NSBAQAo+PiBvYmotJChDT05GSUdfUElOQ1RSTCkgKz0gcGluY3RybC5vCj4+ICtvYmotJChDT05G SUdfUElOQ1RSTF9BVDkxKSArPSBwaW5jdHJsLWF0OTEubwo+PiBvYmotJChDT05GSUdfUElOQ1RS TF9JTVhfSU9NVVhfVjEpICs9IGlteC1pb211eC12MS5vCj4+IG9iai0kKENPTkZJR19QSU5DVFJM X0lNWF9JT01VWF9WMikgKz0gaW14LWlvbXV4LXYyLm8KPj4gb2JqLSQoQ09ORklHX1BJTkNUUkxf SU1YX0lPTVVYX1YzKSArPSBpbXgtaW9tdXgtdjMubwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9w aW5jdHJsL3BpbmN0cmwtYXQ5MS5jIGIvZHJpdmVycy9waW5jdHJsL3BpbmN0cmwtYXQ5MS5jCj4+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAuLmE5MmE4OTgKPj4gLS0tIC9k ZXYvbnVsbAo+PiArKysgYi9kcml2ZXJzL3BpbmN0cmwvcGluY3RybC1hdDkxLmMKPj4gQEAgLTAs MCArMSw1MjkgQEAKPj4gKy8qCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMDUgSFAgTGFicwo+PiAr ICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTIgSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExB UkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KPj4gKyAqIENvcHlyaWdodCAoQykgMjAxNCBSYXBo YcOrbCBQb2dnaQo+PiArICoKPj4gKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVv cGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCj4+ICsgKiBwcm9qZWN0Lgo+PiArICoKPj4gKyAq IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IKPj4gKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzCj4+ICsgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgo+PiArICogdGhlIExpY2Vuc2UsIG9yIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4+ICsgKgo+PiArICogVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4+ ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgo+PiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo+PiArICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KPj4gKyAqCj4+ICsgKi8KPj4gKwo+PiArI2luY2x1ZGUgPGNvbW1v bi5oPgo+PiArI2luY2x1ZGUgPGNvbW1hbmQuaD4KPj4gKyNpbmNsdWRlIDxjb21wbGV0ZS5oPgo+ PiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2Vyci5oPgo+PiAr I2luY2x1ZGUgPGVycm5vLmg+Cj4+ICsjaW5jbHVkZSA8aW8uaD4KPj4gKyNpbmNsdWRlIDxncGlv Lmg+Cj4+ICsjaW5jbHVkZSA8aW5pdC5oPgo+PiArI2luY2x1ZGUgPGRyaXZlci5oPgo+PiArI2lu Y2x1ZGUgPGdldG9wdC5oPgo+PiArCj4+ICsjaW5jbHVkZSA8bWFjaC9hdDkxX3Bpby5oPgo+PiAr Cj4+ICsjaW5jbHVkZSA8cGluY3RybC5oPgo+PiArCj4+ICsjaW5jbHVkZSAicGluY3RybC1hdDkx LmgiCj4+ICsKPj4gK3N0cnVjdCBhdDkxX3BpbmN0cmwgewo+PiArICAgIHN0cnVjdCBwaW5jdHJs X2RldmljZSBwY3RsOwo+PiArICAgIHN0cnVjdCBhdDkxX3BpbmN0cmxfbXV4X29wcyAgICAgICpv cHM7Cj4+ICt9Owo+PiArCj4+ICtzdHJ1Y3QgYXQ5MV9ncGlvX2NoaXAgewo+PiArICAgICBzdHJ1 Y3QgZ3Bpb19jaGlwICAgICAgICBjaGlwOwo+PiArICAgICB2b2lkIF9faW9tZW0gICAgICAgICAg ICAqcmVnYmFzZTsgICAgICAgLyogUElPIGJhbmsgdmlydHVhbCBhZGRyZXNzICovCj4+ICsgICAg IHN0cnVjdCBhdDkxX3BpbmN0cmxfbXV4X29wcyAqb3BzOyAgICAgICAvKiBvcHMgKi8KPj4gK307 Cj4+ICsKPj4gK2VudW0gYXQ5MV9tdXggewo+PiArICAgICBBVDkxX01VWF9HUElPID0gMCwKPj4g KyAgICAgQVQ5MV9NVVhfUEVSSVBIX0EgPSAxLAo+PiArICAgICBBVDkxX01VWF9QRVJJUEhfQiA9 IDIsCj4+ICsgICAgIEFUOTFfTVVYX1BFUklQSF9DID0gMywKPj4gKyAgICAgQVQ5MV9NVVhfUEVS SVBIX0QgPSA0LAo+PiArfTsKPj4gKwo+PiArI2RlZmluZSBNQVhfR1BJT19CQU5LUyAgICAgICAg ICAgICAgIDUKPj4gKyNkZWZpbmUgdG9fYXQ5MV9waW5jdHJsKGMpIGNvbnRhaW5lcl9vZihjLCBz dHJ1Y3QgYXQ5MV9waW5jdHJsLCBwY3RsKTsKPj4gKyNkZWZpbmUgdG9fYXQ5MV9ncGlvX2NoaXAo YykgY29udGFpbmVyX29mKGMsIHN0cnVjdCBhdDkxX2dwaW9fY2hpcCwgY2hpcCkKPj4gKwo+PiAr I2RlZmluZSBQVUxMX1VQICAgICAgICAgKDEgPDwgMCkKPj4gKyNkZWZpbmUgTVVMVElfRFJJVkUg ICAgICgxIDw8IDEpCj4+ICsjZGVmaW5lIERFR0xJVENIICAgICAgICAoMSA8PCAyKQo+PiArI2Rl ZmluZSBQVUxMX0RPV04gICAgICAgKDEgPDwgMykKPj4gKyNkZWZpbmUgRElTX1NDSE1JVCAgICAg ICgxIDw8IDQpCj4+ICsjZGVmaW5lIERFQk9VTkNFICAgICAgICAoMSA8PCAxNikKPj4gKyNkZWZp bmUgREVCT1VOQ0VfVkFMX1NISUZUICAgICAgMTcKPj4gKyNkZWZpbmUgREVCT1VOQ0VfVkFMICAg ICgweDNmZmYgPDwgREVCT1VOQ0VfVkFMX1NISUZUKQo+PiArCj4+ICtzdGF0aWMgaW50IGdwaW9f YmFua3MgPSAwOwo+PiArCj4+ICtzdGF0aWMgc3RydWN0IGF0OTFfZ3Bpb19jaGlwIGdwaW9fY2hp cFtNQVhfR1BJT19CQU5LU107Cj4+ICsKPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBfX2lvbWVtICpw aW5fdG9fY29udHJvbGxlcihzdHJ1Y3QgYXQ5MV9waW5jdHJsICppbmZvLCB1bnNpZ25lZCBwaW4p Cj4+ICt7Cj4+ICsgICAgIHBpbiAvPSBNQVhfTkJfR1BJT19QRVJfQkFOSzsKPj4gKyAgICAgaWYg KGxpa2VseShwaW4gPCBncGlvX2JhbmtzKSkKPj4gKyAgICAgICAgICAgICByZXR1cm4gZ3Bpb19j aGlwW3Bpbl0ucmVnYmFzZTsKPj4gKwo+PiArICAgICByZXR1cm4gTlVMTDsKPj4gK30KPj4gKwo+ PiArLyoqCj4+ICsgKiBzdHJ1Y3QgYXQ5MV9waW5jdHJsX211eF9vcHMgLSBkZXNjcmliZXMgYW4g QXQ5MSBtdXggb3BzIGdyb3VwCj4+ICsgKiBvbiBuZXcgSVAgd2l0aCBzdXBwb3J0IGZvciBwZXJp cGggQyBhbmQgRCB0aGUgd2F5IHRvIG11eCBpbgo+PiArICogcGVyaXBoIEEgYW5kIEIgaGFzIGNo YW5nZWQKPj4gKyAqIFNvIHByb3ZpZGUgdGhlIHJpZ2h0IGNhbGwgYmFjawo+PiArICogaWYgbm90 IHByZXNlbnQgbWVhbnMgdGhlIElQIGRvZXMgbm90IHN1cHBvcnQgaXQKPj4gKyAqIEBnZXRfcGVy aXBoOiByZXR1cm4gdGhlIHBlcmlwaCBtb2RlIGNvbmZpZ3VyZWQKPj4gKyAqIEBtdXhfQV9wZXJp cGg6IG11eCBhcyBwZXJpcGggQQo+PiArICogQG11eF9CX3BlcmlwaDogbXV4IGFzIHBlcmlwaCBC Cj4+ICsgKiBAbXV4X0NfcGVyaXBoOiBtdXggYXMgcGVyaXBoIEMKPj4gKyAqIEBtdXhfRF9wZXJp cGg6IG11eCBhcyBwZXJpcGggRAo+PiArICogQHNldF9kZWdsaXRjaDogZW5hYmxlL2Rpc2FibGUg ZGVnbGl0Y2gKPj4gKyAqIEBzZXRfZGVib3VuY2U6IGVuYWJsZS9kaXNhYmxlIGRlYm91bmNlCj4+ ICsgKiBAc2V0X3B1bGxkb3duOiBlbmFibGUvZGlzYWJsZSBwdWxsZG93bgo+PiArICogQGRpc2Fi bGVfc2NobWl0dF90cmlnOiBkaXNhYmxlIHNjaG1pdHQgdHJpZ2dlcgo+PiArICovCj4+ICtzdHJ1 Y3QgYXQ5MV9waW5jdHJsX211eF9vcHMgewo+PiArICAgICBlbnVtIGF0OTFfbXV4ICgqZ2V0X3Bl cmlwaCkodm9pZCBfX2lvbWVtICpwaW8sIHVuc2lnbmVkIG1hc2spOwo+PiArICAgICB2b2lkICgq bXV4X0FfcGVyaXBoKSh2b2lkIF9faW9tZW0gKnBpbywgdW5zaWduZWQgbWFzayk7Cj4+ICsgICAg IHZvaWQgKCptdXhfQl9wZXJpcGgpKHZvaWQgX19pb21lbSAqcGlvLCB1bnNpZ25lZCBtYXNrKTsK Pj4gKyAgICAgdm9pZCAoKm11eF9DX3BlcmlwaCkodm9pZCBfX2lvbWVtICpwaW8sIHVuc2lnbmVk IG1hc2spOwo+PiArICAgICB2b2lkICgqbXV4X0RfcGVyaXBoKSh2b2lkIF9faW9tZW0gKnBpbywg dW5zaWduZWQgbWFzayk7Cj4+ICsgICAgIGJvb2wgKCpnZXRfZGVnbGl0Y2gpKHZvaWQgX19pb21l bSAqcGlvLCB1bnNpZ25lZCBwaW4pOwo+PiArICAgICB2b2lkICgqc2V0X2RlZ2xpdGNoKSh2b2lk IF9faW9tZW0gKnBpbywgdW5zaWduZWQgbWFzaywgYm9vbCBpbl9vbik7Cj4+ICsgICAgIGJvb2wg KCpnZXRfZGVib3VuY2UpKHZvaWQgX19pb21lbSAqcGlvLCB1bnNpZ25lZCBwaW4sIHUzMiAqZGl2 KTsKPj4gKyAgICAgdm9pZCAoKnNldF9kZWJvdW5jZSkodm9pZCBfX2lvbWVtICpwaW8sIHVuc2ln bmVkIG1hc2ssIGJvb2wgaW5fb24sIHUzMiBkaXYpOwo+PiArICAgICBib29sICgqZ2V0X3B1bGxk b3duKSh2b2lkIF9faW9tZW0gKnBpbywgdW5zaWduZWQgcGluKTsKPj4gKyAgICAgdm9pZCAoKnNl dF9wdWxsZG93bikodm9pZCBfX2lvbWVtICpwaW8sIHVuc2lnbmVkIG1hc2ssIGJvb2wgaW5fb24p Owo+PiArICAgICBib29sICgqZ2V0X3NjaG1pdHRfdHJpZykodm9pZCBfX2lvbWVtICpwaW8sIHVu c2lnbmVkIHBpbik7Cj4+ICsgICAgIHZvaWQgKCpkaXNhYmxlX3NjaG1pdHRfdHJpZykodm9pZCBf X2lvbWVtICpwaW8sIHVuc2lnbmVkIG1hc2spOwo+PiArfTsKPj4gKwo+PiArc3RhdGljIGVudW0g YXQ5MV9tdXggYXQ5MV9tdXhfcGlvM19nZXRfcGVyaXBoKHZvaWQgX19pb21lbSAqcGlvLCB1bnNp Z25lZCBtYXNrKQo+PiArewo+PiArICAgICB1bnNpZ25lZCBzZWxlY3Q7Cj4+ICsKPj4gKyAgICAg aWYgKF9fcmF3X3JlYWRsKHBpbyArIFBJT19QU1IpICYgbWFzaykKPj4gKyAgICAgICAgICAgICBy ZXR1cm4gQVQ5MV9NVVhfR1BJTzsKPj4gKwo+PiArICAgICBzZWxlY3QgPSAhIShfX3Jhd19yZWFk bChwaW8gKyBQSU9fQUJDRFNSMSkgJiBtYXNrKTsKPj4gKyAgICAgc2VsZWN0IHw9ICghIShfX3Jh d19yZWFkbChwaW8gKyBQSU9fQUJDRFNSMikgJiBtYXNrKSA8PCAxKTsKPj4gKwo+PiArICAgICBy ZXR1cm4gc2VsZWN0ICsgMTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGVudW0gYXQ5MV9tdXggYXQ5 MV9tdXhfZ2V0X3BlcmlwaCh2b2lkIF9faW9tZW0gKnBpbywgdW5zaWduZWQgbWFzaykKPj4gK3sK Pj4gKyAgICAgdW5zaWduZWQgc2VsZWN0Owo+PiArCj4+ICsgICAgIGlmIChfX3Jhd19yZWFkbChw aW8gKyBQSU9fUFNSKSAmIG1hc2spCj4+ICsgICAgICAgICAgICAgcmV0dXJuIEFUOTFfTVVYX0dQ SU87Cj4+ICsKPj4gKyAgICAgc2VsZWN0ID0gX19yYXdfcmVhZGwocGlvICsgUElPX0FCU1IpICYg bWFzazsKPj4gKwo+PiArICAgICByZXR1cm4gc2VsZWN0ICsgMTsKPj4gK30KPj4gKwo+PiArc3Rh dGljIGJvb2wgYXQ5MV9tdXhfZ2V0X2RlZ2xpdGNoKHZvaWQgX19pb21lbSAqcGlvLCB1bnNpZ25l ZCBwaW4pCj4+ICt7Cj4+ICsgICAgIHJldHVybiAoX19yYXdfcmVhZGwocGlvICsgUElPX0lGU1Ip ID4+IHBpbikgJiAweDE7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBib29sIGF0OTFfbXV4X3BpbzNf Z2V0X2RlYm91bmNlKHZvaWQgX19pb21lbSAqcGlvLCB1bnNpZ25lZCBwaW4sIHUzMiAqZGl2KQo+ PiArewo+PiArICAgICAqZGl2ID0gX19yYXdfcmVhZGwocGlvICsgUElPX1NDRFIpOwo+PiArCj4+ ICsgICAgIHJldHVybiAoX19yYXdfcmVhZGwocGlvICsgUElPX0lGU0NTUikgPj4gcGluKSAmIDB4 MTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGJvb2wgYXQ5MV9tdXhfcGlvM19nZXRfcHVsbGRvd24o dm9pZCBfX2lvbWVtICpwaW8sIHVuc2lnbmVkIHBpbikKPj4gK3sKPj4gKyAgICAgcmV0dXJuIChf X3Jhd19yZWFkbChwaW8gKyBQSU9fUFBEU1IpID4+IHBpbikgJiAweDE7Cj4+ICt9Cj4+ICsKPj4g K3N0YXRpYyBib29sIGF0OTFfbXV4X3BpbzNfZ2V0X3NjaG1pdHRfdHJpZyh2b2lkIF9faW9tZW0g KnBpbywgdW5zaWduZWQgcGluKQo+PiArewo+PiArICAgICByZXR1cm4gKF9fcmF3X3JlYWRsKHBp byArIFBJT19TQ0hNSVRUKSA+PiBwaW4pICYgMHgxOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgc3Ry dWN0IGF0OTFfcGluY3RybF9tdXhfb3BzIGF0OTFybTkyMDBfb3BzID0gewo+PiArICAgICAuZ2V0 X3BlcmlwaCAgICAgPSBhdDkxX211eF9nZXRfcGVyaXBoLAo+PiArICAgICAubXV4X0FfcGVyaXBo ICAgPSBhdDkxX211eF9zZXRfQV9wZXJpcGgsCj4+ICsgICAgIC5tdXhfQl9wZXJpcGggICA9IGF0 OTFfbXV4X3NldF9CX3BlcmlwaCwKPj4gKyAgICAgLmdldF9kZWdsaXRjaCAgID0gYXQ5MV9tdXhf Z2V0X2RlZ2xpdGNoLAo+PiArICAgICAuc2V0X2RlZ2xpdGNoICAgPSBhdDkxX211eF9zZXRfZGVn bGl0Y2gsCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgc3RydWN0IGF0OTFfcGluY3RybF9tdXhfb3Bz IGF0OTFzYW05eDVfb3BzID0gewo+PiArICAgICAuZ2V0X3BlcmlwaCAgICAgPSBhdDkxX211eF9w aW8zX2dldF9wZXJpcGgsCj4+ICsgICAgIC5tdXhfQV9wZXJpcGggICA9IGF0OTFfbXV4X3BpbzNf c2V0X0FfcGVyaXBoLAo+PiArICAgICAubXV4X0JfcGVyaXBoICAgPSBhdDkxX211eF9waW8zX3Nl dF9CX3BlcmlwaCwKPj4gKyAgICAgLm11eF9DX3BlcmlwaCAgID0gYXQ5MV9tdXhfcGlvM19zZXRf Q19wZXJpcGgsCj4+ICsgICAgIC5tdXhfRF9wZXJpcGggICA9IGF0OTFfbXV4X3BpbzNfc2V0X0Rf cGVyaXBoLAo+PiArICAgICAuZ2V0X2RlZ2xpdGNoICAgPSBhdDkxX211eF9nZXRfZGVnbGl0Y2gs Cj4+ICsgICAgIC5zZXRfZGVnbGl0Y2ggICA9IGF0OTFfbXV4X3BpbzNfc2V0X2RlZ2xpdGNoLAo+ PiArICAgICAuZ2V0X2RlYm91bmNlICAgPSBhdDkxX211eF9waW8zX2dldF9kZWJvdW5jZSwKPj4g KyAgICAgLnNldF9kZWJvdW5jZSAgID0gYXQ5MV9tdXhfcGlvM19zZXRfZGVib3VuY2UsCj4+ICsg ICAgIC5nZXRfcHVsbGRvd24gICA9IGF0OTFfbXV4X3BpbzNfZ2V0X3B1bGxkb3duLAo+PiArICAg ICAuc2V0X3B1bGxkb3duICAgPSBhdDkxX211eF9waW8zX3NldF9wdWxsZG93biwKPj4gKyAgICAg LmdldF9zY2htaXR0X3RyaWcgPSBhdDkxX211eF9waW8zX2dldF9zY2htaXR0X3RyaWcsCj4+ICsg ICAgIC5kaXNhYmxlX3NjaG1pdHRfdHJpZyA9IGF0OTFfbXV4X3BpbzNfZGlzYWJsZV9zY2htaXR0 X3RyaWcsCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgaW50IGF0OTFfbXV4X3BpbihzdHJ1Y3QgYXQ5 MV9waW5jdHJsICppbmZvLCB1bnNpZ25lZCBwaW4sIGVudW0gYXQ5MV9tdXggbXV4LCBpbnQgdXNl X3B1bGx1cCkKPj4gK3sKPj4gKyAgICAgdm9pZCBfX2lvbWVtICAgICpwaW8gPSBwaW5fdG9fY29u dHJvbGxlcihpbmZvLCBwaW4pOwo+PiArICAgICB1bnNpZ25lZCBtYXNrID0gcGluX3RvX21hc2so cGluKTsKPj4gKwo+PiArICAgICBpZiAoIWluZm8pCj4+ICsgICAgICAgICAgICAgcmV0dXJuIC1F SU5WQUw7Cj4+ICsKPj4gKyAgICAgaWYgKCFwaW8pCj4+ICsgICAgICAgICAgICAgcmV0dXJuIC1F SU5WQUw7Cj4+ICsKPj4gKyAgICAgYXQ5MV9tdXhfZGlzYWJsZV9pbnRlcnJ1cHQocGlvLCBtYXNr KTsKPj4gKwo+PiArICAgICBzd2l0Y2gobXV4KSB7Cj4+ICsgICAgIGNhc2UgQVQ5MV9NVVhfR1BJ TzoKPj4gKyAgICAgICAgICAgICBhdDkxX211eF9ncGlvX2VuYWJsZShwaW8sIG1hc2spOwo+PiAr ICAgICAgICAgICAgIGJyZWFrOwo+PiArICAgICBjYXNlIEFUOTFfTVVYX1BFUklQSF9BOgo+PiAr ICAgICAgICAgICAgIGluZm8tPm9wcy0+bXV4X0FfcGVyaXBoKHBpbywgbWFzayk7Cj4+ICsgICAg ICAgICAgICAgYnJlYWs7Cj4+ICsgICAgIGNhc2UgQVQ5MV9NVVhfUEVSSVBIX0I6Cj4+ICsgICAg ICAgICAgICAgaW5mby0+b3BzLT5tdXhfQl9wZXJpcGgocGlvLCBtYXNrKTsKPj4gKyAgICAgICAg ICAgICBicmVhazsKPj4gKyAgICAgY2FzZSBBVDkxX01VWF9QRVJJUEhfQzoKPj4gKyAgICAgICAg ICAgICBpZiAoIWluZm8tPm9wcy0+bXV4X0NfcGVyaXBoKQo+PiArICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIC1FSU5WQUw7Cj4+ICsgICAgICAgICAgICAgaW5mby0+b3BzLT5tdXhfQ19wZXJp cGgocGlvLCBtYXNrKTsKPj4gKyAgICAgICAgICAgICBicmVhazsKPj4gKyAgICAgY2FzZSBBVDkx X01VWF9QRVJJUEhfRDoKPj4gKyAgICAgICAgICAgICBpZiAoIWluZm8tPm9wcy0+bXV4X0RfcGVy aXBoKQo+PiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+ICsgICAgICAg ICAgICAgaW5mby0+b3BzLT5tdXhfRF9wZXJpcGgocGlvLCBtYXNrKTsKPj4gKyAgICAgICAgICAg ICBicmVhazsKPj4gKyAgICAgfQo+PiArICAgICBpZiAobXV4KQo+PiArICAgICAgICAgICAgIGF0 OTFfbXV4X2dwaW9fZGlzYWJsZShwaW8sIG1hc2spOwo+PiArCj4+ICsgICAgIGlmICh1c2VfcHVs bHVwID49IDApCj4+ICsgICAgICAgICAgICAgYXQ5MV9tdXhfc2V0X3B1bGx1cChwaW8sIG1hc2ss IHVzZV9wdWxsdXApOwo+PiArCj4+ICsgICAgIHJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0 aWMgc3RydWN0IG9mX2RldmljZV9pZCBhdDkxX3BpbmN0cmxfZHRfaWRzW10gPSB7Cj4+ICsgICAg IHsKPj4gKyAgICAgICAgICAgICAuY29tcGF0aWJsZSA9ICJhdG1lbCxhdDkxcm05MjAwLXBpbmN0 cmwiLAo+PiArICAgICAgICAgICAgIC5kYXRhID0gKHVuc2lnbmVkIGxvbmcpJmF0OTFybTkyMDBf b3BzLAo+PiArICAgICB9LCB7Cj4+ICsgICAgICAgICAgICAgLmNvbXBhdGlibGUgPSAiYXRtZWws YXQ5MXNhbTl4NS1waW5jdHJsIiwKPj4gKyAgICAgICAgICAgICAuZGF0YSA9ICh1bnNpZ25lZCBs b25nKSZhdDkxc2FtOXg1X29wcywKPj4gKyAgICAgfSwgewo+PiArICAgICAgICAgICAgIC8qIHNl bnRpbmVsICovCj4+ICsgICAgIH0KPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBzdHJ1Y3QgYXQ5MV9w aW5jdHJsX211eF9vcHMgKmF0OTFfcGluY3RybF9nZXRfZHJpdmVyX2RhdGEoc3RydWN0IGRldmlj ZV9kICpkZXYpCj4+ICt7Cj4+ICsgICAgc3RydWN0IGF0OTFfcGluY3RybF9tdXhfb3BzICpvcHNf ZGF0YSA9IE5VTEw7Cj4+ICsgICAgaW50IHJjOwo+PiArCj4+ICsgICAgaWYgKGRldi0+ZGV2aWNl X25vZGUpIHsKPj4gKyAgICAgICAgIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm1hdGNoOwo+ PiArICAgICAgICAgbWF0Y2ggPSBvZl9tYXRjaF9ub2RlKGF0OTFfcGluY3RybF9kdF9pZHMsIGRl di0+ZGV2aWNlX25vZGUpOwo+PiArICAgICAgICAgaWYgKCFtYXRjaCkKPj4gKyAgICAgICAgICAg ICAgICAgICAgIG9wc19kYXRhID0gTlVMTDsKPj4gKyAgICAgICAgIGVsc2UKPj4gKyAgICAgICAg ICAgICAgICAgICAgIG9wc19kYXRhID0gKHN0cnVjdCBhdDkxX3BpbmN0cmxfbXV4X29wcyAqKW1h dGNoLT5kYXRhOwo+PiArICAgIH0KPj4gKyAgICBlbHNlIHsKPj4gKyAgICAgICAgIHJjID0gZGV2 X2dldF9kcnZkYXRhKGRldiwgKHVuc2lnbmVkIGxvbmcgKikmb3BzX2RhdGEpOwo+PiArICAgICAg ICAgICAgIGlmIChyYykKPj4gKyAgICAgICAgICAgICBvcHNfZGF0YSA9IE5VTEw7Cj4+ICsgICAg fQo+PiArCj4+ICsgICAgcmV0dXJuIG9wc19kYXRhOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50 IGF0OTFfcGluY3RybF9zZXRfY29uZihzdHJ1Y3QgYXQ5MV9waW5jdHJsICppbmZvLCB1bnNpZ25l ZCBpbnQgcGluX251bSwgdW5zaWduZWQgaW50IG11eCwgdW5zaWduZWQgaW50IGNvbmYpCj4+ICt7 Cj4+ICsgICAgIHVuc2lnbmVkIGludCBtYXNrOwo+PiArICAgICB2b2lkIF9faW9tZW0gKnBpbzsK Pj4gKwo+PiArICAgICBwaW8gPSBwaW5fdG9fY29udHJvbGxlcihpbmZvLCBwaW5fbnVtKTsKPj4g KyAgICAgbWFzayA9IHBpbl90b19tYXNrKHBpbl9udW0pOwo+PiArCj4+ICsgICAgIGlmIChjb25m ICYgUFVMTF9VUCAmJiBjb25mICYgUFVMTF9ET1dOKQo+PiArICAgICAgICAgICAgIHJldHVybiAt RUlOVkFMOwo+PiArCj4+ICsgICAgIGF0OTFfbXV4X3NldF9wdWxsdXAocGlvLCBtYXNrLCBjb25m ICYgUFVMTF9VUCk7Cj4+ICsgICAgIGF0OTFfbXV4X3NldF9tdWx0aWRyaXZlKHBpbywgbWFzaywg Y29uZiAmIE1VTFRJX0RSSVZFKTsKPj4gKyAgICAgaWYgKGluZm8tPm9wcy0+c2V0X2RlZ2xpdGNo KQo+PiArICAgICAgICAgICAgIGluZm8tPm9wcy0+c2V0X2RlZ2xpdGNoKHBpbywgbWFzaywgY29u ZiAmIERFR0xJVENIKTsKPj4gKyAgICAgaWYgKGluZm8tPm9wcy0+c2V0X2RlYm91bmNlKQo+PiAr ICAgICAgICAgICAgIGluZm8tPm9wcy0+c2V0X2RlYm91bmNlKHBpbywgbWFzaywgY29uZiAmIERF Qk9VTkNFLAo+PiArICAgICAgICAgICAgICAgICAgICAgKGNvbmYgJiBERUJPVU5DRV9WQUwpID4+ IERFQk9VTkNFX1ZBTF9TSElGVCk7Cj4+ICsgICAgIGlmIChpbmZvLT5vcHMtPnNldF9wdWxsZG93 bikKPj4gKyAgICAgICAgICAgICBpbmZvLT5vcHMtPnNldF9wdWxsZG93bihwaW8sIG1hc2ssIGNv bmYgJiBQVUxMX0RPV04pOwo+PiArICAgICBpZiAoaW5mby0+b3BzLT5kaXNhYmxlX3NjaG1pdHRf dHJpZyAmJiBjb25mICYgRElTX1NDSE1JVCkKPj4gKyAgICAgICAgICAgICBpbmZvLT5vcHMtPmRp c2FibGVfc2NobWl0dF90cmlnKHBpbywgbWFzayk7Cj4+ICsKPj4gKyAgICAgcmV0dXJuIDA7Cj4+ ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgYXQ5MV9waW5jdHJsX3NldF9zdGF0ZShzdHJ1Y3QgcGlu Y3RybF9kZXZpY2UgKnBkZXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApCj4+ICt7Cj4+ICsgICAg IHN0cnVjdCBhdDkxX3BpbmN0cmwgKmluZm87Cj4+ICsgICAgIGNvbnN0IF9fYmUzMiAqbGlzdDsK Pj4gKyAgICAgaW50IGksIHNpemU7Cj4+ICsgICAgIGludCByZXQgPSAwOwo+PiArICAgICBpbnQg YmFua19udW0sIHBpbl9udW0sIG11eCwgY29uZjsKPj4gKwo+PiArICAgICBpbmZvID0gdG9fYXQ5 MV9waW5jdHJsKHBkZXYpOwo+PiArCj4+ICsgICAgIGxpc3QgPSBvZl9nZXRfcHJvcGVydHkobnAs ICJhdG1lbCxwaW5zIiwgJnNpemUpOwo+PiArICAgICBzaXplIC89IHNpemVvZigqbGlzdCk7Cj4+ ICsKPj4gKyAgICAgaWYgKCFzaXplIHx8IHNpemUgJSA0KSB7Cj4+ICsgICAgICAgICAgICAgZGV2 X2VycihwZGV2LT5kZXYsICJ3cm9uZyBwaW5zIG51bWJlciBvciBwaW5zIGFuZCBjb25maWdzIHNo b3VsZCBiZSBieSA0XG4iKTsKPj4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4gKyAg ICAgfQo+PiArCj4+ICsgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpICs9IDQpIHsKPj4gKyAg ICAgICAgICAgICBiYW5rX251bSA9IGJlMzJfdG9fY3B1KCpsaXN0KyspOwo+PiArICAgICAgICAg ICAgIHBpbl9udW0gPSBiZTMyX3RvX2NwdSgqbGlzdCsrKTsKPj4gKyAgICAgICAgICAgICBtdXgg PSBiZTMyX3RvX2NwdSgqbGlzdCsrKTsKPj4gKyAgICAgICAgICAgICBjb25mID0gYmUzMl90b19j cHUoKmxpc3QrKyk7Cj4+ICsKPj4gKyAgICAgICAgICAgICByZXQgPSBhdDkxX211eF9waW4oaW5m bywgcGluX251bSwgbXV4LCBjb25mICYgUFVMTF9VUCk7Cj4+ICsgICAgICAgICAgICAgaWYgKHJl dCkgewo+PiArICAgICAgICAgICAgICAgICAgICAgZGV2X2VycihwZGV2LT5kZXYsICJmYWlsZWQg dG8gbXV4IHBpbiAlZFxuIiwgcGluX251bSk7Cj4+ICsgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gcmV0Owo+PiArICAgICAgICAgICAgIH0KPj4gKwo+PiArICAgICAgICAgICAgIHJldCA9IGF0 OTFfcGluY3RybF9zZXRfY29uZihpbmZvLCBwaW5fbnVtLCBtdXgsIGNvbmYpOwo+PiArICAgICAg ICAgICAgIGlmIChyZXQpIHsKPj4gKyAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIocGRldi0+ ZGV2LCAiZmFpbGVkIHRvIHNldCBjb25mIG9uIHBpbiAlZFxuIiwgcGluX251bSk7Cj4+ICsgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+PiArICAgICAgICAgICAgIH0KPj4gKyAgICAg fQo+PiArCj4+ICsgICAgIHJldHVybiByZXQ7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBzdHJ1Y3Qg cGluY3RybF9vcHMgYXQ5MV9waW5jdHJsX29wcyA9IHsKPj4gKyAgICAgLnNldF9zdGF0ZSA9IGF0 OTFfcGluY3RybF9zZXRfc3RhdGUsCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgaW50IGF0OTFfcGlu Y3RybF9wcm9iZShzdHJ1Y3QgZGV2aWNlX2QgKmRldikKPj4gK3sKPj4gKyAgICAgc3RydWN0IGF0 OTFfcGluY3RybCAqaW5mbzsKPj4gKyAgICAgaW50IHJldDsKPj4gKwo+PiArICAgICBpbmZvID0g eHphbGxvYyhzaXplb2Yoc3RydWN0IGF0OTFfcGluY3RybCkpOwo+PiArCj4+ICsgICAgIGluZm8t Pm9wcyA9IGF0OTFfcGluY3RybF9nZXRfZHJpdmVyX2RhdGEoZGV2KTsKPj4gKyAgICAgaWYgKCFp bmZvLT5vcHMpIHsKPj4gKyAgICAgICAgICAgICBkZXZfZXJyKGRldiwgImZhaWxlZCB0byByZXRy aWV2ZSBkcml2ZXIgZGF0YVxuIik7Cj4+ICsgICAgICAgICAgICAgcmV0dXJuIC1FTk9ERVY7Cj4+ ICsgICAgIH0KPj4gKwo+PiArICAgICBpbmZvLT5wY3RsLmRldiA9IGRldjsKPj4gKyAgICAgaW5m by0+cGN0bC5vcHMgPSAmYXQ5MV9waW5jdHJsX29wczsKPj4gKwo+PiArICAgICByZXQgPSBwaW5j dHJsX3JlZ2lzdGVyKCZpbmZvLT5wY3RsKTsKPj4gKyAgICAgaWYgKHJldCkKPj4gKyAgICAgICAg ICAgICByZXR1cm4gcmV0Owo+PiArCj4+ICsgICAgIGRldl9pbmZvKGRldiwgIkFUOTEgcGluY3Ry bCByZWdpc3RyZWRcbiIpOwo+PiArCj4+ICsgICAgIHJldHVybiAwOwo+PiArfQo+PiArCj4+ICtz dGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZV9pZCBhdDkxX3BpbmN0cmxfaWRzW10gPSB7Cj4+ ICsgICAgIHsKPj4gKyAgICAgICAgICAgICAubmFtZSA9ICJhdDkxcm05MjAwLXBpbmN0cmwiLAo+ PiArICAgICAgICAgICAgIC5kcml2ZXJfZGF0YSA9ICh1bnNpZ25lZCBsb25nKSZhdDkxcm05MjAw X29wcywKPj4gKyAgICAgfSwgewo+PiArICAgICAgICAgICAgIC5uYW1lID0gImF0OTFzYW05eDUt cGluY3RybCIsCj4+ICsgICAgICAgICAgICAgLmRyaXZlcl9kYXRhID0gKHVuc2lnbmVkIGxvbmcp JmF0OTFzYW05eDVfb3BzLAo+PiArICAgICB9LCB7Cj4+ICsgICAgICAgICAgICAgLyogc2VudGlu ZWwgKi8KPj4gKyAgICAgfSwKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBzdHJ1Y3QgZHJpdmVyX2Qg YXQ5MV9waW5jdHJsX2RyaXZlciA9IHsKPj4gKyAgICAgLm5hbWUgPSAicGluY3RybC1hdDkxIiwK Pj4gKyAgICAgLnByb2JlID0gYXQ5MV9waW5jdHJsX3Byb2JlLAo+PiArICAgICAuaWRfdGFibGUg PSBhdDkxX3BpbmN0cmxfaWRzLAo+PiArICAgICAub2ZfY29tcGF0aWJsZSA9IERSVl9PRl9DT01Q QVQoYXQ5MV9waW5jdHJsX2R0X2lkcyksCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgaW50IGF0OTFf cGluY3RybF9pbml0KHZvaWQpCj4+ICt7Cj4+ICsgICAgIHJldHVybiBwbGF0Zm9ybV9kcml2ZXJf cmVnaXN0ZXIoJmF0OTFfcGluY3RybF9kcml2ZXIpOwo+PiArfQo+PiArY29yZWRldmljZV9pbml0 Y2FsbChhdDkxX3BpbmN0cmxfaW5pdCk7Cj4+ICsKPj4gK3N0YXRpYyBpbnQgYXQ5MV9ncGlvX2dl dChzdHJ1Y3QgZ3Bpb19jaGlwICpjaGlwLCB1bnNpZ25lZCBvZmZzZXQpCj4+ICt7Cj4+ICsgICAg IHN0cnVjdCBhdDkxX2dwaW9fY2hpcCAqYXQ5MV9ncGlvID0gdG9fYXQ5MV9ncGlvX2NoaXAoY2hp cCk7Cj4+ICsgICAgIHZvaWQgX19pb21lbSAqcGlvID0gYXQ5MV9ncGlvLT5yZWdiYXNlOwo+PiAr ICAgICB1bnNpZ25lZCBtYXNrID0gMSA8PCBvZmZzZXQ7Cj4+ICsKPj4gKyAgICAgcmV0dXJuIGF0 OTFfbXV4X2dwaW9fZ2V0KHBpbywgbWFzayk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIGF0 OTFfZ3Bpb19zZXQoc3RydWN0IGdwaW9fY2hpcCAqY2hpcCwgdW5zaWduZWQgb2Zmc2V0LCBpbnQg dmFsdWUpCj4+ICt7Cj4+ICsgICAgIHN0cnVjdCBhdDkxX2dwaW9fY2hpcCAqYXQ5MV9ncGlvID0g dG9fYXQ5MV9ncGlvX2NoaXAoY2hpcCk7Cj4+ICsgICAgIHZvaWQgX19pb21lbSAqcGlvID0gYXQ5 MV9ncGlvLT5yZWdiYXNlOwo+PiArICAgICB1bnNpZ25lZCBtYXNrID0gMSA8PCBvZmZzZXQ7Cj4+ ICsKPj4gKyAgICAgYXQ5MV9tdXhfZ3Bpb19zZXQocGlvLCBtYXNrLCB2YWx1ZSk7Cj4+ICt9Cj4+ ICsKPj4gK3N0YXRpYyBpbnQgYXQ5MV9ncGlvX2RpcmVjdGlvbl9vdXRwdXQoc3RydWN0IGdwaW9f Y2hpcCAqY2hpcCwgdW5zaWduZWQgb2Zmc2V0LAo+PiArICAgICAgICAgICAgIGludCB2YWx1ZSkK Pj4gK3sKPj4gKyAgICAgc3RydWN0IGF0OTFfZ3Bpb19jaGlwICphdDkxX2dwaW8gPSB0b19hdDkx X2dwaW9fY2hpcChjaGlwKTsKPj4gKyAgICAgdm9pZCBfX2lvbWVtICpwaW8gPSBhdDkxX2dwaW8t PnJlZ2Jhc2U7Cj4+ICsgICAgIHVuc2lnbmVkIG1hc2sgPSAxIDw8IG9mZnNldDsKPj4gKwo+PiAr ICAgICBhdDkxX211eF9ncGlvX3NldChwaW8sIG1hc2ssIHZhbHVlKTsKPj4gKyAgICAgX19yYXdf d3JpdGVsKG1hc2ssIHBpbyArIFBJT19PRVIpOwo+PiArCj4+ICsgICAgIHJldHVybiAwOwo+PiAr fQo+PiArCj4+ICtzdGF0aWMgaW50IGF0OTFfZ3Bpb19kaXJlY3Rpb25faW5wdXQoc3RydWN0IGdw aW9fY2hpcCAqY2hpcCwgdW5zaWduZWQgb2Zmc2V0KQo+PiArewo+PiArICAgICBzdHJ1Y3QgYXQ5 MV9ncGlvX2NoaXAgKmF0OTFfZ3BpbyA9IHRvX2F0OTFfZ3Bpb19jaGlwKGNoaXApOwo+PiArICAg ICB2b2lkIF9faW9tZW0gKnBpbyA9IGF0OTFfZ3Bpby0+cmVnYmFzZTsKPj4gKyAgICAgdW5zaWdu ZWQgbWFzayA9IDEgPDwgb2Zmc2V0Owo+PiArCj4+ICsgICAgIF9fcmF3X3dyaXRlbChtYXNrLCBw aW8gKyBQSU9fT0RSKTsKPj4gKwo+PiArICAgICByZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3Rh dGljIGludCBhdDkxX2dwaW9fcmVxdWVzdChzdHJ1Y3QgZ3Bpb19jaGlwICpjaGlwLCB1bnNpZ25l ZCBvZmZzZXQpCj4+ICt7Cj4+ICsgICAgIHN0cnVjdCBhdDkxX2dwaW9fY2hpcCAqYXQ5MV9ncGlv ID0gdG9fYXQ5MV9ncGlvX2NoaXAoY2hpcCk7Cj4+ICsgICAgIHZvaWQgX19pb21lbSAqcGlvID0g YXQ5MV9ncGlvLT5yZWdiYXNlOwo+PiArICAgICB1bnNpZ25lZCBtYXNrID0gMSA8PCBvZmZzZXQ7 Cj4+ICsKPj4gKyAgICAgZGV2X2RiZyhjaGlwLT5kZXYsICIlczolZCBwaW8lYyVkKCVkKVxuIiwg X19mdW5jX18sIF9fTElORV9fLAo+PiArICAgICAgICAgICAgICAnQScgKyBwaW5fdG9fYmFuayhj aGlwLT5iYXNlKSwgb2Zmc2V0LCBjaGlwLT5iYXNlICsgb2Zmc2V0KTsKPj4gKyAgICAgYXQ5MV9t dXhfZ3Bpb19lbmFibGUocGlvLCBtYXNrKTsKPj4gKwo+PiArICAgICByZXR1cm4gMDsKPj4gK30K Pj4gKwo+PiArc3RhdGljIHZvaWQgYXQ5MV9ncGlvX2ZyZWUoc3RydWN0IGdwaW9fY2hpcCAqY2hp cCwgdW5zaWduZWQgb2Zmc2V0KQo+PiArewo+PiArICAgICBkZXZfZGJnKGNoaXAtPmRldiwgIiVz OiVkIHBpbyVjJWQoJWQpXG4iLCBfX2Z1bmNfXywgX19MSU5FX18sCj4+ICsgICAgICAgICAgICAg ICdBJyArIHBpbl90b19iYW5rKGNoaXAtPmJhc2UpLCBvZmZzZXQsIGNoaXAtPmJhc2UgKyBvZmZz ZXQpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgc3RydWN0IGdwaW9fb3BzIGF0OTFfZ3Bpb19vcHMg PSB7Cj4+ICsgICAgIC5yZXF1ZXN0ID0gYXQ5MV9ncGlvX3JlcXVlc3QsCj4+ICsgICAgIC5mcmVl ID0gYXQ5MV9ncGlvX2ZyZWUsCj4+ICsgICAgIC5kaXJlY3Rpb25faW5wdXQgPSBhdDkxX2dwaW9f ZGlyZWN0aW9uX2lucHV0LAo+PiArICAgICAuZGlyZWN0aW9uX291dHB1dCA9IGF0OTFfZ3Bpb19k aXJlY3Rpb25fb3V0cHV0LAo+PiArICAgICAuZ2V0ID0gYXQ5MV9ncGlvX2dldCwKPj4gKyAgICAg LnNldCA9IGF0OTFfZ3Bpb19zZXQsCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgc3RydWN0IG9mX2Rl dmljZV9pZCBhdDkxX2dwaW9fZHRfaWRzW10gPSB7Cj4+ICsgICAgIHsKPj4gKyAgICAgICAgICAg ICAuY29tcGF0aWJsZSA9ICJhdG1lbCxhdDkxcm05MjAwLWdwaW8iLAo+PiArICAgICB9LCB7Cj4+ ICsgICAgICAgICAgICAgLmNvbXBhdGlibGUgPSAiYXRtZWwsYXQ5MXNhbTl4NS1ncGlvIiwKPj4g KyAgICAgfSwgewo+PiArICAgICAgICAgICAgIC8qIHNlbnRpbmVsICovCj4+ICsgICAgIH0sCj4+ ICt9Owo+PiArCj4+ICtzdGF0aWMgaW50IGF0OTFfZ3Bpb19wcm9iZShzdHJ1Y3QgZGV2aWNlX2Qg KmRldikKPj4gK3sKPj4gKyAgICAgc3RydWN0IGF0OTFfZ3Bpb19jaGlwICphdDkxX2dwaW87Cj4+ ICsgICAgIHN0cnVjdCBjbGsgKmNsazsKPj4gKyAgICAgaW50IHJldDsKPj4gKyAgICAgaW50IGFs aWFzX2lkeCA9IG9mX2FsaWFzX2dldF9pZChkZXYtPmRldmljZV9ub2RlLCAiZ3BpbyIpOwo+PiAr Cj4+ICsgICAgIEJVR19PTihkZXYtPmlkID4gTUFYX0dQSU9fQkFOS1MpOwo+PiArCj4+ICsgICAg IGF0OTFfZ3BpbyA9ICZncGlvX2NoaXBbYWxpYXNfaWR4XTsKPj4gKwo+PiArICAgICBjbGsgPSBj bGtfZ2V0KGRldiwgTlVMTCk7Cj4+ICsgICAgIGlmIChJU19FUlIoY2xrKSkgewo+PiArICAgICAg ICAgICAgIHJldCA9IFBUUl9FUlIoY2xrKTsKPj4gKyAgICAgICAgICAgICBkZXZfZXJyKGRldiwg ImNsb2NrIG5vdCBmb3VuZDogJWRcbiIsIHJldCk7Cj4+ICsgICAgICAgICAgICAgcmV0dXJuIHJl dDsKPj4gKyAgICAgfQo+PiArCj4+ICsgICAgIHJldCA9IGNsa19lbmFibGUoY2xrKTsKPj4gKyAg ICAgaWYgKHJldCA8IDApIHsKPj4gKyAgICAgICAgICAgICBkZXZfZXJyKGRldiwgImNsb2NrIGZh aWxlZCB0byBlbmFibGU6ICVkXG4iLCByZXQpOwo+PiArICAgICAgICAgICAgIGNsa19wdXQoY2xr KTsKPj4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Owo+PiArICAgICB9Cj4+ICsKPj4gKyAgICAg Z3Bpb19iYW5rcyA9IG1heChncGlvX2JhbmtzLCBhbGlhc19pZHggKyAxKTsKPj4gKyAgICAgYXQ5 MV9ncGlvLT5yZWdiYXNlID0gZGV2X3JlcXVlc3RfbWVtX3JlZ2lvbihkZXYsIDApOwo+PiArCj4+ ICsgICAgIGF0OTFfZ3Bpby0+Y2hpcC5vcHMgPSAmYXQ5MV9ncGlvX29wczsKPj4gKyAgICAgYXQ5 MV9ncGlvLT5jaGlwLm5ncGlvID0gTUFYX05CX0dQSU9fUEVSX0JBTks7Cj4+ICsgICAgIGF0OTFf Z3Bpby0+Y2hpcC5kZXYgPSBkZXY7Cj4+ICsgICAgIGF0OTFfZ3Bpby0+Y2hpcC5iYXNlID0gZGV2 LT5pZCAqIE1BWF9OQl9HUElPX1BFUl9CQU5LOwo+PiArCj4+ICsgICAgIHJldCA9IGdwaW9jaGlw X2FkZCgmYXQ5MV9ncGlvLT5jaGlwKTsKPj4gKyAgICAgaWYgKHJldCkgewo+PiArICAgICAgICAg ICAgIGRldl9lcnIoZGV2LCAiY291bGRuJ3QgYWRkIGdwaW9jaGlwLCByZXQgPSAlZFxuIiwgcmV0 KTsKPj4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Owo+PiArICAgICB9Cj4+ICsKPj4gKyAgICAg ZGV2X2luZm8oZGV2LCAiQVQ5MSBncGlvIGRyaXZlciByZWdpc3RyZWRcbiIpOwo+PiArCj4+ICsg ICAgIHJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2Rldmlj ZV9pZCBhdDkxX2dwaW9faWRzW10gPSB7Cj4+ICsgICAgIHsKPj4gKyAgICAgICAgICAgICAubmFt ZSA9ICJhdDkxcm05MjAwLWdwaW8iLAo+PiArICAgICB9LCB7Cj4+ICsgICAgICAgICAgICAgLm5h bWUgPSAiYXQ5MXNhbTl4NS1ncGlvIiwKPj4gKyAgICAgfSwgewo+PiArICAgICAgICAgICAgIC8q IHNlbnRpbmVsICovCj4+ICsgICAgIH0sCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgc3RydWN0IGRy aXZlcl9kIGF0OTFfZ3Bpb19kcml2ZXIgPSB7Cj4+ICsgICAgIC5uYW1lID0gImdwaW8tYXQ5MSIs Cj4+ICsgICAgIC5wcm9iZSA9IGF0OTFfZ3Bpb19wcm9iZSwKPj4gKyAgICAgLmlkX3RhYmxlID0g YXQ5MV9ncGlvX2lkcywKPj4gKyAgICAgLm9mX2NvbXBhdGlibGUgID0gRFJWX09GX0NPTVBBVChh dDkxX2dwaW9fZHRfaWRzKSwKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBpbnQgYXQ5MV9ncGlvX2lu aXQodm9pZCkKPj4gK3sKPj4gKyAgICAgcmV0dXJuIHBsYXRmb3JtX2RyaXZlcl9yZWdpc3Rlcigm YXQ5MV9ncGlvX2RyaXZlcik7Cj4+ICt9Cj4+ICtjb3JlZGV2aWNlX2luaXRjYWxsKGF0OTFfZ3Bp b19pbml0KTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGluY3RybC9waW5jdHJsLWF0OTEuaCBi L2RyaXZlcnMvcGluY3RybC9waW5jdHJsLWF0OTEuaAo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ PiBpbmRleCAwMDAwMDAwLi5lNzE5ZmI4Cj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvZHJpdmVy cy9waW5jdHJsL3BpbmN0cmwtYXQ5MS5oCj4+IEBAIC0wLDAgKzEsMTQ4IEBACj4+ICsvKgo+PiAr ICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTIgSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExB UkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KPj4gKyAqCj4+ICsgKiBVbmRlciBHUEx2MiBvbmx5 Cj4+ICsgKi8KPj4gKwo+PiArI2lmbmRlZiBfX0FUOTFfR1BJT19IX18KPj4gKyNkZWZpbmUgX19B VDkxX0dQSU9fSF9fCj4+ICsKPj4gKyNpZm5kZWYgX19ncGlvX2luaXQKPj4gKyNkZWZpbmUgX19n cGlvX2luaXQKPj4gKyNlbmRpZgo+PiArCj4+ICsjZGVmaW5lIE1BWF9OQl9HUElPX1BFUl9CQU5L IDMyCj4+ICsKPj4gK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgcGluX3RvX2JhbmsodW5zaWduZWQg cGluKQo+PiArewo+PiArICAgICByZXR1cm4gcGluIC8gTUFYX05CX0dQSU9fUEVSX0JBTks7Cj4+ ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgcGluX3RvX2Jhbmtfb2Zmc2V0KHVu c2lnbmVkIHBpbikKPj4gK3sKPj4gKyAgICAgcmV0dXJuIHBpbiAlIE1BWF9OQl9HUElPX1BFUl9C QU5LOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW5saW5lIHVuc2lnbmVkIHBpbl90b19tYXNrKHVu c2lnbmVkIHBpbikKPj4gK3sKPj4gKyAgICAgcmV0dXJuIDEgPDwgcGluX3RvX2Jhbmtfb2Zmc2V0 KHBpbik7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBhdDkxX211eF9kaXNhYmxl X2ludGVycnVwdCh2b2lkIF9faW9tZW0gKnBpbywgdW5zaWduZWQgbWFzaykKPj4gK3sKPj4gKyAg ICAgX19yYXdfd3JpdGVsKG1hc2ssIHBpbyArIFBJT19JRFIpOwo+PiArfQo+PiArCj4+ICtzdGF0 aWMgaW5saW5lIHZvaWQgYXQ5MV9tdXhfc2V0X3B1bGx1cCh2b2lkIF9faW9tZW0gKnBpbywgdW5z aWduZWQgbWFzaywgYm9vbCBvbikKPj4gK3sKPj4gKyAgICAgX19yYXdfd3JpdGVsKG1hc2ssIHBp byArIChvbiA/IFBJT19QVUVSIDogUElPX1BVRFIpKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGlu bGluZSB2b2lkIGF0OTFfbXV4X3NldF9tdWx0aWRyaXZlKHZvaWQgX19pb21lbSAqcGlvLCB1bnNp Z25lZCBtYXNrLCBib29sIG9uKQo+PiArewo+PiArICAgICBfX3Jhd193cml0ZWwobWFzaywgcGlv ICsgKG9uID8gUElPX01ERVIgOiBQSU9fTUREUikpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW5s aW5lIHZvaWQgYXQ5MV9tdXhfc2V0X0FfcGVyaXBoKHZvaWQgX19pb21lbSAqcGlvLCB1bnNpZ25l ZCBtYXNrKQo+PiArewo+PiArICAgICBfX3Jhd193cml0ZWwobWFzaywgcGlvICsgUElPX0FTUik7 Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBhdDkxX211eF9zZXRfQl9wZXJpcGgo dm9pZCBfX2lvbWVtICpwaW8sIHVuc2lnbmVkIG1hc2spCj4+ICt7Cj4+ICsgICAgIF9fcmF3X3dy aXRlbChtYXNrLCBwaW8gKyBQSU9fQlNSKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGlubGluZSB2 b2lkIGF0OTFfbXV4X3BpbzNfc2V0X0FfcGVyaXBoKHZvaWQgX19pb21lbSAqcGlvLCB1bnNpZ25l ZCBtYXNrKQo+PiArewo+PiArCj4+ICsgICAgIF9fcmF3X3dyaXRlbChfX3Jhd19yZWFkbChwaW8g KyBQSU9fQUJDRFNSMSkgJiB+bWFzaywKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBpbyArIFBJT19BQkNEU1IxKTsKPj4gKyAgICAgX19yYXdfd3JpdGVs KF9fcmF3X3JlYWRsKHBpbyArIFBJT19BQkNEU1IyKSAmIH5tYXNrLAo+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlvICsgUElPX0FCQ0RTUjIpOwo+PiAr fQo+PiArCj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgYXQ5MV9tdXhfcGlvM19zZXRfQl9wZXJpcGgo dm9pZCBfX2lvbWVtICpwaW8sIHVuc2lnbmVkIG1hc2spCj4+ICt7Cj4+ICsgICAgIF9fcmF3X3dy aXRlbChfX3Jhd19yZWFkbChwaW8gKyBQSU9fQUJDRFNSMSkgfCBtYXNrLAo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlvICsgUElPX0FCQ0RTUjEpOwo+ PiArICAgICBfX3Jhd193cml0ZWwoX19yYXdfcmVhZGwocGlvICsgUElPX0FCQ0RTUjIpICYgfm1h c2ssCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW8g KyBQSU9fQUJDRFNSMik7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBhdDkxX211 eF9waW8zX3NldF9DX3BlcmlwaCh2b2lkIF9faW9tZW0gKnBpbywgdW5zaWduZWQgbWFzaykKPj4g K3sKPj4gKyAgICAgX19yYXdfd3JpdGVsKF9fcmF3X3JlYWRsKHBpbyArIFBJT19BQkNEU1IxKSAm IH5tYXNrLCBwaW8gKyBQSU9fQUJDRFNSMSk7Cj4+ICsgICAgIF9fcmF3X3dyaXRlbChfX3Jhd19y ZWFkbChwaW8gKyBQSU9fQUJDRFNSMikgfCBtYXNrLCBwaW8gKyBQSU9fQUJDRFNSMik7Cj4+ICt9 Cj4+ICsKPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBhdDkxX211eF9waW8zX3NldF9EX3BlcmlwaCh2 b2lkIF9faW9tZW0gKnBpbywgdW5zaWduZWQgbWFzaykKPj4gK3sKPj4gKyAgICAgX19yYXdfd3Jp dGVsKF9fcmF3X3JlYWRsKHBpbyArIFBJT19BQkNEU1IxKSB8IG1hc2ssIHBpbyArIFBJT19BQkNE U1IxKTsKPj4gKyAgICAgX19yYXdfd3JpdGVsKF9fcmF3X3JlYWRsKHBpbyArIFBJT19BQkNEU1Iy KSB8IG1hc2ssIHBpbyArIFBJT19BQkNEU1IyKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGlubGlu ZSB2b2lkIGF0OTFfbXV4X3NldF9kZWdsaXRjaCh2b2lkIF9faW9tZW0gKnBpbywgdW5zaWduZWQg bWFzaywgYm9vbCBpc19vbikKPj4gK3sKPj4gKyAgICAgX19yYXdfd3JpdGVsKG1hc2ssIHBpbyAr IChpc19vbiA/IFBJT19JRkVSIDogUElPX0lGRFIpKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGlu bGluZSB2b2lkIGF0OTFfbXV4X3BpbzNfc2V0X2RlZ2xpdGNoKHZvaWQgX19pb21lbSAqcGlvLCB1 bnNpZ25lZCBtYXNrLCBib29sIGlzX29uKQo+PiArewo+PiArICAgICBpZiAoaXNfb24pCj4+ICsg ICAgICAgICAgICAgX19yYXdfd3JpdGVsKG1hc2ssIHBpbyArIFBJT19JRlNDRFIpOwo+PiArICAg ICBhdDkxX211eF9zZXRfZGVnbGl0Y2gocGlvLCBtYXNrLCBpc19vbik7Cj4+ICt9Cj4+ICsKPj4g K3N0YXRpYyBpbmxpbmUgdm9pZCBhdDkxX211eF9waW8zX3NldF9kZWJvdW5jZSh2b2lkIF9faW9t ZW0gKnBpbywgdW5zaWduZWQgbWFzaywKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ym9vbCBpc19vbiwgdTMyIGRpdikKPj4gK3sKPj4gKyAgICAgaWYgKGlzX29uKSB7Cj4+ICsgICAg ICAgICAgICAgX19yYXdfd3JpdGVsKG1hc2ssIHBpbyArIFBJT19JRlNDRVIpOwo+PiArICAgICAg ICAgICAgIF9fcmF3X3dyaXRlbChkaXYgJiBQSU9fU0NEUl9ESVYsIHBpbyArIFBJT19TQ0RSKTsK Pj4gKyAgICAgICAgICAgICBfX3Jhd193cml0ZWwobWFzaywgcGlvICsgUElPX0lGRVIpOwo+PiAr ICAgICB9IGVsc2Ugewo+PiArICAgICAgICAgICAgIF9fcmF3X3dyaXRlbChtYXNrLCBwaW8gKyBQ SU9fSUZEUik7Cj4+ICsgICAgIH0KPj4gK30KPj4gKwo+PiArc3RhdGljIGlubGluZSB2b2lkIGF0 OTFfbXV4X3BpbzNfc2V0X3B1bGxkb3duKHZvaWQgX19pb21lbSAqcGlvLCB1bnNpZ25lZCBtYXNr LCBib29sIGlzX29uKQo+PiArewo+PiArICAgICBfX3Jhd193cml0ZWwobWFzaywgcGlvICsgKGlz X29uID8gUElPX1BQREVSIDogUElPX1BQRERSKSk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbmxp bmUgdm9pZCBhdDkxX211eF9waW8zX2Rpc2FibGVfc2NobWl0dF90cmlnKHZvaWQgX19pb21lbSAq cGlvLCB1bnNpZ25lZCBtYXNrKQo+PiArewo+PiArICAgICBfX3Jhd193cml0ZWwoX19yYXdfcmVh ZGwocGlvICsgUElPX1NDSE1JVFQpIHwgbWFzaywgcGlvICsgUElPX1NDSE1JVFQpOwo+PiArfQo+ PiArCj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgYXQ5MV9tdXhfZ3Bpb19kaXNhYmxlKHZvaWQgX19p b21lbSAqcGlvLCB1bnNpZ25lZCBtYXNrKQo+PiArewo+PiArICAgICBfX3Jhd193cml0ZWwobWFz aywgcGlvICsgUElPX1BEUik7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBhdDkx X211eF9ncGlvX2VuYWJsZSh2b2lkIF9faW9tZW0gKnBpbywgdW5zaWduZWQgbWFzaykKPj4gK3sK Pj4gKyAgICAgX19yYXdfd3JpdGVsKG1hc2ssIHBpbyArIFBJT19QRVIpOwo+PiArfQo+PiArCj4+ ICtzdGF0aWMgaW5saW5lIHZvaWQgYXQ5MV9tdXhfZ3Bpb19pbnB1dCh2b2lkIF9faW9tZW0gKnBp bywgdW5zaWduZWQgbWFzaywgYm9vbCBpbnB1dCkKPj4gK3sKPj4gKyAgICAgX19yYXdfd3JpdGVs KG1hc2ssIHBpbyArIChpbnB1dCA/IFBJT19PRFIgOiBQSU9fT0VSKSk7Cj4+ICt9Cj4+ICsKPj4g K3N0YXRpYyBpbmxpbmUgdm9pZCBhdDkxX211eF9ncGlvX3NldCh2b2lkIF9faW9tZW0gKnBpbywg dW5zaWduZWQgbWFzaywKPj4gK2ludCB2YWx1ZSkKPj4gK3sKPj4gKyAgICAgX19yYXdfd3JpdGVs KG1hc2ssIHBpbyArICh2YWx1ZSA/IFBJT19TT0RSIDogUElPX0NPRFIpKTsKPj4gK30KPj4gKwo+ PiArc3RhdGljIGlubGluZSBpbnQgYXQ5MV9tdXhfZ3Bpb19nZXQodm9pZCBfX2lvbWVtICpwaW8s IHVuc2lnbmVkIG1hc2spCj4+ICt7Cj4+ICsgICAgICAgdTMyIHBkc3I7Cj4+ICsKPj4gKyAgICAg ICBwZHNyID0gX19yYXdfcmVhZGwocGlvICsgUElPX1BEU1IpOwo+PiArICAgICAgIHJldHVybiAo cGRzciAmIG1hc2spICE9IDA7Cj4+ICt9Cj4+ICsKPj4gKyNlbmRpZiAvKiBfX0FUOTFfR1BJT19I X18gKi8KPj4gLS0KPj4gMS43LjkuNQo+Pgo+Pgo+PiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwo+PiBiYXJlYm94IG1haWxpbmcgbGlzdAo+PiBiYXJlYm94 QGxpc3RzLmluZnJhZGVhZC5vcmcKPj4gaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1h bi9saXN0aW5mby9iYXJlYm94Cj4KPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCj4gYmFyZWJveCBtYWlsaW5nIGxpc3QKPiBiYXJlYm94QGxpc3RzLmlu ZnJhZGVhZC5vcmcKPiBodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2JhcmVib3gKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmJhcmVib3ggbWFpbGluZyBsaXN0CmJhcmVib3hAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8v bGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2JhcmVib3gK