From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shawn Guo Subject: [PATCH v3 01/23] drm: add vblank hooks to struct drm_crtc_funcs Date: Tue, 7 Feb 2017 17:16:13 +0800 Message-ID: <1486458995-31018-2-git-send-email-shawnguo@kernel.org> References: <1486458995-31018-1-git-send-email-shawnguo@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7E0356E03C for ; Tue, 7 Feb 2017 09:17:24 +0000 (UTC) In-Reply-To: <1486458995-31018-1-git-send-email-shawnguo@kernel.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: Neil Armstrong , Liviu Dudau , Laurent Pinchart , Daniel Vetter , Marek Vasut , Alexey Brodkin , Russell King , Xinliang Liu , Tomi Valkeinen , Mali DP Maintainers , Ben Skeggs , Jyri Sarha , dri-devel@lists.freedesktop.org, Maxime Ripard List-Id: dri-devel@lists.freedesktop.org RnJvbTogU2hhd24gR3VvIDxzaGF3bi5ndW9AbGluYXJvLm9yZz4KClRoZSB2YmxhbmsgaXMgbW9z dGx5IENSVEMgc3BlY2lmaWMgYW5kIGltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ1JUQwpkcml2ZXIu ICBMZXQncyBrZWVwIHRoZSB2YmxhbmsgaG9va3Mgc3RydWN0IGRybV9kcml2ZXIgZm9yIGxlZ2Fj eQpkcml2ZXJzLCBhbmQgYWRkIGNvcnJlc3BvbmRpbmcgaG9va3MgaW4gc3RydWN0IGRybV9jcnRj X2Z1bmNzLiAgVGhlc2UKaG9va3MgdGFrZSBzdHJ1Y3QgZHJtX2NydGMgcG9pbnRlciBhcyBhcmd1 bWVudCwgYW5kIHdpbGwgYmUgY2FsbGVkIGJ5CmNvcmUgdmJsYW5rIGhhbmRsaW5nIGNvZGUgZm9y IERSSVZFUl9NT0RFU0VUIGRyaXZlcnMuCgpUaGUgbmV3IGhvb2tzIGdldCBwbHVnZ2VkIGludG8g Y29yZSBieSBhZGRpbmcgd3JhcHBlciBmdW5jdGlvbnMgZm9yCnZibGFuayBoYW5kbGluZyBjb2Rl LiAgVGhlIC5nZXRfdmJsYW5rX2NvdW50ZXIgaG9vayBpcyBlZmZlY3RpdmVseQpvcHRpb25hbCwg YXMgd2UgcHJvdmlkZSBkcm1fdmJsYW5rX25vX2h3X2NvdW50ZXIoKSBhcyB0aGUgZGVmYXVsdApm YWxsYmFjayBpbiB0aGUgd3JhcHBlciBmdW5jdGlvbi4KClNpZ25lZC1vZmYtYnk6IFNoYXduIEd1 byA8c2hhd24uZ3VvQGxpbmFyby5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2RybV9pcnEuYyB8 IDUzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCiBpbmNs dWRlL2RybS9kcm1fY3J0Yy5oICAgIHwgNDQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiBpbmNsdWRlL2RybS9kcm1fZHJ2LmggICAgIHwgIDkgKysrKysrKysKIDMgZmls ZXMgY2hhbmdlZCwgMTAwIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2RybV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faXJxLmMK aW5kZXggZTA2Y2YxMWViYjRhLi42NDZiM2U1N2I5YWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1faXJxLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pcnEuYwpAQCAtODksNiAr ODksMjEgQEAgc3RhdGljIHZvaWQgc3RvcmVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHVuc2lnbmVkIGludCBwaXBlLAogCXdyaXRlX3NlcXVubG9jaygmdmJsYW5rLT5zZXFsb2NrKTsK IH0KIAorc3RhdGljIHUzMiBfX2dldF92YmxhbmtfY291bnRlcihzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSkKK3sKKwlpZiAoZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShk ZXYsIERSSVZFUl9NT0RFU0VUKSkgeworCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBkcm1fY3J0 Y19mcm9tX2luZGV4KGRldiwgcGlwZSk7CisKKwkJaWYgKGNydGMtPmZ1bmNzLT5nZXRfdmJsYW5r X2NvdW50ZXIpCisJCQlyZXR1cm4gY3J0Yy0+ZnVuY3MtPmdldF92YmxhbmtfY291bnRlcihjcnRj KTsKKwl9CisKKwlpZiAoZGV2LT5kcml2ZXItPmdldF92YmxhbmtfY291bnRlcikKKwkJcmV0dXJu IGRldi0+ZHJpdmVyLT5nZXRfdmJsYW5rX2NvdW50ZXIoZGV2LCBwaXBlKTsKKworCXJldHVybiBk cm1fdmJsYW5rX25vX2h3X2NvdW50ZXIoZGV2LCBwaXBlKTsKK30KKwogLyoKICAqIFJlc2V0IHRo ZSBzdG9yZWQgdGltZXN0YW1wIGZvciB0aGUgY3VycmVudCB2YmxhbmsgY291bnQgdG8gY29ycmVz cG9uZAogICogdG8gdGhlIGxhc3QgdmJsYW5rIG9jY3VycmVkLgpAQCAtMTEyLDkgKzEyNyw5IEBA IHN0YXRpYyB2b2lkIGRybV9yZXNldF92YmxhbmtfdGltZXN0YW1wKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHVuc2lnbmVkIGludCBwaXBlCiAJICogd2hlbiBkcm1fdmJsYW5rX2VuYWJsZSgpIGFw cGxpZXMgdGhlIGRpZmYKIAkgKi8KIAlkbyB7Ci0JCWN1cl92YmxhbmsgPSBkZXYtPmRyaXZlci0+ Z2V0X3ZibGFua19jb3VudGVyKGRldiwgcGlwZSk7CisJCWN1cl92YmxhbmsgPSBfX2dldF92Ymxh bmtfY291bnRlcihkZXYsIHBpcGUpOwogCQlyYyA9IGRybV9nZXRfbGFzdF92Ymx0aW1lc3RhbXAo ZGV2LCBwaXBlLCAmdF92YmxhbmssIDApOwotCX0gd2hpbGUgKGN1cl92YmxhbmsgIT0gZGV2LT5k cml2ZXItPmdldF92YmxhbmtfY291bnRlcihkZXYsIHBpcGUpICYmIC0tY291bnQgPiAwKTsKKwl9 IHdoaWxlIChjdXJfdmJsYW5rICE9IF9fZ2V0X3ZibGFua19jb3VudGVyKGRldiwgcGlwZSkgJiYg LS1jb3VudCA+IDApOwogCiAJLyoKIAkgKiBPbmx5IHJlaW5pdGlhbGl6ZSBjb3JyZXNwb25kaW5n IHZibGFuayB0aW1lc3RhbXAgaWYgaGlnaC1wcmVjaXNpb24gcXVlcnkKQEAgLTE2OCw5ICsxODMs OSBAQCBzdGF0aWMgdm9pZCBkcm1fdXBkYXRlX3ZibGFua19jb3VudChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSwKIAkgKiBjb3JyZXNwb25kaW5nIHZibGFuayB0aW1l c3RhbXAuCiAJICovCiAJZG8gewotCQljdXJfdmJsYW5rID0gZGV2LT5kcml2ZXItPmdldF92Ymxh bmtfY291bnRlcihkZXYsIHBpcGUpOworCQljdXJfdmJsYW5rID0gX19nZXRfdmJsYW5rX2NvdW50 ZXIoZGV2LCBwaXBlKTsKIAkJcmMgPSBkcm1fZ2V0X2xhc3RfdmJsdGltZXN0YW1wKGRldiwgcGlw ZSwgJnRfdmJsYW5rLCBmbGFncyk7Ci0JfSB3aGlsZSAoY3VyX3ZibGFuayAhPSBkZXYtPmRyaXZl ci0+Z2V0X3ZibGFua19jb3VudGVyKGRldiwgcGlwZSkgJiYgLS1jb3VudCA+IDApOworCX0gd2hp bGUgKGN1cl92YmxhbmsgIT0gX19nZXRfdmJsYW5rX2NvdW50ZXIoZGV2LCBwaXBlKSAmJiAtLWNv dW50ID4gMCk7CiAKIAlpZiAoZGV2LT5tYXhfdmJsYW5rX2NvdW50ICE9IDApIHsKIAkJLyogdHJ1 c3QgdGhlIGh3IGNvdW50ZXIgd2hlbiBpdCdzIGFyb3VuZCAqLwpAQCAtMjc1LDYgKzI5MCwyMCBA QCB1MzIgZHJtX2FjY3VyYXRlX3ZibGFua19jb3VudChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiB9 CiBFWFBPUlRfU1lNQk9MKGRybV9hY2N1cmF0ZV92YmxhbmtfY291bnQpOwogCitzdGF0aWMgdm9p ZCBfX2Rpc2FibGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBw aXBlKQoreworCWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX01PREVTRVQp KSB7CisJCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGRybV9jcnRjX2Zyb21faW5kZXgoZGV2LCBw aXBlKTsKKworCQlpZiAoY3J0Yy0+ZnVuY3MtPmRpc2FibGVfdmJsYW5rKSB7CisJCQljcnRjLT5m dW5jcy0+ZGlzYWJsZV92YmxhbmsoY3J0Yyk7CisJCQlyZXR1cm47CisJCX0KKwl9CisKKwlkZXYt PmRyaXZlci0+ZGlzYWJsZV92YmxhbmsoZGV2LCBwaXBlKTsKK30KKwogLyoKICAqIERpc2FibGUg dmJsYW5rIGlycSdzIG9uIGNydGMsIG1ha2Ugc3VyZSB0aGF0IGxhc3QgdmJsYW5rIGNvdW50CiAg KiBvZiBoYXJkd2FyZSBhbmQgY29ycmVzcG9uZGluZyBjb25zaXN0ZW50IHNvZnR3YXJlIHZibGFu ayBjb3VudGVyCkBAIC0yOTgsNyArMzI3LDcgQEAgc3RhdGljIHZvaWQgdmJsYW5rX2Rpc2FibGVf YW5kX3NhdmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpCiAJICog aGFyZHdhcmUgcG90ZW50aWFsbHkgcnVudGltZSBzdXNwZW5kZWQuCiAJICovCiAJaWYgKHZibGFu ay0+ZW5hYmxlZCkgewotCQlkZXYtPmRyaXZlci0+ZGlzYWJsZV92YmxhbmsoZGV2LCBwaXBlKTsK KwkJX19kaXNhYmxlX3ZibGFuayhkZXYsIHBpcGUpOwogCQl2YmxhbmstPmVuYWJsZWQgPSBmYWxz ZTsKIAl9CiAKQEAgLTEwMjcsNiArMTA1NiwxOCBAQCB2b2lkIGRybV9jcnRjX3NlbmRfdmJsYW5r X2V2ZW50KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2NydGNf c2VuZF92YmxhbmtfZXZlbnQpOwogCitzdGF0aWMgaW50IF9fZW5hYmxlX3ZibGFuayhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSkKK3sKKwlpZiAoZHJtX2NvcmVfY2hl Y2tfZmVhdHVyZShkZXYsIERSSVZFUl9NT0RFU0VUKSkgeworCQlzdHJ1Y3QgZHJtX2NydGMgKmNy dGMgPSBkcm1fY3J0Y19mcm9tX2luZGV4KGRldiwgcGlwZSk7CisKKwkJaWYgKGNydGMtPmZ1bmNz LT5lbmFibGVfdmJsYW5rKQorCQkJcmV0dXJuIGNydGMtPmZ1bmNzLT5lbmFibGVfdmJsYW5rKGNy dGMpOworCX0KKworCXJldHVybiBkZXYtPmRyaXZlci0+ZW5hYmxlX3ZibGFuayhkZXYsIHBpcGUp OworfQorCiAvKioKICAqIGRybV92YmxhbmtfZW5hYmxlIC0gZW5hYmxlIHRoZSB2YmxhbmsgaW50 ZXJydXB0IG9uIGEgQ1JUQwogICogQGRldjogRFJNIGRldmljZQpAQCAtMTA1Miw3ICsxMDkzLDcg QEAgc3RhdGljIGludCBkcm1fdmJsYW5rX2VuYWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1 bnNpZ25lZCBpbnQgcGlwZSkKIAkJICogdGltZXN0YW1wcy4gRmlsdGVyY29kZSBpbiBkcm1faGFu ZGxlX3ZibGFuaygpIHdpbGwKIAkJICogcHJldmVudCBkb3VibGUtYWNjb3VudGluZyBvZiBzYW1l IHZibGFuayBpbnRlcnZhbC4KIAkJICovCi0JCXJldCA9IGRldi0+ZHJpdmVyLT5lbmFibGVfdmJs YW5rKGRldiwgcGlwZSk7CisJCXJldCA9IF9fZW5hYmxlX3ZibGFuayhkZXYsIHBpcGUpOwogCQlE Uk1fREVCVUcoImVuYWJsaW5nIHZibGFuayBvbiBjcnRjICV1LCByZXQ6ICVkXG4iLCBwaXBlLCBy ZXQpOwogCQlpZiAocmV0KQogCQkJYXRvbWljX2RlYygmdmJsYW5rLT5yZWZjb3VudCk7CmRpZmYg LS1naXQgYS9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oIGIvaW5jbHVkZS9kcm0vZHJtX2NydGMuaApp bmRleCA4ZjBiMTk1ZTRhNTkuLjQzMjNhY2VmYTU5NiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0v ZHJtX2NydGMuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCkBAIC02MDEsNiArNjAxLDUw IEBAIHN0cnVjdCBkcm1fY3J0Y19mdW5jcyB7CiAJICovCiAJdm9pZCAoKmF0b21pY19wcmludF9z dGF0ZSkoc3RydWN0IGRybV9wcmludGVyICpwLAogCQkJCSAgIGNvbnN0IHN0cnVjdCBkcm1fY3J0 Y19zdGF0ZSAqc3RhdGUpOworCisJLyoqCisJICogQGdldF92YmxhbmtfY291bnRlcjoKKwkgKgor CSAqIERyaXZlciBjYWxsYmFjayBmb3IgZmV0Y2hpbmcgYSByYXcgaGFyZHdhcmUgdmJsYW5rIGNv dW50ZXIgZm9yIHRoZQorCSAqIENSVEMuIEl0J3MgbWVhbnQgdG8gYmUgdXNlZCBieSBuZXcgZHJp dmVycyBhcyB0aGUgcmVwbGFjZW1lbnQgb2YKKwkgKiAmZHJtX2RyaXZlci5nZXRfdmJsYW5rX2Nv dW50ZXIgaG9vay4KKwkgKgorCSAqIFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwuIElmIGEgZGV2 aWNlIGRvZXNuJ3QgaGF2ZSBhIGhhcmR3YXJlCisJICogY291bnRlciwgdGhlIGRyaXZlciBjYW4g c2ltcGx5IGxlYXZlIHRoZSBob29rIGFzIE5VTEwuIFRoZSBEUk0gY29yZQorCSAqIHdpbGwgYWNj b3VudCBmb3IgbWlzc2VkIHZibGFuayBldmVudHMgd2hpbGUgaW50ZXJydXB0cyB3aGVyZSBkaXNh YmxlZAorCSAqIGJhc2VkIG9uIHN5c3RlbSB0aW1lc3RhbXBzLgorCSAqCisJICogV3JhcGFyb3Vu ZCBoYW5kbGluZyBhbmQgbG9zcyBvZiBldmVudHMgZHVlIHRvIG1vZGVzZXR0aW5nIGlzIGRlYWx0 CisJICogd2l0aCBpbiB0aGUgRFJNIGNvcmUgY29kZSwgYXMgbG9uZyBhcyBkcml2ZXJzIGNhbGwK KwkgKiBkcm1fY3J0Y192Ymxhbmtfb2ZmKCkgYW5kIGRybV9jcnRjX3ZibGFua19vbigpIHdoZW4g ZGlzYWJsaW5nIG9yCisJICogZW5hYmxpbmcgYSBDUlRDLgorCSAqCisJICogUmV0dXJuczoKKwkg KgorCSAqIFJhdyB2YmxhbmsgY291bnRlciB2YWx1ZS4KKwkgKi8KKwl1MzIgKCpnZXRfdmJsYW5r X2NvdW50ZXIpKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7CisKKwkvKioKKwkgKiBAZW5hYmxlX3Zi bGFuazoKKwkgKgorCSAqIEVuYWJsZSB2YmxhbmsgaW50ZXJydXB0cyBmb3IgdGhlIENSVEMuIEl0 J3MgbWVhbnQgdG8gYmUgdXNlZCBieQorCSAqIG5ldyBkcml2ZXJzIGFzIHRoZSByZXBsYWNlbWVu dCBvZiAmZHJtX2RyaXZlci5lbmFibGVfdmJsYW5rIGhvb2suCisJICoKKwkgKiBSZXR1cm5zOgor CSAqCisJICogWmVybyBvbiBzdWNjZXNzLCBhcHByb3ByaWF0ZSBlcnJubyBpZiB0aGUgdmJsYW5r IGludGVycnVwdCBjYW5ub3QKKwkgKiBiZSBlbmFibGVkLgorCSAqLworCWludCAoKmVuYWJsZV92 YmxhbmspKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7CisKKwkvKioKKwkgKiBAZGlzYWJsZV92Ymxh bms6CisJICoKKwkgKiBEaXNhYmxlIHZibGFuayBpbnRlcnJ1cHRzIGZvciB0aGUgQ1JUQy4gSXQn cyBtZWFudCB0byBiZSB1c2VkIGJ5CisJICogbmV3IGRyaXZlcnMgYXMgdGhlIHJlcGxhY2VtZW50 IG9mICZkcm1fZHJpdmVyLmRpc2FibGVfdmJsYW5rIGhvb2suCisJICovCisJdm9pZCAoKmRpc2Fi bGVfdmJsYW5rKShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwogfTsKIAogLyoqCmRpZmYgLS1naXQg YS9pbmNsdWRlL2RybS9kcm1fZHJ2LmggYi9pbmNsdWRlL2RybS9kcm1fZHJ2LmgKaW5kZXggZjJj MDA0MGRkYzNhLi40MGFlODkxMDY1OTQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9kcnYu aAorKysgYi9pbmNsdWRlL2RybS9kcm1fZHJ2LmgKQEAgLTEzMCw2ICsxMzAsOSBAQCBzdHJ1Y3Qg ZHJtX2RyaXZlciB7CiAJICogZHJtX2NydGNfdmJsYW5rX29mZigpIGFuZCBkcm1fY3J0Y192Ymxh bmtfb24oKSB3aGVuIGRpc2FibGluZyBvcgogCSAqIGVuYWJsaW5nIGEgQ1JUQy4KIAkgKgorCSAq IFRoaXMgaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGJ5IG5ldyBkcml2ZXJz LgorCSAqIFVzZSAmZHJtX2NydGNfZnVuY3MuZ2V0X3ZibGFua19jb3VudGVyIGluc3RlYWQuCisJ ICoKIAkgKiBSZXR1cm5zOgogCSAqCiAJICogUmF3IHZibGFuayBjb3VudGVyIHZhbHVlLgpAQCAt MTQyLDYgKzE0NSw5IEBAIHN0cnVjdCBkcm1fZHJpdmVyIHsKIAkgKiBFbmFibGUgdmJsYW5rIGlu dGVycnVwdHMgZm9yIHRoZSBDUlRDIHNwZWNpZmllZCB3aXRoIHRoZSBwaXBlCiAJICogYXJndW1l bnQuCiAJICoKKwkgKiBUaGlzIGlzIGRlcHJlY2F0ZWQgYW5kIHNob3VsZCBub3QgYmUgdXNlZCBi eSBuZXcgZHJpdmVycy4KKwkgKiBVc2UgJmRybV9jcnRjX2Z1bmNzLmVuYWJsZV92YmxhbmsgaW5z dGVhZC4KKwkgKgogCSAqIFJldHVybnM6CiAJICoKIAkgKiBaZXJvIG9uIHN1Y2Nlc3MsIGFwcHJv cHJpYXRlIGVycm5vIGlmIHRoZSBnaXZlbiBAY3J0YydzIHZibGFuawpAQCAtMTU0LDYgKzE2MCw5 IEBAIHN0cnVjdCBkcm1fZHJpdmVyIHsKIAkgKgogCSAqIERpc2FibGUgdmJsYW5rIGludGVycnVw dHMgZm9yIHRoZSBDUlRDIHNwZWNpZmllZCB3aXRoIHRoZSBwaXBlCiAJICogYXJndW1lbnQuCisJ ICoKKwkgKiBUaGlzIGlzIGRlcHJlY2F0ZWQgYW5kIHNob3VsZCBub3QgYmUgdXNlZCBieSBuZXcg ZHJpdmVycy4KKwkgKiBVc2UgJmRybV9jcnRjX2Z1bmNzLmRpc2FibGVfdmJsYW5rIGluc3RlYWQu CiAJICovCiAJdm9pZCAoKmRpc2FibGVfdmJsYW5rKSAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dW5zaWduZWQgaW50IHBpcGUpOwogCi0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vZHJpLWRldmVsCg==