From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan De Oliveira Subject: Re: [PATCH 1/6] drm/i915: Store aux power domain in intel_dp Date: Thu, 16 Feb 2017 14:23:12 +0200 Message-ID: <1487247792.3185.15.camel@gmail.com> References: <20170210132959.16594-1-ander.conselvan.de.oliveira@intel.com> <20170210132959.16594-2-ander.conselvan.de.oliveira@intel.com> <20170216090505.GA18432@ideak-desk.fi.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pg0-x243.google.com (mail-pg0-x243.google.com [IPv6:2607:f8b0:400e:c05::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8F6F96EAE0 for ; Thu, 16 Feb 2017 12:23:17 +0000 (UTC) Received: by mail-pg0-x243.google.com with SMTP id 13so960227pgd.3 for ; Thu, 16 Feb 2017 04:23:17 -0800 (PST) In-Reply-To: <20170216090505.GA18432@ideak-desk.fi.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: imre.deak@intel.com Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAyMDE3LTAyLTE2IGF0IDExOjA1ICswMjAwLCBJbXJlIERlYWsgd3JvdGU6Cj4gT24g RnJpLCBGZWIgMTAsIDIwMTcgYXQgMDM6Mjk6NTRQTSArMDIwMCwgQW5kZXIgQ29uc2VsdmFuIGRl IE9saXZlaXJhIHdyb3RlOgo+ID4gVGhlIGF1eCBwb3dlciBkb21haW4gb25seSBtYWtlcyBzZW5z ZSBpbiB0aGUgRFAgY29kZS4gU3RvcmluZyBpdCBpbgo+ID4gc3RydWN0IGludGVsX2RwIGF2b2lk cyBzb21lIGluZGlyZWN0aW9uLgo+ID4gCj4gPiB2MjogUmViYXNlCj4gPiBTaWduZWQtb2ZmLWJ5 OiBBbmRlciBDb25zZWx2YW4gZGUgT2xpdmVpcmEgPGFuZGVyLmNvbnNlbHZhbi5kZS5vbGl2ZWly YUBpbnRlbC5jb20+Cj4gPiAtLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMgfCA1MCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RwLmMgICAgICB8IDYxICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAz ICstCj4gPiAgMyBmaWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCA5MCBkZWxldGlvbnMo LSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gaW5kZXggYWI3 OGRmOS4uMWU3MDc3NiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j Cj4gPiBAQCAtNTU4OSwyNiArNTU4OSw2IEBAIHN0YXRpYyBlbnVtIGludGVsX2Rpc3BsYXlfcG93 ZXJfZG9tYWluIHBvcnRfdG9fcG93ZXJfZG9tYWluKGVudW0gcG9ydCBwb3J0KQo+ID4gIAl9Cj4g PiAgfQo+ID4gIAo+ID4gLXN0YXRpYyBlbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIHBv cnRfdG9fYXV4X3Bvd2VyX2RvbWFpbihlbnVtIHBvcnQgcG9ydCkKPiA+IC17Cj4gPiAtCXN3aXRj aCAocG9ydCkgewo+ID4gLQljYXNlIFBPUlRfQToKPiA+IC0JCXJldHVybiBQT1dFUl9ET01BSU5f QVVYX0E7Cj4gPiAtCWNhc2UgUE9SVF9COgo+ID4gLQkJcmV0dXJuIFBPV0VSX0RPTUFJTl9BVVhf QjsKPiA+IC0JY2FzZSBQT1JUX0M6Cj4gPiAtCQlyZXR1cm4gUE9XRVJfRE9NQUlOX0FVWF9DOwo+ ID4gLQljYXNlIFBPUlRfRDoKPiA+IC0JCXJldHVybiBQT1dFUl9ET01BSU5fQVVYX0Q7Cj4gPiAt CWNhc2UgUE9SVF9FOgo+ID4gLQkJLyogRklYTUU6IENoZWNrIFZCVCBmb3IgYWN0dWFsIHdpcmlu ZyBvZiBQT1JUIEUgKi8KPiA+IC0JCXJldHVybiBQT1dFUl9ET01BSU5fQVVYX0Q7Cj4gPiAtCWRl ZmF1bHQ6Cj4gPiAtCQlNSVNTSU5HX0NBU0UocG9ydCk7Cj4gPiAtCQlyZXR1cm4gUE9XRVJfRE9N QUlOX0FVWF9BOwo+ID4gLQl9Cj4gPiAtfQo+ID4gLQo+ID4gIGVudW0gaW50ZWxfZGlzcGxheV9w b3dlcl9kb21haW4KPiA+ICBpbnRlbF9kaXNwbGF5X3BvcnRfcG93ZXJfZG9tYWluKHN0cnVjdCBp bnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKQo+ID4gIHsKPiA+IEBAIC01NjM2LDM2ICs1NjE2 LDYgQEAgaW50ZWxfZGlzcGxheV9wb3J0X3Bvd2VyX2RvbWFpbihzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqaW50ZWxfZW5jb2RlcikKPiA+ICAJfQo+ID4gIH0KPiA+ICAKPiA+IC1lbnVtIGludGVsX2Rp c3BsYXlfcG93ZXJfZG9tYWluCj4gPiAtaW50ZWxfZGlzcGxheV9wb3J0X2F1eF9wb3dlcl9kb21h aW4oc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIpCj4gPiAtewo+ID4gLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGludGVsX2VuY29kZXItPmJh c2UuZGV2KTsKPiA+IC0Jc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQ7 Cj4gPiAtCj4gPiAtCXN3aXRjaCAoaW50ZWxfZW5jb2Rlci0+dHlwZSkgewo+ID4gLQljYXNlIElO VEVMX09VVFBVVF9VTktOT1dOOgo+ID4gLQljYXNlIElOVEVMX09VVFBVVF9IRE1JOgo+ID4gLQkJ LyoKPiA+IC0JCSAqIE9ubHkgRERJIHBsYXRmb3JtcyBzaG91bGQgZXZlciB1c2UgdGhlc2Ugb3V0 cHV0IHR5cGVzLgo+ID4gLQkJICogV2UgY2FuIGdldCBoZXJlIGFmdGVyIHRoZSBIRE1JIGRldGVj dCBjb2RlIGhhcyBhbHJlYWR5IHNldAo+ID4gLQkJICogdGhlIHR5cGUgb2YgdGhlIHNoYXJlZCBl bmNvZGVyLiBTaW5jZSB3ZSBjYW4ndCBiZSBzdXJlCj4gPiAtCQkgKiB3aGF0J3MgdGhlIHN0YXR1 cyBvZiB0aGUgZ2l2ZW4gY29ubmVjdG9ycywgcGxheSBzYWZlIGFuZAo+ID4gLQkJICogcnVuIHRo ZSBEUCBkZXRlY3Rpb24gdG9vLgo+ID4gLQkJICovCj4gPiAtCQlXQVJOX09OX09OQ0UoIUhBU19E REkoZGV2X3ByaXYpKTsKPiA+IC0JY2FzZSBJTlRFTF9PVVRQVVRfRFA6Cj4gPiAtCWNhc2UgSU5U RUxfT1VUUFVUX0VEUDoKPiA+IC0JCWludGVsX2RpZ19wb3J0ID0gZW5jX3RvX2RpZ19wb3J0KCZp bnRlbF9lbmNvZGVyLT5iYXNlKTsKPiA+IC0JCXJldHVybiBwb3J0X3RvX2F1eF9wb3dlcl9kb21h aW4oaW50ZWxfZGlnX3BvcnQtPnBvcnQpOwo+ID4gLQljYXNlIElOVEVMX09VVFBVVF9EUF9NU1Q6 Cj4gPiAtCQlpbnRlbF9kaWdfcG9ydCA9IGVuY190b19tc3QoJmludGVsX2VuY29kZXItPmJhc2Up LT5wcmltYXJ5Owo+ID4gLQkJcmV0dXJuIHBvcnRfdG9fYXV4X3Bvd2VyX2RvbWFpbihpbnRlbF9k aWdfcG9ydC0+cG9ydCk7Cj4gCj4gSSB3YXMgd29uZGVyaW5nIHdoZXJlIHRoZSBkcC0+YXV4X3Bv d2VyX2RvbWFpbiBnZXRzIGluaXRlZCBmb3IgdGhlIE1TVCBjYXNlLAo+IGJ1dCBsb29rcyBsaWtl IHRoaXMgY2FzZSBjb3VsZCBuZXZlciBoYXBwZW4gZXZlbiBub3cuIFRoZSBwYXRjaCBsb29rcyBv azoKCkxvb2tzIGxpa2UgSSBmb3Jnb3QgdG8gQ2MgSmFuaSwgYnV0IGhlIGhhZCB0aGUgc2FtZSBj b25jZXJuOiBodHRwczovL2xpc3RzLmZyZWVkCmVza3RvcC5vcmcvYXJjaGl2ZXMvaW50ZWwtZ2Z4 LzIwMTctRmVicnVhcnkvMTE5MDI3Lmh0bWwKClRoZSBpbXBvcnRhbnQgcGFydCBpcyB0aGF0IHdo ZW4gdGhlIE1TVCBjb25uZWN0b3IgaXMgaW5pdGlhbGl6ZWQsIGl0IHJlY2VpdmVzIGEKc3RydWN0 IGludGVsX2RwIGFzIGEgcGFyYW1ldGVyLCBhbmQgdGhhdCBzdHJ1Y3QgaGFzIHRoZSBhdXggcG93 ZXIgZG9tYWluCmluaXRpYWxpemVkLiBUaGF0IGlzIHdoYXQgZW5kcyB1cCBpbiB0aGUgLT5wcmlt YXJ5IGZpZWxkIHdoaWNoIHRoZSBmdW5jdGlvbgphYm92ZSB1c2VzLgoKPiBSZXZpZXdlZC1ieTog SW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29tPgoKVGhhbmtzLApBbmRlcgoKPiAKPiA+IC0J ZGVmYXVsdDoKPiA+IC0JCU1JU1NJTkdfQ0FTRShpbnRlbF9lbmNvZGVyLT50eXBlKTsKPiA+IC0J CXJldHVybiBQT1dFUl9ET01BSU5fQVVYX0E7Cj4gPiAtCX0KPiA+IC19Cj4gPiAtCj4gPiAgc3Rh dGljIHU2NCBnZXRfY3J0Y19wb3dlcl9kb21haW5zKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ ICAJCQkJICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiA+ICB7Cj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RwLmMKPiA+IGluZGV4IGZhNzdlOTYuLmUyZTQ3NjYgMTAwNjQ0Cj4g PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiBAQCAtMzk2LDE0ICszOTYsMTIgQEAgc3RhdGlj IHZvaWQgcHBzX2xvY2soc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+ICAJc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIgPSAmaW50ZWxfZGlnX3BvcnQtPmJhc2U7Cj4gPiAgCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKPiA+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ID4gLQllbnVtIGludGVsX2Rp c3BsYXlfcG93ZXJfZG9tYWluIHBvd2VyX2RvbWFpbjsKPiA+ICAKPiA+ICAJLyoKPiA+ICAJICog U2VlIHZsdl9wb3dlcl9zZXF1ZW5jZXJfcmVzZXQoKSB3aHkgd2UgbmVlZAo+ID4gIAkgKiBhIHBv d2VyIGRvbWFpbiByZWZlcmVuY2UgaGVyZS4KPiA+ICAJICovCj4gPiAtCXBvd2VyX2RvbWFpbiA9 IGludGVsX2Rpc3BsYXlfcG9ydF9hdXhfcG93ZXJfZG9tYWluKGVuY29kZXIpOwo+ID4gLQlpbnRl bF9kaXNwbGF5X3Bvd2VyX2dldChkZXZfcHJpdiwgcG93ZXJfZG9tYWluKTsKPiA+ICsJaW50ZWxf ZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYsIGludGVsX2RwLT5hdXhfcG93ZXJfZG9tYWluKTsK PiA+ICAKPiA+ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBwc19tdXRleCk7Cj4gPiAgfQo+ID4g QEAgLTQxNCwxMiArNDEyLDEwIEBAIHN0YXRpYyB2b2lkIHBwc191bmxvY2soc3RydWN0IGludGVs X2RwICppbnRlbF9kcCkKPiA+ICAJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIgPSAmaW50 ZWxfZGlnX3BvcnQtPmJhc2U7Cj4gPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVy LT5iYXNlLmRldjsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShkZXYpOwo+ID4gLQllbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIHBvd2VyX2Rv bWFpbjsKPiA+ICAKPiA+ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHBzX211dGV4KTsKPiA+ ICAKPiA+IC0JcG93ZXJfZG9tYWluID0gaW50ZWxfZGlzcGxheV9wb3J0X2F1eF9wb3dlcl9kb21h aW4oZW5jb2Rlcik7Cj4gPiAtCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBwb3dl cl9kb21haW4pOwo+ID4gKwlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgaW50ZWxf ZHAtPmF1eF9wb3dlcl9kb21haW4pOwo+ID4gIH0KPiA+ICAKPiA+ICBzdGF0aWMgdm9pZAo+ID4g QEAgLTIwMDUsOSArMjAwMSw3IEBAIHN0YXRpYyBib29sIGVkcF9wYW5lbF92ZGRfb24oc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCkKPiA+ICB7Cj4gPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBpbnRlbF9kcF90b19kZXYoaW50ZWxfZHApOwo+ID4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9w b3J0ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPiA+IC0Jc3Ry dWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIgPSAmaW50ZWxfZGlnX3BvcnQtPmJhc2U7 Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsK PiA+IC0JZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBwb3dlcl9kb21haW47Cj4gPiAg CXUzMiBwcDsKPiA+ICAJaTkxNV9yZWdfdCBwcF9zdGF0X3JlZywgcHBfY3RybF9yZWc7Cj4gPiAg CWJvb2wgbmVlZF90b19kaXNhYmxlID0gIWludGVsX2RwLT53YW50X3BhbmVsX3ZkZDsKPiA+IEBA IC0yMDIzLDggKzIwMTcsNyBAQCBzdGF0aWMgYm9vbCBlZHBfcGFuZWxfdmRkX29uKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHApCj4gPiAgCWlmIChlZHBfaGF2ZV9wYW5lbF92ZGQoaW50ZWxfZHAp KQo+ID4gIAkJcmV0dXJuIG5lZWRfdG9fZGlzYWJsZTsKPiA+ICAKPiA+IC0JcG93ZXJfZG9tYWlu ID0gaW50ZWxfZGlzcGxheV9wb3J0X2F1eF9wb3dlcl9kb21haW4oaW50ZWxfZW5jb2Rlcik7Cj4g PiAtCWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LCBwb3dlcl9kb21haW4pOwo+ID4g KwlpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChkZXZfcHJpdiwgaW50ZWxfZHAtPmF1eF9wb3dlcl9k b21haW4pOwo+ID4gIAo+ID4gIAlEUk1fREVCVUdfS01TKCJUdXJuaW5nIGVEUCBwb3J0ICVjIFZE RCBvblxuIiwKPiA+ICAJCSAgICAgIHBvcnRfbmFtZShpbnRlbF9kaWdfcG9ydC0+cG9ydCkpOwo+ ID4gQEAgLTIwODIsOCArMjA3NSw2IEBAIHN0YXRpYyB2b2lkIGVkcF9wYW5lbF92ZGRfb2ZmX3N5 bmMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ID4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9w b3J0ICppbnRlbF9kaWdfcG9ydCA9Cj4gPiAgCQlkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7Cj4g PiAtCXN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyID0gJmludGVsX2RpZ19wb3J0 LT5iYXNlOwo+ID4gLQllbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIHBvd2VyX2RvbWFp bjsKPiA+ICAJdTMyIHBwOwo+ID4gIAlpOTE1X3JlZ190IHBwX3N0YXRfcmVnLCBwcF9jdHJsX3Jl ZzsKPiA+ICAKPiA+IEBAIC0yMTEzLDggKzIxMDQsNyBAQCBzdGF0aWMgdm9pZCBlZHBfcGFuZWxf dmRkX29mZl9zeW5jKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPiAgCWlmICgocHAgJiBQ QU5FTF9QT1dFUl9PTikgPT0gMCkKPiA+ICAJCWludGVsX2RwLT5wYW5lbF9wb3dlcl9vZmZfdGlt ZSA9IGt0aW1lX2dldF9ib290dGltZSgpOwo+ID4gIAo+ID4gLQlwb3dlcl9kb21haW4gPSBpbnRl bF9kaXNwbGF5X3BvcnRfYXV4X3Bvd2VyX2RvbWFpbihpbnRlbF9lbmNvZGVyKTsKPiA+IC0JaW50 ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIHBvd2VyX2RvbWFpbik7Cj4gPiArCWludGVs X2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBpbnRlbF9kcC0+YXV4X3Bvd2VyX2RvbWFpbik7 Cj4gPiAgfQo+ID4gIAo+ID4gIHN0YXRpYyB2b2lkIGVkcF9wYW5lbF92ZGRfd29yayhzdHJ1Y3Qg d29ya19zdHJ1Y3QgKl9fd29yaykKPiA+IEBAIC0yMjI3LDExICsyMjE3LDggQEAgdm9pZCBpbnRl bF9lZHBfcGFuZWxfb24oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+ICAKPiA+ICBzdGF0 aWMgdm9pZCBlZHBfcGFuZWxfb2ZmKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPiAgewo+ ID4gLQlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2Rp Z19wb3J0KGludGVsX2RwKTsKPiA+IC0Jc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29k ZXIgPSAmaW50ZWxfZGlnX3BvcnQtPmJhc2U7Cj4gPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBpbnRlbF9kcF90b19kZXYoaW50ZWxfZHApOwo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gPiAtCWVudW0gaW50ZWxfZGlzcGxheV9wb3dl cl9kb21haW4gcG93ZXJfZG9tYWluOwo+ID4gIAl1MzIgcHA7Cj4gPiAgCWk5MTVfcmVnX3QgcHBf Y3RybF9yZWc7Cj4gPiAgCj4gPiBAQCAtMjI2Myw4ICsyMjUwLDcgQEAgc3RhdGljIHZvaWQgZWRw X3BhbmVsX29mZihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ID4gIAl3YWl0X3BhbmVsX29m ZihpbnRlbF9kcCk7Cj4gPiAgCj4gPiAgCS8qIFdlIGdvdCBhIHJlZmVyZW5jZSB3aGVuIHdlIGVu YWJsZWQgdGhlIFZERC4gKi8KPiA+IC0JcG93ZXJfZG9tYWluID0gaW50ZWxfZGlzcGxheV9wb3J0 X2F1eF9wb3dlcl9kb21haW4oaW50ZWxfZW5jb2Rlcik7Cj4gPiAtCWludGVsX2Rpc3BsYXlfcG93 ZXJfcHV0KGRldl9wcml2LCBwb3dlcl9kb21haW4pOwo+ID4gKwlpbnRlbF9kaXNwbGF5X3Bvd2Vy X3B1dChkZXZfcHJpdiwgaW50ZWxfZHAtPmF1eF9wb3dlcl9kb21haW4pOwo+ID4gIH0KPiA+ICAK PiA+ICB2b2lkIGludGVsX2VkcF9wYW5lbF9vZmYoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkK PiA+IEBAIC00NTg3LDExICs0NTczLDkgQEAgaW50ZWxfZHBfbG9uZ19wdWxzZShzdHJ1Y3QgaW50 ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0b3IpCj4gPiAgCXN0cnVjdCBpbnRlbF9lbmNvZGVy ICppbnRlbF9lbmNvZGVyID0gJmludGVsX2RpZ19wb3J0LT5iYXNlOwo+ID4gIAlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5kZXY7Cj4gPiAgCWVudW0gZHJtX2Nvbm5lY3Rvcl9z dGF0dXMgc3RhdHVzOwo+ID4gLQllbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIHBvd2Vy X2RvbWFpbjsKPiA+ICAJdTggc2lua19pcnFfdmVjdG9yID0gMDsKPiA+ICAKPiA+IC0JcG93ZXJf ZG9tYWluID0gaW50ZWxfZGlzcGxheV9wb3J0X2F1eF9wb3dlcl9kb21haW4oaW50ZWxfZW5jb2Rl cik7Cj4gPiAtCWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KHRvX2k5MTUoZGV2KSwgcG93ZXJfZG9t YWluKTsKPiA+ICsJaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQodG9faTkxNShkZXYpLCBpbnRlbF9k cC0+YXV4X3Bvd2VyX2RvbWFpbik7Cj4gPiAgCj4gPiAgCS8qIENhbid0IGRpc2Nvbm5lY3QgZURQ LCBidXQgeW91IGNhbiBjbG9zZSB0aGUgbGlkLi4uICovCj4gPiAgCWlmIChpc19lZHAoaW50ZWxf ZHApKQo+ID4gQEAgLTQ2ODgsNyArNDY3Miw3IEBAIGludGVsX2RwX2xvbmdfcHVsc2Uoc3RydWN0 IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yKQo+ID4gIAlpZiAoc3RhdHVzICE9IGNv bm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkICYmICFpbnRlbF9kcC0+aXNfbXN0KQo+ID4gIAkJaW50 ZWxfZHBfdW5zZXRfZWRpZChpbnRlbF9kcCk7Cj4gPiAgCj4gPiAtCWludGVsX2Rpc3BsYXlfcG93 ZXJfcHV0KHRvX2k5MTUoZGV2KSwgcG93ZXJfZG9tYWluKTsKPiA+ICsJaW50ZWxfZGlzcGxheV9w b3dlcl9wdXQodG9faTkxNShkZXYpLCBpbnRlbF9kcC0+YXV4X3Bvd2VyX2RvbWFpbik7Cj4gPiAg CXJldHVybiBzdGF0dXM7Cj4gPiAgfQo+ID4gIAo+ID4gQEAgLTQ3MTYsNyArNDcwMCw2IEBAIGlu dGVsX2RwX2ZvcmNlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiAgCXN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBpbnRlbF9hdHRhY2hlZF9kcChjb25uZWN0b3IpOwo+ID4g IAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciA9ICZkcF90b19kaWdfcG9ydChp bnRlbF9kcCktPmJhc2U7Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoaW50ZWxfZW5jb2Rlci0+YmFzZS5kZXYpOwo+ID4gLQllbnVtIGludGVsX2Rpc3Bs YXlfcG93ZXJfZG9tYWluIHBvd2VyX2RvbWFpbjsKPiA+ICAKPiA+ICAJRFJNX0RFQlVHX0tNUygi W0NPTk5FQ1RPUjolZDolc11cbiIsCj4gPiAgCQkgICAgICBjb25uZWN0b3ItPmJhc2UuaWQsIGNv bm5lY3Rvci0+bmFtZSk7Cj4gPiBAQCAtNDcyNSwxMiArNDcwOCwxMSBAQCBpbnRlbF9kcF9mb3Jj ZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gIAlpZiAoY29ubmVjdG9yLT5z dGF0dXMgIT0gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQpCj4gPiAgCQlyZXR1cm47Cj4gPiAg Cj4gPiAtCXBvd2VyX2RvbWFpbiA9IGludGVsX2Rpc3BsYXlfcG9ydF9hdXhfcG93ZXJfZG9tYWlu KGludGVsX2VuY29kZXIpOwo+ID4gLQlpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChkZXZfcHJpdiwg cG93ZXJfZG9tYWluKTsKPiA+ICsJaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYsIGlu dGVsX2RwLT5hdXhfcG93ZXJfZG9tYWluKTsKPiA+ICAKPiA+ICAJaW50ZWxfZHBfc2V0X2VkaWQo aW50ZWxfZHApOwo+ID4gIAo+ID4gLQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwg cG93ZXJfZG9tYWluKTsKPiA+ICsJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIGlu dGVsX2RwLT5hdXhfcG93ZXJfZG9tYWluKTsKPiA+ICAKPiA+ICAJaWYgKGludGVsX2VuY29kZXIt PnR5cGUgIT0gSU5URUxfT1VUUFVUX0VEUCkKPiA+ICAJCWludGVsX2VuY29kZXItPnR5cGUgPSBJ TlRFTF9PVVRQVVRfRFA7Cj4gPiBAQCAtNDk2NSw3ICs0OTQ3LDYgQEAgc3RhdGljIHZvaWQgaW50 ZWxfZWRwX3BhbmVsX3ZkZF9zYW5pdGl6ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ID4g IAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19w b3J0KGludGVsX2RwKTsKPiA+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RpZ19w b3J0LT5iYXNlLmJhc2UuZGV2Owo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGRldik7Cj4gPiAtCWVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4g cG93ZXJfZG9tYWluOwo+ID4gIAo+ID4gIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+ cHBzX211dGV4KTsKPiA+ICAKPiA+IEBAIC00OTc5LDggKzQ5NjAsNyBAQCBzdGF0aWMgdm9pZCBp bnRlbF9lZHBfcGFuZWxfdmRkX3Nhbml0aXplKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4g PiAgCSAqIGluZGVmaW5pdGVseS4KPiA+ICAJICovCj4gPiAgCURSTV9ERUJVR19LTVMoIlZERCBs ZWZ0IG9uIGJ5IEJJT1MsIGFkanVzdGluZyBzdGF0ZSB0cmFja2luZ1xuIik7Cj4gPiAtCXBvd2Vy X2RvbWFpbiA9IGludGVsX2Rpc3BsYXlfcG9ydF9hdXhfcG93ZXJfZG9tYWluKCZpbnRlbF9kaWdf cG9ydC0+YmFzZSk7Cj4gPiAtCWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LCBwb3dl cl9kb21haW4pOwo+ID4gKwlpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChkZXZfcHJpdiwgaW50ZWxf ZHAtPmF1eF9wb3dlcl9kb21haW4pOwo+ID4gIAo+ID4gIAllZHBfcGFuZWxfdmRkX3NjaGVkdWxl X29mZihpbnRlbF9kcCk7Cj4gPiAgfQo+ID4gQEAgLTUwNTIsMTAgKzUwMzIsOCBAQCBlbnVtIGly cXJldHVybgo+ID4gIGludGVsX2RwX2hwZF9wdWxzZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0 ICppbnRlbF9kaWdfcG9ydCwgYm9vbCBsb25nX2hwZCkKPiA+ICB7Cj4gPiAgCXN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAgPSAmaW50ZWxfZGlnX3BvcnQtPmRwOwo+ID4gLQlzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqaW50ZWxfZW5jb2RlciA9ICZpbnRlbF9kaWdfcG9ydC0+YmFzZTsKPiA+ICAJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuZGV2Owo+ID4g IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gPiAt CWVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gcG93ZXJfZG9tYWluOwo+ID4gIAllbnVt IGlycXJldHVybiByZXQgPSBJUlFfTk9ORTsKPiA+ICAKPiA+ICAJaWYgKGludGVsX2RpZ19wb3J0 LT5iYXNlLnR5cGUgIT0gSU5URUxfT1VUUFVUX0VEUCAmJgo+ID4gQEAgLTUwODMsOCArNTA2MSw3 IEBAIGludGVsX2RwX2hwZF9wdWxzZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9k aWdfcG9ydCwgYm9vbCBsb25nX2hwZCkKPiA+ICAJCXJldHVybiBJUlFfTk9ORTsKPiA+ICAJfQo+ ID4gIAo+ID4gLQlwb3dlcl9kb21haW4gPSBpbnRlbF9kaXNwbGF5X3BvcnRfYXV4X3Bvd2VyX2Rv bWFpbihpbnRlbF9lbmNvZGVyKTsKPiA+IC0JaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3By aXYsIHBvd2VyX2RvbWFpbik7Cj4gPiArCWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2 LCBpbnRlbF9kcC0+YXV4X3Bvd2VyX2RvbWFpbik7Cj4gPiAgCj4gPiAgCWlmIChpbnRlbF9kcC0+ aXNfbXN0KSB7Cj4gPiAgCQlpZiAoaW50ZWxfZHBfY2hlY2tfbXN0X3N0YXR1cyhpbnRlbF9kcCkg PT0gLUVJTlZBTCkgewo+ID4gQEAgLTUxMTIsNyArNTA4OSw3IEBAIGludGVsX2RwX2hwZF9wdWxz ZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwgYm9vbCBsb25nX2hw ZCkKPiA+ICAJcmV0ID0gSVJRX0hBTkRMRUQ7Cj4gPiAgCj4gPiAgcHV0X3Bvd2VyOgo+ID4gLQlp bnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgcG93ZXJfZG9tYWluKTsKPiA+ICsJaW50 ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIGludGVsX2RwLT5hdXhfcG93ZXJfZG9tYWlu KTsKPiA+ICAKPiA+ICAJcmV0dXJuIHJldDsKPiA+ICB9Cj4gPiBAQCAtNTkwMywyNyArNTg4MCwz NSBAQCBzdGF0aWMgYm9vbCBpbnRlbF9lZHBfaW5pdF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCwKPiA+ICAJcmV0dXJuIGZhbHNlOwo+ID4gIH0KPiA+ICAKPiA+ICsvKiBTZXQg dXAgdGhlIGhvdHBsdWcgcGluIGFuZCBhdXggcG93ZXIgZG9tYWluLiAqLwo+ID4gIHN0YXRpYyB2 b2lkCj4gPiAgaW50ZWxfZHBfaW5pdF9jb25uZWN0b3JfcG9ydF9pbmZvKHN0cnVjdCBpbnRlbF9k aWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KQo+ID4gIHsKPiA+ICAJc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIgPSAmaW50ZWxfZGlnX3BvcnQtPmJhc2U7Cj4gPiArCXN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAgPSAmaW50ZWxfZGlnX3BvcnQtPmRwOwo+ID4gIAo+ID4gLQkvKiBTZXQg dXAgdGhlIGhvdHBsdWcgcGluLiAqLwo+ID4gIAlzd2l0Y2ggKGludGVsX2RpZ19wb3J0LT5wb3J0 KSB7Cj4gPiAgCWNhc2UgUE9SVF9BOgo+ID4gIAkJZW5jb2Rlci0+aHBkX3BpbiA9IEhQRF9QT1JU X0E7Cj4gPiArCQlpbnRlbF9kcC0+YXV4X3Bvd2VyX2RvbWFpbiA9IFBPV0VSX0RPTUFJTl9BVVhf QTsKPiA+ICAJCWJyZWFrOwo+ID4gIAljYXNlIFBPUlRfQjoKPiA+ICAJCWVuY29kZXItPmhwZF9w aW4gPSBIUERfUE9SVF9COwo+ID4gKwkJaW50ZWxfZHAtPmF1eF9wb3dlcl9kb21haW4gPSBQT1dF Ul9ET01BSU5fQVVYX0I7Cj4gPiAgCQlicmVhazsKPiA+ICAJY2FzZSBQT1JUX0M6Cj4gPiAgCQll bmNvZGVyLT5ocGRfcGluID0gSFBEX1BPUlRfQzsKPiA+ICsJCWludGVsX2RwLT5hdXhfcG93ZXJf ZG9tYWluID0gUE9XRVJfRE9NQUlOX0FVWF9DOwo+ID4gIAkJYnJlYWs7Cj4gPiAgCWNhc2UgUE9S VF9EOgo+ID4gIAkJZW5jb2Rlci0+aHBkX3BpbiA9IEhQRF9QT1JUX0Q7Cj4gPiArCQlpbnRlbF9k cC0+YXV4X3Bvd2VyX2RvbWFpbiA9IFBPV0VSX0RPTUFJTl9BVVhfRDsKPiA+ICAJCWJyZWFrOwo+ ID4gIAljYXNlIFBPUlRfRToKPiA+ICAJCWVuY29kZXItPmhwZF9waW4gPSBIUERfUE9SVF9FOwo+ ID4gKwo+ID4gKwkJLyogRklYTUU6IENoZWNrIFZCVCBmb3IgYWN0dWFsIHdpcmluZyBvZiBQT1JU IEUgKi8KPiA+ICsJCWludGVsX2RwLT5hdXhfcG93ZXJfZG9tYWluID0gUE9XRVJfRE9NQUlOX0FV WF9EOwo+ID4gIAkJYnJlYWs7Cj4gPiAgCWRlZmF1bHQ6Cj4gPiAgCQlNSVNTSU5HX0NBU0UoaW50 ZWxfZGlnX3BvcnQtPnBvcnQpOwo+ID4gQEAgLTYwMDMsNiArNTk4OCw4IEBAIGludGVsX2RwX2lu aXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ ID4gIAljb25uZWN0b3ItPmludGVybGFjZV9hbGxvd2VkID0gdHJ1ZTsKPiA+ICAJY29ubmVjdG9y LT5kb3VibGVzY2FuX2FsbG93ZWQgPSAwOwo+ID4gIAo+ID4gKwlpbnRlbF9kcF9pbml0X2Nvbm5l Y3Rvcl9wb3J0X2luZm8oaW50ZWxfZGlnX3BvcnQpOwo+ID4gKwo+ID4gIAlpbnRlbF9kcF9hdXhf aW5pdChpbnRlbF9kcCk7Cj4gPiAgCj4gPiAgCUlOSVRfREVMQVlFRF9XT1JLKCZpbnRlbF9kcC0+ cGFuZWxfdmRkX3dvcmssCj4gPiBAQCAtNjAxNSw4ICs2MDAyLDYgQEAgaW50ZWxfZHBfaW5pdF9j b25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4gPiAg CWVsc2UKPiA+ICAJCWludGVsX2Nvbm5lY3Rvci0+Z2V0X2h3X3N0YXRlID0gaW50ZWxfY29ubmVj dG9yX2dldF9od19zdGF0ZTsKPiA+ICAKPiA+IC0JaW50ZWxfZHBfaW5pdF9jb25uZWN0b3JfcG9y dF9pbmZvKGludGVsX2RpZ19wb3J0KTsKPiA+IC0KPiA+ICAJLyogaW5pdCBNU1Qgb24gcG9ydHMg dGhhdCBjYW4gc3VwcG9ydCBpdCAqLwo+ID4gIAlpZiAoSEFTX0RQX01TVChkZXZfcHJpdikgJiYg IWlzX2VkcChpbnRlbF9kcCkgJiYKPiA+ICAJICAgIChwb3J0ID09IFBPUlRfQiB8fCBwb3J0ID09 IFBPUlRfQyB8fCBwb3J0ID09IFBPUlRfRCkpCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ ID4gaW5kZXggNmUzN2ZiYS4uM2RkZWFhNiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaAo+ID4gQEAgLTk1MCw2ICs5NTAsNyBAQCBzdHJ1Y3QgaW50ZWxfZHAgewo+ID4gIAkvKiBz aW5rIG9yIGJyYW5jaCBkZXNjcmlwdG9yICovCj4gPiAgCXN0cnVjdCBpbnRlbF9kcF9kZXNjIGRl c2M7Cj4gPiAgCXN0cnVjdCBkcm1fZHBfYXV4IGF1eDsKPiA+ICsJZW51bSBpbnRlbF9kaXNwbGF5 X3Bvd2VyX2RvbWFpbiBhdXhfcG93ZXJfZG9tYWluOwo+ID4gIAl1aW50OF90IHRyYWluX3NldFs0 XTsKPiA+ICAJaW50IHBhbmVsX3Bvd2VyX3VwX2RlbGF5Owo+ID4gIAlpbnQgcGFuZWxfcG93ZXJf ZG93bl9kZWxheTsKPiA+IEBAIC0xNDIxLDggKzE0MjIsNiBAQCB2b2lkIGhzd19lbmFibGVfaXBz KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKTsKPiA+ICB2b2lkIGhzd19kaXNhYmxlX2lwcyhzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0Yyk7Cj4gPiAgZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFp bgo+ID4gIGludGVsX2Rpc3BsYXlfcG9ydF9wb3dlcl9kb21haW4oc3RydWN0IGludGVsX2VuY29k ZXIgKmludGVsX2VuY29kZXIpOwo+ID4gLWVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4K PiA+IC1pbnRlbF9kaXNwbGF5X3BvcnRfYXV4X3Bvd2VyX2RvbWFpbihzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqaW50ZWxfZW5jb2Rlcik7Cj4gPiAgdm9pZCBpbnRlbF9tb2RlX2Zyb21fcGlwZV9jb25m aWcoc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCj4gPiAgCQkJCSBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpOwo+ID4gIAo+ID4gLS0gCj4gPiAyLjkuMwo+ID4gCj4g PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4gSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+ID4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==