From mboxrd@z Thu Jan 1 00:00:00 1970 From: Liu Ying Subject: Re: [PATCH RFC v3 13/18] drm: panel: Add support for Himax HX8369A MIPI DSI panel Date: Wed, 24 Dec 2014 13:28:57 +0800 Message-ID: <549A4F19.30201@freescale.com> References: <1419306399-9387-1-git-send-email-Ying.Liu@freescale.com> <1419306399-9387-14-git-send-email-Ying.Liu@freescale.com> <54994633.9070007@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <54994633.9070007@samsung.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Andrzej Hajda , dri-devel@lists.freedesktop.org Cc: devicetree@vger.kernel.org, linux@arm.linux.org.uk, andyshrk@gmail.com, linux-kernel@vger.kernel.org, kernel@pengutronix.de, mturquette@linaro.org, linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org SGkgQW5kcnplaiwKCk9uIDEyLzIzLzIwMTQgMDY6MzggUE0sIEFuZHJ6ZWogSGFqZGEgd3JvdGU6 Cj4gSGkgTGl1IFlpbmcsCj4KPiBPbiAxMi8yMy8yMDE0IDA0OjQ2IEFNLCBMaXUgWWluZyB3cm90 ZToKPj4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIEhpbWF4IEhYODM2OUEgTUlQSSBEU0kg cGFuZWwuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IExpdSBZaW5nIDxZaW5nLkxpdUBmcmVlc2NhbGUu Y29tPgo+PiAtLS0KPj4gdjItPnYzOgo+PiAgICogU29ydCB0aGUgaW5jbHVkZWQgaGVhZGVyIGZp bGVzIGFscGhhYmV0aWNhbGx5Lgo+Pgo+PiB2MS0+djI6Cj4+ICAgKiBBZGRyZXNzIGFsbW9zdCBh bGwgY29tbWVudHMgZnJvbSBUaGllcnJ5IFJlZGluZy4KPj4gICAqIFJlbW92ZSBzZXZlcmFsIERU IHByb3BlcnRpZXMgYXMgdGhleSBjYW4gYmUgaW1wbGllZCBieSB0aGUgY29tcGF0aWJsZSBzdHJp bmcuCj4+ICAgKiBBZGQgdGhlIEhJTUFYL2hpbWF4IHByZWZpeGVzIHRvIHRoZSBkcml2ZXIncyBL Y29uZmlnIG5hbWUgYW5kIGRyaXZlciBuYW1lLgo+PiAgICogTW92ZSB0aGUgZHJpdmVyJ3MgTWFr ZWZpbGUgZW50cnkgcGxhY2UgdG8gc29ydCB0aGUgZW50cmllcyBhbHBoYWJldGljYWxseS4KPj4g ICAqIFJldXNlIHNldmVyYWwgc3RhbmRhcmQgRENTIGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIGludmVu dGluZyB3aGVlbHMuCj4+ICAgKiBNb3ZlIHRoZSBwYW5lbCByZXNldHRpbmcgYW5kIHBvd2VyIGxv Z2ljcyB0byB0aGUgZHJpdmVyIHByb2JlL3JlbW92ZSBzdGFnZXMuCj4+ICAgICBUaGlzIG1heSBz aW1wbGlmeSBwYW5lbCBwcmVwYXJlL3VucHJlcGFyZSBob29rcy4gVGhlIHBvd2VyIGNvbnN1bXB0 aW9uIHNob3VsZAo+PiAgICAgbm90IGNoYW5nZSBhIGxvdCBhdCBEUE1TIHNpbmNlIHRoZSBwYW5l bCBlbnRlcnMgc2xlZXAgbW9kZSBhdCB0aGF0IHRpbWUuCj4KPiBXaGF0IGtpbmQgb2YgaXNzdWVz IGRpZCB5b3UgaGF2ZSB3aXRoIHJlc2V0L3Bvd2VyIGxvZ2ljIGluCj4gcHJlcGFyZS91bnByZXBh cmU/IEFzIEkgc2VlIGl0IHNob3VsZCBiZSBqdXN0IGEgbWF0dGVyIG9mIG1vdmluZwo+IHBvd2Vy IG9uL29mZiBmdW5jdGlvbnMgdG8gcHJlcGFyZS91bnByZXBhcmUsIGFtIEkgcmlnaHQ/CgpUaGUg aXNzdWUgaXMgdGhhdCB0aGUgcGFuZWwgZG9lcyBub3Qgd29yayBhbnkgbW9yZSBpZiBJIGhhdmUg dGhlCnJlc2V0L3Bvd2VyIGxvZ2ljIGluIHByZXBhcmUvdW5wcmVwYXJlLiAgSSBkb24ndCBzZWUg YW55IHZhbHVhYmxlCmluZm9ybWF0aW9uIGluIGRtZXNnIHdoZW4gdGhlIHN5c3RlbSBib290cyB1 cCBvciBJIHVuYmxhbmsvYmxhbmsKdGhlIGZyYW1lYnVmZmVyIG1hbnVhbGx5IHZpYSBzeXNmcy4g IFRoZSBwYW5lbCBiYWNrbGlnaHQgZG9lcyBub3QKbGlnaHQgdXAuCgpJIHRoaW5rIGl0IHNob3Vs ZCBiZSBhIG1hdHRlciBvZiBtb3ZpbmcgKHBvd2VyLW9uIGFuZCByZXNldCkvCnBvd2VyLW9mZiB0 byBwcmVwYXJlL3VucHJlcGFyZS4KCkluIG15IHN5c3RlbSwgdGhlIHBvd2VyIGZvciB0aGUgcGFu ZWwgaXMgYWx3YXlzIGVuYWJsZWQuICBTbywgdGhpcwppc3N1ZSBpcyBwcm9iYWJseSBjYXVzZWQg YnkgdGhlIHJlc2V0IG9wZXJhdGlvbi4KCj4KPj4gICAqIEFkZCB0aGUgbW9kdWxlIGF1dGhvci4K Pj4gICAqIE90aGVyIG1pbm9yIGNoYW5nZXMsIHN1Y2ggYXMgY29kaW5nIHN0eWxlIGlzc3Vlcy4K Pj4KPj4gICAuLi4vZGV2aWNldHJlZS9iaW5kaW5ncy9wYW5lbC9oaW1heCxoeDgzNjlhLnR4dCAg ICB8ICA0MSArKwo+PiAgIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnICAgICAgICAgICAg ICAgICAgICAgIHwgICA1ICsKPj4gICBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUgICAg ICAgICAgICAgICAgICAgICB8ICAgMSArCj4+ICAgZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVs LWhpbWF4LWh4ODM2OWEuYyAgICAgICAgfCA1NzMgKysrKysrKysrKysrKysrKysrKysrCj4+ICAg NCBmaWxlcyBjaGFuZ2VkLCA2MjAgaW5zZXJ0aW9ucygrKQo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0 NCBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGFuZWwvaGltYXgsaHg4MzY5YS50 eHQKPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLWhp bWF4LWh4ODM2OWEuYwo+Pgo+PiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVl L2JpbmRpbmdzL3BhbmVsL2hpbWF4LGh4ODM2OWEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0 cmVlL2JpbmRpbmdzL3BhbmVsL2hpbWF4LGh4ODM2OWEudHh0Cj4+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0Cj4+IGluZGV4IDAwMDAwMDAuLjM2YTJmMTEKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9E b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGFuZWwvaGltYXgsaHg4MzY5YS50eHQK Pj4gQEAgLTAsMCArMSw0MSBAQAo+PiArSGltYXggSFg4MzY5QSBXVkdBIDE2LjdNIGNvbG9yIFRG VCBzaW5nbGUgY2hpcCBkcml2ZXIgd2l0aCBpbnRlcm5hbCBHUkFNCj4+ICsKPj4gK0hpbWF4IEhY ODM2OUEgaXMgYSBXVkdBIHJlc29sdXRpb24gZHJpdmluZyBjb250cm9sbGVyLgo+PiArSXQgaXMg ZGVzaWduZWQgdG8gcHJvdmlkZSBhIHNpbmdsZSBjaGlwIHNvbHV0aW9uIHRoYXQgY29tYmluZXMg YSBzb3VyY2UKPj4gK2RyaXZlciBhbmQgcG93ZXIgc3VwcGx5IGNpcmN1aXRzIHRvIGRyaXZlIGEg VEZUIGRvdCBtYXRyaXggTENEIHdpdGgKPj4gKzQ4MFJHQng4NjQgZG90cyBhdCB0aGUgbWF4aW11 bS4KPj4gKwo+PiArVGhlIEhYODM2OUEgc3VwcG9ydHMgc2V2ZXJhbCBpbnRlcmZhY2UgbW9kZXMs IGluY2x1ZGluZyBNUFUgTUlQSSBEQkkgVHlwZQo+PiArQS9CIG1vZGUsIE1JUEkgRFBJL0RCSSBU eXBlIEMgbW9kZSwgTUlQSSBEU0kgdmlkZW8gbW9kZSwgTUlQSSBEU0kgY29tbWFuZAo+PiArbW9k ZSBhbmQgTURESSBtb2RlLiBUaGUgaW50ZXJmYWNlIG1vZGUgaXMgc2VsZWN0ZWQgYnkgdGhlIGV4 dGVybmFsIGhhcmR3YXJlCj4+ICtwaW5zIEJTWzM6MF0uCj4+ICsKPj4gK0N1cnJlbnRseSwgb25s eSB0aGUgTUlQSSBEU0kgdmlkZW8gbW9kZSBpcyBzdXBwb3J0ZWQuCj4+ICsKPj4gK1JlcXVpcmVk IHByb3BlcnRpZXM6Cj4+ICsgIC0gY29tcGF0aWJsZTogc2hvdWxkIGJlIGEgcGFuZWwncyBjb21w YXRpYmxlIHN0cmluZwo+PiArICAtIHJlZzogdGhlIHZpcnR1YWwgY2hhbm5lbCBudW1iZXIgb2Yg YSBEU0kgcGVyaXBoZXJhbCBhcyBkZXNjcmliZWQgaW4gWzFdCj4+ICsgIC0gcmVzZXQtZ3Bpb3M6 IGEgR1BJTyBzcGVjIGZvciB0aGUgcmVzZXQgcGluCj4+ICsKPj4gK09wdGlvbmFsIHByb3BlcnRp ZXM6Cj4+ICsgIC0gdmRkMS1zdXBwbHk6IEkvTyBhbmQgaW50ZXJmYWNlIHBvd2VyIHN1cHBseQo+ PiArICAtIHZkZDItc3VwcGx5OiBhbmFsb2cgcG93ZXIgc3VwcGx5Cj4+ICsgIC0gdmRkMy1zdXBw bHk6IGxvZ2ljIHBvd2VyIHN1cHBseQo+PiArICAtIGRzaS12Y2Mtc3VwcGx5OiBEU0kgYW5kIE1E REkgcG93ZXIgc3VwcGx5Cj4+ICsgIC0gdnBwLXN1cHBseTogT1RQIHByb2dyYW1taW5nIHZvbHRh Z2UKPj4gKyAgLSBiczAtZ3Bpb3M6IGEgR1BJTyBzcGVjIGZvciB0aGUgcGluIEJTMAo+PiArICAt IGJzMS1ncGlvczogYSBHUElPIHNwZWMgZm9yIHRoZSBwaW4gQlMxCj4+ICsgIC0gYnMyLWdwaW9z OiBhIEdQSU8gc3BlYyBmb3IgdGhlIHBpbiBCUzIKPj4gKyAgLSBiczMtZ3Bpb3M6IGEgR1BJTyBz cGVjIGZvciB0aGUgcGluIEJTMwo+Cj4gSSB3b25kZXIgaWYgaXQgd291bGRuJ3QgYmUgYmV0dGVy IHRvIHJlcGxhY2UgaXQgYnkgZ3BpbyBsaXN0LCBzdGggbGlrZToKPiAgICAgICAtIGJzLWdwaW9z OiBsaXN0IG9mIGZvdXIgR1BJTyBzcGVjcyBmb3IgQlMwLUJTMyBwaW5zCj4KPiBBdCBsZWFzdCBk b2N1bWVudGF0aW9uIHN1Z2dlc3RzIGl0IFsxXSwgaXQgYWxzbyBhbGxvd3MgdG8gb21pdCBzb21l IHBpbnMKPiBpZiBuZWNlc3NhcnksIGJ1dCBpdCBpcyBqdXN0IHN1Z2dlc3Rpb24uCj4KPiBbMV06 IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8udHh0CgpUaGUgc3Vn Z2VzdGlvbiBsb29rcyBnb29kLiAgSSBtYXkgdHJ5IHRvIHVzZSB0aGUgZ3BpbyBsaXN0LiAgVGhh bmtzLgoKPgo+PiArCj4+ICtbMV0gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21p cGkvZHNpL21pcGktZHNpLWJ1cy50eHQKPj4gKwo+PiArRXhhbXBsZToKPj4gKwlwYW5lbCB7Cj4+ ICsJCWNvbXBhdGlibGUgPSAidHJ1bHksdGZ0NDgwODAwLTE2LWUtZHNpIjsKPj4gKwkJcmVnID0g PDA+Owo+PiArCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOwo+PiArCQlwaW5jdHJsLTAgPSA8 JnBpbmN0cmxfbWlwaV9wYW5lbD47Cj4+ICsJCXJlc2V0LWdwaW9zID0gPCZncGlvNiAxMSBHUElP X0FDVElWRV9MT1c+Owo+PiArCQliczItZ3Bpb3MgPSA8JmdwaW82IDE0IEdQSU9fQUNUSVZFX0hJ R0g+Owo+PiArCX07Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZp ZyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCj4+IGluZGV4IDAyNGU5OGUuLjgxYjBi ZjAgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCj4+IEBAIC0xNiw2ICsxNiwxMSBAQCBjb25m aWcgRFJNX1BBTkVMX1NJTVBMRQo+PiAgIAkgIHRoYXQgaXQgY2FuIGJlIGF1dG9tYXRpY2FsbHkg dHVybmVkIG9mZiB3aGVuIHRoZSBwYW5lbCBnb2VzIGludG8gYQo+PiAgIAkgIGxvdyBwb3dlciBz dGF0ZS4KPj4KPj4gK2NvbmZpZyBEUk1fUEFORUxfSElNQVhfSFg4MzY5QQo+PiArCXRyaXN0YXRl ICJIaW1heCBIWDgzNjlBIHBhbmVsIgo+PiArCWRlcGVuZHMgb24gT0YKPj4gKwlzZWxlY3QgRFJN X01JUElfRFNJCj4+ICsKPj4gICBjb25maWcgRFJNX1BBTkVMX0xEOTA0MAo+PiAgIAl0cmlzdGF0 ZSAiTEQ5MDQwIFJHQi9TUEkgcGFuZWwiCj4+ICAgCWRlcGVuZHMgb24gT0YgJiYgU1BJCj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9k cm0vcGFuZWwvTWFrZWZpbGUKPj4gaW5kZXggNGIyYTA0My4uZDVkYmUwNiAxMDA2NDQKPj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9wYW5lbC9NYWtlZmlsZQo+PiBAQCAtMSw0ICsxLDUgQEAKPj4gICBvYmotJChDT05GSUdfRFJN X1BBTkVMX1NJTVBMRSkgKz0gcGFuZWwtc2ltcGxlLm8KPj4gK29iai0kKENPTkZJR19EUk1fUEFO RUxfSElNQVhfSFg4MzY5QSkgKz0gcGFuZWwtaGltYXgtaHg4MzY5YS5vCj4+ICAgb2JqLSQoQ09O RklHX0RSTV9QQU5FTF9MRDkwNDApICs9IHBhbmVsLWxkOTA0MC5vCj4+ICAgb2JqLSQoQ09ORklH X0RSTV9QQU5FTF9TNkU4QUEwKSArPSBwYW5lbC1zNmU4YWEwLm8KPj4gICBvYmotJChDT05GSUdf RFJNX1BBTkVMX1NIQVJQX0xRMTAxUjFTWDAxKSArPSBwYW5lbC1zaGFycC1scTEwMXIxc3gwMS5v Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtaGltYXgtaHg4MzY5 YS5jIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLWhpbWF4LWh4ODM2OWEuYwo+PiBuZXcg ZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwLi42ZWZjZThlCj4+IC0tLSAvZGV2L251 bGwKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLWhpbWF4LWh4ODM2OWEuYwo+ PiBAQCAtMCwwICsxLDU3MyBAQAo+PiArLyoKPj4gKyAqIEhpbWF4IEhYODM2OUEgcGFuZWwgZHJp dmVyLgo+PiArICoKPj4gKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE0IEZyZWVzY2FsZSBTZW1p Y29uZHVjdG9yLCBJbmMuCj4+ICsgKgo+PiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPj4gKyAqIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFz Cj4+ICsgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPj4gKyAq Cj4+ICsgKiBUaGlzIGRyaXZlciBpcyBiYXNlZCBvbiBTYW1zdW5nIHM2ZThhYTAgcGFuZWwgZHJp dmVyLgo+PiArICovCj4+ICsKPj4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+PiArI2luY2x1ZGUg PGRybS9kcm1fbWlwaV9kc2kuaD4KPj4gKyNpbmNsdWRlIDxkcm0vZHJtX3BhbmVsLmg+Cj4+ICsK Pj4gKyNpbmNsdWRlIDxsaW51eC9ncGlvL2NvbnN1bWVyLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgv b2ZfZGV2aWNlLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1bWVyLmg+Cj4+ ICsKPj4gKyNpbmNsdWRlIDx2aWRlby9taXBpX2Rpc3BsYXkuaD4KPj4gKyNpbmNsdWRlIDx2aWRl by9vZl92aWRlb21vZGUuaD4KPj4gKyNpbmNsdWRlIDx2aWRlby92aWRlb21vZGUuaD4KPj4gKwo+ PiArI2RlZmluZSBXUkRJU0JWCQkweDUxCj4+ICsjZGVmaW5lIFdSQ1RSTEQJCTB4NTMKPj4gKyNk ZWZpbmUgV1JDQUJDCQkweDU1Cj4+ICsjZGVmaW5lIFNFVFBPV0VSCTB4YjEKPj4gKyNkZWZpbmUg U0VURElTUAkJMHhiMgo+PiArI2RlZmluZSBTRVRDWUMJCTB4YjQKPj4gKyNkZWZpbmUgU0VUVkNP TQkJMHhiNgo+PiArI2RlZmluZSBTRVRFWFRDCQkweGI5Cj4+ICsjZGVmaW5lIFNFVE1JUEkJCTB4 YmEKPj4gKyNkZWZpbmUgU0VUUEFORUwJMHhjYwo+PiArI2RlZmluZSBTRVRHSVAJCTB4ZDUKPj4g KyNkZWZpbmUgU0VUR0FNTUEJMHhlMAo+PiArCj4+ICsjZGVmaW5lIEhYODM2OUFfTUlOX0JSSUdI VE5FU1MJMHgwMAo+PiArI2RlZmluZSBIWDgzNjlBX01BWF9CUklHSFRORVNTCTB4ZmYKPj4gKwo+ PiArZW51bSBoeDgzNjlhX21wdV9pbnRlcmZhY2Ugewo+PiArCUhYODM2OUFfREJJX1RZUEVfQV84 QklULAo+PiArCUhYODM2OUFfREJJX1RZUEVfQV85QklULAo+PiArCUhYODM2OUFfREJJX1RZUEVf QV8xNkJJVCwKPj4gKwlIWDgzNjlBX0RCSV9UWVBFX0FfMThCSVQsCj4+ICsJSFg4MzY5QV9EQklf VFlQRV9CXzhCSVQsCj4+ICsJSFg4MzY5QV9EQklfVFlQRV9CXzlCSVQsCj4+ICsJSFg4MzY5QV9E QklfVFlQRV9CXzE2QklULAo+PiArCUhYODM2OUFfREJJX1RZUEVfQl8xOEJJVCwKPj4gKwlIWDgz NjlBX0RTSV9DTURfTU9ERSwKPj4gKwlIWDgzNjlBX0RCSV9UWVBFX0JfMjRCSVQsCj4+ICsJSFg4 MzY5QV9EU0lfVklERU9fTU9ERSwKPj4gKwlIWDgzNjlBX01EREksCj4+ICsJSFg4MzY5QV9EUElf REJJX1RZUEVfQ19PUFQxLAo+PiArCUhYODM2OUFfRFBJX0RCSV9UWVBFX0NfT1BUMiwKPj4gKwlI WDgzNjlBX0RQSV9EQklfVFlQRV9DX09QVDMKPj4gK307Cj4+ICsKPj4gK2VudW0gaHg4MzY5YV9y ZXNvbHV0aW9uIHsKPj4gKwlIWDgzNjlBX1JFU180ODBfODY0LAo+PiArCUhYODM2OUFfUkVTXzQ4 MF84NTQsCj4+ICsJSFg4MzY5QV9SRVNfNDgwXzgwMCwKPj4gKwlIWDgzNjlBX1JFU180ODBfNjQw LAo+PiArCUhYODM2OUFfUkVTXzM2MF82NDAsCj4+ICsJSFg4MzY5QV9SRVNfNDgwXzcyMCwKPj4g K307Cj4+ICsKPj4gK3N0cnVjdCBoeDgzNjlhX3BhbmVsX2Rlc2Mgewo+PiArCWNvbnN0IHN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICptb2RlOwo+PiArCj4+ICsJLyogbXMgKi8KPj4gKwl1bnNpZ25l ZCBpbnQgcG93ZXJfb25fZGVsYXk7Cj4+ICsJdW5zaWduZWQgaW50IHJlc2V0X2RlbGF5Owo+PiAr Cj4+ICsJdW5zaWduZWQgaW50IGRzaV9sYW5lczsKPj4gK307Cj4+ICsKPj4gK3N0cnVjdCBoeDgz NjlhIHsKPj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4+ICsJc3RydWN0IGRybV9wYW5lbCBwYW5l bDsKPj4gKwo+PiArCWNvbnN0IHN0cnVjdCBoeDgzNjlhX3BhbmVsX2Rlc2MgKnBkOwo+PiArCj4+ ICsJc3RydWN0IHJlZ3VsYXRvcl9idWxrX2RhdGEgc3VwcGxpZXNbNV07Cj4+ICsJc3RydWN0IGdw aW9fZGVzYyAqcmVzZXRfZ3BpbzsKPj4gKwlzdHJ1Y3QgZ3Bpb19kZXNjICpic19ncGlvWzRdOwo+ PiArCXU4IHJlc19zZWw7Cj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBoeDgz NjlhICpwYW5lbF90b19oeDgzNjlhKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQo+PiArewo+PiAr CXJldHVybiBjb250YWluZXJfb2YocGFuZWwsIHN0cnVjdCBoeDgzNjlhLCBwYW5lbCk7Cj4+ICt9 Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIGh4ODM2OWFfZGNzX3dyaXRlKHN0cnVjdCBoeDgzNjlhICpj dHgsIGNvbnN0IGNoYXIgKmZ1bmMsCj4+ICsJCQkgICAgICBjb25zdCB2b2lkICpkYXRhLCBzaXpl X3QgbGVuKQo+PiArewo+PiArCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSA9IHRvX21pcGlf ZHNpX2RldmljZShjdHgtPmRldik7Cj4+ICsJc3NpemVfdCByZXQ7Cj4+ICsKPj4gKwlyZXQgPSBt aXBpX2RzaV9kY3Nfd3JpdGVfYnVmZmVyKGRzaSwgZGF0YSwgbGVuKTsKPj4gKwlpZiAocmV0IDwg MCkKPj4gKwkJZGV2X2VycihjdHgtPmRldiwgIiVzIGZhaWxlZDogJWRcbiIsIGZ1bmMsIHJldCk7 Cj4KPiBZb3VyIG9ubHkgcmVhY3Rpb24gdG8gdHJhbnNtaXNzaW9uIGVycm9ycyBpcyB0byBsb2cg ZXJyb3IsIG5vIGVycm9yCj4gcHJvcGFnYXRpb24uIEkgdGhpbmsgaXQgaXMgbm90IHRoZSBiZXN0 IGFwcHJvYWNoLiBJIHN1Z2dlc3QgdG8gaW1wbGVtZW50Cj4gZXJyb3IgcHJvcGFnYXRpb24gZWl0 aGVyIHRoZSB3YXkgSSBkaWQgaW4gczZlOGFhMCwgZWl0aGVyIHRoZSB3YXkKPiBUaGllcnJ5IHN1 Z2dlc3RzLiBPZiBjb3Vyc2UgSSBwcmVmZXIgbXkgbWV0aG9kIGFzIGl0IHNpZ25pZmljYW50bHkK PiByZWR1Y2VzIGNvZGUgYmxvYXQgZHVlIHRvIGVycm9yIGNoZWNraW5nLCBidXQgaXQgaXMgdXAg dG8geW91LgoKSSdsbCBpbXBsZW1lbnQgZXJyb3IgcHJvcGFnYXRpb24gaW4gdGhlIG5leHQgdmVy c2lvbi4KCj4KPj4gK30KPj4gKwo+PiArI2RlZmluZSBoeDgzNjlhX2Rjc193cml0ZV9zZXEoY3R4 LCBzZXEuLi4pIFwKPj4gKyh7IFwKPj4gKwljb25zdCB1OCBkW10gPSB7IHNlcSB9OyBcCj4+ICsJ QlVJTERfQlVHX09OX01TRyhBUlJBWV9TSVpFKGQpID4gNjQsICJEQ1Mgc2VxdWVuY2UgdG9vIGJp ZyBmb3Igc3RhY2siKTsgXAo+PiArCWh4ODM2OWFfZGNzX3dyaXRlKGN0eCwgX19mdW5jX18sIGQs IEFSUkFZX1NJWkUoZCkpOyBcCj4+ICt9KQo+PiArCj4+ICsjZGVmaW5lIGh4ODM2OWFfZGNzX3dy aXRlX3NlcV9zdGF0aWMoY3R4LCBzZXEuLi4pIFwKPj4gKyh7IFwKPj4gKwlzdGF0aWMgY29uc3Qg dTggZFtdID0geyBzZXEgfTsgXAo+PiArCWh4ODM2OWFfZGNzX3dyaXRlKGN0eCwgX19mdW5jX18s IGQsIEFSUkFZX1NJWkUoZCkpOyBcCj4+ICt9KQo+PiArCj4+ICtzdGF0aWMgdm9pZCBoeDgzNjlh X2RzaV9zZXRfZGlzcGxheV9yZWxhdGVkX3JlZ2lzdGVyKHN0cnVjdCBoeDgzNjlhICpjdHgpCj4+ ICt7Cj4+ICsJdTggc2VjX3AgPSAoY3R4LT5yZXNfc2VsIDw8IDQpIHwgMHgwMzsKPj4gKwo+PiAr CWh4ODM2OWFfZGNzX3dyaXRlX3NlcShjdHgsIFNFVERJU1AsIDB4MDAsIHNlY19wLCAweDAzLAo+ PiArCQkweDAzLCAweDcwLCAweDAwLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAo+PiAr CQkweDAzLCAweDAzLCAweDAwLCAweDAxKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgaHg4 MzY5YV9kc2lfc2V0X2Rpc3BsYXlfd2F2ZWZvcm1fY3ljbGUoc3RydWN0IGh4ODM2OWEgKmN0eCkK Pj4gK3sKPj4gKwloeDgzNjlhX2Rjc193cml0ZV9zZXFfc3RhdGljKGN0eCwgU0VUQ1lDLCAweDAw LCAweDFkLCAweDVmLCAweDBlLCAweDA2KTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgaHg4 MzY5YV9kc2lfc2V0X2dpcChzdHJ1Y3QgaHg4MzY5YSAqY3R4KQo+PiArewo+PiArCWh4ODM2OWFf ZGNzX3dyaXRlX3NlcV9zdGF0aWMoY3R4LCBTRVRHSVAsIDB4MDAsIDB4MDQsIDB4MDMsIDB4MDAs IDB4MDEsCj4+ICsJCQkJMHgwNSwgMHgxYywgMHg3MCwgMHgwMSwgMHgwMywgMHgwMCwgMHgwMCwg MHg0MCwKPj4gKwkJCQkweDA2LCAweDUxLCAweDA3LCAweDAwLCAweDAwLCAweDQxLCAweDA2LCAw eDUwLAo+PiArCQkJCTB4MDcsIDB4MDcsIDB4MGYsIDB4MDQpOwo+PiArfQo+PiArCj4+ICtzdGF0 aWMgdm9pZCBoeDgzNjlhX2RzaV9zZXRfcG93ZXIoc3RydWN0IGh4ODM2OWEgKmN0eCkKPj4gK3sK Pj4gKwloeDgzNjlhX2Rjc193cml0ZV9zZXFfc3RhdGljKGN0eCwgU0VUUE9XRVIsIDB4MDEsIDB4 MDAsIDB4MzQsIDB4MDYsIDB4MDAsCj4+ICsJCQkJMHgwZiwgMHgwZiwgMHgyYSwgMHgzMiwgMHgz ZiwgMHgzZiwgMHgwNywgMHgzYSwKPj4gKwkJCQkweDAxLCAweGU2LCAweGU2LCAweGU2LCAweGU2 LCAweGU2KTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgaHg4MzY5YV9kc2lfc2V0X3Zjb21f dm9sdGFnZShzdHJ1Y3QgaHg4MzY5YSAqY3R4KQo+PiArewo+PiArCWh4ODM2OWFfZGNzX3dyaXRl X3NlcV9zdGF0aWMoY3R4LCBTRVRWQ09NLCAweDU2LCAweDU2KTsKPj4gK30KPj4gKwo+PiArc3Rh dGljIHZvaWQgaHg4MzY5YV9kc2lfc2V0X3BhbmVsKHN0cnVjdCBoeDgzNjlhICpjdHgpCj4+ICt7 Cj4+ICsJaHg4MzY5YV9kY3Nfd3JpdGVfc2VxX3N0YXRpYyhjdHgsIFNFVFBBTkVMLCAweDAyKTsK Pj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgaHg4MzY5YV9kc2lfc2V0X2dhbW1hX2N1cnZlKHN0 cnVjdCBoeDgzNjlhICpjdHgpCj4+ICt7Cj4+ICsJaHg4MzY5YV9kY3Nfd3JpdGVfc2VxX3N0YXRp YyhjdHgsIFNFVEdBTU1BLCAweDAwLCAweDFkLCAweDIyLCAweDM4LCAweDNkLAo+PiArCQkJCTB4 M2YsIDB4MmUsIDB4NGEsIDB4MDYsIDB4MGQsIDB4MGYsIDB4MTMsIDB4MTUsCj4+ICsJCQkJMHgx MywgMHgxNiwgMHgxMCwgMHgxOSwgMHgwMCwgMHgxZCwgMHgyMiwgMHgzOCwKPj4gKwkJCQkweDNk LCAweDNmLCAweDJlLCAweDRhLCAweDA2LCAweDBkLCAweDBmLCAweDEzLAo+PiArCQkJCTB4MTUs IDB4MTMsIDB4MTYsIDB4MTAsIDB4MTkpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBoeDgz NjlhX2RzaV9zZXRfbWlwaShzdHJ1Y3QgaHg4MzY5YSAqY3R4KQo+PiArewo+PiArCXU4IGVsZXZl bnRoX3AgPSBjdHgtPnBkLT5kc2lfbGFuZXMgPT0gMiA/IDB4MTEgOiAweDEwOwo+PiArCj4+ICsJ aHg4MzY5YV9kY3Nfd3JpdGVfc2VxKGN0eCwgU0VUTUlQSSwgMHgwMCwgMHhhMCwgMHhjNiwgMHgw MCwgMHgwYSwgMHgwMCwKPj4gKwkJCTB4MTAsIDB4MzAsIDB4NmYsIDB4MDIsIGVsZXZlbnRoX3As IDB4MTgsIDB4NDApOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBoeDgzNjlhX2RzaV9zZXRf aW50ZXJmYWNlX3BpeGVsX2ZvbWF0KHN0cnVjdCBoeDgzNjlhICpjdHgpCj4+ICt7Cj4+ICsJc3Ry dWN0IG1pcGlfZHNpX2RldmljZSAqZHNpID0gdG9fbWlwaV9kc2lfZGV2aWNlKGN0eC0+ZGV2KTsK Pj4gKwl1OCBmb3JtYXQ7Cj4+ICsJaW50IHJldDsKPj4gKwo+PiArCWlmIChkc2ktPmZvcm1hdCA9 PSBNSVBJX0RTSV9GTVRfUkdCODg4KQo+PiArCQlmb3JtYXQgPSAweDc3Owo+PiArCWVsc2UgaWYg KGRzaS0+Zm9ybWF0ID09IE1JUElfRFNJX0ZNVF9SR0I1NjUpCj4+ICsJCWZvcm1hdCA9IDB4NTU7 Cj4+ICsJZWxzZQo+PiArCQlmb3JtYXQgPSAweDY2Owo+Cj4gSnVzdCBuaXRwaWNrLCBzd2l0Y2gg Zml0cyBiZXR0ZXIgaGVyZS4KCkFjY2VwdGVkLgoKPgo+PiArCj4+ICsJcmV0ID0gbWlwaV9kc2lf ZGNzX3NldF9waXhlbF9mb3JtYXQoZHNpLCBmb3JtYXQpOwo+PiArCWlmIChyZXQgPCAwKQo+PiAr CQlkZXZfZXJyKGN0eC0+ZGV2LCAiJXMgZmFpbGVkOiAlZFxuIiwgX19mdW5jX18sIHJldCk7Cj4+ ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIGh4ODM2OWFfZHNpX3NldF9jb2x1bW5fYWRkcmVzcyhz dHJ1Y3QgaHg4MzY5YSAqY3R4KQo+PiArewo+PiArCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRz aSA9IHRvX21pcGlfZHNpX2RldmljZShjdHgtPmRldik7Cj4+ICsJY29uc3Qgc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKm1vZGUgPSBjdHgtPnBkLT5tb2RlOwo+PiArCWludCByZXQ7Cj4+ICsKPj4g KwlyZXQgPSBtaXBpX2RzaV9kY3Nfc2V0X2NvbHVtbl9hZGRyZXNzKGRzaSwgMCwgbW9kZS0+aGRp c3BsYXkgLSAxKTsKPj4gKwlpZiAocmV0IDwgMCkKPj4gKwkJZGV2X2VycihjdHgtPmRldiwgIiVz IGZhaWxlZDogJWRcbiIsIF9fZnVuY19fLCByZXQpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9p ZCBoeDgzNjlhX2RzaV9zZXRfcGFnZV9hZGRyZXNzKHN0cnVjdCBoeDgzNjlhICpjdHgpCj4+ICt7 Cj4+ICsJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpID0gdG9fbWlwaV9kc2lfZGV2aWNlKGN0 eC0+ZGV2KTsKPj4gKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9IGN0eC0+ cGQtPm1vZGU7Cj4+ICsJaW50IHJldDsKPj4gKwo+PiArCXJldCA9IG1pcGlfZHNpX2Rjc19zZXRf cGFnZV9hZGRyZXNzKGRzaSwgMCwgbW9kZS0+dmRpc3BsYXkgLSAxKTsKPj4gKwlpZiAocmV0IDwg MCkKPj4gKwkJZGV2X2VycihjdHgtPmRldiwgIiVzIGZhaWxlZDogJWRcbiIsIF9fZnVuY19fLCBy ZXQpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBoeDgzNjlhX2RzaV93cml0ZV9kaXNwbGF5 X2JyaWdodG5lc3Moc3RydWN0IGh4ODM2OWEgKmN0eCwgdTggYnJpZ2h0bmVzcykKPj4gK3sKPj4g KwloeDgzNjlhX2Rjc193cml0ZV9zZXEoY3R4LCBXUkRJU0JWLCBicmlnaHRuZXNzKTsKPj4gK30K Pj4gKwo+PiArc3RhdGljIHZvaWQgaHg4MzY5YV9kc2lfd3JpdGVfY2FiYyhzdHJ1Y3QgaHg4MzY5 YSAqY3R4KQo+PiArewo+PiArCWh4ODM2OWFfZGNzX3dyaXRlX3NlcV9zdGF0aWMoY3R4LCBXUkNB QkMsIDB4MDEpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBoeDgzNjlhX2RzaV93cml0ZV9j b250cm9sX2Rpc3BsYXkoc3RydWN0IGh4ODM2OWEgKmN0eCkKPj4gK3sKPj4gKwloeDgzNjlhX2Rj c193cml0ZV9zZXFfc3RhdGljKGN0eCwgV1JDVFJMRCwgMHgyNCk7Cj4+ICt9Cj4+ICsKPj4gK3N0 YXRpYyB2b2lkIGh4ODM2OWFfZHNpX3BhbmVsX2luaXQoc3RydWN0IGh4ODM2OWEgKmN0eCkKPj4g K3sKPj4gKwloeDgzNjlhX2RzaV9zZXRfZGlzcGxheV9yZWxhdGVkX3JlZ2lzdGVyKGN0eCk7Cj4+ ICsJaHg4MzY5YV9kc2lfc2V0X2Rpc3BsYXlfd2F2ZWZvcm1fY3ljbGUoY3R4KTsKPj4gKwloeDgz NjlhX2RzaV9zZXRfZ2lwKGN0eCk7Cj4+ICsJaHg4MzY5YV9kc2lfc2V0X3Bvd2VyKGN0eCk7Cj4+ ICsJaHg4MzY5YV9kc2lfc2V0X3Zjb21fdm9sdGFnZShjdHgpOwo+PiArCWh4ODM2OWFfZHNpX3Nl dF9wYW5lbChjdHgpOwo+PiArCWh4ODM2OWFfZHNpX3NldF9nYW1tYV9jdXJ2ZShjdHgpOwo+PiAr CWh4ODM2OWFfZHNpX3NldF9taXBpKGN0eCk7Cj4+ICsJaHg4MzY5YV9kc2lfc2V0X2ludGVyZmFj ZV9waXhlbF9mb21hdChjdHgpOwo+PiArCWh4ODM2OWFfZHNpX3NldF9jb2x1bW5fYWRkcmVzcyhj dHgpOwo+PiArCWh4ODM2OWFfZHNpX3NldF9wYWdlX2FkZHJlc3MoY3R4KTsKPj4gKwloeDgzNjlh X2RzaV93cml0ZV9jYWJjKGN0eCk7Cj4+ICsJaHg4MzY5YV9kc2lfd3JpdGVfY29udHJvbF9kaXNw bGF5KGN0eCk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIGh4ODM2OWFfZHNpX3NldF9leHRl bnNpb25fY29tbWFuZChzdHJ1Y3QgaHg4MzY5YSAqY3R4KQo+PiArewo+PiArCWh4ODM2OWFfZGNz X3dyaXRlX3NlcV9zdGF0aWMoY3R4LCBTRVRFWFRDLCAweGZmLCAweDgzLCAweDY5KTsKPj4gK30K Pj4gKwo+PiArc3RhdGljIHZvaWQgaHg4MzY5YV9kc2lfc2V0X21heGltdW1fcmV0dXJuX3BhY2tl dF9zaXplKHN0cnVjdCBoeDgzNjlhICpjdHgsCj4+ICsJCQkJCQkgICAgICAgdTE2IHNpemUpCj4+ ICt7Cj4+ICsJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpID0gdG9fbWlwaV9kc2lfZGV2aWNl KGN0eC0+ZGV2KTsKPj4gKwlpbnQgcmV0Owo+PiArCj4+ICsJcmV0ID0gbWlwaV9kc2lfc2V0X21h eGltdW1fcmV0dXJuX3BhY2tldF9zaXplKGRzaSwgc2l6ZSk7Cj4+ICsJaWYgKHJldCA8IDApCj4+ ICsJCWRldl9lcnIoY3R4LT5kZXYsCj4+ICsJCQkiZXJyb3IgJWQgc2V0dGluZyBtYXhpbXVtIHJl dHVybiBwYWNrZXQgc2l6ZSB0byAlZFxuIiwKPj4gKwkJCXJldCwgc2l6ZSk7Cj4+ICt9Cj4+ICsK Pj4gK3N0YXRpYyBpbnQgaHg4MzY5YV9kc2lfc2V0X3NlcXVlbmNlKHN0cnVjdCBoeDgzNjlhICpj dHgpCj4+ICt7Cj4+ICsJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpID0gdG9fbWlwaV9kc2lf ZGV2aWNlKGN0eC0+ZGV2KTsKPj4gKwlpbnQgcmV0Owo+PiArCj4+ICsJaHg4MzY5YV9kc2lfc2V0 X2V4dGVuc2lvbl9jb21tYW5kKGN0eCk7Cj4+ICsJaHg4MzY5YV9kc2lfc2V0X21heGltdW1fcmV0 dXJuX3BhY2tldF9zaXplKGN0eCwgNCk7Cj4+ICsJaHg4MzY5YV9kc2lfcGFuZWxfaW5pdChjdHgp Owo+PiArCj4+ICsJcmV0ID0gbWlwaV9kc2lfZGNzX2V4aXRfc2xlZXBfbW9kZShkc2kpOwo+PiAr CWlmIChyZXQgPCAwKSB7Cj4+ICsJCWRldl9lcnIoY3R4LT5kZXYsICJmYWlsZWQgdG8gZXhpdCBz bGVlcCBtb2RlOiAlZFxuIiwgcmV0KTsKPj4gKwkJcmV0dXJuIHJldDsKPj4gKwl9Cj4+ICsKPj4g KwlyZXQgPSBtaXBpX2RzaV9kY3Nfc2V0X2Rpc3BsYXlfb24oZHNpKTsKPj4gKwlpZiAocmV0IDwg MCkgewo+PiArCQlkZXZfZXJyKGN0eC0+ZGV2LCAiZmFpbGVkIHRvIHNldCBkaXNwbGF5IG9uOiAl ZFxuIiwgcmV0KTsKPj4gKwkJcmV0dXJuIHJldDsKPj4gKwl9Cj4+ICsKPj4gKwkvKgo+PiArCSAq IEl0J3MgbmVjZXNzYXJ5IHRvIHdhaXQgMTIwbXNlYyBhZnRlciBzZW5kaW5nIHRoZSBTbGVlcCBP dXQKPj4gKwkgKiBjb21tYW5kIGJlZm9yZSBTbGVlcCBJbiBjb21tYW5kIGNhbiBiZSBzZW50LCBh Y2NvcmRpbmcgdG8KPj4gKwkgKiB0aGUgSFg4MzY5QSBkYXRhIHNoZWV0Lgo+PiArCSAqLwo+PiAr CW1zbGVlcCgxMjApOwo+PiArCj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBp bnQgaHg4MzY5YV9kc2lfZGlzYWJsZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPj4gK3sKPj4g KwlzdHJ1Y3QgaHg4MzY5YSAqY3R4ID0gcGFuZWxfdG9faHg4MzY5YShwYW5lbCk7Cj4+ICsJaHg4 MzY5YV9kc2lfd3JpdGVfZGlzcGxheV9icmlnaHRuZXNzKGN0eCwgSFg4MzY5QV9NSU5fQlJJR0hU TkVTUyk7Cj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgaHg4MzY5YV9k c2lfdW5wcmVwYXJlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQo+PiArewo+PiArCXN0cnVjdCBo eDgzNjlhICpjdHggPSBwYW5lbF90b19oeDgzNjlhKHBhbmVsKTsKPj4gKwlzdHJ1Y3QgbWlwaV9k c2lfZGV2aWNlICpkc2kgPSB0b19taXBpX2RzaV9kZXZpY2UoY3R4LT5kZXYpOwo+PiArCWludCBy ZXQ7Cj4+ICsKPj4gKwlyZXQgPSBtaXBpX2RzaV9kY3NfZW50ZXJfc2xlZXBfbW9kZShkc2kpOwo+ PiArCWlmIChyZXQgPCAwKSB7Cj4+ICsJCWRldl9lcnIoY3R4LT5kZXYsICJmYWlsZWQgdG8gZW50 ZXIgc2xlZXAgbW9kZTogJWRcbiIsIHJldCk7Cj4+ICsJCXJldHVybiByZXQ7Cj4+ICsJfQo+PiAr Cj4+ICsJcmV0ID0gbWlwaV9kc2lfZGNzX3NldF9kaXNwbGF5X29mZihkc2kpOwo+PiArCWlmIChy ZXQgPCAwKSB7Cj4+ICsJCWRldl9lcnIoY3R4LT5kZXYsICJmYWlsZWQgdG8gc2V0IGRpc3BsYXkg b2ZmOiAlZFxuIiwgcmV0KTsKPj4gKwkJcmV0dXJuIHJldDsKPj4gKwl9Cj4+ICsKPj4gKwkvKgo+ PiArCSAqIFRoaXMgaXMgdG8gYWxsb3cgdGltZSBmb3IgdGhlIHN1cHBseSB2b2x0YWdlcyBhbmQg Y2xvY2sKPj4gKwkgKiBjaXJjdWl0cyB0byBzdGFibGl6ZSwgYWNjb3JkaW5nIHRvIHRoZSBIWDgz NjlBIGRhdGEgc2hlZXQuCj4+ICsJICovCj4+ICsJbXNsZWVwKDUpOwo+PiArCj4+ICsJcmV0dXJu IHJldDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBoeDgzNjlhX2RzaV9wcmVwYXJlKHN0cnVj dCBkcm1fcGFuZWwgKnBhbmVsKQo+PiArewo+PiArCXN0cnVjdCBoeDgzNjlhICpjdHggPSBwYW5l bF90b19oeDgzNjlhKHBhbmVsKTsKPj4gKwlyZXR1cm4gaHg4MzY5YV9kc2lfc2V0X3NlcXVlbmNl KGN0eCk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgaHg4MzY5YV9kc2lfZW5hYmxlKHN0cnVj dCBkcm1fcGFuZWwgKnBhbmVsKQo+PiArewo+PiArCXN0cnVjdCBoeDgzNjlhICpjdHggPSBwYW5l bF90b19oeDgzNjlhKHBhbmVsKTsKPj4gKwloeDgzNjlhX2RzaV93cml0ZV9kaXNwbGF5X2JyaWdo dG5lc3MoY3R4LCBIWDgzNjlBX01BWF9CUklHSFRORVNTKTsKPj4gKwlyZXR1cm4gMDsKPj4gK30K Pj4gKwo+PiArc3RhdGljIGludCBoeDgzNjlhX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX3BhbmVsICpw YW5lbCkKPj4gK3sKPj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gcGFuZWwt PmNvbm5lY3RvcjsKPj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gcGFuZWwtPmRybTsKPj4g KwlzdHJ1Y3QgaHg4MzY5YSAqY3R4ID0gcGFuZWxfdG9faHg4MzY5YShwYW5lbCk7Cj4+ICsJc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7Cj4+ICsJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKm0gPSBjdHgtPnBkLT5tb2RlOwo+PiArCj4+ICsJbW9kZSA9IGRybV9tb2RlX2R1cGxp Y2F0ZShkcm0sIG0pOwo+PiArCWlmICghbW9kZSkgewo+PiArCQlkZXZfZXJyKGRybS0+ZGV2LCAi ZmFpbGVkIHRvIGFkZCBtb2RlICV1eCV1QCV1XG4iLAo+PiArCQkJbS0+aGRpc3BsYXksIG0tPnZk aXNwbGF5LCBtLT52cmVmcmVzaCk7Cj4+ICsJCXJldHVybiAwOwo+PiArCX0KPj4gKwo+PiArCWRy bV9tb2RlX3NldF9uYW1lKG1vZGUpOwo+PiArCW1vZGUtPnR5cGUgPSBEUk1fTU9ERV9UWVBFX0RS SVZFUiB8IERSTV9NT0RFX1RZUEVfUFJFRkVSUkVEOwo+PiArCj4+ICsJY29ubmVjdG9yLT5kaXNw bGF5X2luZm8uYnBjID0gODsKPj4gKwljb25uZWN0b3ItPmRpc3BsYXlfaW5mby53aWR0aF9tbSA9 IG1vZGUtPndpZHRoX21tOwo+PiArCWNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLmhlaWdodF9tbSA9 IG1vZGUtPmhlaWdodF9tbTsKPj4gKwo+PiArCWRybV9tb2RlX3Byb2JlZF9hZGQoY29ubmVjdG9y LCBtb2RlKTsKPj4gKwo+PiArCXJldHVybiAxOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgY29uc3Qg c3RydWN0IGRybV9wYW5lbF9mdW5jcyBoeDgzNjlhX2RzaV9kcm1fZnVuY3MgPSB7Cj4+ICsJLmRp c2FibGUgPSBoeDgzNjlhX2RzaV9kaXNhYmxlLAo+PiArCS51bnByZXBhcmUgPSBoeDgzNjlhX2Rz aV91bnByZXBhcmUsCj4+ICsJLnByZXBhcmUgPSBoeDgzNjlhX2RzaV9wcmVwYXJlLAo+PiArCS5l bmFibGUgPSBoeDgzNjlhX2RzaV9lbmFibGUsCj4+ICsJLmdldF9tb2RlcyA9IGh4ODM2OWFfZ2V0 X21vZGVzLAo+PiArfTsKPj4gKwo+PiArc3RhdGljIGludCBoeDgzNjlhX3Bvd2VyX29uKHN0cnVj dCBoeDgzNjlhICpjdHgpCj4+ICt7Cj4+ICsJaW50IHJldDsKPj4gKwo+PiArCXJldCA9IHJlZ3Vs YXRvcl9idWxrX2VuYWJsZShBUlJBWV9TSVpFKGN0eC0+c3VwcGxpZXMpLCBjdHgtPnN1cHBsaWVz KTsKPj4gKwlpZiAocmV0IDwgMCkKPj4gKwkJcmV0dXJuIHJldDsKPj4gKwo+PiArCW1zbGVlcChj dHgtPnBkLT5wb3dlcl9vbl9kZWxheSk7Cj4+ICsKPj4gKwlncGlvZF9zZXRfdmFsdWUoY3R4LT5y ZXNldF9ncGlvLCAxKTsKPj4gKwl1c2xlZXBfcmFuZ2UoNTAsIDYwKTsKPj4gKwlncGlvZF9zZXRf dmFsdWUoY3R4LT5yZXNldF9ncGlvLCAwKTsKPj4gKwo+PiArCW1zbGVlcChjdHgtPnBkLT5yZXNl dF9kZWxheSk7Cj4+ICsKPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBo eDgzNjlhX3Bvd2VyX29mZihzdHJ1Y3QgaHg4MzY5YSAqY3R4KQo+PiArewo+PiArCXJldHVybiBy ZWd1bGF0b3JfYnVsa19kaXNhYmxlKEFSUkFZX1NJWkUoY3R4LT5zdXBwbGllcyksIGN0eC0+c3Vw cGxpZXMpOzsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBoeDgzNjlhX3ZtX3RvX3Jlc19zZWwo c3RydWN0IGh4ODM2OWEgKmN0eCkKPj4gK3sKPj4gKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqbW9kZSA9IGN0eC0+cGQtPm1vZGU7Cj4+ICsKPj4gKwlzd2l0Y2ggKG1vZGUtPmhkaXNw bGF5KSB7Cj4+ICsJY2FzZSA0ODA6Cj4+ICsJCXN3aXRjaCAobW9kZS0+dmRpc3BsYXkpIHsKPj4g KwkJY2FzZSA4NjQ6Cj4+ICsJCQljdHgtPnJlc19zZWwgPSBIWDgzNjlBX1JFU180ODBfODY0Owo+ PiArCQkJYnJlYWs7Cj4+ICsJCWNhc2UgODU0Ogo+PiArCQkJY3R4LT5yZXNfc2VsID0gSFg4MzY5 QV9SRVNfNDgwXzg1NDsKPj4gKwkJCWJyZWFrOwo+PiArCQljYXNlIDgwMDoKPj4gKwkJCWN0eC0+ cmVzX3NlbCA9IEhYODM2OUFfUkVTXzQ4MF84MDA7Cj4+ICsJCQlicmVhazsKPj4gKwkJY2FzZSA2 NDA6Cj4+ICsJCQljdHgtPnJlc19zZWwgPSBIWDgzNjlBX1JFU180ODBfNjQwOwo+PiArCQkJYnJl YWs7Cj4+ICsJCWNhc2UgNzIwOgo+PiArCQkJY3R4LT5yZXNfc2VsID0gSFg4MzY5QV9SRVNfNDgw XzcyMDsKPj4gKwkJCWJyZWFrOwo+PiArCQlkZWZhdWx0Ogo+PiArCQkJYnJlYWs7Cj4+ICsJCX0K Pj4gKwkJYnJlYWs7Cj4+ICsJY2FzZSAzNjA6Cj4+ICsJCWlmIChtb2RlLT52ZGlzcGxheSA9PSA2 NDApCj4+ICsJCQljdHgtPnJlc19zZWwgPSBIWDgzNjlBX1JFU18zNjBfNjQwOwo+PiArCQlicmVh azsKPj4gKwlkZWZhdWx0Ogo+PiArCQlicmVhazsKPj4gKwl9Cj4+ICsKPj4gKwlyZXR1cm4gMDsK Pj4gK30KPgo+IEZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIDAsIHlvdSBjYW4gbWFrZSBpdCB2b2lk LCBvciByZXR1cm4gZXJyb3IKPiBpbiBjYXNlIG1vZGUgaXMgbm90IHN1cHBvcnRlZC4gQXMgSSBz ZWUgdGhlIG1vZGUgaXMgaGFyZGNvZGVkIGluIHRoZQo+IGRyaXZlciBzbyB0aGUgMXN0IHNvbHV0 aW9ucyBmaXRzIGhlcmUgYmV0dGVyLgoKSSdsbCB0YWtlIHRoZSAxc3Qgc29sdXRpb24uCgo+Cj4+ ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSB0cnVseV90ZnQ0ODA4 MDBfMTZfZV9tb2RlID0gewo+PiArCS5jbG9jayA9IDI2NDAwLAo+PiArCS5oZGlzcGxheSA9IDQ4 MCwKPj4gKwkuaHN5bmNfc3RhcnQgPSA0ODAgKyA4LAo+PiArCS5oc3luY19lbmQgPSA0ODAgKyA4 ICsgOCwKPj4gKwkuaHRvdGFsID0gNDgwICsgOCArIDggKyA4LAo+PiArCS52ZGlzcGxheSA9IDgw MCwKPj4gKwkudnN5bmNfc3RhcnQgPSA4MDAgKyA2LAo+PiArCS52c3luY19lbmQgPSA4MDAgKyA2 ICsgNiwKPj4gKwkudnRvdGFsID0gODAwICsgNiArIDYgKyA2LAo+PiArCS52cmVmcmVzaCA9IDYw LAo+PiArCS53aWR0aF9tbSA9IDQ1LAo+PiArCS5oZWlnaHRfbW0gPSA3NiwKPj4gK307Cj4+ICsK Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaHg4MzY5YV9wYW5lbF9kZXNjIHRydWx5X3RmdDQ4MDgw MF8xNl9lX2RzaSA9IHsKPj4gKwkubW9kZSA9ICZ0cnVseV90ZnQ0ODA4MDBfMTZfZV9tb2RlLAo+ PiArCS5wb3dlcl9vbl9kZWxheSA9IDEwLAo+PiArCS5yZXNldF9kZWxheSA9IDEwLAo+PiArCS5k c2lfbGFuZXMgPSAyLAo+PiArfTsKPj4gKwo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZp Y2VfaWQgaHg4MzY5YV9kc2lfb2ZfbWF0Y2hbXSA9IHsKPj4gKwl7Cj4+ICsJCS5jb21wYXRpYmxl ID0gInRydWx5LHRmdDQ4MDgwMC0xNi1lLWRzaSIsCj4+ICsJCS5kYXRhID0gJnRydWx5X3RmdDQ4 MDgwMF8xNl9lX2RzaSwKPj4gKwl9LCB7Cj4+ICsJCS8qIHNlbnRpbmVsICovCj4+ICsJfSwKPj4g K307Cj4+ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBoeDgzNjlhX2RzaV9vZl9tYXRjaCk7Cj4+ ICsKPj4gK3N0YXRpYyBpbnQgaHg4MzY5YV9kc2lfcHJvYmUoc3RydWN0IG1pcGlfZHNpX2Rldmlj ZSAqZHNpKQo+PiArewo+PiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZkc2ktPmRldjsKPj4gKwlj b25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICpvZl9pZCA9Cj4+ICsJCQlvZl9tYXRjaF9kZXZpY2Uo aHg4MzY5YV9kc2lfb2ZfbWF0Y2gsIGRldik7Cj4+ICsJc3RydWN0IGh4ODM2OWEgKmN0eDsKPj4g KwlpbnQgcmV0LCBpOwo+PiArCWNoYXIgYnNbNF07Cj4+ICsKPj4gKwljdHggPSBkZXZtX2t6YWxs b2MoZGV2LCBzaXplb2YoKmN0eCksIEdGUF9LRVJORUwpOwo+PiArCWlmICghY3R4KQo+PiArCQly ZXR1cm4gLUVOT01FTTsKPj4gKwo+PiArCWN0eC0+ZGV2ID0gZGV2Owo+PiArCj4+ICsJaWYgKG9m X2lkKSB7Cj4+ICsJCWN0eC0+cGQgPSBvZl9pZC0+ZGF0YTsKPj4gKwl9IGVsc2Ugewo+PiArCQlk ZXZfZXJyKGRldiwgImNhbm5vdCBmaW5kIGNvbXBhdGlibGUgZGV2aWNlXG4iKTsKPj4gKwkJcmV0 dXJuIC1FTk9ERVY7Cj4+ICsJfQo+PiArCj4+ICsJcmV0ID0gaHg4MzY5YV92bV90b19yZXNfc2Vs KGN0eCk7Cj4+ICsJaWYgKHJldCA8IDApCj4+ICsJCXJldHVybiByZXQ7Cj4KPiBXZSBrbm93IGl0 IHdpbGwgYWx3YXlzIHN1Y2NlZWQsIGRvbid0IHdlPwoKWWVzLiBJJ2xsIG1vZGlmeSB0aGUgZnVu Y3Rpb24gdG8gcmV0dXJuIHZvaWQuCgo+Cj4+ICsKPj4gKwljdHgtPnN1cHBsaWVzWzBdLnN1cHBs eSA9ICJ2ZGQxIjsKPj4gKwljdHgtPnN1cHBsaWVzWzFdLnN1cHBseSA9ICJ2ZGQyIjsKPj4gKwlj dHgtPnN1cHBsaWVzWzJdLnN1cHBseSA9ICJ2ZGQzIjsKPj4gKwljdHgtPnN1cHBsaWVzWzNdLnN1 cHBseSA9ICJkc2ktdmNjIjsKPj4gKwljdHgtPnN1cHBsaWVzWzRdLnN1cHBseSA9ICJ2cHAiOwo+ PiArCXJldCA9IGRldm1fcmVndWxhdG9yX2J1bGtfZ2V0KGRldiwgQVJSQVlfU0laRShjdHgtPnN1 cHBsaWVzKSwKPj4gKwkJCQkgICAgICBjdHgtPnN1cHBsaWVzKTsKPj4gKwlpZiAocmV0IDwgMCkg ewo+PiArCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBnZXQgcmVndWxhdG9yczogJWRcbiIsIHJl dCk7Cj4KPiBKdXN0IG5pdHBpY2tpbmcsIGhlcmUgYW5kIGxhdGVyLCBpbiBjYXNlIG9mIGRlZmVy cmVkIHByb2JpbmcgeW91IHdpbGwKPiBoYXZlIGVycm9yIGxvZ2dlZCwgYnV0IGl0IHNob3VsZCBi ZSBhdCBtb3N0IGRldl9pbmZvLgoKSSdsbCBjaGFuZ2UgdG8gdXNlIGRldl9pbmZvLgoKPgo+PiAr CQlyZXR1cm4gcmV0Owo+PiArCX0KPj4gKwo+PiArCWN0eC0+cmVzZXRfZ3BpbyA9IGRldm1fZ3Bp b2RfZ2V0KGRldiwgInJlc2V0IiwgR1BJT0RfT1VUX0xPVyk7Cj4+ICsJaWYgKElTX0VSUihjdHgt PnJlc2V0X2dwaW8pKSB7Cj4+ICsJCWRldl9lcnIoZGV2LCAiY2Fubm90IGdldCByZXNldC1ncGlv cyAlbGRcbiIsCj4+ICsJCQlQVFJfRVJSKGN0eC0+cmVzZXRfZ3BpbykpOwo+PiArCQlyZXR1cm4g UFRSX0VSUihjdHgtPnJlc2V0X2dwaW8pOwo+PiArCX0KPj4gKwo+PiArCWZvciAoaSA9IDA7IGkg PCA0OyBpKyspIHsKPj4gKwkJc25wcmludGYoYnMsIHNpemVvZihicyksICJicyVkIiwgaSk7Cj4+ ICsJCWN0eC0+YnNfZ3Bpb1tpXSA9IGRldm1fZ3Bpb2RfZ2V0KGRldiwgYnMsIEdQSU9EX09VVF9I SUdIKTsKPj4gKwo+PiArCQlkZXZfZGJnKGRldiwgImJzJWQtZ3BpbyBpcyBjb25maWd1cmVkXG4i LCBpKTsKPj4gKwl9Cj4+ICsKPj4gKwlyZXQgPSBoeDgzNjlhX3Bvd2VyX29uKGN0eCk7Cj4+ICsJ aWYgKHJldCA8IDApIHsKPj4gKwkJZGV2X2VycihkZXYsICJjYW5ub3QgcG93ZXIgb25cbiIpOwo+ PiArCQlyZXR1cm4gcmV0Owo+PiArCX0KPj4gKwo+PiArCWRybV9wYW5lbF9pbml0KCZjdHgtPnBh bmVsKTsKPj4gKwljdHgtPnBhbmVsLmRldiA9IGRldjsKPj4gKwljdHgtPnBhbmVsLmZ1bmNzID0g Jmh4ODM2OWFfZHNpX2RybV9mdW5jczsKPj4gKwo+PiArCXJldCA9IGRybV9wYW5lbF9hZGQoJmN0 eC0+cGFuZWwpOwo+PiArCWlmIChyZXQgPCAwKQo+PiArCQlyZXR1cm4gcmV0Owo+PiArCj4+ICsJ bWlwaV9kc2lfc2V0X2RydmRhdGEoZHNpLCBjdHgpOwo+PiArCj4+ICsJZHNpLT5jaGFubmVsID0g MDsKPj4gKwlkc2ktPmxhbmVzID0gY3R4LT5wZC0+ZHNpX2xhbmVzOwo+PiArCWRzaS0+Zm9ybWF0 ID0gTUlQSV9EU0lfRk1UX1JHQjg4ODsKPj4gKwlkc2ktPm1vZGVfZmxhZ3MgPSBNSVBJX0RTSV9N T0RFX1ZJREVPIHwKPj4gKwkJCSAgTUlQSV9EU0lfTU9ERV9WSURFT19CVVJTVCB8Cj4+ICsJCQkg IE1JUElfRFNJX01PREVfVklERU9fU1lOQ19QVUxTRTsKPj4gKwlyZXQgPSBtaXBpX2RzaV9hdHRh Y2goZHNpKTsKPj4gKwlpZiAocmV0IDwgMCkKPj4gKwkJZHJtX3BhbmVsX3JlbW92ZSgmY3R4LT5w YW5lbCk7Cj4+ICsKPj4gKwlyZXR1cm4gcmV0Owo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IGh4 ODM2OWFfZHNpX3JlbW92ZShzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kpCj4+ICt7Cj4+ICsJ c3RydWN0IGh4ODM2OWEgKmN0eCA9IG1pcGlfZHNpX2dldF9kcnZkYXRhKGRzaSk7Cj4+ICsKPj4g KwltaXBpX2RzaV9kZXRhY2goZHNpKTsKPj4gKwlkcm1fcGFuZWxfcmVtb3ZlKCZjdHgtPnBhbmVs KTsKPj4gKwlyZXR1cm4gaHg4MzY5YV9wb3dlcl9vZmYoY3R4KTsKPgo+IFRoZSBzZXF1ZW5jZSBo ZXJlIGlzIE9LLCBidXQgYXMgSSBsdXJrZWQgaW50byBkc2kgaG9zdCBjb2RlWzFdCj4gaXQgc2Vl bXMgZHNpIGhvc3QgbGFja3Mgc3luY2hyb25pemF0aW9uIHdpdGggZHJtIGluCj4gZHdfbWlwaV9k c2lfaG9zdF9kZXRhY2ggYmVmb3JlIHJlbW92aW5nIHRoZSBwYW5lbCwgYnV0IGl0IHNob3VsZAo+ IGJlIGZpeGVkIGluIHRoZSBob3N0IGNvbnRyb2xsZXIuCj4KPiBbMV06IFtQQVRDSCBSRkMgdjQg MTIvMjFdIGRybS9icmlkZ2U6IEFkZCBTeW5vcHN5cyBEZXNpZ25XYXJlIE1JUEkgRFNJCj4gaG9z dCBjb250cm9sbGVyIGRyaXZlcgoKSW5kZWVkLCBJIG5lZWQgdG8gcmVtb3ZlICdkc2ktPnBhbmVs ID0gTlVMTDsnIGluCmR3X21pcGlfZHNpX2hvc3RfZGV0YWNoKCkuCgpSZWdhcmRzLApMaXUgWWlu ZwoKPgo+Cj4gUmVnYXJkcwo+IEFuZHJ6ZWoKPgo+Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBzdHJ1 Y3QgbWlwaV9kc2lfZHJpdmVyIGh4ODM2OWFfZHNpX2RyaXZlciA9IHsKPj4gKwkucHJvYmUgPSBo eDgzNjlhX2RzaV9wcm9iZSwKPj4gKwkucmVtb3ZlID0gaHg4MzY5YV9kc2lfcmVtb3ZlLAo+PiAr CS5kcml2ZXIgPSB7Cj4+ICsJCS5uYW1lID0gInBhbmVsLWh4ODM2OWEtZHNpIiwKPj4gKwkJLm9m X21hdGNoX3RhYmxlID0gaHg4MzY5YV9kc2lfb2ZfbWF0Y2gsCj4+ICsJfSwKPj4gK307Cj4+ICtt b2R1bGVfbWlwaV9kc2lfZHJpdmVyKGh4ODM2OWFfZHNpX2RyaXZlcik7Cj4+ICsKPj4gK01PRFVM RV9ERVNDUklQVElPTigiSGltYXggSFg4MzY5QSBwYW5lbCBkcml2ZXIiKTsKPj4gK01PRFVMRV9B VVRIT1IoIkxpdSBZaW5nIDxZaW5nLkxpdUBmcmVlc2NhbGUuY29tPiIpOwo+PiArTU9EVUxFX0xJ Q0VOU0UoIkdQTCB2MiIpOwo+Pgo+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVsCg==