From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [RFC PATCH v2 1/2] drm: Add generic colorkey properties Date: Mon, 28 May 2018 16:15:01 +0300 Message-ID: <20180528131501.GK23723@intel.com> References: <20180526155623.12610-1-digetx@gmail.com> <20180526155623.12610-2-digetx@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 210106E24C for ; Mon, 28 May 2018 13:15:08 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20180526155623.12610-2-digetx@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Dmitry Osipenko Cc: Thomas Hellstrom , Laurent Pinchart , Neil Armstrong , Russell King , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-tegra@vger.kernel.org, Thierry Reding , Ben Skeggs , Rodrigo Vivi , Maxime Ripard , Alexandru Gheorghe , linux-media@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org T24gU2F0LCBNYXkgMjYsIDIwMTggYXQgMDY6NTY6MjJQTSArMDMwMCwgRG1pdHJ5IE9zaXBlbmtv IHdyb3RlOgo+IENvbG9yIGtleWluZyBpcyB0aGUgYWN0aW9uIG9mIHJlcGxhY2luZyBwaXhlbHMg bWF0Y2hpbmcgYSBnaXZlbiBjb2xvcgo+IChvciByYW5nZSBvZiBjb2xvcnMpIHdpdGggdHJhbnNw YXJlbnQgcGl4ZWxzIGluIGFuIG92ZXJsYXkgd2hlbgo+IHBlcmZvcm1pbmcgYmxpdHRpbmcuIERl cGVuZGluZyBvbiB0aGUgaGFyZHdhcmUgY2FwYWJpbGl0aWVzLCB0aGUKPiBtYXRjaGluZyBwaXhl bCBjYW4gZWl0aGVyIGJlY29tZSBmdWxseSB0cmFuc3BhcmVudCBvciBnYWluIGFkanVzdG1lbnQK PiBvZiB0aGUgcGl4ZWxzIGNvbXBvbmVudCB2YWx1ZXMuCj4gCj4gQ29sb3Iga2V5aW5nIGlzIGZv dW5kIGluIGEgbGFyZ2UgbnVtYmVyIG9mIGRldmljZXMgd2hvc2UgY2FwYWJpbGl0aWVzCj4gb2Z0 ZW4gZGlmZmVyLCBidXQgdGhleSBzdGlsbCBoYXZlIGVub3VnaCBjb21tb24gZmVhdHVyZXMgaW4g cmFuZ2UgdG8KPiBzdGFuZGFyZGl6ZSBjb2xvciBrZXkgcHJvcGVydGllcy4gVGhpcyBjb21taXQg YWRkcyBuaW5lIGdlbmVyaWMgRFJNIHBsYW5lCj4gcHJvcGVydGllcyByZWxhdGVkIHRvIHRoZSBj b2xvciBrZXlpbmcgdG8gY292ZXIgdmFyaW91cyBIVyBjYXBhYmlsaXRpZXMuCj4gCj4gVGhpcyBw YXRjaCBpcyBiYXNlZCBvbiB0aGUgaW5pdGlhbCB3b3JrIGRvbmUgYnkgTGF1cmVudCBQaW5jaGFy dCwgbW9zdCBvZgo+IGNyZWRpdHMgZm9yIHRoaXMgcGF0Y2ggZ29lcyB0byBoaW0uCj4gCj4gU2ln bmVkLW9mZi1ieTogRG1pdHJ5IE9zaXBlbmtvIDxkaWdldHhAZ21haWwuY29tPgo+IC0tLQo+ICBk cml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jIHwgIDM2ICsrKysrKwo+ICBkcml2ZXJzL2dwdS9k cm0vZHJtX2JsZW5kLmMgIHwgMjI5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Cj4gIGluY2x1ZGUvZHJtL2RybV9ibGVuZC5oICAgICAgfCAgIDMgKwo+ICBpbmNsdWRlL2RybS9k cm1fcGxhbmUuaCAgICAgIHwgIDc3ICsrKysrKysrKysrKwo+ICA0IGZpbGVzIGNoYW5nZWQsIDM0 NSBpbnNlcnRpb25zKCspCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRv bWljLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCj4gaW5kZXggODk1NzQxZTljZDdk Li41YjgwOGNiNjg2NTQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiBAQCAtNzk5LDYgKzc5OSwy NCBAQCBzdGF0aWMgaW50IGRybV9hdG9taWNfcGxhbmVfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lLAo+ICAJCXN0YXRlLT5yb3RhdGlvbiA9IHZhbDsKPiAgCX0gZWxzZSBpZiAo cHJvcGVydHkgPT0gcGxhbmUtPnpwb3NfcHJvcGVydHkpIHsKPiAgCQlzdGF0ZS0+enBvcyA9IHZh bDsKPiArCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gcGxhbmUtPmNvbG9ya2V5Lm1vZGVfcHJvcGVy dHkpIHsKPiArCQlzdGF0ZS0+Y29sb3JrZXkubW9kZSA9IHZhbDsKPiArCX0gZWxzZSBpZiAocHJv cGVydHkgPT0gcGxhbmUtPmNvbG9ya2V5Lm1pbl9wcm9wZXJ0eSkgewo+ICsJCXN0YXRlLT5jb2xv cmtleS5taW4gPSB2YWw7Cj4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IHBsYW5lLT5jb2xvcmtl eS5tYXhfcHJvcGVydHkpIHsKPiArCQlzdGF0ZS0+Y29sb3JrZXkubWF4ID0gdmFsOwo+ICsJfSBl bHNlIGlmIChwcm9wZXJ0eSA9PSBwbGFuZS0+Y29sb3JrZXkuZm9ybWF0X3Byb3BlcnR5KSB7Cj4g KwkJc3RhdGUtPmNvbG9ya2V5LmZvcm1hdCA9IHZhbDsKPiArCX0gZWxzZSBpZiAocHJvcGVydHkg PT0gcGxhbmUtPmNvbG9ya2V5Lm1hc2tfcHJvcGVydHkpIHsKPiArCQlzdGF0ZS0+Y29sb3JrZXku bWFzayA9IHZhbDsKPiArCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gcGxhbmUtPmNvbG9ya2V5Lmlu dmVydGVkX21hdGNoX3Byb3BlcnR5KSB7Cj4gKwkJc3RhdGUtPmNvbG9ya2V5LmludmVydGVkX21h dGNoID0gdmFsOwo+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBwbGFuZS0+Y29sb3JrZXkucmVw bGFjZW1lbnRfbWFza19wcm9wZXJ0eSkgewo+ICsJCXN0YXRlLT5jb2xvcmtleS5yZXBsYWNlbWVu dF9tYXNrID0gdmFsOwo+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBwbGFuZS0+Y29sb3JrZXku cmVwbGFjZW1lbnRfdmFsdWVfcHJvcGVydHkpIHsKPiArCQlzdGF0ZS0+Y29sb3JrZXkucmVwbGFj ZW1lbnRfdmFsdWUgPSB2YWw7Cj4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IHBsYW5lLT5jb2xv cmtleS5yZXBsYWNlbWVudF9mb3JtYXRfcHJvcGVydHkpIHsKPiArCQlzdGF0ZS0+Y29sb3JrZXku cmVwbGFjZW1lbnRfZm9ybWF0ID0gdmFsOwo+ICAJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBwbGFu ZS0+Y29sb3JfZW5jb2RpbmdfcHJvcGVydHkpIHsKPiAgCQlzdGF0ZS0+Y29sb3JfZW5jb2Rpbmcg PSB2YWw7Cj4gIAl9IGVsc2UgaWYgKHByb3BlcnR5ID09IHBsYW5lLT5jb2xvcl9yYW5nZV9wcm9w ZXJ0eSkgewo+IEBAIC04NjQsNiArODgyLDI0IEBAIGRybV9hdG9taWNfcGxhbmVfZ2V0X3Byb3Bl cnR5KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJCSp2YWwgPSBzdGF0ZS0+cm90YXRpb247 Cj4gIAl9IGVsc2UgaWYgKHByb3BlcnR5ID09IHBsYW5lLT56cG9zX3Byb3BlcnR5KSB7Cj4gIAkJ KnZhbCA9IHN0YXRlLT56cG9zOwo+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBwbGFuZS0+Y29s b3JrZXkubW9kZV9wcm9wZXJ0eSkgewo+ICsJCSp2YWwgPSBzdGF0ZS0+Y29sb3JrZXkubW9kZTsK PiArCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gcGxhbmUtPmNvbG9ya2V5Lm1pbl9wcm9wZXJ0eSkg ewo+ICsJCSp2YWwgPSBzdGF0ZS0+Y29sb3JrZXkubWluOwo+ICsJfSBlbHNlIGlmIChwcm9wZXJ0 eSA9PSBwbGFuZS0+Y29sb3JrZXkubWF4X3Byb3BlcnR5KSB7Cj4gKwkJKnZhbCA9IHN0YXRlLT5j b2xvcmtleS5tYXg7Cj4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IHBsYW5lLT5jb2xvcmtleS5m b3JtYXRfcHJvcGVydHkpIHsKPiArCQkqdmFsID0gc3RhdGUtPmNvbG9ya2V5LmZvcm1hdDsKPiAr CX0gZWxzZSBpZiAocHJvcGVydHkgPT0gcGxhbmUtPmNvbG9ya2V5Lm1hc2tfcHJvcGVydHkpIHsK PiArCQkqdmFsID0gc3RhdGUtPmNvbG9ya2V5Lm1hc2s7Cj4gKwl9IGVsc2UgaWYgKHByb3BlcnR5 ID09IHBsYW5lLT5jb2xvcmtleS5pbnZlcnRlZF9tYXRjaF9wcm9wZXJ0eSkgewo+ICsJCSp2YWwg PSBzdGF0ZS0+Y29sb3JrZXkuaW52ZXJ0ZWRfbWF0Y2g7Cj4gKwl9IGVsc2UgaWYgKHByb3BlcnR5 ID09IHBsYW5lLT5jb2xvcmtleS5yZXBsYWNlbWVudF9tYXNrX3Byb3BlcnR5KSB7Cj4gKwkJKnZh bCA9IHN0YXRlLT5jb2xvcmtleS5yZXBsYWNlbWVudF9tYXNrOwo+ICsJfSBlbHNlIGlmIChwcm9w ZXJ0eSA9PSBwbGFuZS0+Y29sb3JrZXkucmVwbGFjZW1lbnRfdmFsdWVfcHJvcGVydHkpIHsKPiAr CQkqdmFsID0gc3RhdGUtPmNvbG9ya2V5LnJlcGxhY2VtZW50X3ZhbHVlOwo+ICsJfSBlbHNlIGlm IChwcm9wZXJ0eSA9PSBwbGFuZS0+Y29sb3JrZXkucmVwbGFjZW1lbnRfZm9ybWF0X3Byb3BlcnR5 KSB7Cj4gKwkJKnZhbCA9IHN0YXRlLT5jb2xvcmtleS5yZXBsYWNlbWVudF9mb3JtYXQ7Cj4gIAl9 IGVsc2UgaWYgKHByb3BlcnR5ID09IHBsYW5lLT5jb2xvcl9lbmNvZGluZ19wcm9wZXJ0eSkgewo+ ICAJCSp2YWwgPSBzdGF0ZS0+Y29sb3JfZW5jb2Rpbmc7Cj4gIAl9IGVsc2UgaWYgKHByb3BlcnR5 ID09IHBsYW5lLT5jb2xvcl9yYW5nZV9wcm9wZXJ0eSkgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vZHJtX2JsZW5kLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2JsZW5kLmMKPiBpbmRl eCBhMTZhNzRkN2UxNWUuLjA1ZTU2MzJjZTM3NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vZHJtX2JsZW5kLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2JsZW5kLmMKPiBAQCAt MTA3LDYgKzEwNywxMSBAQAo+ICAgKglwbGFuZXMuIFdpdGhvdXQgdGhpcyBwcm9wZXJ0eSB0aGUg cHJpbWFyeSBwbGFuZSBpcyBhbHdheXMgYmVsb3cgdGhlIGN1cnNvcgo+ICAgKglwbGFuZSwgYW5k IG9yZGVyaW5nIGJldHdlZW4gYWxsIG90aGVyIHBsYW5lcyBpcyB1bmRlZmluZWQuCj4gICAqCj4g KyAqIGNvbG9ya2V5Ogo+ICsgKglDb2xvciBrZXlpbmcgaXMgc2V0IHVwIHdpdGggZHJtX3BsYW5l X2NyZWF0ZV9jb2xvcmtleV9wcm9wZXJ0aWVzKCkuCj4gKyAqCUl0IGFkZHMgc3VwcG9ydCBmb3Ig cmVwbGFjaW5nIGEgcmFuZ2Ugb2YgY29sb3JzIHdpdGggYSB0cmFuc3BhcmVudAo+ICsgKgljb2xv ciBpbiB0aGUgcGxhbmUuCj4gKyAqCj4gICAqIE5vdGUgdGhhdCBhbGwgdGhlIHByb3BlcnR5IGV4 dGVuc2lvbnMgZGVzY3JpYmVkIGhlcmUgYXBwbHkgZWl0aGVyIHRvIHRoZQo+ICAgKiBwbGFuZSBv ciB0aGUgQ1JUQyAoZS5nLiBmb3IgdGhlIGJhY2tncm91bmQgY29sb3IsIHdoaWNoIGN1cnJlbnRs eSBpcyBub3QKPiAgICogZXhwb3NlZCBhbmQgYXNzdW1lZCB0byBiZSBibGFjaykuCj4gQEAgLTQ0 OCwzICs0NTMsMjI3IEBAIGludCBkcm1fYXRvbWljX25vcm1hbGl6ZV96cG9zKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICBFWFBPUlRfU1lNQk9MKGRybV9hdG9t aWNfbm9ybWFsaXplX3pwb3MpOwo+ICsKPiArc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBwbGFu ZV9jb2xvcmtleV9tb2RlX25hbWVbXSA9IHsKPiArCVtEUk1fUExBTkVfQ09MT1JLRVlfTU9ERV9E SVNBQkxFRF0gPSAiZGlzYWJsZWQiLAo+ICsJW0RSTV9QTEFORV9DT0xPUktFWV9NT0RFX1NSQ10g PSAic3JjLW1hdGNoLXNyYy1yZXBsYWNlIiwKPiArCVtEUk1fUExBTkVfQ09MT1JLRVlfTU9ERV9E U1RdID0gImRzdC1tYXRjaC1zcmMtcmVwbGFjZSIsCgpUaGlzIGxpc3Qgc2VlbXMgd2F5IG1vcmUg bGltaXRlZCB0aGFuIEkgd2FzIGV4cGVjdGluZywgYXQgbGVhc3Qgd2hlbgpjb21wYXJlZCB0byBh bGwgdGhlIGRpZmZlcmVudCBwcm9wcyB5b3UncmUgcHJvcG9zaW5nIHRvIGFkZC4KCj4gK307Cj4g Kwo+ICsvKioKPiArICogZHJtX3BsYW5lX2NyZWF0ZV9jb2xvcmtleV9wcm9wZXJ0aWVzIC0gY3Jl YXRlIGNvbG9ya2V5IHByb3BlcnRpZXMKPiArICogQHBsYW5lOiBkcm0gcGxhbmUKPiArICogQHN1 cHBvcnRlZF9tb2RlczogYml0bWFzayBvZiBzdXBwb3J0ZWQgY29sb3Iga2V5aW5nIG1vZGVzCj4g KyAqCj4gKyAqIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyB0aGUgZ2VuZXJpYyBjb2xvciBrZXlpbmcg cHJvcGVydGllcyBhbmQgYXR0YWNoIHRoZW0gdG8KPiArICogdGhlIHBsYW5lIHRvIGVuYWJsZSBj b2xvciBrZXlpbmcgY29udHJvbCBmb3IgYmxlbmRpbmcgb3BlcmF0aW9ucy4KPiArICoKPiArICog Q29sb3Iga2V5aW5nIGlzIGNvbnRyb2xsZWQgdGhyb3VnaCBuaW5lIHByb3BlcnRpZXM6Cj4gKyAq Cj4gKyAqIGNvbG9ya2V5Lm1vZGU6Cj4gKyAqCVRoZSBtb2RlIGlzIGFuIGVudW1lcmF0ZWQgcHJv cGVydHkgdGhhdCBjb250cm9scyBob3cgY29sb3Iga2V5aW5nCj4gKyAqCW9wZXJhdGVzLiBUaGUg ImRpc2FibGVkIiBtb2RlIHRoYXQgZGlzYWJsZXMgY29sb3Iga2V5aW5nIGFuZCBpcwo+ICsgKgl2 ZXJ5IGxpa2VseSB0byBleGlzdCBpZiBjb2xvciBrZXlpbmcgaXMgc3VwcG9ydGVkLCBpdCBzaG91 bGQgYmUgdGhlCj4gKyAqCWRlZmF1bHQgbW9kZS4KPiArICoKPiArICogY29sb3JrZXkubWluLCBj b2xvcmtleS5tYXg6Cj4gKyAqCVRoZXNlIHR3byBwcm9wZXJ0aWVzIHNwZWNpZnkgdGhlIGNvbG9y cyB0aGF0IGFyZSB0cmVhdGVkIGFzIHRoZSBjb2xvcgo+ICsgKglrZXkuIFBpeGVsIHdob3NlIHZh bHVlIGlzIGluIHRoZSBbbWluLCBtYXhdIHJhbmdlIGlzIHRoZSBjb2xvciBrZXkKPiArICoJbWF0 Y2hpbmcgcGl4ZWwuIFRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHZhbHVlcyBhcmUgZXhwcmVzc2Vk IGFzIGEKPiArICoJNjQtYml0IGludGVnZXIgaW4gQVhZWjE2MTYxNjE2IGZvcm1hdCwgd2hlcmUg QSBpcyB0aGUgYWxwaGEgdmFsdWUgYW5kCj4gKyAqCVgsIFkgYW5kIFogY29ycmVzcG9uZCB0byB0 aGUgY29sb3IgY29tcG9uZW50cyBvZiB0aGUgY29sb3JrZXkuZm9ybWF0Lgo+ICsgKglJbiBtb3N0 IGNhc2VzIFhZWiB3aWxsIGJlIGVpdGhlciBSR0Igb3IgWVVWLgo+ICsgKgo+ICsgKglXaGVuIGEg c2luZ2xlIGNvbG9yIGtleSBpcyBkZXNpcmVkIGluc3RlYWQgb2YgYSByYW5nZSwgdXNlcnNwYWNl IHNoYWxsCj4gKyAqCXNldCB0aGUgbWluIGFuZCBtYXggcHJvcGVydGllcyB0byB0aGUgc2FtZSB2 YWx1ZS4KPiArICoKPiArICoJRHJpdmVycyByZXR1cm4gYW4gZXJyb3IgZnJvbSB0aGVpciBwbGFu ZSBhdG9taWMgY2hlY2sgaWYgcmFuZ2UgY2FuJ3QgYmUKPiArICoJaGFuZGxlZC4KPiArICoKPiAr ICogY29sb3JrZXkuZm9ybWF0Ogo+ICsgKglUaGlzIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgcGl4 ZWwgZm9ybWF0IGZvciB0aGUgY29sb3JrZXkubWluIC8gbWF4Cj4gKyAqCXByb3BlcnRpZXMuIFRo ZSBmb3JtYXQgaXMgZ2l2ZW4gaW4gYSBmb3JtIG9mIERSTSBmb3VyY2MgY29kZS4KClVtbS4gV2h5 IHdlIGRvIGV2ZW4gbmVlZCB0aGlzPyBUaGlzIHNlZW1zIGluY29tcGF0aWJsZSB3aXRoIHlvdXIg ZWFybGllcgoibWluL21heCBhcmUgc3BlY2lmaWVkIGluIDE2YnBjIGZvcm1hdCIgc3RhdGVtZW50 LgoKPiArICoKPiArICoJRHJpdmVycyByZXR1cm4gYW4gZXJyb3IgZnJvbSB0aGVpciBwbGFuZSBh dG9taWMgY2hlY2sgaWYgcGl4ZWwgZm9ybWF0Cj4gKyAqCWlzIHVuc3VwcG9ydGVkLgo+ICsgKgo+ ICsgKiBjb2xvcmtleS5tYXNrOgo+ICsgKglUaGlzIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgcGl4 ZWwgY29tcG9uZW50cyBtYXNrLiBVbm1hc2tlZCBwaXhlbAo+ICsgKgljb21wb25lbnRzIGFyZSBu b3QgcGFydGljaXBhdGluZyBpbiB0aGUgbWF0Y2hpbmcuIFRoaXMgbWFzayB2YWx1ZSBpcwo+ICsg KglhcHBsaWVkIHRvIGNvbG9ya2V5Lm1pbiAvIG1heCB2YWx1ZXMuIFRoZSBtYXNrIHZhbHVlIGlz IGdpdmVuIGluIGEKPiArICoJZm9ybSBvZiBEUk0gZm91cmNjIGNvZGUgY29ycmVzcG9uZGluZyB0 byB0aGUgY29sb3JrZXkuZm9ybWF0IHByb3BlcnR5Lgo+ICsgKgo+ICsgKglGb3IgZXhhbXBsZTog dXNlcnNwYWNlIHNoYWxsIHNldCB0aGUgY29sb3JrZXkubWFzayB0byAweDAwMDBmZjAwCj4gKyAq CXRvIG1hdGNoIG9ubHkgdGhlIGdyZWVuIGNvbXBvbmVudCBpZiBjb2xvcmtleS5mb3JtYXQgaXMg c2V0IHRvCj4gKyAqCURSTV9GT1JNQVRfWFJHQjg4ODguCj4gKyAqCj4gKyAqCURyaXZlcnMgcmV0 dXJuIGFuIGVycm9yIGZyb20gdGhlaXIgcGxhbmUgYXRvbWljIGNoZWNrIGlmIG1hc2sgdmFsdWUK PiArICoJY2FuJ3QgYmUgaGFuZGxlZC4KPiArICoKPiArICogY29sb3JrZXkuaW52ZXJ0ZWQtbWF0 Y2g6Cj4gKyAqCVRoaXMgcHJvcGVydHkgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIG1hdGNoaW5nIG1p bi1tYXggcmFuZ2Ugc2hvdWxkCj4gKyAqCWJlIGludmVydGVkLCBpLmUuIHBpeGVscyBvdXRzaWRl IG9mIHRoZSBnaXZlbiBjb2xvciByYW5nZSBiZWNvbWUKPiArICoJdGhlIGNvbG9yIGtleSBtYXRj aC4KPiArICoKPiArICoJRHJpdmVycyByZXR1cm4gYW4gZXJyb3IgZnJvbSB0aGVpciBwbGFuZSBh dG9taWMgY2hlY2sgaWYgaW52ZXJzaW9uCj4gKyAqCW1vZGUgY2FuJ3QgYmUgaGFuZGxlZC4KCkht bS4gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IHdoYXQgdGhpcyBtZWFucyBmb3IgdGhlIHNyYyB2 cy4gZHN0CmNvbG9ya2V5IG1vZGVzLiBUaG9zZSBwcmV0dHkgbXVjaCBhbHJlYWR5IGhhdmUgYW4g aW52ZXJ0ZWQgbWVhbmluZyB3aGVuCmNvbXBhcmVkIHRvIGVhY2ggb3RoZXIuIFNvIEkgY2FuJ3Qg ZmlndXJlIG91dCBmcm9tIHRoZXNlIGRvY3Mgd2hldGhlciAKeW91J3JlIHN1cHBvc2VkIHRvIHVz ZSB0aGlzIHdoZW4geW91IHdhbnQgYSBub3JtYWwgZHN0IGNrZXkgb3Igbm9ybWFsCnNyYyBrZXkg c2VtYW50aWNzLgoKPiArICoKPiArICogY29sb3JrZXkucmVwbGFjZW1lbnQtdmFsdWU6Cj4gKyAq CVRoaXMgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBjb2xvciB2YWx1ZSB0aGF0IHJlcGxhY2VzIHBp eGVscyBtYXRjaGluZwo+ICsgKgl0aGUgY29sb3Iga2V5LiBUaGUgdmFsdWUgaXMgZXhwcmVzc2Vk IGluIEFYWVoxNjE2MTYxNiBmb3JtYXQsIHdoZXJlIEEKPiArICoJaXMgdGhlIGFscGhhIHZhbHVl IGFuZCBYLCBZIGFuZCBaIGNvcnJlc3BvbmQgdG8gdGhlIGNvbG9yIGNvbXBvbmVudHMKPiArICoJ b2YgdGhlIGNvbG9ya2V5LnJlcGxhY2VtZW50LWZvcm1hdC4KPiArICoKPiArICoJRHJpdmVycyBy ZXR1cm4gYW4gZXJyb3IgZnJvbSB0aGVpciBwbGFuZSBhdG9taWMgY2hlY2sgaWYgcmVwbGFjZW1l bnQKPiArICoJdmFsdWUgY2FuJ3QgYmUgaGFuZGxlZC4KPiArICoKPiArICogY29sb3JrZXkucmVw bGFjZW1lbnQtZm9ybWF0Ogo+ICsgKglUaGlzIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgcGl4ZWwg Zm9ybWF0IGZvciB0aGUKPiArICoJY29sb3JrZXkucmVwbGFjZW1lbnQtdmFsdWUgcHJvcGVydHku IFRoZSBmb3JtYXQgaXMgZ2l2ZW4gaW4gYSBmb3JtIG9mCj4gKyAqCURSTSBmb3VyY2MgY29kZS4K CkFnYWluIHRoaXMgc2VlbXMgYXQgb2RkcyB3aXRoIHRoZSAxNmJwYyByZXBsYWNlbWVudC12YWx1 ZS4KCj4gKyAqCj4gKyAqCURyaXZlcnMgcmV0dXJuIGFuIGVycm9yIGZyb20gdGhlaXIgcGxhbmUg YXRvbWljIGNoZWNrIGlmIHJlcGxhY2VtZW50Cj4gKyAqCXBpeGVsIGZvcm1hdCBpcyB1bnN1cHBv cnRlZC4KPiArICoKPiArICogY29sb3JrZXkucmVwbGFjZW1lbnQtbWFzazoKPiArICoJVGhpcyBw cm9wZXJ0eSBzcGVjaWZpZXMgdGhlIHBpeGVsIGNvbXBvbmVudHMgbWFzayB0aGF0IGRlZmluZXMK PiArICoJd2hhdCBjb21wb25lbnRzIG9mIHRoZSBjb2xvcmtleS5yZXBsYWNlbWVudC12YWx1ZSB3 aWxsIHBhcnRpY2lwYXRlIGluCj4gKyAqCXJlcGxhY2VtZW50IG9mIHRoZSBwaXhlbHMgY29sb3Iu IFVubWFza2VkIHBpeGVsIGNvbXBvbmVudHMgYXJlIG5vdAo+ICsgKglwYXJ0aWNpcGF0aW5nIGlu IHRoZSByZXBsYWNlbWVudC4KCkRvZXMgdGhhdCBtZWFuIHRoYXQgdGhlIGRhdGEgZm9yIHRoZSB1 bm1hc2tlZCBiaXRzIHdpbGwgYmUgY29taW5nCmZyb20gdGhlIHNvdXJjZT8KCj4gVGhlIG1hc2sg dmFsdWUgaXMgZ2l2ZW4gaW4gYSBmb3JtIG9mCj4gKyAqCURSTSBmb3VyY2MgY29kZSBjb3JyZXNw b25kaW5nIHRvIHRoZSBjb2xvcmtleS5yZXBsYWNlbWVudC1mb3JtYXQKPiArICoJcHJvcGVydHku Cj4gKyAqCj4gKyAqCUZvciBleGFtcGxlOiB1c2Vyc3BhY2Ugc2hhbGwgc2V0IHRoZSBjb2xvcmtl eS5yZXBsYWNlbWVudC1tYXNrIHRvCj4gKyAqCTB4MDAwMGZmMDAgdG8gcmVwbGFjZSBvbmx5IHRo ZSBncmVlbiBjb21wb25lbnQgaWYKPiArICoJY29sb3JrZXkucmVwbGFjZW1lbnQtZm9ybWF0IGlz IHNldCB0byBEUk1fRk9STUFUX1hSR0I4ODg4Lgo+ICsgKgo+ICsgKglVc2Vyc3BhY2Ugc2hhbGwg c2V0IGNvbG9ya2V5LnJlcGxhY2VtZW50LW1hc2sgdG8gMCB0byBkaXNhYmxlIHRoZSBjb2xvcgo+ ICsgKglyZXBsYWNlbWVudC4gSW4gdGhpcyBjYXNlIG1hdGNoaW5nIHBpeGVscyBiZWNvbWUgdHJh bnNwYXJlbnQuCj4gKyAqCj4gKyAqCURyaXZlcnMgcmV0dXJuIGFuIGVycm9yIGZyb20gdGhlaXIg cGxhbmUgYXRvbWljIGNoZWNrIGlmIHJlcGxhY2VtZW50Cj4gKyAqCW1hc2sgdmFsdWUgY2FuJ3Qg YmUgaGFuZGxlZC4KPiArICoKPiArICogUmV0dXJuczoKPiArICogWmVybyBvbiBzdWNjZXNzLCBu ZWdhdGl2ZSBlcnJubyBvbiBmYWlsdXJlLgo+ICsgKi8KPiAraW50IGRybV9wbGFuZV9jcmVhdGVf Y29sb3JrZXlfcHJvcGVydGllcyhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiArCQkJCQkgdTMy IHN1cHBvcnRlZF9tb2RlcykKPiArewo+ICsJc3RydWN0IGRybV9wcm9wX2VudW1fbGlzdCBtb2Rl c19saXN0W0RSTV9QTEFORV9DT0xPUktFWV9NT0RFU19OVU1dOwo+ICsJc3RydWN0IGRybV9wcm9w ZXJ0eSAqcmVwbGFjZW1lbnRfZm9ybWF0X3Byb3A7Cj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpy ZXBsYWNlbWVudF92YWx1ZV9wcm9wOwo+ICsJc3RydWN0IGRybV9wcm9wZXJ0eSAqcmVwbGFjZW1l bnRfbWFza19wcm9wOwo+ICsJc3RydWN0IGRybV9wcm9wZXJ0eSAqaW52ZXJ0ZWRfbWF0Y2hfcHJv cDsKPiArCXN0cnVjdCBkcm1fcHJvcGVydHkgKmZvcm1hdF9wcm9wOwo+ICsJc3RydWN0IGRybV9w cm9wZXJ0eSAqbWFza19wcm9wOwo+ICsJc3RydWN0IGRybV9wcm9wZXJ0eSAqbW9kZV9wcm9wOwo+ ICsJc3RydWN0IGRybV9wcm9wZXJ0eSAqbWluX3Byb3A7Cj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5 ICptYXhfcHJvcDsKPiArCXVuc2lnbmVkIGludCBtb2Rlc19udW0gPSAwOwo+ICsJdW5zaWduZWQg aW50IGk7Cj4gKwo+ICsJLyogYXQgbGVhc3QgdHdvIG1vZGVzIHNob3VsZCBiZSBzdXBwb3J0ZWQg Ki8KPiArCWlmICghc3VwcG9ydGVkX21vZGVzKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiAr CS8qIG1vZGVzIGFyZSBkcml2ZXItc3BlY2lmaWMsIGJ1aWxkIHRoZSBsaXN0IG9mIHN1cHBvcnRl ZCBtb2RlcyAqLwo+ICsJZm9yIChpID0gMDsgaSA8IERSTV9QTEFORV9DT0xPUktFWV9NT0RFU19O VU07IGkrKykgewo+ICsJCWlmICghKHN1cHBvcnRlZF9tb2RlcyAmIEJJVChpKSkpCj4gKwkJCWNv bnRpbnVlOwo+ICsKPiArCQltb2Rlc19saXN0W21vZGVzX251bV0ubmFtZSA9IHBsYW5lX2NvbG9y a2V5X21vZGVfbmFtZVtpXTsKPiArCQltb2Rlc19saXN0W21vZGVzX251bV0udHlwZSA9IGk7Cj4g KwkJbW9kZXNfbnVtKys7Cj4gKwl9Cj4gKwo+ICsJbW9kZV9wcm9wID0gZHJtX3Byb3BlcnR5X2Ny ZWF0ZV9lbnVtKHBsYW5lLT5kZXYsIDAsICJjb2xvcmtleS5tb2RlIiwKPiArCQkJCQkgICAgIG1v ZGVzX2xpc3QsIG1vZGVzX251bSk7Cj4gKwlpZiAoIW1vZGVfcHJvcCkKPiArCQlyZXR1cm4gLUVO T01FTTsKPiArCj4gKwltYXNrX3Byb3AgPSBkcm1fcHJvcGVydHlfY3JlYXRlX3JhbmdlKHBsYW5l LT5kZXYsIDAsICJjb2xvcmtleS5tYXNrIiwKPiArCQkJCQkgICAgICAwLCBVNjRfTUFYKTsKPiAr CWlmICghbWFza19wcm9wKQo+ICsJCWdvdG8gZXJyX2Rlc3Ryb3lfbW9kZV9wcm9wOwo+ICsKPiAr CW1pbl9wcm9wID0gZHJtX3Byb3BlcnR5X2NyZWF0ZV9yYW5nZShwbGFuZS0+ZGV2LCAwLCAiY29s b3JrZXkubWluIiwKPiArCQkJCQkgICAgIDAsIFU2NF9NQVgpOwo+ICsJaWYgKCFtaW5fcHJvcCkK PiArCQlnb3RvIGVycl9kZXN0cm95X21hc2tfcHJvcDsKPiArCj4gKwltYXhfcHJvcCA9IGRybV9w cm9wZXJ0eV9jcmVhdGVfcmFuZ2UocGxhbmUtPmRldiwgMCwgImNvbG9ya2V5Lm1heCIsCj4gKwkJ CQkJICAgICAwLCBVNjRfTUFYKTsKPiArCWlmICghbWF4X3Byb3ApCj4gKwkJZ290byBlcnJfZGVz dHJveV9taW5fcHJvcDsKPiArCj4gKwlmb3JtYXRfcHJvcCA9IGRybV9wcm9wZXJ0eV9jcmVhdGVf cmFuZ2UocGxhbmUtPmRldiwgMCwKPiArCQkJCQkiY29sb3JrZXkuZm9ybWF0IiwKPiArCQkJCQkw LCBVMzJfTUFYKTsKPiArCWlmICghZm9ybWF0X3Byb3ApCj4gKwkJZ290byBlcnJfZGVzdHJveV9t YXhfcHJvcDsKPiArCj4gKwlpbnZlcnRlZF9tYXRjaF9wcm9wID0gZHJtX3Byb3BlcnR5X2NyZWF0 ZV9ib29sKHBsYW5lLT5kZXYsIDAsCj4gKwkJCQkJImNvbG9ya2V5LmludmVydGVkLW1hdGNoIik7 Cj4gKwlpZiAoIWludmVydGVkX21hdGNoX3Byb3ApCj4gKwkJZ290byBlcnJfZGVzdHJveV9mb3Jt YXRfcHJvcDsKPiArCj4gKwlyZXBsYWNlbWVudF9tYXNrX3Byb3AgPSBkcm1fcHJvcGVydHlfY3Jl YXRlX3JhbmdlKHBsYW5lLT5kZXYsIDAsCj4gKwkJCQkJImNvbG9ya2V5LnJlcGxhY2VtZW50LW1h c2siLAo+ICsJCQkJCTAsIFU2NF9NQVgpOwo+ICsJaWYgKCFyZXBsYWNlbWVudF9tYXNrX3Byb3Ap Cj4gKwkJZ290byBlcnJfZGVzdHJveV9pbnZlcnRlZF9tYXRjaF9wcm9wOwo+ICsKPiArCXJlcGxh Y2VtZW50X3ZhbHVlX3Byb3AgPSBkcm1fcHJvcGVydHlfY3JlYXRlX3JhbmdlKHBsYW5lLT5kZXYs IDAsCj4gKwkJCQkJImNvbG9ya2V5LnJlcGxhY2VtZW50LXZhbHVlIiwKPiArCQkJCQkwLCBVNjRf TUFYKTsKPiArCWlmICghcmVwbGFjZW1lbnRfdmFsdWVfcHJvcCkKPiArCQlnb3RvIGVycl9kZXN0 cm95X3JlcGxhY2VtZW50X21hc2tfcHJvcDsKPiArCj4gKwlyZXBsYWNlbWVudF9mb3JtYXRfcHJv cCA9IGRybV9wcm9wZXJ0eV9jcmVhdGVfcmFuZ2UocGxhbmUtPmRldiwgMCwKPiArCQkJCQkiY29s b3JrZXkucmVwbGFjZW1lbnQtZm9ybWF0IiwKPiArCQkJCQkwLCBVNjRfTUFYKTsKPiArCWlmICgh cmVwbGFjZW1lbnRfZm9ybWF0X3Byb3ApCj4gKwkJZ290byBlcnJfZGVzdHJveV9yZXBsYWNlbWVu dF92YWx1ZV9wcm9wOwoKSSBkb24ndCB0aGluayB3ZSB3YW50IHRvIGFkZCBhbGwgdGhlc2UgcHJv cHMgZm9yIGV2ZXJ5IGRyaXZlci9oYXJkd2FyZS4KSU1PIHRoZSBzZXQgb2YgcHJvcHMgd2UgZXhw b3NlIHNob3VsZCBkZXBlbmQgb24gdGhlIHN1cHBvcnRlZCBzZXQgb2YKY29sb3JrZXlpbmcgbW9k ZXMuCgo+ICsKPiArCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFuZS0+YmFzZSwgbWlu X3Byb3AsIDApOwo+ICsJZHJtX29iamVjdF9hdHRhY2hfcHJvcGVydHkoJnBsYW5lLT5iYXNlLCBt YXhfcHJvcCwgMCk7Cj4gKwlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmcGxhbmUtPmJhc2Us IG1vZGVfcHJvcCwgMCk7Cj4gKwlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmcGxhbmUtPmJh c2UsIG1hc2tfcHJvcCwgMCk7Cj4gKwlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmcGxhbmUt PmJhc2UsIGZvcm1hdF9wcm9wLCAwKTsKPiArCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZw bGFuZS0+YmFzZSwgaW52ZXJ0ZWRfbWF0Y2hfcHJvcCwgMCk7Cj4gKwlkcm1fb2JqZWN0X2F0dGFj aF9wcm9wZXJ0eSgmcGxhbmUtPmJhc2UsIHJlcGxhY2VtZW50X21hc2tfcHJvcCwgMCk7Cj4gKwlk cm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmcGxhbmUtPmJhc2UsIHJlcGxhY2VtZW50X3ZhbHVl X3Byb3AsIDApOwo+ICsJZHJtX29iamVjdF9hdHRhY2hfcHJvcGVydHkoJnBsYW5lLT5iYXNlLCBy ZXBsYWNlbWVudF9mb3JtYXRfcHJvcCwgMCk7Cj4gKwo+ICsJcGxhbmUtPmNvbG9ya2V5Lm1pbl9w cm9wZXJ0eSA9IG1pbl9wcm9wOwo+ICsJcGxhbmUtPmNvbG9ya2V5Lm1heF9wcm9wZXJ0eSA9IG1h eF9wcm9wOwo+ICsJcGxhbmUtPmNvbG9ya2V5Lm1vZGVfcHJvcGVydHkgPSBtb2RlX3Byb3A7Cj4g KwlwbGFuZS0+Y29sb3JrZXkubWFza19wcm9wZXJ0eSA9IG1hc2tfcHJvcDsKPiArCXBsYW5lLT5j b2xvcmtleS5mb3JtYXRfcHJvcGVydHkgPSBmb3JtYXRfcHJvcDsKPiArCXBsYW5lLT5jb2xvcmtl eS5pbnZlcnRlZF9tYXRjaF9wcm9wZXJ0eSA9IGludmVydGVkX21hdGNoX3Byb3A7Cj4gKwlwbGFu ZS0+Y29sb3JrZXkucmVwbGFjZW1lbnRfbWFza19wcm9wZXJ0eSA9IHJlcGxhY2VtZW50X21hc2tf cHJvcDsKPiArCXBsYW5lLT5jb2xvcmtleS5yZXBsYWNlbWVudF92YWx1ZV9wcm9wZXJ0eSA9IHJl cGxhY2VtZW50X3ZhbHVlX3Byb3A7Cj4gKwlwbGFuZS0+Y29sb3JrZXkucmVwbGFjZW1lbnRfZm9y bWF0X3Byb3BlcnR5ID0gcmVwbGFjZW1lbnRfZm9ybWF0X3Byb3A7Cj4gKwo+ICsJcmV0dXJuIDA7 Cj4gKwo+ICtlcnJfZGVzdHJveV9yZXBsYWNlbWVudF92YWx1ZV9wcm9wOgo+ICsJZHJtX3Byb3Bl cnR5X2Rlc3Ryb3kocGxhbmUtPmRldiwgcmVwbGFjZW1lbnRfdmFsdWVfcHJvcCk7Cj4gK2Vycl9k ZXN0cm95X3JlcGxhY2VtZW50X21hc2tfcHJvcDoKPiArCWRybV9wcm9wZXJ0eV9kZXN0cm95KHBs YW5lLT5kZXYsIHJlcGxhY2VtZW50X21hc2tfcHJvcCk7Cj4gK2Vycl9kZXN0cm95X2ludmVydGVk X21hdGNoX3Byb3A6Cj4gKwlkcm1fcHJvcGVydHlfZGVzdHJveShwbGFuZS0+ZGV2LCBpbnZlcnRl ZF9tYXRjaF9wcm9wKTsKPiArZXJyX2Rlc3Ryb3lfZm9ybWF0X3Byb3A6Cj4gKwlkcm1fcHJvcGVy dHlfZGVzdHJveShwbGFuZS0+ZGV2LCBmb3JtYXRfcHJvcCk7Cj4gK2Vycl9kZXN0cm95X21heF9w cm9wOgo+ICsJZHJtX3Byb3BlcnR5X2Rlc3Ryb3kocGxhbmUtPmRldiwgbWF4X3Byb3ApOwo+ICtl cnJfZGVzdHJveV9taW5fcHJvcDoKPiArCWRybV9wcm9wZXJ0eV9kZXN0cm95KHBsYW5lLT5kZXYs IG1pbl9wcm9wKTsKPiArZXJyX2Rlc3Ryb3lfbWFza19wcm9wOgo+ICsJZHJtX3Byb3BlcnR5X2Rl c3Ryb3kocGxhbmUtPmRldiwgbWFza19wcm9wKTsKPiArZXJyX2Rlc3Ryb3lfbW9kZV9wcm9wOgo+ ICsJZHJtX3Byb3BlcnR5X2Rlc3Ryb3kocGxhbmUtPmRldiwgbW9kZV9wcm9wKTsKPiArCj4gKwly ZXR1cm4gLUVOT01FTTsKPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybV9wbGFuZV9jcmVhdGVfY29s b3JrZXlfcHJvcGVydGllcyk7Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9ibGVuZC5o IGIvaW5jbHVkZS9kcm0vZHJtX2JsZW5kLmgKPiBpbmRleCAzMzBjNTYxYzRjMTEuLjhlODBkMzNi NjQzZSAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fYmxlbmQuaAo+ICsrKyBiL2luY2x1 ZGUvZHJtL2RybV9ibGVuZC5oCj4gQEAgLTUyLDQgKzUyLDcgQEAgaW50IGRybV9wbGFuZV9jcmVh dGVfenBvc19pbW11dGFibGVfcHJvcGVydHkoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJ CQkJICAgICB1bnNpZ25lZCBpbnQgenBvcyk7Cj4gIGludCBkcm1fYXRvbWljX25vcm1hbGl6ZV96 cG9zKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJCSAgICAgIHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSk7Cj4gKwo+ICtpbnQgZHJtX3BsYW5lX2NyZWF0ZV9jb2xvcmtleV9wcm9w ZXJ0aWVzKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICsJCQkJCSB1MzIgc3VwcG9ydGVkX21v ZGVzKTsKPiAgI2VuZGlmCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9wbGFuZS5oIGIv aW5jbHVkZS9kcm0vZHJtX3BsYW5lLmgKPiBpbmRleCAyNmZhNTBjMmE1MGUuLmZmN2Y1ZWJlMmI3 OSAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fcGxhbmUuaAo+ICsrKyBiL2luY2x1ZGUv ZHJtL2RybV9wbGFuZS5oCj4gQEAgLTMyLDYgKzMyLDQyIEBAIHN0cnVjdCBkcm1fY3J0YzsKPiAg c3RydWN0IGRybV9wcmludGVyOwo+ICBzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHg7Cj4g IAo+ICsvKioKPiArICogZW51bSBkcm1fcGxhbmVfY29sb3JrZXlfbW9kZSAtIHVhcGkgcGxhbmUg Y29sb3JrZXkgbW9kZSBlbnVtZXJhdGlvbgo+ICsgKi8KPiArZW51bSBkcm1fcGxhbmVfY29sb3Jr ZXlfbW9kZSB7Cj4gKwkvKioKPiArCSAqIEBEUk1fUExBTkVfQ09MT1JLRVlfTU9ERV9ESVNBQkxF RDoKPiArCSAqCj4gKwkgKiBObyBjb2xvciBtYXRjaGluZyBwZXJmb3JtZWQgaW4gdGhpcyBtb2Rl LiBUaGlzIGlzIHRoZSBkZWZhdWx0Cj4gKwkgKiBjb21tb24gbW9kZS4KPiArCSAqLwo+ICsJRFJN X1BMQU5FX0NPTE9SS0VZX01PREVfRElTQUJMRUQsCj4gKwo+ICsJLyoqCj4gKwkgKiBARFJNX1BM QU5FX0NPTE9SS0VZX01PREVfU1JDOgo+ICsJICoKPiArCSAqIEluIHRoaXMgbW9kZSBjb2xvciBt YXRjaGluZyBpcyBwZXJmb3JtZWQgd2l0aCB0aGUgcGl4ZWxzIG9mCj4gKwkgKiB0aGUgZ2l2ZW4g cGxhbmUgYW5kIHRoZSBtYXRjaGVkIHBpeGVscyBhcmUgZnVsbHkgKG9yIHBhcnRpYWxseSkKPiAr CSAqIHJlcGxhY2VkIHdpdGggdGhlIHJlcGxhY2VtZW50IGNvbG9yIG9yIGJlY29tZSBjb21wbGV0 ZWx5Cj4gKwkgKiB0cmFuc3BhcmVudC4KPiArCSAqLwo+ICsJRFJNX1BMQU5FX0NPTE9SS0VZX01P REVfU1JDLAo+ICsKPiArCS8qKgo+ICsJICogQERSTV9QTEFORV9DT0xPUktFWV9NT0RFX0RTVDoK PiArCSAqCj4gKwkgKiBJbiB0aGlzIG1vZGUgY29sb3IgbWF0Y2hpbmcgaXMgcGVyZm9ybWVkIHdp dGggdGhlIHBpeGVscyBvZiB0aGUKPiArCSAqIHBsYW5lcyB6LXBvc2l0aW9uZWQgdW5kZXIgdGhl IGdpdmVuIHBsYW5lIGFuZCB0aGUgcGl4ZWxzIG9mIHRoZQo+ICsJICogaG92ZXJpbmcgcGxhbmUg dGhhdCBhcmUgeHktcG9zaXRpb25lZCBhcyB0aGUgdW5kZXJseWluZwo+ICsJICogY29sb3ItbWF0 Y2hlZCBwaXhlbHMgYXJlIGZ1bGx5IChvciBwYXJ0aWFsbHkpIHJlcGxhY2VkIHdpdGggdGhlCj4g KwkgKiByZXBsYWNlbWVudCBjb2xvciBvciBiZWNvbWUgY29tcGxldGVseSB0cmFuc3BhcmVudC4K PiArCSAqLwo+ICsJRFJNX1BMQU5FX0NPTE9SS0VZX01PREVfRFNULAo+ICsKPiArCURSTV9QTEFO RV9DT0xPUktFWV9NT0RFU19OVU0sCj4gK307Cj4gKwo+ICAvKioKPiAgICogc3RydWN0IGRybV9w bGFuZV9zdGF0ZSAtIG11dGFibGUgcGxhbmUgc3RhdGUKPiAgICogQHBsYW5lOiBiYWNrcG9pbnRl ciB0byB0aGUgcGxhbmUKPiBAQCAtNTQsNiArOTAsMjEgQEAgc3RydWN0IGRybV9tb2Rlc2V0X2Fj cXVpcmVfY3R4Owo+ICAgKgl3aGVyZSBOIGlzIHRoZSBudW1iZXIgb2YgYWN0aXZlIHBsYW5lcyBm b3IgZ2l2ZW4gY3J0Yy4gTm90ZSB0aGF0Cj4gICAqCXRoZSBkcml2ZXIgbXVzdCBzZXQgZHJtX21v ZGVfY29uZmlnLm5vcm1hbGl6ZV96cG9zIG9yIGNhbGwKPiAgICoJZHJtX2F0b21pY19ub3JtYWxp emVfenBvcygpIHRvIHVwZGF0ZSB0aGlzIGJlZm9yZSBpdCBjYW4gYmUgdHJ1c3RlZC4KPiArICog QGNvbG9ya2V5Lm1vZGU6IGNvbG9yIGtleSBtb2RlCj4gKyAqIEBjb2xvcmtleS5taW46IGNvbG9y IGtleSByYW5nZSBtaW5pbXVtLiBUaGUgdmFsdWUgaXMgc3RvcmVkIGluIEFYWVoxNjE2MTYxNgo+ ICsgKglmb3JtYXQsIHdoZXJlIEEgaXMgdGhlIGFscGhhIHZhbHVlIGFuZCBYLCBZIGFuZCBaIGNv cnJlc3BvbmQgdG8gdGhlCj4gKyAqCWNvbG9yIGNvbXBvbmVudHMgb2YgdGhlIHBsYW5lJ3MgcGl4 ZWwgZm9ybWF0ICh1c3VhbGx5IFJHQiBvciBZVVYpCj4gKyAqIEBjb2xvcmtleS5tYXg6IGNvbG9y IGtleSByYW5nZSBtYXhpbXVtIChpbiBBWFlaMTYxNjE2MTYgZm9ybWF0KQo+ICsgKiBAY29sb3Jr ZXkubWFzazogY29sb3Iga2V5IG1hc2sgdmFsdWUgKGluIEFYWVoxNjE2MTYxNiBmb3JtYXQpCj4g KyAqIEBjb2xvcmtleS5mb3JtYXQ6IGNvbG9yIGtleSBtaW4vbWF4L21hc2sgdmFsdWVzIHBpeGVs IGZvcm1hdCAoaW4KPiArICogCURSTV9GT1JNQVRfQVhZWjE2MTYxNjE2IGZvcm0pCj4gKyAqIEBj b2xvcmtleS5pbnZlcnRlZF9tYXRjaDogY29sb3Iga2V5IG1pbi1tYXggbWF0Y2hpbmcgcmFuZ2Ug aXMgaW52ZXJ0ZWQKPiArICogQGNvbG9ya2V5LnJlcGxhY2VtZW50X21hc2s6IGNvbG9yIGtleSBy ZXBsYWNlbWVudCBtYXNrIHZhbHVlIChpbgo+ICsgKiAJQVhZWjE2MTYxNjE2IGZvcm1hdCkKPiAr ICogQGNvbG9ya2V5LnJlcGxhY2VtZW50X3ZhbHVlOiBjb2xvciBrZXkgcmVwbGFjZW1lbnQgdmFs dWUgKGluCj4gKyAqIAlBWFlaMTYxNjE2MTYgZm9ybWF0KQo+ICsgKiBAY29sb3JrZXkucmVwbGFj ZW1lbnRfZm9ybWF0OiBjb2xvciBrZXkgcmVwbGFjZW1lbnQgdmFsdWUgLyBtYXNrCj4gKyAqCXBp eGVsIGZvcm1hdCAoaW4gRFJNX0ZPUk1BVF9BWFlaMTYxNjE2MTYgZm9ybSkKPiAgICogQHNyYzog Y2xpcHBlZCBzb3VyY2UgY29vcmRpbmF0ZXMgb2YgdGhlIHBsYW5lIChpbiAxNi4xNikKPiAgICog QGRzdDogY2xpcHBlZCBkZXN0aW5hdGlvbiBjb29yZGluYXRlcyBvZiB0aGUgcGxhbmUKPiAgICog QHN0YXRlOiBiYWNrcG9pbnRlciB0byBnbG9iYWwgZHJtX2F0b21pY19zdGF0ZQo+IEBAIC0xMjQs NiArMTc1LDE5IEBAIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgewo+ICAJdW5zaWduZWQgaW50IHpw b3M7Cj4gIAl1bnNpZ25lZCBpbnQgbm9ybWFsaXplZF96cG9zOwo+ICAKPiArCS8qIFBsYW5lIGNv bG9ya2V5ICovCj4gKwlzdHJ1Y3Qgewo+ICsJCWVudW0gZHJtX3BsYW5lX2NvbG9ya2V5X21vZGUg bW9kZTsKPiArCQl1NjQgbWluOwo+ICsJCXU2NCBtYXg7Cj4gKwkJdTY0IG1hc2s7Cj4gKwkJdTMy IGZvcm1hdDsKPiArCQlib29sIGludmVydGVkX21hdGNoOwo+ICsJCXU2NCByZXBsYWNlbWVudF9t YXNrOwo+ICsJCXU2NCByZXBsYWNlbWVudF92YWx1ZTsKPiArCQl1MzIgcmVwbGFjZW1lbnRfZm9y bWF0Owo+ICsJfSBjb2xvcmtleTsKPiArCj4gIAkvKioKPiAgCSAqIEBjb2xvcl9lbmNvZGluZzoK PiAgCSAqCj4gQEAgLTUxMCw2ICs1NzQsNyBAQCBlbnVtIGRybV9wbGFuZV90eXBlIHsKPiAgICog QGFscGhhX3Byb3BlcnR5OiBhbHBoYSBwcm9wZXJ0eSBmb3IgdGhpcyBwbGFuZQo+ICAgKiBAenBv c19wcm9wZXJ0eTogenBvcyBwcm9wZXJ0eSBmb3IgdGhpcyBwbGFuZQo+ICAgKiBAcm90YXRpb25f cHJvcGVydHk6IHJvdGF0aW9uIHByb3BlcnR5IGZvciB0aGlzIHBsYW5lCj4gKyAqIEBjb2xvcmtl eTogY29sb3JrZXkgcHJvcGVydGllcyBmb3IgdGhpcyBwbGFuZQo+ICAgKiBAaGVscGVyX3ByaXZh dGU6IG1pZC1sYXllciBwcml2YXRlIGRhdGEKPiAgICovCj4gIHN0cnVjdCBkcm1fcGxhbmUgewo+ IEBAIC01ODcsNiArNjUyLDE4IEBAIHN0cnVjdCBkcm1fcGxhbmUgewo+ICAJc3RydWN0IGRybV9w cm9wZXJ0eSAqenBvc19wcm9wZXJ0eTsKPiAgCXN0cnVjdCBkcm1fcHJvcGVydHkgKnJvdGF0aW9u X3Byb3BlcnR5Owo+ICAKPiArCXN0cnVjdCB7Cj4gKwkJc3RydWN0IGRybV9wcm9wZXJ0eSAqbWlu X3Byb3BlcnR5Owo+ICsJCXN0cnVjdCBkcm1fcHJvcGVydHkgKm1heF9wcm9wZXJ0eTsKPiArCQlz dHJ1Y3QgZHJtX3Byb3BlcnR5ICptb2RlX3Byb3BlcnR5Owo+ICsJCXN0cnVjdCBkcm1fcHJvcGVy dHkgKm1hc2tfcHJvcGVydHk7Cj4gKwkJc3RydWN0IGRybV9wcm9wZXJ0eSAqZm9ybWF0X3Byb3Bl cnR5Owo+ICsJCXN0cnVjdCBkcm1fcHJvcGVydHkgKmludmVydGVkX21hdGNoX3Byb3BlcnR5Owo+ ICsJCXN0cnVjdCBkcm1fcHJvcGVydHkgKnJlcGxhY2VtZW50X21hc2tfcHJvcGVydHk7Cj4gKwkJ c3RydWN0IGRybV9wcm9wZXJ0eSAqcmVwbGFjZW1lbnRfdmFsdWVfcHJvcGVydHk7Cj4gKwkJc3Ry dWN0IGRybV9wcm9wZXJ0eSAqcmVwbGFjZW1lbnRfZm9ybWF0X3Byb3BlcnR5Owo+ICsJfSBjb2xv cmtleTsKPiArCj4gIAkvKioKPiAgCSAqIEBjb2xvcl9lbmNvZGluZ19wcm9wZXJ0eToKPiAgCSAq Cj4gLS0gCj4gMi4xNy4wCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QK ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=