From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhi Wang Subject: [RFC 29/29] drm/i915: gvt: vGPU command scanner Date: Thu, 28 Jan 2016 18:21:51 +0800 Message-ID: <1453976511-27322-30-git-send-email-zhi.a.wang@intel.com> References: <1453976511-27322-1-git-send-email-zhi.a.wang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id A582F6E7FE for ; Thu, 28 Jan 2016 02:25:06 -0800 (PST) In-Reply-To: <1453976511-27322-1-git-send-email-zhi.a.wang@intel.com> 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, igvt-g@lists.01.org Cc: daniel.vetter@ffwll.ch, david.j.cowperthwaite@intel.com List-Id: intel-gfx@lists.freedesktop.org RnJvbTogWXVsZWkgWmhhbmcgPHl1bGVpLnpoYW5nQGludGVsLmNvbT4KClRoaXMgcGF0Y2ggaW50 cm9kdWNlcyBhIGNvbW1hbmQgc2Nhbm5lciB0byBzY2FuIGd1ZXN0IGNvbW1hbmQgYnVmZmVycy4K ClNpZ25lZC1vZmYtYnk6IFl1bGVpIFpoYW5nIDx5dWxlaS56aGFuZ0BpbnRlbC5jb20+ClNpZ25l ZC1vZmYtYnk6IFpoaSBXYW5nIDx6aGkuYS53YW5nQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9ndnQvTWFrZWZpbGUgICAgIHwgICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3Z0L2NtZF9wYXJzZXIuYyB8IDIwMTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvY21kX3BhcnNlci5oIHwgIDQ2NiArKysrKysr KwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2RlYnVnLmggICAgICB8ICAgIDQgKwogZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5jICAgICAgICB8ICAgIDQgKwogZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Z0L2d2dC5oICAgICAgICB8ICAgIDMgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0 L2ludGVycnVwdC5jICB8ICAgNDkgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2ludGVycnVw dC5oICB8ICAgIDQgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3BlcmYuaCAgICAgICB8ICAg IDMgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5jICB8ICAgIDkgKwogZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5oICB8ICAgIDUgKy0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2d2dC90cmFjZS5oICAgICAgfCAgIDUyICsKIDEyIGZpbGVzIGNoYW5nZWQsIDI2 MTcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndnQvY21kX3BhcnNlci5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2NtZF9wYXJzZXIuaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d2dC9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9NYWtl ZmlsZQppbmRleCBjY2IwZDMyLi42YTYzMWI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndnQvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L01ha2VmaWxl CkBAIC0xLDcgKzEsNyBAQAogR1ZUX1NPVVJDRSA6PSBndnQubyBwYXJhbXMubyBhcGVydHVyZV9n bS5vIG1taW8ubyBoYW5kbGVycy5vIGluc3RhbmNlLm8gXAogCQl0cmFjZV9wb2ludHMubyBpbnRl cnJ1cHQubyBndHQubyBjZmdfc3BhY2UubyBvcHJlZ2lvbi5vIHV0aWxpdHkubyBcCiAJCWZiX2Rl Y29kZXIubyBkaXNwbGF5Lm8gZWRpZC5vIGNvbnRyb2wubyBleGVjbGlzdC5vIHNjaGVkdWxlci5v IFwKLQkJc2NoZWRfcG9saWN5Lm8gcmVuZGVyLm8KKwkJc2NoZWRfcG9saWN5Lm8gcmVuZGVyLm8g Y21kX3BhcnNlci5vCiAKIGNjZmxhZ3MteQkJCSs9IC1JJChzcmMpIC1JJChzcmMpLy4uIC1XYWxs IC1XZXJyb3IgLVduby11bnVzZWQtZnVuY3Rpb24KIGk5MTVfZ3Z0LXkJCQk6PSAkKEdWVF9TT1VS Q0UpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvY21kX3BhcnNlci5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2NtZF9wYXJzZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5kMWJjOWIwCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L2NtZF9wYXJzZXIuYwpAQCAtMCwwICsxLDIwMTggQEAKKy8qCisgKiBDb3B5 cmlnaHQoYykgMjAxMS0yMDE2IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVk LgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0 byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFz c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVh bCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQg bGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1 Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2Yg dGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3 YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz c2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBp bmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICog U29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElO RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAor ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g IElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBC RSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBX SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ TkcgRlJPTSwKKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9S IFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCisgKiBTT0ZUV0FSRS4KKyAqLworCisj aW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgImd2dC5oIgorI2luY2x1ZGUgInRyYWNl LmgiCisKKy8qIGd2dCB1c2VzIGJlbG93IGJpdHMgaW4gTk9PUF9JRDoKKyAqCSAgICBiaXQgMjEg LSAxNiBpcyBjb21tYW5kIHR5cGUuCisgKgkgICAgYml0IDE1IC0gMCAgaG9sZHMgY29tbWFuZCBz cGVjaWZpYyBpbmZvcm1hdGlvbi4KKyAqCisgKiBBc3N1bXB0aW9uOiBMaW51eC9XaW5kb3dzIGd1 ZXN0IHdpbGwgbm90IHVzZSBiaXRzIDIxIC0gYml0cyAxNiB3aXRoCisgKiBub24temVybyB2YWx1 ZS4KKyAqLworI2RlZmluZSBHVlRfTk9PUF9JRF9DTURfU0hJRlQJMTYKKyNkZWZpbmUgR1ZUX05P T1BfSURfQ01EX01BU0sJKDB4M2YgPDwgR1ZUX05PT1BfSURfQ01EX1NISUZUKQorI2RlZmluZSBD TURfTEVOR1RIX01BU0sJCTB4ZmYKKyNkZWZpbmUgZ21hZHJfZHdfbnVtYmVyKHMpCVwKKwkocy0+ dmd0LT5wZGV2LT5kZXZpY2VfaW5mby5nbWFkcl9ieXRlc19pbl9jbWQgPj4gMikKKyNkZWZpbmUg QklUX1JBTkdFX01BU0soYSwgYikJXAorCSgoMVVMIDw8ICgoYSkgKyAxKSkgLSAoMVVMIDw8IChi KSkpCisKK3Vuc2lnbmVkIGxvbmcgYnlwYXNzX3NjYW5fbWFzayA9IDA7CisKKy8qIHJpbmcgQUxM LCB0eXBlID0gMCAqLworc3RhdGljIHN0cnVjdCBzdWJfb3BfYml0cyBzdWJfb3BfbWlbXSA9IHsK Kwl7MzEsIDI5fSwKKwl7MjgsIDIzfSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgZGVjb2RlX2luZm8g ZGVjb2RlX2luZm9fbWkgPSB7CisJIk1JIiwKKwlPUF9MRU5fTUksCisJQVJSQVlfU0laRShzdWJf b3BfbWkpLAorCXN1Yl9vcF9taSwKK307CisKKy8qIHJpbmcgUkNTLCBjb21tYW5kIHR5cGUgMiAq Lworc3RhdGljIHN0cnVjdCBzdWJfb3BfYml0cyBzdWJfb3BfMmRbXSA9IHsKKwl7MzEsIDI5fSwK Kwl7MjgsIDIyfSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgZGVjb2RlX2luZm8gZGVjb2RlX2luZm9f MmQgPSB7CisJIjJEIiwKKwlPUF9MRU5fMkQsCisJQVJSQVlfU0laRShzdWJfb3BfMmQpLAorCXN1 Yl9vcF8yZCwKK307CisKKy8qIHJpbmcgUkNTLCBjb21tYW5kIHR5cGUgMyAqLworc3RhdGljIHN0 cnVjdCBzdWJfb3BfYml0cyBzdWJfb3BfM2RfbWVkaWFbXSA9IHsKKwl7MzEsIDI5fSwKKwl7Mjgs IDI3fSwKKwl7MjYsIDI0fSwKKwl7MjMsIDE2fSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgZGVjb2Rl X2luZm8gZGVjb2RlX2luZm9fM2RfbWVkaWEgPSB7CisJIjNEX01lZGlhIiwKKwlPUF9MRU5fM0Rf TUVESUEsCisJQVJSQVlfU0laRShzdWJfb3BfM2RfbWVkaWEpLAorCXN1Yl9vcF8zZF9tZWRpYSwK K307CisKKy8qIHJpbmcgVkNTLCBjb21tYW5kIHR5cGUgMyAqLworc3RhdGljIHN0cnVjdCBzdWJf b3BfYml0cyBzdWJfb3BfbWZ4X3ZjW10gPSB7CisJezMxLCAyOX0sCisJezI4LCAyN30sCisJezI2 LCAyNH0sCisJezIzLCAyMX0sCisJezIwLCAxNn0sCit9OworCitzdGF0aWMgc3RydWN0IGRlY29k ZV9pbmZvIGRlY29kZV9pbmZvX21meF92YyA9IHsKKwkiTUZYX1ZDIiwKKwlPUF9MRU5fTUZYX1ZD LAorCUFSUkFZX1NJWkUoc3ViX29wX21meF92YyksCisJc3ViX29wX21meF92YywKK307CisKKy8q IHJpbmcgVkVDUywgY29tbWFuZCB0eXBlIDMgKi8KK3N0YXRpYyBzdHJ1Y3Qgc3ViX29wX2JpdHMg c3ViX29wX3ZlYm94W10gPSB7CisJezMxLCAyOX0sCisJezI4LCAyN30sCisJezI2LCAyNH0sCisJ ezIzLCAyMX0sCisJezIwLCAxNn0sCit9OworCitzdGF0aWMgc3RydWN0IGRlY29kZV9pbmZvIGRl Y29kZV9pbmZvX3ZlYm94ID0geworCSJWRUJPWCIsCisJT1BfTEVOX1ZFQk9YLAorCUFSUkFZX1NJ WkUoc3ViX29wX3ZlYm94KSwKKwlzdWJfb3BfdmVib3gsCit9OworCitzdGF0aWMgc3RydWN0IGRl Y29kZV9pbmZvKiByaW5nX2RlY29kZV9pbmZvW0k5MTVfTlVNX1JJTkdTXVs4XSA9IHsKKwlbUkNT XSA9IHsKKwkJJmRlY29kZV9pbmZvX21pLAorCQlOVUxMLAorCQlOVUxMLAorCQkmZGVjb2RlX2lu Zm9fM2RfbWVkaWEsCisJCU5VTEwsCisJCU5VTEwsCisJCU5VTEwsCisJCU5VTEwsCisJfSwKKwor CVtWQ1NdID0geworCQkmZGVjb2RlX2luZm9fbWksCisJCU5VTEwsCisJCU5VTEwsCisJCSZkZWNv ZGVfaW5mb19tZnhfdmMsCisJCU5VTEwsCisJCU5VTEwsCisJCU5VTEwsCisJCU5VTEwsCisJfSwK KworCVtCQ1NdID0geworCQkmZGVjb2RlX2luZm9fbWksCisJCU5VTEwsCisJCSZkZWNvZGVfaW5m b18yZCwKKwkJTlVMTCwKKwkJTlVMTCwKKwkJTlVMTCwKKwkJTlVMTCwKKwkJTlVMTCwKKwl9LAor CisJW1ZFQ1NdID0geworCQkmZGVjb2RlX2luZm9fbWksCisJCU5VTEwsCisJCU5VTEwsCisJCSZk ZWNvZGVfaW5mb192ZWJveCwKKwkJTlVMTCwKKwkJTlVMTCwKKwkJTlVMTCwKKwkJTlVMTCwKKwl9 LAorCisJW1ZDUzJdID0geworCQkmZGVjb2RlX2luZm9fbWksCisJCU5VTEwsCisJCU5VTEwsCisJ CSZkZWNvZGVfaW5mb19tZnhfdmMsCisJCU5VTEwsCisJCU5VTEwsCisJCU5VTEwsCisJCU5VTEws CisJfSwKK307CisKK3N0YXRpYyBpbmxpbmUgdTMyIGdldF9vcGNvZGUodTMyIGNtZCwgaW50IHJp bmdfaWQpCit7CisJc3RydWN0IGRlY29kZV9pbmZvICogZF9pbmZvOworCisJaWYgKHJpbmdfaWQg Pj0gSTkxNV9OVU1fUklOR1MpCisJCXJldHVybiBJTlZBTElEX09QOworCisJZF9pbmZvID0gcmlu Z19kZWNvZGVfaW5mb1tyaW5nX2lkXVtDTURfVFlQRShjbWQpXTsKKwlpZiAoZF9pbmZvID09IE5V TEwpCisJCXJldHVybiBJTlZBTElEX09QOworCisJcmV0dXJuIGNtZCA+PiAoMzIgLSBkX2luZm8t Pm9wX2xlbik7Cit9CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGNtZF9pbmZvKiBmaW5kX2NtZF9l bnRyeShzdHJ1Y3QgcGd0X2RldmljZSAqcGRldiwKKwkJdW5zaWduZWQgaW50IG9wY29kZSwgaW50 IHJpbmdfaWQpCit7CisJc3RydWN0IGd2dF9jbWRfZW50cnkgKmU7CisKKwloYXNoX2Zvcl9lYWNo X3Bvc3NpYmxlKHBkZXYtPmNtZF90YWJsZSwgZSwgaGxpc3QsIG9wY29kZSkgeworCQlpZiAoKG9w Y29kZSA9PSBlLT5pbmZvLT5vcGNvZGUpICYmIChlLT5pbmZvLT5yaW5ncyAmICgxPDxyaW5nX2lk KSkpCisJCQlyZXR1cm4gZS0+aW5mbzsKKwl9CisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBp bmxpbmUgc3RydWN0IGNtZF9pbmZvKiBndnRfZ2V0X2NtZF9pbmZvKHN0cnVjdCBwZ3RfZGV2aWNl ICpwZGV2LAorCQl1MzIgY21kLCBpbnQgcmluZ19pZCkKK3sKKwl1MzIgb3Bjb2RlOworCisJb3Bj b2RlID0gZ2V0X29wY29kZShjbWQsIHJpbmdfaWQpOworCWlmIChvcGNvZGUgPT0gSU5WQUxJRF9P UCkgeworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlyZXR1cm4gZmluZF9jbWRfZW50cnkocGRldiwg b3Bjb2RlLCByaW5nX2lkKTsKK30KKworc3RhdGljIGlubGluZSB1MzIgc3ViX29wX3ZhbCh1MzIg Y21kLCB1MzIgaGksIHUzMiBsb3cpCit7CisJcmV0dXJuIChjbWQgPj4gbG93KSAmICgoMVUgPDwg KGhpLWxvdysxKSkgLSAxKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGd2dF9wcmludF9vcGNv ZGUodTMyIGNtZCwgaW50IHJpbmdfaWQpCit7CisJc3RydWN0IGRlY29kZV9pbmZvICogZF9pbmZv OworCWludCBpOworCisJaWYgKHJpbmdfaWQgPj0gSTkxNV9OVU1fUklOR1MpCisJCXJldHVybjsK KworCWRfaW5mbyA9IHJpbmdfZGVjb2RlX2luZm9bcmluZ19pZF1bQ01EX1RZUEUoY21kKV07CisJ aWYgKGRfaW5mbyA9PSBOVUxMKQorCQlyZXR1cm47CisKKwlndnRfZXJyKCJvcGNvZGU9MHgleCAl cyBzdWJfb3BzOiIsIGNtZCA+PiAoMzIgLSBkX2luZm8tPm9wX2xlbiksIGRfaW5mby0+bmFtZSk7 CisKKwlmb3IgKGkgPSAwOyBpPCBkX2luZm8tPm5yX3N1Yl9vcDsgaSsrKQorCQlwcmludGsoIjB4 JXggIiwgc3ViX29wX3ZhbChjbWQsIGRfaW5mby0+c3ViX29wW2ldLmhpLCAgZF9pbmZvLT5zdWJf b3BbaV0ubG93KSk7CisKKwlwcmludGsoIlxuIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdTMyICpj bWRfcHRyKHN0cnVjdCBwYXJzZXJfZXhlY19zdGF0ZSAqcywgaW50IGluZGV4KQoreworCXJldHVy biBzLT5pcF92YSArIChpbmRleCA8PCAyKTsKK30KKworc3RhdGljIGlubGluZSB1MzIgY21kX3Zh bChzdHJ1Y3QgcGFyc2VyX2V4ZWNfc3RhdGUgKnMsIGludCBpbmRleCkKK3sKKwlyZXR1cm4gKmNt ZF9wdHIocywgaW5kZXgpOworfQorCitzdGF0aWMgdm9pZCBwYXJzZXJfZXhlY19zdGF0ZV9kdW1w KHN0cnVjdCBwYXJzZXJfZXhlY19zdGF0ZSAqcykKK3sKKwlndnRfZXJyKCIgIHZndCVkIFJJTkcl ZDogcmluZ19zdGFydCglMDhseCkgcmluZ19lbmQoJTA4bHgpIgorCQkJIiByaW5nX2hlYWQoJTA4 bHgpIHJpbmdfdGFpbCglMDhseCkiLCBzLT52Z3QtPmlkLAorCQkJcy0+cmluZ19pZCwgcy0+cmlu Z19zdGFydCwgcy0+cmluZ19zdGFydCArIHMtPnJpbmdfc2l6ZSwgcy0+cmluZ19oZWFkLCBzLT5y aW5nX3RhaWwpOworCisJZ3Z0X2VycigiICAlcyAlcyBpcF9nbWEoJTA4bHgpICIsCisJCQlzLT5i dWZfdHlwZSA9PSBSSU5HX0JVRkZFUl9JTlNUUlVDVElPTiA/ICJSSU5HX0JVRkZFUiI6ICJCQVRD SF9CVUZGRVIiLAorCQkJcy0+YnVmX2FkZHJfdHlwZSA9PSBHVFRfQlVGRkVSID8gIkdUVCIgOiAi UFBHVFQiLCBzLT5pcF9nbWEpOworCisJaWYgKHMtPmlwX3ZhID09IE5VTEwpIHsKKwkJZ3Z0X2Vy cigiIGlwX3ZhKE5VTEwpIik7CisJfSBlbHNlIHsKKwkJaW50IGNudCA9IDA7CisJCWd2dF9lcnIo IiAgaXBfdmE9JXA6ICUwOHggJTA4eCAlMDh4ICUwOHggIiwKKwkJCQlzLT5pcF92YSwgY21kX3Zh bChzLCAwKSwgY21kX3ZhbChzLCAxKSwgY21kX3ZhbChzLCAyKSwgY21kX3ZhbChzLCAzKSk7CisK KwkJZ3Z0X3ByaW50X29wY29kZShjbWRfdmFsKHMsIDApLCBzLT5yaW5nX2lkKTsKKworCQkvKiBw cmludCB0aGUgd2hvbGUgcGFnZSB0byB0cmFjZSAqLworCQl0cmFjZV9wcmludGsoIkVSUk9SIGlw X3ZhPSVwOiAlMDh4ICUwOHggJTA4eCAlMDh4ICIsCisJCQkJcy0+aXBfdmEsIGNtZF92YWwocywg MCksIGNtZF92YWwocywgMSksIGNtZF92YWwocywgMiksIGNtZF92YWwocywgMykpOworCisJCXMt PmlwX3ZhID0gKHUzMiopKCgoKHU2NClzLT5pcF92YSkgPj4gMTIpIDw8IDEyKTsKKwkJd2hpbGUo Y250IDwgMTAyNCkgeworCQl0cmFjZV9wcmludGsoIkRVTVAgaXBfdmE9JXA6ICUwOHggJTA4eCAl MDh4ICUwOHggJTA4eCAlMDh4ICUwOHggJTA4eCAiLAorCQkJCXMtPmlwX3ZhLCBjbWRfdmFsKHMs IDApLCBjbWRfdmFsKHMsIDEpLCBjbWRfdmFsKHMsIDIpLCBjbWRfdmFsKHMsIDMpLAorCQkJCSAg ICAgICAgICBjbWRfdmFsKHMsIDQpLCBjbWRfdmFsKHMsIDUpLCBjbWRfdmFsKHMsIDYpLCBjbWRf dmFsKHMsIDcpKTsKKworCQkJcy0+aXBfdmErPTg7CisJCQljbnQrPTg7CisJCX0KKworCX0KK30K Kworc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZV9pcF92YShzdHJ1Y3QgcGFyc2VyX2V4ZWNfc3Rh dGUgKnMpCit7CisJdW5zaWduZWQgbG9uZyBsZW4gPSAwOworCisJQVNTRVJUKHMtPnJpbmdfaGVh ZCAhPSBzLT5yaW5nX3RhaWwpOworCisJaWYgKHMtPmJ1Zl90eXBlID09IFJJTkdfQlVGRkVSX0lO U1RSVUNUSU9OKSB7CisJCXVuc2lnbmVkIGxvbmcgcmluZ190b3AgPSBzLT5yaW5nX3N0YXJ0ICsg cy0+cmluZ19zaXplOworCQlpZiAocy0+cmluZ19oZWFkID4gcy0+cmluZ190YWlsKSB7CisJCQlp ZiAocy0+aXBfZ21hID49IHMtPnJpbmdfaGVhZCAmJiByaW5nX3RvcCkKKwkJCQlsZW4gPSAocy0+ aXBfZ21hIC0gcy0+cmluZ19oZWFkKTsKKwkJCWVsc2UgaWYgKHMtPmlwX2dtYSA+PSBzLT5yaW5n X3N0YXJ0ICYmCisJCQkJCXMtPmlwX2dtYSA8PSBzLT5yaW5nX3RhaWwpCisJCQkJbGVuID0gKHJp bmdfdG9wIC0gcy0+cmluZ19oZWFkKSArCisJCQkJCShzLT5pcF9nbWEgLSBzLT5yaW5nX3N0YXJ0 KTsKKwkJfSBlbHNlCisJCQlsZW4gPSAocy0+aXBfZ21hIC0gcy0+cmluZ19oZWFkKTsKKworCQlz LT5pcF92YSA9IHMtPnJiX3ZhICsgbGVuOworCX0gZWxzZSB7CisJCS8qIHNoYWRvdyBiYXRjaCBi dWZmZXIgKi8KKwkJQVNTRVJUKDApOworCX0KK30KKworc3RhdGljIGlubGluZSBpbnQgaXBfZ21h X3NldChzdHJ1Y3QgcGFyc2VyX2V4ZWNfc3RhdGUgKnMsIHVuc2lnbmVkIGxvbmcgaXBfZ21hKQor eworCUFTU0VSVCghKGlwX2dtYSAmICg0IC0gMSkpKTsKKworCXMtPmlwX2dtYSA9IGlwX2dtYTsK KworCXVwZGF0ZV9pcF92YShzKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW5saW5lIGlu dCBpcF9nbWFfYWR2YW5jZShzdHJ1Y3QgcGFyc2VyX2V4ZWNfc3RhdGUgKnMsIHVuc2lnbmVkIGlu dCBkd19sZW4pCit7CisJaW50IHJjID0gMDsKKworCXMtPmlwX2dtYSArPSAoZHdfbGVuIDw8IDIp OworCisJaWYgKHMtPmJ1Zl90eXBlID09IFJJTkdfQlVGRkVSX0lOU1RSVUNUSU9OKSB7CisJCS8q IGNyb3NzIHBhZ2UsIHJlc2V0IGlwX3ZhICovCisJCWlmIChzLT5pcF9nbWEgPj0gcy0+cmluZ19z dGFydCArIHMtPnJpbmdfc2l6ZSkgeworCQkJcy0+aXBfZ21hIC09IHMtPnJpbmdfc2l6ZTsKKwkJ fQorCX0KKworCXVwZGF0ZV9pcF92YShzKTsKKworCXJldHVybiByYzsKK30KKworc3RhdGljIGlu bGluZSBpbnQgZ2V0X2NtZF9sZW5ndGgoc3RydWN0IGNtZF9pbmZvICppbmZvLCB1MzIgY21kKQor eworCS8qCisJICogTUlfTk9PUCBpcyBzcGVjaWFsIGFzIHRoZSByZXBsYWNlbWVudCBlbGVtZW50 cy4gSXQncyBmaXhlZAorCSAqIGxlbmd0aCBpbiBkZWZpbml0aW9uLCBidXQgdmFyaWFibGUgbGVu Z3RoIHdoZW4gdXNpbmcgZm9yCisJICogcmVwbGFjZW1lbnQgcHVycG9zZS4gSW5zdGVhZCBvZiBo YXZpbmcgdGhlIHNhbWUgaGFuZGxlcgorCSAqIGludm9rZSB0d2ljZSAobWF5IGJlIHBvc3Rwb25l ZCksIHNwZWNpYWwgY2FzZSBsZW5ndGgKKwkgKiBoYW5kbGluZyBmb3IgTUlfTk9PUC4KKwkgKi8K KwlpZiAoaW5mby0+b3Bjb2RlID09IE9QX01JX05PT1ApIHsKKwkJdW5zaWduZWQgaW50IHN1Ym9w LCBsZW5ndGggPSBpbmZvLT5sZW47CisJCXN1Ym9wID0gKGNtZCAmIEdWVF9OT09QX0lEX0NNRF9N QVNLKSA+PgorCQkJR1ZUX05PT1BfSURfQ01EX1NISUZUOworCQlpZiAoc3Vib3ApCisJCQlsZW5n dGggPSBjbWQgJiBDTURfTEVOR1RIX01BU0s7CisKKwkJcmV0dXJuIGxlbmd0aDsKKwl9IGVsc2Ug aWYgKChpbmZvLT5mbGFnICYgRl9MRU5fTUFTSykgPT0gRl9MRU5fQ09OU1QpIHsKKwkJcmV0dXJu IGluZm8tPmxlbjsKKwl9IGVsc2UgLyogRl9MRU5fVkFSICoveworCQlyZXR1cm4gKGNtZCAmICgo MVUgPDwgaW5mby0+bGVuKSAtIDEpKSArIDI7CisJfQorfQorCitzdGF0aWMgaW5saW5lIGludCBj bWRfbGVuZ3RoKHN0cnVjdCBwYXJzZXJfZXhlY19zdGF0ZSAqcykKK3sKKwlyZXR1cm4gZ2V0X2Nt ZF9sZW5ndGgocy0+aW5mbywgY21kX3ZhbChzLCAwKSk7Cit9CisKKy8qIGRvIG5vdCByZW1vdmUg dGhpcywgc29tZSBwbGF0Zm9ybSBtYXkgbmVlZCBjbGZsdXNoIGhlcmUgKi8KKyNkZWZpbmUgcGF0 Y2hfdmFsdWUocywgYWRkciwgdmFsKSBkbyB7XAorCSphZGRyID0gdmFsOyBcCit9d2hpbGUoMCk7 CisKK3N0YXRpYyBib29sIGFkZHJfYXVkaXRfMzIoc3RydWN0IHBhcnNlcl9leGVjX3N0YXRlICpz LCBpbnQgaW5kZXgpCit7CisJLyogVE9ETzoKKwkgKiBBZGQgdGhlIGFkZHJlc3MgYXVkaXQgaW1w bGVtZW50YXRpb24gaGVyZS4gUmlnaHQgbm93IGRvIG5vdGhpbmcKKwkgKi8KKwlyZXR1cm4gdHJ1 ZTsKK30KKworc3RhdGljIGlubGluZSBib29sIGFkZHJlc3NfYXVkaXQoc3RydWN0IHBhcnNlcl9l eGVjX3N0YXRlICpzLCBpbnQgaW5kZXgpCit7CisJaW50IGdtYWRyX2J5dGVzID0gcy0+dmd0LT5w ZGV2LT5kZXZpY2VfaW5mby5nbWFkcl9ieXRlc19pbl9jbWQ7CisKKwkvKiBUT0RPOgorCSAqIEFk ZCB0aGUgYWRkcmVzcyBhdWRpdCBpbXBsZW1lbnRhdGlvbiBoZXJlLiBSaWdodCBub3cgZG8gbm90 aGluZworCSAqLworCUFTU0VSVChnbWFkcl9ieXRlcyA9PSA0IHx8IGdtYWRyX2J5dGVzID09IDgp OworCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBBY3R1YWxseSwgd2UgZG9uJ3QgbGlrZSB0 byBlbXVsYXRlIHJlZ2lzdGVyIGJlaGF2aW9yIGluIExSSSBoYW5kbGVycywKKyAqIEJ1dCBERV9S Uk1SIGlzIGFuIGV4Y2VwdGlvbiwgZXZlbiB3ZSBjYW4gbW9kaWZ5IGk5MTUgdG8gYWNjZXNzCisg KiBERV9SUk1SIHZpYSBNTUlPLCB0aGUgMkQgZHJpdmVyIHdpbGwgYWxzbyBhY2Nlc3MgaXQgdmlh IHN1Ym1pdHRlZAorICogYmF0Y2ggYnVmZmVyLgorICoKKyAqIFNvIHdlIGhhdmUgbm8gY2hvaWNl IGFuZCBoYXZlIHRvIGhhbmRsZSBpdCBoZXJlLCBhcyB3aW5kb3dzIGlzCisgKiB1c2luZyBkZWZl cnJlZCBmaWxwIGZyb20gZ2VuOCssIE1JX0RJU1BMQVlfRkxJUCBhbmQgTUlfV0FJVF9GT1JfRVZF TlQKKyAqIHdpbGwgbm90IGJlIGluIHRoZSBzYW1lIHN1Ym1pc3Npb24uIElmIGEgaTkxNSBzdWJt aXNzaW9uIG1vZGlmeQorICogREVfUlJNUiBhZnRlciB0aGUgZmlscCBzdWJtaXNzaW9uLCB0aGUg d2FpdCBzdWJtaXNzaW9uIG9mIHdpbmRvd3MKKyAqIHdpbGwgaGFuZyBhcyB0aGUgbmVlZGVkIGV2 ZW50cyBhcmUgZGlzYWJsZWQgYnkgaTkxNS4gT25seSBtb2RpZnkgaTkxNQorICogd2lsbCBub3Qg d29yaywgYXMgMkQgZHJpdmVyKHhmODYtdmlkZW8taW50ZWwpIGFsc28gbW9kaWZ5IGl0IGRpcmVj dGx5LgorICogKi8KKworc3RhdGljIGludCBjbWRfaGFuZGxlcl9scmlfZGVfcnJtcihzdHJ1Y3Qg cGFyc2VyX2V4ZWNfc3RhdGUgKnMpCit7CisKKwlpbnQgaTsKKwlpbnQgY21kX2xlbiA9IGNtZF9s ZW5ndGgocyk7CisJdW5zaWduZWQgbG9uZyBvZmZzZXQ7CisJdW5zaWduZWQgbG9uZyB2YWw7CisK Kwlmb3IgKGkgPSAxOyBpIDwgY21kX2xlbjsgaSArPSAyKSB7CisJCW9mZnNldCA9IGNtZF92YWwo cywgaSkgJiBCSVRfUkFOR0VfTUFTSygyMiwgMik7CisJCXZhbCA9IGNtZF92YWwocywgaSArIDEp OworCisJCWlmIChvZmZzZXQgPT0gX0RFUlJNUikKKwkJCWJyZWFrOworCX0KKworCWlmIChpID09 IGNtZF9sZW4pIHsKKwkJZ3Z0X2VycigiTm8gREVfUlJNUiBpbiBMUkk/Iik7CisJCXJldHVybiAt RUlOVkFMOworCX0KKworCXBhdGNoX3ZhbHVlKHMsIGNtZF9wdHIocywgaSksIDApOworCXBhdGNo X3ZhbHVlKHMsIGNtZF9wdHIocywgaSArIDEpLCAwKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IGJvb2wgaXNfc2hhZG93ZWRfbW1pbyh1bnNpZ25lZCBpbnQgb2Zmc2V0KQoreworCWJvb2wgcmV0 ID0gZmFsc2U7CisJaWYgKChvZmZzZXQgPT0gMHgyMTY4KSB8fCAvKkJCIGN1cnJlbnQgaGVhZCBy ZWdpc3RlciBVRFcgKi8KKwkgICAgKG9mZnNldCA9PSAweDIxNDApIHx8IC8qQkIgY3VycmVudCBo ZWFkZXIgcmVnaXN0ZXIgKi8KKwkgICAgKG9mZnNldCA9PSAweDIxMWMpIHx8IC8qc2Vjb25kIEJC IGhlYWRlciByZWdpc3RlciBVRFcgKi8KKwkgICAgKG9mZnNldCA9PSAweDIxMTQpKSB7IC8qc2Vj b25kIEJCIGhlYWRlciByZWdpc3RlciBVRFcgKi8KKwkJcmV0ID0gdHJ1ZTsKKwl9CisKKwlyZXR1 cm4gcmV0OworfQorCitzdGF0aWMgaW50IGNtZF9yZWdfaGFuZGxlcihzdHJ1Y3QgcGFyc2VyX2V4 ZWNfc3RhdGUgKnMsCisJdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGluZGV4LCBj aGFyICpjbWQpCit7CisJc3RydWN0IHZndF9kZXZpY2UgKnZndCA9IHMtPnZndDsKKwlzdHJ1Y3Qg cGd0X2RldmljZSAqcGRldiA9IHZndC0+cGRldjsKKwlpbnQgcmMgPSAtMTsKKworCWlmICghcmVn X2lzX21taW8ocGRldiwgb2Zmc2V0ICsgNCkpeworCQlyYyA9IC0xOworCQlnb3RvIHJlZ19oYW5k bGU7CisJfQorCisJaWYgKGlzX3NoYWRvd2VkX21taW8ob2Zmc2V0KSkgeworCQlndnRfd2Fybigi Vk0tJWQ6ICEhISBGb3VuZCBhY2Nlc3Mgb2Ygc2hhZG93ZWQgTU1JTzwweCV4PiEiLAorCQkJIHMt PnZndC0+dm1faWQsIG9mZnNldCk7CisJfQorCityZWdfaGFuZGxlOgorCWlmICghcmMpCisJCXJl Z19zZXRfY21kX2FjY2VzcyhwZGV2LCBvZmZzZXQpOworCWVsc2UgeworCQlndnRfZXJyKCIlcyBh Y2Nlc3MgdG8gbm9uLXJlbmRlciByZWdpc3RlciAoJXgpIiwgY21kLCBvZmZzZXQpOworCX0KKwor CXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGd2dF9jbWRfaGFuZGxlcl9scmkoc3RydWN0IHBh cnNlcl9leGVjX3N0YXRlICpzKQoreworCXVuc2lnbmVkIGxvbmcgb2Zmc2V0OworCWludCBpLCBy YyA9IDA7CisJaW50IGNtZF9sZW4gPSBjbWRfbGVuZ3RoKHMpOworCisJZm9yIChpID0gMTsgaSA8 IGNtZF9sZW47IGkgKz0gMikgeworCQlvZmZzZXQgPSBjbWRfdmFsKHMsIGkpICYgQklUX1JBTkdF X01BU0soMjIsIDIpOworCQlyYyB8PSBjbWRfcmVnX2hhbmRsZXIocywgb2Zmc2V0LCBpLCAibHJp Iik7CisKKwkJaWYgKElTX0JST0FEV0VMTChzLT52Z3QtPnBkZXYtPmRldl9wcml2KSAmJiBvZmZz ZXQgPT0gX0RFUlJNUikgeworCQkJcmMgPSBjbWRfaGFuZGxlcl9scmlfZGVfcnJtcihzKTsKKwkJ CWlmIChyYykgeworCQkJCWd2dF9lcnIoImZhaWwgdG8gaGFuZGxlIGxyaSBkZSBycm1yIGNhc2Ui KTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCX0KKworCXJldHVybiByYzsKK30KKworc3RhdGlj IGludCBndnRfY21kX2hhbmRsZXJfbHJyKHN0cnVjdCBwYXJzZXJfZXhlY19zdGF0ZSAqcykKK3sK KwlpbnQgaSwgcmMgPSAwOworCWludCBjbWRfbGVuID0gY21kX2xlbmd0aChzKTsKKworCWZvciAo aSA9IDE7IGkgPCBjbWRfbGVuOyBpICs9IDIpIHsKKwkJcmMgPSBjbWRfcmVnX2hhbmRsZXIocywK KwkJCWNtZF92YWwocywgaSkgJiBCSVRfUkFOR0VfTUFTSygyMiwgMiksIGksICJscnItc3JjIik7 CisJCXJjIHw9IGNtZF9yZWdfaGFuZGxlcihzLAorCQkJY21kX3ZhbChzLCBpKzEpICYgQklUX1JB TkdFX01BU0soMjIsIDIpLCBpLCAibHJyLWRzdCIpOworCX0KKworCXJldHVybiByYzsKK30KKwor c3RhdGljIGludCBndnRfY21kX2hhbmRsZXJfbHJtKHN0cnVjdCBwYXJzZXJfZXhlY19zdGF0ZSAq cykKK3sKKwlpbnQgaSwgcmMgPSAwOworCWludCBjbWRfbGVuID0gY21kX2xlbmd0aChzKTsKKwor CWZvciAoaSA9IDE7IGkgPCBjbWRfbGVuOykgeworCQlyYyB8PSBjbWRfcmVnX2hhbmRsZXIocywK KwkJCWNtZF92YWwocywgaSkgJiBCSVRfUkFOR0VfTUFTSygyMiwgMiksIGksICJscm0iKTsKKwkJ aSArPSBnbWFkcl9kd19udW1iZXIocykgKyAxOworCX0KKworCXJldHVybiByYzsKK30KKworc3Rh dGljIGludCBndnRfY21kX2hhbmRsZXJfc3JtKHN0cnVjdCBwYXJzZXJfZXhlY19zdGF0ZSAqcykK K3sKKwlpbnQgaSwgcmMgPSAwOworCWludCBjbWRfbGVuID0gY21kX2xlbmd0aChzKTsKKworCWZv ciAoaSA9IDE7IGkgPCBjbWRfbGVuOykgeworCQlyYyB8PSBjbWRfcmVnX2hhbmRsZXIocywKKwkJ CWNtZF92YWwocywgaSkgJiBCSVRfUkFOR0VfTUFTSygyMiwgMiksIGksICJzcm0iKTsKKwkJaSAr PSBnbWFkcl9kd19udW1iZXIocykgKyAxOworCX0KKworCXJldHVybiByYzsKK30KKworc3RhdGlj IGludCBndnRfY21kX2hhbmRsZXJfcGlwZV9jb250cm9sKHN0cnVjdCBwYXJzZXJfZXhlY19zdGF0 ZSAqcykKK3sKKwlpbnQgaSwgcmMgPSAwOworCWludCBjbWRfbGVuID0gY21kX2xlbmd0aChzKTsK KworCisJZm9yIChpID0gMTsgaSA8IGNtZF9sZW47KSB7CisJCWlmIChjbWRfdmFsKHMsIGkpICYg UElQRV9DT05UUk9MX01NSU9fV1JJVEUpCisJCQlyYyB8PSBjbWRfcmVnX2hhbmRsZXIocywKKwkJ CQljbWRfdmFsKHMsIGkrMSkgJiBCSVRfUkFOR0VfTUFTSygyMiwgMiksIGksICJwaXBlX2N0cmwi KTsKKwkJZWxzZSBpZiAoY21kX3ZhbChzLCBpKSAmICgyIDw8IDE0KSkKKwkJCXJjIHw9IGNtZF9y ZWdfaGFuZGxlcihzLCAweDIzNTAsIGksICJwaXBlX2N0cmwiKTsKKwkJZWxzZSBpZiAoY21kX3Zh bChzLCBpKSAmICgzIDw8IDE0KSkKKwkJCXJjIHw9IGNtZF9yZWdfaGFuZGxlcihzLCBfUkVHX1JD U19USU1FU1RBTVAsIGksICJwaXBlX2N0cmwiKTsKKworCQlpZiAoIXJjKSB7CisJCQlpZiAoY21k X3ZhbChzLCBpKSAmIFBJUEVfQ09OVFJPTF9OT1RJRlkpIHsKKwkJCQlzZXRfYml0KGd2dF9yaW5n X2lkX3RvX3BpcGVfY29udHJvbF9ub3RpZnlfZXZlbnQocy0+cmluZ19pZCksCisJCQkJCXMtPndv cmtsb2FkLT5wZW5kaW5nX2V2ZW50cyk7CisJCQl9CisJCX0KKwkJaSArPSBnbWFkcl9kd19udW1i ZXIocykgKyAzOworCX0KKworCXJldHVybiByYzsKK30KKworc3RhdGljIGludCBndnRfY21kX2hh bmRsZXJfbWlfdXNlcl9pbnRlcnJ1cHQoc3RydWN0IHBhcnNlcl9leGVjX3N0YXRlICpzKQorewor CXNldF9iaXQoZ3Z0X3JpbmdfaWRfdG9fbWlfdXNlcl9pbnRlcnJ1cHRfZXZlbnQocy0+cmluZ19p ZCksIHMtPndvcmtsb2FkLT5wZW5kaW5nX2V2ZW50cyk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRp YyBpbnQgZ3Z0X2NtZF9oYW5kbGVyX21pX2JhdGNoX2J1ZmZlcl9lbmQoc3RydWN0IHBhcnNlcl9l eGVjX3N0YXRlICpzKQoreworCWludCByYzsKKworCWlmIChzLT5idWZfdHlwZSA9PSBCQVRDSF9C VUZGRVJfMk5EX0xFVkVMKSB7CisJCXMtPmJ1Zl90eXBlID0gQkFUQ0hfQlVGRkVSX0lOU1RSVUNU SU9OOworCQlyYyA9IGlwX2dtYV9zZXQocywgcy0+cmV0X2lwX2dtYV9iYik7CisJCXMtPmJ1Zl9h ZGRyX3R5cGUgPSBzLT5zYXZlZF9idWZfYWRkcl90eXBlOworCX0gZWxzZSB7CisJCXMtPmJ1Zl90 eXBlID0gUklOR19CVUZGRVJfSU5TVFJVQ1RJT047CisJCXMtPmJ1Zl9hZGRyX3R5cGUgPSBHVFRf QlVGRkVSOworCQlyYyA9IGlwX2dtYV9zZXQocywgcy0+cmV0X2lwX2dtYV9yaW5nKTsKKwl9CisK KwlyZXR1cm4gcmM7Cit9CisKKyNkZWZpbmUgUExBTkVfU0VMRUNUX1NISUZUCTE5CisjZGVmaW5l IFBMQU5FX1NFTEVDVF9NQVNLCSgweDcgPDwgUExBTkVfU0VMRUNUX1NISUZUKQorI2RlZmluZSBT VVJGX01BU0sJCTB4RkZGRkYwMDAKKyNkZWZpbmUgUElUQ0hfTUFTSwkJMHgwMDAwRkZDMAorI2Rl ZmluZSBUSUxFX1BBUkFfU0hJRlQJCTB4MAorI2RlZmluZSBUSUxFX1BBUkFfTUFTSwkJMHgxCisv KiBQcmltYXJ5IHBsYW5lIGFuZCBzcHJpdGUgcGxhbmUgaGFzIHRoZSBzYW1lIHRpbGUgc2hpZnQg aW4gY29udHJvbCByZWcgKi8KKyNkZWZpbmUgUExBTkVfVElMRV9TSElGVAlfUFJJX1BMQU5FX1RJ TEVfU0hJRlQKKyNkZWZpbmUgUExBTkVfVElMRV9NQVNLCQkoMHgxIDw8IFBMQU5FX1RJTEVfU0hJ RlQpCisjZGVmaW5lIEZMSVBfVFlQRV9NQVNLCQkweDMKKworI2RlZmluZSBESVNQTEFZX0ZMSVBf UExBTkVfQSAgMHgwCisjZGVmaW5lIERJU1BMQVlfRkxJUF9QTEFORV9CICAweDEKKyNkZWZpbmUg RElTUExBWV9GTElQX1NQUklURV9BICAweDIKKyNkZWZpbmUgRElTUExBWV9GTElQX1NQUklURV9C ICAweDMKKyNkZWZpbmUgRElTUExBWV9GTElQX1BMQU5FX0MgIDB4NAorI2RlZmluZSBESVNQTEFZ X0ZMSVBfU1BSSVRFX0MgIDB4NQorCisvKiBUaGUgTk9PUCBmb3IgTUlfRElTUExBWV9GTElQIGhh cyBiZWxvdyBpbmZvcm1hdGlvbiBzdG9yZWQgaW4gTk9PUF9JRDoKKyAqCisgKgliaXQgMjEgLSBi aXQgMTYgaXMgMHgxNCwgb3Bjb2RlIG9mIE1JX0RJU1BMQVlfRkxJUDsKKyAqCWJpdCAxMCAtIGJp dCA4ICBpcyBwbGFuZSBzZWxlY3Q7CisgKgliaXQgNyAgLSBiaXQgMCAgaXMgdGhlIGNtZCBsZW5n dGgKKyAqLworI2RlZmluZSBQTEFORV9JTkZPX1NISUZUCTgKKyNkZWZpbmUgUExBTkVfSU5GT19N QVNLCQkoMHg3IDw8IFBMQU5FX0lORk9fU0hJRlQpCisKK3N0YXRpYyBib29sIGRpc3BsYXlfZmxp cF9kZWNvZGVfcGxhbmVfaW5mbyh1MzIgIHBsYW5lX2NvZGUsIGVudW0gcGlwZSAqcGlwZSwgZW51 bSBndnRfcGxhbmVfdHlwZSAqcGxhbmUgKQoreworCXN3aXRjaCAocGxhbmVfY29kZSkgeworCQlj YXNlIERJU1BMQVlfRkxJUF9QTEFORV9BOgorCQkJKnBpcGUgPSBQSVBFX0E7CisJCQkqcGxhbmUg PSBQUklNQVJZX1BMQU5FOworCQkJYnJlYWs7CisJCWNhc2UgRElTUExBWV9GTElQX1BMQU5FX0I6 CisJCQkqcGlwZSA9IFBJUEVfQjsKKwkJCSpwbGFuZSA9IFBSSU1BUllfUExBTkU7CisJCQlicmVh azsKKwkJY2FzZSBESVNQTEFZX0ZMSVBfU1BSSVRFX0E6CisJCQkqcGlwZSA9IFBJUEVfQTsKKwkJ CSpwbGFuZSA9IFNQUklURV9QTEFORTsKKwkJCWJyZWFrOworCQljYXNlIERJU1BMQVlfRkxJUF9T UFJJVEVfQjoKKwkJCSpwaXBlID0gUElQRV9COworCQkJKnBsYW5lID0gU1BSSVRFX1BMQU5FOwor CQkJYnJlYWs7CisJCWNhc2UgRElTUExBWV9GTElQX1BMQU5FX0M6CisJCQkqcGlwZSA9IFBJUEVf QzsKKwkJCSpwbGFuZSA9IFBSSU1BUllfUExBTkU7CisJCQlicmVhazsKKwkJY2FzZSBESVNQTEFZ X0ZMSVBfU1BSSVRFX0M6CisJCQkqcGlwZSA9IFBJUEVfQzsKKwkJCSpwbGFuZSA9IFNQUklURV9Q TEFORTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJcmV0dXJuIGZhbHNlOworCX0KKworCXJl dHVybiB0cnVlOworCit9CisKKyNkZWZpbmUgR0VUX0lORk9fRk9SX0ZMSVAocGlwZSwgcGxhbmUs IAkJCQkJXAorCQkJY3RybF9yZWcsIHN1cmZfcmVnLCBzdHJpZGVfcmVnLCBzdHJpZGVfbWFzaykJ XAorZG97CQkJCQkJCQkJXAorCWlmIChwbGFuZSA9PSBQUklNQVJZX1BMQU5FKSB7CQkJCQlcCisJ CWN0cmxfcmVnID0gR1ZUX0RTUENOVFIocGlwZSk7CQkJCVwKKwkJc3VyZl9yZWcgPSBHVlRfRFNQ U1VSRihwaXBlKTsJCQkJXAorCQlzdHJpZGVfcmVnID0gR1ZUX0RTUFNUUklERShwaXBlKTsJCQlc CisJCXN0cmlkZV9tYXNrID0gX1BSSV9QTEFORV9TVFJJREVfTUFTSzsJCQlcCisJfSBlbHNlIHsJ CQkJCQkJXAorCQlBU1NFUlQgKHBsYW5lID09IFNQUklURV9QTEFORSk7CQkJCVwKKwkJY3RybF9y ZWcgPSBHVlRfU1BSQ1RMKHBpcGUpOwkJCQlcCisJCXN1cmZfcmVnID0gR1ZUX1NQUlNVUkYocGlw ZSk7CQkJCVwKKwkJc3RyaWRlX3JlZyA9IEdWVF9TUFJTVFJJREUocGlwZSk7CQkJXAorCQlzdHJp ZGVfbWFzayA9IF9TUFJJVEVfU1RSSURFX01BU0s7CQkJXAorCX0JCQkJCQkJCVwKK313aGlsZSgw KTsKKworc3RhdGljIGJvb2wgZ3Z0X2ZsaXBfcGFyYW1ldGVyX2NoZWNrKHN0cnVjdCBwYXJzZXJf ZXhlY19zdGF0ZSAqcywKKwkJCQl1MzIgcGxhbmVfY29kZSwKKwkJCQl1MzIgc3RyaWRlX3ZhbCwK KwkJCQl1MzIgc3VyZl92YWwpCit7CisJZW51bSBwaXBlIHBpcGUgPSBJOTE1X01BWF9QSVBFUzsK KwllbnVtIGd2dF9wbGFuZV90eXBlIHBsYW5lID0gTUFYX1BMQU5FOworCXUzMiBzdXJmX3JlZywg Y3RybF9yZWc7CisJdTMyIHN0cmlkZV9yZWcsIHN0cmlkZV9tYXNrLCBwaHlzX3N0cmlkZTsKKwl1 MzIgdGlsZV9wYXJhLCB0aWxlX2luX2N0cmw7CisJYm9vbCBhc3luY19mbGlwOworCisJaWYgKCFk aXNwbGF5X2ZsaXBfZGVjb2RlX3BsYW5lX2luZm8ocGxhbmVfY29kZSwgJnBpcGUsICZwbGFuZSkp CisJCXJldHVybiBmYWxzZTsKKworCUdFVF9JTkZPX0ZPUl9GTElQKHBpcGUsIHBsYW5lLCBjdHJs X3JlZywgc3VyZl9yZWcsIHN0cmlkZV9yZWcsIHN0cmlkZV9tYXNrKTsKKworCWFzeW5jX2ZsaXAg PSAoKHN1cmZfdmFsICYgRkxJUF9UWVBFX01BU0spID09IDB4MSk7CisJdGlsZV9wYXJhID0gKChz dHJpZGVfdmFsICYgVElMRV9QQVJBX01BU0spID4+IFRJTEVfUEFSQV9TSElGVCk7CisJdGlsZV9p bl9jdHJsID0gKF9fdnJlZyhzLT52Z3QsIGN0cmxfcmVnKSAmIFBMQU5FX1RJTEVfTUFTSykKKwkJ CQk+PiBQTEFORV9USUxFX1NISUZUOworCisJcGh5c19zdHJpZGUgPSBfX3ZyZWcocy0+dmd0LCBz dHJpZGVfcmVnKTsKKworCWlmICgoX192cmVnKHMtPnZndCwgc3RyaWRlX3JlZykgJiBzdHJpZGVf bWFzaykKKwkJIT0gKHN0cmlkZV92YWwgJiBQSVRDSF9NQVNLKSkgeworCisJCWlmIChhc3luY19m bGlwKSB7CisJCQlndnRfd2FybigiQ2Fubm90IGNoYW5nZSBzdHJpZGUgaW4gYXN5bmMgZmxpcCEi KTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCX0KKworCWlmICh0aWxlX3BhcmEgIT0gdGlsZV9p bl9jdHJsKSB7CisKKwkJaWYgKGFzeW5jX2ZsaXApIHsKKwkJCWd2dF93YXJuKCJDYW5ub3QgY2hh bmdlIHRpbGluZyBpbiBhc3luYyBmbGlwISIpOworCQkJcmV0dXJuIGZhbHNlOworCQl9CisJfQor CisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBpbnQgZ3Z0X2hhbmRsZV9taV9kaXNwbGF5X2Zs aXAoc3RydWN0IHBhcnNlcl9leGVjX3N0YXRlICpzKQoreworCXUzMiBzdXJmX3JlZywgc3VyZl92 YWwsIGN0cmxfcmVnOworCXUzMiBzdHJpZGVfcmVnLCBzdHJpZGVfdmFsLCBzdHJpZGVfbWFzazsK Kwl1MzIgdGlsZV9wYXJhOworCXUzMiBvcGNvZGUsIHBsYW5lX2NvZGU7CisJZW51bSBwaXBlIHBp cGU7CisJZW51bSBndnRfcGxhbmVfdHlwZSBwbGFuZTsKKwlpbnQgbGVuZ3RoLCByYyA9IDA7CisJ c3RydWN0IGd2dF9mYl9ub3RpZnlfbXNnIG1zZzsKKwlpbnQgaTsKKworCW9wY29kZSA9IGNtZF92 YWwocywgMCk7CisJc3RyaWRlX3ZhbCA9IGNtZF92YWwocywgMSk7CisJc3VyZl92YWwgPSBjbWRf dmFsKHMsIDIpOworCisJcGxhbmVfY29kZSA9IChvcGNvZGUgJiBQTEFORV9TRUxFQ1RfTUFTSykg Pj4gUExBTkVfU0VMRUNUX1NISUZUOworCWxlbmd0aCA9IGNtZF9sZW5ndGgocyk7CisKKwlpZiAo IWRpc3BsYXlfZmxpcF9kZWNvZGVfcGxhbmVfaW5mbyhwbGFuZV9jb2RlLCAmcGlwZSwgJnBsYW5l KSkgeworCQlnb3RvIHdyb25nX2NvbW1hbmQ7CisJfQorCisJaWYgKGxlbmd0aCA9PSA0KSB7CisJ CWd2dF93YXJuKCJQYWdlIGZsaXAgb2YgU3RlcmVvIDNEIGlzIG5vdCBzdXBwb3J0ZWQhIik7CisJ CWdvdG8gd3JvbmdfY29tbWFuZDsKKwl9IGVsc2UgaWYgKGxlbmd0aCAhPSAzKSB7CisJCWd2dF93 YXJuKCJGbGlwIGxlbmd0aCBub3QgZXF1YWwgdG8gMywgaWdub3JlIGhhbmRsaW5nIGZsaXBwaW5n Iik7CisJCWdvdG8gd3JvbmdfY29tbWFuZDsKKwl9CisKKwlpZiAoKHBpcGUgPT0gSTkxNV9NQVhf UElQRVMpIHx8IChwbGFuZSA9PSBNQVhfUExBTkUpKSB7CisJCWd2dF93YXJuKCJJbnZhbGlkIHBp cGUvcGxhbmUgaW4gTUlfRElTUExBWV9GTElQISIpOworCQlnb3RvIHdyb25nX2NvbW1hbmQ7CisJ fQorCisJaWYgKCFndnRfZmxpcF9wYXJhbWV0ZXJfY2hlY2socywgcGxhbmVfY29kZSwgc3RyaWRl X3ZhbCwgc3VyZl92YWwpKQorCQlnb3RvIHdyb25nX2NvbW1hbmQ7CisKKwlHRVRfSU5GT19GT1Jf RkxJUChwaXBlLCBwbGFuZSwKKwkJCWN0cmxfcmVnLCBzdXJmX3JlZywgc3RyaWRlX3JlZywgc3Ry aWRlX21hc2spOworCXRpbGVfcGFyYSA9ICgoc3RyaWRlX3ZhbCAmIFRJTEVfUEFSQV9NQVNLKSA+ PiBUSUxFX1BBUkFfU0hJRlQpOworCisJX192cmVnKHMtPnZndCwgc3RyaWRlX3JlZykgPSAoc3Ry aWRlX3ZhbCAmIHN0cmlkZV9tYXNrKSB8CisJCShfX3ZyZWcocy0+dmd0LCBzdHJpZGVfcmVnKSAm ICh+c3RyaWRlX21hc2spKTsKKwlfX3ZyZWcocy0+dmd0LCBjdHJsX3JlZykgPSAodGlsZV9wYXJh IDw8IFBMQU5FX1RJTEVfU0hJRlQpIHwKKwkJKF9fdnJlZyhzLT52Z3QsIGN0cmxfcmVnKSAmICh+ UExBTkVfVElMRV9NQVNLKSk7CisJX192cmVnKHMtPnZndCwgc3VyZl9yZWcpID0gKHN1cmZfdmFs ICYgU1VSRl9NQVNLKSB8CisJCShfX3ZyZWcocy0+dmd0LCBzdXJmX3JlZykgJiAoflNVUkZfTUFT SykpOworCV9fc3JlZyhzLT52Z3QsIHN0cmlkZV9yZWcpID0gX192cmVnKHMtPnZndCwgc3RyaWRl X3JlZyk7CisJX19zcmVnKHMtPnZndCwgY3RybF9yZWcpID0gX192cmVnKHMtPnZndCwgY3RybF9y ZWcpOworCV9fc3JlZyhzLT52Z3QsIHN1cmZfcmVnKSA9IF9fdnJlZyhzLT52Z3QsIHN1cmZfcmVn KTsKKworCV9fdnJlZyhzLT52Z3QsIEdWVF9QSVBFX0ZMSVBDT1VOVChwaXBlKSkrKzsKKworCW1z Zy52bV9pZCA9IHMtPnZndC0+dm1faWQ7CisJbXNnLnBpcGVfaWQgPSBwaXBlOworCW1zZy5wbGFu ZV9pZCA9IHBsYW5lOworCWd2dF9mYl9ub3RpZmllcl9jYWxsX2NoYWluKEZCX0RJU1BMQVlfRkxJ UCwgJm1zZyk7CisKKwlndnRfZGJnX2NtZCgiVk0gJWQ6IG1pX2Rpc3BsYXlfZmxpcCB0byBiZSBp Z25vcmVkIiwKKwkJCXMtPnZndC0+dm1faWQpOworCisJZm9yIChpID0gMDsgaSA8IGxlbmd0aDsg aSArKykKKwkJcGF0Y2hfdmFsdWUocywgY21kX3B0cihzLCBpKSwgTUlfTk9PUCk7CisKKwlndnRf aW5qZWN0X2ZsaXBfZG9uZShzLT52Z3QsIHBpcGUpOworCisJcmV0dXJuIHJjOworCit3cm9uZ19j b21tYW5kOgorCWZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkgKyspCisJCXBhdGNoX3ZhbHVlKHMs IGNtZF9wdHIocywgaSksIE1JX05PT1ApOworCXJldHVybiByYzsKK30KKworc3RhdGljIGludCBn dnRfY21kX2hhbmRsZXJfbWlfZGlzcGxheV9mbGlwKHN0cnVjdCBwYXJzZXJfZXhlY19zdGF0ZSAq cykKK3sKKwlhZGRyX2F1ZGl0XzMyKHMsIDIpOworCXJldHVybiBndnRfaGFuZGxlX21pX2Rpc3Bs YXlfZmxpcChzKTsKK30KKworc3RhdGljIGJvb2wgaXNfd2FpdF9mb3JfZmxpcF9wZW5kaW5nKHUz MiBjbWQpCit7CisJcmV0dXJuIGNtZCAmIChNSV9XQUlUX0ZPUl9QTEFORV9BX0ZMSVBfUEVORElO RyB8CisJCU1JX1dBSVRfRk9SX1BMQU5FX0JfRkxJUF9QRU5ESU5HIHwKKwkJTUlfV0FJVF9GT1Jf UExBTkVfQ19GTElQX1BFTkRJTkcgfAorCQlNSV9XQUlUX0ZPUl9TUFJJVEVfQV9GTElQX1BFTkRJ TkcgfAorCQlNSV9XQUlUX0ZPUl9TUFJJVEVfQl9GTElQX1BFTkRJTkcgfAorCQlNSV9XQUlUX0ZP Ul9TUFJJVEVfQ19GTElQX1BFTkRJTkcpOworfQorCitzdGF0aWMgaW50IGd2dF9jbWRfaGFuZGxl cl9taV93YWl0X2Zvcl9ldmVudChzdHJ1Y3QgcGFyc2VyX2V4ZWNfc3RhdGUgKnMpCit7CisJaW50 IHJjID0gMDsKKwl1MzIgY21kID0gY21kX3ZhbChzLCAwKTsKKworCWlmICghaXNfd2FpdF9mb3Jf ZmxpcF9wZW5kaW5nKGNtZCkpCisJCXJldHVybiByYzsKKworCXBhdGNoX3ZhbHVlKHMsIGNtZF9w dHIocywgMCksIE1JX05PT1ApOworCXJldHVybiByYzsKK30KKworc3RhdGljIHVuc2lnbmVkIGxv bmcgZ2V0X2dtYV9iYl9mcm9tX2NtZChzdHJ1Y3QgcGFyc2VyX2V4ZWNfc3RhdGUgKnMsIGludCBp bmRleCkKK3sKKwl1bnNpZ25lZCBsb25nIGFkZHI7CisJdW5zaWduZWQgbG9uZyBnbWFfaGlnaCwg Z21hX2xvdzsKKwlpbnQgZ21hZHJfYnl0ZXMgPSBzLT52Z3QtPnBkZXYtPmRldmljZV9pbmZvLmdt YWRyX2J5dGVzX2luX2NtZDsKKworCUFTU0VSVChnbWFkcl9ieXRlcyA9PSA0IHx8IGdtYWRyX2J5 dGVzID09IDgpOworCisJZ21hX2xvdyA9IGNtZF92YWwocywgaW5kZXgpICYgQkFUQ0hfQlVGRkVS X0FERFJfTUFTSzsKKworCWlmIChnbWFkcl9ieXRlcyA9PSA0KSB7CisJCWFkZHIgPSBnbWFfbG93 OworCX0gZWxzZSB7CisJCWdtYV9oaWdoID0gY21kX3ZhbChzLCBpbmRleCArIDEpICYgQkFUQ0hf QlVGRkVSX0FERFJfSElHSF9NQVNLOworCQlhZGRyID0gKCgodW5zaWduZWQgbG9uZylnbWFfaGln aCkgPDwgMzIpIHwgZ21hX2xvdzsKKwl9CisKKwlyZXR1cm4gYWRkcjsKK30KKworc3RhdGljIGlu bGluZSBib29sIGd2dF9jbWRfYWRkcl9hdWRpdF93aXRoX2JpdG1hcChzdHJ1Y3QgcGFyc2VyX2V4 ZWNfc3RhdGUgKnMsCisJCQl1bnNpZ25lZCBsb25nIGFkZHJfYml0bWFwKQoreworCXVuc2lnbmVk IGludCBiaXQ7CisJdW5zaWduZWQgaW50IGRlbHRhID0gMDsKKwlpbnQgY21kX2xlbiA9IGNtZF9s ZW5ndGgocyk7CisKKwlpZiAoIWFkZHJfYml0bWFwKQorCQlyZXR1cm4gdHJ1ZTsKKworCWZvcl9l YWNoX3NldF9iaXQoYml0LCAmYWRkcl9iaXRtYXAsIHNpemVvZihhZGRyX2JpdG1hcCkqOCkgewor CQlpZiAoYml0ICsgZGVsdGEgPj0gY21kX2xlbikKKwkJCXJldHVybiBmYWxzZTsKKwkJYWRkcmVz c19hdWRpdChzLCBiaXQgKyBkZWx0YSk7CisJCWRlbHRhID0gZGVsdGEgKyBnbWFkcl9kd19udW1i ZXIocykgLSAxOworCX0KKworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMgaW50IGd2dF9jbWRf aGFuZGxlcl9taV91cGRhdGVfZ3R0KHN0cnVjdCBwYXJzZXJfZXhlY19zdGF0ZSAqcykKK3sKKwln dnRfZXJyKCJVbmV4cGVjdHRlZCBtaV91cGRhdGVfZ3R0IGluIFZNIGNvbW1hbmQgYnVmZmVyIik7 CisJcmV0dXJuIC0xOworfQorCitzdGF0aWMgaW50IGd2dF9jbWRfaGFuZGxlcl9taV9mbHVzaF9k dyhzdHJ1Y3QgcGFyc2VyX2V4ZWNfc3RhdGUgKnMpCit7CisJaW50IGksIGxlbjsKKwlpbnQgb2Zm c2V0ID0gMTsKKworCS8qIENoZWNrIHBvc3Qtc3luYyBiaXQgKi8KKwlpZiAoKGNtZF92YWwocywg MCkgPj4gMTQpICYgMHgzKQorCQlhZGRyZXNzX2F1ZGl0KHMsIG9mZnNldCk7CisJb2Zmc2V0ICs9 IGdtYWRyX2R3X251bWJlcihzKTsKKworCS8qIENoZWNrIG5vdGlmeSBiaXQgKi8KKwlpZiAoKGNt ZF92YWwocywwKSAmICgxIDw8IDgpKSkKKwkJc2V0X2JpdChndnRfcmluZ19pZF90b19taV9mbHVz aF9kd19ldmVudChzLT5yaW5nX2lkKSwgcy0+d29ya2xvYWQtPnBlbmRpbmdfZXZlbnRzKTsKKwor CWxlbiA9IGNtZF9sZW5ndGgocyk7CisJZm9yIChpID0gMjsgaSA8IGxlbjsgaSsrKSB7CisJCWFk ZHJlc3NfYXVkaXQocywgb2Zmc2V0KTsKKwkJb2Zmc2V0ICs9IGdtYWRyX2R3X251bWJlcihzKTsK Kwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgYWRkcl90eXBlX3VwZGF0ZV9zbmIo c3RydWN0IHBhcnNlcl9leGVjX3N0YXRlKiBzKQoreworCWlmICgocy0+YnVmX3R5cGUgPT0gUklO R19CVUZGRVJfSU5TVFJVQ1RJT04pICYmCisJCQkoQkFUQ0hfQlVGRkVSX0FEUl9TUEFDRV9CSVQo Y21kX3ZhbChzLCAwKSkgPT0gMSkpIHsKKwkJcy0+YnVmX2FkZHJfdHlwZSA9IFBQR1RUX0JVRkZF UjsKKwl9Cit9CisKKy8qCisgKiBDaGVjayB3aGV0aGVyIGEgYmF0Y2ggYnVmZmVyIG5lZWRzIHRv IGJlIHNjYW5uZWQuIEN1cnJlbnRseQorICogdGhlIG9ubHkgY3JpdGVyaWEgaXMgYmFzZWQgb24g cHJpdmlsZWdlLgorICovCitzdGF0aWMgaW50IGJhdGNoX2J1ZmZlcl9uZWVkc19zY2FuKHN0cnVj dCBwYXJzZXJfZXhlY19zdGF0ZSAqcykKK3sKKwlzdHJ1Y3QgcGd0X2RldmljZSAqcGRldiA9IHMt PnZndC0+cGRldjsKKworCXJldHVybiAwOworCisJaWYgKElTX0JST0FEV0VMTChwZGV2LT5kZXZf cHJpdikpIHsKKwkJaWYgKHMtPnJpbmdfaWQgPT0gQkNTKQorCQkJcmV0dXJuIDA7CisJCS8qIEJE VyBkZWNpZGVzIHByaXZpbGVnZSBiYXNlZCBvbiBhZGRyZXNzIHNwYWNlICovCisJCWlmIChjbWRf dmFsKHMsIDApICYgKDEgPDwgOCkpCisJCQlyZXR1cm4gMDsKKwl9CisKKwlyZXR1cm4gMTsKK30K Kworc3RhdGljIGludCBndnRfY21kX2hhbmRsZXJfbWlfYmF0Y2hfYnVmZmVyX3N0YXJ0KHN0cnVj dCBwYXJzZXJfZXhlY19zdGF0ZSAqcykKK3sKKwlpbnQgcmMgPSAwOworCWJvb2wgc2Vjb25kX2xl dmVsOworCisJaWYgKHMtPmJ1Zl90eXBlID09IEJBVENIX0JVRkZFUl8yTkRfTEVWRUwpIHsKKwkJ Z3Z0X2VycigiTUlfQkFUQ0hfQlVGRkVSX1NUQVJUIG5vdCBhbGxvd2QgaW4gMm5kIGxldmVsIGJh dGNoIGJ1ZmZlciIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlzZWNvbmRfbGV2ZWwgPSBC QVRDSF9CVUZGRVJfMk5EX0xFVkVMX0JJVChjbWRfdmFsKHMsIDApKSA9PSAxOworCWlmIChzZWNv bmRfbGV2ZWwgJiYgKHMtPmJ1Zl90eXBlICE9IEJBVENIX0JVRkZFUl9JTlNUUlVDVElPTikpIHsK KwkJZ3Z0X2VycigiSnVtcGluZyB0byAybmQgbGV2ZWwgYmF0Y2ggYnVmZmVyIGZyb20gcmluZyBi dWZmZXIgaXMgbm90IGFsbG93ZCIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlzLT5zYXZl ZF9idWZfYWRkcl90eXBlID0gcy0+YnVmX2FkZHJfdHlwZTsKKworCWFkZHJfdHlwZV91cGRhdGVf c25iKHMpOworCisJaWYgKHMtPmJ1Zl90eXBlID09IFJJTkdfQlVGRkVSX0lOU1RSVUNUSU9OKSB7 CisJCXMtPnJldF9pcF9nbWFfcmluZyA9IHMtPmlwX2dtYSArIGNtZF9sZW5ndGgocykgKiBzaXpl b2YodTMyKTsKKwkJcy0+YnVmX3R5cGUgPSBCQVRDSF9CVUZGRVJfSU5TVFJVQ1RJT047CisJfSBl bHNlIGlmIChzZWNvbmRfbGV2ZWwpIHsKKwkJcy0+YnVmX3R5cGUgPSBCQVRDSF9CVUZGRVJfMk5E X0xFVkVMOworCQlzLT5yZXRfaXBfZ21hX2JiID0gcy0+aXBfZ21hICsgY21kX2xlbmd0aChzKSAq IHNpemVvZih1MzIpOworCX0KKworCWFkZHJlc3NfYXVkaXQocywgMSk7CisKKwlpZiAoYmF0Y2hf YnVmZmVyX25lZWRzX3NjYW4ocykpIHsKKwkJcmMgPSBpcF9nbWFfc2V0KHMsIGdldF9nbWFfYmJf ZnJvbV9jbWQocywgMSkpOworCQlpZiAocmMgPCAwKQorCQkJZ3Z0X3dhcm4oImludmFsaWQgYmF0 Y2ggYnVmZmVyIGFkZHIsIHNvIHNraXAgc2Nhbm5pbmcgaXQiKTsKKwl9IGVsc2UgeworCQlzdHJ1 Y3QgZ3Z0X3N0YXRpc3RpY3MgKnN0YXQgPSAmcy0+dmd0LT5zdGF0OworCisJCXN0YXQtPnNraXBf YmJfY250Kys7CisJCS8qIGVtdWxhdGUgYSBiYXRjaCBidWZmZXIgZW5kIHRvIGRvIHJldHVybiBy aWdodCAqLworCQlyYyA9IGd2dF9jbWRfaGFuZGxlcl9taV9iYXRjaF9idWZmZXJfZW5kKHMpOwor CQlpZiAocmMgPCAwKQorCQkJZ3Z0X2Vycigic2tpcCBiYXRjaCBidWZmZXIgZXJyb3IiKTsKKwl9 CisKKwlyZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbnQgZ3Z0X2NtZF9oYW5kbGVyXzNkc3RhdGVf dmVydGV4X2J1ZmZlcnMoc3RydWN0IHBhcnNlcl9leGVjX3N0YXRlICpzKQoreworCWludCBsZW5n dGgsIG9mZnNldDsKKworCWxlbmd0aCA9IGNtZF9sZW5ndGgocyk7CisKKwlmb3IgKG9mZnNldCA9 IDE7IG9mZnNldCA8IGxlbmd0aDsgb2Zmc2V0ICs9IDQpIHsKKwkJYWRkcmVzc19hdWRpdChzLCBv ZmZzZXQgKyAxKTsKKwkJYWRkcmVzc19hdWRpdChzLCBvZmZzZXQgKyAyKTsKKwl9CisKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGludCBndnRfY21kX2hhbmRsZXJfM2RzdGF0ZV92ZXJ0ZXhfYnVm ZmVyc19iZHcoc3RydWN0IHBhcnNlcl9leGVjX3N0YXRlICpzKQoreworCWludCBsZW5ndGgsIG9m ZnNldDsKKworCWxlbmd0aCA9IGNtZF9sZW5ndGgocyk7CisKKwlmb3IgKG9mZnNldCA9IDE7IG9m ZnNldCA8IGxlbmd0aDsgb2Zmc2V0ICs9IDQpIHsKKwkJYWRkcmVzc19hdWRpdChzLCBvZmZzZXQg KyAxKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBndnRfY21kX2hhbmRsZXJf M2RzdGF0ZV9pbmRleF9idWZmZXIoc3RydWN0IHBhcnNlcl9leGVjX3N0YXRlICpzKQoreworCWFk ZHJlc3NfYXVkaXQocywgMSk7CisKKwlpZiAoY21kX3ZhbChzLCAyKSAhPSAwKQorCQlhZGRyZXNz X2F1ZGl0KHMsIDIpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZ3Z0X2NtZF9oYW5k bGVyXzNkc3RhdGVfY29uc3RhbnQoc3RydWN0IHBhcnNlcl9leGVjX3N0YXRlICpzKQoreworCWlu dCBvZmZzZXQgPSAzOworCWludCBjbWRfbGVuID0gY21kX2xlbmd0aChzKTsKKworCXdoaWxlIChv ZmZzZXQgPCBjbWRfbGVuKSB7CisJCWFkZHJlc3NfYXVkaXQocywgb2Zmc2V0KTsKKwkJb2Zmc2V0 ICs9IGdtYWRyX2R3X251bWJlcihzKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu dCBndnRfY21kX2hhbmRsZXJfbWZ4X3BpcGVfYnVmX2FkZHJfc3RhdGUoc3RydWN0IHBhcnNlcl9l eGVjX3N0YXRlICpzKQoreworCS8qICBhZGRyZXNzIHBhdHRlcm4gb2YgdGhlIGNvbW1hbmQgaXMg bGlrZSBiZWxvdzoKKwkgKiAgZnJvbSBiaXQwOiAiMDEwMTAxMDEgMDEwMTAxMTEgMTExMTExMTEg MTExMTEwMTAgMTAxMCIKKwkgKi8KKwlndnRfY21kX2FkZHJfYXVkaXRfd2l0aF9iaXRtYXAocywg MHgwNTVmZmZlYWFhVUwpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZ3Z0X2NtZF9o YW5kbGVyX21meF9pbmRfb2JqX2Jhc2VfYWRkcl9zdGF0ZShzdHJ1Y3QgcGFyc2VyX2V4ZWNfc3Rh dGUgKnMpCit7CisJLyogIGFkZHJlc3MgcGF0dGVybiBvZiB0aGUgY29tbWFuZCBpcyBsaWtlIGJl bG93OgorCSAqICBmcm9tIGJpdDA6ICIxMDExMDExMCAxMTAxMTAxMCIKKwkgKi8KKwlndnRfY21k X2FkZHJfYXVkaXRfd2l0aF9iaXRtYXAocywgMHg1YjZkKTsKKworCXJldHVybiAwOworfQorCitz dGF0aWMgaW5saW5lIGludCBiYXNlX2FuZF91cHBlcl9hZGRyX2ZpeChzdHJ1Y3QgcGFyc2VyX2V4 ZWNfc3RhdGUgKnMpCit7CisJYWRkcmVzc19hdWRpdChzLCAxKTsKKwkvKiBaZXJvIEJvdW5kIGlz IGlnbm9yZSAqLworCWlmIChjbWRfdmFsKHMsIDIpID4+IDEyKQorCQlhZGRyZXNzX2F1ZGl0KHMs IDIpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGd2dF9jbWRfaGFuZGxlcl9tZnhfMl82 XzBfMChzdHJ1Y3QgcGFyc2VyX2V4ZWNfc3RhdGUgKnMpCit7CisJYmFzZV9hbmRfdXBwZXJfYWRk cl9maXgocyk7CisJYWRkcmVzc19hdWRpdChzLCAyKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IHN0cnVjdCBjbWRfaW5mbyBjbWRfaW5mb1tdID0geworCXsiTUlfTk9PUCIsIE9QX01JX05PT1As IEZfTEVOX0NPTlNUfEZfUE9TVF9IQU5ETEUsIFJfQUxMLCBEX0FMTCwgMCwgMSwgTlVMTH0sCisK Kwl7Ik1JX1NFVF9QUkVESUNBVEUiLCBPUF9NSV9TRVRfUFJFRElDQVRFLCBGX0xFTl9DT05TVCwg Ul9BTEwsIERfQUxMLAorCQkwLCAxLCBOVUxMfSwKKworCXsiTUlfVVNFUl9JTlRFUlJVUFQiLCBP UF9NSV9VU0VSX0lOVEVSUlVQVCwgRl9MRU5fQ09OU1QsIFJfQUxMLCBEX0FMTCwgMCwgMSwgZ3Z0 X2NtZF9oYW5kbGVyX21pX3VzZXJfaW50ZXJydXB0fSwKKworCXsiTUlfV0FJVF9GT1JfRVZFTlQi LCBPUF9NSV9XQUlUX0ZPUl9FVkVOVCwgRl9MRU5fQ09OU1QgfCBGX1BPU1RfSEFORExFLCBSX1JD UyB8IFJfQkNTLAorCQlEX0FMTCwgMCwgMSwgZ3Z0X2NtZF9oYW5kbGVyX21pX3dhaXRfZm9yX2V2 ZW50fSwKKworCXsiTUlfRkxVU0giLCBPUF9NSV9GTFVTSCwgRl9MRU5fQ09OU1QsIFJfQUxMLCBE X0FMTCwgMCwgMSwgTlVMTH0sCisKKwl7Ik1JX0FSQl9DSEVDSyIsIE9QX01JX0FSQl9DSEVDSywg Rl9MRU5fQ09OU1QsIFJfQUxMLCBEX0FMTCwgMCwgMSwgTlVMTH0sCisKKwl7Ik1JX1JTX0NPTlRS T0wiLCBPUF9NSV9SU19DT05UUk9MLCBGX0xFTl9DT05TVCwgUl9SQ1MsIERfQUxMLCAwLCAxLCBO VUxMfSwKKworCXsiTUlfUkVQT1JUX0hFQUQiLCBPUF9NSV9SRVBPUlRfSEVBRCwgRl9MRU5fQ09O U1QsIFJfQUxMLCBEX0FMTCwgMCwgMSwgTlVMTH0sCisKKwl7Ik1JX0FSQl9PTl9PRkYiLCBPUF9N SV9BUkJfT05fT0ZGLCBGX0xFTl9DT05TVCwgUl9BTEwsIERfQUxMLCAwLCAxLCBOVUxMfSwKKwor CXsiTUlfVVJCX0FUT01JQ19BTExPQyIsIE9QX01JX1VSQl9BVE9NSUNfQUxMT0MsIEZfTEVOX0NP TlNULCBSX1JDUywKKwkJRF9BTEwsIDAsIDEsIE5VTEx9LAorCisJeyJNSV9CQVRDSF9CVUZGRVJf RU5EIiwgT1BfTUlfQkFUQ0hfQlVGRkVSX0VORCwgRl9JUF9BRFZBTkNFX0NVU1RPTXxGX0xFTl9D T05TVCwKKwkJUl9BTEwsIERfQUxMLCAwLCAxLCBndnRfY21kX2hhbmRsZXJfbWlfYmF0Y2hfYnVm ZmVyX2VuZH0sCisKKwl7Ik1JX1NVU1BFTkRfRkxVU0giLCBPUF9NSV9TVVNQRU5EX0ZMVVNILCBG X0xFTl9DT05TVCwgUl9BTEwsIERfQUxMLCAwLCAxLCBOVUxMfSwKKworCXsiTUlfUFJFRElDQVRF IiwgT1BfTUlfUFJFRElDQVRFLCBGX0xFTl9DT05TVCwgUl9SQ1MsIERfQUxMLCAwLCAxLCBOVUxM fSwKKworCXsiTUlfVE9QT0xPR1lfRklMVEVSIiwgT1BfTUlfVE9QT0xPR1lfRklMVEVSLCBGX0xF Tl9DT05TVCwgUl9BTEwsCisJCURfQUxMLCAwLCAxLCBOVUxMfSwKKworCXsiTUlfU0VUX0FQUElE IiwgT1BfTUlfU0VUX0FQUElELCBGX0xFTl9DT05TVCwgUl9BTEwsIERfQUxMLCAwLCAxLCBOVUxM fSwKKworCXsiTUlfUlNfQ09OVEVYVCIsIE9QX01JX1JTX0NPTlRFWFQsIEZfTEVOX0NPTlNULCBS X1JDUywgRF9BTEwsIDAsIDEsIE5VTEx9LAorCisJeyJNSV9ESVNQTEFZX0ZMSVAiLCBPUF9NSV9E SVNQTEFZX0ZMSVAsIEZfTEVOX1ZBUnxGX1BPU1RfSEFORExFLCBSX1JDUyB8IFJfQkNTLAorCQlE X0FMTCwgMCwgOCwgZ3Z0X2NtZF9oYW5kbGVyX21pX2Rpc3BsYXlfZmxpcH0sCisKKwl7Ik1JX1NF TUFQSE9SRV9NQk9YIiwgT1BfTUlfU0VNQVBIT1JFX01CT1gsIEZfTEVOX1ZBUiwgUl9BTEwsIERf QUxMLCAwLCA4LCBOVUxMIH0sCisKKwl7Ik1JX01BVEgiLCBPUF9NSV9NQVRILCBGX0xFTl9WQVIs IFJfQUxMLCBEX0FMTCwgMCwgOCwgTlVMTH0sCisKKwl7Ik1JX1VSQl9DTEVBUiIsIE9QX01JX1VS Ql9DTEVBUiwgRl9MRU5fVkFSLCBSX1JDUywgRF9BTEwsIDAsIDgsIE5VTEx9LAorCisJeyJNRV9T RU1BUEhPUkVfU0lHTkFMIiwgT1BfTUlfU0VNQVBIT1JFX1NJR05BTCwgRl9MRU5fVkFSLCBSX0FM TCwgRF9CRFcsIDAsIDgsIE5VTEx9LAorCisJeyJNRV9TRU1BUEhPUkVfV0FJVCIsIE9QX01JX1NF TUFQSE9SRV9XQUlULCBGX0xFTl9WQVIsIFJfQUxMLCBEX0JEVywgQUREUl9GSVhfMSgyKSwgOCwg TlVMTH0sCisKKwl7Ik1JX1NUT1JFX0RBVEFfSU1NIiwgT1BfTUlfU1RPUkVfREFUQV9JTU0sIEZf TEVOX1ZBUiwgUl9BTEwsIERfQkRXLAorCQlBRERSX0ZJWF8xKDEpLCAxMCwgTlVMTH0sCisKKwl7 Ik1JX1NUT1JFX0RBVEFfSU5ERVgiLCBPUF9NSV9TVE9SRV9EQVRBX0lOREVYLCBGX0xFTl9WQVIs IFJfQUxMLCBEX0FMTCwKKwkJMCwgOCwgTlVMTH0sCisKKwl7Ik1JX0xPQURfUkVHSVNURVJfSU1N IiwgT1BfTUlfTE9BRF9SRUdJU1RFUl9JTU0sIEZfTEVOX1ZBUiwgUl9BTEwsIERfQUxMLCAwLCA4 LCBndnRfY21kX2hhbmRsZXJfbHJpfSwKKworCXsiTUlfVVBEQVRFX0dUVCIsIE9QX01JX1VQREFU RV9HVFQsIEZfTEVOX1ZBUiwgUl9BTEwsIERfQkRXLAorCQkwLCAxMCwgZ3Z0X2NtZF9oYW5kbGVy X21pX3VwZGF0ZV9ndHR9LAorCisJeyJNSV9TVE9SRV9SRUdJU1RFUl9NRU0iLCBPUF9NSV9TVE9S RV9SRUdJU1RFUl9NRU0sIEZfTEVOX1ZBUiwgUl9BTEwsIERfQUxMLAorCQlBRERSX0ZJWF8xKDIp LCA4LCBndnRfY21kX2hhbmRsZXJfc3JtfSwKKworCXsiTUlfRkxVU0hfRFciLCBPUF9NSV9GTFVT SF9EVywgRl9MRU5fVkFSLCBSX0FMTCwgRF9BTEwsCisJCTAsIDYsIGd2dF9jbWRfaGFuZGxlcl9t aV9mbHVzaF9kd30sCisKKwl7Ik1JX0NMRkxVU0giLCBPUF9NSV9DTEZMVVNILCBGX0xFTl9WQVIs IFJfQUxMLCBEX0FMTCwKKwkJQUREUl9GSVhfMSgxKSwgMTAsIE5VTEx9LAorCisJeyJNSV9SRVBP UlRfUEVSRl9DT1VOVCIsIE9QX01JX1JFUE9SVF9QRVJGX0NPVU5ULCBGX0xFTl9WQVIsIFJfQUxM LCBEX0FMTCwKKwkJQUREUl9GSVhfMSgxKSwgNiwgTlVMTH0sCisKKwl7Ik1JX0xPQURfUkVHSVNU RVJfTUVNIiwgT1BfTUlfTE9BRF9SRUdJU1RFUl9NRU0sIEZfTEVOX1ZBUiwgUl9BTEwsIERfQUxM LAorCQlBRERSX0ZJWF8xKDIpLCA4LCBndnRfY21kX2hhbmRsZXJfbHJtfSwKKworCXsiTUlfTE9B RF9SRUdJU1RFUl9SRUciLCBPUF9NSV9MT0FEX1JFR0lTVEVSX1JFRywgRl9MRU5fVkFSLCBSX0FM TCwgRF9BTEwsCisJCTAsIDgsIGd2dF9jbWRfaGFuZGxlcl9scnJ9LAorCisJeyJNSV9SU19TVE9S RV9EQVRBX0lNTSIsIE9QX01JX1JTX1NUT1JFX0RBVEFfSU1NLCBGX0xFTl9WQVIsIFJfUkNTLCBE X0FMTCwKKwkJMCwgOCwgTlVMTH0sCisKKwl7Ik1JX0xPQURfVVJCX01FTSIsIE9QX01JX0xPQURf VVJCX01FTSwgRl9MRU5fVkFSLCBSX1JDUywgRF9BTEwsCisJCUFERFJfRklYXzEoMiksIDgsIE5V TEx9LAorCisJeyJNSV9TVE9SRV9VUk1fTUVNIiwgT1BfTUlfU1RPUkVfVVJNX01FTSwgRl9MRU5f VkFSLCBSX1JDUywgRF9BTEwsCisJCUFERFJfRklYXzEoMiksIDgsIE5VTEx9LAorCisJeyJNSV9P UF8yRSIsIE9QX01JXzJFLCBGX0xFTl9WQVIsIFJfQUxMLCBEX0JEVywgQUREUl9GSVhfMigxLCAy KSwgOCwgTlVMTH0sCisKKwl7Ik1JX09QXzJGIiwgT1BfTUlfMkYsIEZfTEVOX1ZBUiwgUl9BTEws IERfQkRXLCBBRERSX0ZJWF8xKDEpLCA4LCBOVUxMfSwKKworCXsiTUlfQkFUQ0hfQlVGRkVSX1NU QVJUIiwgT1BfTUlfQkFUQ0hfQlVGRkVSX1NUQVJULCBGX0lQX0FEVkFOQ0VfQ1VTVE9NLAorCQlS X0FMTCwgRF9BTEwsIDAsIDgsIGd2dF9jbWRfaGFuZGxlcl9taV9iYXRjaF9idWZmZXJfc3RhcnR9 LAorCisJeyJNSV9DT05ESVRJT05BTF9CQVRDSF9CVUZGRVJfRU5EIiwgT1BfTUlfQ09ORElUSU9O QUxfQkFUQ0hfQlVGRkVSX0VORCwKKwkJRl9MRU5fVkFSLCBSX0FMTCwgRF9BTEwsIEFERFJfRklY XzEoMiksIDgsIE5VTEx9LAorCisJeyJNSV9MT0FEX1NDQU5fTElORVNfSU5DTCIsIE9QX01JX0xP QURfU0NBTl9MSU5FU19JTkNMLCBGX0xFTl9DT05TVCwgUl9SQ1MgfCBSX0JDUywgRF9BTEwsCisJ CTAsIDIsIE5VTEx9LAorCisJeyJYWV9TRVRVUF9CTFQiLCBPUF9YWV9TRVRVUF9CTFQsIEZfTEVO X1ZBUiwgUl9CQ1MsIERfQUxMLAorCQlBRERSX0ZJWF8yKDQsIDcpLCA4LCBOVUxMfSwKKworCXsi WFlfU0VUVVBfQ0xJUF9CTFQiLCBPUF9YWV9TRVRVUF9DTElQX0JMVCwgRl9MRU5fVkFSLCBSX0JD UywgRF9BTEwsCisJCTAsIDgsIE5VTEx9LAorCisJeyJYWV9TRVRVUF9NT05PX1BBVFRFUk5fU0xf QkxUIiwgT1BfWFlfU0VUVVBfTU9OT19QQVRURVJOX1NMX0JMVCwgRl9MRU5fVkFSLAorCQlSX0JD UywgRF9BTEwsIEFERFJfRklYXzEoNCksIDgsIE5VTEx9LAorCisJeyJYWV9QSVhFTF9CTFQiLCBP UF9YWV9QSVhFTF9CTFQsIEZfTEVOX1ZBUiwgUl9CQ1MsIERfQUxMLCAwLCA4LCBOVUxMfSwKKwor CXsiWFlfU0NBTkxJTkVTX0JMVCIsIE9QX1hZX1NDQU5MSU5FU19CTFQsIEZfTEVOX1ZBUiwgUl9C Q1MsIERfQUxMLAorCQkwLCA4LCBOVUxMfSwKKworCXsiWFlfVEVYVF9CTFQiLCBPUF9YWV9URVhU X0JMVCwgRl9MRU5fVkFSLCBSX0JDUywgRF9BTEwsCisJCUFERFJfRklYXzEoMyksIDgsIE5VTEx9 LAorCisJeyJYWV9URVhUX0lNTUVESUFURV9CTFQiLCBPUF9YWV9URVhUX0lNTUVESUFURV9CTFQs IEZfTEVOX1ZBUiwgUl9CQ1MsCisJCURfQUxMLCAwLCA4LCBOVUxMfSwKKworCXsiWFlfQ09MT1Jf QkxUIiwgT1BfWFlfQ09MT1JfQkxULCBGX0xFTl9WQVIsIFJfQkNTLCBEX0FMTCwKKwkJQUREUl9G SVhfMSg0KSwgOCwgTlVMTH0sCisKKwl7IlhZX1BBVF9CTFQiLCBPUF9YWV9QQVRfQkxULCBGX0xF Tl9WQVIsIFJfQkNTLCBEX0FMTCwKKwkJQUREUl9GSVhfMig0LCA1KSwgOCwgTlVMTH0sCisKKwl7 IlhZX01PTk9fUEFUX0JMVCIsIE9QX1hZX01PTk9fUEFUX0JMVCwgRl9MRU5fVkFSLCBSX0JDUywg RF9BTEwsCisJCUFERFJfRklYXzEoNCksIDgsIE5VTEx9LAorCisJeyJYWV9TUkNfQ09QWV9CTFQi LCBPUF9YWV9TUkNfQ09QWV9CTFQsIEZfTEVOX1ZBUiwgUl9CQ1MsIERfQUxMLAorCQlBRERSX0ZJ WF8yKDQsIDcpLCA4LCBOVUxMfSwKKworCXsiWFlfTU9OT19TUkNfQ09QWV9CTFQiLCBPUF9YWV9N T05PX1NSQ19DT1BZX0JMVCwgRl9MRU5fVkFSLCBSX0JDUywKKwkJRF9BTEwsIEFERFJfRklYXzIo NCwgNSksIDgsIE5VTEx9LAorCisJeyJYWV9GVUxMX0JMVCIsIE9QX1hZX0ZVTExfQkxULCBGX0xF Tl9WQVIsIFJfQkNTLCBEX0FMTCwgMCwgOCwgTlVMTH0sCisKKwl7IlhZX0ZVTExfTU9OT19TUkNf QkxUIiwgT1BfWFlfRlVMTF9NT05PX1NSQ19CTFQsIEZfTEVOX1ZBUiwgUl9CQ1MsIERfQUxMLAor CQlBRERSX0ZJWF8zKDQsIDUsIDgpLCA4LCBOVUxMfSwKKworCXsiWFlfRlVMTF9NT05PX1BBVFRF Uk5fQkxUIiwgT1BfWFlfRlVMTF9NT05PX1BBVFRFUk5fQkxULCBGX0xFTl9WQVIsCisJCVJfQkNT LCBEX0FMTCwgQUREUl9GSVhfMig0LCA3KSwgOCwgTlVMTH0sCisKKwl7IlhZX0ZVTExfTU9OT19Q QVRURVJOX01PTk9fU1JDX0JMVCIsIE9QX1hZX0ZVTExfTU9OT19QQVRURVJOX01PTk9fU1JDX0JM VCwKKwkJRl9MRU5fVkFSLCBSX0JDUywgRF9BTEwsIEFERFJfRklYXzIoNCwgNSksIDgsIE5VTEx9 LAorCisJeyJYWV9NT05PX1BBVF9GSVhFRF9CTFQiLCBPUF9YWV9NT05PX1BBVF9GSVhFRF9CTFQs IEZfTEVOX1ZBUiwgUl9CQ1MsIERfQUxMLAorCQlBRERSX0ZJWF8xKDQpLCA4LCBOVUxMfSwKKwor CXsiWFlfTU9OT19TUkNfQ09QWV9JTU1FRElBVEVfQkxUIiwgT1BfWFlfTU9OT19TUkNfQ09QWV9J TU1FRElBVEVfQkxULAorCQlGX0xFTl9WQVIsIFJfQkNTLCBEX0FMTCwgQUREUl9GSVhfMSg0KSwg OCwgTlVMTH0sCisKKwl7IlhZX1BBVF9CTFRfSU1NRURJQVRFIiwgT1BfWFlfUEFUX0JMVF9JTU1F RElBVEUsIEZfTEVOX1ZBUiwgUl9CQ1MsCisJCURfQUxMLCBBRERSX0ZJWF8xKDQpLCA4LCBOVUxM fSwKKworCXsiWFlfU1JDX0NPUFlfQ0hST01BX0JMVCIsIE9QX1hZX1NSQ19DT1BZX0NIUk9NQV9C TFQsIEZfTEVOX1ZBUiwgUl9CQ1MsCisJCURfQUxMLCBBRERSX0ZJWF8yKDQsIDcpLCA4LCBOVUxM fSwKKworCXsiWFlfRlVMTF9JTU1FRElBVEVfUEFUVEVSTl9CTFQiLCBPUF9YWV9GVUxMX0lNTUVE SUFURV9QQVRURVJOX0JMVCwKKwkJRl9MRU5fVkFSLCBSX0JDUywgRF9BTEwsIEFERFJfRklYXzIo NCwgNyksIDgsIE5VTEx9LAorCisJeyJYWV9GVUxMX01PTk9fU1JDX0lNTUVESUFURV9QQVRURVJO X0JMVCIsIE9QX1hZX0ZVTExfTU9OT19TUkNfSU1NRURJQVRFX1BBVFRFUk5fQkxULAorCQlGX0xF Tl9WQVIsIFJfQkNTLCBEX0FMTCwgQUREUl9GSVhfMig0LCA1KSwgOCwgTlVMTH0sCisKKwl7IlhZ X1BBVF9DSFJPTUFfQkxUIiwgT1BfWFlfUEFUX0NIUk9NQV9CTFQsIEZfTEVOX1ZBUiwgUl9CQ1Ms IERfQUxMLAorCQlBRERSX0ZJWF8yKDQsIDUpLCA4LCBOVUxMfSwKKworCXsiWFlfUEFUX0NIUk9N QV9CTFRfSU1NRURJQVRFIiwgT1BfWFlfUEFUX0NIUk9NQV9CTFRfSU1NRURJQVRFLCBGX0xFTl9W QVIsCisJCVJfQkNTLCBEX0FMTCwgQUREUl9GSVhfMSg0KSwgOCwgTlVMTH0sCisKKwl7IjNEU1RB VEVfVklFV1BPUlRfU1RBVEVfUE9JTlRFUlNfU0ZfQ0xJUCIsIE9QXzNEU1RBVEVfVklFV1BPUlRf U1RBVEVfUE9JTlRFUlNfU0ZfQ0xJUCwKKwkJRl9MRU5fVkFSLCBSX1JDUywgRF9BTEwsIDAsIDgs IE5VTEx9LAorCisJeyIzRFNUQVRFX1ZJRVdQT1JUX1NUQVRFX1BPSU5URVJTX0NDIiwgT1BfM0RT VEFURV9WSUVXUE9SVF9TVEFURV9QT0lOVEVSU19DQywKKwkJRl9MRU5fVkFSLCBSX1JDUywgRF9B TEwsIDAsIDgsIE5VTEx9LAorCisJeyIzRFNUQVRFX0JMRU5EX1NUQVRFX1BPSU5URVJTIiwgT1Bf M0RTVEFURV9CTEVORF9TVEFURV9QT0lOVEVSUywKKwkJRl9MRU5fVkFSLCBSX1JDUywgRF9BTEws IDAsIDgsIE5VTEx9LAorCisJeyIzRFNUQVRFX0RFUFRIX1NURU5DSUxfU1RBVEVfUE9JTlRFUlMi LCBPUF8zRFNUQVRFX0RFUFRIX1NURU5DSUxfU1RBVEVfUE9JTlRFUlMsCisJCUZfTEVOX1ZBUiwg Ul9SQ1MsIERfQUxMLCAwLCA4LCBOVUxMfSwKKworCXsiM0RTVEFURV9CSU5ESU5HX1RBQkxFX1BP SU5URVJTX1ZTIiwgT1BfM0RTVEFURV9CSU5ESU5HX1RBQkxFX1BPSU5URVJTX1ZTLAorCQlGX0xF Tl9WQVIsIFJfUkNTLCBEX0FMTCwgMCwgOCwgTlVMTH0sCisKKwl7IjNEU1RBVEVfQklORElOR19U QUJMRV9QT0lOVEVSU19IUyIsIE9QXzNEU1RBVEVfQklORElOR19UQUJMRV9QT0lOVEVSU19IUywK KwkJRl9MRU5fVkFSLCBSX1JDUywgRF9BTEwsIDAsIDgsIE5VTEx9LAorCisJeyIzRFNUQVRFX0JJ TkRJTkdfVEFCTEVfUE9JTlRFUlNfRFMiLCBPUF8zRFNUQVRFX0JJTkRJTkdfVEFCTEVfUE9JTlRF UlNfRFMsCisJCUZfTEVOX1ZBUiwgUl9SQ1MsIERfQUxMLCAwLCA4LCBOVUxMfSwKKworCXsiM0RT VEFURV9CSU5ESU5HX1RBQkxFX1BPSU5URVJTX0dTIiwgT1BfM0RTVEFURV9CSU5ESU5HX1RBQkxF X1BPSU5URVJTX0dTLAorCQlGX0xFTl9WQVIsIFJfUkNTLCBEX0FMTCwgMCwgOCwgTlVMTH0sCisK Kwl7IjNEU1RBVEVfQklORElOR19UQUJMRV9QT0lOVEVSU19QUyIsIE9QXzNEU1RBVEVfQklORElO R19UQUJMRV9QT0lOVEVSU19QUywKKwkJRl9MRU5fVkFSLCBSX1JDUywgRF9BTEwsIDAsIDgsIE5V TEx9LAorCisJeyIzRFNUQVRFX1NBTVBMRVJfU1RBVEVfUE9JTlRFUlNfVlMiLCBPUF8zRFNUQVRF X1NBTVBMRVJfU1RBVEVfUE9JTlRFUlNfVlMsCisJCUZfTEVOX1ZBUiwgUl9SQ1MsIERfQUxMLCAw LCA4LCBOVUxMfSwKKworCXsiM0RTVEFURV9TQU1QTEVSX1NUQVRFX1BPSU5URVJTX0hTIiwgT1Bf M0RTVEFURV9TQU1QTEVSX1NUQVRFX1BPSU5URVJTX0hTLAorCQlGX0xFTl9WQVIsIFJfUkNTLCBE X0FMTCwgMCwgOCwgTlVMTH0sCisKKwl7IjNEU1RBVEVfU0FNUExFUl9TVEFURV9QT0lOVEVSU19E UyIsIE9QXzNEU1RBVEVfU0FNUExFUl9TVEFURV9QT0lOVEVSU19EUywKKwkJRl9MRU5fVkFSLCBS X1JDUywgRF9BTEwsIDAsIDgsIE5VTEx9LAorCisJeyIzRFNUQVRFX1NBTVBMRVJfU1RBVEVfUE9J TlRFUlNfR1MiLCBPUF8zRFNUQVRFX1NBTVBMRVJfU1RBVEVfUE9JTlRFUlNfR1MsCisJCUZfTEVO X1ZBUiwgUl9SQ1MsIERfQUxMLCAwLCA4LCBOVUxMfSwKKworCXsiM0RTVEFURV9TQU1QTEVSX1NU QVRFX1BPSU5URVJTX1BTIiwgT1BfM0RTVEFURV9TQU1QTEVSX1NUQVRFX1BPSU5URVJTX1BTLAor CQlGX0xFTl9WQVIsIFJfUkNTLCBEX0FMTCwgMCwgOCwgTlVMTH0sCisKKwl7IjNEU1RBVEVfVVJC X1ZTIiwgT1BfM0RTVEFURV9VUkJfVlMsIEZfTEVOX1ZBUiwgUl9SQ1MsIERfQUxMLAorCQkwLCA4 LCBOVUxMfSwKKworCXsiM0RTVEFURV9VUkJfSFMiLCBPUF8zRFNUQVRFX1VSQl9IUywgRl9MRU5f VkFSLCBSX1JDUywgRF9BTEwsCisJCTAsIDgsIE5VTEx9LAorCisJeyIzRFNUQVRFX1VSQl9EUyIs IE9QXzNEU1RBVEVfVVJCX0RTLCBGX0xFTl9WQVIsIFJfUkNTLCBEX0FMTCwKKwkJMCwgOCwgTlVM TH0sCisKKwl7IjNEU1RBVEVfVVJCX0dTIiwgT1BfM0RTVEFURV9VUkJfR1MsIEZfTEVOX1ZBUiwg Ul9SQ1MsIERfQUxMLAorCQkwLCA4LCBOVUxMfSwKKworCXsiM0RTVEFURV9HQVRIRVJfQ09OU1RB TlRfVlMiLCBPUF8zRFNUQVRFX0dBVEhFUl9DT05TVEFOVF9WUywKKwkJRl9MRU5fVkFSLCBSX1JD UywgRF9BTEwsIDAsIDgsIE5VTEx9LAorCisJeyIzRFNUQVRFX0dBVEhFUl9DT05TVEFOVF9HUyIs IE9QXzNEU1RBVEVfR0FUSEVSX0NPTlNUQU5UX0dTLAorCQlGX0xFTl9WQVIsIFJfUkNTLCBEX0FM TCwgMCwgOCwgTlVMTH0sCisKKwl7IjNEU1RBVEVfR0FUSEVSX0NPTlNUQU5UX0hTIiwgT1BfM0RT VEFURV9HQVRIRVJfQ09OU1RBTlRfSFMsCisJCUZfTEVOX1ZBUiwgUl9SQ1MsIERfQUxMLCAwLCA4 LCBOVUxMfSwKKworCXsiM0RTVEFURV9HQVRIRVJfQ09OU1RBTlRfRFMiLCBPUF8zRFNUQVRFX0dB VEhFUl9DT05TVEFOVF9EUywKKwkJRl9MRU5fVkFSLCBSX1JDUywgRF9BTEwsIDAsIDgsIE5VTEx9 LAorCisJeyIzRFNUQVRFX0dBVEhFUl9DT05TVEFOVF9QUyIsIE9QXzNEU1RBVEVfR0FUSEVSX0NP TlNUQU5UX1BTLAorCQlGX0xFTl9WQVIsIFJfUkNTLCBEX0FMTCwgMCwgOCwgTlVMTH0sCisKKwl7 IjNEU1RBVEVfRFg5X0NPTlNUQU5URl9WUyIsIE9QXzNEU1RBVEVfRFg5X0NPTlNUQU5URl9WUywK KwkJRl9MRU5fVkFSLCBSX1JDUywgRF9BTEwsIDAsIDExLCBOVUxMfSwKKworCXsiM0RTVEFURV9E WDlfQ09OU1RBTlRGX1BTIiwgT1BfM0RTVEFURV9EWDlfQ09OU1RBTlRGX1BTLAorCQlGX0xFTl9W QVIsIFJfUkNTLCBEX0FMTCwgMCwgMTEsIE5VTEx9LAorCisJeyIzRFNUQVRFX0RYOV9DT05TVEFO VElfVlMiLCBPUF8zRFNUQVRFX0RYOV9DT05TVEFOVElfVlMsCisJCUZfTEVOX1ZBUiwgUl9SQ1Ms IERfQUxMLCAwLCA4LCBOVUxMfSwKKworCXsiM0RTVEFURV9EWDlfQ09OU1RBTlRJX1BTIiwgT1Bf M0RTVEFURV9EWDlfQ09OU1RBTlRJX1BTLAorCQlGX0xFTl9WQVIsIFJfUkNTLCBEX0FMTCwgMCwg OCwgTlVMTH0sCisKKwl7IjNEU1RBVEVfRFg5X0NPTlNUQU5UQl9WUyIsIE9QXzNEU1RBVEVfRFg5 X0NPTlNUQU5UQl9WUywKKwkJRl9MRU5fVkFSLCBSX1JDUywgRF9BTEwsIDAsIDgsIE5VTEx9LAor CisJeyIzRFNUQVRFX0RYOV9DT05TVEFOVEJfUFMiLCBPUF8zRFNUQVRFX0RYOV9DT05TVEFOVEJf UFMsCisJCUZfTEVOX1ZBUiwgUl9SQ1MsIERfQUxMLCAwLCA4LCBOVUxMfSwKKworCXsiM0RTVEFU RV9EWDlfTE9DQUxfVkFMSURfVlMiLCBPUF8zRFNUQVRFX0RYOV9MT0NBTF9WQUxJRF9WUywKKwkJ Rl9MRU5fVkFSLCBSX1JDUywgRF9BTEwsIDAsIDgsIE5VTEx9LAorCisJeyIzRFNUQVRFX0RYOV9M T0NBTF9WQUxJRF9QUyIsIE9QXzNEU1RBVEVfRFg5X0xPQ0FMX1ZBTElEX1BTLAorCQlGX0xFTl9W QVIsIFJfUkNTLCBEX0FMTCwgMCwgOCwgTlVMTH0sCisKKwl7IjNEU1RBVEVfRFg5X0dFTkVSQVRF X0FDVElWRV9WUyIsIE9QXzNEU1RBVEVfRFg5X0dFTkVSQVRFX0FDVElWRV9WUywKKwkJRl9MRU5f VkFSLCBSX1JDUywgRF9BTEwsIDAsIDgsIE5VTEx9LAorCisJeyIzRFNUQVRFX0RYOV9HRU5FUkFU RV9BQ1RJVkVfUFMiLCBPUF8zRFNUQVRFX0RYOV9HRU5FUkFURV9BQ1RJVkVfUFMsCisJCUZfTEVO X1ZBUiwgUl9SQ1MsIERfQUxMLCAwLCA4LCBOVUxMfSwKKworCXsiM0RTVEFURV9CSU5ESU5HX1RB QkxFX0VESVRfVlMiLCBPUF8zRFNUQVRFX0JJTkRJTkdfVEFCTEVfRURJVF9WUywKKwkJRl9MRU5f VkFSLCBSX1JDUywgRF9BTEwsIDAsIDksIE5VTEx9LAorCisJeyIzRFNUQVRFX0JJTkRJTkdfVEFC TEVfRURJVF9HUyIsIE9QXzNEU1RBVEVfQklORElOR19UQUJMRV9FRElUX0dTLAorCQlGX0xFTl9W QVIsIFJfUkNTLCBEX0FMTCwgMCwgOSwgTlVMTH0sCisKKwl7IjNEU1RBVEVfQklORElOR19UQUJM RV9FRElUX0hTIiwgT1BfM0RTVEFURV9CSU5ESU5HX1RBQkxFX0VESVRfSFMsCisJCUZfTEVOX1ZB UiwgUl9SQ1MsIERfQUxMLCAwLCA5LCBOVUxMfSwKKworCXsiM0RTVEFURV9CSU5ESU5HX1RBQkxF X0VESVRfRFMiLCBPUF8zRFNUQVRFX0JJTkRJTkdfVEFCTEVfRURJVF9EUywKKwkJRl9MRU5fVkFS LCBSX1JDUywgRF9BTEwsIDAsIDksIE5VTEx9LAorCisJeyIzRFNUQVRFX0JJTkRJTkdfVEFCTEVf RURJVF9QUyIsIE9QXzNEU1RBVEVfQklORElOR19UQUJMRV9FRElUX1BTLAorCQlGX0xFTl9WQVIs IFJfUkNTLCBEX0FMTCwgMCwgOSwgTlVMTH0sCisKKwl7IjNEU1RBVEVfVkZfSU5TVEFOQ0lORyIs IE9QXzNEU1RBVEVfVkZfSU5TVEFOQ0lORywgRl9MRU5fVkFSLCBSX1JDUywgRF9CRFcsIDAsIDgs IE5VTEx9LAorCisJeyIzRFNUQVRFX1ZGX1NHVlMiLCBPUF8zRFNUQVRFX1ZGX1NHVlMsIEZfTEVO X1ZBUiwgUl9SQ1MsIERfQkRXLCAwLCA4LCBOVUxMfSwKKworCXsiM0RTVEFURV9WRl9UT1BPTE9H WSIsIE9QXzNEU1RBVEVfVkZfVE9QT0xPR1ksIEZfTEVOX1ZBUiwgUl9SQ1MsIERfQkRXLCAwLCA4 LCBOVUxMfSwKKworCXsiM0RTVEFURV9XTV9DSFJPTUFLRVkiLCBPUF8zRFNUQVRFX1dNX0NIUk9N QUtFWSwgRl9MRU5fVkFSLCBSX1JDUywgRF9CRFcsIDAsIDgsIE5VTEx9LAorCisJeyIzRFNUQVRF X1BTX0JMRU5EIiwgT1BfM0RTVEFURV9QU19CTEVORCwgRl9MRU5fVkFSLCBSX1JDUywgRF9CRFcs IDAsIDgsIE5VTEx9LAorCisJeyIzRFNUQVRFX1dNX0RFUFRIX1NURU5DSUwiLCBPUF8zRFNUQVRF X1dNX0RFUFRIX1NURU5DSUwsIEZfTEVOX1ZBUiwgUl9SQ1MsIERfQkRXLCAwLCA4LCBOVUxMfSwK KworCXsiM0RTVEFURV9QU19FWFRSQSIsIE9QXzNEU1RBVEVfUFNfRVhUUkEsIEZfTEVOX1ZBUiwg Ul9SQ1MsIERfQkRXLCAwLCA4LCBOVUxMfSwKKworCXsiM0RTVEFURV9SQVNURVIiLCBPUF8zRFNU QVRFX1JBU1RFUiwgRl9MRU5fVkFSLCBSX1JDUywgRF9CRFcsIDAsIDgsIE5VTEx9LAorCisJeyIz RFNUQVRFX1NCRV9TV0laIiwgT1BfM0RTVEFURV9TQkVfU1dJWiwgRl9MRU5fVkFSLCBSX1JDUywg RF9CRFcsIDAsIDgsIE5VTEx9LAorCisJeyIzRFNUQVRFX1dNX0haX09QIiwgT1BfM0RTVEFURV9X TV9IWl9PUCwgRl9MRU5fVkFSLCBSX1JDUywgRF9CRFcsIDAsIDgsIE5VTEx9LAorCisJeyIzRFNU QVRFX1ZFUlRFWF9CVUZGRVJTIiwgT1BfM0RTVEFURV9WRVJURVhfQlVGRkVSUywgRl9MRU5fVkFS LCBSX1JDUywKKwkJRF9CRFcsIDAsIDgsIGd2dF9jbWRfaGFuZGxlcl8zZHN0YXRlX3ZlcnRleF9i dWZmZXJzX2Jkd30sCisKKwl7IjNEU1RBVEVfVkVSVEVYX0VMRU1FTlRTIiwgT1BfM0RTVEFURV9W RVJURVhfRUxFTUVOVFMsIEZfTEVOX1ZBUiwgUl9SQ1MsCisJCURfQUxMLCAwLCA4LCBOVUxMfSwK KworCXsiM0RTVEFURV9JTkRFWF9CVUZGRVIiLCBPUF8zRFNUQVRFX0lOREVYX0JVRkZFUiwgRl9M RU5fVkFSLCBSX1JDUywKKwkJRF9CRFcsIEFERFJfRklYXzEoMiksIDgsIE5VTEx9LAorCisJeyIz RFNUQVRFX1ZGX1NUQVRJU1RJQ1MiLCBPUF8zRFNUQVRFX1ZGX1NUQVRJU1RJQ1MsIEZfTEVOX0NP TlNULAorCQlSX1JDUywgRF9BTEwsIDAsIDEsIE5VTEx9LAorCisJeyIzRFNUQVRFX1ZGIiwgT1Bf M0RTVEFURV9WRiwgRl9MRU5fVkFSLCBSX1JDUywgRF9BTEwsIDAsIDgsIE5VTEx9LAorCisJeyIz RFNUQVRFX0NDX1NUQVRFX1BPSU5URVJTIiwgT1BfM0RTVEFURV9DQ19TVEFURV9QT0lOVEVSUywg Rl9MRU5fVkFSLAorCQlSX1JDUywgRF9BTEwsIDAsIDgsIE5VTEx9LAorCisJeyIzRFNUQVRFX1ND SVNTT1JfU1RBVEVfUE9JTlRFUlMiLCBPUF8zRFNUQVRFX1NDSVNTT1JfU1RBVEVfUE9JTlRFUlMs CisJCUZfTEVOX1ZBUiwgUl9SQ1MsIERfQUxMLCAwLCA4LCBOVUxMfSwKKworCXsiM0RTVEFURV9H UyIsIE9QXzNEU1RBVEVfR1MsIEZfTEVOX1ZBUiwgUl9SQ1MsIERfQUxMLCAwLCA4LCBOVUxMfSwK KworCXsiM0RTVEFURV9DTElQIiwgT1BfM0RTVEFURV9DTElQLCBGX0xFTl9WQVIsIFJfUkNTLCBE X0FMTCwgMCwgOCwgTlVMTH0sCisKKwl7IjNEU1RBVEVfV00iLCBPUF8zRFNUQVRFX1dNLCBGX0xF Tl9WQVIsIFJfUkNTLCBEX0FMTCwgMCwgOCwgTlVMTH0sCisKKwl7IjNEU1RBVEVfQ09OU1RBTlRf R1MiLCBPUF8zRFNUQVRFX0NPTlNUQU5UX0dTLCBGX0xFTl9WQVIsIFJfUkNTLAorCQlEX0JEVywg MCwgOCwgZ3Z0X2NtZF9oYW5kbGVyXzNkc3RhdGVfY29uc3RhbnR9LAorCisJeyIzRFNUQVRFX0NP TlNUQU5UX1BTIiwgT1BfM0RTVEFURV9DT05TVEFOVF9QUywgRl9MRU5fVkFSLCBSX1JDUywKKwkJ RF9CRFcsIDAsIDgsIGd2dF9jbWRfaGFuZGxlcl8zZHN0YXRlX2NvbnN0YW50fSwKKworCXsiM0RT VEFURV9TQU1QTEVfTUFTSyIsIE9QXzNEU1RBVEVfU0FNUExFX01BU0ssIEZfTEVOX1ZBUiwgUl9S Q1MsCisJCURfQUxMLCAwLCA4LCBOVUxMfSwKKworCXsiM0RTVEFURV9DT05TVEFOVF9IUyIsIE9Q XzNEU1RBVEVfQ09OU1RBTlRfSFMsIEZfTEVOX1ZBUiwgUl9SQ1MsCisJCURfQkRXLCAwLCA4LCBn dnRfY21kX2hhbmRsZXJfM2RzdGF0ZV9jb25zdGFudH0sCisKKwl7IjNEU1RBVEVfQ09OU1RBTlRf RFMiLCBPUF8zRFNUQVRFX0NPTlNUQU5UX0RTLCBGX0xFTl9WQVIsIFJfUkNTLAorCQlEX0JEVywg MCwgOCwgZ3Z0X2NtZF9oYW5kbGVyXzNkc3RhdGVfY29uc3RhbnR9LAorCisJeyIzRFNUQVRFX0hT IiwgT1BfM0RTVEFURV9IUywgRl9MRU5fVkFSLCBSX1JDUywgRF9BTEwsIDAsIDgsIE5VTEx9LAor CisJeyIzRFNUQVRFX1RFIiwgT1BfM0RTVEFURV9URSwgRl9MRU5fVkFSLCBSX1JDUywgRF9BTEws IDAsIDgsIE5VTEx9LAorCisJeyIzRFNUQVRFX0RTIiwgT1BfM0RTVEFURV9EUywgRl9MRU5fVkFS LCBSX1JDUywgRF9BTEwsIDAsIDgsIE5VTEx9LAorCisJeyIzRFNUQVRFX1NUUkVBTU9VVCIsIE9Q XzNEU1RBVEVfU1RSRUFNT1VULCBGX0xFTl9WQVIsIFJfUkNTLAorCQlEX0FMTCwgMCwgOCwgTlVM TH0sCisKKwl7IjNEU1RBVEVfU0JFIiwgT1BfM0RTVEFURV9TQkUsIEZfTEVOX1ZBUiwgUl9SQ1Ms IERfQUxMLCAwLCA4LCBOVUxMfSwKKworCXsiM0RTVEFURV9QUyIsIE9QXzNEU1RBVEVfUFMsIEZf TEVOX1ZBUiwgUl9SQ1MsIERfQUxMLCAwLCA4LCBOVUxMfSwKKworCXsiM0RTVEFURV9EUkFXSU5H X1JFQ1RBTkdMRSIsIE9QXzNEU1RBVEVfRFJBV0lOR19SRUNUQU5HTEUsIEZfTEVOX1ZBUiwKKwkJ Ul9SQ1MsIERfQUxMLCAwLCA4LCBOVUxMfSwKKworCXsiM0RTVEFURV9TQU1QTEVSX1BBTEVUVEVf TE9BRDAiLCBPUF8zRFNUQVRFX1NBTVBMRVJfUEFMRVRURV9MT0FEMCwKKwkJRl9MRU5fVkFSLCBS X1JDUywgRF9BTEwsIDAsIDgsIE5VTEx9LAorCisJeyIzRFNUQVRFX0NIUk9NQV9LRVkiLCBPUF8z RFNUQVRFX0NIUk9NQV9LRVksIEZfTEVOX1ZBUiwgUl9SQ1MsIERfQUxMLAorCQkwLCA4LCBOVUxM fSwKKworCXsiM0RTVEFURV9ERVBUSF9CVUZGRVIiLCBPUF8zRFNUQVRFX0RFUFRIX0JVRkZFUiwg Rl9MRU5fVkFSLCBSX1JDUywKKwkJRF9BTEwsIEFERFJfRklYXzEoMiksIDgsIE5VTEx9LAorCisJ eyIzRFNUQVRFX1BPTFlfU1RJUFBMRV9PRkZTRVQiLCBPUF8zRFNUQVRFX1BPTFlfU1RJUFBMRV9P RkZTRVQsCisJCUZfTEVOX1ZBUiwgUl9SQ1MsIERfQUxMLCAwLCA4LCBOVUxMfSwKKworCXsiM0RT VEFURV9QT0xZX1NUSVBQTEVfUEFUVEVSTiIsIE9QXzNEU1RBVEVfUE9MWV9TVElQUExFX1BBVFRF Uk4sCisJCUZfTEVOX1ZBUiwgUl9SQ1MsIERfQUxMLCAwLCA4LCBOVUxMfSwKKworCXsiM0RTVEFU RV9MSU5FX1NUSVBQTEUiLCBPUF8zRFNUQVRFX0xJTkVfU1RJUFBMRSwgRl9MRU5fVkFSLCBSX1JD UywKKwkJRF9BTEwsIDAsIDgsIE5VTEx9LAorCisJeyIzRFNUQVRFX0FBX0xJTkVfUEFSQU1TIiwg T1BfM0RTVEFURV9BQV9MSU5FX1BBUkFNUywgRl9MRU5fVkFSLCBSX1JDUywKKwkJRF9BTEwsIDAs IDgsIE5VTEx9LAorCisJeyIzRFNUQVRFX0dTX1NWQl9JTkRFWCIsIE9QXzNEU1RBVEVfR1NfU1ZC X0lOREVYLCBGX0xFTl9WQVIsIFJfUkNTLCBEX0FMTCwKKwkJMCwgOCwgTlVMTH0sCisKKwl7IjNE U1RBVEVfU0FNUExFUl9QQUxFVFRFX0xPQUQxIiwgT1BfM0RTVEFURV9TQU1QTEVSX1BBTEVUVEVf TE9BRDEsCisJCUZfTEVOX1ZBUiwgUl9SQ1MsIERfQUxMLCAwLCA4LCBOVUxMfSwKKworCXsiM0RT VEFURV9NVUxUSVNBTVBMRSIsIE9QXzNEU1RBVEVfTVVMVElTQU1QTEVfQkRXLCBGX0xFTl9WQVIs IFJfUkNTLCBEX0JEVywKKwkJMCwgOCwgTlVMTH0sCisKKwl7IjNEU1RBVEVfU1RFTkNJTF9CVUZG RVIiLCBPUF8zRFNUQVRFX1NURU5DSUxfQlVGRkVSLCBGX0xFTl9WQVIsIFJfUkNTLAorCQlEX0FM TCwgQUREUl9GSVhfMSgyKSwgOCwgTlVMTH0sCisKKwl7IjNEU1RBVEVfSElFUl9ERVBUSF9CVUZG RVIiLCBPUF8zRFNUQVRFX0hJRVJfREVQVEhfQlVGRkVSLCBGX0xFTl9WQVIsCisJCVJfUkNTLCBE X0FMTCwgQUREUl9GSVhfMSgyKSwgOCwgTlVMTH0sCisKKwl7IjNEU1RBVEVfQ0xFQVJfUEFSQU1T IiwgT1BfM0RTVEFURV9DTEVBUl9QQVJBTVMsIEZfTEVOX1ZBUiwKKwkJUl9SQ1MsIERfQUxMLCAw LCA4LCBOVUxMfSwKKworCXsiM0RTVEFURV9QVVNIX0NPTlNUQU5UX0FMTE9DX1ZTIiwgT1BfM0RT VEFURV9QVVNIX0NPTlNUQU5UX0FMTE9DX1ZTLAorCQlGX0xFTl9WQVIsIFJfUkNTLCBEX0FMTCwg MCwgOCwgTlVMTH0sCisKKwl7IjNEU1RBVEVfUFVTSF9DT05TVEFOVF9BTExPQ19IUyIsIE9QXzNE U1RBVEVfUFVTSF9DT05TVEFOVF9BTExPQ19IUywKKwkJRl9MRU5fVkFSLCBSX1JDUywgRF9BTEws IDAsIDgsIE5VTEx9LAorCisJeyIzRFNUQVRFX1BVU0hfQ09OU1RBTlRfQUxMT0NfRFMiLCBPUF8z RFNUQVRFX1BVU0hfQ09OU1RBTlRfQUxMT0NfRFMsCisJCUZfTEVOX1ZBUiwgUl9SQ1MsIERfQUxM LCAwLCA4LCBOVUxMfSwKKworCXsiM0RTVEFURV9QVVNIX0NPTlNUQU5UX0FMTE9DX0dTIiwgT1Bf M0RTVEFURV9QVVNIX0NPTlNUQU5UX0FMTE9DX0dTLAorCQlGX0xFTl9WQVIsIFJfUkNTLCBEX0FM TCwgMCwgOCwgTlVMTH0sCisKKwl7IjNEU1RBVEVfUFVTSF9DT05TVEFOVF9BTExPQ19QUyIsIE9Q XzNEU1RBVEVfUFVTSF9DT05TVEFOVF9BTExPQ19QUywKKwkJRl9MRU5fVkFSLCBSX1JDUywgRF9B TEwsIDAsIDgsIE5VTEx9LAorCisJeyIzRFNUQVRFX01PTk9GSUxURVJfU0laRSIsIE9QXzNEU1RB VEVfTU9OT0ZJTFRFUl9TSVpFLCBGX0xFTl9WQVIsIFJfUkNTLAorCQlEX0FMTCwgMCwgOCwgTlVM TH0sCisKKwl7IjNEU1RBVEVfU09fREVDTF9MSVNUIiwgT1BfM0RTVEFURV9TT19ERUNMX0xJU1Qs IEZfTEVOX1ZBUiwgUl9SQ1MsIERfQUxMLAorCQkwLCA5LCBOVUxMfSwKKworCXsiM0RTVEFURV9T T19CVUZGRVIiLCBPUF8zRFNUQVRFX1NPX0JVRkZFUiwgRl9MRU5fVkFSLCBSX1JDUywgRF9CRFcs CisJCUFERFJfRklYXzIoMiwgNCksIDgsIE5VTEx9LAorCisJeyIzRFNUQVRFX0JJTkRJTkdfVEFC TEVfUE9PTF9BTExPQyIsIE9QXzNEU1RBVEVfQklORElOR19UQUJMRV9QT09MX0FMTE9DLAorCQlG X0xFTl9WQVIsIFJfUkNTLCBEX0JEVywgQUREUl9GSVhfMSgxKSwgOCwgTlVMTH0sCisKKwl7IjNE U1RBVEVfR0FUSEVSX1BPT0xfQUxMT0MiLCBPUF8zRFNUQVRFX0dBVEhFUl9QT09MX0FMTE9DLAor CQlGX0xFTl9WQVIsIFJfUkNTLCBEX0JEVywgQUREUl9GSVhfMSgxKSwgOCwgTlVMTH0sCisKKwl7 IjNEU1RBVEVfRFg5X0NPTlNUQU5UX0JVRkZFUl9QT09MX0FMTE9DIiwgT1BfM0RTVEFURV9EWDlf Q09OU1RBTlRfQlVGRkVSX1BPT0xfQUxMT0MsCisJCUZfTEVOX1ZBUiwgUl9SQ1MsIERfQkRXLCBB RERSX0ZJWF8xKDEpLCA4LCBOVUxMfSwKKworCXsiM0RTVEFURV9TQU1QTEVfUEFUVEVSTiIsIE9Q XzNEU1RBVEVfU0FNUExFX1BBVFRFUk4sIEZfTEVOX1ZBUiwgUl9SQ1MsIERfQkRXLCAwLCA4LCBO VUxMfSwKKworCXsiUElQRV9DT05UUk9MIiwgT1BfUElQRV9DT05UUk9MLCBGX0xFTl9WQVIsIFJf UkNTLCBEX0FMTCwKKwkJQUREUl9GSVhfMSgyKSwgOCwgZ3Z0X2NtZF9oYW5kbGVyX3BpcGVfY29u dHJvbH0sCisKKwl7IjNEUFJJTUlUSVZFIiwgT1BfM0RQUklNSVRJVkUsIEZfTEVOX1ZBUiwgUl9S Q1MsIERfQUxMLCAwLCA4LCBOVUxMfSwKKworCXsiUElQRUxJTkVfU0VMRUNUIiwgT1BfUElQRUxJ TkVfU0VMRUNULCBGX0xFTl9DT05TVCwgUl9SQ1MsIERfQUxMLCAwLCAxLCBOVUxMfSwKKworCXsi U1RBVEVfUFJFRkVUQ0giLCBPUF9TVEFURV9QUkVGRVRDSCwgRl9MRU5fVkFSLCBSX1JDUywgRF9B TEwsCisJCUFERFJfRklYXzEoMSksIDgsIE5VTEx9LAorCisJeyJTVEFURV9TSVAiLCBPUF9TVEFU RV9TSVAsIEZfTEVOX1ZBUiwgUl9SQ1MsIERfQUxMLCAwLCA4LCBOVUxMfSwKKworCXsiU1RBVEVf QkFTRV9BRERSRVNTIiwgT1BfU1RBVEVfQkFTRV9BRERSRVNTLCBGX0xFTl9WQVIsIFJfUkNTLCBE X0JEVywKKwkJQUREUl9GSVhfNSgxLCAzLCA0LCA1LCA2KSwgOCwgTlVMTH0sCisKKwl7Ik9QXzNE X01FRElBXzBfMV80IiwgT1BfM0RfTUVESUFfMF8xXzQsIEZfTEVOX1ZBUiwgUl9SQ1MsIERfQUxM LAorCQlBRERSX0ZJWF8xKDEpLCA4LCBOVUxMfSwKKworCXsiM0RTVEFURV9WUyIsIE9QXzNEU1RB VEVfVlMsIEZfTEVOX1ZBUiwgUl9SQ1MsIERfQUxMLCAwLCA4LCBOVUxMfSwKKworCXsiM0RTVEFU RV9TRiIsIE9QXzNEU1RBVEVfU0YsIEZfTEVOX1ZBUiwgUl9SQ1MsIERfQUxMLCAwLCA4LCBOVUxM fSwKKworCXsiM0RTVEFURV9DT05TVEFOVF9WUyIsIE9QXzNEU1RBVEVfQ09OU1RBTlRfVlMsIEZf TEVOX1ZBUiwgUl9SQ1MsIERfQkRXLAorCQkwLCA4LCBndnRfY21kX2hhbmRsZXJfM2RzdGF0ZV9j b25zdGFudH0sCisKKwl7Ik1FRElBX0lOVEVSRkFDRV9ERVNDUklQVE9SX0xPQUQiLCBPUF9NRURJ QV9JTlRFUkZBQ0VfREVTQ1JJUFRPUl9MT0FELAorCQlGX0xFTl9WQVIsIFJfUkNTLCBEX0FMTCwg MCwgMTYsIE5VTEx9LAorCisJeyJNRURJQV9HQVRFV0FZX1NUQVRFIiwgT1BfTUVESUFfR0FURVdB WV9TVEFURSwgRl9MRU5fVkFSLCBSX1JDUywgRF9BTEwsCisJCTAsIDE2LCBOVUxMfSwKKworCXsi TUVESUFfU1RBVEVfRkxVU0giLCBPUF9NRURJQV9TVEFURV9GTFVTSCwgRl9MRU5fVkFSLCBSX1JD UywgRF9BTEwsCisJCTAsIDE2LCBOVUxMfSwKKworCXsiTUVESUFfT0JKRUNUIiwgT1BfTUVESUFf T0JKRUNULCBGX0xFTl9WQVIsIFJfUkNTLCBEX0FMTCwgMCwgMTYsIE5VTEx9LAorCisJeyJNRURJ QV9DVVJCRV9MT0FEIiwgT1BfTUVESUFfQ1VSQkVfTE9BRCwgRl9MRU5fVkFSLCBSX1JDUywgRF9B TEwsCisJCTAsIDE2LCBOVUxMfSwKKworCXsiTUVESUFfT0JKRUNUX1BSVCIsIE9QX01FRElBX09C SkVDVF9QUlQsIEZfTEVOX1ZBUiwgUl9SQ1MsIERfQUxMLAorCQkwLCAxNiwgTlVMTH0sCisKKwl7 Ik1FRElBX09CSkVDVF9XQUxLRVIiLCBPUF9NRURJQV9PQkpFQ1RfV0FMS0VSLCBGX0xFTl9WQVIs IFJfUkNTLCBEX0FMTCwKKwkJMCwgMTYsIE5VTEx9LAorCisJeyJHUEdQVV9XQUxLRVIiLCBPUF9H UEdQVV9XQUxLRVIsIEZfTEVOX1ZBUiwgUl9SQ1MsIERfQUxMLAorCQkwLCA4LCBOVUxMfSwKKwor CXsiTUVESUFfVkZFX1NUQVRFIiwgT1BfTUVESUFfVkZFX1NUQVRFLCBGX0xFTl9WQVIsIFJfUkNT LCBEX0FMTCwgMCwgMTYsIE5VTEx9LAorCisJeyIzRFNUQVRFX1ZGX1NUQVRJU1RJQ1NfR000NSIs IE9QXzNEU1RBVEVfVkZfU1RBVElTVElDU19HTTQ1LCBGX0xFTl9DT05TVCwKKwkJUl9BTEwsIERf QUxMLCAwLCAxLCBOVUxMfSwKKworCXsiTUZYX1BJUEVfTU9ERV9TRUxFQ1QiLCBPUF9NRlhfUElQ RV9NT0RFX1NFTEVDVCwgRl9MRU5fVkFSLAorCQlSX1ZDUywgRF9BTEwsIDAsIDEyLCBOVUxMfSwK KworCXsiTUZYX1NVUkZBQ0VfU1RBVEUiLCBPUF9NRlhfU1VSRkFDRV9TVEFURSwgRl9MRU5fVkFS LAorCQlSX1ZDUywgRF9BTEwsIDAsIDEyLCBOVUxMfSwKKworCXsiTUZYX1BJUEVfQlVGX0FERFJf U1RBVEUiLCBPUF9NRlhfUElQRV9CVUZfQUREUl9TVEFURSwgRl9MRU5fVkFSLAorCQlSX1ZDUywg RF9CRFcsIDAsIDEyLCBndnRfY21kX2hhbmRsZXJfbWZ4X3BpcGVfYnVmX2FkZHJfc3RhdGV9LAor CisJeyJNRlhfSU5EX09CSl9CQVNFX0FERFJfU1RBVEUiLCBPUF9NRlhfSU5EX09CSl9CQVNFX0FE RFJfU1RBVEUsIEZfTEVOX1ZBUiwKKwkJUl9WQ1MsIERfQkRXLCAwLCAxMiwgZ3Z0X2NtZF9oYW5k bGVyX21meF9pbmRfb2JqX2Jhc2VfYWRkcl9zdGF0ZX0sCisKKwl7Ik1GWF9CU1BfQlVGX0JBU0Vf QUREUl9TVEFURSIsIE9QX01GWF9CU1BfQlVGX0JBU0VfQUREUl9TVEFURSwgRl9MRU5fVkFSLAor CQlSX1ZDUywgRF9CRFcsIEFERFJfRklYXzMoMSwgMywgNSksIDEyLCBOVUxMfSwKKworCXsiT1Bf Ml8wXzBfNSIsIE9QXzJfMF8wXzUsIEZfTEVOX1ZBUiwgUl9WQ1MsIERfQkRXLCAwLCAxMiwgTlVM TH0sCisKKwl7Ik1GWF9TVEFURV9QT0lOVEVSIiwgT1BfTUZYX1NUQVRFX1BPSU5URVIsIEZfTEVO X1ZBUiwKKwkJUl9WQ1MsIERfQUxMLCAwLCAxMiwgTlVMTH0sCisKKwl7Ik1GWF9RTV9TVEFURSIs IE9QX01GWF9RTV9TVEFURSwgRl9MRU5fVkFSLAorCQlSX1ZDUywgRF9BTEwsIDAsIDEyLCBOVUxM fSwKKworCXsiTUZYX0ZRTV9TVEFURSIsIE9QX01GWF9GUU1fU1RBVEUsIEZfTEVOX1ZBUiwKKwkJ Ul9WQ1MsIERfQUxMLCAwLCAxMiwgTlVMTH0sCisKKwl7Ik1GWF9QQUtfSU5TRVJUX09CSkVDVCIs IE9QX01GWF9QQUtfSU5TRVJUX09CSkVDVCwgRl9MRU5fVkFSLAorCQlSX1ZDUywgRF9BTEwsIDAs IDEyLCBOVUxMfSwKKworCXsiTUZYX1NUSVRDSF9PQkpFQ1QiLCBPUF9NRlhfU1RJVENIX09CSkVD VCwgRl9MRU5fVkFSLAorCQlSX1ZDUywgRF9BTEwsIDAsIDEyLCBOVUxMfSwKKworCXsiTUZEX0lU X09CSkVDVCIsIE9QX01GRF9JVF9PQkpFQ1QsIEZfTEVOX1ZBUiwKKwkJUl9WQ1MsIERfQUxMLCAw LCAxMiwgTlVMTH0sCisKKwl7Ik1GWF9XQUlUIiwgT1BfTUZYX1dBSVQsIEZfTEVOX1ZBUiwKKwkJ Ul9WQ1MsIERfQUxMLCAwLCA2LCBOVUxMfSwKKworCXsiTUZYX0FWQ19JTUdfU1RBVEUiLCBPUF9N RlhfQVZDX0lNR19TVEFURSwgRl9MRU5fVkFSLAorCQlSX1ZDUywgRF9BTEwsIDAsIDEyLCBOVUxM fSwKKworCXsiTUZYX0FWQ19RTV9TVEFURSIsIE9QX01GWF9BVkNfUU1fU1RBVEUsIEZfTEVOX1ZB UiwKKwkJUl9WQ1MsIERfQUxMLCAwLCAxMiwgTlVMTH0sCisKKwkvKiB0byBjaGVjazogaXMgIkRp cmVjdCBNViBCdWZmZXIgQmFzZSBBZGRyZXNzIiBHTUEgPyAqLworCXsiTUZYX0FWQ19ESVJFQ1RN T0RFX1NUQVRFIiwgT1BfTUZYX0FWQ19ESVJFQ1RNT0RFX1NUQVRFLCBGX0xFTl9WQVIsCisJCVJf VkNTLCBEX0FMTCwgMCwgMTIsIE5VTEx9LAorCisJeyJNRlhfQVZDX1NMSUNFX1NUQVRFIiwgT1Bf TUZYX0FWQ19TTElDRV9TVEFURSwgRl9MRU5fVkFSLAorCQlSX1ZDUywgRF9BTEwsIDAsIDEyLCBO VUxMfSwKKworCXsiTUZYX0FWQ19SRUZfSURYX1NUQVRFIiwgT1BfTUZYX0FWQ19SRUZfSURYX1NU QVRFLCBGX0xFTl9WQVIsCisJCVJfVkNTLCBEX0FMTCwgMCwgMTIsIE5VTEx9LAorCisJeyJNRlhf QVZDX1dFSUdIVE9GRlNFVF9TVEFURSIsIE9QX01GWF9BVkNfV0VJR0hUT0ZGU0VUX1NUQVRFLCBG X0xFTl9WQVIsCisJCVJfVkNTLCBEX0FMTCwgMCwgMTIsIE5VTEx9LAorCisJeyJNRkRfQVZDX1BJ Q0lEX1NUQVRFIiwgT1BfTUZEX0FWQ19QSUNJRF9TVEFURSwgRl9MRU5fVkFSLAorCQlSX1ZDUywg RF9BTEwsIDAsIDEyLCBOVUxMfSwKKwl7Ik1GRF9BVkNfRFBCX1NUQVRFIiwgT1BfTUZEX0FWQ19E UEJfU1RBVEUsIEZfTEVOX1ZBUiwKKwkJUl9WQ1MsIERfQUxMLCAwLCAxMiwgTlVMTH0sCisKKwl7 Ik1GRF9BVkNfQlNEX09CSkVDVCIsIE9QX01GRF9BVkNfQlNEX09CSkVDVCwgRl9MRU5fVkFSLAor CQlSX1ZDUywgRF9BTEwsIDAsIDEyLCBOVUxMfSwKKworCXsiTUZEX0FWQ19TTElDRUFERFIiLCBP UF9NRkRfQVZDX1NMSUNFQUREUiwgRl9MRU5fVkFSLAorCQlSX1ZDUywgRF9BTEwsIEFERFJfRklY XzEoMiksIDEyLCBOVUxMfSwKKworCXsiTUZDX0FWQ19QQUtfT0JKRUNUIiwgT1BfTUZDX0FWQ19Q QUtfT0JKRUNULCBGX0xFTl9WQVIsCisJCVJfVkNTLCBEX0FMTCwgMCwgMTIsIE5VTEx9LAorCisJ eyJNRlhfVkMxX1BSRURfUElQRV9TVEFURSIsIE9QX01GWF9WQzFfUFJFRF9QSVBFX1NUQVRFLCBG X0xFTl9WQVIsCisJCVJfVkNTLCBEX0FMTCwgMCwgMTIsIE5VTEx9LAorCisJeyJNRlhfVkMxX0RJ UkVDVE1PREVfU1RBVEUiLCBPUF9NRlhfVkMxX0RJUkVDVE1PREVfU1RBVEUsIEZfTEVOX1ZBUiwK KwkJUl9WQ1MsIERfQUxMLCAwLCAxMiwgTlVMTH0sCisKKwl7Ik1GRF9WQzFfU0hPUlRfUElDX1NU QVRFIiwgT1BfTUZEX1ZDMV9TSE9SVF9QSUNfU1RBVEUsIEZfTEVOX1ZBUiwKKwkJUl9WQ1MsIERf QUxMLCAwLCAxMiwgTlVMTH0sCisKKwl7Ik1GRF9WQzFfTE9OR19QSUNfU1RBVEUiLCBPUF9NRkRf VkMxX0xPTkdfUElDX1NUQVRFLCBGX0xFTl9WQVIsCisJCVJfVkNTLCBEX0FMTCwgMCwgMTIsIE5V TEx9LAorCisJeyJNRkRfVkMxX0JTRF9PQkpFQ1QiLCBPUF9NRkRfVkMxX0JTRF9PQkpFQ1QsIEZf TEVOX1ZBUiwKKwkJUl9WQ1MsIERfQUxMLCAwLCAxMiwgTlVMTH0sCisKKwl7Ik1GQ19NUEVHMl9T TElDRUdST1VQX1NUQVRFIiwgT1BfTUZDX01QRUcyX1NMSUNFR1JPVVBfU1RBVEUsIEZfTEVOX1ZB UiwKKwkJUl9WQ1MsIERfQUxMLCAwLCAxMiwgTlVMTH0sCisKKwl7Ik1GQ19NUEVHMl9QQUtfT0JK RUNUIiwgT1BfTUZDX01QRUcyX1BBS19PQkpFQ1QsIEZfTEVOX1ZBUiwKKwkJUl9WQ1MsIERfQUxM LCAwLCAxMiwgTlVMTH0sCisKKwl7Ik1GWF9NUEVHMl9QSUNfU1RBVEUiLCBPUF9NRlhfTVBFRzJf UElDX1NUQVRFLCBGX0xFTl9WQVIsCisJCVJfVkNTLCBEX0FMTCwgMCwgMTIsIE5VTEx9LAorCisJ eyJNRlhfTVBFRzJfUU1fU1RBVEUiLCBPUF9NRlhfTVBFRzJfUU1fU1RBVEUsIEZfTEVOX1ZBUiwK KwkJUl9WQ1MsIERfQUxMLCAwLCAxMiwgTlVMTH0sCisKKwl7Ik1GRF9NUEVHMl9CU0RfT0JKRUNU IiwgT1BfTUZEX01QRUcyX0JTRF9PQkpFQ1QsIEZfTEVOX1ZBUiwKKwkJUl9WQ1MsIERfQUxMLCAw LCAxMiwgTlVMTH0sCisKKwl7Ik1GWF8yXzZfMF8wIiwgT1BfTUZYXzJfNl8wXzAsIEZfTEVOX1ZB UiwgUl9WQ1MsIERfQUxMLAorCQkwLCAxNiwgZ3Z0X2NtZF9oYW5kbGVyX21meF8yXzZfMF8wfSwK KworCXsiTUZYXzJfNl8wXzkiLCBPUF9NRlhfMl82XzBfOSwgRl9MRU5fVkFSLCBSX1ZDUywgRF9B TEwsIDAsIDE2LCBOVUxMfSwKKworCXsiTUZYXzJfNl8wXzgiLCBPUF9NRlhfMl82XzBfOCwgRl9M RU5fVkFSLCBSX1ZDUywgRF9BTEwsIDAsIDE2LCBOVUxMfSwKKworCXsiTUZYX0pQRUdfUElDX1NU QVRFIiwgT1BfTUZYX0pQRUdfUElDX1NUQVRFLCBGX0xFTl9WQVIsCisJCVJfVkNTLCBEX0FMTCwg MCwgMTIsIE5VTEx9LAorCisJeyJNRlhfSlBFR19IVUZGX1RBQkxFX1NUQVRFIiwgT1BfTUZYX0pQ RUdfSFVGRl9UQUJMRV9TVEFURSwgRl9MRU5fVkFSLAorCQlSX1ZDUywgRF9BTEwsIDAsIDEyLCBO VUxMfSwKKworCXsiTUZEX0pQRUdfQlNEX09CSkVDVCIsIE9QX01GRF9KUEVHX0JTRF9PQkpFQ1Qs IEZfTEVOX1ZBUiwKKwkJUl9WQ1MsIERfQUxMLCAwLCAxMiwgTlVMTH0sCisKKwl7IlZFQk9YX1NU QVRFIiwgT1BfVkVCX1NUQVRFLCBGX0xFTl9WQVIsIFJfVkVDUywgRF9BTEwsIDAsIDEyLCBOVUxM fSwKKworCXsiVkVCT1hfU1VSRkFDRV9TVEFURSIsIE9QX1ZFQl9TVVJGQUNFX1NUQVRFLCBGX0xF Tl9WQVIsIFJfVkVDUywgRF9BTEwsIDAsIDEyLCBOVUxMfSwKKworCXsiVkVCX0RJX0lFQ1AiLCBP UF9WRUJfRE5ESV9JRUNQX1NUQVRFLCBGX0xFTl9WQVIsIFJfVkVDUywgRF9CRFdfUExVUywgMCwg MjAsIE5VTEx9LAorfTsKKworCitzdGF0aWMgaW50IGd2dF9jbWRfYWR2YW5jZV9kZWZhdWx0KHN0 cnVjdCBwYXJzZXJfZXhlY19zdGF0ZSAqcykKK3sKKwlyZXR1cm4gaXBfZ21hX2FkdmFuY2Uocywg Y21kX2xlbmd0aChzKSk7Cit9CisKK3N0YXRpYyB2b2lkIGd2dF9hZGRfY21kX2VudHJ5KHN0cnVj dCBwZ3RfZGV2aWNlICpwZGV2LCBzdHJ1Y3QgZ3Z0X2NtZF9lbnRyeSAqZSkKK3sKKwloYXNoX2Fk ZChwZGV2LT5jbWRfdGFibGUsICZlLT5obGlzdCwgZS0+aW5mby0+b3Bjb2RlKTsKK30KKworI2Rl ZmluZSBHVlRfTUFYX0NNRF9MRU5HVEggICAgIDIwICAvKiBJbiBEd29yZCAqLworCitzdGF0aWMg dm9pZCB0cmFjZV9jc19jb21tYW5kKHN0cnVjdCBwYXJzZXJfZXhlY19zdGF0ZSAqcywgY3ljbGVz X3QgY29zdF9wcmVfY21kX2hhbmRsZXIsIGN5Y2xlc190IGNvc3RfY21kX2hhbmRsZXIpCit7CisJ LyogVGhpcyBidWZmZXIgaXMgdXNlZCBieSBmdHJhY2UgdG8gc3RvcmUgYWxsIGNvbW1hbmRzIGNv cGllZCBmcm9tIGd1ZXN0IGdtYQorCSogc3BhY2UuIFNvbWV0aW1lcyBjb21tYW5kcyBjYW4gY3Jv c3MgcGFnZXMsIHRoaXMgc2hvdWxkIG5vdCBiZSBoYW5kbGVkIGluCisJICogZnRyYWNlIGxvZ2lj LiBTbyB0aGlzIGlzIGp1c3QgdXNlZCBhcyBhICdib3VuY2UgYnVmZmVyJyAqLworCXUzMiBjbWRf dHJhY2VfYnVmW0dWVF9NQVhfQ01EX0xFTkdUSF07CisJaW50IGk7CisJdTMyIGNtZF9sZW4gPSBj bWRfbGVuZ3RoKHMpOworCS8qIFRoZSBjaG9zZW4gdmFsdWUgb2YgR1ZUX01BWF9DTURfTEVOR1RI IGFyZSBqdXN0IGJhc2VkIG9uCisJICogZm9sbG93aW5nIHR3byBjb25zaWRlcmF0aW9uczoKKwkg KiAxKSBGcm9tIG9ic2VydmF0aW9uLCBtb3N0IGNvbW1vbiByaW5nIGNvbW1hbmRzIGlzIG5vdCB0 aGF0IGxvbmcuCisJICogICAgQnV0IHRoZXJlIGFyZSBleGVjZXB0aW9ucy4gU28gaXQgaW5kZWVk IG1ha2VzIHNlbmNlIHRvIG9ic2VydmUKKwkgKiAgICBsb25nZXIgY29tbWFuZHMuCisJICogMikg RnJvbSB0aGUgcGVyZm9ybWFuY2UgYW5kIGRlYnVnZ2luZyBwb2ludCBvZiB2aWV3LCBkdW1waW5n IGFsbAorCSAqICAgIGNvbnRlbnRzIG9mIHZlcnkgY29tbWFuZHMgaXMgbm90IG5lY2Vzc2FyeS4K KwkgKiBXZSBtZ2l0aCBzaHJpbmsgR1ZUX01BWF9DTURfTEVOR1RIIG9yIHJlbW92ZSB0aGlzIHRy YWNlIGV2ZW50IGluCisJICogZnV0dXJlIGZvciBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9ucy4K KwkgKi8KKwlpZiAodW5saWtlbHkoY21kX2xlbiA+IEdWVF9NQVhfQ01EX0xFTkdUSCkpIHsKKwkJ Z3Z0X2RiZ19jbWQoImNtZCBsZW5ndGggZXhjZWVkIHRyYWNpbmcgbGltaXRhdGlvbiEiKTsKKwkJ Y21kX2xlbiA9IEdWVF9NQVhfQ01EX0xFTkdUSDsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgY21k X2xlbjsgaSsrKQorCQljbWRfdHJhY2VfYnVmW2ldID0gY21kX3ZhbChzLCBpKTsKKworCXRyYWNl X2d2dF9jb21tYW5kKHMtPnZndC0+dm1faWQsIHMtPnJpbmdfaWQsIHMtPmlwX2dtYSwgY21kX3Ry YWNlX2J1ZiwKKwkJCWNtZF9sZW4sIHMtPmJ1Zl90eXBlID09IFJJTkdfQlVGRkVSX0lOU1RSVUNU SU9OLCBjb3N0X3ByZV9jbWRfaGFuZGxlciwgY29zdF9jbWRfaGFuZGxlcik7CisKK30KKworLyog Y2FsbCB0aGUgY21kIGhhbmRsZXIsIGFuZCBhZHZhbmNlIGlwICovCitzdGF0aWMgYm9vbCBndnRf Y21kX3BhcnNlcl9leGVjKHN0cnVjdCBwYXJzZXJfZXhlY19zdGF0ZSAqcykKK3sKKwlzdHJ1Y3Qg Y21kX2luZm8gKmluZm87CisJdTMyIGNtZDsKKwlpbnQgcmMgPSAwOworCWN5Y2xlc190IHQwLCB0 MSwgdDI7CisKKwl0MCA9IGdldF9jeWNsZXMoKTsKKworCWNtZCA9IGNtZF92YWwocywgMCk7CisK KwlpbmZvID0gZ3Z0X2dldF9jbWRfaW5mbyhzLT52Z3QtPnBkZXYsIGNtZCwgcy0+cmluZ19pZCk7 CisJaWYgKGluZm8gPT0gTlVMTCkgeworCQlndnRfZXJyKCJFUlJPUjogdW5rbm93biBjbWQgMHgl eCwgb3Bjb2RlPTB4JXgiLCBjbWQsCisJCQkJZ2V0X29wY29kZShjbWQsIHMtPnJpbmdfaWQpKTsK KwkJcGFyc2VyX2V4ZWNfc3RhdGVfZHVtcChzKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCWd2 dF9kYmdfY21kKCIlcyIsIGluZm8tPm5hbWUpOworCisJcy0+aW5mbyA9IGluZm87CisKKwlndnRf Y21kX2FkZHJfYXVkaXRfd2l0aF9iaXRtYXAocywgaW5mby0+YWRkcl9iaXRtYXApOworCisJdDEg PSBnZXRfY3ljbGVzKCk7CisKKwlpZiAoaW5mby0+aGFuZGxlcikgeworCQlyYyA9IGluZm8tPmhh bmRsZXIocyk7CisJCWlmIChyYyA8IDApIHsKKwkJCWd2dF9lcnIoIiVzIGhhbmRsZXIgZXJyb3Ii LCBpbmZvLT5uYW1lKTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCX0KKworCXQyID0gZ2V0X2N5 Y2xlcygpOworCisJdHJhY2VfY3NfY29tbWFuZChzLCB0MSAtIHQwLCB0MiAtdDEpOworCisJaWYg KCEoaW5mby0+ZmxhZyAmIEZfSVBfQURWQU5DRV9DVVNUT00pKSB7CisJCXJjID0gZ3Z0X2NtZF9h ZHZhbmNlX2RlZmF1bHQocyk7CisJCWlmIChyYyA8IDApIHsKKwkJCWd2dF9lcnIoIiVzIElQIGFk dmFuY2UgZXJyb3IiLCBpbmZvLT5uYW1lKTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCX0KKwly ZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGlubGluZSBib29sIGdtYV9vdXRfb2ZfcmFuZ2UodW5z aWduZWQgbG9uZyBnbWEsIHVuc2lnbmVkIGxvbmcgZ21hX2hlYWQsIHVuc2lnbmVkIGdtYV90YWls KQoreworCWlmICggZ21hX3RhaWwgPj0gZ21hX2hlYWQpCisJCXJldHVybiAoZ21hIDwgZ21hX2hl YWQpIHx8IChnbWEgPiBnbWFfdGFpbCk7CisJZWxzZQorCQlyZXR1cm4gKGdtYSA+IGdtYV90YWls KSAmJiAoZ21hIDwgZ21hX2hlYWQpOworCit9CisKK3N0YXRpYyBib29sIHNjYW5fd29ya2xvYWQo c3RydWN0IGd2dF93b3JrbG9hZCAqd29ya2xvYWQpCit7CisJdW5zaWduZWQgbG9uZyBnbWFfaGVh ZCwgZ21hX3RhaWwsIGdtYV9ib3R0b207CisJc3RydWN0IHBhcnNlcl9leGVjX3N0YXRlIHM7CisJ Ym9vbCByYyA9IGZhbHNlOworCisJLyogcmluZyBiYXNlIGlzIHBhZ2UgYWxpZ25lZCAqLworCUFT U0VSVCgod29ya2xvYWQtPnJiX3N0YXJ0ICYgKFBBR0VfU0laRS0xKSkgPT0gMCk7CisKKwlnbWFf aGVhZCA9IHdvcmtsb2FkLT5yYl9zdGFydCArIHdvcmtsb2FkLT5yYl9oZWFkOworCWdtYV90YWls ID0gd29ya2xvYWQtPnJiX3N0YXJ0ICsgd29ya2xvYWQtPnJiX3RhaWw7CisJZ21hX2JvdHRvbSA9 IHdvcmtsb2FkLT5yYl9zdGFydCArICBfUklOR19DVExfQlVGX1NJWkUod29ya2xvYWQtPnJiX2N0 bCk7CisKKwlzLmJ1Zl90eXBlID0gUklOR19CVUZGRVJfSU5TVFJVQ1RJT047CisJcy5idWZfYWRk cl90eXBlID0gR1RUX0JVRkZFUjsKKwlzLnZndCA9IHdvcmtsb2FkLT52Z3Q7CisJcy5yaW5nX2lk ID0gd29ya2xvYWQtPnJpbmdfaWQ7CisJcy5yaW5nX3N0YXJ0ID0gd29ya2xvYWQtPnJiX3N0YXJ0 OworCXMucmluZ19zaXplID0gX1JJTkdfQ1RMX0JVRl9TSVpFKHdvcmtsb2FkLT5yYl9jdGwpOwor CXMucmluZ19oZWFkID0gZ21hX2hlYWQ7CisJcy5yaW5nX3RhaWwgPSBnbWFfdGFpbDsKKwlzLnJi X3ZhID0gd29ya2xvYWQtPnNoYWRvd19yaW5nX2J1ZmZlcl92YTsKKwlzLndvcmtsb2FkID0gd29y a2xvYWQ7CisKKwlpZiAoYnlwYXNzX3NjYW5fbWFzayAmICgxIDw8IHdvcmtsb2FkLT5yaW5nX2lk KSkKKwkJcmV0dXJuIHRydWU7CisKKwlpZiAoaXBfZ21hX3NldCgmcywgZ21hX2hlYWQpIDwgMCkK KwkJZ290byBvdXQ7CisKKwlndnRfZGJnX2NtZCgic2Nhbl9zdGFydDogc3RhcnQ9JWx4IGVuZD0l bHgiLCBnbWFfaGVhZCwgZ21hX3RhaWwpOworCisJd2hpbGUocy5pcF9nbWEgIT0gZ21hX3RhaWwp IHsKKwkJaWYgKHMuYnVmX3R5cGUgPT0gUklOR19CVUZGRVJfSU5TVFJVQ1RJT04pIHsKKwkJCWlm ICghKHMuaXBfZ21hID49IHdvcmtsb2FkLT5yYl9zdGFydCkgfHwgIShzLmlwX2dtYSA8IGdtYV9i b3R0b20pKSB7CisJCQkJZ3Z0X2VycigiRVJST1I6IGlwX2dtYSAlbHggb3V0IG9mIHJpbmcgc2Nv cGUuIgorCQkJCQkiKGJhc2U6MHglbHgsIGJvdHRvbTogMHglbHgpIiwKKwkJCQkJcy5pcF9nbWEs IHdvcmtsb2FkLT5yYl9zdGFydCwgZ21hX2JvdHRvbSk7CisJCQkJcmV0dXJuIGZhbHNlOworCQkJ fQorCQkJaWYgKGdtYV9vdXRfb2ZfcmFuZ2Uocy5pcF9nbWEsIGdtYV9oZWFkLCBnbWFfdGFpbCkp IHsKKwkJCQlndnRfZXJyKCJFUlJPUjogaXBfZ21hICVseCBvdXQgb2YgcmFuZ2UuIgorCQkJCQki KGJhc2U6MHglbHgsIGhlYWQ6IDB4JWx4LCB0YWlsOiAweCVseCkiLAorCQkJCQlzLmlwX2dtYSwg d29ya2xvYWQtPnJiX3N0YXJ0LCB3b3JrbG9hZC0+cmJfaGVhZCwgd29ya2xvYWQtPnJiX3RhaWwp OworCQkJCWJyZWFrOworCQkJfQorCQl9CisKKwkJcmMgPSBndnRfY21kX3BhcnNlcl9leGVjKCZz KTsKKwkJaWYgKCFyYykgeworCQkJZ3Z0X2VycigiY21kIHBhcnNlciBlcnJvciIpOworCQkJYnJl YWs7CisJCX0KKwl9CisKKwlndnRfZGJnX2NtZCgic2Nhbl9lbmQiKTsKK291dDoKKwlyZXR1cm4g cmM7Cit9CisKK3N0YXRpYyBib29sIGNvcHlfZ21hX3RvX2h2YShzdHJ1Y3Qgdmd0X2RldmljZSAq dmd0LCBzdHJ1Y3QgZ3Z0X21tICptbSwKKwkJdW5zaWduZWQgbG9uZyBnbWEsIHVuc2lnbmVkIGxv bmcgZW5kX2dtYSwgdm9pZCAqdmEpCit7CisJdW5zaWduZWQgbG9uZyBjb3B5X2xlbiwgb2Zmc2V0 OworCXVuc2lnbmVkIGxvbmcgbGVuID0gMDsKKwl2b2lkICpnbWFfdmE7CisKKwl3aGlsZSAoZ21h ICE9IGVuZF9nbWEpIHsKKwkJZ21hX3ZhID0gZ3Z0X2dtYV90b192YShtbSwgZ21hKTsKKwkJaWYg KCFnbWFfdmEpIHsKKwkJCWd2dF9lcnIoImludmFsaWQgZ21hIGFkZHJlc3M6ICVseCIsIGdtYSk7 CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKworCQlvZmZzZXQgPSBnbWEgJiAoR1RUX1BBR0VfU0la RSAtIDEpOworCQlpZiAob2Zmc2V0KSB7CisJCQljb3B5X2xlbiA9IChlbmRfZ21hIC0gZ21hKSA+ PSAoR1RUX1BBR0VfU0laRSAtIG9mZnNldCkgPworCQkJCUdUVF9QQUdFX1NJWkUgLSBvZmZzZXQg OiBlbmRfZ21hIC0gZ21hOworCQl9IGVsc2UgeworCQkJY29weV9sZW4gPSAoZW5kX2dtYSAtIGdt YSkgPj0gR1RUX1BBR0VfU0laRSA/CisJCQkJR1RUX1BBR0VfU0laRSA6IGVuZF9nbWEgLSBnbWE7 CisJCX0KKworCQlndnRfZGJnX2NtZCgiZW5kIGdtYSAlbHggZ21hICVseCBvZmZzZXQgJWx4IGNv cHkgbGVuICVseCIsCisJCQllbmRfZ21hLCBnbWEsIG9mZnNldCwgY29weV9sZW4pOworCisJCWh5 cGVydmlzb3JfcmVhZF92YSh2Z3QsIGdtYV92YSwKKwkJCXZhICsgbGVuLCBjb3B5X2xlbiwgMSk7 CisKKwkJbGVuICs9IGNvcHlfbGVuOworCQlnbWEgKz0gY29weV9sZW47CisJfQorCisJcmV0dXJu IHRydWU7Cit9CisKK3N0YXRpYyBib29sIHNoYWRvd193b3JrbG9hZF9yaW5nX2J1ZmZlcihzdHJ1 Y3QgZ3Z0X3dvcmtsb2FkICp3b3JrbG9hZCkKK3sKKwlzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0ID0g d29ya2xvYWQtPnZndDsKKwlzdHJ1Y3QgcGd0X2RldmljZSAqcGRldiA9IHZndC0+cGRldjsKKwor CWludCByaW5nX2lkID0gd29ya2xvYWQtPnJpbmdfaWQ7CisJc3RydWN0IGd2dF93b3JrbG9hZF9z Y2hlZHVsZXIgKnNjaGVkdWxlciA9ICZwZGV2LT53b3JrbG9hZF9zY2hlZHVsZXI7CisJc3RydWN0 IGludGVsX2NvbnRleHQgKnNoYWRvd19jdHggPSBzY2hlZHVsZXItPnNoYWRvd19jdHg7CisJc3Ry dWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSBzaGFkb3dfY3R4LT5lbmdpbmVbcmluZ19p ZF0ucmluZ2J1ZjsKKworCXVuc2lnbmVkIGxvbmcgZ21hX2hlYWQsIGdtYV90YWlsLCBnbWFfdG9w LCBndWVzdF9yYl9zaXplOworCXVuc2lnbmVkIGNvcHlfbGVuID0gMDsKKworCWludCByZXQ7CisK KwlndWVzdF9yYl9zaXplID0gX1JJTkdfQ1RMX0JVRl9TSVpFKHdvcmtsb2FkLT5yYl9jdGwpOwor CisJLyogY2FsY3VsYXRlIHdvcmtsb2FkIHJpbmcgYnVmZmVyIHNpemUgKi8KKwl3b3JrbG9hZC0+ cmJfbGVuID0gKHdvcmtsb2FkLT5yYl90YWlsICsgZ3Vlc3RfcmJfc2l6ZSAtCisJCQl3b3JrbG9h ZC0+cmJfaGVhZCkgJSBndWVzdF9yYl9zaXplOworCisJZ21hX2hlYWQgPSB3b3JrbG9hZC0+cmJf c3RhcnQgKyB3b3JrbG9hZC0+cmJfaGVhZDsKKwlnbWFfdGFpbCA9IHdvcmtsb2FkLT5yYl9zdGFy dCArIHdvcmtsb2FkLT5yYl90YWlsOworCWdtYV90b3AgPSB3b3JrbG9hZC0+cmJfc3RhcnQgKyBn dWVzdF9yYl9zaXplOworCisJLyogYWxsb2NhdGUgc2hhZG93IHJpbmcgYnVmZmVyICovCisJcmV0 ID0gaW50ZWxfbG9naWNhbF9yaW5nX2JlZ2luKHdvcmtsb2FkLT5yZXEsIHdvcmtsb2FkLT5yYl9s ZW4gLyA0KTsKKwlpZihyZXQpCisJCXJldHVybiBmYWxzZTsKKworCS8qIGdldCBzaGFkb3cgcmlu ZyBidWZmZXIgdmEgKi8KKwl3b3JrbG9hZC0+c2hhZG93X3JpbmdfYnVmZmVyX3ZhID0gcmluZ2J1 Zi0+dmlydHVhbF9zdGFydCArIHJpbmdidWYtPnRhaWw7CisKKwkvKiBoZWFkID4gdGFpbCAtLT4g Y29weSBoZWFkIDwtPiB0b3AgKi8KKwlpZiAoZ21hX2hlYWQgPiBnbWFfdGFpbCkgeworCQlpZiAo IWNvcHlfZ21hX3RvX2h2YSh2Z3QsIHZndC0+Z3R0LmdndHRfbW0sCisJCQkJCWdtYV9oZWFkLCBn bWFfdG9wLCB3b3JrbG9hZC0+c2hhZG93X3JpbmdfYnVmZmVyX3ZhKSkgeworCQkJZ3Z0X2Vycigi ZmFpbCB0byBjb3B5IGd1ZXN0IHJpbmcgYnVmZmVyIik7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0K KworCQljb3B5X2xlbiA9IGdtYV90b3AgLSBnbWFfaGVhZDsKKwkJZ21hX2hlYWQgPSB3b3JrbG9h ZC0+cmJfc3RhcnQ7CisJfQorCisJLyogY29weSBoZWFkIG9yIHN0YXJ0IDwtPiB0YWlsICovCisJ aWYgKCFjb3B5X2dtYV90b19odmEodmd0LCB2Z3QtPmd0dC5nZ3R0X21tLAorCQkJCWdtYV9oZWFk LCBnbWFfdGFpbCwgd29ya2xvYWQtPnNoYWRvd19yaW5nX2J1ZmZlcl92YSArIGNvcHlfbGVuKSkg eworCQlndnRfZXJyKCJmYWlsIHRvIGNvcHkgZ3Vlc3QgcmluZyBidWZmZXIiKTsKKwkJcmV0dXJu IGZhbHNlOworCX0KKworCXJpbmdidWYtPnRhaWwgKz0gd29ya2xvYWQtPnJiX2xlbjsKKwlpbnRl bF9sb2dpY2FsX3JpbmdfYWR2YW5jZShyaW5nYnVmKTsKKworCXJldHVybiB0cnVlOworfQorCiti b29sIGd2dF9zY2FuX2FuZF9zaGFkb3dfd29ya2xvYWQoc3RydWN0IGd2dF93b3JrbG9hZCAqd29y a2xvYWQpCit7CisJc3RydWN0IGd2dF9zdGF0aXN0aWNzICpzdGF0ID0gJndvcmtsb2FkLT52Z3Qt PnN0YXQ7CisJY3ljbGVzX3QgdDAsIHQxOworCisJdDAgPSBnZXRfY3ljbGVzKCk7CisKKwlzdGF0 LT52cmluZ19zY2FuX2NudCsrOworCisJaWYgKCFzaGFkb3dfd29ya2xvYWRfcmluZ19idWZmZXIo d29ya2xvYWQpKSB7CisJCWd2dF9lcnIoImZhaWwgdG8gc2hhZG93IHdvcmtsb2FkIHJpbmdfYnVm ZmVyIik7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlpZiAoIXNjYW5fd29ya2xvYWQod29ya2xv YWQpKSB7CisJCWd2dF9lcnIoInNjYW4gd29ya2xvYWQgZXJyb3IiKTsKKwkJcmV0dXJuIGZhbHNl OworCX0KKworCXQxID0gZ2V0X2N5Y2xlcygpOworCisJc3RhdC0+dnJpbmdfc2Nhbl9jeWNsZXMg Kz0gdDEgLSB0MDsKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIHN0cnVjdCBjbWRfaW5mbyAq ZmluZF9jbWRfZW50cnlfYW55X3Jpbmcoc3RydWN0IHBndF9kZXZpY2UgKnBkZXYsIHVuc2lnbmVk IGludCBvcGNvZGUsIGludCByaW5ncykKK3sKKwlzdHJ1Y3QgY21kX2luZm8qIGluZm8gPSBOVUxM OworCXVuc2lnbmVkIGludCByaW5nOworCWZvcl9lYWNoX3NldF9iaXQocmluZywgKHVuc2lnbmVk IGxvbmcqKSZyaW5ncywgSTkxNV9OVU1fUklOR1MpIHsKKwkJaW5mbyA9IGZpbmRfY21kX2VudHJ5 KHBkZXYsIG9wY29kZSwgcmluZyk7CisJCWlmIChpbmZvKQorCQkJYnJlYWs7CisJfQorCXJldHVy biBpbmZvOworfQorCitzdGF0aWMgYm9vbCBpbml0X2NtZF90YWJsZShzdHJ1Y3QgcGd0X2Rldmlj ZSAqcGRldikKK3sKKwlpbnQgaTsKKwlzdHJ1Y3QgZ3Z0X2NtZF9lbnRyeSAqZTsKKwlzdHJ1Y3Qg Y21kX2luZm8JKmluZm87CisJdW5zaWduZWQgaW50IGdlbl90eXBlOworCisJZ2VuX3R5cGUgPSBn dnRfZ2V0X2RldmljZV90eXBlKHBkZXYpOworCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUo Y21kX2luZm8pOyBpKyspIHsKKwkJaWYgKCEoY21kX2luZm9baV0uZGV2aWNlcyAmIGdlbl90eXBl KSkgeworCQkJZ3Z0X2RiZ19jbWQoIkNNRFslLTMwc10gb3BbJTA0eF0gZmxhZ1sleF0gZGV2c1sl MDJ4XSByaW5nc1slMDJ4XSBub3QgcmVnaXN0ZXJlZCIsCisJCQkJCWNtZF9pbmZvW2ldLm5hbWUs IGNtZF9pbmZvW2ldLm9wY29kZSwgY21kX2luZm9baV0uZmxhZywKKwkJCQkJY21kX2luZm9baV0u ZGV2aWNlcywgY21kX2luZm9baV0ucmluZ3MpOworCQkJY29udGludWU7CisJCX0KKworCQllID0g a3phbGxvYyhzaXplb2YoKmUpLCBHRlBfS0VSTkVMKTsKKwkJaWYgKGUgPT0gTlVMTCkgeworCQkJ Z3Z0X2VycigiSW5zdWZmaWNpZW50IG1lbW9yeSBpbiAlcyIsIF9fRlVOQ1RJT05fXyk7CisJCQly ZXR1cm4gZmFsc2U7CisJCX0KKworCQllLT5pbmZvID0gJmNtZF9pbmZvW2ldOworCisJCWluZm8g PSBmaW5kX2NtZF9lbnRyeV9hbnlfcmluZyhwZGV2LCBlLT5pbmZvLT5vcGNvZGUsIGUtPmluZm8t PnJpbmdzKTsKKwkJaWYgKGluZm8pIHsKKwkJCWd2dF9lcnIoIiVzICVzIGR1cGxpY2F0ZWQiLCBl LT5pbmZvLT5uYW1lLCBpbmZvLT5uYW1lKTsKKwkJCXJldHVybiBmYWxzZTs7CisJCX0KKworCQlJ TklUX0hMSVNUX05PREUoJmUtPmhsaXN0KTsKKwkJZ3Z0X2FkZF9jbWRfZW50cnkocGRldiwgZSk7 CisJCWd2dF9kYmdfY21kKCJDTURbJS0zMHNdIG9wWyUwNHhdIGZsYWdbJXhdIGRldnNbJTAyeF0g cmluZ3NbJTAyeF0gcmVnaXN0ZXJlZCIsCisJCQkJZS0+aW5mby0+bmFtZSxlLT5pbmZvLT5vcGNv ZGUsIGUtPmluZm8tPmZsYWcsIGUtPmluZm8tPmRldmljZXMsCisJCQkJZS0+aW5mby0+cmluZ3Mp OworCX0KKwlyZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBjbGVhbl9jbWRfdGFibGUoc3RydWN0IHBn dF9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IGhsaXN0X25vZGUgKnRtcDsKKwlzdHJ1Y3QgZ3Z0 X2NtZF9lbnRyeSAqZTsKKwlpbnQgaTsKKworCWhhc2hfZm9yX2VhY2hfc2FmZShwZGV2LT5jbWRf dGFibGUsIGksIHRtcCwgZSwgaGxpc3QpCisJCWtmcmVlKGUpOworCisJaGFzaF9pbml0KHBkZXYt PmNtZF90YWJsZSk7Cit9CisKK3ZvaWQgZ3Z0X2NsZWFuX2NtZF9wYXJzZXIoc3RydWN0IHBndF9k ZXZpY2UgKnBkZXYpCit7CisJY2xlYW5fY21kX3RhYmxlKHBkZXYpOworfQorCitib29sIGd2dF9p bml0X2NtZF9wYXJzZXIoc3RydWN0IHBndF9kZXZpY2UgKnBkZXYpCit7CisJaWYgKCFpbml0X2Nt ZF90YWJsZShwZGV2KSkgeworCQlndnRfY2xlYW5fY21kX3BhcnNlcihwZGV2KTsKKwkJcmV0dXJu IGZhbHNlOworCX0KKwlyZXR1cm4gdHJ1ZTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d2dC9jbWRfcGFyc2VyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvY21kX3Bh cnNlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNGZmMzIKLS0tIC9k ZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvY21kX3BhcnNlci5oCkBAIC0w LDAgKzEsNDY2IEBACisvKgorICogQ29weXJpZ2h0KGMpIDIwMTEtMjAxNiBJbnRlbCBDb3Jwb3Jh dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBn cmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29w eSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRo ZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJp Y3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNl LCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAor ICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJz b25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1Ympl Y3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmln aHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQK KyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFu dGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJ UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT IE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5U SUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhP UlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMg T1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1Qs IFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisgKiBPVVQgT0YgT1IgSU4gQ09OTkVD VElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRI RQorICogU09GVFdBUkUuCisgKi8KKworI2RlZmluZSBWR1RfVU5IQU5ETEVBQkxFIDEKKworI2Rl ZmluZSBJTlZBTElEX09QICAgICh+MFUpCisKKyNkZWZpbmUgTUFYX0JCX1NJWkUJMHgxMDAwMDAw MAorCisjZGVmaW5lIE9QX0xFTl9NSSAgICAgICAgICAgOQorI2RlZmluZSBPUF9MRU5fMkQgICAg ICAgICAgIDEwCisjZGVmaW5lIE9QX0xFTl8zRF9NRURJQSAgICAgMTYKKyNkZWZpbmUgT1BfTEVO X01GWF9WQyAgICAgICAxNgorI2RlZmluZSBPUF9MRU5fVkVCT1gJICAgIDE2CisKKyNkZWZpbmUg Q01EX1RZUEUoY21kKQkoKChjbWQpID4+IDI5KSAmIDcpCisKK3N0cnVjdCBzdWJfb3BfYml0cyB7 CisJaW50IGhpOworCWludCBsb3c7Cit9Oworc3RydWN0IGRlY29kZV9pbmZvIHsKKwljaGFyKiBu YW1lOworCWludCBvcF9sZW47CisJaW50IG5yX3N1Yl9vcDsKKwlzdHJ1Y3Qgc3ViX29wX2JpdHMg KnN1Yl9vcDsKK307CisKKyNkZWZpbmUgICBNQVhfQ01EX0JVREdFVAkJCTB4N2ZmZmZmZmYKKyNk ZWZpbmUgICBNSV9XQUlUX0ZPUl9QTEFORV9DX0ZMSVBfUEVORElORyAgICAgICgxPDwxNSkKKyNk ZWZpbmUgICBNSV9XQUlUX0ZPUl9QTEFORV9CX0ZMSVBfUEVORElORyAgICAgICgxPDw5KQorI2Rl ZmluZSAgIE1JX1dBSVRfRk9SX1BMQU5FX0FfRkxJUF9QRU5ESU5HICAgICAgKDE8PDEpCisKKyNk ZWZpbmUgICBNSV9XQUlUX0ZPUl9TUFJJVEVfQ19GTElQX1BFTkRJTkcgICAgICAoMTw8MjApCisj ZGVmaW5lICAgTUlfV0FJVF9GT1JfU1BSSVRFX0JfRkxJUF9QRU5ESU5HICAgICAgKDE8PDEwKQor I2RlZmluZSAgIE1JX1dBSVRfRk9SX1NQUklURV9BX0ZMSVBfUEVORElORyAgICAgICgxPDwyKQor CisvKiBSZW5kZXIgQ29tbWFuZCBNYXAgKi8KKworLyogTUlfKiBjb21tYW5kIE9wY29kZSAoMjg6 MjMpICovCisjZGVmaW5lIE9QX01JX05PT1AgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MAor I2RlZmluZSBPUF9NSV9TRVRfUFJFRElDQVRFICAgICAgICAgICAgICAgICAweDEgIC8qIEhTVysg Ki8KKyNkZWZpbmUgT1BfTUlfVVNFUl9JTlRFUlJVUFQgICAgICAgICAgICAgICAgMHgyCisjZGVm aW5lIE9QX01JX1dBSVRfRk9SX0VWRU5UICAgICAgICAgICAgICAgIDB4MworI2RlZmluZSBPUF9N SV9GTFVTSCAgICAgICAgICAgICAgICAgICAgICAgICAweDQKKyNkZWZpbmUgT1BfTUlfQVJCX0NI RUNLICAgICAgICAgICAgICAgICAgICAgMHg1CisjZGVmaW5lIE9QX01JX1JTX0NPTlRST0wgICAg ICAgICAgICAgICAgICAgIDB4NiAgLyogSFNXKyAqLworI2RlZmluZSBPUF9NSV9SRVBPUlRfSEVB RCAgICAgICAgICAgICAgICAgICAweDcKKyNkZWZpbmUgT1BfTUlfQVJCX09OX09GRiAgICAgICAg ICAgICAgICAgICAgMHg4CisjZGVmaW5lIE9QX01JX1VSQl9BVE9NSUNfQUxMT0MgICAgICAgICAg ICAgIDB4OSAgLyogSFNXKyAqLworI2RlZmluZSBPUF9NSV9CQVRDSF9CVUZGRVJfRU5EICAgICAg ICAgICAgICAweEEKKyNkZWZpbmUgT1BfTUlfU1VTUEVORF9GTFVTSCAgICAgICAgICAgICAgICAg MHhCCisjZGVmaW5lIE9QX01JX1BSRURJQ0FURSAgICAgICAgICAgICAgICAgICAgIDB4QyAgLyog SVZCKyAqLworI2RlZmluZSBPUF9NSV9UT1BPTE9HWV9GSUxURVIgICAgICAgICAgICAgICAweEQg IC8qIElWQisgKi8KKyNkZWZpbmUgT1BfTUlfU0VUX0FQUElEICAgICAgICAgICAgICAgICAgICAg MHhFICAvKiBJVkIrICovCisjZGVmaW5lIE9QX01JX1JTX0NPTlRFWFQgICAgICAgICAgICAgICAg ICAgIDB4RiAgLyogSFNXKyAqLworI2RlZmluZSBPUF9NSV9MT0FEX1NDQU5fTElORVNfSU5DTCAg ICAgICAgICAweDEyIC8qIEhTVysgKi8KKyNkZWZpbmUgT1BfTUlfRElTUExBWV9GTElQICAgICAg ICAgICAgICAgICAgMHgxNAorI2RlZmluZSBPUF9NSV9TRU1BUEhPUkVfTUJPWCAgICAgICAgICAg ICAgICAweDE2CisjZGVmaW5lIE9QX01JX1NFVF9DT05URVhUICAgICAgICAgICAgICAgICAgIDB4 MTgKKyNkZWZpbmUgT1BfTUlfTUFUSCAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxQQorI2Rl ZmluZSBPUF9NSV9VUkJfQ0xFQVIgICAgICAgICAgICAgICAgICAgICAweDE5CisjZGVmaW5lIE9Q X01JX1NFTUFQSE9SRV9TSUdOQUwJCSAgICAweDFCICAvKiBCRFcrICovCisjZGVmaW5lIE9QX01J X1NFTUFQSE9SRV9XQUlUCQkgICAgMHgxQyAgLyogQkRXKyAqLworCisjZGVmaW5lIE9QX01JX1NU T1JFX0RBVEFfSU1NICAgICAgICAgICAgICAgIDB4MjAKKyNkZWZpbmUgT1BfTUlfU1RPUkVfREFU QV9JTkRFWCAgICAgICAgICAgICAgMHgyMQorI2RlZmluZSBPUF9NSV9MT0FEX1JFR0lTVEVSX0lN TSAgICAgICAgICAgICAweDIyCisjZGVmaW5lIE9QX01JX1VQREFURV9HVFQgICAgICAgICAgICAg ICAgICAgIDB4MjMKKyNkZWZpbmUgT1BfTUlfU1RPUkVfUkVHSVNURVJfTUVNICAgICAgICAgICAg MHgyNAorI2RlZmluZSBPUF9NSV9GTFVTSF9EVyAgICAgICAgICAgICAgICAgICAgICAweDI2Cisj ZGVmaW5lIE9QX01JX0NMRkxVU0ggICAgICAgICAgICAgICAgICAgICAgIDB4MjcKKyNkZWZpbmUg T1BfTUlfUkVQT1JUX1BFUkZfQ09VTlQgICAgICAgICAgICAgMHgyOAorI2RlZmluZSBPUF9NSV9M T0FEX1JFR0lTVEVSX01FTSAgICAgICAgICAgICAweDI5ICAvKiBIU1crICovCisjZGVmaW5lIE9Q X01JX0xPQURfUkVHSVNURVJfUkVHICAgICAgICAgICAgIDB4MkEgIC8qIEhTVysgKi8KKyNkZWZp bmUgT1BfTUlfUlNfU1RPUkVfREFUQV9JTU0gICAgICAgICAgICAgMHgyQiAgLyogSFNXKyAqLwor I2RlZmluZSBPUF9NSV9MT0FEX1VSQl9NRU0gICAgICAgICAgICAgICAgICAweDJDICAvKiBIU1cr ICovCisjZGVmaW5lIE9QX01JX1NUT1JFX1VSTV9NRU0gICAgICAgICAgICAgICAgIDB4MkQgIC8q IEhTVysgKi8KKyNkZWZpbmUgT1BfTUlfMkUJCQkgICAgMHgyRSAgLyogQkRXKyAqLworI2RlZmlu ZSBPUF9NSV8yRgkJCSAgICAweDJGICAvKiBCRFcrICovCisjZGVmaW5lIE9QX01JX0JBVENIX0JV RkZFUl9TVEFSVCAgICAgICAgICAgIDB4MzEKKworLyogQml0IGRlZmluaXRpb24gZm9yIGR3b3Jk IDAgKi8KKyNkZWZpbmUgX0NNREJJVF9CQl9TVEFSVF9JTl9QUEdUVAkoMVVMIDw8IDgpCisKKyNk ZWZpbmUgT1BfTUlfQ09ORElUSU9OQUxfQkFUQ0hfQlVGRkVSX0VORCAgMHgzNgorCisjZGVmaW5l IEJBVENIX0JVRkZFUl9BRERSX01BU0sgKCgxVUwgPDwgMzIpIC0gKDFVIDw8MikpCisjZGVmaW5l IEJBVENIX0JVRkZFUl9BRERSX0hJR0hfTUFTSyAoKDFVTCA8PCAxNikgLSAoMVUpKQorI2RlZmlu ZSBCQVRDSF9CVUZGRVJfQURSX1NQQUNFX0JJVCh4KQkoKCh4KT4+OCkgJiAxVSkKKyNkZWZpbmUg QkFUQ0hfQlVGRkVSXzJORF9MRVZFTF9CSVQoeCkgICAoKHgpPj4yMiAmIDFVKQorCisvKiAyRCBj b21tYW5kOiBPcGNvZGUgKDI4OjIyKSAqLworI2RlZmluZSBPUF8yRCh4KSAgICAoKDI8PDcpIHwg eCkKKworI2RlZmluZSBPUF9YWV9TRVRVUF9CTFQgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE9QXzJEKDB4MSkKKyNkZWZpbmUgT1BfWFlfU0VUVVBfQ0xJUF9CTFQgICAgICAgICAgICAgICAg ICAgICAgICBPUF8yRCgweDMpCisjZGVmaW5lIE9QX1hZX1NFVFVQX01PTk9fUEFUVEVSTl9TTF9C TFQgICAgICAgICAgICAgT1BfMkQoMHgxMSkKKyNkZWZpbmUgT1BfWFlfUElYRUxfQkxUICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPUF8yRCgweDI0KQorI2RlZmluZSBPUF9YWV9TQ0FOTElO RVNfQkxUICAgICAgICAgICAgICAgICAgICAgICAgIE9QXzJEKDB4MjUpCisjZGVmaW5lIE9QX1hZ X1RFWFRfQkxUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BfMkQoMHgyNikKKyNkZWZp bmUgT1BfWFlfVEVYVF9JTU1FRElBVEVfQkxUICAgICAgICAgICAgICAgICAgICBPUF8yRCgweDMx KQorI2RlZmluZSBPUF9YWV9DT0xPUl9CTFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9Q XzJEKDB4NTApCisjZGVmaW5lIE9QX1hZX1BBVF9CTFQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgT1BfMkQoMHg1MSkKKyNkZWZpbmUgT1BfWFlfTU9OT19QQVRfQkxUICAgICAgICAgICAg ICAgICAgICAgICAgICBPUF8yRCgweDUyKQorI2RlZmluZSBPUF9YWV9TUkNfQ09QWV9CTFQgICAg ICAgICAgICAgICAgICAgICAgICAgIE9QXzJEKDB4NTMpCisjZGVmaW5lIE9QX1hZX01PTk9fU1JD X0NPUFlfQkxUICAgICAgICAgICAgICAgICAgICAgT1BfMkQoMHg1NCkKKyNkZWZpbmUgT1BfWFlf RlVMTF9CTFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUF8yRCgweDU1KQorI2RlZmlu ZSBPUF9YWV9GVUxMX01PTk9fU1JDX0JMVCAgICAgICAgICAgICAgICAgICAgIE9QXzJEKDB4NTYp CisjZGVmaW5lIE9QX1hZX0ZVTExfTU9OT19QQVRURVJOX0JMVCAgICAgICAgICAgICAgICAgT1Bf MkQoMHg1NykKKyNkZWZpbmUgT1BfWFlfRlVMTF9NT05PX1BBVFRFUk5fTU9OT19TUkNfQkxUICAg ICAgICBPUF8yRCgweDU4KQorI2RlZmluZSBPUF9YWV9NT05PX1BBVF9GSVhFRF9CTFQgICAgICAg ICAgICAgICAgICAgIE9QXzJEKDB4NTkpCisjZGVmaW5lIE9QX1hZX01PTk9fU1JDX0NPUFlfSU1N RURJQVRFX0JMVCAgICAgICAgICAgT1BfMkQoMHg3MSkKKyNkZWZpbmUgT1BfWFlfUEFUX0JMVF9J TU1FRElBVEUgICAgICAgICAgICAgICAgICAgICBPUF8yRCgweDcyKQorI2RlZmluZSBPUF9YWV9T UkNfQ09QWV9DSFJPTUFfQkxUICAgICAgICAgICAgICAgICAgIE9QXzJEKDB4NzMpCisjZGVmaW5l IE9QX1hZX0ZVTExfSU1NRURJQVRFX1BBVFRFUk5fQkxUICAgICAgICAgICAgT1BfMkQoMHg3NCkK KyNkZWZpbmUgT1BfWFlfRlVMTF9NT05PX1NSQ19JTU1FRElBVEVfUEFUVEVSTl9CTFQgICBPUF8y RCgweDc1KQorI2RlZmluZSBPUF9YWV9QQVRfQ0hST01BX0JMVCAgICAgICAgICAgICAgICAgICAg ICAgIE9QXzJEKDB4NzYpCisjZGVmaW5lIE9QX1hZX1BBVF9DSFJPTUFfQkxUX0lNTUVESUFURSAg ICAgICAgICAgICAgT1BfMkQoMHg3NykKKworLyogM0QvTWVkaWEgQ29tbWFuZDogUGlwZWxpbmUg VHlwZSgyODoyNykgT3Bjb2RlKDI2OjI0KSBTdWIgT3Bjb2RlKDIzOjE2KSAqLworI2RlZmluZSBP UF8zRF9NRURJQShzdWJfdHlwZSwgb3Bjb2RlLCBzdWJfb3Bjb2RlKSBcCisJKCAoMzw8MTMpIHwg KChzdWJfdHlwZSk8PDExKSB8ICgob3Bjb2RlKSA8PDgpIHwgKHN1Yl9vcGNvZGUpKQorCisjZGVm aW5lIE9QX1NUQVRFX1BSRUZFVENIICAgICAgICAgICAgICAgICAgICAgICBPUF8zRF9NRURJQSgw eDAsIDB4MCwgMHgwMykKKworI2RlZmluZSBPUF9TVEFURV9CQVNFX0FERFJFU1MgICAgICAgICAg ICAgICAgICAgT1BfM0RfTUVESUEoMHgwLCAweDEsIDB4MDEpCisjZGVmaW5lIE9QX1NUQVRFX1NJ UCAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUF8zRF9NRURJQSgweDAsIDB4MSwgMHgwMikK KyNkZWZpbmUgT1BfM0RfTUVESUFfMF8xXzQJCQlPUF8zRF9NRURJQSgweDAsIDB4MSwgMHgwNCkK KworI2RlZmluZSBPUF8zRFNUQVRFX1ZGX1NUQVRJU1RJQ1NfR000NSAgICAgICAgICAgT1BfM0Rf TUVESUEoMHgxLCAweDAsIDB4MEIpCisKKyNkZWZpbmUgT1BfUElQRUxJTkVfU0VMRUNUICAgICAg ICAgICAgICAgICAgICAgIE9QXzNEX01FRElBKDB4MSwgMHgxLCAweDA0KQorCisjZGVmaW5lIE9Q X01FRElBX1ZGRV9TVEFURSAgICAgICAgICAgICAgICAgICAgICBPUF8zRF9NRURJQSgweDIsIDB4 MCwgMHgwKQorI2RlZmluZSBPUF9NRURJQV9DVVJCRV9MT0FEICAgICAgICAgICAgICAgICAgICAg T1BfM0RfTUVESUEoMHgyLCAweDAsIDB4MSkKKyNkZWZpbmUgT1BfTUVESUFfSU5URVJGQUNFX0RF U0NSSVBUT1JfTE9BRCAgICAgIE9QXzNEX01FRElBKDB4MiwgMHgwLCAweDIpCisjZGVmaW5lIE9Q X01FRElBX0dBVEVXQVlfU1RBVEUgICAgICAgICAgICAgICAgICBPUF8zRF9NRURJQSgweDIsIDB4 MCwgMHgzKQorI2RlZmluZSBPUF9NRURJQV9TVEFURV9GTFVTSCAgICAgICAgICAgICAgICAgICAg T1BfM0RfTUVESUEoMHgyLCAweDAsIDB4NCkKKworI2RlZmluZSBPUF9NRURJQV9PQkpFQ1QgICAg ICAgICAgICAgICAgICAgICAgICAgT1BfM0RfTUVESUEoMHgyLCAweDEsIDB4MCkKKyNkZWZpbmUg T1BfTUVESUFfT0JKRUNUX1BSVCAgICAgICAgICAgICAgICAgICAgIE9QXzNEX01FRElBKDB4Miwg MHgxLCAweDIpCisjZGVmaW5lIE9QX01FRElBX09CSkVDVF9XQUxLRVIgICAgICAgICAgICAgICAg ICBPUF8zRF9NRURJQSgweDIsIDB4MSwgMHgzKQorI2RlZmluZSBPUF9HUEdQVV9XQUxLRVIgICAg ICAgICAgICAgICAgICAgICAgICAgT1BfM0RfTUVESUEoMHgyLCAweDEsIDB4NSkKKworI2RlZmlu ZSBPUF8zRFNUQVRFX0NMRUFSX1BBUkFNUyAgICAgICAgICAgICAgICAgT1BfM0RfTUVESUEoMHgz LCAweDAsIDB4MDQpIC8qIElWQisgKi8KKyNkZWZpbmUgT1BfM0RTVEFURV9ERVBUSF9CVUZGRVIg ICAgICAgICAgICAgICAgIE9QXzNEX01FRElBKDB4MywgMHgwLCAweDA1KSAvKiBJVkIrICovCisj ZGVmaW5lIE9QXzNEU1RBVEVfU1RFTkNJTF9CVUZGRVIgICAgICAgICAgICAgICBPUF8zRF9NRURJ QSgweDMsIDB4MCwgMHgwNikgLyogSVZCKyAqLworI2RlZmluZSBPUF8zRFNUQVRFX0hJRVJfREVQ VEhfQlVGRkVSICAgICAgICAgICAgT1BfM0RfTUVESUEoMHgzLCAweDAsIDB4MDcpIC8qIElWQisg Ki8KKyNkZWZpbmUgT1BfM0RTVEFURV9WRVJURVhfQlVGRkVSUyAgICAgICAgICAgICAgIE9QXzNE X01FRElBKDB4MywgMHgwLCAweDA4KQorI2RlZmluZSBPUF8zRFNUQVRFX1ZFUlRFWF9FTEVNRU5U UyAgICAgICAgICAgICAgT1BfM0RfTUVESUEoMHgzLCAweDAsIDB4MDkpCisjZGVmaW5lIE9QXzNE U1RBVEVfSU5ERVhfQlVGRkVSICAgICAgICAgICAgICAgICBPUF8zRF9NRURJQSgweDMsIDB4MCwg MHgwQSkKKyNkZWZpbmUgT1BfM0RTVEFURV9WRl9TVEFUSVNUSUNTICAgICAgICAgICAgICAgIE9Q XzNEX01FRElBKDB4MywgMHgwLCAweDBCKQorI2RlZmluZSBPUF8zRFNUQVRFX1ZGICAgICAgICAg ICAgICAgICAgICAgICAgICAgT1BfM0RfTUVESUEoMHgzLCAweDAsIDB4MEMpICAvKiBIU1crICov CisjZGVmaW5lIE9QXzNEU1RBVEVfQ0NfU1RBVEVfUE9JTlRFUlMgICAgICAgICAgICBPUF8zRF9N RURJQSgweDMsIDB4MCwgMHgwRSkKKyNkZWZpbmUgT1BfM0RTVEFURV9TQ0lTU09SX1NUQVRFX1BP SU5URVJTICAgICAgIE9QXzNEX01FRElBKDB4MywgMHgwLCAweDBGKQorI2RlZmluZSBPUF8zRFNU QVRFX1ZTICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BfM0RfTUVESUEoMHgzLCAweDAsIDB4 MTApCisjZGVmaW5lIE9QXzNEU1RBVEVfR1MgICAgICAgICAgICAgICAgICAgICAgICAgICBPUF8z RF9NRURJQSgweDMsIDB4MCwgMHgxMSkKKyNkZWZpbmUgT1BfM0RTVEFURV9DTElQICAgICAgICAg ICAgICAgICAgICAgICAgIE9QXzNEX01FRElBKDB4MywgMHgwLCAweDEyKQorI2RlZmluZSBPUF8z RFNUQVRFX1NGICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BfM0RfTUVESUEoMHgzLCAweDAs IDB4MTMpCisjZGVmaW5lIE9QXzNEU1RBVEVfV00gICAgICAgICAgICAgICAgICAgICAgICAgICBP UF8zRF9NRURJQSgweDMsIDB4MCwgMHgxNCkKKyNkZWZpbmUgT1BfM0RTVEFURV9DT05TVEFOVF9W UyAgICAgICAgICAgICAgICAgIE9QXzNEX01FRElBKDB4MywgMHgwLCAweDE1KQorI2RlZmluZSBP UF8zRFNUQVRFX0NPTlNUQU5UX0dTICAgICAgICAgICAgICAgICAgT1BfM0RfTUVESUEoMHgzLCAw eDAsIDB4MTYpCisjZGVmaW5lIE9QXzNEU1RBVEVfQ09OU1RBTlRfUFMgICAgICAgICAgICAgICAg ICBPUF8zRF9NRURJQSgweDMsIDB4MCwgMHgxNykKKyNkZWZpbmUgT1BfM0RTVEFURV9TQU1QTEVf TUFTSyAgICAgICAgICAgICAgICAgIE9QXzNEX01FRElBKDB4MywgMHgwLCAweDE4KQorI2RlZmlu ZSBPUF8zRFNUQVRFX0NPTlNUQU5UX0hTICAgICAgICAgICAgICAgICAgT1BfM0RfTUVESUEoMHgz LCAweDAsIDB4MTkpIC8qIElWQisgKi8KKyNkZWZpbmUgT1BfM0RTVEFURV9DT05TVEFOVF9EUyAg ICAgICAgICAgICAgICAgIE9QXzNEX01FRElBKDB4MywgMHgwLCAweDFBKSAvKiBJVkIrICovCisj ZGVmaW5lIE9QXzNEU1RBVEVfSFMgICAgICAgICAgICAgICAgICAgICAgICAgICBPUF8zRF9NRURJ QSgweDMsIDB4MCwgMHgxQikgLyogSVZCKyAqLworI2RlZmluZSBPUF8zRFNUQVRFX1RFICAgICAg ICAgICAgICAgICAgICAgICAgICAgT1BfM0RfTUVESUEoMHgzLCAweDAsIDB4MUMpIC8qIElWQisg Ki8KKyNkZWZpbmUgT1BfM0RTVEFURV9EUyAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QXzNE X01FRElBKDB4MywgMHgwLCAweDFEKSAvKiBJVkIrICovCisjZGVmaW5lIE9QXzNEU1RBVEVfU1RS RUFNT1VUICAgICAgICAgICAgICAgICAgICBPUF8zRF9NRURJQSgweDMsIDB4MCwgMHgxRSkgLyog SVZCKyAqLworI2RlZmluZSBPUF8zRFNUQVRFX1NCRSAgICAgICAgICAgICAgICAgICAgICAgICAg T1BfM0RfTUVESUEoMHgzLCAweDAsIDB4MUYpIC8qIElWQisgKi8KKyNkZWZpbmUgT1BfM0RTVEFU RV9QUyAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QXzNEX01FRElBKDB4MywgMHgwLCAweDIw KSAvKiBJVkIrICovCisjZGVmaW5lIE9QXzNEU1RBVEVfVklFV1BPUlRfU1RBVEVfUE9JTlRFUlNf U0ZfQ0xJUCBPUF8zRF9NRURJQSgweDMsIDB4MCwgMHgyMSkgLyogSVZCKyAqLworI2RlZmluZSBP UF8zRFNUQVRFX1ZJRVdQT1JUX1NUQVRFX1BPSU5URVJTX0NDICAgT1BfM0RfTUVESUEoMHgzLCAw eDAsIDB4MjMpIC8qIElWQisgKi8KKyNkZWZpbmUgT1BfM0RTVEFURV9CTEVORF9TVEFURV9QT0lO VEVSUyAgICAgICAgIE9QXzNEX01FRElBKDB4MywgMHgwLCAweDI0KSAvKiBJVkIrICovCisjZGVm aW5lIE9QXzNEU1RBVEVfREVQVEhfU1RFTkNJTF9TVEFURV9QT0lOVEVSUyBPUF8zRF9NRURJQSgw eDMsIDB4MCwgMHgyNSkgLyogSVZCKyAqLworI2RlZmluZSBPUF8zRFNUQVRFX0JJTkRJTkdfVEFC TEVfUE9JTlRFUlNfVlMgICAgT1BfM0RfTUVESUEoMHgzLCAweDAsIDB4MjYpIC8qIElWQisgKi8K KyNkZWZpbmUgT1BfM0RTVEFURV9CSU5ESU5HX1RBQkxFX1BPSU5URVJTX0hTICAgIE9QXzNEX01F RElBKDB4MywgMHgwLCAweDI3KSAvKiBJVkIrICovCisjZGVmaW5lIE9QXzNEU1RBVEVfQklORElO R19UQUJMRV9QT0lOVEVSU19EUyAgICBPUF8zRF9NRURJQSgweDMsIDB4MCwgMHgyOCkgLyogSVZC KyAqLworI2RlZmluZSBPUF8zRFNUQVRFX0JJTkRJTkdfVEFCTEVfUE9JTlRFUlNfR1MgICAgT1Bf M0RfTUVESUEoMHgzLCAweDAsIDB4MjkpIC8qIElWQisgKi8KKyNkZWZpbmUgT1BfM0RTVEFURV9C SU5ESU5HX1RBQkxFX1BPSU5URVJTX1BTICAgIE9QXzNEX01FRElBKDB4MywgMHgwLCAweDJBKSAv KiBJVkIrICovCisjZGVmaW5lIE9QXzNEU1RBVEVfU0FNUExFUl9TVEFURV9QT0lOVEVSU19WUyAg ICBPUF8zRF9NRURJQSgweDMsIDB4MCwgMHgyQikgLyogSVZCKyAqLworI2RlZmluZSBPUF8zRFNU QVRFX1NBTVBMRVJfU1RBVEVfUE9JTlRFUlNfSFMgICAgT1BfM0RfTUVESUEoMHgzLCAweDAsIDB4 MkMpIC8qIElWQisgKi8KKyNkZWZpbmUgT1BfM0RTVEFURV9TQU1QTEVSX1NUQVRFX1BPSU5URVJT X0RTICAgIE9QXzNEX01FRElBKDB4MywgMHgwLCAweDJEKSAvKiBJVkIrICovCisjZGVmaW5lIE9Q XzNEU1RBVEVfU0FNUExFUl9TVEFURV9QT0lOVEVSU19HUyAgICBPUF8zRF9NRURJQSgweDMsIDB4 MCwgMHgyRSkgLyogSVZCKyAqLworI2RlZmluZSBPUF8zRFNUQVRFX1NBTVBMRVJfU1RBVEVfUE9J TlRFUlNfUFMgICAgT1BfM0RfTUVESUEoMHgzLCAweDAsIDB4MkYpIC8qIElWQisgKi8KKyNkZWZp bmUgT1BfM0RTVEFURV9VUkJfVlMgICAgICAgICAgICAgICAgICAgICAgIE9QXzNEX01FRElBKDB4 MywgMHgwLCAweDMwKSAvKiBJVkIrICovCisjZGVmaW5lIE9QXzNEU1RBVEVfVVJCX0hTICAgICAg ICAgICAgICAgICAgICAgICBPUF8zRF9NRURJQSgweDMsIDB4MCwgMHgzMSkgLyogSVZCKyAqLwor I2RlZmluZSBPUF8zRFNUQVRFX1VSQl9EUyAgICAgICAgICAgICAgICAgICAgICAgT1BfM0RfTUVE SUEoMHgzLCAweDAsIDB4MzIpIC8qIElWQisgKi8KKyNkZWZpbmUgT1BfM0RTVEFURV9VUkJfR1Mg ICAgICAgICAgICAgICAgICAgICAgIE9QXzNEX01FRElBKDB4MywgMHgwLCAweDMzKSAvKiBJVkIr ICovCisjZGVmaW5lIE9QXzNEU1RBVEVfR0FUSEVSX0NPTlNUQU5UX1ZTICAgICAgICAgICBPUF8z RF9NRURJQSgweDMsIDB4MCwgMHgzNCkgLyogSFNXKyAqLworI2RlZmluZSBPUF8zRFNUQVRFX0dB VEhFUl9DT05TVEFOVF9HUyAgICAgICAgICAgT1BfM0RfTUVESUEoMHgzLCAweDAsIDB4MzUpIC8q IEhTVysgKi8KKyNkZWZpbmUgT1BfM0RTVEFURV9HQVRIRVJfQ09OU1RBTlRfSFMgICAgICAgICAg IE9QXzNEX01FRElBKDB4MywgMHgwLCAweDM2KSAvKiBIU1crICovCisjZGVmaW5lIE9QXzNEU1RB VEVfR0FUSEVSX0NPTlNUQU5UX0RTICAgICAgICAgICBPUF8zRF9NRURJQSgweDMsIDB4MCwgMHgz NykgLyogSFNXKyAqLworI2RlZmluZSBPUF8zRFNUQVRFX0dBVEhFUl9DT05TVEFOVF9QUyAgICAg ICAgICAgT1BfM0RfTUVESUEoMHgzLCAweDAsIDB4MzgpIC8qIEhTVysgKi8KKyNkZWZpbmUgT1Bf M0RTVEFURV9EWDlfQ09OU1RBTlRGX1ZTICAgICAgICAgICAgIE9QXzNEX01FRElBKDB4MywgMHgw LCAweDM5KSAvKiBIU1crICovCisjZGVmaW5lIE9QXzNEU1RBVEVfRFg5X0NPTlNUQU5URl9QUyAg ICAgICAgICAgICBPUF8zRF9NRURJQSgweDMsIDB4MCwgMHgzQSkgLyogSFNXKyAqLworI2RlZmlu ZSBPUF8zRFNUQVRFX0RYOV9DT05TVEFOVElfVlMgICAgICAgICAgICAgT1BfM0RfTUVESUEoMHgz LCAweDAsIDB4M0IpIC8qIEhTVysgKi8KKyNkZWZpbmUgT1BfM0RTVEFURV9EWDlfQ09OU1RBTlRJ X1BTICAgICAgICAgICAgIE9QXzNEX01FRElBKDB4MywgMHgwLCAweDNDKSAvKiBIU1crICovCisj ZGVmaW5lIE9QXzNEU1RBVEVfRFg5X0NPTlNUQU5UQl9WUyAgICAgICAgICAgICBPUF8zRF9NRURJ QSgweDMsIDB4MCwgMHgzRCkgLyogSFNXKyAqLworI2RlZmluZSBPUF8zRFNUQVRFX0RYOV9DT05T VEFOVEJfUFMgICAgICAgICAgICAgT1BfM0RfTUVESUEoMHgzLCAweDAsIDB4M0UpIC8qIEhTVysg Ki8KKyNkZWZpbmUgT1BfM0RTVEFURV9EWDlfTE9DQUxfVkFMSURfVlMgICAgICAgICAgIE9QXzNE X01FRElBKDB4MywgMHgwLCAweDNGKSAvKiBIU1crICovCisjZGVmaW5lIE9QXzNEU1RBVEVfRFg5 X0xPQ0FMX1ZBTElEX1BTICAgICAgICAgICBPUF8zRF9NRURJQSgweDMsIDB4MCwgMHg0MCkgLyog SFNXKyAqLworI2RlZmluZSBPUF8zRFNUQVRFX0RYOV9HRU5FUkFURV9BQ1RJVkVfVlMgICAgICAg T1BfM0RfTUVESUEoMHgzLCAweDAsIDB4NDEpIC8qIEhTVysgKi8KKyNkZWZpbmUgT1BfM0RTVEFU RV9EWDlfR0VORVJBVEVfQUNUSVZFX1BTICAgICAgIE9QXzNEX01FRElBKDB4MywgMHgwLCAweDQy KSAvKiBIU1crICovCisjZGVmaW5lIE9QXzNEU1RBVEVfQklORElOR19UQUJMRV9FRElUX1ZTICAg ICAgICBPUF8zRF9NRURJQSgweDMsIDB4MCwgMHg0MykgLyogSFNXKyAqLworI2RlZmluZSBPUF8z RFNUQVRFX0JJTkRJTkdfVEFCTEVfRURJVF9HUyAgICAgICAgT1BfM0RfTUVESUEoMHgzLCAweDAs IDB4NDQpIC8qIEhTVysgKi8KKyNkZWZpbmUgT1BfM0RTVEFURV9CSU5ESU5HX1RBQkxFX0VESVRf SFMgICAgICAgIE9QXzNEX01FRElBKDB4MywgMHgwLCAweDQ1KSAvKiBIU1crICovCisjZGVmaW5l IE9QXzNEU1RBVEVfQklORElOR19UQUJMRV9FRElUX0RTICAgICAgICBPUF8zRF9NRURJQSgweDMs IDB4MCwgMHg0NikgLyogSFNXKyAqLworI2RlZmluZSBPUF8zRFNUQVRFX0JJTkRJTkdfVEFCTEVf RURJVF9QUyAgICAgICAgT1BfM0RfTUVESUEoMHgzLCAweDAsIDB4NDcpIC8qIEhTVysgKi8KKwor I2RlZmluZSBPUF8zRFNUQVRFX1ZGX0lOU1RBTkNJTkcgCQlPUF8zRF9NRURJQSgweDMsIDB4MCwg MHg0OSkgLyogQkRXKyAqLworI2RlZmluZSBPUF8zRFNUQVRFX1ZGX1NHVlMgIAkJCU9QXzNEX01F RElBKDB4MywgMHgwLCAweDRBKSAvKiBCRFcrICovCisjZGVmaW5lIE9QXzNEU1RBVEVfVkZfVE9Q T0xPR1kgICAJCU9QXzNEX01FRElBKDB4MywgMHgwLCAweDRCKSAvKiBCRFcrICovCisjZGVmaW5l IE9QXzNEU1RBVEVfV01fQ0hST01BS0VZICAgCQlPUF8zRF9NRURJQSgweDMsIDB4MCwgMHg0Qykg LyogQkRXKyAqLworI2RlZmluZSBPUF8zRFNUQVRFX1BTX0JMRU5EICAgCQkJT1BfM0RfTUVESUEo MHgzLCAweDAsIDB4NEQpIC8qIEJEVysgKi8KKyNkZWZpbmUgT1BfM0RTVEFURV9XTV9ERVBUSF9T VEVOQ0lMICAgCQlPUF8zRF9NRURJQSgweDMsIDB4MCwgMHg0RSkgLyogQkRXKyAqLworI2RlZmlu ZSBPUF8zRFNUQVRFX1BTX0VYVFJBICAgCQkJT1BfM0RfTUVESUEoMHgzLCAweDAsIDB4NEYpIC8q IEJEVysgKi8KKyNkZWZpbmUgT1BfM0RTVEFURV9SQVNURVIgICAJCQlPUF8zRF9NRURJQSgweDMs IDB4MCwgMHg1MCkgLyogQkRXKyAqLworI2RlZmluZSBPUF8zRFNUQVRFX1NCRV9TV0laICAgCQkJ T1BfM0RfTUVESUEoMHgzLCAweDAsIDB4NTEpIC8qIEJEVysgKi8KKyNkZWZpbmUgT1BfM0RTVEFU RV9XTV9IWl9PUCAgIAkJCU9QXzNEX01FRElBKDB4MywgMHgwLCAweDUyKSAvKiBCRFcrICovCisK KyNkZWZpbmUgT1BfM0RTVEFURV9EUkFXSU5HX1JFQ1RBTkdMRSAgICAgICAgICAgIE9QXzNEX01F RElBKDB4MywgMHgxLCAweDAwKQorI2RlZmluZSBPUF8zRFNUQVRFX1NBTVBMRVJfUEFMRVRURV9M T0FEMCAgICAgICAgT1BfM0RfTUVESUEoMHgzLCAweDEsIDB4MDIpCisjZGVmaW5lIE9QXzNEU1RB VEVfQ0hST01BX0tFWSAgICAgICAgICAgICAgICAgICBPUF8zRF9NRURJQSgweDMsIDB4MSwgMHgw NCkKKyNkZWZpbmUgT1BfU05CXzNEU1RBVEVfREVQVEhfQlVGRkVSICAgICAgICAgICAgIE9QXzNE X01FRElBKDB4MywgMHgxLCAweDA1KQorI2RlZmluZSBPUF8zRFNUQVRFX1BPTFlfU1RJUFBMRV9P RkZTRVQgICAgICAgICAgT1BfM0RfTUVESUEoMHgzLCAweDEsIDB4MDYpCisjZGVmaW5lIE9QXzNE U1RBVEVfUE9MWV9TVElQUExFX1BBVFRFUk4gICAgICAgICBPUF8zRF9NRURJQSgweDMsIDB4MSwg MHgwNykKKyNkZWZpbmUgT1BfM0RTVEFURV9MSU5FX1NUSVBQTEUgICAgICAgICAgICAgICAgIE9Q XzNEX01FRElBKDB4MywgMHgxLCAweDA4KQorI2RlZmluZSBPUF8zRFNUQVRFX0FBX0xJTkVfUEFS QU1TICAgICAgICAgICAgICAgT1BfM0RfTUVESUEoMHgzLCAweDEsIDB4MEEpCisjZGVmaW5lIE9Q XzNEU1RBVEVfR1NfU1ZCX0lOREVYICAgICAgICAgICAgICAgICBPUF8zRF9NRURJQSgweDMsIDB4 MSwgMHgwQikKKyNkZWZpbmUgT1BfM0RTVEFURV9TQU1QTEVSX1BBTEVUVEVfTE9BRDEgICAgICAg IE9QXzNEX01FRElBKDB4MywgMHgxLCAweDBDKQorI2RlZmluZSBPUF8zRFNUQVRFX01VTFRJU0FN UExFX0JEVwkJT1BfM0RfTUVESUEoMHgzLCAweDAsIDB4MEQpCisjZGVmaW5lIE9QX1NOQl8zRFNU QVRFX1NURU5DSUxfQlVGRkVSICAgICAgICAgICBPUF8zRF9NRURJQSgweDMsIDB4MSwgMHgwRSkK KyNkZWZpbmUgT1BfU05CXzNEU1RBVEVfSElFUl9ERVBUSF9CVUZGRVIgICAgICAgIE9QXzNEX01F RElBKDB4MywgMHgxLCAweDBGKQorI2RlZmluZSBPUF9TTkJfM0RTVEFURV9DTEVBUl9QQVJBTVMg ICAgICAgICAgICAgT1BfM0RfTUVESUEoMHgzLCAweDEsIDB4MTApCisjZGVmaW5lIE9QXzNEU1RB VEVfTU9OT0ZJTFRFUl9TSVpFICAgICAgICAgICAgICBPUF8zRF9NRURJQSgweDMsIDB4MSwgMHgx MSkKKyNkZWZpbmUgT1BfM0RTVEFURV9QVVNIX0NPTlNUQU5UX0FMTE9DX1ZTICAgICAgIE9QXzNE X01FRElBKDB4MywgMHgxLCAweDEyKSAvKiBJVkIrICovCisjZGVmaW5lIE9QXzNEU1RBVEVfUFVT SF9DT05TVEFOVF9BTExPQ19IUyAgICAgICBPUF8zRF9NRURJQSgweDMsIDB4MSwgMHgxMykgLyog SVZCKyAqLworI2RlZmluZSBPUF8zRFNUQVRFX1BVU0hfQ09OU1RBTlRfQUxMT0NfRFMgICAgICAg T1BfM0RfTUVESUEoMHgzLCAweDEsIDB4MTQpIC8qIElWQisgKi8KKyNkZWZpbmUgT1BfM0RTVEFU RV9QVVNIX0NPTlNUQU5UX0FMTE9DX0dTICAgICAgIE9QXzNEX01FRElBKDB4MywgMHgxLCAweDE1 KSAvKiBJVkIrICovCisjZGVmaW5lIE9QXzNEU1RBVEVfUFVTSF9DT05TVEFOVF9BTExPQ19QUyAg ICAgICBPUF8zRF9NRURJQSgweDMsIDB4MSwgMHgxNikgLyogSVZCKyAqLworI2RlZmluZSBPUF8z RFNUQVRFX1NPX0RFQ0xfTElTVCAgICAgICAgICAgICAgICAgT1BfM0RfTUVESUEoMHgzLCAweDEs IDB4MTcpCisjZGVmaW5lIE9QXzNEU1RBVEVfU09fQlVGRkVSICAgICAgICAgICAgICAgICAgICBP UF8zRF9NRURJQSgweDMsIDB4MSwgMHgxOCkKKyNkZWZpbmUgT1BfM0RTVEFURV9CSU5ESU5HX1RB QkxFX1BPT0xfQUxMT0MgICAgIE9QXzNEX01FRElBKDB4MywgMHgxLCAweDE5KSAvKiBIU1crICov CisjZGVmaW5lIE9QXzNEU1RBVEVfR0FUSEVSX1BPT0xfQUxMT0MgICAgICAgICAgICBPUF8zRF9N RURJQSgweDMsIDB4MSwgMHgxQSkgLyogSFNXKyAqLworI2RlZmluZSBPUF8zRFNUQVRFX0RYOV9D T05TVEFOVF9CVUZGRVJfUE9PTF9BTExPQyBPUF8zRF9NRURJQSgweDMsIDB4MSwgMHgxQikgLyog SFNXKyAqLworI2RlZmluZSBPUF8zRFNUQVRFX1NBTVBMRV9QQVRURVJOICAgICAgICAgICAgICAg T1BfM0RfTUVESUEoMHgzLCAweDEsIDB4MUMpCisjZGVmaW5lIE9QX1BJUEVfQ09OVFJPTCAgICAg ICAgICAgICAgICAgICAgICAgICBPUF8zRF9NRURJQSgweDMsIDB4MiwgMHgwMCkKKyNkZWZpbmUg T1BfM0RQUklNSVRJVkUgICAgICAgICAgICAgICAgICAgICAgICAgIE9QXzNEX01FRElBKDB4Mywg MHgzLCAweDAwKQorCisvKiBWQ0NQIENvbW1hbmQgUGFyc2VyICovCisKKy8qCisgKiBCZWxvdyBN RlggYW5kIFZCRSBjbWQgZGVmaW5pdGlvbiBpcyBmcm9tIHZhYXBpIGludGVsIGRyaXZlciBwcm9q ZWN0IChCU0QgTGljZW5zZSkKKyAqIGdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL3ZhYXBp L2ludGVsLWRyaXZlcgorICogc3JjL2k5NjVfZGVmaW5lcy5oCisgKgorICovCisKKyNkZWZpbmUg T1BfTUZYKHBpcGVsaW5lLCBvcCwgc3ViX29wYSwgc3ViX29wYikgICAgIFwKKyAgICAgKDMgPDwg MTMgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIChwaXBlbGluZSkg PDwgMTEgfCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIChvcCkgPDwgOCB8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKHN1Yl9vcGEpIDw8IDUgfCAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgICAoc3ViX29wYikpCisKKyNkZWZpbmUgT1BfTUZYX1BJ UEVfTU9ERV9TRUxFQ1QgICAgICAgICAgICAgICAgICAgIE9QX01GWCgyLCAwLCAwLCAwKSAgLyog QUxMICovCisjZGVmaW5lIE9QX01GWF9TVVJGQUNFX1NUQVRFICAgICAgICAgICAgICAgICAgICAg ICBPUF9NRlgoMiwgMCwgMCwgMSkgIC8qIEFMTCAqLworI2RlZmluZSBPUF9NRlhfUElQRV9CVUZf QUREUl9TVEFURSAgICAgICAgICAgICAgICAgT1BfTUZYKDIsIDAsIDAsIDIpICAvKiBBTEwgKi8K KyNkZWZpbmUgT1BfTUZYX0lORF9PQkpfQkFTRV9BRERSX1NUQVRFICAgICAgICAgICAgIE9QX01G WCgyLCAwLCAwLCAzKSAgLyogQUxMICovCisjZGVmaW5lIE9QX01GWF9CU1BfQlVGX0JBU0VfQURE Ul9TVEFURSAgICAgICAgICAgICBPUF9NRlgoMiwgMCwgMCwgNCkgIC8qIEFMTCAqLworI2RlZmlu ZSBPUF8yXzBfMF81ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BfTUZYKDIsIDAs IDAsIDUpICAvKiBBTEwgKi8KKyNkZWZpbmUgT1BfTUZYX1NUQVRFX1BPSU5URVIgICAgICAgICAg ICAgICAgICAgICAgIE9QX01GWCgyLCAwLCAwLCA2KSAgLyogQUxMICovCisjZGVmaW5lIE9QX01G WF9RTV9TVEFURSAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUF9NRlgoMiwgMCwgMCwgNykg IC8qIElWQisgKi8KKyNkZWZpbmUgT1BfTUZYX0ZRTV9TVEFURSAgICAgICAgICAgICAgICAgICAg ICAgICAgIE9QX01GWCgyLCAwLCAwLCA4KSAgLyogSVZCKyAqLworI2RlZmluZSBPUF9NRlhfUEFL X0lOU0VSVF9PQkpFQ1QgICAgICAgICAgICAgICAgICAgT1BfTUZYKDIsIDAsIDIsIDgpICAvKiBJ VkIrICovCisjZGVmaW5lIE9QX01GWF9TVElUQ0hfT0JKRUNUICAgICAgICAgICAgICAgICAgICAg ICBPUF9NRlgoMiwgMCwgMiwgMHhBKSAgLyogSVZCKyAqLworCisjZGVmaW5lIE9QX01GRF9JVF9P QkpFQ1QgICAgICAgICAgICAgICAgICAgICAgICAgICBPUF9NRlgoMiwgMCwgMSwgOSkgLyogQUxM ICovCisKKyNkZWZpbmUgT1BfTUZYX1dBSVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE9QX01GWCgxLCAwLCAwLCAwKSAvKiBJVkIrICovCisjZGVmaW5lIE9QX01GWF9BVkNfSU1HX1NU QVRFICAgICAgICAgICAgICAgICAgICAgICBPUF9NRlgoMiwgMSwgMCwgMCkgLyogQUxMICovCisj ZGVmaW5lIE9QX01GWF9BVkNfUU1fU1RBVEUgICAgICAgICAgICAgICAgICAgICAgICBPUF9NRlgo MiwgMSwgMCwgMSkgLyogQUxMICovCisjZGVmaW5lIE9QX01GWF9BVkNfRElSRUNUTU9ERV9TVEFU RSAgICAgICAgICAgICAgICBPUF9NRlgoMiwgMSwgMCwgMikgLyogQUxMICovCisjZGVmaW5lIE9Q X01GWF9BVkNfU0xJQ0VfU1RBVEUgICAgICAgICAgICAgICAgICAgICBPUF9NRlgoMiwgMSwgMCwg MykgLyogQUxMICovCisjZGVmaW5lIE9QX01GWF9BVkNfUkVGX0lEWF9TVEFURSAgICAgICAgICAg ICAgICAgICBPUF9NRlgoMiwgMSwgMCwgNCkgLyogQUxMICovCisjZGVmaW5lIE9QX01GWF9BVkNf V0VJR0hUT0ZGU0VUX1NUQVRFICAgICAgICAgICAgICBPUF9NRlgoMiwgMSwgMCwgNSkgLyogQUxM ICovCisjZGVmaW5lIE9QX01GRF9BVkNfUElDSURfU1RBVEUgICAgICAgICAgICAgICAgICAgICBP UF9NRlgoMiwgMSwgMSwgNSkgLyogSFNXKyAqLworI2RlZmluZSBPUF9NRkRfQVZDX0RQQl9TVEFU RQkJCSAgIE9QX01GWCgyLCAxLCAxLCA2KSAvKiBJVkIrICovCisjZGVmaW5lIE9QX01GRF9BVkNf U0xJQ0VBRERSICAgICAgICAgICAgICAgICAgICAgICBPUF9NRlgoMiwgMSwgMSwgNykgLyogSVZC KyAqLworI2RlZmluZSBPUF9NRkRfQVZDX0JTRF9PQkpFQ1QgICAgICAgICAgICAgICAgICAgICAg T1BfTUZYKDIsIDEsIDEsIDgpIC8qIEFMTCAqLworI2RlZmluZSBPUF9NRkNfQVZDX1BBS19PQkpF Q1QgICAgICAgICAgICAgICAgICAgICAgT1BfTUZYKDIsIDEsIDIsIDkpIC8qIEFMTCAqLworCisj ZGVmaW5lIE9QX01GWF9WQzFfUFJFRF9QSVBFX1NUQVRFICAgICAgICAgICAgICAgICBPUF9NRlgo MiwgMiwgMCwgMSkgLyogQUxMICovCisjZGVmaW5lIE9QX01GWF9WQzFfRElSRUNUTU9ERV9TVEFU RSAgICAgICAgICAgICAgICBPUF9NRlgoMiwgMiwgMCwgMikgLyogQUxMICovCisjZGVmaW5lIE9Q X01GRF9WQzFfU0hPUlRfUElDX1NUQVRFICAgICAgICAgICAgICAgICBPUF9NRlgoMiwgMiwgMSwg MCkgLyogSVZCKyAqLworI2RlZmluZSBPUF9NRkRfVkMxX0xPTkdfUElDX1NUQVRFICAgICAgICAg ICAgICAgICAgT1BfTUZYKDIsIDIsIDEsIDEpIC8qIElWQisgKi8KKyNkZWZpbmUgT1BfTUZEX1ZD MV9CU0RfT0JKRUNUICAgICAgICAgICAgICAgICAgICAgIE9QX01GWCgyLCAyLCAxLCA4KSAvKiBB TEwgKi8KKworI2RlZmluZSBPUF9NRlhfTVBFRzJfUElDX1NUQVRFICAgICAgICAgICAgICAgICAg ICAgT1BfTUZYKDIsIDMsIDAsIDApIC8qIEFMTCAqLworI2RlZmluZSBPUF9NRlhfTVBFRzJfUU1f U1RBVEUgICAgICAgICAgICAgICAgICAgICAgT1BfTUZYKDIsIDMsIDAsIDEpIC8qIEFMTCAqLwor I2RlZmluZSBPUF9NRkRfTVBFRzJfQlNEX09CSkVDVCAgICAgICAgICAgICAgICAgICAgT1BfTUZY KDIsIDMsIDEsIDgpIC8qIEFMTCAqLworI2RlZmluZSBPUF9NRkNfTVBFRzJfU0xJQ0VHUk9VUF9T VEFURSAgICAgICAgICAgICAgT1BfTUZYKDIsIDMsIDIsIDMpIC8qIEFMTCAqLworI2RlZmluZSBP UF9NRkNfTVBFRzJfUEFLX09CSkVDVCAgICAgICAgICAgICAgICAgICAgT1BfTUZYKDIsIDMsIDIs IDkpIC8qIEFMTCAqLworCisjZGVmaW5lIE9QX01GWF8yXzZfMF8wICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPUF9NRlgoMiwgNiwgMCwgMCkgLyogSVZCKyAqLworI2RlZmluZSBPUF9NRlhf Ml82XzBfOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BfTUZYKDIsIDYsIDAsIDgpIC8q IElWQisgKi8KKyNkZWZpbmUgT1BfTUZYXzJfNl8wXzkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE9QX01GWCgyLCA2LCAwLCA5KSAvKiBJVkIrICovCisKKyNkZWZpbmUgT1BfTUZYX0pQRUdf UElDX1NUQVRFICAgICAgICAgICAgICAgICAgICAgIE9QX01GWCgyLCA3LCAwLCAwKQorI2RlZmlu ZSBPUF9NRlhfSlBFR19IVUZGX1RBQkxFX1NUQVRFICAgICAgICAgICAgICAgT1BfTUZYKDIsIDcs IDAsIDIpCisjZGVmaW5lIE9QX01GRF9KUEVHX0JTRF9PQkpFQ1QgICAgICAgICAgICAgICAgICAg ICBPUF9NRlgoMiwgNywgMSwgOCkKKworLyogY29weSBmcm9tIHZhYXBpLCBidXQgbm90IGZvdW5k IGRlZmluaXRpb24gaW4gUFJNIHlldCAqLworI2RlZmluZSBPUF9WRUIocGlwZWxpbmUsIG9wLCBz dWJfb3BhLCBzdWJfb3BiKSAgICAgXAorICAgICAoMyA8PCAxMyB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAorICAgICAocGlwZWxpbmUpIDw8IDExIHwgICAgICAgICAgICAgICAg ICAgICAgICAgXAorICAgICAob3ApIDw8IDggfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCisgICAgIChzdWJfb3BhKSA8PCA1IHwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg ICAgKHN1Yl9vcGIpKQorCisjZGVmaW5lIE9QX1ZFQl9TVVJGQUNFX1NUQVRFICAgICAgICAgICAg ICAgICAgICAgICBPUF9WRUIoMiwgNCwgMCwgMCkKKyNkZWZpbmUgT1BfVkVCX1NUQVRFICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE9QX1ZFQigyLCA0LCAwLCAyKQorI2RlZmluZSBPUF9W RUJfRE5ESV9JRUNQX1NUQVRFICAgICAgICAgICAgICAgICAgICAgT1BfVkVCKDIsIDQsIDAsIDMp CisKK3N0cnVjdCBwYXJzZXJfZXhlY19zdGF0ZTsKKwordHlwZWRlZiBpbnQgKCpwYXJzZXJfY21k X2hhbmRsZXIpKHN0cnVjdCBwYXJzZXJfZXhlY19zdGF0ZSAqcyk7CisKKyNkZWZpbmUgR1ZUX0NN RF9IQVNIX0JJVFMgICA3CisKKy8qIHdoaWNoIERXb3JkcyBuZWVkIGFkZHJlc3MgZml4ICovCisj ZGVmaW5lIEFERFJfRklYXzEoeDEpICAgICAgICAgICAgICAgICAgKDE8PCh4MSkpCisjZGVmaW5l IEFERFJfRklYXzIoeDEseDIpICAgICAgICAgICAgICAgKEFERFJfRklYXzEoeDEpIHwgQUREUl9G SVhfMSh4MikpCisjZGVmaW5lIEFERFJfRklYXzMoeDEseDIseDMpICAgICAgICAgICAgKEFERFJf RklYXzEoeDEpIHwgQUREUl9GSVhfMih4Mix4MykpCisjZGVmaW5lIEFERFJfRklYXzQoeDEseDIs eDMseDQpICAgICAgICAgKEFERFJfRklYXzEoeDEpIHwgQUREUl9GSVhfMyh4Mix4Myx4NCkpCisj ZGVmaW5lIEFERFJfRklYXzUoeDEseDIseDMseDQseDUpICAgICAgKEFERFJfRklYXzEoeDEpIHwg QUREUl9GSVhfNCh4Mix4Myx4NCx4NSkpCisKK3N0cnVjdCBjbWRfaW5mb3sKKwljaGFyKiBuYW1l OworCXUzMiBvcGNvZGU7CisKKyNkZWZpbmUgRl9MRU5fTUFTSwkoMVU8PDApCisjZGVmaW5lIEZf TEVOX0NPTlNUICAxVQorI2RlZmluZSBGX0xFTl9WQVIgICAgMFUKKworLyogY29tbWFuZCBoYXMg aXRzIG93biBpcCBhZHZhbmNlIGxvZ2ljCisgICBlLmcuIE1JX0JBVENIX1NUQVJULCBNSV9CQVRD SF9FTkQKKyovCisjZGVmaW5lIEZfSVBfQURWQU5DRV9DVVNUT00gKDE8PDEpCisKKyNkZWZpbmUg Rl9QT1NUX0hBTkRMRQkoMTw8MikKKwl1MzIgZmxhZzsKKworI2RlZmluZSBSX1JDUwkoMSA8PCBS Q1MgKQorI2RlZmluZSBSX1ZDUzEgICgxIDw8IFZDUykKKyNkZWZpbmUgUl9WQ1MyICAoMSA8PCBW Q1MyKQorI2RlZmluZSBSX1ZDUwkoIFJfVkNTMSB8IFJfVkNTMikKKyNkZWZpbmUgUl9CQ1MJKDEg PDwgQkNTICkKKyNkZWZpbmUgUl9WRUNTCSgxIDw8IFZFQ1MgKQorI2RlZmluZSBSX0FMTCAoUl9S Q1MgfCBSX1ZDUyB8IFJfQkNTIHwgUl9WRUNTKQorCS8qIHJpbmdzIHRoYXQgc3VwcG9ydCB0aGlz IGNtZDogQkxUL1JDUy9WQ1MvVkVDUyAqLworCXVpbnQxNl90IHJpbmdzOworCisJLyogZGV2aWNl cyB0aGF0IHN1cHBvcnQgdGhpcyBjbWQ6IFNOQi9JVkIvSFNXLy4uLiAqLworCXVpbnQxNl90IGRl dmljZXM7CisKKwkvKiB3aGljaCBEV29yZHMgYXJlIGFkZHJlc3MgdGhhdCBuZWVkIGZpeCB1cC4K KwkgKiBiaXQgMCBtZWFucyBhIDMyLWJpdCBub24gYWRkcmVzcyBvcGVyYW5kIGluIGNvbW1hbmQK KwkgKiBiaXQgMSBtZWFucyBhZGRyZXNzIG9wZXJhbmQsIHdoaWNoIGNvdWxkIGJlIDMyLWJpdAor CSAqIG9yIDY0LWJpdCBkZXBlbmRpbmcgb24gZGlmZmVyZW50IGFyY2hpdGVjdHVyZXMuKAorCSAq IGRlZmluZWQgYnkgImdtYWRyX2J5dGVzX2luX2NtZCIgaW4gcGd0X2RldmljZS4KKwkgKiBObyBt YXR0ZXIgdGhlIGFkZHJlc3MgbGVuZ3RoLCBlYWNoIGFkZHJlc3Mgb25seSB0YWtlcworCSAqIG9u ZSBiaXQgaW4gdGhlIGJpdG1hcC4KKwkgKi8KKwl1aW50MTZfdCBhZGRyX2JpdG1hcDsKKworCS8q CWZsYWcgPT0gRl9MRU5fQ09OU1QgOiBjb21tYW5kIGxlbmd0aAorCQlmbGFnID09IEZfTEVOX1ZB UiA6IGxlbmdodCBiaWFzIGJpdHMKKwkJTm90ZTogbGVuZ3RoIGlzIGluIERXb3JkCisJICovCisJ dWludDhfdAlsZW47CisKKwlwYXJzZXJfY21kX2hhbmRsZXIgaGFuZGxlcjsKK307CisKK3N0cnVj dCBndnRfY21kX2VudHJ5IHsKKwlzdHJ1Y3QgaGxpc3Rfbm9kZSBobGlzdDsKKwlzdHJ1Y3QgY21k X2luZm8qIGluZm87Cit9OworCit0eXBlZGVmIGVudW0geworCVJJTkdfQlVGRkVSX0lOU1RSVUNU SU9OLAorCUJBVENIX0JVRkZFUl9JTlNUUlVDVElPTiwKKwlCQVRDSF9CVUZGRVJfMk5EX0xFVkVM LAorfWNtZF9idWZfdDsKKwordHlwZWRlZiBlbnVteworCUdUVF9CVUZGRVIsCisJUFBHVFRfQlVG RkVSCit9Z3R0X2FkZHJfdDsKKworc3RydWN0IHBhcnNlcl9leGVjX3N0YXRlIHsKKwlzdHJ1Y3Qg dmd0X2RldmljZSAqdmd0OworCWludCByaW5nX2lkOworCisJY21kX2J1Zl90IGJ1Zl90eXBlOwor CisJLyogYmF0Y2ggYnVmZmVyIGFkZHJlc3MgdHlwZSAqLworCWd0dF9hZGRyX3QgYnVmX2FkZHJf dHlwZTsKKworCS8qIGdyYXBoaWNzIG1lbW9yeSBhZGRyZXNzIG9mIHJpbmcgYnVmZmVyIHN0YXJ0 ICovCisJdW5zaWduZWQgbG9uZyByaW5nX3N0YXJ0OworCXVuc2lnbmVkIGxvbmcgcmluZ19zaXpl OworCXVuc2lnbmVkIGxvbmcgcmluZ19oZWFkOworCXVuc2lnbmVkIGxvbmcgcmluZ190YWlsOwor CisJLyogaW5zdHJ1Y3Rpb24gZ3JhcGhpY3MgbWVtb3J5IGFkZHJlc3MgKi8KKwl1bnNpZ25lZCBs b25nIGlwX2dtYTsKKworCS8qIG1hcHBlZCB2YSBvZiB0aGUgaW5zdHJfZ21hICovCisJdm9pZCAq aXBfdmE7CisJdm9pZCAqcmJfdmE7CisKKwkvKiBuZXh0IGluc3RydWN0aW9uIHdoZW4gcmV0dXJu IGZyb20gIGJhdGNoIGJ1ZmZlciB0byByaW5nIGJ1ZmZlciAqLworCXVuc2lnbmVkIGxvbmcgcmV0 X2lwX2dtYV9yaW5nOworCisJLyogbmV4dCBpbnN0cnVjdGlvbiB3aGVuIHJldHVybiBmcm9tIDJu ZCBiYXRjaCBidWZmZXIgdG8gYmF0Y2ggYnVmZmVyICovCisJdW5zaWduZWQgbG9uZyByZXRfaXBf Z21hX2JiOworCisJLyogYmF0Y2ggYnVmZmVyIGFkZHJlc3MgdHlwZSAoR1RUIG9yIFBQR1RUKQor CSAgIHVzZWQgd2hlbiByZXQgZnJvbSAybmQgbGV2ZWwgYmF0Y2ggYnVmZmVyICovCisJZ3R0X2Fk ZHJfdCBzYXZlZF9idWZfYWRkcl90eXBlOworCisJc3RydWN0IGNtZF9pbmZvKiBpbmZvOworCisJ c3RydWN0IGd2dF93b3JrbG9hZCAqd29ya2xvYWQ7Cit9OworCit2b2lkIGd2dF9jbGVhbl9jbWRf cGFyc2VyKHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2KTsKKworYm9vbCBndnRfaW5pdF9jbWRfcGFy c2VyKHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2KTsKKworYm9vbCBndnRfc2Nhbl9hbmRfc2hhZG93 X3dvcmtsb2FkKHN0cnVjdCBndnRfd29ya2xvYWQgKndvcmtsb2FkKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9kZWJ1Zy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0 L2RlYnVnLmgKaW5kZXggOTUzYmEwOC4uNzM3OWJjZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L2RlYnVnLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2RlYnVn LmgKQEAgLTc2LDYgKzc2LDcgQEAgZW51bSB7CiAJR1ZUX0RCR19FRElEID0gKDEgPDwgNSksCiAJ R1ZUX0RCR19FTCA9ICgxIDw8IDYpLAogCUdWVF9EQkdfU0NIRUQgPSAoMSA8PCA3KSwKKwlHVlRf REJHX0NNRCA9ICgxIDw8IDgpLAogfTsKIAogI2RlZmluZSBndnRfZGJnX2NvcmUoZm10LCBhcmdz Li4uKSBcCkBAIC05Niw0ICs5Nyw3IEBAIGVudW0gewogI2RlZmluZSBndnRfZGJnX3NjaGVkKGZt dCwgYXJncy4uLikgXAogCWd2dF9kYmcoR1ZUX0RCR19TQ0hFRCwgZm10LCAjI2FyZ3MpCiAKKyNk ZWZpbmUgZ3Z0X2RiZ19jbWQoZm10LCBhcmdzLi4uKSBcCisJZ3Z0X2RiZyhHVlRfREJHX0NNRCwg Zm10LCAjI2FyZ3MpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Z0L2d2dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5jCmluZGV4IDhiNTZjMDAu LjNjY2E0NmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmMKQEAgLTI4Myw2ICsyODMsNyBAQCBzdGF0 aWMgYm9vbCBpbml0X3NlcnZpY2VfdGhyZWFkKHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2KQogc3Rh dGljIHZvaWQgY2xlYW5fcGd0X2RldmljZShzdHJ1Y3QgcGd0X2RldmljZSAqcGRldikKIHsKIAlj bGVhbl9zZXJ2aWNlX3RocmVhZChwZGV2KTsKKwlndnRfY2xlYW5fY21kX3BhcnNlcihwZGV2KTsK IAlndnRfY2xlYW5fd29ya2xvYWRfc2NoZWR1bGVyKHBkZXYpOwogCWd2dF9jbGVhbl9jb250cm9s X2ludGVyZmFjZShwZGV2KTsKIAlndnRfY2xlYW5fZ3R0KHBkZXYpOwpAQCAtMzIwLDYgKzMyMSw5 IEBAIHN0YXRpYyBib29sIGluaXRfcGd0X2RldmljZShzdHJ1Y3QgcGd0X2RldmljZSAqcGRldiwg c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRlCiAJaWYgKCFndnRfc2V0dXBfY29udHJvbF9pbnRl cmZhY2UocGRldikpCiAJCWdvdG8gZXJyOwogCisJaWYgKCFndnRfaW5pdF9jbWRfcGFyc2VyKHBk ZXYpKQorCQlnb3RvIGVycjsKKwogCWlmICghaW5pdF9zZXJ2aWNlX3RocmVhZChwZGV2KSkKIAkJ Z290byBlcnI7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaAppbmRleCBkN2ZmNjFlLi4xNmJmZGNhIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmgKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Z0L2d2dC5oCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAic2NoZWR1 bGVyLmgiCiAjaW5jbHVkZSAic2NoZWRfcG9saWN5LmgiCiAjaW5jbHVkZSAicmVuZGVyLmgiCisj aW5jbHVkZSAiY21kX3BhcnNlci5oIgogCiAjZGVmaW5lIEdWVF9NQVhfVkdQVSA4CiAKQEAgLTIy OCw2ICsyMjksOCBAQCBzdHJ1Y3QgcGd0X2RldmljZSB7CiAJc3RydWN0IGd2dF9kZXZpY2VfY29u dHJvbCBjb250cm9sOwogCiAJc3RydWN0IGd2dF93b3JrbG9hZF9zY2hlZHVsZXIgd29ya2xvYWRf c2NoZWR1bGVyOworCisJREVDTEFSRV9IQVNIVEFCTEUoY21kX3RhYmxlLCBHVlRfQ01EX0hBU0hf QklUUyk7CiB9OwogCiAvKiByZXF1ZXN0IHR5cGVzIHRvIHdha2UgdXAgbWFpbiB0aHJlYWQgKi8K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9pbnRlcnJ1cHQuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d2dC9pbnRlcnJ1cHQuYwppbmRleCBkMGNjMWE2Li44NDAwMjU4IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvaW50ZXJydXB0LmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2ludGVycnVwdC5jCkBAIC0xMjQsNiArMTI0LDU1IEBAIGNo YXIgKmd2dF9pcnFfbmFtZVtHVlRfRVZFTlRfTUFYXSA9IHsKIAlbR1ZUX0VWRU5UX1JFU0VSVkVE XSA9ICJSRVNFUlZFRCBFVkVOVFMhISEiLAogfTsKIAorc3RydWN0IHJpbmdfaWRfdG9fY21kX2lu dGVycnVwdF9ldmVudCB7CisJaW50IHBpcGVfY29udHJvbF9ub3RpZnk7CisJaW50IG1pX2ZsdXNo X2R3OworCWludCBtaV91c2VyX2ludGVycnVwdDsKK307CisKK3N0cnVjdCByaW5nX2lkX3RvX2Nt ZF9pbnRlcnJ1cHRfZXZlbnQgcmluZ19pZF90b19jbWRfaW50ZXJydXB0X2V2ZW50W10gPSB7CisJ W1JDU10gPSB7CisJCS5waXBlX2NvbnRyb2xfbm90aWZ5ID0gUkNTX1BJUEVfQ09OVFJPTCwKKwkJ Lm1pX2ZsdXNoX2R3ID0gR1ZUX0VWRU5UX1JFU0VSVkVELAorCQkubWlfdXNlcl9pbnRlcnJ1cHQg PSBSQ1NfTUlfVVNFUl9JTlRFUlJVUFQsCisJfSwKKwlbQkNTXSA9IHsKKwkJLnBpcGVfY29udHJv bF9ub3RpZnkgPSBHVlRfRVZFTlRfUkVTRVJWRUQsCisJCS5taV9mbHVzaF9kdyA9IEJDU19NSV9G TFVTSF9EVywKKwkJLm1pX3VzZXJfaW50ZXJydXB0ID0gQkNTX01JX1VTRVJfSU5URVJSVVBULAor CX0sCisJW1ZDU10gPSB7CisJCS5waXBlX2NvbnRyb2xfbm90aWZ5ID0gR1ZUX0VWRU5UX1JFU0VS VkVELAorCQkubWlfZmx1c2hfZHcgPSBWQ1NfTUlfRkxVU0hfRFcsCisJCS5taV91c2VyX2ludGVy cnVwdCA9IFZDU19NSV9VU0VSX0lOVEVSUlVQVCwKKwl9LAorCVtWQ1MyXSA9IHsKKwkJLnBpcGVf Y29udHJvbF9ub3RpZnkgPSBHVlRfRVZFTlRfUkVTRVJWRUQsCisJCS5taV9mbHVzaF9kdyA9IFZD UzJfTUlfRkxVU0hfRFcsCisJCS5taV91c2VyX2ludGVycnVwdCA9IFZDUzJfTUlfVVNFUl9JTlRF UlJVUFQsCisJfSwKKwlbVkVDU10gPSB7CisJCS5waXBlX2NvbnRyb2xfbm90aWZ5ID0gR1ZUX0VW RU5UX1JFU0VSVkVELAorCQkubWlfZmx1c2hfZHcgPSBWRUNTX01JX0ZMVVNIX0RXLAorCQkubWlf dXNlcl9pbnRlcnJ1cHQgPSBWRUNTX01JX1VTRVJfSU5URVJSVVBULAorCX0sCit9OworCitpbnQg Z3Z0X3JpbmdfaWRfdG9fcGlwZV9jb250cm9sX25vdGlmeV9ldmVudChpbnQgcmluZ19pZCkKK3sK KwlyZXR1cm4gcmluZ19pZF90b19jbWRfaW50ZXJydXB0X2V2ZW50W3JpbmdfaWRdLnBpcGVfY29u dHJvbF9ub3RpZnk7Cit9CisKK2ludCBndnRfcmluZ19pZF90b19taV9mbHVzaF9kd19ldmVudChp bnQgcmluZ19pZCkKK3sKKwlyZXR1cm4gcmluZ19pZF90b19jbWRfaW50ZXJydXB0X2V2ZW50W3Jp bmdfaWRdLm1pX2ZsdXNoX2R3OworfQorCitpbnQgZ3Z0X3JpbmdfaWRfdG9fbWlfdXNlcl9pbnRl cnJ1cHRfZXZlbnQoaW50IHJpbmdfaWQpCit7CisJcmV0dXJuIHJpbmdfaWRfdG9fY21kX2ludGVy cnVwdF9ldmVudFtyaW5nX2lkXS5taV91c2VyX2ludGVycnVwdDsKK30KKwogc3RhdGljIGlubGlu ZSBzdHJ1Y3QgZ3Z0X2lycV9pbmZvICpyZWdiYXNlX3RvX2lycV9pbmZvKHN0cnVjdCBwZ3RfZGV2 aWNlICpwZGV2LAogCQl1bnNpZ25lZCBpbnQgcmVnKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Z0L2ludGVycnVwdC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2lu dGVycnVwdC5oCmluZGV4IGZmMTI1ZmMuLmQwMGE3ZDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d2dC9pbnRlcnJ1cHQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQv aW50ZXJydXB0LmgKQEAgLTI1MCw0ICsyNTAsOCBAQCB2b2lkIGd2dF90cmlnZ2VyX3ZpcnR1YWxf ZXZlbnQoc3RydWN0IHZndF9kZXZpY2UgKnZndCwKIAllbnVtIGd2dF9ldmVudF90eXBlIGV2ZW50 KTsKIHZvaWQgZ3Z0X2luamVjdF9mbGlwX2RvbmUoc3RydWN0IHZndF9kZXZpY2UgKnZndCwgaW50 IHBpcGUpOwogCitpbnQgZ3Z0X3JpbmdfaWRfdG9fcGlwZV9jb250cm9sX25vdGlmeV9ldmVudChp bnQgcmluZ19pZCk7CitpbnQgZ3Z0X3JpbmdfaWRfdG9fbWlfZmx1c2hfZHdfZXZlbnQoaW50IHJp bmdfaWQpOworaW50IGd2dF9yaW5nX2lkX3RvX21pX3VzZXJfaW50ZXJydXB0X2V2ZW50KGludCBy aW5nX2lkKTsKKwogI2VuZGlmIC8qIF9HVlRfSU5URVJSVVBUX0hfICovCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvcGVyZi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0 L3BlcmYuaAppbmRleCAyMWIwNjM3Li42ZjQxMWNmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndnQvcGVyZi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9wZXJmLmgK QEAgLTM2LDYgKzM2LDggQEAgc3RydWN0IGd2dF9zdGF0aXN0aWNzIHsKIAl1NjQJZ3R0X21taW9f d2NudDsKIAl1NjQJZ3R0X21taW9fd2N5Y2xlczsKIAl1NjQJZ3R0X21taW9fcmN5Y2xlczsKKwl1 NjQJdnJpbmdfc2Nhbl9jbnQ7CisJdTY0CXZyaW5nX3NjYW5fY3ljbGVzOwogCXU2NAl3cF9jbnQ7 CiAJdTY0CXdwX2N5Y2xlczsKIAl1NjQJcHBndHRfd3BfY250OwpAQCAtNDgsNiArNTAsNyBAQCBz dHJ1Y3QgZ3Z0X3N0YXRpc3RpY3MgewogCXU2NAlncHRfZmluZF9oaXRfY3ljbGVzOwogCXU2NAln cHRfZmluZF9taXNzX2NudDsKIAl1NjQJZ3B0X2ZpbmRfbWlzc19jeWNsZXM7CisJdTY0CXNraXBf YmJfY250OwogCiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvc2No ZWR1bGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvc2NoZWR1bGVyLmMKaW5kZXggZDM4 YWViMS4uZWE3M2I4MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVk dWxlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9zY2hlZHVsZXIuYwpAQCAtMTQ1 LDYgKzE0NSwxMSBAQCBzdGF0aWMgYm9vbCBkaXNwYXRjaF93b3JrbG9hZChzdHJ1Y3QgZ3Z0X3dv cmtsb2FkICp3b3JrbG9hZCkKIAogCW11dGV4X2xvY2soJnBkZXYtPmxvY2spOwogCisJaWYgKCFn dnRfc2Nhbl9hbmRfc2hhZG93X3dvcmtsb2FkKHdvcmtsb2FkKSkgeworCQl3b3JrbG9hZC0+c3Rh dHVzID0gLUVJTlZBTDsKKwkJZ290byBlcnI7CisJfQorCiAJaWYgKCFwb3B1bGF0ZV9zaGFkb3df Y29udGV4dCh3b3JrbG9hZCkpIHsKIAkJd29ya2xvYWQtPnN0YXR1cyA9IC1FSU5WQUw7CiAJCWdv dG8gZXJyOwpAQCAtMzA5LDYgKzMxNCw3IEBAIHN0YXRpYyB2b2lkIGNvbXBsZXRlX2N1cnJlbnRf d29ya2xvYWQoc3RydWN0IHBndF9kZXZpY2UgKnBkZXYsIGludCByaW5nX2lkKQogewogCXN0cnVj dCBndnRfd29ya2xvYWRfc2NoZWR1bGVyICpzY2hlZHVsZXIgPSAmcGRldi0+d29ya2xvYWRfc2No ZWR1bGVyOwogCXN0cnVjdCBndnRfd29ya2xvYWQgKndvcmtsb2FkOworCWludCBldmVudDsKIAog CW11dGV4X2xvY2soJnBkZXYtPmxvY2spOwogCkBAIC0zMTgsNiArMzI0LDkgQEAgc3RhdGljIHZv aWQgY29tcGxldGVfY3VycmVudF93b3JrbG9hZChzdHJ1Y3QgcGd0X2RldmljZSAqcGRldiwgaW50 IHJpbmdfaWQpCiAJCXdhaXRfZXZlbnQod29ya2xvYWQtPnNoYWRvd19jdHhfc3RhdHVzX3dxLAog CQkJCSFhdG9taWNfcmVhZCgmd29ya2xvYWQtPnNoYWRvd19jdHhfYWN0aXZlKSk7CiAJCXVwZGF0 ZV9ndWVzdF9jb250ZXh0KHdvcmtsb2FkKTsKKworCQlmb3JfZWFjaF9zZXRfYml0KGV2ZW50LCB3 b3JrbG9hZC0+cGVuZGluZ19ldmVudHMsIEdWVF9FVkVOVF9NQVgpCisJCQlndnRfdHJpZ2dlcl92 aXJ0dWFsX2V2ZW50KHdvcmtsb2FkLT52Z3QsIGV2ZW50KTsKIAl9CiAKIAlpZiAod29ya2xvYWQt PnJlcSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9zY2hlZHVsZXIuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9zY2hlZHVsZXIuaAppbmRleCA3YThmMWViLi42Yzg3 NTk5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvc2NoZWR1bGVyLmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5oCkBAIC01NSw3ICs1NSw3IEBA IHN0cnVjdCBndnRfd29ya2xvYWQgewogCS8qIGV4ZWNsaXN0IGNvbnRleHQgaW5mb3JtYXRpb24g Ki8KIAlzdHJ1Y3QgZXhlY2xpc3RfY3R4X2Rlc2NyaXB0b3JfZm9ybWF0IGN0eF9kZXNjOwogCXN0 cnVjdCBleGVjbGlzdF9yaW5nX2NvbnRleHQgKnJpbmdfY29udGV4dDsKLQl1bnNpZ25lZCBsb25n IHJiX2hlYWQsIHJiX3RhaWwsIHJiX2N0bCwgcmJfc3RhcnQ7CisJdW5zaWduZWQgbG9uZyByYl9o ZWFkLCByYl90YWlsLCByYl9jdGwsIHJiX3N0YXJ0LCByYl9sZW47CiAKIAlzdHJ1Y3QgZ3Z0X21t ICpzaGFkb3dfbW07CiAKQEAgLTYzLDYgKzYzLDkgQEAgc3RydWN0IGd2dF93b3JrbG9hZCB7CiAJ Ym9vbCAoKmNvbXBsZXRlKShzdHJ1Y3QgZ3Z0X3dvcmtsb2FkICopOwogCiAJc3RydWN0IGxpc3Rf aGVhZCBsaXN0OworCisJREVDTEFSRV9CSVRNQVAocGVuZGluZ19ldmVudHMsIEdWVF9FVkVOVF9N QVgpOworCXZvaWQgKnNoYWRvd19yaW5nX2J1ZmZlcl92YTsKIH07CiAKICNkZWZpbmUgd29ya2xv YWRfcV9oZWFkKHZndCwgcmluZ19pZCkgXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3Z0L3RyYWNlLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvdHJhY2UuaAppbmRleCBi NmE5ZjNmLi5iMmUyMGZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvdHJh Y2UuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvdHJhY2UuaApAQCAtMTk4LDYgKzE5 OCw1OCBAQCBUUkFDRV9FVkVOVChvb3Nfc3luYywKIAkJVFBfcHJpbnRrKCIlcyIsIF9fZW50cnkt PmJ1ZikKICk7CiAKKyNkZWZpbmUgTUFYX0NNRF9TVFJfTEVOCTI1NgorVFJBQ0VfRVZFTlQoZ3Z0 X2NvbW1hbmQsCisJCVRQX1BST1RPKHU4IHZtX2lkLCB1OCByaW5nX2lkLCB1MzIgaXBfZ21hLCB1 MzIgKmNtZF92YSwgdTMyIGNtZF9sZW4sIGJvb2wgcmluZ19idWZmZXJfY21kLCBjeWNsZXNfdCBj b3N0X3ByZV9jbWRfaGFuZGxlciwgY3ljbGVzX3QgY29zdF9jbWRfaGFuZGxlciksCisKKwkJVFBf QVJHUyh2bV9pZCwgcmluZ19pZCwgaXBfZ21hLCBjbWRfdmEsIGNtZF9sZW4sIHJpbmdfYnVmZmVy X2NtZCwgY29zdF9wcmVfY21kX2hhbmRsZXIsIGNvc3RfY21kX2hhbmRsZXIpLAorCisJCVRQX1NU UlVDVF9fZW50cnkoCisJCQlfX2ZpZWxkKHU4LCB2bV9pZCkKKwkJCV9fZmllbGQodTgsIHJpbmdf aWQpCisJCQlfX2ZpZWxkKGludCwgaSkKKwkJCV9fYXJyYXkoY2hhcix0bXBfYnVmLCBNQVhfQ01E X1NUUl9MRU4pCisJCQlfX2FycmF5KGNoYXIsIGNtZF9zdHIsIE1BWF9DTURfU1RSX0xFTikKKwkJ CSksCisKKwkJVFBfZmFzdF9hc3NpZ24oCisJCQlfX2VudHJ5LT52bV9pZCA9IHZtX2lkOworCQkJ X19lbnRyeS0+cmluZ19pZCA9IHJpbmdfaWQ7CisJCQlfX2VudHJ5LT5jbWRfc3RyWzBdID0gJ1ww JzsKKwkJCXNucHJpbnRmKF9fZW50cnktPnRtcF9idWYsIE1BWF9DTURfU1RSX0xFTiwgIlZNKCVk KSBSaW5nKCVkKTogJXMgaXAoJTA4eCkgcHJlIGhhbmRsZXIgY29zdCAoJWxsdSksIGhhbmRsZXIg Y29zdCAoJWxsdSkgIiwgdm1faWQsIHJpbmdfaWQsIHJpbmdfYnVmZmVyX2NtZCA/ICJSQiI6IkJC IiwgaXBfZ21hLCBjb3N0X3ByZV9jbWRfaGFuZGxlciwgY29zdF9jbWRfaGFuZGxlcik7CisJCQlz dHJjYXQoX19lbnRyeS0+Y21kX3N0ciwgX19lbnRyeS0+dG1wX2J1Zik7CisJCQllbnRyeS0+aSA9 IDA7CisJCQl3aGlsZSAoY21kX2xlbiA+IDApIHsKKwkJCQlpZiAoY21kX2xlbiA+PSA4KSB7CisJ CQkJCXNucHJpbnRmKF9fZW50cnktPnRtcF9idWYsIE1BWF9DTURfU1RSX0xFTiwgIiUwOHggJTA4 eCAlMDh4ICUwOHggJTA4eCAlMDh4ICUwOHggJTA4eCAiLAorCQkJCQkJY21kX3ZhW19fZW50cnkt PmldLCBjbWRfdmFbX19lbnRyeS0+aSsxXSwgY21kX3ZhW19fZW50cnktPmkrMl0sIGNtZF92YVtf X2VudHJ5LT5pKzNdLAorCQkJCQkJY21kX3ZhW19fZW50cnktPmkrNF0sY21kX3ZhW19fZW50cnkt PmkrNV0sY21kX3ZhW19fZW50cnktPmkrNl0sY21kX3ZhW19fZW50cnktPmkrN10pOworCQkJCQlf X2VudHJ5LT5pICs9IDg7CisJCQkJCWNtZF9sZW4gLT0gODsKKwkJCQkJc3RyY2F0KF9fZW50cnkt PmNtZF9zdHIsIF9fZW50cnktPnRtcF9idWYpOworCQkJCX0gZWxzZSBpZiAoY21kX2xlbiA+PSA0 KSB7CisJCQkJCXNucHJpbnRmKF9fZW50cnktPnRtcF9idWYsIE1BWF9DTURfU1RSX0xFTiwgIiUw OHggJTA4eCAlMDh4ICUwOHggIiwKKwkJCQkJCWNtZF92YVtfX2VudHJ5LT5pXSwgY21kX3ZhW19f ZW50cnktPmkrMV0sIGNtZF92YVtfX2VudHJ5LT5pKzJdLCBjbWRfdmFbX19lbnRyeS0+aSszXSk7 CisJCQkJCV9fZW50cnktPmkgKz0gNDsKKwkJCQkJY21kX2xlbiAtPSA0OworCQkJCQlzdHJjYXQo X19lbnRyeS0+Y21kX3N0ciwgX19lbnRyeS0+dG1wX2J1Zik7CisJCQkJfSBlbHNlIGlmIChjbWRf bGVuID49IDIpIHsKKwkJCQkJc25wcmludGYoX19lbnRyeS0+dG1wX2J1ZiwgTUFYX0NNRF9TVFJf TEVOLCAiJTA4eCAlMDh4ICIsIGNtZF92YVtfX2VudHJ5LT5pXSwgY21kX3ZhW19fZW50cnktPmkr MV0pOworCQkJCQlfX2VudHJ5LT5pICs9IDI7CisJCQkJCWNtZF9sZW4gLT0gMjsKKwkJCQkJc3Ry Y2F0KF9fZW50cnktPmNtZF9zdHIsIF9fZW50cnktPnRtcF9idWYpOworCQkJCX0gZWxzZSBpZiAo Y21kX2xlbiA9PSAxKSB7CisJCQkJCXNucHJpbnRmKF9fZW50cnktPnRtcF9idWYsIE1BWF9DTURf U1RSX0xFTiwgIiUwOHggIiwgY21kX3ZhW19fZW50cnktPmldKTsKKwkJCQkJX19lbnRyeS0+aSAr PSAxOworCQkJCQljbWRfbGVuIC09IDE7CisJCQkJCXN0cmNhdChfX2VudHJ5LT5jbWRfc3RyLCBf X2VudHJ5LT50bXBfYnVmKTsKKwkJCQl9CisJCQl9CisJCQlzdHJjYXQoX19lbnRyeS0+Y21kX3N0 ciwgIlxuIik7CisJCSksCisKKwkJVFBfcHJpbnRrKCIlcyIsIF9fZW50cnktPmNtZF9zdHIpCisp OwogI2VuZGlmIC8qIF9HVlRfVFJBQ0VfSF8gKi8KIAogLyogVGhpcyBwYXJ0IG11c3QgYmUgb3V0 IG9mIHByb3RlY3Rpb24gKi8KLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=