From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Vivi Subject: Re: [PATCH v2 3/7] drm/i915: replace IS_GEN with GT_GEN(..., N) Date: Wed, 21 Nov 2018 14:20:47 -0800 Message-ID: <20181121222047.GG13148@intel.com> References: <20181106215123.27568-1-lucas.demarchi@intel.com> <20181106215123.27568-4-lucas.demarchi@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3EC706E122 for ; Wed, 21 Nov 2018 22:20:48 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20181106215123.27568-4-lucas.demarchi@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Lucas De Marchi Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBOb3YgMDYsIDIwMTggYXQgMDE6NTE6MTlQTSAtMDgwMCwgTHVjYXMgRGUgTWFyY2hp IHdyb3RlOgo+IERlZmluZSBHVF9HRU4oKSBzaW1pbGFybHkgdG8gb3VyIEdUX0dFTl9SQU5HRSgp IGFuZCBjb252ZXJ0IHVzZXJzIG9mCj4gSVNfR0VOPE4+IHRvIHBzcyB0aGUgZ2VuIGFzIHBhcmFt ZXRlci4gVGhpcyBwcmVwYXJlcyBmb3IgdGhlIGFkZGl0aW9uCj4gb2YgZGlzcGxheSBnZW4gY2hl Y2tzIGJ5IHJlbmFtaW5nIHRoZSBJU19HRU54KCkgYW5kIHVzaW5nIGNvbW1vbiBjb2RlCj4gZm9y IGFsbCB0aGUgbiBnZW5zLgo+IAo+IFRoZSBmb2xsb3dpbmcgc3BhdGNoIHdhcyB1c2VkIHRvIGNv bnZlcnQgdGhlIHVzZXJzIG9mIHRoZXNlIG1hY3JvczoKPiAKPiBAQAo+IGV4cHJlc3Npb24gZTsK PiBAQAo+ICgKPiAtIElTX0dFTjIoZSkKPiArIEdUX0dFTihlLCAyKQo+IHwKPiAtIElTX0dFTjMo ZSkKPiArIEdUX0dFTihlLCAzKQo+IHwKPiAtIElTX0dFTjQoZSkKPiArIEdUX0dFTihlLCA0KQo+ IHwKPiAtIElTX0dFTjUoZSkKPiArIEdUX0dFTihlLCA1KQo+IHwKPiAtIElTX0dFTjYoZSkKPiAr IEdUX0dFTihlLCA2KQo+IHwKPiAtIElTX0dFTjcoZSkKPiArIEdUX0dFTihlLCA3KQo+IHwKPiAt IElTX0dFTjgoZSkKPiArIEdUX0dFTihlLCA4KQo+IHwKPiAtIElTX0dFTjkoZSkKPiArIEdUX0dF TihlLCA5KQo+IHwKPiAtIElTX0dFTjEwKGUpCj4gKyBHVF9HRU4oZSwgMTApCj4gfAo+IC0gSVNf R0VOMTEoZSkKPiArIEdUX0dFTihlLCAxMSkKPiApCj4gCj4gU2lnbmVkLW9mZi1ieTogTHVjYXMg RGUgTWFyY2hpIDxsdWNhcy5kZW1hcmNoaUBpbnRlbC5jb20+CgpSZXZpZXdlZC1ieTogUm9kcmln byBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Z0L3ZncHUuYyAgICAgICAgICAgIHwgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9jbWRfcGFyc2VyLmMgICAgIHwgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMgICAgICAgIHwgMTYgKystLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuYyAgICAgICAgICAgIHwgMTggKysrLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmggICAgICAgICAgICB8IDI5ICsrKy0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgfCAxMiArKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2NvbnRleHQuYyAgICB8ICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyB8ICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2ZlbmNlX3JlZy5jICB8IDEwICstLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ndHQuYyAgICAgICAgfCAgNiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9zdG9sZW4uYyAgICAgfCAgNyArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90 aWxpbmcuYyAgICAgfCAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJv ci5jICAgICAgfCAxOCArKystLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAg ICAgICAgICAgIHwgMjQgKysrLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYu YyAgICAgICAgICAgfCAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N1c3BlbmQu YyAgICAgICAgfCAxMiArKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5j ICAgICAgICB8ICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMgICAg ICAgICB8ICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NkY2xrLmMgICAgICAg ICB8IDEwICstLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jcnQuYyAgICAgICAgICAg fCAgNiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jICAgfCAx NiArKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgICAgfCA3 NCArKysrKysrKysrKy0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw LmMgICAgICAgICAgICB8IDI0ICsrKy0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZW5naW5lX2NzLmMgICAgIHwgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJj LmMgICAgICAgICAgIHwgMjIgKysrLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9m aWZvX3VuZGVycnVuLmMgfCAgNiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNf ZncuYyAgICAgICAgfCAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oYW5nY2hl Y2suYyAgICAgfCAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAg ICAgICAgfCAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9sdmRzLmMgICAgICAg ICAgfCAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMgICAgICAgICAg fCAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMgICAgICAgfCAx MCArLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYyAgICAgICAgIHwgIDgg Ky0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BpcGVfY3JjLmMgICAgICB8ICA4ICst LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICAgICAgICAgICAgfCA2MCArKysr KysrKystLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMgICAgICAg ICAgIHwgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jICAg IHwgMjggKysrKy0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5o ICAgIHwgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jICAg IHwgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgICAgICAgIHwg IDYgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuYyAgICAgICAgICAgIHwgIDIg Ky0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMgICAgICAgIHwgMTggKysr LS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcGNtLmMgICAgICAgICB8ICA0ICst Cj4gIDQzIGZpbGVzIGNoYW5nZWQsIDI0NyBpbnNlcnRpb25zKCspLCAyNTkgZGVsZXRpb25zKC0p Cj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC92Z3B1LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndnQvdmdwdS5jCj4gaW5kZXggYzYyOGJlMDVmYmZlLi5lYTQ1YjIy ODE0YTEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3ZncHUuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC92Z3B1LmMKPiBAQCAtMTQ4LDEwICsxNDgsMTAg QEAgaW50IGludGVsX2d2dF9pbml0X3ZncHVfdHlwZXMoc3RydWN0IGludGVsX2d2dCAqZ3Z0KQo+ ICAJCWd2dC0+dHlwZXNbaV0uYXZhaWxfaW5zdGFuY2UgPSBtaW4obG93X2F2YWlsIC8gdmdwdV90 eXBlc1tpXS5sb3dfbW0sCj4gIAkJCQkJCSAgIGhpZ2hfYXZhaWwgLyB2Z3B1X3R5cGVzW2ldLmhp Z2hfbW0pOwo+ICAKPiAtCQlpZiAoSVNfR0VOOChndnQtPmRldl9wcml2KSkKPiArCQlpZiAoR1Rf R0VOKGd2dC0+ZGV2X3ByaXYsIDgpKQo+ICAJCQlzcHJpbnRmKGd2dC0+dHlwZXNbaV0ubmFtZSwg IkdWVGdfVjRfJXMiLAo+ICAJCQkJCQl2Z3B1X3R5cGVzW2ldLm5hbWUpOwo+IC0JCWVsc2UgaWYg KElTX0dFTjkoZ3Z0LT5kZXZfcHJpdikpCj4gKwkJZWxzZSBpZiAoR1RfR0VOKGd2dC0+ZGV2X3By aXYsIDkpKQo+ICAJCQlzcHJpbnRmKGd2dC0+dHlwZXNbaV0ubmFtZSwgIkdWVGdfVjVfJXMiLAo+ ICAJCQkJCQl2Z3B1X3R5cGVzW2ldLm5hbWUpOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2NtZF9wYXJzZXIuYwo+IGluZGV4IDk1NDc4ZGI5OTk4Yi4uMmJlOGMyMjY0MWI2IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfY21kX3BhcnNlci5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2VyLmMKPiBAQCAtODY1LDcgKzg2NSw3IEBA IHZvaWQgaW50ZWxfZW5naW5lX2luaXRfY21kX3BhcnNlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCj4gIAlpbnQgY21kX3RhYmxlX2NvdW50Owo+ICAJaW50IHJldDsKPiAgCj4gLQlp ZiAoIUlTX0dFTjcoZW5naW5lLT5pOTE1KSkKPiArCWlmICghR1RfR0VOKGVuZ2luZS0+aTkxNSwg NykpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCXN3aXRjaCAoZW5naW5lLT5pZCkgewo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gaW5kZXggZjYwNDg1OTA2ZjdlLi4yNTE0ZWM0ZDk3ZDQg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC0xMDY0LDcgKzEwNjQs NyBAQCBzdGF0aWMgaW50IGk5MTVfZnJlcXVlbmN5X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2 b2lkICp1bnVzZWQpCj4gIAo+ICAJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+ICAK PiAtCWlmIChJU19HRU41KGRldl9wcml2KSkgewo+ICsJaWYgKEdUX0dFTihkZXZfcHJpdiwgNSkp IHsKPiAgCQl1MTYgcmd2c3djdGwgPSBJOTE1X1JFQUQxNihNRU1TV0NUTCk7Cj4gIAkJdTE2IHJn dnN0YXQgPSBJOTE1X1JFQUQxNihNRU1TVEFUX0lMSyk7Cj4gIAo+IEBAIC0xNzg1LDcgKzE3ODUs NyBAQCBzdGF0aWMgaW50IGk5MTVfZW1vbl9zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lk ICp1bnVzZWQpCj4gIAl1bnNpZ25lZCBsb25nIHRlbXAsIGNoaXBzZXQsIGdmeDsKPiAgCWludCBy ZXQ7Cj4gIAo+IC0JaWYgKCFJU19HRU41KGRldl9wcml2KSkKPiArCWlmICghR1RfR0VOKGRldl9w cml2LCA1KSkKPiAgCQlyZXR1cm4gLUVOT0RFVjsKPiAgCj4gIAlyZXQgPSBtdXRleF9sb2NrX2lu dGVycnVwdGlibGUoJmRldi0+c3RydWN0X211dGV4KTsKPiBAQCAtMjAzMCw3ICsyMDMwLDcgQEAg c3RhdGljIGludCBpOTE1X3N3aXp6bGVfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRh dGEpCj4gIAlzZXFfcHJpbnRmKG0sICJiaXQ2IHN3aXp6bGUgZm9yIFktdGlsaW5nID0gJXNcbiIs Cj4gIAkJICAgc3dpenpsZV9zdHJpbmcoZGV2X3ByaXYtPm1tLmJpdF82X3N3aXp6bGVfeSkpOwo+ ICAKPiAtCWlmIChJU19HRU4zKGRldl9wcml2KSB8fCBJU19HRU40KGRldl9wcml2KSkgewo+ICsJ aWYgKEdUX0dFTihkZXZfcHJpdiwgMykgfHwgR1RfR0VOKGRldl9wcml2LCA0KSkgewo+ICAJCXNl cV9wcmludGYobSwgIkREQyA9IDB4JTA4eFxuIiwKPiAgCQkJICAgSTkxNV9SRUFEKERDQykpOwo+ ICAJCXNlcV9wcmludGYobSwgIkREQzIgPSAweCUwOHhcbiIsCj4gQEAgLTIxMTUsMTIgKzIxMTUs MTIgQEAgc3RhdGljIHZvaWQgZ2VuNl9wcGd0dF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwKPiAg CXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiAgCWVudW0gaW50ZWxfZW5naW5lX2lk IGlkOwo+ICAKPiAtCWlmIChJU19HRU42KGRldl9wcml2KSkKPiArCWlmIChHVF9HRU4oZGV2X3By aXYsIDYpKQo+ICAJCXNlcV9wcmludGYobSwgIkdGWF9NT0RFOiAweCUwOHhcbiIsIEk5MTVfUkVB RChHRlhfTU9ERSkpOwo+ICAKPiAgCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2LCBp ZCkgewo+ICAJCXNlcV9wcmludGYobSwgIiVzXG4iLCBlbmdpbmUtPm5hbWUpOwo+IC0JCWlmIChJ U19HRU43KGRldl9wcml2KSkKPiArCQlpZiAoR1RfR0VOKGRldl9wcml2LCA3KSkKPiAgCQkJc2Vx X3ByaW50ZihtLCAiR0ZYX01PREU6IDB4JTA4eFxuIiwKPiAgCQkJCSAgIEk5MTVfUkVBRChSSU5H X01PREVfR0VONyhlbmdpbmUpKSk7Cj4gIAkJc2VxX3ByaW50ZihtLCAiUFBfRElSX0JBU0U6IDB4 JTA4eFxuIiwKPiBAQCAtNDI2MSw3ICs0MjYxLDcgQEAgaTkxNV9jYWNoZV9zaGFyaW5nX2dldCh2 b2lkICpkYXRhLCB1NjQgKnZhbCkKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRhdGE7Cj4gIAl1MzIgc25wY3I7Cj4gIAo+IC0JaWYgKCEoSVNfR0VONihkZXZfcHJpdikg fHwgSVNfR0VONyhkZXZfcHJpdikpKQo+ICsJaWYgKCEoR1RfR0VOKGRldl9wcml2LCA2KSB8fCBH VF9HRU4oZGV2X3ByaXYsIDcpKSkKPiAgCQlyZXR1cm4gLUVOT0RFVjsKPiAgCj4gIAlpbnRlbF9y dW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gQEAgLTQyODEsNyArNDI4MSw3IEBAIGk5MTVfY2Fj aGVfc2hhcmluZ19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkKPiAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGRhdGE7Cj4gIAl1MzIgc25wY3I7Cj4gIAo+IC0JaWYgKCEoSVNf R0VONihkZXZfcHJpdikgfHwgSVNfR0VONyhkZXZfcHJpdikpKQo+ICsJaWYgKCEoR1RfR0VOKGRl dl9wcml2LCA2KSB8fCBHVF9HRU4oZGV2X3ByaXYsIDcpKSkKPiAgCQlyZXR1cm4gLUVOT0RFVjsK PiAgCj4gIAlpZiAodmFsID4gMykKPiBAQCAtNDUzOCw3ICs0NTM4LDcgQEAgc3RhdGljIGludCBp OTE1X3NzZXVfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICAJCWNo ZXJyeXZpZXdfc3NldV9kZXZpY2Vfc3RhdHVzKGRldl9wcml2LCAmc3NldSk7Cj4gIAl9IGVsc2Ug aWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikpIHsKPiAgCQlicm9hZHdlbGxfc3NldV9kZXZpY2Vf c3RhdHVzKGRldl9wcml2LCAmc3NldSk7Cj4gLQl9IGVsc2UgaWYgKElTX0dFTjkoZGV2X3ByaXYp KSB7Cj4gKwl9IGVsc2UgaWYgKEdUX0dFTihkZXZfcHJpdiwgOSkpIHsKPiAgCQlnZW45X3NzZXVf ZGV2aWNlX3N0YXR1cyhkZXZfcHJpdiwgJnNzZXUpOwo+ICAJfSBlbHNlIGlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDEwKSB7Cj4gIAkJZ2VuMTBfc3NldV9kZXZpY2Vfc3RhdHVzKGRldl9wcml2 LCAmc3NldSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gaW5kZXggYWNiNTE2MzA4MjYyLi5k MmJkZDcxMTJjNWQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBAQCAtMTMxLDE1ICsx MzEsMTUgQEAgaW50ZWxfcGNoX3R5cGUoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LCB1bnNpZ25lZCBzaG9ydCBpZCkKPiAgCXN3aXRjaCAoaWQpIHsKPiAgCWNhc2UgSU5U RUxfUENIX0lCWF9ERVZJQ0VfSURfVFlQRToKPiAgCQlEUk1fREVCVUdfS01TKCJGb3VuZCBJYmV4 IFBlYWsgUENIXG4iKTsKPiAtCQlXQVJOX09OKCFJU19HRU41KGRldl9wcml2KSk7Cj4gKwkJV0FS Tl9PTighR1RfR0VOKGRldl9wcml2LCA1KSk7Cj4gIAkJcmV0dXJuIFBDSF9JQlg7Cj4gIAljYXNl IElOVEVMX1BDSF9DUFRfREVWSUNFX0lEX1RZUEU6Cj4gIAkJRFJNX0RFQlVHX0tNUygiRm91bmQg Q291Z2FyUG9pbnQgUENIXG4iKTsKPiAtCQlXQVJOX09OKCFJU19HRU42KGRldl9wcml2KSAmJiAh SVNfSVZZQlJJREdFKGRldl9wcml2KSk7Cj4gKwkJV0FSTl9PTighR1RfR0VOKGRldl9wcml2LCA2 KSAmJiAhSVNfSVZZQlJJREdFKGRldl9wcml2KSk7Cj4gIAkJcmV0dXJuIFBDSF9DUFQ7Cj4gIAlj YXNlIElOVEVMX1BDSF9QUFRfREVWSUNFX0lEX1RZUEU6Cj4gIAkJRFJNX0RFQlVHX0tNUygiRm91 bmQgUGFudGhlclBvaW50IFBDSFxuIik7Cj4gLQkJV0FSTl9PTighSVNfR0VONihkZXZfcHJpdikg JiYgIUlTX0lWWUJSSURHRShkZXZfcHJpdikpOwo+ICsJCVdBUk5fT04oIUdUX0dFTihkZXZfcHJp diwgNikgJiYgIUlTX0lWWUJSSURHRShkZXZfcHJpdikpOwo+ICAJCS8qIFBhbnRoZXJQb2ludCBp cyBDUFQgY29tcGF0aWJsZSAqLwo+ICAJCXJldHVybiBQQ0hfQ1BUOwo+ICAJY2FzZSBJTlRFTF9Q Q0hfTFBUX0RFVklDRV9JRF9UWVBFOgo+IEBAIC0yMTYsOSArMjE2LDkgQEAgaW50ZWxfdmlydF9k ZXRlY3RfcGNoKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCSAq IG1ha2UgYW4gZWR1Y2F0ZWQgZ3Vlc3MgYXMgdG8gd2hpY2ggUENIIGlzIHJlYWxseSB0aGVyZS4K PiAgCSAqLwo+ICAKPiAtCWlmIChJU19HRU41KGRldl9wcml2KSkKPiArCWlmIChHVF9HRU4oZGV2 X3ByaXYsIDUpKQo+ICAJCWlkID0gSU5URUxfUENIX0lCWF9ERVZJQ0VfSURfVFlQRTsKPiAtCWVs c2UgaWYgKElTX0dFTjYoZGV2X3ByaXYpIHx8IElTX0lWWUJSSURHRShkZXZfcHJpdikpCj4gKwll bHNlIGlmIChHVF9HRU4oZGV2X3ByaXYsIDYpIHx8IElTX0lWWUJSSURHRShkZXZfcHJpdikpCj4g IAkJaWQgPSBJTlRFTF9QQ0hfQ1BUX0RFVklDRV9JRF9UWVBFOwo+ICAJZWxzZSBpZiAoSVNfSFNX X1VMVChkZXZfcHJpdikgfHwgSVNfQkRXX1VMVChkZXZfcHJpdikpCj4gIAkJaWQgPSBJTlRFTF9Q Q0hfTFBUX0xQX0RFVklDRV9JRF9UWVBFOwo+IEBAIC05NTUsNyArOTU1LDcgQEAgc3RhdGljIGlu dCBpOTE1X21taW9fc2V0dXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJ aW50IG1taW9fYmFyOwo+ICAJaW50IG1taW9fc2l6ZTsKPiAgCj4gLQltbWlvX2JhciA9IElTX0dF TjIoZGV2X3ByaXYpID8gMSA6IDA7Cj4gKwltbWlvX2JhciA9IEdUX0dFTihkZXZfcHJpdiwgMikg PyAxIDogMDsKPiAgCS8qCj4gIAkgKiBCZWZvcmUgZ2VuNCwgdGhlIHJlZ2lzdGVycyBhbmQgdGhl IEdUVCBhcmUgYmVoaW5kIGRpZmZlcmVudCBCQVJzLgo+ICAJICogSG93ZXZlciwgZnJvbSBnZW40 IG9ud2FyZHMsIHRoZSByZWdpc3RlcnMgYW5kIHRoZSBHVFQgYXJlIHNoYXJlZAo+IEBAIC0xMzMw LDcgKzEzMzAsNyBAQCBpbnRlbF9nZXRfZHJhbV9pbmZvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiAgCS8qIE5lZWQgdG8gY2FsY3VsYXRlIGJhbmR3aWR0aCBvbmx5IGZvciBH ZW45ICovCj4gIAlpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpCj4gIAkJcmV0ID0gYnh0X2dldF9k cmFtX2luZm8oZGV2X3ByaXYpOwo+IC0JZWxzZSBpZiAoSVNfR0VOOShkZXZfcHJpdikpCj4gKwll bHNlIGlmIChHVF9HRU4oZGV2X3ByaXYsIDkpKQo+ICAJCXJldCA9IHNrbF9nZXRfZHJhbV9pbmZv KGRldl9wcml2KTsKPiAgCWVsc2UKPiAgCQlyZXQgPSBza2xfZHJhbV9nZXRfY2hhbm5lbHNfaW5m byhkZXZfcHJpdik7Cj4gQEAgLTE0MTEsNyArMTQxMSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9kcml2 ZXJfaW5pdF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlwY2lfc2V0 X21hc3RlcihwZGV2KTsKPiAgCj4gIAkvKiBvdmVybGF5IG9uIGdlbjIgaXMgYnJva2VuIGFuZCBj YW4ndCBhZGRyZXNzIGFib3ZlIDFHICovCj4gLQlpZiAoSVNfR0VOMihkZXZfcHJpdikpIHsKPiAr CWlmIChHVF9HRU4oZGV2X3ByaXYsIDIpKSB7Cj4gIAkJcmV0ID0gZG1hX3NldF9jb2hlcmVudF9t YXNrKCZwZGV2LT5kZXYsIERNQV9CSVRfTUFTSygzMCkpOwo+ICAJCWlmIChyZXQpIHsKPiAgCQkJ RFJNX0VSUk9SKCJmYWlsZWQgdG8gc2V0IERNQSBtYXNrXG4iKTsKPiBAQCAtMTU0OCw3ICsxNTQ4 LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+ICAJCWFjcGlfdmlkZW9fcmVnaXN0ZXIoKTsKPiAgCX0KPiAgCj4g LQlpZiAoSVNfR0VONShkZXZfcHJpdikpCj4gKwlpZiAoR1RfR0VOKGRldl9wcml2LCA1KSkKPiAg CQlpbnRlbF9ncHVfaXBzX2luaXQoZGV2X3ByaXYpOwo+ICAKPiAgCWludGVsX2F1ZGlvX2luaXQo ZGV2X3ByaXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IGU0NzQ5ZTkzYTFmOS4u ZjExYWFkNWNkN2ZiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTIzNzcsNiAr MjM3NywxMCBAQCBpbnRlbF9pbmZvKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiAgI2RlZmluZSBHVF9HRU5fUkFOR0UoZGV2X3ByaXYsIHMsIGUpIFwKPiAgCSghISgo ZGV2X3ByaXYpLT5pbmZvLmdlbl9tYXNrICYgSU5URUxfR0VOX01BU0soKHMpLCAoZSkpKSkKPiAg Cj4gKyNkZWZpbmUgR1RfR0VOKGRldl9wcml2LCBuKSBcCj4gKwkoQlVJTERfQlVHX09OX1pFUk8o IV9fYnVpbHRpbl9jb25zdGFudF9wKG4pKSArIFwKPiArCSghISgoZGV2X3ByaXYpLT5pbmZvLmdl bl9tYXNrICYgQklUKChuKSAtIDEpKSkpCj4gKwo+ICAvKgo+ICAgKiBSZXR1cm4gdHJ1ZSBpZiBy ZXZpc2lvbiBpcyBpbiByYW5nZSBbc2luY2UsdW50aWxdIGluY2x1c2l2ZS4KPiAgICoKPiBAQCAt MjUyOCwyNiArMjUzMiw5IEBAIGludGVsX2luZm8oY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQo+ICAjZGVmaW5lIElTX0lDTF9SRVZJRChwLCBzaW5jZSwgdW50aWwpIFwK PiAgCShJU19JQ0VMQUtFKHApICYmIElTX1JFVklEKHAsIHNpbmNlLCB1bnRpbCkpCj4gIAo+IC0v Kgo+IC0gKiBUaGUgZ2VuWCBkZXNpZ25hdGlvbiB0eXBpY2FsbHkgcmVmZXJzIHRvIHRoZSByZW5k ZXIgZW5naW5lLCBzbyByZW5kZXIKPiAtICogY2FwYWJpbGl0eSByZWxhdGVkIGNoZWNrcyBzaG91 bGQgdXNlIElTX0dFTiwgd2hpbGUgZGlzcGxheSBhbmQgb3RoZXIgY2hlY2tzCj4gLSAqIGhhdmUg dGhlaXIgb3duIChlLmcuIEhBU19QQ0hfU1BMSVQgZm9yIElMSysgZGlzcGxheSwgSVNfZm9vIGZv ciBwYXJ0aWN1bGFyCj4gLSAqIGNoaXBzLCBldGMuKS4KPiAtICovCj4gLSNkZWZpbmUgSVNfR0VO MihkZXZfcHJpdikJKCEhKChkZXZfcHJpdiktPmluZm8uZ2VuX21hc2sgJiBCSVQoMSkpKQo+IC0j ZGVmaW5lIElTX0dFTjMoZGV2X3ByaXYpCSghISgoZGV2X3ByaXYpLT5pbmZvLmdlbl9tYXNrICYg QklUKDIpKSkKPiAtI2RlZmluZSBJU19HRU40KGRldl9wcml2KQkoISEoKGRldl9wcml2KS0+aW5m by5nZW5fbWFzayAmIEJJVCgzKSkpCj4gLSNkZWZpbmUgSVNfR0VONShkZXZfcHJpdikJKCEhKChk ZXZfcHJpdiktPmluZm8uZ2VuX21hc2sgJiBCSVQoNCkpKQo+IC0jZGVmaW5lIElTX0dFTjYoZGV2 X3ByaXYpCSghISgoZGV2X3ByaXYpLT5pbmZvLmdlbl9tYXNrICYgQklUKDUpKSkKPiAtI2RlZmlu ZSBJU19HRU43KGRldl9wcml2KQkoISEoKGRldl9wcml2KS0+aW5mby5nZW5fbWFzayAmIEJJVCg2 KSkpCj4gLSNkZWZpbmUgSVNfR0VOOChkZXZfcHJpdikJKCEhKChkZXZfcHJpdiktPmluZm8uZ2Vu X21hc2sgJiBCSVQoNykpKQo+IC0jZGVmaW5lIElTX0dFTjkoZGV2X3ByaXYpCSghISgoZGV2X3By aXYpLT5pbmZvLmdlbl9tYXNrICYgQklUKDgpKSkKPiAtI2RlZmluZSBJU19HRU4xMChkZXZfcHJp dikJKCEhKChkZXZfcHJpdiktPmluZm8uZ2VuX21hc2sgJiBCSVQoOSkpKQo+IC0jZGVmaW5lIElT X0dFTjExKGRldl9wcml2KQkoISEoKGRldl9wcml2KS0+aW5mby5nZW5fbWFzayAmIEJJVCgxMCkp KQo+IC0KPiAgI2RlZmluZSBJU19MUChkZXZfcHJpdikJKElOVEVMX0lORk8oZGV2X3ByaXYpLT5p c19scCkKPiAtI2RlZmluZSBJU19HRU45X0xQKGRldl9wcml2KQkoSVNfR0VOOShkZXZfcHJpdikg JiYgSVNfTFAoZGV2X3ByaXYpKQo+IC0jZGVmaW5lIElTX0dFTjlfQkMoZGV2X3ByaXYpCShJU19H RU45KGRldl9wcml2KSAmJiAhSVNfTFAoZGV2X3ByaXYpKQo+ICsjZGVmaW5lIElTX0dFTjlfTFAo ZGV2X3ByaXYpCShHVF9HRU4oZGV2X3ByaXYsIDkpICYmIElTX0xQKGRldl9wcml2KSkKPiArI2Rl ZmluZSBJU19HRU45X0JDKGRldl9wcml2KQkoR1RfR0VOKGRldl9wcml2LCA5KSAmJiAhSVNfTFAo ZGV2X3ByaXYpKQo+ICAKPiAgI2RlZmluZSBFTkdJTkVfTUFTSyhpZCkJQklUKGlkKQo+ICAjZGVm aW5lIFJFTkRFUl9SSU5HCUVOR0lORV9NQVNLKFJDUykKPiBAQCAtMjU2OCw3ICsyNTU1LDcgQEAg aW50ZWxfaW5mbyhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICNk ZWZpbmUgSEFTX0JMVChkZXZfcHJpdikJSEFTX0VOR0lORShkZXZfcHJpdiwgQkNTKQo+ICAjZGVm aW5lIEhBU19WRUJPWChkZXZfcHJpdikJSEFTX0VOR0lORShkZXZfcHJpdiwgVkVDUykKPiAgCj4g LSNkZWZpbmUgSEFTX0xFR0FDWV9TRU1BUEhPUkVTKGRldl9wcml2KSBJU19HRU43KGRldl9wcml2 KQo+ICsjZGVmaW5lIEhBU19MRUdBQ1lfU0VNQVBIT1JFUyhkZXZfcHJpdikgR1RfR0VOKGRldl9w cml2LCA3KQo+ICAKPiAgI2RlZmluZSBIQVNfTExDKGRldl9wcml2KQkoKGRldl9wcml2KS0+aW5m by5oYXNfbGxjKQo+ICAjZGVmaW5lIEhBU19TTk9PUChkZXZfcHJpdikJKChkZXZfcHJpdiktPmlu Zm8uaGFzX3Nub29wKQo+IEBAIC0yNjIwLDcgKzI2MDcsNyBAQCBpbnRlbF9pbmZvKGNvbnN0IHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgLyogV2l0aCB0aGUgOTQ1IGFuZCBs YXRlciwgWSB0aWxpbmcgZ290IGFkanVzdGVkIHNvIHRoYXQgaXQgd2FzIDMyIDEyOC1ieXRlCj4g ICAqIHJvd3MsIHdoaWNoIGNoYW5nZWQgdGhlIGFsaWdubWVudCByZXF1aXJlbWVudHMgYW5kIGZl bmNlIHByb2dyYW1taW5nLgo+ICAgKi8KPiAtI2RlZmluZSBIQVNfMTI4X0JZVEVfWV9USUxJTkco ZGV2X3ByaXYpICghSVNfR0VOMihkZXZfcHJpdikgJiYgXAo+ICsjZGVmaW5lIEhBU18xMjhfQllU RV9ZX1RJTElORyhkZXZfcHJpdikgKCFHVF9HRU4oZGV2X3ByaXYsIDIpICYmIFwKPiAgCQkJCQkg IShJU19JOTE1RyhkZXZfcHJpdikgfHwgXAo+ICAJCQkJCSBJU19JOTE1R00oZGV2X3ByaXYpKSkK PiAgI2RlZmluZSBTVVBQT1JUU19UVihkZXZfcHJpdikJCSgoZGV2X3ByaXYpLT5pbmZvLnN1cHBv cnRzX3R2KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IGluZGV4IGExMjAxMTJkMDYyMS4uZDUw OTU1ZjdmZTNmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gQEAgLTUyMjMsMTUgKzUy MjMsMTUgQEAgdm9pZCBpOTE1X2dlbV9pbml0X3N3aXp6bGluZyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gIAlJOTE1X1dSSVRFKERJU1BfQVJCX0NUTCwgSTkxNV9SRUFEKERJ U1BfQVJCX0NUTCkgfAo+ICAJCQkJIERJU1BfVElMRV9TVVJGQUNFX1NXSVpaTElORyk7Cj4gIAo+ IC0JaWYgKElTX0dFTjUoZGV2X3ByaXYpKQo+ICsJaWYgKEdUX0dFTihkZXZfcHJpdiwgNSkpCj4g IAkJcmV0dXJuOwo+ICAKPiAgCUk5MTVfV1JJVEUoVElMRUNUTCwgSTkxNV9SRUFEKFRJTEVDVEwp IHwgVElMRUNUTF9TV1pDVEwpOwo+IC0JaWYgKElTX0dFTjYoZGV2X3ByaXYpKQo+ICsJaWYgKEdU X0dFTihkZXZfcHJpdiwgNikpCj4gIAkJSTkxNV9XUklURShBUkJfTU9ERSwgX01BU0tFRF9CSVRf RU5BQkxFKEFSQl9NT0RFX1NXSVpaTEVfU05CKSk7Cj4gLQllbHNlIGlmIChJU19HRU43KGRldl9w cml2KSkKPiArCWVsc2UgaWYgKEdUX0dFTihkZXZfcHJpdiwgNykpCj4gIAkJSTkxNV9XUklURShB UkJfTU9ERSwgX01BU0tFRF9CSVRfRU5BQkxFKEFSQl9NT0RFX1NXSVpaTEVfSVZCKSk7Cj4gLQll bHNlIGlmIChJU19HRU44KGRldl9wcml2KSkKPiArCWVsc2UgaWYgKEdUX0dFTihkZXZfcHJpdiwg OCkpCj4gIAkJSTkxNV9XUklURShHQU1UQVJCTU9ERSwgX01BU0tFRF9CSVRfRU5BQkxFKEFSQl9N T0RFX1NXSVpaTEVfQkRXKSk7Cj4gIAllbHNlCj4gIAkJQlVHKCk7Cj4gQEAgLTUyNTMsMTAgKzUy NTMsMTAgQEAgc3RhdGljIHZvaWQgaW5pdF91bnVzZWRfcmluZ3Moc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+ICAJCWluaXRfdW51c2VkX3JpbmcoZGV2X3ByaXYsIFNSQjFfQkFT RSk7Cj4gIAkJaW5pdF91bnVzZWRfcmluZyhkZXZfcHJpdiwgU1JCMl9CQVNFKTsKPiAgCQlpbml0 X3VudXNlZF9yaW5nKGRldl9wcml2LCBTUkIzX0JBU0UpOwo+IC0JfSBlbHNlIGlmIChJU19HRU4y KGRldl9wcml2KSkgewo+ICsJfSBlbHNlIGlmIChHVF9HRU4oZGV2X3ByaXYsIDIpKSB7Cj4gIAkJ aW5pdF91bnVzZWRfcmluZyhkZXZfcHJpdiwgU1JCMF9CQVNFKTsKPiAgCQlpbml0X3VudXNlZF9y aW5nKGRldl9wcml2LCBTUkIxX0JBU0UpOwo+IC0JfSBlbHNlIGlmIChJU19HRU4zKGRldl9wcml2 KSkgewo+ICsJfSBlbHNlIGlmIChHVF9HRU4oZGV2X3ByaXYsIDMpKSB7Cj4gIAkJaW5pdF91bnVz ZWRfcmluZyhkZXZfcHJpdiwgUFJCMV9CQVNFKTsKPiAgCQlpbml0X3VudXNlZF9yaW5nKGRldl9w cml2LCBQUkIyX0JBU0UpOwo+ICAJfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250 ZXh0LmMKPiBpbmRleCBiOTc5NjNkYjAyODcuLjAzMWEyYTM1OGYxOSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiBAQCAtMzExLDcgKzMxMSw3IEBAIHN0YXRp YyB1MzIgZGVmYXVsdF9kZXNjX3RlbXBsYXRlKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1LAo+ICAJCWFkZHJlc3NfbW9kZSA9IElOVEVMX0xFR0FDWV82NEJfQ09OVEVYVDsKPiAg CWRlc2MgfD0gYWRkcmVzc19tb2RlIDw8IEdFTjhfQ1RYX0FERFJFU1NJTkdfTU9ERV9TSElGVDsK PiAgCj4gLQlpZiAoSVNfR0VOOChpOTE1KSkKPiArCWlmIChHVF9HRU4oaTkxNSwgOCkpCj4gIAkJ ZGVzYyB8PSBHRU44X0NUWF9MM0xMQ19DT0hFUkVOVDsKPiAgCj4gIAkvKiBUT0RPOiBXYURpc2Fi bGVMaXRlUmVzdG9yZSB3aGVuIHdlIHN0YXJ0IHVzaW5nIHNlbWFwaG9yZQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiBpbmRleCAxYTFjMDRkYjZjODAuLmYx ZGY0MTE0MzA1YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9l eGVjYnVmZmVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVm ZmVyLmMKPiBAQCAtMTM4MCw3ICsxMzgwLDcgQEAgZWJfcmVsb2NhdGVfZW50cnkoc3RydWN0IGk5 MTVfZXhlY2J1ZmZlciAqZWIsCj4gIAkJICogYmF0Y2hidWZmZXJzLgo+ICAJCSAqLwo+ICAJCWlm IChyZWxvYy0+d3JpdGVfZG9tYWluID09IEk5MTVfR0VNX0RPTUFJTl9JTlNUUlVDVElPTiAmJgo+ IC0JCSAgICBJU19HRU42KGViLT5pOTE1KSkgewo+ICsJCSAgICBHVF9HRU4oZWItPmk5MTUsIDYp KSB7Cj4gIAkJCWVyciA9IGk5MTVfdm1hX2JpbmQodGFyZ2V0LCB0YXJnZXQtPm9iai0+Y2FjaGVf bGV2ZWwsCj4gIAkJCQkJICAgIFBJTl9HTE9CQUwpOwo+ICAJCQlpZiAoV0FSTl9PTkNFKGVyciwK PiBAQCAtMTg5Myw3ICsxODkzLDcgQEAgc3RhdGljIGludCBpOTE1X3Jlc2V0X2dlbjdfc29sX29m ZnNldHMoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gIAl1MzIgKmNzOwo+ICAJaW50IGk7Cj4g IAo+IC0JaWYgKCFJU19HRU43KHJxLT5pOTE1KSB8fCBycS0+ZW5naW5lLT5pZCAhPSBSQ1MpIHsK PiArCWlmICghR1RfR0VOKHJxLT5pOTE1LCA3KSB8fCBycS0+ZW5naW5lLT5pZCAhPSBSQ1MpIHsK PiAgCQlEUk1fREVCVUcoInNvbCByZXNldCBpcyBnZW43L3JjcyBvbmx5XG4iKTsKPiAgCQlyZXR1 cm4gLUVJTlZBTDsKPiAgCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZmVuY2VfcmVnLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZV9y ZWcuYwo+IGluZGV4IGQ1NDhhYzA1Y2NkNy4uY2FhZmJmN2U2MmE0IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlX3JlZy5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2VfcmVnLmMKPiBAQCAtMTkzLDkgKzE5Myw5IEBAIHN0 YXRpYyB2b2lkIGZlbmNlX3dyaXRlKHN0cnVjdCBkcm1faTkxNV9mZW5jZV9yZWcgKmZlbmNlLAo+ ICAJICogYW5kIGV4cGxpY2l0bHkgbWFuYWdlZCBmb3IgaW50ZXJuYWwgdXNlcnMuCj4gIAkgKi8K PiAgCj4gLQlpZiAoSVNfR0VOMihmZW5jZS0+aTkxNSkpCj4gKwlpZiAoR1RfR0VOKGZlbmNlLT5p OTE1LCAyKSkKPiAgCQlpODMwX3dyaXRlX2ZlbmNlX3JlZyhmZW5jZSwgdm1hKTsKPiAtCWVsc2Ug aWYgKElTX0dFTjMoZmVuY2UtPmk5MTUpKQo+ICsJZWxzZSBpZiAoR1RfR0VOKGZlbmNlLT5pOTE1 LCAzKSkKPiAgCQlpOTE1X3dyaXRlX2ZlbmNlX3JlZyhmZW5jZSwgdm1hKTsKPiAgCWVsc2UKPiAg CQlpOTY1X3dyaXRlX2ZlbmNlX3JlZyhmZW5jZSwgdm1hKTsKPiBAQCAtNTk2LDEzICs1OTYsMTMg QEAgaTkxNV9nZW1fZGV0ZWN0X2JpdF82X3N3aXp6bGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICAJCQkJc3dpenpsZV95ID0gSTkxNV9CSVRfNl9TV0laWkxFX05PTkU7Cj4g IAkJCX0KPiAgCQl9Cj4gLQl9IGVsc2UgaWYgKElTX0dFTjUoZGV2X3ByaXYpKSB7Cj4gKwl9IGVs c2UgaWYgKEdUX0dFTihkZXZfcHJpdiwgNSkpIHsKPiAgCQkvKiBPbiBJcm9ubGFrZSB3aGF0ZXZl ciBEUkFNIGNvbmZpZywgR1BVIGFsd2F5cyBkbwo+ICAJCSAqIHNhbWUgc3dpenpsaW5nIHNldHVw Lgo+ICAJCSAqLwo+ICAJCXN3aXp6bGVfeCA9IEk5MTVfQklUXzZfU1dJWlpMRV85XzEwOwo+ICAJ CXN3aXp6bGVfeSA9IEk5MTVfQklUXzZfU1dJWlpMRV85Owo+IC0JfSBlbHNlIGlmIChJU19HRU4y KGRldl9wcml2KSkgewo+ICsJfSBlbHNlIGlmIChHVF9HRU4oZGV2X3ByaXYsIDIpKSB7Cj4gIAkJ LyogQXMgZmFyIGFzIHdlIGtub3csIHRoZSA4NjUgZG9lc24ndCBoYXZlIHRoZXNlIGJpdCA2Cj4g IAkJICogc3dpenpsaW5nIGlzc3Vlcy4KPiAgCQkgKi8KPiBAQCAtNjQ3LDcgKzY0Nyw3IEBAIGk5 MTVfZ2VtX2RldGVjdF9iaXRfNl9zd2l6emxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiAgCQl9Cj4gIAo+ICAJCS8qIGNoZWNrIGZvciBMLXNoYXBlZCBtZW1vcnkgYWthIG1v ZGlmaWVkIGVuaGFuY2VkIGFkZHJlc3NpbmcgKi8KPiAtCQlpZiAoSVNfR0VONChkZXZfcHJpdikg JiYKPiArCQlpZiAoR1RfR0VOKGRldl9wcml2LCA0KSAmJgo+ICAJCSAgICAhKEk5MTVfUkVBRChE Q0MyKSAmIERDQzJfTU9ESUZJRURfRU5IQU5DRURfRElTQUJMRSkpIHsKPiAgCQkJc3dpenpsZV94 ID0gSTkxNV9CSVRfNl9TV0laWkxFX1VOS05PV047Cj4gIAkJCXN3aXp6bGVfeSA9IEk5MTVfQklU XzZfU1dJWlpMRV9VTktOT1dOOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gaW5k ZXggYTk4YzI5MTQ3ZDVlLi4xNzIzZjM3NGM1YTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ndHQuYwo+IEBAIC0yMTk1LDkgKzIxOTUsOSBAQCBpbnQgaTkxNV9wcGd0dF9pbml0X2h3 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICAJZ3R0X3dyaXRlX3dv cmthcm91bmRzKGRldl9wcml2KTsKPiAgCj4gLQlpZiAoSVNfR0VONihkZXZfcHJpdikpCj4gKwlp ZiAoR1RfR0VOKGRldl9wcml2LCA2KSkKPiAgCQlnZW42X3BwZ3R0X2VuYWJsZShkZXZfcHJpdik7 Cj4gLQllbHNlIGlmIChJU19HRU43KGRldl9wcml2KSkKPiArCWVsc2UgaWYgKEdUX0dFTihkZXZf cHJpdiwgNykpCj4gIAkJZ2VuN19wcGd0dF9lbmFibGUoZGV2X3ByaXYpOwo+ICAKPiAgCXJldHVy biAwOwo+IEBAIC0yMjc5LDcgKzIyNzksNyBAQCBzdGF0aWMgYm9vbCBuZWVkc19pZGxlX21hcHMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJLyogUXVlcnkgaW50ZWxfaW9t bXUgdG8gc2VlIGlmIHdlIG5lZWQgdGhlIHdvcmthcm91bmQuIFByZXN1bWFibHkgdGhhdAo+ICAJ ICogd2FzIGxvYWRlZCBmaXJzdC4KPiAgCSAqLwo+IC0JcmV0dXJuIElTX0dFTjUoZGV2X3ByaXYp ICYmIElTX01PQklMRShkZXZfcHJpdikgJiYgaW50ZWxfdnRkX2FjdGl2ZSgpOwo+ICsJcmV0dXJu IEdUX0dFTihkZXZfcHJpdiwgNSkgJiYgSVNfTU9CSUxFKGRldl9wcml2KSAmJiBpbnRlbF92dGRf YWN0aXZlKCk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGdlbjZfY2hlY2tfZmF1bHRzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9zdG9sZW4uYwo+IGluZGV4IGYyOWE3ZmY3YzM2Mi4uZDAxZGVhODRmZmFlIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMKPiBAQCAtMTAyLDcgKzEwMiw3IEBAIHN0 YXRpYyBpbnQgaTkxNV9hZGp1c3Rfc3RvbGVuKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiAgCQlyZXNvdXJjZV9zaXplX3QgZ2d0dF9zdGFydDsKPiAgCj4gIAkJZ2d0dF9zdGFy dCA9IEk5MTVfUkVBRChQR1RCTF9DVEwpOwo+IC0JCWlmIChJU19HRU40KGRldl9wcml2KSkKPiAr CQlpZiAoR1RfR0VOKGRldl9wcml2LCA0KSkKPiAgCQkJZ2d0dF9zdGFydCA9IChnZ3R0X3N0YXJ0 ICYgUEdUQkxfQUREUkVTU19MT19NQVNLKSB8Cj4gIAkJCQkgICAgIChnZ3R0X3N0YXJ0ICYgUEdU QkxfQUREUkVTU19ISV9NQVNLKSA8PCAyODsKPiAgCQllbHNlCj4gQEAgLTE1Niw3ICsxNTYsNyBA QCBzdGF0aWMgaW50IGk5MTVfYWRqdXN0X3N0b2xlbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gIAkJICogR0VOMyBmaXJtd2FyZSBsaWtlcyB0byBzbWFzaCBwY2kgYnJpZGdl cyBpbnRvIHRoZSBzdG9sZW4KPiAgCQkgKiByYW5nZS4gQXBwYXJlbnRseSB0aGlzIHdvcmtzLgo+ ICAJCSAqLwo+IC0JCWlmIChyID09IE5VTEwgJiYgIUlTX0dFTjMoZGV2X3ByaXYpKSB7Cj4gKwkJ aWYgKHIgPT0gTlVMTCAmJiAhR1RfR0VOKGRldl9wcml2LCAzKSkgewo+ICAJCQlEUk1fRVJST1Io ImNvbmZsaWN0IGRldGVjdGVkIHdpdGggc3RvbGVuIHJlZ2lvbjogJXBSXG4iLAo+ICAJCQkJICBk c20pOwo+ICAKPiBAQCAtMTk0LDcgKzE5NCw4IEBAIHN0YXRpYyB2b2lkIGc0eF9nZXRfc3RvbGVu X3Jlc2VydmVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCSAqIFdoZXRo ZXIgSUxLIHJlYWxseSByZXVzZXMgdGhlIEVMSyByZWdpc3RlciBmb3IgdGhpcyBpcyB1bmNsZWFy Lgo+ICAJICogTGV0J3Mgc2VlIGlmIHdlIGNhdGNoIGFueW9uZSB3aXRoIHRoaXMgc3VwcG9zZWRs eSBlbmFibGVkIG9uIElMSy4KPiAgCSAqLwo+IC0JV0FSTihJU19HRU41KGRldl9wcml2KSwgIklM SyBzdG9sZW4gcmVzZXJ2ZWQgZm91bmQ/IDB4JTA4eFxuIiwgcmVnX3ZhbCk7Cj4gKwlXQVJOKEdU X0dFTihkZXZfcHJpdiwgNSksICJJTEsgc3RvbGVuIHJlc2VydmVkIGZvdW5kPyAweCUwOHhcbiIs Cj4gKwkgICAgIHJlZ192YWwpOwo+ICAKPiAgCWlmICghKHJlZ192YWwgJiBHNFhfU1RPTEVOX1JF U0VSVkVEX0FERFIyX01BU0spKQo+ICAJCXJldHVybjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV90aWxpbmcuYwo+IGluZGV4IGQ5ZGM5ZGY1MjNiNS4uOGExOTc2YzUyM2IwIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbGluZy5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMKPiBAQCAtODcsNyArODcsNyBAQCB1 MzIgaTkxNV9nZW1fZmVuY2Vfc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAg CX0KPiAgCj4gIAkvKiBQcmV2aW91cyBjaGlwcyBuZWVkIGEgcG93ZXItb2YtdHdvIGZlbmNlIHJl Z2lvbiB3aGVuIHRpbGluZyAqLwo+IC0JaWYgKElTX0dFTjMoaTkxNSkpCj4gKwlpZiAoR1RfR0VO KGk5MTUsIDMpKQo+ICAJCWdndHRfc2l6ZSA9IDEwMjQqMTAyNDsKPiAgCWVsc2UKPiAgCQlnZ3R0 X3NpemUgPSA1MTIqMTAyNDsKPiBAQCAtMTYyLDcgKzE2Miw3IEBAIGk5MTVfdGlsaW5nX29rKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gIAkJCXJldHVybiBmYWxzZTsKPiAgCX0K PiAgCj4gLQlpZiAoSVNfR0VOMihpOTE1KSB8fAo+ICsJaWYgKEdUX0dFTihpOTE1LCAyKSB8fAo+ ICAJICAgICh0aWxpbmcgPT0gSTkxNV9USUxJTkdfWSAmJiBIQVNfMTI4X0JZVEVfWV9USUxJTkco aTkxNSkpKQo+ICAJCXRpbGVfd2lkdGggPSAxMjg7Cj4gIAllbHNlCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dwdV9lcnJvci5jCj4gaW5kZXggYzhkOGY3OTY4OGE4Li5jN2I0OTJiNmNmNGUgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKPiBAQCAtNzIwLDcgKzcyMCw3 IEBAIGludCBpOTE1X2Vycm9yX3N0YXRlX3RvX3N0cihzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3Rh dGVfYnVmICptLAo+ICAJCWVycl9wcmludGYobSwgIkRPTkVfUkVHOiAweCUwOHhcbiIsIGVycm9y LT5kb25lX3JlZyk7Cj4gIAl9Cj4gIAo+IC0JaWYgKElTX0dFTjcoZGV2X3ByaXYpKQo+ICsJaWYg KEdUX0dFTihkZXZfcHJpdiwgNykpCj4gIAkJZXJyX3ByaW50ZihtLCAiRVJSX0lOVDogMHglMDh4 XG4iLCBlcnJvci0+ZXJyX2ludCk7Cj4gIAo+ICAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUo ZXJyb3ItPmVuZ2luZSk7IGkrKykgewo+IEBAIC0xMjM0LDcgKzEyMzQsNyBAQCBzdGF0aWMgdm9p ZCBlcnJvcl9yZWNvcmRfZW5naW5lX3JlZ2lzdGVycyhzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKmVy cm9yLAo+ICAJaWYgKCFIV1NfTkVFRFNfUEhZU0lDQUwoZGV2X3ByaXYpKSB7Cj4gIAkJaTkxNV9y ZWdfdCBtbWlvOwo+ICAKPiAtCQlpZiAoSVNfR0VONyhkZXZfcHJpdikpIHsKPiArCQlpZiAoR1Rf R0VOKGRldl9wcml2LCA3KSkgewo+ICAJCQlzd2l0Y2ggKGVuZ2luZS0+aWQpIHsKPiAgCQkJZGVm YXVsdDoKPiAgCQkJY2FzZSBSQ1M6Cj4gQEAgLTEyNTAsNyArMTI1MCw3IEBAIHN0YXRpYyB2b2lk IGVycm9yX3JlY29yZF9lbmdpbmVfcmVnaXN0ZXJzKHN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAqZXJy b3IsCj4gIAkJCQltbWlvID0gVkVCT1hfSFdTX1BHQV9HRU43Owo+ICAJCQkJYnJlYWs7Cj4gIAkJ CX0KPiAtCQl9IGVsc2UgaWYgKElTX0dFTjYoZW5naW5lLT5pOTE1KSkgewo+ICsJCX0gZWxzZSBp ZiAoR1RfR0VOKGVuZ2luZS0+aTkxNSwgNikpIHsKPiAgCQkJbW1pbyA9IFJJTkdfSFdTX1BHQV9H RU42KGVuZ2luZS0+bW1pb19iYXNlKTsKPiAgCQl9IGVsc2Ugewo+ICAJCQkvKiBYWFg6IGdlbjgg cmV0dXJucyB0byBzYW5pdHkgKi8KPiBAQCAtMTI3MiwxMCArMTI3MiwxMCBAQCBzdGF0aWMgdm9p ZCBlcnJvcl9yZWNvcmRfZW5naW5lX3JlZ2lzdGVycyhzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKmVy cm9yLAo+ICAKPiAgCQllZS0+dm1faW5mby5nZnhfbW9kZSA9IEk5MTVfUkVBRChSSU5HX01PREVf R0VONyhlbmdpbmUpKTsKPiAgCj4gLQkJaWYgKElTX0dFTjYoZGV2X3ByaXYpKQo+ICsJCWlmIChH VF9HRU4oZGV2X3ByaXYsIDYpKQo+ICAJCQllZS0+dm1faW5mby5wcF9kaXJfYmFzZSA9Cj4gIAkJ CQlJOTE1X1JFQUQoUklOR19QUF9ESVJfQkFTRV9SRUFEKGVuZ2luZSkpOwo+IC0JCWVsc2UgaWYg KElTX0dFTjcoZGV2X3ByaXYpKQo+ICsJCWVsc2UgaWYgKEdUX0dFTihkZXZfcHJpdiwgNykpCj4g IAkJCWVlLT52bV9pbmZvLnBwX2Rpcl9iYXNlID0KPiAgCQkJCUk5MTVfUkVBRChSSU5HX1BQX0RJ Ul9CQVNFKGVuZ2luZSkpOwo+ICAJCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkK PiBAQCAtMTY0NSw3ICsxNjQ1LDcgQEAgc3RhdGljIHZvaWQgY2FwdHVyZV9yZWdfc3RhdGUoc3Ry dWN0IGk5MTVfZ3B1X3N0YXRlICplcnJvcikKPiAgCQllcnJvci0+Zm9yY2V3YWtlID0gSTkxNV9S RUFEX0ZXKEZPUkNFV0FLRV9WTFYpOwo+ICAJfQo+ICAKPiAtCWlmIChJU19HRU43KGRldl9wcml2 KSkKPiArCWlmIChHVF9HRU4oZGV2X3ByaXYsIDcpKQo+ICAJCWVycm9yLT5lcnJfaW50ID0gSTkx NV9SRUFEKEdFTjdfRVJSX0lOVCk7Cj4gIAo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g OCkgewo+IEBAIC0xNjUzLDcgKzE2NTMsNyBAQCBzdGF0aWMgdm9pZCBjYXB0dXJlX3JlZ19zdGF0 ZShzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKmVycm9yKQo+ICAJCWVycm9yLT5mYXVsdF9kYXRhMSA9 IEk5MTVfUkVBRChHRU44X0ZBVUxUX1RMQl9EQVRBMSk7Cj4gIAl9Cj4gIAo+IC0JaWYgKElTX0dF TjYoZGV2X3ByaXYpKSB7Cj4gKwlpZiAoR1RfR0VOKGRldl9wcml2LCA2KSkgewo+ICAJCWVycm9y LT5mb3JjZXdha2UgPSBJOTE1X1JFQURfRlcoRk9SQ0VXQUtFKTsKPiAgCQllcnJvci0+Z2FiX2N0 bCA9IEk5MTVfUkVBRChHQUJfQ1RMKTsKPiAgCQllcnJvci0+Z2Z4X21vZGUgPSBJOTE1X1JFQUQo R0ZYX01PREUpOwo+IEBAIC0xNjczLDcgKzE2NzMsNyBAQCBzdGF0aWMgdm9pZCBjYXB0dXJlX3Jl Z19zdGF0ZShzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKmVycm9yKQo+ICAJCWVycm9yLT5jY2lkID0g STkxNV9SRUFEKENDSUQpOwo+ICAKPiAgCS8qIDM6IEZlYXR1cmUgc3BlY2lmaWMgcmVnaXN0ZXJz ICovCj4gLQlpZiAoSVNfR0VONihkZXZfcHJpdikgfHwgSVNfR0VONyhkZXZfcHJpdikpIHsKPiAr CWlmIChHVF9HRU4oZGV2X3ByaXYsIDYpIHx8IEdUX0dFTihkZXZfcHJpdiwgNykpIHsKPiAgCQll cnJvci0+Z2FtX2Vjb2NoayA9IEk5MTVfUkVBRChHQU1fRUNPQ0hLKTsKPiAgCQllcnJvci0+Z2Fj X2VjbyA9IEk5MTVfUkVBRChHQUNfRUNPX0JJVFMpOwo+ICAJfQo+IEBAIC0xNjk3LDcgKzE2OTcs NyBAQCBzdGF0aWMgdm9pZCBjYXB0dXJlX3JlZ19zdGF0ZShzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUg KmVycm9yKQo+ICAJCWVycm9yLT5pZXIgPSBJOTE1X1JFQUQoREVJRVIpOwo+ICAJCWVycm9yLT5n dGllclswXSA9IEk5MTVfUkVBRChHVElFUik7Cj4gIAkJZXJyb3ItPm5ndGllciA9IDE7Cj4gLQl9 IGVsc2UgaWYgKElTX0dFTjIoZGV2X3ByaXYpKSB7Cj4gKwl9IGVsc2UgaWYgKEdUX0dFTihkZXZf cHJpdiwgMikpIHsKPiAgCQllcnJvci0+aWVyID0gSTkxNV9SRUFEMTYoSUVSKTsKPiAgCX0gZWxz ZSBpZiAoIUlTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKSB7Cj4gIAkJZXJyb3ItPmllciA9IEk5MTVf UkVBRChJRVIpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+IGluZGV4IDVkMWY1MzcyMzM4OC4u M2VkNTQ1YzJkNTA4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJx LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gQEAgLTk1MCw3ICs5 NTAsNyBAQCBzdGF0aWMgaW50IF9faW50ZWxfZ2V0X2NydGNfc2NhbmxpbmUoc3RydWN0IGludGVs X2NydGMgKmNydGMpCj4gIAlpZiAobW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFD RSkKPiAgCQl2dG90YWwgLz0gMjsKPiAgCj4gLQlpZiAoSVNfR0VOMihkZXZfcHJpdikpCj4gKwlp ZiAoR1RfR0VOKGRldl9wcml2LCAyKSkKPiAgCQlwb3NpdGlvbiA9IEk5MTVfUkVBRF9GVyhQSVBF RFNMKHBpcGUpKSAmIERTTF9MSU5FTUFTS19HRU4yOwo+ICAJZWxzZQo+ICAJCXBvc2l0aW9uID0g STkxNV9SRUFEX0ZXKFBJUEVEU0wocGlwZSkpICYgRFNMX0xJTkVNQVNLX0dFTjM7Cj4gQEAgLTEw MzAsNyArMTAzMCw3IEBAIHN0YXRpYyBib29sIGk5MTVfZ2V0X2NydGNfc2Nhbm91dHBvcyhzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSwKPiAgCWlmIChzdGltZSkKPiAg CQkqc3RpbWUgPSBrdGltZV9nZXQoKTsKPiAgCj4gLQlpZiAoSVNfR0VOMihkZXZfcHJpdikgfHwg SVNfRzRYKGRldl9wcml2KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpIHsKPiArCWlmIChH VF9HRU4oZGV2X3ByaXYsIDIpIHx8IElTX0c0WChkZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9w cml2KSA+PSA1KSB7Cj4gIAkJLyogTm8gb2J2aW91cyBwaXhlbGNvdW50IHJlZ2lzdGVyLiBPbmx5 IHF1ZXJ5IHZlcnRpY2FsCj4gIAkJICogc2Nhbm91dCBwb3NpdGlvbiBmcm9tIERpc3BsYXkgc2Nh biBsaW5lIHJlZ2lzdGVyLgo+ICAJCSAqLwo+IEBAIC0xMDkwLDcgKzEwOTAsNyBAQCBzdGF0aWMg Ym9vbCBpOTE1X2dldF9jcnRjX3NjYW5vdXRwb3Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5z aWduZWQgaW50IHBpcGUsCj4gIAllbHNlCj4gIAkJcG9zaXRpb24gKz0gdnRvdGFsIC0gdmJsX2Vu ZDsKPiAgCj4gLQlpZiAoSVNfR0VOMihkZXZfcHJpdikgfHwgSVNfRzRYKGRldl9wcml2KSB8fCBJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDUpIHsKPiArCWlmIChHVF9HRU4oZGV2X3ByaXYsIDIpIHx8 IElTX0c0WChkZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSA1KSB7Cj4gIAkJKnZw b3MgPSBwb3NpdGlvbjsKPiAgCQkqaHBvcyA9IDA7Cj4gIAl9IGVsc2Ugewo+IEBAIC0yNTQ3LDcg KzI1NDcsNyBAQCBzdGF0aWMgdm9pZCBpbGtfZGlzcGxheV9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJSTkxNV9XUklURShTREVJSVIsIHBjaF9paXIp Owo+ICAJfQo+ICAKPiAtCWlmIChJU19HRU41KGRldl9wcml2KSAmJiBkZV9paXIgJiBERV9QQ1Vf RVZFTlQpCj4gKwlpZiAoR1RfR0VOKGRldl9wcml2LCA1KSAmJiBkZV9paXIgJiBERV9QQ1VfRVZF TlQpCj4gIAkJaXJvbmxha2VfcnBzX2NoYW5nZV9pcnFfaGFuZGxlcihkZXZfcHJpdik7Cj4gIH0K PiAgCj4gQEAgLTMyNDMsNyArMzI0Myw3IEBAIHZvaWQgaTkxNV9jbGVhcl9lcnJvcl9yZWdpc3Rl cnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gIAl1MzIgZWlyOwo+ ICAKPiAtCWlmICghSVNfR0VOMihkZXZfcHJpdikpCj4gKwlpZiAoIUdUX0dFTihkZXZfcHJpdiwg MikpCj4gIAkJSTkxNV9XUklURShQR1RCTF9FUiwgSTkxNV9SRUFEKFBHVEJMX0VSKSk7Cj4gIAo+ ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA0KQo+IEBAIC0zNTg2LDExICszNTg2LDExIEBA IHN0YXRpYyB2b2lkIGlyb25sYWtlX2lycV9yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7 Cj4gIAo+IC0JaWYgKElTX0dFTjUoZGV2X3ByaXYpKQo+ICsJaWYgKEdUX0dFTihkZXZfcHJpdiwg NSkpCj4gIAkJSTkxNV9XUklURShIV1NUQU0sIDB4ZmZmZmZmZmYpOwo+ICAKPiAgCUdFTjNfSVJR X1JFU0VUKERFKTsKPiAtCWlmIChJU19HRU43KGRldl9wcml2KSkKPiArCWlmIChHVF9HRU4oZGV2 X3ByaXYsIDcpKQo+ICAJCUk5MTVfV1JJVEUoR0VON19FUlJfSU5ULCAweGZmZmZmZmZmKTsKPiAg Cj4gIAlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikpIHsKPiBAQCAtNDA0Miw3ICs0MDQyLDcgQEAg c3RhdGljIHZvaWQgZ2VuNV9ndF9pcnFfcG9zdGluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiAgCX0KPiAgCj4gIAlndF9pcnFzIHw9IEdUX1JFTkRFUl9VU0VSX0lOVEVSUlVQVDsKPiAt CWlmIChJU19HRU41KGRldl9wcml2KSkgewo+ICsJaWYgKEdUX0dFTihkZXZfcHJpdiwgNSkpIHsK PiAgCQlndF9pcnFzIHw9IElMS19CU0RfVVNFUl9JTlRFUlJVUFQ7Cj4gIAl9IGVsc2Ugewo+ICAJ CWd0X2lycXMgfD0gR1RfQkxUX1VTRVJfSU5URVJSVVBUIHwgR1RfQlNEX1VTRVJfSU5URVJSVVBU Owo+IEBAIC00ODMzLDcgKzQ4MzMsNyBAQCB2b2lkIGludGVsX2lycV9pbml0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgp Cj4gIAkJcnBzLT5wbV9pbnRybXNrX21ieiB8PSBHRU44X1BNSU5UUl9ESVNBQkxFX1JFRElSRUNU X1RPX0dVQzsKPiAgCj4gLQlpZiAoSVNfR0VOMihkZXZfcHJpdikpIHsKPiArCWlmIChHVF9HRU4o ZGV2X3ByaXYsIDIpKSB7Cj4gIAkJLyogR2VuMiBkb2Vzbid0IGhhdmUgYSBoYXJkd2FyZSBmcmFt ZSBjb3VudGVyICovCj4gIAkJZGV2LT5tYXhfdmJsYW5rX2NvdW50ID0gMDsKPiAgCX0gZWxzZSBp ZiAoSVNfRzRYKGRldl9wcml2KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpIHsKPiBAQCAt NDg0OSw3ICs0ODQ5LDcgQEAgdm9pZCBpbnRlbF9pcnFfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gIAkgKiBHZW4yIGRvZXNuJ3QgaGF2ZSBhIGhhcmR3YXJlIGZyYW1l IGNvdW50ZXIgYW5kIHNvIGRlcGVuZHMgb24KPiAgCSAqIHZibGFuayBpbnRlcnJ1cHRzIHRvIHBy b2R1Y2Ugc2FuZSB2Ymxhbmsgc2V1cXVlbmNlIG51bWJlcnMuCj4gIAkgKi8KPiAtCWlmICghSVNf R0VOMihkZXZfcHJpdikpCj4gKwlpZiAoIUdUX0dFTihkZXZfcHJpdiwgMikpCj4gIAkJZGV2LT52 YmxhbmtfZGlzYWJsZV9pbW1lZGlhdGUgPSB0cnVlOwo+ICAKPiAgCS8qIE1vc3QgcGxhdGZvcm1z IHRyZWF0IHRoZSBkaXNwbGF5IGlycSBibG9jayBhcyBhbiBhbHdheXMtb24KPiBAQCAtNDkxNCwx NCArNDkxNCwxNCBAQCB2b2lkIGludGVsX2lycV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiAgCQlkZXYtPmRyaXZlci0+ZGlzYWJsZV92YmxhbmsgPSBpcm9ubGFrZV9k aXNhYmxlX3ZibGFuazsKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5ocGRfaXJxX3NldHVwID0gaWxr X2hwZF9pcnFfc2V0dXA7Cj4gIAl9IGVsc2Ugewo+IC0JCWlmIChJU19HRU4yKGRldl9wcml2KSkg ewo+ICsJCWlmIChHVF9HRU4oZGV2X3ByaXYsIDIpKSB7Cj4gIAkJCWRldi0+ZHJpdmVyLT5pcnFf cHJlaW5zdGFsbCA9IGk4eHhfaXJxX3Jlc2V0Owo+ICAJCQlkZXYtPmRyaXZlci0+aXJxX3Bvc3Rp bnN0YWxsID0gaTh4eF9pcnFfcG9zdGluc3RhbGw7Cj4gIAkJCWRldi0+ZHJpdmVyLT5pcnFfaGFu ZGxlciA9IGk4eHhfaXJxX2hhbmRsZXI7Cj4gIAkJCWRldi0+ZHJpdmVyLT5pcnFfdW5pbnN0YWxs ID0gaTh4eF9pcnFfcmVzZXQ7Cj4gIAkJCWRldi0+ZHJpdmVyLT5lbmFibGVfdmJsYW5rID0gaTh4 eF9lbmFibGVfdmJsYW5rOwo+ICAJCQlkZXYtPmRyaXZlci0+ZGlzYWJsZV92YmxhbmsgPSBpOHh4 X2Rpc2FibGVfdmJsYW5rOwo+IC0JCX0gZWxzZSBpZiAoSVNfR0VOMyhkZXZfcHJpdikpIHsKPiAr CQl9IGVsc2UgaWYgKEdUX0dFTihkZXZfcHJpdiwgMykpIHsKPiAgCQkJZGV2LT5kcml2ZXItPmly cV9wcmVpbnN0YWxsID0gaTkxNV9pcnFfcmVzZXQ7Cj4gIAkJCWRldi0+ZHJpdmVyLT5pcnFfcG9z dGluc3RhbGwgPSBpOTE1X2lycV9wb3N0aW5zdGFsbDsKPiAgCQkJZGV2LT5kcml2ZXItPmlycV91 bmluc3RhbGwgPSBpOTE1X2lycV9yZXNldDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9wZXJmLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwo+IGlu ZGV4IGFjYzM1MDI0MDNiMy4uYWZiY2NjMTQ0YzY2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcGVyZi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9w ZXJmLmMKPiBAQCAtMzQ0OSw3ICszNDQ5LDcgQEAgdm9pZCBpOTE1X3BlcmZfaW5pdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLnJl YWQgPSBnZW44X29hX3JlYWQ7Cj4gIAkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLm9hX2h3X3RhaWxf cmVhZCA9IGdlbjhfb2FfaHdfdGFpbF9yZWFkOwo+ICAKPiAtCQlpZiAoSVNfR0VOOChkZXZfcHJp dikgfHwgSVNfR0VOOShkZXZfcHJpdikpIHsKPiArCQlpZiAoR1RfR0VOKGRldl9wcml2LCA4KSB8 fCBHVF9HRU4oZGV2X3ByaXYsIDkpKSB7Cj4gIAkJCWRldl9wcml2LT5wZXJmLm9hLm9wcy5pc192 YWxpZF9iX2NvdW50ZXJfcmVnID0KPiAgCQkJCWdlbjdfaXNfdmFsaWRfYl9jb3VudGVyX2FkZHI7 Cj4gIAkJCWRldl9wcml2LT5wZXJmLm9hLm9wcy5pc192YWxpZF9tdXhfcmVnID0KPiBAQCAtMzQ2 NSw3ICszNDY1LDcgQEAgdm9pZCBpOTE1X3BlcmZfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gIAkJCWRldl9wcml2LT5wZXJmLm9hLm9wcy5lbmFibGVfbWV0cmljX3Nl dCA9IGdlbjhfZW5hYmxlX21ldHJpY19zZXQ7Cj4gIAkJCWRldl9wcml2LT5wZXJmLm9hLm9wcy5k aXNhYmxlX21ldHJpY19zZXQgPSBnZW44X2Rpc2FibGVfbWV0cmljX3NldDsKPiAgCj4gLQkJCWlm IChJU19HRU44KGRldl9wcml2KSkgewo+ICsJCQlpZiAoR1RfR0VOKGRldl9wcml2LCA4KSkgewo+ ICAJCQkJZGV2X3ByaXYtPnBlcmYub2EuY3R4X29hY3R4Y3RybF9vZmZzZXQgPSAweDEyMDsKPiAg CQkJCWRldl9wcml2LT5wZXJmLm9hLmN0eF9mbGV4ZXUwX29mZnNldCA9IDB4MmNlOwo+ICAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zdXNwZW5kLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3N1c3BlbmQuYwo+IGluZGV4IDhmM2FhNGRjMGM5OC4uYjQ3Yjgy MmZhNmQ2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zdXNwZW5kLmMKPiBAQCAtNjUsNyAr NjUsNyBAQCBpbnQgaTkxNV9zYXZlX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiAgCj4gIAlpOTE1X3NhdmVfZGlzcGxheShkZXZfcHJpdik7Cj4gIAo+IC0JaWYgKElT X0dFTjQoZGV2X3ByaXYpKQo+ICsJaWYgKEdUX0dFTihkZXZfcHJpdiwgNCkpCj4gIAkJcGNpX3Jl YWRfY29uZmlnX3dvcmQocGRldiwgR0NER01CVVMsCj4gIAkJCQkgICAgICZkZXZfcHJpdi0+cmVn ZmlsZS5zYXZlR0NER01CVVMpOwo+ICAKPiBAQCAtNzcsMTQgKzc3LDE0IEBAIGludCBpOTE1X3Nh dmVfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJZGV2X3ByaXYt PnJlZ2ZpbGUuc2F2ZU1JX0FSQl9TVEFURSA9IEk5MTVfUkVBRChNSV9BUkJfU1RBVEUpOwo+ICAK PiAgCS8qIFNjcmF0Y2ggc3BhY2UgKi8KPiAtCWlmIChJU19HRU4yKGRldl9wcml2KSAmJiBJU19N T0JJTEUoZGV2X3ByaXYpKSB7Cj4gKwlpZiAoR1RfR0VOKGRldl9wcml2LCAyKSAmJiBJU19NT0JJ TEUoZGV2X3ByaXYpKSB7Cj4gIAkJZm9yIChpID0gMDsgaSA8IDc7IGkrKykgewo+ICAJCQlkZXZf cHJpdi0+cmVnZmlsZS5zYXZlU1dGMFtpXSA9IEk5MTVfUkVBRChTV0YwKGkpKTsKPiAgCQkJZGV2 X3ByaXYtPnJlZ2ZpbGUuc2F2ZVNXRjFbaV0gPSBJOTE1X1JFQUQoU1dGMShpKSk7Cj4gIAkJfQo+ ICAJCWZvciAoaSA9IDA7IGkgPCAzOyBpKyspCj4gIAkJCWRldl9wcml2LT5yZWdmaWxlLnNhdmVT V0YzW2ldID0gSTkxNV9SRUFEKFNXRjMoaSkpOwo+IC0JfSBlbHNlIGlmIChJU19HRU4yKGRldl9w cml2KSkgewo+ICsJfSBlbHNlIGlmIChHVF9HRU4oZGV2X3ByaXYsIDIpKSB7Cj4gIAkJZm9yIChp ID0gMDsgaSA8IDc7IGkrKykKPiAgCQkJZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVNXRjFbaV0gPSBJ OTE1X1JFQUQoU1dGMShpKSk7Cj4gIAl9IGVsc2UgaWYgKEhBU19HTUNIX0RJU1BMQVkoZGV2X3By aXYpKSB7Cj4gQEAgLTEwOCw3ICsxMDgsNyBAQCBpbnQgaTkxNV9yZXN0b3JlX3N0YXRlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCj4gIAltdXRleF9sb2NrKCZkZXZfcHJp di0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gIAo+IC0JaWYgKElTX0dFTjQoZGV2X3ByaXYpKQo+ICsJ aWYgKEdUX0dFTihkZXZfcHJpdiwgNCkpCj4gIAkJcGNpX3dyaXRlX2NvbmZpZ193b3JkKHBkZXYs IEdDREdNQlVTLAo+ICAJCQkJICAgICAgZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZUdDREdNQlVTKTsK PiAgCWk5MTVfcmVzdG9yZV9kaXNwbGF5KGRldl9wcml2KTsKPiBAQCAtMTIyLDE0ICsxMjIsMTQg QEAgaW50IGk5MTVfcmVzdG9yZV9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gIAlJOTE1X1dSSVRFKE1JX0FSQl9TVEFURSwgZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZU1J X0FSQl9TVEFURSB8IDB4ZmZmZjAwMDApOwo+ICAKPiAgCS8qIFNjcmF0Y2ggc3BhY2UgKi8KPiAt CWlmIChJU19HRU4yKGRldl9wcml2KSAmJiBJU19NT0JJTEUoZGV2X3ByaXYpKSB7Cj4gKwlpZiAo R1RfR0VOKGRldl9wcml2LCAyKSAmJiBJU19NT0JJTEUoZGV2X3ByaXYpKSB7Cj4gIAkJZm9yIChp ID0gMDsgaSA8IDc7IGkrKykgewo+ICAJCQlJOTE1X1dSSVRFKFNXRjAoaSksIGRldl9wcml2LT5y ZWdmaWxlLnNhdmVTV0YwW2ldKTsKPiAgCQkJSTkxNV9XUklURShTV0YxKGkpLCBkZXZfcHJpdi0+ cmVnZmlsZS5zYXZlU1dGMVtpXSk7Cj4gIAkJfQo+ICAJCWZvciAoaSA9IDA7IGkgPCAzOyBpKysp Cj4gIAkJCUk5MTVfV1JJVEUoU1dGMyhpKSwgZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVNXRjNbaV0p Owo+IC0JfSBlbHNlIGlmIChJU19HRU4yKGRldl9wcml2KSkgewo+ICsJfSBlbHNlIGlmIChHVF9H RU4oZGV2X3ByaXYsIDIpKSB7Cj4gIAkJZm9yIChpID0gMDsgaSA8IDc7IGkrKykKPiAgCQkJSTkx NV9XUklURShTV0YxKGkpLCBkZXZfcHJpdi0+cmVnZmlsZS5zYXZlU1dGMVtpXSk7Cj4gIAl9IGVs c2UgaWYgKEhBU19HTUNIX0RJU1BMQVkoZGV2X3ByaXYpKSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfYXRvbWljLmMKPiBpbmRleCBhNWEyYzhmZTU4YTcuLjc0ZGMyM2Y2NzE1MSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jCj4gQEAgLTIzMiw3ICsyMzIsNyBAQCBzdGF0aWMg dm9pZCBpbnRlbF9hdG9taWNfc2V0dXBfc2NhbGVyKHN0cnVjdCBpbnRlbF9jcnRjX3NjYWxlcl9z dGF0ZSAqc2NhbGVyX3N0YQo+ICAJaWYgKHBsYW5lX3N0YXRlICYmIHBsYW5lX3N0YXRlLT5iYXNl LmZiICYmCj4gIAkgICAgcGxhbmVfc3RhdGUtPmJhc2UuZmItPmZvcm1hdC0+aXNfeXV2ICYmCj4g IAkgICAgcGxhbmVfc3RhdGUtPmJhc2UuZmItPmZvcm1hdC0+bnVtX3BsYW5lcyA+IDEpIHsKPiAt CQlpZiAoSVNfR0VOOShkZXZfcHJpdikgJiYKPiArCQlpZiAoR1RfR0VOKGRldl9wcml2LCA5KSAm Jgo+ICAJCSAgICAhSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpIHsKPiAgCQkJbW9kZSA9IFNLTF9Q U19TQ0FMRVJfTU9ERV9OVjEyOwo+ICAJCX0gZWxzZSBpZiAoaWNsX2lzX2hkcl9wbGFuZSh0b19p bnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSkpKSB7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9hdWRpby5jCj4gaW5kZXggY2NkODhkYTIwYTE0Li43ZjQ3YmFjYmVmMjAgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMKPiBAQCAtNzU4LDcgKzc1OCw3IEBAIHN0YXRpYyB2 b2lkIGk5MTVfYXVkaW9fY29tcG9uZW50X2NvZGVjX3dha2Vfb3ZlcnJpZGUoc3RydWN0IGRldmlj ZSAqa2RldiwKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtkZXZfdG9f aTkxNShrZGV2KTsKPiAgCXUzMiB0bXA7Cj4gIAo+IC0JaWYgKCFJU19HRU45KGRldl9wcml2KSkK PiArCWlmICghR1RfR0VOKGRldl9wcml2LCA5KSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJaTkxNV9h dWRpb19jb21wb25lbnRfZ2V0X3Bvd2VyKGtkZXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9jZGNsay5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY2Rj bGsuYwo+IGluZGV4IDhkNzQyNzYwMjllNi4uZGIwZWRkMDFjOTczIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NkY2xrLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9jZGNsay5jCj4gQEAgLTIxNDAsNyArMjE0MCw3IEBAIHN0YXRpYyBpbnQgaW50 ZWxfcGl4ZWxfcmF0ZV90b19jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gIHsKPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwIHx8IElTX0dFTUlOSUxBS0Uo ZGV2X3ByaXYpKQo+ICAJCXJldHVybiBESVZfUk9VTkRfVVAocGl4ZWxfcmF0ZSwgMik7Cj4gLQll bHNlIGlmIChJU19HRU45KGRldl9wcml2KSB8fAo+ICsJZWxzZSBpZiAoR1RfR0VOKGRldl9wcml2 LCA5KSB8fAo+ICAJCSBJU19CUk9BRFdFTEwoZGV2X3ByaXYpIHx8IElTX0hBU1dFTEwoZGV2X3By aXYpKQo+ICAJCXJldHVybiBwaXhlbF9yYXRlOwo+ICAJZWxzZSBpZiAoSVNfQ0hFUlJZVklFVyhk ZXZfcHJpdikpCj4gQEAgLTIxNzYsNyArMjE3Niw3IEBAIGludCBpbnRlbF9jcnRjX2NvbXB1dGVf bWluX2NkY2xrKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICAJ CWlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSkg ewo+ICAJCQkvKiBEaXNwbGF5IFdBICMxMTQ1OiBnbGssY25sICovCj4gIAkJCW1pbl9jZGNsayA9 IG1heCgzMTY4MDAsIG1pbl9jZGNsayk7Cj4gLQkJfSBlbHNlIGlmIChJU19HRU45KGRldl9wcml2 KSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7Cj4gKwkJfSBlbHNlIGlmIChHVF9HRU4oZGV2 X3ByaXYsIDkpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpIHsKPiAgCQkJLyogRGlzcGxheSBX QSAjMTE0NDogc2tsLGJ4dCAqLwo+ICAJCQltaW5fY2RjbGsgPSBtYXgoNDMyMDAwLCBtaW5fY2Rj bGspOwo+ICAJCX0KPiBAQCAtMjUzNyw3ICsyNTM3LDcgQEAgc3RhdGljIGludCBpbnRlbF9jb21w dXRlX21heF9kb3RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAKPiAg CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYp KQo+ICAJCXJldHVybiAyICogbWF4X2NkY2xrX2ZyZXE7Cj4gLQllbHNlIGlmIChJU19HRU45KGRl dl9wcml2KSB8fAo+ICsJZWxzZSBpZiAoR1RfR0VOKGRldl9wcml2LCA5KSB8fAo+ICAJCSBJU19C Uk9BRFdFTEwoZGV2X3ByaXYpIHx8IElTX0hBU1dFTEwoZGV2X3ByaXYpKQo+ICAJCXJldHVybiBt YXhfY2RjbGtfZnJlcTsKPiAgCWVsc2UgaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+IEBA IC0yODA2LDkgKzI4MDYsOSBAQCB2b2lkIGludGVsX2luaXRfY2RjbGtfaG9va3Moc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCWRldl9wcml2LT5kaXNwbGF5LmdldF9jZGNs ayA9IGhzd19nZXRfY2RjbGs7Cj4gIAllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8 fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfY2Rj bGsgPSB2bHZfZ2V0X2NkY2xrOwo+IC0JZWxzZSBpZiAoSVNfR0VONihkZXZfcHJpdikgfHwgSVNf SVZZQlJJREdFKGRldl9wcml2KSkKPiArCWVsc2UgaWYgKEdUX0dFTihkZXZfcHJpdiwgNikgfHwg SVNfSVZZQlJJREdFKGRldl9wcml2KSkKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfY2RjbGsg PSBmaXhlZF80MDBtaHpfZ2V0X2NkY2xrOwo+IC0JZWxzZSBpZiAoSVNfR0VONShkZXZfcHJpdikp Cj4gKwllbHNlIGlmIChHVF9HRU4oZGV2X3ByaXYsIDUpKQo+ICAJCWRldl9wcml2LT5kaXNwbGF5 LmdldF9jZGNsayA9IGZpeGVkXzQ1MG1oel9nZXRfY2RjbGs7Cj4gIAllbHNlIGlmIChJU19HTTQ1 KGRldl9wcml2KSkKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfY2RjbGsgPSBnbTQ1X2dldF9j ZGNsazsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jcnQuYwo+IGluZGV4IDY4ZjJmYjg5ZWNlMy4uYjM3 MjI0MjI3NDIwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NydC5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMKPiBAQCAtMzIyLDcgKzMy Miw3IEBAIGludGVsX2NydF9tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0 b3IsCj4gIAkJICogREFDIGxpbWl0IHN1cHBvc2VkbHkgMzU1IE1Iei4KPiAgCQkgKi8KPiAgCQlt YXhfY2xvY2sgPSAyNzAwMDA7Cj4gLQllbHNlIGlmIChJU19HRU4zKGRldl9wcml2KSB8fCBJU19H RU40KGRldl9wcml2KSkKPiArCWVsc2UgaWYgKEdUX0dFTihkZXZfcHJpdiwgMykgfHwgR1RfR0VO KGRldl9wcml2LCA0KSkKPiAgCQltYXhfY2xvY2sgPSA0MDAwMDA7Cj4gIAllbHNlCj4gIAkJbWF4 X2Nsb2NrID0gMzUwMDAwOwo+IEBAIC02NjYsNyArNjY2LDcgQEAgaW50ZWxfY3J0X2xvYWRfZGV0 ZWN0KHN0cnVjdCBpbnRlbF9jcnQgKmNydCwgdWludDMyX3QgcGlwZSkKPiAgCS8qIFNldCB0aGUg Ym9yZGVyIGNvbG9yIHRvIHB1cnBsZS4gKi8KPiAgCUk5MTVfV1JJVEUoYmNscnBhdF9yZWcsIDB4 NTAwMDUwKTsKPiAgCj4gLQlpZiAoIUlTX0dFTjIoZGV2X3ByaXYpKSB7Cj4gKwlpZiAoIUdUX0dF TihkZXZfcHJpdiwgMikpIHsKPiAgCQl1aW50MzJfdCBwaXBlY29uZiA9IEk5MTVfUkVBRChwaXBl Y29uZl9yZWcpOwo+ICAJCUk5MTVfV1JJVEUocGlwZWNvbmZfcmVnLCBwaXBlY29uZiB8IFBJUEVD T05GX0ZPUkNFX0JPUkRFUik7Cj4gIAkJUE9TVElOR19SRUFEKHBpcGVjb25mX3JlZyk7Cj4gQEAg LTk4MSw3ICs5ODEsNyBAQCB2b2lkIGludGVsX2NydF9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiAgCWVsc2UKPiAgCQljcnQtPmJhc2UuY3J0Y19tYXNrID0gKDEgPDwg MCkgfCAoMSA8PCAxKSB8ICgxIDw8IDIpOwo+ICAKPiAtCWlmIChJU19HRU4yKGRldl9wcml2KSkK PiArCWlmIChHVF9HRU4oZGV2X3ByaXYsIDIpKQo+ICAJCWNvbm5lY3Rvci0+aW50ZXJsYWNlX2Fs bG93ZWQgPSAwOwo+ICAJZWxzZQo+ICAJCWNvbm5lY3Rvci0+aW50ZXJsYWNlX2FsbG93ZWQgPSAx Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYwo+IGluZGV4IDg5ZWQz YTg0YTRmYS4uN2Y3MTJjZDIzOGZlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RldmljZV9pbmZvLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k ZXZpY2VfaW5mby5jCj4gQEAgLTc0NCw3ICs3NDQsNyBAQCB2b2lkIGludGVsX2RldmljZV9pbmZv X3J1bnRpbWVfaW5pdChzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gKmluZm8pCj4gIAlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSAxMCkgewo+ICAJCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBp cGUpCj4gIAkJCWluZm8tPm51bV9zY2FsZXJzW3BpcGVdID0gMjsKPiAtCX0gZWxzZSBpZiAoSVNf R0VOOShkZXZfcHJpdikpIHsKPiArCX0gZWxzZSBpZiAoR1RfR0VOKGRldl9wcml2LCA5KSkgewo+ ICAJCWluZm8tPm51bV9zY2FsZXJzW1BJUEVfQV0gPSAyOwo+ICAJCWluZm8tPm51bV9zY2FsZXJz W1BJUEVfQl0gPSAyOwo+ICAJCWluZm8tPm51bV9zY2FsZXJzW1BJUEVfQ10gPSAxOwo+IEBAIC03 NTIsMTAgKzc1MiwxMCBAQCB2b2lkIGludGVsX2RldmljZV9pbmZvX3J1bnRpbWVfaW5pdChzdHJ1 Y3QgaW50ZWxfZGV2aWNlX2luZm8gKmluZm8pCj4gIAo+ICAJQlVJTERfQlVHX09OKEk5MTVfTlVN X0VOR0lORVMgPiBCSVRTX1BFUl9UWVBFKGludGVsX3JpbmdfbWFza190KSk7Cj4gIAo+IC0JaWYg KElTX0dFTjExKGRldl9wcml2KSkKPiArCWlmIChHVF9HRU4oZGV2X3ByaXYsIDExKSkKPiAgCQlm b3JfZWFjaF9waXBlKGRldl9wcml2LCBwaXBlKQo+ICAJCQlpbmZvLT5udW1fc3ByaXRlc1twaXBl XSA9IDY7Cj4gLQllbHNlIGlmIChJU19HRU4xMChkZXZfcHJpdikgfHwgSVNfR0VNSU5JTEFLRShk ZXZfcHJpdikpCj4gKwllbHNlIGlmIChHVF9HRU4oZGV2X3ByaXYsIDEwKSB8fCBJU19HRU1JTklM QUtFKGRldl9wcml2KSkKPiAgCQlmb3JfZWFjaF9waXBlKGRldl9wcml2LCBwaXBlKQo+ICAJCQlp bmZvLT5udW1fc3ByaXRlc1twaXBlXSA9IDM7Cj4gIAllbHNlIGlmIChJU19CUk9YVE9OKGRldl9w cml2KSkgewo+IEBAIC03ODMsNyArNzgzLDcgQEAgdm9pZCBpbnRlbF9kZXZpY2VfaW5mb19ydW50 aW1lX2luaXQoc3RydWN0IGludGVsX2RldmljZV9pbmZvICppbmZvKQo+ICAJCURSTV9JTkZPKCJE aXNwbGF5IGRpc2FibGVkIChtb2R1bGUgcGFyYW1ldGVyKVxuIik7Cj4gIAkJaW5mby0+bnVtX3Bp cGVzID0gMDsKPiAgCX0gZWxzZSBpZiAoaW5mby0+bnVtX3BpcGVzID4gMCAmJgo+IC0JCSAgIChJ U19HRU43KGRldl9wcml2KSB8fCBJU19HRU44KGRldl9wcml2KSkgJiYKPiArCQkgICAoR1RfR0VO KGRldl9wcml2LCA3KSB8fCBHVF9HRU4oZGV2X3ByaXYsIDgpKSAmJgo+ICAJCSAgIEhBU19QQ0hf U1BMSVQoZGV2X3ByaXYpKSB7Cj4gIAkJdTMyIGZ1c2Vfc3RyYXAgPSBJOTE1X1JFQUQoRlVTRV9T VFJBUCk7Cj4gIAkJdTMyIHNmdXNlX3N0cmFwID0gSTkxNV9SRUFEKFNGVVNFX1NUUkFQKTsKPiBA QCAtODA3LDcgKzgwNyw3IEBAIHZvaWQgaW50ZWxfZGV2aWNlX2luZm9fcnVudGltZV9pbml0KHN0 cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyAqaW5mbykKPiAgCQkJRFJNX0lORk8oIlBpcGVDIGZ1c2Vk IG9mZlxuIik7Cj4gIAkJCWluZm8tPm51bV9waXBlcyAtPSAxOwo+ICAJCX0KPiAtCX0gZWxzZSBp ZiAoaW5mby0+bnVtX3BpcGVzID4gMCAmJiBJU19HRU45KGRldl9wcml2KSkgewo+ICsJfSBlbHNl IGlmIChpbmZvLT5udW1fcGlwZXMgPiAwICYmIEdUX0dFTihkZXZfcHJpdiwgOSkpIHsKPiAgCQl1 MzIgZGZzbSA9IEk5MTVfUkVBRChTS0xfREZTTSk7Cj4gIAkJdTggZGlzYWJsZWRfbWFzayA9IDA7 Cj4gIAkJYm9vbCBpbnZhbGlkOwo+IEBAIC04NDcsMTQgKzg0NywxNCBAQCB2b2lkIGludGVsX2Rl dmljZV9pbmZvX3J1bnRpbWVfaW5pdChzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gKmluZm8pCj4g IAkJY2hlcnJ5dmlld19zc2V1X2luZm9faW5pdChkZXZfcHJpdik7Cj4gIAllbHNlIGlmIChJU19C Uk9BRFdFTEwoZGV2X3ByaXYpKQo+ICAJCWJyb2Fkd2VsbF9zc2V1X2luZm9faW5pdChkZXZfcHJp dik7Cj4gLQllbHNlIGlmIChJU19HRU45KGRldl9wcml2KSkKPiArCWVsc2UgaWYgKEdUX0dFTihk ZXZfcHJpdiwgOSkpCj4gIAkJZ2VuOV9zc2V1X2luZm9faW5pdChkZXZfcHJpdik7Cj4gLQllbHNl IGlmIChJU19HRU4xMChkZXZfcHJpdikpCj4gKwllbHNlIGlmIChHVF9HRU4oZGV2X3ByaXYsIDEw KSkKPiAgCQlnZW4xMF9zc2V1X2luZm9faW5pdChkZXZfcHJpdik7Cj4gIAllbHNlIGlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDExKQo+ICAJCWdlbjExX3NzZXVfaW5mb19pbml0KGRldl9wcml2 KTsKPiAgCj4gLQlpZiAoSVNfR0VONihkZXZfcHJpdikgJiYgaW50ZWxfdnRkX2FjdGl2ZSgpKSB7 Cj4gKwlpZiAoR1RfR0VOKGRldl9wcml2LCA2KSAmJiBpbnRlbF92dGRfYWN0aXZlKCkpIHsKPiAg CQlEUk1fSU5GTygiRGlzYWJsaW5nIHBwR1RUIGZvciBWVC1kIHN1cHBvcnRcbiIpOwo+ICAJCWlu Zm8tPnBwZ3R0ID0gSU5URUxfUFBHVFRfTk9ORTsKPiAgCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jCj4gaW5kZXggYmJmOGNhMjFhN2EyLi45MDQ5NTBhNjVjMWIgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTk4NCw3ICs5ODQsNyBAQCBzdGF0 aWMgYm9vbCBwaXBlX3NjYW5saW5lX2lzX21vdmluZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gIAl1MzIgbGluZTEsIGxpbmUyOwo+ICAJdTMyIGxpbmVfbWFzazsKPiAgCj4g LQlpZiAoSVNfR0VOMihkZXZfcHJpdikpCj4gKwlpZiAoR1RfR0VOKGRldl9wcml2LCAyKSkKPiAg CQlsaW5lX21hc2sgPSBEU0xfTElORU1BU0tfR0VOMjsKPiAgCWVsc2UKPiAgCQlsaW5lX21hc2sg PSBEU0xfTElORU1BU0tfR0VOMzsKPiBAQCAtMTExMCw3ICsxMTEwLDcgQEAgc3RhdGljIHZvaWQg YXNzZXJ0X2ZkaV90eF9wbGxfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gIAl1MzIgdmFsOwo+ICAKPiAgCS8qIElMSyBGREkgUExMIGlzIGFsd2F5cyBlbmFibGVk ICovCj4gLQlpZiAoSVNfR0VONShkZXZfcHJpdikpCj4gKwlpZiAoR1RfR0VOKGRldl9wcml2LCA1 KSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJLyogT24gSGFzd2VsbCwgRERJIHBvcnRzIGFyZSByZXNw b25zaWJsZSBmb3IgdGhlIEZESSBQTEwgc2V0dXAgKi8KPiBAQCAtMTg0OSw3ICsxODQ5LDcgQEAg c3RhdGljIHZvaWQgaW50ZWxfZGlzYWJsZV9waXBlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpvbGRfY3J0Y19zdGF0ZSkKPiAgCj4gIHN0YXRpYyB1bnNpZ25lZCBpbnQgaW50ZWxfdGls ZV9zaXplKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+IC0J cmV0dXJuIElTX0dFTjIoZGV2X3ByaXYpID8gMjA0OCA6IDQwOTY7Cj4gKwlyZXR1cm4gR1RfR0VO KGRldl9wcml2LCAyKSA/IDIwNDggOiA0MDk2Owo+ICB9Cj4gIAo+ICBzdGF0aWMgdW5zaWduZWQg aW50Cj4gQEAgLTE4NjIsNyArMTg2Miw3IEBAIGludGVsX3RpbGVfd2lkdGhfYnl0ZXMoY29uc3Qg c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsIGludCBjb2xvcl9wbGFuZSkKPiAgCWNhc2UgRFJN X0ZPUk1BVF9NT0RfTElORUFSOgo+ICAJCXJldHVybiBjcHA7Cj4gIAljYXNlIEk5MTVfRk9STUFU X01PRF9YX1RJTEVEOgo+IC0JCWlmIChJU19HRU4yKGRldl9wcml2KSkKPiArCQlpZiAoR1RfR0VO KGRldl9wcml2LCAyKSkKPiAgCQkJcmV0dXJuIDEyODsKPiAgCQllbHNlCj4gIAkJCXJldHVybiA1 MTI7Cj4gQEAgLTE4NzEsNyArMTg3MSw3IEBAIGludGVsX3RpbGVfd2lkdGhfYnl0ZXMoY29uc3Qg c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsIGludCBjb2xvcl9wbGFuZSkKPiAgCQkJcmV0dXJu IDEyODsKPiAgCQkvKiBmYWxsIHRocm91Z2ggKi8KPiAgCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lf VElMRUQ6Cj4gLQkJaWYgKElTX0dFTjIoZGV2X3ByaXYpIHx8IEhBU18xMjhfQllURV9ZX1RJTElO RyhkZXZfcHJpdikpCj4gKwkJaWYgKEdUX0dFTihkZXZfcHJpdiwgMikgfHwgSEFTXzEyOF9CWVRF X1lfVElMSU5HKGRldl9wcml2KSkKPiAgCQkJcmV0dXJuIDEyODsKPiAgCQllbHNlCj4gIAkJCXJl dHVybiA1MTI7Cj4gQEAgLTMxNzUsOCArMzE3NSw4IEBAIHN0YXRpYyB1MzIgaTl4eF9wbGFuZV9j dGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAo+ICAJZHNw Y250ciA9IERJU1BMQVlfUExBTkVfRU5BQkxFIHwgRElTUFBMQU5FX0dBTU1BX0VOQUJMRTsKPiAg Cj4gLQlpZiAoSVNfRzRYKGRldl9wcml2KSB8fCBJU19HRU41KGRldl9wcml2KSB8fAo+IC0JICAg IElTX0dFTjYoZGV2X3ByaXYpIHx8IElTX0lWWUJSSURHRShkZXZfcHJpdikpCj4gKwlpZiAoSVNf RzRYKGRldl9wcml2KSB8fCBHVF9HRU4oZGV2X3ByaXYsIDUpIHx8Cj4gKwkgICAgR1RfR0VOKGRl dl9wcml2LCA2KSB8fCBJU19JVllCUklER0UoZGV2X3ByaXYpKQo+ICAJCWRzcGNudHIgfD0gRElT UFBMQU5FX1RSSUNLTEVfRkVFRF9ESVNBQkxFOwo+ICAKPiAgCWlmIChJU19IQVNXRUxMKGRldl9w cml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQo+IEBAIC00MDk1LDcgKzQwOTUsNyBAQCBz dGF0aWMgdm9pZCBnZW42X2ZkaV9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ ICAJdGVtcCA9IEk5MTVfUkVBRChyZWcpOwo+ICAJdGVtcCAmPSB+RkRJX0xJTktfVFJBSU5fTk9O RTsKPiAgCXRlbXAgfD0gRkRJX0xJTktfVFJBSU5fUEFUVEVSTl8yOwo+IC0JaWYgKElTX0dFTjYo ZGV2X3ByaXYpKSB7Cj4gKwlpZiAoR1RfR0VOKGRldl9wcml2LCA2KSkgewo+ICAJCXRlbXAgJj0g fkZESV9MSU5LX1RSQUlOX1ZPTF9FTVBfTUFTSzsKPiAgCQkvKiBTTkItQiAqLwo+ICAJCXRlbXAg fD0gRkRJX0xJTktfVFJBSU5fNDAwTVZfMERCX1NOQl9COwo+IEBAIC00ODYyLDEwICs0ODYyLDEw IEBAIHNrbF91cGRhdGVfc2NhbGVyKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl LCBib29sIGZvcmNlX2RldGFjaCwKPiAgCS8qIHJhbmdlIGNoZWNrcyAqLwo+ICAJaWYgKHNyY193 IDwgU0tMX01JTl9TUkNfVyB8fCBzcmNfaCA8IFNLTF9NSU5fU1JDX0ggfHwKPiAgCSAgICBkc3Rf dyA8IFNLTF9NSU5fRFNUX1cgfHwgZHN0X2ggPCBTS0xfTUlOX0RTVF9IIHx8Cj4gLQkgICAgKElT X0dFTjExKGRldl9wcml2KSAmJgo+ICsJICAgIChHVF9HRU4oZGV2X3ByaXYsIDExKSAmJgo+ICAJ ICAgICAoc3JjX3cgPiBJQ0xfTUFYX1NSQ19XIHx8IHNyY19oID4gSUNMX01BWF9TUkNfSCB8fAo+ ICAJICAgICAgZHN0X3cgPiBJQ0xfTUFYX0RTVF9XIHx8IGRzdF9oID4gSUNMX01BWF9EU1RfSCkp IHx8Cj4gLQkgICAgKCFJU19HRU4xMShkZXZfcHJpdikgJiYKPiArCSAgICAoIUdUX0dFTihkZXZf cHJpdiwgMTEpICYmCj4gIAkgICAgIChzcmNfdyA+IFNLTF9NQVhfU1JDX1cgfHwgc3JjX2ggPiBT S0xfTUFYX1NSQ19IIHx8Cj4gIAkgICAgICBkc3RfdyA+IFNLTF9NQVhfRFNUX1cgfHwgZHN0X2gg PiBTS0xfTUFYX0RTVF9IKSkpCXsKPiAgCQlEUk1fREVCVUdfS01TKCJzY2FsZXJfdXNlciBpbmRl eCAldS4ldTogc3JjICV1eCV1IGRzdCAldXgldSAiCj4gQEAgLTUxNDksNyArNTE0OSw3IEBAIGlu dGVsX3Bvc3RfZW5hYmxlX3ByaW1hcnkoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJICogRklY TUU6IE5lZWQgdG8gZml4IHRoZSBsb2dpYyB0byB3b3JrIHdoZW4gd2UgdHVybiBvZmYgYWxsIHBs YW5lcwo+ICAJICogYnV0IGxlYXZlIHRoZSBwaXBlIHJ1bm5pbmcuCj4gIAkgKi8KPiAtCWlmIChJ U19HRU4yKGRldl9wcml2KSkKPiArCWlmIChHVF9HRU4oZGV2X3ByaXYsIDIpKQo+ICAJCWludGVs X3NldF9jcHVfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYsIHBpcGUsIHRydWUpOwo+ ICAKPiAgCS8qIFVuZGVycnVucyBkb24ndCBhbHdheXMgcmFpc2UgaW50ZXJydXB0cywgc28gY2hl Y2sgbWFudWFsbHkuICovCj4gQEAgLTUxNzAsNyArNTE3MCw3IEBAIGludGVsX3ByZV9kaXNhYmxl X3ByaW1hcnlfbm9hdG9taWMoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJICogR2VuMiByZXBv cnRzIHBpcGUgdW5kZXJydW5zIHdoZW5ldmVyIGFsbCBwbGFuZXMgYXJlIGRpc2FibGVkLgo+ICAJ ICogU28gZGlzYWJsZSB1bmRlcnJ1biByZXBvcnRpbmcgYmVmb3JlIGFsbCB0aGUgcGxhbmVzIGdl dCBkaXNhYmxlZC4KPiAgCSAqLwo+IC0JaWYgKElTX0dFTjIoZGV2X3ByaXYpKQo+ICsJaWYgKEdU X0dFTihkZXZfcHJpdiwgMikpCj4gIAkJaW50ZWxfc2V0X2NwdV9maWZvX3VuZGVycnVuX3JlcG9y dGluZyhkZXZfcHJpdiwgcGlwZSwgZmFsc2UpOwo+ICAKPiAgCWhzd19kaXNhYmxlX2lwcyh0b19p bnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKSk7Cj4gQEAgLTUyMjgsNyArNTIyOCw3IEBAIHN0 YXRpYyBib29sIG5lZWRzX252MTJfd2Eoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gIAkvKiBXQSBEaXNwbGF5ICMwODI3OiBHZW45OmFs bCAqLwo+IC0JaWYgKElTX0dFTjkoZGV2X3ByaXYpICYmICFJU19HRU1JTklMQUtFKGRldl9wcml2 KSkKPiArCWlmIChHVF9HRU4oZGV2X3ByaXYsIDkpICYmICFJU19HRU1JTklMQUtFKGRldl9wcml2 KSkKPiAgCQlyZXR1cm4gdHJ1ZTsKPiAgCj4gIAlyZXR1cm4gZmFsc2U7Cj4gQEAgLTUzMDEsNyAr NTMwMSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3ByZV9wbGFuZV91cGRhdGUoc3RydWN0IGludGVs X2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLAo+ICAJCSAqIEdlbjIgcmVwb3J0cyBwaXBlIHVu ZGVycnVucyB3aGVuZXZlciBhbGwgcGxhbmVzIGFyZSBkaXNhYmxlZC4KPiAgCQkgKiBTbyBkaXNh YmxlIHVuZGVycnVuIHJlcG9ydGluZyBiZWZvcmUgYWxsIHRoZSBwbGFuZXMgZ2V0IGRpc2FibGVk Lgo+ICAJCSAqLwo+IC0JCWlmIChJU19HRU4yKGRldl9wcml2KSAmJiBvbGRfcHJpbWFyeV9zdGF0 ZS0+dmlzaWJsZSAmJgo+ICsJCWlmIChHVF9HRU4oZGV2X3ByaXYsIDIpICYmIG9sZF9wcmltYXJ5 X3N0YXRlLT52aXNpYmxlICYmCj4gIAkJICAgIChtb2Rlc2V0IHx8ICFuZXdfcHJpbWFyeV9zdGF0 ZS0+YmFzZS52aXNpYmxlKSkKPiAgCQkJaW50ZWxfc2V0X2NwdV9maWZvX3VuZGVycnVuX3JlcG9y dGluZyhkZXZfcHJpdiwgY3J0Yy0+cGlwZSwgZmFsc2UpOwo+ICAJfQo+IEBAIC02MTE1LDcgKzYx MTUsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X2NydGNfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpwaXBlX2NvbmZpZywKPiAgCj4gIAlpbnRlbF9jcnRjLT5hY3RpdmUgPSB0cnVlOwo+ICAK PiAtCWlmICghSVNfR0VOMihkZXZfcHJpdikpCj4gKwlpZiAoIUdUX0dFTihkZXZfcHJpdiwgMikp Cj4gIAkJaW50ZWxfc2V0X2NwdV9maWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXZfcHJpdiwgcGlw ZSwgdHJ1ZSk7Cj4gIAo+ICAJaW50ZWxfZW5jb2RlcnNfcHJlX2VuYWJsZShjcnRjLCBwaXBlX2Nv bmZpZywgb2xkX3N0YXRlKTsKPiBAQCAtNjE2Nyw3ICs2MTY3LDcgQEAgc3RhdGljIHZvaWQgaTl4 eF9jcnRjX2Rpc2FibGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLAo+ ICAJICogT24gZ2VuMiBwbGFuZXMgYXJlIGRvdWJsZSBidWZmZXJlZCBidXQgdGhlIHBpcGUgaXNu J3QsIHNvIHdlIG11c3QKPiAgCSAqIHdhaXQgZm9yIHBsYW5lcyB0byBmdWxseSB0dXJuIG9mZiBi ZWZvcmUgZGlzYWJsaW5nIHRoZSBwaXBlLgo+ICAJICovCj4gLQlpZiAoSVNfR0VOMihkZXZfcHJp dikpCj4gKwlpZiAoR1RfR0VOKGRldl9wcml2LCAyKSkKPiAgCQlpbnRlbF93YWl0X2Zvcl92Ymxh bmsoZGV2X3ByaXYsIHBpcGUpOwo+ICAKPiAgCWludGVsX2VuY29kZXJzX2Rpc2FibGUoY3J0Yywg b2xkX2NydGNfc3RhdGUsIG9sZF9zdGF0ZSk7Cj4gQEAgLTYxOTIsNyArNjE5Miw3IEBAIHN0YXRp YyB2b2lkIGk5eHhfY3J0Y19kaXNhYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0 Y19zdGF0ZSwKPiAgCj4gIAlpbnRlbF9lbmNvZGVyc19wb3N0X3BsbF9kaXNhYmxlKGNydGMsIG9s ZF9jcnRjX3N0YXRlLCBvbGRfc3RhdGUpOwo+ICAKPiAtCWlmICghSVNfR0VOMihkZXZfcHJpdikp Cj4gKwlpZiAoIUdUX0dFTihkZXZfcHJpdiwgMikpCj4gIAkJaW50ZWxfc2V0X2NwdV9maWZvX3Vu ZGVycnVuX3JlcG9ydGluZyhkZXZfcHJpdiwgcGlwZSwgZmFsc2UpOwo+ICAKPiAgCWlmICghZGV2 X3ByaXYtPmRpc3BsYXkuaW5pdGlhbF93YXRlcm1hcmtzKQo+IEBAIC02Nzk2LDcgKzY3OTYsNyBA QCBzdGF0aWMgYm9vbCB0cmFuc2NvZGVyX2hhc19tMl9uMihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gIAkgKiBTdHJpY3RseSBzcGVha2luZyBzb21lIHJlZ2lzdGVycyBhcmUg YXZhaWxhYmxlIGJlZm9yZQo+ICAJICogZ2VuNywgYnV0IHdlIG9ubHkgc3VwcG9ydCBEUlJTIG9u IGdlbjcrCj4gIAkgKi8KPiAtCXJldHVybiBJU19HRU43KGRldl9wcml2KSB8fCBJU19DSEVSUllW SUVXKGRldl9wcml2KTsKPiArCXJldHVybiBHVF9HRU4oZGV2X3ByaXYsIDcpIHx8IElTX0NIRVJS WVZJRVcoZGV2X3ByaXYpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpbnRlbF9jcHVfdHJhbnNj b2Rlcl9zZXRfbV9uKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ IEBAIC04OTAzLDcgKzg5MDMsNyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9nZXRfcGZpdF9jb25m aWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAkJLyogV2UgY3VycmVudGx5IGRvIG5vdCBm cmVlIGFzc2lnbmVtZW50cyBvZiBwYW5lbCBmaXR0ZXJzIG9uCj4gIAkJICogaXZiL2hzdyAoc2lu Y2Ugd2UgZG9uJ3QgdXNlIHRoZSBoaWdoZXIgdXBzY2FsaW5nIG1vZGVzIHdoaWNoCj4gIAkJICog ZGlmZmVyZW50aWF0ZXMgdGhlbSkgc28ganVzdCBXQVJOIGFib3V0IHRoaXMgY2FzZSBmb3Igbm93 LiAqLwo+IC0JCWlmIChJU19HRU43KGRldl9wcml2KSkgewo+ICsJCWlmIChHVF9HRU4oZGV2X3By aXYsIDcpKSB7Cj4gIAkJCVdBUk5fT04oKHRtcCAmIFBGX1BJUEVfU0VMX01BU0tfSVZCKSAhPQo+ ICAJCQkJUEZfUElQRV9TRUxfSVZCKGNydGMtPnBpcGUpKTsKPiAgCQl9Cj4gQEAgLTk4NjUsNyAr OTg2NSw3IEBAIHN0YXRpYyB1MzIgaTl4eF9jdXJzb3JfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19p bnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gIAl1MzIgY250bCA9IDA7Cj4gIAo+ IC0JaWYgKElTX0dFTjYoZGV2X3ByaXYpIHx8IElTX0lWWUJSSURHRShkZXZfcHJpdikpCj4gKwlp ZiAoR1RfR0VOKGRldl9wcml2LCA2KSB8fCBJU19JVllCUklER0UoZGV2X3ByaXYpKQo+ICAJCWNu dGwgfD0gTUNVUlNPUl9UUklDS0xFX0ZFRURfRElTQUJMRTsKPiAgCj4gIAlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA8PSAxMCkgewo+IEBAIC0xMDMzNSw3ICsxMDMzNSw3IEBAIHN0YXRpYyBpbnQg aTl4eF9wbGxfcmVmY2xrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJcmV0dXJuIGRldl9w cml2LT52YnQubHZkc19zc2NfZnJlcTsKPiAgCWVsc2UgaWYgKEhBU19QQ0hfU1BMSVQoZGV2X3By aXYpKQo+ICAJCXJldHVybiAxMjAwMDA7Cj4gLQllbHNlIGlmICghSVNfR0VOMihkZXZfcHJpdikp Cj4gKwllbHNlIGlmICghR1RfR0VOKGRldl9wcml2LCAyKSkKPiAgCQlyZXR1cm4gOTYwMDA7Cj4g IAllbHNlCj4gIAkJcmV0dXJuIDQ4MDAwOwo+IEBAIC0xMDM2OCw3ICsxMDM2OCw3IEBAIHN0YXRp YyB2b2lkIGk5eHhfY3J0Y19jbG9ja19nZXQoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAkJ Y2xvY2subTIgPSAoZnAgJiBGUF9NMl9ESVZfTUFTSykgPj4gRlBfTTJfRElWX1NISUZUOwo+ICAJ fQo+ICAKPiAtCWlmICghSVNfR0VOMihkZXZfcHJpdikpIHsKPiArCWlmICghR1RfR0VOKGRldl9w cml2LCAyKSkgewo+ICAJCWlmIChJU19QSU5FVklFVyhkZXZfcHJpdikpCj4gIAkJCWNsb2NrLnAx ID0gZmZzKChkcGxsICYgRFBMTF9GUEEwMV9QMV9QT1NUX0RJVl9NQVNLX1BJTkVWSUVXKSA+Pgo+ ICAJCQkJRFBMTF9GUEEwMV9QMV9QT1NUX0RJVl9TSElGVF9QSU5FVklFVyk7Cj4gQEAgLTEwNjg0 LDcgKzEwNjg0LDcgQEAgaW50IGludGVsX3BsYW5lX2F0b21pY19jYWxjX2NoYW5nZXMoY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXQKPiAgCSAqIHRoZSB3L2Egb24g YWxsIHRocmVlIHBsYXRmb3Jtcy4KPiAgCSAqLwo+ICAJaWYgKHBsYW5lLT5pZCA9PSBQTEFORV9T UFJJVEUwICYmCj4gLQkgICAgKElTX0dFTjUoZGV2X3ByaXYpIHx8IElTX0dFTjYoZGV2X3ByaXYp IHx8Cj4gKwkgICAgKEdUX0dFTihkZXZfcHJpdiwgNSkgfHwgR1RfR0VOKGRldl9wcml2LCA2KSB8 fAo+ICAJICAgICBJU19JVllCUklER0UoZGV2X3ByaXYpKSAmJgo+ICAJICAgICh0dXJuX29uIHx8 ICghbmVlZHNfc2NhbGluZyhvbGRfcGxhbmVfc3RhdGUpICYmCj4gIAkJCSBuZWVkc19zY2FsaW5n KHRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lX3N0YXRlKSkpKSkKPiBAQCAtMTIyMzgsNyArMTIy MzgsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfc2NhbmxpbmVfb2Zmc2V0KGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICAJICogSG93ZXZlciBpZiBxdWVyaWVkIGp1 c3QgYmVmb3JlIHRoZSBzdGFydCBvZiB2Ymxhbmsgd2UnbGwgZ2V0IGFuCj4gIAkgKiBhbnN3ZXIg dGhhdCdzIHNsaWdodGx5IGluIHRoZSBmdXR1cmUuCj4gIAkgKi8KPiAtCWlmIChJU19HRU4yKGRl dl9wcml2KSkgewo+ICsJaWYgKEdUX0dFTihkZXZfcHJpdiwgMikpIHsKPiAgCQljb25zdCBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZjcnRjX3N0YXRlLT5iYXNlLmFk anVzdGVkX21vZGU7Cj4gIAkJaW50IHZ0b3RhbDsKPiAgCj4gQEAgLTEzNDM3LDcgKzEzNDM3LDcg QEAgdm9pZCBpbnRlbF9jcnRjX2FybV9maWZvX3VuZGVycnVuKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjLAo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGNydGMtPmJhc2UuZGV2KTsKPiAgCj4gLQlpZiAoIUlTX0dFTjIoZGV2X3ByaXYpKQo+ICsJaWYg KCFHVF9HRU4oZGV2X3ByaXYsIDIpKQo+ICAJCWludGVsX3NldF9jcHVfZmlmb191bmRlcnJ1bl9y ZXBvcnRpbmcoZGV2X3ByaXYsIGNydGMtPnBpcGUsIHRydWUpOwo+ICAKPiAgCWlmIChjcnRjX3N0 YXRlLT5oYXNfcGNoX2VuY29kZXIpIHsKPiBAQCAtMTQwNDQsNyArMTQwNDQsNyBAQCBzdGF0aWMg Ym9vbCBoYXNfZWRwX2Eoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJaWYg KChJOTE1X1JFQUQoRFBfQSkgJiBEUF9ERVRFQ1RFRCkgPT0gMCkKPiAgCQlyZXR1cm4gZmFsc2U7 Cj4gIAo+IC0JaWYgKElTX0dFTjUoZGV2X3ByaXYpICYmIChJOTE1X1JFQUQoRlVTRV9TVFJBUCkg JiBJTEtfZURQX0FfRElTQUJMRSkpCj4gKwlpZiAoR1RfR0VOKGRldl9wcml2LCA1KSAmJiAoSTkx NV9SRUFEKEZVU0VfU1RSQVApICYgSUxLX2VEUF9BX0RJU0FCTEUpKQo+ICAJCXJldHVybiBmYWxz ZTsKPiAgCj4gIAlyZXR1cm4gdHJ1ZTsKPiBAQCAtMTQyNTYsNyArMTQyNTYsNyBAQCBzdGF0aWMg dm9pZCBpbnRlbF9zZXR1cF9vdXRwdXRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiAgCQl9Cj4gIAo+ICAJCXZsdl9kc2lfaW5pdChkZXZfcHJpdik7Cj4gLQl9IGVsc2UgaWYg KCFJU19HRU4yKGRldl9wcml2KSAmJiAhSVNfUElORVZJRVcoZGV2X3ByaXYpKSB7Cj4gKwl9IGVs c2UgaWYgKCFHVF9HRU4oZGV2X3ByaXYsIDIpICYmICFJU19QSU5FVklFVyhkZXZfcHJpdikpIHsK PiAgCQlib29sIGZvdW5kID0gZmFsc2U7Cj4gIAo+ICAJCWlmIChJOTE1X1JFQUQoR0VOM19TRFZP QikgJiBTRFZPX0RFVEVDVEVEKSB7Cj4gQEAgLTE0MjkwLDcgKzE0MjkwLDcgQEAgc3RhdGljIHZv aWQgaW50ZWxfc2V0dXBfb3V0cHV0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gIAo+ICAJCWlmIChJU19HNFgoZGV2X3ByaXYpICYmIChJOTE1X1JFQUQoRFBfRCkgJiBEUF9E RVRFQ1RFRCkpCj4gIAkJCWludGVsX2RwX2luaXQoZGV2X3ByaXYsIERQX0QsIFBPUlRfRCk7Cj4g LQl9IGVsc2UgaWYgKElTX0dFTjIoZGV2X3ByaXYpKQo+ICsJfSBlbHNlIGlmIChHVF9HRU4oZGV2 X3ByaXYsIDIpKQo+ICAJCWludGVsX2R2b19pbml0KGRldl9wcml2KTsKPiAgCj4gIAlpZiAoU1VQ UE9SVFNfVFYoZGV2X3ByaXYpKQo+IEBAIC0xNDU3Nyw3ICsxNDU3Nyw3IEBAIHN0YXRpYyBpbnQg aW50ZWxfZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgaW50ZWxfZnJhbWVidWZmZXIgKmludGVsX2Zi LAo+ICAJCSAqIHJlcXVpcmUgdGhlIGVudGlyZSBmYiB0byBhY2NvbW1vZGF0ZSB0aGF0IHRvIGF2 b2lkCj4gIAkJICogcG90ZW50aWFsIHJ1bnRpbWUgZXJyb3JzIGF0IHBsYW5lIGNvbmZpZ3VyYXRp b24gdGltZS4KPiAgCQkgKi8KPiAtCQlpZiAoSVNfR0VOOShkZXZfcHJpdikgJiYgaSA9PSAwICYm IGZiLT53aWR0aCA+IDM4NDAgJiYKPiArCQlpZiAoR1RfR0VOKGRldl9wcml2LCA5KSAmJiBpID09 IDAgJiYgZmItPndpZHRoID4gMzg0MCAmJgo+ICAJCSAgICBpc19jY3NfbW9kaWZpZXIoZmItPm1v ZGlmaWVyKSkKPiAgCQkJc3RyaWRlX2FsaWdubWVudCAqPSA0Owo+ICAKPiBAQCAtMTQ3ODIsNyAr MTQ3ODIsNyBAQCB2b2lkIGludGVsX2luaXRfZGlzcGxheV9ob29rcyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19jb21wdXRlX2Ns b2NrID0gcG52X2NydGNfY29tcHV0ZV9jbG9jazsKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5jcnRj X2VuYWJsZSA9IGk5eHhfY3J0Y19lbmFibGU7Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19k aXNhYmxlID0gaTl4eF9jcnRjX2Rpc2FibGU7Cj4gLQl9IGVsc2UgaWYgKCFJU19HRU4yKGRldl9w cml2KSkgewo+ICsJfSBlbHNlIGlmICghR1RfR0VOKGRldl9wcml2LCAyKSkgewo+ICAJCWRldl9w cml2LT5kaXNwbGF5LmdldF9waXBlX2NvbmZpZyA9IGk5eHhfZ2V0X3BpcGVfY29uZmlnOwo+ICAJ CWRldl9wcml2LT5kaXNwbGF5LmdldF9pbml0aWFsX3BsYW5lX2NvbmZpZyA9Cj4gIAkJCWk5eHhf Z2V0X2luaXRpYWxfcGxhbmVfY29uZmlnOwo+IEBAIC0xNDc5OCw5ICsxNDc5OCw5IEBAIHZvaWQg aW50ZWxfaW5pdF9kaXNwbGF5X2hvb2tzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5jcnRjX2Rpc2FibGUgPSBpOXh4X2NydGNfZGlzYWJs ZTsKPiAgCX0KPiAgCj4gLQlpZiAoSVNfR0VONShkZXZfcHJpdikpIHsKPiArCWlmIChHVF9HRU4o ZGV2X3ByaXYsIDUpKSB7Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuZmRpX2xpbmtfdHJhaW4gPSBp cm9ubGFrZV9mZGlfbGlua190cmFpbjsKPiAtCX0gZWxzZSBpZiAoSVNfR0VONihkZXZfcHJpdikp IHsKPiArCX0gZWxzZSBpZiAoR1RfR0VOKGRldl9wcml2LCA2KSkgewo+ICAJCWRldl9wcml2LT5k aXNwbGF5LmZkaV9saW5rX3RyYWluID0gZ2VuNl9mZGlfbGlua190cmFpbjsKPiAgCX0gZWxzZSBp ZiAoSVNfSVZZQlJJREdFKGRldl9wcml2KSkgewo+ICAJCS8qIEZJWE1FOiBkZXRlY3QgQjArIHN0 ZXBwaW5nIGFuZCB1c2UgYXV0byB0cmFpbmluZyAqLwo+IEBAIC0xNDkzMiwxMiArMTQ5MzIsMTIg QEAgc3RhdGljIHZvaWQgc2FuaXRpemVfd2F0ZXJtYXJrcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ICAKPiAgc3RhdGljIHZvaWQgaW50ZWxfdXBkYXRlX2ZkaV9wbGxfZnJlcShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAtCWlmIChJU19HRU41KGRldl9wcml2KSkg ewo+ICsJaWYgKEdUX0dFTihkZXZfcHJpdiwgNSkpIHsKPiAgCQl1MzIgZmRpX3BsbF9jbGsgPQo+ ICAJCQlJOTE1X1JFQUQoRkRJX1BMTF9CSU9TXzApICYgRkRJX1BMTF9GQl9DTE9DS19NQVNLOwo+ ICAKPiAgCQlkZXZfcHJpdi0+ZmRpX3BsbF9mcmVxID0gKGZkaV9wbGxfY2xrICsgMikgKiAxMDAw MDsKPiAtCX0gZWxzZSBpZiAoSVNfR0VONihkZXZfcHJpdikgfHwgSVNfSVZZQlJJREdFKGRldl9w cml2KSkgewo+ICsJfSBlbHNlIGlmIChHVF9HRU4oZGV2X3ByaXYsIDYpIHx8IElTX0lWWUJSSURH RShkZXZfcHJpdikpIHsKPiAgCQlkZXZfcHJpdi0+ZmRpX3BsbF9mcmVxID0gMjcwMDAwOwo+ICAJ fSBlbHNlIHsKPiAgCQlyZXR1cm47Cj4gQEAgLTE1MDQzLDEwICsxNTA0MywxMCBAQCBpbnQgaW50 ZWxfbW9kZXNldF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAl9Cj4gIAo+ICAJLyog bWF4aW11bSBmcmFtZWJ1ZmZlciBkaW1lbnNpb25zICovCj4gLQlpZiAoSVNfR0VOMihkZXZfcHJp dikpIHsKPiArCWlmIChHVF9HRU4oZGV2X3ByaXYsIDIpKSB7Cj4gIAkJZGV2LT5tb2RlX2NvbmZp Zy5tYXhfd2lkdGggPSAyMDQ4Owo+ICAJCWRldi0+bW9kZV9jb25maWcubWF4X2hlaWdodCA9IDIw NDg7Cj4gLQl9IGVsc2UgaWYgKElTX0dFTjMoZGV2X3ByaXYpKSB7Cj4gKwl9IGVsc2UgaWYgKEdU X0dFTihkZXZfcHJpdiwgMykpIHsKPiAgCQlkZXYtPm1vZGVfY29uZmlnLm1heF93aWR0aCA9IDQw OTY7Cj4gIAkJZGV2LT5tb2RlX2NvbmZpZy5tYXhfaGVpZ2h0ID0gNDA5NjsKPiAgCX0gZWxzZSB7 Cj4gQEAgLTE1MDU3LDcgKzE1MDU3LDcgQEAgaW50IGludGVsX21vZGVzZXRfaW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICAJaWYgKElTX0k4NDVHKGRldl9wcml2KSB8fCBJU19JODY1Ryhk ZXZfcHJpdikpIHsKPiAgCQlkZXYtPm1vZGVfY29uZmlnLmN1cnNvcl93aWR0aCA9IElTX0k4NDVH KGRldl9wcml2KSA/IDY0IDogNTEyOwo+ICAJCWRldi0+bW9kZV9jb25maWcuY3Vyc29yX2hlaWdo dCA9IDEwMjM7Cj4gLQl9IGVsc2UgaWYgKElTX0dFTjIoZGV2X3ByaXYpKSB7Cj4gKwl9IGVsc2Ug aWYgKEdUX0dFTihkZXZfcHJpdiwgMikpIHsKPiAgCQlkZXYtPm1vZGVfY29uZmlnLmN1cnNvcl93 aWR0aCA9IDY0Owo+ICAJCWRldi0+bW9kZV9jb25maWcuY3Vyc29yX2hlaWdodCA9IDY0Owo+ICAJ fSBlbHNlIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBpbmRleCA1MjU4YzlkNjU0ZjQuLjll NDEwYjA0Zjk5ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+IEBAIC0zNDIsNyArMzQy LDcgQEAgaW50ZWxfZHBfc2V0X3NvdXJjZV9yYXRlcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw KQo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTApIHsKPiAgCQlzb3VyY2VfcmF0ZXMg PSBjbmxfcmF0ZXM7Cj4gIAkJc2l6ZSA9IEFSUkFZX1NJWkUoY25sX3JhdGVzKTsKPiAtCQlpZiAo SVNfR0VOMTAoZGV2X3ByaXYpKQo+ICsJCWlmIChHVF9HRU4oZGV2X3ByaXYsIDEwKSkKPiAgCQkJ bWF4X3JhdGUgPSBjbmxfbWF4X3NvdXJjZV9yYXRlKGludGVsX2RwKTsKPiAgCQllbHNlCj4gIAkJ CW1heF9yYXRlID0gaWNsX21heF9zb3VyY2VfcmF0ZShpbnRlbF9kcCk7Cj4gQEAgLTExMjYsNyAr MTEyNiw3IEBAIHN0YXRpYyB1aW50MzJfdCBnNHhfZ2V0X2F1eF9zZW5kX2N0bChzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwLAo+ICAJCQl0b19pOTE1KGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2Uu ZGV2KTsKPiAgCXVpbnQzMl90IHByZWNoYXJnZSwgdGltZW91dDsKPiAgCj4gLQlpZiAoSVNfR0VO NihkZXZfcHJpdikpCj4gKwlpZiAoR1RfR0VOKGRldl9wcml2LCA2KSkKPiAgCQlwcmVjaGFyZ2Ug PSAzOwo+ICAJZWxzZQo+ICAJCXByZWNoYXJnZSA9IDU7Cj4gQEAgLTI0MTIsNyArMjQxMiw3IEBA IHN0YXRpYyB2b2lkIGVkcF9wYW5lbF9vbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAK PiAgCXBwX2N0cmxfcmVnID0gX3BwX2N0cmxfcmVnKGludGVsX2RwKTsKPiAgCXBwID0gaXJvbmxh a2VfZ2V0X3BwX2NvbnRyb2woaW50ZWxfZHApOwo+IC0JaWYgKElTX0dFTjUoZGV2X3ByaXYpKSB7 Cj4gKwlpZiAoR1RfR0VOKGRldl9wcml2LCA1KSkgewo+ICAJCS8qIElMSyB3b3JrYXJvdW5kOiBk aXNhYmxlIHJlc2V0IGFyb3VuZCBwb3dlciBzZXF1ZW5jZSAqLwo+ICAJCXBwICY9IH5QQU5FTF9Q T1dFUl9SRVNFVDsKPiAgCQlJOTE1X1dSSVRFKHBwX2N0cmxfcmVnLCBwcCk7Cj4gQEAgLTI0MjAs NyArMjQyMCw3IEBAIHN0YXRpYyB2b2lkIGVkcF9wYW5lbF9vbihzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwKQo+ICAJfQo+ICAKPiAgCXBwIHw9IFBBTkVMX1BPV0VSX09OOwo+IC0JaWYgKCFJU19H RU41KGRldl9wcml2KSkKPiArCWlmICghR1RfR0VOKGRldl9wcml2LCA1KSkKPiAgCQlwcCB8PSBQ QU5FTF9QT1dFUl9SRVNFVDsKPiAgCj4gIAlJOTE1X1dSSVRFKHBwX2N0cmxfcmVnLCBwcCk7Cj4g QEAgLTI0MjksNyArMjQyOSw3IEBAIHN0YXRpYyB2b2lkIGVkcF9wYW5lbF9vbihzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwKQo+ICAJd2FpdF9wYW5lbF9vbihpbnRlbF9kcCk7Cj4gIAlpbnRlbF9k cC0+bGFzdF9wb3dlcl9vbiA9IGppZmZpZXM7Cj4gIAo+IC0JaWYgKElTX0dFTjUoZGV2X3ByaXYp KSB7Cj4gKwlpZiAoR1RfR0VOKGRldl9wcml2LCA1KSkgewo+ICAJCXBwIHw9IFBBTkVMX1BPV0VS X1JFU0VUOyAvKiByZXN0b3JlIHBhbmVsIHJlc2V0IGJpdCAqLwo+ICAJCUk5MTVfV1JJVEUocHBf Y3RybF9yZWcsIHBwKTsKPiAgCQlQT1NUSU5HX1JFQUQocHBfY3RybF9yZWcpOwo+IEBAIC0yNjU4 LDcgKzI2NTgsNyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9lZHBfcGxsX29uKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAsCj4gIAkgKiAxLiBXYWl0IGZvciB0aGUgc3RhcnQgb2YgdmVydGljYWwg Ymxhbmsgb24gdGhlIGVuYWJsZWQgcGlwZSBnb2luZyB0byBGREkKPiAgCSAqIDIuIFByb2dyYW0g RFAgUExMIGVuYWJsZQo+ICAJICovCj4gLQlpZiAoSVNfR0VONShkZXZfcHJpdikpCj4gKwlpZiAo R1RfR0VOKGRldl9wcml2LCA1KSkKPiAgCQlpbnRlbF93YWl0X2Zvcl92YmxhbmtfaWZfYWN0aXZl KGRldl9wcml2LCAhY3J0Yy0+cGlwZSk7Cj4gIAo+ICAJaW50ZWxfZHAtPkRQIHw9IERQX1BMTF9F TkFCTEU7Cj4gQEAgLTM2NjAsNyArMzY2MCw3IEBAIGludGVsX2RwX3NldF9zaWduYWxfbGV2ZWxz KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAl9IGVsc2UgaWYgKElTX0lWWUJSSURHRShk ZXZfcHJpdikgJiYgcG9ydCA9PSBQT1JUX0EpIHsKPiAgCQlzaWduYWxfbGV2ZWxzID0gaXZiX2Nw dV9lZHBfc2lnbmFsX2xldmVscyh0cmFpbl9zZXQpOwo+ICAJCW1hc2sgPSBFRFBfTElOS19UUkFJ Tl9WT0xfRU1QX01BU0tfSVZCOwo+IC0JfSBlbHNlIGlmIChJU19HRU42KGRldl9wcml2KSAmJiBw b3J0ID09IFBPUlRfQSkgewo+ICsJfSBlbHNlIGlmIChHVF9HRU4oZGV2X3ByaXYsIDYpICYmIHBv cnQgPT0gUE9SVF9BKSB7Cj4gIAkJc2lnbmFsX2xldmVscyA9IHNuYl9jcHVfZWRwX3NpZ25hbF9s ZXZlbHModHJhaW5fc2V0KTsKPiAgCQltYXNrID0gRURQX0xJTktfVFJBSU5fVk9MX0VNUF9NQVNL X1NOQjsKPiAgCX0gZWxzZSB7Cj4gQEAgLTUwMjYsMTcgKzUwMjYsMTcgQEAgYm9vbCBpbnRlbF9k aWdpdGFsX3BvcnRfY29ubmVjdGVkKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAK PiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKQo+ICAJCXJldHVybiBpY2xfZGlnaXRh bF9wb3J0X2Nvbm5lY3RlZChlbmNvZGVyKTsKPiAtCWVsc2UgaWYgKElTX0dFTjEwKGRldl9wcml2 KSB8fCBJU19HRU45X0JDKGRldl9wcml2KSkKPiArCWVsc2UgaWYgKEdUX0dFTihkZXZfcHJpdiwg MTApIHx8IElTX0dFTjlfQkMoZGV2X3ByaXYpKQo+ICAJCXJldHVybiBzcHRfZGlnaXRhbF9wb3J0 X2Nvbm5lY3RlZChlbmNvZGVyKTsKPiAgCWVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+ ICAJCXJldHVybiBieHRfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChlbmNvZGVyKTsKPiAtCWVsc2Ug aWYgKElTX0dFTjgoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoR1RfR0VOKGRldl9wcml2LCA4KSkK PiAgCQlyZXR1cm4gYmR3X2RpZ2l0YWxfcG9ydF9jb25uZWN0ZWQoZW5jb2Rlcik7Cj4gLQllbHNl IGlmIChJU19HRU43KGRldl9wcml2KSkKPiArCWVsc2UgaWYgKEdUX0dFTihkZXZfcHJpdiwgNykp Cj4gIAkJcmV0dXJuIGl2Yl9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKGVuY29kZXIpOwo+IC0JZWxz ZSBpZiAoSVNfR0VONihkZXZfcHJpdikpCj4gKwllbHNlIGlmIChHVF9HRU4oZGV2X3ByaXYsIDYp KQo+ICAJCXJldHVybiBzbmJfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChlbmNvZGVyKTsKPiAtCWVs c2UgaWYgKElTX0dFTjUoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoR1RfR0VOKGRldl9wcml2LCA1 KSkKPiAgCQlyZXR1cm4gaWxrX2RpZ2l0YWxfcG9ydF9jb25uZWN0ZWQoZW5jb2Rlcik7Cj4gIAo+ ICAJTUlTU0lOR19DQVNFKElOVEVMX0dFTihkZXZfcHJpdikpOwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2VuZ2luZV9jcy5jCj4gaW5kZXggNGY3YjY1NDYxNGU5Li40MDMyYTYzNWFjYjUgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwo+IEBAIC00MzgsNyArNDM4 LDcgQEAgdm9pZCBpbnRlbF9lbmdpbmVfaW5pdF9nbG9iYWxfc2Vxbm8oc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLCB1MzIgc2Vxbm8pCj4gIAkgKiB0aGUgc2VtYXBob3JlIHZhbHVlLCB0 aGVuIHdoZW4gdGhlIHNlcW5vIG1vdmVzIGJhY2t3YXJkcyBhbGwKPiAgCSAqIGZ1dHVyZSB3YWl0 cyB3aWxsIGNvbXBsZXRlIGluc3RhbnRseSAoY2F1c2luZyByZW5kZXJpbmcgY29ycnVwdGlvbiku Cj4gIAkgKi8KPiAtCWlmIChJU19HRU42KGRldl9wcml2KSB8fCBJU19HRU43KGRldl9wcml2KSkg ewo+ICsJaWYgKEdUX0dFTihkZXZfcHJpdiwgNikgfHwgR1RfR0VOKGRldl9wcml2LCA3KSkgewo+ ICAJCUk5MTVfV1JJVEUoUklOR19TWU5DXzAoZW5naW5lLT5tbWlvX2Jhc2UpLCAwKTsKPiAgCQlJ OTE1X1dSSVRFKFJJTkdfU1lOQ18xKGVuZ2luZS0+bW1pb19iYXNlKSwgMCk7Cj4gIAkJaWYgKEhB U19WRUJPWChkZXZfcHJpdikpCj4gQEAgLTgxMiw3ICs4MTIsNyBAQCB1MzIgaW50ZWxfY2FsY3Vs YXRlX21jcl9zX3NzX3NlbGVjdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g IAl1MzIgc2xpY2UgPSBmbHMoc3NldS0+c2xpY2VfbWFzayk7Cj4gIAl1MzIgc3Vic2xpY2UgPSBm bHMoc3NldS0+c3Vic2xpY2VfbWFza1tzbGljZV0pOwo+ICAKPiAtCWlmIChJU19HRU4xMChkZXZf cHJpdikpCj4gKwlpZiAoR1RfR0VOKGRldl9wcml2LCAxMCkpCj4gIAkJbWNyX3Nfc3Nfc2VsZWN0 ID0gR0VOOF9NQ1JfU0xJQ0Uoc2xpY2UpIHwKPiAgCQkJCSAgR0VOOF9NQ1JfU1VCU0xJQ0Uoc3Vi c2xpY2UpOwo+ICAJZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9mYmMuYwo+IGluZGV4IDlmNDE3Nzk5ODhlNS4uNTQ5ZTNkYzBlNDU3IDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMKPiBAQCAtODQsNyArODQsNyBAQCBzdGF0aWMgaW50 IGludGVsX2ZiY19jYWxjdWxhdGVfY2ZiX3NpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ICAJaW50IGxpbmVzOwo+ICAKPiAgCWludGVsX2ZiY19nZXRfcGxhbmVfc291cmNl X3NpemUoY2FjaGUsIE5VTEwsICZsaW5lcyk7Cj4gLQlpZiAoSVNfR0VONyhkZXZfcHJpdikpCj4g KwlpZiAoR1RfR0VOKGRldl9wcml2LCA3KSkKPiAgCQlsaW5lcyA9IG1pbihsaW5lcywgMjA0OCk7 Cj4gIAllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCj4gIAkJbGluZXMgPSBtaW4o bGluZXMsIDI1NjApOwo+IEBAIC0xMjcsNyArMTI3LDcgQEAgc3RhdGljIHZvaWQgaTh4eF9mYmNf YWN0aXZhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCWNmYl9waXRj aCA9IHBhcmFtcy0+ZmIuc3RyaWRlOwo+ICAKPiAgCS8qIEZCQ19DVEwgd2FudHMgMzJCIG9yIDY0 QiB1bml0cyAqLwo+IC0JaWYgKElTX0dFTjIoZGV2X3ByaXYpKQo+ICsJaWYgKEdUX0dFTihkZXZf cHJpdiwgMikpCj4gIAkJY2ZiX3BpdGNoID0gKGNmYl9waXRjaCAvIDMyKSAtIDE7Cj4gIAllbHNl Cj4gIAkJY2ZiX3BpdGNoID0gKGNmYl9waXRjaCAvIDY0KSAtIDE7Cj4gQEAgLTEzNiw3ICsxMzYs NyBAQCBzdGF0aWMgdm9pZCBpOHh4X2ZiY19hY3RpdmF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gIAlmb3IgKGkgPSAwOyBpIDwgKEZCQ19MTF9TSVpFIC8gMzIpICsgMTsg aSsrKQo+ICAJCUk5MTVfV1JJVEUoRkJDX1RBRyhpKSwgMCk7Cj4gIAo+IC0JaWYgKElTX0dFTjQo ZGV2X3ByaXYpKSB7Cj4gKwlpZiAoR1RfR0VOKGRldl9wcml2LCA0KSkgewo+ICAJCXUzMiBmYmNf Y3RsMjsKPiAgCj4gIAkJLyogU2V0IGl0IHVwLi4uICovCj4gQEAgLTIzMyw5ICsyMzMsOSBAQCBz dGF0aWMgdm9pZCBpbGtfZmJjX2FjdGl2YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiAgCj4gIAlpZiAocGFyYW1zLT5mbGFncyAmIFBMQU5FX0hBU19GRU5DRSkgewo+ICAJ CWRwZmNfY3RsIHw9IERQRkNfQ1RMX0ZFTkNFX0VOOwo+IC0JCWlmIChJU19HRU41KGRldl9wcml2 KSkKPiArCQlpZiAoR1RfR0VOKGRldl9wcml2LCA1KSkKPiAgCQkJZHBmY19jdGwgfD0gcGFyYW1z LT52bWEtPmZlbmNlLT5pZDsKPiAtCQlpZiAoSVNfR0VONihkZXZfcHJpdikpIHsKPiArCQlpZiAo R1RfR0VOKGRldl9wcml2LCA2KSkgewo+ICAJCQlJOTE1X1dSSVRFKFNOQl9EUEZDX0NUTF9TQSwK PiAgCQkJCSAgIFNOQl9DUFVfRkVOQ0VfRU5BQkxFIHwKPiAgCQkJCSAgIHBhcmFtcy0+dm1hLT5m ZW5jZS0+aWQpOwo+IEBAIC0yNDMsNyArMjQzLDcgQEAgc3RhdGljIHZvaWQgaWxrX2ZiY19hY3Rp dmF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJCQkgICBwYXJhbXMt PmNydGMuZmVuY2VfeV9vZmZzZXQpOwo+ICAJCX0KPiAgCX0gZWxzZSB7Cj4gLQkJaWYgKElTX0dF TjYoZGV2X3ByaXYpKSB7Cj4gKwkJaWYgKEdUX0dFTihkZXZfcHJpdiwgNikpIHsKPiAgCQkJSTkx NV9XUklURShTTkJfRFBGQ19DVExfU0EsIDApOwo+ICAJCQlJOTE1X1dSSVRFKERQRkNfQ1BVX0ZF TkNFX09GRlNFVCwgMCk7Cj4gIAkJfQo+IEBAIC0yODIsNyArMjgyLDcgQEAgc3RhdGljIHZvaWQg Z2VuN19mYmNfYWN0aXZhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJ aW50IHRocmVzaG9sZCA9IGRldl9wcml2LT5mYmMudGhyZXNob2xkOwo+ICAKPiAgCS8qIERpc3Bs YXkgV0EgIzA1Mjk6IHNrbCwga2JsLCBieHQuICovCj4gLQlpZiAoSVNfR0VOOShkZXZfcHJpdikg JiYgIUlTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKSB7Cj4gKwlpZiAoR1RfR0VOKGRldl9wcml2LCA5 KSAmJiAhSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpIHsKPiAgCQl1MzIgdmFsID0gSTkxNV9SRUFE KENISUNLRU5fTUlTQ180KTsKPiAgCj4gIAkJdmFsICY9IH4oRkJDX1NUUklERV9PVkVSUklERSB8 IEZCQ19TVFJJREVfTUFTSyk7Cj4gQEAgLTU4MSwxMCArNTgxLDEwIEBAIHN0YXRpYyBib29sIHN0 cmlkZV9pc192YWxpZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlpZiAo c3RyaWRlIDwgNTEyKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gLQlpZiAoSVNfR0VOMihkZXZf cHJpdikgfHwgSVNfR0VOMyhkZXZfcHJpdikpCj4gKwlpZiAoR1RfR0VOKGRldl9wcml2LCAyKSB8 fCBHVF9HRU4oZGV2X3ByaXYsIDMpKQo+ICAJCXJldHVybiBzdHJpZGUgPT0gNDA5NiB8fCBzdHJp ZGUgPT0gODE5MjsKPiAgCj4gLQlpZiAoSVNfR0VONChkZXZfcHJpdikgJiYgIUlTX0c0WChkZXZf cHJpdikgJiYgc3RyaWRlIDwgMjA0OCkKPiArCWlmIChHVF9HRU4oZGV2X3ByaXYsIDQpICYmICFJ U19HNFgoZGV2X3ByaXYpICYmIHN0cmlkZSA8IDIwNDgpCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAK PiAgCWlmIChzdHJpZGUgPiAxNjM4NCkKPiBAQCAtNjAzLDcgKzYwMyw3IEBAIHN0YXRpYyBib29s IHBpeGVsX2Zvcm1hdF9pc192YWxpZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gIAljYXNlIERSTV9GT1JNQVRfWFJHQjE1NTU6Cj4gIAljYXNlIERSTV9GT1JNQVRfUkdCNTY1 Ogo+ICAJCS8qIDE2YnBwIG5vdCBzdXBwb3J0ZWQgb24gZ2VuMiAqLwo+IC0JCWlmIChJU19HRU4y KGRldl9wcml2KSkKPiArCQlpZiAoR1RfR0VOKGRldl9wcml2LCAyKSkKPiAgCQkJcmV0dXJuIGZh bHNlOwo+ICAJCS8qIFdhRmJjT25seTF0bzFSYXRpbzpjdGcgKi8KPiAgCQlpZiAoSVNfRzRYKGRl dl9wcml2KSkKPiBAQCAtODM5LDcgKzgzOSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2ZiY19nZXRf cmVnX3BhcmFtcyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCj4gIAlwYXJhbXMtPmNmYl9z aXplID0gaW50ZWxfZmJjX2NhbGN1bGF0ZV9jZmJfc2l6ZShkZXZfcHJpdiwgY2FjaGUpOwo+ICAK PiAtCWlmIChJU19HRU45KGRldl9wcml2KSAmJiAhSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCj4g KwlpZiAoR1RfR0VOKGRldl9wcml2LCA5KSAmJiAhSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCj4g IAkJcGFyYW1zLT5nZW45X3dhX2NmYl9zdHJpZGUgPSBESVZfUk9VTkRfVVAoY2FjaGUtPnBsYW5l LnNyY193LAo+ICAJCQkJCQkzMiAqIGZiYy0+dGhyZXNob2xkKSAqIDg7Cj4gIH0KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmlmb191bmRlcnJ1bi5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZmlmb191bmRlcnJ1bi5jCj4gaW5kZXggNzdjMTIzY2M4ODE3 Li4wNmY2OWJjYTBmZjQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Zmlmb191bmRlcnJ1bi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmlmb191 bmRlcnJ1bi5jCj4gQEAgLTI2MCw5ICsyNjAsOSBAQCBzdGF0aWMgYm9vbCBfX2ludGVsX3NldF9j cHVfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCj4g IAlpZiAoSEFTX0dNQ0hfRElTUExBWShkZXZfcHJpdikpCj4gIAkJaTl4eF9zZXRfZmlmb191bmRl cnJ1bl9yZXBvcnRpbmcoZGV2LCBwaXBlLCBlbmFibGUsIG9sZCk7Cj4gLQllbHNlIGlmIChJU19H RU41KGRldl9wcml2KSB8fCBJU19HRU42KGRldl9wcml2KSkKPiArCWVsc2UgaWYgKEdUX0dFTihk ZXZfcHJpdiwgNSkgfHwgR1RfR0VOKGRldl9wcml2LCA2KSkKPiAgCQlpcm9ubGFrZV9zZXRfZmlm b191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2LCBwaXBlLCBlbmFibGUpOwo+IC0JZWxzZSBpZiAoSVNf R0VONyhkZXZfcHJpdikpCj4gKwllbHNlIGlmIChHVF9HRU4oZGV2X3ByaXYsIDcpKQo+ICAJCWl2 eWJyaWRnZV9zZXRfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2LCBwaXBlLCBlbmFibGUsIG9s ZCk7Cj4gIAllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCj4gIAkJYnJvYWR3ZWxs X3NldF9maWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXYsIHBpcGUsIGVuYWJsZSk7Cj4gQEAgLTQy Myw3ICs0MjMsNyBAQCB2b2lkIGludGVsX2NoZWNrX2NwdV9maWZvX3VuZGVycnVucyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICAJCWlmIChIQVNfR01DSF9ESVNQTEFZ KGRldl9wcml2KSkKPiAgCQkJaTl4eF9jaGVja19maWZvX3VuZGVycnVucyhjcnRjKTsKPiAtCQll bHNlIGlmIChJU19HRU43KGRldl9wcml2KSkKPiArCQllbHNlIGlmIChHVF9HRU4oZGV2X3ByaXYs IDcpKQo+ICAJCQlpdnlicmlkZ2VfY2hlY2tfZmlmb191bmRlcnJ1bnMoY3J0Yyk7Cj4gIAl9Cj4g IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfZncuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19mdy5jCj4gaW5kZXggYWU4ZTEwM2EyYzRkLi45 ZmRjZTQ3NzU1ZTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Vj X2Z3LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfZncuYwo+IEBAIC0x MTQsNyArMTE0LDcgQEAgc3RhdGljIHZvaWQgZ3VjX3ByZXBhcmVfeGZlcihzdHJ1Y3QgaW50ZWxf Z3VjICpndWMpCj4gIAllbHNlCj4gIAkJSTkxNV9XUklURShHRU45X0dUX1BNX0NPTkZJRywgR1Rf RE9PUkJFTExfRU5BQkxFKTsKPiAgCj4gLQlpZiAoSVNfR0VOOShkZXZfcHJpdikpIHsKPiArCWlm IChHVF9HRU4oZGV2X3ByaXYsIDkpKSB7Cj4gIAkJLyogRE9QIENsb2NrIEdhdGluZyBFbmFibGUg Zm9yIEd1QyBjbG9ja3MgKi8KPiAgCQlJOTE1X1dSSVRFKEdFTjdfTUlTQ0NQQ1RMLCAoR0VOOF9E T1BfQ0xPQ0tfR0FURV9HVUNfRU5BQkxFIHwKPiAgCQkJCQkgICAgSTkxNV9SRUFEKEdFTjdfTUlT Q0NQQ1RMKSkpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oYW5n Y2hlY2suYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hhbmdjaGVjay5jCj4gaW5kZXgg OWIxNWVkMTQwOWFlLi44NDg2N2NhMmNjMGMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfaGFuZ2NoZWNrLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9oYW5nY2hlY2suYwo+IEBAIC0yMzYsNyArMjM2LDcgQEAgZW5naW5lX3N0dWNrKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTY0IGFjdGhkKQo+ICAJaWYgKGhhICE9IEVOR0lORV9E RUFEKQo+ICAJCXJldHVybiBoYTsKPiAgCj4gLQlpZiAoSVNfR0VOMihkZXZfcHJpdikpCj4gKwlp ZiAoR1RfR0VOKGRldl9wcml2LCAyKSkKPiAgCQlyZXR1cm4gRU5HSU5FX0RFQUQ7Cj4gIAo+ICAJ LyogSXMgdGhlIGNoaXAgaGFuZ2luZyBvbiBhIFdBSVRfRk9SX0VWRU5UPwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2xyYy5jCj4gaW5kZXggMjJiNTdiODkyNmZjLi5kOGI1M2EwZWFjMDkgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IEBAIC0xOTkwLDcgKzE5OTAsNyBAQCBzdGF0aWMgaW50 IGdlbjhfZW1pdF9mbHVzaF9yZW5kZXIoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCwKPiAg CQkgKiBPbiBHRU45OiBiZWZvcmUgVkZfQ0FDSEVfSU5WQUxJREFURSB3ZSBuZWVkIHRvIGVtaXQg YSBOVUxMCj4gIAkJICogcGlwZSBjb250cm9sLgo+ICAJCSAqLwo+IC0JCWlmIChJU19HRU45KHJl cXVlc3QtPmk5MTUpKQo+ICsJCWlmIChHVF9HRU4ocmVxdWVzdC0+aTkxNSwgOSkpCj4gIAkJCXZm X2ZsdXNoX3dhID0gdHJ1ZTsKPiAgCj4gIAkJLyogV2FGb3JHQU1IYW5nOmtibCAqLwo+IEBAIC0y MzY4LDcgKzIzNjgsNyBAQCBtYWtlX3JwY3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICAJICogc3Vic2xpY2VzIGFyZSBlbmFibGVkLCBvciBhIGNvdW50IGJldHdlZW4gb25l IGFuZCBmb3VyIG9uIHRoZSBmaXJzdAo+ICAJICogc2xpY2UuCj4gIAkgKi8KPiAtCWlmIChJU19H RU4xMShkZXZfcHJpdikgJiYgc2xpY2VzID09IDEgJiYgc3Vic2xpY2VzID49IDQpIHsKPiArCWlm IChHVF9HRU4oZGV2X3ByaXYsIDExKSAmJiBzbGljZXMgPT0gMSAmJiBzdWJzbGljZXMgPj0gNCkg ewo+ICAJCUdFTV9CVUdfT04oc3Vic2xpY2VzICYgMSk7Cj4gIAo+ICAJCXN1YnNsaWNlX3BnID0g ZmFsc2U7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYwo+IGluZGV4IGU2YzVkOTg1ZWEwYS4u NzlmYTZiMDlhOGRiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2 ZHMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYwo+IEBAIC0yNzks NyArMjc5LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHJlX2VuYWJsZV9sdmRzKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLAo+ICAJICogc3BlY2lhbCBsdmRzIGRpdGhlciBjb250cm9sIGJp dCBvbiBwY2gtc3BsaXQgcGxhdGZvcm1zLCBkaXRoZXJpbmcgaXMKPiAgCSAqIG9ubHkgY29udHJv bGxlZCB0aHJvdWdoIHRoZSBQSVBFQ09ORiByZWcuCj4gIAkgKi8KPiAtCWlmIChJU19HRU40KGRl dl9wcml2KSkgewo+ICsJaWYgKEdUX0dFTihkZXZfcHJpdiwgNCkpIHsKPiAgCQkvKgo+ICAJCSAq IEJzcGVjIHdvcmRpbmcgc3VnZ2VzdHMgdGhhdCBMVkRTIHBvcnQgZGl0aGVyaW5nIG9ubHkgZXhp c3RzCj4gIAkJICogZm9yIDE4YnBwIHBhbmVscy4KPiBAQCAtOTE5LDcgKzkxOSw3IEBAIHZvaWQg aW50ZWxfbHZkc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCWlu dGVsX2VuY29kZXItPmNsb25lYWJsZSA9IDA7Cj4gIAlpZiAoSEFTX1BDSF9TUExJVChkZXZfcHJp dikpCj4gIAkJaW50ZWxfZW5jb2Rlci0+Y3J0Y19tYXNrID0gKDEgPDwgMCkgfCAoMSA8PCAxKSB8 ICgxIDw8IDIpOwo+IC0JZWxzZSBpZiAoSVNfR0VONChkZXZfcHJpdikpCj4gKwllbHNlIGlmIChH VF9HRU4oZGV2X3ByaXYsIDQpKQo+ICAJCWludGVsX2VuY29kZXItPmNydGNfbWFzayA9ICgxIDw8 IDApIHwgKDEgPDwgMSk7Cj4gIAllbHNlCj4gIAkJaW50ZWxfZW5jb2Rlci0+Y3J0Y19tYXNrID0g KDEgPDwgMSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3Mu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3MuYwo+IGluZGV4IDc3ZTk4NzFhOGM5 YS4uODIwMTc3NGMyYzBmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X21vY3MuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3MuYwo+IEBAIC0x OTMsNyArMTkzLDcgQEAgc3RhdGljIGJvb2wgZ2V0X21vY3Nfc2V0dGluZ3Moc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJfQo+ICAKPiAgCS8qIFdhRGlzYWJsZVNraXBDYWNo aW5nOnNrbCxieHQsa2JsLGdsayAqLwo+IC0JaWYgKElTX0dFTjkoZGV2X3ByaXYpKSB7Cj4gKwlp ZiAoR1RfR0VOKGRldl9wcml2LCA5KSkgewo+ICAJCWludCBpOwo+ICAKPiAgCQlmb3IgKGkgPSAw OyBpIDwgdGFibGUtPnNpemU7IGkrKykKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfb3ZlcmxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5j Cj4gaW5kZXggNzJlYjdlNDhlOGJjLi5jOGVkZGY5NDE3NjIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfb3ZlcmxheS5jCj4gQEAgLTU0MSw3ICs1NDEsNyBAQCBzdGF0aWMgdTMyIGNhbGNf c3dpZHRoc3coc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgb2Zmc2V0LCB1 MzIgd2lkdAo+ICB7Cj4gIAl1MzIgc3c7Cj4gIAo+IC0JaWYgKElTX0dFTjIoZGV2X3ByaXYpKQo+ ICsJaWYgKEdUX0dFTihkZXZfcHJpdiwgMikpCj4gIAkJc3cgPSBBTElHTigob2Zmc2V0ICYgMzEp ICsgd2lkdGgsIDMyKTsKPiAgCWVsc2UKPiAgCQlzdyA9IEFMSUdOKChvZmZzZXQgJiA2MykgKyB3 aWR0aCwgNjQpOwo+IEBAIC03NzgsNyArNzc4LDcgQEAgc3RhdGljIGludCBpbnRlbF9vdmVybGF5 X2RvX3B1dF9pbWFnZShzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSwKPiAgCQl1MzIgb2Nv bmZpZzsKPiAgCj4gIAkJb2NvbmZpZyA9IE9DT05GX0NDX09VVF84QklUOwo+IC0JCWlmIChJU19H RU40KGRldl9wcml2KSkKPiArCQlpZiAoR1RfR0VOKGRldl9wcml2LCA0KSkKPiAgCQkJb2NvbmZp ZyB8PSBPQ09ORl9DU0NfTU9ERV9CVDcwOTsKPiAgCQlvY29uZmlnIHw9IHBpcGUgPT0gMCA/Cj4g IAkJCU9DT05GX1BJUEVfQSA6IE9DT05GX1BJUEVfQjsKPiBAQCAtMTAxMiw3ICsxMDEyLDcgQEAg c3RhdGljIGludCBjaGVja19vdmVybGF5X3NyYyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gIAo+ICAJaWYgKHJlYy0+c3RyaWRlX1kgJiBzdHJpZGVfbWFzayB8fCByZWMtPnN0 cmlkZV9VViAmIHN0cmlkZV9tYXNrKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+IC0JaWYgKElTX0dF TjQoZGV2X3ByaXYpICYmIHJlYy0+c3RyaWRlX1kgPCA1MTIpCj4gKwlpZiAoR1RfR0VOKGRldl9w cml2LCA0KSAmJiByZWMtPnN0cmlkZV9ZIDwgNTEyKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAK PiAgCXRtcCA9IChyZWMtPmZsYWdzICYgSTkxNV9PVkVSTEFZX1RZUEVfTUFTSykgPT0gSTkxNV9P VkVSTEFZX1lVVl9QTEFOQVIgPwo+IEBAIC0xMjQ2LDcgKzEyNDYsNyBAQCBpbnQgaW50ZWxfb3Zl cmxheV9hdHRyc19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAJ CWF0dHJzLT5jb250cmFzdCAgID0gb3ZlcmxheS0+Y29udHJhc3Q7Cj4gIAkJYXR0cnMtPnNhdHVy YXRpb24gPSBvdmVybGF5LT5zYXR1cmF0aW9uOwo+ICAKPiAtCQlpZiAoIUlTX0dFTjIoZGV2X3By aXYpKSB7Cj4gKwkJaWYgKCFHVF9HRU4oZGV2X3ByaXYsIDIpKSB7Cj4gIAkJCWF0dHJzLT5nYW1t YTAgPSBJOTE1X1JFQUQoT0dBTUMwKTsKPiAgCQkJYXR0cnMtPmdhbW1hMSA9IEk5MTVfUkVBRChP R0FNQzEpOwo+ICAJCQlhdHRycy0+Z2FtbWEyID0gSTkxNV9SRUFEKE9HQU1DMik7Cj4gQEAgLTEy NzAsNyArMTI3MCw3IEBAIGludCBpbnRlbF9vdmVybGF5X2F0dHJzX2lvY3RsKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gIAkJdXBkYXRlX3JlZ19hdHRycyhvdmVybGF5LCBv dmVybGF5LT5yZWdzKTsKPiAgCj4gIAkJaWYgKGF0dHJzLT5mbGFncyAmIEk5MTVfT1ZFUkxBWV9V UERBVEVfR0FNTUEpIHsKPiAtCQkJaWYgKElTX0dFTjIoZGV2X3ByaXYpKQo+ICsJCQlpZiAoR1Rf R0VOKGRldl9wcml2LCAyKSkKPiAgCQkJCWdvdG8gb3V0X3VubG9jazsKPiAgCj4gIAkJCWlmIChv dmVybGF5LT5hY3RpdmUpIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcGFuZWwuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKPiBpbmRleCBl NmNkN2I1NWMwMTguLmU2NTg5MDRjNTU3NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wYW5lbC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFu ZWwuYwo+IEBAIC01NjMsNyArNTYzLDcgQEAgc3RhdGljIHZvaWQgaTl4eF9zZXRfYmFja2xpZ2h0 KGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlLCB1MzIKPiAgCQlw Y2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2X3ByaXYtPmRybS5wZGV2LCBMQlBDLCBsYnBjKTsKPiAg CX0KPiAgCj4gLQlpZiAoSVNfR0VONChkZXZfcHJpdikpIHsKPiArCWlmIChHVF9HRU4oZGV2X3By aXYsIDQpKSB7Cj4gIAkJbWFzayA9IEJBQ0tMSUdIVF9EVVRZX0NZQ0xFX01BU0s7Cj4gIAl9IGVs c2Ugewo+ICAJCWxldmVsIDw8PSAxOwo+IEBAIC05MjksNyArOTI5LDcgQEAgc3RhdGljIHZvaWQg aTl4eF9lbmFibGVfYmFja2xpZ2h0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLAo+ICAJICogODU1Z20gb25seSwgYnV0IGNoZWNraW5nIGZvciBnZW4yIGlzIHNhZmUs IGFzIDg1NWdtIGlzIHRoZSBvbmx5IGdlbjIKPiAgCSAqIHRoYXQgaGFzIGJhY2tsaWdodC4KPiAg CSAqLwo+IC0JaWYgKElTX0dFTjIoZGV2X3ByaXYpKQo+ICsJaWYgKEdUX0dFTihkZXZfcHJpdiwg MikpCj4gIAkJSTkxNV9XUklURShCTENfSElTVF9DVEwsIEJMTV9ISVNUT0dSQU1fRU5BQkxFKTsK PiAgfQo+ICAKPiBAQCAtMTU1Nyw3ICsxNTU3LDcgQEAgc3RhdGljIGludCBpOXh4X3NldHVwX2Jh Y2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsIGVudW0gcGlwZSB1bnUK PiAgCj4gIAljdGwgPSBJOTE1X1JFQUQoQkxDX1BXTV9DVEwpOwo+ICAKPiAtCWlmIChJU19HRU4y KGRldl9wcml2KSB8fCBJU19JOTE1R00oZGV2X3ByaXYpIHx8IElTX0k5NDVHTShkZXZfcHJpdikp Cj4gKwlpZiAoR1RfR0VOKGRldl9wcml2LCAyKSB8fCBJU19JOTE1R00oZGV2X3ByaXYpIHx8IElT X0k5NDVHTShkZXZfcHJpdikpCj4gIAkJcGFuZWwtPmJhY2tsaWdodC5jb21iaW5hdGlvbl9tb2Rl ID0gY3RsICYgQkxNX0xFR0FDWV9NT0RFOwo+ICAKPiAgCWlmIChJU19QSU5FVklFVyhkZXZfcHJp dikpCj4gQEAgLTE4ODYsNyArMTg4Niw3IEBAIGludGVsX3BhbmVsX2luaXRfYmFja2xpZ2h0X2Z1 bmNzKHN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwpCj4gIAkJCXBhbmVsLT5iYWNrbGlnaHQuZ2V0 ID0gdmx2X2dldF9iYWNrbGlnaHQ7Cj4gIAkJCXBhbmVsLT5iYWNrbGlnaHQuaHpfdG9fcHdtID0g dmx2X2h6X3RvX3B3bTsKPiAgCQl9Cj4gLQl9IGVsc2UgaWYgKElTX0dFTjQoZGV2X3ByaXYpKSB7 Cj4gKwl9IGVsc2UgaWYgKEdUX0dFTihkZXZfcHJpdiwgNCkpIHsKPiAgCQlwYW5lbC0+YmFja2xp Z2h0LnNldHVwID0gaTk2NV9zZXR1cF9iYWNrbGlnaHQ7Cj4gIAkJcGFuZWwtPmJhY2tsaWdodC5l bmFibGUgPSBpOTY1X2VuYWJsZV9iYWNrbGlnaHQ7Cj4gIAkJcGFuZWwtPmJhY2tsaWdodC5kaXNh YmxlID0gaTk2NV9kaXNhYmxlX2JhY2tsaWdodDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcGlwZV9jcmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bp cGVfY3JjLmMKPiBpbmRleCBmM2M5MDEwZTMzMmEuLmE0MjY5NzhiMjMzZCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9waXBlX2NyYy5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcGlwZV9jcmMuYwo+IEBAIC00MjcsMTMgKzQyNywxMyBAQCBzdGF0 aWMgaW50IGdldF9uZXdfY3JjX2N0bF9yZWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ICAJCQkgICAgICAgZW51bSBpbnRlbF9waXBlX2NyY19zb3VyY2UgKnNvdXJjZSwgdTMy ICp2YWwsCj4gIAkJCSAgICAgICBib29sIHNldF93YSkKPiAgewo+IC0JaWYgKElTX0dFTjIoZGV2 X3ByaXYpKQo+ICsJaWYgKEdUX0dFTihkZXZfcHJpdiwgMikpCj4gIAkJcmV0dXJuIGk4eHhfcGlw ZV9jcmNfY3RsX3JlZyhzb3VyY2UsIHZhbCk7Cj4gIAllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3By aXYpIDwgNSkKPiAgCQlyZXR1cm4gaTl4eF9waXBlX2NyY19jdGxfcmVnKGRldl9wcml2LCBwaXBl LCBzb3VyY2UsIHZhbCk7Cj4gIAllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJ U19DSEVSUllWSUVXKGRldl9wcml2KSkKPiAgCQlyZXR1cm4gdmx2X3BpcGVfY3JjX2N0bF9yZWco ZGV2X3ByaXYsIHBpcGUsIHNvdXJjZSwgdmFsKTsKPiAtCWVsc2UgaWYgKElTX0dFTjUoZGV2X3By aXYpIHx8IElTX0dFTjYoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoR1RfR0VOKGRldl9wcml2LCA1 KSB8fCBHVF9HRU4oZGV2X3ByaXYsIDYpKQo+ICAJCXJldHVybiBpbGtfcGlwZV9jcmNfY3RsX3Jl Zyhzb3VyY2UsIHZhbCk7Cj4gIAllbHNlCj4gIAkJcmV0dXJuIGl2Yl9waXBlX2NyY19jdGxfcmVn KGRldl9wcml2LCBwaXBlLCBzb3VyY2UsIHZhbCwgc2V0X3dhKTsKPiBAQCAtNTQ0LDEzICs1NDQs MTMgQEAgc3RhdGljIGludAo+ICBpbnRlbF9pc192YWxpZF9jcmNfc291cmNlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJICBjb25zdCBlbnVtIGludGVsX3BpcGVfY3Jj X3NvdXJjZSBzb3VyY2UpCj4gIHsKPiAtCWlmIChJU19HRU4yKGRldl9wcml2KSkKPiArCWlmIChH VF9HRU4oZGV2X3ByaXYsIDIpKQo+ICAJCXJldHVybiBpOHh4X2NyY19zb3VyY2VfdmFsaWQoZGV2 X3ByaXYsIHNvdXJjZSk7Cj4gIAllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNSkKPiAg CQlyZXR1cm4gaTl4eF9jcmNfc291cmNlX3ZhbGlkKGRldl9wcml2LCBzb3VyY2UpOwo+ICAJZWxz ZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikp Cj4gIAkJcmV0dXJuIHZsdl9jcmNfc291cmNlX3ZhbGlkKGRldl9wcml2LCBzb3VyY2UpOwo+IC0J ZWxzZSBpZiAoSVNfR0VONShkZXZfcHJpdikgfHwgSVNfR0VONihkZXZfcHJpdikpCj4gKwllbHNl IGlmIChHVF9HRU4oZGV2X3ByaXYsIDUpIHx8IEdUX0dFTihkZXZfcHJpdiwgNikpCj4gIAkJcmV0 dXJuIGlsa19jcmNfc291cmNlX3ZhbGlkKGRldl9wcml2LCBzb3VyY2UpOwo+ICAJZWxzZQo+ICAJ CXJldHVybiBpdmJfY3JjX3NvdXJjZV92YWxpZChkZXZfcHJpdiwgc291cmNlKTsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3BtLmMKPiBpbmRleCA5ZGE4ZmYyNjNkMzYuLjc0ZTE0ZDg4NDhmOCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IEBAIC0yMjczLDcgKzIyNzMsNyBAQCBzdGF0aWMgdm9p ZCBpOXh4X3VwZGF0ZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqdW51c2VkX2NydGMpCj4gIAo+ICAJ aWYgKElTX0k5NDVHTShkZXZfcHJpdikpCj4gIAkJd21faW5mbyA9ICZpOTQ1X3dtX2luZm87Cj4g LQllbHNlIGlmICghSVNfR0VOMihkZXZfcHJpdikpCj4gKwllbHNlIGlmICghR1RfR0VOKGRldl9w cml2LCAyKSkKPiAgCQl3bV9pbmZvID0gJmk5MTVfd21faW5mbzsKPiAgCWVsc2UKPiAgCQl3bV9p bmZvID0gJmk4MzBfYV93bV9pbmZvOwo+IEBAIC0yMjg3LDcgKzIyODcsNyBAQCBzdGF0aWMgdm9p ZCBpOXh4X3VwZGF0ZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqdW51c2VkX2NydGMpCj4gIAkJCWNy dGMtPmJhc2UucHJpbWFyeS0+c3RhdGUtPmZiOwo+ICAJCWludCBjcHA7Cj4gIAo+IC0JCWlmIChJ U19HRU4yKGRldl9wcml2KSkKPiArCQlpZiAoR1RfR0VOKGRldl9wcml2LCAyKSkKPiAgCQkJY3Bw ID0gNDsKPiAgCQllbHNlCj4gIAkJCWNwcCA9IGZiLT5mb3JtYXQtPmNwcFswXTsKPiBAQCAtMjMw Miw3ICsyMzAyLDcgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfd20oc3RydWN0IGludGVsX2Ny dGMgKnVudXNlZF9jcnRjKQo+ICAJCQlwbGFuZWFfd20gPSB3bV9pbmZvLT5tYXhfd207Cj4gIAl9 Cj4gIAo+IC0JaWYgKElTX0dFTjIoZGV2X3ByaXYpKQo+ICsJaWYgKEdUX0dFTihkZXZfcHJpdiwg MikpCj4gIAkJd21faW5mbyA9ICZpODMwX2JjX3dtX2luZm87Cj4gIAo+ICAJZmlmb19zaXplID0g ZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2ZpZm9fc2l6ZShkZXZfcHJpdiwgUExBTkVfQik7Cj4gQEAg LTIzMTQsNyArMjMxNCw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3dtKHN0cnVjdCBpbnRl bF9jcnRjICp1bnVzZWRfY3J0YykKPiAgCQkJY3J0Yy0+YmFzZS5wcmltYXJ5LT5zdGF0ZS0+ZmI7 Cj4gIAkJaW50IGNwcDsKPiAgCj4gLQkJaWYgKElTX0dFTjIoZGV2X3ByaXYpKQo+ICsJCWlmIChH VF9HRU4oZGV2X3ByaXYsIDIpKQo+ICAJCQljcHAgPSA0Owo+ICAJCWVsc2UKPiAgCQkJY3BwID0g ZmItPmZvcm1hdC0+Y3BwWzBdOwo+IEBAIC0yOTE3LDcgKzI5MTcsNyBAQCBzdGF0aWMgdm9pZCBp bnRlbF9maXh1cF9zcHJfd21fbGF0ZW5jeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gIAkJCQkgICAgICAgdWludDE2X3Qgd21bNV0pCj4gIHsKPiAgCS8qIElMSyBzcHJpdGUg TFAwIGxhdGVuY3kgaXMgMTMwMCBucyAqLwo+IC0JaWYgKElTX0dFTjUoZGV2X3ByaXYpKQo+ICsJ aWYgKEdUX0dFTihkZXZfcHJpdiwgNSkpCj4gIAkJd21bMF0gPSAxMzsKPiAgfQo+ICAKPiBAQCAt MjkyNSw3ICsyOTI1LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZml4dXBfY3VyX3dtX2xhdGVuY3ko c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkJICAgICAgIHVpbnQxNl90 IHdtWzVdKQo+ICB7Cj4gIAkvKiBJTEsgY3Vyc29yIExQMCBsYXRlbmN5IGlzIDEzMDAgbnMgKi8K PiAtCWlmIChJU19HRU41KGRldl9wcml2KSkKPiArCWlmIChHVF9HRU4oZGV2X3ByaXYsIDUpKQo+ ICAJCXdtWzBdID0gMTM7Cj4gIH0KPiAgCj4gQEAgLTMwMjQsNyArMzAyNCw3IEBAIHN0YXRpYyB2 b2lkIGlsa19zZXR1cF93bV9sYXRlbmN5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiAgCWludGVsX3ByaW50X3dtX2xhdGVuY3koZGV2X3ByaXYsICJTcHJpdGUiLCBkZXZfcHJp di0+d20uc3ByX2xhdGVuY3kpOwo+ICAJaW50ZWxfcHJpbnRfd21fbGF0ZW5jeShkZXZfcHJpdiwg IkN1cnNvciIsIGRldl9wcml2LT53bS5jdXJfbGF0ZW5jeSk7Cj4gIAo+IC0JaWYgKElTX0dFTjYo ZGV2X3ByaXYpKQo+ICsJaWYgKEdUX0dFTihkZXZfcHJpdiwgNikpCj4gIAkJc25iX3dtX2xhdGVu Y3lfcXVpcmsoZGV2X3ByaXYpOwo+ICB9Cj4gIAo+IEBAIC0zMjc4LDcgKzMyNzgsNyBAQCBzdGF0 aWMgdm9pZCBpbGtfd21fbWVyZ2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCSAqIFdoYXQg d2Ugc2hvdWxkIGNoZWNrIGhlcmUgaXMgd2hldGhlciBGQkMgY2FuIGJlCj4gIAkgKiBlbmFibGVk IHNvbWV0aW1lIGxhdGVyLgo+ICAJICovCj4gLQlpZiAoSVNfR0VONShkZXZfcHJpdikgJiYgIW1l cmdlZC0+ZmJjX3dtX2VuYWJsZWQgJiYKPiArCWlmIChHVF9HRU4oZGV2X3ByaXYsIDUpICYmICFt ZXJnZWQtPmZiY193bV9lbmFibGVkICYmCj4gIAkgICAgaW50ZWxfZmJjX2lzX2FjdGl2ZShkZXZf cHJpdikpIHsKPiAgCQlmb3IgKGxldmVsID0gMjsgbGV2ZWwgPD0gbWF4X2xldmVsOyBsZXZlbCsr KSB7Cj4gIAkJCXN0cnVjdCBpbnRlbF93bV9sZXZlbCAqd20gPSAmbWVyZ2VkLT53bVtsZXZlbF07 Cj4gQEAgLTM3MTYsOSArMzcxNiw5IEBAIGJvb2wgaW50ZWxfY2FuX2VuYWJsZV9zYWd2KHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCWlmICghaW50ZWxfaGFzX3NhZ3YoZGV2X3By aXYpKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gLQlpZiAoSVNfR0VOOShkZXZfcHJpdikpCj4g KwlpZiAoR1RfR0VOKGRldl9wcml2LCA5KSkKPiAgCQlzYWd2X2Jsb2NrX3RpbWVfdXMgPSAzMDsK PiAtCWVsc2UgaWYgKElTX0dFTjEwKGRldl9wcml2KSkKPiArCWVsc2UgaWYgKEdUX0dFTihkZXZf cHJpdiwgMTApKQo+ICAJCXNhZ3ZfYmxvY2tfdGltZV91cyA9IDIwOwo+ICAJZWxzZQo+ICAJCXNh Z3ZfYmxvY2tfdGltZV91cyA9IDEwOwo+IEBAIC00NjY2LDcgKzQ2NjYsNyBAQCBza2xfY29tcHV0 ZV9wbGFuZV93bV9wYXJhbXMoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+ICAKPiAgCQl3cC0+cGxhbmVfYmxvY2tzX3Blcl9saW5lID0gZGl2X2ZpeGVkMTYoaW50ZXJt X3BicGwsCj4gIAkJCQkJCQl3cC0+eV9taW5fc2NhbmxpbmVzKTsKPiAtCX0gZWxzZSBpZiAod3At PnhfdGlsZWQgJiYgSVNfR0VOOShkZXZfcHJpdikpIHsKPiArCX0gZWxzZSBpZiAod3AtPnhfdGls ZWQgJiYgR1RfR0VOKGRldl9wcml2LCA5KSkgewo+ICAJCWludGVybV9wYnBsID0gRElWX1JPVU5E X1VQKHdwLT5wbGFuZV9ieXRlc19wZXJfbGluZSwKPiAgCQkJCQkgICB3cC0+ZGJ1Zl9ibG9ja19z aXplKTsKPiAgCQl3cC0+cGxhbmVfYmxvY2tzX3Blcl9saW5lID0gdTMyX3RvX2ZpeGVkMTYoaW50 ZXJtX3BicGwpOwo+IEBAIC00NzM0LDEzICs0NzM0LDEzIEBAIHN0YXRpYyBpbnQgc2tsX2NvbXB1 dGVfcGxhbmVfd20oY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJ CQlzZWxlY3RlZF9yZXN1bHQgPSBtZXRob2QyOwo+ICAJCX0gZWxzZSBpZiAoZGRiX2FsbG9jYXRp b24gPj0KPiAgCQkJIGZpeGVkMTZfdG9fdTMyX3JvdW5kX3VwKHdwLT5wbGFuZV9ibG9ja3NfcGVy X2xpbmUpKSB7Cj4gLQkJCWlmIChJU19HRU45KGRldl9wcml2KSAmJgo+ICsJCQlpZiAoR1RfR0VO KGRldl9wcml2LCA5KSAmJgo+ICAJCQkgICAgIUlTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQo+ICAJ CQkJc2VsZWN0ZWRfcmVzdWx0ID0gbWluX2ZpeGVkMTYobWV0aG9kMSwgbWV0aG9kMik7Cj4gIAkJ CWVsc2UKPiAgCQkJCXNlbGVjdGVkX3Jlc3VsdCA9IG1ldGhvZDI7Cj4gIAkJfSBlbHNlIGlmIChs YXRlbmN5ID49IHdwLT5saW5ldGltZV91cykgewo+IC0JCQlpZiAoSVNfR0VOOShkZXZfcHJpdikg JiYKPiArCQkJaWYgKEdUX0dFTihkZXZfcHJpdiwgOSkgJiYKPiAgCQkJICAgICFJU19HRU1JTklM QUtFKGRldl9wcml2KSkKPiAgCQkJCXNlbGVjdGVkX3Jlc3VsdCA9IG1pbl9maXhlZDE2KG1ldGhv ZDEsIG1ldGhvZDIpOwo+ICAJCQllbHNlCj4gQEAgLTY5NzksNyArNjk3OSw3IEBAIHN0YXRpYyB2 b2lkIGdlbjlfZW5hYmxlX3JwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g IAlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4g IAo+ICAJLyogUHJvZ3JhbSBkZWZhdWx0cyBhbmQgdGhyZXNob2xkcyBmb3IgUlBTICovCj4gLQlp ZiAoSVNfR0VOOShkZXZfcHJpdikpCj4gKwlpZiAoR1RfR0VOKGRldl9wcml2LCA5KSkKPiAgCQlJ OTE1X1dSSVRFKEdFTjZfUkNfVklERU9fRlJFUSwKPiAgCQkJR0VOOV9GUkVRVUVOQ1koZGV2X3By aXYtPmd0X3BtLnJwcy5ycDFfZnJlcSkpOwo+ICAKPiBAQCAtNzIxNSw5ICs3MjE1LDkgQEAgc3Rh dGljIHZvaWQgZ2VuNl9lbmFibGVfcmM2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiAgCj4gIAlyYzZ2aWRzID0gMDsKPiAgCXJldCA9IHNhbmR5YnJpZGdlX3Bjb2RlX3JlYWQo ZGV2X3ByaXYsIEdFTjZfUENPREVfUkVBRF9SQzZWSURTLCAmcmM2dmlkcyk7Cj4gLQlpZiAoSVNf R0VONihkZXZfcHJpdikgJiYgcmV0KSB7Cj4gKwlpZiAoR1RfR0VOKGRldl9wcml2LCA2KSAmJiBy ZXQpIHsKPiAgCQlEUk1fREVCVUdfRFJJVkVSKCJDb3VsZG4ndCBjaGVjayBmb3IgQklPUyB3b3Jr YXJvdW5kXG4iKTsKPiAtCX0gZWxzZSBpZiAoSVNfR0VONihkZXZfcHJpdikgJiYgKEdFTjZfREVD T0RFX1JDNl9WSUQocmM2dmlkcyAmIDB4ZmYpIDwgNDUwKSkgewo+ICsJfSBlbHNlIGlmIChHVF9H RU4oZGV2X3ByaXYsIDYpICYmIChHRU42X0RFQ09ERV9SQzZfVklEKHJjNnZpZHMgJiAweGZmKSA8 IDQ1MCkpIHsKPiAgCQlEUk1fREVCVUdfRFJJVkVSKCJZb3Ugc2hvdWxkIHVwZGF0ZSB5b3VyIEJJ T1MuIENvcnJlY3RpbmcgbWluaW11bSByYzYgdm9sdGFnZSAoJWRtVi0+JWRtVilcbiIsCj4gIAkJ CSAgR0VONl9ERUNPREVfUkM2X1ZJRChyYzZ2aWRzICYgMHhmZiksIDQ1MCk7Cj4gIAkJcmM2dmlk cyAmPSAweGZmZmYwMDsKPiBAQCAtNzkxNyw3ICs3OTE3LDcgQEAgdW5zaWduZWQgbG9uZyBpOTE1 X2NoaXBzZXRfdmFsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICAJ dW5zaWduZWQgbG9uZyB2YWw7Cj4gIAo+IC0JaWYgKCFJU19HRU41KGRldl9wcml2KSkKPiArCWlm ICghR1RfR0VOKGRldl9wcml2LCA1KSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAlzcGluX2xvY2tf aXJxKCZtY2hkZXZfbG9jayk7Cj4gQEAgLTgwMDEsNyArODAwMSw3IEBAIHN0YXRpYyB2b2lkIF9f aTkxNV91cGRhdGVfZ2Z4X3ZhbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g IAo+ICB2b2lkIGk5MTVfdXBkYXRlX2dmeF92YWwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+ICB7Cj4gLQlpZiAoIUlTX0dFTjUoZGV2X3ByaXYpKQo+ICsJaWYgKCFHVF9HRU4o ZGV2X3ByaXYsIDUpKQo+ICAJCXJldHVybjsKPiAgCj4gIAlzcGluX2xvY2tfaXJxKCZtY2hkZXZf bG9jayk7Cj4gQEAgLTgwNTIsNyArODA1Miw3IEBAIHVuc2lnbmVkIGxvbmcgaTkxNV9nZnhfdmFs KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICAJdW5zaWduZWQgbG9u ZyB2YWw7Cj4gIAo+IC0JaWYgKCFJU19HRU41KGRldl9wcml2KSkKPiArCWlmICghR1RfR0VOKGRl dl9wcml2LCA1KSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAlzcGluX2xvY2tfaXJxKCZtY2hkZXZf bG9jayk7Cj4gQEAgLTgzNDAsNyArODM0MCw3IEBAIHZvaWQgaW50ZWxfaW5pdF9ndF9wb3dlcnNh dmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCQkgICAgICBpbnRlbF9m cmVxX29wY29kZShkZXZfcHJpdiwgNDUwKSk7Cj4gIAo+ICAJLyogQWZ0ZXIgc2V0dGluZyBtYXgt c29mdGxpbWl0LCBmaW5kIHRoZSBvdmVyY2xvY2sgbWF4IGZyZXEgKi8KPiAtCWlmIChJU19HRU42 KGRldl9wcml2KSB8fAo+ICsJaWYgKEdUX0dFTihkZXZfcHJpdiwgNikgfHwKPiAgCSAgICBJU19J VllCUklER0UoZGV2X3ByaXYpIHx8IElTX0hBU1dFTEwoZGV2X3ByaXYpKSB7Cj4gIAkJdTMyIHBh cmFtcyA9IDA7Cj4gIAo+IEBAIC05NDEwLDkgKzk0MTAsOSBAQCB2b2lkIGludGVsX2luaXRfY2xv Y2tfZ2F0aW5nX2hvb2tzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQlk ZXZfcHJpdi0+ZGlzcGxheS5pbml0X2Nsb2NrX2dhdGluZyA9IGl2Yl9pbml0X2Nsb2NrX2dhdGlu ZzsKPiAgCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKQo+ICAJCWRldl9wcml2LT5k aXNwbGF5LmluaXRfY2xvY2tfZ2F0aW5nID0gdmx2X2luaXRfY2xvY2tfZ2F0aW5nOwo+IC0JZWxz ZSBpZiAoSVNfR0VONihkZXZfcHJpdikpCj4gKwllbHNlIGlmIChHVF9HRU4oZGV2X3ByaXYsIDYp KQo+ICAJCWRldl9wcml2LT5kaXNwbGF5LmluaXRfY2xvY2tfZ2F0aW5nID0gZ2VuNl9pbml0X2Ns b2NrX2dhdGluZzsKPiAtCWVsc2UgaWYgKElTX0dFTjUoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAo R1RfR0VOKGRldl9wcml2LCA1KSkKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5pbml0X2Nsb2NrX2dh dGluZyA9IGlsa19pbml0X2Nsb2NrX2dhdGluZzsKPiAgCWVsc2UgaWYgKElTX0c0WChkZXZfcHJp dikpCj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdF9jbG9ja19nYXRpbmcgPSBnNHhfaW5pdF9j bG9ja19nYXRpbmc7Cj4gQEAgLTk0MjAsMTEgKzk0MjAsMTEgQEAgdm9pZCBpbnRlbF9pbml0X2Ns b2NrX2dhdGluZ19ob29rcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJ ZGV2X3ByaXYtPmRpc3BsYXkuaW5pdF9jbG9ja19nYXRpbmcgPSBpOTY1Z21faW5pdF9jbG9ja19n YXRpbmc7Cj4gIAllbHNlIGlmIChJU19JOTY1RyhkZXZfcHJpdikpCj4gIAkJZGV2X3ByaXYtPmRp c3BsYXkuaW5pdF9jbG9ja19nYXRpbmcgPSBpOTY1Z19pbml0X2Nsb2NrX2dhdGluZzsKPiAtCWVs c2UgaWYgKElTX0dFTjMoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoR1RfR0VOKGRldl9wcml2LCAz KSkKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5pbml0X2Nsb2NrX2dhdGluZyA9IGdlbjNfaW5pdF9j bG9ja19nYXRpbmc7Cj4gIAllbHNlIGlmIChJU19JODVYKGRldl9wcml2KSB8fCBJU19JODY1Ryhk ZXZfcHJpdikpCj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdF9jbG9ja19nYXRpbmcgPSBpODV4 X2luaXRfY2xvY2tfZ2F0aW5nOwo+IC0JZWxzZSBpZiAoSVNfR0VOMihkZXZfcHJpdikpCj4gKwll bHNlIGlmIChHVF9HRU4oZGV2X3ByaXYsIDIpKQo+ICAJCWRldl9wcml2LT5kaXNwbGF5LmluaXRf Y2xvY2tfZ2F0aW5nID0gaTgzMF9pbml0X2Nsb2NrX2dhdGluZzsKPiAgCWVsc2Ugewo+ICAJCU1J U1NJTkdfQ0FTRShJTlRFTF9ERVZJRChkZXZfcHJpdikpOwo+IEBAIC05NDQwLDcgKzk0NDAsNyBA QCB2b2lkIGludGVsX2luaXRfcG0oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ICAJLyogRm9yIGN4c3IgKi8KPiAgCWlmIChJU19QSU5FVklFVyhkZXZfcHJpdikpCj4gIAkJaTkx NV9waW5ldmlld19nZXRfbWVtX2ZyZXEoZGV2X3ByaXYpOwo+IC0JZWxzZSBpZiAoSVNfR0VONShk ZXZfcHJpdikpCj4gKwllbHNlIGlmIChHVF9HRU4oZGV2X3ByaXYsIDUpKQo+ICAJCWk5MTVfaXJv bmxha2VfZ2V0X21lbV9mcmVxKGRldl9wcml2KTsKPiAgCj4gIAkvKiBGb3IgRklGTyB3YXRlcm1h cmsgdXBkYXRlcyAqLwo+IEBAIC05NDUyLDkgKzk0NTIsOSBAQCB2b2lkIGludGVsX2luaXRfcG0o c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJfSBlbHNlIGlmIChIQVNfUENI X1NQTElUKGRldl9wcml2KSkgewo+ICAJCWlsa19zZXR1cF93bV9sYXRlbmN5KGRldl9wcml2KTsK PiAgCj4gLQkJaWYgKChJU19HRU41KGRldl9wcml2KSAmJiBkZXZfcHJpdi0+d20ucHJpX2xhdGVu Y3lbMV0gJiYKPiArCQlpZiAoKEdUX0dFTihkZXZfcHJpdiwgNSkgJiYgZGV2X3ByaXYtPndtLnBy aV9sYXRlbmN5WzFdICYmCj4gIAkJICAgICBkZXZfcHJpdi0+d20uc3ByX2xhdGVuY3lbMV0gJiYg ZGV2X3ByaXYtPndtLmN1cl9sYXRlbmN5WzFdKSB8fAo+IC0JCSAgICAoIUlTX0dFTjUoZGV2X3By aXYpICYmIGRldl9wcml2LT53bS5wcmlfbGF0ZW5jeVswXSAmJgo+ICsJCSAgICAoIUdUX0dFTihk ZXZfcHJpdiwgNSkgJiYgZGV2X3ByaXYtPndtLnByaV9sYXRlbmN5WzBdICYmCj4gIAkJICAgICBk ZXZfcHJpdi0+d20uc3ByX2xhdGVuY3lbMF0gJiYgZGV2X3ByaXYtPndtLmN1cl9sYXRlbmN5WzBd KSkgewo+ICAJCQlkZXZfcHJpdi0+ZGlzcGxheS5jb21wdXRlX3BpcGVfd20gPSBpbGtfY29tcHV0 ZV9waXBlX3dtOwo+ICAJCQlkZXZfcHJpdi0+ZGlzcGxheS5jb21wdXRlX2ludGVybWVkaWF0ZV93 bSA9Cj4gQEAgLTk0OTUsMTIgKzk0OTUsMTIgQEAgdm9pZCBpbnRlbF9pbml0X3BtKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQkJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRl X3dtID0gTlVMTDsKPiAgCQl9IGVsc2UKPiAgCQkJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3dt ID0gcGluZXZpZXdfdXBkYXRlX3dtOwo+IC0JfSBlbHNlIGlmIChJU19HRU40KGRldl9wcml2KSkg ewo+ICsJfSBlbHNlIGlmIChHVF9HRU4oZGV2X3ByaXYsIDQpKSB7Cj4gIAkJZGV2X3ByaXYtPmRp c3BsYXkudXBkYXRlX3dtID0gaTk2NV91cGRhdGVfd207Cj4gLQl9IGVsc2UgaWYgKElTX0dFTjMo ZGV2X3ByaXYpKSB7Cj4gKwl9IGVsc2UgaWYgKEdUX0dFTihkZXZfcHJpdiwgMykpIHsKPiAgCQlk ZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfd20gPSBpOXh4X3VwZGF0ZV93bTsKPiAgCQlkZXZfcHJp di0+ZGlzcGxheS5nZXRfZmlmb19zaXplID0gaTl4eF9nZXRfZmlmb19zaXplOwo+IC0JfSBlbHNl IGlmIChJU19HRU4yKGRldl9wcml2KSkgewo+ICsJfSBlbHNlIGlmIChHVF9HRU4oZGV2X3ByaXYs IDIpKSB7Cj4gIAkJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5udW1fcGlwZXMgPT0gMSkgewo+ ICAJCQlkZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfd20gPSBpODQ1X3VwZGF0ZV93bTsKPiAgCQkJ ZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2ZpZm9fc2l6ZSA9IGk4NDVfZ2V0X2ZpZm9fc2l6ZTsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9wc3IuYwo+IGluZGV4IGJjMmQ4ODMxM2VkMC4uY2FjZDU0Y2MwMGU2 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMKPiBAQCAtNDY2LDcgKzQ2Niw3IEBAIHN0 YXRpYyBib29sIGludGVsX3BzcjJfY29uZmlnX3ZhbGlkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHAsCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCB8fCBJU19HRU1JTklMQUtFKGRl dl9wcml2KSkgewo+ICAJCXBzcl9tYXhfaCA9IDQwOTY7Cj4gIAkJcHNyX21heF92ID0gMjMwNDsK PiAtCX0gZWxzZSBpZiAoSVNfR0VOOShkZXZfcHJpdikpIHsKPiArCX0gZWxzZSBpZiAoR1RfR0VO KGRldl9wcml2LCA5KSkgewo+ICAJCXBzcl9tYXhfaCA9IDM2NDA7Cj4gIAkJcHNyX21heF92ID0g MjMwNDsKPiAgCX0KPiBAQCAtNTc0LDcgKzU3NCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl9l bmFibGVfc291cmNlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIAlpZiAoZGV2X3ByaXYt PnBzci5wc3IyX2VuYWJsZWQpIHsKPiAgCQl1MzIgY2hpY2tlbiA9IEk5MTVfUkVBRChDSElDS0VO X1RSQU5TKGNwdV90cmFuc2NvZGVyKSk7Cj4gIAo+IC0JCWlmIChJU19HRU45KGRldl9wcml2KSAm JiAhSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCj4gKwkJaWYgKEdUX0dFTihkZXZfcHJpdiwgOSkg JiYgIUlTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQo+ICAJCQljaGlja2VuIHw9IChQU1IyX1ZTQ19F TkFCTEVfUFJPR19IRUFERVIKPiAgCQkJCSAgIHwgUFNSMl9BRERfVkVSVElDQUxfTElORV9DT1VO VCk7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiBpbmRleCAw ZTVmNDljNDUyOTguLmUyOTA3YWUzOGI3ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9yaW5nYnVmZmVyLmMKPiBAQCAtMTIzLDcgKzEyMyw3IEBAIGdlbjRfcmVuZGVyX3JpbmdfZmx1 c2goc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHUzMiBtb2RlKQo+ICAJY21kID0gTUlfRkxVU0g7 Cj4gIAlpZiAobW9kZSAmIEVNSVRfSU5WQUxJREFURSkgewo+ICAJCWNtZCB8PSBNSV9FWEVfRkxV U0g7Cj4gLQkJaWYgKElTX0c0WChycS0+aTkxNSkgfHwgSVNfR0VONShycS0+aTkxNSkpCj4gKwkJ aWYgKElTX0c0WChycS0+aTkxNSkgfHwgR1RfR0VOKHJxLT5pOTE1LCA1KSkKPiAgCQkJY21kIHw9 IE1JX0lOVkFMSURBVEVfSVNQOwo+ICAJfQo+ICAKPiBAQCAtMzYzLDcgKzM2Myw3IEBAIHN0YXRp YyB2b2lkIGludGVsX3Jpbmdfc2V0dXBfc3RhdHVzX3BhZ2Uoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+ICAJLyogVGhlIHJpbmcgc3RhdHVzIHBhZ2UgYWRkcmVzc2VzIGFyZSBubyBs b25nZXIgbmV4dCB0byB0aGUgcmVzdCBvZgo+ICAJICogdGhlIHJpbmcgcmVnaXN0ZXJzIGFzIG9m IGdlbjcuCj4gIAkgKi8KPiAtCWlmIChJU19HRU43KGRldl9wcml2KSkgewo+ICsJaWYgKEdUX0dF TihkZXZfcHJpdiwgNykpIHsKPiAgCQlzd2l0Y2ggKGVuZ2luZS0+aWQpIHsKPiAgCQkvKgo+ICAJ CSAqIE5vIG1vcmUgcmluZ3MgZXhpc3Qgb24gR2VuNy4gRGVmYXVsdCBjYXNlIGlzIG9ubHkgdG8g c2h1dCB1cAo+IEBAIC0zODQsNyArMzg0LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcmluZ19zZXR1 cF9zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIAkJCW1taW8g PSBWRUJPWF9IV1NfUEdBX0dFTjc7Cj4gIAkJCWJyZWFrOwo+ICAJCX0KPiAtCX0gZWxzZSBpZiAo SVNfR0VONihkZXZfcHJpdikpIHsKPiArCX0gZWxzZSBpZiAoR1RfR0VOKGRldl9wcml2LCA2KSkg ewo+ICAJCW1taW8gPSBSSU5HX0hXU19QR0FfR0VONihlbmdpbmUtPm1taW9fYmFzZSk7Cj4gIAl9 IGVsc2Ugewo+ICAJCW1taW8gPSBSSU5HX0hXU19QR0EoZW5naW5lLT5tbWlvX2Jhc2UpOwo+IEBA IC02NDMsMTcgKzY0MywxNyBAQCBzdGF0aWMgaW50IGluaXRfcmVuZGVyX3Jpbmcoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAKPiAgCS8qIFJlcXVpcmVkIGZvciB0aGUgaGFyZHdh cmUgdG8gcHJvZ3JhbSBzY2FubGluZSB2YWx1ZXMgZm9yIHdhaXRpbmcgKi8KPiAgCS8qIFdhRW5h YmxlRmx1c2hUbGJJbnZhbGlkYXRpb25Nb2RlOnNuYiAqLwo+IC0JaWYgKElTX0dFTjYoZGV2X3By aXYpKQo+ICsJaWYgKEdUX0dFTihkZXZfcHJpdiwgNikpCj4gIAkJSTkxNV9XUklURShHRlhfTU9E RSwKPiAgCQkJICAgX01BU0tFRF9CSVRfRU5BQkxFKEdGWF9UTEJfSU5WQUxJREFURV9FWFBMSUNJ VCkpOwo+ICAKPiAgCS8qIFdhQkNTVkNTVGxiSW52YWxpZGF0aW9uTW9kZTppdmIsdmx2LGhzdyAq Lwo+IC0JaWYgKElTX0dFTjcoZGV2X3ByaXYpKQo+ICsJaWYgKEdUX0dFTihkZXZfcHJpdiwgNykp Cj4gIAkJSTkxNV9XUklURShHRlhfTU9ERV9HRU43LAo+ICAJCQkgICBfTUFTS0VEX0JJVF9FTkFC TEUoR0ZYX1RMQl9JTlZBTElEQVRFX0VYUExJQ0lUKSB8Cj4gIAkJCSAgIF9NQVNLRURfQklUX0VO QUJMRShHRlhfUkVQTEFZX01PREUpKTsKPiAgCj4gLQlpZiAoSVNfR0VONihkZXZfcHJpdikpIHsK PiArCWlmIChHVF9HRU4oZGV2X3ByaXYsIDYpKSB7Cj4gIAkJLyogRnJvbSB0aGUgU2FuZHlicmlk Z2UgUFJNLCB2b2x1bWUgMSBwYXJ0IDMsIHBhZ2UgMjQ6Cj4gIAkJICogIklmIHRoaXMgYml0IGlz IHNldCwgU1RDdW5pdCB3aWxsIGhhdmUgTFJBIGFzIHJlcGxhY2VtZW50Cj4gIAkJICogIHBvbGlj eS4gWy4uLl0gVGhpcyBiaXQgbXVzdCBiZSByZXNldC4gIExSQSByZXBsYWNlbWVudAo+IEBAIC0x NTMxLDcgKzE1MzEsNyBAQCBzdGF0aWMgaW5saW5lIGludCBtaV9zZXRfY29udGV4dChzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICpycSwgdTMyIGZsYWdzKQo+ICAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7 Cj4gIAljb25zdCBpbnQgbnVtX3JpbmdzID0KPiAgCQkvKiBVc2UgYW4gZXh0ZW5kZWQgdy9hIG9u IGdlbjcgaWYgc2lnbmFsbGluZyBmcm9tIG90aGVyIHJpbmdzICovCj4gLQkJKEhBU19MRUdBQ1lf U0VNQVBIT1JFUyhpOTE1KSAmJiBJU19HRU43KGk5MTUpKSA/Cj4gKwkJKEhBU19MRUdBQ1lfU0VN QVBIT1JFUyhpOTE1KSAmJiBHVF9HRU4oaTkxNSwgNykpID8KPiAgCQlJTlRFTF9JTkZPKGk5MTUp LT5udW1fcmluZ3MgLSAxIDoKPiAgCQkwOwo+ICAJYm9vbCBmb3JjZV9yZXN0b3JlID0gZmFsc2U7 Cj4gQEAgLTE1NDYsNyArMTU0Niw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IG1pX3NldF9jb250ZXh0 KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1MzIgZmxhZ3MpCj4gIAkJZmxhZ3MgfD0gTUlfU0FW RV9FWFRfU1RBVEVfRU4gfCBNSV9SRVNUT1JFX0VYVF9TVEFURV9FTjsKPiAgCj4gIAlsZW4gPSA0 Owo+IC0JaWYgKElTX0dFTjcoaTkxNSkpCj4gKwlpZiAoR1RfR0VOKGk5MTUsIDcpKQo+ICAJCWxl biArPSAyICsgKG51bV9yaW5ncyA/IDQqbnVtX3JpbmdzICsgNiA6IDApOwo+ICAJaWYgKGZsYWdz ICYgTUlfRk9SQ0VfUkVTVE9SRSkgewo+ICAJCUdFTV9CVUdfT04oZmxhZ3MgJiBNSV9SRVNUT1JF X0lOSElCSVQpOwo+IEBAIC0xNTYwLDcgKzE1NjAsNyBAQCBzdGF0aWMgaW5saW5lIGludCBtaV9z ZXRfY29udGV4dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdTMyIGZsYWdzKQo+ICAJCXJldHVy biBQVFJfRVJSKGNzKTsKPiAgCj4gIAkvKiBXYVByb2dyYW1NaUFyYk9uT2ZmQXJvdW5kTWlTZXRD b250ZXh0Oml2Yix2bHYsaHN3LGJkdyxjaHYgKi8KPiAtCWlmIChJU19HRU43KGk5MTUpKSB7Cj4g KwlpZiAoR1RfR0VOKGk5MTUsIDcpKSB7Cj4gIAkJKmNzKysgPSBNSV9BUkJfT05fT0ZGIHwgTUlf QVJCX0RJU0FCTEU7Cj4gIAkJaWYgKG51bV9yaW5ncykgewo+ICAJCQlzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICpzaWduYWxsZXI7Cj4gQEAgLTE2MDcsNyArMTYwNyw3IEBAIHN0YXRpYyBpbmxpbmUg aW50IG1pX3NldF9jb250ZXh0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1MzIgZmxhZ3MpCj4g IAkgKi8KPiAgCSpjcysrID0gTUlfTk9PUDsKPiAgCj4gLQlpZiAoSVNfR0VONyhpOTE1KSkgewo+ ICsJaWYgKEdUX0dFTihpOTE1LCA3KSkgewo+ICAJCWlmIChudW1fcmluZ3MpIHsKPiAgCQkJc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqc2lnbmFsbGVyOwo+ICAJCQlpOTE1X3JlZ190IGxhc3RfcmVn ID0ge307IC8qIGtlZXAgZ2NjIHF1aWV0ICovCj4gQEAgLTIyMzAsOSArMjIzMCw5IEBAIGludCBp bnRlbF9pbml0X3JlbmRlcl9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KSB7Cj4gIAkJZW5naW5lLT5pbml0 X2NvbnRleHQgPSBpbnRlbF9yY3NfY3R4X2luaXQ7Cj4gIAkJZW5naW5lLT5lbWl0X2ZsdXNoID0g Z2VuN19yZW5kZXJfcmluZ19mbHVzaDsKPiAtCQlpZiAoSVNfR0VONihkZXZfcHJpdikpCj4gKwkJ aWYgKEdUX0dFTihkZXZfcHJpdiwgNikpCj4gIAkJCWVuZ2luZS0+ZW1pdF9mbHVzaCA9IGdlbjZf cmVuZGVyX3JpbmdfZmx1c2g7Cj4gLQl9IGVsc2UgaWYgKElTX0dFTjUoZGV2X3ByaXYpKSB7Cj4g Kwl9IGVsc2UgaWYgKEdUX0dFTihkZXZfcHJpdiwgNSkpIHsKPiAgCQllbmdpbmUtPmVtaXRfZmx1 c2ggPSBnZW40X3JlbmRlcl9yaW5nX2ZsdXNoOwo+ICAJfSBlbHNlIHsKPiAgCQlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA8IDQpCj4gQEAgLTIyNjIsMTMgKzIyNjIsMTMgQEAgaW50IGludGVsX2lu aXRfYnNkX3JpbmdfYnVmZmVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgCj4g IAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KSB7Cj4gIAkJLyogZ2VuNiBic2QgbmVlZHMg YSBzcGVjaWFsIHdhIGZvciB0YWlsIHVwZGF0ZXMgKi8KPiAtCQlpZiAoSVNfR0VONihkZXZfcHJp dikpCj4gKwkJaWYgKEdUX0dFTihkZXZfcHJpdiwgNikpCj4gIAkJCWVuZ2luZS0+c2V0X2RlZmF1 bHRfc3VibWlzc2lvbiA9IGdlbjZfYnNkX3NldF9kZWZhdWx0X3N1Ym1pc3Npb247Cj4gIAkJZW5n aW5lLT5lbWl0X2ZsdXNoID0gZ2VuNl9ic2RfcmluZ19mbHVzaDsKPiAgCQllbmdpbmUtPmlycV9l bmFibGVfbWFzayA9IEdUX0JTRF9VU0VSX0lOVEVSUlVQVDsKPiAgCX0gZWxzZSB7Cj4gIAkJZW5n aW5lLT5lbWl0X2ZsdXNoID0gYnNkX3JpbmdfZmx1c2g7Cj4gLQkJaWYgKElTX0dFTjUoZGV2X3By aXYpKQo+ICsJCWlmIChHVF9HRU4oZGV2X3ByaXYsIDUpKQo+ICAJCQllbmdpbmUtPmlycV9lbmFi bGVfbWFzayA9IElMS19CU0RfVVNFUl9JTlRFUlJVUFQ7Cj4gIAkJZWxzZQo+ICAJCQllbmdpbmUt PmlycV9lbmFibGVfbWFzayA9IEk5MTVfQlNEX1VTRVJfSU5URVJSVVBUOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBpbmRleCA4YTIyNzBiMjA5YjAuLmU2YjI0Y2Jm M2IwNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBAQCAt OTMsMTEgKzkzLDExIEBAIGhhbmdjaGVja19hY3Rpb25fdG9fc3RyKGNvbnN0IGVudW0gaW50ZWxf ZW5naW5lX2hhbmdjaGVja19hY3Rpb24gYSkKPiAgI2RlZmluZSBJOTE1X01BWF9TVUJTTElDRVMg OAo+ICAKPiAgI2RlZmluZSBpbnN0ZG9uZV9zbGljZV9tYXNrKGRldl9wcml2X18pIFwKPiAtCShJ U19HRU43KGRldl9wcml2X18pID8gXAo+ICsJKEdUX0dFTihkZXZfcHJpdl9fLCA3KSA/IFwKPiAg CSAxIDogSU5URUxfSU5GTyhkZXZfcHJpdl9fKS0+c3NldS5zbGljZV9tYXNrKQo+ICAKPiAgI2Rl ZmluZSBpbnN0ZG9uZV9zdWJzbGljZV9tYXNrKGRldl9wcml2X18pIFwKPiAtCShJU19HRU43KGRl dl9wcml2X18pID8gXAo+ICsJKEdUX0dFTihkZXZfcHJpdl9fLCA3KSA/IFwKPiAgCSAxIDogSU5U RUxfSU5GTyhkZXZfcHJpdl9fKS0+c3NldS5zdWJzbGljZV9tYXNrWzBdKQo+ICAKPiAgI2RlZmlu ZSBmb3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShkZXZfcHJpdl9fLCBzbGljZV9fLCBz dWJzbGljZV9fKSBcCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1 bnRpbWVfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYwo+IGlu ZGV4IDZjNDUzMzY2Y2QyNC4uYjE2NGEyYzRiMDU4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3J1bnRpbWVfcG0uYwo+IEBAIC0zMDI3LDcgKzMwMjcsNyBAQCBzdGF0aWMgdWludDMy X3QgZ2V0X2FsbG93ZWRfZGNfbWFzayhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gIAkJICogc3VzcGVuZC9yZXN1bWUsIHNvIGFsbG93IGl0IHVuY29uZGl0aW9uYWxs eS4KPiAgCQkgKi8KPiAgCQltYXNrID0gRENfU1RBVEVfRU5fREM5Owo+IC0JfSBlbHNlIGlmIChJ U19HRU4xMChkZXZfcHJpdikgfHwgSVNfR0VOOV9CQyhkZXZfcHJpdikpIHsKPiArCX0gZWxzZSBp ZiAoR1RfR0VOKGRldl9wcml2LCAxMCkgfHwgSVNfR0VOOV9CQyhkZXZfcHJpdikpIHsKPiAgCQlt YXhfZGMgPSAyOwo+ICAJCW1hc2sgPSAwOwo+ICAJfSBlbHNlIGlmIChJU19HRU45X0xQKGRldl9w cml2KSkgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gaW5kZXggZjE1YjI3OTgz ZmJmLi4wNDllNjc5ZTQxNDUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfc3ByaXRlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+ IEBAIC0xMDgzLDcgKzEwODMsNyBAQCBzdGF0aWMgdTMyIGc0eF9zcHJpdGVfY3RsKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAKPiAgCWR2c2NudHIgPSBEVlNf RU5BQkxFIHwgRFZTX0dBTU1BX0VOQUJMRTsKPiAgCj4gLQlpZiAoSVNfR0VONihkZXZfcHJpdikp Cj4gKwlpZiAoR1RfR0VOKGRldl9wcml2LCA2KSkKPiAgCQlkdnNjbnRyIHw9IERWU19UUklDS0xF X0ZFRURfRElTQUJMRTsKPiAgCj4gIAlzd2l0Y2ggKGZiLT5mb3JtYXQtPmZvcm1hdCkgewo+IEBA IC0xOTc5LDcgKzE5NzksNyBAQCBzdGF0aWMgYm9vbCBza2xfcGxhbmVfaGFzX3BsYW5hcihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlpZiAoSVNfU0tZTEFLRShkZXZfcHJp dikgfHwgSVNfQlJPWFRPTihkZXZfcHJpdikpCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAKPiAtCWlm IChJU19HRU45KGRldl9wcml2KSAmJiAhSVNfR0VNSU5JTEFLRShkZXZfcHJpdikgJiYgcGlwZSA9 PSBQSVBFX0MpCj4gKwlpZiAoR1RfR0VOKGRldl9wcml2LCA5KSAmJiAhSVNfR0VNSU5JTEFLRShk ZXZfcHJpdikgJiYgcGlwZSA9PSBQSVBFX0MpCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAKPiAgCWlm IChwbGFuZV9pZCAhPSBQTEFORV9QUklNQVJZICYmIHBsYW5lX2lkICE9IFBMQU5FX1NQUklURTAp Cj4gQEAgLTIxODgsNyArMjE4OCw3IEBAIGludGVsX3Nwcml0ZV9wbGFuZV9jcmVhdGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCXBsYW5lLT5jaGVja19wbGFuZSA9IGc0 eF9zcHJpdGVfY2hlY2s7Cj4gIAo+ICAJCW1vZGlmaWVycyA9IGk5eHhfcGxhbmVfZm9ybWF0X21v ZGlmaWVyczsKPiAtCQlpZiAoSVNfR0VONihkZXZfcHJpdikpIHsKPiArCQlpZiAoR1RfR0VOKGRl dl9wcml2LCA2KSkgewo+ICAJCQlmb3JtYXRzID0gc25iX3BsYW5lX2Zvcm1hdHM7Cj4gIAkJCW51 bV9mb3JtYXRzID0gQVJSQVlfU0laRShzbmJfcGxhbmVfZm9ybWF0cyk7Cj4gIAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfdWMuYwo+IGluZGV4IGIzNGMzMThiMjM4ZC4uOWVjYTg0ZTdiYWE1IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF91Yy5jCj4gQEAgLTM1NCw3ICszNTQsNyBAQCBpbnQgaW50ZWxfdWNf aW5pdF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgCj4gIAkvKiBXYUVuYWJs ZXVLZXJuZWxIZWFkZXJWYWxpZEZpeDpza2wgKi8KPiAgCS8qIFdhRW5hYmxlR3VDQm9vdEhhc2hD aGVja05vdFNldDpza2wsYnh0LGtibCAqLwo+IC0JaWYgKElTX0dFTjkoaTkxNSkpCj4gKwlpZiAo R1RfR0VOKGk5MTUsIDkpKQo+ICAJCWF0dGVtcHRzID0gMzsKPiAgCWVsc2UKPiAgCQlhdHRlbXB0 cyA9IDE7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPiBpbmRleCA0ZmZlMjZjYzNj M2YuLjJlOTg0MTY0NjdhMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF91bmNvcmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCj4g QEAgLTUyOCw3ICs1MjgsNyBAQCBjaGVja19mb3JfdW5jbGFpbWVkX21taW8oc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8 IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+ICAJCXJldCB8PSB2bHZfY2hlY2tfZm9yX3VuY2xh aW1lZF9tbWlvKGRldl9wcml2KTsKPiAgCj4gLQlpZiAoSVNfR0VONihkZXZfcHJpdikgfHwgSVNf R0VONyhkZXZfcHJpdikpCj4gKwlpZiAoR1RfR0VOKGRldl9wcml2LCA2KSB8fCBHVF9HRU4oZGV2 X3ByaXYsIDcpKQo+ICAJCXJldCB8PSBnZW42X2NoZWNrX2Zvcl9maWZvX2RlYnVnKGRldl9wcml2 KTsKPiAgCj4gIAlyZXR1cm4gcmV0Owo+IEBAIC01NTYsNyArNTU2LDcgQEAgc3RhdGljIHZvaWQg X19pbnRlbF91bmNvcmVfZWFybHlfc2FuaXRpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ICAJCWRldl9wcml2LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9nZXQoZGV2X3By aXYsCj4gIAkJCQkJCSAgICAgIHJlc3RvcmVfZm9yY2V3YWtlKTsKPiAgCj4gLQkJaWYgKElTX0dF TjYoZGV2X3ByaXYpIHx8IElTX0dFTjcoZGV2X3ByaXYpKQo+ICsJCWlmIChHVF9HRU4oZGV2X3By aXYsIDYpIHx8IEdUX0dFTihkZXZfcHJpdiwgNykpCj4gIAkJCWRldl9wcml2LT51bmNvcmUuZmlm b19jb3VudCA9Cj4gIAkJCQlmaWZvX2ZyZWVfZW50cmllcyhkZXZfcHJpdik7Cj4gIAkJc3Bpbl91 bmxvY2tfaXJxKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2spOwo+IEBAIC0xMzk4LDcgKzEzOTgsNyBA QCBzdGF0aWMgdm9pZCBpbnRlbF91bmNvcmVfZndfZG9tYWluc19pbml0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDUgfHwg aW50ZWxfdmdwdV9hY3RpdmUoZGV2X3ByaXYpKQo+ICAJCXJldHVybjsKPiAgCj4gLQlpZiAoSVNf R0VONihkZXZfcHJpdikpIHsKPiArCWlmIChHVF9HRU4oZGV2X3ByaXYsIDYpKSB7Cj4gIAkJZGV2 X3ByaXYtPnVuY29yZS5md19yZXNldCA9IDA7Cj4gIAkJZGV2X3ByaXYtPnVuY29yZS5md19zZXQg PSBGT1JDRVdBS0VfS0VSTkVMOwo+ICAJCWRldl9wcml2LT51bmNvcmUuZndfY2xlYXIgPSAwOwo+ IEBAIC0xNDM3LDcgKzE0MzcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF91bmNvcmVfZndfZG9tYWlu c19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQkJCSAgICAgICBG T1JDRVdBS0VfTUVESUFfVkVCT1hfR0VOMTEoaSksCj4gIAkJCQkgICAgICAgRk9SQ0VXQUtFX0FD S19NRURJQV9WRUJPWF9HRU4xMShpKSk7Cj4gIAkJfQo+IC0JfSBlbHNlIGlmIChJU19HRU4xMChk ZXZfcHJpdikgfHwgSVNfR0VOOShkZXZfcHJpdikpIHsKPiArCX0gZWxzZSBpZiAoR1RfR0VOKGRl dl9wcml2LCAxMCkgfHwgR1RfR0VOKGRldl9wcml2LCA5KSkgewo+ICAJCWRldl9wcml2LT51bmNv cmUuZnVuY3MuZm9yY2Vfd2FrZV9nZXQgPQo+ICAJCQlmd19kb21haW5zX2dldF93aXRoX2ZhbGxi YWNrOwo+ICAJCWRldl9wcml2LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9wdXQgPSBmd19kb21h aW5zX3B1dDsKPiBAQCAtMTUwMyw3ICsxNTAzLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfdW5jb3Jl X2Z3X2RvbWFpbnNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJ CWZ3X2RvbWFpbl9pbml0KGRldl9wcml2LCBGV19ET01BSU5fSURfUkVOREVSLAo+ICAJCQkJICAg ICAgIEZPUkNFV0FLRSwgRk9SQ0VXQUtFX0FDSyk7Cj4gIAkJfQo+IC0JfSBlbHNlIGlmIChJU19H RU42KGRldl9wcml2KSkgewo+ICsJfSBlbHNlIGlmIChHVF9HRU4oZGV2X3ByaXYsIDYpKSB7Cj4g IAkJZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5mb3JjZV93YWtlX2dldCA9Cj4gIAkJCWZ3X2RvbWFp bnNfZ2V0X3dpdGhfdGhyZWFkX3N0YXR1czsKPiAgCQlkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLmZv cmNlX3dha2VfcHV0ID0gZndfZG9tYWluc19wdXQ7Cj4gQEAgLTE1NzAsNyArMTU3MCw3IEBAIHZv aWQgaW50ZWxfdW5jb3JlX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ICAJaWYgKEdUX0dFTl9SQU5HRShkZXZfcHJpdiwgMiwgNCkgfHwgaW50ZWxfdmdwdV9hY3RpdmUo ZGV2X3ByaXYpKSB7Cj4gIAkJQVNTSUdOX1dSSVRFX01NSU9fVkZVTkNTKGRldl9wcml2LCBnZW4y KTsKPiAgCQlBU1NJR05fUkVBRF9NTUlPX1ZGVU5DUyhkZXZfcHJpdiwgZ2VuMik7Cj4gLQl9IGVs c2UgaWYgKElTX0dFTjUoZGV2X3ByaXYpKSB7Cj4gKwl9IGVsc2UgaWYgKEdUX0dFTihkZXZfcHJp diwgNSkpIHsKPiAgCQlBU1NJR05fV1JJVEVfTU1JT19WRlVOQ1MoZGV2X3ByaXYsIGdlbjUpOwo+ ICAJCUFTU0lHTl9SRUFEX01NSU9fVkZVTkNTKGRldl9wcml2LCBnZW41KTsKPiAgCX0gZWxzZSBp ZiAoR1RfR0VOX1JBTkdFKGRldl9wcml2LCA2LCA3KSkgewo+IEBAIC0xNTgyLDcgKzE1ODIsNyBA QCB2b2lkIGludGVsX3VuY29yZV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiAgCQl9IGVsc2Ugewo+ICAJCQlBU1NJR05fUkVBRF9NTUlPX1ZGVU5DUyhkZXZfcHJpdiwg Z2VuNik7Cj4gIAkJfQo+IC0JfSBlbHNlIGlmIChJU19HRU44KGRldl9wcml2KSkgewo+ICsJfSBl bHNlIGlmIChHVF9HRU4oZGV2X3ByaXYsIDgpKSB7Cj4gIAkJaWYgKElTX0NIRVJSWVZJRVcoZGV2 X3ByaXYpKSB7Cj4gIAkJCUFTU0lHTl9GV19ET01BSU5TX1RBQkxFKF9fY2h2X2Z3X3Jhbmdlcyk7 Cj4gIAkJCUFTU0lHTl9XUklURV9NTUlPX1ZGVU5DUyhkZXZfcHJpdiwgZnd0YWJsZSk7Cj4gQEAg LTIxNzMsNyArMjE3Myw3IEBAIHN0YXRpYyByZXNldF9mdW5jIGludGVsX2dldF9ncHVfcmVzZXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCXJldHVybiBnZW44X3Jlc2V0 X2VuZ2luZXM7Cj4gIAllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpCj4gIAkJcmV0 dXJuIGdlbjZfcmVzZXRfZW5naW5lczsKPiAtCWVsc2UgaWYgKElTX0dFTjUoZGV2X3ByaXYpKQo+ ICsJZWxzZSBpZiAoR1RfR0VOKGRldl9wcml2LCA1KSkKPiAgCQlyZXR1cm4gaXJvbmxha2VfZG9f cmVzZXQ7Cj4gIAllbHNlIGlmIChJU19HNFgoZGV2X3ByaXYpKQo+ICAJCXJldHVybiBnNHhfZG9f cmVzZXQ7Cj4gQEAgLTIzNDEsNyArMjM0MSw3IEBAIGludGVsX3VuY29yZV9mb3JjZXdha2VfZm9y X3dyaXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQlmd19kb21haW5z ID0gX19nZW4xMV9md3RhYmxlX3JlZ193cml0ZV9md19kb21haW5zKG9mZnNldCk7Cj4gIAl9IGVs c2UgaWYgKEhBU19GV1RBQkxFKGRldl9wcml2KSAmJiAhSVNfVkFMTEVZVklFVyhkZXZfcHJpdikp IHsKPiAgCQlmd19kb21haW5zID0gX19md3RhYmxlX3JlZ193cml0ZV9md19kb21haW5zKG9mZnNl dCk7Cj4gLQl9IGVsc2UgaWYgKElTX0dFTjgoZGV2X3ByaXYpKSB7Cj4gKwl9IGVsc2UgaWYgKEdU X0dFTihkZXZfcHJpdiwgOCkpIHsKPiAgCQlmd19kb21haW5zID0gX19nZW44X3JlZ193cml0ZV9m d19kb21haW5zKG9mZnNldCk7Cj4gIAl9IGVsc2UgaWYgKEdUX0dFTl9SQU5HRShkZXZfcHJpdiwg NiwgNykpIHsKPiAgCQlmd19kb21haW5zID0gRk9SQ0VXQUtFX1JFTkRFUjsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd29wY20uYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3dvcGNtLmMKPiBpbmRleCA5MmNiODJkZDBjMDcuLjM5ODcyMDdjZGRkMCAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93b3BjbS5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd29wY20uYwo+IEBAIC0xMzAsMTEgKzEzMCwxMSBAQCBz dGF0aWMgaW5saW5lIGludCBjaGVja19od19yZXN0cmljdGlvbihzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSwKPiAgewo+ICAJaW50IGVyciA9IDA7Cj4gIAo+IC0JaWYgKElTX0dFTjkoaTkx NSkpCj4gKwlpZiAoR1RfR0VOKGk5MTUsIDkpKQo+ICAJCWVyciA9IGdlbjlfY2hlY2tfZHdvcmRf Z2FwKGd1Y193b3BjbV9iYXNlLCBndWNfd29wY21fc2l6ZSk7Cj4gIAo+ICAJaWYgKCFlcnIgJiYK PiAtCSAgICAoSVNfR0VOOShpOTE1KSB8fCBJU19DTkxfUkVWSUQoaTkxNSwgQ05MX1JFVklEX0Ew LCBDTkxfUkVWSURfQTApKSkKPiArCSAgICAoR1RfR0VOKGk5MTUsIDkpIHx8IElTX0NOTF9SRVZJ RChpOTE1LCBDTkxfUkVWSURfQTAsIENOTF9SRVZJRF9BMCkpKQo+ICAJCWVyciA9IGdlbjlfY2hl Y2tfaHVjX2Z3X2ZpdHMoZ3VjX3dvcGNtX3NpemUsIGh1Y19md19zaXplKTsKPiAgCj4gIAlyZXR1 cm4gZXJyOwo+IC0tIAo+IDIuMTkuMS4xLmc1NmM0NjgzZTY4Cj4gCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=