From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-qy0-f170.google.com ([209.85.216.170]) by canuck.infradead.org with esmtps (Exim 4.72 #1 (Red Hat Linux)) id 1PUwrr-00087I-Kv for barebox@lists.infradead.org; Tue, 21 Dec 2010 07:42:53 +0000 Received: by qyk10 with SMTP id 10so5247631qyk.15 for ; Mon, 20 Dec 2010 23:42:41 -0800 (PST) MIME-Version: 1.0 In-Reply-To: References: Date: Tue, 21 Dec 2010 08:42:41 +0100 Message-ID: From: Belisko Marek 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-bounces@lists.infradead.org Errors-To: barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org Subject: Re: [PATCH 10] ARM: Add support for IXP4xx CPU and for Goramo Multilink router platform. To: Krzysztof Halasa Cc: barebox@lists.infradead.org SGksCgpPbiBUdWUsIERlYyAyMSwgMjAxMCBhdCAxMjowNiBBTSwgS3J6eXN6dG9mIEhhbGFzYSA8 a2hjQHBtLndhdy5wbD4gd3JvdGU6Cj4gU2lnbmVkLW9mZi1ieTogS3J6eXN6dG9mIEhhxYJhc2Eg PGtoY0BwbS53YXcucGw+Cj4KPiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vS2NvbmZpZyBiL2FyY2gv YXJtL0tjb25maWcKPiBpbmRleCA4Y2I4NmNiLi41NmI1YTBkIDEwMDY0NAo+IC0tLSBhL2FyY2gv YXJtL0tjb25maWcKPiArKysgYi9hcmNoL2FybS9LY29uZmlnCj4gQEAgLTM5LDYgKzM5LDEzIEBA IGNvbmZpZyBBUkNIX0lNWAo+IMKgIMKgIMKgIMKgYm9vbCAiRnJlZXNjYWxlIGlNWC1iYXNlZCIK PiDCoCDCoCDCoCDCoHNlbGVjdCBHRU5FUklDX0dQSU8KPgo+ICtjb25maWcgQVJDSF9JWFA0WFgK PiArIMKgIMKgIMKgIGJvb2wgIkludGVsIElYUDR4eC1iYXNlZCIKPiArIMKgIMKgIMKgIHNlbGVj dCBDUFVfMzJ2NQo+ICsgwqAgwqAgwqAgc2VsZWN0IEFSQ0hfU1VQUE9SVFNfQklHX0VORElBTgo+ ICsgwqAgwqAgwqAgc2VsZWN0IENQVV9CSUdfRU5ESUFOCj4gKyDCoCDCoCDCoCBzZWxlY3QgQVJD SF9IQVNfTE9XTEVWRUxfSU5JVAo+ICsKU2hvdWxkIGdvIHRvIGRpZmZlcmVudCBLY29uZmlnLiBU aGlzIGlzIEFSTSByZWxhdGVkIGFuZCB5b3UgaGF2ZQppbnRlbCBjcHUgd2hpY2ggaXMgcG9zc2li bHkgeDg2LiAgQWxzbyBpbiBvdGhlciBwYXRjaGVzIHlvdSBzdGljayB0byBBUk0KYnV0IHlvdXIg Q1BVIGRvZXNuJ3QgaGF2ZSBBUk0gY29yZS4KCj4gwqBjb25maWcgQVJDSF9TVE0KPiDCoCDCoCDC oCDCoGJvb2wgIlNpZ21hVGVsL0ZTTCBpTVgtYmFzZWQiCj4gwqAgwqAgwqAgwqBzZWxlY3QgR0VO RVJJQ19HUElPCj4gQEAgLTY3LDYgKzc0LDcgQEAgc291cmNlIGFyY2gvYXJtL2NwdS9LY29uZmln Cj4gwqBzb3VyY2UgYXJjaC9hcm0vbWFjaC1hdDkxL0tjb25maWcKPiDCoHNvdXJjZSBhcmNoL2Fy bS9tYWNoLWVwOTN4eC9LY29uZmlnCj4gwqBzb3VyY2UgYXJjaC9hcm0vbWFjaC1pbXgvS2NvbmZp Zwo+ICtzb3VyY2UgYXJjaC9hcm0vbWFjaC1peHA0eHgvS2NvbmZpZwo+IMKgc291cmNlIGFyY2gv YXJtL21hY2gtc3RtL0tjb25maWcKPiDCoHNvdXJjZSBhcmNoL2FybS9tYWNoLW5ldHgvS2NvbmZp Zwo+IMKgc291cmNlIGFyY2gvYXJtL21hY2gtbm9tYWRpay9LY29uZmlnCj4gZGlmZiAtLWdpdCBh L2FyY2gvYXJtL01ha2VmaWxlIGIvYXJjaC9hcm0vTWFrZWZpbGUKPiBpbmRleCA5NzI5YzIzLi4y ZTlmOTlkIDEwMDY0NAo+IC0tLSBhL2FyY2gvYXJtL01ha2VmaWxlCj4gKysrIGIvYXJjaC9hcm0v TWFrZWZpbGUKPiBAQCAtNDEsNiArNDEsNyBAQCBDUFBGTEFHUyArPSAkKENGTEFHU19BQkkpICQo YXJjaC15KSAkKHR1bmUteSkKPiDCoG1hY2hpbmUtJChDT05GSUdfQVJDSF9BVDkxKSDCoCDCoCDC oCDCoCDCoCDCoDo9IGF0OTEKPiDCoG1hY2hpbmUtJChDT05GSUdfQVJDSF9FUDkzWFgpIMKgIMKg IMKgIMKgIMKgOj0gZXA5M3h4Cj4gwqBtYWNoaW5lLSQoQ09ORklHX0FSQ0hfSU1YKSDCoCDCoCDC oCDCoCDCoCDCoCA6PSBpbXgKPiArbWFjaGluZS0kKENPTkZJR19BUkNIX0lYUDRYWCkgwqAgwqAg wqAgwqAgwqA6PSBpeHA0eHgKPiDCoG1hY2hpbmUtJChDT05GSUdfQVJDSF9TVE0pIMKgIMKgIMKg IMKgIMKgIMKgIDo9IHN0bQo+IMKgbWFjaGluZS0kKENPTkZJR19BUkNIX05PTUFESUspIMKgIMKg IMKgIMKgIDo9IG5vbWFkaWsKPiDCoG1hY2hpbmUtJChDT05GSUdfQVJDSF9ORVRYKSDCoCDCoCDC oCDCoCDCoCDCoDo9IG5ldHgKPiBAQCAtNzMsNiArNzQsNyBAQCBib2FyZC0kKENPTkZJR19NQUNI X0ZSRUVTQ0FMRV9NWDM1XzNTVEFDSykgwqAgwqA6PSBmcmVlc2NhbGUtbXgzNS0zLXN0YWNrCj4g wqBib2FyZC0kKENPTkZJR19NQUNIX0lNWDIxQURTKSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oDo9IGlteDIxYWRzCj4gwqBib2FyZC0kKENPTkZJR19NQUNIX0lNWDI3QURTKSDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoDo9IGlteDI3YWRzCj4gwqBib2FyZC0kKENPTkZJR19NQUNIX01NQ0NQ VSkgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqA6PSBtbWNjcHUKPiArYm9hcmQtJChDT05G SUdfTUFDSF9NVUxUSUxJTkspIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDo9IG11bHRpbGluawo+ IMKgYm9hcmQtJChDT05GSUdfTUFDSF9NWDFBRFMpIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgOj0gbXgxYWRzCj4gwqBib2FyZC0kKENPTkZJR19NQUNIX05PTUFESUtfODgxNU5ISykgwqAg wqAgwqAgwqAgwqAgOj0gbmhrODgxNQo+IMKgYm9hcmQtJChDT05GSUdfTUFDSF9OWERCNTAwKSDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCA6PSBuZXR4Cj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJt L2JvYXJkcy9tdWx0aWxpbmsvTWFrZWZpbGUgYi9hcmNoL2FybS9ib2FyZHMvbXVsdGlsaW5rL01h a2VmaWxlCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5kNWE4YmJjCj4g LS0tIC9kZXYvbnVsbAo+ICsrKyBiL2FyY2gvYXJtL2JvYXJkcy9tdWx0aWxpbmsvTWFrZWZpbGUK PiBAQCAtMCwwICsxIEBACj4gK29iai15ICs9IGxvd2xldmVsX2luaXQubyBtdWx0aWxpbmsubwo+ IGRpZmYgLS1naXQgYS9hcmNoL2FybS9ib2FyZHMvbXVsdGlsaW5rL2NvbmZpZy5oIGIvYXJjaC9h cm0vYm9hcmRzL211bHRpbGluay9jb25maWcuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k ZXggMDAwMDAwMC4uZTY5ZGUyOQo+IGRpZmYgLS1naXQgYS9hcmNoL2FybS9ib2FyZHMvbXVsdGls aW5rL2xvd2xldmVsX2luaXQuUyBiL2FyY2gvYXJtL2JvYXJkcy9tdWx0aWxpbmsvbG93bGV2ZWxf aW5pdC5TCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi45NzBlZjcyCj4g LS0tIC9kZXYvbnVsbAo+ICsrKyBiL2FyY2gvYXJtL2JvYXJkcy9tdWx0aWxpbmsvbG93bGV2ZWxf aW5pdC5TCj4gQEAgLTAsMCArMSw2NCBAQAo+ICsjaW5jbHVkZSA8bWFjaC9peHA0eHgtcmVncy5o Pgo+ICsKPiArIMKgIMKgIMKgIC5zZWN0aW9uICIudGV4dF9iYXJlX2luaXQiLCAiYXgiCj4gKyDC oCDCoCDCoCAuYmFsaWduIDB4NDAKPiArIMKgIMKgIMKgIC5zcGFjZSAweDQwIC8qIGNvbmZpZ3Vy YXRpb24gYmxvY2sgYXQgMHg0MCAqLwo+ICsKPiArIMKgIMKgIMKgIC5tYWNybyBERUxBWV9GT1Ig Y3ljbGVzLCByZWcwCj4gKyDCoCDCoCDCoCBsZHIgXHJlZzAsID1cY3ljbGVzCj4gKyDCoCDCoCDC oCBzdWJzIFxyZWcwLCBccmVnMCwgIzEKPiArIMKgIMKgIMKgIHN1Ym5lIHBjLCBwYywgIzB4Ywo+ ICsgwqAgwqAgwqAgLmVuZG0KPiArCj4gKyNkZWZpbmUgQ0ZHX1NEUkFNX1NJWkUgwqAgwqAweDUw IC8qIHUzMiAqLwo+ICsjZGVmaW5lIENGR19TRFJBTV9DT05GIMKgIMKgMHg1NCAvKiB1MzIgKi8K PiArI2RlZmluZSBDRkdfU0RSQU1fTU9ERSDCoCDCoDB4NTggLyogdTMyICovCj4gKyNkZWZpbmUg Q0ZHX1NEUkFNX1JFRlJFU0ggMHg1QyAvKiB1MzIgKi8KPiArCj4gKy5nbG9ibCBib2FyZF9pbml0 X2xvd2xldmVsCj4gK2JvYXJkX2luaXRfbG93bGV2ZWw6Cj4gKyDCoCDCoCDCoCBtb3YgcjgsICNJ WFA0WFhfRVhQX0JBU0UoMCkKPiArIMKgIMKgIMKgIGxkciByMSwgW3I4LCAjQ0ZHX1NEUkFNX0NP TkZdCj4gKyDCoCDCoCDCoCBsZHIgcjIsID1JWFA0WFhfU0RSQU1fQ09ORklHCj4gKyDCoCDCoCDC oCBzdHIgcjEsIFtyMl0KPiArCj4gKyDCoCDCoCDCoCAvKiBkaXNhYmxlIHJlZnJlc2ggY3ljbGVz ICovCj4gKyDCoCDCoCDCoCBtb3YgcjEsICMwCj4gKyDCoCDCoCDCoCBhZGQgcjIsIHIyLCAjNCAv KiByMiA9IElYUDRYWF9TRFJBTV9SRUZSRVNIICovCj4gKyDCoCDCoCDCoCBzdHIgcjEsIFtyMl0K PiArCj4gKyDCoCDCoCDCoCAvKiBzZW5kIE5PUCBjb21tYW5kICovCj4gKyDCoCDCoCDCoCBtb3Yg cjEsICMzCj4gKyDCoCDCoCDCoCBhZGQgcjMsIHIyLCAjNCAvKiByMyA9IElYUDRYWF9TRFJBTV9J UiAqLwo+ICsgwqAgwqAgwqAgc3RyIHIxLCBbcjNdCj4gKyDCoCDCoCDCoCBERUxBWV9GT1IgMHg0 MDAwLCByMAo+ICsKPiArIMKgIMKgIMKgIC8qIHNldCBTRFJBTSBpbnRlcm5hbCByZWZyZXNoICov Cj4gKyDCoCDCoCDCoCBsZHIgcjEsIFtyOCwgI0NGR19TRFJBTV9SRUZSRVNIXQo+ICsgwqAgwqAg wqAgc3RyIHIxLCBbcjJdCj4gKyDCoCDCoCDCoCBERUxBWV9GT1IgMHg0MDAwLCByMAo+ICsKPiAr IMKgIMKgIMKgIC8qIHNlbmQgcHJlY2hhcmdlLWFsbCBjb21tYW5kIHRvIGNsb3NlIGFsbCBvcGVu IGJhbmtzICovCj4gKyDCoCDCoCDCoCBtb3YgcjEsICMyCj4gKyDCoCDCoCDCoCBzdHIgcjEsIFty M10KPiArIMKgIMKgIMKgIERFTEFZX0ZPUiAweDQwMDAsIHIwCj4gKwo+ICsgwqAgwqAgwqAgLyog cHJvdmlkZSA4IGF1dG8tcmVmcmVzaCBjeWNsZXMgKi8KPiArIMKgIMKgIMKgIG1vdiByMSwgIzQK PiArIMKgIMKgIMKgIG1vdiByNCwgIzgKPiArMTogwqAgwqAgc3RyIHIxLCBbcjNdCj4gKyDCoCDC oCDCoCBERUxBWV9GT1IgMHgxMDAsIHIwCj4gKyDCoCDCoCDCoCBzdWJzIHI0LCByNCwgIzEKPiAr IMKgIMKgIMKgIGJuZSAxYgo+ICsKPiArIMKgIMKgIMKgIC8qIHNldCBtb2RlIHJlZ2lzdGVyIGlu IFNEUkFNICovCj4gKyDCoCDCoCDCoCBsZHIgcjEsIFtyOCwgI0NGR19TRFJBTV9NT0RFXQo+ICsg wqAgwqAgwqAgc3RyIHIxLCBbcjNdCj4gKyDCoCDCoCDCoCBERUxBWV9GT1IgMHg0MDAwLCByMAo+ ICsKPiArIMKgIMKgIMKgIC8qIHNlbmQgbm9ybWFsIG9wZXJhdGlvbiBjb21tYW5kICovCj4gKyDC oCDCoCDCoCBtb3YgcjEsICM2Cj4gKyDCoCDCoCDCoCBzdHIgcjEsIFtyM10KPiArIMKgIMKgIMKg IERFTEFZX0ZPUiAweDQwMDAsIHIwCj4gKwo+ICsgwqAgwqAgwqAgbW92IHBjLCBscgo+IGRpZmYg LS1naXQgYS9hcmNoL2FybS9ib2FyZHMvbXVsdGlsaW5rL211bHRpbGluay5jIGIvYXJjaC9hcm0v Ym9hcmRzL211bHRpbGluay9tdWx0aWxpbmsuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k ZXggMDAwMDAwMC4uZjJmYjhmNAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9hcmNoL2FybS9ib2Fy ZHMvbXVsdGlsaW5rL211bHRpbGluay5jCj4gQEAgLTAsMCArMSwxNDQgQEAKPiArLy8jZGVmaW5l IERFQlVHCj4gKyNpbmNsdWRlIDxjb21tb24uaD4KPiArI2luY2x1ZGUgPGVycm5vLmg+Cj4gKyNp bmNsdWRlIDxpbml0Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgo+ICsjaW5jbHVkZSA8 YXNtL2FybWxpbnV4Lmg+Cj4gKyNpbmNsdWRlIDxhc20vaW8uaD4KPiArI2luY2x1ZGUgPGdlbmVy YXRlZC9tYWNoLXR5cGVzLmg+Cj4gKyNpbmNsdWRlIDxtYWNoL2l4cDR4eC1yZWdzLmg+Cj4gKyNp bmNsdWRlIDxtYWNoL3BsYXRmb3JtLmg+Cj4gKwo+ICsvKiBvZmZzZXRzIGZyb20gc3RhcnQgb2Yg Zmxhc2ggUk9NID0gMHg1MDAwMDAwMCAqLwo+ICsjZGVmaW5lIENGR19FVEgwX0FERFJFU1MgwqAg wqAgMHg0MCAvKiA2IGJ5dGVzICovCj4gKyNkZWZpbmUgQ0ZHX0VUSDFfQUREUkVTUyDCoCDCoCAw eDQ2IC8qIDYgYnl0ZXMgKi8KPiArI2RlZmluZSBDRkdfUkVWIMKgIMKgIMKgIMKgIMKgIMKgIMKg MHg0QyAvKiB1MzIgKi8KPiArI2RlZmluZSBDRkdfU0RSQU1fU0laRSDCoCDCoCDCoCAweDUwIC8q IHUzMiAqLwo+ICsjZGVmaW5lIENGR19TRFJBTV9DT05GIMKgIMKgIMKgIDB4NTQgLyogdTMyICov Cj4gKyNkZWZpbmUgQ0ZHX1NEUkFNX01PREUgwqAgwqAgwqAgMHg1OCAvKiB1MzIgKi8KPiArI2Rl ZmluZSBDRkdfU0RSQU1fUkVGUkVTSCDCoCDCoDB4NUMgLyogdTMyICovCj4gKwo+ICsjZGVmaW5l IENGR19IV19CSVRTIMKgIMKgIMKgIMKgIMKgMHg2MCAvKiB1MzIgKi8KPiArI2RlZmluZSDCoENG R19IV19VU0JfUE9SVFMgwqAgwqAweDAwMDAwMDA3IC8qIDAgPSBubyBORUMgY2hpcCwgMS01ID0g cG9ydHMgIyAqLwo+ICsjZGVmaW5lIMKgQ0ZHX0hXX0hBU19QQ0lfU0xPVCAweDAwMDAwMDA4Cj4g KyNkZWZpbmUgwqBDRkdfSFdfSEFTX0VUSDAgwqAgwqAgMHgwMDAwMDAxMAo+ICsjZGVmaW5lIMKg Q0ZHX0hXX0hBU19FVEgxIMKgIMKgIDB4MDAwMDAwMjAKPiArI2RlZmluZSDCoENGR19IV19IQVNf SFNTMCDCoCDCoCAweDAwMDAwMDQwCj4gKyNkZWZpbmUgwqBDRkdfSFdfSEFTX0hTUzEgwqAgwqAg MHgwMDAwMDA4MAo+ICsjZGVmaW5lIMKgQ0ZHX0hXX0hBU19VQVJUMCDCoCDCoDB4MDAwMDAxMDAK PiArI2RlZmluZSDCoENGR19IV19IQVNfVUFSVDEgwqAgwqAweDAwMDAwMjAwCj4gKyNkZWZpbmUg wqBDRkdfSFdfSEFTX0VFUFJPTSDCoCAweDAwMDAwNDAwCj4gKwo+ICsjZGVmaW5lIEVUSF9BTEVO IMKgIMKgIMKgIMKgIMKgIMKgIDYKPiArCj4gKyNkZWZpbmUgQkFSRUJPWF9TVEFSVCDCoCDCoCDC oCDCoDB4MDAwMDAKPiArI2RlZmluZSBCQVJFQk9YX0xFTkdUSCDCoCDCoCDCoCAweDM0MDAwCj4g KyNkZWZpbmUgTlBFX0FfU1RBUlQgwqAgwqAgwqAgwqAgwqAoQkFSRUJPWF9TVEFSVCArIEJBUkVC T1hfTEVOR1RIKQo+ICsjZGVmaW5lIE5QRV9BX0xFTkdUSCDCoCDCoCDCoCDCoCAweDA1MDAwCj4g KyNkZWZpbmUgTlBFX0JfU1RBUlQgwqAgwqAgwqAgwqAgwqAoTlBFX0FfU1RBUlQgKyBOUEVfQV9M RU5HVEgpCj4gKyNkZWZpbmUgTlBFX0JfTEVOR1RIIMKgIMKgIMKgIMKgIDB4MDMwMDAKPiArI2Rl ZmluZSBOUEVfQ19TVEFSVCDCoCDCoCDCoCDCoCDCoChOUEVfQl9TVEFSVCArIE5QRV9CX0xFTkdU SCkKPiArI2RlZmluZSBOUEVfQ19MRU5HVEggwqAgwqAgwqAgwqAgMHgwNDAwMAo+ICsjZGVmaW5l IE5QRV9FTlYwX1NUQVJUIMKgIMKgIMKgIChOUEVfQ19TVEFSVCArIE5QRV9DX0xFTkdUSCkKPiAr I2RlZmluZSBOUEVfRU5WMF9MRU5HVEggwqAgwqAgwqAweDIwMDAwCj4gKwo+ICtzdGF0aWMgc3Ry dWN0IGRldmljZV9kIGNmaV9kZXYgPSB7Cj4gKyDCoCDCoCDCoCAubmFtZSDCoCDCoCA9ICJjZmlf Zmxhc2giLAo+ICsgwqAgwqAgwqAgLm1hcF9iYXNlID0gSVhQNFhYX0VYUF9CQVNFKDApLAo+ICsg wqAgwqAgwqAgLnNpemUgwqAgwqAgPSAxNiAqIDEwMjQgKiAxMDI0LAo+ICt9Owo+ICsKPiArc3Rh dGljIHN0cnVjdCBldGhfcGxhdF9pbmZvIGV0aF9waW5mb1syXSA9IHsKPiArIMKgIMKgIMKgIHsK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC5yZWdzIMKgIMKgID0gSVhQNFhYX0V0aEJfQkFTRSwK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC5ucGUgwqAgwqAgwqA9IDEsCj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCAucGh5IMKgIMKgIMKgPSAwLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgLnJ4 cSDCoCDCoCDCoD0gMjAsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCAudHhyZWFkeXEgPSAyOSwK PiArIMKgIMKgIMKgIH0sIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC5yZWdzIMKgIMKgID0g SVhQNFhYX0V0aENfQkFTRSwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC5ucGUgwqAgwqAgwqA9 IDIsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCAucGh5IMKgIMKgIMKgPSAxLAo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgLnJ4cSDCoCDCoCDCoD0gMjEsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC oCAudHhyZWFkeXEgPSAzMCwKPiArIMKgIMKgIMKgIH0KPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1 Y3QgZGV2aWNlX2QgZXRoX2RldlsyXSA9IHsKPiArIMKgIMKgIMKgIHsKPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIC5uYW1lIMKgIMKgIMKgIMKgIMKgID0gIml4cDR4eF9ldGgiLAo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgLnBsYXRmb3JtX2RhdGEgwqA9ICZldGhfcGluZm9bMF0sCj4gKyDCoCDC oCDCoCB9LCB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCAuaWQgwqAgwqAgwqAgwqAgwqAgwqAg PSAxLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgLm5hbWUgwqAgwqAgwqAgwqAgwqAgPSAiaXhw NHh4X2V0aCIsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCAucGxhdGZvcm1fZGF0YSDCoD0gJmV0 aF9waW5mb1sxXSwKPiArIMKgIMKgIMKgIH0KPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgbWVt b3J5X3BsYXRmb3JtX2RhdGEgcmFtX3BkYXRhID0gewo+ICsgwqAgwqAgwqAgLm5hbWUgwqAgwqAg wqAgwqAgwqAgPSAicmFtMCIsCj4gKyDCoCDCoCDCoCAuZmxhZ3MgwqAgwqAgwqAgwqAgwqA9IERF VkZTX1JEV1IsCj4gK307Cj4gKwo+ICtzdHJ1Y3QgZGV2aWNlX2Qgc2RyYW1fZGV2ID0gewo+ICsg wqAgwqAgwqAgLmlkIMKgIMKgIMKgIMKgIMKgIMKgID0gLTEsCj4gKyDCoCDCoCDCoCAubmFtZSDC oCDCoCDCoCDCoCDCoCA9ICJtZW0iLAo+ICsgwqAgwqAgwqAgLm1hcF9iYXNlIMKgIMKgIMKgID0g MHgwMDAwMDAwMCwKPiArIMKgIMKgIMKgIC5zaXplIMKgIMKgIMKgIMKgIMKgID0gMzIgKiAxMDI0 ICogMTAyNCwKPiArIMKgIMKgIMKgIC5wbGF0Zm9ybV9kYXRhIMKgPSAmcmFtX3BkYXRhLAo+ICt9 Owo+ICsKPiArc3RhdGljIGlubGluZSB1OCBfX2luaXQgZmxhc2hfcmVhZGIodTMyIGFkZHIpCj4g K3sKPiArIMKgIMKgIMKgIHJldHVybiBfX3Jhd19yZWFkYihJWFA0WFhfRVhQX0JBU0UoMCkgKyBh ZGRyKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBfX2luaXQgZ21sX2RldmljZXNfaW5pdCh2b2lk KQo+ICt7Cj4gKyDCoCDCoCDCoCB1MzIgaHdfYml0czsKPiArIMKgIMKgIMKgIGludCBpOwo+ICsK PiArIMKgIMKgIMKgIElYUDRYWF9FWFBfQ1MwID0gSVhQNFhYX0VYUF9FTiB8IElYUDRYWF9FWFBf SU5URUwgfAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgSVhQNFhYX0VYUF9CSVRTKDI0KSB8IElY UDRYWF9FWFBfV1JfRU4gfCBJWFA0WFhfRVhQX0JZVEVfUkQxNjsKPiArIMKgIMKgIMKgIGkgPSBy ZWdpc3Rlcl9kZXZpY2UoJmNmaV9kZXYpOwo+ICsgwqAgwqAgwqAgaWYgKGkpCj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCBnb3RvIG91dDsKPiArCj4gKyDCoCDCoCDCoCBkZXZmc19hZGRfcGFydGl0 aW9uKCJub3IwIiwgQkFSRUJPWF9TVEFSVCwgQkFSRUJPWF9MRU5HVEgsCj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBERVZGU19QQVJUSVRJT05fRklYRUQgfCBERVZG U19QQVJUSVRJT05fUkVBRE9OTFksICJiYXJlYm94Iik7Cj4gKyDCoCDCoCDCoCBkZXZmc19hZGRf cGFydGl0aW9uKCJub3IwIiwgTlBFX0FfU1RBUlQsIE5QRV9BX0xFTkdUSCwKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIERFVkZTX1BBUlRJVElPTl9GSVhFRCB8IERF VkZTX1BBUlRJVElPTl9SRUFET05MWSwgIk5QRS1BIik7Cj4gKyDCoCDCoCDCoCBkZXZmc19hZGRf cGFydGl0aW9uKCJub3IwIiwgTlBFX0JfU1RBUlQsIE5QRV9CX0xFTkdUSCwKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIERFVkZTX1BBUlRJVElPTl9GSVhFRCB8IERF VkZTX1BBUlRJVElPTl9SRUFET05MWSwgIk5QRS1CIik7Cj4gKyDCoCDCoCDCoCBkZXZmc19hZGRf cGFydGl0aW9uKCJub3IwIiwgTlBFX0NfU1RBUlQsIE5QRV9DX0xFTkdUSCwKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIERFVkZTX1BBUlRJVElPTl9GSVhFRCB8IERF VkZTX1BBUlRJVElPTl9SRUFET05MWSwgIk5QRS1DIik7Cj4gKyDCoCDCoCDCoCBkZXZmc19hZGRf cGFydGl0aW9uKCJub3IwIiwgTlBFX0VOVjBfU1RBUlQsIE5QRV9FTlYwX0xFTkdUSCwKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIERFVkZTX1BBUlRJVElPTl9GSVhF RCwgImVudjAiKTsKPiArCj4gKyDCoCDCoCDCoCBod19iaXRzID0gX19yYXdfcmVhZGwoSVhQNFhY X0VYUF9CQVNFKDApICsgQ0ZHX0hXX0JJVFMpOwo+ICsKPiArIMKgIMKgIMKgIGlmIChod19iaXRz ICYgQ0ZHX0hXX0hBU19FVEgwKSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmb3IgKGkgPSAw OyBpIDwgRVRIX0FMRU47IGkrKykKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IGV0aF9waW5mb1swXS5od2FkZHJbaV0gPSBmbGFzaF9yZWFkYihDRkdfRVRIMF9BRERSRVNTICsg aSk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZWdpc3Rlcl9kZXZpY2UoJmV0aF9kZXZbMF0p Owo+ICsgwqAgwqAgwqAgfQo+ICsKPiArIMKgIMKgIMKgIGlmIChod19iaXRzICYgQ0ZHX0hXX0hB U19FVEgxKSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmb3IgKGkgPSAwOyBpIDwgRVRIX0FM RU47IGkrKykKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV0aF9waW5mb1sx XS5od2FkZHJbaV0gPSBmbGFzaF9yZWFkYihDRkdfRVRIMV9BRERSRVNTICsgaSk7Cj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCByZWdpc3Rlcl9kZXZpY2UoJmV0aF9kZXZbMV0pOwo+ICsgwqAgwqAg wqAgfQo+ICsKPiArIMKgIMKgIMKgIHNkcmFtX2Rldi5zaXplID0gX19yYXdfcmVhZGwoSVhQNFhY X0VYUF9CQVNFKDApICsgQ0ZHX1NEUkFNX1NJWkUpOwo+ICsgwqAgwqAgwqAgaSA9IHJlZ2lzdGVy X2RldmljZSgmc2RyYW1fZGV2KTsKPiArIMKgIMKgIMKgIGlmIChpKQo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgZ290byBvdXQ7Cj4gKwo+ICsgwqAgwqAgwqAgYXJtbGludXhfYWRkX2RyYW0oJnNk cmFtX2Rldik7Cj4gKyDCoCDCoCDCoCBhcm1saW51eF9zZXRfYm9vdHBhcmFtcygodm9pZCAqKSgw eDAwMDAwMTAwKSk7Cj4gKyDCoCDCoCDCoCBhcm1saW51eF9zZXRfYXJjaGl0ZWN0dXJlKE1BQ0hf VFlQRV9HT1JBTU9fTUxSKTsKPiArCj4gK291dDoKPiArIMKgIMKgIMKgIHJldHVybiBpOwo+ICt9 Cj4gK2RldmljZV9pbml0Y2FsbChnbWxfZGV2aWNlc19pbml0KTsKPiBkaWZmIC0tZ2l0IGEvYXJj aC9hcm0vbWFjaC1peHA0eHgvS2NvbmZpZyBiL2FyY2gvYXJtL21hY2gtaXhwNHh4L0tjb25maWcK PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmY1ZTRiNDEKPiAtLS0gL2Rl di9udWxsCj4gKysrIGIvYXJjaC9hcm0vbWFjaC1peHA0eHgvS2NvbmZpZwo+IEBAIC0wLDAgKzEs MjYgQEAKPiAraWYgQVJDSF9JWFA0WFgKPiArCj4gK2Nob2ljZQo+ICsgwqAgwqAgwqAgcHJvbXB0 ICJJWFA0eHggQm9hcmQgVHlwZSIKPiArCj4gK2NvbmZpZyBNQUNIX01VTFRJTElOSwo+ICsgwqAg wqAgwqAgYm9vbCAiR29yYW1vIE11bHRpTGluayIKPiArIMKgIMKgIMKgIHNlbGVjdCBNQUNIX0hB U19MT1dMRVZFTF9JTklUCj4gK2VuZGNob2ljZQo+ICsKPiArY29uZmlnIEJPQVJESU5GTwo+ICsg wqAgwqAgwqAgZGVmYXVsdCAiR29yYW1vIE11bHRpTGluayIgaWYgTUFDSF9NVUxUSUxJTksKPiAr Cj4gK2NvbmZpZyBJWFA0WFhfUU1HUgo+ICsgwqAgwqAgwqAgdHJpc3RhdGUgIklYUDR4eCBRdWV1 ZSBNYW5hZ2VyIHN1cHBvcnQiCj4gKyDCoCDCoCDCoCBoZWxwCj4gKyDCoCDCoCDCoCDCoCBUaGlz IGRyaXZlciBzdXBwb3J0cyBJWFA0eHggYnVpbHQtaW4gaGFyZHdhcmUgcXVldWUgbWFuYWdlcgo+ ICsgwqAgwqAgwqAgwqAgYW5kIGlzIHJlcXVpcmVkIGJ5IHRoZSBFdGhlcm5ldCBkcml2ZXIuCj4g Kwo+ICtjb25maWcgSVhQNFhYX05QRQo+ICsgwqAgwqAgwqAgdHJpc3RhdGUgIklYUDR4eCBOZXR3 b3JrIFByb2Nlc3NvciBFbmdpbmUgc3VwcG9ydCIKPiArIMKgIMKgIMKgIGhlbHAKPiArIMKgIMKg IMKgIMKgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIElYUDR4eCBidWlsdC1pbiBuZXR3b3JrIGNvcHJv Y2Vzc29ycwo+ICsgwqAgwqAgwqAgwqAgYW5kIGlzIHJlcXVpcmVkIGJ5IHRoZSBFdGhlcm5ldCBk cml2ZXIuCj4gKwo+ICtlbmRpZgo+IGRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWl4cDR4eC9N YWtlZmlsZSBiL2FyY2gvYXJtL21hY2gtaXhwNHh4L01ha2VmaWxlCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQKPiBpbmRleCAwMDAwMDAwLi5hYTM4OTkxCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2Fy Y2gvYXJtL21hY2gtaXhwNHh4L01ha2VmaWxlCj4gQEAgLTAsMCArMSwzIEBACj4gK29iai15ICs9 IGxvd2xldmVsX2luaXQubyBnZW5lcmljLm8KPiArb2JqLSQoQ09ORklHX0lYUDRYWF9RTUdSKSAr PSBxbWdyLm8KPiArb2JqLSQoQ09ORklHX0lYUDRYWF9OUEUpICs9IG5wZS5vCj4gZGlmZiAtLWdp dCBhL2FyY2gvYXJtL21hY2gtaXhwNHh4L2dlbmVyaWMuYyBiL2FyY2gvYXJtL21hY2gtaXhwNHh4 L2dlbmVyaWMuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uMDIzOTRh NAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9hcmNoL2FybS9tYWNoLWl4cDR4eC9nZW5lcmljLmMK PiBAQCAtMCwwICsxLDEyMCBAQAo+ICsjaW5jbHVkZSA8Y29tbW9uLmg+Cj4gKyNpbmNsdWRlIDxp bml0Lmg+Cj4gKyNpbmNsdWRlIDxuczE2NTUwLmg+Cj4gKyNpbmNsdWRlIDxhc20vYXJtbGludXgu aD4KPiArI2luY2x1ZGUgPGFzbS9pby5oPgo+ICsjaW5jbHVkZSA8bWFjaC9peHA0eHgtcmVncy5o Pgo+ICsKPiArI2RlZmluZSBPU1RTX0ZSRVFVRU5DWSA2NjY2NjAwMAo+ICsKPiArdm9pZCByZXNl dF9jcHUodWxvbmcgYWRkcikKPiArewo+ICsgwqAgwqAgwqAgLyogVXNlIG9uLWNoaXAgcmVzZXQg Y2FwYWJpbGl0eSAqLwo+ICsgwqAgwqAgwqAgLyogVGhpcyBtYXkgbm90IHdvcmsgb24gSVhQNDI1 IHJldi4gQTAgKi8KPiArCj4gKyDCoCDCoCDCoCBJWFA0WFhfT1NXSyA9IElYUDRYWF9XRFRfS0VZ Owo+ICsgwqAgwqAgwqAgSVhQNFhYX09TV1QgPSAwOyAvKiByZXF1ZXN0IGltbWVkaWF0ZSByZXNl dCAqLwo+ICsgwqAgwqAgwqAgSVhQNFhYX09TV0UgPSBJWFA0WFhfV0RUX1JFU0VUX0VOQUJMRSB8 IElYUDRYWF9XRFRfQ09VTlRfRU5BQkxFOwo+ICsgwqAgwqAgwqAgd2hpbGUgKDEpCj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCA7Cj4gK30KPiArCj4gKyNpbmNsdWRlIDxjbG9jay5oPgo+ICsKPiAr LyoqCj4gKyAqIEBicmllZiBQcm92aWRlIGEgc2ltcGxlIGNsb2NrIHJlYWQKPiArICoKPiArICog Tm90aGluZyBpcyBzaW1wbGVyLi4gcmVhZCBkaXJlY3QgZnJvbSBjbG9jayBhbmQgcHJvdmlkZSBp dAo+ICsgKiB0byB0aGUgY2FsbGVyLgo+ICsgKgo+ICsgKiBAcmV0dXJuIGNsb2NrIGNvdW50ZXIK PiArICovCj4gK3N0YXRpYyB1aW50NjRfdCBpeHA0eHhfY2xvY2tzb3VyY2VfcmVhZCh2b2lkKQo+ ICt7Cj4gKyDCoCDCoCDCoCByZXR1cm4gSVhQNFhYX09TVFM7Cj4gK30KPiArCj4gK3N0YXRpYyBz dHJ1Y3QgY2xvY2tzb3VyY2UgY3MgPSB7Cj4gKyDCoCDCoCDCoCAucmVhZCA9IGl4cDR4eF9jbG9j a3NvdXJjZV9yZWFkLAo+ICsgwqAgwqAgwqAgLm1hc2sgPSAweGZmZmZmZmZmLAo+ICsgwqAgwqAg wqAgLnNoaWZ0ID0gMTAsCj4gK307Cj4gKwo+ICsvKioKPiArICogQGJyaWVmIEluaXRpYWxpemUg dGhlIENsb2NrCj4gKyAqCj4gKyAqIFdlIHVzZSB0aGUgVGltZS1TdGFtcCBUaW1lcgo+ICsgKgo+ ICsgKiBAcmV0dXJuIHJlc3VsdCBvZiBAcmVmIGluaXRfY2xvY2sKPiArICovCj4gK3N0YXRpYyBp bnQgaXhwNHh4X2Nsb2Nrc291cmNlX2luaXQodm9pZCkKPiArewo+ICsgwqAgwqAgwqAgY3MubXVs dCA9IGNsb2Nrc291cmNlX2h6Mm11bHQoT1NUU19GUkVRVUVOQ1ksIGNzLnNoaWZ0KTsKPiArCj4g KyDCoCDCoCDCoCByZXR1cm4gaW5pdF9jbG9jaygmY3MpOwo+ICt9Cj4gKwo+ICsvKiBSdW4gbWUg YXQgYm9vdCB0aW1lICovCj4gK2NvcmVfaW5pdGNhbGwoaXhwNHh4X2Nsb2Nrc291cmNlX2luaXQp Owo+ICsKPiArCj4gKyNpZmRlZiBDT05GSUdfRFJJVkVSX1NFUklBTF9OUzE2NTUwCj4gKwo+ICsv KioKPiArICogQGJyaWVmIFVBUlQgcG9ydCByZWdpc3RlciByZWFkIGZ1bmN0aW9uIGZvciBJWFA0 WFgKPiArICoKPiArICogQHBhcmFtIGJhc2UgYmFzZSBhZGRyZXNzIG9mIFVBUlQKPiArICogQHBh cmFtIHJlZ19pZHggcmVnaXN0ZXIgaW5kZXgKPiArICoKPiArICogQHJldHVybiBjaGFyYWN0ZXIg cmVhZCBmcm9tIHJlZ2lzdGVyCj4gKyAqLwo+ICt1bnNpZ25lZCBpbnQgaXhwNHh4X3VhcnRfcmVh ZCh1bnNpZ25lZCBsb25nIGJhc2UsIHVuc2lnbmVkIGNoYXIgcmVnX2lkeCkKPiArewo+ICsgwqAg wqAgwqAgcmV0dXJuIHJlYWRiKDQgKiByZWdfaWR4ICsgMyAvKiBiaWctZW5kaWFuICovICsgKHVp bnQ4X3QgKiliYXNlKTsKPiArfQo+ICtFWFBPUlRfU1lNQk9MKGl4cDR4eF91YXJ0X3JlYWQpOwo+ ICsKPiArLyoqCj4gKyAqIEBicmllZiBVQVJUIHBvcnQgcmVnaXN0ZXIgd3JpdGUgZnVuY3Rpb24g Zm9yIElYUDRYWAo+ICsgKgo+ICsgKiBAcGFyYW0gdmFsIHZhbHVlIHRvIHdyaXRlCj4gKyAqIEBw YXJhbSBiYXNlIGJhc2UgYWRkcmVzcyBvZiBVQVJUCj4gKyAqIEBwYXJhbSByZWdfaWR4IHJlZ2lz dGVyIGluZGV4Cj4gKyAqCj4gKyAqIEByZXR1cm4gdm9pZAo+ICsgKi8KPiArdm9pZCBpeHA0eHhf dWFydF93cml0ZSh1bnNpZ25lZCBpbnQgdmFsLCB1bnNpZ25lZCBsb25nIGJhc2UsIHVuc2lnbmVk IGNoYXIgcmVnX2lkeCkKPiArewo+ICsgwqAgwqAgwqAgd3JpdGViKHZhbCwgNCAqIHJlZ19pZHgg KyAzIC8qIGJpZy1lbmRpYW4gKi8gKyAodWludDhfdCAqKWJhc2UpOwo+ICt9Cj4gK0VYUE9SVF9T WU1CT0woaXhwNHh4X3VhcnRfd3JpdGUpOwo+ICsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgTlMxNjU1 MF9wbGF0IHNlcmlhbF9wbGF0ID0gewo+ICsgwqAgwqAgwqAgLmNsb2NrID0gMTQ3NDU2MDAsCj4g KyDCoCDCoCDCoCAuZl9jYXBzID0gQ09OU09MRV9TVERJTiB8IENPTlNPTEVfU1RET1VUIHwgQ09O U09MRV9TVERFUlIsCj4gKyDCoCDCoCDCoCAucmVnX3JlYWQgPSBpeHA0eHhfdWFydF9yZWFkLAo+ ICsgwqAgwqAgwqAgLnJlZ193cml0ZSA9IGl4cDR4eF91YXJ0X3dyaXRlLAo+ICt9Owo+ICsKPiAr c3RhdGljIHN0cnVjdCBkZXZpY2VfZCBpeHA0eHhfc2VyaWFsX2RldmljZSA9IHsKPiArIMKgIMKg IMKgIC5uYW1lID0gInNlcmlhbF9uczE2NTUwIiwKPiArIMKgIMKgIMKgIC5tYXBfYmFzZSA9ICh1 MzIpSVhQNFhYX1VBUlQxX0JBU0UsCj4gKyDCoCDCoCDCoCAuc2l6ZSA9IDEwMjQsCj4gKyDCoCDC oCDCoCAucGxhdGZvcm1fZGF0YSA9ICh2b2lkICopJnNlcmlhbF9wbGF0LAo+ICt9Owo+ICsKPiAr LyoqCj4gKyAqIEBicmllZiBVQVJUIHNlcmlhbCBwb3J0IGluaXRpYWxpemF0aW9uCj4gKyAqCj4g KyAqIEByZXR1cm4gcmVzdWx0IG9mIGRldmljZSByZWdpc3RyYXRpb24KPiArICovCj4gK3N0YXRp YyBpbnQgaXhwNHh4X2NvbnNvbGVfaW5pdCh2b2lkKQo+ICt7Cj4gKyDCoCDCoCDCoCAvKiBSZWdp c3RlciB0aGUgc2VyaWFsIHBvcnQgKi8KPiArIMKgIMKgIMKgIHJldHVybiByZWdpc3Rlcl9kZXZp Y2UoJml4cDR4eF9zZXJpYWxfZGV2aWNlKTsKPiArfQo+ICsKPiArY29uc29sZV9pbml0Y2FsbChp eHA0eHhfY29uc29sZV9pbml0KTsKPiArCj4gKyNlbmRpZiAvKiBDT05GSUdfRFJJVkVSX1NFUklB TF9OUzE2NTUwICovCj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtaXhwNHh4L2luY2x1ZGUv bWFjaC9jcHUuaCBiL2FyY2gvYXJtL21hY2gtaXhwNHh4L2luY2x1ZGUvbWFjaC9jcHUuaAo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uM2RlMDIxZQo+IC0tLSAvZGV2L251 bGwKPiArKysgYi9hcmNoL2FybS9tYWNoLWl4cDR4eC9pbmNsdWRlL21hY2gvY3B1LmgKPiBAQCAt MCwwICsxLDcwIEBACj4gKy8qCj4gKyAqIGFyY2gvYXJtL21hY2gtaXhwNHh4L2luY2x1ZGUvbWFj aC9jcHUuaAo+ICsgKgo+ICsgKiBJWFA0WFggY3B1IHR5cGUgZGV0ZWN0aW9uCj4gKyAqCj4gKyAq IENvcHlyaWdodCAoQykgMjAwNyBNb250YVZpc3RhIFNvZnR3YXJlLCBJbmMuCj4gKyAqCj4gKyAq IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Cj4gKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCj4gKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLgo+ICsgKgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX19BU01fQVJD SF9DUFVfSF9fCj4gKyNkZWZpbmUgX19BU01fQVJDSF9DUFVfSF9fCj4gKwo+ICsjaW5jbHVkZSA8 bGludXgvdHlwZXMuaD4KPiArCj4gKy8qIFByb2Nlc3NvciBpZCB2YWx1ZSBpbiBDUDE1IFJlZ2lz dGVyIDAgKi8KPiArI2RlZmluZSBJWFA0MlhfUFJPQ0VTU09SX0lEX1ZBTFVFIDB4NjkwNTQxYzAg LyogaW5jbHVkaW5nIHVudXNlZCAweDY5MDU0MUV4ICovCj4gKyNkZWZpbmUgSVhQNDJYX1BST0NF U1NPUl9JRF9NQVNLIMKgMHhmZmZmZmZjMAo+ICsKPiArI2RlZmluZSBJWFA0M1hfUFJPQ0VTU09S X0lEX1ZBTFVFIDB4NjkwNTQwNDAKPiArI2RlZmluZSBJWFA0M1hfUFJPQ0VTU09SX0lEX01BU0sg wqAweGZmZmZmZmYwCj4gKwo+ICsjZGVmaW5lIElYUDQ2WF9QUk9DRVNTT1JfSURfVkFMVUUgMHg2 OTA1NDIwMCAvKiBpbmNsdWRpbmcgSVhQNDU1ICovCj4gKyNkZWZpbmUgSVhQNDZYX1BST0NFU1NP Ul9JRF9NQVNLIMKgMHhmZmZmZmZmMAo+ICsKPiArI2RlZmluZSBjcHVfaXNfaXhwNDJ4X3Jldl9h MCgpICgocmVhZF9jcHVpZF9pZCgpICYgKElYUDQyWF9QUk9DRVNTT1JfSURfTUFTSyB8IDB4Rikp ID09IFwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIElY UDQyWF9QUk9DRVNTT1JfSURfVkFMVUUpCj4gKyNkZWZpbmUgY3B1X2lzX2l4cDQyeCgpICgocmVh ZF9jcHVpZF9pZCgpICYgSVhQNDJYX1BST0NFU1NPUl9JRF9NQVNLKSA9PSBcCj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoElYUDQyWF9QUk9DRVNTT1JfSURfVkFMVUUpCj4g KyNkZWZpbmUgY3B1X2lzX2l4cDQzeCgpICgocmVhZF9jcHVpZF9pZCgpICYgSVhQNDNYX1BST0NF U1NPUl9JRF9NQVNLKSA9PSBcCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oElYUDQzWF9QUk9DRVNTT1JfSURfVkFMVUUpCj4gKyNkZWZpbmUgY3B1X2lzX2l4cDQ2eCgpICgo cmVhZF9jcHVpZF9pZCgpICYgSVhQNDZYX1BST0NFU1NPUl9JRF9NQVNLKSA9PSBcCj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoElYUDQ2WF9QUk9DRVNTT1JfSURfVkFMVUUp Cj4gKwo+ICsvKgo+ICsgKiBUaGUgQ1BVIElEIG5ldmVyIGNoYW5nZXMgYXQgcnVuIHRpbWUsIHNv IHdlIG1pZ2h0IGFzIHdlbGwgdGVsbCB0aGUKPiArICogY29tcGlsZXIgdGhhdCBpdCdzIGNvbnN0 YW50LiDCoFVzZSB0aGlzIGZ1bmN0aW9uIHRvIHJlYWQgdGhlIENQVSBJRAo+ICsgKiByYXRoZXIg dGhhbiBkaXJlY3RseSByZWFkaW5nIHByb2Nlc3Nvcl9pZCBvciByZWFkX2NwdWlkKCkgZGlyZWN0 bHkuCj4gKyAqLwo+ICtzdGF0aWMgaW5saW5lIHUzMiBfX2F0dHJpYnV0ZV9jb25zdF9fIHJlYWRf Y3B1aWRfaWQodm9pZCkKPiArewo+ICsgwqAgwqAgwqAgdTMyIHZhbDsKPiArIMKgIMKgIMKgIGFz bSgibXJjIHAxNSwgMCwgJTAsIGMwLCBjMCwgMCIgOiAiPXIiICh2YWwpIDogOiAiY2MiKTsKPiAr Cj4gKyDCoCDCoCDCoCByZXR1cm4gdmFsOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHUzMiBp eHA0eHhfcmVhZF9mZWF0dXJlX2JpdHModm9pZCkKPiArewo+ICsgwqAgwqAgwqAgdTMyIHZhbCA9 IH5JWFA0WFhfRVhQX0NGRzI7Cj4gKwo+ICsgwqAgwqAgwqAgaWYgKGNwdV9pc19peHA0MnhfcmV2 X2EwKCkpCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gSVhQNDJYX0ZFQVRVUkVfTUFT SyAmIH4oSVhQNFhYX0ZFQVRVUkVfUkNPTVAgfAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBJWFA0WFhfRkVBVFVS RV9BRVMpOwo+ICsgwqAgwqAgwqAgaWYgKGNwdV9pc19peHA0MngoKSkKPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIHJldHVybiB2YWwgJiBJWFA0MlhfRkVBVFVSRV9NQVNLOwo+ICsgwqAgwqAgwqAg aWYgKGNwdV9pc19peHA0M3goKSkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiB2YWwg JiBJWFA0M1hfRkVBVFVSRV9NQVNLOwo+ICsgwqAgwqAgwqAgcmV0dXJuIHZhbCAmIElYUDQ2WF9G RUFUVVJFX01BU0s7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBpeHA0eHhfd3JpdGVf ZmVhdHVyZV9iaXRzKHUzMiB2YWx1ZSkKPiArewo+ICsgwqAgwqAgwqAgSVhQNFhYX0VYUF9DRkcy ID0gfnZhbHVlOwo+ICt9Cj4gKwo+ICsjZW5kaWYgwqAvKiBfQVNNX0FSQ0hfQ1BVX0ggKi8KPiBk aWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1peHA0eHgvaW5jbHVkZS9tYWNoL2l4cDR4eC1yZWdz LmggYi9hcmNoL2FybS9tYWNoLWl4cDR4eC9pbmNsdWRlL21hY2gvaXhwNHh4LXJlZ3MuaAo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uZGE0ZGM4YQo+IC0tLSAvZGV2L251 bGwKPiArKysgYi9hcmNoL2FybS9tYWNoLWl4cDR4eC9pbmNsdWRlL21hY2gvaXhwNHh4LXJlZ3Mu aAo+IEBAIC0wLDAgKzEsMzY1IEBACj4gKy8qCj4gKyAqIFJlZ2lzdGVyIGRlZmluaXRpb25zIGZv ciBJWFA0eHggY2hpcHNldC4KPiArICoKPiArICogQ29weXJpZ2h0IChDKSAyMDAyIEludGVsIENv cnBvcmF0aW9uLgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwNCBNb250YVZpc3RhIFNvZnR3 YXJlLCBJbmMuCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4gKyAqIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCj4gKyAqIHB1 Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgo+ICsgKgo+ICsgKi8KPiAr Cj4gKyNpZm5kZWYgX0FTTV9BUk1fSVhQNFhYX0hfCj4gKyNkZWZpbmUgX0FTTV9BUk1fSVhQNFhY X0hfCj4gKwo+ICsjaWZkZWYgX19BU1NFTUJMRVJfXwo+ICsjZGVmaW5lIElYUDRYWF9SRUcocmVn KSDCoChyZWcpCj4gKyNlbHNlCj4gKyNkZWZpbmUgSVhQNFhYX1JFRyhyZWcpIMKgKCoodm9sYXRp bGUgdTMyICopKHJlZykpCj4gKyNkZWZpbmUgSVhQNFhYX0JBU0UocmVnKSAoKHUzMiopKHJlZykp Cj4gKyNlbmRpZgo+ICsKPiArLyogRXhwYW5zaW9uIEJ1cyByZWdpb24gKi8KPiArCj4gKy8qIFF1 ZXVlIE1hbmFnZXIgKi8KPiArI2RlZmluZSBJWFA0WFhfUU1HUl9CQVNFIMKgIMKgIMKgIMKgIMKg IMKgIMKgKDB4NjAwMDAwMDApCj4gKyNkZWZpbmUgSVhQNFhYX1FNR1JfUkVHSU9OX1NJWkUgwqAg wqAgwqAgKDB4MDAwMDQwMDApCj4gKwo+ICsKPiArLyogUENJIENvbmZpZyByZWdpc3RlcnMgKi8K PiArI2RlZmluZSBJWFA0WFhfUENJX0NGR19CQVNFIMKgIMKgIMKgIMKgIMKgICgweEMwMDAwMDAw KQo+ICsjZGVmaW5lIElYUDRYWF9QQ0lfQ0ZHX1JFR0lPTl9TSVpFIMKgIMKgKDB4MDAwMDEwMDAp Cj4gKwo+ICsvKiBQZXJpcGhlcmFsIHNwYWNlICovCj4gKyNkZWZpbmUgSVhQNFhYX1BFUklQSEVS QUxfQkFTRSDCoCDCoCDCoCDCoCgweEM4MDAwMDAwKQo+ICsjZGVmaW5lIElYUDRYWF9QRVJJUEhF UkFMX1JFR0lPTl9TSVpFICgweDAwMDEzMDAwKQo+ICsKPiArLyoKPiArICogRGVidWcgVUFSVAo+ ICsgKgo+ICsgKiBUaGlzIGlzIGJhc2ljYWxseSBhIHJlbWFwIG9mIFVBUlQxIGludG8gYSByZWdp b24gdGhhdCBpcyBzZWN0aW9uCj4gKyAqIGFsaWduZWQgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCB3 aXRoIHRoZSBsb3ctbGV2ZWwgZGVidWcgY29kZS4KPiArICovCj4gKyNkZWZpbmUgSVhQNFhYX0RF QlVHX1VBUlRfQkFTRSDCoCDCoCDCoCDCoCgweEM4MDAwMDAwKQo+ICsjZGVmaW5lIElYUDRYWF9E RUJVR19VQVJUX1JFR0lPTl9TSVpFICgweDAwMDAxMDAwKQo+ICsKPiArLyogRXhwYW5zaW9uIEJ1 cyBDb250cm9sbGVyIHJlZ2lzdGVycy4gKi8KPiArI2RlZmluZSBJWFA0WFhfRVhQX0NTMCDCoCDC oCDCoCBJWFA0WFhfUkVHKDB4QzQwMDAwMDApCj4gKyNkZWZpbmUgSVhQNFhYX0VYUF9DUzEgwqAg wqAgwqAgSVhQNFhYX1JFRygweEM0MDAwMDA0KQo+ICsjZGVmaW5lIElYUDRYWF9FWFBfQ1MyIMKg IMKgIMKgIElYUDRYWF9SRUcoMHhDNDAwMDAwOCkKPiArI2RlZmluZSBJWFA0WFhfRVhQX0NTMyDC oCDCoCDCoCBJWFA0WFhfUkVHKDB4QzQwMDAwMEMpCj4gKyNkZWZpbmUgSVhQNFhYX0VYUF9DUzQg wqAgwqAgwqAgSVhQNFhYX1JFRygweEM0MDAwMDEwKQo+ICsjZGVmaW5lIElYUDRYWF9FWFBfQ1M1 IMKgIMKgIMKgIElYUDRYWF9SRUcoMHhDNDAwMDAxNCkKPiArI2RlZmluZSBJWFA0WFhfRVhQX0NT NiDCoCDCoCDCoCBJWFA0WFhfUkVHKDB4QzQwMDAwMTgpCj4gKyNkZWZpbmUgSVhQNFhYX0VYUF9D UzcgwqAgwqAgwqAgSVhQNFhYX1JFRygweEM0MDAwMDFDKQo+ICsKPiArI2RlZmluZSBJWFA0WFhf RVhQX0JBU0UobikgwqAoMHg1MDAwMDAwMCArIChuKSAqIDEwMDAwMDApCj4gKwo+ICsjZGVmaW5l IElYUDRYWF9FWFBfRU4gwqAgwqAgwqAgwqAweDgwMDAwMDAwCj4gKyNkZWZpbmUgSVhQNFhYX0VY UF9UMShuKSDCoCDCoCgweDEwMDAwMDAwICogKG4pKSAvKiB2YWxpZDogMCAtIDMgKi8KPiArI2Rl ZmluZSBJWFA0WFhfRVhQX1QyKG4pIMKgIMKgKDB4MDQwMDAwMDAgKiAobikpIC8qIHZhbGlkOiAw IC0gMyAqLwo+ICsjZGVmaW5lIElYUDRYWF9FWFBfVDMobikgwqAgwqAoMHgwMDQwMDAwMCAqIChu KSkgLyogdmFsaWQ6IDAgLSAxNSAqLwo+ICsjZGVmaW5lIElYUDRYWF9FWFBfVDQobikgwqAgwqAo MHgwMDEwMDAwMCAqIChuKSkgLyogdmFsaWQ6IDAgLSAzICovCj4gKyNkZWZpbmUgSVhQNFhYX0VY UF9UNShuKSDCoCDCoCgweDAwMDEwMDAwICogKG4pKSAvKiB2YWxpZDogMCAtIDE1ICovCj4gKyNk ZWZpbmUgSVhQNFhYX0VYUF9JTlRFTCDCoCDCoCAweDAwMDAwMDAwCj4gKyNkZWZpbmUgSVhQNFhY X0VYUF9NT1RPIMKgIMKgIMKgMHgwMDAwNDAwMAo+ICsjZGVmaW5lIElYUDRYWF9FWFBfSFBJIMKg IMKgIMKgIDB4MDAwMDgwMDAKPiArI2RlZmluZSBJWFA0WFhfRVhQX0JJVFMobikgwqAoMHgwMDAw MDQwMCAqICgobikgLSA5KSkgLyogdmFsaWQ6IDkgLSAyNCAqLwo+ICsjZGVmaW5lIElYUDRYWF9F WFBfQllURV9SRDE2IDB4MDAwMDAwNDAKPiArI2RlZmluZSBJWFA0WFhfRVhQX0hSRFlfUE9MIMKg MHgwMDAwMDAyMAo+ICsjZGVmaW5lIElYUDRYWF9FWFBfTVVYX0VOIMKgIMKgMHgwMDAwMDAxMAo+ ICsjZGVmaW5lIElYUDRYWF9FWFBfU1BMVF9FTiDCoCAweDAwMDAwMDA4Cj4gKyNkZWZpbmUgSVhQ NFhYX0VYUF9XUl9FTiDCoCDCoCAweDAwMDAwMDAyCj4gKyNkZWZpbmUgSVhQNFhYX0VYUF9CWVRF X0VOIMKgIDB4MDAwMDAwMDEKPiArCj4gKyNkZWZpbmUgSVhQNFhYX0VYUF9DRkcwIMKgIMKgIMKg SVhQNFhYX1JFRygweEM0MDAwMDIwKQo+ICsjZGVmaW5lIElYUDRYWF9FWFBfQ0ZHMSDCoCDCoCDC oElYUDRYWF9SRUcoMHhDNDAwMDAyNCkKPiArI2RlZmluZSBJWFA0WFhfRVhQX0NGRzIgwqAgwqAg wqBJWFA0WFhfUkVHKDB4QzQwMDAwMjgpCj4gKyNkZWZpbmUgSVhQNFhYX0VYUF9DRkczIMKgIMKg IMKgSVhQNFhYX1JFRygweEM0MDAwMDJDKQo+ICsKPiArCj4gKy8qIFBlcmlwaGVyYWwgU3BhY2Ug UmVnaXN0ZXIgUmVnaW9uIEJhc2UgQWRkcmVzc2VzICovCj4gKyNkZWZpbmUgSVhQNFhYX1VBUlQx X0JBU0UgwqAgwqBJWFA0WFhfQkFTRShJWFA0WFhfUEVSSVBIRVJBTF9CQVNFICsgMHgwMDAwKQo+ ICsjZGVmaW5lIElYUDRYWF9VQVJUMl9CQVNFIMKgIMKgSVhQNFhYX0JBU0UoSVhQNFhYX1BFUklQ SEVSQUxfQkFTRSArIDB4MTAwMCkKPiArI2RlZmluZSBJWFA0WFhfUE1VX0JBU0UgwqAgwqAgwqBJ WFA0WFhfQkFTRShJWFA0WFhfUEVSSVBIRVJBTF9CQVNFICsgMHgyMDAwKQo+ICsjZGVmaW5lIElY UDRYWF9JTlRDX0JBU0UgwqAgwqAgSVhQNFhYX0JBU0UoSVhQNFhYX1BFUklQSEVSQUxfQkFTRSAr IDB4MzAwMCkKPiArI2RlZmluZSBJWFA0WFhfR1BJT19CQVNFIMKgIMKgIElYUDRYWF9CQVNFKElY UDRYWF9QRVJJUEhFUkFMX0JBU0UgKyAweDQwMDApCj4gKyNkZWZpbmUgSVhQNFhYX05QRUFfQkFT RSDCoCDCoCBJWFA0WFhfQkFTRShJWFA0WFhfUEVSSVBIRVJBTF9CQVNFICsgMHg2MDAwKQo+ICsj ZGVmaW5lIElYUDRYWF9OUEVCX0JBU0UgwqAgwqAgSVhQNFhYX0JBU0UoSVhQNFhYX1BFUklQSEVS QUxfQkFTRSArIDB4NzAwMCkKPiArI2RlZmluZSBJWFA0WFhfTlBFQ19CQVNFIMKgIMKgIElYUDRY WF9CQVNFKElYUDRYWF9QRVJJUEhFUkFMX0JBU0UgKyAweDgwMDApCj4gKyNkZWZpbmUgSVhQNFhY X0V0aEJfQkFTRSDCoCDCoCBJWFA0WFhfQkFTRShJWFA0WFhfUEVSSVBIRVJBTF9CQVNFICsgMHg5 MDAwKQo+ICsjZGVmaW5lIElYUDRYWF9FdGhDX0JBU0UgwqAgwqAgSVhQNFhYX0JBU0UoSVhQNFhY X1BFUklQSEVSQUxfQkFTRSArIDB4QTAwMCkKPiArI2RlZmluZSBJWFA0WFhfVVNCX0JBU0UgwqAg wqAgwqBJWFA0WFhfQkFTRShJWFA0WFhfUEVSSVBIRVJBTF9CQVNFICsgMHhCMDAwKQo+ICsvKiBJ WFA0Nnggb25seSAqLwo+ICsjZGVmaW5lIElYUDRYWF9FdGhBX0JBU0UgwqAgwqAgSVhQNFhYX0JB U0UoSVhQNFhYX1BFUklQSEVSQUxfQkFTRSArIDB4QzAwMCkKPiArI2RlZmluZSBJWFA0WFhfRXRo QjFfQkFTRSDCoCDCoElYUDRYWF9CQVNFKElYUDRYWF9QRVJJUEhFUkFMX0JBU0UgKyAweEQwMDAp Cj4gKyNkZWZpbmUgSVhQNFhYX0V0aEIyX0JBU0UgwqAgwqBJWFA0WFhfQkFTRShJWFA0WFhfUEVS SVBIRVJBTF9CQVNFICsgMHhFMDAwKQo+ICsjZGVmaW5lIElYUDRYWF9FdGhCM19CQVNFIMKgIMKg SVhQNFhYX0JBU0UoSVhQNFhYX1BFUklQSEVSQUxfQkFTRSArIDB4RjAwMCkKPiArI2RlZmluZSBJ WFA0WFhfVElNRVNZTkNfQkFTRSBJWFA0WFhfQkFTRShJWFA0WFhfUEVSSVBIRVJBTF9CQVNFICsg MHgxMDAwMCkKPiArI2RlZmluZSBJWFA0WFhfSTJDX0JBU0UgwqAgwqAgwqBJWFA0WFhfQkFTRShJ WFA0WFhfUEVSSVBIRVJBTF9CQVNFICsgMHgxMTAwMCkKPiArI2RlZmluZSBJWFA0WFhfU1NQX0JB U0UgwqAgwqAgwqBJWFA0WFhfQkFTRShJWFA0WFhfUEVSSVBIRVJBTF9CQVNFICsgMHgxMjAwMCkK PiArCj4gKy8qCj4gKyDCoENvbnN0YW50cyB0byBtYWtlIGl0IGVhc3kgdG8gYWNjZXNzIEludGVy cnVwdCBDb250cm9sbGVyIHJlZ2lzdGVycwo+ICsgKi8KPiArI2RlZmluZSBJWFA0WFhfSUNQUl9P RkZTRVQgwqAgMHgwMCAvKiBJbnRlcnJ1cHQgU3RhdHVzICovCj4gKyNkZWZpbmUgSVhQNFhYX0lD TVJfT0ZGU0VUIMKgIDB4MDQgLyogSW50ZXJydXB0IEVuYWJsZSAqLwo+ICsjZGVmaW5lIElYUDRY WF9JQ0xSX09GRlNFVCDCoCAweDA4IC8qIEludGVycnVwdCBJUlEvRklRIFNlbGVjdCAqLwo+ICsj ZGVmaW5lIElYUDRYWF9JQ0lQX09GRlNFVCDCoCAweDBDIC8qIElSUSBTdGF0dXMgKi8KPiArI2Rl ZmluZSBJWFA0WFhfSUNGUF9PRkZTRVQgwqAgMHgxMCAvKiBGSVEgU3RhdHVzICovCj4gKyNkZWZp bmUgSVhQNFhYX0lDSFJfT0ZGU0VUIMKgIDB4MTQgLyogSW50ZXJydXB0IFByaW9yaXR5ICovCj4g KyNkZWZpbmUgSVhQNFhYX0lDSUhfT0ZGU0VUIMKgIDB4MTggLyogSVJRIEhpZ2hlc3QgUHJpIElu dCAqLwo+ICsjZGVmaW5lIElYUDRYWF9JQ0ZIX09GRlNFVCDCoCAweDFDIC8qIEZJUSBIaWdoZXN0 IFByaSBJbnQgKi8KPiArCj4gKy8qIElYUDQ2NS1vbmx5ICovCj4gKyNkZWZpbmUgSVhQNFhYX0lD UFIyX09GRlNFVCDCoDB4MjAgLyogSW50ZXJydXB0IFN0YXR1cyAyICovCj4gKyNkZWZpbmUgSVhQ NFhYX0lDTVIyX09GRlNFVCDCoDB4MjQgLyogSW50ZXJydXB0IEVuYWJsZSAyICovCj4gKyNkZWZp bmUgSVhQNFhYX0lDTFIyX09GRlNFVCDCoDB4MjggLyogSW50ZXJydXB0IElSUS9GSVEgU2VsZWN0 IDIgKi8KPiArI2RlZmluZSBJWFA0WFhfSUNJUDJfT0ZGU0VUIMKgMHgyQyAvKiBJUlEgU3RhdHVz ICovCj4gKyNkZWZpbmUgSVhQNFhYX0lDRlAyX09GRlNFVCDCoDB4MzAgLyogRklRIFN0YXR1cyAq Lwo+ICsjZGVmaW5lIElYUDRYWF9JQ0VFTl9PRkZTRVQgwqAweDM0IC8qIEVycm9yIEhpZ2ggUHJp IEVuYWJsZSAqLwo+ICsKPiArCj4gKy8qIEludGVycnVwdCBDb250cm9sbGVyIFJlZ2lzdGVyIERl ZmluaXRpb25zLiAqLwo+ICsjZGVmaW5lIElYUDRYWF9JTlRDX1JFRyh4KSDCoCAoKHZvbGF0aWxl IHUzMiAqKShJWFA0WFhfSU5UQ19CQVNFICsgKHgpKSkKPiArCj4gKyNkZWZpbmUgSVhQNFhYX0lD UFIgwqAgwqAgwqAgwqAgwqBJWFA0WFhfSU5UQ19SRUcoSVhQNFhYX0lDUFJfT0ZGU0VUKQo+ICsj ZGVmaW5lIElYUDRYWF9JQ01SIMKgIMKgIMKgIMKgIMKgSVhQNFhYX0lOVENfUkVHKElYUDRYWF9J Q01SX09GRlNFVCkKPiArI2RlZmluZSBJWFA0WFhfSUNMUiDCoCDCoCDCoCDCoCDCoElYUDRYWF9J TlRDX1JFRyhJWFA0WFhfSUNMUl9PRkZTRVQpCj4gKyNkZWZpbmUgSVhQNFhYX0lDSVAgwqAgwqAg wqAgwqAgwqBJWFA0WFhfSU5UQ19SRUcoSVhQNFhYX0lDSVBfT0ZGU0VUKQo+ICsjZGVmaW5lIElY UDRYWF9JQ0ZQIMKgIMKgIMKgIMKgIMKgSVhQNFhYX0lOVENfUkVHKElYUDRYWF9JQ0ZQX09GRlNF VCkKPiArI2RlZmluZSBJWFA0WFhfSUNIUiDCoCDCoCDCoCDCoCDCoElYUDRYWF9JTlRDX1JFRyhJ WFA0WFhfSUNIUl9PRkZTRVQpCj4gKyNkZWZpbmUgSVhQNFhYX0lDSUggwqAgwqAgwqAgwqAgwqBJ WFA0WFhfSU5UQ19SRUcoSVhQNFhYX0lDSUhfT0ZGU0VUKQo+ICsjZGVmaW5lIElYUDRYWF9JQ0ZI IMKgIMKgIMKgIMKgIMKgSVhQNFhYX0lOVENfUkVHKElYUDRYWF9JQ0ZIX09GRlNFVCkKPiArI2Rl ZmluZSBJWFA0WFhfSUNQUjIgwqAgwqAgwqAgwqAgSVhQNFhYX0lOVENfUkVHKElYUDRYWF9JQ1BS Ml9PRkZTRVQpCj4gKyNkZWZpbmUgSVhQNFhYX0lDTVIyIMKgIMKgIMKgIMKgIElYUDRYWF9JTlRD X1JFRyhJWFA0WFhfSUNNUjJfT0ZGU0VUKQo+ICsjZGVmaW5lIElYUDRYWF9JQ0xSMiDCoCDCoCDC oCDCoCBJWFA0WFhfSU5UQ19SRUcoSVhQNFhYX0lDTFIyX09GRlNFVCkKPiArI2RlZmluZSBJWFA0 WFhfSUNJUDIgwqAgwqAgwqAgwqAgSVhQNFhYX0lOVENfUkVHKElYUDRYWF9JQ0lQMl9PRkZTRVQp Cj4gKyNkZWZpbmUgSVhQNFhYX0lDRlAyIMKgIMKgIMKgIMKgIElYUDRYWF9JTlRDX1JFRyhJWFA0 WFhfSUNGUDJfT0ZGU0VUKQo+ICsjZGVmaW5lIElYUDRYWF9JQ0VFTiDCoCDCoCDCoCDCoCBJWFA0 WFhfSU5UQ19SRUcoSVhQNFhYX0lDRUVOX09GRlNFVCkKPiArCj4gKy8qIENvbnN0YW50cyB0byBt YWtlIGl0IGVhc3kgdG8gYWNjZXNzIEdQSU8gcmVnaXN0ZXJzICovCj4gKyNkZWZpbmUgSVhQNFhY X0dQSU9fR1BPVVRSX09GRlNFVCDCoCAweDAwCj4gKyNkZWZpbmUgSVhQNFhYX0dQSU9fR1BPRVJf T0ZGU0VUIMKgIMKgMHgwNAo+ICsjZGVmaW5lIElYUDRYWF9HUElPX0dQSU5SX09GRlNFVCDCoCDC oDB4MDgKPiArI2RlZmluZSBJWFA0WFhfR1BJT19HUElTUl9PRkZTRVQgwqAgwqAweDBDCj4gKyNk ZWZpbmUgSVhQNFhYX0dQSU9fR1BJVDFSX09GRlNFVCDCoCAweDEwCj4gKyNkZWZpbmUgSVhQNFhY X0dQSU9fR1BJVDJSX09GRlNFVCDCoCAweDE0Cj4gKyNkZWZpbmUgSVhQNFhYX0dQSU9fR1BDTEtS X09GRlNFVCDCoCAweDE4Cj4gKyNkZWZpbmUgSVhQNFhYX0dQSU9fR1BEQlNFTFJfT0ZGU0VUIDB4 MUMKPiArCj4gKy8qIEdQSU8gUmVnaXN0ZXIgRGVmaW5pdGlvbnMgLSBwZXJmb3JtIG9ubHkgMzIt Yml0IHJlYWRzL3dyaXRlcyAqLwo+ICsjZGVmaW5lIElYUDRYWF9HUElPX1JFRyh4KSDCoCAoKHZv bGF0aWxlIHUzMiAqKShJWFA0WFhfR1BJT19CQVNFICsgKHgpKSkKPiArCj4gKyNkZWZpbmUgSVhQ NFhYX0dQSU9fR1BPVVRSIMKgIElYUDRYWF9HUElPX1JFRyhJWFA0WFhfR1BJT19HUE9VVFJfT0ZG U0VUKQo+ICsjZGVmaW5lIElYUDRYWF9HUElPX0dQT0VSIMKgIMKgSVhQNFhYX0dQSU9fUkVHKElY UDRYWF9HUElPX0dQT0VSX09GRlNFVCkKPiArI2RlZmluZSBJWFA0WFhfR1BJT19HUElOUiDCoCDC oElYUDRYWF9HUElPX1JFRyhJWFA0WFhfR1BJT19HUElOUl9PRkZTRVQpCj4gKyNkZWZpbmUgSVhQ NFhYX0dQSU9fR1BJU1IgwqAgwqBJWFA0WFhfR1BJT19SRUcoSVhQNFhYX0dQSU9fR1BJU1JfT0ZG U0VUKQo+ICsjZGVmaW5lIElYUDRYWF9HUElPX0dQSVQxUiDCoCBJWFA0WFhfR1BJT19SRUcoSVhQ NFhYX0dQSU9fR1BJVDFSX09GRlNFVCkKPiArI2RlZmluZSBJWFA0WFhfR1BJT19HUElUMlIgwqAg SVhQNFhYX0dQSU9fUkVHKElYUDRYWF9HUElPX0dQSVQyUl9PRkZTRVQpCj4gKyNkZWZpbmUgSVhQ NFhYX0dQSU9fR1BDTEtSIMKgIElYUDRYWF9HUElPX1JFRyhJWFA0WFhfR1BJT19HUENMS1JfT0ZG U0VUKQo+ICsjZGVmaW5lIElYUDRYWF9HUElPX0dQREJTRUxSIElYUDRYWF9HUElPX1JFRyhJWFA0 WFhfR1BJT19HUERCU0VMUl9PRkZTRVQpCj4gKwo+ICsvKiBHUElPIHJlZ2lzdGVyIGJpdCBkZWZp bml0aW9ucyAqLwo+ICsKPiArLyogSW50ZXJydXB0IHN0eWxlcyAqLwo+ICsjZGVmaW5lIElYUDRY WF9HUElPX1NUWUxFX0FDVElWRV9ISUdIIMKgMHgwCj4gKyNkZWZpbmUgSVhQNFhYX0dQSU9fU1RZ TEVfQUNUSVZFX0xPVyDCoCAweDEKPiArI2RlZmluZSBJWFA0WFhfR1BJT19TVFlMRV9SSVNJTkdf RURHRSDCoDB4Mgo+ICsjZGVmaW5lIElYUDRYWF9HUElPX1NUWUxFX0ZBTExJTkdfRURHRSAweDMK PiArI2RlZmluZSBJWFA0WFhfR1BJT19TVFlMRV9UUkFOU0lUSU9OQUwgMHg0Cj4gKwo+ICsvKiBN YXNrIHVzZWQgdG8gY2xlYXIgaW50ZXJydXB0IHN0eWxlcyAqLwo+ICsjZGVmaW5lIElYUDRYWF9H UElPX1NUWUxFX0NMRUFSIMKgIMKgIMKgIMKgMHg3Cj4gKyNkZWZpbmUgSVhQNFhYX0dQSU9fU1RZ TEVfU0laRSDCoCDCoCDCoCDCoCAzCj4gKwo+ICsvKiBPcGVyYXRpbmcgU3lzdGVtIFRpbWVyIFJl Z2lzdGVyIERlZmluaXRpb25zLiAqLwo+ICsjZGVmaW5lIElYUDRYWF9PU1RTIMKgIMKgIMKgIMKg IMKgSVhQNFhYX1JFRygweEM4MDA1MDAwKSAvKiBDb250aW5pb3VzIFRpbWVTdGFtcCAqLwo+ICsj ZGVmaW5lIElYUDRYWF9PU1QxIMKgIMKgIMKgIMKgIMKgSVhQNFhYX1JFRygweEM4MDA1MDA0KSAv KiBUaW1lciAxIFRpbWVzdGFtcCAqLwo+ICsjZGVmaW5lIElYUDRYWF9PU1JUMSDCoCDCoCDCoCDC oCBJWFA0WFhfUkVHKDB4QzgwMDUwMDgpIC8qIFRpbWVyIDEgUmVsb2FkICovCj4gKyNkZWZpbmUg SVhQNFhYX09TVDIgwqAgwqAgwqAgwqAgwqBJWFA0WFhfUkVHKDB4QzgwMDUwMEMpIC8qIFRpbWVy IDIgVGltZXN0YW1wICovCj4gKyNkZWZpbmUgSVhQNFhYX09TUlQyIMKgIMKgIMKgIMKgIElYUDRY WF9SRUcoMHhDODAwNTAxMCkgLyogVGltZXIgMiBSZWxvYWQgKi8KPiArI2RlZmluZSBJWFA0WFhf T1NXVCDCoCDCoCDCoCDCoCDCoElYUDRYWF9SRUcoMHhDODAwNTAxNCkgLyogV2F0Y2hkb2cgVGlt ZXIgKi8KPiArI2RlZmluZSBJWFA0WFhfT1NXRSDCoCDCoCDCoCDCoCDCoElYUDRYWF9SRUcoMHhD ODAwNTAxOCkgLyogV2F0Y2hkb2cgRW5hYmxlICovCj4gKyNkZWZpbmUgSVhQNFhYX09TV0sgwqAg wqAgwqAgwqAgwqBJWFA0WFhfUkVHKDB4QzgwMDUwMUMpIC8qIFdhdGNoZG9nIEtleSAqLwo+ICsj ZGVmaW5lIElYUDRYWF9PU1NUIMKgIMKgIMKgIMKgIMKgSVhQNFhYX1JFRygweEM4MDA1MDIwKSAv KiBUaW1lciBTdGF0dXMgKi8KPiArCj4gKy8qIFRpbWVyIHJlZ2lzdGVyIHZhbHVlcyBhbmQgYml0 IGRlZmluaXRpb25zICovCj4gKyNkZWZpbmUgSVhQNFhYX09TVF9FTkFCTEUgwqAgwqAgwqAgwqAg wqAgwqAweDAwMDAwMDAxCj4gKyNkZWZpbmUgSVhQNFhYX09TVF9PTkVfU0hPVCDCoCDCoCDCoCDC oCDCoDB4MDAwMDAwMDIKPiArLyogTG93IG9yZGVyIGJpdHMgb2YgcmVsb2FkIHZhbHVlIGlnbm9y ZWQgKi8KPiArI2RlZmluZSBJWFA0WFhfT1NUX1JFTE9BRF9NQVNLIMKgIMKgIMKgIDB4MDAwMDAw MDMKPiArI2RlZmluZSBJWFA0WFhfT1NUX0RJU0FCTEVEIMKgIMKgIMKgIMKgIMKgMHgwMDAwMDAw MAo+ICsjZGVmaW5lIElYUDRYWF9PU1NUX1RJTUVSXzFfUEVORCDCoCDCoCAweDAwMDAwMDAxCj4g KyNkZWZpbmUgSVhQNFhYX09TU1RfVElNRVJfMl9QRU5EIMKgIMKgIDB4MDAwMDAwMDIKPiArI2Rl ZmluZSBJWFA0WFhfT1NTVF9USU1FUl9UU19QRU5EIMKgIMKgMHgwMDAwMDAwNAo+ICsjZGVmaW5l IElYUDRYWF9PU1NUX1RJTUVSX1dET0dfUEVORCDCoDB4MDAwMDAwMDgKPiArI2RlZmluZSBJWFA0 WFhfT1NTVF9USU1FUl9XQVJNX1JFU0VUIDB4MDAwMDAwMTAKPiArCj4gKyNkZWZpbmUgSVhQNFhY X1dEVF9LRVkgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMHgwMDAwNDgyRQo+ICsKPiArI2RlZmluZSBJ WFA0WFhfV0RUX1JFU0VUX0VOQUJMRSDCoCDCoCDCoDB4MDAwMDAwMDEKPiArI2RlZmluZSBJWFA0 WFhfV0RUX0lSUV9FTkFCTEUgwqAgwqAgwqAgwqAweDAwMDAwMDAyCj4gKyNkZWZpbmUgSVhQNFhY X1dEVF9DT1VOVF9FTkFCTEUgwqAgwqAgwqAweDAwMDAwMDA0Cj4gKwo+ICsKPiArLyogQ29uc3Rh bnRzIHRvIG1ha2UgaXQgZWFzeSB0byBhY2Nlc3MgUENJIENvbnRyb2wvU3RhdHVzIHJlZ2lzdGVy cyAqLwo+ICsjZGVmaW5lIFBDSV9OUF9BRF9PRkZTRVQgwqAgwqAgwqAgwqAgwqAgMHgwMAo+ICsj ZGVmaW5lIFBDSV9OUF9DQkVfT0ZGU0VUIMKgIMKgIMKgIMKgIMKgMHgwNAo+ICsjZGVmaW5lIFBD SV9OUF9XREFUQV9PRkZTRVQgwqAgwqAgwqAgwqAweDA4Cj4gKyNkZWZpbmUgUENJX05QX1JEQVRB X09GRlNFVCDCoCDCoCDCoCDCoDB4MGMKPiArI2RlZmluZSBQQ0lfQ1JQX0FEX0NCRV9PRkZTRVQg wqAgwqAgwqAweDEwCj4gKyNkZWZpbmUgUENJX0NSUF9XREFUQV9PRkZTRVQgwqAgwqAgwqAgMHgx NAo+ICsjZGVmaW5lIFBDSV9DUlBfUkRBVEFfT0ZGU0VUIMKgIMKgIMKgIDB4MTgKPiArI2RlZmlu ZSBQQ0lfQ1NSX09GRlNFVCDCoCDCoCDCoCDCoCDCoCDCoCAweDFjCj4gKyNkZWZpbmUgUENJX0lT Ul9PRkZTRVQgwqAgwqAgwqAgwqAgwqAgwqAgMHgyMAo+ICsjZGVmaW5lIFBDSV9JTlRFTl9PRkZT RVQgwqAgwqAgwqAgwqAgwqAgMHgyNAo+ICsjZGVmaW5lIFBDSV9ETUFDVFJMX09GRlNFVCDCoCDC oCDCoCDCoCAweDI4Cj4gKyNkZWZpbmUgUENJX0FIQk1FTUJBU0VfT0ZGU0VUIMKgIMKgIMKgMHgy Ywo+ICsjZGVmaW5lIFBDSV9BSEJJT0JBU0VfT0ZGU0VUIMKgIMKgIMKgIDB4MzAKPiArI2RlZmlu ZSBQQ0lfUENJTUVNQkFTRV9PRkZTRVQgwqAgwqAgwqAweDM0Cj4gKyNkZWZpbmUgUENJX0FIQkRP T1JCRUxMX09GRlNFVCDCoCDCoCAweDM4Cj4gKyNkZWZpbmUgUENJX1BDSURPT1JCRUxMX09GRlNF VCDCoCDCoCAweDNDCj4gKyNkZWZpbmUgUENJX0FUUERNQTBfQUhCQUREUl9PRkZTRVQgMHg0MAo+ ICsjZGVmaW5lIFBDSV9BVFBETUEwX1BDSUFERFJfT0ZGU0VUIDB4NDQKPiArI2RlZmluZSBQQ0lf QVRQRE1BMF9MRU5BRERSX09GRlNFVCAweDQ4Cj4gKyNkZWZpbmUgUENJX0FUUERNQTFfQUhCQURE Ul9PRkZTRVQgMHg0Qwo+ICsjZGVmaW5lIFBDSV9BVFBETUExX1BDSUFERFJfT0ZGU0VUIDB4NTAK PiArI2RlZmluZSBQQ0lfQVRQRE1BMV9MRU5BRERSX09GRlNFVCAweDU0Cj4gKwo+ICsvKiBQQ0kg Q29udHJvbC9TdGF0dXMgUmVnaXN0ZXJzICovCj4gKyNkZWZpbmUgSVhQNFhYX1BDSV9DU1IoeCkg KCh2b2xhdGlsZSB1MzIgKikoSVhQNFhYX1BDSV9DRkdfQkFTRSArICh4KSkpCj4gKwo+ICsjZGVm aW5lIFBDSV9OUF9BRCDCoCDCoCDCoCDCoCDCoCDCoElYUDRYWF9QQ0lfQ1NSKFBDSV9OUF9BRF9P RkZTRVQpCj4gKyNkZWZpbmUgUENJX05QX0NCRSDCoCDCoCDCoCDCoCDCoCBJWFA0WFhfUENJX0NT UihQQ0lfTlBfQ0JFX09GRlNFVCkKPiArI2RlZmluZSBQQ0lfTlBfV0RBVEEgwqAgwqAgwqAgwqAg SVhQNFhYX1BDSV9DU1IoUENJX05QX1dEQVRBX09GRlNFVCkKPiArI2RlZmluZSBQQ0lfTlBfUkRB VEEgwqAgwqAgwqAgwqAgSVhQNFhYX1BDSV9DU1IoUENJX05QX1JEQVRBX09GRlNFVCkKPiArI2Rl ZmluZSBQQ0lfQ1JQX0FEX0NCRSDCoCDCoCDCoCBJWFA0WFhfUENJX0NTUihQQ0lfQ1JQX0FEX0NC RV9PRkZTRVQpCj4gKyNkZWZpbmUgUENJX0NSUF9XREFUQSDCoCDCoCDCoCDCoElYUDRYWF9QQ0lf Q1NSKFBDSV9DUlBfV0RBVEFfT0ZGU0VUKQo+ICsjZGVmaW5lIFBDSV9DUlBfUkRBVEEgwqAgwqAg wqAgwqBJWFA0WFhfUENJX0NTUihQQ0lfQ1JQX1JEQVRBX09GRlNFVCkKPiArI2RlZmluZSBQQ0lf Q1NSIMKgIMKgIMKgIMKgIMKgIMKgIMKgSVhQNFhYX1BDSV9DU1IoUENJX0NTUl9PRkZTRVQpCj4g KyNkZWZpbmUgUENJX0lTUiDCoCDCoCDCoCDCoCDCoCDCoCDCoElYUDRYWF9QQ0lfQ1NSKFBDSV9J U1JfT0ZGU0VUKQo+ICsjZGVmaW5lIFBDSV9JTlRFTiDCoCDCoCDCoCDCoCDCoCDCoElYUDRYWF9Q Q0lfQ1NSKFBDSV9JTlRFTl9PRkZTRVQpCj4gKyNkZWZpbmUgUENJX0RNQUNUUkwgwqAgwqAgwqAg wqAgwqBJWFA0WFhfUENJX0NTUihQQ0lfRE1BQ1RSTF9PRkZTRVQpCj4gKyNkZWZpbmUgUENJX0FI Qk1FTUJBU0UgwqAgwqAgwqAgSVhQNFhYX1BDSV9DU1IoUENJX0FIQk1FTUJBU0VfT0ZGU0VUKQo+ ICsjZGVmaW5lIFBDSV9BSEJJT0JBU0UgwqAgwqAgwqAgwqBJWFA0WFhfUENJX0NTUihQQ0lfQUhC SU9CQVNFX09GRlNFVCkKPiArI2RlZmluZSBQQ0lfUENJTUVNQkFTRSDCoCDCoCDCoCBJWFA0WFhf UENJX0NTUihQQ0lfUENJTUVNQkFTRV9PRkZTRVQpCj4gKyNkZWZpbmUgUENJX0FIQkRPT1JCRUxM IMKgIMKgIMKgSVhQNFhYX1BDSV9DU1IoUENJX0FIQkRPT1JCRUxMX09GRlNFVCkKPiArI2RlZmlu ZSBQQ0lfUENJRE9PUkJFTEwgwqAgwqAgwqBJWFA0WFhfUENJX0NTUihQQ0lfUENJRE9PUkJFTExf T0ZGU0VUKQo+ICsjZGVmaW5lIFBDSV9BVFBETUEwX0FIQkFERFIgwqBJWFA0WFhfUENJX0NTUihQ Q0lfQVRQRE1BMF9BSEJBRERSX09GRlNFVCkKPiArI2RlZmluZSBQQ0lfQVRQRE1BMF9QQ0lBRERS IMKgSVhQNFhYX1BDSV9DU1IoUENJX0FUUERNQTBfUENJQUREUl9PRkZTRVQpCj4gKyNkZWZpbmUg UENJX0FUUERNQTBfTEVOQUREUiDCoElYUDRYWF9QQ0lfQ1NSKFBDSV9BVFBETUEwX0xFTkFERFJf T0ZGU0VUKQo+ICsjZGVmaW5lIFBDSV9BVFBETUExX0FIQkFERFIgwqBJWFA0WFhfUENJX0NTUihQ Q0lfQVRQRE1BMV9BSEJBRERSX09GRlNFVCkKPiArI2RlZmluZSBQQ0lfQVRQRE1BMV9QQ0lBRERS IMKgSVhQNFhYX1BDSV9DU1IoUENJX0FUUERNQTFfUENJQUREUl9PRkZTRVQpCj4gKyNkZWZpbmUg UENJX0FUUERNQTFfTEVOQUREUiDCoElYUDRYWF9QQ0lfQ1NSKFBDSV9BVFBETUExX0xFTkFERFJf T0ZGU0VUKQo+ICsKPiArLyogUENJIHJlZ2lzdGVyIHZhbHVlcyBhbmQgYml0IGRlZmluaXRpb25z ICovCj4gKwo+ICsvKiBDU1IgYml0IGRlZmluaXRpb25zICovCj4gKyNkZWZpbmUgUENJX0NTUl9I T1NUIMKgIMKgIMKgIMKgIDB4MDAwMDAwMDEKPiArI2RlZmluZSBQQ0lfQ1NSX0FSQkVOIMKgIMKg IMKgIMKgMHgwMDAwMDAwMgo+ICsjZGVmaW5lIFBDSV9DU1JfQURTIMKgIMKgIMKgIMKgIMKgMHgw MDAwMDAwNAo+ICsjZGVmaW5lIFBDSV9DU1JfUERTIMKgIMKgIMKgIMKgIMKgMHgwMDAwMDAwOAo+ ICsjZGVmaW5lIFBDSV9DU1JfQUJFIMKgIMKgIMKgIMKgIMKgMHgwMDAwMDAxMAo+ICsjZGVmaW5l IFBDSV9DU1JfREJUIMKgIMKgIMKgIMKgIMKgMHgwMDAwMDAyMAo+ICsjZGVmaW5lIFBDSV9DU1Jf QVNFIMKgIMKgIMKgIMKgIMKgMHgwMDAwMDEwMAo+ICsjZGVmaW5lIFBDSV9DU1JfSUMgwqAgwqAg wqAgwqAgwqAgMHgwMDAwODAwMAo+ICsKPiArLyogSVNSIChJbnRlcnJ1cHQgc3RhdHVzKSBSZWdp c3RlciBiaXQgZGVmaW5pdGlvbnMgKi8KPiArI2RlZmluZSBQQ0lfSVNSX1BTRSDCoCDCoCDCoCDC oCDCoDB4MDAwMDAwMDEKPiArI2RlZmluZSBQQ0lfSVNSX1BGRSDCoCDCoCDCoCDCoCDCoDB4MDAw MDAwMDIKPiArI2RlZmluZSBQQ0lfSVNSX1BQRSDCoCDCoCDCoCDCoCDCoDB4MDAwMDAwMDQKPiAr I2RlZmluZSBQQ0lfSVNSX0FIQkUgwqAgwqAgwqAgwqAgMHgwMDAwMDAwOAo+ICsjZGVmaW5lIFBD SV9JU1JfQVBEQyDCoCDCoCDCoCDCoCAweDAwMDAwMDEwCj4gKyNkZWZpbmUgUENJX0lTUl9QQURD IMKgIMKgIMKgIMKgIDB4MDAwMDAwMjAKPiArI2RlZmluZSBQQ0lfSVNSX0FEQiDCoCDCoCDCoCDC oCDCoDB4MDAwMDAwNDAKPiArI2RlZmluZSBQQ0lfSVNSX1BEQiDCoCDCoCDCoCDCoCDCoDB4MDAw MDAwODAKPiArCj4gKy8qIElOVEVOIChJbnRlcnJ1cHQgRW5hYmxlKSBSZWdpc3RlciBiaXQgZGVm aW5pdGlvbnMgKi8KPiArI2RlZmluZSBQQ0lfSU5URU5fUFNFIMKgIMKgIMKgIMKgMHgwMDAwMDAw MQo+ICsjZGVmaW5lIFBDSV9JTlRFTl9QRkUgwqAgwqAgwqAgwqAweDAwMDAwMDAyCj4gKyNkZWZp bmUgUENJX0lOVEVOX1BQRSDCoCDCoCDCoCDCoDB4MDAwMDAwMDQKPiArI2RlZmluZSBQQ0lfSU5U RU5fQUhCRSDCoCDCoCDCoCAweDAwMDAwMDA4Cj4gKyNkZWZpbmUgUENJX0lOVEVOX0FQREMgwqAg wqAgwqAgMHgwMDAwMDAxMAo+ICsjZGVmaW5lIFBDSV9JTlRFTl9QQURDIMKgIMKgIMKgIDB4MDAw MDAwMjAKPiArI2RlZmluZSBQQ0lfSU5URU5fQURCIMKgIMKgIMKgIMKgMHgwMDAwMDA0MAo+ICsj ZGVmaW5lIFBDSV9JTlRFTl9QREIgwqAgwqAgwqAgwqAweDAwMDAwMDgwCj4gKwo+ICsvKiBTaGlm dCB2YWx1ZSBmb3IgYnl0ZSBlbmFibGUgb24gTlAgY21kL2J5dGUgZW5hYmxlIHJlZ2lzdGVyICov Cj4gKyNkZWZpbmUgSVhQNFhYX1BDSV9OUF9DQkVfQkVTTCA0Cj4gKwo+ICsvKiBQQ0kgY29tbWFu ZHMgc3VwcG9ydGVkIGJ5IE5QIGFjY2VzcyB1bml0ICovCj4gKyNkZWZpbmUgTlBfQ01EX0lPUkVB RCDCoCDCoCDCoCDCoDB4Mgo+ICsjZGVmaW5lIE5QX0NNRF9JT1dSSVRFIMKgIMKgIMKgIDB4Mwo+ ICsjZGVmaW5lIE5QX0NNRF9DT05GSUdSRUFEIMKgIMKgMHhBCj4gKyNkZWZpbmUgTlBfQ01EX0NP TkZJR1dSSVRFIMKgIDB4Qgo+ICsjZGVmaW5lIE5QX0NNRF9NRU1SRUFEIMKgIMKgIMKgIDB4Ngo+ ICsjZGVmaW5lIE5QX0NNRF9NRU1XUklURSDCoCDCoCDCoDB4Nwo+ICsKPiArLyogQ29uc3RhbnRz IGZvciBDUlAgYWNjZXNzIGludG8gbG9jYWwgY29uZmlnIHNwYWNlICovCj4gKyNkZWZpbmUgQ1JQ X0FEX0NCRV9CRVNMIMKgIMKgIMKgMjAKPiArI2RlZmluZSBDUlBfQURfQ0JFX1dSSVRFIMKgIMKg IDB4MDAwMTAwMDAKPiArCj4gKy8qIFVTQiBEZXZpY2UgQ29udHJvbGxlciAqLwo+ICsjIGRlZmlu ZSBJWFA0WFhfVVNCX1JFRyh4KSDCoCAoKigodm9sYXRpbGUgdTMyICopKHgpKSkKPiArCj4gKy8q IFNEUkFNIENvbnRyb2xsZXIgcmVnaXN0ZXJzLiAqLwo+ICsjZGVmaW5lIElYUDRYWF9TRFJBTV9D T05GSUcgwqBJWFA0WFhfUkVHKDB4Q0MwMDAwMDApCj4gKyNkZWZpbmUgSVhQNFhYX1NEUkFNX1JF RlJFU0ggSVhQNFhYX1JFRygweENDMDAwMDA0KQo+ICsjZGVmaW5lIElYUDRYWF9TRFJBTV9JUiDC oCDCoCDCoElYUDRYWF9SRUcoMHhDQzAwMDAwOCkKPiArCj4gKy8qICJmdXNlIiBiaXRzIG9mIElY UF9FWFBfQ0ZHMiAqLwo+ICsvKiBBbGwgSVhQNHh4IENQVXMgKi8KPiArI2RlZmluZSBJWFA0WFhf RkVBVFVSRV9SQ09NUCDCoCDCoCDCoCDCoCDCoCDCoCgxIDw8IDApCj4gKyNkZWZpbmUgSVhQNFhY X0ZFQVRVUkVfVVNCX0RFVklDRSDCoCDCoCDCoCAoMSA8PCAxKQo+ICsjZGVmaW5lIElYUDRYWF9G RUFUVVJFX0hBU0ggwqAgwqAgwqAgwqAgwqAgwqAgKDEgPDwgMikKPiArI2RlZmluZSBJWFA0WFhf RkVBVFVSRV9BRVMgwqAgwqAgwqAgwqAgwqAgwqAgwqAoMSA8PCAzKQo+ICsjZGVmaW5lIElYUDRY WF9GRUFUVVJFX0RFUyDCoCDCoCDCoCDCoCDCoCDCoCDCoCgxIDw8IDQpCj4gKyNkZWZpbmUgSVhQ NFhYX0ZFQVRVUkVfSERMQyDCoCDCoCDCoCDCoCDCoCDCoCAoMSA8PCA1KQo+ICsjZGVmaW5lIElY UDRYWF9GRUFUVVJFX0FBTCDCoCDCoCDCoCDCoCDCoCDCoCDCoCgxIDw8IDYpCj4gKyNkZWZpbmUg SVhQNFhYX0ZFQVRVUkVfSFNTIMKgIMKgIMKgIMKgIMKgIMKgIMKgKDEgPDwgNykKPiArI2RlZmlu ZSBJWFA0WFhfRkVBVFVSRV9VVE9QSUEgwqAgwqAgwqAgwqAgwqAgKDEgPDwgOCkKPiArI2RlZmlu ZSBJWFA0WFhfRkVBVFVSRV9OUEVCX0VUSDAgwqAgwqAgwqAgwqAoMSA8PCA5KQo+ICsjZGVmaW5l IElYUDRYWF9GRUFUVVJFX05QRUNfRVRIIMKgIMKgIMKgIMKgICgxIDw8IDEwKQo+ICsjZGVmaW5l IElYUDRYWF9GRUFUVVJFX1JFU0VUX05QRUEgwqAgwqAgwqAgKDEgPDwgMTEpCj4gKyNkZWZpbmUg SVhQNFhYX0ZFQVRVUkVfUkVTRVRfTlBFQiDCoCDCoCDCoCAoMSA8PCAxMikKPiArI2RlZmluZSBJ WFA0WFhfRkVBVFVSRV9SRVNFVF9OUEVDIMKgIMKgIMKgICgxIDw8IDEzKQo+ICsjZGVmaW5lIElY UDRYWF9GRUFUVVJFX1BDSSDCoCDCoCDCoCDCoCDCoCDCoCDCoCgxIDw8IDE0KQo+ICsjZGVmaW5l IElYUDRYWF9GRUFUVVJFX1VUT1BJQV9QSFlfTElNSVQgKDMgPDwgMTYpCj4gKyNkZWZpbmUgSVhQ NFhYX0ZFQVRVUkVfWFNDQUxFX01BWF9GUkVRIMKgKDMgPDwgMjIpCj4gKyNkZWZpbmUgSVhQNDJY X0ZFQVRVUkVfTUFTSyAoSVhQNFhYX0ZFQVRVUkVfUkNPTVAgwqAgwqAgwqAgwqAgwqAgwqB8IFwK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgSVhQNFhYX0ZFQVRV UkVfVVNCX0RFVklDRSDCoCDCoCDCoCB8IFwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgSVhQNFhYX0ZFQVRVUkVfSEFTSCDCoCDCoCDCoCDCoCDCoCDCoCB8IFwK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgSVhQNFhYX0ZFQVRV UkVfQUVTIMKgIMKgIMKgIMKgIMKgIMKgIMKgfCBcCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoElYUDRYWF9GRUFUVVJFX0RFUyDCoCDCoCDCoCDCoCDCoCDCoCDC oHwgXAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBJWFA0WFhf RkVBVFVSRV9IRExDIMKgIMKgIMKgIMKgIMKgIMKgIHwgXAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBJWFA0WFhfRkVBVFVSRV9BQUwgwqAgwqAgwqAgwqAgwqAg wqAgwqB8IFwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgSVhQ NFhYX0ZFQVRVUkVfSFNTIMKgIMKgIMKgIMKgIMKgIMKgIMKgfCBcCj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoElYUDRYWF9GRUFUVVJFX1VUT1BJQSDCoCDCoCDC oCDCoCDCoCB8IFwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg SVhQNFhYX0ZFQVRVUkVfTlBFQl9FVEgwIMKgIMKgIMKgIMKgfCBcCj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoElYUDRYWF9GRUFUVVJFX05QRUNfRVRIIMKgIMKg IMKgIMKgIHwgXAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBJ WFA0WFhfRkVBVFVSRV9SRVNFVF9OUEVBIMKgIMKgIMKgIHwgXAo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBJWFA0WFhfRkVBVFVSRV9SRVNFVF9OUEVCIMKgIMKg IMKgIHwgXAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBJWFA0 WFhfRkVBVFVSRV9SRVNFVF9OUEVDIMKgIMKgIMKgIHwgXAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBJWFA0WFhfRkVBVFVSRV9QQ0kgwqAgwqAgwqAgwqAgwqAg wqAgwqB8IFwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgSVhQ NFhYX0ZFQVRVUkVfVVRPUElBX1BIWV9MSU1JVCB8IFwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgSVhQNFhYX0ZFQVRVUkVfWFNDQUxFX01BWF9GUkVRKQo+ICsK PiArLyogSVhQNDN4LzQ2eCBDUFVzICovCj4gKyNkZWZpbmUgSVhQNFhYX0ZFQVRVUkVfRUNDX1RJ TUVTWU5DIMKgIMKgICgxIDw8IDE1KQo+ICsjZGVmaW5lIElYUDRYWF9GRUFUVVJFX1VTQl9IT1NU IMKgIMKgIMKgIMKgICgxIDw8IDE4KQo+ICsjZGVmaW5lIElYUDRYWF9GRUFUVVJFX05QRUFfRVRI IMKgIMKgIMKgIMKgICgxIDw8IDE5KQo+ICsjZGVmaW5lIElYUDQzWF9GRUFUVVJFX01BU0sgKElY UDQyWF9GRUFUVVJFX01BU0sgwqAgwqAgwqAgwqAgwqAgwqAgfCBcCj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoElYUDRYWF9GRUFUVVJFX0VDQ19USU1FU1lOQyDC oCDCoCB8IFwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgSVhQ NFhYX0ZFQVRVUkVfVVNCX0hPU1QgwqAgwqAgwqAgwqAgfCBcCj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoElYUDRYWF9GRUFUVVJFX05QRUFfRVRIKQo+ICsKPiAr LyogSVhQNDZ4IENQVSAoaW5jbHVkaW5nIElYUDQ1NSkgb25seSAqLwo+ICsjZGVmaW5lIElYUDRY WF9GRUFUVVJFX05QRUJfRVRIXzFfVE9fMyDCoCgxIDw8IDIwKQo+ICsjZGVmaW5lIElYUDRYWF9G RUFUVVJFX1JTQSDCoCDCoCDCoCDCoCDCoCDCoCDCoCgxIDw8IDIxKQo+ICsjZGVmaW5lIElYUDQ2 WF9GRUFUVVJFX01BU0sgKElYUDQzWF9GRUFUVVJFX01BU0sgwqAgwqAgwqAgwqAgwqAgwqAgfCBc Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoElYUDRYWF9GRUFU VVJFX05QRUJfRVRIXzFfVE9fMyDCoHwgXAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqBJWFA0WFhfRkVBVFVSRV9SU0EpCj4gKwo+ICsjZW5kaWYKPiBkaWZmIC0t Z2l0IGEvYXJjaC9hcm0vbWFjaC1peHA0eHgvaW5jbHVkZS9tYWNoL25wZS5oIGIvYXJjaC9hcm0v bWFjaC1peHA0eHgvaW5jbHVkZS9tYWNoL25wZS5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBp bmRleCAwMDAwMDAwLi4xOGJkMDFiCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2FyY2gvYXJtL21h Y2gtaXhwNHh4L2luY2x1ZGUvbWFjaC9ucGUuaAo+IEBAIC0wLDAgKzEsMzAgQEAKPiArI2lmbmRl ZiBfX0lYUDRYWF9OUEVfSAo+ICsjZGVmaW5lIF9fSVhQNFhYX05QRV9ICj4gKwo+ICsjaW5jbHVk ZSA8Y29tbW9uLmg+Cj4gKwo+ICsjZGVmaW5lIE5QRV9OQU1FX0xFTkdUSCA1Cj4gKwo+ICtzdHJ1 Y3QgbnBlX3JlZ3Mgewo+ICsgwqAgwqAgwqAgdTMyIGV4ZWNfYWRkciwgZXhlY19kYXRhLCBleGVj X3N0YXR1c19jbWQsIGV4ZWNfY291bnQ7Cj4gKyDCoCDCoCDCoCB1MzIgYWN0aW9uX3BvaW50c1s0 XTsKPiArIMKgIMKgIMKgIHUzMiB3YXRjaHBvaW50X2ZpZm8sIHdhdGNoX2NvdW50Owo+ICsgwqAg wqAgwqAgdTMyIHByb2ZpbGVfY291bnQ7Cj4gKyDCoCDCoCDCoCB1MzIgbWVzc2FnaW5nX3N0YXR1 cywgbWVzc2FnaW5nX2NvbnRyb2w7Cj4gKyDCoCDCoCDCoCB1MzIgbWFpbGJveF9zdGF0dXMsIC8q bWVzc2FnaW5nXyovIGluX291dF9maWZvOwo+ICt9Owo+ICsKPiArc3RydWN0IG5wZSB7Cj4gKyDC oCDCoCDCoCBzdHJ1Y3QgbnBlX3JlZ3MgKnJlZ3M7Cj4gKyDCoCDCoCDCoCBpbnQgaWQsIHZhbGlk Owo+ICsgwqAgwqAgwqAgY29uc3QgY2hhciBuYW1lW05QRV9OQU1FX0xFTkdUSCArIDFdOwo+ICt9 Owo+ICsKPiAraW50IG5wZV9ydW5uaW5nKHN0cnVjdCBucGUgKm5wZSk7Cj4gK2ludCBucGVfc2Vu ZF9tZXNzYWdlKHN0cnVjdCBucGUgKm5wZSwgY29uc3Qgdm9pZCAqbXNnLCBjb25zdCBjaGFyICp3 aGF0KTsKPiAraW50IG5wZV9yZWN2X21lc3NhZ2Uoc3RydWN0IG5wZSAqbnBlLCB2b2lkICptc2cs IGNvbnN0IGNoYXIgKndoYXQpOwo+ICtpbnQgbnBlX3NlbmRfcmVjdl9tZXNzYWdlKHN0cnVjdCBu cGUgKm5wZSwgdm9pZCAqbXNnLCBjb25zdCBjaGFyICp3aGF0KTsKPiAraW50IG5wZV9sb2FkX2Zp cm13YXJlKHN0cnVjdCBucGUgKm5wZSk7Cj4gK3N0cnVjdCBucGUgKm5wZV9yZXF1ZXN0KGludCBp ZCk7Cj4gKwo+ICsjZW5kaWYgLyogX19JWFA0WFhfTlBFX0ggKi8KPiBkaWZmIC0tZ2l0IGEvYXJj aC9hcm0vbWFjaC1peHA0eHgvaW5jbHVkZS9tYWNoL3BsYXRmb3JtLmggYi9hcmNoL2FybS9tYWNo LWl4cDR4eC9pbmNsdWRlL21hY2gvcGxhdGZvcm0uaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4g aW5kZXggMDAwMDAwMC4uMWRmNGFhNAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9hcmNoL2FybS9t YWNoLWl4cDR4eC9pbmNsdWRlL21hY2gvcGxhdGZvcm0uaAo+IEBAIC0wLDAgKzEsMTUgQEAKPiAr I2luY2x1ZGUgPGFzbS90eXBlcy5oPgo+ICsKPiArI2RlZmluZSBJWFA0WFhfRVRIX05QRUEgMHgw MAo+ICsjZGVmaW5lIElYUDRYWF9FVEhfTlBFQiAweDEwCj4gKyNkZWZpbmUgSVhQNFhYX0VUSF9O UEVDIDB4MjAKPiArCj4gKy8qIEluZm9ybWF0aW9uIGFib3V0IGJ1aWx0LWluIEV0aGVybmV0IE1B QyBpbnRlcmZhY2VzICovCj4gK3N0cnVjdCBldGhfcGxhdF9pbmZvIHsKPiArIMKgIMKgIMKgIHZv aWQgKnJlZ3M7Cj4gKyDCoCDCoCDCoCB1OCBucGU7Cj4gKyDCoCDCoCDCoCB1OCBwaHk7IC8qIE1J SSBQSFkgSUQsIDAgLSAzMSAqLwo+ICsgwqAgwqAgwqAgdTggcnhxOyAvKiBjb25maWd1cmFibGUs IGN1cnJlbnRseSAwIC0gMzEgb25seSAqLwo+ICsgwqAgwqAgwqAgdTggdHhyZWFkeXE7Cj4gKyDC oCDCoCDCoCB1OCBod2FkZHJbNl07Cj4gK307Cj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gt aXhwNHh4L2luY2x1ZGUvbWFjaC9xbWdyLmggYi9hcmNoL2FybS9tYWNoLWl4cDR4eC9pbmNsdWRl L21hY2gvcW1nci5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi40ZTli OGQ0Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2FyY2gvYXJtL21hY2gtaXhwNHh4L2luY2x1ZGUv bWFjaC9xbWdyLmgKPiBAQCAtMCwwICsxLDE2NCBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKEMp IDIwMDcgS3J6eXN6dG9mIEhhbGFzYSA8a2hjQHBtLndhdy5wbD4KPiArICoKPiArICogVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkgaXQKPiArICogdW5kZXIgdGhlIHRlcm1zIG9mIHZlcnNpb24gMiBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKPiArICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24uCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBJWFA0WFhfUU1HUl9ICj4gKyNk ZWZpbmUgSVhQNFhYX1FNR1JfSAo+ICsKPiArI2luY2x1ZGUgPGNvbW1vbi5oPgo+ICsjaW5jbHVk ZSA8bWFjaC9peHA0eHgtcmVncy5oPgo+ICsjaW5jbHVkZSA8YXNtL2lvLmg+Cj4gKwo+ICsjZGVm aW5lIERFQlVHX1FNR1IgwqAgwqAgwqAgMAo+ICsKPiArI2RlZmluZSBIQUxGX1FVRVVFUyDCoCDC oCAzMgo+ICsjZGVmaW5lIFFVRVVFUyDCoCDCoCDCoCDCoCDCoDY0Cj4gKyNkZWZpbmUgTUFYX1FV RVVFX0xFTkdUSCA0IC8qIGluIGR3b3JkcyAqLwo+ICsKPiArI2RlZmluZSBRVUVVRV9TVEFUMV9F TVBUWSDCoCDCoCDCoCDCoCDCoCDCoCDCoCAxIC8qIHF1ZXVlIHN0YXR1cyBiaXRzICovCj4gKyNk ZWZpbmUgUVVFVUVfU1RBVDFfTkVBUkxZX0VNUFRZIMKgIMKgIMKgIMKgMgo+ICsjZGVmaW5lIFFV RVVFX1NUQVQxX05FQVJMWV9GVUxMIMKgIMKgIMKgIMKgIDQKPiArI2RlZmluZSBRVUVVRV9TVEFU MV9GVUxMIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgOAo+ICsjZGVmaW5lIFFVRVVFX1NUQVQyX1VO REVSRkxPVyDCoCDCoCDCoCDCoCDCoCAxCj4gKyNkZWZpbmUgUVVFVUVfU1RBVDJfT1ZFUkZMT1cg wqAgwqAgwqAgwqAgwqAgwqAyCj4gKwo+ICsjZGVmaW5lIFFVRVVFX1dBVEVSTUFSS18wX0VOVFJJ RVMgwqAgwqAgwqAgMAo+ICsjZGVmaW5lIFFVRVVFX1dBVEVSTUFSS18xX0VOVFJZIMKgIMKgIMKg IMKgIDEKPiArI2RlZmluZSBRVUVVRV9XQVRFUk1BUktfMl9FTlRSSUVTIMKgIMKgIMKgIDIKPiAr I2RlZmluZSBRVUVVRV9XQVRFUk1BUktfNF9FTlRSSUVTIMKgIMKgIMKgIDMKPiArI2RlZmluZSBR VUVVRV9XQVRFUk1BUktfOF9FTlRSSUVTIMKgIMKgIMKgIDQKPiArI2RlZmluZSBRVUVVRV9XQVRF Uk1BUktfMTZfRU5UUklFUyDCoCDCoCDCoDUKPiArI2RlZmluZSBRVUVVRV9XQVRFUk1BUktfMzJf RU5UUklFUyDCoCDCoCDCoDYKPiArI2RlZmluZSBRVUVVRV9XQVRFUk1BUktfNjRfRU5UUklFUyDC oCDCoCDCoDcKPiArCj4gKy8qIHF1ZXVlIGludGVycnVwdCByZXF1ZXN0IGNvbmRpdGlvbnMgKi8K PiArI2RlZmluZSBRVUVVRV9JUlFfU1JDX0VNUFRZIMKgIMKgIMKgIMKgIMKgIMKgIDAKPiArI2Rl ZmluZSBRVUVVRV9JUlFfU1JDX05FQVJMWV9FTVBUWSDCoCDCoCDCoDEKPiArI2RlZmluZSBRVUVV RV9JUlFfU1JDX05FQVJMWV9GVUxMIMKgIMKgIMKgIDIKPiArI2RlZmluZSBRVUVVRV9JUlFfU1JD X0ZVTEwgwqAgwqAgwqAgwqAgwqAgwqAgwqAzCj4gKyNkZWZpbmUgUVVFVUVfSVJRX1NSQ19OT1Rf RU1QVFkgwqAgwqAgwqAgwqAgNAo+ICsjZGVmaW5lIFFVRVVFX0lSUV9TUkNfTk9UX05FQVJMWV9F TVBUWSDCoDUKPiArI2RlZmluZSBRVUVVRV9JUlFfU1JDX05PVF9ORUFSTFlfRlVMTCDCoCA2Cj4g KyNkZWZpbmUgUVVFVUVfSVJRX1NSQ19OT1RfRlVMTCDCoCDCoCDCoCDCoCDCoDcKPiArCj4gK3N0 cnVjdCBxbWdyX3JlZ3Mgewo+ICsgwqAgwqAgwqAgdTMyIGFjY1tRVUVVRVNdW01BWF9RVUVVRV9M RU5HVEhdOyAvKiAweDAwMCAtIDB4M0ZGICovCj4gKyDCoCDCoCDCoCB1MzIgc3RhdDFbNF07IMKg IMKgIMKgIMKgIC8qIDB4NDAwIC0gMHg0MEYgKi8KPiArIMKgIMKgIMKgIHUzMiBzdGF0MlsyXTsg wqAgwqAgwqAgwqAgLyogMHg0MTAgLSAweDQxNyAqLwo+ICsgwqAgwqAgwqAgdTMyIHN0YXRuZV9o OyDCoCDCoCDCoCDCoCAvKiAweDQxOCAtIHF1ZXVlIG5lYXJseSBlbXB0eSAqLwo+ICsgwqAgwqAg wqAgdTMyIHN0YXRmX2g7IMKgIMKgIMKgIMKgIMKgLyogMHg0MUMgLSBxdWV1ZSBmdWxsICovCj4g KyDCoCDCoCDCoCB1MzIgaXJxc3JjWzRdOyDCoCDCoCDCoCDCoC8qIDB4NDIwIC0gMHg0MkYgSVJD IHNvdXJjZSAqLwo+ICsgwqAgwqAgwqAgdTMyIGlycWVuWzJdOyDCoCDCoCDCoCDCoCAvKiAweDQz MCAtIDB4NDM3IElSUSBlbmFibGVkICovCj4gKyDCoCDCoCDCoCB1MzIgaXJxc3RhdFsyXTsgwqAg wqAgwqAgLyogMHg0MzggLSAweDQzRiAtIElSUSBhY2Nlc3Mgb25seSAqLwo+ICsgwqAgwqAgwqAg dTMyIHJlc2VydmVkWzE3NzZdOwo+ICsgwqAgwqAgwqAgdTMyIHNyYW1bMjA0OF07IMKgIMKgIMKg IC8qIDB4MjAwMCAtIDB4M0ZGRiAtIGNvbmZpZyBhbmQgYnVmZmVyICovCj4gK307Cj4gKwo+ICtz dGF0aWMgY29uc3Qgc3RydWN0IHFtZ3JfcmVncyAqcW1ncl9yZWdzID0gKHN0cnVjdCBxbWdyX3Jl Z3MgKilJWFA0WFhfUU1HUl9CQVNFOwo+ICsKPiArdm9pZCBxbWdyX3NldF9pcnEodW5zaWduZWQg aW50IHF1ZXVlLCBpbnQgc3JjLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdm9pZCAoKmhh bmRsZXIpKHZvaWQgKnBkZXYpLCB2b2lkICpwZGV2KTsKPiArdm9pZCBxbWdyX2VuYWJsZV9pcnEo dW5zaWduZWQgaW50IHF1ZXVlKTsKPiArdm9pZCBxbWdyX2Rpc2FibGVfaXJxKHVuc2lnbmVkIGlu dCBxdWV1ZSk7Cj4gKwo+ICsvKiByZXF1ZXN0XyBhbmQgcmVsZWFzZV9xdWV1ZSgpIG11c3QgYmUg Y2FsbGVkIGZyb20gbm9uLUlSUSBjb250ZXh0ICovCj4gKwo+ICsjaWYgREVCVUdfUU1HUgo+ICtl eHRlcm4gY2hhciBxbWdyX3F1ZXVlX2Rlc2NzW0hBTEZfUVVFVUVTXVszMl07Cj4gKwo+ICt2b2lk IHFtZ3JfcmVxdWVzdF9xdWV1ZSh1bnNpZ25lZCBpbnQgcXVldWUsIHVuc2lnbmVkIGludCBsZW4g LyogZHdvcmRzICovLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdW5zaWdu ZWQgaW50IG5lYXJseV9lbXB0eV93YXRlcm1hcmssCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCB1bnNpZ25lZCBpbnQgbmVhcmx5X2Z1bGxfd2F0ZXJtYXJrLAo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29uc3QgY2hhciAqZGVzY19mb3JtYXQsIGNvbnN0 IGNoYXIqIG5hbWUpOwo+ICsjZWxzZQo+ICt2b2lkIF9fcW1ncl9yZXF1ZXN0X3F1ZXVlKHVuc2ln bmVkIGludCBxdWV1ZSwgdW5zaWduZWQgaW50IGxlbiAvKiBkd29yZHMgKi8sCj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1bnNpZ25lZCBpbnQgbmVhcmx5X2VtcHR5X3dh dGVybWFyaywKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVuc2lnbmVk IGludCBuZWFybHlfZnVsbF93YXRlcm1hcmspOwo+ICsjZGVmaW5lIHFtZ3JfcmVxdWVzdF9xdWV1 ZShxdWV1ZSwgbGVuLCBuZWFybHlfZW1wdHlfd2F0ZXJtYXJrLCDCoCDCoCDCoCBcCj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoG5lYXJseV9mdWxsX3dhdGVybWFyaywg ZGVzY19mb3JtYXQsIG5hbWUpIFwKPiArIMKgIMKgIMKgIF9fcW1ncl9yZXF1ZXN0X3F1ZXVlKHF1 ZXVlLCBsZW4sIG5lYXJseV9lbXB0eV93YXRlcm1hcmssIMKgIMKgIFwKPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgbmVhcmx5X2Z1bGxfd2F0ZXJtYXJrKQo+ICsj ZW5kaWYKPiArCj4gK3ZvaWQgcW1ncl9yZWxlYXNlX3F1ZXVlKHVuc2lnbmVkIGludCBxdWV1ZSk7 Cj4gKwo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkIHFtZ3JfcHV0X2VudHJ5KHVuc2lnbmVkIGlu dCBxdWV1ZSwgdTMyIHZhbCkKPiArewo+ICsjaWYgREVCVUdfUU1HUgo+ICsgwqAgwqAgwqAgQlVH X09OKCFxbWdyX3F1ZXVlX2Rlc2NzW3F1ZXVlXSk7IC8qIG5vdCB5ZXQgcmVxdWVzdGVkICovCj4g Kwo+ICsgwqAgwqAgwqAgZnByaW50ZihzdGRlcnIsICJRdWV1ZSAlcyglaSkgcHV0ICVYXG4iLAo+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcW1ncl9xdWV1ZV9kZXNjc1txdWV1ZV0sIHF1ZXVlLCB2 YWwpOwo+ICsjZW5kaWYKPiArIMKgIMKgIMKgIF9fcmF3X3dyaXRlbCh2YWwsICZxbWdyX3JlZ3Mt PmFjY1txdWV1ZV1bMF0pOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHUzMiBxbWdyX2dldF9l bnRyeSh1bnNpZ25lZCBpbnQgcXVldWUpCj4gK3sKPiArIMKgIMKgIMKgIHUzMiB2YWw7Cj4gKyDC oCDCoCDCoCB2YWwgPSBfX3Jhd19yZWFkbCgmcW1ncl9yZWdzLT5hY2NbcXVldWVdWzBdKTsKPiAr I2lmIERFQlVHX1FNR1IKPiArIMKgIMKgIMKgIEJVR19PTighcW1ncl9xdWV1ZV9kZXNjc1txdWV1 ZV0pOyAvKiBub3QgeWV0IHJlcXVlc3RlZCAqLwo+ICsKPiArIMKgIMKgIMKgIGZwcmludGYoc3Rk ZXJyLCAiUXVldWUgJXMoJWkpIGdldCAlWFxuIiwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHFt Z3JfcXVldWVfZGVzY3NbcXVldWVdLCBxdWV1ZSwgdmFsKTsKPiArI2VuZGlmCj4gKyDCoCDCoCDC oCByZXR1cm4gdmFsOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGludCBfX3FtZ3JfZ2V0X3N0 YXQxKHVuc2lnbmVkIGludCBxdWV1ZSkKPiArewo+ICsgwqAgwqAgwqAgcmV0dXJuIChfX3Jhd19y ZWFkbCgmcW1ncl9yZWdzLT5zdGF0MVtxdWV1ZSA+PiAzXSkKPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgID4+ICgocXVldWUgJiA3KSA8PCAyKSkgJiAweEY7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBx bWdyX3N0YXRfZW1wdHkoKSAtIGNoZWNrcyBpZiBhIGhhcmR3YXJlIHF1ZXVlIGlzIGVtcHR5Cj4g KyAqIEBxdWV1ZTogcXVldWUgbnVtYmVyCj4gKyAqCj4gKyAqIFJldHVybnMgbm9uLXplcm8gdmFs dWUgaWYgdGhlIHF1ZXVlIGlzIGVtcHR5Lgo+ICsgKi8KPiArc3RhdGljIGlubGluZSBpbnQgcW1n cl9zdGF0X2VtcHR5KHVuc2lnbmVkIGludCBxdWV1ZSkKPiArewo+ICsgwqAgwqAgwqAgcmV0dXJu IF9fcW1ncl9nZXRfc3RhdDEocXVldWUpICYgUVVFVUVfU1RBVDFfRU1QVFk7Cj4gK30KPiArCj4g Ky8qKgo+ICsgKiBxbWdyX3N0YXRfYmVsb3dfbG93X3dhdGVybWFyaygpIC0gY2hlY2tzIGlmIGEg cXVldWUgaXMgYmVsb3cgbG93IHdhdGVybWFyawo+ICsgKiBAcXVldWU6IHF1ZXVlIG51bWJlcgo+ ICsgKgo+ICsgKiBSZXR1cm5zIG5vbi16ZXJvIHZhbHVlIGlmIHRoZSBxdWV1ZSBpcyBiZWxvdyBs b3cgd2F0ZXJtYXJrLgo+ICsgKi8KPiArc3RhdGljIGlubGluZSBpbnQgcW1ncl9zdGF0X2JlbG93 X2xvd193YXRlcm1hcmsodW5zaWduZWQgaW50IHF1ZXVlKQo+ICt7Cj4gKyDCoCDCoCDCoCByZXR1 cm4gX19xbWdyX2dldF9zdGF0MShxdWV1ZSkgJiBRVUVVRV9TVEFUMV9ORUFSTFlfRU1QVFk7Cj4g K30KPiArCj4gKy8qKgo+ICsgKiBxbWdyX3N0YXRfYWJvdmVfaGlnaF93YXRlcm1hcmsoKSAtIGNo ZWNrcyBpZiBhIHF1ZXVlIGlzIGFib3ZlIGhpZ2ggd2F0ZXJtYXJrCj4gKyAqIEBxdWV1ZTogcXVl dWUgbnVtYmVyCj4gKyAqCj4gKyAqIFJldHVybnMgbm9uLXplcm8gdmFsdWUgaWYgdGhlIHF1ZXVl IGlzIGFib3ZlIGhpZ2ggd2F0ZXJtYXJrCj4gKyAqLwo+ICtzdGF0aWMgaW5saW5lIGludCBxbWdy X3N0YXRfYWJvdmVfaGlnaF93YXRlcm1hcmsodW5zaWduZWQgaW50IHF1ZXVlKQo+ICt7Cj4gKyDC oCDCoCDCoCByZXR1cm4gX19xbWdyX2dldF9zdGF0MShxdWV1ZSkgJiBRVUVVRV9TVEFUMV9ORUFS TFlfRlVMTDsKPiArfQo+ICsKPiArLyoqCj4gKyAqIHFtZ3Jfc3RhdF9mdWxsKCkgLSBjaGVja3Mg aWYgYSBoYXJkd2FyZSBxdWV1ZSBpcyBmdWxsCj4gKyAqIEBxdWV1ZTogcXVldWUgbnVtYmVyCj4g KyAqCj4gKyAqIFJldHVybnMgbm9uLXplcm8gdmFsdWUgaWYgdGhlIHF1ZXVlIGlzIGZ1bGwuCj4g KyAqLwo+ICtzdGF0aWMgaW5saW5lIGludCBxbWdyX3N0YXRfZnVsbCh1bnNpZ25lZCBpbnQgcXVl dWUpCj4gK3sKPiArIMKgIMKgIMKgIHJldHVybiBfX3FtZ3JfZ2V0X3N0YXQxKHF1ZXVlKSAmIFFV RVVFX1NUQVQxX0ZVTEw7Cj4gK30KPiArCj4gKyNlbmRpZgo+IGRpZmYgLS1naXQgYS9hcmNoL2Fy bS9tYWNoLWl4cDR4eC9sb3dsZXZlbF9pbml0LlMgYi9hcmNoL2FybS9tYWNoLWl4cDR4eC9sb3ds ZXZlbF9pbml0LlMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmE0ZTkz ZWYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvYXJjaC9hcm0vbWFjaC1peHA0eHgvbG93bGV2ZWxf aW5pdC5TCj4gQEAgLTAsMCArMSwxNyBAQAo+ICsjaW5jbHVkZSA8bWFjaC9peHA0eHgtcmVncy5o Pgo+ICsKPiArIMKgIMKgIMKgIC5zZWN0aW9uICIudGV4dF9iYXJlX2luaXQiLCAiYXgiCj4gKwo+ ICsgwqAgwqAgwqAgLmdsb2JsIGFyY2hfaW5pdF9sb3dsZXZlbAo+ICthcmNoX2luaXRfbG93bGV2 ZWw6Cj4gKyDCoCDCoCDCoCBsZHIgcjAsIGNmZwo+ICsgwqAgwqAgwqAgbGRyIHIxLCBbcjBdCj4g KyDCoCDCoCDCoCBhbmQgcjEsIHIxLCAjfjB4ODAwMDAwMDAgLyogdW5tYXAgRVhQIGJ1cyBmcm9t IDB4MCAqLwo+ICsgwqAgwqAgwqAgc3RyIHIxLCBbcjBdCj4gKwo+ICsgwqAgwqAgwqAgLyogcmV0 dXJuIHRvIFJPTSAqLwo+ICsgwqAgwqAgwqAgb3JyIGxyLCAjMHg1MDAwMDAwMAo+ICsgwqAgwqAg wqAgbW92IHBjLCBscgo+ICsKPiArY2ZnOgo+ICsgwqAgwqAgwqAgLndvcmQgSVhQNFhYX0VYUF9D RkcwCj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtaXhwNHh4L25wZS5jIGIvYXJjaC9hcm0v bWFjaC1peHA0eHgvbnBlLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAu LmE4ZGRkNWEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvYXJjaC9hcm0vbWFjaC1peHA0eHgvbnBl LmMKPiBAQCAtMCwwICsxLDY2OCBAQAo+ICsvKgo+ICsgKiBJbnRlbCBJWFA0eHggTmV0d29yayBQ cm9jZXNzb3IgRW5naW5lIGRyaXZlciBmb3IgTGludXgKPiArICoKPiArICogQ29weXJpZ2h0IChD KSAyMDA3IEtyenlzenRvZiBIYWxhc2EgPGtoY0BwbS53YXcucGw+Cj4gKyAqCj4gKyAqIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5IGl0Cj4gKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB2ZXJzaW9uIDIgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCj4gKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxjb21tb24uaD4KPiArI2lu Y2x1ZGUgPGVycm5vLmg+Cj4gKyNpbmNsdWRlIDxmcy5oPgo+ICsjaW5jbHVkZSA8aW5pdC5oPgo+ ICsjaW5jbHVkZSA8bWFsbG9jLmg+Cj4gKyNpbmNsdWRlIDxhc20vYnl0ZW9yZGVyLmg+Cj4gKyNp bmNsdWRlIDxhc20vaW8uaD4KPiArI2luY2x1ZGUgPG1hY2gvaXhwNHh4LXJlZ3MuaD4KPiArI2lu Y2x1ZGUgPG1hY2gvY3B1Lmg+Cj4gKyNpbmNsdWRlIDxtYWNoL25wZS5oPgo+ICsKPiArI2RlZmlu ZSBERUJVR19NU0cgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAwCj4gKyNkZWZpbmUg REVCVUdfRlcgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMAo+ICsKPiArI2RlZmlu ZSBOUEVfQ09VTlQgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAzCj4gKyNkZWZpbmUg TUFYX1JFVFJJRVMgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAxMDAwIMKgLyogbWljcm9z ZWNvbmRzICovCj4gKyNkZWZpbmUgTlBFXzQyWF9EQVRBX1NJWkUgwqAgwqAgwqAgwqAgwqAgwqAg wqAweDgwMCAvKiBpbiBkd29yZHMgKi8KPiArI2RlZmluZSBOUEVfNDZYX0RBVEFfU0laRSDCoCDC oCDCoCDCoCDCoCDCoCDCoDB4MTAwMAo+ICsjZGVmaW5lIE5QRV9BXzQyWF9JTlNUUl9TSVpFIMKg IMKgIMKgIMKgIMKgIDB4MTAwMAo+ICsjZGVmaW5lIE5QRV9CX0FORF9DXzQyWF9JTlNUUl9TSVpF IMKgIMKgIDB4ODAwCj4gKyNkZWZpbmUgTlBFXzQ2WF9JTlNUUl9TSVpFIMKgIMKgIMKgIMKgIMKg IMKgIDB4MTAwMAo+ICsjZGVmaW5lIFJFR1NfU0laRSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoDB4MTAwMAo+ICsKPiArI2RlZmluZSBOUEVfUEhZU19SRUcgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgMzIKPiArCj4gKyNkZWZpbmUgRldfTUFHSUMgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgMHhGRUVERjAwRAo+ICsjZGVmaW5lIEZXX0JMT0NLX1RZUEVfSU5TVFIg wqAgwqAgwqAgwqAgwqAgwqAweDAKPiArI2RlZmluZSBGV19CTE9DS19UWVBFX0RBVEEgwqAgwqAg wqAgwqAgwqAgwqAgMHgxCj4gKyNkZWZpbmUgRldfQkxPQ0tfVFlQRV9FT0YgwqAgwqAgwqAgwqAg wqAgwqAgwqAweEYKPiArCj4gKy8qIE5QRSBleGVjIHN0YXR1cyAocmVhZCkgYW5kIGNvbW1hbmQg KHdyaXRlKSAqLwo+ICsjZGVmaW5lIENNRF9OUEVfU1RFUCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCAweDAxCj4gKyNkZWZpbmUgQ01EX05QRV9TVEFSVCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoDB4MDIKPiArI2RlZmluZSBDTURfTlBFX1NUT1AgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgMHgwMwo+ICsjZGVmaW5lIENNRF9OUEVfQ0xSX1BJUEUgwqAgwqAgwqAgwqAgwqAgwqAgwqAg MHgwNAo+ICsjZGVmaW5lIENNRF9DTFJfUFJPRklMRV9DTlQgwqAgwqAgwqAgwqAgwqAgwqAweDBD Cj4gKyNkZWZpbmUgQ01EX1JEX0lOU19NRU0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMHgxMCAv KiBpbnN0cnVjdGlvbiBtZW1vcnkgKi8KPiArI2RlZmluZSBDTURfV1JfSU5TX01FTSDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCAweDExCj4gKyNkZWZpbmUgQ01EX1JEX0RBVEFfTUVNIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgMHgxMiAvKiBkYXRhIG1lbW9yeSAqLwo+ICsjZGVmaW5lIENNRF9XUl9E QVRBX01FTSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDB4MTMKPiArI2RlZmluZSBDTURfUkRfRUNT X1JFRyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAweDE0IC8qIGV4ZWMgYWNjZXNzIHJlZ2lzdGVy ICovCj4gKyNkZWZpbmUgQ01EX1dSX0VDU19SRUcgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMHgx NQo+ICsKPiArI2RlZmluZSBTVEFUX1JVTiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCAweDgwMDAwMDAwCj4gKyNkZWZpbmUgU1RBVF9TVE9QIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgMHg0MDAwMDAwMAo+ICsjZGVmaW5lIFNUQVRfQ0xFQVIgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgMHgyMDAwMDAwMAo+ICsjZGVmaW5lIFNUQVRfRUNTX0sgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgMHgwMDgwMDAwMCAvKiBwaXBlbGluZSBjbGVhbiAqLwo+ICsK PiArI2RlZmluZSBOUEVfU1RFVlQgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAweDFC Cj4gKyNkZWZpbmUgTlBFX1NUQVJUUEMgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAweDFD Cj4gKyNkZWZpbmUgTlBFX1JFR01BUCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAweDFF Cj4gKyNkZWZpbmUgTlBFX0NJTkRFWCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAweDFG Cj4gKwo+ICsjZGVmaW5lIElOU1RSX1dSX1JFR19TSE9SVCDCoCDCoCDCoCDCoCDCoCDCoCAweDAw MDBDMDAwCj4gKyNkZWZpbmUgSU5TVFJfV1JfUkVHX0JZVEUgwqAgwqAgwqAgwqAgwqAgwqAgwqAw eDAwMDA0MDAwCj4gKyNkZWZpbmUgSU5TVFJfUkRfRklGTyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoDB4MEY4ODgyMjAKPiArI2RlZmluZSBJTlNUUl9SRVNFVF9NQk9YIMKgIMKgIMKgIMKgIMKg IMKgIMKgIDB4MEZBQzgyMTAKPiArCj4gKyNkZWZpbmUgRUNTX0JHX0NUWFRfUkVHXzAgwqAgwqAg wqAgwqAgwqAgwqAgwqAweDAwIC8qIEJhY2tncm91bmQgRXhlY3V0aW5nIENvbnRleHQgKi8KPiAr I2RlZmluZSBFQ1NfQkdfQ1RYVF9SRUdfMSDCoCDCoCDCoCDCoCDCoCDCoCDCoDB4MDEgLyogU3Rh Y2sgbGV2ZWwgKi8KPiArI2RlZmluZSBFQ1NfQkdfQ1RYVF9SRUdfMiDCoCDCoCDCoCDCoCDCoCDC oCDCoDB4MDIKPiArI2RlZmluZSBFQ1NfUFJJXzFfQ1RYVF9SRUdfMCDCoCDCoCDCoCDCoCDCoCAw eDA0IC8qIFByaW9yaXR5IDEgRXhlY3V0aW5nIENvbnRleHQgKi8KPiArI2RlZmluZSBFQ1NfUFJJ XzFfQ1RYVF9SRUdfMSDCoCDCoCDCoCDCoCDCoCAweDA1IC8qIFN0YWNrIGxldmVsICovCj4gKyNk ZWZpbmUgRUNTX1BSSV8xX0NUWFRfUkVHXzIgwqAgwqAgwqAgwqAgwqAgMHgwNgo+ICsjZGVmaW5l IEVDU19QUklfMl9DVFhUX1JFR18wIMKgIMKgIMKgIMKgIMKgIDB4MDggLyogUHJpb3JpdHkgMiBF eGVjdXRpbmcgQ29udGV4dCAqLwo+ICsjZGVmaW5lIEVDU19QUklfMl9DVFhUX1JFR18xIMKgIMKg IMKgIMKgIMKgIDB4MDkgLyogU3RhY2sgbGV2ZWwgKi8KPiArI2RlZmluZSBFQ1NfUFJJXzJfQ1RY VF9SRUdfMiDCoCDCoCDCoCDCoCDCoCAweDBBCj4gKyNkZWZpbmUgRUNTX0RCR19DVFhUX1JFR18w IMKgIMKgIMKgIMKgIMKgIMKgIDB4MEMgLyogRGVidWcgRXhlY3V0aW5nIENvbnRleHQgKi8KPiAr I2RlZmluZSBFQ1NfREJHX0NUWFRfUkVHXzEgwqAgwqAgwqAgwqAgwqAgwqAgMHgwRCAvKiBTdGFj ayBsZXZlbCAqLwo+ICsjZGVmaW5lIEVDU19EQkdfQ1RYVF9SRUdfMiDCoCDCoCDCoCDCoCDCoCDC oCAweDBFCj4gKyNkZWZpbmUgRUNTX0lOU1RSVUNUX1JFRyDCoCDCoCDCoCDCoCDCoCDCoCDCoCAw eDExIC8qIE5QRSBJbnN0cnVjdGlvbiBSZWdpc3RlciAqLwo+ICsKPiArI2RlZmluZSBFQ1NfUkVH XzBfQUNUSVZFIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDB4ODAwMDAwMDAgLyogYWxsIGxldmVscyAq Lwo+ICsjZGVmaW5lIEVDU19SRUdfMF9ORVhUUENfTUFTSyDCoCDCoCDCoCDCoCDCoDB4MUZGRjAw MDAgLyogQkcvUFJJMS9QUkkyIGxldmVscyAqLwo+ICsjZGVmaW5lIEVDU19SRUdfMF9MRFVSX0JJ VFMgwqAgwqAgwqAgwqAgwqAgwqA4Cj4gKyNkZWZpbmUgRUNTX1JFR18wX0xEVVJfTUFTSyDCoCDC oCDCoCDCoCDCoCDCoDB4MDAwMDA3MDAgLyogYWxsIGxldmVscyAqLwo+ICsjZGVmaW5lIEVDU19S RUdfMV9DQ1RYVF9CSVRTIMKgIMKgIMKgIMKgIMKgIDE2Cj4gKyNkZWZpbmUgRUNTX1JFR18xX0ND VFhUX01BU0sgwqAgwqAgwqAgwqAgwqAgMHgwMDBGMDAwMCAvKiBhbGwgbGV2ZWxzICovCj4gKyNk ZWZpbmUgRUNTX1JFR18xX1NFTENUWFRfQklUUyDCoCDCoCDCoCDCoCAwCj4gKyNkZWZpbmUgRUNT X1JFR18xX1NFTENUWFRfTUFTSyDCoCDCoCDCoCDCoCAweDAwMDAwMDBGIC8qIGFsbCBsZXZlbHMg Ki8KPiArI2RlZmluZSBFQ1NfREJHX1JFR18yX0lGIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDB4MDAx MDAwMDAgLyogZGVidWcgbGV2ZWwgKi8KPiArI2RlZmluZSBFQ1NfREJHX1JFR18yX0lFIMKgIMKg IMKgIMKgIMKgIMKgIMKgIDB4MDAwODAwMDAgLyogZGVidWcgbGV2ZWwgKi8KPiArCj4gKy8qIE5Q RSB3YXRjaHBvaW50X2ZpZm8gcmVnaXN0ZXIgYml0ICovCj4gKyNkZWZpbmUgV0ZJRk9fVkFMSUQg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAweDgwMDAwMDAwCj4gKwo+ICsvKiBOUEUgbWVz c2FnaW5nX3N0YXR1cyByZWdpc3RlciBiaXQgZGVmaW5pdGlvbnMgKi8KPiArI2RlZmluZSBNU0dT VEFUX09GTkUgwqAweDAwMDEwMDAwIC8qIE91dEZpZm9Ob3RFbXB0eSAqLwo+ICsjZGVmaW5lIE1T R1NUQVRfSUZORiDCoDB4MDAwMjAwMDAgLyogSW5GaWZvTm90RnVsbCAqLwo+ICsjZGVmaW5lIE1T R1NUQVRfT0ZORiDCoDB4MDAwNDAwMDAgLyogT3V0Rmlmb05vdEZ1bGwgKi8KPiArI2RlZmluZSBN U0dTVEFUX0lGTkUgwqAweDAwMDgwMDAwIC8qIEluRmlmb05vdEVtcHR5ICovCj4gKyNkZWZpbmUg TVNHU1RBVF9NQklOVCAweDAwMTAwMDAwIC8qIE1haWxib3ggaW50ZXJydXB0ICovCj4gKyNkZWZp bmUgTVNHU1RBVF9JRklOVCAweDAwMjAwMDAwIC8qIEluRmlmbyBpbnRlcnJ1cHQgKi8KPiArI2Rl ZmluZSBNU0dTVEFUX09GSU5UIDB4MDA0MDAwMDAgLyogT3V0RmlmbyBpbnRlcnJ1cHQgKi8KPiAr I2RlZmluZSBNU0dTVEFUX1dGSU5UIDB4MDA4MDAwMDAgLyogV2F0Y2hGaWZvIGludGVycnVwdCAq Lwo+ICsKPiArLyogTlBFIG1lc3NhZ2luZ19jb250cm9sIHJlZ2lzdGVyIGJpdCBkZWZpbml0aW9u cyAqLwo+ICsjZGVmaW5lIE1TR0NUTF9PVVRfRklGTyDCoCDCoCDCoCAweDAwMDEwMDAwIC8qIGVu YWJsZSBvdXRwdXQgRklGTyAqLwo+ICsjZGVmaW5lIE1TR0NUTF9JTl9GSUZPIMKgIMKgIMKgIMKg MHgwMDAyMDAwMCAvKiBlbmFibGUgaW5wdXQgRklGTyAqLwo+ICsjZGVmaW5lIE1TR0NUTF9PVVRf RklGT19XUklURSAweDAxMDAwMDAwIC8qIGVuYWJsZSBGSUZPICsgV1JJVEUgKi8KPiArI2RlZmlu ZSBNU0dDVExfSU5fRklGT19XUklURSDCoDB4MDIwMDAwMDAKPiArCj4gKy8qIE5QRSBtYWlsYm94 X3N0YXR1cyB2YWx1ZSBmb3IgcmVzZXQgKi8KPiArI2RlZmluZSBSRVNFVF9NQk9YX1NUQVQgwqAg wqAgwqAgwqAgwqAweDAwMDBGMEYwCj4gKwo+ICsjZGVmaW5lIHByaW50X25wZShucGUsIGZtdCwg Li4uKSBmcHJpbnRmKHN0ZGVyciwgIiVzOiAiIGZtdCwgbnBlLT5uYW1lLCAjIyBfX1ZBX0FSR1Nf XykKPiArCj4gKyNpZiBERUJVR19NU0cKPiArI2RlZmluZSBkZWJ1Z19tc2cobnBlLCBmbXQsIC4u LikgcHJpbnRfbnBlKG5wZSwgZm10LCAjIyBfX1ZBX0FSR1NfXykKPiArI2Vsc2UKPiArI2RlZmlu ZSBkZWJ1Z19tc2cobnBlLCBmbXQsIC4uLikKPiArI2VuZGlmCj4gKwo+ICtzdGF0aWMgc3RydWN0 IHsKPiArIMKgIMKgIMKgIHUzMiByZWcsIHZhbDsKPiArfSBlY3NfcmVzZXRbXSA9IHsKPiArIMKg IMKgIMKgIHtFQ1NfQkdfQ1RYVF9SRUdfMCwgwqAgwqAweEEwMDAwMDAwfSwKPiArIMKgIMKgIMKg IHtFQ1NfQkdfQ1RYVF9SRUdfMSwgwqAgwqAweDAxMDAwMDAwfSwKPiArIMKgIMKgIMKgIHtFQ1Nf QkdfQ1RYVF9SRUdfMiwgwqAgwqAweDAwMDA4MDAwfSwKPiArIMKgIMKgIMKgIHtFQ1NfUFJJXzFf Q1RYVF9SRUdfMCwgMHgyMDAwMDA4MH0sCj4gKyDCoCDCoCDCoCB7RUNTX1BSSV8xX0NUWFRfUkVH XzEsIDB4MDEwMDAwMDB9LAo+ICsgwqAgwqAgwqAge0VDU19QUklfMV9DVFhUX1JFR18yLCAweDAw MDA4MDAwfSwKPiArIMKgIMKgIMKgIHtFQ1NfUFJJXzJfQ1RYVF9SRUdfMCwgMHgyMDAwMDA4MH0s Cj4gKyDCoCDCoCDCoCB7RUNTX1BSSV8yX0NUWFRfUkVHXzEsIDB4MDEwMDAwMDB9LAo+ICsgwqAg wqAgwqAge0VDU19QUklfMl9DVFhUX1JFR18yLCAweDAwMDA4MDAwfSwKPiArIMKgIMKgIMKgIHtF Q1NfREJHX0NUWFRfUkVHXzAsIMKgIDB4MjAwMDAwMDB9LAo+ICsgwqAgwqAgwqAge0VDU19EQkdf Q1RYVF9SRUdfMSwgwqAgMHgwMDAwMDAwMH0sCj4gKyDCoCDCoCDCoCB7RUNTX0RCR19DVFhUX1JF R18yLCDCoCAweDAwMUUwMDAwfSwKPiArIMKgIMKgIMKgIHtFQ1NfSU5TVFJVQ1RfUkVHLCDCoCDC oCAweDEwMDNDMDBGfSwKPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgbnBlIG5wZV90YWJbTlBF X0NPVU5UXSA9IHsKPiArIMKgIMKgIMKgIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC5yZWdz ID0gKHN0cnVjdCBucGVfcmVncyAqKUlYUDRYWF9OUEVBX0JBU0UsCj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCAuaWQgPSAwLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgLm5hbWUgPSAiTlBFLUEi LAo+ICsgwqAgwqAgwqAgfSwgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgLnJlZ3MgPSAoc3Ry dWN0IG5wZV9yZWdzICopSVhQNFhYX05QRUJfQkFTRSwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IC5pZCA9IDEsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCAubmFtZSA9ICJOUEUtQiIsCj4gKyDC oCDCoCDCoCB9LCB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCAucmVncyA9IChzdHJ1Y3QgbnBl X3JlZ3MgKilJWFA0WFhfTlBFQ19CQVNFLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgLmlkID0g MiwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC5uYW1lID0gIk5QRS1DIiwKPiArIMKgIMKgIMKg IH0KPiArfTsKPiArCj4gK2ludCBucGVfcnVubmluZyhzdHJ1Y3QgbnBlICpucGUpCj4gK3sKPiAr IMKgIMKgIMKgIHJldHVybiAoX19yYXdfcmVhZGwoJm5wZS0+cmVncy0+ZXhlY19zdGF0dXNfY21k KSAmIFNUQVRfUlVOKSAhPSAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBucGVfY21kX3dyaXRl KHN0cnVjdCBucGUgKm5wZSwgdTMyIGFkZHIsIGludCBjbWQsIHUzMiBkYXRhKQo+ICt7Cj4gKyDC oCDCoCDCoCBfX3Jhd193cml0ZWwoZGF0YSwgJm5wZS0+cmVncy0+ZXhlY19kYXRhKTsKPiArIMKg IMKgIMKgIF9fcmF3X3dyaXRlbChhZGRyLCAmbnBlLT5yZWdzLT5leGVjX2FkZHIpOwo+ICsgwqAg wqAgwqAgX19yYXdfd3JpdGVsKGNtZCwgJm5wZS0+cmVncy0+ZXhlY19zdGF0dXNfY21kKTsKPiAr fQo+ICsKPiArc3RhdGljIHUzMiBucGVfY21kX3JlYWQoc3RydWN0IG5wZSAqbnBlLCB1MzIgYWRk ciwgaW50IGNtZCkKPiArewo+ICsgwqAgwqAgwqAgX19yYXdfd3JpdGVsKGFkZHIsICZucGUtPnJl Z3MtPmV4ZWNfYWRkcik7Cj4gKyDCoCDCoCDCoCBfX3Jhd193cml0ZWwoY21kLCAmbnBlLT5yZWdz LT5leGVjX3N0YXR1c19jbWQpOwo+ICsgwqAgwqAgwqAgLyogSWludHJvZHVjZSBleHRyYSByZWFk IGN5Y2xlcyBhZnRlciBpc3N1aW5nIHJlYWQgY29tbWFuZCB0byBOUEUKPiArIMKgIMKgIMKgIMKg IMKgc28gdGhhdCB3ZSByZWFkIHRoZSByZWdpc3RlciBhZnRlciB0aGUgTlBFIGhhcyB1cGRhdGVk IGl0Lgo+ICsgwqAgwqAgwqAgwqAgwqBUaGlzIGlzIHRvIG92ZXJjb21lIHJhY2UgY29uZGl0aW9u IGJldHdlZW4gWFNjYWxlIGFuZCBOUEUgKi8KPiArIMKgIMKgIMKgIF9fcmF3X3JlYWRsKCZucGUt PnJlZ3MtPmV4ZWNfZGF0YSk7Cj4gKyDCoCDCoCDCoCBfX3Jhd19yZWFkbCgmbnBlLT5yZWdzLT5l eGVjX2RhdGEpOwo+ICsgwqAgwqAgwqAgcmV0dXJuIF9fcmF3X3JlYWRsKCZucGUtPnJlZ3MtPmV4 ZWNfZGF0YSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIG5wZV9jbGVhcl9hY3RpdmUoc3RydWN0 IG5wZSAqbnBlLCB1MzIgcmVnKQo+ICt7Cj4gKyDCoCDCoCDCoCB1MzIgdmFsID0gbnBlX2NtZF9y ZWFkKG5wZSwgcmVnLCBDTURfUkRfRUNTX1JFRyk7Cj4gKyDCoCDCoCDCoCBucGVfY21kX3dyaXRl KG5wZSwgcmVnLCBDTURfV1JfRUNTX1JFRywgdmFsICYgfkVDU19SRUdfMF9BQ1RJVkUpOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgdm9pZCBucGVfc3RhcnQoc3RydWN0IG5wZSAqbnBlKQo+ICt7Cj4gKyDC oCDCoCDCoCAvKiBlbnN1cmUgb25seSBCYWNrZ3JvdW5kIENvbnRleHQgU3RhY2sgTGV2ZWwgaXMg YWN0aXZlICovCj4gKyDCoCDCoCDCoCBucGVfY2xlYXJfYWN0aXZlKG5wZSwgRUNTX1BSSV8xX0NU WFRfUkVHXzApOwo+ICsgwqAgwqAgwqAgbnBlX2NsZWFyX2FjdGl2ZShucGUsIEVDU19QUklfMl9D VFhUX1JFR18wKTsKPiArIMKgIMKgIMKgIG5wZV9jbGVhcl9hY3RpdmUobnBlLCBFQ1NfREJHX0NU WFRfUkVHXzApOwo+ICsKPiArIMKgIMKgIMKgIF9fcmF3X3dyaXRlbChDTURfTlBFX0NMUl9QSVBF LCAmbnBlLT5yZWdzLT5leGVjX3N0YXR1c19jbWQpOwo+ICsgwqAgwqAgwqAgX19yYXdfd3JpdGVs KENNRF9OUEVfU1RBUlQsICZucGUtPnJlZ3MtPmV4ZWNfc3RhdHVzX2NtZCk7Cj4gK30KPiArCj4g K3N0YXRpYyB2b2lkIG5wZV9zdG9wKHN0cnVjdCBucGUgKm5wZSkKPiArewo+ICsgwqAgwqAgwqAg X19yYXdfd3JpdGVsKENNRF9OUEVfU1RPUCwgJm5wZS0+cmVncy0+ZXhlY19zdGF0dXNfY21kKTsK PiArIMKgIMKgIMKgIF9fcmF3X3dyaXRlbChDTURfTlBFX0NMUl9QSVBFLCAmbnBlLT5yZWdzLT5l eGVjX3N0YXR1c19jbWQpOyAvKkZJWE1FPyovCj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbnBlX2Rl YnVnX2luc3RyKHN0cnVjdCBucGUgKm5wZSwgdTMyIGluc3RyLCB1MzIgY3R4LCB1MzIgbGR1cikK PiArewo+ICsgwqAgwqAgwqAgdTMyIHdjOwo+ICsgwqAgwqAgwqAgaW50IGk7Cj4gKwo+ICsgwqAg wqAgwqAgLyogc2V0IHRoZSBBY3RpdmUgYml0LCBhbmQgdGhlIExEVVIsIGluIHRoZSBkZWJ1ZyBs ZXZlbCAqLwo+ICsgwqAgwqAgwqAgbnBlX2NtZF93cml0ZShucGUsIEVDU19EQkdfQ1RYVF9SRUdf MCwgQ01EX1dSX0VDU19SRUcsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBFQ1Nf UkVHXzBfQUNUSVZFIHwgKGxkdXIgPDwgRUNTX1JFR18wX0xEVVJfQklUUykpOwo+ICsKPiArIMKg IMKgIMKgIC8qIHNldCBDQ1RYVCBhdCBFQ1MgREVCVUcgTDMgdG8gc3BlY2lmeSBpbiB3aGljaCBj b250ZXh0IHRvIGV4ZWN1dGUKPiArIMKgIMKgIMKgIMKgIMKgdGhlIGluc3RydWN0aW9uLCBhbmQg c2V0IFNFTENUWFQgYXQgRUNTIERFQlVHIExldmVsIHRvIHNwZWNpZnkKPiArIMKgIMKgIMKgIMKg IMKgd2hpY2ggY29udGV4dCBzdG9yZSB0byBhY2Nlc3MuCj4gKyDCoCDCoCDCoCDCoCDCoERlYnVn IEVDUyBMZXZlbCBSZWcgMSBoYXMgZm9ybSAweDAwMG4wMDBuLCB3aGVyZSBuID0gY29udGV4dCBu dW1iZXIKPiArIMKgIMKgIMKgICovCj4gKyDCoCDCoCDCoCBucGVfY21kX3dyaXRlKG5wZSwgRUNT X0RCR19DVFhUX1JFR18xLCBDTURfV1JfRUNTX1JFRywKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIChjdHggPDwgRUNTX1JFR18xX0NDVFhUX0JJVFMpIHwKPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIChjdHggPDwgRUNTX1JFR18xX1NFTENUWFRfQklUUykpOwo+ICsK PiArIMKgIMKgIMKgIC8qIGNsZWFyIHRoZSBwaXBlbGluZSAqLwo+ICsgwqAgwqAgwqAgX19yYXdf d3JpdGVsKENNRF9OUEVfQ0xSX1BJUEUsICZucGUtPnJlZ3MtPmV4ZWNfc3RhdHVzX2NtZCk7Cj4g Kwo+ICsgwqAgwqAgwqAgLyogbG9hZCBOUEUgaW5zdHJ1Y3Rpb24gaW50byB0aGUgaW5zdHJ1Y3Rp b24gcmVnaXN0ZXIgKi8KPiArIMKgIMKgIMKgIG5wZV9jbWRfd3JpdGUobnBlLCBFQ1NfSU5TVFJV Q1RfUkVHLCBDTURfV1JfRUNTX1JFRywgaW5zdHIpOwo+ICsKPiArIMKgIMKgIMKgIC8qIHdlIG5l ZWQgdGhpcyB2YWx1ZSBsYXRlciB0byB3YWl0IGZvciBjb21wbGV0aW9uIG9mIE5QRSBleGVjdXRp b24KPiArIMKgIMKgIMKgIMKgIMKgc3RlcCAqLwo+ICsgwqAgwqAgwqAgd2MgPSBfX3Jhd19yZWFk bCgmbnBlLT5yZWdzLT53YXRjaF9jb3VudCk7Cj4gKwo+ICsgwqAgwqAgwqAgLyogaXNzdWUgYSBT dGVwIE9uZSBjb21tYW5kIHZpYSB0aGUgRXhlY3V0aW9uIENvbnRyb2wgcmVnaXN0ZXIgKi8KPiAr IMKgIMKgIMKgIF9fcmF3X3dyaXRlbChDTURfTlBFX1NURVAsICZucGUtPnJlZ3MtPmV4ZWNfc3Rh dHVzX2NtZCk7Cj4gKwo+ICsgwqAgwqAgwqAgLyogV2F0Y2ggQ291bnQgcmVnaXN0ZXIgaW5jcmVt ZW50cyB3aGVuIE5QRSBjb21wbGV0ZXMgYW4gaW5zdHJ1Y3Rpb24gKi8KPiArIMKgIMKgIMKgIGZv ciAoaSA9IDA7IGkgPCBNQVhfUkVUUklFUzsgaSsrKSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC oCBpZiAod2MgIT0gX19yYXdfcmVhZGwoJm5wZS0+cmVncy0+d2F0Y2hfY291bnQpKQo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIDA7Cj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCB1ZGVsYXkoMSk7Cj4gKyDCoCDCoCDCoCB9Cj4gKwo+ICsgwqAgwqAgwqAgcHJpbnRf bnBlKG5wZSwgInJlc2V0OiBucGVfZGVidWdfaW5zdHIoKTogdGltZW91dFxuIik7Cj4gKyDCoCDC oCDCoCByZXR1cm4gLUVUSU1FRE9VVDsKPiArfQo+ICsKPiArc3RhdGljIGludCBucGVfbG9naWNh bF9yZWdfd3JpdGU4KHN0cnVjdCBucGUgKm5wZSwgdTMyIGFkZHIsIHU4IHZhbCwgdTMyIGN0eCkK PiArewo+ICsgwqAgwqAgwqAgLyogaGVyZSB3ZSBidWlsZCB0aGUgTlBFIGFzc2VtYmxlciBpbnN0 cnVjdGlvbjogbW92OCBkMCwgIzAgKi8KPiArIMKgIMKgIMKgIHUzMiBpbnN0ciA9IElOU1RSX1dS X1JFR19CWVRFIHwgLyogT3BDb2RlICovCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBhZGRyIDw8 IDkgfCDCoCDCoCDCoCDCoCDCoCDCoCAvKiBiYXNlIE9wZXJhbmQgKi8KPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgICh2YWwgJiAweDFGKSA8PCA0IHwgwqAgwqAgLyogbG93ZXIgNSBiaXRzIHRvIGlt bWVkaWF0ZSBkYXRhICovCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCAodmFsICYgfjB4MUYpIDw8 ICgxOCAtIDUpOy8qIGhpZ2hlciAzIGJpdHMgdG8gQ29Qcm9jIGluc3RyLiAqLwo+ICsgwqAgwqAg wqAgcmV0dXJuIG5wZV9kZWJ1Z19pbnN0cihucGUsIGluc3RyLCBjdHgsIDEpOyAvKiBleGVjdXRl IGl0ICovCj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbnBlX2xvZ2ljYWxfcmVnX3dyaXRlMTYoc3Ry dWN0IG5wZSAqbnBlLCB1MzIgYWRkciwgdTE2IHZhbCwgdTMyIGN0eCkKPiArewo+ICsgwqAgwqAg wqAgLyogaGVyZSB3ZSBidWlsZCB0aGUgTlBFIGFzc2VtYmxlciBpbnN0cnVjdGlvbjogbW92MTYg ZDAsICMwICovCj4gKyDCoCDCoCDCoCB1MzIgaW5zdHIgPSBJTlNUUl9XUl9SRUdfU0hPUlQgfCAv KiBPcENvZGUgKi8KPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGFkZHIgPDwgOSB8IMKgIMKgIMKg IMKgIMKgIMKgIC8qIGJhc2UgT3BlcmFuZCAqLwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKHZh bCAmIDB4MUYpIDw8IDQgfCDCoCDCoCAvKiBsb3dlciA1IGJpdHMgdG8gaW1tZWRpYXRlIGRhdGEg Ki8KPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgICh2YWwgJiB+MHgxRikgPDwgKDE4IC0gNSk7Lyog aGlnaGVyIDExIGJpdHMgdG8gQ29Qcm9jIGluc3RyLiAqLwo+ICsgwqAgwqAgwqAgcmV0dXJuIG5w ZV9kZWJ1Z19pbnN0cihucGUsIGluc3RyLCBjdHgsIDEpOyAvKiBleGVjdXRlIGl0ICovCj4gK30K PiArCj4gK3N0YXRpYyBpbnQgbnBlX2xvZ2ljYWxfcmVnX3dyaXRlMzIoc3RydWN0IG5wZSAqbnBl LCB1MzIgYWRkciwgdTMyIHZhbCwgdTMyIGN0eCkKPiArewo+ICsgwqAgwqAgwqAgLyogd3JpdGUg aW4gMTYgYml0IHN0ZXBzIGZpcnN0IHRoZSBoaWdoIGFuZCB0aGVuIHRoZSBsb3cgdmFsdWUgKi8K PiArIMKgIMKgIMKgIGlmIChucGVfbG9naWNhbF9yZWdfd3JpdGUxNihucGUsIGFkZHIsIHZhbCA+ PiAxNiwgY3R4KSkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiAtRVRJTUVET1VUOwo+ ICsgwqAgwqAgwqAgcmV0dXJuIG5wZV9sb2dpY2FsX3JlZ193cml0ZTE2KG5wZSwgYWRkciArIDIs IHZhbCAmIDB4RkZGRiwgY3R4KTsKPiArfQo+ICsKPiArc3RhdGljIGludCBucGVfcmVzZXQoc3Ry dWN0IG5wZSAqbnBlKQo+ICt7Cj4gKyDCoCDCoCDCoCB1MzIgdmFsLCBjdGwsIGV4ZWNfY291bnQs IGN0eF9yZWcyOwo+ICsgwqAgwqAgwqAgaW50IGk7Cj4gKwo+ICsgwqAgwqAgwqAgY3RsID0gKF9f cmF3X3JlYWRsKCZucGUtPnJlZ3MtPm1lc3NhZ2luZ19jb250cm9sKSB8IDB4M0YwMDAwMDApICYK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDB4M0YzRkZGRkY7Cj4gKwo+ICsgwqAgwqAgwqAgLyog ZGlzYWJsZSBwYXJpdHkgaW50ZXJydXB0ICovCj4gKyDCoCDCoCDCoCBfX3Jhd193cml0ZWwoY3Rs ICYgMHgzRjAwRkZGRiwgJm5wZS0+cmVncy0+bWVzc2FnaW5nX2NvbnRyb2wpOwo+ICsKPiArIMKg IMKgIMKgIC8qIHByZSBleGVjIC0gZGVidWcgaW5zdHJ1Y3Rpb24gKi8KPiArIMKgIMKgIMKgIC8q IHR1cm4gb2ZmIHRoZSBoYWx0IGJpdCBieSBjbGVhcmluZyBFeGVjdXRpb24gQ291bnQgcmVnaXN0 ZXIuICovCj4gKyDCoCDCoCDCoCBleGVjX2NvdW50ID0gX19yYXdfcmVhZGwoJm5wZS0+cmVncy0+ ZXhlY19jb3VudCk7Cj4gKyDCoCDCoCDCoCBfX3Jhd193cml0ZWwoMCwgJm5wZS0+cmVncy0+ZXhl Y19jb3VudCk7Cj4gKyDCoCDCoCDCoCAvKiBlbnN1cmUgdGhhdCBJRiBhbmQgSUUgYXJlIG9uICh0 ZW1wb3JhcmlseSksIHNvIHRoYXQgd2UgZG9uJ3QgZW5kIHVwCj4gKyDCoCDCoCDCoCDCoCDCoHN0 ZXBwaW5nIGZvcmV2ZXIgKi8KPiArIMKgIMKgIMKgIGN0eF9yZWcyID0gbnBlX2NtZF9yZWFkKG5w ZSwgRUNTX0RCR19DVFhUX1JFR18yLCBDTURfUkRfRUNTX1JFRyk7Cj4gKyDCoCDCoCDCoCBucGVf Y21kX3dyaXRlKG5wZSwgRUNTX0RCR19DVFhUX1JFR18yLCBDTURfV1JfRUNTX1JFRywgY3R4X3Jl ZzIgfAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgRUNTX0RCR19SRUdfMl9JRiB8 IEVDU19EQkdfUkVHXzJfSUUpOwo+ICsKPiArIMKgIMKgIMKgIC8qIGNsZWFyIHRoZSBGSUZPcyAq Lwo+ICsgwqAgwqAgwqAgd2hpbGUgKF9fcmF3X3JlYWRsKCZucGUtPnJlZ3MtPndhdGNocG9pbnRf ZmlmbykgJiBXRklGT19WQUxJRCkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDsKPiArIMKgIMKg IMKgIHdoaWxlIChfX3Jhd19yZWFkbCgmbnBlLT5yZWdzLT5tZXNzYWdpbmdfc3RhdHVzKSAmIE1T R1NUQVRfT0ZORSkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC8qIHJlYWQgZnJvbSB0aGUgb3V0 RklGTyB1bnRpbCBlbXB0eSAqLwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHJpbnRfbnBlKG5w ZSwgIm5wZV9yZXNldDogcmVhZCBGSUZPID0gMHglWFxuIiwKPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIF9fcmF3X3JlYWRsKCZucGUtPnJlZ3MtPmluX291dF9maWZvKSk7 Cj4gKwo+ICsgwqAgwqAgwqAgd2hpbGUgKF9fcmF3X3JlYWRsKCZucGUtPnJlZ3MtPm1lc3NhZ2lu Z19zdGF0dXMpICYgTVNHU1RBVF9JRk5FKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgLyogc3Rl cCBleGVjdXRpb24gb2YgdGhlIE5QRSBpbnRydWN0aW9uIHRvIHJlYWQgaW5GSUZPIHVzaW5nCj4g KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHRoZSBEZWJ1ZyBFeGVjdXRpbmcgQ29udGV4dCBz dGFjayAqLwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKG5wZV9kZWJ1Z19pbnN0cihucGUs IElOU1RSX1JEX0ZJRk8sIDAsIDApKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgcmV0dXJuIC1FVElNRURPVVQ7Cj4gKwo+ICsgwqAgwqAgwqAgLyogcmVzZXQgdGhlIG1haWxi b3ggcmVnIGZyb20gdGhlIFhTY2FsZSBzaWRlICovCj4gKyDCoCDCoCDCoCBfX3Jhd193cml0ZWwo UkVTRVRfTUJPWF9TVEFULCAmbnBlLT5yZWdzLT5tYWlsYm94X3N0YXR1cyk7Cj4gKyDCoCDCoCDC oCAvKiBmcm9tIE5QRSBzaWRlICovCj4gKyDCoCDCoCDCoCBpZiAobnBlX2RlYnVnX2luc3RyKG5w ZSwgSU5TVFJfUkVTRVRfTUJPWCwgMCwgMCkpCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1 cm4gLUVUSU1FRE9VVDsKPiArCj4gKyDCoCDCoCDCoCAvKiBSZXNldCB0aGUgcGh5c2ljYWwgcmVn aXN0ZXJzIGluIHRoZSBOUEUgcmVnaXN0ZXIgZmlsZSAqLwo+ICsgwqAgwqAgwqAgZm9yICh2YWwg PSAwOyB2YWwgPCBOUEVfUEhZU19SRUc7IHZhbCsrKSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC oCBpZiAobnBlX2xvZ2ljYWxfcmVnX3dyaXRlMTYobnBlLCBOUEVfUkVHTUFQLCB2YWwgPj4gMSwg MCkpCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gLUVUSU1FRE9V VDsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC8qIGFkZHJlc3MgaXMgZWl0aGVyIDAgb3IgNCAq Lwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKG5wZV9sb2dpY2FsX3JlZ193cml0ZTMyKG5w ZSwgKHZhbCAmIDEpICogNCwgMCwgMCkpCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCByZXR1cm4gLUVUSU1FRE9VVDsKPiArIMKgIMKgIMKgIH0KPiArCj4gKyDCoCDCoCDCoCAv KiBSZXNldCB0aGUgY29udGV4dCBzdG9yZSA9IGVhY2ggY29udGV4dCdzIENvbnRleHQgU3RvcmUg cmVnaXN0ZXJzICovCj4gKwo+ICsgwqAgwqAgwqAgLyogQ29udGV4dCAwIGhhcyBubyBTVEFSVFBD LiBJbnN0ZWFkLCB0aGlzIHZhbHVlIGlzIHVzZWQgdG8gc2V0IE5leHRQQwo+ICsgwqAgwqAgwqAg wqAgwqBmb3IgQmFja2dyb3VuZCBFQ1MsIHRvIHNldCB3aGVyZSBOUEUgc3RhcnRzIGV4ZWN1dGlu ZyBjb2RlICovCj4gKyDCoCDCoCDCoCB2YWwgPSBucGVfY21kX3JlYWQobnBlLCBFQ1NfQkdfQ1RY VF9SRUdfMCwgQ01EX1JEX0VDU19SRUcpOwo+ICsgwqAgwqAgwqAgdmFsICY9IH5FQ1NfUkVHXzBf TkVYVFBDX01BU0s7Cj4gKyDCoCDCoCDCoCB2YWwgfD0gKDAgLyogTmV4dFBDICovIDw8IDE2KSAm IEVDU19SRUdfMF9ORVhUUENfTUFTSzsKPiArIMKgIMKgIMKgIG5wZV9jbWRfd3JpdGUobnBlLCBF Q1NfQkdfQ1RYVF9SRUdfMCwgQ01EX1dSX0VDU19SRUcsIHZhbCk7Cj4gKwo+ICsgwqAgwqAgwqAg Zm9yIChpID0gMDsgaSA8IDE2OyBpKyspIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChp KSB7IC8qIENvbnRleHQgMCBoYXMgbm8gU1RFVlQgbm9yIFNUQVJUUEMgKi8KPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC8qIFNURVZUID0gb2ZmLCAweDgwICovCj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAobnBlX2xvZ2ljYWxfcmVnX3dyaXRlOChu cGUsIE5QRV9TVEVWVCwgMHg4MCwgaSkpCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gLUVUSU1FRE9VVDsKPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIGlmIChucGVfbG9naWNhbF9yZWdfd3JpdGUxNihucGUsIE5QRV9TVEFS VFBDLCAwLCBpKSkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIHJldHVybiAtRVRJTUVET1VUOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfQo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgLyogUkVHTUFQID0gZDAtPnAwLCBkOC0+cDIsIGQxNi0+cDQgKi8K PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChucGVfbG9naWNhbF9yZWdfd3JpdGUxNihucGUs IE5QRV9SRUdNQVAsIDB4ODIwLCBpKSkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIHJldHVybiAtRVRJTUVET1VUOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKG5wZV9s b2dpY2FsX3JlZ193cml0ZTgobnBlLCBOUEVfQ0lOREVYLCAwLCBpKSkKPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiAtRVRJTUVET1VUOwo+ICsgwqAgwqAgwqAgfQo+ ICsKPiArIMKgIMKgIMKgIC8qIHBvc3QgZXhlYyAqLwo+ICsgwqAgwqAgwqAgLyogY2xlYXIgYWN0 aXZlIGJpdCBpbiBkZWJ1ZyBsZXZlbCAqLwo+ICsgwqAgwqAgwqAgbnBlX2NtZF93cml0ZShucGUs IEVDU19EQkdfQ1RYVF9SRUdfMCwgQ01EX1dSX0VDU19SRUcsIDApOwo+ICsgwqAgwqAgwqAgLyog Y2xlYXIgdGhlIHBpcGVsaW5lICovCj4gKyDCoCDCoCDCoCBfX3Jhd193cml0ZWwoQ01EX05QRV9D TFJfUElQRSwgJm5wZS0+cmVncy0+ZXhlY19zdGF0dXNfY21kKTsKPiArIMKgIMKgIMKgIC8qIHJl c3RvcmUgcHJldmlvdXMgdmFsdWVzICovCj4gKyDCoCDCoCDCoCBfX3Jhd193cml0ZWwoZXhlY19j b3VudCwgJm5wZS0+cmVncy0+ZXhlY19jb3VudCk7Cj4gKyDCoCDCoCDCoCBucGVfY21kX3dyaXRl KG5wZSwgRUNTX0RCR19DVFhUX1JFR18yLCBDTURfV1JfRUNTX1JFRywgY3R4X3JlZzIpOwo+ICsK PiArIMKgIMKgIMKgIC8qIHdyaXRlIHJlc2V0IHZhbHVlcyB0byBFeGVjdXRpb24gQ29udGV4dCBT dGFjayByZWdpc3RlcnMgKi8KPiArIMKgIMKgIMKgIGZvciAodmFsID0gMDsgdmFsIDwgQVJSQVlf U0laRShlY3NfcmVzZXQpOyB2YWwrKykKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIG5wZV9jbWRf d3JpdGUobnBlLCBlY3NfcmVzZXRbdmFsXS5yZWcsIENNRF9XUl9FQ1NfUkVHLAo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZWNzX3Jlc2V0W3ZhbF0udmFsKTsK PiArCj4gKyDCoCDCoCDCoCAvKiBjbGVhciB0aGUgcHJvZmlsZSBjb3VudGVyICovCj4gKyDCoCDC oCDCoCBfX3Jhd193cml0ZWwoQ01EX0NMUl9QUk9GSUxFX0NOVCwgJm5wZS0+cmVncy0+ZXhlY19z dGF0dXNfY21kKTsKPiArCj4gKyDCoCDCoCDCoCBfX3Jhd193cml0ZWwoMCwgJm5wZS0+cmVncy0+ ZXhlY19jb3VudCk7Cj4gKyDCoCDCoCDCoCBfX3Jhd193cml0ZWwoMCwgJm5wZS0+cmVncy0+YWN0 aW9uX3BvaW50c1swXSk7Cj4gKyDCoCDCoCDCoCBfX3Jhd193cml0ZWwoMCwgJm5wZS0+cmVncy0+ YWN0aW9uX3BvaW50c1sxXSk7Cj4gKyDCoCDCoCDCoCBfX3Jhd193cml0ZWwoMCwgJm5wZS0+cmVn cy0+YWN0aW9uX3BvaW50c1syXSk7Cj4gKyDCoCDCoCDCoCBfX3Jhd193cml0ZWwoMCwgJm5wZS0+ cmVncy0+YWN0aW9uX3BvaW50c1szXSk7Cj4gKyDCoCDCoCDCoCBfX3Jhd193cml0ZWwoMCwgJm5w ZS0+cmVncy0+d2F0Y2hfY291bnQpOwo+ICsKPiArIMKgIMKgIMKgIHZhbCA9IGl4cDR4eF9yZWFk X2ZlYXR1cmVfYml0cygpOwo+ICsgwqAgwqAgwqAgLyogcmVzZXQgdGhlIE5QRSAqLwo+ICsgwqAg wqAgwqAgaXhwNHh4X3dyaXRlX2ZlYXR1cmVfYml0cyh2YWwgJgo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfihJWFA0WFhfRkVBVFVSRV9SRVNFVF9O UEVBIDw8IG5wZS0+aWQpKTsKPiArIMKgIMKgIMKgIC8qIGRlYXNzZXJ0IHJlc2V0ICovCj4gKyDC oCDCoCDCoCBpeHA0eHhfd3JpdGVfZmVhdHVyZV9iaXRzKHZhbCB8Cj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAoSVhQNFhYX0ZFQVRVUkVfUkVTRVRf TlBFQSA8PCBucGUtPmlkKSk7Cj4gKyDCoCDCoCDCoCBmb3IgKGkgPSAwOyBpIDwgTUFYX1JFVFJJ RVM7IGkrKykgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKGl4cDR4eF9yZWFkX2ZlYXR1 cmVfYml0cygpICYKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIChJWFA0WFhfRkVBVFVS RV9SRVNFVF9OUEVBIDw8IG5wZS0+aWQpKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgYnJlYWs7IC8qIE5QRSBpcyBiYWNrIGFsaXZlICovCj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCB1ZGVsYXkoMSk7Cj4gKyDCoCDCoCDCoCB9Cj4gKyDCoCDCoCDCoCBpZiAoaSA9PSBNQVhf UkVUUklFUykKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiAtRVRJTUVET1VUOwo+ICsK PiArIMKgIMKgIMKgIG5wZV9zdG9wKG5wZSk7Cj4gKwo+ICsgwqAgwqAgwqAgLyogcmVzdG9yZSBO UEUgY29uZmlndXJhdGlvbiBidXMgQ29udHJvbCBSZWdpc3RlciAtIHBhcml0eSBzZXR0aW5ncyAq Lwo+ICsgwqAgwqAgwqAgX19yYXdfd3JpdGVsKGN0bCwgJm5wZS0+cmVncy0+bWVzc2FnaW5nX2Nv bnRyb2wpOwo+ICsgwqAgwqAgwqAgcmV0dXJuIDA7Cj4gK30KPiArCj4gKwo+ICtpbnQgbnBlX3Nl bmRfbWVzc2FnZShzdHJ1Y3QgbnBlICpucGUsIGNvbnN0IHZvaWQgKm1zZywgY29uc3QgY2hhciAq d2hhdCkKPiArewo+ICsgwqAgwqAgwqAgY29uc3QgdTMyICpzZW5kID0gbXNnOwo+ICsgwqAgwqAg wqAgaW50IGN5Y2xlcyA9IDA7Cj4gKwo+ICsgwqAgwqAgwqAgZGVidWdfbXNnKG5wZSwgIlRyeWlu ZyB0byBzZW5kIG1lc3NhZ2UgJXMgWyUwOFg6JTA4WF1cbiIsCj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCB3aGF0LCBzZW5kWzBdLCBzZW5kWzFdKTsKPiArCj4gKyDCoCDCoCDCoCBpZiAoX19y YXdfcmVhZGwoJm5wZS0+cmVncy0+bWVzc2FnaW5nX3N0YXR1cykgJiBNU0dTVEFUX0lGTkUpIHsK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRlYnVnX21zZyhucGUsICJOUEUgaW5wdXQgRklGTyBu b3QgZW1wdHlcbiIpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIC1FSU87Cj4gKyDC oCDCoCDCoCB9Cj4gKwo+ICsgwqAgwqAgwqAgX19yYXdfd3JpdGVsKHNlbmRbMF0sICZucGUtPnJl Z3MtPmluX291dF9maWZvKTsKPiArCj4gKyDCoCDCoCDCoCBpZiAoIShfX3Jhd19yZWFkbCgmbnBl LT5yZWdzLT5tZXNzYWdpbmdfc3RhdHVzKSAmIE1TR1NUQVRfSUZORikpIHsKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIGRlYnVnX21zZyhucGUsICJOUEUgaW5wdXQgRklGTyBmdWxsXG4iKTsKPiAr IMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiAtRUlPOwo+ICsgwqAgwqAgwqAgfQo+ICsKPiAr IMKgIMKgIMKgIF9fcmF3X3dyaXRlbChzZW5kWzFdLCAmbnBlLT5yZWdzLT5pbl9vdXRfZmlmbyk7 Cj4gKwo+ICsgwqAgwqAgwqAgd2hpbGUgKChjeWNsZXMgPCBNQVhfUkVUUklFUykgJiYKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgKF9fcmF3X3JlYWRsKCZucGUtPnJlZ3MtPm1lc3NhZ2luZ19zdGF0 dXMpICYgTVNHU1RBVF9JRk5FKSkgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdWRlbGF5KDEp Owo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY3ljbGVzKys7Cj4gKyDCoCDCoCDCoCB9Cj4gKwo+ ICsgwqAgwqAgwqAgaWYgKGN5Y2xlcyA9PSBNQVhfUkVUUklFUykgewo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgZGVidWdfbXNnKG5wZSwgIlRpbWVvdXQgc2VuZGluZyBtZXNzYWdlXG4iKTsKPiAr IMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiAtRVRJTUVET1VUOwo+ICsgwqAgwqAgwqAgfQo+ ICsKPiArI2lmIERFQlVHX01TRyA+IDEKPiArIMKgIMKgIMKgIGRlYnVnX21zZyhucGUsICJTZW5k aW5nIGEgbWVzc2FnZSB0b29rICVpIGN5Y2xlc1xuIiwgY3ljbGVzKTsKPiArI2VuZGlmCj4gKyDC oCDCoCDCoCByZXR1cm4gMDsKPiArfQo+ICsKPiAraW50IG5wZV9yZWN2X21lc3NhZ2Uoc3RydWN0 IG5wZSAqbnBlLCB2b2lkICptc2csIGNvbnN0IGNoYXIgKndoYXQpCj4gK3sKPiArIMKgIMKgIMKg IHUzMiAqcmVjdiA9IG1zZzsKPiArIMKgIMKgIMKgIGludCBjeWNsZXMgPSAwLCBjbnQgPSAwOwo+ ICsKPiArIMKgIMKgIMKgIGRlYnVnX21zZyhucGUsICJUcnlpbmcgdG8gcmVjZWl2ZSBtZXNzYWdl ICVzXG4iLCB3aGF0KTsKPiArCj4gKyDCoCDCoCDCoCB3aGlsZSAoY3ljbGVzIDwgTUFYX1JFVFJJ RVMpIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChfX3Jhd19yZWFkbCgmbnBlLT5yZWdz LT5tZXNzYWdpbmdfc3RhdHVzKSAmIE1TR1NUQVRfT0ZORSkgewo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgcmVjdltjbnQrK10gPSBfX3Jhd19yZWFkbCgmbnBlLT5yZWdzLT5p bl9vdXRfZmlmbyk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAoY250 ID09IDIpCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBi cmVhazsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0gZWxzZSB7Cj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCB1ZGVsYXkoMSk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCBjeWNsZXMrKzsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0KPiArIMKgIMKg IMKgIH0KPiArCj4gKyDCoCDCoCDCoCBzd2l0Y2goY250KSB7Cj4gKyDCoCDCoCDCoCBjYXNlIDE6 Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkZWJ1Z19tc2cobnBlLCAiUmVjZWl2ZWQgWyUwOFhd XG4iLCByZWN2WzBdKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGJyZWFrOwo+ICsgwqAgwqAg wqAgY2FzZSAyOgo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGVidWdfbXNnKG5wZSwgIlJlY2Vp dmVkIFslMDhYOiUwOFhdXG4iLCByZWN2WzBdLCByZWN2WzFdKTsKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIGJyZWFrOwo+ICsgwqAgwqAgwqAgfQo+ICsKPiArIMKgIMKgIMKgIGlmIChjeWNsZXMg PT0gTUFYX1JFVFJJRVMpIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRlYnVnX21zZyhucGUs ICJUaW1lb3V0IHdhaXRpbmcgZm9yIG1lc3NhZ2VcbiIpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgcmV0dXJuIC1FVElNRURPVVQ7Cj4gKyDCoCDCoCDCoCB9Cj4gKwo+ICsjaWYgREVCVUdfTVNH ID4gMQo+ICsgwqAgwqAgwqAgZGVidWdfbXNnKG5wZSwgIlJlY2VpdmluZyBhIG1lc3NhZ2UgdG9v ayAlaSBjeWNsZXNcbiIsIGN5Y2xlcyk7Cj4gKyNlbmRpZgo+ICsgwqAgwqAgwqAgcmV0dXJuIDA7 Cj4gK30KPiArCj4gK2ludCBucGVfc2VuZF9yZWN2X21lc3NhZ2Uoc3RydWN0IG5wZSAqbnBlLCB2 b2lkICptc2csIGNvbnN0IGNoYXIgKndoYXQpCj4gK3sKPiArIMKgIMKgIMKgIGludCByZXN1bHQ7 Cj4gKyDCoCDCoCDCoCB1MzIgKnNlbmQgPSBtc2csIHJlY3ZbMl07Cj4gKwo+ICsgwqAgwqAgwqAg aWYgKChyZXN1bHQgPSBucGVfc2VuZF9tZXNzYWdlKG5wZSwgbXNnLCB3aGF0KSkgIT0gMCkKPiAr IMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiByZXN1bHQ7Cj4gKyDCoCDCoCDCoCBpZiAoKHJl c3VsdCA9IG5wZV9yZWN2X21lc3NhZ2UobnBlLCByZWN2LCB3aGF0KSkgIT0gMCkKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIHJldHVybiByZXN1bHQ7Cj4gKwo+ICsgwqAgwqAgwqAgaWYgKChyZWN2 WzBdICE9IHNlbmRbMF0pIHx8IChyZWN2WzFdICE9IHNlbmRbMV0pKSB7Cj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCBkZWJ1Z19tc2cobnBlLCAiTWVzc2FnZSAlczogdW5leHBlY3RlZCBtZXNzYWdl IHJlY2VpdmVkXG4iLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgd2hh dCk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gLUVJTzsKPiArIMKgIMKgIMKgIH0K PiArIMKgIMKgIMKgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICsKPiAraW50IG5wZV9sb2FkX2Zpcm13 YXJlKHN0cnVjdCBucGUgKm5wZSkKPiArewo+ICsgwqAgwqAgwqAgc3RydWN0IGRsX2Jsb2NrIHsK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHUzMiB0eXBlOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgdTMyIG9mZnNldDsKPiArIMKgIMKgIMKgIH0gKmJsazsKPiArCj4gKyDCoCDCoCDCoCBzdHJ1 Y3QgZGxfaW1hZ2Ugewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdTMyIG1hZ2ljOwo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgdTMyIGlkOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdTMyIHNp emU7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1bmlvbiB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCB1MzIgZGF0YVswXTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIHN0cnVjdCBkbF9ibG9jayBibG9ja3NbMF07Cj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCB9Owo+ICsgwqAgwqAgwqAgfSAqaW1hZ2U7Cj4gKwo+ICsgwqAgwqAgwqAgc3RydWN0IGRs X2NvZGVibG9jayB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1MzIgbnBlX2FkZHI7Cj4gKyDC oCDCoCDCoCDCoCDCoCDCoCDCoCB1MzIgc2l6ZTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHUz MiBkYXRhWzBdOwo+ICsgwqAgwqAgwqAgfSAqY2I7Cj4gKwo+ICsgwqAgwqAgwqAgaW50IGksIGos IGVyciwgZGF0YV9zaXplLCBpbnN0cl9zaXplLCBibG9ja3MsIHRhYmxlX2VuZDsKPiArIMKgIMKg IMKgIHUzMiBjbWQ7Cj4gKyDCoCDCoCDCoCBjaGFyIG5hbWVbNSAvKiAiL2Rldi8iICovICsgTlBF X05BTUVfTEVOR1RIICsgMSAvKiBOVUwgKi9dOwo+ICsgwqAgwqAgwqAgc2l6ZV90IGltYWdlX3Np emU7Cj4gKwo+ICsgwqAgwqAgwqAgc3ByaW50ZihuYW1lLCAiL2Rldi8lcyIsIG5wZS0+bmFtZSk7 Cj4gKyDCoCDCoCDCoCBpZiAoIShpbWFnZSA9IHJlYWRfZmlsZShuYW1lLCAmaW1hZ2Vfc2l6ZSkp KSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwcmludF9ucGUobnBlLCAiYmFkIG9yIG1pc3Np bmcgbWljcm9jb2RlIGZpbGUgJXMiLCBuYW1lKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJl dHVybiAtRUlPOwo+ICsgwqAgwqAgwqAgfQo+ICsKPiArIMKgIMKgIMKgIGVyciA9IC1FSU5WQUw7 Cj4gKyDCoCDCoCDCoCBpZiAoaW1hZ2Vfc2l6ZSA8IHNpemVvZihzdHJ1Y3QgZGxfaW1hZ2UpKSB7 Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwcmludF9ucGUobnBlLCAiaW5jb21wbGV0ZSBtaWNy b2NvZGUgZmlsZSAlc1xuIiwgbmFtZSk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBnb3RvIGVy cjsKPiArIMKgIMKgIMKgIH0KPiArCj4gKyNpZiBERUJVR19GVwo+ICsgwqAgwqAgwqAgcHJpbnRf bnBlKG5wZSwgIm1pY3JvY29kZTogJTA4WCAlMDhYICUwOFggKDB4JVggYnl0ZXMpXG4iLAo+ICsg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW1hZ2UtPm1hZ2ljLCBpbWFnZS0+aWQsIGltYWdlLT5z aXplLCBpbWFnZS0+c2l6ZSAqIDQpOwo+ICsjZW5kaWYKPiArCj4gKyDCoCDCoCDCoCBpZiAoaW1h Z2UtPm1hZ2ljID09IHN3YWIzMihGV19NQUdJQykpIHsgLyogc3dhcHBlZCBmaWxlICovCj4gKyDC oCDCoCDCoCDCoCDCoCDCoCDCoCBpbWFnZS0+aWQgPSBzd2FiMzIoaW1hZ2UtPmlkKTsKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIGltYWdlLT5zaXplID0gc3dhYjMyKGltYWdlLT5zaXplKTsKPiAr IMKgIMKgIMKgIH0gZWxzZSBpZiAoaW1hZ2UtPm1hZ2ljICE9IEZXX01BR0lDKSB7Cj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCBwcmludF9ucGUobnBlLCAiYmFkIG1pY3JvY29kZSBmaWxlICVzIG1h Z2ljOiAweCVYXG4iLCBuYW1lLCBpbWFnZS0+bWFnaWMpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgZ290byBlcnI7Cj4gKyDCoCDCoCDCoCB9Cj4gKyDCoCDCoCDCoCBpZiAoKGltYWdlLT5zaXpl ICogNCArIHNpemVvZihzdHJ1Y3QgZGxfaW1hZ2UpKSA+IGltYWdlX3NpemUpIHsKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIHByaW50X25wZShucGUsICJpbmNvbXBsZXRlIG1pY3JvY29kZSBmaWxl ICVzXG4iLCBuYW1lKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGdvdG8gZXJyOwo+ICsgwqAg wqAgwqAgfQo+ICsgwqAgwqAgwqAgaWYgKCgoaW1hZ2UtPmlkID4+IDI0KSAmIDB4RiAvKiBOUEUg SUQgKi8pICE9IG5wZS0+aWQpIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHByaW50X25wZShu cGUsICJOUEUgSUQgbWlzbWF0Y2ggaW4gbWljcm9jb2RlIGZpbGUgJXNcbiIsIG5hbWUpOwo+ICsg wqAgwqAgwqAgwqAgwqAgwqAgwqAgZ290byBlcnI7Cj4gKyDCoCDCoCDCoCB9Cj4gKyDCoCDCoCDC oCBpZiAoaW1hZ2UtPm1hZ2ljID09IHN3YWIzMihGV19NQUdJQykpCj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCBmb3IgKGkgPSAwOyBpIDwgaW1hZ2UtPnNpemU7IGkrKykKPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIGltYWdlLT5kYXRhW2ldID0gc3dhYjMyKGltYWdlLT5kYXRh W2ldKTsKPiArCj4gKyDCoCDCoCDCoCBpZiAoY3B1X2lzX2l4cDQyeCgpICYmICgoaW1hZ2UtPmlk ID4+IDI4KSAmIDB4RiAvKiBkZXZpY2UgSUQgKi8pKSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC oCBwcmludF9ucGUobnBlLCAiSVhQNDN4L0lYUDQ2eCBtaWNyb2NvZGUgaWdub3JlZCBvbiBJWFA0 MnhcbiIpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ290byBlcnI7Cj4gKyDCoCDCoCDCoCB9 Cj4gKwo+ICsgwqAgwqAgwqAgaWYgKG5wZV9ydW5uaW5nKG5wZSkpIHsKPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIHByaW50X25wZShucGUsICJ1bmFibGUgdG8gbG9hZCBtaWNyb2NvZGUgZmlsZSAl cywgTlBFIGlzIGFscmVhZHkgcnVubmluZ1xuIiwgbmFtZSk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCBlcnIgPSAtRUJVU1k7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBnb3RvIGVycjsKPiAr IMKgIMKgIMKgIH0KPiArCj4gKyDCoCDCoCDCoCBpZiAoY3B1X2lzX2l4cDQyeCgpKSB7Cj4gKyDC oCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAoIW5wZS0+aWQpCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBpbnN0cl9zaXplID0gTlBFX0FfNDJYX0lOU1RSX1NJWkU7Cj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCBlbHNlCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCBpbnN0cl9zaXplID0gTlBFX0JfQU5EX0NfNDJYX0lOU1RSX1NJWkU7Cj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCBkYXRhX3NpemUgPSBOUEVfNDJYX0RBVEFfU0laRTsKPiArIMKgIMKgIMKgIH0g ZWxzZSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbnN0cl9zaXplID0gTlBFXzQ2WF9JTlNU Ul9TSVpFOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGF0YV9zaXplID0gTlBFXzQ2WF9EQVRB X1NJWkU7Cj4gKyDCoCDCoCDCoCB9Cj4gKwo+ICsgwqAgwqAgwqAgZm9yIChibG9ja3MgPSAwOyBi bG9ja3MgKiBzaXplb2Yoc3RydWN0IGRsX2Jsb2NrKSAvIDQgPCBpbWFnZS0+c2l6ZTsKPiArIMKg IMKgIMKgIMKgIMKgIMKgYmxvY2tzKyspCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAoaW1h Z2UtPmJsb2Nrc1tibG9ja3NdLnR5cGUgPT0gRldfQkxPQ0tfVFlQRV9FT0YpCj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBicmVhazsKPiArIMKgIMKgIMKgIGlmIChibG9ja3Mg KiBzaXplb2Yoc3RydWN0IGRsX2Jsb2NrKSAvIDQgPj0gaW1hZ2UtPnNpemUpIHsKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIHByaW50X25wZShucGUsICJtaWNyb2NvZGUgRU9GIGJsb2NrIG1hcmtl ciBub3QgZm91bmRcbiIpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ290byBlcnI7Cj4gKyDC oCDCoCDCoCB9Cj4gKwo+ICsjaWYgREVCVUdfRlcKPiArIMKgIMKgIMKgIHByaW50X25wZShucGUs ICIlaSBtaWNyb2NvZGUgYmxvY2tzIGZvdW5kXG4iLCBibG9ja3MpOwo+ICsjZW5kaWYKPiArCj4g KyDCoCDCoCDCoCB0YWJsZV9lbmQgPSBibG9ja3MgKiBzaXplb2Yoc3RydWN0IGRsX2Jsb2NrKSAv IDQgKyAxIC8qIEVPRiBtYXJrZXIgKi87Cj4gKyDCoCDCoCDCoCBmb3IgKGkgPSAwLCBibGsgPSBp bWFnZS0+YmxvY2tzOyBpIDwgYmxvY2tzOyBpKyssIGJsaysrKSB7Cj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCBpZiAoYmxrLT5vZmZzZXQgPiBpbWFnZS0+c2l6ZSAtIHNpemVvZihzdHJ1Y3QgZGxf Y29kZWJsb2NrKSAvIDQKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHx8IGJsay0+b2Zm c2V0IDwgdGFibGVfZW5kKSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBw cmludF9ucGUobnBlLCAiaW52YWxpZCBvZmZzZXQgMHglWCBvZiAiCj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAibWljcm9jb2RlIGJsb2NrICMlaVxu IiwgYmxrLT5vZmZzZXQsIGkpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg Z290byBlcnI7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9Cj4gKwo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgY2IgPSAoc3RydWN0IGRsX2NvZGVibG9jayopJmltYWdlLT5kYXRhW2Jsay0+b2Zm c2V0XTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChibGstPnR5cGUgPT0gRldfQkxPQ0tf VFlQRV9JTlNUUikgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKGNi LT5ucGVfYWRkciArIGNiLT5zaXplID4gaW5zdHJfc2l6ZSkKPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGdvdG8gdG9vX2JpZzsKPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNtZCA9IENNRF9XUl9JTlNfTUVNOwo+ICsgwqAgwqAgwqAg wqAgwqAgwqAgwqAgfSBlbHNlIGlmIChibGstPnR5cGUgPT0gRldfQkxPQ0tfVFlQRV9EQVRBKSB7 Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAoY2ItPm5wZV9hZGRyICsg Y2ItPnNpemUgPiBkYXRhX3NpemUpCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBnb3RvIHRvb19iaWc7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCBjbWQgPSBDTURfV1JfREFUQV9NRU07Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9 IGVsc2Ugewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHJpbnRfbnBlKG5w ZSwgImludmFsaWQgbWljcm9jb2RlIGJsb2NrICMlaSB0eXBlIDB4JVhcbiIsCj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpLCBibGstPnR5cGUpOwo+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ290byBlcnI7Cj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCB9Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAoYmxrLT5vZmZzZXQg KyBzaXplb2YoKmNiKSAvIDQgKyBjYi0+c2l6ZSA+IGltYWdlLT5zaXplKSB7Cj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwcmludF9ucGUobnBlLCAibWljcm9jb2RlIGJsb2Nr ICMlaSBkb2Vzbid0ICIKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgICJmaXQgaW4gbWljcm9jb2RlIGltYWdlOiB0eXBlICVjLCBzdGFydCAweCVYLCIK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICIgbGVu Z3RoIDB4JVhcbiIsIGksCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCBibGstPnR5cGUgPT0gRldfQkxPQ0tfVFlQRV9JTlNUUiA/ICdJJyA6ICdEJywK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNiLT5u cGVfYWRkciwgY2ItPnNpemUpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg Z290byBlcnI7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9Cj4gKwo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgZm9yIChqID0gMDsgaiA8IGNiLT5zaXplOyBqKyspCj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCBucGVfY21kX3dyaXRlKG5wZSwgY2ItPm5wZV9hZGRyICsgaiwg Y21kLCBjYi0+ZGF0YVtqXSk7Cj4gKyDCoCDCoCDCoCB9Cj4gKwo+ICsgwqAgwqAgwqAgbnBlX3N0 YXJ0KG5wZSk7Cj4gKyDCoCDCoCDCoCBpZiAoIW5wZV9ydW5uaW5nKG5wZSkpCj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCBwcmludF9ucGUobnBlLCAidW5hYmxlIHRvIHN0YXJ0XG4iKTsKPiArIMKg IMKgIMKgIGZyZWUoaW1hZ2UpOwo+ICsgwqAgwqAgwqAgcmV0dXJuIDA7Cj4gKwo+ICt0b29fYmln Ogo+ICsgwqAgwqAgwqAgcHJpbnRfbnBlKG5wZSwgIm1pY3JvY29kZSBibG9jayAjJWkgZG9lc24n dCBmaXQgaW4gTlBFICIKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICJtZW1vcnk6IHR5cGUg JWMsIHN0YXJ0IDB4JVgsIGxlbmd0aCAweCVYXG4iLCBpLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgYmxrLT50eXBlID09IEZXX0JMT0NLX1RZUEVfSU5TVFIgPyAnSScgOiAnRCcsCj4gKyDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjYi0+bnBlX2FkZHIsIGNiLT5zaXplKTsKPiArZXJyOgo+ ICsgwqAgwqAgwqAgZnJlZShpbWFnZSk7Cj4gKyDCoCDCoCDCoCByZXR1cm4gZXJyOwo+ICt9Cj4g Kwo+ICsKPiArc3RydWN0IG5wZSAqbnBlX3JlcXVlc3QoaW50IGlkKQo+ICt7Cj4gKyDCoCDCoCDC oCBpZiAoaWQgPCBOUEVfQ09VTlQpCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAobnBlX3Rh YltpZF0udmFsaWQpCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4g Jm5wZV90YWJbaWRdOwo+ICsgwqAgwqAgwqAgcmV0dXJuIE5VTEw7Cj4gK30KPiArCj4gK3N0YXRp YyBpbnQgX19pbml0IG5wZV9pbml0KHZvaWQpCj4gK3sKPiArIMKgIMKgIMKgIGludCBpOwo+ICsK PiArIMKgIMKgIMKgIGZvciAoaSA9IDA7IGkgPCBOUEVfQ09VTlQ7IGkrKykgewo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgc3RydWN0IG5wZSAqbnBlID0gJm5wZV90YWJbaV07Cj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCBpZiAoIShpeHA0eHhfcmVhZF9mZWF0dXJlX2JpdHMoKSAmIChJWFA0WFhf RkVBVFVSRV9SRVNFVF9OUEVBIDw8IGkpKSkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIGNvbnRpbnVlOyAvKiBOUEUgYWxyZWFkeSBkaXNhYmxlZCBvciBub3QgcHJlc2VudCAq Lwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKG5wZV9yZXNldChucGUpKQo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29udGludWU7Cj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCBucGUtPnZhbGlkID0gMTsKPiArIMKgIMKgIMKgIH0KPiArIMKgIMKgIMKgIHJldHVybiAw Owo+ICt9Cj4gKwo+ICtjb3JlZGV2aWNlX2luaXRjYWxsKG5wZV9pbml0KTsKPiBkaWZmIC0tZ2l0 IGEvYXJjaC9hcm0vbWFjaC1peHA0eHgvcW1nci5jIGIvYXJjaC9hcm0vbWFjaC1peHA0eHgvcW1n ci5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi40OWNiYTYwCj4gLS0t IC9kZXYvbnVsbAo+ICsrKyBiL2FyY2gvYXJtL21hY2gtaXhwNHh4L3FtZ3IuYwo+IEBAIC0wLDAg KzEsMjY5IEBACj4gKy8qCj4gKyAqIEludGVsIElYUDR4eCBRdWV1ZSBNYW5hZ2VyIGRyaXZlciBm b3IgTGludXgKPiArICoKPiArICogQ29weXJpZ2h0IChDKSAyMDA3IEtyenlzenRvZiBIYWxhc2Eg PGtoY0BwbS53YXcucGw+Cj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Cj4gKyAqIHVuZGVyIHRo ZSB0ZXJtcyBvZiB2ZXJzaW9uIDIgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCj4g KyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgo+ICsgKi8K PiArCj4gKyNpbmNsdWRlIDxpbml0Lmg+Cj4gKyNpbmNsdWRlIDxlcnJuby5oPgo+ICsjaW5jbHVk ZSA8bWFjaC9xbWdyLmg+Cj4gKwo+ICtzdGF0aWMgdTMyIHVzZWRfc3JhbV9iaXRtYXBbNF07IC8q IDEyOCAxNi1kd29yZCBwYWdlcyAqLwo+ICsKPiArI2lmIERFQlVHX1FNR1IKPiArY2hhciBxbWdy X3F1ZXVlX2Rlc2NzW0hBTEZfUVVFVUVTXVszMl07Cj4gKyNlbmRpZgo+ICsKPiArI2lmZGVmIENP TkZJR19VU0VfSVJRCj4gKwo+ICtzdGF0aWMgdm9pZCAoKmlycV9oYW5kbGVyc1tIQUxGX1FVRVVF U10pKHZvaWQgKnBkZXYpOwo+ICtzdGF0aWMgdm9pZCAqaXJxX3BkZXZzW0hBTEZfUVVFVUVTXTsK PiArCj4gKyN1bmRlZiBmbHMKPiArc3RhdGljIGlubGluZSBpbnQgZmxzKGludCB4KQo+ICt7Cj4g KyDCoCDCoCDCoCBpbnQgcmV0Owo+ICsgwqAgwqAgwqAgYXNtKCJjbHpcdCUwLCAlMSIgOiAiPXIi IChyZXQpIDogInIiICh4KSA6ICJjYyIpOwo+ICsgwqAgwqAgwqAgcmV0ID0gMzIgLSByZXQ7Cj4g KyDCoCDCoCDCoCByZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICsKPiArdm9pZCBxbWdyX3NldF9pcnEo dW5zaWduZWQgaW50IHF1ZXVlLCBpbnQgc3JjLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg dm9pZCAoKmhhbmRsZXIpKHZvaWQgKnBkZXYpLCB2b2lkICpwZGV2KQo+ICt7Cj4gKyDCoCDCoCDC oCBjb25zdCB1MzIgKnJlZzsKPiArIMKgIMKgIMKgIGludCBiaXQ7Cj4gKyDCoCDCoCDCoCBCVUdf T04oc3JjID4gUVVFVUVfSVJRX1NSQ19OT1RfRlVMTCk7Cj4gKyDCoCDCoCDCoCByZWcgPSAmcW1n cl9yZWdzLT5pcnFzcmNbcXVldWUgPj4gM107IC8qIDggcXVldWVzIHBlciB1MzIgKi8KPiArIMKg IMKgIMKgIGJpdCA9IChxdWV1ZSAlIDgpICogNDsgLyogMyBiaXRzICsgMSByZXNlcnZlZCBiaXQg cGVyIHF1ZXVlICovCj4gKyDCoCDCoCDCoCBfX3Jhd193cml0ZWwoKF9fcmF3X3JlYWRsKHJlZykg JiB+KDcgPDwgYml0KSkgfCAoc3JjIDw8IGJpdCksIHJlZyk7Cj4gKwo+ICsgwqAgwqAgwqAgaXJx X2hhbmRsZXJzW3F1ZXVlXSA9IGhhbmRsZXI7Cj4gKyDCoCDCoCDCoCBpcnFfcGRldnNbcXVldWVd ID0gcGRldjsKPiArfQo+ICsKPiArCj4gK3N0YXRpYyB2b2lkIHFtZ3JfaXJxMV9hMCh2b2lkICpk YXRhKQo+ICt7Cj4gKyDCoCDCoCDCoCBpbnQgaTsKPiArIMKgIMKgIMKgIHUzMiBlbl9iaXRtYXAs IHNyYywgc3RhdDsKPiArCj4gKyDCoCDCoCDCoCAvKiBBQ0sgLSBpdCBtYXkgY2xlYXIgYW55IGJp dHMgc28gZG9uJ3QgcmVseSBvbiBpdCAqLwo+ICsgwqAgwqAgwqAgX19yYXdfd3JpdGVsKDB4RkZG RkZGRkYsICZxbWdyX3JlZ3MtPmlycXN0YXRbMF0pOwo+ICsKPiArIMKgIMKgIMKgIGVuX2JpdG1h cCA9IHFtZ3JfcmVncy0+aXJxZW5bMF07Cj4gKyDCoCDCoCDCoCB3aGlsZSAoZW5fYml0bWFwKSB7 Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpID0gZmxzKGVuX2JpdG1hcCkgLSAxOyAvKiBudW1i ZXIgb2YgdGhlIGxhc3QgImxvdyIgcXVldWUgKi8KPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGVu X2JpdG1hcCAmPSB+QklUKGkpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc3JjID0gcW1ncl9y ZWdzLT5pcnFzcmNbaSA+PiAzXTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHN0YXQgPSBxbWdy X3JlZ3MtPnN0YXQxW2kgPj4gM107Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAoc3JjICYg NCkgLyogdGhlIElSUSBjb25kaXRpb24gaXMgaW52ZXJ0ZWQgKi8KPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIHN0YXQgPSB+c3RhdDsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IGlmIChzdGF0ICYgQklUKHNyYyAmIDMpKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgaXJxX2hhbmRsZXJzW2ldKGlycV9wZGV2c1tpXSk7Cj4gKyDCoCDCoCDCoCB9Cj4gK30K PiArCj4gKwo+ICtzdGF0aWMgdm9pZCBxbWdyX2lycTEodm9pZCAqZGF0YSkKPiArewo+ICsgwqAg wqAgwqAgaW50IGk7Cj4gKyDCoCDCoCDCoCB1MzIgcmVxX2JpdG1hcCA9IF9fcmF3X3JlYWRsKCZx bWdyX3JlZ3MtPmlycXN0YXRbMF0pOwo+ICsKPiArIMKgIMKgIMKgIGlmICghcmVxX2JpdG1hcCkK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybjsKPiArIMKgIMKgIMKgIF9fcmF3X3dyaXRl bChyZXFfYml0bWFwLCAmcW1ncl9yZWdzLT5pcnFzdGF0WzBdKTsgLyogQUNLICovCj4gKwo+ICsg wqAgwqAgwqAgd2hpbGUgKHJlcV9iaXRtYXApIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGkg PSBmbHMocmVxX2JpdG1hcCkgLSAxOyAvKiBudW1iZXIgb2YgdGhlIGxhc3QgcXVldWUgKi8KPiAr IMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlcV9iaXRtYXAgJj0gfkJJVChpKTsKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIGlycV9oYW5kbGVyc1tpXShpcnFfcGRldnNbaV0pOwo+ICsgwqAgwqAgwqAg fQo+ICt9Cj4gKwo+ICsKPiArdm9pZCBxbWdyX2VuYWJsZV9pcnEodW5zaWduZWQgaW50IHF1ZXVl KQo+ICt7Cj4gKyDCoCDCoCDCoCB1MzIgbWFzayA9IDEgPDwgcXVldWU7Cj4gKwo+ICsgwqAgwqAg wqAgX19yYXdfd3JpdGVsKF9fcmF3X3JlYWRsKCZxbWdyX3JlZ3MtPmlycWVuWzBdKSB8IG1hc2ss Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCZxbWdyX3JlZ3MtPmlycWVuWzBdKTsK PiArfQo+ICsKPiArdm9pZCBxbWdyX2Rpc2FibGVfaXJxKHVuc2lnbmVkIGludCBxdWV1ZSkKPiAr ewo+ICsgwqAgwqAgwqAgdTMyIG1hc2sgPSAxIDw8IHF1ZXVlOwo+ICsKPiArIMKgIMKgIMKgIF9f cmF3X3dyaXRlbChfX3Jhd19yZWFkbCgmcW1ncl9yZWdzLT5pcnFlblswXSkgJiB+bWFzaywKPiAr IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgJnFtZ3JfcmVncy0+aXJxZW5bMF0pOwo+ICsg wqAgwqAgwqAgX19yYXdfd3JpdGVsKG1hc2ssICZxbWdyX3JlZ3MtPmlycXN0YXRbMF0pOyAvKiBj bGVhciAqLwo+ICt9Cj4gKwo+ICsjZW5kaWYgLyogQ09ORklHX1VTRV9JUlEgKi8KPiArCj4gK3N0 YXRpYyBpbmxpbmUgdm9pZCBzaGlmdF9tYXNrKHUzMiAqbWFzaykKPiArewo+ICsgwqAgwqAgwqAg bWFza1szXSA9IG1hc2tbM10gPDwgMSB8IG1hc2tbMl0gPj4gMzE7Cj4gKyDCoCDCoCDCoCBtYXNr WzJdID0gbWFza1syXSA8PCAxIHwgbWFza1sxXSA+PiAzMTsKPiArIMKgIMKgIMKgIG1hc2tbMV0g PSBtYXNrWzFdIDw8IDEgfCBtYXNrWzBdID4+IDMxOwo+ICsgwqAgwqAgwqAgbWFza1swXSA8PD0g MTsKPiArfQo+ICsKPiArI2lmIERFQlVHX1FNR1IKPiArdm9pZCBxbWdyX3JlcXVlc3RfcXVldWUo dW5zaWduZWQgaW50IHF1ZXVlLCB1bnNpZ25lZCBpbnQgbGVuIC8qIGR3b3JkcyAqLywKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVuc2lnbmVkIGludCBuZWFybHlfZW1wdHlf d2F0ZXJtYXJrLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdW5zaWduZWQg aW50IG5lYXJseV9mdWxsX3dhdGVybWFyaywKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIGNvbnN0IGNoYXIgKmRlc2NfZm9ybWF0LCBjb25zdCBjaGFyKiBuYW1lKQo+ICsjZWxz ZQo+ICt2b2lkIF9fcW1ncl9yZXF1ZXN0X3F1ZXVlKHVuc2lnbmVkIGludCBxdWV1ZSwgdW5zaWdu ZWQgaW50IGxlbiAvKiBkd29yZHMgKi8sCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCB1bnNpZ25lZCBpbnQgbmVhcmx5X2VtcHR5X3dhdGVybWFyaywKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVuc2lnbmVkIGludCBuZWFybHlfZnVsbF93YXRl cm1hcmspCj4gKyNlbmRpZgo+ICt7Cj4gKyDCoCDCoCDCoCB1MzIgY2ZnLCBhZGRyID0gMCwgbWFz a1s0XTsgLyogaW4gMTYtZHdvcmRzICovCj4gKwo+ICsgwqAgwqAgwqAgQlVHX09OKHF1ZXVlID49 IEhBTEZfUVVFVUVTKTsKPiArIMKgIMKgIMKgIEJVR19PTigobmVhcmx5X2VtcHR5X3dhdGVybWFy ayB8IG5lYXJseV9mdWxsX3dhdGVybWFyaykgJiB+Nyk7Cj4gKwo+ICsgwqAgwqAgwqAgc3dpdGNo IChsZW4pIHsKPiArIMKgIMKgIMKgIGNhc2UgwqAxNjoKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IGNmZyA9IDAgPDwgMjQ7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBtYXNrWzBdID0gMHgxOwo+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7Cj4gKyDCoCDCoCDCoCBjYXNlIMKgMzI6Cj4g KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjZmcgPSAxIDw8IDI0Owo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgbWFza1swXSA9IDB4MzsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGJyZWFrOwo+ICsg wqAgwqAgwqAgY2FzZSDCoDY0Ogo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY2ZnID0gMiA8PCAy NDsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIG1hc2tbMF0gPSAweEY7Cj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCBicmVhazsKPiArIMKgIMKgIMKgIGNhc2UgMTI4Ogo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgY2ZnID0gMyA8PCAyNDsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIG1hc2tbMF0g PSAweEZGOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7Cj4gKyDCoCDCoCDCoCBkZWZh dWx0Ogo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgQlVHKCk7Cj4gKyDCoCDCoCDCoCB9Cj4gKwo+ ICsgwqAgwqAgwqAgY2ZnIHw9IG5lYXJseV9lbXB0eV93YXRlcm1hcmsgPDwgMjY7Cj4gKyDCoCDC oCDCoCBjZmcgfD0gbmVhcmx5X2Z1bGxfd2F0ZXJtYXJrIDw8IDI5Owo+ICsgwqAgwqAgwqAgbGVu IC89IDE2OyAvKiBpbiAxNi1kd29yZHM6IDEsIDIsIDQgb3IgOCAqLwo+ICsgwqAgwqAgwqAgbWFz a1sxXSA9IG1hc2tbMl0gPSBtYXNrWzNdID0gMDsKPiArCj4gKyDCoCDCoCDCoCBCVUdfT04oX19y YXdfcmVhZGwoJnFtZ3JfcmVncy0+c3JhbVtxdWV1ZV0pKTsKPiArCj4gKyDCoCDCoCDCoCB3aGls ZSAoMSkgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKCEodXNlZF9zcmFtX2JpdG1hcFsw XSAmIG1hc2tbMF0pICYmCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAhKHVzZWRfc3Jh bV9iaXRtYXBbMV0gJiBtYXNrWzFdKSAmJgo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg ISh1c2VkX3NyYW1fYml0bWFwWzJdICYgbWFza1syXSkgJiYKPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgICEodXNlZF9zcmFtX2JpdG1hcFszXSAmIG1hc2tbM10pKQo+ICsgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7IC8qIGZvdW5kIGZyZWUgc3BhY2UgKi8KPiAr Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBhZGRyKys7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC oCBzaGlmdF9tYXNrKG1hc2spOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKGFkZHIgKyBs ZW4gPiBBUlJBWV9TSVpFKHFtZ3JfcmVncy0+c3JhbSkpIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIGZwcmludGYoc3RkZXJyLCAicW1ncjogbm8gZnJlZSBTUkFNIHNwYWNl IGZvciIKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICIg cXVldWUgJWlcbiIsIHF1ZXVlKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IEJVRygpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfQo+ICsgwqAgwqAgwqAgfQo+ICsKPiAr IMKgIMKgIMKgIHVzZWRfc3JhbV9iaXRtYXBbMF0gfD0gbWFza1swXTsKPiArIMKgIMKgIMKgIHVz ZWRfc3JhbV9iaXRtYXBbMV0gfD0gbWFza1sxXTsKPiArIMKgIMKgIMKgIHVzZWRfc3JhbV9iaXRt YXBbMl0gfD0gbWFza1syXTsKPiArIMKgIMKgIMKgIHVzZWRfc3JhbV9iaXRtYXBbM10gfD0gbWFz a1szXTsKPiArIMKgIMKgIMKgIF9fcmF3X3dyaXRlbChjZmcgfCAoYWRkciA8PCAxNCksICZxbWdy X3JlZ3MtPnNyYW1bcXVldWVdKTsKPiArI2lmIERFQlVHX1FNR1IKPiArIMKgIMKgIMKgIC8qIG5v IHNucHJpbnRmKCkgKi8KPiArIMKgIMKgIMKgIHNwcmludGYocW1ncl9xdWV1ZV9kZXNjc1txdWV1 ZV0sIGRlc2NfZm9ybWF0LCBuYW1lKTsKPiArIMKgIMKgIMKgIGZwcmludGYoc3RkZXJyLCAicW1n cjogcmVxdWVzdGVkIHF1ZXVlICVzKCVpKSBhZGRyID0gMHglMDJYXG4iLAo+ICsgwqAgwqAgwqAg wqAgwqAgwqAgwqAgcW1ncl9xdWV1ZV9kZXNjc1txdWV1ZV0sIHF1ZXVlLCBhZGRyKTsKPiArI2Vu ZGlmCj4gK30KPiArCj4gK3ZvaWQgcW1ncl9yZWxlYXNlX3F1ZXVlKHVuc2lnbmVkIGludCBxdWV1 ZSkKPiArewo+ICsgwqAgwqAgwqAgdTMyIGNmZywgYWRkciwgbWFza1s0XTsKPiArCj4gKyDCoCDC oCDCoCBCVUdfT04ocXVldWUgPj0gSEFMRl9RVUVVRVMpOyAvKiBub3QgaW4gdmFsaWQgcmFuZ2Ug Ki8KPiArCj4gKyDCoCDCoCDCoCBjZmcgPSBfX3Jhd19yZWFkbCgmcW1ncl9yZWdzLT5zcmFtW3F1 ZXVlXSk7Cj4gKyDCoCDCoCDCoCBhZGRyID0gKGNmZyA+PiAxNCkgJiAweEZGOwo+ICsKPiArIMKg IMKgIMKgIEJVR19PTighYWRkcik7IC8qIG5vdCByZXF1ZXN0ZWQgKi8KPiArCj4gKyDCoCDCoCDC oCBzd2l0Y2ggKChjZmcgPj4gMjQpICYgMykgewo+ICsgwqAgwqAgwqAgY2FzZSAwOiBtYXNrWzBd ID0gMHgxOyBicmVhazsKPiArIMKgIMKgIMKgIGNhc2UgMTogbWFza1swXSA9IDB4MzsgYnJlYWs7 Cj4gKyDCoCDCoCDCoCBjYXNlIDI6IG1hc2tbMF0gPSAweEY7IGJyZWFrOwo+ICsgwqAgwqAgwqAg Y2FzZSAzOiBtYXNrWzBdID0gMHhGRjsgYnJlYWs7Cj4gKyDCoCDCoCDCoCB9Cj4gKwo+ICsgwqAg wqAgwqAgbWFza1sxXSA9IG1hc2tbMl0gPSBtYXNrWzNdID0gMDsKPiArCj4gKyDCoCDCoCDCoCB3 aGlsZSAoYWRkci0tKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc2hpZnRfbWFzayhtYXNrKTsK PiArCj4gKyNpZiBERUJVR19RTUdSCj4gKyDCoCDCoCDCoCBmcHJpbnRmKHN0ZGVyciwgInFtZ3I6 IHJlbGVhc2luZyBxdWV1ZSAlcyglaSlcbiIsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBxbWdy X3F1ZXVlX2Rlc2NzW3F1ZXVlXSwgcXVldWUpOwo+ICsgwqAgwqAgwqAgcW1ncl9xdWV1ZV9kZXNj c1txdWV1ZV1bMF0gPSAnXHgwJzsKPiArI2VuZGlmCj4gKyDCoCDCoCDCoCBfX3Jhd193cml0ZWwo MCwgJnFtZ3JfcmVncy0+c3JhbVtxdWV1ZV0pOwo+ICsKPiArIMKgIMKgIMKgIHVzZWRfc3JhbV9i aXRtYXBbMF0gJj0gfm1hc2tbMF07Cj4gKyDCoCDCoCDCoCB1c2VkX3NyYW1fYml0bWFwWzFdICY9 IH5tYXNrWzFdOwo+ICsgwqAgwqAgwqAgdXNlZF9zcmFtX2JpdG1hcFsyXSAmPSB+bWFza1syXTsK PiArIMKgIMKgIMKgIHVzZWRfc3JhbV9iaXRtYXBbM10gJj0gfm1hc2tbM107Cj4gKyNpZmRlZiBD T05GSUdfVVNFX0lSUQo+ICsgwqAgwqAgwqAgaXJxX2hhbmRsZXJzW3F1ZXVlXSA9IE5VTEw7IC8q IGNhdGNoIElSUSBidWdzICovCj4gKyNlbmRpZgo+ICsKPiArIMKgIMKgIMKgIHdoaWxlICgoYWRk ciA9IHFtZ3JfZ2V0X2VudHJ5KHF1ZXVlKSkpCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmcHJp bnRmKHN0ZGVyciwgInFtZ3I6IHJlbGVhc2VkIHF1ZXVlICVpIG5vdCBlbXB0eTogMHglMDhYXG4i LAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcXVldWUsIGFkZHIpOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgaW50IF9faW5pdCBxbWdyX2luaXQodm9pZCkKPiArewo+ICsgwqAgwqAg wqAgaW50IGk7Cj4gKyNpZmRlZiBDT05GSUdfVVNFX0lSUQo+ICsgwqAgwqAgwqAgaW50ZXJydXB0 X2hhbmRsZXJfdCAqaGFuZGxlcjsKPiArI2VuZGlmCj4gKwo+ICsgwqAgwqAgwqAgLyogcmVzZXQg cW1nciByZWdpc3RlcnMgKi8KPiArIMKgIMKgIMKgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fcmF3X3dyaXRlbCgweDMzMzMzMzMzLCAmcW1ncl9y ZWdzLT5zdGF0MVtpXSk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX3Jhd193cml0ZWwoMCwg JnFtZ3JfcmVncy0+aXJxc3JjW2ldKTsKPiArIMKgIMKgIMKgIH0KPiArIMKgIMKgIMKgIGZvciAo aSA9IDA7IGkgPCAyOyBpKyspIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fcmF3X3dyaXRl bCgwLCAmcW1ncl9yZWdzLT5zdGF0MltpXSk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX3Jh d193cml0ZWwoMHhGRkZGRkZGRiwgJnFtZ3JfcmVncy0+aXJxc3RhdFtpXSk7IC8qIGNsZWFyICov Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX3Jhd193cml0ZWwoMCwgJnFtZ3JfcmVncy0+aXJx ZW5baV0pOwo+ICsgwqAgwqAgwqAgfQo+ICsKPiArIMKgIMKgIMKgIF9fcmF3X3dyaXRlbCgweEZG RkZGRkZGLCAmcW1ncl9yZWdzLT5zdGF0bmVfaCk7Cj4gKyDCoCDCoCDCoCBfX3Jhd193cml0ZWwo MCwgJnFtZ3JfcmVncy0+c3RhdGZfaCk7Cj4gKwo+ICsgwqAgwqAgwqAgZm9yIChpID0gMDsgaSA8 IFFVRVVFUzsgaSsrKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19yYXdfd3JpdGVsKDAsICZx bWdyX3JlZ3MtPnNyYW1baV0pOwo+ICsKPiArI2lmZGVmIENPTkZJR19VU0VfSVJRCj4gKyDCoCDC oCDCoCBpZiAoY3B1X2lzX2l4cDQyeF9yZXZfYTAoKSkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IGhhbmRsZXIgPSBxbWdyX2lycTFfYTA7Cj4gKyDCoCDCoCDCoCBlbHNlCj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCBoYW5kbGVyID0gcW1ncl9pcnExOwo+ICsKPiArIMKgIMKgIMKgIGlycV9pbnN0 YWxsX2hhbmRsZXIoSVhQNDI1X1FNMV9JUlEsIGhhbmRsZXIsIE5VTEwpOwo+ICsjZW5kaWYKPiAr IMKgIMKgIMKgIHVzZWRfc3JhbV9iaXRtYXBbMF0gPSAweEY7IC8qIDQgZmlyc3QgcGFnZXMgcmVz ZXJ2ZWQgZm9yIGNvbmZpZyAqLwo+ICsgwqAgwqAgwqAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK2Nv cmVkZXZpY2VfaW5pdGNhbGwocW1ncl9pbml0KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQv S2NvbmZpZyBiL2RyaXZlcnMvbmV0L0tjb25maWcKPiBpbmRleCA2OWYzMzUyLi5kZjZlNDJjIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvbmV0L0tjb25maWcKPiArKysgYi9kcml2ZXJzL25ldC9LY29u ZmlnCj4gQEAgLTc3LDYgKzc3LDE0IEBAIGNvbmZpZyBEUklWRVJfTkVUX01BQ0IKPiDCoCDCoCDC oCDCoGRlcGVuZHMgb24gSEFTX01BQ0IKPiDCoCDCoCDCoCDCoHNlbGVjdCBNSUlERVYKPgo+ICtj b25maWcgRFJJVkVSX05FVF9JWFA0WFhfRVRICj4gKyDCoCDCoCDCoCB0cmlzdGF0ZSAiSW50ZWwg SVhQNHh4IEV0aGVybmV0IHN1cHBvcnQiCj4gKyDCoCDCoCDCoCBkZXBlbmRzIG9uIEFSQ0hfSVhQ NFhYICYmIElYUDRYWF9OUEUgJiYgSVhQNFhYX1FNR1IKPiArIMKgIMKgIMKgIHNlbGVjdCBNSUlE RVYKPiArIMKgIMKgIMKgIGhlbHAKPiArIMKgIMKgIMKgIMKgIFNheSBZIGhlcmUgaWYgeW91IHdh bnQgdG8gdXNlIGJ1aWx0LWluIEV0aGVybmV0IHBvcnRzCj4gKyDCoCDCoCDCoCDCoCBvbiBJWFA0 eHggcHJvY2Vzc29yLgo+ICsKPiDCoGNvbmZpZyBEUklWRVJfTkVUX1RBUAo+IMKgIMKgIMKgIMKg Ym9vbCAidGFwIEV0aGVybmV0IGRyaXZlciIKPiDCoCDCoCDCoCDCoGRlcGVuZHMgb24gTElOVVgK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC9NYWtlZmls ZQo+IGluZGV4IDk2ZDNkMzIuLjk3Y2I0NGIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9uZXQvTWFr ZWZpbGUKPiArKysgYi9kcml2ZXJzL25ldC9NYWtlZmlsZQo+IEBAIC0xMSwzICsxMSw0IEBAIG9i ai0kKENPTkZJR19EUklWRVJfTkVUX01BQ0IpIMKgIMKgIMKgIMKgICs9IG1hY2Iubwo+IMKgb2Jq LSQoQ09ORklHX0RSSVZFUl9ORVRfVEFQKSDCoCDCoCDCoCDCoCDCoCArPSB0YXAubwo+IMKgb2Jq LSQoQ09ORklHX01JSURFVikgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKz0gbWlpZGV2Lm8K PiDCoG9iai0kKENPTkZJR19ORVRfVVNCKSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCs9IHVz Yi8KPiArb2JqLSQoQ09ORklHX0RSSVZFUl9ORVRfSVhQNFhYX0VUSCkgwqAgwqArPSBpeHA0eHhf ZXRoLm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXhwNHh4X2V0aC5jIGIvZHJpdmVycy9u ZXQvaXhwNHh4X2V0aC5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi43 MWU2ZDkyCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvbmV0L2l4cDR4eF9ldGguYwo+ IEBAIC0wLDAgKzEsNzYzIEBACj4gKy8qCj4gKyAqIEludGVsIElYUDR4eCBFdGhlcm5ldCBkcml2 ZXIgZm9yIExpbnV4Cj4gKyAqCj4gKyAqIENvcHlyaWdodCAoQykgMjAwNyBLcnp5c3p0b2YgSGFs YXNhIDxraGNAcG0ud2F3LnBsPgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAo+ICsgKiB1bmRl ciB0aGUgdGVybXMgb2YgdmVyc2lvbiAyIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQo+ICsgKiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPiAr ICoKPiArICogRXRoZXJuZXQgcG9ydCBjb25maWcgKDB4MDAgaXMgbm90IHByZXNlbnQgb24gSVhQ NDJYKToKPiArICoKPiArICogbG9naWNhbCBwb3J0IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgMHgw MCDCoCDCoCDCoCDCoCDCoCDCoDB4MTAgwqAgwqAgwqAgwqAgwqAgwqAweDIwCj4gKyAqIE5QRSDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAwIChOUEUtQSkgwqAgwqAgwqAgMSAoTlBFLUIpIMKgIMKg IMKgIDIgKE5QRS1DKQo+ICsgKiBwaHlzaWNhbCBwb3J0IMKgIMKgIMKgIDIgwqAgwqAgwqAgwqAg wqAgwqAgwqAgMCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAxCj4gKyAqIFJYIHF1ZXVlICh2YXJpYWJs ZSkgMjAgwqAgwqAgwqAgwqAgwqAgwqAgwqAyMSDCoCDCoCDCoCDCoCDCoCDCoCDCoDIyCj4gKyAq IFRYIHF1ZXVlIMKgIMKgIMKgIMKgIMKgIMKgMjMgwqAgwqAgwqAgwqAgwqAgwqAgwqAyNCDCoCDC oCDCoCDCoCDCoCDCoCDCoDI1Cj4gKyAqIFJYLWZyZWUgcXVldWUgwqAgwqAgwqAgMjYgwqAgwqAg wqAgwqAgwqAgwqAgwqAyNyDCoCDCoCDCoCDCoCDCoCDCoCDCoDI4Cj4gKyAqIFRYLWRvbmUgcXVl dWUgaXMgYWx3YXlzIDMxLCBwZXItcG9ydCBSWCBxdWV1ZSBpcyBjb25maWd1cmFibGUKPiArICoK PiArICoKPiArICogUXVldWUgZW50cmllczoKPiArICogYml0cyAwIC0+IDEgwqAtIE5QRSBJRCAo UlggYW5kIFRYLWRvbmUpCj4gKyAqIGJpdHMgMCAtPiAyIMKgLSBwcmlvcml0eSAoVFgsIHBlciA4 MDIuMUQpCj4gKyAqIGJpdHMgMyAtPiA0IMKgLSBwb3J0IElEICh1c2VyLXNldD8pCj4gKyAqIGJp dHMgNSAtPiAzMSAtIHBoeXNpY2FsIGRlc2NyaXB0b3IgYWRkcmVzcwo+ICsgKi8KPiArCj4gKyNp bmNsdWRlIDxjb21tb24uaD4KPiArI2luY2x1ZGUgPGluaXQuaD4KPiArI2luY2x1ZGUgPG1hbGxv Yy5oPgo+ICsjaW5jbHVkZSA8bWlpZGV2Lmg+Cj4gKyNpbmNsdWRlIDxuZXQuaD4KPiArI2luY2x1 ZGUgPGVycm5vLmg+Cj4gKyNpbmNsdWRlIDxtYWNoL2l4cDR4eC1yZWdzLmg+Cj4gKyNpbmNsdWRl IDxtYWNoL3BsYXRmb3JtLmg+Cj4gKyNpbmNsdWRlIDxtYWNoL2NwdS5oPgo+ICsjaW5jbHVkZSA8 bWFjaC9ucGUuaD4KPiArI2luY2x1ZGUgPG1hY2gvcW1nci5oPgo+ICsKPiArI2RlZmluZSBERUJV R19ERVNDIMKgIMKgIMKgIMKgIMKgIMKgIDAKPiArI2RlZmluZSBERUJVR19SWCDCoCDCoCDCoCDC oCDCoCDCoCDCoCAwCj4gKyNkZWZpbmUgREVCVUdfVFggwqAgwqAgwqAgwqAgwqAgwqAgwqAgMAo+ ICsjZGVmaW5lIERFQlVHX1BLVF9CWVRFUyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDAKPiArI2Rl ZmluZSBERUJVR19NRElPIMKgIMKgIMKgIMKgIMKgIMKgIDAKPiArI2RlZmluZSBERUJVR19PUEVO IMKgIMKgIMKgIMKgIMKgIMKgIDAKPiArI2RlZmluZSBERUJVR19DTE9TRSDCoCDCoCDCoCDCoCDC oCDCoDAKPiArCj4gKyNkZWZpbmUgUlhfREVTQ1MgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMTYgLyog YWxzbyBsZW5ndGggb2YgYWxsIFJYIHF1ZXVlcyAqLwo+ICsjZGVmaW5lIFRYX0RFU0NTIMKgIMKg IMKgIMKgIMKgIMKgIMKgIDE2IC8qIGFsc28gbGVuZ3RoIG9mIGFsbCBUWCBxdWV1ZXMgKi8KPiAr I2RlZmluZSBUWERPTkVfUVVFVUVfTEVOIMKgIMKgIMKgIDE2IC8qIGR3b3JkcyAqLwo+ICsKPiAr I2RlZmluZSBNQVhfTVJVIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgMTUzNiAv KiAweDYwMCAqLwo+ICsjZGVmaW5lIFJYX0JVRkZfU0laRSDCoCDCoCDCoCDCoCDCoCBNQVhfTVJV Cj4gKwo+ICsjZGVmaW5lIE1BWF9NRElPX1JFVFJJRVMgwqAgwqAgwqAgMTAwIC8qIG1pY3Jvc2Vj b25kcywgdHlwaWNhbGx5IDMwIGN5Y2xlcyAqLwo+ICsjZGVmaW5lIE1BWF9DTE9TRV9XQUlUIMKg IMKgIMKgIMKgIDEwMDAgLyogbWljcm9zZWNvbmRzLCB0eXBpY2FsbHkgMi0zIGN5Y2xlcyAqLwo+ ICsjZGVmaW5lIEVUSF9BTEVOIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDYKPiArCj4gKyNkZWZpbmUg UEhZU0lDQUxfSUQocG9ydCkgwqAgwqAgwqAoKChwb3J0KS0+bnBlLT5pZCArIDIpICUgMykKPiAr I2RlZmluZSBMT0dJQ0FMX0lEKHBvcnQpIMKgIMKgIMKgICgocG9ydCktPm5wZS0+aWQgPDwgNCkK PiArI2RlZmluZSBSWF9RVUVVRShwb3J0KSDCoCDCoCDCoCDCoCAoKHBvcnQpLT5ucGUtPmlkICsg MjApIC8qIGNhbiBiZSBjaGFuZ2VkICovCj4gKyNkZWZpbmUgVFhfUVVFVUUocG9ydCkgwqAgwqAg wqAgwqAgKChwb3J0KS0+bnBlLT5pZCArIDIzKQo+ICsjZGVmaW5lIFJYRlJFRV9RVUVVRShwb3J0 KSDCoCDCoCAoKHBvcnQpLT5ucGUtPmlkICsgMjYpCj4gKyNkZWZpbmUgVFhET05FX1FVRVVFIMKg IMKgIMKgIMKgIMKgIDMxCj4gKwo+ICsvKiBUWCBDb250cm9sIFJlZ2lzdGVycyAqLwo+ICsjZGVm aW5lIFRYX0NOVFJMMF9UWF9FTiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDB4MDEKPiArI2RlZmlu ZSBUWF9DTlRSTDBfSEFMRkRVUExFWCDCoCAweDAyCj4gKyNkZWZpbmUgVFhfQ05UUkwwX1JFVFJZ IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgMHgwNAo+ICsjZGVmaW5lIFRYX0NOVFJMMF9QQURfRU4g wqAgwqAgwqAgMHgwOAo+ICsjZGVmaW5lIFRYX0NOVFJMMF9BUFBFTkRfRkNTIMKgIDB4MTAKPiAr I2RlZmluZSBUWF9DTlRSTDBfMkRFRkVSIMKgIMKgIMKgIDB4MjAKPiArI2RlZmluZSBUWF9DTlRS TDBfUk1JSSDCoCDCoCDCoCDCoCAweDQwIC8qIHJlZHVjZWQgTUlJICovCj4gKyNkZWZpbmUgVFhf Q05UUkwxX1JFVFJJRVMgwqAgwqAgwqAweDBGIC8qIDQgYml0cyAqLwo+ICsKPiArLyogUlggQ29u dHJvbCBSZWdpc3RlcnMgKi8KPiArI2RlZmluZSBSWF9DTlRSTDBfUlhfRU4gwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAweDAxCj4gKyNkZWZpbmUgUlhfQ05UUkwwX1BBRFNUUklQX0VOIMKgMHgwMgo+ ICsjZGVmaW5lIFJYX0NOVFJMMF9TRU5EX0ZDUyDCoCDCoCAweDA0Cj4gKyNkZWZpbmUgUlhfQ05U UkwwX1BBVVNFX0VOIMKgIMKgIDB4MDgKPiArI2RlZmluZSBSWF9DTlRSTDBfTE9PUF9FTiDCoCDC oCDCoDB4MTAKPiArI2RlZmluZSBSWF9DTlRSTDBfQUREUl9GTFRSX0VOIDB4MjAKPiArI2RlZmlu ZSBSWF9DTlRSTDBfUlhfUlVOVF9FTiDCoCAweDQwCj4gKyNkZWZpbmUgUlhfQ05UUkwwX0JDQVNU X0RJUyDCoCDCoDB4ODAKPiArI2RlZmluZSBSWF9DTlRSTDFfREVGRVJfRU4gwqAgwqAgMHgwMQo+ ICsKPiArLyogQ29yZSBDb250cm9sIFJlZ2lzdGVyICovCj4gKyNkZWZpbmUgQ09SRV9SRVNFVCDC oCDCoCDCoCDCoCDCoCDCoCAweDAxCj4gKyNkZWZpbmUgQ09SRV9SWF9GSUZPX0ZMVVNIIMKgIMKg IDB4MDIKPiArI2RlZmluZSBDT1JFX1RYX0ZJRk9fRkxVU0ggwqAgwqAgMHgwNAo+ICsjZGVmaW5l IENPUkVfU0VORF9KQU0gwqAgwqAgwqAgwqAgwqAweDA4Cj4gKyNkZWZpbmUgQ09SRV9NRENfRU4g wqAgwqAgwqAgwqAgwqAgwqAweDEwIC8qIE1ESU8gdXNpbmcgTlBFLUIgRVRILTAgb25seSAqLwo+ ICsKPiArI2RlZmluZSBERUZBVUxUX1RYX0NOVFJMMCDCoCDCoCDCoChUWF9DTlRSTDBfVFhfRU4g fCBUWF9DTlRSTDBfUkVUUlkgfCDCoCDCoCDCoCBcCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFRYX0NOVFJMMF9QQURfRU4gfCBUWF9DTlRSTDBfQVBQ RU5EX0ZDUyB8IFwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgVFhfQ05UUkwwXzJERUZFUikKPiArI2RlZmluZSBERUZBVUxUX1JYX0NOVFJMMCDCoCDC oCDCoFJYX0NOVFJMMF9SWF9FTgo+ICsjZGVmaW5lIERFRkFVTFRfQ09SRV9DTlRSTCDCoCDCoCBD T1JFX01EQ19FTgo+ICsKPiArCj4gKy8qIE5QRSBtZXNzYWdlIGNvZGVzICovCj4gKyNkZWZpbmUg TlBFX0dFVFNUQVRVUyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAweDAwCj4gKyNkZWZpbmUg TlBFX0VEQl9TRVRQT1JUQUREUkVTUyDCoCDCoCDCoCDCoCDCoDB4MDEKPiArI2RlZmluZSBOUEVf RURCX0dFVE1BQ0FERFJFU1NEQVRBQkFTRSDCoCAweDAyCj4gKyNkZWZpbmUgTlBFX0VEQl9TRVRN QUNBRERSRVNTU0RBVEFCQVNFIMKgMHgwMwo+ICsjZGVmaW5lIE5QRV9HRVRTVEFUUyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoDB4MDQKPiArI2RlZmluZSBOUEVfUkVTRVRTVEFUUyDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoDB4MDUKPiArI2RlZmluZSBOUEVfU0VUTUFYRlJBTUVMRU5H VEhTIMKgIMKgIMKgIMKgIMKgMHgwNgo+ICsjZGVmaW5lIE5QRV9WTEFOX1NFVFJYVEFHTU9ERSDC oCDCoCDCoCDCoCDCoCAweDA3Cj4gKyNkZWZpbmUgTlBFX1ZMQU5fU0VUREVGQVVMVFJYVklEIMKg IMKgIMKgIMKgMHgwOAo+ICsjZGVmaW5lIE5QRV9WTEFOX1NFVFBPUlRWTEFOVEFCTEVFTlRSWSDC oDB4MDkKPiArI2RlZmluZSBOUEVfVkxBTl9TRVRQT1JUVkxBTlRBQkxFUkFOR0UgwqAweDBBCj4g KyNkZWZpbmUgTlBFX1ZMQU5fU0VUUlhRT1NFTlRSWSDCoCDCoCDCoCDCoCDCoDB4MEIKPiArI2Rl ZmluZSBOUEVfVkxBTl9TRVRQT1JUSURFWFRSQUNUSU9OTU9ERSAweDBDCj4gKyNkZWZpbmUgTlBF X1NUUF9TRVRCTE9DS0lOR1NUQVRFIMKgIMKgIMKgIMKgMHgwRAo+ICsjZGVmaW5lIE5QRV9GV19T RVRGSVJFV0FMTE1PREUgwqAgwqAgwqAgwqAgwqAweDBFCj4gKyNkZWZpbmUgTlBFX1BDX1NFVEZS QU1FQ09OVFJPTERVUkFUSU9OSUQgMHgwRgo+ICsjZGVmaW5lIE5QRV9QQ19TRVRBUE1BQ1RBQkxF IMKgIMKgIMKgIMKgIMKgIMKgMHgxMQo+ICsjZGVmaW5lIE5QRV9TRVRMT09QQkFDS19NT0RFIMKg IMKgIMKgIMKgIMKgIMKgMHgxMgo+ICsjZGVmaW5lIE5QRV9QQ19TRVRCU1NJRFRBQkxFIMKgIMKg IMKgIMKgIMKgIMKgMHgxMwo+ICsjZGVmaW5lIE5QRV9BRERSRVNTX0ZJTFRFUl9DT05GSUcgwqAg wqAgwqAgMHgxNAo+ICsjZGVmaW5lIE5QRV9BUFBFTkRGQ1NDT05GSUcgwqAgwqAgwqAgwqAgwqAg wqAgMHgxNQo+ICsjZGVmaW5lIE5QRV9OT1RJRllfTUFDX1JFQ09WRVJZX0RPTkUgwqAgwqAweDE2 Cj4gKyNkZWZpbmUgTlBFX01BQ19SRUNPVkVSWV9TVEFSVCDCoCDCoCDCoCDCoCDCoDB4MTcKPiAr Cj4gK3N0cnVjdCBldGhfcmVncyB7Cj4gKyDCoCDCoCDCoCB1MzIgdHhfY29udHJvbFsyXSwgX19y ZXMxWzJdOyDCoCDCoCDCoCDCoCDCoCDCoC8qIDAwMCAqLwo+ICsgwqAgwqAgwqAgdTMyIHJ4X2Nv bnRyb2xbMl0sIF9fcmVzMlsyXTsgwqAgwqAgwqAgwqAgwqAgwqAvKiAwMTAgKi8KPiArIMKgIMKg IMKgIHUzMiByYW5kb21fc2VlZCwgX19yZXMzWzNdOyDCoCDCoCDCoCDCoCDCoCDCoCDCoC8qIDAy MCAqLwo+ICsgwqAgwqAgwqAgdTMyIHBhcnRpYWxfZW1wdHlfdGhyZXNob2xkLCBfX3JlczQ7IMKg IMKgIC8qIDAzMCAqLwo+ICsgwqAgwqAgwqAgdTMyIHBhcnRpYWxfZnVsbF90aHJlc2hvbGQsIF9f cmVzNTsgwqAgwqAgwqAvKiAwMzggKi8KPiArIMKgIMKgIMKgIHUzMiB0eF9zdGFydF9ieXRlcywg X19yZXM2WzNdOyDCoCDCoCDCoCDCoCDCoCAvKiAwNDAgKi8KPiArIMKgIMKgIMKgIHUzMiB0eF9k ZWZlcnJhbCwgcnhfZGVmZXJyYWwsIF9fcmVzN1syXTsgLyogMDUwICovCj4gKyDCoCDCoCDCoCB1 MzIgdHhfMnBhcnRfZGVmZXJyYWxbMl0sIF9fcmVzOFsyXTsgwqAgwqAgLyogMDYwICovCj4gKyDC oCDCoCDCoCB1MzIgc2xvdF90aW1lLCBfX3JlczlbM107IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg LyogMDcwICovCj4gKyDCoCDCoCDCoCB1MzIgbWRpb19jb21tYW5kWzRdOyDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCAvKiAwODAgKi8KPiArIMKgIMKgIMKgIHUzMiBtZGlvX3N0YXR1c1s0 XTsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAvKiAwOTAgKi8KPiArIMKgIMKgIMKg IHUzMiBtY2FzdF9tYXNrWzZdLCBfX3JlczEwWzJdOyDCoCDCoCDCoCDCoCDCoCAvKiAwQTAgKi8K PiArIMKgIMKgIMKgIHUzMiBtY2FzdF9hZGRyWzZdLCBfX3JlczExWzJdOyDCoCDCoCDCoCDCoCDC oCAvKiAwQzAgKi8KPiArIMKgIMKgIMKgIHUzMiBpbnRfY2xvY2tfdGhyZXNob2xkLCBfX3JlczEy WzNdOyDCoCDCoCAvKiAwRTAgKi8KPiArIMKgIMKgIMKgIHUzMiBod19hZGRyWzZdLCBfX3JlczEz WzYxXTsgwqAgwqAgwqAgwqAgwqAgwqAgLyogMEYwICovCj4gKyDCoCDCoCDCoCB1MzIgY29yZV9j b250cm9sOyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoC8qIDFGQyAqLwo+ICt9 Owo+ICsKPiArLyogTlBFIG1lc3NhZ2Ugc3RydWN0dXJlICovCj4gK3N0cnVjdCBtc2cgewo+ICsg wqAgwqAgwqAgdTggY21kLCBldGhfaWQsIHBhcmFtc1s2XTsKPiArfTsKPiArCj4gKy8qIEV0aGVy bmV0IHBhY2tldCBkZXNjcmlwdG9yLCAzMiBieXRlcyAqLwo+ICtzdHJ1Y3QgZGVzYyB7Cj4gKyDC oCDCoCDCoCB1OCAqbmV4dDsgwqAgwqAvKiBwb2ludGVyIHRvIG5leHQgYnVmZmVyLCB1bnVzZWQg Ki8KPiArCj4gKyDCoCDCoCDCoCB1MTYgYnVmX2xlbjsgLyogYnVmZmVyIGxlbmd0aCAqLwo+ICsg wqAgwqAgwqAgdTE2IHBrdF9sZW47IC8qIHBhY2tldCBsZW5ndGggKi8KPiArIMKgIMKgIMKgIHU4 ICpkYXRhOyDCoCDCoC8qIHBvaW50ZXIgdG8gZGF0YSBidWZmZXIgaW4gUkFNICovCj4gKyDCoCDC oCDCoCB1OCBkZXN0X2lkOwo+ICsgwqAgwqAgwqAgdTggc3JjX2lkOwo+ICsgwqAgwqAgwqAgdTE2 IGZsYWdzOwo+ICsgwqAgwqAgwqAgdTggcW9zOwo+ICsgwqAgwqAgwqAgdTggcGFkbGVuOwo+ICsg wqAgwqAgwqAgdTE2IHZsYW5fdGNpOwo+ICsKPiArIMKgIMKgIMKgIHU4IGRzdF9tYWNbRVRIX0FM RU5dLCBzcmNfbWFjW0VUSF9BTEVOXTsKPiArfTsKPiArCj4gK3N0cnVjdCBwb3J0IHsKPiArIMKg IMKgIMKgIHN0cnVjdCBkZXNjIHJ4X2Rlc2NfdGFiW1JYX0RFU0NTXTsgLyogYWxpZ25tZW50OiAw eDEwICovCj4gKyDCoCDCoCDCoCBzdHJ1Y3QgZGVzYyB0eF9kZXNjX3RhYltUWF9ERVNDU107Cj4g KyDCoCDCoCDCoCB1OCAqYnVmZl90YWI7Cj4gKyDCoCDCoCDCoCBzdHJ1Y3QgZXRoX3JlZ3MgKnJl Z3M7Cj4gKyDCoCDCoCDCoCBzdHJ1Y3QgbnBlICpucGU7Cj4gKyDCoCDCoCDCoCB1OCBmaXJtd2Fy ZVs0XTsKPiArIMKgIMKgIMKgIHN0cnVjdCBldGhfcGxhdF9pbmZvICpwaW5mbzsKPiArIMKgIMKg IMKgIHN0cnVjdCBtaWlfZGV2aWNlIG1paWRldjsKPiArIMKgIMKgIMKgIHN0cnVjdCBldGhfZGV2 aWNlIGV0aDsKPiArfTsKPiArCj4gKyNkZWZpbmUgcnhfYnVmZihwb3J0LCBuKSAoKHBvcnQpLT5i dWZmX3RhYiArIE1BWF9NUlUgKiAobikpCj4gKyNkZWZpbmUgdHhfYnVmZihwb3J0LCBuKSAoKHBv cnQpLT5idWZmX3RhYiArIE1BWF9NUlUgKiAoUlhfREVTQ1MgKyAobikpKQo+ICsKPiArc3RhdGlj IHN0cnVjdCBldGhfcmVncyAqbWRpb19yZWdzOyAvKiBtZGlvIGNvbW1hbmQgYW5kIHN0YXR1cyBv bmx5ICovCj4gKwo+ICtzdGF0aWMgaW50IGl4cDR4eF9tZGlvX2NtZChpbnQgd3JpdGUsIGNvbnN0 IHN0cnVjdCBkZXZpY2VfZCAqZGV2LCB1bnNpZ25lZCBjaGFyIHBoeV9pZCwKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdW5zaWduZWQgY2hhciBsb2NhdGlvbiwgdW5z aWduZWQgc2hvcnQgdmFsdWUpCj4gK3sKPiArIMKgIMKgIMKgIGludCBjeWNsZXMgPSAwOwo+ICsK PiArIMKgIMKgIMKgIGlmIChfX3Jhd19yZWFkbCgmbWRpb19yZWdzLT5tZGlvX2NvbW1hbmRbM10p ICYgMHg4MCkgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZnByaW50ZihzdGRlcnIsICIlcyVk OiBNSUkgbm90IHJlYWR5IHRvIHRyYW5zbWl0XG4iLCBkZXYtPm5hbWUsIGRldi0+aWQpOwo+ICsg wqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIC0xOwo+ICsgwqAgwqAgwqAgfQo+ICsKPiArIMKg IMKgIMKgIGlmICh3cml0ZSkgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgX19yYXdfd3JpdGVs KHZhbHVlICYgMHhGRiwgJm1kaW9fcmVncy0+bWRpb19jb21tYW5kWzBdKTsKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIF9fcmF3X3dyaXRlbCh2YWx1ZSA+PiA4LCAmbWRpb19yZWdzLT5tZGlvX2Nv bW1hbmRbMV0pOwo+ICsgwqAgwqAgwqAgfQo+ICsgwqAgwqAgwqAgX19yYXdfd3JpdGVsKCgocGh5 X2lkIDw8IDUpIHwgbG9jYXRpb24pICYgMHhGRiwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgJm1kaW9fcmVncy0+bWRpb19jb21tYW5kWzJdKTsKPiArIMKgIMKgIMKgIF9fcmF3X3dy aXRlbCgocGh5X2lkID4+IDMpIHwgKHdyaXRlIDw8IDIpIHwgMHg4MCAvKiBHTyAqLywKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgJm1kaW9fcmVncy0+bWRpb19jb21tYW5kWzNdKTsK PiArCj4gKyDCoCDCoCDCoCB3aGlsZSAoKGN5Y2xlcyA8IE1BWF9NRElPX1JFVFJJRVMpICYmCj4g KyDCoCDCoCDCoCDCoCDCoCDCoCDCoChfX3Jhd19yZWFkbCgmbWRpb19yZWdzLT5tZGlvX2NvbW1h bmRbM10pICYgMHg4MCkpIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVkZWxheSgxKTsKPiAr IMKgIMKgIMKgIMKgIMKgIMKgIMKgIGN5Y2xlcysrOwo+ICsgwqAgwqAgwqAgfQo+ICsKPiArIMKg IMKgIMKgIGlmIChjeWNsZXMgPT0gTUFYX01ESU9fUkVUUklFUykgewo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgZnByaW50ZihzdGRlcnIsICIlcyVkOiBNSUkgd3JpdGUgZmFpbGVkXG4iLCBkZXYt Pm5hbWUsIGRldi0+aWQpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIC0xOwo+ICsg wqAgwqAgwqAgfQo+ICsKPiArI2lmIERFQlVHX01ESU8KPiArIMKgIMKgIMKgIGZwcmludGYoc3Rk ZXJyLCAiJXMlZDogbWRpb18lcygpIHRvb2sgJWkgY3ljbGVzXG4iLCBkZXYtPm5hbWUsIGRldi0+ aWQsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB3cml0ZSA/ICJ3cml0ZSIgOiAicmVhZCIsIGN5 Y2xlcyk7Cj4gKyNlbmRpZgo+ICsKPiArIMKgIMKgIMKgIGlmICh3cml0ZSkKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIHJldHVybiAwOwo+ICsKPiArIMKgIMKgIMKgIGlmIChfX3Jhd19yZWFkbCgm bWRpb19yZWdzLT5tZGlvX3N0YXR1c1szXSkgJiAweDgwKSB7Cj4gKyNpZiBERUJVR19NRElPCj4g KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6IE1JSSByZWFkIGZh aWxlZFxuIiwgZGV2LT5uYW1lLCBkZXYtPmlkKTsKPiArI2VuZGlmCj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCByZXR1cm4gLTE7Cj4gKyDCoCDCoCDCoCB9Cj4gKwo+ICsgwqAgwqAgwqAgdmFsdWUg PSAoX19yYXdfcmVhZGwoJm1kaW9fcmVncy0+bWRpb19zdGF0dXNbMF0pICYgMHhGRikgfAo+ICsg wqAgwqAgwqAgwqAgwqAgwqAgwqAgKChfX3Jhd19yZWFkbCgmbWRpb19yZWdzLT5tZGlvX3N0YXR1 c1sxXSkgJiAweEZGKSA8PCA4KTsKPiArI2lmIERFQlVHX01ESU8KPiArIMKgIMKgIMKgIGZwcmlu dGYoc3RkZXJyLCAiJXMlZDogTUlJIHJlYWQgWyVpXSAtPiAweCVYXG4iLCBkZXYtPm5hbWUsIGRl di0+aWQsIGxvY2F0aW9uLCB2YWx1ZSk7Cj4gKyNlbmRpZgo+ICsKPiArIMKgIMKgIMKgIHJldHVy biB2YWx1ZTsKPiArfQo+ICsKPiArc3RhdGljIGludCBpeHA0eHhfbWRpb19yZWFkKHN0cnVjdCBt aWlfZGV2aWNlICptaWksIGludCBwaHlfaWQsIGludCBsb2NhdGlvbikKPiArewo+ICsgwqAgwqAg wqAgaW50IHJldCA9IGl4cDR4eF9tZGlvX2NtZCgwLCAmbWlpLT5kZXYsIHBoeV9pZCwgbG9jYXRp b24sIDApOwo+ICsgwqAgwqAgwqAgcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGludCBp eHA0eHhfbWRpb193cml0ZShzdHJ1Y3QgbWlpX2RldmljZSAqbWlpLCBpbnQgcGh5X2lkLCBpbnQg bG9jYXRpb24sIGludCB2YWx1ZSkKPiArewo+ICsgwqAgwqAgwqAgaW50IHJldCA9IGl4cDR4eF9t ZGlvX2NtZCgxLCAmbWlpLT5kZXYsIHBoeV9pZCwgbG9jYXRpb24sIHZhbHVlKTsKPiArI2lmIERF QlVHX01ESU8KPiArIMKgIMKgIMKgIGZwcmludGYoc3RkZXJyLCAiJXMlZDogTUlJIHdyaXRlIFsl aV0gPC0gMHglWCwgZXJyID0gJWlcbiIsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBtaWktPmRl di5uYW1lLCBtaWktPmRldi5pZCwgbG9jYXRpb24sIHZhbHVlLCByZXQpOwo+ICsjZW5kaWYKPiAr IMKgIMKgIMKgIHJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgaXhwNHh4X2FkanVz dF9saW5rKHN0cnVjdCBldGhfZGV2aWNlICpkZXYpCj4gK3sKPiArIMKgIMKgIMKgIHN0cnVjdCBw b3J0ICpwb3J0ID0gZGV2LT5wcml2Owo+ICsgwqAgwqAgwqAgaW50IHJlZywgc3BlZWQsIGR1cGxl eDsKPiArCj4gKyDCoCDCoCDCoCBtaWlkZXZfd2FpdF9hbmVnKCZwb3J0LT5taWlkZXYpOwo+ICsK PiArIMKgIMKgIMKgIHJlZyA9IG1paV9yZWFkKCZwb3J0LT5taWlkZXYsIHBvcnQtPm1paWRldi5h ZGRyZXNzLCBNSUlfQk1TUik7Cj4gKyDCoCDCoCDCoCBpZiAocmVnIDwgMCkKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIGdvdG8gZXJyX291dDsKPiArIMKgIMKgIMKgIGlmICghKHJlZyAmIEJNU1Jf TFNUQVRVUykpIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHByaW50ZigiJXMlZDogTGluayBp cyBkb3duIiwgZGV2LT5kZXYubmFtZSwgZGV2LT5kZXYuaWQpOwo+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgcmV0dXJuIC0xOwo+ICsgwqAgwqAgwqAgfQo+ICsKPiArIMKgIMKgIMKgIHJlZyA9IG1p aV9yZWFkKCZwb3J0LT5taWlkZXYsIHBvcnQtPm1paWRldi5hZGRyZXNzLCBNSUlfQk1DUik7Cj4g KyDCoCDCoCDCoCBpZiAocmVnIDwgMCkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGdvdG8gZXJy X291dDsKPiArCj4gKyDCoCDCoCDCoCBpZiAocmVnICYgQk1DUl9BTkVOQUJMRSkgewo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgcmVnID0gbWlpX3JlYWQoJnBvcnQtPm1paWRldiwgcG9ydC0+bWlp ZGV2LmFkZHJlc3MsIE1JSV9MUEEpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKHJlZyA8 IDApCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBnb3RvIGVycl9vdXQ7Cj4g KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkdXBsZXggPSByZWcgJiBMUEFfRFVQTEVYOwo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgc3BlZWQgPSByZWcgJiBMUEFfMTAwID8gMTAwIDogMTA7Cj4gKyDC oCDCoCDCoCB9IGVsc2Ugewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZHVwbGV4ID0gcmVnICYg Qk1DUl9GVUxMRFBMWDsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNwZWVkID0gcmVnICYgQk1D Ul9TUEVFRDEwMCA/IDEwMCA6IDEwOwo+ICsgwqAgwqAgwqAgfQo+ICsKPiArIMKgIMKgIMKgIGlm IChkdXBsZXgpCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX3Jhd193cml0ZWwoREVGQVVMVF9U WF9DTlRSTDAgJiB+VFhfQ05UUkwwX0hBTEZEVVBMRVgsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCZwb3J0LT5yZWdzLT50eF9jb250cm9sWzBdKTsKPiArIMKg IMKgIMKgIGVsc2UKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIF9fcmF3X3dyaXRlbChERUZBVUxU X1RYX0NOVFJMMCB8IFRYX0NOVFJMMF9IQUxGRFVQTEVYLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAmcG9ydC0+cmVncy0+dHhfY29udHJvbFswXSk7Cj4gKwo+ ICsgwqAgwqAgwqAgZnByaW50ZihzdGRlcnIsICIlcyVkOiBsaW5rIHVwLCBzcGVlZCAldSBNYi9z LCAlcyBkdXBsZXhcbiIsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkZXYtPmRldi5uYW1lLCBk ZXYtPmRldi5pZCwgc3BlZWQsIGR1cGxleCA/ICJmdWxsIiA6ICJoYWxmIik7Cj4gKyDCoCDCoCDC oCByZXR1cm4gMDsKPiArCj4gK2Vycl9vdXQ6Cj4gKyDCoCDCoCDCoCBwcmludGYoIiVzJWQ6IGZh aWxlZCB0byByZWFkIE1JSSBkYXRhXG4iLCBkZXYtPmRldi5uYW1lLCBkZXYtPmRldi5pZCk7Cj4g KyDCoCDCoCDCoCByZXR1cm4gLUVJTzsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkIGRl YnVnX3BrdChzdHJ1Y3QgZXRoX2RldmljZSAqZGV2LCBjb25zdCBjaGFyICpmdW5jLAo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB1OCAqZGF0YSwgaW50IGxlbikK PiArewo+ICsjaWYgREVCVUdfUEtUX0JZVEVTCj4gKyDCoCDCoCDCoCBpbnQgaTsKPiArCj4gKyDC oCDCoCDCoCBmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6ICVzKCU0aSkgIiwgZGV2LT5kZXYubmFtZSwg ZGV2LT5kZXYuaWQsIGZ1bmMsIGxlbik7Cj4gKyDCoCDCoCDCoCBmb3IgKGkgPSAwOyBpIDwgbGVu OyBpKyspIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChpID49IERFQlVHX1BLVF9CWVRF UykKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGJyZWFrOwo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgZnByaW50ZihzdGRlcnIsICIlcyUwMlgiLAo+ICsgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgKChpID09IDYpIHx8IChpID09IDEyKSB8fCAoaSA+PSAxNCkp ID8gIiAiIDogIiIsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRhW2ld KTsKPiArIMKgIMKgIMKgIH0KPiArIMKgIMKgIMKgIGZwcmludGYoc3RkZXJyLCAiXG4iKTsKPiAr I2VuZGlmCj4gK30KPiArCj4gKwo+ICtzdGF0aWMgaW5saW5lIHZvaWQgZGVidWdfZGVzYyhzdHJ1 Y3QgZGVzYyAqZGVzYykKPiArewo+ICsjaWYgREVCVUdfREVTQwo+ICsgwqAgwqAgwqAgZnByaW50 ZihzdGRlcnIsICIlMDdYOiAlWCAlM1ggJTNYICUwN1ggJTJYIDwgJTJYICU0WCAlWCIKPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgICIgJVggJVggJTAyWCUwMlglMDJYJTAyWCUwMlglMDJYIDwgJTAy WCUwMlglMDJYJTAyWCUwMlglMDJYXG4iLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKHUzMilk ZXNjLCAodTMyKWRlc2MtPm5leHQsIGRlc2MtPmJ1Zl9sZW4sIGRlc2MtPnBrdF9sZW4sCj4gKyDC oCDCoCDCoCDCoCDCoCDCoCDCoCAodTMyKWRlc2MtPmRhdGEsIGRlc2MtPmRlc3RfaWQsIGRlc2Mt PnNyY19pZCwgZGVzYy0+ZmxhZ3MsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkZXNjLT5xb3Ms IGRlc2MtPnBhZGxlbiwgZGVzYy0+dmxhbl90Y2ksCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBk ZXNjLT5kc3RfbWFjWzBdLCBkZXNjLT5kc3RfbWFjWzFdLCBkZXNjLT5kc3RfbWFjWzJdLAo+ICsg wqAgwqAgwqAgwqAgwqAgwqAgwqAgZGVzYy0+ZHN0X21hY1szXSwgZGVzYy0+ZHN0X21hY1s0XSwg ZGVzYy0+ZHN0X21hY1s1XSwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRlc2MtPnNyY19tYWNb MF0sIGRlc2MtPnNyY19tYWNbMV0sIGRlc2MtPnNyY19tYWNbMl0sCj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCBkZXNjLT5zcmNfbWFjWzNdLCBkZXNjLT5zcmNfbWFjWzRdLCBkZXNjLT5zcmNfbWFj WzVdKTsKPiArI2VuZGlmCj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgaW50IHF1ZXVlX2dldF9k ZXNjKHVuc2lnbmVkIGludCBxdWV1ZSwgc3RydWN0IHBvcnQgKnBvcnQsCj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGludCBpc190eCkKPiArewo+ICsg wqAgwqAgwqAgdTMyIGFkZHIsIG47Cj4gKyDCoCDCoCDCoCBzdHJ1Y3QgZGVzYyAqdGFiOwo+ICsK PiArIMKgIMKgIMKgIGlmICghKGFkZHIgPSBxbWdyX2dldF9lbnRyeShxdWV1ZSkpKQo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIC0xOwo+ICsKPiArIMKgIMKgIMKgIGFkZHIgJj0gfjB4 MUY7IC8qIG1hc2sgb3V0IG5vbi1hZGRyZXNzIGJpdHMgKi8KPiArIMKgIMKgIMKgIHRhYiA9IGlz X3R4ID8gcG9ydC0+dHhfZGVzY190YWIgOiBwb3J0LT5yeF9kZXNjX3RhYjsKPiArIMKgIMKgIMKg IG4gPSAoYWRkciAtICh1MzIpdGFiKSAvIHNpemVvZihzdHJ1Y3QgZGVzYyk7Cj4gKyDCoCDCoCDC oCBCVUdfT04obiA+PSAoaXNfdHggPyBUWF9ERVNDUyA6IFJYX0RFU0NTKSk7Cj4gKyDCoCDCoCDC oCBkZWJ1Z19kZXNjKChzdHJ1Y3QgZGVzYyopYWRkcik7Cj4gKyDCoCDCoCDCoCBCVUdfT04odGFi W25dLm5leHQpOwo+ICsgwqAgwqAgwqAgcmV0dXJuIG47Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxp bmUgdm9pZCBxdWV1ZV9wdXRfZGVzYyh1bnNpZ25lZCBpbnQgcXVldWUsIHN0cnVjdCBkZXNjICpk ZXNjKQo+ICt7Cj4gKyDCoCDCoCDCoCBkZWJ1Z19kZXNjKGRlc2MpOwo+ICsgwqAgwqAgwqAgQlVH X09OKCgodTMyKWRlc2MpICYgMHgxRik7Cj4gKyDCoCDCoCDCoCBxbWdyX3B1dF9lbnRyeShxdWV1 ZSwgKHUzMilkZXNjKTsKPiArIMKgIMKgIMKgIC8qIERvbid0IGNoZWNrIGZvciBxdWV1ZSBvdmVy ZmxvdyBoZXJlLCB3ZSd2ZSBhbGxvY2F0ZWQgc3VmZmljaWVudAo+ICsgwqAgwqAgwqAgwqAgwqBs ZW5ndGggYW5kIHF1ZXVlcyA+PSAzMiBkb24ndCBzdXBwb3J0IHRoaXMgY2hlY2sgYW55d2F5LiAq Lwo+ICt9Cj4gKwo+ICsKPiArc3RhdGljIGludCBpeHA0eHhfZXRoX3BvbGwoc3RydWN0IGV0aF9k ZXZpY2UgKmRldikKPiArewo+ICsgwqAgwqAgwqAgc3RydWN0IHBvcnQgKnBvcnQgPSBkZXYtPnBy aXY7Cj4gKyDCoCDCoCDCoCBzdHJ1Y3QgZGVzYyAqZGVzYzsKPiArIMKgIMKgIMKgIHU4ICpidWZm Owo+ICsgwqAgwqAgwqAgaW50IG4sIGxlbjsKPiArCj4gKyNpZiBERUJVR19SWAo+ICsgwqAgwqAg wqAgZnByaW50ZihzdGRlcnIsICIlcyVkOiBldGhfcG9sbFxuIiwgZGV2LT5kZXYubmFtZSwgZGV2 LT5kZXYuaWQpOwo+ICsjZW5kaWYKPiArCj4gKyDCoCDCoCDCoCBpZiAoKG4gPSBxdWV1ZV9nZXRf ZGVzYyhSWF9RVUVVRShwb3J0KSwgcG9ydCwgMCkpIDwgMCkgewo+ICsjaWYgREVCVUdfUlgKPiAr IMKgIMKgIMKgIMKgIMKgIMKgIMKgIGZwcmludGYoc3RkZXJyLCAiJXMlZDogZXRoX3BvbGwgPSBu byBwYWNrZXQgcmVjZWl2ZWRcbiIsIGRldi0+ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkKTsKPiArI2Vu ZGlmCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gMDsKPiArIMKgIMKgIMKgIH0KPiAr Cj4gKyDCoCDCoCDCoCBiYXJyaWVyKCk7Cj4gKyDCoCDCoCDCoCBkZXNjID0gJnBvcnQtPnJ4X2Rl c2NfdGFiW25dOwo+ICsgwqAgwqAgwqAgYnVmZiA9IHJ4X2J1ZmYocG9ydCwgbik7Cj4gKyDCoCDC oCDCoCBsZW4gPSBkZXNjLT5wa3RfbGVuOwo+ICsgwqAgwqAgwqAgLyogcHJvY2VzcyByZWNlaXZl ZCBmcmFtZSAqLwo+ICsgwqAgwqAgwqAgbWVtY3B5KCh2b2lkICopTmV0UnhQYWNrZXRzWzBdLCBi dWZmLCBsZW4pOwo+ICsgwqAgwqAgwqAgZGVidWdfcGt0KGRldiwgIlJYIiwgZGVzYy0+ZGF0YSwg bGVuKTsKPiArCj4gKyDCoCDCoCDCoCAvKiBwdXQgdGhlIG5ldyBidWZmZXIgb24gUlgtZnJlZSBx dWV1ZSAqLwo+ICsgwqAgwqAgwqAgZGVzYy0+YnVmX2xlbiA9IE1BWF9NUlU7Cj4gKyDCoCDCoCDC oCBkZXNjLT5wa3RfbGVuID0gMDsKPiArIMKgIMKgIMKgIHF1ZXVlX3B1dF9kZXNjKFJYRlJFRV9R VUVVRShwb3J0KSwgZGVzYyk7Cj4gKwo+ICsgwqAgwqAgwqAgbmV0X3JlY2VpdmUoTmV0UnhQYWNr ZXRzWzBdLCBsZW4pOwo+ICsKPiArI2lmIERFQlVHX1JYCj4gKyDCoCDCoCDCoCBmcHJpbnRmKHN0 ZGVyciwgIiVzJWQ6IGV0aF9wb2xsIGVuZFxuIiwgZGV2LT5kZXYubmFtZSwgZGV2LT5kZXYuaWQp Owo+ICsjZW5kaWYKPiArIMKgIMKgIMKgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICsKPiArc3RhdGlj IGludCBpeHA0eHhfZXRoX3htaXQoc3RydWN0IGV0aF9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwg aW50IGxlbikKPiArewo+ICsgwqAgwqAgwqAgc3RydWN0IHBvcnQgKnBvcnQgPSBkZXYtPnByaXY7 Cj4gKyDCoCDCoCDCoCBpbnQgbjsKPiArIMKgIMKgIMKgIHN0cnVjdCBkZXNjICpkZXNjOwo+ICsK PiArI2lmIERFQlVHX1RYCj4gKyDCoCDCoCDCoCBmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6IGV0aF94 bWl0XG4iLCBkZXYtPmRldi5uYW1lLCBkZXYtPmRldi5pZCk7Cj4gKyNlbmRpZgo+ICsKPiArIMKg IMKgIMKgIGlmICh1bmxpa2VseShsZW4gPiAxNTAwKSkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IHJldHVybiAtMTsKPiArCj4gKyDCoCDCoCDCoCBkZWJ1Z19wa3QoZGV2LCAiVFgiLCBkYXRhLCBs ZW4pOwo+ICsKPiArIMKgIMKgIMKgIGlmICgobiA9IHF1ZXVlX2dldF9kZXNjKFRYRE9ORV9RVUVV RSwgcG9ydCwgMSkpIDwgMCkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiAtMTsgLyog bm8gZnJlZSBidWZmZXJzICovCj4gKyDCoCDCoCDCoCBkZXNjID0gJnBvcnQtPnR4X2Rlc2NfdGFi W25dOwo+ICsgwqAgwqAgwqAgZGVzYy0+ZGF0YSA9IHR4X2J1ZmYocG9ydCwgbik7Cj4gKyDCoCDC oCDCoCBkZXNjLT5idWZfbGVuID0gZGVzYy0+cGt0X2xlbiA9IGxlbjsKPiArIMKgIMKgIMKgIG1l bWNweShkZXNjLT5kYXRhLCBkYXRhLCBsZW4pOwo+ICsKPiArIMKgIMKgIMKgIC8qIE5QRSBmaXJt d2FyZSBwYWRzIHNob3J0IGZyYW1lcyB3aXRoIHplcm9zIGludGVybmFsbHkgKi8KPiArIMKgIMKg IMKgIC8vIHdtYigpOwo+ICsgwqAgwqAgwqAgYmFycmllcigpOwo+ICsgwqAgwqAgwqAgcXVldWVf cHV0X2Rlc2MoVFhfUVVFVUUocG9ydCksIGRlc2MpOwo+ICsKPiArI2lmIERFQlVHX1RYCj4gKyDC oCDCoCDCoCBmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6IGV0aF94bWl0IGVuZFxuIiwgZGV2LT5kZXYu bmFtZSwgZGV2LT5kZXYuaWQpOwo+ICsjZW5kaWYKPiArIMKgIMKgIMKgIHJldHVybiAwOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgdm9pZCByZXF1ZXN0X3F1ZXVlcyhzdHJ1Y3QgcG9ydCAqcG9ydCwgc3Ry dWN0IGV0aF9kZXZpY2UgKmRldikKPiArewo+ICsgwqAgwqAgwqAgcW1ncl9yZXF1ZXN0X3F1ZXVl KFJYRlJFRV9RVUVVRShwb3J0KSwgUlhfREVTQ1MsIDAsIDAsICIlczpSWC1mcmVlIiwgZGV2LT5k ZXYubmFtZSk7Cj4gKyDCoCDCoCDCoCBxbWdyX3JlcXVlc3RfcXVldWUoUlhfUVVFVUUocG9ydCks IFJYX0RFU0NTLCAwLCAwLCAiJXM6UlgiLCBkZXYtPmRldi5uYW1lKTsKPiArIMKgIMKgIMKgIHFt Z3JfcmVxdWVzdF9xdWV1ZShUWF9RVUVVRShwb3J0KSwgVFhfREVTQ1MsIDAsIDAsICIlczpUWCIs IGRldi0+ZGV2Lm5hbWUpOwo+ICsKPiArIMKgIMKgIMKgIC8qIENvbW1vbiBUWC1kb25lIHF1ZXVl IGhhbmRsZXMgYnVmZmVycyBzZW50IG91dCBieSB0aGUgTlBFcyAqLwo+ICsgwqAgwqAgwqAgcW1n cl9yZXF1ZXN0X3F1ZXVlKFRYRE9ORV9RVUVVRSwgVFhET05FX1FVRVVFX0xFTiwgMCwgMCwKPiAr IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIiVzOlRYLWRvbmUiLCBkZXYt PmRldi5uYW1lKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgcmVsZWFzZV9xdWV1ZXMoc3RydWN0 IHBvcnQgKnBvcnQpCj4gK3sKPiArIMKgIMKgIMKgIHFtZ3JfcmVsZWFzZV9xdWV1ZShSWEZSRUVf UVVFVUUocG9ydCkpOwo+ICsgwqAgwqAgwqAgcW1ncl9yZWxlYXNlX3F1ZXVlKFJYX1FVRVVFKHBv cnQpKTsKPiArIMKgIMKgIMKgIHFtZ3JfcmVsZWFzZV9xdWV1ZShUWF9RVUVVRShwb3J0KSk7Cj4g KyDCoCDCoCDCoCBxbWdyX3JlbGVhc2VfcXVldWUoVFhET05FX1FVRVVFKTsKPiArfQo+ICsKPiAr c3RhdGljIHZvaWQgaW5pdF9xdWV1ZXMoc3RydWN0IHBvcnQgKnBvcnQpCj4gK3sKPiArIMKgIMKg IMKgIGludCBpOwo+ICsKPiArIMKgIMKgIMKgIG1lbXNldChwb3J0LT50eF9kZXNjX3RhYiwgMCwg c2l6ZW9mKHBvcnQtPnR4X2Rlc2NfdGFiKSk7IC8qIGRlc2NzICovCj4gKyDCoCDCoCDCoCBtZW1z ZXQocG9ydC0+cnhfZGVzY190YWIsIDAsIHNpemVvZihwb3J0LT5yeF9kZXNjX3RhYikpOwo+ICsK PiArIMKgIMKgIMKgIC8qIFNldHVwIFJYIGJ1ZmZlcnMgKi8KPiArIMKgIMKgIMKgIGZvciAoaSA9 IDA7IGkgPCBSWF9ERVNDUzsgaSsrKSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzdHJ1Y3Qg ZGVzYyAqZGVzYyA9ICZwb3J0LT5yeF9kZXNjX3RhYltpXTsKPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIGRlc2MtPmJ1Zl9sZW4gPSBNQVhfTVJVOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGVz Yy0+ZGF0YSA9IHJ4X2J1ZmYocG9ydCwgaSk7Cj4gKyDCoCDCoCDCoCB9Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgaXhwNHh4X2V0aF9vcGVuKHN0cnVjdCBldGhfZGV2aWNlICpkZXYpCj4gK3sKPiAr IMKgIMKgIMKgIHN0cnVjdCBwb3J0ICpwb3J0ID0gZGV2LT5wcml2Owo+ICsgwqAgwqAgwqAgc3Ry dWN0IG5wZSAqbnBlID0gcG9ydC0+bnBlOwo+ICsgwqAgwqAgwqAgc3RydWN0IG1zZyBtc2c7Cj4g KyDCoCDCoCDCoCBpbnQgaSwgZXJyOwo+ICsKPiArI2lmIERFQlVHX09QRU4KPiArIMKgIMKgIMKg IGZwcmludGYoc3RkZXJyLCAiJXMlZDogb3BlbmluZyAlcFxuIiwgZGV2LT5kZXYubmFtZSwgZGV2 LT5kZXYuaWQsIGRldik7Cj4gKyNlbmRpZgo+ICsKPiArIMKgIMKgIMKgIGlmICghbnBlX3J1bm5p bmcobnBlKSkgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZXJyID0gbnBlX2xvYWRfZmlybXdh cmUobnBlKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChlcnIpCj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gZXJyOwo+ICsKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIGlmIChucGVfcmVjdl9tZXNzYWdlKG5wZSwgJm1zZywgIkVUSF9HRVRfU1RBVFVTIikp IHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGZwcmludGYoc3RkZXJyLCAi JXMlZDogJXMgbm90IHJlc3BvbmRpbmdcbiIsIGRldi0+ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkLCBu cGUtPm5hbWUpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIC1F SU87Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBt ZW1jcHkocG9ydC0+ZmlybXdhcmUsIG1zZy5wYXJhbXMgKyAyLCA0KTsKPiArIMKgIMKgIMKgIH0K PiArCj4gKyDCoCDCoCDCoCBpZiAoaXhwNHh4X2FkanVzdF9saW5rKGRldikpCj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCByZXR1cm4gLUVOT0xJTks7Cj4gKwo+ICsgwqAgwqAgwqAgcG9ydC0+YnVm Zl90YWIgPSB4bWFsbG9jKChSWF9ERVNDUyArIFRYX0RFU0NTKSAqIE1BWF9NUlUpOwo+ICsKPiAr IMKgIMKgIMKgIG1lbXNldCgmbXNnLCAwLCBzaXplb2YobXNnKSk7Cj4gKyDCoCDCoCDCoCBtc2cu Y21kID0gTlBFX1ZMQU5fU0VUUlhRT1NFTlRSWTsKPiArIMKgIMKgIMKgIG1zZy5ldGhfaWQgPSBM T0dJQ0FMX0lEKHBvcnQpOwo+ICsgwqAgwqAgwqAgbXNnLnBhcmFtc1szXSA9IFJYX1FVRVVFKHBv cnQpIHwgMHg4MDsKPiArIMKgIMKgIMKgIG1zZy5wYXJhbXNbNF0gPSBSWF9RVUVVRShwb3J0KSA+ PiA0OyAvKiBNU0Igb2Ygb2Zmc2V0ICovCj4gKyDCoCDCoCDCoCBtc2cucGFyYW1zWzVdID0gUlhf UVVFVUUocG9ydCkgPDwgNDsgLyogTFNCIG9mIG9mZnNldCAqLwo+ICsgwqAgwqAgwqAgZm9yIChp ID0gMDsgaSA8IDg7IGkrKykgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbXNnLnBhcmFtc1sx XSA9IGk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAobnBlX3NlbmRfcmVjdl9tZXNzYWdl KHBvcnQtPm5wZSwgJm1zZywgIkVUSF9TRVRfUlhRIikpIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIGVyciA9IC1FSU87Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCBnb3RvIG91dDsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0KPiArIMKgIMKgIMKg IH0KPiArCj4gKyDCoCDCoCDCoCBtc2cuY21kID0gTlBFX0VEQl9TRVRQT1JUQUREUkVTUzsKPiAr IMKgIMKgIMKgIG1zZy5ldGhfaWQgPSBQSFlTSUNBTF9JRChwb3J0KTsKPiArIMKgIMKgIMKgIG1l bWNweShtc2cucGFyYW1zLCBwb3J0LT5waW5mby0+aHdhZGRyLCBFVEhfQUxFTik7Cj4gKyDCoCDC oCDCoCBpZiAobnBlX3NlbmRfcmVjdl9tZXNzYWdlKHBvcnQtPm5wZSwgJm1zZywgIkVUSF9TRVRf TUFDIikpIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGVyciA9IC1FSU87Cj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCBnb3RvIG91dDsKPiArIMKgIMKgIMKgIH0KPiArCj4gKyDCoCDCoCDCoCBt ZW1zZXQoJm1zZywgMCwgc2l6ZW9mKG1zZykpOwo+ICsgwqAgwqAgwqAgbXNnLmNtZCA9IE5QRV9G V19TRVRGSVJFV0FMTE1PREU7Cj4gKyDCoCDCoCDCoCBtc2cuZXRoX2lkID0gTE9HSUNBTF9JRChw b3J0KTsKPiArIMKgIMKgIMKgIGlmIChucGVfc2VuZF9yZWN2X21lc3NhZ2UocG9ydC0+bnBlLCAm bXNnLCAiRVRIX1NFVF9GSVJFV0FMTF9NT0RFIikpIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IGVyciA9IC1FSU87Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBnb3RvIG91dDsKPiArIMKgIMKg IMKgIH0KPiArCj4gKyDCoCDCoCDCoCByZXF1ZXN0X3F1ZXVlcyhwb3J0LCBkZXYpOwo+ICsgwqAg wqAgwqAgaW5pdF9xdWV1ZXMocG9ydCk7Cj4gKwo+ICsgwqAgwqAgwqAgZm9yIChpID0gMDsgaSA8 IEVUSF9BTEVOOyBpKyspCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBfX3Jhd193cml0ZWwocG9y dC0+cGluZm8tPmh3YWRkcltpXSwgJnBvcnQtPnJlZ3MtPmh3X2FkZHJbaV0pOwo+ICsgwqAgwqAg wqAgX19yYXdfd3JpdGVsKDB4MDgsICZwb3J0LT5yZWdzLT5yYW5kb21fc2VlZCk7Cj4gKyDCoCDC oCDCoCBfX3Jhd193cml0ZWwoMHgxMiwgJnBvcnQtPnJlZ3MtPnBhcnRpYWxfZW1wdHlfdGhyZXNo b2xkKTsKPiArIMKgIMKgIMKgIF9fcmF3X3dyaXRlbCgweDMwLCAmcG9ydC0+cmVncy0+cGFydGlh bF9mdWxsX3RocmVzaG9sZCk7Cj4gKyDCoCDCoCDCoCBfX3Jhd193cml0ZWwoMHgwOCwgJnBvcnQt PnJlZ3MtPnR4X3N0YXJ0X2J5dGVzKTsKPiArIMKgIMKgIMKgIF9fcmF3X3dyaXRlbCgweDE1LCAm cG9ydC0+cmVncy0+dHhfZGVmZXJyYWwpOwo+ICsgwqAgwqAgwqAgX19yYXdfd3JpdGVsKDB4MDgs ICZwb3J0LT5yZWdzLT50eF8ycGFydF9kZWZlcnJhbFswXSk7Cj4gKyDCoCDCoCDCoCBfX3Jhd193 cml0ZWwoMHgwNywgJnBvcnQtPnJlZ3MtPnR4XzJwYXJ0X2RlZmVycmFsWzFdKTsKPiArIMKgIMKg IMKgIF9fcmF3X3dyaXRlbCgweDgwLCAmcG9ydC0+cmVncy0+c2xvdF90aW1lKTsKPiArIMKgIMKg IMKgIF9fcmF3X3dyaXRlbCgweDAxLCAmcG9ydC0+cmVncy0+aW50X2Nsb2NrX3RocmVzaG9sZCk7 Cj4gKwo+ICsgwqAgwqAgwqAgLyogUG9wdWxhdGUgcXVldWVzIHdpdGggYnVmZmVycywgbm8gZmFp bHVyZSBhZnRlciB0aGlzIHBvaW50ICovCj4gKyDCoCDCoCDCoCBmb3IgKGkgPSAwOyBpIDwgVFhf REVTQ1M7IGkrKykKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHF1ZXVlX3B1dF9kZXNjKFRYRE9O RV9RVUVVRSwgJnBvcnQtPnR4X2Rlc2NfdGFiW2ldKTsKPiArCj4gKyDCoCDCoCDCoCBmb3IgKGkg PSAwOyBpIDwgUlhfREVTQ1M7IGkrKykKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHF1ZXVlX3B1 dF9kZXNjKFJYRlJFRV9RVUVVRShwb3J0KSwgJnBvcnQtPnJ4X2Rlc2NfdGFiW2ldKTsKPiArCj4g KyDCoCDCoCDCoCBfX3Jhd193cml0ZWwoVFhfQ05UUkwxX1JFVFJJRVMsICZwb3J0LT5yZWdzLT50 eF9jb250cm9sWzFdKTsKPiArIMKgIMKgIMKgIF9fcmF3X3dyaXRlbChERUZBVUxUX1RYX0NOVFJM MCwgJnBvcnQtPnJlZ3MtPnR4X2NvbnRyb2xbMF0pOwo+ICsgwqAgwqAgwqAgX19yYXdfd3JpdGVs KDAsICZwb3J0LT5yZWdzLT5yeF9jb250cm9sWzFdKTsKPiArIMKgIMKgIMKgIF9fcmF3X3dyaXRl bChERUZBVUxUX1JYX0NOVFJMMCwgJnBvcnQtPnJlZ3MtPnJ4X2NvbnRyb2xbMF0pOwo+ICsKPiAr I2lmIDAKPiArIMKgIMKgIMKgIHFtZ3Jfc2V0X2lycShSWF9RVUVVRShwb3J0KSwgUVVFVUVfSVJR X1NSQ19OT1RfRU1QVFksCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGV0aF9yeF9p cnEsIGRldik7Cj4gKyDCoCDCoCDCoCBxbWdyX3NldF9pcnEoVFhET05FX1FVRVVFLCBRVUVVRV9J UlFfU1JDX05PVF9FTVBUWSwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZXRoX3R4 ZG9uZV9pcnEsIE5VTEwpOwo+ICsgwqAgwqAgwqAgcW1ncl9lbmFibGVfaXJxKFRYRE9ORV9RVUVV RSk7Cj4gKyNlbmRpZgo+ICsgwqAgwqAgwqAgbWVtc2V0KCZtc2csIDAsIHNpemVvZihtc2cpKTsK PiArI2lmIERFQlVHX09QRU4KPiArIMKgIMKgIMKgIGZwcmludGYoc3RkZXJyLCAiJXMlZCBvcGVu ZWRcbiIsIGRldi0+ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkKTsKPiArI2VuZGlmCj4gKyDCoCDCoCDC oCByZXR1cm4gMDsKPiArb3V0Ogo+ICsgwqAgwqAgwqAgZnJlZShwb3J0LT5idWZmX3RhYik7Cj4g KyDCoCDCoCDCoCBwb3J0LT5idWZmX3RhYiA9IE5VTEw7Cj4gKyNpZiBERUJVR19PUEVOCj4gKyDC oCDCoCDCoCBmcHJpbnRmKHN0ZGVyciwgIiVzJWQgb3BlbiBmYWlsZWQgKCVpKVxuIiwgZGV2LT5k ZXYubmFtZSwgZGV2LT5kZXYuaWQsIGVycik7Cj4gKyNlbmRpZgo+ICsgwqAgwqAgwqAgcmV0dXJu IGVycjsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaXhwNHh4X2V0aF9jbG9zZShzdHJ1Y3QgZXRo X2RldmljZSAqZGV2KQo+ICt7Cj4gKyDCoCDCoCDCoCBzdHJ1Y3QgcG9ydCAqcG9ydCA9IGRldi0+ cHJpdjsKPiArIMKgIMKgIMKgIHN0cnVjdCBtc2cgbXNnOwo+ICsgwqAgwqAgwqAgaW50IGJ1ZmZz ID0gUlhfREVTQ1M7IC8qIGFsbG9jYXRlZCBSWCBidWZmZXJzICovCj4gKyDCoCDCoCDCoCBpbnQg aTsKPiArCj4gKyNpZiBERUJVR19DTE9TRQo+ICsgwqAgwqAgwqAgZnByaW50ZihzdGRlcnIsICIl cyVkOiBjbG9zaW5nXG4iLCBkZXYtPmRldi5uYW1lLCBkZXYtPmRldi5pZCk7Cj4gKyNlbmRpZgo+ ICsjaWYgMAo+ICsgwqAgwqAgwqAgcW1ncl9kaXNhYmxlX2lycShSWF9RVUVVRShwb3J0KSk7Cj4g KyNlbmRpZgo+ICsKPiArIMKgIMKgIMKgIGlmICghcG9ydC0+YnVmZl90YWIpCj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCByZXR1cm47IC8qIGFscmVhZHkgY2xvc2VkICovCj4gKwo+ICsgwqAgwqAg wqAgd2hpbGUgKHF1ZXVlX2dldF9kZXNjKFJYRlJFRV9RVUVVRShwb3J0KSwgcG9ydCwgMCkgPj0g MCkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGJ1ZmZzLS07Cj4gKwo+ICsgwqAgwqAgwqAgbWVt c2V0KCZtc2csIDAsIHNpemVvZihtc2cpKTsKPiArIMKgIMKgIMKgIG1zZy5jbWQgPSBOUEVfU0VU TE9PUEJBQ0tfTU9ERTsKPiArIMKgIMKgIMKgIG1zZy5ldGhfaWQgPSBMT0dJQ0FMX0lEKHBvcnQp Owo+ICsgwqAgwqAgwqAgbXNnLnBhcmFtc1sxXSA9IDE7Cj4gKyDCoCDCoCDCoCBpZiAobnBlX3Nl bmRfcmVjdl9tZXNzYWdlKHBvcnQtPm5wZSwgJm1zZywgIkVUSF9FTkFCTEVfTE9PUEJBQ0siKSkK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGZwcmludGYoc3RkZXJyLCAiJXMlZDogdW5hYmxlIHRv IGVuYWJsZSBsb29wYmFja1xuIiwgZGV2LT5kZXYubmFtZSwgZGV2LT5kZXYuaWQpOwo+ICsKPiAr I2lmIERFQlVHX0NMT1NFCj4gKyDCoCDCoCDCoCBmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6IGRyYWlu aW5nIFJYIHF1ZXVlXG4iLCBkZXYtPmRldi5uYW1lLCBkZXYtPmRldi5pZCk7Cj4gKyNlbmRpZgo+ ICsgwqAgwqAgwqAgaSA9IDA7Cj4gKyDCoCDCoCDCoCBkbyB7IC8qIGRyYWluIFJYIGJ1ZmZlcnMg Ki8KPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHdoaWxlIChxdWV1ZV9nZXRfZGVzYyhSWF9RVUVV RShwb3J0KSwgcG9ydCwgMCkgPj0gMCkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIGJ1ZmZzLS07Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAoIWJ1ZmZzKQo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7Cj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCBpZiAocW1ncl9zdGF0X2Z1bGwoVFhET05FX1FVRVVFKSAmJiAhKGkgJSAxMCkpIHsKPiAr IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC8qIHdlIGhhdmUgdG8gaW5qZWN0IHNv bWUgcGFja2V0ICovCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzdHJ1Y3Qg ZGVzYyAqZGVzYzsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGludCBuID0g cXVldWVfZ2V0X2Rlc2MoVFhET05FX1FVRVVFLCBwb3J0LCAxKTsKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIEJVR19PTihuIDwgMCk7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBkZXNjID0gJnBvcnQtPnR4X2Rlc2NfdGFiW25dOwo+ICsgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGVzYy0+YnVmX2xlbiA9IGRlc2MtPnBrdF9sZW4gPSAx Owo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgLy93bWIoKTsKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGJhcnJpZXIoKTsKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIHF1ZXVlX3B1dF9kZXNjKFRYX1FVRVVFKHBvcnQpLCBkZXNjKTsK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0KPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVkZWxh eSgxKTsKPiArIMKgIMKgIMKgIH0gd2hpbGUgKCsraSA8IE1BWF9DTE9TRV9XQUlUKTsKPiArCj4g KyDCoCDCoCDCoCBpZiAoYnVmZnMpCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmcHJpbnRmKHN0 ZGVyciwgIiVzJWQ6IHVuYWJsZSB0byBkcmFpbiBSWCBxdWV1ZSwgJWkgYnVmZmVyKHMpIGxlZnQg aW4gTlBFXG4iLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGV2LT5kZXYu bmFtZSwgZGV2LT5kZXYuaWQsIGJ1ZmZzKTsKPiArI2lmIERFQlVHX0NMT1NFCj4gKyDCoCDCoCDC oCBpZiAoIWJ1ZmZzKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZnByaW50ZihzdGRlcnIsICIl cyVkOiBkcmFpbmluZyBSWCBxdWV1ZSB0b29rICVpIGN5Y2xlc1xuIiwgZGV2LT5kZXYubmFtZSwg ZGV2LT5kZXYuaWQsIGkpOwo+ICsjZW5kaWYKPiArCj4gKyDCoCDCoCDCoCBidWZmcyA9IFRYX0RF U0NTOwo+ICsgwqAgwqAgwqAgd2hpbGUgKHF1ZXVlX2dldF9kZXNjKFRYX1FVRVVFKHBvcnQpLCBw b3J0LCAxKSA+PSAwKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYnVmZnMtLTsgLyogY2FuY2Vs IFRYICovCj4gKwo+ICsgwqAgwqAgwqAgaSA9IDA7Cj4gKyDCoCDCoCDCoCBkbyB7Cj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCB3aGlsZSAocXVldWVfZ2V0X2Rlc2MoVFhET05FX1FVRVVFLCBwb3J0 LCAxKSA+PSAwKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYnVmZnMtLTsK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmICghYnVmZnMpCj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCBicmVhazsKPiArIMKgIMKgIMKgIH0gd2hpbGUgKCsraSA8IE1BWF9D TE9TRV9XQUlUKTsKPiArCj4gKyDCoCDCoCDCoCBpZiAoYnVmZnMpCj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCBmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6IHVuYWJsZSB0byBkcmFpbiBUWCBxdWV1ZSwg JWkgYnVmZmVyKHMpIGxlZnQgaW4gTlBFXG4iLAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgZGV2LT5kZXYubmFtZSwgZGV2LT5kZXYuaWQsIGJ1ZmZzKTsKPiArI2lmIERFQlVH X0NMT1NFCj4gKyDCoCDCoCDCoCBpZiAoIWJ1ZmZzKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAg ZnByaW50ZihzdGRlcnIsICIlcyVkOiBkcmFpbmluZyBUWCBxdWV1ZXMgdG9vayAlaSBjeWNsZXNc biIsIGRldi0+ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkLCBpKTsKPiArI2VuZGlmCj4gKwo+ICsgwqAg wqAgwqAgbXNnLnBhcmFtc1sxXSA9IDA7Cj4gKyDCoCDCoCDCoCBpZiAobnBlX3NlbmRfcmVjdl9t ZXNzYWdlKHBvcnQtPm5wZSwgJm1zZywgIkVUSF9ESVNBQkxFX0xPT1BCQUNLIikpCj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCBmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6IHVuYWJsZSB0byBkaXNhYmxl IGxvb3BiYWNrXG4iLCBkZXYtPmRldi5uYW1lLCBkZXYtPmRldi5pZCk7Cj4gKwo+ICsjaWYgMAo+ ICsgwqAgwqAgwqAgcW1ncl9kaXNhYmxlX2lycShUWERPTkVfUVVFVUUpOwo+ICsjZW5kaWYKPiAr IMKgIMKgIMKgIHJlbGVhc2VfcXVldWVzKHBvcnQpOwo+ICsgwqAgwqAgwqAgZnJlZShwb3J0LT5i dWZmX3RhYik7Cj4gKyDCoCDCoCDCoCBwb3J0LT5idWZmX3RhYiA9IE5VTEw7Cj4gKyNpZiBERUJV R19DTE9TRQo+ICsgwqAgwqAgwqAgZnByaW50ZihzdGRlcnIsICIlcyVkOiBjbG9zZWRcbiIsIGRl di0+ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkKTsKPiArI2VuZGlmCj4gK30KPiArCj4gK3N0YXRpYyBp bnQgaXhwNHh4X2V0aF9nZXRfaHdhZGRyKHN0cnVjdCBldGhfZGV2aWNlICpldGgsIHVuc2lnbmVk IGNoYXIgKmFkZHIpCj4gK3sKPiArIMKgIMKgIMKgIHN0cnVjdCBwb3J0ICpwb3J0ID0gZXRoLT5w cml2Owo+ICsgwqAgwqAgwqAgbWVtY3B5KGFkZHIsIHBvcnQtPnBpbmZvLT5od2FkZHIsIDYpOwo+ ICsgwqAgwqAgwqAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgaXhwNHh4X2V0aF9z ZXRfaHdhZGRyKHN0cnVjdCBldGhfZGV2aWNlICpldGgsIHVuc2lnbmVkIGNoYXIgKmFkZHIpCj4g K3sKPiArIMKgIMKgIMKgIHN0cnVjdCBwb3J0ICpwb3J0ID0gZXRoLT5wcml2Owo+ICsgwqAgwqAg wqAgbWVtY3B5KHBvcnQtPnBpbmZvLT5od2FkZHIsIGFkZHIsIDYpOwo+ICsgwqAgwqAgwqAgcmV0 dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgaXhwNHh4X2V0aF9pbml0KHN0cnVjdCBldGhf ZGV2aWNlICpldGgpCj4gK3sKPiArIMKgIMKgIMKgIHN0cnVjdCBwb3J0ICpwb3J0ID0gZXRoLT5w cml2Owo+ICsKPiArIMKgIMKgIMKgIF9fcmF3X3dyaXRlbChERUZBVUxUX0NPUkVfQ05UUkwgfCBD T1JFX1JFU0VULAo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAmcG9ydC0+cmVncy0+ Y29yZV9jb250cm9sKTsKPiArIMKgIMKgIMKgIHVkZWxheSg1MCk7Cj4gKyDCoCDCoCDCoCBfX3Jh d193cml0ZWwoREVGQVVMVF9DT1JFX0NOVFJMLCAmcG9ydC0+cmVncy0+Y29yZV9jb250cm9sKTsK PiArIMKgIMKgIMKgIHVkZWxheSg1MCk7Cj4gKwo+ICsgwqAgwqAgwqAgbWlpZGV2X3Jlc3RhcnRf YW5lZygmcG9ydC0+bWlpZGV2KTsKPiArIMKgIMKgIMKgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtz dGF0aWMgaW50IGl4cDR4eF9ldGhfcHJvYmUoc3RydWN0IGRldmljZV9kICpkZXYpCj4gK3sKPiAr IMKgIMKgIMKgIHN0cnVjdCBucGUgKm5wZTsKPiArIMKgIMKgIMKgIHN0cnVjdCBwb3J0ICpwb3J0 Owo+ICsgwqAgwqAgwqAgc3RydWN0IGV0aF9wbGF0X2luZm8gKnBpbmZvID0gZGV2LT5wbGF0Zm9y bV9kYXRhOwo+ICsKPiArIMKgIMKgIMKgIGlmICghcGluZm8pIHsKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIGZwcmludGYoc3RkZXJyLCAiaXhwNHh4X2V0aDogbm8gcGxhdGZvcm0gaW5mb3JtYXRp b25cbiIpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIC1FTk9ERVY7Cj4gKyDCoCDC oCDCoCB9Cj4gKwo+ICsgwqAgwqAgwqAgaWYgKCEobnBlID0gbnBlX3JlcXVlc3QocGluZm8tPm5w ZSkpKSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmcHJpbnRmKHN0ZGVyciwgIml4cDR4eF9l dGg6IHVuYWJsZSB0byBhY3F1aXJlIE5QRVxuIik7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBy ZXR1cm4gLUVOT0RFVjsKPiArIMKgIMKgIMKgIH0KPiArCj4gKyDCoCDCoCDCoCBwb3J0ID0gbWVt YWxpZ24oMHgyMCwgc2l6ZW9mKCpwb3J0KSk7Cj4gKyDCoCDCoCDCoCBtZW1zZXQocG9ydCwgMCwg c2l6ZW9mKCpwb3J0KSk7Cj4gKwo+ICsgwqAgwqAgwqAgcG9ydC0+cmVncyA9IHBpbmZvLT5yZWdz Owo+ICsgwqAgwqAgwqAgcG9ydC0+bnBlID0gbnBlOwo+ICsgwqAgwqAgwqAgcG9ydC0+cGluZm8g PSBwaW5mbzsKPiArIMKgIMKgIMKgIHBvcnQtPmV0aC5kZXYuaWQgPSAtMTsKPiArIMKgIMKgIMKg IHBvcnQtPmV0aC5wcml2ID0gcG9ydDsKPiArIMKgIMKgIMKgIHBvcnQtPmV0aC5pbml0ID0gaXhw NHh4X2V0aF9pbml0Owo+ICsgwqAgwqAgwqAgcG9ydC0+ZXRoLm9wZW4gPSBpeHA0eHhfZXRoX29w ZW47Cj4gKyDCoCDCoCDCoCBwb3J0LT5ldGguaGFsdCA9IGl4cDR4eF9ldGhfY2xvc2U7Cj4gKyDC oCDCoCDCoCBwb3J0LT5ldGguc2VuZCA9IGl4cDR4eF9ldGhfeG1pdDsKPiArIMKgIMKgIMKgIHBv cnQtPmV0aC5yZWN2ID0gaXhwNHh4X2V0aF9wb2xsOwo+ICsgwqAgwqAgwqAgcG9ydC0+ZXRoLmdl dF9ldGhhZGRyID0gaXhwNHh4X2V0aF9nZXRfaHdhZGRyOwo+ICsgwqAgwqAgwqAgcG9ydC0+ZXRo LnNldF9ldGhhZGRyID0gaXhwNHh4X2V0aF9zZXRfaHdhZGRyOwo+ICsKPiArIMKgIMKgIMKgIHBv cnQtPm1paWRldi5kZXYuaWQgPSAtMTsKPiArIMKgIMKgIMKgIHBvcnQtPm1paWRldi5yZWFkID0g aXhwNHh4X21kaW9fcmVhZDsKPiArIMKgIMKgIMKgIHBvcnQtPm1paWRldi53cml0ZSA9IGl4cDR4 eF9tZGlvX3dyaXRlOwo+ICsgwqAgwqAgwqAgcG9ydC0+bWlpZGV2LmFkZHJlc3MgPSBwaW5mby0+ cGh5Owo+ICsgwqAgwqAgwqAgcG9ydC0+bWlpZGV2LmVkZXYgPSAmcG9ydC0+ZXRoOwo+ICsgwqAg wqAgwqAgbWlpX3JlZ2lzdGVyKCZwb3J0LT5taWlkZXYpOwo+ICsgwqAgwqAgwqAgZXRoX3JlZ2lz dGVyKCZwb3J0LT5ldGgpOwo+ICsgwqAgwqAgwqAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRp YyBzdHJ1Y3QgZHJpdmVyX2QgaXhwNHh4X2V0aF9kcml2ZXIgPSB7Cj4gKyDCoCDCoCDCoCAubmFt ZSDCoD0gIml4cDR4eF9ldGgiLAo+ICsgwqAgwqAgwqAgLnByb2JlID0gaXhwNHh4X2V0aF9wcm9i ZSwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgX19pbml0IGl4cDR4eF9ldGhfbW9kdWxlX2luaXQo dm9pZCkKPiArewo+ICsgwqAgwqAgwqAgaWYgKGNwdV9pc19peHA0M3goKSkgewo+ICsgwqAgwqAg wqAgwqAgwqAgwqAgwqAgLyogSVhQNDN4IGxhY2tzIE5QRS1CIGFuZCB1c2VzIE5QRS1DIGZvciBN SUkgUEhZIGFjY2VzcyAqLwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKCEoaXhwNHh4X3Jl YWRfZmVhdHVyZV9iaXRzKCkgJiBJWFA0WFhfRkVBVFVSRV9OUEVDX0VUSCkpCj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gLUVOT1NZUzsKPiArIMKgIMKgIMKgIMKg IMKgIMKgIMKgIG1kaW9fcmVncyA9IChzdHJ1Y3QgZXRoX3JlZ3MgKilJWFA0WFhfRXRoQ19CQVNF Owo+ICsgwqAgwqAgwqAgfSBlbHNlIHsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC8qIEFsbCBN SUkgUEhZIGFjY2Vzc2VzIHVzZSBOUEUtQiBFdGhlcm5ldCByZWdpc3RlcnMgKi8KPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIGlmICghKGl4cDR4eF9yZWFkX2ZlYXR1cmVfYml0cygpICYgSVhQNFhY X0ZFQVRVUkVfTlBFQl9FVEgwKSkKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IHJldHVybiAtRU5PU1lTOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbWRpb19yZWdzID0gKHN0 cnVjdCBldGhfcmVncyAqKUlYUDRYWF9FdGhCX0JBU0U7Cj4gKyDCoCDCoCDCoCB9Cj4gKwo+ICsg wqAgwqAgwqAgX19yYXdfd3JpdGVsKERFRkFVTFRfQ09SRV9DTlRSTCwgJm1kaW9fcmVncy0+Y29y ZV9jb250cm9sKTsKPiArCj4gKyDCoCDCoCDCoCByZWdpc3Rlcl9kcml2ZXIoJml4cDR4eF9ldGhf ZHJpdmVyKTsKPiArIMKgIMKgIMKgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtkZXZpY2VfaW5pdGNh bGwoaXhwNHh4X2V0aF9tb2R1bGVfaW5pdCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2VyaWFs L3NlcmlhbF9uczE2NTUwLmMgYi9kcml2ZXJzL3NlcmlhbC9zZXJpYWxfbnMxNjU1MC5jCj4gaW5k ZXggMjkwNjE5Zi4uMGYyNWNlYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3NlcmlhbC9zZXJpYWxf bnMxNjU1MC5jCj4gKysrIGIvZHJpdmVycy9zZXJpYWwvc2VyaWFsX25zMTY1NTAuYwo+IEBAIC0x MDIsNyArMTAyLDExIEBAIHN0YXRpYyB2b2lkIG5zMTY1NTBfc2VyaWFsX2luaXRfcG9ydChzdHJ1 Y3QgY29uc29sZV9kZXZpY2UgKmNkZXYpCj4gwqAgwqAgwqAgwqBiYXVkX2Rpdmlzb3IgPSBuczE2 NTUwX2NhbGNfZGl2aXNvcihjZGV2LCBDT05GSUdfQkFVRFJBVEUpOwo+Cj4gwqAgwqAgwqAgwqAv KiBpbml0aWFsaXppbmcgdGhlIGRldmljZSBmb3IgdGhlIGZpcnN0IHRpbWUgKi8KPiArI2lmZGVm IENPTkZJR19BUkNIX0lYUDRYWAo+ICsgwqAgwqAgwqAgcGxhdC0+cmVnX3dyaXRlKElFUl9VVUUs IGJhc2UsIGllcik7IC8qIEVuYWJsZSBVQVJUIG9wZXJhdGlvbiAqLwo+ICsjZWxzZQo+IMKgIMKg IMKgIMKgcGxhdC0+cmVnX3dyaXRlKDB4MDAsIGJhc2UsIGllcik7Cj4gKyNlbmRpZgo+IMKgI2lm ZGVmIENPTkZJR19EUklWRVJfU0VSSUFMX05TMTY1NTBfT01BUF9FWFRFTlNJT05TCj4gwqAgwqAg wqAgwqBwbGF0LT5yZWdfd3JpdGUoMHgwNywgYmFzZSwgbWRyMSk7IMKgIMKgIMKgLyogRGlzYWJs ZSAqLwo+IMKgI2VuZGlmCj4gQEAgLTE4MSw3ICsxODUsMTEgQEAgc3RhdGljIGludCBuczE2NTUw X3NldGJhdWRyYXRlKHN0cnVjdCBjb25zb2xlX2RldmljZSAqY2RldiwgaW50IGJhdWRfcmF0ZSkK PiDCoCDCoCDCoCDCoCDCoCDCoGNkZXYtPmRldi0+cGxhdGZvcm1fZGF0YTsKPiDCoCDCoCDCoCDC oHVuc2lnbmVkIGxvbmcgYmFzZSA9IGNkZXYtPmRldi0+bWFwX2Jhc2U7Cj4gwqAgwqAgwqAgwqB1 bnNpZ25lZCBpbnQgYmF1ZF9kaXZpc29yID0gbnMxNjU1MF9jYWxjX2Rpdmlzb3IoY2RldiwgYmF1 ZF9yYXRlKTsKPiArI2lmZGVmIENPTkZJR19BUkNIX0lYUDRYWAo+ICsgwqAgwqAgwqAgcGxhdC0+ cmVnX3dyaXRlKElFUl9VVUUsIGJhc2UsIGllcik7IC8qIEVuYWJsZSBVQVJUIG9wZXJhdGlvbiAq Lwo+ICsjZWxzZQo+IMKgIMKgIMKgIMKgcGxhdC0+cmVnX3dyaXRlKDB4MDAsIGJhc2UsIGllcik7 Cj4gKyNlbmRpZgo+IMKgIMKgIMKgIMKgcGxhdC0+cmVnX3dyaXRlKExDUl9CS1NFLCBiYXNlLCBs Y3IpOwo+IMKgIMKgIMKgIMKgcGxhdC0+cmVnX3dyaXRlKGJhdWRfZGl2aXNvciAmIDB4ZmYsIGJh c2UsIGRsbCk7Cj4gwqAgwqAgwqAgwqBwbGF0LT5yZWdfd3JpdGUoKGJhdWRfZGl2aXNvciA+PiA4 KSAmIDB4ZmYsIGJhc2UsIGRsbSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2VyaWFsL3Nlcmlh bF9uczE2NTUwLmggYi9kcml2ZXJzL3NlcmlhbC9zZXJpYWxfbnMxNjU1MC5oCj4gaW5kZXggZWIy ZmQxMC4uYmEyMGE2ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3NlcmlhbC9zZXJpYWxfbnMxNjU1 MC5oCj4gKysrIGIvZHJpdmVycy9zZXJpYWwvc2VyaWFsX25zMTY1NTAuaAo+IEBAIC01MCw2ICs1 MCw4IEBACj4gwqAjZGVmaW5lIGRsbCDCoCDCoCDCoCDCoCDCoCDCoHJicgo+IMKgI2RlZmluZSBk bG0gwqAgwqAgwqAgwqAgwqAgwqBpZXIKPgo+ICsjZGVmaW5lIElFUl9VVUUgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAweDQwIMKgIMKgLyogVUFSVCBVbml0IEVuYWJsZSAoWFNjYWxlKSAqLwo+ICsK PiDCoCNkZWZpbmUgRkNSX0ZJRk9fRU4gwqAgwqAgMHgwMSDCoCAvKiBGaWZvIGVuYWJsZSAqLwo+ IMKgI2RlZmluZSBGQ1JfUlhTUiDCoCDCoCDCoCDCoDB4MDIgwqAgLyogUmVjZWl2ZXIgc29mdCBy ZXNldCAqLwo+IMKgI2RlZmluZSBGQ1JfVFhTUiDCoCDCoCDCoCDCoDB4MDQgwqAgLyogVHJhbnNt aXR0ZXIgc29mdCByZXNldCAqLwo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KPiBiYXJlYm94IG1haWxpbmcgbGlzdAo+IGJhcmVib3hAbGlzdHMuaW5m cmFkZWFkLm9yZwo+IGh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8v YmFyZWJveAo+Cgp0aGFua3MsCgptYXJlawoKLS0gCmFzIHNpbXBsZSBhbmQgcHJpbWl0aXZlIGFz IHBvc3NpYmxlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KTWFyZWsgQmVsaXNrbyAtIE9QRU4tTkFORFJBCkZyZWVsYW5jZSBEZXZlbG9wZXIKClJ1c2th IE5vdmEgVmVzIDIxOSB8IFByZXNvdiwgMDgwMDUgU2xvdmFrIFJlcHVibGljClRlbDogKzQyMSA5 MTUgMDUyIDE4NApza3lwZTogbWFyZWt3aGl0ZQppY3E6IDI5MDU1MTA4Ngp3ZWI6IGh0dHA6Ly9v cGVuLW5hbmRyYS5jb20KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmJhcmVib3ggbWFpbGluZyBsaXN0CmJhcmVib3hAbGlzdHMuaW5mcmFkZWFkLm9yZwpo dHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2JhcmVib3gK