From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v8 13/35] drm/i915: Implement the HDCP2.2 support for HDMI Date: Thu, 6 Dec 2018 15:04:05 +0100 Message-ID: <20181206140404.GW21184@phenom.ffwll.local> References: <1543315413-24302-1-git-send-email-ramalingam.c@intel.com> <1543315413-24302-14-git-send-email-ramalingam.c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x541.google.com (mail-ed1-x541.google.com [IPv6:2a00:1450:4864:20::541]) by gabe.freedesktop.org (Postfix) with ESMTPS id 36D676E5D9 for ; Thu, 6 Dec 2018 14:04:09 +0000 (UTC) Received: by mail-ed1-x541.google.com with SMTP id b14so846961edt.6 for ; Thu, 06 Dec 2018 06:04:09 -0800 (PST) Content-Disposition: inline In-Reply-To: <1543315413-24302-14-git-send-email-ramalingam.c@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Ramalingam C Cc: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, uma.shankar@intel.com, tomas.winkler@intel.com, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBOb3YgMjcsIDIwMTggYXQgMDQ6MTM6MTFQTSArMDUzMCwgUmFtYWxpbmdhbSBDIHdy b3RlOgo+IEltcGxlbWVudHMgdGhlIEhETUkgYWRhcHRhdGlvbiBzcGVjaWZpYyBIRENQMi4yIG9w ZXJhdGlvbnMuCj4gCj4gQmFzaWNhbGx5IHRoZXNlIGFyZSBEREMgcmVhZCBhbmQgd3JpdGUgZm9y IGF1dGhlbnRpY2F0aW5nIHRocm91Z2gKPiBIRENQMi4yIG1lc3NhZ2VzLgo+IAo+IHYyOgo+ICAg UmViYXNlZC4KPiB2MzoKPiAgIE5vIENoYW5nZXMuCj4gdjQ6Cj4gICBObyBtb3JlIHNwZWNpYWwg aGFuZGxpbmcgb2YgR21idXMgYnVyc3QgcmVhZCBmb3IgQUtFX1NFTkRfQ0VSVC4KPiAgIFN0eWxl IGZpeGVkIHdpdGggZmV3IG5hbWluZy4gW1VtYV0KPiAgICVzL1BBUklORy9QQUlSSU5HCj4gdjU6 Cj4gICBtc2dfc3ogaXMgaW5pdGlhbGl6ZWQgYXQgZGVmaW5pdGlvbi4KPiAgIExvb2t1cCB0YWJs ZSBpcyBkZWZpbmVkIGZvciBIRE1JIEhEQ1AyLjIgbXNncyBbRGFuaWVsXS4KPiB2NjoKPiAgIFJl YmFzZWQuCj4gdjc6Cj4gICBNYWtlIGEgZnVuY3Rpb24gYXMgaW5saW5lIFtVbWFdCj4gICAlcy91 aW50eHhfdC91eHgKPiB2ODoKPiAgIEVycm9ycyBkdWUgdG8gc2lua3MgYXJlIHJlcG9ydGVkIGFz IERFQlVHIGxvZ3MuCj4gICBBZGp1c3QgdG8gdGhlIG5ldyBtZWkgaW50ZXJmYWNlLgo+IAo+IFNp Z25lZC1vZmYtYnk6IFJhbWFsaW5nYW0gQyA8cmFtYWxpbmdhbS5jQGludGVsLmNvbT4KPiBSZXZp ZXdlZC1ieTogVW1hIFNoYW5rYXIgPHVtYS5zaGFua2FyQGludGVsLmNvbT4KPiAtLS0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jIHwgMTkwICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCj4gIDEgZmlsZSBjaGFuZ2VkLCAxOTAgaW5zZXJ0aW9ucygrKQo+ IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKPiBpbmRleCBlNzU1YTMzNzBiY2EuLjkxMmY1 MDEzMzY0NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKPiBAQCAtMzAsNiArMzAs NyBAQAo+ICAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+ICAjaW5jbHVkZSA8bGludXgvZGVsYXku aD4KPiAgI2luY2x1ZGUgPGxpbnV4L2hkbWkuaD4KPiArI2luY2x1ZGUgPGxpbnV4L21laV9oZGNw Lmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNf aGVscGVyLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KPiBAQCAtMTExNyw2ICsxMTE4 LDE5MCBAQCBib29sIGludGVsX2hkbWlfaGRjcF9jaGVja19saW5rKHN0cnVjdCBpbnRlbF9kaWdp dGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KQo+ICAJcmV0dXJuIHRydWU7Cj4gIH0KPiAgCj4gK3N0 YXRpYyBzdHJ1Y3QgaGRjcDJfaGRtaV9tc2dfZGF0YSB7Cj4gKwl1OCBtc2dfaWQ7Cj4gKwl1MzIg dGltZW91dDsKPiArCXUzMiB0aW1lb3V0MjsKPiArCX0gaGRjcDJfbXNnX2RhdGFbXSA9IHsKPiAr CQl7SERDUF8yXzJfQUtFX0lOSVQsIDAsIDB9LAo+ICsJCXtIRENQXzJfMl9BS0VfU0VORF9DRVJU LCBIRENQXzJfMl9DRVJUX1RJTUVPVVRfTVMsIDB9LAo+ICsJCXtIRENQXzJfMl9BS0VfTk9fU1RP UkVEX0tNLCAwLCAwfSwKPiArCQl7SERDUF8yXzJfQUtFX1NUT1JFRF9LTSwgMCwgMH0sCj4gKwkJ e0hEQ1BfMl8yX0FLRV9TRU5EX0hQUklNRSwgSERDUF8yXzJfSFBSSU1FX1BBSVJFRF9USU1FT1VU X01TLAo+ICsJCQkJSERDUF8yXzJfSFBSSU1FX05PX1BBSVJFRF9USU1FT1VUX01TfSwKPiArCQl7 SERDUF8yXzJfQUtFX1NFTkRfUEFJUklOR19JTkZPLCBIRENQXzJfMl9QQUlSSU5HX1RJTUVPVVRf TVMsCj4gKwkJCQkwfSwKPiArCQl7SERDUF8yXzJfTENfSU5JVCwgMCwgMH0sCj4gKwkJe0hEQ1Bf Ml8yX0xDX1NFTkRfTFBSSU1FLCBIRENQXzJfMl9IRE1JX0xQUklNRV9USU1FT1VUX01TLCAwfSwK PiArCQl7SERDUF8yXzJfU0tFX1NFTkRfRUtTLCAwLCAwfSwKPiArCQl7SERDUF8yXzJfUkVQX1NF TkRfUkVDVklEX0xJU1QsCj4gKwkJCQlIRENQXzJfMl9SRUNWSURfTElTVF9USU1FT1VUX01TLCAw fSwKPiArCQl7SERDUF8yXzJfUkVQX1NFTkRfQUNLLCAwLCAwfSwKPiArCQl7SERDUF8yXzJfUkVQ X1NUUkVBTV9NQU5BR0UsIDAsIDB9LAo+ICsJCXtIRENQXzJfMl9SRVBfU1RSRUFNX1JFQURZLCBI RENQXzJfMl9TVFJFQU1fUkVBRFlfVElNRU9VVF9NUywKPiArCQkJCTB9LAo+ICsJfTsKPiArCj4g K3N0YXRpYwo+ICtpbnQgaW50ZWxfaGRtaV9oZGNwMl9yZWFkX3J4X3N0YXR1cyhzdHJ1Y3QgaW50 ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPiArCQkJCSAgICB1aW50OF90ICpyeF9z dGF0dXMpCj4gK3sKPiArCXJldHVybiBpbnRlbF9oZG1pX2hkY3BfcmVhZChpbnRlbF9kaWdfcG9y dCwKPiArCQkJCSAgICBIRENQXzJfMl9IRE1JX1JFR19SWFNUQVRVU19PRkZTRVQsCj4gKwkJCQkg ICAgcnhfc3RhdHVzLAo+ICsJCQkJICAgIEhEQ1BfMl8yX0hETUlfUlhTVEFUVVNfTEVOKTsKPiAr fQo+ICsKPiArc3RhdGljIGludCBnZXRfaGRjcDJfbXNnX3RpbWVvdXQodTggbXNnX2lkLCBib29s IGlzX3BhaXJlZCkKPiArewo+ICsJaW50IGk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IHNpemVv ZihoZGNwMl9tc2dfZGF0YSk7IGkrKykKPiArCQlpZiAoaGRjcDJfbXNnX2RhdGFbaV0ubXNnX2lk ID09IG1zZ19pZCAmJgo+ICsJCSAgICAobXNnX2lkICE9IEhEQ1BfMl8yX0FLRV9TRU5EX0hQUklN RSB8fCBpc19wYWlyZWQpKQo+ICsJCQlyZXR1cm4gaGRjcDJfbXNnX2RhdGFbaV0udGltZW91dDsK PiArCQllbHNlIGlmIChoZGNwMl9tc2dfZGF0YVtpXS5tc2dfaWQgPT0gbXNnX2lkKQo+ICsJCQly ZXR1cm4gaGRjcDJfbXNnX2RhdGFbaV0udGltZW91dDI7Cj4gKwo+ICsJcmV0dXJuIC1FSU5WQUw7 Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUKPiAraW50IGhkY3AyX2RldGVjdF9tc2dfYXZhaWxh YmlsaXR5KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ2l0YWxfcG9ydCwKPiAr CQkJCSAgdTggbXNnX2lkLCBib29sICptc2dfcmVhZHksCj4gKwkJCQkgIHNzaXplX3QgKm1zZ19z eikKPiArewo+ICsJdTggcnhfc3RhdHVzW0hEQ1BfMl8yX0hETUlfUlhTVEFUVVNfTEVOXTsKPiAr CWludCByZXQ7Cj4gKwo+ICsJcmV0ID0gaW50ZWxfaGRtaV9oZGNwMl9yZWFkX3J4X3N0YXR1cyhp bnRlbF9kaWdpdGFsX3BvcnQsIHJ4X3N0YXR1cyk7Cj4gKwlpZiAocmV0IDwgMCkgewo+ICsJCURS TV9ERUJVR19LTVMoInJ4X3N0YXR1cyByZWFkIGZhaWxlZC4gRXJyICVkXG4iLCByZXQpOwo+ICsJ CXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJKm1zZ19zeiA9ICgoSERDUF8yXzJfSERNSV9SWFNU QVRVU19NU0dfU1pfSEkocnhfc3RhdHVzWzFdKSA8PCA4KSB8Cj4gKwkJICByeF9zdGF0dXNbMF0p Owo+ICsKPiArCWlmIChtc2dfaWQgPT0gSERDUF8yXzJfUkVQX1NFTkRfUkVDVklEX0xJU1QpCj4g KwkJKm1zZ19yZWFkeSA9IChIRENQXzJfMl9IRE1JX1JYU1RBVFVTX1JFQURZKHJ4X3N0YXR1c1sx XSkgJiYKPiArCQkJICAgICAqbXNnX3N6KTsKPiArCWVsc2UKPiArCQkqbXNnX3JlYWR5ID0gKm1z Z19zejsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHNzaXplX3QKPiAraW50 ZWxfaGRtaV9oZGNwMl93YWl0X2Zvcl9tc2coc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50 ZWxfZGlnX3BvcnQsCj4gKwkJCSAgICAgIHU4IG1zZ19pZCwgYm9vbCBwYWlyZWQpCj4gK3sKPiAr CWJvb2wgbXNnX3JlYWR5ID0gZmFsc2U7Cj4gKwlpbnQgdGltZW91dCwgcmV0Owo+ICsJc3NpemVf dCBtc2dfc3ogPSAwOwo+ICsKPiArCXRpbWVvdXQgPSBnZXRfaGRjcDJfbXNnX3RpbWVvdXQobXNn X2lkLCBwYWlyZWQpOwo+ICsJaWYgKHRpbWVvdXQgPCAwKQo+ICsJCXJldHVybiB0aW1lb3V0Owo+ ICsKPiArCXJldCA9IF9fd2FpdF9mb3IocmV0ID0gaGRjcDJfZGV0ZWN0X21zZ19hdmFpbGFiaWxp dHkoaW50ZWxfZGlnX3BvcnQsCj4gKwkJCQkJCQkgICAgIG1zZ19pZCwgJm1zZ19yZWFkeSwKPiAr CQkJCQkJCSAgICAgJm1zZ19zeiksCj4gKwkJCSAhcmV0ICYmIG1zZ19yZWFkeSAmJiBtc2dfc3os IHRpbWVvdXQgKiAxMDAwLAo+ICsJCQkgMTAwMCwgNSAqIDEwMDApOwoKWWVhaCwgZG9pbmcgdGhp cyBhbHNvIGZvciBEUCBpcyBpbW8gbXVjaCBzaW1wbGVyLgoKbGd0bS4KLURhbmllbAoKPiArCWlm IChyZXQpCj4gKwkJRFJNX0RFQlVHX0tNUygibXNnX2lkOiAlZCwgcmV0OiAlZCwgdGltZW91dDog JWRcbiIsCj4gKwkJCSAgICAgIG1zZ19pZCwgcmV0LCB0aW1lb3V0KTsKPiArCj4gKwlyZXR1cm4g cmV0ID8gcmV0IDogbXNnX3N6Owo+ICt9Cj4gKwo+ICtzdGF0aWMKPiAraW50IGludGVsX2hkbWlf aGRjcDJfd3JpdGVfbXNnKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0 LAo+ICsJCQkgICAgICAgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSkKPiArewo+ICsJdW5zaWduZWQg aW50IG9mZnNldDsKPiArCj4gKwlvZmZzZXQgPSBIRENQXzJfMl9IRE1JX1JFR19XUl9NU0dfT0ZG U0VUOwo+ICsJcmV0dXJuIGludGVsX2hkbWlfaGRjcF93cml0ZShpbnRlbF9kaWdfcG9ydCwgb2Zm c2V0LCBidWYsIHNpemUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMKPiAraW50IGludGVsX2hkbWlfaGRj cDJfcmVhZF9tc2coc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4g KwkJCSAgICAgIHU4IG1zZ19pZCwgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSkKPiArewo+ICsJc3Ry dWN0IGludGVsX2hkbWkgKmhkbWkgPSAmaW50ZWxfZGlnX3BvcnQtPmhkbWk7Cj4gKwlzdHJ1Y3Qg aW50ZWxfaGRjcCAqaGRjcCA9ICZoZG1pLT5hdHRhY2hlZF9jb25uZWN0b3ItPmhkY3A7Cj4gKwl1 bnNpZ25lZCBpbnQgb2Zmc2V0Owo+ICsJc3NpemVfdCByZXQ7Cj4gKwo+ICsJcmV0ID0gaW50ZWxf aGRtaV9oZGNwMl93YWl0X2Zvcl9tc2coaW50ZWxfZGlnX3BvcnQsIG1zZ19pZCwKPiArCQkJCQkg ICAgaGRjcC0+aXNfcGFpcmVkKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7Cj4g Kwo+ICsJLyoKPiArCSAqIEF2YWlsYWJsZSBtc2cgc2l6ZSBzaG91bGQgYmUgZXF1YWwgdG8gb3Ig bGVzc2VyIHRoYW4gdGhlCj4gKwkgKiBhdmFpbGFibGUgYnVmZmVyLgo+ICsJICovCj4gKwlpZiAo cmV0ID4gc2l6ZSkgewo+ICsJCURSTV9ERUJVR19LTVMoIm1zZ19zeiglemQpIGlzIG1vcmUgdGhh biBleHAgc2l6ZSglenUpXG4iLAo+ICsJCQkgICAgICByZXQsIHNpemUpOwo+ICsJCXJldHVybiAt MTsKPiArCX0KPiArCj4gKwlvZmZzZXQgPSBIRENQXzJfMl9IRE1JX1JFR19SRF9NU0dfT0ZGU0VU Owo+ICsJcmV0ID0gaW50ZWxfaGRtaV9oZGNwX3JlYWQoaW50ZWxfZGlnX3BvcnQsIG9mZnNldCwg YnVmLCByZXQpOwo+ICsJaWYgKHJldCkKPiArCQlEUk1fREVCVUdfS01TKCJGYWlsZWQgdG8gcmVh ZCBtc2dfaWQ6ICVkKCV6ZClcbiIsIG1zZ19pZCwgcmV0KTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ ICt9Cj4gKwo+ICtzdGF0aWMKPiAraW50IGludGVsX2hkbWlfaGRjcDJfY2hlY2tfbGluayhzdHJ1 Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCkKPiArewo+ICsJdTggcnhfc3Rh dHVzW0hEQ1BfMl8yX0hETUlfUlhTVEFUVVNfTEVOXTsKPiArCWludCByZXQ7Cj4gKwo+ICsJcmV0 ID0gaW50ZWxfaGRtaV9oZGNwMl9yZWFkX3J4X3N0YXR1cyhpbnRlbF9kaWdfcG9ydCwgcnhfc3Rh dHVzKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwkvKgo+ICsJICogUmUt YXV0aCByZXF1ZXN0IGFuZCBMaW5rIEludGVncml0eSBGYWlsdXJlcyBhcmUgcmVwcmVzZW50ZWQg YnkKPiArCSAqIHNhbWUgYml0LiBpLmUgcmVhdXRoX3JlcS4KPiArCSAqLwo+ICsJaWYgKEhEQ1Bf Ml8yX0hETUlfUlhTVEFUVVNfUkVBVVRIX1JFUShyeF9zdGF0dXNbMV0pKQo+ICsJCXJldCA9IERS TV9IRENQX1JFQVVUSF9SRVFVRVNUOwo+ICsJZWxzZSBpZiAoSERDUF8yXzJfSERNSV9SWFNUQVRV U19SRUFEWShyeF9zdGF0dXNbMV0pKQo+ICsJCXJldCA9IERSTV9IRENQX1RPUE9MT0dZX0NIQU5H RTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMKPiAraW50IGludGVsX2hk bWlfaGRjcDJfY2FwYWJsZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9y dCwKPiArCQkJICAgICBib29sICpjYXBhYmxlKQo+ICt7Cj4gKwl1OCBoZGNwMl92ZXJzaW9uOwo+ ICsJaW50IHJldDsKPiArCj4gKwkqY2FwYWJsZSA9IGZhbHNlOwo+ICsJcmV0ID0gaW50ZWxfaGRt aV9oZGNwX3JlYWQoaW50ZWxfZGlnX3BvcnQsIEhEQ1BfMl8yX0hETUlfUkVHX1ZFUl9PRkZTRVQs Cj4gKwkJCQkgICAmaGRjcDJfdmVyc2lvbiwgc2l6ZW9mKGhkY3AyX3ZlcnNpb24pKTsKPiArCWlm ICghcmV0ICYmIGhkY3AyX3ZlcnNpb24gJiBIRENQXzJfMl9IRE1JX1NVUFBPUlRfTUFTSykKPiAr CQkqY2FwYWJsZSA9IHRydWU7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGlj IGlubGluZQo+ICtlbnVtIG1laV9oZGNwX3dpcmVkX3Byb3RvY29sIGludGVsX2hkbWlfaGRjcDJf cHJvdG9jb2wodm9pZCkKPiArewo+ICsJcmV0dXJuIE1FSV9IRENQX1BST1RPQ09MX0hETUk7Cj4g K30KPiArCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltIGludGVsX2hkbWlf aGRjcF9zaGltID0gewo+ICAJLndyaXRlX2FuX2Frc3YgPSBpbnRlbF9oZG1pX2hkY3Bfd3JpdGVf YW5fYWtzdiwKPiAgCS5yZWFkX2Jrc3YgPSBpbnRlbF9oZG1pX2hkY3BfcmVhZF9ia3N2LAo+IEBA IC0xMTI4LDYgKzEzMTMsMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9oZGNwX3NoaW0g aW50ZWxfaGRtaV9oZGNwX3NoaW0gPSB7Cj4gIAkucmVhZF92X3ByaW1lX3BhcnQgPSBpbnRlbF9o ZG1pX2hkY3BfcmVhZF92X3ByaW1lX3BhcnQsCj4gIAkudG9nZ2xlX3NpZ25hbGxpbmcgPSBpbnRl bF9oZG1pX2hkY3BfdG9nZ2xlX3NpZ25hbGxpbmcsCj4gIAkuY2hlY2tfbGluayA9IGludGVsX2hk bWlfaGRjcF9jaGVja19saW5rLAo+ICsJLndyaXRlXzJfMl9tc2cgPSBpbnRlbF9oZG1pX2hkY3Ay X3dyaXRlX21zZywKPiArCS5yZWFkXzJfMl9tc2cgPSBpbnRlbF9oZG1pX2hkY3AyX3JlYWRfbXNn LAo+ICsJLmNoZWNrXzJfMl9saW5rCT0gaW50ZWxfaGRtaV9oZGNwMl9jaGVja19saW5rLAo+ICsJ LmhkY3BfMl8yX2NhcGFibGUgPSBpbnRlbF9oZG1pX2hkY3AyX2NhcGFibGUsCj4gKwkuaGRjcF9w cm90b2NvbCA9IGludGVsX2hkbWlfaGRjcDJfcHJvdG9jb2wsCj4gIH07Cj4gIAo+ICBzdGF0aWMg dm9pZCBpbnRlbF9oZG1pX3ByZXBhcmUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4g LS0gCj4gMi43LjQKPiAKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRl bCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWwK