From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753987AbaBDOmS (ORCPT ); Tue, 4 Feb 2014 09:42:18 -0500 Received: from mail-pd0-f175.google.com ([209.85.192.175]:45233 "EHLO mail-pd0-f175.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751234AbaBDOmM (ORCPT ); Tue, 4 Feb 2014 09:42:12 -0500 MIME-Version: 1.0 Reply-To: andrea.merello@gmail.com In-Reply-To: <20140204092836.GG26776@mwanda> References: <52ee2ee736e00_2c3211fc86c5851f@209.249.196.67.mail> <20140202160512.GA4946@redhat.com> <201402021807.37772.s.L-H@gmx.de> <52EFCC66.9020304@lwfinger.net> <20140203201228.GE26722@mwanda> <20140204092836.GG26776@mwanda> From: Andrea Merello Date: Tue, 4 Feb 2014 15:41:46 +0100 Message-ID: Subject: Re: rtl8821ae. To: Dan Carpenter Cc: Linus Torvalds , Larry Finger , Stefan Lippers-Hollmann , Dave Jones , Greg Kroah-Hartman , Linux Wireless List , Linux Kernel , Linux Driver Project Content-Type: multipart/mixed; boundary=047d7b6d8f16f5543204f195a4aa Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --047d7b6d8f16f5543204f195a4aa Content-Type: text/plain; charset=ISO-8859-1 Yes, I attach a cumulative patch for latest version of my work. When I will send this asking for merge in kernel, I will split it in some patches, because I also also included fix and improvements for other already supported cards (not directly related to rtl8187se support). About this, I will produce separate patches for rtl8180 driver if finally the drivers will be merged and also in case I'll split them.. Any suggestion/advice will be appreciated :) Thanks Andrea On Tue, Feb 4, 2014 at 10:28 AM, Dan Carpenter wrote: > Nice. Thanks for doing that. Do you have some patches we could review > of the merged driver? > > regards, > dan carpenter > --047d7b6d8f16f5543204f195a4aa Content-Type: text/x-patch; charset=US-ASCII; name="rtl8187se_01.patch" Content-Disposition: attachment; filename="rtl8187se_01.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hr99x2fn0 ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bDgxOHgvS2NvbmZpZyBiL2RyaXZl cnMvbmV0L3dpcmVsZXNzL3J0bDgxOHgvS2NvbmZpZwppbmRleCAzMDMzMjE3Li4yZjY0MGEyIDEw MDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGw4MTh4L0tjb25maWcKKysrIGIvZHJp dmVycy9uZXQvd2lyZWxlc3MvcnRsODE4eC9LY29uZmlnCkBAIC0yLDcgKzIsNyBAQAogIyBSVEw4 MThYIFdpcmVsZXNzIExBTiBkZXZpY2UgY29uZmlndXJhdGlvbgogIwogY29uZmlnIFJUTDgxODAK LQl0cmlzdGF0ZSAiUmVhbHRlayA4MTgwLzgxODUgUENJIHN1cHBvcnQiCisJdHJpc3RhdGUgIlJl YWx0ZWsgODE4MC84MTg1LzgxODdTRSBQQ0kgc3VwcG9ydCIKIAlkZXBlbmRzIG9uIE1BQzgwMjEx ICYmIFBDSQogCXNlbGVjdCBFRVBST01fOTNDWDYKIAktLS1oZWxwLS0tCmRpZmYgLS1naXQgYS9k cml2ZXJzL25ldC93aXJlbGVzcy9ydGw4MTh4L3J0bDgxODAvTWFrZWZpbGUgYi9kcml2ZXJzL25l dC93aXJlbGVzcy9ydGw4MTh4L3J0bDgxODAvTWFrZWZpbGUKaW5kZXggY2I0ZmI4NS4uMDhiMDU2 ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsODE4eC9ydGw4MTgwL01ha2Vm aWxlCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bDgxOHgvcnRsODE4MC9NYWtlZmlsZQpA QCAtMSw0ICsxLDQgQEAKLXJ0bDgxODAtb2JqcwkJOj0gZGV2Lm8gcnRsODIyNS5vIHNhMjQwMC5v IG1heDI4MjAubyBncmY1MTAxLm8KK3J0bDgxODAtb2JqcwkJOj0gZGV2Lm8gcnRsODIyNS5vIHNh MjQwMC5vIG1heDI4MjAubyBncmY1MTAxLm8gcnRsODIyNXNlLm8KIAogb2JqLSQoQ09ORklHX1JU TDgxODApCSs9IHJ0bDgxODAubwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9y dGw4MTh4L3J0bDgxODAvZGV2LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGw4MTh4L3J0bDgx ODAvZGV2LmMKaW5kZXggYTkxNTA2Yi4uZGUzNzY5MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQv d2lyZWxlc3MvcnRsODE4eC9ydGw4MTgwL2Rldi5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNz L3J0bDgxOHgvcnRsODE4MC9kZXYuYwpAQCAtMjcsMTYgKzI3LDIzIEBACiAKICNpbmNsdWRlICJy dGw4MTgwLmgiCiAjaW5jbHVkZSAicnRsODIyNS5oIgorI2luY2x1ZGUgInJ0bDgyMjVzZS5oIgog I2luY2x1ZGUgInNhMjQwMC5oIgogI2luY2x1ZGUgIm1heDI4MjAuaCIKICNpbmNsdWRlICJncmY1 MTAxLmgiCisjaW5jbHVkZSAicnRsODIyNXNlLmgiCisKIAogTU9EVUxFX0FVVEhPUigiTWljaGFl bCBXdSA8ZmxhbWluZ2ljZUBzb3VybWlsay5uZXQ+Iik7CiBNT0RVTEVfQVVUSE9SKCJBbmRyZWEg TWVyZWxsbyA8YW5kcmVhLm1lcmVsbG9AZ21haWwuY29tPiIpOwotTU9EVUxFX0RFU0NSSVBUSU9O KCJSVEw4MTgwIC8gUlRMODE4NSBQQ0kgd2lyZWxlc3MgZHJpdmVyIik7CitNT0RVTEVfREVTQ1JJ UFRJT04oIlJUTDgxODAgLyBSVEw4MTg1IC8gUlRMODE4N1NFIFBDSSB3aXJlbGVzcyBkcml2ZXIi KTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKIAogc3RhdGljIERFRklORV9QQ0lfREVWSUNFX1RB QkxFKHJ0bDgxODBfdGFibGUpID0geworCisJLyogcnRsODE4N3NlICovCisJeyBQQ0lfREVWSUNF KFBDSV9WRU5ET1JfSURfUkVBTFRFSywgMHg4MTk5KSB9LAorCiAJLyogcnRsODE4NSAqLwogCXsg UENJX0RFVklDRShQQ0lfVkVORE9SX0lEX1JFQUxURUssIDB4ODE4NSkgfSwKIAl7IFBDSV9ERVZJ Q0UoUENJX1ZFTkRPUl9JRF9CRUxLSU4sIDB4NzAwZikgfSwKQEAgLTg2LDMzICs5MywxNjYgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCBydGw4MTh4X2NoYW5uZWxzW10g PSB7CiAJeyAuY2VudGVyX2ZyZXEgPSAyNDg0IH0sCiB9OwogCisvKiBRdWV1ZXMgZm9yIHJ0bDgx ODdzZSBjYXJkCisgKgorICogbmFtZSB8IHJlZyAgfCAgcXVldWUKKyAqICBCQyAgfCAgNyAgIHwg ICA2CisgKiAgTUcgIHwgIDEgICB8ICAgMAorICogIEhJICB8ICA2ICAgfCAgIDEKKyAqICBWTyAg fCAgNSAgIHwgICAyCisgKiAgVkkgIHwgIDQgICB8ICAgMworICogIEJFICB8ICAzICAgfCAgIDQK KyAqICBCSyAgfCAgMiAgIHwgICA1CisgKgorICogVGhlIGNvbXBsZXRlIG1hcCBmb3IgRE1BIGtp Y2sgcmVnIHVzaW5nIHVzZSBhbGwgcXVldWUgaXM6CisgKiBzdGF0aWMgY29uc3QgaW50IHJ0bDgx ODdzZV9xdWV1ZXNfbWFwW1JUTDgxODdTRV9OUl9UWF9RVUVVRVNdID0KKyAqCXsxLCA2LCA1LCA0 LCAzLCAyLCA3fTsKKyAqCisgKiAuLiBidXQuLiBCZWNhdXNlIGZvciBtYWM4MDIxMSA0IHF1ZXVl cyBhcmUgZW5vdWdoIGZvciBRb1Mgd2UgdXNlIHRoaXMKKyAqCisgKiBuYW1lIHwgcmVnICB8ICBx dWV1ZQorICogIEJDICB8ICA3ICAgfCAgIDQgIDwtIHVzZWQsIG5vdCByZXBvcnRlZCB0byBzdGFj ayAoYmVhY29uKQorICogIE1HICB8ICAxICAgfCAgIHggIDwtIE5vdCB1c2VkCisgKiAgSEkgIHwg IDYgICB8ICAgeCAgPC0gTm90IHVzZWQKKyAqICBWTyAgfCAgNSAgIHwgICAwICA8LSB1c2VkCisg KiAgVkkgIHwgIDQgICB8ICAgMSAgPC0gdXNlZAorICogIEJFICB8ICAzICAgfCAgIDIgIDwtIHVz ZWQKKyAqICBCSyAgfCAgMiAgIHwgICAzICA8LSB1c2VkCisgKgorICogSSB0aG91Z3RoIGFib3V0 IHVzaW5nIHRoZSBvdGhlciB0d28gcXVldWVzIGJ1dCBJIGRlY2lkZWQgbm90IHRvIGRvIHRoaXM6 CisgKgorICogLSBJIGNvdWxkIHJvdXRlIE1HTVQgZnJhbWVzIChjdXJyZW50bHkgc2VudCBvdmVy IFZPIHF1ZXVlKSB0byB0aGUgTUdNVAorICogICBxdWV1ZSBidXQgc2luY2UgbWFjODAyMTEgd2ls bCBkbyBub3Qga25vdyBhYm91dCBpdCwgSSB3aWxsIHByb2JhYmx5IGdhaW4KKyAqICAgc29tZSBI VyBwcmlvcml0eSB3aGVuZXZlciB0aGUgVk8gcXVldWUgaXMgbm90IGVtcHR5LCBidXQgdGhpcyBn YWluIGlzCisgKiAgIGxpbWl0ZWQgYnkgdGhlIGZhY3QgdGhhdCBJIGhhZCB0byBzdG9wIHRoZSBt YWM4MDIxMSBxdWV1ZSB3aGVuZXZlciBvbmUgb2YKKyAqICAgdGhlIFZPIG9yIE1HTVQgcXVldWVz IGlzIGZ1bGwsIHN0b3BwaW5nIGFsc28gc3VibWl0dGluZyBvZiBNR01UIGZyYW1lCisgKiAgIHRv IHRoZSBkcml2ZXIuCisgKgorICogLSBJJ20gZG9uJyBrbm93IGhvdyB0byBzZXQgaW4gdGhlIEhX IHRoZSBjb250ZW50aW9uIHdpbmRvdyBwYXJhbXMgZm9yIE1HTVQKKyAqICAgYW5kIEhJLXByaW8g cXVldWVzLgorICoKKyAqIC0gSSdtIHVuc3VyZSB3aGV0aGVyIHRoZSBtYWM4MDIxMSB3aWxsIGV2 ZXIgdHJ5IHRvIHVzZSBtb3JlIHRoYW4gNCBxdWV1ZXMKKyAqLworCitzdGF0aWMgY29uc3QgaW50 IHJ0bDgxODdzZV9xdWV1ZXNfbWFwW1JUTDgxODdTRV9OUl9UWF9RVUVVRVNdID0gezUsIDQsIDMs IDIsIDd9OworCisvKiBRdWV1ZXMgZm9yIHJ0bDgxODAvcnRsODE4NSBjYXJkcworICoKKyAqIG5h bWUgfCByZWcgIHwgIHByaW8KKyAqICBCQyAgfCAgNyAgIHwgICAzCisgKiAgSEkgIHwgIDYgICB8 ICAgMAorICogIE5PICB8ICA1ICAgfCAgIDEKKyAqICBMTyAgfCAgNCAgIHwgICAyCisgKgorICog VGhlIGNvbXBsZXRlIG1hcCBmb3IgRE1BIGtpY2sgcmVnIHVzaW5nIGFsbCBxdWV1ZSBpczoKKyAq IHN0YXRpYyBjb25zdCBpbnQgcnRsODE4MF9xdWV1ZXNfbWFwW1JUTDgxODBfTlJfVFhfUVVFVUVT XSA9IHs2LCA1LCA0LCA3fTsKKyAqCisgKiAuLiBidXQgLi4gQmVjYXVzZSB0aGUgbWFjODAyMTEg bmVlZHMgYXQgbGVhc3QgNCBxdWV1ZXMgZm9yIFFvUyBvcgorICogb3RoZXJ3aXNlIFFvUyBjYW4n dCBiZSBkb25lLCB3ZSB1c2UgdGhpczoKKyAqCisgKiBuYW1lIHwgcmVnICB8ICBwcmlvCisgKiAg QkMgIHwgIDcgICB8ICAgMSAgPC0gdXNlZCwgbm90IHJlcG9ydGVkIHRvIHN0YWNrIChiZWFjb24p CisgKiAgSEkgIHwgIDYgICB8ICAgeCAgPC0gbm90IHVzZWQKKyAqICBOTyAgfCAgNSAgIHwgICB4 ICA8LSBub3QgdXNlZAorICogIExPICB8ICA0ICAgfCAgIDAgIDwtIHVzZWQKKyAqCisgKi8KKwor c3RhdGljIGNvbnN0IGludCBydGw4MTgwX3F1ZXVlc19tYXBbUlRMODE4MF9OUl9UWF9RVUVVRVNd ID0gezQsIDd9OworCisKK3N0YXRpYyB2b2lkIHJ0bDgxODBfd3JpdGVfcGh5XyhzdHJ1Y3QgaWVl ZTgwMjExX2h3ICpkZXYsIHU4IGFkZHIsIHUzMiBkYXRhKQoreworCXN0cnVjdCBydGw4MTgwX3By aXYgKnByaXYgPSBkZXYtPnByaXY7CisKKwlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5t YXAtPlBIWVsxXSwKKwkJCSAodTgpKGRhdGEgICYgMHhGRikpOworCXJ0bDgxOHhfaW9yZWFkOChw cml2LCAmcHJpdi0+bWFwLT5QSFlbMV0pOworCisJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJp di0+bWFwLT5QSFlbMl0sCisJCQkgKHU4KSgoZGF0YSA+PiA4KSAmIDB4RkYpKTsKKwlydGw4MTh4 X2lvcmVhZDgocHJpdiwgJnByaXYtPm1hcC0+UEhZWzJdKTsKKworCXJ0bDgxOHhfaW93cml0ZTgo cHJpdiwgJnByaXYtPm1hcC0+UEhZWzNdLAorCQkJICh1OCkoKGRhdGEgPj4gMTYpICYgMHhGRikp OworCXJ0bDgxOHhfaW9yZWFkOChwcml2LCAmcHJpdi0+bWFwLT5QSFlbM10pOworCisJcnRsODE4 eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5QSFlbMF0sCisJCQkgKHU4KShhZGRyKSk7Cit9 CiAKIHZvaWQgcnRsODE4MF93cml0ZV9waHkoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCB1OCBh ZGRyLCB1MzIgZGF0YSkKIHsKIAlzdHJ1Y3QgcnRsODE4MF9wcml2ICpwcml2ID0gZGV2LT5wcml2 OwotCWludCBpID0gMTA7Ci0JdTMyIGJ1ZjsKKwlpbnQgaTsKKwl1OCB0bXA7CisJdTggcmVhZGJh Y2s7CisJdTMyIHJiX21hc2sgPSAweGZmOworCisJaWYgKChhZGRyID09IDB4YSkgJiYgKAorCQkg ICAgcHJpdi0+Y2hpcF9mYW1pbHkgPT0gUlRMODE4WF9DSElQX0ZBTUlMWV9SVEw4MTg1KSkKKwkJ cmJfbWFzayA9IDB4N2Y7CisKKwlmb3IgKGkgPSAwOyBpIDwgMzA7IGkrKykgeworCQl0bXAgPSBy dGw4MTh4X2lvcmVhZDgocHJpdiwgJnByaXYtPm1hcC0+UEhZWzBdKTsKKwkJaWYgKCEodG1wICYg MHg4MCkpCisJCQlicmVhazsKKwkJbWRlbGF5KDEwKTsKKwl9CiAKLQlidWYgPSAoZGF0YSA8PCA4 KSB8IGFkZHI7CisJaWYgKHRtcCAmIDB4ODApCisJCXByaW50ayhLRVJOX1dBUk5JTkcKKwkJICAg ICAgICJydGw4MTh4IGZhaWxlZCB0byB3cml0ZSBCQiAoYnVzeSkgYWRyOiV4IGRhdGE6JXhcbiIs CisJCSAgICAgICBhZGRyLCBkYXRhKTsKKworCXJ0bDgxODBfd3JpdGVfcGh5XyhkZXYsIGFkZHIg fCAweDgwLCBkYXRhKTsKKworCWZvciAoaSA9IDA7IGkgPCAzMDsgaSsrKSB7CisJCXJ0bDgxODBf d3JpdGVfcGh5XyhkZXYsIGFkZHIgJiB+MHg4MCwgZGF0YSk7CisKKwkJcmVhZGJhY2sgPSBydGw4 MTh4X2lvcmVhZDgocHJpdiwgJnByaXYtPm1hcC0+UEhZWzJdKTsKKworCQlpZiAocmVhZGJhY2sg PT0gKGRhdGEgJiByYl9tYXNrKSkKKwkJCWJyZWFrOwogCi0JcnRsODE4eF9pb3dyaXRlMzIocHJp diwgKF9fbGUzMiBfX2lvbWVtICopJnByaXYtPm1hcC0+UEhZWzBdLCBidWYgfCAweDgwKTsKLQl3 aGlsZSAoaS0tKSB7Ci0JCXJ0bDgxOHhfaW93cml0ZTMyKHByaXYsIChfX2xlMzIgX19pb21lbSAq KSZwcml2LT5tYXAtPlBIWVswXSwgYnVmKTsKLQkJaWYgKHJ0bDgxOHhfaW9yZWFkOChwcml2LCAm cHJpdi0+bWFwLT5QSFlbMl0pID09IChkYXRhICYgMHhGRikpCi0JCQlyZXR1cm47CiAJfQorCisJ aWYgKHJlYWRiYWNrICE9IChkYXRhICYgcmJfbWFzaykpCisJCXByaW50ayhLRVJOX1dBUk5JTkcK KwkJICAgICAgICJydGw4MTh4IGZhaWxlZCB0byB3cml0ZSBCQiBhZHI6JXggZGF0YToleCByYjol eFxuIiwKKwkJICAgICAgIGFkZHIsIGRhdGEsIHJlYWRiYWNrKTsKIH0KIAorCiBzdGF0aWMgdm9p ZCBydGw4MTgwX2hhbmRsZV9yeChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYpCiB7CiAJc3RydWN0 IHJ0bDgxODBfcHJpdiAqcHJpdiA9IGRldi0+cHJpdjsKKwlzdHJ1Y3QgcnRsODE4eF9yeF9jbWRf ZGVzYyAqY21kX2Rlc2M7CiAJdW5zaWduZWQgaW50IGNvdW50ID0gMzI7CiAJdTggc2lnbmFsLCBh Z2MsIHNxOworCWRtYV9hZGRyX3QgbWFwcGluZzsKIAogCXdoaWxlIChjb3VudC0tKSB7Ci0JCXN0 cnVjdCBydGw4MTgwX3J4X2Rlc2MgKmVudHJ5ID0gJnByaXYtPnJ4X3JpbmdbcHJpdi0+cnhfaWR4 XTsKKwkJdm9pZCAqZW50cnkgPSBwcml2LT5yeF9yaW5nICsgcHJpdi0+cnhfaWR4ICogcHJpdi0+ cnhfcmluZ19zejsKIAkJc3RydWN0IHNrX2J1ZmYgKnNrYiA9IHByaXYtPnJ4X2J1Zltwcml2LT5y eF9pZHhdOwotCQl1MzIgZmxhZ3MgPSBsZTMyX3RvX2NwdShlbnRyeS0+ZmxhZ3MpOworCisJCXUz MiBmbGFncywgZmxhZ3MyOworCQl1NjQgdHNmdDsKKworCQlpZiAocHJpdi0+Y2hpcF9mYW1pbHkg PT0gUlRMODE4WF9DSElQX0ZBTUlMWV9SVEw4MTg3U0UpIHsKKwkJCXN0cnVjdCBydGw4MTg3c2Vf cnhfZGVzYyAqZGVzYyA9IGVudHJ5OworCisJCQlmbGFncyA9IGxlMzJfdG9fY3B1KGRlc2MtPmZs YWdzKTsKKwkJCWZsYWdzMiA9IGxlMzJfdG9fY3B1KGRlc2MtPmZsYWdzMik7CisJCQl0c2Z0ID0g bGU2NF90b19jcHUoZGVzYy0+dHNmdCk7CisKKwkJfSBlbHNlIHsKKwkJCXN0cnVjdCBydGw4MTgw X3J4X2Rlc2MgKmRlc2MgPSBlbnRyeTsKKworCQkJZmxhZ3MgPSBsZTMyX3RvX2NwdShkZXNjLT5m bGFncyk7CisJCQlmbGFnczIgPSBsZTMyX3RvX2NwdShkZXNjLT5mbGFnczIpOworCQkJdHNmdCA9 IGxlNjRfdG9fY3B1KGRlc2MtPnRzZnQpOworCQl9CiAKIAkJaWYgKGZsYWdzICYgUlRMODE4WF9S WF9ERVNDX0ZMQUdfT1dOKQogCQkJcmV0dXJuOwpAQCAtMTIyLDU0ICsyNjIsNzUgQEAgc3RhdGlj IHZvaWQgcnRsODE4MF9oYW5kbGVfcngoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2KQogCQkJCSAg ICAgIFJUTDgxOFhfUlhfREVTQ19GTEFHX1JYX0VSUikpKQogCQkJZ290byBkb25lOwogCQllbHNl IHsKLQkJCXUzMiBmbGFnczIgPSBsZTMyX3RvX2NwdShlbnRyeS0+ZmxhZ3MyKTsKKwogCQkJc3Ry dWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgcnhfc3RhdHVzID0gezB9OwogCQkJc3RydWN0IHNrX2J1 ZmYgKm5ld19za2IgPSBkZXZfYWxsb2Nfc2tiKE1BWF9SWF9TSVpFKTsKIAogCQkJaWYgKHVubGlr ZWx5KCFuZXdfc2tiKSkKIAkJCQlnb3RvIGRvbmU7CiAKKwkJCW1hcHBpbmcgPSBwY2lfbWFwX3Np bmdsZShwcml2LT5wZGV2LAorCQkJCQkgICAgICAgc2tiX3RhaWxfcG9pbnRlcihuZXdfc2tiKSwK KwkJCQkJICAgICAgIE1BWF9SWF9TSVpFLCBQQ0lfRE1BX0ZST01ERVZJQ0UpOworCisJCQlpZiAo cGNpX2RtYV9tYXBwaW5nX2Vycm9yKHByaXYtPnBkZXYsIG1hcHBpbmcpKSB7CisJCQkJa2ZyZWVf c2tiKG5ld19za2IpOworCQkJCWRldl9lcnIoJnByaXYtPnBkZXYtPmRldiwgIlRYIERNQSBtYXAg ZXJyb3JcbiIpOworCisJCQkJZ290byBkb25lOworCQkJfQorCiAJCQlwY2lfdW5tYXBfc2luZ2xl KHByaXYtPnBkZXYsCiAJCQkJCSAqKChkbWFfYWRkcl90ICopc2tiLT5jYiksCiAJCQkJCSBNQVhf UlhfU0laRSwgUENJX0RNQV9GUk9NREVWSUNFKTsKIAkJCXNrYl9wdXQoc2tiLCBmbGFncyAmIDB4 RkZGKTsKIAorCiAJCQlyeF9zdGF0dXMuYW50ZW5uYSA9IChmbGFnczIgPj4gMTUpICYgMTsKIAkJ CXJ4X3N0YXR1cy5yYXRlX2lkeCA9IChmbGFncyA+PiAyMCkgJiAweEY7CiAJCQlhZ2MgPSAoZmxh Z3MyID4+IDE3KSAmIDB4N0Y7Ci0JCQlpZiAocHJpdi0+cjgxODUpIHsKKworCQkJaWYgKHByaXYt PmNoaXBfZmFtaWx5ID09IFJUTDgxOFhfQ0hJUF9GQU1JTFlfUlRMODE4NSkgewogCQkJCWlmIChy eF9zdGF0dXMucmF0ZV9pZHggPiAzKQogCQkJCQlzaWduYWwgPSA5MCAtIGNsYW1wX3QodTgsIGFn YywgMjUsIDkwKTsKIAkJCQllbHNlCiAJCQkJCXNpZ25hbCA9IDk1IC0gY2xhbXBfdCh1OCwgYWdj LCAzMCwgOTUpOwotCQkJfSBlbHNlIHsKKworCQkJfSBlbHNlIGlmIChwcml2LT5jaGlwX2ZhbWls eSA9PQorCQkJCSAgIFJUTDgxOFhfQ0hJUF9GQU1JTFlfUlRMODE4MCkgewogCQkJCXNxID0gZmxh Z3MyICYgMHhmZjsKIAkJCQlzaWduYWwgPSBwcml2LT5yZi0+Y2FsY19yc3NpKGFnYywgc3EpOwor CQkJfSBlbHNlIHsKKwkJCQkvKiBUT0RPOiBydGw4MTg3c2UgcnNzaSAqLworCQkJCXNpZ25hbCA9 IDEwOwogCQkJfQorCiAJCQlyeF9zdGF0dXMuc2lnbmFsID0gc2lnbmFsOwogCQkJcnhfc3RhdHVz LmZyZXEgPSBkZXYtPmNvbmYuY2hhbmRlZi5jaGFuLT5jZW50ZXJfZnJlcTsKIAkJCXJ4X3N0YXR1 cy5iYW5kID0gZGV2LT5jb25mLmNoYW5kZWYuY2hhbi0+YmFuZDsKLQkJCXJ4X3N0YXR1cy5tYWN0 aW1lID0gbGU2NF90b19jcHUoZW50cnktPnRzZnQpOworCQkJcnhfc3RhdHVzLm1hY3RpbWUgPSB0 c2Z0OwogCQkJcnhfc3RhdHVzLmZsYWcgfD0gUlhfRkxBR19NQUNUSU1FX1NUQVJUOwogCQkJaWYg KGZsYWdzICYgUlRMODE4WF9SWF9ERVNDX0ZMQUdfQ1JDMzJfRVJSKQogCQkJCXJ4X3N0YXR1cy5m bGFnIHw9IFJYX0ZMQUdfRkFJTEVEX0ZDU19DUkM7CiAKLQkJCW1lbWNweShJRUVFODAyMTFfU0tC X1JYQ0Ioc2tiKSwgJnJ4X3N0YXR1cywgc2l6ZW9mKHJ4X3N0YXR1cykpOworCQkJbWVtY3B5KElF RUU4MDIxMV9TS0JfUlhDQihza2IpLCAmcnhfc3RhdHVzLAorCQkJICAgICAgIHNpemVvZihyeF9z dGF0dXMpKTsKIAkJCWllZWU4MDIxMV9yeF9pcnFzYWZlKGRldiwgc2tiKTsKIAogCQkJc2tiID0g bmV3X3NrYjsKKwogCQkJcHJpdi0+cnhfYnVmW3ByaXYtPnJ4X2lkeF0gPSBza2I7Ci0JCQkqKChk bWFfYWRkcl90ICopIHNrYi0+Y2IpID0KLQkJCQlwY2lfbWFwX3NpbmdsZShwcml2LT5wZGV2LCBz a2JfdGFpbF9wb2ludGVyKHNrYiksCi0JCQkJCSAgICAgICBNQVhfUlhfU0laRSwgUENJX0RNQV9G Uk9NREVWSUNFKTsKKwkJCSooKGRtYV9hZGRyX3QgKikgc2tiLT5jYikgPSBtYXBwaW5nOwogCQl9 CiAKIAlkb25lOgotCQllbnRyeS0+cnhfYnVmID0gY3B1X3RvX2xlMzIoKigoZG1hX2FkZHJfdCAq KXNrYi0+Y2IpKTsKLQkJZW50cnktPmZsYWdzID0gY3B1X3RvX2xlMzIoUlRMODE4WF9SWF9ERVND X0ZMQUdfT1dOIHwKKwkJY21kX2Rlc2MgPSBlbnRyeTsKKwkJY21kX2Rlc2MtPnJ4X2J1ZiA9IGNw dV90b19sZTMyKCooKGRtYV9hZGRyX3QgKilza2ItPmNiKSk7CisJCWNtZF9kZXNjLT5mbGFncyA9 IGNwdV90b19sZTMyKFJUTDgxOFhfUlhfREVTQ19GTEFHX09XTiB8CiAJCQkJCSAgIE1BWF9SWF9T SVpFKTsKIAkJaWYgKHByaXYtPnJ4X2lkeCA9PSAzMSkKLQkJCWVudHJ5LT5mbGFncyB8PSBjcHVf dG9fbGUzMihSVEw4MThYX1JYX0RFU0NfRkxBR19FT1IpOworCQkJY21kX2Rlc2MtPmZsYWdzIHw9 CisJCQkJY3B1X3RvX2xlMzIoUlRMODE4WF9SWF9ERVNDX0ZMQUdfRU9SKTsKIAkJcHJpdi0+cnhf aWR4ID0gKHByaXYtPnJ4X2lkeCArIDEpICUgMzI7CiAJfQogfQpAQCAtMTg1LDkgKzM0NiwzMCBA QCBzdGF0aWMgdm9pZCBydGw4MTgwX2hhbmRsZV90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYs IHVuc2lnbmVkIGludCBwcmlvKQogCQlzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmluZm87CiAJ CXUzMiBmbGFncyA9IGxlMzJfdG9fY3B1KGVudHJ5LT5mbGFncyk7CiAKLQkJaWYgKGZsYWdzICYg UlRMODE4WF9UWF9ERVNDX0ZMQUdfT1dOKQorCisjaWYgMAorCQkvKiBpdCBzZWVtcyB0aGF0IHJ0 bDgxODdzZSBzb21ldGltZXMgZG9lcyBub3Qgc2V0CisJCSAqIHRoZSBPV04gZmxhZyBvbiBkZXNj cmlwdG9ycyBldmVuIGlmIGl0IGhhcyBwcm9jZXNzZWQgdGhlbS4KKwkJICogTWF5YmUgaXQgaGFw cGVuIHdoZW4gdGhlIFRYIGlzIG5vdCBkb25lIGJlY2F1c2Ugb2YKKwkJICogY2VydGFpbnMgZXJy b3JzCisJCSAqLworCQlpZiAocHJpdi0+Y2hpcF9mYW1pbHkgPT0gUlRMODE4WF9DSElQX0ZBTUlM WV9SVEw4MTg3U0UpIHsKKworCQkJaWYgKCEoZmxhZ3MgJiBSVEw4MThYX1RYX0RFU0NfRkxBR19E TUEpKSB7CisJCQkJZmxhZ3MgJj0gflJUTDgxOFhfVFhfREVTQ19GTEFHX09XTjsKKwkJCQkJZW50 cnktPmZsYWdzID0gY3B1X3RvX2xlMzIoZmxhZ3MpOworCQkJfQorCisJCX0KKyNlbmRpZgorCisJ CWlmIChmbGFncyAmIFJUTDgxOFhfVFhfREVTQ19GTEFHX09XTikgewogCQkJcmV0dXJuOworCQl9 CiAKKyNpZmRlZiBERUJVR19QWV9UT09MCisJCWVudHJ5LT5yZXNlcnZlZCB8PSAweDgwMDA7Cisj ZW5kaWYKIAkJcmluZy0+aWR4ID0gKHJpbmctPmlkeCArIDEpICUgcmluZy0+ZW50cmllczsKIAkJ c2tiID0gX19za2JfZGVxdWV1ZSgmcmluZy0+cXVldWUpOwogCQlwY2lfdW5tYXBfc2luZ2xlKHBy aXYtPnBkZXYsIGxlMzJfdG9fY3B1KGVudHJ5LT50eF9idWYpLApAQCAtMjA0LDExICszODYsNzQg QEAgc3RhdGljIHZvaWQgcnRsODE4MF9oYW5kbGVfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2 LCB1bnNpZ25lZCBpbnQgcHJpbykKIAkJaW5mby0+c3RhdHVzLnJhdGVzWzFdLmlkeCA9IC0xOwog CiAJCWllZWU4MDIxMV90eF9zdGF0dXNfaXJxc2FmZShkZXYsIHNrYik7Ci0JCWlmIChyaW5nLT5l bnRyaWVzIC0gc2tiX3F1ZXVlX2xlbigmcmluZy0+cXVldWUpID09IDIpCi0JCQlpZWVlODAyMTFf d2FrZV9xdWV1ZShkZXYsIHByaW8pOworCQlpZiAocmluZy0+ZW50cmllcyAtIHNrYl9xdWV1ZV9s ZW4oJnJpbmctPnF1ZXVlKSA9PSAyKSB7CisJCQlpZiAocHJpbyAhPSBkZXYtPnF1ZXVlcykKKwkJ CQlpZWVlODAyMTFfd2FrZV9xdWV1ZShkZXYsIHByaW8pOworCQkJZWxzZQorCQkJCXByaXYtPmJl YWNvbl9xdWV1ZV9zdG9wID0gMDsKKworCQl9CiAJfQorCiB9CiAKKworc3RhdGljIGlycXJldHVy bl90IHJ0bDgxODdzZV9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkKQoreworCXN0cnVj dCBpZWVlODAyMTFfaHcgKmRldiA9IGRldl9pZDsKKwlzdHJ1Y3QgcnRsODE4MF9wcml2ICpwcml2 ID0gZGV2LT5wcml2OworCXUzMiByZWc7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlzdGF0aWMg aW50IGRlc2NfZXJyOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnByaXYtPmxvY2ssIGZsYWdzKTsK KwkvKiBOb3RlOiAzMi1iaXQgaW50ZXJydXB0IHN0YXR1cyAqLworCXJlZyA9IHJ0bDgxOHhfaW9y ZWFkMzIocHJpdiwgJnByaXYtPm1hcC0+SU5UX1NUQVRVU19TRSk7CisJaWYgKHVubGlrZWx5KHJl ZyA9PSAweEZGRkZGRkZGKSkgeworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwcml2LT5sb2Nr LCBmbGFncyk7CisJCXJldHVybiBJUlFfSEFORExFRDsKKwl9CisKKwlydGw4MTh4X2lvd3JpdGUz Mihwcml2LCAmcHJpdi0+bWFwLT5JTlRfU1RBVFVTX1NFLCByZWcpOworCisJaWYgKHJlZyAmIElN Ul9USU1FT1VUMSkKKwkJcnRsODE4eF9pb3dyaXRlMzIocHJpdiwgJnByaXYtPm1hcC0+SU5UX1RJ TUVPVVQsIDApOworCisJaWYgKHJlZyAmIChJTVJfVEJET0sgfCBJTVJfVEJERVIpKQorCQlydGw4 MTgwX2hhbmRsZV90eChkZXYsIDQpOworI2lmIDAKKwlpZiAocmVnICYgSU1SX1RNR0RPSykKKwkJ cnRsODE4MF9oYW5kbGVfdHgoZGV2LCAwKTsKKworCWlmIChyZWcgJiAoSU1SX1RIUERPSyB8IElN Ul9USFBERVIpKQorCQlydGw4MTgwX2hhbmRsZV90eChkZXYsIDEpOworI2VuZGlmCisJaWYgKHJl ZyAmIChJTVJfVFZPRE9LIHwgSU1SX1RWT0RFUikpCisJCXJ0bDgxODBfaGFuZGxlX3R4KGRldiwg MCk7CisKKwlpZiAocmVnICYgKElNUl9UVklET0sgfCBJTVJfVFZJREVSKSkKKwkJcnRsODE4MF9o YW5kbGVfdHgoZGV2LCAxKTsKKworCWlmIChyZWcgJiAoSU1SX1RCRURPSyB8IElNUl9UQkVERVIp KQorCQlydGw4MTgwX2hhbmRsZV90eChkZXYsIDIpOworCisJaWYgKHJlZyAmIChJTVJfVEJLRE9L IHwgSU1SX1RCS0RFUikpCisJCXJ0bDgxODBfaGFuZGxlX3R4KGRldiwgMyk7CisKKwlpZiAocmVn ICYgKElNUl9ST0sgfCBJTVJfUkVSIHwgUlRMODE4WF9JTlRfU0VfUlhfRFUgfCBJTVJfUlFPU09L KSkKKwkJcnRsODE4MF9oYW5kbGVfcngoZGV2KTsKKwkvKiBUaGUgaW50ZXJmYWNlIHNvbWV0aW1l cyBnZW5lcmF0ZXMgc2V2ZXJhbCBSWCBETUEgZGVzY3JpcHRvciBlcnJvcnMKKwkgKiBhdCBzdGFy dHVwLiBEbyBub3QgcmVwb3J0IHRoZXNlLgorCSAqLworCWlmICgocmVnICYgUlRMODE4WF9JTlRf U0VfUlhfRFUpICYmIGRlc2NfZXJyKysgPiAyKQorCQlpZiAobmV0X3JhdGVsaW1pdCgpKQorCQkJ cHJpbnRrKEtFUk5fRVJSICJObyBSWCBETUEgRGVzY3JpcHRvciBhdmFpbFxuIik7CisKKwlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZwcml2LT5sb2NrLCBmbGFncyk7CisJcmV0dXJuIElSUV9IQU5E TEVEOworfQorCisKIHN0YXRpYyBpcnFyZXR1cm5fdCBydGw4MTgwX2ludGVycnVwdChpbnQgaXJx LCB2b2lkICpkZXZfaWQpCiB7CiAJc3RydWN0IGllZWU4MDIxMV9odyAqZGV2ID0gZGV2X2lkOwpA QCAtMjI1LDE0ICs0NzAsMTQgQEAgc3RhdGljIGlycXJldHVybl90IHJ0bDgxODBfaW50ZXJydXB0 KGludCBpcnEsIHZvaWQgKmRldl9pZCkKIAlydGw4MTh4X2lvd3JpdGUxNihwcml2LCAmcHJpdi0+ bWFwLT5JTlRfU1RBVFVTLCByZWcpOwogCiAJaWYgKHJlZyAmIChSVEw4MThYX0lOVF9UWEJfT0sg fCBSVEw4MThYX0lOVF9UWEJfRVJSKSkKLQkJcnRsODE4MF9oYW5kbGVfdHgoZGV2LCAzKTsKLQor CQlydGw4MTgwX2hhbmRsZV90eChkZXYsIDEpOworI2lmIDAKIAlpZiAocmVnICYgKFJUTDgxOFhf SU5UX1RYSF9PSyB8IFJUTDgxOFhfSU5UX1RYSF9FUlIpKQotCQlydGw4MTgwX2hhbmRsZV90eChk ZXYsIDIpOworCQlydGw4MTgwX2hhbmRsZV90eChkZXYsIDApOwogCiAJaWYgKHJlZyAmIChSVEw4 MThYX0lOVF9UWE5fT0sgfCBSVEw4MThYX0lOVF9UWE5fRVJSKSkKIAkJcnRsODE4MF9oYW5kbGVf dHgoZGV2LCAxKTsKLQorI2VuZGlmCiAJaWYgKHJlZyAmIChSVEw4MThYX0lOVF9UWExfT0sgfCBS VEw4MThYX0lOVF9UWExfRVJSKSkKIAkJcnRsODE4MF9oYW5kbGVfdHgoZGV2LCAwKTsKIApAQCAt MjQ0LDYgKzQ4OSw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBydGw4MTgwX2ludGVycnVwdChpbnQg aXJxLCB2b2lkICpkZXZfaWQpCiAJcmV0dXJuIElSUV9IQU5ETEVEOwogfQogCisKIHN0YXRpYyB2 b2lkIHJ0bDgxODBfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LAogCQkgICAgICAgc3RydWN0 IGllZWU4MDIxMV90eF9jb250cm9sICpjb250cm9sLAogCQkgICAgICAgc3RydWN0IHNrX2J1ZmYg KnNrYikKQEAgLTI1NCw3OSArNTAwLDE4OSBAQCBzdGF0aWMgdm9pZCBydGw4MTgwX3R4KHN0cnVj dCBpZWVlODAyMTFfaHcgKmRldiwKIAlzdHJ1Y3QgcnRsODE4MF90eF9yaW5nICpyaW5nOwogCXN0 cnVjdCBydGw4MTgwX3R4X2Rlc2MgKmVudHJ5OwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0JdW5z aWduZWQgaW50IGlkeCwgcHJpbzsKKwl1bnNpZ25lZCBpbnQgaWR4LCBwcmlvLCBod19wcmlvOwor CXU4IG5vdF91c2VkX21hc2s7CiAJZG1hX2FkZHJfdCBtYXBwaW5nOwogCXUzMiB0eF9mbGFnczsK IAl1OCByY19mbGFnczsKIAl1MTYgcGxjcF9sZW4gPSAwOwogCV9fbGUxNiBydHNfZHVyYXRpb24g PSAwOworCS8qIGRvIGFyaXRobWV0aWMgYW5kIHRoZW4gY29udmVydCB0byBsZTE2ICovCisJdTE2 IGZyYW1lX2R1cmF0aW9uID0gMDsKKworCVdBUk5fT04oc2tiLT5sZW4gPiAweGZmZik7CiAKIAlw cmlvID0gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYik7CisKIAlyaW5nID0gJnByaXYtPnR4X3Jp bmdbcHJpb107CiAKIAltYXBwaW5nID0gcGNpX21hcF9zaW5nbGUocHJpdi0+cGRldiwgc2tiLT5k YXRhLAogCQkJCSBza2ItPmxlbiwgUENJX0RNQV9UT0RFVklDRSk7CiAKKwlpZiAocGNpX2RtYV9t YXBwaW5nX2Vycm9yKHByaXYtPnBkZXYsIG1hcHBpbmcpKSB7CisJCWtmcmVlX3NrYihza2IpOwor CQlkZXZfZXJyKCZwcml2LT5wZGV2LT5kZXYsICJUWCBETUEgbWFwcGluZyBlcnJvclxuIik7CisJ CXJldHVybjsKKworCX0KKworCiAJdHhfZmxhZ3MgPSBSVEw4MThYX1RYX0RFU0NfRkxBR19PV04g fCBSVEw4MThYX1RYX0RFU0NfRkxBR19GUyB8CiAJCSAgIFJUTDgxOFhfVFhfREVTQ19GTEFHX0xT IHwKIAkJICAgKGllZWU4MDIxMV9nZXRfdHhfcmF0ZShkZXYsIGluZm8pLT5od192YWx1ZSA8PCAy NCkgfAogCQkgICBza2ItPmxlbjsKIAotCWlmIChwcml2LT5yODE4NSkKKwlpZiAocHJpdi0+Y2hp cF9mYW1pbHkgIT0gUlRMODE4WF9DSElQX0ZBTUlMWV9SVEw4MTgwKSB7CiAJCXR4X2ZsYWdzIHw9 IFJUTDgxOFhfVFhfREVTQ19GTEFHX0RNQSB8CiAJCQkgICAgUlRMODE4WF9UWF9ERVNDX0ZMQUdf Tk9fRU5DOworCX0KIAogCXJjX2ZsYWdzID0gaW5mby0+Y29udHJvbC5yYXRlc1swXS5mbGFnczsK KworCiAJaWYgKHJjX2ZsYWdzICYgSUVFRTgwMjExX1RYX1JDX1VTRV9SVFNfQ1RTKSB7CiAJCXR4 X2ZsYWdzIHw9IFJUTDgxOFhfVFhfREVTQ19GTEFHX1JUUzsKIAkJdHhfZmxhZ3MgfD0gaWVlZTgw MjExX2dldF9ydHNfY3RzX3JhdGUoZGV2LCBpbmZvKS0+aHdfdmFsdWUgPDwgMTk7CisKIAl9IGVs c2UgaWYgKHJjX2ZsYWdzICYgSUVFRTgwMjExX1RYX1JDX1VTRV9DVFNfUFJPVEVDVCkgewogCQl0 eF9mbGFncyB8PSBSVEw4MThYX1RYX0RFU0NfRkxBR19DVFM7CiAJCXR4X2ZsYWdzIHw9IGllZWU4 MDIxMV9nZXRfcnRzX2N0c19yYXRlKGRldiwgaW5mbyktPmh3X3ZhbHVlIDw8IDE5OworCiAJfQog CiAJaWYgKHJjX2ZsYWdzICYgSUVFRTgwMjExX1RYX1JDX1VTRV9SVFNfQ1RTKQogCQlydHNfZHVy YXRpb24gPSBpZWVlODAyMTFfcnRzX2R1cmF0aW9uKGRldiwgcHJpdi0+dmlmLCBza2ItPmxlbiwK IAkJCQkJCSAgICAgIGluZm8pOwogCi0JaWYgKCFwcml2LT5yODE4NSkgeworCisJaWYgKHByaXYt PmNoaXBfZmFtaWx5ID09IFJUTDgxOFhfQ0hJUF9GQU1JTFlfUlRMODE4MCkgewogCQl1bnNpZ25l ZCBpbnQgcmVtYWluZGVyOwogCiAJCXBsY3BfbGVuID0gRElWX1JPVU5EX1VQKDE2ICogKHNrYi0+ bGVuICsgNCksCi0JCQkJKGllZWU4MDIxMV9nZXRfdHhfcmF0ZShkZXYsIGluZm8pLT5iaXRyYXRl ICogMikgLyAxMCk7CisJCQkoaWVlZTgwMjExX2dldF90eF9yYXRlKGRldiwgaW5mbyktPmJpdHJh dGUgKiAyKSAvIDEwKTsKIAkJcmVtYWluZGVyID0gKDE2ICogKHNrYi0+bGVuICsgNCkpICUKIAkJ CSAgICAoKGllZWU4MDIxMV9nZXRfdHhfcmF0ZShkZXYsIGluZm8pLT5iaXRyYXRlICogMikgLyAx MCk7CiAJCWlmIChyZW1haW5kZXIgPD0gNikKIAkJCXBsY3BfbGVuIHw9IDEgPDwgMTU7CiAJfQog CisJaWYgKHByaXYtPmNoaXBfZmFtaWx5ID09IFJUTDgxOFhfQ0hJUF9GQU1JTFlfUlRMODE4N1NF KSB7CisKKwkJLyogU0lGUyB0aW1lIChyZXF1aXJlZCBieSBIVykgaXMgYWxyZWFkeSBpbmNsdWRl ZCBieQorCQkgKiBpZWVlODAyMTFfZ2VuZXJpY19mcmFtZV9kdXJhdGlvbgorCQkgKi8KKwkJZnJh bWVfZHVyYXRpb24gPSAgcHJpdi0+YWNrX3RpbWUgKyBsZTE2X3RvX2NwdSgKKwkJCWllZWU4MDIx MV9nZW5lcmljX2ZyYW1lX2R1cmF0aW9uKGRldiwgcHJpdi0+dmlmLAorCQkJCQlJRUVFODAyMTFf QkFORF8yR0haLCBza2ItPmxlbiwKKwkJCQkJaWVlZTgwMjExX2dldF90eF9yYXRlKGRldiwgaW5m bykpKTsKKwl9CisKIAlzcGluX2xvY2tfaXJxc2F2ZSgmcHJpdi0+bG9jaywgZmxhZ3MpOwogCiAJ aWYgKGluZm8tPmZsYWdzICYgSUVFRTgwMjExX1RYX0NUTF9BU1NJR05fU0VRKSB7CisKIAkJaWYg KGluZm8tPmZsYWdzICYgSUVFRTgwMjExX1RYX0NUTF9GSVJTVF9GUkFHTUVOVCkKIAkJCXByaXYt PnNlcW5vICs9IDB4MTA7CiAJCWhkci0+c2VxX2N0cmwgJj0gY3B1X3RvX2xlMTYoSUVFRTgwMjEx X1NDVExfRlJBRyk7CiAJCWhkci0+c2VxX2N0cmwgfD0gY3B1X3RvX2xlMTYocHJpdi0+c2Vxbm8p OwogCX0KIAorCiAJaWR4ID0gKHJpbmctPmlkeCArIHNrYl9xdWV1ZV9sZW4oJnJpbmctPnF1ZXVl KSkgJSByaW5nLT5lbnRyaWVzOwogCWVudHJ5ID0gJnJpbmctPmRlc2NbaWR4XTsKIAorI2lmZGVm IERFQlVHX1BZX1RPT0wKKwllbnRyeS0+cmVzZXJ2ZWQgPSAweDBmZmYgJiBwcml2LT5zZXFubzsK KyNlbmRpZgorCisJaWYgKHByaXYtPmNoaXBfZmFtaWx5ID09IFJUTDgxOFhfQ0hJUF9GQU1JTFlf UlRMODE4N1NFKSB7CisJCWVudHJ5LT5mcmFtZV9kdXJhdGlvbiA9IGNwdV90b19sZTE2KGZyYW1l X2R1cmF0aW9uKTsKKwkJZW50cnktPmZyYW1lX2xlbl9zZSA9IGNwdV90b19sZTE2KHNrYi0+bGVu KTsKKworCQkvKiB0cGMgcG9sYXJpdHkgKi8KKwkJZW50cnktPmZsYWdzMyA9IGNwdV90b19sZTE2 KDE8PDQpOworCX0gZWxzZSB7CisJCWVudHJ5LT5mcmFtZV9sZW4gPSBjcHVfdG9fbGUzMihza2It Pmxlbik7CisJfQorCiAJZW50cnktPnJ0c19kdXJhdGlvbiA9IHJ0c19kdXJhdGlvbjsKIAllbnRy eS0+cGxjcF9sZW4gPSBjcHVfdG9fbGUxNihwbGNwX2xlbik7CiAJZW50cnktPnR4X2J1ZiA9IGNw dV90b19sZTMyKG1hcHBpbmcpOwotCWVudHJ5LT5mcmFtZV9sZW4gPSBjcHVfdG9fbGUzMihza2It Pmxlbik7CisKIAllbnRyeS0+ZmxhZ3MyID0gaW5mby0+Y29udHJvbC5yYXRlc1sxXS5pZHggPj0g MCA/Ci0JCWllZWU4MDIxMV9nZXRfYWx0X3JldHJ5X3JhdGUoZGV2LCBpbmZvLCAwKS0+Yml0cmF0 ZSA8PCA0IDogMDsKKwkJaWVlZTgwMjExX2dldF9hbHRfcmV0cnlfcmF0ZShkZXYsIGluZm8sIDAp LT5od192YWx1ZSA8PCA0IDogMDsKKwogCWVudHJ5LT5yZXRyeV9saW1pdCA9IGluZm8tPmNvbnRy b2wucmF0ZXNbMF0uY291bnQ7CisKKwkvKiBtdXN0IGJlIHdyaXR0ZW4gbGFzdCAqLwogCWVudHJ5 LT5mbGFncyA9IGNwdV90b19sZTMyKHR4X2ZsYWdzKTsKKwogCV9fc2tiX3F1ZXVlX3RhaWwoJnJp bmctPnF1ZXVlLCBza2IpOwotCWlmIChyaW5nLT5lbnRyaWVzIC0gc2tiX3F1ZXVlX2xlbigmcmlu Zy0+cXVldWUpIDwgMikKLQkJaWVlZTgwMjExX3N0b3BfcXVldWUoZGV2LCBwcmlvKTsKKworCWlm IChyaW5nLT5lbnRyaWVzIC0gc2tiX3F1ZXVlX2xlbigmcmluZy0+cXVldWUpIDwgMikgeworCQlp ZiAocHJpbyAhPSBkZXYtPnF1ZXVlcykKKwkJCWllZWU4MDIxMV9zdG9wX3F1ZXVlKGRldiwgcHJp byk7CisJCWVsc2UKKwkJCXByaXYtPmJlYWNvbl9xdWV1ZV9zdG9wID0gMTsKKwl9CiAKIAlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZwcml2LT5sb2NrLCBmbGFncyk7CiAKLQlydGw4MTh4X2lvd3Jp dGU4KHByaXYsICZwcml2LT5tYXAtPlRYX0RNQV9QT0xMSU5HLCAoMSA8PCAocHJpbyArIDQpKSk7 CisJaWYgKHByaXYtPmNoaXBfZmFtaWx5ID09IFJUTDgxOFhfQ0hJUF9GQU1JTFlfUlRMODE4N1NF KSB7CisKKwkJaHdfcHJpbyA9IHJ0bDgxODdzZV9xdWV1ZXNfbWFwW3ByaW9dOworCQkvKiBUUFBv bGxTdG9wIHJlZyBpcyB1c2VkICovCisJCW5vdF91c2VkX21hc2sgPSAwOworCX0gZWxzZSB7CisJ CWh3X3ByaW8gPSBydGw4MTgwX3F1ZXVlc19tYXBbcHJpb107CisJCW5vdF91c2VkX21hc2sgPSAo MTw8MSkgfCAoMTw8Mik7CisJfQorCisKKwlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5t YXAtPlRYX0RNQV9QT0xMSU5HLAorCQkJICgxIDw8IGh3X3ByaW8pIHwgbm90X3VzZWRfbWFzayk7 CisKK30KKworCitzdGF0aWMgdm9pZCBydGw4MTgwX3NldF9hbmFwYXJhbTMoc3RydWN0IHJ0bDgx ODBfcHJpdiAqcHJpdiwgdTE2IGFuYXBhcmFtMykKK3sKKwl1OCByZWc7CisKKwlydGw4MTh4X2lv d3JpdGU4KHByaXYsICZwcml2LT5tYXAtPkVFUFJPTV9DTUQsCisJCQkgUlRMODE4WF9FRVBST01f Q01EX0NPTkZJRyk7CisKKwlyZWcgPSBydGw4MTh4X2lvcmVhZDgocHJpdiwgJnByaXYtPm1hcC0+ Q09ORklHMyk7CisJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5DT05GSUczLAor CQkgcmVnIHwgUlRMODE4WF9DT05GSUczX0FOQVBBUkFNX1dSSVRFKTsKKworCXJ0bDgxOHhfaW93 cml0ZTE2KHByaXYsICZwcml2LT5tYXAtPkFOQVBBUkFNMywgYW5hcGFyYW0zKTsKKworCXJ0bDgx OHhfaW93cml0ZTgocHJpdiwgJnByaXYtPm1hcC0+Q09ORklHMywKKwkJIHJlZyAmIH5SVEw4MThY X0NPTkZJRzNfQU5BUEFSQU1fV1JJVEUpOworCisJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJp di0+bWFwLT5FRVBST01fQ01ELAorCQkJIFJUTDgxOFhfRUVQUk9NX0NNRF9OT1JNQUwpOworfQor Cit2b2lkIHJ0bDgxODBfc2V0X2FuYXBhcmFtMihzdHJ1Y3QgcnRsODE4MF9wcml2ICpwcml2LCB1 MzIgYW5hcGFyYW0yKQoreworCXU4IHJlZzsKKworCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgJnBy aXYtPm1hcC0+RUVQUk9NX0NNRCwKKwkJCSBSVEw4MThYX0VFUFJPTV9DTURfQ09ORklHKTsKKwor CXJlZyA9IHJ0bDgxOHhfaW9yZWFkOChwcml2LCAmcHJpdi0+bWFwLT5DT05GSUczKTsKKwlydGw4 MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPkNPTkZJRzMsCisJCSByZWcgfCBSVEw4MThY X0NPTkZJRzNfQU5BUEFSQU1fV1JJVEUpOworCisJcnRsODE4eF9pb3dyaXRlMzIocHJpdiwgJnBy aXYtPm1hcC0+QU5BUEFSQU0yLCBhbmFwYXJhbTIpOworCisJcnRsODE4eF9pb3dyaXRlOChwcml2 LCAmcHJpdi0+bWFwLT5DT05GSUczLAorCQkgcmVnICYgflJUTDgxOFhfQ09ORklHM19BTkFQQVJB TV9XUklURSk7CisKKwlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPkVFUFJPTV9D TUQsCisJCQkgUlRMODE4WF9FRVBST01fQ01EX05PUk1BTCk7CiB9CiAKIHZvaWQgcnRsODE4MF9z ZXRfYW5hcGFyYW0oc3RydWN0IHJ0bDgxODBfcHJpdiAqcHJpdiwgdTMyIGFuYXBhcmFtKQpAQCAt MzM0LDMxICs2OTAsMzU4IEBAIHZvaWQgcnRsODE4MF9zZXRfYW5hcGFyYW0oc3RydWN0IHJ0bDgx ODBfcHJpdiAqcHJpdiwgdTMyIGFuYXBhcmFtKQogCXU4IHJlZzsKIAogCXJ0bDgxOHhfaW93cml0 ZTgocHJpdiwgJnByaXYtPm1hcC0+RUVQUk9NX0NNRCwgUlRMODE4WF9FRVBST01fQ01EX0NPTkZJ Ryk7CisKIAlyZWcgPSBydGw4MTh4X2lvcmVhZDgocHJpdiwgJnByaXYtPm1hcC0+Q09ORklHMyk7 CiAJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5DT05GSUczLAogCQkgcmVnIHwg UlRMODE4WF9DT05GSUczX0FOQVBBUkFNX1dSSVRFKTsKKwogCXJ0bDgxOHhfaW93cml0ZTMyKHBy aXYsICZwcml2LT5tYXAtPkFOQVBBUkFNLCBhbmFwYXJhbSk7CisKIAlydGw4MTh4X2lvd3JpdGU4 KHByaXYsICZwcml2LT5tYXAtPkNPTkZJRzMsCiAJCSByZWcgJiB+UlRMODE4WF9DT05GSUczX0FO QVBBUkFNX1dSSVRFKTsKLQlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPkVFUFJP TV9DTUQsIFJUTDgxOFhfRUVQUk9NX0NNRF9OT1JNQUwpOworCisJcnRsODE4eF9pb3dyaXRlOChw cml2LCAmcHJpdi0+bWFwLT5FRVBST01fQ01ELAorCQkJIFJUTDgxOFhfRUVQUk9NX0NNRF9OT1JN QUwpOwogfQogCi1zdGF0aWMgaW50IHJ0bDgxODBfaW5pdF9odyhzdHJ1Y3QgaWVlZTgwMjExX2h3 ICpkZXYpCisKK3N0YXRpYyB2b2lkIHJ0bDgxODdzZV9tYWNfY29uZmlnKHN0cnVjdCBpZWVlODAy MTFfaHcgKmRldikKK3sKKwlzdHJ1Y3QgcnRsODE4MF9wcml2ICpwcml2ID0gZGV2LT5wcml2Owor CisKKwlydGw4MTh4X2lvd3JpdGUzMihwcml2LCBSRUdfQUREUjQoMHgxRjApLCAwKTsKKwlydGw4 MTh4X2lvcmVhZDMyKHByaXYsIFJFR19BRERSNCgweDFGMCkpOworCXJ0bDgxOHhfaW93cml0ZTMy KHByaXYsIFJFR19BRERSNCgweDFGNCksIDApOworCXJ0bDgxOHhfaW9yZWFkMzIocHJpdiwgUkVH X0FERFI0KDB4MUY0KSk7CisJcnRsODE4eF9pb3dyaXRlOChwcml2LCBSRUdfQUREUjEoMHgxRjgp LCAwKTsKKwlydGw4MTh4X2lvcmVhZDgocHJpdiwgUkVHX0FERFIxKDB4MUY4KSk7CisJLyogRW5h YmxlIERBMTAgVFggcG93ZXIgc2F2aW5nICovCisJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJp di0+bWFwLT5QSFlfUFIsCisJCQkgcnRsODE4eF9pb3JlYWQ4KHByaXYsICZwcml2LT5tYXAtPlBI WV9QUikgfCAweDA0KTsKKwkvKiBQb3dlciAqLworCXJ0bDgxOHhfaW93cml0ZTE2KHByaXYsIFBJ X0RBVEFfUkVHLCAweDEwMDApOworCXJ0bDgxOHhfaW93cml0ZTE2KHByaXYsIFNJX0RBVEFfUkVH LCAweDEwMDApOworCS8qIEFGRSAtIGRlZmF1bHQgdG8gcG93ZXIgT04gKi8KKwlydGw4MTh4X2lv d3JpdGUxNihwcml2LCBSRUdfQUREUjIoMHgzNzApLCAweDA1NjApOworCXJ0bDgxOHhfaW93cml0 ZTE2KHByaXYsIFJFR19BRERSMigweDM3MiksIDB4MDU2MCk7CisJcnRsODE4eF9pb3dyaXRlMTYo cHJpdiwgUkVHX0FERFIyKDB4Mzc0KSwgMHgwREE0KTsKKwlydGw4MTh4X2lvd3JpdGUxNihwcml2 LCBSRUdfQUREUjIoMHgzNzYpLCAweDBEQTQpOworCXJ0bDgxOHhfaW93cml0ZTE2KHByaXYsIFJF R19BRERSMigweDM3OCksIDB4MDU2MCk7CisJcnRsODE4eF9pb3dyaXRlMTYocHJpdiwgUkVHX0FE RFIyKDB4MzdBKSwgMHgwNTYwKTsKKwlydGw4MTh4X2lvd3JpdGUxNihwcml2LCBSRUdfQUREUjIo MHgzN0MpLCAweDAwRUMpOworCXJ0bDgxOHhfaW93cml0ZTE2KHByaXYsIFJFR19BRERSMigweDM3 RSksIDB4MDBFQyk7CisJcnRsODE4eF9pb3dyaXRlOChwcml2LCBSRUdfQUREUjEoMHgyNEUpLCAw eDAxKTsKKwkvKiB1bmtub3duLCBuZWVkZWQgZm9yIHN1c3BlbmQgdG8gUkFNIHJlc3VtZSAqLwor CXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgUkVHX0FERFIxKDB4MEEpLCAweDcyKTsKK30KKworCisv KiBUT0RPIHVzZSB0aGlzIHJlZmVyZW5jZSBjb2RlIGZvciBCQi9BRkUgcG93ZXIgc3RhdGUgaGFu ZGxpbmcgKi8KKyNpZiAwCitzdGF0aWMgYm9vbCBydGw4MTg3c2Vfc2V0X3plYnJhX3JmX3Bvd2Vy X3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwKKwkJCQkgICBlbnVtIHJ0bDgxODdzZV9w b3dlcl9zdGF0ZSBzdGF0ZSkKK3sKKwlzdHJ1Y3QgcnRsODE4MF9wcml2ICpwcml2ID0gZGV2LT5w cml2OworCXU4IGNtZHJlZzsKKwl1OCBjb25maWczOworCXU4IHRtcDsKKwlpbnQgaTsKKwlib29s IHR1cm5fb2ZmID0gdHJ1ZTsKKworCisJLyogdGhpcyBlbmFibGVzIGFuYXBhcmFtcy4KKwkgKiBo ZXJlIHBvcnRpb25zIGFyZSB3cml0dGVuIGluIGJ5dGVzIGFjY2VzcworCSAqIFRPRE86IHVuaWZv cm0gYWxsIHRoZSBhbmFwYXJtYXMgIGxvZ2ljL25hbWVzCisJICovCisJY21kcmVnID0gcnRsODE4 eF9pb3JlYWQ4KHByaXYsICZwcml2LT5tYXAtPkVFUFJPTV9DTUQpOworCWNvbmZpZzMgPSBydGw4 MTh4X2lvcmVhZDgocHJpdiwgJnByaXYtPm1hcC0+Q09ORklHMyk7CisJcnRsODE4eF9pb3dyaXRl OChwcml2LCAmcHJpdi0+bWFwLT5DT05GSUczLCBjb25maWczIHwgMHg0MCk7CisJc3dpdGNoIChz dGF0ZSkgeworCWNhc2UgIFJUTDgxODdTRV9QT1dFUl9PTjoKKworCQlydGw4MTh4X2lvd3JpdGUx Nihwcml2LCBSRUdfQUREUjIoMHgzN0MpLCAweEVDKTsKKwkJcnRsODE4eF9pb3dyaXRlOChwcml2 LCBSRUdfQUREUjEoMHgwNTQpLCAweDAwKTsKKwkJcnRsODE4eF9pb3dyaXRlOChwcml2LCBSRUdf QUREUjEoMHgwNjIpLCAweDAwKTsKKworCQkvKiB0dXJuIG9uIFJGICovCisJCXJ0bDgxODdzZV9y Zl93cml0ZXJlZyhkZXYsIDB4MDAsIDB4MDA5Rik7IHVkZWxheSg1MDApOworCQlydGw4MTg3c2Vf cmZfd3JpdGVyZWcoZGV2LCAweDA0LCAweDA5NzIpOyB1ZGVsYXkoNTAwKTsKKwkJLyogdHVybiBv biBSRiBhZ2FpbiAqLworCQlydGw4MTg3c2VfcmZfd3JpdGVyZWcoZGV2LCAweDAwLCAweDAwOUYp OyB1ZGVsYXkoNTAwKTsKKwkJcnRsODE4N3NlX3JmX3dyaXRlcmVnKGRldiwgMHgwNCwgMHgwOTcy KTsgdWRlbGF5KDUwMCk7CisKKwkJLyogdHVybiBvbiBCQiAqLworCQlydGw4MjI1X3dyaXRlX3Bo eV9vZmRtKGRldiwgMHgxMCwgMHg0MCk7CisJCXJ0bDgyMjVfd3JpdGVfcGh5X29mZG0oZGV2LCAw eDEyLCAweDQwKTsKKworCQkvKiBhdm9pZCBwb3dlciBkb3duIGF0IGluaXQgdGltZSAqLworCQly dGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPkNPTkZJRzQsIHByaXYtPnJmX3Byb2df dHlwZSk7CisJCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgUkVHX0FERFIxKDB4MjRFKSwgcnRsODE4 eF9pb3JlYWQ4KHByaXYsCisJCQkJIFJFR19BRERSMSgweDI0RSkpICYgfigweDYwKSk7CisJCWJy ZWFrOworCWNhc2UgUlRMODE4N1NFX1BPV0VSX1NMRUVQOgorCQkvKiBUT0RPOiBUaGlzIHJvdXRp bmUgaGFzIHNvbWUgbG9naWMgdGhhdCBpcyBub3QgdW5kZXJzdG9vZC4KKwkJICogRm9yIG5vdywg aXQgaXMgZG9pbmcgd2hhdCB0aGUgdmVuZG9yIGRyaXZlciBkb2VzLCBidXQKKwkJICogcHJvYmFi bHkgc2hvdWxkIGJlIGZpeGVkLgorCQkgKi8KKwkJLyogdHVybiBvZmYgQkIgKi8KKwkJcnRsODIy NV93cml0ZV9waHlfb2ZkbShkZXYsIDB4MTAsIDB4NDApOworCQlydGw4MjI1X3dyaXRlX3BoeV9v ZmRtKGRldiwgMHgxMiwgMHg0MCk7CisKKworCQkvKiB0dXJuIG9mZiBSRiAqLworCQlydGw4MTg3 c2VfcmZfd3JpdGVyZWcoZGV2LCAweDA0LCAweDAwMDApOworCQlydGw4MTg3c2VfcmZfd3JpdGVy ZWcoZGV2LCAweDAwLCAweDAwMDApOworCisJCS8qIFR1cm4gb2ZmIEFGRSBleGNlcHQgUExMICov CisJCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgUkVHX0FERFIxKDB4NjIpLCAweEZGKTsKKwkJcnRs ODE4eF9pb3dyaXRlOChwcml2LCBSRUdfQUREUjEoMHg1NCksIDB4RUMpOworCQl0bXAgPSBydGw4 MTh4X2lvcmVhZDgocHJpdiwgUkVHX0FERFIxKDB4MjRGKSk7CisJCWlmICh0bXAgPT0gMHgwMSB8 fCB0bXAgPT0gMHgwOSkgeworCQkJcnRsODE4eF9pb3dyaXRlOChwcml2LCBSRUdfQUREUjEoMHgy NEUpLAorCQkJCSAgIHJ0bDgxOHhfaW9yZWFkOChwcml2LCBSRUdfQUREUjEoMHgyNEUpKSB8CisJ CQkJICAgMHg2MCk7CisJCQkvKiBUdXJuIG9mZiBBRkUgUExMICovCisJCQlydGw4MTh4X2lvd3Jp dGU4KHByaXYsIFJFR19BRERSMSgweDU0KSwgMHhGQyk7CisJCQlydGw4MTh4X2lvd3JpdGUxNihw cml2LCBSRUdfQUREUjIoMHgzN0MpLCAweDAwRkMpOworCQl9CisJCWJyZWFrOworCWNhc2UgUlRM ODE4N1NFX1BPV0VSX09GRjoKKwkJLyogdHVybiBvZmYgQkIgUlhJUSBtYXRyaXggdG8gY3V0IG9m ZiByeCBzaWduYWwgKi8KKwkJcnRsODIyNV93cml0ZV9waHlfb2ZkbShkZXYsIDB4MTAsIDB4MDAp OworCQlydGw4MjI1X3dyaXRlX3BoeV9vZmRtKGRldiwgMHgxMiwgMHgwMCk7CisKKworCQkvKiB0 dXJuIG9mZiBSRiAqLworCQlydGw4MTg3c2VfcmZfd3JpdGVyZWcoZGV2LCAweDA0LCAweDAwMDAp OworCQlydGw4MTg3c2VfcmZfd3JpdGVyZWcoZGV2LCAweDAwLCAweDAwMDApOworCisJCS8qIHR1 cm4gb2ZmIEFGRSBleGNlcHQgUExMICovCisJCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgUkVHX0FE RFIxKDB4NjIpLCAweGZmKTsKKwkJcnRsODE4eF9pb3dyaXRlOChwcml2LCBSRUdfQUREUjEoMHg1 NCksIDB4ZWMpOworCQltc2xlZXAoMSk7CisJCWkgPSAwOworCQlmb3IgKDs7KSB7CisJCQl0bXAg PSBydGw4MTh4X2lvcmVhZDgocHJpdiwgUkVHX0FERFIxKDB4MjRGKSk7CisJCQlpZiAoKHRtcCA9 PSAxKSB8fCAodG1wID09IDB4MDkpKSB7CisJCQkJdHVybl9vZmYgPSB0cnVlOworCQkJCWJyZWFr OworCQkJfSBlbHNlIHsKKwkJCQl1ZGVsYXkoMTApOworCQkJCWlmIChpKysgPiA1KSB7CisJCQkJ CXR1cm5fb2ZmID0gZmFsc2U7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJfQorCQlpZiAo dHVybl9vZmYpIHsKKwkJCS8qIHR1cm4gb2ZmIEJCICovCisJCQlydGw4MTh4X2lvd3JpdGU4KHBy aXYsIFJFR19BRERSMSgweDI0RSksCisJCQkJCXJ0bDgxOHhfaW9yZWFkOChwcml2LCBSRUdfQURE UjEoMHgyNEUpKSB8CisJCQkJCTB4NjApOworCQkJcnRsODE4eF9pb3dyaXRlOChwcml2LCBSRUdf QUREUjEoMHg1NCksIDB4RkMpOworCQkJcnRsODE4eF9pb3dyaXRlMTYocHJpdiwgUkVHX0FERFIy KDB4MzdDKSwgMHgwMEZDKTsKKwkJfQorCQlicmVhazsKKwl9CisJcnRsODE4eF9pb3dyaXRlOChw cml2LCAmcHJpdi0+bWFwLT5DT05GSUczLCBjb25maWczICYgfigweDQwKSk7CisJcnRsODE4eF9p b3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5FRVBST01fQ01ELCBjbWRyZWcgJiB+KDB4QzApKTsK KworCXJldHVybiB0cnVlOworfQorI2VuZGlmCisKKworCitzdGF0aWMgdm9pZCBydGw4MTg3c2Vf c2V0X2FudGVubmFfY29uZmlnKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgdTggZGVmX2FudCwK KwkJCQkJIGJvb2wgdXNlX2RpdmVyKQoreworCXN0cnVjdCBydGw4MTgwX3ByaXYgKnByaXYgPSBk ZXYtPnByaXY7CisKKwlydGw4MjI1X3dyaXRlX3BoeV9jY2soZGV2LCAweDBDLCAweDA5KTsKKwlp ZiAodXNlX2RpdmVyKSB7CisJCWlmIChkZWZfYW50ID09IDEpIHsKKwkJCXJ0bDgxOHhfaW93cml0 ZTgocHJpdiwgJnByaXYtPm1hcC0+VFhfQU5URU5OQSwgMHgwMCk7CisJCQlydGw4MjI1X3dyaXRl X3BoeV9jY2soZGV2LCAweDExLCAweEJCKTsKKwkJCXJ0bDgyMjVfd3JpdGVfcGh5X2NjayhkZXYs IDB4MDEsIDB4QzcpOworCQkJcnRsODIyNV93cml0ZV9waHlfb2ZkbShkZXYsIDB4MEQsIDB4NTQp OworCQkJcnRsODIyNV93cml0ZV9waHlfb2ZkbShkZXYsIDB4MTgsIDB4QjIpOworCQl9IGVsc2Ug eyAvKiBtYWluIGFudGVubmEgKi8KKwkJCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgJnByaXYtPm1h cC0+VFhfQU5URU5OQSwgMHgwMyk7CisJCQlydGw4MjI1X3dyaXRlX3BoeV9jY2soZGV2LCAweDEx LCAweDlCKTsKKwkJCXJ0bDgyMjVfd3JpdGVfcGh5X2NjayhkZXYsIDB4MDEsIDB4QzcpOworCQkJ cnRsODIyNV93cml0ZV9waHlfb2ZkbShkZXYsIDB4MEQsIDB4NUMpOworCQkJcnRsODIyNV93cml0 ZV9waHlfb2ZkbShkZXYsIDB4MTgsIDB4QjIpOworCQl9CisJfSBlbHNlIHsgLyogZGlzYWJsZSBh bnRlbm5hIGRpdmVyc2l0eSAqLworCQlpZiAoZGVmX2FudCA9PSAxKSB7CisJCQlydGw4MTh4X2lv d3JpdGU4KHByaXYsICZwcml2LT5tYXAtPlRYX0FOVEVOTkEsIDB4MDApOworCQkJcnRsODIyNV93 cml0ZV9waHlfY2NrKGRldiwgMHgxMSwgMHhCQik7CisJCQlydGw4MjI1X3dyaXRlX3BoeV9jY2so ZGV2LCAweDAxLCAweDQ3KTsKKwkJCXJ0bDgyMjVfd3JpdGVfcGh5X29mZG0oZGV2LCAweDBELCAw eDU0KTsKKwkJCXJ0bDgyMjVfd3JpdGVfcGh5X29mZG0oZGV2LCAweDE4LCAweDMyKTsKKwkJfSBl bHNlIHsgLyogbWFpbiBhbnRlbm5hICovCisJCQlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2 LT5tYXAtPlRYX0FOVEVOTkEsIDB4MDMpOworCQkJcnRsODIyNV93cml0ZV9waHlfY2NrKGRldiwg MHgxMSwgMHg5Qik7CisJCQlydGw4MjI1X3dyaXRlX3BoeV9jY2soZGV2LCAweDAxLCAweDQ3KTsK KwkJCXJ0bDgyMjVfd3JpdGVfcGh5X29mZG0oZGV2LCAweDBELCAweDVDKTsKKwkJCXJ0bDgyMjVf d3JpdGVfcGh5X29mZG0oZGV2LCAweDE4LCAweDMyKTsKKwkJfQorCX0KKwkvKiBwcml2LT5jdXJy X2FudCA9IGRlZl9hbnQ7ICovCit9CisKKyNpZiAwCitzdGF0aWMgdm9pZCBydGw4MTg3c2VfcG93 ZXJfdHJhY2tpbmcoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2KQoreworCXN0cnVjdCBydGw4MTgw X3ByaXYgKnByaXYgPSBkZXYtPnByaXY7CisJdTggdG1wID0gcnRsODE4eF9pb3JlYWQ4KHByaXYs IFJFR19BRERSMSgweDIzOCkpOworCXU4IGN1cnJlbnRfdGVtcDsKKwlpbnQgaTsKKwljaGFyIGNj a19pZHgsIG9mZG1faWR4OworCisJY3VycmVudF90ZW1wID0gKHRtcCAmIDB4RjApID4+IDQ7CisJ Y3VycmVudF90ZW1wID0gKGN1cnJlbnRfdGVtcCA+IDB4MEMpID8gY3VycmVudF90ZW1wIDogMHgw QzsKKwlpZiAoY3VycmVudF90ZW1wICE9IHByaXYtPnRoZXJtYWxfbWV0ZXJfdmFsKSB7CisJCWZv ciAoaSA9IDE7IGkgPCAxNTsgaSsrKSB7CisJCQljY2tfaWR4ID0gcHJpdi0+Y2hhbm5lbHNbaSAt IDFdLmh3X3ZhbHVlICYgMHhGRjsKKwkJCW9mZG1faWR4ID0gKHByaXYtPmNoYW5uZWxzW2kgLSAx XS5od192YWx1ZSkgPj4gODsKKwkJCWNja19pZHggKz0gKGN1cnJlbnRfdGVtcCAtIHByaXYtPnRo ZXJtYWxfbWV0ZXJfdmFsKSAqIDI7CisJCQlvZmRtX2lkeCArPSAoY3VycmVudF90ZW1wIC0gcHJp di0+dGhlcm1hbF9tZXRlcl92YWwpICogMjsKKwkJCWNja19pZHggPSBjbGFtcCgodTgpY2NrX2lk eCwgKHU4KTAsICh1OCkzNSk7CisJCQlvZmRtX2lkeCA9IGNsYW1wKCh1OClvZmRtX2lkeCwgKHU4 KTAsICh1OCkzNSk7CisJCQlwcml2LT5jaGFubmVsc1tpIC0gMV0uaHdfdmFsdWUgPSBvZmRtX2lk eCA8PCA4IHwgY2NrX2lkeDsKKwkJfQorCQlydGw4MjI1c2VfcmZfc2V0X3R4X3Bvd2VyKGRldiwg cHJpdi0+Y3VyX2NoYW4pOworCX0KKwlwcml2LT50aGVybWFsX21ldGVyX3ZhbCA9IGN1cnJlbnRf dGVtcDsKK30KKworCitzdGF0aWMgdm9pZCBydGw4MTg3c2VfaW5pdF9wb3dlcl90cmFja2luZyhz dHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYpCit7CisJcnRsODE4N3NlX3JmX3dyaXRlcmVnKGRldiwg MHgwMiwgcnRsODE4N3NlX3JmX3JlYWRyZWcoZGV2LCAweDAyKSB8IDIpOworCW1kZWxheSgxKTsK K30KKworI2VuZGlmCisKKworCitzdGF0aWMgdm9pZCBydGw4MTgwX2ludF9lbmFibGUoc3RydWN0 IGllZWU4MDIxMV9odyAqZGV2KQoreworCXN0cnVjdCBydGw4MTgwX3ByaXYgKnByaXYgPSBkZXYt PnByaXY7CisKKwlpZiAocHJpdi0+Y2hpcF9mYW1pbHkgPT0gUlRMODE4WF9DSElQX0ZBTUlMWV9S VEw4MTg3U0UpIHsKKworCQlydGw4MTh4X2lvd3JpdGUzMihwcml2LCAmcHJpdi0+bWFwLT5JTVIs IElNUl9UTUdET0sgfAorCQkJICBJTVJfVEJERVIgfCBJTVJfVEhQREVSIHwKKwkJCSAgSU1SX1RI UERFUiB8IElNUl9USFBET0sgfAorCQkJICBJTVJfVFZPREVSIHwgSU1SX1RWT0RPSyB8CisJCQkg IElNUl9UVklERVIgfCBJTVJfVFZJRE9LIHwKKwkJCSAgSU1SX1RCRURFUiB8IElNUl9UQkVET0sg fAorCQkJICBJTVJfVEJLREVSIHwgSU1SX1RCS0RPSyB8CisJCQkgIElNUl9SRFUgfCBJTVJfUkVS IHwKKwkJCSAgSU1SX1JPSyB8IElNUl9SUU9TT0spOworCX0gZWxzZSB7CisKKwkJcnRsODE4eF9p b3dyaXRlMTYocHJpdiwgJnByaXYtPm1hcC0+SU5UX01BU0ssIDB4RkZGRik7CisJfQorCit9CisK K3N0YXRpYyB2b2lkIHJ0bDgxODBfaW50X2Rpc2FibGUoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2 KQoreworCXN0cnVjdCBydGw4MTgwX3ByaXYgKnByaXYgPSBkZXYtPnByaXY7CisKKwlpZiAocHJp di0+Y2hpcF9mYW1pbHkgPT0gUlRMODE4WF9DSElQX0ZBTUlMWV9SVEw4MTg3U0UpIHsKKwkJcnRs ODE4eF9pb3dyaXRlMzIocHJpdiwgJnByaXYtPm1hcC0+SU1SLCAwKTsKKwl9IGVsc2UgeworCQly dGw4MTh4X2lvd3JpdGUxNihwcml2LCAmcHJpdi0+bWFwLT5JTlRfTUFTSywgMCk7CisJfQorCit9 CisKKworc3RhdGljIHZvaWQgcnRsODE4MF9jb25mX2Jhc2ljX3JhdGVzKHN0cnVjdCBpZWVlODAy MTFfaHcgKmRldiwKKwkJCSAgICB1MzIgcmF0ZXNfbWFzaykKIHsKIAlzdHJ1Y3QgcnRsODE4MF9w cml2ICpwcml2ID0gZGV2LT5wcml2OworCisJdTggbWF4LCBtaW47CiAJdTE2IHJlZzsKIAorCW1h eCA9IGZscyhyYXRlc19tYXNrKTsKKwltaW4gPSBmZnMocmF0ZXNfbWFzayk7CisKKwlzd2l0Y2gg KHByaXYtPmNoaXBfZmFtaWx5KSB7CisKKwljYXNlIFJUTDgxOFhfQ0hJUF9GQU1JTFlfUlRMODE4 MDoKKworCQkvKiBpbiA4MTgwIHRoaXMgaXMgTk9UIGEgQklUTUFQICovCisJCXJlZyA9IHJ0bDgx OHhfaW9yZWFkMTYocHJpdiwgJnByaXYtPm1hcC0+QlJTUik7CisJCXJlZyAmPSB+MzsKKwkJcmVn IHw9IG1heDsKKwkJcnRsODE4eF9pb3dyaXRlMTYocHJpdiwgJnByaXYtPm1hcC0+QlJTUiwgcmVn KTsKKworCQlicmVhazsKKworCWNhc2UgUlRMODE4WF9DSElQX0ZBTUlMWV9SVEw4MTg1OgorCQkv KiBpbiA4MTg1IHRoaXMgaXMgYSBCSVRNQVAgKi8KKwkJcnRsODE4eF9pb3dyaXRlMTYocHJpdiwg JnByaXYtPm1hcC0+QlJTUiwgcmF0ZXNfbWFzayk7CisKKwkJcnRsODE4eF9pb3dyaXRlOChwcml2 LCAmcHJpdi0+bWFwLT5SRVNQX1JBVEUsIChtYXggPDwgNCkgfCBtaW4pOworCQlicmVhazsKKwor CWNhc2UgUlRMODE4WF9DSElQX0ZBTUlMWV9SVEw4MTg3U0U6CisJCS8qIGluIDgxODdzZSB0aGlz IGlzIGEgQklUTUFQICovCisJCXJ0bDgxOHhfaW93cml0ZTE2KHByaXYsICZwcml2LT5tYXAtPkJS U1JfODE4N1NFLCByYXRlc19tYXNrKTsKKworCQlicmVhazsKKworCX0KK30KKworc3RhdGljIHZv aWQgcnRsODE4MF9jb25maWdfY2FyZGJ1cyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYpCit7CisJ c3RydWN0IHJ0bDgxODBfcHJpdiAqcHJpdiA9IGRldi0+cHJpdjsKKwl1MzIgcmVnMzI7CisJdTgg cmVnODsKKworCXJlZzggPSBydGw4MTh4X2lvcmVhZDgocHJpdiwgJnByaXYtPm1hcC0+Q09ORklH Myk7CisJcmVnOCB8PSAxIDw8IDE7CisJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFw LT5DT05GSUczLCByZWc4KTsKKworCWlmIChwcml2LT5jaGlwX2ZhbWlseSA9PSBSVEw4MThYX0NI SVBfRkFNSUxZX1JUTDgxODdTRSkgeworCQlydGw4MTh4X2lvd3JpdGUxNihwcml2LCBGRU1SX1NF LCAweGZmZmYpOworCX0gZWxzZSB7CisJCXJlZzMyID0gcnRsODE4eF9pb3JlYWQzMihwcml2LCAm cHJpdi0+bWFwLT5GRU1SKTsKKwkJCXJlZzMyIHw9ICgxIDw8IDE1KSB8ICgxIDw8IDE0KSB8ICgx IDw8IDQpOworCQlydGw4MTh4X2lvd3JpdGUzMihwcml2LCAmcHJpdi0+bWFwLT5GRU1SLCByZWcz Mik7CisJfQorCit9CisKK3N0YXRpYyBpbnQgcnRsODE4MF9pbml0X2h3KHN0cnVjdCBpZWVlODAy MTFfaHcgKmRldikKK3sKKwlzdHJ1Y3QgcnRsODE4MF9wcml2ICpwcml2ID0gZGV2LT5wcml2Owor CisJdTggcmVnODsKKwl1MzIgcmVnMzI7CisKIAlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2 LT5tYXAtPkNNRCwgMCk7CiAJcnRsODE4eF9pb3JlYWQ4KHByaXYsICZwcml2LT5tYXAtPkNNRCk7 CiAJbXNsZWVwKDEwKTsKIAogCS8qIHJlc2V0ICovCi0JcnRsODE4eF9pb3dyaXRlMTYocHJpdiwg JnByaXYtPm1hcC0+SU5UX01BU0ssIDApOworCXJ0bDgxODBfaW50X2Rpc2FibGUoZGV2KTsKKwog CXJ0bDgxOHhfaW9yZWFkOChwcml2LCAmcHJpdi0+bWFwLT5DTUQpOwogCi0JcmVnID0gcnRsODE4 eF9pb3JlYWQ4KHByaXYsICZwcml2LT5tYXAtPkNNRCk7Ci0JcmVnICY9ICgxIDw8IDEpOwotCXJl ZyB8PSBSVEw4MThYX0NNRF9SRVNFVDsKKwlyZWc4ID0gcnRsODE4eF9pb3JlYWQ4KHByaXYsICZw cml2LT5tYXAtPkNNRCk7CisJcmVnOCAmPSAoMSA8PCAxKTsKKwlyZWc4IHw9IFJUTDgxOFhfQ01E X1JFU0VUOwogCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgJnByaXYtPm1hcC0+Q01ELCBSVEw4MThY X0NNRF9SRVNFVCk7CiAJcnRsODE4eF9pb3JlYWQ4KHByaXYsICZwcml2LT5tYXAtPkNNRCk7CiAJ bXNsZWVwKDIwMCk7CkBAIC0zNzQsNzggKzEwNTcsMTYxIEBAIHN0YXRpYyBpbnQgcnRsODE4MF9p bml0X2h3KHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldikKIAltc2xlZXAoMjAwKTsKIAogCWlmIChy dGw4MTh4X2lvcmVhZDgocHJpdiwgJnByaXYtPm1hcC0+Q09ORklHMykgJiAoMSA8PCAzKSkgewot CQkvKiBGb3IgY2FyZGJ1cyAqLwotCQlyZWcgPSBydGw4MTh4X2lvcmVhZDgocHJpdiwgJnByaXYt Pm1hcC0+Q09ORklHMyk7Ci0JCXJlZyB8PSAxIDw8IDE7Ci0JCXJ0bDgxOHhfaW93cml0ZTgocHJp diwgJnByaXYtPm1hcC0+Q09ORklHMywgcmVnKTsKLQkJcmVnID0gcnRsODE4eF9pb3JlYWQxNihw cml2LCAmcHJpdi0+bWFwLT5GRU1SKTsKLQkJcmVnIHw9ICgxIDw8IDE1KSB8ICgxIDw8IDE0KSB8 ICgxIDw8IDQpOwotCQlydGw4MTh4X2lvd3JpdGUxNihwcml2LCAmcHJpdi0+bWFwLT5GRU1SLCBy ZWcpOworCQlydGw4MTgwX2NvbmZpZ19jYXJkYnVzKGRldik7CiAJfQogCi0JcnRsODE4eF9pb3dy aXRlOChwcml2LCAmcHJpdi0+bWFwLT5NU1IsIDApOworCWlmIChwcml2LT5jaGlwX2ZhbWlseSA9 PSBSVEw4MThYX0NISVBfRkFNSUxZX1JUTDgxODdTRSkgeworCQlydGw4MTh4X2lvd3JpdGU4KHBy aXYsICZwcml2LT5tYXAtPk1TUiwgUlRMODE4WF9NU1JfRU5FRENBKTsKKwl9IGVsc2UgeworCQly dGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPk1TUiwgMCk7CisJfQorCisJaWYgKHBy aXYtPmNoaXBfZmFtaWx5ID09IFJUTDgxOFhfQ0hJUF9GQU1JTFlfUlRMODE4MCkKKwkJcnRsODE4 MF9zZXRfYW5hcGFyYW0ocHJpdiwgcHJpdi0+YW5hcGFyYW0pOworCisJLyogVE9ETzogbmVjZXNz YXJ5PyBzcGVjcyBpbmRpY2F0ZSBub3QgKi8KKwlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2 LT5tYXAtPkVFUFJPTV9DTUQsCisJCQkgUlRMODE4WF9FRVBST01fQ01EX0NPTkZJRyk7CisKKwly ZWc4ID0gcnRsODE4eF9pb3JlYWQ4KHByaXYsICZwcml2LT5tYXAtPkNPTkZJRzIpOworCXJ0bDgx OHhfaW93cml0ZTgocHJpdiwgJnByaXYtPm1hcC0+Q09ORklHMiwKKwkJCSByZWc4ICYgfigxIDw8 IDMpKTsKKworCWlmIChwcml2LT5jaGlwX2ZhbWlseSA9PSBSVEw4MThYX0NISVBfRkFNSUxZX1JU TDgxODUpIHsKKwkJcmVnOCA9IHJ0bDgxOHhfaW9yZWFkOChwcml2LCAmcHJpdi0+bWFwLT5DT05G SUcyKTsKKwkJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5DT05GSUcyLAorCQkJ CSByZWc4IHwgKDEgPDwgNCkpOworCX0KKworCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgJnByaXYt Pm1hcC0+RUVQUk9NX0NNRCwKKwkJCSBSVEw4MThYX0VFUFJPTV9DTURfTk9STUFMKTsKKworCS8q IFRPRE86IHNldCBDT05GSUc1IGZvciBjYWxpYnJhdGluZyBBR0Mgb24gcnRsODE4MCArIHBoaWxp cHMgcmFkaW8/ICovCisKKwkvKiBUT0RPOiB0dXJuIG9mZiBodyB3ZXAgb24gcnRsODE4MCAqLwor CisJcnRsODE4eF9pb3dyaXRlMzIocHJpdiwgJnByaXYtPm1hcC0+SU5UX1RJTUVPVVQsIDApOwor CisJLyogZGVmYXVsdCBiYXNpYyByYXRlcyBhcmUgMSwyLDYsOSwxMiwxOCwyNCBNYnBzCisJICog Yml0bWFzayA9IDB4MDFmMworCSAqLworCXJ0bDgxODBfY29uZl9iYXNpY19yYXRlcyhkZXYsIDB4 MWYzKTsKKworCWlmIChwcml2LT5jaGlwX2ZhbWlseSAhPSBSVEw4MThYX0NISVBfRkFNSUxZX1JU TDgxODApIHsKKwkJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5XUEFfQ09ORiwg MCk7CisKKwkJLyogQXV0byByYXRlIGZhbGxiYWNrIGNvbnRyb2wgKi8KKwkJcmVnOCA9IHJ0bDgx OHhfaW9yZWFkOChwcml2LCAmcHJpdi0+bWFwLT5SQVRFX0ZBTExCQUNLKSAmIDB4N0M7CisJCXJl ZzggfD0gUlRMODE4WF9SQVRFX0ZBTExCQUNLX0VOQUJMRSB8CisJCQlSVEw4MThYX1JBVEVfRkFM TEJBQ0tfQVVUT19TVEVQMTsKKwkJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5S QVRFX0ZBTExCQUNLLCByZWc4KTsKKworCX0gZWxzZSB7CisKKwkJcnRsODE4eF9pb3dyaXRlOChw cml2LCAmcHJpdi0+bWFwLT5TRUNVUklUWSwgMCk7CisKKwkJcnRsODE4eF9pb3dyaXRlOChwcml2 LCAmcHJpdi0+bWFwLT5QSFlfREVMQVksIDB4Nik7CisJCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwg JnByaXYtPm1hcC0+Q0FSUklFUl9TRU5TRV9DT1VOVEVSLCAweDRDKTsKKwl9CisKKwlpZiAocHJp di0+Y2hpcF9mYW1pbHkgPT0gUlRMODE4WF9DSElQX0ZBTUlMWV9SVEw4MTg1KSB7CisKKwkJcmVn OCA9IHJ0bDgxOHhfaW9yZWFkOChwcml2LCAmcHJpdi0+bWFwLT5HUF9FTkFCTEUpOworCQlydGw4 MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPkdQX0VOQUJMRSwgcmVnOCAmIH4oMSA8PCA2 KSk7CisJfQorCisKKwlpZiAocHJpdi0+Y2hpcF9mYW1pbHkgPT0gUlRMODE4WF9DSElQX0ZBTUlM WV9SVEw4MTg3U0UpIHsKKworCQkvKiB0aGUgc2V0IGF1dG8gcmF0ZSBmYWxsYmFjayBiaXRtYXNr IGZyb20gMU0gdG8gNTQgTWIvcyAqLworCQlydGw4MTh4X2lvd3JpdGUxNihwcml2LCBBUkZSLCAw eEZGRik7CisJCXJ0bDgxOHhfaW9yZWFkMTYocHJpdiwgQVJGUik7CisKKwkJcnRsODE4eF9pb3dy aXRlMTYocHJpdiwgRkVNUl9TRSwgMHhGRkZGKTsKKwkJcnRsODE4eF9pb3JlYWQxNihwcml2LCBG RU1SX1NFKTsKKworCQkvKiBzdG9wIHVudXNlZCBxdWV1cyAobm8gZG1hIGFsbG9jKSAqLworCQly dGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPlRQUE9MTF9TVE9QLAorCQkJICAgICAg IFJUTDgxOHhfVFBQT0xMX1NUT1BfTUcgfCBSVEw4MTh4X1RQUE9MTF9TVE9QX0hJKTsKKworCQly dGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPkFDTV9DT05UUk9MLCAweDAwKTsKKwkJ cnRsODE4eF9pb3dyaXRlMTYocHJpdiwgJnByaXYtPm1hcC0+VElEX0FDX01BUCwgMHhGQTUwKTsK KworCQlydGw4MTh4X2lvd3JpdGUxNihwcml2LCAmcHJpdi0+bWFwLT5JTlRfTUlHLCAwKTsKKwor CQkvKiBzb21lIGJsYWNrIG1hZ2ljIGhlcmUuLiAqLworCQlydGw4MTg3c2VfbWFjX2NvbmZpZyhk ZXYpOworCisJCXJ0bDgxOHhfaW93cml0ZTE2KHByaXYsIFJGU1dfQ1RSTCwgMHg1NjlBKTsKKwkJ cnRsODE4eF9pb3JlYWQxNihwcml2LCBSRlNXX0NUUkwpOwogCi0JaWYgKCFwcml2LT5yODE4NSkK LQkJcnRsODE4MF9zZXRfYW5hcGFyYW0ocHJpdiwgcHJpdi0+YW5hcGFyYW0pOworCQlydGw4MTgw X3NldF9hbmFwYXJhbShwcml2LCBSVEw4MjI1U0VfQU5BUEFSQU1fT04pOworCQlydGw4MTgwX3Nl dF9hbmFwYXJhbTIocHJpdiwgUlRMODIyNVNFX0FOQVBBUkFNMl9PTik7CisJCXJ0bDgxODBfc2V0 X2FuYXBhcmFtMyhwcml2LCBSVEw4MjI1U0VfQU5BUEFSQU0zKTsKIAotCXJ0bDgxOHhfaW93cml0 ZTMyKHByaXYsICZwcml2LT5tYXAtPlJEU0FSLCBwcml2LT5yeF9yaW5nX2RtYSk7Ci0JcnRsODE4 eF9pb3dyaXRlMzIocHJpdiwgJnByaXYtPm1hcC0+VEJEQSwgcHJpdi0+dHhfcmluZ1szXS5kbWEp OwotCXJ0bDgxOHhfaW93cml0ZTMyKHByaXYsICZwcml2LT5tYXAtPlRIUERBLCBwcml2LT50eF9y aW5nWzJdLmRtYSk7Ci0JcnRsODE4eF9pb3dyaXRlMzIocHJpdiwgJnByaXYtPm1hcC0+VE5QREEs IHByaXYtPnR4X3JpbmdbMV0uZG1hKTsKLQlydGw4MTh4X2lvd3JpdGUzMihwcml2LCAmcHJpdi0+ bWFwLT5UTFBEQSwgcHJpdi0+dHhfcmluZ1swXS5kbWEpOwogCi0JLyogVE9ETzogbmVjZXNzYXJ5 PyBzcGVjcyBpbmRpY2F0ZSBub3QgKi8KLQlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5t YXAtPkVFUFJPTV9DTUQsIFJUTDgxOFhfRUVQUk9NX0NNRF9DT05GSUcpOwotCXJlZyA9IHJ0bDgx OHhfaW9yZWFkOChwcml2LCAmcHJpdi0+bWFwLT5DT05GSUcyKTsKLQlydGw4MTh4X2lvd3JpdGU4 KHByaXYsICZwcml2LT5tYXAtPkNPTkZJRzIsIHJlZyAmIH4oMSA8PCAzKSk7Ci0JaWYgKHByaXYt PnI4MTg1KSB7Ci0JCXJlZyA9IHJ0bDgxOHhfaW9yZWFkOChwcml2LCAmcHJpdi0+bWFwLT5DT05G SUcyKTsKLQkJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5DT05GSUcyLCByZWcg fCAoMSA8PCA0KSk7Ci0JfQotCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgJnByaXYtPm1hcC0+RUVQ Uk9NX0NNRCwgUlRMODE4WF9FRVBST01fQ01EX05PUk1BTCk7CisJCXJ0bDgxOHhfaW93cml0ZTgo cHJpdiwgJnByaXYtPm1hcC0+Q09ORklHNSwKKwkJCSAgICBydGw4MTh4X2lvcmVhZDgocHJpdiwg JnByaXYtPm1hcC0+Q09ORklHNSkgJiAweDdGKTsKIAotCS8qIFRPRE86IHNldCBDT05GSUc1IGZv ciBjYWxpYnJhdGluZyBBR0Mgb24gcnRsODE4MCArIHBoaWxpcHMgcmFkaW8/ICovCisJCS8qcHJv YmFibHkgdGhpcyBzd2l0Y2ggbGVkIG9uICovCisJCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgJnBy aXYtPm1hcC0+UEdTRUxFQ1QsCisJCQkgICAgcnRsODE4eF9pb3JlYWQ4KHByaXYsICZwcml2LT5t YXAtPlBHU0VMRUNUKSB8IDB4MDgpOwogCi0JLyogVE9ETzogdHVybiBvZmYgaHcgd2VwIG9uIHJ0 bDgxODAgKi8KKwkJcnRsODE4eF9pb3dyaXRlMTYocHJpdiwgJnByaXYtPm1hcC0+UkZQaW5zT3V0 cHV0LCAweDA0ODApOworCQlydGw4MTh4X2lvd3JpdGUxNihwcml2LCAmcHJpdi0+bWFwLT5SRlBp bnNFbmFibGUsIDB4MUJGRik7CisJCXJ0bDgxOHhfaW93cml0ZTE2KHByaXYsICZwcml2LT5tYXAt PlJGUGluc1NlbGVjdCwgMHgyNDg4KTsKIAotCXJ0bDgxOHhfaW93cml0ZTMyKHByaXYsICZwcml2 LT5tYXAtPklOVF9USU1FT1VULCAwKTsKKwkJcnRsODE4eF9pb3dyaXRlMzIocHJpdiwgJnByaXYt Pm1hcC0+UkZfVElNSU5HLCAweDQwMDMpOwogCi0JaWYgKHByaXYtPnI4MTg1KSB7Ci0JCXJ0bDgx OHhfaW93cml0ZTgocHJpdiwgJnByaXYtPm1hcC0+V1BBX0NPTkYsIDApOwotCQlydGw4MTh4X2lv d3JpdGU4KHByaXYsICZwcml2LT5tYXAtPlJBVEVfRkFMTEJBQ0ssIDB4ODEpOwotCQlydGw4MTh4 X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPlJFU1BfUkFURSwgKDggPDwgNCkgfCAwKTsKLQot CQlydGw4MTh4X2lvd3JpdGUxNihwcml2LCAmcHJpdi0+bWFwLT5CUlNSLCAweDAxRjMpOwotCi0J CS8qIFRPRE86IHNldCBDbGtSdW4gZW5hYmxlPyBuZWNlc3Nhcnk/ICovCi0JCXJlZyA9IHJ0bDgx OHhfaW9yZWFkOChwcml2LCAmcHJpdi0+bWFwLT5HUF9FTkFCTEUpOwotCQlydGw4MTh4X2lvd3Jp dGU4KHByaXYsICZwcml2LT5tYXAtPkdQX0VOQUJMRSwgcmVnICYgfigxIDw8IDYpKTsKLQkJcnRs ODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5FRVBST01fQ01ELCBSVEw4MThYX0VFUFJP TV9DTURfQ09ORklHKTsKLQkJcmVnID0gcnRsODE4eF9pb3JlYWQ4KHByaXYsICZwcml2LT5tYXAt PkNPTkZJRzMpOwotCQlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPkNPTkZJRzMs IHJlZyB8ICgxIDw8IDIpKTsKLQkJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5F RVBST01fQ01ELCBSVEw4MThYX0VFUFJPTV9DTURfTk9STUFMKTsKLQl9IGVsc2UgewotCQlydGw4 MTh4X2lvd3JpdGUxNihwcml2LCAmcHJpdi0+bWFwLT5CUlNSLCAweDEpOwotCQlydGw4MTh4X2lv d3JpdGU4KHByaXYsICZwcml2LT5tYXAtPlNFQ1VSSVRZLCAwKTsKKwkJLyogdGhlIHJlZmVyZW5j ZSBjb2RlIG1hYyBoYXJkY29kZSB0YWJsZSB3cml0ZQorCQkgKiB0aGlzIHJlZyBieSBkb2luZyBi eXRlLXdpZGUgYWNjZXNzZXMuCisJCSAqIEl0IGRvZXMgaXQganVzdCBmb3IgbG93ZXN0IGFuZCBo aWdoZXN0IGJ5dGUuLgorCQkgKi8KKwkJcmVnMzIgPSBydGw4MTh4X2lvcmVhZDMyKHByaXYsICZw cml2LT5tYXAtPlJGX1BBUkEpOworCQlyZWczMiAmPSAweDAwZmZmZjAwOworCQlyZWczMiB8PSAw eGI4MDAwMDU0OworCQlydGw4MTh4X2lvd3JpdGUzMihwcml2LCAmcHJpdi0+bWFwLT5SRl9QQVJB LCByZWczMik7CiAKLQkJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5QSFlfREVM QVksIDB4Nik7Ci0JCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgJnByaXYtPm1hcC0+Q0FSUklFUl9T RU5TRV9DT1VOVEVSLCAweDRDKTsKKwkJcHJpdi0+cmZfcHJvZ190eXBlID0gcnRsODE4eF9pb3Jl YWQ4KHByaXYsCisJCQkJCQkgICAgJnByaXYtPm1hcC0+Q09ORklHNCkgJiAweDAzOwogCX0KIAog CXByaXYtPnJmLT5pbml0KGRldik7Ci0JaWYgKHByaXYtPnI4MTg1KQotCQlydGw4MTh4X2lvd3Jp dGUxNihwcml2LCAmcHJpdi0+bWFwLT5CUlNSLCAweDAxRjMpOworCisJLyogVE9ETzogZml4IHRo aXMgYmxvY2sgKi8KKwlpZiAocHJpdi0+Y2hpcF9mYW1pbHkgPT0gUlRMODE4WF9DSElQX0ZBTUlM WV9SVEw4MTg3U0UpIHsKKworCQlydGw4MTg3c2Vfc2V0X2FudGVubmFfY29uZmlnKGRldiwKKwkJ CQkJICAgICBwcml2LT5hbnRlbm5hX2RpdmVyc2l0eV9kZWZhdWx0LAorCQkJCQkgICAgIHByaXYt PmFudGVubmFfZGl2ZXJzaXR5X2VuKTsKKworCQkvKiB0b2RvIHBvd2VyIHRyYWNraW5nICovCisj aWYgMAorCQlpZiAocHJpdi0+dGhlcm1hbF9tZXRlcl9lbikKKwkJCXJ0bDgxODdzZV9pbml0X3Bv d2VyX3RyYWNraW5nKGRldik7CisjZW5kaWYKKwl9CisKIAlyZXR1cm4gMDsKIH0KIAorCisKKwog c3RhdGljIGludCBydGw4MTgwX2luaXRfcnhfcmluZyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYp CiB7CiAJc3RydWN0IHJ0bDgxODBfcHJpdiAqcHJpdiA9IGRldi0+cHJpdjsKLQlzdHJ1Y3QgcnRs ODE4MF9yeF9kZXNjICplbnRyeTsKKwlzdHJ1Y3QgcnRsODE4eF9yeF9jbWRfZGVzYyAqZW50cnk7 CisJaW50IGRtYV9tYXBfZmFpbF9jb3VudCA9IDA7CiAJaW50IGk7CiAKKwlpZiAocHJpdi0+Y2hp cF9mYW1pbHkgPT0gUlRMODE4WF9DSElQX0ZBTUlMWV9SVEw4MTg3U0UpCisJCXByaXYtPnJ4X3Jp bmdfc3ogPSBzaXplb2Yoc3RydWN0IHJ0bDgxODdzZV9yeF9kZXNjKTsKKwllbHNlCisJCXByaXYt PnJ4X3Jpbmdfc3ogPSBzaXplb2Yoc3RydWN0IHJ0bDgxODBfcnhfZGVzYyk7CisKIAlwcml2LT5y eF9yaW5nID0gcGNpX2FsbG9jX2NvbnNpc3RlbnQocHJpdi0+cGRldiwKLQkJCQkJICAgICBzaXpl b2YoKnByaXYtPnJ4X3JpbmcpICogMzIsCisJCQkJCSAgICAgcHJpdi0+cnhfcmluZ19zeiAqIDMy LAogCQkJCQkgICAgICZwcml2LT5yeF9yaW5nX2RtYSk7CiAKIAlpZiAoIXByaXYtPnJ4X3Jpbmcg fHwgKHVuc2lnbmVkIGxvbmcpcHJpdi0+cnhfcmluZyAmIDB4RkYpIHsKQEAgLTQ1MywyNSArMTIx OSw0MSBAQCBzdGF0aWMgaW50IHJ0bDgxODBfaW5pdF9yeF9yaW5nKHN0cnVjdCBpZWVlODAyMTFf aHcgKmRldikKIAkJcmV0dXJuIC1FTk9NRU07CiAJfQogCi0JbWVtc2V0KHByaXYtPnJ4X3Jpbmcs IDAsIHNpemVvZigqcHJpdi0+cnhfcmluZykgKiAzMik7CisJbWVtc2V0KHByaXYtPnJ4X3Jpbmcs IDAsIHByaXYtPnJ4X3Jpbmdfc3ogKiAzMik7CiAJcHJpdi0+cnhfaWR4ID0gMDsKIAogCWZvciAo aSA9IDA7IGkgPCAzMjsgaSsrKSB7CiAJCXN0cnVjdCBza19idWZmICpza2IgPSBkZXZfYWxsb2Nf c2tiKE1BWF9SWF9TSVpFKTsKIAkJZG1hX2FkZHJfdCAqbWFwcGluZzsKLQkJZW50cnkgPSAmcHJp di0+cnhfcmluZ1tpXTsKLQkJaWYgKCFza2IpCi0JCQlyZXR1cm4gMDsKLQorCQllbnRyeSA9IHBy aXYtPnJ4X3JpbmcgKyBwcml2LT5yeF9yaW5nX3N6Kmk7CisJCWlmICghc2tiKSB7CisJCQl3aXBo eV9lcnIoZGV2LT53aXBoeSwgIkNhbm5vdCBhbGxvY2F0ZSBSWCBza2JcbiIpOworCQkJcmV0dXJu IC1FTk9NRU07CisJCX0KIAkJcHJpdi0+cnhfYnVmW2ldID0gc2tiOwogCQltYXBwaW5nID0gKGRt YV9hZGRyX3QgKilza2ItPmNiOwogCQkqbWFwcGluZyA9IHBjaV9tYXBfc2luZ2xlKHByaXYtPnBk ZXYsIHNrYl90YWlsX3BvaW50ZXIoc2tiKSwKIAkJCQkJICBNQVhfUlhfU0laRSwgUENJX0RNQV9G Uk9NREVWSUNFKTsKKworCQlpZiAocGNpX2RtYV9tYXBwaW5nX2Vycm9yKHByaXYtPnBkZXYsICpt YXBwaW5nKSkgeworCQkJa2ZyZWVfc2tiKHNrYik7CisJCQlpZiAoZG1hX21hcF9mYWlsX2NvdW50 KysgPiAzMikgeworCQkJCXdpcGh5X2VycihkZXYtPndpcGh5LCAiQ2Fubm90IG1hcCBSWCBza2Jc biIpOworCQkJCXJldHVybiAtRU5PTUVNOworCQkJfQorCisJCQlpLS07CisJCQl3aXBoeV9lcnIo ZGV2LT53aXBoeSwgIldhcm4gcmV0cnkgYWxsb2NcbiIpOworCQkJY29udGludWU7CisJCX0KKwor CiAJCWVudHJ5LT5yeF9idWYgPSBjcHVfdG9fbGUzMigqbWFwcGluZyk7CiAJCWVudHJ5LT5mbGFn cyA9IGNwdV90b19sZTMyKFJUTDgxOFhfUlhfREVTQ19GTEFHX09XTiB8CiAJCQkJCSAgIE1BWF9S WF9TSVpFKTsKIAl9CiAJZW50cnktPmZsYWdzIHw9IGNwdV90b19sZTMyKFJUTDgxOFhfUlhfREVT Q19GTEFHX0VPUik7CisKIAlyZXR1cm4gMDsKIH0KIApAQCAtNDkxLDcgKzEyNzMsNyBAQCBzdGF0 aWMgdm9pZCBydGw4MTgwX2ZyZWVfcnhfcmluZyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYpCiAJ CWtmcmVlX3NrYihza2IpOwogCX0KIAotCXBjaV9mcmVlX2NvbnNpc3RlbnQocHJpdi0+cGRldiwg c2l6ZW9mKCpwcml2LT5yeF9yaW5nKSAqIDMyLAorCXBjaV9mcmVlX2NvbnNpc3RlbnQocHJpdi0+ cGRldiwgcHJpdi0+cnhfcmluZ19zeiAqIDMyLAogCQkJICAgIHByaXYtPnJ4X3JpbmcsIHByaXYt PnJ4X3JpbmdfZG1hKTsKIAlwcml2LT5yeF9yaW5nID0gTlVMTDsKIH0KQEAgLTU1NSwzMSArMTMz Nyw4NiBAQCBzdGF0aWMgaW50IHJ0bDgxODBfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2 KQogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQor CWZvciAoaSA9IDA7IGkgPCBSVEw4MThYX05SX1RYX1FVRVVFUzsgaSsrKQogCQlpZiAoKHJldCA9 IHJ0bDgxODBfaW5pdF90eF9yaW5nKGRldiwgaSwgMTYpKSkKIAkJCWdvdG8gZXJyX2ZyZWVfcmlu Z3M7CiAKKyNpZmRlZiBERUJVR19QWV9UT09MCisJZm9yIChpID0gMDsgaSA8IFJUTDgxOFhfTlJf VFhfUVVFVUVTOyBpKyspIHsKKwkJcHJpbnRrKCJyaW5nIHByaW8gJWQgLS0gdmlydDogMHglbHgs IERNQTogMHglbHgsIGlkeDogMHglbHhcbiIsIGksCisJCSAgICAgICAodW5zaWduZWQgbG9uZykg cHJpdi0+dHhfcmluZ1tpXS5kZXNjLAorCQkgICAgICAgKHVuc2lnbmVkIGxvbmcpIHByaXYtPnR4 X3JpbmdbaV0uZG1hLAorCQkgICAgICAgKHVuc2lnbmVkIGxvbmcpICZwcml2LT50eF9yaW5nW2ld LmlkeCk7CisJfQorI2VuZGlmCisKIAlyZXQgPSBydGw4MTgwX2luaXRfaHcoZGV2KTsKIAlpZiAo cmV0KQogCQlnb3RvIGVycl9mcmVlX3JpbmdzOwogCiAJcnRsODE4eF9pb3dyaXRlMzIocHJpdiwg JnByaXYtPm1hcC0+UkRTQVIsIHByaXYtPnJ4X3JpbmdfZG1hKTsKLQlydGw4MTh4X2lvd3JpdGUz Mihwcml2LCAmcHJpdi0+bWFwLT5UQkRBLCBwcml2LT50eF9yaW5nWzNdLmRtYSk7Ci0JcnRsODE4 eF9pb3dyaXRlMzIocHJpdiwgJnByaXYtPm1hcC0+VEhQREEsIHByaXYtPnR4X3JpbmdbMl0uZG1h KTsKLQlydGw4MTh4X2lvd3JpdGUzMihwcml2LCAmcHJpdi0+bWFwLT5UTlBEQSwgcHJpdi0+dHhf cmluZ1sxXS5kbWEpOwotCXJ0bDgxOHhfaW93cml0ZTMyKHByaXYsICZwcml2LT5tYXAtPlRMUERB LCBwcml2LT50eF9yaW5nWzBdLmRtYSk7CiAKLQlyZXQgPSByZXF1ZXN0X2lycShwcml2LT5wZGV2 LT5pcnEsIHJ0bDgxODBfaW50ZXJydXB0LAorCisKKwkvKiBtYWM4MDIxMSBxdWV1ZSBoYXZlIGhp Z2hlciBwcmlvIGZvciBsb3dlciBpbmRleC4gVGhlIGxhc3QgcXVldWUKKwkgKiAodGhhdCBtYWM4 MDIxMSBpcyBub3QgYXdhcmUgb2YpIGlzIHJlc2VydmVkIGZvciBiZWFjb25zIChhbmQgaGF2ZQor CSAqIHRoZSBoaWdoZXN0IHByaW9yaXR5IG9uIHRoZSBOSUMpCisJICovCisJaWYgKHByaXYtPmNo aXBfZmFtaWx5ICE9IFJUTDgxOFhfQ0hJUF9GQU1JTFlfUlRMODE4N1NFKSB7CisJCXJ0bDgxOHhf aW93cml0ZTMyKHByaXYsICZwcml2LT5tYXAtPlRCREEsIHByaXYtPnR4X3JpbmdbMV0uZG1hKTsK KwkJLyoKKwkJbm90IHVzZWQKKwkJcnRsODE4eF9pb3dyaXRlMzIocHJpdiwgJnByaXYtPm1hcC0+ VEhQREEsIHByaXYtPnR4X3JpbmdbMF0uZG1hKTsKKwkJcnRsODE4eF9pb3dyaXRlMzIocHJpdiwg JnByaXYtPm1hcC0+VE5QREEsIHByaXYtPnR4X3JpbmdbMV0uZG1hKTsKKwkJKi8KKwkJcnRsODE4 eF9pb3dyaXRlMzIocHJpdiwgJnByaXYtPm1hcC0+VExQREEsIHByaXYtPnR4X3JpbmdbMF0uZG1h KTsKKwl9IGVsc2UgeworCQlydGw4MTh4X2lvd3JpdGUzMihwcml2LCAmcHJpdi0+bWFwLT5UQkRB LCBwcml2LT50eF9yaW5nWzRdLmRtYSk7CisJCS8qCisJCW5vdCB1c2VkCisJCXJ0bDgxOHhfaW93 cml0ZTMyKHByaXYsJnByaXYtPm1hcC0+VE1HREEsIHByaXYtPnR4X3JpbmdbMF0uZG1hKTsKKwkJ cnRsODE4eF9pb3dyaXRlMzIocHJpdiwmcHJpdi0+bWFwLT5USFBEQSwgcHJpdi0+dHhfcmluZ1sx XS5kbWEpOworCQkqLworCQlydGw4MTh4X2lvd3JpdGUzMihwcml2LCAmcHJpdi0+bWFwLT5UVk9E QSwgcHJpdi0+dHhfcmluZ1swXS5kbWEpOworCQlydGw4MTh4X2lvd3JpdGUzMihwcml2LCAmcHJp di0+bWFwLT5UVklEQSwgcHJpdi0+dHhfcmluZ1sxXS5kbWEpOworCQlydGw4MTh4X2lvd3JpdGUz Mihwcml2LCAmcHJpdi0+bWFwLT5UQkVEQSwgcHJpdi0+dHhfcmluZ1syXS5kbWEpOworCQlydGw4 MTh4X2lvd3JpdGUzMihwcml2LCAmcHJpdi0+bWFwLT5UQktEQSwgcHJpdi0+dHhfcmluZ1szXS5k bWEpOworCisJfQorCisjaWYgMAorCXByaW50aygicmVnIFRCREEgYWRyICV4XG4iLCAmcHJpdi0+ bWFwLT5UQkRBKTsKKwlwcmludGsoInJlZyBUTUdEQSBhZHIgJXhcbiIsICZwcml2LT5tYXAtPlRN R0RBKTsKKwlwcmludGsoInJlZyBUSFBEQSBhZHIgJXhcbiIsICZwcml2LT5tYXAtPlRIUERBKTsK KwlwcmludGsoInJlZyBUVklEQSBhZHIgJXhcbiIsICZwcml2LT5tYXAtPlRWSURBKTsKKwlwcmlu dGsoInJlZyBUVk9EQSBhZHIgJXhcbiIsICZwcml2LT5tYXAtPlRWT0RBKTsKKwlwcmludGsoInJl ZyBUQkVEQSBhZHIgJXhcbiIsICZwcml2LT5tYXAtPlRCRURBKTsKKwlwcmludGsoInJlZyBUQktE QSBhZHIgJXhcbiIsICZwcml2LT5tYXAtPlRCS0RBKTsKKyNlbmRpZgorCisJaWYgKHByaXYtPmNo aXBfZmFtaWx5ID09IFJUTDgxOFhfQ0hJUF9GQU1JTFlfUlRMODE4N1NFKSB7CisJCXJldCA9IHJl cXVlc3RfaXJxKHByaXYtPnBkZXYtPmlycSwgcnRsODE4N3NlX2ludGVycnVwdCwKIAkJCSAgSVJR Rl9TSEFSRUQsIEtCVUlMRF9NT0ROQU1FLCBkZXYpOworCX0gZWxzZSB7CisKKwkJcmV0ID0gcmVx dWVzdF9pcnEocHJpdi0+cGRldi0+aXJxLCBydGw4MTgwX2ludGVycnVwdCwKKwkJCSAgSVJRRl9T SEFSRUQsIEtCVUlMRF9NT0ROQU1FLCBkZXYpOworCX0KKwogCWlmIChyZXQpIHsKIAkJd2lwaHlf ZXJyKGRldi0+d2lwaHksICJmYWlsZWQgdG8gcmVnaXN0ZXIgSVJRIGhhbmRsZXJcbiIpOwogCQln b3RvIGVycl9mcmVlX3JpbmdzOwogCX0KIAotCXJ0bDgxOHhfaW93cml0ZTE2KHByaXYsICZwcml2 LT5tYXAtPklOVF9NQVNLLCAweEZGRkYpOworCXJ0bDgxODBfaW50X2VuYWJsZShkZXYpOwogCi0J cnRsODE4eF9pb3dyaXRlMzIocHJpdiwgJnByaXYtPm1hcC0+TUFSWzBdLCB+MCk7Ci0JcnRsODE4 eF9pb3dyaXRlMzIocHJpdiwgJnByaXYtPm1hcC0+TUFSWzFdLCB+MCk7CisJLyogaW4gcnRsODE4 N3NlIGF0IE1BUiByZWdzIG9mZnNldCB0aGVyZSBpcyB0aGUgbWFuYWdlbWVudAorCSAqIFRYIGRl c2NyaXB0b3IgRE1BIGFkZHJlcy4uCisJICovCisJaWYgKHByaXYtPmNoaXBfZmFtaWx5ICE9IFJU TDgxOFhfQ0hJUF9GQU1JTFlfUlRMODE4N1NFKSB7CisJCXJ0bDgxOHhfaW93cml0ZTMyKHByaXYs ICZwcml2LT5tYXAtPk1BUlswXSwgfjApOworCQlydGw4MTh4X2lvd3JpdGUzMihwcml2LCAmcHJp di0+bWFwLT5NQVJbMV0sIH4wKTsKKwl9CiAKIAlyZWcgPSBSVEw4MThYX1JYX0NPTkZfT05MWUVS TFBLVCB8CiAJICAgICAgUlRMODE4WF9SWF9DT05GX1JYX0FVVE9SRVNFVFBIWSB8CkBAIC01ODks MjcgKzE0MjYsNDUgQEAgc3RhdGljIGludCBydGw4MTgwX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFf aHcgKmRldikKIAkgICAgICBSVEw4MThYX1JYX0NPTkZfQlJPQURDQVNUIHwKIAkgICAgICBSVEw4 MThYX1JYX0NPTkZfTklDTUFDOwogCi0JaWYgKHByaXYtPnI4MTg1KQorCWlmIChwcml2LT5jaGlw X2ZhbWlseSA9PSBSVEw4MThYX0NISVBfRkFNSUxZX1JUTDgxODUpIHsKIAkJcmVnIHw9IFJUTDgx OFhfUlhfQ09ORl9DU0RNMSB8IFJUTDgxOFhfUlhfQ09ORl9DU0RNMjsKLQllbHNlIHsKKworCX0g ZWxzZSBpZiAocHJpdi0+Y2hpcF9mYW1pbHkgPT0gUlRMODE4WF9DSElQX0ZBTUlMWV9SVEw4MTgw KSB7CisKIAkJcmVnIHw9IChwcml2LT5yZnBhcmFtICYgUkZfUEFSQU1fQ0FSUklFUlNFTlNFMSkK IAkJCT8gUlRMODE4WF9SWF9DT05GX0NTRE0xIDogMDsKIAkJcmVnIHw9IChwcml2LT5yZnBhcmFt ICYgUkZfUEFSQU1fQ0FSUklFUlNFTlNFMikKIAkJCT8gUlRMODE4WF9SWF9DT05GX0NTRE0yIDog MDsKKwl9IGVsc2UgeworCQlyZWcgJj0gfihSVEw4MThYX1JYX0NPTkZfQ1NETTEgfCBSVEw4MThY X1JYX0NPTkZfQ1NETTIpOwogCX0KIAogCXByaXYtPnJ4X2NvbmYgPSByZWc7CiAJcnRsODE4eF9p b3dyaXRlMzIocHJpdiwgJnByaXYtPm1hcC0+UlhfQ09ORiwgcmVnKTsKIAotCWlmIChwcml2LT5y ODE4NSkgeworCWlmIChwcml2LT5jaGlwX2ZhbWlseSAhPSBSVEw4MThYX0NISVBfRkFNSUxZX1JU TDgxODApIHsKKwogCQlyZWcgPSBydGw4MTh4X2lvcmVhZDgocHJpdiwgJnByaXYtPm1hcC0+Q1df Q09ORik7Ci0JCXJlZyAmPSB+UlRMODE4WF9DV19DT05GX1BFUlBBQ0tFVF9DV19TSElGVDsKLQkJ cmVnIHw9IFJUTDgxOFhfQ1dfQ09ORl9QRVJQQUNLRVRfUkVUUllfU0hJRlQ7CisKKwkJLyogQ1cg aXMgbm90IG9uIHBlci1wYWNrZXQgYmFzaXMuCisJCSAqIGluIHJ0bDgxODUgdGhlIENXX1ZBTFVF IHJlZyBpcyB1c2VkLgorCQkgKiBpbiBydGw4MTg3c2UgdGhlIEFDIHBhcmFtIHJlZ3MgYXJlIHVz ZWQuCisJCSAqLworCQlyZWcgJj0gflJUTDgxOFhfQ1dfQ09ORl9QRVJQQUNLRVRfQ1c7CisJCS8q IHJldHJ5IGxpbWl0IElTIG9uIHBlci1wYWNrZXQgYmFzaXMuCisJCSAqIHRoZSBzaG9ydCBhbmQg bG9uZyByZXRyeSBsaW1pdCBpbiBUWF9DT05GCisJCSAqIHJlZyBhcmUgaWdub3JlZAorCQkgKi8K KwkJcmVnIHw9IFJUTDgxOFhfQ1dfQ09ORl9QRVJQQUNLRVRfUkVUUlk7CiAJCXJ0bDgxOHhfaW93 cml0ZTgocHJpdiwgJnByaXYtPm1hcC0+Q1dfQ09ORiwgcmVnKTsKIAogCQlyZWcgPSBydGw4MTh4 X2lvcmVhZDgocHJpdiwgJnByaXYtPm1hcC0+VFhfQUdDX0NUTCk7Ci0JCXJlZyAmPSB+UlRMODE4 WF9UWF9BR0NfQ1RMX1BFUlBBQ0tFVF9HQUlOX1NISUZUOwotCQlyZWcgJj0gflJUTDgxOFhfVFhf QUdDX0NUTF9QRVJQQUNLRVRfQU5UU0VMX1NISUZUOworCQkvKiBUWCBhbnRlbm5hIGFuZCBUWCBn YWluIGFyZSBub3Qgb24gcGVyLXBhY2tldCBiYXNpcy4KKwkJICogVFggQW50ZW5uYSBpcyBzZWxl Y3RlZCBieSBBTlRTRUwgcmVnIChSWCBpbiBCQiByZWdzKS4KKwkJICogVFggZ2FpbiBpcyBzZWxl Y3RlZCB3aXRoIENDS19UWF9BR0MgYW5kIE9GRE1fVFhfQUdDIHJlZ3MKKwkJICovCisJCXJlZyAm PSB+UlRMODE4WF9UWF9BR0NfQ1RMX1BFUlBBQ0tFVF9HQUlOOworCQlyZWcgJj0gflJUTDgxOFhf VFhfQUdDX0NUTF9QRVJQQUNLRVRfQU5UU0VMOwogCQlyZWcgfD0gIFJUTDgxOFhfVFhfQUdDX0NU TF9GRUVEQkFDS19BTlQ7CiAJCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgJnByaXYtPm1hcC0+VFhf QUdDX0NUTCwgcmVnKTsKIApAQCAtNjIxLDEwICsxNDc2LDIyIEBAIHN0YXRpYyBpbnQgcnRsODE4 MF9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYpCiAJcmVnIHw9ICg2IDw8IDIxIC8qIE1B WCBUWCBETUEgKi8pIHwKIAkgICAgICAgUlRMODE4WF9UWF9DT05GX05PX0lDVjsKIAotCWlmIChw cml2LT5yODE4NSkKKworCisJaWYgKHByaXYtPmNoaXBfZmFtaWx5ICE9IFJUTDgxOFhfQ0hJUF9G QU1JTFlfUlRMODE4MCkgewogCQlyZWcgJj0gflJUTDgxOFhfVFhfQ09ORl9QUk9CRV9EVFM7Ci0J ZWxzZQotCQlyZWcgJj0gflJUTDgxOFhfVFhfQ09ORl9IV19TRVFOVU07CisJfSBlbHNlIHsKKwkJ cmVnICY9IH5SVEw4MThYX1RYX0NPTkZfQ1dfTUlOOworCQlyZWcgfD0gUlRMODE4WF9UWF9DT05G X1NXX1NFUU5VTTsKKwkJLyogVE9ETzogIHNldF9TUkxfTFJMICovCisJfQorCisKKwlpZiAocHJp di0+Y2hpcF9mYW1pbHkgPT0gUlRMODE4WF9DSElQX0ZBTUlMWV9SVEw4MTg3U0UpIHsKKwkJcmVn IHw9IDE8PDMwOyAgLyogICJkdXJhdGlvbiBwcm9jZWR1cmUgbW9kZSIgKi8KKwl9CisKKwlyZWcg Jj0gflJUTDgxOFhfVFhfQ09ORl9ESVNDVzsKIAogCS8qIGRpZmZlcmVudCBtZWFuaW5nLCBzYW1l IHZhbHVlIG9uIGJvdGggcnRsODE4NSBhbmQgcnRsODE4MCAqLwogCXJlZyAmPSB+UlRMODE4WF9U WF9DT05GX1NBVF9IV1BMQ1A7CkBAIC02NDAsNyArMTUwNyw3IEBAIHN0YXRpYyBpbnQgcnRsODE4 MF9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYpCiAKICBlcnJfZnJlZV9yaW5nczoKIAly dGw4MTgwX2ZyZWVfcnhfcmluZyhkZXYpOwotCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspCisJZm9y IChpID0gMDsgaSA8IFJUTDgxOFhfTlJfVFhfUVVFVUVTOyBpKyspCiAJCWlmIChwcml2LT50eF9y aW5nW2ldLmRlc2MpCiAJCQlydGw4MTgwX2ZyZWVfdHhfcmluZyhkZXYsIGkpOwogCkBAIC02NTMs NyArMTUyMCw3IEBAIHN0YXRpYyB2b2lkIHJ0bDgxODBfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3 ICpkZXYpCiAJdTggcmVnOwogCWludCBpOwogCi0JcnRsODE4eF9pb3dyaXRlMTYocHJpdiwgJnBy aXYtPm1hcC0+SU5UX01BU0ssIDApOworCXJ0bDgxODBfaW50X2Rpc2FibGUoZGV2KTsKIAogCXJl ZyA9IHJ0bDgxOHhfaW9yZWFkOChwcml2LCAmcHJpdi0+bWFwLT5DTUQpOwogCXJlZyAmPSB+UlRM ODE4WF9DTURfVFhfRU5BQkxFOwpAQCAtNjcwLDcgKzE1MzcsNyBAQCBzdGF0aWMgdm9pZCBydGw4 MTgwX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2KQogCWZyZWVfaXJxKHByaXYtPnBkZXYt PmlycSwgZGV2KTsKIAogCXJ0bDgxODBfZnJlZV9yeF9yaW5nKGRldik7Ci0JZm9yIChpID0gMDsg aSA8IDQ7IGkrKykKKwlmb3IgKGkgPSAwOyBpIDwgUlRMODE4WF9OUl9UWF9RVUVVRVM7IGkrKykK IAkJcnRsODE4MF9mcmVlX3R4X3JpbmcoZGV2LCBpKTsKIH0KIApAQCAtNjkwLDExICsxNTU3LDE1 IEBAIHN0YXRpYyB2b2lkIHJ0bDgxODBfYmVhY29uX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3 b3JrKQogCXN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYgPQogCQljb250YWluZXJfb2YoKHZvaWQg Kil2aWZfcHJpdiwgc3RydWN0IGllZWU4MDIxMV92aWYsIGRydl9wcml2KTsKIAlzdHJ1Y3QgaWVl ZTgwMjExX2h3ICpkZXYgPSB2aWZfcHJpdi0+ZGV2OworCXN0cnVjdCBydGw4MTgwX3ByaXYgKnBy aXYgPSBkZXYtPnByaXY7CiAJc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210OwogCXN0cnVjdCBz a19idWZmICpza2I7CiAKKwkvKiBiYWNvbiBxdWV1ZSBpcyB0aGUgbGFzdCBvbmUsIHRoYXQgaXMg MSsgcXVldWUgbnVtIGRlY2xhcmVkIHRvIG1hYzgwMjExICovCisJY29uc3QgaW50IGJlYWNvbl9x dWV1ZSA9IGRldi0+cXVldWVzOworCiAJLyogZG9uJ3Qgb3ZlcmZsb3cgdGhlIHR4IHJpbmcgKi8K LQlpZiAoaWVlZTgwMjExX3F1ZXVlX3N0b3BwZWQoZGV2LCAwKSkKKwlpZiAocHJpdi0+YmVhY29u X3F1ZXVlX3N0b3ApCiAJCWdvdG8gcmVzY2hlZDsKIAogCS8qIGdyYWIgYSBmcmVzaCBiZWFjb24g Ki8KQEAgLTcwOSw4ICsxNTgwLDcgQEAgc3RhdGljIHZvaWQgcnRsODE4MF9iZWFjb25fd29yayhz dHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJbWdtdCA9IChzdHJ1Y3QgaWVlZTgwMjExX21nbXQg Kilza2ItPmRhdGE7CiAJbWdtdC0+dS5iZWFjb24udGltZXN0YW1wID0gY3B1X3RvX2xlNjQocnRs ODE4MF9nZXRfdHNmKGRldiwgdmlmKSk7CiAKLQkvKiBUT0RPOiB1c2UgYWN0dWFsIGJlYWNvbiBx dWV1ZSAqLwotCXNrYl9zZXRfcXVldWVfbWFwcGluZyhza2IsIDApOworCXNrYl9zZXRfcXVldWVf bWFwcGluZyhza2IsIGJlYWNvbl9xdWV1ZSk7CiAKIAlydGw4MTgwX3R4KGRldiwgTlVMTCwgc2ti KTsKIApAQCAtNzczLDExICsxNjQzLDE0NyBAQCBzdGF0aWMgaW50IHJ0bDgxODBfY29uZmlnKHN0 cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgdTMyIGNoYW5nZWQpCiAJc3RydWN0IHJ0bDgxODBfcHJp diAqcHJpdiA9IGRldi0+cHJpdjsKIAlzdHJ1Y3QgaWVlZTgwMjExX2NvbmYgKmNvbmYgPSAmZGV2 LT5jb25mOwogCisJaW50IGNoYW4gPQorCQlpZWVlODAyMTFfZnJlcXVlbmN5X3RvX2NoYW5uZWwo Y29uZi0+Y2hhbmRlZi5jaGFuLT5jZW50ZXJfZnJlcSk7CisKKwogCXByaXYtPnJmLT5zZXRfY2hh bihkZXYsIGNvbmYpOwogCisJcHJpdi0+Y3VyX2NoYW4gPSBjaGFuOworCXJldHVybiAwOworfQor CitzdGF0aWMgdm9pZCBydGw4MTg3c2VfY29uZl9hY19wYXJtKHN0cnVjdCBpZWVlODAyMTFfaHcg KmRldiwgdTggcXVldWUpCit7CisJY29uc3Qgc3RydWN0IGllZWU4MDIxMV90eF9xdWV1ZV9wYXJh bXMgKnBhcmFtczsKKwlzdHJ1Y3QgcnRsODE4MF9wcml2ICpwcml2ID0gZGV2LT5wcml2OworCisJ LyogaHcgdmFsdWUgKi8KKwl1MzIgYWNfcGFyYW07CisKKwl1OCBhaWZzOworCXU4IHR4b3A7CisJ dTggY3dfbWluLCBjd19tYXg7CisKKwlwYXJhbXMgPSAmcHJpdi0+cXVldWVfcGFyYW1bcXVldWVd OworCisJY3dfbWluID0gZmxzKHBhcmFtcy0+Y3dfbWluKTsKKwljd19tYXggPSBmbHMocGFyYW1z LT5jd19tYXgpOworCisKKwlhaWZzID0gMTAgKyBwYXJhbXMtPmFpZnMgKiBwcml2LT5zbG90X3Rp bWU7CisKKwkvKiBUT0RPOiBjaGVjayBpZiB0eG9wIEhXIGlzIGluIHVzIChtdWx0IGJ5IDMyKSAq LworCXR4b3AgPSBwYXJhbXMtPnR4b3A7CisKKwlhY19wYXJhbSA9IHR4b3AgPDwgQUNfUEFSQU1f VFhPUF9MSU1JVF9TSElGVCB8CisJCWN3X21heCA8PCBBQ19QQVJBTV9FQ1dfTUFYX1NISUZUIHwK KwkJY3dfbWluIDw8IEFDX1BBUkFNX0VDV19NSU5fU0hJRlQgfAorCQlhaWZzIDw8IEFDX1BBUkFN X0FJRlNfU0hJRlQ7CisKKwlzd2l0Y2ggKHF1ZXVlKSB7CisJY2FzZSBJRUVFODAyMTFfQUNfQks6 CisJCXJ0bDgxOHhfaW93cml0ZTMyKHByaXYsICZwcml2LT5tYXAtPkFDX0JLX1BBUkFNLCBhY19w YXJhbSk7CisJCWJyZWFrOworCWNhc2UgSUVFRTgwMjExX0FDX0JFOgorCQlydGw4MTh4X2lvd3Jp dGUzMihwcml2LCAmcHJpdi0+bWFwLT5BQ19CRV9QQVJBTSwgYWNfcGFyYW0pOworCQlicmVhazsK KwljYXNlIElFRUU4MDIxMV9BQ19WSToKKwkJcnRsODE4eF9pb3dyaXRlMzIocHJpdiwgJnByaXYt Pm1hcC0+QUNfVklfUEFSQU0sIGFjX3BhcmFtKTsKKwkJYnJlYWs7CisJY2FzZSBJRUVFODAyMTFf QUNfVk86CisJCXJ0bDgxOHhfaW93cml0ZTMyKHByaXYsICZwcml2LT5tYXAtPkFDX1ZPX1BBUkFN LCBhY19wYXJhbSk7CisJCWJyZWFrOworCX0KKworfQorCitzdGF0aWMgaW50IHJ0bDgxODBfY29u Zl90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsCisJCQkgICAgc3RydWN0IGllZWU4MDIxMV92 aWYgKnZpZiwgdTE2IHF1ZXVlLAorCQkJICAgIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfdHhfcXVl dWVfcGFyYW1zICpwYXJhbXMpCit7CisJc3RydWN0IHJ0bDgxODBfcHJpdiAqcHJpdiA9IGRldi0+ cHJpdjsKKworCXU4IGN3X21pbiwgY3dfbWF4OworCisJLyogbm90aGluZyB0byBkbyA/ICovCisJ aWYgKHByaXYtPmNoaXBfZmFtaWx5ID09IFJUTDgxOFhfQ0hJUF9GQU1JTFlfUlRMODE4MCkKKwkJ cmV0dXJuIDA7CisKKwljd19taW4gPSBmbHMocGFyYW1zLT5jd19taW4pOworCWN3X21heCA9IGZs cyhwYXJhbXMtPmN3X21heCk7CisKKworCWlmIChwcml2LT5jaGlwX2ZhbWlseSA9PSBSVEw4MThY X0NISVBfRkFNSUxZX1JUTDgxODdTRSkgeworCQlwcml2LT5xdWV1ZV9wYXJhbVtxdWV1ZV0gPSAq cGFyYW1zOworCQlydGw4MTg3c2VfY29uZl9hY19wYXJtKGRldiwgcXVldWUpOworCX0gZWxzZSB7 CisJCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgJnByaXYtPm1hcC0+Q1dfVkFMLCAoY3dfbWF4PDw0 KSB8IGN3X21pbik7CisKKwl9CisKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIHZvaWQgcnRsODE4 MF9jb25mX2VycChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsCisJCQkgICAgc3RydWN0IGllZWU4 MDIxMV9ic3NfY29uZiAqaW5mbykKK3sKKworCXN0cnVjdCBydGw4MTgwX3ByaXYgKnByaXYgPSBk ZXYtPnByaXY7CisKKwl1OCBzaWZzLCBkaWZzOworCWludCBlaWZzOworCXU4IGh3X2VpZnM7CisK KwkvKiBUT0RPOiBzaG91bGQgd2UgZG8gc29tZXRoaW5nID8gKi8KKwlpZiAocHJpdi0+Y2hpcF9m YW1pbHkgPT0gUlRMODE4WF9DSElQX0ZBTUlMWV9SVEw4MTgwKQorCQlyZXR1cm47CisKKwkvKiBJ IF9ob3BlXyB0aGlzIG1lYW5zIDEwdVMgZm9yIHRoZSBIVy4KKwkgKiBJbiByZWZlcmVuY2UgY29k ZSBpdCBpcyAweDIyIGZvcgorCSAqIGJvdGggcnRsODE4N0wgYW5kIHJ0bDgxODdTRQorCSAqLwor CXNpZnMgPSAweDIyOworCisJaWYgKGluZm8tPnVzZV9zaG9ydF9zbG90KSB7CisJCXByaXYtPnNs b3RfdGltZSA9IDk7CisJfSBlbHNlIHsKKwkJcHJpdi0+c2xvdF90aW1lID0gMjA7CisJfQorCisJ LyogMTAgaXMgU0lGUyB0aW1lIGluIHVTICovCisJZGlmcyA9IDEwICsgMiAqIHByaXYtPnNsb3Rf dGltZTsKKwllaWZzID0gMTAgKyBkaWZzICsgcHJpdi0+YWNrX3RpbWU7CisKKwkvKiBIVyBzaG91 bGQgdXNlIDR1UyB1bml0cyBmb3IgRUlGUyAoSSdtIHN1cmUgZm9yIHJ0bDgxODUpKi8KKwlod19l aWZzID0gRElWX1JPVU5EX1VQKGVpZnMsIDQpOworCisKKwlydGw4MTh4X2lvd3JpdGU4KHByaXYs ICZwcml2LT5tYXAtPlNMT1QsIHByaXYtPnNsb3RfdGltZSk7CisJcnRsODE4eF9pb3dyaXRlOChw cml2LCAmcHJpdi0+bWFwLT5TSUZTLCBzaWZzKTsKKwlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZw cml2LT5tYXAtPkRJRlMsIGRpZnMpOworCisJLyogZnJvbSByZWZlcmVuY2UgY29kZS4gc2V0IGFj ayB0aW1lb3V0IHJlZyA9IGVpZnMgcmVnICovCisJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJp di0+bWFwLT5DQVJSSUVSX1NFTlNFX0NPVU5URVIsIGh3X2VpZnMpOworCisJaWYgKHByaXYtPmNo aXBfZmFtaWx5ID09IFJUTDgxOFhfQ0hJUF9GQU1JTFlfUlRMODE4N1NFKSB7CisKKworCQlydGw4 MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPkVJRlNfODE4N1NFLCBod19laWZzKTsKKwor CisJfSBlbHNlIGlmIChwcml2LT5jaGlwX2ZhbWlseSA9PSBSVEw4MThYX0NISVBfRkFNSUxZX1JU TDgxODUpIHsKKworCQkvKiBydGw4MTg3L3J0bDgxODUgSFcgYnVnLiBBZnRlciBFSUZTIGlzIGVs YXBzZWQsCisJCSAqIHRoZSBIVyBzdGlsbCB3YWl0IGZvciBESUZTLgorCQkgKiBIVyB1c2VzIDR1 UyB1bml0cyBmb3IgRUlGUy4KKwkJICovCisJCWh3X2VpZnMgPSBESVZfUk9VTkRfVVAoZWlmcyAt IGRpZnMsIDQpOworCisJCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgJnByaXYtPm1hcC0+RUlGUywg aHdfZWlmcyk7CisJfQorfQorCiBzdGF0aWMgdm9pZCBydGw4MTgwX2Jzc19pbmZvX2NoYW5nZWQo c3RydWN0IGllZWU4MDIxMV9odyAqZGV2LAogCQkJCSAgICAgc3RydWN0IGllZWU4MDIxMV92aWYg KnZpZiwKIAkJCQkgICAgIHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmluZm8sCkBAIC03OTAs MTEgKzE3OTYsMjUgQEAgc3RhdGljIHZvaWQgcnRsODE4MF9ic3NfaW5mb19jaGFuZ2VkKHN0cnVj dCBpZWVlODAyMTFfaHcgKmRldiwKIAogCXZpZl9wcml2ID0gKHN0cnVjdCBydGw4MTgwX3ZpZiAq KSZ2aWYtPmRydl9wcml2OwogCisJaWYgKGNoYW5nZWQgJiBCU1NfQ0hBTkdFRF9CRUFDT05fSU5U KQorCQlydGw4MTh4X2lvd3JpdGUxNihwcml2LCAmcHJpdi0+bWFwLT5CRUFDT05fSU5URVJWQUws CisJCQkJICBpbmZvLT5iZWFjb25faW50KTsKKwogCWlmIChjaGFuZ2VkICYgQlNTX0NIQU5HRURf QlNTSUQpIHsKKworCQkvKiBhY2Nlc3MgYnNzaWQgaW4gY29uZmlnIG1vZGUgaGFzIGJlZW4gc2Vl biBpbiBydGw4MTg3c2UgY29kZS4uCisJCSAqIFRPRE86IGNoZWNrIGlmIG5lZWRlZAorCQkgKi8K KwkJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5FRVBST01fQ01ELAorCQkJCSBS VEw4MThYX0VFUFJPTV9DTURfQ09ORklHKTsKKwogCQlmb3IgKGkgPSAwOyBpIDwgRVRIX0FMRU47 IGkrKykKIAkJCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgJnByaXYtPm1hcC0+QlNTSURbaV0sCiAJ CQkJCSBpbmZvLT5ic3NpZFtpXSk7CiAKKwkJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+ bWFwLT5FRVBST01fQ01ELAorCQkJCSBSVEw4MThYX0VFUFJPTV9DTURfTk9STUFMKTsKKwogCQlp ZiAoaXNfdmFsaWRfZXRoZXJfYWRkcihpbmZvLT5ic3NpZCkpIHsKIAkJCWlmICh2aWYtPnR5cGUg PT0gTkw4MDIxMV9JRlRZUEVfQURIT0MpCiAJCQkJcmVnID0gUlRMODE4WF9NU1JfQURIT0M7CkBA IC04MDIsMTEgKzE4MjIsNDEgQEAgc3RhdGljIHZvaWQgcnRsODE4MF9ic3NfaW5mb19jaGFuZ2Vk KHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwKIAkJCQlyZWcgPSBSVEw4MThYX01TUl9JTkZSQTsK IAkJfSBlbHNlCiAJCQlyZWcgPSBSVEw4MThYX01TUl9OT19MSU5LOworCisKKwkJaWYgKHByaXYt PmNoaXBfZmFtaWx5ID09IFJUTDgxOFhfQ0hJUF9GQU1JTFlfUlRMODE4N1NFKSB7CisJCQlyZWcg fD0gUlRMODE4WF9NU1JfRU5FRENBOworCQl9CisKIAkJcnRsODE4eF9pb3dyaXRlOChwcml2LCAm cHJpdi0+bWFwLT5NU1IsIHJlZyk7CiAJfQogCi0JaWYgKGNoYW5nZWQgJiBCU1NfQ0hBTkdFRF9F UlBfU0xPVCAmJiBwcml2LT5yZi0+Y29uZl9lcnApCi0JCXByaXYtPnJmLT5jb25mX2VycChkZXYs IGluZm8pOworCWlmIChjaGFuZ2VkICYgQlNTX0NIQU5HRURfQkFTSUNfUkFURVMpCisJCXJ0bDgx ODBfY29uZl9iYXNpY19yYXRlcyhkZXYsIGluZm8tPmJhc2ljX3JhdGVzKTsKKworCWlmIChjaGFu Z2VkICYgKEJTU19DSEFOR0VEX0VSUF9TTE9UIHwgQlNTX0NIQU5HRURfRVJQX1BSRUFNQkxFKSkg eworCisJCS8qIHdoZW4gcHJlYW1ibGUgY2hhbmdlcywgYWNrdGltZSBkdXJhdGlvbiBjaGFuZ2Vz LCBhbmQgZXJwIG11c3QKKwkJICogYmUgcmVjYWxjdWxhdGVkLiBBQ0sgdGltZSBpcyBjYWxjdWxh dGVkIGF0IGxvd2VzdCByYXRlLgorCQkgKiBTaW5jZSBtYWM4MDIxMSBpbmNsdWRlIFNJRlMgdGlt ZXdlIHJlbW92ZSBpdCAoLTEwKQorCQkgKi8KKwkJcHJpdi0+YWNrX3RpbWUgPSBsZTE2X3RvX2Nw dShpZWVlODAyMTFfZ2VuZXJpY19mcmFtZV9kdXJhdGlvbihkZXYsCisJCQkJCXByaXYtPnZpZiwK KwkJCQkJSUVFRTgwMjExX0JBTkRfMkdIWiwgMTAsCisJCQkJCSZwcml2LT5yYXRlc1swXSkpIC0g MTA7CisKKwkJcnRsODE4MF9jb25mX2VycChkZXYsIGluZm8pOworCisJCS8qIG1hYzgwMjExIHN1 cHBsaWVzIGFpZnNfbiB0byBkcml2ZXIgYW5kIGNhbGxzCisJCSAqIGNvbmZfdHggY2FsbGJhY2sg d2hldGhlciBhaWZzX24gY2hhbmdlcywgTk9UCisJCSAqIHdoZW4gYWlmcyBjaGFuZ2VzLgorCQkg KiBBaWZzIHNob3VsZCBiZSByZWNhbGN1bGF0ZWQgaWYgc2xvdCBjaGFuZ2VzLgorCQkgKi8KKwkJ aWYgKHByaXYtPmNoaXBfZmFtaWx5ID09IFJUTDgxOFhfQ0hJUF9GQU1JTFlfUlRMODE4N1NFKSB7 CisJCQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQorCQkJCXJ0bDgxODdzZV9jb25mX2FjX3Bhcm0o ZGV2LCBpKTsKKwkJfQorCX0KIAogCWlmIChjaGFuZ2VkICYgQlNTX0NIQU5HRURfQkVBQ09OX0VO QUJMRUQpCiAJCXZpZl9wcml2LT5lbmFibGVfYmVhY29uID0gaW5mby0+ZW5hYmxlX2JlYWNvbjsK QEAgLTg2NCw2ICsxOTE0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIHJ0 bDgxODBfb3BzID0gewogCS5yZW1vdmVfaW50ZXJmYWNlCT0gcnRsODE4MF9yZW1vdmVfaW50ZXJm YWNlLAogCS5jb25maWcJCQk9IHJ0bDgxODBfY29uZmlnLAogCS5ic3NfaW5mb19jaGFuZ2VkCT0g cnRsODE4MF9ic3NfaW5mb19jaGFuZ2VkLAorCS5jb25mX3R4CQk9IHJ0bDgxODBfY29uZl90eCwK IAkucHJlcGFyZV9tdWx0aWNhc3QJPSBydGw4MTgwX3ByZXBhcmVfbXVsdGljYXN0LAogCS5jb25m aWd1cmVfZmlsdGVyCT0gcnRsODE4MF9jb25maWd1cmVfZmlsdGVyLAogCS5nZXRfdHNmCQk9IHJ0 bDgxODBfZ2V0X3RzZiwKQEAgLTg3MSw4ICsxOTIyLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBp ZWVlODAyMTFfb3BzIHJ0bDgxODBfb3BzID0gewogCiBzdGF0aWMgdm9pZCBydGw4MTgwX2VlcHJv bV9yZWdpc3Rlcl9yZWFkKHN0cnVjdCBlZXByb21fOTNjeDYgKmVlcHJvbSkKIHsKLQlzdHJ1Y3Qg aWVlZTgwMjExX2h3ICpkZXYgPSBlZXByb20tPmRhdGE7Ci0Jc3RydWN0IHJ0bDgxODBfcHJpdiAq cHJpdiA9IGRldi0+cHJpdjsKKworCXN0cnVjdCBydGw4MTgwX3ByaXYgKnByaXYgPSBlZXByb20t PmRhdGE7CiAJdTggcmVnID0gcnRsODE4eF9pb3JlYWQ4KHByaXYsICZwcml2LT5tYXAtPkVFUFJP TV9DTUQpOwogCiAJZWVwcm9tLT5yZWdfZGF0YV9pbiA9IHJlZyAmIFJUTDgxOFhfRUVQUk9NX0NN RF9XUklURTsKQEAgLTg4Myw4ICsxOTM0LDggQEAgc3RhdGljIHZvaWQgcnRsODE4MF9lZXByb21f cmVnaXN0ZXJfcmVhZChzdHJ1Y3QgZWVwcm9tXzkzY3g2ICplZXByb20pCiAKIHN0YXRpYyB2b2lk IHJ0bDgxODBfZWVwcm9tX3JlZ2lzdGVyX3dyaXRlKHN0cnVjdCBlZXByb21fOTNjeDYgKmVlcHJv bSkKIHsKLQlzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYgPSBlZXByb20tPmRhdGE7Ci0Jc3RydWN0 IHJ0bDgxODBfcHJpdiAqcHJpdiA9IGRldi0+cHJpdjsKKworCXN0cnVjdCBydGw4MTgwX3ByaXYg KnByaXYgPSBlZXByb20tPmRhdGE7CiAJdTggcmVnID0gMiA8PCA2OwogCiAJaWYgKGVlcHJvbS0+ cmVnX2RhdGFfaW4pCkBAIC05MDEsNiArMTk1Miw4NiBAQCBzdGF0aWMgdm9pZCBydGw4MTgwX2Vl cHJvbV9yZWdpc3Rlcl93cml0ZShzdHJ1Y3QgZWVwcm9tXzkzY3g2ICplZXByb20pCiAJdWRlbGF5 KDEwKTsKIH0KIAorc3RhdGljIHZvaWQgcnRsODE4MF9lZXByb21fcmVhZChzdHJ1Y3QgcnRsODE4 MF9wcml2ICpwcml2KQoreworCisJc3RydWN0IGVlcHJvbV85M2N4NiBlZXByb207CisJaW50IGVl cHJvbV9jY2tfdGFibGVfYWRyOworCXUxNiBlZXByb21fdmFsOworCWludCBpOworCisKKwllZXBy b20uZGF0YSA9IHByaXY7CisJZWVwcm9tLnJlZ2lzdGVyX3JlYWQgPSBydGw4MTgwX2VlcHJvbV9y ZWdpc3Rlcl9yZWFkOworCWVlcHJvbS5yZWdpc3Rlcl93cml0ZSA9IHJ0bDgxODBfZWVwcm9tX3Jl Z2lzdGVyX3dyaXRlOworCWlmIChydGw4MTh4X2lvcmVhZDMyKHByaXYsICZwcml2LT5tYXAtPlJY X0NPTkYpICYgKDEgPDwgNikpCisJCWVlcHJvbS53aWR0aCA9IFBDSV9FRVBST01fV0lEVEhfOTND NjY7CisJZWxzZQorCQllZXByb20ud2lkdGggPSBQQ0lfRUVQUk9NX1dJRFRIXzkzQzQ2OworCisJ cnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5FRVBST01fQ01ELCBSVEw4MThYX0VF UFJPTV9DTURfUFJPR1JBTSk7CisJcnRsODE4eF9pb3JlYWQ4KHByaXYsICZwcml2LT5tYXAtPkVF UFJPTV9DTUQpOworCXVkZWxheSgxMCk7CisKKwllZXByb21fOTNjeDZfcmVhZCgmZWVwcm9tLCAw eDA2LCAmZWVwcm9tX3ZhbCk7CisJZWVwcm9tX3ZhbCAmPSAweEZGOworCXByaXYtPnJmX3R5cGUg PSBlZXByb21fdmFsOworCisJZWVwcm9tXzkzY3g2X3JlYWQoJmVlcHJvbSwgMHgxNywgJmVlcHJv bV92YWwpOworCXByaXYtPmNzdGhyZXNob2xkID0gZWVwcm9tX3ZhbCA+PiA4OworCisJZWVwcm9t XzkzY3g2X211bHRpcmVhZCgmZWVwcm9tLCAweDcsIChfX2xlMTYgKilwcml2LT5tYWNfYWRkciwg Myk7CisKKworCWlmIChwcml2LT5jaGlwX2ZhbWlseSA9PSBSVEw4MThYX0NISVBfRkFNSUxZX1JU TDgxODdTRSkgeworCQllZXByb21fY2NrX3RhYmxlX2FkciA9IDB4MzA7CisJfSBlbHNlIHsKKwkJ ZWVwcm9tX2Nja190YWJsZV9hZHIgPSAweDEwOworCX0KKworCS8qIENDSyBUWCBwb3dlciAqLwor CWZvciAoaSA9IDA7IGkgPCAxNDsgaSArPSAyKSB7CisJCXUxNiB0eHB3cjsKKwkJZWVwcm9tXzkz Y3g2X3JlYWQoJmVlcHJvbSwgZWVwcm9tX2Nja190YWJsZV9hZHIgKyAoaSA+PiAxKSwgJnR4cHdy KTsKKwkJcHJpdi0+Y2hhbm5lbHNbaV0uaHdfdmFsdWUgPSB0eHB3ciAmIDB4RkY7CisJCXByaXYt PmNoYW5uZWxzW2kgKyAxXS5od192YWx1ZSA9IHR4cHdyID4+IDg7CisJfQorCisJLyogT0ZETSBU WCBwb3dlciAqLworCWlmIChwcml2LT5jaGlwX2ZhbWlseSAhPSBSVEw4MThYX0NISVBfRkFNSUxZ X1JUTDgxODApIHsKKwkJZm9yIChpID0gMDsgaSA8IDE0OyBpICs9IDIpIHsKKwkJCXUxNiB0eHB3 cjsKKwkJCWVlcHJvbV85M2N4Nl9yZWFkKCZlZXByb20sIDB4MjAgKyAoaSA+PiAxKSwgJnR4cHdy KTsKKwkJCXByaXYtPmNoYW5uZWxzW2ldLmh3X3ZhbHVlIHw9ICh0eHB3ciAmIDB4RkYpIDw8IDg7 CisJCQlwcml2LT5jaGFubmVsc1tpICsgMV0uaHdfdmFsdWUgfD0gdHhwd3IgJiAweEZGMDA7CisJ CX0KKwl9CisKKworCWlmIChwcml2LT5jaGlwX2ZhbWlseSA9PSBSVEw4MThYX0NISVBfRkFNSUxZ X1JUTDgxODApIHsKKwkJX19sZTMyIGFuYXBhcmFtOworCQllZXByb21fOTNjeDZfbXVsdGlyZWFk KCZlZXByb20sIDB4RCwgKF9fbGUxNiAqKSZhbmFwYXJhbSwgMik7CisJCXByaXYtPmFuYXBhcmFt ID0gbGUzMl90b19jcHUoYW5hcGFyYW0pOworCQllZXByb21fOTNjeDZfcmVhZCgmZWVwcm9tLCAw eDE5LCAmcHJpdi0+cmZwYXJhbSk7CisJfQorCisKKwlpZiAocHJpdi0+Y2hpcF9mYW1pbHkgPT0g UlRMODE4WF9DSElQX0ZBTUlMWV9SVEw4MTg3U0UpIHsKKwkJZWVwcm9tXzkzY3g2X3JlYWQoJmVl cHJvbSwgMHgzRiwgJmVlcHJvbV92YWwpOworCQlwcml2LT5hbnRlbm5hX2RpdmVyc2l0eV9lbiA9 ICEhKGVlcHJvbV92YWwgJiAweDEwMCk7CisJCXByaXYtPmFudGVubmFfZGl2ZXJzaXR5X2RlZmF1 bHQgPSAoZWVwcm9tX3ZhbCAmIDB4QzAwKSA9PSAweDQwMDsKKworCQllZXByb21fOTNjeDZfcmVh ZCgmZWVwcm9tLCAweDdDLCAmZWVwcm9tX3ZhbCk7CisJCXByaXYtPnh0YWxfb3V0ID0gZWVwcm9t X3ZhbCAmIDB4RjsKKwkJcHJpdi0+eHRhbF9pbiA9IChlZXByb21fdmFsICYgMHhGMCkgPj4gNDsK KwkJcHJpdi0+eHRhbF9jYWwgPSAhIShlZXByb21fdmFsICYgMHgxMDAwKTsKKwkJcHJpdi0+dGhl cm1hbF9tZXRlcl92YWwgPSAoZWVwcm9tX3ZhbCAmIDB4RjAwKSA+PiA4OworCQlwcml2LT50aGVy bWFsX21ldGVyX2VuID0gISEoZWVwcm9tX3ZhbCAmIDB4MjAwMCk7CisJfQorCisJcnRsODE4eF9p b3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5FRVBST01fQ01ELCBSVEw4MThYX0VFUFJPTV9DTURf Tk9STUFMKTsKK30KKwogc3RhdGljIGludCBydGw4MTgwX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpw ZGV2LAogCQkJCSAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZCkKIHsKQEAgLTkwOCwx MiArMjAzOSw5IEBAIHN0YXRpYyBpbnQgcnRsODE4MF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRl diwKIAlzdHJ1Y3QgcnRsODE4MF9wcml2ICpwcml2OwogCXVuc2lnbmVkIGxvbmcgbWVtX2FkZHIs IG1lbV9sZW47CiAJdW5zaWduZWQgaW50IGlvX2FkZHIsIGlvX2xlbjsKLQlpbnQgZXJyLCBpOwot CXN0cnVjdCBlZXByb21fOTNjeDYgZWVwcm9tOworCWludCBlcnI7CiAJY29uc3QgY2hhciAqY2hp cF9uYW1lLCAqcmZfbmFtZSA9IE5VTEw7CiAJdTMyIHJlZzsKLQl1MTYgZWVwcm9tX3ZhbDsKLQl1 OCBtYWNfYWRkcltFVEhfQUxFTl07CiAKIAllcnIgPSBwY2lfZW5hYmxlX2RldmljZShwZGV2KTsK IAlpZiAoZXJyKSB7CkBAIC05NDIsOCArMjA3MCw4IEBAIHN0YXRpYyBpbnQgcnRsODE4MF9wcm9i ZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwKIAkJZ290byBlcnJfZnJlZV9yZWc7CiAJfQogCi0JaWYg KChlcnIgPSBwY2lfc2V0X2RtYV9tYXNrKHBkZXYsIERNQV9CSVRfTUFTSygzMikpKSB8fAotCSAg ICAoZXJyID0gcGNpX3NldF9jb25zaXN0ZW50X2RtYV9tYXNrKHBkZXYsIERNQV9CSVRfTUFTSygz MikpKSkgeworCWlmICgoZXJyID0gcGNpX3NldF9kbWFfbWFzayhwZGV2LCAweEZGRkZGRjAwVUwp KSB8fAorCSAgICAoZXJyID0gcGNpX3NldF9jb25zaXN0ZW50X2RtYV9tYXNrKHBkZXYsIDB4RkZG RkZGMDBVTCkpKSB7CiAJCXByaW50ayhLRVJOX0VSUiAiJXMgKHJ0bDgxODApOiBObyBzdWl0YWJs ZSBETUEgYXZhaWxhYmxlXG4iLAogCQkgICAgICAgcGNpX25hbWUocGRldikpOwogCQlnb3RvIGVy cl9mcmVlX3JlZzsKQEAgLTk5NSw1MSArMjEyMyw3MCBAQCBzdGF0aWMgaW50IHJ0bDgxODBfcHJv YmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAJZGV2LT52aWZfZGF0YV9zaXplID0gc2l6ZW9mKHN0 cnVjdCBydGw4MTgwX3ZpZik7CiAJZGV2LT53aXBoeS0+aW50ZXJmYWNlX21vZGVzID0gQklUKE5M ODAyMTFfSUZUWVBFX1NUQVRJT04pIHwKIAkJCQkJQklUKE5MODAyMTFfSUZUWVBFX0FESE9DKTsK LQlkZXYtPnF1ZXVlcyA9IDE7CisKIAlkZXYtPm1heF9zaWduYWwgPSA2NTsKIAogCXJlZyA9IHJ0 bDgxOHhfaW9yZWFkMzIocHJpdiwgJnByaXYtPm1hcC0+VFhfQ09ORik7CiAJcmVnICY9IFJUTDgx OFhfVFhfQ09ORl9IV1ZFUl9NQVNLOworCiAJc3dpdGNoIChyZWcpIHsKIAljYXNlIFJUTDgxOFhf VFhfQ09ORl9SODE4MF9BQkNEOgogCQljaGlwX25hbWUgPSAiUlRMODE4MCI7CisJCXByaXYtPmNo aXBfZmFtaWx5ID0gUlRMODE4WF9DSElQX0ZBTUlMWV9SVEw4MTgwOwogCQlicmVhazsKKwogCWNh c2UgUlRMODE4WF9UWF9DT05GX1I4MTgwX0Y6CiAJCWNoaXBfbmFtZSA9ICJSVEw4MTgwdkYiOwor CQlwcml2LT5jaGlwX2ZhbWlseSA9IFJUTDgxOFhfQ0hJUF9GQU1JTFlfUlRMODE4MDsKIAkJYnJl YWs7CisKIAljYXNlIFJUTDgxOFhfVFhfQ09ORl9SODE4NV9BQkM6CiAJCWNoaXBfbmFtZSA9ICJS VEw4MTg1IjsKKwkJcHJpdi0+Y2hpcF9mYW1pbHkgPSBSVEw4MThYX0NISVBfRkFNSUxZX1JUTDgx ODU7CiAJCWJyZWFrOworCiAJY2FzZSBSVEw4MThYX1RYX0NPTkZfUjgxODVfRDoKIAkJY2hpcF9u YW1lID0gIlJUTDgxODV2RCI7CisJCXByaXYtPmNoaXBfZmFtaWx5ID0gUlRMODE4WF9DSElQX0ZB TUlMWV9SVEw4MTg1OwogCQlicmVhazsKKworCWNhc2UgUlRMODE4WF9UWF9DT05GX1JUTDgxODdT RToKKwkJY2hpcF9uYW1lID0gIlJUTDgxODdTRSI7CisJCXByaXYtPmNoaXBfZmFtaWx5ID0gUlRM ODE4WF9DSElQX0ZBTUlMWV9SVEw4MTg3U0U7CisJCWJyZWFrOworCiAJZGVmYXVsdDoKIAkJcHJp bnRrKEtFUk5fRVJSICIlcyAocnRsODE4MCk6IFVua25vd24gY2hpcCEgKDB4JXgpXG4iLAogCQkg ICAgICAgcGNpX25hbWUocGRldiksIHJlZyA+PiAyNSk7CiAJCWdvdG8gZXJyX2lvdW5tYXA7CiAJ fQogCi0JcHJpdi0+cjgxODUgPSByZWcgJiBSVEw4MThYX1RYX0NPTkZfUjgxODVfQUJDOwotCWlm IChwcml2LT5yODE4NSkgeworCisJLyogd2UgZGVjbGFyZSB0byBNQUM4MDIxMSBhbGwgdGhlIHF1 ZXVlcyBleGNlcHQgZm9yIGJlYWNvbiBxdWV1ZQorCSAqIHRoYXQgaXMgaGFuZGxlZCBieSBEUlYu IFRYIHJpbmdzIGFyZSBhcnJhbmdlZCBpbiBzdWNoIGEgd2F5CisJICogdGhhdCBsb3dlciBpcyB0 aGUgSURYLCBoaWdoZXIgaXMgdGhlIHByaW9yaXR5LCBpbiBvcmRlciB0bworCSAqIGFjaGlldmUg ZGlyZWN0IG1hcHBpbmcgd2l0aCBtYWM4MDIxMSwgaG93ZXZlciB0aGUgYmVhY29uCisJICogcXVl dWUgaXMgYW4gZXhjZXB0aW9uIGFuZCBpdCBpcyBtYXBwZWQgb24gdGhlIGhpZ2hzdCB0eCByaW5n IElEWAorCSAqLworCWlmIChwcml2LT5jaGlwX2ZhbWlseSA9PSBSVEw4MThYX0NISVBfRkFNSUxZ X1JUTDgxODdTRSkgeworCQlkZXYtPnF1ZXVlcyA9IFJUTDgxODdTRV9OUl9UWF9RVUVVRVMgLSAx OworCX0gZWxzZSB7CisJCWRldi0+cXVldWVzID0gUlRMODE4MF9OUl9UWF9RVUVVRVMgLSAxOwor CX0KKwkvKiB0aGlzIGRvZXMgTk9UIG1lYW5zIHdlIGFyZSBzZW5kaW5nIGJlYWNvbnMsIHRoaXMg bWVhbnMgdGhhdCB0aGUKKwkgKiBIVyBiZWFjb24gcXVldWUgaXMgbm90IGZ1bGwKKwkgKi8KKwlw cml2LT5iZWFjb25fcXVldWVfc3RvcCA9IGZhbHNlOworCisKKwlpZiAocHJpdi0+Y2hpcF9mYW1p bHkgIT0gUlRMODE4WF9DSElQX0ZBTUlMWV9SVEw4MTgwKSB7CiAJCXByaXYtPmJhbmQubl9iaXRy YXRlcyA9IEFSUkFZX1NJWkUocnRsODE4eF9yYXRlcyk7CiAJCXBjaV90cnlfc2V0X213aShwZGV2 KTsKIAl9CiAKLQllZXByb20uZGF0YSA9IGRldjsKLQllZXByb20ucmVnaXN0ZXJfcmVhZCA9IHJ0 bDgxODBfZWVwcm9tX3JlZ2lzdGVyX3JlYWQ7Ci0JZWVwcm9tLnJlZ2lzdGVyX3dyaXRlID0gcnRs ODE4MF9lZXByb21fcmVnaXN0ZXJfd3JpdGU7Ci0JaWYgKHJ0bDgxOHhfaW9yZWFkMzIocHJpdiwg JnByaXYtPm1hcC0+UlhfQ09ORikgJiAoMSA8PCA2KSkKLQkJZWVwcm9tLndpZHRoID0gUENJX0VF UFJPTV9XSURUSF85M0M2NjsKLQllbHNlCi0JCWVlcHJvbS53aWR0aCA9IFBDSV9FRVBST01fV0lE VEhfOTNDNDY7Ci0KLQlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPkVFUFJPTV9D TUQsIFJUTDgxOFhfRUVQUk9NX0NNRF9QUk9HUkFNKTsKLQlydGw4MTh4X2lvcmVhZDgocHJpdiwg JnByaXYtPm1hcC0+RUVQUk9NX0NNRCk7Ci0JdWRlbGF5KDEwKTsKKwlydGw4MTgwX2VlcHJvbV9y ZWFkKHByaXYpOwogCi0JZWVwcm9tXzkzY3g2X3JlYWQoJmVlcHJvbSwgMHgwNiwgJmVlcHJvbV92 YWwpOwotCWVlcHJvbV92YWwgJj0gMHhGRjsKLQlzd2l0Y2ggKGVlcHJvbV92YWwpIHsKKwlzd2l0 Y2ggKHByaXYtPnJmX3R5cGUpIHsKIAljYXNlIDE6CXJmX25hbWUgPSAiSW50ZXJzaWwiOwogCQli cmVhazsKIAljYXNlIDI6CXJmX25hbWUgPSAiUkZNRCI7CkBAIC0xMDUwLDE0ICsyMTk3LDE5IEBA IHN0YXRpYyBpbnQgcnRsODE4MF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwKIAkJYnJlYWs7 CiAJY2FzZSA1Oglwcml2LT5yZiA9ICZncmY1MTAxX3JmX29wczsKIAkJYnJlYWs7Ci0JY2FzZSA5 Oglwcml2LT5yZiA9IHJ0bDgxODBfZGV0ZWN0X3JmKGRldik7CisJY2FzZSA5OgorCQlpZiAocHJp di0+Y2hpcF9mYW1pbHkgPT0gUlRMODE4WF9DSElQX0ZBTUlMWV9SVEw4MTg3U0UpIHsKKwkJCXBy aXYtPnJmID0gcnRsODE4N3NlX2RldGVjdF9yZihkZXYpOworCQl9IGVsc2UgeworCQkJcHJpdi0+ cmYgPSBydGw4MTgwX2RldGVjdF9yZihkZXYpOworCQl9CiAJCWJyZWFrOwogCWNhc2UgMTA6CiAJ CXJmX25hbWUgPSAiUlRMODI1NSI7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXByaW50ayhLRVJO X0VSUiAiJXMgKHJ0bDgxODApOiBVbmtub3duIFJGISAoMHgleClcbiIsCi0JCSAgICAgICBwY2lf bmFtZShwZGV2KSwgZWVwcm9tX3ZhbCk7CisJCSAgICAgICBwY2lfbmFtZShwZGV2KSwgcHJpdi0+ cmZfdHlwZSk7CiAJCWdvdG8gZXJyX2lvdW5tYXA7CiAJfQogCkBAIC0xMDY3LDQyICsyMjE5LDE1 IEBAIHN0YXRpYyBpbnQgcnRsODE4MF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwKIAkJZ290 byBlcnJfaW91bm1hcDsKIAl9CiAKLQllZXByb21fOTNjeDZfcmVhZCgmZWVwcm9tLCAweDE3LCAm ZWVwcm9tX3ZhbCk7Ci0JcHJpdi0+Y3N0aHJlc2hvbGQgPSBlZXByb21fdmFsID4+IDg7Ci0JaWYg KCFwcml2LT5yODE4NSkgewotCQlfX2xlMzIgYW5hcGFyYW07Ci0JCWVlcHJvbV85M2N4Nl9tdWx0 aXJlYWQoJmVlcHJvbSwgMHhELCAoX19sZTE2ICopJmFuYXBhcmFtLCAyKTsKLQkJcHJpdi0+YW5h cGFyYW0gPSBsZTMyX3RvX2NwdShhbmFwYXJhbSk7Ci0JCWVlcHJvbV85M2N4Nl9yZWFkKCZlZXBy b20sIDB4MTksICZwcml2LT5yZnBhcmFtKTsKLQl9CiAKLQllZXByb21fOTNjeDZfbXVsdGlyZWFk KCZlZXByb20sIDB4NywgKF9fbGUxNiAqKW1hY19hZGRyLCAzKTsKLQlpZiAoIWlzX3ZhbGlkX2V0 aGVyX2FkZHIobWFjX2FkZHIpKSB7CisKKwlpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIocHJpdi0+ bWFjX2FkZHIpKSB7CiAJCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzIChydGw4MTgwKTogSW52YWxp ZCBod2FkZHIhIFVzaW5nIgogCQkgICAgICAgIiByYW5kb21seSBnZW5lcmF0ZWQgTUFDIGFkZHJc biIsIHBjaV9uYW1lKHBkZXYpKTsKLQkJZXRoX3JhbmRvbV9hZGRyKG1hY19hZGRyKTsKLQl9Ci0J U0VUX0lFRUU4MDIxMV9QRVJNX0FERFIoZGV2LCBtYWNfYWRkcik7Ci0KLQkvKiBDQ0sgVFggcG93 ZXIgKi8KLQlmb3IgKGkgPSAwOyBpIDwgMTQ7IGkgKz0gMikgewotCQl1MTYgdHhwd3I7Ci0JCWVl cHJvbV85M2N4Nl9yZWFkKCZlZXByb20sIDB4MTAgKyAoaSA+PiAxKSwgJnR4cHdyKTsKLQkJcHJp di0+Y2hhbm5lbHNbaV0uaHdfdmFsdWUgPSB0eHB3ciAmIDB4RkY7Ci0JCXByaXYtPmNoYW5uZWxz W2kgKyAxXS5od192YWx1ZSA9IHR4cHdyID4+IDg7Ci0JfQotCi0JLyogT0ZETSBUWCBwb3dlciAq LwotCWlmIChwcml2LT5yODE4NSkgewotCQlmb3IgKGkgPSAwOyBpIDwgMTQ7IGkgKz0gMikgewot CQkJdTE2IHR4cHdyOwotCQkJZWVwcm9tXzkzY3g2X3JlYWQoJmVlcHJvbSwgMHgyMCArIChpID4+ IDEpLCAmdHhwd3IpOwotCQkJcHJpdi0+Y2hhbm5lbHNbaV0uaHdfdmFsdWUgfD0gKHR4cHdyICYg MHhGRikgPDwgODsKLQkJCXByaXYtPmNoYW5uZWxzW2kgKyAxXS5od192YWx1ZSB8PSB0eHB3ciAm IDB4RkYwMDsKLQkJfQorCQlldGhfcmFuZG9tX2FkZHIocHJpdi0+bWFjX2FkZHIpOwogCX0KKwlT RVRfSUVFRTgwMjExX1BFUk1fQUREUihkZXYsIHByaXYtPm1hY19hZGRyKTsKIAotCXJ0bDgxOHhf aW93cml0ZTgocHJpdiwgJnByaXYtPm1hcC0+RUVQUk9NX0NNRCwgUlRMODE4WF9FRVBST01fQ01E X05PUk1BTCk7CiAKIAlzcGluX2xvY2tfaW5pdCgmcHJpdi0+bG9jayk7CiAKQEAgLTExMTQsNyAr MjIzOSw3IEBAIHN0YXRpYyBpbnQgcnRsODE4MF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwK IAl9CiAKIAl3aXBoeV9pbmZvKGRldi0+d2lwaHksICJod2FkZHIgJXBtLCAlcyArICVzXG4iLAot CQkgICBtYWNfYWRkciwgY2hpcF9uYW1lLCBwcml2LT5yZi0+bmFtZSk7CisJCSAgIHByaXYtPm1h Y19hZGRyLCBjaGlwX25hbWUsIHByaXYtPnJmLT5uYW1lKTsKIAogCXJldHVybiAwOwogCkBAIC0x MTIyLDYgKzIyNDcsNyBAQCBzdGF0aWMgaW50IHJ0bDgxODBfcHJvYmUoc3RydWN0IHBjaV9kZXYg KnBkZXYsCiAJaW91bm1hcChwcml2LT5tYXApOwogCiAgZXJyX2ZyZWVfZGV2OgorCXBjaV9zZXRf ZHJ2ZGF0YShwZGV2LCBOVUxMKTsKIAlpZWVlODAyMTFfZnJlZV9odyhkZXYpOwogCiAgZXJyX2Zy ZWVfcmVnOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsODE4eC9ydGw4MTgw L3J0bDgxODAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bDgxOHgvcnRsODE4MC9ydGw4MTgw LmgKaW5kZXggMzA1MjMzMS4uYjRjNzIwNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxl c3MvcnRsODE4eC9ydGw4MTgwL3J0bDgxODAuaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9y dGw4MTh4L3J0bDgxODAvcnRsODE4MC5oCkBAIC0xMSw0MiArMTEsODAgQEAKICNkZWZpbmUgUkZf UEFSQU1fQ0FSUklFUlNFTlNFMgkoMSA8PCAzKQogCiAjZGVmaW5lIEJCX0FOVEFUVEVOX0NIQU4x NAkweDBDCi0jZGVmaW5lIEJCX0FOVEVOTkFfQiAJCTB4NDAKKyNkZWZpbmUgQkJfQU5URU5OQV9C CQkweDQwCiAKLSNkZWZpbmUgQkJfSE9TVF9CQU5HIAkJKDEgPDwgMzApCi0jZGVmaW5lIEJCX0hP U1RfQkFOR19FTiAJKDEgPDwgMikKLSNkZWZpbmUgQkJfSE9TVF9CQU5HX0NMSyAJKDEgPDwgMSkK KyNkZWZpbmUgQkJfSE9TVF9CQU5HCQkoMSA8PCAzMCkKKyNkZWZpbmUgQkJfSE9TVF9CQU5HX0VO CQkoMSA8PCAyKQorI2RlZmluZSBCQl9IT1NUX0JBTkdfQ0xLCSgxIDw8IDEpCiAjZGVmaW5lIEJC X0hPU1RfQkFOR19EQVRBCTEKIAogI2RlZmluZSBBTkFQQVJBTV9UWERBQ09GRl9TSElGVAkyNwog I2RlZmluZSBBTkFQQVJBTV9QV1IwX1NISUZUCTI4Ci0jZGVmaW5lIEFOQVBBUkFNX1BXUjBfTUFT SyAJKDB4MDcgPDwgQU5BUEFSQU1fUFdSMF9TSElGVCkKKyNkZWZpbmUgQU5BUEFSQU1fUFdSMF9N QVNLCSgweDA3IDw8IEFOQVBBUkFNX1BXUjBfU0hJRlQpCiAjZGVmaW5lIEFOQVBBUkFNX1BXUjFf U0hJRlQJMjAKICNkZWZpbmUgQU5BUEFSQU1fUFdSMV9NQVNLCSgweDdGIDw8IEFOQVBBUkFNX1BX UjFfU0hJRlQpCiAKKy8qIHJ0bDgxODAvcnRsODE4NSBoYXZlIDMgcXVldWUgKyBiZWFjb24gcXVl dWUuCisgKiBtYWM4MDIxMSBjYW4gdXNlIGp1c3Qgb25lLCArIGJlYWNvbiA9IDIgdG90LgorICov CisjZGVmaW5lIFJUTDgxODBfTlJfVFhfUVVFVUVTIDIKKworLyogcnRsODE4N1NFIGhhdmUgNiBx dWV1ZXMgKyBiZWFjb24gcXVldWVzCisgKiBtYWM4MDIxMSBjYW4gdXNlIDQgUW9TIGRhdGEgcXVl dWUsICsgYmVhY29uID0gNSB0b3QKKyAqLworI2RlZmluZSBSVEw4MTg3U0VfTlJfVFhfUVVFVUVT IDUKKworLyogZm9yIGFycmF5IHN0YXRpYyBhbGxvY2F0aW9uLCBpdCBpcyB0aGUgbWF4IG9mIGFi b3ZlICovCisjZGVmaW5lIFJUTDgxOFhfTlJfVFhfUVVFVUVTIDUKKwogc3RydWN0IHJ0bDgxODBf dHhfZGVzYyB7CiAJX19sZTMyIGZsYWdzOwogCV9fbGUxNiBydHNfZHVyYXRpb247CiAJX19sZTE2 IHBsY3BfbGVuOwogCV9fbGUzMiB0eF9idWY7Ci0JX19sZTMyIGZyYW1lX2xlbjsKKwl1bmlvbnsK KwkJX19sZTMyIGZyYW1lX2xlbjsKKwkJc3RydWN0IHsKKwkJCV9fbGUxNiBmcmFtZV9sZW5fc2U7 CisJCQlfX2xlMTYgZnJhbWVfZHVyYXRpb247CisJCX0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkp OworCX0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwogCV9fbGUzMiBuZXh0X3R4X2Rlc2M7CiAJ dTggY3c7CiAJdTggcmV0cnlfbGltaXQ7CiAJdTggYWdjOwogCXU4IGZsYWdzMjsKLQl1MzIgcmVz ZXJ2ZWRbMl07CisJLyogcnN2ZCBmb3IgODE4MC84MTg1LgorCSAqIHZhbGlkIGZvciA4MTg3c2Ug YnV0IHdlIGRvbnQgdXNlIGl0CisJICovCisJdTMyIHJlc2VydmVkOworCS8qIGFsbCByc3ZkIGZv ciA4MTgwLzgxODUgKi8KKwlfX2xlMTYgZmxhZ3MzOworCV9fbGUxNiBmcmFnX3FzaXplOworfSBf X3BhY2tlZDsKKworc3RydWN0IHJ0bDgxOHhfcnhfY21kX2Rlc2MgeworCV9fbGUzMiBmbGFnczsK Kwl1MzIgcmVzZXJ2ZWQ7CisJX19sZTMyIHJ4X2J1ZjsKIH0gX19wYWNrZWQ7CiAKIHN0cnVjdCBy dGw4MTgwX3J4X2Rlc2MgewogCV9fbGUzMiBmbGFnczsKIAlfX2xlMzIgZmxhZ3MyOwotCXVuaW9u IHsKLQkJX19sZTMyIHJ4X2J1ZjsKLQkJX19sZTY0IHRzZnQ7Ci0JfTsKKwlfX2xlNjQgdHNmdDsK KworfSBfX3BhY2tlZDsKKworc3RydWN0IHJ0bDgxODdzZV9yeF9kZXNjIHsKKwlfX2xlMzIgZmxh Z3M7CisJX19sZTY0IHRzZnQ7CisJX19sZTMyIGZsYWdzMjsKKwlfX2xlMzIgZmxhZ3MzOworCXUz MiByZXNlcnZlZFszXTsKIH0gX19wYWNrZWQ7CiAKKwogc3RydWN0IHJ0bDgxODBfdHhfcmluZyB7 CiAJc3RydWN0IHJ0bDgxODBfdHhfZGVzYyAqZGVzYzsKIAlkbWFfYWRkcl90IGRtYTsKQEAgLTYz LDYgKzEwMSwxMyBAQCBzdHJ1Y3QgcnRsODE4MF92aWYgewogCWJvb2wgZW5hYmxlX2JlYWNvbjsK IH07CiAKK3R5cGVkZWYgZW51bSB7CisJUlRMODE4WF9DSElQX0ZBTUlMWV9SVEw4MTgwLAorCVJU TDgxOFhfQ0hJUF9GQU1JTFlfUlRMODE4NSwKKwlSVEw4MThYX0NISVBfRkFNSUxZX1JUTDgxODdT RQorCit9IHJ0bDgxOHhfY2hpcF9mYW1pbHk7CisKIHN0cnVjdCBydGw4MTgwX3ByaXYgewogCS8q IGNvbW1vbiBiZXR3ZWVuIHJ0bDgxOHggZHJpdmVycyAqLwogCXN0cnVjdCBydGw4MTh4X2NzciBf X2lvbWVtICptYXA7CkBAIC03MSwyOCArMTE2LDQzIEBAIHN0cnVjdCBydGw4MTgwX3ByaXYgewog CiAJLyogcnRsODE4MCBkcml2ZXIgc3BlY2lmaWMgKi8KIAlzcGlubG9ja190IGxvY2s7Ci0Jc3Ry dWN0IHJ0bDgxODBfcnhfZGVzYyAqcnhfcmluZzsKKwl2b2lkICpyeF9yaW5nOworCXU4IHJ4X3Jp bmdfc3o7CiAJZG1hX2FkZHJfdCByeF9yaW5nX2RtYTsKIAl1bnNpZ25lZCBpbnQgcnhfaWR4Owog CXN0cnVjdCBza19idWZmICpyeF9idWZbMzJdOwotCXN0cnVjdCBydGw4MTgwX3R4X3JpbmcgdHhf cmluZ1s0XTsKKwlzdHJ1Y3QgcnRsODE4MF90eF9yaW5nIHR4X3JpbmdbUlRMODE4WF9OUl9UWF9R VUVVRVNdOwogCXN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCBjaGFubmVsc1sxNF07CiAJc3RydWN0 IGllZWU4MDIxMV9yYXRlIHJhdGVzWzEyXTsKIAlzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9i YW5kIGJhbmQ7CisJc3RydWN0IGllZWU4MDIxMV90eF9xdWV1ZV9wYXJhbXMgcXVldWVfcGFyYW1b NF07CiAJc3RydWN0IHBjaV9kZXYgKnBkZXY7CisJcnRsODE4eF9jaGlwX2ZhbWlseSBjaGlwX2Zh bWlseTsKIAl1MzIgcnhfY29uZjsKLQotCWludCByODE4NTsKKwl1OCBzbG90X3RpbWU7CisJdTE2 IGFja190aW1lOworCWJvb2wgYmVhY29uX3F1ZXVlX3N0b3A7CiAJdTMyIGFuYXBhcmFtOwogCXUx NiByZnBhcmFtOwogCXU4IGNzdGhyZXNob2xkOwotCisJdTggbWFjX2FkZHJbRVRIX0FMRU5dOwor CXU4IHJmX3R5cGU7CisJdTggcmZfcHJvZ190eXBlOworCXU4IHh0YWxfb3V0OworCXU4IGN1cl9j aGFuOworCXU4IHh0YWxfaW47CisJdTggeHRhbF9jYWw7CisJdTggdGhlcm1hbF9tZXRlcl92YWw7 CisJdTggdGhlcm1hbF9tZXRlcl9lbjsKKwl1OCBhbnRlbm5hX2RpdmVyc2l0eV9lbjsKKwl1OCBh bnRlbm5hX2RpdmVyc2l0eV9kZWZhdWx0OwogCS8qIHNlcXVlbmNlICMgKi8KIAl1MTYgc2Vxbm87 CiB9OwogCiB2b2lkIHJ0bDgxODBfd3JpdGVfcGh5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwg dTggYWRkciwgdTMyIGRhdGEpOwogdm9pZCBydGw4MTgwX3NldF9hbmFwYXJhbShzdHJ1Y3QgcnRs ODE4MF9wcml2ICpwcml2LCB1MzIgYW5hcGFyYW0pOwordm9pZCBydGw4MTgwX3NldF9hbmFwYXJh bTIoc3RydWN0IHJ0bDgxODBfcHJpdiAqcHJpdiwgdTMyIGFuYXBhcmFtMik7CiAKIHN0YXRpYyBp bmxpbmUgdTggcnRsODE4eF9pb3JlYWQ4KHN0cnVjdCBydGw4MTgwX3ByaXYgKnByaXYsIHU4IF9f aW9tZW0gKmFkZHIpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGw4MTh4 L3J0bDgxODAvcnRsODIyNS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsODE4eC9ydGw4MTgw L3J0bDgyMjUuYwppbmRleCBlZTYzOGQwLi41NmNlM2JhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25l dC93aXJlbGVzcy9ydGw4MTh4L3J0bDgxODAvcnRsODIyNS5jCisrKyBiL2RyaXZlcnMvbmV0L3dp cmVsZXNzL3J0bDgxOHgvcnRsODE4MC9ydGw4MjI1LmMKQEAgLTIzLDYgKzIzLDEyMSBAQAogI2lu Y2x1ZGUgInJ0bDgxODAuaCIKICNpbmNsdWRlICJydGw4MjI1LmgiCiAKK3N0YXRpYyBjb25zdCB1 OCBydGw4MjI1X2dhaW5bXSA9IHsKKwkweDIzLCAweDg4LCAweDdjLCAweGE1LCAvKiAtODJkYm0g Ki8KKwkweDIzLCAweDg4LCAweDdjLCAweGI1LCAvKiAtODJkYm0gKi8KKwkweDIzLCAweDg4LCAw eDdjLCAweGM1LCAvKiAtODJkYm0gKi8KKwkweDMzLCAweDgwLCAweDc5LCAweGM1LCAvKiAtNzhk Ym0gKi8KKwkweDQzLCAweDc4LCAweDc2LCAweGM1LCAvKiAtNzRkYm0gKi8KKwkweDUzLCAweDYw LCAweDczLCAweGM1LCAvKiAtNzBkYm0gKi8KKwkweDYzLCAweDU4LCAweDcwLCAweGM1LCAvKiAt NjZkYm0gKi8KK307CisKK3N0YXRpYyBjb25zdCB1OCBydGw4MjI1X3RocmVzaG9sZFtdID0gewor CTB4OGQsIDB4OGQsIDB4OGQsIDB4OGQsIDB4OWQsIDB4YWQsIDB4YmQKK307CisKK3N0YXRpYyBj b25zdCB1OCBydGw4MjI1X3R4X2dhaW5fY2NrX29mZG1bXSA9IHsKKwkweDAyLCAweDA2LCAweDBl LCAweDFlLCAweDNlLCAweDdlCit9OworCitzdGF0aWMgY29uc3QgdTggcnRsODIyNV90eF9wb3dl cl9jY2tbXSA9IHsKKwkweDE4LCAweDE3LCAweDE1LCAweDExLCAweDBjLCAweDA4LCAweDA0LCAw eDAyLAorCTB4MWIsIDB4MWEsIDB4MTcsIDB4MTMsIDB4MGUsIDB4MDksIDB4MDQsIDB4MDIsCisJ MHgxZiwgMHgxZSwgMHgxYSwgMHgxNSwgMHgxMCwgMHgwYSwgMHgwNSwgMHgwMiwKKwkweDIyLCAw eDIxLCAweDFkLCAweDE4LCAweDExLCAweDBiLCAweDA2LCAweDAyLAorCTB4MjYsIDB4MjUsIDB4 MjEsIDB4MWIsIDB4MTQsIDB4MGQsIDB4MDYsIDB4MDMsCisJMHgyYiwgMHgyYSwgMHgyNSwgMHgx ZSwgMHgxNiwgMHgwZSwgMHgwNywgMHgwMworfTsKKworc3RhdGljIGNvbnN0IHU4IHJ0bDgyMjVf dHhfcG93ZXJfY2NrX2NoMTRbXSA9IHsKKwkweDE4LCAweDE3LCAweDE1LCAweDBjLCAweDAwLCAw eDAwLCAweDAwLCAweDAwLAorCTB4MWIsIDB4MWEsIDB4MTcsIDB4MGUsIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsCisJMHgxZiwgMHgxZSwgMHgxYSwgMHgwZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw MCwKKwkweDIyLCAweDIxLCAweDFkLCAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCTB4 MjYsIDB4MjUsIDB4MjEsIDB4MTMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJMHgyYiwgMHgy YSwgMHgyNSwgMHgxNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMAorfTsKKworc3RhdGljIGNvbnN0 IHU4IHJ0bDgyMjVfdHhfcG93ZXJfb2ZkbVtdID0geworCTB4ODAsIDB4OTAsIDB4YTIsIDB4YjUs IDB4Y2IsIDB4ZTQKK307CisKK3N0YXRpYyBjb25zdCB1MzIgcnRsODIyNV9jaGFuW10gPSB7CisJ MHgwODVjLCAweDA4ZGMsIDB4MDk1YywgMHgwOWRjLCAweDBhNWMsIDB4MGFkYywgMHgwYjVjLAor CTB4MGJkYywgMHgwYzVjLCAweDBjZGMsIDB4MGQ1YywgMHgwZGRjLCAweDBlNWMsIDB4MGY3Mgor fTsKKworCitzdGF0aWMgY29uc3QgdTggcnRsODIyNXoyX3R4X3Bvd2VyX2Nja19jaDE0W10gPSB7 CisJMHgzNiwgMHgzNSwgMHgyZSwgMHgxYiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMAorfTsKKwor c3RhdGljIGNvbnN0IHU4IHJ0bDgyMjV6Ml90eF9wb3dlcl9jY2tfQltdID0geworCTB4MzAsIDB4 MmYsIDB4MjksIDB4MjEsIDB4MTksIDB4MTAsIDB4MDgsIDB4MDQKK307CisKK3N0YXRpYyBjb25z dCB1OCBydGw4MjI1ejJfdHhfcG93ZXJfY2NrX0FbXSA9IHsKKwkweDMzLCAweDMyLCAweDJiLCAw eDIzLCAweDFhLCAweDExLCAweDA4LCAweDA0Cit9OworCitzdGF0aWMgY29uc3QgdTggcnRsODIy NXoyX3R4X3Bvd2VyX2Nja1tdID0geworCTB4MzYsIDB4MzUsIDB4MmUsIDB4MjUsIDB4MWMsIDB4 MTIsIDB4MDksIDB4MDQKK307CisKKworc3RhdGljIGNvbnN0IHUxNiBydGw4MjI1YmNkX3J4Z2Fp bltdID0geworCTB4MDQwMCwgMHgwNDAxLCAweDA0MDIsIDB4MDQwMywgMHgwNDA0LCAweDA0MDUs IDB4MDQwOCwgMHgwNDA5LAorCTB4MDQwYSwgMHgwNDBiLCAweDA1MDIsIDB4MDUwMywgMHgwNTA0 LCAweDA1MDUsIDB4MDU0MCwgMHgwNTQxLAorCTB4MDU0MiwgMHgwNTQzLCAweDA1NDQsIDB4MDU0 NSwgMHgwNTgwLCAweDA1ODEsIDB4MDU4MiwgMHgwNTgzLAorCTB4MDU4NCwgMHgwNTg1LCAweDA1 ODgsIDB4MDU4OSwgMHgwNThhLCAweDA1OGIsIDB4MDY0MywgMHgwNjQ0LAorCTB4MDY0NSwgMHgw NjgwLCAweDA2ODEsIDB4MDY4MiwgMHgwNjgzLCAweDA2ODQsIDB4MDY4NSwgMHgwNjg4LAorCTB4 MDY4OSwgMHgwNjhhLCAweDA2OGIsIDB4MDY4YywgMHgwNzQyLCAweDA3NDMsIDB4MDc0NCwgMHgw NzQ1LAorCTB4MDc4MCwgMHgwNzgxLCAweDA3ODIsIDB4MDc4MywgMHgwNzg0LCAweDA3ODUsIDB4 MDc4OCwgMHgwNzg5LAorCTB4MDc4YSwgMHgwNzhiLCAweDA3OGMsIDB4MDc4ZCwgMHgwNzkwLCAw eDA3OTEsIDB4MDc5MiwgMHgwNzkzLAorCTB4MDc5NCwgMHgwNzk1LCAweDA3OTgsIDB4MDc5OSwg MHgwNzlhLCAweDA3OWIsIDB4MDc5YywgMHgwNzlkLAorCTB4MDdhMCwgMHgwN2ExLCAweDA3YTIs IDB4MDdhMywgMHgwN2E0LCAweDA3YTUsIDB4MDdhOCwgMHgwN2E5LAorCTB4MDdhYSwgMHgwN2Fi LCAweDA3YWMsIDB4MDdhZCwgMHgwN2IwLCAweDA3YjEsIDB4MDdiMiwgMHgwN2IzLAorCTB4MDdi NCwgMHgwN2I1LCAweDA3YjgsIDB4MDdiOSwgMHgwN2JhLCAweDA3YmIsIDB4MDdiYgorfTsKKwor CitzdGF0aWMgY29uc3QgdTE2IHJ0bDgyMjV6Ml9yeGdhaW5bXSA9IHsKKwkweDAwMDAsIDB4MDAw MSwgMHgwMDAyLCAweDAwMDMsIDB4MDAwNCwgMHgwMDA1LCAweDAwMDgsIDB4MDAwOSwKKwkweDAw MGEsIDB4MDAwYiwgMHgwMTAyLCAweDAxMDMsIDB4MDEwNCwgMHgwMTA1LCAweDAxNDAsIDB4MDE0 MSwKKwkweDAxNDIsIDB4MDE0MywgMHgwMTQ0LCAweDAxNDUsIDB4MDE4MCwgMHgwMTgxLCAweDAx ODIsIDB4MDE4MywKKwkweDAxODQsIDB4MDE4NSwgMHgwMTg4LCAweDAxODksIDB4MDE4YSwgMHgw MThiLCAweDAyNDMsIDB4MDI0NCwKKwkweDAyNDUsIDB4MDI4MCwgMHgwMjgxLCAweDAyODIsIDB4 MDI4MywgMHgwMjg0LCAweDAyODUsIDB4MDI4OCwKKwkweDAyODksIDB4MDI4YSwgMHgwMjhiLCAw eDAyOGMsIDB4MDM0MiwgMHgwMzQzLCAweDAzNDQsIDB4MDM0NSwKKwkweDAzODAsIDB4MDM4MSwg MHgwMzgyLCAweDAzODMsIDB4MDM4NCwgMHgwMzg1LCAweDAzODgsIDB4MDM4OSwKKwkweDAzOGEs IDB4MDM4YiwgMHgwMzhjLCAweDAzOGQsIDB4MDM5MCwgMHgwMzkxLCAweDAzOTIsIDB4MDM5MywK KwkweDAzOTQsIDB4MDM5NSwgMHgwMzk4LCAweDAzOTksIDB4MDM5YSwgMHgwMzliLCAweDAzOWMs IDB4MDM5ZCwKKwkweDAzYTAsIDB4MDNhMSwgMHgwM2EyLCAweDAzYTMsIDB4MDNhNCwgMHgwM2E1 LCAweDAzYTgsIDB4MDNhOSwKKwkweDAzYWEsIDB4MDNhYiwgMHgwM2FjLCAweDAzYWQsIDB4MDNi MCwgMHgwM2IxLCAweDAzYjIsIDB4MDNiMywKKwkweDAzYjQsIDB4MDNiNSwgMHgwM2I4LCAweDAz YjksIDB4MDNiYSwgMHgwM2JiLCAweDAzYmIKK307CisKKworc3RhdGljIGNvbnN0IHU4IHJ0bDgy MjVfYWdjW10gPSB7CisJMHg5ZSwgMHg5ZSwgMHg5ZSwgMHg5ZSwgMHg5ZSwgMHg5ZSwgMHg5ZSwg MHg5ZSwKKwkweDlkLCAweDljLCAweDliLCAweDlhLCAweDk5LCAweDk4LCAweDk3LCAweDk2LAor CTB4OTUsIDB4OTQsIDB4OTMsIDB4OTIsIDB4OTEsIDB4OTAsIDB4OGYsIDB4OGUsCisJMHg4ZCwg MHg4YywgMHg4YiwgMHg4YSwgMHg4OSwgMHg4OCwgMHg4NywgMHg4NiwKKwkweDg1LCAweDg0LCAw eDgzLCAweDgyLCAweDgxLCAweDgwLCAweDNmLCAweDNlLAorCTB4M2QsIDB4M2MsIDB4M2IsIDB4 M2EsIDB4MzksIDB4MzgsIDB4MzcsIDB4MzYsCisJMHgzNSwgMHgzNCwgMHgzMywgMHgzMiwgMHgz MSwgMHgzMCwgMHgyZiwgMHgyZSwKKwkweDJkLCAweDJjLCAweDJiLCAweDJhLCAweDI5LCAweDI4 LCAweDI3LCAweDI2LAorCTB4MjUsIDB4MjQsIDB4MjMsIDB4MjIsIDB4MjEsIDB4MjAsIDB4MWYs IDB4MWUsCisJMHgxZCwgMHgxYywgMHgxYiwgMHgxYSwgMHgxOSwgMHgxOCwgMHgxNywgMHgxNiwK KwkweDE1LCAweDE0LCAweDEzLCAweDEyLCAweDExLCAweDEwLCAweDBmLCAweDBlLAorCTB4MGQs IDB4MGMsIDB4MGIsIDB4MGEsIDB4MDksIDB4MDgsIDB4MDcsIDB4MDYsCisJMHgwNSwgMHgwNCwg MHgwMywgMHgwMiwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwKKwkweDAxLCAweDAxLCAweDAxLCAw eDAxLCAweDAxLCAweDAxLCAweDAxLCAweDAxLAorCTB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4 MDEsIDB4MDEsIDB4MDEsIDB4MDEsCisJMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgw MSwgMHgwMSwgMHgwMQorfTsKKworCiBzdGF0aWMgdm9pZCBydGw4MjI1X3dyaXRlKHN0cnVjdCBp ZWVlODAyMTFfaHcgKmRldiwgdTggYWRkciwgdTE2IGRhdGEpCiB7CiAJc3RydWN0IHJ0bDgxODBf cHJpdiAqcHJpdiA9IGRldi0+cHJpdjsKQEAgLTE3Nyw4NCArMjkyLDEwIEBAIHN0YXRpYyB1MTYg cnRsODIyNV9yZWFkKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgdTggYWRkcikKIAlyZXR1cm4g b3V0OwogfQogCi1zdGF0aWMgY29uc3QgdTE2IHJ0bDgyMjViY2RfcnhnYWluW10gPSB7Ci0JMHgw NDAwLCAweDA0MDEsIDB4MDQwMiwgMHgwNDAzLCAweDA0MDQsIDB4MDQwNSwgMHgwNDA4LCAweDA0 MDksCi0JMHgwNDBhLCAweDA0MGIsIDB4MDUwMiwgMHgwNTAzLCAweDA1MDQsIDB4MDUwNSwgMHgw NTQwLCAweDA1NDEsCi0JMHgwNTQyLCAweDA1NDMsIDB4MDU0NCwgMHgwNTQ1LCAweDA1ODAsIDB4 MDU4MSwgMHgwNTgyLCAweDA1ODMsCi0JMHgwNTg0LCAweDA1ODUsIDB4MDU4OCwgMHgwNTg5LCAw eDA1OGEsIDB4MDU4YiwgMHgwNjQzLCAweDA2NDQsCi0JMHgwNjQ1LCAweDA2ODAsIDB4MDY4MSwg MHgwNjgyLCAweDA2ODMsIDB4MDY4NCwgMHgwNjg1LCAweDA2ODgsCi0JMHgwNjg5LCAweDA2OGEs IDB4MDY4YiwgMHgwNjhjLCAweDA3NDIsIDB4MDc0MywgMHgwNzQ0LCAweDA3NDUsCi0JMHgwNzgw LCAweDA3ODEsIDB4MDc4MiwgMHgwNzgzLCAweDA3ODQsIDB4MDc4NSwgMHgwNzg4LCAweDA3ODks Ci0JMHgwNzhhLCAweDA3OGIsIDB4MDc4YywgMHgwNzhkLCAweDA3OTAsIDB4MDc5MSwgMHgwNzky LCAweDA3OTMsCi0JMHgwNzk0LCAweDA3OTUsIDB4MDc5OCwgMHgwNzk5LCAweDA3OWEsIDB4MDc5 YiwgMHgwNzljLCAweDA3OWQsCi0JMHgwN2EwLCAweDA3YTEsIDB4MDdhMiwgMHgwN2EzLCAweDA3 YTQsIDB4MDdhNSwgMHgwN2E4LCAweDA3YTksCi0JMHgwN2FhLCAweDA3YWIsIDB4MDdhYywgMHgw N2FkLCAweDA3YjAsIDB4MDdiMSwgMHgwN2IyLCAweDA3YjMsCi0JMHgwN2I0LCAweDA3YjUsIDB4 MDdiOCwgMHgwN2I5LCAweDA3YmEsIDB4MDdiYiwgMHgwN2JiCi19OwogCi1zdGF0aWMgY29uc3Qg dTggcnRsODIyNV9hZ2NbXSA9IHsKLQkweDllLCAweDllLCAweDllLCAweDllLCAweDllLCAweDll LCAweDllLCAweDllLAotCTB4OWQsIDB4OWMsIDB4OWIsIDB4OWEsIDB4OTksIDB4OTgsIDB4OTcs IDB4OTYsCi0JMHg5NSwgMHg5NCwgMHg5MywgMHg5MiwgMHg5MSwgMHg5MCwgMHg4ZiwgMHg4ZSwK LQkweDhkLCAweDhjLCAweDhiLCAweDhhLCAweDg5LCAweDg4LCAweDg3LCAweDg2LAotCTB4ODUs IDB4ODQsIDB4ODMsIDB4ODIsIDB4ODEsIDB4ODAsIDB4M2YsIDB4M2UsCi0JMHgzZCwgMHgzYywg MHgzYiwgMHgzYSwgMHgzOSwgMHgzOCwgMHgzNywgMHgzNiwKLQkweDM1LCAweDM0LCAweDMzLCAw eDMyLCAweDMxLCAweDMwLCAweDJmLCAweDJlLAotCTB4MmQsIDB4MmMsIDB4MmIsIDB4MmEsIDB4 MjksIDB4MjgsIDB4MjcsIDB4MjYsCi0JMHgyNSwgMHgyNCwgMHgyMywgMHgyMiwgMHgyMSwgMHgy MCwgMHgxZiwgMHgxZSwKLQkweDFkLCAweDFjLCAweDFiLCAweDFhLCAweDE5LCAweDE4LCAweDE3 LCAweDE2LAotCTB4MTUsIDB4MTQsIDB4MTMsIDB4MTIsIDB4MTEsIDB4MTAsIDB4MGYsIDB4MGUs Ci0JMHgwZCwgMHgwYywgMHgwYiwgMHgwYSwgMHgwOSwgMHgwOCwgMHgwNywgMHgwNiwKLQkweDA1 LCAweDA0LCAweDAzLCAweDAyLCAweDAxLCAweDAxLCAweDAxLCAweDAxLAotCTB4MDEsIDB4MDEs IDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsCi0JMHgwMSwgMHgwMSwgMHgwMSwg MHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSwKLQkweDAxLCAweDAxLCAweDAxLCAweDAxLCAw eDAxLCAweDAxLCAweDAxLCAweDAxCi19OwotCi1zdGF0aWMgY29uc3QgdTggcnRsODIyNV9nYWlu W10gPSB7Ci0JMHgyMywgMHg4OCwgMHg3YywgMHhhNSwgLyogLTgyZGJtICovCi0JMHgyMywgMHg4 OCwgMHg3YywgMHhiNSwgLyogLTgyZGJtICovCi0JMHgyMywgMHg4OCwgMHg3YywgMHhjNSwgLyog LTgyZGJtICovCi0JMHgzMywgMHg4MCwgMHg3OSwgMHhjNSwgLyogLTc4ZGJtICovCi0JMHg0Mywg MHg3OCwgMHg3NiwgMHhjNSwgLyogLTc0ZGJtICovCi0JMHg1MywgMHg2MCwgMHg3MywgMHhjNSwg LyogLTcwZGJtICovCi0JMHg2MywgMHg1OCwgMHg3MCwgMHhjNSwgLyogLTY2ZGJtICovCi19Owot Ci1zdGF0aWMgY29uc3QgdTggcnRsODIyNV90aHJlc2hvbGRbXSA9IHsKLQkweDhkLCAweDhkLCAw eDhkLCAweDhkLCAweDlkLCAweGFkLCAweGJkCi19OwotCi1zdGF0aWMgY29uc3QgdTggcnRsODIy NV90eF9nYWluX2Nja19vZmRtW10gPSB7Ci0JMHgwMiwgMHgwNiwgMHgwZSwgMHgxZSwgMHgzZSwg MHg3ZQotfTsKLQotc3RhdGljIGNvbnN0IHU4IHJ0bDgyMjVfdHhfcG93ZXJfY2NrW10gPSB7Ci0J MHgxOCwgMHgxNywgMHgxNSwgMHgxMSwgMHgwYywgMHgwOCwgMHgwNCwgMHgwMiwKLQkweDFiLCAw eDFhLCAweDE3LCAweDEzLCAweDBlLCAweDA5LCAweDA0LCAweDAyLAotCTB4MWYsIDB4MWUsIDB4 MWEsIDB4MTUsIDB4MTAsIDB4MGEsIDB4MDUsIDB4MDIsCi0JMHgyMiwgMHgyMSwgMHgxZCwgMHgx OCwgMHgxMSwgMHgwYiwgMHgwNiwgMHgwMiwKLQkweDI2LCAweDI1LCAweDIxLCAweDFiLCAweDE0 LCAweDBkLCAweDA2LCAweDAzLAotCTB4MmIsIDB4MmEsIDB4MjUsIDB4MWUsIDB4MTYsIDB4MGUs IDB4MDcsIDB4MDMKLX07CiAKLXN0YXRpYyBjb25zdCB1OCBydGw4MjI1X3R4X3Bvd2VyX2Nja19j aDE0W10gPSB7Ci0JMHgxOCwgMHgxNywgMHgxNSwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgw MCwKLQkweDFiLCAweDFhLCAweDE3LCAweDBlLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAotCTB4 MWYsIDB4MWUsIDB4MWEsIDB4MGYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0JMHgyMiwgMHgy MSwgMHgxZCwgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLQkweDI2LCAweDI1LCAweDIx LCAweDEzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAotCTB4MmIsIDB4MmEsIDB4MjUsIDB4MTUs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAKLX07CiAKLXN0YXRpYyBjb25zdCB1OCBydGw4MjI1X3R4 X3Bvd2VyX29mZG1bXSA9IHsKLQkweDgwLCAweDkwLCAweGEyLCAweGI1LCAweGNiLCAweGU0Ci19 OwogCi1zdGF0aWMgY29uc3QgdTMyIHJ0bDgyMjVfY2hhbltdID0gewotCTB4MDg1YywgMHgwOGRj LCAweDA5NWMsIDB4MDlkYywgMHgwYTVjLCAweDBhZGMsIDB4MGI1YywKLQkweDBiZGMsIDB4MGM1 YywgMHgwY2RjLCAweDBkNWMsIDB4MGRkYywgMHgwZTVjLCAweDBmNzIKLX07CiAKIHN0YXRpYyB2 b2lkIHJ0bDgyMjVfcmZfc2V0X3R4X3Bvd2VyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgaW50 IGNoYW5uZWwpCiB7CkBAIC0yODMsNiArMzI0LDcgQEAgc3RhdGljIHZvaWQgcnRsODIyNV9yZl9z ZXRfdHhfcG93ZXIoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBpbnQgY2hhbm5lbCkKIAogCW1z bGVlcCgxKTsgLyogRklYTUU6IG9wdGlvbmFsPyAqLwogCisJLyogVE9ETzogdXNlX2FuYXBhcmFt Ml9kZXYuY19mdW5jKi8KIAkvKiBhbmFwYXJhbTIgb24gKi8KIAlydGw4MTh4X2lvd3JpdGU4KHBy aXYsICZwcml2LT5tYXAtPkVFUFJPTV9DTUQsIFJUTDgxOFhfRUVQUk9NX0NNRF9DT05GSUcpOwog CXJlZyA9IHJ0bDgxOHhfaW9yZWFkOChwcml2LCAmcHJpdi0+bWFwLT5DT05GSUczKTsKQEAgLTMx Myw2ICszNTUsNyBAQCBzdGF0aWMgdm9pZCBydGw4MjI1X3JmX2luaXQoc3RydWN0IGllZWU4MDIx MV9odyAqZGV2KQogCXJ0bDgxOHhfaW93cml0ZTE2KHByaXYsICZwcml2LT5tYXAtPlJGUGluc091 dHB1dCwgMHgwNDgwKTsKIAlydGw4MTh4X2lvd3JpdGUxNihwcml2LCAmcHJpdi0+bWFwLT5SRlBp bnNFbmFibGUsIDB4MUZGRik7CiAJcnRsODE4eF9pb3dyaXRlMTYocHJpdiwgJnByaXYtPm1hcC0+ UkZQaW5zU2VsZWN0LCAweDA0ODgpOworCiAJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+ bWFwLT5HUF9FTkFCTEUsIDApOwogCXJ0bDgxOHhfaW9yZWFkOChwcml2LCAmcHJpdi0+bWFwLT5F RVBST01fQ01EKTsKIAltc2xlZXAoMjAwKTsJLyogRklYTUU6IGVoaD8/ICovCkBAIC00NTYsMjIg KzQ5OSw2IEBAIHN0YXRpYyB2b2lkIHJ0bDgyMjVfcmZfaW5pdChzdHJ1Y3QgaWVlZTgwMjExX2h3 ICpkZXYpCiAJcnRsODIyNV93cml0ZV9waHlfY2NrKGRldiwgMHg0MSwgcnRsODIyNV90aHJlc2hv bGRbMF0pOwogfQogCi1zdGF0aWMgY29uc3QgdTggcnRsODIyNXoyX3R4X3Bvd2VyX2Nja19jaDE0 W10gPSB7Ci0JMHgzNiwgMHgzNSwgMHgyZSwgMHgxYiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMAot fTsKLQotc3RhdGljIGNvbnN0IHU4IHJ0bDgyMjV6Ml90eF9wb3dlcl9jY2tfQltdID0gewotCTB4 MzAsIDB4MmYsIDB4MjksIDB4MjEsIDB4MTksIDB4MTAsIDB4MDgsIDB4MDQKLX07Ci0KLXN0YXRp YyBjb25zdCB1OCBydGw4MjI1ejJfdHhfcG93ZXJfY2NrX0FbXSA9IHsKLQkweDMzLCAweDMyLCAw eDJiLCAweDIzLCAweDFhLCAweDExLCAweDA4LCAweDA0Ci19OwotCi1zdGF0aWMgY29uc3QgdTgg cnRsODIyNXoyX3R4X3Bvd2VyX2Nja1tdID0gewotCTB4MzYsIDB4MzUsIDB4MmUsIDB4MjUsIDB4 MWMsIDB4MTIsIDB4MDksIDB4MDQKLX07Ci0KIHN0YXRpYyB2b2lkIHJ0bDgyMjV6Ml9yZl9zZXRf dHhfcG93ZXIoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBpbnQgY2hhbm5lbCkKIHsKIAlzdHJ1 Y3QgcnRsODE4MF9wcml2ICpwcml2ID0gZGV2LT5wcml2OwpAQCAtNTE2LDIxICs1NDMsNiBAQCBz dGF0aWMgdm9pZCBydGw4MjI1ejJfcmZfc2V0X3R4X3Bvd2VyKHN0cnVjdCBpZWVlODAyMTFfaHcg KmRldiwgaW50IGNoYW5uZWwpCiAJbXNsZWVwKDEpOwogfQogCi1zdGF0aWMgY29uc3QgdTE2IHJ0 bDgyMjV6Ml9yeGdhaW5bXSA9IHsKLQkweDAwMDAsIDB4MDAwMSwgMHgwMDAyLCAweDAwMDMsIDB4 MDAwNCwgMHgwMDA1LCAweDAwMDgsIDB4MDAwOSwKLQkweDAwMGEsIDB4MDAwYiwgMHgwMTAyLCAw eDAxMDMsIDB4MDEwNCwgMHgwMTA1LCAweDAxNDAsIDB4MDE0MSwKLQkweDAxNDIsIDB4MDE0Mywg MHgwMTQ0LCAweDAxNDUsIDB4MDE4MCwgMHgwMTgxLCAweDAxODIsIDB4MDE4MywKLQkweDAxODQs IDB4MDE4NSwgMHgwMTg4LCAweDAxODksIDB4MDE4YSwgMHgwMThiLCAweDAyNDMsIDB4MDI0NCwK LQkweDAyNDUsIDB4MDI4MCwgMHgwMjgxLCAweDAyODIsIDB4MDI4MywgMHgwMjg0LCAweDAyODUs IDB4MDI4OCwKLQkweDAyODksIDB4MDI4YSwgMHgwMjhiLCAweDAyOGMsIDB4MDM0MiwgMHgwMzQz LCAweDAzNDQsIDB4MDM0NSwKLQkweDAzODAsIDB4MDM4MSwgMHgwMzgyLCAweDAzODMsIDB4MDM4 NCwgMHgwMzg1LCAweDAzODgsIDB4MDM4OSwKLQkweDAzOGEsIDB4MDM4YiwgMHgwMzhjLCAweDAz OGQsIDB4MDM5MCwgMHgwMzkxLCAweDAzOTIsIDB4MDM5MywKLQkweDAzOTQsIDB4MDM5NSwgMHgw Mzk4LCAweDAzOTksIDB4MDM5YSwgMHgwMzliLCAweDAzOWMsIDB4MDM5ZCwKLQkweDAzYTAsIDB4 MDNhMSwgMHgwM2EyLCAweDAzYTMsIDB4MDNhNCwgMHgwM2E1LCAweDAzYTgsIDB4MDNhOSwKLQkw eDAzYWEsIDB4MDNhYiwgMHgwM2FjLCAweDAzYWQsIDB4MDNiMCwgMHgwM2IxLCAweDAzYjIsIDB4 MDNiMywKLQkweDAzYjQsIDB4MDNiNSwgMHgwM2I4LCAweDAzYjksIDB4MDNiYSwgMHgwM2JiLCAw eDAzYmIKLX07Ci0KIHN0YXRpYyB2b2lkIHJ0bDgyMjV6Ml9yZl9pbml0KHN0cnVjdCBpZWVlODAy MTFfaHcgKmRldikKIHsKIAlzdHJ1Y3QgcnRsODE4MF9wcml2ICpwcml2ID0gZGV2LT5wcml2OwpA QCAtNzMxLDMyICs3NDMsMTMgQEAgc3RhdGljIHZvaWQgcnRsODIyNV9yZl9zZXRfY2hhbm5lbChz dHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsCiAJbXNsZWVwKDEwKTsKIH0KIAotc3RhdGljIHZvaWQg cnRsODIyNV9yZl9jb25mX2VycChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsCi0JCQkJc3RydWN0 IGllZWU4MDIxMV9ic3NfY29uZiAqaW5mbykKLXsKLQlzdHJ1Y3QgcnRsODE4MF9wcml2ICpwcml2 ID0gZGV2LT5wcml2OwotCi0JaWYgKGluZm8tPnVzZV9zaG9ydF9zbG90KSB7Ci0JCXJ0bDgxOHhf aW93cml0ZTgocHJpdiwgJnByaXYtPm1hcC0+U0xPVCwgMHg5KTsKLQkJcnRsODE4eF9pb3dyaXRl OChwcml2LCAmcHJpdi0+bWFwLT5TSUZTLCAweDIyKTsKLQkJcnRsODE4eF9pb3dyaXRlOChwcml2 LCAmcHJpdi0+bWFwLT5ESUZTLCAweDE0KTsKLQkJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJp di0+bWFwLT5FSUZTLCA4MSk7Ci0JCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgJnByaXYtPm1hcC0+ Q1dfVkFMLCAweDczKTsKLQl9IGVsc2UgewotCQlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2 LT5tYXAtPlNMT1QsIDB4MTQpOwotCQlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAt PlNJRlMsIDB4NDQpOwotCQlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPkRJRlMs IDB4MjQpOwotCQlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPkVJRlMsIDgxKTsK LQkJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5DV19WQUwsIDB4YTUpOwotCX0K LX0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBydGw4MTh4X3JmX29wcyBydGw4MjI1X29wcyA9IHsK IAkubmFtZQkJPSAicnRsODIyNSIsCiAJLmluaXQJCT0gcnRsODIyNV9yZl9pbml0LAogCS5zdG9w CQk9IHJ0bDgyMjVfcmZfc3RvcCwKIAkuc2V0X2NoYW4JPSBydGw4MjI1X3JmX3NldF9jaGFubmVs LAotCS5jb25mX2VycAk9IHJ0bDgyMjVfcmZfY29uZl9lcnAsCisKIH07CiAKIHN0YXRpYyBjb25z dCBzdHJ1Y3QgcnRsODE4eF9yZl9vcHMgcnRsODIyNXoyX29wcyA9IHsKQEAgLTc2NCw3ICs3NTcs NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgxOHhfcmZfb3BzIHJ0bDgyMjV6Ml9vcHMgPSB7 CiAJLmluaXQJCT0gcnRsODIyNXoyX3JmX2luaXQsCiAJLnN0b3AJCT0gcnRsODIyNV9yZl9zdG9w LAogCS5zZXRfY2hhbgk9IHJ0bDgyMjVfcmZfc2V0X2NoYW5uZWwsCi0JLmNvbmZfZXJwCT0gcnRs ODIyNV9yZl9jb25mX2VycCwKKwogfTsKIAogY29uc3Qgc3RydWN0IHJ0bDgxOHhfcmZfb3BzICog cnRsODE4MF9kZXRlY3RfcmYoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2KQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsODE4eC9ydGw4MTgwL3J0bDgyMjVzZS5jIGIvZHJpdmVy cy9uZXQvd2lyZWxlc3MvcnRsODE4eC9ydGw4MTgwL3J0bDgyMjVzZS5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhNGQxNDgKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJz L25ldC93aXJlbGVzcy9ydGw4MTh4L3J0bDgxODAvcnRsODIyNXNlLmMKQEAgLTAsMCArMSw1MDAg QEAKKworLyoKKyAqIFJhZGlvIHR1bmluZyBmb3IgUlRMODIyNSBvbiBSVEw4MTg3U0UKKyAqCisg KiBDb3B5cmlnaHQgMjAwOSBMYXJyeSBGaW5nZXIgPExhcnJ5LkZpbmdlckBsd2Zpbmdlci5uZXQ+ CisgKgorICogQmFzZWQgb24gdGhlIHI4MTgwIGFuZCBSZWFsdGVrIHI4MTg3c2UgZHJpdmVycywg d2hpY2ggYXJlOgorICogQ29weXJpZ2h0IDIwMDQtMjAwNSBBbmRyZWEgTWVyZWxsbyA8YW5kcmVh bXJsQHRpc2NhbGkuaXQ+LCBldCBhbC4KKyAqCisgKiBBbHNvIGJhc2VkIG9uIHRoZSBydGw4MTg3 IGRyaXZlciwgd2hpY2ggaXM6CisgKiBDb3B5cmlnaHQgMjAwNyBNaWNoYWVsIFd1IDxmbGFtaW5n aWNlQHNvdXJtaWxrLm5ldD4KKyAqIENvcHlyaWdodCAyMDA3IEFuZHJlYSBNZXJlbGxvIDxhbmRy ZWFtcmxAZ21haWwuY29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVi bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKworI2luY2x1ZGUg PG5ldC9tYWM4MDIxMS5oPgorCisjaW5jbHVkZSAicnRsODE4MC5oIgorI2luY2x1ZGUgInJ0bDgy MjVzZS5oIgorCisKKyNkZWZpbmUgUEZYICJydGw4MjI1IChzZSkiCisKK3N0YXRpYyBjb25zdCB1 MzIgUkZfR0FJTl9UQUJMRVtdID0geworCTB4MDA5NiwgMHgwMDc2LCAweDAwNTYsIDB4MDAzNiwg MHgwMDE2LCAweDAxZjYsIDB4MDFkNiwgMHgwMWI2LAorCTB4MDE5NiwgMHgwMTc2LCAweDAwRjcs IDB4MDBENywgMHgwMEI3LCAweDAwOTcsIDB4MDA3NywgMHgwMDU3LAorCTB4MDAzNywgMHgwMEZC LCAweDAwREIsIDB4MDBCQiwgMHgwMEZGLCAweDAwRTMsIDB4MDBDMywgMHgwMEEzLAorCTB4MDA4 MywgMHgwMDYzLCAweDAwNDMsIDB4MDAyMywgMHgwMDAzLCAweDAxRTMsIDB4MDFDMywgMHgwMUEz LAorCTB4MDE4MywgMHgwMTYzLCAweDAxNDMsIDB4MDEyMywgMHgwMTAzCit9OworCisKK3N0YXRp YyBjb25zdCB1OCBjY2tfb2ZkbV9nYWluX3NldHRpbmdzW10gPSB7CisJMHgwMCwgMHgwMSwgMHgw MiwgMHgwMywgMHgwNCwgMHgwNSwKKwkweDA2LCAweDA3LCAweDA4LCAweDA5LCAweDBhLCAweDBi LAorCTB4MGMsIDB4MGQsIDB4MGUsIDB4MGYsIDB4MTAsIDB4MTEsCisJMHgxMiwgMHgxMywgMHgx NCwgMHgxNSwgMHgxNiwgMHgxNywKKwkweDE4LCAweDE5LCAweDFhLCAweDFiLCAweDFjLCAweDFk LAorCTB4MWUsIDB4MWYsIDB4MjAsIDB4MjEsIDB4MjIsIDB4MjMsCit9OworCisKKworc3RhdGlj IGNvbnN0IHU4IHJ0bDgyMjVzZV90eF9nYWluX2Nja19vZmRtW10gPSB7CisJMHgwMiwgMHgwNiwg MHgwZSwgMHgxZSwgMHgzZSwgMHg3ZQorfTsKKworc3RhdGljIGNvbnN0IHU4IHJ0bDgyMjVzZV90 eF9wb3dlcl9jY2tbXSA9IHsKKwkweDE4LCAweDE3LCAweDE1LCAweDExLCAweDBjLCAweDA4LCAw eDA0LCAweDAyLAorCTB4MWIsIDB4MWEsIDB4MTcsIDB4MTMsIDB4MGUsIDB4MDksIDB4MDQsIDB4 MDIsCisJMHgxZiwgMHgxZSwgMHgxYSwgMHgxNSwgMHgxMCwgMHgwYSwgMHgwNSwgMHgwMiwKKwkw eDIyLCAweDIxLCAweDFkLCAweDE4LCAweDExLCAweDBiLCAweDA2LCAweDAyLAorCTB4MjYsIDB4 MjUsIDB4MjEsIDB4MWIsIDB4MTQsIDB4MGQsIDB4MDYsIDB4MDMsCisJMHgyYiwgMHgyYSwgMHgy NSwgMHgxZSwgMHgxNiwgMHgwZSwgMHgwNywgMHgwMworfTsKKworc3RhdGljIGNvbnN0IHU4IHJ0 bDgyMjVzZV90eF9wb3dlcl9jY2tfY2gxNFtdID0geworCTB4MTgsIDB4MTcsIDB4MTUsIDB4MGMs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJMHgxYiwgMHgxYSwgMHgxNywgMHgwZSwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwKKwkweDFmLCAweDFlLCAweDFhLCAweDBmLCAweDAwLCAweDAwLCAw eDAwLCAweDAwLAorCTB4MjIsIDB4MjEsIDB4MWQsIDB4MTEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAsCisJMHgyNiwgMHgyNSwgMHgyMSwgMHgxMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkw eDJiLCAweDJhLCAweDI1LCAweDE1LCAweDAwLCAweDAwLCAweDAwLCAweDAwCit9OworCitzdGF0 aWMgY29uc3QgdTggcnRsODIyNXNlX3R4X3Bvd2VyX29mZG1bXSA9IHsKKwkweDgwLCAweDkwLCAw eGEyLCAweGI1LCAweGNiLCAweGU0Cit9OworCitzdGF0aWMgY29uc3QgdTMyIHJ0bDgyMjVzZV9j aGFuW10gPSB7CisJMHgwMDgwLCAweDAxMDAsIDB4MDE4MCwgMHgwMjAwLCAweDAyODAsIDB4MDMw MCwgMHgwMzgwLAorCTB4MDQwMCwgMHgwNDgwLCAweDA1MDAsIDB4MDU4MCwgMHgwNjAwLCAweDA2 ODAsIDB4MDc0QSwKK307CisKK3N0YXRpYyBjb25zdCB1OCBydGw4MjI1c2V6Ml90eF9wb3dlcl9j Y2tfY2gxNFtdID0geworCTB4MzYsIDB4MzUsIDB4MmUsIDB4MWIsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAKK307CisKK3N0YXRpYyBjb25zdCB1OCBydGw4MjI1c2V6Ml90eF9wb3dlcl9jY2tfQltd ID0geworCTB4MzAsIDB4MmYsIDB4MjksIDB4MjEsIDB4MTksIDB4MTAsIDB4MDgsIDB4MDQKK307 CisKK3N0YXRpYyBjb25zdCB1OCBydGw4MjI1c2V6Ml90eF9wb3dlcl9jY2tfQVtdID0geworCTB4 MzMsIDB4MzIsIDB4MmIsIDB4MjMsIDB4MWEsIDB4MTEsIDB4MDgsIDB4MDQKK307CisKK3N0YXRp YyBjb25zdCB1OCBydGw4MjI1c2V6Ml90eF9wb3dlcl9jY2tbXSA9IHsKKwkweDM2LCAweDM1LCAw eDJlLCAweDI1LCAweDFjLCAweDEyLCAweDA5LCAweDA0Cit9OworCitzdGF0aWMgY29uc3QgdTgg WkVCUkFfQUdDW10gPSB7CisJMHg3RSwgMHg3RSwgMHg3RSwgMHg3RSwgMHg3RCwgMHg3QywgMHg3 QiwgMHg3QSwKKwkweDc5LCAweDc4LCAweDc3LCAweDc2LCAweDc1LCAweDc0LCAweDczLCAweDcy LAorCTB4NzEsIDB4NzAsIDB4NkYsIDB4NkUsIDB4NkQsIDB4NkMsIDB4NkIsIDB4NkEsCisJMHg2 OSwgMHg2OCwgMHg2NywgMHg2NiwgMHg2NSwgMHg2NCwgMHg2MywgMHg2MiwKKwkweDQ4LCAweDQ3 LCAweDQ2LCAweDQ1LCAweDQ0LCAweDI5LCAweDI4LCAweDI3LAorCTB4MjYsIDB4MjUsIDB4MjQs IDB4MjMsIDB4MjIsIDB4MjEsIDB4MDgsIDB4MDcsCisJMHgwNiwgMHgwNSwgMHgwNCwgMHgwMywg MHgwMiwgMHgwMSwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw eDAwLCAweDAwLCAweDAwLAorCTB4MGYsIDB4MGYsIDB4MGYsIDB4MGYsIDB4MGYsIDB4MGYsIDB4 MGYsIDB4MGYsCisJMHgwZiwgMHgwZiwgMHgxMCwgMHgxMSwgMHgxMiwgMHgxMywgMHgxNSwgMHgx NiwKKwkweDE3LCAweDE3LCAweDE4LCAweDE4LCAweDE5LCAweDFhLCAweDFhLCAweDFiLAorCTB4 MWIsIDB4MWMsIDB4MWMsIDB4MWQsIDB4MWQsIDB4MWQsIDB4MWUsIDB4MWUsCisJMHgxZiwgMHgx ZiwgMHgxZiwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMSwKKwkweDIxLCAweDIxLCAweDIy LCAweDIyLCAweDIyLCAweDIzLCAweDIzLCAweDI0LAorCTB4MjQsIDB4MjUsIDB4MjUsIDB4MjUs IDB4MjYsIDB4MjYsIDB4MjcsIDB4MjcsCisJMHgyRiwgMHgyRiwgMHgyRiwgMHgyRiwgMHgyRiwg MHgyRiwgMHgyRiwgMHgyRgorfTsKKworc3RhdGljIGNvbnN0IHU4IE9GRE1fQ09ORklHW10gPSB7 CisJMHgxMCwgMHgwRiwgMHgwQSwgMHgwQywgMHgxNCwgMHhGQSwgMHhGRiwgMHg1MCwKKwkweDAw LCAweDUwLCAweDAwLCAweDAwLCAweDAwLCAweDVDLCAweDAwLCAweDAwLAorCTB4NDAsIDB4MDAs IDB4NDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QTgsIDB4MjYsCisJMHgzMiwgMHgzMywgMHgwNiwg MHhBNSwgMHg2RiwgMHg1NSwgMHhDOCwgMHhCQiwKKwkweDBBLCAweEUxLCAweDJDLCAweDRBLCAw eDg2LCAweDgzLCAweDM0LCAweDAwLAorCTB4NEYsIDB4MjQsIDB4NkYsIDB4QzIsIDB4MDMsIDB4 NDAsIDB4ODAsIDB4MDAsCisJMHhDMCwgMHhDMSwgMHg1OCwgMHhGMSwgMHgwMCwgMHhDNCwgMHg5 MCwgMHgzZSwKKwkweEQ4LCAweDNDLCAweDdCLCAweDEwLCAweDEwCit9OworCisKKworCisKK3N0 YXRpYyB2b2lkIHJ0bDgxODdzZV90aHJlZV93aXJlX2lvKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRl diwgdTggKmRhdGEsCisJCQkJICAgIHU4IGxlbiwgYm9vbCB3cml0ZSkKK3sKKwlzdHJ1Y3QgcnRs ODE4MF9wcml2ICpwcml2ID0gZGV2LT5wcml2OworCWludCBpOworCXU4IHRtcDsKKworCWRvIHsK KwkJZm9yIChpID0gMDsgaSA8IDU7IGkrKykgeworCQkJdG1wID0gcnRsODE4eF9pb3JlYWQ4KHBy aXYsIFNXXzNXX0NNRDEpOworCQkJaWYgKCEodG1wICYgMHgzKSkKKwkJCQlicmVhazsKKwkJCXVk ZWxheSgxMCk7CisJCX0KKwkJaWYgKGkgPT0gNSkKKwkJCXByaW50ayhLRVJOX0VSUiAgUEZYICJD bWRSZWc6IDB4JXggUkUvV0UgYml0cyBhcmUgbm90IgorCQkJICAgICAgICIgY2xlYXJcbiIsIHRt cCk7CisJCXRtcCA9IHJ0bDgxOHhfaW9yZWFkOChwcml2LCAmcHJpdi0+bWFwLT5yZl9zd19jb25m aWcpIHwgMHgwMjsKKwkJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5yZl9zd19j b25maWcsIHRtcCk7CisKKwkJdG1wID0gcnRsODE4eF9pb3JlYWQ4KHByaXYsIFJFR19BRERSMSgw eDg0KSkgJiAweEY3OworCQlydGw4MTh4X2lvd3JpdGU4KHByaXYsIFJFR19BRERSMSgweDg0KSwg dG1wKTsKKwkJaWYgKHdyaXRlKSB7CisJCQlpZiAobGVuID09IDE2KSB7CisJCQkJcnRsODE4eF9p b3dyaXRlMTYocHJpdiwgU1dfM1dfREIwLAorCQkJCSAgKih1MTYgKilkYXRhKTsKKwkJCX0gZWxz ZSBpZiAobGVuID09IDY0KSB7CisJCQkJcnRsODE4eF9pb3dyaXRlMzIocHJpdiwgU1dfM1dfREIw XzQsCisJCQkJICAqKCh1MzIgKilkYXRhKSk7CisJCQkJcnRsODE4eF9pb3dyaXRlMzIocHJpdiwg U1dfM1dfREIxXzQsCisJCQkJICAqKCh1MzIgKikoZGF0YSArIDQpKSk7CisJCQl9IGVsc2UKKwkJ CQlwcmludGsoS0VSTl9FUlIgUEZYICJVbmltcGxlbWVudGVkIGxlbmd0aFxuIik7CisJCX0gZWxz ZSB7CisJCQlydGw4MTh4X2lvd3JpdGUxNihwcml2LCBTV18zV19EQjAsICoodTE2ICopZGF0YSk7 CisJCX0KKwkJaWYgKHdyaXRlKQorCQkJdG1wID0gMjsKKwkJZWxzZQorCQkJdG1wID0gMTsKKwkJ cnRsODE4eF9pb3dyaXRlOChwcml2LCBTV18zV19DTUQxLCB0bXApOworCQlmb3IgKGkgPSAwOyBp IDwgNTsgaSsrKSB7CisJCQl0bXAgPSBydGw4MTh4X2lvcmVhZDgocHJpdiwgU1dfM1dfQ01EMSk7 CisJCQlpZiAoISh0bXAgJiAweDMpKQorCQkJCWJyZWFrOworCQkJdWRlbGF5KDEwKTsKKwkJfQor CQlydGw4MTh4X2lvd3JpdGU4KHByaXYsIFNXXzNXX0NNRDEsIDApOworCQlpZiAoIXdyaXRlKSB7 CisJCQkqKCh1MTYgKilkYXRhKSA9IHJ0bDgxOHhfaW9yZWFkMTYocHJpdiwgU0lfREFUQV9SRUcp OworCQkJKigodTE2ICopZGF0YSkgJj0gMHgwRkZGOworCQl9CisJfSB3aGlsZSAoMCk7Cit9CisK K3N0YXRpYyB1MzIgcnRsODE4N3NlX3JmX3JlYWRyZWcoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2 LCB1OCBhZGRyKQoreworCXUzMiBkYXRhcmVhZCA9IGFkZHIgJiAweDBGOworCXJ0bDgxODdzZV90 aHJlZV93aXJlX2lvKGRldiwgKHU4ICopJmRhdGFyZWFkLCAxNiwgMCk7CisJcmV0dXJuIGRhdGFy ZWFkOworfQorCitzdGF0aWMgdm9pZCBydGw4MTg3c2VfcmZfd3JpdGVyZWcoc3RydWN0IGllZWU4 MDIxMV9odyAqZGV2LCB1OCBhZGRyLCB1MzIgZGF0YSkKK3sKKwl1MzIgb3V0ZGF0YSA9IChkYXRh IDw8IDQpIHwgKHUzMikoYWRkciAmIDB4MEYpOworCXJ0bDgxODdzZV90aHJlZV93aXJlX2lvKGRl diwgKHU4ICopJm91dGRhdGEsIDE2LCAxKTsKK30KKworCitzdGF0aWMgdm9pZCBydGw4MjI1c2Vf d3JpdGVfemVicmFfYWdjKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldikKK3sKKwlpbnQgaTsKKwor CWZvciAoaSA9IDA7IGkgPCAxMjg7IGkrKykgeworCisJCXJ0bDgyMjVzZV93cml0ZV9waHlfb2Zk bShkZXYsIDB4RiwgWkVCUkFfQUdDW2ldKTsKKwkJcnRsODIyNXNlX3dyaXRlX3BoeV9vZmRtKGRl diwgMHhFLCBpKzB4ODApOworCQlydGw4MjI1c2Vfd3JpdGVfcGh5X29mZG0oZGV2LCAweEUsIDAp OworCisJfQorfQorCitzdGF0aWMgdm9pZCBydGw4MTg3c2Vfd3JpdGVfb2ZkbV9jb25maWcoc3Ry dWN0IGllZWU4MDIxMV9odyAqZGV2KQoreworCS8qIHdyaXRlIE9GRE1fQ09ORklHIHRhYmxlICov CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgNjA7IGkrKykKKwkJcnRsODIyNXNlX3dyaXRl X3BoeV9vZmRtKGRldiwgaSwgT0ZETV9DT05GSUdbaV0pOworCit9CisKK3N0YXRpYyB2b2lkIHJ0 bDgyMjVzZXoyX3JmX3NldF90eF9wb3dlcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsIGludCBj aGFubmVsKQoreworCXN0cnVjdCBydGw4MTgwX3ByaXYgKnByaXYgPSBkZXYtPnByaXY7CisJdTgg Y2NrX3Bvd2VyLCBvZmRtX3Bvd2VyOworCisJY2NrX3Bvd2VyID0gcHJpdi0+Y2hhbm5lbHNbY2hh bm5lbCAtIDFdLmh3X3ZhbHVlICYgMHhGRjsKKwlpZiAoY2NrX3Bvd2VyID4gMzUpCisJCWNja19w b3dlciA9IDM1OworCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgJnByaXYtPm1hcC0+VFhfR0FJTl9D Q0ssCisJCQkgY2NrX29mZG1fZ2Fpbl9zZXR0aW5nc1tjY2tfcG93ZXJdKTsKKworCW1zbGVlcCgx KTsKKwlvZmRtX3Bvd2VyID0gcHJpdi0+Y2hhbm5lbHNbY2hhbm5lbCAtIDFdLmh3X3ZhbHVlID4+ IDg7CisJaWYgKG9mZG1fcG93ZXIgPiAzNSkKKwkJb2ZkbV9wb3dlciA9IDM1OworI2lmIDAKKwlp ZiAoIWRvX29uY2UpIHsKKwkJcnRsODIyNXNlX3dyaXRlX3BoeV9vZmRtKGRldiwgMiwgMHg0Mik7 CisJCXJ0bDgyMjVzZV93cml0ZV9waHlfb2ZkbShkZXYsIDUsIDB4MDApOworCQlydGw4MjI1c2Vf d3JpdGVfcGh5X29mZG0oZGV2LCA2LCAweDQwKTsKKwkJcnRsODIyNXNlX3dyaXRlX3BoeV9vZmRt KGRldiwgNywgMHgwMCk7CisJCXJ0bDgyMjVzZV93cml0ZV9waHlfb2ZkbShkZXYsIDgsIDB4NDAp OworCQlkb19vbmNlKys7CisJfQorI2VuZGlmCisKKwlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZw cml2LT5tYXAtPlRYX0dBSU5fT0ZETSwKKwkJCSBjY2tfb2ZkbV9nYWluX3NldHRpbmdzW29mZG1f cG93ZXJdKTsKKwlpZiAob2ZkbV9wb3dlciA8IDEyKSB7CisJCXJ0bDgyMjVzZV93cml0ZV9waHlf b2ZkbShkZXYsIDcsIDB4NUMpOworCQlydGw4MjI1c2Vfd3JpdGVfcGh5X29mZG0oZGV2LCA5LCAw eDVDKTsKKwl9CisJaWYgKG9mZG1fcG93ZXIgPCAxOCkgeworCQlydGw4MjI1c2Vfd3JpdGVfcGh5 X29mZG0oZGV2LCA3LCAweDU0KTsKKwkJcnRsODIyNXNlX3dyaXRlX3BoeV9vZmRtKGRldiwgOSwg MHg1NCk7CisJfSBlbHNlIHsKKwkJcnRsODIyNXNlX3dyaXRlX3BoeV9vZmRtKGRldiwgNywgMHg1 MCk7CisJCXJ0bDgyMjVzZV93cml0ZV9waHlfb2ZkbShkZXYsIDksIDB4NTApOworCX0KKworCW1z bGVlcCgxKTsKK30KKworCitzdGF0aWMgdm9pZCBydGw4MTg3c2Vfd3JpdGVfcmZfZ2FpbihzdHJ1 Y3QgaWVlZTgwMjExX2h3ICpkZXYpCit7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDw9IDM2 OyBpKyspIHsKKwkJcnRsODE4N3NlX3JmX3dyaXRlcmVnKGRldiwgMHgwMSwgaSk7IG1kZWxheSgx KTsKKwkJcnRsODE4N3NlX3JmX3dyaXRlcmVnKGRldiwgMHgwMiwgUkZfR0FJTl9UQUJMRVtpXSk7 IG1kZWxheSgxKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIHJ0bDgxODdzZV93cml0ZV9pbml0aWFs X2dhaW4oc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBpbnQgaW5pdF9nYWluKQoreworCisJc3dp dGNoIChpbml0X2dhaW4pIHsKKwlkZWZhdWx0OgorCQlydGw4MjI1c2Vfd3JpdGVfcGh5X29mZG0o ZGV2LCAweDE3LCAweDI2KTsgbWRlbGF5KDEpOworCQlydGw4MjI1c2Vfd3JpdGVfcGh5X29mZG0o ZGV2LCAweDI0LCAweDg2KTsgbWRlbGF5KDEpOworCQlydGw4MjI1c2Vfd3JpdGVfcGh5X29mZG0o ZGV2LCAweDA1LCAweEZBKTsgbWRlbGF5KDEpOworCQlicmVhazsKKwljYXNlIDI6CisJCXJ0bDgy MjVzZV93cml0ZV9waHlfb2ZkbShkZXYsIDB4MTcsIDB4MzYpOyBtZGVsYXkoMSk7CisJCXJ0bDgy MjVzZV93cml0ZV9waHlfb2ZkbShkZXYsIDB4MjQsIDB4ODYpOyBtZGVsYXkoMSk7CisJCXJ0bDgy MjVzZV93cml0ZV9waHlfb2ZkbShkZXYsIDB4MDUsIDB4RkEpOyBtZGVsYXkoMSk7CisJCWJyZWFr OworCWNhc2UgMzoKKwkJcnRsODIyNXNlX3dyaXRlX3BoeV9vZmRtKGRldiwgMHgxNywgMHgzNik7 IG1kZWxheSgxKTsKKwkJcnRsODIyNXNlX3dyaXRlX3BoeV9vZmRtKGRldiwgMHgyNCwgMHg4Nik7 IG1kZWxheSgxKTsKKwkJcnRsODIyNXNlX3dyaXRlX3BoeV9vZmRtKGRldiwgMHgwNSwgMHhGQik7 IG1kZWxheSgxKTsKKwkJYnJlYWs7CisJY2FzZSA0OgorCQlydGw4MjI1c2Vfd3JpdGVfcGh5X29m ZG0oZGV2LCAweDE3LCAweDQ2KTsgbWRlbGF5KDEpOworCQlydGw4MjI1c2Vfd3JpdGVfcGh5X29m ZG0oZGV2LCAweDI0LCAweDg2KTsgbWRlbGF5KDEpOworCQlydGw4MjI1c2Vfd3JpdGVfcGh5X29m ZG0oZGV2LCAweDA1LCAweEZCKTsgbWRlbGF5KDEpOworCQlicmVhazsKKwljYXNlIDU6CisJCXJ0 bDgyMjVzZV93cml0ZV9waHlfb2ZkbShkZXYsIDB4MTcsIDB4NDYpOyBtZGVsYXkoMSk7CisJCXJ0 bDgyMjVzZV93cml0ZV9waHlfb2ZkbShkZXYsIDB4MjQsIDB4OTYpOyBtZGVsYXkoMSk7CisJCXJ0 bDgyMjVzZV93cml0ZV9waHlfb2ZkbShkZXYsIDB4MDUsIDB4RkIpOyBtZGVsYXkoMSk7CisJCWJy ZWFrOworCWNhc2UgNjoKKwkJcnRsODIyNXNlX3dyaXRlX3BoeV9vZmRtKGRldiwgMHgxNywgMHg1 Nik7IG1kZWxheSgxKTsKKwkJcnRsODIyNXNlX3dyaXRlX3BoeV9vZmRtKGRldiwgMHgyNCwgMHg5 Nik7IG1kZWxheSgxKTsKKwkJcnRsODIyNXNlX3dyaXRlX3BoeV9vZmRtKGRldiwgMHgwNSwgMHhG Qyk7IG1kZWxheSgxKTsKKwkJYnJlYWs7CisJY2FzZSA3OgorCQlydGw4MjI1c2Vfd3JpdGVfcGh5 X29mZG0oZGV2LCAweDE3LCAweDU2KTsgbWRlbGF5KDEpOworCQlydGw4MjI1c2Vfd3JpdGVfcGh5 X29mZG0oZGV2LCAweDI0LCAweEE2KTsgbWRlbGF5KDEpOworCQlydGw4MjI1c2Vfd3JpdGVfcGh5 X29mZG0oZGV2LCAweDA1LCAweEZDKTsgbWRlbGF5KDEpOworCQlicmVhazsKKwljYXNlIDg6CisJ CXJ0bDgyMjVzZV93cml0ZV9waHlfb2ZkbShkZXYsIDB4MTcsIDB4NjYpOyBtZGVsYXkoMSk7CisJ CXJ0bDgyMjVzZV93cml0ZV9waHlfb2ZkbShkZXYsIDB4MjQsIDB4QjYpOyBtZGVsYXkoMSk7CisJ CXJ0bDgyMjVzZV93cml0ZV9waHlfb2ZkbShkZXYsIDB4MDUsIDB4RkMpOyBtZGVsYXkoMSk7CisJ CWJyZWFrOworCX0KK30KKworCit2b2lkIHJ0bDgyMjVzZV9yZl9pbml0KHN0cnVjdCBpZWVlODAy MTFfaHcgKmRldikKK3sKKwlzdHJ1Y3QgcnRsODE4MF9wcml2ICpwcml2ID0gZGV2LT5wcml2Owor CXUzMiByZjIzLCByZjI0OworCXU4IGRfY3V0ID0gMDsKKwl1OCB0bXA7CisKKwkvKiBQYWdlIDEg Ki8KKwlydGw4MTg3c2VfcmZfd3JpdGVyZWcoZGV2LCAweDAwLCAweDAxM0YpOyBtZGVsYXkoMSk7 CisJcmYyMyA9IHJ0bDgxODdzZV9yZl9yZWFkcmVnKGRldiwgMHgwOCk7IG1kZWxheSgxKTsKKwly ZjI0ID0gcnRsODE4N3NlX3JmX3JlYWRyZWcoZGV2LCAweDA5KTsgbWRlbGF5KDEpOworCWlmIChy ZjIzID09IDB4MDgxOCAmJiByZjI0ID09IDB4MDcwQykKKwkJZF9jdXQgPSAxOworCisJcHJpbnRr KEtFUk5fSU5GTyJSVEw4MjI1LVNFIHZlcnNpb24gJXNcbiIsIGRfY3V0ID8gIkQiIDogIm5vdC1E Iik7CisKKwkvKiBQYWdlIDA6IHJlZyAwIC0gMTUgKi8KKwlydGw4MTg3c2VfcmZfd3JpdGVyZWco ZGV2LCAweDAwLCAweDAwOUYpOyBtZGVsYXkoMSk7CisJcnRsODE4N3NlX3JmX3dyaXRlcmVnKGRl diwgMHgwMSwgMHgwNkUwKTsgbWRlbGF5KDEpOworCXJ0bDgxODdzZV9yZl93cml0ZXJlZyhkZXYs IDB4MDIsIDB4MDA0RCk7IG1kZWxheSgxKTsKKwlydGw4MTg3c2VfcmZfd3JpdGVyZWcoZGV2LCAw eDAzLCAweDA3RjEpOyBtZGVsYXkoMSk7CisJcnRsODE4N3NlX3JmX3dyaXRlcmVnKGRldiwgMHgw NCwgMHgwOTc1KTsgbWRlbGF5KDEpOworCXJ0bDgxODdzZV9yZl93cml0ZXJlZyhkZXYsIDB4MDUs IDB4MEM3Mik7IG1kZWxheSgxKTsKKwlydGw4MTg3c2VfcmZfd3JpdGVyZWcoZGV2LCAweDA2LCAw eDBBRTYpOyBtZGVsYXkoMSk7CisJcnRsODE4N3NlX3JmX3dyaXRlcmVnKGRldiwgMHgwNywgMHgw MENBKTsgbWRlbGF5KDEpOworCXJ0bDgxODdzZV9yZl93cml0ZXJlZyhkZXYsIDB4MDgsIDB4MEUx Qyk7IG1kZWxheSgxKTsKKwlydGw4MTg3c2VfcmZfd3JpdGVyZWcoZGV2LCAweDA5LCAweDAyRjAp OyBtZGVsYXkoMSk7CisJcnRsODE4N3NlX3JmX3dyaXRlcmVnKGRldiwgMHgwQSwgMHgwOUQwKTsg bWRlbGF5KDEpOworCXJ0bDgxODdzZV9yZl93cml0ZXJlZyhkZXYsIDB4MEIsIDB4MDFCQSk7IG1k ZWxheSgxKTsKKwlydGw4MTg3c2VfcmZfd3JpdGVyZWcoZGV2LCAweDBDLCAweDA2NDApOyBtZGVs YXkoMSk7CisJcnRsODE4N3NlX3JmX3dyaXRlcmVnKGRldiwgMHgwRCwgMHgwOERGKTsgbWRlbGF5 KDEpOworCXJ0bDgxODdzZV9yZl93cml0ZXJlZyhkZXYsIDB4MEUsIDB4MDAyMCk7IG1kZWxheSgx KTsKKwlydGw4MTg3c2VfcmZfd3JpdGVyZWcoZGV2LCAweDBGLCAweDA5OTApOyBtZGVsYXkoMSk7 CisJLyogcGFnZSAxOiByZWcgMTYtMzAgKi8KKwlydGw4MTg3c2VfcmZfd3JpdGVyZWcoZGV2LCAw eDAwLCAweDAxM0YpOyBtZGVsYXkoMSk7CisJcnRsODE4N3NlX3JmX3dyaXRlcmVnKGRldiwgMHgw MywgMHgwODA2KTsgbWRlbGF5KDEpOworCXJ0bDgxODdzZV9yZl93cml0ZXJlZyhkZXYsIDB4MDQs IDB4MDNBNyk7IG1kZWxheSgxKTsKKwlydGw4MTg3c2VfcmZfd3JpdGVyZWcoZGV2LCAweDA1LCAw eDA1OUIpOyBtZGVsYXkoMSk7CisJcnRsODE4N3NlX3JmX3dyaXRlcmVnKGRldiwgMHgwNiwgMHgw MDgxKTsgbWRlbGF5KDEpOworCXJ0bDgxODdzZV9yZl93cml0ZXJlZyhkZXYsIDB4MDcsIDB4MDFB MCk7IG1kZWxheSgxKTsKKwlydGw4MTg3c2VfcmZfd3JpdGVyZWcoZGV2LCAweDBBLCAweDAwMDEp OyBtZGVsYXkoMSk7CisJcnRsODE4N3NlX3JmX3dyaXRlcmVnKGRldiwgMHgwQiwgMHgwNDE4KTsg bWRlbGF5KDEpOworCXJ0bDgxODdzZV9yZl93cml0ZXJlZyhkZXYsIDB4MEMsIDB4MEZCRSk7IG1k ZWxheSgxKTsKKwlydGw4MTg3c2VfcmZfd3JpdGVyZWcoZGV2LCAweDBELCAweDAwMDgpOyBtZGVs YXkoMSk7CisJaWYgKGRfY3V0KQorCQlydGw4MTg3c2VfcmZfd3JpdGVyZWcoZGV2LCAweDBFLCAw eDA4MDcpOworCWVsc2UKKwkJcnRsODE4N3NlX3JmX3dyaXRlcmVnKGRldiwgMHgwRSwgMHgwODA2 KTsKKwltZGVsYXkoMSk7CisJcnRsODE4N3NlX3JmX3dyaXRlcmVnKGRldiwgMHgwRiwgMHgwQUND KTsgbWRlbGF5KDEpOworCXJ0bDgxODdzZV9yZl93cml0ZXJlZyhkZXYsIDB4MDAsIDB4MDFENyk7 IG1kZWxheSgxKTsKKwlydGw4MTg3c2VfcmZfd3JpdGVyZWcoZGV2LCAweDAzLCAweDBFMDApOyBt ZGVsYXkoMSk7CisJcnRsODE4N3NlX3JmX3dyaXRlcmVnKGRldiwgMHgwNCwgMHgwRTUwKTsgbWRl bGF5KDEpOworCisJcnRsODE4N3NlX3dyaXRlX3JmX2dhaW4oZGV2KTsKKworCXJ0bDgxODdzZV9y Zl93cml0ZXJlZyhkZXYsIDB4MDUsIDB4MDIwMyk7IG1kZWxheSgxKTsKKwlydGw4MTg3c2VfcmZf d3JpdGVyZWcoZGV2LCAweDA2LCAweDAyMDApOyBtZGVsYXkoMSk7CisJcnRsODE4N3NlX3JmX3dy aXRlcmVnKGRldiwgMHgwMCwgMHgwMTM3KTsgbWRlbGF5KDExKTsKKwlydGw4MTg3c2VfcmZfd3Jp dGVyZWcoZGV2LCAweDBELCAweDAwMDgpOyBtZGVsYXkoMTEpOworCXJ0bDgxODdzZV9yZl93cml0 ZXJlZyhkZXYsIDB4MDAsIDB4MDAzNyk7IG1kZWxheSgxMSk7CisJcnRsODE4N3NlX3JmX3dyaXRl cmVnKGRldiwgMHgwNCwgMHgwMTYwKTsgbWRlbGF5KDExKTsKKwlydGw4MTg3c2VfcmZfd3JpdGVy ZWcoZGV2LCAweDA3LCAweDAwODApOyBtZGVsYXkoMTEpOworCXJ0bDgxODdzZV9yZl93cml0ZXJl ZyhkZXYsIDB4MDIsIDB4MDg4RCk7IG1kZWxheSgyMjEpOworCXJ0bDgxODdzZV9yZl93cml0ZXJl ZyhkZXYsIDB4MDAsIDB4MDEzNyk7IG1kZWxheSgxMSk7CisJcnRsODE4N3NlX3JmX3dyaXRlcmVn KGRldiwgMHgwNywgMHgwMDAwKTsgbWRlbGF5KDEpOworCXJ0bDgxODdzZV9yZl93cml0ZXJlZyhk ZXYsIDB4MDcsIDB4MDE4MCk7IG1kZWxheSgxKTsKKwlydGw4MTg3c2VfcmZfd3JpdGVyZWcoZGV2 LCAweDA3LCAweDAyMjApOyBtZGVsYXkoMSk7CisJcnRsODE4N3NlX3JmX3dyaXRlcmVnKGRldiwg MHgwNywgMHgwM0UwKTsgbWRlbGF5KDEpOworCXJ0bDgxODdzZV9yZl93cml0ZXJlZyhkZXYsIDB4 MDYsIDB4MDBDMSk7IG1kZWxheSgxKTsKKwlydGw4MTg3c2VfcmZfd3JpdGVyZWcoZGV2LCAweDBB LCAweDAwMDEpOyBtZGVsYXkoMSk7CisJaWYgKHByaXYtPnh0YWxfY2FsKSB7CisJCXRtcCA9IChw cml2LT54dGFsX2luIDw8IDQpIHwgKHByaXYtPnh0YWxfb3V0IDw8IDEpIHwKKwkJICAgICAgKDEg PDwgMTEpIHwgKDEgPDwgOSk7CisJCXJ0bDgxODdzZV9yZl93cml0ZXJlZyhkZXYsIDB4MEYsIHRt cCk7CisJCXByaW50aygiWHRhbCBjYWxcbiIpOworCQltZGVsYXkoMSk7CisJfSBlbHNlIHsKKwkJ cHJpbnRrKCJOTyBYdGFsIGNhbFxuIik7CisJCXJ0bDgxODdzZV9yZl93cml0ZXJlZyhkZXYsIDB4 MEYsIDB4MEFDQyk7CisJCW1kZWxheSgxKTsKKwl9CisJLyogcGFnZSAwICovCisJcnRsODE4N3Nl X3JmX3dyaXRlcmVnKGRldiwgMHgwMCwgMHgwMEJGKTsgbWRlbGF5KDEpOworCXJ0bDgxODdzZV9y Zl93cml0ZXJlZyhkZXYsIDB4MEQsIDB4MDhERik7IG1kZWxheSgxKTsKKwlydGw4MTg3c2VfcmZf d3JpdGVyZWcoZGV2LCAweDAyLCAweDAwNEQpOyBtZGVsYXkoMSk7CisJcnRsODE4N3NlX3JmX3dy aXRlcmVnKGRldiwgMHgwNCwgMHgwOTc1KTsgbWRlbGF5KDMxKTsKKwlydGw4MTg3c2VfcmZfd3Jp dGVyZWcoZGV2LCAweDAwLCAweDAxOTcpOyBtZGVsYXkoMSk7CisJcnRsODE4N3NlX3JmX3dyaXRl cmVnKGRldiwgMHgwNSwgMHgwNUFCKTsgbWRlbGF5KDEpOworCisJcnRsODE4N3NlX3JmX3dyaXRl cmVnKGRldiwgMHgwMCwgMHgwMDlGKTsgbWRlbGF5KDEpOworCXJ0bDgxODdzZV9yZl93cml0ZXJl ZyhkZXYsIDB4MDEsIDB4MDAwMCk7IG1kZWxheSgxKTsKKwlydGw4MTg3c2VfcmZfd3JpdGVyZWco ZGV2LCAweDAyLCAweDAwMDApOyBtZGVsYXkoMSk7CisJLyogcG93ZXIgc2F2ZSBwYXJhbWV0ZXJz ICovCisJLyogVE9ETzogbW92ZSB0byBkZXYuYyAqLworCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwg UkVHX0FERFIxKDB4MDI0RSksCisJCSBydGw4MTh4X2lvcmVhZDgocHJpdiwgUkVHX0FERFIxKDB4 MjRFKSkgJiAweDlGKTsKKwlydGw4MjI1c2Vfd3JpdGVfcGh5X2NjayhkZXYsIDB4MDAsIDB4Qzgp OworCXJ0bDgyMjVzZV93cml0ZV9waHlfY2NrKGRldiwgMHgwNiwgMHgxQyk7CisJcnRsODIyNXNl X3dyaXRlX3BoeV9jY2soZGV2LCAweDEwLCAweDc4KTsKKwlydGw4MjI1c2Vfd3JpdGVfcGh5X2Nj ayhkZXYsIDB4MkUsIDB4RDApOworCXJ0bDgyMjVzZV93cml0ZV9waHlfY2NrKGRldiwgMHgyRiwg MHgwNik7CisJcnRsODIyNXNlX3dyaXRlX3BoeV9jY2soZGV2LCAweDAxLCAweDQ2KTsKKworCS8q IHBvd2VyIGNvbnRyb2wgKi8KKwlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPlRY X0dBSU5fQ0NLLCAweDEwKTsKKwlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPlRY X0dBSU5fT0ZETSwgMHgxQik7CisKKwlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAt PlRYX0FOVEVOTkEsIDB4MDMpOworCXJ0bDgyMjVzZV93cml0ZV9waHlfb2ZkbShkZXYsIDB4MDAs IDB4MTIpOworCisJcnRsODIyNXNlX3dyaXRlX3plYnJhX2FnYyhkZXYpOworCisJcnRsODIyNXNl X3dyaXRlX3BoeV9vZmRtKGRldiwgMHgxMCwgMHgwMCk7CisKKwlydGw4MTg3c2Vfd3JpdGVfb2Zk bV9jb25maWcoZGV2KTsKKworCS8qIHR1cm4gb24gUkYgKi8KKwlydGw4MTg3c2VfcmZfd3JpdGVy ZWcoZGV2LCAweDAwLCAweDAwOUYpOyB1ZGVsYXkoNTAwKTsKKwlydGw4MTg3c2VfcmZfd3JpdGVy ZWcoZGV2LCAweDA0LCAweDA5NzIpOyB1ZGVsYXkoNTAwKTsKKwkvKiB0dXJuIG9uIFJGIGFnYWlu ICovCisJcnRsODE4N3NlX3JmX3dyaXRlcmVnKGRldiwgMHgwMCwgMHgwMDlGKTsgdWRlbGF5KDUw MCk7CisJcnRsODE4N3NlX3JmX3dyaXRlcmVnKGRldiwgMHgwNCwgMHgwOTcyKTsgdWRlbGF5KDUw MCk7CisJLyogdHVybiBvbiBCQiAqLworCXJ0bDgyMjVzZV93cml0ZV9waHlfb2ZkbShkZXYsIDB4 MTAsIDB4NDApOworCXJ0bDgyMjVzZV93cml0ZV9waHlfb2ZkbShkZXYsIDB4MTIsIDB4NDApOwor CisJcnRsODE4N3NlX3dyaXRlX2luaXRpYWxfZ2FpbihkZXYsIDQpOworfQorCisKK3ZvaWQgcnRs ODIyNXNlX3JmX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2KQoreworCS8qIGNoZWNrZWQg Zm9yIDgxODdzZSAqLworCXN0cnVjdCBydGw4MTgwX3ByaXYgKnByaXYgPSBkZXYtPnByaXY7CisK KworCS8qIHR1cm4gb2ZmIEJCIFJYSVEgbWF0cml4IHRvIGN1dCBvZmYgcnggc2lnbmFsICovCisJ cnRsODIyNXNlX3dyaXRlX3BoeV9vZmRtKGRldiwgMHgxMCwgMHgwMCk7CisJcnRsODIyNXNlX3dy aXRlX3BoeV9vZmRtKGRldiwgMHgxMiwgMHgwMCk7CisJLyogdHVybiBvZmYgUkYgKi8KKwlydGw4 MTg3c2VfcmZfd3JpdGVyZWcoZGV2LCAweDA0LCAweDAwMDApOworCXJ0bDgxODdzZV9yZl93cml0 ZXJlZyhkZXYsIDB4MDAsIDB4MDAwMCk7CisKKwltc2xlZXAoMSk7CisJLyogdHVybiBvZmYgQS9E IGFuZCBEL0EgKi8KKwlydGw4MTgwX3NldF9hbmFwYXJhbShwcml2LCBSVEw4MjI1U0VfQU5BUEFS QU1fT0ZGKTsKKwlydGw4MTgwX3NldF9hbmFwYXJhbTIocHJpdiwgUlRMODIyNVNFX0FOQVBBUkFN Ml9PRkYpOworfQorCit2b2lkIHJ0bDgyMjVzZV9yZl9zZXRfY2hhbm5lbChzdHJ1Y3QgaWVlZTgw MjExX2h3ICpkZXYsCisJCQkJICAgc3RydWN0IGllZWU4MDIxMV9jb25mICpjb25mKQoreworCisJ aW50IGNoYW4gPQorCQlpZWVlODAyMTFfZnJlcXVlbmN5X3RvX2NoYW5uZWwoY29uZi0+Y2hhbmRl Zi5jaGFuLT5jZW50ZXJfZnJlcSk7CisKKworCXJ0bDgyMjVzZXoyX3JmX3NldF90eF9wb3dlcihk ZXYsIGNoYW4pOworCXJ0bDgxODdzZV9yZl93cml0ZXJlZyhkZXYsIDB4NywgcnRsODIyNXNlX2No YW5bY2hhbiAtIDFdKTsKKwlpZiAoKHJ0bDgxODdzZV9yZl9yZWFkcmVnKGRldiwgMHg3KSAmIDB4 MEY4MCkgIT0gcnRsODIyNXNlX2NoYW5bY2hhbiAtIDFdKQorCQlydGw4MTg3c2VfcmZfd3JpdGVy ZWcoZGV2LCAweDcsIHJ0bDgyMjVzZV9jaGFuW2NoYW4gLSAxXSk7CisJbXNsZWVwKDEpOworCisJ bXNsZWVwKDEwKTsKK30KKworCitzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgxOHhfcmZfb3BzIHJ0 bDgyMjVzZV9vcHMgPSB7CisJLm5hbWUJCT0gInJ0bDgyMjUtc2UiLAorCS5pbml0CQk9IHJ0bDgy MjVzZV9yZl9pbml0LAorCS5zdG9wCQk9IHJ0bDgyMjVzZV9yZl9zdG9wLAorCS5zZXRfY2hhbgk9 IHJ0bDgyMjVzZV9yZl9zZXRfY2hhbm5lbCwKK307CisKK2NvbnN0IHN0cnVjdCBydGw4MTh4X3Jm X29wcyAqcnRsODE4N3NlX2RldGVjdF9yZihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYpCit7CisJ cmV0dXJuICZydGw4MjI1c2Vfb3BzOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxl c3MvcnRsODE4eC9ydGw4MTgwL3J0bDgyMjVzZS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRs ODE4eC9ydGw4MTgwL3J0bDgyMjVzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmExZjkyYmMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGw4 MTh4L3J0bDgxODAvcnRsODIyNXNlLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIERlZmluaXRp b25zIGZvciBSVEw4MTg3U0UgaGFyZHdhcmUKKyAqCisgKiBDb3B5cmlnaHQgMjAwOSBMYXJyeSBG aW5nZXIgPExhcnJ5LkZpbmdlckBsd2Zpbmdlci5uZXQ+CisgKiBDb3B5cmlnaHQgMjAxNCBBbmRy ZWEgTWVyZWxsbyA8YW5kcmVhLm1lcmVsbG9AZ21haWwuY29tPgorICoKKyAqIEJhc2VkIG9uIHRo ZSByODE4MCBhbmQgUmVhbHRlayByODE4N3NlIGRyaXZlcnMsIHdoaWNoIGFyZToKKyAqIENvcHly aWdodCAyMDA0LTIwMDUgQW5kcmVhIE1lcmVsbG8gPGFuZHJlYS5tZXJlbGxvQGdtYWlsLmNvbT4s IGV0IGFsLgorICoKKyAqIEFsc28gYmFzZWQgb24gdGhlIHJ0bDgxODcgZHJpdmVyLCB3aGljaCBp czoKKyAqIENvcHlyaWdodCAyMDA3IE1pY2hhZWwgV3UgPGZsYW1pbmdpY2VAc291cm1pbGsubmV0 PgorICogQ29weXJpZ2h0IDIwMDcgQW5kcmVhIE1lcmVsbG8gPGFuZHJlYW1ybEB0aXNjYWxpLml0 PgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKworI2lmbmRlZiBSVEw4MTg3U0VfUlRMODIy NV9ICisjZGVmaW5lIFJUTDgxODdTRV9SVEw4MjI1X0gKKworI2RlZmluZSBSVEw4MjI1U0VfQU5B UEFSQU1fT04JMHhiMDA1NGQwMAorI2RlZmluZSBSVEw4MjI1U0VfQU5BUEFSQU0yX09OCTB4MDAw MDA0YzYKKworLyogYWxsIG9mZiBleGNlcHQgUExMICovCisjZGVmaW5lIFJUTDgyMjVTRV9BTkFQ QVJBTV9PRkYJMHhiMDA1NGRlYworLyogYWxsIG9uIGluY2x1ZGluZyBQTEwgKi8KKyNkZWZpbmUg UlRMODIyNVNFX0FOQVBBUkFNX09GRjIJMHhiMDA1NGRmYworCisjZGVmaW5lIFJUTDgyMjVTRV9B TkFQQVJBTTJfT0ZGCTB4MDBmZjA0YzYKKworI2RlZmluZSBSVEw4MjI1U0VfQU5BUEFSQU0zIAkw eDEwCisKK2VudW0gcnRsODE4N3NlX3Bvd2VyX3N0YXRlIHsKKwlSVEw4MTg3U0VfUE9XRVJfT04s CisJUlRMODE4N1NFX1BPV0VSX09GRiwKKwlSVEw4MTg3U0VfUE9XRVJfU0xFRVAKK307CisKKwor c3RhdGljIGlubGluZSB2b2lkIHJ0bDgyMjVzZV93cml0ZV9waHlfb2ZkbShzdHJ1Y3QgaWVlZTgw MjExX2h3ICpkZXYsCisJCQkJCSAgdTggYWRkciwgdTggZGF0YSkKK3sKKwlydGw4MTgwX3dyaXRl X3BoeShkZXYsIGFkZHIsIGRhdGEpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgcnRsODIyNXNl X3dyaXRlX3BoeV9jY2soc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LAorCQkJCQkgdTggYWRkciwg dTggZGF0YSkKK3sKKwlydGw4MTgwX3dyaXRlX3BoeShkZXYsIGFkZHIsIGRhdGEgfCAweDEwMDAw KTsKK30KKworCitjb25zdCBzdHJ1Y3QgcnRsODE4eF9yZl9vcHMgKnJ0bDgxODdzZV9kZXRlY3Rf cmYoc3RydWN0IGllZWU4MDIxMV9odyAqKTsKK3ZvaWQgcnRsODIyNXNlX3JmX3N0b3Aoc3RydWN0 IGllZWU4MDIxMV9odyAqZGV2KTsKK3ZvaWQgcnRsODIyNXNlX3JmX3NldF9jaGFubmVsKHN0cnVj dCBpZWVlODAyMTFfaHcgKmRldiwKKwkJCQkgICAgIHN0cnVjdCBpZWVlODAyMTFfY29uZiAqY29u Zik7Cit2b2lkIHJ0bDgyMjVzZV9yZl9jb25mX2VycChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYs CisJCQkJICBzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICppbmZvKTsKK3ZvaWQgcnRsODIyNXNl X3JmX2luaXQoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2KTsKKworCisjZW5kaWYgLyogUlRMODE4 N1NFX1JUTDgyMjVfSCAqLworCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGw4 MTh4L3J0bDgxOHguaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bDgxOHgvcnRsODE4eC5oCmlu ZGV4IGNlMjNkZmQuLjY5YTBlZGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0 bDgxOHgvcnRsODE4eC5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bDgxOHgvcnRsODE4 eC5oCkBAIC0xNSwzMSArMTUsOTEgQEAKICNpZm5kZWYgUlRMODE4WF9ICiAjZGVmaW5lIFJUTDgx OFhfSAogCisKIHN0cnVjdCBydGw4MTh4X2NzciB7Ci0JdTgJTUFDWzZdOworCisJdW5pb24gewor CQl1OAlNQUNbNl07CisJCXU4CW9mZnNldDFbNl07ICAgICAvKiB1cHBlciBwYWdlIGluZGV4aW5n IGhlbHBlcnMgKi8KKwkJX19sZTE2CW9mZnNldDJbMV07CisJCV9fbGUzMglvZmZzZXQ0WzFdOwor CX0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpOworCisKIAl1OAlyZXNlcnZlZF8wWzJdOwot CV9fbGUzMglNQVJbMl07Ci0JdTgJUlhfRklGT19DT1VOVDsKLQl1OAlyZXNlcnZlZF8xOwotCXU4 CVRYX0ZJRk9fQ09VTlQ7Ci0JdTgJQlFSRVE7Ci0JdTgJcmVzZXJ2ZWRfMls0XTsKKworCXVuaW9u IHsKKwkJX19sZTMyCU1BUlsyXTsgIC8qIDB4OCAqLworCisJCXN0cnVjdHsgLyogcnRsODE4N3Nl ICovCisJCQl1OCByZl9zd19jb25maWc7IC8qIDB4OCAqLworCQkJdTggcmVzZXJ2ZWRfMDFbM107 CisJCQlfX2xlMzIgVE1HREE7IC8qIDB4YyAqLworCQl9IF9fYXR0cmlidXRlX18oKF9fcGFja2Vk X18pKTsKKwl9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKTsKKworCXVuaW9uIHsgLyogIDB4 MTAgICovCisJCXN0cnVjdCB7CisJCQl1OAlSWF9GSUZPX0NPVU5UOworCQkJdTgJcmVzZXJ2ZWRf MTsKKwkJCXU4CVRYX0ZJRk9fQ09VTlQ7CisJCQl1OAlCUVJFUTsKKwkJfSBfX2F0dHJpYnV0ZV9f KChfX3BhY2tlZF9fKSk7CisKKwkJX19sZTMyIFRCS0RBOyAvKiBmb3IgODE4N3NlICovCisJfSBf X2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSk7CisKKwlfX2xlMzIgVEJFREE7IC8qIDB4MTQgLSBm b3IgcnRsODE4N3NlICovCisKIAlfX2xlMzIJVFNGVFsyXTsKLQlfX2xlMzIJVExQREE7Ci0JX19s ZTMyCVROUERBOwotCV9fbGUzMglUSFBEQTsKLQlfX2xlMTYJQlJTUjsKLQl1OAlCU1NJRFs2XTsK LQl1OAlSRVNQX1JBVEU7Ci0JdTgJRUlGUzsKLQl1OAlyZXNlcnZlZF8zWzFdOwotCXU4CUNNRDsK KworCXVuaW9uIHsgLyogMHgyMCAqLworCQlfX2xlMzIJVExQREE7CisJCV9fbGUzMiAgVFZJREE7 IC8qIGZvciA4MTg3c2UgKi8KKwl9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKTsKKworCXVu aW9uIHsgLyogMHgyNCAqLworCQlfX2xlMzIJVE5QREE7CisJCV9fbGUzMiAgVFZPREE7IC8qIGZv ciA4MTg3c2UgKi8KKwl9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKTsKKworCS8qIGhpIHBy aSByaW5nIGZvciBhbGwgY2FyZHMgKi8KKwlfX2xlMzIJVEhQREE7IC8qIDB4MjggKi8KKworCXVu aW9uIHsgLyogMHgyYyAqLworCQlzdHJ1Y3QgeworCQkJdTggcmVzZXJ2ZWRfMmE7CisJCQl1OCBF SUZTXzgxODdTRTsKKwkJfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSk7CisKKwkJX19sZTE2 CUJSU1I7CisJfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSk7CisKKwl1OAlCU1NJRFs2XTsg LyogMHgyZSAqLworCisJdW5pb24geyAvKiAweDM0ICovCisJCXN0cnVjdCB7CisJCQl1OCBSRVNQ X1JBVEU7CisJCQl1OCBFSUZTOworCQl9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKTsKKwkJ X19sZTE2IEJSU1JfODE4N1NFOworCX0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpOworCisJ dTgJcmVzZXJ2ZWRfM1sxXTsgLyogMHgzNiAqLworCXU4CUNNRDsgLyogMHgzNyAqLwogI2RlZmlu ZSBSVEw4MThYX0NNRF9UWF9FTkFCTEUJCSgxIDw8IDIpCiAjZGVmaW5lIFJUTDgxOFhfQ01EX1JY X0VOQUJMRQkJKDEgPDwgMykKICNkZWZpbmUgUlRMODE4WF9DTURfUkVTRVQJCSgxIDw8IDQpCi0J dTgJcmVzZXJ2ZWRfNFs0XTsKLQlfX2xlMTYJSU5UX01BU0s7Ci0JX19sZTE2CUlOVF9TVEFUVVM7 CisJdTgJcmVzZXJ2ZWRfNFs0XTsgLyogMHgzOCAqLworCXVuaW9uIHsKKwkJc3RydWN0IHsKKwkJ CV9fbGUxNglJTlRfTUFTSzsKKwkJCV9fbGUxNglJTlRfU1RBVFVTOworCQl9IF9fYXR0cmlidXRl X18gKChfX3BhY2tlZF9fKSk7CisKKwkJX19sZTMyCUlOVF9TVEFUVVNfU0U7IC8qIDB4M2MgKi8K Kwl9IF9fYXR0cmlidXRlX18gKChfX3BhY2tlZF9fKSk7CisvKiBzdGF0dXMgYml0cyBmb3IgcnRs ODE4NyBhbmQgcnRsODE4MC84MTg1ICovCiAjZGVmaW5lIFJUTDgxOFhfSU5UX1JYX09LCQkoMSA8 PCAgMCkKICNkZWZpbmUgUlRMODE4WF9JTlRfUlhfRVJSCQkoMSA8PCAgMSkKICNkZWZpbmUgUlRM ODE4WF9JTlRfVFhMX09LCQkoMSA8PCAgMikKQEAgLTU2LDcgKzExNiwzNCBAQCBzdHJ1Y3QgcnRs ODE4eF9jc3IgewogI2RlZmluZSBSVEw4MThYX0lOVF9CRUFDT04JCSgxIDw8IDEzKQogI2RlZmlu ZSBSVEw4MThYX0lOVF9USU1FX09VVAkJKDEgPDwgMTQpCiAjZGVmaW5lIFJUTDgxOFhfSU5UX1RY X0ZPCQkoMSA8PCAxNSkKLQlfX2xlMzIJVFhfQ09ORjsKKy8qIHN0YXR1cyBiaXRzIGZvciBydGw4 MTg3c2UgKi8KKyNkZWZpbmUgUlRMODE4WF9JTlRfU0VfVElNRVIzCQkoMSA8PCAgMCkKKyNkZWZp bmUgUlRMODE4WF9JTlRfU0VfVElNRVIyCQkoMSA8PCAgMSkKKyNkZWZpbmUgUlRMODE4WF9JTlRf U0VfUlEwU09SCQkoMSA8PCAgMikKKyNkZWZpbmUgUlRMODE4WF9JTlRfU0VfVFhCRURfT0sJCSgx IDw8ICAzKQorI2RlZmluZSBSVEw4MThYX0lOVF9TRV9UWEJFRF9FUlIJKDEgPDwgIDQpCisjZGVm aW5lIFJUTDgxOFhfSU5UX1NFX1RYQkVfT0sJCSgxIDw8ICA1KQorI2RlZmluZSBSVEw4MThYX0lO VF9TRV9UWEJFX0VSUgkJKDEgPDwgIDYpCisjZGVmaW5lIFJUTDgxOFhfSU5UX1NFX1JYX09LCQko MSA8PCAgNykKKyNkZWZpbmUgUlRMODE4WF9JTlRfU0VfUlhfRVJSCQkoMSA8PCAgOCkKKyNkZWZp bmUgUlRMODE4WF9JTlRfU0VfVFhMX09LCQkoMSA8PCAgOSkKKyNkZWZpbmUgUlRMODE4WF9JTlRf U0VfVFhMX0VSUgkJKDEgPDwgMTApCisjZGVmaW5lIFJUTDgxOFhfSU5UX1NFX1JYX0RVCQkoMSA8 PCAxMSkKKyNkZWZpbmUgUlRMODE4WF9JTlRfU0VfUlhfRklGTwkJKDEgPDwgMTIpCisjZGVmaW5l IFJUTDgxOFhfSU5UX1NFX1RYTl9PSwkJKDEgPDwgMTMpCisjZGVmaW5lIFJUTDgxOFhfSU5UX1NF X1RYTl9FUlIJCSgxIDw8IDE0KQorI2RlZmluZSBSVEw4MThYX0lOVF9TRV9UWEhfT0sJCSgxIDw8 IDE1KQorI2RlZmluZSBSVEw4MThYX0lOVF9TRV9UWEhfRVJSCQkoMSA8PCAxNikKKyNkZWZpbmUg UlRMODE4WF9JTlRfU0VfVFhCX09LCQkoMSA8PCAxNykKKyNkZWZpbmUgUlRMODE4WF9JTlRfU0Vf VFhCX0VSUgkJKDEgPDwgMTgpCisjZGVmaW5lIFJUTDgxOFhfSU5UX1NFX0FUSU1fVE8JCSgxIDw8 IDE5KQorI2RlZmluZSBSVEw4MThYX0lOVF9TRV9CS19UTwkJKDEgPDwgMjApCisjZGVmaW5lIFJU TDgxOFhfSU5UX1NFX1RJTUVSMQkJKDEgPDwgMjEpCisjZGVmaW5lIFJUTDgxOFhfSU5UX1NFX1RY X0ZJRk8JCSgxIDw8IDIyKQorI2RlZmluZSBSVEw4MThYX0lOVF9TRV9XQUtFVVAJCSgxIDw8IDIz KQorI2RlZmluZSBSVEw4MThYX0lOVF9TRV9CS19ETUEJCSgxIDw8IDI0KQorI2RlZmluZSBSVEw4 MThYX0lOVF9TRV9UTUdEX09LCQkoMSA8PCAzMCkKKwlfX2xlMzIJVFhfQ09ORjsgLyogMHg0MCAq LwogI2RlZmluZSBSVEw4MThYX1RYX0NPTkZfTE9PUEJBQ0tfTUFDCSgxIDw8IDE3KQogI2RlZmlu ZSBSVEw4MThYX1RYX0NPTkZfTE9PUEJBQ0tfQ09OVAkoMyA8PCAxNykKICNkZWZpbmUgUlRMODE4 WF9UWF9DT05GX05PX0lDVgkJKDEgPDwgMTkpCkBAIC02OCwxNyArMTU1LDIxIEBAIHN0cnVjdCBy dGw4MTh4X2NzciB7CiAjZGVmaW5lIFJUTDgxOFhfVFhfQ09ORl9SODE4NV9ECQkoNSA8PCAyNSkK ICNkZWZpbmUgUlRMODE4WF9UWF9DT05GX1I4MTg3dkQJCSg1IDw8IDI1KQogI2RlZmluZSBSVEw4 MThYX1RYX0NPTkZfUjgxODd2RF9CCSg2IDw8IDI1KQorI2RlZmluZSBSVEw4MThYX1RYX0NPTkZf UlRMODE4N1NFCSg2IDw8IDI1KQogI2RlZmluZSBSVEw4MThYX1RYX0NPTkZfSFdWRVJfTUFTSwko NyA8PCAyNSkKICNkZWZpbmUgUlRMODE4WF9UWF9DT05GX0RJU1JFUVFTSVpFCSgxIDw8IDI4KQog I2RlZmluZSBSVEw4MThYX1RYX0NPTkZfUFJPQkVfRFRTCSgxIDw8IDI5KQotI2RlZmluZSBSVEw4 MThYX1RYX0NPTkZfSFdfU0VRTlVNCSgxIDw8IDMwKQorI2RlZmluZSBSVEw4MThYX1RYX0NPTkZf U1dfU0VRTlVNCSgxIDw8IDMwKQogI2RlZmluZSBSVEw4MThYX1RYX0NPTkZfQ1dfTUlOCQkoMSA8 PCAzMSkKLQlfX2xlMzIJUlhfQ09ORjsKKwlfX2xlMzIJUlhfQ09ORjsgLyogMHg0NCAqLwogI2Rl ZmluZSBSVEw4MThYX1JYX0NPTkZfTU9OSVRPUgkJKDEgPDwgIDApCiAjZGVmaW5lIFJUTDgxOFhf UlhfQ09ORl9OSUNNQUMJCSgxIDw8ICAxKQogI2RlZmluZSBSVEw4MThYX1JYX0NPTkZfTVVMVElD QVNUCSgxIDw8ICAyKQogI2RlZmluZSBSVEw4MThYX1JYX0NPTkZfQlJPQURDQVNUCSgxIDw8ICAz KQogI2RlZmluZSBSVEw4MThYX1JYX0NPTkZfRkNTCQkoMSA8PCAgNSkKKyNkZWZpbmUgUlRMODE4 WF9SWF9DT05GXzkzNTZTRUwJCSgxIDw8ICA2KQorI2RlZmluZSBSVEw4MThYX1JYX0NPTkZfTUFY RE1BCQkoNyA8PCAgOCkKKyNkZWZpbmUgUlRMODE4WF9SWF9DT05GX0ZJRk8JCSg3IDw8IDEzKQog I2RlZmluZSBSVEw4MThYX1JYX0NPTkZfREFUQQkJKDEgPDwgMTgpCiAjZGVmaW5lIFJUTDgxOFhf UlhfQ09ORl9DVFJMCQkoMSA8PCAxOSkKICNkZWZpbmUgUlRMODE4WF9SWF9DT05GX01HTVQJCSgx IDw8IDIwKQpAQCAtODksOSArMTgwLDkgQEAgc3RydWN0IHJ0bDgxOHhfY3NyIHsKICNkZWZpbmUg UlRMODE4WF9SWF9DT05GX0NTRE0xCQkoMSA8PCAyOSkKICNkZWZpbmUgUlRMODE4WF9SWF9DT05G X0NTRE0yCQkoMSA8PCAzMCkKICNkZWZpbmUgUlRMODE4WF9SWF9DT05GX09OTFlFUkxQS1QJKDEg PDwgMzEpCi0JX19sZTMyCUlOVF9USU1FT1VUOwotCV9fbGUzMglUQkRBOwotCXU4CUVFUFJPTV9D TUQ7CisJX19sZTMyCUlOVF9USU1FT1VUOyAvKiAweDQ4ICovCisJX19sZTMyCVRCREE7IC8qIDB4 NGMgKi8KKwl1OAlFRVBST01fQ01EOyAvKiAweDUwICovCiAjZGVmaW5lIFJUTDgxOFhfRUVQUk9N X0NNRF9SRUFECQkoMSA8PCAwKQogI2RlZmluZSBSVEw4MThYX0VFUFJPTV9DTURfV1JJVEUJKDEg PDwgMSkKICNkZWZpbmUgUlRMODE4WF9FRVBST01fQ01EX0NLCQkoMSA8PCAyKQpAQCAtMTAwLDc0 ICsxOTEsMTEzIEBAIHN0cnVjdCBydGw4MTh4X2NzciB7CiAjZGVmaW5lIFJUTDgxOFhfRUVQUk9N X0NNRF9MT0FECQkoMSA8PCA2KQogI2RlZmluZSBSVEw4MThYX0VFUFJPTV9DTURfUFJPR1JBTQko MiA8PCA2KQogI2RlZmluZSBSVEw4MThYX0VFUFJPTV9DTURfQ09ORklHCSgzIDw8IDYpCi0JdTgJ Q09ORklHMDsKLQl1OAlDT05GSUcxOwotCXU4CUNPTkZJRzI7CisJdTgJQ09ORklHMDsgLyogMHg1 MSAqLworCXU4CUNPTkZJRzE7IC8qIDB4NTIgKi8KKwl1OAlDT05GSUcyOyAvKiAweDUzICovCiAj ZGVmaW5lIFJUTDgxOFhfQ09ORklHMl9BTlRFTk5BX0RJVgkoMSA8PCA2KQotCV9fbGUzMglBTkFQ QVJBTTsKLQl1OAlNU1I7CisJX19sZTMyCUFOQVBBUkFNOyAvKiAweDU0ICovCisJdTgJTVNSOyAv KiAweDU4ICovCiAjZGVmaW5lIFJUTDgxOFhfTVNSX05PX0xJTksJCSgwIDw8IDIpCiAjZGVmaW5l IFJUTDgxOFhfTVNSX0FESE9DCQkoMSA8PCAyKQogI2RlZmluZSBSVEw4MThYX01TUl9JTkZSQQkJ KDIgPDwgMikKICNkZWZpbmUgUlRMODE4WF9NU1JfTUFTVEVSCQkoMyA8PCAyKQogI2RlZmluZSBS VEw4MThYX01TUl9FTkVEQ0EJCSg0IDw8IDIpCi0JdTgJQ09ORklHMzsKKwl1OAlDT05GSUczOyAv KiAweDU5ICovCiAjZGVmaW5lIFJUTDgxOFhfQ09ORklHM19BTkFQQVJBTV9XUklURQkoMSA8PCA2 KQogI2RlZmluZSBSVEw4MThYX0NPTkZJRzNfR05UX1NFTEVDVAkoMSA8PCA3KQotCXU4CUNPTkZJ RzQ7CisJdTgJQ09ORklHNDsgLyogMHg1QSAqLwogI2RlZmluZSBSVEw4MThYX0NPTkZJRzRfUE9X RVJPRkYJKDEgPDwgNikKICNkZWZpbmUgUlRMODE4WF9DT05GSUc0X1ZDT09GRgkJKDEgPDwgNykK LQl1OAlURVNUUjsKLQl1OAlyZXNlcnZlZF85WzJdOwotCXU4CVBHU0VMRUNUOwotCXU4CVNFQ1VS SVRZOwotCV9fbGUzMglBTkFQQVJBTTI7Ci0JdTgJcmVzZXJ2ZWRfMTBbMTJdOwotCV9fbGUxNglC RUFDT05fSU5URVJWQUw7Ci0JX19sZTE2CUFUSU1fV05EOwotCV9fbGUxNglCRUFDT05fSU5URVJW QUxfVElNRTsKLQlfX2xlMTYJQVRJTVRSX0lOVEVSVkFMOwotCXU4CVBIWV9ERUxBWTsKLQl1OAlD QVJSSUVSX1NFTlNFX0NPVU5URVI7Ci0JdTgJcmVzZXJ2ZWRfMTFbMl07Ci0JdTgJUEhZWzRdOwot CV9fbGUxNglSRlBpbnNPdXRwdXQ7Ci0JX19sZTE2CVJGUGluc0VuYWJsZTsKLQlfX2xlMTYJUkZQ aW5zU2VsZWN0OwotCV9fbGUxNglSRlBpbnNJbnB1dDsKLQlfX2xlMzIJUkZfUEFSQTsKLQlfX2xl MzIJUkZfVElNSU5HOwotCXU4CUdQX0VOQUJMRTsKLQl1OAlHUElPMDsKLQl1OAlHUElPMTsKLQl1 OAlyZXNlcnZlZF8xMjsKLQlfX2xlMzIJSFNTSV9QQVJBOwotCXU4CXJlc2VydmVkXzEzWzRdOwot CXU4CVRYX0FHQ19DVEw7Ci0jZGVmaW5lIFJUTDgxOFhfVFhfQUdDX0NUTF9QRVJQQUNLRVRfR0FJ Tl9TSElGVAkJKDEgPDwgMCkKLSNkZWZpbmUgUlRMODE4WF9UWF9BR0NfQ1RMX1BFUlBBQ0tFVF9B TlRTRUxfU0hJRlQJKDEgPDwgMSkKLSNkZWZpbmUgUlRMODE4WF9UWF9BR0NfQ1RMX0ZFRURCQUNL X0FOVAkJCSgxIDw8IDIpCi0JdTgJVFhfR0FJTl9DQ0s7Ci0JdTgJVFhfR0FJTl9PRkRNOwotCXU4 CVRYX0FOVEVOTkE7Ci0JdTgJcmVzZXJ2ZWRfMTRbMTZdOwotCXU4CVdQQV9DT05GOwotCXU4CXJl c2VydmVkXzE1WzNdOwotCXU4CVNJRlM7Ci0JdTgJRElGUzsKLQl1OAlTTE9UOworCXU4CVRFU1RS OyAvKiAweDViICovCisJdTgJcmVzZXJ2ZWRfOVsyXTsgLyogMHg1YyAqLworCXU4CVBHU0VMRUNU OyAvKiAweDVlICovCisJdTgJU0VDVVJJVFk7IC8qIDB4NWYgKi8KKwlfX2xlMzIJQU5BUEFSQU0y OyAvKiAweDYwICovCisJdTgJcmVzZXJ2ZWRfMTBbOF07IC8qIDB4NjQgKi8KKwlfX2xlMzIgIElN UjsJCS8qIDB4NmMJLSBJbnRlcnJ1cHQgbWFzayByZWcgZm9yIDgxODdzZSAqLworI2RlZmluZSBJ TVJfVE1HRE9LICAgICAgKCgxIDw8IDMwKSkKKyNkZWZpbmUgSU1SX0RPVDExSElOVAkoKDEgPDwg MjUpKQkvKiA4MDIuMTFoIE1lYXN1cmVtZW50IEludGVycnVwdCAqLworI2RlZmluZSBJTVJfQkNO RE1BSU5UCSgoMSA8PCAyNCkpCS8qIEJlYWNvbiBETUEgSW50ZXJydXB0ICovCisjZGVmaW5lIElN Ul9XQUtFSU5UCSgoMSA8PCAyMykpCS8qIFdha2UgVXAgSW50ZXJydXB0ICovCisjZGVmaW5lIElN Ul9UWEZPVlcJKCgxIDw8IDIyKSkJLyogVHggRklGTyBPdmVyZmxvdyAqLworI2RlZmluZSBJTVJf VElNRU9VVDEJKCgxIDw8IDIxKSkJLyogVGltZSBPdXQgSW50ZXJydXB0IDEgKi8KKyNkZWZpbmUg SU1SX0JDTklOVAkoKDEgPDwgMjApKQkvKiBCZWFjb24gVGltZSBvdXQgKi8KKyNkZWZpbmUgSU1S X0FUSU1JTlQJKCgxIDw8IDE5KSkJLyogQVRJTSBUaW1lIE91dCAqLworI2RlZmluZSBJTVJfVEJE RVIJKCgxIDw8IDE4KSkJLyogVHggQmVhY29uIERlc2NyaXB0b3IgRXJyb3IgKi8KKyNkZWZpbmUg SU1SX1RCRE9LCSgoMSA8PCAxNykpCS8qIFR4IEJlYWNvbiBEZXNjcmlwdG9yIE9LICovCisjZGVm aW5lIElNUl9USFBERVIJKCgxIDw8IDE2KSkJLyogVHggSGlnaCBQcmlvcml0eSBEZXNjcmlwdG9y IEVycm9yICovCisjZGVmaW5lIElNUl9USFBET0sJKCgxIDw8IDE1KSkJLyogVHggSGlnaCBQcmlv cml0eSBEZXNjcmlwdG9yIE9LICovCisjZGVmaW5lIElNUl9UVk9ERVIJKCgxIDw8IDE0KSkJLyog VHggQUNfVk8gRGVzY3JpcHRvciBFcnJvciBJbnQgKi8KKyNkZWZpbmUgSU1SX1RWT0RPSwkoKDEg PDwgMTMpKQkvKiBUeCBBQ19WTyBEZXNjcmlwdG9yIE9LIEludGVycnVwdCAqLworI2RlZmluZSBJ TVJfRk9WVwkoKDEgPDwgMTIpKQkvKiBSeCBGSUZPIE92ZXJmbG93IEludGVycnVwdCAqLworI2Rl ZmluZSBJTVJfUkRVCQkoKDEgPDwgMTEpKQkvKiBSeCBEZXNjcmlwdG9yIFVuYXZhaWxhYmxlICov CisjZGVmaW5lIElNUl9UVklERVIJKCgxIDw8IDEwKSkJLyogVHggQUNfVkkgRGVzY3JpcHRvciBF cnJvciAqLworI2RlZmluZSBJTVJfVFZJRE9LCSgoMSA8PCA5KSkJLyogVHggQUNfVkkgRGVzY3Jp cHRvciBPSyBJbnRlcnJ1cHQgKi8KKyNkZWZpbmUgSU1SX1JFUgkJKCgxIDw8IDgpKQkvKiBSeCBF cnJvciBJbnRlcnJ1cHQgKi8KKyNkZWZpbmUgSU1SX1JPSwkJKCgxIDw8IDcpKQkvKiBSZWNlaXZl IE9LIEludGVycnVwdCAqLworI2RlZmluZSBJTVJfVEJFREVSCSgoMSA8PCA2KSkJLyogVHggQUNf QkUgRGVzY3JpcHRvciBFcnJvciAqLworI2RlZmluZSBJTVJfVEJFRE9LCSgoMSA8PCA1KSkJLyog VHggQUNfQkUgRGVzY3JpcHRvciBPSyAqLworI2RlZmluZSBJTVJfVEJLREVSCSgoMSA8PCA0KSkJ LyogVHggQUNfQksgRGVzY3JpcHRvciBFcnJvciAqLworI2RlZmluZSBJTVJfVEJLRE9LCSgoMSA8 PCAzKSkJLyogVHggQUNfQksgRGVzY3JpcHRvciBPSyAqLworI2RlZmluZSBJTVJfUlFPU09LCSgo MSA8PCAyKSkJLyogUnggUW9TIE9LIEludGVycnVwdCAqLworI2RlZmluZSBJTVJfVElNRU9VVDIJ KCgxIDw8IDEpKQkvKiBUaW1lIE91dCBJbnRlcnJ1cHQgMiAqLworI2RlZmluZSBJTVJfVElNRU9V VDMJKCgxIDw8IDApKQkvKiBUaW1lIE91dCBJbnRlcnJ1cHQgMyAqLworCV9fbGUxNglCRUFDT05f SU5URVJWQUw7IC8qIDB4NzAgKi8KKwlfX2xlMTYJQVRJTV9XTkQ7IC8qICAweDcyICovCisJX19s ZTE2CUJFQUNPTl9JTlRFUlZBTF9USU1FOyAvKiAgMHg3NCAqLworCV9fbGUxNglBVElNVFJfSU5U RVJWQUw7IC8qICAweDc2ICovCisJdTgJUEhZX0RFTEFZOyAvKiAgMHg3OCAqLworCXU4CUNBUlJJ RVJfU0VOU0VfQ09VTlRFUjsgLyogMHg3OSAqLworCXU4CXJlc2VydmVkXzExWzJdOyAvKiAweDdh ICovCisJdTgJUEhZWzRdOyAvKiAweDdjICAqLworCV9fbGUxNglSRlBpbnNPdXRwdXQ7IC8qIDB4 ODAgKi8KKwlfX2xlMTYJUkZQaW5zRW5hYmxlOyAvKiAweDgyICovCisJX19sZTE2CVJGUGluc1Nl bGVjdDsgLyogMHg4NCAqLworCV9fbGUxNglSRlBpbnNJbnB1dDsgIC8qIDB4ODYgKi8KKwlfX2xl MzIJUkZfUEFSQTsgLyogIDB4ODggKi8KKwlfX2xlMzIJUkZfVElNSU5HOyAvKiAgMHg4YyAqLwor CXU4CUdQX0VOQUJMRTsgLyogIDB4OTAgKi8KKwl1OAlHUElPMDsgLyogIDB4OTEgKi8KKwl1OAlH UElPMTsgLyogIDB4OTIgKi8KKwl1OAlUUFBPTExfU1RPUDsgLyogIDB4OTMgLSBydGw4MTg3c2Ug b25seSAqLworI2RlZmluZSBSVEw4MTh4X1RQUE9MTF9TVE9QX0JRCQkJKDEgPDwgNykKKyNkZWZp bmUgUlRMODE4eF9UUFBPTExfU1RPUF9WSQkJCSgxIDw8IDQpCisjZGVmaW5lIFJUTDgxOHhfVFBQ T0xMX1NUT1BfVk8JCQkoMSA8PCA1KQorI2RlZmluZSBSVEw4MTh4X1RQUE9MTF9TVE9QX0JFCQkJ KDEgPDwgMykKKyNkZWZpbmUgUlRMODE4eF9UUFBPTExfU1RPUF9CSwkJCSgxIDw8IDIpCisjZGVm aW5lIFJUTDgxOHhfVFBQT0xMX1NUT1BfTUcJCQkoMSA8PCAxKQorI2RlZmluZSBSVEw4MTh4X1RQ UE9MTF9TVE9QX0hJCQkJKDEgPDwgNikKKworCV9fbGUzMglIU1NJX1BBUkE7IC8qICAweDk0ICov CisJdTgJcmVzZXJ2ZWRfMTNbNF07IC8qIDB4OTggKi8KKwl1OAlUWF9BR0NfQ1RMOyAvKiAgMHg5 YyAqLworI2RlZmluZSBSVEw4MThYX1RYX0FHQ19DVExfUEVSUEFDS0VUX0dBSU4JKDEgPDwgMCkK KyNkZWZpbmUgUlRMODE4WF9UWF9BR0NfQ1RMX1BFUlBBQ0tFVF9BTlRTRUwJKDEgPDwgMSkKKyNk ZWZpbmUgUlRMODE4WF9UWF9BR0NfQ1RMX0ZFRURCQUNLX0FOVAkJKDEgPDwgMikKKwl1OAlUWF9H QUlOX0NDSzsgLyogMHg5ZCAqLworCXU4CVRYX0dBSU5fT0ZETTsgLyogMHg5ZSAqLworCXU4CVRY X0FOVEVOTkE7IC8qICAweDlmICovCisJdTgJcmVzZXJ2ZWRfMTRbMTZdOyAvKiAgMHhhMCAqLwor CXU4CVdQQV9DT05GOyAvKiAgMHhiMCAqLworCXU4CXJlc2VydmVkXzE1WzNdOyAvKiAgMHhiMSAq LworCXU4CVNJRlM7IC8qIDB4YjQgKi8KKwl1OAlESUZTOyAvKiAweGI1ICovCisJdTgJU0xPVDsg LyogIDB4YjYgKi8KIAl1OAlyZXNlcnZlZF8xNls1XTsKIAl1OAlDV19DT05GOwotI2RlZmluZSBS VEw4MThYX0NXX0NPTkZfUEVSUEFDS0VUX0NXX1NISUZUCSgxIDw8IDApCi0jZGVmaW5lIFJUTDgx OFhfQ1dfQ09ORl9QRVJQQUNLRVRfUkVUUllfU0hJRlQJKDEgPDwgMSkKKyNkZWZpbmUgUlRMODE4 WF9DV19DT05GX1BFUlBBQ0tFVF9DVwkoMSA8PCAwKQorI2RlZmluZSBSVEw4MThYX0NXX0NPTkZf UEVSUEFDS0VUX1JFVFJZCSgxIDw8IDEpCiAJdTgJQ1dfVkFMOwogCXU4CVJBVEVfRkFMTEJBQ0s7 CiAjZGVmaW5lIFJUTDgxOFhfUkFURV9GQUxMQkFDS19FTkFCTEUJKDEgPDwgNykKKyNkZWZpbmUg UlRMODE4WF9SQVRFX0ZBTExCQUNLX0FVVE9fU1RFUDEJMHgwMQorCiAJdTgJQUNNX0NPTlRST0w7 CiAJdTgJcmVzZXJ2ZWRfMTdbMjRdOwotCXU4CUNPTkZJRzU7Ci0JdTgJVFhfRE1BX1BPTExJTkc7 Ci0JdTgJcmVzZXJ2ZWRfMThbMl07CisJdTgJQ09ORklHNTsgLyogIDB4ZDggKi8KKwl1OAlUWF9E TUFfUE9MTElORzsgLyogIDB4ZDkgKi8KKwl1OAlQSFlfUFI7CisJdTgJcmVzZXJ2ZWRfMTg7CiAJ X19sZTE2CUNXUjsKIAl1OAlSRVRSWV9DVFI7CiAJdTgJcmVzZXJ2ZWRfMTlbM107CkBAIC0xNzYs MjMgKzMwNiw2OSBAQCBzdHJ1Y3QgcnRsODE4eF9jc3IgewogI2RlZmluZSBSVEw4MThYX1I4MTg3 Ql9CCTAKICNkZWZpbmUgUlRMODE4WF9SODE4N0JfRAkxCiAjZGVmaW5lIFJUTDgxOFhfUjgxODdC X0UJMgotCV9fbGUzMglSRFNBUjsKLQlfX2xlMTYJVElEX0FDX01BUDsKKwlfX2xlMzIJUkRTQVI7 IC8qIDB4ZTQgKi8KKwlfX2xlMTYJVElEX0FDX01BUDsgLyogMHhlOCAqLwogCXU4CXJlc2VydmVk XzIwWzRdOwotCXU4CUFOQVBBUkFNMzsKLQl1OAlyZXNlcnZlZF8yMVs1XTsKLQlfX2xlMTYJRkVN UjsKLQl1OAlyZXNlcnZlZF8yMls0XTsKLQlfX2xlMTYJVEFMTFlfQ05UOwotCXU4CVRBTExZX1NF TDsKLX0gX19wYWNrZWQ7CisJX19sZTE2CUFOQVBBUkFNMzsgLyogMHhlZSAqLworCisjZGVmaW5l IEFDX1BBUkFNX1RYT1BfTElNSVRfU0hJRlQJMTYKKyNkZWZpbmUgQUNfUEFSQU1fRUNXX01BWF9T SElGVAkJMTIKKyNkZWZpbmUgQUNfUEFSQU1fRUNXX01JTl9TSElGVAkJOAorI2RlZmluZSBBQ19Q QVJBTV9BSUZTX1NISUZUCQkwCisKKwlfX2xlMzIgQUNfVk9fUEFSQU07IC8qIDB4ZjAgKi8KKwor CXVuaW9uIHsgLyogMHhmNCAqLworCQlfX2xlMzIgQUNfVklfUEFSQU07CisJCV9fbGUzMiBGRU1S OworCX0gX19hdHRyaWJ1dGVfXyAoKF9fcGFja2VkX18pKTsKKworCXVuaW9ueyAvKiAweGY4ICov CisJCV9fbGUzMiAgQUNfQkVfUEFSQU07IC8qIHJ0bDgxODdzZSAqLworCQlzdHJ1Y3R7CisJCQl1 OCAgICAgIHJlc2VydmVkXzIxWzJdOworCQkJX19sZTE2CVRBTExZX0NOVDsgLyogMHhmYSAqLwor CQl9IF9fYXR0cmlidXRlX18gKChfX3BhY2tlZF9fKSk7CisJfSBfX2F0dHJpYnV0ZV9fICgoX19w YWNrZWRfXykpOworCisJdW5pb24geworCQl1OAlUQUxMWV9TRUw7IC8qIDB4ZmMgKi8KKwkJX19s ZTMyICBBQ19CS19QQVJBTTsKKworCX0gX19hdHRyaWJ1dGVfXyAoKF9fcGFja2VkX18pKTsKKwor fSBfX2F0dHJpYnV0ZV9fICgoX19wYWNrZWRfXykpOworCisKKy8qIFRoZXNlIGFyZSBhZGRyZXNz ZXMgd2l0aCBOT04tc3RhbmRhcmQgdXNhZ2UuCisgKiBUaGV5IGhhdmUgb2Zmc2V0cyB2ZXJ5IGZh ciBmcm9tIHRoaXMgc3RydWN0LgorICogSSBkb24ndCBsaWtlIHRvIGludHJvZHVjZSBhIHRvbiBv ZiAicmVzZXJ2ZWQiLi4KKyAqIFRoZXkgYXJlIGZvciBSVEw4MTg3U0UKKyAqLworCisjZGVmaW5l IFJFR19BRERSMShhZGRyKQkoKHU4IF9faW9tZW0gKikoJnByaXYtPm1hcC0+b2Zmc2V0MVsoYWRk cildKSkKKyNkZWZpbmUgUkVHX0FERFIyKGFkZHIpCSgoX19sZTE2IF9faW9tZW0gKikoJnByaXYt Pm1hcC0+b2Zmc2V0MlsoKGFkZHIpID4+IDEpXSkpCisjZGVmaW5lIFJFR19BRERSNChhZGRyKQko KF9fbGUzMiBfX2lvbWVtICopKCZwcml2LT5tYXAtPm9mZnNldDRbKChhZGRyKSA+PiAyKV0pKQor CisKKyNkZWZpbmUgRkVNUl9TRQkJUkVHX0FERFIyKDB4MUQ0KQorI2RlZmluZSBBUkZSCQlSRUdf QUREUjIoMHgxRTApCisjZGVmaW5lIFJGU1dfQ1RSTAlSRUdfQUREUjIoMHgyNzIpCisjZGVmaW5l IFNXXzNXX0RCMAlSRUdfQUREUjIoMHgyNzQpCisjZGVmaW5lIFNXXzNXX0RCMF80CVJFR19BRERS NCgweDI3NCkKKyNkZWZpbmUgU1dfM1dfREIxCVJFR19BRERSMigweDI3OCkKKyNkZWZpbmUgU1df M1dfREIxXzQJUkVHX0FERFI0KDB4Mjc4KQorI2RlZmluZSBTV18zV19DTUQxCVJFR19BRERSMSgw eDI3RCkKKyNkZWZpbmUgUElfREFUQV9SRUcJUkVHX0FERFIyKDB4MzYwKQorI2RlZmluZSBTSV9E QVRBX1JFRyAgICAgUkVHX0FERFIyKDB4MzYyKQorCisKIAogc3RydWN0IHJ0bDgxOHhfcmZfb3Bz IHsKIAljaGFyICpuYW1lOwogCXZvaWQgKCppbml0KShzdHJ1Y3QgaWVlZTgwMjExX2h3ICopOwog CXZvaWQgKCpzdG9wKShzdHJ1Y3QgaWVlZTgwMjExX2h3ICopOwogCXZvaWQgKCpzZXRfY2hhbiko c3RydWN0IGllZWU4MDIxMV9odyAqLCBzdHJ1Y3QgaWVlZTgwMjExX2NvbmYgKik7Ci0Jdm9pZCAo KmNvbmZfZXJwKShzdHJ1Y3QgaWVlZTgwMjExX2h3ICosIHN0cnVjdCBpZWVlODAyMTFfYnNzX2Nv bmYgKik7CiAJdTggKCpjYWxjX3Jzc2kpKHU4IGFnYywgdTggc3EpOwogfTsKIAo= --047d7b6d8f16f5543204f195a4aa--