From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dongsheng Wang Subject: [PATCH] cpuidle: add freescale e500 family porcessors idle support Date: Tue, 1 Apr 2014 16:33:54 +0800 Message-ID: <1396341234-40515-1-git-send-email-dongsheng.wang@freescale.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linuxppc-dev-bounces+glppe-linuxppc-embedded-2=m.gmane.org@lists.ozlabs.org Sender: "Linuxppc-dev" To: daniel.lezcano@linaro.org, scottwood@freescale.com Cc: chenhui.zhao@freescale.com, linux-pm@vger.kernel.org, Wang Dongsheng , rjw@sisk.pl, jason.jin@freescale.com, linuxppc-dev@lists.ozlabs.org List-Id: linux-pm@vger.kernel.org RnJvbTogV2FuZyBEb25nc2hlbmcgPGRvbmdzaGVuZy53YW5nQGZyZWVzY2FsZS5jb20+CgpBZGQg Y3B1aWRsZSBzdXBwb3J0IGZvciBlNTAwIGZhbWlseSwgdXNpbmcgY3B1aWRsZSBmcmFtZXdvcmsg dG8KbWFuYWdlIHZhcmlvdXMgbG93IHBvd2VyIG1vZGVzLiBUaGUgbmV3IGltcGxlbWVudGF0aW9u IHdpbGwgcmVtYWluCmNvbXBhdGlibGUgd2l0aCBvcmlnaW5hbCBpZGxlIG1ldGhvZC4KCkkgaGF2 ZSBkb25lIHRlc3QgYWJvdXQgcG93ZXIgY29uc3VtcHRpb24gYW5kIGxhdGVuY3kuIENwdWlkbGUg ZnJhbWV3b3JrCndpbGwgbWFrZSBDUFUgcmVzcG9uc2UgdGltZSBmYXN0ZXIgdGhhbiBvcmlnaW5h bCBtZXRob2QsIGJ1dCBwb3dlcgpjb25zdW1wdGlvbiBpcyBoaWdoZXIgdGhhbiBvcmlnaW5hbCBt ZXRob2QuCgpQb3dlciBjb25zdW1wdGlvbjoKVGhlIG9yaWdpbmFsIG1ldGhvZCwgcG93ZXIgY29u c3VtcHRpb24gaXMgMTAuNTEyMDIgKFcpLgpUaGUgY3B1aWRsZSBmcmFtZXdvcmssIHBvd2VyIGNv bnN1bXB0aW9uIGlzIDEwLjUzMTEgKFcpLgoKTGF0ZW5jeToKVGhlIG9yaWdpbmFsIG1ldGhvZCwg YXZnIGxhdGVuY3kgaXMgNjc4MiAodXMpLgpUaGUgY3B1aWRsZSBmcmFtZXdvcmssIGF2ZyBsYXRl bmN5IGlzIDY0ODIgKHVzKS4KCkluaXRpYWxseSwgdGhpcyBzdXBwb3J0cyBQVzEwLCBQVzIwIGFu ZCBzdWJzZXF1ZW50IHBhdGNoZXMgd2lsbCBzdXBwb3J0CkRPWkUvTkFQIGFuZCBQSDEwLCBQSDIw LgoKU2lnbmVkLW9mZi1ieTogV2FuZyBEb25nc2hlbmcgPGRvbmdzaGVuZy53YW5nQGZyZWVzY2Fs ZS5jb20+CgpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL21hY2hkZXAuaCBi L2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9tYWNoZGVwLmgKaW5kZXggNWI2YzAzZi4uOTMwMTQy MCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL21hY2hkZXAuaAorKysgYi9h cmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbWFjaGRlcC5oCkBAIC0yOTQsNiArMjk0LDE1IEBAIGV4 dGVybiB2b2lkIHBvd2VyN19pZGxlKHZvaWQpOwogZXh0ZXJuIHZvaWQgcHBjNnh4X2lkbGUodm9p ZCk7CiBleHRlcm4gdm9pZCBib29rM2VfaWRsZSh2b2lkKTsKIAorc3RhdGljIGlubGluZSB2b2lk IGNwdWlkbGVfd2FpdCh2b2lkKQoreworI2lmZGVmIENPTkZJR19QUEM2NAorCWJvb2szZV9pZGxl KCk7CisjZWxzZQorCWU1MDBfaWRsZSgpOworI2VuZGlmCit9CisKIC8qCiAgKiBwcGNfbWQgY29u dGFpbnMgYSBjb3B5IG9mIHRoZSBtYWNoaW5lIGRlc2NyaXB0aW9uIHN0cnVjdHVyZSBmb3IgdGhl CiAgKiBjdXJyZW50IHBsYXRmb3JtLiBtYWNoaW5lX2lkIGNvbnRhaW5zIHRoZSBpbml0aWFsIGFk ZHJlc3Mgd2hlcmUgdGhlCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL3N5c2ZzLmMg Yi9hcmNoL3Bvd2VycGMva2VybmVsL3N5c2ZzLmMKaW5kZXggOTdlMWRjOS4uZWRkMTkzZiAxMDA2 NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNmcy5jCisrKyBiL2FyY2gvcG93ZXJwYy9r ZXJuZWwvc3lzZnMuYwpAQCAtMTkwLDYgKzE5MCw5IEBAIHN0YXRpYyBzc2l6ZV90IHNob3dfcHcy MF93YWl0X3RpbWUoc3RydWN0IGRldmljZSAqZGV2LAogCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVs bHVcbiIsIHRpbWUgPiAwID8gdGltZSA6IDApOwogfQogCisjaWZkZWYgQ09ORklHX0NQVV9JRExF X0U1MDAKK3UzMiBjcHVpZGxlX2VudHJ5X2JpdDsKKyNlbmRpZgogc3RhdGljIHZvaWQgc2V0X3B3 MjBfd2FpdF9lbnRyeV9iaXQodm9pZCAqdmFsKQogewogCXUzMiAqdmFsdWUgPSB2YWw7CkBAIC0y MDQsNyArMjA3LDExIEBAIHN0YXRpYyB2b2lkIHNldF9wdzIwX3dhaXRfZW50cnlfYml0KHZvaWQg KnZhbCkKIAkvKiBzZXQgY291bnQgKi8KIAlwdzIwX2lkbGUgfD0gKChNQVhfQklUIC0gKnZhbHVl KSA8PCBQV1JNR1RDUjBfUFcyMF9FTlRfU0hJRlQpOwogCisjaWZkZWYgQ09ORklHX0NQVV9JRExF X0U1MDAKKwljcHVpZGxlX2VudHJ5X2JpdCA9ICp2YWx1ZTsKKyNlbHNlCiAJbXRzcHIoU1BSTl9Q V1JNR1RDUjAsIHB3MjBfaWRsZSk7CisjZW5kaWYKIH0KIAogc3RhdGljIHNzaXplX3Qgc3RvcmVf cHcyMF93YWl0X3RpbWUoc3RydWN0IGRldmljZSAqZGV2LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9j cHVpZGxlL0tjb25maWcucG93ZXJwYyBiL2RyaXZlcnMvY3B1aWRsZS9LY29uZmlnLnBvd2VycGMK aW5kZXggNjZjM2EwOS4uMDk0OWRiZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9jcHVpZGxlL0tjb25m aWcucG93ZXJwYworKysgYi9kcml2ZXJzL2NwdWlkbGUvS2NvbmZpZy5wb3dlcnBjCkBAIC0xOCwz ICsxOCwxMCBAQCBjb25maWcgUE9XRVJOVl9DUFVJRExFCiAJaGVscAogCSAgU2VsZWN0IHRoaXMg b3B0aW9uIHRvIGVuYWJsZSBwcm9jZXNzb3IgaWRsZSBzdGF0ZSBtYW5hZ2VtZW50CiAJICB0aHJv dWdoIGNwdWlkbGUgc3Vic3lzdGVtLgorCitjb25maWcgQ1BVX0lETEVfRTUwMAorCWJvb2wgIkNQ VSBJZGxlIERyaXZlciBmb3IgRTUwMCBmYW1pbHkgcHJvY2Vzc29ycyIKKwlkZXBlbmRzIG9uIENQ VV9JRExFCisJZGVwZW5kcyBvbiBGU0xfU09DX0JPT0tFCisJaGVscAorCSAgU2VsZWN0IHRoaXMg dG8gZW5hYmxlIGNwdWlkbGUgb24gZTUwMCBmYW1pbHkgcHJvY2Vzc29ycy4KZGlmZiAtLWdpdCBh L2RyaXZlcnMvY3B1aWRsZS9NYWtlZmlsZSBiL2RyaXZlcnMvY3B1aWRsZS9NYWtlZmlsZQppbmRl eCBmNzFhZTFiLi43ZTZhZGVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2NwdWlkbGUvTWFrZWZpbGUK KysrIGIvZHJpdmVycy9jcHVpZGxlL01ha2VmaWxlCkBAIC0xOCwzICsxOCw0IEBAIG9iai0kKENP TkZJR19BUk1fQVQ5MV9DUFVJRExFKSAgICAgICAgICArPSBjcHVpZGxlLWF0OTEubwogIyBQT1dF UlBDIGRyaXZlcnMKIG9iai0kKENPTkZJR19QU0VSSUVTX0NQVUlETEUpCQkrPSBjcHVpZGxlLXBz ZXJpZXMubwogb2JqLSQoQ09ORklHX1BPV0VSTlZfQ1BVSURMRSkJCSs9IGNwdWlkbGUtcG93ZXJu di5vCitvYmotJChDT05GSUdfQ1BVX0lETEVfRTUwMCkJCSs9IGNwdWlkbGUtZTUwMC5vCmRpZmYg LS1naXQgYS9kcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1lNTAwLmMgYi9kcml2ZXJzL2NwdWlkbGUv Y3B1aWRsZS1lNTAwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGRjMGRl ZgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLWU1MDAuYwpAQCAt MCwwICsxLDE5NCBAQAorLyoKKyAqIENQVSBJZGxlIGRyaXZlciBmb3IgRnJlZXNjYWxlIFBvd2Vy UEMgZTUwMCBmYW1pbHkgcHJvY2Vzc29ycy4KKyAqCisgKiBDb3B5cmlnaHQgMjAxNCBGcmVlc2Nh bGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICoKKyAqIEF1dGhvcjogRG9uZ3NoZW5nIFdhbmcgPGRv bmdzaGVuZy53YW5nQGZyZWVzY2FsZS5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAy IGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLwor CisjaW5jbHVkZSA8bGludXgvY3B1Lmg+CisjaW5jbHVkZSA8bGludXgvY3B1aWRsZS5oPgorI2lu Y2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRl IDxsaW51eC9ub3RpZmllci5oPgorCisjaW5jbHVkZSA8YXNtL2NwdXRhYmxlLmg+CisjaW5jbHVk ZSA8YXNtL21hY2hkZXAuaD4KKyNpbmNsdWRlIDxhc20vbXBjODV4eC5oPgorCitzdGF0aWMgdW5z aWduZWQgaW50IG1heF9pZGxlX3N0YXRlOworc3RhdGljIHN0cnVjdCBjcHVpZGxlX3N0YXRlICpj cHVpZGxlX3N0YXRlX3RhYmxlOworCitzdHJ1Y3QgY3B1aWRsZV9kcml2ZXIgZTUwMF9pZGxlX2Ry aXZlciA9IHsKKwkubmFtZSA9ICJlNTAwX2lkbGUiLAorCS5vd25lciA9IFRISVNfTU9EVUxFLAor fTsKKworc3RhdGljIHZvaWQgZTUwMF9jcHVpZGxlKHZvaWQpCit7CisJaWYgKGNwdWlkbGVfaWRs ZV9jYWxsKCkpCisJCWNwdWlkbGVfd2FpdCgpOworfQorCitzdGF0aWMgaW50IHB3MTBfZW50ZXIo c3RydWN0IGNwdWlkbGVfZGV2aWNlICpkZXYsCisJCQlzdHJ1Y3QgY3B1aWRsZV9kcml2ZXIgKmRy diwgaW50IGluZGV4KQoreworCWNwdWlkbGVfd2FpdCgpOworCXJldHVybiBpbmRleDsKK30KKwor I2RlZmluZSBNQVhfQklUCTYzCisjZGVmaW5lIE1JTl9CSVQJMQorZXh0ZXJuIHUzMiBjcHVpZGxl X2VudHJ5X2JpdDsKK3N0YXRpYyBpbnQgcHcyMF9lbnRlcihzdHJ1Y3QgY3B1aWRsZV9kZXZpY2Ug KmRldiwKKwkJc3RydWN0IGNwdWlkbGVfZHJpdmVyICpkcnYsIGludCBpbmRleCkKK3sKKwl1MzIg cHcyMF9pZGxlOworCXUzMiBlbnRyeV9iaXQ7CisJcHcyMF9pZGxlID0gbWZzcHIoU1BSTl9QV1JN R1RDUjApOworCWlmICgocHcyMF9pZGxlICYgUFdSTUdUQ1IwX1BXMjBfRU5UKSAhPSBQV1JNR1RD UjBfUFcyMF9FTlQpIHsKKwkJcHcyMF9pZGxlICY9IH5QV1JNR1RDUjBfUFcyMF9FTlQ7CisJCWVu dHJ5X2JpdCA9IE1BWF9CSVQgLSBjcHVpZGxlX2VudHJ5X2JpdDsKKwkJcHcyMF9pZGxlIHw9IChl bnRyeV9iaXQgPDwgUFdSTUdUQ1IwX1BXMjBfRU5UX1NISUZUKTsKKwkJbXRzcHIoU1BSTl9QV1JN R1RDUjAsIHB3MjBfaWRsZSk7CisJfQorCisJY3B1aWRsZV93YWl0KCk7CisKKwlwdzIwX2lkbGUg Jj0gflBXUk1HVENSMF9QVzIwX0VOVDsKKwlwdzIwX2lkbGUgfD0gKE1JTl9CSVQgPDwgUFdSTUdU Q1IwX1BXMjBfRU5UX1NISUZUKTsKKwltdHNwcihTUFJOX1BXUk1HVENSMCwgcHcyMF9pZGxlKTsK KworCXJldHVybiBpbmRleDsKK30KKworc3RhdGljIHN0cnVjdCBjcHVpZGxlX3N0YXRlIHB3X2lk bGVfc3RhdGVzW10gPSB7CisJeworCQkubmFtZSA9ICJwdzEwIiwKKwkJLmRlc2MgPSAicHcxMCIs CisJCS5mbGFncyA9IENQVUlETEVfRkxBR19USU1FX1ZBTElELAorCQkuZXhpdF9sYXRlbmN5ID0g MCwKKwkJLnRhcmdldF9yZXNpZGVuY3kgPSAwLAorCQkuZW50ZXIgPSAmcHcxMF9lbnRlcgorCX0s CisKKwl7CisJCS5uYW1lID0gInB3MjAiLAorCQkuZGVzYyA9ICJwdzIwLWNvcmUtaWRsZSIsCisJ CS5mbGFncyA9IENQVUlETEVfRkxBR19USU1FX1ZBTElELAorCQkuZXhpdF9sYXRlbmN5ID0gMSwK KwkJLnRhcmdldF9yZXNpZGVuY3kgPSA1MCwKKwkJLmVudGVyID0gJnB3MjBfZW50ZXIKKwl9LAor fTsKKworc3RhdGljIGludCBjcHVfaG90cGx1Z19ub3RpZnkoc3RydWN0IG5vdGlmaWVyX2Jsb2Nr ICpuLAorCQkJdW5zaWduZWQgbG9uZyBhY3Rpb24sIHZvaWQgKmhjcHUpCit7CisJdW5zaWduZWQg bG9uZyBob3RjcHUgPSAodW5zaWduZWQgbG9uZyloY3B1OworCXN0cnVjdCBjcHVpZGxlX2Rldmlj ZSAqZGV2ID0KKwkJCXBlcl9jcHVfcHRyKGNwdWlkbGVfZGV2aWNlcywgaG90Y3B1KTsKKworCWlm IChkZXYgJiYgY3B1aWRsZV9nZXRfZHJpdmVyKCkpIHsKKwkJc3dpdGNoIChhY3Rpb24pIHsKKwkJ Y2FzZSBDUFVfT05MSU5FOgorCQljYXNlIENQVV9PTkxJTkVfRlJPWkVOOgorCQkJY3B1aWRsZV9w YXVzZV9hbmRfbG9jaygpOworCQkJY3B1aWRsZV9lbmFibGVfZGV2aWNlKGRldik7CisJCQljcHVp ZGxlX3Jlc3VtZV9hbmRfdW5sb2NrKCk7CisJCQlicmVhazsKKworCQljYXNlIENQVV9ERUFEOgor CQljYXNlIENQVV9ERUFEX0ZST1pFTjoKKwkJCWNwdWlkbGVfcGF1c2VfYW5kX2xvY2soKTsKKwkJ CWNwdWlkbGVfZGlzYWJsZV9kZXZpY2UoZGV2KTsKKwkJCWNwdWlkbGVfcmVzdW1lX2FuZF91bmxv Y2soKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlyZXR1cm4gTk9USUZZX0RPTkU7CisJ CX0KKwl9CisKKwlyZXR1cm4gTk9USUZZX09LOworfQorCitzdGF0aWMgc3RydWN0IG5vdGlmaWVy X2Jsb2NrIGNwdV9ob3RwbHVnX25vdGlmaWVyID0geworCS5ub3RpZmllcl9jYWxsID0gY3B1X2hv dHBsdWdfbm90aWZ5LAorfTsKKworc3RhdGljIHZvaWQgZTUwMF9jcHVpZGxlX2RyaXZlcl9pbml0 KHZvaWQpCit7CisJaW50IGlkbGVfc3RhdGU7CisJc3RydWN0IGNwdWlkbGVfZHJpdmVyICpkcnYg PSAmZTUwMF9pZGxlX2RyaXZlcjsKKworCWRydi0+c3RhdGVfY291bnQgPSAwOworCisJZm9yIChp ZGxlX3N0YXRlID0gMDsgaWRsZV9zdGF0ZSA8IG1heF9pZGxlX3N0YXRlOyArK2lkbGVfc3RhdGUp IHsKKwkJaWYgKCFjcHVpZGxlX3N0YXRlX3RhYmxlW2lkbGVfc3RhdGVdLmVudGVyKQorCQkJYnJl YWs7CisKKwkJZHJ2LT5zdGF0ZXNbZHJ2LT5zdGF0ZV9jb3VudF0gPSBjcHVpZGxlX3N0YXRlX3Rh YmxlW2lkbGVfc3RhdGVdOworCQlkcnYtPnN0YXRlX2NvdW50Kys7CisJfQorfQorCitzdGF0aWMg aW50IGU1MDBfaWRsZV9zdGF0ZV9wcm9iZSh2b2lkKQoreworCWlmIChjcHVpZGxlX2Rpc2FibGUg IT0gSURMRV9OT19PVkVSUklERSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwljcHVpZGxlX3N0YXRl X3RhYmxlID0gcHdfaWRsZV9zdGF0ZXM7CisJbWF4X2lkbGVfc3RhdGUgPSBBUlJBWV9TSVpFKHB3 X2lkbGVfc3RhdGVzKTsKKworCS8qIERpc2FibGUgUFcyMCBmZWF0dXJlIGZvciBlNTAwbWMsIGU1 NTAwICovCisJaWYgKFBWUl9WRVIoY3VyX2NwdV9zcGVjLT5wdnJfdmFsdWUpICE9IFBWUl9WRVJf RTY1MDApCisJCWNwdWlkbGVfc3RhdGVfdGFibGVbMV0uZW50ZXIgPSBOVUxMOworCisJaWYgKCFj cHVpZGxlX3N0YXRlX3RhYmxlIHx8ICFtYXhfaWRsZV9zdGF0ZSkKKwkJcmV0dXJuIC1FTk9ERVY7 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgcmVwbGFjZV9vcmlnX2lkbGUodm9pZCAq ZHVtbXkpCit7CisJcmV0dXJuOworfQorCitzdGF0aWMgaW50IF9faW5pdCBlNTAwX2lkbGVfaW5p dCh2b2lkKQoreworCXN0cnVjdCBjcHVpZGxlX2RyaXZlciAqZHJ2ID0gJmU1MDBfaWRsZV9kcml2 ZXI7CisJaW50IGVycjsKKworCWlmIChlNTAwX2lkbGVfc3RhdGVfcHJvYmUoKSkKKwkJcmV0dXJu IC1FTk9ERVY7CisKKwllNTAwX2NwdWlkbGVfZHJpdmVyX2luaXQoKTsKKwlpZiAoIWRydi0+c3Rh dGVfY291bnQpCisJCXJldHVybiAtRU5PREVWOworCisJZXJyID0gY3B1aWRsZV9yZWdpc3Rlcihk cnYsIE5VTEwpOworCWlmIChlcnIpIHsKKwkJcHJfZXJyKCJSZWdpc3RlciBlNTAwIGZhbWlseSBj cHVpZGxlIGRyaXZlciBmYWlsZWQuXG4iKTsKKworCQlyZXR1cm4gZXJyOworCX0KKworCWVyciA9 IHJlZ2lzdGVyX2NwdV9ub3RpZmllcigmY3B1X2hvdHBsdWdfbm90aWZpZXIpOworCWlmIChlcnIp CisJCXByX3dhcm4oIkNwdWlkbGUgZHJpdmVyOiByZWdpc3RlciBjcHUgbm90aWZpZXIgZmFpbGVk LlxuIik7CisKKwkvKiBSZXBsYWNlIHRoZSBvcmlnaW5hbCB3YXkgb2YgaWRsZSBhZnRlciBjcHVp ZGxlIHJlZ2lzdGVyZWQuICovCisJcHBjX21kLnBvd2VyX3NhdmUgPSBlNTAwX2NwdWlkbGU7CisJ b25fZWFjaF9jcHUocmVwbGFjZV9vcmlnX2lkbGUsIE5VTEwsIDEpOworCisJcHJfaW5mbygiZTUw MF9pZGxlX2RyaXZlciByZWdpc3RlcmVkLlxuIik7CisKKwlyZXR1cm4gMDsKK30KK2xhdGVfaW5p dGNhbGwoZTUwMF9pZGxlX2luaXQpOwotLSAKMS44LjUKCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eHBwYy1kZXYgbWFpbGluZyBsaXN0CkxpbnV4 cHBjLWRldkBsaXN0cy5vemxhYnMub3JnCmh0dHBzOi8vbGlzdHMub3psYWJzLm9yZy9saXN0aW5m by9saW51eHBwYy1kZXY=