From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH RFC 3/6] drm: Plane YCbCr to RGB conversion related properties Date: Fri, 21 Apr 2017 14:17:56 +0300 Message-ID: <20170421111756.GI30290@intel.com> References: <3f25532ae9b05c34996fc9657261b204c627e232.1492768073.git.jsarha@ti.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 932726E459 for ; Fri, 21 Apr 2017 11:18:01 +0000 (UTC) Content-Disposition: inline In-Reply-To: <3f25532ae9b05c34996fc9657261b204c627e232.1492768073.git.jsarha@ti.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jyri Sarha 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 T24gRnJpLCBBcHIgMjEsIDIwMTcgYXQgMTI6NTE6MTRQTSArMDMwMCwgSnlyaSBTYXJoYSB3cm90 ZToKPiBBZGQgc3RhbmRhcmQgcHJvcGVydGllcyB0byBjb250cm9sIFlDYkNyIHRvIFJHQiBjb252 ZXJzaW9uIGluIERSTQo+IHBsYW5lcy4gVGhlIGNyZWF0ZWQgcHJvcGVydGllcyBhcmUgc3RvcmVk IHRvIGRybV9wbGFuZSBvYmplY3QgdG8gYWxsb3cKPiBkaWZmZXJlbnQgc2V0IG9mIHN1cHBvcnRl ZCBjb252ZXJzaW9uIG1vZGVzIGZvciBkaWZmZXJlbnQgcGxhbmVzIG9uCj4gdGhlIGRldmljZS4g Rm9yIHNpbXBsaWNpdHkgdGhlIHJlbGF0ZWQgcHJvcGVydHkgYmxvYnMgZm9yIENTQyBtYXRyaXgK PiBhbmQgWUNiQ3IgcHJlb2Zmc2V0cyBhcmUgYWxzbyBzdG9yZWQgaW4gdGhlIHNhbWUgcGxhY2Uu IFRoZSBibG9iCj4gY29udGVudHMgYXJlIGRlZmluZWQgaW4gdGhlIHVhcGkvZHJtL2RybV9tb2Rl LmggaGVhZGVyLgo+IAo+IFNpZ25lZC1vZmYtYnk6IEp5cmkgU2FyaGEgPGpzYXJoYUB0aS5jb20+ Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMgICAgICAgIHwgIDI2ICsrKysr KysKPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgfCAgIDkgKysrCj4gIGRy aXZlcnMvZ3B1L2RybS9kcm1fY29sb3JfbWdtdC5jICAgIHwgMTM2ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX3BsYW5lLmMgICAgICAg ICB8ICAxMCArKysKPiAgaW5jbHVkZS9kcm0vZHJtX2NvbG9yX21nbXQuaCAgICAgICAgfCAgMjMg KysrKysrCj4gIGluY2x1ZGUvZHJtL2RybV9wbGFuZS5oICAgICAgICAgICAgIHwgIDEwICsrKwo+ ICBpbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmggICAgICAgICB8ICAxMiArKysrCj4gIDcgZmls ZXMgY2hhbmdlZCwgMjIzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X2F0b21pYy5jCj4gaW5kZXggZjg4MTMxOS4uZDE1MTJhYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vZHJtX2F0b21pYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMu Ywo+IEBAIC03MzIsNiArNzMyLDggQEAgaW50IGRybV9hdG9taWNfcGxhbmVfc2V0X3Byb3BlcnR5 KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gcGxhbmUtPmRldjsKPiAgCXN0cnVjdCBkcm1fbW9kZV9jb25maWcgKmNvbmZpZyA9ICZkZXYt Pm1vZGVfY29uZmlnOwo+ICsJaW50IHJldDsKPiArCWJvb2wgZHVtbXk7Cj4gIAo+ICAJaWYgKHBy b3BlcnR5ID09IGNvbmZpZy0+cHJvcF9mYl9pZCkgewo+ICAJCXN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiID0gZHJtX2ZyYW1lYnVmZmVyX2xvb2t1cChkZXYsIHZhbCk7Cj4gQEAgLTc3NCw2ICs3 NzYsMjIgQEAgaW50IGRybV9hdG9taWNfcGxhbmVfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lLAo+ICAJCXN0YXRlLT5yb3RhdGlvbiA9IHZhbDsKPiAgCX0gZWxzZSBpZiAocHJv cGVydHkgPT0gcGxhbmUtPnpwb3NfcHJvcGVydHkpIHsKPiAgCQlzdGF0ZS0+enBvcyA9IHZhbDsK PiArCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gcGxhbmUtPnljYmNyX3RvX3JnYl9tb2RlX3Byb3Bl cnR5KSB7Cj4gKwkJc3RhdGUtPnljYmNyX3RvX3JnYl9tb2RlID0gdmFsOwo+ICsJfSBlbHNlIGlm IChwcm9wZXJ0eSA9PSBwbGFuZS0+eWNiY3JfdG9fcmdiX2NzY19wcm9wZXJ0eSkgewo+ICsJCXJl dCA9IGRybV9hdG9taWNfcmVwbGFjZV9wcm9wZXJ0eV9ibG9iX2Zyb21faWQoZGV2LAo+ICsJCQkJ JnN0YXRlLT55Y2Jjcl90b19yZ2JfY3NjLAo+ICsJCQkJdmFsLAo+ICsJCQkJc2l6ZW9mKHN0cnVj dCBkcm1feWNiY3JfdG9fcmdiX2NzYyksCj4gKwkJCQkmZHVtbXkpOwo+ICsJCXJldHVybiByZXQ7 Cj4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IHBsYW5lLT55Y2Jjcl90b19yZ2JfcHJlb2Zmc2V0 X3Byb3BlcnR5KSB7Cj4gKwkJcmV0ID0gZHJtX2F0b21pY19yZXBsYWNlX3Byb3BlcnR5X2Jsb2Jf ZnJvbV9pZChkZXYsCj4gKwkJCQkmc3RhdGUtPnljYmNyX3RvX3JnYl9wcmVvZmZzZXQsCj4gKwkJ CQl2YWwsCj4gKwkJCQlzaXplb2Yoc3RydWN0IGRybV95Y2Jjcl90b19yZ2JfcHJlb2Zmc2V0KSwK PiArCQkJCSZkdW1teSk7Cj4gKwkJcmV0dXJuIHJldDsKPiAgCX0gZWxzZSBpZiAocGxhbmUtPmZ1 bmNzLT5hdG9taWNfc2V0X3Byb3BlcnR5KSB7Cj4gIAkJcmV0dXJuIHBsYW5lLT5mdW5jcy0+YXRv bWljX3NldF9wcm9wZXJ0eShwbGFuZSwgc3RhdGUsCj4gIAkJCQlwcm9wZXJ0eSwgdmFsKTsKPiBA QCAtODM0LDYgKzg1MiwxNCBAQCBpbnQgZHJtX2F0b21pY19wbGFuZV9zZXRfcHJvcGVydHkoc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJKnZhbCA9IHN0YXRlLT5yb3RhdGlvbjsKPiAgCX0g ZWxzZSBpZiAocHJvcGVydHkgPT0gcGxhbmUtPnpwb3NfcHJvcGVydHkpIHsKPiAgCQkqdmFsID0g c3RhdGUtPnpwb3M7Cj4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IHBsYW5lLT55Y2Jjcl90b19y Z2JfbW9kZV9wcm9wZXJ0eSkgewo+ICsJCSp2YWwgPSBzdGF0ZS0+eWNiY3JfdG9fcmdiX21vZGU7 Cj4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IHBsYW5lLT55Y2Jjcl90b19yZ2JfY3NjX3Byb3Bl cnR5KSB7Cj4gKwkJKnZhbCA9IHN0YXRlLT55Y2Jjcl90b19yZ2JfY3NjID8KPiArCQkJc3RhdGUt PnljYmNyX3RvX3JnYl9jc2MtPmJhc2UuaWQgOiAwOwo+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9 PSBwbGFuZS0+eWNiY3JfdG9fcmdiX3ByZW9mZnNldF9wcm9wZXJ0eSkgewo+ICsJCSp2YWwgPSBz dGF0ZS0+eWNiY3JfdG9fcmdiX3ByZW9mZnNldCA/Cj4gKwkJCXN0YXRlLT55Y2Jjcl90b19yZ2Jf cHJlb2Zmc2V0LT5iYXNlLmlkIDogMDsKPiAgCX0gZWxzZSBpZiAocGxhbmUtPmZ1bmNzLT5hdG9t aWNfZ2V0X3Byb3BlcnR5KSB7Cj4gIAkJcmV0dXJuIHBsYW5lLT5mdW5jcy0+YXRvbWljX2dldF9w cm9wZXJ0eShwbGFuZSwgc3RhdGUsIHByb3BlcnR5LCB2YWwpOwo+ICAJfSBlbHNlIHsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+IGluZGV4IGMzOTk0YjQuLjg5ZmQ4MjYgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+IEBAIC0zMTk2LDYgKzMxOTYsMTIgQEAg dm9pZCBfX2RybV9hdG9taWNfaGVscGVyX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSwKPiAgewo+ICAJbWVtY3B5KHN0YXRlLCBwbGFuZS0+c3RhdGUsIHNpemVv Zigqc3RhdGUpKTsKPiAgCj4gKwlpZiAoc3RhdGUtPnljYmNyX3RvX3JnYl9jc2MpCj4gKwkJZHJt X3Byb3BlcnR5X2Jsb2JfZ2V0KHN0YXRlLT55Y2Jjcl90b19yZ2JfY3NjKTsKPiArCj4gKwlpZiAo c3RhdGUtPnljYmNyX3RvX3JnYl9wcmVvZmZzZXQpCj4gKwkJZHJtX3Byb3BlcnR5X2Jsb2JfZ2V0 KHN0YXRlLT55Y2Jjcl90b19yZ2JfcHJlb2Zmc2V0KTsKPiArCj4gIAlpZiAoc3RhdGUtPmZiKQo+ ICAJCWRybV9mcmFtZWJ1ZmZlcl9nZXQoc3RhdGUtPmZiKTsKPiAgCj4gQEAgLTMyMzYsNiArMzI0 Miw5IEBAIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKgo+ICAgKi8KPiAgdm9pZCBfX2RybV9hdG9t aWNfaGVscGVyX3BsYW5lX2Rlc3Ryb3lfc3RhdGUoc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3Rh dGUpCj4gIHsKPiArCWRybV9wcm9wZXJ0eV9ibG9iX3B1dChzdGF0ZS0+eWNiY3JfdG9fcmdiX2Nz Yyk7Cj4gKwlkcm1fcHJvcGVydHlfYmxvYl9wdXQoc3RhdGUtPnljYmNyX3RvX3JnYl9wcmVvZmZz ZXQpOwo+ICsKPiAgCWlmIChzdGF0ZS0+ZmIpCj4gIAkJZHJtX2ZyYW1lYnVmZmVyX3B1dChzdGF0 ZS0+ZmIpOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jb2xvcl9tZ210 LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NvbG9yX21nbXQuYwo+IGluZGV4IGNjMjNiOWEuLmJh ZGFkZGQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9jb2xvcl9tZ210LmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NvbG9yX21nbXQuYwo+IEBAIC0yOSw5ICsyOSwxNCBA QAo+ICAvKioKPiAgICogRE9DOiBvdmVydmlldwo+ICAgKgo+IC0gKiBDb2xvciBtYW5hZ2VtZW50 IG9yIGNvbG9yIHNwYWNlIGFkanVzdG1lbnRzIGlzIHN1cHBvcnRlZCB0aHJvdWdoIGEgc2V0IG9m IDUKPiAtICogcHJvcGVydGllcyBvbiB0aGUgJmRybV9jcnRjIG9iamVjdC4gVGhleSBhcmUgc2V0 IHVwIGJ5IGNhbGxpbmcKPiAtICogZHJtX2NydGNfZW5hYmxlX2NvbG9yX21nbXQoKS4KPiArICog Q29sb3IgbWFuYWdlbWVudCBvciBjb2xvciBzcGFjZSBhZGp1c3RtZW50cyBpbiBDUlRDcyBpcyBz dXBwb3J0ZWQKPiArICogdGhyb3VnaCBhIHNldCBvZiA1IHByb3BlcnRpZXMgb24gdGhlICZkcm1f Y3J0YyBvYmplY3QuIFRoZXkgYXJlIHNldAo+ICsgKiB1cCBieSBjYWxsaW5nIGRybV9jcnRjX2Vu YWJsZV9jb2xvcl9tZ210KCkuCj4gKyAqCj4gKyAqIENvbG9yIHNwYWNlIGNvbnZlcnNpb25zIGZy b20gWUNiQ3IgdG8gUkdCIGNvbG9yIHNwYWNlIGluIHBsYW5lcyBpcwo+ICsgKiBzdXBwb3J0ZXIg dHJvdWdoIDMgb3B0aW9uYWwgcHJvcGVydGllcyBpbiAmZHJtX3BsYW5lIG9iamVjdC4KPiArICoK PiArICogVGhlICZkcm1fY3J0YyBvYmplY3QncyBwcm9wZXJ0aWVzIGFyZToKPiAgICoKPiAgICog IkRFR0FNTUFfTFVU4oCdOgo+ICAgKglCbG9iIHByb3BlcnR5IHRvIHNldCB0aGUgZGVnYW1tYSBs b29rdXAgdGFibGUgKExVVCkgbWFwcGluZyBwaXhlbCBkYXRhCj4gQEAgLTg1LDYgKzkwLDI4IEBA Cj4gICAqIGRybV9tb2RlX2NydGNfc2V0X2dhbW1hX3NpemUoKS4gRHJpdmVycyB3aGljaCBzdXBw b3J0IGJvdGggc2hvdWxkIHVzZQo+ICAgKiBkcm1fYXRvbWljX2hlbHBlcl9sZWdhY3lfZ2FtbWFf c2V0KCkgdG8gYWxpYXMgdGhlIGxlZ2FjeSBnYW1tYSByYW1wIHdpdGggdGhlCj4gICAqICJHQU1N QV9MVVQiIHByb3BlcnR5IGFib3ZlLgo+ICsgKgo+ICsgKiBUaGUgJmRybV9wbGFuZSBvYmplY3Qn cyBwcm9wZXJ0aWVzIGFyZToKPiArICoKPiArICogIllDQkNSX1RPX1JHQl9NT0RFIgo+ICsgKiAJ T3B0aW9uYWwgcGxhbmUgZW51bSBwcm9wZXJ0eSB0byBjb25maWd1cmUgWUNiQ3IgdG8gUkdCCj4g KyAqIAljb252ZXJzaW9uLiBUaGUgcG9zc2libGUgbW9kZXMgaW5jbHVkZSBhIG51bWJlciBvZiBz dGFuZGFyZAo+ICsgKiAJY29udmVyc2lvbnMgYW5kIGEgcG9zc2liaWxpdHkgdG8gc2VsZWN0IGN1 c3RvbSBjb252ZXJzaW9uCj4gKyAqIAltYXRyaXggYW5kIHByZW9mZnNldCB2ZWN0b3IuIFRoZSBk cml2ZXIgc2hvdWxkIHNlbGVjdCB0aGUKPiArICoJc3VwcG9ydGVkIHN1YnNldCBvZiBvZiB0aGUg bW9kZXMuCj4gKyAqCj4gKyAqICJZQ0JDUl9UT19SR0JfQ1NDIgo+ICsgKglPcHRpb25hbCBwbGFu ZSBwcm9wZXJ0eSBibG9iIHRvIHNldCBZQ2JDciB0byBSR0IgY29udmVyc2lvbgo+ICsgKgltYXRy aXguIFRoZSBibG9iIGNvbnRhaW5zIHN0cnVjdCBkcm1feWNiY3JfdG9fcmdiX2NzYyB3aGljaCBp cwo+ICsgKglkZWZpbmVkIGluIHVhcGkvZHJtL2RybV9tb2RlLmguIFdoZXRoZXIgdGhpcyBwcm9w ZXJ0eSBpcwo+ICsgKglhY3RpdmUgZGVwZW5kZW50IG9uIFlDQkNSX1RPX1JHQl9NT0RFIHByb3Bl cnR5Lgo+ICsgKgo+ICsgKiAiWUNCQ1JfVE9fUkdCX1BSRU9GRlNFVCIKPiArICoJT3B0aW9uYWwg cGxhbmUgcHJvcGVydHkgYmxvYiB0byBjb25maWd1cmUgWUNiQ3Igb2Zmc2V0IGJlZm9yZQo+ICsg KglZQ2JDciB0byBSR0IgQ1NDIGlzIGFwcGxpZWQuIFRoZSBibG9iIGNvbnRhaW5zIHN0cnVjdAo+ ICsgKglkcm1feWNiY3JfdG9fcmdiX3ByZW9mZnNldCB3aGljaCBpcyBkZWZpbmVkIGluCj4gKyAq CXVhcGkvZHJtL2RybV9tb2RlLmguIFdoZXRoZXIgdGhpcyBwcm9wZXJ0eSBpcyBhY3RpdmUgZGVw ZW5kZW50Cj4gKyAqCW9uIFlDQkNSX1RPX1JHQl9NT0RFIHByb3BlcnR5Lgo+ICAgKi8KPiAgCj4g IC8qKgo+IEBAIC0zMzAsMyArMzU3LDEwNiBAQCBpbnQgZHJtX21vZGVfZ2FtbWFfZ2V0X2lvY3Rs KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAlkcm1fbW9kZXNldF91bmxvY2tfYWxsKGRldik7 Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gKwo+ICtzdGF0aWMgY2hhciAqeWNiY3JfdG9fcmdiX21v ZGVfbmFtZVtdID0gewo+ICsJW0RSTV9QTEFORV9ZQ0JDUl9CVDYwMV9MSU1fVE9fUkdCX0JUNjAx X0ZVTExdID0KPiArCQkiWUNiQ3IgQlQuNjAxIGxpbWl0ZWQgcmFuZ2UgVE8gUkdCIEJULjYwMSBm dWxsIHJhbmdlIiwKPiArCVtEUk1fUExBTkVfWUNCQ1JfQlQ2MDFfRlVMTF9UT19SR0JfQlQ2MDFf RlVMTF0gPQo+ICsJCSJZQ2JDciBCVC42MDEgZnVsbCByYW5nZSBUTyBSR0IgQlQuNjAxIGZ1bGwg cmFuZ2UiLAo+ICsJW0RSTV9QTEFORV9ZQ0JDUl9CVDcwOV9MSU1fVE9fUkdCX0JUNzA5X0ZVTExd ID0KPiArCQkiWUNiQ3IgQlQuNzA5IGxpbWl0ZWQgcmFuZ2UgVE8gUkdCIEJULjcwOSBmdWxsIHJh bmdlIiwKPiArCVtEUk1fUExBTkVfWUNCQ1JfQlQyMDIwX0xJTV9UT19SR0JfQlQyMDIwX0ZVTExd ID0KPiArCQkiWUNiQ3IgQlQuMjAyMCBsaW1pdGVkIHJhbmdlIFRPIFJHQiBCVC4yMDIwIGZ1bGwg cmFuZ2UiLAo+ICsJW0RSTV9QTEFORV9ZQ0JDUl9CVDYwMV9MSU1fVE9fUkdCX0JUNzA5X0ZVTExd ID0KPiArCQkiWUNiQ3IgQlQuNjAxIGxpbWl0ZWQgcmFuZ2UgVE8gUkdCIEJULjcwOSBmdWxsIHJh bmdlIiwKCldlIHByb2JhYmx5IGRvbid0IHdhbnQgdG8gY29uZmxhdGUgdGhlIFlDYkNyLT5SR0Ig cGFydCB3aXRoIHRoZSBjb2xvcnNwYWNlCmNvbnZlcnNpb24gYmVjYXVzZSB0aGUgWUNiQ3ItPlJH QiBwYXJ0IHNob3VsZCBiZSBwZXJmb3JtZWQgb24gZ2FtbWEgZW5jb2RlZApkYXRhIGFuZCB0aGUg Y29sb3JzcGFjZSBjb252ZXJzaW9uIG9uIGxpbmVhciBkYXRhLiBTbyB3ZSBuZWVkIGEgZGVnYW1t YQpzdGFnZSBpbiBiZXR3ZWVuLiBBdCBsZWFzdCB0aGF0IHNlZW1lZCB0byBiZSB0aGUgZ2VuZXJh bCBjb25jZW5jdXMgYWZ0ZXIKdGhlIGxhc3Qgcm91bmQgb2YgbWFpbHMgb24gdGhpcyB0b3BpYy4K CkFmdGVyIHN0YXJpbmcgYXQgdGhlIHY0bCBkb2NzIG9uIHRoaXMgc3R1ZmYgSSBraW5kYSBsaWtl IHRoZWlyCiJlbmNvZGluZyIgdGVybWlub2xvZ3kgdG8gZGVzY3JpYmUgdGhlIFlDYkNyLT5SR0Ig cGFydCwgc28gSSdtIG5vdyBhCmxpdHRsZSBwYXJ0aWFsIHRvIGNhbGxpbmcgdGhlIHByb3Agc29t ZXRoaW5nIGxpa2UgWUNCQ1JfRU5DT0RJTkcuIE9UT0gKaWYgd2Ugd2FudCB0byBleHBvc2UgdGhl IHJhdyBtYXRyaXggYXMgYSBibG9iIHRoZW4gbWF5YmUgY2FsbGluZyBpdCBhCkNTQyBtaWdodCBi ZSBiZXR0ZXIuIE5vdCBzdXJlIHRoZXJlJ3MgbXVjaCBwb2ludCBpbiBleHBvc2luZyBpdCB0aG91 Z2guCkkgZG9uJ3QgdGhpbmsgbW9zdCBwZW9wbGUgYXJlIGluIHRoZSBoYWJpdCBpZiBjb29raW5n IHVwIG5ldyB3YXlzIHRvCmVuY29kZSB0aGVpciBwaXhlbCBkYXRhLgoKPiArCVtEUk1fUExBTkVf WUNCQ1JfQlQ2MDFfTElNX1RPX1JHQl9CVDIwMjBfRlVMTF0gPQo+ICsJCSJZQ2JDciBCVC42MDEg bGltaXRlZCByYW5nZSBUTyBSR0IgQlQuMjAyMCBmdWxsIHJhbmdlIiwKPiArCVtEUk1fUExBTkVf WUNCQ1JfQlQ3MDlfTElNX1RPX1JHQl9CVDYwMV9GVUxMXSA9Cj4gKwkJIllDYkNyIEJULjcwOSBs aW1pdGVkIHJhbmdlIFRPIFJHQiBCVC42MDEgZnVsbCByYW5nZSIsCj4gKwlbRFJNX1BMQU5FX1lD QkNSX0JUNzA5X0xJTV9UT19SR0JfQlQyMDIwX0ZVTExdID0KPiArCQkiWUNiQ3IgQlQuNzA5IGxp bWl0ZWQgcmFuZ2UgVE8gUkdCIEJULjIwMjAgZnVsbCByYW5nZSIsCj4gKwlbRFJNX1BMQU5FX1lD QkNSX0JUMjAyMF9MSU1fVE9fUkdCX0JUNjAxX0ZVTExdID0KPiArCQkiWUNiQ3IgQlQuMjAyMCBs aW1pdGVkIHJhbmdlIFRPIFJHQiBCVC42MDEgZnVsbCByYW5nZSIsCj4gKwlbRFJNX1BMQU5FX1lD QkNSX0JUMjAyMF9MSU1fVE9fUkdCX0JUNzA5X0ZVTExdID0KPiArCQkiWUNiQ3IgQlQuMjAyMCBs aW1pdGVkIHJhbmdlIFRPIFJHQiBCVC43MDkgZnVsbCByYW5nZSIsCj4gKwlbRFJNX1BMQU5FX1lD QkNSX1RPX1JHQl9DU0NfTElNX1BSRU9GRlNFVF0gPQo+ICsJCSJZQ2JDciBUTyBSR0IgQ1NDIGxp bWl0ZWQgcmFuZ2UgcHJlb2Zmc2V0IiwKPiArCVtEUk1fUExBTkVfWUNCQ1JfVE9fUkdCX0NTQ19G VUxMX1BSRU9GRlNFVF0gPQo+ICsJCSJZQ2JDciBUTyBSR0IgQ1NDIGZ1bGwgcmFuZ2UgcHJlb2Zm c2V0IiwKPiArCVtEUk1fUExBTkVfWUNCQ1JfVE9fUkdCX0NTQ19QUkVPRkZTRVRfVkVDVE9SXSA9 Cj4gKwkJIllDQkNSIFRPIFJHQiBDU0MgcHJlb2Zmc2V0IHZlY3RvciIsCj4gK307Cj4gKwo+ICsv KioKPiArICogZHJtX3BsYW5lX2NyZWF0ZV95Y2Jjcl90b19yZ2JfcHJvcGVydGllcyAtIHljYmNy IHRvIHJnYiByZWxhdGVkIHByb3BlcnRpZXMKPiArICogQGVudW1fbGlzdDogZHJtX3Byb3BfZW51 bV9saXN0IGFycmF5IG9mIHN1cHBvcnRlZCBtb2RlcyB3aXRob3V0IG5hbWVzCj4gKyAqIEBlbnVt X2xpc3RfbGVuOiBsZW5ndGggb2YgZW51bV9saXN0IGFycmF5Cj4gKyAqIEBkZWZhdWx0X21vZGU6 IGRlZmF1bHQgY3NjIG1vZGUKPiArICoKPiArICogQ3JlYXRlIGFuZCBhdHRhY2ggcGxhbmUgc3Bl Y2lmaWMgWUNiQ3IgdG8gUkdCIGNvbnZlcnNpb24gcmVsYXRlZAo+ICsgKiBwcm9wZXJ0aWVzIHRv IHRvIHRoZSBkcm1fcGxhbmUgb2JqZWN0LiBUaGUgWUNCQ1JfVE9fUkdCX01PREUgcHJvcGV0eQo+ ICsgKiBjcmVhdGVkIGFuZCBhbiB0aGUgc3VwcG9ydGVkIG1vZGVzIHNob3VsZCBiZSBwcm92aWRl ZCB0aGUgZW51bV9saXN0Cj4gKyAqIHBhcmFtZXRlci4gWUNCQ1JfVE9fUkdCX0NTQyBhbmQgWUNC Q1JfVE9fUkdCX1BSRU9GRlNFVCBwcm9wZXJ0aWVzIGFyZQo+ICsgKiBjcmVhdGVkIGJhc2VkIG9u IHN1cHBvcnRlZCBjb252ZXJzaW9uIG1vZGVzLiBUaGUgZW51bV9saXN0IHBhcmFtZXRlcgo+ICsg KiBzaG91bGQgbm90IGNvbnRhaW4gdGhlIGVudW0gbmFtZXMsIGJlY2F1c2UgdGhlIHN0YW5kYXJk IG5hbWVzIGFyZQo+ICsgKiBhZGRlZCBieSB0aGlzIGZ1bmN0aW9uLgo+ICsgKi8KPiAraW50IGRy bV9wbGFuZV9jcmVhdGVfeWNiY3JfdG9fcmdiX3Byb3BlcnRpZXMoc3RydWN0IGRybV9wbGFuZSAq cGxhbmUsCj4gKwkJCXN0cnVjdCBkcm1fcHJvcF9lbnVtX2xpc3QgKmVudW1fbGlzdCwKPiArCQkJ dW5zaWduZWQgaW50IGVudW1fbGlzdF9sZW4sCj4gKwkJCWVudW0gZHJtX3BsYW5lX3ljYmNyX3Rv X3JnYl9tb2RlIGRlZmF1bHRfbW9kZSkKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IHBsYW5lLT5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wOwo+ICsJYm9vbCB5Y2Jj cl90b19yZ2JfY3NjX2NyZWF0ZSA9IGZhbHNlOwo+ICsJYm9vbCB5Y2Jjcl90b19yZ2JfcHJlb2Zm c2V0X2NyZWF0ZSA9IGZhbHNlOwo+ICsJaW50IGk7Cj4gKwo+ICsJaWYgKFdBUk5fT04ocGxhbmUt PnljYmNyX3RvX3JnYl9tb2RlX3Byb3BlcnR5ICE9IE5VTEwpKQo+ICsJCXJldHVybiAtRUVYSVNU Owo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBlbnVtX2xpc3RfbGVuOyBpKyspIHsKPiArCQllbnVt IGRybV9wbGFuZV95Y2Jjcl90b19yZ2JfbW9kZSBtb2RlID0gZW51bV9saXN0W2ldLnR5cGU7Cj4g Kwo+ICsJCWVudW1fbGlzdFtpXS5uYW1lID0geWNiY3JfdG9fcmdiX21vZGVfbmFtZVttb2RlXTsK PiArCj4gKwkJaWYgKG1vZGUgPT0gRFJNX1BMQU5FX1lDQkNSX1RPX1JHQl9DU0NfTElNX1BSRU9G RlNFVCB8fAo+ICsJCSAgICBtb2RlID09IERSTV9QTEFORV9ZQ0JDUl9UT19SR0JfQ1NDX0ZVTExf UFJFT0ZGU0VUKQo+ICsJCQl5Y2Jjcl90b19yZ2JfY3NjX2NyZWF0ZSA9IHRydWU7Cj4gKwo+ICsJ CWlmIChtb2RlID09IERSTV9QTEFORV9ZQ0JDUl9UT19SR0JfQ1NDX1BSRU9GRlNFVF9WRUNUT1Ip IHsKPiArCQkJeWNiY3JfdG9fcmdiX2NzY19jcmVhdGUgPSB0cnVlOwo+ICsJCQl5Y2Jjcl90b19y Z2JfcHJlb2Zmc2V0X2NyZWF0ZSA9IHRydWU7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCXByb3AgPSBk cm1fcHJvcGVydHlfY3JlYXRlX2VudW0oZGV2LCBEUk1fTU9ERV9QUk9QX0FUT01JQywKPiArCQkJ CQkiWUNCQ1JfVE9fUkdCX01PREUiLAo+ICsJCQkJCWVudW1fbGlzdCwgZW51bV9saXN0X2xlbik7 Cj4gKwlpZiAoIXByb3ApCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwlwbGFuZS0+eWNiY3JfdG9f cmdiX21vZGVfcHJvcGVydHkgPSBwcm9wOwo+ICsJZHJtX29iamVjdF9hdHRhY2hfcHJvcGVydHko JnBsYW5lLT5iYXNlLCBwcm9wLCBkZWZhdWx0X21vZGUpOwo+ICsKPiArCWlmICh5Y2Jjcl90b19y Z2JfY3NjX2NyZWF0ZSkgewo+ICsJCXByb3AgPSBkcm1fcHJvcGVydHlfY3JlYXRlKGRldiwgRFJN X01PREVfUFJPUF9BVE9NSUMgfAo+ICsJCQkJCSAgIERSTV9NT0RFX1BST1BfQkxPQiwKPiArCQkJ CQkgICAiWUNCQ1JfVE9fUkdCX0NTQyIsIDApOwo+ICsJCWlmICghcHJvcCkKPiArCQkJcmV0dXJu IC1FTk9NRU07Cj4gKwkJcGxhbmUtPnljYmNyX3RvX3JnYl9jc2NfcHJvcGVydHkgPSBwcm9wOwo+ ICsJCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFuZS0+YmFzZSwgcHJvcCwgMCk7Cj4g Kwl9Cj4gKwo+ICsJaWYgKHljYmNyX3RvX3JnYl9wcmVvZmZzZXRfY3JlYXRlKSB7Cj4gKwkJcHJv cCA9IGRybV9wcm9wZXJ0eV9jcmVhdGUoZGV2LCBEUk1fTU9ERV9QUk9QX0FUT01JQyB8Cj4gKwkJ CQkJICAgRFJNX01PREVfUFJPUF9CTE9CLAo+ICsJCQkJCSAgICJZQ0JDUl9UT19SR0JfUFJFT0ZG U0VUIiwgMCk7Cj4gKwkJaWYgKCFwcm9wKQo+ICsJCQlyZXR1cm4gLUVOT01FTTsKPiArCQlwbGFu ZS0+eWNiY3JfdG9fcmdiX3ByZW9mZnNldF9wcm9wZXJ0eSA9IHByb3A7Cj4gKwkJZHJtX29iamVj dF9hdHRhY2hfcHJvcGVydHkoJnBsYW5lLT5iYXNlLCBwcm9wLCAwKTsKPiArCX0KPiArCj4gKwly ZXR1cm4gMDsKPiArfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3BsYW5lLmMg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX3BsYW5lLmMKPiBpbmRleCBiYzcxYWEyLi40YzdlODI3IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcGxhbmUuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fcGxhbmUuYwo+IEBAIC0yNDQsNiArMjQ0LDE2IEBAIHZvaWQgZHJtX3BsYW5l X2NsZWFudXAoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCj4gIAo+ICAJa2ZyZWUocGxhbmUtPm5h bWUpOwo+ICAKPiArCWlmIChwbGFuZS0+eWNiY3JfdG9fcmdiX21vZGVfcHJvcGVydHkpCj4gKwkJ ZHJtX3Byb3BlcnR5X2Rlc3Ryb3koZGV2LCBwbGFuZS0+eWNiY3JfdG9fcmdiX21vZGVfcHJvcGVy dHkpOwo+ICsKPiArCWlmIChwbGFuZS0+eWNiY3JfdG9fcmdiX2NzY19wcm9wZXJ0eSkKPiArCQlk cm1fcHJvcGVydHlfZGVzdHJveShkZXYsIHBsYW5lLT55Y2Jjcl90b19yZ2JfY3NjX3Byb3BlcnR5 KTsKPiArCj4gKwlpZiAocGxhbmUtPnljYmNyX3RvX3JnYl9wcmVvZmZzZXRfcHJvcGVydHkpCj4g KwkJZHJtX3Byb3BlcnR5X2Rlc3Ryb3koZGV2LAo+ICsJCQkJICAgICBwbGFuZS0+eWNiY3JfdG9f cmdiX3ByZW9mZnNldF9wcm9wZXJ0eSk7Cj4gKwo+ICAJbWVtc2V0KHBsYW5lLCAwLCBzaXplb2Yo KnBsYW5lKSk7Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTChkcm1fcGxhbmVfY2xlYW51cCk7Cj4gZGlm ZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jb2xvcl9tZ210LmggYi9pbmNsdWRlL2RybS9kcm1f Y29sb3JfbWdtdC5oCj4gaW5kZXggMDNhNTljYi4uYTIwYjNmZiAxMDA2NDQKPiAtLS0gYS9pbmNs dWRlL2RybS9kcm1fY29sb3JfbWdtdC5oCj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2NvbG9yX21n bXQuaAo+IEBAIC0yNiw2ICsyNiw4IEBACj4gICNpbmNsdWRlIDxsaW51eC9jdHlwZS5oPgo+ICAK PiAgc3RydWN0IGRybV9jcnRjOwo+ICtzdHJ1Y3QgZHJtX3BsYW5lOwo+ICtzdHJ1Y3QgZHJtX3By b3BfZW51bV9saXN0Owo+ICAKPiAgdWludDMyX3QgZHJtX2NvbG9yX2x1dF9leHRyYWN0KHVpbnQz Ml90IHVzZXJfaW5wdXQsIHVpbnQzMl90IGJpdF9wcmVjaXNpb24pOwo+ICAKPiBAQCAtMzcsNCAr MzksMjUgQEAgdm9pZCBkcm1fY3J0Y19lbmFibGVfY29sb3JfbWdtdChzdHJ1Y3QgZHJtX2NydGMg KmNydGMsCj4gIGludCBkcm1fbW9kZV9jcnRjX3NldF9nYW1tYV9zaXplKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKPiAgCQkJCSBpbnQgZ2FtbWFfc2l6ZSk7Cj4gIAo+ICtlbnVtIGRybV9wbGFuZV95 Y2Jjcl90b19yZ2JfbW9kZSB7Cj4gKwlEUk1fUExBTkVfWUNCQ1JfQlQ2MDFfTElNX1RPX1JHQl9C VDYwMV9GVUxMID0gMCwKPiArCURSTV9QTEFORV9ZQ0JDUl9CVDYwMV9GVUxMX1RPX1JHQl9CVDYw MV9GVUxMLAo+ICsJRFJNX1BMQU5FX1lDQkNSX0JUNzA5X0xJTV9UT19SR0JfQlQ3MDlfRlVMTCwK PiArCURSTV9QTEFORV9ZQ0JDUl9CVDIwMjBfTElNX1RPX1JHQl9CVDIwMjBfRlVMTCwKPiArCURS TV9QTEFORV9ZQ0JDUl9CVDYwMV9MSU1fVE9fUkdCX0JUNzA5X0ZVTEwsCj4gKwlEUk1fUExBTkVf WUNCQ1JfQlQ2MDFfTElNX1RPX1JHQl9CVDIwMjBfRlVMTCwKPiArCURSTV9QTEFORV9ZQ0JDUl9C VDcwOV9MSU1fVE9fUkdCX0JUNjAxX0ZVTEwsCj4gKwlEUk1fUExBTkVfWUNCQ1JfQlQ3MDlfTElN X1RPX1JHQl9CVDIwMjBfRlVMTCwKPiArCURSTV9QTEFORV9ZQ0JDUl9CVDIwMjBfTElNX1RPX1JH Ql9CVDYwMV9GVUxMLAo+ICsJRFJNX1BMQU5FX1lDQkNSX0JUMjAyMF9MSU1fVE9fUkdCX0JUNzA5 X0ZVTEwsCj4gKwlEUk1fUExBTkVfWUNCQ1JfVE9fUkdCX0NTQ19MSU1fUFJFT0ZGU0VULAo+ICsJ RFJNX1BMQU5FX1lDQkNSX1RPX1JHQl9DU0NfRlVMTF9QUkVPRkZTRVQsCj4gKwlEUk1fUExBTkVf WUNCQ1JfVE9fUkdCX0NTQ19QUkVPRkZTRVRfVkVDVE9SLAo+ICt9Owo+ICsKPiAraW50IGRybV9w bGFuZV9jcmVhdGVfeWNiY3JfdG9fcmdiX3Byb3BlcnRpZXMoc3RydWN0IGRybV9wbGFuZSAqcGxh bmUsCj4gKwkJCXN0cnVjdCBkcm1fcHJvcF9lbnVtX2xpc3QgKmVudW1fbGlzdCwKPiArCQkJdW5z aWduZWQgaW50IGVudW1fbGlzdF9sZW4sCj4gKwkJCWVudW0gZHJtX3BsYW5lX3ljYmNyX3RvX3Jn Yl9tb2RlIGRlZmF1bHRfbW9kZSk7Cj4gKwo+ICAjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9kcm0vZHJtX3BsYW5lLmggYi9pbmNsdWRlL2RybS9kcm1fcGxhbmUuaAo+IGluZGV4IDlhYjNl NzAuLjQxZGNkZTIgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX3BsYW5lLmgKPiArKysg Yi9pbmNsdWRlL2RybS9kcm1fcGxhbmUuaAo+IEBAIC0yNiw2ICsyNiw3IEBACj4gICNpbmNsdWRl IDxsaW51eC9saXN0Lmg+Cj4gICNpbmNsdWRlIDxsaW51eC9jdHlwZS5oPgo+ICAjaW5jbHVkZSA8 ZHJtL2RybV9tb2RlX29iamVjdC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9jb2xvcl9tZ210Lmg+ Cj4gIAo+ICBzdHJ1Y3QgZHJtX2NydGM7Cj4gIHN0cnVjdCBkcm1fcHJpbnRlcjsKPiBAQCAtMTEy LDYgKzExMywxMSBAQCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIHsKPiAgCXVuc2lnbmVkIGludCB6 cG9zOwo+ICAJdW5zaWduZWQgaW50IG5vcm1hbGl6ZWRfenBvczsKPiAgCj4gKwkvKiBZQ2JDciB0 byBSR0IgY29udmVyc2lvbiAqLwo+ICsJZW51bSBkcm1fcGxhbmVfeWNiY3JfdG9fcmdiX21vZGUg eWNiY3JfdG9fcmdiX21vZGU7Cj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKnljYmNyX3Rv X3JnYl9jc2M7Cj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKnljYmNyX3RvX3JnYl9wcmVv ZmZzZXQ7Cj4gKwo+ICAJLyogQ2xpcHBlZCBjb29yZGluYXRlcyAqLwo+ICAJc3RydWN0IGRybV9y ZWN0IHNyYywgZHN0Owo+ICAKPiBAQCAtNTIzLDYgKzUyOSwxMCBAQCBzdHJ1Y3QgZHJtX3BsYW5l IHsKPiAgCj4gIAlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICp6cG9zX3Byb3BlcnR5Owo+ICAJc3RydWN0 IGRybV9wcm9wZXJ0eSAqcm90YXRpb25fcHJvcGVydHk7Cj4gKwo+ICsJc3RydWN0IGRybV9wcm9w ZXJ0eSAqeWNiY3JfdG9fcmdiX21vZGVfcHJvcGVydHk7Cj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5 ICp5Y2Jjcl90b19yZ2JfY3NjX3Byb3BlcnR5Owo+ICsJc3RydWN0IGRybV9wcm9wZXJ0eSAqeWNi Y3JfdG9fcmdiX3ByZW9mZnNldF9wcm9wZXJ0eTsKPiAgfTsKPiAgCj4gICNkZWZpbmUgb2JqX3Rv X3BsYW5lKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgZHJtX3BsYW5lLCBiYXNlKQo+IGRpZmYg LS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmggYi9pbmNsdWRlL3VhcGkvZHJtL2Ry bV9tb2RlLmgKPiBpbmRleCA4YzY3ZmMwLi4yN2UwYmVlIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUv dWFwaS9kcm0vZHJtX21vZGUuaAo+ICsrKyBiL2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaAo+ IEBAIC01NDMsNiArNTQzLDE4IEBAIHN0cnVjdCBkcm1fY29sb3JfbHV0IHsKPiAgCV9fdTE2IHJl c2VydmVkOwo+ICB9Owo+ICAKPiArc3RydWN0IGRybV95Y2Jjcl90b19yZ2JfY3NjIHsKPiArCS8q IENvbnZlcnNpb24gbWF0cml4IGluIDItY29tcGxlbWVudCBzMzIuMzIgZm9ybWF0LiAqLwo+ICsJ X19zNjQgcnksIHJjYiwgcmNyOwo+ICsJX19zNjQgZ3ksIGdjYiwgZ2NyOwo+ICsJX19zNjQgYnks IGJjYiwgYmNyOwo+ICt9Owo+ICsKPiArc3RydWN0IGRybV95Y2Jjcl90b19yZ2JfcHJlb2Zmc2V0 IHsKPiArCS8qIE9mZnNldCB2ZWN0b3IgaW4gMi1jb21wbGVtZW50IHMuMzIgZm9ybWF0LiAqLwo+ ICsJX19zMzIgeSwgY2IsIGNyOwo+ICt9Owo+ICsKPiAgI2RlZmluZSBEUk1fTU9ERV9QQUdFX0ZM SVBfRVZFTlQgMHgwMQo+ICAjZGVmaW5lIERSTV9NT0RFX1BBR0VfRkxJUF9BU1lOQyAweDAyCj4g ICNkZWZpbmUgRFJNX01PREVfUEFHRV9GTElQX1RBUkdFVF9BQlNPTFVURSAweDQKPiAtLSAKPiAx LjkuMQoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2 ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==