From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [RFC PATCH v3 1/2] drm: Add generic colorkey properties for DRM planes Date: Fri, 6 Jul 2018 14:11:44 +0200 Message-ID: <8b80e766-be05-b5be-5a0f-102a5135d230@linux.intel.com> References: <20180603220059.17670-1-digetx@gmail.com> <20180603220059.17670-2-digetx@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180603220059.17670-2-digetx@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: Dmitry Osipenko , Laurent Pinchart , =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= , Thierry Reding , Neil Armstrong , Maxime Ripard , dri-devel@lists.freedesktop.org, Paul Kocialkowski Cc: Thomas Hellstrom , Russell King , linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Ben Skeggs , Rodrigo Vivi , linux-tegra@vger.kernel.org, linux-media@vger.kernel.org List-Id: linux-tegra@vger.kernel.org SGV5LAoKT3AgMDQtMDYtMTggb20gMDA6MDAgc2NocmVlZiBEbWl0cnkgT3NpcGVua286Cj4gRnJv bTogTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydCtyZW5lc2FzQGlkZWFzb25ib2Fy ZC5jb20+Cj4KPiBDb2xvciBrZXlpbmcgaXMgdGhlIGFjdGlvbiBvZiByZXBsYWNpbmcgcGl4ZWxz IG1hdGNoaW5nIGEgZ2l2ZW4gY29sb3IKPiAob3IgcmFuZ2Ugb2YgY29sb3JzKSB3aXRoIHRyYW5z cGFyZW50IHBpeGVscyBpbiBhbiBvdmVybGF5IHdoZW4KPiBwZXJmb3JtaW5nIGJsaXR0aW5nLiBE ZXBlbmRpbmcgb24gdGhlIGhhcmR3YXJlIGNhcGFiaWxpdGllcywgdGhlCj4gbWF0Y2hpbmcgcGl4 ZWwgY2FuIGVpdGhlciBiZWNvbWUgZnVsbHkgdHJhbnNwYXJlbnQgb3IgZ2FpbiBhZGp1c3RtZW50 Cj4gb2YgdGhlIHBpeGVscyBjb21wb25lbnQgdmFsdWVzLgo+Cj4gQ29sb3Iga2V5aW5nIGlzIGZv dW5kIGluIGEgbGFyZ2UgbnVtYmVyIG9mIGRldmljZXMgd2hvc2UgY2FwYWJpbGl0aWVzCj4gb2Z0 ZW4gZGlmZmVyLCBidXQgdGhleSBzdGlsbCBoYXZlIGVub3VnaCBjb21tb24gZmVhdHVyZXMgaW4g cmFuZ2UgdG8KPiBzdGFuZGFyZGl6ZSBjb2xvciBrZXkgcHJvcGVydGllcy4gVGhpcyBjb21taXQg YWRkcyB0aHJlZSBnZW5lcmljIERSTSBwbGFuZQo+IHByb3BlcnRpZXMgcmVsYXRlZCB0byB0aGUg Y29sb3Iga2V5aW5nLCBwcm92aWRpbmcgaW5pdGlhbCBjb2xvciBrZXlpbmcKPiBzdXBwb3J0Lgo+ Cj4gU2lnbmVkLW9mZi1ieTogTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydCtyZW5l c2FzQGlkZWFzb25ib2FyZC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogRG1pdHJ5IE9zaXBlbmtvIDxk aWdldHhAZ21haWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jIHwg MTIgKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2RybV9ibGVuZC5jICB8IDk5ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBpbmNsdWRlL2RybS9kcm1fYmxlbmQuaCAgICAg IHwgIDMgKysKPiAgaW5jbHVkZS9kcm0vZHJtX3BsYW5lLmggICAgICB8IDUzICsrKysrKysrKysr KysrKysrKysKPiAgNCBmaWxlcyBjaGFuZ2VkLCAxNjcgaW5zZXJ0aW9ucygrKQo+Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X2F0b21pYy5jCj4gaW5kZXggODk1NzQxZTljZDdkLi5iMzIyY2JlZDMxOWIgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fYXRvbWljLmMKPiBAQCAtNzk5LDYgKzc5OSwxMiBAQCBzdGF0aWMgaW50IGRybV9hdG9taWNf cGxhbmVfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJCXN0YXRlLT5y b3RhdGlvbiA9IHZhbDsKPiAgCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gcGxhbmUtPnpwb3NfcHJv cGVydHkpIHsKPiAgCQlzdGF0ZS0+enBvcyA9IHZhbDsKPiArCX0gZWxzZSBpZiAocHJvcGVydHkg PT0gcGxhbmUtPmNvbG9ya2V5Lm1vZGVfcHJvcGVydHkpIHsKPiArCQlzdGF0ZS0+Y29sb3JrZXku bW9kZSA9IHZhbDsKPiArCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gcGxhbmUtPmNvbG9ya2V5Lm1p bl9wcm9wZXJ0eSkgewo+ICsJCXN0YXRlLT5jb2xvcmtleS5taW4gPSB2YWw7Cj4gKwl9IGVsc2Ug aWYgKHByb3BlcnR5ID09IHBsYW5lLT5jb2xvcmtleS5tYXhfcHJvcGVydHkpIHsKPiArCQlzdGF0 ZS0+Y29sb3JrZXkubWF4ID0gdmFsOwo+ICAJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBwbGFuZS0+ Y29sb3JfZW5jb2RpbmdfcHJvcGVydHkpIHsKPiAgCQlzdGF0ZS0+Y29sb3JfZW5jb2RpbmcgPSB2 YWw7Cj4gIAl9IGVsc2UgaWYgKHByb3BlcnR5ID09IHBsYW5lLT5jb2xvcl9yYW5nZV9wcm9wZXJ0 eSkgewo+IEBAIC04NjQsNiArODcwLDEyIEBAIGRybV9hdG9taWNfcGxhbmVfZ2V0X3Byb3BlcnR5 KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJCSp2YWwgPSBzdGF0ZS0+cm90YXRpb247Cj4g IAl9IGVsc2UgaWYgKHByb3BlcnR5ID09IHBsYW5lLT56cG9zX3Byb3BlcnR5KSB7Cj4gIAkJKnZh bCA9IHN0YXRlLT56cG9zOwo+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBwbGFuZS0+Y29sb3Jr ZXkubW9kZV9wcm9wZXJ0eSkgewo+ICsJCSp2YWwgPSBzdGF0ZS0+Y29sb3JrZXkubW9kZTsKPiAr CX0gZWxzZSBpZiAocHJvcGVydHkgPT0gcGxhbmUtPmNvbG9ya2V5Lm1pbl9wcm9wZXJ0eSkgewo+ ICsJCSp2YWwgPSBzdGF0ZS0+Y29sb3JrZXkubWluOwo+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9 PSBwbGFuZS0+Y29sb3JrZXkubWF4X3Byb3BlcnR5KSB7Cj4gKwkJKnZhbCA9IHN0YXRlLT5jb2xv cmtleS5tYXg7Cj4gIAl9IGVsc2UgaWYgKHByb3BlcnR5ID09IHBsYW5lLT5jb2xvcl9lbmNvZGlu Z19wcm9wZXJ0eSkgewo+ICAJCSp2YWwgPSBzdGF0ZS0+Y29sb3JfZW5jb2Rpbmc7Cj4gIAl9IGVs c2UgaWYgKHByb3BlcnR5ID09IHBsYW5lLT5jb2xvcl9yYW5nZV9wcm9wZXJ0eSkgewo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2JsZW5kLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X2JsZW5kLmMKPiBpbmRleCBhMTZhNzRkN2UxNWUuLjEyZmVkMmZmNjVjOCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vZHJtX2JsZW5kLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X2JsZW5kLmMKPiBAQCAtMTA3LDYgKzEwNywxMSBAQAo+ICAgKglwbGFuZXMuIFdpdGhvdXQgdGhp cyBwcm9wZXJ0eSB0aGUgcHJpbWFyeSBwbGFuZSBpcyBhbHdheXMgYmVsb3cgdGhlIGN1cnNvcgo+ ICAgKglwbGFuZSwgYW5kIG9yZGVyaW5nIGJldHdlZW4gYWxsIG90aGVyIHBsYW5lcyBpcyB1bmRl ZmluZWQuCj4gICAqCj4gKyAqIGNvbG9ya2V5Ogo+ICsgKglDb2xvciBrZXlpbmcgaXMgc2V0IHVw IHdpdGggZHJtX3BsYW5lX2NyZWF0ZV9jb2xvcmtleV9wcm9wZXJ0aWVzKCkuCj4gKyAqCUl0IGFk ZHMgc3VwcG9ydCBmb3IgcmVwbGFjaW5nIGEgcmFuZ2Ugb2YgY29sb3JzIHdpdGggYSB0cmFuc3Bh cmVudAo+ICsgKgljb2xvciBpbiB0aGUgcGxhbmUuCj4gKyAqCj4gICAqIE5vdGUgdGhhdCBhbGwg dGhlIHByb3BlcnR5IGV4dGVuc2lvbnMgZGVzY3JpYmVkIGhlcmUgYXBwbHkgZWl0aGVyIHRvIHRo ZQo+ICAgKiBwbGFuZSBvciB0aGUgQ1JUQyAoZS5nLiBmb3IgdGhlIGJhY2tncm91bmQgY29sb3Is IHdoaWNoIGN1cnJlbnRseSBpcyBub3QKPiAgICogZXhwb3NlZCBhbmQgYXNzdW1lZCB0byBiZSBi bGFjaykuCj4gQEAgLTQ0OCwzICs0NTMsOTcgQEAgaW50IGRybV9hdG9taWNfbm9ybWFsaXplX3pw b3Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCXJldHVybiAwOwo+ICB9Cj4gIEVYUE9SVF9T WU1CT0woZHJtX2F0b21pY19ub3JtYWxpemVfenBvcyk7Cj4gKwo+ICtzdGF0aWMgY29uc3QgY2hh ciAqIGNvbnN0IHBsYW5lX2NvbG9ya2V5X21vZGVfbmFtZVtdID0gewo+ICsJW0RSTV9QTEFORV9D T0xPUktFWV9NT0RFX0RJU0FCTEVEXSA9ICJkaXNhYmxlZCIsCj4gKwlbRFJNX1BMQU5FX0NPTE9S S0VZX01PREVfRk9SRUdST1VORF9DTElQXSA9ICJmb3JlZ3JvdW5kLWNsaXAiLAo+ICt9Owo+ICsK PiArLyoqCj4gKyAqIGRybV9wbGFuZV9jcmVhdGVfY29sb3JrZXlfcHJvcGVydGllcyAtIGNyZWF0 ZSBjb2xvcmtleSBwcm9wZXJ0aWVzCj4gKyAqIEBwbGFuZTogZHJtIHBsYW5lCj4gKyAqIEBzdXBw b3J0ZWRfbW9kZXM6IGJpdG1hc2sgb2Ygc3VwcG9ydGVkIGNvbG9yIGtleWluZyBtb2Rlcwo+ICsg Kgo+ICsgKiBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgdGhlIGdlbmVyaWMgY29sb3Iga2V5aW5nIHBy b3BlcnRpZXMgYW5kIGF0dGFjaCB0aGVtIHRvCj4gKyAqIHRoZSBwbGFuZSB0byBlbmFibGUgY29s b3Iga2V5aW5nIGNvbnRyb2wgZm9yIGJsZW5kaW5nIG9wZXJhdGlvbnMuCj4gKyAqCj4gKyAqIENv bG9yIGtleWluZyBpcyBjb250cm9sbGVkIGJ5IHRoZXNlIHByb3BlcnRpZXM6Cj4gKyAqCj4gKyAq IGNvbG9ya2V5Lm1vZGU6Cj4gKyAqCVRoZSBtb2RlIGlzIGFuIGVudW1lcmF0ZWQgcHJvcGVydHkg dGhhdCBjb250cm9scyBob3cgY29sb3Iga2V5aW5nCj4gKyAqCW9wZXJhdGVzLgo+ICsgKgo+ICsg KiBjb2xvcmtleS5taW4sIGNvbG9ya2V5Lm1heDoKPiArICoJVGhlc2UgdHdvIHByb3BlcnRpZXMg c3BlY2lmeSB0aGUgY29sb3JzIHRoYXQgYXJlIHRyZWF0ZWQgYXMgdGhlIGNvbG9yCj4gKyAqCWtl eS4gUGl4ZWwgd2hvc2UgdmFsdWUgaXMgaW4gdGhlIFttaW4sIG1heF0gcmFuZ2UgaXMgdGhlIGNv bG9yIGtleQo+ICsgKgltYXRjaGluZyBwaXhlbC4gVGhlIG1pbmltdW0gYW5kIG1heGltdW0gdmFs dWVzIGFyZSBleHByZXNzZWQgYXMgYQo+ICsgKgk2NC1iaXQgaW50ZWdlciBpbiBBUkdCMTYxNjE2 MTYgZm9ybWF0LCB3aGVyZSBBIGlzIHRoZSBhbHBoYSB2YWx1ZSBhbmQKPiArICoJUiwgRyBhbmQg QiBjb3JyZXNwb25kIHRvIHRoZSBjb2xvciBjb21wb25lbnRzLiBEcml2ZXJzIHNoYWxsIGNvbnZl cnQKPiArICoJQVJHQjE2MTYxNjE2IHZhbHVlIGludG8gYXBwcm9wcmlhdGUgZm9ybWF0IHdpdGhp biBwbGFuZXMgYXRvbWljIGNoZWNrLgo+ICsgKgo+ICsgKglXaGVuIGEgc2luZ2xlIGNvbG9yIGtl eSBpcyBkZXNpcmVkIGluc3RlYWQgb2YgYSByYW5nZSwgdXNlcnNwYWNlIHNoYWxsCj4gKyAqCXNl dCB0aGUgbWluIGFuZCBtYXggcHJvcGVydGllcyB0byB0aGUgc2FtZSB2YWx1ZS4KPiArICoKPiAr ICoJRHJpdmVycyByZXR1cm4gYW4gZXJyb3IgZnJvbSB0aGVpciBwbGFuZSBhdG9taWMgY2hlY2sg aWYgcmFuZ2UgY2FuJ3QgYmUKPiArICoJaGFuZGxlZC4KPiArICoKPiArICogUmV0dXJuczoKPiAr ICogWmVybyBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJubyBvbiBmYWlsdXJlLgo+ICsgKi8KPiAr aW50IGRybV9wbGFuZV9jcmVhdGVfY29sb3JrZXlfcHJvcGVydGllcyhzdHJ1Y3QgZHJtX3BsYW5l ICpwbGFuZSwKPiArCQkJCQkgdTMyIHN1cHBvcnRlZF9tb2RlcykKPiArewo+ICsJc3RydWN0IGRy bV9wcm9wX2VudW1fbGlzdCBtb2Rlc19saXN0W0RSTV9QTEFORV9DT0xPUktFWV9NT0RFU19OVU1d Owo+ICsJc3RydWN0IGRybV9wcm9wZXJ0eSAqbW9kZV9wcm9wOwo+ICsJc3RydWN0IGRybV9wcm9w ZXJ0eSAqbWluX3Byb3A7Cj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICptYXhfcHJvcDsKPiArCXVu c2lnbmVkIGludCBtb2Rlc19udW0gPSAwOwo+ICsJdW5zaWduZWQgaW50IGk7Cj4gKwo+ICsJLyog bW9kZXMgYXJlIGRyaXZlci1zcGVjaWZpYywgYnVpbGQgdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIG1v ZGVzICovCj4gKwlmb3IgKGkgPSAwOyBpIDwgRFJNX1BMQU5FX0NPTE9SS0VZX01PREVTX05VTTsg aSsrKSB7Cj4gKwkJaWYgKCEoc3VwcG9ydGVkX21vZGVzICYgQklUKGkpKSkKPiArCQkJY29udGlu dWU7Cj4gKwo+ICsJCW1vZGVzX2xpc3RbbW9kZXNfbnVtXS5uYW1lID0gcGxhbmVfY29sb3JrZXlf bW9kZV9uYW1lW2ldOwo+ICsJCW1vZGVzX2xpc3RbbW9kZXNfbnVtXS50eXBlID0gaTsKPiArCQlt b2Rlc19udW0rKzsKPiArCX0KPiArCj4gKwkvKiBhdCBsZWFzdCBvbmUgbW9kZSBzaG91bGQgYmUg c3VwcG9ydGVkICovCj4gKwlpZiAoIW1vZGVzX251bSkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiAr Cj4gKwltb2RlX3Byb3AgPSBkcm1fcHJvcGVydHlfY3JlYXRlX2VudW0ocGxhbmUtPmRldiwgMCwg ImNvbG9ya2V5Lm1vZGUiLAo+ICsJCQkJCSAgICAgbW9kZXNfbGlzdCwgbW9kZXNfbnVtKTsKPiAr CWlmICghbW9kZV9wcm9wKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCW1pbl9wcm9wID0g ZHJtX3Byb3BlcnR5X2NyZWF0ZV9yYW5nZShwbGFuZS0+ZGV2LCAwLCAiY29sb3JrZXkubWluIiwK PiArCQkJCQkgICAgIDAsIFU2NF9NQVgpOwo+ICsJaWYgKCFtaW5fcHJvcCkKPiArCQlnb3RvIGVy cl9kZXN0cm95X21vZGVfcHJvcDsKPiArCj4gKwltYXhfcHJvcCA9IGRybV9wcm9wZXJ0eV9jcmVh dGVfcmFuZ2UocGxhbmUtPmRldiwgMCwgImNvbG9ya2V5Lm1heCIsCj4gKwkJCQkJICAgICAwLCBV NjRfTUFYKTsKPiArCWlmICghbWF4X3Byb3ApCj4gKwkJZ290byBlcnJfZGVzdHJveV9taW5fcHJv cDsKPiArCj4gKwlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmcGxhbmUtPmJhc2UsIG1vZGVf cHJvcCwgMCk7Cj4gKwlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmcGxhbmUtPmJhc2UsIG1p bl9wcm9wLCAwKTsKPiArCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFuZS0+YmFzZSwg bWF4X3Byb3AsIDApOwo+ICsKPiArCXBsYW5lLT5jb2xvcmtleS5tb2RlX3Byb3BlcnR5ID0gbW9k ZV9wcm9wOwo+ICsJcGxhbmUtPmNvbG9ya2V5Lm1pbl9wcm9wZXJ0eSA9IG1pbl9wcm9wOwo+ICsJ cGxhbmUtPmNvbG9ya2V5Lm1heF9wcm9wZXJ0eSA9IG1heF9wcm9wOwo+ICsKPiArCXJldHVybiAw Owo+ICsKPiArZXJyX2Rlc3Ryb3lfbWluX3Byb3A6Cj4gKwlkcm1fcHJvcGVydHlfZGVzdHJveShw bGFuZS0+ZGV2LCBtaW5fcHJvcCk7Cj4gK2Vycl9kZXN0cm95X21vZGVfcHJvcDoKPiArCWRybV9w cm9wZXJ0eV9kZXN0cm95KHBsYW5lLT5kZXYsIG1vZGVfcHJvcCk7Cj4gKwo+ICsJcmV0dXJuIC1F Tk9NRU07Cj4gK30KPiArRVhQT1JUX1NZTUJPTChkcm1fcGxhbmVfY3JlYXRlX2NvbG9ya2V5X3By b3BlcnRpZXMpOwo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fYmxlbmQuaCBiL2luY2x1 ZGUvZHJtL2RybV9ibGVuZC5oCj4gaW5kZXggMzMwYzU2MWM0YzExLi44ZTgwZDMzYjY0M2UgMTAw NjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2JsZW5kLmgKPiArKysgYi9pbmNsdWRlL2RybS9k cm1fYmxlbmQuaAo+IEBAIC01Miw0ICs1Miw3IEBAIGludCBkcm1fcGxhbmVfY3JlYXRlX3pwb3Nf aW1tdXRhYmxlX3Byb3BlcnR5KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJCQkJCSAgICAg dW5zaWduZWQgaW50IHpwb3MpOwo+ICBpbnQgZHJtX2F0b21pY19ub3JtYWxpemVfenBvcyhzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCQkgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq c3RhdGUpOwo+ICsKPiAraW50IGRybV9wbGFuZV9jcmVhdGVfY29sb3JrZXlfcHJvcGVydGllcyhz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiArCQkJCQkgdTMyIHN1cHBvcnRlZF9tb2Rlcyk7Cj4g ICNlbmRpZgo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fcGxhbmUuaCBiL2luY2x1ZGUv ZHJtL2RybV9wbGFuZS5oCj4gaW5kZXggMjZmYTUwYzJhNTBlLi45YTYyMWUxY2NjNDcgMTAwNjQ0 Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX3BsYW5lLmgKPiArKysgYi9pbmNsdWRlL2RybS9kcm1f cGxhbmUuaAo+IEBAIC0zMiw2ICszMiw0OCBAQCBzdHJ1Y3QgZHJtX2NydGM7Cj4gIHN0cnVjdCBk cm1fcHJpbnRlcjsKPiAgc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4Owo+ICAKPiArLyoq Cj4gKyAqIGVudW0gZHJtX3BsYW5lX2NvbG9ya2V5X21vZGUgLSB1YXBpIHBsYW5lIGNvbG9ya2V5 IG1vZGUgZW51bWVyYXRpb24KPiArICovCj4gK2VudW0gZHJtX3BsYW5lX2NvbG9ya2V5X21vZGUg ewo+ICsJLyoqCj4gKwkgKiBARFJNX1BMQU5FX0NPTE9SS0VZX01PREVfRElTQUJMRUQ6Cj4gKwkg Kgo+ICsJICogTm8gY29sb3IgbWF0Y2hpbmcgcGVyZm9ybWVkIGluIHRoaXMgbW9kZS4KPiArCSAq Lwo+ICsJRFJNX1BMQU5FX0NPTE9SS0VZX01PREVfRElTQUJMRUQsCj4gKwo+ICsJLyoqCj4gKwkg KiBARFJNX1BMQU5FX0NPTE9SS0VZX01PREVfRk9SRUdST1VORF9DTElQOgo+ICsJICoKPiArCSAq IFRoaXMgbW9kZSBpcyBhbHNvIGtub3duIGFzIGEgImdyZWVuIHNjcmVlbiIuIFBsYW5lIHBpeGVs cyBhcmUKPiArCSAqIHRyYW5zcGFyZW50IGluIGFyZWFzIHdoZXJlIHBpeGVscyBtYXRjaCBhIGdp dmVuIGNvbG9yIGtleSByYW5nZQo+ICsJICogYW5kIHRoZXJlIGlzIGEgYm90dG9tIChiYWNrZ3Jv dW5kKSBwbGFuZSwgaW4gb3RoZXIgY2FzZXMgcGxhbmUKPiArCSAqIHBpeGVscyBhcmUgdW5hZmZl Y3RlZC4KPiArCSAqCj4gKwkgKi8KPiArCURSTV9QTEFORV9DT0xPUktFWV9NT0RFX0ZPUkVHUk9V TkRfQ0xJUCwKQ291bGQgd2UgYWRkIGJhY2tncm91bmQgY2xpcCBhcyB3ZWxsPwoKV291bGQgYmUg bmljZSBpZiB3ZSBjb3VsZCBtYXAgaTkxNSdzIGxlZ2FjeSBpb2N0bCBoYW5kbGVyIHRvIHRoZSBu ZXcgY29sb3Iga2V5IG1vZGUuCj4gKwkvKioKPiArCSAqIEBEUk1fUExBTkVfQ09MT1JLRVlfTU9E RVNfTlVNOgo+ICsJICoKPiArCSAqIFRvdGFsIG51bWJlciBvZiBjb2xvciBrZXlpbmcgbW9kZXMu Cj4gKwkgKi8KPiArCURSTV9QTEFORV9DT0xPUktFWV9NT0RFU19OVU0sCj4gK307Cj4gKwo+ICsv KioKPiArICogc3RydWN0IGRybV9wbGFuZV9jb2xvcmtleV9zdGF0ZSAtIHBsYW5lIGNvbG9yIGtl eWluZyBzdGF0ZQo+ICsgKiBAY29sb3JrZXkubW9kZTogY29sb3Iga2V5aW5nIG1vZGUKPiArICog QGNvbG9ya2V5Lm1pbjogY29sb3Iga2V5IHJhbmdlIG1pbmltdW0gKGluIEFSR0IxNjE2MTYxNiBm b3JtYXQpCj4gKyAqIEBjb2xvcmtleS5tYXg6IGNvbG9yIGtleSByYW5nZSBtYXhpbXVtIChpbiBB UkdCMTYxNjE2MTYgZm9ybWF0KQo+ICsgKi8KPiArc3RydWN0IGRybV9wbGFuZV9jb2xvcmtleV9z dGF0ZSB7Cj4gKwllbnVtIGRybV9wbGFuZV9jb2xvcmtleV9tb2RlIG1vZGU7Cj4gKwl1NjQgbWlu Owo+ICsJdTY0IG1heDsKPiArfTsKQ291bGQgd2UgaGF2ZSBzb21lIG1hY3JvcyB0byBleHRyYWN0 IHRoZSBjb21wb25lbnRzIGZvciBtaW4vbWF4PwpBLCBSLCBHLCBCLgoKfk1hYXJ0ZW4KX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxp bmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==