From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniele Ceraolo Spurio Subject: Re: [PATCH 4/6] drm/i915: skip forcewake actions on forcewake-less uncore Date: Tue, 18 Jun 2019 14:12:45 -0700 Message-ID: References: <20190617180935.505-1-daniele.ceraolospurio@intel.com> <20190617180935.505-5-daniele.ceraolospurio@intel.com> <3bf6ae46-ac6d-b5f5-7e2e-888819bdbc6b@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9F0946E255 for ; Tue, 18 Jun 2019 21:12:58 +0000 (UTC) In-Reply-To: <3bf6ae46-ac6d-b5f5-7e2e-888819bdbc6b@linux.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: Tvrtko Ursulin , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CgpPbiA2LzE4LzE5IDI6MDAgQU0sIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+IAo+IE9uIDE3LzA2 LzIwMTkgMTk6MDksIERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gd3JvdGU6Cj4+IFdlIGFsd2F5cyBj YWxsIHNvbWUgb2YgdGhlIHNldHVwL2NsZWFudXAgZnVuY3Rpb25zIGZvciBmb3JjZXdha2UsIGV2 ZW4KPj4gaWYgdGhlIGZlYXR1cmUgaXMgbm90IGFjdHVhbGx5IGF2YWlsYWJsZS4gU2tpcHBpbmcg dGhlc2Ugb3BlcmF0aW9ucyBpZgo+PiBmb3JjZXdha2UgaXMgbm90IGF2YWlsYWJsZSBzYXZlcyB1 cyBzb21lIG9wZXJhdGlvbnMgb24gb2xkZXIgZ2VucyBhbmQKPj4gcHJlcGFyZXMgdXMgZm9yIGhh dmluZyBhIGZvcmNld2FrZS1sZXNzIGRpc3BsYXkgdW5jb3JlLgo+PiBUaGUgc3VzcGVuZC9yZXN1 bWUgZnVuY3Rpb25zIGhhdmUgYWxzbyBiZWVuIHJlbmFtZWQgdG8gY2xlYXJseSBpbmRpY2F0ZQo+ PiB0aGF0IHRoZXkgb25seSBvcGVyYXRlIG9uIGZvcmNld2FrZSBzdGF0dXMuCj4+Cj4+IFNpZ25l ZC1vZmYtYnk6IERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gPGRhbmllbGUuY2VyYW9sb3NwdXJpb0Bp bnRlbC5jb20+Cj4+IC0tLQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jwqDC oMKgwqAgfMKgIDE1ICstLQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUu YyB8IDE0NyArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCj4+IMKgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3VuY29yZS5oIHzCoMKgIDggKy0KPj4gwqAgMyBmaWxlcyBjaGFuZ2VkLCAx MDEgaW5zZXJ0aW9ucygrKSwgNjkgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmMKPj4gaW5kZXggZDExMzI5NmNiZTM0Li45NWIzNmZlMTdmOTkgMTAwNjQ0Cj4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuYwo+PiBAQCAtOTk2LDcgKzk5Niw3IEBAIHN0YXRpYyBpbnQgaTkx NV9kcml2ZXJfaW5pdF9tbWlvKHN0cnVjdCAKPj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4+IMKgwqDCoMKgwqAgaW50ZWxfZGV2aWNlX2luZm9faW5pdF9tbWlvKGRldl9wcml2KTsKPj4g LcKgwqDCoCBpbnRlbF91bmNvcmVfcHJ1bmVfbW1pb19kb21haW5zKCZkZXZfcHJpdi0+dW5jb3Jl KTsKPj4gK8KgwqDCoCBpbnRlbF91bmNvcmVfcHJ1bmVfZm9yY2V3YWtlX2RvbWFpbnMoJmRldl9w cml2LT51bmNvcmUpOwo+PiDCoMKgwqDCoMKgIGludGVsX3VjX2luaXRfbW1pbyhkZXZfcHJpdik7 Cj4+IEBAIC0yMTUyLDcgKzIxNTIsNyBAQCBzdGF0aWMgaW50IGk5MTVfZHJtX3N1c3BlbmRfbGF0 ZShzdHJ1Y3QgCj4+IGRybV9kZXZpY2UgKmRldiwgYm9vbCBoaWJlcm5hdGlvbikKPj4gwqDCoMKg wqDCoCBpOTE1X2dlbV9zdXNwZW5kX2xhdGUoZGV2X3ByaXYpOwo+PiAtwqDCoMKgIGludGVsX3Vu Y29yZV9zdXNwZW5kKCZkZXZfcHJpdi0+dW5jb3JlKTsKPj4gK8KgwqDCoCBpbnRlbF91bmNvcmVf Zm9yY2V3YWtlX3N1c3BlbmQoJmRldl9wcml2LT51bmNvcmUpOwo+PiDCoMKgwqDCoMKgIGludGVs X3Bvd2VyX2RvbWFpbnNfc3VzcGVuZChkZXZfcHJpdiwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdldF9zdXNwZW5kX21vZGUoZGV2X3ByaXYsIGhpYmVybmF0 aW9uKSk7Cj4+IEBAIC0yMzQ4LDcgKzIzNDgsMTAgQEAgc3RhdGljIGludCBpOTE1X2RybV9yZXN1 bWVfZWFybHkoc3RydWN0IAo+PiBkcm1fZGV2aWNlICpkZXYpCj4+IMKgwqDCoMKgwqDCoMKgwqDC oCBEUk1fRVJST1IoIlJlc3VtZSBwcmVwYXJlIGZhaWxlZDogJWQsIGNvbnRpbnVpbmcgYW55d2F5 XG4iLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0KTsKPj4gLcKgwqDCoCBp bnRlbF91bmNvcmVfcmVzdW1lX2Vhcmx5KCZkZXZfcHJpdi0+dW5jb3JlKTsKPj4gK8KgwqDCoCBp ZiAoaW50ZWxfdW5jb3JlX3VuY2xhaW1lZF9tbWlvKCZkZXZfcHJpdi0+dW5jb3JlKSkKPj4gK8Kg wqDCoMKgwqDCoMKgIERSTV9ERUJVRygidW5jbGFpbWVkIG1taW8gZGV0ZWN0ZWQgb24gcmVzdW1l LCBjbGVhcmluZ1xuIik7Cj4+ICsKPiAKPiBXaHkgZG9lcyB0aGlzIGJpdCBuZWVkcyB0byBiZSBw dWxsZWQgdXAgdG8gdGhpcyBsZXZlbD8gTXkgZmlyc3QgbGluZSBvZiAKPiB0aGlua2luZyBpcyB0 aGF0IHdlIHNob3VsZCBhaW0gdG8ga2VlcCB0aGUgY29tcG9uZW50IHNwZWNpZmljIHN0ZXBzIAo+ IGRvd24sIGlmIHBvc3NpYmxlLgoKVGhlIGlkZWEgd2FzIHRvIHNwbGl0IHRoaXMgb3V0IHRvIGhh dmUgdGhlIGZ1bmN0aW9uIGJlbG93IGFjdCBvbiAKZm9yY2V3YWtlIG9ubHkuIENocmlzIGRpZG4n dCBsaWtlIGl0IGVpdGhlciwgc28gSSdtIGdvaW5nIHRvIHJvbGwgYmFjayAKdGhlc2UgY2hhbmdl cy4KCj4gCj4+ICvCoMKgwqAgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9yZXN1bWVfZWFybHkoJmRl dl9wcml2LT51bmNvcmUpOwo+PiDCoMKgwqDCoMKgIGk5MTVfY2hlY2tfYW5kX2NsZWFyX2ZhdWx0 cyhkZXZfcHJpdik7Cj4+IEBAIC0yOTIzLDcgKzI5MjYsNyBAQCBzdGF0aWMgaW50IGludGVsX3J1 bnRpbWVfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlIAo+PiAqa2RldikKPj4gwqDCoMKgwqDCoCBpbnRl bF9ydW50aW1lX3BtX2Rpc2FibGVfaW50ZXJydXB0cyhkZXZfcHJpdik7Cj4+IC3CoMKgwqAgaW50 ZWxfdW5jb3JlX3N1c3BlbmQoJmRldl9wcml2LT51bmNvcmUpOwo+PiArwqDCoMKgIGludGVsX3Vu Y29yZV9mb3JjZXdha2Vfc3VzcGVuZCgmZGV2X3ByaXYtPnVuY29yZSk7Cj4+IMKgwqDCoMKgwqAg cmV0ID0gMDsKPj4gwqDCoMKgwqDCoCBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkgewo+ PiBAQCAtMjk0MCw3ICsyOTQzLDcgQEAgc3RhdGljIGludCBpbnRlbF9ydW50aW1lX3N1c3BlbmQo c3RydWN0IGRldmljZSAKPj4gKmtkZXYpCj4+IMKgwqDCoMKgwqAgaWYgKHJldCkgewo+PiDCoMKg wqDCoMKgwqDCoMKgwqAgRFJNX0VSUk9SKCJSdW50aW1lIHN1c3BlbmQgZmFpbGVkLCBkaXNhYmxp bmcgaXQgKCVkKVxuIiwgcmV0KTsKPj4gLcKgwqDCoMKgwqDCoMKgIGludGVsX3VuY29yZV9ydW50 aW1lX3Jlc3VtZSgmZGV2X3ByaXYtPnVuY29yZSk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpbnRlbF91 bmNvcmVfZm9yY2V3YWtlX3J1bnRpbWVfcmVzdW1lKCZkZXZfcHJpdi0+dW5jb3JlKTsKPj4gwqDC oMKgwqDCoMKgwqDCoMKgIGludGVsX3J1bnRpbWVfcG1fZW5hYmxlX2ludGVycnVwdHMoZGV2X3By aXYpOwo+PiBAQCAtMzAzOCw3ICszMDQxLDcgQEAgc3RhdGljIGludCBpbnRlbF9ydW50aW1lX3Jl c3VtZShzdHJ1Y3QgZGV2aWNlIAo+PiAqa2RldikKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9 IHZsdl9yZXN1bWVfcHJlcGFyZShkZXZfcHJpdiwgdHJ1ZSk7Cj4+IMKgwqDCoMKgwqAgfQo+PiAt wqDCoMKgIGludGVsX3VuY29yZV9ydW50aW1lX3Jlc3VtZSgmZGV2X3ByaXYtPnVuY29yZSk7Cj4+ ICvCoMKgwqAgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9ydW50aW1lX3Jlc3VtZSgmZGV2X3ByaXYt PnVuY29yZSk7Cj4+IMKgwqDCoMKgwqAgaW50ZWxfcnVudGltZV9wbV9lbmFibGVfaW50ZXJydXB0 cyhkZXZfcHJpdik7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91 bmNvcmUuYyAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+PiBpbmRl eCA4OGE2OWJmNzEzYzkuLmMwZjU1NjdlZTA5NiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfdW5jb3JlLmMKPj4gQEAgLTQ4NSwxMiArNDg1LDExIEBAIGNoZWNrX2Zvcl91bmNsYWltZWRf bW1pbyhzdHJ1Y3QgaW50ZWxfdW5jb3JlIAo+PiAqdW5jb3JlKQo+PiDCoMKgwqDCoMKgIHJldHVy biByZXQ7Cj4+IMKgIH0KPj4gLXN0YXRpYyB2b2lkIF9faW50ZWxfdW5jb3JlX2Vhcmx5X3Nhbml0 aXplKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSwKPj4gK3N0YXRpYyB2b2lkIGZvcmNld2Fr ZV9lYXJseV9zYW5pdGl6ZShzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUsCj4+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgaW50IHJlc3Rv cmVfZm9yY2V3YWtlKQo+PiDCoCB7Cj4+IC3CoMKgwqAgLyogY2xlYXIgb3V0IHVuY2xhaW1lZCBy ZWcgZGV0ZWN0aW9uIGJpdCAqLwo+PiAtwqDCoMKgIGlmIChjaGVja19mb3JfdW5jbGFpbWVkX21t aW8odW5jb3JlKSkKPj4gLcKgwqDCoMKgwqDCoMKgIERSTV9ERUJVRygidW5jbGFpbWVkIG1taW8g ZGV0ZWN0ZWQgb24gdW5jb3JlIGluaXQsIGNsZWFyaW5nXG4iKTsKPj4gK8KgwqDCoCBpZiAoIWlu dGVsX3VuY29yZV9oYXNfZm9yY2V3YWtlKHVuY29yZSkpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1 cm47Cj4+IMKgwqDCoMKgwqAgLyogV2FEaXNhYmxlU2hhZG93UmVnRm9yQ3BkOmNodiAqLwo+PiDC oMKgwqDCoMKgIGlmIChJU19DSEVSUllWSUVXKHVuY29yZS0+aTkxNSkpIHsKPj4gQEAgLTUxMyw4 ICs1MTIsMTEgQEAgc3RhdGljIHZvaWQgX19pbnRlbF91bmNvcmVfZWFybHlfc2FuaXRpemUoc3Ry dWN0IAo+PiBpbnRlbF91bmNvcmUgKnVuY29yZSwKPj4gwqDCoMKgwqDCoCBpb3NmX21iaV9wdW5p dF9yZWxlYXNlKCk7Cj4+IMKgIH0KPj4gLXZvaWQgaW50ZWxfdW5jb3JlX3N1c3BlbmQoc3RydWN0 IGludGVsX3VuY29yZSAqdW5jb3JlKQo+PiArdm9pZCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3N1 c3BlbmQoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlKQo+PiDCoCB7Cj4+ICvCoMKgwqAgaWYg KCFpbnRlbF91bmNvcmVfaGFzX2ZvcmNld2FrZSh1bmNvcmUpKQo+PiArwqDCoMKgwqDCoMKgwqAg cmV0dXJuOwo+PiArCj4+IMKgwqDCoMKgwqAgaW9zZl9tYmlfcHVuaXRfYWNxdWlyZSgpOwo+PiDC oMKgwqDCoMKgIGlvc2ZfbWJpX3VucmVnaXN0ZXJfcG1pY19idXNfYWNjZXNzX25vdGlmaWVyX3Vu bG9ja2VkKAo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgJnVuY29yZS0+cG1pY19idXNfYWNjZXNzX25i KTsKPj4gQEAgLTUyMiwxOCArNTI0LDI0IEBAIHZvaWQgaW50ZWxfdW5jb3JlX3N1c3BlbmQoc3Ry dWN0IGludGVsX3VuY29yZSAKPj4gKnVuY29yZSkKPj4gwqDCoMKgwqDCoCBpb3NmX21iaV9wdW5p dF9yZWxlYXNlKCk7Cj4+IMKgIH0KPj4gLXZvaWQgaW50ZWxfdW5jb3JlX3Jlc3VtZV9lYXJseShz dHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpCj4+ICt2b2lkIGludGVsX3VuY29yZV9mb3JjZXdh a2VfcmVzdW1lX2Vhcmx5KHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSkKPj4gwqAgewo+PiDC oMKgwqDCoMKgIHVuc2lnbmVkIGludCByZXN0b3JlX2ZvcmNld2FrZTsKPj4gK8KgwqDCoCBpZiAo IWludGVsX3VuY29yZV9oYXNfZm9yY2V3YWtlKHVuY29yZSkpCj4+ICvCoMKgwqDCoMKgwqDCoCBy ZXR1cm47Cj4+ICsKPj4gwqDCoMKgwqDCoCByZXN0b3JlX2ZvcmNld2FrZSA9IGZldGNoX2FuZF96 ZXJvKCZ1bmNvcmUtPmZ3X2RvbWFpbnNfc2F2ZWQpOwo+PiAtwqDCoMKgIF9faW50ZWxfdW5jb3Jl X2Vhcmx5X3Nhbml0aXplKHVuY29yZSwgcmVzdG9yZV9mb3JjZXdha2UpOwo+PiArwqDCoMKgIGZv cmNld2FrZV9lYXJseV9zYW5pdGl6ZSh1bmNvcmUsIHJlc3RvcmVfZm9yY2V3YWtlKTsKPiAKPiBU aGlzIGNhbGwgYWxyZWFkeSBoYW5kbGVzICFoYXNfZm9yY2V3YWtlLCBzbyBmdW5jdGlvbiBoYW5k bGVzIGl0IHR3aWNlIAo+IGluIHNvdXJjZS4gSXMgdGhpcyB3aGF0IHlvdSBpbnRlbmRlZD8gTWF5 YmUganVzdCBhZGQgZG91YmxlLXVuZGVyc2NvcmUgCj4gdmVyc2lvbiBmb3IgZWFybHkgc2FuaXRp emUgd2l0aG91dCB0aGUgY2hlY2sgYnV0IEdFTV9CVUdfT04/Cgp3aWxsIGRvLgoKPiAKPj4gICAg ICAgCj4+IGlvc2ZfbWJpX3JlZ2lzdGVyX3BtaWNfYnVzX2FjY2Vzc19ub3RpZmllcigmdW5jb3Jl LT5wbWljX2J1c19hY2Nlc3NfbmIpOwo+PiDCoCB9Cj4+IC12b2lkIGludGVsX3VuY29yZV9ydW50 aW1lX3Jlc3VtZShzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpCj4+ICt2b2lkIGludGVsX3Vu Y29yZV9mb3JjZXdha2VfcnVudGltZV9yZXN1bWUoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3Jl KQo+PiDCoCB7Cj4+ICvCoMKgwqAgaWYgKCFpbnRlbF91bmNvcmVfaGFzX2ZvcmNld2FrZSh1bmNv cmUpKQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuOwo+PiArCj4+ICAgICAgIAo+PiBpb3NmX21i aV9yZWdpc3Rlcl9wbWljX2J1c19hY2Nlc3Nfbm90aWZpZXIoJnVuY29yZS0+cG1pY19idXNfYWNj ZXNzX25iKTsKPj4gwqAgfQo+PiBAQCAtMTM0OCw4ICsxMzU2LDcgQEAgc3RhdGljIHZvaWQgaW50 ZWxfdW5jb3JlX2Z3X2RvbWFpbnNfaW5pdChzdHJ1Y3QgCj4+IGludGVsX3VuY29yZSAqdW5jb3Jl KQo+PiDCoCB7Cj4+IMKgwqDCoMKgwqAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB1 bmNvcmUtPmk5MTU7Cj4+IC3CoMKgwqAgaWYgKCFpbnRlbF91bmNvcmVfaGFzX2ZvcmNld2FrZSh1 bmNvcmUpKQo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0dXJuOwo+PiArwqDCoMKgIEdFTV9CVUdfT04o IWludGVsX3VuY29yZV9oYXNfZm9yY2V3YWtlKHVuY29yZSkpOwo+PiDCoMKgwqDCoMKgIGlmIChJ TlRFTF9HRU4oaTkxNSkgPj0gMTEpIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGludCBpOwo+PiBA QCAtMTU0MiwzNiArMTU0OSwyOSBAQCB2b2lkIGludGVsX3VuY29yZV9pbml0X2Vhcmx5KHN0cnVj dCAKPj4gZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPj4gwqDCoMKgwqDCoCB1bmNvcmUtPnJwbSA9 ICZpOTE1LT5ydW50aW1lX3BtOwo+PiDCoCB9Cj4+IC1pbnQgaW50ZWxfdW5jb3JlX2luaXRfbW1p byhzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpCj4+ICtzdGF0aWMgdm9pZCB1bmNvcmVfcmF3 X2luaXQoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlKQo+PiDCoCB7Cj4+IC3CoMKgwqAgc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB1bmNvcmUtPmk5MTU7Cj4+IC3CoMKgwqAgaW50 IHJldDsKPj4gK8KgwqDCoCBHRU1fQlVHX09OKGludGVsX3VuY29yZV9oYXNfZm9yY2V3YWtlKHVu Y29yZSkpOwo+PiAtwqDCoMKgIHJldCA9IHVuY29yZV9tbWlvX3NldHVwKHVuY29yZSk7Cj4+IC3C oMKgwqAgaWYgKHJldCkKPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+ICvCoMKgwqAg aWYgKElTX0dFTih1bmNvcmUtPmk5MTUsIDUpKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBBU1NJR05f UkFXX1dSSVRFX01NSU9fVkZVTkNTKHVuY29yZSwgZ2VuNSk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBB U1NJR05fUkFXX1JFQURfTU1JT19WRlVOQ1ModW5jb3JlLCBnZW41KTsKPj4gK8KgwqDCoCB9IGVs c2Ugewo+PiArwqDCoMKgwqDCoMKgwqAgQVNTSUdOX1JBV19XUklURV9NTUlPX1ZGVU5DUyh1bmNv cmUsIGdlbjIpOwo+PiArwqDCoMKgwqDCoMKgwqAgQVNTSUdOX1JBV19SRUFEX01NSU9fVkZVTkNT KHVuY29yZSwgZ2VuMik7Cj4+ICvCoMKgwqAgfQo+PiArfQo+PiAtwqDCoMKgIGk5MTVfY2hlY2tf dmdwdShpOTE1KTsKPj4gK3N0YXRpYyB2b2lkIHVuY29yZV9mb3JjZXdha2VfaW5pdChzdHJ1Y3Qg aW50ZWxfdW5jb3JlICp1bmNvcmUpCj4+ICt7Cj4+ICvCoMKgwqAgc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUgPSB1bmNvcmUtPmk5MTU7Cj4+IC3CoMKgwqAgaWYgKElOVEVMX0dFTihpOTE1 KSA+IDUgJiYgIWludGVsX3ZncHVfYWN0aXZlKGk5MTUpKQo+PiAtwqDCoMKgwqDCoMKgwqAgdW5j b3JlLT5mbGFncyB8PSBVTkNPUkVfSEFTX0ZPUkNFV0FLRTsKPj4gK8KgwqDCoCBHRU1fQlVHX09O KCFpbnRlbF91bmNvcmVfaGFzX2ZvcmNld2FrZSh1bmNvcmUpKTsKPj4gwqDCoMKgwqDCoCBpbnRl bF91bmNvcmVfZndfZG9tYWluc19pbml0KHVuY29yZSk7Cj4+IC3CoMKgwqAgX19pbnRlbF91bmNv cmVfZWFybHlfc2FuaXRpemUodW5jb3JlLCAwKTsKPj4gK8KgwqDCoCBmb3JjZXdha2VfZWFybHlf c2FuaXRpemUodW5jb3JlLCAwKTsKPj4gLcKgwqDCoCB1bmNvcmUtPnVuY2xhaW1lZF9tbWlvX2No ZWNrID0gMTsKPj4gLcKgwqDCoCB1bmNvcmUtPnBtaWNfYnVzX2FjY2Vzc19uYi5ub3RpZmllcl9j YWxsID0KPj4gLcKgwqDCoMKgwqDCoMKgIGk5MTVfcG1pY19idXNfYWNjZXNzX25vdGlmaWVyOwo+ PiAtCj4+IC3CoMKgwqAgaWYgKCFpbnRlbF91bmNvcmVfaGFzX2ZvcmNld2FrZSh1bmNvcmUpKSB7 Cj4+IC3CoMKgwqDCoMKgwqDCoCBpZiAoSVNfR0VOKGk5MTUsIDUpKSB7Cj4+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgIEFTU0lHTl9SQVdfV1JJVEVfTU1JT19WRlVOQ1ModW5jb3JlLCBnZW41KTsK Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQVNTSUdOX1JBV19SRUFEX01NSU9fVkZVTkNTKHVu Y29yZSwgZ2VuNSk7Cj4+IC3CoMKgwqDCoMKgwqDCoCB9IGVsc2Ugewo+PiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBBU1NJR05fUkFXX1dSSVRFX01NSU9fVkZVTkNTKHVuY29yZSwgZ2VuMik7Cj4+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFTU0lHTl9SQVdfUkVBRF9NTUlPX1ZGVU5DUyh1bmNv cmUsIGdlbjIpOwo+PiAtwqDCoMKgwqDCoMKgwqAgfQo+PiAtwqDCoMKgIH0gZWxzZSBpZiAoSVNf R0VOX1JBTkdFKGk5MTUsIDYsIDcpKSB7Cj4+ICvCoMKgwqAgaWYgKElTX0dFTl9SQU5HRShpOTE1 LCA2LCA3KSkgewo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgQVNTSUdOX1dSSVRFX01NSU9fVkZVTkNT KHVuY29yZSwgZ2VuNik7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoSVNfVkFMTEVZVklFVyhp OTE1KSkgewo+PiBAQCAtMTU4NSw3ICsxNTg1LDYgQEAgaW50IGludGVsX3VuY29yZV9pbml0X21t aW8oc3RydWN0IGludGVsX3VuY29yZSAKPj4gKnVuY29yZSkKPj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgQVNTSUdOX0ZXX0RPTUFJTlNfVEFCTEUodW5jb3JlLCBfX2Nodl9md19yYW5nZXMp Owo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBU1NJR05fV1JJVEVfTU1JT19WRlVOQ1Mo dW5jb3JlLCBmd3RhYmxlKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQVNTSUdOX1JF QURfTU1JT19WRlVOQ1ModW5jb3JlLCBmd3RhYmxlKTsKPj4gLQo+PiDCoMKgwqDCoMKgwqDCoMKg wqAgfSBlbHNlIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQVNTSUdOX1dSSVRFX01N SU9fVkZVTkNTKHVuY29yZSwgZ2VuOCk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFT U0lHTl9SRUFEX01NSU9fVkZVTkNTKHVuY29yZSwgZ2VuNik7Cj4+IEBAIC0xNjAwLDYgKzE1OTks MzEgQEAgaW50IGludGVsX3VuY29yZV9pbml0X21taW8oc3RydWN0IGludGVsX3VuY29yZSAKPj4g KnVuY29yZSkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIEFTU0lHTl9SRUFEX01NSU9fVkZVTkNTKHVu Y29yZSwgZ2VuMTFfZnd0YWJsZSk7Cj4+IMKgwqDCoMKgwqAgfQo+PiArwqDCoMKgIHVuY29yZS0+ cG1pY19idXNfYWNjZXNzX25iLm5vdGlmaWVyX2NhbGwgPSAKPj4gaTkxNV9wbWljX2J1c19hY2Nl c3Nfbm90aWZpZXI7Cj4+ICsgICAgCj4+IGlvc2ZfbWJpX3JlZ2lzdGVyX3BtaWNfYnVzX2FjY2Vz c19ub3RpZmllcigmdW5jb3JlLT5wbWljX2J1c19hY2Nlc3NfbmIpOwo+PiArfQo+PiArCj4+ICtp bnQgaW50ZWxfdW5jb3JlX2luaXRfbW1pbyhzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpCj4+ ICt7Cj4+ICvCoMKgwqAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB1bmNvcmUtPmk5 MTU7Cj4+ICvCoMKgwqAgaW50IHJldDsKPj4gKwo+PiArwqDCoMKgIHJldCA9IHVuY29yZV9tbWlv X3NldHVwKHVuY29yZSk7Cj4+ICvCoMKgwqAgaWYgKHJldCkKPj4gK8KgwqDCoMKgwqDCoMKgIHJl dHVybiByZXQ7Cj4+ICsKPj4gK8KgwqDCoCBpOTE1X2NoZWNrX3ZncHUoaTkxNSk7Cj4+ICsKPj4g K8KgwqDCoCBpZiAoSU5URUxfR0VOKGk5MTUpID4gNSAmJiAhaW50ZWxfdmdwdV9hY3RpdmUoaTkx NSkpCj4+ICvCoMKgwqDCoMKgwqDCoCB1bmNvcmUtPmZsYWdzIHw9IFVOQ09SRV9IQVNfRk9SQ0VX QUtFOwo+PiArCj4+ICvCoMKgwqAgdW5jb3JlLT51bmNsYWltZWRfbW1pb19jaGVjayA9IDE7Cj4+ ICsKPj4gK8KgwqDCoCBpZiAoIWludGVsX3VuY29yZV9oYXNfZm9yY2V3YWtlKHVuY29yZSkpCj4+ ICvCoMKgwqDCoMKgwqDCoCB1bmNvcmVfcmF3X2luaXQodW5jb3JlKTsKPiAKPiBJcyBhbnkgb2Yg dGhlIHJlbWFpbmluZyBjb2RlIGluIHRoaXMgZnVuY3Rpb24gcmVsZXZhbnQgYWZ0ZXIgdGhpcyBi cmFuY2ggCj4gaGFzIGJlZW4gdGFrZW4/IElmIG5vdCB0aGlzIGNvdWxkIGJlIGNoYW5nZWQgdG86 Cj4gCj4gIMKgIGlmICghaW50ZWxfdW5jb3JlX2hhc19mb3JjZXdha2UodW5jb3JlKSkgewo+ICDC oMKgwqDCoHVuY29yZV9yYXdfaW5pdCh1bmNvcmUpOwo+ICDCoMKgwqDCoHJldHVybjsKPiAgwqAg fQo+IAo+ICDCoCB1bmNvcmVfZm9yY2V3YWtlX2luaXQodW5jb3JlKTsKPiAgwqAgLi4uCj4gCj4g SG0sIGFsc28gaXMgInVuY2xhaW1lZF9tbWlvX2NoZWNrID0gMTsiIGFib3ZlIHBvc3NpYmxlL3Jl bGV2YW50IHdoZXJlIG5vIAo+IGZvcmN3YWtlPyBEb2Vzbid0IGxvb2sgbGlrZSBpdC4gVW5sZXNz IHZncHU/Cj4gCgpUaGUgdW5jbGFpbWVkIG1taW8gc3R1ZmYgKGluY2x1ZGluZyB0aGUgZmxhZ3Mp IGJlbG93IHRoaXMgcG9pbnQgaXMgbm90IAp0aWVkIHRvIGZvcmNld2FrZSBmcm9tIGEgZnVuY3Rp b25hbCBQT1YsIGJ1dCBpdCBpbmRlZWQgdHJ1ZSB0aGF0IGFsbCB0aGUgCnBsYXRmb3JtcyB3aXRo IHRoZSBtbWlvIGRlYnVnIGRvIGhhdmUgZm9yY2V3YWtlLiBJJ2Qgc3RpbGwgcHJlZmVyIHRvIAph dm9pZCBjb25uZWN0aW5nIHRoZSAyIGZlYXR1cmVzIHVuZGVyIHRoZSBzYW1lIGNoZWNrIGp1c3Qg YmVjYXVzZSB0aGV5IApoYXBwZW4gdG8gYmUgb24gdGhlIHNhbWUgcGxhdGZvcm1zLgoKQWxzbyBh cyB5b3UgbWVudGlvbmVkIEdWVCB0cmFwcyB0aGUgRlBHQV9EQkcgcmVnaXN0ZXIgdXNlZCBieSB0 aGUgCnVuY2xhaW1lZCBtbWlvIGxvZ2ljLCBzbyB0aGV5IGRvIGhhdmUgdGhlIGNhcGFiaWxpdHkg d2hlbiBmb3JjZXdha2UgaXMgCmRpc2FibGVkLgoKPj4gK8KgwqDCoCBlbHNlCj4+ICvCoMKgwqDC oMKgwqDCoCB1bmNvcmVfZm9yY2V3YWtlX2luaXQodW5jb3JlKTsKPj4gKwo+PiDCoMKgwqDCoMKg IC8qIG1ha2Ugc3VyZSBmdyBmdW5jcyBhcmUgc2V0IGlmIGFuZCBvbmx5IGlmIHdlIGhhdmUgZncq Lwo+PiDCoMKgwqDCoMKgIEdFTV9CVUdfT04oaW50ZWxfdW5jb3JlX2hhc19mb3JjZXdha2UodW5j b3JlKSAhPSAKPj4gISF1bmNvcmUtPmZ1bmNzLmZvcmNlX3dha2VfZ2V0KTsKPj4gwqDCoMKgwqDC oCBHRU1fQlVHX09OKGludGVsX3VuY29yZV9oYXNfZm9yY2V3YWtlKHVuY29yZSkgIT0gCj4+ICEh dW5jb3JlLT5mdW5jcy5mb3JjZV93YWtlX3B1dCk7Cj4+IEBAIC0xNjE1LDcgKzE2MzksOSBAQCBp bnQgaW50ZWxfdW5jb3JlX2luaXRfbW1pbyhzdHJ1Y3QgaW50ZWxfdW5jb3JlIAo+PiAqdW5jb3Jl KQo+PiDCoMKgwqDCoMKgIGlmIChJU19HRU5fUkFOR0UoaTkxNSwgNiwgNykpCj4+IMKgwqDCoMKg wqDCoMKgwqDCoCB1bmNvcmUtPmZsYWdzIHw9IFVOQ09SRV9IQVNfRklGTzsKPj4gLSAgICAKPj4g aW9zZl9tYmlfcmVnaXN0ZXJfcG1pY19idXNfYWNjZXNzX25vdGlmaWVyKCZ1bmNvcmUtPnBtaWNf YnVzX2FjY2Vzc19uYik7Cj4+ICvCoMKgwqAgLyogY2xlYXIgb3V0IHVuY2xhaW1lZCByZWcgZGV0 ZWN0aW9uIGJpdCAqLwo+PiArwqDCoMKgIGlmIChjaGVja19mb3JfdW5jbGFpbWVkX21taW8odW5j b3JlKSkKPj4gK8KgwqDCoMKgwqDCoMKgIERSTV9ERUJVRygidW5jbGFpbWVkIG1taW8gZGV0ZWN0 ZWQgb24gdW5jb3JlIGluaXQsIGNsZWFyaW5nXG4iKTsKPj4gwqDCoMKgwqDCoCByZXR1cm4gMDsK Pj4gwqAgfQo+PiBAQCAtMTYyNSw0NCArMTY1MSw0NyBAQCBpbnQgaW50ZWxfdW5jb3JlX2luaXRf bW1pbyhzdHJ1Y3QgaW50ZWxfdW5jb3JlIAo+PiAqdW5jb3JlKQo+PiDCoMKgICogdGhlIGZvcmNl d2FrZSBkb21haW5zLiBQcnVuZSB0aGVtLCB0byBtYWtlIHN1cmUgdGhleSBvbmx5IAo+PiByZWZl cmVuY2UgZXhpc3RpbmcKPj4gwqDCoCAqIGVuZ2luZXMuCj4+IMKgwqAgKi8KPj4gLXZvaWQgaW50 ZWxfdW5jb3JlX3BydW5lX21taW9fZG9tYWlucyhzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUp Cj4+ICt2b2lkIGludGVsX3VuY29yZV9wcnVuZV9mb3JjZXdha2VfZG9tYWlucyhzdHJ1Y3QgaW50 ZWxfdW5jb3JlICp1bmNvcmUpCj4+IMKgIHsKPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSA9IHVuY29yZS0+aTkxNTsKPj4gK8KgwqDCoCBlbnVtIGZvcmNld2FrZV9k b21haW5zIGZ3X2RvbWFpbnMgPSB1bmNvcmUtPmZ3X2RvbWFpbnM7Cj4+ICvCoMKgwqAgZW51bSBm b3JjZXdha2VfZG9tYWluX2lkIGRvbWFpbl9pZDsKPj4gK8KgwqDCoCBpbnQgaTsKPj4gLcKgwqDC oCBpZiAoSU5URUxfR0VOKGk5MTUpID49IDExKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBlbnVtIGZv cmNld2FrZV9kb21haW5zIGZ3X2RvbWFpbnMgPSB1bmNvcmUtPmZ3X2RvbWFpbnM7Cj4+IC3CoMKg wqDCoMKgwqDCoCBlbnVtIGZvcmNld2FrZV9kb21haW5faWQgZG9tYWluX2lkOwo+PiAtwqDCoMKg wqDCoMKgwqAgaW50IGk7Cj4+ICvCoMKgwqAgaWYgKCFpbnRlbF91bmNvcmVfaGFzX2ZvcmNld2Fr ZSh1bmNvcmUpIHx8IElOVEVMX0dFTihpOTE1KSA8IDExKQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0 dXJuOwo+PiAtwqDCoMKgwqDCoMKgwqAgZm9yIChpID0gMDsgaSA8IEk5MTVfTUFYX1ZDUzsgaSsr KSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRvbWFpbl9pZCA9IEZXX0RPTUFJTl9JRF9N RURJQV9WREJPWDAgKyBpOwo+PiArwqDCoMKgIGZvciAoaSA9IDA7IGkgPCBJOTE1X01BWF9WQ1M7 IGkrKykgewo+PiArwqDCoMKgwqDCoMKgwqAgZG9tYWluX2lkID0gRldfRE9NQUlOX0lEX01FRElB X1ZEQk9YMCArIGk7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChIQVNfRU5HSU5FKGk5 MTUsIF9WQ1MoaSkpKQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVl Owo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKEhBU19FTkdJTkUoaTkxNSwgX1ZDUyhpKSkpCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOwo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBpZiAoZndfZG9tYWlucyAmIEJJVChkb21haW5faWQpKQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGZ3X2RvbWFpbl9maW5pKHVuY29yZSwgZG9tYWluX2lkKTsKPj4gLcKgwqDC oMKgwqDCoMKgIH0KPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChmd19kb21haW5zICYgQklUKGRvbWFp bl9pZCkpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZ3X2RvbWFpbl9maW5pKHVuY29yZSwg ZG9tYWluX2lkKTsKPj4gK8KgwqDCoCB9Cj4+IC3CoMKgwqDCoMKgwqDCoCBmb3IgKGkgPSAwOyBp IDwgSTkxNV9NQVhfVkVDUzsgaSsrKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRvbWFp bl9pZCA9IEZXX0RPTUFJTl9JRF9NRURJQV9WRUJPWDAgKyBpOwo+PiArwqDCoMKgIGZvciAoaSA9 IDA7IGkgPCBJOTE1X01BWF9WRUNTOyBpKyspIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGRvbWFpbl9p ZCA9IEZXX0RPTUFJTl9JRF9NRURJQV9WRUJPWDAgKyBpOwo+PiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBpZiAoSEFTX0VOR0lORShpOTE1LCBfVkVDUyhpKSkpCj4+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgY29udGludWU7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoSEFTX0VOR0lO RShpOTE1LCBfVkVDUyhpKSkpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOwo+ PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoZndfZG9tYWlucyAmIEJJVChkb21haW5faWQp KQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZ3X2RvbWFpbl9maW5pKHVuY29y ZSwgZG9tYWluX2lkKTsKPj4gLcKgwqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDCoMKgwqDCoMKgIGlm IChmd19kb21haW5zICYgQklUKGRvbWFpbl9pZCkpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGZ3X2RvbWFpbl9maW5pKHVuY29yZSwgZG9tYWluX2lkKTsKPj4gwqDCoMKgwqDCoCB9Cj4+IMKg IH0KPj4gwqAgdm9pZCBpbnRlbF91bmNvcmVfZmluaV9tbWlvKHN0cnVjdCBpbnRlbF91bmNvcmUg KnVuY29yZSkKPj4gwqAgewo+PiAtwqDCoMKgIGlvc2ZfbWJpX3B1bml0X2FjcXVpcmUoKTsKPj4g LcKgwqDCoCBpb3NmX21iaV91bnJlZ2lzdGVyX3BtaWNfYnVzX2FjY2Vzc19ub3RpZmllcl91bmxv Y2tlZCgKPj4gLcKgwqDCoMKgwqDCoMKgICZ1bmNvcmUtPnBtaWNfYnVzX2FjY2Vzc19uYik7Cj4+ IC3CoMKgwqAgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9yZXNldCh1bmNvcmUpOwo+PiAtwqDCoMKg IGlvc2ZfbWJpX3B1bml0X3JlbGVhc2UoKTsKPj4gK8KgwqDCoCBpZiAoaW50ZWxfdW5jb3JlX2hh c19mb3JjZXdha2UodW5jb3JlKSkgewo+IAo+IFRvIGF2b2lkIGh5cGhvdGV0aWNhbCBvYm5veGlv dXMgZGlmZnMgaW4gdGhlIGZ1dHVyZSwgbGlrZSB0aGUgb25lIGZvciAKPiBpbnRlbF91bmNvcmVf cHJ1bmVfbW1pb19kb21haW5zIGFib3ZlIGluIHRoaXMgcGF0Y2gsIG1heWJlIGludmVydCB0aGlz IAo+IHRvIGVhcmx5IHJldHVybiBzdHJhaWdodCBhd2F5LgoKd2lsbCBkby4KCkRhbmllbGUKCj4g Cj4+ICvCoMKgwqDCoMKgwqDCoCBpb3NmX21iaV9wdW5pdF9hY3F1aXJlKCk7Cj4+ICvCoMKgwqDC oMKgwqDCoCBpb3NmX21iaV91bnJlZ2lzdGVyX3BtaWNfYnVzX2FjY2Vzc19ub3RpZmllcl91bmxv Y2tlZCgKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJnVuY29yZS0+cG1pY19idXNfYWNjZXNz X25iKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGludGVsX3VuY29yZV9mb3JjZXdha2VfcmVzZXQodW5j b3JlKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGlvc2ZfbWJpX3B1bml0X3JlbGVhc2UoKTsKPj4gK8Kg wqDCoCB9Cj4+ICsKPj4gwqDCoMKgwqDCoCB1bmNvcmVfbW1pb19jbGVhbnVwKHVuY29yZSk7Cj4+ IMKgIH0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5o IAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5oCj4+IGluZGV4IDkxMjYx NjE4OGZmNS4uODc5MjUyNzM1YmJhIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF91bmNvcmUuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNv cmUuaAo+PiBAQCAtMTg2LDEzICsxODYsMTMgQEAgaW50ZWxfdW5jb3JlX2hhc19maWZvKGNvbnN0 IHN0cnVjdCBpbnRlbF91bmNvcmUgCj4+ICp1bmNvcmUpCj4+IMKgIHZvaWQgaW50ZWxfdW5jb3Jl X2luaXRfZWFybHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpOwo+ PiDCoCBpbnQgaW50ZWxfdW5jb3JlX2luaXRfbW1pbyhzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNv cmUpOwo+PiAtdm9pZCBpbnRlbF91bmNvcmVfcHJ1bmVfbW1pb19kb21haW5zKHN0cnVjdCBpbnRl bF91bmNvcmUgKnVuY29yZSk7Cj4+ICt2b2lkIGludGVsX3VuY29yZV9wcnVuZV9mb3JjZXdha2Vf ZG9tYWlucyhzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpOwo+PiDCoCBib29sIGludGVsX3Vu Y29yZV91bmNsYWltZWRfbW1pbyhzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpOwo+PiDCoCBi b29sIGludGVsX3VuY29yZV9hcm1fdW5jbGFpbWVkX21taW9fZGV0ZWN0aW9uKHN0cnVjdCBpbnRl bF91bmNvcmUgCj4+ICp1bmNvcmUpOwo+PiDCoCB2b2lkIGludGVsX3VuY29yZV9maW5pX21taW8o c3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlKTsKPj4gLXZvaWQgaW50ZWxfdW5jb3JlX3N1c3Bl bmQoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlKTsKPj4gLXZvaWQgaW50ZWxfdW5jb3JlX3Jl c3VtZV9lYXJseShzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpOwo+PiAtdm9pZCBpbnRlbF91 bmNvcmVfcnVudGltZV9yZXN1bWUoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlKTsKPj4gK3Zv aWQgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9zdXNwZW5kKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVu Y29yZSk7Cj4+ICt2b2lkIGludGVsX3VuY29yZV9mb3JjZXdha2VfcmVzdW1lX2Vhcmx5KHN0cnVj dCBpbnRlbF91bmNvcmUgKnVuY29yZSk7Cj4+ICt2b2lkIGludGVsX3VuY29yZV9mb3JjZXdha2Vf cnVudGltZV9yZXN1bWUoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlKTsKPj4gwqAgdm9pZCBh c3NlcnRfZm9yY2V3YWtlc19pbmFjdGl2ZShzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpOwo+ PiDCoCB2b2lkIGFzc2VydF9mb3JjZXdha2VzX2FjdGl2ZShzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1 bmNvcmUsCj4+Cj4gCj4gUmVnYXJkcywKPiAKPiBUdnJ0a28KX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4