From mboxrd@z Thu Jan 1 00:00:00 1970 From: Robert Bragg Subject: [PATCH v3 3/7] drm/i915/perf: Add 'render basic' Gen8+ OA unit configs Date: Wed, 5 Apr 2017 17:23:16 +0100 Message-ID: <20170405162320.30094-4-robert@sixbynine.org> References: <20170405162320.30094-1-robert@sixbynine.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr0-x244.google.com (mail-wr0-x244.google.com [IPv6:2a00:1450:400c:c0c::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 52E8B6E840 for ; Wed, 5 Apr 2017 16:23:41 +0000 (UTC) Received: by mail-wr0-x244.google.com with SMTP id t20so4123296wra.2 for ; Wed, 05 Apr 2017 09:23:41 -0700 (PDT) In-Reply-To: <20170405162320.30094-1-robert@sixbynine.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org QWRkcyBhIHN0YXRpYyBPQSB1bml0LCBNVVgsIEIgQ291bnRlciArIEZsZXggRVUgY29uZmlndXJh dGlvbnMgZm9yIGJhc2ljCnJlbmRlciBtZXRyaWNzIG9uIEJyb2Fkd2VsbCwgQ2hlcnJ5dmlldywg U2t5bGFrZSBhbmQgQnJveHRvbi4gVGhlc2UgYXJlCmF1dG8gZ2VuZXJhdGVkIGZyb20gYW4gWE1M IGRlc2NyaXB0aW9uIG9mIG1ldHJpYyBzZXRzLCBjdXJyZW50bHkKbWFpbnRhaW5lZCBpbiBncHV0 b3AsIHJlZjoKCiBodHRwczovL2dpdGh1Yi5jb20vcmliL2dwdXRvcAogPiBncHV0b3AtZGF0YS9v YS0qLnhtbAogPiBzY3JpcHRzL2k5MTUtcGVyZi1rZXJuZWxnZW4ucHkKCiAkIG1ha2UgLUMgZ3B1 dG9wLWRhdGEgLWYgTWFrZWZpbGUueG1sIFdISVRFTElTVD1SZW5kZXJCYXNpYwoKdjI6IGFkZCBu ZXdsaW5lcyB0byBkZWJ1ZyBtZXNzYWdlcyArIGZpeCBjb21tZW50IChNYXR0aGV3IEF1bGQpCgpT aWduZWQtb2ZmLWJ5OiBSb2JlcnQgQnJhZ2cgPHJvYmVydEBzaXhieW5pbmUub3JnPgpSZXZpZXdl ZC1ieTogTWF0dGhldyBBdWxkIDxtYXR0aGV3LmF1bGRAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgfCAgIDggKy0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmggICAgICAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9v YV9iZHcuYyAgICB8IDM4MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2Jkdy5oICAgIHwgIDM4ICsrKysKIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfb2FfYnh0LmMgICAgfCAyMzggKysrKysrKysrKysrKysrKysrKysrCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2J4dC5oICAgIHwgIDM4ICsrKysKIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfb2FfY2h2LmMgICAgfCAyMjUgKysrKysrKysrKysrKysrKysrKysK IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfY2h2LmggICAgfCAgMzggKysrKwogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9za2xndDIuYyB8IDIyOCArKysrKysrKysrKysrKysrKysr KwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9za2xndDIuaCB8ICAzOCArKysrCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX3NrbGd0My5jIHwgMjM2ICsrKysrKysrKysrKysrKysr KysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9za2xndDMuaCB8ICAzOCArKysrCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX3NrbGd0NC5jIHwgMjQ3ICsrKysrKysrKysrKysr KysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffc2tsZ3Q0LmggfCAgMzggKysr KwogMTQgZmlsZXMgY2hhbmdlZCwgMTc5MSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9iZHcuYwogY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfYmR3LmgKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2J4dC5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9ieHQuaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfY2h2LmMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2Nodi5oCiBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9za2xndDIuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffc2tsZ3QyLmgKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX3NrbGd0My5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9za2xndDMuaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffc2tsZ3Q0LmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX3NrbGd0NC5oCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9NYWtlZmlsZQppbmRleCAyY2YwNDUwNGU0OTQuLjQxNDAwYTEzOGExZSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv TWFrZWZpbGUKQEAgLTEyNyw3ICsxMjcsMTMgQEAgaTkxNS15ICs9IGk5MTVfdmdwdS5vCiAKICMg cGVyZiBjb2RlCiBpOTE1LXkgKz0gaTkxNV9wZXJmLm8gXAotCSAgaTkxNV9vYV9oc3cubworCSAg aTkxNV9vYV9oc3cubyBcCisJICBpOTE1X29hX2Jkdy5vIFwKKwkgIGk5MTVfb2FfY2h2Lm8gXAor CSAgaTkxNV9vYV9za2xndDIubyBcCisJICBpOTE1X29hX3NrbGd0My5vIFwKKwkgIGk5MTVfb2Ff c2tsZ3Q0Lm8gXAorCSAgaTkxNV9vYV9ieHQubwogCiBpZmVxICgkKENPTkZJR19EUk1fSTkxNV9H VlQpLHkpCiBpOTE1LXkgKz0gaW50ZWxfZ3Z0Lm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4 IDUxYmQ2YzYwMzRiYi4uOWMzN2I3M2FjN2FjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAg LTI0NjksNiArMjQ2OSw4IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKIAkJCWludCBtdXhf cmVnc19sZW47CiAJCQljb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKmJfY291bnRlcl9yZWdzOwog CQkJaW50IGJfY291bnRlcl9yZWdzX2xlbjsKKwkJCWNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAq ZmxleF9yZWdzOworCQkJaW50IGZsZXhfcmVnc19sZW47CiAKIAkJCXN0cnVjdCB7CiAJCQkJc3Ry dWN0IGk5MTVfdm1hICp2bWE7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X29hX2Jkdy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9iZHcuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmIwYjFiNzVmYjQzMQotLS0gL2Rldi9udWxs CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfYmR3LmMKQEAgLTAsMCArMSwzODAg QEAKKy8qCisgKiBBdXRvZ2VuZXJhdGVkIGZpbGUsIERPIE5PVCBFRElUIG1hbnVhbGx5IQorICoK KyAqIENvcHlyaWdodCAoYykgMjAxNSBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Np b24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFp bmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRh dGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUg d2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhl IHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUs IHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQg dG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0 byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhl IGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1 ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29w aWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICog VEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5Z IEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQg VE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxM CisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBD TEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBP RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIg REVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8KKworI2luY2x1ZGUgPGxpbnV4 L3N5c2ZzLmg+CisKKyNpbmNsdWRlICJpOTE1X2Rydi5oIgorI2luY2x1ZGUgImk5MTVfb2FfYmR3 LmgiCisKK2VudW0gbWV0cmljX3NldF9pZCB7CisJTUVUUklDX1NFVF9JRF9SRU5ERVJfQkFTSUMg PSAxLAorfTsKKworaW50IGk5MTVfb2Ffbl9idWlsdGluX21ldHJpY19zZXRzX2JkdyA9IDE7CisK K3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19yZW5kZXJf YmFzaWNbXSA9IHsKKwl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4 MjcxNCksIDB4MDA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKKwl7 IF9NTUlPKDB4MjcyNCksIDB4MDA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAw MDAgfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25m aWdfcmVuZGVyX2Jhc2ljW10gPSB7CisJeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCisJ eyBfTU1JTygweGU1NTgpLCAweDAwMDEwMDAzIH0sCisJeyBfTU1JTygweGU2NTgpLCAweDAwMDEy MDExIH0sCisJeyBfTU1JTygweGU3NTgpLCAweDAwMDE1MDE0IH0sCisJeyBfTU1JTygweGU0NWMp LCAweDAwMDUxMDUwIH0sCisJeyBfTU1JTygweGU1NWMpLCAweDAwMDUzMDUyIH0sCisJeyBfTU1J TygweGU2NWMpLCAweDAwMDU1MDU0IH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVf b2FfcmVnIG11eF9jb25maWdfcmVuZGVyX2Jhc2ljXzBfc2xpY2VzXzB4MDFbXSA9IHsKKwl7IF9N TUlPKDB4OTg4OCksIDB4MTQzZjAwMGYgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTQxMTAwMTQg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTQzMTAwMTQgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MTRiZjAwMGYgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTE4YTAzMTcgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MTM4MzdiZTAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4M2I4MDAwNjAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4M2Q4MDAwMDUgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDA1YzQw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY1YzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MDg1Y2MwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAzZDgwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MTgzZDA4MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGEzZjAwMjMgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MTAzZjAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDA1 ODQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDg1ODQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MGE1YTQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDA1YjQwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MGU1YjgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTg1YjI0MDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGExZDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MGMxZjA4MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUxZmFhMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDAzODQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUzODQwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MTYzODQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTgzODAw MDEgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAzOTIwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MDYzOTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgzOWEwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MGEzOTEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAxMDQwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDgxMDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAx MTAwMzAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgxMTAwMzEgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MTAxMTAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAxMzQwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MTYxMzAwMjAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYzMDgwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgzMDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDYzMTE4MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgzMTE4ODAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MTAzMTAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUzMzQwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MTYzMzAwODAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGFiZjEx ODAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTBiZjAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MGFkYTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE5ZDgwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MTA5ZjAwMDIgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGFiOTQwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4ODgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDM4 YTAzODAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDU4YTAwMGUgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MDE4YTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGY4YTgwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MTk4YTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWI4YTAwYTAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDc4YTAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDk4YTAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MjM4YjI4MjAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MjU4YjI1NTAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTk4YzEwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MGI4ZDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWY4NWFh ODAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MjE4NWFhYTAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MjM4NTAwMmEgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4MzEwMjEgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MGY4MzU3MmYgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDE4MzU2ODAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDM4MzAwMmMgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTE4 MzAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTk4MzU0MDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MWI4MzAwMDEgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDU4MzAwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MDc4MzQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDk4MzQwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDE4NGMwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDc4NDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDk4NGMwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MGI4NGMwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4NGMwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MGY4NGMwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDM4NGMw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDU4NDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MWI4MGMxMzcgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWQ4MGMxNDcgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MjE4MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTE4MGMwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MTc4MDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTk4 MGMwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWY4MGMwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MTM4MGMwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTU4MDQwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4NGQ4MDExMTAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NGY4MDAzMzEg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDM4MDA4MDIgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 NTE4MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDU4MDE0NjUgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4NTM4MDExMTEgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDc4MDE0YTUgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MzE4MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4M2Y4MDBj YTUgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDE4MDAwMDMgfSwKK307CisKK3N0YXRpYyBjb25z dCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19yZW5kZXJfYmFzaWNfMV9zbGljZXNfMHgw MltdID0geworCXsgX01NSU8oMHg5ODg4KSwgMHgxNDNmMDAwZiB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgxNGJmMDAwZiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNDkxMDAxNCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgxNGIxMDAxNCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMThhMDMxNyB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMzgzN2JlMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgz YjgwMDA2MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzZDgwMDAwNSB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwYTNmMDAyMyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMDNmMDAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwYTVhNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYTFkNDAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZTFmODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgwYTM5MTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMGRjNDAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgwNmRjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwOGRjYzAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwMGJkODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxOGJk MDgwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYWJmMTE4MCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgxMGJmMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMGQ4NDAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgwOGQ4NDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYWRhODAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMGRiNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw ZWRiODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxOGRiMjQwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwYTlkODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYzlmMDgwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwZTlmMmEwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMDlmMDAw MiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMGI4NDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgwZWI4NDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNmI4NDAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgxOGI4MDAwMSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMGI5MjAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwNmI5ODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwOGI5 YTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYWI5NDAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgwMDkwNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwODkwNDAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgwMDkxMDAzMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwODkxMDAzMSB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMDkxMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw MDkzNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNjkzMDAyMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwNmIwODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwOGIwODAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwNmIxMTgwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwOGIxMTg4 MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMGIxMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgwZWIzNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNmIzMDA4MCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgwMTg4ODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZDg4YjgwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwMzhhMDM4MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNThh MDAwZSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYjhhMDA4MCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgwNzhhMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwOThhMDAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgyMzhiMjg0MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgyNThiMjZhMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMThjNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw ZjhjNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNzhjMjAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgxOThjMTEwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMThkMjAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwNzhkODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwOThkYTAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYjhkODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgxZjg1YWE4MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgyMTg1YWFhMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgyMzg1MDAyYSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZDgzMTAyMSB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwZjgzNTcyZiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMTgz NTY4MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMzgzMDAyYyB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgxMTgzMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxOTgzNTQwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgxYjgzMDAwMSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNTgzMDAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNzgzNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw OTgzNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMTg0YzAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwNzg0ODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwOTg0YzAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwYjg0YzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZDg0YzAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZjg0YzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgwMzg0YzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNTg0NDAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgxYjgwYzEzNyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxZDgwYzE0NyB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgyMTgwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMTgw YzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNzgwODAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgxOTgwYzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxZjgwYzAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgxMzgwYzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNTgwNDAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0ZDgwMTU1MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0 ZjgwMDMzMSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0MzgwMDgwMiB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHg1MTgwMDQwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0NTgwMDRhMSB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHg1MzgwNTU1NSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0NzgwMDQy MSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzMTgwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgzZjgwMTQyMSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0MTgwMDg0NSB9LAorfTsKKworc3Rh dGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqCitnZXRfcmVuZGVyX2Jhc2ljX211eF9jb25m aWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJICAgIGludCAqbGVuKQor eworCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+c3NldS5zbGljZV9tYXNrICYgMHgwMSkgewor CQkqbGVuID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3JlbmRlcl9iYXNpY18wX3NsaWNlc18weDAx KTsKKwkJcmV0dXJuIG11eF9jb25maWdfcmVuZGVyX2Jhc2ljXzBfc2xpY2VzXzB4MDE7CisJfSBl bHNlIGlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+c3NldS5zbGljZV9tYXNrICYgMHgwMikgewor CQkqbGVuID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3JlbmRlcl9iYXNpY18xX3NsaWNlc18weDAy KTsKKwkJcmV0dXJuIG11eF9jb25maWdfcmVuZGVyX2Jhc2ljXzFfc2xpY2VzXzB4MDI7CisJfQor CisJKmxlbiA9IDA7CisJcmV0dXJuIE5VTEw7Cit9CisKK2ludCBpOTE1X29hX3NlbGVjdF9tZXRy aWNfc2V0X2JkdyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJZGV2X3By aXYtPnBlcmYub2EubXV4X3JlZ3MgPSBOVUxMOworCWRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdz X2xlbiA9IDA7CisJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPSBOVUxMOworCWRl dl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9IDA7CisJZGV2X3ByaXYtPnBlcmYu b2EuZmxleF9yZWdzID0gTlVMTDsKKwlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0g MDsKKworCXN3aXRjaCAoZGV2X3ByaXYtPnBlcmYub2EubWV0cmljc19zZXQpIHsKKwljYXNlIE1F VFJJQ19TRVRfSURfUkVOREVSX0JBU0lDOgorCQlkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncyA9 CisJCQlnZXRfcmVuZGVyX2Jhc2ljX211eF9jb25maWcoZGV2X3ByaXYsCisJCQkJCQkgICAgJmRl dl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbik7CisJCWlmICghZGV2X3ByaXYtPnBlcmYub2Eu bXV4X3JlZ3MpIHsKKwkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcg Zm9yIFwiUkVOREVSX0JBU0lDXCIgbWV0cmljIHNldFxuIik7CisKKwkJCS8qIEVJTlZBTCBiZWNh dXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKKwkJCSAqIGFuZCBzbyBp dCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCisJCQkgKiBz byBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAorCQkJICovCisJCQlyZXR1cm4gLUVJTlZB TDsKKwkJfQorCisJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KKwkJCWJfY291 bnRlcl9jb25maWdfcmVuZGVyX2Jhc2ljOworCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJf cmVnc19sZW4gPQorCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3JlbmRlcl9iYXNpYyk7 CisKKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KKwkJCWZsZXhfZXVfY29uZmlnX3Jl bmRlcl9iYXNpYzsKKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9CisJCQlBUlJB WV9TSVpFKGZsZXhfZXVfY29uZmlnX3JlbmRlcl9iYXNpYyk7CisKKwkJcmV0dXJuIDA7CisJZGVm YXVsdDoKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorfQorCitzdGF0aWMgc3NpemVfdAorc2hvd19y ZW5kZXJfYmFzaWNfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1 dGUgKmF0dHIsIGNoYXIgKmJ1ZikKK3sKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVU UklDX1NFVF9JRF9SRU5ERVJfQkFTSUMpOworfQorCitzdGF0aWMgc3RydWN0IGRldmljZV9hdHRy aWJ1dGUgZGV2X2F0dHJfcmVuZGVyX2Jhc2ljX2lkID0geworCS5hdHRyID0geyAubmFtZSA9ICJp ZCIsIC5tb2RlID0gMDQ0NCB9LAorCS5zaG93ID0gc2hvd19yZW5kZXJfYmFzaWNfaWQsCisJLnN0 b3JlID0gTlVMTCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19yZW5kZXJf YmFzaWNbXSA9IHsKKwkmZGV2X2F0dHJfcmVuZGVyX2Jhc2ljX2lkLmF0dHIsCisJTlVMTCwKK307 CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX3JlbmRlcl9iYXNpYyA9IHsK KwkubmFtZSA9ICJiNTQxYmQ1Ny0wZTBmLTQxNTQtYjRjMC01ODU4MDEwYTJiZjciLAorCS5hdHRy cyA9ICBhdHRyc19yZW5kZXJfYmFzaWMsCit9OworCitpbnQKK2k5MTVfcGVyZl9yZWdpc3Rlcl9z eXNmc19iZHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCWludCBtdXhf bGVuOworCWludCByZXQgPSAwOworCisJaWYgKGdldF9yZW5kZXJfYmFzaWNfbXV4X2NvbmZpZyhk ZXZfcHJpdiwgJm11eF9sZW4pKSB7CisJCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJp di0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9yZW5kZXJfYmFzaWMpOworCQlpZiAocmV0KQor CQkJZ290byBlcnJvcl9yZW5kZXJfYmFzaWM7CisJfQorCisJcmV0dXJuIDA7CisKK2Vycm9yX3Jl bmRlcl9iYXNpYzoKKwlyZXR1cm4gcmV0OworfQorCit2b2lkCitpOTE1X3BlcmZfdW5yZWdpc3Rl cl9zeXNmc19iZHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCWludCBt dXhfbGVuOworCisJaWYgKGdldF9yZW5kZXJfYmFzaWNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgJm11 eF9sZW4pKQorCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2Jq LCAmZ3JvdXBfcmVuZGVyX2Jhc2ljKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfb2FfYmR3LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2Jkdy5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZWE2OTY5YWFmOTFhCi0tLSAv ZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9iZHcuaApAQCAtMCww ICsxLDM4IEBACisvKgorICogQXV0b2dlbmVyYXRlZCBmaWxlLCBETyBOT1QgRURJVCBtYW51YWxs eSEKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQ ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv biBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv Y3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNv ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24K KyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0 cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2Fy ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJu aXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoK KyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl IChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4g YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgor ICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZ IE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVO VCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZP UiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBB TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9N LCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9S IE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisKKyNpZm5kZWYg X19JOTE1X09BX0JEV19IX18KKyNkZWZpbmUgX19JOTE1X09BX0JEV19IX18KKworZXh0ZXJuIGlu dCBpOTE1X29hX25fYnVpbHRpbl9tZXRyaWNfc2V0c19iZHc7CisKK2V4dGVybiBpbnQgaTkxNV9v YV9zZWxlY3RfbWV0cmljX3NldF9iZHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KTsKKworZXh0ZXJuIGludCBpOTE1X3BlcmZfcmVnaXN0ZXJfc3lzZnNfYmR3KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdik7CisKK2V4dGVybiB2b2lkIGk5MTVfcGVyZl91bnJlZ2lz dGVyX3N5c2ZzX2JkdyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOworCisjZW5k aWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfYnh0LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2J4dC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMC4uYjEwZTQ0NjQzYmMxCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9vYV9ieHQuYwpAQCAtMCwwICsxLDIzOCBAQAorLyoKKyAqIEF1dG9n ZW5lcmF0ZWQgZmlsZSwgRE8gTk9UIEVESVQgbWFudWFsbHkhCisgKgorICogQ29weXJpZ2h0IChj KSAyMDE1IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3Jh bnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkg b2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUg IlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0 aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwg Y29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAq IGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29u cyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0 IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0 IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cisg KiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp YWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMg UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP UgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF UyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JT IE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9S IE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBU T1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJ T04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4g VEhFIFNPRlRXQVJFLgorICoKKyAqLworCisjaW5jbHVkZSA8bGludXgvc3lzZnMuaD4KKworI2lu Y2x1ZGUgImk5MTVfZHJ2LmgiCisjaW5jbHVkZSAiaTkxNV9vYV9ieHQuaCIKKworZW51bSBtZXRy aWNfc2V0X2lkIHsKKwlNRVRSSUNfU0VUX0lEX1JFTkRFUl9CQVNJQyA9IDEsCit9OworCitpbnQg aTkxNV9vYV9uX2J1aWx0aW5fbWV0cmljX3NldHNfYnh0ID0gMTsKKworc3RhdGljIGNvbnN0IHN0 cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX3JlbmRlcl9iYXNpY1tdID0geworCXsg X01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzE0KSwgMHgwMDgwMDAw MCB9LAorCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzI0KSwg MHgwMDgwMDAwMCB9LAorCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAorfTsKKworc3Rh dGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19yZW5kZXJfYmFzaWNb XSA9IHsKKwl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKKwl7IF9NTUlPKDB4ZTU1OCks IDB4MDAwMTAwMDMgfSwKKwl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMTIwMTEgfSwKKwl7IF9NTUlP KDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKKwl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNTEwNTAgfSwK Kwl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwKKwl7IF9NTUlPKDB4ZTY1YyksIDB4MDAw NTUwNTQgfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZp Z19yZW5kZXJfYmFzaWNfMF9za3VfZ3RlXzB4MDNbXSA9IHsKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MTY2YzAwZjAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTIxMjAyODAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MTIzMjAyODAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MzAzMTcgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MTU5MzAzZGYgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4M2Y5MDBj MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDAwYTAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MDAyZDEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYyZDQwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MDgyZDUwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGEyZDEwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MGMyZTA4MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUy ZTU5MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE0YzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MGM0YzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGU0YzQwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MDY0ZTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDg0ZTgwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE0ZTIwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MWM0ZjAwMTAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE2YzAwNTMgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MTA2YzAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWM2YzAwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MWEwZmNjMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWMwZjAw MDIgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWMyYzAwNDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MDAxMDEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQxMDEwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MDAxMTQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgxMTQwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDAxMjAwMjAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgx MjAwMjEgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAxNDEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MDgxNDEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDIzMDgwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MDQzMDIwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYzMTgwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgzMTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDYzMjA4MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgzMjA4NDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDAzMjAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYzNDQwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDgzNDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGQ5MzE4 MzEgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGY5MzlmM2YgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MDE5MzllODAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDM5MzAzYmMgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MDU5MzAwMGUgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTk5MzAwMmEgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDc5MzAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDk5 MzAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5MDAxNzcgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MWY5MDAxODcgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MzU5MDAwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MTM5MDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MjE5MDQwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MjM5MDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MjU5MDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4Mjc5MDQwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MmI5MDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MmQ5MDQwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MmY5MDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MzE5MDQw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTU5MDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MTc5MDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTk5MDQwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MWI5MDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDExMTAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDA0MjMgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTU5 MDAxMTEgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDc5MDBjMDIgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4NTc5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDk5MDAwMjAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4NTk5MDExMTEgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NGI5MDA0MjEg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MzM5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NGQ5MDAwMDEgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4NDU5MDA4MjEgfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9y ZWcgKgorZ2V0X3JlbmRlcl9iYXNpY19tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKKwkJCSAgICBpbnQgKmxlbikKK3sKKwlpZiAoZGV2X3ByaXYtPmRybS5wZGV2 LT5yZXZpc2lvbiA+PSAweDAzKSB7CisJCSpsZW4gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfcmVu ZGVyX2Jhc2ljXzBfc2t1X2d0ZV8weDAzKTsKKwkJcmV0dXJuIG11eF9jb25maWdfcmVuZGVyX2Jh c2ljXzBfc2t1X2d0ZV8weDAzOworCX0KKworCSpsZW4gPSAwOworCXJldHVybiBOVUxMOworfQor CitpbnQgaTkxNV9vYV9zZWxlY3RfbWV0cmljX3NldF9ieHQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQoreworCWRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzID0gTlVMTDsKKwlk ZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW4gPSAwOworCWRldl9wcml2LT5wZXJmLm9hLmJf Y291bnRlcl9yZWdzID0gTlVMTDsKKwlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19s ZW4gPSAwOworCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9IE5VTEw7CisJZGV2X3ByaXYt PnBlcmYub2EuZmxleF9yZWdzX2xlbiA9IDA7CisKKwlzd2l0Y2ggKGRldl9wcml2LT5wZXJmLm9h Lm1ldHJpY3Nfc2V0KSB7CisJY2FzZSBNRVRSSUNfU0VUX0lEX1JFTkRFUl9CQVNJQzoKKwkJZGV2 X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MgPQorCQkJZ2V0X3JlbmRlcl9iYXNpY19tdXhfY29uZmln KGRldl9wcml2LAorCQkJCQkJICAgICZkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW4pOwor CQlpZiAoIWRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSB7CisJCQlEUk1fREVCVUdfRFJJVkVS KCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIlJFTkRFUl9CQVNJQ1wiIG1ldHJpYyBzZXRc biIpOworCisJCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hl Y2tlZCB0aGlzCisJCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQg dG8gdXNlcnNwYWNlIGFuZAorCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQK KwkJCSAqLworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKworCQlkZXZfcHJpdi0+cGVyZi5vYS5i X2NvdW50ZXJfcmVncyA9CisJCQliX2NvdW50ZXJfY29uZmlnX3JlbmRlcl9iYXNpYzsKKwkJZGV2 X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KKwkJCUFSUkFZX1NJWkUoYl9jb3Vu dGVyX2NvbmZpZ19yZW5kZXJfYmFzaWMpOworCisJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVn cyA9CisJCQlmbGV4X2V1X2NvbmZpZ19yZW5kZXJfYmFzaWM7CisJCWRldl9wcml2LT5wZXJmLm9h LmZsZXhfcmVnc19sZW4gPQorCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19yZW5kZXJfYmFz aWMpOworCisJCXJldHVybiAwOworCWRlZmF1bHQ6CisJCXJldHVybiAtRU5PREVWOworCX0KK30K Kworc3RhdGljIHNzaXplX3QKK3Nob3dfcmVuZGVyX2Jhc2ljX2lkKHN0cnVjdCBkZXZpY2UgKmtk ZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCit7CisJcmV0dXJu IHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfUkVOREVSX0JBU0lDKTsKK30KKwor c3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX3JlbmRlcl9iYXNpY19pZCA9 IHsKKwkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKKwkuc2hvdyA9IHNo b3dfcmVuZGVyX2Jhc2ljX2lkLAorCS5zdG9yZSA9IE5VTEwsCit9OworCitzdGF0aWMgc3RydWN0 IGF0dHJpYnV0ZSAqYXR0cnNfcmVuZGVyX2Jhc2ljW10gPSB7CisJJmRldl9hdHRyX3JlbmRlcl9i YXNpY19pZC5hdHRyLAorCU5VTEwsCit9OworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91 cCBncm91cF9yZW5kZXJfYmFzaWMgPSB7CisJLm5hbWUgPSAiMjJiOTUxOWEtZTliYS00YzQxLThi NTQtZjRmOGNhMTRmYTBhIiwKKwkuYXR0cnMgPSAgYXR0cnNfcmVuZGVyX2Jhc2ljLAorfTsKKwor aW50CitpOTE1X3BlcmZfcmVnaXN0ZXJfc3lzZnNfYnh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKK3sKKwlpbnQgbXV4X2xlbjsKKwlpbnQgcmV0ID0gMDsKKworCWlmIChnZXRf cmVuZGVyX2Jhc2ljX211eF9jb25maWcoZGV2X3ByaXYsICZtdXhfbGVuKSkgeworCQlyZXQgPSBz eXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfcmVu ZGVyX2Jhc2ljKTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gZXJyb3JfcmVuZGVyX2Jhc2ljOworCX0K KworCXJldHVybiAwOworCitlcnJvcl9yZW5kZXJfYmFzaWM6CisJcmV0dXJuIHJldDsKK30KKwor dm9pZAoraTkxNV9wZXJmX3VucmVnaXN0ZXJfc3lzZnNfYnh0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKK3sKKwlpbnQgbXV4X2xlbjsKKworCWlmIChnZXRfcmVuZGVyX2Jhc2lj X211eF9jb25maWcoZGV2X3ByaXYsICZtdXhfbGVuKSkKKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRl dl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3JlbmRlcl9iYXNpYyk7Cit9CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2J4dC5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9vYV9ieHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLjllODY2NjJjODkxZAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfb2FfYnh0LmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIEF1dG9nZW5lcmF0ZWQg ZmlsZSwgRE8gTk9UIEVESVQgbWFudWFsbHkhCisgKgorICogQ29weXJpZ2h0IChjKSAyMDE1IElu dGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJl ZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBz b2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJl IiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNs dWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9k aWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBz ZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9t IHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBm b2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBh bmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3Jh cGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlv bnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg IkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1Q TElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJD SEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9O SU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlS SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisg KiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9U SEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBU SEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRX QVJFLgorICoKKyAqLworCisjaWZuZGVmIF9fSTkxNV9PQV9CWFRfSF9fCisjZGVmaW5lIF9fSTkx NV9PQV9CWFRfSF9fCisKK2V4dGVybiBpbnQgaTkxNV9vYV9uX2J1aWx0aW5fbWV0cmljX3NldHNf Ynh0OworCitleHRlcm4gaW50IGk5MTVfb2Ffc2VsZWN0X21ldHJpY19zZXRfYnh0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CisKK2V4dGVybiBpbnQgaTkxNV9wZXJmX3JlZ2lz dGVyX3N5c2ZzX2J4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOworCitleHRl cm4gdm9pZCBpOTE1X3BlcmZfdW5yZWdpc3Rlcl9zeXNmc19ieHQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X29hX2Nodi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9jaHYuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjFjMjg4OWU4MTljOAotLS0g L2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfY2h2LmMKQEAgLTAs MCArMSwyMjUgQEAKKy8qCisgKiBBdXRvZ2VuZXJhdGVkIGZpbGUsIERPIE5PVCBFRElUIG1hbnVh bGx5IQorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAq IFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVy c29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQg ZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUg U29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlv bgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRp c3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3 YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1 cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cisg KgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3Rp Y2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBp biBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUu CisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFO VFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVW RU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUg Rk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElO IEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZS T00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0Ug T1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8KKworI2luY2x1 ZGUgPGxpbnV4L3N5c2ZzLmg+CisKKyNpbmNsdWRlICJpOTE1X2Rydi5oIgorI2luY2x1ZGUgImk5 MTVfb2FfY2h2LmgiCisKK2VudW0gbWV0cmljX3NldF9pZCB7CisJTUVUUklDX1NFVF9JRF9SRU5E RVJfQkFTSUMgPSAxLAorfTsKKworaW50IGk5MTVfb2Ffbl9idWlsdGluX21ldHJpY19zZXRzX2No diA9IDE7CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZp Z19yZW5kZXJfYmFzaWNbXSA9IHsKKwl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKKwl7 IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcxNCksIDB4MDA4MDAw MDAgfSwKKwl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcyNCks IDB4MDA4MDAwMDAgfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxl eF9ldV9jb25maWdfcmVuZGVyX2Jhc2ljW10gPSB7CisJeyBfTU1JTygweGU0NTgpLCAweDAwMDA1 MDA0IH0sCisJeyBfTU1JTygweGU1NTgpLCAweDAwMDEwMDAzIH0sCisJeyBfTU1JTygweGU2NTgp LCAweDAwMDEyMDExIH0sCisJeyBfTU1JTygweGU3NTgpLCAweDAwMDE1MDE0IH0sCisJeyBfTU1J TygweGU0NWMpLCAweDAwMDUxMDUwIH0sCisJeyBfTU1JTygweGU1NWMpLCAweDAwMDUzMDUyIH0s CisJeyBfTU1JTygweGU2NWMpLCAweDAwMDU1MDU0IH0sCit9OworCitzdGF0aWMgY29uc3Qgc3Ry dWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfcmVuZGVyX2Jhc2ljW10gPSB7CisJeyBfTU1JTygw eDk4ODgpLCAweDU5ODAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDU5ODAwMDAxIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDI4NWEwMDA2IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDJjMTEw MDE0IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDJlMTEwMDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDJjMzEwMDE0IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDJlMzEwMDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDJiODMwM2RmIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDM1ODAwMjRmIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDAwNTgwODg4IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFl NWEwMDE1IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDIwNWEwMDE0IH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDA0NWEwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyNWEwMDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDAyMTgwNTAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwMTkwNTU1 IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyMWQwNTAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDAyMWYwYTAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwMzgwNDQ0IH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDAyMzkwNTAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwM2EwNjY2IH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDAwMTAwMTExIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2MTEw MDMwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhMTEwMDMxIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDBlMTEwMDQ2IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0MTEwMDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDAwMTEwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwMTMwMTExIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDAwMzAwNDQ0IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4 MzEwMDMwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjMzEwMDMxIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDEwMzEwMDQ2IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0MzEwMDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDAwMzEwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwMzMwNDQ0 IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAzOGEwYTAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDAxOGIwZmZmIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAzOGIwYTAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDAxODU1MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAzODUwMDU1IH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDEzODMwMDIxIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE1ODMw MDIwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE3ODMwMDJmIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDE5ODMwMDJlIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFiODMwMDJkIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDFkODMwMDJjIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA1ODMwMDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDAxODQwNTU1IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAz ODQwNTAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDIzODAwMDc0IH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDI1ODAwMDdkIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA1ODAwMDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDAxODA1MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAzODAwMDU1 IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAxODY1MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDAzODYwMDU1IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAxODc1MDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDAzODcwMDU1IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQxODAwMGFhIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDQzODAwMDBhIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQ1ODAw MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQ3ODAwMDBhIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDQ5ODAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDRiODAwMDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDRkODAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDRmODAwMDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDUxODAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDUz ODAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDU1ODAwMDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDU3ODAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDU5ODAwMDAwIH0sCit9Owor CitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoKK2dldF9yZW5kZXJfYmFzaWNfbXV4 X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgICAgaW50ICps ZW4pCit7CisJKmxlbiA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19yZW5kZXJfYmFzaWMpOworCXJl dHVybiBtdXhfY29uZmlnX3JlbmRlcl9iYXNpYzsKK30KKworaW50IGk5MTVfb2Ffc2VsZWN0X21l dHJpY19zZXRfY2h2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlkZXZf cHJpdi0+cGVyZi5vYS5tdXhfcmVncyA9IE5VTEw7CisJZGV2X3ByaXYtPnBlcmYub2EubXV4X3Jl Z3NfbGVuID0gMDsKKwlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9IE5VTEw7CisJ ZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0gMDsKKwlkZXZfcHJpdi0+cGVy Zi5vYS5mbGV4X3JlZ3MgPSBOVUxMOworCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4g PSAwOworCisJc3dpdGNoIChkZXZfcHJpdi0+cGVyZi5vYS5tZXRyaWNzX3NldCkgeworCWNhc2Ug TUVUUklDX1NFVF9JRF9SRU5ERVJfQkFTSUM6CisJCWRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdz ID0KKwkJCWdldF9yZW5kZXJfYmFzaWNfbXV4X2NvbmZpZyhkZXZfcHJpdiwKKwkJCQkJCSAgICAm ZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVuKTsKKwkJaWYgKCFkZXZfcHJpdi0+cGVyZi5v YS5tdXhfcmVncykgeworCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZp ZyBmb3IgXCJSRU5ERVJfQkFTSUNcIiBtZXRyaWMgc2V0XG4iKTsKKworCQkJLyogRUlOVkFMIGJl Y2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcworCQkJICogYW5kIHNv IGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKKwkJCSAq IHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCisJCQkgKi8KKwkJCXJldHVybiAtRUlO VkFMOworCQl9CisKKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQorCQkJYl9j b3VudGVyX2NvbmZpZ19yZW5kZXJfYmFzaWM7CisJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRl cl9yZWdzX2xlbiA9CisJCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfcmVuZGVyX2Jhc2lj KTsKKworCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQorCQkJZmxleF9ldV9jb25maWdf cmVuZGVyX2Jhc2ljOworCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KKwkJCUFS UkFZX1NJWkUoZmxleF9ldV9jb25maWdfcmVuZGVyX2Jhc2ljKTsKKworCQlyZXR1cm4gMDsKKwlk ZWZhdWx0OgorCQlyZXR1cm4gLUVOT0RFVjsKKwl9Cit9CisKK3N0YXRpYyBzc2l6ZV90CitzaG93 X3JlbmRlcl9iYXNpY19pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJp YnV0ZSAqYXR0ciwgY2hhciAqYnVmKQoreworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBN RVRSSUNfU0VUX0lEX1JFTkRFUl9CQVNJQyk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0 dHJpYnV0ZSBkZXZfYXR0cl9yZW5kZXJfYmFzaWNfaWQgPSB7CisJLmF0dHIgPSB7IC5uYW1lID0g ImlkIiwgLm1vZGUgPSAwNDQ0IH0sCisJLnNob3cgPSBzaG93X3JlbmRlcl9iYXNpY19pZCwKKwku c3RvcmUgPSBOVUxMLAorfTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX3JlbmRl cl9iYXNpY1tdID0geworCSZkZXZfYXR0cl9yZW5kZXJfYmFzaWNfaWQuYXR0ciwKKwlOVUxMLAor fTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfcmVuZGVyX2Jhc2ljID0g eworCS5uYW1lID0gIjlkOGEzYWY1LWMwMmMtNGE0YS1iOTQ3LWYxNjcyNDY5ZTBmYiIsCisJLmF0 dHJzID0gIGF0dHJzX3JlbmRlcl9iYXNpYywKK307CisKK2ludAoraTkxNV9wZXJmX3JlZ2lzdGVy X3N5c2ZzX2NodihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJaW50IG11 eF9sZW47CisJaW50IHJldCA9IDA7CisKKwlpZiAoZ2V0X3JlbmRlcl9iYXNpY19tdXhfY29uZmln KGRldl9wcml2LCAmbXV4X2xlbikpIHsKKwkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9w cml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3JlbmRlcl9iYXNpYyk7CisJCWlmIChyZXQp CisJCQlnb3RvIGVycm9yX3JlbmRlcl9iYXNpYzsKKwl9CisKKwlyZXR1cm4gMDsKKworZXJyb3Jf cmVuZGVyX2Jhc2ljOgorCXJldHVybiByZXQ7Cit9CisKK3ZvaWQKK2k5MTVfcGVyZl91bnJlZ2lz dGVyX3N5c2ZzX2NodihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJaW50 IG11eF9sZW47CisKKwlpZiAoZ2V0X3JlbmRlcl9iYXNpY19tdXhfY29uZmlnKGRldl9wcml2LCAm bXV4X2xlbikpCisJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tv YmosICZncm91cF9yZW5kZXJfYmFzaWMpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9vYV9jaHYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfY2h2LmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lNDk0MjAwZmYwNGYKLS0t IC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2Nodi5oCkBAIC0w LDAgKzEsMzggQEAKKy8qCisgKiBBdXRvZ2VuZXJhdGVkIGZpbGUsIERPIE5PVCBFRElUIG1hbnVh bGx5IQorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAq IFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVy c29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQg ZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUg U29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlv bgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRp c3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3 YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1 cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cisg KgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3Rp Y2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBp biBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUu CisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFO VFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVW RU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUg Rk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElO IEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZS T00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0Ug T1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8KKworI2lmbmRl ZiBfX0k5MTVfT0FfQ0hWX0hfXworI2RlZmluZSBfX0k5MTVfT0FfQ0hWX0hfXworCitleHRlcm4g aW50IGk5MTVfb2Ffbl9idWlsdGluX21ldHJpY19zZXRzX2NodjsKKworZXh0ZXJuIGludCBpOTE1 X29hX3NlbGVjdF9tZXRyaWNfc2V0X2NodihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpOworCitleHRlcm4gaW50IGk5MTVfcGVyZl9yZWdpc3Rlcl9zeXNmc19jaHYoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKKworZXh0ZXJuIHZvaWQgaTkxNV9wZXJmX3VucmVn aXN0ZXJfc3lzZnNfY2h2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CisKKyNl bmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9za2xndDIuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffc2tsZ3QyLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lYTAzMTdhNDc4MWMKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX3NrbGd0Mi5jCkBAIC0wLDAgKzEsMjI4IEBACisv KgorICogQXV0b2dlbmVyYXRlZCBmaWxlLCBETyBOT1QgRURJVCBtYW51YWxseSEKKyAqCisgKiBD b3B5cmlnaHQgKGMpIDIwMTUgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlz IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcg YQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24g ZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhv dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdo dHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJs aWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBl cm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8g c28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92 ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcg dGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBv ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBT T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E LCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI RSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICog VEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s IERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1Ig SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJ TkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisKKyNpbmNsdWRlIDxsaW51eC9zeXNm cy5oPgorCisjaW5jbHVkZSAiaTkxNV9kcnYuaCIKKyNpbmNsdWRlICJpOTE1X29hX3NrbGd0Mi5o IgorCitlbnVtIG1ldHJpY19zZXRfaWQgeworCU1FVFJJQ19TRVRfSURfUkVOREVSX0JBU0lDID0g MSwKK307CisKK2ludCBpOTE1X29hX25fYnVpbHRpbl9tZXRyaWNfc2V0c19za2xndDIgPSAxOwor CitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfcmVuZGVy X2Jhc2ljW10gPSB7CisJeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygw eDI3MTQpLCAweDAwODAwMDAwIH0sCisJeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCisJ eyBfTU1JTygweDI3MjQpLCAweDAwODAwMDAwIH0sCisJeyBfTU1JTygweDI3NDApLCAweDAwMDAw MDAwIH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29u ZmlnX3JlbmRlcl9iYXNpY1tdID0geworCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAor CXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxMDAwMyB9LAorCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAx MjAxMSB9LAorCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAxNTAxNCB9LAorCXsgX01NSU8oMHhlNDVj KSwgMHgwMDA1MTA1MCB9LAorCXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1MzA1MiB9LAorCXsgX01N SU8oMHhlNjVjKSwgMHgwMDA1NTA1NCB9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1 X29hX3JlZyBtdXhfY29uZmlnX3JlbmRlcl9iYXNpY18xX3NrdV9ndGVfMHgwMltdID0geworCXsg X01NSU8oMHg5ODg4KSwgMHgxNjZjMDFlMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMjE3MDI4 MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMjM3MDI4MCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgxMTkzMDMxNyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNTkzMDNkZiB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgzZjkwMDAwMyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYTRlMDA4MCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwYTZjMDA1MyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMDZj MDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYzZjMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgwYTFiNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYzFjMDAwMSB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgwMDJmMTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDJmMTAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDRjNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw YTRjODQwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDBkMjAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwNjBkODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwODBkYTAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwYTBkMjAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBmMDQw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmNjYwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgwMDJjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNjJjMjIwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgwNjJkODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwODJkODAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwMDEzMzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwODEz MzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDE3MDAyMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgwODE3MDAyMSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMDE3MDAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgwNjMzYzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwODMzYzAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjM3MDgwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw ODM3MDg0MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMDM3MDAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwZDkzMzAzMSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZjkzM2UzZiB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwMTkzM2QwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMzkzMDcz YyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNTkzMDAwZSB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgxZDkzMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkzMDAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgxYjkzMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxZDkwMDE1NyB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgxZjkwMDE1OCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzNTkw MDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgyYjkwODAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgyZDkwODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgyZjkwODAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgzMTkwODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNTkwODAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNzkwODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgx OTkwODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkwODAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgxMTkwMDAxZiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkwNDQwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHg0MTkwMDAyMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1NTkwMDAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMGMyMSB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHg0NzkwMDA2MSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1NzkwNDQ0MCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHg0OTkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0Yjkw MDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1OTkwMDAwNCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHg0MzkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwNDQ0NCB9LAorfTsKKwor c3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqCitnZXRfcmVuZGVyX2Jhc2ljX211eF9j b25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJICAgIGludCAqbGVu KQoreworCWlmIChkZXZfcHJpdi0+ZHJtLnBkZXYtPnJldmlzaW9uID49IDB4MDIpIHsKKwkJKmxl biA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19yZW5kZXJfYmFzaWNfMV9za3VfZ3RlXzB4MDIpOwor CQlyZXR1cm4gbXV4X2NvbmZpZ19yZW5kZXJfYmFzaWNfMV9za3VfZ3RlXzB4MDI7CisJfQorCisJ KmxlbiA9IDA7CisJcmV0dXJuIE5VTEw7Cit9CisKK2ludCBpOTE1X29hX3NlbGVjdF9tZXRyaWNf c2V0X3NrbGd0MihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJZGV2X3By aXYtPnBlcmYub2EubXV4X3JlZ3MgPSBOVUxMOworCWRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdz X2xlbiA9IDA7CisJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPSBOVUxMOworCWRl dl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9IDA7CisJZGV2X3ByaXYtPnBlcmYu b2EuZmxleF9yZWdzID0gTlVMTDsKKwlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0g MDsKKworCXN3aXRjaCAoZGV2X3ByaXYtPnBlcmYub2EubWV0cmljc19zZXQpIHsKKwljYXNlIE1F VFJJQ19TRVRfSURfUkVOREVSX0JBU0lDOgorCQlkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncyA9 CisJCQlnZXRfcmVuZGVyX2Jhc2ljX211eF9jb25maWcoZGV2X3ByaXYsCisJCQkJCQkgICAgJmRl dl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbik7CisJCWlmICghZGV2X3ByaXYtPnBlcmYub2Eu bXV4X3JlZ3MpIHsKKwkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcg Zm9yIFwiUkVOREVSX0JBU0lDXCIgbWV0cmljIHNldFxuIik7CisKKwkJCS8qIEVJTlZBTCBiZWNh dXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKKwkJCSAqIGFuZCBzbyBp dCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCisJCQkgKiBz byBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAorCQkJICovCisJCQlyZXR1cm4gLUVJTlZB TDsKKwkJfQorCisJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KKwkJCWJfY291 bnRlcl9jb25maWdfcmVuZGVyX2Jhc2ljOworCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJf cmVnc19sZW4gPQorCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3JlbmRlcl9iYXNpYyk7 CisKKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KKwkJCWZsZXhfZXVfY29uZmlnX3Jl bmRlcl9iYXNpYzsKKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9CisJCQlBUlJB WV9TSVpFKGZsZXhfZXVfY29uZmlnX3JlbmRlcl9iYXNpYyk7CisKKwkJcmV0dXJuIDA7CisJZGVm YXVsdDoKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorfQorCitzdGF0aWMgc3NpemVfdAorc2hvd19y ZW5kZXJfYmFzaWNfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1 dGUgKmF0dHIsIGNoYXIgKmJ1ZikKK3sKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVU UklDX1NFVF9JRF9SRU5ERVJfQkFTSUMpOworfQorCitzdGF0aWMgc3RydWN0IGRldmljZV9hdHRy aWJ1dGUgZGV2X2F0dHJfcmVuZGVyX2Jhc2ljX2lkID0geworCS5hdHRyID0geyAubmFtZSA9ICJp ZCIsIC5tb2RlID0gMDQ0NCB9LAorCS5zaG93ID0gc2hvd19yZW5kZXJfYmFzaWNfaWQsCisJLnN0 b3JlID0gTlVMTCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19yZW5kZXJf YmFzaWNbXSA9IHsKKwkmZGV2X2F0dHJfcmVuZGVyX2Jhc2ljX2lkLmF0dHIsCisJTlVMTCwKK307 CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX3JlbmRlcl9iYXNpYyA9IHsK KwkubmFtZSA9ICJmNTE5ZTQ4MS0yNGQyLTRkNDItODdjOS0zZmRkMTJjMDAyMDIiLAorCS5hdHRy cyA9ICBhdHRyc19yZW5kZXJfYmFzaWMsCit9OworCitpbnQKK2k5MTVfcGVyZl9yZWdpc3Rlcl9z eXNmc19za2xndDIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCWludCBt dXhfbGVuOworCWludCByZXQgPSAwOworCisJaWYgKGdldF9yZW5kZXJfYmFzaWNfbXV4X2NvbmZp ZyhkZXZfcHJpdiwgJm11eF9sZW4pKSB7CisJCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZf cHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9yZW5kZXJfYmFzaWMpOworCQlpZiAocmV0 KQorCQkJZ290byBlcnJvcl9yZW5kZXJfYmFzaWM7CisJfQorCisJcmV0dXJuIDA7CisKK2Vycm9y X3JlbmRlcl9iYXNpYzoKKwlyZXR1cm4gcmV0OworfQorCit2b2lkCitpOTE1X3BlcmZfdW5yZWdp c3Rlcl9zeXNmc19za2xndDIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQorewor CWludCBtdXhfbGVuOworCisJaWYgKGdldF9yZW5kZXJfYmFzaWNfbXV4X2NvbmZpZyhkZXZfcHJp diwgJm11eF9sZW4pKQorCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmlj c19rb2JqLCAmZ3JvdXBfcmVuZGVyX2Jhc2ljKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfb2Ffc2tsZ3QyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29h X3NrbGd0Mi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTk5YjAz ZjFiZjllCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9z a2xndDIuaApAQCAtMCwwICsxLDM4IEBACisvKgorICogQXV0b2dlbmVyYXRlZCBmaWxlLCBETyBO T1QgRURJVCBtYW51YWxseSEKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgSW50ZWwgQ29ycG9y YXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn ZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFu ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRv IGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRo b3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdl LCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVz IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBT b2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBj b25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBl cm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwg YmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUK KyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBX SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNM VURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU WSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1F TlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERF UlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElU WSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBB UklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FS RSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgor ICovCisKKyNpZm5kZWYgX19JOTE1X09BX1NLTEdUMl9IX18KKyNkZWZpbmUgX19JOTE1X09BX1NL TEdUMl9IX18KKworZXh0ZXJuIGludCBpOTE1X29hX25fYnVpbHRpbl9tZXRyaWNfc2V0c19za2xn dDI7CisKK2V4dGVybiBpbnQgaTkxNV9vYV9zZWxlY3RfbWV0cmljX3NldF9za2xndDIoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKKworZXh0ZXJuIGludCBpOTE1X3BlcmZfcmVn aXN0ZXJfc3lzZnNfc2tsZ3QyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CisK K2V4dGVybiB2b2lkIGk5MTVfcGVyZl91bnJlZ2lzdGVyX3N5c2ZzX3NrbGd0MihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfb2Ffc2tsZ3QzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X29hX3NrbGd0My5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTIx MjExMTM2MTkxCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9v YV9za2xndDMuYwpAQCAtMCwwICsxLDIzNiBAQAorLyoKKyAqIEF1dG9nZW5lcmF0ZWQgZmlsZSwg RE8gTk9UIEVESVQgbWFudWFsbHkhCisgKgorICogQ29weXJpZ2h0IChjKSAyMDE1IEludGVsIENv cnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj aGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2Fy ZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisg KiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcg d2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBt ZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNv cGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQor ICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dp bmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhp cyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNo YWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2Yg dGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT IiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwg SU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC SUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklO R0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBI T0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFC SUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT RSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G VFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgor ICoKKyAqLworCisjaW5jbHVkZSA8bGludXgvc3lzZnMuaD4KKworI2luY2x1ZGUgImk5MTVfZHJ2 LmgiCisjaW5jbHVkZSAiaTkxNV9vYV9za2xndDMuaCIKKworZW51bSBtZXRyaWNfc2V0X2lkIHsK KwlNRVRSSUNfU0VUX0lEX1JFTkRFUl9CQVNJQyA9IDEsCit9OworCitpbnQgaTkxNV9vYV9uX2J1 aWx0aW5fbWV0cmljX3NldHNfc2tsZ3QzID0gMTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1 X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX3JlbmRlcl9iYXNpY1tdID0geworCXsgX01NSU8oMHgy NzEwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzE0KSwgMHgwMDgwMDAwMCB9LAorCXsg X01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzI0KSwgMHgwMDgwMDAw MCB9LAorCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAorfTsKKworc3RhdGljIGNvbnN0 IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19yZW5kZXJfYmFzaWNbXSA9IHsKKwl7 IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKKwl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTAw MDMgfSwKKwl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMTIwMTEgfSwKKwl7IF9NTUlPKDB4ZTc1OCks IDB4MDAwMTUwMTQgfSwKKwl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNTEwNTAgfSwKKwl7IF9NTUlP KDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwKKwl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNTUwNTQgfSwK K307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19yZW5kZXJf YmFzaWNbXSA9IHsKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTY2YzAxZTAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MTIxNzAyODAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTIzNzAyODAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MTZlYzAxZTAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MzAz MTcgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTU5MzAzZGYgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4M2Y5MDAwMDMgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWE0ZTAzODAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MGE2YzAwNTMgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTA2YzAwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MWM2YzAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGEx YjQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWMxYzAwMDEgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MDAyZjEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQyZjEwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MDA0YzQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE0Yzg0MDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGM0YzAwMDIgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDAwZDIwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYwZDgwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDgwZGEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGEwZGEwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MGMwZjA0MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZjY2 MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTAwZjAwMDEgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MDAyYzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTYyY2EyMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MDYyZDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgyZDgwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDAxMzMwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgx MzMwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAxNzAwMjAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MDgxNzAwMjEgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTAxNzAwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MDYzM2MwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgzM2MwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYzNzA4MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDgzNzA4NDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTAzNzAwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MWFjZTAyMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGFlYzUzMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MTBlYzAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWNlYzAw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE5YjgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MWM5YzAwMDIgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGNjYzAwMDIgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MGE4ZDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTA4ZjAwMDEgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MTZhYzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGQ5 MzMwMzEgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGY5MzNlM2YgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MDE5MzNkMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDM5MzA3M2MgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MDU5MzAwMGUgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5MzAwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTk5MzAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MWI5MzAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5MDAxNTcgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MWY5MDAxNTggfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MzU5MDAwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MmI5MDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MmQ5MDgw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MmY5MDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MzE5MDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTU5MDgwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MTc5MDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTk5MDgwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTE5 MDAwM2YgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDc3MTAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4NDE5MDIwYTAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTU5MDE1MTUgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4NDU5MDA1MjkgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDc5MDEwMjUg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTc5MDc3NzAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 NDk5MDIxMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MzM5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NGI5MDAxMDggfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4NTk5MDAwMDcgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDIx MDggfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDc3NzcgfSwKK307CisKK3N0YXRpYyBjb25z dCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKgorZ2V0X3JlbmRlcl9iYXNpY19tdXhfY29uZmlnKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCSAgICBpbnQgKmxlbikKK3sKKwkqbGVu ID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3JlbmRlcl9iYXNpYyk7CisJcmV0dXJuIG11eF9jb25m aWdfcmVuZGVyX2Jhc2ljOworfQorCitpbnQgaTkxNV9vYV9zZWxlY3RfbWV0cmljX3NldF9za2xn dDMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCWRldl9wcml2LT5wZXJm Lm9hLm11eF9yZWdzID0gTlVMTDsKKwlkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW4gPSAw OworCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0gTlVMTDsKKwlkZXZfcHJpdi0+ cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPSAwOworCWRldl9wcml2LT5wZXJmLm9hLmZsZXhf cmVncyA9IE5VTEw7CisJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9IDA7CisKKwlz d2l0Y2ggKGRldl9wcml2LT5wZXJmLm9hLm1ldHJpY3Nfc2V0KSB7CisJY2FzZSBNRVRSSUNfU0VU X0lEX1JFTkRFUl9CQVNJQzoKKwkJZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MgPQorCQkJZ2V0 X3JlbmRlcl9iYXNpY19tdXhfY29uZmlnKGRldl9wcml2LAorCQkJCQkJICAgICZkZXZfcHJpdi0+ cGVyZi5vYS5tdXhfcmVnc19sZW4pOworCQlpZiAoIWRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdz KSB7CisJCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIlJF TkRFUl9CQVNJQ1wiIG1ldHJpYyBzZXRcbiIpOworCisJCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3Jl Z2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCisJCQkgKiBhbmQgc28gaXQgd291bGRu J3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAorCQkJICogc28gc2hvdWxk bid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKKwkJCSAqLworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0K KworCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9CisJCQliX2NvdW50ZXJfY29u ZmlnX3JlbmRlcl9iYXNpYzsKKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVu ID0KKwkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19yZW5kZXJfYmFzaWMpOworCisJCWRl dl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9CisJCQlmbGV4X2V1X2NvbmZpZ19yZW5kZXJfYmFz aWM7CisJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQorCQkJQVJSQVlfU0laRShm bGV4X2V1X2NvbmZpZ19yZW5kZXJfYmFzaWMpOworCisJCXJldHVybiAwOworCWRlZmF1bHQ6CisJ CXJldHVybiAtRU5PREVWOworCX0KK30KKworc3RhdGljIHNzaXplX3QKK3Nob3dfcmVuZGVyX2Jh c2ljX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRy LCBjaGFyICpidWYpCit7CisJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRf SURfUkVOREVSX0JBU0lDKTsKK30KKworc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRl dl9hdHRyX3JlbmRlcl9iYXNpY19pZCA9IHsKKwkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9k ZSA9IDA0NDQgfSwKKwkuc2hvdyA9IHNob3dfcmVuZGVyX2Jhc2ljX2lkLAorCS5zdG9yZSA9IE5V TEwsCit9OworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfcmVuZGVyX2Jhc2ljW10g PSB7CisJJmRldl9hdHRyX3JlbmRlcl9iYXNpY19pZC5hdHRyLAorCU5VTEwsCit9OworCitzdGF0 aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9yZW5kZXJfYmFzaWMgPSB7CisJLm5hbWUg PSAiNDYxNmQ0NTAtMjM5My00ODM2LTgxNDYtNTNjNWVkODRkMzU5IiwKKwkuYXR0cnMgPSAgYXR0 cnNfcmVuZGVyX2Jhc2ljLAorfTsKKworaW50CitpOTE1X3BlcmZfcmVnaXN0ZXJfc3lzZnNfc2ts Z3QzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlpbnQgbXV4X2xlbjsK KwlpbnQgcmV0ID0gMDsKKworCWlmIChnZXRfcmVuZGVyX2Jhc2ljX211eF9jb25maWcoZGV2X3By aXYsICZtdXhfbGVuKSkgeworCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBl cmYubWV0cmljc19rb2JqLCAmZ3JvdXBfcmVuZGVyX2Jhc2ljKTsKKwkJaWYgKHJldCkKKwkJCWdv dG8gZXJyb3JfcmVuZGVyX2Jhc2ljOworCX0KKworCXJldHVybiAwOworCitlcnJvcl9yZW5kZXJf YmFzaWM6CisJcmV0dXJuIHJldDsKK30KKwordm9pZAoraTkxNV9wZXJmX3VucmVnaXN0ZXJfc3lz ZnNfc2tsZ3QzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlpbnQgbXV4 X2xlbjsKKworCWlmIChnZXRfcmVuZGVyX2Jhc2ljX211eF9jb25maWcoZGV2X3ByaXYsICZtdXhf bGVuKSkKKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwg Jmdyb3VwX3JlbmRlcl9iYXNpYyk7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X29hX3NrbGd0My5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9za2xndDMu aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZmN2VjMzIwNmJmMgot LS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffc2tsZ3QzLmgK QEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIEF1dG9nZW5lcmF0ZWQgZmlsZSwgRE8gTk9UIEVESVQg bWFudWFsbHkhCisgKgorICogQ29weXJpZ2h0IChjKSAyMDE1IEludGVsIENvcnBvcmF0aW9uCisg KgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu eSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGlu IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p dGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz aCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUg U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUg aXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u czoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u IG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1 ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0 d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX QVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJV VCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4g Tk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJ QUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRI RVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwor ICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhF IFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisj aWZuZGVmIF9fSTkxNV9PQV9TS0xHVDNfSF9fCisjZGVmaW5lIF9fSTkxNV9PQV9TS0xHVDNfSF9f CisKK2V4dGVybiBpbnQgaTkxNV9vYV9uX2J1aWx0aW5fbWV0cmljX3NldHNfc2tsZ3QzOworCitl eHRlcm4gaW50IGk5MTVfb2Ffc2VsZWN0X21ldHJpY19zZXRfc2tsZ3QzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdik7CisKK2V4dGVybiBpbnQgaTkxNV9wZXJmX3JlZ2lzdGVyX3N5 c2ZzX3NrbGd0MyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOworCitleHRlcm4g dm9pZCBpOTE1X3BlcmZfdW5yZWdpc3Rlcl9zeXNmc19za2xndDMoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X29hX3NrbGd0NC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9za2xn dDQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjFhZjRlYmU3ZDUx ZgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffc2tsZ3Q0 LmMKQEAgLTAsMCArMSwyNDcgQEAKKy8qCisgKiBBdXRvZ2VuZXJhdGVkIGZpbGUsIERPIE5PVCBF RElUIG1hbnVhbGx5IQorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBJbnRlbCBDb3Jwb3JhdGlv bgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0 byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFz c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVh bCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQg bGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1 Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2Yg dGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3 YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz c2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBp bmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICog U29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElO RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAor ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g IElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBC RSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBX SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ TkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9S IFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8K KworI2luY2x1ZGUgPGxpbnV4L3N5c2ZzLmg+CisKKyNpbmNsdWRlICJpOTE1X2Rydi5oIgorI2lu Y2x1ZGUgImk5MTVfb2Ffc2tsZ3Q0LmgiCisKK2VudW0gbWV0cmljX3NldF9pZCB7CisJTUVUUklD X1NFVF9JRF9SRU5ERVJfQkFTSUMgPSAxLAorfTsKKworaW50IGk5MTVfb2Ffbl9idWlsdGluX21l dHJpY19zZXRzX3NrbGd0NCA9IDE7CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcg Yl9jb3VudGVyX2NvbmZpZ19yZW5kZXJfYmFzaWNbXSA9IHsKKwl7IF9NTUlPKDB4MjcxMCksIDB4 MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcxNCksIDB4MDA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4 MjcyMCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcyNCksIDB4MDA4MDAwMDAgfSwKKwl7 IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg aTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfcmVuZGVyX2Jhc2ljW10gPSB7CisJeyBfTU1JTygw eGU0NTgpLCAweDAwMDA1MDA0IH0sCisJeyBfTU1JTygweGU1NTgpLCAweDAwMDEwMDAzIH0sCisJ eyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDExIH0sCisJeyBfTU1JTygweGU3NTgpLCAweDAwMDE1 MDE0IH0sCisJeyBfTU1JTygweGU0NWMpLCAweDAwMDUxMDUwIH0sCisJeyBfTU1JTygweGU1NWMp LCAweDAwMDUzMDUyIH0sCisJeyBfTU1JTygweGU2NWMpLCAweDAwMDU1MDU0IH0sCit9OworCitz dGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfcmVuZGVyX2Jhc2ljW10g PSB7CisJeyBfTU1JTygweDk4ODgpLCAweDE2NmMwMWUwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDEyMTcwMjgwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEyMzcwMjgwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDE2ZWMwMWUwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE3NmMwMWUwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDExOTMwMzE3IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE1OTMw M2RmIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDNmOTAwMDAzIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDFhNGUwM2IwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhNmMwMDUzIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDEwNmMwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFjNmMwMDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDBhMWI0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFj MWMwMDAxIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwMmYxMDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDA0MmYxMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwNGM0MDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDBhNGNhNDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjNGMwMDAy IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwMGQyMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDA2MGQ4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4MGRhMDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDBhMGRhMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjMGYwNDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDBlMGY1NjAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEwMGYw MDAxIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwMmM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDE2MmNhYTAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2MmQ4MDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDAwMTMzMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4MTMzMDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDAwMTcwMDIwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4 MTcwMDIxIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEwMTcwMDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDA2MzNjMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2MzcwODAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDEwMzcwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFhY2UwMjMw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhZWM1MzAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDEwZWMwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFjZWMwMDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDBhOWI4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFjOWMwMDAyIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDBhY2MyMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjY2Mw MDAyIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4OGQ4MDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDBhOGQ4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBlOGYxMDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDEwOGYwMDAxIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE2YWM4ODAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDFiNGUwMDIwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA5 NmM1MzAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDExNmMwMDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDFkNmMwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA5MWI4MDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDFiMWM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBiNGMyMDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA5MGQ4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDBmMGYxMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE3MmMwODAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDBkOTMzMDMxIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBmOTMzZTNmIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDAxOTMzZDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAzOTMw NzNjIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA1OTMwMDBlIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDFkOTMwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE5OTMwMDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDFiOTMwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFkOTAwMTU3IH0s CisJeyBfTU1JTygweDk4ODgpLCAweDFmOTAwMTU4IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDM1 OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDJiOTA4MDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDJkOTA4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDJmOTA4MDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDMxOTA4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE1OTA4MDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE3OTA4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDE5OTA4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFiOTA4MDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDExOTAwMDNmIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDUxOTBmZjMwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDQxOTAwMDYwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDU1OTAz MDMzIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQ1OTAxNDIxIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDQ3OTAwODAzIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDU3OTBmZmYxIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDQ5OTAwMDAxIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDRi OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDU5OTAwMDBmIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDQzOTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDUzOTBmZmZmIH0sCit9Owor CitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoKK2dldF9yZW5kZXJfYmFzaWNfbXV4 X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgICAgaW50ICps ZW4pCit7CisJKmxlbiA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19yZW5kZXJfYmFzaWMpOworCXJl dHVybiBtdXhfY29uZmlnX3JlbmRlcl9iYXNpYzsKK30KKworaW50IGk5MTVfb2Ffc2VsZWN0X21l dHJpY19zZXRfc2tsZ3Q0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlk ZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncyA9IE5VTEw7CisJZGV2X3ByaXYtPnBlcmYub2EubXV4 X3JlZ3NfbGVuID0gMDsKKwlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9IE5VTEw7 CisJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0gMDsKKwlkZXZfcHJpdi0+ cGVyZi5vYS5mbGV4X3JlZ3MgPSBOVUxMOworCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19s ZW4gPSAwOworCisJc3dpdGNoIChkZXZfcHJpdi0+cGVyZi5vYS5tZXRyaWNzX3NldCkgeworCWNh c2UgTUVUUklDX1NFVF9JRF9SRU5ERVJfQkFTSUM6CisJCWRldl9wcml2LT5wZXJmLm9hLm11eF9y ZWdzID0KKwkJCWdldF9yZW5kZXJfYmFzaWNfbXV4X2NvbmZpZyhkZXZfcHJpdiwKKwkJCQkJCSAg ICAmZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVuKTsKKwkJaWYgKCFkZXZfcHJpdi0+cGVy Zi5vYS5tdXhfcmVncykgeworCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNv bmZpZyBmb3IgXCJSRU5ERVJfQkFTSUNcIiBtZXRyaWMgc2V0XG4iKTsKKworCQkJLyogRUlOVkFM IGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcworCQkJICogYW5k IHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKKwkJ CSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCisJCQkgKi8KKwkJCXJldHVybiAt RUlOVkFMOworCQl9CisKKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQorCQkJ Yl9jb3VudGVyX2NvbmZpZ19yZW5kZXJfYmFzaWM7CisJCWRldl9wcml2LT5wZXJmLm9hLmJfY291 bnRlcl9yZWdzX2xlbiA9CisJCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfcmVuZGVyX2Jh c2ljKTsKKworCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQorCQkJZmxleF9ldV9jb25m aWdfcmVuZGVyX2Jhc2ljOworCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KKwkJ CUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfcmVuZGVyX2Jhc2ljKTsKKworCQlyZXR1cm4gMDsK KwlkZWZhdWx0OgorCQlyZXR1cm4gLUVOT0RFVjsKKwl9Cit9CisKK3N0YXRpYyBzc2l6ZV90Citz aG93X3JlbmRlcl9iYXNpY19pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0 dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQoreworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4i LCBNRVRSSUNfU0VUX0lEX1JFTkRFUl9CQVNJQyk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZGV2aWNl X2F0dHJpYnV0ZSBkZXZfYXR0cl9yZW5kZXJfYmFzaWNfaWQgPSB7CisJLmF0dHIgPSB7IC5uYW1l ID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCisJLnNob3cgPSBzaG93X3JlbmRlcl9iYXNpY19pZCwK Kwkuc3RvcmUgPSBOVUxMLAorfTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX3Jl bmRlcl9iYXNpY1tdID0geworCSZkZXZfYXR0cl9yZW5kZXJfYmFzaWNfaWQuYXR0ciwKKwlOVUxM LAorfTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfcmVuZGVyX2Jhc2lj ID0geworCS5uYW1lID0gImJhZDc3YzI0LWNjNjQtNDgwZC05OWJmLWU3Yjc0MDcxMzgwMCIsCisJ LmF0dHJzID0gIGF0dHJzX3JlbmRlcl9iYXNpYywKK307CisKK2ludAoraTkxNV9wZXJmX3JlZ2lz dGVyX3N5c2ZzX3NrbGd0NChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJ aW50IG11eF9sZW47CisJaW50IHJldCA9IDA7CisKKwlpZiAoZ2V0X3JlbmRlcl9iYXNpY19tdXhf Y29uZmlnKGRldl9wcml2LCAmbXV4X2xlbikpIHsKKwkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3Vw KGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3JlbmRlcl9iYXNpYyk7CisJCWlm IChyZXQpCisJCQlnb3RvIGVycm9yX3JlbmRlcl9iYXNpYzsKKwl9CisKKwlyZXR1cm4gMDsKKwor ZXJyb3JfcmVuZGVyX2Jhc2ljOgorCXJldHVybiByZXQ7Cit9CisKK3ZvaWQKK2k5MTVfcGVyZl91 bnJlZ2lzdGVyX3N5c2ZzX3NrbGd0NChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cit7CisJaW50IG11eF9sZW47CisKKwlpZiAoZ2V0X3JlbmRlcl9iYXNpY19tdXhfY29uZmlnKGRl dl9wcml2LCAmbXV4X2xlbikpCisJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5t ZXRyaWNzX2tvYmosICZncm91cF9yZW5kZXJfYmFzaWMpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9za2xndDQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfb2Ffc2tsZ3Q0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40 ZmFhOGM0NTc5Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X29hX3NrbGd0NC5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBBdXRvZ2VuZXJhdGVkIGZpbGUs IERPIE5PVCBFRElUIG1hbnVhbGx5IQorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBJbnRlbCBD b3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2Yg Y2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdh cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAor ICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5n IHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwg bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBj b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUK KyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo aXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBz aGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m IHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQs IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB QklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJ TkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQg SE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElB QklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJ U0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNP RlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4K KyAqCisgKi8KKworI2lmbmRlZiBfX0k5MTVfT0FfU0tMR1Q0X0hfXworI2RlZmluZSBfX0k5MTVf T0FfU0tMR1Q0X0hfXworCitleHRlcm4gaW50IGk5MTVfb2Ffbl9idWlsdGluX21ldHJpY19zZXRz X3NrbGd0NDsKKworZXh0ZXJuIGludCBpOTE1X29hX3NlbGVjdF9tZXRyaWNfc2V0X3NrbGd0NChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOworCitleHRlcm4gaW50IGk5MTVfcGVy Zl9yZWdpc3Rlcl9zeXNmc19za2xndDQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KTsKKworZXh0ZXJuIHZvaWQgaTkxNV9wZXJmX3VucmVnaXN0ZXJfc3lzZnNfc2tsZ3Q0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CisKKyNlbmRpZgotLSAKMi4xMi4wCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFp bGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK