From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [Intel-gfx] [RFC v4 3/8] drm: Add Plane CTM property Date: Wed, 22 Aug 2018 16:06:23 +0300 Message-ID: <20180822130623.GB5565@intel.com> References: <1534515531-20599-1-git-send-email-uma.shankar@intel.com> <1534515531-20599-4-git-send-email-uma.shankar@intel.com> <1534927216.5152.6.camel@intel.com> <20180822095358.GX5565@intel.com> <20180822111141.GA29527@e107564-lin.cambridge.arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20180822111141.GA29527@e107564-lin.cambridge.arm.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Brian Starkey Cc: "dcastagna@chromium.org" , "intel-gfx@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" , "Shankar, Uma" , "seanpaul@chromium.org" , "Syrjala, Ville" , "Lankhorst, Maarten" List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBBdWcgMjIsIDIwMTggYXQgMTI6MTE6NDJQTSArMDEwMCwgQnJpYW4gU3RhcmtleSB3 cm90ZToKPiBIaSwKPiAKPiBPbiBXZWQsIEF1ZyAyMiwgMjAxOCBhdCAxMjo1Mzo1OFBNICswMzAw LCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4gPk9uIFdlZCwgQXVnIDIyLCAyMDE4IGF0IDA4OjQw OjE5QU0gKzAwMDAsIExhbmtob3JzdCwgTWFhcnRlbiB3cm90ZToKPiA+PiBmcmUgMjAxOC0wOC0x NyBrbG9ja2FuIDE5OjQ4ICswNTMwIHNrcmV2IFVtYSBTaGFua2FyOgo+ID4+ID4gQWRkIGEgYmxv YiBwcm9wZXJ0eSBmb3IgcGxhbmUgQ1NDIHVzYWdlLgo+ID4+ID4KPiA+PiA+IHYyOiBSZWJhc2UK PiA+PiA+Cj4gPj4gPiB2MzogRml4ZWQgU2VhbiwgUGF1bCdzIHJldmlldyBjb21tZW50cy4gTW92 ZWQgdGhlIHByb3BlcnR5IGZyb20KPiA+PiA+IG1vZGVfY29uZmlnIHRvIGRybV9wbGFuZS4gQ3Jl YXRlZCBhIGhlbHBlciBmdW5jdGlvbiB0byBpbnN0YW50aWF0ZQo+ID4+ID4gdGhlc2UgcHJvcGVy dGllcyBhbmQgcmVtb3ZlZCBmcm9tIGRybV9tb2RlX2NyZWF0ZV9zdGFuZGFyZF9wcm9wZXJ0aWVz Cj4gPj4gPiBBZGRlZCBwcm9wZXJ0eSBkb2N1bWVudGF0aW9uIGFzIHN1Z2dlc3RlZCBieSBEYW5p ZWwsIFZldHRlci4KPiA+PiA+Cj4gPj4gPiB2NDogUmViYXNlCj4gPj4gPgo+ID4+ID4gU2lnbmVk LW9mZi1ieTogVW1hIFNoYW5rYXIgPHVtYS5zaGFua2FyQGludGVsLmNvbT4KPiA+PiA+IC0tLQo+ ID4+ID4gIERvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMucnN0ICAgICAgIHwgIDMgKysrCj4gPj4g PiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYyAgICAgICAgfCAxMCArKysrKysrKysrCj4g Pj4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgfCAgNCArKysrCj4gPj4g PiAgZHJpdmVycy9ncHUvZHJtL2RybV9wbGFuZS5jICAgICAgICAgfCAxMiArKysrKysrKysrKysK PiA+PiA+ICBpbmNsdWRlL2RybS9kcm1fcGxhbmUuaCAgICAgICAgICAgICB8IDE1ICsrKysrKysr KysrKysrKwo+ID4+ID4gIDUgZmlsZXMgY2hhbmdlZCwgNDQgaW5zZXJ0aW9ucygrKQo+ID4+ID4K PiA+PiA+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLnJzdCBiL0RvY3Vt ZW50YXRpb24vZ3B1L2RybS0KPiA+PiA+IGttcy5yc3QKPiA+PiA+IGluZGV4IDhiMTBiMTIuLjE2 ZDZkOGQgMTAwNjQ0Cj4gPj4gPiAtLS0gYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLnJzdAo+ ID4+ID4gKysrIGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy5yc3QKPiA+PiA+IEBAIC01NjAs NiArNTYwLDkgQEAgUGxhbmUgQ29sb3IgTWFuYWdlbWVudCBQcm9wZXJ0aWVzCj4gPj4gPiAgLi4g a2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9kcm1fcGxhbmUuYwo+ID4+ID4gICAgIDpkb2M6 IGRlZ2FtbWFfbHV0X3NpemVfcHJvcGVydHkKPiA+PiA+Cj4gPj4gPiArLi4ga2VybmVsLWRvYzo6 IGRyaXZlcnMvZ3B1L2RybS9kcm1fcGxhbmUuYwo+ID4+ID4gKyAgIDpkb2M6IGN0bV9wcm9wZXJ0 eQo+ID4+ID4gKwo+ID4+ID4gIFRpbGUgR3JvdXAgUHJvcGVydHkKPiA+PiA+ICAtLS0tLS0tLS0t LS0tLS0tLS0tCj4gPj4gPgo+ID4+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1f YXRvbWljLmMKPiA+PiA+IGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+ID4+ID4gaW5k ZXggZjhjYWQ5Yi4uZGRkYTkzNSAxMDA2NDQKPiA+PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9k cm1fYXRvbWljLmMKPiA+PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiA+ PiA+IEBAIC05MTcsNiArOTE3LDE0IEBAIHN0YXRpYyBpbnQgZHJtX2F0b21pY19wbGFuZV9zZXRf cHJvcGVydHkoc3RydWN0Cj4gPj4gPiBkcm1fcGxhbmUgKnBsYW5lLAo+ID4+ID4gIAkJCQkJJnJl cGxhY2VkKTsKPiA+PiA+ICAJCXN0YXRlLT5jb2xvcl9tZ210X2NoYW5nZWQgfD0gcmVwbGFjZWQ7 Cj4gPj4gPiAgCQlyZXR1cm4gcmV0Owo+ID4+ID4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IHBs YW5lLT5jdG1fcHJvcGVydHkpIHsKPiA+PiA+ICsJCXJldCA9IGRybV9hdG9taWNfcmVwbGFjZV9w cm9wZXJ0eV9ibG9iX2Zyb21faWQoZGV2LAo+ID4+ID4gKwkJCQkJJnN0YXRlLT5jdG0sCj4gPj4g PiArCQkJCQl2YWwsCj4gPj4gPiArCQkJCQlzaXplb2Yoc3RydWN0Cj4gPj4gPiBkcm1fY29sb3Jf Y3RtKSwgLTEsCj4gPj4gPiArCQkJCQkmcmVwbGFjZWQpOwo+ID4+ID4gKwkJc3RhdGUtPmNvbG9y X21nbXRfY2hhbmdlZCB8PSByZXBsYWNlZDsKPiA+PiA+ICsJCXJldHVybiByZXQ7Cj4gPj4gPiAg CX0gZWxzZSBpZiAocGxhbmUtPmZ1bmNzLT5hdG9taWNfc2V0X3Byb3BlcnR5KSB7Cj4gPj4gPiAg CQlyZXR1cm4gcGxhbmUtPmZ1bmNzLT5hdG9taWNfc2V0X3Byb3BlcnR5KHBsYW5lLAo+ID4+ID4g c3RhdGUsCj4gPj4gPiAgCQkJCXByb3BlcnR5LCB2YWwpOwo+ID4+ID4gQEAgLTk4OCw2ICs5OTYs OCBAQCBzdGF0aWMgaW50IGRybV9hdG9taWNfcGxhbmVfc2V0X3Byb3BlcnR5KHN0cnVjdAo+ID4+ ID4gZHJtX3BsYW5lICpwbGFuZSwKPiA+PiA+ICAJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBwbGFu ZS0+ZGVnYW1tYV9sdXRfcHJvcGVydHkpIHsKPiA+PiA+ICAJCSp2YWwgPSAoc3RhdGUtPmRlZ2Ft bWFfbHV0KSA/Cj4gPj4gPiAgCQkJc3RhdGUtPmRlZ2FtbWFfbHV0LT5iYXNlLmlkIDogMDsKPiA+ PiA+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBwbGFuZS0+Y3RtX3Byb3BlcnR5KSB7Cj4gPj4g PiArCQkqdmFsID0gKHN0YXRlLT5jdG0pID8gc3RhdGUtPmN0bS0+YmFzZS5pZCA6IDA7Cj4gPj4g PiAgCX0gZWxzZSBpZiAocGxhbmUtPmZ1bmNzLT5hdG9taWNfZ2V0X3Byb3BlcnR5KSB7Cj4gPj4g PiAgCQlyZXR1cm4gcGxhbmUtPmZ1bmNzLT5hdG9taWNfZ2V0X3Byb3BlcnR5KHBsYW5lLAo+ID4+ ID4gc3RhdGUsIHByb3BlcnR5LCB2YWwpOwo+ID4+ID4gIAl9IGVsc2Ugewo+ID4+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4gPj4gPiBiL2RyaXZl cnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4gPj4gPiBpbmRleCA2N2M1YjUxLi44NjYx ODFmIDEwMDY0NAo+ID4+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVy LmMKPiA+PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4gPj4g PiBAQCAtMzYxNiw2ICszNjE2LDkgQEAgdm9pZAo+ID4+ID4gX19kcm1fYXRvbWljX2hlbHBlcl9w bGFuZV9kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gPj4gPgo+ID4+ ID4gIAlpZiAoc3RhdGUtPmRlZ2FtbWFfbHV0KQo+ID4+ID4gIAkJZHJtX3Byb3BlcnR5X2Jsb2Jf Z2V0KHN0YXRlLT5kZWdhbW1hX2x1dCk7Cj4gPj4gPiArCWlmIChzdGF0ZS0+Y3RtKQo+ID4+ID4g KwkJZHJtX3Byb3BlcnR5X2Jsb2JfZ2V0KHN0YXRlLT5jdG0pOwo+ID4+ID4gKwo+ID4+ID4gIAlz dGF0ZS0+Y29sb3JfbWdtdF9jaGFuZ2VkID0gZmFsc2U7Cj4gPj4gPiAgfQo+ID4+ID4gIEVYUE9S VF9TWU1CT0woX19kcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kdXBsaWNhdGVfc3RhdGUpOwo+ID4+ ID4gQEAgLTM2NjMsNiArMzY2Niw3IEBAIHZvaWQKPiA+PiA+IF9fZHJtX2F0b21pY19oZWxwZXJf cGxhbmVfZGVzdHJveV9zdGF0ZShzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlCj4gPj4gPiAqc3RhdGUp Cj4gPj4gPiAgCQlkcm1fY3J0Y19jb21taXRfcHV0KHN0YXRlLT5jb21taXQpOwo+ID4+ID4KPiA+ PiA+ICAJZHJtX3Byb3BlcnR5X2Jsb2JfcHV0KHN0YXRlLT5kZWdhbW1hX2x1dCk7Cj4gPj4gPiAr CWRybV9wcm9wZXJ0eV9ibG9iX3B1dChzdGF0ZS0+Y3RtKTsKPiA+PiA+ICB9Cj4gPj4gPiAgRVhQ T1JUX1NZTUJPTChfX2RybV9hdG9taWNfaGVscGVyX3BsYW5lX2Rlc3Ryb3lfc3RhdGUpOwo+ID4+ ID4KPiA+PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3BsYW5lLmMKPiA+PiA+ IGIvZHJpdmVycy9ncHUvZHJtL2RybV9wbGFuZS5jCj4gPj4gPiBpbmRleCAwM2UwNTYwLi45NzUy MGIxIDEwMDY0NAo+ID4+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9wbGFuZS5jCj4gPj4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3BsYW5lLmMKPiA+PiA+IEBAIC00ODksNiArNDg5 LDExIEBAIGludCBkcm1fbW9kZV9wbGFuZV9zZXRfb2JqX3Byb3Aoc3RydWN0IGRybV9wbGFuZQo+ ID4+ID4gKnBsYW5lLAo+ID4+ID4gICAqCj4gPj4gPiAgICogZGVnYW1tYV9sdXRfc2l6ZV9wcm9w ZXJ0eToKPiA+PiA+ICAgKglSYW5nZSBQcm9wZXJ0eSB0byBpbmRpY2F0ZSBzaXplIG9mIHRoZSBw bGFuZSBkZWdhbW1hIExVVC4KPiA+PiA+ICsgKgo+ID4+ID4gKyAqIGN0bV9wcm9wZXJ0eToKPiA+ PiA+ICsgKglCbG9iIHByb3BlcnR5IHdoaWNoIGFsbG93cyBhIHVzZXJzcGFjZSB0byBwcm92aWRl IENUTQo+ID4+ID4gY29lZmZpY2llbnRzCj4gPj4gPiArICoJdG8gZG8gY29sb3Igc3BhY2UgY29u dmVyc2lvbiBvciBhbnkgb3RoZXIgZW5oYW5jZW1lbnQgYnkKPiA+PiA+IGRvaW5nIGEKPiA+PiA+ ICsgKgltYXRyaXggbXVsdGlwbGljYXRpb24gdXNpbmcgdGhlIGgvdyBDVE0gcHJvY2Vzc2luZyBl bmdpbmUKPiA+PiA+ICAgKi8KPiA+PiA+ICBpbnQgZHJtX3BsYW5lX2NvbG9yX2NyZWF0ZV9wcm9w KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPj4gPiAgCQkJCXN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lKQo+ID4+ID4gQEAgLTUwOSw2ICs1MTQsMTMgQEAgaW50IGRybV9wbGFuZV9jb2xvcl9jcmVh dGVfcHJvcChzdHJ1Y3QKPiA+PiA+IGRybV9kZXZpY2UgKmRldiwKPiA+PiA+ICAJCXJldHVybiAt RU5PTUVNOwo+ID4+ID4gIAlwbGFuZS0+ZGVnYW1tYV9sdXRfc2l6ZV9wcm9wZXJ0eSA9IHByb3A7 Cj4gPj4gPgo+ID4+ID4gKwlwcm9wID0gZHJtX3Byb3BlcnR5X2NyZWF0ZShkZXYsCj4gPj4gPiAr CQkJRFJNX01PREVfUFJPUF9CTE9CLAo+ID4+ID4gKwkJCSJQTEFORV9DVE0iLCAwKTsKPiA+PiA+ ICsJaWYgKCFwcm9wKQo+ID4+ID4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gPj4gPiArCXBsYW5lLT5j dG1fcHJvcGVydHkgPSBwcm9wOwo+ID4+ID4gKwo+ID4+ID4gIAlyZXR1cm4gMDsKPiA+PiA+ICB9 Cj4gPj4gPiAgRVhQT1JUX1NZTUJPTChkcm1fcGxhbmVfY29sb3JfY3JlYXRlX3Byb3ApOwo+ID4+ ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9wbGFuZS5oIGIvaW5jbHVkZS9kcm0vZHJt X3BsYW5lLmgKPiA+PiA+IGluZGV4IDI4MzU3YWMuLjUxNDMyNzcgMTAwNjQ0Cj4gPj4gPiAtLS0g YS9pbmNsdWRlL2RybS9kcm1fcGxhbmUuaAo+ID4+ID4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX3Bs YW5lLmgKPiA+PiA+IEBAIC0xODMsNiArMTgzLDE0IEBAIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUg ewo+ID4+ID4gIAlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmRlZ2FtbWFfbHV0Owo+ID4+ID4K PiA+PiA+ICAJLyoqCj4gPj4gPiArCSAqIEBjdG06Cj4gPj4gPiArCSAqCj4gPj4gPiArCSAqIENv bG9yIHRyYW5zZm9ybWF0aW9uIG1hdHJpeC4gU2VlCj4gPj4gPiBkcm1fcGxhbmVfZW5hYmxlX2Nv bG9yX21nbXQoKS4gVGhlCj4gPj4gPiArCSAqIGJsb2IgKGlmIG5vdCBOVUxMKSBpcyBhICZzdHJ1 Y3QgZHJtX2NvbG9yX2N0bS4KPiA+PiA+ICsJICovCj4gPj4gPiArCXN0cnVjdCBkcm1fcHJvcGVy dHlfYmxvYiAqY3RtOwo+ID4+ID4gKwo+ID4+ID4gKwkvKioKPiA+PiA+ICAJICogQGNvbW1pdDog VHJhY2tzIHRoZSBwZW5kaW5nIGNvbW1pdCB0byBwcmV2ZW50IHVzZS1hZnRlci0KPiA+PiA+IGZy ZWUgY29uZGl0aW9ucywKPiA+PiA+ICAJICogYW5kIGZvciBhc3luYyBwbGFuZSB1cGRhdGVzLgo+ ID4+ID4gIAkgKgo+ID4+ID4gQEAgLTY5OCw2ICs3MDYsMTMgQEAgc3RydWN0IGRybV9wbGFuZSB7 Cj4gPj4gPiAgCSAqIHNpemUgb2YgdGhlIGRlZ2FtbWEgTFVUIGFzIHN1cHBvcnRlZCBieSB0aGUg ZHJpdmVyIChyZWFkLQo+ID4+ID4gb25seSkuCj4gPj4gPiAgCSAqLwo+ID4+ID4gIAlzdHJ1Y3Qg ZHJtX3Byb3BlcnR5ICpkZWdhbW1hX2x1dF9zaXplX3Byb3BlcnR5Owo+ID4+ID4gKwo+ID4+ID4g KwkvKioKPiA+PiA+ICsJICogQHBsYW5lX2N0bV9wcm9wZXJ0eTogT3B0aW9uYWwgUGxhbmUgcHJv cGVydHkgdG8gc2V0IHRoZQo+ID4+ID4gKwkgKiBtYXRyaXggdXNlZCB0byBjb252ZXJ0IGNvbG9y cyBhZnRlciB0aGUgbG9va3VwIGluIHRoZQo+ID4+ID4gKwkgKiBkZWdhbW1hIExVVC4KPiA+PiA+ ICsJICovCj4gPj4gPiArCXN0cnVjdCBkcm1fcHJvcGVydHkgKmN0bV9wcm9wZXJ0eTsKPiA+PiA+ Cj4gPj4gSSdtIGFzc3VtaW5nIGRlZ2FtbWEgaXMgZG9uZSBiZWZvcmUgY29udmVydGluZyB3aXRo IENUTS4KPiA+Pgo+ID4+IEJ1dCBob3cgZG9lcyB0aGlzIGludGVyYWN0IHdpdGggWVVWIGZvcm1h dHM/IEknbSBub3Qgc3VyZSB0aGlzIGlzCj4gPj4gZXhwbGljaXRseSBkZWZpbmVkLiBJJ20gYXNz dW1pbmcgUi0+Q3IgRyAtPiBZLCBCID0gQ2IgZm9yIGRlZ2FtbWEKPiA+PiB0YWJsZXMuCj4gPgo+ ID5UaGUgcGlwZWxpbmUgaXMgKG9yIGF0IGxlYXN0IHNob3VsZCBiZSBJTU8pOgo+ID55Y2Jjci0+ cmdiIC0+IGRlZ2FtbWEgLT4gY3RtIC0+IGdhbW1hCj4gPgo+IAo+IFRoYXQncyB3aGF0IEknbSBl eHBlY3RpbmcgdG9vLgo+IAo+ID5XZSBzaG91bGQgZG9jdW1lbnQgdGhlIGZ1bGwgcGlwZWxpbmUg KGluY2x1ZGluZyB0aGUgY3J0YyBwb3J0aW9ucykgaW4KPiA+c29tZSBkb2NzLgo+IAo+IEkgZnVs bHkgYWdyZWUgd2l0aCBWaWxsZSBoZXJlLCB3ZSd2ZSBiZWVuIGFyb3VuZCB0aGlzIGxvb3AgYSBm ZXcKPiB0aW1lcywgc28gdGhlIGZ1bGwgcGlwZWxpbmUgYW5kIGV4cGVjdGF0aW9ucyBuZWVkIHRv IGJlIGNhcHR1cmVkCj4gaW4gZG9jcyAoSU1PIGJlZm9yZSB0aGUgcHJvcGVydGllcyBjYW4gYmUg ZGVjaWRlZCkuCj4gCj4gSXQncyBzbGlnaHRseSB1bmZvcnR1bmF0ZSB0aGF0IHRoZSBtZXJnZWQg eWNiY3ItPnJnYiBwcm9wZXJ0aWVzIG9ubHkKPiBkZXNjcmliZSB0aGUgZm9ybWF0IG9mIHRoZSBp bmNvbWluZyBidWZmZXIsIHdpdGhvdXQgYW55IHNwZWNpZmljYXRpb24KPiBvZiB3aGF0IHRoZSBk cml2ZXIgaXMgbWVhbnQgdG8gZG8gd2l0aCB0aGF0IGluZm9ybWF0aW9uICh3aGF0Cj4gY29udmVy c2lvbiBpcyBtZWFudCB0byBiZSBwZXJmb3JtZWQ/KS4KClNvIGZhciB0aGUgaWRlYSBoYXMgYmVl biB0aGF0IHRoZSBpbnRlcm5hbCBwaXBlbGluZSBpcyBhc3N1bWVkIHRvIGJlCmZ1bGwgcmFuZ2Ug UkdCLiBJZi93aGVuIHNvbWVvbmUgbmVlZHMgc29tZXRoaW5nIGVsc2UgdGhleSBjYW4gdHJ5IHRv CmRlc2lnbiBhIG5ldyBBUEkgZm9yIGl0LiBJZiB3ZSBoYWQgdHJpZWQgdG8gZGVhbCB3aXRoIHlj YmNyIHBhc3N0aHJvdWdoCmFuZCB3aGF0bm90IHdoZW4gYWRkaW5nIHRoZSBlbmNvZGluZy9yYW5n ZSBwcm9wcyB3ZSBwcm9iYWJseSBzdGlsbAp3b3VsZG4ndCBoYXZlIGxhbmRlZCBhbnl0aGluZy4K CkJ1dCB5ZWFoLCB0aGUgZG9jcyBzaG91bGQgb2YgY291cnNlIGV4cGxpY2l0bHkgc3RhdGUgdGhp cyBmYWN0LgoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbApfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWwK