From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [Intel-gfx] [v11 1/4] drm: Add HDMI colorspace property Date: Fri, 8 Feb 2019 15:30:03 +0200 Message-ID: <20190208133003.GR20097@intel.com> References: <1549382617-8951-2-git-send-email-uma.shankar@intel.com> <20190205163133.GS20097@intel.com> <20190205181307.GV20097@intel.com> <20190207190324.GM20097@intel.com> <20190208125239.GQ20097@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "Sharma, Shashank" Cc: "intel-gfx@lists.freedesktop.org" , "Shankar, Uma" , "Syrjala, Ville" , "Lankhorst, Maarten" , "dri-devel@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBGZWIgMDgsIDIwMTkgYXQgMDY6MzY6MzlQTSArMDUzMCwgU2hhcm1hLCBTaGFzaGFu ayB3cm90ZToKPiBSZWdhcmRzCj4gCj4gU2hhc2hhbmsKPiAKPiBPbiAyLzgvMjAxOSA2OjIyIFBN LCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4gPiBPbiBGcmksIEZlYiAwOCwgMjAxOSBhdCAxMjoz NjoyNVBNICswMDAwLCBTaGFybWEsIFNoYXNoYW5rIHdyb3RlOgo+ID4+IFJlZ2FyZHMKPiA+PiBT aGFzaGFuawo+ID4+Cj4gPj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gPj4+IEZyb206 IEludGVsLWdmeCBbbWFpbHRvOmludGVsLWdmeC1ib3VuY2VzQGxpc3RzLmZyZWVkZXNrdG9wLm9y Z10gT24gQmVoYWxmIE9mCj4gPj4+IFNoYW5rYXIsIFVtYQo+ID4+PiBTZW50OiBGcmlkYXksIEZl YnJ1YXJ5IDgsIDIwMTkgNTo0NSBQTQo+ID4+PiBUbzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5z eXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+Pj4gQ2M6IGludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmc7IFN5cmphbGEsIFZpbGxlIDx2aWxsZS5zeXJqYWxhQGludGVsLmNvbT47IGRyaS0K PiA+Pj4gZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnOyBMYW5raG9yc3QsIE1hYXJ0ZW4gPG1h YXJ0ZW4ubGFua2hvcnN0QGludGVsLmNvbT4KPiA+Pj4gU3ViamVjdDogUmU6IFtJbnRlbC1nZnhd IFt2MTEgMS80XSBkcm06IEFkZCBIRE1JIGNvbG9yc3BhY2UgcHJvcGVydHkKPiA+Pj4KPiA+Pj4+ Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID4+Pj4+Pj4+IEZyb206IFZpbGxlIFN5 cmrDpGzDpCBbbWFpbHRvOnZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tXQo+ID4+Pj4+Pj4+ IFNlbnQ6IFR1ZXNkYXksIEZlYnJ1YXJ5IDUsIDIwMTkgMTA6MDIgUE0KPiA+Pj4+Pj4+PiBUbzog U2hhbmthciwgVW1hIDx1bWEuc2hhbmthckBpbnRlbC5jb20+Cj4gPj4+Pj4+Pj4gQ2M6IGludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7Cj4gPj4+Pj4+Pj4gZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZzsgU3lyamFsYSwgVmlsbGUKPiA+Pj4+Pj4+PiA8dmlsbGUuc3lyamFsYUBp bnRlbC5jb20+OyBMYW5raG9yc3QsIE1hYXJ0ZW4KPiA+Pj4+Pj4+PiA8bWFhcnRlbi5sYW5raG9y c3RAaW50ZWwuY29tPgo+ID4+Pj4+Pj4+IFN1YmplY3Q6IFJlOiBbSW50ZWwtZ2Z4XSBbdjExIDEv NF0gZHJtOiBBZGQgSERNSSBjb2xvcnNwYWNlCj4gPj4+Pj4+Pj4gcHJvcGVydHkKPiA+Pj4+Pj4+ Pgo+ID4+Pj4+Pj4+IE9uIFR1ZSwgRmViIDA1LCAyMDE5IGF0IDA5OjMzOjM0UE0gKzA1MzAsIFVt YSBTaGFua2FyIHdyb3RlOgo+ID4+Pj4+Pj4+PiBDcmVhdGUgYSBuZXcgY29ubmVjdG9yIHByb3Bl cnR5IHRvIHByb2dyYW0gY29sb3JzcGFjZSB0byBzaW5rIGRldmljZXMuCj4gPj4+Pj4+Pj4+IE1v ZGVybiBzaW5rIGRldmljZXMgc3VwcG9ydCBtb3JlIHRoYW4gMSB0eXBlIG9mIGNvbG9yc3BhY2Ug bGlrZQo+ID4+Pj4+Pj4+PiA2MDEsIDcwOSwgQlQyMDIwIGV0Yy4gVGhpcyBoZWxwcyB0byBzd2l0 Y2ggYmFzZWQgb24gY29udGVudAo+ID4+Pj4+Pj4+PiB0eXBlIHdoaWNoIGlzIHRvIGJlIGRpc3Bs YXllZC4gVGhlIGRlY2lzaW9uIGxpZXMgd2l0aAo+ID4+Pj4+Pj4+PiBjb21wb3NpdG9ycyBhcyB0 byBpbiB3aGljaCBzY2VuYXJpb3MsIGEgcGFydGljdWxhciBjb2xvcnNwYWNlIHdpbGwgYmUgcGlj a2VkLgo+ID4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+PiBUaGlzIHdpbGwgYmUgaGVscGZ1bCBtb3N0bHkg dG8gc3dpdGNoIHRvIGhpZ2hlciBnYW11dAo+ID4+Pj4+Pj4+PiBjb2xvcnNwYWNlcyBsaWtlCj4g Pj4+Pj4+Pj4+IEJUMjAyMCB3aGVuIHRoZSBtZWRpYSBjb250ZW50IGlzIGVuY29kZWQgYXMgQlQy MDIwLiBUaGVyZWJ5Cj4gPj4+Pj4+Pj4+IGdpdmluZyBhIGdvb2QgdmlzdWFsIGV4cGVyaWVuY2Ug dG8gdXNlcnMuCj4gPj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+IFRoZSBleHBlY3RhdGlvbiBmcm9tIHVz ZXJzcGFjZSBpcyB0aGF0IGl0IHNob3VsZCBwYXJzZSB0aGUgRURJRAo+ID4+Pj4+Pj4+PiBhbmQg Z2V0IHN1cHBvcnRlZCBjb2xvcnNwYWNlcy4gVXNlIHRoaXMgcHJvcGVydHkgYW5kIHN3aXRjaCB0 bwo+ID4+Pj4+Pj4+PiB0aGUgb25lIHN1cHBvcnRlZC4gU2luayBzdXBwb3J0ZWQgY29sb3JzcGFj ZXMgc2hvdWxkIGJlCj4gPj4+Pj4+Pj4+IHJldHJpZXZlZCBieSB1c2Vyc3BhY2UgZnJvbSBFRElE IGFuZCBkcml2ZXIgd2lsbCBub3QgZXhwbGljaXRseQo+ID4+Pj4+Pj4+PiBleHBvc2UKPiA+Pj4+ IHRoZW0uCj4gPj4+Pj4+Pj4+IEJhc2ljYWxseSB0aGUgZXhwZWN0YXRpb24gZnJvbSB1c2Vyc3Bh Y2UgaXM6Cj4gPj4+Pj4+Pj4+ICAgLSBTZXQgdXAgQ1JUQyBERUdBTU1BL0NUTS9HQU1NQSB0byBj b252ZXJ0IHRvIHNvbWUgc2luawo+ID4+Pj4+Pj4+PiAgICAgY29sb3JzcGFjZQo+ID4+Pj4+Pj4+ PiAgIC0gU2V0IHRoaXMgbmV3IHByb3BlcnR5IHRvIGxldCB0aGUgc2luayBrbm93IHdoYXQgaXQK PiA+Pj4+Pj4+Pj4gICAgIGNvbnZlcnRlZCB0aGUgQ1JUQyBvdXRwdXQgdG8uCj4gPj4+Pj4+Pj4+ Cj4gPj4+Pj4+Pj4+IHYyOiBBZGRyZXNzZWQgTWFhcnRlbiBhbmQgVmlsbGUncyByZXZpZXcgY29t bWVudHMuIEVuaGFuY2VkIHRoZQo+ID4+Pj4+Pj4+PiBjb2xvcnNwYWNlIGVudW0gdG8gaW5jb3Jw b3JhdGUgYm90aCBIRE1JIGFuZCBEUCBzdXBwb3J0ZWQKPiA+Pj4+IGNvbG9yc3BhY2VzLgo+ID4+ Pj4+Pj4+PiBBbHNvLCBhZGRlZCBhIGRlZmF1bHQgb3B0aW9uIGZvciBjb2xvcnNwYWNlLgo+ID4+ Pj4+Pj4+Pgo+ID4+Pj4+Pj4+PiB2MzogUmVtb3ZlZCBBZG9iZSByZWZlcmVuY2VzIGZyb20gZW51 bSBkZWZpbml0aW9ucyBhcyBwZXIKPiA+Pj4+Pj4+Pj4gVmlsbGUsIEhhbnMgVmVya3VpbCBhbmQg Sm9uYXMgS2FybG1hbiBzdWdnZXN0aW9ucy4gQ2hhbmdlZAo+ID4+Pj4+Pj4+PiBEZWZhdWx0IHRv IGFuIHVuc2V0IHN0YXRlIHdoZXJlIGRyaXZlciB3aWxsIGFzc2lnbiB0aGUKPiA+Pj4+Pj4+Pj4g Y29sb3JzcGFjZSBpcyBub3QgY2hvc2VuIGJ5IHVzZXIsIHN1Z2dlc3RlZCBieSBWaWxsZSBhbmQK PiA+Pj4+Pj4+Pj4gTWFhcnRlbi4gQWRkcmVzc2VkIG90aGVyIG1pc2MgcmV2aWV3IGNvbW1lbnRz IGZyb20gTWFhcnRlbi4KPiA+Pj4+Pj4+Pj4gU3BsaXQgdGhlIGNoYW5nZXMgdG8gaGF2ZSBzZXBh cmF0ZSBjb2xvcnNwYWNlIHByb3BlcnR5IGZvciBEUCBhbmQgSERNSS4KPiA+Pj4+Pj4+Pj4KPiA+ Pj4+Pj4+Pj4gdjQ6IEFkZHJlc3NlZCBDaHJpcyBhbmQgVmlsbGUncyByZXZpZXcgY29tbWVudHMs IGFuZCBjcmVhdGVkIGEKPiA+Pj4+Pj4+Pj4gY29tbW9uIGNvbG9yc3BhY2UgcHJvcGVydHkgZm9y IERQIGFuZCBIRE1JLCBmaWx0ZXJlZCB0aGUgbGlzdAo+ID4+Pj4+Pj4+PiBiYXNlZCBvbiB0aGUg Y29sb3JzcGFjZXMgc3VwcG9ydGVkIGJ5IHRoZSByZXNwZWN0aXZlIHByb3RvY29sIHN0YW5kYXJk Lgo+ID4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+PiB2NTogTWFkZSB0aGUgcHJvcGVydHkgY3JlYXRpb24g aGVscGVyIGFjY2VwdCBlbnVtIGxpc3QgYmFzZWQgb24KPiA+Pj4+Pj4+Pj4gcGxhdGZvcm0gY2Fw YWJpbHRpZXMgYXMgc3VnZ2VzdGVkIGJ5IFNoYXNoYW5rLiBDb25zb2xpZGF0ZWQKPiA+Pj4+Pj4+ Pj4gSERNSSBhbmQgRFAgcHJvcGVydHkgY3JlYXRpb24gaW4gdGhlIGNvbW1vbiBoZWxwZXIuCj4g Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+IHY2OiBBZGRyZXNzZWQgU2hhc2hhbmsncyByZXZpZXcgY29t bWVudHMuCj4gPj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+IHY3OiBBZGRlZCBkZWZpbmVzIGluc3RlYWQg b2YgZW51bSBpbiB1YXBpIGFzIHBlciBCcmlhbgo+ID4+Pj4+Pj4+PiBTdGFya2V5J3Mgc3VnZ2Vz dGlvbiBpbiBvcmRlciB0byBnbyB3aXRoIHN0cmluZyBtYXRjaGluZyBhdCB1c2Vyc3BhY2UuCj4g Pj4+Pj4+Pj4+IFVwZGF0ZWQgdGhlIGNvbW1pdCBtZXNzYWdlIHRvIGFkZCBtb3JlIGRldGFpbHMg YXMgd2VsbCBrZXJuZWwgZG9jcy4KPiA+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4gdjg6IEFkZHJlc3Nl ZCBNYWFydGVuJ3MgcmV2aWV3IGNvbW1lbnRzLgo+ID4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+PiB2OTog UmVtb3ZlZCBtYWNybyBkZWZpbmVzIGZyb20gdWFwaSBhcyBwZXIgQnJpYW4gU3RhcmtleSBhbmQK PiA+Pj4+Pj4+Pj4gRGFuaWVsIFN0b25lJ3MgY29tbWVudHMgYW5kIG1vdmVkIHRvIGRybSBpbmNs dWRlIGZpbGUuIE1vdmVkCj4gPj4+Pj4+Pj4+IGJhY2sgdG8gb2xkZXIgZGVzaWduIHdpdGggZXhw b3NpbmcgYWxsIEhETUkgY29sb3JzcGFjZXMgdG8KPiA+Pj4+Pj4+Pj4gdXNlcnNwYWNlIHNpbmNl IGluZm9mcmFtZSBjYXBhYmlsaXR5IGlzIHRoZXJlIGV2ZW4gb24gbGVnYWN5Cj4gPj4+Pj4+Pj4+ IHBsYXRmb3JtcywgYXMgcGVyIFZpbGxlJ3MgcmV2aWV3IGNvbW1lbnRzLgo+ID4+Pj4+Pj4+Pgo+ ID4+Pj4+Pj4+PiB2MTA6IEZpeGVkIHNwYXJzZSB3YXJuaW5ncywgdXBkYXRlZCB0aGUgUkIgZnJv bSBNYWFydGVuIGFuZCBKYW5pJ3MgYWNrLgo+ID4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+PiB2MTE6IEFk ZHJlc3NlZCBWaWxsZSdzIHJldmlldyBjb21tZW50cy4gVXBkYXRlZCB0aGUgTWFjcm8KPiA+Pj4+ Pj4+Pj4gbmFtaW5nIGFuZCBhZGRlZCBEQ0ktUDMgY29sb3JzcGFjZSBhcyB3ZWxsIGRlZmluZWQg aW4gQ0VBIDg2MS5HIHNwZWMuCj4gPj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+IFNpZ25lZC1vZmYtYnk6 IFVtYSBTaGFua2FyIDx1bWEuc2hhbmthckBpbnRlbC5jb20+Cj4gPj4+Pj4+Pj4+IEFja2VkLWJ5 OiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgo+ID4+Pj4+Pj4+PiBSZXZpZXdl ZC1ieTogU2hhc2hhbmsgU2hhcm1hIDxzaGFzaGFuay5zaGFybWFAaW50ZWwuY29tPgo+ID4+Pj4+ Pj4+PiBSZXZpZXdlZC1ieTogTWFhcnRlbiBMYW5raG9yc3QKPiA+Pj4+Pj4+Pj4gPG1hYXJ0ZW4u bGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiA+Pj4+Pj4+Pj4gLS0tCj4gPj4+Pj4+Pj4+ICAg ZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfdWFwaS5jIHwgIDQgKysKPiA+Pj4+Pj4+Pj4gICBk cml2ZXJzL2dwdS9kcm0vZHJtX2Nvbm5lY3Rvci5jICAgfCA3OAo+ID4+Pj4+Pj4+ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4+Pj4+Pj4+PiAgIGluY2x1ZGUvZHJt L2RybV9jb25uZWN0b3IuaCAgICAgICB8IDUwICsrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ Pj4+Pj4+Pj4gICAzIGZpbGVzIGNoYW5nZWQsIDEzMiBpbnNlcnRpb25zKCspCj4gPj4+Pj4+Pj4+ Cj4gPj4+Pj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY191YXBp LmMKPiA+Pj4+Pj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY191YXBpLmMKPiA+Pj4+ Pj4+Pj4gaW5kZXggOWExZjQxYS4uOWI1ZDQ0ZiAxMDA2NDQKPiA+Pj4+Pj4+Pj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2RybV9hdG9taWNfdWFwaS5jCj4gPj4+Pj4+Pj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fYXRvbWljX3VhcGkuYwo+ID4+Pj4+Pj4+PiBAQCAtNzQ2LDYgKzc0Niw4IEBA IHN0YXRpYyBpbnQKPiA+Pj4+Pj4+Pj4gZHJtX2F0b21pY19jb25uZWN0b3Jfc2V0X3Byb3BlcnR5 KHN0cnVjdAo+ID4+Pj4+Pj4+IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+Pj4+Pj4+Pj4g ICAJCQlyZXR1cm4gLUVJTlZBTDsKPiA+Pj4+Pj4+Pj4gICAJCX0KPiA+Pj4+Pj4+Pj4gICAJCXN0 YXRlLT5jb250ZW50X3Byb3RlY3Rpb24gPSB2YWw7Cj4gPj4+Pj4+Pj4+ICsJfSBlbHNlIGlmIChw cm9wZXJ0eSA9PSBjb25uZWN0b3ItPmNvbG9yc3BhY2VfcHJvcGVydHkpIHsKPiA+Pj4+Pj4+Pj4g KwkJc3RhdGUtPmNvbG9yc3BhY2UgPSB2YWw7Cj4gPj4+Pj4+Pj4+ICAgCX0gZWxzZSBpZiAocHJv cGVydHkgPT0gY29uZmlnLT53cml0ZWJhY2tfZmJfaWRfcHJvcGVydHkpIHsKPiA+Pj4+Pj4+Pj4g ICAJCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0KPiA+Pj4+IGRybV9mcmFtZWJ1ZmZlcl9s b29rdXAoZGV2LAo+ID4+Pj4+Pj4+IE5VTEwsIHZhbCk7Cj4gPj4+Pj4+Pj4+ICAgCQlpbnQgcmV0 ID0KPiA+Pj4+IGRybV9hdG9taWNfc2V0X3dyaXRlYmFja19mYl9mb3JfY29ubmVjdG9yKHN0YXRl LAo+ID4+Pj4+Pj4+IGZiKTsgQEAKPiA+Pj4+Pj4+Pj4gLTgxNCw2ICs4MTYsOCBAQCBzdGF0aWMg aW50Cj4gPj4+Pj4+Pj4+IGRybV9hdG9taWNfY29ubmVjdG9yX3NldF9wcm9wZXJ0eShzdHJ1Y3QK PiA+Pj4+Pj4+PiBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gPj4+Pj4+Pj4+ICAgCQkqdmFs ID0gc3RhdGUtPnBpY3R1cmVfYXNwZWN0X3JhdGlvOwo+ID4+Pj4+Pj4+PiAgIAl9IGVsc2UgaWYg KHByb3BlcnR5ID09IGNvbmZpZy0+Y29udGVudF90eXBlX3Byb3BlcnR5KSB7Cj4gPj4+Pj4+Pj4+ ICAgCQkqdmFsID0gc3RhdGUtPmNvbnRlbnRfdHlwZTsKPiA+Pj4+Pj4+Pj4gKwl9IGVsc2UgaWYg KHByb3BlcnR5ID09IGNvbm5lY3Rvci0+Y29sb3JzcGFjZV9wcm9wZXJ0eSkgewo+ID4+Pj4+Pj4+ PiArCQkqdmFsID0gc3RhdGUtPmNvbG9yc3BhY2U7Cj4gPj4+Pj4+Pj4+ICAgCX0gZWxzZSBpZiAo cHJvcGVydHkgPT0gY29ubmVjdG9yLT5zY2FsaW5nX21vZGVfcHJvcGVydHkpIHsKPiA+Pj4+Pj4+ Pj4gICAJCSp2YWwgPSBzdGF0ZS0+c2NhbGluZ19tb2RlOwo+ID4+Pj4+Pj4+PiAgIAl9IGVsc2Ug aWYgKHByb3BlcnR5ID09Cj4gPj4+Pj4+Pj4+IGNvbm5lY3Rvci0+Y29udGVudF9wcm90ZWN0aW9u X3Byb3BlcnR5KQo+ID4+Pj4+Pj4+PiB7IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJt X2Nvbm5lY3Rvci5jCj4gPj4+Pj4+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3Iu YyBpbmRleCA4NDc1Mzk2Li40MzA5ODczIDEwMDY0NAo+ID4+Pj4+Pj4+PiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vZHJtX2Nvbm5lY3Rvci5jCj4gPj4+Pj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fY29ubmVjdG9yLmMKPiA+Pj4+Pj4+Pj4gQEAgLTgyNiw2ICs4MjYsMzMgQEAgaW50Cj4g Pj4+Pj4+Pj4+IGRybV9kaXNwbGF5X2luZm9fc2V0X2J1c19mb3JtYXRzKHN0cnVjdAo+ID4+Pj4+ Pj4+PiBkcm1fZGlzcGxheV9pbmZvICppbmZvLCAgfTsKPiA+Pj4+Pj4+Pj4gRFJNX0VOVU1fTkFN RV9GTihkcm1fZ2V0X2NvbnRlbnRfcHJvdGVjdGlvbl9uYW1lLAo+ID4+Pj4+Pj4+IGRybV9jcF9l bnVtX2xpc3QpCj4gPj4+Pj4+Pj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wcm9wX2VudW1f bGlzdCBoZG1pX2NvbG9yc3BhY2VzW10gPSB7Cj4gPj4+Pj4+Pj4+ICsJLyogRm9yIERlZmF1bHQg Y2FzZSwgZHJpdmVyIHdpbGwgc2V0IHRoZSBjb2xvcnNwYWNlICovCj4gPj4+Pj4+Pj4+ICsJeyBE Uk1fTU9ERV9DT0xPUklNRVRSWV9ERUZBVUxULCAiRGVmYXVsdCIgfSwKPiA+Pj4+Pj4+Pj4gKwkv KiBTdGFuZGFyZCBEZWZpbml0aW9uIENvbG9yaW1ldHJ5IGJhc2VkIG9uIENFQSA4NjEgKi8KPiA+ Pj4+Pj4+Pj4gKwl7IERSTV9NT0RFX0NPTE9SSU1FVFJZX1NNUFRFXzE3ME0sICJTTVBURV8xNzBN IiB9LAo+ID4+Pj4+Pj4+PiArCXsgRFJNX01PREVfQ09MT1JJTUVUUllfQlQ3MDksICJCVDcwOSIg fSwKPiA+Pj4+Pj4+Pj4gKwkvKiBTdGFuZGFyZCBEZWZpbml0aW9uIENvbG9yaW1ldHJ5IGJhc2Vk IG9uIElFQyA2MTk2Ni0yLTQgKi8KPiA+Pj4+Pj4+Pj4gKwl7IERSTV9NT0RFX0NPTE9SSU1FVFJZ X1hWWUNDXzYwMSwgIlhWWUNDXzYwMSIgfSwKPiA+Pj4+Pj4+Pj4gKwkvKiBIaWdoIERlZmluaXRp b24gQ29sb3JpbWV0cnkgYmFzZWQgb24gSUVDIDYxOTY2LTItNCAqLwo+ID4+Pj4+Pj4+PiArCXsg RFJNX01PREVfQ09MT1JJTUVUUllfWFZZQ0NfNzA5LCAiWFZZQ0NfNzA5IiB9LAo+ID4+Pj4+Pj4+ PiArCS8qIENvbG9yaW1ldHJ5IGJhc2VkIG9uIElFQyA2MTk2Ni0yLTEvQW1lbmRtZW50IDEgKi8K PiA+Pj4+Pj4+Pj4gKwl7IERSTV9NT0RFX0NPTE9SSU1FVFJZX1NZQ0NfNjAxLCAiU1lDQ182MDEi IH0sCj4gPj4+Pj4+Pj4+ICsJLyogQ29sb3JpbWV0cnkgYmFzZWQgb24gSUVDIDYxOTY2LTItNSBb MzNdICovCj4gPj4+Pj4+Pj4+ICsJeyBEUk1fTU9ERV9DT0xPUklNRVRSWV9PUFlDQ182MDEsICJv cFlDQ182MDEiIH0sCj4gPj4+Pj4+Pj4+ICsJLyogQ29sb3JpbWV0cnkgYmFzZWQgb24gSUVDIDYx OTY2LTItNSAqLwo+ID4+Pj4+Pj4+PiArCXsgRFJNX01PREVfQ09MT1JJTUVUUllfT1BSR0IsICJv cFJHQiIgfSwKPiA+Pj4+Pj4+Pj4gKwkvKiBDb2xvcmltZXRyeSBiYXNlZCBvbiBJVFUtUiBCVC4y MDIwICovCj4gPj4+Pj4+Pj4+ICsJeyBEUk1fTU9ERV9DT0xPUklNRVRSWV9CVDIwMjBfWUNDLCAi QlQyMDIwX1lDQyIgfSwKPiA+Pj4+Pj4+Pj4gKwkvKiBDb2xvcmltZXRyeSBiYXNlZCBvbiBJVFUt UiBCVC4yMDIwICovCj4gPj4+Pj4+Pj4+ICsJeyBEUk1fTU9ERV9DT0xPUklNRVRSWV9CVDIwMjBf UkdCLCAiQlQyMDIwX1JHQiIgfSwKPiA+Pj4+Pj4+Pj4gKwkvKiBDb2xvcmltZXRyeSBiYXNlZCBv biBJVFUtUiBCVC4yMDIwICovCj4gPj4+Pj4+Pj4+ICsJeyBEUk1fTU9ERV9DT0xPUklNRVRSWV9C VDIwMjBfQ1lDQywgIkJUMjAyMF9DWUNDIiB9LAo+ID4+Pj4+Pj4+PiArCS8qIEFkZGVkIGFzIHBh cnQgb2YgQWRkaXRpb25hbCBDb2xvcmltZXRyeSBFeHRlbnNpb24gaW4gODYxLkcgKi8KPiA+Pj4+ Pj4+Pj4gKwl7IERSTV9NT0RFX0NPTE9SSU1FVFJZX0RDSV9QM19SR0JfRDY1LCAiRENJLQo+ID4+ Pj4gUDNfUkdCX0Q2NSIgfSwKPiA+Pj4+Pj4+Pj4gKwl7IERSTV9NT0RFX0NPTE9SSU1FVFJZX0RD SV9QM19SR0JfVEhFQVRFUiwgIkRDSS0KPiA+Pj4+Pj4+PiBQM19SR0JfVGhlYXRlciIgfSwKPiA+ Pj4+Pj4+Pj4gK307Cj4gPj4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+Pj4gICAvKioKPiA+Pj4+Pj4+Pj4g ICAgKiBET0M6IHN0YW5kYXJkIGNvbm5lY3RvciBwcm9wZXJ0aWVzCj4gPj4+Pj4+Pj4+ICAgICoK PiA+Pj4+Pj4+Pj4gQEAgLTE1NDgsNiArMTU3NSw1NyBAQCBpbnQKPiA+Pj4+Pj4+Pj4gZHJtX21v ZGVfY3JlYXRlX2FzcGVjdF9yYXRpb19wcm9wZXJ0eShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ ID4+Pj4+Pj4+PiBFWFBPUlRfU1lNQk9MKGRybV9tb2RlX2NyZWF0ZV9hc3BlY3RfcmF0aW9fcHJv cGVydHkpOwo+ID4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+PiAgIC8qKgo+ID4+Pj4+Pj4+PiArICogRE9D OiBzdGFuZGFyZCBjb25uZWN0b3IgcHJvcGVydGllcwo+ID4+Pj4+Pj4+PiArICoKPiA+Pj4+Pj4+ Pj4gKyAqIENvbG9yc3BhY2U6Cj4gPj4+Pj4+Pj4+ICsgKiAgICAgZHJtX21vZGVfY3JlYXRlX2Nv bG9yc3BhY2VfcHJvcGVydHkgLSBjcmVhdGUgY29sb3JzcGFjZQo+ID4+Pj4gcHJvcGVydHkKPiA+ Pj4+Pj4+Pj4gKyAqICAgICBUaGlzIHByb3BlcnR5IGhlbHBzIHNlbGVjdCBhIHN1aXRhYmxlIGNv bG9yc3BhY2UgYmFzZWQgb24gdGhlIHNpbmsKPiA+Pj4+Pj4+Pj4gKyAqICAgICBjYXBhYmlsaXR5 LiBNb2Rlcm4gc2luayBkZXZpY2VzIHN1cHBvcnQgd2lkZXIgZ2FtdXQgbGlrZSBCVDIwMjAuCj4g Pj4+Pj4+Pj4+ICsgKiAgICAgVGhpcyBoZWxwcyBzd2l0Y2ggdG8gQlQyMDIwIG1vZGUgaWYgdGhl IEJUMjAyMCBlbmNvZGVkIHZpZGVvCj4gPj4+PiBzdHJlYW0KPiA+Pj4+Pj4+Pj4gKyAqICAgICBp cyBiZWluZyBwbGF5ZWQgYnkgdGhlIHVzZXIsIHNhbWUgZm9yIGFueSBvdGhlciBjb2xvcnNwYWNl LiBUaGVyZWJ5Cj4gPj4+Pj4+Pj4+ICsgKiAgICAgZ2l2aW5nIGEgZ29vZCB2aXN1YWwgZXhwZXJp ZW5jZSB0byB1c2Vycy4KPiA+Pj4+Pj4+Pj4gKyAqCj4gPj4+Pj4+Pj4+ICsgKiAgICAgVGhlIGV4 cGVjdGF0aW9uIGZyb20gdXNlcnNwYWNlIGlzIHRoYXQgaXQgc2hvdWxkIHBhcnNlIHRoZSBFRElE Cj4gPj4+Pj4+Pj4+ICsgKiAgICAgYW5kIGdldCBzdXBwb3J0ZWQgY29sb3JzcGFjZXMuIFVzZSB0 aGlzIHByb3BlcnR5IGFuZCBzd2l0Y2ggdG8gdGhlCj4gPj4+Pj4+Pj4+ICsgKiAgICAgb25lIHN1 cHBvcnRlZC4gU2luayBzdXBwb3J0ZWQgY29sb3JzcGFjZXMgc2hvdWxkIGJlIHJldHJpZXZlZCBi eQo+ID4+Pj4+Pj4+PiArICogICAgIHVzZXJzcGFjZSBmcm9tIEVESUQgYW5kIGRyaXZlciB3aWxs IG5vdCBleHBsaWNpdGx5IGV4cG9zZSB0aGVtLgo+ID4+Pj4+Pj4+PiArICoKPiA+Pj4+Pj4+Pj4g KyAqICAgICBCYXNpY2FsbHkgdGhlIGV4cGVjdGF0aW9uIGZyb20gdXNlcnNwYWNlIGlzOgo+ID4+ Pj4+Pj4+PiArICogICAgICAtIFNldCB1cCBDUlRDIERFR0FNTUEvQ1RNL0dBTU1BIHRvIGNvbnZl cnQgdG8gc29tZSBzaW5rCj4gPj4+Pj4+Pj4+ICsgKiAgICAgICAgY29sb3JzcGFjZQo+ID4+Pj4+ Pj4+PiArICogICAgICAtIFNldCB0aGlzIG5ldyBwcm9wZXJ0eSB0byBsZXQgdGhlIHNpbmsga25v dyB3aGF0IGl0Cj4gPj4+Pj4+Pj4+ICsgKiAgICAgICAgY29udmVydGVkIHRoZSBDUlRDIG91dHB1 dCB0by4KPiA+Pj4+Pj4+Pj4gKyAqICAgICAgLSBUaGlzIHByb3BlcnR5IGlzIGp1c3QgdG8gaW5m b3JtIHNpbmsgd2hhdCBjb2xvcnNwYWNlCj4gPj4+Pj4+Pj4+ICsgKiAgICAgICAgc291cmNlIGlz IHRyeWluZyB0byBkcml2ZS4KPiA+Pj4+Pj4+Pj4gKyAqCj4gPj4+Pj4+Pj4+ICsgKiBDYWxsZWQg YnkgYSBkcml2ZXIgdGhlIGZpcnN0IHRpbWUgaXQncyBuZWVkZWQsIG11c3QgYmUKPiA+Pj4+Pj4+ Pj4gK2F0dGFjaGVkIHRvIGRlc2lyZWQKPiA+Pj4+Pj4+Pj4gKyAqIGNvbm5lY3RvcnMuCj4gPj4+ Pj4+Pj4+ICsgKi8KPiA+Pj4+Pj4+Pj4gK2ludCBkcm1fbW9kZV9jcmVhdGVfY29sb3JzcGFjZV9w cm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcgo+ID4+Pj4+Pj4+PiArKmNvbm5lY3Rvcikgewo+ ID4+Pj4+Pj4+PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmRldjsKPiA+ Pj4+Pj4+Pj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wOwo+ID4+Pj4+Pj4+PiArCj4gPj4+ Pj4+Pj4+ICsJaWYgKGNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUgPT0KPiA+Pj4+IERSTV9NT0RF X0NPTk5FQ1RPUl9IRE1JQSB8fAo+ID4+Pj4+Pj4+PiArCSAgICBjb25uZWN0b3ItPmNvbm5lY3Rv cl90eXBlID09Cj4gPj4+PiBEUk1fTU9ERV9DT05ORUNUT1JfSERNSUIpIHsKPiA+Pj4+Pj4+Pj4g KwkJcHJvcCA9IGRybV9wcm9wZXJ0eV9jcmVhdGVfZW51bShkZXYsCj4gPj4+Pj4+Pj4gRFJNX01P REVfUFJPUF9FTlVNLAo+ID4+Pj4+Pj4+PiArCQkJCQkJIkNvbG9yc3BhY2UiLAo+ID4+Pj4+Pj4+ PiArCQkJCQkJaGRtaV9jb2xvcnNwYWNlcywKPiA+Pj4+Pj4+Pj4gKwo+ID4+Pj4+Pj4+IAlBUlJB WV9TSVpFKGhkbWlfY29sb3JzcGFjZXMpKTsKPiA+Pj4+Pj4+Pj4gKwkJaWYgKCFwcm9wKQo+ID4+ Pj4+Pj4+PiArCQkJcmV0dXJuIC1FTk9NRU07Cj4gPj4+Pj4+Pj4+ICsJfSBlbHNlIHsKPiA+Pj4+ Pj4+Pj4gKwkJRFJNX0RFQlVHX0tNUygiQ29sb3JzcGFjZSBwcm9wZXJ0eSBub3QKPiA+Pj4+IHN1 cHBvcnRlZFxuIik7Cj4gPj4+Pj4+Pj4+ICsJCXJldHVybiAwOwo+ID4+Pj4+Pj4+PiArCX0KPiA+ Pj4+Pj4+Pj4gKwo+ID4+Pj4+Pj4+PiArCWNvbm5lY3Rvci0+Y29sb3JzcGFjZV9wcm9wZXJ0eSA9 IHByb3A7Cj4gPj4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+Pj4gKwlyZXR1cm4gMDsKPiA+Pj4+Pj4+Pj4g K30KPiA+Pj4+Pj4+Pj4gK0VYUE9SVF9TWU1CT0woZHJtX21vZGVfY3JlYXRlX2NvbG9yc3BhY2Vf cHJvcGVydHkpOwo+ID4+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+ICsvKioKPiA+Pj4+Pj4+Pj4gICAg KiBkcm1fbW9kZV9jcmVhdGVfY29udGVudF90eXBlX3Byb3BlcnR5IC0gY3JlYXRlIGNvbnRlbnQg dHlwZQo+ID4+Pj4gcHJvcGVydHkKPiA+Pj4+Pj4+Pj4gICAgKiBAZGV2OiBEUk0gZGV2aWNlCj4g Pj4+Pj4+Pj4+ICAgICoKPiA+Pj4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9j b25uZWN0b3IuaAo+ID4+Pj4+Pj4+PiBiL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaCBpbmRl eCA5OTQxNjEzLi41OGRiNjZlIDEwMDY0NAo+ID4+Pj4+Pj4+PiAtLS0gYS9pbmNsdWRlL2RybS9k cm1fY29ubmVjdG9yLmgKPiA+Pj4+Pj4+Pj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rv ci5oCj4gPj4+Pj4+Pj4+IEBAIC0yNTMsNiArMjUzLDQyIEBAIGVudW0gZHJtX3BhbmVsX29yaWVu dGF0aW9uIHsKPiA+Pj4+Pj4+Pj4gICAJRFJNX01PREVfUEFORUxfT1JJRU5UQVRJT05fUklHSFRf VVAsCj4gPj4+Pj4+Pj4+ICAgfTsKPiA+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4gKy8qCj4gPj4+Pj4+ Pj4+ICsgKiBUaGlzIGlzIGEgY29uc29saWRhdGVkIGNvbG9yaW1ldHJ5IGxpc3Qgc3VwcG9ydGVk IGJ5IEhETUkKPiA+Pj4+Pj4+Pj4gK2FuZAo+ID4+Pj4+Pj4+PiArICogRFAgcHJvdG9jb2wgc3Rh bmRhcmQuIFRoZSByZXNwZWN0aXZlIGNvbm5lY3RvcnMgd2lsbAo+ID4+Pj4+Pj4+PiArcmVnaXN0 ZXIKPiA+Pj4+Pj4+Pj4gKyAqIGEgcHJvcGVydHkgd2l0aCB0aGUgc3Vic2V0IG9mIHRoaXMgbGlz dCAoc3VwcG9ydGVkIGJ5IHRoYXQKPiA+Pj4+Pj4+Pj4gKyAqIHJlc3BlY3RpdmUgcHJvdG9jb2wp LiBVc2Vyc3BhY2Ugd2lsbCBzZXQgdGhlIGNvbG9yc3BhY2UKPiA+Pj4+Pj4+Pj4gK3Rocm91Z2gK PiA+Pj4+Pj4+Pj4gKyAqIGEgY29sb3JzcGFjZSBwcm9wZXJ0eSB3aGljaCB3aWxsIGJlIGNyZWF0 ZWQgYW5kIGV4cG9zZWQgdG8KPiA+Pj4+Pj4+Pj4gKyAqIHVzZXJzcGFjZS4KPiA+Pj4+Pj4+Pj4g KyAqLwo+ID4+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+ICsvKiBGb3IgRGVmYXVsdCBjYXNlLCBkcml2 ZXIgd2lsbCBzZXQgdGhlIGNvbG9yc3BhY2UgKi8KPiA+Pj4+Pj4+Pj4gKyNkZWZpbmUgRFJNX01P REVfQ09MT1JJTUVUUllfREVGQVVMVAkJCTAKPiA+Pj4+Pj4+Pj4gKy8qIENFQSA4NjEgTm9ybWFs IENvbG9yaW1ldHJ5IG9wdGlvbnMgKi8KPiA+Pj4+Pj4+Pj4gKyNkZWZpbmUgRFJNX01PREVfQ09M T1JJTUVUUllfTk9fREFUQQkJCTAKPiA+Pj4+Pj4+Pj4gKyNkZWZpbmUgRFJNX01PREVfQ09MT1JJ TUVUUllfU01QVEVfMTcwTQo+ID4+Pj4+PiAJMQo+ID4+Pj4+Pj4+PiArI2RlZmluZSBEUk1fTU9E RV9DT0xPUklNRVRSWV9CVDcwOQkJCTIKPiA+Pj4+Pj4+PiBTdGlsbCBtaXNzaW5nIHRoZSBZQ2JD ciBpbmZvcm1hdGlvbiBpbiB0aGVzZSB0d28uCj4gPj4+Pj4+PiBBcyBwZXIgQ1RBIDg2MS5HIHNw ZWMsIHdlIGhhdmUgdGhlc2UgYXMgb25seSBTTVBURV8xNzBNIGFuZCBJVFUtUgo+ID4+Pj4+Pj4g QlQ3MDksIHdpdGggbm8gc3BlY2lmaWMgbWVudGlvbiBvZiBSR0Igb3IgWUNiQ3IuIEhlbmNlLCBr ZXB0IGl0IGFzCj4gPj4+Pj4+PiBwZXIgc3BlYy4gV2Ugc2VlbSB0byBoYXZlIGEgY29tbW9uIGZp ZWxkIGZvciBib3RoIGFzIHBlciBDVEEgc3BlYy4KPiA+Pj4+Pj4+IENvcnJlY3QgbWUgaWYgbXkg dW5kZXJzdGFuZGluZyBpcyB3cm9uZy4KPiA+Pj4+Pj4gQ2hlY2sKPiA+Pj4+Pj4gIlRhYmxlIDE0 IFBpY3R1cmUgQ29sb3JpbWV0cnkgSW5kaWNhdGVkIGJ5IHRoZSBSR0Igb3IgWUMgQiBDIFIgKFkp LAo+ID4+Pj4+PiBDb2xvcmltZXRyeQo+ID4+Pj4+PiAoQykgYW5kIEV4dGVuZGVkIENvbG9yaW1l dHJ5IChFQykgRmllbGQgU2V0dGluZ3MiCj4gPj4+Pj4gVGhlc2UgIFkyIFkxIFkwIHZhbHVlcyBz aG91bGQgYmUgcHJvZ3JhbW1lZCBzZXBhcmF0ZWx5IGFuZCBub3QKPiA+Pj4+PiB0aHJvdWdoIHRo ZSBjb2xvcnNwYWNlIGFzIHRoZXkgYXJlIGRhdGEgZm9ybWF0cyBpc24ndCBpdC4gSSBmZWVsIHRo aXMKPiA+Pj4+PiBzaG91bGQgZ2V0IGNvbnRyb2xsZWQgc2VwYXJhdGVseSBpbmRlcGVuZGVudCBv ZiBjb2xvcmltZXRyeSwgb3IKPiA+Pj4+PiBzaG91bGQgd2UgYWRkIGFsbCB0aGUgWUNiQ3IgYW5k IFJHQiB2ZXJzaW9ucyBhbmQgcHJvZ3JhbSB0aGVtIGFzIHBhcnQKPiA+Pj4+PiBvZiB0aGlzIHBy b3BlcnR5IGl0c2VsZgo+ID4+Pj4gPwo+ID4+Pj4KPiA+Pj4+IEkgZG9uJ3QgdGhpbmsgd2UgY2Fu IHNlcGFyYXRlIHRoZW0uIFRoZSB2YWx1ZXMgb2YgdGhlIGNvbG9yaW1ldHJ5IGJpdHMKPiA+Pj4+ IGRvZXNuJ3QgbWVhbiBhbnl0aGluZyB3aXRob3V0IHRoZSBZIGJpdHMuIEl0IHdvdWxkIG1ha2Ug dGhlIHVhcGkga2luZGEKPiA+Pj4+IGNyYXp5IGlmIHdlIGFsbG93IHRoZSB1c2VyIHRvIHNwZWNp ZnkgQlQuMjAyMCBSR0IgYnV0IHRoZW4gd2UgYWN0dWFsbHkKPiA+Pj4+IHNpZ25hbCBCVC4yMDIw IFlDYkNyIGluIHRoZSBpbmZvZnJhbWUsIG9yIHZpY2UgdmVyc2EuIE9yIHdlIGp1c3Qgc2lnbmFs Cj4gPj4+PiBhIHRvdGFsbHkgaW52YWxpZCB2YWx1ZSBmb3IgYWxsIHRoZSBvdGhlciBjYXNlcy4K PiA+Pj4gSSBhZ3JlZSB3ZSBuZWVkIGRhdGEgZm9ybWF0IGFsc28gdG8gYmUgc2VuZCBhbG9uZyB3 aXRoIGNvbG9yc3BhY2UsIGJ1dCB0aGV5IGFyZSAyCj4gPj4+IGRpZmZlcmVudCB0aGluZ3MuIFRv IGhhbmRsZSBZQ2JDciBhbmQgdmFyaWFudHMgKFlVViA0NDQsIDQyMCBvciA0MjIpIGFuZCBSR0Ig SSBmZWVsCj4gPj4+IHdlIHNob3VsZCBleHBvc2UgYSBkaWZmZXJlbnQgQVBJIGluc3RlYWQgb2Yg dXNpbmcgdGhpcyBvbmUuICBXZSBjYW4gY3JlYXRlIGFuIG91dHB1dAo+ID4+PiBjc2MgcHJvcGVy dHkgd2hpY2ggZG9lcyB0aGF0IGpvYiBmb3IgdXMuCj4gPj4+Cj4gPj4+IFNvIGZyb20gYSB1c2Vy IHBlcnNwZWN0aXZlIGlmIHdlIHdhbnRzIHRvIHNldCBhIGNvbG9yc3BhY2Ugd2Ugc2hvdWxkIHVz ZSB0aGUgb25lIGluCj4gPj4+IHRoaXMgc2VyaWVzIGFuZCBzZXQgdGhlIGRhdGEgZm9ybWF0IHNl cGFyYXRlbHkgdXNpbmcgdGhlIG90aGVyIGludGVyZmFjZS4gQm90aCB3aWxsIGJlCj4gPj4+IHJl Y2VpdmVkIGluIHRoZSBzdGF0ZSB2YXJpYWJsZXMgYW5kIGxhdGVyIEluZm9mcmFtZSBwYWNrZXQg d2lsbCBiZSBjcmVhdGVkIGFjY29yZGluZ2x5Lgo+ID4+PiBDbHViYmluZyBib3RoIGluIG9uZSBt YXkgbGVhZCB0byBsb3Qgb2YgcG9zc2libGUgY29tYmluYXRpb25zIGV4cG9zZWQgYXMgZW51bQo+ ID4+PiB3aGljaCBtYXkgbm90IGxvb2sgdG9vIGNsZWFuLgo+ID4+Pgo+ID4+PiBXaGF0IGRvIHlv dSBzYXkgYWJvdXQgaGFuZGxpbmcgdGhhdCBpbiB0aGUgb3V0cHV0IGNzYyBwcm9wZXJ0eS4gSSB3 aWxsIGdvIHdpdGggd2hhdCB5b3UKPiA+Pj4gcmVjb21tZW5kIC4KPiA+PiBQcm9ncmFtbWluZyBZ MlkxWTAgaXMgYWxyZWFkeSB0YWtlbiBjYXJlIG9mLCB3aGVuIHdlIGFkZGVkIHN1cHBvcnQgZm9y IFlDQkNSIG91dHB1dHMgKDQ6MjowIGltcGxlbWVudGF0aW9uKS4KPiA+PiBJbiBpbnRlbF9oZG1p LmM6aW50ZWxfaGRtaV9zZXRfYXZpX2luZm9mcmFtZSgpOgo+ID4+Cj4gPj4gaWYgKGNydGNfc3Rh dGUtPm91dHB1dF9mb3JtYXQgPT0gSU5URUxfT1VUUFVUX0ZPUk1BVF9ZQ0JDUjQyMCkKPiA+PiAJ ZnJhbWUuYXZpLmNvbG9yc3BhY2UgPSBIRE1JX0NPTE9SU1BBQ0VfWVVWNDIwOwo+ID4+IGVsc2Ug aWYgKGNydGNfc3RhdGUtPm91dHB1dF9mb3JtYXQgPT0gSU5URUxfT1VUUFVUX0ZPUk1BVF9ZQ0JD UjQ0NCkKPiA+PiAJZnJhbWUuYXZpLmNvbG9yc3BhY2UgPSBIRE1JX0NPTE9SU1BBQ0VfWVVWNDQ0 Owo+ID4+IGVsc2UKPiA+PiAJZnJhbWUuYXZpLmNvbG9yc3BhY2UgPSBIRE1JX0NPTE9SU1BBQ0Vf UkdCOwo+ID4+Cj4gPj4gSU1PIFRoaXMgbG9va3MgbGlrZSBhIGJldHRlciB3YXkgdG8gaGFuZGxl IHRoaXMsIGllIHdoaWxlIGFkZGluZyBzdXBwb3J0IGZvciBhIG5ldyBmb3JtYXQsIGFkZCBzdXBw b3J0IGZvciBjb3JyZXNwb25kaW5nIEFWSSBJRiBmaWxlZHMuIFRoaXMgd2lsbCBhbHNvIG1ha2Ug c2NvcGUgb2YgdGhlIHByb3BlcnR5IHVuZGVyIGRpc2N1c3Npb24gbGVzcyBjb21wbGljYXRlZC4K PiA+IFRoYXQncyBhbiBleGNlcHRpb25hbCBjYXNlLiBXZSdyZSBwcm9ncmFtbWluZyB0aGUgQ1ND IGluIHRoYXQgY2FzZQo+ID4gdG8gZG8gdGhlIFJHQi0+WUNiQ3IgY29udmVyc2lvbiB3aXRob3V0 IHRlbGxpbmcgdXNlcnNwYWNlLiBTbyB3ZQo+ID4gbXVzdCBhbHNvIGNvbmZpZ3VyZSB0aGUgWSBi aXRzIGF1dG9tYWdpY2FsbHkuCj4gPgo+ID4gV2hhdCB3ZSB3YW50IGlzIGEgY2hlY2sgbGlrZSBz bzoKPiA+Cj4gPiBpZiAocHJvcC5jb2xvcnNwYWNlICE9IGRlZmF1bHQgJiYgb3V0cHV0X2Zvcm1h dCAhPSBSR0IpCj4gPiAgICAgIHJldHVybiAtSU5WQUw7Cj4gPgo+ID4gYmVjYXVzZSB3ZSBjYW4n dCBzZXQgdXAgdGhlIENTQyB0byBtYWtlIGEgbWVzcyBvZiB0aGUgdXNlcidzCj4gPiBjYXJlZnVs bHkgY3JhZnRlZCBwaXhlbHMuIFRoZSBwaXhlbHMgbWlnaHQgbm90IGV2ZW4gY29udGFpbgo+ID4g UkdCIGRhdGEgaW4gdGhhdCBjYXNlLgo+ID4KPiA+IFdlJ2xsIG5lZWQgdG8gZXh0ZW5kIHRoYXQg YSBsaXR0bGUgYml0IG9uY2Ugd2UgYWRkIHRoZSBleHBsaWNpdAo+ID4gY29udHJvbCBvZiB0aGUg b3V0cHV0IENTQyB2aWEgYW5vdGhlciBwcm9wLiBCdXQgdGhlIHNhbWUKPiA+IHByaW5jaXBsZSBz aG91bGQgaG9sZC4KPiAKPiBJbiBmYWN0LCBJIHJlbWVtYmVyIHRoZSByZWFzb24gd2h5IHdlIGNy ZWF0ZWQgaW5mcmFzdHJ1Y3R1cmUgbGlrZSB0aGlzLCAKPiBzbyB0aGF0LCBnb2luZyBmb3J3YXJk LCB3ZSBjb3VsZCBqdXN0IGFkZCBhIG91dHB1dF9mb3JtYXQgcHJvcGVydHksIGZvciAKPiB3aGlj aCwgd2UgYWxyZWFkeSBoYXZlIHRoZSBiYWNrZWQgYW5kIHRoZSBzdGF0ZSB2YXJpYWJsZXMgcmVh ZHkuIFRoZSAKPiBjb25zdW1lIG9mIHRoaXMgYmFja2VuZCBjYW4gYmUgdGhpcyBkcm1fcHJvcGVy dHkgKGxpa2Ugb3V0cHV0X2Zvcm1hdCksIAo+IG9yIGludGVybmFsIG1vZGVzZXQgbGlrZSBZQ0JD UjQ6MjowIG9ubHkgbW9kZXMgaW4gRURJRC4gSXQgd2lsbCBhbHNvIGJlIAo+IGlubGluZSB3aXRo IHlvdXIgc3VnZ2VzdGlvbiBvZiBDU0MgcHJvcGVydHkuCj4gCj4gU28gd2UgY2FuIGhhdmUgdHdv IHByb3BlcnRpZXMgY29sb3JzcGFjZSAoQlQyMDIwL1NSR0IvUkVDNzA5KSBhbmQgCj4gY29sb3Jf bW9kZWwvY29sb3JfZm9ybWF0KFJHQi9ZQ0JDUjQ0NC80MjApLCBhbmQgYSBjb21iaW5hdGlvbiBv ZiBib3RoIAo+IHNob3VsZCBwcm9ncmFtIHRoZSBvdXRwdXQgQVZJIGluZm8tZnJhbWVzLiBEb2Vz IGl0IGFwcGVhbCB5b3UgPwoKSSdtIG5vdCBzdXJlIGl0J3MgZmVhc2libGUgdG8gc3BsaXQgaXQg bGlrZSB0aGF0LiBUaGUgY29tYmluYXRpb25zCnN1cHBvcnRlZCBieSB0aGUgaW5mb2ZyYW1lIGFy ZSByYXRoZXIgc3BlY2lmaWMgc28gdHJ5aW5nIHRvIHNwbGl0IGl0CnVwIGxlYWRzIHRvIGVpdGhl ciBzdXBlciBsaW1pdGVkIHVhcGksIG9yIG9uZSB0aGF0IGV4cG9zZXMgYSBsb3Qgb2YKaWxsZWdh bCBjb21iaW5hdGlvbnMuIEFsc28gRFAgaGFzIHNsaWdodGx5IGRpZmZlcmVudCBzZXQgb2YgdGhp bmdzCml0IHN1cHBvcnRzIHdoaWNoIGFkZHMgbW9yZSBjb21wbGljYXRpb25zLgoKU28gSSB0aGlu ayB0aGUgYmVzdCBvcHRpb24gaXMgc3RpbGwgdG8gaW5jbHVkZSB0aGUgWT15ZXMvbm8KaW5mb3Jt YXRpb24gaW4gdGhlIHByb3AgdmFsdWUgYWxvZ25zaWRlIHRoZSBDL0VDL0FDRSBiaXRzLgoKPiAK PiAtIFNoYXNoYW5rCj4gCj4gPgo+ID4+PiBSZWdhcmRzLAo+ID4+PiBVbWEgU2hhbmthcgo+ID4+ Pgo+ID4+Pgo+ID4+Pgo+ID4+Pj4+IE15IGlkZWEgd2FzIGp1c3QgdG8gdXBkYXRlIGNvbG9yaW1l dHJ5IGZpZWxkcyBhbG9uZSBhcyBwYXJ0IG9mIHRoaXMgaW50ZXJmYWNlLgo+ID4+Pj4+Cj4gPj4+ Pj4+Pj4+ICsvKiBDRUEgODYxIEV4dGVuZGVkIENvbG9yaW1ldHJ5IE9wdGlvbnMgKi8gI2RlZmlu ZQo+ID4+Pj4+Pj4+PiArRFJNX01PREVfQ09MT1JJTUVUUllfWFZZQ0NfNjAxCj4gPj4+PiAJMwo+ ID4+Pj4+Pj4+PiArI2RlZmluZSBEUk1fTU9ERV9DT0xPUklNRVRSWV9YVllDQ183MDkKPiA+Pj4+ IAk0Cj4gPj4+Pj4+Pj4+ICsjZGVmaW5lIERSTV9NT0RFX0NPTE9SSU1FVFJZX1NZQ0NfNjAxCQkJ NQo+ID4+Pj4+Pj4+PiArI2RlZmluZSBEUk1fTU9ERV9DT0xPUklNRVRSWV9PUFlDQ182MDEKPiA+ Pj4+IAk2Cj4gPj4+Pj4+Pj4+ICsjZGVmaW5lIERSTV9NT0RFX0NPTE9SSU1FVFJZX09QUkdCCQkJ Nwo+ID4+Pj4+Pj4+PiArI2RlZmluZSBEUk1fTU9ERV9DT0xPUklNRVRSWV9CVDIwMjBfWUNDCj4g Pj4+PiAJOAo+ID4+Pj4+Pj4+PiArLyogQm90aCBCVDIwMjBfUkdCIGFuZCBCVDIwMjBfWUNiQ2JD ciBoYXZlIHNhbWUgdmFsdWUgKi8KPiA+Pj4+Pj4+Pj4gKyNkZWZpbmUgRFJNX01PREVfQ09MT1JJ TUVUUllfQlQyMDIwX1JHQgo+ID4+Pj4gCTkKPiA+Pj4+Pj4+Pj4gKyNkZWZpbmUgRFJNX01PREVf Q09MT1JJTUVUUllfQlQyMDIwX0NZQ0MJCTkKPiA+Pj4+Pj4+PiBJIHRob3VnaCB5b3UgZGlkbid0 IHdhbnQgdGhlc2UgbnVtYmVycyB0byBiZSBiYXNlZCBvbiB0aGUgc3BlYwo+ID4+Pj4+Pj4+IG51 bWJlcnM/IFRoaXMgZHVwbGljYXRlZCB2YWx1ZSBzZWVtcyB0byBnbyBhZ2FpbnN0IHRoYXQgaWRl YS4KPiA+Pj4+Pj4+IFllYWgsIGZvciBIRE1JIHNvbWVob3cgd2FzIHRyeWluZyB0byB1dGlsaXpl IHRoZSBkZWZpbml0aW9ucyB0bwo+ID4+Pj4+Pj4gYWR2YW50YWdlLiBCdXQgSSBmZWVsLCBJdCdz IGJldHRlciB0byBkZS1jb3VwbGUgdGhpcy4gRGVmaW5lIHRoaXMKPiA+Pj4+Pj4+IGFzIG5vcm1h bCBlbnVtIHZhbHVlcyBzZXF1ZW50aWFsbHkgc28gdGhhdCB1c2Vyc3BhY2UgZ2V0IHJlYWRhYmxl Cj4gPj4+Pj4+PiBzZXJpYWwgbnVtYmVyCj4gPj4+Pj4+IGtpbmQgdmFsdWVzLgo+ID4+Pj4+Pj4g QW5kIHVzZSB0aGVzZSBpbiBlbmNvZGVyIGZpbGVzIHRvIGdldCBwcm9wZXIgdmFsdWVzIHRvIGJl Cj4gPj4+Pj4+PiBwcm9ncmFtbWVkIGFzIHBlciByZXNwZWN0aXZlIHNwZWMsIHdoaWxlIGRlZmlu aW5nIHRob3NlIHZhbHVlcyBwZXIKPiA+Pj4+Pj4+IGVuY29kZXIKPiA+Pj4+IHNlcGFyYXRlbHku Cj4gPj4+Pj4+IEhvcGUgdGhpcyBpcyBmaW5lLgo+ID4+Pj4+Pj4+PiArLyogQWRkaXRpb25hbCBD b2xvcmltZXRyeSBleHRlbnNpb24gYWRkZWQgYXMgcGFydCBvZiBDVEEgODYxLkcgKi8KPiA+Pj4+ Pj4+Pj4gKyNkZWZpbmUgRFJNX01PREVfQ09MT1JJTUVUUllfRENJX1AzX1JHQl9ENjUJCTEwCj4g Pj4+Pj4+Pj4+ICsjZGVmaW5lIERSTV9NT0RFX0NPTE9SSU1FVFJZX0RDSV9QM19SR0JfVEhFQVRF Ugo+ID4+Pj4+PiAJMTEKPiA+Pj4+Pj4+Pj4gKwo+ID4+Pj4+Pj4+PiArLyogRFAgTVNBIENvbG9y aW1ldHJ5IE9wdGlvbnMgKi8gI2RlZmluZQo+ID4+Pj4+Pj4+PiArRFJNX01PREVfRFBfQ09MT1JJ TUVUUllfWUNCQ1JfSVRVXzYwMQo+ID4+Pj4gCTEyCj4gPj4+Pj4+Pj4+ICsjZGVmaW5lIERSTV9N T0RFX0RQX0NPTE9SSU1FVFJZX1lDQkNSX0lUVV83MDkKPiA+Pj4+IAkxMwo+ID4+Pj4+Pj4+IFN0 aWxsIGluY29uc2lzdGVudCBuYW1pbmcgaW4gbWFueSBwbGFjZXMgKElUVV8gdnMuIEJULCBZQ0JD UiB2cy4KPiA+Pj4+Pj4+PiBZQ0MsIG9yZGVyIG9mIHRoZSB0d28pLgo+ID4+Pj4+Pj4gV2lsbCBm aXggdGhpcy4gVGhhbmtzIFZpbGxlLgo+ID4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4gKyNkZWZpbmUgRFJN X01PREVfRFBfQ09MT1JJTUVUUllfU1JHQgkJCTE0Cj4gPj4+Pj4+Pj4+ICsjZGVmaW5lIERSTV9N T0RFX0RQX0NPTE9SSU1FVFJZX1JHQl9XSURFX0dBTVVUCj4gPj4+Pj4+IAkxNQo+ID4+Pj4+Pj4+ PiArI2RlZmluZSBEUk1fTU9ERV9EUF9DT0xPUklNRVRSWV9TQ1JHQgo+ID4+Pj4gCTE2Cj4gPj4+ Pj4+Pj4+ICsKPiA+Pj4+Pj4+Pj4gICAvKioKPiA+Pj4+Pj4+Pj4gICAgKiBzdHJ1Y3QgZHJtX2Rp c3BsYXlfaW5mbyAtIHJ1bnRpbWUgZGF0YSBhYm91dCB0aGUgY29ubmVjdGVkIHNpbmsKPiA+Pj4+ Pj4+Pj4gICAgKgo+ID4+Pj4+Pj4+PiBAQCAtNTAzLDYgKzUzOSwxMyBAQCBzdHJ1Y3QgZHJtX2Nv bm5lY3Rvcl9zdGF0ZSB7Cj4gPj4+Pj4+Pj4+ICAgCXVuc2lnbmVkIGludCBjb250ZW50X3Byb3Rl Y3Rpb247Cj4gPj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+ICAgCS8qKgo+ID4+Pj4+Pj4+PiArCSAqIEBj b2xvcnNwYWNlOiBTdGF0ZSB2YXJpYWJsZSBmb3IgQ29ubmVjdG9yIHByb3BlcnR5IHRvIHJlcXVl c3QKPiA+Pj4+Pj4+Pj4gKwkgKiBjb2xvcnNwYWNlIGNoYW5nZSBvbiBTaW5rLiBUaGlzIGlzIG1v c3QgY29tbW9ubHkgdXNlZCB0bwo+ID4+Pj4gc3dpdGNoCj4gPj4+Pj4+Pj4+ICsJICogdG8gd2lk ZXIgY29sb3IgZ2FtdXRzIGxpa2UgQlQyMDIwLgo+ID4+Pj4+Pj4+PiArCSAqLwo+ID4+Pj4+Pj4+ PiArCXUzMiBjb2xvcnNwYWNlOwo+ID4+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+ICsJLyoqCj4gPj4+ Pj4+Pj4+ICAgCSAqIEB3cml0ZWJhY2tfam9iOiBXcml0ZWJhY2sgam9iIGZvciB3cml0ZWJhY2sg Y29ubmVjdG9ycwo+ID4+Pj4+Pj4+PiAgIAkgKgo+ID4+Pj4+Pj4+PiAgIAkgKiBIb2xkcyB0aGUg ZnJhbWVidWZmZXIgYW5kIG91dC1mZW5jZSBmb3IgYSB3cml0ZWJhY2sKPiA+Pj4+IGNvbm5lY3Rv ci4KPiA+Pj4+Pj4+Pj4gQXMgQEAgLTk5NSw2ICsxMDM4LDEyIEBAIHN0cnVjdCBkcm1fY29ubmVj dG9yIHsKPiA+Pj4+Pj4+Pj4gICAJc3RydWN0IGRybV9wcm9wZXJ0eSAqY29udGVudF9wcm90ZWN0 aW9uX3Byb3BlcnR5Owo+ID4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+PiAgIAkvKioKPiA+Pj4+Pj4+Pj4g KwkgKiBAY29sb3JzcGFjZV9wcm9wZXJ0eTogQ29ubmVjdG9yIHByb3BlcnR5IHRvIHNldCB0aGUg c3VpdGFibGUKPiA+Pj4+Pj4+Pj4gKwkgKiBjb2xvcnNwYWNlIHN1cHBvcnRlZCBieSB0aGUgc2lu ay4KPiA+Pj4+Pj4+Pj4gKwkgKi8KPiA+Pj4+Pj4+Pj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpj b2xvcnNwYWNlX3Byb3BlcnR5Owo+ID4+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+ICsJLyoqCj4gPj4+ Pj4+Pj4+ICAgCSAqIEBwYXRoX2Jsb2JfcHRyOgo+ID4+Pj4+Pj4+PiAgIAkgKgo+ID4+Pj4+Pj4+ PiAgIAkgKiBEUk0gYmxvYiBwcm9wZXJ0eSBkYXRhIGZvciB0aGUgRFAgTVNUIHBhdGggcHJvcGVy dHkuIFRoaXMKPiA+Pj4+Pj4+Pj4gc2hvdWxkIG9ubHkgQEAgLTEyNjksNiArMTMxOCw3IEBAIGlu dAo+ID4+Pj4+Pj4+PiBkcm1fY29ubmVjdG9yX2F0dGFjaF92cnJfY2FwYWJsZV9wcm9wZXJ0eSgK PiA+Pj4+Pj4+Pj4gICBpbnQgZHJtX2Nvbm5lY3Rvcl9hdHRhY2hfY29udGVudF9wcm90ZWN0aW9u X3Byb3BlcnR5KAo+ID4+Pj4+Pj4+PiAgIAkJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv cik7ICBpbnQKPiA+Pj4+Pj4+Pj4gZHJtX21vZGVfY3JlYXRlX2FzcGVjdF9yYXRpb19wcm9wZXJ0 eShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiA+Pj4+Pj4+Pj4gK2ludCBkcm1fbW9kZV9jcmVh dGVfY29sb3JzcGFjZV9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcgo+ID4+Pj4+Pj4+PiAr KmNvbm5lY3Rvcik7Cj4gPj4+Pj4+Pj4+ICAgaW50IGRybV9tb2RlX2NyZWF0ZV9jb250ZW50X3R5 cGVfcHJvcGVydHkoc3RydWN0IGRybV9kZXZpY2UKPiA+Pj4+Pj4+Pj4gKmRldik7IHZvaWQgZHJt X2hkbWlfYXZpX2luZm9mcmFtZV9jb250ZW50X3R5cGUoc3RydWN0Cj4gPj4+Pj4+Pj4+IGhkbWlf YXZpX2luZm9mcmFtZQo+ID4+Pj4+Pj4+ICpmcmFtZSwKPiA+Pj4+Pj4+Pj4gICAJCQkJCSBjb25z dCBzdHJ1Y3QKPiA+Pj4+IGRybV9jb25uZWN0b3Jfc3RhdGUKPiA+Pj4+Pj4+PiAqY29ubl9zdGF0 ZSk7Cj4gPj4+Pj4+Pj4+IC0tCj4gPj4+Pj4+Pj4+IDEuOS4xCj4gPj4+Pj4+Pj4+Cj4gPj4+IF9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPj4+IEludGVs LWdmeCBtYWlsaW5nIGxpc3QKPiA+Pj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ ID4+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbApfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9kcmktZGV2ZWwK