From mboxrd@z Thu Jan 1 00:00:00 1970 From: clinton.a.taylor@intel.com Subject: [PATCH] drm/i915/skl: SKL CDCLK change on modeset tracking VCO Date: Tue, 8 Dec 2015 16:15:05 -0800 Message-ID: <1449620105-32754-1-git-send-email-clinton.a.taylor@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 4DDA389D7B for ; Tue, 8 Dec 2015 16:18:16 -0800 (PST) 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 RnJvbTogQ2xpbnQgVGF5bG9yIDxjbGludG9uLmEudGF5bG9yQGludGVsLmNvbT4KClRyYWNrIFZD TyBmcmVxdWVuY3kgb2YgU0tMIGluc3RlYWQgb2YgdGhlIGJvb3QgQ0RDTEsgYW5kIGFsbG93IG1v ZGVzZXQKdG8gc2V0IGNkY2xrIGJhc2VkIG9uIHRoZSBtYXggcmVxdWlyZWQgcGl4ZWwgY2xvY2sg YmFzZWQgb24gVkNPCnNlbGVjdGVkLgoKU2lnbmVkLW9mZi1ieTogQ2xpbnQgVGF5bG9yIDxjbGlu dG9uLmEudGF5bG9yQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oICAgICAgfCAgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyAgICAg fCAgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAgIDgzICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwLmMgICAgICB8ICAgIDkgKysrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmggICAgIHwgICAgMSArCiA1IGZpbGVzIGNoYW5nZWQsIDgxIGluc2VydGlvbnMoKyksIDE2IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IGYxYThhNTMuLjNmZjVhYmQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMTc3Nyw3ICsxNzc3LDcgQEAgc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgewogCWludCBudW1fZmVuY2VfcmVnczsgLyogOCBvbiBwcmUtOTY1LCAx NiBvdGhlcndpc2UgKi8KIAogCXVuc2lnbmVkIGludCBmc2JfZnJlcSwgbWVtX2ZyZXEsIGlzX2Rk cjM7Ci0JdW5zaWduZWQgaW50IHNrbF9ib290X2NkY2xrOworCXVuc2lnbmVkIGludCBza2xfdmNv X2ZyZXE7CiAJdW5zaWduZWQgaW50IGNkY2xrX2ZyZXEsIG1heF9jZGNsa19mcmVxOwogCXVuc2ln bmVkIGludCBtYXhfZG90Y2xrX2ZyZXE7CiAJdW5zaWduZWQgaW50IGhwbGxfZnJlcTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGRpLmMKaW5kZXggNWQyMGM2NC4uYjc4N2QwMiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGRpLmMKQEAgLTMwMTksNyArMzAxOSw3IEBAIHZvaWQgaW50ZWxfZGRpX3BsbF9pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCWludCBjZGNsa19mcmVxOwogCiAJCWNkY2xrX2Zy ZXEgPSBkZXZfcHJpdi0+ZGlzcGxheS5nZXRfZGlzcGxheV9jbG9ja19zcGVlZChkZXYpOwotCQlk ZXZfcHJpdi0+c2tsX2Jvb3RfY2RjbGsgPSBjZGNsa19mcmVxOworCQlkZXZfcHJpdi0+c2tsX3Zj b19mcmVxID0gc2tsX2NkY2xrX2dldF92Y28oY2RjbGtfZnJlcSk7CiAJCWlmIChza2xfc2FuaXRp emVfY2RjbGsoZGV2X3ByaXYpKQogCQkJRFJNX0RFQlVHX0tNUygiU2FuaXRpemVkIGNkY2xrIHBy b2dyYW1tZWQgYnkgcHJlLW9zXG4iKTsKIAkJaWYgKCEoSTkxNV9SRUFEKExDUExMMV9DVEwpICYg TENQTExfUExMX0VOQUJMRSkpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXgg MmU4ZDFhOC4uODUyZGQwOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAt NTY3MSw3ICs1NjcxLDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBza2xfY2RjbGtfZGVjaW1hbCh1 bnNpZ25lZCBpbnQgZnJlcSkKIAlyZXR1cm4gKGZyZXEgLSAxMDAwKSAvIDUwMDsKIH0KIAotc3Rh dGljIHVuc2lnbmVkIGludCBza2xfY2RjbGtfZ2V0X3Zjbyh1bnNpZ25lZCBpbnQgZnJlcSkKK3Vu c2lnbmVkIGludCBza2xfY2RjbGtfZ2V0X3Zjbyh1bnNpZ25lZCBpbnQgZnJlcSkKIHsKIAl1bnNp Z25lZCBpbnQgaTsKIApAQCAtNTgyOSwxNyArNTgyOSwxNyBAQCB2b2lkIHNrbF91bmluaXRfY2Rj bGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCiB2b2lkIHNrbF9pbml0X2Nk Y2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQl1bnNpZ25lZCBpbnQg cmVxdWlyZWRfdmNvOwotCiAJLyogRFBMTDAgbm90IGVuYWJsZWQgKGhhcHBlbnMgb24gZWFybHkg QklPUyB2ZXJzaW9ucykgKi8KIAlpZiAoIShJOTE1X1JFQUQoTENQTEwxX0NUTCkgJiBMQ1BMTF9Q TExfRU5BQkxFKSkgewogCQkvKiBlbmFibGUgRFBMTDAgKi8KLQkJcmVxdWlyZWRfdmNvID0gc2ts X2NkY2xrX2dldF92Y28oZGV2X3ByaXYtPnNrbF9ib290X2NkY2xrKTsKLQkJc2tsX2RwbGwwX2Vu YWJsZShkZXZfcHJpdiwgcmVxdWlyZWRfdmNvKTsKKwkJaWYgKGRldl9wcml2LT5za2xfdmNvX2Zy ZXEgIT0gODY0MCkgeworCQkJZGV2X3ByaXYtPnNrbF92Y29fZnJlcSA9IDgxMDA7CisJCX0KKwkJ c2tsX2RwbGwwX2VuYWJsZShkZXZfcHJpdiwgZGV2X3ByaXYtPnNrbF92Y29fZnJlcSk7CiAJfQog CiAJLyogc2V0IENEQ0xLIHRvIHRoZSBmcmVxdWVuY3kgdGhlIEJJT1MgY2hvc2UgKi8KLQlza2xf c2V0X2NkY2xrKGRldl9wcml2LCBkZXZfcHJpdi0+c2tsX2Jvb3RfY2RjbGspOworCXNrbF9zZXRf Y2RjbGsoZGV2X3ByaXYsIChkZXZfcHJpdi0+c2tsX3Zjb19mcmVxID09IDgxMDApID8gMzM3NTAw IDogMzA4NTcwICk7CiAKIAkvKiBlbmFibGUgREJVRiBwb3dlciAqLwogCUk5MTVfV1JJVEUoREJV Rl9DVEwsIEk5MTVfUkVBRChEQlVGX0NUTCkgfCBEQlVGX1BPV0VSX1JFUVVFU1QpOwpAQCAtNTg1 NSw3ICs1ODU1LDcgQEAgaW50IHNrbF9zYW5pdGl6ZV9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCiB7CiAJdWludDMyX3QgbGNwbGwxID0gSTkxNV9SRUFEKExDUExMMV9D VEwpOwogCXVpbnQzMl90IGNkY3RsID0gSTkxNV9SRUFEKENEQ0xLX0NUTCk7Ci0JaW50IGZyZXEg PSBkZXZfcHJpdi0+c2tsX2Jvb3RfY2RjbGs7CisJaW50IGZyZXEgPSBkZXZfcHJpdi0+Y2RjbGtf ZnJlcTsKIAogCS8qCiAJICogY2hlY2sgaWYgdGhlIHByZS1vcyBpbnRpYWxpemVkIHRoZSBkaXNw bGF5CkBAIC01ODc5LDExICs1ODc5LDcgQEAgaW50IHNrbF9zYW5pdGl6ZV9jZGNsayhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCS8qIEFsbCB3ZWxsOyBub3RoaW5nIHRvIHNh bml0aXplICovCiAJCXJldHVybiBmYWxzZTsKIHNhbml0aXplOgotCS8qCi0JICogQXMgb2Ygbm93 IGluaXRpYWxpemUgd2l0aCBtYXggY2RjbGsgdGlsbAotCSAqIHdlIGdldCBkeW5hbWljIGNkY2xr IHN1cHBvcnQKLQkgKiAqLwotCWRldl9wcml2LT5za2xfYm9vdF9jZGNsayA9IGRldl9wcml2LT5t YXhfY2RjbGtfZnJlcTsKKwogCXNrbF9pbml0X2NkY2xrKGRldl9wcml2KTsKIAogCS8qIHdlIGRp ZCBoYXZlIHRvIHNhbml0aXplICovCkBAIC05ODA1LDYgKzk4MDEsNjQgQEAgc3RhdGljIHZvaWQg YnJvYWR3ZWxsX21vZGVzZXRfY29tbWl0X2NkY2xrKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpv bGRfc3RhdGUpCiAJYnJvYWR3ZWxsX3NldF9jZGNsayhkZXYsIHJlcV9jZGNsayk7CiB9CiAKK3N0 YXRpYyBpbnQgc2tsX21vZGVzZXRfY2FsY19jZGNsayhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq c3RhdGUpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShz dGF0ZS0+ZGV2KTsKKwlpbnQgbWF4X3BpeGNsayA9IGlsa19tYXhfcGl4ZWxfcmF0ZShzdGF0ZSk7 CisJaW50IGNkY2xrOworCQorCS8qCisJKiBGSVhNRSBzaG91bGQgYWxzbyBhY2NvdW50IGZvciBw bGFuZSByYXRpbworCSogb25jZSA2NGJwcCBwaXhlbCBmb3JtYXRzIGFyZSBzdXBwb3J0ZWQuCisJ Ki8KKworCWlmIChkZXZfcHJpdi0+c2tsX3Zjb19mcmVxID09IDg2NDApIHsKKwkJLyogdmNvIDg2 NDAgKi8KKwkJaWYgKG1heF9waXhjbGsgPiA1NDAwMDApCisJCQljZGNsayA9IDYxNzE0MDsKKwkJ ZWxzZSBpZiAobWF4X3BpeGNsayA+IDQzMjAwMCkKKwkJCWNkY2xrID0gNTQwMDAwOworCQllbHNl IGlmIChtYXhfcGl4Y2xrID4gMzA4NTcwKQorCQkJY2RjbGsgPSA0MzIwMDA7CisJCWVsc2UKKwkJ CWNkY2xrID0gMzA4NTcwOworCX0KKwllbHNlIHsKKwkJLyogVkNPIDgxMDAgKi8KKwkJaWYgKG1h eF9waXhjbGsgPiA1NDAwMDApCisJCQljZGNsayA9IDY3NTAwMDsKKwkJZWxzZSBpZiAobWF4X3Bp eGNsayA+IDQ1MDAwMCkKKwkJCWNkY2xrID0gNTQwMDAwOworCQllbHNlIGlmIChtYXhfcGl4Y2xr ID4gMzM3NTAwKQorCQkJY2RjbGsgPSA0NTAwMDA7CisJCWVsc2UKKwkJCWNkY2xrID0gMzM3NTAw OworCX0KKworCS8qCisJICogRklYTUUgbW92ZSB0aGUgY2RjbGsgY2FjbHVsYXRpb24gdG8KKwkg KiBjb21wdXRlX2NvbmZpZygpIHNvIHdlIGNhbiBmYWlsIGdyYWNlZ3VsbHkuCisJICovCisJaWYg KGNkY2xrID4gZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxKSB7CisJCURSTV9FUlJPUigicmVxdWVz dGVkIGNkY2xrICglZCBrSHopIGV4Y2VlZHMgbWF4ICglZCBrSHopXG4iLAorCQkJICBjZGNsaywg ZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxKTsKKwkJY2RjbGsgPSBkZXZfcHJpdi0+bWF4X2NkY2xr X2ZyZXE7CisJfQorCisJdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKS0+Y2RjbGsgPSBjZGNs azsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBza2xfbW9kZXNldF9jb21taXRfY2Rj bGsoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gb2xkX3N0YXRlLT5kZXY7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwl1bnNpZ25lZCBpbnQgcmVxX2NkY2xrID0gdG9f aW50ZWxfYXRvbWljX3N0YXRlKG9sZF9zdGF0ZSktPmNkY2xrOworCisJc2tsX3NldF9jZGNsayhk ZXZfcHJpdiwgcmVxX2NkY2xrKTsKK30KKwogc3RhdGljIGludCBoYXN3ZWxsX2NydGNfY29tcHV0 ZV9jbG9jayhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJCQkgICAgICBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIHsKQEAgLTE0OTQ1LDYgKzE0OTk5LDExIEBAIHN0YXRp YyB2b2lkIGludGVsX2luaXRfZGlzcGxheShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQkJYnJv eHRvbl9tb2Rlc2V0X2NvbW1pdF9jZGNsazsKIAkJZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9j YWxjX2NkY2xrID0KIAkJCWJyb3h0b25fbW9kZXNldF9jYWxjX2NkY2xrOworCX0gZWxzZSBpZiAo SVNfU0tZTEFLRShkZXYpIHx8IElTX0tBQllMQUtFKGRldikpIHsKKwkJZGV2X3ByaXYtPmRpc3Bs YXkubW9kZXNldF9jb21taXRfY2RjbGsgPQorCQkJc2tsX21vZGVzZXRfY29tbWl0X2NkY2xrOwor CQlkZXZfcHJpdi0+ZGlzcGxheS5tb2Rlc2V0X2NhbGNfY2RjbGsgPQorCQkJc2tsX21vZGVzZXRf Y2FsY19jZGNsazsKIAl9CiAKIAlzd2l0Y2ggKElOVEVMX0lORk8oZGV2KS0+Z2VuKSB7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHAuYwppbmRleCBmMzM1YzkyLi5lODdhZGNiIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwLmMKQEAgLTEyMjAsOSArMTIyMCwxMCBAQCBpbnRlbF9kcF9jb25uZWN0b3JfdW5yZWdp c3RlcihzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0b3IpCiB9CiAKIHN0YXRp YyB2b2lkCi1za2xfZWRwX3NldF9wbGxfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpw aXBlX2NvbmZpZykKK3NrbF9lZHBfc2V0X3BsbF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCiB7CiAJ dTMyIGN0cmwxOworCXUzMiB2Y28gPSA4MTAwOwogCiAJbWVtc2V0KCZwaXBlX2NvbmZpZy0+ZHBs bF9od19zdGF0ZSwgMCwKIAkgICAgICAgc2l6ZW9mKHBpcGVfY29uZmlnLT5kcGxsX2h3X3N0YXRl KSk7CkBAIC0xMjU1LDEzICsxMjU2LDE3IEBAIHNrbF9lZHBfc2V0X3BsbF9jb25maWcoc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQogCWNhc2UgMTA4MDAwOgogCQljdHJsMSB8 PSBEUExMX0NUUkwxX0xJTktfUkFURShEUExMX0NUUkwxX0xJTktfUkFURV8xMDgwLAogCQkJCQkg ICAgICBTS0xfRFBMTDApOworCQl2Y28gPSA4NjQwOwogCQlicmVhazsKIAljYXNlIDIxNjAwMDoK IAkJY3RybDEgfD0gRFBMTF9DVFJMMV9MSU5LX1JBVEUoRFBMTF9DVFJMMV9MSU5LX1JBVEVfMjE2 MCwKIAkJCQkJICAgICAgU0tMX0RQTEwwKTsKKwkJdmNvID0gODY0MDsKIAkJYnJlYWs7CiAKIAl9 CisKKwlkZXZfcHJpdi0+c2tsX3Zjb19mcmVxID0gdmNvOwogCXBpcGVfY29uZmlnLT5kcGxsX2h3 X3N0YXRlLmN0cmwxID0gY3RybDE7CiB9CiAKQEAgLTE2NDIsNyArMTY0Nyw3IEBAIGZvdW5kOgog CX0KIAogCWlmICgoSVNfU0tZTEFLRShkZXYpICB8fCBJU19LQUJZTEFLRShkZXYpKSAmJiBpc19l ZHAoaW50ZWxfZHApKQotCQlza2xfZWRwX3NldF9wbGxfY29uZmlnKHBpcGVfY29uZmlnKTsKKwkJ c2tsX2VkcF9zZXRfcGxsX2NvbmZpZyhkZXZfcHJpdiwgcGlwZV9jb25maWcpOwogCWVsc2UgaWYg KElTX0JST1hUT04oZGV2KSkKIAkJLyogaGFuZGxlZCBpbiBkZGkgKi87CiAJZWxzZSBpZiAoSVNf SEFTV0VMTChkZXYpIHx8IElTX0JST0FEV0VMTChkZXYpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aAppbmRleCA4OTYzYThhLi41NTRkNTg3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAt MTE4Miw2ICsxMTgyLDcgQEAgdm9pZCBieHRfZGlzYWJsZV9kYzkoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KTsKIHZvaWQgc2tsX2luaXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KTsKIGludCBza2xfc2FuaXRpemVfY2RjbGsoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KTsKIHZvaWQgc2tsX3VuaW5pdF9jZGNsayhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwordW5zaWduZWQgaW50IHNrbF9jZGNsa19nZXRfdmNvKHVu c2lnbmVkIGludCBmcmVxKTsKIHZvaWQgc2tsX2VuYWJsZV9kYzYoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KTsKIHZvaWQgc2tsX2Rpc2FibGVfZGM2KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7CiB2b2lkIGludGVsX2RwX2dldF9tX24oc3RydWN0IGludGVsX2Ny dGMgKmNydGMsCi0tIAoxLjcuOS41CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=