From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [v2][PATCH 2/3] drm/i915/display: Extract icl_read_luts() Date: Wed, 18 Sep 2019 13:01:18 +0300 Message-ID: <87y2ylx6s1.fsf@intel.com> References: <1568724525-19275-1-git-send-email-swati2.sharma@intel.com> <1568724525-19275-3-git-send-email-swati2.sharma@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id C0D1E6EE93 for ; Wed, 18 Sep 2019 10:01:30 +0000 (UTC) In-Reply-To: <1568724525-19275-3-git-send-email-swati2.sharma@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Swati Sharma , intel-gfx@lists.freedesktop.org Cc: daniel.vetter@ffwll.ch, ankit.k.nautiyal@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCAxNyBTZXAgMjAxOSwgU3dhdGkgU2hhcm1hIDxzd2F0aTIuc2hhcm1hQGludGVsLmNv bT4gd3JvdGU6Cj4gRm9yIGljbCssIGhhdmUgaHcgcmVhZCBvdXQgdG8gY3JlYXRlIGh3IGJsb2Ig b2YgZ2FtbWEKPiBsdXQgdmFsdWVzLiBpY2wrIHBsYXRmb3JtcyBzdXBwb3J0cyBtdWx0aSBzZWdt ZW50ZWQgZ2FtbWEKPiBtb2RlLCBhZGQgaHcgbHV0IGNyZWF0aW9uIGZvciB0aGlzIG1vZGUuCj4K PiBUaGlzIHdpbGwgYmUgdXNlZCB0byB2YWxpZGF0ZSBnYW1tYSBwcm9ncmFtbWluZyB1c2luZyBk c2IKPiAoZGlzcGxheSBzdGF0ZSBidWZmZXIpIHdoaWNoIGlzIGEgdGdsIGZlYXR1cmUuCj4KPiB2 MjogLXJlYWRvdXQgY29kZSBmb3IgbXVsdGlzZWdtZW50ZWQgZ2FtbWEgaGFzIHRvIGNvbWUKPiAg ICAgIHVwIHdpdGggc29tZSBpbnRlcm1lZGlhdGUgZW50cmllcyB0aGF0IGFyZW4ndCBwcmVzZXJ2 ZWQKPiAgICAgIGluIGhhcmR3YXJlIChKYW5pIE4pCj4gICAgIC1saW5lYXIgaW50ZXJwb2xhdGlv biAoVmlsbGUpCj4gICAgIC1tb3ZlZCBjb21tb24gY29kZSB0byBjaGVjayBnYW1tYV9lbmFibGUg dG8gc3BlY2lmaWMgZnVuY3MsCj4gICAgICBzaW5jZSBpY2wgZG9lc24ndCBzdXBwb3J0IHRoYXQK Pgo+IFNpZ25lZC1vZmYtYnk6IFN3YXRpIFNoYXJtYSA8c3dhdGkyLnNoYXJtYUBpbnRlbC5jb20+ Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29sb3IuYyB8IDI0 MyArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3JlZy5oICAgICAgICAgICAgfCAgIDcgKwo+ICAyIGZpbGVzIGNoYW5nZWQsIDIzMCBpbnNl cnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2NvbG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2NvbG9yLmMKPiBpbmRleCBiMWYwZjdlLi4wMDA4MDExIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29sb3IuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29sb3IuYwo+IEBAIC0xMzcwLDYgKzEzNzAs OSBAQCBzdGF0aWMgaW50IGljbF9jb2xvcl9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSkKPiAgCj4gIHN0YXRpYyBpbnQgaTl4eF9nYW1tYV9wcmVjaXNpb24oY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiArCWlmICghY3J0Y19z dGF0ZS0+Z2FtbWFfZW5hYmxlKQo+ICsJCXJldHVybiAwOwo+ICsKCldoeSBhcmUgeW91IG1vdmlu ZyB0aGVzZSBjaGVja3MgYmFjayB0byB0aGUgaW5kaXZpZHVhbCBmdW5jdGlvbnM/Cgo+ICAJc3dp dGNoIChjcnRjX3N0YXRlLT5nYW1tYV9tb2RlKSB7Cj4gIAljYXNlIEdBTU1BX01PREVfTU9ERV84 QklUOgo+ICAJCXJldHVybiA4Owo+IEBAIC0xMzgzLDYgKzEzODYsOSBAQCBzdGF0aWMgaW50IGk5 eHhfZ2FtbWFfcHJlY2lzaW9uKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlKQo+ICAKPiAgc3RhdGljIGludCBpbGtfZ2FtbWFfcHJlY2lzaW9uKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gKwlpZiAoIWNydGNfc3RhdGUtPmdh bW1hX2VuYWJsZSkKPiArCQlyZXR1cm4gMDsKPiArCj4gIAlpZiAoKGNydGNfc3RhdGUtPmNzY19t b2RlICYgQ1NDX1BPU0lUSU9OX0JFRk9SRV9HQU1NQSkgPT0gMCkKPiAgCQlyZXR1cm4gMDsKPiAg Cj4gQEAgLTEzOTksNiArMTQwNSw5IEBAIHN0YXRpYyBpbnQgaWxrX2dhbW1hX3ByZWNpc2lvbihj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCj4gIHN0YXRpYyBp bnQgY2h2X2dhbW1hX3ByZWNpc2lvbihjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSkKPiAgewo+ICsJaWYgKCFjcnRjX3N0YXRlLT5nYW1tYV9lbmFibGUpCj4gKwkJcmV0 dXJuIDA7Cj4gKwo+ICAJaWYgKGNydGNfc3RhdGUtPmNnbV9tb2RlICYgQ0dNX1BJUEVfTU9ERV9H QU1NQSkKPiAgCQlyZXR1cm4gMTA7Cj4gIAllbHNlCj4gQEAgLTE0MDcsNiArMTQxNiw5IEBAIHN0 YXRpYyBpbnQgY2h2X2dhbW1hX3ByZWNpc2lvbihjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSkKPiAgCj4gIHN0YXRpYyBpbnQgZ2xrX2dhbW1hX3ByZWNpc2lvbihjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+ICsJaWYgKCFjcnRj X3N0YXRlLT5nYW1tYV9lbmFibGUpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICAJc3dpdGNoIChjcnRj X3N0YXRlLT5nYW1tYV9tb2RlKSB7Cj4gIAljYXNlIEdBTU1BX01PREVfTU9ERV84QklUOgo+ICAJ CXJldHVybiA4Owo+IEBAIC0xNDE4LDIxICsxNDMwLDM5IEBAIHN0YXRpYyBpbnQgZ2xrX2dhbW1h X3ByZWNpc2lvbihjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAg CX0KPiAgfQo+ICAKPiArc3RhdGljIGludCBpY2xfZ2FtbWFfcHJlY2lzaW9uKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICt7Cj4gKwlpZiAoKGNydGNfc3RhdGUt PmdhbW1hX21vZGUgJiBQT1NUX0NTQ19HQU1NQV9FTkFCTEUpID09IDApCj4gKwkJcmV0dXJuIDA7 Cj4gKwo+ICsJc3dpdGNoIChjcnRjX3N0YXRlLT5nYW1tYV9tb2RlICYgR0FNTUFfTU9ERV9NT0RF X01BU0spIHsKPiArCWNhc2UgR0FNTUFfTU9ERV9NT0RFXzhCSVQ6Cj4gKwkJcmV0dXJuIDg7Cj4g KwljYXNlIEdBTU1BX01PREVfTU9ERV8xMEJJVDoKPiArCQlyZXR1cm4gMTA7Cj4gKwljYXNlIEdB TU1BX01PREVfTU9ERV8xMkJJVF9NVUxUSV9TRUdNRU5URUQ6Cj4gKwkJcmV0dXJuIDE2OyAgCj4g KwlkZWZhdWx0Ogo+ICsJCU1JU1NJTkdfQ0FTRShjcnRjX3N0YXRlLT5nYW1tYV9tb2RlKTsKPiAr CQlyZXR1cm4gMDsKPiArCX0KPiArCj4gK30KPiArCj4gIGludCBpbnRlbF9jb2xvcl9nZXRfZ2Ft bWFfYml0X3ByZWNpc2lvbihjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSkKPiAgewo+ICAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNf c3RhdGUtPmJhc2UuY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAgCj4gLQlpZiAoIWNydGNfc3RhdGUtPmdhbW1h X2VuYWJsZSkKPiAtCQlyZXR1cm4gMDsKPiAtCgpXaHk/Cgo+ICAJaWYgKEhBU19HTUNIKGRldl9w cml2KSkgewo+ICAJCWlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiAgCQkJcmV0dXJuIGNo dl9nYW1tYV9wcmVjaXNpb24oY3J0Y19zdGF0ZSk7Cj4gIAkJZWxzZQo+ICAJCQlyZXR1cm4gaTl4 eF9nYW1tYV9wcmVjaXNpb24oY3J0Y19zdGF0ZSk7Cj4gIAl9IGVsc2Ugewo+IC0JCWlmIChJU19D QU5OT05MQUtFKGRldl9wcml2KSB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSkKPiArCQlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkKPiArCQkJcmV0dXJuIGljbF9nYW1tYV9wcmVjaXNp b24oY3J0Y19zdGF0ZSk7Cj4gKwkJZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikgfHwg SVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCj4gIAkJCXJldHVybiBnbGtfZ2FtbWFfcHJlY2lzaW9u KGNydGNfc3RhdGUpOwo+ICAJCWVsc2UgaWYgKElTX0lST05MQUtFKGRldl9wcml2KSkKPiAgCQkJ cmV0dXJuIGlsa19nYW1tYV9wcmVjaXNpb24oY3J0Y19zdGF0ZSk7Cj4gQEAgLTE0NjMsNiArMTQ5 MywzMCBAQCBzdGF0aWMgYm9vbCBpbnRlbF9jb2xvcl9sdXRfZW50cnlfZXF1YWwoc3RydWN0IGRy bV9jb2xvcl9sdXQgKmx1dDEsCj4gIAlyZXR1cm4gdHJ1ZTsKPiAgfQo+ICAKPiArc3RhdGljIGJv b2wgaW50ZWxfY29sb3JfbHV0X2VudHJ5X211bHRpX2VxdWFsKHN0cnVjdCBkcm1fY29sb3JfbHV0 ICpsdXQxLAo+ICsJCQkJCSAgICAgIHN0cnVjdCBkcm1fY29sb3JfbHV0ICpsdXQyLAo+ICsJCQkJ CSAgICAgIGludCBsdXRfc2l6ZSwgdTMyIGVycikKPiArewo+ICsJaW50IGk7Cj4gKwo+ICsJZm9y IChpID0gMDsgaSA8IDk7IGkrKykgewo+ICsJCWlmICghZXJyX2NoZWNrKCZsdXQxW2ldLCAmbHV0 MltpXSwgZXJyKSkKPiArCQkJcmV0dXJuIGZhbHNlOwo+ICsJfQo+ICsKPiArCWZvciAoaSA9IDE7 IGkgPCAgMjU3OyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICBeCiAgICAgICAgICAgICAg ICAgICAgICAgZXh0cmEgc3BhY2UKCj4gKwkJaWYgKCFlcnJfY2hlY2soJmx1dDFbaSAqIDhdLCAm bHV0MltpICogOF0sIGVycikpCj4gKwkJCXJldHVybiBmYWxzZTsKPiArCX0KCmkgPT0gOCB3aWxs IGJlIGNoZWNrZWQgdHdpY2UuCgo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykgewo+ ICsJCWlmICghZXJyX2NoZWNrKCZsdXQxW2kgKiA4ICogMTI4XSwgJmx1dDJbaSAqIDggKiAxMjhd LCBlcnIpKQo+ICsJCQlyZXR1cm4gZmFsc2U7Cj4gKwl9CgppID09IDAgd2lsbCBiZSBjaGVja2Vk IHR3aWNlLgoKSSBub3RlIHRoYXQgdGhlc2UgaW5kaWNlcyBtYXRjaCB0aGUgcHJvZ3JhbW1pbmcg cGFydCwgc28gbWF5YmUgYmV0dGVyIHRvCmtlZXAgdGhlbSBhcyB0aGV5IGFyZSBoZXJlLiBObyBo YXJtIGRvbmUgSSBndWVzcy4KCj4gKwo+ICsJcmV0dXJuIHRydWU7Cj4gK30KPiArCj4gIGJvb2wg aW50ZWxfY29sb3JfbHV0X2VxdWFsKHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqYmxvYjEsCj4g IAkJCSAgIHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqYmxvYjIsCj4gIAkJCSAgIHUzMiBnYW1t YV9tb2RlLCB1MzIgYml0X3ByZWNpc2lvbikKPiBAQCAtMTQ4MSwxNiArMTUzNSw4IEBAIGJvb2wg aW50ZWxfY29sb3JfbHV0X2VxdWFsKHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqYmxvYjEsCj4g IAlsdXRfc2l6ZTIgPSBkcm1fY29sb3JfbHV0X3NpemUoYmxvYjIpOwo+ICAKPiAgCS8qIGNoZWNr IHN3IGFuZCBodyBsdXQgc2l6ZSAqLwo+IC0Jc3dpdGNoIChnYW1tYV9tb2RlKSB7Cj4gLQljYXNl IEdBTU1BX01PREVfTU9ERV84QklUOgo+IC0JY2FzZSBHQU1NQV9NT0RFX01PREVfMTBCSVQ6Cj4g LQkJaWYgKGx1dF9zaXplMSAhPSBsdXRfc2l6ZTIpCj4gLQkJCXJldHVybiBmYWxzZTsKPiAtCQli cmVhazsKPiAtCWRlZmF1bHQ6Cj4gLQkJTUlTU0lOR19DQVNFKGdhbW1hX21vZGUpOwo+IC0JCQly ZXR1cm4gZmFsc2U7Cj4gLQl9Cj4gKwlpZiAobHV0X3NpemUxICE9IGx1dF9zaXplMikKPiArCQly ZXR1cm4gZmFsc2U7Cj4gIAo+ICAJbHV0MSA9IGJsb2IxLT5kYXRhOwo+ICAJbHV0MiA9IGJsb2Iy LT5kYXRhOwo+IEBAIC0xNDk4LDEzICsxNTQ0LDE4IEBAIGJvb2wgaW50ZWxfY29sb3JfbHV0X2Vx dWFsKHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqYmxvYjEsCj4gIAllcnIgPSAweGZmZmYgPj4g Yml0X3ByZWNpc2lvbjsKPiAgCj4gIAkvKiBjaGVjayBzdyBhbmQgaHcgbHV0IGVudHJ5IHRvIGJl IGVxdWFsICovCj4gLQlzd2l0Y2ggKGdhbW1hX21vZGUpIHsKPiArCXN3aXRjaCAoZ2FtbWFfbW9k ZSAmIEdBTU1BX01PREVfTU9ERV9NQVNLKSB7Cj4gIAljYXNlIEdBTU1BX01PREVfTU9ERV84QklU Ogo+ICAJY2FzZSBHQU1NQV9NT0RFX01PREVfMTBCSVQ6Cj4gIAkJaWYgKCFpbnRlbF9jb2xvcl9s dXRfZW50cnlfZXF1YWwobHV0MSwgbHV0MiwKPiAgCQkJCQkJIGx1dF9zaXplMiwgZXJyKSkKPiAg CQkJcmV0dXJuIGZhbHNlOwo+ICAJCWJyZWFrOwo+ICsJY2FzZSBHQU1NQV9NT0RFX01PREVfMTJC SVRfTVVMVElfU0VHTUVOVEVEOgo+ICsJCWlmICghaW50ZWxfY29sb3JfbHV0X2VudHJ5X211bHRp X2VxdWFsKGx1dDEsIGx1dDIsCj4gKwkJCQkJCSAgICAgICBsdXRfc2l6ZTIsIGVycikpCj4gKwkJ CXJldHVybiBmYWxzZTsKPiArCQlicmVhazsKPiAgCWRlZmF1bHQ6Cj4gIAkJTUlTU0lOR19DQVNF KGdhbW1hX21vZGUpOwo+ICAJCQlyZXR1cm4gZmFsc2U7Cj4gQEAgLTE3NDQsNiArMTc5NSwxNTcg QEAgc3RhdGljIHZvaWQgZ2xrX3JlYWRfbHV0cyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSkKPiAgCQljcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dCA9IGdsa19yZWFkX2x1dF8x MChjcnRjX3N0YXRlLCBQQUxfUFJFQ19JTkRFWF9WQUxVRSgwKSk7Cj4gIH0KPiAgCj4gK3N0YXRp YyBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqCj4gK2ljbF9jb21wdXRlX2ludGVycG9sYXRlZF9nYW1t YV9ibG9iKHN0cnVjdCBkcm1fY29sb3JfbHV0ICp0bXBfbHV0LAo+ICsJCQkJICAgIHN0cnVjdCBk cm1fY29sb3JfbHV0ICpsdXQsIHUzMiBsdXRfc2l6ZSkKPiArewoKSSB0aGluayB5b3Ugc2hvdWxk IGp1c3QgcGFzcyBpbiB0aGUgdGhlIGFjdHVhbCBsdXQsIGFuZCBub3QgdXNlIGEgdGVtcApsdXQg YXQgYWxsLiBTZWUgbXkgY29tbWVudHMgYmVsb3cgZm9yIGljbF9yZWFkX2x1dF9tdWx0aV9zZWco KSBmdW5jdGlvbi4KCj4gKwlfX3UxNiBhX3JlZCwgYl9yZWQsIGFfZ3JlZW4sIGJfZ3JlZW4sIGFf Ymx1ZSwgYl9ibHVlOwo+ICsJX191MTYgcmVkX3N0ZXAsIGdyZWVuX3N0ZXAsIGJsdWVfc3RlcDsK CnUxNiwgbm90IF9fdTE2LgoKPiArCWludCBpLCBqLCBrLCBtLCBuOwo+ICsKPiArCWZvciAoaSA9 IDAsIGsgPSAwOyBrIDwgOTsgaSsrLCBrKyspIHsKPiArCQlsdXRbaV0ucmVkID0gdG1wX2x1dFtr XS5yZWQ7Cj4gKwkJbHV0W2ldLmdyZWVuID0gdG1wX2x1dFtrXS5ncmVlbjsKPiArCQlsdXRbaV0u Ymx1ZSA9IHRtcF9sdXRba10uYmx1ZTsKPiArCX0KCldpdGggYSBzaW5nbGUgbHV0LCB5b3UgY2Fu IHNraXAgdGhpcy4KCj4gKwo+ICsJZm9yIChrID0gOTsgayA8IDI2NDsgaysrKSB7Cj4gKwkJYV9y ZWQgPSB0bXBfbHV0W2tdLnJlZDsKPiArCQliX3JlZCA9IHRtcF9sdXRbayArIDFdLnJlZDsKPiAr CQlyZWRfc3RlcCA9IChiX3JlZCAtIGFfcmVkKSAvIDg7Cj4gKwo+ICsJCWFfZ3JlZW4gPSB0bXBf bHV0W2tdLmdyZWVuOwo+ICsJCWJfZ3JlZW4gPSB0bXBfbHV0W2sgKyAxXS5ncmVlbjsKPiArCQln cmVlbl9zdGVwID0gKGJfZ3JlZW4gLSBhX2dyZWVuKSAvIDg7Cj4gKwo+ICsJCWFfYmx1ZSA9IHRt cF9sdXRba10uYmx1ZTsKPiArCQliX2JsdWUgPSB0bXBfbHV0W2sgKyAxXS5ibHVlOwo+ICsJCWJs dWVfc3RlcCA9IChiX2JsdWUgLSBhX2JsdWUpIC8gODsKPiArCj4gKwkJZm9yIChqID0gMDsgaiA8 IDg7IGorKykgewo+ICsJCQlsdXRbaV0ucmVkID0gbHV0W2kgLSAxXS5yZWQgKyByZWRfc3RlcDsK PiArCQkJbHV0W2ldLmdyZWVuID0gbHV0W2kgLSAxXS5ncmVlbiArIGdyZWVuX3N0ZXA7Cj4gKwkJ CWx1dFtpXS5ibHVlID0gbHV0W2kgLSAxXS5ibHVlICsgYmx1ZV9zdGVwOwo+ICsKPiArCQkJaSsr Owo+ICsJCX0KPiArCX0KClRoaXMgd291bGQgYmUgd3JpdHRlbiBpbiBhIHdheSB0byBvbmx5IGNv dmVyIHRoZSB2YWx1ZXMgdGhhdCBuZWVkIHRvIGJlCmludGVycG9sYXRlZC4KCglmb3IgKGkgPSAx OyBpIDwgMjU3IC0gMTsgaSsrKSB7CiAgICAgICAgCXN0YXJ0ID0gaSAqIDg7CiAgICAgICAgICAg ICAgICBlbmQgPSAoaSArIDEpICogODsKICAgICAgICAgICAgICAgIHN0ZXBzID0gZW5kIC0gc3Rh cnQ7CgogICAgICAgICAgICAgICAgZm9yIChqID0gc3RhcnQgKyAxOyBqIDwgZW5kOyBqKyspIHsK ICAgICAgICAgICAgICAgIH0KICAgICAgICB9CgpGaWxsIGluIHRoZSBnYXBzLiBGb3IgbWUgSSB0 aGluayB0aGlzIGlzIGVhc2llciB0byBncmFzcCBhbmQgY29tcGFyZQphZ2FpbnN0IHRoZSByZWFk b3V0IGFuZCB3cml0ZS4gSSBmaW5kIGl0IHZlcnkgaGFyZCB0byBjaGVjayB0aGUgcmFuZ2VzCmlu IHRoZSBsb29wcy4KCj4gKwo+ICsJZm9yIChrID0gMjY1OyBrIDwgNTIxOyBrKyspIHsKPiArCQlh X3JlZCA9IHRtcF9sdXRba10ucmVkOwo+ICsJCWJfcmVkID0gdG1wX2x1dFtrICsgMV0ucmVkOwo+ ICsJCXJlZF9zdGVwID0gKChiX3JlZCAtIGFfcmVkKSAvIDEyNykgLyA4Owo+ICsKPiArCQlhX2dy ZWVuID0gdG1wX2x1dFtrXS5ncmVlbjsKPiArCQliX2dyZWVuID0gdG1wX2x1dFtrICsgMV0uZ3Jl ZW47Cj4gKwkJZ3JlZW5fc3RlcCA9ICgoYl9ncmVlbiAtIGFfZ3JlZW4pIC8gMTI3KSAvIDg7Cj4g Kwo+ICsJCWFfYmx1ZSA9IHRtcF9sdXRba10uYmx1ZTsKPiArCQliX2JsdWUgPSB0bXBfbHV0W2sg KyAxXS5ibHVlOwo+ICsJCWJsdWVfc3RlcCA9ICgoYl9ibHVlIC0gYV9ibHVlKSAvIDEyNykgLyA4 Owo+ICsKPiArCQlmb3IgKG0gPSAwOyBtIDwgMTI3OyBtKyspIHsKPiArCQkJZm9yIChuID0gMDsg biA8IDg7IG4rKykgewo+ICsJCQkJbHV0W2ldLnJlZCA9IGx1dFtpIC0gMV0ucmVkICsgcmVkX3N0 ZXA7Cj4gKwkJCQlsdXRbaV0uZ3JlZW4gPSBsdXRbaSAtIDFdLmdyZWVuICsgZ3JlZW5fc3RlcDsK PiArCQkJCWx1dFtpXS5ibHVlID0gbHV0W2kgLSAxXS5ibHVlICsgYmx1ZV9zdGVwOwo+ICsKPiAr CQkJCWkrKzsKPiArCQkJfQo+ICsJCX0KPiArCX0KClNpbWlsYXJseToKCglmb3IgKGkgPSAwOyBp IDwgMjU2IC0gMTsgaSsrKSB7CiAgICAgICAgCXN0YXJ0ID0gaSAqIDggKiAxMjg7CiAgICAgICAg ICAgICAgICBlbmQgPSAoaSArIDEpICogOCAqIDEyODsKICAgICAgICAgICAgICAgIHN0ZXBzID0g ZW5kIC0gc3RhcnQ7CgogICAgICAgICAgICAgICAgZm9yIChqID0gc3RhcnQgKyAxOyBqIDwgZW5k OyBqKyspIHsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CgoKPiArCj4gKwlyZXR1cm4gbHV0 Owo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICoKPiAraWNsX3Jl YWRfbHV0X211bHRpX3NlZyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSkKPiArewo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNf c3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiArCWludCBsdXRfc2l6ZSA9IElOVEVMX0lORk8o ZGV2X3ByaXYpLT5jb2xvci5nYW1tYV9sdXRfc2l6ZTsKPiArCWludCB0bXBfbHV0X3NpemUgPSA1 MjI7Cj4gKwllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gKwlzdHJ1Y3QgZHJtX3Byb3Bl cnR5X2Jsb2IgKmJsb2IsICp0bXBfYmxvYjsKPiArCXN0cnVjdCBkcm1fY29sb3JfbHV0ICpibG9i X2RhdGEsICp0bXBfYmxvYl9kYXRhOwo+ICsJdTMyIGksIHZhbDEsIHZhbDI7Cj4gKwo+ICsJYmxv YiA9IGRybV9wcm9wZXJ0eV9jcmVhdGVfYmxvYigmZGV2X3ByaXYtPmRybSwKPiArCQkJCQlzaXpl b2Yoc3RydWN0IGRybV9jb2xvcl9sdXQpICogbHV0X3NpemUsCj4gKwkJCQkJTlVMTCk7Cj4gKwl0 bXBfYmxvYiA9IGRybV9wcm9wZXJ0eV9jcmVhdGVfYmxvYigmZGV2X3ByaXYtPmRybSwKPiArCQkJ CQkgICAgc2l6ZW9mKHN0cnVjdCBkcm1fY29sb3JfbHV0KSAqIHRtcF9sdXRfc2l6ZSwKPiArCQkJ CQkgICAgTlVMTCk7CgpZb3UgZW5kIHVwIGxlYWtpbmcgdGhlIHRlbXBvcmFyeSBibG9iLiBCdXQg SSBkb24ndCB0aGluayB5b3UgcmVhbGx5IG5lZWQKdGhlIHRlbXBvcmFyeSBibG9iIGF0IGFsbC4g UmVhZCBvbi4KCj4gKwlpZiAoSVNfRVJSKGJsb2IpIHx8IElTX0VSUih0bXBfYmxvYikpCj4gKwkJ cmV0dXJuIE5VTEw7Cj4gKwo+ICsJYmxvYl9kYXRhID0gYmxvYi0+ZGF0YTsKPiArCXRtcF9ibG9i X2RhdGEgPSB0bXBfYmxvYi0+ZGF0YTsKPiArCj4gKwlJOTE1X1dSSVRFKFBSRUNfUEFMX01VTFRJ X1NFR19JTkRFWChwaXBlKSwgUEFMX1BSRUNfQVVUT19JTkNSRU1FTlQpOwo+ICsKPiArCWZvciAo aSA9IDA7IGkgPCA5OyBpKyspIHsKPiArCQl2YWwxID0gSTkxNV9SRUFEKFBSRUNfUEFMX01VTFRJ X1NFR19EQVRBKHBpcGUpKTsKPiArCQl2YWwyID0gSTkxNV9SRUFEKFBSRUNfUEFMX01VTFRJX1NF R19EQVRBKHBpcGUpKTsKPiArCj4gKwkJdG1wX2Jsb2JfZGF0YVtpXS5yZWQgPSBSRUdfRklFTERf R0VUKFBBTF9QUkVDX01VTFRJX1NFR19SRURfVURXX01BU0ssIHZhbDIpIDw8IDYgfAo+ICsJCQkJ ICAgICAgIFJFR19GSUVMRF9HRVQoUEFMX1BSRUNfTVVMVElfU0VHX1JFRF9MRFdfTUFTSywgdmFs MSk7Cj4gKwkJdG1wX2Jsb2JfZGF0YVtpXS5ncmVlbiA9IFJFR19GSUVMRF9HRVQoUEFMX1BSRUNf TVVMVElfU0VHX0dSRUVOX1VEV19NQVNLLCB2YWwyKSA8PCA2IHwKPiArCQkJCQkgUkVHX0ZJRUxE X0dFVChQQUxfUFJFQ19NVUxUSV9TRUdfR1JFRU5fTERXX01BU0ssIHZhbDEpOwo+ICsJCXRtcF9i bG9iX2RhdGFbaV0uYmx1ZSA9IFJFR19GSUVMRF9HRVQoUEFMX1BSRUNfTVVMVElfU0VHX0JMVUVf VURXX01BU0ssIHZhbDIpIDw8IDYgfAo+ICsJCQkJCVJFR19GSUVMRF9HRVQoUEFMX1BSRUNfTVVM VElfU0VHX0JMVUVfTERXX01BU0ssIHZhbDEpOwo+ICsJfQo+ICsKPiArCUk5MTVfV1JJVEUoUFJF Q19QQUxfSU5ERVgocGlwZSksIFBBTF9QUkVDX0FVVE9fSU5DUkVNRU5UKTsKPiArCj4gKwlmb3Ig KGkgPSAxOyBpIDwgMjU3OyBpKyspIHsKPiArCQl2YWwxID0gSTkxNV9SRUFEKFBSRUNfUEFMX0RB VEEocGlwZSkpOwo+ICsJCXZhbDIgPSBJOTE1X1JFQUQoUFJFQ19QQUxfREFUQShwaXBlKSk7Cj4g Kwo+ICsJCXRtcF9ibG9iX2RhdGFbaSArIDhdLnJlZCA9IFJFR19GSUVMRF9HRVQoUEFMX1BSRUNf TVVMVElfU0VHX1JFRF9VRFdfTUFTSywgdmFsMikgPDwgNiB8Cj4gKwkJCQkJICAgUkVHX0ZJRUxE X0dFVChQQUxfUFJFQ19NVUxUSV9TRUdfUkVEX0xEV19NQVNLLCB2YWwxKTsKPiArCQl0bXBfYmxv Yl9kYXRhW2kgKyA4XS5ncmVlbiA9IFJFR19GSUVMRF9HRVQoUEFMX1BSRUNfTVVMVElfU0VHX0dS RUVOX1VEV19NQVNLLCB2YWwyKSA8PCA2IHwKPiArCQkJCQkgICAgIFJFR19GSUVMRF9HRVQoUEFM X1BSRUNfTVVMVElfU0VHX0dSRUVOX0xEV19NQVNLLCB2YWwxKTsKPiArCQl0bXBfYmxvYl9kYXRh W2kgKyA4XS5ibHVlID0gUkVHX0ZJRUxEX0dFVChQQUxfUFJFQ19NVUxUSV9TRUdfQkxVRV9VRFdf TUFTSywgdmFsMikgPDwgNiB8Cj4gKwkJCQkJICAgIFJFR19GSUVMRF9HRVQoUEFMX1BSRUNfTVVM VElfU0VHX0JMVUVfTERXX01BU0ssIHZhbDEpOwo+ICsJfQo+ICsKPiArCWZvciAoaSA9IDA7IGkg PCAyNTY7IGkrKykgewo+ICsJCXZhbDEgPSBJOTE1X1JFQUQoUFJFQ19QQUxfREFUQShwaXBlKSk7 Cj4gKwkJdmFsMiA9IEk5MTVfUkVBRChQUkVDX1BBTF9EQVRBKHBpcGUpKTsKPiArCj4gKwkJdG1w X2Jsb2JfZGF0YVtpICsgMjY1XS5yZWQgPSBSRUdfRklFTERfR0VUKFBBTF9QUkVDX01VTFRJX1NF R19SRURfVURXX01BU0ssIHZhbDIpIDw8IDYgfAo+ICsJCQkJCSAgICAgUkVHX0ZJRUxEX0dFVChQ QUxfUFJFQ19NVUxUSV9TRUdfUkVEX0xEV19NQVNLLCB2YWwxKTsKPiArCQl0bXBfYmxvYl9kYXRh W2kgKyAyNjVdLmdyZWVuID0gUkVHX0ZJRUxEX0dFVChQQUxfUFJFQ19NVUxUSV9TRUdfR1JFRU5f VURXX01BU0ssIHZhbDIpIDw8IDYgfAo+ICsJCQkJCSAgICAgICBSRUdfRklFTERfR0VUKFBBTF9Q UkVDX01VTFRJX1NFR19HUkVFTl9MRFdfTUFTSywgdmFsMSk7Cj4gKwkJdG1wX2Jsb2JfZGF0YVtp ICsgMjY1XS5ibHVlID0gUkVHX0ZJRUxEX0dFVChQQUxfUFJFQ19NVUxUSV9TRUdfQkxVRV9VRFdf TUFTSywgdmFsMikgPDwgNiB8Cj4gKwkJCQkJICAgICAgUkVHX0ZJRUxEX0dFVChQQUxfUFJFQ19N VUxUSV9TRUdfQkxVRV9MRFdfTUFTSywgdmFsMSk7Cj4gKwl9Cj4gKwo+ICsJdG1wX2Jsb2JfZGF0 YVs1MjFdLnJlZCA9IFJFR19GSUVMRF9HRVQoUFJFQ19QQUxfR0NfTUFYX1JHQl9NQVNLLAo+ICsJ CQkJCSAgICAgICBJOTE1X1JFQUQoUFJFQ19QQUxfR0NfTUFYKHBpcGUsIDApKSk7Cj4gKwl0bXBf YmxvYl9kYXRhWzUyMV0uZ3JlZW4gPSBSRUdfRklFTERfR0VUKFBSRUNfUEFMX0dDX01BWF9SR0Jf TUFTSywKPiArCQkJCQkJIEk5MTVfUkVBRChQUkVDX1BBTF9HQ19NQVgocGlwZSwgMSkpKTsKPiAr CXRtcF9ibG9iX2RhdGFbNTIxXS5ibHVlID0gUkVHX0ZJRUxEX0dFVChQUkVDX1BBTF9HQ19NQVhf UkdCX01BU0ssCj4gKwkJCQkJCUk5MTVfUkVBRChQUkVDX1BBTF9HQ19NQVgocGlwZSwgMSkpKTsK CkluIHRoZSBhYm92ZSwgSSB0aGluayB5b3Ugc2hvdWxkIGp1c3QgcmVhZCB0aGUgdmFsdWVzIGRp cmVjdGx5IHRvIHRoZQpyaWdodCBsb2NhdGlvbnMgaW4gdGhlIGFjdHVhbCBibG9iLiBUaGVuIGFs bCB0aGUgaW5kaWNlcyBtYXRjaCB0aGUKcHJvZ3JhbW1pbmcgc2lkZSwgYW5kIGl0J3MgZWFzaWVy IHRvIHJldmlldy4KCj4gKwo+ICsJYmxvYl9kYXRhID0gaWNsX2NvbXB1dGVfaW50ZXJwb2xhdGVk X2dhbW1hX2Jsb2IodG1wX2Jsb2JfZGF0YSwgYmxvYl9kYXRhLCBsdXRfc2l6ZSk7CgpBbmQgdGhl biB5b3UgZmlsbCBpbiB0aGUgZ2FwcyBpbiB0aGUgaW50ZXJwb2xhdGlvbiBmdW5jdGlvbi4KCj4g Kwo+ICsJcmV0dXJuIGJsb2I7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGljbF9yZWFkX2x1dHMo c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gK3sKPiArCWlmICgoY3J0Y19z dGF0ZS0+Z2FtbWFfbW9kZSAmIEdBTU1BX01PREVfTU9ERV9NQVNLKSA9PQo+ICsJICAgIEdBTU1B X01PREVfTU9ERV84QklUKQo+ICsJCWNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0ID0gaTl4eF9y ZWFkX2x1dF84KGNydGNfc3RhdGUpOwo+ICsJZWxzZSBpZiAoKGNydGNfc3RhdGUtPmdhbW1hX21v ZGUgJiBHQU1NQV9NT0RFX01PREVfTUFTSykgPT0KPiArCQkgR0FNTUFfTU9ERV9NT0RFXzEyQklU X01VTFRJX1NFR01FTlRFRCkKPiArCQljcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dCA9IGljbF9y ZWFkX2x1dF9tdWx0aV9zZWcoY3J0Y19zdGF0ZSk7Cj4gKwllbHNlCj4gKwkJY3J0Y19zdGF0ZS0+ YmFzZS5nYW1tYV9sdXQgPSBnbGtfcmVhZF9sdXRfMTAoY3J0Y19zdGF0ZSwgUEFMX1BSRUNfSU5E RVhfVkFMVUUoMCkpOwo+ICt9Cj4gKwo+ICB2b2lkIGludGVsX2NvbG9yX2luaXQoc3RydWN0IGlu dGVsX2NydGMgKmNydGMpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+IEBAIC0xNzg1LDE2ICsxOTg3LDE3IEBAIHZv aWQgaW50ZWxfY29sb3JfaW5pdChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAgCQllbHNlCj4g IAkJCWRldl9wcml2LT5kaXNwbGF5LmNvbG9yX2NvbW1pdCA9IGlsa19jb2xvcl9jb21taXQ7Cj4g IAo+IC0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKQo+ICsJCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDExKSB7Cj4gIAkJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfbHV0cyA9IGlj bF9sb2FkX2x1dHM7Cj4gLQkJZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikgfHwgSVNf R0VNSU5JTEFLRShkZXZfcHJpdikpIHsKPiArCQkJZGV2X3ByaXYtPmRpc3BsYXkucmVhZF9sdXRz ID0gaWNsX3JlYWRfbHV0czsKPiArCQl9IGVsc2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYp IHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKSB7Cj4gIAkJCWRldl9wcml2LT5kaXNwbGF5Lmxv YWRfbHV0cyA9IGdsa19sb2FkX2x1dHM7Cj4gIAkJCWRldl9wcml2LT5kaXNwbGF5LnJlYWRfbHV0 cyA9IGdsa19yZWFkX2x1dHM7Cj4gLQkJfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDgpCj4gKwkJfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpIHsKPiAgCQkJZGV2 X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzID0gYmR3X2xvYWRfbHV0czsKPiAtCQllbHNlIGlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDcpCj4gKwkJfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDcpIHsKPiAgCQkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzID0gaXZiX2xvYWRf bHV0czsKPiAtCQllbHNlIHsKPiArCQl9IGVsc2UgewoKU2hvdWxkbid0IHRoZSBjbGVhbnVwIGJl IHBhcnQgb2YgcGF0Y2ggMT8KCj4gIAkJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfbHV0cyA9IGls a19sb2FkX2x1dHM7Cj4gIAkJCWRldl9wcml2LT5kaXNwbGF5LnJlYWRfbHV0cyA9IGlsa19yZWFk X2x1dHM7Cj4gIAkJfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl Zy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IGluZGV4IGJmMzdlY2UuLjg0 NGRkNjIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBAQCAtMTAzNzgsNiArMTAzNzgs NyBAQCBlbnVtIHNrbF9wb3dlcl9nYXRlIHsKPiAgCj4gICNkZWZpbmUgUFJFQ19QQUxfSU5ERVgo cGlwZSkJCV9NTUlPX1BJUEUocGlwZSwgX1BBTF9QUkVDX0lOREVYX0EsIF9QQUxfUFJFQ19JTkRF WF9CKQo+ICAjZGVmaW5lIFBSRUNfUEFMX0RBVEEocGlwZSkJCV9NTUlPX1BJUEUocGlwZSwgX1BB TF9QUkVDX0RBVEFfQSwgX1BBTF9QUkVDX0RBVEFfQikKPiArI2RlZmluZSBQUkVDX1BBTF9HQ19N QVhfUkdCX01BU0sJIFJFR19HRU5NQVNLKDE1LCAwKQo+ICAjZGVmaW5lIFBSRUNfUEFMX0dDX01B WChwaXBlLCBpKQlfTU1JTyhfUElQRShwaXBlLCBfUEFMX1BSRUNfR0NfTUFYX0EsIF9QQUxfUFJF Q19HQ19NQVhfQikgKyAoaSkgKiA0KQo+ICAjZGVmaW5lIFBSRUNfUEFMX0VYVF9HQ19NQVgocGlw ZSwgaSkJX01NSU8oX1BJUEUocGlwZSwgX1BBTF9QUkVDX0VYVF9HQ19NQVhfQSwgX1BBTF9QUkVD X0VYVF9HQ19NQVhfQikgKyAoaSkgKiA0KQo+ICAjZGVmaW5lIFBSRUNfUEFMX0VYVDJfR0NfTUFY KHBpcGUsIGkpCV9NTUlPKF9QSVBFKHBpcGUsIF9QQUxfUFJFQ19FWFQyX0dDX01BWF9BLCBfUEFM X1BSRUNfRVhUMl9HQ19NQVhfQikgKyAoaSkgKiA0KQo+IEBAIC0xMDQwMSw2ICsxMDQwMiwxMiBA QCBlbnVtIHNrbF9wb3dlcl9nYXRlIHsKPiAgCj4gICNkZWZpbmUgX1BBTF9QUkVDX01VTFRJX1NF R19EQVRBX0EJMHg0QTQwQwo+ICAjZGVmaW5lIF9QQUxfUFJFQ19NVUxUSV9TRUdfREFUQV9CCTB4 NEFDMEMKPiArI2RlZmluZSAgUEFMX1BSRUNfTVVMVElfU0VHX1JFRF9MRFdfTUFTSyAgIFJFR19H RU5NQVNLKDI5LCAyNCkKPiArI2RlZmluZSAgUEFMX1BSRUNfTVVMVElfU0VHX1JFRF9VRFdfTUFT SyAgIFJFR19HRU5NQVNLKDI5LCAyMCkKPiArI2RlZmluZSAgUEFMX1BSRUNfTVVMVElfU0VHX0dS RUVOX0xEV19NQVNLIFJFR19HRU5NQVNLKDE5LCAxNCkKPiArI2RlZmluZSAgUEFMX1BSRUNfTVVM VElfU0VHX0dSRUVOX1VEV19NQVNLIFJFR19HRU5NQVNLKDE5LCAxMCkKPiArI2RlZmluZSAgUEFM X1BSRUNfTVVMVElfU0VHX0JMVUVfTERXX01BU0sgIFJFR19HRU5NQVNLKDksIDQpCj4gKyNkZWZp bmUgIFBBTF9QUkVDX01VTFRJX1NFR19CTFVFX1VEV19NQVNLICBSRUdfR0VOTUFTSyg5LCAwKQo+ ICAKPiAgI2RlZmluZSBQUkVDX1BBTF9NVUxUSV9TRUdfSU5ERVgocGlwZSkJX01NSU9fUElQRShw aXBlLCBcCj4gIAkJCQkJX1BBTF9QUkVDX01VTFRJX1NFR19JTkRFWF9BLCBcCgotLSAKSmFuaSBO aWt1bGEsIEludGVsIE9wZW4gU291cmNlIEdyYXBoaWNzIENlbnRlcgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=