From mboxrd@z Thu Jan 1 00:00:00 1970 From: Philippe Cornu Subject: [PATCH v1 2/2] drm/panel: Add support for Raydium rm68200 panel driver Date: Thu, 8 Feb 2018 15:30:26 +0100 Message-ID: <20180208143026.23009-3-philippe.cornu@st.com> References: <20180208143026.23009-1-philippe.cornu@st.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180208143026.23009-1-philippe.cornu@st.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thierry Reding , David Airlie , Rob Herring , Mark Rutland , dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Alexandre Torgue , Philippe Cornu , Yannick Fertre , Vincent Abriou List-Id: devicetree@vger.kernel.org VGhpcyBwYXRjaCBhZGRzIFJheWRpdW0gU2VtaWNvbmR1Y3RvciBDb3Jwb3JhdGlvbiBybTY4MjAw CjUuNSIgNzIweDEyODAgVEZUIExDRCBwYW5lbCBkcml2ZXIgKE1JUEktRFNJIHZpZGVvIG1vZGUp LgoKU2lnbmVkLW9mZi1ieTogUGhpbGlwcGUgQ29ybnUgPHBoaWxpcHBlLmNvcm51QHN0LmNvbT4K LS0tCiBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZyAgICAgICAgICAgICAgICAgfCAgIDgg KwogZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlICAgICAgICAgICAgICAgIHwgICAxICsK IGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1yYXlkaXVtLXJtNjgyMDAuYyB8IDQ2NCArKysr KysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA0NzMgaW5zZXJ0aW9ucygr KQogY3JlYXRlIG1vZGUgMTAwNzU1IGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1yYXlkaXVt LXJtNjgyMDAuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnIGIv ZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcKaW5kZXggOTg4MDQ4ZWJjYzIyLi4wOGQ5OWRk NDY3NjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCkBAIC0xMDgsNiArMTA4LDE0IEBAIGNvbmZpZyBE Uk1fUEFORUxfUkFTUEJFUlJZUElfVE9VQ0hTQ1JFRU4KIAkgIFBpIDciIFRvdWNoc2NyZWVuLiAg VG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwKIAkgIGNob29zZSBNIGhlcmUuCiAK K2NvbmZpZyBEUk1fUEFORUxfUkFZRElVTV9STTY4MjAwCisJdHJpc3RhdGUgIlJheWRpdW0gcm02 ODIwMCA3MjB4MTI4MCBkc2kgMmRsIHZpZGVvIG1vZGUgcGFuZWwiCisJZGVwZW5kcyBvbiBPRgor CWRlcGVuZHMgb24gRFJNX01JUElfRFNJCisJaGVscAorCSAgU2F5IFkgaGVyZSBpZiB5b3Ugd2Fu dCB0byBlbmFibGUgc3VwcG9ydCBmb3IgUmF5ZGl1bSBybTY4MjAwCisJICA3MjB4MTI4MCBkc2kg MmRsIHZpZGVvIG1vZGUgcGFuZWwKKwogY29uZmlnIERSTV9QQU5FTF9TQU1TVU5HX1M2RTNIQTIK IAl0cmlzdGF0ZSAiU2Ftc3VuZyBTNkUzSEEyIERTSSB2aWRlbyBtb2RlIHBhbmVsIgogCWRlcGVu ZHMgb24gT0YKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZSBiL2Ry aXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZQppbmRleCAzZDJhODhkMGU5NjUuLmYyNmVmYzEx ZDc0NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZQpAQCAtOSw2ICs5LDcgQEAgb2JqLSQoQ09ORklH X0RSTV9QQU5FTF9MR19MRzQ1NzMpICs9IHBhbmVsLWxnLWxnNDU3My5vCiBvYmotJChDT05GSUdf RFJNX1BBTkVMX09SSVNFVEVDSF9PVE04MDA5QSkgKz0gcGFuZWwtb3Jpc2V0ZWNoLW90bTgwMDlh Lm8KIG9iai0kKENPTkZJR19EUk1fUEFORUxfUEFOQVNPTklDX1ZWWDEwRjAzNE4wMCkgKz0gcGFu ZWwtcGFuYXNvbmljLXZ2eDEwZjAzNG4wMC5vCiBvYmotJChDT05GSUdfRFJNX1BBTkVMX1JBU1BC RVJSWVBJX1RPVUNIU0NSRUVOKSArPSBwYW5lbC1yYXNwYmVycnlwaS10b3VjaHNjcmVlbi5vCitv YmotJChDT05GSUdfRFJNX1BBTkVMX1JBWURJVU1fUk02ODIwMCkgKz0gcGFuZWwtcmF5ZGl1bS1y bTY4MjAwLm8KIG9iai0kKENPTkZJR19EUk1fUEFORUxfU0FNU1VOR19MRDkwNDApICs9IHBhbmVs LXNhbXN1bmctbGQ5MDQwLm8KIG9iai0kKENPTkZJR19EUk1fUEFORUxfU0FNU1VOR19TNkUzSEEy KSArPSBwYW5lbC1zYW1zdW5nLXM2ZTNoYTIubwogb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9TQU1T VU5HX1M2RTYzSjBYMDMpICs9IHBhbmVsLXNhbXN1bmctczZlNjNqMHgwMy5vCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtcmF5ZGl1bS1ybTY4MjAwLmMgYi9kcml2ZXJz L2dwdS9kcm0vcGFuZWwvcGFuZWwtcmF5ZGl1bS1ybTY4MjAwLmMKbmV3IGZpbGUgbW9kZSAxMDA3 NTUKaW5kZXggMDAwMDAwMDAwMDAwLi5mM2UxNTg3M2QwNWEKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtcmF5ZGl1bS1ybTY4MjAwLmMKQEAgLTAsMCArMSw0 NjQgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCisvKgorICogQ29weXJp Z2h0IChDKSBTVE1pY3JvZWxlY3Ryb25pY3MgU0EgMjAxNworICoKKyAqIEF1dGhvcnM6IFBoaWxp cHBlIENvcm51IDxwaGlsaXBwZS5jb3JudUBzdC5jb20+CisgKiAgICAgICAgICBZYW5uaWNrIEZl cnRyZSA8eWFubmljay5mZXJ0cmVAc3QuY29tPgorICovCisKKyNpbmNsdWRlIDxkcm0vZHJtUC5o PgorI2luY2x1ZGUgPGRybS9kcm1fbWlwaV9kc2kuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX3BhbmVs Lmg+CisjaW5jbHVkZSA8bGludXgvYmFja2xpZ2h0Lmg+CisjaW5jbHVkZSA8bGludXgvZ3Bpby9j b25zdW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oPgorI2luY2x1 ZGUgPHZpZGVvL21pcGlfZGlzcGxheS5oPgorCisjZGVmaW5lIERSVl9OQU1FICJyYXlkaXVtX3Jt NjgyMDAiCisKKy8qKiogTWFudWZhY3R1cmVyIENvbW1hbmQgU2V0ICoqKi8KKyNkZWZpbmUgTUNT X0NNRF9NT0RFX1NXCTB4RkUgLyogQ01EIE1vZGUgU3dpdGNoICovCisjZGVmaW5lIE1DU19DTUQx X1VDUwkweDAwIC8qIFVzZXIgQ29tbWFuZCBTZXQgKFVDUyA9IENNRDEpICovCisjZGVmaW5lIE1D U19DTUQyX1AwCTB4MDEgLyogTWFudWZhY3R1cmUgQ29tbWFuZCBTZXQgUGFnZTAgKENNRDIgUDAp ICovCisjZGVmaW5lIE1DU19DTUQyX1AxCTB4MDIgLyogTWFudWZhY3R1cmUgQ29tbWFuZCBTZXQg UGFnZTEgKENNRDIgUDEpICovCisjZGVmaW5lIE1DU19DTUQyX1AyCTB4MDMgLyogTWFudWZhY3R1 cmUgQ29tbWFuZCBTZXQgUGFnZTIgKENNRDIgUDIpICovCisjZGVmaW5lIE1DU19DTUQyX1AzCTB4 MDQgLyogTWFudWZhY3R1cmUgQ29tbWFuZCBTZXQgUGFnZTMgKENNRDIgUDMpICovCisKKy8qIENN RDIgUDAgY29tbWFuZHMgKERpc3BsYXkgT3B0aW9ucyBhbmQgUG93ZXIpICovCisjZGVmaW5lIE1D U19TVEJDVFIJMHgxMiAvKiBURTEgT3V0cHV0IFNldHRpbmcgWmlnLVphZyBDb25uZWN0aW9uICov CisjZGVmaW5lIE1DU19TR09QQ1RSCTB4MTYgLyogU291cmNlIEJpYXMgQ3VycmVudCAqLworI2Rl ZmluZSBNQ1NfU0RDVFIJMHgxQSAvKiBTb3VyY2UgT3V0cHV0IERlbGF5IFRpbWUgKi8KKyNkZWZp bmUgTUNTX0lOVkNUUgkweDFCIC8qIEludmVyc2lvbiBUeXBlICovCisjZGVmaW5lIE1DU19FWFRf UFdSX0lDCTB4MjQgLyogRXh0ZXJuYWwgUFdSIElDIENvbnRyb2wgKi8KKyNkZWZpbmUgTUNTX1NF VEFWREQJMHgyNyAvKiBQRk0gQ29udHJvbCBmb3IgQVZERCBPdXRwdXQgKi8KKyNkZWZpbmUgTUNT X1NFVEFWRUUJMHgyOSAvKiBQRk0gQ29udHJvbCBmb3IgQVZFRSBPdXRwdXQgKi8KKyNkZWZpbmUg TUNTX0JUMkNUUgkweDJCIC8qIEREVkRMIENoYXJnZSBQdW1wIENvbnRyb2wgKi8KKyNkZWZpbmUg TUNTX0JUM0NUUgkweDJGIC8qIFZHSCBDaGFyZ2UgUHVtcCBDb250cm9sICovCisjZGVmaW5lIE1D U19CVDRDVFIJMHgzNCAvKiBWR0wgQ2hhcmdlIFB1bXAgQ29udHJvbCAqLworI2RlZmluZSBNQ1Nf VkNNQ1RSCTB4NDYgLyogVkNPTSBPdXRwdXQgTGV2ZWwgQ29udHJvbCAqLworI2RlZmluZSBNQ1Nf U0VUVkdOCTB4NTIgLyogVkcgTS9TIE4gQ29udHJvbCAqLworI2RlZmluZSBNQ1NfU0VUVkdQCTB4 NTQgLyogVkcgTS9TIFAgQ29udHJvbCAqLworI2RlZmluZSBNQ1NfU1dfQ1RSTAkweDVGIC8qIElu dGVyZmFjZSBDb250cm9sIGZvciBQRk0gYW5kIE1JUEkgKi8KKworLyogQ01EMiBQMiBjb21tYW5k cyAoR09BIFRpbWluZyBDb250cm9sKSAtIG5vIGRlc2NyaXB0aW9uIGluIGRhdGFzaGVldCAqLwor I2RlZmluZSBHT0FfVlNUVjEJMHgwMAorI2RlZmluZSBHT0FfVlNUVjIJMHgwNworI2RlZmluZSBH T0FfVkNMSzEJMHgwRQorI2RlZmluZSBHT0FfVkNMSzIJMHgxNworI2RlZmluZSBHT0FfVkNMS19P UFQxCTB4MjAKKyNkZWZpbmUgR09BX0JJQ0xLMQkweDJBCisjZGVmaW5lIEdPQV9CSUNMSzIJMHgz NworI2RlZmluZSBHT0FfQklDTEszCTB4NDQKKyNkZWZpbmUgR09BX0JJQ0xLNAkweDRGCisjZGVm aW5lIEdPQV9CSUNMS19PUFQxCTB4NUIKKyNkZWZpbmUgR09BX0JJQ0xLX09QVDIJMHg2MAorI2Rl ZmluZSBNQ1NfR09BX0dQTzEJMHg2RAorI2RlZmluZSBNQ1NfR09BX0dQTzIJMHg3MQorI2RlZmlu ZSBNQ1NfR09BX0VRCTB4NzQKKyNkZWZpbmUgTUNTX0dPQV9DTEtfR0FMTE9OIDB4N0MKKyNkZWZp bmUgTUNTX0dPQV9GU19TRUwwCTB4N0UKKyNkZWZpbmUgTUNTX0dPQV9GU19TRUwxCTB4ODcKKyNk ZWZpbmUgTUNTX0dPQV9GU19TRUwyCTB4OTEKKyNkZWZpbmUgTUNTX0dPQV9GU19TRUwzCTB4OUIK KyNkZWZpbmUgTUNTX0dPQV9CU19TRUwwCTB4QUMKKyNkZWZpbmUgTUNTX0dPQV9CU19TRUwxCTB4 QjUKKyNkZWZpbmUgTUNTX0dPQV9CU19TRUwyCTB4QkYKKyNkZWZpbmUgTUNTX0dPQV9CU19TRUwz CTB4QzkKKyNkZWZpbmUgTUNTX0dPQV9CU19TRUw0CTB4RDMKKworLyogQ01EMiBQMyBjb21tYW5k cyAoR2FtbWEpICovCisjZGVmaW5lIE1DU19HQU1NQV9WUAkweDYwIC8qIEdhbW1hIFZQMX5WUDE2 ICovCisjZGVmaW5lIE1DU19HQU1NQV9WTgkweDcwIC8qIEdhbW1hIFZOMX5WTjE2ICovCisKK3N0 cnVjdCBybTY4MjAwIHsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJc3RydWN0IGRybV9wYW5lbCBw YW5lbDsKKwlzdHJ1Y3QgZ3Bpb19kZXNjICpyZXNldF9ncGlvOworCXN0cnVjdCByZWd1bGF0b3Ig KnN1cHBseTsKKwlzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmxfZGV2OworCWJvb2wgcHJlcGFy ZWQ7CisJYm9vbCBlbmFibGVkOworfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlIGRlZmF1bHRfbW9kZSA9IHsKKwkuY2xvY2sgPSA1MjU4MiwKKwkuaGRpc3BsYXkgPSA3 MjAsCisJLmhzeW5jX3N0YXJ0ID0gNzIwICsgMzgsCisJLmhzeW5jX2VuZCA9IDcyMCArIDM4ICsg OCwKKwkuaHRvdGFsID0gNzIwICsgMzggKyA4ICsgMzgsCisJLnZkaXNwbGF5ID0gMTI4MCwKKwku dnN5bmNfc3RhcnQgPSAxMjgwICsgMTIsCisJLnZzeW5jX2VuZCA9IDEyODAgKyAxMiArIDQsCisJ LnZ0b3RhbCA9IDEyODAgKyAxMiArIDQgKyAxMiwKKwkudnJlZnJlc2ggPSA1MCwKKwkuZmxhZ3Mg PSAwLAorCS53aWR0aF9tbSA9IDY4LAorCS5oZWlnaHRfbW0gPSAxMjIsCit9OworCitzdGF0aWMg aW5saW5lIHN0cnVjdCBybTY4MjAwICpwYW5lbF90b19ybTY4MjAwKHN0cnVjdCBkcm1fcGFuZWwg KnBhbmVsKQoreworCXJldHVybiBjb250YWluZXJfb2YocGFuZWwsIHN0cnVjdCBybTY4MjAwLCBw YW5lbCk7Cit9CisKK3N0YXRpYyB2b2lkIHJtNjgyMDBfZGNzX3dyaXRlX2J1ZihzdHJ1Y3Qgcm02 ODIwMCAqY3R4LCBjb25zdCB2b2lkICpkYXRhLAorCQkJCSAgc2l6ZV90IGxlbikKK3sKKwlzdHJ1 Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kgPSB0b19taXBpX2RzaV9kZXZpY2UoY3R4LT5kZXYpOwor CisJaWYgKG1pcGlfZHNpX2Rjc193cml0ZV9idWZmZXIoZHNpLCBkYXRhLCBsZW4pIDwgMCkKKwkJ RFJNX1dBUk4oIm1pcGkgZHNpIGRjcyB3cml0ZSBidWZmZXIgZmFpbGVkXG4iKTsKK30KKworc3Rh dGljIHZvaWQgcm02ODIwMF9kY3Nfd3JpdGVfY21kKHN0cnVjdCBybTY4MjAwICpjdHgsIHU4IGNt ZCwgdTggdmFsdWUpCit7CisJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpID0gdG9fbWlwaV9k c2lfZGV2aWNlKGN0eC0+ZGV2KTsKKworCWlmIChtaXBpX2RzaV9kY3Nfd3JpdGUoZHNpLCBjbWQs ICZ2YWx1ZSwgMSkgPCAwKQorCQlEUk1fV0FSTigibWlwaSBkc2kgZGNzIHdyaXRlIGZhaWxlZFxu Iik7Cit9CisKKyNkZWZpbmUgZGNzX3dyaXRlX3NlcShjdHgsIHNlcS4uLikJCQkJXAorKHsJCQkJ CQkJCVwKKwlzdGF0aWMgY29uc3QgdTggZFtdID0geyBzZXEgfTsJCQkJXAorCXJtNjgyMDBfZGNz X3dyaXRlX2J1ZihjdHgsIGQsIEFSUkFZX1NJWkUoZCkpOwkJXAorfSkKKworLyoKKyAqIFRoaXMg cGFuZWwgaXMgbm90IGFibGUgdG8gYXV0by1pbmNyZW1lbnQgYWxsIGNtZCBhZGRyZXNzZXMgc28g Zm9yIHNvbWUgb2YKKyAqIHRoZW0sIHdlIG5lZWQgdG8gc2VuZCB0aGVtIG9uZSBieSBvbmUuLi4K KyAqLworI2RlZmluZSBkY3Nfd3JpdGVfY21kX3NlcShjdHgsIGNtZCwgc2VxLi4uKQkJCVwKKyh7 CQkJCQkJCQlcCisJc3RhdGljIGNvbnN0IHU4IGRbXSA9IHsgc2VxIH07CQkJCVwKKwlzdGF0aWMg aW50IGk7CQkJCQkJXAorCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGQpIDsgaSsrKQkJCVwK KwkJcm02ODIwMF9kY3Nfd3JpdGVfY21kKGN0eCwgY21kICsgaSwgZFtpXSk7CVwKK30pCisKK3N0 YXRpYyB2b2lkIHJtNjgyMDBfaW5pdF9zZXF1ZW5jZShzdHJ1Y3Qgcm02ODIwMCAqY3R4KQorewor CS8qIEVudGVyIENNRDIgd2l0aCBwYWdlIDAgKi8KKwlkY3Nfd3JpdGVfc2VxKGN0eCwgTUNTX0NN RF9NT0RFX1NXLCBNQ1NfQ01EMl9QMCk7CisJZGNzX3dyaXRlX2NtZF9zZXEoY3R4LCBNQ1NfRVhU X1BXUl9JQywgMHhDMCwgMHg1MywgMHgwMCk7CisJZGNzX3dyaXRlX3NlcShjdHgsIE1DU19CVDJD VFIsIDB4RTUpOworCWRjc193cml0ZV9zZXEoY3R4LCBNQ1NfU0VUQVZERCwgMHgwQSk7CisJZGNz X3dyaXRlX3NlcShjdHgsIE1DU19TRVRBVkVFLCAweDBBKTsKKwlkY3Nfd3JpdGVfc2VxKGN0eCwg TUNTX1NHT1BDVFIsIDB4NTIpOworCWRjc193cml0ZV9zZXEoY3R4LCBNQ1NfQlQzQ1RSLCAweDUz KTsKKwlkY3Nfd3JpdGVfc2VxKGN0eCwgTUNTX0JUNENUUiwgMHg1QSk7CisJZGNzX3dyaXRlX3Nl cShjdHgsIE1DU19JTlZDVFIsIDB4MDApOworCWRjc193cml0ZV9zZXEoY3R4LCBNQ1NfU1RCQ1RS LCAweDBBKTsKKwlkY3Nfd3JpdGVfc2VxKGN0eCwgTUNTX1NEQ1RSLCAweDA2KTsKKwlkY3Nfd3Jp dGVfc2VxKGN0eCwgTUNTX1ZDTUNUUiwgMHg1Nik7CisJZGNzX3dyaXRlX3NlcShjdHgsIE1DU19T RVRWR04sIDB4QTAsIDB4MDApOworCWRjc193cml0ZV9zZXEoY3R4LCBNQ1NfU0VUVkdQLCAweEEw LCAweDAwKTsKKwlkY3Nfd3JpdGVfc2VxKGN0eCwgTUNTX1NXX0NUUkwsIDB4MTEpOyAvKiAyIGRh dGEgbGFuZXMsIHNlZSBkb2MgKi8KKworCWRjc193cml0ZV9zZXEoY3R4LCBNQ1NfQ01EX01PREVf U1csIE1DU19DTUQyX1AyKTsKKwlkY3Nfd3JpdGVfc2VxKGN0eCwgR09BX1ZTVFYxLCAweDA1KTsK KwlkY3Nfd3JpdGVfc2VxKGN0eCwgMHgwMiwgMHgwQik7CisJZGNzX3dyaXRlX3NlcShjdHgsIDB4 MDMsIDB4MEYpOworCWRjc193cml0ZV9zZXEoY3R4LCAweDA0LCAweDdELCAweDAwLCAweDUwKTsK KwlkY3Nfd3JpdGVfY21kX3NlcShjdHgsIEdPQV9WU1RWMiwgMHgwNSwgMHgxNiwgMHgwRCwgMHgx MSwgMHg3RCwgMHgwMCwKKwkJCSAgMHg1MCk7CisJZGNzX3dyaXRlX2NtZF9zZXEoY3R4LCBHT0Ff VkNMSzEsIDB4MDcsIDB4MDgsIDB4MDEsIDB4MDIsIDB4MDAsIDB4N0QsCisJCQkgIDB4MDAsIDB4 ODUsIDB4MDgpOworCWRjc193cml0ZV9jbWRfc2VxKGN0eCwgR09BX1ZDTEsyLCAweDAzLCAweDA0 LCAweDA1LCAweDA2LCAweDAwLCAweDdELAorCQkJICAweDAwLCAweDg1LCAweDA4KTsKKwlkY3Nf d3JpdGVfc2VxKGN0eCwgR09BX1ZDTEtfT1BUMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw MCwgMHgwMCwKKwkJICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCk7CisJZGNzX3dyaXRlX2Nt ZF9zZXEoY3R4LCBHT0FfQklDTEsxLCAweDA3LCAweDA4KTsKKwlkY3Nfd3JpdGVfc2VxKGN0eCwg MHgyRCwgMHgwMSk7CisJZGNzX3dyaXRlX3NlcShjdHgsIDB4MkYsIDB4MDIsIDB4MDAsIDB4NDAs IDB4MDUsIDB4MDgsIDB4NTQsIDB4N0QsCisJCSAgICAgIDB4MDApOworCWRjc193cml0ZV9jbWRf c2VxKGN0eCwgR09BX0JJQ0xLMiwgMHgwMywgMHgwNCwgMHgwNSwgMHgwNiwgMHgwMCk7CisJZGNz X3dyaXRlX3NlcShjdHgsIDB4M0QsIDB4NDApOworCWRjc193cml0ZV9zZXEoY3R4LCAweDNGLCAw eDA1LCAweDA4LCAweDU0LCAweDdELCAweDAwKTsKKwlkY3Nfd3JpdGVfc2VxKGN0eCwgR09BX0JJ Q0xLMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkJICAgICAgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCk7CisJZGNzX3dyaXRlX3NlcShjdHgsIEdPQV9CSUNMSzQs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJCSAgICAgIDB4MDAsIDB4MDAp OworCWRjc193cml0ZV9zZXEoY3R4LCAweDU4LCAweDAwLCAweDAwLCAweDAwKTsKKwlkY3Nfd3Jp dGVfc2VxKGN0eCwgR09BX0JJQ0xLX09QVDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAp OworCWRjc193cml0ZV9zZXEoY3R4LCBHT0FfQklDTEtfT1BUMiwgMHgwMCwgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwKKwkJICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCk7CisJZGNzX3dyaXRlX3NlcShjdHgsIE1DU19HT0FfR1BPMSwgMHgwMCwgMHgw MCwgMHgwMCwgMHgwMCk7CisJZGNzX3dyaXRlX3NlcShjdHgsIE1DU19HT0FfR1BPMiwgMHgwMCwg MHgyMCwgMHgwMCk7CisJZGNzX3dyaXRlX3NlcShjdHgsIE1DU19HT0FfRVEsIDB4MDgsIDB4MDgs IDB4MDgsIDB4MDgsIDB4MDgsIDB4MDgsCisJCSAgICAgIDB4MDAsIDB4MDApOworCWRjc193cml0 ZV9zZXEoY3R4LCBNQ1NfR09BX0NMS19HQUxMT04sIDB4MDAsIDB4MDApOworCWRjc193cml0ZV9j bWRfc2VxKGN0eCwgTUNTX0dPQV9GU19TRUwwLCAweEJGLCAweDAyLCAweDA2LCAweDE0LCAweDEw LAorCQkJICAweDE2LCAweDEyLCAweDA4LCAweDNGKTsKKwlkY3Nfd3JpdGVfY21kX3NlcShjdHgs IE1DU19HT0FfRlNfU0VMMSwgMHgzRiwgMHgzRiwgMHgzRiwgMHgzRiwgMHgwQywKKwkJCSAgMHgw QSwgMHgwRSwgMHgzRiwgMHgzRiwgMHgwMCk7CisJZGNzX3dyaXRlX2NtZF9zZXEoY3R4LCBNQ1Nf R09BX0ZTX1NFTDIsIDB4MDQsIDB4M0YsIDB4M0YsIDB4M0YsIDB4M0YsCisJCQkgIDB4MDUsIDB4 MDEsIDB4M0YsIDB4M0YsIDB4MEYpOworCWRjc193cml0ZV9jbWRfc2VxKGN0eCwgTUNTX0dPQV9G U19TRUwzLCAweDBCLCAweDBELCAweDNGLCAweDNGLCAweDNGLAorCQkJICAweDNGKTsKKwlkY3Nf d3JpdGVfY21kX3NlcShjdHgsIDB4QTIsIDB4M0YsIDB4MDksIDB4MTMsIDB4MTcsIDB4MTEsIDB4 MTUpOworCWRjc193cml0ZV9jbWRfc2VxKGN0eCwgMHhBOSwgMHgwNywgMHgwMywgMHgzRik7CisJ ZGNzX3dyaXRlX2NtZF9zZXEoY3R4LCBNQ1NfR09BX0JTX1NFTDAsIDB4M0YsIDB4MDUsIDB4MDEs IDB4MTcsIDB4MTMsCisJCQkgIDB4MTUsIDB4MTEsIDB4MEYsIDB4M0YpOworCWRjc193cml0ZV9j bWRfc2VxKGN0eCwgTUNTX0dPQV9CU19TRUwxLCAweDNGLCAweDNGLCAweDNGLCAweDNGLCAweDBC LAorCQkJICAweDBELCAweDA5LCAweDNGLCAweDNGLCAweDA3KTsKKwlkY3Nfd3JpdGVfY21kX3Nl cShjdHgsIE1DU19HT0FfQlNfU0VMMiwgMHgwMywgMHgzRiwgMHgzRiwgMHgzRiwgMHgzRiwKKwkJ CSAgMHgwMiwgMHgwNiwgMHgzRiwgMHgzRiwgMHgwOCk7CisJZGNzX3dyaXRlX2NtZF9zZXEoY3R4 LCBNQ1NfR09BX0JTX1NFTDMsIDB4MEMsIDB4MEEsIDB4M0YsIDB4M0YsIDB4M0YsCisJCQkgIDB4 M0YsIDB4M0YsIDB4MEUsIDB4MTAsIDB4MTQpOworCWRjc193cml0ZV9jbWRfc2VxKGN0eCwgTUNT X0dPQV9CU19TRUw0LCAweDEyLCAweDE2LCAweDAwLCAweDA0LCAweDNGKTsKKwlkY3Nfd3JpdGVf c2VxKGN0eCwgMHhEQywgMHgwMik7CisJZGNzX3dyaXRlX3NlcShjdHgsIDB4REUsIDB4MTIpOwor CisJZGNzX3dyaXRlX3NlcShjdHgsIE1DU19DTURfTU9ERV9TVywgMHgwRSk7IC8qIE5vIGRvY3Vt ZW50YXRpb24gKi8KKwlkY3Nfd3JpdGVfc2VxKGN0eCwgMHgwMSwgMHg3NSk7CisKKwlkY3Nfd3Jp dGVfc2VxKGN0eCwgTUNTX0NNRF9NT0RFX1NXLCBNQ1NfQ01EMl9QMyk7CisJZGNzX3dyaXRlX2Nt ZF9zZXEoY3R4LCBNQ1NfR0FNTUFfVlAsIDB4MDAsIDB4MEMsIDB4MTIsIDB4MEUsIDB4MDYsCisJ CQkgIDB4MTIsIDB4MEUsIDB4MEIsIDB4MTUsIDB4MEIsIDB4MTAsIDB4MDcsIDB4MEYsCisJCQkg IDB4MTIsIDB4MEMsIDB4MDApOworCWRjc193cml0ZV9jbWRfc2VxKGN0eCwgTUNTX0dBTU1BX1ZO LCAweDAwLCAweDBDLCAweDEyLCAweDBFLCAweDA2LAorCQkJICAweDEyLCAweDBFLCAweDBCLCAw eDE1LCAweDBCLCAweDEwLCAweDA3LCAweDBGLAorCQkJICAweDEyLCAweDBDLCAweDAwKTsKKwor CS8qIEV4aXQgQ01EMiAqLworCWRjc193cml0ZV9zZXEoY3R4LCBNQ1NfQ01EX01PREVfU1csIE1D U19DTUQxX1VDUyk7Cit9CisKK3N0YXRpYyBpbnQgcm02ODIwMF9kaXNhYmxlKHN0cnVjdCBkcm1f cGFuZWwgKnBhbmVsKQoreworCXN0cnVjdCBybTY4MjAwICpjdHggPSBwYW5lbF90b19ybTY4MjAw KHBhbmVsKTsKKworCWlmICghY3R4LT5lbmFibGVkKQorCQlyZXR1cm4gMDsKKworCWlmIChjdHgt PmJsX2RldikgeworCQljdHgtPmJsX2Rldi0+cHJvcHMucG93ZXIgPSBGQl9CTEFOS19QT1dFUkRP V047CisJCWN0eC0+YmxfZGV2LT5wcm9wcy5zdGF0ZSB8PSBCTF9DT1JFX0ZCQkxBTks7CisJCWJh Y2tsaWdodF91cGRhdGVfc3RhdHVzKGN0eC0+YmxfZGV2KTsKKwl9CisKKwljdHgtPmVuYWJsZWQg PSBmYWxzZTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHJtNjgyMDBfdW5wcmVwYXJl KHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQoreworCXN0cnVjdCBybTY4MjAwICpjdHggPSBwYW5l bF90b19ybTY4MjAwKHBhbmVsKTsKKwlzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kgPSB0b19t aXBpX2RzaV9kZXZpY2UoY3R4LT5kZXYpOworCWludCByZXQ7CisKKwlpZiAoIWN0eC0+cHJlcGFy ZWQpCisJCXJldHVybiAwOworCisJcmV0ID0gbWlwaV9kc2lfZGNzX3NldF9kaXNwbGF5X29mZihk c2kpOworCWlmIChyZXQpCisJCURSTV9XQVJOKCJmYWlsZWQgdG8gc2V0IGRpc3BsYXkgb2ZmOiAl ZFxuIiwgcmV0KTsKKworCXJldCA9IG1pcGlfZHNpX2Rjc19lbnRlcl9zbGVlcF9tb2RlKGRzaSk7 CisJaWYgKHJldCkKKwkJRFJNX1dBUk4oImZhaWxlZCB0byBlbnRlciBzbGVlcCBtb2RlOiAlZFxu IiwgcmV0KTsKKworCW1zbGVlcCgxMjApOworCisJaWYgKGN0eC0+cmVzZXRfZ3BpbykgeworCQln cGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoY3R4LT5yZXNldF9ncGlvLCAxKTsKKwkJbXNsZWVwKDIw KTsKKwl9CisKKwlyZWd1bGF0b3JfZGlzYWJsZShjdHgtPnN1cHBseSk7CisKKwljdHgtPnByZXBh cmVkID0gZmFsc2U7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBybTY4MjAwX3ByZXBh cmUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCit7CisJc3RydWN0IHJtNjgyMDAgKmN0eCA9IHBh bmVsX3RvX3JtNjgyMDAocGFuZWwpOworCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSA9IHRv X21pcGlfZHNpX2RldmljZShjdHgtPmRldik7CisJaW50IHJldDsKKworCWlmIChjdHgtPnByZXBh cmVkKQorCQlyZXR1cm4gMDsKKworCXJldCA9IHJlZ3VsYXRvcl9lbmFibGUoY3R4LT5zdXBwbHkp OworCWlmIChyZXQgPCAwKSB7CisJCURSTV9FUlJPUigiZmFpbGVkIHRvIGVuYWJsZSBzdXBwbHk6 ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCWlmIChjdHgtPnJlc2V0X2dwaW8p IHsKKwkJZ3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKGN0eC0+cmVzZXRfZ3BpbywgMCk7CisJCWdw aW9kX3NldF92YWx1ZV9jYW5zbGVlcChjdHgtPnJlc2V0X2dwaW8sIDEpOworCQltc2xlZXAoMjAp OworCQlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoY3R4LT5yZXNldF9ncGlvLCAwKTsKKwkJbXNs ZWVwKDEwMCk7CisJfQorCisJcm02ODIwMF9pbml0X3NlcXVlbmNlKGN0eCk7CisKKwlyZXQgPSBt aXBpX2RzaV9kY3NfZXhpdF9zbGVlcF9tb2RlKGRzaSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJl dDsKKworCW1zbGVlcCgxMjUpOworCisJcmV0ID0gbWlwaV9kc2lfZGNzX3NldF9kaXNwbGF5X29u KGRzaSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCW1zbGVlcCgyMCk7CisKKwljdHgt PnByZXBhcmVkID0gdHJ1ZTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHJtNjgyMDBf ZW5hYmxlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQoreworCXN0cnVjdCBybTY4MjAwICpjdHgg PSBwYW5lbF90b19ybTY4MjAwKHBhbmVsKTsKKworCWlmIChjdHgtPmVuYWJsZWQpCisJCXJldHVy biAwOworCisJaWYgKGN0eC0+YmxfZGV2KSB7CisJCWN0eC0+YmxfZGV2LT5wcm9wcy5zdGF0ZSAm PSB+QkxfQ09SRV9GQkJMQU5LOworCQljdHgtPmJsX2Rldi0+cHJvcHMucG93ZXIgPSBGQl9CTEFO S19VTkJMQU5LOworCQliYWNrbGlnaHRfdXBkYXRlX3N0YXR1cyhjdHgtPmJsX2Rldik7CisJfQor CisJY3R4LT5lbmFibGVkID0gdHJ1ZTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHJt NjgyMDBfZ2V0X21vZGVzKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQoreworCXN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICptb2RlOworCisJbW9kZSA9IGRybV9tb2RlX2R1cGxpY2F0ZShwYW5lbC0+ ZHJtLCAmZGVmYXVsdF9tb2RlKTsKKwlpZiAoIW1vZGUpIHsKKwkJRFJNX0VSUk9SKCJmYWlsZWQg dG8gYWRkIG1vZGUgJXV4JXV4QCV1XG4iLAorCQkJICBkZWZhdWx0X21vZGUuaGRpc3BsYXksIGRl ZmF1bHRfbW9kZS52ZGlzcGxheSwKKwkJCSAgZGVmYXVsdF9tb2RlLnZyZWZyZXNoKTsKKwkJcmV0 dXJuIC1FTk9NRU07CisJfQorCisJZHJtX21vZGVfc2V0X25hbWUobW9kZSk7CisKKwltb2RlLT50 eXBlID0gRFJNX01PREVfVFlQRV9EUklWRVIgfCBEUk1fTU9ERV9UWVBFX1BSRUZFUlJFRDsKKwlk cm1fbW9kZV9wcm9iZWRfYWRkKHBhbmVsLT5jb25uZWN0b3IsIG1vZGUpOworCisJcGFuZWwtPmNv bm5lY3Rvci0+ZGlzcGxheV9pbmZvLndpZHRoX21tID0gbW9kZS0+d2lkdGhfbW07CisJcGFuZWwt PmNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLmhlaWdodF9tbSA9IG1vZGUtPmhlaWdodF9tbTsKKwor CXJldHVybiAxOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wYW5lbF9mdW5jcyBybTY4 MjAwX2RybV9mdW5jcyA9IHsKKwkuZGlzYWJsZSAgID0gcm02ODIwMF9kaXNhYmxlLAorCS51bnBy ZXBhcmUgPSBybTY4MjAwX3VucHJlcGFyZSwKKwkucHJlcGFyZSAgID0gcm02ODIwMF9wcmVwYXJl LAorCS5lbmFibGUgICAgPSBybTY4MjAwX2VuYWJsZSwKKwkuZ2V0X21vZGVzID0gcm02ODIwMF9n ZXRfbW9kZXMsCit9OworCitzdGF0aWMgaW50IHJtNjgyMDBfcHJvYmUoc3RydWN0IG1pcGlfZHNp X2RldmljZSAqZHNpKQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZkc2ktPmRldjsKKwlzdHJ1 Y3QgZGV2aWNlX25vZGUgKmJhY2tsaWdodDsKKwlzdHJ1Y3Qgcm02ODIwMCAqY3R4OworCWludCBy ZXQ7CisKKwljdHggPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmN0eCksIEdGUF9LRVJORUwp OworCWlmICghY3R4KQorCQlyZXR1cm4gLUVOT01FTTsKKworCWN0eC0+cmVzZXRfZ3BpbyA9IGRl dm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKGRldiwgInJlc2V0IiwgR1BJT0RfT1VUX0xPVyk7CisJaWYg KElTX0VSUihjdHgtPnJlc2V0X2dwaW8pKSB7CisJCWRldl9lcnIoZGV2LCAiY2Fubm90IGdldCBy ZXNldC1ncGlvXG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIoY3R4LT5yZXNldF9ncGlvKTsKKwl9CisK KwljdHgtPnN1cHBseSA9IGRldm1fcmVndWxhdG9yX2dldChkZXYsICJwb3dlciIpOworCWlmIChJ U19FUlIoY3R4LT5zdXBwbHkpKSB7CisJCWRldl9lcnIoZGV2LCAiY2Fubm90IGdldCByZWd1bGF0 b3JcbiIpOworCQlyZXR1cm4gUFRSX0VSUihjdHgtPnN1cHBseSk7CisJfQorCisJYmFja2xpZ2h0 ID0gb2ZfcGFyc2VfcGhhbmRsZShkZXYtPm9mX25vZGUsICJiYWNrbGlnaHQiLCAwKTsKKwlpZiAo YmFja2xpZ2h0KSB7CisJCWN0eC0+YmxfZGV2ID0gb2ZfZmluZF9iYWNrbGlnaHRfYnlfbm9kZShi YWNrbGlnaHQpOworCQlvZl9ub2RlX3B1dChiYWNrbGlnaHQpOworCisJCWlmICghY3R4LT5ibF9k ZXYpCisJCQlyZXR1cm4gLUVQUk9CRV9ERUZFUjsKKwl9CisKKwltaXBpX2RzaV9zZXRfZHJ2ZGF0 YShkc2ksIGN0eCk7CisKKwljdHgtPmRldiA9IGRldjsKKworCWRzaS0+bGFuZXMgPSAyOworCWRz aS0+Zm9ybWF0ID0gTUlQSV9EU0lfRk1UX1JHQjg4ODsKKwlkc2ktPm1vZGVfZmxhZ3MgPSBNSVBJ X0RTSV9NT0RFX1ZJREVPIHwgTUlQSV9EU0lfTU9ERV9WSURFT19CVVJTVCB8CisJCQkgIE1JUElf RFNJX01PREVfTFBNOworCisJZHJtX3BhbmVsX2luaXQoJmN0eC0+cGFuZWwpOworCWN0eC0+cGFu ZWwuZGV2ID0gZGV2OworCWN0eC0+cGFuZWwuZnVuY3MgPSAmcm02ODIwMF9kcm1fZnVuY3M7CisK Kwlkcm1fcGFuZWxfYWRkKCZjdHgtPnBhbmVsKTsKKworCXJldCA9IG1pcGlfZHNpX2F0dGFjaChk c2kpOworCWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIoZGV2LCAibWlwaV9kc2lfYXR0YWNoIGZh aWxlZC4gSXMgaG9zdCByZWFkeT9cbiIpOworCQlkcm1fcGFuZWxfcmVtb3ZlKCZjdHgtPnBhbmVs KTsKKwkJaWYgKGN0eC0+YmxfZGV2KQorCQkJcHV0X2RldmljZSgmY3R4LT5ibF9kZXYtPmRldik7 CisJCXJldHVybiByZXQ7CisJfQorCisJRFJNX0lORk8oRFJWX05BTUUgIl9wYW5lbCAldXgldUAl dSAldWJwcCBkc2kgJXVkbCAtIHJlYWR5XG4iLAorCQkgZGVmYXVsdF9tb2RlLmhkaXNwbGF5LCBk ZWZhdWx0X21vZGUudmRpc3BsYXksCisJCSBkZWZhdWx0X21vZGUudnJlZnJlc2gsCisJCSBtaXBp X2RzaV9waXhlbF9mb3JtYXRfdG9fYnBwKGRzaS0+Zm9ybWF0KSwgZHNpLT5sYW5lcyk7CisKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGludCBybTY4MjAwX3JlbW92ZShzdHJ1Y3QgbWlwaV9kc2lf ZGV2aWNlICpkc2kpCit7CisJc3RydWN0IHJtNjgyMDAgKmN0eCA9IG1pcGlfZHNpX2dldF9kcnZk YXRhKGRzaSk7CisKKwlpZiAoY3R4LT5ibF9kZXYpCisJCXB1dF9kZXZpY2UoJmN0eC0+YmxfZGV2 LT5kZXYpOworCisJbWlwaV9kc2lfZGV0YWNoKGRzaSk7CisJZHJtX3BhbmVsX3JlbW92ZSgmY3R4 LT5wYW5lbCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZp Y2VfaWQgcmF5ZGl1bV9ybTY4MjAwX29mX21hdGNoW10gPSB7CisJeyAuY29tcGF0aWJsZSA9ICJy YXlkaXVtLHJtNjgyMDAiIH0sCisJeyB9Cit9OworTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgcmF5 ZGl1bV9ybTY4MjAwX29mX21hdGNoKTsKKworc3RhdGljIHN0cnVjdCBtaXBpX2RzaV9kcml2ZXIg cmF5ZGl1bV9ybTY4MjAwX2RyaXZlciA9IHsKKwkucHJvYmUgID0gcm02ODIwMF9wcm9iZSwKKwku cmVtb3ZlID0gcm02ODIwMF9yZW1vdmUsCisJLmRyaXZlciA9IHsKKwkJLm5hbWUgPSBEUlZfTkFN RSAiX3BhbmVsIiwKKwkJLm9mX21hdGNoX3RhYmxlID0gcmF5ZGl1bV9ybTY4MjAwX29mX21hdGNo LAorCX0sCit9OworbW9kdWxlX21pcGlfZHNpX2RyaXZlcihyYXlkaXVtX3JtNjgyMDBfZHJpdmVy KTsKKworTU9EVUxFX0FVVEhPUigiUGhpbGlwcGUgQ29ybnUgPHBoaWxpcHBlLmNvcm51QHN0LmNv bT4iKTsKK01PRFVMRV9BVVRIT1IoIllhbm5pY2sgRmVydHJlIDx5YW5uaWNrLmZlcnRyZUBzdC5j b20+Iik7CitNT0RVTEVfREVTQ1JJUFRJT04oIkRSTSBEcml2ZXIgZm9yIFJheWRpdW0gUk02ODIw MCBNSVBJIERTSSBwYW5lbCIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwotLSAKMi4xNS4x CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK