From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from inx.pm.waw.pl ([195.116.170.130]) by canuck.infradead.org with esmtps (Exim 4.72 #1 (Red Hat Linux)) id 1Parjy-0004mu-D5 for barebox@lists.infradead.org; Thu, 06 Jan 2011 15:27:12 +0000 From: Krzysztof Halasa References: Date: Thu, 06 Jan 2011 16:26:29 +0100 In-Reply-To: (Krzysztof Halasa's message of "Thu, 06 Jan 2011 15:48:38 +0100") Message-ID: MIME-Version: 1.0 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: [PATCH 3/3] ARM: Add support for IXP4xx CPU and for Goramo Multilink router platform. To: barebox@lists.infradead.org ClNpZ25lZC1vZmYtYnk6IEtyenlzenRvZiBIYcWCYXNhIDxraGNAcG0ud2F3LnBsPgoKZGlmZiAt LWdpdCBhL0RvY3VtZW50YXRpb24vYm9hcmRzLmRveCBiL0RvY3VtZW50YXRpb24vYm9hcmRzLmRv eAppbmRleCA4MDg3ZjAxLi44ZDg3MDFmIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2JvYXJk cy5kb3gKKysrIGIvRG9jdW1lbnRhdGlvbi9ib2FyZHMuZG94CkBAIC0yMCw2ICsyMCw3IEBAIEFS TSB0eXBlOgogQGxpIEBzdWJwYWdlIGJvYXJkX2JhYmFnZQogQGxpIEBzdWJwYWdlIGNodW1ieW9u ZQogQGxpIEBzdWJwYWdlIHNjYjkzMjgKK0BsaSBAc3VicGFnZSBtdWx0aWxpbmsKIEBsaSBAc3Vi cGFnZSBuZXR4CiBAbGkgQHN1YnBhZ2UgZGV2X29tYXBfYXJjaAogQGxpIEBzdWJwYWdlIGE5bTI0 NDAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL0tjb25maWcgYi9hcmNoL2FybS9LY29uZmlnCmluZGV4 IGYxNTM2YTUuLjUwZTlkYmYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL0tjb25maWcKKysrIGIvYXJj aC9hcm0vS2NvbmZpZwpAQCAtMzksNiArMzksMTMgQEAgY29uZmlnIEFSQ0hfSU1YCiAJYm9vbCAi RnJlZXNjYWxlIGlNWC1iYXNlZCIKIAlzZWxlY3QgR0VORVJJQ19HUElPCiAKK2NvbmZpZyBBUkNI X0lYUDRYWAorCWJvb2wgIkludGVsIElYUDR4eC1iYXNlZCIKKwlzZWxlY3QgQ1BVXzMydjUKKwlz ZWxlY3QgQVJDSF9TVVBQT1JUU19CSUdfRU5ESUFOCisJc2VsZWN0IENQVV9CSUdfRU5ESUFOCisJ c2VsZWN0IEFSQ0hfSEFTX0xPV0xFVkVMX0lOSVQKKwogY29uZmlnIEFSQ0hfU1RNCiAJYm9vbCAi U2lnbWFUZWwvRlNMIGlNWC1iYXNlZCIKIAlzZWxlY3QgR0VORVJJQ19HUElPCkBAIC03MSw2ICs3 OCw3IEBAIHNvdXJjZSBhcmNoL2FybS9jcHUvS2NvbmZpZwogc291cmNlIGFyY2gvYXJtL21hY2gt YXQ5MS9LY29uZmlnCiBzb3VyY2UgYXJjaC9hcm0vbWFjaC1lcDkzeHgvS2NvbmZpZwogc291cmNl IGFyY2gvYXJtL21hY2gtaW14L0tjb25maWcKK3NvdXJjZSBhcmNoL2FybS9tYWNoLWl4cDR4eC9L Y29uZmlnCiBzb3VyY2UgYXJjaC9hcm0vbWFjaC1zdG0vS2NvbmZpZwogc291cmNlIGFyY2gvYXJt L21hY2gtbmV0eC9LY29uZmlnCiBzb3VyY2UgYXJjaC9hcm0vbWFjaC1ub21hZGlrL0tjb25maWcK ZGlmZiAtLWdpdCBhL2FyY2gvYXJtL01ha2VmaWxlIGIvYXJjaC9hcm0vTWFrZWZpbGUKaW5kZXgg YzkwOTYwZS4uNGNjMGMwYyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vTWFrZWZpbGUKKysrIGIvYXJj aC9hcm0vTWFrZWZpbGUKQEAgLTQxLDYgKzQxLDcgQEAgQ1BQRkxBR1MgKz0gJChDRkxBR1NfQUJJ KSAkKGFyY2gteSkgJCh0dW5lLXkpCiBtYWNoaW5lLSQoQ09ORklHX0FSQ0hfQVQ5MSkJCTo9IGF0 OTEKIG1hY2hpbmUtJChDT05GSUdfQVJDSF9FUDkzWFgpCQk6PSBlcDkzeHgKIG1hY2hpbmUtJChD T05GSUdfQVJDSF9JTVgpCQk6PSBpbXgKK21hY2hpbmUtJChDT05GSUdfQVJDSF9JWFA0WFgpCQk6 PSBpeHA0eHgKIG1hY2hpbmUtJChDT05GSUdfQVJDSF9TVE0pCQk6PSBzdG0KIG1hY2hpbmUtJChD T05GSUdfQVJDSF9OT01BRElLKQkJOj0gbm9tYWRpawogbWFjaGluZS0kKENPTkZJR19BUkNIX05F VFgpCQk6PSBuZXR4CkBAIC03NCw2ICs3NSw3IEBAIGJvYXJkLSQoQ09ORklHX01BQ0hfRlJFRVND QUxFX01YMzVfM1NUQUNLKQk6PSBmcmVlc2NhbGUtbXgzNS0zLXN0YWNrCiBib2FyZC0kKENPTkZJ R19NQUNIX0lNWDIxQURTKQkJCTo9IGlteDIxYWRzCiBib2FyZC0kKENPTkZJR19NQUNIX0lNWDI3 QURTKQkJCTo9IGlteDI3YWRzCiBib2FyZC0kKENPTkZJR19NQUNIX01NQ0NQVSkJCQk6PSBtbWNj cHUKK2JvYXJkLSQoQ09ORklHX01BQ0hfTVVMVElMSU5LKQkJCTo9IG11bHRpbGluawogYm9hcmQt JChDT05GSUdfTUFDSF9NWDFBRFMpCQkJOj0gbXgxYWRzCiBib2FyZC0kKENPTkZJR19NQUNIX05P TUFESUtfODgxNU5ISykJCTo9IG5oazg4MTUKIGJvYXJkLSQoQ09ORklHX01BQ0hfTlhEQjUwMCkJ CQk6PSBuZXR4CmRpZmYgLS1naXQgYS9hcmNoL2FybS9ib2FyZHMvbXVsdGlsaW5rL01ha2VmaWxl IGIvYXJjaC9hcm0vYm9hcmRzL211bHRpbGluay9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5kNWE4YmJjCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vYm9h cmRzL211bHRpbGluay9NYWtlZmlsZQpAQCAtMCwwICsxIEBACitvYmoteSArPSBsb3dsZXZlbF9p bml0Lm8gbXVsdGlsaW5rLm8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2JvYXJkcy9tdWx0aWxpbmsv Y29uZmlnLmggYi9hcmNoL2FybS9ib2FyZHMvbXVsdGlsaW5rL2NvbmZpZy5oCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2Jv YXJkcy9tdWx0aWxpbmsvbG93bGV2ZWxfaW5pdC5TIGIvYXJjaC9hcm0vYm9hcmRzL211bHRpbGlu ay9sb3dsZXZlbF9pbml0LlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTcw ZWY3MgotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL2JvYXJkcy9tdWx0aWxpbmsvbG93bGV2 ZWxfaW5pdC5TCkBAIC0wLDAgKzEsNjQgQEAKKyNpbmNsdWRlIDxtYWNoL2l4cDR4eC1yZWdzLmg+ CisKKwkuc2VjdGlvbiAiLnRleHRfYmFyZV9pbml0IiwgImF4IgorCS5iYWxpZ24gMHg0MAorCS5z cGFjZSAweDQwIC8qIGNvbmZpZ3VyYXRpb24gYmxvY2sgYXQgMHg0MCAqLworCisJLm1hY3JvIERF TEFZX0ZPUiBjeWNsZXMsIHJlZzAKKwlsZHIgXHJlZzAsID1cY3ljbGVzCisJc3VicyBccmVnMCwg XHJlZzAsICMxCisJc3VibmUgcGMsIHBjLCAjMHhjCisJLmVuZG0KKworI2RlZmluZSBDRkdfU0RS QU1fU0laRSAgICAweDUwIC8qIHUzMiAqLworI2RlZmluZSBDRkdfU0RSQU1fQ09ORiAgICAweDU0 IC8qIHUzMiAqLworI2RlZmluZSBDRkdfU0RSQU1fTU9ERSAgICAweDU4IC8qIHUzMiAqLworI2Rl ZmluZSBDRkdfU0RSQU1fUkVGUkVTSCAweDVDIC8qIHUzMiAqLworCisuZ2xvYmwgYm9hcmRfaW5p dF9sb3dsZXZlbAorYm9hcmRfaW5pdF9sb3dsZXZlbDoKKwltb3YgcjgsICNJWFA0WFhfRVhQX0JB U0UoMCkKKwlsZHIgcjEsIFtyOCwgI0NGR19TRFJBTV9DT05GXQorCWxkciByMiwgPUlYUDRYWF9T RFJBTV9DT05GSUcKKwlzdHIgcjEsIFtyMl0KKworCS8qIGRpc2FibGUgcmVmcmVzaCBjeWNsZXMg Ki8KKwltb3YgcjEsICMwCisJYWRkIHIyLCByMiwgIzQgLyogcjIgPSBJWFA0WFhfU0RSQU1fUkVG UkVTSCAqLworCXN0ciByMSwgW3IyXQorCisJLyogc2VuZCBOT1AgY29tbWFuZCAqLworCW1vdiBy MSwgIzMKKwlhZGQgcjMsIHIyLCAjNCAvKiByMyA9IElYUDRYWF9TRFJBTV9JUiAqLworCXN0ciBy MSwgW3IzXQorCURFTEFZX0ZPUiAweDQwMDAsIHIwCisKKwkvKiBzZXQgU0RSQU0gaW50ZXJuYWwg cmVmcmVzaCAqLworCWxkciByMSwgW3I4LCAjQ0ZHX1NEUkFNX1JFRlJFU0hdCisJc3RyIHIxLCBb cjJdCisJREVMQVlfRk9SIDB4NDAwMCwgcjAKKworCS8qIHNlbmQgcHJlY2hhcmdlLWFsbCBjb21t YW5kIHRvIGNsb3NlIGFsbCBvcGVuIGJhbmtzICovCisJbW92IHIxLCAjMgorCXN0ciByMSwgW3Iz XQorCURFTEFZX0ZPUiAweDQwMDAsIHIwCisKKwkvKiBwcm92aWRlIDggYXV0by1yZWZyZXNoIGN5 Y2xlcyAqLworCW1vdiByMSwgIzQKKwltb3YgcjQsICM4CisxOglzdHIgcjEsIFtyM10KKwlERUxB WV9GT1IgMHgxMDAsIHIwCisJc3VicyByNCwgcjQsICMxCisJYm5lIDFiCisKKwkvKiBzZXQgbW9k ZSByZWdpc3RlciBpbiBTRFJBTSAqLworCWxkciByMSwgW3I4LCAjQ0ZHX1NEUkFNX01PREVdCisJ c3RyIHIxLCBbcjNdCisJREVMQVlfRk9SIDB4NDAwMCwgcjAKKworCS8qIHNlbmQgbm9ybWFsIG9w ZXJhdGlvbiBjb21tYW5kICovCisJbW92IHIxLCAjNgorCXN0ciByMSwgW3IzXQorCURFTEFZX0ZP UiAweDQwMDAsIHIwCisKKwltb3YgcGMsIGxyCmRpZmYgLS1naXQgYS9hcmNoL2FybS9ib2FyZHMv bXVsdGlsaW5rL211bHRpbGluay5jIGIvYXJjaC9hcm0vYm9hcmRzL211bHRpbGluay9tdWx0aWxp bmsuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmZiOGY0Ci0tLSAvZGV2 L251bGwKKysrIGIvYXJjaC9hcm0vYm9hcmRzL211bHRpbGluay9tdWx0aWxpbmsuYwpAQCAtMCww ICsxLDE0NCBAQAorLy8jZGVmaW5lIERFQlVHCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVk ZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxpbml0Lmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4K KyNpbmNsdWRlIDxhc20vYXJtbGludXguaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRl IDxnZW5lcmF0ZWQvbWFjaC10eXBlcy5oPgorI2luY2x1ZGUgPG1hY2gvaXhwNHh4LXJlZ3MuaD4K KyNpbmNsdWRlIDxtYWNoL3BsYXRmb3JtLmg+CisKKy8qIG9mZnNldHMgZnJvbSBzdGFydCBvZiBm bGFzaCBST00gPSAweDUwMDAwMDAwICovCisjZGVmaW5lIENGR19FVEgwX0FERFJFU1MgICAgIDB4 NDAgLyogNiBieXRlcyAqLworI2RlZmluZSBDRkdfRVRIMV9BRERSRVNTICAgICAweDQ2IC8qIDYg Ynl0ZXMgKi8KKyNkZWZpbmUgQ0ZHX1JFViAgICAgICAgICAgICAgMHg0QyAvKiB1MzIgKi8KKyNk ZWZpbmUgQ0ZHX1NEUkFNX1NJWkUgICAgICAgMHg1MCAvKiB1MzIgKi8KKyNkZWZpbmUgQ0ZHX1NE UkFNX0NPTkYgICAgICAgMHg1NCAvKiB1MzIgKi8KKyNkZWZpbmUgQ0ZHX1NEUkFNX01PREUgICAg ICAgMHg1OCAvKiB1MzIgKi8KKyNkZWZpbmUgQ0ZHX1NEUkFNX1JFRlJFU0ggICAgMHg1QyAvKiB1 MzIgKi8KKworI2RlZmluZSBDRkdfSFdfQklUUyAgICAgICAgICAweDYwIC8qIHUzMiAqLworI2Rl ZmluZSAgQ0ZHX0hXX1VTQl9QT1JUUyAgICAweDAwMDAwMDA3IC8qIDAgPSBubyBORUMgY2hpcCwg MS01ID0gcG9ydHMgIyAqLworI2RlZmluZSAgQ0ZHX0hXX0hBU19QQ0lfU0xPVCAweDAwMDAwMDA4 CisjZGVmaW5lICBDRkdfSFdfSEFTX0VUSDAgICAgIDB4MDAwMDAwMTAKKyNkZWZpbmUgIENGR19I V19IQVNfRVRIMSAgICAgMHgwMDAwMDAyMAorI2RlZmluZSAgQ0ZHX0hXX0hBU19IU1MwICAgICAw eDAwMDAwMDQwCisjZGVmaW5lICBDRkdfSFdfSEFTX0hTUzEgICAgIDB4MDAwMDAwODAKKyNkZWZp bmUgIENGR19IV19IQVNfVUFSVDAgICAgMHgwMDAwMDEwMAorI2RlZmluZSAgQ0ZHX0hXX0hBU19V QVJUMSAgICAweDAwMDAwMjAwCisjZGVmaW5lICBDRkdfSFdfSEFTX0VFUFJPTSAgIDB4MDAwMDA0 MDAKKworI2RlZmluZSBFVEhfQUxFTiAgICAgICAgICAgICA2CisKKyNkZWZpbmUgQkFSRUJPWF9T VEFSVCAgICAgICAgMHgwMDAwMAorI2RlZmluZSBCQVJFQk9YX0xFTkdUSCAgICAgICAweDM0MDAw CisjZGVmaW5lIE5QRV9BX1NUQVJUICAgICAgICAgIChCQVJFQk9YX1NUQVJUICsgQkFSRUJPWF9M RU5HVEgpCisjZGVmaW5lIE5QRV9BX0xFTkdUSCAgICAgICAgIDB4MDUwMDAKKyNkZWZpbmUgTlBF X0JfU1RBUlQgICAgICAgICAgKE5QRV9BX1NUQVJUICsgTlBFX0FfTEVOR1RIKQorI2RlZmluZSBO UEVfQl9MRU5HVEggICAgICAgICAweDAzMDAwCisjZGVmaW5lIE5QRV9DX1NUQVJUICAgICAgICAg IChOUEVfQl9TVEFSVCArIE5QRV9CX0xFTkdUSCkKKyNkZWZpbmUgTlBFX0NfTEVOR1RIICAgICAg ICAgMHgwNDAwMAorI2RlZmluZSBOUEVfRU5WMF9TVEFSVCAgICAgICAoTlBFX0NfU1RBUlQgKyBO UEVfQ19MRU5HVEgpCisjZGVmaW5lIE5QRV9FTlYwX0xFTkdUSCAgICAgIDB4MjAwMDAKKworc3Rh dGljIHN0cnVjdCBkZXZpY2VfZCBjZmlfZGV2ID0geworCS5uYW1lICAgICA9ICJjZmlfZmxhc2gi LAorCS5tYXBfYmFzZSA9IElYUDRYWF9FWFBfQkFTRSgwKSwKKwkuc2l6ZSAgICAgPSAxNiAqIDEw MjQgKiAxMDI0LAorfTsKKworc3RhdGljIHN0cnVjdCBldGhfcGxhdF9pbmZvIGV0aF9waW5mb1sy XSA9IHsKKwl7CisJCS5yZWdzICAgICA9IElYUDRYWF9FdGhCX0JBU0UsCisJCS5ucGUgICAgICA9 IDEsCisJCS5waHkgICAgICA9IDAsCisJCS5yeHEgICAgICA9IDIwLAorCQkudHhyZWFkeXEgPSAy OSwKKwl9LCB7CisJCS5yZWdzICAgICA9IElYUDRYWF9FdGhDX0JBU0UsCisJCS5ucGUgICAgICA9 IDIsCisJCS5waHkgICAgICA9IDEsCisJCS5yeHEgICAgICA9IDIxLAorCQkudHhyZWFkeXEgPSAz MCwKKwl9Cit9OworCitzdGF0aWMgc3RydWN0IGRldmljZV9kIGV0aF9kZXZbMl0gPSB7CisJewor CQkubmFtZSAgICAgICAgICAgPSAiaXhwNHh4X2V0aCIsCisJCS5wbGF0Zm9ybV9kYXRhICA9ICZl dGhfcGluZm9bMF0sCisJfSwgeworCQkuaWQgICAgICAgICAgICAgPSAxLAorCQkubmFtZSAgICAg ICAgICAgPSAiaXhwNHh4X2V0aCIsCisJCS5wbGF0Zm9ybV9kYXRhICA9ICZldGhfcGluZm9bMV0s CisJfQorfTsKKworc3RhdGljIHN0cnVjdCBtZW1vcnlfcGxhdGZvcm1fZGF0YSByYW1fcGRhdGEg PSB7CisJLm5hbWUgICAgICAgICAgID0gInJhbTAiLAorCS5mbGFncyAgICAgICAgICA9IERFVkZT X1JEV1IsCit9OworCitzdHJ1Y3QgZGV2aWNlX2Qgc2RyYW1fZGV2ID0geworCS5pZCAgICAgICAg ICAgICA9IC0xLAorCS5uYW1lICAgICAgICAgICA9ICJtZW0iLAorCS5tYXBfYmFzZSAgICAgICA9 IDB4MDAwMDAwMDAsCisJLnNpemUgICAgICAgICAgID0gMzIgKiAxMDI0ICogMTAyNCwKKwkucGxh dGZvcm1fZGF0YSAgPSAmcmFtX3BkYXRhLAorfTsKKworc3RhdGljIGlubGluZSB1OCBfX2luaXQg Zmxhc2hfcmVhZGIodTMyIGFkZHIpCit7CisJcmV0dXJuIF9fcmF3X3JlYWRiKElYUDRYWF9FWFBf QkFTRSgwKSArIGFkZHIpOworfQorCitzdGF0aWMgaW50IF9faW5pdCBnbWxfZGV2aWNlc19pbml0 KHZvaWQpCit7CisJdTMyIGh3X2JpdHM7CisJaW50IGk7CisKKwlJWFA0WFhfRVhQX0NTMCA9IElY UDRYWF9FWFBfRU4gfCBJWFA0WFhfRVhQX0lOVEVMIHwKKwkJSVhQNFhYX0VYUF9CSVRTKDI0KSB8 IElYUDRYWF9FWFBfV1JfRU4gfCBJWFA0WFhfRVhQX0JZVEVfUkQxNjsKKwlpID0gcmVnaXN0ZXJf ZGV2aWNlKCZjZmlfZGV2KTsKKwlpZiAoaSkKKwkJZ290byBvdXQ7CisKKwlkZXZmc19hZGRfcGFy dGl0aW9uKCJub3IwIiwgQkFSRUJPWF9TVEFSVCwgQkFSRUJPWF9MRU5HVEgsCisJCQkgICAgREVW RlNfUEFSVElUSU9OX0ZJWEVEIHwgREVWRlNfUEFSVElUSU9OX1JFQURPTkxZLCAiYmFyZWJveCIp OworCWRldmZzX2FkZF9wYXJ0aXRpb24oIm5vcjAiLCBOUEVfQV9TVEFSVCwgTlBFX0FfTEVOR1RI LAorCQkJICAgIERFVkZTX1BBUlRJVElPTl9GSVhFRCB8IERFVkZTX1BBUlRJVElPTl9SRUFET05M WSwgIk5QRS1BIik7CisJZGV2ZnNfYWRkX3BhcnRpdGlvbigibm9yMCIsIE5QRV9CX1NUQVJULCBO UEVfQl9MRU5HVEgsCisJCQkgICAgREVWRlNfUEFSVElUSU9OX0ZJWEVEIHwgREVWRlNfUEFSVElU SU9OX1JFQURPTkxZLCAiTlBFLUIiKTsKKwlkZXZmc19hZGRfcGFydGl0aW9uKCJub3IwIiwgTlBF X0NfU1RBUlQsIE5QRV9DX0xFTkdUSCwKKwkJCSAgICBERVZGU19QQVJUSVRJT05fRklYRUQgfCBE RVZGU19QQVJUSVRJT05fUkVBRE9OTFksICJOUEUtQyIpOworCWRldmZzX2FkZF9wYXJ0aXRpb24o Im5vcjAiLCBOUEVfRU5WMF9TVEFSVCwgTlBFX0VOVjBfTEVOR1RILAorCQkJICAgIERFVkZTX1BB UlRJVElPTl9GSVhFRCwgImVudjAiKTsKKworCWh3X2JpdHMgPSBfX3Jhd19yZWFkbChJWFA0WFhf RVhQX0JBU0UoMCkgKyBDRkdfSFdfQklUUyk7CisKKwlpZiAoaHdfYml0cyAmIENGR19IV19IQVNf RVRIMCkgeworCQlmb3IgKGkgPSAwOyBpIDwgRVRIX0FMRU47IGkrKykKKwkJCWV0aF9waW5mb1sw XS5od2FkZHJbaV0gPSBmbGFzaF9yZWFkYihDRkdfRVRIMF9BRERSRVNTICsgaSk7CisJCXJlZ2lz dGVyX2RldmljZSgmZXRoX2RldlswXSk7CisJfQorCisJaWYgKGh3X2JpdHMgJiBDRkdfSFdfSEFT X0VUSDEpIHsKKwkJZm9yIChpID0gMDsgaSA8IEVUSF9BTEVOOyBpKyspCisJCQlldGhfcGluZm9b MV0uaHdhZGRyW2ldID0gZmxhc2hfcmVhZGIoQ0ZHX0VUSDFfQUREUkVTUyArIGkpOworCQlyZWdp c3Rlcl9kZXZpY2UoJmV0aF9kZXZbMV0pOworCX0KKworCXNkcmFtX2Rldi5zaXplID0gX19yYXdf cmVhZGwoSVhQNFhYX0VYUF9CQVNFKDApICsgQ0ZHX1NEUkFNX1NJWkUpOworCWkgPSByZWdpc3Rl cl9kZXZpY2UoJnNkcmFtX2Rldik7CisJaWYgKGkpCisJCWdvdG8gb3V0OworCisJYXJtbGludXhf YWRkX2RyYW0oJnNkcmFtX2Rldik7CisJYXJtbGludXhfc2V0X2Jvb3RwYXJhbXMoKHZvaWQgKiko MHgwMDAwMDEwMCkpOworCWFybWxpbnV4X3NldF9hcmNoaXRlY3R1cmUoTUFDSF9UWVBFX0dPUkFN T19NTFIpOworCitvdXQ6CisJcmV0dXJuIGk7Cit9CitkZXZpY2VfaW5pdGNhbGwoZ21sX2Rldmlj ZXNfaW5pdCk7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9ib2FyZHMvbXVsdGlsaW5rL211bHRpbGlu ay5kb3ggYi9hcmNoL2FybS9ib2FyZHMvbXVsdGlsaW5rL211bHRpbGluay5kb3gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWFkYTFlMQotLS0gL2Rldi9udWxsCisrKyBiL2Fy Y2gvYXJtL2JvYXJkcy9tdWx0aWxpbmsvbXVsdGlsaW5rLmRveApAQCAtMCwwICsxLDM2IEBACisv KiogQHBhZ2UgbXVsdGlsaW5rIEdvcmFtbyBNdWx0aUxpbmsKKworVGhlc2UgYm9hcmRzIGFyZSBi YXNlZCBvbiBJbnRlbCBJWFA0MnggQ1BVLgorCitWYXJpYW50czoKKworTWljcm9Sb3V0ZXIgbW9k dWxlOiBJWFA0MjEgb3IgSVhQNDI1IDI2NiBNSHogQ1BVLCAzMiBNaUIgU0RSQU0sCisgICAxIG9y IDIgRmFzdCBFdGhlcm5ldCBwb3J0cywgMiBzeW5jIHNlcmlhbCBwb3J0cywgMSBSUy0yMzIgKGNv bnNvbGUpIHBvcnQuCisKK011bHRpTGluayB2LjE6IElYUDQyNSAyNjYgb3IgNTMzIE1IeiBDUFUs IDY0IC0gMjU2IE1pQiBTRFJBTSwKKyAgIDIgRmFzdCBFdGhlcm5ldCBwb3J0cywgMiBzeW5jIHNl cmlhbCBwb3J0cywgMSAtIDIgUlMtMjMyIHBvcnRzLAorICAgYSBtaW5pLVBDSSBzbG90LCAyIG9w dGlvbmFsIFVTQiBob3N0IGNvbm5lY3RvcnMuCisKK011bHRpTGluayB2LjI6IElYUDQyNSAyNjYg b3IgNTMzIE1IeiBDUFUsIDY0IC0gMjU2IE1pQiBTRFJBTSwKKyAgIDIgRmFzdCBFdGhlcm5ldCBw b3J0cywgMiBzeW5jIHNlcmlhbCBwb3J0cywgMSAtIDIgUlMtMjMyIHBvcnRzLAorICAgMiBhZGRp dGlvbmFsIG9wdGlvbmFsIEZhc3Qgb3IgR2lnYWJpdCBFdGhlcm5ldCBwb3J0cywgYSBtaW5pLVBD SSBzbG90LAorICAgNCBvcHRpb25hbCBVU0IgaG9zdCBjb25uZWN0b3JzLCBvcHRpb25hbCBSZWFs LVRpbWUgQ2xvY2ssCisgICBvcHRpb25hbCBJREUgY29ubmVjdG9yLgorCisxNiBNaUIgSW50ZWwg U3RyYXRhRmxhc2ggbWVtb3J5IGlzIHBhcnRpdGlvbmVkIGFzIGZvbGxvd3M6CisKKzB4MDAwMDAt MHgzNDAwMCA6IEJhcmVib3ggaW1hZ2UKKzB4MzQwMDAtMHgzOTAwMCA6IE5QRS1BIG1pY3JvY29k ZQorMHgzOTAwMC0weDNjMDAwIDogTlBFLUIgbWljcm9jb2RlCisweDNjMDAwLTB4NDAwMDAgOiBO UEUtQyBtaWNyb2NvZGUKKzB4NDAwMDAtMHg2MDAwMCA6IGVudjAKKworVGhlcmUgaXMgYSBmYWN0 b3J5IGNvbmZpZ3VyYXRpb24gcmVnaW9uIHdpdGhpbiBCYXJlYm94IGltYWdlIGF0IGxvY2F0aW9u cworMHg0MCAtIDB4N0YuIERldGFpbHMgYXJlIGluIGZpbGUgbXVsdGlsaW5rLmMKKworQmFyZWJv eCBpbWFnZSBhbmQgTlBFIG1pY3JvY29kZSBmaWxlcyBhcmUgY29tYmluZWQgaW4gZmlyc3QgdHdv IGJsb2Nrcworb2YgZmxhc2ggbWVtb3J5LiBOUEUtQSBtaWNyb2NvZGUgaXMgbm90IHVzZWQgYnkg QmFyZWJveCAoYnV0IG1heSBiZSB1c2VkCitieSBMaW51eCBIU1MgZHJpdmVyKS4gTlBFLUIgbWlj cm9jb2RlIGlzIG5lZWRlZCBmb3IgZXRoMCBhbmQgTlBFLUMgZm9yCitldGgxLiBCYXJlYm94IG5l ZWRzIHZlcnNpb24gMi40IG9mIHJlZ3VsYXIgbm9uLVZMQU4tYXdhcmUgbWljcm9jb2RlIGZpbGVz Cisod2l0aCBvciB3aXRob3V0IGNyeXB0byBzdXBwb3J0KS4KKyovCmRpZmYgLS1naXQgYS9hcmNo L2FybS9tYWNoLWl4cDR4eC9LY29uZmlnIGIvYXJjaC9hcm0vbWFjaC1peHA0eHgvS2NvbmZpZwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNWU0YjQxCi0tLSAvZGV2L251bGwK KysrIGIvYXJjaC9hcm0vbWFjaC1peHA0eHgvS2NvbmZpZwpAQCAtMCwwICsxLDI2IEBACitpZiBB UkNIX0lYUDRYWAorCitjaG9pY2UKKwlwcm9tcHQgIklYUDR4eCBCb2FyZCBUeXBlIgorCitjb25m aWcgTUFDSF9NVUxUSUxJTksKKwlib29sICJHb3JhbW8gTXVsdGlMaW5rIgorCXNlbGVjdCBNQUNI X0hBU19MT1dMRVZFTF9JTklUCitlbmRjaG9pY2UKKworY29uZmlnIEJPQVJESU5GTworCWRlZmF1 bHQgIkdvcmFtbyBNdWx0aUxpbmsiIGlmIE1BQ0hfTVVMVElMSU5LCisKK2NvbmZpZyBJWFA0WFhf UU1HUgorCXRyaXN0YXRlICJJWFA0eHggUXVldWUgTWFuYWdlciBzdXBwb3J0IgorCWhlbHAKKwkg IFRoaXMgZHJpdmVyIHN1cHBvcnRzIElYUDR4eCBidWlsdC1pbiBoYXJkd2FyZSBxdWV1ZSBtYW5h Z2VyCisJICBhbmQgaXMgcmVxdWlyZWQgYnkgdGhlIEV0aGVybmV0IGRyaXZlci4KKworY29uZmln IElYUDRYWF9OUEUKKwl0cmlzdGF0ZSAiSVhQNHh4IE5ldHdvcmsgUHJvY2Vzc29yIEVuZ2luZSBz dXBwb3J0IgorCWhlbHAKKwkgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIElYUDR4eCBidWlsdC1pbiBu ZXR3b3JrIGNvcHJvY2Vzc29ycworCSAgYW5kIGlzIHJlcXVpcmVkIGJ5IHRoZSBFdGhlcm5ldCBk cml2ZXIuCisKK2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWl4cDR4eC9NYWtlZmls ZSBiL2FyY2gvYXJtL21hY2gtaXhwNHh4L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmFhMzg5OTEKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNoLWl4 cDR4eC9NYWtlZmlsZQpAQCAtMCwwICsxLDMgQEAKK29iai15ICs9IGxvd2xldmVsX2luaXQubyBn ZW5lcmljLm8KK29iai0kKENPTkZJR19JWFA0WFhfUU1HUikgKz0gcW1nci5vCitvYmotJChDT05G SUdfSVhQNFhYX05QRSkgKz0gbnBlLm8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtaXhwNHh4 L2dlbmVyaWMuYyBiL2FyY2gvYXJtL21hY2gtaXhwNHh4L2dlbmVyaWMuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjM5NGE0Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9h cm0vbWFjaC1peHA0eHgvZ2VuZXJpYy5jCkBAIC0wLDAgKzEsMTIwIEBACisjaW5jbHVkZSA8Y29t bW9uLmg+CisjaW5jbHVkZSA8aW5pdC5oPgorI2luY2x1ZGUgPG5zMTY1NTAuaD4KKyNpbmNsdWRl IDxhc20vYXJtbGludXguaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxtYWNoL2l4 cDR4eC1yZWdzLmg+CisKKyNkZWZpbmUgT1NUU19GUkVRVUVOQ1kgNjY2NjYwMDAKKwordm9pZCBy ZXNldF9jcHUodWxvbmcgYWRkcikKK3sKKwkvKiBVc2Ugb24tY2hpcCByZXNldCBjYXBhYmlsaXR5 ICovCisJLyogVGhpcyBtYXkgbm90IHdvcmsgb24gSVhQNDI1IHJldi4gQTAgKi8KKworCUlYUDRY WF9PU1dLID0gSVhQNFhYX1dEVF9LRVk7CisJSVhQNFhYX09TV1QgPSAwOyAvKiByZXF1ZXN0IGlt bWVkaWF0ZSByZXNldCAqLworCUlYUDRYWF9PU1dFID0gSVhQNFhYX1dEVF9SRVNFVF9FTkFCTEUg fCBJWFA0WFhfV0RUX0NPVU5UX0VOQUJMRTsKKwl3aGlsZSAoMSkKKwkJOworfQorCisjaW5jbHVk ZSA8Y2xvY2suaD4KKworLyoqCisgKiBAYnJpZWYgUHJvdmlkZSBhIHNpbXBsZSBjbG9jayByZWFk CisgKgorICogTm90aGluZyBpcyBzaW1wbGVyLi4gcmVhZCBkaXJlY3QgZnJvbSBjbG9jayBhbmQg cHJvdmlkZSBpdAorICogdG8gdGhlIGNhbGxlci4KKyAqCisgKiBAcmV0dXJuIGNsb2NrIGNvdW50 ZXIKKyAqLworc3RhdGljIHVpbnQ2NF90IGl4cDR4eF9jbG9ja3NvdXJjZV9yZWFkKHZvaWQpCit7 CisJcmV0dXJuIElYUDRYWF9PU1RTOworfQorCitzdGF0aWMgc3RydWN0IGNsb2Nrc291cmNlIGNz ID0geworCS5yZWFkID0gaXhwNHh4X2Nsb2Nrc291cmNlX3JlYWQsCisJLm1hc2sgPSAweGZmZmZm ZmZmLAorCS5zaGlmdCA9IDEwLAorfTsKKworLyoqCisgKiBAYnJpZWYgSW5pdGlhbGl6ZSB0aGUg Q2xvY2sKKyAqCisgKiBXZSB1c2UgdGhlIFRpbWUtU3RhbXAgVGltZXIKKyAqCisgKiBAcmV0dXJu IHJlc3VsdCBvZiBAcmVmIGluaXRfY2xvY2sKKyAqLworc3RhdGljIGludCBpeHA0eHhfY2xvY2tz b3VyY2VfaW5pdCh2b2lkKQoreworCWNzLm11bHQgPSBjbG9ja3NvdXJjZV9oejJtdWx0KE9TVFNf RlJFUVVFTkNZLCBjcy5zaGlmdCk7CisKKwlyZXR1cm4gaW5pdF9jbG9jaygmY3MpOworfQorCisv KiBSdW4gbWUgYXQgYm9vdCB0aW1lICovCitjb3JlX2luaXRjYWxsKGl4cDR4eF9jbG9ja3NvdXJj ZV9pbml0KTsKKworCisjaWZkZWYgQ09ORklHX0RSSVZFUl9TRVJJQUxfTlMxNjU1MAorCisvKioK KyAqIEBicmllZiBVQVJUIHBvcnQgcmVnaXN0ZXIgcmVhZCBmdW5jdGlvbiBmb3IgSVhQNFhYCisg KgorICogQHBhcmFtIGJhc2UgYmFzZSBhZGRyZXNzIG9mIFVBUlQKKyAqIEBwYXJhbSByZWdfaWR4 IHJlZ2lzdGVyIGluZGV4CisgKgorICogQHJldHVybiBjaGFyYWN0ZXIgcmVhZCBmcm9tIHJlZ2lz dGVyCisgKi8KK3Vuc2lnbmVkIGludCBpeHA0eHhfdWFydF9yZWFkKHVuc2lnbmVkIGxvbmcgYmFz ZSwgdW5zaWduZWQgY2hhciByZWdfaWR4KQoreworCXJldHVybiByZWFkYig0ICogcmVnX2lkeCAr IDMgLyogYmlnLWVuZGlhbiAqLyArICh1aW50OF90ICopYmFzZSk7Cit9CitFWFBPUlRfU1lNQk9M KGl4cDR4eF91YXJ0X3JlYWQpOworCisvKioKKyAqIEBicmllZiBVQVJUIHBvcnQgcmVnaXN0ZXIg d3JpdGUgZnVuY3Rpb24gZm9yIElYUDRYWAorICoKKyAqIEBwYXJhbSB2YWwgdmFsdWUgdG8gd3Jp dGUKKyAqIEBwYXJhbSBiYXNlIGJhc2UgYWRkcmVzcyBvZiBVQVJUCisgKiBAcGFyYW0gcmVnX2lk eCByZWdpc3RlciBpbmRleAorICoKKyAqIEByZXR1cm4gdm9pZAorICovCit2b2lkIGl4cDR4eF91 YXJ0X3dyaXRlKHVuc2lnbmVkIGludCB2YWwsIHVuc2lnbmVkIGxvbmcgYmFzZSwgdW5zaWduZWQg Y2hhciByZWdfaWR4KQoreworCXdyaXRlYih2YWwsIDQgKiByZWdfaWR4ICsgMyAvKiBiaWctZW5k aWFuICovICsgKHVpbnQ4X3QgKiliYXNlKTsKK30KK0VYUE9SVF9TWU1CT0woaXhwNHh4X3VhcnRf d3JpdGUpOworCisKK3N0YXRpYyBzdHJ1Y3QgTlMxNjU1MF9wbGF0IHNlcmlhbF9wbGF0ID0gewor CS5jbG9jayA9IDE0NzQ1NjAwLAorCS5mX2NhcHMgPSBDT05TT0xFX1NURElOIHwgQ09OU09MRV9T VERPVVQgfCBDT05TT0xFX1NUREVSUiwKKwkucmVnX3JlYWQgPSBpeHA0eHhfdWFydF9yZWFkLAor CS5yZWdfd3JpdGUgPSBpeHA0eHhfdWFydF93cml0ZSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgZGV2 aWNlX2QgaXhwNHh4X3NlcmlhbF9kZXZpY2UgPSB7CisJLm5hbWUgPSAic2VyaWFsX25zMTY1NTAi LAorCS5tYXBfYmFzZSA9ICh1MzIpSVhQNFhYX1VBUlQxX0JBU0UsCisJLnNpemUgPSAxMDI0LAor CS5wbGF0Zm9ybV9kYXRhID0gKHZvaWQgKikmc2VyaWFsX3BsYXQsCit9OworCisvKioKKyAqIEBi cmllZiBVQVJUIHNlcmlhbCBwb3J0IGluaXRpYWxpemF0aW9uCisgKgorICogQHJldHVybiByZXN1 bHQgb2YgZGV2aWNlIHJlZ2lzdHJhdGlvbgorICovCitzdGF0aWMgaW50IGl4cDR4eF9jb25zb2xl X2luaXQodm9pZCkKK3sKKwkvKiBSZWdpc3RlciB0aGUgc2VyaWFsIHBvcnQgKi8KKwlyZXR1cm4g cmVnaXN0ZXJfZGV2aWNlKCZpeHA0eHhfc2VyaWFsX2RldmljZSk7Cit9CisKK2NvbnNvbGVfaW5p dGNhbGwoaXhwNHh4X2NvbnNvbGVfaW5pdCk7CisKKyNlbmRpZiAvKiBDT05GSUdfRFJJVkVSX1NF UklBTF9OUzE2NTUwICovCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWl4cDR4eC9pbmNsdWRl L21hY2gvY3B1LmggYi9hcmNoL2FybS9tYWNoLWl4cDR4eC9pbmNsdWRlL21hY2gvY3B1LmgKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RlMDIxZQotLS0gL2Rldi9udWxsCisr KyBiL2FyY2gvYXJtL21hY2gtaXhwNHh4L2luY2x1ZGUvbWFjaC9jcHUuaApAQCAtMCwwICsxLDcw IEBACisvKgorICogYXJjaC9hcm0vbWFjaC1peHA0eHgvaW5jbHVkZS9tYWNoL2NwdS5oCisgKgor ICogSVhQNFhYIGNwdSB0eXBlIGRldGVjdGlvbgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBN b250YVZpc3RhIFNvZnR3YXJlLCBJbmMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFz CisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKi8K KworI2lmbmRlZiBfX0FTTV9BUkNIX0NQVV9IX18KKyNkZWZpbmUgX19BU01fQVJDSF9DUFVfSF9f CisKKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorCisvKiBQcm9jZXNzb3IgaWQgdmFsdWUgaW4g Q1AxNSBSZWdpc3RlciAwICovCisjZGVmaW5lIElYUDQyWF9QUk9DRVNTT1JfSURfVkFMVUUgMHg2 OTA1NDFjMCAvKiBpbmNsdWRpbmcgdW51c2VkIDB4NjkwNTQxRXggKi8KKyNkZWZpbmUgSVhQNDJY X1BST0NFU1NPUl9JRF9NQVNLICAweGZmZmZmZmMwCisKKyNkZWZpbmUgSVhQNDNYX1BST0NFU1NP Ul9JRF9WQUxVRSAweDY5MDU0MDQwCisjZGVmaW5lIElYUDQzWF9QUk9DRVNTT1JfSURfTUFTSyAg MHhmZmZmZmZmMAorCisjZGVmaW5lIElYUDQ2WF9QUk9DRVNTT1JfSURfVkFMVUUgMHg2OTA1NDIw MCAvKiBpbmNsdWRpbmcgSVhQNDU1ICovCisjZGVmaW5lIElYUDQ2WF9QUk9DRVNTT1JfSURfTUFT SyAgMHhmZmZmZmZmMAorCisjZGVmaW5lIGNwdV9pc19peHA0MnhfcmV2X2EwKCkgKChyZWFkX2Nw dWlkX2lkKCkgJiAoSVhQNDJYX1BST0NFU1NPUl9JRF9NQVNLIHwgMHhGKSkgPT0gXAorCQkJCUlY UDQyWF9QUk9DRVNTT1JfSURfVkFMVUUpCisjZGVmaW5lIGNwdV9pc19peHA0MngoKSAoKHJlYWRf Y3B1aWRfaWQoKSAmIElYUDQyWF9QUk9DRVNTT1JfSURfTUFTSykgPT0gXAorCQkJIElYUDQyWF9Q Uk9DRVNTT1JfSURfVkFMVUUpCisjZGVmaW5lIGNwdV9pc19peHA0M3goKSAoKHJlYWRfY3B1aWRf aWQoKSAmIElYUDQzWF9QUk9DRVNTT1JfSURfTUFTSykgPT0gXAorCQkJIElYUDQzWF9QUk9DRVNT T1JfSURfVkFMVUUpCisjZGVmaW5lIGNwdV9pc19peHA0NngoKSAoKHJlYWRfY3B1aWRfaWQoKSAm IElYUDQ2WF9QUk9DRVNTT1JfSURfTUFTSykgPT0gXAorCQkJIElYUDQ2WF9QUk9DRVNTT1JfSURf VkFMVUUpCisKKy8qCisgKiBUaGUgQ1BVIElEIG5ldmVyIGNoYW5nZXMgYXQgcnVuIHRpbWUsIHNv IHdlIG1pZ2h0IGFzIHdlbGwgdGVsbCB0aGUKKyAqIGNvbXBpbGVyIHRoYXQgaXQncyBjb25zdGFu dC4gIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIHJlYWQgdGhlIENQVSBJRAorICogcmF0aGVyIHRoYW4g ZGlyZWN0bHkgcmVhZGluZyBwcm9jZXNzb3JfaWQgb3IgcmVhZF9jcHVpZCgpIGRpcmVjdGx5Lgor ICovCitzdGF0aWMgaW5saW5lIHUzMiBfX2F0dHJpYnV0ZV9jb25zdF9fIHJlYWRfY3B1aWRfaWQo dm9pZCkKK3sKKwl1MzIgdmFsOworCWFzbSgibXJjIHAxNSwgMCwgJTAsIGMwLCBjMCwgMCIgOiAi PXIiICh2YWwpIDogOiAiY2MiKTsKKworCXJldHVybiB2YWw7Cit9CisKK3N0YXRpYyBpbmxpbmUg dTMyIGl4cDR4eF9yZWFkX2ZlYXR1cmVfYml0cyh2b2lkKQoreworCXUzMiB2YWwgPSB+SVhQNFhY X0VYUF9DRkcyOworCisJaWYgKGNwdV9pc19peHA0MnhfcmV2X2EwKCkpCisJCXJldHVybiBJWFA0 MlhfRkVBVFVSRV9NQVNLICYgfihJWFA0WFhfRkVBVFVSRV9SQ09NUCB8CisJCQkJCSAgICAgICBJ WFA0WFhfRkVBVFVSRV9BRVMpOworCWlmIChjcHVfaXNfaXhwNDJ4KCkpCisJCXJldHVybiB2YWwg JiBJWFA0MlhfRkVBVFVSRV9NQVNLOworCWlmIChjcHVfaXNfaXhwNDN4KCkpCisJCXJldHVybiB2 YWwgJiBJWFA0M1hfRkVBVFVSRV9NQVNLOworCXJldHVybiB2YWwgJiBJWFA0NlhfRkVBVFVSRV9N QVNLOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgaXhwNHh4X3dyaXRlX2ZlYXR1cmVfYml0cyh1 MzIgdmFsdWUpCit7CisJSVhQNFhYX0VYUF9DRkcyID0gfnZhbHVlOworfQorCisjZW5kaWYgIC8q IF9BU01fQVJDSF9DUFVfSCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1peHA0eHgvaW5j bHVkZS9tYWNoL2l4cDR4eC1yZWdzLmggYi9hcmNoL2FybS9tYWNoLWl4cDR4eC9pbmNsdWRlL21h Y2gvaXhwNHh4LXJlZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTRk YzhhCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vbWFjaC1peHA0eHgvaW5jbHVkZS9tYWNo L2l4cDR4eC1yZWdzLmgKQEAgLTAsMCArMSwzNjUgQEAKKy8qCisgKiBSZWdpc3RlciBkZWZpbml0 aW9ucyBmb3IgSVhQNHh4IGNoaXBzZXQuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDAyIEludGVs IENvcnBvcmF0aW9uLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDQgTW9udGFWaXN0YSBTb2Z0 d2FyZSwgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICovCisKKyNpZm5kZWYgX0FT TV9BUk1fSVhQNFhYX0hfCisjZGVmaW5lIF9BU01fQVJNX0lYUDRYWF9IXworCisjaWZkZWYgX19B U1NFTUJMRVJfXworI2RlZmluZSBJWFA0WFhfUkVHKHJlZykgIChyZWcpCisjZWxzZQorI2RlZmlu ZSBJWFA0WFhfUkVHKHJlZykgICgqKHZvbGF0aWxlIHUzMiAqKShyZWcpKQorI2RlZmluZSBJWFA0 WFhfQkFTRShyZWcpICgodTMyKikocmVnKSkKKyNlbmRpZgorCisvKiBFeHBhbnNpb24gQnVzIHJl Z2lvbiAqLworCisvKiBRdWV1ZSBNYW5hZ2VyICovCisjZGVmaW5lIElYUDRYWF9RTUdSX0JBU0Ug ICAgICAgICAgICAgICgweDYwMDAwMDAwKQorI2RlZmluZSBJWFA0WFhfUU1HUl9SRUdJT05fU0la RSAgICAgICAoMHgwMDAwNDAwMCkKKworCisvKiBQQ0kgQ29uZmlnIHJlZ2lzdGVycyAqLworI2Rl ZmluZSBJWFA0WFhfUENJX0NGR19CQVNFICAgICAgICAgICAoMHhDMDAwMDAwMCkKKyNkZWZpbmUg SVhQNFhYX1BDSV9DRkdfUkVHSU9OX1NJWkUgICAgKDB4MDAwMDEwMDApCisKKy8qIFBlcmlwaGVy YWwgc3BhY2UgKi8KKyNkZWZpbmUgSVhQNFhYX1BFUklQSEVSQUxfQkFTRSAgICAgICAgKDB4Qzgw MDAwMDApCisjZGVmaW5lIElYUDRYWF9QRVJJUEhFUkFMX1JFR0lPTl9TSVpFICgweDAwMDEzMDAw KQorCisvKgorICogRGVidWcgVUFSVAorICoKKyAqIFRoaXMgaXMgYmFzaWNhbGx5IGEgcmVtYXAg b2YgVUFSVDEgaW50byBhIHJlZ2lvbiB0aGF0IGlzIHNlY3Rpb24KKyAqIGFsaWduZWQgc28gdGhh dCBpdCBjYW4gYmUgdXNlZCB3aXRoIHRoZSBsb3ctbGV2ZWwgZGVidWcgY29kZS4KKyAqLworI2Rl ZmluZSBJWFA0WFhfREVCVUdfVUFSVF9CQVNFICAgICAgICAoMHhDODAwMDAwMCkKKyNkZWZpbmUg SVhQNFhYX0RFQlVHX1VBUlRfUkVHSU9OX1NJWkUgKDB4MDAwMDEwMDApCisKKy8qIEV4cGFuc2lv biBCdXMgQ29udHJvbGxlciByZWdpc3RlcnMuICovCisjZGVmaW5lIElYUDRYWF9FWFBfQ1MwICAg ICAgIElYUDRYWF9SRUcoMHhDNDAwMDAwMCkKKyNkZWZpbmUgSVhQNFhYX0VYUF9DUzEgICAgICAg SVhQNFhYX1JFRygweEM0MDAwMDA0KQorI2RlZmluZSBJWFA0WFhfRVhQX0NTMiAgICAgICBJWFA0 WFhfUkVHKDB4QzQwMDAwMDgpCisjZGVmaW5lIElYUDRYWF9FWFBfQ1MzICAgICAgIElYUDRYWF9S RUcoMHhDNDAwMDAwQykKKyNkZWZpbmUgSVhQNFhYX0VYUF9DUzQgICAgICAgSVhQNFhYX1JFRygw eEM0MDAwMDEwKQorI2RlZmluZSBJWFA0WFhfRVhQX0NTNSAgICAgICBJWFA0WFhfUkVHKDB4QzQw MDAwMTQpCisjZGVmaW5lIElYUDRYWF9FWFBfQ1M2ICAgICAgIElYUDRYWF9SRUcoMHhDNDAwMDAx OCkKKyNkZWZpbmUgSVhQNFhYX0VYUF9DUzcgICAgICAgSVhQNFhYX1JFRygweEM0MDAwMDFDKQor CisjZGVmaW5lIElYUDRYWF9FWFBfQkFTRShuKSAgKDB4NTAwMDAwMDAgKyAobikgKiAxMDAwMDAw KQorCisjZGVmaW5lIElYUDRYWF9FWFBfRU4gICAgICAgIDB4ODAwMDAwMDAKKyNkZWZpbmUgSVhQ NFhYX0VYUF9UMShuKSAgICAoMHgxMDAwMDAwMCAqIChuKSkgLyogdmFsaWQ6IDAgLSAzICovCisj ZGVmaW5lIElYUDRYWF9FWFBfVDIobikgICAgKDB4MDQwMDAwMDAgKiAobikpIC8qIHZhbGlkOiAw IC0gMyAqLworI2RlZmluZSBJWFA0WFhfRVhQX1QzKG4pICAgICgweDAwNDAwMDAwICogKG4pKSAv KiB2YWxpZDogMCAtIDE1ICovCisjZGVmaW5lIElYUDRYWF9FWFBfVDQobikgICAgKDB4MDAxMDAw MDAgKiAobikpIC8qIHZhbGlkOiAwIC0gMyAqLworI2RlZmluZSBJWFA0WFhfRVhQX1Q1KG4pICAg ICgweDAwMDEwMDAwICogKG4pKSAvKiB2YWxpZDogMCAtIDE1ICovCisjZGVmaW5lIElYUDRYWF9F WFBfSU5URUwgICAgIDB4MDAwMDAwMDAKKyNkZWZpbmUgSVhQNFhYX0VYUF9NT1RPICAgICAgMHgw MDAwNDAwMAorI2RlZmluZSBJWFA0WFhfRVhQX0hQSSAgICAgICAweDAwMDA4MDAwCisjZGVmaW5l IElYUDRYWF9FWFBfQklUUyhuKSAgKDB4MDAwMDA0MDAgKiAoKG4pIC0gOSkpIC8qIHZhbGlkOiA5 IC0gMjQgKi8KKyNkZWZpbmUgSVhQNFhYX0VYUF9CWVRFX1JEMTYgMHgwMDAwMDA0MAorI2RlZmlu ZSBJWFA0WFhfRVhQX0hSRFlfUE9MICAweDAwMDAwMDIwCisjZGVmaW5lIElYUDRYWF9FWFBfTVVY X0VOICAgIDB4MDAwMDAwMTAKKyNkZWZpbmUgSVhQNFhYX0VYUF9TUExUX0VOICAgMHgwMDAwMDAw OAorI2RlZmluZSBJWFA0WFhfRVhQX1dSX0VOICAgICAweDAwMDAwMDAyCisjZGVmaW5lIElYUDRY WF9FWFBfQllURV9FTiAgIDB4MDAwMDAwMDEKKworI2RlZmluZSBJWFA0WFhfRVhQX0NGRzAgICAg ICBJWFA0WFhfUkVHKDB4QzQwMDAwMjApCisjZGVmaW5lIElYUDRYWF9FWFBfQ0ZHMSAgICAgIElY UDRYWF9SRUcoMHhDNDAwMDAyNCkKKyNkZWZpbmUgSVhQNFhYX0VYUF9DRkcyICAgICAgSVhQNFhY X1JFRygweEM0MDAwMDI4KQorI2RlZmluZSBJWFA0WFhfRVhQX0NGRzMgICAgICBJWFA0WFhfUkVH KDB4QzQwMDAwMkMpCisKKworLyogUGVyaXBoZXJhbCBTcGFjZSBSZWdpc3RlciBSZWdpb24gQmFz ZSBBZGRyZXNzZXMgKi8KKyNkZWZpbmUgSVhQNFhYX1VBUlQxX0JBU0UgICAgSVhQNFhYX0JBU0Uo SVhQNFhYX1BFUklQSEVSQUxfQkFTRSArIDB4MDAwMCkKKyNkZWZpbmUgSVhQNFhYX1VBUlQyX0JB U0UgICAgSVhQNFhYX0JBU0UoSVhQNFhYX1BFUklQSEVSQUxfQkFTRSArIDB4MTAwMCkKKyNkZWZp bmUgSVhQNFhYX1BNVV9CQVNFICAgICAgSVhQNFhYX0JBU0UoSVhQNFhYX1BFUklQSEVSQUxfQkFT RSArIDB4MjAwMCkKKyNkZWZpbmUgSVhQNFhYX0lOVENfQkFTRSAgICAgSVhQNFhYX0JBU0UoSVhQ NFhYX1BFUklQSEVSQUxfQkFTRSArIDB4MzAwMCkKKyNkZWZpbmUgSVhQNFhYX0dQSU9fQkFTRSAg ICAgSVhQNFhYX0JBU0UoSVhQNFhYX1BFUklQSEVSQUxfQkFTRSArIDB4NDAwMCkKKyNkZWZpbmUg SVhQNFhYX05QRUFfQkFTRSAgICAgSVhQNFhYX0JBU0UoSVhQNFhYX1BFUklQSEVSQUxfQkFTRSAr IDB4NjAwMCkKKyNkZWZpbmUgSVhQNFhYX05QRUJfQkFTRSAgICAgSVhQNFhYX0JBU0UoSVhQNFhY X1BFUklQSEVSQUxfQkFTRSArIDB4NzAwMCkKKyNkZWZpbmUgSVhQNFhYX05QRUNfQkFTRSAgICAg SVhQNFhYX0JBU0UoSVhQNFhYX1BFUklQSEVSQUxfQkFTRSArIDB4ODAwMCkKKyNkZWZpbmUgSVhQ NFhYX0V0aEJfQkFTRSAgICAgSVhQNFhYX0JBU0UoSVhQNFhYX1BFUklQSEVSQUxfQkFTRSArIDB4 OTAwMCkKKyNkZWZpbmUgSVhQNFhYX0V0aENfQkFTRSAgICAgSVhQNFhYX0JBU0UoSVhQNFhYX1BF UklQSEVSQUxfQkFTRSArIDB4QTAwMCkKKyNkZWZpbmUgSVhQNFhYX1VTQl9CQVNFICAgICAgSVhQ NFhYX0JBU0UoSVhQNFhYX1BFUklQSEVSQUxfQkFTRSArIDB4QjAwMCkKKy8qIElYUDQ2eCBvbmx5 ICovCisjZGVmaW5lIElYUDRYWF9FdGhBX0JBU0UgICAgIElYUDRYWF9CQVNFKElYUDRYWF9QRVJJ UEhFUkFMX0JBU0UgKyAweEMwMDApCisjZGVmaW5lIElYUDRYWF9FdGhCMV9CQVNFICAgIElYUDRY WF9CQVNFKElYUDRYWF9QRVJJUEhFUkFMX0JBU0UgKyAweEQwMDApCisjZGVmaW5lIElYUDRYWF9F dGhCMl9CQVNFICAgIElYUDRYWF9CQVNFKElYUDRYWF9QRVJJUEhFUkFMX0JBU0UgKyAweEUwMDAp CisjZGVmaW5lIElYUDRYWF9FdGhCM19CQVNFICAgIElYUDRYWF9CQVNFKElYUDRYWF9QRVJJUEhF UkFMX0JBU0UgKyAweEYwMDApCisjZGVmaW5lIElYUDRYWF9USU1FU1lOQ19CQVNFIElYUDRYWF9C QVNFKElYUDRYWF9QRVJJUEhFUkFMX0JBU0UgKyAweDEwMDAwKQorI2RlZmluZSBJWFA0WFhfSTJD X0JBU0UgICAgICBJWFA0WFhfQkFTRShJWFA0WFhfUEVSSVBIRVJBTF9CQVNFICsgMHgxMTAwMCkK KyNkZWZpbmUgSVhQNFhYX1NTUF9CQVNFICAgICAgSVhQNFhYX0JBU0UoSVhQNFhYX1BFUklQSEVS QUxfQkFTRSArIDB4MTIwMDApCisKKy8qCisgIENvbnN0YW50cyB0byBtYWtlIGl0IGVhc3kgdG8g YWNjZXNzIEludGVycnVwdCBDb250cm9sbGVyIHJlZ2lzdGVycworICovCisjZGVmaW5lIElYUDRY WF9JQ1BSX09GRlNFVCAgIDB4MDAgLyogSW50ZXJydXB0IFN0YXR1cyAqLworI2RlZmluZSBJWFA0 WFhfSUNNUl9PRkZTRVQgICAweDA0IC8qIEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgSVhQ NFhYX0lDTFJfT0ZGU0VUICAgMHgwOCAvKiBJbnRlcnJ1cHQgSVJRL0ZJUSBTZWxlY3QgKi8KKyNk ZWZpbmUgSVhQNFhYX0lDSVBfT0ZGU0VUICAgMHgwQyAvKiBJUlEgU3RhdHVzICovCisjZGVmaW5l IElYUDRYWF9JQ0ZQX09GRlNFVCAgIDB4MTAgLyogRklRIFN0YXR1cyAqLworI2RlZmluZSBJWFA0 WFhfSUNIUl9PRkZTRVQgICAweDE0IC8qIEludGVycnVwdCBQcmlvcml0eSAqLworI2RlZmluZSBJ WFA0WFhfSUNJSF9PRkZTRVQgICAweDE4IC8qIElSUSBIaWdoZXN0IFByaSBJbnQgKi8KKyNkZWZp bmUgSVhQNFhYX0lDRkhfT0ZGU0VUICAgMHgxQyAvKiBGSVEgSGlnaGVzdCBQcmkgSW50ICovCisK Ky8qIElYUDQ2NS1vbmx5ICovCisjZGVmaW5lIElYUDRYWF9JQ1BSMl9PRkZTRVQgIDB4MjAgLyog SW50ZXJydXB0IFN0YXR1cyAyICovCisjZGVmaW5lIElYUDRYWF9JQ01SMl9PRkZTRVQgIDB4MjQg LyogSW50ZXJydXB0IEVuYWJsZSAyICovCisjZGVmaW5lIElYUDRYWF9JQ0xSMl9PRkZTRVQgIDB4 MjggLyogSW50ZXJydXB0IElSUS9GSVEgU2VsZWN0IDIgKi8KKyNkZWZpbmUgSVhQNFhYX0lDSVAy X09GRlNFVCAgMHgyQyAvKiBJUlEgU3RhdHVzICovCisjZGVmaW5lIElYUDRYWF9JQ0ZQMl9PRkZT RVQgIDB4MzAgLyogRklRIFN0YXR1cyAqLworI2RlZmluZSBJWFA0WFhfSUNFRU5fT0ZGU0VUICAw eDM0IC8qIEVycm9yIEhpZ2ggUHJpIEVuYWJsZSAqLworCisKKy8qIEludGVycnVwdCBDb250cm9s bGVyIFJlZ2lzdGVyIERlZmluaXRpb25zLiAqLworI2RlZmluZSBJWFA0WFhfSU5UQ19SRUcoeCkg ICAoKHZvbGF0aWxlIHUzMiAqKShJWFA0WFhfSU5UQ19CQVNFICsgKHgpKSkKKworI2RlZmluZSBJ WFA0WFhfSUNQUiAgICAgICAgICBJWFA0WFhfSU5UQ19SRUcoSVhQNFhYX0lDUFJfT0ZGU0VUKQor I2RlZmluZSBJWFA0WFhfSUNNUiAgICAgICAgICBJWFA0WFhfSU5UQ19SRUcoSVhQNFhYX0lDTVJf T0ZGU0VUKQorI2RlZmluZSBJWFA0WFhfSUNMUiAgICAgICAgICBJWFA0WFhfSU5UQ19SRUcoSVhQ NFhYX0lDTFJfT0ZGU0VUKQorI2RlZmluZSBJWFA0WFhfSUNJUCAgICAgICAgICBJWFA0WFhfSU5U Q19SRUcoSVhQNFhYX0lDSVBfT0ZGU0VUKQorI2RlZmluZSBJWFA0WFhfSUNGUCAgICAgICAgICBJ WFA0WFhfSU5UQ19SRUcoSVhQNFhYX0lDRlBfT0ZGU0VUKQorI2RlZmluZSBJWFA0WFhfSUNIUiAg ICAgICAgICBJWFA0WFhfSU5UQ19SRUcoSVhQNFhYX0lDSFJfT0ZGU0VUKQorI2RlZmluZSBJWFA0 WFhfSUNJSCAgICAgICAgICBJWFA0WFhfSU5UQ19SRUcoSVhQNFhYX0lDSUhfT0ZGU0VUKQorI2Rl ZmluZSBJWFA0WFhfSUNGSCAgICAgICAgICBJWFA0WFhfSU5UQ19SRUcoSVhQNFhYX0lDRkhfT0ZG U0VUKQorI2RlZmluZSBJWFA0WFhfSUNQUjIgICAgICAgICBJWFA0WFhfSU5UQ19SRUcoSVhQNFhY X0lDUFIyX09GRlNFVCkKKyNkZWZpbmUgSVhQNFhYX0lDTVIyICAgICAgICAgSVhQNFhYX0lOVENf UkVHKElYUDRYWF9JQ01SMl9PRkZTRVQpCisjZGVmaW5lIElYUDRYWF9JQ0xSMiAgICAgICAgIElY UDRYWF9JTlRDX1JFRyhJWFA0WFhfSUNMUjJfT0ZGU0VUKQorI2RlZmluZSBJWFA0WFhfSUNJUDIg ICAgICAgICBJWFA0WFhfSU5UQ19SRUcoSVhQNFhYX0lDSVAyX09GRlNFVCkKKyNkZWZpbmUgSVhQ NFhYX0lDRlAyICAgICAgICAgSVhQNFhYX0lOVENfUkVHKElYUDRYWF9JQ0ZQMl9PRkZTRVQpCisj ZGVmaW5lIElYUDRYWF9JQ0VFTiAgICAgICAgIElYUDRYWF9JTlRDX1JFRyhJWFA0WFhfSUNFRU5f T0ZGU0VUKQorCisvKiBDb25zdGFudHMgdG8gbWFrZSBpdCBlYXN5IHRvIGFjY2VzcyBHUElPIHJl Z2lzdGVycyAqLworI2RlZmluZSBJWFA0WFhfR1BJT19HUE9VVFJfT0ZGU0VUICAgMHgwMAorI2Rl ZmluZSBJWFA0WFhfR1BJT19HUE9FUl9PRkZTRVQgICAgMHgwNAorI2RlZmluZSBJWFA0WFhfR1BJ T19HUElOUl9PRkZTRVQgICAgMHgwOAorI2RlZmluZSBJWFA0WFhfR1BJT19HUElTUl9PRkZTRVQg ICAgMHgwQworI2RlZmluZSBJWFA0WFhfR1BJT19HUElUMVJfT0ZGU0VUICAgMHgxMAorI2RlZmlu ZSBJWFA0WFhfR1BJT19HUElUMlJfT0ZGU0VUICAgMHgxNAorI2RlZmluZSBJWFA0WFhfR1BJT19H UENMS1JfT0ZGU0VUICAgMHgxOAorI2RlZmluZSBJWFA0WFhfR1BJT19HUERCU0VMUl9PRkZTRVQg MHgxQworCisvKiBHUElPIFJlZ2lzdGVyIERlZmluaXRpb25zIC0gcGVyZm9ybSBvbmx5IDMyLWJp dCByZWFkcy93cml0ZXMgKi8KKyNkZWZpbmUgSVhQNFhYX0dQSU9fUkVHKHgpICAgKCh2b2xhdGls ZSB1MzIgKikoSVhQNFhYX0dQSU9fQkFTRSArICh4KSkpCisKKyNkZWZpbmUgSVhQNFhYX0dQSU9f R1BPVVRSICAgSVhQNFhYX0dQSU9fUkVHKElYUDRYWF9HUElPX0dQT1VUUl9PRkZTRVQpCisjZGVm aW5lIElYUDRYWF9HUElPX0dQT0VSICAgIElYUDRYWF9HUElPX1JFRyhJWFA0WFhfR1BJT19HUE9F Ul9PRkZTRVQpCisjZGVmaW5lIElYUDRYWF9HUElPX0dQSU5SICAgIElYUDRYWF9HUElPX1JFRyhJ WFA0WFhfR1BJT19HUElOUl9PRkZTRVQpCisjZGVmaW5lIElYUDRYWF9HUElPX0dQSVNSICAgIElY UDRYWF9HUElPX1JFRyhJWFA0WFhfR1BJT19HUElTUl9PRkZTRVQpCisjZGVmaW5lIElYUDRYWF9H UElPX0dQSVQxUiAgIElYUDRYWF9HUElPX1JFRyhJWFA0WFhfR1BJT19HUElUMVJfT0ZGU0VUKQor I2RlZmluZSBJWFA0WFhfR1BJT19HUElUMlIgICBJWFA0WFhfR1BJT19SRUcoSVhQNFhYX0dQSU9f R1BJVDJSX09GRlNFVCkKKyNkZWZpbmUgSVhQNFhYX0dQSU9fR1BDTEtSICAgSVhQNFhYX0dQSU9f UkVHKElYUDRYWF9HUElPX0dQQ0xLUl9PRkZTRVQpCisjZGVmaW5lIElYUDRYWF9HUElPX0dQREJT RUxSIElYUDRYWF9HUElPX1JFRyhJWFA0WFhfR1BJT19HUERCU0VMUl9PRkZTRVQpCisKKy8qIEdQ SU8gcmVnaXN0ZXIgYml0IGRlZmluaXRpb25zICovCisKKy8qIEludGVycnVwdCBzdHlsZXMgKi8K KyNkZWZpbmUgSVhQNFhYX0dQSU9fU1RZTEVfQUNUSVZFX0hJR0ggIDB4MAorI2RlZmluZSBJWFA0 WFhfR1BJT19TVFlMRV9BQ1RJVkVfTE9XICAgMHgxCisjZGVmaW5lIElYUDRYWF9HUElPX1NUWUxF X1JJU0lOR19FREdFICAweDIKKyNkZWZpbmUgSVhQNFhYX0dQSU9fU1RZTEVfRkFMTElOR19FREdF IDB4MworI2RlZmluZSBJWFA0WFhfR1BJT19TVFlMRV9UUkFOU0lUSU9OQUwgMHg0CisKKy8qIE1h c2sgdXNlZCB0byBjbGVhciBpbnRlcnJ1cHQgc3R5bGVzICovCisjZGVmaW5lIElYUDRYWF9HUElP X1NUWUxFX0NMRUFSICAgICAgICAweDcKKyNkZWZpbmUgSVhQNFhYX0dQSU9fU1RZTEVfU0laRSAg ICAgICAgIDMKKworLyogT3BlcmF0aW5nIFN5c3RlbSBUaW1lciBSZWdpc3RlciBEZWZpbml0aW9u cy4gKi8KKyNkZWZpbmUgSVhQNFhYX09TVFMgICAgICAgICAgSVhQNFhYX1JFRygweEM4MDA1MDAw KSAvKiBDb250aW5pb3VzIFRpbWVTdGFtcCAqLworI2RlZmluZSBJWFA0WFhfT1NUMSAgICAgICAg ICBJWFA0WFhfUkVHKDB4QzgwMDUwMDQpIC8qIFRpbWVyIDEgVGltZXN0YW1wICovCisjZGVmaW5l IElYUDRYWF9PU1JUMSAgICAgICAgIElYUDRYWF9SRUcoMHhDODAwNTAwOCkgLyogVGltZXIgMSBS ZWxvYWQgKi8KKyNkZWZpbmUgSVhQNFhYX09TVDIgICAgICAgICAgSVhQNFhYX1JFRygweEM4MDA1 MDBDKSAvKiBUaW1lciAyIFRpbWVzdGFtcCAqLworI2RlZmluZSBJWFA0WFhfT1NSVDIgICAgICAg ICBJWFA0WFhfUkVHKDB4QzgwMDUwMTApIC8qIFRpbWVyIDIgUmVsb2FkICovCisjZGVmaW5lIElY UDRYWF9PU1dUICAgICAgICAgIElYUDRYWF9SRUcoMHhDODAwNTAxNCkgLyogV2F0Y2hkb2cgVGlt ZXIgKi8KKyNkZWZpbmUgSVhQNFhYX09TV0UgICAgICAgICAgSVhQNFhYX1JFRygweEM4MDA1MDE4 KSAvKiBXYXRjaGRvZyBFbmFibGUgKi8KKyNkZWZpbmUgSVhQNFhYX09TV0sgICAgICAgICAgSVhQ NFhYX1JFRygweEM4MDA1MDFDKSAvKiBXYXRjaGRvZyBLZXkgKi8KKyNkZWZpbmUgSVhQNFhYX09T U1QgICAgICAgICAgSVhQNFhYX1JFRygweEM4MDA1MDIwKSAvKiBUaW1lciBTdGF0dXMgKi8KKwor LyogVGltZXIgcmVnaXN0ZXIgdmFsdWVzIGFuZCBiaXQgZGVmaW5pdGlvbnMgKi8KKyNkZWZpbmUg SVhQNFhYX09TVF9FTkFCTEUgICAgICAgICAgICAweDAwMDAwMDAxCisjZGVmaW5lIElYUDRYWF9P U1RfT05FX1NIT1QgICAgICAgICAgMHgwMDAwMDAwMgorLyogTG93IG9yZGVyIGJpdHMgb2YgcmVs b2FkIHZhbHVlIGlnbm9yZWQgKi8KKyNkZWZpbmUgSVhQNFhYX09TVF9SRUxPQURfTUFTSyAgICAg ICAweDAwMDAwMDAzCisjZGVmaW5lIElYUDRYWF9PU1RfRElTQUJMRUQgICAgICAgICAgMHgwMDAw MDAwMAorI2RlZmluZSBJWFA0WFhfT1NTVF9USU1FUl8xX1BFTkQgICAgIDB4MDAwMDAwMDEKKyNk ZWZpbmUgSVhQNFhYX09TU1RfVElNRVJfMl9QRU5EICAgICAweDAwMDAwMDAyCisjZGVmaW5lIElY UDRYWF9PU1NUX1RJTUVSX1RTX1BFTkQgICAgMHgwMDAwMDAwNAorI2RlZmluZSBJWFA0WFhfT1NT VF9USU1FUl9XRE9HX1BFTkQgIDB4MDAwMDAwMDgKKyNkZWZpbmUgSVhQNFhYX09TU1RfVElNRVJf V0FSTV9SRVNFVCAweDAwMDAwMDEwCisKKyNkZWZpbmUgSVhQNFhYX1dEVF9LRVkgICAgICAgICAg ICAgICAweDAwMDA0ODJFCisKKyNkZWZpbmUgSVhQNFhYX1dEVF9SRVNFVF9FTkFCTEUgICAgICAw eDAwMDAwMDAxCisjZGVmaW5lIElYUDRYWF9XRFRfSVJRX0VOQUJMRSAgICAgICAgMHgwMDAwMDAw MgorI2RlZmluZSBJWFA0WFhfV0RUX0NPVU5UX0VOQUJMRSAgICAgIDB4MDAwMDAwMDQKKworCisv KiBDb25zdGFudHMgdG8gbWFrZSBpdCBlYXN5IHRvIGFjY2VzcyBQQ0kgQ29udHJvbC9TdGF0dXMg cmVnaXN0ZXJzICovCisjZGVmaW5lIFBDSV9OUF9BRF9PRkZTRVQgICAgICAgICAgIDB4MDAKKyNk ZWZpbmUgUENJX05QX0NCRV9PRkZTRVQgICAgICAgICAgMHgwNAorI2RlZmluZSBQQ0lfTlBfV0RB VEFfT0ZGU0VUICAgICAgICAweDA4CisjZGVmaW5lIFBDSV9OUF9SREFUQV9PRkZTRVQgICAgICAg IDB4MGMKKyNkZWZpbmUgUENJX0NSUF9BRF9DQkVfT0ZGU0VUICAgICAgMHgxMAorI2RlZmluZSBQ Q0lfQ1JQX1dEQVRBX09GRlNFVCAgICAgICAweDE0CisjZGVmaW5lIFBDSV9DUlBfUkRBVEFfT0ZG U0VUICAgICAgIDB4MTgKKyNkZWZpbmUgUENJX0NTUl9PRkZTRVQgICAgICAgICAgICAgMHgxYwor I2RlZmluZSBQQ0lfSVNSX09GRlNFVCAgICAgICAgICAgICAweDIwCisjZGVmaW5lIFBDSV9JTlRF Tl9PRkZTRVQgICAgICAgICAgIDB4MjQKKyNkZWZpbmUgUENJX0RNQUNUUkxfT0ZGU0VUICAgICAg ICAgMHgyOAorI2RlZmluZSBQQ0lfQUhCTUVNQkFTRV9PRkZTRVQgICAgICAweDJjCisjZGVmaW5l IFBDSV9BSEJJT0JBU0VfT0ZGU0VUICAgICAgIDB4MzAKKyNkZWZpbmUgUENJX1BDSU1FTUJBU0Vf T0ZGU0VUICAgICAgMHgzNAorI2RlZmluZSBQQ0lfQUhCRE9PUkJFTExfT0ZGU0VUICAgICAweDM4 CisjZGVmaW5lIFBDSV9QQ0lET09SQkVMTF9PRkZTRVQgICAgIDB4M0MKKyNkZWZpbmUgUENJX0FU UERNQTBfQUhCQUREUl9PRkZTRVQgMHg0MAorI2RlZmluZSBQQ0lfQVRQRE1BMF9QQ0lBRERSX09G RlNFVCAweDQ0CisjZGVmaW5lIFBDSV9BVFBETUEwX0xFTkFERFJfT0ZGU0VUIDB4NDgKKyNkZWZp bmUgUENJX0FUUERNQTFfQUhCQUREUl9PRkZTRVQgMHg0QworI2RlZmluZSBQQ0lfQVRQRE1BMV9Q Q0lBRERSX09GRlNFVCAweDUwCisjZGVmaW5lIFBDSV9BVFBETUExX0xFTkFERFJfT0ZGU0VUIDB4 NTQKKworLyogUENJIENvbnRyb2wvU3RhdHVzIFJlZ2lzdGVycyAqLworI2RlZmluZSBJWFA0WFhf UENJX0NTUih4KSAoKHZvbGF0aWxlIHUzMiAqKShJWFA0WFhfUENJX0NGR19CQVNFICsgKHgpKSkK KworI2RlZmluZSBQQ0lfTlBfQUQgICAgICAgICAgICBJWFA0WFhfUENJX0NTUihQQ0lfTlBfQURf T0ZGU0VUKQorI2RlZmluZSBQQ0lfTlBfQ0JFICAgICAgICAgICBJWFA0WFhfUENJX0NTUihQQ0lf TlBfQ0JFX09GRlNFVCkKKyNkZWZpbmUgUENJX05QX1dEQVRBICAgICAgICAgSVhQNFhYX1BDSV9D U1IoUENJX05QX1dEQVRBX09GRlNFVCkKKyNkZWZpbmUgUENJX05QX1JEQVRBICAgICAgICAgSVhQ NFhYX1BDSV9DU1IoUENJX05QX1JEQVRBX09GRlNFVCkKKyNkZWZpbmUgUENJX0NSUF9BRF9DQkUg ICAgICAgSVhQNFhYX1BDSV9DU1IoUENJX0NSUF9BRF9DQkVfT0ZGU0VUKQorI2RlZmluZSBQQ0lf Q1JQX1dEQVRBICAgICAgICBJWFA0WFhfUENJX0NTUihQQ0lfQ1JQX1dEQVRBX09GRlNFVCkKKyNk ZWZpbmUgUENJX0NSUF9SREFUQSAgICAgICAgSVhQNFhYX1BDSV9DU1IoUENJX0NSUF9SREFUQV9P RkZTRVQpCisjZGVmaW5lIFBDSV9DU1IgICAgICAgICAgICAgIElYUDRYWF9QQ0lfQ1NSKFBDSV9D U1JfT0ZGU0VUKQorI2RlZmluZSBQQ0lfSVNSICAgICAgICAgICAgICBJWFA0WFhfUENJX0NTUihQ Q0lfSVNSX09GRlNFVCkKKyNkZWZpbmUgUENJX0lOVEVOICAgICAgICAgICAgSVhQNFhYX1BDSV9D U1IoUENJX0lOVEVOX09GRlNFVCkKKyNkZWZpbmUgUENJX0RNQUNUUkwgICAgICAgICAgSVhQNFhY X1BDSV9DU1IoUENJX0RNQUNUUkxfT0ZGU0VUKQorI2RlZmluZSBQQ0lfQUhCTUVNQkFTRSAgICAg ICBJWFA0WFhfUENJX0NTUihQQ0lfQUhCTUVNQkFTRV9PRkZTRVQpCisjZGVmaW5lIFBDSV9BSEJJ T0JBU0UgICAgICAgIElYUDRYWF9QQ0lfQ1NSKFBDSV9BSEJJT0JBU0VfT0ZGU0VUKQorI2RlZmlu ZSBQQ0lfUENJTUVNQkFTRSAgICAgICBJWFA0WFhfUENJX0NTUihQQ0lfUENJTUVNQkFTRV9PRkZT RVQpCisjZGVmaW5lIFBDSV9BSEJET09SQkVMTCAgICAgIElYUDRYWF9QQ0lfQ1NSKFBDSV9BSEJE T09SQkVMTF9PRkZTRVQpCisjZGVmaW5lIFBDSV9QQ0lET09SQkVMTCAgICAgIElYUDRYWF9QQ0lf Q1NSKFBDSV9QQ0lET09SQkVMTF9PRkZTRVQpCisjZGVmaW5lIFBDSV9BVFBETUEwX0FIQkFERFIg IElYUDRYWF9QQ0lfQ1NSKFBDSV9BVFBETUEwX0FIQkFERFJfT0ZGU0VUKQorI2RlZmluZSBQQ0lf QVRQRE1BMF9QQ0lBRERSICBJWFA0WFhfUENJX0NTUihQQ0lfQVRQRE1BMF9QQ0lBRERSX09GRlNF VCkKKyNkZWZpbmUgUENJX0FUUERNQTBfTEVOQUREUiAgSVhQNFhYX1BDSV9DU1IoUENJX0FUUERN QTBfTEVOQUREUl9PRkZTRVQpCisjZGVmaW5lIFBDSV9BVFBETUExX0FIQkFERFIgIElYUDRYWF9Q Q0lfQ1NSKFBDSV9BVFBETUExX0FIQkFERFJfT0ZGU0VUKQorI2RlZmluZSBQQ0lfQVRQRE1BMV9Q Q0lBRERSICBJWFA0WFhfUENJX0NTUihQQ0lfQVRQRE1BMV9QQ0lBRERSX09GRlNFVCkKKyNkZWZp bmUgUENJX0FUUERNQTFfTEVOQUREUiAgSVhQNFhYX1BDSV9DU1IoUENJX0FUUERNQTFfTEVOQURE Ul9PRkZTRVQpCisKKy8qIFBDSSByZWdpc3RlciB2YWx1ZXMgYW5kIGJpdCBkZWZpbml0aW9ucyAq LworCisvKiBDU1IgYml0IGRlZmluaXRpb25zICovCisjZGVmaW5lIFBDSV9DU1JfSE9TVCAgICAg ICAgIDB4MDAwMDAwMDEKKyNkZWZpbmUgUENJX0NTUl9BUkJFTiAgICAgICAgMHgwMDAwMDAwMgor I2RlZmluZSBQQ0lfQ1NSX0FEUyAgICAgICAgICAweDAwMDAwMDA0CisjZGVmaW5lIFBDSV9DU1Jf UERTICAgICAgICAgIDB4MDAwMDAwMDgKKyNkZWZpbmUgUENJX0NTUl9BQkUgICAgICAgICAgMHgw MDAwMDAxMAorI2RlZmluZSBQQ0lfQ1NSX0RCVCAgICAgICAgICAweDAwMDAwMDIwCisjZGVmaW5l IFBDSV9DU1JfQVNFICAgICAgICAgIDB4MDAwMDAxMDAKKyNkZWZpbmUgUENJX0NTUl9JQyAgICAg ICAgICAgMHgwMDAwODAwMAorCisvKiBJU1IgKEludGVycnVwdCBzdGF0dXMpIFJlZ2lzdGVyIGJp dCBkZWZpbml0aW9ucyAqLworI2RlZmluZSBQQ0lfSVNSX1BTRSAgICAgICAgICAweDAwMDAwMDAx CisjZGVmaW5lIFBDSV9JU1JfUEZFICAgICAgICAgIDB4MDAwMDAwMDIKKyNkZWZpbmUgUENJX0lT Ul9QUEUgICAgICAgICAgMHgwMDAwMDAwNAorI2RlZmluZSBQQ0lfSVNSX0FIQkUgICAgICAgICAw eDAwMDAwMDA4CisjZGVmaW5lIFBDSV9JU1JfQVBEQyAgICAgICAgIDB4MDAwMDAwMTAKKyNkZWZp bmUgUENJX0lTUl9QQURDICAgICAgICAgMHgwMDAwMDAyMAorI2RlZmluZSBQQ0lfSVNSX0FEQiAg ICAgICAgICAweDAwMDAwMDQwCisjZGVmaW5lIFBDSV9JU1JfUERCICAgICAgICAgIDB4MDAwMDAw ODAKKworLyogSU5URU4gKEludGVycnVwdCBFbmFibGUpIFJlZ2lzdGVyIGJpdCBkZWZpbml0aW9u cyAqLworI2RlZmluZSBQQ0lfSU5URU5fUFNFICAgICAgICAweDAwMDAwMDAxCisjZGVmaW5lIFBD SV9JTlRFTl9QRkUgICAgICAgIDB4MDAwMDAwMDIKKyNkZWZpbmUgUENJX0lOVEVOX1BQRSAgICAg ICAgMHgwMDAwMDAwNAorI2RlZmluZSBQQ0lfSU5URU5fQUhCRSAgICAgICAweDAwMDAwMDA4Cisj ZGVmaW5lIFBDSV9JTlRFTl9BUERDICAgICAgIDB4MDAwMDAwMTAKKyNkZWZpbmUgUENJX0lOVEVO X1BBREMgICAgICAgMHgwMDAwMDAyMAorI2RlZmluZSBQQ0lfSU5URU5fQURCICAgICAgICAweDAw MDAwMDQwCisjZGVmaW5lIFBDSV9JTlRFTl9QREIgICAgICAgIDB4MDAwMDAwODAKKworLyogU2hp ZnQgdmFsdWUgZm9yIGJ5dGUgZW5hYmxlIG9uIE5QIGNtZC9ieXRlIGVuYWJsZSByZWdpc3RlciAq LworI2RlZmluZSBJWFA0WFhfUENJX05QX0NCRV9CRVNMIDQKKworLyogUENJIGNvbW1hbmRzIHN1 cHBvcnRlZCBieSBOUCBhY2Nlc3MgdW5pdCAqLworI2RlZmluZSBOUF9DTURfSU9SRUFEICAgICAg ICAweDIKKyNkZWZpbmUgTlBfQ01EX0lPV1JJVEUgICAgICAgMHgzCisjZGVmaW5lIE5QX0NNRF9D T05GSUdSRUFEICAgIDB4QQorI2RlZmluZSBOUF9DTURfQ09ORklHV1JJVEUgICAweEIKKyNkZWZp bmUgTlBfQ01EX01FTVJFQUQgICAgICAgMHg2CisjZGVmaW5lIE5QX0NNRF9NRU1XUklURSAgICAg IDB4NworCisvKiBDb25zdGFudHMgZm9yIENSUCBhY2Nlc3MgaW50byBsb2NhbCBjb25maWcgc3Bh Y2UgKi8KKyNkZWZpbmUgQ1JQX0FEX0NCRV9CRVNMICAgICAgMjAKKyNkZWZpbmUgQ1JQX0FEX0NC RV9XUklURSAgICAgMHgwMDAxMDAwMAorCisvKiBVU0IgRGV2aWNlIENvbnRyb2xsZXIgKi8KKyMg ZGVmaW5lIElYUDRYWF9VU0JfUkVHKHgpICAgKCooKHZvbGF0aWxlIHUzMiAqKSh4KSkpCisKKy8q IFNEUkFNIENvbnRyb2xsZXIgcmVnaXN0ZXJzLiAqLworI2RlZmluZSBJWFA0WFhfU0RSQU1fQ09O RklHICBJWFA0WFhfUkVHKDB4Q0MwMDAwMDApCisjZGVmaW5lIElYUDRYWF9TRFJBTV9SRUZSRVNI IElYUDRYWF9SRUcoMHhDQzAwMDAwNCkKKyNkZWZpbmUgSVhQNFhYX1NEUkFNX0lSICAgICAgSVhQ NFhYX1JFRygweENDMDAwMDA4KQorCisvKiAiZnVzZSIgYml0cyBvZiBJWFBfRVhQX0NGRzIgKi8K Ky8qIEFsbCBJWFA0eHggQ1BVcyAqLworI2RlZmluZSBJWFA0WFhfRkVBVFVSRV9SQ09NUCAgICAg ICAgICAgICgxIDw8IDApCisjZGVmaW5lIElYUDRYWF9GRUFUVVJFX1VTQl9ERVZJQ0UgICAgICAg KDEgPDwgMSkKKyNkZWZpbmUgSVhQNFhYX0ZFQVRVUkVfSEFTSCAgICAgICAgICAgICAoMSA8PCAy KQorI2RlZmluZSBJWFA0WFhfRkVBVFVSRV9BRVMgICAgICAgICAgICAgICgxIDw8IDMpCisjZGVm aW5lIElYUDRYWF9GRUFUVVJFX0RFUyAgICAgICAgICAgICAgKDEgPDwgNCkKKyNkZWZpbmUgSVhQ NFhYX0ZFQVRVUkVfSERMQyAgICAgICAgICAgICAoMSA8PCA1KQorI2RlZmluZSBJWFA0WFhfRkVB VFVSRV9BQUwgICAgICAgICAgICAgICgxIDw8IDYpCisjZGVmaW5lIElYUDRYWF9GRUFUVVJFX0hT UyAgICAgICAgICAgICAgKDEgPDwgNykKKyNkZWZpbmUgSVhQNFhYX0ZFQVRVUkVfVVRPUElBICAg ICAgICAgICAoMSA8PCA4KQorI2RlZmluZSBJWFA0WFhfRkVBVFVSRV9OUEVCX0VUSDAgICAgICAg ICgxIDw8IDkpCisjZGVmaW5lIElYUDRYWF9GRUFUVVJFX05QRUNfRVRIICAgICAgICAgKDEgPDwg MTApCisjZGVmaW5lIElYUDRYWF9GRUFUVVJFX1JFU0VUX05QRUEgICAgICAgKDEgPDwgMTEpCisj ZGVmaW5lIElYUDRYWF9GRUFUVVJFX1JFU0VUX05QRUIgICAgICAgKDEgPDwgMTIpCisjZGVmaW5l IElYUDRYWF9GRUFUVVJFX1JFU0VUX05QRUMgICAgICAgKDEgPDwgMTMpCisjZGVmaW5lIElYUDRY WF9GRUFUVVJFX1BDSSAgICAgICAgICAgICAgKDEgPDwgMTQpCisjZGVmaW5lIElYUDRYWF9GRUFU VVJFX1VUT1BJQV9QSFlfTElNSVQgKDMgPDwgMTYpCisjZGVmaW5lIElYUDRYWF9GRUFUVVJFX1hT Q0FMRV9NQVhfRlJFUSAgKDMgPDwgMjIpCisjZGVmaW5lIElYUDQyWF9GRUFUVVJFX01BU0sgKElY UDRYWF9GRUFUVVJFX1JDT01QICAgICAgICAgICAgfCBcCisJCQkgICAgIElYUDRYWF9GRUFUVVJF X1VTQl9ERVZJQ0UgICAgICAgfCBcCisJCQkgICAgIElYUDRYWF9GRUFUVVJFX0hBU0ggICAgICAg ICAgICAgfCBcCisJCQkgICAgIElYUDRYWF9GRUFUVVJFX0FFUyAgICAgICAgICAgICAgfCBcCisJ CQkgICAgIElYUDRYWF9GRUFUVVJFX0RFUyAgICAgICAgICAgICAgfCBcCisJCQkgICAgIElYUDRY WF9GRUFUVVJFX0hETEMgICAgICAgICAgICAgfCBcCisJCQkgICAgIElYUDRYWF9GRUFUVVJFX0FB TCAgICAgICAgICAgICAgfCBcCisJCQkgICAgIElYUDRYWF9GRUFUVVJFX0hTUyAgICAgICAgICAg ICAgfCBcCisJCQkgICAgIElYUDRYWF9GRUFUVVJFX1VUT1BJQSAgICAgICAgICAgfCBcCisJCQkg ICAgIElYUDRYWF9GRUFUVVJFX05QRUJfRVRIMCAgICAgICAgfCBcCisJCQkgICAgIElYUDRYWF9G RUFUVVJFX05QRUNfRVRIICAgICAgICAgfCBcCisJCQkgICAgIElYUDRYWF9GRUFUVVJFX1JFU0VU X05QRUEgICAgICAgfCBcCisJCQkgICAgIElYUDRYWF9GRUFUVVJFX1JFU0VUX05QRUIgICAgICAg fCBcCisJCQkgICAgIElYUDRYWF9GRUFUVVJFX1JFU0VUX05QRUMgICAgICAgfCBcCisJCQkgICAg IElYUDRYWF9GRUFUVVJFX1BDSSAgICAgICAgICAgICAgfCBcCisJCQkgICAgIElYUDRYWF9GRUFU VVJFX1VUT1BJQV9QSFlfTElNSVQgfCBcCisJCQkgICAgIElYUDRYWF9GRUFUVVJFX1hTQ0FMRV9N QVhfRlJFUSkKKworLyogSVhQNDN4LzQ2eCBDUFVzICovCisjZGVmaW5lIElYUDRYWF9GRUFUVVJF X0VDQ19USU1FU1lOQyAgICAgKDEgPDwgMTUpCisjZGVmaW5lIElYUDRYWF9GRUFUVVJFX1VTQl9I T1NUICAgICAgICAgKDEgPDwgMTgpCisjZGVmaW5lIElYUDRYWF9GRUFUVVJFX05QRUFfRVRIICAg ICAgICAgKDEgPDwgMTkpCisjZGVmaW5lIElYUDQzWF9GRUFUVVJFX01BU0sgKElYUDQyWF9GRUFU VVJFX01BU0sgICAgICAgICAgICAgfCBcCisJCQkgICAgIElYUDRYWF9GRUFUVVJFX0VDQ19USU1F U1lOQyAgICAgfCBcCisJCQkgICAgIElYUDRYWF9GRUFUVVJFX1VTQl9IT1NUICAgICAgICAgfCBc CisJCQkgICAgIElYUDRYWF9GRUFUVVJFX05QRUFfRVRIKQorCisvKiBJWFA0NnggQ1BVIChpbmNs dWRpbmcgSVhQNDU1KSBvbmx5ICovCisjZGVmaW5lIElYUDRYWF9GRUFUVVJFX05QRUJfRVRIXzFf VE9fMyAgKDEgPDwgMjApCisjZGVmaW5lIElYUDRYWF9GRUFUVVJFX1JTQSAgICAgICAgICAgICAg KDEgPDwgMjEpCisjZGVmaW5lIElYUDQ2WF9GRUFUVVJFX01BU0sgKElYUDQzWF9GRUFUVVJFX01B U0sgICAgICAgICAgICAgfCBcCisJCQkgICAgIElYUDRYWF9GRUFUVVJFX05QRUJfRVRIXzFfVE9f MyAgfCBcCisJCQkgICAgIElYUDRYWF9GRUFUVVJFX1JTQSkKKworI2VuZGlmCmRpZmYgLS1naXQg YS9hcmNoL2FybS9tYWNoLWl4cDR4eC9pbmNsdWRlL21hY2gvbnBlLmggYi9hcmNoL2FybS9tYWNo LWl4cDR4eC9pbmNsdWRlL21hY2gvbnBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uMThiZDAxYgotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL21hY2gtaXhwNHh4L2lu Y2x1ZGUvbWFjaC9ucGUuaApAQCAtMCwwICsxLDMwIEBACisjaWZuZGVmIF9fSVhQNFhYX05QRV9I CisjZGVmaW5lIF9fSVhQNFhYX05QRV9ICisKKyNpbmNsdWRlIDxjb21tb24uaD4KKworI2RlZmlu ZSBOUEVfTkFNRV9MRU5HVEggNQorCitzdHJ1Y3QgbnBlX3JlZ3MgeworCXUzMiBleGVjX2FkZHIs IGV4ZWNfZGF0YSwgZXhlY19zdGF0dXNfY21kLCBleGVjX2NvdW50OworCXUzMiBhY3Rpb25fcG9p bnRzWzRdOworCXUzMiB3YXRjaHBvaW50X2ZpZm8sIHdhdGNoX2NvdW50OworCXUzMiBwcm9maWxl X2NvdW50OworCXUzMiBtZXNzYWdpbmdfc3RhdHVzLCBtZXNzYWdpbmdfY29udHJvbDsKKwl1MzIg bWFpbGJveF9zdGF0dXMsIC8qbWVzc2FnaW5nXyovIGluX291dF9maWZvOworfTsKKworc3RydWN0 IG5wZSB7CisJc3RydWN0IG5wZV9yZWdzICpyZWdzOworCWludCBpZCwgdmFsaWQ7CisJY29uc3Qg Y2hhciBuYW1lW05QRV9OQU1FX0xFTkdUSCArIDFdOworfTsKKworaW50IG5wZV9ydW5uaW5nKHN0 cnVjdCBucGUgKm5wZSk7CitpbnQgbnBlX3NlbmRfbWVzc2FnZShzdHJ1Y3QgbnBlICpucGUsIGNv bnN0IHZvaWQgKm1zZywgY29uc3QgY2hhciAqd2hhdCk7CitpbnQgbnBlX3JlY3ZfbWVzc2FnZShz dHJ1Y3QgbnBlICpucGUsIHZvaWQgKm1zZywgY29uc3QgY2hhciAqd2hhdCk7CitpbnQgbnBlX3Nl bmRfcmVjdl9tZXNzYWdlKHN0cnVjdCBucGUgKm5wZSwgdm9pZCAqbXNnLCBjb25zdCBjaGFyICp3 aGF0KTsKK2ludCBucGVfbG9hZF9maXJtd2FyZShzdHJ1Y3QgbnBlICpucGUpOworc3RydWN0IG5w ZSAqbnBlX3JlcXVlc3QoaW50IGlkKTsKKworI2VuZGlmIC8qIF9fSVhQNFhYX05QRV9IICovCmRp ZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWl4cDR4eC9pbmNsdWRlL21hY2gvcGxhdGZvcm0uaCBi L2FyY2gvYXJtL21hY2gtaXhwNHh4L2luY2x1ZGUvbWFjaC9wbGF0Zm9ybS5oCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkZjRhYTQKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNo L2FybS9tYWNoLWl4cDR4eC9pbmNsdWRlL21hY2gvcGxhdGZvcm0uaApAQCAtMCwwICsxLDE1IEBA CisjaW5jbHVkZSA8YXNtL3R5cGVzLmg+CisKKyNkZWZpbmUgSVhQNFhYX0VUSF9OUEVBIDB4MDAK KyNkZWZpbmUgSVhQNFhYX0VUSF9OUEVCIDB4MTAKKyNkZWZpbmUgSVhQNFhYX0VUSF9OUEVDIDB4 MjAKKworLyogSW5mb3JtYXRpb24gYWJvdXQgYnVpbHQtaW4gRXRoZXJuZXQgTUFDIGludGVyZmFj ZXMgKi8KK3N0cnVjdCBldGhfcGxhdF9pbmZvIHsKKwl2b2lkICpyZWdzOworCXU4IG5wZTsKKwl1 OCBwaHk7IC8qIE1JSSBQSFkgSUQsIDAgLSAzMSAqLworCXU4IHJ4cTsgLyogY29uZmlndXJhYmxl LCBjdXJyZW50bHkgMCAtIDMxIG9ubHkgKi8KKwl1OCB0eHJlYWR5cTsKKwl1OCBod2FkZHJbNl07 Cit9OwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1peHA0eHgvaW5jbHVkZS9tYWNoL3FtZ3Iu aCBiL2FyY2gvYXJtL21hY2gtaXhwNHh4L2luY2x1ZGUvbWFjaC9xbWdyLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU5YjhkNAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gv YXJtL21hY2gtaXhwNHh4L2luY2x1ZGUvbWFjaC9xbWdyLmgKQEAgLTAsMCArMSwxNjQgQEAKKy8q CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgS3J6eXN6dG9mIEhhbGFzYSA8a2hjQHBtLndhdy5wbD4K KyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHZlcnNpb24gMiBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisKKyNpZm5kZWYgSVhQNFhYX1FNR1JfSAor I2RlZmluZSBJWFA0WFhfUU1HUl9ICisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxt YWNoL2l4cDR4eC1yZWdzLmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisKKyNkZWZpbmUgREVCVUdf UU1HUiAgICAgICAwCisKKyNkZWZpbmUgSEFMRl9RVUVVRVMgICAgIDMyCisjZGVmaW5lIFFVRVVF UyAgICAgICAgICA2NAorI2RlZmluZSBNQVhfUVVFVUVfTEVOR1RIIDQgLyogaW4gZHdvcmRzICov CisKKyNkZWZpbmUgUVVFVUVfU1RBVDFfRU1QVFkgICAgICAgICAgICAgICAxIC8qIHF1ZXVlIHN0 YXR1cyBiaXRzICovCisjZGVmaW5lIFFVRVVFX1NUQVQxX05FQVJMWV9FTVBUWSAgICAgICAgMgor I2RlZmluZSBRVUVVRV9TVEFUMV9ORUFSTFlfRlVMTCAgICAgICAgIDQKKyNkZWZpbmUgUVVFVUVf U1RBVDFfRlVMTCAgICAgICAgICAgICAgICA4CisjZGVmaW5lIFFVRVVFX1NUQVQyX1VOREVSRkxP VyAgICAgICAgICAgMQorI2RlZmluZSBRVUVVRV9TVEFUMl9PVkVSRkxPVyAgICAgICAgICAgIDIK KworI2RlZmluZSBRVUVVRV9XQVRFUk1BUktfMF9FTlRSSUVTICAgICAgIDAKKyNkZWZpbmUgUVVF VUVfV0FURVJNQVJLXzFfRU5UUlkgICAgICAgICAxCisjZGVmaW5lIFFVRVVFX1dBVEVSTUFSS18y X0VOVFJJRVMgICAgICAgMgorI2RlZmluZSBRVUVVRV9XQVRFUk1BUktfNF9FTlRSSUVTICAgICAg IDMKKyNkZWZpbmUgUVVFVUVfV0FURVJNQVJLXzhfRU5UUklFUyAgICAgICA0CisjZGVmaW5lIFFV RVVFX1dBVEVSTUFSS18xNl9FTlRSSUVTICAgICAgNQorI2RlZmluZSBRVUVVRV9XQVRFUk1BUktf MzJfRU5UUklFUyAgICAgIDYKKyNkZWZpbmUgUVVFVUVfV0FURVJNQVJLXzY0X0VOVFJJRVMgICAg ICA3CisKKy8qIHF1ZXVlIGludGVycnVwdCByZXF1ZXN0IGNvbmRpdGlvbnMgKi8KKyNkZWZpbmUg UVVFVUVfSVJRX1NSQ19FTVBUWSAgICAgICAgICAgICAwCisjZGVmaW5lIFFVRVVFX0lSUV9TUkNf TkVBUkxZX0VNUFRZICAgICAgMQorI2RlZmluZSBRVUVVRV9JUlFfU1JDX05FQVJMWV9GVUxMICAg ICAgIDIKKyNkZWZpbmUgUVVFVUVfSVJRX1NSQ19GVUxMICAgICAgICAgICAgICAzCisjZGVmaW5l IFFVRVVFX0lSUV9TUkNfTk9UX0VNUFRZICAgICAgICAgNAorI2RlZmluZSBRVUVVRV9JUlFfU1JD X05PVF9ORUFSTFlfRU1QVFkgIDUKKyNkZWZpbmUgUVVFVUVfSVJRX1NSQ19OT1RfTkVBUkxZX0ZV TEwgICA2CisjZGVmaW5lIFFVRVVFX0lSUV9TUkNfTk9UX0ZVTEwgICAgICAgICAgNworCitzdHJ1 Y3QgcW1ncl9yZWdzIHsKKwl1MzIgYWNjW1FVRVVFU11bTUFYX1FVRVVFX0xFTkdUSF07IC8qIDB4 MDAwIC0gMHgzRkYgKi8KKwl1MzIgc3RhdDFbNF07ICAgICAgICAgLyogMHg0MDAgLSAweDQwRiAq LworCXUzMiBzdGF0MlsyXTsgICAgICAgICAvKiAweDQxMCAtIDB4NDE3ICovCisJdTMyIHN0YXRu ZV9oOyAgICAgICAgIC8qIDB4NDE4IC0gcXVldWUgbmVhcmx5IGVtcHR5ICovCisJdTMyIHN0YXRm X2g7ICAgICAgICAgIC8qIDB4NDFDIC0gcXVldWUgZnVsbCAqLworCXUzMiBpcnFzcmNbNF07ICAg ICAgICAvKiAweDQyMCAtIDB4NDJGIElSQyBzb3VyY2UgKi8KKwl1MzIgaXJxZW5bMl07ICAgICAg ICAgLyogMHg0MzAgLSAweDQzNyBJUlEgZW5hYmxlZCAqLworCXUzMiBpcnFzdGF0WzJdOyAgICAg ICAvKiAweDQzOCAtIDB4NDNGIC0gSVJRIGFjY2VzcyBvbmx5ICovCisJdTMyIHJlc2VydmVkWzE3 NzZdOworCXUzMiBzcmFtWzIwNDhdOyAgICAgICAvKiAweDIwMDAgLSAweDNGRkYgLSBjb25maWcg YW5kIGJ1ZmZlciAqLworfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBxbWdyX3JlZ3MgKnFtZ3Jf cmVncyA9IChzdHJ1Y3QgcW1ncl9yZWdzICopSVhQNFhYX1FNR1JfQkFTRTsKKwordm9pZCBxbWdy X3NldF9pcnEodW5zaWduZWQgaW50IHF1ZXVlLCBpbnQgc3JjLAorCQkgIHZvaWQgKCpoYW5kbGVy KSh2b2lkICpwZGV2KSwgdm9pZCAqcGRldik7Cit2b2lkIHFtZ3JfZW5hYmxlX2lycSh1bnNpZ25l ZCBpbnQgcXVldWUpOwordm9pZCBxbWdyX2Rpc2FibGVfaXJxKHVuc2lnbmVkIGludCBxdWV1ZSk7 CisKKy8qIHJlcXVlc3RfIGFuZCByZWxlYXNlX3F1ZXVlKCkgbXVzdCBiZSBjYWxsZWQgZnJvbSBu b24tSVJRIGNvbnRleHQgKi8KKworI2lmIERFQlVHX1FNR1IKK2V4dGVybiBjaGFyIHFtZ3JfcXVl dWVfZGVzY3NbSEFMRl9RVUVVRVNdWzMyXTsKKwordm9pZCBxbWdyX3JlcXVlc3RfcXVldWUodW5z aWduZWQgaW50IHF1ZXVlLCB1bnNpZ25lZCBpbnQgbGVuIC8qIGR3b3JkcyAqLywKKwkJCXVuc2ln bmVkIGludCBuZWFybHlfZW1wdHlfd2F0ZXJtYXJrLAorCQkJdW5zaWduZWQgaW50IG5lYXJseV9m dWxsX3dhdGVybWFyaywKKwkJCWNvbnN0IGNoYXIgKmRlc2NfZm9ybWF0LCBjb25zdCBjaGFyKiBu YW1lKTsKKyNlbHNlCit2b2lkIF9fcW1ncl9yZXF1ZXN0X3F1ZXVlKHVuc2lnbmVkIGludCBxdWV1 ZSwgdW5zaWduZWQgaW50IGxlbiAvKiBkd29yZHMgKi8sCisJCQkgIHVuc2lnbmVkIGludCBuZWFy bHlfZW1wdHlfd2F0ZXJtYXJrLAorCQkJICB1bnNpZ25lZCBpbnQgbmVhcmx5X2Z1bGxfd2F0ZXJt YXJrKTsKKyNkZWZpbmUgcW1ncl9yZXF1ZXN0X3F1ZXVlKHF1ZXVlLCBsZW4sIG5lYXJseV9lbXB0 eV93YXRlcm1hcmssICAgICAgIFwKKwkJCSAgIG5lYXJseV9mdWxsX3dhdGVybWFyaywgZGVzY19m b3JtYXQsIG5hbWUpIFwKKwlfX3FtZ3JfcmVxdWVzdF9xdWV1ZShxdWV1ZSwgbGVuLCBuZWFybHlf ZW1wdHlfd2F0ZXJtYXJrLCAgICAgXAorCQkJICAgICBuZWFybHlfZnVsbF93YXRlcm1hcmspCisj ZW5kaWYKKwordm9pZCBxbWdyX3JlbGVhc2VfcXVldWUodW5zaWduZWQgaW50IHF1ZXVlKTsKKwor CitzdGF0aWMgaW5saW5lIHZvaWQgcW1ncl9wdXRfZW50cnkodW5zaWduZWQgaW50IHF1ZXVlLCB1 MzIgdmFsKQoreworI2lmIERFQlVHX1FNR1IKKwlCVUdfT04oIXFtZ3JfcXVldWVfZGVzY3NbcXVl dWVdKTsgLyogbm90IHlldCByZXF1ZXN0ZWQgKi8KKworCWZwcmludGYoc3RkZXJyLCAiUXVldWUg JXMoJWkpIHB1dCAlWFxuIiwKKwkJcW1ncl9xdWV1ZV9kZXNjc1txdWV1ZV0sIHF1ZXVlLCB2YWwp OworI2VuZGlmCisJX19yYXdfd3JpdGVsKHZhbCwgJnFtZ3JfcmVncy0+YWNjW3F1ZXVlXVswXSk7 Cit9CisKK3N0YXRpYyBpbmxpbmUgdTMyIHFtZ3JfZ2V0X2VudHJ5KHVuc2lnbmVkIGludCBxdWV1 ZSkKK3sKKwl1MzIgdmFsOworCXZhbCA9IF9fcmF3X3JlYWRsKCZxbWdyX3JlZ3MtPmFjY1txdWV1 ZV1bMF0pOworI2lmIERFQlVHX1FNR1IKKwlCVUdfT04oIXFtZ3JfcXVldWVfZGVzY3NbcXVldWVd KTsgLyogbm90IHlldCByZXF1ZXN0ZWQgKi8KKworCWZwcmludGYoc3RkZXJyLCAiUXVldWUgJXMo JWkpIGdldCAlWFxuIiwKKwkJcW1ncl9xdWV1ZV9kZXNjc1txdWV1ZV0sIHF1ZXVlLCB2YWwpOwor I2VuZGlmCisJcmV0dXJuIHZhbDsKK30KKworc3RhdGljIGlubGluZSBpbnQgX19xbWdyX2dldF9z dGF0MSh1bnNpZ25lZCBpbnQgcXVldWUpCit7CisJcmV0dXJuIChfX3Jhd19yZWFkbCgmcW1ncl9y ZWdzLT5zdGF0MVtxdWV1ZSA+PiAzXSkKKwkJPj4gKChxdWV1ZSAmIDcpIDw8IDIpKSAmIDB4RjsK K30KKworLyoqCisgKiBxbWdyX3N0YXRfZW1wdHkoKSAtIGNoZWNrcyBpZiBhIGhhcmR3YXJlIHF1 ZXVlIGlzIGVtcHR5CisgKiBAcXVldWU6IHF1ZXVlIG51bWJlcgorICoKKyAqIFJldHVybnMgbm9u LXplcm8gdmFsdWUgaWYgdGhlIHF1ZXVlIGlzIGVtcHR5LgorICovCitzdGF0aWMgaW5saW5lIGlu dCBxbWdyX3N0YXRfZW1wdHkodW5zaWduZWQgaW50IHF1ZXVlKQoreworCXJldHVybiBfX3FtZ3Jf Z2V0X3N0YXQxKHF1ZXVlKSAmIFFVRVVFX1NUQVQxX0VNUFRZOworfQorCisvKioKKyAqIHFtZ3Jf c3RhdF9iZWxvd19sb3dfd2F0ZXJtYXJrKCkgLSBjaGVja3MgaWYgYSBxdWV1ZSBpcyBiZWxvdyBs b3cgd2F0ZXJtYXJrCisgKiBAcXVldWU6IHF1ZXVlIG51bWJlcgorICoKKyAqIFJldHVybnMgbm9u LXplcm8gdmFsdWUgaWYgdGhlIHF1ZXVlIGlzIGJlbG93IGxvdyB3YXRlcm1hcmsuCisgKi8KK3N0 YXRpYyBpbmxpbmUgaW50IHFtZ3Jfc3RhdF9iZWxvd19sb3dfd2F0ZXJtYXJrKHVuc2lnbmVkIGlu dCBxdWV1ZSkKK3sKKwlyZXR1cm4gX19xbWdyX2dldF9zdGF0MShxdWV1ZSkgJiBRVUVVRV9TVEFU MV9ORUFSTFlfRU1QVFk7Cit9CisKKy8qKgorICogcW1ncl9zdGF0X2Fib3ZlX2hpZ2hfd2F0ZXJt YXJrKCkgLSBjaGVja3MgaWYgYSBxdWV1ZSBpcyBhYm92ZSBoaWdoIHdhdGVybWFyaworICogQHF1 ZXVlOiBxdWV1ZSBudW1iZXIKKyAqCisgKiBSZXR1cm5zIG5vbi16ZXJvIHZhbHVlIGlmIHRoZSBx dWV1ZSBpcyBhYm92ZSBoaWdoIHdhdGVybWFyaworICovCitzdGF0aWMgaW5saW5lIGludCBxbWdy X3N0YXRfYWJvdmVfaGlnaF93YXRlcm1hcmsodW5zaWduZWQgaW50IHF1ZXVlKQoreworCXJldHVy biBfX3FtZ3JfZ2V0X3N0YXQxKHF1ZXVlKSAmIFFVRVVFX1NUQVQxX05FQVJMWV9GVUxMOworfQor CisvKioKKyAqIHFtZ3Jfc3RhdF9mdWxsKCkgLSBjaGVja3MgaWYgYSBoYXJkd2FyZSBxdWV1ZSBp cyBmdWxsCisgKiBAcXVldWU6IHF1ZXVlIG51bWJlcgorICoKKyAqIFJldHVybnMgbm9uLXplcm8g dmFsdWUgaWYgdGhlIHF1ZXVlIGlzIGZ1bGwuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50IHFtZ3Jf c3RhdF9mdWxsKHVuc2lnbmVkIGludCBxdWV1ZSkKK3sKKwlyZXR1cm4gX19xbWdyX2dldF9zdGF0 MShxdWV1ZSkgJiBRVUVVRV9TVEFUMV9GVUxMOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2Fy Y2gvYXJtL21hY2gtaXhwNHh4L2xvd2xldmVsX2luaXQuUyBiL2FyY2gvYXJtL21hY2gtaXhwNHh4 L2xvd2xldmVsX2luaXQuUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGU5 M2VmCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm0vbWFjaC1peHA0eHgvbG93bGV2ZWxfaW5p dC5TCkBAIC0wLDAgKzEsMTcgQEAKKyNpbmNsdWRlIDxtYWNoL2l4cDR4eC1yZWdzLmg+CisKKwku c2VjdGlvbiAiLnRleHRfYmFyZV9pbml0IiwgImF4IgorCisJLmdsb2JsIGFyY2hfaW5pdF9sb3ds ZXZlbAorYXJjaF9pbml0X2xvd2xldmVsOgorCWxkciByMCwgY2ZnCisJbGRyIHIxLCBbcjBdCisJ YW5kIHIxLCByMSwgI34weDgwMDAwMDAwIC8qIHVubWFwIEVYUCBidXMgZnJvbSAweDAgKi8KKwlz dHIgcjEsIFtyMF0KKworCS8qIHJldHVybiB0byBST00gKi8KKwlvcnIgbHIsICMweDUwMDAwMDAw CisJbW92IHBjLCBscgorCitjZmc6CisJLndvcmQgSVhQNFhYX0VYUF9DRkcwCmRpZmYgLS1naXQg YS9hcmNoL2FybS9tYWNoLWl4cDR4eC9ucGUuYyBiL2FyY2gvYXJtL21hY2gtaXhwNHh4L25wZS5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ZGRkNWEKLS0tIC9kZXYvbnVs bAorKysgYi9hcmNoL2FybS9tYWNoLWl4cDR4eC9ucGUuYwpAQCAtMCwwICsxLDY2OCBAQAorLyoK KyAqIEludGVsIElYUDR4eCBOZXR3b3JrIFByb2Nlc3NvciBFbmdpbmUgZHJpdmVyIGZvciBMaW51 eAorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBLcnp5c3p0b2YgSGFsYXNhIDxraGNAcG0ud2F3 LnBsPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgb2YgdmVyc2lv biAyIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYXMgcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5o PgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8ZnMuaD4KKyNpbmNsdWRlIDxpbml0Lmg+ CisjaW5jbHVkZSA8bWFsbG9jLmg+CisjaW5jbHVkZSA8YXNtL2J5dGVvcmRlci5oPgorI2luY2x1 ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPG1hY2gvaXhwNHh4LXJlZ3MuaD4KKyNpbmNsdWRlIDxt YWNoL2NwdS5oPgorI2luY2x1ZGUgPG1hY2gvbnBlLmg+CisKKyNkZWZpbmUgREVCVUdfTVNHICAg ICAgICAgICAgICAgICAgICAgIDAKKyNkZWZpbmUgREVCVUdfRlcgICAgICAgICAgICAgICAgICAg ICAgIDAKKworI2RlZmluZSBOUEVfQ09VTlQgICAgICAgICAgICAgICAgICAgICAgMworI2RlZmlu ZSBNQVhfUkVUUklFUyAgICAgICAgICAgICAgICAgICAgMTAwMCAgLyogbWljcm9zZWNvbmRzICov CisjZGVmaW5lIE5QRV80MlhfREFUQV9TSVpFICAgICAgICAgICAgICAweDgwMCAvKiBpbiBkd29y ZHMgKi8KKyNkZWZpbmUgTlBFXzQ2WF9EQVRBX1NJWkUgICAgICAgICAgICAgIDB4MTAwMAorI2Rl ZmluZSBOUEVfQV80MlhfSU5TVFJfU0laRSAgICAgICAgICAgMHgxMDAwCisjZGVmaW5lIE5QRV9C X0FORF9DXzQyWF9JTlNUUl9TSVpFICAgICAweDgwMAorI2RlZmluZSBOUEVfNDZYX0lOU1RSX1NJ WkUgICAgICAgICAgICAgMHgxMDAwCisjZGVmaW5lIFJFR1NfU0laRSAgICAgICAgICAgICAgICAg ICAgICAweDEwMDAKKworI2RlZmluZSBOUEVfUEhZU19SRUcgICAgICAgICAgICAgICAgICAgMzIK KworI2RlZmluZSBGV19NQUdJQyAgICAgICAgICAgICAgICAgICAgICAgMHhGRUVERjAwRAorI2Rl ZmluZSBGV19CTE9DS19UWVBFX0lOU1RSICAgICAgICAgICAgMHgwCisjZGVmaW5lIEZXX0JMT0NL X1RZUEVfREFUQSAgICAgICAgICAgICAweDEKKyNkZWZpbmUgRldfQkxPQ0tfVFlQRV9FT0YgICAg ICAgICAgICAgIDB4RgorCisvKiBOUEUgZXhlYyBzdGF0dXMgKHJlYWQpIGFuZCBjb21tYW5kICh3 cml0ZSkgKi8KKyNkZWZpbmUgQ01EX05QRV9TVEVQICAgICAgICAgICAgICAgICAgIDB4MDEKKyNk ZWZpbmUgQ01EX05QRV9TVEFSVCAgICAgICAgICAgICAgICAgIDB4MDIKKyNkZWZpbmUgQ01EX05Q RV9TVE9QICAgICAgICAgICAgICAgICAgIDB4MDMKKyNkZWZpbmUgQ01EX05QRV9DTFJfUElQRSAg ICAgICAgICAgICAgIDB4MDQKKyNkZWZpbmUgQ01EX0NMUl9QUk9GSUxFX0NOVCAgICAgICAgICAg IDB4MEMKKyNkZWZpbmUgQ01EX1JEX0lOU19NRU0gICAgICAgICAgICAgICAgIDB4MTAgLyogaW5z dHJ1Y3Rpb24gbWVtb3J5ICovCisjZGVmaW5lIENNRF9XUl9JTlNfTUVNICAgICAgICAgICAgICAg ICAweDExCisjZGVmaW5lIENNRF9SRF9EQVRBX01FTSAgICAgICAgICAgICAgICAweDEyIC8qIGRh dGEgbWVtb3J5ICovCisjZGVmaW5lIENNRF9XUl9EQVRBX01FTSAgICAgICAgICAgICAgICAweDEz CisjZGVmaW5lIENNRF9SRF9FQ1NfUkVHICAgICAgICAgICAgICAgICAweDE0IC8qIGV4ZWMgYWNj ZXNzIHJlZ2lzdGVyICovCisjZGVmaW5lIENNRF9XUl9FQ1NfUkVHICAgICAgICAgICAgICAgICAw eDE1CisKKyNkZWZpbmUgU1RBVF9SVU4gICAgICAgICAgICAgICAgICAgICAgIDB4ODAwMDAwMDAK KyNkZWZpbmUgU1RBVF9TVE9QICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwMDAKKyNkZWZp bmUgU1RBVF9DTEVBUiAgICAgICAgICAgICAgICAgICAgIDB4MjAwMDAwMDAKKyNkZWZpbmUgU1RB VF9FQ1NfSyAgICAgICAgICAgICAgICAgICAgIDB4MDA4MDAwMDAgLyogcGlwZWxpbmUgY2xlYW4g Ki8KKworI2RlZmluZSBOUEVfU1RFVlQgICAgICAgICAgICAgICAgICAgICAgMHgxQgorI2RlZmlu ZSBOUEVfU1RBUlRQQyAgICAgICAgICAgICAgICAgICAgMHgxQworI2RlZmluZSBOUEVfUkVHTUFQ ICAgICAgICAgICAgICAgICAgICAgMHgxRQorI2RlZmluZSBOUEVfQ0lOREVYICAgICAgICAgICAg ICAgICAgICAgMHgxRgorCisjZGVmaW5lIElOU1RSX1dSX1JFR19TSE9SVCAgICAgICAgICAgICAw eDAwMDBDMDAwCisjZGVmaW5lIElOU1RSX1dSX1JFR19CWVRFICAgICAgICAgICAgICAweDAwMDA0 MDAwCisjZGVmaW5lIElOU1RSX1JEX0ZJRk8gICAgICAgICAgICAgICAgICAweDBGODg4MjIwCisj ZGVmaW5lIElOU1RSX1JFU0VUX01CT1ggICAgICAgICAgICAgICAweDBGQUM4MjEwCisKKyNkZWZp bmUgRUNTX0JHX0NUWFRfUkVHXzAgICAgICAgICAgICAgIDB4MDAgLyogQmFja2dyb3VuZCBFeGVj dXRpbmcgQ29udGV4dCAqLworI2RlZmluZSBFQ1NfQkdfQ1RYVF9SRUdfMSAgICAgICAgICAgICAg MHgwMSAvKiBTdGFjayBsZXZlbCAqLworI2RlZmluZSBFQ1NfQkdfQ1RYVF9SRUdfMiAgICAgICAg ICAgICAgMHgwMgorI2RlZmluZSBFQ1NfUFJJXzFfQ1RYVF9SRUdfMCAgICAgICAgICAgMHgwNCAv KiBQcmlvcml0eSAxIEV4ZWN1dGluZyBDb250ZXh0ICovCisjZGVmaW5lIEVDU19QUklfMV9DVFhU X1JFR18xICAgICAgICAgICAweDA1IC8qIFN0YWNrIGxldmVsICovCisjZGVmaW5lIEVDU19QUklf MV9DVFhUX1JFR18yICAgICAgICAgICAweDA2CisjZGVmaW5lIEVDU19QUklfMl9DVFhUX1JFR18w ICAgICAgICAgICAweDA4IC8qIFByaW9yaXR5IDIgRXhlY3V0aW5nIENvbnRleHQgKi8KKyNkZWZp bmUgRUNTX1BSSV8yX0NUWFRfUkVHXzEgICAgICAgICAgIDB4MDkgLyogU3RhY2sgbGV2ZWwgKi8K KyNkZWZpbmUgRUNTX1BSSV8yX0NUWFRfUkVHXzIgICAgICAgICAgIDB4MEEKKyNkZWZpbmUgRUNT X0RCR19DVFhUX1JFR18wICAgICAgICAgICAgIDB4MEMgLyogRGVidWcgRXhlY3V0aW5nIENvbnRl eHQgKi8KKyNkZWZpbmUgRUNTX0RCR19DVFhUX1JFR18xICAgICAgICAgICAgIDB4MEQgLyogU3Rh Y2sgbGV2ZWwgKi8KKyNkZWZpbmUgRUNTX0RCR19DVFhUX1JFR18yICAgICAgICAgICAgIDB4MEUK KyNkZWZpbmUgRUNTX0lOU1RSVUNUX1JFRyAgICAgICAgICAgICAgIDB4MTEgLyogTlBFIEluc3Ry dWN0aW9uIFJlZ2lzdGVyICovCisKKyNkZWZpbmUgRUNTX1JFR18wX0FDVElWRSAgICAgICAgICAg ICAgIDB4ODAwMDAwMDAgLyogYWxsIGxldmVscyAqLworI2RlZmluZSBFQ1NfUkVHXzBfTkVYVFBD X01BU0sgICAgICAgICAgMHgxRkZGMDAwMCAvKiBCRy9QUkkxL1BSSTIgbGV2ZWxzICovCisjZGVm aW5lIEVDU19SRUdfMF9MRFVSX0JJVFMgICAgICAgICAgICA4CisjZGVmaW5lIEVDU19SRUdfMF9M RFVSX01BU0sgICAgICAgICAgICAweDAwMDAwNzAwIC8qIGFsbCBsZXZlbHMgKi8KKyNkZWZpbmUg RUNTX1JFR18xX0NDVFhUX0JJVFMgICAgICAgICAgIDE2CisjZGVmaW5lIEVDU19SRUdfMV9DQ1RY VF9NQVNLICAgICAgICAgICAweDAwMEYwMDAwIC8qIGFsbCBsZXZlbHMgKi8KKyNkZWZpbmUgRUNT X1JFR18xX1NFTENUWFRfQklUUyAgICAgICAgIDAKKyNkZWZpbmUgRUNTX1JFR18xX1NFTENUWFRf TUFTSyAgICAgICAgIDB4MDAwMDAwMEYgLyogYWxsIGxldmVscyAqLworI2RlZmluZSBFQ1NfREJH X1JFR18yX0lGICAgICAgICAgICAgICAgMHgwMDEwMDAwMCAvKiBkZWJ1ZyBsZXZlbCAqLworI2Rl ZmluZSBFQ1NfREJHX1JFR18yX0lFICAgICAgICAgICAgICAgMHgwMDA4MDAwMCAvKiBkZWJ1ZyBs ZXZlbCAqLworCisvKiBOUEUgd2F0Y2hwb2ludF9maWZvIHJlZ2lzdGVyIGJpdCAqLworI2RlZmlu ZSBXRklGT19WQUxJRCAgICAgICAgICAgICAgICAgICAgMHg4MDAwMDAwMAorCisvKiBOUEUgbWVz c2FnaW5nX3N0YXR1cyByZWdpc3RlciBiaXQgZGVmaW5pdGlvbnMgKi8KKyNkZWZpbmUgTVNHU1RB VF9PRk5FICAweDAwMDEwMDAwIC8qIE91dEZpZm9Ob3RFbXB0eSAqLworI2RlZmluZSBNU0dTVEFU X0lGTkYgIDB4MDAwMjAwMDAgLyogSW5GaWZvTm90RnVsbCAqLworI2RlZmluZSBNU0dTVEFUX09G TkYgIDB4MDAwNDAwMDAgLyogT3V0Rmlmb05vdEZ1bGwgKi8KKyNkZWZpbmUgTVNHU1RBVF9JRk5F ICAweDAwMDgwMDAwIC8qIEluRmlmb05vdEVtcHR5ICovCisjZGVmaW5lIE1TR1NUQVRfTUJJTlQg MHgwMDEwMDAwMCAvKiBNYWlsYm94IGludGVycnVwdCAqLworI2RlZmluZSBNU0dTVEFUX0lGSU5U IDB4MDAyMDAwMDAgLyogSW5GaWZvIGludGVycnVwdCAqLworI2RlZmluZSBNU0dTVEFUX09GSU5U IDB4MDA0MDAwMDAgLyogT3V0RmlmbyBpbnRlcnJ1cHQgKi8KKyNkZWZpbmUgTVNHU1RBVF9XRklO VCAweDAwODAwMDAwIC8qIFdhdGNoRmlmbyBpbnRlcnJ1cHQgKi8KKworLyogTlBFIG1lc3NhZ2lu Z19jb250cm9sIHJlZ2lzdGVyIGJpdCBkZWZpbml0aW9ucyAqLworI2RlZmluZSBNU0dDVExfT1VU X0ZJRk8gICAgICAgMHgwMDAxMDAwMCAvKiBlbmFibGUgb3V0cHV0IEZJRk8gKi8KKyNkZWZpbmUg TVNHQ1RMX0lOX0ZJRk8gICAgICAgIDB4MDAwMjAwMDAgLyogZW5hYmxlIGlucHV0IEZJRk8gKi8K KyNkZWZpbmUgTVNHQ1RMX09VVF9GSUZPX1dSSVRFIDB4MDEwMDAwMDAgLyogZW5hYmxlIEZJRk8g KyBXUklURSAqLworI2RlZmluZSBNU0dDVExfSU5fRklGT19XUklURSAgMHgwMjAwMDAwMAorCisv KiBOUEUgbWFpbGJveF9zdGF0dXMgdmFsdWUgZm9yIHJlc2V0ICovCisjZGVmaW5lIFJFU0VUX01C T1hfU1RBVCAgICAgICAgICAweDAwMDBGMEYwCisKKyNkZWZpbmUgcHJpbnRfbnBlKG5wZSwgZm10 LCAuLi4pIGZwcmludGYoc3RkZXJyLCAiJXM6ICIgZm10LCBucGUtPm5hbWUsICMjIF9fVkFfQVJH U19fKQorCisjaWYgREVCVUdfTVNHCisjZGVmaW5lIGRlYnVnX21zZyhucGUsIGZtdCwgLi4uKSBw cmludF9ucGUobnBlLCBmbXQsICMjIF9fVkFfQVJHU19fKQorI2Vsc2UKKyNkZWZpbmUgZGVidWdf bXNnKG5wZSwgZm10LCAuLi4pCisjZW5kaWYKKworc3RhdGljIHN0cnVjdCB7CisJdTMyIHJlZywg dmFsOworfSBlY3NfcmVzZXRbXSA9IHsKKwl7RUNTX0JHX0NUWFRfUkVHXzAsICAgIDB4QTAwMDAw MDB9LAorCXtFQ1NfQkdfQ1RYVF9SRUdfMSwgICAgMHgwMTAwMDAwMH0sCisJe0VDU19CR19DVFhU X1JFR18yLCAgICAweDAwMDA4MDAwfSwKKwl7RUNTX1BSSV8xX0NUWFRfUkVHXzAsIDB4MjAwMDAw ODB9LAorCXtFQ1NfUFJJXzFfQ1RYVF9SRUdfMSwgMHgwMTAwMDAwMH0sCisJe0VDU19QUklfMV9D VFhUX1JFR18yLCAweDAwMDA4MDAwfSwKKwl7RUNTX1BSSV8yX0NUWFRfUkVHXzAsIDB4MjAwMDAw ODB9LAorCXtFQ1NfUFJJXzJfQ1RYVF9SRUdfMSwgMHgwMTAwMDAwMH0sCisJe0VDU19QUklfMl9D VFhUX1JFR18yLCAweDAwMDA4MDAwfSwKKwl7RUNTX0RCR19DVFhUX1JFR18wLCAgIDB4MjAwMDAw MDB9LAorCXtFQ1NfREJHX0NUWFRfUkVHXzEsICAgMHgwMDAwMDAwMH0sCisJe0VDU19EQkdfQ1RY VF9SRUdfMiwgICAweDAwMUUwMDAwfSwKKwl7RUNTX0lOU1RSVUNUX1JFRywgICAgIDB4MTAwM0Mw MEZ9LAorfTsKKworc3RhdGljIHN0cnVjdCBucGUgbnBlX3RhYltOUEVfQ09VTlRdID0geworCXsK KwkJLnJlZ3MgPSAoc3RydWN0IG5wZV9yZWdzICopSVhQNFhYX05QRUFfQkFTRSwKKwkJLmlkID0g MCwKKwkJLm5hbWUgPSAiTlBFLUEiLAorCX0sIHsKKwkJLnJlZ3MgPSAoc3RydWN0IG5wZV9yZWdz ICopSVhQNFhYX05QRUJfQkFTRSwKKwkJLmlkID0gMSwKKwkJLm5hbWUgPSAiTlBFLUIiLAorCX0s IHsKKwkJLnJlZ3MgPSAoc3RydWN0IG5wZV9yZWdzICopSVhQNFhYX05QRUNfQkFTRSwKKwkJLmlk ID0gMiwKKwkJLm5hbWUgPSAiTlBFLUMiLAorCX0KK307CisKK2ludCBucGVfcnVubmluZyhzdHJ1 Y3QgbnBlICpucGUpCit7CisJcmV0dXJuIChfX3Jhd19yZWFkbCgmbnBlLT5yZWdzLT5leGVjX3N0 YXR1c19jbWQpICYgU1RBVF9SVU4pICE9IDA7Cit9CisKK3N0YXRpYyB2b2lkIG5wZV9jbWRfd3Jp dGUoc3RydWN0IG5wZSAqbnBlLCB1MzIgYWRkciwgaW50IGNtZCwgdTMyIGRhdGEpCit7CisJX19y YXdfd3JpdGVsKGRhdGEsICZucGUtPnJlZ3MtPmV4ZWNfZGF0YSk7CisJX19yYXdfd3JpdGVsKGFk ZHIsICZucGUtPnJlZ3MtPmV4ZWNfYWRkcik7CisJX19yYXdfd3JpdGVsKGNtZCwgJm5wZS0+cmVn cy0+ZXhlY19zdGF0dXNfY21kKTsKK30KKworc3RhdGljIHUzMiBucGVfY21kX3JlYWQoc3RydWN0 IG5wZSAqbnBlLCB1MzIgYWRkciwgaW50IGNtZCkKK3sKKwlfX3Jhd193cml0ZWwoYWRkciwgJm5w ZS0+cmVncy0+ZXhlY19hZGRyKTsKKwlfX3Jhd193cml0ZWwoY21kLCAmbnBlLT5yZWdzLT5leGVj X3N0YXR1c19jbWQpOworCS8qIElpbnRyb2R1Y2UgZXh0cmEgcmVhZCBjeWNsZXMgYWZ0ZXIgaXNz dWluZyByZWFkIGNvbW1hbmQgdG8gTlBFCisJICAgc28gdGhhdCB3ZSByZWFkIHRoZSByZWdpc3Rl ciBhZnRlciB0aGUgTlBFIGhhcyB1cGRhdGVkIGl0LgorCSAgIFRoaXMgaXMgdG8gb3ZlcmNvbWUg cmFjZSBjb25kaXRpb24gYmV0d2VlbiBYU2NhbGUgYW5kIE5QRSAqLworCV9fcmF3X3JlYWRsKCZu cGUtPnJlZ3MtPmV4ZWNfZGF0YSk7CisJX19yYXdfcmVhZGwoJm5wZS0+cmVncy0+ZXhlY19kYXRh KTsKKwlyZXR1cm4gX19yYXdfcmVhZGwoJm5wZS0+cmVncy0+ZXhlY19kYXRhKTsKK30KKworc3Rh dGljIHZvaWQgbnBlX2NsZWFyX2FjdGl2ZShzdHJ1Y3QgbnBlICpucGUsIHUzMiByZWcpCit7CisJ dTMyIHZhbCA9IG5wZV9jbWRfcmVhZChucGUsIHJlZywgQ01EX1JEX0VDU19SRUcpOworCW5wZV9j bWRfd3JpdGUobnBlLCByZWcsIENNRF9XUl9FQ1NfUkVHLCB2YWwgJiB+RUNTX1JFR18wX0FDVElW RSk7Cit9CisKK3N0YXRpYyB2b2lkIG5wZV9zdGFydChzdHJ1Y3QgbnBlICpucGUpCit7CisJLyog ZW5zdXJlIG9ubHkgQmFja2dyb3VuZCBDb250ZXh0IFN0YWNrIExldmVsIGlzIGFjdGl2ZSAqLwor CW5wZV9jbGVhcl9hY3RpdmUobnBlLCBFQ1NfUFJJXzFfQ1RYVF9SRUdfMCk7CisJbnBlX2NsZWFy X2FjdGl2ZShucGUsIEVDU19QUklfMl9DVFhUX1JFR18wKTsKKwlucGVfY2xlYXJfYWN0aXZlKG5w ZSwgRUNTX0RCR19DVFhUX1JFR18wKTsKKworCV9fcmF3X3dyaXRlbChDTURfTlBFX0NMUl9QSVBF LCAmbnBlLT5yZWdzLT5leGVjX3N0YXR1c19jbWQpOworCV9fcmF3X3dyaXRlbChDTURfTlBFX1NU QVJULCAmbnBlLT5yZWdzLT5leGVjX3N0YXR1c19jbWQpOworfQorCitzdGF0aWMgdm9pZCBucGVf c3RvcChzdHJ1Y3QgbnBlICpucGUpCit7CisJX19yYXdfd3JpdGVsKENNRF9OUEVfU1RPUCwgJm5w ZS0+cmVncy0+ZXhlY19zdGF0dXNfY21kKTsKKwlfX3Jhd193cml0ZWwoQ01EX05QRV9DTFJfUElQ RSwgJm5wZS0+cmVncy0+ZXhlY19zdGF0dXNfY21kKTsgLypGSVhNRT8qLworfQorCitzdGF0aWMg aW50IG5wZV9kZWJ1Z19pbnN0cihzdHJ1Y3QgbnBlICpucGUsIHUzMiBpbnN0ciwgdTMyIGN0eCwg dTMyIGxkdXIpCit7CisJdTMyIHdjOworCWludCBpOworCisJLyogc2V0IHRoZSBBY3RpdmUgYml0 LCBhbmQgdGhlIExEVVIsIGluIHRoZSBkZWJ1ZyBsZXZlbCAqLworCW5wZV9jbWRfd3JpdGUobnBl LCBFQ1NfREJHX0NUWFRfUkVHXzAsIENNRF9XUl9FQ1NfUkVHLAorCQkgICAgICBFQ1NfUkVHXzBf QUNUSVZFIHwgKGxkdXIgPDwgRUNTX1JFR18wX0xEVVJfQklUUykpOworCisJLyogc2V0IENDVFhU IGF0IEVDUyBERUJVRyBMMyB0byBzcGVjaWZ5IGluIHdoaWNoIGNvbnRleHQgdG8gZXhlY3V0ZQor CSAgIHRoZSBpbnN0cnVjdGlvbiwgYW5kIHNldCBTRUxDVFhUIGF0IEVDUyBERUJVRyBMZXZlbCB0 byBzcGVjaWZ5CisJICAgd2hpY2ggY29udGV4dCBzdG9yZSB0byBhY2Nlc3MuCisJICAgRGVidWcg RUNTIExldmVsIFJlZyAxIGhhcyBmb3JtIDB4MDAwbjAwMG4sIHdoZXJlIG4gPSBjb250ZXh0IG51 bWJlcgorCSovCisJbnBlX2NtZF93cml0ZShucGUsIEVDU19EQkdfQ1RYVF9SRUdfMSwgQ01EX1dS X0VDU19SRUcsCisJCSAgICAgIChjdHggPDwgRUNTX1JFR18xX0NDVFhUX0JJVFMpIHwKKwkJICAg ICAgKGN0eCA8PCBFQ1NfUkVHXzFfU0VMQ1RYVF9CSVRTKSk7CisKKwkvKiBjbGVhciB0aGUgcGlw ZWxpbmUgKi8KKwlfX3Jhd193cml0ZWwoQ01EX05QRV9DTFJfUElQRSwgJm5wZS0+cmVncy0+ZXhl Y19zdGF0dXNfY21kKTsKKworCS8qIGxvYWQgTlBFIGluc3RydWN0aW9uIGludG8gdGhlIGluc3Ry dWN0aW9uIHJlZ2lzdGVyICovCisJbnBlX2NtZF93cml0ZShucGUsIEVDU19JTlNUUlVDVF9SRUcs IENNRF9XUl9FQ1NfUkVHLCBpbnN0cik7CisKKwkvKiB3ZSBuZWVkIHRoaXMgdmFsdWUgbGF0ZXIg dG8gd2FpdCBmb3IgY29tcGxldGlvbiBvZiBOUEUgZXhlY3V0aW9uCisJICAgc3RlcCAqLworCXdj ID0gX19yYXdfcmVhZGwoJm5wZS0+cmVncy0+d2F0Y2hfY291bnQpOworCisJLyogaXNzdWUgYSBT dGVwIE9uZSBjb21tYW5kIHZpYSB0aGUgRXhlY3V0aW9uIENvbnRyb2wgcmVnaXN0ZXIgKi8KKwlf X3Jhd193cml0ZWwoQ01EX05QRV9TVEVQLCAmbnBlLT5yZWdzLT5leGVjX3N0YXR1c19jbWQpOwor CisJLyogV2F0Y2ggQ291bnQgcmVnaXN0ZXIgaW5jcmVtZW50cyB3aGVuIE5QRSBjb21wbGV0ZXMg YW4gaW5zdHJ1Y3Rpb24gKi8KKwlmb3IgKGkgPSAwOyBpIDwgTUFYX1JFVFJJRVM7IGkrKykgewor CQlpZiAod2MgIT0gX19yYXdfcmVhZGwoJm5wZS0+cmVncy0+d2F0Y2hfY291bnQpKQorCQkJcmV0 dXJuIDA7CisJCXVkZWxheSgxKTsKKwl9CisKKwlwcmludF9ucGUobnBlLCAicmVzZXQ6IG5wZV9k ZWJ1Z19pbnN0cigpOiB0aW1lb3V0XG4iKTsKKwlyZXR1cm4gLUVUSU1FRE9VVDsKK30KKworc3Rh dGljIGludCBucGVfbG9naWNhbF9yZWdfd3JpdGU4KHN0cnVjdCBucGUgKm5wZSwgdTMyIGFkZHIs IHU4IHZhbCwgdTMyIGN0eCkKK3sKKwkvKiBoZXJlIHdlIGJ1aWxkIHRoZSBOUEUgYXNzZW1ibGVy IGluc3RydWN0aW9uOiBtb3Y4IGQwLCAjMCAqLworCXUzMiBpbnN0ciA9IElOU1RSX1dSX1JFR19C WVRFIHwgLyogT3BDb2RlICovCisJCWFkZHIgPDwgOSB8ICAgICAgICAgICAgIC8qIGJhc2UgT3Bl cmFuZCAqLworCQkodmFsICYgMHgxRikgPDwgNCB8ICAgICAvKiBsb3dlciA1IGJpdHMgdG8gaW1t ZWRpYXRlIGRhdGEgKi8KKwkJKHZhbCAmIH4weDFGKSA8PCAoMTggLSA1KTsvKiBoaWdoZXIgMyBi aXRzIHRvIENvUHJvYyBpbnN0ci4gKi8KKwlyZXR1cm4gbnBlX2RlYnVnX2luc3RyKG5wZSwgaW5z dHIsIGN0eCwgMSk7IC8qIGV4ZWN1dGUgaXQgKi8KK30KKworc3RhdGljIGludCBucGVfbG9naWNh bF9yZWdfd3JpdGUxNihzdHJ1Y3QgbnBlICpucGUsIHUzMiBhZGRyLCB1MTYgdmFsLCB1MzIgY3R4 KQoreworCS8qIGhlcmUgd2UgYnVpbGQgdGhlIE5QRSBhc3NlbWJsZXIgaW5zdHJ1Y3Rpb246IG1v djE2IGQwLCAjMCAqLworCXUzMiBpbnN0ciA9IElOU1RSX1dSX1JFR19TSE9SVCB8IC8qIE9wQ29k ZSAqLworCQlhZGRyIDw8IDkgfCAgICAgICAgICAgICAvKiBiYXNlIE9wZXJhbmQgKi8KKwkJKHZh bCAmIDB4MUYpIDw8IDQgfCAgICAgLyogbG93ZXIgNSBiaXRzIHRvIGltbWVkaWF0ZSBkYXRhICov CisJCSh2YWwgJiB+MHgxRikgPDwgKDE4IC0gNSk7LyogaGlnaGVyIDExIGJpdHMgdG8gQ29Qcm9j IGluc3RyLiAqLworCXJldHVybiBucGVfZGVidWdfaW5zdHIobnBlLCBpbnN0ciwgY3R4LCAxKTsg LyogZXhlY3V0ZSBpdCAqLworfQorCitzdGF0aWMgaW50IG5wZV9sb2dpY2FsX3JlZ193cml0ZTMy KHN0cnVjdCBucGUgKm5wZSwgdTMyIGFkZHIsIHUzMiB2YWwsIHUzMiBjdHgpCit7CisJLyogd3Jp dGUgaW4gMTYgYml0IHN0ZXBzIGZpcnN0IHRoZSBoaWdoIGFuZCB0aGVuIHRoZSBsb3cgdmFsdWUg Ki8KKwlpZiAobnBlX2xvZ2ljYWxfcmVnX3dyaXRlMTYobnBlLCBhZGRyLCB2YWwgPj4gMTYsIGN0 eCkpCisJCXJldHVybiAtRVRJTUVET1VUOworCXJldHVybiBucGVfbG9naWNhbF9yZWdfd3JpdGUx NihucGUsIGFkZHIgKyAyLCB2YWwgJiAweEZGRkYsIGN0eCk7Cit9CisKK3N0YXRpYyBpbnQgbnBl X3Jlc2V0KHN0cnVjdCBucGUgKm5wZSkKK3sKKwl1MzIgdmFsLCBjdGwsIGV4ZWNfY291bnQsIGN0 eF9yZWcyOworCWludCBpOworCisJY3RsID0gKF9fcmF3X3JlYWRsKCZucGUtPnJlZ3MtPm1lc3Nh Z2luZ19jb250cm9sKSB8IDB4M0YwMDAwMDApICYKKwkJMHgzRjNGRkZGRjsKKworCS8qIGRpc2Fi bGUgcGFyaXR5IGludGVycnVwdCAqLworCV9fcmF3X3dyaXRlbChjdGwgJiAweDNGMDBGRkZGLCAm bnBlLT5yZWdzLT5tZXNzYWdpbmdfY29udHJvbCk7CisKKwkvKiBwcmUgZXhlYyAtIGRlYnVnIGlu c3RydWN0aW9uICovCisJLyogdHVybiBvZmYgdGhlIGhhbHQgYml0IGJ5IGNsZWFyaW5nIEV4ZWN1 dGlvbiBDb3VudCByZWdpc3Rlci4gKi8KKwlleGVjX2NvdW50ID0gX19yYXdfcmVhZGwoJm5wZS0+ cmVncy0+ZXhlY19jb3VudCk7CisJX19yYXdfd3JpdGVsKDAsICZucGUtPnJlZ3MtPmV4ZWNfY291 bnQpOworCS8qIGVuc3VyZSB0aGF0IElGIGFuZCBJRSBhcmUgb24gKHRlbXBvcmFyaWx5KSwgc28g dGhhdCB3ZSBkb24ndCBlbmQgdXAKKwkgICBzdGVwcGluZyBmb3JldmVyICovCisJY3R4X3JlZzIg PSBucGVfY21kX3JlYWQobnBlLCBFQ1NfREJHX0NUWFRfUkVHXzIsIENNRF9SRF9FQ1NfUkVHKTsK KwlucGVfY21kX3dyaXRlKG5wZSwgRUNTX0RCR19DVFhUX1JFR18yLCBDTURfV1JfRUNTX1JFRywg Y3R4X3JlZzIgfAorCQkgICAgICBFQ1NfREJHX1JFR18yX0lGIHwgRUNTX0RCR19SRUdfMl9JRSk7 CisKKwkvKiBjbGVhciB0aGUgRklGT3MgKi8KKwl3aGlsZSAoX19yYXdfcmVhZGwoJm5wZS0+cmVn cy0+d2F0Y2hwb2ludF9maWZvKSAmIFdGSUZPX1ZBTElEKQorCQk7CisJd2hpbGUgKF9fcmF3X3Jl YWRsKCZucGUtPnJlZ3MtPm1lc3NhZ2luZ19zdGF0dXMpICYgTVNHU1RBVF9PRk5FKQorCQkvKiBy ZWFkIGZyb20gdGhlIG91dEZJRk8gdW50aWwgZW1wdHkgKi8KKwkJcHJpbnRfbnBlKG5wZSwgIm5w ZV9yZXNldDogcmVhZCBGSUZPID0gMHglWFxuIiwKKwkJCSAgX19yYXdfcmVhZGwoJm5wZS0+cmVn cy0+aW5fb3V0X2ZpZm8pKTsKKworCXdoaWxlIChfX3Jhd19yZWFkbCgmbnBlLT5yZWdzLT5tZXNz YWdpbmdfc3RhdHVzKSAmIE1TR1NUQVRfSUZORSkKKwkJLyogc3RlcCBleGVjdXRpb24gb2YgdGhl IE5QRSBpbnRydWN0aW9uIHRvIHJlYWQgaW5GSUZPIHVzaW5nCisJCSAgIHRoZSBEZWJ1ZyBFeGVj dXRpbmcgQ29udGV4dCBzdGFjayAqLworCQlpZiAobnBlX2RlYnVnX2luc3RyKG5wZSwgSU5TVFJf UkRfRklGTywgMCwgMCkpCisJCQlyZXR1cm4gLUVUSU1FRE9VVDsKKworCS8qIHJlc2V0IHRoZSBt YWlsYm94IHJlZyBmcm9tIHRoZSBYU2NhbGUgc2lkZSAqLworCV9fcmF3X3dyaXRlbChSRVNFVF9N Qk9YX1NUQVQsICZucGUtPnJlZ3MtPm1haWxib3hfc3RhdHVzKTsKKwkvKiBmcm9tIE5QRSBzaWRl ICovCisJaWYgKG5wZV9kZWJ1Z19pbnN0cihucGUsIElOU1RSX1JFU0VUX01CT1gsIDAsIDApKQor CQlyZXR1cm4gLUVUSU1FRE9VVDsKKworCS8qIFJlc2V0IHRoZSBwaHlzaWNhbCByZWdpc3RlcnMg aW4gdGhlIE5QRSByZWdpc3RlciBmaWxlICovCisJZm9yICh2YWwgPSAwOyB2YWwgPCBOUEVfUEhZ U19SRUc7IHZhbCsrKSB7CisJCWlmIChucGVfbG9naWNhbF9yZWdfd3JpdGUxNihucGUsIE5QRV9S RUdNQVAsIHZhbCA+PiAxLCAwKSkKKwkJCXJldHVybiAtRVRJTUVET1VUOworCQkvKiBhZGRyZXNz IGlzIGVpdGhlciAwIG9yIDQgKi8KKwkJaWYgKG5wZV9sb2dpY2FsX3JlZ193cml0ZTMyKG5wZSwg KHZhbCAmIDEpICogNCwgMCwgMCkpCisJCQlyZXR1cm4gLUVUSU1FRE9VVDsKKwl9CisKKwkvKiBS ZXNldCB0aGUgY29udGV4dCBzdG9yZSA9IGVhY2ggY29udGV4dCdzIENvbnRleHQgU3RvcmUgcmVn aXN0ZXJzICovCisKKwkvKiBDb250ZXh0IDAgaGFzIG5vIFNUQVJUUEMuIEluc3RlYWQsIHRoaXMg dmFsdWUgaXMgdXNlZCB0byBzZXQgTmV4dFBDCisJICAgZm9yIEJhY2tncm91bmQgRUNTLCB0byBz ZXQgd2hlcmUgTlBFIHN0YXJ0cyBleGVjdXRpbmcgY29kZSAqLworCXZhbCA9IG5wZV9jbWRfcmVh ZChucGUsIEVDU19CR19DVFhUX1JFR18wLCBDTURfUkRfRUNTX1JFRyk7CisJdmFsICY9IH5FQ1Nf UkVHXzBfTkVYVFBDX01BU0s7CisJdmFsIHw9ICgwIC8qIE5leHRQQyAqLyA8PCAxNikgJiBFQ1Nf UkVHXzBfTkVYVFBDX01BU0s7CisJbnBlX2NtZF93cml0ZShucGUsIEVDU19CR19DVFhUX1JFR18w LCBDTURfV1JfRUNTX1JFRywgdmFsKTsKKworCWZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKSB7CisJ CWlmIChpKSB7IC8qIENvbnRleHQgMCBoYXMgbm8gU1RFVlQgbm9yIFNUQVJUUEMgKi8KKwkJCS8q IFNURVZUID0gb2ZmLCAweDgwICovCisJCQlpZiAobnBlX2xvZ2ljYWxfcmVnX3dyaXRlOChucGUs IE5QRV9TVEVWVCwgMHg4MCwgaSkpCisJCQkJcmV0dXJuIC1FVElNRURPVVQ7CisJCQlpZiAobnBl X2xvZ2ljYWxfcmVnX3dyaXRlMTYobnBlLCBOUEVfU1RBUlRQQywgMCwgaSkpCisJCQkJcmV0dXJu IC1FVElNRURPVVQ7CisJCX0KKwkJLyogUkVHTUFQID0gZDAtPnAwLCBkOC0+cDIsIGQxNi0+cDQg Ki8KKwkJaWYgKG5wZV9sb2dpY2FsX3JlZ193cml0ZTE2KG5wZSwgTlBFX1JFR01BUCwgMHg4MjAs IGkpKQorCQkJcmV0dXJuIC1FVElNRURPVVQ7CisJCWlmIChucGVfbG9naWNhbF9yZWdfd3JpdGU4 KG5wZSwgTlBFX0NJTkRFWCwgMCwgaSkpCisJCQlyZXR1cm4gLUVUSU1FRE9VVDsKKwl9CisKKwkv KiBwb3N0IGV4ZWMgKi8KKwkvKiBjbGVhciBhY3RpdmUgYml0IGluIGRlYnVnIGxldmVsICovCisJ bnBlX2NtZF93cml0ZShucGUsIEVDU19EQkdfQ1RYVF9SRUdfMCwgQ01EX1dSX0VDU19SRUcsIDAp OworCS8qIGNsZWFyIHRoZSBwaXBlbGluZSAqLworCV9fcmF3X3dyaXRlbChDTURfTlBFX0NMUl9Q SVBFLCAmbnBlLT5yZWdzLT5leGVjX3N0YXR1c19jbWQpOworCS8qIHJlc3RvcmUgcHJldmlvdXMg dmFsdWVzICovCisJX19yYXdfd3JpdGVsKGV4ZWNfY291bnQsICZucGUtPnJlZ3MtPmV4ZWNfY291 bnQpOworCW5wZV9jbWRfd3JpdGUobnBlLCBFQ1NfREJHX0NUWFRfUkVHXzIsIENNRF9XUl9FQ1Nf UkVHLCBjdHhfcmVnMik7CisKKwkvKiB3cml0ZSByZXNldCB2YWx1ZXMgdG8gRXhlY3V0aW9uIENv bnRleHQgU3RhY2sgcmVnaXN0ZXJzICovCisJZm9yICh2YWwgPSAwOyB2YWwgPCBBUlJBWV9TSVpF KGVjc19yZXNldCk7IHZhbCsrKQorCQlucGVfY21kX3dyaXRlKG5wZSwgZWNzX3Jlc2V0W3ZhbF0u cmVnLCBDTURfV1JfRUNTX1JFRywKKwkJCSAgICAgIGVjc19yZXNldFt2YWxdLnZhbCk7CisKKwkv KiBjbGVhciB0aGUgcHJvZmlsZSBjb3VudGVyICovCisJX19yYXdfd3JpdGVsKENNRF9DTFJfUFJP RklMRV9DTlQsICZucGUtPnJlZ3MtPmV4ZWNfc3RhdHVzX2NtZCk7CisKKwlfX3Jhd193cml0ZWwo MCwgJm5wZS0+cmVncy0+ZXhlY19jb3VudCk7CisJX19yYXdfd3JpdGVsKDAsICZucGUtPnJlZ3Mt PmFjdGlvbl9wb2ludHNbMF0pOworCV9fcmF3X3dyaXRlbCgwLCAmbnBlLT5yZWdzLT5hY3Rpb25f cG9pbnRzWzFdKTsKKwlfX3Jhd193cml0ZWwoMCwgJm5wZS0+cmVncy0+YWN0aW9uX3BvaW50c1sy XSk7CisJX19yYXdfd3JpdGVsKDAsICZucGUtPnJlZ3MtPmFjdGlvbl9wb2ludHNbM10pOworCV9f cmF3X3dyaXRlbCgwLCAmbnBlLT5yZWdzLT53YXRjaF9jb3VudCk7CisKKwl2YWwgPSBpeHA0eHhf cmVhZF9mZWF0dXJlX2JpdHMoKTsKKwkvKiByZXNldCB0aGUgTlBFICovCisJaXhwNHh4X3dyaXRl X2ZlYXR1cmVfYml0cyh2YWwgJgorCQkJCSAgfihJWFA0WFhfRkVBVFVSRV9SRVNFVF9OUEVBIDw8 IG5wZS0+aWQpKTsKKwkvKiBkZWFzc2VydCByZXNldCAqLworCWl4cDR4eF93cml0ZV9mZWF0dXJl X2JpdHModmFsIHwKKwkJCQkgIChJWFA0WFhfRkVBVFVSRV9SRVNFVF9OUEVBIDw8IG5wZS0+aWQp KTsKKwlmb3IgKGkgPSAwOyBpIDwgTUFYX1JFVFJJRVM7IGkrKykgeworCQlpZiAoaXhwNHh4X3Jl YWRfZmVhdHVyZV9iaXRzKCkgJgorCQkgICAgKElYUDRYWF9GRUFUVVJFX1JFU0VUX05QRUEgPDwg bnBlLT5pZCkpCisJCQlicmVhazsgLyogTlBFIGlzIGJhY2sgYWxpdmUgKi8KKwkJdWRlbGF5KDEp OworCX0KKwlpZiAoaSA9PSBNQVhfUkVUUklFUykKKwkJcmV0dXJuIC1FVElNRURPVVQ7CisKKwlu cGVfc3RvcChucGUpOworCisJLyogcmVzdG9yZSBOUEUgY29uZmlndXJhdGlvbiBidXMgQ29udHJv bCBSZWdpc3RlciAtIHBhcml0eSBzZXR0aW5ncyAqLworCV9fcmF3X3dyaXRlbChjdGwsICZucGUt PnJlZ3MtPm1lc3NhZ2luZ19jb250cm9sKTsKKwlyZXR1cm4gMDsKK30KKworCitpbnQgbnBlX3Nl bmRfbWVzc2FnZShzdHJ1Y3QgbnBlICpucGUsIGNvbnN0IHZvaWQgKm1zZywgY29uc3QgY2hhciAq d2hhdCkKK3sKKwljb25zdCB1MzIgKnNlbmQgPSBtc2c7CisJaW50IGN5Y2xlcyA9IDA7CisKKwlk ZWJ1Z19tc2cobnBlLCAiVHJ5aW5nIHRvIHNlbmQgbWVzc2FnZSAlcyBbJTA4WDolMDhYXVxuIiwK KwkJICB3aGF0LCBzZW5kWzBdLCBzZW5kWzFdKTsKKworCWlmIChfX3Jhd19yZWFkbCgmbnBlLT5y ZWdzLT5tZXNzYWdpbmdfc3RhdHVzKSAmIE1TR1NUQVRfSUZORSkgeworCQlkZWJ1Z19tc2cobnBl LCAiTlBFIGlucHV0IEZJRk8gbm90IGVtcHR5XG4iKTsKKwkJcmV0dXJuIC1FSU87CisJfQorCisJ X19yYXdfd3JpdGVsKHNlbmRbMF0sICZucGUtPnJlZ3MtPmluX291dF9maWZvKTsKKworCWlmICgh KF9fcmF3X3JlYWRsKCZucGUtPnJlZ3MtPm1lc3NhZ2luZ19zdGF0dXMpICYgTVNHU1RBVF9JRk5G KSkgeworCQlkZWJ1Z19tc2cobnBlLCAiTlBFIGlucHV0IEZJRk8gZnVsbFxuIik7CisJCXJldHVy biAtRUlPOworCX0KKworCV9fcmF3X3dyaXRlbChzZW5kWzFdLCAmbnBlLT5yZWdzLT5pbl9vdXRf Zmlmbyk7CisKKwl3aGlsZSAoKGN5Y2xlcyA8IE1BWF9SRVRSSUVTKSAmJgorCSAgICAgICAoX19y YXdfcmVhZGwoJm5wZS0+cmVncy0+bWVzc2FnaW5nX3N0YXR1cykgJiBNU0dTVEFUX0lGTkUpKSB7 CisJCXVkZWxheSgxKTsKKwkJY3ljbGVzKys7CisJfQorCisJaWYgKGN5Y2xlcyA9PSBNQVhfUkVU UklFUykgeworCQlkZWJ1Z19tc2cobnBlLCAiVGltZW91dCBzZW5kaW5nIG1lc3NhZ2VcbiIpOwor CQlyZXR1cm4gLUVUSU1FRE9VVDsKKwl9CisKKyNpZiBERUJVR19NU0cgPiAxCisJZGVidWdfbXNn KG5wZSwgIlNlbmRpbmcgYSBtZXNzYWdlIHRvb2sgJWkgY3ljbGVzXG4iLCBjeWNsZXMpOworI2Vu ZGlmCisJcmV0dXJuIDA7Cit9CisKK2ludCBucGVfcmVjdl9tZXNzYWdlKHN0cnVjdCBucGUgKm5w ZSwgdm9pZCAqbXNnLCBjb25zdCBjaGFyICp3aGF0KQoreworCXUzMiAqcmVjdiA9IG1zZzsKKwlp bnQgY3ljbGVzID0gMCwgY250ID0gMDsKKworCWRlYnVnX21zZyhucGUsICJUcnlpbmcgdG8gcmVj ZWl2ZSBtZXNzYWdlICVzXG4iLCB3aGF0KTsKKworCXdoaWxlIChjeWNsZXMgPCBNQVhfUkVUUklF UykgeworCQlpZiAoX19yYXdfcmVhZGwoJm5wZS0+cmVncy0+bWVzc2FnaW5nX3N0YXR1cykgJiBN U0dTVEFUX09GTkUpIHsKKwkJCXJlY3ZbY250KytdID0gX19yYXdfcmVhZGwoJm5wZS0+cmVncy0+ aW5fb3V0X2ZpZm8pOworCQkJaWYgKGNudCA9PSAyKQorCQkJCWJyZWFrOworCQl9IGVsc2Ugewor CQkJdWRlbGF5KDEpOworCQkJY3ljbGVzKys7CisJCX0KKwl9CisKKwlzd2l0Y2goY250KSB7CisJ Y2FzZSAxOgorCQlkZWJ1Z19tc2cobnBlLCAiUmVjZWl2ZWQgWyUwOFhdXG4iLCByZWN2WzBdKTsK KwkJYnJlYWs7CisJY2FzZSAyOgorCQlkZWJ1Z19tc2cobnBlLCAiUmVjZWl2ZWQgWyUwOFg6JTA4 WF1cbiIsIHJlY3ZbMF0sIHJlY3ZbMV0pOworCQlicmVhazsKKwl9CisKKwlpZiAoY3ljbGVzID09 IE1BWF9SRVRSSUVTKSB7CisJCWRlYnVnX21zZyhucGUsICJUaW1lb3V0IHdhaXRpbmcgZm9yIG1l c3NhZ2VcbiIpOworCQlyZXR1cm4gLUVUSU1FRE9VVDsKKwl9CisKKyNpZiBERUJVR19NU0cgPiAx CisJZGVidWdfbXNnKG5wZSwgIlJlY2VpdmluZyBhIG1lc3NhZ2UgdG9vayAlaSBjeWNsZXNcbiIs IGN5Y2xlcyk7CisjZW5kaWYKKwlyZXR1cm4gMDsKK30KKworaW50IG5wZV9zZW5kX3JlY3ZfbWVz c2FnZShzdHJ1Y3QgbnBlICpucGUsIHZvaWQgKm1zZywgY29uc3QgY2hhciAqd2hhdCkKK3sKKwlp bnQgcmVzdWx0OworCXUzMiAqc2VuZCA9IG1zZywgcmVjdlsyXTsKKworCWlmICgocmVzdWx0ID0g bnBlX3NlbmRfbWVzc2FnZShucGUsIG1zZywgd2hhdCkpICE9IDApCisJCXJldHVybiByZXN1bHQ7 CisJaWYgKChyZXN1bHQgPSBucGVfcmVjdl9tZXNzYWdlKG5wZSwgcmVjdiwgd2hhdCkpICE9IDAp CisJCXJldHVybiByZXN1bHQ7CisKKwlpZiAoKHJlY3ZbMF0gIT0gc2VuZFswXSkgfHwgKHJlY3Zb MV0gIT0gc2VuZFsxXSkpIHsKKwkJZGVidWdfbXNnKG5wZSwgIk1lc3NhZ2UgJXM6IHVuZXhwZWN0 ZWQgbWVzc2FnZSByZWNlaXZlZFxuIiwKKwkJCSAgd2hhdCk7CisJCXJldHVybiAtRUlPOworCX0K KwlyZXR1cm4gMDsKK30KKworCitpbnQgbnBlX2xvYWRfZmlybXdhcmUoc3RydWN0IG5wZSAqbnBl KQoreworCXN0cnVjdCBkbF9ibG9jayB7CisJCXUzMiB0eXBlOworCQl1MzIgb2Zmc2V0OworCX0g KmJsazsKKworCXN0cnVjdCBkbF9pbWFnZSB7CisJCXUzMiBtYWdpYzsKKwkJdTMyIGlkOworCQl1 MzIgc2l6ZTsKKwkJdW5pb24geworCQkJdTMyIGRhdGFbMF07CisJCQlzdHJ1Y3QgZGxfYmxvY2sg YmxvY2tzWzBdOworCQl9OworCX0gKmltYWdlOworCisJc3RydWN0IGRsX2NvZGVibG9jayB7CisJ CXUzMiBucGVfYWRkcjsKKwkJdTMyIHNpemU7CisJCXUzMiBkYXRhWzBdOworCX0gKmNiOworCisJ aW50IGksIGosIGVyciwgZGF0YV9zaXplLCBpbnN0cl9zaXplLCBibG9ja3MsIHRhYmxlX2VuZDsK Kwl1MzIgY21kOworCWNoYXIgbmFtZVs1IC8qICIvZGV2LyIgKi8gKyBOUEVfTkFNRV9MRU5HVEgg KyAxIC8qIE5VTCAqL107CisJc2l6ZV90IGltYWdlX3NpemU7CisKKwlzcHJpbnRmKG5hbWUsICIv ZGV2LyVzIiwgbnBlLT5uYW1lKTsKKwlpZiAoIShpbWFnZSA9IHJlYWRfZmlsZShuYW1lLCAmaW1h Z2Vfc2l6ZSkpKSB7CisJCXByaW50X25wZShucGUsICJiYWQgb3IgbWlzc2luZyBtaWNyb2NvZGUg ZmlsZSAlcyIsIG5hbWUpOworCQlyZXR1cm4gLUVJTzsKKwl9CisKKwllcnIgPSAtRUlOVkFMOwor CWlmIChpbWFnZV9zaXplIDwgc2l6ZW9mKHN0cnVjdCBkbF9pbWFnZSkpIHsKKwkJcHJpbnRfbnBl KG5wZSwgImluY29tcGxldGUgbWljcm9jb2RlIGZpbGUgJXNcbiIsIG5hbWUpOworCQlnb3RvIGVy cjsKKwl9CisKKyNpZiBERUJVR19GVworCXByaW50X25wZShucGUsICJtaWNyb2NvZGU6ICUwOFgg JTA4WCAlMDhYICgweCVYIGJ5dGVzKVxuIiwKKwkJICBpbWFnZS0+bWFnaWMsIGltYWdlLT5pZCwg aW1hZ2UtPnNpemUsIGltYWdlLT5zaXplICogNCk7CisjZW5kaWYKKworCWlmIChpbWFnZS0+bWFn aWMgPT0gc3dhYjMyKEZXX01BR0lDKSkgeyAvKiBzd2FwcGVkIGZpbGUgKi8KKwkJaW1hZ2UtPmlk ID0gc3dhYjMyKGltYWdlLT5pZCk7CisJCWltYWdlLT5zaXplID0gc3dhYjMyKGltYWdlLT5zaXpl KTsKKwl9IGVsc2UgaWYgKGltYWdlLT5tYWdpYyAhPSBGV19NQUdJQykgeworCQlwcmludF9ucGUo bnBlLCAiYmFkIG1pY3JvY29kZSBmaWxlICVzIG1hZ2ljOiAweCVYXG4iLCBuYW1lLCBpbWFnZS0+ bWFnaWMpOworCQlnb3RvIGVycjsKKwl9CisJaWYgKChpbWFnZS0+c2l6ZSAqIDQgKyBzaXplb2Yo c3RydWN0IGRsX2ltYWdlKSkgPiBpbWFnZV9zaXplKSB7CisJCXByaW50X25wZShucGUsICJpbmNv bXBsZXRlIG1pY3JvY29kZSBmaWxlICVzXG4iLCBuYW1lKTsKKwkJZ290byBlcnI7CisJfQorCWlm ICgoKGltYWdlLT5pZCA+PiAyNCkgJiAweEYgLyogTlBFIElEICovKSAhPSBucGUtPmlkKSB7CisJ CXByaW50X25wZShucGUsICJOUEUgSUQgbWlzbWF0Y2ggaW4gbWljcm9jb2RlIGZpbGUgJXNcbiIs IG5hbWUpOworCQlnb3RvIGVycjsKKwl9CisJaWYgKGltYWdlLT5tYWdpYyA9PSBzd2FiMzIoRldf TUFHSUMpKQorCQlmb3IgKGkgPSAwOyBpIDwgaW1hZ2UtPnNpemU7IGkrKykKKwkJCWltYWdlLT5k YXRhW2ldID0gc3dhYjMyKGltYWdlLT5kYXRhW2ldKTsKKworCWlmIChjcHVfaXNfaXhwNDJ4KCkg JiYgKChpbWFnZS0+aWQgPj4gMjgpICYgMHhGIC8qIGRldmljZSBJRCAqLykpIHsKKwkJcHJpbnRf bnBlKG5wZSwgIklYUDQzeC9JWFA0NnggbWljcm9jb2RlIGlnbm9yZWQgb24gSVhQNDJ4XG4iKTsK KwkJZ290byBlcnI7CisJfQorCisJaWYgKG5wZV9ydW5uaW5nKG5wZSkpIHsKKwkJcHJpbnRfbnBl KG5wZSwgInVuYWJsZSB0byBsb2FkIG1pY3JvY29kZSBmaWxlICVzLCBOUEUgaXMgYWxyZWFkeSBy dW5uaW5nXG4iLCBuYW1lKTsKKwkJZXJyID0gLUVCVVNZOworCQlnb3RvIGVycjsKKwl9CisKKwlp ZiAoY3B1X2lzX2l4cDQyeCgpKSB7CisJCWlmICghbnBlLT5pZCkKKwkJCWluc3RyX3NpemUgPSBO UEVfQV80MlhfSU5TVFJfU0laRTsKKwkJZWxzZQorCQkJaW5zdHJfc2l6ZSA9IE5QRV9CX0FORF9D XzQyWF9JTlNUUl9TSVpFOworCQlkYXRhX3NpemUgPSBOUEVfNDJYX0RBVEFfU0laRTsKKwl9IGVs c2UgeworCQlpbnN0cl9zaXplID0gTlBFXzQ2WF9JTlNUUl9TSVpFOworCQlkYXRhX3NpemUgPSBO UEVfNDZYX0RBVEFfU0laRTsKKwl9CisKKwlmb3IgKGJsb2NrcyA9IDA7IGJsb2NrcyAqIHNpemVv ZihzdHJ1Y3QgZGxfYmxvY2spIC8gNCA8IGltYWdlLT5zaXplOworCSAgICAgYmxvY2tzKyspCisJ CWlmIChpbWFnZS0+YmxvY2tzW2Jsb2Nrc10udHlwZSA9PSBGV19CTE9DS19UWVBFX0VPRikKKwkJ CWJyZWFrOworCWlmIChibG9ja3MgKiBzaXplb2Yoc3RydWN0IGRsX2Jsb2NrKSAvIDQgPj0gaW1h Z2UtPnNpemUpIHsKKwkJcHJpbnRfbnBlKG5wZSwgIm1pY3JvY29kZSBFT0YgYmxvY2sgbWFya2Vy IG5vdCBmb3VuZFxuIik7CisJCWdvdG8gZXJyOworCX0KKworI2lmIERFQlVHX0ZXCisJcHJpbnRf bnBlKG5wZSwgIiVpIG1pY3JvY29kZSBibG9ja3MgZm91bmRcbiIsIGJsb2Nrcyk7CisjZW5kaWYK KworCXRhYmxlX2VuZCA9IGJsb2NrcyAqIHNpemVvZihzdHJ1Y3QgZGxfYmxvY2spIC8gNCArIDEg LyogRU9GIG1hcmtlciAqLzsKKwlmb3IgKGkgPSAwLCBibGsgPSBpbWFnZS0+YmxvY2tzOyBpIDwg YmxvY2tzOyBpKyssIGJsaysrKSB7CisJCWlmIChibGstPm9mZnNldCA+IGltYWdlLT5zaXplIC0g c2l6ZW9mKHN0cnVjdCBkbF9jb2RlYmxvY2spIC8gNAorCQkgICAgfHwgYmxrLT5vZmZzZXQgPCB0 YWJsZV9lbmQpIHsKKwkJCXByaW50X25wZShucGUsICJpbnZhbGlkIG9mZnNldCAweCVYIG9mICIK KwkJCQkgICJtaWNyb2NvZGUgYmxvY2sgIyVpXG4iLCBibGstPm9mZnNldCwgaSk7CisJCQlnb3Rv IGVycjsKKwkJfQorCisJCWNiID0gKHN0cnVjdCBkbF9jb2RlYmxvY2sqKSZpbWFnZS0+ZGF0YVti bGstPm9mZnNldF07CisJCWlmIChibGstPnR5cGUgPT0gRldfQkxPQ0tfVFlQRV9JTlNUUikgewor CQkJaWYgKGNiLT5ucGVfYWRkciArIGNiLT5zaXplID4gaW5zdHJfc2l6ZSkKKwkJCQlnb3RvIHRv b19iaWc7CisJCQljbWQgPSBDTURfV1JfSU5TX01FTTsKKwkJfSBlbHNlIGlmIChibGstPnR5cGUg PT0gRldfQkxPQ0tfVFlQRV9EQVRBKSB7CisJCQlpZiAoY2ItPm5wZV9hZGRyICsgY2ItPnNpemUg PiBkYXRhX3NpemUpCisJCQkJZ290byB0b29fYmlnOworCQkJY21kID0gQ01EX1dSX0RBVEFfTUVN OworCQl9IGVsc2UgeworCQkJcHJpbnRfbnBlKG5wZSwgImludmFsaWQgbWljcm9jb2RlIGJsb2Nr ICMlaSB0eXBlIDB4JVhcbiIsCisJCQkJICBpLCBibGstPnR5cGUpOworCQkJZ290byBlcnI7CisJ CX0KKwkJaWYgKGJsay0+b2Zmc2V0ICsgc2l6ZW9mKCpjYikgLyA0ICsgY2ItPnNpemUgPiBpbWFn ZS0+c2l6ZSkgeworCQkJcHJpbnRfbnBlKG5wZSwgIm1pY3JvY29kZSBibG9jayAjJWkgZG9lc24n dCAiCisJCQkJICAiZml0IGluIG1pY3JvY29kZSBpbWFnZTogdHlwZSAlYywgc3RhcnQgMHglWCwi CisJCQkJICAiIGxlbmd0aCAweCVYXG4iLCBpLAorCQkJCSAgYmxrLT50eXBlID09IEZXX0JMT0NL X1RZUEVfSU5TVFIgPyAnSScgOiAnRCcsCisJCQkJICBjYi0+bnBlX2FkZHIsIGNiLT5zaXplKTsK KwkJCWdvdG8gZXJyOworCQl9CisKKwkJZm9yIChqID0gMDsgaiA8IGNiLT5zaXplOyBqKyspCisJ CQlucGVfY21kX3dyaXRlKG5wZSwgY2ItPm5wZV9hZGRyICsgaiwgY21kLCBjYi0+ZGF0YVtqXSk7 CisJfQorCisJbnBlX3N0YXJ0KG5wZSk7CisJaWYgKCFucGVfcnVubmluZyhucGUpKQorCQlwcmlu dF9ucGUobnBlLCAidW5hYmxlIHRvIHN0YXJ0XG4iKTsKKwlmcmVlKGltYWdlKTsKKwlyZXR1cm4g MDsKKwordG9vX2JpZzoKKwlwcmludF9ucGUobnBlLCAibWljcm9jb2RlIGJsb2NrICMlaSBkb2Vz bid0IGZpdCBpbiBOUEUgIgorCQkgICJtZW1vcnk6IHR5cGUgJWMsIHN0YXJ0IDB4JVgsIGxlbmd0 aCAweCVYXG4iLCBpLAorCQkgIGJsay0+dHlwZSA9PSBGV19CTE9DS19UWVBFX0lOU1RSID8gJ0kn IDogJ0QnLAorCQkgIGNiLT5ucGVfYWRkciwgY2ItPnNpemUpOworZXJyOgorCWZyZWUoaW1hZ2Up OworCXJldHVybiBlcnI7Cit9CisKKworc3RydWN0IG5wZSAqbnBlX3JlcXVlc3QoaW50IGlkKQor eworCWlmIChpZCA8IE5QRV9DT1VOVCkKKwkJaWYgKG5wZV90YWJbaWRdLnZhbGlkKQorCQkJcmV0 dXJuICZucGVfdGFiW2lkXTsKKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGludCBfX2luaXQg bnBlX2luaXQodm9pZCkKK3sKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBOUEVfQ09VTlQ7 IGkrKykgeworCQlzdHJ1Y3QgbnBlICpucGUgPSAmbnBlX3RhYltpXTsKKwkJaWYgKCEoaXhwNHh4 X3JlYWRfZmVhdHVyZV9iaXRzKCkgJiAoSVhQNFhYX0ZFQVRVUkVfUkVTRVRfTlBFQSA8PCBpKSkp CisJCQljb250aW51ZTsgLyogTlBFIGFscmVhZHkgZGlzYWJsZWQgb3Igbm90IHByZXNlbnQgKi8K KwkJaWYgKG5wZV9yZXNldChucGUpKQorCQkJY29udGludWU7CisJCW5wZS0+dmFsaWQgPSAxOwor CX0KKwlyZXR1cm4gMDsKK30KKworY29yZWRldmljZV9pbml0Y2FsbChucGVfaW5pdCk7CmRpZmYg LS1naXQgYS9hcmNoL2FybS9tYWNoLWl4cDR4eC9xbWdyLmMgYi9hcmNoL2FybS9tYWNoLWl4cDR4 eC9xbWdyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFiNjUyMgotLS0g L2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL21hY2gtaXhwNHh4L3FtZ3IuYwpAQCAtMCwwICsxLDI1 OSBAQAorLyoKKyAqIEludGVsIElYUDR4eCBRdWV1ZSBNYW5hZ2VyIGRyaXZlciBmb3IgTGludXgK KyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgS3J6eXN6dG9mIEhhbGFzYSA8a2hjQHBtLndhdy5w bD4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHZlcnNpb24g MiBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFzIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisKKyNpbmNsdWRlIDxpbml0Lmg+Cisj aW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxtYWNoL3FtZ3IuaD4KKworc3RhdGljIHUzMiB1 c2VkX3NyYW1fYml0bWFwWzRdOyAvKiAxMjggMTYtZHdvcmQgcGFnZXMgKi8KKworI2lmIERFQlVH X1FNR1IKK2NoYXIgcW1ncl9xdWV1ZV9kZXNjc1tIQUxGX1FVRVVFU11bMzJdOworI2VuZGlmCisK KyNpZmRlZiBDT05GSUdfVVNFX0lSUQorCitzdGF0aWMgdm9pZCAoKmlycV9oYW5kbGVyc1tIQUxG X1FVRVVFU10pKHZvaWQgKnBkZXYpOworc3RhdGljIHZvaWQgKmlycV9wZGV2c1tIQUxGX1FVRVVF U107CisKK3ZvaWQgcW1ncl9zZXRfaXJxKHVuc2lnbmVkIGludCBxdWV1ZSwgaW50IHNyYywKKwkJ ICB2b2lkICgqaGFuZGxlcikodm9pZCAqcGRldiksIHZvaWQgKnBkZXYpCit7CisJY29uc3QgdTMy ICpyZWc7CisJaW50IGJpdDsKKwlCVUdfT04oc3JjID4gUVVFVUVfSVJRX1NSQ19OT1RfRlVMTCk7 CisJcmVnID0gJnFtZ3JfcmVncy0+aXJxc3JjW3F1ZXVlID4+IDNdOyAvKiA4IHF1ZXVlcyBwZXIg dTMyICovCisJYml0ID0gKHF1ZXVlICUgOCkgKiA0OyAvKiAzIGJpdHMgKyAxIHJlc2VydmVkIGJp dCBwZXIgcXVldWUgKi8KKwlfX3Jhd193cml0ZWwoKF9fcmF3X3JlYWRsKHJlZykgJiB+KDcgPDwg Yml0KSkgfCAoc3JjIDw8IGJpdCksIHJlZyk7CisKKwlpcnFfaGFuZGxlcnNbcXVldWVdID0gaGFu ZGxlcjsKKwlpcnFfcGRldnNbcXVldWVdID0gcGRldjsKK30KKworCitzdGF0aWMgdm9pZCBxbWdy X2lycTFfYTAodm9pZCAqZGF0YSkKK3sKKwlpbnQgaTsKKwl1MzIgZW5fYml0bWFwLCBzcmMsIHN0 YXQ7CisKKwkvKiBBQ0sgLSBpdCBtYXkgY2xlYXIgYW55IGJpdHMgc28gZG9uJ3QgcmVseSBvbiBp dCAqLworCV9fcmF3X3dyaXRlbCgweEZGRkZGRkZGLCAmcW1ncl9yZWdzLT5pcnFzdGF0WzBdKTsK KworCWVuX2JpdG1hcCA9IHFtZ3JfcmVncy0+aXJxZW5bMF07CisJd2hpbGUgKGVuX2JpdG1hcCkg eworCQlpID0gZmxzKGVuX2JpdG1hcCkgLSAxOyAvKiBudW1iZXIgb2YgdGhlIGxhc3QgImxvdyIg cXVldWUgKi8KKwkJZW5fYml0bWFwICY9IH5CSVQoaSk7CisJCXNyYyA9IHFtZ3JfcmVncy0+aXJx c3JjW2kgPj4gM107CisJCXN0YXQgPSBxbWdyX3JlZ3MtPnN0YXQxW2kgPj4gM107CisJCWlmIChz cmMgJiA0KSAvKiB0aGUgSVJRIGNvbmRpdGlvbiBpcyBpbnZlcnRlZCAqLworCQkJc3RhdCA9IH5z dGF0OworCQlpZiAoc3RhdCAmIEJJVChzcmMgJiAzKSkKKwkJCWlycV9oYW5kbGVyc1tpXShpcnFf cGRldnNbaV0pOworCX0KK30KKworCitzdGF0aWMgdm9pZCBxbWdyX2lycTEodm9pZCAqZGF0YSkK K3sKKwlpbnQgaTsKKwl1MzIgcmVxX2JpdG1hcCA9IF9fcmF3X3JlYWRsKCZxbWdyX3JlZ3MtPmly cXN0YXRbMF0pOworCisJaWYgKCFyZXFfYml0bWFwKQorCQlyZXR1cm47CisJX19yYXdfd3JpdGVs KHJlcV9iaXRtYXAsICZxbWdyX3JlZ3MtPmlycXN0YXRbMF0pOyAvKiBBQ0sgKi8KKworCXdoaWxl IChyZXFfYml0bWFwKSB7CisJCWkgPSBmbHMocmVxX2JpdG1hcCkgLSAxOyAvKiBudW1iZXIgb2Yg dGhlIGxhc3QgcXVldWUgKi8KKwkJcmVxX2JpdG1hcCAmPSB+QklUKGkpOworCQlpcnFfaGFuZGxl cnNbaV0oaXJxX3BkZXZzW2ldKTsKKwl9Cit9CisKKwordm9pZCBxbWdyX2VuYWJsZV9pcnEodW5z aWduZWQgaW50IHF1ZXVlKQoreworCXUzMiBtYXNrID0gMSA8PCBxdWV1ZTsKKworCV9fcmF3X3dy aXRlbChfX3Jhd19yZWFkbCgmcW1ncl9yZWdzLT5pcnFlblswXSkgfCBtYXNrLAorCQkgICAgICZx bWdyX3JlZ3MtPmlycWVuWzBdKTsKK30KKwordm9pZCBxbWdyX2Rpc2FibGVfaXJxKHVuc2lnbmVk IGludCBxdWV1ZSkKK3sKKwl1MzIgbWFzayA9IDEgPDwgcXVldWU7CisKKwlfX3Jhd193cml0ZWwo X19yYXdfcmVhZGwoJnFtZ3JfcmVncy0+aXJxZW5bMF0pICYgfm1hc2ssCisJCSAgICAgJnFtZ3Jf cmVncy0+aXJxZW5bMF0pOworCV9fcmF3X3dyaXRlbChtYXNrLCAmcW1ncl9yZWdzLT5pcnFzdGF0 WzBdKTsgLyogY2xlYXIgKi8KK30KKworI2VuZGlmIC8qIENPTkZJR19VU0VfSVJRICovCisKK3N0 YXRpYyBpbmxpbmUgdm9pZCBzaGlmdF9tYXNrKHUzMiAqbWFzaykKK3sKKwltYXNrWzNdID0gbWFz a1szXSA8PCAxIHwgbWFza1syXSA+PiAzMTsKKwltYXNrWzJdID0gbWFza1syXSA8PCAxIHwgbWFz a1sxXSA+PiAzMTsKKwltYXNrWzFdID0gbWFza1sxXSA8PCAxIHwgbWFza1swXSA+PiAzMTsKKwlt YXNrWzBdIDw8PSAxOworfQorCisjaWYgREVCVUdfUU1HUgordm9pZCBxbWdyX3JlcXVlc3RfcXVl dWUodW5zaWduZWQgaW50IHF1ZXVlLCB1bnNpZ25lZCBpbnQgbGVuIC8qIGR3b3JkcyAqLywKKwkJ CXVuc2lnbmVkIGludCBuZWFybHlfZW1wdHlfd2F0ZXJtYXJrLAorCQkJdW5zaWduZWQgaW50IG5l YXJseV9mdWxsX3dhdGVybWFyaywKKwkJCWNvbnN0IGNoYXIgKmRlc2NfZm9ybWF0LCBjb25zdCBj aGFyKiBuYW1lKQorI2Vsc2UKK3ZvaWQgX19xbWdyX3JlcXVlc3RfcXVldWUodW5zaWduZWQgaW50 IHF1ZXVlLCB1bnNpZ25lZCBpbnQgbGVuIC8qIGR3b3JkcyAqLywKKwkJCSAgdW5zaWduZWQgaW50 IG5lYXJseV9lbXB0eV93YXRlcm1hcmssCisJCQkgIHVuc2lnbmVkIGludCBuZWFybHlfZnVsbF93 YXRlcm1hcmspCisjZW5kaWYKK3sKKwl1MzIgY2ZnLCBhZGRyID0gMCwgbWFza1s0XTsgLyogaW4g MTYtZHdvcmRzICovCisKKwlCVUdfT04ocXVldWUgPj0gSEFMRl9RVUVVRVMpOworCUJVR19PTigo bmVhcmx5X2VtcHR5X3dhdGVybWFyayB8IG5lYXJseV9mdWxsX3dhdGVybWFyaykgJiB+Nyk7CisK Kwlzd2l0Y2ggKGxlbikgeworCWNhc2UgIDE2OgorCQljZmcgPSAwIDw8IDI0OworCQltYXNrWzBd ID0gMHgxOworCQlicmVhazsKKwljYXNlICAzMjoKKwkJY2ZnID0gMSA8PCAyNDsKKwkJbWFza1sw XSA9IDB4MzsKKwkJYnJlYWs7CisJY2FzZSAgNjQ6CisJCWNmZyA9IDIgPDwgMjQ7CisJCW1hc2tb MF0gPSAweEY7CisJCWJyZWFrOworCWNhc2UgMTI4OgorCQljZmcgPSAzIDw8IDI0OworCQltYXNr WzBdID0gMHhGRjsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJQlVHKCk7CisJfQorCisJY2ZnIHw9 IG5lYXJseV9lbXB0eV93YXRlcm1hcmsgPDwgMjY7CisJY2ZnIHw9IG5lYXJseV9mdWxsX3dhdGVy bWFyayA8PCAyOTsKKwlsZW4gLz0gMTY7IC8qIGluIDE2LWR3b3JkczogMSwgMiwgNCBvciA4ICov CisJbWFza1sxXSA9IG1hc2tbMl0gPSBtYXNrWzNdID0gMDsKKworCUJVR19PTihfX3Jhd19yZWFk bCgmcW1ncl9yZWdzLT5zcmFtW3F1ZXVlXSkpOworCisJd2hpbGUgKDEpIHsKKwkJaWYgKCEodXNl ZF9zcmFtX2JpdG1hcFswXSAmIG1hc2tbMF0pICYmCisJCSAgICAhKHVzZWRfc3JhbV9iaXRtYXBb MV0gJiBtYXNrWzFdKSAmJgorCQkgICAgISh1c2VkX3NyYW1fYml0bWFwWzJdICYgbWFza1syXSkg JiYKKwkJICAgICEodXNlZF9zcmFtX2JpdG1hcFszXSAmIG1hc2tbM10pKQorCQkJYnJlYWs7IC8q IGZvdW5kIGZyZWUgc3BhY2UgKi8KKworCQlhZGRyKys7CisJCXNoaWZ0X21hc2sobWFzayk7CisJ CWlmIChhZGRyICsgbGVuID4gQVJSQVlfU0laRShxbWdyX3JlZ3MtPnNyYW0pKSB7CisJCQlmcHJp bnRmKHN0ZGVyciwgInFtZ3I6IG5vIGZyZWUgU1JBTSBzcGFjZSBmb3IiCisJCQkJIiBxdWV1ZSAl aVxuIiwgcXVldWUpOworCQkJQlVHKCk7CisJCX0KKwl9CisKKwl1c2VkX3NyYW1fYml0bWFwWzBd IHw9IG1hc2tbMF07CisJdXNlZF9zcmFtX2JpdG1hcFsxXSB8PSBtYXNrWzFdOworCXVzZWRfc3Jh bV9iaXRtYXBbMl0gfD0gbWFza1syXTsKKwl1c2VkX3NyYW1fYml0bWFwWzNdIHw9IG1hc2tbM107 CisJX19yYXdfd3JpdGVsKGNmZyB8IChhZGRyIDw8IDE0KSwgJnFtZ3JfcmVncy0+c3JhbVtxdWV1 ZV0pOworI2lmIERFQlVHX1FNR1IKKwkvKiBubyBzbnByaW50ZigpICovCisJc3ByaW50ZihxbWdy X3F1ZXVlX2Rlc2NzW3F1ZXVlXSwgZGVzY19mb3JtYXQsIG5hbWUpOworCWZwcmludGYoc3RkZXJy LCAicW1ncjogcmVxdWVzdGVkIHF1ZXVlICVzKCVpKSBhZGRyID0gMHglMDJYXG4iLAorCQlxbWdy X3F1ZXVlX2Rlc2NzW3F1ZXVlXSwgcXVldWUsIGFkZHIpOworI2VuZGlmCit9CisKK3ZvaWQgcW1n cl9yZWxlYXNlX3F1ZXVlKHVuc2lnbmVkIGludCBxdWV1ZSkKK3sKKwl1MzIgY2ZnLCBhZGRyLCBt YXNrWzRdOworCisJQlVHX09OKHF1ZXVlID49IEhBTEZfUVVFVUVTKTsgLyogbm90IGluIHZhbGlk IHJhbmdlICovCisKKwljZmcgPSBfX3Jhd19yZWFkbCgmcW1ncl9yZWdzLT5zcmFtW3F1ZXVlXSk7 CisJYWRkciA9IChjZmcgPj4gMTQpICYgMHhGRjsKKworCUJVR19PTighYWRkcik7IC8qIG5vdCBy ZXF1ZXN0ZWQgKi8KKworCXN3aXRjaCAoKGNmZyA+PiAyNCkgJiAzKSB7CisJY2FzZSAwOiBtYXNr WzBdID0gMHgxOyBicmVhazsKKwljYXNlIDE6IG1hc2tbMF0gPSAweDM7IGJyZWFrOworCWNhc2Ug MjogbWFza1swXSA9IDB4RjsgYnJlYWs7CisJY2FzZSAzOiBtYXNrWzBdID0gMHhGRjsgYnJlYWs7 CisJfQorCisJbWFza1sxXSA9IG1hc2tbMl0gPSBtYXNrWzNdID0gMDsKKworCXdoaWxlIChhZGRy LS0pCisJCXNoaWZ0X21hc2sobWFzayk7CisKKyNpZiBERUJVR19RTUdSCisJZnByaW50ZihzdGRl cnIsICJxbWdyOiByZWxlYXNpbmcgcXVldWUgJXMoJWkpXG4iLAorCQlxbWdyX3F1ZXVlX2Rlc2Nz W3F1ZXVlXSwgcXVldWUpOworCXFtZ3JfcXVldWVfZGVzY3NbcXVldWVdWzBdID0gJ1x4MCc7Cisj ZW5kaWYKKwlfX3Jhd193cml0ZWwoMCwgJnFtZ3JfcmVncy0+c3JhbVtxdWV1ZV0pOworCisJdXNl ZF9zcmFtX2JpdG1hcFswXSAmPSB+bWFza1swXTsKKwl1c2VkX3NyYW1fYml0bWFwWzFdICY9IH5t YXNrWzFdOworCXVzZWRfc3JhbV9iaXRtYXBbMl0gJj0gfm1hc2tbMl07CisJdXNlZF9zcmFtX2Jp dG1hcFszXSAmPSB+bWFza1szXTsKKyNpZmRlZiBDT05GSUdfVVNFX0lSUQorCWlycV9oYW5kbGVy c1txdWV1ZV0gPSBOVUxMOyAvKiBjYXRjaCBJUlEgYnVncyAqLworI2VuZGlmCisKKwl3aGlsZSAo KGFkZHIgPSBxbWdyX2dldF9lbnRyeShxdWV1ZSkpKQorCQlmcHJpbnRmKHN0ZGVyciwgInFtZ3I6 IHJlbGVhc2VkIHF1ZXVlICVpIG5vdCBlbXB0eTogMHglMDhYXG4iLAorCQkJcXVldWUsIGFkZHIp OworfQorCitzdGF0aWMgaW50IF9faW5pdCBxbWdyX2luaXQodm9pZCkKK3sKKwlpbnQgaTsKKyNp ZmRlZiBDT05GSUdfVVNFX0lSUQorCWludGVycnVwdF9oYW5kbGVyX3QgKmhhbmRsZXI7CisjZW5k aWYKKworCS8qIHJlc2V0IHFtZ3IgcmVnaXN0ZXJzICovCisJZm9yIChpID0gMDsgaSA8IDQ7IGkr KykgeworCQlfX3Jhd193cml0ZWwoMHgzMzMzMzMzMywgJnFtZ3JfcmVncy0+c3RhdDFbaV0pOwor CQlfX3Jhd193cml0ZWwoMCwgJnFtZ3JfcmVncy0+aXJxc3JjW2ldKTsKKwl9CisJZm9yIChpID0g MDsgaSA8IDI7IGkrKykgeworCQlfX3Jhd193cml0ZWwoMCwgJnFtZ3JfcmVncy0+c3RhdDJbaV0p OworCQlfX3Jhd193cml0ZWwoMHhGRkZGRkZGRiwgJnFtZ3JfcmVncy0+aXJxc3RhdFtpXSk7IC8q IGNsZWFyICovCisJCV9fcmF3X3dyaXRlbCgwLCAmcW1ncl9yZWdzLT5pcnFlbltpXSk7CisJfQor CisJX19yYXdfd3JpdGVsKDB4RkZGRkZGRkYsICZxbWdyX3JlZ3MtPnN0YXRuZV9oKTsKKwlfX3Jh d193cml0ZWwoMCwgJnFtZ3JfcmVncy0+c3RhdGZfaCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgUVVF VUVTOyBpKyspCisJCV9fcmF3X3dyaXRlbCgwLCAmcW1ncl9yZWdzLT5zcmFtW2ldKTsKKworI2lm ZGVmIENPTkZJR19VU0VfSVJRCisJaWYgKGNwdV9pc19peHA0MnhfcmV2X2EwKCkpCisJCWhhbmRs ZXIgPSBxbWdyX2lycTFfYTA7CisJZWxzZQorCQloYW5kbGVyID0gcW1ncl9pcnExOworCisJaXJx X2luc3RhbGxfaGFuZGxlcihJWFA0MjVfUU0xX0lSUSwgaGFuZGxlciwgTlVMTCk7CisjZW5kaWYK Kwl1c2VkX3NyYW1fYml0bWFwWzBdID0gMHhGOyAvKiA0IGZpcnN0IHBhZ2VzIHJlc2VydmVkIGZv ciBjb25maWcgKi8KKwlyZXR1cm4gMDsKK30KKworY29yZWRldmljZV9pbml0Y2FsbChxbWdyX2lu aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L0tjb25m aWcKaW5kZXggNjlmMzM1Mi4uZGY2ZTQyYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvS2NvbmZp ZworKysgYi9kcml2ZXJzL25ldC9LY29uZmlnCkBAIC03Nyw2ICs3NywxNCBAQCBjb25maWcgRFJJ VkVSX05FVF9NQUNCCiAJZGVwZW5kcyBvbiBIQVNfTUFDQgogCXNlbGVjdCBNSUlERVYKIAorY29u ZmlnIERSSVZFUl9ORVRfSVhQNFhYX0VUSAorCXRyaXN0YXRlICJJbnRlbCBJWFA0eHggRXRoZXJu ZXQgc3VwcG9ydCIKKwlkZXBlbmRzIG9uIEFSQ0hfSVhQNFhYICYmIElYUDRYWF9OUEUgJiYgSVhQ NFhYX1FNR1IKKwlzZWxlY3QgTUlJREVWCisJaGVscAorCSAgU2F5IFkgaGVyZSBpZiB5b3Ugd2Fu dCB0byB1c2UgYnVpbHQtaW4gRXRoZXJuZXQgcG9ydHMKKwkgIG9uIElYUDR4eCBwcm9jZXNzb3Iu CisKIGNvbmZpZyBEUklWRVJfTkVUX1RBUAogCWJvb2wgInRhcCBFdGhlcm5ldCBkcml2ZXIiCiAJ ZGVwZW5kcyBvbiBMSU5VWApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvTWFrZWZpbGUgYi9kcml2 ZXJzL25ldC9NYWtlZmlsZQppbmRleCA5NmQzZDMyLi45N2NiNDRiIDEwMDY0NAotLS0gYS9kcml2 ZXJzL25ldC9NYWtlZmlsZQorKysgYi9kcml2ZXJzL25ldC9NYWtlZmlsZQpAQCAtMTEsMyArMTEs NCBAQCBvYmotJChDT05GSUdfRFJJVkVSX05FVF9NQUNCKQkJKz0gbWFjYi5vCiBvYmotJChDT05G SUdfRFJJVkVSX05FVF9UQVApCQkrPSB0YXAubwogb2JqLSQoQ09ORklHX01JSURFVikJCQkrPSBt aWlkZXYubwogb2JqLSQoQ09ORklHX05FVF9VU0IpCQkJKz0gdXNiLworb2JqLSQoQ09ORklHX0RS SVZFUl9ORVRfSVhQNFhYX0VUSCkJKz0gaXhwNHh4X2V0aC5vCmRpZmYgLS1naXQgYS9kcml2ZXJz L25ldC9peHA0eHhfZXRoLmMgYi9kcml2ZXJzL25ldC9peHA0eHhfZXRoLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhlNGRlYQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZl cnMvbmV0L2l4cDR4eF9ldGguYwpAQCAtMCwwICsxLDc2MyBAQAorLyoKKyAqIEludGVsIElYUDR4 eCBFdGhlcm5ldCBkcml2ZXIgZm9yIExpbnV4CisgKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEty enlzenRvZiBIYWxhc2EgPGtoY0BwbS53YXcucGw+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAq IHVuZGVyIHRoZSB0ZXJtcyBvZiB2ZXJzaW9uIDIgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCisgKiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4K KyAqCisgKiBFdGhlcm5ldCBwb3J0IGNvbmZpZyAoMHgwMCBpcyBub3QgcHJlc2VudCBvbiBJWFA0 MlgpOgorICoKKyAqIGxvZ2ljYWwgcG9ydAkJMHgwMAkJMHgxMAkJMHgyMAorICogTlBFCQkJMCAo TlBFLUEpCTEgKE5QRS1CKQkyIChOUEUtQykKKyAqIHBoeXNpY2FsIHBvcnQJMgkJMAkJMQorICog UlggcXVldWUgKHZhcmlhYmxlKQkyMAkJMjEJCTIyCisgKiBUWCBxdWV1ZQkJMjMJCTI0CQkyNQor ICogUlgtZnJlZSBxdWV1ZQkyNgkJMjcJCTI4CisgKiBUWC1kb25lIHF1ZXVlIGlzIGFsd2F5cyAz MSwgcGVyLXBvcnQgUlggcXVldWUgaXMgY29uZmlndXJhYmxlCisgKgorICoKKyAqIFF1ZXVlIGVu dHJpZXM6CisgKiBiaXRzIDAgLT4gMSAgLSBOUEUgSUQgKFJYIGFuZCBUWC1kb25lKQorICogYml0 cyAwIC0+IDIgIC0gcHJpb3JpdHkgKFRYLCBwZXIgODAyLjFEKQorICogYml0cyAzIC0+IDQgIC0g cG9ydCBJRCAodXNlci1zZXQ/KQorICogYml0cyA1IC0+IDMxIC0gcGh5c2ljYWwgZGVzY3JpcHRv ciBhZGRyZXNzCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGluaXQuaD4K KyNpbmNsdWRlIDxtYWxsb2MuaD4KKyNpbmNsdWRlIDxtaWlkZXYuaD4KKyNpbmNsdWRlIDxuZXQu aD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPG1hY2gvaXhwNHh4LXJlZ3MuaD4KKyNp bmNsdWRlIDxtYWNoL3BsYXRmb3JtLmg+CisjaW5jbHVkZSA8bWFjaC9jcHUuaD4KKyNpbmNsdWRl IDxtYWNoL25wZS5oPgorI2luY2x1ZGUgPG1hY2gvcW1nci5oPgorCisjZGVmaW5lIERFQlVHX0RF U0MJCTAKKyNkZWZpbmUgREVCVUdfUlgJCTAKKyNkZWZpbmUgREVCVUdfVFgJCTAKKyNkZWZpbmUg REVCVUdfUEtUX0JZVEVTCQkwCisjZGVmaW5lIERFQlVHX01ESU8JCTAKKyNkZWZpbmUgREVCVUdf T1BFTgkJMAorI2RlZmluZSBERUJVR19DTE9TRQkJMAorCisjZGVmaW5lIFJYX0RFU0NTCQkxNiAv KiBhbHNvIGxlbmd0aCBvZiBhbGwgUlggcXVldWVzICovCisjZGVmaW5lIFRYX0RFU0NTCQkxNiAv KiBhbHNvIGxlbmd0aCBvZiBhbGwgVFggcXVldWVzICovCisjZGVmaW5lIFRYRE9ORV9RVUVVRV9M RU4JMTYgLyogZHdvcmRzICovCisKKyNkZWZpbmUgTUFYX01SVQkJCTE1MzYgLyogMHg2MDAgKi8K KyNkZWZpbmUgUlhfQlVGRl9TSVpFCQlNQVhfTVJVCisKKyNkZWZpbmUgTUFYX01ESU9fUkVUUklF UwkxMDAgLyogbWljcm9zZWNvbmRzLCB0eXBpY2FsbHkgMzAgY3ljbGVzICovCisjZGVmaW5lIE1B WF9DTE9TRV9XQUlUCQkxMDAwIC8qIG1pY3Jvc2Vjb25kcywgdHlwaWNhbGx5IDItMyBjeWNsZXMg Ki8KKyNkZWZpbmUgRVRIX0FMRU4JCTYKKworI2RlZmluZSBQSFlTSUNBTF9JRChwb3J0KQkoKChw b3J0KS0+bnBlLT5pZCArIDIpICUgMykKKyNkZWZpbmUgTE9HSUNBTF9JRChwb3J0KQkoKHBvcnQp LT5ucGUtPmlkIDw8IDQpCisjZGVmaW5lIFJYX1FVRVVFKHBvcnQpCQkoKHBvcnQpLT5ucGUtPmlk ICsgMjApIC8qIGNhbiBiZSBjaGFuZ2VkICovCisjZGVmaW5lIFRYX1FVRVVFKHBvcnQpCQkoKHBv cnQpLT5ucGUtPmlkICsgMjMpCisjZGVmaW5lIFJYRlJFRV9RVUVVRShwb3J0KQkoKHBvcnQpLT5u cGUtPmlkICsgMjYpCisjZGVmaW5lIFRYRE9ORV9RVUVVRQkJMzEKKworLyogVFggQ29udHJvbCBS ZWdpc3RlcnMgKi8KKyNkZWZpbmUgVFhfQ05UUkwwX1RYX0VOCQkweDAxCisjZGVmaW5lIFRYX0NO VFJMMF9IQUxGRFVQTEVYCTB4MDIKKyNkZWZpbmUgVFhfQ05UUkwwX1JFVFJZCQkweDA0CisjZGVm aW5lIFRYX0NOVFJMMF9QQURfRU4JMHgwOAorI2RlZmluZSBUWF9DTlRSTDBfQVBQRU5EX0ZDUwkw eDEwCisjZGVmaW5lIFRYX0NOVFJMMF8yREVGRVIJMHgyMAorI2RlZmluZSBUWF9DTlRSTDBfUk1J SQkJMHg0MCAvKiByZWR1Y2VkIE1JSSAqLworI2RlZmluZSBUWF9DTlRSTDFfUkVUUklFUwkweDBG IC8qIDQgYml0cyAqLworCisvKiBSWCBDb250cm9sIFJlZ2lzdGVycyAqLworI2RlZmluZSBSWF9D TlRSTDBfUlhfRU4JCTB4MDEKKyNkZWZpbmUgUlhfQ05UUkwwX1BBRFNUUklQX0VOCTB4MDIKKyNk ZWZpbmUgUlhfQ05UUkwwX1NFTkRfRkNTCTB4MDQKKyNkZWZpbmUgUlhfQ05UUkwwX1BBVVNFX0VO CTB4MDgKKyNkZWZpbmUgUlhfQ05UUkwwX0xPT1BfRU4JMHgxMAorI2RlZmluZSBSWF9DTlRSTDBf QUREUl9GTFRSX0VOCTB4MjAKKyNkZWZpbmUgUlhfQ05UUkwwX1JYX1JVTlRfRU4JMHg0MAorI2Rl ZmluZSBSWF9DTlRSTDBfQkNBU1RfRElTCTB4ODAKKyNkZWZpbmUgUlhfQ05UUkwxX0RFRkVSX0VO CTB4MDEKKworLyogQ29yZSBDb250cm9sIFJlZ2lzdGVyICovCisjZGVmaW5lIENPUkVfUkVTRVQJ CTB4MDEKKyNkZWZpbmUgQ09SRV9SWF9GSUZPX0ZMVVNICTB4MDIKKyNkZWZpbmUgQ09SRV9UWF9G SUZPX0ZMVVNICTB4MDQKKyNkZWZpbmUgQ09SRV9TRU5EX0pBTQkJMHgwOAorI2RlZmluZSBDT1JF X01EQ19FTgkJMHgxMCAvKiBNRElPIHVzaW5nIE5QRS1CIEVUSC0wIG9ubHkgKi8KKworI2RlZmlu ZSBERUZBVUxUX1RYX0NOVFJMMAkoVFhfQ05UUkwwX1RYX0VOIHwgVFhfQ05UUkwwX1JFVFJZIHwg ICAgICAgXAorCQkJCSBUWF9DTlRSTDBfUEFEX0VOIHwgVFhfQ05UUkwwX0FQUEVORF9GQ1MgfCBc CisJCQkJIFRYX0NOVFJMMF8yREVGRVIpCisjZGVmaW5lIERFRkFVTFRfUlhfQ05UUkwwCVJYX0NO VFJMMF9SWF9FTgorI2RlZmluZSBERUZBVUxUX0NPUkVfQ05UUkwJQ09SRV9NRENfRU4KKworCisv KiBOUEUgbWVzc2FnZSBjb2RlcyAqLworI2RlZmluZSBOUEVfR0VUU1RBVFVTCQkJIDB4MDAKKyNk ZWZpbmUgTlBFX0VEQl9TRVRQT1JUQUREUkVTUwkJIDB4MDEKKyNkZWZpbmUgTlBFX0VEQl9HRVRN QUNBRERSRVNTREFUQUJBU0UJIDB4MDIKKyNkZWZpbmUgTlBFX0VEQl9TRVRNQUNBRERSRVNTU0RB VEFCQVNFCSAweDAzCisjZGVmaW5lIE5QRV9HRVRTVEFUUwkJCSAweDA0CisjZGVmaW5lIE5QRV9S RVNFVFNUQVRTCQkJIDB4MDUKKyNkZWZpbmUgTlBFX1NFVE1BWEZSQU1FTEVOR1RIUwkJIDB4MDYK KyNkZWZpbmUgTlBFX1ZMQU5fU0VUUlhUQUdNT0RFCQkgMHgwNworI2RlZmluZSBOUEVfVkxBTl9T RVRERUZBVUxUUlhWSUQJIDB4MDgKKyNkZWZpbmUgTlBFX1ZMQU5fU0VUUE9SVFZMQU5UQUJMRUVO VFJZCSAweDA5CisjZGVmaW5lIE5QRV9WTEFOX1NFVFBPUlRWTEFOVEFCTEVSQU5HRQkgMHgwQQor I2RlZmluZSBOUEVfVkxBTl9TRVRSWFFPU0VOVFJZCQkgMHgwQgorI2RlZmluZSBOUEVfVkxBTl9T RVRQT1JUSURFWFRSQUNUSU9OTU9ERSAweDBDCisjZGVmaW5lIE5QRV9TVFBfU0VUQkxPQ0tJTkdT VEFURQkgMHgwRAorI2RlZmluZSBOUEVfRldfU0VURklSRVdBTExNT0RFCQkgMHgwRQorI2RlZmlu ZSBOUEVfUENfU0VURlJBTUVDT05UUk9MRFVSQVRJT05JRCAweDBGCisjZGVmaW5lIE5QRV9QQ19T RVRBUE1BQ1RBQkxFCQkgMHgxMQorI2RlZmluZSBOUEVfU0VUTE9PUEJBQ0tfTU9ERQkJIDB4MTIK KyNkZWZpbmUgTlBFX1BDX1NFVEJTU0lEVEFCTEUJCSAweDEzCisjZGVmaW5lIE5QRV9BRERSRVNT X0ZJTFRFUl9DT05GSUcJIDB4MTQKKyNkZWZpbmUgTlBFX0FQUEVOREZDU0NPTkZJRwkJIDB4MTUK KyNkZWZpbmUgTlBFX05PVElGWV9NQUNfUkVDT1ZFUllfRE9ORQkgMHgxNgorI2RlZmluZSBOUEVf TUFDX1JFQ09WRVJZX1NUQVJUCQkgMHgxNworCitzdHJ1Y3QgZXRoX3JlZ3MgeworCXUzMiB0eF9j b250cm9sWzJdLCBfX3JlczFbMl07CQkgLyogMDAwICovCisJdTMyIHJ4X2NvbnRyb2xbMl0sIF9f cmVzMlsyXTsJCSAvKiAwMTAgKi8KKwl1MzIgcmFuZG9tX3NlZWQsIF9fcmVzM1szXTsJCSAvKiAw MjAgKi8KKwl1MzIgcGFydGlhbF9lbXB0eV90aHJlc2hvbGQsIF9fcmVzNDsJIC8qIDAzMCAqLwor CXUzMiBwYXJ0aWFsX2Z1bGxfdGhyZXNob2xkLCBfX3JlczU7CSAvKiAwMzggKi8KKwl1MzIgdHhf c3RhcnRfYnl0ZXMsIF9fcmVzNlszXTsJCSAvKiAwNDAgKi8KKwl1MzIgdHhfZGVmZXJyYWwsIHJ4 X2RlZmVycmFsLCBfX3JlczdbMl07IC8qIDA1MCAqLworCXUzMiB0eF8ycGFydF9kZWZlcnJhbFsy XSwgX19yZXM4WzJdOwkgLyogMDYwICovCisJdTMyIHNsb3RfdGltZSwgX19yZXM5WzNdOwkJIC8q IDA3MCAqLworCXUzMiBtZGlvX2NvbW1hbmRbNF07CQkJIC8qIDA4MCAqLworCXUzMiBtZGlvX3N0 YXR1c1s0XTsJCQkgLyogMDkwICovCisJdTMyIG1jYXN0X21hc2tbNl0sIF9fcmVzMTBbMl07CQkg LyogMEEwICovCisJdTMyIG1jYXN0X2FkZHJbNl0sIF9fcmVzMTFbMl07CQkgLyogMEMwICovCisJ dTMyIGludF9jbG9ja190aHJlc2hvbGQsIF9fcmVzMTJbM107CSAvKiAwRTAgKi8KKwl1MzIgaHdf YWRkcls2XSwgX19yZXMxM1s2MV07CQkgLyogMEYwICovCisJdTMyIGNvcmVfY29udHJvbDsJCQkg LyogMUZDICovCit9OworCisvKiBOUEUgbWVzc2FnZSBzdHJ1Y3R1cmUgKi8KK3N0cnVjdCBtc2cg eworCXU4IGNtZCwgZXRoX2lkLCBwYXJhbXNbNl07Cit9OworCisvKiBFdGhlcm5ldCBwYWNrZXQg ZGVzY3JpcHRvciwgMzIgYnl0ZXMgKi8KK3N0cnVjdCBkZXNjIHsKKwl1OCAqbmV4dDsgICAgLyog cG9pbnRlciB0byBuZXh0IGJ1ZmZlciwgdW51c2VkICovCisKKwl1MTYgYnVmX2xlbjsgLyogYnVm ZmVyIGxlbmd0aCAqLworCXUxNiBwa3RfbGVuOyAvKiBwYWNrZXQgbGVuZ3RoICovCisJdTggKmRh dGE7ICAgIC8qIHBvaW50ZXIgdG8gZGF0YSBidWZmZXIgaW4gUkFNICovCisJdTggZGVzdF9pZDsK Kwl1OCBzcmNfaWQ7CisJdTE2IGZsYWdzOworCXU4IHFvczsKKwl1OCBwYWRsZW47CisJdTE2IHZs YW5fdGNpOworCisJdTggZHN0X21hY1tFVEhfQUxFTl0sIHNyY19tYWNbRVRIX0FMRU5dOworfTsK Kworc3RydWN0IHBvcnQgeworCXN0cnVjdCBkZXNjIHJ4X2Rlc2NfdGFiW1JYX0RFU0NTXTsgLyog YWxpZ25tZW50OiAweDEwICovCisJc3RydWN0IGRlc2MgdHhfZGVzY190YWJbVFhfREVTQ1NdOwor CXU4ICpidWZmX3RhYjsKKwlzdHJ1Y3QgZXRoX3JlZ3MgKnJlZ3M7CisJc3RydWN0IG5wZSAqbnBl OworCXU4IGZpcm13YXJlWzRdOworCXN0cnVjdCBldGhfcGxhdF9pbmZvICpwaW5mbzsKKwlzdHJ1 Y3QgbWlpX2RldmljZSBtaWlkZXY7CisJc3RydWN0IGV0aF9kZXZpY2UgZXRoOworfTsKKworI2Rl ZmluZSByeF9idWZmKHBvcnQsIG4pICgocG9ydCktPmJ1ZmZfdGFiICsgTUFYX01SVSAqIChuKSkK KyNkZWZpbmUgdHhfYnVmZihwb3J0LCBuKSAoKHBvcnQpLT5idWZmX3RhYiArIE1BWF9NUlUgKiAo UlhfREVTQ1MgKyAobikpKQorCitzdGF0aWMgc3RydWN0IGV0aF9yZWdzICptZGlvX3JlZ3M7IC8q IG1kaW8gY29tbWFuZCBhbmQgc3RhdHVzIG9ubHkgKi8KKworc3RhdGljIGludCBpeHA0eHhfbWRp b19jbWQoaW50IHdyaXRlLCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2QgKmRldiwgdW5zaWduZWQgY2hh ciBwaHlfaWQsCisJCQkgICB1bnNpZ25lZCBjaGFyIGxvY2F0aW9uLCB1bnNpZ25lZCBzaG9ydCB2 YWx1ZSkKK3sKKwlpbnQgY3ljbGVzID0gMDsKKworCWlmIChfX3Jhd19yZWFkbCgmbWRpb19yZWdz LT5tZGlvX2NvbW1hbmRbM10pICYgMHg4MCkgeworCQlmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6IE1J SSBub3QgcmVhZHkgdG8gdHJhbnNtaXRcbiIsIGRldi0+bmFtZSwgZGV2LT5pZCk7CisJCXJldHVy biAtMTsKKwl9CisKKwlpZiAod3JpdGUpIHsKKwkJX19yYXdfd3JpdGVsKHZhbHVlICYgMHhGRiwg Jm1kaW9fcmVncy0+bWRpb19jb21tYW5kWzBdKTsKKwkJX19yYXdfd3JpdGVsKHZhbHVlID4+IDgs ICZtZGlvX3JlZ3MtPm1kaW9fY29tbWFuZFsxXSk7CisJfQorCV9fcmF3X3dyaXRlbCgoKHBoeV9p ZCA8PCA1KSB8IGxvY2F0aW9uKSAmIDB4RkYsCisJCSAgICAgJm1kaW9fcmVncy0+bWRpb19jb21t YW5kWzJdKTsKKwlfX3Jhd193cml0ZWwoKHBoeV9pZCA+PiAzKSB8ICh3cml0ZSA8PCAyKSB8IDB4 ODAgLyogR08gKi8sCisJCSAgICAgJm1kaW9fcmVncy0+bWRpb19jb21tYW5kWzNdKTsKKworCXdo aWxlICgoY3ljbGVzIDwgTUFYX01ESU9fUkVUUklFUykgJiYKKwkgICAgICAgKF9fcmF3X3JlYWRs KCZtZGlvX3JlZ3MtPm1kaW9fY29tbWFuZFszXSkgJiAweDgwKSkgeworCQl1ZGVsYXkoMSk7CisJ CWN5Y2xlcysrOworCX0KKworCWlmIChjeWNsZXMgPT0gTUFYX01ESU9fUkVUUklFUykgeworCQlm cHJpbnRmKHN0ZGVyciwgIiVzJWQ6IE1JSSB3cml0ZSBmYWlsZWRcbiIsIGRldi0+bmFtZSwgZGV2 LT5pZCk7CisJCXJldHVybiAtMTsKKwl9CisKKyNpZiBERUJVR19NRElPCisJZnByaW50ZihzdGRl cnIsICIlcyVkOiBtZGlvXyVzKCkgdG9vayAlaSBjeWNsZXNcbiIsIGRldi0+bmFtZSwgZGV2LT5p ZCwKKwkJd3JpdGUgPyAid3JpdGUiIDogInJlYWQiLCBjeWNsZXMpOworI2VuZGlmCisKKwlpZiAo d3JpdGUpCisJCXJldHVybiAwOworCisJaWYgKF9fcmF3X3JlYWRsKCZtZGlvX3JlZ3MtPm1kaW9f c3RhdHVzWzNdKSAmIDB4ODApIHsKKyNpZiBERUJVR19NRElPCisJCWZwcmludGYoc3RkZXJyLCAi JXMlZDogTUlJIHJlYWQgZmFpbGVkXG4iLCBkZXYtPm5hbWUsIGRldi0+aWQpOworI2VuZGlmCisJ CXJldHVybiAtMTsKKwl9CisKKwl2YWx1ZSA9IChfX3Jhd19yZWFkbCgmbWRpb19yZWdzLT5tZGlv X3N0YXR1c1swXSkgJiAweEZGKSB8CisJCSgoX19yYXdfcmVhZGwoJm1kaW9fcmVncy0+bWRpb19z dGF0dXNbMV0pICYgMHhGRikgPDwgOCk7CisjaWYgREVCVUdfTURJTworCWZwcmludGYoc3RkZXJy LCAiJXMlZDogTUlJIHJlYWQgWyVpXSAtPiAweCVYXG4iLCBkZXYtPm5hbWUsIGRldi0+aWQsIGxv Y2F0aW9uLCB2YWx1ZSk7CisjZW5kaWYKKworCXJldHVybiB2YWx1ZTsKK30KKworc3RhdGljIGlu dCBpeHA0eHhfbWRpb19yZWFkKHN0cnVjdCBtaWlfZGV2aWNlICptaWksIGludCBwaHlfaWQsIGlu dCBsb2NhdGlvbikKK3sKKwlpbnQgcmV0ID0gaXhwNHh4X21kaW9fY21kKDAsICZtaWktPmRldiwg cGh5X2lkLCBsb2NhdGlvbiwgMCk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBpeHA0 eHhfbWRpb193cml0ZShzdHJ1Y3QgbWlpX2RldmljZSAqbWlpLCBpbnQgcGh5X2lkLCBpbnQgbG9j YXRpb24sIGludCB2YWx1ZSkKK3sKKwlpbnQgcmV0ID0gaXhwNHh4X21kaW9fY21kKDEsICZtaWkt PmRldiwgcGh5X2lkLCBsb2NhdGlvbiwgdmFsdWUpOworI2lmIERFQlVHX01ESU8KKwlmcHJpbnRm KHN0ZGVyciwgIiVzJWQ6IE1JSSB3cml0ZSBbJWldIDwtIDB4JVgsIGVyciA9ICVpXG4iLAorCQlt aWktPmRldi5uYW1lLCBtaWktPmRldi5pZCwgbG9jYXRpb24sIHZhbHVlLCByZXQpOworI2VuZGlm CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBpeHA0eHhfYWRqdXN0X2xpbmsoc3RydWN0 IGV0aF9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgcG9ydCAqcG9ydCA9IGRldi0+cHJpdjsKKwlp bnQgcmVnLCBzcGVlZCwgZHVwbGV4OworCisJbWlpZGV2X3dhaXRfYW5lZygmcG9ydC0+bWlpZGV2 KTsKKworCXJlZyA9IG1paV9yZWFkKCZwb3J0LT5taWlkZXYsIHBvcnQtPm1paWRldi5hZGRyZXNz LCBNSUlfQk1TUik7CisJaWYgKHJlZyA8IDApCisJCWdvdG8gZXJyX291dDsKKwlpZiAoIShyZWcg JiBCTVNSX0xTVEFUVVMpKSB7CisJCXByaW50ZigiJXMlZDogTGluayBpcyBkb3duIiwgZGV2LT5k ZXYubmFtZSwgZGV2LT5kZXYuaWQpOworCQlyZXR1cm4gLTE7CisJfQorCisJcmVnID0gbWlpX3Jl YWQoJnBvcnQtPm1paWRldiwgcG9ydC0+bWlpZGV2LmFkZHJlc3MsIE1JSV9CTUNSKTsKKwlpZiAo cmVnIDwgMCkKKwkJZ290byBlcnJfb3V0OworCisJaWYgKHJlZyAmIEJNQ1JfQU5FTkFCTEUpIHsK KwkJcmVnID0gbWlpX3JlYWQoJnBvcnQtPm1paWRldiwgcG9ydC0+bWlpZGV2LmFkZHJlc3MsIE1J SV9MUEEpOworCQlpZiAocmVnIDwgMCkKKwkJCWdvdG8gZXJyX291dDsKKwkJZHVwbGV4ID0gcmVn ICYgTFBBX0RVUExFWDsKKwkJc3BlZWQgPSByZWcgJiBMUEFfMTAwID8gMTAwIDogMTA7CisJfSBl bHNlIHsKKwkJZHVwbGV4ID0gcmVnICYgQk1DUl9GVUxMRFBMWDsKKwkJc3BlZWQgPSByZWcgJiBC TUNSX1NQRUVEMTAwID8gMTAwIDogMTA7CisJfQorCisJaWYgKGR1cGxleCkKKwkJX19yYXdfd3Jp dGVsKERFRkFVTFRfVFhfQ05UUkwwICYgflRYX0NOVFJMMF9IQUxGRFVQTEVYLAorCQkJICAgICAm cG9ydC0+cmVncy0+dHhfY29udHJvbFswXSk7CisJZWxzZQorCQlfX3Jhd193cml0ZWwoREVGQVVM VF9UWF9DTlRSTDAgfCBUWF9DTlRSTDBfSEFMRkRVUExFWCwKKwkJCSAgICAgJnBvcnQtPnJlZ3Mt PnR4X2NvbnRyb2xbMF0pOworCisJZnByaW50ZihzdGRlcnIsICIlcyVkOiBsaW5rIHVwLCBzcGVl ZCAldSBNYi9zLCAlcyBkdXBsZXhcbiIsCisJCWRldi0+ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkLCBz cGVlZCwgZHVwbGV4ID8gImZ1bGwiIDogImhhbGYiKTsKKwlyZXR1cm4gMDsKKworZXJyX291dDoK KwlwcmludGYoIiVzJWQ6IGZhaWxlZCB0byByZWFkIE1JSSBkYXRhXG4iLCBkZXYtPmRldi5uYW1l LCBkZXYtPmRldi5pZCk7CisJcmV0dXJuIC1FSU87Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBk ZWJ1Z19wa3Qoc3RydWN0IGV0aF9kZXZpY2UgKmRldiwgY29uc3QgY2hhciAqZnVuYywKKwkJCSAg ICAgdTggKmRhdGEsIGludCBsZW4pCit7CisjaWYgREVCVUdfUEtUX0JZVEVTCisJaW50IGk7CisK KwlmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6ICVzKCU0aSkgIiwgZGV2LT5kZXYubmFtZSwgZGV2LT5k ZXYuaWQsIGZ1bmMsIGxlbik7CisJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisJCWlmIChp ID49IERFQlVHX1BLVF9CWVRFUykKKwkJCWJyZWFrOworCQlmcHJpbnRmKHN0ZGVyciwgIiVzJTAy WCIsCisJCQkoKGkgPT0gNikgfHwgKGkgPT0gMTIpIHx8IChpID49IDE0KSkgPyAiICIgOiAiIiwK KwkJCWRhdGFbaV0pOworCX0KKwlmcHJpbnRmKHN0ZGVyciwgIlxuIik7CisjZW5kaWYKK30KKwor CitzdGF0aWMgaW5saW5lIHZvaWQgZGVidWdfZGVzYyhzdHJ1Y3QgZGVzYyAqZGVzYykKK3sKKyNp ZiBERUJVR19ERVNDCisJZnByaW50ZihzdGRlcnIsICIlMDdYOiAlWCAlM1ggJTNYICUwN1ggJTJY IDwgJTJYICU0WCAlWCIKKwkJIiAlWCAlWCAlMDJYJTAyWCUwMlglMDJYJTAyWCUwMlggPCAlMDJY JTAyWCUwMlglMDJYJTAyWCUwMlhcbiIsCisJCSh1MzIpZGVzYywgKHUzMilkZXNjLT5uZXh0LCBk ZXNjLT5idWZfbGVuLCBkZXNjLT5wa3RfbGVuLAorCQkodTMyKWRlc2MtPmRhdGEsIGRlc2MtPmRl c3RfaWQsIGRlc2MtPnNyY19pZCwgZGVzYy0+ZmxhZ3MsCisJCWRlc2MtPnFvcywgZGVzYy0+cGFk bGVuLCBkZXNjLT52bGFuX3RjaSwKKwkJZGVzYy0+ZHN0X21hY1swXSwgZGVzYy0+ZHN0X21hY1sx XSwgZGVzYy0+ZHN0X21hY1syXSwKKwkJZGVzYy0+ZHN0X21hY1szXSwgZGVzYy0+ZHN0X21hY1s0 XSwgZGVzYy0+ZHN0X21hY1s1XSwKKwkJZGVzYy0+c3JjX21hY1swXSwgZGVzYy0+c3JjX21hY1sx XSwgZGVzYy0+c3JjX21hY1syXSwKKwkJZGVzYy0+c3JjX21hY1szXSwgZGVzYy0+c3JjX21hY1s0 XSwgZGVzYy0+c3JjX21hY1s1XSk7CisjZW5kaWYKK30KKworc3RhdGljIGlubGluZSBpbnQgcXVl dWVfZ2V0X2Rlc2ModW5zaWduZWQgaW50IHF1ZXVlLCBzdHJ1Y3QgcG9ydCAqcG9ydCwKKwkJCQkg aW50IGlzX3R4KQoreworCXUzMiBhZGRyLCBuOworCXN0cnVjdCBkZXNjICp0YWI7CisKKwlpZiAo IShhZGRyID0gcW1ncl9nZXRfZW50cnkocXVldWUpKSkKKwkJcmV0dXJuIC0xOworCisJYWRkciAm PSB+MHgxRjsgLyogbWFzayBvdXQgbm9uLWFkZHJlc3MgYml0cyAqLworCXRhYiA9IGlzX3R4ID8g cG9ydC0+dHhfZGVzY190YWIgOiBwb3J0LT5yeF9kZXNjX3RhYjsKKwluID0gKGFkZHIgLSAodTMy KXRhYikgLyBzaXplb2Yoc3RydWN0IGRlc2MpOworCUJVR19PTihuID49IChpc190eCA/IFRYX0RF U0NTIDogUlhfREVTQ1MpKTsKKwlkZWJ1Z19kZXNjKChzdHJ1Y3QgZGVzYyopYWRkcik7CisJQlVH X09OKHRhYltuXS5uZXh0KTsKKwlyZXR1cm4gbjsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHF1 ZXVlX3B1dF9kZXNjKHVuc2lnbmVkIGludCBxdWV1ZSwgc3RydWN0IGRlc2MgKmRlc2MpCit7CisJ ZGVidWdfZGVzYyhkZXNjKTsKKwlCVUdfT04oKCh1MzIpZGVzYykgJiAweDFGKTsKKwlxbWdyX3B1 dF9lbnRyeShxdWV1ZSwgKHUzMilkZXNjKTsKKwkvKiBEb24ndCBjaGVjayBmb3IgcXVldWUgb3Zl cmZsb3cgaGVyZSwgd2UndmUgYWxsb2NhdGVkIHN1ZmZpY2llbnQKKwkgICBsZW5ndGggYW5kIHF1 ZXVlcyA+PSAzMiBkb24ndCBzdXBwb3J0IHRoaXMgY2hlY2sgYW55d2F5LiAqLworfQorCisKK3N0 YXRpYyBpbnQgaXhwNHh4X2V0aF9wb2xsKHN0cnVjdCBldGhfZGV2aWNlICpkZXYpCit7CisJc3Ry dWN0IHBvcnQgKnBvcnQgPSBkZXYtPnByaXY7CisJc3RydWN0IGRlc2MgKmRlc2M7CisJdTggKmJ1 ZmY7CisJaW50IG4sIGxlbjsKKworI2lmIERFQlVHX1JYCisJZnByaW50ZihzdGRlcnIsICIlcyVk OiBldGhfcG9sbFxuIiwgZGV2LT5kZXYubmFtZSwgZGV2LT5kZXYuaWQpOworI2VuZGlmCisKKwlp ZiAoKG4gPSBxdWV1ZV9nZXRfZGVzYyhSWF9RVUVVRShwb3J0KSwgcG9ydCwgMCkpIDwgMCkgewor I2lmIERFQlVHX1JYCisJCWZwcmludGYoc3RkZXJyLCAiJXMlZDogZXRoX3BvbGwgPSBubyBwYWNr ZXQgcmVjZWl2ZWRcbiIsIGRldi0+ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkKTsKKyNlbmRpZgorCQly ZXR1cm4gMDsKKwl9CisKKwliYXJyaWVyKCk7CisJZGVzYyA9ICZwb3J0LT5yeF9kZXNjX3RhYltu XTsKKwlidWZmID0gcnhfYnVmZihwb3J0LCBuKTsKKwlsZW4gPSBkZXNjLT5wa3RfbGVuOworCS8q IHByb2Nlc3MgcmVjZWl2ZWQgZnJhbWUgKi8KKwltZW1jcHkoKHZvaWQgKilOZXRSeFBhY2tldHNb MF0sIGJ1ZmYsIGxlbik7CisJZGVidWdfcGt0KGRldiwgIlJYIiwgZGVzYy0+ZGF0YSwgbGVuKTsK KworCS8qIHB1dCB0aGUgbmV3IGJ1ZmZlciBvbiBSWC1mcmVlIHF1ZXVlICovCisJZGVzYy0+YnVm X2xlbiA9IE1BWF9NUlU7CisJZGVzYy0+cGt0X2xlbiA9IDA7CisJcXVldWVfcHV0X2Rlc2MoUlhG UkVFX1FVRVVFKHBvcnQpLCBkZXNjKTsKKworCW5ldF9yZWNlaXZlKE5ldFJ4UGFja2V0c1swXSwg bGVuKTsKKworI2lmIERFQlVHX1JYCisJZnByaW50ZihzdGRlcnIsICIlcyVkOiBldGhfcG9sbCBl bmRcbiIsIGRldi0+ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkKTsKKyNlbmRpZgorCXJldHVybiAwOwor fQorCisKK3N0YXRpYyBpbnQgaXhwNHh4X2V0aF94bWl0KHN0cnVjdCBldGhfZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsIGludCBsZW4pCit7CisJc3RydWN0IHBvcnQgKnBvcnQgPSBkZXYtPnByaXY7 CisJaW50IG47CisJc3RydWN0IGRlc2MgKmRlc2M7CisKKyNpZiBERUJVR19UWAorCWZwcmludGYo c3RkZXJyLCAiJXMlZDogZXRoX3htaXRcbiIsIGRldi0+ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkKTsK KyNlbmRpZgorCisJaWYgKHVubGlrZWx5KGxlbiA+IDE1MDApKQorCQlyZXR1cm4gLTE7CisKKwlk ZWJ1Z19wa3QoZGV2LCAiVFgiLCBkYXRhLCBsZW4pOworCisJaWYgKChuID0gcXVldWVfZ2V0X2Rl c2MoVFhET05FX1FVRVVFLCBwb3J0LCAxKSkgPCAwKQorCQlyZXR1cm4gLTE7IC8qIG5vIGZyZWUg YnVmZmVycyAqLworCWRlc2MgPSAmcG9ydC0+dHhfZGVzY190YWJbbl07CisJZGVzYy0+ZGF0YSA9 IHR4X2J1ZmYocG9ydCwgbik7CisJZGVzYy0+YnVmX2xlbiA9IGRlc2MtPnBrdF9sZW4gPSBsZW47 CisJbWVtY3B5KGRlc2MtPmRhdGEsIGRhdGEsIGxlbik7CisKKwkvKiBOUEUgZmlybXdhcmUgcGFk cyBzaG9ydCBmcmFtZXMgd2l0aCB6ZXJvcyBpbnRlcm5hbGx5ICovCisJLy8gd21iKCk7CisJYmFy cmllcigpOworCXF1ZXVlX3B1dF9kZXNjKFRYX1FVRVVFKHBvcnQpLCBkZXNjKTsKKworI2lmIERF QlVHX1RYCisJZnByaW50ZihzdGRlcnIsICIlcyVkOiBldGhfeG1pdCBlbmRcbiIsIGRldi0+ZGV2 Lm5hbWUsIGRldi0+ZGV2LmlkKTsKKyNlbmRpZgorCXJldHVybiAwOworfQorCitzdGF0aWMgdm9p ZCByZXF1ZXN0X3F1ZXVlcyhzdHJ1Y3QgcG9ydCAqcG9ydCwgc3RydWN0IGV0aF9kZXZpY2UgKmRl dikKK3sKKwlxbWdyX3JlcXVlc3RfcXVldWUoUlhGUkVFX1FVRVVFKHBvcnQpLCBSWF9ERVNDUywg MCwgMCwgIiVzOlJYLWZyZWUiLCBkZXYtPmRldi5uYW1lKTsKKwlxbWdyX3JlcXVlc3RfcXVldWUo UlhfUVVFVUUocG9ydCksIFJYX0RFU0NTLCAwLCAwLCAiJXM6UlgiLCBkZXYtPmRldi5uYW1lKTsK KwlxbWdyX3JlcXVlc3RfcXVldWUoVFhfUVVFVUUocG9ydCksIFRYX0RFU0NTLCAwLCAwLCAiJXM6 VFgiLCBkZXYtPmRldi5uYW1lKTsKKworCS8qIENvbW1vbiBUWC1kb25lIHF1ZXVlIGhhbmRsZXMg YnVmZmVycyBzZW50IG91dCBieSB0aGUgTlBFcyAqLworCXFtZ3JfcmVxdWVzdF9xdWV1ZShUWERP TkVfUVVFVUUsIFRYRE9ORV9RVUVVRV9MRU4sIDAsIDAsCisJCQkgICAiJXM6VFgtZG9uZSIsIGRl di0+ZGV2Lm5hbWUpOworfQorCitzdGF0aWMgdm9pZCByZWxlYXNlX3F1ZXVlcyhzdHJ1Y3QgcG9y dCAqcG9ydCkKK3sKKwlxbWdyX3JlbGVhc2VfcXVldWUoUlhGUkVFX1FVRVVFKHBvcnQpKTsKKwlx bWdyX3JlbGVhc2VfcXVldWUoUlhfUVVFVUUocG9ydCkpOworCXFtZ3JfcmVsZWFzZV9xdWV1ZShU WF9RVUVVRShwb3J0KSk7CisJcW1ncl9yZWxlYXNlX3F1ZXVlKFRYRE9ORV9RVUVVRSk7Cit9CisK K3N0YXRpYyB2b2lkIGluaXRfcXVldWVzKHN0cnVjdCBwb3J0ICpwb3J0KQoreworCWludCBpOwor CisJbWVtc2V0KHBvcnQtPnR4X2Rlc2NfdGFiLCAwLCBzaXplb2YocG9ydC0+dHhfZGVzY190YWIp KTsgLyogZGVzY3MgKi8KKwltZW1zZXQocG9ydC0+cnhfZGVzY190YWIsIDAsIHNpemVvZihwb3J0 LT5yeF9kZXNjX3RhYikpOworCisJLyogU2V0dXAgUlggYnVmZmVycyAqLworCWZvciAoaSA9IDA7 IGkgPCBSWF9ERVNDUzsgaSsrKSB7CisJCXN0cnVjdCBkZXNjICpkZXNjID0gJnBvcnQtPnJ4X2Rl c2NfdGFiW2ldOworCQlkZXNjLT5idWZfbGVuID0gTUFYX01SVTsKKwkJZGVzYy0+ZGF0YSA9IHJ4 X2J1ZmYocG9ydCwgaSk7CisJfQorfQorCitzdGF0aWMgaW50IGl4cDR4eF9ldGhfb3BlbihzdHJ1 Y3QgZXRoX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBwb3J0ICpwb3J0ID0gZGV2LT5wcml2Owor CXN0cnVjdCBucGUgKm5wZSA9IHBvcnQtPm5wZTsKKwlzdHJ1Y3QgbXNnIG1zZzsKKwlpbnQgaSwg ZXJyOworCisjaWYgREVCVUdfT1BFTgorCWZwcmludGYoc3RkZXJyLCAiJXMlZDogb3BlbmluZyAl cFxuIiwgZGV2LT5kZXYubmFtZSwgZGV2LT5kZXYuaWQsIGRldik7CisjZW5kaWYKKworCWlmICgh bnBlX3J1bm5pbmcobnBlKSkgeworCQllcnIgPSBucGVfbG9hZF9maXJtd2FyZShucGUpOworCQlp ZiAoZXJyKQorCQkJcmV0dXJuIGVycjsKKworCQlpZiAobnBlX3JlY3ZfbWVzc2FnZShucGUsICZt c2csICJFVEhfR0VUX1NUQVRVUyIpKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6ICVzIG5v dCByZXNwb25kaW5nXG4iLCBkZXYtPmRldi5uYW1lLCBkZXYtPmRldi5pZCwgbnBlLT5uYW1lKTsK KwkJCXJldHVybiAtRUlPOworCQl9CisJCW1lbWNweShwb3J0LT5maXJtd2FyZSwgbXNnLnBhcmFt cyArIDIsIDQpOworCX0KKworCWlmIChpeHA0eHhfYWRqdXN0X2xpbmsoZGV2KSkKKwkJcmV0dXJu IC1FTk9MSU5LOworCisJcG9ydC0+YnVmZl90YWIgPSB4bWFsbG9jKChSWF9ERVNDUyArIFRYX0RF U0NTKSAqIE1BWF9NUlUpOworCisJbWVtc2V0KCZtc2csIDAsIHNpemVvZihtc2cpKTsKKwltc2cu Y21kID0gTlBFX1ZMQU5fU0VUUlhRT1NFTlRSWTsKKwltc2cuZXRoX2lkID0gTE9HSUNBTF9JRChw b3J0KTsKKwltc2cucGFyYW1zWzNdID0gUlhfUVVFVUUocG9ydCkgfCAweDgwOworCW1zZy5wYXJh bXNbNF0gPSBSWF9RVUVVRShwb3J0KSA+PiA0OyAvKiBNU0Igb2Ygb2Zmc2V0ICovCisJbXNnLnBh cmFtc1s1XSA9IFJYX1FVRVVFKHBvcnQpIDw8IDQ7IC8qIExTQiBvZiBvZmZzZXQgKi8KKwlmb3Ig KGkgPSAwOyBpIDwgODsgaSsrKSB7CisJCW1zZy5wYXJhbXNbMV0gPSBpOworCQlpZiAobnBlX3Nl bmRfcmVjdl9tZXNzYWdlKHBvcnQtPm5wZSwgJm1zZywgIkVUSF9TRVRfUlhRIikpIHsKKwkJCWVy ciA9IC1FSU87CisJCQlnb3RvIG91dDsKKwkJfQorCX0KKworCW1zZy5jbWQgPSBOUEVfRURCX1NF VFBPUlRBRERSRVNTOworCW1zZy5ldGhfaWQgPSBQSFlTSUNBTF9JRChwb3J0KTsKKwltZW1jcHko bXNnLnBhcmFtcywgcG9ydC0+cGluZm8tPmh3YWRkciwgRVRIX0FMRU4pOworCWlmIChucGVfc2Vu ZF9yZWN2X21lc3NhZ2UocG9ydC0+bnBlLCAmbXNnLCAiRVRIX1NFVF9NQUMiKSkgeworCQllcnIg PSAtRUlPOworCQlnb3RvIG91dDsKKwl9CisKKwltZW1zZXQoJm1zZywgMCwgc2l6ZW9mKG1zZykp OworCW1zZy5jbWQgPSBOUEVfRldfU0VURklSRVdBTExNT0RFOworCW1zZy5ldGhfaWQgPSBMT0dJ Q0FMX0lEKHBvcnQpOworCWlmIChucGVfc2VuZF9yZWN2X21lc3NhZ2UocG9ydC0+bnBlLCAmbXNn LCAiRVRIX1NFVF9GSVJFV0FMTF9NT0RFIikpIHsKKwkJZXJyID0gLUVJTzsKKwkJZ290byBvdXQ7 CisJfQorCisJcmVxdWVzdF9xdWV1ZXMocG9ydCwgZGV2KTsKKwlpbml0X3F1ZXVlcyhwb3J0KTsK KworCWZvciAoaSA9IDA7IGkgPCBFVEhfQUxFTjsgaSsrKQorCQlfX3Jhd193cml0ZWwocG9ydC0+ cGluZm8tPmh3YWRkcltpXSwgJnBvcnQtPnJlZ3MtPmh3X2FkZHJbaV0pOworCV9fcmF3X3dyaXRl bCgweDA4LCAmcG9ydC0+cmVncy0+cmFuZG9tX3NlZWQpOworCV9fcmF3X3dyaXRlbCgweDEyLCAm cG9ydC0+cmVncy0+cGFydGlhbF9lbXB0eV90aHJlc2hvbGQpOworCV9fcmF3X3dyaXRlbCgweDMw LCAmcG9ydC0+cmVncy0+cGFydGlhbF9mdWxsX3RocmVzaG9sZCk7CisJX19yYXdfd3JpdGVsKDB4 MDgsICZwb3J0LT5yZWdzLT50eF9zdGFydF9ieXRlcyk7CisJX19yYXdfd3JpdGVsKDB4MTUsICZw b3J0LT5yZWdzLT50eF9kZWZlcnJhbCk7CisJX19yYXdfd3JpdGVsKDB4MDgsICZwb3J0LT5yZWdz LT50eF8ycGFydF9kZWZlcnJhbFswXSk7CisJX19yYXdfd3JpdGVsKDB4MDcsICZwb3J0LT5yZWdz LT50eF8ycGFydF9kZWZlcnJhbFsxXSk7CisJX19yYXdfd3JpdGVsKDB4ODAsICZwb3J0LT5yZWdz LT5zbG90X3RpbWUpOworCV9fcmF3X3dyaXRlbCgweDAxLCAmcG9ydC0+cmVncy0+aW50X2Nsb2Nr X3RocmVzaG9sZCk7CisKKwkvKiBQb3B1bGF0ZSBxdWV1ZXMgd2l0aCBidWZmZXJzLCBubyBmYWls dXJlIGFmdGVyIHRoaXMgcG9pbnQgKi8KKwlmb3IgKGkgPSAwOyBpIDwgVFhfREVTQ1M7IGkrKykK KwkJcXVldWVfcHV0X2Rlc2MoVFhET05FX1FVRVVFLCAmcG9ydC0+dHhfZGVzY190YWJbaV0pOwor CisJZm9yIChpID0gMDsgaSA8IFJYX0RFU0NTOyBpKyspCisJCXF1ZXVlX3B1dF9kZXNjKFJYRlJF RV9RVUVVRShwb3J0KSwgJnBvcnQtPnJ4X2Rlc2NfdGFiW2ldKTsKKworCV9fcmF3X3dyaXRlbChU WF9DTlRSTDFfUkVUUklFUywgJnBvcnQtPnJlZ3MtPnR4X2NvbnRyb2xbMV0pOworCV9fcmF3X3dy aXRlbChERUZBVUxUX1RYX0NOVFJMMCwgJnBvcnQtPnJlZ3MtPnR4X2NvbnRyb2xbMF0pOworCV9f cmF3X3dyaXRlbCgwLCAmcG9ydC0+cmVncy0+cnhfY29udHJvbFsxXSk7CisJX19yYXdfd3JpdGVs KERFRkFVTFRfUlhfQ05UUkwwLCAmcG9ydC0+cmVncy0+cnhfY29udHJvbFswXSk7CisKKyNpZiAw CisJcW1ncl9zZXRfaXJxKFJYX1FVRVVFKHBvcnQpLCBRVUVVRV9JUlFfU1JDX05PVF9FTVBUWSwK KwkJICAgICBldGhfcnhfaXJxLCBkZXYpOworCXFtZ3Jfc2V0X2lycShUWERPTkVfUVVFVUUsIFFV RVVFX0lSUV9TUkNfTk9UX0VNUFRZLAorCQkgICAgIGV0aF90eGRvbmVfaXJxLCBOVUxMKTsKKwlx bWdyX2VuYWJsZV9pcnEoVFhET05FX1FVRVVFKTsKKyNlbmRpZgorCW1lbXNldCgmbXNnLCAwLCBz aXplb2YobXNnKSk7CisjaWYgREVCVUdfT1BFTgorCWZwcmludGYoc3RkZXJyLCAiJXMlZCBvcGVu ZWRcbiIsIGRldi0+ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkKTsKKyNlbmRpZgorCXJldHVybiAwOwor b3V0OgorCWZyZWUocG9ydC0+YnVmZl90YWIpOworCXBvcnQtPmJ1ZmZfdGFiID0gTlVMTDsKKyNp ZiBERUJVR19PUEVOCisJZnByaW50ZihzdGRlcnIsICIlcyVkIG9wZW4gZmFpbGVkICglaSlcbiIs IGRldi0+ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkLCBlcnIpOworI2VuZGlmCisJcmV0dXJuIGVycjsK K30KKworc3RhdGljIHZvaWQgaXhwNHh4X2V0aF9jbG9zZShzdHJ1Y3QgZXRoX2RldmljZSAqZGV2 KQoreworCXN0cnVjdCBwb3J0ICpwb3J0ID0gZGV2LT5wcml2OworCXN0cnVjdCBtc2cgbXNnOwor CWludCBidWZmcyA9IFJYX0RFU0NTOyAvKiBhbGxvY2F0ZWQgUlggYnVmZmVycyAqLworCWludCBp OworCisjaWYgREVCVUdfQ0xPU0UKKwlmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6IGNsb3NpbmdcbiIs IGRldi0+ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkKTsKKyNlbmRpZgorI2lmIDAKKwlxbWdyX2Rpc2Fi bGVfaXJxKFJYX1FVRVVFKHBvcnQpKTsKKyNlbmRpZgorCisJaWYgKCFwb3J0LT5idWZmX3RhYikK KwkJcmV0dXJuOyAvKiBhbHJlYWR5IGNsb3NlZCAqLworCisJd2hpbGUgKHF1ZXVlX2dldF9kZXNj KFJYRlJFRV9RVUVVRShwb3J0KSwgcG9ydCwgMCkgPj0gMCkKKwkJYnVmZnMtLTsKKworCW1lbXNl dCgmbXNnLCAwLCBzaXplb2YobXNnKSk7CisJbXNnLmNtZCA9IE5QRV9TRVRMT09QQkFDS19NT0RF OworCW1zZy5ldGhfaWQgPSBMT0dJQ0FMX0lEKHBvcnQpOworCW1zZy5wYXJhbXNbMV0gPSAxOwor CWlmIChucGVfc2VuZF9yZWN2X21lc3NhZ2UocG9ydC0+bnBlLCAmbXNnLCAiRVRIX0VOQUJMRV9M T09QQkFDSyIpKQorCQlmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6IHVuYWJsZSB0byBlbmFibGUgbG9v cGJhY2tcbiIsIGRldi0+ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkKTsKKworI2lmIERFQlVHX0NMT1NF CisJZnByaW50ZihzdGRlcnIsICIlcyVkOiBkcmFpbmluZyBSWCBxdWV1ZVxuIiwgZGV2LT5kZXYu bmFtZSwgZGV2LT5kZXYuaWQpOworI2VuZGlmCisJaSA9IDA7CisJZG8geyAvKiBkcmFpbiBSWCBi dWZmZXJzICovCisJCXdoaWxlIChxdWV1ZV9nZXRfZGVzYyhSWF9RVUVVRShwb3J0KSwgcG9ydCwg MCkgPj0gMCkKKwkJCWJ1ZmZzLS07CisJCWlmICghYnVmZnMpCisJCQlicmVhazsKKwkJaWYgKHFt Z3Jfc3RhdF9mdWxsKFRYRE9ORV9RVUVVRSkgJiYgIShpICUgMTApKSB7CisJCQkvKiB3ZSBoYXZl IHRvIGluamVjdCBzb21lIHBhY2tldCAqLworCQkJc3RydWN0IGRlc2MgKmRlc2M7CisJCQlpbnQg biA9IHF1ZXVlX2dldF9kZXNjKFRYRE9ORV9RVUVVRSwgcG9ydCwgMSk7CisJCQlCVUdfT04obiA8 IDApOworCQkJZGVzYyA9ICZwb3J0LT50eF9kZXNjX3RhYltuXTsKKwkJCWRlc2MtPmJ1Zl9sZW4g PSBkZXNjLT5wa3RfbGVuID0gMTsKKwkJCS8vd21iKCk7CisJCQliYXJyaWVyKCk7CisJCQlxdWV1 ZV9wdXRfZGVzYyhUWF9RVUVVRShwb3J0KSwgZGVzYyk7CisJCX0KKwkJdWRlbGF5KDEpOworCX0g d2hpbGUgKCsraSA8IE1BWF9DTE9TRV9XQUlUKTsKKworCWlmIChidWZmcykKKwkJZnByaW50Zihz dGRlcnIsICIlcyVkOiB1bmFibGUgdG8gZHJhaW4gUlggcXVldWUsICVpIGJ1ZmZlcihzKSBsZWZ0 IGluIE5QRVxuIiwKKwkJCWRldi0+ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkLCBidWZmcyk7CisjaWYg REVCVUdfQ0xPU0UKKwlpZiAoIWJ1ZmZzKQorCQlmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6IGRyYWlu aW5nIFJYIHF1ZXVlIHRvb2sgJWkgY3ljbGVzXG4iLCBkZXYtPmRldi5uYW1lLCBkZXYtPmRldi5p ZCwgaSk7CisjZW5kaWYKKworCWJ1ZmZzID0gVFhfREVTQ1M7CisJd2hpbGUgKHF1ZXVlX2dldF9k ZXNjKFRYX1FVRVVFKHBvcnQpLCBwb3J0LCAxKSA+PSAwKQorCQlidWZmcy0tOyAvKiBjYW5jZWwg VFggKi8KKworCWkgPSAwOworCWRvIHsKKwkJd2hpbGUgKHF1ZXVlX2dldF9kZXNjKFRYRE9ORV9R VUVVRSwgcG9ydCwgMSkgPj0gMCkKKwkJCWJ1ZmZzLS07CisJCWlmICghYnVmZnMpCisJCQlicmVh azsKKwl9IHdoaWxlICgrK2kgPCBNQVhfQ0xPU0VfV0FJVCk7CisKKwlpZiAoYnVmZnMpCisJCWZw cmludGYoc3RkZXJyLCAiJXMlZDogdW5hYmxlIHRvIGRyYWluIFRYIHF1ZXVlLCAlaSBidWZmZXIo cykgbGVmdCBpbiBOUEVcbiIsCisJCQlkZXYtPmRldi5uYW1lLCBkZXYtPmRldi5pZCwgYnVmZnMp OworI2lmIERFQlVHX0NMT1NFCisJaWYgKCFidWZmcykKKwkJZnByaW50ZihzdGRlcnIsICIlcyVk OiBkcmFpbmluZyBUWCBxdWV1ZXMgdG9vayAlaSBjeWNsZXNcbiIsIGRldi0+ZGV2Lm5hbWUsIGRl di0+ZGV2LmlkLCBpKTsKKyNlbmRpZgorCisJbXNnLnBhcmFtc1sxXSA9IDA7CisJaWYgKG5wZV9z ZW5kX3JlY3ZfbWVzc2FnZShwb3J0LT5ucGUsICZtc2csICJFVEhfRElTQUJMRV9MT09QQkFDSyIp KQorCQlmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6IHVuYWJsZSB0byBkaXNhYmxlIGxvb3BiYWNrXG4i LCBkZXYtPmRldi5uYW1lLCBkZXYtPmRldi5pZCk7CisKKyNpZiAwCisJcW1ncl9kaXNhYmxlX2ly cShUWERPTkVfUVVFVUUpOworI2VuZGlmCisJcmVsZWFzZV9xdWV1ZXMocG9ydCk7CisJZnJlZShw b3J0LT5idWZmX3RhYik7CisJcG9ydC0+YnVmZl90YWIgPSBOVUxMOworI2lmIERFQlVHX0NMT1NF CisJZnByaW50ZihzdGRlcnIsICIlcyVkOiBjbG9zZWRcbiIsIGRldi0+ZGV2Lm5hbWUsIGRldi0+ ZGV2LmlkKTsKKyNlbmRpZgorfQorCitzdGF0aWMgaW50IGl4cDR4eF9ldGhfZ2V0X2h3YWRkcihz dHJ1Y3QgZXRoX2RldmljZSAqZXRoLCB1bnNpZ25lZCBjaGFyICphZGRyKQoreworCXN0cnVjdCBw b3J0ICpwb3J0ID0gZXRoLT5wcml2OworCW1lbWNweShhZGRyLCBwb3J0LT5waW5mby0+aHdhZGRy LCA2KTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBpeHA0eHhfZXRoX3NldF9od2FkZHIo c3RydWN0IGV0aF9kZXZpY2UgKmV0aCwgdW5zaWduZWQgY2hhciAqYWRkcikKK3sKKwlzdHJ1Y3Qg cG9ydCAqcG9ydCA9IGV0aC0+cHJpdjsKKwltZW1jcHkocG9ydC0+cGluZm8tPmh3YWRkciwgYWRk ciwgNik7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaXhwNHh4X2V0aF9pbml0KHN0cnVj dCBldGhfZGV2aWNlICpldGgpCit7CisJc3RydWN0IHBvcnQgKnBvcnQgPSBldGgtPnByaXY7CisK KwlfX3Jhd193cml0ZWwoREVGQVVMVF9DT1JFX0NOVFJMIHwgQ09SRV9SRVNFVCwKKwkJICAgICAm cG9ydC0+cmVncy0+Y29yZV9jb250cm9sKTsKKwl1ZGVsYXkoNTApOworCV9fcmF3X3dyaXRlbChE RUZBVUxUX0NPUkVfQ05UUkwsICZwb3J0LT5yZWdzLT5jb3JlX2NvbnRyb2wpOworCXVkZWxheSg1 MCk7CisKKwltaWlkZXZfcmVzdGFydF9hbmVnKCZwb3J0LT5taWlkZXYpOworCXJldHVybiAwOwor fQorCitzdGF0aWMgaW50IGl4cDR4eF9ldGhfcHJvYmUoc3RydWN0IGRldmljZV9kICpkZXYpCit7 CisJc3RydWN0IG5wZSAqbnBlOworCXN0cnVjdCBwb3J0ICpwb3J0OworCXN0cnVjdCBldGhfcGxh dF9pbmZvICpwaW5mbyA9IGRldi0+cGxhdGZvcm1fZGF0YTsKKworCWlmICghcGluZm8pIHsKKwkJ ZnByaW50ZihzdGRlcnIsICJpeHA0eHhfZXRoOiBubyBwbGF0Zm9ybSBpbmZvcm1hdGlvblxuIik7 CisJCXJldHVybiAtRU5PREVWOworCX0KKworCWlmICghKG5wZSA9IG5wZV9yZXF1ZXN0KHBpbmZv LT5ucGUpKSkgeworCQlmcHJpbnRmKHN0ZGVyciwgIml4cDR4eF9ldGg6IHVuYWJsZSB0byBhY3F1 aXJlIE5QRVxuIik7CisJCXJldHVybiAtRU5PREVWOworCX0KKworCXBvcnQgPSB4bWVtYWxpZ24o MHgyMCwgc2l6ZW9mKCpwb3J0KSk7CisJbWVtc2V0KHBvcnQsIDAsIHNpemVvZigqcG9ydCkpOwor CisJcG9ydC0+cmVncyA9IHBpbmZvLT5yZWdzOworCXBvcnQtPm5wZSA9IG5wZTsKKwlwb3J0LT5w aW5mbyA9IHBpbmZvOworCXBvcnQtPmV0aC5kZXYuaWQgPSAtMTsKKwlwb3J0LT5ldGgucHJpdiA9 IHBvcnQ7CisJcG9ydC0+ZXRoLmluaXQgPSBpeHA0eHhfZXRoX2luaXQ7CisJcG9ydC0+ZXRoLm9w ZW4gPSBpeHA0eHhfZXRoX29wZW47CisJcG9ydC0+ZXRoLmhhbHQgPSBpeHA0eHhfZXRoX2Nsb3Nl OworCXBvcnQtPmV0aC5zZW5kID0gaXhwNHh4X2V0aF94bWl0OworCXBvcnQtPmV0aC5yZWN2ID0g aXhwNHh4X2V0aF9wb2xsOworCXBvcnQtPmV0aC5nZXRfZXRoYWRkciA9IGl4cDR4eF9ldGhfZ2V0 X2h3YWRkcjsKKwlwb3J0LT5ldGguc2V0X2V0aGFkZHIgPSBpeHA0eHhfZXRoX3NldF9od2FkZHI7 CisKKwlwb3J0LT5taWlkZXYuZGV2LmlkID0gLTE7CisJcG9ydC0+bWlpZGV2LnJlYWQgPSBpeHA0 eHhfbWRpb19yZWFkOworCXBvcnQtPm1paWRldi53cml0ZSA9IGl4cDR4eF9tZGlvX3dyaXRlOwor CXBvcnQtPm1paWRldi5hZGRyZXNzID0gcGluZm8tPnBoeTsKKwlwb3J0LT5taWlkZXYuZWRldiA9 ICZwb3J0LT5ldGg7CisJbWlpX3JlZ2lzdGVyKCZwb3J0LT5taWlkZXYpOworCWV0aF9yZWdpc3Rl cigmcG9ydC0+ZXRoKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBkcml2ZXJfZCBp eHA0eHhfZXRoX2RyaXZlciA9IHsKKwkubmFtZSAgPSAiaXhwNHh4X2V0aCIsCisJLnByb2JlID0g aXhwNHh4X2V0aF9wcm9iZSwKK307CisKK3N0YXRpYyBpbnQgX19pbml0IGl4cDR4eF9ldGhfbW9k dWxlX2luaXQodm9pZCkKK3sKKwlpZiAoY3B1X2lzX2l4cDQzeCgpKSB7CisJCS8qIElYUDQzeCBs YWNrcyBOUEUtQiBhbmQgdXNlcyBOUEUtQyBmb3IgTUlJIFBIWSBhY2Nlc3MgKi8KKwkJaWYgKCEo aXhwNHh4X3JlYWRfZmVhdHVyZV9iaXRzKCkgJiBJWFA0WFhfRkVBVFVSRV9OUEVDX0VUSCkpCisJ CQlyZXR1cm4gLUVOT1NZUzsKKwkJbWRpb19yZWdzID0gKHN0cnVjdCBldGhfcmVncyAqKUlYUDRY WF9FdGhDX0JBU0U7CisJfSBlbHNlIHsKKwkJLyogQWxsIE1JSSBQSFkgYWNjZXNzZXMgdXNlIE5Q RS1CIEV0aGVybmV0IHJlZ2lzdGVycyAqLworCQlpZiAoIShpeHA0eHhfcmVhZF9mZWF0dXJlX2Jp dHMoKSAmIElYUDRYWF9GRUFUVVJFX05QRUJfRVRIMCkpCisJCQlyZXR1cm4gLUVOT1NZUzsKKwkJ bWRpb19yZWdzID0gKHN0cnVjdCBldGhfcmVncyAqKUlYUDRYWF9FdGhCX0JBU0U7CisJfQorCisJ X19yYXdfd3JpdGVsKERFRkFVTFRfQ09SRV9DTlRSTCwgJm1kaW9fcmVncy0+Y29yZV9jb250cm9s KTsKKworCXJlZ2lzdGVyX2RyaXZlcigmaXhwNHh4X2V0aF9kcml2ZXIpOworCXJldHVybiAwOwor fQorCitkZXZpY2VfaW5pdGNhbGwoaXhwNHh4X2V0aF9tb2R1bGVfaW5pdCk7CmRpZmYgLS1naXQg YS9kcml2ZXJzL3NlcmlhbC9zZXJpYWxfbnMxNjU1MC5jIGIvZHJpdmVycy9zZXJpYWwvc2VyaWFs X25zMTY1NTAuYwppbmRleCAyOTA2MTlmLi4wZjI1Y2ViIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Nl cmlhbC9zZXJpYWxfbnMxNjU1MC5jCisrKyBiL2RyaXZlcnMvc2VyaWFsL3NlcmlhbF9uczE2NTUw LmMKQEAgLTEwMiw3ICsxMDIsMTEgQEAgc3RhdGljIHZvaWQgbnMxNjU1MF9zZXJpYWxfaW5pdF9w b3J0KHN0cnVjdCBjb25zb2xlX2RldmljZSAqY2RldikKIAliYXVkX2Rpdmlzb3IgPSBuczE2NTUw X2NhbGNfZGl2aXNvcihjZGV2LCBDT05GSUdfQkFVRFJBVEUpOwogCiAJLyogaW5pdGlhbGl6aW5n IHRoZSBkZXZpY2UgZm9yIHRoZSBmaXJzdCB0aW1lICovCisjaWZkZWYgQ09ORklHX0FSQ0hfSVhQ NFhYCisJcGxhdC0+cmVnX3dyaXRlKElFUl9VVUUsIGJhc2UsIGllcik7IC8qIEVuYWJsZSBVQVJU IG9wZXJhdGlvbiAqLworI2Vsc2UKIAlwbGF0LT5yZWdfd3JpdGUoMHgwMCwgYmFzZSwgaWVyKTsK KyNlbmRpZgogI2lmZGVmIENPTkZJR19EUklWRVJfU0VSSUFMX05TMTY1NTBfT01BUF9FWFRFTlNJ T05TCiAJcGxhdC0+cmVnX3dyaXRlKDB4MDcsIGJhc2UsIG1kcjEpOwkvKiBEaXNhYmxlICovCiAj ZW5kaWYKQEAgLTE4MSw3ICsxODUsMTEgQEAgc3RhdGljIGludCBuczE2NTUwX3NldGJhdWRyYXRl KHN0cnVjdCBjb25zb2xlX2RldmljZSAqY2RldiwgaW50IGJhdWRfcmF0ZSkKIAkgICAgY2Rldi0+ ZGV2LT5wbGF0Zm9ybV9kYXRhOwogCXVuc2lnbmVkIGxvbmcgYmFzZSA9IGNkZXYtPmRldi0+bWFw X2Jhc2U7CiAJdW5zaWduZWQgaW50IGJhdWRfZGl2aXNvciA9IG5zMTY1NTBfY2FsY19kaXZpc29y KGNkZXYsIGJhdWRfcmF0ZSk7CisjaWZkZWYgQ09ORklHX0FSQ0hfSVhQNFhYCisJcGxhdC0+cmVn X3dyaXRlKElFUl9VVUUsIGJhc2UsIGllcik7IC8qIEVuYWJsZSBVQVJUIG9wZXJhdGlvbiAqLwor I2Vsc2UKIAlwbGF0LT5yZWdfd3JpdGUoMHgwMCwgYmFzZSwgaWVyKTsKKyNlbmRpZgogCXBsYXQt PnJlZ193cml0ZShMQ1JfQktTRSwgYmFzZSwgbGNyKTsKIAlwbGF0LT5yZWdfd3JpdGUoYmF1ZF9k aXZpc29yICYgMHhmZiwgYmFzZSwgZGxsKTsKIAlwbGF0LT5yZWdfd3JpdGUoKGJhdWRfZGl2aXNv ciA+PiA4KSAmIDB4ZmYsIGJhc2UsIGRsbSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3NlcmlhbC9z ZXJpYWxfbnMxNjU1MC5oIGIvZHJpdmVycy9zZXJpYWwvc2VyaWFsX25zMTY1NTAuaAppbmRleCBl YjJmZDEwLi5iYTIwYTZmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3NlcmlhbC9zZXJpYWxfbnMxNjU1 MC5oCisrKyBiL2RyaXZlcnMvc2VyaWFsL3NlcmlhbF9uczE2NTUwLmgKQEAgLTUwLDYgKzUwLDgg QEAKICNkZWZpbmUgZGxsCQlyYnIKICNkZWZpbmUgZGxtCQlpZXIKIAorI2RlZmluZSBJRVJfVVVF CQkweDQwCS8qIFVBUlQgVW5pdCBFbmFibGUgKFhTY2FsZSkgKi8KKwogI2RlZmluZSBGQ1JfRklG T19FTiAgICAgMHgwMQkvKiBGaWZvIGVuYWJsZSAqLwogI2RlZmluZSBGQ1JfUlhTUiAgICAgICAg MHgwMgkvKiBSZWNlaXZlciBzb2Z0IHJlc2V0ICovCiAjZGVmaW5lIEZDUl9UWFNSICAgICAgICAw eDA0CS8qIFRyYW5zbWl0dGVyIHNvZnQgcmVzZXQgKi8KCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmJhcmVib3ggbWFpbGluZyBsaXN0CmJhcmVib3hAbGlz dHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2JhcmVib3gK