From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v6 2/8] dm_op: convert HVMOP_*ioreq_server* Date: Mon, 23 Jan 2017 10:00:58 +0000 Message-ID: <1485165664-19253-3-git-send-email-paul.durrant@citrix.com> References: <1485165664-19253-1-git-send-email-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cVbR9-0006gw-VQ for xen-devel@lists.xenproject.org; Mon, 23 Jan 2017 10:01:20 +0000 In-Reply-To: <1485165664-19253-1-git-send-email-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Paul Durrant , Ian Jackson List-Id: xen-devel@lists.xenproject.org VGhlIGRlZmluaXRpb25zIG9mIEhWTV9JT1JFUVNSVl9CVUZJT1JFUV8qIGhhdmUgdG8gcGVyc2lz dCBhcyB0aGV5IGFyZQphbHJlYWR5IGluIHVzZSBieSBjYWxsZXJzIG9mIHRoZSBsaWJ4YyBpbnRl cmZhY2UuCgpTdWdnZXN0ZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KU2ln bmVkLW9mZi1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KUmV2aWV3 ZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQWNrZWQtYnk6IFdlaSBMaXUg PHdlaS5saXUyQGNpdHJpeC5jb20+CkFja2VkLWJ5OiBEYW5pZWwgRGUgR3JhYWYgPGRnZGVncmFA dHljaG8ubnNhLmdvdj4KUmV2aWV3ZWQtYnk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIz QGNpdHJpeC5jb20+Ci0tCkNjOiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNv bT4KCnY2OgotIE1vZGlmeSBjb25zdF9vcCBhcyBhcHByb3ByaWF0ZS4KCnY0OgotICNkZWZpbmUg dWludDY0X2FsaWduZWRfdCBpZiBuZWNlc3NhcnkgdG8gaGFuZGxlIGNvbXBhdCBjb2RlIGdlbmVy YXRpb24uCgp2MzoKLSBGaXggcGFkIGNoZWNrLgoKdjI6Ci0gQWRkcmVzc2VkIHNldmVyYWwgY29t bWVudHMgZnJvbSBKYW4uCi0tLQogdG9vbHMvbGlieGMveGNfZG9tYWluLmMgICAgICAgICAgfCAy MTIgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQogeGVuL2FyY2gveDg2L2h2 bS9kbS5jICAgICAgICAgICAgfCAgOTMgKysrKysrKysrKysrKysrKysKIHhlbi9hcmNoL3g4Ni9o dm0vaHZtLmMgICAgICAgICAgIHwgMjE5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogeGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jICAgICAgICAgfCAgMzYgKysrLS0tLQog eGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWluLmggfCAgIDMgKy0KIHhlbi9pbmNsdWRlL3B1 YmxpYy9odm0vZG1fb3AuaCAgIHwgMTU3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHhl bi9pbmNsdWRlL3B1YmxpYy9odm0vaHZtX29wLmggIHwgMTMyICstLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiB4ZW4vaW5jbHVkZS94c20vZHVtbXkuaCAgICAgICAgICB8ICAgNiAtLQogeGVuL2luY2x1 ZGUveHNtL3hzbS5oICAgICAgICAgICAgfCAgIDYgLS0KIHhlbi94c20vZHVtbXkuYyAgICAgICAg ICAgICAgICAgIHwgICAxIC0KIHhlbi94c20vZmxhc2svaG9va3MuYyAgICAgICAgICAgIHwgICA2 IC0tCiAxMSBmaWxlcyBjaGFuZ2VkLCAzNjQgaW5zZXJ0aW9ucygrKSwgNTA3IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX2RvbWFpbi5jIGIvdG9vbHMvbGlieGMveGNf ZG9tYWluLmMKaW5kZXggMjk2Yjg1Mi4uNDE5YTg5NyAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMv eGNfZG9tYWluLmMKKysrIGIvdG9vbHMvbGlieGMveGNfZG9tYWluLmMKQEAgLTE0MTcsMjQgKzE0 MTcsMjQgQEAgaW50IHhjX2h2bV9jcmVhdGVfaW9yZXFfc2VydmVyKHhjX2ludGVyZmFjZSAqeGNo LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBoYW5kbGVfYnVmaW9yZXEsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9zZXJ2aWRfdCAqaWQpCiB7Ci0gICAgREVD TEFSRV9IWVBFUkNBTExfQlVGRkVSKHhlbl9odm1fY3JlYXRlX2lvcmVxX3NlcnZlcl90LCBhcmcp OworICAgIHN0cnVjdCB4ZW5fZG1fb3Agb3A7CisgICAgc3RydWN0IHhlbl9kbV9vcF9jcmVhdGVf aW9yZXFfc2VydmVyICpkYXRhOwogICAgIGludCByYzsKIAotICAgIGFyZyA9IHhjX2h5cGVyY2Fs bF9idWZmZXJfYWxsb2MoeGNoLCBhcmcsIHNpemVvZigqYXJnKSk7Ci0gICAgaWYgKCBhcmcgPT0g TlVMTCApCi0gICAgICAgIHJldHVybiAtMTsKKyAgICBtZW1zZXQoJm9wLCAwLCBzaXplb2Yob3Ap KTsKIAotICAgIGFyZy0+ZG9taWQgPSBkb21pZDsKLSAgICBhcmctPmhhbmRsZV9idWZpb3JlcSA9 IGhhbmRsZV9idWZpb3JlcTsKKyAgICBvcC5vcCA9IFhFTl9ETU9QX2NyZWF0ZV9pb3JlcV9zZXJ2 ZXI7CisgICAgZGF0YSA9ICZvcC51LmNyZWF0ZV9pb3JlcV9zZXJ2ZXI7CiAKLSAgICByYyA9IHhl bmNhbGwyKHhjaC0+eGNhbGwsIF9fSFlQRVJWSVNPUl9odm1fb3AsCi0gICAgICAgICAgICAgICAg ICBIVk1PUF9jcmVhdGVfaW9yZXFfc2VydmVyLAotICAgICAgICAgICAgICAgICAgSFlQRVJDQUxM X0JVRkZFUl9BU19BUkcoYXJnKSk7CisgICAgZGF0YS0+aGFuZGxlX2J1ZmlvcmVxID0gaGFuZGxl X2J1ZmlvcmVxOworCisgICAgcmMgPSBkb19kbV9vcCh4Y2gsIGRvbWlkLCAxLCAmb3AsIHNpemVv ZihvcCkpOworICAgIGlmICggcmMgKQorICAgICAgICByZXR1cm4gcmM7CiAKLSAgICAqaWQgPSBh cmctPmlkOworICAgICppZCA9IGRhdGEtPmlkOwogCi0gICAgeGNfaHlwZXJjYWxsX2J1ZmZlcl9m cmVlKHhjaCwgYXJnKTsKLSAgICByZXR1cm4gcmM7CisgICAgcmV0dXJuIDA7CiB9CiAKIGludCB4 Y19odm1fZ2V0X2lvcmVxX3NlcnZlcl9pbmZvKHhjX2ludGVyZmFjZSAqeGNoLApAQCAtMTQ0NCw4 NCArMTQ0NCw3MSBAQCBpbnQgeGNfaHZtX2dldF9pb3JlcV9zZXJ2ZXJfaW5mbyh4Y19pbnRlcmZh Y2UgKnhjaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhlbl9wZm5fdCAqYnVm aW9yZXFfcGZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZ0Y2huX3BvcnRf dCAqYnVmaW9yZXFfcG9ydCkKIHsKLSAgICBERUNMQVJFX0hZUEVSQ0FMTF9CVUZGRVIoeGVuX2h2 bV9nZXRfaW9yZXFfc2VydmVyX2luZm9fdCwgYXJnKTsKKyAgICBzdHJ1Y3QgeGVuX2RtX29wIG9w OworICAgIHN0cnVjdCB4ZW5fZG1fb3BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZvICpkYXRhOwogICAg IGludCByYzsKIAotICAgIGFyZyA9IHhjX2h5cGVyY2FsbF9idWZmZXJfYWxsb2MoeGNoLCBhcmcs IHNpemVvZigqYXJnKSk7Ci0gICAgaWYgKCBhcmcgPT0gTlVMTCApCi0gICAgICAgIHJldHVybiAt MTsKKyAgICBtZW1zZXQoJm9wLCAwLCBzaXplb2Yob3ApKTsKIAotICAgIGFyZy0+ZG9taWQgPSBk b21pZDsKLSAgICBhcmctPmlkID0gaWQ7CisgICAgb3Aub3AgPSBYRU5fRE1PUF9nZXRfaW9yZXFf c2VydmVyX2luZm87CisgICAgZGF0YSA9ICZvcC51LmdldF9pb3JlcV9zZXJ2ZXJfaW5mbzsKIAot ICAgIHJjID0geGVuY2FsbDIoeGNoLT54Y2FsbCwgX19IWVBFUlZJU09SX2h2bV9vcCwKLSAgICAg ICAgICAgICAgICAgIEhWTU9QX2dldF9pb3JlcV9zZXJ2ZXJfaW5mbywKLSAgICAgICAgICAgICAg ICAgIEhZUEVSQ0FMTF9CVUZGRVJfQVNfQVJHKGFyZykpOwotICAgIGlmICggcmMgIT0gMCApCi0g ICAgICAgIGdvdG8gZG9uZTsKKyAgICBkYXRhLT5pZCA9IGlkOworCisgICAgcmMgPSBkb19kbV9v cCh4Y2gsIGRvbWlkLCAxLCAmb3AsIHNpemVvZihvcCkpOworICAgIGlmICggcmMgKQorICAgICAg ICByZXR1cm4gcmM7CiAKICAgICBpZiAoIGlvcmVxX3BmbiApCi0gICAgICAgICppb3JlcV9wZm4g PSBhcmctPmlvcmVxX3BmbjsKKyAgICAgICAgKmlvcmVxX3BmbiA9IGRhdGEtPmlvcmVxX3BmbjsK IAogICAgIGlmICggYnVmaW9yZXFfcGZuICkKLSAgICAgICAgKmJ1ZmlvcmVxX3BmbiA9IGFyZy0+ YnVmaW9yZXFfcGZuOworICAgICAgICAqYnVmaW9yZXFfcGZuID0gZGF0YS0+YnVmaW9yZXFfcGZu OwogCiAgICAgaWYgKCBidWZpb3JlcV9wb3J0ICkKLSAgICAgICAgKmJ1ZmlvcmVxX3BvcnQgPSBh cmctPmJ1ZmlvcmVxX3BvcnQ7CisgICAgICAgICpidWZpb3JlcV9wb3J0ID0gZGF0YS0+YnVmaW9y ZXFfcG9ydDsKIAotZG9uZToKLSAgICB4Y19oeXBlcmNhbGxfYnVmZmVyX2ZyZWUoeGNoLCBhcmcp OwotICAgIHJldHVybiByYzsKKyAgICByZXR1cm4gMDsKIH0KIAogaW50IHhjX2h2bV9tYXBfaW9f cmFuZ2VfdG9faW9yZXFfc2VydmVyKHhjX2ludGVyZmFjZSAqeGNoLCBkb21pZF90IGRvbWlkLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvc2VydmlkX3QgaWQsIGlu dCBpc19tbWlvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2 NF90IHN0YXJ0LCB1aW50NjRfdCBlbmQpCiB7Ci0gICAgREVDTEFSRV9IWVBFUkNBTExfQlVGRkVS KHhlbl9odm1faW9fcmFuZ2VfdCwgYXJnKTsKLSAgICBpbnQgcmM7CisgICAgc3RydWN0IHhlbl9k bV9vcCBvcDsKKyAgICBzdHJ1Y3QgeGVuX2RtX29wX2lvcmVxX3NlcnZlcl9yYW5nZSAqZGF0YTsK IAotICAgIGFyZyA9IHhjX2h5cGVyY2FsbF9idWZmZXJfYWxsb2MoeGNoLCBhcmcsIHNpemVvZigq YXJnKSk7Ci0gICAgaWYgKCBhcmcgPT0gTlVMTCApCi0gICAgICAgIHJldHVybiAtMTsKKyAgICBt ZW1zZXQoJm9wLCAwLCBzaXplb2Yob3ApKTsKIAotICAgIGFyZy0+ZG9taWQgPSBkb21pZDsKLSAg ICBhcmctPmlkID0gaWQ7Ci0gICAgYXJnLT50eXBlID0gaXNfbW1pbyA/IEhWTU9QX0lPX1JBTkdF X01FTU9SWSA6IEhWTU9QX0lPX1JBTkdFX1BPUlQ7Ci0gICAgYXJnLT5zdGFydCA9IHN0YXJ0Owot ICAgIGFyZy0+ZW5kID0gZW5kOworICAgIG9wLm9wID0gWEVOX0RNT1BfbWFwX2lvX3JhbmdlX3Rv X2lvcmVxX3NlcnZlcjsKKyAgICBkYXRhID0gJm9wLnUubWFwX2lvX3JhbmdlX3RvX2lvcmVxX3Nl cnZlcjsKIAotICAgIHJjID0geGVuY2FsbDIoeGNoLT54Y2FsbCwgX19IWVBFUlZJU09SX2h2bV9v cCwKLSAgICAgICAgICAgICAgICAgIEhWTU9QX21hcF9pb19yYW5nZV90b19pb3JlcV9zZXJ2ZXIs Ci0gICAgICAgICAgICAgICAgICBIWVBFUkNBTExfQlVGRkVSX0FTX0FSRyhhcmcpKTsKKyAgICBk YXRhLT5pZCA9IGlkOworICAgIGRhdGEtPnR5cGUgPSBpc19tbWlvID8gWEVOX0RNT1BfSU9fUkFO R0VfTUVNT1JZIDogWEVOX0RNT1BfSU9fUkFOR0VfUE9SVDsKKyAgICBkYXRhLT5zdGFydCA9IHN0 YXJ0OworICAgIGRhdGEtPmVuZCA9IGVuZDsKIAotICAgIHhjX2h5cGVyY2FsbF9idWZmZXJfZnJl ZSh4Y2gsIGFyZyk7Ci0gICAgcmV0dXJuIHJjOworICAgIHJldHVybiBkb19kbV9vcCh4Y2gsIGRv bWlkLCAxLCAmb3AsIHNpemVvZihvcCkpOwogfQogCiBpbnQgeGNfaHZtX3VubWFwX2lvX3Jhbmdl X2Zyb21faW9yZXFfc2VydmVyKHhjX2ludGVyZmFjZSAqeGNoLCBkb21pZF90IGRvbWlkLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb3NlcnZpZF90IGlkLCBp bnQgaXNfbW1pbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dWludDY0X3Qgc3RhcnQsIHVpbnQ2NF90IGVuZCkKIHsKLSAgICBERUNMQVJFX0hZUEVSQ0FMTF9C VUZGRVIoeGVuX2h2bV9pb19yYW5nZV90LCBhcmcpOwotICAgIGludCByYzsKKyAgICBzdHJ1Y3Qg eGVuX2RtX29wIG9wOworICAgIHN0cnVjdCB4ZW5fZG1fb3BfaW9yZXFfc2VydmVyX3JhbmdlICpk YXRhOwogCi0gICAgYXJnID0geGNfaHlwZXJjYWxsX2J1ZmZlcl9hbGxvYyh4Y2gsIGFyZywgc2l6 ZW9mKCphcmcpKTsKLSAgICBpZiAoIGFyZyA9PSBOVUxMICkKLSAgICAgICAgcmV0dXJuIC0xOwor ICAgIG1lbXNldCgmb3AsIDAsIHNpemVvZihvcCkpOwogCi0gICAgYXJnLT5kb21pZCA9IGRvbWlk OwotICAgIGFyZy0+aWQgPSBpZDsKLSAgICBhcmctPnR5cGUgPSBpc19tbWlvID8gSFZNT1BfSU9f UkFOR0VfTUVNT1JZIDogSFZNT1BfSU9fUkFOR0VfUE9SVDsKLSAgICBhcmctPnN0YXJ0ID0gc3Rh cnQ7Ci0gICAgYXJnLT5lbmQgPSBlbmQ7CisgICAgb3Aub3AgPSBYRU5fRE1PUF91bm1hcF9pb19y YW5nZV9mcm9tX2lvcmVxX3NlcnZlcjsKKyAgICBkYXRhID0gJm9wLnUudW5tYXBfaW9fcmFuZ2Vf ZnJvbV9pb3JlcV9zZXJ2ZXI7CiAKLSAgICByYyA9IHhlbmNhbGwyKHhjaC0+eGNhbGwsIF9fSFlQ RVJWSVNPUl9odm1fb3AsCi0gICAgICAgICAgICAgICAgICBIVk1PUF91bm1hcF9pb19yYW5nZV9m cm9tX2lvcmVxX3NlcnZlciwKLSAgICAgICAgICAgICAgICAgIEhZUEVSQ0FMTF9CVUZGRVJfQVNf QVJHKGFyZykpOworICAgIGRhdGEtPmlkID0gaWQ7CisgICAgZGF0YS0+dHlwZSA9IGlzX21taW8g PyBYRU5fRE1PUF9JT19SQU5HRV9NRU1PUlkgOiBYRU5fRE1PUF9JT19SQU5HRV9QT1JUOworICAg IGRhdGEtPnN0YXJ0ID0gc3RhcnQ7CisgICAgZGF0YS0+ZW5kID0gZW5kOwogCi0gICAgeGNfaHlw ZXJjYWxsX2J1ZmZlcl9mcmVlKHhjaCwgYXJnKTsKLSAgICByZXR1cm4gcmM7CisgICAgcmV0dXJu IGRvX2RtX29wKHhjaCwgZG9taWQsIDEsICZvcCwgc2l6ZW9mKG9wKSk7CiB9CiAKIGludCB4Y19o dm1fbWFwX3BjaWRldl90b19pb3JlcV9zZXJ2ZXIoeGNfaW50ZXJmYWNlICp4Y2gsIGRvbWlkX3Qg ZG9taWQsCkBAIC0xNTI5LDM3ICsxNTE2LDMyIEBAIGludCB4Y19odm1fbWFwX3BjaWRldl90b19p b3JlcV9zZXJ2ZXIoeGNfaW50ZXJmYWNlICp4Y2gsIGRvbWlkX3QgZG9taWQsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgYnVzLCB1aW50OF90IGRldmljZSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBmdW5jdGlvbikK IHsKLSAgICBERUNMQVJFX0hZUEVSQ0FMTF9CVUZGRVIoeGVuX2h2bV9pb19yYW5nZV90LCBhcmcp OwotICAgIGludCByYzsKKyAgICBzdHJ1Y3QgeGVuX2RtX29wIG9wOworICAgIHN0cnVjdCB4ZW5f ZG1fb3BfaW9yZXFfc2VydmVyX3JhbmdlICpkYXRhOwogCiAgICAgaWYgKGRldmljZSA+IDB4MWYg fHwgZnVuY3Rpb24gPiAweDcpIHsKICAgICAgICAgZXJybm8gPSBFSU5WQUw7CiAgICAgICAgIHJl dHVybiAtMTsKICAgICB9CiAKLSAgICBhcmcgPSB4Y19oeXBlcmNhbGxfYnVmZmVyX2FsbG9jKHhj aCwgYXJnLCBzaXplb2YoKmFyZykpOwotICAgIGlmICggYXJnID09IE5VTEwgKQotICAgICAgICBy ZXR1cm4gLTE7CisgICAgbWVtc2V0KCZvcCwgMCwgc2l6ZW9mKG9wKSk7CiAKLSAgICBhcmctPmRv bWlkID0gZG9taWQ7Ci0gICAgYXJnLT5pZCA9IGlkOwotICAgIGFyZy0+dHlwZSA9IEhWTU9QX0lP X1JBTkdFX1BDSTsKKyAgICBvcC5vcCA9IFhFTl9ETU9QX21hcF9pb19yYW5nZV90b19pb3JlcV9z ZXJ2ZXI7CisgICAgZGF0YSA9ICZvcC51Lm1hcF9pb19yYW5nZV90b19pb3JlcV9zZXJ2ZXI7CisK KyAgICBkYXRhLT5pZCA9IGlkOworICAgIGRhdGEtPnR5cGUgPSBYRU5fRE1PUF9JT19SQU5HRV9Q Q0k7CiAKICAgICAvKgogICAgICAqIFRoZSB1bmRlcmx5aW5nIGh5cGVyY2FsbCB3aWxsIGRlYWwg d2l0aCByYW5nZXMgb2YgUENJIFNCREYKICAgICAgKiBidXQsIGZvciBzaW1wbGljaXR5LCB0aGUg QVBJIG9ubHkgdXNlcyBzaW5nbGV0b25zLgogICAgICAqLwotICAgIGFyZy0+c3RhcnQgPSBhcmct PmVuZCA9IEhWTU9QX1BDSV9TQkRGKCh1aW50NjRfdClzZWdtZW50LAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50NjRfdClidXMsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQ2NF90KWRldmljZSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWludDY0X3QpZnVuY3Rpb24pOwot Ci0gICAgcmMgPSB4ZW5jYWxsMih4Y2gtPnhjYWxsLCBfX0hZUEVSVklTT1JfaHZtX29wLAotICAg ICAgICAgICAgICAgICAgSFZNT1BfbWFwX2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZlciwKLSAgICAg ICAgICAgICAgICAgIEhZUEVSQ0FMTF9CVUZGRVJfQVNfQVJHKGFyZykpOworICAgIGRhdGEtPnN0 YXJ0ID0gZGF0YS0+ZW5kID0gWEVOX0RNT1BfUENJX1NCREYoKHVpbnQ2NF90KXNlZ21lbnQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWludDY0X3Qp YnVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVp bnQ2NF90KWRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICh1aW50NjRfdClmdW5jdGlvbik7CiAKLSAgICB4Y19oeXBlcmNhbGxfYnVmZmVyX2Zy ZWUoeGNoLCBhcmcpOwotICAgIHJldHVybiByYzsKKyAgICByZXR1cm4gZG9fZG1fb3AoeGNoLCBk b21pZCwgMSwgJm9wLCBzaXplb2Yob3ApKTsKIH0KIAogaW50IHhjX2h2bV91bm1hcF9wY2lkZXZf ZnJvbV9pb3JlcV9zZXJ2ZXIoeGNfaW50ZXJmYWNlICp4Y2gsIGRvbWlkX3QgZG9taWQsCkBAIC0x NTY3LDU0ICsxNTQ5LDQ5IEBAIGludCB4Y19odm1fdW5tYXBfcGNpZGV2X2Zyb21faW9yZXFfc2Vy dmVyKHhjX2ludGVyZmFjZSAqeGNoLCBkb21pZF90IGRvbWlkLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBidXMsIHVpbnQ4X3QgZGV2aWNlLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBmdW5jdGlvbikK IHsKLSAgICBERUNMQVJFX0hZUEVSQ0FMTF9CVUZGRVIoeGVuX2h2bV9pb19yYW5nZV90LCBhcmcp OwotICAgIGludCByYzsKKyAgICBzdHJ1Y3QgeGVuX2RtX29wIG9wOworICAgIHN0cnVjdCB4ZW5f ZG1fb3BfaW9yZXFfc2VydmVyX3JhbmdlICpkYXRhOwogCiAgICAgaWYgKGRldmljZSA+IDB4MWYg fHwgZnVuY3Rpb24gPiAweDcpIHsKICAgICAgICAgZXJybm8gPSBFSU5WQUw7CiAgICAgICAgIHJl dHVybiAtMTsKICAgICB9CiAKLSAgICBhcmcgPSB4Y19oeXBlcmNhbGxfYnVmZmVyX2FsbG9jKHhj aCwgYXJnLCBzaXplb2YoKmFyZykpOwotICAgIGlmICggYXJnID09IE5VTEwgKQotICAgICAgICBy ZXR1cm4gLTE7CisgICAgbWVtc2V0KCZvcCwgMCwgc2l6ZW9mKG9wKSk7CiAKLSAgICBhcmctPmRv bWlkID0gZG9taWQ7Ci0gICAgYXJnLT5pZCA9IGlkOwotICAgIGFyZy0+dHlwZSA9IEhWTU9QX0lP X1JBTkdFX1BDSTsKLSAgICBhcmctPnN0YXJ0ID0gYXJnLT5lbmQgPSBIVk1PUF9QQ0lfU0JERigo dWludDY0X3Qpc2VnbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAodWludDY0X3QpYnVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICh1aW50NjRfdClkZXZpY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHVpbnQ2NF90KWZ1bmN0aW9uKTsKLQotICAgIHJjID0geGVuY2FsbDIoeGNo LT54Y2FsbCwgX19IWVBFUlZJU09SX2h2bV9vcCwKLSAgICAgICAgICAgICAgICAgIEhWTU9QX3Vu bWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVyLAotICAgICAgICAgICAgICAgICAgSFlQRVJD QUxMX0JVRkZFUl9BU19BUkcoYXJnKSk7CisgICAgb3Aub3AgPSBYRU5fRE1PUF91bm1hcF9pb19y YW5nZV9mcm9tX2lvcmVxX3NlcnZlcjsKKyAgICBkYXRhID0gJm9wLnUudW5tYXBfaW9fcmFuZ2Vf ZnJvbV9pb3JlcV9zZXJ2ZXI7CiAKLSAgICB4Y19oeXBlcmNhbGxfYnVmZmVyX2ZyZWUoeGNoLCBh cmcpOwotICAgIHJldHVybiByYzsKKyAgICBkYXRhLT5pZCA9IGlkOworICAgIGRhdGEtPnR5cGUg PSBYRU5fRE1PUF9JT19SQU5HRV9QQ0k7CisKKyAgICAvKgorICAgICAqIFRoZSB1bmRlcmx5aW5n IGh5cGVyY2FsbCB3aWxsIGRlYWwgd2l0aCByYW5nZXMgb2YgUENJIFNCREYKKyAgICAgKiBidXQs IGZvciBzaW1wbGljaXR5LCB0aGUgQVBJIG9ubHkgdXNlcyBzaW5nbGV0b25zLgorICAgICAqLwor ICAgIGRhdGEtPnN0YXJ0ID0gZGF0YS0+ZW5kID0gWEVOX0RNT1BfUENJX1NCREYoKHVpbnQ2NF90 KXNlZ21lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAodWludDY0X3QpYnVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHVpbnQ2NF90KWRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICh1aW50NjRfdClmdW5jdGlvbik7CisKKyAgICByZXR1cm4gZG9f ZG1fb3AoeGNoLCBkb21pZCwgMSwgJm9wLCBzaXplb2Yob3ApKTsKIH0KIAogaW50IHhjX2h2bV9k ZXN0cm95X2lvcmVxX3NlcnZlcih4Y19pbnRlcmZhY2UgKnhjaCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZG9taWRfdCBkb21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW9zZXJ2aWRfdCBpZCkKIHsKLSAgICBERUNMQVJFX0hZUEVSQ0FMTF9CVUZGRVIoeGVu X2h2bV9kZXN0cm95X2lvcmVxX3NlcnZlcl90LCBhcmcpOwotICAgIGludCByYzsKKyAgICBzdHJ1 Y3QgeGVuX2RtX29wIG9wOworICAgIHN0cnVjdCB4ZW5fZG1fb3BfZGVzdHJveV9pb3JlcV9zZXJ2 ZXIgKmRhdGE7CiAKLSAgICBhcmcgPSB4Y19oeXBlcmNhbGxfYnVmZmVyX2FsbG9jKHhjaCwgYXJn LCBzaXplb2YoKmFyZykpOwotICAgIGlmICggYXJnID09IE5VTEwgKQotICAgICAgICByZXR1cm4g LTE7CisgICAgbWVtc2V0KCZvcCwgMCwgc2l6ZW9mKG9wKSk7CiAKLSAgICBhcmctPmRvbWlkID0g ZG9taWQ7Ci0gICAgYXJnLT5pZCA9IGlkOworICAgIG9wLm9wID0gWEVOX0RNT1BfZGVzdHJveV9p b3JlcV9zZXJ2ZXI7CisgICAgZGF0YSA9ICZvcC51LmRlc3Ryb3lfaW9yZXFfc2VydmVyOwogCi0g ICAgcmMgPSB4ZW5jYWxsMih4Y2gtPnhjYWxsLCBfX0hZUEVSVklTT1JfaHZtX29wLAotICAgICAg ICAgICAgICAgICAgSFZNT1BfZGVzdHJveV9pb3JlcV9zZXJ2ZXIsCi0gICAgICAgICAgICAgICAg ICBIWVBFUkNBTExfQlVGRkVSX0FTX0FSRyhhcmcpKTsKKyAgICBkYXRhLT5pZCA9IGlkOwogCi0g ICAgeGNfaHlwZXJjYWxsX2J1ZmZlcl9mcmVlKHhjaCwgYXJnKTsKLSAgICByZXR1cm4gcmM7Cisg ICAgcmV0dXJuIGRvX2RtX29wKHhjaCwgZG9taWQsIDEsICZvcCwgc2l6ZW9mKG9wKSk7CiB9CiAK IGludCB4Y19odm1fc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZSh4Y19pbnRlcmZhY2UgKnhjaCwKQEAg LTE2MjIsMjMgKzE1OTksMTggQEAgaW50IHhjX2h2bV9zZXRfaW9yZXFfc2VydmVyX3N0YXRlKHhj X2ludGVyZmFjZSAqeGNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvc2Vy dmlkX3QgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGVuYWJsZWQp CiB7Ci0gICAgREVDTEFSRV9IWVBFUkNBTExfQlVGRkVSKHhlbl9odm1fc2V0X2lvcmVxX3NlcnZl cl9zdGF0ZV90LCBhcmcpOwotICAgIGludCByYzsKKyAgICBzdHJ1Y3QgeGVuX2RtX29wIG9wOwor ICAgIHN0cnVjdCB4ZW5fZG1fb3Bfc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZSAqZGF0YTsKIAotICAg IGFyZyA9IHhjX2h5cGVyY2FsbF9idWZmZXJfYWxsb2MoeGNoLCBhcmcsIHNpemVvZigqYXJnKSk7 Ci0gICAgaWYgKCBhcmcgPT0gTlVMTCApCi0gICAgICAgIHJldHVybiAtMTsKKyAgICBtZW1zZXQo Jm9wLCAwLCBzaXplb2Yob3ApKTsKIAotICAgIGFyZy0+ZG9taWQgPSBkb21pZDsKLSAgICBhcmct PmlkID0gaWQ7Ci0gICAgYXJnLT5lbmFibGVkID0gISFlbmFibGVkOworICAgIG9wLm9wID0gWEVO X0RNT1Bfc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZTsKKyAgICBkYXRhID0gJm9wLnUuc2V0X2lvcmVx X3NlcnZlcl9zdGF0ZTsKIAotICAgIHJjID0geGVuY2FsbDIoeGNoLT54Y2FsbCwgX19IWVBFUlZJ U09SX2h2bV9vcCwKLSAgICAgICAgICAgICAgICAgIEhWTU9QX3NldF9pb3JlcV9zZXJ2ZXJfc3Rh dGUsCi0gICAgICAgICAgICAgICAgICBIWVBFUkNBTExfQlVGRkVSX0FTX0FSRyhhcmcpKTsKKyAg ICBkYXRhLT5pZCA9IGlkOworICAgIGRhdGEtPmVuYWJsZWQgPSAhIWVuYWJsZWQ7CiAKLSAgICB4 Y19oeXBlcmNhbGxfYnVmZmVyX2ZyZWUoeGNoLCBhcmcpOwotICAgIHJldHVybiByYzsKKyAgICBy ZXR1cm4gZG9fZG1fb3AoeGNoLCBkb21pZCwgMSwgJm9wLCBzaXplb2Yob3ApKTsKIH0KIAogaW50 IHhjX2RvbWFpbl9zZXRkZWJ1Z2dpbmcoeGNfaW50ZXJmYWNlICp4Y2gsCmRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvaHZtL2RtLmMgYi94ZW4vYXJjaC94ODYvaHZtL2RtLmMKaW5kZXggNzM4Zjhk MS4uNzJjYjMzYSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9kbS5jCisrKyBiL3hlbi9h cmNoL3g4Ni9odm0vZG0uYwpAQCAtNjgsOCArNjgsMTAxIEBAIHN0YXRpYyBpbnQgZG1fb3AoZG9t aWRfdCBkb21pZCwKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQogCisgICAgcmMgPSAtRUlOVkFM OworICAgIGlmICggb3AucGFkICkKKyAgICAgICAgZ290byBvdXQ7CisKICAgICBzd2l0Y2ggKCBv cC5vcCApCiAgICAgeworICAgIGNhc2UgWEVOX0RNT1BfY3JlYXRlX2lvcmVxX3NlcnZlcjoKKyAg ICB7CisgICAgICAgIHN0cnVjdCBkb21haW4gKmN1cnJfZCA9IGN1cnJlbnQtPmRvbWFpbjsKKyAg ICAgICAgc3RydWN0IHhlbl9kbV9vcF9jcmVhdGVfaW9yZXFfc2VydmVyICpkYXRhID0KKyAgICAg ICAgICAgICZvcC51LmNyZWF0ZV9pb3JlcV9zZXJ2ZXI7CisKKyAgICAgICAgY29uc3Rfb3AgPSBm YWxzZTsKKworICAgICAgICByYyA9IC1FSU5WQUw7CisgICAgICAgIGlmICggZGF0YS0+cGFkWzBd IHx8IGRhdGEtPnBhZFsxXSB8fCBkYXRhLT5wYWRbMl0gKQorICAgICAgICAgICAgYnJlYWs7CisK KyAgICAgICAgcmMgPSBodm1fY3JlYXRlX2lvcmVxX3NlcnZlcihkLCBjdXJyX2QtPmRvbWFpbl9p ZCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5oYW5kbGVf YnVmaW9yZXEsICZkYXRhLT5pZCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2Ug WEVOX0RNT1BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZvOgorICAgIHsKKyAgICAgICAgc3RydWN0IHhl bl9kbV9vcF9nZXRfaW9yZXFfc2VydmVyX2luZm8gKmRhdGEgPQorICAgICAgICAgICAgJm9wLnUu Z2V0X2lvcmVxX3NlcnZlcl9pbmZvOworCisgICAgICAgIGNvbnN0X29wID0gZmFsc2U7CisKKyAg ICAgICAgcmMgPSAtRUlOVkFMOworICAgICAgICBpZiAoIGRhdGEtPnBhZCApCisgICAgICAgICAg ICBicmVhazsKKworICAgICAgICByYyA9IGh2bV9nZXRfaW9yZXFfc2VydmVyX2luZm8oZCwgZGF0 YS0+aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YS0+aW9y ZXFfcGZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGEtPmJ1 ZmlvcmVxX3BmbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRh LT5idWZpb3JlcV9wb3J0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBYRU5f RE1PUF9tYXBfaW9fcmFuZ2VfdG9faW9yZXFfc2VydmVyOgorICAgIHsKKyAgICAgICAgY29uc3Qg c3RydWN0IHhlbl9kbV9vcF9pb3JlcV9zZXJ2ZXJfcmFuZ2UgKmRhdGEgPQorICAgICAgICAgICAg Jm9wLnUubWFwX2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZlcjsKKworICAgICAgICByYyA9IC1FSU5W QUw7CisgICAgICAgIGlmICggZGF0YS0+cGFkICkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg ICAgIHJjID0gaHZtX21hcF9pb19yYW5nZV90b19pb3JlcV9zZXJ2ZXIoZCwgZGF0YS0+aWQsIGRh dGEtPnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGF0YS0+c3RhcnQsIGRhdGEtPmVuZCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNh c2UgWEVOX0RNT1BfdW5tYXBfaW9fcmFuZ2VfZnJvbV9pb3JlcV9zZXJ2ZXI6CisgICAgeworICAg ICAgICBjb25zdCBzdHJ1Y3QgeGVuX2RtX29wX2lvcmVxX3NlcnZlcl9yYW5nZSAqZGF0YSA9Cisg ICAgICAgICAgICAmb3AudS51bm1hcF9pb19yYW5nZV9mcm9tX2lvcmVxX3NlcnZlcjsKKworICAg ICAgICByYyA9IC1FSU5WQUw7CisgICAgICAgIGlmICggZGF0YS0+cGFkICkKKyAgICAgICAgICAg IGJyZWFrOworCisgICAgICAgIHJjID0gaHZtX3VubWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2Vy dmVyKGQsIGRhdGEtPmlkLCBkYXRhLT50eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zdGFydCwgZGF0YS0+ZW5kKTsKKyAgICAgICAg YnJlYWs7CisgICAgfQorCisgICAgY2FzZSBYRU5fRE1PUF9zZXRfaW9yZXFfc2VydmVyX3N0YXRl OgorICAgIHsKKyAgICAgICAgY29uc3Qgc3RydWN0IHhlbl9kbV9vcF9zZXRfaW9yZXFfc2VydmVy X3N0YXRlICpkYXRhID0KKyAgICAgICAgICAgICZvcC51LnNldF9pb3JlcV9zZXJ2ZXJfc3RhdGU7 CisKKyAgICAgICAgcmMgPSAtRUlOVkFMOworICAgICAgICBpZiAoIGRhdGEtPnBhZCApCisgICAg ICAgICAgICBicmVhazsKKworICAgICAgICByYyA9IGh2bV9zZXRfaW9yZXFfc2VydmVyX3N0YXRl KGQsIGRhdGEtPmlkLCAhIWRhdGEtPmVuYWJsZWQpOworICAgICAgICBicmVhazsKKyAgICB9CisK KyAgICBjYXNlIFhFTl9ETU9QX2Rlc3Ryb3lfaW9yZXFfc2VydmVyOgorICAgIHsKKyAgICAgICAg Y29uc3Qgc3RydWN0IHhlbl9kbV9vcF9kZXN0cm95X2lvcmVxX3NlcnZlciAqZGF0YSA9CisgICAg ICAgICAgICAmb3AudS5kZXN0cm95X2lvcmVxX3NlcnZlcjsKKworICAgICAgICByYyA9IC1FSU5W QUw7CisgICAgICAgIGlmICggZGF0YS0+cGFkICkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg ICAgIHJjID0gaHZtX2Rlc3Ryb3lfaW9yZXFfc2VydmVyKGQsIGRhdGEtPmlkKTsKKyAgICAgICAg YnJlYWs7CisgICAgfQorCiAgICAgZGVmYXVsdDoKICAgICAgICAgcmMgPSAtRU9QTk9UU1VQUDsK ICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jIGIveGVu L2FyY2gveDg2L2h2bS9odm0uYwppbmRleCBjYjUwMWU1Li5mZDBlMThhIDEwMDY0NAotLS0gYS94 ZW4vYXJjaC94ODYvaHZtL2h2bS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKQEAgLTQz NzksMTk1ICs0Mzc5LDYgQEAgc3RhdGljIGludCBodm1vcF9mbHVzaF90bGJfYWxsKHZvaWQpCiAg ICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgaHZtb3BfY3JlYXRlX2lvcmVxX3NlcnZlcigK LSAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9odm1fY3JlYXRlX2lvcmVxX3NlcnZlcl90 KSB1b3ApCi17Ci0gICAgc3RydWN0IGRvbWFpbiAqY3Vycl9kID0gY3VycmVudC0+ZG9tYWluOwot ICAgIHhlbl9odm1fY3JlYXRlX2lvcmVxX3NlcnZlcl90IG9wOwotICAgIHN0cnVjdCBkb21haW4g KmQ7Ci0gICAgaW50IHJjOwotCi0gICAgaWYgKCBjb3B5X2Zyb21fZ3Vlc3QoJm9wLCB1b3AsIDEp ICkKLSAgICAgICAgcmV0dXJuIC1FRkFVTFQ7Ci0KLSAgICByYyA9IHJjdV9sb2NrX3JlbW90ZV9k b21haW5fYnlfaWQob3AuZG9taWQsICZkKTsKLSAgICBpZiAoIHJjICE9IDAgKQotICAgICAgICBy ZXR1cm4gcmM7Ci0KLSAgICByYyA9IC1FSU5WQUw7Ci0gICAgaWYgKCAhaXNfaHZtX2RvbWFpbihk KSApCi0gICAgICAgIGdvdG8gb3V0OwotCi0gICAgcmMgPSB4c21faHZtX2lvcmVxX3NlcnZlcihY U01fRE1fUFJJViwgZCwgSFZNT1BfY3JlYXRlX2lvcmVxX3NlcnZlcik7Ci0gICAgaWYgKCByYyAh PSAwICkKLSAgICAgICAgZ290byBvdXQ7Ci0KLSAgICByYyA9IGh2bV9jcmVhdGVfaW9yZXFfc2Vy dmVyKGQsIGN1cnJfZC0+ZG9tYWluX2lkLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb3AuaGFuZGxlX2J1ZmlvcmVxLCAmb3AuaWQpOwotICAgIGlmICggcmMgIT0gMCApCi0g ICAgICAgIGdvdG8gb3V0OwotCi0gICAgcmMgPSBjb3B5X3RvX2d1ZXN0KHVvcCwgJm9wLCAxKSA/ IC1FRkFVTFQgOiAwOwotICAgIAotIG91dDoKLSAgICByY3VfdW5sb2NrX2RvbWFpbihkKTsKLSAg ICByZXR1cm4gcmM7Ci19Ci0KLXN0YXRpYyBpbnQgaHZtb3BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZv KAotICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2h2bV9nZXRfaW9yZXFfc2VydmVyX2lu Zm9fdCkgdW9wKQotewotICAgIHhlbl9odm1fZ2V0X2lvcmVxX3NlcnZlcl9pbmZvX3Qgb3A7Ci0g ICAgc3RydWN0IGRvbWFpbiAqZDsKLSAgICBpbnQgcmM7Ci0KLSAgICBpZiAoIGNvcHlfZnJvbV9n dWVzdCgmb3AsIHVvcCwgMSkgKQotICAgICAgICByZXR1cm4gLUVGQVVMVDsKLQotICAgIHJjID0g cmN1X2xvY2tfcmVtb3RlX2RvbWFpbl9ieV9pZChvcC5kb21pZCwgJmQpOwotICAgIGlmICggcmMg IT0gMCApCi0gICAgICAgIHJldHVybiByYzsKLQotICAgIHJjID0gLUVJTlZBTDsKLSAgICBpZiAo ICFpc19odm1fZG9tYWluKGQpICkKLSAgICAgICAgZ290byBvdXQ7Ci0KLSAgICByYyA9IHhzbV9o dm1faW9yZXFfc2VydmVyKFhTTV9ETV9QUklWLCBkLCBIVk1PUF9nZXRfaW9yZXFfc2VydmVyX2lu Zm8pOwotICAgIGlmICggcmMgIT0gMCApCi0gICAgICAgIGdvdG8gb3V0OwotCi0gICAgcmMgPSBo dm1fZ2V0X2lvcmVxX3NlcnZlcl9pbmZvKGQsIG9wLmlkLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmb3AuaW9yZXFfcGZuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmb3AuYnVmaW9yZXFfcGZuLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJm9wLmJ1ZmlvcmVxX3BvcnQpOwotICAgIGlmICggcmMgIT0gMCApCi0gICAgICAgIGdv dG8gb3V0OwotCi0gICAgcmMgPSBjb3B5X3RvX2d1ZXN0KHVvcCwgJm9wLCAxKSA/IC1FRkFVTFQg OiAwOwotICAgIAotIG91dDoKLSAgICByY3VfdW5sb2NrX2RvbWFpbihkKTsKLSAgICByZXR1cm4g cmM7Ci19Ci0KLXN0YXRpYyBpbnQgaHZtb3BfbWFwX2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZlcigK LSAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9odm1faW9fcmFuZ2VfdCkgdW9wKQotewot ICAgIHhlbl9odm1faW9fcmFuZ2VfdCBvcDsKLSAgICBzdHJ1Y3QgZG9tYWluICpkOwotICAgIGlu dCByYzsKLQotICAgIGlmICggY29weV9mcm9tX2d1ZXN0KCZvcCwgdW9wLCAxKSApCi0gICAgICAg IHJldHVybiAtRUZBVUxUOwotCi0gICAgcmMgPSByY3VfbG9ja19yZW1vdGVfZG9tYWluX2J5X2lk KG9wLmRvbWlkLCAmZCk7Ci0gICAgaWYgKCByYyAhPSAwICkKLSAgICAgICAgcmV0dXJuIHJjOwot Ci0gICAgcmMgPSAtRUlOVkFMOwotICAgIGlmICggIWlzX2h2bV9kb21haW4oZCkgKQotICAgICAg ICBnb3RvIG91dDsKLQotICAgIHJjID0geHNtX2h2bV9pb3JlcV9zZXJ2ZXIoWFNNX0RNX1BSSVYs IGQsIEhWTU9QX21hcF9pb19yYW5nZV90b19pb3JlcV9zZXJ2ZXIpOwotICAgIGlmICggcmMgIT0g MCApCi0gICAgICAgIGdvdG8gb3V0OwotCi0gICAgcmMgPSBodm1fbWFwX2lvX3JhbmdlX3RvX2lv cmVxX3NlcnZlcihkLCBvcC5pZCwgb3AudHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG9wLnN0YXJ0LCBvcC5lbmQpOwotCi0gb3V0OgotICAgIHJjdV91bmxv Y2tfZG9tYWluKGQpOwotICAgIHJldHVybiByYzsKLX0KLQotc3RhdGljIGludCBodm1vcF91bm1h cF9pb19yYW5nZV9mcm9tX2lvcmVxX3NlcnZlcigKLSAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFN KHhlbl9odm1faW9fcmFuZ2VfdCkgdW9wKQotewotICAgIHhlbl9odm1faW9fcmFuZ2VfdCBvcDsK LSAgICBzdHJ1Y3QgZG9tYWluICpkOwotICAgIGludCByYzsKLQotICAgIGlmICggY29weV9mcm9t X2d1ZXN0KCZvcCwgdW9wLCAxKSApCi0gICAgICAgIHJldHVybiAtRUZBVUxUOwotCi0gICAgcmMg PSByY3VfbG9ja19yZW1vdGVfZG9tYWluX2J5X2lkKG9wLmRvbWlkLCAmZCk7Ci0gICAgaWYgKCBy YyAhPSAwICkKLSAgICAgICAgcmV0dXJuIHJjOwotCi0gICAgcmMgPSAtRUlOVkFMOwotICAgIGlm ICggIWlzX2h2bV9kb21haW4oZCkgKQotICAgICAgICBnb3RvIG91dDsKLQotICAgIHJjID0geHNt X2h2bV9pb3JlcV9zZXJ2ZXIoWFNNX0RNX1BSSVYsIGQsIEhWTU9QX3VubWFwX2lvX3JhbmdlX2Zy b21faW9yZXFfc2VydmVyKTsKLSAgICBpZiAoIHJjICE9IDAgKQotICAgICAgICBnb3RvIG91dDsK LQotICAgIHJjID0gaHZtX3VubWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVyKGQsIG9wLmlk LCBvcC50eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG9wLnN0YXJ0LCBvcC5lbmQpOwotICAgIAotIG91dDoKLSAgICByY3VfdW5sb2NrX2RvbWFpbihk KTsKLSAgICByZXR1cm4gcmM7Ci19Ci0KLXN0YXRpYyBpbnQgaHZtb3Bfc2V0X2lvcmVxX3NlcnZl cl9zdGF0ZSgKLSAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9odm1fc2V0X2lvcmVxX3Nl cnZlcl9zdGF0ZV90KSB1b3ApCi17Ci0gICAgeGVuX2h2bV9zZXRfaW9yZXFfc2VydmVyX3N0YXRl X3Qgb3A7Ci0gICAgc3RydWN0IGRvbWFpbiAqZDsKLSAgICBpbnQgcmM7Ci0KLSAgICBpZiAoIGNv cHlfZnJvbV9ndWVzdCgmb3AsIHVvcCwgMSkgKQotICAgICAgICByZXR1cm4gLUVGQVVMVDsKLQot ICAgIHJjID0gcmN1X2xvY2tfcmVtb3RlX2RvbWFpbl9ieV9pZChvcC5kb21pZCwgJmQpOwotICAg IGlmICggcmMgIT0gMCApCi0gICAgICAgIHJldHVybiByYzsKLQotICAgIHJjID0gLUVJTlZBTDsK LSAgICBpZiAoICFpc19odm1fZG9tYWluKGQpICkKLSAgICAgICAgZ290byBvdXQ7Ci0KLSAgICBy YyA9IHhzbV9odm1faW9yZXFfc2VydmVyKFhTTV9ETV9QUklWLCBkLCBIVk1PUF9zZXRfaW9yZXFf c2VydmVyX3N0YXRlKTsKLSAgICBpZiAoIHJjICE9IDAgKQotICAgICAgICBnb3RvIG91dDsKLQot ICAgIHJjID0gaHZtX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGUoZCwgb3AuaWQsICEhb3AuZW5hYmxl ZCk7Ci0KLSBvdXQ6Ci0gICAgcmN1X3VubG9ja19kb21haW4oZCk7Ci0gICAgcmV0dXJuIHJjOwot fQotCi1zdGF0aWMgaW50IGh2bW9wX2Rlc3Ryb3lfaW9yZXFfc2VydmVyKAotICAgIFhFTl9HVUVT VF9IQU5ETEVfUEFSQU0oeGVuX2h2bV9kZXN0cm95X2lvcmVxX3NlcnZlcl90KSB1b3ApCi17Ci0g ICAgeGVuX2h2bV9kZXN0cm95X2lvcmVxX3NlcnZlcl90IG9wOwotICAgIHN0cnVjdCBkb21haW4g KmQ7Ci0gICAgaW50IHJjOwotCi0gICAgaWYgKCBjb3B5X2Zyb21fZ3Vlc3QoJm9wLCB1b3AsIDEp ICkKLSAgICAgICAgcmV0dXJuIC1FRkFVTFQ7Ci0KLSAgICByYyA9IHJjdV9sb2NrX3JlbW90ZV9k b21haW5fYnlfaWQob3AuZG9taWQsICZkKTsKLSAgICBpZiAoIHJjICE9IDAgKQotICAgICAgICBy ZXR1cm4gcmM7Ci0KLSAgICByYyA9IC1FSU5WQUw7Ci0gICAgaWYgKCAhaXNfaHZtX2RvbWFpbihk KSApCi0gICAgICAgIGdvdG8gb3V0OwotCi0gICAgcmMgPSB4c21faHZtX2lvcmVxX3NlcnZlcihY U01fRE1fUFJJViwgZCwgSFZNT1BfZGVzdHJveV9pb3JlcV9zZXJ2ZXIpOwotICAgIGlmICggcmMg IT0gMCApCi0gICAgICAgIGdvdG8gb3V0OwotCi0gICAgcmMgPSBodm1fZGVzdHJveV9pb3JlcV9z ZXJ2ZXIoZCwgb3AuaWQpOwotCi0gb3V0OgotICAgIHJjdV91bmxvY2tfZG9tYWluKGQpOwotICAg IHJldHVybiByYzsKLX0KLQogc3RhdGljIGludCBodm1vcF9zZXRfZXZ0Y2huX3VwY2FsbF92ZWN0 b3IoCiAgICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5faHZtX2V2dGNobl91cGNhbGxfdmVj dG9yX3QpIHVvcCkKIHsKQEAgLTUyODQsMzYgKzUwOTUsNiBAQCBsb25nIGRvX2h2bV9vcCh1bnNp Z25lZCBsb25nIG9wLCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZykKICAgICBzdGFy dF9pdGVyID0gb3AgJiB+bWFzazsKICAgICBzd2l0Y2ggKCBvcCAmPSBtYXNrICkKICAgICB7Ci0g ICAgY2FzZSBIVk1PUF9jcmVhdGVfaW9yZXFfc2VydmVyOgotICAgICAgICByYyA9IGh2bW9wX2Ny ZWF0ZV9pb3JlcV9zZXJ2ZXIoCi0gICAgICAgICAgICBndWVzdF9oYW5kbGVfY2FzdChhcmcsIHhl bl9odm1fY3JlYXRlX2lvcmVxX3NlcnZlcl90KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIAotICAg IGNhc2UgSFZNT1BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZvOgotICAgICAgICByYyA9IGh2bW9wX2dl dF9pb3JlcV9zZXJ2ZXJfaW5mbygKLSAgICAgICAgICAgIGd1ZXN0X2hhbmRsZV9jYXN0KGFyZywg eGVuX2h2bV9nZXRfaW9yZXFfc2VydmVyX2luZm9fdCkpOwotICAgICAgICBicmVhazsKLSAgICAK LSAgICBjYXNlIEhWTU9QX21hcF9pb19yYW5nZV90b19pb3JlcV9zZXJ2ZXI6Ci0gICAgICAgIHJj ID0gaHZtb3BfbWFwX2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZlcigKLSAgICAgICAgICAgIGd1ZXN0 X2hhbmRsZV9jYXN0KGFyZywgeGVuX2h2bV9pb19yYW5nZV90KSk7Ci0gICAgICAgIGJyZWFrOwot ICAgIAotICAgIGNhc2UgSFZNT1BfdW5tYXBfaW9fcmFuZ2VfZnJvbV9pb3JlcV9zZXJ2ZXI6Ci0g ICAgICAgIHJjID0gaHZtb3BfdW5tYXBfaW9fcmFuZ2VfZnJvbV9pb3JlcV9zZXJ2ZXIoCi0gICAg ICAgICAgICBndWVzdF9oYW5kbGVfY2FzdChhcmcsIHhlbl9odm1faW9fcmFuZ2VfdCkpOwotICAg ICAgICBicmVhazsKLQotICAgIGNhc2UgSFZNT1Bfc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZToKLSAg ICAgICAgcmMgPSBodm1vcF9zZXRfaW9yZXFfc2VydmVyX3N0YXRlKAotICAgICAgICAgICAgZ3Vl c3RfaGFuZGxlX2Nhc3QoYXJnLCB4ZW5faHZtX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGVfdCkpOwot ICAgICAgICBicmVhazsKLSAgICAKLSAgICBjYXNlIEhWTU9QX2Rlc3Ryb3lfaW9yZXFfc2VydmVy OgotICAgICAgICByYyA9IGh2bW9wX2Rlc3Ryb3lfaW9yZXFfc2VydmVyKAotICAgICAgICAgICAg Z3Vlc3RfaGFuZGxlX2Nhc3QoYXJnLCB4ZW5faHZtX2Rlc3Ryb3lfaW9yZXFfc2VydmVyX3QpKTsK LSAgICAgICAgYnJlYWs7Ci0gICAgCiAgICAgY2FzZSBIVk1PUF9zZXRfZXZ0Y2huX3VwY2FsbF92 ZWN0b3I6CiAgICAgICAgIHJjID0gaHZtb3Bfc2V0X2V2dGNobl91cGNhbGxfdmVjdG9yKAogICAg ICAgICAgICAgZ3Vlc3RfaGFuZGxlX2Nhc3QoYXJnLCB4ZW5faHZtX2V2dGNobl91cGNhbGxfdmVj dG9yX3QpKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYyBiL3hlbi9hcmNo L3g4Ni9odm0vaW9yZXEuYwppbmRleCAyODMwZjZjLi41ZDFhOGZhIDEwMDY0NAotLS0gYS94ZW4v YXJjaC94ODYvaHZtL2lvcmVxLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jCkBAIC01 MTQsOSArNTE0LDkgQEAgc3RhdGljIGludCBodm1faW9yZXFfc2VydmVyX2FsbG9jX3Jhbmdlc2V0 cyhzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKICAgICAgICAgY2hhciAqbmFtZTsKIAogICAg ICAgICByYyA9IGFzcHJpbnRmKCZuYW1lLCAiaW9yZXFfc2VydmVyICVkICVzIiwgcy0+aWQsCi0g ICAgICAgICAgICAgICAgICAgICAgKGkgPT0gSFZNT1BfSU9fUkFOR0VfUE9SVCkgPyAicG9ydCIg OgotICAgICAgICAgICAgICAgICAgICAgIChpID09IEhWTU9QX0lPX1JBTkdFX01FTU9SWSkgPyAi bWVtb3J5IiA6Ci0gICAgICAgICAgICAgICAgICAgICAgKGkgPT0gSFZNT1BfSU9fUkFOR0VfUENJ KSA/ICJwY2kiIDoKKyAgICAgICAgICAgICAgICAgICAgICAoaSA9PSBYRU5fRE1PUF9JT19SQU5H RV9QT1JUKSA/ICJwb3J0IiA6CisgICAgICAgICAgICAgICAgICAgICAgKGkgPT0gWEVOX0RNT1Bf SU9fUkFOR0VfTUVNT1JZKSA/ICJtZW1vcnkiIDoKKyAgICAgICAgICAgICAgICAgICAgICAoaSA9 PSBYRU5fRE1PUF9JT19SQU5HRV9QQ0kpID8gInBjaSIgOgogICAgICAgICAgICAgICAgICAgICAg ICIiKTsKICAgICAgICAgaWYgKCByYyApCiAgICAgICAgICAgICBnb3RvIGZhaWw7CkBAIC04MzQs OSArODM0LDkgQEAgaW50IGh2bV9tYXBfaW9fcmFuZ2VfdG9faW9yZXFfc2VydmVyKHN0cnVjdCBk b21haW4gKmQsIGlvc2VydmlkX3QgaWQsCiAKICAgICAgICAgICAgIHN3aXRjaCAoIHR5cGUgKQog ICAgICAgICAgICAgewotICAgICAgICAgICAgY2FzZSBIVk1PUF9JT19SQU5HRV9QT1JUOgotICAg ICAgICAgICAgY2FzZSBIVk1PUF9JT19SQU5HRV9NRU1PUlk6Ci0gICAgICAgICAgICBjYXNlIEhW TU9QX0lPX1JBTkdFX1BDSToKKyAgICAgICAgICAgIGNhc2UgWEVOX0RNT1BfSU9fUkFOR0VfUE9S VDoKKyAgICAgICAgICAgIGNhc2UgWEVOX0RNT1BfSU9fUkFOR0VfTUVNT1JZOgorICAgICAgICAg ICAgY2FzZSBYRU5fRE1PUF9JT19SQU5HRV9QQ0k6CiAgICAgICAgICAgICAgICAgciA9IHMtPnJh bmdlW3R5cGVdOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCkBAIC04ODYsOSArODg2LDkgQEAg aW50IGh2bV91bm1hcF9pb19yYW5nZV9mcm9tX2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpk LCBpb3NlcnZpZF90IGlkLAogCiAgICAgICAgICAgICBzd2l0Y2ggKCB0eXBlICkKICAgICAgICAg ICAgIHsKLSAgICAgICAgICAgIGNhc2UgSFZNT1BfSU9fUkFOR0VfUE9SVDoKLSAgICAgICAgICAg IGNhc2UgSFZNT1BfSU9fUkFOR0VfTUVNT1JZOgotICAgICAgICAgICAgY2FzZSBIVk1PUF9JT19S QU5HRV9QQ0k6CisgICAgICAgICAgICBjYXNlIFhFTl9ETU9QX0lPX1JBTkdFX1BPUlQ6CisgICAg ICAgICAgICBjYXNlIFhFTl9ETU9QX0lPX1JBTkdFX01FTU9SWToKKyAgICAgICAgICAgIGNhc2Ug WEVOX0RNT1BfSU9fUkFOR0VfUENJOgogICAgICAgICAgICAgICAgIHIgPSBzLT5yYW5nZVt0eXBl XTsKICAgICAgICAgICAgICAgICBicmVhazsKIApAQCAtMTEyOSwxMiArMTEyOSwxMiBAQCBzdHJ1 Y3QgaHZtX2lvcmVxX3NlcnZlciAqaHZtX3NlbGVjdF9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFp biAqZCwKIAogICAgICAgICAvKiBQQ0kgY29uZmlnIGRhdGEgY3ljbGUgKi8KIAotICAgICAgICBz YmRmID0gSFZNT1BfUENJX1NCREYoMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBD SV9CVVMoQ0Y4X0JERihjZjgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9T TE9UKENGOF9CREYoY2Y4KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfRlVO QyhDRjhfQkRGKGNmOCkpKTsKKyAgICAgICAgc2JkZiA9IFhFTl9ETU9QX1BDSV9TQkRGKDAsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfQlVTKENGOF9CREYoY2Y4KSksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfU0xPVChDRjhfQkRGKGNmOCkpLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX0ZVTkMoQ0Y4X0JERihjZjgpKSk7 CiAKLSAgICAgICAgdHlwZSA9IEhWTU9QX0lPX1JBTkdFX1BDSTsKKyAgICAgICAgdHlwZSA9IFhF Tl9ETU9QX0lPX1JBTkdFX1BDSTsKICAgICAgICAgYWRkciA9ICgodWludDY0X3Qpc2JkZiA8PCAz MikgfAogICAgICAgICAgICAgICAgQ0Y4X0FERFJfTE8oY2Y4KSB8CiAgICAgICAgICAgICAgICAo cC0+YWRkciAmIDMpOwpAQCAtMTE1Myw3ICsxMTUzLDcgQEAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2 ZXIgKmh2bV9zZWxlY3RfaW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsCiAgICAgZWxzZQog ICAgIHsKICAgICAgICAgdHlwZSA9IChwLT50eXBlID09IElPUkVRX1RZUEVfUElPKSA/Ci0gICAg ICAgICAgICAgICAgSFZNT1BfSU9fUkFOR0VfUE9SVCA6IEhWTU9QX0lPX1JBTkdFX01FTU9SWTsK KyAgICAgICAgICAgICAgICBYRU5fRE1PUF9JT19SQU5HRV9QT1JUIDogWEVOX0RNT1BfSU9fUkFO R0VfTUVNT1JZOwogICAgICAgICBhZGRyID0gcC0+YWRkcjsKICAgICB9CiAKQEAgLTExNzUsMTkg KzExNzUsMTkgQEAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKmh2bV9zZWxlY3RfaW9yZXFfc2Vy dmVyKHN0cnVjdCBkb21haW4gKmQsCiAgICAgICAgIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGxv bmcgZW5kOwogCi0gICAgICAgIGNhc2UgSFZNT1BfSU9fUkFOR0VfUE9SVDoKKyAgICAgICAgY2Fz ZSBYRU5fRE1PUF9JT19SQU5HRV9QT1JUOgogICAgICAgICAgICAgZW5kID0gYWRkciArIHAtPnNp emUgLSAxOwogICAgICAgICAgICAgaWYgKCByYW5nZXNldF9jb250YWluc19yYW5nZShyLCBhZGRy LCBlbmQpICkKICAgICAgICAgICAgICAgICByZXR1cm4gczsKIAogICAgICAgICAgICAgYnJlYWs7 Ci0gICAgICAgIGNhc2UgSFZNT1BfSU9fUkFOR0VfTUVNT1JZOgorICAgICAgICBjYXNlIFhFTl9E TU9QX0lPX1JBTkdFX01FTU9SWToKICAgICAgICAgICAgIGVuZCA9IGFkZHIgKyAocC0+c2l6ZSAq IHAtPmNvdW50KSAtIDE7CiAgICAgICAgICAgICBpZiAoIHJhbmdlc2V0X2NvbnRhaW5zX3Jhbmdl KHIsIGFkZHIsIGVuZCkgKQogICAgICAgICAgICAgICAgIHJldHVybiBzOwogCiAgICAgICAgICAg ICBicmVhazsKLSAgICAgICAgY2FzZSBIVk1PUF9JT19SQU5HRV9QQ0k6CisgICAgICAgIGNhc2Ug WEVOX0RNT1BfSU9fUkFOR0VfUENJOgogICAgICAgICAgICAgaWYgKCByYW5nZXNldF9jb250YWlu c19zaW5nbGV0b24ociwgYWRkciA+PiAzMikgKQogICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgIHAtPnR5cGUgPSBJT1JFUV9UWVBFX1BDSV9DT05GSUc7CmRpZmYgLS1naXQgYS94ZW4vaW5j bHVkZS9hc20teDg2L2h2bS9kb21haW4uaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2RvbWFp bi5oCmluZGV4IGQ1NWQxODAuLjM1MGYwMTMgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14 ODYvaHZtL2RvbWFpbi5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2RvbWFpbi5oCkBA IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8cHVibGljL2h2bS9wYXJhbXMuaD4KICNpbmNsdWRl IDxwdWJsaWMvaHZtL3NhdmUuaD4KICNpbmNsdWRlIDxwdWJsaWMvaHZtL2h2bV9vcC5oPgorI2lu Y2x1ZGUgPHB1YmxpYy9odm0vZG1fb3AuaD4KIAogc3RydWN0IGh2bV9pb3JlcV9wYWdlIHsKICAg ICB1bnNpZ25lZCBsb25nIGdtZm47CkBAIC00Nyw3ICs0OCw3IEBAIHN0cnVjdCBodm1faW9yZXFf dmNwdSB7CiAgICAgYm9vbF90ICAgICAgICAgICBwZW5kaW5nOwogfTsKIAotI2RlZmluZSBOUl9J T19SQU5HRV9UWVBFUyAoSFZNT1BfSU9fUkFOR0VfUENJICsgMSkKKyNkZWZpbmUgTlJfSU9fUkFO R0VfVFlQRVMgKFhFTl9ETU9QX0lPX1JBTkdFX1BDSSArIDEpCiAjZGVmaW5lIE1BWF9OUl9JT19S QU5HRVMgIDI1NgogCiBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciB7CmRpZmYgLS1naXQgYS94ZW4v aW5jbHVkZS9wdWJsaWMvaHZtL2RtX29wLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2RtX29w LmgKaW5kZXggOWYzZTllZS4uOTgwMzIyZiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVibGlj L2h2bS9kbV9vcC5oCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vZG1fb3AuaApAQCAtMjcs OSArMjcsMTY2IEBACiAjaWYgZGVmaW5lZChfX1hFTl9fKSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xT X18pCiAKICNpbmNsdWRlICIuLi94ZW4uaCIKKyNpbmNsdWRlICIuLi9ldmVudF9jaGFubmVsLmgi CisKKyNpZm5kZWYgdWludDY0X2FsaWduZWRfdAorI2RlZmluZSB1aW50NjRfYWxpZ25lZF90IHVp bnQ2NF90CisjZW5kaWYKKworLyoKKyAqIElPUkVRIFNlcnZlcnMKKyAqCisgKiBUaGUgaW50ZXJm YWNlIGJldHdlZW4gYW4gSS9PIGVtdWxhdG9yIGFuIFhlbiBpcyBjYWxsZWQgYW4gSU9SRVEgU2Vy dmVyLgorICogQSBkb21haW4gc3VwcG9ydHMgYSBzaW5nbGUgJ2xlZ2FjeScgSU9SRVEgU2VydmVy IHdoaWNoIGlzIGluc3RhbnRpYXRlZCBpZgorICogcGFyYW1ldGVyLi4uCisgKgorICogSFZNX1BB UkFNX0lPUkVRX1BGTiBpcyByZWFkICh0byBnZXQgdGhlIGdtZm4gY29udGFpbmluZyB0aGUgc3lu Y2hyb25vdXMKKyAqIGlvcmVxIHN0cnVjdHVyZXMpLCBvci4uLgorICogSFZNX1BBUkFNX0JVRklP UkVRX1BGTiBpcyByZWFkICh0byBnZXQgdGhlIGdtZm4gY29udGFpbmluZyB0aGUgYnVmZmVyZWQK KyAqIGlvcmVxIHJpbmcpLCBvci4uLgorICogSFZNX1BBUkFNX0JVRklPUkVRX0VWVENITiBpcyBy ZWFkICh0byBnZXQgdGhlIGV2ZW50IGNoYW5uZWwgdGhhdCBYZW4gdXNlcworICogdG8gcmVxdWVz dCBidWZmZXJlZCBJL08gZW11bGF0aW9uKS4KKyAqCisgKiBUaGUgZm9sbG93aW5nIGh5cGVyY2Fs bHMgZmFjaWxpdGF0ZSB0aGUgY3JlYXRpb24gb2YgSU9SRVEgU2VydmVycyBmb3IKKyAqICdzZWNv bmRhcnknIGVtdWxhdG9ycyB3aGljaCBhcmUgaW52b2tlZCB0byBpbXBsZW1lbnQgcG9ydCBJL08s IG1lbW9yeSwgb3IKKyAqIFBDSSBjb25maWcgc3BhY2UgcmFuZ2VzIHdoaWNoIHRoZXkgZXhwbGlj aXRseSByZWdpc3Rlci4KKyAqLworCit0eXBlZGVmIHVpbnQxNl90IGlvc2VydmlkX3Q7CisKKy8q CisgKiBYRU5fRE1PUF9jcmVhdGVfaW9yZXFfc2VydmVyOiBJbnN0YW50aWF0ZSBhIG5ldyBJT1JF USBTZXJ2ZXIgZm9yIGEKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZGFy eSBlbXVsYXRvci4KKyAqCisgKiBUaGUgPGlkPiBoYW5kZWQgYmFjayBpcyB1bmlxdWUgZm9yIHRh cmdldCBkb21haW4uIFRoZSB2YWx1ciBvZgorICogPGhhbmRsZV9idWZpb3JlcT4gc2hvdWxkIGJl IG9uZSBvZiBIVk1fSU9SRVFTUlZfQlVGSU9SRVFfKiBkZWZpbmVkIGluCisgKiBodm1fb3AuaC4g SWYgdGhlIHZhbHVlIGlzIEhWTV9JT1JFUVNSVl9CVUZJT1JFUV9PRkYgdGhlbiAgdGhlIGJ1ZmZl cmVkCisgKiBpb3JlcSByaW5nIHdpbGwgbm90IGJlIGFsbG9jYXRlZCBhbmQgaGVuY2UgYWxsIGVt dWxhdGlvbiByZXF1ZXN0cyB0bworICogdGhpcyBzZXJ2ZXIgd2lsbCBiZSBzeW5jaHJvbm91cy4K KyAqLworI2RlZmluZSBYRU5fRE1PUF9jcmVhdGVfaW9yZXFfc2VydmVyIDEKKworc3RydWN0IHhl bl9kbV9vcF9jcmVhdGVfaW9yZXFfc2VydmVyIHsKKyAgICAvKiBJTiAtIHNob3VsZCBzZXJ2ZXIg aGFuZGxlIGJ1ZmZlcmVkIGlvcmVxcyAqLworICAgIHVpbnQ4X3QgaGFuZGxlX2J1ZmlvcmVxOwor ICAgIHVpbnQ4X3QgcGFkWzNdOworICAgIC8qIE9VVCAtIHNlcnZlciBpZCAqLworICAgIGlvc2Vy dmlkX3QgaWQ7Cit9OworCisvKgorICogWEVOX0RNT1BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZvOiBH ZXQgYWxsIHRoZSBpbmZvcm1hdGlvbiBuZWNlc3NhcnkgdG8KKyAqICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYWNjZXNzIElPUkVRIFNlcnZlciA8aWQ+LgorICoKKyAqIFRoZSBlbXVs YXRvciBuZWVkcyB0byBtYXAgdGhlIHN5bmNocm9ub3VzIGlvcmVxIHN0cnVjdHVyZXMgYW5kIGJ1 ZmZlcmVkCisgKiBpb3JlcSByaW5nIChpZiBpdCBleGlzdHMpIHRoYXQgWGVuIHVzZXMgdG8gcmVx dWVzdCBlbXVsYXRpb24uIFRoZXNlIGFyZQorICogaG9zdGVkIGluIHRoZSB0YXJnZXQgZG9tYWlu J3MgZ21mbnMgPGlvcmVxX3Bmbj4gYW5kIDxidWZpb3JlcV9wZm4+CisgKiByZXNwZWN0aXZlbHku IEluIGFkZGl0aW9uLCBpZiB0aGUgSU9SRVEgU2VydmVyIGlzIGhhbmRsaW5nIGJ1ZmZlcmVkCisg KiBlbXVsYXRpb24gcmVxdWVzdHMsIHRoZSBlbXVsYXRvciBuZWVkcyB0byBiaW5kIHRvIGV2ZW50 IGNoYW5uZWwKKyAqIDxidWZpb3JlcV9wb3J0PiB0byBsaXN0ZW4gZm9yIHRoZW0uIChUaGUgZXZl bnQgY2hhbm5lbHMgdXNlZCBmb3IKKyAqIHN5bmNocm9ub3VzIGVtdWxhdGlvbiByZXF1ZXN0cyBh cmUgc3BlY2lmaWVkIGluIHRoZSBwZXItQ1BVIGlvcmVxCisgKiBzdHJ1Y3R1cmVzIGluIDxpb3Jl cV9wZm4+KS4KKyAqIElmIHRoZSBJT1JFUSBTZXJ2ZXIgaXMgbm90IGhhbmRsaW5nIGJ1ZmZlcmVk IGVtdWxhdGlvbiByZXF1ZXN0cyB0aGVuIHRoZQorICogdmFsdWVzIGhhbmRlZCBiYWNrIGluIDxi dWZpb3JlcV9wZm4+IGFuZCA8YnVmaW9yZXFfcG9ydD4gd2lsbCBib3RoIGJlIDAuCisgKi8KKyNk ZWZpbmUgWEVOX0RNT1BfZ2V0X2lvcmVxX3NlcnZlcl9pbmZvIDIKKworc3RydWN0IHhlbl9kbV9v cF9nZXRfaW9yZXFfc2VydmVyX2luZm8geworICAgIC8qIElOIC0gc2VydmVyIGlkICovCisgICAg aW9zZXJ2aWRfdCBpZDsKKyAgICB1aW50MTZfdCBwYWQ7CisgICAgLyogT1VUIC0gYnVmZmVyZWQg aW9yZXEgcG9ydCAqLworICAgIGV2dGNobl9wb3J0X3QgYnVmaW9yZXFfcG9ydDsKKyAgICAvKiBP VVQgLSBzeW5jIGlvcmVxIHBmbiAqLworICAgIHVpbnQ2NF9hbGlnbmVkX3QgaW9yZXFfcGZuOwor ICAgIC8qIE9VVCAtIGJ1ZmZlcmVkIGlvcmVxIHBmbiAqLworICAgIHVpbnQ2NF9hbGlnbmVkX3Qg YnVmaW9yZXFfcGZuOworfTsKKworLyoKKyAqIFhFTl9ETU9QX21hcF9pb19yYW5nZV90b19pb3Jl cV9zZXJ2ZXI6IFJlZ2lzdGVyIGFuIEkvTyByYW5nZSBmb3IKKyAqICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGVtdWxhdGlvbiBieSB0aGUgY2xpZW50IG9mCisgKiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT1JFUSBTZXJ2ZXIgPGlkPi4KKyAq IFhFTl9ETU9QX3VubWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVyOiBEZXJlZ2lzdGVyIGFu IEkvTyByYW5nZQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBmb3IKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBlbXVsYXRpb24gYnkgdGhlIGNsaWVudCBvZgorICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPUkVRIFNlcnZlciA8aWQ+LgorICoK KyAqIFRoZXJlIGFyZSB0aHJlZSB0eXBlcyBvZiBJL08gdGhhdCBjYW4gYmUgZW11bGF0ZWQ6IHBv cnQgSS9PLCBtZW1vcnkKKyAqIGFjY2Vzc2VzIGFuZCBQQ0kgY29uZmlnIHNwYWNlIGFjY2Vzc2Vz LiBUaGUgPHR5cGU+IGZpZWxkIGRlbm90ZXMgd2hpY2gKKyAqIHR5cGUgb2YgcmFuZ2UqIHRoZSA8 c3RhcnQ+IGFuZCA8ZW5kPiAoaW5jbHVzaXZlKSBmaWVsZHMgYXJlIHNwZWNpZnlpbmcuCisgKiBQ Q0kgY29uZmlnIHNwYWNlIHJhbmdlcyBhcmUgc3BlY2lmaWVkIGJ5IHNlZ21lbnQvYnVzL2Rldmlj ZS9mdW5jdGlvbgorICogdmFsdWVzIHdoaWNoIHNob3VsZCBiZSBlbmNvZGVkIHVzaW5nIHRoZSBE TU9QX1BDSV9TQkRGIGhlbHBlciBtYWNybworICogYmVsb3cuCisgKgorICogTk9URTogdW5sZXNz IGFuIGVtdWxhdGlvbiByZXF1ZXN0IGZhbGxzIGVudGlyZWx5IHdpdGhpbiBhIHJhbmdlIG1hcHBl ZAorICogYnkgYSBzZWNvbmRhcnkgZW11bGF0b3IsIGl0IHdpbGwgbm90IGJlIHBhc3NlZCB0byB0 aGF0IGVtdWxhdG9yLgorICovCisjZGVmaW5lIFhFTl9ETU9QX21hcF9pb19yYW5nZV90b19pb3Jl cV9zZXJ2ZXIgMworI2RlZmluZSBYRU5fRE1PUF91bm1hcF9pb19yYW5nZV9mcm9tX2lvcmVxX3Nl cnZlciA0CisKK3N0cnVjdCB4ZW5fZG1fb3BfaW9yZXFfc2VydmVyX3JhbmdlIHsKKyAgICAvKiBJ TiAtIHNlcnZlciBpZCAqLworICAgIGlvc2VydmlkX3QgaWQ7CisgICAgdWludDE2X3QgcGFkOwor ICAgIC8qIElOIC0gdHlwZSBvZiByYW5nZSAqLworICAgIHVpbnQzMl90IHR5cGU7CisjIGRlZmlu ZSBYRU5fRE1PUF9JT19SQU5HRV9QT1JUICAgMCAvKiBJL08gcG9ydCByYW5nZSAqLworIyBkZWZp bmUgWEVOX0RNT1BfSU9fUkFOR0VfTUVNT1JZIDEgLyogTU1JTyByYW5nZSAqLworIyBkZWZpbmUg WEVOX0RNT1BfSU9fUkFOR0VfUENJICAgIDIgLyogUENJIHNlZ21lbnQvYnVzL2Rldi9mdW5jIHJh bmdlICovCisgICAgLyogSU4gLSBpbmNsdXNpdmUgc3RhcnQgYW5kIGVuZCBvZiByYW5nZSAqLwor ICAgIHVpbnQ2NF9hbGlnbmVkX3Qgc3RhcnQsIGVuZDsKK307CisKKyNkZWZpbmUgWEVOX0RNT1Bf UENJX1NCREYocyxiLGQsZikgXAorCSgoKChzKSAmIDB4ZmZmZikgPDwgMTYpIHwgIFwKKwkgKCgo YikgJiAweGZmKSA8PCA4KSB8ICAgICBcCisJICgoKGQpICYgMHgxZikgPDwgMykgfCAgICAgXAor CSAoKGYpICYgMHgwNykpCisKKy8qCisgKiBYRU5fRE1PUF9zZXRfaW9yZXFfc2VydmVyX3N0YXRl OiBFbmFibGUgb3IgZGlzYWJsZSB0aGUgSU9SRVEgU2VydmVyIDxpZD4KKyAqCisgKiBUaGUgSU9S RVEgU2VydmVyIHdpbGwgbm90IGJlIHBhc3NlZCBhbnkgZW11bGF0aW9uIHJlcXVlc3RzIHVudGls IGl0IGlzCisgKiBpbiB0aGUgZW5hYmxlZCBzdGF0ZS4KKyAqIE5vdGUgdGhhdCB0aGUgY29udGVu dHMgb2YgdGhlIGlvcmVxX3BmbiBhbmQgYnVmaW9yZXFfZm4gKHNlZQorICogWEVOX0RNT1BfZ2V0 X2lvcmVxX3NlcnZlcl9pbmZvKSBhcmUgbm90IG1lYW5pbmdmdWwgdW50aWwgdGhlIElPUkVRIFNl cnZlcgorICogaXMgaW4gdGhlIGVuYWJsZWQgc3RhdGUuCisgKi8KKyNkZWZpbmUgWEVOX0RNT1Bf c2V0X2lvcmVxX3NlcnZlcl9zdGF0ZSA1CisKK3N0cnVjdCB4ZW5fZG1fb3Bfc2V0X2lvcmVxX3Nl cnZlcl9zdGF0ZSB7CisgICAgLyogSU4gLSBzZXJ2ZXIgaWQgKi8KKyAgICBpb3NlcnZpZF90IGlk OworICAgIC8qIElOIC0gZW5hYmxlZD8gKi8KKyAgICB1aW50OF90IGVuYWJsZWQ7CisgICAgdWlu dDhfdCBwYWQ7Cit9OworCisvKgorICogWEVOX0RNT1BfZGVzdHJveV9pb3JlcV9zZXJ2ZXI6IERl c3Ryb3kgdGhlIElPUkVRIFNlcnZlciA8aWQ+LgorICoKKyAqIEFueSByZWdpc3RlcmVkIEkvTyBy YW5nZXMgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGRlcmVnaXN0ZXJlZC4KKyAqLworI2RlZmluZSBY RU5fRE1PUF9kZXN0cm95X2lvcmVxX3NlcnZlciA2CisKK3N0cnVjdCB4ZW5fZG1fb3BfZGVzdHJv eV9pb3JlcV9zZXJ2ZXIgeworICAgIC8qIElOIC0gc2VydmVyIGlkICovCisgICAgaW9zZXJ2aWRf dCBpZDsKKyAgICB1aW50MTZfdCBwYWQ7Cit9OwogCiBzdHJ1Y3QgeGVuX2RtX29wIHsKICAgICB1 aW50MzJfdCBvcDsKKyAgICB1aW50MzJfdCBwYWQ7CisgICAgdW5pb24geworICAgICAgICBzdHJ1 Y3QgeGVuX2RtX29wX2NyZWF0ZV9pb3JlcV9zZXJ2ZXIgY3JlYXRlX2lvcmVxX3NlcnZlcjsKKyAg ICAgICAgc3RydWN0IHhlbl9kbV9vcF9nZXRfaW9yZXFfc2VydmVyX2luZm8gZ2V0X2lvcmVxX3Nl cnZlcl9pbmZvOworICAgICAgICBzdHJ1Y3QgeGVuX2RtX29wX2lvcmVxX3NlcnZlcl9yYW5nZSBt YXBfaW9fcmFuZ2VfdG9faW9yZXFfc2VydmVyOworICAgICAgICBzdHJ1Y3QgeGVuX2RtX29wX2lv cmVxX3NlcnZlcl9yYW5nZSB1bm1hcF9pb19yYW5nZV9mcm9tX2lvcmVxX3NlcnZlcjsKKyAgICAg ICAgc3RydWN0IHhlbl9kbV9vcF9zZXRfaW9yZXFfc2VydmVyX3N0YXRlIHNldF9pb3JlcV9zZXJ2 ZXJfc3RhdGU7CisgICAgICAgIHN0cnVjdCB4ZW5fZG1fb3BfZGVzdHJveV9pb3JlcV9zZXJ2ZXIg ZGVzdHJveV9pb3JlcV9zZXJ2ZXI7CisgICAgfSB1OwogfTsKIAogc3RydWN0IHhlbl9kbV9vcF9i dWYgewpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL2h2bS9odm1fb3AuaCBiL3hlbi9p bmNsdWRlL3B1YmxpYy9odm0vaHZtX29wLmgKaW5kZXggYjNlNDVjZi4uNmZjZDg2ZCAxMDA2NDQK LS0tIGEveGVuL2luY2x1ZGUvcHVibGljL2h2bS9odm1fb3AuaAorKysgYi94ZW4vaW5jbHVkZS9w dWJsaWMvaHZtL2h2bV9vcC5oCkBAIC0yNDMsMzcgKzI0MywxMCBAQCB0eXBlZGVmIHN0cnVjdCB4 ZW5faHZtX2luamVjdF9tc2kgeGVuX2h2bV9pbmplY3RfbXNpX3Q7CiBERUZJTkVfWEVOX0dVRVNU X0hBTkRMRSh4ZW5faHZtX2luamVjdF9tc2lfdCk7CiAKIC8qCi0gKiBJT1JFUSBTZXJ2ZXJzCi0g KgotICogVGhlIGludGVyZmFjZSBiZXR3ZWVuIGFuIEkvTyBlbXVsYXRvciBhbiBYZW4gaXMgY2Fs bGVkIGFuIElPUkVRIFNlcnZlci4KLSAqIEEgZG9tYWluIHN1cHBvcnRzIGEgc2luZ2xlICdsZWdh Y3knIElPUkVRIFNlcnZlciB3aGljaCBpcyBpbnN0YW50aWF0ZWQgaWYKLSAqIHBhcmFtZXRlci4u LgotICoKLSAqIEhWTV9QQVJBTV9JT1JFUV9QRk4gaXMgcmVhZCAodG8gZ2V0IHRoZSBnbWZuIGNv bnRhaW5pbmcgdGhlIHN5bmNocm9ub3VzCi0gKiBpb3JlcSBzdHJ1Y3R1cmVzKSwgb3IuLi4KLSAq IEhWTV9QQVJBTV9CVUZJT1JFUV9QRk4gaXMgcmVhZCAodG8gZ2V0IHRoZSBnbWZuIGNvbnRhaW5p bmcgdGhlIGJ1ZmZlcmVkCi0gKiBpb3JlcSByaW5nKSwgb3IuLi4KLSAqIEhWTV9QQVJBTV9CVUZJ T1JFUV9FVlRDSE4gaXMgcmVhZCAodG8gZ2V0IHRoZSBldmVudCBjaGFubmVsIHRoYXQgWGVuIHVz ZXMKLSAqIHRvIHJlcXVlc3QgYnVmZmVyZWQgSS9PIGVtdWxhdGlvbikuCi0gKiAKLSAqIFRoZSBm b2xsb3dpbmcgaHlwZXJjYWxscyBmYWNpbGl0YXRlIHRoZSBjcmVhdGlvbiBvZiBJT1JFUSBTZXJ2 ZXJzIGZvcgotICogJ3NlY29uZGFyeScgZW11bGF0b3JzIHdoaWNoIGFyZSBpbnZva2VkIHRvIGlt cGxlbWVudCBwb3J0IEkvTywgbWVtb3J5LCBvcgotICogUENJIGNvbmZpZyBzcGFjZSByYW5nZXMg d2hpY2ggdGhleSBleHBsaWNpdGx5IHJlZ2lzdGVyLgorICogRGVmaW5pdGlvbnMgcmVsYXRpbmcg dG8gRE1PUF9jcmVhdGVfaW9yZXFfc2VydmVyLiAoRGVmaW5lZCBoZXJlIGZvcgorICogYmFja3dh cmRzIGNvbXBhdGliaWxpdHkpLgogICovCiAKLXR5cGVkZWYgdWludDE2X3QgaW9zZXJ2aWRfdDsK LQotLyoKLSAqIEhWTU9QX2NyZWF0ZV9pb3JlcV9zZXJ2ZXI6IEluc3RhbnRpYXRlIGEgbmV3IElP UkVRIFNlcnZlciBmb3IgYSBzZWNvbmRhcnkKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAg IGVtdWxhdG9yIHNlcnZpY2luZyBkb21haW4gPGRvbWlkPi4KLSAqCi0gKiBUaGUgPGlkPiBoYW5k ZWQgYmFjayBpcyB1bmlxdWUgZm9yIDxkb21pZD4uIElmIDxoYW5kbGVfYnVmaW9yZXE+IGlzIHpl cm8KLSAqIHRoZSBidWZmZXJlZCBpb3JlcSByaW5nIHdpbGwgbm90IGJlIGFsbG9jYXRlZCBhbmQg aGVuY2UgYWxsIGVtdWxhdGlvbgotICogcmVxdWVzdGVzIHRvIHRoaXMgc2VydmVyIHdpbGwgYmUg c3luY2hyb25vdXMuCi0gKi8KLSNkZWZpbmUgSFZNT1BfY3JlYXRlX2lvcmVxX3NlcnZlciAxNwot c3RydWN0IHhlbl9odm1fY3JlYXRlX2lvcmVxX3NlcnZlciB7Ci0gICAgZG9taWRfdCBkb21pZDsg ICAgICAgICAgIC8qIElOIC0gZG9tYWluIHRvIGJlIHNlcnZpY2VkICovCiAjZGVmaW5lIEhWTV9J T1JFUVNSVl9CVUZJT1JFUV9PRkYgICAgMAogI2RlZmluZSBIVk1fSU9SRVFTUlZfQlVGSU9SRVFf TEVHQUNZIDEKIC8qCkBAIC0yODEsMTA3ICsyNTQsNiBAQCBzdHJ1Y3QgeGVuX2h2bV9jcmVhdGVf aW9yZXFfc2VydmVyIHsKICAqIHRoZSBwb2ludGVyIHBhaXIgZ2V0cyByZWFkIGF0b21pY2FsbHk6 CiAgKi8KICNkZWZpbmUgSFZNX0lPUkVRU1JWX0JVRklPUkVRX0FUT01JQyAyCi0gICAgdWludDhf dCBoYW5kbGVfYnVmaW9yZXE7IC8qIElOIC0gc2hvdWxkIHNlcnZlciBoYW5kbGUgYnVmZmVyZWQg aW9yZXFzICovCi0gICAgaW9zZXJ2aWRfdCBpZDsgICAgICAgICAgIC8qIE9VVCAtIHNlcnZlciBp ZCAqLwotfTsKLXR5cGVkZWYgc3RydWN0IHhlbl9odm1fY3JlYXRlX2lvcmVxX3NlcnZlciB4ZW5f aHZtX2NyZWF0ZV9pb3JlcV9zZXJ2ZXJfdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9o dm1fY3JlYXRlX2lvcmVxX3NlcnZlcl90KTsKLQotLyoKLSAqIEhWTU9QX2dldF9pb3JlcV9zZXJ2 ZXJfaW5mbzogR2V0IGFsbCB0aGUgaW5mb3JtYXRpb24gbmVjZXNzYXJ5IHRvIGFjY2VzcwotICog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT1JFUSBTZXJ2ZXIgPGlkPi4gCi0gKgotICog VGhlIGVtdWxhdG9yIG5lZWRzIHRvIG1hcCB0aGUgc3luY2hyb25vdXMgaW9yZXEgc3RydWN0dXJl cyBhbmQgYnVmZmVyZWQKLSAqIGlvcmVxIHJpbmcgKGlmIGl0IGV4aXN0cykgdGhhdCBYZW4gdXNl cyB0byByZXF1ZXN0IGVtdWxhdGlvbi4gVGhlc2UgYXJlCi0gKiBob3N0ZWQgaW4gZG9tYWluIDxk b21pZD4ncyBnbWZucyA8aW9yZXFfcGZuPiBhbmQgPGJ1ZmlvcmVxX3Bmbj4KLSAqIHJlc3BlY3Rp dmVseS4gSW4gYWRkaXRpb24sIGlmIHRoZSBJT1JFUSBTZXJ2ZXIgaXMgaGFuZGxpbmcgYnVmZmVy ZWQKLSAqIGVtdWxhdGlvbiByZXF1ZXN0cywgdGhlIGVtdWxhdG9yIG5lZWRzIHRvIGJpbmQgdG8g ZXZlbnQgY2hhbm5lbAotICogPGJ1ZmlvcmVxX3BvcnQ+IHRvIGxpc3RlbiBmb3IgdGhlbS4gKFRo ZSBldmVudCBjaGFubmVscyB1c2VkIGZvcgotICogc3luY2hyb25vdXMgZW11bGF0aW9uIHJlcXVl c3RzIGFyZSBzcGVjaWZpZWQgaW4gdGhlIHBlci1DUFUgaW9yZXEKLSAqIHN0cnVjdHVyZXMgaW4g PGlvcmVxX3Bmbj4pLgotICogSWYgdGhlIElPUkVRIFNlcnZlciBpcyBub3QgaGFuZGxpbmcgYnVm ZmVyZWQgZW11bGF0aW9uIHJlcXVlc3RzIHRoZW4gdGhlCi0gKiB2YWx1ZXMgaGFuZGVkIGJhY2sg aW4gPGJ1ZmlvcmVxX3Bmbj4gYW5kIDxidWZpb3JlcV9wb3J0PiB3aWxsIGJvdGggYmUgMC4KLSAq LwotI2RlZmluZSBIVk1PUF9nZXRfaW9yZXFfc2VydmVyX2luZm8gMTgKLXN0cnVjdCB4ZW5faHZt X2dldF9pb3JlcV9zZXJ2ZXJfaW5mbyB7Ci0gICAgZG9taWRfdCBkb21pZDsgICAgICAgICAgICAg ICAgIC8qIElOIC0gZG9tYWluIHRvIGJlIHNlcnZpY2VkICovCi0gICAgaW9zZXJ2aWRfdCBpZDsg ICAgICAgICAgICAgICAgIC8qIElOIC0gc2VydmVyIGlkICovCi0gICAgZXZ0Y2huX3BvcnRfdCBi dWZpb3JlcV9wb3J0OyAgIC8qIE9VVCAtIGJ1ZmZlcmVkIGlvcmVxIHBvcnQgKi8KLSAgICB1aW50 NjRfYWxpZ25lZF90IGlvcmVxX3BmbjsgICAgLyogT1VUIC0gc3luYyBpb3JlcSBwZm4gKi8KLSAg ICB1aW50NjRfYWxpZ25lZF90IGJ1ZmlvcmVxX3BmbjsgLyogT1VUIC0gYnVmZmVyZWQgaW9yZXEg cGZuICovCi19OwotdHlwZWRlZiBzdHJ1Y3QgeGVuX2h2bV9nZXRfaW9yZXFfc2VydmVyX2luZm8g eGVuX2h2bV9nZXRfaW9yZXFfc2VydmVyX2luZm9fdDsKLURFRklORV9YRU5fR1VFU1RfSEFORExF KHhlbl9odm1fZ2V0X2lvcmVxX3NlcnZlcl9pbmZvX3QpOwotCi0vKgotICogSFZNX21hcF9pb19y YW5nZV90b19pb3JlcV9zZXJ2ZXI6IFJlZ2lzdGVyIGFuIEkvTyByYW5nZSBvZiBkb21haW4gPGRv bWlkPgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBlbXVsYXRpb24g YnkgdGhlIGNsaWVudCBvZiBJT1JFUQotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFNlcnZlciA8aWQ+Ci0gKiBIVk1fdW5tYXBfaW9fcmFuZ2VfZnJvbV9pb3JlcV9zZXJ2ZXI6 IERlcmVnaXN0ZXIgYW4gSS9PIHJhbmdlIG9mIDxkb21pZD4KLSAqICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZm9yIGVtdWxhdGlvbiBieSB0aGUgY2xpZW50IG9mIElPUkVR Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZlciA8aWQ+Ci0g KgotICogVGhlcmUgYXJlIHRocmVlIHR5cGVzIG9mIEkvTyB0aGF0IGNhbiBiZSBlbXVsYXRlZDog cG9ydCBJL08sIG1lbW9yeSBhY2Nlc3NlcwotICogYW5kIFBDSSBjb25maWcgc3BhY2UgYWNjZXNz ZXMuIFRoZSA8dHlwZT4gZmllbGQgZGVub3RlcyB3aGljaCB0eXBlIG9mIHJhbmdlCi0gKiB0aGUg PHN0YXJ0PiBhbmQgPGVuZD4gKGluY2x1c2l2ZSkgZmllbGRzIGFyZSBzcGVjaWZ5aW5nLgotICog UENJIGNvbmZpZyBzcGFjZSByYW5nZXMgYXJlIHNwZWNpZmllZCBieSBzZWdtZW50L2J1cy9kZXZp Y2UvZnVuY3Rpb24gdmFsdWVzCi0gKiB3aGljaCBzaG91bGQgYmUgZW5jb2RlZCB1c2luZyB0aGUg SFZNT1BfUENJX1NCREYgaGVscGVyIG1hY3JvIGJlbG93LgotICoKLSAqIE5PVEU6IHVubGVzcyBh biBlbXVsYXRpb24gcmVxdWVzdCBmYWxscyBlbnRpcmVseSB3aXRoaW4gYSByYW5nZSBtYXBwZWQK LSAqIGJ5IGEgc2Vjb25kYXJ5IGVtdWxhdG9yLCBpdCB3aWxsIG5vdCBiZSBwYXNzZWQgdG8gdGhh dCBlbXVsYXRvci4KLSAqLwotI2RlZmluZSBIVk1PUF9tYXBfaW9fcmFuZ2VfdG9faW9yZXFfc2Vy dmVyIDE5Ci0jZGVmaW5lIEhWTU9QX3VubWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVyIDIw Ci1zdHJ1Y3QgeGVuX2h2bV9pb19yYW5nZSB7Ci0gICAgZG9taWRfdCBkb21pZDsgICAgICAgICAg ICAgICAvKiBJTiAtIGRvbWFpbiB0byBiZSBzZXJ2aWNlZCAqLwotICAgIGlvc2VydmlkX3QgaWQ7 ICAgICAgICAgICAgICAgLyogSU4gLSBzZXJ2ZXIgaWQgKi8KLSAgICB1aW50MzJfdCB0eXBlOyAg ICAgICAgICAgICAgIC8qIElOIC0gdHlwZSBvZiByYW5nZSAqLwotIyBkZWZpbmUgSFZNT1BfSU9f UkFOR0VfUE9SVCAgIDAgLyogSS9PIHBvcnQgcmFuZ2UgKi8KLSMgZGVmaW5lIEhWTU9QX0lPX1JB TkdFX01FTU9SWSAxIC8qIE1NSU8gcmFuZ2UgKi8KLSMgZGVmaW5lIEhWTU9QX0lPX1JBTkdFX1BD SSAgICAyIC8qIFBDSSBzZWdtZW50L2J1cy9kZXYvZnVuYyByYW5nZSAqLwotICAgIHVpbnQ2NF9h bGlnbmVkX3Qgc3RhcnQsIGVuZDsgLyogSU4gLSBpbmNsdXNpdmUgc3RhcnQgYW5kIGVuZCBvZiBy YW5nZSAqLwotfTsKLXR5cGVkZWYgc3RydWN0IHhlbl9odm1faW9fcmFuZ2UgeGVuX2h2bV9pb19y YW5nZV90OwotREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2h2bV9pb19yYW5nZV90KTsKLQot I2RlZmluZSBIVk1PUF9QQ0lfU0JERihzLGIsZCxmKSAgICAgICAgICAgICAgICAgXAotCSgoKChz KSAmIDB4ZmZmZikgPDwgMTYpIHwgICAgICAgICAgICAgICAgICAgXAotCSAoKChiKSAmIDB4ZmYp IDw8IDgpIHwgICAgICAgICAgICAgICAgICAgICAgXAotCSAoKChkKSAmIDB4MWYpIDw8IDMpIHwg ICAgICAgICAgICAgICAgICAgICAgXAotCSAoKGYpICYgMHgwNykpCi0KLS8qCi0gKiBIVk1PUF9k ZXN0cm95X2lvcmVxX3NlcnZlcjogRGVzdHJveSB0aGUgSU9SRVEgU2VydmVyIDxpZD4gc2Vydmlj aW5nIGRvbWFpbgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkb21pZD4uCi0gKgot ICogQW55IHJlZ2lzdGVyZWQgSS9PIHJhbmdlcyB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZGVyZWdp c3RlcmVkLgotICovCi0jZGVmaW5lIEhWTU9QX2Rlc3Ryb3lfaW9yZXFfc2VydmVyIDIxCi1zdHJ1 Y3QgeGVuX2h2bV9kZXN0cm95X2lvcmVxX3NlcnZlciB7Ci0gICAgZG9taWRfdCBkb21pZDsgLyog SU4gLSBkb21haW4gdG8gYmUgc2VydmljZWQgKi8KLSAgICBpb3NlcnZpZF90IGlkOyAvKiBJTiAt IHNlcnZlciBpZCAqLwotfTsKLXR5cGVkZWYgc3RydWN0IHhlbl9odm1fZGVzdHJveV9pb3JlcV9z ZXJ2ZXIgeGVuX2h2bV9kZXN0cm95X2lvcmVxX3NlcnZlcl90OwotREVGSU5FX1hFTl9HVUVTVF9I QU5ETEUoeGVuX2h2bV9kZXN0cm95X2lvcmVxX3NlcnZlcl90KTsKLQotLyoKLSAqIEhWTU9QX3Nl dF9pb3JlcV9zZXJ2ZXJfc3RhdGU6IEVuYWJsZSBvciBkaXNhYmxlIHRoZSBJT1JFUSBTZXJ2ZXIg PGlkPiBzZXJ2aWNpbmcKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbiA8 ZG9taWQ+LgotICoKLSAqIFRoZSBJT1JFUSBTZXJ2ZXIgd2lsbCBub3QgYmUgcGFzc2VkIGFueSBl bXVsYXRpb24gcmVxdWVzdHMgdW50aWwgaXQgaXMgaW4gdGhlCi0gKiBlbmFibGVkIHN0YXRlLgot ICogTm90ZSB0aGF0IHRoZSBjb250ZW50cyBvZiB0aGUgaW9yZXFfcGZuIGFuZCBidWZpb3JlcV9m biAoc2VlCi0gKiBIVk1PUF9nZXRfaW9yZXFfc2VydmVyX2luZm8pIGFyZSBub3QgbWVhbmluZ2Z1 bCB1bnRpbCB0aGUgSU9SRVEgU2VydmVyIGlzIGluCi0gKiB0aGUgZW5hYmxlZCBzdGF0ZS4KLSAq LwotI2RlZmluZSBIVk1PUF9zZXRfaW9yZXFfc2VydmVyX3N0YXRlIDIyCi1zdHJ1Y3QgeGVuX2h2 bV9zZXRfaW9yZXFfc2VydmVyX3N0YXRlIHsKLSAgICBkb21pZF90IGRvbWlkOyAgIC8qIElOIC0g ZG9tYWluIHRvIGJlIHNlcnZpY2VkICovCi0gICAgaW9zZXJ2aWRfdCBpZDsgICAvKiBJTiAtIHNl cnZlciBpZCAqLwotICAgIHVpbnQ4X3QgZW5hYmxlZDsgLyogSU4gLSBlbmFibGVkPyAqLyAgICAK LX07Ci10eXBlZGVmIHN0cnVjdCB4ZW5faHZtX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGUgeGVuX2h2 bV9zZXRfaW9yZXFfc2VydmVyX3N0YXRlX3Q7Ci1ERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5f aHZtX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGVfdCk7CiAKICNlbmRpZiAvKiBkZWZpbmVkKF9fWEVO X18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykgKi8KIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUveHNtL2R1bW15LmggYi94ZW4vaW5jbHVkZS94c20vZHVtbXkuaAppbmRleCBiMjA2ZjVhLi45 ZjdjMTc0IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94c20vZHVtbXkuaAorKysgYi94ZW4vaW5j bHVkZS94c20vZHVtbXkuaApAQCAtNjM0LDEyICs2MzQsNiBAQCBzdGF0aWMgWFNNX0lOTElORSBp bnQgeHNtX2h2bV9pbmplY3RfbXNpKFhTTV9ERUZBVUxUX0FSRyBzdHJ1Y3QgZG9tYWluICpkKQog ICAgIHJldHVybiB4c21fZGVmYXVsdF9hY3Rpb24oYWN0aW9uLCBjdXJyZW50LT5kb21haW4sIGQp OwogfQogCi1zdGF0aWMgWFNNX0lOTElORSBpbnQgeHNtX2h2bV9pb3JlcV9zZXJ2ZXIoWFNNX0RF RkFVTFRfQVJHIHN0cnVjdCBkb21haW4gKmQsIGludCBvcCkKLXsKLSAgICBYU01fQVNTRVJUX0FD VElPTihYU01fRE1fUFJJVik7Ci0gICAgcmV0dXJuIHhzbV9kZWZhdWx0X2FjdGlvbihhY3Rpb24s IGN1cnJlbnQtPmRvbWFpbiwgZCk7Ci19Ci0KIHN0YXRpYyBYU01fSU5MSU5FIGludCB4c21fbWVt X3NoYXJpbmdfb3AoWFNNX0RFRkFVTFRfQVJHIHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBkb21h aW4gKmNkLCBpbnQgb3ApCiB7CiAgICAgWFNNX0FTU0VSVF9BQ1RJT04oWFNNX0RNX1BSSVYpOwpk aWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveHNtL3hzbS5oIGIveGVuL2luY2x1ZGUveHNtL3hzbS5o CmluZGV4IGUyZDMzNmYuLmI1ODQ1YTIgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hzbS94c20u aAorKysgYi94ZW4vaW5jbHVkZS94c20veHNtLmgKQEAgLTE2Niw3ICsxNjYsNiBAQCBzdHJ1Y3Qg eHNtX29wZXJhdGlvbnMgewogICAgIGludCAoKmh2bV9zZXRfaXNhX2lycV9sZXZlbCkgKHN0cnVj dCBkb21haW4gKmQpOwogICAgIGludCAoKmh2bV9zZXRfcGNpX2xpbmtfcm91dGUpIChzdHJ1Y3Qg ZG9tYWluICpkKTsKICAgICBpbnQgKCpodm1faW5qZWN0X21zaSkgKHN0cnVjdCBkb21haW4gKmQp OwotICAgIGludCAoKmh2bV9pb3JlcV9zZXJ2ZXIpIChzdHJ1Y3QgZG9tYWluICpkLCBpbnQgb3Ap OwogICAgIGludCAoKm1lbV9zaGFyaW5nX29wKSAoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGRv bWFpbiAqY2QsIGludCBvcCk7CiAgICAgaW50ICgqYXBpYykgKHN0cnVjdCBkb21haW4gKmQsIGlu dCBjbWQpOwogICAgIGludCAoKm1lbXR5cGUpICh1aW50MzJfdCBhY2Nlc3MpOwpAQCAtNjU2LDEx ICs2NTUsNiBAQCBzdGF0aWMgaW5saW5lIGludCB4c21faHZtX2luamVjdF9tc2kgKHhzbV9kZWZh dWx0X3QgZGVmLCBzdHJ1Y3QgZG9tYWluICpkKQogICAgIHJldHVybiB4c21fb3BzLT5odm1faW5q ZWN0X21zaShkKTsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgeHNtX2h2bV9pb3JlcV9zZXJ2ZXIg KHhzbV9kZWZhdWx0X3QgZGVmLCBzdHJ1Y3QgZG9tYWluICpkLCBpbnQgb3ApCi17Ci0gICAgcmV0 dXJuIHhzbV9vcHMtPmh2bV9pb3JlcV9zZXJ2ZXIoZCwgb3ApOwotfQotCiBzdGF0aWMgaW5saW5l IGludCB4c21fbWVtX3NoYXJpbmdfb3AgKHhzbV9kZWZhdWx0X3QgZGVmLCBzdHJ1Y3QgZG9tYWlu ICpkLCBzdHJ1Y3QgZG9tYWluICpjZCwgaW50IG9wKQogewogICAgIHJldHVybiB4c21fb3BzLT5t ZW1fc2hhcmluZ19vcChkLCBjZCwgb3ApOwpkaWZmIC0tZ2l0IGEveGVuL3hzbS9kdW1teS5jIGIv eGVuL3hzbS9kdW1teS5jCmluZGV4IGEwODJiMjguLmQ1NDRlYzEgMTAwNjQ0Ci0tLSBhL3hlbi94 c20vZHVtbXkuYworKysgYi94ZW4veHNtL2R1bW15LmMKQEAgLTE0OSw3ICsxNDksNiBAQCB2b2lk IF9faW5pdCB4c21fZml4dXBfb3BzIChzdHJ1Y3QgeHNtX29wZXJhdGlvbnMgKm9wcykKICAgICBz ZXRfdG9fZHVtbXlfaWZfbnVsbChvcHMsIGh2bV9zZXRfaXNhX2lycV9sZXZlbCk7CiAgICAgc2V0 X3RvX2R1bW15X2lmX251bGwob3BzLCBodm1fc2V0X3BjaV9saW5rX3JvdXRlKTsKICAgICBzZXRf dG9fZHVtbXlfaWZfbnVsbChvcHMsIGh2bV9pbmplY3RfbXNpKTsKLSAgICBzZXRfdG9fZHVtbXlf aWZfbnVsbChvcHMsIGh2bV9pb3JlcV9zZXJ2ZXIpOwogICAgIHNldF90b19kdW1teV9pZl9udWxs KG9wcywgbWVtX3NoYXJpbmdfb3ApOwogICAgIHNldF90b19kdW1teV9pZl9udWxsKG9wcywgYXBp Yyk7CiAgICAgc2V0X3RvX2R1bW15X2lmX251bGwob3BzLCBtYWNoaW5lX21lbW9yeV9tYXApOwpk aWZmIC0tZ2l0IGEveGVuL3hzbS9mbGFzay9ob29rcy5jIGIveGVuL3hzbS9mbGFzay9ob29rcy5j CmluZGV4IDM4M2RkNGYuLjFjZThhMzYgMTAwNjQ0Ci0tLSBhL3hlbi94c20vZmxhc2svaG9va3Mu YworKysgYi94ZW4veHNtL2ZsYXNrL2hvb2tzLmMKQEAgLTE1MjUsMTEgKzE1MjUsNiBAQCBzdGF0 aWMgaW50IGZsYXNrX2h2bV9pbmplY3RfbXNpKHN0cnVjdCBkb21haW4gKmQpCiAgICAgcmV0dXJu IGN1cnJlbnRfaGFzX3Blcm0oZCwgU0VDQ0xBU1NfSFZNLCBIVk1fX1NFTkRfSVJRKTsKIH0KIAot c3RhdGljIGludCBmbGFza19odm1faW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsIGludCBv cCkKLXsKLSAgICByZXR1cm4gY3VycmVudF9oYXNfcGVybShkLCBTRUNDTEFTU19IVk0sIEhWTV9f SFZNQ1RMKTsKLX0KLQogc3RhdGljIGludCBmbGFza19tZW1fc2hhcmluZ19vcChzdHJ1Y3QgZG9t YWluICpkLCBzdHJ1Y3QgZG9tYWluICpjZCwgaW50IG9wKQogewogICAgIGludCByYyA9IGN1cnJl bnRfaGFzX3Blcm0oY2QsIFNFQ0NMQVNTX0hWTSwgSFZNX19NRU1fU0hBUklORyk7CkBAIC0xODA4 LDcgKzE4MDMsNiBAQCBzdGF0aWMgc3RydWN0IHhzbV9vcGVyYXRpb25zIGZsYXNrX29wcyA9IHsK ICAgICAuaHZtX3NldF9pc2FfaXJxX2xldmVsID0gZmxhc2tfaHZtX3NldF9pc2FfaXJxX2xldmVs LAogICAgIC5odm1fc2V0X3BjaV9saW5rX3JvdXRlID0gZmxhc2tfaHZtX3NldF9wY2lfbGlua19y b3V0ZSwKICAgICAuaHZtX2luamVjdF9tc2kgPSBmbGFza19odm1faW5qZWN0X21zaSwKLSAgICAu aHZtX2lvcmVxX3NlcnZlciA9IGZsYXNrX2h2bV9pb3JlcV9zZXJ2ZXIsCiAgICAgLm1lbV9zaGFy aW5nX29wID0gZmxhc2tfbWVtX3NoYXJpbmdfb3AsCiAgICAgLmFwaWMgPSBmbGFza19hcGljLAog ICAgIC5tYWNoaW5lX21lbW9yeV9tYXAgPSBmbGFza19tYWNoaW5lX21lbW9yeV9tYXAsCi0tIAoy LjEuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl bi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0 cy54ZW4ub3JnL3hlbi1kZXZlbAo=