From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Winkler, Tomas" Subject: Re: [PATCH v12 6/6] drm/i915/hdcp: Enable HDCP 1.4 and 2.2 on Gen12+ Date: Wed, 28 Aug 2019 18:50:10 +0000 Message-ID: <5B8DA87D05A7694D9FA63FD143655C1B9DCA74F3@hasmsx108.ger.corp.intel.com> References: <20190828164216.405-1-ramalingam.c@intel.com> <20190828164216.405-7-ramalingam.c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190828164216.405-7-ramalingam.c@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "C, Ramalingam" , intel-gfx , dri-devel Cc: "Nikula, Jani" List-Id: dri-devel@lists.freedesktop.org Tm93IEknbSByZWFkaW5nIHRoaXMgb3RoZXIgcGF0Y2ggYWJvdXQgREcxICcgZHJtL2k5MTUvZGcx OiBJbml0aWFsaXplIERESSBwb3J0cyBmb3IgREcxJyAsIGlzIHRoaXMgY29uZGl0aW9uIHN0aWxs IGNvcnJlY3QgaGVyZT8KSXMgdGhlIGNvbmRpdGlvbiAnSU5URUxfR0VOKGRldl9wcml2KSA+PSAx Micgc3VmZmljaWVudCA/IAo+IAo+ID5Gcm9tIEdlbjEyIG9ud2FyZHMsIEhEQ1AgSFcgYmxvY2sg aXMgaW1wbGVtZW50ZWQgd2l0aGluIHRyYW5zY29kZXJzLgo+IFRpbGwgR2VuMTEgSERDUCBIVyBi bG9jayB3YXMgcGFydCBvZiBEREkuCj4gCj4gSGVuY2UgcmVxdWlyZWQgY2hhbmdlcyBpbiBIVyBw cm9ncmFtbWluZyBpcyBoYW5kbGVkIGhlcmUuCj4gCj4gQXMgTUUgRlcgbmVlZHMgdGhlIHRyYW5z Y29kZXIgZGV0YWlsIG9uIHdoaWNoIEhEQ1AgaXMgZW5hYmxlZCBvbiBHZW4xMisKPiBwbGF0Zm9y bSwgd2UgYXJlIHBvcHVsYXRpbmcgdGhlIGRldGFpbCBpbiBoZGNwX3BvcnRfZGF0YS4KPiAKPiB2 MjoKPiAgIF9NTUlPX1RSQU5TIGlzIHVzZWQgW0x1Y2FzIGFuZCBEYW5pZWxdCj4gICBwbGF0Zm9y bSBjaGVjayBpcyBtb3ZlZCBpbnRvIHRoZSBjYWxsZXIgW0x1Y2FzXQo+IHYzOgo+ICAgcGxhdGZv cm0gY2hlY2sgaXMgbW92ZWQgaW50byBhIG1hY3JvIFtTaGFzaGFua10KPiB2NDoKPiAgIEZldyBv cHRpbWl6YXRpb25zIGluIHRoZSBjb2RpbmcgW1NoYXNoYW5rXQo+IHY1Ogo+ICAgRml4ZWQgYWxp Z25tZW50IGluIG1hY3JvIGRlZmluaXRpb24gaW4gaTkxNV9yZWcuaCBbU2hhc2hhbmtdCj4gICB1 bnVzZWQgdmFyaWFibGVzICJyZWciIGlzIHJlbW92ZWQuCj4gdjY6Cj4gICBDb25maWd1cmluZyB0 aGUgdHJhbnNjb2RlciBhdCBjb21wdXRlX2NvbmZpZy4KPiAgIHRyYW5zY29kZXIgaXMgdXNlZCBp bnN0ZWFkIG9mIHBpcGUgaW4gbWFjcm9zLgo+ICAgUmViYXNlZC4KPiB2NzoKPiAgIHRyYW5zY29k ZXIgaXMgY2FjaGVkIGF0IGludGVsX2hkY3AKPiAgIGhkY3BfcG9ydF9kYXRhIGlzIGNvbmZpZ3Vy ZWQgd2l0aCB0cmFuc2NvZGVyIGluZGV4IGFzcGVyIE1FIEZXLgo+IHY4Ogo+ICAgcy90cmFucy9j cHVfdHJhbnNjb2Rlcgo+ICAgcy90Yy9jcHVfdHJhbnNjb2Rlcgo+IHY5Ogo+ICAgcmVwX2N0bCBp cyBwcmVwYXJlZCBmb3IgVENEIHRvby4KPiAgIHJldHVybiBtb3ZlZCBpbnRvIGRlYXVsdCBvZiBy ZXBfY3RsIHByZXBhcmUgZnVuY3Rpb24gW1NoYXNoYW5rXQo+IAo+IFNpZ25lZC1vZmYtYnk6IFJh bWFsaW5nYW0gQyA8cmFtYWxpbmdhbS5jQGludGVsLmNvbT4KPiBSZXZpZXdlZC1ieTogU2hhc2hh bmsgU2hhcm1hIDxzaGFzaGFuay5zaGFybWFAaW50ZWwuY29tPgo+IEFja2VkLWJ5OiBKYW5pIE5p a3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2hkY3AuYyB8IDE1MiArKysrKysrKysrKysrKy0tLS0tLS0tCj4gZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9oZG1pLmMgfCAgMTAgKy0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgICAgICAgfCAxMjQgKysrKysrKysrKysrKysr Ky0tCj4gIDMgZmlsZXMgY2hhbmdlZCwgMjIxIGluc2VydGlvbnMoKyksIDY1IGRlbGV0aW9ucygt KQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hk Y3AuYwo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9oZGNwLmMKPiBpbmRl eCBlZGNlYzY0YTJjMTEuLmU2OWZhMzQ1MjhkZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2hkY3AuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfaGRjcC5jCj4gQEAgLTIwLDYgKzIwLDcgQEAKPiAgI2luY2x1ZGUgImlu dGVsX2Rpc3BsYXlfdHlwZXMuaCIKPiAgI2luY2x1ZGUgImludGVsX2hkY3AuaCIKPiAgI2luY2x1 ZGUgImludGVsX3NpZGViYW5kLmgiCj4gKyNpbmNsdWRlICJpbnRlbF9jb25uZWN0b3IuaCIKPiAK PiAgI2RlZmluZSBLRVlfTE9BRF9UUklFUwk1Cj4gICNkZWZpbmUgRU5DUllQVF9TVEFUVVNfQ0hB TkdFX1RJTUVPVVRfTVMJNTAKPiBAQCAtMTA3LDI0ICsxMDgsMjAgQEAgYm9vbCBpbnRlbF9oZGNw Ml9jYXBhYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IKPiAqY29ubmVjdG9yKQo+ICAJcmV0dXJu IGNhcGFibGU7Cj4gIH0KPiAKPiAtc3RhdGljIGlubGluZSBib29sIGludGVsX2hkY3BfaW5fdXNl KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArc3RhdGljIGlubGluZQo+ICti b29sIGludGVsX2hkY3BfaW5fdXNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiArCQkgICAgICAgZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyLCBlbnVtIHBvcnQgcG9y dCkKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShj b25uZWN0b3ItPmJhc2UuZGV2KTsKPiAtCWVudW0gcG9ydCBwb3J0ID0gY29ubmVjdG9yLT5lbmNv ZGVyLT5wb3J0Owo+IC0JdTMyIHJlZzsKPiAtCj4gLQlyZWcgPSBJOTE1X1JFQUQoUE9SVF9IRENQ X1NUQVRVUyhwb3J0KSk7Cj4gLQlyZXR1cm4gcmVnICYgSERDUF9TVEFUVVNfRU5DOwo+ICsJcmV0 dXJuIEk5MTVfUkVBRChIRENQX1NUQVRVUyhkZXZfcHJpdiwgY3B1X3RyYW5zY29kZXIsIHBvcnQp KSAmCj4gKwkgICAgICAgSERDUF9TVEFUVVNfRU5DOwo+ICB9Cj4gCj4gLXN0YXRpYyBpbmxpbmUg Ym9vbCBpbnRlbF9oZGNwMl9pbl91c2Uoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9y KQo+ICtzdGF0aWMgaW5saW5lCj4gK2Jvb2wgaW50ZWxfaGRjcDJfaW5fdXNlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2Nv ZGVyLCBlbnVtIHBvcnQgcG9ydCkKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiAtCWVudW0gcG9ydCBwb3J0 ID0gY29ubmVjdG9yLT5lbmNvZGVyLT5wb3J0Owo+IC0JdTMyIHJlZzsKPiAtCj4gLQlyZWcgPSBJ OTE1X1JFQUQoSERDUDJfU1RBVFVTX0RESShwb3J0KSk7Cj4gLQlyZXR1cm4gcmVnICYgTElOS19F TkNSWVBUSU9OX1NUQVRVUzsKPiArCXJldHVybiBJOTE1X1JFQUQoSERDUDJfU1RBVFVTKGRldl9w cml2LCBjcHVfdHJhbnNjb2RlciwgcG9ydCkpICYKPiArCSAgICAgICBMSU5LX0VOQ1JZUFRJT05f U1RBVFVTOwo+ICB9Cj4gCj4gIHN0YXRpYyBpbnQgaW50ZWxfaGRjcF9wb2xsX2tzdl9maWZvKHN0 cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+IEBAIC0yNTUsOSArMjUy LDI5IEBAIHN0YXRpYyBpbnQgaW50ZWxfd3JpdGVfc2hhX3RleHQoc3RydWN0Cj4gZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBzaGFfdGV4dCkgIH0KPiAKPiAgc3RhdGljCj4gLXUzMiBp bnRlbF9oZGNwX2dldF9yZXBlYXRlcl9jdGwoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50 ZWxfZGlnX3BvcnQpCj4gK3UzMiBpbnRlbF9oZGNwX2dldF9yZXBlYXRlcl9jdGwoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFu c2NvZGVyLCBlbnVtIHBvcnQKPiBwb3J0KQo+ICB7Cj4gLQllbnVtIHBvcnQgcG9ydCA9IGludGVs X2RpZ19wb3J0LT5iYXNlLnBvcnQ7Cj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMikg ewo+ICsJCXN3aXRjaCAoY3B1X3RyYW5zY29kZXIpIHsKPiArCQljYXNlIFRSQU5TQ09ERVJfQToK PiArCQkJcmV0dXJuIEhEQ1BfVFJBTlNBX1JFUF9QUkVTRU5UIHwKPiArCQkJICAgICAgIEhEQ1Bf VFJBTlNBX1NIQTFfTTA7Cj4gKwkJY2FzZSBUUkFOU0NPREVSX0I6Cj4gKwkJCXJldHVybiBIRENQ X1RSQU5TQl9SRVBfUFJFU0VOVCB8Cj4gKwkJCSAgICAgICBIRENQX1RSQU5TQl9TSEExX00wOwo+ ICsJCWNhc2UgVFJBTlNDT0RFUl9DOgo+ICsJCQlyZXR1cm4gSERDUF9UUkFOU0NfUkVQX1BSRVNF TlQgfAo+ICsJCQkgICAgICAgSERDUF9UUkFOU0NfU0hBMV9NMDsKPiArCQljYXNlIFRSQU5TQ09E RVJfRDoKPiArCQkJcmV0dXJuIEhEQ1BfVFJBTlNEX1JFUF9QUkVTRU5UIHwKPiArCQkJICAgICAg IEhEQ1BfVFJBTlNEX1NIQTFfTTA7Cj4gKwkJZGVmYXVsdDoKPiArCQkJRFJNX0VSUk9SKCJVbmtu b3duIHRyYW5zY29kZXIgJWRcbiIsCj4gY3B1X3RyYW5zY29kZXIpOwo+ICsJCQlyZXR1cm4gLUVJ TlZBTDsKPiArCQl9Cj4gKwl9Cj4gKwo+ICAJc3dpdGNoIChwb3J0KSB7Cj4gIAljYXNlIFBPUlRf QToKPiAgCQlyZXR1cm4gSERDUF9ERElBX1JFUF9QUkVTRU5UIHwgSERDUF9ERElBX1NIQTFfTTA7 Cj4gQEAgLTI3MCwxOCArMjg3LDIwIEBAIHUzMiBpbnRlbF9oZGNwX2dldF9yZXBlYXRlcl9jdGwo c3RydWN0Cj4gaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCkKPiAgCWNhc2UgUE9S VF9FOgo+ICAJCXJldHVybiBIRENQX0RESUVfUkVQX1BSRVNFTlQgfCBIRENQX0RESUVfU0hBMV9N MDsKPiAgCWRlZmF1bHQ6Cj4gLQkJYnJlYWs7Cj4gKwkJRFJNX0VSUk9SKCJVbmtub3duIHBvcnQg JWRcbiIsIHBvcnQpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICAJfQo+IC0JRFJNX0VSUk9SKCJV bmtub3duIHBvcnQgJWRcbiIsIHBvcnQpOwo+IC0JcmV0dXJuIC1FSU5WQUw7Cj4gIH0KPiAKPiAg c3RhdGljCj4gLWludCBpbnRlbF9oZGNwX3ZhbGlkYXRlX3ZfcHJpbWUoc3RydWN0IGludGVsX2Rp Z2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4gK2ludCBpbnRlbF9oZGNwX3ZhbGlkYXRlX3Zf cHJpbWUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAJCQkJY29uc3Qgc3Ry dWN0IGludGVsX2hkY3Bfc2hpbSAqc2hpbSwKPiAgCQkJCXU4ICprc3ZfZmlmbywgdTggbnVtX2Rv d25zdHJlYW0sIHU4Cj4gKmJzdGF0dXMpICB7Cj4gKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0 ICppbnRlbF9kaWdfcG9ydCA9Cj4gK2Nvbm5fdG9fZGlnX3BvcnQoY29ubmVjdG9yKTsKPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdjsKPiArCWVudW0gdHJhbnNjb2RlciBjcHVf dHJhbnNjb2RlciA9IGNvbm5lY3Rvci0+aGRjcC5jcHVfdHJhbnNjb2RlcjsKPiArCWVudW0gcG9y dCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQtPmJhc2UucG9ydDsKPiAgCXUzMiB2cHJpbWUsIHNoYV90 ZXh0LCBzaGFfbGVmdG92ZXJzLCByZXBfY3RsOwo+ICAJaW50IHJldCwgaSwgaiwgc2hhX2lkeDsK PiAKPiBAQCAtMzA4LDcgKzMyNyw3IEBAIGludCBpbnRlbF9oZGNwX3ZhbGlkYXRlX3ZfcHJpbWUo c3RydWN0Cj4gaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPiAgCXNoYV9pZHgg PSAwOwo+ICAJc2hhX3RleHQgPSAwOwo+ICAJc2hhX2xlZnRvdmVycyA9IDA7Cj4gLQlyZXBfY3Rs ID0gaW50ZWxfaGRjcF9nZXRfcmVwZWF0ZXJfY3RsKGludGVsX2RpZ19wb3J0KTsKPiArCXJlcF9j dGwgPSBpbnRlbF9oZGNwX2dldF9yZXBlYXRlcl9jdGwoZGV2X3ByaXYsIGNwdV90cmFuc2NvZGVy LCBwb3J0KTsKPiAgCUk5MTVfV1JJVEUoSERDUF9SRVBfQ1RMLCByZXBfY3RsIHwgSERDUF9TSEEx X1RFWFRfMzIpOwo+ICAJZm9yIChpID0gMDsgaSA8IG51bV9kb3duc3RyZWFtOyBpKyspIHsKPiAg CQl1bnNpZ25lZCBpbnQgc2hhX2VtcHR5Owo+IEBAIC01NTAsNyArNTY5LDcgQEAgaW50IGludGVs X2hkY3BfYXV0aF9kb3duc3RyZWFtKHN0cnVjdAo+IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9y KQo+ICAJICogViBwcmltZSBhdGxlYXN0IHR3aWNlLgo+ICAJICovCj4gIAlmb3IgKGkgPSAwOyBp IDwgdHJpZXM7IGkrKykgewo+IC0JCXJldCA9IGludGVsX2hkY3BfdmFsaWRhdGVfdl9wcmltZShp bnRlbF9kaWdfcG9ydCwgc2hpbSwKPiArCQlyZXQgPSBpbnRlbF9oZGNwX3ZhbGlkYXRlX3ZfcHJp bWUoY29ubmVjdG9yLCBzaGltLAo+ICAJCQkJCQkgIGtzdl9maWZvLCBudW1fZG93bnN0cmVhbSwK PiAgCQkJCQkJICBic3RhdHVzKTsKPiAgCQlpZiAoIXJldCkKPiBAQCAtNTc4LDYgKzU5Nyw3IEBA IHN0YXRpYyBpbnQgaW50ZWxfaGRjcF9hdXRoKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IKPiAqY29u bmVjdG9yKQo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+YmFzZS5kZXY7 Cj4gIAljb25zdCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltICpzaGltID0gaGRjcC0+c2hpbTsKPiAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdjsKPiArCWVudW0gdHJhbnNjb2RlciBj cHVfdHJhbnNjb2RlciA9IGNvbm5lY3Rvci0+aGRjcC5jcHVfdHJhbnNjb2RlcjsKPiAgCWVudW0g cG9ydCBwb3J0Owo+ICAJdW5zaWduZWQgbG9uZyByMF9wcmltZV9nZW5fc3RhcnQ7Cj4gIAlpbnQg cmV0LCBpLCB0cmllcyA9IDI7Cj4gQEAgLTYxNywxOCArNjM3LDIxIEBAIHN0YXRpYyBpbnQgaW50 ZWxfaGRjcF9hdXRoKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IKPiAqY29ubmVjdG9yKQo+IAo+ICAJ LyogSW5pdGlhbGl6ZSBBbiB3aXRoIDIgcmFuZG9tIHZhbHVlcyBhbmQgYWNxdWlyZSBpdCAqLwo+ ICAJZm9yIChpID0gMDsgaSA8IDI7IGkrKykKPiAtCQlJOTE1X1dSSVRFKFBPUlRfSERDUF9BTklO SVQocG9ydCksIGdldF9yYW5kb21fdTMyKCkpOwo+IC0JSTkxNV9XUklURShQT1JUX0hEQ1BfQ09O Rihwb3J0KSwgSERDUF9DT05GX0NBUFRVUkVfQU4pOwo+ICsJCUk5MTVfV1JJVEUoSERDUF9BTklO SVQoZGV2X3ByaXYsIGNwdV90cmFuc2NvZGVyLCBwb3J0KSwKPiArCQkJICAgZ2V0X3JhbmRvbV91 MzIoKSk7Cj4gKwlJOTE1X1dSSVRFKEhEQ1BfQ09ORihkZXZfcHJpdiwgY3B1X3RyYW5zY29kZXIs IHBvcnQpLAo+ICsJCSAgIEhEQ1BfQ09ORl9DQVBUVVJFX0FOKTsKPiAKPiAgCS8qIFdhaXQgZm9y IEFuIHRvIGJlIGFjcXVpcmVkICovCj4gLQlpZiAoaW50ZWxfZGVfd2FpdF9mb3Jfc2V0KGRldl9w cml2LCBQT1JUX0hEQ1BfU1RBVFVTKHBvcnQpLAo+ICsJaWYgKGludGVsX2RlX3dhaXRfZm9yX3Nl dChkZXZfcHJpdiwKPiArCQkJCSAgSERDUF9TVEFUVVMoZGV2X3ByaXYsIGNwdV90cmFuc2NvZGVy LAo+IHBvcnQpLAo+ICAJCQkJICBIRENQX1NUQVRVU19BTl9SRUFEWSwgMSkpIHsKPiAgCQlEUk1f RVJST1IoIlRpbWVkIG91dCB3YWl0aW5nIGZvciBBblxuIik7Cj4gIAkJcmV0dXJuIC1FVElNRURP VVQ7Cj4gIAl9Cj4gCj4gLQlhbi5yZWdbMF0gPSBJOTE1X1JFQUQoUE9SVF9IRENQX0FOTE8ocG9y dCkpOwo+IC0JYW4ucmVnWzFdID0gSTkxNV9SRUFEKFBPUlRfSERDUF9BTkhJKHBvcnQpKTsKPiAr CWFuLnJlZ1swXSA9IEk5MTVfUkVBRChIRENQX0FOTE8oZGV2X3ByaXYsIGNwdV90cmFuc2NvZGVy LCBwb3J0KSk7Cj4gKwlhbi5yZWdbMV0gPSBJOTE1X1JFQUQoSERDUF9BTkhJKGRldl9wcml2LCBj cHVfdHJhbnNjb2RlciwgcG9ydCkpOwo+ICAJcmV0ID0gc2hpbS0+d3JpdGVfYW5fYWtzdihpbnRl bF9kaWdfcG9ydCwgYW4uc2hpbSk7Cj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gQEAg LTY0NiwyNCArNjY5LDI2IEBAIHN0YXRpYyBpbnQgaW50ZWxfaGRjcF9hdXRoKHN0cnVjdCBpbnRl bF9jb25uZWN0b3IKPiAqY29ubmVjdG9yKQo+ICAJCXJldHVybiAtRVBFUk07Cj4gIAl9Cj4gCj4g LQlJOTE1X1dSSVRFKFBPUlRfSERDUF9CS1NWTE8ocG9ydCksIGJrc3YucmVnWzBdKTsKPiAtCUk5 MTVfV1JJVEUoUE9SVF9IRENQX0JLU1ZISShwb3J0KSwgYmtzdi5yZWdbMV0pOwo+ICsJSTkxNV9X UklURShIRENQX0JLU1ZMTyhkZXZfcHJpdiwgY3B1X3RyYW5zY29kZXIsIHBvcnQpLAo+IGJrc3Yu cmVnWzBdKTsKPiArCUk5MTVfV1JJVEUoSERDUF9CS1NWSEkoZGV2X3ByaXYsIGNwdV90cmFuc2Nv ZGVyLCBwb3J0KSwKPiBia3N2LnJlZ1sxXSk7Cj4gCj4gIAlyZXQgPSBzaGltLT5yZXBlYXRlcl9w cmVzZW50KGludGVsX2RpZ19wb3J0LCAmcmVwZWF0ZXJfcHJlc2VudCk7Cj4gIAlpZiAocmV0KQo+ ICAJCXJldHVybiByZXQ7Cj4gIAlpZiAocmVwZWF0ZXJfcHJlc2VudCkKPiAgCQlJOTE1X1dSSVRF KEhEQ1BfUkVQX0NUTCwKPiAtCQkJICAgaW50ZWxfaGRjcF9nZXRfcmVwZWF0ZXJfY3RsKGludGVs X2RpZ19wb3J0KSk7Cj4gKwkJCSAgIGludGVsX2hkY3BfZ2V0X3JlcGVhdGVyX2N0bChkZXZfcHJp diwKPiBjcHVfdHJhbnNjb2RlciwKPiArCQkJCQkJICAgICAgIHBvcnQpKTsKPiAKPiAgCXJldCA9 IHNoaW0tPnRvZ2dsZV9zaWduYWxsaW5nKGludGVsX2RpZ19wb3J0LCB0cnVlKTsKPiAgCWlmIChy ZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAKPiAtCUk5MTVfV1JJVEUoUE9SVF9IRENQX0NPTkYocG9y dCksIEhEQ1BfQ09ORl9BVVRIX0FORF9FTkMpOwo+ICsJSTkxNV9XUklURShIRENQX0NPTkYoZGV2 X3ByaXYsIGNwdV90cmFuc2NvZGVyLCBwb3J0KSwKPiArCQkgICBIRENQX0NPTkZfQVVUSF9BTkRf RU5DKTsKPiAKPiAgCS8qIFdhaXQgZm9yIFIwIHJlYWR5ICovCj4gLQlpZiAod2FpdF9mb3IoSTkx NV9SRUFEKFBPUlRfSERDUF9TVEFUVVMocG9ydCkpICYKPiArCWlmICh3YWl0X2ZvcihJOTE1X1JF QUQoSERDUF9TVEFUVVMoZGV2X3ByaXYsIGNwdV90cmFuc2NvZGVyLCBwb3J0KSkKPiAmCj4gIAkJ ICAgICAoSERDUF9TVEFUVVNfUjBfUkVBRFkgfCBIRENQX1NUQVRVU19FTkMpLCAxKSkgewo+ICAJ CURSTV9FUlJPUigiVGltZWQgb3V0IHdhaXRpbmcgZm9yIFIwIHJlYWR5XG4iKTsKPiAgCQlyZXR1 cm4gLUVUSU1FRE9VVDsKPiBAQCAtNjkxLDIyICs3MTYsMjUgQEAgc3RhdGljIGludCBpbnRlbF9o ZGNwX2F1dGgoc3RydWN0IGludGVsX2Nvbm5lY3Rvcgo+ICpjb25uZWN0b3IpCj4gIAkJcmV0ID0g c2hpbS0+cmVhZF9yaV9wcmltZShpbnRlbF9kaWdfcG9ydCwgcmkuc2hpbSk7Cj4gIAkJaWYgKHJl dCkKPiAgCQkJcmV0dXJuIHJldDsKPiAtCQlJOTE1X1dSSVRFKFBPUlRfSERDUF9SUFJJTUUocG9y dCksIHJpLnJlZyk7Cj4gKwkJSTkxNV9XUklURShIRENQX1JQUklNRShkZXZfcHJpdiwgY3B1X3Ry YW5zY29kZXIsIHBvcnQpLAo+IHJpLnJlZyk7Cj4gCj4gIAkJLyogV2FpdCBmb3IgUmkgcHJpbWUg bWF0Y2ggKi8KPiAtCQlpZiAoIXdhaXRfZm9yKEk5MTVfUkVBRChQT1JUX0hEQ1BfU1RBVFVTKHBv cnQpKSAmCj4gKwkJaWYgKCF3YWl0X2ZvcihJOTE1X1JFQUQoSERDUF9TVEFUVVMoZGV2X3ByaXYs Cj4gY3B1X3RyYW5zY29kZXIsCj4gKwkJCQkJCSAgICBwb3J0KSkgJgo+ICAJCSAgICAoSERDUF9T VEFUVVNfUklfTUFUQ0ggfCBIRENQX1NUQVRVU19FTkMpLCAxKSkKPiAgCQkJYnJlYWs7Cj4gIAl9 Cj4gCj4gIAlpZiAoaSA9PSB0cmllcykgewo+ICAJCURSTV9ERUJVR19LTVMoIlRpbWVkIG91dCB3 YWl0aW5nIGZvciBSaSBwcmltZSBtYXRjaAo+ICgleClcbiIsCj4gLQkJCSAgICAgIEk5MTVfUkVB RChQT1JUX0hEQ1BfU1RBVFVTKHBvcnQpKSk7Cj4gKwkJCSAgICAgIEk5MTVfUkVBRChIRENQX1NU QVRVUyhkZXZfcHJpdiwKPiBjcHVfdHJhbnNjb2RlciwKPiArCQkJCQkJICAgIHBvcnQpKSk7Cj4g IAkJcmV0dXJuIC1FVElNRURPVVQ7Cj4gIAl9Cj4gCj4gIAkvKiBXYWl0IGZvciBlbmNyeXB0aW9u IGNvbmZpcm1hdGlvbiAqLwo+IC0JaWYgKGludGVsX2RlX3dhaXRfZm9yX3NldChkZXZfcHJpdiwg UE9SVF9IRENQX1NUQVRVUyhwb3J0KSwKPiArCWlmIChpbnRlbF9kZV93YWl0X2Zvcl9zZXQoZGV2 X3ByaXYsCj4gKwkJCQkgIEhEQ1BfU1RBVFVTKGRldl9wcml2LCBjcHVfdHJhbnNjb2RlciwKPiBw b3J0KSwKPiAgCQkJCSAgSERDUF9TVEFUVVNfRU5DLAo+ICAJCQkJICBFTkNSWVBUX1NUQVRVU19D SEFOR0VfVElNRU9VVF9NUykpCj4gewo+ICAJCURSTV9FUlJPUigiVGltZWQgb3V0IHdhaXRpbmcg Zm9yIGVuY3J5cHRpb25cbiIpOyBAQCAtCj4gNzMxLDE1ICs3NTksMTcgQEAgc3RhdGljIGludCBf aW50ZWxfaGRjcF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IKPiAqY29ubmVjdG9yKQo+ ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gY29ubmVjdG9yLT5iYXNlLmRl di0KPiA+ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9k aWdfcG9ydCA9Cj4gY29ubl90b19kaWdfcG9ydChjb25uZWN0b3IpOwo+ICAJZW51bSBwb3J0IHBv cnQgPSBpbnRlbF9kaWdfcG9ydC0+YmFzZS5wb3J0Owo+ICsJZW51bSB0cmFuc2NvZGVyIGNwdV90 cmFuc2NvZGVyID0gaGRjcC0+Y3B1X3RyYW5zY29kZXI7Cj4gIAlpbnQgcmV0Owo+IAo+ICAJRFJN X0RFQlVHX0tNUygiWyVzOiVkXSBIRENQIGlzIGJlaW5nIGRpc2FibGVkLi4uXG4iLAo+ICAJCSAg ICAgIGNvbm5lY3Rvci0+YmFzZS5uYW1lLCBjb25uZWN0b3ItPmJhc2UuYmFzZS5pZCk7Cj4gCj4g IAloZGNwLT5oZGNwX2VuY3J5cHRlZCA9IGZhbHNlOwo+IC0JSTkxNV9XUklURShQT1JUX0hEQ1Bf Q09ORihwb3J0KSwgMCk7Cj4gLQlpZiAoaW50ZWxfZGVfd2FpdF9mb3JfY2xlYXIoZGV2X3ByaXYs IFBPUlRfSERDUF9TVEFUVVMocG9ydCksIH4wLAo+IC0JCQkJICAgIEVOQ1JZUFRfU1RBVFVTX0NI QU5HRV9USU1FT1VUX01TKSkKPiB7Cj4gKwlJOTE1X1dSSVRFKEhEQ1BfQ09ORihkZXZfcHJpdiwg Y3B1X3RyYW5zY29kZXIsIHBvcnQpLCAwKTsKPiArCWlmIChpbnRlbF9kZV93YWl0X2Zvcl9jbGVh cihkZXZfcHJpdiwKPiArCQkJCSAgICBIRENQX1NUQVRVUyhkZXZfcHJpdiwgY3B1X3RyYW5zY29k ZXIsCj4gcG9ydCksCj4gKwkJCQkgICAgfjAsCj4gRU5DUllQVF9TVEFUVVNfQ0hBTkdFX1RJTUVP VVRfTVMpKSB7Cj4gIAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZGlzYWJsZSBIRENQLCB0aW1lb3V0 IGNsZWFyaW5nCj4gc3RhdHVzXG4iKTsKPiAgCQlyZXR1cm4gLUVUSU1FRE9VVDsKPiAgCX0KPiBA QCAtODEwLDkgKzg0MCwxMSBAQCBzdGF0aWMgaW50IGludGVsX2hkY3BfY2hlY2tfbGluayhzdHJ1 Y3QgaW50ZWxfY29ubmVjdG9yCj4gKmNvbm5lY3RvcikKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGNvbm5lY3Rvci0+YmFzZS5kZXYtCj4gPmRldl9wcml2YXRlOwo+ICAJ c3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPQo+IGNvbm5fdG9fZGln X3BvcnQoY29ubmVjdG9yKTsKPiAgCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQtPmJh c2UucG9ydDsKPiArCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlcjsKPiAgCWludCByZXQg PSAwOwo+IAo+ICAJbXV0ZXhfbG9jaygmaGRjcC0+bXV0ZXgpOwo+ICsJY3B1X3RyYW5zY29kZXIg PSBoZGNwLT5jcHVfdHJhbnNjb2RlcjsKPiAKPiAgCS8qIENoZWNrX2xpbmsgdmFsaWQgb25seSB3 aGVuIEhEQ1AxLjQgaXMgZW5hYmxlZCAqLwo+ICAJaWYgKGhkY3AtPnZhbHVlICE9IERSTV9NT0RF X0NPTlRFTlRfUFJPVEVDVElPTl9FTkFCTEVEIHx8Cj4gQEAgLTgyMSwxMCArODUzLDExIEBAIHN0 YXRpYyBpbnQgaW50ZWxfaGRjcF9jaGVja19saW5rKHN0cnVjdAo+IGludGVsX2Nvbm5lY3RvciAq Y29ubmVjdG9yKQo+ICAJCWdvdG8gb3V0Owo+ICAJfQo+IAo+IC0JaWYgKFdBUk5fT04oIWludGVs X2hkY3BfaW5fdXNlKGNvbm5lY3RvcikpKSB7Cj4gKwlpZiAoV0FSTl9PTighaW50ZWxfaGRjcF9p bl91c2UoZGV2X3ByaXYsIGNwdV90cmFuc2NvZGVyLCBwb3J0KSkpIHsKPiAgCQlEUk1fRVJST1Io IiVzOiVkIEhEQ1AgbGluayBzdG9wcGVkIGVuY3J5cHRpb24sJXhcbiIsCj4gIAkJCSAgY29ubmVj dG9yLT5iYXNlLm5hbWUsIGNvbm5lY3Rvci0+YmFzZS5iYXNlLmlkLAo+IC0JCQkgIEk5MTVfUkVB RChQT1JUX0hEQ1BfU1RBVFVTKHBvcnQpKSk7Cj4gKwkJCSAgSTkxNV9SRUFEKEhEQ1BfU1RBVFVT KGRldl9wcml2LCBjcHVfdHJhbnNjb2RlciwKPiArCQkJCQkJcG9ydCkpKTsKPiAgCQlyZXQgPSAt RU5YSU87Cj4gIAkJaGRjcC0+dmFsdWUgPSBEUk1fTU9ERV9DT05URU5UX1BST1RFQ1RJT05fREVT SVJFRDsKPiAgCQlzY2hlZHVsZV93b3JrKCZoZGNwLT5wcm9wX3dvcmspOwo+IEBAIC0xNDk1LDEw ICsxNTI4LDExIEBAIHN0YXRpYyBpbnQgaGRjcDJfZW5hYmxlX2VuY3J5cHRpb24oc3RydWN0Cj4g aW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ICAJc3RydWN0IGludGVs X2hkY3AgKmhkY3AgPSAmY29ubmVjdG9yLT5oZGNwOwo+ICAJZW51bSBwb3J0IHBvcnQgPSBjb25u ZWN0b3ItPmVuY29kZXItPnBvcnQ7Cj4gKwllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIg PSBoZGNwLT5jcHVfdHJhbnNjb2RlcjsKPiAgCWludCByZXQ7Cj4gCj4gLQlXQVJOX09OKEk5MTVf UkVBRChIRENQMl9TVEFUVVNfRERJKHBvcnQpKSAmCj4gTElOS19FTkNSWVBUSU9OX1NUQVRVUyk7 Cj4gLQo+ICsJV0FSTl9PTihJOTE1X1JFQUQoSERDUDJfU1RBVFVTKGRldl9wcml2LCBjcHVfdHJh bnNjb2RlciwKPiBwb3J0KSkgJgo+ICsJCUxJTktfRU5DUllQVElPTl9TVEFUVVMpOwo+ICAJaWYg KGhkY3AtPnNoaW0tPnRvZ2dsZV9zaWduYWxsaW5nKSB7Cj4gIAkJcmV0ID0gaGRjcC0+c2hpbS0+ dG9nZ2xlX3NpZ25hbGxpbmcoaW50ZWxfZGlnX3BvcnQsIHRydWUpOwo+ICAJCWlmIChyZXQpIHsK PiBAQCAtMTUwOCwxNCArMTU0MiwxOCBAQCBzdGF0aWMgaW50IGhkY3AyX2VuYWJsZV9lbmNyeXB0 aW9uKHN0cnVjdAo+IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAJCX0KPiAgCX0KPiAK PiAtCWlmIChJOTE1X1JFQUQoSERDUDJfU1RBVFVTX0RESShwb3J0KSkgJiBMSU5LX0FVVEhfU1RB VFVTKSB7Cj4gKwlpZiAoSTkxNV9SRUFEKEhEQ1AyX1NUQVRVUyhkZXZfcHJpdiwgY3B1X3RyYW5z Y29kZXIsIHBvcnQpKSAmCj4gKwkgICAgTElOS19BVVRIX1NUQVRVUykgewo+ICAJCS8qIExpbmsg aXMgQXV0aGVudGljYXRlZC4gTm93IHNldCBmb3IgRW5jcnlwdGlvbiAqLwo+IC0JCUk5MTVfV1JJ VEUoSERDUDJfQ1RMX0RESShwb3J0KSwKPiAtCQkJICAgSTkxNV9SRUFEKEhEQ1AyX0NUTF9EREko cG9ydCkpIHwKPiArCQlJOTE1X1dSSVRFKEhEQ1AyX0NUTChkZXZfcHJpdiwgY3B1X3RyYW5zY29k ZXIsIHBvcnQpLAo+ICsJCQkgICBJOTE1X1JFQUQoSERDUDJfQ1RMKGRldl9wcml2LCBjcHVfdHJh bnNjb2RlciwKPiArCQkJCQkgICAgICAgcG9ydCkpIHwKPiAgCQkJICAgQ1RMX0xJTktfRU5DUllQ VElPTl9SRVEpOwo+ICAJfQo+IAo+IC0JcmV0ID0gaW50ZWxfZGVfd2FpdF9mb3Jfc2V0KGRldl9w cml2LCBIRENQMl9TVEFUVVNfRERJKHBvcnQpLAo+ICsJcmV0ID0gaW50ZWxfZGVfd2FpdF9mb3Jf c2V0KGRldl9wcml2LAo+ICsJCQkJICAgIEhEQ1AyX1NUQVRVUyhkZXZfcHJpdiwgY3B1X3RyYW5z Y29kZXIsCj4gKwkJCQkJCSBwb3J0KSwKPiAgCQkJCSAgICBMSU5LX0VOQ1JZUFRJT05fU1RBVFVT LAo+ICAJCQkJICAgIEVOQ1JZUFRfU1RBVFVTX0NIQU5HRV9USU1FT1VUX01TKTsKPiAKPiBAQCAt MTUyOCwxNCArMTU2NiwxOSBAQCBzdGF0aWMgaW50IGhkY3AyX2Rpc2FibGVfZW5jcnlwdGlvbihz dHJ1Y3QKPiBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4gIAlzdHJ1 Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZjb25uZWN0b3ItPmhkY3A7Cj4gIAllbnVtIHBvcnQgcG9y dCA9IGNvbm5lY3Rvci0+ZW5jb2Rlci0+cG9ydDsKPiArCWVudW0gdHJhbnNjb2RlciBjcHVfdHJh bnNjb2RlciA9IGhkY3AtPmNwdV90cmFuc2NvZGVyOwo+ICAJaW50IHJldDsKPiAKPiAtCVdBUk5f T04oIShJOTE1X1JFQUQoSERDUDJfU1RBVFVTX0RESShwb3J0KSkgJgo+IExJTktfRU5DUllQVElP Tl9TVEFUVVMpKTsKPiArCVdBUk5fT04oIShJOTE1X1JFQUQoSERDUDJfU1RBVFVTKGRldl9wcml2 LCBjcHVfdHJhbnNjb2RlciwKPiBwb3J0KSkgJgo+ICsJCQkgICAgTElOS19FTkNSWVBUSU9OX1NU QVRVUykpOwo+IAo+IC0JSTkxNV9XUklURShIRENQMl9DVExfRERJKHBvcnQpLAo+IC0JCSAgIEk5 MTVfUkVBRChIRENQMl9DVExfRERJKHBvcnQpKSAmCj4gfkNUTF9MSU5LX0VOQ1JZUFRJT05fUkVR KTsKPiArCUk5MTVfV1JJVEUoSERDUDJfQ1RMKGRldl9wcml2LCBjcHVfdHJhbnNjb2RlciwgcG9y dCksCj4gKwkJICAgSTkxNV9SRUFEKEhEQ1AyX0NUTChkZXZfcHJpdiwgY3B1X3RyYW5zY29kZXIs IHBvcnQpKSAmCj4gKwkJICAgfkNUTF9MSU5LX0VOQ1JZUFRJT05fUkVRKTsKPiAKPiAtCXJldCA9 IGludGVsX2RlX3dhaXRfZm9yX2NsZWFyKGRldl9wcml2LCBIRENQMl9TVEFUVVNfRERJKHBvcnQp LAo+ICsJcmV0ID0gaW50ZWxfZGVfd2FpdF9mb3JfY2xlYXIoZGV2X3ByaXYsCj4gKwkJCQkgICAg ICBIRENQMl9TVEFUVVMoZGV2X3ByaXYsIGNwdV90cmFuc2NvZGVyLAo+ICsJCQkJCQkgICBwb3J0 KSwKPiAgCQkJCSAgICAgIExJTktfRU5DUllQVElPTl9TVEFUVVMsCj4gCj4gRU5DUllQVF9TVEFU VVNfQ0hBTkdFX1RJTUVPVVRfTVMpOwo+ICAJaWYgKHJldCA9PSAtRVRJTUVET1VUKQo+IEBAIC0x NjM0LDkgKzE2NzcsMTEgQEAgc3RhdGljIGludCBpbnRlbF9oZGNwMl9jaGVja19saW5rKHN0cnVj dAo+IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiAgCXN0cnVjdCBp bnRlbF9oZGNwICpoZGNwID0gJmNvbm5lY3Rvci0+aGRjcDsKPiAgCWVudW0gcG9ydCBwb3J0ID0g Y29ubmVjdG9yLT5lbmNvZGVyLT5wb3J0Owo+ICsJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2Nv ZGVyOwo+ICAJaW50IHJldCA9IDA7Cj4gCj4gIAltdXRleF9sb2NrKCZoZGNwLT5tdXRleCk7Cj4g KwljcHVfdHJhbnNjb2RlciA9IGhkY3AtPmNwdV90cmFuc2NvZGVyOwo+IAo+ICAJLyogaGRjcDJf Y2hlY2tfbGluayBpcyBleHBlY3RlZCBvbmx5IHdoZW4gSERDUDIuMiBpcyBFbmFibGVkICovCj4g IAlpZiAoaGRjcC0+dmFsdWUgIT0gRFJNX01PREVfQ09OVEVOVF9QUk9URUNUSU9OX0VOQUJMRUQg fHwKPiBAQCAtMTY0NSw5ICsxNjkwLDEwIEBAIHN0YXRpYyBpbnQgaW50ZWxfaGRjcDJfY2hlY2tf bGluayhzdHJ1Y3QKPiBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgCQlnb3RvIG91dDsK PiAgCX0KPiAKPiAtCWlmIChXQVJOX09OKCFpbnRlbF9oZGNwMl9pbl91c2UoY29ubmVjdG9yKSkp IHsKPiArCWlmIChXQVJOX09OKCFpbnRlbF9oZGNwMl9pbl91c2UoZGV2X3ByaXYsIGNwdV90cmFu c2NvZGVyLCBwb3J0KSkpIHsKPiAgCQlEUk1fRVJST1IoIkhEQ1AyLjIgbGluayBzdG9wcGVkIHRo ZSBlbmNyeXB0aW9uLCAleFxuIiwKPiAtCQkJICBJOTE1X1JFQUQoSERDUDJfU1RBVFVTX0RESShw b3J0KSkpOwo+ICsJCQkgIEk5MTVfUkVBRChIRENQMl9TVEFUVVMoZGV2X3ByaXYsCj4gY3B1X3Ry YW5zY29kZXIsCj4gKwkJCQkJCSBwb3J0KSkpOwo+ICAJCXJldCA9IC1FTlhJTzsKPiAgCQloZGNw LT52YWx1ZSA9IERSTV9NT0RFX0NPTlRFTlRfUFJPVEVDVElPTl9ERVNJUkVEOwo+ICAJCXNjaGVk dWxlX3dvcmsoJmhkY3AtPnByb3Bfd29yayk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfaGRtaS5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2hkbWkuYwo+IGluZGV4IGEwZTljYzM1Y2M0Ny4uOTcxMGI4NWQxYWVmIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfaGRtaS5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9oZG1pLmMKPiBAQCAtMTQ5MSw3 ICsxNDkxLDEwIEBAIGJvb2wgaW50ZWxfaGRtaV9oZGNwX2NoZWNrX2xpbmsoc3RydWN0Cj4gaW50 ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCkgIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9Cj4gIAkJaW50ZWxfZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXYtPmRl dl9wcml2YXRlOwo+ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yID0KPiArCQlp bnRlbF9kaWdfcG9ydC0+aGRtaS5hdHRhY2hlZF9jb25uZWN0b3I7Cj4gIAllbnVtIHBvcnQgcG9y dCA9IGludGVsX2RpZ19wb3J0LT5iYXNlLnBvcnQ7Cj4gKwllbnVtIHRyYW5zY29kZXIgY3B1X3Ry YW5zY29kZXIgPSBjb25uZWN0b3ItPmhkY3AuY3B1X3RyYW5zY29kZXI7Cj4gIAlpbnQgcmV0Owo+ ICAJdW5pb24gewo+ICAJCXUzMiByZWc7Cj4gQEAgLTE1MDIsMTMgKzE1MDUsMTQgQEAgYm9vbCBp bnRlbF9oZG1pX2hkY3BfY2hlY2tfbGluayhzdHJ1Y3QKPiBpbnRlbF9kaWdpdGFsX3BvcnQgKmlu dGVsX2RpZ19wb3J0KQo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gCj4gLQlJOTE1 X1dSSVRFKFBPUlRfSERDUF9SUFJJTUUocG9ydCksIHJpLnJlZyk7Cj4gKwlJOTE1X1dSSVRFKEhE Q1BfUlBSSU1FKGRldl9wcml2LCBjcHVfdHJhbnNjb2RlciwgcG9ydCksIHJpLnJlZyk7Cj4gCj4g IAkvKiBXYWl0IGZvciBSaSBwcmltZSBtYXRjaCAqLwo+IC0JaWYgKHdhaXRfZm9yKEk5MTVfUkVB RChQT1JUX0hEQ1BfU1RBVFVTKHBvcnQpKSAmCj4gKwlpZiAod2FpdF9mb3IoSTkxNV9SRUFEKEhE Q1BfU1RBVFVTKGRldl9wcml2LCBjcHVfdHJhbnNjb2RlciwgcG9ydCkpCj4gJgo+ICAJCSAgICAg KEhEQ1BfU1RBVFVTX1JJX01BVENIIHwgSERDUF9TVEFUVVNfRU5DKSwgMSkpIHsKPiAgCQlEUk1f RVJST1IoIlJpJyBtaXNtYXRjaCBkZXRlY3RlZCwgbGluayBjaGVjayBmYWlsZWQgKCV4KVxuIiwK PiAtCQkJICBJOTE1X1JFQUQoUE9SVF9IRENQX1NUQVRVUyhwb3J0KSkpOwo+ICsJCQkgIEk5MTVf UkVBRChIRENQX1NUQVRVUyhkZXZfcHJpdiwgY3B1X3RyYW5zY29kZXIsCj4gKwkJCQkJCXBvcnQp KSk7Cj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAJfQo+ICAJcmV0dXJuIHRydWU7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVnLmggaW5kZXggMDJlMWVmMTBjNDdlLi4zY2ZkYWIxOGMwY2YgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBAQCAtOTI4MSwxMiArOTI4MSwyMCBAQCBlbnVtIHNrbF9w b3dlcl9nYXRlIHsKPiAKPiAgLyogSERDUCBSZXBlYXRlciBSZWdpc3RlcnMgKi8KPiAgI2RlZmlu ZSBIRENQX1JFUF9DVEwJCQlfTU1JTygweDY2ZDAwKQo+ICsjZGVmaW5lICBIRENQX1RSQU5TQV9S RVBfUFJFU0VOVAlCSVQoMzEpCj4gKyNkZWZpbmUgIEhEQ1BfVFJBTlNCX1JFUF9QUkVTRU5UCUJJ VCgzMCkKPiArI2RlZmluZSAgSERDUF9UUkFOU0NfUkVQX1BSRVNFTlQJQklUKDI5KQo+ICsjZGVm aW5lICBIRENQX1RSQU5TRF9SRVBfUFJFU0VOVAlCSVQoMjgpCj4gICNkZWZpbmUgIEhEQ1BfRERJ Ql9SRVBfUFJFU0VOVAkJQklUKDMwKQo+ICAjZGVmaW5lICBIRENQX0RESUFfUkVQX1BSRVNFTlQJ CUJJVCgyOSkKPiAgI2RlZmluZSAgSERDUF9ERElDX1JFUF9QUkVTRU5UCQlCSVQoMjgpCj4gICNk ZWZpbmUgIEhEQ1BfRERJRF9SRVBfUFJFU0VOVAkJQklUKDI3KQo+ICAjZGVmaW5lICBIRENQX0RE SUZfUkVQX1BSRVNFTlQJCUJJVCgyNikKPiAgI2RlZmluZSAgSERDUF9ERElFX1JFUF9QUkVTRU5U CQlCSVQoMjUpCj4gKyNkZWZpbmUgIEhEQ1BfVFJBTlNBX1NIQTFfTTAJCSgxIDw8IDIwKQo+ICsj ZGVmaW5lICBIRENQX1RSQU5TQl9TSEExX00wCQkoMiA8PCAyMCkKPiArI2RlZmluZSAgSERDUF9U UkFOU0NfU0hBMV9NMAkJKDMgPDwgMjApCj4gKyNkZWZpbmUgIEhEQ1BfVFJBTlNEX1NIQTFfTTAJ CSg0IDw8IDIwKQo+ICAjZGVmaW5lICBIRENQX0RESUJfU0hBMV9NMAkJKDEgPDwgMjApCj4gICNk ZWZpbmUgIEhEQ1BfRERJQV9TSEExX00wCQkoMiA8PCAyMCkKPiAgI2RlZmluZSAgSERDUF9ERElD X1NIQTFfTTAJCSgzIDw8IDIwKQo+IEBAIC05MzI2LDE1ICs5MzM0LDkyIEBAIGVudW0gc2tsX3Bv d2VyX2dhdGUgewo+ICAJCQkJCSAgX1BPUlRFX0hEQ1BfQVVUSEVOQywgXAo+ICAJCQkJCSAgX1BP UlRGX0hEQ1BfQVVUSEVOQykgKyAoeCkpCj4gICNkZWZpbmUgUE9SVF9IRENQX0NPTkYocG9ydCkJ CV9QT1JUX0hEQ1BfQVVUSEVOQyhwb3J0LAo+IDB4MCkKPiArI2RlZmluZSBfVFJBTlNBX0hEQ1Bf Q09ORgkJMHg2NjQwMAo+ICsjZGVmaW5lIF9UUkFOU0JfSERDUF9DT05GCQkweDY2NTAwCj4gKyNk ZWZpbmUgVFJBTlNfSERDUF9DT05GKHRyYW5zKQkJX01NSU9fVFJBTlModHJhbnMsCj4gX1RSQU5T QV9IRENQX0NPTkYsIFwKPiArCQkJCQkJICAgIF9UUkFOU0JfSERDUF9DT05GKQo+ICsjZGVmaW5l IEhEQ1BfQ09ORihkZXZfcHJpdiwgdHJhbnMsIHBvcnQpIFwKPiArCQkJCQkoSU5URUxfR0VOKGRl dl9wcml2KSA+PSAxMiA/IFwKPiArCQkJCQkgVFJBTlNfSERDUF9DT05GKHRyYW5zKSA6IFwKPiAr CQkJCQkgUE9SVF9IRENQX0NPTkYocG9ydCkpCj4gKwo+ICAjZGVmaW5lICBIRENQX0NPTkZfQ0FQ VFVSRV9BTgkJQklUKDApCj4gICNkZWZpbmUgIEhEQ1BfQ09ORl9BVVRIX0FORF9FTkMJCShCSVQo MSkgfCBCSVQoMCkpCj4gICNkZWZpbmUgUE9SVF9IRENQX0FOSU5JVChwb3J0KQkJX1BPUlRfSERD UF9BVVRIRU5DKHBvcnQsCj4gMHg0KQo+ICsjZGVmaW5lIF9UUkFOU0FfSERDUF9BTklOSVQJCTB4 NjY0MDQKPiArI2RlZmluZSBfVFJBTlNCX0hEQ1BfQU5JTklUCQkweDY2NTA0Cj4gKyNkZWZpbmUg VFJBTlNfSERDUF9BTklOSVQodHJhbnMpCV9NTUlPX1RSQU5TKHRyYW5zLCBcCj4gKwkJCQkJCSAg ICBfVFJBTlNBX0hEQ1BfQU5JTklULCBcCj4gKwkJCQkJCSAgICBfVFJBTlNCX0hEQ1BfQU5JTklU KQo+ICsjZGVmaW5lIEhEQ1BfQU5JTklUKGRldl9wcml2LCB0cmFucywgcG9ydCkgXAo+ICsJCQkJ CShJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyID8gXAo+ICsJCQkJCSBUUkFOU19IRENQX0FOSU5J VCh0cmFucykgOiBcCj4gKwkJCQkJIFBPUlRfSERDUF9BTklOSVQocG9ydCkpCj4gKwo+ICAjZGVm aW5lIFBPUlRfSERDUF9BTkxPKHBvcnQpCQlfUE9SVF9IRENQX0FVVEhFTkMocG9ydCwKPiAweDgp Cj4gKyNkZWZpbmUgX1RSQU5TQV9IRENQX0FOTE8JCTB4NjY0MDgKPiArI2RlZmluZSBfVFJBTlNC X0hEQ1BfQU5MTwkJMHg2NjUwOAo+ICsjZGVmaW5lIFRSQU5TX0hEQ1BfQU5MTyh0cmFucykJCV9N TUlPX1RSQU5TKHRyYW5zLAo+IF9UUkFOU0FfSERDUF9BTkxPLCBcCj4gKwkJCQkJCSAgICBfVFJB TlNCX0hEQ1BfQU5MTykKPiArI2RlZmluZSBIRENQX0FOTE8oZGV2X3ByaXYsIHRyYW5zLCBwb3J0 KSBcCj4gKwkJCQkJKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIgPyBcCj4gKwkJCQkJIFRSQU5T X0hEQ1BfQU5MTyh0cmFucykgOiBcCj4gKwkJCQkJIFBPUlRfSERDUF9BTkxPKHBvcnQpKQo+ICsK PiAgI2RlZmluZSBQT1JUX0hEQ1BfQU5ISShwb3J0KQkJX1BPUlRfSERDUF9BVVRIRU5DKHBvcnQs Cj4gMHhDKQo+ICsjZGVmaW5lIF9UUkFOU0FfSERDUF9BTkhJCQkweDY2NDBDCj4gKyNkZWZpbmUg X1RSQU5TQl9IRENQX0FOSEkJCTB4NjY1MEMKPiArI2RlZmluZSBUUkFOU19IRENQX0FOSEkodHJh bnMpCQlfTU1JT19UUkFOUyh0cmFucywKPiBfVFJBTlNBX0hEQ1BfQU5ISSwgXAo+ICsJCQkJCQkg ICAgX1RSQU5TQl9IRENQX0FOSEkpCj4gKyNkZWZpbmUgSERDUF9BTkhJKGRldl9wcml2LCB0cmFu cywgcG9ydCkgXAo+ICsJCQkJCShJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyID8gXAo+ICsJCQkJ CSBUUkFOU19IRENQX0FOSEkodHJhbnMpIDogXAo+ICsJCQkJCSBQT1JUX0hEQ1BfQU5ISShwb3J0 KSkKPiArCj4gICNkZWZpbmUgUE9SVF9IRENQX0JLU1ZMTyhwb3J0KQkJX1BPUlRfSERDUF9BVVRI RU5DKHBvcnQsCj4gMHgxMCkKPiArI2RlZmluZSBfVFJBTlNBX0hEQ1BfQktTVkxPCQkweDY2NDEw Cj4gKyNkZWZpbmUgX1RSQU5TQl9IRENQX0JLU1ZMTwkJMHg2NjUxMAo+ICsjZGVmaW5lIFRSQU5T X0hEQ1BfQktTVkxPKHRyYW5zKQlfTU1JT19UUkFOUyh0cmFucywgXAo+ICsJCQkJCQkgICAgX1RS QU5TQV9IRENQX0JLU1ZMTywgXAo+ICsJCQkJCQkgICAgX1RSQU5TQl9IRENQX0JLU1ZMTykKPiAr I2RlZmluZSBIRENQX0JLU1ZMTyhkZXZfcHJpdiwgdHJhbnMsIHBvcnQpIFwKPiArCQkJCQkoSU5U RUxfR0VOKGRldl9wcml2KSA+PSAxMiA/IFwKPiArCQkJCQkgVFJBTlNfSERDUF9CS1NWTE8odHJh bnMpIDogXAo+ICsJCQkJCSBQT1JUX0hEQ1BfQktTVkxPKHBvcnQpKQo+ICsKPiAgI2RlZmluZSBQ T1JUX0hEQ1BfQktTVkhJKHBvcnQpCQlfUE9SVF9IRENQX0FVVEhFTkMocG9ydCwKPiAweDE0KQo+ ICsjZGVmaW5lIF9UUkFOU0FfSERDUF9CS1NWSEkJCTB4NjY0MTQKPiArI2RlZmluZSBfVFJBTlNC X0hEQ1BfQktTVkhJCQkweDY2NTE0Cj4gKyNkZWZpbmUgVFJBTlNfSERDUF9CS1NWSEkodHJhbnMp CV9NTUlPX1RSQU5TKHRyYW5zLCBcCj4gKwkJCQkJCSAgICBfVFJBTlNBX0hEQ1BfQktTVkhJLCBc Cj4gKwkJCQkJCSAgICBfVFJBTlNCX0hEQ1BfQktTVkhJKQo+ICsjZGVmaW5lIEhEQ1BfQktTVkhJ KGRldl9wcml2LCB0cmFucywgcG9ydCkgXAo+ICsJCQkJCShJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDEyID8gXAo+ICsJCQkJCSBUUkFOU19IRENQX0JLU1ZISSh0cmFucykgOiBcCj4gKwkJCQkJIFBP UlRfSERDUF9CS1NWSEkocG9ydCkpCj4gKwo+ICAjZGVmaW5lIFBPUlRfSERDUF9SUFJJTUUocG9y dCkJCV9QT1JUX0hEQ1BfQVVUSEVOQyhwb3J0LAo+IDB4MTgpCj4gKyNkZWZpbmUgX1RSQU5TQV9I RENQX1JQUklNRQkJMHg2NjQxOAo+ICsjZGVmaW5lIF9UUkFOU0JfSERDUF9SUFJJTUUJCTB4NjY1 MTgKPiArI2RlZmluZSBUUkFOU19IRENQX1JQUklNRSh0cmFucykJX01NSU9fVFJBTlModHJhbnMs IFwKPiArCQkJCQkJICAgIF9UUkFOU0FfSERDUF9SUFJJTUUsIFwKPiArCQkJCQkJICAgIF9UUkFO U0JfSERDUF9SUFJJTUUpCj4gKyNkZWZpbmUgSERDUF9SUFJJTUUoZGV2X3ByaXYsIHRyYW5zLCBw b3J0KSBcCj4gKwkJCQkJKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIgPyBcCj4gKwkJCQkJIFRS QU5TX0hEQ1BfUlBSSU1FKHRyYW5zKSA6IFwKPiArCQkJCQkgUE9SVF9IRENQX1JQUklNRShwb3J0 KSkKPiArCj4gICNkZWZpbmUgUE9SVF9IRENQX1NUQVRVUyhwb3J0KQkJX1BPUlRfSERDUF9BVVRI RU5DKHBvcnQsCj4gMHgxQykKPiArI2RlZmluZSBfVFJBTlNBX0hEQ1BfU1RBVFVTCQkweDY2NDFD Cj4gKyNkZWZpbmUgX1RSQU5TQl9IRENQX1NUQVRVUwkJMHg2NjUxQwo+ICsjZGVmaW5lIFRSQU5T X0hEQ1BfU1RBVFVTKHRyYW5zKQlfTU1JT19UUkFOUyh0cmFucywgXAo+ICsJCQkJCQkgICAgX1RS QU5TQV9IRENQX1NUQVRVUywgXAo+ICsJCQkJCQkgICAgX1RSQU5TQl9IRENQX1NUQVRVUykKPiAr I2RlZmluZSBIRENQX1NUQVRVUyhkZXZfcHJpdiwgdHJhbnMsIHBvcnQpIFwKPiArCQkJCQkoSU5U RUxfR0VOKGRldl9wcml2KSA+PSAxMiA/IFwKPiArCQkJCQkgVFJBTlNfSERDUF9TVEFUVVModHJh bnMpIDogXAo+ICsJCQkJCSBQT1JUX0hEQ1BfU1RBVFVTKHBvcnQpKQo+ICsKPiAgI2RlZmluZSAg SERDUF9TVEFUVVNfU1RSRUFNX0FfRU5DCUJJVCgzMSkKPiAgI2RlZmluZSAgSERDUF9TVEFUVVNf U1RSRUFNX0JfRU5DCUJJVCgzMCkKPiAgI2RlZmluZSAgSERDUF9TVEFUVVNfU1RSRUFNX0NfRU5D CUJJVCgyOSkKPiBAQCAtOTM2MSwyMyArOTQ0Niw0NCBAQCBlbnVtIHNrbF9wb3dlcl9nYXRlIHsK PiAgCQkJCQkgIF9QT1JURF9IRENQMl9CQVNFLCBcCj4gIAkJCQkJICBfUE9SVEVfSERDUDJfQkFT RSwgXAo+ICAJCQkJCSAgX1BPUlRGX0hEQ1AyX0JBU0UpICsgKHgpKQo+IC0KPiAtI2RlZmluZSBI RENQMl9BVVRIX0RESShwb3J0KQkJX1BPUlRfSERDUDJfQkFTRShwb3J0LAo+IDB4OTgpCj4gKyNk ZWZpbmUgUE9SVF9IRENQMl9BVVRIKHBvcnQpCQlfUE9SVF9IRENQMl9CQVNFKHBvcnQsCj4gMHg5 OCkKPiArI2RlZmluZSBfVFJBTlNBX0hEQ1AyX0FVVEgJCTB4NjY0OTgKPiArI2RlZmluZSBfVFJB TlNCX0hEQ1AyX0FVVEgJCTB4NjY1OTgKPiArI2RlZmluZSBUUkFOU19IRENQMl9BVVRIKHRyYW5z KQkJX01NSU9fVFJBTlModHJhbnMsCj4gX1RSQU5TQV9IRENQMl9BVVRILCBcCj4gKwkJCQkJCSAg ICBfVFJBTlNCX0hEQ1AyX0FVVEgpCj4gICNkZWZpbmUgICBBVVRIX0xJTktfQVVUSEVOVElDQVRF RAlCSVQoMzEpCj4gICNkZWZpbmUgICBBVVRIX0xJTktfVFlQRQkJQklUKDMwKQo+ICAjZGVmaW5l ICAgQVVUSF9GT1JDRV9DTFJfSU5QVVRDVFIJQklUKDE5KQo+ICAjZGVmaW5lICAgQVVUSF9DTFJf S0VZUwkJCUJJVCgxOCkKPiAtCj4gLSNkZWZpbmUgSERDUDJfQ1RMX0RESShwb3J0KQkJX1BPUlRf SERDUDJfQkFTRShwb3J0LCAweEIwKQo+ICsjZGVmaW5lIEhEQ1AyX0FVVEgoZGV2X3ByaXYsIHRy YW5zLCBwb3J0KSBcCj4gKwkJCQkJKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIgPyBcCj4gKwkJ CQkJIFRSQU5TX0hEQ1AyX0FVVEgodHJhbnMpIDogXAo+ICsJCQkJCSBQT1JUX0hEQ1AyX0FVVEgo cG9ydCkpCj4gKwo+ICsjZGVmaW5lIFBPUlRfSERDUDJfQ1RMKHBvcnQpCQlfUE9SVF9IRENQMl9C QVNFKHBvcnQsCj4gMHhCMCkKPiArI2RlZmluZSBfVFJBTlNBX0hEQ1AyX0NUTAkJMHg2NjRCMAo+ ICsjZGVmaW5lIF9UUkFOU0JfSERDUDJfQ1RMCQkweDY2NUIwCj4gKyNkZWZpbmUgVFJBTlNfSERD UDJfQ1RMKHRyYW5zKQkJX01NSU9fVFJBTlModHJhbnMsCj4gX1RSQU5TQV9IRENQMl9DVEwsIFwK PiArCQkJCQkJICAgIF9UUkFOU0JfSERDUDJfQ1RMKQo+ICAjZGVmaW5lICAgQ1RMX0xJTktfRU5D UllQVElPTl9SRVEJQklUKDMxKQo+IC0KPiAtI2RlZmluZSBIRENQMl9TVEFUVVNfRERJKHBvcnQp CQlfUE9SVF9IRENQMl9CQVNFKHBvcnQsCj4gMHhCNCkKPiAtI2RlZmluZSAgIFNUUkVBTV9FTkNS WVBUSU9OX1NUQVRVU19BCUJJVCgzMSkKPiAtI2RlZmluZSAgIFNUUkVBTV9FTkNSWVBUSU9OX1NU QVRVU19CCUJJVCgzMCkKPiAtI2RlZmluZSAgIFNUUkVBTV9FTkNSWVBUSU9OX1NUQVRVU19DCUJJ VCgyOSkKPiArI2RlZmluZSBIRENQMl9DVEwoZGV2X3ByaXYsIHRyYW5zLCBwb3J0KSBcCj4gKwkJ CQkJKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIgPyBcCj4gKwkJCQkJIFRSQU5TX0hEQ1AyX0NU TCh0cmFucykgOiBcCj4gKwkJCQkJIFBPUlRfSERDUDJfQ1RMKHBvcnQpKQo+ICsKPiArI2RlZmlu ZSBQT1JUX0hEQ1AyX1NUQVRVUyhwb3J0KQkJX1BPUlRfSERDUDJfQkFTRShwb3J0LAo+IDB4QjQp Cj4gKyNkZWZpbmUgX1RSQU5TQV9IRENQMl9TVEFUVVMJCTB4NjY0QjQKPiArI2RlZmluZSBfVFJB TlNCX0hEQ1AyX1NUQVRVUwkJMHg2NjVCNAo+ICsjZGVmaW5lIFRSQU5TX0hEQ1AyX1NUQVRVUyh0 cmFucykJX01NSU9fVFJBTlModHJhbnMsIFwKPiArCQkJCQkJICAgIF9UUkFOU0FfSERDUDJfU1RB VFVTLCBcCj4gKwkJCQkJCSAgICBfVFJBTlNCX0hEQ1AyX1NUQVRVUykKPiAgI2RlZmluZSAgIExJ TktfVFlQRV9TVEFUVVMJCUJJVCgyMikKPiAgI2RlZmluZSAgIExJTktfQVVUSF9TVEFUVVMJCUJJ VCgyMSkKPiAgI2RlZmluZSAgIExJTktfRU5DUllQVElPTl9TVEFUVVMJQklUKDIwKQo+ICsjZGVm aW5lIEhEQ1AyX1NUQVRVUyhkZXZfcHJpdiwgdHJhbnMsIHBvcnQpIFwKPiArCQkJCQkoSU5URUxf R0VOKGRldl9wcml2KSA+PSAxMiA/IFwKPiArCQkJCQkgVFJBTlNfSERDUDJfU1RBVFVTKHRyYW5z KSA6IFwKPiArCQkJCQkgUE9SVF9IRENQMl9TVEFUVVMocG9ydCkpCj4gCj4gIC8qIFBlci1waXBl IERESSBGdW5jdGlvbiBDb250cm9sICovCj4gICNkZWZpbmUgX1RSQU5TX0RESV9GVU5DX0NUTF9B CQkweDYwNDAwCj4gLS0KPiAyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeA==