From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 1/3] drm/i915: Store the BIT(engine->id) as the engine's mask Date: Tue, 5 Mar 2019 18:11:31 +0000 Message-ID: References: <20190305180332.30900-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id B24118997C for ; Tue, 5 Mar 2019 18:11:35 +0000 (UTC) In-Reply-To: <20190305180332.30900-1-chris@chris-wilson.co.uk> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDA1LzAzLzIwMTkgMTg6MDMsIENocmlzIFdpbHNvbiB3cm90ZToKPiBJbiB0aGUgbmV4dCBw YXRjaCwgd2UgYXJlIGludHJvZHVjaW5nIGEgYnJvYWQgdmlydHVhbCBlbmdpbmUgdG8gZW5jb21w YXNzCj4gbXVsdGlwbGUgcGh5c2ljYWwgZW5naW5lcywgbG9zaW5nIHRoZSAxOjEgbmF0dXJlIG9m IEJJVChlbmdpbmUtPmlkKS4gVG8KPiByZWZsZWN0IHRoZSBicm9hZGVyIHNldCBvZiBlbmdpbmVz IGltcGxpZWQgYnkgdGhlIHZpcnR1YWwgaW5zdGFuY2UsIGxldHMKPiBzdG9yZSB0aGUgZnVsbCBi aXRtYXNrLgo+IAo+IHYyOiBVc2UgaW50ZWxfZW5naW5lX21hc2tfdCAocy9yaW5nX21hc2svZW5n aW5lX21hc2svKQo+IHYzOiBUdnJ0a28gdm90ZWQgZm9yIG1vYWggY2h1cm4gc28gdGVhY2ggZXZl cnlvbmUgdG8gbm90IG1lbnRpb24gcmluZwo+IGFuZCB1c2UgJGNsYXNzJGluc3RhbmNlIHRocm91 Z2hvdXQuCj4gdjQ6IENvbW1lbnQgdXBvbiB0aGUgZGlzcGFyaXR5IGluIGJzcGVjIGZvciB1c2lu ZyBWQ1MxLFZDUzIgaW4gZ2VuOCBhbmQKPiBWQ1NbMC00XSBpbiBsYXRlciBnZW4uIFdlIG9wdCB0 byBrZWVwIHRoZSBjb2RlIGNvbnNpc3RlbnQgYW5kIHVzZQo+IDAtaW5kZXggbmFtaW5nIHRocm91 Z2hvdXQuCgpSZXZpZXdlZC1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVs LmNvbT4KClJlZ2FyZHMsCgpUdnJ0a28KCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxj aHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJz dWxpbkBpbnRlbC5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvY21kX3Bh cnNlci5jICAgICAgICAgfCAgNDQgKystLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2V4 ZWNsaXN0LmMgICAgICAgICAgIHwgIDE3ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQv aGFuZGxlcnMuYyAgICAgICAgICAgfCAgMjYgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2 dC9pbnRlcnJ1cHQuYyAgICAgICAgICB8ICAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Z0L21taW9fY29udGV4dC5jICAgICAgIHwgMjI4ICsrKysrKysrKy0tLS0tLS0tLQo+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5jICAgICAgICAgIHwgIDIxICstCj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2NtZF9wYXJzZXIuYyAgICAgICAgfCAgMTIgKy0KPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgICAgICB8ICAgNiArLQo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgICAgICAgIHwgICA4ICst Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgICAgfCAgMjIg Ky0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyAgICAgICB8ICAg NCArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jICAgIHwg IDE0ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyAgICAgICAgICAg fCAgIDIgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oICAgICAgICAg ICB8ICAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVyX3N0YXRl LmMgIHwgICAyICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jICAg ICAgICAgfCAgMTEgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgICAgICAg ICAgICAgICB8ICA2NSArKy0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYyAg ICAgICAgICAgICAgIHwgIDM5ICstLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJm LmMgICAgICAgICAgICAgIHwgICA4ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Bt dS5jICAgICAgICAgICAgICAgfCAgIDIgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVnLmggICAgICAgICAgICAgICB8ICAyNCArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZXNldC5jICAgICAgICAgICAgIHwgIDQ3ICsrLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RldmljZV9pbmZvLmMgICAgICB8ICAgNiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGV2aWNlX2luZm8uaCAgICAgIHwgICA2ICstCj4gICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9lbmdpbmVfY3MuYyAgICAgICAgfCAgNTkgKystLS0KPiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2d1Y19hZHMuYyAgICAgICAgICB8ICAgMiArLQo+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYyAgIHwgICA2ICstCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9oYW5nY2hlY2suYyAgICAgICAgfCAgMTAgKy0KPiAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICAgICAgICB8ICAxMiArLQo+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jICAgICAgICAgICAgIHwgIDEyICstCj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMgICAgICAgICAgfCAgIDIgKy0KPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyAgICAgICB8ICAzNSArLS0K PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCAgICAgICB8ICAyNyAr LS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcmthcm91bmRzLmMgICAgICB8ICAg NCArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYyAgIHwg ICA0ICstCj4gICAuLi4vZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvaGVyZW5jeS5jICAg fCAgIDQgKy0KPiAgIC4uLi9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQu YyB8ICAgOCArLQo+ICAgLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fb2JqZWN0 LmMgIHwgICAyICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1 ZXN0LmMgfCAgMTQgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9n dWMuYyAgICB8ICAgNCArLQo+ICAgLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFu Z2NoZWNrLmMgIHwgIDE2ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50 ZWxfbHJjLmMgICAgfCAgIDQgKy0KPiAgIC4uLi9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfd29y a2Fyb3VuZHMuYyAgICB8ICAgNCArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L21vY2tfZW5naW5lLmMgIHwgICAxICsKPiAgIC4uLi9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21v Y2tfZ2VtX2RldmljZS5jICB8ICAgNiArLQo+ICAgNDUgZmlsZXMgY2hhbmdlZCwgNDIyIGluc2Vy dGlvbnMoKyksIDQzMiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L2NtZF9wYXJzZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9jbWRf cGFyc2VyLmMKPiBpbmRleCAzNWI0ZWMzZjc2MTguLmNmNGExZWNmNjg1MyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvY21kX3BhcnNlci5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Z0L2NtZF9wYXJzZXIuYwo+IEBAIC0zOTEsMTIgKzM5MSwxMiBAQCBzdHJ1 Y3QgY21kX2luZm8gewo+ICAgI2RlZmluZSBGX1BPU1RfSEFORExFCSgxPDwyKQo+ICAgCXUzMiBm bGFnOwo+ICAgCj4gLSNkZWZpbmUgUl9SQ1MJKDEgPDwgUkNTKQo+IC0jZGVmaW5lIFJfVkNTMSAg KDEgPDwgVkNTKQo+IC0jZGVmaW5lIFJfVkNTMiAgKDEgPDwgVkNTMikKPiArI2RlZmluZSBSX1JD UwlCSVQoUkNTMCkKPiArI2RlZmluZSBSX1ZDUzEgIEJJVChWQ1MwKQo+ICsjZGVmaW5lIFJfVkNT MiAgQklUKFZDUzEpCj4gICAjZGVmaW5lIFJfVkNTCShSX1ZDUzEgfCBSX1ZDUzIpCj4gLSNkZWZp bmUgUl9CQ1MJKDEgPDwgQkNTKQo+IC0jZGVmaW5lIFJfVkVDUwkoMSA8PCBWRUNTKQo+ICsjZGVm aW5lIFJfQkNTCUJJVChCQ1MwKQo+ICsjZGVmaW5lIFJfVkVDUwlCSVQoVkVDUzApCj4gICAjZGVm aW5lIFJfQUxMIChSX1JDUyB8IFJfVkNTIHwgUl9CQ1MgfCBSX1ZFQ1MpCj4gICAJLyogcmluZ3Mg dGhhdCBzdXBwb3J0IHRoaXMgY21kOiBCTFQvUkNTL1ZDUy9WRUNTICovCj4gICAJdTE2IHJpbmdz Owo+IEBAIC01NTgsNyArNTU4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkZWNvZGVfaW5mbyBk ZWNvZGVfaW5mb192ZWJveCA9IHsKPiAgIH07Cj4gICAKPiAgIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg ZGVjb2RlX2luZm8gKnJpbmdfZGVjb2RlX2luZm9bSTkxNV9OVU1fRU5HSU5FU11bOF0gPSB7Cj4g LQlbUkNTXSA9IHsKPiArCVtSQ1MwXSA9IHsKPiAgIAkJJmRlY29kZV9pbmZvX21pLAo+ICAgCQlO VUxMLAo+ICAgCQlOVUxMLAo+IEBAIC01NjksNyArNTY5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBkZWNvZGVfaW5mbyAqcmluZ19kZWNvZGVfaW5mb1tJOTE1X05VTV9FTkdJTkVTXVs4XSA9IHsK PiAgIAkJTlVMTCwKPiAgIAl9LAo+ICAgCj4gLQlbVkNTXSA9IHsKPiArCVtWQ1MwXSA9IHsKPiAg IAkJJmRlY29kZV9pbmZvX21pLAo+ICAgCQlOVUxMLAo+ICAgCQlOVUxMLAo+IEBAIC01ODAsNyAr NTgwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkZWNvZGVfaW5mbyAqcmluZ19kZWNvZGVfaW5m b1tJOTE1X05VTV9FTkdJTkVTXVs4XSA9IHsKPiAgIAkJTlVMTCwKPiAgIAl9LAo+ICAgCj4gLQlb QkNTXSA9IHsKPiArCVtCQ1MwXSA9IHsKPiAgIAkJJmRlY29kZV9pbmZvX21pLAo+ICAgCQlOVUxM LAo+ICAgCQkmZGVjb2RlX2luZm9fMmQsCj4gQEAgLTU5MSw3ICs1OTEsNyBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IGRlY29kZV9pbmZvICpyaW5nX2RlY29kZV9pbmZvW0k5MTVfTlVNX0VOR0lORVNd WzhdID0gewo+ICAgCQlOVUxMLAo+ICAgCX0sCj4gICAKPiAtCVtWRUNTXSA9IHsKPiArCVtWRUNT MF0gPSB7Cj4gICAJCSZkZWNvZGVfaW5mb19taSwKPiAgIAkJTlVMTCwKPiAgIAkJTlVMTCwKPiBA QCAtNjAyLDcgKzYwMiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGVjb2RlX2luZm8gKnJpbmdf ZGVjb2RlX2luZm9bSTkxNV9OVU1fRU5HSU5FU11bOF0gPSB7Cj4gICAJCU5VTEwsCj4gICAJfSwK PiAgIAo+IC0JW1ZDUzJdID0gewo+ICsJW1ZDUzFdID0gewo+ICAgCQkmZGVjb2RlX2luZm9fbWks Cj4gICAJCU5VTEwsCj4gICAJCU5VTEwsCj4gQEAgLTYzMSw4ICs2MzEsNyBAQCBzdGF0aWMgaW5s aW5lIGNvbnN0IHN0cnVjdCBjbWRfaW5mbyAqZmluZF9jbWRfZW50cnkoc3RydWN0IGludGVsX2d2 dCAqZ3Z0LAo+ICAgCXN0cnVjdCBjbWRfZW50cnkgKmU7Cj4gICAKPiAgIAloYXNoX2Zvcl9lYWNo X3Bvc3NpYmxlKGd2dC0+Y21kX3RhYmxlLCBlLCBobGlzdCwgb3Bjb2RlKSB7Cj4gLQkJaWYgKChv cGNvZGUgPT0gZS0+aW5mby0+b3Bjb2RlKSAmJgo+IC0JCQkJKGUtPmluZm8tPnJpbmdzICYgKDEg PDwgcmluZ19pZCkpKQo+ICsJCWlmIChvcGNvZGUgPT0gZS0+aW5mby0+b3Bjb2RlICYmIGUtPmlu Zm8tPnJpbmdzICYgQklUKHJpbmdfaWQpKQo+ICAgCQkJcmV0dXJuIGUtPmluZm87Cj4gICAJfQo+ ICAgCXJldHVybiBOVUxMOwo+IEBAIC05NDMsMTUgKzk0MiwxMiBAQCBzdGF0aWMgaW50IGNtZF9o YW5kbGVyX2xyaShzdHJ1Y3QgcGFyc2VyX2V4ZWNfc3RhdGUgKnMpCj4gICAJc3RydWN0IGludGVs X2d2dCAqZ3Z0ID0gcy0+dmdwdS0+Z3Z0Owo+ICAgCj4gICAJZm9yIChpID0gMTsgaSA8IGNtZF9s ZW47IGkgKz0gMikgewo+IC0JCWlmIChJU19CUk9BRFdFTEwoZ3Z0LT5kZXZfcHJpdikgJiYKPiAt CQkJCShzLT5yaW5nX2lkICE9IFJDUykpIHsKPiAtCQkJaWYgKHMtPnJpbmdfaWQgPT0gQkNTICYm Cj4gLQkJCQkJY21kX3JlZyhzLCBpKSA9PQo+IC0JCQkJCWk5MTVfbW1pb19yZWdfb2Zmc2V0KERF UlJNUikpCj4gKwkJaWYgKElTX0JST0FEV0VMTChndnQtPmRldl9wcml2KSAmJiBzLT5yaW5nX2lk ICE9IFJDUzApIHsKPiArCQkJaWYgKHMtPnJpbmdfaWQgPT0gQkNTMCAmJgo+ICsJCQkgICAgY21k X3JlZyhzLCBpKSA9PSBpOTE1X21taW9fcmVnX29mZnNldChERVJSTVIpKQo+ICAgCQkJCXJldCB8 PSAwOwo+ICAgCQkJZWxzZQo+IC0JCQkJcmV0IHw9IChjbWRfcmVnX2luaGliaXQocywgaSkpID8K PiAtCQkJCQktRUJBRFJRQyA6IDA7Cj4gKwkJCQlyZXQgfD0gY21kX3JlZ19pbmhpYml0KHMsIGkp ID8gLUVCQURSUUMgOiAwOwo+ICAgCQl9Cj4gICAJCWlmIChyZXQpCj4gICAJCQlicmVhazsKPiBA QCAtMTA0NywyNyArMTA0MywyNyBAQCBzdHJ1Y3QgY21kX2ludGVycnVwdF9ldmVudCB7Cj4gICB9 Owo+ICAgCj4gICBzdGF0aWMgc3RydWN0IGNtZF9pbnRlcnJ1cHRfZXZlbnQgY21kX2ludGVycnVw dF9ldmVudHNbXSA9IHsKPiAtCVtSQ1NdID0gewo+ICsJW1JDUzBdID0gewo+ICAgCQkucGlwZV9j b250cm9sX25vdGlmeSA9IFJDU19QSVBFX0NPTlRST0wsCj4gICAJCS5taV9mbHVzaF9kdyA9IElO VEVMX0dWVF9FVkVOVF9SRVNFUlZFRCwKPiAgIAkJLm1pX3VzZXJfaW50ZXJydXB0ID0gUkNTX01J X1VTRVJfSU5URVJSVVBULAo+ICAgCX0sCj4gLQlbQkNTXSA9IHsKPiArCVtCQ1MwXSA9IHsKPiAg IAkJLnBpcGVfY29udHJvbF9ub3RpZnkgPSBJTlRFTF9HVlRfRVZFTlRfUkVTRVJWRUQsCj4gICAJ CS5taV9mbHVzaF9kdyA9IEJDU19NSV9GTFVTSF9EVywKPiAgIAkJLm1pX3VzZXJfaW50ZXJydXB0 ID0gQkNTX01JX1VTRVJfSU5URVJSVVBULAo+ICAgCX0sCj4gLQlbVkNTXSA9IHsKPiArCVtWQ1Mw XSA9IHsKPiAgIAkJLnBpcGVfY29udHJvbF9ub3RpZnkgPSBJTlRFTF9HVlRfRVZFTlRfUkVTRVJW RUQsCj4gICAJCS5taV9mbHVzaF9kdyA9IFZDU19NSV9GTFVTSF9EVywKPiAgIAkJLm1pX3VzZXJf aW50ZXJydXB0ID0gVkNTX01JX1VTRVJfSU5URVJSVVBULAo+ICAgCX0sCj4gLQlbVkNTMl0gPSB7 Cj4gKwlbVkNTMV0gPSB7Cj4gICAJCS5waXBlX2NvbnRyb2xfbm90aWZ5ID0gSU5URUxfR1ZUX0VW RU5UX1JFU0VSVkVELAo+ICAgCQkubWlfZmx1c2hfZHcgPSBWQ1MyX01JX0ZMVVNIX0RXLAo+ICAg CQkubWlfdXNlcl9pbnRlcnJ1cHQgPSBWQ1MyX01JX1VTRVJfSU5URVJSVVBULAo+ICAgCX0sCj4g LQlbVkVDU10gPSB7Cj4gKwlbVkVDUzBdID0gewo+ICAgCQkucGlwZV9jb250cm9sX25vdGlmeSA9 IElOVEVMX0dWVF9FVkVOVF9SRVNFUlZFRCwKPiAgIAkJLm1pX2ZsdXNoX2R3ID0gVkVDU19NSV9G TFVTSF9EVywKPiAgIAkJLm1pX3VzZXJfaW50ZXJydXB0ID0gVkVDU19NSV9VU0VSX0lOVEVSUlVQ VCwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2V4ZWNsaXN0LmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZXhlY2xpc3QuYwo+IGluZGV4IDcwNDk0ZTM5NGQyYy4u MWE5MzQ3MmNiMzRlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9leGVj bGlzdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2V4ZWNsaXN0LmMKPiBAQCAt NDcsMTcgKzQ3LDE2IEBACj4gICAJCSgoYSktPmxyY2EgPT0gKGIpLT5scmNhKSkKPiAgIAo+ICAg c3RhdGljIGludCBjb250ZXh0X3N3aXRjaF9ldmVudHNbXSA9IHsKPiAtCVtSQ1NdID0gUkNTX0FT X0NPTlRFWFRfU1dJVENILAo+IC0JW0JDU10gPSBCQ1NfQVNfQ09OVEVYVF9TV0lUQ0gsCj4gLQlb VkNTXSA9IFZDU19BU19DT05URVhUX1NXSVRDSCwKPiAtCVtWQ1MyXSA9IFZDUzJfQVNfQ09OVEVY VF9TV0lUQ0gsCj4gLQlbVkVDU10gPSBWRUNTX0FTX0NPTlRFWFRfU1dJVENILAo+ICsJW1JDUzBd ICA9IFJDU19BU19DT05URVhUX1NXSVRDSCwKPiArCVtCQ1MwXSAgPSBCQ1NfQVNfQ09OVEVYVF9T V0lUQ0gsCj4gKwlbVkNTMF0gID0gVkNTX0FTX0NPTlRFWFRfU1dJVENILAo+ICsJW1ZDUzFdICA9 IFZDUzJfQVNfQ09OVEVYVF9TV0lUQ0gsCj4gKwlbVkVDUzBdID0gVkVDU19BU19DT05URVhUX1NX SVRDSCwKPiAgIH07Cj4gICAKPiAtc3RhdGljIGludCByaW5nX2lkX3RvX2NvbnRleHRfc3dpdGNo X2V2ZW50KGludCByaW5nX2lkKQo+ICtzdGF0aWMgaW50IHJpbmdfaWRfdG9fY29udGV4dF9zd2l0 Y2hfZXZlbnQodW5zaWduZWQgaW50IHJpbmdfaWQpCj4gICB7Cj4gLQlpZiAoV0FSTl9PTihyaW5n X2lkIDwgUkNTIHx8Cj4gLQkJICAgIHJpbmdfaWQgPj0gQVJSQVlfU0laRShjb250ZXh0X3N3aXRj aF9ldmVudHMpKSkKPiArCWlmIChXQVJOX09OKHJpbmdfaWQgPj0gQVJSQVlfU0laRShjb250ZXh0 X3N3aXRjaF9ldmVudHMpKSkKPiAgIAkJcmV0dXJuIC1FSU5WQUw7Cj4gICAKPiAgIAlyZXR1cm4g Y29udGV4dF9zd2l0Y2hfZXZlbnRzW3JpbmdfaWRdOwo+IEBAIC00MTEsNyArNDEwLDcgQEAgc3Rh dGljIGludCBjb21wbGV0ZV9leGVjbGlzdF93b3JrbG9hZChzdHJ1Y3QgaW50ZWxfdmdwdV93b3Jr bG9hZCAqd29ya2xvYWQpCj4gICAJZ3Z0X2RiZ19lbCgiY29tcGxldGUgd29ya2xvYWQgJXAgc3Rh dHVzICVkXG4iLCB3b3JrbG9hZCwKPiAgIAkJCXdvcmtsb2FkLT5zdGF0dXMpOwo+ICAgCj4gLQlp ZiAod29ya2xvYWQtPnN0YXR1cyB8fCAodmdwdS0+cmVzZXR0aW5nX2VuZyAmIEVOR0lORV9NQVNL KHJpbmdfaWQpKSkKPiArCWlmICh3b3JrbG9hZC0+c3RhdHVzIHx8ICh2Z3B1LT5yZXNldHRpbmdf ZW5nICYgQklUKHJpbmdfaWQpKSkKPiAgIAkJZ290byBvdXQ7Cj4gICAKPiAgIAlpZiAoIWxpc3Rf ZW1wdHkod29ya2xvYWRfcV9oZWFkKHZncHUsIHJpbmdfaWQpKSkgewo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvaGFuZGxlcnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d2dC9oYW5kbGVycy5jCj4gaW5kZXggYmM2NGI4MTBlMGQ1Li5iNTk2Y2I0MmUyNGUgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2hhbmRsZXJzLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndnQvaGFuZGxlcnMuYwo+IEBAIC0zMjMsMjUgKzMyMywyNSBAQCBz dGF0aWMgaW50IGdkcnN0X21taW9fd3JpdGUoc3RydWN0IGludGVsX3ZncHUgKnZncHUsIHVuc2ln bmVkIGludCBvZmZzZXQsCj4gICAJfSBlbHNlIHsKPiAgIAkJaWYgKGRhdGEgJiBHRU42X0dSRE9N X1JFTkRFUikgewo+ICAgCQkJZ3Z0X2RiZ19tbWlvKCJ2Z3B1JWQ6IHJlcXVlc3QgUkNTIHJlc2V0 XG4iLCB2Z3B1LT5pZCk7Cj4gLQkJCWVuZ2luZV9tYXNrIHw9ICgxIDw8IFJDUyk7Cj4gKwkJCWVu Z2luZV9tYXNrIHw9IEJJVChSQ1MwKTsKPiAgIAkJfQo+ICAgCQlpZiAoZGF0YSAmIEdFTjZfR1JE T01fTUVESUEpIHsKPiAgIAkJCWd2dF9kYmdfbW1pbygidmdwdSVkOiByZXF1ZXN0IFZDUyByZXNl dFxuIiwgdmdwdS0+aWQpOwo+IC0JCQllbmdpbmVfbWFzayB8PSAoMSA8PCBWQ1MpOwo+ICsJCQll bmdpbmVfbWFzayB8PSBCSVQoVkNTMCk7Cj4gICAJCX0KPiAgIAkJaWYgKGRhdGEgJiBHRU42X0dS RE9NX0JMVCkgewo+ICAgCQkJZ3Z0X2RiZ19tbWlvKCJ2Z3B1JWQ6IHJlcXVlc3QgQkNTIFJlc2V0 XG4iLCB2Z3B1LT5pZCk7Cj4gLQkJCWVuZ2luZV9tYXNrIHw9ICgxIDw8IEJDUyk7Cj4gKwkJCWVu Z2luZV9tYXNrIHw9IEJJVChCQ1MwKTsKPiAgIAkJfQo+ICAgCQlpZiAoZGF0YSAmIEdFTjZfR1JE T01fVkVDUykgewo+ICAgCQkJZ3Z0X2RiZ19tbWlvKCJ2Z3B1JWQ6IHJlcXVlc3QgVkVDUyBSZXNl dFxuIiwgdmdwdS0+aWQpOwo+IC0JCQllbmdpbmVfbWFzayB8PSAoMSA8PCBWRUNTKTsKPiArCQkJ ZW5naW5lX21hc2sgfD0gQklUKFZFQ1MwKTsKPiAgIAkJfQo+ICAgCQlpZiAoZGF0YSAmIEdFTjhf R1JET01fTUVESUEyKSB7Cj4gICAJCQlndnRfZGJnX21taW8oInZncHUlZDogcmVxdWVzdCBWQ1My IFJlc2V0XG4iLCB2Z3B1LT5pZCk7Cj4gLQkJCWlmIChIQVNfQlNEMih2Z3B1LT5ndnQtPmRldl9w cml2KSkKPiAtCQkJCWVuZ2luZV9tYXNrIHw9ICgxIDw8IFZDUzIpOwo+ICsJCQllbmdpbmVfbWFz ayB8PSBCSVQoVkNTMSk7Cj4gICAJCX0KPiArCQllbmdpbmVfbWFzayAmPSBJTlRFTF9JTkZPKHZn cHUtPmd2dC0+ZGV2X3ByaXYpLT5lbmdpbmVfbWFzazsKPiAgIAl9Cj4gICAKPiAgIAkvKiB2Z3B1 X2xvY2sgYWxyZWFkeSBob2xkIGJ5IGVtdWxhdGUgbW1pbyByL3cgKi8KPiBAQCAtMTcwNCw3ICsx NzA0LDcgQEAgc3RhdGljIGludCByaW5nX21vZGVfbW1pb193cml0ZShzdHJ1Y3QgaW50ZWxfdmdw dSAqdmdwdSwgdW5zaWduZWQgaW50IG9mZnNldCwKPiAgIAkJCXJldHVybiAwOwo+ICAgCj4gICAJ CXJldCA9IGludGVsX3ZncHVfc2VsZWN0X3N1Ym1pc3Npb25fb3BzKHZncHUsCj4gLQkJCSAgICAg ICBFTkdJTkVfTUFTSyhyaW5nX2lkKSwKPiArCQkJICAgICAgIEJJVChyaW5nX2lkKSwKPiAgIAkJ CSAgICAgICBJTlRFTF9WR1BVX0VYRUNMSVNUX1NVQk1JU1NJT04pOwo+ICAgCQlpZiAocmV0KQo+ ICAgCQkJcmV0dXJuIHJldDsKPiBAQCAtMTcyNCwxOSArMTcyNCwxOSBAQCBzdGF0aWMgaW50IGd2 dF9yZWdfdGxiX2NvbnRyb2xfaGFuZGxlcihzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSwKPiAgIAo+ ICAgCXN3aXRjaCAob2Zmc2V0KSB7Cj4gICAJY2FzZSAweDQyNjA6Cj4gLQkJaWQgPSBSQ1M7Cj4g KwkJaWQgPSBSQ1MwOwo+ICAgCQlicmVhazsKPiAgIAljYXNlIDB4NDI2NDoKPiAtCQlpZCA9IFZD UzsKPiArCQlpZCA9IFZDUzA7Cj4gICAJCWJyZWFrOwo+ICAgCWNhc2UgMHg0MjY4Ogo+IC0JCWlk ID0gVkNTMjsKPiArCQlpZCA9IFZDUzE7Cj4gICAJCWJyZWFrOwo+ICAgCWNhc2UgMHg0MjZjOgo+ IC0JCWlkID0gQkNTOwo+ICsJCWlkID0gQkNTMDsKPiAgIAkJYnJlYWs7Cj4gICAJY2FzZSAweDQy NzA6Cj4gLQkJaWQgPSBWRUNTOwo+ICsJCWlkID0gVkVDUzA7Cj4gICAJCWJyZWFrOwo+ICAgCWRl ZmF1bHQ6Cj4gICAJCXJldHVybiAtRUlOVkFMOwo+IEBAIC0xNzkzLDcgKzE3OTMsNyBAQCBzdGF0 aWMgaW50IHJpbmdfcmVzZXRfY3RsX3dyaXRlKHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1LAo+ICAg CU1NSU9fRihwcmVmaXgoQkxUX1JJTkdfQkFTRSksIHMsIGYsIGFtLCBybSwgZCwgciwgdyk7IFwK PiAgIAlNTUlPX0YocHJlZml4KEdFTjZfQlNEX1JJTkdfQkFTRSksIHMsIGYsIGFtLCBybSwgZCwg ciwgdyk7IFwKPiAgIAlNTUlPX0YocHJlZml4KFZFQk9YX1JJTkdfQkFTRSksIHMsIGYsIGFtLCBy bSwgZCwgciwgdyk7IFwKPiAtCWlmIChIQVNfQlNEMihkZXZfcHJpdikpIFwKPiArCWlmIChIQVNf RU5HSU5FKGRldl9wcml2LCBWQ1MxKSkgXAo+ICAgCQlNTUlPX0YocHJlZml4KEdFTjhfQlNEMl9S SU5HX0JBU0UpLCBzLCBmLCBhbSwgcm0sIGQsIHIsIHcpOyBcCj4gICB9IHdoaWxlICgwKQo+ICAg Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9pbnRlcnJ1cHQuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9pbnRlcnJ1cHQuYwo+IGluZGV4IDY3MTI1YzVlZWM2ZS4u OTUxNjgxODEzMjMwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9pbnRl cnJ1cHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9pbnRlcnJ1cHQuYwo+IEBA IC01MzYsNyArNTM2LDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9pbml0X2lycSgKPiAgIAlTRVRfQklU X0lORk8oaXJxLCA0LCBWQ1NfTUlfRkxVU0hfRFcsIElOVEVMX0dWVF9JUlFfSU5GT19HVDEpOwo+ ICAgCVNFVF9CSVRfSU5GTyhpcnEsIDgsIFZDU19BU19DT05URVhUX1NXSVRDSCwgSU5URUxfR1ZU X0lSUV9JTkZPX0dUMSk7Cj4gICAKPiAtCWlmIChIQVNfQlNEMihndnQtPmRldl9wcml2KSkgewo+ ICsJaWYgKEhBU19FTkdJTkUoZ3Z0LT5kZXZfcHJpdiwgVkNTMSkpIHsKPiAgIAkJU0VUX0JJVF9J TkZPKGlycSwgMTYsIFZDUzJfTUlfVVNFUl9JTlRFUlJVUFQsCj4gICAJCQlJTlRFTF9HVlRfSVJR X0lORk9fR1QxKTsKPiAgIAkJU0VUX0JJVF9JTkZPKGlycSwgMjAsIFZDUzJfTUlfRkxVU0hfRFcs Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9tbWlvX2NvbnRleHQuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9tbWlvX2NvbnRleHQuYwo+IGluZGV4IDdkODRjZmI5 MDUxYS4uMDIwOWQyN2ZjYWYwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2 dC9tbWlvX2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9tbWlvX2Nv bnRleHQuYwo+IEBAIC00MSwxMDIgKzQxLDEwMiBAQAo+ICAgCj4gICAvKiBSYXcgb2Zmc2V0IGlz IGFwcGVuZWQgdG8gZWFjaCBsaW5lIGZvciBjb252ZW5pZW5jZS4gKi8KPiAgIHN0YXRpYyBzdHJ1 Y3QgZW5naW5lX21taW8gZ2VuOF9lbmdpbmVfbW1pb19saXN0W10gX19jYWNoZWxpbmVfYWxpZ25l ZCA9IHsKPiAtCXtSQ1MsIEdGWF9NT0RFX0dFTjcsIDB4ZmZmZiwgZmFsc2V9LCAvKiAweDIyOWMg Ki8KPiAtCXtSQ1MsIEdFTjlfQ1RYX1BSRUVNUFRfUkVHLCAweDAsIGZhbHNlfSwgLyogMHgyMjQ4 ICovCj4gLQl7UkNTLCBIV1NUQU0sIDB4MCwgZmFsc2V9LCAvKiAweDIwOTggKi8KPiAtCXtSQ1Ms IElOU1RQTSwgMHhmZmZmLCB0cnVlfSwgLyogMHgyMGMwICovCj4gLQl7UkNTLCBSSU5HX0ZPUkNF X1RPX05PTlBSSVYoUkVOREVSX1JJTkdfQkFTRSwgMCksIDAsIGZhbHNlfSwgLyogMHgyNGQwICov Cj4gLQl7UkNTLCBSSU5HX0ZPUkNFX1RPX05PTlBSSVYoUkVOREVSX1JJTkdfQkFTRSwgMSksIDAs IGZhbHNlfSwgLyogMHgyNGQ0ICovCj4gLQl7UkNTLCBSSU5HX0ZPUkNFX1RPX05PTlBSSVYoUkVO REVSX1JJTkdfQkFTRSwgMiksIDAsIGZhbHNlfSwgLyogMHgyNGQ4ICovCj4gLQl7UkNTLCBSSU5H X0ZPUkNFX1RPX05PTlBSSVYoUkVOREVSX1JJTkdfQkFTRSwgMyksIDAsIGZhbHNlfSwgLyogMHgy NGRjICovCj4gLQl7UkNTLCBSSU5HX0ZPUkNFX1RPX05PTlBSSVYoUkVOREVSX1JJTkdfQkFTRSwg NCksIDAsIGZhbHNlfSwgLyogMHgyNGUwICovCj4gLQl7UkNTLCBSSU5HX0ZPUkNFX1RPX05PTlBS SVYoUkVOREVSX1JJTkdfQkFTRSwgNSksIDAsIGZhbHNlfSwgLyogMHgyNGU0ICovCj4gLQl7UkNT LCBSSU5HX0ZPUkNFX1RPX05PTlBSSVYoUkVOREVSX1JJTkdfQkFTRSwgNiksIDAsIGZhbHNlfSwg LyogMHgyNGU4ICovCj4gLQl7UkNTLCBSSU5HX0ZPUkNFX1RPX05PTlBSSVYoUkVOREVSX1JJTkdf QkFTRSwgNyksIDAsIGZhbHNlfSwgLyogMHgyNGVjICovCj4gLQl7UkNTLCBSSU5HX0ZPUkNFX1RP X05PTlBSSVYoUkVOREVSX1JJTkdfQkFTRSwgOCksIDAsIGZhbHNlfSwgLyogMHgyNGYwICovCj4g LQl7UkNTLCBSSU5HX0ZPUkNFX1RPX05PTlBSSVYoUkVOREVSX1JJTkdfQkFTRSwgOSksIDAsIGZh bHNlfSwgLyogMHgyNGY0ICovCj4gLQl7UkNTLCBSSU5HX0ZPUkNFX1RPX05PTlBSSVYoUkVOREVS X1JJTkdfQkFTRSwgMTApLCAwLCBmYWxzZX0sIC8qIDB4MjRmOCAqLwo+IC0Je1JDUywgUklOR19G T1JDRV9UT19OT05QUklWKFJFTkRFUl9SSU5HX0JBU0UsIDExKSwgMCwgZmFsc2V9LCAvKiAweDI0 ZmMgKi8KPiAtCXtSQ1MsIENBQ0hFX01PREVfMSwgMHhmZmZmLCB0cnVlfSwgLyogMHg3MDA0ICov Cj4gLQl7UkNTLCBHRU43X0dUX01PREUsIDB4ZmZmZiwgdHJ1ZX0sIC8qIDB4NzAwOCAqLwo+IC0J e1JDUywgQ0FDSEVfTU9ERV8wX0dFTjcsIDB4ZmZmZiwgdHJ1ZX0sIC8qIDB4NzAwMCAqLwo+IC0J e1JDUywgR0VON19DT01NT05fU0xJQ0VfQ0hJQ0tFTjEsIDB4ZmZmZiwgdHJ1ZX0sIC8qIDB4NzAx MCAqLwo+IC0Je1JDUywgSERDX0NISUNLRU4wLCAweGZmZmYsIHRydWV9LCAvKiAweDczMDAgKi8K PiAtCXtSQ1MsIFZGX0dVQVJEQkFORCwgMHhmZmZmLCB0cnVlfSwgLyogMHg4M2E0ICovCj4gLQo+ IC0Je0JDUywgUklOR19HRlhfTU9ERShCTFRfUklOR19CQVNFKSwgMHhmZmZmLCBmYWxzZX0sIC8q IDB4MjIyOWMgKi8KPiAtCXtCQ1MsIFJJTkdfTUlfTU9ERShCTFRfUklOR19CQVNFKSwgMHhmZmZm LCBmYWxzZX0sIC8qIDB4MjIwOWMgKi8KPiAtCXtCQ1MsIFJJTkdfSU5TVFBNKEJMVF9SSU5HX0JB U0UpLCAweGZmZmYsIGZhbHNlfSwgLyogMHgyMjBjMCAqLwo+IC0Je0JDUywgUklOR19IV1NUQU0o QkxUX1JJTkdfQkFTRSksIDB4MCwgZmFsc2V9LCAvKiAweDIyMDk4ICovCj4gLQl7QkNTLCBSSU5H X0VYQ0MoQkxUX1JJTkdfQkFTRSksIDB4MCwgZmFsc2V9LCAvKiAweDIyMDI4ICovCj4gLQl7UkNT LCBJTlZBTElEX01NSU9fUkVHLCAwLCBmYWxzZSB9IC8qIFRlcm1pbmF0ZWQgKi8KPiArCXtSQ1Mw LCBHRlhfTU9ERV9HRU43LCAweGZmZmYsIGZhbHNlfSwgLyogMHgyMjljICovCj4gKwl7UkNTMCwg R0VOOV9DVFhfUFJFRU1QVF9SRUcsIDB4MCwgZmFsc2V9LCAvKiAweDIyNDggKi8KPiArCXtSQ1Mw LCBIV1NUQU0sIDB4MCwgZmFsc2V9LCAvKiAweDIwOTggKi8KPiArCXtSQ1MwLCBJTlNUUE0sIDB4 ZmZmZiwgdHJ1ZX0sIC8qIDB4MjBjMCAqLwo+ICsJe1JDUzAsIFJJTkdfRk9SQ0VfVE9fTk9OUFJJ VihSRU5ERVJfUklOR19CQVNFLCAwKSwgMCwgZmFsc2V9LCAvKiAweDI0ZDAgKi8KPiArCXtSQ1Mw LCBSSU5HX0ZPUkNFX1RPX05PTlBSSVYoUkVOREVSX1JJTkdfQkFTRSwgMSksIDAsIGZhbHNlfSwg LyogMHgyNGQ0ICovCj4gKwl7UkNTMCwgUklOR19GT1JDRV9UT19OT05QUklWKFJFTkRFUl9SSU5H X0JBU0UsIDIpLCAwLCBmYWxzZX0sIC8qIDB4MjRkOCAqLwo+ICsJe1JDUzAsIFJJTkdfRk9SQ0Vf VE9fTk9OUFJJVihSRU5ERVJfUklOR19CQVNFLCAzKSwgMCwgZmFsc2V9LCAvKiAweDI0ZGMgKi8K PiArCXtSQ1MwLCBSSU5HX0ZPUkNFX1RPX05PTlBSSVYoUkVOREVSX1JJTkdfQkFTRSwgNCksIDAs IGZhbHNlfSwgLyogMHgyNGUwICovCj4gKwl7UkNTMCwgUklOR19GT1JDRV9UT19OT05QUklWKFJF TkRFUl9SSU5HX0JBU0UsIDUpLCAwLCBmYWxzZX0sIC8qIDB4MjRlNCAqLwo+ICsJe1JDUzAsIFJJ TkdfRk9SQ0VfVE9fTk9OUFJJVihSRU5ERVJfUklOR19CQVNFLCA2KSwgMCwgZmFsc2V9LCAvKiAw eDI0ZTggKi8KPiArCXtSQ1MwLCBSSU5HX0ZPUkNFX1RPX05PTlBSSVYoUkVOREVSX1JJTkdfQkFT RSwgNyksIDAsIGZhbHNlfSwgLyogMHgyNGVjICovCj4gKwl7UkNTMCwgUklOR19GT1JDRV9UT19O T05QUklWKFJFTkRFUl9SSU5HX0JBU0UsIDgpLCAwLCBmYWxzZX0sIC8qIDB4MjRmMCAqLwo+ICsJ e1JDUzAsIFJJTkdfRk9SQ0VfVE9fTk9OUFJJVihSRU5ERVJfUklOR19CQVNFLCA5KSwgMCwgZmFs c2V9LCAvKiAweDI0ZjQgKi8KPiArCXtSQ1MwLCBSSU5HX0ZPUkNFX1RPX05PTlBSSVYoUkVOREVS X1JJTkdfQkFTRSwgMTApLCAwLCBmYWxzZX0sIC8qIDB4MjRmOCAqLwo+ICsJe1JDUzAsIFJJTkdf Rk9SQ0VfVE9fTk9OUFJJVihSRU5ERVJfUklOR19CQVNFLCAxMSksIDAsIGZhbHNlfSwgLyogMHgy NGZjICovCj4gKwl7UkNTMCwgQ0FDSEVfTU9ERV8xLCAweGZmZmYsIHRydWV9LCAvKiAweDcwMDQg Ki8KPiArCXtSQ1MwLCBHRU43X0dUX01PREUsIDB4ZmZmZiwgdHJ1ZX0sIC8qIDB4NzAwOCAqLwo+ ICsJe1JDUzAsIENBQ0hFX01PREVfMF9HRU43LCAweGZmZmYsIHRydWV9LCAvKiAweDcwMDAgKi8K PiArCXtSQ1MwLCBHRU43X0NPTU1PTl9TTElDRV9DSElDS0VOMSwgMHhmZmZmLCB0cnVlfSwgLyog MHg3MDEwICovCj4gKwl7UkNTMCwgSERDX0NISUNLRU4wLCAweGZmZmYsIHRydWV9LCAvKiAweDcz MDAgKi8KPiArCXtSQ1MwLCBWRl9HVUFSREJBTkQsIDB4ZmZmZiwgdHJ1ZX0sIC8qIDB4ODNhNCAq Lwo+ICsKPiArCXtCQ1MwLCBSSU5HX0dGWF9NT0RFKEJMVF9SSU5HX0JBU0UpLCAweGZmZmYsIGZh bHNlfSwgLyogMHgyMjI5YyAqLwo+ICsJe0JDUzAsIFJJTkdfTUlfTU9ERShCTFRfUklOR19CQVNF KSwgMHhmZmZmLCBmYWxzZX0sIC8qIDB4MjIwOWMgKi8KPiArCXtCQ1MwLCBSSU5HX0lOU1RQTShC TFRfUklOR19CQVNFKSwgMHhmZmZmLCBmYWxzZX0sIC8qIDB4MjIwYzAgKi8KPiArCXtCQ1MwLCBS SU5HX0hXU1RBTShCTFRfUklOR19CQVNFKSwgMHgwLCBmYWxzZX0sIC8qIDB4MjIwOTggKi8KPiAr CXtCQ1MwLCBSSU5HX0VYQ0MoQkxUX1JJTkdfQkFTRSksIDB4MCwgZmFsc2V9LCAvKiAweDIyMDI4 ICovCj4gKwl7UkNTMCwgSU5WQUxJRF9NTUlPX1JFRywgMCwgZmFsc2UgfSAvKiBUZXJtaW5hdGVk ICovCj4gICB9Owo+ICAgCj4gICBzdGF0aWMgc3RydWN0IGVuZ2luZV9tbWlvIGdlbjlfZW5naW5l X21taW9fbGlzdFtdIF9fY2FjaGVsaW5lX2FsaWduZWQgPSB7Cj4gLQl7UkNTLCBHRlhfTU9ERV9H RU43LCAweGZmZmYsIGZhbHNlfSwgLyogMHgyMjljICovCj4gLQl7UkNTLCBHRU45X0NUWF9QUkVF TVBUX1JFRywgMHgwLCBmYWxzZX0sIC8qIDB4MjI0OCAqLwo+IC0Je1JDUywgSFdTVEFNLCAweDAs IGZhbHNlfSwgLyogMHgyMDk4ICovCj4gLQl7UkNTLCBJTlNUUE0sIDB4ZmZmZiwgdHJ1ZX0sIC8q IDB4MjBjMCAqLwo+IC0Je1JDUywgUklOR19GT1JDRV9UT19OT05QUklWKFJFTkRFUl9SSU5HX0JB U0UsIDApLCAwLCBmYWxzZX0sIC8qIDB4MjRkMCAqLwo+IC0Je1JDUywgUklOR19GT1JDRV9UT19O T05QUklWKFJFTkRFUl9SSU5HX0JBU0UsIDEpLCAwLCBmYWxzZX0sIC8qIDB4MjRkNCAqLwo+IC0J e1JDUywgUklOR19GT1JDRV9UT19OT05QUklWKFJFTkRFUl9SSU5HX0JBU0UsIDIpLCAwLCBmYWxz ZX0sIC8qIDB4MjRkOCAqLwo+IC0Je1JDUywgUklOR19GT1JDRV9UT19OT05QUklWKFJFTkRFUl9S SU5HX0JBU0UsIDMpLCAwLCBmYWxzZX0sIC8qIDB4MjRkYyAqLwo+IC0Je1JDUywgUklOR19GT1JD RV9UT19OT05QUklWKFJFTkRFUl9SSU5HX0JBU0UsIDQpLCAwLCBmYWxzZX0sIC8qIDB4MjRlMCAq Lwo+IC0Je1JDUywgUklOR19GT1JDRV9UT19OT05QUklWKFJFTkRFUl9SSU5HX0JBU0UsIDUpLCAw LCBmYWxzZX0sIC8qIDB4MjRlNCAqLwo+IC0Je1JDUywgUklOR19GT1JDRV9UT19OT05QUklWKFJF TkRFUl9SSU5HX0JBU0UsIDYpLCAwLCBmYWxzZX0sIC8qIDB4MjRlOCAqLwo+IC0Je1JDUywgUklO R19GT1JDRV9UT19OT05QUklWKFJFTkRFUl9SSU5HX0JBU0UsIDcpLCAwLCBmYWxzZX0sIC8qIDB4 MjRlYyAqLwo+IC0Je1JDUywgUklOR19GT1JDRV9UT19OT05QUklWKFJFTkRFUl9SSU5HX0JBU0Us IDgpLCAwLCBmYWxzZX0sIC8qIDB4MjRmMCAqLwo+IC0Je1JDUywgUklOR19GT1JDRV9UT19OT05Q UklWKFJFTkRFUl9SSU5HX0JBU0UsIDkpLCAwLCBmYWxzZX0sIC8qIDB4MjRmNCAqLwo+IC0Je1JD UywgUklOR19GT1JDRV9UT19OT05QUklWKFJFTkRFUl9SSU5HX0JBU0UsIDEwKSwgMCwgZmFsc2V9 LCAvKiAweDI0ZjggKi8KPiAtCXtSQ1MsIFJJTkdfRk9SQ0VfVE9fTk9OUFJJVihSRU5ERVJfUklO R19CQVNFLCAxMSksIDAsIGZhbHNlfSwgLyogMHgyNGZjICovCj4gLQl7UkNTLCBDQUNIRV9NT0RF XzEsIDB4ZmZmZiwgdHJ1ZX0sIC8qIDB4NzAwNCAqLwo+IC0Je1JDUywgR0VON19HVF9NT0RFLCAw eGZmZmYsIHRydWV9LCAvKiAweDcwMDggKi8KPiAtCXtSQ1MsIENBQ0hFX01PREVfMF9HRU43LCAw eGZmZmYsIHRydWV9LCAvKiAweDcwMDAgKi8KPiAtCXtSQ1MsIEdFTjdfQ09NTU9OX1NMSUNFX0NI SUNLRU4xLCAweGZmZmYsIHRydWV9LCAvKiAweDcwMTAgKi8KPiAtCXtSQ1MsIEhEQ19DSElDS0VO MCwgMHhmZmZmLCB0cnVlfSwgLyogMHg3MzAwICovCj4gLQl7UkNTLCBWRl9HVUFSREJBTkQsIDB4 ZmZmZiwgdHJ1ZX0sIC8qIDB4ODNhNCAqLwo+IC0KPiAtCXtSQ1MsIEdFTjhfUFJJVkFURV9QQVRf TE8sIDAsIGZhbHNlfSwgLyogMHg0MGUwICovCj4gLQl7UkNTLCBHRU44X1BSSVZBVEVfUEFUX0hJ LCAwLCBmYWxzZX0sIC8qIDB4NDBlNCAqLwo+IC0Je1JDUywgR0VOOF9DU19DSElDS0VOMSwgMHhm ZmZmLCB0cnVlfSwgLyogMHgyNTgwICovCj4gLQl7UkNTLCBDT01NT05fU0xJQ0VfQ0hJQ0tFTjIs IDB4ZmZmZiwgdHJ1ZX0sIC8qIDB4NzAxNCAqLwo+IC0Je1JDUywgR0VOOV9DU19ERUJVR19NT0RF MSwgMHhmZmZmLCBmYWxzZX0sIC8qIDB4MjBlYyAqLwo+IC0Je1JDUywgR0VOOF9MM1NRQ1JFRzQs IDAsIGZhbHNlfSwgLyogMHhiMTE4ICovCj4gLQl7UkNTLCBHRU43X0hBTEZfU0xJQ0VfQ0hJQ0tF TjEsIDB4ZmZmZiwgdHJ1ZX0sIC8qIDB4ZTEwMCAqLwo+IC0Je1JDUywgSEFMRl9TTElDRV9DSElD S0VOMiwgMHhmZmZmLCB0cnVlfSwgLyogMHhlMTgwICovCj4gLQl7UkNTLCBIQUxGX1NMSUNFX0NI SUNLRU4zLCAweGZmZmYsIHRydWV9LCAvKiAweGUxODQgKi8KPiAtCXtSQ1MsIEdFTjlfSEFMRl9T TElDRV9DSElDS0VONSwgMHhmZmZmLCB0cnVlfSwgLyogMHhlMTg4ICovCj4gLQl7UkNTLCBHRU45 X0hBTEZfU0xJQ0VfQ0hJQ0tFTjcsIDB4ZmZmZiwgdHJ1ZX0sIC8qIDB4ZTE5NCAqLwo+IC0Je1JD UywgR0VOOF9ST1dfQ0hJQ0tFTiwgMHhmZmZmLCB0cnVlfSwgLyogMHhlNGYwICovCj4gLQl7UkNT LCBUUlZBVFRMM1BUUkRXKDApLCAwLCBmYWxzZX0sIC8qIDB4NGRlMCAqLwo+IC0Je1JDUywgVFJW QVRUTDNQVFJEVygxKSwgMCwgZmFsc2V9LCAvKiAweDRkZTQgKi8KPiAtCXtSQ1MsIFRSTlVMTERF VENULCAwLCBmYWxzZX0sIC8qIDB4NGRlOCAqLwo+IC0Je1JDUywgVFJJTlZUSUxFREVUQ1QsIDAs IGZhbHNlfSwgLyogMHg0ZGVjICovCj4gLQl7UkNTLCBUUlZBRFIsIDAsIGZhbHNlfSwgLyogMHg0 ZGYwICovCj4gLQl7UkNTLCBUUlRURSwgMCwgZmFsc2V9LCAvKiAweDRkZjQgKi8KPiAtCj4gLQl7 QkNTLCBSSU5HX0dGWF9NT0RFKEJMVF9SSU5HX0JBU0UpLCAweGZmZmYsIGZhbHNlfSwgLyogMHgy MjI5YyAqLwo+IC0Je0JDUywgUklOR19NSV9NT0RFKEJMVF9SSU5HX0JBU0UpLCAweGZmZmYsIGZh bHNlfSwgLyogMHgyMjA5YyAqLwo+IC0Je0JDUywgUklOR19JTlNUUE0oQkxUX1JJTkdfQkFTRSks IDB4ZmZmZiwgZmFsc2V9LCAvKiAweDIyMGMwICovCj4gLQl7QkNTLCBSSU5HX0hXU1RBTShCTFRf UklOR19CQVNFKSwgMHgwLCBmYWxzZX0sIC8qIDB4MjIwOTggKi8KPiAtCXtCQ1MsIFJJTkdfRVhD QyhCTFRfUklOR19CQVNFKSwgMHgwLCBmYWxzZX0sIC8qIDB4MjIwMjggKi8KPiAtCj4gLQl7VkNT MiwgUklOR19FWENDKEdFTjhfQlNEMl9SSU5HX0JBU0UpLCAweGZmZmYsIGZhbHNlfSwgLyogMHgx YzAyOCAqLwo+IC0KPiAtCXtWRUNTLCBSSU5HX0VYQ0MoVkVCT1hfUklOR19CQVNFKSwgMHhmZmZm LCBmYWxzZX0sIC8qIDB4MWEwMjggKi8KPiAtCj4gLQl7UkNTLCBHRU44X0hEQ19DSElDS0VOMSwg MHhmZmZmLCB0cnVlfSwgLyogMHg3MzA0ICovCj4gLQl7UkNTLCBHRU45X0NUWF9QUkVFTVBUX1JF RywgMHgwLCBmYWxzZX0sIC8qIDB4MjI0OCAqLwo+IC0Je1JDUywgR0VON19VQ0dDVEw0LCAweDAs IGZhbHNlfSwgLyogMHg5NDBjICovCj4gLQl7UkNTLCBHQU1UX0NIS05fQklUX1JFRywgMHgwLCBm YWxzZX0sIC8qIDB4NGFiOCAqLwo+IC0KPiAtCXtSQ1MsIEdFTjlfR0FNVF9FQ09fUkVHX1JXX0lB LCAweDAsIGZhbHNlfSwgLyogMHg0YWIwICovCj4gLQl7UkNTLCBHRU45X0NTRkVfQ0hJQ0tFTjFf UkNTLCAweGZmZmYsIGZhbHNlfSwgLyogMHgyMGQ0ICovCj4gLQo+IC0Je1JDUywgR0VOOF9HQVJC Q05UTCwgMHgwLCBmYWxzZX0sIC8qIDB4YjAwNCAqLwo+IC0Je1JDUywgR0VON19GRl9USFJFQURf TU9ERSwgMHgwLCBmYWxzZX0sIC8qIDB4MjBhMCAqLwo+IC0Je1JDUywgRkZfU0xJQ0VfQ1NfQ0hJ Q0tFTjIsIDB4ZmZmZiwgZmFsc2V9LCAvKiAweDIwZTQgKi8KPiAtCXtSQ1MsIElOVkFMSURfTU1J T19SRUcsIDAsIGZhbHNlIH0gLyogVGVybWluYXRlZCAqLwo+ICsJe1JDUzAsIEdGWF9NT0RFX0dF TjcsIDB4ZmZmZiwgZmFsc2V9LCAvKiAweDIyOWMgKi8KPiArCXtSQ1MwLCBHRU45X0NUWF9QUkVF TVBUX1JFRywgMHgwLCBmYWxzZX0sIC8qIDB4MjI0OCAqLwo+ICsJe1JDUzAsIEhXU1RBTSwgMHgw LCBmYWxzZX0sIC8qIDB4MjA5OCAqLwo+ICsJe1JDUzAsIElOU1RQTSwgMHhmZmZmLCB0cnVlfSwg LyogMHgyMGMwICovCj4gKwl7UkNTMCwgUklOR19GT1JDRV9UT19OT05QUklWKFJFTkRFUl9SSU5H X0JBU0UsIDApLCAwLCBmYWxzZX0sIC8qIDB4MjRkMCAqLwo+ICsJe1JDUzAsIFJJTkdfRk9SQ0Vf VE9fTk9OUFJJVihSRU5ERVJfUklOR19CQVNFLCAxKSwgMCwgZmFsc2V9LCAvKiAweDI0ZDQgKi8K PiArCXtSQ1MwLCBSSU5HX0ZPUkNFX1RPX05PTlBSSVYoUkVOREVSX1JJTkdfQkFTRSwgMiksIDAs IGZhbHNlfSwgLyogMHgyNGQ4ICovCj4gKwl7UkNTMCwgUklOR19GT1JDRV9UT19OT05QUklWKFJF TkRFUl9SSU5HX0JBU0UsIDMpLCAwLCBmYWxzZX0sIC8qIDB4MjRkYyAqLwo+ICsJe1JDUzAsIFJJ TkdfRk9SQ0VfVE9fTk9OUFJJVihSRU5ERVJfUklOR19CQVNFLCA0KSwgMCwgZmFsc2V9LCAvKiAw eDI0ZTAgKi8KPiArCXtSQ1MwLCBSSU5HX0ZPUkNFX1RPX05PTlBSSVYoUkVOREVSX1JJTkdfQkFT RSwgNSksIDAsIGZhbHNlfSwgLyogMHgyNGU0ICovCj4gKwl7UkNTMCwgUklOR19GT1JDRV9UT19O T05QUklWKFJFTkRFUl9SSU5HX0JBU0UsIDYpLCAwLCBmYWxzZX0sIC8qIDB4MjRlOCAqLwo+ICsJ e1JDUzAsIFJJTkdfRk9SQ0VfVE9fTk9OUFJJVihSRU5ERVJfUklOR19CQVNFLCA3KSwgMCwgZmFs c2V9LCAvKiAweDI0ZWMgKi8KPiArCXtSQ1MwLCBSSU5HX0ZPUkNFX1RPX05PTlBSSVYoUkVOREVS X1JJTkdfQkFTRSwgOCksIDAsIGZhbHNlfSwgLyogMHgyNGYwICovCj4gKwl7UkNTMCwgUklOR19G T1JDRV9UT19OT05QUklWKFJFTkRFUl9SSU5HX0JBU0UsIDkpLCAwLCBmYWxzZX0sIC8qIDB4MjRm NCAqLwo+ICsJe1JDUzAsIFJJTkdfRk9SQ0VfVE9fTk9OUFJJVihSRU5ERVJfUklOR19CQVNFLCAx MCksIDAsIGZhbHNlfSwgLyogMHgyNGY4ICovCj4gKwl7UkNTMCwgUklOR19GT1JDRV9UT19OT05Q UklWKFJFTkRFUl9SSU5HX0JBU0UsIDExKSwgMCwgZmFsc2V9LCAvKiAweDI0ZmMgKi8KPiArCXtS Q1MwLCBDQUNIRV9NT0RFXzEsIDB4ZmZmZiwgdHJ1ZX0sIC8qIDB4NzAwNCAqLwo+ICsJe1JDUzAs IEdFTjdfR1RfTU9ERSwgMHhmZmZmLCB0cnVlfSwgLyogMHg3MDA4ICovCj4gKwl7UkNTMCwgQ0FD SEVfTU9ERV8wX0dFTjcsIDB4ZmZmZiwgdHJ1ZX0sIC8qIDB4NzAwMCAqLwo+ICsJe1JDUzAsIEdF TjdfQ09NTU9OX1NMSUNFX0NISUNLRU4xLCAweGZmZmYsIHRydWV9LCAvKiAweDcwMTAgKi8KPiAr CXtSQ1MwLCBIRENfQ0hJQ0tFTjAsIDB4ZmZmZiwgdHJ1ZX0sIC8qIDB4NzMwMCAqLwo+ICsJe1JD UzAsIFZGX0dVQVJEQkFORCwgMHhmZmZmLCB0cnVlfSwgLyogMHg4M2E0ICovCj4gKwo+ICsJe1JD UzAsIEdFTjhfUFJJVkFURV9QQVRfTE8sIDAsIGZhbHNlfSwgLyogMHg0MGUwICovCj4gKwl7UkNT MCwgR0VOOF9QUklWQVRFX1BBVF9ISSwgMCwgZmFsc2V9LCAvKiAweDQwZTQgKi8KPiArCXtSQ1Mw LCBHRU44X0NTX0NISUNLRU4xLCAweGZmZmYsIHRydWV9LCAvKiAweDI1ODAgKi8KPiArCXtSQ1Mw LCBDT01NT05fU0xJQ0VfQ0hJQ0tFTjIsIDB4ZmZmZiwgdHJ1ZX0sIC8qIDB4NzAxNCAqLwo+ICsJ e1JDUzAsIEdFTjlfQ1NfREVCVUdfTU9ERTEsIDB4ZmZmZiwgZmFsc2V9LCAvKiAweDIwZWMgKi8K PiArCXtSQ1MwLCBHRU44X0wzU1FDUkVHNCwgMCwgZmFsc2V9LCAvKiAweGIxMTggKi8KPiArCXtS Q1MwLCBHRU43X0hBTEZfU0xJQ0VfQ0hJQ0tFTjEsIDB4ZmZmZiwgdHJ1ZX0sIC8qIDB4ZTEwMCAq Lwo+ICsJe1JDUzAsIEhBTEZfU0xJQ0VfQ0hJQ0tFTjIsIDB4ZmZmZiwgdHJ1ZX0sIC8qIDB4ZTE4 MCAqLwo+ICsJe1JDUzAsIEhBTEZfU0xJQ0VfQ0hJQ0tFTjMsIDB4ZmZmZiwgdHJ1ZX0sIC8qIDB4 ZTE4NCAqLwo+ICsJe1JDUzAsIEdFTjlfSEFMRl9TTElDRV9DSElDS0VONSwgMHhmZmZmLCB0cnVl fSwgLyogMHhlMTg4ICovCj4gKwl7UkNTMCwgR0VOOV9IQUxGX1NMSUNFX0NISUNLRU43LCAweGZm ZmYsIHRydWV9LCAvKiAweGUxOTQgKi8KPiArCXtSQ1MwLCBHRU44X1JPV19DSElDS0VOLCAweGZm ZmYsIHRydWV9LCAvKiAweGU0ZjAgKi8KPiArCXtSQ1MwLCBUUlZBVFRMM1BUUkRXKDApLCAwLCBm YWxzZX0sIC8qIDB4NGRlMCAqLwo+ICsJe1JDUzAsIFRSVkFUVEwzUFRSRFcoMSksIDAsIGZhbHNl fSwgLyogMHg0ZGU0ICovCj4gKwl7UkNTMCwgVFJOVUxMREVUQ1QsIDAsIGZhbHNlfSwgLyogMHg0 ZGU4ICovCj4gKwl7UkNTMCwgVFJJTlZUSUxFREVUQ1QsIDAsIGZhbHNlfSwgLyogMHg0ZGVjICov Cj4gKwl7UkNTMCwgVFJWQURSLCAwLCBmYWxzZX0sIC8qIDB4NGRmMCAqLwo+ICsJe1JDUzAsIFRS VFRFLCAwLCBmYWxzZX0sIC8qIDB4NGRmNCAqLwo+ICsKPiArCXtCQ1MwLCBSSU5HX0dGWF9NT0RF KEJMVF9SSU5HX0JBU0UpLCAweGZmZmYsIGZhbHNlfSwgLyogMHgyMjI5YyAqLwo+ICsJe0JDUzAs IFJJTkdfTUlfTU9ERShCTFRfUklOR19CQVNFKSwgMHhmZmZmLCBmYWxzZX0sIC8qIDB4MjIwOWMg Ki8KPiArCXtCQ1MwLCBSSU5HX0lOU1RQTShCTFRfUklOR19CQVNFKSwgMHhmZmZmLCBmYWxzZX0s IC8qIDB4MjIwYzAgKi8KPiArCXtCQ1MwLCBSSU5HX0hXU1RBTShCTFRfUklOR19CQVNFKSwgMHgw LCBmYWxzZX0sIC8qIDB4MjIwOTggKi8KPiArCXtCQ1MwLCBSSU5HX0VYQ0MoQkxUX1JJTkdfQkFT RSksIDB4MCwgZmFsc2V9LCAvKiAweDIyMDI4ICovCj4gKwo+ICsJe1ZDUzEsIFJJTkdfRVhDQyhH RU44X0JTRDJfUklOR19CQVNFKSwgMHhmZmZmLCBmYWxzZX0sIC8qIDB4MWMwMjggKi8KPiArCj4g Kwl7VkVDUzAsIFJJTkdfRVhDQyhWRUJPWF9SSU5HX0JBU0UpLCAweGZmZmYsIGZhbHNlfSwgLyog MHgxYTAyOCAqLwo+ICsKPiArCXtSQ1MwLCBHRU44X0hEQ19DSElDS0VOMSwgMHhmZmZmLCB0cnVl fSwgLyogMHg3MzA0ICovCj4gKwl7UkNTMCwgR0VOOV9DVFhfUFJFRU1QVF9SRUcsIDB4MCwgZmFs c2V9LCAvKiAweDIyNDggKi8KPiArCXtSQ1MwLCBHRU43X1VDR0NUTDQsIDB4MCwgZmFsc2V9LCAv KiAweDk0MGMgKi8KPiArCXtSQ1MwLCBHQU1UX0NIS05fQklUX1JFRywgMHgwLCBmYWxzZX0sIC8q IDB4NGFiOCAqLwo+ICsKPiArCXtSQ1MwLCBHRU45X0dBTVRfRUNPX1JFR19SV19JQSwgMHgwLCBm YWxzZX0sIC8qIDB4NGFiMCAqLwo+ICsJe1JDUzAsIEdFTjlfQ1NGRV9DSElDS0VOMV9SQ1MsIDB4 ZmZmZiwgZmFsc2V9LCAvKiAweDIwZDQgKi8KPiArCj4gKwl7UkNTMCwgR0VOOF9HQVJCQ05UTCwg MHgwLCBmYWxzZX0sIC8qIDB4YjAwNCAqLwo+ICsJe1JDUzAsIEdFTjdfRkZfVEhSRUFEX01PREUs IDB4MCwgZmFsc2V9LCAvKiAweDIwYTAgKi8KPiArCXtSQ1MwLCBGRl9TTElDRV9DU19DSElDS0VO MiwgMHhmZmZmLCBmYWxzZX0sIC8qIDB4MjBlNCAqLwo+ICsJe1JDUzAsIElOVkFMSURfTU1JT19S RUcsIDAsIGZhbHNlIH0gLyogVGVybWluYXRlZCAqLwo+ICAgfTsKPiAgIAo+ICAgc3RhdGljIHN0 cnVjdCB7Cj4gQEAgLTE0OSwxMSArMTQ5LDExIEBAIHN0YXRpYyB2b2lkIGxvYWRfcmVuZGVyX21v Y3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgewo+ICAgCWk5MTVfcmVn X3Qgb2Zmc2V0Owo+ICAgCXUzMiByZWdzW10gPSB7Cj4gLQkJW1JDU10gPSAweGM4MDAsCj4gLQkJ W1ZDU10gPSAweGM5MDAsCj4gLQkJW1ZDUzJdID0gMHhjYTAwLAo+IC0JCVtCQ1NdID0gMHhjYzAw LAo+IC0JCVtWRUNTXSA9IDB4Y2IwMCwKPiArCQlbUkNTMF0gID0gMHhjODAwLAo+ICsJCVtWQ1Mw XSAgPSAweGM5MDAsCj4gKwkJW1ZDUzFdICA9IDB4Y2EwMCwKPiArCQlbQkNTMF0gID0gMHhjYzAw LAo+ICsJCVtWRUNTMF0gPSAweGNiMDAsCj4gICAJfTsKPiAgIAlpbnQgcmluZ19pZCwgaTsKPiAg IAo+IEBAIC0zMDEsNyArMzAxLDcgQEAgaW50IGludGVsX3ZncHVfcmVzdG9yZV9pbmhpYml0X2Nv bnRleHQoc3RydWN0IGludGVsX3ZncHUgKnZncHUsCj4gICAJCWdvdG8gb3V0Owo+ICAgCj4gICAJ Lyogbm8gTU9DUyByZWdpc3RlciBpbiBjb250ZXh0IGV4Y2VwdCByZW5kZXIgZW5naW5lICovCj4g LQlpZiAocmVxLT5lbmdpbmUtPmlkICE9IFJDUykKPiArCWlmIChyZXEtPmVuZ2luZS0+aWQgIT0g UkNTMCkKPiAgIAkJZ290byBvdXQ7Cj4gICAKPiAgIAlyZXQgPSByZXN0b3JlX3JlbmRlcl9tb2Nz X2NvbnRyb2xfZm9yX2luaGliaXQodmdwdSwgcmVxKTsKPiBAQCAtMzMxLDExICszMzEsMTEgQEAg c3RhdGljIHZvaWQgaGFuZGxlX3RsYl9wZW5kaW5nX2V2ZW50KHN0cnVjdCBpbnRlbF92Z3B1ICp2 Z3B1LCBpbnQgcmluZ19pZCkKPiAgIAllbnVtIGZvcmNld2FrZV9kb21haW5zIGZ3Owo+ICAgCWk5 MTVfcmVnX3QgcmVnOwo+ICAgCXUzMiByZWdzW10gPSB7Cj4gLQkJW1JDU10gPSAweDQyNjAsCj4g LQkJW1ZDU10gPSAweDQyNjQsCj4gLQkJW1ZDUzJdID0gMHg0MjY4LAo+IC0JCVtCQ1NdID0gMHg0 MjZjLAo+IC0JCVtWRUNTXSA9IDB4NDI3MCwKPiArCQlbUkNTMF0gID0gMHg0MjYwLAo+ICsJCVtW Q1MwXSAgPSAweDQyNjQsCj4gKwkJW1ZDUzFdICA9IDB4NDI2OCwKPiArCQlbQkNTMF0gID0gMHg0 MjZjLAo+ICsJCVtWRUNTMF0gPSAweDQyNzAsCj4gICAJfTsKPiAgIAo+ICAgCWlmIChXQVJOX09O KHJpbmdfaWQgPj0gQVJSQVlfU0laRShyZWdzKSkpCj4gQEAgLTM1Myw3ICszNTMsNyBAQCBzdGF0 aWMgdm9pZCBoYW5kbGVfdGxiX3BlbmRpbmdfZXZlbnQoc3RydWN0IGludGVsX3ZncHUgKnZncHUs IGludCByaW5nX2lkKQo+ICAgCSAqLwo+ICAgCWZ3ID0gaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9m b3JfcmVnKGRldl9wcml2LCByZWcsCj4gICAJCQkJCSAgICBGV19SRUdfUkVBRCB8IEZXX1JFR19X UklURSk7Cj4gLQlpZiAocmluZ19pZCA9PSBSQ1MgJiYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g OSkpCj4gKwlpZiAocmluZ19pZCA9PSBSQ1MwICYmIElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkK PiAgIAkJZncgfD0gRk9SQ0VXQUtFX1JFTkRFUjsKPiAgIAo+ICAgCWludGVsX3VuY29yZV9mb3Jj ZXdha2VfZ2V0KGRldl9wcml2LCBmdyk7Cj4gQEAgLTM3OCwxMSArMzc4LDExIEBAIHN0YXRpYyB2 b2lkIHN3aXRjaF9tb2NzKHN0cnVjdCBpbnRlbF92Z3B1ICpwcmUsIHN0cnVjdCBpbnRlbF92Z3B1 ICpuZXh0LAo+ICAgCXUzMiBvbGRfdiwgbmV3X3Y7Cj4gICAKPiAgIAl1MzIgcmVnc1tdID0gewo+ IC0JCVtSQ1NdID0gMHhjODAwLAo+IC0JCVtWQ1NdID0gMHhjOTAwLAo+IC0JCVtWQ1MyXSA9IDB4 Y2EwMCwKPiAtCQlbQkNTXSA9IDB4Y2MwMCwKPiAtCQlbVkVDU10gPSAweGNiMDAsCj4gKwkJW1JD UzBdICA9IDB4YzgwMCwKPiArCQlbVkNTMF0gID0gMHhjOTAwLAo+ICsJCVtWQ1MxXSAgPSAweGNh MDAsCj4gKwkJW0JDUzBdICA9IDB4Y2MwMCwKPiArCQlbVkVDUzBdID0gMHhjYjAwLAo+ICAgCX07 Cj4gICAJaW50IGk7Cj4gICAKPiBAQCAtMzkwLDggKzM5MCwxMCBAQCBzdGF0aWMgdm9pZCBzd2l0 Y2hfbW9jcyhzdHJ1Y3QgaW50ZWxfdmdwdSAqcHJlLCBzdHJ1Y3QgaW50ZWxfdmdwdSAqbmV4dCwK PiAgIAlpZiAoV0FSTl9PTihyaW5nX2lkID49IEFSUkFZX1NJWkUocmVncykpKQo+ICAgCQlyZXR1 cm47Cj4gICAKPiAtCWlmICgoSVNfS0FCWUxBS0UoZGV2X3ByaXYpICB8fCBJU19CUk9YVE9OKGRl dl9wcml2KQo+IC0JCXx8IElTX0NPRkZFRUxBS0UoZGV2X3ByaXYpKSAmJiByaW5nX2lkID09IFJD UykKPiArCWlmIChyaW5nX2lkID09IFJDUzAgJiYKPiArCSAgICAoSVNfS0FCWUxBS0UoZGV2X3By aXYpIHx8Cj4gKwkgICAgIElTX0JST1hUT04oZGV2X3ByaXYpIHx8Cj4gKwkgICAgIElTX0NPRkZF RUxBS0UoZGV2X3ByaXYpKSkKPiAgIAkJcmV0dXJuOwo+ICAgCj4gICAJaWYgKCFwcmUgJiYgIWdl bjlfcmVuZGVyX21vY3MuaW5pdGlhbGl6ZWQpCj4gQEAgLTQxNCw3ICs0MTYsNyBAQCBzdGF0aWMg dm9pZCBzd2l0Y2hfbW9jcyhzdHJ1Y3QgaW50ZWxfdmdwdSAqcHJlLCBzdHJ1Y3QgaW50ZWxfdmdw dSAqbmV4dCwKPiAgIAkJb2Zmc2V0LnJlZyArPSA0Owo+ICAgCX0KPiAgIAo+IC0JaWYgKHJpbmdf aWQgPT0gUkNTKSB7Cj4gKwlpZiAocmluZ19pZCA9PSBSQ1MwKSB7Cj4gICAJCWwzX29mZnNldC5y ZWcgPSAweGIwMjA7Cj4gICAJCWZvciAoaSA9IDA7IGkgPCBHRU45X01PQ1NfU0laRSAvIDI7IGkr Kykgewo+ICAgCQkJaWYgKHByZSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Z0L3NjaGVkdWxlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5jCj4g aW5kZXggMWJiOGY5MzZmZGFhLi43MDliY2FhZWQ3NjUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Z0L3NjaGVkdWxlci5jCj4gQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIHZvaWQgc3Jfb2FfcmVn cyhzdHJ1Y3QgaW50ZWxfdmdwdV93b3JrbG9hZCAqd29ya2xvYWQsCj4gICAJCWk5MTVfbW1pb19y ZWdfb2Zmc2V0KEVVX1BFUkZfQ05UTDYpLAo+ICAgCX07Cj4gICAKPiAtCWlmICh3b3JrbG9hZC0+ cmluZ19pZCAhPSBSQ1MpCj4gKwlpZiAod29ya2xvYWQtPnJpbmdfaWQgIT0gUkNTMCkKPiAgIAkJ cmV0dXJuOwo+ICAgCj4gICAJaWYgKHNhdmUpIHsKPiBAQCAtMTQ5LDcgKzE0OSw3IEBAIHN0YXRp YyBpbnQgcG9wdWxhdGVfc2hhZG93X2NvbnRleHQoc3RydWN0IGludGVsX3ZncHVfd29ya2xvYWQg Kndvcmtsb2FkKQo+ICAgCUNPUFlfUkVHX01BU0tFRChjdHhfY3RybCk7Cj4gICAJQ09QWV9SRUco Y3R4X3RpbWVzdGFtcCk7Cj4gICAKPiAtCWlmIChyaW5nX2lkID09IFJDUykgewo+ICsJaWYgKHJp bmdfaWQgPT0gUkNTMCkgewo+ICAgCQlDT1BZX1JFRyhiYl9wZXJfY3R4X3B0cik7Cj4gICAJCUNP UFlfUkVHKHJjc19pbmRpcmVjdF9jdHgpOwo+ICAgCQlDT1BZX1JFRyhyY3NfaW5kaXJlY3RfY3R4 X29mZnNldCk7Cj4gQEAgLTE3Nyw3ICsxNzcsNyBAQCBzdGF0aWMgaW50IHBvcHVsYXRlX3NoYWRv d19jb250ZXh0KHN0cnVjdCBpbnRlbF92Z3B1X3dvcmtsb2FkICp3b3JrbG9hZCkKPiAgIAo+ICAg CWNvbnRleHRfcGFnZV9udW0gPSBjb250ZXh0X3BhZ2VfbnVtID4+IFBBR0VfU0hJRlQ7Cj4gICAK PiAtCWlmIChJU19CUk9BRFdFTEwoZ3Z0LT5kZXZfcHJpdikgJiYgcmluZ19pZCA9PSBSQ1MpCj4g KwlpZiAoSVNfQlJPQURXRUxMKGd2dC0+ZGV2X3ByaXYpICYmIHJpbmdfaWQgPT0gUkNTMCkKPiAg IAkJY29udGV4dF9wYWdlX251bSA9IDE5Owo+ICAgCj4gICAJaSA9IDI7Cj4gQEAgLTQ0MCw4ICs0 NDAsNyBAQCBpbnQgaW50ZWxfZ3Z0X3NjYW5fYW5kX3NoYWRvd193b3JrbG9hZChzdHJ1Y3QgaW50 ZWxfdmdwdV93b3JrbG9hZCAqd29ya2xvYWQpCj4gICAJaWYgKHJldCkKPiAgIAkJZ290byBlcnJf dW5waW47Cj4gICAKPiAtCWlmICgod29ya2xvYWQtPnJpbmdfaWQgPT0gUkNTKSAmJgo+IC0JICAg ICh3b3JrbG9hZC0+d2FfY3R4LmluZGlyZWN0X2N0eC5zaXplICE9IDApKSB7Cj4gKwlpZiAod29y a2xvYWQtPnJpbmdfaWQgPT0gUkNTMCAmJiB3b3JrbG9hZC0+d2FfY3R4LmluZGlyZWN0X2N0eC5z aXplKSB7Cj4gICAJCXJldCA9IGludGVsX2d2dF9zY2FuX2FuZF9zaGFkb3dfd2FfY3R4KCZ3b3Jr bG9hZC0+d2FfY3R4KTsKPiAgIAkJaWYgKHJldCkKPiAgIAkJCWdvdG8gZXJyX3NoYWRvdzsKPiBA QCAtNzkxLDcgKzc5MCw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9ndWVzdF9jb250ZXh0KHN0cnVj dCBpbnRlbF92Z3B1X3dvcmtsb2FkICp3b3JrbG9hZCkKPiAgIAljb250ZXh0X3BhZ2VfbnVtID0g cnEtPmVuZ2luZS0+Y29udGV4dF9zaXplOwo+ICAgCWNvbnRleHRfcGFnZV9udW0gPSBjb250ZXh0 X3BhZ2VfbnVtID4+IFBBR0VfU0hJRlQ7Cj4gICAKPiAtCWlmIChJU19CUk9BRFdFTEwoZ3Z0LT5k ZXZfcHJpdikgJiYgcnEtPmVuZ2luZS0+aWQgPT0gUkNTKQo+ICsJaWYgKElTX0JST0FEV0VMTChn dnQtPmRldl9wcml2KSAmJiBycS0+ZW5naW5lLT5pZCA9PSBSQ1MwKQo+ICAgCQljb250ZXh0X3Bh Z2VfbnVtID0gMTk7Cj4gICAKPiAgIAlpID0gMjsKPiBAQCAtODkxLDggKzg5MCw4IEBAIHN0YXRp YyB2b2lkIGNvbXBsZXRlX2N1cnJlbnRfd29ya2xvYWQoc3RydWN0IGludGVsX2d2dCAqZ3Z0LCBp bnQgcmluZ19pZCkKPiAgIAkJCQl3b3JrbG9hZC0+c3RhdHVzID0gMDsKPiAgIAkJfQo+ICAgCj4g LQkJaWYgKCF3b3JrbG9hZC0+c3RhdHVzICYmICEodmdwdS0+cmVzZXR0aW5nX2VuZyAmCj4gLQkJ CQkJICAgRU5HSU5FX01BU0socmluZ19pZCkpKSB7Cj4gKwkJaWYgKCF3b3JrbG9hZC0+c3RhdHVz ICYmCj4gKwkJICAgICEodmdwdS0+cmVzZXR0aW5nX2VuZyAmIEJJVChyaW5nX2lkKSkpIHsKPiAg IAkJCXVwZGF0ZV9ndWVzdF9jb250ZXh0KHdvcmtsb2FkKTsKPiAgIAo+ICAgCQkJZm9yX2VhY2hf c2V0X2JpdChldmVudCwgd29ya2xvYWQtPnBlbmRpbmdfZXZlbnRzLAo+IEBAIC05MTUsNyArOTE0 LDcgQEAgc3RhdGljIHZvaWQgY29tcGxldGVfY3VycmVudF93b3JrbG9hZChzdHJ1Y3QgaW50ZWxf Z3Z0ICpndnQsIGludCByaW5nX2lkKQo+ICAgCj4gICAJbGlzdF9kZWxfaW5pdCgmd29ya2xvYWQt Pmxpc3QpOwo+ICAgCj4gLQlpZiAod29ya2xvYWQtPnN0YXR1cyB8fCAodmdwdS0+cmVzZXR0aW5n X2VuZyAmIEVOR0lORV9NQVNLKHJpbmdfaWQpKSkgewo+ICsJaWYgKHdvcmtsb2FkLT5zdGF0dXMg fHwgdmdwdS0+cmVzZXR0aW5nX2VuZyAmIEJJVChyaW5nX2lkKSkgewo+ICAgCQkvKiBpZiB3b3Jr bG9hZC0+c3RhdHVzIGlzIG5vdCBzdWNjZXNzZnVsIG1lYW5zIEhXIEdQVQo+ICAgCQkgKiBoYXMg b2NjdXJyZWQgR1BVIGhhbmcgb3Igc29tZXRoaW5nIHdyb25nIHdpdGggaTkxNS9HVlQsCj4gICAJ CSAqIGFuZCBHVlQgd29uJ3QgaW5qZWN0IGNvbnRleHQgc3dpdGNoIGludGVycnVwdCB0byBndWVz dC4KPiBAQCAtOTI5LDcgKzkyOCw3IEBAIHN0YXRpYyB2b2lkIGNvbXBsZXRlX2N1cnJlbnRfd29y a2xvYWQoc3RydWN0IGludGVsX2d2dCAqZ3Z0LCBpbnQgcmluZ19pZCkKPiAgIAkJICogY2xlYW5l ZCB1cCBkdXJpbmcgdGhlIHJlc2V0dGluZyBwcm9jZXNzIGxhdGVyLCBzbyBkb2luZwo+ICAgCQkg KiB0aGUgd29ya2xvYWQgY2xlYW4gdXAgaGVyZSBkb2Vzbid0IGhhdmUgYW55IGltcGFjdC4KPiAg IAkJICoqLwo+IC0JCWludGVsX3ZncHVfY2xlYW5fd29ya2xvYWRzKHZncHUsIEVOR0lORV9NQVNL KHJpbmdfaWQpKTsKPiArCQlpbnRlbF92Z3B1X2NsZWFuX3dvcmtsb2Fkcyh2Z3B1LCBCSVQocmlu Z19pZCkpOwo+ICAgCX0KPiAgIAo+ICAgCXdvcmtsb2FkLT5jb21wbGV0ZSh3b3JrbG9hZCk7Cj4g QEAgLTE0MzgsNyArMTQzNyw3IEBAIGludGVsX3ZncHVfY3JlYXRlX3dvcmtsb2FkKHN0cnVjdCBp bnRlbF92Z3B1ICp2Z3B1LCBpbnQgcmluZ19pZCwKPiAgIAl3b3JrbG9hZC0+cmJfc3RhcnQgPSBz dGFydDsKPiAgIAl3b3JrbG9hZC0+cmJfY3RsID0gY3RsOwo+ICAgCj4gLQlpZiAocmluZ19pZCA9 PSBSQ1MpIHsKPiArCWlmIChyaW5nX2lkID09IFJDUzApIHsKPiAgIAkJaW50ZWxfZ3Z0X2h5cGVy dmlzb3JfcmVhZF9ncGEodmdwdSwgcmluZ19jb250ZXh0X2dwYSArCj4gICAJCQlSSU5HX0NUWF9P RkYoYmJfcGVyX2N0eF9wdHIudmFsKSwgJnBlcl9jdHgsIDQpOwo+ICAgCQlpbnRlbF9ndnRfaHlw ZXJ2aXNvcl9yZWFkX2dwYSh2Z3B1LCByaW5nX2NvbnRleHRfZ3BhICsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2NtZF9wYXJzZXIuYwo+IGluZGV4IDMzZThlZWQ2NDQyMy4uNTAzZDU0OGE1NWY3 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfY21kX3BhcnNlci5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2VyLmMKPiBAQCAtODY4LDgg Kzg2OCw4IEBAIHZvaWQgaW50ZWxfZW5naW5lX2luaXRfY21kX3BhcnNlcihzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCj4gICAJaWYgKCFJU19HRU4oZW5naW5lLT5pOTE1LCA3KSkKPiAg IAkJcmV0dXJuOwo+ICAgCj4gLQlzd2l0Y2ggKGVuZ2luZS0+aWQpIHsKPiAtCWNhc2UgUkNTOgo+ ICsJc3dpdGNoIChlbmdpbmUtPmNsYXNzKSB7Cj4gKwljYXNlIFJFTkRFUl9DTEFTUzoKPiAgIAkJ aWYgKElTX0hBU1dFTEwoZW5naW5lLT5pOTE1KSkgewo+ICAgCQkJY21kX3RhYmxlcyA9IGhzd19y ZW5kZXJfcmluZ19jbWRzOwo+ICAgCQkJY21kX3RhYmxlX2NvdW50ID0KPiBAQCAtODg5LDEyICs4 ODksMTIgQEAgdm9pZCBpbnRlbF9lbmdpbmVfaW5pdF9jbWRfcGFyc2VyKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKPiAgIAo+ICAgCQllbmdpbmUtPmdldF9jbWRfbGVuZ3RoX21hc2sg PSBnZW43X3JlbmRlcl9nZXRfY21kX2xlbmd0aF9tYXNrOwo+ICAgCQlicmVhazsKPiAtCWNhc2Ug VkNTOgo+ICsJY2FzZSBWSURFT19ERUNPREVfQ0xBU1M6Cj4gICAJCWNtZF90YWJsZXMgPSBnZW43 X3ZpZGVvX2NtZHM7Cj4gICAJCWNtZF90YWJsZV9jb3VudCA9IEFSUkFZX1NJWkUoZ2VuN192aWRl b19jbWRzKTsKPiAgIAkJZW5naW5lLT5nZXRfY21kX2xlbmd0aF9tYXNrID0gZ2VuN19ic2RfZ2V0 X2NtZF9sZW5ndGhfbWFzazsKPiAgIAkJYnJlYWs7Cj4gLQljYXNlIEJDUzoKPiArCWNhc2UgQ09Q WV9FTkdJTkVfQ0xBU1M6Cj4gICAJCWlmIChJU19IQVNXRUxMKGVuZ2luZS0+aTkxNSkpIHsKPiAg IAkJCWNtZF90YWJsZXMgPSBoc3dfYmx0X3JpbmdfY21kczsKPiAgIAkJCWNtZF90YWJsZV9jb3Vu dCA9IEFSUkFZX1NJWkUoaHN3X2JsdF9yaW5nX2NtZHMpOwo+IEBAIC05MTMsMTQgKzkxMywxNCBA QCB2b2lkIGludGVsX2VuZ2luZV9pbml0X2NtZF9wYXJzZXIoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+ICAgCj4gICAJCWVuZ2luZS0+Z2V0X2NtZF9sZW5ndGhfbWFzayA9IGdlbjdf Ymx0X2dldF9jbWRfbGVuZ3RoX21hc2s7Cj4gICAJCWJyZWFrOwo+IC0JY2FzZSBWRUNTOgo+ICsJ Y2FzZSBWSURFT19FTkhBTkNFTUVOVF9DTEFTUzoKPiAgIAkJY21kX3RhYmxlcyA9IGhzd192ZWJv eF9jbWRzOwo+ICAgCQljbWRfdGFibGVfY291bnQgPSBBUlJBWV9TSVpFKGhzd192ZWJveF9jbWRz KTsKPiAgIAkJLyogVkVDUyBjYW4gdXNlIHRoZSBzYW1lIGxlbmd0aF9tYXNrIGZ1bmN0aW9uIGFz IFZDUyAqLwo+ICAgCQllbmdpbmUtPmdldF9jbWRfbGVuZ3RoX21hc2sgPSBnZW43X2JzZF9nZXRf Y21kX2xlbmd0aF9tYXNrOwo+ICAgCQlicmVhazsKPiAgIAlkZWZhdWx0Ogo+IC0JCU1JU1NJTkdf Q0FTRShlbmdpbmUtPmlkKTsKPiArCQlNSVNTSU5HX0NBU0UoZW5naW5lLT5jbGFzcyk7Cj4gICAJ CXJldHVybjsKPiAgIAl9Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IGlu ZGV4IDI5ODM3MWFhZDQ0NS4uMGE2MzQ4YWQ3Yzk4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kZWJ1Z2ZzLmMKPiBAQCAtMTI5OCw3ICsxMjk4LDcgQEAgc3RhdGljIGludCBpOTE1X2hhbmdj aGVja19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICAgCQkJc2Vxbm9b aWRdID0gaW50ZWxfZW5naW5lX2dldF9oYW5nY2hlY2tfc2Vxbm8oZW5naW5lKTsKPiAgIAkJfQo+ ICAgCj4gLQkJaW50ZWxfZW5naW5lX2dldF9pbnN0ZG9uZShkZXZfcHJpdi0+ZW5naW5lW1JDU10s ICZpbnN0ZG9uZSk7Cj4gKwkJaW50ZWxfZW5naW5lX2dldF9pbnN0ZG9uZShkZXZfcHJpdi0+ZW5n aW5lW1JDUzBdLCAmaW5zdGRvbmUpOwo+ICAgCX0KPiAgIAo+ICAgCWlmICh0aW1lcl9wZW5kaW5n KCZkZXZfcHJpdi0+Z3B1X2Vycm9yLmhhbmdjaGVja193b3JrLnRpbWVyKSkKPiBAQCAtMTMyNSw3 ICsxMzI1LDcgQEAgc3RhdGljIGludCBpOTE1X2hhbmdjaGVja19pbmZvKHN0cnVjdCBzZXFfZmls ZSAqbSwgdm9pZCAqdW51c2VkKQo+ICAgCQkJICAgKGxvbmcgbG9uZyllbmdpbmUtPmhhbmdjaGVj ay5hY3RoZCwKPiAgIAkJCSAgIChsb25nIGxvbmcpYWN0aGRbaWRdKTsKPiAgIAo+IC0JCWlmIChl bmdpbmUtPmlkID09IFJDUykgewo+ICsJCWlmIChlbmdpbmUtPmlkID09IFJDUzApIHsKPiAgIAkJ CXNlcV9wdXRzKG0sICJcdGluc3Rkb25lIHJlYWQgPVxuIik7Cj4gICAKPiAgIAkJCWk5MTVfaW5z dGRvbmVfaW5mbyhkZXZfcHJpdiwgbSwgJmluc3Rkb25lKTsKPiBAQCAtMzE3OCw3ICszMTc4LDcg QEAgc3RhdGljIGludCBpOTE1X3NoYXJlZF9kcGxsc19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwg dm9pZCAqdW51c2VkKQo+ICAgc3RhdGljIGludCBpOTE1X3dhX3JlZ2lzdGVycyhzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsKPiAtCWNvbnN0IHN0cnVjdCBpOTE1 X3dhX2xpc3QgKndhbCA9ICZpOTE1LT5lbmdpbmVbUkNTXS0+Y3R4X3dhX2xpc3Q7Cj4gKwljb25z dCBzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwgPSAmaTkxNS0+ZW5naW5lW1JDUzBdLT5jdHhfd2Ff bGlzdDsKPiAgIAlzdHJ1Y3QgaTkxNV93YSAqd2E7Cj4gICAJdW5zaWduZWQgaW50IGk7Cj4gICAK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBpbmRleCAxYjJmNWE2ZjhjMjUuLmI1NDhjMjkyNzM4 YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IEBAIC0zMzAsMTYgKzMzMCwxNiBAQCBz dGF0aWMgaW50IGk5MTVfZ2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9p ZCAqZGF0YSwKPiAgIAkJdmFsdWUgPSBkZXZfcHJpdi0+b3ZlcmxheSA/IDEgOiAwOwo+ICAgCQli cmVhazsKPiAgIAljYXNlIEk5MTVfUEFSQU1fSEFTX0JTRDoKPiAtCQl2YWx1ZSA9ICEhZGV2X3By aXYtPmVuZ2luZVtWQ1NdOwo+ICsJCXZhbHVlID0gISFkZXZfcHJpdi0+ZW5naW5lW1ZDUzBdOwo+ ICAgCQlicmVhazsKPiAgIAljYXNlIEk5MTVfUEFSQU1fSEFTX0JMVDoKPiAtCQl2YWx1ZSA9ICEh ZGV2X3ByaXYtPmVuZ2luZVtCQ1NdOwo+ICsJCXZhbHVlID0gISFkZXZfcHJpdi0+ZW5naW5lW0JD UzBdOwo+ICAgCQlicmVhazsKPiAgIAljYXNlIEk5MTVfUEFSQU1fSEFTX1ZFQk9YOgo+IC0JCXZh bHVlID0gISFkZXZfcHJpdi0+ZW5naW5lW1ZFQ1NdOwo+ICsJCXZhbHVlID0gISFkZXZfcHJpdi0+ ZW5naW5lW1ZFQ1MwXTsKPiAgIAkJYnJlYWs7Cj4gICAJY2FzZSBJOTE1X1BBUkFNX0hBU19CU0Qy Ogo+IC0JCXZhbHVlID0gISFkZXZfcHJpdi0+ZW5naW5lW1ZDUzJdOwo+ICsJCXZhbHVlID0gISFk ZXZfcHJpdi0+ZW5naW5lW1ZDUzFdOwo+ICAgCQlicmVhazsKPiAgIAljYXNlIEk5MTVfUEFSQU1f SEFTX0xMQzoKPiAgIAkJdmFsdWUgPSBIQVNfTExDKGRldl9wcml2KTsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKPiBpbmRleCA4YWJjNWE2NDBiZjEuLjA4ZWFkODU0YWMyZCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0yMDk5LDcgKzIwOTksNyBAQCBzdGF0aWMgaW5saW5lIHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpodWNfdG9faTkxNShzdHJ1Y3QgaW50ZWxfaHVjICpodWMp Cj4gICAKPiAgIC8qIEl0ZXJhdG9yIG92ZXIgc3Vic2V0IG9mIGVuZ2luZXMgc2VsZWN0ZWQgYnkg bWFzayAqLwo+ICAgI2RlZmluZSBmb3JfZWFjaF9lbmdpbmVfbWFza2VkKGVuZ2luZV9fLCBkZXZf cHJpdl9fLCBtYXNrX18sIHRtcF9fKSBcCj4gLQlmb3IgKCh0bXBfXykgPSAobWFza19fKSAmIElO VEVMX0lORk8oZGV2X3ByaXZfXyktPnJpbmdfbWFzazsgXAo+ICsJZm9yICgodG1wX18pID0gKG1h c2tfXykgJiBJTlRFTF9JTkZPKGRldl9wcml2X18pLT5lbmdpbmVfbWFzazsgXAo+ICAgCSAgICAg KHRtcF9fKSA/IFwKPiAgIAkgICAgICgoZW5naW5lX18pID0gKGRldl9wcml2X18pLT5lbmdpbmVb X19tYXNrX25leHRfYml0KHRtcF9fKV0pLCAxIDogXAo+ICAgCSAgICAgMDspCj4gQEAgLTI0MjAs MjQgKzI0MjAsOCBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBpOTE1X3NnX3NlZ21lbnRf c2l6ZSh2b2lkKQo+ICAgI2RlZmluZSBJU19HRU45X0xQKGRldl9wcml2KQkoSVNfR0VOKGRldl9w cml2LCA5KSAmJiBJU19MUChkZXZfcHJpdikpCj4gICAjZGVmaW5lIElTX0dFTjlfQkMoZGV2X3By aXYpCShJU19HRU4oZGV2X3ByaXYsIDkpICYmICFJU19MUChkZXZfcHJpdikpCj4gICAKPiAtI2Rl ZmluZSBFTkdJTkVfTUFTSyhpZCkJQklUKGlkKQo+IC0jZGVmaW5lIFJFTkRFUl9SSU5HCUVOR0lO RV9NQVNLKFJDUykKPiAtI2RlZmluZSBCU0RfUklORwlFTkdJTkVfTUFTSyhWQ1MpCj4gLSNkZWZp bmUgQkxUX1JJTkcJRU5HSU5FX01BU0soQkNTKQo+IC0jZGVmaW5lIFZFQk9YX1JJTkcJRU5HSU5F X01BU0soVkVDUykKPiAtI2RlZmluZSBCU0QyX1JJTkcJRU5HSU5FX01BU0soVkNTMikKPiAtI2Rl ZmluZSBCU0QzX1JJTkcJRU5HSU5FX01BU0soVkNTMykKPiAtI2RlZmluZSBCU0Q0X1JJTkcJRU5H SU5FX01BU0soVkNTNCkKPiAtI2RlZmluZSBWRUJPWDJfUklORwlFTkdJTkVfTUFTSyhWRUNTMikK PiAtI2RlZmluZSBBTExfRU5HSU5FUwkofjApCj4gLQo+IC0jZGVmaW5lIEhBU19FTkdJTkUoZGV2 X3ByaXYsIGlkKSBcCj4gLQkoISEoSU5URUxfSU5GTyhkZXZfcHJpdiktPnJpbmdfbWFzayAmIEVO R0lORV9NQVNLKGlkKSkpCj4gLQo+IC0jZGVmaW5lIEhBU19CU0QoZGV2X3ByaXYpCUhBU19FTkdJ TkUoZGV2X3ByaXYsIFZDUykKPiAtI2RlZmluZSBIQVNfQlNEMihkZXZfcHJpdikJSEFTX0VOR0lO RShkZXZfcHJpdiwgVkNTMikKPiAtI2RlZmluZSBIQVNfQkxUKGRldl9wcml2KQlIQVNfRU5HSU5F KGRldl9wcml2LCBCQ1MpCj4gLSNkZWZpbmUgSEFTX1ZFQk9YKGRldl9wcml2KQlIQVNfRU5HSU5F KGRldl9wcml2LCBWRUNTKQo+ICsjZGVmaW5lIEFMTF9FTkdJTkVTCSh+MHUpCj4gKyNkZWZpbmUg SEFTX0VOR0lORShkZXZfcHJpdiwgaWQpIChJTlRFTF9JTkZPKGRldl9wcml2KS0+ZW5naW5lX21h c2sgJiBCSVQoaWQpKQo+ICAgCj4gICAjZGVmaW5lIEhBU19MTEMoZGV2X3ByaXYpCShJTlRFTF9J TkZPKGRldl9wcml2KS0+aGFzX2xsYykKPiAgICNkZWZpbmUgSEFTX1NOT09QKGRldl9wcml2KQko SU5URUxfSU5GTyhkZXZfcHJpdiktPmhhc19zbm9vcCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fY29udGV4dC5jCj4gaW5kZXggZDI2NmJhM2Y3MjEwLi4xZTMyMTFlOTA5ZjEgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gQEAgLTU4Myw3ICs1ODMs NyBAQCBpbnQgaTkxNV9nZW1fY29udGV4dHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4gICAJR0VNX0JVR19PTihkZXZfcHJpdi0+a2VybmVsX2NvbnRleHQpOwo+ICAg CUdFTV9CVUdfT04oZGV2X3ByaXYtPnByZWVtcHRfY29udGV4dCk7Cj4gICAKPiAtCWludGVsX2Vu Z2luZV9pbml0X2N0eF93YShkZXZfcHJpdi0+ZW5naW5lW1JDU10pOwo+ICsJaW50ZWxfZW5naW5l X2luaXRfY3R4X3dhKGRldl9wcml2LT5lbmdpbmVbUkNTMF0pOwo+ICAgCWluaXRfY29udGV4dHMo ZGV2X3ByaXYpOwo+ICAgCj4gICAJLyogbG93ZXN0IHByaW9yaXR5OyBpZGxlIHRhc2sgKi8KPiBA QCAtMTA4OSw3ICsxMDg5LDcgQEAgX19pOTE1X2dlbV9jb250ZXh0X3JlY29uZmlndXJlX3NzZXUo c3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAgIAlpbnQgcmV0ID0gMDsKPiAgIAo+ICAg CUdFTV9CVUdfT04oSU5URUxfR0VOKGN0eC0+aTkxNSkgPCA4KTsKPiAtCUdFTV9CVUdfT04oZW5n aW5lLT5pZCAhPSBSQ1MpOwo+ICsJR0VNX0JVR19PTihlbmdpbmUtPmlkICE9IFJDUzApOwo+ICAg Cj4gICAJLyogTm90aGluZyB0byBkbyBpZiB1bm1vZGlmaWVkLiAqLwo+ICAgCWlmICghbWVtY21w KCZjZS0+c3NldSwgJnNzZXUsIHNpemVvZihzc2V1KSkpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+IGluZGV4IDUzZDBkNzBjOTdmYS4uOTQzYTIyMWFjYjIx IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+IEBA IC0xOTU3LDcgKzE5NTcsNyBAQCBzdGF0aWMgaW50IGk5MTVfcmVzZXRfZ2VuN19zb2xfb2Zmc2V0 cyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAgIAl1MzIgKmNzOwo+ICAgCWludCBpOwo+ICAg Cj4gLQlpZiAoIUlTX0dFTihycS0+aTkxNSwgNykgfHwgcnEtPmVuZ2luZS0+aWQgIT0gUkNTKSB7 Cj4gKwlpZiAoIUlTX0dFTihycS0+aTkxNSwgNykgfHwgcnEtPmVuZ2luZS0+aWQgIT0gUkNTMCkg ewo+ICAgCQlEUk1fREVCVUcoInNvbCByZXNldCBpcyBnZW43L3JjcyBvbmx5XG4iKTsKPiAgIAkJ cmV0dXJuIC1FSU5WQUw7Cj4gICAJfQo+IEBAIC0yMDgyLDExICsyMDgyLDExIEBAIGdlbjhfZGlz cGF0Y2hfYnNkX2VuZ2luZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAj ZGVmaW5lIEk5MTVfVVNFUl9SSU5HUyAoNCkKPiAgIAo+ICAgc3RhdGljIGNvbnN0IGVudW0gaW50 ZWxfZW5naW5lX2lkIHVzZXJfcmluZ19tYXBbSTkxNV9VU0VSX1JJTkdTICsgMV0gPSB7Cj4gLQlb STkxNV9FWEVDX0RFRkFVTFRdCT0gUkNTLAo+IC0JW0k5MTVfRVhFQ19SRU5ERVJdCT0gUkNTLAo+ IC0JW0k5MTVfRVhFQ19CTFRdCQk9IEJDUywKPiAtCVtJOTE1X0VYRUNfQlNEXQkJPSBWQ1MsCj4g LQlbSTkxNV9FWEVDX1ZFQk9YXQk9IFZFQ1MKPiArCVtJOTE1X0VYRUNfREVGQVVMVF0JPSBSQ1Mw LAo+ICsJW0k5MTVfRVhFQ19SRU5ERVJdCT0gUkNTMCwKPiArCVtJOTE1X0VYRUNfQkxUXQkJPSBC Q1MwLAo+ICsJW0k5MTVfRVhFQ19CU0RdCQk9IFZDUzAsCj4gKwlbSTkxNV9FWEVDX1ZFQk9YXQk9 IFZFQ1MwCj4gICB9Owo+ICAgCj4gICBzdGF0aWMgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqCj4g QEAgLTIxMDksNyArMjEwOSw3IEBAIGViX3NlbGVjdF9lbmdpbmUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ICAgCQlyZXR1cm4gTlVMTDsKPiAgIAl9Cj4gICAKPiAtCWlmICh1 c2VyX3JpbmdfaWQgPT0gSTkxNV9FWEVDX0JTRCAmJiBIQVNfQlNEMihkZXZfcHJpdikpIHsKPiAr CWlmICh1c2VyX3JpbmdfaWQgPT0gSTkxNV9FWEVDX0JTRCAmJiBIQVNfRU5HSU5FKGRldl9wcml2 LCBWQ1MxKSkgewo+ICAgCQl1bnNpZ25lZCBpbnQgYnNkX2lkeCA9IGFyZ3MtPmZsYWdzICYgSTkx NV9FWEVDX0JTRF9NQVNLOwo+ICAgCj4gICAJCWlmIChic2RfaWR4ID09IEk5MTVfRVhFQ19CU0Rf REVGQVVMVCkgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gaW5kZXggNGE2ODFi MzMzMmFkLi5mNDQ3YzY1NjQ0MTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZ3R0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQu Ywo+IEBAIC03OTksNyArNzk5LDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9pbml0aWFsaXplX3BtbDQo c3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gICAgKi8KPiAgIHN0YXRpYyB2b2lkIG1h cmtfdGxic19kaXJ0eShzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4gICB7Cj4gLQlwcGd0 dC0+cGRfZGlydHlfcmluZ3MgPSBJTlRFTF9JTkZPKHBwZ3R0LT52bS5pOTE1KS0+cmluZ19tYXNr Owo+ICsJcHBndHQtPnBkX2RpcnR5X2VuZ2luZXMgPSBJTlRFTF9JTkZPKHBwZ3R0LT52bS5pOTE1 KS0+ZW5naW5lX21hc2s7Cj4gICB9Cj4gICAKPiAgIC8qIFJlbW92ZXMgZW50cmllcyBmcm9tIGEg c2luZ2xlIHBhZ2UgdGFibGUsIHJlbGVhc2luZyBpdCBpZiBpdCdzIGVtcHR5Lgo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gaW5kZXggODYwNjVkNzViM2FjLi5hNDdlMTFlNmZjMWIg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+IEBAIC0zOTAsNyArMzkwLDcg QEAgc3RydWN0IGk5MTVfaHdfcHBndHQgewo+ICAgCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2Ug dm07Cj4gICAJc3RydWN0IGtyZWYgcmVmOwo+ICAgCj4gLQl1bnNpZ25lZCBsb25nIHBkX2RpcnR5 X3JpbmdzOwo+ICsJdW5zaWduZWQgbG9uZyBwZF9kaXJ0eV9lbmdpbmVzOwo+ICAgCXVuaW9uIHsK PiAgIAkJc3RydWN0IGk5MTVfcG1sNCBwbWw0OwkJLyogR0VOOCsgJiA0OGIgUFBHVFQgKi8KPiAg IAkJc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlciBwZHA7CS8qIEdFTjgrICovCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVyX3N0YXRlLmMKPiBpbmRleCA5 MGJhZjkwODZkMGEuLjkxMTk2MzQ4YzY4YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9yZW5kZXJfc3RhdGUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5jCj4gQEAgLTQyLDcgKzQyLDcgQEAgc3RydWN0IGludGVs X3JlbmRlcl9zdGF0ZSB7Cj4gICBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX3JlbmRlcnN0YXRl X3JvZGF0YSAqCj4gICByZW5kZXJfc3RhdGVfZ2V0X3JvZGF0YShjb25zdCBzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gLQlpZiAoZW5naW5lLT5pZCAhPSBSQ1MpCj4gKwlp ZiAoZW5naW5lLT5pZCAhPSBSQ1MwKQo+ICAgCQlyZXR1cm4gTlVMTDsKPiAgIAo+ICAgCXN3aXRj aCAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkpIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1 X2Vycm9yLmMKPiBpbmRleCBlY2VjYmZkOGVlODIuLjVmMWNkYmM5ZWI1ZCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+IEBAIC00MTEsNyArNDExLDcgQEAgc3RhdGlj IHZvaWQgZXJyb3JfcHJpbnRfaW5zdGRvbmUoc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1 ZiAqbSwKPiAgIAllcnJfcHJpbnRmKG0sICIgIElOU1RET05FOiAweCUwOHhcbiIsCj4gICAJCSAg IGVlLT5pbnN0ZG9uZS5pbnN0ZG9uZSk7Cj4gICAKPiAtCWlmIChlZS0+ZW5naW5lX2lkICE9IFJD UyB8fCBJTlRFTF9HRU4obS0+aTkxNSkgPD0gMykKPiArCWlmIChlZS0+ZW5naW5lX2lkICE9IFJD UzAgfHwgSU5URUxfR0VOKG0tPmk5MTUpIDw9IDMpCj4gICAJCXJldHVybjsKPiAgIAo+ICAgCWVy cl9wcmludGYobSwgIiAgU0NfSU5TVERPTkU6IDB4JTA4eFxuIiwKPiBAQCAtMTE3OSwxNiArMTE3 OSwxNyBAQCBzdGF0aWMgdm9pZCBlcnJvcl9yZWNvcmRfZW5naW5lX3JlZ2lzdGVycyhzdHJ1Y3Qg aTkxNV9ncHVfc3RhdGUgKmVycm9yLAo+ICAgCQlpZiAoSVNfR0VOKGRldl9wcml2LCA3KSkgewo+ ICAgCQkJc3dpdGNoIChlbmdpbmUtPmlkKSB7Cj4gICAJCQlkZWZhdWx0Ogo+IC0JCQljYXNlIFJD UzoKPiArCQkJCU1JU1NJTkdfQ0FTRShlbmdpbmUtPmlkKTsKPiArCQkJY2FzZSBSQ1MwOgo+ICAg CQkJCW1taW8gPSBSRU5ERVJfSFdTX1BHQV9HRU43Owo+ICAgCQkJCWJyZWFrOwo+IC0JCQljYXNl IEJDUzoKPiArCQkJY2FzZSBCQ1MwOgo+ICAgCQkJCW1taW8gPSBCTFRfSFdTX1BHQV9HRU43Owo+ ICAgCQkJCWJyZWFrOwo+IC0JCQljYXNlIFZDUzoKPiArCQkJY2FzZSBWQ1MwOgo+ICAgCQkJCW1t aW8gPSBCU0RfSFdTX1BHQV9HRU43Owo+ICAgCQkJCWJyZWFrOwo+IC0JCQljYXNlIFZFQ1M6Cj4g KwkJCWNhc2UgVkVDUzA6Cj4gICAJCQkJbW1pbyA9IFZFQk9YX0hXU19QR0FfR0VONzsKPiAgIAkJ CQlicmVhazsKPiAgIAkJCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiBpbmRleCAwNjU0MWY0 YmQ0YWYuLjFmNGU5ODRjZTQyZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2lycS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+IEBAIC0x NDI3LDIwICsxNDI3LDIwIEBAIHN0YXRpYyB2b2lkIGlsa19ndF9pcnFfaGFuZGxlcihzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJCQkgICAgICAgdTMyIGd0X2lpcikKPiAg IHsKPiAgIAlpZiAoZ3RfaWlyICYgR1RfUkVOREVSX1VTRVJfSU5URVJSVVBUKQo+IC0JCWludGVs X2VuZ2luZV9icmVhZGNydW1ic19pcnEoZGV2X3ByaXYtPmVuZ2luZVtSQ1NdKTsKPiArCQlpbnRl bF9lbmdpbmVfYnJlYWRjcnVtYnNfaXJxKGRldl9wcml2LT5lbmdpbmVbUkNTMF0pOwo+ICAgCWlm IChndF9paXIgJiBJTEtfQlNEX1VTRVJfSU5URVJSVVBUKQo+IC0JCWludGVsX2VuZ2luZV9icmVh ZGNydW1ic19pcnEoZGV2X3ByaXYtPmVuZ2luZVtWQ1NdKTsKPiArCQlpbnRlbF9lbmdpbmVfYnJl YWRjcnVtYnNfaXJxKGRldl9wcml2LT5lbmdpbmVbVkNTMF0pOwo+ICAgfQo+ICAgCj4gICBzdGF0 aWMgdm9pZCBzbmJfZ3RfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ICAgCQkJICAgICAgIHUzMiBndF9paXIpCj4gICB7Cj4gICAJaWYgKGd0X2lpciAmIEdU X1JFTkRFUl9VU0VSX0lOVEVSUlVQVCkKPiAtCQlpbnRlbF9lbmdpbmVfYnJlYWRjcnVtYnNfaXJx KGRldl9wcml2LT5lbmdpbmVbUkNTXSk7Cj4gKwkJaW50ZWxfZW5naW5lX2JyZWFkY3J1bWJzX2ly cShkZXZfcHJpdi0+ZW5naW5lW1JDUzBdKTsKPiAgIAlpZiAoZ3RfaWlyICYgR1RfQlNEX1VTRVJf SU5URVJSVVBUKQo+IC0JCWludGVsX2VuZ2luZV9icmVhZGNydW1ic19pcnEoZGV2X3ByaXYtPmVu Z2luZVtWQ1NdKTsKPiArCQlpbnRlbF9lbmdpbmVfYnJlYWRjcnVtYnNfaXJxKGRldl9wcml2LT5l bmdpbmVbVkNTMF0pOwo+ICAgCWlmIChndF9paXIgJiBHVF9CTFRfVVNFUl9JTlRFUlJVUFQpCj4g LQkJaW50ZWxfZW5naW5lX2JyZWFkY3J1bWJzX2lycShkZXZfcHJpdi0+ZW5naW5lW0JDU10pOwo+ ICsJCWludGVsX2VuZ2luZV9icmVhZGNydW1ic19pcnEoZGV2X3ByaXYtPmVuZ2luZVtCQ1MwXSk7 Cj4gICAKPiAgIAlpZiAoZ3RfaWlyICYgKEdUX0JMVF9DU19FUlJPUl9JTlRFUlJVUFQgfAo+ICAg CQkgICAgICBHVF9CU0RfQ1NfRVJST1JfSU5URVJSVVBUIHwKPiBAQCAtMTQ3NSw4ICsxNDc1LDgg QEAgc3RhdGljIHZvaWQgZ2VuOF9ndF9pcnFfYWNrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LAo+ICAgCj4gICAjZGVmaW5lIEdFTjhfR1RfSVJRUyAoR0VOOF9HVF9SQ1NfSVJRIHwgXAo+ ICAgCQkgICAgICBHRU44X0dUX0JDU19JUlEgfCBcCj4gKwkJICAgICAgR0VOOF9HVF9WQ1MwX0lS USB8IFwKPiAgIAkJICAgICAgR0VOOF9HVF9WQ1MxX0lSUSB8IFwKPiAtCQkgICAgICBHRU44X0dU X1ZDUzJfSVJRIHwgXAo+ICAgCQkgICAgICBHRU44X0dUX1ZFQ1NfSVJRIHwgXAo+ICAgCQkgICAg ICBHRU44X0dUX1BNX0lSUSB8IFwKPiAgIAkJICAgICAgR0VOOF9HVF9HVUNfSVJRKQo+IEBAIC0x NDg3LDcgKzE0ODcsNyBAQCBzdGF0aWMgdm9pZCBnZW44X2d0X2lycV9hY2soc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUsCj4gICAJCQlyYXdfcmVnX3dyaXRlKHJlZ3MsIEdFTjhfR1RfSUlS KDApLCBndF9paXJbMF0pOwo+ICAgCX0KPiAgIAo+IC0JaWYgKG1hc3Rlcl9jdGwgJiAoR0VOOF9H VF9WQ1MxX0lSUSB8IEdFTjhfR1RfVkNTMl9JUlEpKSB7Cj4gKwlpZiAobWFzdGVyX2N0bCAmIChH RU44X0dUX1ZDUzBfSVJRIHwgR0VOOF9HVF9WQ1MxX0lSUSkpIHsKPiAgIAkJZ3RfaWlyWzFdID0g cmF3X3JlZ19yZWFkKHJlZ3MsIEdFTjhfR1RfSUlSKDEpKTsKPiAgIAkJaWYgKGxpa2VseShndF9p aXJbMV0pKQo+ICAgCQkJcmF3X3JlZ193cml0ZShyZWdzLCBHRU44X0dUX0lJUigxKSwgZ3RfaWly WzFdKTsKPiBAQCAtMTUxMCwyMSArMTUxMCwyMSBAQCBzdGF0aWMgdm9pZCBnZW44X2d0X2lycV9o YW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAgCQkJCXUzMiBtYXN0ZXJf Y3RsLCB1MzIgZ3RfaWlyWzRdKQo+ICAgewo+ICAgCWlmIChtYXN0ZXJfY3RsICYgKEdFTjhfR1Rf UkNTX0lSUSB8IEdFTjhfR1RfQkNTX0lSUSkpIHsKPiAtCQlnZW44X2NzX2lycV9oYW5kbGVyKGk5 MTUtPmVuZ2luZVtSQ1NdLAo+ICsJCWdlbjhfY3NfaXJxX2hhbmRsZXIoaTkxNS0+ZW5naW5lW1JD UzBdLAo+ICAgCQkJCSAgICBndF9paXJbMF0gPj4gR0VOOF9SQ1NfSVJRX1NISUZUKTsKPiAtCQln ZW44X2NzX2lycV9oYW5kbGVyKGk5MTUtPmVuZ2luZVtCQ1NdLAo+ICsJCWdlbjhfY3NfaXJxX2hh bmRsZXIoaTkxNS0+ZW5naW5lW0JDUzBdLAo+ICAgCQkJCSAgICBndF9paXJbMF0gPj4gR0VOOF9C Q1NfSVJRX1NISUZUKTsKPiAgIAl9Cj4gICAKPiAtCWlmIChtYXN0ZXJfY3RsICYgKEdFTjhfR1Rf VkNTMV9JUlEgfCBHRU44X0dUX1ZDUzJfSVJRKSkgewo+IC0JCWdlbjhfY3NfaXJxX2hhbmRsZXIo aTkxNS0+ZW5naW5lW1ZDU10sCj4gKwlpZiAobWFzdGVyX2N0bCAmIChHRU44X0dUX1ZDUzBfSVJR IHwgR0VOOF9HVF9WQ1MxX0lSUSkpIHsKPiArCQlnZW44X2NzX2lycV9oYW5kbGVyKGk5MTUtPmVu Z2luZVtWQ1MwXSwKPiArCQkJCSAgICBndF9paXJbMV0gPj4gR0VOOF9WQ1MwX0lSUV9TSElGVCk7 Cj4gKwkJZ2VuOF9jc19pcnFfaGFuZGxlcihpOTE1LT5lbmdpbmVbVkNTMV0sCj4gICAJCQkJICAg IGd0X2lpclsxXSA+PiBHRU44X1ZDUzFfSVJRX1NISUZUKTsKPiAtCQlnZW44X2NzX2lycV9oYW5k bGVyKGk5MTUtPmVuZ2luZVtWQ1MyXSwKPiAtCQkJCSAgICBndF9paXJbMV0gPj4gR0VOOF9WQ1My X0lSUV9TSElGVCk7Cj4gICAJfQo+ICAgCj4gICAJaWYgKG1hc3Rlcl9jdGwgJiBHRU44X0dUX1ZF Q1NfSVJRKSB7Cj4gLQkJZ2VuOF9jc19pcnFfaGFuZGxlcihpOTE1LT5lbmdpbmVbVkVDU10sCj4g KwkJZ2VuOF9jc19pcnFfaGFuZGxlcihpOTE1LT5lbmdpbmVbVkVDUzBdLAo+ICAgCQkJCSAgICBn dF9paXJbM10gPj4gR0VOOF9WRUNTX0lSUV9TSElGVCk7Cj4gICAJfQo+ICAgCj4gQEAgLTE4MDIs NyArMTgwMiw3IEBAIHN0YXRpYyB2b2lkIGdlbjZfcnBzX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIHBtX2lpcikKPiAgIAkJcmV0dXJuOwo+ICAgCj4g ICAJaWYgKHBtX2lpciAmIFBNX1ZFQk9YX1VTRVJfSU5URVJSVVBUKQo+IC0JCWludGVsX2VuZ2lu ZV9icmVhZGNydW1ic19pcnEoZGV2X3ByaXYtPmVuZ2luZVtWRUNTXSk7Cj4gKwkJaW50ZWxfZW5n aW5lX2JyZWFkY3J1bWJzX2lycShkZXZfcHJpdi0+ZW5naW5lW1ZFQ1MwXSk7Cj4gICAKPiAgIAlp ZiAocG1faWlyICYgUE1fVkVCT1hfQ1NfRVJST1JfSU5URVJSVVBUKQo+ICAgCQlEUk1fREVCVUco IkNvbW1hbmQgcGFyc2VyIGVycm9yLCBwbV9paXIgMHglMDh4XG4iLCBwbV9paXIpOwo+IEBAIC0z NzgwLDcgKzM3ODAsNyBAQCBzdGF0aWMgdm9pZCBnZW41X2d0X2lycV9wb3N0aW5zdGFsbChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCQkgKiBSUFMgaW50ZXJydXB0cyB3aWxsIGdldCBlbmFi bGVkL2Rpc2FibGVkIG9uIGRlbWFuZCB3aGVuIFJQUwo+ICAgCQkgKiBpdHNlbGYgaXMgZW5hYmxl ZC9kaXNhYmxlZC4KPiAgIAkJICovCj4gLQkJaWYgKEhBU19WRUJPWChkZXZfcHJpdikpIHsKPiAr CQlpZiAoSEFTX0VOR0lORShkZXZfcHJpdiwgVkVDUzApKSB7Cj4gICAJCQlwbV9pcnFzIHw9IFBN X1ZFQk9YX1VTRVJfSU5URVJSVVBUOwo+ICAgCQkJZGV2X3ByaXYtPnBtX2llciB8PSBQTV9WRUJP WF9VU0VSX0lOVEVSUlVQVDsKPiAgIAkJfQo+IEBAIC0zODkyLDE4ICszODkyLDIxIEBAIHN0YXRp YyB2b2lkIGdlbjhfZ3RfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiAgIHsKPiAgIAkvKiBUaGVzZSBhcmUgaW50ZXJydXB0cyB3ZSdsbCB0b2dnbGUg d2l0aCB0aGUgcmluZyBtYXNrIHJlZ2lzdGVyICovCj4gICAJdTMyIGd0X2ludGVycnVwdHNbXSA9 IHsKPiAtCQlHVF9SRU5ERVJfVVNFUl9JTlRFUlJVUFQgPDwgR0VOOF9SQ1NfSVJRX1NISUZUIHwK PiAtCQkJR1RfQ09OVEVYVF9TV0lUQ0hfSU5URVJSVVBUIDw8IEdFTjhfUkNTX0lSUV9TSElGVCB8 Cj4gLQkJCUdUX1JFTkRFUl9VU0VSX0lOVEVSUlVQVCA8PCBHRU44X0JDU19JUlFfU0hJRlQgfAo+ IC0JCQlHVF9DT05URVhUX1NXSVRDSF9JTlRFUlJVUFQgPDwgR0VOOF9CQ1NfSVJRX1NISUZULAo+ IC0JCUdUX1JFTkRFUl9VU0VSX0lOVEVSUlVQVCA8PCBHRU44X1ZDUzFfSVJRX1NISUZUIHwKPiAt CQkJR1RfQ09OVEVYVF9TV0lUQ0hfSU5URVJSVVBUIDw8IEdFTjhfVkNTMV9JUlFfU0hJRlQgfAo+ IC0JCQlHVF9SRU5ERVJfVVNFUl9JTlRFUlJVUFQgPDwgR0VOOF9WQ1MyX0lSUV9TSElGVCB8Cj4g LQkJCUdUX0NPTlRFWFRfU1dJVENIX0lOVEVSUlVQVCA8PCBHRU44X1ZDUzJfSVJRX1NISUZULAo+ ICsJCShHVF9SRU5ERVJfVVNFUl9JTlRFUlJVUFQgPDwgR0VOOF9SQ1NfSVJRX1NISUZUIHwKPiAr CQkgR1RfQ09OVEVYVF9TV0lUQ0hfSU5URVJSVVBUIDw8IEdFTjhfUkNTX0lSUV9TSElGVCB8Cj4g KwkJIEdUX1JFTkRFUl9VU0VSX0lOVEVSUlVQVCA8PCBHRU44X0JDU19JUlFfU0hJRlQgfAo+ICsJ CSBHVF9DT05URVhUX1NXSVRDSF9JTlRFUlJVUFQgPDwgR0VOOF9CQ1NfSVJRX1NISUZUKSwKPiAr Cj4gKwkJKEdUX1JFTkRFUl9VU0VSX0lOVEVSUlVQVCA8PCBHRU44X1ZDUzBfSVJRX1NISUZUIHwK PiArCQkgR1RfQ09OVEVYVF9TV0lUQ0hfSU5URVJSVVBUIDw8IEdFTjhfVkNTMF9JUlFfU0hJRlQg fAo+ICsJCSBHVF9SRU5ERVJfVVNFUl9JTlRFUlJVUFQgPDwgR0VOOF9WQ1MxX0lSUV9TSElGVCB8 Cj4gKwkJIEdUX0NPTlRFWFRfU1dJVENIX0lOVEVSUlVQVCA8PCBHRU44X1ZDUzFfSVJRX1NISUZU KSwKPiArCj4gICAJCTAsCj4gLQkJR1RfUkVOREVSX1VTRVJfSU5URVJSVVBUIDw8IEdFTjhfVkVD U19JUlFfU0hJRlQgfAo+IC0JCQlHVF9DT05URVhUX1NXSVRDSF9JTlRFUlJVUFQgPDwgR0VOOF9W RUNTX0lSUV9TSElGVAo+IC0JCX07Cj4gKwo+ICsJCShHVF9SRU5ERVJfVVNFUl9JTlRFUlJVUFQg PDwgR0VOOF9WRUNTX0lSUV9TSElGVCB8Cj4gKwkJIEdUX0NPTlRFWFRfU1dJVENIX0lOVEVSUlVQ VCA8PCBHRU44X1ZFQ1NfSVJRX1NISUZUKQo+ICsJfTsKPiAgIAo+ICAgCWRldl9wcml2LT5wbV9p ZXIgPSAweDA7Cj4gICAJZGV2X3ByaXYtPnBtX2ltciA9IH5kZXZfcHJpdi0+cG1faWVyOwo+IEBA IC00MjMxLDcgKzQyMzQsNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgaTh4eF9pcnFfaGFuZGxlcihp bnQgaXJxLCB2b2lkICphcmcpCj4gICAJCUk5MTVfV1JJVEUxNihJSVIsIGlpcik7Cj4gICAKPiAg IAkJaWYgKGlpciAmIEk5MTVfVVNFUl9JTlRFUlJVUFQpCj4gLQkJCWludGVsX2VuZ2luZV9icmVh ZGNydW1ic19pcnEoZGV2X3ByaXYtPmVuZ2luZVtSQ1NdKTsKPiArCQkJaW50ZWxfZW5naW5lX2Jy ZWFkY3J1bWJzX2lycShkZXZfcHJpdi0+ZW5naW5lW1JDUzBdKTsKPiAgIAo+ICAgCQlpZiAoaWly ICYgSTkxNV9NQVNURVJfRVJST1JfSU5URVJSVVBUKQo+ICAgCQkJaTh4eF9lcnJvcl9pcnFfaGFu ZGxlcihkZXZfcHJpdiwgZWlyLCBlaXJfc3R1Y2spOwo+IEBAIC00MzM5LDcgKzQzNDIsNyBAQCBz dGF0aWMgaXJxcmV0dXJuX3QgaTkxNV9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpCj4g ICAJCUk5MTVfV1JJVEUoSUlSLCBpaXIpOwo+ICAgCj4gICAJCWlmIChpaXIgJiBJOTE1X1VTRVJf SU5URVJSVVBUKQo+IC0JCQlpbnRlbF9lbmdpbmVfYnJlYWRjcnVtYnNfaXJxKGRldl9wcml2LT5l bmdpbmVbUkNTXSk7Cj4gKwkJCWludGVsX2VuZ2luZV9icmVhZGNydW1ic19pcnEoZGV2X3ByaXYt PmVuZ2luZVtSQ1MwXSk7Cj4gICAKPiAgIAkJaWYgKGlpciAmIEk5MTVfTUFTVEVSX0VSUk9SX0lO VEVSUlVQVCkKPiAgIAkJCWk5eHhfZXJyb3JfaXJxX2hhbmRsZXIoZGV2X3ByaXYsIGVpciwgZWly X3N0dWNrKTsKPiBAQCAtNDQ4NCwxMCArNDQ4NywxMCBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgaTk2 NV9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpCj4gICAJCUk5MTVfV1JJVEUoSUlSLCBp aXIpOwo+ICAgCj4gICAJCWlmIChpaXIgJiBJOTE1X1VTRVJfSU5URVJSVVBUKQo+IC0JCQlpbnRl bF9lbmdpbmVfYnJlYWRjcnVtYnNfaXJxKGRldl9wcml2LT5lbmdpbmVbUkNTXSk7Cj4gKwkJCWlu dGVsX2VuZ2luZV9icmVhZGNydW1ic19pcnEoZGV2X3ByaXYtPmVuZ2luZVtSQ1MwXSk7Cj4gICAK PiAgIAkJaWYgKGlpciAmIEk5MTVfQlNEX1VTRVJfSU5URVJSVVBUKQo+IC0JCQlpbnRlbF9lbmdp bmVfYnJlYWRjcnVtYnNfaXJxKGRldl9wcml2LT5lbmdpbmVbVkNTXSk7Cj4gKwkJCWludGVsX2Vu Z2luZV9icmVhZGNydW1ic19pcnEoZGV2X3ByaXYtPmVuZ2luZVtWQ1MwXSk7Cj4gICAKPiAgIAkJ aWYgKGlpciAmIEk5MTVfTUFTVEVSX0VSUk9SX0lOVEVSUlVQVCkKPiAgIAkJCWk5eHhfZXJyb3Jf aXJxX2hhbmRsZXIoZGV2X3ByaXYsIGVpciwgZWlyX3N0dWNrKTsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cGNpLmMKPiBpbmRleCBhOTIxMWMzNzBjZDEuLmM0MmM1Y2NmMzhmZSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9wY2kuYwo+IEBAIC05NCw3ICs5NCw3IEBACj4gICAJLmdwdV9yZXNldF9jbG9iYmVy c19kaXNwbGF5ID0gdHJ1ZSwgXAo+ICAgCS5od3NfbmVlZHNfcGh5c2ljYWwgPSAxLCBcCj4gICAJ LnVuZmVuY2VkX25lZWRzX2FsaWdubWVudCA9IDEsIFwKPiAtCS5yaW5nX21hc2sgPSBSRU5ERVJf UklORywgXAo+ICsJLmVuZ2luZV9tYXNrID0gQklUKFJDUzApLCBcCj4gICAJLmhhc19zbm9vcCA9 IHRydWUsIFwKPiAgIAkuaGFzX2NvaGVyZW50X2dndHQgPSBmYWxzZSwgXAo+ICAgCUdFTl9ERUZB VUxUX1BJUEVPRkZTRVRTLCBcCj4gQEAgLTEzMyw3ICsxMzMsNyBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGludGVsX2RldmljZV9pbmZvIGludGVsX2k4NjVnX2luZm8gPSB7Cj4gICAJLm51bV9waXBl cyA9IDIsIFwKPiAgIAkuZGlzcGxheS5oYXNfZ21jaCA9IDEsIFwKPiAgIAkuZ3B1X3Jlc2V0X2Ns b2JiZXJzX2Rpc3BsYXkgPSB0cnVlLCBcCj4gLQkucmluZ19tYXNrID0gUkVOREVSX1JJTkcsIFwK PiArCS5lbmdpbmVfbWFzayA9IEJJVChSQ1MwKSwgXAo+ICAgCS5oYXNfc25vb3AgPSB0cnVlLCBc Cj4gICAJLmhhc19jb2hlcmVudF9nZ3R0ID0gdHJ1ZSwgXAo+ICAgCUdFTl9ERUZBVUxUX1BJUEVP RkZTRVRTLCBcCj4gQEAgLTIxMCw3ICsyMTAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVs X2RldmljZV9pbmZvIGludGVsX3BpbmV2aWV3X2luZm8gPSB7Cj4gICAJLmRpc3BsYXkuaGFzX2hv dHBsdWcgPSAxLCBcCj4gICAJLmRpc3BsYXkuaGFzX2dtY2ggPSAxLCBcCj4gICAJLmdwdV9yZXNl dF9jbG9iYmVyc19kaXNwbGF5ID0gdHJ1ZSwgXAo+IC0JLnJpbmdfbWFzayA9IFJFTkRFUl9SSU5H LCBcCj4gKwkuZW5naW5lX21hc2sgPSBCSVQoUkNTMCksIFwKPiAgIAkuaGFzX3Nub29wID0gdHJ1 ZSwgXAo+ICAgCS5oYXNfY29oZXJlbnRfZ2d0dCA9IHRydWUsIFwKPiAgIAlHRU5fREVGQVVMVF9Q SVBFT0ZGU0VUUywgXAo+IEBAIC0yMzksNyArMjM5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBp bnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9pOTY1Z21faW5mbyA9IHsKPiAgIHN0YXRpYyBjb25zdCBz dHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gaW50ZWxfZzQ1X2luZm8gPSB7Cj4gICAJR0VONF9GRUFU VVJFUywKPiAgIAlQTEFURk9STShJTlRFTF9HNDUpLAo+IC0JLnJpbmdfbWFzayA9IFJFTkRFUl9S SU5HIHwgQlNEX1JJTkcsCj4gKwkuZW5naW5lX21hc2sgPSBCSVQoUkNTMCkgfCBCSVQoVkNTMCks Cj4gICAJLmdwdV9yZXNldF9jbG9iYmVyc19kaXNwbGF5ID0gZmFsc2UsCj4gICB9Owo+ICAgCj4g QEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZv IGludGVsX2dtNDVfaW5mbyA9IHsKPiAgIAkuaXNfbW9iaWxlID0gMSwKPiAgIAkuZGlzcGxheS5o YXNfZmJjID0gMSwKPiAgIAkuZGlzcGxheS5zdXBwb3J0c190diA9IDEsCj4gLQkucmluZ19tYXNr ID0gUkVOREVSX1JJTkcgfCBCU0RfUklORywKPiArCS5lbmdpbmVfbWFzayA9IEJJVChSQ1MwKSB8 IEJJVChWQ1MwKSwKPiAgIAkuZ3B1X3Jlc2V0X2Nsb2JiZXJzX2Rpc3BsYXkgPSBmYWxzZSwKPiAg IH07Cj4gICAKPiBAQCAtMjU3LDcgKzI1Nyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxf ZGV2aWNlX2luZm8gaW50ZWxfZ200NV9pbmZvID0gewo+ICAgCUdFTig1KSwgXAo+ICAgCS5udW1f cGlwZXMgPSAyLCBcCj4gICAJLmRpc3BsYXkuaGFzX2hvdHBsdWcgPSAxLCBcCj4gLQkucmluZ19t YXNrID0gUkVOREVSX1JJTkcgfCBCU0RfUklORywgXAo+ICsJLmVuZ2luZV9tYXNrID0gQklUKFJD UzApIHwgQklUKFZDUzApLCBcCj4gICAJLmhhc19zbm9vcCA9IHRydWUsIFwKPiAgIAkuaGFzX2Nv aGVyZW50X2dndHQgPSB0cnVlLCBcCj4gICAJLyogaWxrIGRvZXMgc3VwcG9ydCByYzYsIGJ1dCB3 ZSBkbyBub3QgaW1wbGVtZW50IFtwb3dlcl0gY29udGV4dHMgKi8gXAo+IEBAIC0yODMsNyArMjgz LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9pcm9ubGFr ZV9tX2luZm8gPSB7Cj4gICAJLm51bV9waXBlcyA9IDIsIFwKPiAgIAkuZGlzcGxheS5oYXNfaG90 cGx1ZyA9IDEsIFwKPiAgIAkuZGlzcGxheS5oYXNfZmJjID0gMSwgXAo+IC0JLnJpbmdfbWFzayA9 IFJFTkRFUl9SSU5HIHwgQlNEX1JJTkcgfCBCTFRfUklORywgXAo+ICsJLmVuZ2luZV9tYXNrID0g QklUKFJDUzApIHwgQklUKFZDUzApIHwgQklUKEJDUzApLCBcCj4gICAJLmhhc19jb2hlcmVudF9n Z3R0ID0gdHJ1ZSwgXAo+ICAgCS5oYXNfbGxjID0gMSwgXAo+ICAgCS5oYXNfcmM2ID0gMSwgXAo+ IEBAIC0zMjgsNyArMzI4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5m byBpbnRlbF9zYW5keWJyaWRnZV9tX2d0Ml9pbmZvID0gewo+ICAgCS5udW1fcGlwZXMgPSAzLCBc Cj4gICAJLmRpc3BsYXkuaGFzX2hvdHBsdWcgPSAxLCBcCj4gICAJLmRpc3BsYXkuaGFzX2ZiYyA9 IDEsIFwKPiAtCS5yaW5nX21hc2sgPSBSRU5ERVJfUklORyB8IEJTRF9SSU5HIHwgQkxUX1JJTkcs IFwKPiArCS5lbmdpbmVfbWFzayA9IEJJVChSQ1MwKSB8IEJJVChWQ1MwKSB8IEJJVChCQ1MwKSwg XAo+ICAgCS5oYXNfY29oZXJlbnRfZ2d0dCA9IHRydWUsIFwKPiAgIAkuaGFzX2xsYyA9IDEsIFwK PiAgIAkuaGFzX3JjNiA9IDEsIFwKPiBAQCAtMzg5LDcgKzM4OSw3IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gaW50ZWxfdmFsbGV5dmlld19pbmZvID0gewo+ICAgCS5w cGd0dCA9IElOVEVMX1BQR1RUX0ZVTEwsCj4gICAJLmhhc19zbm9vcCA9IHRydWUsCj4gICAJLmhh c19jb2hlcmVudF9nZ3R0ID0gZmFsc2UsCj4gLQkucmluZ19tYXNrID0gUkVOREVSX1JJTkcgfCBC U0RfUklORyB8IEJMVF9SSU5HLAo+ICsJLmVuZ2luZV9tYXNrID0gQklUKFJDUzApIHwgQklUKFZD UzApIHwgQklUKEJDUzApLAo+ICAgCS5kaXNwbGF5X21taW9fb2Zmc2V0ID0gVkxWX0RJU1BMQVlf QkFTRSwKPiAgIAlHRU5fREVGQVVMVF9QQUdFX1NJWkVTLAo+ICAgCUdFTl9ERUZBVUxUX1BJUEVP RkZTRVRTLAo+IEBAIC0zOTgsNyArMzk4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9k ZXZpY2VfaW5mbyBpbnRlbF92YWxsZXl2aWV3X2luZm8gPSB7Cj4gICAKPiAgICNkZWZpbmUgRzc1 X0ZFQVRVUkVTICBcCj4gICAJR0VON19GRUFUVVJFUywgXAo+IC0JLnJpbmdfbWFzayA9IFJFTkRF Ul9SSU5HIHwgQlNEX1JJTkcgfCBCTFRfUklORyB8IFZFQk9YX1JJTkcsIFwKPiArCS5lbmdpbmVf bWFzayA9IEJJVChSQ1MwKSB8IEJJVChWQ1MwKSB8IEJJVChCQ1MwKSB8IEJJVChWRUNTMCksIFwK PiAgIAkuZGlzcGxheS5oYXNfZGRpID0gMSwgXAo+ICAgCS5oYXNfZnBnYV9kYmcgPSAxLCBcCj4g ICAJLmRpc3BsYXkuaGFzX3BzciA9IDEsIFwKPiBAQCAtNDYyLDcgKzQ2Miw4IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gaW50ZWxfYnJvYWR3ZWxsX3JzdmRfaW5mbyA9 IHsKPiAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gaW50ZWxfYnJvYWR3 ZWxsX2d0M19pbmZvID0gewo+ICAgCUJEV19QTEFURk9STSwKPiAgIAkuZ3QgPSAzLAo+IC0JLnJp bmdfbWFzayA9IFJFTkRFUl9SSU5HIHwgQlNEX1JJTkcgfCBCTFRfUklORyB8IFZFQk9YX1JJTkcg fCBCU0QyX1JJTkcsCj4gKwkuZW5naW5lX21hc2sgPQo+ICsJCUJJVChSQ1MwKSB8IEJJVChWQ1Mw KSB8IEJJVChCQ1MwKSB8IEJJVChWRUNTMCkgfCBCSVQoVkNTMSksCj4gICB9Owo+ICAgCj4gICBz dGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZvIGludGVsX2NoZXJyeXZpZXdfaW5m byA9IHsKPiBAQCAtNDcxLDcgKzQ3Miw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZGV2 aWNlX2luZm8gaW50ZWxfY2hlcnJ5dmlld19pbmZvID0gewo+ICAgCS5udW1fcGlwZXMgPSAzLAo+ ICAgCS5kaXNwbGF5Lmhhc19ob3RwbHVnID0gMSwKPiAgIAkuaXNfbHAgPSAxLAo+IC0JLnJpbmdf bWFzayA9IFJFTkRFUl9SSU5HIHwgQlNEX1JJTkcgfCBCTFRfUklORyB8IFZFQk9YX1JJTkcsCj4g KwkuZW5naW5lX21hc2sgPSBCSVQoUkNTMCkgfCBCSVQoVkNTMCkgfCBCSVQoQkNTMCkgfCBCSVQo VkVDUzApLAo+ICAgCS5oYXNfNjRiaXRfcmVsb2MgPSAxLAo+ICAgCS5oYXNfcnVudGltZV9wbSA9 IDEsCj4gICAJLmhhc19yYzYgPSAxLAo+IEBAIC01MjEsNyArNTIyLDggQEAgc3RhdGljIGNvbnN0 IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9za3lsYWtlX2d0Ml9pbmZvID0gewo+ICAg Cj4gICAjZGVmaW5lIFNLTF9HVDNfUExVU19QTEFURk9STSBcCj4gICAJU0tMX1BMQVRGT1JNLCBc Cj4gLQkucmluZ19tYXNrID0gUkVOREVSX1JJTkcgfCBCU0RfUklORyB8IEJMVF9SSU5HIHwgVkVC T1hfUklORyB8IEJTRDJfUklORwo+ICsJLmVuZ2luZV9tYXNrID0gXAo+ICsJCUJJVChSQ1MwKSB8 IEJJVChWQ1MwKSB8IEJJVChCQ1MwKSB8IEJJVChWRUNTMCkgfCBCSVQoVkNTMSkKPiAgIAo+ICAg Cj4gICBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZvIGludGVsX3NreWxha2Vf Z3QzX2luZm8gPSB7Cj4gQEAgLTUzOCw3ICs1NDAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlu dGVsX2RldmljZV9pbmZvIGludGVsX3NreWxha2VfZ3Q0X2luZm8gPSB7Cj4gICAJR0VOKDkpLCBc Cj4gICAJLmlzX2xwID0gMSwgXAo+ICAgCS5kaXNwbGF5Lmhhc19ob3RwbHVnID0gMSwgXAo+IC0J LnJpbmdfbWFzayA9IFJFTkRFUl9SSU5HIHwgQlNEX1JJTkcgfCBCTFRfUklORyB8IFZFQk9YX1JJ TkcsIFwKPiArCS5lbmdpbmVfbWFzayA9IEJJVChSQ1MwKSB8IEJJVChWQ1MwKSB8IEJJVChCQ1Mw KSB8IEJJVChWRUNTMCksIFwKPiAgIAkubnVtX3BpcGVzID0gMywgXAo+ICAgCS5oYXNfNjRiaXRf cmVsb2MgPSAxLCBcCj4gICAJLmRpc3BsYXkuaGFzX2RkaSA9IDEsIFwKPiBAQCAtNTkyLDcgKzU5 NCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gaW50ZWxfa2FieWxh a2VfZ3QyX2luZm8gPSB7Cj4gICBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZv IGludGVsX2thYnlsYWtlX2d0M19pbmZvID0gewo+ICAgCUtCTF9QTEFURk9STSwKPiAgIAkuZ3Qg PSAzLAo+IC0JLnJpbmdfbWFzayA9IFJFTkRFUl9SSU5HIHwgQlNEX1JJTkcgfCBCTFRfUklORyB8 IFZFQk9YX1JJTkcgfCBCU0QyX1JJTkcsCj4gKwkuZW5naW5lX21hc2sgPQo+ICsJCUJJVChSQ1Mw KSB8IEJJVChWQ1MwKSB8IEJJVChCQ1MwKSB8IEJJVChWRUNTMCkgfCBCSVQoVkNTMSksCj4gICB9 Owo+ICAgCj4gICAjZGVmaW5lIENGTF9QTEFURk9STSBcCj4gQEAgLTYxMiw3ICs2MTUsOCBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZvIGludGVsX2NvZmZlZWxha2VfZ3Qy X2luZm8gPSB7Cj4gICBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZvIGludGVs X2NvZmZlZWxha2VfZ3QzX2luZm8gPSB7Cj4gICAJQ0ZMX1BMQVRGT1JNLAo+ICAgCS5ndCA9IDMs Cj4gLQkucmluZ19tYXNrID0gUkVOREVSX1JJTkcgfCBCU0RfUklORyB8IEJMVF9SSU5HIHwgVkVC T1hfUklORyB8IEJTRDJfUklORywKPiArCS5lbmdpbmVfbWFzayA9Cj4gKwkJQklUKFJDUzApIHwg QklUKFZDUzApIHwgQklUKEJDUzApIHwgQklUKFZFQ1MwKSB8IEJJVChWQ1MxKSwKPiAgIH07Cj4g ICAKPiAgICNkZWZpbmUgR0VOMTBfRkVBVFVSRVMgXAo+IEBAIC02NTUsNyArNjU5LDggQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9pY2VsYWtlXzExX2luZm8g PSB7Cj4gICAJR0VOMTFfRkVBVFVSRVMsCj4gICAJUExBVEZPUk0oSU5URUxfSUNFTEFLRSksCj4g ICAJLmlzX2FscGhhX3N1cHBvcnQgPSAxLAo+IC0JLnJpbmdfbWFzayA9IFJFTkRFUl9SSU5HIHwg QkxUX1JJTkcgfCBWRUJPWF9SSU5HIHwgQlNEX1JJTkcgfCBCU0QzX1JJTkcsCj4gKwkuZW5naW5l X21hc2sgPQo+ICsJCUJJVChSQ1MwKSB8IEJJVChCQ1MwKSB8IEJJVChWRUNTMCkgfCBCSVQoVkNT MCkgfCBCSVQoVkNTMiksCj4gICB9Owo+ICAgCj4gICAjdW5kZWYgR0VOCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9wZXJmLmMKPiBpbmRleCA3MmE5YTM1YjQwZTIuLmU1YWVhMTc2YzFkYSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcGVyZi5jCj4gQEAgLTEyMDIsNyArMTIwMiw3IEBAIHN0YXRpYyBpbnQg aTkxNV9vYV9yZWFkKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCj4gICBzdGF0aWMg c3RydWN0IGludGVsX2NvbnRleHQgKm9hX3Bpbl9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1LAo+ICAgCQkJCQkgICAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiAg IHsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IGk5MTUtPmVuZ2luZVtSQ1Nd Owo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gaTkxNS0+ZW5naW5lW1JDUzBd Owo+ICAgCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZTsKPiAgIAlpbnQgcmV0Owo+ICAgCj4gQEAg LTE2ODEsNyArMTY4MSw3IEBAIHN0YXRpYyB2b2lkIGdlbjhfdXBkYXRlX3JlZ19zdGF0ZV91bmxv Y2tlZChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICAgCUNUWF9SRUcocmVnX3N0YXRl LCBDVFhfUl9QV1JfQ0xLX1NUQVRFLCBHRU44X1JfUFdSX0NMS19TVEFURSwKPiAgIAkJZ2VuOF9t YWtlX3JwY3MoZGV2X3ByaXYsCj4gICAJCQkgICAgICAgJnRvX2ludGVsX2NvbnRleHQoY3R4LAo+ IC0JCQkJCQkgZGV2X3ByaXYtPmVuZ2luZVtSQ1NdKS0+c3NldSkpOwo+ICsJCQkJCQkgZGV2X3By aXYtPmVuZ2luZVtSQ1MwXSktPnNzZXUpKTsKPiAgIH0KPiAgIAo+ICAgLyoKPiBAQCAtMTcxMSw3 ICsxNzExLDcgQEAgc3RhdGljIHZvaWQgZ2VuOF91cGRhdGVfcmVnX3N0YXRlX3VubG9ja2VkKHN0 cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gICBzdGF0aWMgaW50IGdlbjhfY29uZmlndXJl X2FsbF9jb250ZXh0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJCQkJ ICAgICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX2NvbmZpZyAqb2FfY29uZmlnKQo+ICAgewo+IC0J c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gZGV2X3ByaXYtPmVuZ2luZVtSQ1NdOwo+ ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gZGV2X3ByaXYtPmVuZ2luZVtSQ1Mw XTsKPiAgIAl1bnNpZ25lZCBpbnQgbWFwX3R5cGUgPSBpOTE1X2NvaGVyZW50X21hcF90eXBlKGRl dl9wcml2KTsKPiAgIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4Owo+ICAgCXN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxOwo+IEBAIC0yMTQzLDcgKzIxNDMsNyBAQCB2b2lkIGk5MTVfb2FfaW5p dF9yZWdfc3RhdGUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAgewo+ICAgCXN0 cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW07Cj4gICAKPiAtCWlmIChlbmdpbmUtPmlkICE9 IFJDUykKPiArCWlmIChlbmdpbmUtPmNsYXNzICE9IFJFTkRFUl9DTEFTUykKPiAgIAkJcmV0dXJu Owo+ICAgCj4gICAJc3RyZWFtID0gZW5naW5lLT5pOTE1LT5wZXJmLm9hLmV4Y2x1c2l2ZV9zdHJl YW07Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5jCj4gaW5kZXggNjU2MGMzNTZmMjc5Li4wODQwMTYy MDBhMWUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wbXUuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMKPiBAQCAtMTAxLDcgKzEwMSw3IEBA IHN0YXRpYyBib29sIHBtdV9uZWVkc190aW1lcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwgYm9vbCBncHVfYWN0aXZlKQo+ICAgCSAqCj4gICAJICogVXNlIFJDUyBhcyBwcm94eSBmb3Ig YWxsIGVuZ2luZXMuCj4gICAJICovCj4gLQllbHNlIGlmIChpbnRlbF9lbmdpbmVfc3VwcG9ydHNf c3RhdHMoaTkxNS0+ZW5naW5lW1JDU10pKQo+ICsJZWxzZSBpZiAoaW50ZWxfZW5naW5lX3N1cHBv cnRzX3N0YXRzKGk5MTUtPmVuZ2luZVtSQ1MwXSkpCj4gICAJCWVuYWJsZSAmPSB+QklUKEk5MTVf U0FNUExFX0JVU1kpOwo+ICAgCj4gICAJLyoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBpbmRl eCBjOWI4NjgzNDc0ODEuLjE2Y2U5YzYwOWM2NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlZy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcu aAo+IEBAIC0yMTAsMTQgKzIxMCwxNCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV9tbWlvX3Jl Z192YWxpZChpOTE1X3JlZ190IHJlZykKPiAgIAo+ICAgLyogRW5naW5lIElEICovCj4gICAKPiAt I2RlZmluZSBSQ1NfSFcJCTAKPiAtI2RlZmluZSBWQ1NfSFcJCTEKPiAtI2RlZmluZSBCQ1NfSFcJ CTIKPiAtI2RlZmluZSBWRUNTX0hXCQkzCj4gLSNkZWZpbmUgVkNTMl9IVwkJNAo+IC0jZGVmaW5l IFZDUzNfSFcJCTYKPiAtI2RlZmluZSBWQ1M0X0hXCQk3Cj4gLSNkZWZpbmUgVkVDUzJfSFcJMTIK PiArI2RlZmluZSBSQ1MwX0hXCQkwCj4gKyNkZWZpbmUgVkNTMF9IVwkJMQo+ICsjZGVmaW5lIEJD UzBfSFcJCTIKPiArI2RlZmluZSBWRUNTMF9IVwkzCj4gKyNkZWZpbmUgVkNTMV9IVwkJNAo+ICsj ZGVmaW5lIFZDUzJfSFcJCTYKPiArI2RlZmluZSBWQ1MzX0hXCQk3Cj4gKyNkZWZpbmUgVkVDUzFf SFcJMTIKPiAgIAo+ICAgLyogRW5naW5lIGNsYXNzICovCj4gICAKPiBAQCAtNzI1MCw4ICs3MjUw LDggQEAgZW51bSB7Cj4gICAjZGVmaW5lICBHRU44X0dUX1ZFQ1NfSVJRCQkoMSA8PCA2KQo+ICAg I2RlZmluZSAgR0VOOF9HVF9HVUNfSVJRCQkoMSA8PCA1KQo+ICAgI2RlZmluZSAgR0VOOF9HVF9Q TV9JUlEJCQkoMSA8PCA0KQo+IC0jZGVmaW5lICBHRU44X0dUX1ZDUzJfSVJRCQkoMSA8PCAzKQo+ IC0jZGVmaW5lICBHRU44X0dUX1ZDUzFfSVJRCQkoMSA8PCAyKQo+ICsjZGVmaW5lICBHRU44X0dU X1ZDUzFfSVJRCQkoMSA8PCAzKSAvKiBOQjogVkNTMiBpbiBic3BlYyEgKi8KPiArI2RlZmluZSAg R0VOOF9HVF9WQ1MwX0lSUQkJKDEgPDwgMikgLyogTkI6IFZDUzEgaW4gYnBzZWMhICovCj4gICAj ZGVmaW5lICBHRU44X0dUX0JDU19JUlEJCSgxIDw8IDEpCj4gICAjZGVmaW5lICBHRU44X0dUX1JD U19JUlEJCSgxIDw8IDApCj4gICAKPiBAQCAtNzI3Miw4ICs3MjcyLDggQEAgZW51bSB7Cj4gICAK PiAgICNkZWZpbmUgR0VOOF9SQ1NfSVJRX1NISUZUIDAKPiAgICNkZWZpbmUgR0VOOF9CQ1NfSVJR X1NISUZUIDE2Cj4gLSNkZWZpbmUgR0VOOF9WQ1MxX0lSUV9TSElGVCAwCj4gLSNkZWZpbmUgR0VO OF9WQ1MyX0lSUV9TSElGVCAxNgo+ICsjZGVmaW5lIEdFTjhfVkNTMF9JUlFfU0hJRlQgMCAgLyog TkI6IFZDUzEgaW4gYnNwZWMhICovCj4gKyNkZWZpbmUgR0VOOF9WQ1MxX0lSUV9TSElGVCAxNiAv KiBOQjogVkNTMiBpbiBicHNlYyEgKi8KPiAgICNkZWZpbmUgR0VOOF9WRUNTX0lSUV9TSElGVCAw Cj4gICAjZGVmaW5lIEdFTjhfV0RfSVJRX1NISUZUIDE2Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXNldC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZXNldC5jCj4gaW5kZXggNTVkNjEyM2RiYmE0Li4zZmJhYTcyYTllYWMgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXNldC5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZXNldC5jCj4gQEAgLTI5NywxMiArMjk3LDEyIEBAIHN0YXRpYyBpbnQg Z2VuNl9yZXNldF9lbmdpbmVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAgCQkJ ICAgICAgdW5zaWduZWQgaW50IHJldHJ5KQo+ICAgewo+ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZTsKPiAtCWNvbnN0IHUzMiBod19lbmdpbmVfbWFza1tJOTE1X05VTV9FTkdJTkVT XSA9IHsKPiAtCQlbUkNTXSA9IEdFTjZfR1JET01fUkVOREVSLAo+IC0JCVtCQ1NdID0gR0VONl9H UkRPTV9CTFQsCj4gLQkJW1ZDU10gPSBHRU42X0dSRE9NX01FRElBLAo+IC0JCVtWQ1MyXSA9IEdF TjhfR1JET01fTUVESUEyLAo+IC0JCVtWRUNTXSA9IEdFTjZfR1JET01fVkVDUywKPiArCWNvbnN0 IHUzMiBod19lbmdpbmVfbWFza1tdID0gewo+ICsJCVtSQ1MwXSAgPSBHRU42X0dSRE9NX1JFTkRF UiwKPiArCQlbQkNTMF0gID0gR0VONl9HUkRPTV9CTFQsCj4gKwkJW1ZDUzBdICA9IEdFTjZfR1JE T01fTUVESUEsCj4gKwkJW1ZDUzFdICA9IEdFTjhfR1JET01fTUVESUEyLAo+ICsJCVtWRUNTMF0g PSBHRU42X0dSRE9NX1ZFQ1MsCj4gICAJfTsKPiAgIAl1MzIgaHdfbWFzazsKPiAgIAo+IEBAIC0z MTIsOCArMzEyLDEwIEBAIHN0YXRpYyBpbnQgZ2VuNl9yZXNldF9lbmdpbmVzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LAo+ICAgCQl1bnNpZ25lZCBpbnQgdG1wOwo+ICAgCj4gICAJCWh3 X21hc2sgPSAwOwo+IC0JCWZvcl9lYWNoX2VuZ2luZV9tYXNrZWQoZW5naW5lLCBpOTE1LCBlbmdp bmVfbWFzaywgdG1wKQo+ICsJCWZvcl9lYWNoX2VuZ2luZV9tYXNrZWQoZW5naW5lLCBpOTE1LCBl bmdpbmVfbWFzaywgdG1wKSB7Cj4gKwkJCUdFTV9CVUdfT04oZW5naW5lLT5pZCA+PSBBUlJBWV9T SVpFKGh3X2VuZ2luZV9tYXNrKSk7Cj4gICAJCQlod19tYXNrIHw9IGh3X2VuZ2luZV9tYXNrW2Vu Z2luZS0+aWRdOwo+ICsJCX0KPiAgIAl9Cj4gICAKPiAgIAlyZXR1cm4gZ2VuNl9od19kb21haW5f cmVzZXQoaTkxNSwgaHdfbWFzayk7Cj4gQEAgLTQyMCwyOCArNDIyLDI3IEBAIHN0YXRpYyBpbnQg Z2VuMTFfcmVzZXRfZW5naW5lcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIAkJ CSAgICAgICB1bnNpZ25lZCBpbnQgZW5naW5lX21hc2ssCj4gICAJCQkgICAgICAgdW5zaWduZWQg aW50IHJldHJ5KQo+ICAgewo+IC0JY29uc3QgdTMyIGh3X2VuZ2luZV9tYXNrW0k5MTVfTlVNX0VO R0lORVNdID0gewo+IC0JCVtSQ1NdID0gR0VOMTFfR1JET01fUkVOREVSLAo+IC0JCVtCQ1NdID0g R0VOMTFfR1JET01fQkxULAo+IC0JCVtWQ1NdID0gR0VOMTFfR1JET01fTUVESUEsCj4gLQkJW1ZD UzJdID0gR0VOMTFfR1JET01fTUVESUEyLAo+IC0JCVtWQ1MzXSA9IEdFTjExX0dSRE9NX01FRElB MywKPiAtCQlbVkNTNF0gPSBHRU4xMV9HUkRPTV9NRURJQTQsCj4gLQkJW1ZFQ1NdID0gR0VOMTFf R1JET01fVkVDUywKPiAtCQlbVkVDUzJdID0gR0VOMTFfR1JET01fVkVDUzIsCj4gKwljb25zdCB1 MzIgaHdfZW5naW5lX21hc2tbXSA9IHsKPiArCQlbUkNTMF0gID0gR0VOMTFfR1JET01fUkVOREVS LAo+ICsJCVtCQ1MwXSAgPSBHRU4xMV9HUkRPTV9CTFQsCj4gKwkJW1ZDUzBdICA9IEdFTjExX0dS RE9NX01FRElBLAo+ICsJCVtWQ1MxXSAgPSBHRU4xMV9HUkRPTV9NRURJQTIsCj4gKwkJW1ZDUzJd ICA9IEdFTjExX0dSRE9NX01FRElBMywKPiArCQlbVkNTM10gID0gR0VOMTFfR1JET01fTUVESUE0 LAo+ICsJCVtWRUNTMF0gPSBHRU4xMV9HUkRPTV9WRUNTLAo+ICsJCVtWRUNTMV0gPSBHRU4xMV9H UkRPTV9WRUNTMiwKPiAgIAl9Owo+ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsK PiAgIAl1bnNpZ25lZCBpbnQgdG1wOwo+ICAgCXUzMiBod19tYXNrOwo+ICAgCWludCByZXQ7Cj4g ICAKPiAtCUJVSUxEX0JVR19PTihWRUNTMiArIDEgIT0gSTkxNV9OVU1fRU5HSU5FUyk7Cj4gLQo+ ICAgCWlmIChlbmdpbmVfbWFzayA9PSBBTExfRU5HSU5FUykgewo+ICAgCQlod19tYXNrID0gR0VO MTFfR1JET01fRlVMTDsKPiAgIAl9IGVsc2Ugewo+ICAgCQlod19tYXNrID0gMDsKPiAgIAkJZm9y X2VhY2hfZW5naW5lX21hc2tlZChlbmdpbmUsIGk5MTUsIGVuZ2luZV9tYXNrLCB0bXApIHsKPiAr CQkJR0VNX0JVR19PTihlbmdpbmUtPmlkID49IEFSUkFZX1NJWkUoaHdfZW5naW5lX21hc2spKTsK PiAgIAkJCWh3X21hc2sgfD0gaHdfZW5naW5lX21hc2tbZW5naW5lLT5pZF07Cj4gICAJCQlod19t YXNrIHw9IGdlbjExX2xvY2tfc2ZjKGk5MTUsIGVuZ2luZSk7Cj4gICAJCX0KPiBAQCAtNjkyLDcg KzY5Myw3IEBAIHN0YXRpYyBpbnQgZ3RfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsIHVuc2lnbmVkIGludCBzdGFsbGVkX21hc2spCj4gICAJCXJldHVybiBlcnI7Cj4gICAKPiAg IAlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkKPiAtCQlpbnRlbF9lbmdpbmVfcmVz ZXQoZW5naW5lLCBzdGFsbGVkX21hc2sgJiBFTkdJTkVfTUFTSyhpZCkpOwo+ICsJCWludGVsX2Vu Z2luZV9yZXNldChlbmdpbmUsIHN0YWxsZWRfbWFzayAmIGVuZ2luZS0+bWFzayk7Cj4gICAKPiAg IAlpOTE1X2dlbV9yZXN0b3JlX2ZlbmNlcyhpOTE1KTsKPiAgIAo+IEBAIC0xMDU3LDcgKzEwNTgs NyBAQCB2b2lkIGk5MTVfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICBz dGF0aWMgaW5saW5lIGludCBpbnRlbF9ndF9yZXNldF9lbmdpbmUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsCj4gICAJCQkJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAg IHsKPiAtCXJldHVybiBpbnRlbF9ncHVfcmVzZXQoaTkxNSwgaW50ZWxfZW5naW5lX2ZsYWcoZW5n aW5lKSk7Cj4gKwlyZXR1cm4gaW50ZWxfZ3B1X3Jlc2V0KGk5MTUsIGVuZ2luZS0+bWFzayk7Cj4g ICB9Cj4gICAKPiAgIC8qKgo+IEBAIC0xMTkzLDcgKzExOTQsNyBAQCB2b2lkIGk5MTVfY2xlYXJf ZXJyb3JfcmVnaXN0ZXJzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAkJ CQkgICBJOTE1X1JFQUQoUklOR19GQVVMVF9SRUcoZW5naW5lKSkgJgo+ICAgCQkJCSAgIH5SSU5H X0ZBVUxUX1ZBTElEKTsKPiAgIAkJfQo+IC0JCVBPU1RJTkdfUkVBRChSSU5HX0ZBVUxUX1JFRyhk ZXZfcHJpdi0+ZW5naW5lW1JDU10pKTsKPiArCQlQT1NUSU5HX1JFQUQoUklOR19GQVVMVF9SRUco ZGV2X3ByaXYtPmVuZ2luZVtSQ1MwXSkpOwo+ICAgCX0KPiAgIH0KPiAgIAo+IEBAIC0xMjQxLDcg KzEyNDIsNyBAQCB2b2lkIGk5MTVfaGFuZGxlX2Vycm9yKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1LAo+ICAgCSAqLwo+ICAgCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1 KTsKPiAgIAo+IC0JZW5naW5lX21hc2sgJj0gSU5URUxfSU5GTyhpOTE1KS0+cmluZ19tYXNrOwo+ ICsJZW5naW5lX21hc2sgJj0gSU5URUxfSU5GTyhpOTE1KS0+ZW5naW5lX21hc2s7Cj4gICAKPiAg IAlpZiAoZmxhZ3MgJiBJOTE1X0VSUk9SX0NBUFRVUkUpIHsKPiAgIAkJaTkxNV9jYXB0dXJlX2Vy cm9yX3N0YXRlKGk5MTUsIGVuZ2luZV9tYXNrLCBtc2cpOwo+IEBAIC0xMjYwLDcgKzEyNjEsNyBA QCB2b2lkIGk5MTVfaGFuZGxlX2Vycm9yKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ ICAgCQkJCWNvbnRpbnVlOwo+ICAgCj4gICAJCQlpZiAoaTkxNV9yZXNldF9lbmdpbmUoZW5naW5l LCBtc2cpID09IDApCj4gLQkJCQllbmdpbmVfbWFzayAmPSB+aW50ZWxfZW5naW5lX2ZsYWcoZW5n aW5lKTsKPiArCQkJCWVuZ2luZV9tYXNrICY9IH5lbmdpbmUtPm1hc2s7Cj4gICAKPiAgIAkJCWNs ZWFyX2JpdChJOTE1X1JFU0VUX0VOR0lORSArIGVuZ2luZS0+aWQsCj4gICAJCQkJICAmZXJyb3It PmZsYWdzKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNl X2luZm8uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmMKPiBpbmRl eCA4NTVhNTA3NGFkNzcuLjJjMWI0NmNmZDZkMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGV2aWNlX2luZm8uYwo+IEBAIC03MzgsNyArNzM4LDcgQEAgdm9pZCBpbnRlbF9kZXZp Y2VfaW5mb19ydW50aW1lX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ICAgCQlydW50aW1lLT5udW1fc2NhbGVyc1tQSVBFX0NdID0gMTsKPiAgIAl9Cj4gICAKPiAtCUJV SUxEX0JVR19PTihJOTE1X05VTV9FTkdJTkVTID4gQklUU19QRVJfVFlQRShpbnRlbF9yaW5nX21h c2tfdCkpOwo+ICsJQlVJTERfQlVHX09OKEJJVFNfUEVSX1RZUEUoaW50ZWxfZW5naW5lX21hc2tf dCkgPCBJOTE1X05VTV9FTkdJTkVTKTsKPiAgIAo+ICAgCWlmIChJU19HRU4oZGV2X3ByaXYsIDEx KSkKPiAgIAkJZm9yX2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkKPiBAQCAtODg3LDcgKzg4Nyw3 IEBAIHZvaWQgaW50ZWxfZGV2aWNlX2luZm9faW5pdF9tbWlvKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiAgIAkJCWNvbnRpbnVlOwo+ICAgCj4gICAJCWlmICghKEJJVChpKSAm IFJVTlRJTUVfSU5GTyhkZXZfcHJpdiktPnZkYm94X2VuYWJsZSkpIHsKPiAtCQkJaW5mby0+cmlu Z19tYXNrICY9IH5FTkdJTkVfTUFTSyhfVkNTKGkpKTsKPiArCQkJaW5mby0+ZW5naW5lX21hc2sg Jj0gfkJJVChfVkNTKGkpKTsKPiAgIAkJCURSTV9ERUJVR19EUklWRVIoInZjcyV1IGZ1c2VkIG9m ZlxuIiwgaSk7Cj4gICAJCQljb250aW51ZTsKPiAgIAkJfQo+IEBAIC05MDYsNyArOTA2LDcgQEAg dm9pZCBpbnRlbF9kZXZpY2VfaW5mb19pbml0X21taW8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICAgCQkJY29udGludWU7Cj4gICAKPiAgIAkJaWYgKCEoQklUKGkpICYgUlVO VElNRV9JTkZPKGRldl9wcml2KS0+dmVib3hfZW5hYmxlKSkgewo+IC0JCQlpbmZvLT5yaW5nX21h c2sgJj0gfkVOR0lORV9NQVNLKF9WRUNTKGkpKTsKPiArCQkJaW5mby0+ZW5naW5lX21hc2sgJj0g fkJJVChfVkVDUyhpKSk7Cj4gICAJCQlEUk1fREVCVUdfRFJJVkVSKCJ2ZWNzJXUgZnVzZWQgb2Zm XG4iLCBpKTsKPiAgIAkJfQo+ICAgCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGV2aWNlX2luZm8uaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rldmlj ZV9pbmZvLmgKPiBpbmRleCBlOGI4NjYxZGY3NDYuLjA0N2QxMGJkZDQ1NSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5oCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uaAo+IEBAIC0xNTAsMTQgKzE1MCwxNCBA QCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyB7Cj4gICAJdTggZXVfbWFza1tHRU5fTUFYX1NMSUNFUyAq IEdFTl9NQVhfU1VCU0xJQ0VTXTsKPiAgIH07Cj4gICAKPiAtdHlwZWRlZiB1OCBpbnRlbF9yaW5n X21hc2tfdDsKPiArdHlwZWRlZiB1OCBpbnRlbF9lbmdpbmVfbWFza190Owo+ICAgCj4gICBzdHJ1 Y3QgaW50ZWxfZGV2aWNlX2luZm8gewo+ICAgCXUxNiBnZW5fbWFzazsKPiAgIAo+ICAgCXU4IGdl bjsKPiAgIAl1OCBndDsgLyogR1QgbnVtYmVyLCAwIGlmIHVuZGVmaW5lZCAqLwo+IC0JaW50ZWxf cmluZ19tYXNrX3QgcmluZ19tYXNrOyAvKiBSaW5ncyBzdXBwb3J0ZWQgYnkgdGhlIEhXICovCj4g KwlpbnRlbF9lbmdpbmVfbWFza190IGVuZ2luZV9tYXNrOyAvKiBFbmdpbmVzIHN1cHBvcnRlZCBi eSB0aGUgSFcgKi8KPiAgIAo+ICAgCWVudW0gaW50ZWxfcGxhdGZvcm0gcGxhdGZvcm07Cj4gICAJ dTMyIHBsYXRmb3JtX21hc2s7Cj4gQEAgLTIwMCw3ICsyMDAsNyBAQCBzdHJ1Y3QgaW50ZWxfcnVu dGltZV9pbmZvIHsKPiAgIAl1OCBudW1fc3ByaXRlc1tJOTE1X01BWF9QSVBFU107Cj4gICAJdTgg bnVtX3NjYWxlcnNbSTkxNV9NQVhfUElQRVNdOwo+ICAgCj4gLQl1OCBudW1fcmluZ3M7Cj4gKwl1 OCBudW1fZW5naW5lczsKPiAgIAo+ICAgCS8qIFNsaWNlL3N1YnNsaWNlL0VVIGluZm8gKi8KPiAg IAlzdHJ1Y3Qgc3NldV9kZXZfaW5mbyBzc2V1Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Vu Z2luZV9jcy5jCj4gaW5kZXggZjNmMTYxYzU2MjdiLi42MmEyYmJiYmNjNjQgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwo+IEBAIC05NCwyNCArOTQsMjQgQEAgc3Ry dWN0IGVuZ2luZV9pbmZvIHsKPiAgIH07Cj4gICAKPiAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZW5n aW5lX2luZm8gaW50ZWxfZW5naW5lc1tdID0gewo+IC0JW1JDU10gPSB7Cj4gLQkJLmh3X2lkID0g UkNTX0hXLAo+ICsJW1JDUzBdID0gewo+ICsJCS5od19pZCA9IFJDUzBfSFcsCj4gICAJCS5jbGFz cyA9IFJFTkRFUl9DTEFTUywKPiAgIAkJLmluc3RhbmNlID0gMCwKPiAgIAkJLm1taW9fYmFzZXMg PSB7Cj4gICAJCQl7IC5nZW4gPSAxLCAuYmFzZSA9IFJFTkRFUl9SSU5HX0JBU0UgfQo+ICAgCQl9 LAo+ICAgCX0sCj4gLQlbQkNTXSA9IHsKPiAtCQkuaHdfaWQgPSBCQ1NfSFcsCj4gKwlbQkNTMF0g PSB7Cj4gKwkJLmh3X2lkID0gQkNTMF9IVywKPiAgIAkJLmNsYXNzID0gQ09QWV9FTkdJTkVfQ0xB U1MsCj4gICAJCS5pbnN0YW5jZSA9IDAsCj4gICAJCS5tbWlvX2Jhc2VzID0gewo+ICAgCQkJeyAu Z2VuID0gNiwgLmJhc2UgPSBCTFRfUklOR19CQVNFIH0KPiAgIAkJfSwKPiAgIAl9LAo+IC0JW1ZD U10gPSB7Cj4gLQkJLmh3X2lkID0gVkNTX0hXLAo+ICsJW1ZDUzBdID0gewo+ICsJCS5od19pZCA9 IFZDUzBfSFcsCj4gICAJCS5jbGFzcyA9IFZJREVPX0RFQ09ERV9DTEFTUywKPiAgIAkJLmluc3Rh bmNlID0gMCwKPiAgIAkJLm1taW9fYmFzZXMgPSB7Cj4gQEAgLTEyMCw4ICsxMjAsOCBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IGVuZ2luZV9pbmZvIGludGVsX2VuZ2luZXNbXSA9IHsKPiAgIAkJCXsg LmdlbiA9IDQsIC5iYXNlID0gQlNEX1JJTkdfQkFTRSB9Cj4gICAJCX0sCj4gICAJfSwKPiAtCVtW Q1MyXSA9IHsKPiAtCQkuaHdfaWQgPSBWQ1MyX0hXLAo+ICsJW1ZDUzFdID0gewo+ICsJCS5od19p ZCA9IFZDUzFfSFcsCj4gICAJCS5jbGFzcyA9IFZJREVPX0RFQ09ERV9DTEFTUywKPiAgIAkJLmlu c3RhbmNlID0gMSwKPiAgIAkJLm1taW9fYmFzZXMgPSB7Cj4gQEAgLTEyOSwyNCArMTI5LDI0IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZW5naW5lX2luZm8gaW50ZWxfZW5naW5lc1tdID0gewo+ICAg CQkJeyAuZ2VuID0gOCwgLmJhc2UgPSBHRU44X0JTRDJfUklOR19CQVNFIH0KPiAgIAkJfSwKPiAg IAl9LAo+IC0JW1ZDUzNdID0gewo+IC0JCS5od19pZCA9IFZDUzNfSFcsCj4gKwlbVkNTMl0gPSB7 Cj4gKwkJLmh3X2lkID0gVkNTMl9IVywKPiAgIAkJLmNsYXNzID0gVklERU9fREVDT0RFX0NMQVNT LAo+ICAgCQkuaW5zdGFuY2UgPSAyLAo+ICAgCQkubW1pb19iYXNlcyA9IHsKPiAgIAkJCXsgLmdl biA9IDExLCAuYmFzZSA9IEdFTjExX0JTRDNfUklOR19CQVNFIH0KPiAgIAkJfSwKPiAgIAl9LAo+ IC0JW1ZDUzRdID0gewo+IC0JCS5od19pZCA9IFZDUzRfSFcsCj4gKwlbVkNTM10gPSB7Cj4gKwkJ Lmh3X2lkID0gVkNTM19IVywKPiAgIAkJLmNsYXNzID0gVklERU9fREVDT0RFX0NMQVNTLAo+ICAg CQkuaW5zdGFuY2UgPSAzLAo+ICAgCQkubW1pb19iYXNlcyA9IHsKPiAgIAkJCXsgLmdlbiA9IDEx LCAuYmFzZSA9IEdFTjExX0JTRDRfUklOR19CQVNFIH0KPiAgIAkJfSwKPiAgIAl9LAo+IC0JW1ZF Q1NdID0gewo+IC0JCS5od19pZCA9IFZFQ1NfSFcsCj4gKwlbVkVDUzBdID0gewo+ICsJCS5od19p ZCA9IFZFQ1MwX0hXLAo+ICAgCQkuY2xhc3MgPSBWSURFT19FTkhBTkNFTUVOVF9DTEFTUywKPiAg IAkJLmluc3RhbmNlID0gMCwKPiAgIAkJLm1taW9fYmFzZXMgPSB7Cj4gQEAgLTE1NCw4ICsxNTQs OCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGVuZ2luZV9pbmZvIGludGVsX2VuZ2luZXNbXSA9IHsK PiAgIAkJCXsgLmdlbiA9IDcsIC5iYXNlID0gVkVCT1hfUklOR19CQVNFIH0KPiAgIAkJfSwKPiAg IAl9LAo+IC0JW1ZFQ1MyXSA9IHsKPiAtCQkuaHdfaWQgPSBWRUNTMl9IVywKPiArCVtWRUNTMV0g PSB7Cj4gKwkJLmh3X2lkID0gVkVDUzFfSFcsCj4gICAJCS5jbGFzcyA9IFZJREVPX0VOSEFOQ0VN RU5UX0NMQVNTLAo+ICAgCQkuaW5zdGFuY2UgPSAxLAo+ICAgCQkubW1pb19iYXNlcyA9IHsKPiBA QCAtMzA0LDcgKzMwNCwxMCBAQCBpbnRlbF9lbmdpbmVfc2V0dXAoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ICAgCWlmICghZW5naW5lKQo+ICAgCQlyZXR1cm4gLUVOT01FTTsK PiAgIAo+ICsJQlVJTERfQlVHX09OKEJJVFNfUEVSX1RZUEUoZW5naW5lLT5tYXNrKSA8IEk5MTVf TlVNX0VOR0lORVMpOwo+ICsKPiAgIAllbmdpbmUtPmlkID0gaWQ7Cj4gKwllbmdpbmUtPm1hc2sg PSBCSVQoaWQpOwo+ICAgCWVuZ2luZS0+aTkxNSA9IGRldl9wcml2Owo+ICAgCV9fc3ByaW50X2Vu Z2luZV9uYW1lKGVuZ2luZS0+bmFtZSwgaW5mbyk7Cj4gICAJZW5naW5lLT5od19pZCA9IGVuZ2lu ZS0+Z3VjX2lkID0gaW5mby0+aHdfaWQ7Cj4gQEAgLTM0NSwxNSArMzQ4LDE1IEBAIGludGVsX2Vu Z2luZV9zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICBpbnQgaW50 ZWxfZW5naW5lc19pbml0X21taW8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ICAgewo+ICAgCXN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyAqZGV2aWNlX2luZm8gPSBta3dyaXRl X2RldmljZV9pbmZvKGRldl9wcml2KTsKPiAtCWNvbnN0IHVuc2lnbmVkIGludCByaW5nX21hc2sg PSBJTlRFTF9JTkZPKGRldl9wcml2KS0+cmluZ19tYXNrOwo+ICsJY29uc3QgdW5zaWduZWQgaW50 IGVuZ2luZV9tYXNrID0gSU5URUxfSU5GTyhkZXZfcHJpdiktPmVuZ2luZV9tYXNrOwo+ICAgCXN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiAgIAllbnVtIGludGVsX2VuZ2luZV9pZCBp ZDsKPiAgIAl1bnNpZ25lZCBpbnQgbWFzayA9IDA7Cj4gICAJdW5zaWduZWQgaW50IGk7Cj4gICAJ aW50IGVycjsKPiAgIAo+IC0JV0FSTl9PTihyaW5nX21hc2sgPT0gMCk7Cj4gLQlXQVJOX09OKHJp bmdfbWFzayAmCj4gKwlXQVJOX09OKGVuZ2luZV9tYXNrID09IDApOwo+ICsJV0FSTl9PTihlbmdp bmVfbWFzayAmCj4gICAJCUdFTk1BU0soQklUU19QRVJfVFlQRShtYXNrKSAtIDEsIEk5MTVfTlVN X0VOR0lORVMpKTsKPiAgIAo+ICAgCWlmIChpOTE1X2luamVjdF9sb2FkX2ZhaWx1cmUoKSkKPiBA QCAtMzY3LDcgKzM3MCw3IEBAIGludCBpbnRlbF9lbmdpbmVzX2luaXRfbW1pbyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJCWlmIChlcnIpCj4gICAJCQlnb3RvIGNsZWFu dXA7Cj4gICAKPiAtCQltYXNrIHw9IEVOR0lORV9NQVNLKGkpOwo+ICsJCW1hc2sgfD0gQklUKGkp Owo+ICAgCX0KPiAgIAo+ICAgCS8qCj4gQEAgLTM3NSwxNiArMzc4LDE2IEBAIGludCBpbnRlbF9l bmdpbmVzX2luaXRfbW1pbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJ ICogYXJlIGFkZGVkIHRvIHRoZSBkcml2ZXIgYnkgYSB3YXJuaW5nIGFuZCBkaXNhYmxpbmcgdGhl IGZvcmdvdHRlbgo+ICAgCSAqIGVuZ2luZXMuCj4gICAJICovCj4gLQlpZiAoV0FSTl9PTihtYXNr ICE9IHJpbmdfbWFzaykpCj4gLQkJZGV2aWNlX2luZm8tPnJpbmdfbWFzayA9IG1hc2s7Cj4gKwlp ZiAoV0FSTl9PTihtYXNrICE9IGVuZ2luZV9tYXNrKSkKPiArCQlkZXZpY2VfaW5mby0+ZW5naW5l X21hc2sgPSBtYXNrOwo+ICAgCj4gICAJLyogV2UgYWx3YXlzIHByZXN1bWUgd2UgaGF2ZSBhdCBs ZWFzdCBSQ1MgYXZhaWxhYmxlIGZvciBsYXRlciBwcm9iaW5nICovCj4gLQlpZiAoV0FSTl9PTigh SEFTX0VOR0lORShkZXZfcHJpdiwgUkNTKSkpIHsKPiArCWlmIChXQVJOX09OKCFIQVNfRU5HSU5F KGRldl9wcml2LCBSQ1MwKSkpIHsKPiAgIAkJZXJyID0gLUVOT0RFVjsKPiAgIAkJZ290byBjbGVh bnVwOwo+ICAgCX0KPiAgIAo+IC0JUlVOVElNRV9JTkZPKGRldl9wcml2KS0+bnVtX3JpbmdzID0g aHdlaWdodDMyKG1hc2spOwo+ICsJUlVOVElNRV9JTkZPKGRldl9wcml2KS0+bnVtX2VuZ2luZXMg PSBod2VpZ2h0MzIobWFzayk7Cj4gICAKPiAgIAlpOTE1X2NoZWNrX2FuZF9jbGVhcl9mYXVsdHMo ZGV2X3ByaXYpOwo+ICAgCj4gQEAgLTk1NCw3ICs5NTcsNyBAQCB2b2lkIGludGVsX2VuZ2luZV9n ZXRfaW5zdGRvbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAgCWRlZmF1bHQ6 Cj4gICAJCWluc3Rkb25lLT5pbnN0ZG9uZSA9IEk5MTVfUkVBRChSSU5HX0lOU1RET05FKG1taW9f YmFzZSkpOwo+ICAgCj4gLQkJaWYgKGVuZ2luZS0+aWQgIT0gUkNTKQo+ICsJCWlmIChlbmdpbmUt PmlkICE9IFJDUzApCj4gICAJCQlicmVhazsKPiAgIAo+ICAgCQlpbnN0ZG9uZS0+c2xpY2VfY29t bW9uID0gSTkxNV9SRUFEKEdFTjdfU0NfSU5TVERPTkUpOwo+IEBAIC05NzAsNyArOTczLDcgQEAg dm9pZCBpbnRlbF9lbmdpbmVfZ2V0X2luc3Rkb25lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSwKPiAgIAljYXNlIDc6Cj4gICAJCWluc3Rkb25lLT5pbnN0ZG9uZSA9IEk5MTVfUkVBRChS SU5HX0lOU1RET05FKG1taW9fYmFzZSkpOwo+ICAgCj4gLQkJaWYgKGVuZ2luZS0+aWQgIT0gUkNT KQo+ICsJCWlmIChlbmdpbmUtPmlkICE9IFJDUzApCj4gICAJCQlicmVhazsKPiAgIAo+ICAgCQlp bnN0ZG9uZS0+c2xpY2VfY29tbW9uID0gSTkxNV9SRUFEKEdFTjdfU0NfSU5TVERPTkUpOwo+IEBA IC05ODMsNyArOTg2LDcgQEAgdm9pZCBpbnRlbF9lbmdpbmVfZ2V0X2luc3Rkb25lKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAljYXNlIDQ6Cj4gICAJCWluc3Rkb25lLT5pbnN0 ZG9uZSA9IEk5MTVfUkVBRChSSU5HX0lOU1RET05FKG1taW9fYmFzZSkpOwo+ICAgCj4gLQkJaWYg KGVuZ2luZS0+aWQgPT0gUkNTKQo+ICsJCWlmIChlbmdpbmUtPmlkID09IFJDUzApCj4gICAJCQkv KiBIQUNLOiBVc2luZyB0aGUgd3Jvbmcgc3RydWN0IG1lbWJlciAqLwo+ICAgCQkJaW5zdGRvbmUt PnNsaWNlX2NvbW1vbiA9IEk5MTVfUkVBRChHRU40X0lOU1RET05FMSk7Cj4gICAJCWJyZWFrOwo+ IEBAIC0xMzU1LDcgKzEzNTgsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lbmdpbmVfcHJpbnRfcmVn aXN0ZXJzKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAkJJmVuZ2lu ZS0+ZXhlY2xpc3RzOwo+ICAgCXU2NCBhZGRyOwo+ICAgCj4gLQlpZiAoZW5naW5lLT5pZCA9PSBS Q1MgJiYgSVNfR0VOX1JBTkdFKGRldl9wcml2LCA0LCA3KSkKPiArCWlmIChlbmdpbmUtPmlkID09 IFJDUzAgJiYgSVNfR0VOX1JBTkdFKGRldl9wcml2LCA0LCA3KSkKPiAgIAkJZHJtX3ByaW50Ziht LCAiXHRDQ0lEOiAweCUwOHhcbiIsIEk5MTVfUkVBRChDQ0lEKSk7Cj4gICAJZHJtX3ByaW50Ziht LCAiXHRSSU5HX1NUQVJUOiAweCUwOHhcbiIsCj4gICAJCSAgIEk5MTVfUkVBRChSSU5HX1NUQVJU KGVuZ2luZS0+bW1pb19iYXNlKSkpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ndWNfYWRzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfYWRzLmMK PiBpbmRleCBmMGRiNjI4ODdmNTAuLmM1MWQ1NThmZDQzMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfYWRzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ndWNfYWRzLmMKPiBAQCAtMTIyLDcgKzEyMiw3IEBAIGludCBpbnRlbF9ndWNfYWRz X2NyZWF0ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4gICAJICogYmVjYXVzZSBvdXIgR3VDIHNo YXJlZCBkYXRhIGlzIHRoZXJlLgo+ICAgCSAqLwo+ICAgCWtlcm5lbF9jdHhfdm1hID0gdG9faW50 ZWxfY29udGV4dChkZXZfcHJpdi0+a2VybmVsX2NvbnRleHQsCj4gLQkJCQkJICBkZXZfcHJpdi0+ ZW5naW5lW1JDU10pLT5zdGF0ZTsKPiArCQkJCQkgIGRldl9wcml2LT5lbmdpbmVbUkNTMF0pLT5z dGF0ZTsKPiAgIAlibG9iLT5hZHMuZ29sZGVuX2NvbnRleHRfbHJjYSA9Cj4gICAJCWludGVsX2d1 Y19nZ3R0X29mZnNldChndWMsIGtlcm5lbF9jdHhfdm1hKSArIHNraXBwZWRfb2Zmc2V0Owo+ICAg Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9u LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfc3VibWlzc2lvbi5jCj4gaW5kZXgg NTZiYTJmY2JhYmU2Li5lM2FmYzkxZjBlN2IgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKPiBAQCAtNTc1LDcgKzU3NSw3IEBAIHN0YXRpYyB2b2lk IGluamVjdF9wcmVlbXB0X2NvbnRleHQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ICAgCQl1 MzIgKmNzOwo+ICAgCj4gICAJCWNzID0gY2UtPnJpbmctPnZhZGRyOwo+IC0JCWlmIChlbmdpbmUt PmlkID09IFJDUykgewo+ICsJCWlmIChlbmdpbmUtPmNsYXNzID09IFJFTkRFUl9DTEFTUykgewo+ ICAgCQkJY3MgPSBnZW44X2VtaXRfZ2d0dF93cml0ZV9yY3MoY3MsCj4gICAJCQkJCQkgICAgICBH VUNfUFJFRU1QVF9GSU5JU0hFRCwKPiAgIAkJCQkJCSAgICAgIGFkZHIsCj4gQEAgLTEwMzAsNyAr MTAzMCw3IEBAIHN0YXRpYyBpbnQgZ3VjX2NsaWVudHNfY3JlYXRlKHN0cnVjdCBpbnRlbF9ndWMg Kmd1YykKPiAgIAlHRU1fQlVHX09OKGd1Yy0+cHJlZW1wdF9jbGllbnQpOwo+ICAgCj4gICAJY2xp ZW50ID0gZ3VjX2NsaWVudF9hbGxvYyhkZXZfcHJpdiwKPiAtCQkJCSAgSU5URUxfSU5GTyhkZXZf cHJpdiktPnJpbmdfbWFzaywKPiArCQkJCSAgSU5URUxfSU5GTyhkZXZfcHJpdiktPmVuZ2luZV9t YXNrLAo+ICAgCQkJCSAgR1VDX0NMSUVOVF9QUklPUklUWV9LTURfTk9STUFMLAo+ICAgCQkJCSAg ZGV2X3ByaXYtPmtlcm5lbF9jb250ZXh0KTsKPiAgIAlpZiAoSVNfRVJSKGNsaWVudCkpIHsKPiBA QCAtMTA0MSw3ICsxMDQxLDcgQEAgc3RhdGljIGludCBndWNfY2xpZW50c19jcmVhdGUoc3RydWN0 IGludGVsX2d1YyAqZ3VjKQo+ICAgCj4gICAJaWYgKGRldl9wcml2LT5wcmVlbXB0X2NvbnRleHQp IHsKPiAgIAkJY2xpZW50ID0gZ3VjX2NsaWVudF9hbGxvYyhkZXZfcHJpdiwKPiAtCQkJCQkgIElO VEVMX0lORk8oZGV2X3ByaXYpLT5yaW5nX21hc2ssCj4gKwkJCQkJICBJTlRFTF9JTkZPKGRldl9w cml2KS0+ZW5naW5lX21hc2ssCj4gICAJCQkJCSAgR1VDX0NMSUVOVF9QUklPUklUWV9LTURfSElH SCwKPiAgIAkJCQkJICBkZXZfcHJpdi0+cHJlZW1wdF9jb250ZXh0KTsKPiAgIAkJaWYgKElTX0VS UihjbGllbnQpKSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hh bmdjaGVjay5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGFuZ2NoZWNrLmMKPiBpbmRl eCBmMWQ4ZGZjNTgwNDkuLjU3ZWQ0OWRjMTljNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9oYW5nY2hlY2suYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2hhbmdjaGVjay5jCj4gQEAgLTU2LDcgKzU2LDcgQEAgc3RhdGljIGJvb2wgc3VidW5pdHNf c3R1Y2soc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCWludCBzbGljZTsKPiAg IAlpbnQgc3Vic2xpY2U7Cj4gICAKPiAtCWlmIChlbmdpbmUtPmlkICE9IFJDUykKPiArCWlmIChl bmdpbmUtPmlkICE9IFJDUzApCj4gICAJCXJldHVybiB0cnVlOwo+ICAgCj4gICAJaW50ZWxfZW5n aW5lX2dldF9pbnN0ZG9uZShlbmdpbmUsICZpbnN0ZG9uZSk7Cj4gQEAgLTEyMCw3ICsxMjAsNyBA QCBlbmdpbmVfc3R1Y2soc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1NjQgYWN0aGQp Cj4gICAJICovCj4gICAJdG1wID0gSTkxNV9SRUFEX0NUTChlbmdpbmUpOwo+ICAgCWlmICh0bXAg JiBSSU5HX1dBSVQpIHsKPiAtCQlpOTE1X2hhbmRsZV9lcnJvcihkZXZfcHJpdiwgQklUKGVuZ2lu ZS0+aWQpLCAwLAo+ICsJCWk5MTVfaGFuZGxlX2Vycm9yKGRldl9wcml2LCBlbmdpbmUtPm1hc2ss IDAsCj4gICAJCQkJICAic3R1Y2sgd2FpdCBvbiAlcyIsIGVuZ2luZS0+bmFtZSk7Cj4gICAJCUk5 MTVfV1JJVEVfQ1RMKGVuZ2luZSwgdG1wKTsKPiAgIAkJcmV0dXJuIEVOR0lORV9XQUlUX0tJQ0s7 Cj4gQEAgLTI4MiwxMyArMjgyLDEzIEBAIHN0YXRpYyB2b2lkIGk5MTVfaGFuZ2NoZWNrX2VsYXBz ZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ICAgCQloYW5nY2hlY2tfc3RvcmVfc2FtcGxl KGVuZ2luZSwgJmhjKTsKPiAgIAo+ICAgCQlpZiAoaGMuc3RhbGxlZCkgewo+IC0JCQlodW5nIHw9 IGludGVsX2VuZ2luZV9mbGFnKGVuZ2luZSk7Cj4gKwkJCWh1bmcgfD0gZW5naW5lLT5tYXNrOwo+ ICAgCQkJaWYgKGhjLmFjdGlvbiAhPSBFTkdJTkVfREVBRCkKPiAtCQkJCXN0dWNrIHw9IGludGVs X2VuZ2luZV9mbGFnKGVuZ2luZSk7Cj4gKwkJCQlzdHVjayB8PSBlbmdpbmUtPm1hc2s7Cj4gICAJ CX0KPiAgIAo+ICAgCQlpZiAoaGMud2VkZ2VkKQo+IC0JCQl3ZWRnZWQgfD0gaW50ZWxfZW5naW5l X2ZsYWcoZW5naW5lKTsKPiArCQkJd2VkZ2VkIHw9IGVuZ2luZS0+bWFzazsKPiAgIAl9Cj4gICAK PiAgIAlpZiAoR0VNX1NIT1dfREVCVUcoKSAmJiAoaHVuZyB8IHN0dWNrKSkgewo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5jCj4gaW5kZXggNTc4YzhjOThjNzE4Li42ZWM2YzRlMTc1YTIgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IEBAIC0xNzc3LDcgKzE3NzcsNyBAQCBzdGF0aWMg aW50IGludGVsX2luaXRfd29ya2Fyb3VuZF9iYihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCj4gICAJdW5zaWduZWQgaW50IGk7Cj4gICAJaW50IHJldDsKPiAgIAo+IC0JaWYgKEdFTV9E RUJVR19XQVJOX09OKGVuZ2luZS0+aWQgIT0gUkNTKSkKPiArCWlmIChHRU1fREVCVUdfV0FSTl9P TihlbmdpbmUtPmlkICE9IFJDUzApKQo+ICAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgIAo+ICAgCXN3 aXRjaCAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkpIHsKPiBAQCAtMjM3NiwxMSArMjM3NiwxMSBA QCBsb2dpY2FsX3JpbmdfZGVmYXVsdF9pcnFzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKPiAgIAo+ICAgCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA8IDExKSB7Cj4gICAJCWNv bnN0IHU4IGlycV9zaGlmdHNbXSA9IHsKPiAtCQkJW1JDU10gID0gR0VOOF9SQ1NfSVJRX1NISUZU LAo+IC0JCQlbQkNTXSAgPSBHRU44X0JDU19JUlFfU0hJRlQsCj4gLQkJCVtWQ1NdICA9IEdFTjhf VkNTMV9JUlFfU0hJRlQsCj4gLQkJCVtWQ1MyXSA9IEdFTjhfVkNTMl9JUlFfU0hJRlQsCj4gLQkJ CVtWRUNTXSA9IEdFTjhfVkVDU19JUlFfU0hJRlQsCj4gKwkJCVtSQ1MwXSAgPSBHRU44X1JDU19J UlFfU0hJRlQsCj4gKwkJCVtCQ1MwXSAgPSBHRU44X0JDU19JUlFfU0hJRlQsCj4gKwkJCVtWQ1Mw XSAgPSBHRU44X1ZDUzBfSVJRX1NISUZULAo+ICsJCQlbVkNTMV0gID0gR0VOOF9WQ1MxX0lSUV9T SElGVCwKPiArCQkJW1ZFQ1MwXSA9IEdFTjhfVkVDU19JUlFfU0hJRlQsCj4gICAJCX07Cj4gICAK PiAgIAkJc2hpZnQgPSBpcnFfc2hpZnRzW2VuZ2luZS0+aWRdOwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9tb2NzLmMKPiBpbmRleCAzMzFlN2E2NzhmYjcuLjgwZGNjMDgyMjJkMCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9tb2NzLmMKPiBAQCAtMjg4LDE3ICsyODgsMTcgQEAgc3RhdGljIGJvb2wg Z2V0X21vY3Nfc2V0dGluZ3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAg c3RhdGljIGk5MTVfcmVnX3QgbW9jc19yZWdpc3RlcihlbnVtIGludGVsX2VuZ2luZV9pZCBlbmdp bmVfaWQsIGludCBpbmRleCkKPiAgIHsKPiAgIAlzd2l0Y2ggKGVuZ2luZV9pZCkgewo+IC0JY2Fz ZSBSQ1M6Cj4gKwljYXNlIFJDUzA6Cj4gICAJCXJldHVybiBHRU45X0dGWF9NT0NTKGluZGV4KTsK PiAtCWNhc2UgVkNTOgo+ICsJY2FzZSBWQ1MwOgo+ICAgCQlyZXR1cm4gR0VOOV9NRlgwX01PQ1Mo aW5kZXgpOwo+IC0JY2FzZSBCQ1M6Cj4gKwljYXNlIEJDUzA6Cj4gICAJCXJldHVybiBHRU45X0JM VF9NT0NTKGluZGV4KTsKPiAtCWNhc2UgVkVDUzoKPiArCWNhc2UgVkVDUzA6Cj4gICAJCXJldHVy biBHRU45X1ZFQk9YX01PQ1MoaW5kZXgpOwo+IC0JY2FzZSBWQ1MyOgo+ICsJY2FzZSBWQ1MxOgo+ ICAgCQlyZXR1cm4gR0VOOV9NRlgxX01PQ1MoaW5kZXgpOwo+IC0JY2FzZSBWQ1MzOgo+ICsJY2Fz ZSBWQ1MyOgo+ICAgCQlyZXR1cm4gR0VOMTFfTUZYMl9NT0NTKGluZGV4KTsKPiAgIAlkZWZhdWx0 Ogo+ICAgCQlNSVNTSU5HX0NBU0UoZW5naW5lX2lkKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf b3ZlcmxheS5jCj4gaW5kZXggYzBkZjFkYmIwMDY5Li5hODgyYjhkNDJiZDkgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jCj4gQEAgLTIzNiw3ICsyMzYsNyBAQCBzdGF0aWMg aW50IGludGVsX292ZXJsYXlfZG9fd2FpdF9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9vdmVybGF5ICpv dmVybGF5LAo+ICAgc3RhdGljIHN0cnVjdCBpOTE1X3JlcXVlc3QgKmFsbG9jX3JlcXVlc3Qoc3Ry dWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXkpCj4gICB7Cj4gICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gb3ZlcmxheS0+aTkxNTsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSA9IGRldl9wcml2LT5lbmdpbmVbUkNTXTsKPiArCXN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSA9IGRldl9wcml2LT5lbmdpbmVbUkNTMF07Cj4gICAKPiAgIAlyZXR1cm4g aTkxNV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgZGV2X3ByaXYtPmtlcm5lbF9jb250ZXh0KTsKPiAg IH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gaW5kZXggMWI5NmIw OTYwYWRjLi4xZGQwYzk5Yjg5M2YgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmluZ2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5jCj4gQEAgLTU1MiwxNiArNTUyLDE3IEBAIHN0YXRpYyB2b2lkIHNldF9od3NwKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyIG9mZnNldCkKPiAgIAkJICovCj4gICAJ CWRlZmF1bHQ6Cj4gICAJCQlHRU1fQlVHX09OKGVuZ2luZS0+aWQpOwo+IC0JCWNhc2UgUkNTOgo+ ICsJCQkvKiBmYWxsdGhyb3VnaCAqLwo+ICsJCWNhc2UgUkNTMDoKPiAgIAkJCWh3c3AgPSBSRU5E RVJfSFdTX1BHQV9HRU43Owo+ICAgCQkJYnJlYWs7Cj4gLQkJY2FzZSBCQ1M6Cj4gKwkJY2FzZSBC Q1MwOgo+ICAgCQkJaHdzcCA9IEJMVF9IV1NfUEdBX0dFTjc7Cj4gICAJCQlicmVhazsKPiAtCQlj YXNlIFZDUzoKPiArCQljYXNlIFZDUzA6Cj4gICAJCQlod3NwID0gQlNEX0hXU19QR0FfR0VONzsK PiAgIAkJCWJyZWFrOwo+IC0JCWNhc2UgVkVDUzoKPiArCQljYXNlIFZFQ1MwOgo+ICAgCQkJaHdz cCA9IFZFQk9YX0hXU19QR0FfR0VONzsKPiAgIAkJCWJyZWFrOwo+ICAgCQl9Cj4gQEAgLTE2OTIs OCArMTY5Myw4IEBAIHN0YXRpYyBpbmxpbmUgaW50IG1pX3NldF9jb250ZXh0KHN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxLCB1MzIgZmxhZ3MpCj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUgPSBycS0+aTkxNTsKPiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBycS0+ ZW5naW5lOwo+ICAgCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+IC0JY29uc3QgaW50IG51bV9y aW5ncyA9Cj4gLQkJSVNfSFNXX0dUMShpOTE1KSA/IFJVTlRJTUVfSU5GTyhpOTE1KS0+bnVtX3Jp bmdzIC0gMSA6IDA7Cj4gKwljb25zdCBpbnQgbnVtX2VuZ2luZXMgPQo+ICsJCUlTX0hTV19HVDEo aTkxNSkgPyBSVU5USU1FX0lORk8oaTkxNSktPm51bV9lbmdpbmVzIC0gMSA6IDA7Cj4gICAJYm9v bCBmb3JjZV9yZXN0b3JlID0gZmFsc2U7Cj4gICAJaW50IGxlbjsKPiAgIAl1MzIgKmNzOwo+IEBA IC0xNzA3LDcgKzE3MDgsNyBAQCBzdGF0aWMgaW5saW5lIGludCBtaV9zZXRfY29udGV4dChzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdTMyIGZsYWdzKQo+ICAgCj4gICAJbGVuID0gNDsKPiAgIAlp ZiAoSVNfR0VOKGk5MTUsIDcpKQo+IC0JCWxlbiArPSAyICsgKG51bV9yaW5ncyA/IDQqbnVtX3Jp bmdzICsgNiA6IDApOwo+ICsJCWxlbiArPSAyICsgKG51bV9lbmdpbmVzID8gNCAqIG51bV9lbmdp bmVzICsgNiA6IDApOwo+ICAgCWlmIChmbGFncyAmIE1JX0ZPUkNFX1JFU1RPUkUpIHsKPiAgIAkJ R0VNX0JVR19PTihmbGFncyAmIE1JX1JFU1RPUkVfSU5ISUJJVCk7Cj4gICAJCWZsYWdzICY9IH5N SV9GT1JDRV9SRVNUT1JFOwo+IEBAIC0xNzIyLDEwICsxNzIzLDEwIEBAIHN0YXRpYyBpbmxpbmUg aW50IG1pX3NldF9jb250ZXh0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1MzIgZmxhZ3MpCj4g ICAJLyogV2FQcm9ncmFtTWlBcmJPbk9mZkFyb3VuZE1pU2V0Q29udGV4dDppdmIsdmx2LGhzdyxi ZHcsY2h2ICovCj4gICAJaWYgKElTX0dFTihpOTE1LCA3KSkgewo+ICAgCQkqY3MrKyA9IE1JX0FS Ql9PTl9PRkYgfCBNSV9BUkJfRElTQUJMRTsKPiAtCQlpZiAobnVtX3JpbmdzKSB7Cj4gKwkJaWYg KG51bV9lbmdpbmVzKSB7Cj4gICAJCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpzaWduYWxsZXI7 Cj4gICAKPiAtCQkJKmNzKysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTShudW1fcmluZ3MpOwo+ICsJ CQkqY3MrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKG51bV9lbmdpbmVzKTsKPiAgIAkJCWZvcl9l YWNoX2VuZ2luZShzaWduYWxsZXIsIGk5MTUsIGlkKSB7Cj4gICAJCQkJaWYgKHNpZ25hbGxlciA9 PSBlbmdpbmUpCj4gICAJCQkJCWNvbnRpbnVlOwo+IEBAIC0xNzY4LDExICsxNzY5LDExIEBAIHN0 YXRpYyBpbmxpbmUgaW50IG1pX3NldF9jb250ZXh0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1 MzIgZmxhZ3MpCj4gICAJKmNzKysgPSBNSV9OT09QOwo+ICAgCj4gICAJaWYgKElTX0dFTihpOTE1 LCA3KSkgewo+IC0JCWlmIChudW1fcmluZ3MpIHsKPiArCQlpZiAobnVtX2VuZ2luZXMpIHsKPiAg IAkJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnNpZ25hbGxlcjsKPiAgIAkJCWk5MTVfcmVnX3Qg bGFzdF9yZWcgPSB7fTsgLyoga2VlcCBnY2MgcXVpZXQgKi8KPiAgIAo+IC0JCQkqY3MrKyA9IE1J X0xPQURfUkVHSVNURVJfSU1NKG51bV9yaW5ncyk7Cj4gKwkJCSpjcysrID0gTUlfTE9BRF9SRUdJ U1RFUl9JTU0obnVtX2VuZ2luZXMpOwo+ICAgCQkJZm9yX2VhY2hfZW5naW5lKHNpZ25hbGxlciwg aTkxNSwgaWQpIHsKPiAgIAkJCQlpZiAoc2lnbmFsbGVyID09IGVuZ2luZSkKPiAgIAkJCQkJY29u dGludWU7Cj4gQEAgLTE4NTAsNyArMTg1MSw3IEBAIHN0YXRpYyBpbnQgc3dpdGNoX2NvbnRleHQo c3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gICAJCSAqIGV4cGxhbmF0aW9uLgo+ICAgCQkgKi8K PiAgIAkJbG9vcHMgPSAxOwo+IC0JCWlmIChlbmdpbmUtPmlkID09IEJDUyAmJiBJU19WQUxMRVlW SUVXKGVuZ2luZS0+aTkxNSkpCj4gKwkJaWYgKGVuZ2luZS0+aWQgPT0gQkNTMCAmJiBJU19WQUxM RVlWSUVXKGVuZ2luZS0+aTkxNSkpCj4gICAJCQlsb29wcyA9IDMyOwo+ICAgCj4gICAJCWRvIHsK PiBAQCAtMTg1OSwxNSArMTg2MCwxNSBAQCBzdGF0aWMgaW50IHN3aXRjaF9jb250ZXh0KHN0cnVj dCBpOTE1X3JlcXVlc3QgKnJxKQo+ICAgCQkJCWdvdG8gZXJyOwo+ICAgCQl9IHdoaWxlICgtLWxv b3BzKTsKPiAgIAo+IC0JCWlmIChpbnRlbF9lbmdpbmVfZmxhZyhlbmdpbmUpICYgcHBndHQtPnBk X2RpcnR5X3JpbmdzKSB7Cj4gLQkJCXVud2luZF9tbSA9IGludGVsX2VuZ2luZV9mbGFnKGVuZ2lu ZSk7Cj4gLQkJCXBwZ3R0LT5wZF9kaXJ0eV9yaW5ncyAmPSB+dW53aW5kX21tOwo+ICsJCWlmIChw cGd0dC0+cGRfZGlydHlfZW5naW5lcyAmIGVuZ2luZS0+bWFzaykgewo+ICsJCQl1bndpbmRfbW0g PSBlbmdpbmUtPm1hc2s7Cj4gKwkJCXBwZ3R0LT5wZF9kaXJ0eV9lbmdpbmVzICY9IH51bndpbmRf bW07Cj4gICAJCQlod19mbGFncyA9IE1JX0ZPUkNFX1JFU1RPUkU7Cj4gICAJCX0KPiAgIAl9Cj4g ICAKPiAgIAlpZiAocnEtPmh3X2NvbnRleHQtPnN0YXRlKSB7Cj4gLQkJR0VNX0JVR19PTihlbmdp bmUtPmlkICE9IFJDUyk7Cj4gKwkJR0VNX0JVR19PTihlbmdpbmUtPmlkICE9IFJDUzApOwo+ICAg Cj4gICAJCS8qCj4gICAJCSAqIFRoZSBrZXJuZWwgY29udGV4dChzKSBpcyB0cmVhdGVkIGFzIHB1 cmUgc2NyYXRjaCBhbmQgaXMgbm90Cj4gQEAgLTE5MjcsNyArMTkyOCw3IEBAIHN0YXRpYyBpbnQg c3dpdGNoX2NvbnRleHQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gICAKPiAgIGVycl9tbToK PiAgIAlpZiAodW53aW5kX21tKQo+IC0JCXBwZ3R0LT5wZF9kaXJ0eV9yaW5ncyB8PSB1bndpbmRf bW07Cj4gKwkJcHBndHQtPnBkX2RpcnR5X2VuZ2luZXMgfD0gdW53aW5kX21tOwo+ICAgZXJyOgo+ ICAgCXJldHVybiByZXQ7Cj4gICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZm ZXIuaAo+IGluZGV4IDEyZTc5ODI4ZGJkNS4uMThlODY1ZmY2NjM3IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+IEBAIC0xMCwxMiArMTAsMTIgQEAKPiAgICNp bmNsdWRlIDxsaW51eC9zZXFsb2NrLmg+Cj4gICAKPiAgICNpbmNsdWRlICJpOTE1X2dlbV9iYXRj aF9wb29sLmgiCj4gLQo+IC0jaW5jbHVkZSAiaTkxNV9yZWcuaCIKPiAgICNpbmNsdWRlICJpOTE1 X3BtdS5oIgo+ICsjaW5jbHVkZSAiaTkxNV9yZWcuaCIKPiAgICNpbmNsdWRlICJpOTE1X3JlcXVl c3QuaCIKPiAgICNpbmNsdWRlICJpOTE1X3NlbGZ0ZXN0LmgiCj4gICAjaW5jbHVkZSAiaTkxNV90 aW1lbGluZS5oIgo+ICsjaW5jbHVkZSAiaW50ZWxfZGV2aWNlX2luZm8uaCIKPiAgICNpbmNsdWRl ICJpbnRlbF9ncHVfY29tbWFuZHMuaCIKPiAgICNpbmNsdWRlICJpbnRlbF93b3JrYXJvdW5kcy5o Igo+ICAgCj4gQEAgLTE3NSwxNiArMTc1LDE2IEBAIHN0cnVjdCBpOTE1X3JlcXVlc3Q7Cj4gICAg KiBLZWVwIGluc3RhbmNlcyBvZiB0aGUgc2FtZSB0eXBlIGVuZ2luZSB0b2dldGhlci4KPiAgICAq Lwo+ICAgZW51bSBpbnRlbF9lbmdpbmVfaWQgewo+IC0JUkNTID0gMCwKPiAtCUJDUywKPiAtCVZD UywKPiArCVJDUzAgPSAwLAo+ICsJQkNTMCwKPiArCVZDUzAsCj4gKwlWQ1MxLAo+ICAgCVZDUzIs Cj4gICAJVkNTMywKPiAtCVZDUzQsCj4gLSNkZWZpbmUgX1ZDUyhuKSAoVkNTICsgKG4pKQo+IC0J VkVDUywKPiAtCVZFQ1MyCj4gLSNkZWZpbmUgX1ZFQ1MobikgKFZFQ1MgKyAobikpCj4gKyNkZWZp bmUgX1ZDUyhuKSAoVkNTMCArIChuKSkKPiArCVZFQ1MwLAo+ICsJVkVDUzEKPiArI2RlZmluZSBf VkVDUyhuKSAoVkVDUzAgKyAobikpCj4gICB9Owo+ICAgCj4gICBzdHJ1Y3Qgc3RfcHJlZW1wdF9o YW5nIHsKPiBAQCAtMzM0LDYgKzMzNCw3IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mgewo+ICAg CWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+ICAgCXVuc2lnbmVkIGludCBod19pZDsKPiAgIAl1 bnNpZ25lZCBpbnQgZ3VjX2lkOwo+ICsJaW50ZWxfZW5naW5lX21hc2tfdCBtYXNrOwo+ICAgCj4g ICAJdTggdWFiaV9jbGFzczsKPiAgIAo+IEBAIC02NjcsMTIgKzY2OCw2IEBAIGV4ZWNsaXN0c19w b3J0X2NvbXBsZXRlKHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xp c3RzLAo+ICAgCXJldHVybiBwb3J0Owo+ICAgfQo+ICAgCj4gLXN0YXRpYyBpbmxpbmUgdW5zaWdu ZWQgaW50Cj4gLWludGVsX2VuZ2luZV9mbGFnKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKPiAtewo+IC0JcmV0dXJuIEJJVChlbmdpbmUtPmlkKTsKPiAtfQo+IC0KPiAgIHN0 YXRpYyBpbmxpbmUgdTMyCj4gICBpbnRlbF9yZWFkX3N0YXR1c19wYWdlKGNvbnN0IHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgaW50IHJlZykKPiAgIHsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd29ya2Fyb3VuZHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3dvcmthcm91bmRzLmMKPiBpbmRleCA4OWI0MDA3ZDUyMDAuLjJmZjU0OTUwODkx ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93b3JrYXJvdW5kcy5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd29ya2Fyb3VuZHMuYwo+IEBAIC0x MDU1LDcgKzEwNTUsNyBAQCB2b2lkIGludGVsX2VuZ2luZV9pbml0X3doaXRlbGlzdChzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUgPSBlbmdpbmUtPmk5MTU7Cj4gICAJc3RydWN0IGk5MTVfd2FfbGlzdCAqdyA9ICZlbmdpbmUt PndoaXRlbGlzdDsKPiAgIAo+IC0JR0VNX0JVR19PTihlbmdpbmUtPmlkICE9IFJDUyk7Cj4gKwlH RU1fQlVHX09OKGVuZ2luZS0+aWQgIT0gUkNTMCk7Cj4gICAKPiAgIAl3YV9pbml0X3N0YXJ0KHcs ICJ3aGl0ZWxpc3QiKTsKPiAgIAo+IEBAIC0xMjI4LDcgKzEyMjgsNyBAQCBlbmdpbmVfaW5pdF93 b3JrYXJvdW5kcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHN0cnVjdCBpOTE1X3dh X2xpc3QgKndhbAo+ICAgCWlmIChJOTE1X1NFTEZURVNUX09OTFkoSU5URUxfR0VOKGVuZ2luZS0+ aTkxNSkgPCA4KSkKPiAgIAkJcmV0dXJuOwo+ICAgCj4gLQlpZiAoZW5naW5lLT5pZCA9PSBSQ1Mp Cj4gKwlpZiAoZW5naW5lLT5pZCA9PSBSQ1MwKQo+ICAgCQlyY3NfZW5naW5lX3dhX2luaXQoZW5n aW5lLCB3YWwpOwo+ICAgCWVsc2UKPiAgIAkJeGNzX2VuZ2luZV93YV9pbml0KGVuZ2luZSwgd2Fs KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2h1Z2VfcGFn ZXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9odWdlX3BhZ2VzLmMKPiBpbmRl eCA0YjlkZWQ0Y2EwZjUuLjFlNjZjZmY5ODVmOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYwo+IEBAIC0xNTM1LDcgKzE1MzUsNyBAQCBzdGF0aWMg aW50IGlndF9wcGd0dF9waW5fdXBkYXRlKHZvaWQgKmFyZykKPiAgIAkgKiBsYW5kIGluIHRoZSBu b3cgc3RhbGUgMk0gcGFnZS4KPiAgIAkgKi8KPiAgIAo+IC0JZXJyID0gZ3B1X3dyaXRlKHZtYSwg Y3R4LCBkZXZfcHJpdi0+ZW5naW5lW1JDU10sIDAsIDB4ZGVhZGJlYWYpOwo+ICsJZXJyID0gZ3B1 X3dyaXRlKHZtYSwgY3R4LCBkZXZfcHJpdi0+ZW5naW5lW1JDUzBdLCAwLCAweGRlYWRiZWFmKTsK PiAgIAlpZiAoZXJyKQo+ICAgCQlnb3RvIG91dF91bnBpbjsKPiAgIAo+IEBAIC0xNjUzLDcgKzE2 NTMsNyBAQCBzdGF0aWMgaW50IGlndF9zaHJpbmtfdGhwKHZvaWQgKmFyZykKPiAgIAlpZiAoZXJy KQo+ICAgCQlnb3RvIG91dF91bnBpbjsKPiAgIAo+IC0JZXJyID0gZ3B1X3dyaXRlKHZtYSwgY3R4 LCBpOTE1LT5lbmdpbmVbUkNTXSwgMCwgMHhkZWFkYmVhZik7Cj4gKwllcnIgPSBncHVfd3JpdGUo dm1hLCBjdHgsIGk5MTUtPmVuZ2luZVtSQ1MwXSwgMCwgMHhkZWFkYmVhZik7Cj4gICAJaWYgKGVy cikKPiAgIAkJZ290byBvdXRfdW5waW47Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvaGVyZW5jeS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvaGVyZW5jeS5jCj4gaW5kZXggOWMxNmFmZjg3MDI4 Li5lNDM2MzBiNDBmY2UgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL2k5MTVfZ2VtX2NvaGVyZW5jeS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL2k5MTVfZ2VtX2NvaGVyZW5jeS5jCj4gQEAgLTIwMiw3ICsyMDIsNyBAQCBzdGF0aWMg aW50IGdwdV9zZXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgIAlpZiAoSVNf RVJSKHZtYSkpCj4gICAJCXJldHVybiBQVFJfRVJSKHZtYSk7Cj4gICAKPiAtCXJxID0gaTkxNV9y ZXF1ZXN0X2FsbG9jKGk5MTUtPmVuZ2luZVtSQ1NdLCBpOTE1LT5rZXJuZWxfY29udGV4dCk7Cj4g KwlycSA9IGk5MTVfcmVxdWVzdF9hbGxvYyhpOTE1LT5lbmdpbmVbUkNTMF0sIGk5MTUtPmtlcm5l bF9jb250ZXh0KTsKPiAgIAlpZiAoSVNfRVJSKHJxKSkgewo+ICAgCQlpOTE1X3ZtYV91bnBpbih2 bWEpOwo+ICAgCQlyZXR1cm4gUFRSX0VSUihycSk7Cj4gQEAgLTI1Niw3ICsyNTYsNyBAQCBzdGF0 aWMgYm9vbCBuZWVkc19taV9zdG9yZV9kd29yZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKPiAgIAlpZiAoaTkxNV90ZXJtaW5hbGx5X3dlZGdlZChpOTE1KSkKPiAgIAkJcmV0dXJuIGZh bHNlOwo+ICAgCj4gLQlyZXR1cm4gaW50ZWxfZW5naW5lX2Nhbl9zdG9yZV9kd29yZChpOTE1LT5l bmdpbmVbUkNTXSk7Cj4gKwlyZXR1cm4gaW50ZWxfZW5naW5lX2Nhbl9zdG9yZV9kd29yZChpOTE1 LT5lbmdpbmVbUkNTMF0pOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgY29uc3Qgc3RydWN0IGlndF9j b2hlcmVuY3lfbW9kZSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv aTkxNV9nZW1fY29udGV4dC5jCj4gaW5kZXggM2EyMzhiOTYyOGIzLi4zMDExMWMwMDRlYjYgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRl eHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250 ZXh0LmMKPiBAQCAtNTU2LDcgKzU1Niw3IEBAIHN0YXRpYyBpbnQgaWd0X2N0eF9leGVjKHZvaWQg KmFyZykKPiAgIAkJbmNvbnRleHRzKys7Cj4gICAJfQo+ICAgCXByX2luZm8oIlN1Ym1pdHRlZCAl bHUgY29udGV4dHMgKGFjcm9zcyAldSBlbmdpbmVzKSwgZmlsbGluZyAlbHUgZHdvcmRzXG4iLAo+ IC0JCW5jb250ZXh0cywgUlVOVElNRV9JTkZPKGk5MTUpLT5udW1fcmluZ3MsIG5kd29yZHMpOwo+ ICsJCW5jb250ZXh0cywgUlVOVElNRV9JTkZPKGk5MTUpLT5udW1fZW5naW5lcywgbmR3b3Jkcyk7 Cj4gICAKPiAgIAlkdyA9IDA7Cj4gICAJbGlzdF9mb3JfZWFjaF9lbnRyeShvYmosICZvYmplY3Rz LCBzdF9saW5rKSB7Cj4gQEAgLTkyMyw3ICs5MjMsNyBAQCBfX2lndF9jdHhfc3NldShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIAkgICAgICAgdW5zaWduZWQgaW50IGZsYWdzKQo+ ICAgewo+ICAgCXN0cnVjdCBpbnRlbF9zc2V1IGRlZmF1bHRfc3NldSA9IGludGVsX2RldmljZV9k ZWZhdWx0X3NzZXUoaTkxNSk7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBp OTE1LT5lbmdpbmVbUkNTXTsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IGk5 MTUtPmVuZ2luZVtSQ1MwXTsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ ICAgCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4gICAJc3RydWN0IGludGVsX3NzZXUg cGdfc3NldTsKPiBAQCAtMTEyNiw3ICsxMTI2LDcgQEAgc3RhdGljIGludCBpZ3RfY3R4X3JlYWRv bmx5KHZvaWQgKmFyZykKPiAgIAkJfQo+ICAgCX0KPiAgIAlwcl9pbmZvKCJTdWJtaXR0ZWQgJWx1 IGR3b3JkcyAoYWNyb3NzICV1IGVuZ2luZXMpXG4iLAo+IC0JCW5kd29yZHMsIFJVTlRJTUVfSU5G TyhpOTE1KS0+bnVtX3JpbmdzKTsKPiArCQluZHdvcmRzLCBSVU5USU1FX0lORk8oaTkxNSktPm51 bV9lbmdpbmVzKTsKPiAgIAo+ICAgCWR3ID0gMDsKPiAgIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KG9i aiwgJm9iamVjdHMsIHN0X2xpbmspIHsKPiBAQCAtMTQ1OSw3ICsxNDU5LDcgQEAgc3RhdGljIGlu dCBpZ3Rfdm1faXNvbGF0aW9uKHZvaWQgKmFyZykKPiAgIAkJY291bnQgKz0gdGhpczsKPiAgIAl9 Cj4gICAJcHJfaW5mbygiQ2hlY2tlZCAlbHUgc2NyYXRjaCBvZmZzZXRzIGFjcm9zcyAlZCBlbmdp bmVzXG4iLAo+IC0JCWNvdW50LCBSVU5USU1FX0lORk8oaTkxNSktPm51bV9yaW5ncyk7Cj4gKwkJ Y291bnQsIFJVTlRJTUVfSU5GTyhpOTE1KS0+bnVtX2VuZ2luZXMpOwo+ICAgCj4gICBvdXRfcnBt Ogo+ICAgCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fb2JqZWN0LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fb2JqZWN0LmMKPiBpbmRleCA3ODQ5 ODJhZWQ2MjUuLjk3MTE0OGZiZTZmNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaTkxNV9nZW1fb2JqZWN0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaTkxNV9nZW1fb2JqZWN0LmMKPiBAQCAtNDY4LDcgKzQ2OCw3IEBAIHN0YXRp YyBpbnQgbWFrZV9vYmpfYnVzeShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAg CWlmIChlcnIpCj4gICAJCXJldHVybiBlcnI7Cj4gICAKPiAtCXJxID0gaTkxNV9yZXF1ZXN0X2Fs bG9jKGk5MTUtPmVuZ2luZVtSQ1NdLCBpOTE1LT5rZXJuZWxfY29udGV4dCk7Cj4gKwlycSA9IGk5 MTVfcmVxdWVzdF9hbGxvYyhpOTE1LT5lbmdpbmVbUkNTMF0sIGk5MTUtPmtlcm5lbF9jb250ZXh0 KTsKPiAgIAlpZiAoSVNfRVJSKHJxKSkgewo+ICAgCQlpOTE1X3ZtYV91bnBpbih2bWEpOwo+ICAg CQlyZXR1cm4gUFRSX0VSUihycSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9pOTE1X3JlcXVlc3QuYwo+IGluZGV4IDdlMWI2NWI4ZWIxOS4uM2ViNmE2YjA3NWFiIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYwo+IEBA IC00Miw3ICs0Miw3IEBAIHN0YXRpYyBpbnQgaWd0X2FkZF9yZXF1ZXN0KHZvaWQgKmFyZykKPiAg IAkvKiBCYXNpYyBwcmVsaW1pbmFyeSB0ZXN0IHRvIGNyZWF0ZSBhIHJlcXVlc3QgYW5kIGxldCBp dCBsb29zZSEgKi8KPiAgIAo+ICAgCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgp Owo+IC0JcmVxdWVzdCA9IG1vY2tfcmVxdWVzdChpOTE1LT5lbmdpbmVbUkNTXSwKPiArCXJlcXVl c3QgPSBtb2NrX3JlcXVlc3QoaTkxNS0+ZW5naW5lW1JDUzBdLAo+ICAgCQkJICAgICAgIGk5MTUt Pmtlcm5lbF9jb250ZXh0LAo+ICAgCQkJICAgICAgIEhaIC8gMTApOwo+ICAgCWlmICghcmVxdWVz dCkKPiBAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgaW50IGlndF93YWl0X3JlcXVlc3Qodm9pZCAq YXJnKQo+ICAgCS8qIFN1Ym1pdCBhIHJlcXVlc3QsIHRoZW4gd2FpdCB1cG9uIGl0ICovCj4gICAK PiAgIAltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCXJlcXVlc3QgPSBt b2NrX3JlcXVlc3QoaTkxNS0+ZW5naW5lW1JDU10sIGk5MTUtPmtlcm5lbF9jb250ZXh0LCBUKTsK PiArCXJlcXVlc3QgPSBtb2NrX3JlcXVlc3QoaTkxNS0+ZW5naW5lW1JDUzBdLCBpOTE1LT5rZXJu ZWxfY29udGV4dCwgVCk7Cj4gICAJaWYgKCFyZXF1ZXN0KSB7Cj4gICAJCWVyciA9IC1FTk9NRU07 Cj4gICAJCWdvdG8gb3V0X3VubG9jazsKPiBAQCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyBpbnQg aWd0X2ZlbmNlX3dhaXQodm9pZCAqYXJnKQo+ICAgCS8qIFN1Ym1pdCBhIHJlcXVlc3QsIHRyZWF0 IGl0IGFzIGEgZmVuY2UgYW5kIHdhaXQgdXBvbiBpdCAqLwo+ICAgCj4gICAJbXV0ZXhfbG9jaygm aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQlyZXF1ZXN0ID0gbW9ja19yZXF1ZXN0KGk5MTUt PmVuZ2luZVtSQ1NdLCBpOTE1LT5rZXJuZWxfY29udGV4dCwgVCk7Cj4gKwlyZXF1ZXN0ID0gbW9j a19yZXF1ZXN0KGk5MTUtPmVuZ2luZVtSQ1MwXSwgaTkxNS0+a2VybmVsX2NvbnRleHQsIFQpOwo+ ICAgCWlmICghcmVxdWVzdCkgewo+ICAgCQllcnIgPSAtRU5PTUVNOwo+ICAgCQlnb3RvIG91dF9s b2NrZWQ7Cj4gQEAgLTE5Myw3ICsxOTMsNyBAQCBzdGF0aWMgaW50IGlndF9yZXF1ZXN0X3Jld2lu ZCh2b2lkICphcmcpCj4gICAKPiAgIAltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4 KTsKPiAgIAljdHhbMF0gPSBtb2NrX2NvbnRleHQoaTkxNSwgIkEiKTsKPiAtCXJlcXVlc3QgPSBt b2NrX3JlcXVlc3QoaTkxNS0+ZW5naW5lW1JDU10sIGN0eFswXSwgMiAqIEhaKTsKPiArCXJlcXVl c3QgPSBtb2NrX3JlcXVlc3QoaTkxNS0+ZW5naW5lW1JDUzBdLCBjdHhbMF0sIDIgKiBIWik7Cj4g ICAJaWYgKCFyZXF1ZXN0KSB7Cj4gICAJCWVyciA9IC1FTk9NRU07Cj4gICAJCWdvdG8gZXJyX2Nv bnRleHRfMDsKPiBAQCAtMjAzLDcgKzIwMyw3IEBAIHN0YXRpYyBpbnQgaWd0X3JlcXVlc3RfcmV3 aW5kKHZvaWQgKmFyZykKPiAgIAlpOTE1X3JlcXVlc3RfYWRkKHJlcXVlc3QpOwo+ICAgCj4gICAJ Y3R4WzFdID0gbW9ja19jb250ZXh0KGk5MTUsICJCIik7Cj4gLQl2aXAgPSBtb2NrX3JlcXVlc3Qo aTkxNS0+ZW5naW5lW1JDU10sIGN0eFsxXSwgMCk7Cj4gKwl2aXAgPSBtb2NrX3JlcXVlc3QoaTkx NS0+ZW5naW5lW1JDUzBdLCBjdHhbMV0sIDApOwo+ICAgCWlmICghdmlwKSB7Cj4gICAJCWVyciA9 IC1FTk9NRU07Cj4gICAJCWdvdG8gZXJyX2NvbnRleHRfMTsKPiBAQCAtNDE1LDcgKzQxNSw3IEBA IHN0YXRpYyBpbnQgbW9ja19icmVhZGNydW1ic19zbW9rZXRlc3Qodm9pZCAqYXJnKQo+ICAgewo+ ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gYXJnOwo+ICAgCXN0cnVjdCBzbW9r ZXRlc3QgdCA9IHsKPiAtCQkuZW5naW5lID0gaTkxNS0+ZW5naW5lW1JDU10sCj4gKwkJLmVuZ2lu ZSA9IGk5MTUtPmVuZ2luZVtSQ1MwXSwKPiAgIAkJLm5jb250ZXh0cyA9IDEwMjQsCj4gICAJCS5t YXhfYmF0Y2ggPSAxMDI0LAo+ICAgCQkucmVxdWVzdF9hbGxvYyA9IF9fbW9ja19yZXF1ZXN0X2Fs bG9jCj4gQEAgLTEyMTYsNyArMTIxNiw3IEBAIHN0YXRpYyBpbnQgbGl2ZV9icmVhZGNydW1ic19z bW9rZXRlc3Qodm9pZCAqYXJnKQo+ICAgCQludW1fZmVuY2VzICs9IGF0b21pY19sb25nX3JlYWQo JnRbaWRdLm51bV9mZW5jZXMpOwo+ICAgCX0KPiAgIAlwcl9pbmZvKCJDb21wbGV0ZWQgJWx1IHdh aXRzIGZvciAlbHUgZmVuY2VzIGFjcm9zcyAlZCBlbmdpbmVzIGFuZCAlZCBjcHVzXG4iLAo+IC0J CW51bV93YWl0cywgbnVtX2ZlbmNlcywgUlVOVElNRV9JTkZPKGk5MTUpLT5udW1fcmluZ3MsIG5j cHVzKTsKPiArCQludW1fd2FpdHMsIG51bV9mZW5jZXMsIFJVTlRJTUVfSU5GTyhpOTE1KS0+bnVt X2VuZ2luZXMsIG5jcHVzKTsKPiAgIAo+ICAgCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3Rf bXV0ZXgpOwo+ICAgCXJldCA9IGlndF9saXZlX3Rlc3RfZW5kKCZsaXZlKSA/OiByZXQ7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9ndWMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9ndWMuYwo+IGluZGV4IGM1ZTBhMGU5 OGZjYi4uYjA1YTIxZWFhOGY0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pbnRlbF9ndWMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9pbnRlbF9ndWMuYwo+IEBAIC0xMTEsNyArMTExLDcgQEAgc3RhdGljIGludCB2YWxpZGF0ZV9j bGllbnQoc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCwKPiAgIAkJCWRldl9wcml2LT5w cmVlbXB0X2NvbnRleHQgOiBkZXZfcHJpdi0+a2VybmVsX2NvbnRleHQ7Cj4gICAKPiAgIAlpZiAo Y2xpZW50LT5vd25lciAhPSBjdHhfb3duZXIgfHwKPiAtCSAgICBjbGllbnQtPmVuZ2luZXMgIT0g SU5URUxfSU5GTyhkZXZfcHJpdiktPnJpbmdfbWFzayB8fAo+ICsJICAgIGNsaWVudC0+ZW5naW5l cyAhPSBJTlRFTF9JTkZPKGRldl9wcml2KS0+ZW5naW5lX21hc2sgfHwKPiAgIAkgICAgY2xpZW50 LT5wcmlvcml0eSAhPSBjbGllbnRfcHJpb3JpdHkgfHwKPiAgIAkgICAgY2xpZW50LT5kb29yYmVs bF9pZCA9PSBHVUNfRE9PUkJFTExfSU5WQUxJRCkKPiAgIAkJcmV0dXJuIC1FSU5WQUw7Cj4gQEAg LTI2MSw3ICsyNjEsNyBAQCBzdGF0aWMgaW50IGlndF9ndWNfZG9vcmJlbGxzKHZvaWQgKmFyZykK PiAgIAo+ICAgCWZvciAoaSA9IDA7IGkgPCBBVFRFTVBUUzsgaSsrKSB7Cj4gICAJCWNsaWVudHNb aV0gPSBndWNfY2xpZW50X2FsbG9jKGRldl9wcml2LAo+IC0JCQkJCSAgICAgIElOVEVMX0lORk8o ZGV2X3ByaXYpLT5yaW5nX21hc2ssCj4gKwkJCQkJICAgICAgSU5URUxfSU5GTyhkZXZfcHJpdikt PmVuZ2luZV9tYXNrLAo+ICAgCQkJCQkgICAgICBpICUgR1VDX0NMSUVOVF9QUklPUklUWV9OVU0s Cj4gICAJCQkJCSAgICAgIGRldl9wcml2LT5rZXJuZWxfY29udGV4dCk7Cj4gICAKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2hhbmdjaGVjay5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2hhbmdjaGVjay5jCj4gaW5kZXgg MTJlMDQ3MzI4YWI4Li4xMDY1OGFkMDUzMDUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2ludGVsX2hhbmdjaGVjay5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2ludGVsX2hhbmdjaGVjay5jCj4gQEAgLTExMjYsNyArMTEyNiw3IEBA IHN0YXRpYyBpbnQgaWd0X3Jlc2V0X3dhaXQodm9pZCAqYXJnKQo+ICAgCWxvbmcgdGltZW91dDsK PiAgIAlpbnQgZXJyOwo+ICAgCj4gLQlpZiAoIWludGVsX2VuZ2luZV9jYW5fc3RvcmVfZHdvcmQo aTkxNS0+ZW5naW5lW1JDU10pKQo+ICsJaWYgKCFpbnRlbF9lbmdpbmVfY2FuX3N0b3JlX2R3b3Jk KGk5MTUtPmVuZ2luZVtSQ1MwXSkpCj4gICAJCXJldHVybiAwOwo+ICAgCj4gICAJLyogQ2hlY2sg dGhhdCB3ZSBkZXRlY3QgYSBzdHVjayB3YWl0ZXIgYW5kIGlzc3VlIGEgcmVzZXQgKi8KPiBAQCAt MTEzOCw3ICsxMTM4LDcgQEAgc3RhdGljIGludCBpZ3RfcmVzZXRfd2FpdCh2b2lkICphcmcpCj4g ICAJaWYgKGVycikKPiAgIAkJZ290byB1bmxvY2s7Cj4gICAKPiAtCXJxID0gaGFuZ19jcmVhdGVf cmVxdWVzdCgmaCwgaTkxNS0+ZW5naW5lW1JDU10pOwo+ICsJcnEgPSBoYW5nX2NyZWF0ZV9yZXF1 ZXN0KCZoLCBpOTE1LT5lbmdpbmVbUkNTMF0pOwo+ICAgCWlmIChJU19FUlIocnEpKSB7Cj4gICAJ CWVyciA9IFBUUl9FUlIocnEpOwo+ICAgCQlnb3RvIGZpbmk7Cj4gQEAgLTEyNTUsNyArMTI1NSw3 IEBAIHN0YXRpYyBpbnQgX19pZ3RfcmVzZXRfZXZpY3Rfdm1hKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1LAo+ICAgCXN0cnVjdCBoYW5nIGg7Cj4gICAJaW50IGVycjsKPiAgIAo+IC0JaWYg KCFpbnRlbF9lbmdpbmVfY2FuX3N0b3JlX2R3b3JkKGk5MTUtPmVuZ2luZVtSQ1NdKSkKPiArCWlm ICghaW50ZWxfZW5naW5lX2Nhbl9zdG9yZV9kd29yZChpOTE1LT5lbmdpbmVbUkNTMF0pKQo+ICAg CQlyZXR1cm4gMDsKPiAgIAo+ICAgCS8qIENoZWNrIHRoYXQgd2UgY2FuIHJlY292ZXIgYW4gdW5i aW5kIHN0dWNrIG9uIGEgaGFuZ2luZyByZXF1ZXN0ICovCj4gQEAgLTEyODUsNyArMTI4NSw3IEBA IHN0YXRpYyBpbnQgX19pZ3RfcmVzZXRfZXZpY3Rfdm1hKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1LAo+ICAgCQlnb3RvIG91dF9vYmo7Cj4gICAJfQo+ICAgCj4gLQlycSA9IGhhbmdfY3Jl YXRlX3JlcXVlc3QoJmgsIGk5MTUtPmVuZ2luZVtSQ1NdKTsKPiArCXJxID0gaGFuZ19jcmVhdGVf cmVxdWVzdCgmaCwgaTkxNS0+ZW5naW5lW1JDUzBdKTsKPiAgIAlpZiAoSVNfRVJSKHJxKSkgewo+ ICAgCQllcnIgPSBQVFJfRVJSKHJxKTsKPiAgIAkJZ290byBvdXRfb2JqOwo+IEBAIC0xMzU4LDcg KzEzNTgsNyBAQCBzdGF0aWMgaW50IF9faWd0X3Jlc2V0X2V2aWN0X3ZtYShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIAo+ICAgb3V0X3Jlc2V0Ogo+ICAgCWlndF9nbG9iYWxfcmVz ZXRfbG9jayhpOTE1KTsKPiAtCWZha2VfaGFuZ2NoZWNrKHJxLT5pOTE1LCBpbnRlbF9lbmdpbmVf ZmxhZyhycS0+ZW5naW5lKSk7Cj4gKwlmYWtlX2hhbmdjaGVjayhycS0+aTkxNSwgcnEtPmVuZ2lu ZS0+bWFzayk7Cj4gICAJaWd0X2dsb2JhbF9yZXNldF91bmxvY2soaTkxNSk7Cj4gICAKPiAgIAlp ZiAodHNrKSB7Cj4gQEAgLTE1MzcsNyArMTUzNyw3IEBAIHN0YXRpYyBpbnQgaWd0X3Jlc2V0X3F1 ZXVlKHZvaWQgKmFyZykKPiAgIAkJCQlnb3RvIGZpbmk7Cj4gICAJCQl9Cj4gICAKPiAtCQkJcmVz ZXRfY291bnQgPSBmYWtlX2hhbmdjaGVjayhpOTE1LCBFTkdJTkVfTUFTSyhpZCkpOwo+ICsJCQly ZXNldF9jb3VudCA9IGZha2VfaGFuZ2NoZWNrKGk5MTUsIEJJVChpZCkpOwo+ICAgCj4gICAJCQlp ZiAocHJldi0+ZmVuY2UuZXJyb3IgIT0gLUVJTykgewo+ICAgCQkJCXByX2VycigiR1BVIHJlc2V0 IG5vdCByZWNvcmRlZCBvbiBoYW5naW5nIHJlcXVlc3QgW2ZlbmNlLmVycm9yPSVkXSFcbiIsCj4g QEAgLTE1OTYsNyArMTU5Niw3IEBAIHN0YXRpYyBpbnQgaWd0X3Jlc2V0X3F1ZXVlKHZvaWQgKmFy ZykKPiAgIHN0YXRpYyBpbnQgaWd0X2hhbmRsZV9lcnJvcih2b2lkICphcmcpCj4gICB7Cj4gICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBhcmc7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUgPSBpOTE1LT5lbmdpbmVbUkNTXTsKPiArCXN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSA9IGk5MTUtPmVuZ2luZVtSQ1MwXTsKPiAgIAlzdHJ1Y3QgaGFuZyBoOwo+ ICAgCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwo+ICAgCXN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAq ZXJyb3I7Cj4gQEAgLTE2NDMsNyArMTY0Myw3IEBAIHN0YXRpYyBpbnQgaWd0X2hhbmRsZV9lcnJv cih2b2lkICphcmcpCj4gICAJLyogVGVtcG9yYXJpbHkgZGlzYWJsZSBlcnJvciBjYXB0dXJlICov Cj4gICAJZXJyb3IgPSB4Y2hnKCZpOTE1LT5ncHVfZXJyb3IuZmlyc3RfZXJyb3IsICh2b2lkICop LTEpOwo+ICAgCj4gLQlpOTE1X2hhbmRsZV9lcnJvcihpOTE1LCBFTkdJTkVfTUFTSyhlbmdpbmUt PmlkKSwgMCwgTlVMTCk7Cj4gKwlpOTE1X2hhbmRsZV9lcnJvcihpOTE1LCBlbmdpbmUtPm1hc2ss IDAsIE5VTEwpOwo+ICAgCj4gICAJeGNoZygmaTkxNS0+Z3B1X2Vycm9yLmZpcnN0X2Vycm9yLCBl cnJvcik7Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2xyYy5j Cj4gaW5kZXggMDY3NzAzOGE1NDY2Li41NjVlOTQ5YTQ3MjIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2xyYy5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2xyYy5jCj4gQEAgLTkyOSw3ICs5MjksNyBAQCBzdGF0 aWMgaW50IHNtb2tlX2NyZXNjZW5kbyhzdHJ1Y3QgcHJlZW1wdF9zbW9rZSAqc21va2UsIHVuc2ln bmVkIGludCBmbGFncykKPiAgIAo+ICAgCXByX2luZm8oIlN1Ym1pdHRlZCAlbHUgY3Jlc2NlbmRv OiV4IHJlcXVlc3RzIGFjcm9zcyAlZCBlbmdpbmVzIGFuZCAlZCBjb250ZXh0c1xuIiwKPiAgIAkJ Y291bnQsIGZsYWdzLAo+IC0JCVJVTlRJTUVfSU5GTyhzbW9rZS0+aTkxNSktPm51bV9yaW5ncywg c21va2UtPm5jb250ZXh0KTsKPiArCQlSVU5USU1FX0lORk8oc21va2UtPmk5MTUpLT5udW1fZW5n aW5lcywgc21va2UtPm5jb250ZXh0KTsKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+IEBAIC05 NTcsNyArOTU3LDcgQEAgc3RhdGljIGludCBzbW9rZV9yYW5kb20oc3RydWN0IHByZWVtcHRfc21v a2UgKnNtb2tlLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCj4gICAKPiAgIAlwcl9pbmZvKCJTdWJtaXR0 ZWQgJWx1IHJhbmRvbToleCByZXF1ZXN0cyBhY3Jvc3MgJWQgZW5naW5lcyBhbmQgJWQgY29udGV4 dHNcbiIsCj4gICAJCWNvdW50LCBmbGFncywKPiAtCQlSVU5USU1FX0lORk8oc21va2UtPmk5MTUp LT5udW1fcmluZ3MsIHNtb2tlLT5uY29udGV4dCk7Cj4gKwkJUlVOVElNRV9JTkZPKHNtb2tlLT5p OTE1KS0+bnVtX2VuZ2luZXMsIHNtb2tlLT5uY29udGV4dCk7Cj4gICAJcmV0dXJuIDA7Cj4gICB9 Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVs X3dvcmthcm91bmRzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfd29y a2Fyb3VuZHMuYwo+IGluZGV4IDlmMTJhMGVjODA0Yi4uZjJhMmI1MWE0NjYyIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF93b3JrYXJvdW5kcy5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3dvcmthcm91bmRzLmMK PiBAQCAtMjIyLDcgKzIyMiw3IEBAIHN0YXRpYyBpbnQgY2hlY2tfd2hpdGVsaXN0KHN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gICAKPiAgIHN0YXRpYyBpbnQgZG9fZGV2aWNlX3Jlc2V0 KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAtCWk5MTVfcmVzZXQoZW5n aW5lLT5pOTE1LCBFTkdJTkVfTUFTSyhlbmdpbmUtPmlkKSwgImxpdmVfd29ya2Fyb3VuZHMiKTsK PiArCWk5MTVfcmVzZXQoZW5naW5lLT5pOTE1LCBlbmdpbmUtPm1hc2ssICJsaXZlX3dvcmthcm91 bmRzIik7Cj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4gICAKPiBAQCAtNzA5LDcgKzcwOSw3IEBAIHN0 YXRpYyBpbnQgbGl2ZV9kaXJ0eV93aGl0ZWxpc3Qodm9pZCAqYXJnKQo+ICAgc3RhdGljIGludCBs aXZlX3Jlc2V0X3doaXRlbGlzdCh2b2lkICphcmcpCj4gICB7Cj4gICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUgPSBhcmc7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUg PSBpOTE1LT5lbmdpbmVbUkNTXTsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9 IGk5MTUtPmVuZ2luZVtSQ1MwXTsKPiAgIAlpbnQgZXJyID0gMDsKPiAgIAo+ICAgCS8qIElmIHdl IHJlc2V0IHRoZSBncHUsIHdlIHNob3VsZCBub3QgbG9zZSB0aGUgUklOR19OT05QUklWICovCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZW5naW5lLmMKPiBpbmRleCBl YzFhZTk0ODk1NGMuLmMyYzk1NGY2NDIyNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvbW9ja19lbmdpbmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5jCj4gQEAgLTIyMyw2ICsyMjMsNyBAQCBzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICptb2NrX2VuZ2luZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwK PiAgIAllbmdpbmUtPmJhc2UuaTkxNSA9IGk5MTU7Cj4gICAJc25wcmludGYoZW5naW5lLT5iYXNl Lm5hbWUsIHNpemVvZihlbmdpbmUtPmJhc2UubmFtZSksICIlcyIsIG5hbWUpOwo+ICAgCWVuZ2lu ZS0+YmFzZS5pZCA9IGlkOwo+ICsJZW5naW5lLT5iYXNlLm1hc2sgPSBCSVQoaWQpOwo+ICAgCWVu Z2luZS0+YmFzZS5zdGF0dXNfcGFnZS5hZGRyID0gKHZvaWQgKikoZW5naW5lICsgMSk7Cj4gICAK PiAgIAllbmdpbmUtPmJhc2UuY29udGV4dF9waW4gPSBtb2NrX2NvbnRleHRfcGluOwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMKPiBpbmRl eCBjMjc2MTZlZmM0ZjguLmIyYzc4MDhlMDU5NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMKPiBAQCAtMjA2LDEzICsyMDYsMTMg QEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKm1vY2tfZ2VtX2RldmljZSh2b2lkKQo+ICAgCj4g ICAJbW9ja19pbml0X2dndHQoaTkxNSwgJmk5MTUtPmdndHQpOwo+ICAgCj4gLQlta3dyaXRlX2Rl dmljZV9pbmZvKGk5MTUpLT5yaW5nX21hc2sgPSBCSVQoMCk7Cj4gKwlta3dyaXRlX2RldmljZV9p bmZvKGk5MTUpLT5lbmdpbmVfbWFzayA9IEJJVCgwKTsKPiAgIAlpOTE1LT5rZXJuZWxfY29udGV4 dCA9IG1vY2tfY29udGV4dChpOTE1LCBOVUxMKTsKPiAgIAlpZiAoIWk5MTUtPmtlcm5lbF9jb250 ZXh0KQo+ICAgCQlnb3RvIGVycl91bmxvY2s7Cj4gICAKPiAtCWk5MTUtPmVuZ2luZVtSQ1NdID0g bW9ja19lbmdpbmUoaTkxNSwgIm1vY2siLCBSQ1MpOwo+IC0JaWYgKCFpOTE1LT5lbmdpbmVbUkNT XSkKPiArCWk5MTUtPmVuZ2luZVtSQ1MwXSA9IG1vY2tfZW5naW5lKGk5MTUsICJtb2NrIiwgUkNT MCk7Cj4gKwlpZiAoIWk5MTUtPmVuZ2luZVtSQ1MwXSkKPiAgIAkJZ290byBlcnJfY29udGV4dDsK PiAgIAo+ICAgCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==