From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 03/10] drm/i915: Lift sideband locking for vlv_punit_(read|write) Date: Fri, 19 Apr 2019 18:13:55 +0100 Message-ID: <20190419171402.30596-4-chris@chris-wilson.co.uk> References: <20190419171402.30596-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3C7D6892E5 for ; Fri, 19 Apr 2019 17:14:09 +0000 (UTC) In-Reply-To: <20190419171402.30596-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org TGlmdCB0aGUgc2lkZWJhbmQgYWNxdWlzaXRpb24gZm9yIHZsdl9wdW5pdF9yZWFkIGFuZCB2bHZf cHVuaXRfd3JpdGUKaW50byB0aGVpciBjYWxsZXJzLCBzbyB0aGF0IHdlIGNhbiBsb2NrIHRoZSBz aWRlYmFuZCBvbmNlIGZvciBhIHNlcXVlbmNlCm9mIG9wZXJhdGlvbnMsIHJhdGhlciB0aGFuIHBl cmZvcm0gdGhlIGhlYXZ5d2VpZ2h0IGFjcXVpc2l0aW9uIG9uIGVhY2gKcmVxdWVzdC4KClNpZ25l ZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICB8ICA1ICsrKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jICAgICAgIHwgMTQgKysrKy0tLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2NkY2xrLmMgICAgICB8IDIzICsrKysrKysrKystLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgICB8IDE2ICsrKysrLS0tLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICAgIHwgNDYgKysrKysrKysrKysrKysrKysrKyst LS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jIHwgMTAgKysrKysr CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zaWRlYmFuZC5jICAgfCAxOCArKy0tLS0tLS0t CiA3IGZpbGVzIGNoYW5nZWQsIDg5IGluc2VydGlvbnMoKyksIDQzIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKaW5kZXggNTgyM2ZmYjE3ODIxLi44MzI1MzkyOGU2 OWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCkBAIC0xMDU2LDcgKzEwNTYsMTAg QEAgc3RhdGljIGludCBpOTE1X2ZyZXF1ZW5jeV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9p ZCAqdW51c2VkKQogCQkJICAgeWVzbm8oKHJwbW9kZWN0bCAmIEdFTjZfUlBfTUVESUFfTU9ERV9N QVNLKSA9PQogCQkJCSAgR0VONl9SUF9NRURJQV9TV19NT0RFKSk7CiAKKwkJdmx2X3B1bml0X2dl dChkZXZfcHJpdik7CiAJCWZyZXFfc3RzID0gdmx2X3B1bml0X3JlYWQoZGV2X3ByaXYsIFBVTklU X1JFR19HUFVfRlJFUV9TVFMpOworCQl2bHZfcHVuaXRfcHV0KGRldl9wcml2KTsKKwogCQlzZXFf cHJpbnRmKG0sICJQVU5JVF9SRUdfR1BVX0ZSRVFfU1RTOiAweCUwOHhcbiIsIGZyZXFfc3RzKTsK IAkJc2VxX3ByaW50ZihtLCAiRERSIGZyZXE6ICVkIE1IelxuIiwgZGV2X3ByaXYtPm1lbV9mcmVx KTsKIApAQCAtMjAyOSw4ICsyMDMyLDEwIEBAIHN0YXRpYyBpbnQgaTkxNV9ycHNfYm9vc3RfaW5m byhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiAJd2l0aF9pbnRlbF9ydW50aW1lX3Bt X2lmX2luX3VzZShkZXZfcHJpdiwgd2FrZXJlZikgewogCQlpZiAoSVNfVkFMTEVZVklFVyhkZXZf cHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKIAkJCW11dGV4X2xvY2soJmRldl9w cml2LT5wY3VfbG9jayk7CisJCQl2bHZfcHVuaXRfZ2V0KGRldl9wcml2KTsKIAkJCWFjdF9mcmVx ID0gdmx2X3B1bml0X3JlYWQoZGV2X3ByaXYsCiAJCQkJCQkgIFBVTklUX1JFR19HUFVfRlJFUV9T VFMpOworCQkJdmx2X3B1bml0X3B1dChkZXZfcHJpdik7CiAJCQlhY3RfZnJlcSA9IChhY3RfZnJl cSA+PiA4KSAmIDB4ZmY7CiAJCQltdXRleF91bmxvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CiAJ CX0gZWxzZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMKaW5kZXggNDEzMTMwMDVhZjQyLi5i ZmFiYjNkZTQ4MDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMKQEAgLTI1OSwyNSArMjU5 LDI1IEBAIHN0YXRpYyBzc2l6ZV90IGd0X2FjdF9mcmVxX21oel9zaG93KHN0cnVjdCBkZXZpY2Ug KmtkZXYsCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0ga2Rldl9taW5v cl90b19pOTE1KGtkZXYpOwogCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwotCWludCByZXQ7CisJ dTMyIGZyZXE7CiAKIAl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwog CiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKIAlpZiAoSVNfVkFMTEVZVklFVyhk ZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKLQkJdTMyIGZyZXE7CisJCXZs dl9wdW5pdF9nZXQoZGV2X3ByaXYpOwogCQlmcmVxID0gdmx2X3B1bml0X3JlYWQoZGV2X3ByaXYs IFBVTklUX1JFR19HUFVfRlJFUV9TVFMpOwotCQlyZXQgPSBpbnRlbF9ncHVfZnJlcShkZXZfcHJp diwgKGZyZXEgPj4gOCkgJiAweGZmKTsKKwkJdmx2X3B1bml0X3B1dChkZXZfcHJpdik7CisKKwkJ ZnJlcSA9IChmcmVxID4+IDgpICYgMHhmZjsKIAl9IGVsc2UgewotCQlyZXQgPSBpbnRlbF9ncHVf ZnJlcShkZXZfcHJpdiwKLQkJCQkgICAgIGludGVsX2dldF9jYWdmKGRldl9wcml2LAotCQkJCQkJ ICAgIEk5MTVfUkVBRChHRU42X1JQU1RBVDEpKSk7CisJCWZyZXEgPSBpbnRlbF9nZXRfY2FnZihk ZXZfcHJpdiwgSTkxNV9SRUFEKEdFTjZfUlBTVEFUMSkpOwogCX0KIAltdXRleF91bmxvY2soJmRl dl9wcml2LT5wY3VfbG9jayk7CiAKIAlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdiwgd2Fr ZXJlZik7CiAKLQlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIlZFxuIiwgcmV0KTsK KwlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIlZFxuIiwgaW50ZWxfZ3B1X2ZyZXEo ZGV2X3ByaXYsIGZyZXEpKTsKIH0KIAogc3RhdGljIHNzaXplX3QgZ3RfY3VyX2ZyZXFfbWh6X3No b3coc3RydWN0IGRldmljZSAqa2RldiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2NkY2xrLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNsay5jCmluZGV4 IDU4NDVkMGEzNzU5OS4uOWRkMjIyMDNhN2U4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9jZGNsay5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NkY2xr LmMKQEAgLTQ2NCwxMyArNDY0LDE5IEBAIHN0YXRpYyB2b2lkIHZsdl9nZXRfY2RjbGsoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogewogCXUzMiB2YWw7CiAKKwltdXRleF9sb2Nr KCZkZXZfcHJpdi0+cGN1X2xvY2spOworCXZsdl9pb3NmX3NiX2dldChkZXZfcHJpdiwKKwkJCUJJ VChWTFZfSU9TRl9TQl9DQ0spIHwgQklUKFZMVl9JT1NGX1NCX1BVTklUKSk7CisKIAljZGNsa19z dGF0ZS0+dmNvID0gdmx2X2dldF9ocGxsX3ZjbyhkZXZfcHJpdik7CiAJY2RjbGtfc3RhdGUtPmNk Y2xrID0gdmx2X2dldF9jY2tfY2xvY2soZGV2X3ByaXYsICJjZGNsayIsCiAJCQkJCSAgICAgICBD Q0tfRElTUExBWV9DTE9DS19DT05UUk9MLAogCQkJCQkgICAgICAgY2RjbGtfc3RhdGUtPnZjbyk7 CiAKLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwogCXZhbCA9IHZsdl9wdW5pdF9y ZWFkKGRldl9wcml2LCBQVU5JVF9SRUdfRFNQU1NQTSk7CisKKwl2bHZfaW9zZl9zYl9wdXQoZGV2 X3ByaXYsCisJCQlCSVQoVkxWX0lPU0ZfU0JfQ0NLKSB8IEJJVChWTFZfSU9TRl9TQl9QVU5JVCkp OwogCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKIAogCWlmIChJU19WQUxMRVlW SUVXKGRldl9wcml2KSkKQEAgLTU0NSw2ICs1NTEsMTEgQEAgc3RhdGljIHZvaWQgdmx2X3NldF9j ZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJICovCiAJd2FrZXJlZiA9 IGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fUElQRV9BKTsK IAorCXZsdl9pb3NmX3NiX2dldChkZXZfcHJpdiwKKwkJCUJJVChWTFZfSU9TRl9TQl9DQ0spIHwK KwkJCUJJVChWTFZfSU9TRl9TQl9CVU5JVCkgfAorCQkJQklUKFZMVl9JT1NGX1NCX1BVTklUKSk7 CisKIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwogCXZhbCA9IHZsdl9wdW5pdF9y ZWFkKGRldl9wcml2LCBQVU5JVF9SRUdfRFNQU1NQTSk7CiAJdmFsICY9IH5EU1BGUkVRR1VBUl9N QVNLOwpAQCAtNTU3LDkgKzU2OCw2IEBAIHN0YXRpYyB2b2lkIHZsdl9zZXRfY2RjbGsoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCX0KIAltdXRleF91bmxvY2soJmRldl9wcml2 LT5wY3VfbG9jayk7CiAKLQl2bHZfaW9zZl9zYl9nZXQoZGV2X3ByaXYsCi0JCQlCSVQoVkxWX0lP U0ZfU0JfQ0NLKSB8IEJJVChWTFZfSU9TRl9TQl9CVU5JVCkpOwotCiAJaWYgKGNkY2xrID09IDQw MDAwMCkgewogCQl1MzIgZGl2aWRlcjsKIApAQCAtNTkzLDcgKzYwMSw5IEBAIHN0YXRpYyB2b2lk IHZsdl9zZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCXZsdl9i dW5pdF93cml0ZShkZXZfcHJpdiwgQlVOSVRfUkVHX0JJU09DLCB2YWwpOwogCiAJdmx2X2lvc2Zf c2JfcHV0KGRldl9wcml2LAotCQkJQklUKFZMVl9JT1NGX1NCX0NDSykgfCBCSVQoVkxWX0lPU0Zf U0JfQlVOSVQpKTsKKwkJCUJJVChWTFZfSU9TRl9TQl9DQ0spIHwKKwkJCUJJVChWTFZfSU9TRl9T Ql9CVU5JVCkgfAorCQkJQklUKFZMVl9JT1NGX1NCX1BVTklUKSk7CiAKIAlpbnRlbF91cGRhdGVf Y2RjbGsoZGV2X3ByaXYpOwogCkBAIC02MzAsNiArNjQwLDcgQEAgc3RhdGljIHZvaWQgY2h2X3Nl dF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJd2FrZXJlZiA9IGlu dGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fUElQRV9BKTsKIAog CW11dGV4X2xvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CisJdmx2X3B1bml0X2dldChkZXZfcHJp dik7CiAJdmFsID0gdmx2X3B1bml0X3JlYWQoZGV2X3ByaXYsIFBVTklUX1JFR19EU1BTU1BNKTsK IAl2YWwgJj0gfkRTUEZSRVFHVUFSX01BU0tfQ0hWOwogCXZhbCB8PSAoY21kIDw8IERTUEZSRVFH VUFSX1NISUZUX0NIVik7CkBAIC02MzksNiArNjUwLDggQEAgc3RhdGljIHZvaWQgY2h2X3NldF9j ZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCSAgICAgNTApKSB7CiAJ CURSTV9FUlJPUigidGltZWQgb3V0IHdhaXRpbmcgZm9yIENEY2xrIGNoYW5nZVxuIik7CiAJfQor CisJdmx2X3B1bml0X3B1dChkZXZfcHJpdik7CiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGN1 X2xvY2spOwogCiAJaW50ZWxfdXBkYXRlX2NkY2xrKGRldl9wcml2KTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYwppbmRleCAxMWJiMDc2NTBmODcuLjY4ODIyZjAyZGZjNiAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtMTUzLDEwICsxNTMsOCBAQCBpbnQgdmx2 X2dldF9ocGxsX3ZjbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJaW50IGhw bGxfZnJlcSwgdmNvX2ZyZXFbXSA9IHsgODAwLCAxNjAwLCAyMDAwLCAyNDAwIH07CiAKIAkvKiBP YnRhaW4gU0tVIGluZm9ybWF0aW9uICovCi0Jdmx2X2Nja19nZXQoZGV2X3ByaXYpOwogCWhwbGxf ZnJlcSA9IHZsdl9jY2tfcmVhZChkZXZfcHJpdiwgQ0NLX0ZVU0VfUkVHKSAmCiAJCUNDS19GVVNF X0hQTExfRlJFUV9NQVNLOwotCXZsdl9jY2tfcHV0KGRldl9wcml2KTsKIAogCXJldHVybiB2Y29f ZnJlcVtocGxsX2ZyZXFdICogMTAwMDsKIH0KQEAgLTE2NywxMCArMTY1LDcgQEAgaW50IHZsdl9n ZXRfY2NrX2Nsb2NrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAl1MzIgdmFs OwogCWludCBkaXZpZGVyOwogCi0Jdmx2X2Nja19nZXQoZGV2X3ByaXYpOwogCXZhbCA9IHZsdl9j Y2tfcmVhZChkZXZfcHJpdiwgcmVnKTsKLQl2bHZfY2NrX3B1dChkZXZfcHJpdik7Ci0KIAlkaXZp ZGVyID0gdmFsICYgQ0NLX0ZSRVFVRU5DWV9WQUxVRVM7CiAKIAlXQVJOKCh2YWwgJiBDQ0tfRlJF UVVFTkNZX1NUQVRVUykgIT0KQEAgLTE4MywxMSArMTc4LDE4IEBAIGludCB2bHZfZ2V0X2Nja19j bG9jayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiBpbnQgdmx2X2dldF9jY2tf Y2xvY2tfaHBsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkgICBjb25z dCBjaGFyICpuYW1lLCB1MzIgcmVnKQogeworCWludCBocGxsOworCisJdmx2X2Nja19nZXQoZGV2 X3ByaXYpOworCiAJaWYgKGRldl9wcml2LT5ocGxsX2ZyZXEgPT0gMCkKIAkJZGV2X3ByaXYtPmhw bGxfZnJlcSA9IHZsdl9nZXRfaHBsbF92Y28oZGV2X3ByaXYpOwogCi0JcmV0dXJuIHZsdl9nZXRf Y2NrX2Nsb2NrKGRldl9wcml2LCBuYW1lLCByZWcsCi0JCQkJIGRldl9wcml2LT5ocGxsX2ZyZXEp OworCWhwbGwgPSB2bHZfZ2V0X2Nja19jbG9jayhkZXZfcHJpdiwgbmFtZSwgcmVnLCBkZXZfcHJp di0+aHBsbF9mcmVxKTsKKworCXZsdl9jY2tfcHV0KGRldl9wcml2KTsKKworCXJldHVybiBocGxs OwogfQogCiBzdGF0aWMgdm9pZCBpbnRlbF91cGRhdGVfY3pjbGsoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKaW5kZXggNmMyZjQxNmI5NWE2 Li45ZGIzOWVhOWJkODMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bt LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtMzE4LDYgKzMxOCw3 IEBAIHN0YXRpYyB2b2lkIGNodl9zZXRfbWVtb3J5X2R2ZnMoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LCBib29sIGVuYWJsZSkKIAl1MzIgdmFsOwogCiAJbXV0ZXhfbG9jaygmZGV2 X3ByaXYtPnBjdV9sb2NrKTsKKwl2bHZfcHVuaXRfZ2V0KGRldl9wcml2KTsKIAogCXZhbCA9IHZs dl9wdW5pdF9yZWFkKGRldl9wcml2LCBQVU5JVF9SRUdfRERSX1NFVFVQMik7CiAJaWYgKGVuYWJs ZSkKQEAgLTMzMiw2ICszMzMsNyBAQCBzdGF0aWMgdm9pZCBjaHZfc2V0X21lbW9yeV9kdmZzKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgYm9vbCBlbmFibGUpCiAJCSAgICAgIEZP UkNFX0REUl9GUkVRX1JFUV9BQ0spID09IDAsIDMpKQogCQlEUk1fRVJST1IoInRpbWVkIG91dCB3 YWl0aW5nIGZvciBQdW5pdCBERFIgRFZGUyByZXF1ZXN0XG4iKTsKIAorCXZsdl9wdW5pdF9wdXQo ZGV2X3ByaXYpOwogCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKIH0KIApAQCAt MzQwLDYgKzM0Miw3IEBAIHN0YXRpYyB2b2lkIGNodl9zZXRfbWVtb3J5X3BtNShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wgZW5hYmxlKQogCXUzMiB2YWw7CiAKIAltdXRl eF9sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOworCXZsdl9wdW5pdF9nZXQoZGV2X3ByaXYpOwog CiAJdmFsID0gdmx2X3B1bml0X3JlYWQoZGV2X3ByaXYsIFBVTklUX1JFR19EU1BTU1BNKTsKIAlp ZiAoZW5hYmxlKQpAQCAtMzQ4LDYgKzM1MSw3IEBAIHN0YXRpYyB2b2lkIGNodl9zZXRfbWVtb3J5 X3BtNShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wgZW5hYmxlKQogCQl2 YWwgJj0gfkRTUF9NQVhGSUZPX1BNNV9FTkFCTEU7CiAJdmx2X3B1bml0X3dyaXRlKGRldl9wcml2 LCBQVU5JVF9SRUdfRFNQU1NQTSwgdmFsKTsKIAorCXZsdl9wdW5pdF9wdXQoZGV2X3ByaXYpOwog CW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKIH0KIApAQCAtNjE0MCw2ICs2MTQ0 LDcgQEAgdm9pZCB2bHZfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKIAogCWlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSkgewogCQltdXRleF9sb2Nr KCZkZXZfcHJpdi0+cGN1X2xvY2spOworCQl2bHZfcHVuaXRfZ2V0KGRldl9wcml2KTsKIAogCQl2 YWwgPSB2bHZfcHVuaXRfcmVhZChkZXZfcHJpdiwgUFVOSVRfUkVHX0RTUFNTUE0pOwogCQlpZiAo dmFsICYgRFNQX01BWEZJRk9fUE01X0VOQUJMRSkKQEAgLTYxNjksNiArNjE3NCw3IEBAIHZvaWQg dmx2X3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJ CQkJd20tPmxldmVsID0gVkxWX1dNX0xFVkVMX0REUl9EVkZTOwogCQl9CiAKKwkJdmx2X3B1bml0 X3B1dChkZXZfcHJpdik7CiAJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKIAl9 CiAKQEAgLTY3NDMsNyArNjc0OSw5IEBAIHN0YXRpYyBpbnQgdmFsbGV5dmlld19zZXRfcnBzKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTggdmFsKQogCUk5MTVfV1JJVEUoR0VO Nl9QTUlOVFJNU0ssIGdlbjZfcnBzX3BtX21hc2soZGV2X3ByaXYsIHZhbCkpOwogCiAJaWYgKHZh bCAhPSBkZXZfcHJpdi0+Z3RfcG0ucnBzLmN1cl9mcmVxKSB7CisJCXZsdl9wdW5pdF9nZXQoZGV2 X3ByaXYpOwogCQllcnIgPSB2bHZfcHVuaXRfd3JpdGUoZGV2X3ByaXYsIFBVTklUX1JFR19HUFVf RlJFUV9SRVEsIHZhbCk7CisJCXZsdl9wdW5pdF9wdXQoZGV2X3ByaXYpOwogCQlpZiAoZXJyKQog CQkJcmV0dXJuIGVycjsKIApAQCAtNzc1NSw2ICs3NzYzLDExIEBAIHN0YXRpYyB2b2lkIHZhbGxl eXZpZXdfaW5pdF9ndF9wb3dlcnNhdmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQogCiAJdmFsbGV5dmlld19zZXR1cF9wY3R4KGRldl9wcml2KTsKIAorCXZsdl9pb3NmX3NiX2dl dChkZXZfcHJpdiwKKwkJCUJJVChWTFZfSU9TRl9TQl9QVU5JVCkgfAorCQkJQklUKFZMVl9JT1NG X1NCX05DKSB8CisJCQlCSVQoVkxWX0lPU0ZfU0JfQ0NLKSk7CisKIAl2bHZfaW5pdF9ncGxsX3Jl Zl9mcmVxKGRldl9wcml2KTsKIAogCXZhbCA9IHZsdl9wdW5pdF9yZWFkKGRldl9wcml2LCBQVU5J VF9SRUdfR1BVX0ZSRVFfU1RTKTsKQEAgLTc3OTIsNiArNzgwNSwxMSBAQCBzdGF0aWMgdm9pZCB2 YWxsZXl2aWV3X2luaXRfZ3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIAlEUk1fREVCVUdfRFJJVkVSKCJtaW4gR1BVIGZyZXE6ICVkIE1IeiAoJXUpXG4iLAog CQkJIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBycHMtPm1pbl9mcmVxKSwKIAkJCSBycHMtPm1p bl9mcmVxKTsKKworCXZsdl9pb3NmX3NiX3B1dChkZXZfcHJpdiwKKwkJCUJJVChWTFZfSU9TRl9T Ql9QVU5JVCkgfAorCQkJQklUKFZMVl9JT1NGX1NCX05DKSB8CisJCQlCSVQoVkxWX0lPU0ZfU0Jf Q0NLKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNoZXJyeXZpZXdfaW5pdF9ndF9wb3dlcnNhdmUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQpAQCAtNzgwMSwxMSArNzgxOSwxNCBAQCBz dGF0aWMgdm9pZCBjaGVycnl2aWV3X2luaXRfZ3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKIAogCWNoZXJyeXZpZXdfc2V0dXBfcGN0eChkZXZfcHJpdik7CiAK Kwl2bHZfaW9zZl9zYl9nZXQoZGV2X3ByaXYsCisJCQlCSVQoVkxWX0lPU0ZfU0JfUFVOSVQpIHwK KwkJCUJJVChWTFZfSU9TRl9TQl9OQykgfAorCQkJQklUKFZMVl9JT1NGX1NCX0NDSykpOworCiAJ dmx2X2luaXRfZ3BsbF9yZWZfZnJlcShkZXZfcHJpdik7CiAKLQl2bHZfY2NrX2dldChkZXZfcHJp dik7CiAJdmFsID0gdmx2X2Nja19yZWFkKGRldl9wcml2LCBDQ0tfRlVTRV9SRUcpOwotCXZsdl9j Y2tfcHV0KGRldl9wcml2KTsKIAogCXN3aXRjaCAoKHZhbCA+PiAyKSAmIDB4NykgewogCWNhc2Ug MzoKQEAgLTc4MzgsNiArNzg1OSwxMSBAQCBzdGF0aWMgdm9pZCBjaGVycnl2aWV3X2luaXRfZ3Rf cG93ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJCSBpbnRlbF9n cHVfZnJlcShkZXZfcHJpdiwgcnBzLT5taW5fZnJlcSksCiAJCQkgcnBzLT5taW5fZnJlcSk7CiAK Kwl2bHZfaW9zZl9zYl9wdXQoZGV2X3ByaXYsCisJCQlCSVQoVkxWX0lPU0ZfU0JfUFVOSVQpIHwK KwkJCUJJVChWTFZfSU9TRl9TQl9OQykgfAorCQkJQklUKFZMVl9JT1NGX1NCX0NDSykpOworCiAJ V0FSTl9PTkNFKChycHMtPm1heF9mcmVxIHwgcnBzLT5lZmZpY2llbnRfZnJlcSB8IHJwcy0+cnAx X2ZyZXEgfAogCQkgICBycHMtPm1pbl9mcmVxKSAmIDEsCiAJCSAgIk9kZCBHUFUgZnJlcSB2YWx1 ZXNcbiIpOwpAQCAtNzkyNSwxMyArNzk1MSwxNSBAQCBzdGF0aWMgdm9pZCBjaGVycnl2aWV3X2Vu YWJsZV9ycHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkgICBHRU42X1JQ X0RPV05fSURMRV9BVkcpOwogCiAJLyogU2V0dGluZyBGaXhlZCBCaWFzICovCi0JdmFsID0gVkxW X09WRVJSSURFX0VOIHwKLQkJICBWTFZfU09DX1REUF9FTiB8Ci0JCSAgQ0hWX0JJQVNfQ1BVXzUw X1NPQ181MDsKKwl2bHZfcHVuaXRfZ2V0KGRldl9wcml2KTsKKworCXZhbCA9IFZMVl9PVkVSUklE RV9FTiB8IFZMVl9TT0NfVERQX0VOIHwgQ0hWX0JJQVNfQ1BVXzUwX1NPQ181MDsKIAl2bHZfcHVu aXRfd3JpdGUoZGV2X3ByaXYsIFZMVl9UVVJCT19TT0NfT1ZFUlJJREUsIHZhbCk7CiAKIAl2YWwg PSB2bHZfcHVuaXRfcmVhZChkZXZfcHJpdiwgUFVOSVRfUkVHX0dQVV9GUkVRX1NUUyk7CiAKKwl2 bHZfcHVuaXRfcHV0KGRldl9wcml2KTsKKwogCS8qIFJQUyBjb2RlIGFzc3VtZXMgR1BMTCBpcyB1 c2VkICovCiAJV0FSTl9PTkNFKCh2YWwgJiBHUExMRU5BQkxFKSA9PSAwLCAiR1BMTCBub3QgZW5h YmxlZFxuIik7CiAKQEAgLTgwMDgsMTQgKzgwMzYsMTYgQEAgc3RhdGljIHZvaWQgdmFsbGV5dmll d19lbmFibGVfcnBzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJICAgR0VO Nl9SUF9VUF9CVVNZX0FWRyB8CiAJCSAgIEdFTjZfUlBfRE9XTl9JRExFX0NPTlQpOwogCisJdmx2 X3B1bml0X2dldChkZXZfcHJpdik7CisKIAkvKiBTZXR0aW5nIEZpeGVkIEJpYXMgKi8KLQl2YWwg PSBWTFZfT1ZFUlJJREVfRU4gfAotCQkgIFZMVl9TT0NfVERQX0VOIHwKLQkJICBWTFZfQklBU19D UFVfMTI1X1NPQ184NzU7CisJdmFsID0gVkxWX09WRVJSSURFX0VOIHwgVkxWX1NPQ19URFBfRU4g fCBWTFZfQklBU19DUFVfMTI1X1NPQ184NzU7CiAJdmx2X3B1bml0X3dyaXRlKGRldl9wcml2LCBW TFZfVFVSQk9fU09DX09WRVJSSURFLCB2YWwpOwogCiAJdmFsID0gdmx2X3B1bml0X3JlYWQoZGV2 X3ByaXYsIFBVTklUX1JFR19HUFVfRlJFUV9TVFMpOwogCisJdmx2X3B1bml0X3B1dChkZXZfcHJp dik7CisKIAkvKiBSUFMgY29kZSBhc3N1bWVzIEdQTEwgaXMgdXNlZCAqLwogCVdBUk5fT05DRSgo dmFsICYgR1BMTEVOQUJMRSkgPT0gMCwgIkdQTEwgbm90IGVuYWJsZWRcbiIpOwogCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKaW5kZXggOWMxMjk0YzI5NTY2Li5hYzhiYzVi YWVmNDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0u YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKQEAgLTEyMTIs NiArMTIxMiw3IEBAIHN0YXRpYyB2b2lkIHZsdl9zZXRfcG93ZXJfd2VsbChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkgUFVOSVRfUFdSR1RfUFdSX0dBVEUocHdfaWR4KTsK IAogCW11dGV4X2xvY2soJmRldl9wcml2LT5wY3VfbG9jayk7CisJdmx2X3B1bml0X2dldChkZXZf cHJpdik7CiAKICNkZWZpbmUgQ09ORCBcCiAJKCh2bHZfcHVuaXRfcmVhZChkZXZfcHJpdiwgUFVO SVRfUkVHX1BXUkdUX1NUQVRVUykgJiBtYXNrKSA9PSBzdGF0ZSkKQEAgLTEyMzIsNiArMTIzMyw3 IEBAIHN0YXRpYyB2b2lkIHZsdl9zZXRfcG93ZXJfd2VsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCiAjdW5kZWYgQ09ORAogCiBvdXQ6CisJdmx2X3B1bml0X3B1dChkZXZfcHJp dik7CiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwogfQogCkBAIC0xMjYwLDYg KzEyNjIsNyBAQCBzdGF0aWMgYm9vbCB2bHZfcG93ZXJfd2VsbF9lbmFibGVkKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAljdHJsID0gUFVOSVRfUFdSR1RfUFdSX09OKHB3X2lk eCk7CiAKIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOworCXZsdl9wdW5pdF9nZXQo ZGV2X3ByaXYpOwogCiAJc3RhdGUgPSB2bHZfcHVuaXRfcmVhZChkZXZfcHJpdiwgUFVOSVRfUkVH X1BXUkdUX1NUQVRVUykgJiBtYXNrOwogCS8qCkBAIC0xMjc4LDYgKzEyODEsNyBAQCBzdGF0aWMg Ym9vbCB2bHZfcG93ZXJfd2VsbF9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKIAljdHJsID0gdmx2X3B1bml0X3JlYWQoZGV2X3ByaXYsIFBVTklUX1JFR19QV1JHVF9D VFJMKSAmIG1hc2s7CiAJV0FSTl9PTihjdHJsICE9IHN0YXRlKTsKIAorCXZsdl9wdW5pdF9wdXQo ZGV2X3ByaXYpOwogCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKIAogCXJldHVy biBlbmFibGVkOwpAQCAtMTc2NSw2ICsxNzY5LDcgQEAgc3RhdGljIGJvb2wgY2h2X3BpcGVfcG93 ZXJfd2VsbF9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAl1MzIg c3RhdGUsIGN0cmw7CiAKIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOworCXZsdl9w dW5pdF9nZXQoZGV2X3ByaXYpOwogCiAJc3RhdGUgPSB2bHZfcHVuaXRfcmVhZChkZXZfcHJpdiwg UFVOSVRfUkVHX0RTUFNTUE0pICYgRFBfU1NTX01BU0socGlwZSk7CiAJLyoKQEAgLTE3ODEsNiAr MTc4Niw3IEBAIHN0YXRpYyBib29sIGNodl9waXBlX3Bvd2VyX3dlbGxfZW5hYmxlZChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJY3RybCA9IHZsdl9wdW5pdF9yZWFkKGRldl9w cml2LCBQVU5JVF9SRUdfRFNQU1NQTSkgJiBEUF9TU0NfTUFTSyhwaXBlKTsKIAlXQVJOX09OKGN0 cmwgPDwgMTYgIT0gc3RhdGUpOwogCisJdmx2X3B1bml0X3B1dChkZXZfcHJpdik7CiAJbXV0ZXhf dW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwogCiAJcmV0dXJuIGVuYWJsZWQ7CkBAIC0xNzk3 LDYgKzE4MDMsNyBAQCBzdGF0aWMgdm9pZCBjaHZfc2V0X3BpcGVfcG93ZXJfd2VsbChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJc3RhdGUgPSBlbmFibGUgPyBEUF9TU1NfUFdS X09OKHBpcGUpIDogRFBfU1NTX1BXUl9HQVRFKHBpcGUpOwogCiAJbXV0ZXhfbG9jaygmZGV2X3By aXYtPnBjdV9sb2NrKTsKKwl2bHZfcHVuaXRfZ2V0KGRldl9wcml2KTsKIAogI2RlZmluZSBDT05E IFwKIAkoKHZsdl9wdW5pdF9yZWFkKGRldl9wcml2LCBQVU5JVF9SRUdfRFNQU1NQTSkgJiBEUF9T U1NfTUFTSyhwaXBlKSkgPT0gc3RhdGUpCkBAIC0xODE3LDYgKzE4MjQsNyBAQCBzdGF0aWMgdm9p ZCBjaHZfc2V0X3BpcGVfcG93ZXJfd2VsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCiAjdW5kZWYgQ09ORAogCiBvdXQ6CisJdmx2X3B1bml0X3B1dChkZXZfcHJpdik7CiAJbXV0 ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwogfQogCkBAIC00MDEyLDcgKzQwMjAsOSBA QCBzdGF0aWMgYm9vbCB2bHZfcHVuaXRfaXNfcG93ZXJfZ2F0ZWQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCB1MzIgcmVnMAogCWJvb2wgcmV0OwogCiAJbXV0ZXhfbG9jaygmZGV2 X3ByaXYtPnBjdV9sb2NrKTsKKwl2bHZfcHVuaXRfZ2V0KGRldl9wcml2KTsKIAlyZXQgPSAodmx2 X3B1bml0X3JlYWQoZGV2X3ByaXYsIHJlZzApICYgU1NQTTBfU1NDX01BU0spID09IFNTUE0wX1NT Q19QV1JfR0FURTsKKwl2bHZfcHVuaXRfcHV0KGRldl9wcml2KTsKIAltdXRleF91bmxvY2soJmRl dl9wcml2LT5wY3VfbG9jayk7CiAKIAlyZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfc2lkZWJhbmQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3NpZGViYW5kLmMKaW5kZXggYjJmYzYwNWUyZTI5Li43YzMzOTI1ZjUyZjkgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3NpZGViYW5kLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfc2lkZWJhbmQuYwpAQCAtMTQ1LDMwICsxNDUsMTggQEAgdTMyIHZsdl9w dW5pdF9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1MzIgYWRkcikKIAogCWxv Y2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPnBjdV9sb2NrKTsKIAotCXZsdl9wdW5pdF9nZXQoaTkx NSk7Ci0KIAl2bHZfc2lkZWJhbmRfcncoaTkxNSwgUENJX0RFVkZOKDAsIDApLCBJT1NGX1BPUlRf UFVOSVQsCiAJCQlTQl9DUlJEREFfTlAsIGFkZHIsICZ2YWwpOwogCi0Jdmx2X3B1bml0X3B1dChp OTE1KTsKLQogCXJldHVybiB2YWw7CiB9CiAKIGludCB2bHZfcHVuaXRfd3JpdGUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUsIHUzMiBhZGRyLCB1MzIgdmFsKQogewotCWludCBlcnI7Ci0K IAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5wY3VfbG9jayk7CiAKLQl2bHZfcHVuaXRfZ2V0 KGk5MTUpOwotCi0JZXJyID0gdmx2X3NpZGViYW5kX3J3KGk5MTUsIFBDSV9ERVZGTigwLCAwKSwg SU9TRl9QT1JUX1BVTklULAotCQkJICAgICAgU0JfQ1JXUkRBX05QLCBhZGRyLCAmdmFsKTsKLQot CXZsdl9wdW5pdF9wdXQoaTkxNSk7Ci0KLQlyZXR1cm4gZXJyOworCXJldHVybiB2bHZfc2lkZWJh bmRfcncoaTkxNSwgUENJX0RFVkZOKDAsIDApLCBJT1NGX1BPUlRfUFVOSVQsCisJCQkgICAgICAg U0JfQ1JXUkRBX05QLCBhZGRyLCAmdmFsKTsKIH0KIAogdTMyIHZsdl9idW5pdF9yZWFkKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1MzIgcmVnKQpAQCAtMTkxLDEwICsxNzksOCBAQCB1 MzIgdmx2X25jX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHU4IGFkZHIpCiB7 CiAJdTMyIHZhbCA9IDA7CiAKLQl2bHZfbmNfZ2V0KGk5MTUpOwogCXZsdl9zaWRlYmFuZF9ydyhp OTE1LCBQQ0lfREVWRk4oMCwgMCksIElPU0ZfUE9SVF9OQywKIAkJCVNCX0NSUkREQV9OUCwgYWRk ciwgJnZhbCk7Ci0Jdmx2X25jX3B1dChpOTE1KTsKIAogCXJldHVybiB2YWw7CiB9Ci0tIAoyLjIw LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==