From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jyri Sarha Subject: Re: [PATCH RFC 3/6] drm: Plane YCbCr to RGB conversion related properties Date: Tue, 2 May 2017 12:29:04 +0300 Message-ID: <0d92c89a-21cf-42c8-1829-f215309bf560@ti.com> References: <3f25532ae9b05c34996fc9657261b204c627e232.1492768073.git.jsarha@ti.com> <20170502083320.fptp6aq3budhtker@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from lelnx193.ext.ti.com (lelnx193.ext.ti.com [198.47.27.77]) by gabe.freedesktop.org (Postfix) with ESMTPS id 13C946E212 for ; Tue, 2 May 2017 09:29:21 +0000 (UTC) In-Reply-To: <20170502083320.fptp6aq3budhtker@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: Liviu.Dudau@arm.com, dri-devel@lists.freedesktop.org, tomi.valkeinen@ti.com, laurent.pinchart@ideasonboard.com List-Id: dri-devel@lists.freedesktop.org T24gMDUvMDIvMTcgMTE6MzMsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gT24gRnJpLCBBcHIgMjEs IDIwMTcgYXQgMTI6NTE6MTRQTSArMDMwMCwgSnlyaSBTYXJoYSB3cm90ZToKPj4gQWRkIHN0YW5k YXJkIHByb3BlcnRpZXMgdG8gY29udHJvbCBZQ2JDciB0byBSR0IgY29udmVyc2lvbiBpbiBEUk0K Pj4gcGxhbmVzLiBUaGUgY3JlYXRlZCBwcm9wZXJ0aWVzIGFyZSBzdG9yZWQgdG8gZHJtX3BsYW5l IG9iamVjdCB0byBhbGxvdwo+PiBkaWZmZXJlbnQgc2V0IG9mIHN1cHBvcnRlZCBjb252ZXJzaW9u IG1vZGVzIGZvciBkaWZmZXJlbnQgcGxhbmVzIG9uCj4+IHRoZSBkZXZpY2UuIEZvciBzaW1wbGlj aXR5IHRoZSByZWxhdGVkIHByb3BlcnR5IGJsb2JzIGZvciBDU0MgbWF0cml4Cj4+IGFuZCBZQ2JD ciBwcmVvZmZzZXRzIGFyZSBhbHNvIHN0b3JlZCBpbiB0aGUgc2FtZSBwbGFjZS4gVGhlIGJsb2IK Pj4gY29udGVudHMgYXJlIGRlZmluZWQgaW4gdGhlIHVhcGkvZHJtL2RybV9tb2RlLmggaGVhZGVy Lgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBKeXJpIFNhcmhhIDxqc2FyaGFAdGkuY29tPgo+IAo+IEp1 c3QgdG8gbWFrZSBzdXJlIHRoZXJlJ3Mgbm8gc3VycHJpc2VzOiBXZSBuZWVkIHRoZSB1c2Vyc3Bh Y2UgZm9yIHRoaXMKPiB0b28uIC1tb2Rlc2V0dGluZyAoZm9yIFh2IG1heWJlKSwgc29tZSB3YXls YW5kIGNvbXBvc2l0b3IgKHdlc3Rvbiwgb3pvbmUsCj4gd2hhdGV2ZXIgeW91IGZlZWwgbGlrZSkg b3IgZHJtX2h3Y29tcG9zZXIuCj4gCj4gQnV0IHllYWggbWlnaHQgYmUgZ29vZCB0byBiaWtlc2hl ZCB0aGUgdWFiaSBmaXJzdCBhIGJpdCBtb3JlIGFuZCBnZXQgYXQKPiBsZWFzdCBzb21lIGFncmVl bWVudCBvbiB0aGF0Lgo+IAoKSW4gdGhlIGZpcnN0IHBoYXNlIEkgaGF2ZSBiZWVuIHVzaW5nIGtt cysrIFsxXS4gQW5kIHdoZW4vaWYgd2UgaGF2ZSBhbgphZ3JlZW1lbnQgYWJvdXQgdGhlIEFQSSwg SSB3aWxsIHB1c2ggbXkgcGF0Y2hlcyB0aGVyZS4KCldpdGggWCwgd2F5bGFuZCwgYW5kIG90aGVy IGNvbXBvc2l0b3JzLCB3ZSB3b3VsZCBpbiB0aGUgZW5kIG5lZWQgc29tZQp2aWRlbyBwbGF5ZXIg c3VwcG9ydGluZyB0aGUgZGlmZmVyZW50IFlDYkNyIGVuY29kaW5ncyBhY2NvcmRpbmcgdG8gdGhl CnZpZGVvIHN0cmVhbS4gVGhpcyBzb3VuZHMgbGlrZSBhIHJlbGF0aXZlbHkgYmlnIHRhc2ssIGJ1 dCBzdXJlbHkgSQp2b2x1bnRlZXIgdG8gYXNzaXN0LCB3aGVuIHdlIGdldCB0aGVyZS4KCkNoZWVy LApKeXJpCgpbMV0gaHR0cHM6Ly9naXRodWIuY29tL3RvbWJhL2ttc3h4LwoKPiBUaGFua3MsIERh bmllbAo+PiAtLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMgICAgICAgIHwgIDI2 ICsrKysrKysKPj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jIHwgICA5ICsr Kwo+PiAgZHJpdmVycy9ncHUvZHJtL2RybV9jb2xvcl9tZ210LmMgICAgfCAxMzYgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKystCj4+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX3BsYW5l LmMgICAgICAgICB8ICAxMCArKysKPj4gIGluY2x1ZGUvZHJtL2RybV9jb2xvcl9tZ210LmggICAg ICAgIHwgIDIzICsrKysrKwo+PiAgaW5jbHVkZS9kcm0vZHJtX3BsYW5lLmggICAgICAgICAgICAg fCAgMTAgKysrCj4+ICBpbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmggICAgICAgICB8ICAxMiAr KysrCj4+ICA3IGZpbGVzIGNoYW5nZWQsIDIyMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygt KQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYyBiL2RyaXZl cnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPj4gaW5kZXggZjg4MTMxOS4uZDE1MTJhYSAxMDA2NDQK Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX2F0b21pYy5jCj4+IEBAIC03MzIsNiArNzMyLDggQEAgaW50IGRybV9hdG9taWNf cGxhbmVfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+PiAgewo+PiAgCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwbGFuZS0+ZGV2Owo+PiAgCXN0cnVjdCBkcm1fbW9kZV9j b25maWcgKmNvbmZpZyA9ICZkZXYtPm1vZGVfY29uZmlnOwo+PiArCWludCByZXQ7Cj4+ICsJYm9v bCBkdW1teTsKPj4gIAo+PiAgCWlmIChwcm9wZXJ0eSA9PSBjb25maWctPnByb3BfZmJfaWQpIHsK Pj4gIAkJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBkcm1fZnJhbWVidWZmZXJfbG9va3Vw KGRldiwgdmFsKTsKPj4gQEAgLTc3NCw2ICs3NzYsMjIgQEAgaW50IGRybV9hdG9taWNfcGxhbmVf c2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+PiAgCQlzdGF0ZS0+cm90YXRp b24gPSB2YWw7Cj4+ICAJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBwbGFuZS0+enBvc19wcm9wZXJ0 eSkgewo+PiAgCQlzdGF0ZS0+enBvcyA9IHZhbDsKPj4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09 IHBsYW5lLT55Y2Jjcl90b19yZ2JfbW9kZV9wcm9wZXJ0eSkgewo+PiArCQlzdGF0ZS0+eWNiY3Jf dG9fcmdiX21vZGUgPSB2YWw7Cj4+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBwbGFuZS0+eWNi Y3JfdG9fcmdiX2NzY19wcm9wZXJ0eSkgewo+PiArCQlyZXQgPSBkcm1fYXRvbWljX3JlcGxhY2Vf cHJvcGVydHlfYmxvYl9mcm9tX2lkKGRldiwKPj4gKwkJCQkmc3RhdGUtPnljYmNyX3RvX3JnYl9j c2MsCj4+ICsJCQkJdmFsLAo+PiArCQkJCXNpemVvZihzdHJ1Y3QgZHJtX3ljYmNyX3RvX3JnYl9j c2MpLAo+PiArCQkJCSZkdW1teSk7Cj4+ICsJCXJldHVybiByZXQ7Cj4+ICsJfSBlbHNlIGlmIChw cm9wZXJ0eSA9PSBwbGFuZS0+eWNiY3JfdG9fcmdiX3ByZW9mZnNldF9wcm9wZXJ0eSkgewo+PiAr CQlyZXQgPSBkcm1fYXRvbWljX3JlcGxhY2VfcHJvcGVydHlfYmxvYl9mcm9tX2lkKGRldiwKPj4g KwkJCQkmc3RhdGUtPnljYmNyX3RvX3JnYl9wcmVvZmZzZXQsCj4+ICsJCQkJdmFsLAo+PiArCQkJ CXNpemVvZihzdHJ1Y3QgZHJtX3ljYmNyX3RvX3JnYl9wcmVvZmZzZXQpLAo+PiArCQkJCSZkdW1t eSk7Cj4+ICsJCXJldHVybiByZXQ7Cj4+ICAJfSBlbHNlIGlmIChwbGFuZS0+ZnVuY3MtPmF0b21p Y19zZXRfcHJvcGVydHkpIHsKPj4gIAkJcmV0dXJuIHBsYW5lLT5mdW5jcy0+YXRvbWljX3NldF9w cm9wZXJ0eShwbGFuZSwgc3RhdGUsCj4+ICAJCQkJcHJvcGVydHksIHZhbCk7Cj4+IEBAIC04MzQs NiArODUyLDE0IEBAIGludCBkcm1fYXRvbWljX3BsYW5lX3NldF9wcm9wZXJ0eShzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSwKPj4gIAkJKnZhbCA9IHN0YXRlLT5yb3RhdGlvbjsKPj4gIAl9IGVsc2Ug aWYgKHByb3BlcnR5ID09IHBsYW5lLT56cG9zX3Byb3BlcnR5KSB7Cj4+ICAJCSp2YWwgPSBzdGF0 ZS0+enBvczsKPj4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IHBsYW5lLT55Y2Jjcl90b19yZ2Jf bW9kZV9wcm9wZXJ0eSkgewo+PiArCQkqdmFsID0gc3RhdGUtPnljYmNyX3RvX3JnYl9tb2RlOwo+ PiArCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gcGxhbmUtPnljYmNyX3RvX3JnYl9jc2NfcHJvcGVy dHkpIHsKPj4gKwkJKnZhbCA9IHN0YXRlLT55Y2Jjcl90b19yZ2JfY3NjID8KPj4gKwkJCXN0YXRl LT55Y2Jjcl90b19yZ2JfY3NjLT5iYXNlLmlkIDogMDsKPj4gKwl9IGVsc2UgaWYgKHByb3BlcnR5 ID09IHBsYW5lLT55Y2Jjcl90b19yZ2JfcHJlb2Zmc2V0X3Byb3BlcnR5KSB7Cj4+ICsJCSp2YWwg PSBzdGF0ZS0+eWNiY3JfdG9fcmdiX3ByZW9mZnNldCA/Cj4+ICsJCQlzdGF0ZS0+eWNiY3JfdG9f cmdiX3ByZW9mZnNldC0+YmFzZS5pZCA6IDA7Cj4+ICAJfSBlbHNlIGlmIChwbGFuZS0+ZnVuY3Mt PmF0b21pY19nZXRfcHJvcGVydHkpIHsKPj4gIAkJcmV0dXJuIHBsYW5lLT5mdW5jcy0+YXRvbWlj X2dldF9wcm9wZXJ0eShwbGFuZSwgc3RhdGUsIHByb3BlcnR5LCB2YWwpOwo+PiAgCX0gZWxzZSB7 Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4+IGluZGV4IGMzOTk0YjQuLjg5ZmQ4 MjYgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4+IEBAIC0zMTk2LDYg KzMxOTYsMTIgQEAgdm9pZCBfX2RybV9hdG9taWNfaGVscGVyX3BsYW5lX2R1cGxpY2F0ZV9zdGF0 ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPj4gIHsKPj4gIAltZW1jcHkoc3RhdGUsIHBsYW5l LT5zdGF0ZSwgc2l6ZW9mKCpzdGF0ZSkpOwo+PiAgCj4+ICsJaWYgKHN0YXRlLT55Y2Jjcl90b19y Z2JfY3NjKQo+PiArCQlkcm1fcHJvcGVydHlfYmxvYl9nZXQoc3RhdGUtPnljYmNyX3RvX3JnYl9j c2MpOwo+PiArCj4+ICsJaWYgKHN0YXRlLT55Y2Jjcl90b19yZ2JfcHJlb2Zmc2V0KQo+PiArCQlk cm1fcHJvcGVydHlfYmxvYl9nZXQoc3RhdGUtPnljYmNyX3RvX3JnYl9wcmVvZmZzZXQpOwo+PiAr Cj4+ICAJaWYgKHN0YXRlLT5mYikKPj4gIAkJZHJtX2ZyYW1lYnVmZmVyX2dldChzdGF0ZS0+ZmIp Owo+PiAgCj4+IEBAIC0zMjM2LDYgKzMyNDIsOSBAQCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICoK Pj4gICAqLwo+PiAgdm9pZCBfX2RybV9hdG9taWNfaGVscGVyX3BsYW5lX2Rlc3Ryb3lfc3RhdGUo c3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpCj4+ICB7Cj4+ICsJZHJtX3Byb3BlcnR5X2Js b2JfcHV0KHN0YXRlLT55Y2Jjcl90b19yZ2JfY3NjKTsKPj4gKwlkcm1fcHJvcGVydHlfYmxvYl9w dXQoc3RhdGUtPnljYmNyX3RvX3JnYl9wcmVvZmZzZXQpOwo+PiArCj4+ICAJaWYgKHN0YXRlLT5m YikKPj4gIAkJZHJtX2ZyYW1lYnVmZmVyX3B1dChzdGF0ZS0+ZmIpOwo+PiAgCj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NvbG9yX21nbXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fY29sb3JfbWdtdC5jCj4+IGluZGV4IGNjMjNiOWEuLmJhZGFkZGQgMTAwNjQ0Cj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9kcm1fY29sb3JfbWdtdC5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fY29sb3JfbWdtdC5jCj4+IEBAIC0yOSw5ICsyOSwxNCBAQAo+PiAgLyoqCj4+ICAgKiBE T0M6IG92ZXJ2aWV3Cj4+ICAgKgo+PiAtICogQ29sb3IgbWFuYWdlbWVudCBvciBjb2xvciBzcGFj ZSBhZGp1c3RtZW50cyBpcyBzdXBwb3J0ZWQgdGhyb3VnaCBhIHNldCBvZiA1Cj4+IC0gKiBwcm9w ZXJ0aWVzIG9uIHRoZSAmZHJtX2NydGMgb2JqZWN0LiBUaGV5IGFyZSBzZXQgdXAgYnkgY2FsbGlu Zwo+PiAtICogZHJtX2NydGNfZW5hYmxlX2NvbG9yX21nbXQoKS4KPj4gKyAqIENvbG9yIG1hbmFn ZW1lbnQgb3IgY29sb3Igc3BhY2UgYWRqdXN0bWVudHMgaW4gQ1JUQ3MgaXMgc3VwcG9ydGVkCj4+ ICsgKiB0aHJvdWdoIGEgc2V0IG9mIDUgcHJvcGVydGllcyBvbiB0aGUgJmRybV9jcnRjIG9iamVj dC4gVGhleSBhcmUgc2V0Cj4+ICsgKiB1cCBieSBjYWxsaW5nIGRybV9jcnRjX2VuYWJsZV9jb2xv cl9tZ210KCkuCj4+ICsgKgo+PiArICogQ29sb3Igc3BhY2UgY29udmVyc2lvbnMgZnJvbSBZQ2JD ciB0byBSR0IgY29sb3Igc3BhY2UgaW4gcGxhbmVzIGlzCj4+ICsgKiBzdXBwb3J0ZXIgdHJvdWdo IDMgb3B0aW9uYWwgcHJvcGVydGllcyBpbiAmZHJtX3BsYW5lIG9iamVjdC4KPj4gKyAqCj4+ICsg KiBUaGUgJmRybV9jcnRjIG9iamVjdCdzIHByb3BlcnRpZXMgYXJlOgo+PiAgICoKPj4gICAqICJE RUdBTU1BX0xVVOKAnToKPj4gICAqCUJsb2IgcHJvcGVydHkgdG8gc2V0IHRoZSBkZWdhbW1hIGxv b2t1cCB0YWJsZSAoTFVUKSBtYXBwaW5nIHBpeGVsIGRhdGEKPj4gQEAgLTg1LDYgKzkwLDI4IEBA Cj4+ICAgKiBkcm1fbW9kZV9jcnRjX3NldF9nYW1tYV9zaXplKCkuIERyaXZlcnMgd2hpY2ggc3Vw cG9ydCBib3RoIHNob3VsZCB1c2UKPj4gICAqIGRybV9hdG9taWNfaGVscGVyX2xlZ2FjeV9nYW1t YV9zZXQoKSB0byBhbGlhcyB0aGUgbGVnYWN5IGdhbW1hIHJhbXAgd2l0aCB0aGUKPj4gICAqICJH QU1NQV9MVVQiIHByb3BlcnR5IGFib3ZlLgo+PiArICoKPj4gKyAqIFRoZSAmZHJtX3BsYW5lIG9i amVjdCdzIHByb3BlcnRpZXMgYXJlOgo+PiArICoKPj4gKyAqICJZQ0JDUl9UT19SR0JfTU9ERSIK Pj4gKyAqIAlPcHRpb25hbCBwbGFuZSBlbnVtIHByb3BlcnR5IHRvIGNvbmZpZ3VyZSBZQ2JDciB0 byBSR0IKPj4gKyAqIAljb252ZXJzaW9uLiBUaGUgcG9zc2libGUgbW9kZXMgaW5jbHVkZSBhIG51 bWJlciBvZiBzdGFuZGFyZAo+PiArICogCWNvbnZlcnNpb25zIGFuZCBhIHBvc3NpYmlsaXR5IHRv IHNlbGVjdCBjdXN0b20gY29udmVyc2lvbgo+PiArICogCW1hdHJpeCBhbmQgcHJlb2Zmc2V0IHZl Y3Rvci4gVGhlIGRyaXZlciBzaG91bGQgc2VsZWN0IHRoZQo+PiArICoJc3VwcG9ydGVkIHN1YnNl dCBvZiBvZiB0aGUgbW9kZXMuCj4+ICsgKgo+PiArICogIllDQkNSX1RPX1JHQl9DU0MiCj4+ICsg KglPcHRpb25hbCBwbGFuZSBwcm9wZXJ0eSBibG9iIHRvIHNldCBZQ2JDciB0byBSR0IgY29udmVy c2lvbgo+PiArICoJbWF0cml4LiBUaGUgYmxvYiBjb250YWlucyBzdHJ1Y3QgZHJtX3ljYmNyX3Rv X3JnYl9jc2Mgd2hpY2ggaXMKPj4gKyAqCWRlZmluZWQgaW4gdWFwaS9kcm0vZHJtX21vZGUuaC4g V2hldGhlciB0aGlzIHByb3BlcnR5IGlzCj4+ICsgKglhY3RpdmUgZGVwZW5kZW50IG9uIFlDQkNS X1RPX1JHQl9NT0RFIHByb3BlcnR5Lgo+PiArICoKPj4gKyAqICJZQ0JDUl9UT19SR0JfUFJFT0ZG U0VUIgo+PiArICoJT3B0aW9uYWwgcGxhbmUgcHJvcGVydHkgYmxvYiB0byBjb25maWd1cmUgWUNi Q3Igb2Zmc2V0IGJlZm9yZQo+PiArICoJWUNiQ3IgdG8gUkdCIENTQyBpcyBhcHBsaWVkLiBUaGUg YmxvYiBjb250YWlucyBzdHJ1Y3QKPj4gKyAqCWRybV95Y2Jjcl90b19yZ2JfcHJlb2Zmc2V0IHdo aWNoIGlzIGRlZmluZWQgaW4KPj4gKyAqCXVhcGkvZHJtL2RybV9tb2RlLmguIFdoZXRoZXIgdGhp cyBwcm9wZXJ0eSBpcyBhY3RpdmUgZGVwZW5kZW50Cj4+ICsgKglvbiBZQ0JDUl9UT19SR0JfTU9E RSBwcm9wZXJ0eS4KPj4gICAqLwo+PiAgCj4+ICAvKioKPj4gQEAgLTMzMCwzICszNTcsMTA2IEBA IGludCBkcm1fbW9kZV9nYW1tYV9nZXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4g IAlkcm1fbW9kZXNldF91bmxvY2tfYWxsKGRldik7Cj4+ICAJcmV0dXJuIHJldDsKPj4gIH0KPj4g Kwo+PiArc3RhdGljIGNoYXIgKnljYmNyX3RvX3JnYl9tb2RlX25hbWVbXSA9IHsKPj4gKwlbRFJN X1BMQU5FX1lDQkNSX0JUNjAxX0xJTV9UT19SR0JfQlQ2MDFfRlVMTF0gPQo+PiArCQkiWUNiQ3Ig QlQuNjAxIGxpbWl0ZWQgcmFuZ2UgVE8gUkdCIEJULjYwMSBmdWxsIHJhbmdlIiwKPj4gKwlbRFJN X1BMQU5FX1lDQkNSX0JUNjAxX0ZVTExfVE9fUkdCX0JUNjAxX0ZVTExdID0KPj4gKwkJIllDYkNy IEJULjYwMSBmdWxsIHJhbmdlIFRPIFJHQiBCVC42MDEgZnVsbCByYW5nZSIsCj4+ICsJW0RSTV9Q TEFORV9ZQ0JDUl9CVDcwOV9MSU1fVE9fUkdCX0JUNzA5X0ZVTExdID0KPj4gKwkJIllDYkNyIEJU LjcwOSBsaW1pdGVkIHJhbmdlIFRPIFJHQiBCVC43MDkgZnVsbCByYW5nZSIsCj4+ICsJW0RSTV9Q TEFORV9ZQ0JDUl9CVDIwMjBfTElNX1RPX1JHQl9CVDIwMjBfRlVMTF0gPQo+PiArCQkiWUNiQ3Ig QlQuMjAyMCBsaW1pdGVkIHJhbmdlIFRPIFJHQiBCVC4yMDIwIGZ1bGwgcmFuZ2UiLAo+PiArCVtE Uk1fUExBTkVfWUNCQ1JfQlQ2MDFfTElNX1RPX1JHQl9CVDcwOV9GVUxMXSA9Cj4+ICsJCSJZQ2JD ciBCVC42MDEgbGltaXRlZCByYW5nZSBUTyBSR0IgQlQuNzA5IGZ1bGwgcmFuZ2UiLAo+PiArCVtE Uk1fUExBTkVfWUNCQ1JfQlQ2MDFfTElNX1RPX1JHQl9CVDIwMjBfRlVMTF0gPQo+PiArCQkiWUNi Q3IgQlQuNjAxIGxpbWl0ZWQgcmFuZ2UgVE8gUkdCIEJULjIwMjAgZnVsbCByYW5nZSIsCj4+ICsJ W0RSTV9QTEFORV9ZQ0JDUl9CVDcwOV9MSU1fVE9fUkdCX0JUNjAxX0ZVTExdID0KPj4gKwkJIllD YkNyIEJULjcwOSBsaW1pdGVkIHJhbmdlIFRPIFJHQiBCVC42MDEgZnVsbCByYW5nZSIsCj4+ICsJ W0RSTV9QTEFORV9ZQ0JDUl9CVDcwOV9MSU1fVE9fUkdCX0JUMjAyMF9GVUxMXSA9Cj4+ICsJCSJZ Q2JDciBCVC43MDkgbGltaXRlZCByYW5nZSBUTyBSR0IgQlQuMjAyMCBmdWxsIHJhbmdlIiwKPj4g KwlbRFJNX1BMQU5FX1lDQkNSX0JUMjAyMF9MSU1fVE9fUkdCX0JUNjAxX0ZVTExdID0KPj4gKwkJ IllDYkNyIEJULjIwMjAgbGltaXRlZCByYW5nZSBUTyBSR0IgQlQuNjAxIGZ1bGwgcmFuZ2UiLAo+ PiArCVtEUk1fUExBTkVfWUNCQ1JfQlQyMDIwX0xJTV9UT19SR0JfQlQ3MDlfRlVMTF0gPQo+PiAr CQkiWUNiQ3IgQlQuMjAyMCBsaW1pdGVkIHJhbmdlIFRPIFJHQiBCVC43MDkgZnVsbCByYW5nZSIs Cj4+ICsJW0RSTV9QTEFORV9ZQ0JDUl9UT19SR0JfQ1NDX0xJTV9QUkVPRkZTRVRdID0KPj4gKwkJ IllDYkNyIFRPIFJHQiBDU0MgbGltaXRlZCByYW5nZSBwcmVvZmZzZXQiLAo+PiArCVtEUk1fUExB TkVfWUNCQ1JfVE9fUkdCX0NTQ19GVUxMX1BSRU9GRlNFVF0gPQo+PiArCQkiWUNiQ3IgVE8gUkdC IENTQyBmdWxsIHJhbmdlIHByZW9mZnNldCIsCj4+ICsJW0RSTV9QTEFORV9ZQ0JDUl9UT19SR0Jf Q1NDX1BSRU9GRlNFVF9WRUNUT1JdID0KPj4gKwkJIllDQkNSIFRPIFJHQiBDU0MgcHJlb2Zmc2V0 IHZlY3RvciIsCj4+ICt9Owo+PiArCj4+ICsvKioKPj4gKyAqIGRybV9wbGFuZV9jcmVhdGVfeWNi Y3JfdG9fcmdiX3Byb3BlcnRpZXMgLSB5Y2JjciB0byByZ2IgcmVsYXRlZCBwcm9wZXJ0aWVzCj4+ ICsgKiBAZW51bV9saXN0OiBkcm1fcHJvcF9lbnVtX2xpc3QgYXJyYXkgb2Ygc3VwcG9ydGVkIG1v ZGVzIHdpdGhvdXQgbmFtZXMKPj4gKyAqIEBlbnVtX2xpc3RfbGVuOiBsZW5ndGggb2YgZW51bV9s aXN0IGFycmF5Cj4+ICsgKiBAZGVmYXVsdF9tb2RlOiBkZWZhdWx0IGNzYyBtb2RlCj4+ICsgKgo+ PiArICogQ3JlYXRlIGFuZCBhdHRhY2ggcGxhbmUgc3BlY2lmaWMgWUNiQ3IgdG8gUkdCIGNvbnZl cnNpb24gcmVsYXRlZAo+PiArICogcHJvcGVydGllcyB0byB0byB0aGUgZHJtX3BsYW5lIG9iamVj dC4gVGhlIFlDQkNSX1RPX1JHQl9NT0RFIHByb3BldHkKPj4gKyAqIGNyZWF0ZWQgYW5kIGFuIHRo ZSBzdXBwb3J0ZWQgbW9kZXMgc2hvdWxkIGJlIHByb3ZpZGVkIHRoZSBlbnVtX2xpc3QKPj4gKyAq IHBhcmFtZXRlci4gWUNCQ1JfVE9fUkdCX0NTQyBhbmQgWUNCQ1JfVE9fUkdCX1BSRU9GRlNFVCBw cm9wZXJ0aWVzIGFyZQo+PiArICogY3JlYXRlZCBiYXNlZCBvbiBzdXBwb3J0ZWQgY29udmVyc2lv biBtb2Rlcy4gVGhlIGVudW1fbGlzdCBwYXJhbWV0ZXIKPj4gKyAqIHNob3VsZCBub3QgY29udGFp biB0aGUgZW51bSBuYW1lcywgYmVjYXVzZSB0aGUgc3RhbmRhcmQgbmFtZXMgYXJlCj4+ICsgKiBh ZGRlZCBieSB0aGlzIGZ1bmN0aW9uLgo+PiArICovCj4+ICtpbnQgZHJtX3BsYW5lX2NyZWF0ZV95 Y2Jjcl90b19yZ2JfcHJvcGVydGllcyhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPj4gKwkJCXN0 cnVjdCBkcm1fcHJvcF9lbnVtX2xpc3QgKmVudW1fbGlzdCwKPj4gKwkJCXVuc2lnbmVkIGludCBl bnVtX2xpc3RfbGVuLAo+PiArCQkJZW51bSBkcm1fcGxhbmVfeWNiY3JfdG9fcmdiX21vZGUgZGVm YXVsdF9tb2RlKQo+PiArewo+PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwbGFuZS0+ZGV2 Owo+PiArCXN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3A7Cj4+ICsJYm9vbCB5Y2Jjcl90b19yZ2Jf Y3NjX2NyZWF0ZSA9IGZhbHNlOwo+PiArCWJvb2wgeWNiY3JfdG9fcmdiX3ByZW9mZnNldF9jcmVh dGUgPSBmYWxzZTsKPj4gKwlpbnQgaTsKPj4gKwo+PiArCWlmIChXQVJOX09OKHBsYW5lLT55Y2Jj cl90b19yZ2JfbW9kZV9wcm9wZXJ0eSAhPSBOVUxMKSkKPj4gKwkJcmV0dXJuIC1FRVhJU1Q7Cj4+ ICsKPj4gKwlmb3IgKGkgPSAwOyBpIDwgZW51bV9saXN0X2xlbjsgaSsrKSB7Cj4+ICsJCWVudW0g ZHJtX3BsYW5lX3ljYmNyX3RvX3JnYl9tb2RlIG1vZGUgPSBlbnVtX2xpc3RbaV0udHlwZTsKPj4g Kwo+PiArCQllbnVtX2xpc3RbaV0ubmFtZSA9IHljYmNyX3RvX3JnYl9tb2RlX25hbWVbbW9kZV07 Cj4+ICsKPj4gKwkJaWYgKG1vZGUgPT0gRFJNX1BMQU5FX1lDQkNSX1RPX1JHQl9DU0NfTElNX1BS RU9GRlNFVCB8fAo+PiArCQkgICAgbW9kZSA9PSBEUk1fUExBTkVfWUNCQ1JfVE9fUkdCX0NTQ19G VUxMX1BSRU9GRlNFVCkKPj4gKwkJCXljYmNyX3RvX3JnYl9jc2NfY3JlYXRlID0gdHJ1ZTsKPj4g Kwo+PiArCQlpZiAobW9kZSA9PSBEUk1fUExBTkVfWUNCQ1JfVE9fUkdCX0NTQ19QUkVPRkZTRVRf VkVDVE9SKSB7Cj4+ICsJCQl5Y2Jjcl90b19yZ2JfY3NjX2NyZWF0ZSA9IHRydWU7Cj4+ICsJCQl5 Y2Jjcl90b19yZ2JfcHJlb2Zmc2V0X2NyZWF0ZSA9IHRydWU7Cj4+ICsJCX0KPj4gKwl9Cj4+ICsK Pj4gKwlwcm9wID0gZHJtX3Byb3BlcnR5X2NyZWF0ZV9lbnVtKGRldiwgRFJNX01PREVfUFJPUF9B VE9NSUMsCj4+ICsJCQkJCSJZQ0JDUl9UT19SR0JfTU9ERSIsCj4+ICsJCQkJCWVudW1fbGlzdCwg ZW51bV9saXN0X2xlbik7Cj4+ICsJaWYgKCFwcm9wKQo+PiArCQlyZXR1cm4gLUVOT01FTTsKPj4g KwlwbGFuZS0+eWNiY3JfdG9fcmdiX21vZGVfcHJvcGVydHkgPSBwcm9wOwo+PiArCWRybV9vYmpl Y3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFuZS0+YmFzZSwgcHJvcCwgZGVmYXVsdF9tb2RlKTsKPj4g Kwo+PiArCWlmICh5Y2Jjcl90b19yZ2JfY3NjX2NyZWF0ZSkgewo+PiArCQlwcm9wID0gZHJtX3By b3BlcnR5X2NyZWF0ZShkZXYsIERSTV9NT0RFX1BST1BfQVRPTUlDIHwKPj4gKwkJCQkJICAgRFJN X01PREVfUFJPUF9CTE9CLAo+PiArCQkJCQkgICAiWUNCQ1JfVE9fUkdCX0NTQyIsIDApOwo+PiAr CQlpZiAoIXByb3ApCj4+ICsJCQlyZXR1cm4gLUVOT01FTTsKPj4gKwkJcGxhbmUtPnljYmNyX3Rv X3JnYl9jc2NfcHJvcGVydHkgPSBwcm9wOwo+PiArCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0 eSgmcGxhbmUtPmJhc2UsIHByb3AsIDApOwo+PiArCX0KPj4gKwo+PiArCWlmICh5Y2Jjcl90b19y Z2JfcHJlb2Zmc2V0X2NyZWF0ZSkgewo+PiArCQlwcm9wID0gZHJtX3Byb3BlcnR5X2NyZWF0ZShk ZXYsIERSTV9NT0RFX1BST1BfQVRPTUlDIHwKPj4gKwkJCQkJICAgRFJNX01PREVfUFJPUF9CTE9C LAo+PiArCQkJCQkgICAiWUNCQ1JfVE9fUkdCX1BSRU9GRlNFVCIsIDApOwo+PiArCQlpZiAoIXBy b3ApCj4+ICsJCQlyZXR1cm4gLUVOT01FTTsKPj4gKwkJcGxhbmUtPnljYmNyX3RvX3JnYl9wcmVv ZmZzZXRfcHJvcGVydHkgPSBwcm9wOwo+PiArCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgm cGxhbmUtPmJhc2UsIHByb3AsIDApOwo+PiArCX0KPj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9wbGFuZS5jIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9wbGFuZS5jCj4+IGluZGV4IGJjNzFhYTIuLjRjN2U4MjcgMTAwNjQ0Cj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9kcm1fcGxhbmUuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X3BsYW5lLmMKPj4gQEAgLTI0NCw2ICsyNDQsMTYgQEAgdm9pZCBkcm1fcGxhbmVfY2xlYW51cChz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKPj4gIAo+PiAgCWtmcmVlKHBsYW5lLT5uYW1lKTsKPj4g IAo+PiArCWlmIChwbGFuZS0+eWNiY3JfdG9fcmdiX21vZGVfcHJvcGVydHkpCj4+ICsJCWRybV9w cm9wZXJ0eV9kZXN0cm95KGRldiwgcGxhbmUtPnljYmNyX3RvX3JnYl9tb2RlX3Byb3BlcnR5KTsK Pj4gKwo+PiArCWlmIChwbGFuZS0+eWNiY3JfdG9fcmdiX2NzY19wcm9wZXJ0eSkKPj4gKwkJZHJt X3Byb3BlcnR5X2Rlc3Ryb3koZGV2LCBwbGFuZS0+eWNiY3JfdG9fcmdiX2NzY19wcm9wZXJ0eSk7 Cj4+ICsKPj4gKwlpZiAocGxhbmUtPnljYmNyX3RvX3JnYl9wcmVvZmZzZXRfcHJvcGVydHkpCj4+ ICsJCWRybV9wcm9wZXJ0eV9kZXN0cm95KGRldiwKPj4gKwkJCQkgICAgIHBsYW5lLT55Y2Jjcl90 b19yZ2JfcHJlb2Zmc2V0X3Byb3BlcnR5KTsKPj4gKwo+PiAgCW1lbXNldChwbGFuZSwgMCwgc2l6 ZW9mKCpwbGFuZSkpOwo+PiAgfQo+PiAgRVhQT1JUX1NZTUJPTChkcm1fcGxhbmVfY2xlYW51cCk7 Cj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fY29sb3JfbWdtdC5oIGIvaW5jbHVkZS9k cm0vZHJtX2NvbG9yX21nbXQuaAo+PiBpbmRleCAwM2E1OWNiLi5hMjBiM2ZmIDEwMDY0NAo+PiAt LS0gYS9pbmNsdWRlL2RybS9kcm1fY29sb3JfbWdtdC5oCj4+ICsrKyBiL2luY2x1ZGUvZHJtL2Ry bV9jb2xvcl9tZ210LmgKPj4gQEAgLTI2LDYgKzI2LDggQEAKPj4gICNpbmNsdWRlIDxsaW51eC9j dHlwZS5oPgo+PiAgCj4+ICBzdHJ1Y3QgZHJtX2NydGM7Cj4+ICtzdHJ1Y3QgZHJtX3BsYW5lOwo+ PiArc3RydWN0IGRybV9wcm9wX2VudW1fbGlzdDsKPj4gIAo+PiAgdWludDMyX3QgZHJtX2NvbG9y X2x1dF9leHRyYWN0KHVpbnQzMl90IHVzZXJfaW5wdXQsIHVpbnQzMl90IGJpdF9wcmVjaXNpb24p Owo+PiAgCj4+IEBAIC0zNyw0ICszOSwyNSBAQCB2b2lkIGRybV9jcnRjX2VuYWJsZV9jb2xvcl9t Z210KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPj4gIGludCBkcm1fbW9kZV9jcnRjX3NldF9nYW1t YV9zaXplKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPj4gIAkJCQkgaW50IGdhbW1hX3NpemUpOwo+ PiAgCj4+ICtlbnVtIGRybV9wbGFuZV95Y2Jjcl90b19yZ2JfbW9kZSB7Cj4+ICsJRFJNX1BMQU5F X1lDQkNSX0JUNjAxX0xJTV9UT19SR0JfQlQ2MDFfRlVMTCA9IDAsCj4+ICsJRFJNX1BMQU5FX1lD QkNSX0JUNjAxX0ZVTExfVE9fUkdCX0JUNjAxX0ZVTEwsCj4+ICsJRFJNX1BMQU5FX1lDQkNSX0JU NzA5X0xJTV9UT19SR0JfQlQ3MDlfRlVMTCwKPj4gKwlEUk1fUExBTkVfWUNCQ1JfQlQyMDIwX0xJ TV9UT19SR0JfQlQyMDIwX0ZVTEwsCj4+ICsJRFJNX1BMQU5FX1lDQkNSX0JUNjAxX0xJTV9UT19S R0JfQlQ3MDlfRlVMTCwKPj4gKwlEUk1fUExBTkVfWUNCQ1JfQlQ2MDFfTElNX1RPX1JHQl9CVDIw MjBfRlVMTCwKPj4gKwlEUk1fUExBTkVfWUNCQ1JfQlQ3MDlfTElNX1RPX1JHQl9CVDYwMV9GVUxM LAo+PiArCURSTV9QTEFORV9ZQ0JDUl9CVDcwOV9MSU1fVE9fUkdCX0JUMjAyMF9GVUxMLAo+PiAr CURSTV9QTEFORV9ZQ0JDUl9CVDIwMjBfTElNX1RPX1JHQl9CVDYwMV9GVUxMLAo+PiArCURSTV9Q TEFORV9ZQ0JDUl9CVDIwMjBfTElNX1RPX1JHQl9CVDcwOV9GVUxMLAo+PiArCURSTV9QTEFORV9Z Q0JDUl9UT19SR0JfQ1NDX0xJTV9QUkVPRkZTRVQsCj4+ICsJRFJNX1BMQU5FX1lDQkNSX1RPX1JH Ql9DU0NfRlVMTF9QUkVPRkZTRVQsCj4+ICsJRFJNX1BMQU5FX1lDQkNSX1RPX1JHQl9DU0NfUFJF T0ZGU0VUX1ZFQ1RPUiwKPj4gK307Cj4+ICsKPj4gK2ludCBkcm1fcGxhbmVfY3JlYXRlX3ljYmNy X3RvX3JnYl9wcm9wZXJ0aWVzKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+PiArCQkJc3RydWN0 IGRybV9wcm9wX2VudW1fbGlzdCAqZW51bV9saXN0LAo+PiArCQkJdW5zaWduZWQgaW50IGVudW1f bGlzdF9sZW4sCj4+ICsJCQllbnVtIGRybV9wbGFuZV95Y2Jjcl90b19yZ2JfbW9kZSBkZWZhdWx0 X21vZGUpOwo+PiArCj4+ICAjZW5kaWYKPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9w bGFuZS5oIGIvaW5jbHVkZS9kcm0vZHJtX3BsYW5lLmgKPj4gaW5kZXggOWFiM2U3MC4uNDFkY2Rl MiAxMDA2NDQKPj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX3BsYW5lLmgKPj4gKysrIGIvaW5jbHVk ZS9kcm0vZHJtX3BsYW5lLmgKPj4gQEAgLTI2LDYgKzI2LDcgQEAKPj4gICNpbmNsdWRlIDxsaW51 eC9saXN0Lmg+Cj4+ICAjaW5jbHVkZSA8bGludXgvY3R5cGUuaD4KPj4gICNpbmNsdWRlIDxkcm0v ZHJtX21vZGVfb2JqZWN0Lmg+Cj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9jb2xvcl9tZ210Lmg+Cj4+ ICAKPj4gIHN0cnVjdCBkcm1fY3J0YzsKPj4gIHN0cnVjdCBkcm1fcHJpbnRlcjsKPj4gQEAgLTEx Miw2ICsxMTMsMTEgQEAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSB7Cj4+ICAJdW5zaWduZWQgaW50 IHpwb3M7Cj4+ICAJdW5zaWduZWQgaW50IG5vcm1hbGl6ZWRfenBvczsKPj4gIAo+PiArCS8qIFlD YkNyIHRvIFJHQiBjb252ZXJzaW9uICovCj4+ICsJZW51bSBkcm1fcGxhbmVfeWNiY3JfdG9fcmdi X21vZGUgeWNiY3JfdG9fcmdiX21vZGU7Cj4+ICsJc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICp5 Y2Jjcl90b19yZ2JfY3NjOwo+PiArCXN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqeWNiY3JfdG9f cmdiX3ByZW9mZnNldDsKPj4gKwo+PiAgCS8qIENsaXBwZWQgY29vcmRpbmF0ZXMgKi8KPj4gIAlz dHJ1Y3QgZHJtX3JlY3Qgc3JjLCBkc3Q7Cj4+ICAKPj4gQEAgLTUyMyw2ICs1MjksMTAgQEAgc3Ry dWN0IGRybV9wbGFuZSB7Cj4+ICAKPj4gIAlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICp6cG9zX3Byb3Bl cnR5Owo+PiAgCXN0cnVjdCBkcm1fcHJvcGVydHkgKnJvdGF0aW9uX3Byb3BlcnR5Owo+PiArCj4+ ICsJc3RydWN0IGRybV9wcm9wZXJ0eSAqeWNiY3JfdG9fcmdiX21vZGVfcHJvcGVydHk7Cj4+ICsJ c3RydWN0IGRybV9wcm9wZXJ0eSAqeWNiY3JfdG9fcmdiX2NzY19wcm9wZXJ0eTsKPj4gKwlzdHJ1 Y3QgZHJtX3Byb3BlcnR5ICp5Y2Jjcl90b19yZ2JfcHJlb2Zmc2V0X3Byb3BlcnR5Owo+PiAgfTsK Pj4gIAo+PiAgI2RlZmluZSBvYmpfdG9fcGxhbmUoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBk cm1fcGxhbmUsIGJhc2UpCj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2Rl LmggYi9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgKPj4gaW5kZXggOGM2N2ZjMC4uMjdlMGJl ZSAxMDA2NDQKPj4gLS0tIGEvaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oCj4+ICsrKyBiL2lu Y2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaAo+PiBAQCAtNTQzLDYgKzU0MywxOCBAQCBzdHJ1Y3Qg ZHJtX2NvbG9yX2x1dCB7Cj4+ICAJX191MTYgcmVzZXJ2ZWQ7Cj4+ICB9Owo+PiAgCj4+ICtzdHJ1 Y3QgZHJtX3ljYmNyX3RvX3JnYl9jc2Mgewo+PiArCS8qIENvbnZlcnNpb24gbWF0cml4IGluIDIt Y29tcGxlbWVudCBzMzIuMzIgZm9ybWF0LiAqLwo+PiArCV9fczY0IHJ5LCByY2IsIHJjcjsKPj4g KwlfX3M2NCBneSwgZ2NiLCBnY3I7Cj4+ICsJX19zNjQgYnksIGJjYiwgYmNyOwo+PiArfTsKPj4g Kwo+PiArc3RydWN0IGRybV95Y2Jjcl90b19yZ2JfcHJlb2Zmc2V0IHsKPj4gKwkvKiBPZmZzZXQg dmVjdG9yIGluIDItY29tcGxlbWVudCBzLjMyIGZvcm1hdC4gKi8KPj4gKwlfX3MzMiB5LCBjYiwg Y3I7Cj4+ICt9Owo+PiArCj4+ICAjZGVmaW5lIERSTV9NT0RFX1BBR0VfRkxJUF9FVkVOVCAweDAx Cj4+ICAjZGVmaW5lIERSTV9NT0RFX1BBR0VfRkxJUF9BU1lOQyAweDAyCj4+ICAjZGVmaW5lIERS TV9NT0RFX1BBR0VfRkxJUF9UQVJHRVRfQUJTT0xVVEUgMHg0Cj4+IC0tIAo+PiAxLjkuMQo+Pgo+ IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==