From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan De Oliveira Subject: Re: [PATCH v2 07/14] drm/i915: Start moving the cdclk stuff into a distinct state structure Date: Thu, 22 Dec 2016 16:14:40 +0200 Message-ID: <1482416080.4759.61.camel@gmail.com> References: <20161219172840.31842-1-ville.syrjala@linux.intel.com> <20161219172840.31842-8-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pg0-x244.google.com (mail-pg0-x244.google.com [IPv6:2607:f8b0:400e:c05::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3642A6F2BE for ; Thu, 22 Dec 2016 14:14:49 +0000 (UTC) Received: by mail-pg0-x244.google.com with SMTP id g1so18488820pgn.0 for ; Thu, 22 Dec 2016 06:14:49 -0800 (PST) In-Reply-To: <20161219172840.31842-8-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: ville.syrjala@linux.intel.com, intel-gfx@lists.freedesktop.org Cc: Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCAyMDE2LTEyLTE5IGF0IDE5OjI4ICswMjAwLCB2aWxsZS5zeXJqYWxhQGxpbnV4Lmlu dGVsLmNvbSB3cm90ZToKPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGlu dXguaW50ZWwuY29tPgo+IAo+IEludHJvZHVjZSBpbnRlbF9jZGNsayBzdGF0ZSB3aGljaCBmb3Ig bm93IHdpbGwgdHJhY2sgdGhlIGNkY2xrCj4gZnJlcXVlbmN5LCB0aGUgdmNvIGZyZXF1ZW5jeSBh bmQgdGhlIHJlZmVyZW5jZSBmcmVxdWVuY3kgKG5vdCBzdXJlIHdlCj4gd2FudCB0aGUgbGFzdCBv bmUsIGJ1dCBJIHB1dCBpdCB0aGVyZSBhbnl3YXkpLiBXZSdsbCBhbHNvIG1ha2UgdGhlCj4gLmdl dF9jZGNsaygpIGZ1bmN0aW9uIGZpbGwgb3V0IHRoaXMgc3RhdGUgc3RydWN0dXJlIHJhdGhlciB0 aGFuCj4ganVzdCByZXR1cm5pbmcgdGhlIGN1cnJlbnQgY2RjbGsgZnJlcXVlbmN5Lgo+IAo+IE9u ZSBpbW1lZGlhdGUgYmVuZWZpdCBpcyB0aGF0IGNhbGxpbmcgLmdldF9jZGNsaygpIHdpbGwgbm8g bG9uZ2VyCj4gY2xvYmJlciBzdGF0ZSBzdG9yZWQgdW5kZXIgZGV2X3ByaXYgdW5sZXNzIGV4W3Bs aWNpdGx5IHRvbGQgdG8gZG8KClR5cG86IGV4W3BsaWNpdHkKCj4gc28uIFByZXZpb3VzbHkgaXQg Y2xvYmJlcmVkIHRoZSB2Y28gYW5kIHJlZmVyZW5jZSBjbG9ja3Mgc3RvcmVkCj4gdGhlcmUgb24g c29tZSBwbGF0Zm9ybXMuCj4gCj4gV2UnbGwgZXhwYW5kIHRoZSB1c2Ugb2YgdGhpcyBzdHJ1Y3R1 cmUgdG8gYWN0dWFsbHkgcHJlY29tcHV0aW5nIHRoZQo+IHN0YXRlIGFuZCB3aGF0bm90IGxhdGVy Lgo+IAo+IHYyOiBDb25zdGlmeSBpbnRlbF9jZGNsa19zdGF0ZV9jb21wYXJlKCkKPiAKPiBTaWdu ZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29t PgoKQSBjb3VwbGUgbW9yZSBjb21tZW50cyBiZWxvZXcsIGJ1dCBlaXRoZXIgd2F5LAoKUmV2aWV3 ZWQtYnk6IEFuZGVyIENvbnNlbHZhbiBkZSBPbGl2ZWlyYSA8Y29uc2VsdmFuMkBnbWFpbC5jb20+ Cgo+IC0tLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmPCoMKgwqDCoMKg fMKgwqDCoDIgKy0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmjCoMKgwqDCoMKg wqDCoMKgwqB8wqDCoDE0ICstCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5j wqDCoMKgwqDCoMKgfMKgwqDCoDIgKy0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nk Y2xrLmPCoMKgwqDCoMKgwqB8IDM1OSArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQo+ IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jwqDCoMKgwqB8wqDCoDE4ICst Cj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jwqDCoMKgwqDCoMKgwqDCoMKgfMKg wqDCoDIgKy0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5owqDCoMKgwqDCoMKg wqDCoHzCoMKgwqAzICsKPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jwqDCoMKg wqDCoMKgwqDCoHzCoMKgwqAyICstCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5l bC5jwqDCoMKgwqDCoMKgfMKgwqDCoDQgKy0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3J1bnRpbWVfcG0uYyB8wqDCoMKgNSArLQo+IMKgMTAgZmlsZXMgY2hhbmdlZCwgMjQwIGluc2Vy dGlvbnMoKyksIDE3MSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYwo+IGluZGV4IDE1ZGViMmJjNTY4Yi4uYzAxNzFlZWY4Zjk2IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBAQCAtMTIzNSw3ICsxMjM1LDcgQEAgc3RhdGljIGludCBp OTE1X2ZyZXF1ZW5jeV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+IMKg CQlzZXFfcHV0cyhtLCAibm8gUC1zdGF0ZSBpbmZvIGF2YWlsYWJsZVxuIik7Cj4gwqAJfQo+IMKg Cj4gLQlzZXFfcHJpbnRmKG0sICJDdXJyZW50IENEIGNsb2NrIGZyZXF1ZW5jeTogJWQga0h6XG4i LCBkZXZfcHJpdi0+Y2RjbGtfZnJlcSk7Cj4gKwlzZXFfcHJpbnRmKG0sICJDdXJyZW50IENEIGNs b2NrIGZyZXF1ZW5jeTogJWQga0h6XG4iLCBkZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGspOwo+IMKg CXNlcV9wcmludGYobSwgIk1heCBDRCBjbG9jayBmcmVxdWVuY3k6ICVkIGtIelxuIiwgZGV2X3By aXYtPm1heF9jZGNsa19mcmVxKTsKPiDCoAlzZXFfcHJpbnRmKG0sICJNYXggcGl4ZWwgY2xvY2sg ZnJlcXVlbmN5OiAlZCBrSHpcbiIsIGRldl9wcml2LT5tYXhfZG90Y2xrX2ZyZXEpOwo+IMKgCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggMzkzYjM0ZmIyZDFhLi5hNGYxMjMxZmY4Y2Eg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtNjA5LDkgKzYwOSwxMSBAQCBzdHJ1 Y3QgaW50ZWxfaW5pdGlhbF9wbGFuZV9jb25maWc7Cj4gwqBzdHJ1Y3QgaW50ZWxfY3J0YzsKPiDC oHN0cnVjdCBpbnRlbF9saW1pdDsKPiDCoHN0cnVjdCBkcGxsOwo+ICtzdHJ1Y3QgaW50ZWxfY2Rj bGtfc3RhdGU7Cj4gwqAKPiDCoHN0cnVjdCBkcm1faTkxNV9kaXNwbGF5X2Z1bmNzIHsKPiAtCWlu dCAoKmdldF9jZGNsaykoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiArCXZv aWQgKCpnZXRfY2RjbGspKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJ wqDCoHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUpOwo+IMKgCWludCAoKmdl dF9maWZvX3NpemUpKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IHBsYW5l KTsKPiDCoAlpbnQgKCpjb21wdXRlX3BpcGVfd20pKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj c3RhdGUpOwo+IMKgCWludCAoKmNvbXB1dGVfaW50ZXJtZWRpYXRlX3dtKShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+IEBAIC0yMTI2LDYgKzIxMjgsMTAgQEAgc3RydWN0IGk5MTVfb2Ffb3BzIHsK PiDCoAlib29sICgqb2FfYnVmZmVyX2lzX2VtcHR5KShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpOwo+IMKgfTsKPiDCoAo+ICtzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgewo+ICsJ dW5zaWduZWQgaW50IGNkY2xrLCB2Y28sIHJlZjsKPiArfTsKPiArCgpNYXliZSBkb2N1bWVudCB0 aGUgZmllbGRzIHdoaWxlIGF0IGl0LgoKPiDCoHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKPiDC oAlzdHJ1Y3QgZHJtX2RldmljZSBkcm07Cj4gwqAKPiBAQCAtMjIyOSw3ICsyMjM1LDcgQEAgc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgewo+IMKgCj4gwqAJdW5zaWduZWQgaW50IGZzYl9mcmVxLCBt ZW1fZnJlcSwgaXNfZGRyMzsKPiDCoAl1bnNpZ25lZCBpbnQgc2tsX3ByZWZlcnJlZF92Y29fZnJl cTsKPiAtCXVuc2lnbmVkIGludCBjZGNsa19mcmVxLCBtYXhfY2RjbGtfZnJlcTsKPiArCXVuc2ln bmVkIGludCBtYXhfY2RjbGtfZnJlcTsKPiDCoAo+IMKgCS8qCj4gwqAJwqAqIEZvciByZWFkaW5n IGhvbGRpbmcgYW55IGNydGMgbG9jayBpcyBzdWZmaWNpZW50LAo+IEBAIC0yMjQzLDggKzIyNDks OCBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gwqAJdW5zaWduZWQgaW50IGN6Y2xrX2Zy ZXE7Cj4gwqAKPiDCoAlzdHJ1Y3Qgewo+IC0JCXVuc2lnbmVkIGludCB2Y28sIHJlZjsKPiAtCX0g Y2RjbGtfcGxsOwo+ICsJCXN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSBodzsKPiArCX0gY2RjbGs7 Cj4gwqAKPiDCoAkvKioKPiDCoAnCoCogd3EgLSBEcml2ZXIgd29ya3F1ZXVlIGZvciBHRU0uCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4gaW5kZXggM2JiYzk2YzE3NjdmLi5hMjkyMjQ2 OTk1ZWYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMKPiBAQCAtNzM0LDcgKzcz NCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9hdWRpb19jb21wb25lbnRfZ2V0X2NkY2xrX2ZyZXEoc3Ry dWN0IGRldmljZSAqa2RldikKPiDCoAlpZiAoV0FSTl9PTl9PTkNFKCFIQVNfRERJKGRldl9wcml2 KSkpCj4gwqAJCXJldHVybiAtRU5PREVWOwo+IMKgCj4gLQlyZXR1cm4gZGV2X3ByaXYtPmNkY2xr X2ZyZXE7Cj4gKwlyZXR1cm4gZGV2X3ByaXYtPmNkY2xrLmh3LmNkY2xrOwo+IMKgfQo+IMKgCj4g wqAvKgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNsay5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY2RjbGsuYwo+IGluZGV4IDg5YmU2MTBkMDg3OS4u MTNjM2I1NTU1NDczIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nk Y2xrLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNsay5jCj4gQEAgLTIz LDM3ICsyMyw0NCBAQAo+IMKgCj4gwqAjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4gwqAKPiAtc3Rh dGljIGludCBmaXhlZF8xMzNtaHpfZ2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiArc3RhdGljIHZvaWQgZml4ZWRfMTMzbWh6X2dldF9jZGNsayhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCQnCoMKgwqBzdHJ1Y3QgaW50ZWxfY2RjbGtf c3RhdGUgKmNkY2xrX3N0YXRlKQo+IMKgewo+IC0JcmV0dXJuIDEzMzMzMzsKPiArCWNkY2xrX3N0 YXRlLT5jZGNsayA9IDEzMzMzMzsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGZpeGVkXzIwMG1o el9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICtzdGF0aWMg dm9pZCBmaXhlZF8yMDBtaHpfZ2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiArCQkJCcKgwqDCoHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUp Cj4gwqB7Cj4gLQlyZXR1cm4gMjAwMDAwOwo+ICsJY2RjbGtfc3RhdGUtPmNkY2xrID0gMjAwMDAw Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgZml4ZWRfMjY2bWh6X2dldF9jZGNsayhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3N0YXRpYyB2b2lkIGZpeGVkXzI2Nm1oel9n ZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJwqDCoMKg c3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpjZGNsa19zdGF0ZSkKPiDCoHsKPiAtCXJldHVybiAy NjY2Njc7Cj4gKwljZGNsa19zdGF0ZS0+Y2RjbGsgPSAyNjY2Njc7Cj4gwqB9Cj4gwqAKPiAtc3Rh dGljIGludCBmaXhlZF8zMzNtaHpfZ2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiArc3RhdGljIHZvaWQgZml4ZWRfMzMzbWh6X2dldF9jZGNsayhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCQnCoMKgwqBzdHJ1Y3QgaW50ZWxfY2RjbGtf c3RhdGUgKmNkY2xrX3N0YXRlKQo+IMKgewo+IC0JcmV0dXJuIDMzMzMzMzsKPiArCWNkY2xrX3N0 YXRlLT5jZGNsayA9IDMzMzMzMzsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGZpeGVkXzQwMG1o el9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICtzdGF0aWMg dm9pZCBmaXhlZF80MDBtaHpfZ2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiArCQkJCcKgwqDCoHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUp Cj4gwqB7Cj4gLQlyZXR1cm4gNDAwMDAwOwo+ICsJY2RjbGtfc3RhdGUtPmNkY2xrID0gNDAwMDAw Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgZml4ZWRfNDUwbWh6X2dldF9jZGNsayhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3N0YXRpYyB2b2lkIGZpeGVkXzQ1MG1oel9n ZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJwqDCoMKg c3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpjZGNsa19zdGF0ZSkKPiDCoHsKPiAtCXJldHVybiA0 NTAwMDA7Cj4gKwljZGNsa19zdGF0ZS0+Y2RjbGsgPSA0NTAwMDA7Cj4gwqB9Cj4gwqAKPiAtc3Rh dGljIGludCBpODV4X2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gK3N0YXRpYyB2b2lkIGk4NXhfZ2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPiArCQkJwqDCoMKgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpjZGNsa19zdGF0 ZSkKPiDCoHsKPiDCoAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGRldl9wcml2LT5kcm0ucGRldjsK PiDCoAl1MTYgaHBsbGNjID0gMDsKPiBAQCAtNjMsOCArNzAsMTAgQEAgc3RhdGljIGludCBpODV4 X2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqAJwqAqIGVu Y29kaW5nIGlzIGRpZmZlcmVudCA6KAo+IMKgCcKgKiBGSVhNRSBpcyB0aGlzIHRoZSByaWdodCB3 YXkgdG8gZGV0ZWN0IDg1MkdNLzg1MkdNVj8KPiDCoAnCoCovCj4gLQlpZiAocGRldi0+cmV2aXNp b24gPT0gMHgxKQo+IC0JCXJldHVybiAxMzMzMzM7Cj4gKwlpZiAocGRldi0+cmV2aXNpb24gPT0g MHgxKSB7Cj4gKwkJY2RjbGtfc3RhdGUtPmNkY2xrID0gMTMzMzMzOwo+ICsJCXJldHVybjsKPiAr CX0KPiDCoAo+IMKgCXBjaV9idXNfcmVhZF9jb25maWdfd29yZChwZGV2LT5idXMsCj4gwqAJCQkJ wqBQQ0lfREVWRk4oMCwgMyksIEhQTExDQywgJmhwbGxjYyk7Cj4gQEAgLTc2LDM3ICs4NSw0MyBA QCBzdGF0aWMgaW50IGk4NXhfZ2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiDCoAljYXNlIEdDX0NMT0NLXzEzM18yMDA6Cj4gwqAJY2FzZSBHQ19DTE9DS18xMzNf MjAwXzI6Cj4gwqAJY2FzZSBHQ19DTE9DS18xMDBfMjAwOgo+IC0JCXJldHVybiAyMDAwMDA7Cj4g KwkJY2RjbGtfc3RhdGUtPmNkY2xrID0gMjAwMDAwOwo+ICsJCWJyZWFrOwo+IMKgCWNhc2UgR0Nf Q0xPQ0tfMTY2XzI1MDoKPiAtCQlyZXR1cm4gMjUwMDAwOwo+ICsJCWNkY2xrX3N0YXRlLT5jZGNs ayA9IDI1MDAwMDsKPiArCQlicmVhazsKPiDCoAljYXNlIEdDX0NMT0NLXzEwMF8xMzM6Cj4gLQkJ cmV0dXJuIDEzMzMzMzsKPiArCQljZGNsa19zdGF0ZS0+Y2RjbGsgPSAxMzMzMzM7Cj4gKwkJYnJl YWs7Cj4gwqAJY2FzZSBHQ19DTE9DS18xMzNfMjY2Ogo+IMKgCWNhc2UgR0NfQ0xPQ0tfMTMzXzI2 Nl8yOgo+IMKgCWNhc2UgR0NfQ0xPQ0tfMTY2XzI2NjoKPiAtCQlyZXR1cm4gMjY2NjY3Owo+ICsJ CWNkY2xrX3N0YXRlLT5jZGNsayA9IDI2NjY2NzsKPiArCQlicmVhazsKPiDCoAl9Cj4gLQo+IC0J LyogU2hvdWxkbid0IGhhcHBlbiAqLwo+IC0JcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGlj IGludCBpOTE1Z21fZ2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiArc3RhdGljIHZvaWQgaTkxNWdtX2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gKwkJCcKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgKmNkY2xr X3N0YXRlKQo+IMKgewo+IMKgCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gZGV2X3ByaXYtPmRybS5w ZGV2Owo+IMKgCXUxNiBnY2ZnYyA9IDA7Cj4gwqAKPiDCoAlwY2lfcmVhZF9jb25maWdfd29yZChw ZGV2LCBHQ0ZHQywgJmdjZmdjKTsKPiDCoAo+IC0JaWYgKGdjZmdjICYgR0NfTE9XX0ZSRVFVRU5D WV9FTkFCTEUpCj4gLQkJcmV0dXJuIDEzMzMzMzsKPiArCWlmIChnY2ZnYyAmIEdDX0xPV19GUkVR VUVOQ1lfRU5BQkxFKSB7Cj4gKwkJY2RjbGtfc3RhdGUtPmNkY2xrID0gMTMzMzMzOwo+ICsJCXJl dHVybjsKPiArCX0KPiDCoAo+IMKgCXN3aXRjaCAoZ2NmZ2MgJiBHQ19ESVNQTEFZX0NMT0NLX01B U0spIHsKPiDCoAljYXNlIEdDX0RJU1BMQVlfQ0xPQ0tfMzMzX01IWjoKPiAtCQlyZXR1cm4gMzMz MzMzOwo+ICsJCWNkY2xrX3N0YXRlLT5jZGNsayA9IDMzMzMzMzsKPiArCQlicmVhazsKPiDCoAlk ZWZhdWx0Ogo+IMKgCWNhc2UgR0NfRElTUExBWV9DTE9DS18xOTBfMjAwX01IWjoKPiAtCQlyZXR1 cm4gMTkwMDAwOwo+ICsJCWNkY2xrX3N0YXRlLT5jZGNsayA9IDE5MDAwMDsKPiArCQlicmVhazsK PiDCoAl9Cj4gwqB9Cj4gwqAKPiBAQCAtMTc4LDcgKzE5Myw4IEBAIHN0YXRpYyB1bnNpZ25lZCBp bnQgaW50ZWxfaHBsbF92Y28oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IMKg CXJldHVybiB2Y287Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBnMzNfZ2V0X2NkY2xrKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArc3RhdGljIHZvaWQgZzMzX2dldF9jZGNs ayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCcKgwqBzdHJ1Y3QgaW50 ZWxfY2RjbGtfc3RhdGUgKmNkY2xrX3N0YXRlKQo+IMKgewo+IMKgCXN0cnVjdCBwY2lfZGV2ICpw ZGV2ID0gZGV2X3ByaXYtPmRybS5wZGV2Owo+IMKgCXN0YXRpYyBjb25zdCB1aW50OF90IGRpdl8z MjAwW10gPSB7IDEyLCAxMCzCoMKgOCzCoMKgNywgNSwgMTYgfTsKPiBAQCAtMTg2LDkgKzIwMiwx MSBAQCBzdGF0aWMgaW50IGczM19nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+IMKgCXN0YXRpYyBjb25zdCB1aW50OF90IGRpdl80ODAwW10gPSB7IDIwLCAxNCwg MTIsIDEwLCA4LCAyNCB9Owo+IMKgCXN0YXRpYyBjb25zdCB1aW50OF90IGRpdl81MzMzW10gPSB7 IDIwLCAxNiwgMTIsIDEyLCA4LCAyOCB9Owo+IMKgCWNvbnN0IHVpbnQ4X3QgKmRpdl90YWJsZTsK PiAtCXVuc2lnbmVkIGludCBjZGNsa19zZWwsIHZjbyA9IGludGVsX2hwbGxfdmNvKGRldl9wcml2 KTsKPiArCXVuc2lnbmVkIGludCBjZGNsa19zZWw7Cj4gwqAJdWludDE2X3QgdG1wID0gMDsKPiDC oAo+ICsJY2RjbGtfc3RhdGUtPnZjbyA9IGludGVsX2hwbGxfdmNvKGRldl9wcml2KTsKPiArCj4g wqAJcGNpX3JlYWRfY29uZmlnX3dvcmQocGRldiwgR0NGR0MsICZ0bXApOwo+IMKgCj4gwqAJY2Rj bGtfc2VsID0gKHRtcCA+PiA0KSAmIDB4NzsKPiBAQCAtMTk2LDcgKzIxNCw3IEBAIHN0YXRpYyBp bnQgZzMzX2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqAJ aWYgKGNkY2xrX3NlbCA+PSBBUlJBWV9TSVpFKGRpdl8zMjAwKSkKPiDCoAkJZ290byBmYWlsOwo+ IMKgCj4gLQlzd2l0Y2ggKHZjbykgewo+ICsJc3dpdGNoIChjZGNsa19zdGF0ZS0+dmNvKSB7Cj4g wqAJY2FzZSAzMjAwMDAwOgo+IMKgCQlkaXZfdGFibGUgPSBkaXZfMzIwMDsKPiDCoAkJYnJlYWs7 Cj4gQEAgLTIxMywxNSArMjMxLDE4IEBAIHN0YXRpYyBpbnQgZzMzX2dldF9jZGNsayhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqAJCWdvdG8gZmFpbDsKPiDCoAl9Cj4gwqAK PiAtCXJldHVybiBESVZfUk9VTkRfQ0xPU0VTVCh2Y28sIGRpdl90YWJsZVtjZGNsa19zZWxdKTsK PiArCWNkY2xrX3N0YXRlLT5jZGNsayA9IERJVl9ST1VORF9DTE9TRVNUKGNkY2xrX3N0YXRlLT52 Y28sCj4gKwkJCQkJwqDCoMKgwqDCoMKgwqBkaXZfdGFibGVbY2RjbGtfc2VsXSk7Cj4gKwlyZXR1 cm47Cj4gwqAKPiDCoGZhaWw6Cj4gwqAJRFJNX0VSUk9SKCJVbmFibGUgdG8gZGV0ZXJtaW5lIENE Q0xLLiBIUExMIFZDTz0ldSBrSHosIENGR0M9MHglMDh4XG4iLAo+IC0JCcKgwqB2Y28sIHRtcCk7 Cj4gLQlyZXR1cm4gMTkwNDc2Owo+ICsJCcKgwqBjZGNsa19zdGF0ZS0+dmNvLCB0bXApOwo+ICsJ Y2RjbGtfc3RhdGUtPmNkY2xrID0gMTkwNDc2Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgcG52 X2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3N0YXRpYyB2 b2lkIHBudl9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJ CQnCoMKgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpjZGNsa19zdGF0ZSkKPiDCoHsKPiDCoAlz dHJ1Y3QgcGNpX2RldiAqcGRldiA9IGRldl9wcml2LT5kcm0ucGRldjsKPiDCoAl1MTYgZ2NmZ2Mg PSAwOwo+IEBAIC0yMzAsMzIgKzI1MSw0MSBAQCBzdGF0aWMgaW50IHBudl9nZXRfY2RjbGsoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IMKgCj4gwqAJc3dpdGNoIChnY2ZnYyAm IEdDX0RJU1BMQVlfQ0xPQ0tfTUFTSykgewo+IMKgCWNhc2UgR0NfRElTUExBWV9DTE9DS18yNjdf TUhaX1BOVjoKPiAtCQlyZXR1cm4gMjY2NjY3Owo+ICsJCWNkY2xrX3N0YXRlLT5jZGNsayA9IDI2 NjY2NzsKPiArCQlicmVhazsKPiDCoAljYXNlIEdDX0RJU1BMQVlfQ0xPQ0tfMzMzX01IWl9QTlY6 Cj4gLQkJcmV0dXJuIDMzMzMzMzsKPiArCQljZGNsa19zdGF0ZS0+Y2RjbGsgPSAzMzMzMzM7Cj4g KwkJYnJlYWs7Cj4gwqAJY2FzZSBHQ19ESVNQTEFZX0NMT0NLXzQ0NF9NSFpfUE5WOgo+IC0JCXJl dHVybiA0NDQ0NDQ7Cj4gKwkJY2RjbGtfc3RhdGUtPmNkY2xrID0gNDQ0NDQ0Owo+ICsJCWJyZWFr Owo+IMKgCWNhc2UgR0NfRElTUExBWV9DTE9DS18yMDBfTUhaX1BOVjoKPiAtCQlyZXR1cm4gMjAw MDAwOwo+ICsJCWNkY2xrX3N0YXRlLT5jZGNsayA9IDIwMDAwMDsKPiArCQlicmVhazsKPiDCoAlk ZWZhdWx0Ogo+IMKgCQlEUk1fRVJST1IoIlVua25vd24gcG52IGRpc3BsYXkgY29yZSBjbG9jayAw eCUwNHhcbiIsIGdjZmdjKTsKPiDCoAljYXNlIEdDX0RJU1BMQVlfQ0xPQ0tfMTMzX01IWl9QTlY6 Cj4gLQkJcmV0dXJuIDEzMzMzMzsKPiArCQljZGNsa19zdGF0ZS0+Y2RjbGsgPSAxMzMzMzM7Cj4g KwkJYnJlYWs7Cj4gwqAJY2FzZSBHQ19ESVNQTEFZX0NMT0NLXzE2N19NSFpfUE5WOgo+IC0JCXJl dHVybiAxNjY2Njc7Cj4gKwkJY2RjbGtfc3RhdGUtPmNkY2xrID0gMTY2NjY3Owo+ICsJCWJyZWFr Owo+IMKgCX0KPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGk5NjVnbV9nZXRfY2RjbGsoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICtzdGF0aWMgdm9pZCBpOTY1Z21fZ2V0X2Nk Y2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJwqDCoMKgwqDCoHN0 cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUpCj4gwqB7Cj4gwqAJc3RydWN0IHBj aV9kZXYgKnBkZXYgPSBkZXZfcHJpdi0+ZHJtLnBkZXY7Cj4gwqAJc3RhdGljIGNvbnN0IHVpbnQ4 X3QgZGl2XzMyMDBbXSA9IHsgMTYsIDEwLMKgwqA4IH07Cj4gwqAJc3RhdGljIGNvbnN0IHVpbnQ4 X3QgZGl2XzQwMDBbXSA9IHsgMjAsIDEyLCAxMCB9Owo+IMKgCXN0YXRpYyBjb25zdCB1aW50OF90 IGRpdl81MzMzW10gPSB7IDI0LCAxNiwgMTQgfTsKPiDCoAljb25zdCB1aW50OF90ICpkaXZfdGFi bGU7Cj4gLQl1bnNpZ25lZCBpbnQgY2RjbGtfc2VsLCB2Y28gPSBpbnRlbF9ocGxsX3ZjbyhkZXZf cHJpdik7Cj4gKwl1bnNpZ25lZCBpbnQgY2RjbGtfc2VsOwo+IMKgCXVpbnQxNl90IHRtcCA9IDA7 Cj4gwqAKPiArCWNkY2xrX3N0YXRlLT52Y28gPSBpbnRlbF9ocGxsX3ZjbyhkZXZfcHJpdik7Cj4g Kwo+IMKgCXBjaV9yZWFkX2NvbmZpZ193b3JkKHBkZXYsIEdDRkdDLCAmdG1wKTsKPiDCoAo+IMKg CWNkY2xrX3NlbCA9ICgodG1wID4+IDgpICYgMHgxZikgLSAxOwo+IEBAIC0yNjMsNyArMjkzLDcg QEAgc3RhdGljIGludCBpOTY1Z21fZ2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiDCoAlpZiAoY2RjbGtfc2VsID49IEFSUkFZX1NJWkUoZGl2XzMyMDApKQo+IMKg CQlnb3RvIGZhaWw7Cj4gwqAKPiAtCXN3aXRjaCAodmNvKSB7Cj4gKwlzd2l0Y2ggKGNkY2xrX3N0 YXRlLT52Y28pIHsKPiDCoAljYXNlIDMyMDAwMDA6Cj4gwqAJCWRpdl90YWJsZSA9IGRpdl8zMjAw Owo+IMKgCQlicmVhazsKPiBAQCAtMjc3LDUzICszMDcsNjIgQEAgc3RhdGljIGludCBpOTY1Z21f Z2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoAkJZ290byBm YWlsOwo+IMKgCX0KPiDCoAo+IC0JcmV0dXJuIERJVl9ST1VORF9DTE9TRVNUKHZjbywgZGl2X3Rh YmxlW2NkY2xrX3NlbF0pOwo+ICsJY2RjbGtfc3RhdGUtPmNkY2xrID0gRElWX1JPVU5EX0NMT1NF U1QoY2RjbGtfc3RhdGUtPnZjbywKPiArCQkJCQnCoMKgwqDCoMKgwqDCoGRpdl90YWJsZVtjZGNs a19zZWxdKTsKPiArCXJldHVybjsKPiDCoAo+IMKgZmFpbDoKPiDCoAlEUk1fRVJST1IoIlVuYWJs ZSB0byBkZXRlcm1pbmUgQ0RDTEsuIEhQTEwgVkNPPSV1IGtIeiwgQ0ZHQz0weCUwNHhcbiIsCj4g LQkJwqDCoHZjbywgdG1wKTsKPiAtCXJldHVybiAyMDAwMDA7Cj4gKwkJwqDCoGNkY2xrX3N0YXRl LT52Y28sIHRtcCk7Cj4gKwljZGNsa19zdGF0ZS0+Y2RjbGsgPSAyMDAwMDA7Cj4gwqB9Cj4gwqAK PiAtc3RhdGljIGludCBnbTQ1X2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gK3N0YXRpYyB2b2lkIGdtNDVfZ2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiArCQkJwqDCoMKgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpjZGNs a19zdGF0ZSkKPiDCoHsKPiDCoAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGRldl9wcml2LT5kcm0u cGRldjsKPiAtCXVuc2lnbmVkIGludCBjZGNsa19zZWwsIHZjbyA9IGludGVsX2hwbGxfdmNvKGRl dl9wcml2KTsKPiArCXVuc2lnbmVkIGludCBjZGNsa19zZWw7Cj4gwqAJdWludDE2X3QgdG1wID0g MDsKPiDCoAo+ICsJY2RjbGtfc3RhdGUtPnZjbyA9IGludGVsX2hwbGxfdmNvKGRldl9wcml2KTsK PiArCj4gwqAJcGNpX3JlYWRfY29uZmlnX3dvcmQocGRldiwgR0NGR0MsICZ0bXApOwo+IMKgCj4g wqAJY2RjbGtfc2VsID0gKHRtcCA+PiAxMikgJiAweDE7Cj4gwqAKPiAtCXN3aXRjaCAodmNvKSB7 Cj4gKwlzd2l0Y2ggKGNkY2xrX3N0YXRlLT52Y28pIHsKPiDCoAljYXNlIDI2NjY2Njc6Cj4gwqAJ Y2FzZSA0MDAwMDAwOgo+IMKgCWNhc2UgNTMzMzMzMzoKPiAtCQlyZXR1cm4gY2RjbGtfc2VsID8g MzMzMzMzIDogMjIyMjIyOwo+ICsJCWNkY2xrX3N0YXRlLT5jZGNsayA9IGNkY2xrX3NlbCA/IDMz MzMzMyA6IDIyMjIyMjsKPiArCQlicmVhazsKPiDCoAljYXNlIDMyMDAwMDA6Cj4gLQkJcmV0dXJu IGNkY2xrX3NlbCA/IDMyMDAwMCA6IDIyODU3MTsKPiArCQljZGNsa19zdGF0ZS0+Y2RjbGsgPSBj ZGNsa19zZWwgPyAzMjAwMDAgOiAyMjg1NzE7Cj4gKwkJYnJlYWs7Cj4gwqAJZGVmYXVsdDoKPiDC oAkJRFJNX0VSUk9SKCJVbmFibGUgdG8gZGV0ZXJtaW5lIENEQ0xLLiBIUExMIFZDTz0ldSwgQ0ZH Qz0weCUwNHhcbiIsCj4gLQkJCcKgwqB2Y28sIHRtcCk7Cj4gLQkJcmV0dXJuIDIyMjIyMjsKPiAr CQkJwqDCoGNkY2xrX3N0YXRlLT52Y28sIHRtcCk7Cj4gKwkJY2RjbGtfc3RhdGUtPmNkY2xrID0g MjIyMjIyOwo+ICsJCWJyZWFrOwo+IMKgCX0KPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGhzd19n ZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICtzdGF0aWMgdm9p ZCBoc3dfZ2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJ wqDCoHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUpCj4gwqB7Cj4gwqAJdWlu dDMyX3QgbGNwbGwgPSBJOTE1X1JFQUQoTENQTExfQ1RMKTsKPiDCoAl1aW50MzJfdCBmcmVxID0g bGNwbGwgJiBMQ1BMTF9DTEtfRlJFUV9NQVNLOwo+IMKgCj4gwqAJaWYgKGxjcGxsICYgTENQTExf Q0RfU09VUkNFX0ZDTEspCj4gLQkJcmV0dXJuIDgwMDAwMDsKPiArCQljZGNsa19zdGF0ZS0+Y2Rj bGsgPSA4MDAwMDA7Cj4gwqAJZWxzZSBpZiAoSTkxNV9SRUFEKEZVU0VfU1RSQVApICYgSFNXX0NE Q0xLX0xJTUlUKQo+IC0JCXJldHVybiA0NTAwMDA7Cj4gKwkJY2RjbGtfc3RhdGUtPmNkY2xrID0g NDUwMDAwOwo+IMKgCWVsc2UgaWYgKGZyZXEgPT0gTENQTExfQ0xLX0ZSRVFfNDUwKQo+IC0JCXJl dHVybiA0NTAwMDA7Cj4gKwkJY2RjbGtfc3RhdGUtPmNkY2xrID0gNDUwMDAwOwo+IMKgCWVsc2Ug aWYgKElTX0hTV19VTFQoZGV2X3ByaXYpKQo+IC0JCXJldHVybiAzMzc1MDA7Cj4gKwkJY2RjbGtf c3RhdGUtPmNkY2xrID0gMzM3NTAwOwo+IMKgCWVsc2UKPiAtCQlyZXR1cm4gNTQwMDAwOwo+ICsJ CWNkY2xrX3N0YXRlLT5jZGNsayA9IDU0MDAwMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGludCB2 bHZfY2FsY19jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gQEAgLTM0 OSwxMCArMzg4LDEzIEBAIHN0YXRpYyBpbnQgdmx2X2NhbGNfY2RjbGsoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+IMKgCQlyZXR1cm4gMjAwMDAwOwo+IMKgfQo+IMKgCj4gLXN0 YXRpYyBpbnQgdmx2X2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gK3N0YXRpYyB2b2lkIHZsdl9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ICsJCQnCoMKgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpjZGNsa19zdGF0ZSkK PiDCoHsKPiAtCXJldHVybiB2bHZfZ2V0X2Nja19jbG9ja19ocGxsKGRldl9wcml2LCAiY2RjbGsi LAo+IC0JCQkJwqDCoMKgwqDCoMKgQ0NLX0RJU1BMQVlfQ0xPQ0tfQ09OVFJPTCk7Cj4gKwljZGNs a19zdGF0ZS0+dmNvID0gdmx2X2dldF9ocGxsX3ZjbyhkZXZfcHJpdik7Cj4gKwljZGNsa19zdGF0 ZS0+Y2RjbGsgPSB2bHZfZ2V0X2Nja19jbG9jayhkZXZfcHJpdiwgImNkY2xrIiwKPiArCQkJCQnC oMKgwqDCoMKgwqDCoENDS19ESVNQTEFZX0NMT0NLX0NPTlRST0wsCj4gKwkJCQkJwqDCoMKgwqDC oMKgwqBjZGNsa19zdGF0ZS0+dmNvKTsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIHZvaWQgdmx2X3By b2dyYW1fcGZpX2NyZWRpdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IEBA IC0zNjQsNyArNDA2LDcgQEAgc3RhdGljIHZvaWQgdmx2X3Byb2dyYW1fcGZpX2NyZWRpdHMoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IMKgCWVsc2UKPiDCoAkJZGVmYXVsdF9j cmVkaXRzID0gUEZJX0NSRURJVCg4KTsKPiDCoAo+IC0JaWYgKGRldl9wcml2LT5jZGNsa19mcmVx ID49IGRldl9wcml2LT5jemNsa19mcmVxKSB7Cj4gKwlpZiAoZGV2X3ByaXYtPmNkY2xrLmh3LmNk Y2xrID49IGRldl9wcml2LT5jemNsa19mcmVxKSB7Cj4gwqAJCS8qIENIViBzdWdnZXN0ZWQgdmFs dWUgaXMgMzEgb3IgNjMgKi8KPiDCoAkJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+IMKg CQkJY3JlZGl0cyA9IFBGSV9DUkVESVRfNjM7Cj4gQEAgLTM5Niw4ICs0MzgsNiBAQCBzdGF0aWMg dm9pZCB2bHZfc2V0X2NkY2xrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjZGNsaykKPiDC oAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gwqAJ dTMyIHZhbCwgY21kOwo+IMKgCj4gLQlXQVJOX09OKGRldl9wcml2LT5kaXNwbGF5LmdldF9jZGNs ayhkZXZfcHJpdikgIT0gZGV2X3ByaXYtPmNkY2xrX2ZyZXEpOwo+IC0KPiDCoAlpZiAoY2RjbGsg Pj0gMzIwMDAwKSAvKiBqdW1wIHRvIGhpZ2hlc3Qgdm9sdGFnZSBmb3IgNDAwTUh6IHRvbyAqLwo+ IMKgCQljbWQgPSAyOwo+IMKgCWVsc2UgaWYgKGNkY2xrID09IDI2NjY2NykKPiBAQCAtNDYxLDgg KzUwMSw2IEBAIHN0YXRpYyB2b2lkIGNodl9zZXRfY2RjbGsoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgaW50IGNkY2xrKQo+IMKgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoZGV2KTsKPiDCoAl1MzIgdmFsLCBjbWQ7Cj4gwqAKPiAtCVdBUk5fT04oZGV2X3ByaXYt PmRpc3BsYXkuZ2V0X2NkY2xrKGRldl9wcml2KSAhPSBkZXZfcHJpdi0+Y2RjbGtfZnJlcSk7Cj4g LQo+IMKgCXN3aXRjaCAoY2RjbGspIHsKPiDCoAljYXNlIDMzMzMzMzoKPiDCoAljYXNlIDMyMDAw MDoKPiBAQCAtNTA4LDIzICs1NDYsMjQgQEAgc3RhdGljIGludCBiZHdfY2FsY19jZGNsayhpbnQg bWF4X3BpeGNsaykKPiDCoAkJcmV0dXJuIDMzNzUwMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50 IGJkd19nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICtzdGF0 aWMgdm9pZCBiZHdfZ2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiArCQkJwqDCoHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUpCj4gwqB7Cj4g wqAJdWludDMyX3QgbGNwbGwgPSBJOTE1X1JFQUQoTENQTExfQ1RMKTsKPiDCoAl1aW50MzJfdCBm cmVxID0gbGNwbGwgJiBMQ1BMTF9DTEtfRlJFUV9NQVNLOwo+IMKgCj4gwqAJaWYgKGxjcGxsICYg TENQTExfQ0RfU09VUkNFX0ZDTEspCj4gLQkJcmV0dXJuIDgwMDAwMDsKPiArCQljZGNsa19zdGF0 ZS0+Y2RjbGsgPSA4MDAwMDA7Cj4gwqAJZWxzZSBpZiAoSTkxNV9SRUFEKEZVU0VfU1RSQVApICYg SFNXX0NEQ0xLX0xJTUlUKQo+IC0JCXJldHVybiA0NTAwMDA7Cj4gKwkJY2RjbGtfc3RhdGUtPmNk Y2xrID0gNDUwMDAwOwo+IMKgCWVsc2UgaWYgKGZyZXEgPT0gTENQTExfQ0xLX0ZSRVFfNDUwKQo+ IC0JCXJldHVybiA0NTAwMDA7Cj4gKwkJY2RjbGtfc3RhdGUtPmNkY2xrID0gNDUwMDAwOwo+IMKg CWVsc2UgaWYgKGZyZXEgPT0gTENQTExfQ0xLX0ZSRVFfNTRPX0JEVykKPiAtCQlyZXR1cm4gNTQw MDAwOwo+ICsJCWNkY2xrX3N0YXRlLT5jZGNsayA9IDU0MDAwMDsKPiDCoAllbHNlIGlmIChmcmVx ID09IExDUExMX0NMS19GUkVRXzMzN181X0JEVykKPiAtCQlyZXR1cm4gMzM3NTAwOwo+ICsJCWNk Y2xrX3N0YXRlLT5jZGNsayA9IDMzNzUwMDsKPiDCoAllbHNlCj4gLQkJcmV0dXJuIDY3NTAwMDsK PiArCQljZGNsa19zdGF0ZS0+Y2RjbGsgPSA2NzUwMDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyB2 b2lkIGJkd19zZXRfY2RjbGsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNkY2xrKQo+IEBA IC02MDEsOSArNjQwLDkgQEAgc3RhdGljIHZvaWQgYmR3X3NldF9jZGNsayhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCBpbnQgY2RjbGspCj4gwqAKPiDCoAlpbnRlbF91cGRhdGVfY2RjbGsoZGV2X3By aXYpOwo+IMKgCj4gLQlXQVJOKGNkY2xrICE9IGRldl9wcml2LT5jZGNsa19mcmVxLAo+ICsJV0FS TihjZGNsayAhPSBkZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGssCj4gwqAJwqDCoMKgwqDCoCJjZGNs ayByZXF1ZXN0ZWQgJWQga0h6IGJ1dCBnb3QgJWQga0h6XG4iLAo+IC0JwqDCoMKgwqDCoGNkY2xr LCBkZXZfcHJpdi0+Y2RjbGtfZnJlcSk7Cj4gKwnCoMKgwqDCoMKgY2RjbGssIGRldl9wcml2LT5j ZGNsay5ody5jZGNsayk7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBpbnQgc2tsX2NhbGNfY2RjbGso aW50IG1heF9waXhjbGssIGludCB2Y28pCj4gQEAgLTYyOSwxMiArNjY4LDEzIEBAIHN0YXRpYyBp bnQgc2tsX2NhbGNfY2RjbGsoaW50IG1heF9waXhjbGssIGludCB2Y28pCj4gwqAJfQo+IMKgfQo+ IMKgCj4gLXN0YXRpYyB2b2lkIHNrbF9kcGxsMF91cGRhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQo+ICtzdGF0aWMgdm9pZCBza2xfZHBsbDBfdXBkYXRlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJwqDCoMKgwqDCoHN0cnVjdCBpbnRlbF9jZGNs a19zdGF0ZSAqY2RjbGtfc3RhdGUpCj4gwqB7Cj4gwqAJdTMyIHZhbDsKPiDCoAo+IC0JZGV2X3By aXYtPmNkY2xrX3BsbC5yZWYgPSAyNDAwMDsKPiAtCWRldl9wcml2LT5jZGNsa19wbGwudmNvID0g MDsKPiArCWNkY2xrX3N0YXRlLT5yZWYgPSAyNDAwMDsKPiArCWNkY2xrX3N0YXRlLT52Y28gPSAw Owo+IMKgCj4gwqAJdmFsID0gSTkxNV9SRUFEKExDUExMMV9DVEwpOwo+IMKgCWlmICgodmFsICYg TENQTExfUExMX0VOQUJMRSkgPT0gMCkKPiBAQCAtNjU2LDExICs2OTYsMTEgQEAgc3RhdGljIHZv aWQgc2tsX2RwbGwwX3VwZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g wqAJY2FzZSBEUExMX0NUUkwxX0xJTktfUkFURShEUExMX0NUUkwxX0xJTktfUkFURV8xMzUwLCBT S0xfRFBMTDApOgo+IMKgCWNhc2UgRFBMTF9DVFJMMV9MSU5LX1JBVEUoRFBMTF9DVFJMMV9MSU5L X1JBVEVfMTYyMCwgU0tMX0RQTEwwKToKPiDCoAljYXNlIERQTExfQ1RSTDFfTElOS19SQVRFKERQ TExfQ1RSTDFfTElOS19SQVRFXzI3MDAsIFNLTF9EUExMMCk6Cj4gLQkJZGV2X3ByaXYtPmNkY2xr X3BsbC52Y28gPSA4MTAwMDAwOwo+ICsJCWNkY2xrX3N0YXRlLT52Y28gPSA4MTAwMDAwOwo+IMKg CQlicmVhazsKPiDCoAljYXNlIERQTExfQ1RSTDFfTElOS19SQVRFKERQTExfQ1RSTDFfTElOS19S QVRFXzEwODAsIFNLTF9EUExMMCk6Cj4gwqAJY2FzZSBEUExMX0NUUkwxX0xJTktfUkFURShEUExM X0NUUkwxX0xJTktfUkFURV8yMTYwLCBTS0xfRFBMTDApOgo+IC0JCWRldl9wcml2LT5jZGNsa19w bGwudmNvID0gODY0MDAwMDsKPiArCQljZGNsa19zdGF0ZS0+dmNvID0gODY0MDAwMDsKPiDCoAkJ YnJlYWs7Cj4gwqAJZGVmYXVsdDoKPiDCoAkJTUlTU0lOR19DQVNFKHZhbCAmIERQTExfQ1RSTDFf TElOS19SQVRFX01BU0soU0tMX0RQTEwwKSk7CgpUaGlzIGZ1bmN0aW9uIGlzIGEgYml0IGZ1bm55 IG5vdywgc2luY2UgaXQgc2V0cyB1cCB0aGUgY2RjbGsgc3RhdGUgYmFzZWQgb24KY3VycmVudCBw bGwwIHByb2dyYW1taW5nLCBpbnN0ZWFkIG9mIGxvb2tpbmcgYXQgYW4gYXRvbWljIHN0YXRlLiBC dXQgc28gZmFyIGl0CmlzIG9ubHkgdXNlZCB0byByZWFkIHRoZSBjdXJyZW50IGNkY2xrLCBzbyB0 aGVyZSdzIG5vIGhhcm0uCgo+IEBAIC02NjgsNDYgKzcwOCw1NyBAQCBzdGF0aWMgdm9pZCBza2xf ZHBsbDBfdXBkYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoAl9Cj4g wqB9Cj4gwqAKPiAtc3RhdGljIGludCBza2xfZ2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiArc3RhdGljIHZvaWQgc2tsX2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCcKgwqBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUg KmNkY2xrX3N0YXRlKQo+IMKgewo+IMKgCXUzMiBjZGN0bDsKPiDCoAo+IC0Jc2tsX2RwbGwwX3Vw ZGF0ZShkZXZfcHJpdik7Cj4gKwlza2xfZHBsbDBfdXBkYXRlKGRldl9wcml2LCBjZGNsa19zdGF0 ZSk7Cj4gKwo+ICsJY2RjbGtfc3RhdGUtPmNkY2xrID0gY2RjbGtfc3RhdGUtPnJlZjsKPiDCoAo+ IC0JaWYgKGRldl9wcml2LT5jZGNsa19wbGwudmNvID09IDApCj4gLQkJcmV0dXJuIGRldl9wcml2 LT5jZGNsa19wbGwucmVmOwo+ICsJaWYgKGNkY2xrX3N0YXRlLT52Y28gPT0gMCkKPiArCQlyZXR1 cm47Cj4gwqAKPiDCoAljZGN0bCA9IEk5MTVfUkVBRChDRENMS19DVEwpOwo+IMKgCj4gLQlpZiAo ZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28gPT0gODY0MDAwMCkgewo+ICsJaWYgKGNkY2xrX3N0YXRl LT52Y28gPT0gODY0MDAwMCkgewo+IMKgCQlzd2l0Y2ggKGNkY3RsICYgQ0RDTEtfRlJFUV9TRUxf TUFTSykgewo+IMKgCQljYXNlIENEQ0xLX0ZSRVFfNDUwXzQzMjoKPiAtCQkJcmV0dXJuIDQzMjAw MDsKPiArCQkJY2RjbGtfc3RhdGUtPmNkY2xrID0gNDMyMDAwOwo+ICsJCQlicmVhazsKPiDCoAkJ Y2FzZSBDRENMS19GUkVRXzMzN18zMDg6Cj4gLQkJCXJldHVybiAzMDg1NzE7Cj4gKwkJCWNkY2xr X3N0YXRlLT5jZGNsayA9IDMwODU3MTsKPiArCQkJYnJlYWs7Cj4gwqAJCWNhc2UgQ0RDTEtfRlJF UV81NDA6Cj4gLQkJCXJldHVybiA1NDAwMDA7Cj4gKwkJCWNkY2xrX3N0YXRlLT5jZGNsayA9IDU0 MDAwMDsKPiArCQkJYnJlYWs7Cj4gwqAJCWNhc2UgQ0RDTEtfRlJFUV82NzVfNjE3Ogo+IC0JCQly ZXR1cm4gNjE3MTQzOwo+ICsJCQljZGNsa19zdGF0ZS0+Y2RjbGsgPSA2MTcxNDM7Cj4gKwkJCWJy ZWFrOwo+IMKgCQlkZWZhdWx0Ogo+IMKgCQkJTUlTU0lOR19DQVNFKGNkY3RsICYgQ0RDTEtfRlJF UV9TRUxfTUFTSyk7Cj4gKwkJCWJyZWFrOwo+IMKgCQl9Cj4gwqAJfSBlbHNlIHsKPiDCoAkJc3dp dGNoIChjZGN0bCAmIENEQ0xLX0ZSRVFfU0VMX01BU0spIHsKPiDCoAkJY2FzZSBDRENMS19GUkVR XzQ1MF80MzI6Cj4gLQkJCXJldHVybiA0NTAwMDA7Cj4gKwkJCWNkY2xrX3N0YXRlLT5jZGNsayA9 IDQ1MDAwMDsKPiArCQkJYnJlYWs7Cj4gwqAJCWNhc2UgQ0RDTEtfRlJFUV8zMzdfMzA4Ogo+IC0J CQlyZXR1cm4gMzM3NTAwOwo+ICsJCQljZGNsa19zdGF0ZS0+Y2RjbGsgPSAzMzc1MDA7Cj4gKwkJ CWJyZWFrOwo+IMKgCQljYXNlIENEQ0xLX0ZSRVFfNTQwOgo+IC0JCQlyZXR1cm4gNTQwMDAwOwo+ ICsJCQljZGNsa19zdGF0ZS0+Y2RjbGsgPSA1NDAwMDA7Cj4gKwkJCWJyZWFrOwo+IMKgCQljYXNl IENEQ0xLX0ZSRVFfNjc1XzYxNzoKPiAtCQkJcmV0dXJuIDY3NTAwMDsKPiArCQkJY2RjbGtfc3Rh dGUtPmNkY2xrID0gNjc1MDAwOwo+ICsJCQlicmVhazsKPiDCoAkJZGVmYXVsdDoKPiDCoAkJCU1J U1NJTkdfQ0FTRShjZGN0bCAmIENEQ0xLX0ZSRVFfU0VMX01BU0spOwo+ICsJCQlicmVhazsKPiDC oAkJfQo+IMKgCX0KPiAtCj4gLQlyZXR1cm4gZGV2X3ByaXYtPmNkY2xrX3BsbC5yZWY7Cj4gwqB9 Cj4gwqAKPiDCoC8qIGNvbnZlcnQgZnJvbSBrSHogdG8gLjEgZml4cG9pbnQgTUh6IHdpdGggLTFN SHogb2Zmc2V0ICovCj4gQEAgLTc3MCw3ICs4MjEsNyBAQCBzdGF0aWMgdm9pZCBza2xfZHBsbDBf ZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IHZjbykKPiDCoAkJ CQnCoMKgwqDCoDUpKQo+IMKgCQlEUk1fRVJST1IoIkRQTEwwIG5vdCBsb2NrZWRcbiIpOwo+IMKg Cj4gLQlkZXZfcHJpdi0+Y2RjbGtfcGxsLnZjbyA9IHZjbzsKPiArCWRldl9wcml2LT5jZGNsay5o dy52Y28gPSB2Y287Cj4gwqAKPiDCoAkvKiBXZSdsbCB3YW50IHRvIGtlZXAgdXNpbmcgdGhlIGN1 cnJlbnQgdmNvIGZyb20gbm93IG9uLiAqLwo+IMKgCXNrbF9zZXRfcHJlZmVycmVkX2NkY2xrX3Zj byhkZXZfcHJpdiwgdmNvKTsKPiBAQCAtNzg0LDcgKzgzNSw3IEBAIHN0YXRpYyB2b2lkIHNrbF9k cGxsMF9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoAkJCQnC oMKgwqAxKSkKPiDCoAkJRFJNX0VSUk9SKCJDb3VsZG4ndCBkaXNhYmxlIERQTEwwXG4iKTsKPiDC oAo+IC0JZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28gPSAwOwo+ICsJZGV2X3ByaXYtPmNkY2xrLmh3 LnZjbyA9IDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyB2b2lkIHNrbF9zZXRfY2RjbGsoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IEBAIC04MzQsMTEgKzg4NSwxMSBAQCBzdGF0 aWMgdm9pZCBza2xfc2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiDCoAkJYnJlYWs7Cj4gwqAJfQo+IMKgCj4gLQlpZiAoZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28g IT0gMCAmJgo+IC0JwqDCoMKgwqBkZXZfcHJpdi0+Y2RjbGtfcGxsLnZjbyAhPSB2Y28pCj4gKwlp ZiAoZGV2X3ByaXYtPmNkY2xrLmh3LnZjbyAhPSAwICYmCj4gKwnCoMKgwqDCoGRldl9wcml2LT5j ZGNsay5ody52Y28gIT0gdmNvKQo+IMKgCQlza2xfZHBsbDBfZGlzYWJsZShkZXZfcHJpdik7Cj4g wqAKPiAtCWlmIChkZXZfcHJpdi0+Y2RjbGtfcGxsLnZjbyAhPSB2Y28pCj4gKwlpZiAoZGV2X3By aXYtPmNkY2xrLmh3LnZjbyAhPSB2Y28pCj4gwqAJCXNrbF9kcGxsMF9lbmFibGUoZGV2X3ByaXYs IHZjbyk7Cj4gwqAKPiDCoAlJOTE1X1dSSVRFKENEQ0xLX0NUTCwgZnJlcV9zZWxlY3QgfCBza2xf Y2RjbGtfZGVjaW1hbChjZGNsaykpOwo+IEBAIC04NjYsOCArOTE3LDggQEAgc3RhdGljIHZvaWQg c2tsX3Nhbml0aXplX2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDC oAo+IMKgCWludGVsX3VwZGF0ZV9jZGNsayhkZXZfcHJpdik7Cj4gwqAJLyogSXMgUExMIGVuYWJs ZWQgYW5kIGxvY2tlZCA/ICovCj4gLQlpZiAoZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28gPT0gMCB8 fAo+IC0JwqDCoMKgwqBkZXZfcHJpdi0+Y2RjbGtfZnJlcSA9PSBkZXZfcHJpdi0+Y2RjbGtfcGxs LnJlZikKPiArCWlmIChkZXZfcHJpdi0+Y2RjbGsuaHcudmNvID09IDAgfHwKPiArCcKgwqDCoMKg ZGV2X3ByaXYtPmNkY2xrLmh3LmNkY2xrID09IGRldl9wcml2LT5jZGNsay5ody5yZWYpCj4gwqAJ CWdvdG8gc2FuaXRpemU7Cj4gwqAKPiDCoAkvKiBEUExMIG9rYXk7IHZlcmlmeSB0aGUgY2RjbG9j awo+IEBAIC04NzgsNyArOTI5LDcgQEAgc3RhdGljIHZvaWQgc2tsX3Nhbml0aXplX2NkY2xrKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoAnCoCovCj4gwqAJY2RjdGwgPSBJ OTE1X1JFQUQoQ0RDTEtfQ1RMKTsKPiDCoAlleHBlY3RlZCA9IChjZGN0bCAmIENEQ0xLX0ZSRVFf U0VMX01BU0spIHwKPiAtCQlza2xfY2RjbGtfZGVjaW1hbChkZXZfcHJpdi0+Y2RjbGtfZnJlcSk7 Cj4gKwkJc2tsX2NkY2xrX2RlY2ltYWwoZGV2X3ByaXYtPmNkY2xrLmh3LmNkY2xrKTsKPiDCoAlp ZiAoY2RjdGwgPT0gZXhwZWN0ZWQpCj4gwqAJCS8qIEFsbCB3ZWxsOyBub3RoaW5nIHRvIHNhbml0 aXplICovCj4gwqAJCXJldHVybjsKPiBAQCAtODg3LDE0ICs5MzgsMTQgQEAgc3RhdGljIHZvaWQg c2tsX3Nhbml0aXplX2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDC oAlEUk1fREVCVUdfS01TKCJTYW5pdGl6aW5nIGNkY2xrIHByb2dyYW1tZWQgYnkgcHJlLW9zXG4i KTsKPiDCoAo+IMKgCS8qIGZvcmNlIGNkY2xrIHByb2dyYW1taW5nICovCj4gLQlkZXZfcHJpdi0+ Y2RjbGtfZnJlcSA9IDA7Cj4gKwlkZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGsgPSAwOwo+IMKgCS8q IGZvcmNlIGZ1bGwgUExMIGRpc2FibGUgKyBlbmFibGUgKi8KPiAtCWRldl9wcml2LT5jZGNsa19w bGwudmNvID0gLTE7Cj4gKwlkZXZfcHJpdi0+Y2RjbGsuaHcudmNvID0gLTE7Cj4gwqB9Cj4gwqAK PiDCoHZvaWQgc2tsX3VuaW5pdF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gwqB7Cj4gLQlza2xfc2V0X2NkY2xrKGRldl9wcml2LCBkZXZfcHJpdi0+Y2RjbGtfcGxs LnJlZiwgMCk7Cj4gKwlza2xfc2V0X2NkY2xrKGRldl9wcml2LCBkZXZfcHJpdi0+Y2RjbGsuaHcu cmVmLCAwKTsKPiDCoH0KPiDCoAo+IMKgdm9pZCBza2xfaW5pdF9jZGNsayhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gQEAgLTkwMywxNCArOTU0LDE1IEBAIHZvaWQgc2tsX2lu aXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IMKgCj4gwqAJc2ts X3Nhbml0aXplX2NkY2xrKGRldl9wcml2KTsKPiDCoAo+IC0JaWYgKGRldl9wcml2LT5jZGNsa19m cmVxICE9IDAgJiYgZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28gIT0gMCkgewo+ICsJaWYgKGRldl9w cml2LT5jZGNsay5ody5jZGNsayAhPSAwICYmCj4gKwnCoMKgwqDCoGRldl9wcml2LT5jZGNsay5o dy52Y28gIT0gMCkgewo+IMKgCQkvKgo+IMKgCQnCoCogVXNlIHRoZSBjdXJyZW50IHZjbyBhcyBv dXIgaW5pdGlhbAo+IMKgCQnCoCogZ3Vlc3MgYXMgdG8gd2hhdCB0aGUgcHJlZmVycmVkIHZjbyBp cy4KPiDCoAkJwqAqLwo+IMKgCQlpZiAoZGV2X3ByaXYtPnNrbF9wcmVmZXJyZWRfdmNvX2ZyZXEg PT0gMCkKPiDCoAkJCXNrbF9zZXRfcHJlZmVycmVkX2NkY2xrX3ZjbyhkZXZfcHJpdiwKPiAtCQkJ CQkJwqDCoMKgwqBkZXZfcHJpdi0+Y2RjbGtfcGxsLnZjbyk7Cj4gKwkJCQkJCcKgwqDCoMKgZGV2 X3ByaXYtPmNkY2xrLmh3LnZjbyk7Cj4gwqAJCXJldHVybjsKPiDCoAl9Cj4gwqAKPiBAQCAtOTUw LDcgKzEwMDIsNyBAQCBzdGF0aWMgaW50IGJ4dF9kZV9wbGxfdmNvKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwgaW50IGNkY2xrKQo+IMKgewo+IMKgCWludCByYXRpbzsKPiDCoAo+ IC0JaWYgKGNkY2xrID09IGRldl9wcml2LT5jZGNsa19wbGwucmVmKQo+ICsJaWYgKGNkY2xrID09 IGRldl9wcml2LT5jZGNsay5ody5yZWYpCj4gwqAJCXJldHVybiAwOwo+IMKgCj4gwqAJc3dpdGNo IChjZGNsaykgewo+IEBAIC05NjcsMTQgKzEwMTksMTQgQEAgc3RhdGljIGludCBieHRfZGVfcGxs X3ZjbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCBjZGNsaykKPiDCoAkJ YnJlYWs7Cj4gwqAJfQo+IMKgCj4gLQlyZXR1cm4gZGV2X3ByaXYtPmNkY2xrX3BsbC5yZWYgKiBy YXRpbzsKPiArCXJldHVybiBkZXZfcHJpdi0+Y2RjbGsuaHcucmVmICogcmF0aW87Cj4gwqB9Cj4g wqAKPiDCoHN0YXRpYyBpbnQgZ2xrX2RlX3BsbF92Y28oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LCBpbnQgY2RjbGspCj4gwqB7Cj4gwqAJaW50IHJhdGlvOwo+IMKgCj4gLQlpZiAo Y2RjbGsgPT0gZGV2X3ByaXYtPmNkY2xrX3BsbC5yZWYpCj4gKwlpZiAoY2RjbGsgPT0gZGV2X3By aXYtPmNkY2xrLmh3LnJlZikKPiDCoAkJcmV0dXJuIDA7Cj4gwqAKPiDCoAlzd2l0Y2ggKGNkY2xr KSB7Cj4gQEAgLTk4NywxNSArMTAzOSwxNiBAQCBzdGF0aWMgaW50IGdsa19kZV9wbGxfdmNvKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IGNkY2xrKQo+IMKgCQlicmVhazsK PiDCoAl9Cj4gwqAKPiAtCXJldHVybiBkZXZfcHJpdi0+Y2RjbGtfcGxsLnJlZiAqIHJhdGlvOwo+ ICsJcmV0dXJuIGRldl9wcml2LT5jZGNsay5ody5yZWYgKiByYXRpbzsKPiDCoH0KPiDCoAo+IC1z dGF0aWMgdm9pZCBieHRfZGVfcGxsX3VwZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gK3N0YXRpYyB2b2lkIGJ4dF9kZV9wbGxfdXBkYXRlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiArCQkJwqDCoMKgwqDCoMKgc3RydWN0IGludGVsX2NkY2xrX3N0 YXRlICpjZGNsa19zdGF0ZSkKPiDCoHsKPiDCoAl1MzIgdmFsOwo+IMKgCj4gLQlkZXZfcHJpdi0+ Y2RjbGtfcGxsLnJlZiA9IDE5MjAwOwo+IC0JZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28gPSAwOwo+ ICsJY2RjbGtfc3RhdGUtPnJlZiA9IDE5MjAwOwo+ICsJY2RjbGtfc3RhdGUtPnZjbyA9IDA7Cj4g wqAKPiDCoAl2YWwgPSBJOTE1X1JFQUQoQlhUX0RFX1BMTF9FTkFCTEUpOwo+IMKgCWlmICgodmFs ICYgQlhUX0RFX1BMTF9QTExfRU5BQkxFKSA9PSAwKQo+IEBAIC0xMDA1LDIwICsxMDU4LDIxIEBA IHN0YXRpYyB2b2lkIGJ4dF9kZV9wbGxfdXBkYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiDCoAkJcmV0dXJuOwo+IMKgCj4gwqAJdmFsID0gSTkxNV9SRUFEKEJYVF9ERV9Q TExfQ1RMKTsKPiAtCWRldl9wcml2LT5jZGNsa19wbGwudmNvID0gKHZhbCAmIEJYVF9ERV9QTExf UkFUSU9fTUFTSykgKgo+IC0JCWRldl9wcml2LT5jZGNsa19wbGwucmVmOwo+ICsJY2RjbGtfc3Rh dGUtPnZjbyA9ICh2YWwgJiBCWFRfREVfUExMX1JBVElPX01BU0spICogY2RjbGtfc3RhdGUtPnJl ZjsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGJ4dF9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICtzdGF0aWMgdm9pZCBieHRfZ2V0X2NkY2xrKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJwqDCoHN0cnVjdCBpbnRlbF9jZGNsa19z dGF0ZSAqY2RjbGtfc3RhdGUpCj4gwqB7Cj4gwqAJdTMyIGRpdmlkZXI7Cj4gLQlpbnQgZGl2LCB2 Y287Cj4gKwlpbnQgZGl2Owo+IMKgCj4gLQlieHRfZGVfcGxsX3VwZGF0ZShkZXZfcHJpdik7Cj4g KwlieHRfZGVfcGxsX3VwZGF0ZShkZXZfcHJpdiwgY2RjbGtfc3RhdGUpOwo+IMKgCj4gLQl2Y28g PSBkZXZfcHJpdi0+Y2RjbGtfcGxsLnZjbzsKPiAtCWlmICh2Y28gPT0gMCkKPiAtCQlyZXR1cm4g ZGV2X3ByaXYtPmNkY2xrX3BsbC5yZWY7Cj4gKwljZGNsa19zdGF0ZS0+Y2RjbGsgPSBjZGNsa19z dGF0ZS0+cmVmOwo+ICsKPiArCWlmIChjZGNsa19zdGF0ZS0+dmNvID09IDApCj4gKwkJcmV0dXJu Owo+IMKgCj4gwqAJZGl2aWRlciA9IEk5MTVfUkVBRChDRENMS19DVEwpICYgQlhUX0NEQ0xLX0NE MlhfRElWX1NFTF9NQVNLOwo+IMKgCj4gQEAgLTEwMzgsMTAgKzEwOTIsMTAgQEAgc3RhdGljIGlu dCBieHRfZ2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoAkJ YnJlYWs7Cj4gwqAJZGVmYXVsdDoKPiDCoAkJTUlTU0lOR19DQVNFKGRpdmlkZXIpOwo+IC0JCXJl dHVybiBkZXZfcHJpdi0+Y2RjbGtfcGxsLnJlZjsKPiArCQlyZXR1cm47Cj4gwqAJfQo+IMKgCj4g LQlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1QodmNvLCBkaXYpOwo+ICsJY2RjbGtfc3RhdGUtPmNk Y2xrID0gRElWX1JPVU5EX0NMT1NFU1QoY2RjbGtfc3RhdGUtPnZjbywgZGl2KTsKPiDCoH0KPiDC oAo+IMKgc3RhdGljIHZvaWQgYnh0X2RlX3BsbF9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiBAQCAtMTA1NCwxMiArMTEwOCwxMiBAQCBzdGF0aWMgdm9pZCBieHRf ZGVfcGxsX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IMKgCQkJ CcKgwqDCoMKgMSkpCj4gwqAJCURSTV9FUlJPUigidGltZW91dCB3YWl0aW5nIGZvciBERSBQTEwg dW5sb2NrXG4iKTsKPiDCoAo+IC0JZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28gPSAwOwo+ICsJZGV2 X3ByaXYtPmNkY2xrLmh3LnZjbyA9IDA7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyB2b2lkIGJ4dF9k ZV9wbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IHZjbykK PiDCoHsKPiAtCWludCByYXRpbyA9IERJVl9ST1VORF9DTE9TRVNUKHZjbywgZGV2X3ByaXYtPmNk Y2xrX3BsbC5yZWYpOwo+ICsJaW50IHJhdGlvID0gRElWX1JPVU5EX0NMT1NFU1QodmNvLCBkZXZf cHJpdi0+Y2RjbGsuaHcucmVmKTsKPiDCoAl1MzIgdmFsOwo+IMKgCj4gwqAJdmFsID0gSTkxNV9S RUFEKEJYVF9ERV9QTExfQ1RMKTsKPiBAQCAtMTA3Nyw3ICsxMTMxLDcgQEAgc3RhdGljIHZvaWQg Ynh0X2RlX3BsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQg dmNvKQo+IMKgCQkJCcKgwqDCoMKgMSkpCj4gwqAJCURSTV9FUlJPUigidGltZW91dCB3YWl0aW5n IGZvciBERSBQTEwgbG9ja1xuIik7Cj4gwqAKPiAtCWRldl9wcml2LT5jZGNsa19wbGwudmNvID0g dmNvOwo+ICsJZGV2X3ByaXYtPmNkY2xrLmh3LnZjbyA9IHZjbzsKPiDCoH0KPiDCoAo+IMKgc3Rh dGljIHZvaWQgYnh0X3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gQEAgLTExMDUsNyArMTE1OSw3IEBAIHN0YXRpYyB2b2lkIGJ4dF9zZXRfY2RjbGsoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IMKgCQlkaXZpZGVyID0gQlhUX0NEQ0xLX0NE MlhfRElWX1NFTF8xOwo+IMKgCQlicmVhazsKPiDCoAlkZWZhdWx0Ogo+IC0JCVdBUk5fT04oY2Rj bGsgIT0gZGV2X3ByaXYtPmNkY2xrX3BsbC5yZWYpOwo+ICsJCVdBUk5fT04oY2RjbGsgIT0gZGV2 X3ByaXYtPmNkY2xrLmh3LnJlZik7Cj4gwqAJCVdBUk5fT04odmNvICE9IDApOwo+IMKgCj4gwqAJ CWRpdmlkZXIgPSBCWFRfQ0RDTEtfQ0QyWF9ESVZfU0VMXzE7Cj4gQEAgLTExMjQsMTEgKzExNzgs MTEgQEAgc3RhdGljIHZvaWQgYnh0X3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gwqAJCXJldHVybjsKPiDCoAl9Cj4gwqAKPiAtCWlmIChkZXZfcHJpdi0+Y2Rj bGtfcGxsLnZjbyAhPSAwICYmCj4gLQnCoMKgwqDCoGRldl9wcml2LT5jZGNsa19wbGwudmNvICE9 IHZjbykKPiArCWlmIChkZXZfcHJpdi0+Y2RjbGsuaHcudmNvICE9IDAgJiYKPiArCcKgwqDCoMKg ZGV2X3ByaXYtPmNkY2xrLmh3LnZjbyAhPSB2Y28pCj4gwqAJCWJ4dF9kZV9wbGxfZGlzYWJsZShk ZXZfcHJpdik7Cj4gwqAKPiAtCWlmIChkZXZfcHJpdi0+Y2RjbGtfcGxsLnZjbyAhPSB2Y28pCj4g KwlpZiAoZGV2X3ByaXYtPmNkY2xrLmh3LnZjbyAhPSB2Y28pCj4gwqAJCWJ4dF9kZV9wbGxfZW5h YmxlKGRldl9wcml2LCB2Y28pOwo+IMKgCj4gwqAJdmFsID0gZGl2aWRlciB8IHNrbF9jZGNsa19k ZWNpbWFsKGNkY2xrKTsKPiBAQCAtMTE2NSw4ICsxMjE5LDggQEAgc3RhdGljIHZvaWQgYnh0X3Nh bml0aXplX2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoAo+IMKg CWludGVsX3VwZGF0ZV9jZGNsayhkZXZfcHJpdik7Cj4gwqAKPiAtCWlmIChkZXZfcHJpdi0+Y2Rj bGtfcGxsLnZjbyA9PSAwIHx8Cj4gLQnCoMKgwqDCoGRldl9wcml2LT5jZGNsa19mcmVxID09IGRl dl9wcml2LT5jZGNsa19wbGwucmVmKQo+ICsJaWYgKGRldl9wcml2LT5jZGNsay5ody52Y28gPT0g MCB8fAo+ICsJwqDCoMKgwqBkZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGsgPT0gZGV2X3ByaXYtPmNk Y2xrLmh3LnJlZikKPiDCoAkJZ290byBzYW5pdGl6ZTsKPiDCoAo+IMKgCS8qIERQTEwgb2theTsg dmVyaWZ5IHRoZSBjZGNsb2NrCj4gQEAgLTExODQsMTIgKzEyMzgsMTIgQEAgc3RhdGljIHZvaWQg Ynh0X3Nhbml0aXplX2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDC oAljZGN0bCAmPSB+QlhUX0NEQ0xLX0NEMlhfUElQRV9OT05FOwo+IMKgCj4gwqAJZXhwZWN0ZWQg PSAoY2RjdGwgJiBCWFRfQ0RDTEtfQ0QyWF9ESVZfU0VMX01BU0spIHwKPiAtCQnCoMKgwqBza2xf Y2RjbGtfZGVjaW1hbChkZXZfcHJpdi0+Y2RjbGtfZnJlcSk7Cj4gKwkJc2tsX2NkY2xrX2RlY2lt YWwoZGV2X3ByaXYtPmNkY2xrLmh3LmNkY2xrKTsKPiDCoAkvKgo+IMKgCcKgKiBEaXNhYmxlIFNT QSBQcmVjaGFyZ2Ugd2hlbiBDRCBjbG9jayBmcmVxdWVuY3kgPCA1MDAgTUh6LAo+IMKgCcKgKiBl bmFibGUgb3RoZXJ3aXNlLgo+IMKgCcKgKi8KPiAtCWlmIChkZXZfcHJpdi0+Y2RjbGtfZnJlcSA+ PSA1MDAwMDApCj4gKwlpZiAoZGV2X3ByaXYtPmNkY2xrLmh3LmNkY2xrID49IDUwMDAwMCkKPiDC oAkJZXhwZWN0ZWQgfD0gQlhUX0NEQ0xLX1NTQV9QUkVDSEFSR0VfRU5BQkxFOwo+IMKgCj4gwqAJ aWYgKGNkY3RsID09IGV4cGVjdGVkKQo+IEBAIC0xMjAwLDEwICsxMjU0LDEwIEBAIHN0YXRpYyB2 b2lkIGJ4dF9zYW5pdGl6ZV9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gwqAJRFJNX0RFQlVHX0tNUygiU2FuaXRpemluZyBjZGNsayBwcm9ncmFtbWVkIGJ5IHByZS1v c1xuIik7Cj4gwqAKPiDCoAkvKiBmb3JjZSBjZGNsayBwcm9ncmFtbWluZyAqLwo+IC0JZGV2X3By aXYtPmNkY2xrX2ZyZXEgPSAwOwo+ICsJZGV2X3ByaXYtPmNkY2xrLmh3LmNkY2xrID0gMDsKPiDC oAo+IMKgCS8qIGZvcmNlIGZ1bGwgUExMIGRpc2FibGUgKyBlbmFibGUgKi8KPiAtCWRldl9wcml2 LT5jZGNsa19wbGwudmNvID0gLTE7Cj4gKwlkZXZfcHJpdi0+Y2RjbGsuaHcudmNvID0gLTE7Cj4g wqB9Cj4gwqAKPiDCoHZvaWQgYnh0X2luaXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+IEBAIC0xMjEyLDcgKzEyNjYsOCBAQCB2b2lkIGJ4dF9pbml0X2NkY2xrKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoAo+IMKgCWJ4dF9zYW5pdGl6ZV9j ZGNsayhkZXZfcHJpdik7Cj4gwqAKPiAtCWlmIChkZXZfcHJpdi0+Y2RjbGtfZnJlcSAhPSAwICYm IGRldl9wcml2LT5jZGNsa19wbGwudmNvICE9IDApCj4gKwlpZiAoZGV2X3ByaXYtPmNkY2xrLmh3 LmNkY2xrICE9IDAgJiYKPiArCcKgwqDCoMKgZGV2X3ByaXYtPmNkY2xrLmh3LnZjbyAhPSAwKQo+ IMKgCQlyZXR1cm47Cj4gwqAKPiDCoAkvKgo+IEBAIC0xMjMzLDcgKzEyODgsMTMgQEAgdm9pZCBi eHRfaW5pdF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqAKPiDC oHZvaWQgYnh0X3VuaW5pdF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gwqB7Cj4gLQlieHRfc2V0X2NkY2xrKGRldl9wcml2LCBkZXZfcHJpdi0+Y2RjbGtfcGxsLnJl ZiwgMCk7Cj4gKwlieHRfc2V0X2NkY2xrKGRldl9wcml2LCBkZXZfcHJpdi0+Y2RjbGsuaHcucmVm LCAwKTsKPiArfQo+ICsKPiArYm9vbCBpbnRlbF9jZGNsa19zdGF0ZV9jb21wYXJlKGNvbnN0IHN0 cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqYSwKPiArCQkJwqDCoMKgwqDCoMKgwqBjb25zdCBzdHJ1 Y3QgaW50ZWxfY2RjbGtfc3RhdGUgKmIpCj4gK3sKPiArCXJldHVybiBtZW1jbXAoYSwgYiwgc2l6 ZW9mKCphKSkgPT0gMDsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGludCBiZHdfYWRqdXN0X21pbl9w aXBlX3BpeGVsX3JhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gQEAg LTE1MzMsNyArMTU5NCw3IEBAIHZvaWQgaW50ZWxfdXBkYXRlX21heF9jZGNsayhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqAJCWRldl9wcml2LT5tYXhfY2RjbGtfZnJlcSA9 IDQwMDAwMDsKPiDCoAl9IGVsc2Ugewo+IMKgCQkvKiBvdGhlcndpc2UgYXNzdW1lIGNkY2xrIGlz IGZpeGVkICovCj4gLQkJZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxID0gZGV2X3ByaXYtPmNkY2xr X2ZyZXE7Cj4gKwkJZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxID0gZGV2X3ByaXYtPmNkY2xrLmh3 LmNkY2xrOwo+IMKgCX0KPiDCoAo+IMKgCWRldl9wcml2LT5tYXhfZG90Y2xrX2ZyZXEgPSBpbnRl bF9jb21wdXRlX21heF9kb3RjbGsoZGV2X3ByaXYpOwo+IEBAIC0xNTQ3LDE1ICsxNjA4LDExIEBA IHZvaWQgaW50ZWxfdXBkYXRlX21heF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gwqAKPiDCoHZvaWQgaW50ZWxfdXBkYXRlX2NkY2xrKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiDCoHsKPiAtCWRldl9wcml2LT5jZGNsa19mcmVxID0gZGV2X3By aXYtPmRpc3BsYXkuZ2V0X2NkY2xrKGRldl9wcml2KTsKPiArCWRldl9wcml2LT5kaXNwbGF5Lmdl dF9jZGNsayhkZXZfcHJpdiwgJmRldl9wcml2LT5jZGNsay5odyk7Cj4gwqAKPiAtCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDkpCj4gLQkJRFJNX0RFQlVHX0RSSVZFUigiQ3VycmVudCBDRCBj bG9jayByYXRlOiAlZCBrSHosIFZDTzogJWQga0h6LCByZWY6ICVkIGtIelxuIiwKPiAtCQkJCcKg ZGV2X3ByaXYtPmNkY2xrX2ZyZXEsIGRldl9wcml2LT5jZGNsa19wbGwudmNvLAo+IC0JCQkJwqBk ZXZfcHJpdi0+Y2RjbGtfcGxsLnJlZik7Cj4gLQllbHNlCj4gLQkJRFJNX0RFQlVHX0RSSVZFUigi Q3VycmVudCBDRCBjbG9jayByYXRlOiAlZCBrSHpcbiIsCj4gLQkJCQnCoGRldl9wcml2LT5jZGNs a19mcmVxKTsKPiArCURSTV9ERUJVR19EUklWRVIoIkN1cnJlbnQgQ0QgY2xvY2sgcmF0ZTogJWQg a0h6LCBWQ086ICVkIGtIeiwgcmVmOiAlZCBrSHpcbiIsCj4gKwkJCcKgZGV2X3ByaXYtPmNkY2xr Lmh3LmNkY2xrLCBkZXZfcHJpdi0+Y2RjbGsuaHcudmNvLAo+ICsJCQnCoGRldl9wcml2LT5jZGNs ay5ody5yZWYpOwo+IMKgCj4gwqAJLyoKPiDCoAnCoCogOTowIENNQlVTIFtzaWNdIENEQ0xLIGZy ZXF1ZW5jeSAoY2RmcmVxKToKPiBAQCAtMTU2NSw3ICsxNjIyLDcgQEAgdm9pZCBpbnRlbF91cGRh dGVfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IMKgCcKgKi8KPiDC oAlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikp Cj4gwqAJCUk5MTVfV1JJVEUoR01CVVNGUkVRX1ZMViwKPiAtCQkJwqDCoMKgRElWX1JPVU5EX1VQ KGRldl9wcml2LT5jZGNsa19mcmVxLCAxMDAwKSk7Cj4gKwkJCcKgwqDCoERJVl9ST1VORF9VUChk ZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGssIDEwMDApKTsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGlu dCBwY2hfcmF3Y2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggNTE5ZTVkNjYzYzVmLi42YzM4YWIyOTk1 MDYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTEzNiw3ICsx MzYsNyBAQCBzdHJ1Y3QgaW50ZWxfbGltaXQgewo+IMKgfTsKPiDCoAo+IMKgLyogcmV0dXJucyBI UExMIGZyZXF1ZW5jeSBpbiBrSHogKi8KPiAtc3RhdGljIGludCB2YWxsZXl2aWV3X2dldF92Y28o c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICtpbnQgdmx2X2dldF9ocGxsX3Zj byhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqB7Cj4gwqAJaW50IGhwbGxf ZnJlcSwgdmNvX2ZyZXFbXSA9IHsgODAwLCAxNjAwLCAyMDAwLCAyNDAwIH07Cj4gwqAKPiBAQCAt MTcyLDcgKzE3Miw3IEBAIGludCB2bHZfZ2V0X2Nja19jbG9ja19ocGxsKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPiDCoAkJCcKgwqDCoGNvbnN0IGNoYXIgKm5hbWUsIHUzMiBy ZWcpCj4gwqB7Cj4gwqAJaWYgKGRldl9wcml2LT5ocGxsX2ZyZXEgPT0gMCkKPiAtCQlkZXZfcHJp di0+aHBsbF9mcmVxID0gdmFsbGV5dmlld19nZXRfdmNvKGRldl9wcml2KTsKPiArCQlkZXZfcHJp di0+aHBsbF9mcmVxID0gdmx2X2dldF9ocGxsX3ZjbyhkZXZfcHJpdik7Cj4gwqAKPiDCoAlyZXR1 cm4gdmx2X2dldF9jY2tfY2xvY2soZGV2X3ByaXYsIG5hbWUsIHJlZywKPiDCoAkJCQnCoGRldl9w cml2LT5ocGxsX2ZyZXEpOwo+IEBAIC0xMjQzNiw3ICsxMjQzNiw3IEBAIHN0YXRpYyBpbnQgaW50 ZWxfbW9kZXNldF9jaGVja3Moc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+IMKgCcKg Ki8KPiDCoAlpZiAoZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9jYWxjX2NkY2xrKSB7Cj4gwqAJ CWlmICghaW50ZWxfc3RhdGUtPmNkY2xrX3BsbF92Y28pCj4gLQkJCWludGVsX3N0YXRlLT5jZGNs a19wbGxfdmNvID0gZGV2X3ByaXYtPmNkY2xrX3BsbC52Y287Cj4gKwkJCWludGVsX3N0YXRlLT5j ZGNsa19wbGxfdmNvID0gZGV2X3ByaXYtPmNkY2xrLmh3LnZjbzsKPiDCoAkJaWYgKCFpbnRlbF9z dGF0ZS0+Y2RjbGtfcGxsX3ZjbykKPiDCoAkJCWludGVsX3N0YXRlLT5jZGNsa19wbGxfdmNvID0g ZGV2X3ByaXYtPnNrbF9wcmVmZXJyZWRfdmNvX2ZyZXE7Cj4gwqAKPiBAQCAtMTI0NTYsOCArMTI0 NTYsOCBAQCBzdGF0aWMgaW50IGludGVsX21vZGVzZXRfY2hlY2tzKHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSkKPiDCoAkJfQo+IMKgCj4gwqAJCS8qIEFsbCBwaXBlcyBtdXN0IGJlIHN3 aXRjaGVkIG9mZiB3aGlsZSB3ZSBjaGFuZ2UgdGhlIGNkY2xrLiAqLwo+IC0JCWlmIChpbnRlbF9z dGF0ZS0+ZGV2X2NkY2xrICE9IGRldl9wcml2LT5jZGNsa19mcmVxIHx8Cj4gLQkJwqDCoMKgwqBp bnRlbF9zdGF0ZS0+Y2RjbGtfcGxsX3ZjbyAhPSBkZXZfcHJpdi0+Y2RjbGtfcGxsLnZjbykgewo+ ICsJCWlmIChpbnRlbF9zdGF0ZS0+ZGV2X2NkY2xrICE9IGRldl9wcml2LT5jZGNsay5ody5jZGNs ayB8fAo+ICsJCcKgwqDCoMKgaW50ZWxfc3RhdGUtPmNkY2xrX3BsbF92Y28gIT0gZGV2X3ByaXYt PmNkY2xrLmh3LnZjbykgewo+IMKgCQkJcmV0ID0gaW50ZWxfbW9kZXNldF9hbGxfcGlwZXMoc3Rh dGUpOwo+IMKgCQkJaWYgKHJldCA8IDApCj4gwqAJCQkJcmV0dXJuIHJldDsKPiBAQCAtMTI4NzQs OCArMTI4NzQsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9hdG9taWNfY29tbWl0X3RhaWwoc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+IMKgCQlkcm1fYXRvbWljX2hlbHBlcl91cGRhdGVf bGVnYWN5X21vZGVzZXRfc3RhdGUoc3RhdGUtPmRldiwgc3RhdGUpOwo+IMKgCj4gwqAJCWlmIChk ZXZfcHJpdi0+ZGlzcGxheS5tb2Rlc2V0X2NvbW1pdF9jZGNsayAmJgo+IC0JCcKgwqDCoMKgKGlu dGVsX3N0YXRlLT5kZXZfY2RjbGsgIT0gZGV2X3ByaXYtPmNkY2xrX2ZyZXEgfHwKPiAtCQnCoMKg wqDCoMKgaW50ZWxfc3RhdGUtPmNkY2xrX3BsbF92Y28gIT0gZGV2X3ByaXYtPmNkY2xrX3BsbC52 Y28pKQo+ICsJCcKgwqDCoMKgKGludGVsX3N0YXRlLT5kZXZfY2RjbGsgIT0gZGV2X3ByaXYtPmNk Y2xrLmh3LmNkY2xrIHx8Cj4gKwkJwqDCoMKgwqDCoGludGVsX3N0YXRlLT5jZGNsa19wbGxfdmNv ICE9IGRldl9wcml2LT5jZGNsay5ody52Y28pKQo+IMKgCQkJZGV2X3ByaXYtPmRpc3BsYXkubW9k ZXNldF9jb21taXRfY2RjbGsoc3RhdGUpOwo+IMKgCj4gwqAJCS8qCj4gQEAgLTE0NzI0LDcgKzE0 NzI0LDcgQEAgdm9pZCBpbnRlbF9tb2Rlc2V0X2luaXRfaHcoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiDCoAo+IMKgCWludGVsX3VwZGF0ZV9jZGNsayhkZXZfcHJpdik7Cj4gwqAKPiAtCWRldl9w cml2LT5hdG9taWNfY2RjbGtfZnJlcSA9IGRldl9wcml2LT5jZGNsa19mcmVxOwo+ICsJZGV2X3By aXYtPmF0b21pY19jZGNsa19mcmVxID0gZGV2X3ByaXYtPmNkY2xrLmh3LmNkY2xrOwo+IMKgCj4g wqAJaW50ZWxfaW5pdF9jbG9ja19nYXRpbmcoZGV2X3ByaXYpOwo+IMKgfQo+IEBAIC0xNDg5Nyw3 ICsxNDg5Nyw3IEBAIGludCBpbnRlbF9tb2Rlc2V0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiDCoAo+IMKgCWludGVsX3VwZGF0ZV9jemNsayhkZXZfcHJpdik7Cj4gwqAJaW50ZWxfdXBk YXRlX2NkY2xrKGRldl9wcml2KTsKPiAtCWRldl9wcml2LT5hdG9taWNfY2RjbGtfZnJlcSA9IGRl dl9wcml2LT5jZGNsa19mcmVxOwo+ICsJZGV2X3ByaXYtPmF0b21pY19jZGNsa19mcmVxID0gZGV2 X3ByaXYtPmNkY2xrLmh3LmNkY2xrOwo+IMKgCj4gwqAJaW50ZWxfc2hhcmVkX2RwbGxfaW5pdChk ZXYpOwo+IMKgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gaW5kZXggNDVlYmM5NjMyNjMzLi43 M2E3MDhiOGQ4ODcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBAQCAtODg1LDcgKzg4 NSw3IEBAIHN0YXRpYyB1aW50MzJfdCBpbGtfZ2V0X2F1eF9jbG9ja19kaXZpZGVyKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAsIGludCBpbmRleCkKPiDCoAnCoCogZGl2aWRlIGJ5IDIwMDAgYW5k IHVzZSB0aGF0Cj4gwqAJwqAqLwo+IMKgCWlmIChpbnRlbF9kaWdfcG9ydC0+cG9ydCA9PSBQT1JU X0EpCj4gLQkJcmV0dXJuIERJVl9ST1VORF9DTE9TRVNUKGRldl9wcml2LT5jZGNsa19mcmVxLCAy MDAwKTsKPiArCQlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1QoZGV2X3ByaXYtPmNkY2xrLmh3LmNk Y2xrLCAyMDAwKTsKPiDCoAllbHNlCj4gwqAJCXJldHVybiBESVZfUk9VTkRfQ0xPU0VTVChkZXZf cHJpdi0+cmF3Y2xrX2ZyZXEsIDIwMDApOwo+IMKgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o Cj4gaW5kZXggOGQ5M2I3YmRhM2ZmLi5jYzAxMjIyODJhN2IgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaAo+IEBAIC0xMjI1LDEwICsxMjI1LDEzIEBAIHZvaWQgaW50ZWxfaW5pdF9jZGNs a19ob29rcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+IMKgdm9pZCBpbnRl bF91cGRhdGVfbWF4X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4g wqB2b2lkIGludGVsX3VwZGF0ZV9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpOwo+IMKgdm9pZCBpbnRlbF91cGRhdGVfcmF3Y2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdik7Cj4gK2Jvb2wgaW50ZWxfY2RjbGtfc3RhdGVfY29tcGFyZShjb25zdCBzdHJ1 Y3QgaW50ZWxfY2RjbGtfc3RhdGUgKmEsCj4gKwkJCcKgwqDCoMKgwqDCoMKgY29uc3Qgc3RydWN0 IGludGVsX2NkY2xrX3N0YXRlICpiKTsKPiDCoAo+IMKgLyogaW50ZWxfZGlzcGxheS5jICovCj4g wqBlbnVtIHRyYW5zY29kZXIgaW50ZWxfY3J0Y19wY2hfdHJhbnNjb2RlcihzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0Yyk7Cj4gwqB2b2lkIGludGVsX3VwZGF0ZV9yYXdjbGsoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KTsKPiAraW50IHZsdl9nZXRfaHBsbF92Y28oc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiDCoGludCB2bHZfZ2V0X2Nja19jbG9jayhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gwqAJCcKgwqDCoMKgwqDCoGNvbnN0IGNoYXIg Km5hbWUsIHUzMiByZWcsIGludCByZWZfZnJlcSk7Cj4gwqBpbnQgdmx2X2dldF9jY2tfY2xvY2tf aHBsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZmJjLmMKPiBpbmRleCA0NjMwNTZkODBmOWIuLjM4NTI1MWU0OGM3NCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2ZiYy5jCj4gQEAgLTgyOSw3ICs4MjksNyBAQCBzdGF0aWMgYm9vbCBpbnRl bF9mYmNfY2FuX2FjdGl2YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+IMKgCj4gwqAJLyog V2FGYmNFeGNlZWRDZENsb2NrVGhyZXNob2xkOmhzdyxiZHcgKi8KPiDCoAlpZiAoKElTX0hBU1dF TEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpICYmCj4gLQnCoMKgwqDCoGNh Y2hlLT5jcnRjLmhzd19iZHdfcGl4ZWxfcmF0ZSA+PSBkZXZfcHJpdi0+Y2RjbGtfZnJlcSAqIDk1 IC8gMTAwKSB7Cj4gKwnCoMKgwqDCoGNhY2hlLT5jcnRjLmhzd19iZHdfcGl4ZWxfcmF0ZSA+PSBk ZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGsgKiA5NSAvIDEwMCkgewo+IMKgCQlmYmMtPm5vX2ZiY19y ZWFzb24gPSAicGl4ZWwgcmF0ZSBpcyB0b28gYmlnIjsKPiDCoAkJcmV0dXJuIGZhbHNlOwo+IMKg CX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKPiBpbmRleCAxYTZmZjI2ZGVhMjAuLmNi NTBjNTI3NDAxZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5l bC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+IEBAIC0xMzE1 LDcgKzEzMTUsNyBAQCBzdGF0aWMgdTMyIGk5eHhfaHpfdG9fcHdtKHN0cnVjdCBpbnRlbF9jb25u ZWN0b3IgKmNvbm5lY3RvciwgdTMyIHB3bV9mcmVxX2h6KQo+IMKgCWlmIChJU19QSU5FVklFVyhk ZXZfcHJpdikpCj4gwqAJCWNsb2NrID0gS0h6KGRldl9wcml2LT5yYXdjbGtfZnJlcSk7Cj4gwqAJ ZWxzZQo+IC0JCWNsb2NrID0gS0h6KGRldl9wcml2LT5jZGNsa19mcmVxKTsKPiArCQljbG9jayA9 IEtIeihkZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGspOwo+IMKgCj4gwqAJcmV0dXJuIERJVl9ST1VO RF9DTE9TRVNUKGNsb2NrLCBwd21fZnJlcV9oeiAqIDMyKTsKPiDCoH0KPiBAQCAtMTMzMyw3ICsx MzMzLDcgQEAgc3RhdGljIHUzMiBpOTY1X2h6X3RvX3B3bShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IsIHUzMiBwd21fZnJlcV9oeikKPiDCoAlpZiAoSVNfRzRYKGRldl9wcml2KSkK PiDCoAkJY2xvY2sgPSBLSHooZGV2X3ByaXYtPnJhd2Nsa19mcmVxKTsKPiDCoAllbHNlCj4gLQkJ Y2xvY2sgPSBLSHooZGV2X3ByaXYtPmNkY2xrX2ZyZXEpOwo+ICsJCWNsb2NrID0gS0h6KGRldl9w cml2LT5jZGNsay5ody5jZGNsayk7Cj4gwqAKPiDCoAlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1Qo Y2xvY2ssIHB3bV9mcmVxX2h6ICogMTI4KTsKPiDCoH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcnVudGltZV9wbS5jCj4gaW5kZXggNmQ1ZWZlYjM1ODIzLi4xNGJiZWNjOGYyZWQgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCj4gQEAgLTk2NCw5ICs5NjQs MTIgQEAgc3RhdGljIHZvaWQgZ2VuOV9hc3NlcnRfZGJ1Zl9lbmFibGVkKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiDCoHN0YXRpYyB2b2lkIGdlbjlfZGNfb2ZmX3Bvd2VyX3dl bGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiDCoAkJCQkJwqDC oHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKnBvd2VyX3dlbGwpCj4gwqB7Cj4gKwlzdHJ1Y3QgaW50 ZWxfY2RjbGtfc3RhdGUgY2RjbGtfc3RhdGUgPSB7fTsKPiArCj4gwqAJZ2VuOV9zZXRfZGNfc3Rh dGUoZGV2X3ByaXYsIERDX1NUQVRFX0RJU0FCTEUpOwo+IMKgCj4gLQlXQVJOX09OKGRldl9wcml2 LT5jZGNsa19mcmVxICE9IGRldl9wcml2LT5kaXNwbGF5LmdldF9jZGNsayhkZXZfcHJpdikpOwo+ ICsJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2NkY2xrKGRldl9wcml2LCAmY2RjbGtfc3RhdGUpOwo+ ICsJV0FSTl9PTighaW50ZWxfY2RjbGtfc3RhdGVfY29tcGFyZSgmZGV2X3ByaXYtPmNkY2xrLmh3 LCAmY2RjbGtfc3RhdGUpKTsKPiDCoAo+IMKgCWdlbjlfYXNzZXJ0X2RidWZfZW5hYmxlZChkZXZf cHJpdik7Cj4gwqAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==