From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v2 10/20] drm/i915: Convert suspend/resume to atomic. Date: Tue, 7 Jul 2015 11:57:08 +0200 Message-ID: <20150707095708.GD7568@phenom.ffwll.local> References: <1436252911-5703-1-git-send-email-maarten.lankhorst@linux.intel.com> <1436252911-5703-11-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wg0-f46.google.com (mail-wg0-f46.google.com [74.125.82.46]) by gabe.freedesktop.org (Postfix) with ESMTPS id 420FC6E9AC for ; Tue, 7 Jul 2015 02:54:23 -0700 (PDT) Received: by wgfr2 with SMTP id r2so7970598wgf.1 for ; Tue, 07 Jul 2015 02:54:22 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1436252911-5703-11-git-send-email-maarten.lankhorst@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: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBKdWwgMDcsIDIwMTUgYXQgMDk6MDg6MjFBTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gSW5zdGVhZCBvZiBhbGwgdGhlIGFkLWhvYyB1cGRhdGluZywgZHVwbGljYXRl IHRoZSBvbGQgc3RhdGUgZmlyc3QgYmVmb3JlCj4gcmVhZGluZyBvdXQgdGhlIGh3IHN0YXRlLCB0 aGVuIHJlc3RvcmUgaXQuCj4gCj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1h YXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuYyAgICAgIHwgICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmggICAgICB8ICAgMyArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMgfCAxNTMgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgIDEyIC0tLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9sdmRzLmMgICAgfCAgIDIgKy0KPiAgNSBmaWxlcyBjaGFuZ2VkLCA3NiBp bnNlcnRpb25zKCspLCA5NiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMK PiBpbmRleCBlNDRkYzBkNjY1NmYuLmRiNDhhZWU3ZjE0MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuYwo+IEBAIC03NDEsNyArNzQxLDcgQEAgc3RhdGljIGludCBpOTE1X2RybV9yZXN1bWUo c3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCXNwaW5fdW5sb2NrX2lycSgmZGV2X3ByaXYtPmly cV9sb2NrKTsKPiAgCj4gIAlkcm1fbW9kZXNldF9sb2NrX2FsbChkZXYpOwo+IC0JaW50ZWxfbW9k ZXNldF9zZXR1cF9od19zdGF0ZShkZXYsIHRydWUpOwo+ICsJaW50ZWxfZGlzcGxheV9yZXN1bWUo ZGV2KTsKPiAgCWRybV9tb2Rlc2V0X3VubG9ja19hbGwoZGV2KTsKPiAgCj4gIAlpbnRlbF9kcF9t c3RfcmVzdW1lKGRldik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggMDkzZDY0MjFk ZGRmLi4yYTc4YTBlZTBmOTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMzI3 OCw4ICszMjc4LDcgQEAgZXh0ZXJuIHZvaWQgaW50ZWxfbW9kZXNldF9nZW1faW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KTsKPiAgZXh0ZXJuIHZvaWQgaW50ZWxfbW9kZXNldF9jbGVhbnVwKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICBleHRlcm4gdm9pZCBpbnRlbF9jb25uZWN0b3JfdW5y ZWdpc3RlcihzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICopOwo+ICBleHRlcm4gaW50IGludGVsX21v ZGVzZXRfdmdhX3NldF9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBib29sIHN0YXRlKTsK PiAtZXh0ZXJuIHZvaWQgaW50ZWxfbW9kZXNldF9zZXR1cF9od19zdGF0ZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+IC0JCQkJCSBib29sIGZvcmNlX3Jlc3RvcmUpOwo+ICtleHRlcm4gdm9pZCBp bnRlbF9kaXNwbGF5X3Jlc3VtZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAgZXh0ZXJuIHZv aWQgaTkxNV9yZWRpc2FibGVfdmdhKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICBleHRlcm4g dm9pZCBpOTE1X3JlZGlzYWJsZV92Z2FfcG93ZXJfb24oc3RydWN0IGRybV9kZXZpY2UgKmRldik7 Cj4gIGV4dGVybiBib29sIGlyb25sYWtlX3NldF9kcnBzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHU4IHZhbCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IGRjNGJk YjkxYWQ0ZC4uMjIyZDU4N2VkNGVhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwo+IEBAIC0xMTAsNiArMTEwLDcgQEAgc3RhdGljIHZvaWQgc2tsX2luaXRfc2NhbGVycyhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3IKPiAgc3Rh dGljIGludCBpOXh4X2dldF9yZWZjbGsoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUsCj4gIAkJCSAgIGludCBudW1fY29ubmVjdG9ycyk7Cj4gIHN0YXRpYyB2b2lkIGlu dGVsX3ByZV9kaXNhYmxlX3ByaW1hcnkoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKPiArc3RhdGlj IHZvaWQgaW50ZWxfbW9kZXNldF9zZXR1cF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KTsKPiAgCj4gIHN0YXRpYyBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZmluZF9lbmNvZGVy KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwgaW50IHBpcGUpCj4gIHsKPiBAQCAt MzI0Nyw3ICszMjQ4LDcgQEAgdm9pZCBpbnRlbF9maW5pc2hfcmVzZXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5ocGRfaXJxX3NldHVwKGRldik7Cj4gIAlz cGluX3VubG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7Cj4gIAo+IC0JaW50ZWxfbW9kZXNl dF9zZXR1cF9od19zdGF0ZShkZXYsIHRydWUpOwo+ICsJaW50ZWxfZGlzcGxheV9yZXN1bWUoZGV2 KTsKPiAgCj4gIAlpbnRlbF9ocGRfaW5pdChkZXZfcHJpdik7Cj4gIAo+IEBAIC0xMDIzOSw3ICsx MDI0MCw3IEBAIGJvb2wgaW50ZWxfZ2V0X2xvYWRfZGV0ZWN0X3BpcGUoc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvciwKPiAgcmV0cnk6Cj4gIAlyZXQgPSBkcm1fbW9kZXNldF9sb2NrKCZj b25maWctPmNvbm5lY3Rpb25fbXV0ZXgsIGN0eCk7Cj4gIAlpZiAocmV0KQo+IC0JCWdvdG8gZmFp bF91bmxvY2s7Cj4gKwkJZ290byBmYWlsOwo+ICAKPiAgCS8qCj4gIAkgKiBBbGdvcml0aG0gZ2V0 cyBhIGxpdHRsZSBtZXNzeToKPiBAQCAtMTAyNTcsMTAgKzEwMjU4LDEwIEBAIHJldHJ5Ogo+ICAK PiAgCQlyZXQgPSBkcm1fbW9kZXNldF9sb2NrKCZjcnRjLT5tdXRleCwgY3R4KTsKPiAgCQlpZiAo cmV0KQo+IC0JCQlnb3RvIGZhaWxfdW5sb2NrOwo+ICsJCQlnb3RvIGZhaWw7Cj4gIAkJcmV0ID0g ZHJtX21vZGVzZXRfbG9jaygmY3J0Yy0+cHJpbWFyeS0+bXV0ZXgsIGN0eCk7Cj4gIAkJaWYgKHJl dCkKPiAtCQkJZ290byBmYWlsX3VubG9jazsKPiArCQkJZ290byBmYWlsOwo+ICAKPiAgCQlvbGQt PmRwbXNfbW9kZSA9IGNvbm5lY3Rvci0+ZHBtczsKPiAgCQlvbGQtPmxvYWRfZGV0ZWN0X3RlbXAg PSBmYWxzZTsKPiBAQCAtMTAyNzksOSArMTAyODAsNiBAQCByZXRyeToKPiAgCQkJY29udGludWU7 Cj4gIAkJaWYgKHBvc3NpYmxlX2NydGMtPnN0YXRlLT5lbmFibGUpCj4gIAkJCWNvbnRpbnVlOwo+ IC0JCS8qIFRoaXMgY2FuIG9jY3VyIHdoZW4gYXBwbHlpbmcgdGhlIHBpcGUgQSBxdWlyayBvbiBy ZXN1bWUuICovCj4gLQkJaWYgKHRvX2ludGVsX2NydGMocG9zc2libGVfY3J0YyktPm5ld19lbmFi bGVkKQo+IC0JCQljb250aW51ZTsKPiAgCj4gIAkJY3J0YyA9IHBvc3NpYmxlX2NydGM7Cj4gIAkJ YnJlYWs7Cj4gQEAgLTEwMjkyLDIwICsxMDI5MCwxNyBAQCByZXRyeToKPiAgCSAqLwo+ICAJaWYg KCFjcnRjKSB7Cj4gIAkJRFJNX0RFQlVHX0tNUygibm8gcGlwZSBhdmFpbGFibGUgZm9yIGxvYWQt ZGV0ZWN0XG4iKTsKPiAtCQlnb3RvIGZhaWxfdW5sb2NrOwo+ICsJCWdvdG8gZmFpbDsKPiAgCX0K PiAgCj4gIAlyZXQgPSBkcm1fbW9kZXNldF9sb2NrKCZjcnRjLT5tdXRleCwgY3R4KTsKPiAgCWlm IChyZXQpCj4gLQkJZ290byBmYWlsX3VubG9jazsKPiArCQlnb3RvIGZhaWw7Cj4gIAlyZXQgPSBk cm1fbW9kZXNldF9sb2NrKCZjcnRjLT5wcmltYXJ5LT5tdXRleCwgY3R4KTsKPiAgCWlmIChyZXQp Cj4gLQkJZ290byBmYWlsX3VubG9jazsKPiAtCWludGVsX2VuY29kZXItPm5ld19jcnRjID0gdG9f aW50ZWxfY3J0YyhjcnRjKTsKPiAtCXRvX2ludGVsX2Nvbm5lY3Rvcihjb25uZWN0b3IpLT5uZXdf ZW5jb2RlciA9IGludGVsX2VuY29kZXI7Cj4gKwkJZ290byBmYWlsOwo+ICAKPiAgCWludGVsX2Ny dGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+IC0JaW50ZWxfY3J0Yy0+bmV3X2VuYWJsZWQgPSB0 cnVlOwo+ICAJb2xkLT5kcG1zX21vZGUgPSBjb25uZWN0b3ItPmRwbXM7Cj4gIAlvbGQtPmxvYWRf ZGV0ZWN0X3RlbXAgPSB0cnVlOwo+ICAJb2xkLT5yZWxlYXNlX2ZiID0gTlVMTDsKPiBAQCAtMTAz NzMsOSArMTAzNjgsNyBAQCByZXRyeToKPiAgCWludGVsX3dhaXRfZm9yX3ZibGFuayhkZXYsIGlu dGVsX2NydGMtPnBpcGUpOwo+ICAJcmV0dXJuIHRydWU7Cj4gIAo+IC0gZmFpbDoKPiAtCWludGVs X2NydGMtPm5ld19lbmFibGVkID0gY3J0Yy0+c3RhdGUtPmVuYWJsZTsKPiAtZmFpbF91bmxvY2s6 Cj4gK2ZhaWw6Cj4gIAlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwo+ICAJc3RhdGUgPSBO VUxMOwo+ICAKPiBAQCAtMTA0MjEsMTAgKzEwNDE0LDYgQEAgdm9pZCBpbnRlbF9yZWxlYXNlX2xv YWRfZGV0ZWN0X3BpcGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiAgCQlpZiAo SVNfRVJSKGNydGNfc3RhdGUpKQo+ICAJCQlnb3RvIGZhaWw7Cj4gIAo+IC0JCXRvX2ludGVsX2Nv bm5lY3Rvcihjb25uZWN0b3IpLT5uZXdfZW5jb2RlciA9IE5VTEw7Cj4gLQkJaW50ZWxfZW5jb2Rl ci0+bmV3X2NydGMgPSBOVUxMOwo+IC0JCWludGVsX2NydGMtPm5ld19lbmFibGVkID0gZmFsc2U7 Cgpsb2FkX2RldGVjdCBjaGFuZ2VzIHNob3VsZCBiZSBhIHNlcGFyYXRlIHBhdGNoLiBPciB0aGUg Y29tbWl0IG1lc3NhZ2UKbmVlZHMgdG8gZXhwbGFpbiB3aHkgdGhpcyBuZWVkcyB0byBiZSBvbmUu Cgo+IC0KPiAgCQljb25uZWN0b3Jfc3RhdGUtPmJlc3RfZW5jb2RlciA9IE5VTEw7Cj4gIAkJY29u bmVjdG9yX3N0YXRlLT5jcnRjID0gTlVMTDsKPiAgCj4gQEAgLTExODI3LDM3ICsxMTgxNiw2IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfaGVscGVyX2Z1bmNzIGludGVsX2hlbHBlcl9m dW5jcyA9IHsKPiAgCS5hdG9taWNfY2hlY2sgPSBpbnRlbF9jcnRjX2F0b21pY19jaGVjaywKPiAg fTsKPiAgCj4gLS8qKgo+IC0gKiBpbnRlbF9tb2Rlc2V0X3VwZGF0ZV9zdGFnZWRfb3V0cHV0X3N0 YXRlCj4gLSAqCj4gLSAqIFVwZGF0ZXMgdGhlIHN0YWdlZCBvdXRwdXQgY29uZmlndXJhdGlvbiBz dGF0ZSwgZS5nLiBhZnRlciB3ZSd2ZSByZWFkIG91dCB0aGUKPiAtICogY3VycmVudCBodyBzdGF0 ZS4KPiAtICovCj4gLXN0YXRpYyB2b2lkIGludGVsX21vZGVzZXRfdXBkYXRlX3N0YWdlZF9vdXRw dXRfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAtewo+IC0Jc3RydWN0IGludGVsX2Ny dGMgKmNydGM7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcjsKPiAtCXN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiAtCj4gLQlmb3JfZWFjaF9pbnRlbF9jb25uZWN0 b3IoZGV2LCBjb25uZWN0b3IpIHsKPiAtCQljb25uZWN0b3ItPm5ld19lbmNvZGVyID0KPiAtCQkJ dG9faW50ZWxfZW5jb2Rlcihjb25uZWN0b3ItPmJhc2UuZW5jb2Rlcik7Cj4gLQl9Cj4gLQo+IC0J Zm9yX2VhY2hfaW50ZWxfZW5jb2RlcihkZXYsIGVuY29kZXIpIHsKPiAtCQllbmNvZGVyLT5uZXdf Y3J0YyA9Cj4gLQkJCXRvX2ludGVsX2NydGMoZW5jb2Rlci0+YmFzZS5jcnRjKTsKPiAtCX0KPiAt Cj4gLQlmb3JfZWFjaF9pbnRlbF9jcnRjKGRldiwgY3J0Yykgewo+IC0JCWNydGMtPm5ld19lbmFi bGVkID0gY3J0Yy0+YmFzZS5zdGF0ZS0+ZW5hYmxlOwo+IC0JfQo+IC19CgpIbSwgbW9yZSBzdHVm ZiBzcXVhc2hlZCBpbiB3aGljaCBjYW4gYmUgb25seSByZW1vdmVkIGFzIGEgY29uc2VxdWVuY2Ug b2YKdGhlIHJlc3RvcmUgY29kZSByZXdvcmsuIFNlcGFyYXRlIHBhdGNoIGFnYWluIGltby4KCj4g LQo+IC0vKiBUcmFuc2l0aW9uYWwgaGVscGVyIHRvIGNvcHkgY3VycmVudCBjb25uZWN0b3IvZW5j b2RlciBzdGF0ZSB0bwo+IC0gKiBjb25uZWN0b3ItPnN0YXRlLiBUaGlzIGlzIG5lZWRlZCBzbyB0 aGF0IGNvZGUgdGhhdCBpcyBwYXJ0aWFsbHkKPiAtICogY29udmVydGVkIHRvIGF0b21pYyBkb2Vz IHRoZSByaWdodCB0aGluZy4KPiAtICovCj4gIHN0YXRpYyB2b2lkIGludGVsX21vZGVzZXRfdXBk YXRlX2Nvbm5lY3Rvcl9hdG9taWNfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgewo+ ICAJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yOwo+IEBAIC0xMjI5Nyw3ICsxMjI1 NSw2IEBAIGludGVsX21vZGVzZXRfdXBkYXRlX3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZSkKPiAgCX0KPiAgCj4gIAlkcm1fYXRvbWljX2hlbHBlcl91cGRhdGVfbGVnYWN5X21v ZGVzZXRfc3RhdGUoc3RhdGUtPmRldiwgc3RhdGUpOwo+IC0JaW50ZWxfbW9kZXNldF91cGRhdGVf c3RhZ2VkX291dHB1dF9zdGF0ZShzdGF0ZS0+ZGV2KTsKPiAgCj4gIAkvKiBEb3VibGUgY2hlY2sg c3RhdGUuICovCj4gIAlmb3JfZWFjaF9jcnRjKGRldiwgY3J0Yykgewo+IEBAIC0xMjY4OCwxMSAr MTI2NDUsMTQgQEAgY2hlY2tfY29ubmVjdG9yX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gIAlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3I7Cj4gIAo+ICAJZm9yX2VhY2hf aW50ZWxfY29ubmVjdG9yKGRldiwgY29ubmVjdG9yKSB7Cj4gKwkJc3RydWN0IGRybV9lbmNvZGVy ICplbmNvZGVyID0gY29ubmVjdG9yLT5iYXNlLmVuY29kZXI7Cj4gKwkJc3RydWN0IGRybV9jb25u ZWN0b3Jfc3RhdGUgKnN0YXRlID0gY29ubmVjdG9yLT5iYXNlLnN0YXRlOwo+ICsKPiAgCQkvKiBU aGlzIGFsc28gY2hlY2tzIHRoZSBlbmNvZGVyL2Nvbm5lY3RvciBodyBzdGF0ZSB3aXRoIHRoZQo+ ICAJCSAqIC0+Z2V0X2h3X3N0YXRlIGNhbGxiYWNrcy4gKi8KPiAgCQlpbnRlbF9jb25uZWN0b3Jf Y2hlY2tfc3RhdGUoY29ubmVjdG9yKTsKPiAgCj4gLQkJSTkxNV9TVEFURV9XQVJOKCZjb25uZWN0 b3ItPm5ld19lbmNvZGVyLT5iYXNlICE9IGNvbm5lY3Rvci0+YmFzZS5lbmNvZGVyLAo+ICsJCUk5 MTVfU1RBVEVfV0FSTihzdGF0ZS0+YmVzdF9lbmNvZGVyICE9IGVuY29kZXIsCj4gIAkJICAgICAi Y29ubmVjdG9yJ3Mgc3RhZ2VkIGVuY29kZXIgZG9lc24ndCBtYXRjaCBjdXJyZW50IGVuY29kZXJc biIpOwo+ICAJfQo+ICB9Cj4gQEAgLTEyNzEyLDggKzEyNjcyLDYgQEAgY2hlY2tfZW5jb2Rlcl9z dGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJCQkgICAgICBlbmNvZGVyLT5iYXNlLmJh c2UuaWQsCj4gIAkJCSAgICAgIGVuY29kZXItPmJhc2UubmFtZSk7Cj4gIAo+IC0JCUk5MTVfU1RB VEVfV0FSTigmZW5jb2Rlci0+bmV3X2NydGMtPmJhc2UgIT0gZW5jb2Rlci0+YmFzZS5jcnRjLAo+ IC0JCSAgICAgImVuY29kZXIncyBzdGFnZSBjcnRjIGRvZXNuJ3QgbWF0Y2ggY3VycmVudCBjcnRj XG4iKTsKPiAgCQlJOTE1X1NUQVRFX1dBUk4oZW5jb2Rlci0+Y29ubmVjdG9yc19hY3RpdmUgJiYg IWVuY29kZXItPmJhc2UuY3J0YywKPiAgCQkgICAgICJlbmNvZGVyJ3MgYWN0aXZlX2Nvbm5lY3Rv cnMgc2V0LCBidXQgbm8gY3J0Y1xuIik7Cj4gIAo+IEBAIC0xMjcyMyw2ICsxMjY4MSwxMCBAQCBj aGVja19lbmNvZGVyX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJCWVuYWJsZWQg PSB0cnVlOwo+ICAJCQlpZiAoY29ubmVjdG9yLT5iYXNlLmRwbXMgIT0gRFJNX01PREVfRFBNU19P RkYpCj4gIAkJCQlhY3RpdmUgPSB0cnVlOwo+ICsKPiArCQkJSTkxNV9TVEFURV9XQVJOKGNvbm5l Y3Rvci0+YmFzZS5zdGF0ZS0+Y3J0YyAhPQo+ICsJCQkJCWVuY29kZXItPmJhc2UuY3J0YywKPiAr CQkJICAgICAiZW5jb2RlcidzIHN0YWdlIGNydGMgZG9lc24ndCBtYXRjaCBjdXJyZW50IGNydGNc biIpOwo+ICAJCX0KPiAgCQkvKgo+ICAJCSAqIGZvciBNU1QgY29ubmVjdG9ycyBpZiB3ZSB1bnBs dWcgdGhlIGNvbm5lY3RvciBpcyBnb25lCgpTYW1lIGZvciBhZGFwdGluZyB0aGUgY2hlY2sgZnVu Y3Rpb25zLiBQcm9iYWJseSBvayBpbiB0aGUgcmVtb3ZlYWwgb2YgdGhlCmxlZ2FjeSBuZXdfKiBw b2ludGVycyB0aG91Z2guCgo+IEBAIC0xMzI4MiwxMSArMTMyNDQsMTIgQEAgdm9pZCBpbnRlbF9j cnRjX3Jlc3RvcmVfbW9kZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAkgKiBuZWVkIHRvIGNv cHkgdGhlIHN0YWdlZCBjb25maWcgdG8gdGhlIGF0b21pYyBzdGF0ZSwgb3RoZXJ3aXNlIHRoZQo+ ICAJICogbW9kZSBzZXQgd2lsbCBqdXN0IHJlYXBwbHkgdGhlIHN0YXRlIHRoZSBIVyBpcyBhbHJl YWR5IGluLiAqLwo+ICAJZm9yX2VhY2hfaW50ZWxfZW5jb2RlcihkZXYsIGVuY29kZXIpIHsKPiAt CQlpZiAoJmVuY29kZXItPm5ld19jcnRjLT5iYXNlICE9IGNydGMpCj4gKwkJaWYgKGVuY29kZXIt PmJhc2UuY3J0YyAhPSBjcnRjKQo+ICAJCQljb250aW51ZTsKPiAgCj4gIAkJZm9yX2VhY2hfaW50 ZWxfY29ubmVjdG9yKGRldiwgY29ubmVjdG9yKSB7Cj4gLQkJCWlmIChjb25uZWN0b3ItPm5ld19l bmNvZGVyICE9IGVuY29kZXIpCj4gKwkJCWlmIChjb25uZWN0b3ItPmJhc2Uuc3RhdGUtPmJlc3Rf ZW5jb2RlciAhPQo+ICsJCQkgICAgJmVuY29kZXItPmJhc2UpCj4gIAkJCQljb250aW51ZTsKPiAg Cj4gIAkJCWNvbm5lY3Rvcl9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2Nvbm5lY3Rvcl9zdGF0ZShz dGF0ZSwgJmNvbm5lY3Rvci0+YmFzZSk7Cj4gQEAgLTEzMjk5LDcgKzEzMjYyLDYgQEAgdm9pZCBp bnRlbF9jcnRjX3Jlc3RvcmVfbW9kZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAkJCX0KPiAg Cj4gIAkJCWNvbm5lY3Rvcl9zdGF0ZS0+Y3J0YyA9IGNydGM7Cj4gLQkJCWNvbm5lY3Rvcl9zdGF0 ZS0+YmVzdF9lbmNvZGVyID0gJmVuY29kZXItPmJhc2U7Cj4gIAkJfQo+ICAJfQo+ICAKPiBAQCAt MTMzMTEsOSArMTMyNzMsNiBAQCB2b2lkIGludGVsX2NydGNfcmVzdG9yZV9tb2RlKHN0cnVjdCBk cm1fY3J0YyAqY3J0YykKPiAgCQlyZXR1cm47Cj4gIAl9Cj4gIAo+IC0JY3J0Y19zdGF0ZS0+YmFz ZS5hY3RpdmUgPSBjcnRjX3N0YXRlLT5iYXNlLmVuYWJsZSA9Cj4gLQkJdG9faW50ZWxfY3J0Yyhj cnRjKS0+bmV3X2VuYWJsZWQ7Cj4gLQo+ICAJZHJtX21vZGVfY29weSgmY3J0Y19zdGF0ZS0+YmFz ZS5tb2RlLCAmY3J0Yy0+bW9kZSk7Cj4gIAo+ICAJaW50ZWxfbW9kZXNldF9zZXR1cF9wbGFuZV9z dGF0ZShzdGF0ZSwgY3J0YywgJmNydGMtPm1vZGUsCgpTYW1lIGFib3V0IHJlc3RvcmVfbW9kZSAm IG5ld18qIHN0YXRlLgoKPiBAQCAtMTUxMTIsNyArMTUwNzEsNyBAQCB2b2lkIGludGVsX21vZGVz ZXRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJaW50ZWxfZmJjX2Rpc2FibGUoZGV2 KTsKPiAgCj4gIAlkcm1fbW9kZXNldF9sb2NrX2FsbChkZXYpOwo+IC0JaW50ZWxfbW9kZXNldF9z ZXR1cF9od19zdGF0ZShkZXYsIGZhbHNlKTsKPiArCWludGVsX21vZGVzZXRfc2V0dXBfaHdfc3Rh dGUoZGV2KTsKPiAgCWRybV9tb2Rlc2V0X3VubG9ja19hbGwoZGV2KTsKPiAgCj4gIAlmb3JfZWFj aF9pbnRlbF9jcnRjKGRldiwgY3J0Yykgewo+IEBAIC0xNTUwMCwxMCArMTU0NTksMTEgQEAgc3Rh dGljIHZvaWQgaW50ZWxfbW9kZXNldF9yZWFkb3V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gIAl9Cj4gIH0KPiAgCj4gLS8qIFNjYW4gb3V0IHRoZSBjdXJyZW50IGh3IG1vZGVz ZXQgc3RhdGUsIHNhbml0aXplcyBpdCBhbmQgbWFwcyBpdCBpbnRvIHRoZSBkcm0KPiAtICogYW5k IGk5MTUgc3RhdGUgdHJhY2tpbmcgc3RydWN0dXJlcy4gKi8KPiAtdm9pZCBpbnRlbF9tb2Rlc2V0 X3NldHVwX2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gLQkJCQkgIGJvb2wgZm9y Y2VfcmVzdG9yZSkKPiArLyogU2NhbiBvdXQgdGhlIGN1cnJlbnQgaHcgbW9kZXNldCBzdGF0ZSwK PiArICogYW5kIHNhbml0aXplcyBpdCB0byB0aGUgY3VycmVudCBzdGF0ZQo+ICsgKi8KPiArc3Rh dGljIHZvaWQKPiAraW50ZWxfbW9kZXNldF9zZXR1cF9od19zdGF0ZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYt PmRldl9wcml2YXRlOwo+ICAJZW51bSBwaXBlIHBpcGU7Cj4gQEAgLTE1NTQ1LDI1ICsxNTUwNSw1 OCBAQCB2b2lkIGludGVsX21vZGVzZXRfc2V0dXBfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKPiAgCQlza2xfd21fZ2V0X2h3X3N0YXRlKGRldik7Cj4gIAllbHNlIGlmIChIQVNfUENI X1NQTElUKGRldikpCj4gIAkJaWxrX3dtX2dldF9od19zdGF0ZShkZXYpOwo+ICt9Cj4gIAo+IC0J aWYgKGZvcmNlX3Jlc3RvcmUpIHsKPiAtCQlpOTE1X3JlZGlzYWJsZV92Z2EoZGV2KTsKPiArdm9p ZCBpbnRlbF9kaXNwbGF5X3Jlc3VtZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICt7Cj4gKwlz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBkcm1fYXRvbWljX3N0YXRlX2FsbG9jKGRl dik7CgpQdXR0aW5nIHJlYWwgZnVuY3Rpb25zIGludG8gaW5pdGlhbGl6ZXJzIGlzIGEgYml0IHN1 cnByaXNpbmcsIGltbyBiZXR0ZXIKb24gaXQncyBvd24gbGluZSByaWdodCBiZWZvcmUgdGhlIGNo ZWNrLgo+ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubjsKPiArCXN0cnVjdCBpbnRlbF9w bGFuZSAqcGxhbmU7Cj4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gKwlpbnQgcmV0Owo+ICAK PiAtCQkvKgo+IC0JCSAqIFdlIG5lZWQgdG8gdXNlIHJhdyBpbnRlcmZhY2VzIGZvciByZXN0b3Jp bmcgc3RhdGUgdG8gYXZvaWQKPiAtCQkgKiBjaGVja2luZyAoYm9ndXMpIGludGVybWVkaWF0ZSBz dGF0ZXMuCj4gLQkJICovCj4gLQkJZm9yX2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkgewo+IC0J CQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPQo+IC0JCQkJZGV2X3ByaXYtPnBpcGVfdG9fY3J0Y19t YXBwaW5nW3BpcGVdOwo+ICsJaWYgKCFzdGF0ZSkKCmRlYnVnIG91dHB1dCBtaXNzaW5nIHRoYXQg dGhlIHN0YXRlIGFsbG9jIGZhaWxlZC4gUGVyaGFwcyBqdXN0IGdvdG8gZmFpbDsKc2luY2Ugc3Rh dGVfZnJlZSBjYW4gY29wZSB3aXRoIGEgTlVMTCBzdGF0ZS4KCj4gKwkJcmV0dXJuOwo+ICAKPiAt CQkJaW50ZWxfY3J0Y19yZXN0b3JlX21vZGUoY3J0Yyk7Cj4gLQkJfQo+IC0JfSBlbHNlIHsKPiAt CQlpbnRlbF9tb2Rlc2V0X3VwZGF0ZV9zdGFnZWRfb3V0cHV0X3N0YXRlKGRldik7Cj4gKwlzdGF0 ZS0+YWNxdWlyZV9jdHggPSBkZXYtPm1vZGVfY29uZmlnLmFjcXVpcmVfY3R4Owo+ICsKPiArCS8q IHByZXNlcnZlIGNvbXBsZXRlIG9sZCBzdGF0ZSwgaW5jbHVkaW5nIGRwbGwgKi8KPiArCWludGVs X2F0b21pY19nZXRfc2hhcmVkX2RwbGxfc3RhdGUoc3RhdGUpOwo+ICsKPiArCWZvcl9lYWNoX2Ny dGMoZGV2LCBjcnRjKSB7Cj4gKwkJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0K PiArCQkJZHJtX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7Cj4gKwo+ICsJCXJl dCA9IFBUUl9FUlJfT1JfWkVSTyhjcnRjX3N0YXRlKTsKPiArCQlpZiAocmV0KQo+ICsJCQlnb3Rv IGVycjsKPiArCj4gKwkJLyogZm9yY2UgYSByZXN0b3JlICovCj4gKwkJY3J0Y19zdGF0ZS0+bW9k ZV9jaGFuZ2VkID0gdHJ1ZTsKPiArCX0KPiArCj4gKwlmb3JfZWFjaF9pbnRlbF9wbGFuZShkZXYs IHBsYW5lKSB7Cj4gKwkJcmV0ID0gUFRSX0VSUl9PUl9aRVJPKGRybV9hdG9taWNfZ2V0X3BsYW5l X3N0YXRlKHN0YXRlLCAmcGxhbmUtPmJhc2UpKTsKPiArCQlpZiAocmV0KQo+ICsJCQlnb3RvIGVy cjsKPiArCX0KPiArCj4gKwlmb3JfZWFjaF9pbnRlbF9jb25uZWN0b3IoZGV2LCBjb25uKSB7Cj4g KwkJcmV0ID0gUFRSX0VSUl9PUl9aRVJPKGRybV9hdG9taWNfZ2V0X2Nvbm5lY3Rvcl9zdGF0ZShz dGF0ZSwgJmNvbm4tPmJhc2UpKTsKPiArCQlpZiAocmV0KQo+ICsJCQlnb3RvIGVycjsKPiAgCX0K PiAgCj4gLQlpbnRlbF9tb2Rlc2V0X2NoZWNrX3N0YXRlKGRldik7Cj4gKwlpbnRlbF9tb2Rlc2V0 X3NldHVwX2h3X3N0YXRlKGRldik7Cj4gKwo+ICsJaTkxNV9yZWRpc2FibGVfdmdhKGRldik7CgpT aW5jZSB3ZSd2ZSBvbmx5IGJhZGx5IGJydWlzZWQgZXNjYXBlIHRoaXMgdHJhcCBJIHRoaW5rIHRo aXMgZGVzZXJ2ZXMgYQpjb21tZW50OgoKCS8qCgkgKiBXQVJOSU5HOiBXZSBjYW4ndCBkbyBhIGZ1 bGwgYXRvbWljIG1vZGVzZXQgaW5jbHVkaW5nCgkgKiBjb21wdXRlL2NoZWNrIHBoYXNlIGhlcmUg c2luY2UgZXNwZWNpYWxseSBlbmNvZGVyCgkgKiBjb21wdXRlX2NvbmZpZyBmdW5jdGlvbnMgZGVw ZW5kIHVwb24gb3V0cHV0IGRldGVjdGlvbiBzdGF0ZS4KCSAqIEFuZCB0aGF0J3MganVzdCBub3Qg eWV0IGF2YWlsYWJsZSBhdCBkcml2ZXIgbG9hZC4gVGhlcmVmb3JlIHdlCgkgKiBtdXN0IHJlYWQg b3V0IHRoZSBlbnRpcmUgcmVsZXZhbnQgaHcgc3RhdGUgKGluY2x1ZGluZyBhbnkKCSAqIGRyaXZl ciBpbnRlcm5hbCBzdGF0ZSkgZmFpdGhmdWxseSBoZXJlIGFuZCBvbmx5IGFwcGx5IHRoZQoJICog Y29tbWl0IHNpZGUuCgkgKi8KCkhtLCBtYWtlcyBtZSB0aGluayAuLi4gc2hvdWxkIHdlIGVuZCB1 cCBjYWxsaW5nIGp1c3QgZGV2LT5hdG9taWNfY29tbWl0KHN0YXRlKSBoZXJlCm9uY2UgYXRvbWlj IG1vZGVzZXQgaXMgZnVsbHkgd29ya2luZz8KCj4gKwlyZXQgPSBpbnRlbF9zZXRfbW9kZShzdGF0 ZSk7Cj4gKwlpZiAoIXJldCkKPiArCQlyZXR1cm47Cj4gKwo+ICtlcnI6Cj4gKwlEUk1fRVJST1Io IlJlc3RvcmluZyBvbGQgc3RhdGUgZmFpbGVkIHdpdGggJWlcbiIsIHJldCk7Cj4gKwlkcm1fYXRv bWljX3N0YXRlX2ZyZWUoc3RhdGUpOwo+ICB9Cj4gIAo+ICB2b2lkIGludGVsX21vZGVzZXRfZ2Vt X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ IGluZGV4IGMzY2VhMTc4YzgwOS4uOTdiNjU3NDlmNDcyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmgKPiBAQCAtMTMwLDExICsxMzAsNiBAQCBzdHJ1Y3QgaW50ZWxfZmJkZXYgewo+ICAK PiAgc3RydWN0IGludGVsX2VuY29kZXIgewo+ICAJc3RydWN0IGRybV9lbmNvZGVyIGJhc2U7Cj4g LQkvKgo+IC0JICogVGhlIG5ldyBjcnRjIHRoaXMgZW5jb2RlciB3aWxsIGJlIGRyaXZlbiBmcm9t LiBPbmx5IGRpZmZlcnMgZnJvbQo+IC0JICogYmFzZS0+Y3J0YyB3aGlsZSBhIG1vZGVzZXQgaXMg aW4gcHJvZ3Jlc3MuCj4gLQkgKi8KPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpuZXdfY3J0YzsKPiAg Cj4gIAllbnVtIGludGVsX291dHB1dF90eXBlIHR5cGU7Cj4gIAl1bnNpZ25lZCBpbnQgY2xvbmVh YmxlOwo+IEBAIC0xOTUsMTIgKzE5MCw2IEBAIHN0cnVjdCBpbnRlbF9jb25uZWN0b3Igewo+ICAJ ICovCj4gIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcjsKPiAgCj4gLQkvKgo+IC0JICog VGhlIG5ldyBlbmNvZGVyIHRoaXMgY29ubmVjdG9yIHdpbGwgYmUgZHJpdmVuLiBPbmx5IGRpZmZl cnMgZnJvbQo+IC0JICogZW5jb2RlciB3aGlsZSBhIG1vZGVzZXQgaXMgaW4gcHJvZ3Jlc3MuCj4g LQkgKi8KPiAtCXN0cnVjdCBpbnRlbF9lbmNvZGVyICpuZXdfZW5jb2RlcjsKPiAtCj4gIAkvKiBS ZWFkcyBvdXQgdGhlIGN1cnJlbnQgaHcsIHJldHVybmluZyB0cnVlIGlmIHRoZSBjb25uZWN0b3Ig aXMgZW5hYmxlZAo+ICAJICogYW5kIGFjdGl2ZSAoaS5lLiBkcG1zIE9OIHN0YXRlKS4gKi8KPiAg CWJvb2wgKCpnZXRfaHdfc3RhdGUpKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKik7Cj4gQEAgLTU1 MCw3ICs1MzksNiBAQCBzdHJ1Y3QgaW50ZWxfY3J0YyB7Cj4gIAl1aW50MzJfdCBjdXJzb3JfYmFz ZTsKPiAgCj4gIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY29uZmlnOwo+IC0JYm9vbCBuZXdf ZW5hYmxlZDsKPiAgCj4gIAkvKiByZXNldCBjb3VudGVyIHZhbHVlIHdoZW4gdGhlIGxhc3QgZmxp cCB3YXMgc3VibWl0dGVkICovCj4gIAl1bnNpZ25lZCBpbnQgcmVzZXRfY291bnRlcjsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfbHZkcy5jCj4gaW5kZXggZWE4NTU0NzYxMWE1Li5hNjNkMTg2ODA2MjMg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jCj4gQEAgLTQ1Miw3ICs0NTIsNyBAQCBz dGF0aWMgaW50IGludGVsX2xpZF9ub3RpZnkoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwgdW5z aWduZWQgbG9uZyB2YWwsCj4gIAkgKi8KPiAgCWlmICghSEFTX1BDSF9TUExJVChkZXYpKSB7Cj4g IAkJZHJtX21vZGVzZXRfbG9ja19hbGwoZGV2KTsKPiAtCQlpbnRlbF9tb2Rlc2V0X3NldHVwX2h3 X3N0YXRlKGRldiwgdHJ1ZSk7Cj4gKwkJaW50ZWxfZGlzcGxheV9yZXN1bWUoZGV2KTsKCldvdWxk IGltbyBiZSBuaWNlIHRvIG1lbnRpb24gdGhpcyBzbWFsbCByZWZhY3RvcmluZyBpbiB0aGUgY29t bWl0IG1lc3NhZ2UuCi1EYW5pZWwKCj4gIAkJZHJtX21vZGVzZXRfdW5sb2NrX2FsbChkZXYpOwo+ ICAJfQo+ICAKPiAtLSAKPiAyLjEuMAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVl ciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK