From mboxrd@z Thu Jan 1 00:00:00 1970 From: ville.syrjala@linux.intel.com Subject: [PATCH v3 10/14] drm/i915: Pass the cdclk state to the set_cdclk() functions Date: Fri, 20 Jan 2017 20:22:01 +0200 Message-ID: <20170120182205.8141-11-ville.syrjala@linux.intel.com> References: <20170120182205.8141-1-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5B74D6EC3F for ; Fri, 20 Jan 2017 18:22:43 +0000 (UTC) In-Reply-To: <20170120182205.8141-1-ville.syrjala@linux.intel.com> 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 RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KClJh dGhlciB0aGFuIHBhc3NpbmcgYWxsIHRoZSBkaWZmZXJlbnQgcGFyYW1ldGVycyAoY2RjbGssdmNv IHNvCmZhcikgc3BhcmF0ZWx5IHRvIHRoZSBzZXRfY2RjbGsoKSBmdW5jdGlvbnMsIGp1c3QgcGFz cyB0aGUKZW50aXJlIGNkY2xrIHN0YXRlLgoKdjI6IERlYWwgd2l0aCBjaHVybgp2MzogRHJvcCB0 aGUgdXNsZXNzIC5yZWYgYXNzaWdubWVudCAoQW5kZXIpCgpTaWduZWQtb2ZmLWJ5OiBWaWxsZSBT eXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogQW5k ZXIgQ29uc2VsdmFuIGRlIE9saXZlaXJhIDxjb25zZWx2YW4yQGdtYWlsLmNvbT4KLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNsay5jIHwgNzggKysrKysrKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspLCAzMCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNs ay5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY2RjbGsuYwppbmRleCA1MGFkNDAzOTlk ZTEuLmFkODk2OTAxMGM4OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Y2RjbGsuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNsay5jCkBAIC00NjEs OCArNDYxLDEwIEBAIHN0YXRpYyB2b2lkIHZsdl9wcm9ncmFtX3BmaV9jcmVkaXRzKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlXQVJOX09OKEk5MTVfUkVBRChHQ0lfQ09OVFJP TCkgJiBQRklfQ1JFRElUX1JFU0VORCk7CiB9CiAKLXN0YXRpYyB2b2lkIHZsdl9zZXRfY2RjbGso c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgY2RjbGspCitzdGF0aWMgdm9p ZCB2bHZfc2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCSAg Y29uc3Qgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpjZGNsa19zdGF0ZSkKIHsKKwlpbnQgY2Rj bGsgPSBjZGNsa19zdGF0ZS0+Y2RjbGs7CiAJdTMyIHZhbCwgY21kOwogCiAJaWYgKGNkY2xrID49 IDMyMDAwMCkgLyoganVtcCB0byBoaWdoZXN0IHZvbHRhZ2UgZm9yIDQwME1IeiB0b28gKi8KQEAg LTUyMyw4ICs1MjUsMTAgQEAgc3RhdGljIHZvaWQgdmx2X3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCBjZGNsaykKIAlpbnRlbF91cGRhdGVfY2RjbGsoZGV2 X3ByaXYpOwogfQogCi1zdGF0aWMgdm9pZCBjaHZfc2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwgaW50IGNkY2xrKQorc3RhdGljIHZvaWQgY2h2X3NldF9jZGNsayhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgIGNvbnN0IHN0cnVjdCBpbnRl bF9jZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUpCiB7CisJaW50IGNkY2xrID0gY2RjbGtfc3RhdGUt PmNkY2xrOwogCXUzMiB2YWwsIGNtZDsKIAogCXN3aXRjaCAoY2RjbGspIHsKQEAgLTU5Miw4ICs1 OTYsMTAgQEAgc3RhdGljIHZvaWQgYmR3X2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCiAJCWNkY2xrX3N0YXRlLT5jZGNsayA9IDY3NTAwMDsKIH0KIAotc3RhdGlj IHZvaWQgYmR3X3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGlu dCBjZGNsaykKK3N0YXRpYyB2b2lkIGJkd19zZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAorCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgKmNkY2xr X3N0YXRlKQogeworCWludCBjZGNsayA9IGNkY2xrX3N0YXRlLT5jZGNsazsKIAl1aW50MzJfdCB2 YWwsIGRhdGE7CiAJaW50IHJldDsKIApAQCAtODY0LDggKzg3MCwxMCBAQCBzdGF0aWMgdm9pZCBz a2xfZHBsbDBfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB9CiAK IHN0YXRpYyB2b2lkIHNrbF9zZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAotCQkJICBpbnQgY2RjbGssIGludCB2Y28pCisJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9j ZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUpCiB7CisJaW50IGNkY2xrID0gY2RjbGtfc3RhdGUtPmNk Y2xrOworCWludCB2Y28gPSBjZGNsa19zdGF0ZS0+dmNvOwogCXUzMiBmcmVxX3NlbGVjdCwgcGN1 X2FjazsKIAlpbnQgcmV0OwogCkBAIC05NzksNyArOTg3LDcgQEAgc3RhdGljIHZvaWQgc2tsX3Nh bml0aXplX2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKICAqLwogdm9p ZCBza2xfaW5pdF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0J aW50IGNkY2xrLCB2Y287CisJc3RydWN0IGludGVsX2NkY2xrX3N0YXRlIGNkY2xrX3N0YXRlOwog CiAJc2tsX3Nhbml0aXplX2NkY2xrKGRldl9wcml2KTsKIApAQCAtOTk1LDEyICsxMDAzLDE0IEBA IHZvaWQgc2tsX2luaXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog CQlyZXR1cm47CiAJfQogCi0JdmNvID0gZGV2X3ByaXYtPnNrbF9wcmVmZXJyZWRfdmNvX2ZyZXE7 Ci0JaWYgKHZjbyA9PSAwKQotCQl2Y28gPSA4MTAwMDAwOwotCWNkY2xrID0gc2tsX2NhbGNfY2Rj bGsoMCwgdmNvKTsKKwljZGNsa19zdGF0ZSA9IGRldl9wcml2LT5jZGNsay5odzsKIAotCXNrbF9z ZXRfY2RjbGsoZGV2X3ByaXYsIGNkY2xrLCB2Y28pOworCWNkY2xrX3N0YXRlLnZjbyA9IGRldl9w cml2LT5za2xfcHJlZmVycmVkX3Zjb19mcmVxOworCWlmIChjZGNsa19zdGF0ZS52Y28gPT0gMCkK KwkJY2RjbGtfc3RhdGUudmNvID0gODEwMDAwMDsKKwljZGNsa19zdGF0ZS5jZGNsayA9IHNrbF9j YWxjX2NkY2xrKDAsIGNkY2xrX3N0YXRlLnZjbyk7CisKKwlza2xfc2V0X2NkY2xrKGRldl9wcml2 LCAmY2RjbGtfc3RhdGUpOwogfQogCiAvKioKQEAgLTEwMTIsNyArMTAyMiwxMiBAQCB2b2lkIHNr bF9pbml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKICAqLwogdm9p ZCBza2xfdW5pbml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsK LQlza2xfc2V0X2NkY2xrKGRldl9wcml2LCBkZXZfcHJpdi0+Y2RjbGsuaHcucmVmLCAwKTsKKwlz dHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgY2RjbGtfc3RhdGUgPSBkZXZfcHJpdi0+Y2RjbGsuaHc7 CisKKwljZGNsa19zdGF0ZS5jZGNsayA9IGNkY2xrX3N0YXRlLnJlZjsKKwljZGNsa19zdGF0ZS52 Y28gPSAwOworCisJc2tsX3NldF9jZGNsayhkZXZfcHJpdiwgJmNkY2xrX3N0YXRlKTsKIH0KIAog c3RhdGljIGludCBieHRfY2FsY19jZGNsayhpbnQgbWF4X3BpeGNsaykKQEAgLTExNzYsOCArMTE5 MSwxMCBAQCBzdGF0aWMgdm9pZCBieHRfZGVfcGxsX2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsIGludCB2Y28pCiB9CiAKIHN0YXRpYyB2b2lkIGJ4dF9zZXRfY2RjbGso c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJICBpbnQgY2RjbGssIGludCB2 Y28pCisJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUpCiB7 CisJaW50IGNkY2xrID0gY2RjbGtfc3RhdGUtPmNkY2xrOworCWludCB2Y28gPSBjZGNsa19zdGF0 ZS0+dmNvOwogCXUzMiB2YWwsIGRpdmlkZXI7CiAJaW50IHJldDsKIApAQCAtMTMxMiw3ICsxMzI5 LDcgQEAgc3RhdGljIHZvaWQgYnh0X3Nhbml0aXplX2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKICAqLwogdm9pZCBieHRfaW5pdF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0JaW50IGNkY2xrLCB2Y287CisJc3RydWN0IGludGVsX2Nk Y2xrX3N0YXRlIGNkY2xrX3N0YXRlOwogCiAJYnh0X3Nhbml0aXplX2NkY2xrKGRldl9wcml2KTsK IApAQCAtMTMyMCwyMCArMTMzNywyMiBAQCB2b2lkIGJ4dF9pbml0X2NkY2xrKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkgICAgZGV2X3ByaXYtPmNkY2xrLmh3LnZjbyAhPSAw KQogCQlyZXR1cm47CiAKKwljZGNsa19zdGF0ZSA9IGRldl9wcml2LT5jZGNsay5odzsKKwogCS8q CiAJICogRklYTUU6CiAJICogLSBUaGUgaW5pdGlhbCBDRENMSyBuZWVkcyB0byBiZSByZWFkIGZy b20gVkJULgogCSAqICAgTmVlZCB0byBtYWtlIHRoaXMgY2hhbmdlIGFmdGVyIFZCVCBoYXMgY2hh bmdlcyBmb3IgQlhULgogCSAqLwogCWlmIChJU19HRU1JTklMQUtFKGRldl9wcml2KSkgewotCQlj ZGNsayA9IGdsa19jYWxjX2NkY2xrKDApOwotCQl2Y28gPSBnbGtfZGVfcGxsX3ZjbyhkZXZfcHJp diwgY2RjbGspOworCQljZGNsa19zdGF0ZS5jZGNsayA9IGdsa19jYWxjX2NkY2xrKDApOworCQlj ZGNsa19zdGF0ZS52Y28gPSBnbGtfZGVfcGxsX3ZjbyhkZXZfcHJpdiwgY2RjbGtfc3RhdGUuY2Rj bGspOwogCX0gZWxzZSB7Ci0JCWNkY2xrID0gYnh0X2NhbGNfY2RjbGsoMCk7Ci0JCXZjbyA9IGJ4 dF9kZV9wbGxfdmNvKGRldl9wcml2LCBjZGNsayk7CisJCWNkY2xrX3N0YXRlLmNkY2xrID0gYnh0 X2NhbGNfY2RjbGsoMCk7CisJCWNkY2xrX3N0YXRlLnZjbyA9IGJ4dF9kZV9wbGxfdmNvKGRldl9w cml2LCBjZGNsa19zdGF0ZS5jZGNsayk7CiAJfQogCi0JYnh0X3NldF9jZGNsayhkZXZfcHJpdiwg Y2RjbGssIHZjbyk7CisJYnh0X3NldF9jZGNsayhkZXZfcHJpdiwgJmNkY2xrX3N0YXRlKTsKIH0K IAogLyoqCkBAIC0xMzQ1LDcgKzEzNjQsMTIgQEAgdm9pZCBieHRfaW5pdF9jZGNsayhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAgKi8KIHZvaWQgYnh0X3VuaW5pdF9jZGNsayhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0JYnh0X3NldF9jZGNsayhkZXZf cHJpdiwgZGV2X3ByaXYtPmNkY2xrLmh3LnJlZiwgMCk7CisJc3RydWN0IGludGVsX2NkY2xrX3N0 YXRlIGNkY2xrX3N0YXRlID0gZGV2X3ByaXYtPmNkY2xrLmh3OworCisJY2RjbGtfc3RhdGUuY2Rj bGsgPSBjZGNsa19zdGF0ZS5yZWY7CisJY2RjbGtfc3RhdGUudmNvID0gMDsKKworCWJ4dF9zZXRf Y2RjbGsoZGV2X3ByaXYsICZjZGNsa19zdGF0ZSk7CiB9CiAKIC8qKgpAQCAtMTQ1OSw3ICsxNDgz LDYgQEAgc3RhdGljIGludCB2bHZfbW9kZXNldF9jYWxjX2NkY2xrKHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSkKIHN0YXRpYyB2b2lkIHZsdl9tb2Rlc2V0X2NvbW1pdF9jZGNsayhzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUob2xkX3N0YXRlLT5kZXYpOwotCXVuc2lnbmVkIGludCBy ZXFfY2RjbGsgPSBkZXZfcHJpdi0+Y2RjbGsuYWN0dWFsLmNkY2xrOwogCiAJLyoKIAkgKiBGSVhN RTogV2UgY2FuIGVuZCB1cCBoZXJlIHdpdGggYWxsIHBvd2VyIGRvbWFpbnMgb2ZmLCB5ZXQKQEAg LTE0NzMsOSArMTQ5Niw5IEBAIHN0YXRpYyB2b2lkIHZsdl9tb2Rlc2V0X2NvbW1pdF9jZGNsayhz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQogCWludGVsX2Rpc3BsYXlfcG93ZXJf Z2V0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fUElQRV9BKTsKIAogCWlmIChJU19DSEVSUllWSUVX KGRldl9wcml2KSkKLQkJY2h2X3NldF9jZGNsayhkZXZfcHJpdiwgcmVxX2NkY2xrKTsKKwkJY2h2 X3NldF9jZGNsayhkZXZfcHJpdiwgJmRldl9wcml2LT5jZGNsay5hY3R1YWwpOwogCWVsc2UKLQkJ dmx2X3NldF9jZGNsayhkZXZfcHJpdiwgcmVxX2NkY2xrKTsKKwkJdmx2X3NldF9jZGNsayhkZXZf cHJpdiwgJmRldl9wcml2LT5jZGNsay5hY3R1YWwpOwogCiAJdmx2X3Byb2dyYW1fcGZpX2NyZWRp dHMoZGV2X3ByaXYpOwogCkBAIC0xNTE4LDkgKzE1NDEsOCBAQCBzdGF0aWMgaW50IGJkd19tb2Rl c2V0X2NhbGNfY2RjbGsoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogc3RhdGljIHZv aWQgYmR3X21vZGVzZXRfY29tbWl0X2NkY2xrKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRf c3RhdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShv bGRfc3RhdGUtPmRldik7Ci0JdW5zaWduZWQgaW50IHJlcV9jZGNsayA9IGRldl9wcml2LT5jZGNs ay5hY3R1YWwuY2RjbGs7CiAKLQliZHdfc2V0X2NkY2xrKGRldl9wcml2LCByZXFfY2RjbGspOwor CWJkd19zZXRfY2RjbGsoZGV2X3ByaXYsICZkZXZfcHJpdi0+Y2RjbGsuYWN0dWFsKTsKIH0KIAog c3RhdGljIGludCBza2xfbW9kZXNldF9jYWxjX2NkY2xrKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZSkKQEAgLTE1NjUsMTAgKzE1ODcsOCBAQCBzdGF0aWMgaW50IHNrbF9tb2Rlc2V0X2Nh bGNfY2RjbGsoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogc3RhdGljIHZvaWQgc2ts X21vZGVzZXRfY29tbWl0X2NkY2xrKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUp CiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShvbGRfc3Rh dGUtPmRldik7Ci0JdW5zaWduZWQgaW50IHJlcV9jZGNsayA9IGRldl9wcml2LT5jZGNsay5hY3R1 YWwuY2RjbGs7Ci0JdW5zaWduZWQgaW50IHJlcV92Y28gPSBkZXZfcHJpdi0+Y2RjbGsuYWN0dWFs LnZjbzsKIAotCXNrbF9zZXRfY2RjbGsoZGV2X3ByaXYsIHJlcV9jZGNsaywgcmVxX3Zjbyk7CisJ c2tsX3NldF9jZGNsayhkZXZfcHJpdiwgJmRldl9wcml2LT5jZGNsay5hY3R1YWwpOwogfQogCiBz dGF0aWMgaW50IGJ4dF9tb2Rlc2V0X2NhbGNfY2RjbGsoc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlKQpAQCAtMTYxOCwxMCArMTYzOCw4IEBAIHN0YXRpYyBpbnQgYnh0X21vZGVzZXRfY2Fs Y19jZGNsayhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiBzdGF0aWMgdm9pZCBieHRf bW9kZXNldF9jb21taXRfY2RjbGsoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkK IHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KG9sZF9zdGF0 ZS0+ZGV2KTsKLQl1bnNpZ25lZCBpbnQgcmVxX2NkY2xrID0gZGV2X3ByaXYtPmNkY2xrLmFjdHVh bC5jZGNsazsKLQl1bnNpZ25lZCBpbnQgcmVxX3ZjbyA9IGRldl9wcml2LT5jZGNsay5hY3R1YWwu dmNvOwogCi0JYnh0X3NldF9jZGNsayhkZXZfcHJpdiwgcmVxX2NkY2xrLCByZXFfdmNvKTsKKwli eHRfc2V0X2NkY2xrKGRldl9wcml2LCAmZGV2X3ByaXYtPmNkY2xrLmFjdHVhbCk7CiB9CiAKIHN0 YXRpYyBpbnQgaW50ZWxfY29tcHV0ZV9tYXhfZG90Y2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKLS0gCjIuMTAuMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==