From: Eric Anholt Subject: [PATCH v2 2/7] drm/vc4: Switch DSI to the panel-bridge layer, and support bridges. Date: Thu, 11 May 2017 11:31:23 -0700 Message-ID: <20170511183128.25085-2-eric@anholt.net> References: <20170511183128.25085-1-eric@anholt.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from anholt.net (anholt.net [50.246.234.109]) by gabe.freedesktop.org (Postfix) with ESMTP id 975C16E59B for ; Thu, 11 May 2017 18:31:42 +0000 (UTC) In-Reply-To: <20170511183128.25085-1-eric@anholt.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, Boris Brezillon , Archit Taneja , Andrzej Hajda , Laurent Pinchart , CK Hu , Philipp Zabel , Yannick Fertre , Philippe Cornu Cc: linux-kernel@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org VGhlIG5ld2VyIHZlcnNpb24gb2YgdGhlIFJQaSBwYW5lbCBkcml2ZXIgaXMgZ29pbmcgdG8gYmUg YSBjb21iaW5hdGlvbgpvZiBhIGJyaWRnZSBhbmQgYSBwYW5lbCwgYnV0IHdlIHNob3VsZCBhbHNv IHN1cHBvcnQgcGFuZWxzIHdpdGhvdXQgYQpicmlkZ2UsIHNvIHRoZSBwYW5lbC1icmlkZ2UgbGF5 ZXIgbGV0cyB1cyBkbyB0aGF0IGNsZWFubHkuCgp2MjogRHJvcCAiZGV2IiBhcmd1bWVudC4KClNp Z25lZC1vZmYtYnk6IEVyaWMgQW5ob2x0IDxlcmljQGFuaG9sdC5uZXQ+CkFja2VkLWJ5OiBEYW5p ZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgotLS0KIGRyaXZlcnMvZ3B1L2RybS92 YzQvS2NvbmZpZyAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kc2kuYyB8IDE1 NCArKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hh bmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgMTM1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS92YzQvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS92YzQvS2NvbmZpZwpp bmRleCBiMTZhZWZlNGE4ZDMuLjQzNjFiZGNmZDI4YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3ZjNC9LY29uZmlnCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92YzQvS2NvbmZpZwpAQCAtNyw3 ICs3LDcgQEAgY29uZmlnIERSTV9WQzQKIAlzZWxlY3QgRFJNX0tNU19IRUxQRVIKIAlzZWxlY3Qg RFJNX0tNU19DTUFfSEVMUEVSCiAJc2VsZWN0IERSTV9HRU1fQ01BX0hFTFBFUgotCXNlbGVjdCBE Uk1fUEFORUwKKwlzZWxlY3QgRFJNX1BBTkVMX0JSSURHRQogCXNlbGVjdCBTTkRfUENNCiAJc2Vs ZWN0IFNORF9QQ01fRUxECiAJc2VsZWN0IFNORF9TT0NfR0VORVJJQ19ETUFFTkdJTkVfUENNCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kc2kuYyBiL2RyaXZlcnMvZ3B1L2Ry bS92YzQvdmM0X2RzaS5jCmluZGV4IGRlYmE2MjAwOGZkMC4uZmI1NGE5ZDEwMzYwIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kc2kuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v dmM0L3ZjNF9kc2kuYwpAQCAtNTAzLDggKzUwMyw4IEBAIHN0cnVjdCB2YzRfZHNpIHsKIAogCXN0 cnVjdCBtaXBpX2RzaV9ob3N0IGRzaV9ob3N0OwogCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rl cjsKLQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwotCXN0cnVjdCBkcm1fcGFuZWwg KnBhbmVsOworCXN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2U7CisJYm9vbCBpc19wYW5lbF9icmlk Z2U7CiAKIAl2b2lkIF9faW9tZW0gKnJlZ3M7CiAKQEAgLTYwNCwxOCArNjA0LDYgQEAgdG9fdmM0 X2RzaV9lbmNvZGVyKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIAlyZXR1cm4gY29udGFp bmVyX29mKGVuY29kZXIsIHN0cnVjdCB2YzRfZHNpX2VuY29kZXIsIGJhc2UuYmFzZSk7CiB9CiAK LS8qIFZDNCBEU0kgY29ubmVjdG9yIEtNUyBzdHJ1Y3QgKi8KLXN0cnVjdCB2YzRfZHNpX2Nvbm5l Y3RvciB7Ci0Jc3RydWN0IGRybV9jb25uZWN0b3IgYmFzZTsKLQlzdHJ1Y3QgdmM0X2RzaSAqZHNp OwotfTsKLQotc3RhdGljIGlubGluZSBzdHJ1Y3QgdmM0X2RzaV9jb25uZWN0b3IgKgotdG9fdmM0 X2RzaV9jb25uZWN0b3Ioc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKLXsKLQlyZXR1 cm4gY29udGFpbmVyX29mKGNvbm5lY3Rvciwgc3RydWN0IHZjNF9kc2lfY29ubmVjdG9yLCBiYXNl KTsKLX0KLQogI2RlZmluZSBEU0lfUkVHKHJlZykgeyByZWcsICNyZWcgfQogc3RhdGljIGNvbnN0 IHN0cnVjdCB7CiAJdTMyIHJlZzsKQEAgLTcyMyw3OSArNzExLDYgQEAgaW50IHZjNF9kc2lfZGVi dWdmc19yZWdzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogfQogI2VuZGlmCiAK LXN0YXRpYyBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzCi12YzRfZHNpX2Nvbm5lY3Rvcl9kZXRl Y3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkKLXsKLQlzdHJ1 Y3QgdmM0X2RzaV9jb25uZWN0b3IgKnZjNF9jb25uZWN0b3IgPQotCQl0b192YzRfZHNpX2Nvbm5l Y3Rvcihjb25uZWN0b3IpOwotCXN0cnVjdCB2YzRfZHNpICpkc2kgPSB2YzRfY29ubmVjdG9yLT5k c2k7Ci0KLQlpZiAoZHNpLT5wYW5lbCkKLQkJcmV0dXJuIGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVj dGVkOwotCWVsc2UKLQkJcmV0dXJuIGNvbm5lY3Rvcl9zdGF0dXNfZGlzY29ubmVjdGVkOwotfQot Ci1zdGF0aWMgdm9pZCB2YzRfZHNpX2Nvbm5lY3Rvcl9kZXN0cm95KHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IpCi17Ci0JZHJtX2Nvbm5lY3Rvcl91bnJlZ2lzdGVyKGNvbm5lY3Rvcik7 Ci0JZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwKGNvbm5lY3Rvcik7Ci19Ci0KLXN0YXRpYyBpbnQgdmM0 X2RzaV9jb25uZWN0b3JfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Ip Ci17Ci0Jc3RydWN0IHZjNF9kc2lfY29ubmVjdG9yICp2YzRfY29ubmVjdG9yID0KLQkJdG9fdmM0 X2RzaV9jb25uZWN0b3IoY29ubmVjdG9yKTsKLQlzdHJ1Y3QgdmM0X2RzaSAqZHNpID0gdmM0X2Nv bm5lY3Rvci0+ZHNpOwotCi0JaWYgKGRzaS0+cGFuZWwpCi0JCXJldHVybiBkcm1fcGFuZWxfZ2V0 X21vZGVzKGRzaS0+cGFuZWwpOwotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyB2YzRfZHNpX2Nvbm5lY3Rvcl9mdW5jcyA9IHsKLQkuZHBt cyA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kcG1zLAotCS5kZXRlY3QgPSB2YzRfZHNp X2Nvbm5lY3Rvcl9kZXRlY3QsCi0JLmZpbGxfbW9kZXMgPSBkcm1faGVscGVyX3Byb2JlX3Npbmds ZV9jb25uZWN0b3JfbW9kZXMsCi0JLmRlc3Ryb3kgPSB2YzRfZHNpX2Nvbm5lY3Rvcl9kZXN0cm95 LAotCS5yZXNldCA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9yZXNldCwKLQkuYXRvbWlj X2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNhdGVf c3RhdGUsCi0JLmF0b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVj dG9yX2Rlc3Ryb3lfc3RhdGUsCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0 b3JfaGVscGVyX2Z1bmNzIHZjNF9kc2lfY29ubmVjdG9yX2hlbHBlcl9mdW5jcyA9IHsKLQkuZ2V0 X21vZGVzID0gdmM0X2RzaV9jb25uZWN0b3JfZ2V0X21vZGVzLAotfTsKLQotc3RhdGljIHN0cnVj dCBkcm1fY29ubmVjdG9yICp2YzRfZHNpX2Nvbm5lY3Rvcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCi0JCQkJCQkgICAgc3RydWN0IHZjNF9kc2kgKmRzaSkKLXsKLQlzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yOwotCXN0cnVjdCB2YzRfZHNpX2Nvbm5lY3RvciAqZHNpX2Nvbm5l Y3RvcjsKLQotCWRzaV9jb25uZWN0b3IgPSBkZXZtX2t6YWxsb2MoZGV2LT5kZXYsIHNpemVvZigq ZHNpX2Nvbm5lY3RvciksCi0JCQkJICAgICBHRlBfS0VSTkVMKTsKLQlpZiAoIWRzaV9jb25uZWN0 b3IpCi0JCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwotCi0JY29ubmVjdG9yID0gJmRzaV9jb25u ZWN0b3ItPmJhc2U7Ci0KLQlkc2lfY29ubmVjdG9yLT5kc2kgPSBkc2k7Ci0KLQlkcm1fY29ubmVj dG9yX2luaXQoZGV2LCBjb25uZWN0b3IsICZ2YzRfZHNpX2Nvbm5lY3Rvcl9mdW5jcywKLQkJCSAg IERSTV9NT0RFX0NPTk5FQ1RPUl9EU0kpOwotCWRybV9jb25uZWN0b3JfaGVscGVyX2FkZChjb25u ZWN0b3IsICZ2YzRfZHNpX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MpOwotCi0JY29ubmVjdG9yLT5w b2xsZWQgPSAwOwotCWNvbm5lY3Rvci0+aW50ZXJsYWNlX2FsbG93ZWQgPSAwOwotCWNvbm5lY3Rv ci0+ZG91Ymxlc2Nhbl9hbGxvd2VkID0gMDsKLQotCWRybV9tb2RlX2Nvbm5lY3Rvcl9hdHRhY2hf ZW5jb2Rlcihjb25uZWN0b3IsIGRzaS0+ZW5jb2Rlcik7Ci0KLQlyZXR1cm4gY29ubmVjdG9yOwot fQotCiBzdGF0aWMgdm9pZCB2YzRfZHNpX2VuY29kZXJfZGVzdHJveShzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuY29kZXIpCiB7CiAJZHJtX2VuY29kZXJfY2xlYW51cChlbmNvZGVyKTsKQEAgLTg5Mywx MiArODA4LDggQEAgc3RhdGljIHZvaWQgdmM0X2RzaV9lbmNvZGVyX2Rpc2FibGUoc3RydWN0IGRy bV9lbmNvZGVyICplbmNvZGVyKQogCXN0cnVjdCB2YzRfZHNpICpkc2kgPSB2YzRfZW5jb2Rlci0+ ZHNpOwogCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZkc2ktPnBkZXYtPmRldjsKIAotCWRybV9wYW5l bF9kaXNhYmxlKGRzaS0+cGFuZWwpOwotCiAJdmM0X2RzaV91bHBzKGRzaSwgdHJ1ZSk7CiAKLQlk cm1fcGFuZWxfdW5wcmVwYXJlKGRzaS0+cGFuZWwpOwotCiAJY2xrX2Rpc2FibGVfdW5wcmVwYXJl KGRzaS0+cGxsX3BoeV9jbG9jayk7CiAJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRzaS0+ZXNjYXBl X2Nsb2NrKTsKIAljbGtfZGlzYWJsZV91bnByZXBhcmUoZHNpLT5waXhlbF9jbG9jayk7CkBAIC05 MjksMTIgKzg0MCw2IEBAIHN0YXRpYyB2b2lkIHZjNF9kc2lfZW5jb2Rlcl9lbmFibGUoc3RydWN0 IGRybV9lbmNvZGVyICplbmNvZGVyKQogCQlyZXR1cm47CiAJfQogCi0JcmV0ID0gZHJtX3BhbmVs X3ByZXBhcmUoZHNpLT5wYW5lbCk7Ci0JaWYgKHJldCkgewotCQlEUk1fRVJST1IoIlBhbmVsIGZh aWxlZCB0byBwcmVwYXJlXG4iKTsKLQkJcmV0dXJuOwotCX0KLQogCWlmIChkZWJ1Z19kdW1wX3Jl Z3MpIHsKIAkJRFJNX0lORk8oIkRTSSByZWdzIGJlZm9yZTpcbiIpOwogCQl2YzRfZHNpX2R1bXBf cmVncyhkc2kpOwpAQCAtMTE4NCwxMyArMTA4OSw2IEBAIHN0YXRpYyB2b2lkIHZjNF9kc2lfZW5j b2Rlcl9lbmFibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQogCQlEUk1fSU5GTygiRFNJ IHJlZ3MgYWZ0ZXI6XG4iKTsKIAkJdmM0X2RzaV9kdW1wX3JlZ3MoZHNpKTsKIAl9Ci0KLQlyZXQg PSBkcm1fcGFuZWxfZW5hYmxlKGRzaS0+cGFuZWwpOwotCWlmIChyZXQpIHsKLQkJRFJNX0VSUk9S KCJQYW5lbCBmYWlsZWQgdG8gZW5hYmxlXG4iKTsKLQkJZHJtX3BhbmVsX3VucHJlcGFyZShkc2kt PnBhbmVsKTsKLQkJcmV0dXJuOwotCX0KIH0KIAogc3RhdGljIHNzaXplX3QgdmM0X2RzaV9ob3N0 X3RyYW5zZmVyKHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0LApAQCAtMTM2NiwxNyArMTI2NCwy MiBAQCBzdGF0aWMgaW50IHZjNF9kc2lfaG9zdF9hdHRhY2goc3RydWN0IG1pcGlfZHNpX2hvc3Qg Kmhvc3QsCiAJCXJldHVybiAwOwogCX0KIAotCWRzaS0+cGFuZWwgPSBvZl9kcm1fZmluZF9wYW5l bChkZXZpY2UtPmRldi5vZl9ub2RlKTsKLQlpZiAoIWRzaS0+cGFuZWwpCi0JCXJldHVybiAwOwot Ci0JcmV0ID0gZHJtX3BhbmVsX2F0dGFjaChkc2ktPnBhbmVsLCBkc2ktPmNvbm5lY3Rvcik7Ci0J aWYgKHJldCAhPSAwKQotCQlyZXR1cm4gcmV0OworCWRzaS0+YnJpZGdlID0gb2ZfZHJtX2ZpbmRf YnJpZGdlKGRldmljZS0+ZGV2Lm9mX25vZGUpOworCWlmICghZHNpLT5icmlkZ2UpIHsKKwkJc3Ry dWN0IGRybV9wYW5lbCAqcGFuZWwgPQorCQkJb2ZfZHJtX2ZpbmRfcGFuZWwoZGV2aWNlLT5kZXYu b2Zfbm9kZSk7CiAKLQlkcm1faGVscGVyX2hwZF9pcnFfZXZlbnQoZHNpLT5jb25uZWN0b3ItPmRl dik7CisJCWRzaS0+YnJpZGdlID0gZHJtX3BhbmVsX2JyaWRnZV9hZGQocGFuZWwsCisJCQkJCQkg ICBEUk1fTU9ERV9DT05ORUNUT1JfRFNJKTsKKwkJaWYgKElTX0VSUihkc2ktPmJyaWRnZSkpIHsK KwkJCXJldCA9IFBUUl9FUlIoZHNpLT5icmlkZ2UpOworCQkJZHNpLT5icmlkZ2UgPSBOVUxMOwor CQkJcmV0dXJuIHJldDsKKwkJfQorCQlkc2ktPmlzX3BhbmVsX2JyaWRnZSA9IHRydWU7CisJfQog Ci0JcmV0dXJuIDA7CisJcmV0dXJuIGRybV9icmlkZ2VfYXR0YWNoKGRzaS0+ZW5jb2RlciwgZHNp LT5icmlkZ2UsIE5VTEwpOwogfQogCiBzdGF0aWMgaW50IHZjNF9kc2lfaG9zdF9kZXRhY2goc3Ry dWN0IG1pcGlfZHNpX2hvc3QgKmhvc3QsCkBAIC0xMzg0LDE1ICsxMjg3LDkgQEAgc3RhdGljIGlu dCB2YzRfZHNpX2hvc3RfZGV0YWNoKHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0LAogewogCXN0 cnVjdCB2YzRfZHNpICpkc2kgPSBob3N0X3RvX2RzaShob3N0KTsKIAotCWlmIChkc2ktPnBhbmVs KSB7Ci0JCWludCByZXQgPSBkcm1fcGFuZWxfZGV0YWNoKGRzaS0+cGFuZWwpOwotCi0JCWlmIChy ZXQpCi0JCQlyZXR1cm4gcmV0OwotCi0JCWRzaS0+cGFuZWwgPSBOVUxMOwotCi0JCWRybV9oZWxw ZXJfaHBkX2lycV9ldmVudChkc2ktPmNvbm5lY3Rvci0+ZGV2KTsKKwlpZiAoZHNpLT5pc19wYW5l bF9icmlkZ2UpIHsKKwkJZHJtX3BhbmVsX2JyaWRnZV9yZW1vdmUoZHNpLT5icmlkZ2UpOworCQlk c2ktPmJyaWRnZSA9IE5VTEw7CiAJfQogCiAJcmV0dXJuIDA7CkBAIC0xNjU4LDEyICsxNTU1LDYg QEAgc3RhdGljIGludCB2YzRfZHNpX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2 aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEpCiAJCQkgRFJNX01PREVfRU5DT0RFUl9EU0ksIE5VTEwp OwogCWRybV9lbmNvZGVyX2hlbHBlcl9hZGQoZHNpLT5lbmNvZGVyLCAmdmM0X2RzaV9lbmNvZGVy X2hlbHBlcl9mdW5jcyk7CiAKLQlkc2ktPmNvbm5lY3RvciA9IHZjNF9kc2lfY29ubmVjdG9yX2lu aXQoZHJtLCBkc2kpOwotCWlmIChJU19FUlIoZHNpLT5jb25uZWN0b3IpKSB7Ci0JCXJldCA9IFBU Ul9FUlIoZHNpLT5jb25uZWN0b3IpOwotCQlnb3RvIGVycl9kZXN0cm95X2VuY29kZXI7Ci0JfQot CiAJZHNpLT5kc2lfaG9zdC5vcHMgPSAmdmM0X2RzaV9ob3N0X29wczsKIAlkc2ktPmRzaV9ob3N0 LmRldiA9IGRldjsKIApAQCAtMTY3NCwxMSArMTU2NSw2IEBAIHN0YXRpYyBpbnQgdmM0X2RzaV9i aW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLCB2b2lkICpkYXRh KQogCXBtX3J1bnRpbWVfZW5hYmxlKGRldik7CiAKIAlyZXR1cm4gMDsKLQotZXJyX2Rlc3Ryb3lf ZW5jb2RlcjoKLQl2YzRfZHNpX2VuY29kZXJfZGVzdHJveShkc2ktPmVuY29kZXIpOwotCi0JcmV0 dXJuIHJldDsKIH0KIAogc3RhdGljIHZvaWQgdmM0X2RzaV91bmJpbmQoc3RydWN0IGRldmljZSAq ZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsCkBAIC0xNjkwLDcgKzE1NzYsNyBAQCBzdGF0aWMg dm9pZCB2YzRfZHNpX3VuYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1h c3RlciwKIAogCXBtX3J1bnRpbWVfZGlzYWJsZShkZXYpOwogCi0JdmM0X2RzaV9jb25uZWN0b3Jf ZGVzdHJveShkc2ktPmNvbm5lY3Rvcik7CisJZHJtX2JyaWRnZV9yZW1vdmUoZHNpLT5icmlkZ2Up OwogCXZjNF9kc2lfZW5jb2Rlcl9kZXN0cm95KGRzaS0+ZW5jb2Rlcik7CiAKIAltaXBpX2RzaV9o b3N0X3VucmVnaXN0ZXIoJmRzaS0+ZHNpX2hvc3QpOwotLSAKMi4xMS4wCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0 CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK