From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrzej Hajda Subject: Re: [PATCH 2/2] drm/panel: Add driver for Samsung S6E63M0 panel Date: Mon, 28 Jan 2019 14:47:41 +0100 Message-ID: References: <20190125164645.19208-1-pawel.mikolaj.chmiel@gmail.com> <20190125164645.19208-2-pawel.mikolaj.chmiel@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190125164645.19208-2-pawel.mikolaj.chmiel@gmail.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: =?UTF-8?Q?Pawe=c5=82_Chmiel?= , thierry.reding@gmail.com Cc: mark.rutland@arm.com, devicetree@vger.kernel.org, airlied@linux.ie, linux-kernel@vger.kernel.org, krzk@kernel.org, robh+dt@kernel.org, dri-devel@lists.freedesktop.org, m.szyprowski@samsung.com List-Id: devicetree@vger.kernel.org SGkgUGF3ZcWCLAoKTmljZSB3b3JrLgoKSSBhZ3JlZSB3aXRoIG1vc3QgU2FtJ3MgY29tbWVudHMg KG1heWJlIGV4cGVjdCBEUk1fREVWXyogbG9nZ2luZyAtIEkgYW0Kbm90IHN1cmUgaWYgd2UgbmVl ZCBjb25jdXJyZW50IGxvZ2dpbmcgZmFjaWxpdHkpLgoKSSdkIGxpa2UgdG8gYWRkIGZldyBtb3Jl IGNvbW1lbnRzOgoKCgpPbiAyNS4wMS4yMDE5IDE3OjQ2LCBQYXdlxYIgQ2htaWVsIHdyb3RlOgo+ IFRoaXMgcGF0Y2ggYWRkcyBTYW1zdW5nIFM2RTYzTTAgQU1PTEVEIExDRCBwYW5lbCBkcml2ZXIs IGNvbm5lY3RlZCBvdmVyCj4gc3BpLiBJdCdzIGJhc2VkIG9uIGFscmVhZHkgcmVtb3ZlZCwgbm9u IGR0IHM2ZTYzbTAgZHJpdmVyIGFuZAo+IHBhbmVsLXNhbXN1bmctbGQ5MDQwLiBUaGVyZSBpcyBw b3NzaWJpbGl0eSB0byBjaG9vc2Ugb25lIGZyb20gMwo+IGRpZmZlcmVudCBnYW1tYSB0YWJsZXMu Cj4gSXQgY2FuIGJlIGZvdW5kIGZvciBleGFtcGxlIGluIHNvbWUgb2YgU2Ftc3VuZyBBcmllcyBi YXNlZCBwaG9uZXMuCj4KPiBTaWduZWQtb2ZmLWJ5OiBQYXdlxYIgQ2htaWVsIDxwYXdlbC5taWtv bGFqLmNobWllbEBnbWFpbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29u ZmlnICAgICAgICAgICAgICAgICB8ICAgNyArCj4gIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtl ZmlsZSAgICAgICAgICAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5l bC1zYW1zdW5nLXM2ZTYzbTAuYyB8IDcxMiArKysrKysrKysrKysrKysrKysKPiAgMyBmaWxlcyBj aGFuZ2VkLCA3MjAgaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9n cHUvZHJtL3BhbmVsL3BhbmVsLXNhbXN1bmctczZlNjNtMC5jCj4KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZp Zwo+IGluZGV4IDNmMzUzNzcxOWJlYi4uNGE0YjY0Zjc0ZTcwIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tj b25maWcKPiBAQCAtODIsNiArODIsMTMgQEAgY29uZmlnIERSTV9QQU5FTF9TQU1TVU5HX0xEOTA0 MAo+ICAJZGVwZW5kcyBvbiBPRiAmJiBTUEkKPiAgCXNlbGVjdCBWSURFT01PREVfSEVMUEVSUwo+ ICAKPiArY29uZmlnIERSTV9QQU5FTF9TQU1TVU5HX1M2RTYzTTAKPiArCXRyaXN0YXRlICJTYW1z dW5nIFM2RTYzTTAgUkdCL1NQSSBwYW5lbCIKPiArCWRlcGVuZHMgb24gT0YKPiArCWRlcGVuZHMg b24gU1BJCj4gKwlkZXBlbmRzIG9uIEJBQ0tMSUdIVF9DTEFTU19ERVZJQ0UKPiArCXNlbGVjdCBW SURFT01PREVfSEVMUEVSUwo+ICsKPiAgY29uZmlnIERSTV9QQU5FTF9MR19MRzQ1NzMKPiAgCXRy aXN0YXRlICJMRzQ1NzMgUkdCL1NQSSBwYW5lbCIKPiAgCWRlcGVuZHMgb24gT0YgJiYgU1BJCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1 L2RybS9wYW5lbC9NYWtlZmlsZQo+IGluZGV4IDQzOTY2NThhNzk5Ni4uM2U1ZDUzZmRlZTQ3IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZQo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZQo+IEBAIC0xNCw2ICsxNCw3IEBAIG9iai0kKENPTkZJ R19EUk1fUEFORUxfUkFTUEJFUlJZUElfVE9VQ0hTQ1JFRU4pICs9IHBhbmVsLXJhc3BiZXJyeXBp LXRvdWNoc2NyZWVuCj4gIG9iai0kKENPTkZJR19EUk1fUEFORUxfUkFZRElVTV9STTY4MjAwKSAr PSBwYW5lbC1yYXlkaXVtLXJtNjgyMDAubwo+ICBvYmotJChDT05GSUdfRFJNX1BBTkVMX1NBTVNV TkdfTEQ5MDQwKSArPSBwYW5lbC1zYW1zdW5nLWxkOTA0MC5vCj4gIG9iai0kKENPTkZJR19EUk1f UEFORUxfU0FNU1VOR19TNkQxNkQwKSArPSBwYW5lbC1zYW1zdW5nLXM2ZDE2ZDAubwo+ICtvYmot JChDT05GSUdfRFJNX1BBTkVMX1NBTVNVTkdfUzZFNjNNMCkgKz0gcGFuZWwtc2Ftc3VuZy1zNmU2 M20wLm8KPiAgb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9TQU1TVU5HX1M2RTNIQTIpICs9IHBhbmVs LXNhbXN1bmctczZlM2hhMi5vCj4gIG9iai0kKENPTkZJR19EUk1fUEFORUxfU0FNU1VOR19TNkU2 M0owWDAzKSArPSBwYW5lbC1zYW1zdW5nLXM2ZTYzajB4MDMubwo+ICBvYmotJChDT05GSUdfRFJN X1BBTkVMX1NBTVNVTkdfUzZFOEFBMCkgKz0gcGFuZWwtc2Ftc3VuZy1zNmU4YWEwLm8KPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXNhbXN1bmctczZlNjNtMC5jIGIv ZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXNhbXN1bmctczZlNjNtMC5jCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmNiNWMwOTA2MjFhZAo+IC0tLSAvZGV2 L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtc2Ftc3VuZy1zNmU2M20w LmMKPiBAQCAtMCwwICsxLDcxMiBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMCsKPiArLyoKPiArICogUzZFNjNNMCBBTU9MRUQgTENEIGRybV9wYW5lbCBkcml2ZXIuCj4g KyAqCj4gKyAqIENvcHlyaWdodCAoQykgMjAxOSBQYXdlxYIgQ2htaWVsIDxwYXdlbC5taWtvbGFq LmNobWllbEBnbWFpbC5jb20+Cj4gKyAqIERlcml2ZWQgZnJvbSBkcml2ZXJzL2dwdS9kcm0vcGFu ZWwtc2Ftc3VuZy1sZDkwNDAuYwo+ICsgKgo+ICsgKiBBbmRyemVqIEhhamRhIDxhLmhhamRhQHNh bXN1bmcuY29tPgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwo+ICsgKiBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KCgpZb3UgZG8gbm90IG5l ZWQgbGljZW5zZSAnYm9keScgaWYgU1BEWCBpcyBpbiB1c2UuCgoKPiArICovCj4gKwo+ICsjaW5j bHVkZSA8ZHJtL2RybVAuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fcGFuZWwuaD4KPiArCj4gKyNp bmNsdWRlIDxsaW51eC9iYWNrbGlnaHQuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2dwaW8vY29uc3Vt ZXIuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oPgo+ICsjaW5jbHVk ZSA8bGludXgvc3BpL3NwaS5oPgo+ICsKPiArI2luY2x1ZGUgPHZpZGVvL21pcGlfZGlzcGxheS5o Pgo+ICsjaW5jbHVkZSA8dmlkZW8vb2ZfdmlkZW9tb2RlLmg+Cj4gKyNpbmNsdWRlIDx2aWRlby92 aWRlb21vZGUuaD4KPiArCj4gKy8qIE1hbnVmYWN0dXJlciBDb21tYW5kIFNldCAqLwo+ICsjZGVm aW5lIE1DU19TVEFORF9CWV9PRkYgICAgICAgICAgICAgICAgMHgxMQoKTUlQSV9EQ1NfRVhJVF9T TEVFUF9NT0RFCgo+ICsjZGVmaW5lIE1DU19ESVNQTEFZX09OICAgICAgICAgICAgICAgICAgMHgy OQpNSVBJX0RDU19TRVRfRElTUExBWV9PTgo+ICsjZGVmaW5lIE1DU19FTFZTU19PTiAgICAgICAg ICAgICAgICAweGIxCj4gKyNkZWZpbmUgTUNTX0FDTF9DVFJMICAgICAgICAgICAgICAgIDB4YzAK PiArI2RlZmluZSBNQ1NfRElTUExBWV9DT05ESVRJT04gICAweGYyCj4gKyNkZWZpbmUgTUNTX0VU Q19DT05ESVRJT04gICAgICAgICAgIDB4ZjYKPiArI2RlZmluZSBNQ1NfUEFORUxfQ09ORElUSU9O ICAgICAgICAgMHhGOAo+ICsjZGVmaW5lIE1DU19HQU1NQV9DVFJMICAgICAgICAgICAgICAweGZh Cj4gKwo+ICsjZGVmaW5lIE1BWF9HQU1NQV9MRVZFTCAgICAgICAgICAgICAxMQoKCkdBTU1BX0xF VkVMX0NPVU5UIG9yIE5VTV9HQU1NQV9MRVZFTFMgPwoKCj4gKyNkZWZpbmUgR0FNTUFfVEFCTEVf Q09VTlQgICAgICAgICAgIDIzCj4gKwo+ICsjZGVmaW5lIE1BWF9CUklHSFRORVNTICAgICAgICAg ICAgICAoTUFYX0dBTU1BX0xFVkVMIC0gMSkKPiArI2RlZmluZSBHQU1NQV9NT0RFXzIyICAgICAg ICAgICAgICAgMAo+ICsjZGVmaW5lIEdBTU1BX01PREVfMTkgICAgICAgICAgICAgICAxCj4gKyNk ZWZpbmUgR0FNTUFfTU9ERV8xNyAgICAgICAgICAgICAgIDIKPiArCj4gKy8qIGFycmF5IG9mIGdh bW1hIHRhYmxlcyBmb3IgZ2FtbWEgdmFsdWUgMi4yICovCj4gK3N0YXRpYyB1OCBjb25zdCBzNmU2 M20wX2dhbW1hXzIyW01BWF9HQU1NQV9MRVZFTF1bR0FNTUFfVEFCTEVfQ09VTlRdID0gewo+ICsJ eyBNQ1NfR0FNTUFfQ1RSTCwgMHgwMCwKPiArCSAgMHgxOCwgMHgwOCwgMHgyNCwgMHg3OCwgMHhF QywgMHgzRCwgMHhDOCwKPiArCSAgMHhDMiwgMHhCNiwgMHhDNCwgMHhDNywgMHhCNiwgMHhENSwg MHhENywKPiArCSAgMHhDQywgMHgwMCwgMHgzOSwgMHgwMCwgMHgzNiwgMHgwMCwgMHg1MSB9LAo+ ICsJeyBNQ1NfR0FNTUFfQ1RSTCwgMHgwMCwKPiArCSAgMHgxOCwgMHgwOCwgMHgyNCwgMHg3Mywg MHg0QSwgMHgzRCwgMHhDMCwKPiArCSAgMHhDMiwgMHhCMSwgMHhCQiwgMHhCRSwgMHhBQywgMHhD RSwgMHhDRiwKPiArCSAgMHhDNSwgMHgwMCwgMHg1RCwgMHgwMCwgMHg1RSwgMHgwMCwgMHg4MiB9 LAo+ICsJeyBNQ1NfR0FNTUFfQ1RSTCwgMHgwMCwKPiArCSAgMHgxOCwgMHgwOCwgMHgyNCwgMHg3 MCwgMHg1MSwgMHgzRSwgMHhCRiwKPiArCSAgMHhDMSwgMHhBRiwgMHhCOSwgMHhCQywgMHhBQiwg MHhDQywgMHhDQywKPiArCSAgMHhDMiwgMHgwMCwgMHg2NSwgMHgwMCwgMHg2NywgMHgwMCwgMHg4 RCB9LAo+ICsJeyBNQ1NfR0FNTUFfQ1RSTCwgMHgwMCwKPiArCSAgMHgxOCwgMHgwOCwgMHgyNCwg MHg2QywgMHg1NCwgMHgzQSwgMHhCQywKPiArCSAgMHhCRiwgMHhBQywgMHhCNywgMHhCQiwgMHhB OSwgMHhDOSwgMHhDOSwKPiArCSAgMHhCRSwgMHgwMCwgMHg3MSwgMHgwMCwgMHg3MywgMHgwMCwg MHg5RSB9LAo+ICsJeyBNQ1NfR0FNTUFfQ1RSTCwgMHgwMCwKPiArCSAgMHgxOCwgMHgwOCwgMHgy NCwgMHg2OSwgMHg1NCwgMHgzNywgMHhCQiwKPiArCSAgMHhCRSwgMHhBQywgMHhCNCwgMHhCNywg MHhBNiwgMHhDNywgMHhDOCwKPiArCSAgMHhCQywgMHgwMCwgMHg3QiwgMHgwMCwgMHg3RSwgMHgw MCwgMHhBQiB9LAo+ICsJeyBNQ1NfR0FNTUFfQ1RSTCwgMHgwMCwKPiArCSAgMHgxOCwgMHgwOCwg MHgyNCwgMHg2NiwgMHg1NSwgMHgzNCwgMHhCQSwKPiArCSAgMHhCRCwgMHhBQiwgMHhCMSwgMHhC NSwgMHhBMywgMHhDNSwgMHhDNiwKPiArCSAgMHhCOSwgMHgwMCwgMHg4NSwgMHgwMCwgMHg4OCwg MHgwMCwgMHhCQSB9LAo+ICsJeyBNQ1NfR0FNTUFfQ1RSTCwgMHgwMCwKPiArCSAgMHgxOCwgMHgw OCwgMHgyNCwgMHg2MywgMHg1MywgMHgzMSwgMHhCOCwKPiArCSAgMHhCQywgMHhBOSwgMHhCMCwg MHhCNSwgMHhBMiwgMHhDNCwgMHhDNCwKPiArCSAgMHhCOCwgMHgwMCwgMHg4QiwgMHgwMCwgMHg4 RSwgMHgwMCwgMHhDMiB9LAo+ICsJeyBNQ1NfR0FNTUFfQ1RSTCwgMHgwMCwKPiArCSAgMHgxOCwg MHgwOCwgMHgyNCwgMHg2MiwgMHg1NCwgMHgzMCwgMHhCOSwKPiArCSAgMHhCQiwgMHhBOSwgMHhC MCwgMHhCMywgMHhBMSwgMHhDMSwgMHhDMywKPiArCSAgMHhCNywgMHgwMCwgMHg5MSwgMHgwMCwg MHg5NSwgMHgwMCwgMHhEQSB9LAo+ICsJeyBNQ1NfR0FNTUFfQ1RSTCwgMHgwMCwKPiArCSAgMHgx OCwgMHgwOCwgMHgyNCwgMHg2NiwgMHg1OCwgMHgzNCwgMHhCNiwKPiArCSAgMHhCQSwgMHhBNywg MHhBRiwgMHhCMywgMHhBMCwgMHhDMSwgMHhDMiwKPiArCSAgMHhCNywgMHgwMCwgMHg5NywgMHgw MCwgMHg5QSwgMHgwMCwgMHhEMSB9LAo+ICsJeyBNQ1NfR0FNTUFfQ1RSTCwgMHgwMCwKPiArCSAg MHgxOCwgMHgwOCwgMHgyNCwgMHg2NCwgMHg1NiwgMHgzMywgMHhCNiwKPiArCSAgMHhCQSwgMHhB OCwgMHhBQywgMHhCMSwgMHg5RCwgMHhDMSwgMHhDMSwKPiArCSAgMHhCNywgMHgwMCwgMHg5Qywg MHgwMCwgMHg5RiwgMHgwMCwgMHhENiB9LAo+ICsJeyBNQ1NfR0FNTUFfQ1RSTCwgMHgwMCwKPiAr CSAgMHgxOCwgMHgwOCwgMHgyNCwgMHg1ZiwgMHg1MCwgMHgyZCwgMHhCNiwKPiArCSAgMHhCOSwg MHhBNywgMHhBZCwgMHhCMSwgMHg5ZiwgMHhiZSwgMHhDMCwKPiArCSAgMHhCNSwgMHgwMCwgMHhh MCwgMHgwMCwgMHhhNCwgMHgwMCwgMHhkYiB9LAo+ICt9Owo+ICsKPiArLyogYXJyYXkgb2YgZ2Ft bWEgdGFibGVzIGZvciBnYW1tYSB2YWx1ZSAxLjkgKi8KPiArc3RhdGljIHU4IGNvbnN0IHM2ZTYz bTBfZ2FtbWFfMTlbTUFYX0dBTU1BX0xFVkVMXVtHQU1NQV9UQUJMRV9DT1VOVF0gPSB7Cj4gKwl7 IE1DU19HQU1NQV9DVFJMLCAweDAwLAo+ICsJICAweDE4LCAweDA4LCAweDI0LCAweDg0LCAweDQ1 LCAweDRGLCAweENBLAo+ICsJICAweENCLCAweEJDLCAweEM5LCAweENCLCAweEJDLCAweERBLCAw eERBLAo+ICsJICAweEQwLCAweDAwLCAweDM1LCAweDAwLCAweDM0LCAweDAwLCAweDRFIH0sCj4g Kwl7IE1DU19HQU1NQV9DVFJMLCAweDAwLAo+ICsJICAweDE4LCAweDA4LCAweDI0LCAweDc0LCAw eDYwLCAweDRBLCAweEMzLAo+ICsJICAweEM2LCAweEI1LCAweEJGLCAweEMzLCAweEIyLCAweEQy LCAweEQzLAo+ICsJICAweEM4LCAweDAwLCAweDVCLCAweDAwLCAweDVCLCAweDAwLCAweDgxIH0s Cj4gKwl7IE1DU19HQU1NQV9DVFJMLCAweDAwLAo+ICsJICAweDE4LCAweDA4LCAweDI0LCAweDZG LCAweDY1LCAweDQ2LCAweEMyLAo+ICsJICAweEM0LCAweEIzLCAweEJGLCAweEMyLCAweEIyLCAw eENGLCAweEQxLAo+ICsJICAweEM2LCAweDAwLCAweDY0LCAweDAwLCAweDY0LCAweDAwLCAweDhE IH0sCj4gKwl7IE1DU19HQU1NQV9DVFJMLCAweDAwLAo+ICsJICAweDE4LCAweDA4LCAweDI0LCAw eDZFLCAweDY1LCAweDQ1LCAweEMwLAo+ICsJICAweEMzLCAweEIyLCAweEJBLCAweEJFLCAweEFF LCAweENELCAweEQwLAo+ICsJICAweEM0LCAweDAwLCAweDcwLCAweDAwLCAweDcwLCAweDAwLCAw eDlDIH0sCj4gKwl7IE1DU19HQU1NQV9DVFJMLCAweDAwLAo+ICsJICAweDE4LCAweDA4LCAweDI0 LCAweDY5LCAweDY0LCAweDQwLCAweEJGLAo+ICsJICAweEMxLCAweEIwLCAweEI5LCAweEJFLCAw eEFELCAweENCLCAweENELAo+ICsJICAweEMyLCAweDAwLCAweDdBLCAweDAwLCAweDdCLCAweDAw LCAweEFBIH0sCj4gKwl7IE1DU19HQU1NQV9DVFJMLCAweDAwLAo+ICsJICAweDE4LCAweDA4LCAw eDI0LCAweDY4LCAweDY0LCAweDNGLCAweEJFLAo+ICsJICAweEMwLCAweEIwLCAweEI2LCAweEJC LCAweEFCLCAweEM4LCAweENCLAo+ICsJICAweEJGLCAweDAwLCAweDg1LCAweDAwLCAweDg2LCAw eDAwLCAweEI4IH0sCj4gKwl7IE1DU19HQU1NQV9DVFJMLCAweDAwLAo+ICsJICAweDE4LCAweDA4 LCAweDI0LCAweDY4LCAweDY0LCAweDQwLCAweEJDLAo+ICsJICAweEJGLCAweEFGLCAweEI0LCAw eEJBLCAweEE5LCAweEM4LCAweENBLAo+ICsJICAweEJFLCAweDAwLCAweDhCLCAweDAwLCAweDhD LCAweDAwLCAweEMwIH0sCj4gKwl7IE1DU19HQU1NQV9DVFJMLCAweDAwLAo+ICsJICAweDE4LCAw eDA4LCAweDI0LCAweDY3LCAweDY0LCAweDNGLCAweEJCLAo+ICsJICAweEJFLCAweEFELCAweEIz LCAweEI5LCAweEE3LCAweEM4LCAweEM5LAo+ICsJICAweEJFLCAweDAwLCAweDkwLCAweDAwLCAw eDkyLCAweDAwLCAweEM4IH0sCj4gKwl7IE1DU19HQU1NQV9DVFJMLCAweDAwLAo+ICsJICAweDE4 LCAweDA4LCAweDI0LCAweDYzLCAweDYxLCAweDNCLCAweEJBLAo+ICsJICAweEJFLCAweEFDLCAw eEIzLCAweEI4LCAweEE3LCAweEM2LCAweEM4LAo+ICsJICAweEJELCAweDAwLCAweDk2LCAweDAw LCAweDk4LCAweDAwLCAweENGIH0sCj4gKwl7IE1DU19HQU1NQV9DVFJMLCAweDAwLAo+ICsJICAw eDE4LCAweDA4LCAweDI0LCAweDYxLCAweDYwLCAweDM5LCAweEJCLAo+ICsJICAweEJFLCAweEFE LCAweEIyLCAweEI2LCAweEE2LCAweEM1LCAweEM3LAo+ICsJICAweEJELCAweDAwLCAweDlCLCAw eDAwLCAweDlFLCAweDAwLCAweEQ1IH0sCj4gKwl7IE1DU19HQU1NQV9DVFJMLCAweDAwLAo+ICsJ ICAweDE4LCAweDA4LCAweDI0LCAweDYxLCAweDVGLCAweDM5LCAweEJBLAo+ICsJICAweEJELCAw eEFELCAweEIxLCAweEI2LCAweEE1LCAweEM0LCAweEM1LAo+ICsJICAweEJDLCAweDAwLCAweEEw LCAweDAwLCAweEE0LCAweDAwLCAweERCIH0sCj4gK307Cj4gKwo+ICsvKiBhcnJheSBvZiBnYW1t YSB0YWJsZXMgZm9yIGdhbW1hIHZhbHVlIDEuNyAqLwo+ICtzdGF0aWMgdTggY29uc3QgczZlNjNt MF9nYW1tYV8xN1tNQVhfR0FNTUFfTEVWRUxdW0dBTU1BX1RBQkxFX0NPVU5UXSA9IHsKPiArCXsg TUNTX0dBTU1BX0NUUkwsIDB4MDAsCj4gKwkgIDB4MTgsIDB4MDgsIDB4MjQsIDB4OEYsIDB4NzMs IDB4NjMsIDB4RDEsCj4gKwkgIDB4RDAsIDB4QzUsIDB4Q0MsIDB4RDEsIDB4QzIsIDB4REUsIDB4 RTAsCj4gKwkgIDB4RDYsIDB4MDAsIDB4MzksIDB4MDAsIDB4MzYsIDB4MDAsIDB4NTEgfSwKPiAr CXsgTUNTX0dBTU1BX0NUUkwsIDB4MDAsCj4gKwkgIDB4MTgsIDB4MDgsIDB4MjQsIDB4ODIsIDB4 N0EsIDB4NUIsIDB4QzgsCj4gKwkgIDB4Q0IsIDB4QkQsIDB4QzUsIDB4Q0EsIDB4QkEsIDB4RDYs IDB4RDgsCj4gKwkgIDB4Q0UsIDB4MDAsIDB4NUQsIDB4MDAsIDB4NUUsIDB4MDAsIDB4ODIgfSwK PiArCXsgTUNTX0dBTU1BX0NUUkwsIDB4MDAsCj4gKwkgIDB4MTgsIDB4MDgsIDB4MjQsIDB4ODEs IDB4N0IsIDB4NUQsIDB4QzYsCj4gKwkgIDB4Q0EsIDB4QkIsIDB4QzMsIDB4QzcsIDB4QjgsIDB4 RDYsIDB4RDgsCj4gKwkgIDB4Q0QsIDB4MDAsIDB4NjUsIDB4MDAsIDB4NjcsIDB4MDAsIDB4OEQg fSwKPiArCXsgTUNTX0dBTU1BX0NUUkwsIDB4MDAsCj4gKwkgIDB4MTgsIDB4MDgsIDB4MjQsIDB4 N0IsIDB4NzcsIDB4NTgsIDB4QzMsCj4gKwkgIDB4QzgsIDB4QjgsIDB4QzIsIDB4QzYsIDB4QjYs IDB4RDMsIDB4RDQsCj4gKwkgIDB4Q0EsIDB4MDAsIDB4NzEsIDB4MDAsIDB4NzMsIDB4MDAsIDB4 OUUgfSwKPiArCXsgTUNTX0dBTU1BX0NUUkwsIDB4MDAsCj4gKwkgIDB4MTgsIDB4MDgsIDB4MjQs IDB4NzUsIDB4NzcsIDB4NTQsIDB4QzMsCj4gKwkgIDB4QzcsIDB4QjcsIDB4QzAsIDB4QzMsIDB4 QjQsIDB4RDEsIDB4RDMsCj4gKwkgIDB4QzksIDB4MDAsIDB4N0IsIDB4MDAsIDB4N0UsIDB4MDAs IDB4QUIgfSwKPiArCXsgTUNTX0dBTU1BX0NUUkwsIDB4MDAsCj4gKwkgIDB4MTgsIDB4MDgsIDB4 MjQsIDB4NzIsIDB4NzUsIDB4NTEsIDB4QzIsCj4gKwkgIDB4QzYsIDB4QjUsIDB4QkYsIDB4QzEs IDB4QjMsIDB4Q0UsIDB4RDEsCj4gKwkgIDB4QzYsIDB4MDAsIDB4ODUsIDB4MDAsIDB4ODgsIDB4 MDAsIDB4QkEgfSwKPiArCXsgTUNTX0dBTU1BX0NUUkwsIDB4MDAsCj4gKwkgIDB4MTgsIDB4MDgs IDB4MjQsIDB4NzEsIDB4NzMsIDB4NEYsIDB4QzIsCj4gKwkgIDB4QzUsIDB4QjUsIDB4QkQsIDB4 QzAsIDB4QjIsIDB4Q0QsIDB4RDEsCj4gKwkgIDB4QzUsIDB4MDAsIDB4OEIsIDB4MDAsIDB4OEUs IDB4MDAsIDB4QzIgfSwKPiArCXsgTUNTX0dBTU1BX0NUUkwsIDB4MDAsCj4gKwkgIDB4MTgsIDB4 MDgsIDB4MjQsIDB4NzEsIDB4NzIsIDB4NEYsIDB4QzIsCj4gKwkgIDB4QzQsIDB4QjUsIDB4QkIs IDB4QkYsIDB4QjAsIDB4Q0MsIDB4Q0YsCj4gKwkgIDB4QzMsIDB4MDAsIDB4OTEsIDB4MDAsIDB4 OTUsIDB4MDAsIDB4Q0EgfSwKPiArCXsgTUNTX0dBTU1BX0NUUkwsIDB4MDAsCj4gKwkgIDB4MTgs IDB4MDgsIDB4MjQsIDB4NzIsIDB4NzIsIDB4NTAsIDB4QzAsCj4gKwkgIDB4QzMsIDB4QjQsIDB4 QjksIDB4QkUsIDB4QUUsIDB4Q0MsIDB4Q0YsCj4gKwkgIDB4QzQsIDB4MDAsIDB4OTcsIDB4MDAs IDB4OUEsIDB4MDAsIDB4RDEgfSwKPiArCXsgTUNTX0dBTU1BX0NUUkwsIDB4MDAsCj4gKwkgIDB4 MTgsIDB4MDgsIDB4MjQsIDB4NzEsIDB4NzEsIDB4NTAsIDB4QkYsCj4gKwkgIDB4QzIsIDB4QjIs IDB4QkEsIDB4QkUsIDB4QUUsIDB4Q0IsIDB4Q0QsCj4gKwkgIDB4QzMsIDB4MDAsIDB4OUMsIDB4 MDAsIDB4OUYsIDB4MDAsIDB4RDYgfSwKPiArCXsgTUNTX0dBTU1BX0NUUkwsIDB4MDAsCj4gKwkg IDB4MTgsIDB4MDgsIDB4MjQsIDB4NzAsIDB4NzAsIDB4NEYsIDB4QkYsCj4gKwkgIDB4QzIsIDB4 QjIsIDB4QjgsIDB4QkMsIDB4QUMsIDB4Q0IsIDB4Q0QsCj4gKwkgIDB4QzMsIDB4MDAsIDB4QTAs IDB4MDAsIDB4QTQsIDB4MDAsIDB4REIgfSwKPiArfTsKPiArCj4gKyNkZWZpbmUgUzZFNjNNMF9T VEFURV9CSVRfRU5BQkxFRCAgICAgICAwCj4gKwo+ICtzdHJ1Y3QgczZlNjNtMCB7Cj4gKwlzdHJ1 Y3QgZGV2aWNlICpkZXY7Cj4gKwlzdHJ1Y3QgZHJtX3BhbmVsIHBhbmVsOwo+ICsKPiArCXN0cnVj dCByZWd1bGF0b3JfYnVsa19kYXRhIHN1cHBsaWVzWzJdOwo+ICsJc3RydWN0IGdwaW9fZGVzYyAq cmVzZXRfZ3BpbzsKPiArCXUzMiBwb3dlcl9vbl9kZWxheTsKPiArCXUzMiBwb3dlcl9vZmZfZGVs YXk7Cj4gKwl1MzIgcmVzZXRfZGVsYXk7Cj4gKwlzdHJ1Y3QgdmlkZW9tb2RlIHZtOwo+ICsJdTMy IHdpZHRoX21tOwo+ICsJdTMyIGhlaWdodF9tbTsKPiArCj4gKwl1bnNpZ25lZCBsb25nIHN0YXRl Owo+ICsJdW5zaWduZWQgaW50IGdhbW1hX21vZGU7Cj4gKwlpbnQgYnJpZ2h0bmVzczsKPiArCj4g KwkvKiBUaGlzIGZpZWxkIGlzIHRlc3RlZCBieSBmdW5jdGlvbnMgZGlyZWN0bHkgYWNjZXNzaW5n IGJ1cyBiZWZvcmUKPiArCSAqIHRyYW5zZmVyLCB0cmFuc2ZlciBpcyBza2lwcGVkIGlmIGl0IGlz IHNldC4gSW4gY2FzZSBvZiB0cmFuc2Zlcgo+ICsJICogZmFpbHVyZSBvciB1bmV4cGVjdGVkIHJl c3BvbnNlIHRoZSBmaWVsZCBpcyBzZXQgdG8gZXJyb3IgdmFsdWUuCj4gKwkgKiBTdWNoIGNvbnN0 cnVjdCBhbGxvd3MgdG8gZWxpbWluYXRlIG1hbnkgY2hlY2tzIGluIGhpZ2hlciBsZXZlbAo+ICsJ ICogZnVuY3Rpb25zLgo+ICsJICovCj4gKwlpbnQgZXJyb3I7Cj4gK307Cj4gKwo+ICtzdGF0aWMg aW5saW5lIHN0cnVjdCBzNmU2M20wICpwYW5lbF90b19zNmU2M20wKHN0cnVjdCBkcm1fcGFuZWwg KnBhbmVsKQo+ICt7Cj4gKwlyZXR1cm4gY29udGFpbmVyX29mKHBhbmVsLCBzdHJ1Y3QgczZlNjNt MCwgcGFuZWwpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHM2ZTYzbTBfY2xlYXJfZXJyb3Ioc3Ry dWN0IHM2ZTYzbTAgKmN0eCkKPiArewo+ICsJaW50IHJldCA9IGN0eC0+ZXJyb3I7Cj4gKwo+ICsJ Y3R4LT5lcnJvciA9IDA7Cj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHM2 ZTYzbTBfc3BpX3dyaXRlX3dvcmQoc3RydWN0IHM2ZTYzbTAgKmN0eCwgdTE2IGRhdGEpCj4gK3sK PiArCXN0cnVjdCBzcGlfZGV2aWNlICpzcGkgPSB0b19zcGlfZGV2aWNlKGN0eC0+ZGV2KTsKPiAr CXN0cnVjdCBzcGlfdHJhbnNmZXIgeGZlciA9IHsKPiArCQkubGVuCT0gMiwKPiArCQkudHhfYnVm ID0gJmRhdGEsCj4gKwl9Owo+ICsJc3RydWN0IHNwaV9tZXNzYWdlIG1zZzsKPiArCj4gKwlzcGlf bWVzc2FnZV9pbml0KCZtc2cpOwo+ICsJc3BpX21lc3NhZ2VfYWRkX3RhaWwoJnhmZXIsICZtc2cp Owo+ICsKPiArCXJldHVybiBzcGlfc3luYyhzcGksICZtc2cpOwo+ICt9Cj4gKwo+ICtzdGF0aWMg dm9pZCBzNmU2M20wX2Rjc193cml0ZShzdHJ1Y3QgczZlNjNtMCAqY3R4LCBjb25zdCB1OCAqZGF0 YSwgc2l6ZV90IGxlbikKPiArewo+ICsJaW50IHJldCA9IDA7Cj4gKwo+ICsJaWYgKGN0eC0+ZXJy b3IgPCAwIHx8IGxlbiA9PSAwKQo+ICsJCXJldHVybjsKPiArCj4gKwlkZXZfZGJnKGN0eC0+ZGV2 LCAid3JpdGluZyBkY3Mgc2VxOiAlKnBoXG4iLCAoaW50KWxlbiwgZGF0YSk7Cj4gKwlyZXQgPSBz NmU2M20wX3NwaV93cml0ZV93b3JkKGN0eCwgKmRhdGEpOwo+ICsKPiArCXdoaWxlICghcmV0ICYm IC0tbGVuKSB7Cj4gKwkJKytkYXRhOwo+ICsJCXJldCA9IHM2ZTYzbTBfc3BpX3dyaXRlX3dvcmQo Y3R4LCAqZGF0YSB8IDB4MTAwKTsKPiArCX0KPiArCj4gKwlpZiAocmV0KSB7Cj4gKwkJZGV2X2Vy cihjdHgtPmRldiwgImVycm9yICVkIHdyaXRpbmcgZGNzIHNlcTogJSpwaFxuIiwgcmV0LAo+ICsJ CQkoaW50KWxlbiwgZGF0YSk7Cj4gKwkJY3R4LT5lcnJvciA9IHJldDsKPiArCX0KPiArCj4gKwl1 c2xlZXBfcmFuZ2UoMzAwLCAzMTApOwo+ICt9Cj4gKwo+ICsjZGVmaW5lIHM2ZTYzbTBfZGNzX3dy aXRlX3NlcV9zdGF0aWMoY3R4LCBzZXEgLi4uKSBcCj4gKwkoeyBcCj4gKwkJc3RhdGljIGNvbnN0 IHU4IGRbXSA9IHsgc2VxIH07IFwKPiArCQlzNmU2M20wX2Rjc193cml0ZShjdHgsIGQsIEFSUkFZ X1NJWkUoZCkpOyBcCj4gKwl9KQo+ICsKPiArc3RhdGljIHZvaWQgczZlNjNtMF9icmlnaHRuZXNz X3NldChzdHJ1Y3QgczZlNjNtMCAqY3R4KQo+ICt7Cj4gKwkvKiBkaXNhYmxlIGFuZCBzZXQgbmV3 IGdhbW1hICovCj4gKwlzd2l0Y2ggKGN0eC0+Z2FtbWFfbW9kZSkgewo+ICsJY2FzZSBHQU1NQV9N T0RFXzIyOgo+ICsJCXM2ZTYzbTBfZGNzX3dyaXRlKGN0eCwKPiArCQkJCSAgczZlNjNtMF9nYW1t YV8yMltjdHgtPmJyaWdodG5lc3NdLAo+ICsJCQkJICBBUlJBWV9TSVpFKHM2ZTYzbTBfZ2FtbWFf MjJbY3R4LT5icmlnaHRuZXNzXSkKPiArCQkJCSAgKTsKPiArCQlicmVhazsKPiArCWNhc2UgR0FN TUFfTU9ERV8xOToKPiArCQlzNmU2M20wX2Rjc193cml0ZShjdHgsCj4gKwkJCQkgIHM2ZTYzbTBf Z2FtbWFfMTlbY3R4LT5icmlnaHRuZXNzXSwKPiArCQkJCSAgQVJSQVlfU0laRShzNmU2M20wX2dh bW1hXzE5W2N0eC0+YnJpZ2h0bmVzc10pCj4gKwkJCQkgICk7Cj4gKwkJYnJlYWs7Cj4gKwljYXNl IEdBTU1BX01PREVfMTc6Cj4gKwkJczZlNjNtMF9kY3Nfd3JpdGUoY3R4LAo+ICsJCQkJICBzNmU2 M20wX2dhbW1hXzE3W2N0eC0+YnJpZ2h0bmVzc10sCj4gKwkJCQkgIEFSUkFZX1NJWkUoczZlNjNt MF9nYW1tYV8xN1tjdHgtPmJyaWdodG5lc3NdKQo+ICsJCQkJICApOwo+ICsJCWJyZWFrOwo+ICsJ ZGVmYXVsdDoKPiArCQlkZXZfaW5mbyhjdHgtPmRldiwKPiArCQkJICJnYW1tYSBtb2RlIGNvdWxk IGJlIDA6Mi4yLCAxOjEuOSBvciAyOjEuNy5Bc3N1bWluZyAyLjJcbiIKPiArCQkJICk7Cj4gKwkJ czZlNjNtMF9kY3Nfd3JpdGUoY3R4LAo+ICsJCQkJICBzNmU2M20wX2dhbW1hXzIyW2N0eC0+YnJp Z2h0bmVzc10sCj4gKwkJCQkgIEFSUkFZX1NJWkUoczZlNjNtMF9nYW1tYV8yMltjdHgtPmJyaWdo dG5lc3NdKQo+ICsJCQkJICApOwo+ICsJCWJyZWFrOwo+ICsJfQo+ICsKPiArCS8qIHVwZGF0ZSBn YW1tYSB0YWJsZS4gKi8KPiArCXM2ZTYzbTBfZGNzX3dyaXRlX3NlcV9zdGF0aWMoY3R4LCBNQ1Nf R0FNTUFfQ1RSTCwgMHgwMSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHM2ZTYzbTBfaW5pdChz dHJ1Y3QgczZlNjNtMCAqY3R4KQo+ICt7Cj4gKwlzNmU2M20wX2Rjc193cml0ZV9zZXFfc3RhdGlj KGN0eCwgTUNTX1BBTkVMX0NPTkRJVElPTiwKPiArCQkJCSAgICAgMHgwMSwgMHgyNywgMHgyNywg MHgwNywgMHgwNywgMHg1NCwgMHg5ZiwKPiArCQkJCSAgICAgMHg2MywgMHg4NiwgMHgxYSwgMHgz MywgMHgwZCwgMHgwMCwgMHgwMCk7Cj4gKwo+ICsJczZlNjNtMF9kY3Nfd3JpdGVfc2VxX3N0YXRp YyhjdHgsIE1DU19ESVNQTEFZX0NPTkRJVElPTiwKPiArCQkJCSAgICAgMHgwMiwgMHgwMywgMHgx YywgMHgxMCwgMHgxMCk7Cj4gKwlzNmU2M20wX2Rjc193cml0ZV9zZXFfc3RhdGljKGN0eCwgMHhm NywKPiArCQkJCSAgICAgMHgwMywgMHgwMCwgMHgwMCk7Cj4gKwo+ICsJczZlNjNtMF9kY3Nfd3Jp dGVfc2VxX3N0YXRpYyhjdHgsIE1DU19HQU1NQV9DVFJMLAo+ICsJCQkJICAgICAweDAwLCAweDE4 LCAweDA4LCAweDI0LCAweDY0LCAweDU2LCAweDMzLAo+ICsJCQkJICAgICAweGI2LCAweGJhLCAw eGE4LCAweGFjLCAweGIxLCAweDlkLCAweGMxLAo+ICsJCQkJICAgICAweGMxLCAweGI3LCAweDAw LCAweDljLCAweDAwLCAweDlmLCAweDAwLAo+ICsJCQkJICAgICAweGQ2KTsKPiArCXM2ZTYzbTBf ZGNzX3dyaXRlX3NlcV9zdGF0aWMoY3R4LCBNQ1NfR0FNTUFfQ1RSTCwKPiArCQkJCSAgICAgMHgw MSk7Cj4gKwo+ICsJczZlNjNtMF9kY3Nfd3JpdGVfc2VxX3N0YXRpYyhjdHgsIE1DU19FVENfQ09O RElUSU9OLAo+ICsJCQkJICAgICAweDAwLCAweDhjLCAweDA3KTsKPiArCXM2ZTYzbTBfZGNzX3dy aXRlX3NlcV9zdGF0aWMoY3R4LCAweGIzLAo+ICsJCQkJICAgICAweGMpOwo+ICsKPiArCXM2ZTYz bTBfZGNzX3dyaXRlX3NlcV9zdGF0aWMoY3R4LCAweGI1LAo+ICsJCQkJICAgICAweDJjLCAweDEy LCAweDBjLCAweDBhLCAweDEwLCAweDBlLCAweDE3LAo+ICsJCQkJICAgICAweDEzLCAweDFmLCAw eDFhLCAweDJhLCAweDI0LCAweDFmLCAweDFiLAo+ICsJCQkJICAgICAweDFhLCAweDE3LCAweDJi LCAweDI2LCAweDIyLCAweDIwLCAweDNhLAo+ICsJCQkJICAgICAweDM0LCAweDMwLCAweDJjLCAw eDI5LCAweDI2LCAweDI1LCAweDIzLAo+ICsJCQkJICAgICAweDIxLCAweDIwLCAweDFlLCAweDFl KTsKPiArCj4gKwlzNmU2M20wX2Rjc193cml0ZV9zZXFfc3RhdGljKGN0eCwgMHhiNiwKPiArCQkJ CSAgICAgMHgwMCwgMHgwMCwgMHgxMSwgMHgyMiwgMHgzMywgMHg0NCwgMHg0NCwKPiArCQkJCSAg ICAgMHg0NCwgMHg1NSwgMHg1NSwgMHg2NiwgMHg2NiwgMHg2NiwgMHg2NiwKPiArCQkJCSAgICAg MHg2NiwgMHg2Nik7Cj4gKwo+ICsJczZlNjNtMF9kY3Nfd3JpdGVfc2VxX3N0YXRpYyhjdHgsIDB4 YjcsCj4gKwkJCQkgICAgIDB4MmMsIDB4MTIsIDB4MGMsIDB4MGEsIDB4MTAsIDB4MGUsIDB4MTcs Cj4gKwkJCQkgICAgIDB4MTMsIDB4MWYsIDB4MWEsIDB4MmEsIDB4MjQsIDB4MWYsIDB4MWIsCj4g KwkJCQkgICAgIDB4MWEsIDB4MTcsIDB4MmIsIDB4MjYsIDB4MjIsIDB4MjAsIDB4M2EsCj4gKwkJ CQkgICAgIDB4MzQsIDB4MzAsIDB4MmMsIDB4MjksIDB4MjYsIDB4MjUsIDB4MjMsCj4gKwkJCQkg ICAgIDB4MjEsIDB4MjAsIDB4MWUsIDB4MWUsIDB4MDAsIDB4MDAsIDB4MTEsCj4gKwkJCQkgICAg IDB4MjIsIDB4MzMsIDB4NDQsIDB4NDQsIDB4NDQsIDB4NTUsIDB4NTUsCj4gKwkJCQkgICAgIDB4 NjYsIDB4NjYsIDB4NjYsIDB4NjYsIDB4NjYsIDB4NjYpOwo+ICsKPiArCXM2ZTYzbTBfZGNzX3dy aXRlX3NlcV9zdGF0aWMoY3R4LCAweGI5LAo+ICsJCQkJICAgICAweDJjLCAweDEyLCAweDBjLCAw eDBhLCAweDEwLCAweDBlLCAweDE3LAo+ICsJCQkJICAgICAweDEzLCAweDFmLCAweDFhLCAweDJh LCAweDI0LCAweDFmLCAweDFiLAo+ICsJCQkJICAgICAweDFhLCAweDE3LCAweDJiLCAweDI2LCAw eDIyLCAweDIwLCAweDNhLAo+ICsJCQkJICAgICAweDM0LCAweDMwLCAweDJjLCAweDI5LCAweDI2 LCAweDI1LCAweDIzLAo+ICsJCQkJICAgICAweDIxLCAweDIwLCAweDFlLCAweDFlKTsKPiArCj4g KwlzNmU2M20wX2Rjc193cml0ZV9zZXFfc3RhdGljKGN0eCwgMHhiYSwKPiArCQkJCSAgICAgMHgw MCwgMHgwMCwgMHgxMSwgMHgyMiwgMHgzMywgMHg0NCwgMHg0NCwKPiArCQkJCSAgICAgMHg0NCwg MHg1NSwgMHg1NSwgMHg2NiwgMHg2NiwgMHg2NiwgMHg2NiwKPiArCQkJCSAgICAgMHg2NiwgMHg2 Nik7Cj4gKwo+ICsJczZlNjNtMF9kY3Nfd3JpdGVfc2VxX3N0YXRpYyhjdHgsIDB4YzEsCj4gKwkJ CQkgICAgIDB4NGQsIDB4OTYsIDB4MWQsIDB4MDAsIDB4MDAsIDB4MDEsIDB4ZGYsCj4gKwkJCQkg ICAgIDB4MDAsIDB4MDAsIDB4MDMsIDB4MWYsIDB4MDAsIDB4MDAsIDB4MDAsCj4gKwkJCQkgICAg IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDYsCj4gKwkJCQkgICAgIDB4 MDksIDB4MGQsIDB4MGYsIDB4MTIsIDB4MTUsIDB4MTgpOwo+ICsKPiArCXM2ZTYzbTBfZGNzX3dy aXRlX3NlcV9zdGF0aWMoY3R4LCAweGIyLAo+ICsJCQkJICAgICAweDEwLCAweDEwLCAweDBiLCAw eDA1KTsKPiArCj4gKwlzNmU2M20wX2Rjc193cml0ZV9zZXFfc3RhdGljKGN0eCwgTUNTX0FDTF9D VFJMLAo+ICsJCQkJICAgICAweDAxKTsKPiArCj4gKwlzNmU2M20wX2Rjc193cml0ZV9zZXFfc3Rh dGljKGN0eCwgTUNTX0VMVlNTX09OLAo+ICsJCQkJICAgICAweDBiKTsKPiArCj4gKwlzNmU2M20w X2Rjc193cml0ZV9zZXFfc3RhdGljKGN0eCwgTUNTX1NUQU5EX0JZX09GRik7Cj4gKwo+ICsJczZl NjNtMF9kY3Nfd3JpdGVfc2VxX3N0YXRpYyhjdHgsIE1DU19ESVNQTEFZX09OKTsKPiArCj4gKwlz NmU2M20wX2JyaWdodG5lc3Nfc2V0KGN0eCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgczZlNjNt MF9wb3dlcl9vbihzdHJ1Y3QgczZlNjNtMCAqY3R4KQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsKPiAr CXJldCA9IHJlZ3VsYXRvcl9idWxrX2VuYWJsZShBUlJBWV9TSVpFKGN0eC0+c3VwcGxpZXMpLCBj dHgtPnN1cHBsaWVzKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJ bXNsZWVwKGN0eC0+cG93ZXJfb25fZGVsYXkpOwo+ICsKPiArCWdwaW9kX3NldF92YWx1ZShjdHgt PnJlc2V0X2dwaW8sIDEpOwo+ICsJbXNsZWVwKGN0eC0+cmVzZXRfZGVsYXkpOwo+ICsJZ3Bpb2Rf c2V0X3ZhbHVlKGN0eC0+cmVzZXRfZ3BpbywgMCk7Cj4gKwltc2xlZXAoY3R4LT5yZXNldF9kZWxh eSk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgczZlNjNtMF9wb3dl cl9vZmYoc3RydWN0IHM2ZTYzbTAgKmN0eCkKPiArewo+ICsJbXNsZWVwKGN0eC0+cG93ZXJfb2Zm X2RlbGF5KTsKPiArCj4gKwlyZXR1cm4gcmVndWxhdG9yX2J1bGtfZGlzYWJsZShBUlJBWV9TSVpF KGN0eC0+c3VwcGxpZXMpLCBjdHgtPnN1cHBsaWVzKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBz NmU2M20wX2Rpc2FibGUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4gK3sKPiArCXJldHVybiAw Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHM2ZTYzbTBfdW5wcmVwYXJlKHN0cnVjdCBkcm1fcGFu ZWwgKnBhbmVsKQo+ICt7Cj4gKwlzdHJ1Y3QgczZlNjNtMCAqY3R4ID0gcGFuZWxfdG9fczZlNjNt MChwYW5lbCk7Cj4gKwo+ICsJY2xlYXJfYml0KFM2RTYzTTBfU1RBVEVfQklUX0VOQUJMRUQsICZj dHgtPnN0YXRlKTsKPiArCj4gKwlzNmU2M20wX2Rjc193cml0ZV9zZXFfc3RhdGljKGN0eCwgTUlQ SV9EQ1NfRU5URVJfU0xFRVBfTU9ERSk7Cj4gKwo+ICsJczZlNjNtMF9jbGVhcl9lcnJvcihjdHgp Owo+ICsKPiArCXJldHVybiBzNmU2M20wX3Bvd2VyX29mZihjdHgpOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgaW50IHM2ZTYzbTBfcHJlcGFyZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPiArewo+ICsJ c3RydWN0IHM2ZTYzbTAgKmN0eCA9IHBhbmVsX3RvX3M2ZTYzbTAocGFuZWwpOwo+ICsJaW50IHJl dDsKPiArCj4gKwlyZXQgPSBzNmU2M20wX3Bvd2VyX29uKGN0eCk7Cj4gKwlpZiAocmV0IDwgMCkK PiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCXM2ZTYzbTBfaW5pdChjdHgpOwo+ICsKPiArCXJldCA9 IHM2ZTYzbTBfY2xlYXJfZXJyb3IoY3R4KTsKPiArCj4gKwlpZiAocmV0IDwgMCkKPiArCQlzNmU2 M20wX3VucHJlcGFyZShwYW5lbCk7Cj4gKwllbHNlCj4gKwkJc2V0X2JpdChTNkU2M00wX1NUQVRF X0JJVF9FTkFCTEVELCAmY3R4LT5zdGF0ZSk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsK PiArc3RhdGljIGludCBzNmU2M20wX2VuYWJsZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPiAr ewo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgczZlNjNtMF9nZXRfbW9kZXMo c3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4gK3sKPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IgPSBwYW5lbC0+Y29ubmVjdG9yOwo+ICsJc3RydWN0IHM2ZTYzbTAgKmN0eCA9IHBh bmVsX3RvX3M2ZTYzbTAocGFuZWwpOwo+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7 Cj4gKwo+ICsJbW9kZSA9IGRybV9tb2RlX2NyZWF0ZShjb25uZWN0b3ItPmRldik7Cj4gKwlpZiAo IW1vZGUpIHsKPiArCQlEUk1fRVJST1IoImZhaWxlZCB0byBjcmVhdGUgYSBuZXcgZGlzcGxheSBt b2RlXG4iKTsKPiArCQlyZXR1cm4gMDsKPiArCX0KPiArCj4gKwlkcm1fZGlzcGxheV9tb2RlX2Zy b21fdmlkZW9tb2RlKCZjdHgtPnZtLCBtb2RlKTsKPiArCW1vZGUtPndpZHRoX21tID0gY3R4LT53 aWR0aF9tbTsKPiArCW1vZGUtPmhlaWdodF9tbSA9IGN0eC0+aGVpZ2h0X21tOwo+ICsJY29ubmVj dG9yLT5kaXNwbGF5X2luZm8ud2lkdGhfbW0gPSBtb2RlLT53aWR0aF9tbTsKPiArCWNvbm5lY3Rv ci0+ZGlzcGxheV9pbmZvLmhlaWdodF9tbSA9IG1vZGUtPmhlaWdodF9tbTsKPiArCj4gKwltb2Rl LT50eXBlID0gRFJNX01PREVfVFlQRV9EUklWRVIgfCBEUk1fTU9ERV9UWVBFX1BSRUZFUlJFRDsK PiArCW1vZGUtPmZsYWdzID0gRFJNX01PREVfRkxBR19OVlNZTkMgfCBEUk1fTU9ERV9GTEFHX05I U1lOQzsKPiArCWRybV9tb2RlX3Byb2JlZF9hZGQoY29ubmVjdG9yLCBtb2RlKTsKPiArCj4gKwly ZXR1cm4gMTsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGFuZWxfZnVuY3Mg czZlNjNtMF9kcm1fZnVuY3MgPSB7Cj4gKwkuZGlzYWJsZQk9IHM2ZTYzbTBfZGlzYWJsZSwKPiAr CS51bnByZXBhcmUJPSBzNmU2M20wX3VucHJlcGFyZSwKPiArCS5wcmVwYXJlCT0gczZlNjNtMF9w cmVwYXJlLAo+ICsJLmVuYWJsZQkJPSBzNmU2M20wX2VuYWJsZSwKPiArCS5nZXRfbW9kZXMJPSBz NmU2M20wX2dldF9tb2RlcywKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgczZlNjNtMF9nZXRfYnJp Z2h0bmVzcyhzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmQpCj4gK3sKPiArCXJldHVybiBiZC0+ cHJvcHMuYnJpZ2h0bmVzczsKPiArfQoKClRoaXMgY2FsbGJhY2sgY2FuIGJlIG9taXR0ZWQgQUZB SUsuCgoKPiArCj4gK3N0YXRpYyBpbnQgczZlNjNtMF9zZXRfYnJpZ2h0bmVzcyhzdHJ1Y3QgYmFj a2xpZ2h0X2RldmljZSAqYmQpCj4gK3sKPiArCXN0cnVjdCBzNmU2M20wICpjdHggPSBibF9nZXRf ZGF0YShiZCk7Cj4gKwo+ICsJYmQtPnByb3BzLnBvd2VyID0gRkJfQkxBTktfVU5CTEFOSzsKPiAr CWlmIChjdHgtPmJyaWdodG5lc3MgIT0gYmQtPnByb3BzLmJyaWdodG5lc3MpIHsKPiArCQljdHgt PmJyaWdodG5lc3MgPSBiZC0+cHJvcHMuYnJpZ2h0bmVzczsKPiArCQlpZiAodGVzdF9iaXQoUzZF NjNNMF9TVEFURV9CSVRfRU5BQkxFRCwgJmN0eC0+c3RhdGUpKQo+ICsJCQlzNmU2M20wX2JyaWdo dG5lc3Nfc2V0KGN0eCk7CgoKSXQgaXMgcmFjeTogb25lIHRocmVhZCBzZXR0aW5nIGJyaWdodG5l c3MsIGFub3RoZXIgZGlzYWJsaW5nIHBhbmVsLApuYXN0eSB0aW1pbmdzIGFuZCB3ZSBoYXZlIGF0 dGVtcHQgdG8gc2VuZCBkYXRhIHRvIGRpc2FibGVkIHBhbmVsLgoKSSBkbyBub3Qga25vdyBiYWNr bGlnaHQgZnJhbWV3b3JrIHRvbyBtdWNoIGJ1dCBpdCBkb2VzIG5vdCBpbnRlZ3JhdGUKd2VsbCB3 aXRoIGRybSdzIElNTy4KCkkgZ3Vlc3Mgc29tZSBzb2x1dGlvbiB3b3VsZCBiZSB0byBhZGQgbXV0 ZXggcHJvdGVjdGluZyBmcm9tIGNvbmN1cnJlbnQKaHcgYWNjZXNzZXMgZnJvbSBkcm0gYW5kIGJh Y2tsaWdodCBBUElzLgoKCj4gKwl9Cj4gKwo+ICsJcmV0dXJuIHM2ZTYzbTBfY2xlYXJfZXJyb3Io Y3R4KTsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBiYWNrbGlnaHRfb3BzIHM2ZTYz bTBfYmFja2xpZ2h0X29wcyA9IHsKPiArCS5nZXRfYnJpZ2h0bmVzcyA9IHM2ZTYzbTBfZ2V0X2Jy aWdodG5lc3MsCj4gKwkudXBkYXRlX3N0YXR1cwk9IHM2ZTYzbTBfc2V0X2JyaWdodG5lc3MsCj4g K307Cj4gKwo+ICtzdGF0aWMgdm9pZCBzNmU2M20wX2JhY2tsaWdodF9yZWdpc3RlcihzdHJ1Y3Qg czZlNjNtMCAqY3R4KQo+ICt7Cj4gKwlzdHJ1Y3QgYmFja2xpZ2h0X3Byb3BlcnRpZXMgcHJvcHMg PSB7Cj4gKwkJLnR5cGUJCT0gQkFDS0xJR0hUX1JBVywKPiArCQkuYnJpZ2h0bmVzcwk9IGN0eC0+ YnJpZ2h0bmVzcywKPiArCQkubWF4X2JyaWdodG5lc3MgPSBNQVhfQlJJR0hUTkVTUwo+ICsJfTsK PiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IGN0eC0+ZGV2Owo+ICsJc3RydWN0IGJhY2tsaWdodF9k ZXZpY2UgKmJkOwo+ICsKPiArCWJkID0gZGV2bV9iYWNrbGlnaHRfZGV2aWNlX3JlZ2lzdGVyKGRl diwgInBhbmVsIiwgZGV2LCBjdHgsCj4gKwkJCQkJICAgICZzNmU2M20wX2JhY2tsaWdodF9vcHMs ICZwcm9wcyk7Cj4gKwlpZiAoSVNfRVJSKGJkKSkKPiArCQlkZXZfZXJyKGRldiwgImVycm9yIHJl Z2lzdGVyaW5nIGJhY2tsaWdodCBkZXZpY2UgKCVsZClcbiIsCj4gKwkJCVBUUl9FUlIoYmQpKTsK PiArfQo+ICsKPiArCj4gK3N0YXRpYyBzc2l6ZV90IHM2ZTYzbTBfc3lzZnNfZ2FtbWFfbW9kZV9z aG93KHN0cnVjdCBkZXZpY2UgKmRldiwKPiArCQkJCQkgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmli dXRlICphdHRyLAo+ICsJCQkJCSAgICAgY2hhciAqYnVmKQo+ICt7Cj4gKwlzdHJ1Y3QgczZlNjNt MCAqY3R4ID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwljaGFyIHRlbXBbMTBdOwo+ICsKPiAr CXN3aXRjaCAoY3R4LT5nYW1tYV9tb2RlKSB7Cj4gKwljYXNlIEdBTU1BX01PREVfMjI6Cj4gKwkJ c3ByaW50Zih0ZW1wLCAiMi4yIG1vZGVcbiIpOwo+ICsJCXN0cmNhdChidWYsIHRlbXApOwo+ICsJ CWJyZWFrOwo+ICsJY2FzZSBHQU1NQV9NT0RFXzE5Ogo+ICsJCXNwcmludGYodGVtcCwgIjEuOSBt b2RlXG4iKTsKPiArCQlzdHJjYXQoYnVmLCB0ZW1wKTsKPiArCQlicmVhazsKPiArCWNhc2UgR0FN TUFfTU9ERV8xNzoKPiArCQlzcHJpbnRmKHRlbXAsICIxLjcgbW9kZVxuIik7Cj4gKwkJc3RyY2F0 KGJ1ZiwgdGVtcCk7Cj4gKwkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ICsJCWRldl9pbmZvKGRldiwg ImdhbW1hIG1vZGUgY291bGQgYmUgMDoyLjIsIDE6MS45IG9yIDI6MS43KW4iKTsKPiArCQlicmVh azsKPiArCX0KPiArCj4gKwlyZXR1cm4gc3RybGVuKGJ1Zik7Cj4gK30KPiArCj4gK3N0YXRpYyBz c2l6ZV90IHM2ZTYzbTBfc3lzZnNfZ2FtbWFfbW9kZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYs Cj4gKwkJCQkJICAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCj4gKwkJCQkJICAg ICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKQo+ICt7Cj4gKwlzdHJ1Y3QgczZlNjNtMCAq Y3R4ID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwlpbnQgcmM7Cj4gKwo+ICsJcmMgPSBrc3Ry dG91aW50KGJ1ZiwgMCwgJmN0eC0+Z2FtbWFfbW9kZSk7Cj4gKwlpZiAocmMgPCAwKQo+ICsJCXJl dHVybiByYzsKPiArCj4gKwlzNmU2M20wX2JyaWdodG5lc3Nfc2V0KGN0eCk7Cj4gKwlyZXR1cm4g bGVuOwo+ICt9Cj4gKwo+ICtzdGF0aWMgREVWSUNFX0FUVFIoZ2FtbWFfbW9kZSwgMDY0NCwKPiAr CQkgICBzNmU2M20wX3N5c2ZzX2dhbW1hX21vZGVfc2hvdywKPiArCQkgICBzNmU2M20wX3N5c2Zz X2dhbW1hX21vZGVfc3RvcmUpOwoKCkkgc2VlIHRoaXMgYXR0cmlidXRlIHdhcyBjb3BpZWQgZnJv bSB2ZW5kb3IgY29kZSwgYnV0IGl0IGlzIHN0aWxsCnVuY2xlYXIgaG93IGl0IHdhcyB1c2VkIHRo ZXJlLiBIYXZlIHlvdSBzZWVuIHVzZXJzcGFjZSBjb2RlIHRoYXQgdXNlZAp0aGlzIHByb3BlcnR5 PwoKCj4gKwo+ICtzdGF0aWMgaW50IHM2ZTYzbTBfcGFyc2VfZHQoc3RydWN0IHM2ZTYzbTAgKmN0 eCkKPiArewo+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gY3R4LT5kZXY7Cj4gKwlzdHJ1Y3QgZGV2 aWNlX25vZGUgKm5wID0gZGV2LT5vZl9ub2RlOwo+ICsJaW50IHJldDsKPiArCj4gKwlyZXQgPSBv Zl9nZXRfdmlkZW9tb2RlKG5wLCAmY3R4LT52bSwgMCk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQly ZXR1cm4gcmV0Owo+ICsKPiArCXJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAicG93ZXIt b24tZGVsYXkiLCAmY3R4LT5wb3dlcl9vbl9kZWxheSk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJZGV2 X2luZm8oY3R4LT5kZXYsICJ1c2luZyBkZWZhdWx0IHBvd2VyLW9uLWRlbGF5IG9mIDI1bXMiKTsK PiArCQljdHgtPnBvd2VyX29uX2RlbGF5ID0gMjU7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gb2ZfcHJv cGVydHlfcmVhZF91MzIobnAsICJwb3dlci1vZmYtZGVsYXkiLAo+ICsJCQkJICAgJmN0eC0+cG93 ZXJfb2ZmX2RlbGF5KTsKPiArCWlmIChyZXQpIHsKPiArCQlkZXZfaW5mbyhjdHgtPmRldiwgInVz aW5nIGRlZmF1bHQgcG93ZXItb2YtZGVsYXkgb2YgMjAwbXMiKTsKPiArCQljdHgtPnBvd2VyX29m Zl9kZWxheSA9IDIwMDsKPiArCX0KPiArCj4gKwlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihu cCwgInJlc2V0LWRlbGF5IiwgJmN0eC0+cmVzZXRfZGVsYXkpOwo+ICsJaWYgKHJldCkgewo+ICsJ CWRldl9pbmZvKGN0eC0+ZGV2LCAidXNpbmcgZGVmYXVsdCByZXNldC1kZWxheSBvZiAxMjBtcyIp Owo+ICsJCWN0eC0+cmVzZXRfZGVsYXkgPSAxMjA7Cj4gKwl9Cj4gKwo+ICsJb2ZfcHJvcGVydHlf cmVhZF91MzIobnAsICJwYW5lbC13aWR0aC1tbSIsICZjdHgtPndpZHRoX21tKTsKPiArCW9mX3By b3BlcnR5X3JlYWRfdTMyKG5wLCAicGFuZWwtaGVpZ2h0LW1tIiwgJmN0eC0+aGVpZ2h0X21tKTsK PiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBzNmU2M20wX3Byb2JlKHN0 cnVjdCBzcGlfZGV2aWNlICpzcGkpCj4gK3sKPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZzcGkt PmRldjsKPiArCXN0cnVjdCBzNmU2M20wICpjdHg7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWN0eCA9 IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZihzdHJ1Y3QgczZlNjNtMCksIEdGUF9LRVJORUwpOwo+ ICsJaWYgKCFjdHgpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJc3BpX3NldF9kcnZkYXRh KHNwaSwgY3R4KTsKPiArCj4gKwljdHgtPmRldiA9IGRldjsKPiArCWN0eC0+YnJpZ2h0bmVzcyA9 IE1BWF9CUklHSFRORVNTOwo+ICsJY3R4LT5nYW1tYV9tb2RlID0gR0FNTUFfTU9ERV8yMjsKPiAr Cj4gKwlyZXQgPSBzNmU2M20wX3BhcnNlX2R0KGN0eCk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQly ZXR1cm4gcmV0Owo+ICsKPiArCWN0eC0+c3VwcGxpZXNbMF0uc3VwcGx5ID0gInZkZDMiOwo+ICsJ Y3R4LT5zdXBwbGllc1sxXS5zdXBwbHkgPSAidmNpIjsKPiArCXJldCA9IGRldm1fcmVndWxhdG9y X2J1bGtfZ2V0KGRldiwgQVJSQVlfU0laRShjdHgtPnN1cHBsaWVzKSwKPiArCQkJCSAgICAgIGN0 eC0+c3VwcGxpZXMpOwo+ICsJaWYgKHJldCA8IDApIHsKPiArCQlkZXZfZXJyKGRldiwgImZhaWxl ZCB0byBnZXQgcmVndWxhdG9yczogJWRcbiIsIHJldCk7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0K PiArCj4gKwljdHgtPnJlc2V0X2dwaW8gPSBkZXZtX2dwaW9kX2dldChkZXYsICJyZXNldCIsIEdQ SU9EX09VVF9MT1cpOwoKClNob3VsZG4ndCBiZSBzZXQgdG8gR1BJT0RfT1VUX0hJR0g/IEFuZCBk ZWNsYXJlZCBhcyBhY3RpdmUgbG93PwoKCj4gKwlpZiAoSVNfRVJSKGN0eC0+cmVzZXRfZ3Bpbykp IHsKPiArCQlkZXZfZXJyKGRldiwgImNhbm5vdCBnZXQgcmVzZXQtZ3Bpb3MgJWxkXG4iLAo+ICsJ CQlQVFJfRVJSKGN0eC0+cmVzZXRfZ3BpbykpOwo+ICsJCXJldHVybiBQVFJfRVJSKGN0eC0+cmVz ZXRfZ3Bpbyk7Cj4gKwl9Cj4gKwo+ICsJc3BpLT5iaXRzX3Blcl93b3JkID0gOTsKPiArCXNwaS0+ bW9kZSA9IFNQSV9NT0RFXzM7Cj4gKwlyZXQgPSBzcGlfc2V0dXAoc3BpKTsKPiArCWlmIChyZXQg PCAwKSB7Cj4gKwkJZGV2X2VycihkZXYsICJzcGkgc2V0dXAgZmFpbGVkLlxuIik7Cj4gKwkJcmV0 dXJuIHJldDsKPiArCX0KPiArCj4gKwlyZXQgPSBkZXZpY2VfY3JlYXRlX2ZpbGUoZGV2LCAmZGV2 X2F0dHJfZ2FtbWFfbW9kZSk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlkZXZfZXJyKGRldiwgImZh aWxlZCB0byBhZGQgc3lzZnMgZW50cmllc1xuIik7Cj4gKwo+ICsJZHJtX3BhbmVsX2luaXQoJmN0 eC0+cGFuZWwpOwo+ICsJY3R4LT5wYW5lbC5kZXYgPSBkZXY7Cj4gKwljdHgtPnBhbmVsLmZ1bmNz ID0gJnM2ZTYzbTBfZHJtX2Z1bmNzOwo+ICsKPiArCXJldCA9IGRybV9wYW5lbF9hZGQoJmN0eC0+ cGFuZWwpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJZ290byBlcnJfcmVtb3ZlX2ZpbGU7Cj4gKwo+ ICsJczZlNjNtMF9iYWNrbGlnaHRfcmVnaXN0ZXIoY3R4KTsKPiArCj4gKwlyZXR1cm4gMDsKPiAr Cj4gK2Vycl9yZW1vdmVfZmlsZToKPiArCWRldmljZV9yZW1vdmVfZmlsZShkZXYsICZkZXZfYXR0 cl9nYW1tYV9tb2RlKTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50 IHM2ZTYzbTBfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCj4gK3sKPiArCXN0cnVjdCBz NmU2M20wICpjdHggPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKPiArCj4gKwlzNmU2M20wX3Bvd2Vy X29mZihjdHgpOwoKClBvd2VyIHNob3VsZCBiZSBjb250cm9sbGVkIGJ5IGRybSwgb2YgY291cnNl IHRoZSBwcm9ibGVtIGlzIHRoYXQgZHJtCnN0aWxsIGRvZXMgbm90IGtub3cgdGhhdCBwYW5lbCBp cyBkdXJpbmcgcmVtb3ZhbCwgbWF5YmUgaXQgd2lsbCBiZSBmaXhlZAppbiBuZWFyIGZ1dHVyZS7C oCBJIGd1ZXNzIHlvdSBjYW4gcmVtb3ZlIHRoZSBsaW5lIGFib3ZlLCBhbmQgaG9wZSB0aGUKaXNz dWUgd2lsbCBiZSBmaXhlZCBpbiBkcm0gY29yZS4KCgpSZWdhcmRzCgpBbmRyemVqCgoKPiArCWRy bV9wYW5lbF9yZW1vdmUoJmN0eC0+cGFuZWwpOwo+ICsJZGV2aWNlX3JlbW92ZV9maWxlKGN0eC0+ ZGV2LCAmZGV2X2F0dHJfZ2FtbWFfbW9kZSk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHM2ZTYzbTBfb2ZfbWF0Y2hbXSA9IHsK PiArCXsgLmNvbXBhdGlibGUgPSAic2Ftc3VuZyxzNmU2M20wIiB9LAo+ICsJeyB9Cj4gK307Cj4g K01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHM2ZTYzbTBfb2ZfbWF0Y2gpOwo+ICsKPiArc3RhdGlj IHN0cnVjdCBzcGlfZHJpdmVyIHM2ZTYzbTBfZHJpdmVyID0gewo+ICsJLnByb2JlCQkJPSBzNmU2 M20wX3Byb2JlLAo+ICsJLnJlbW92ZQkJCT0gczZlNjNtMF9yZW1vdmUsCj4gKwkuZHJpdmVyCQkJ PSB7Cj4gKwkJLm5hbWUJCT0gInBhbmVsLXNhbXN1bmctczZlNjNtMCIsCj4gKwkJLm9mX21hdGNo X3RhYmxlID0gczZlNjNtMF9vZl9tYXRjaCwKPiArCX0sCj4gK307Cj4gK21vZHVsZV9zcGlfZHJp dmVyKHM2ZTYzbTBfZHJpdmVyKTsKPiArCj4gK01PRFVMRV9BVVRIT1IoIlBhd2XFgiBDaG1pZWwg PHBhd2VsLm1pa29sYWouY2htaWVsQGdtYWlsLmNvbT4iKTsKPiArTU9EVUxFX0RFU0NSSVBUSU9O KCJzNmU2M20wIExDRCBEcml2ZXIiKTsKPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwoKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=