From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christophe Leroy Subject: [PATCH v3 02/17] crypto: talitos - Refactor the sg in/out chain allocation Date: Tue, 3 Mar 2015 03:08:52 +0100 Message-ID: <20150417142355.6A53C1A242C@localhost.localdomain> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, linux-crypto@vger.kernel.org To: Kim Phillips , Herbert Xu , David S Miller 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" List-Id: linux-crypto.vger.kernel.org VGhpcyBwYXRjaCByZWZhY3RvcnMgdGhlIGhhbmRsaW5nIG9mIHRoZSBpbnB1dCBhbmQgb3V0cHV0 IGRhdGEgdGhhdCBpcyBxdWl0ZQpzaW1pbGFyIGluIHNldmVyYWwgZnVuY3Rpb25zCgpTaWduZWQt b2ZmLWJ5OiBDaHJpc3RvcGhlIExlcm95IDxjaHJpc3RvcGhlLmxlcm95QGMtcy5mcj4KLS0tCiBk cml2ZXJzL2NyeXB0by90YWxpdG9zLmMgfCAxNTkgKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA4MSBpbnNlcnRpb25zKCspLCA3 OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NyeXB0by90YWxpdG9zLmMgYi9k cml2ZXJzL2NyeXB0by90YWxpdG9zLmMKaW5kZXggN2JmMWIyYi4uNWE3ZTM0NSAxMDA2NDQKLS0t IGEvZHJpdmVycy9jcnlwdG8vdGFsaXRvcy5jCisrKyBiL2RyaXZlcnMvY3J5cHRvL3RhbGl0b3Mu YwpAQCAtMTMyNywxNiArMTMyNywyMyBAQCBzdGF0aWMgaW50IGFibGtjaXBoZXJfc2V0a2V5KHN0 cnVjdCBjcnlwdG9fYWJsa2NpcGhlciAqY2lwaGVyLAogCXJldHVybiAwOwogfQogCitzdGF0aWMg dm9pZCB1bm1hcF9zZ190YWxpdG9zX3B0cihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBzY2F0 dGVybGlzdCAqc3JjLAorCQkJCSBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKmRzdCwgdW5zaWduZWQgaW50 IGxlbiwKKwkJCQkgc3RydWN0IHRhbGl0b3NfZWRlc2MgKmVkZXNjKQoreworCXRhbGl0b3Nfc2df dW5tYXAoZGV2LCBlZGVzYywgc3JjLCBkc3QpOworfQorCiBzdGF0aWMgdm9pZCBjb21tb25fbm9u c25vb3BfdW5tYXAoc3RydWN0IGRldmljZSAqZGV2LAogCQkJCSAgc3RydWN0IHRhbGl0b3NfZWRl c2MgKmVkZXNjLAogCQkJCSAgc3RydWN0IGFibGtjaXBoZXJfcmVxdWVzdCAqYXJlcSkKIHsKIAl1 bm1hcF9zaW5nbGVfdGFsaXRvc19wdHIoZGV2LCAmZWRlc2MtPmRlc2MucHRyWzVdLCBETUFfRlJP TV9ERVZJQ0UpOworCisJdW5tYXBfc2dfdGFsaXRvc19wdHIoZGV2LCBhcmVxLT5zcmMsIGFyZXEt PmRzdCwgYXJlcS0+bmJ5dGVzLCBlZGVzYyk7CiAJdW5tYXBfc2luZ2xlX3RhbGl0b3NfcHRyKGRl diwgJmVkZXNjLT5kZXNjLnB0clsyXSwgRE1BX1RPX0RFVklDRSk7CiAJdW5tYXBfc2luZ2xlX3Rh bGl0b3NfcHRyKGRldiwgJmVkZXNjLT5kZXNjLnB0clsxXSwgRE1BX1RPX0RFVklDRSk7CiAKLQl0 YWxpdG9zX3NnX3VubWFwKGRldiwgZWRlc2MsIGFyZXEtPnNyYywgYXJlcS0+ZHN0KTsKLQogCWlm IChlZGVzYy0+ZG1hX2xlbikKIAkJZG1hX3VubWFwX3NpbmdsZShkZXYsIGVkZXNjLT5kbWFfbGlu a190YmwsIGVkZXNjLT5kbWFfbGVuLAogCQkJCSBETUFfQklESVJFQ1RJT05BTCk7CkBAIC0xMzU4 LDYgKzEzNjUsNjUgQEAgc3RhdGljIHZvaWQgYWJsa2NpcGhlcl9kb25lKHN0cnVjdCBkZXZpY2Ug KmRldiwKIAlhcmVxLT5iYXNlLmNvbXBsZXRlKCZhcmVxLT5iYXNlLCBlcnIpOwogfQogCitpbnQg bWFwX3NnX2luX3RhbGl0b3NfcHRyKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHNjYXR0ZXJs aXN0ICpzcmMsCisJCQkgIHVuc2lnbmVkIGludCBsZW4sIHN0cnVjdCB0YWxpdG9zX2VkZXNjICpl ZGVzYywKKwkJCSAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyLCBzdHJ1Y3QgdGFsaXRvc19w dHIgKnB0cikKK3sKKwlpbnQgc2dfY291bnQ7CisKKwlwdHItPmxlbiA9IGNwdV90b19iZTE2KGxl bik7CisJcHRyLT5qX2V4dGVudCA9IDA7CisKKwlzZ19jb3VudCA9IHRhbGl0b3NfbWFwX3NnKGRl diwgc3JjLCBlZGVzYy0+c3JjX25lbnRzID8gOiAxLCBkaXIsCisJCQkJICBlZGVzYy0+c3JjX2No YWluZWQpOworCisJaWYgKHNnX2NvdW50ID09IDEpIHsKKwkJdG9fdGFsaXRvc19wdHIocHRyLCBz Z19kbWFfYWRkcmVzcyhzcmMpKTsKKwl9IGVsc2UgeworCQlzZ19jb3VudCA9IHNnX3RvX2xpbmtf dGJsKHNyYywgc2dfY291bnQsIGxlbiwKKwkJCQkJICAmZWRlc2MtPmxpbmtfdGJsWzBdKTsKKwkJ aWYgKHNnX2NvdW50ID4gMSkgeworCQkJdG9fdGFsaXRvc19wdHIocHRyLCBlZGVzYy0+ZG1hX2xp bmtfdGJsKTsKKwkJCXB0ci0+al9leHRlbnQgfD0gREVTQ19QVFJfTE5LVEJMX0pVTVA7CisJCQlk bWFfc3luY19zaW5nbGVfZm9yX2RldmljZShkZXYsIGVkZXNjLT5kbWFfbGlua190YmwsCisJCQkJ CQkgICBlZGVzYy0+ZG1hX2xlbiwKKwkJCQkJCSAgIERNQV9CSURJUkVDVElPTkFMKTsKKwkJfSBl bHNlIHsKKwkJCS8qIE9ubHkgb25lIHNlZ21lbnQgbm93LCBzbyBubyBsaW5rIHRibCBuZWVkZWQg Ki8KKwkJCXRvX3RhbGl0b3NfcHRyKHB0ciwgc2dfZG1hX2FkZHJlc3Moc3JjKSk7CisJCX0KKwl9 CisJcmV0dXJuIHNnX2NvdW50OworfQorCit2b2lkIG1hcF9zZ19vdXRfdGFsaXRvc19wdHIoc3Ry dWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKmRzdCwKKwkJCSAgICB1bnNpZ25l ZCBpbnQgbGVuLCBzdHJ1Y3QgdGFsaXRvc19lZGVzYyAqZWRlc2MsCisJCQkgICAgZW51bSBkbWFf ZGF0YV9kaXJlY3Rpb24gZGlyLAorCQkJICAgIHN0cnVjdCB0YWxpdG9zX3B0ciAqcHRyLCBpbnQg c2dfY291bnQpCit7CisJcHRyLT5sZW4gPSBjcHVfdG9fYmUxNihsZW4pOworCXB0ci0+al9leHRl bnQgPSAwOworCisJaWYgKGRpciAhPSBETUFfTk9ORSkKKwkJc2dfY291bnQgPSB0YWxpdG9zX21h cF9zZyhkZXYsIGRzdCwgZWRlc2MtPmRzdF9uZW50cyA/IDogMSwKKwkJCQkJICBkaXIsIGVkZXNj LT5kc3RfY2hhaW5lZCk7CisKKwlpZiAoc2dfY291bnQgPT0gMSkgeworCQl0b190YWxpdG9zX3B0 cihwdHIsIHNnX2RtYV9hZGRyZXNzKGRzdCkpOworCX0gZWxzZSB7CisJCXN0cnVjdCB0YWxpdG9z X3B0ciAqbGlua190YmxfcHRyID0KKwkJCSZlZGVzYy0+bGlua190YmxbZWRlc2MtPnNyY19uZW50 cyArIDFdOworCisJCXRvX3RhbGl0b3NfcHRyKHB0ciwgZWRlc2MtPmRtYV9saW5rX3RibCArCisJ CQkJCSAgICAgIChlZGVzYy0+c3JjX25lbnRzICsgMSkgKgorCQkJCQkgICAgICBzaXplb2Yoc3Ry dWN0IHRhbGl0b3NfcHRyKSk7CisJCXB0ci0+al9leHRlbnQgfD0gREVTQ19QVFJfTE5LVEJMX0pV TVA7CisJCXNnX2NvdW50ID0gc2dfdG9fbGlua190YmwoZHN0LCBzZ19jb3VudCwgbGVuLCBsaW5r X3RibF9wdHIpOworCQlkbWFfc3luY19zaW5nbGVfZm9yX2RldmljZShkZXYsIGVkZXNjLT5kbWFf bGlua190YmwsCisJCQkJCSAgIGVkZXNjLT5kbWFfbGVuLCBETUFfQklESVJFQ1RJT05BTCk7CisJ fQorfQorCiBzdGF0aWMgaW50IGNvbW1vbl9ub25zbm9vcChzdHJ1Y3QgdGFsaXRvc19lZGVzYyAq ZWRlc2MsCiAJCQkgICBzdHJ1Y3QgYWJsa2NpcGhlcl9yZXF1ZXN0ICphcmVxLAogCQkJICAgdm9p ZCAoKmNhbGxiYWNrKSAoc3RydWN0IGRldmljZSAqZGV2LApAQCAtMTM4Nyw1NiArMTQ1MywxNiBA QCBzdGF0aWMgaW50IGNvbW1vbl9ub25zbm9vcChzdHJ1Y3QgdGFsaXRvc19lZGVzYyAqZWRlc2Ms CiAJLyoKIAkgKiBjaXBoZXIgaW4KIAkgKi8KLQlkZXNjLT5wdHJbM10ubGVuID0gY3B1X3RvX2Jl MTYoY3J5cHRsZW4pOwotCWRlc2MtPnB0clszXS5qX2V4dGVudCA9IDA7Ci0KLQlzZ19jb3VudCA9 IHRhbGl0b3NfbWFwX3NnKGRldiwgYXJlcS0+c3JjLCBlZGVzYy0+c3JjX25lbnRzID8gOiAxLAot CQkJCSAgKGFyZXEtPnNyYyA9PSBhcmVxLT5kc3QpID8gRE1BX0JJRElSRUNUSU9OQUwKLQkJCQkJ CQkgICA6IERNQV9UT19ERVZJQ0UsCi0JCQkJICBlZGVzYy0+c3JjX2NoYWluZWQpOwotCi0JaWYg KHNnX2NvdW50ID09IDEpIHsKLQkJdG9fdGFsaXRvc19wdHIoJmRlc2MtPnB0clszXSwgc2dfZG1h X2FkZHJlc3MoYXJlcS0+c3JjKSk7Ci0JfSBlbHNlIHsKLQkJc2dfY291bnQgPSBzZ190b19saW5r X3RibChhcmVxLT5zcmMsIHNnX2NvdW50LCBjcnlwdGxlbiwKLQkJCQkJICAmZWRlc2MtPmxpbmtf dGJsWzBdKTsKLQkJaWYgKHNnX2NvdW50ID4gMSkgewotCQkJdG9fdGFsaXRvc19wdHIoJmRlc2Mt PnB0clszXSwgZWRlc2MtPmRtYV9saW5rX3RibCk7Ci0JCQlkZXNjLT5wdHJbM10ual9leHRlbnQg fD0gREVTQ19QVFJfTE5LVEJMX0pVTVA7Ci0JCQlkbWFfc3luY19zaW5nbGVfZm9yX2RldmljZShk ZXYsIGVkZXNjLT5kbWFfbGlua190YmwsCi0JCQkJCQkgICBlZGVzYy0+ZG1hX2xlbiwKLQkJCQkJ CSAgIERNQV9CSURJUkVDVElPTkFMKTsKLQkJfSBlbHNlIHsKLQkJCS8qIE9ubHkgb25lIHNlZ21l bnQgbm93LCBzbyBubyBsaW5rIHRibCBuZWVkZWQgKi8KLQkJCXRvX3RhbGl0b3NfcHRyKCZkZXNj LT5wdHJbM10sCi0JCQkJICAgICAgIHNnX2RtYV9hZGRyZXNzKGFyZXEtPnNyYykpOwotCQl9Ci0J fQorCXNnX2NvdW50ID0gbWFwX3NnX2luX3RhbGl0b3NfcHRyKGRldiwgYXJlcS0+c3JjLCBjcnlw dGxlbiwgZWRlc2MsCisJCQkJCSAoYXJlcS0+c3JjID09IGFyZXEtPmRzdCkgPworCQkJCQkgIERN QV9CSURJUkVDVElPTkFMIDogRE1BX1RPX0RFVklDRSwKKwkJCQkJICAmZGVzYy0+cHRyWzNdKTsK IAogCS8qIGNpcGhlciBvdXQgKi8KLQlkZXNjLT5wdHJbNF0ubGVuID0gY3B1X3RvX2JlMTYoY3J5 cHRsZW4pOwotCWRlc2MtPnB0cls0XS5qX2V4dGVudCA9IDA7Ci0KLQlpZiAoYXJlcS0+c3JjICE9 IGFyZXEtPmRzdCkKLQkJc2dfY291bnQgPSB0YWxpdG9zX21hcF9zZyhkZXYsIGFyZXEtPmRzdCwK LQkJCQkJICBlZGVzYy0+ZHN0X25lbnRzID8gOiAxLAotCQkJCQkgIERNQV9GUk9NX0RFVklDRSwg ZWRlc2MtPmRzdF9jaGFpbmVkKTsKLQotCWlmIChzZ19jb3VudCA9PSAxKSB7Ci0JCXRvX3RhbGl0 b3NfcHRyKCZkZXNjLT5wdHJbNF0sIHNnX2RtYV9hZGRyZXNzKGFyZXEtPmRzdCkpOwotCX0gZWxz ZSB7Ci0JCXN0cnVjdCB0YWxpdG9zX3B0ciAqbGlua190YmxfcHRyID0KLQkJCSZlZGVzYy0+bGlu a190YmxbZWRlc2MtPnNyY19uZW50cyArIDFdOwotCi0JCXRvX3RhbGl0b3NfcHRyKCZkZXNjLT5w dHJbNF0sIGVkZXNjLT5kbWFfbGlua190YmwgKwotCQkJCQkgICAgICAoZWRlc2MtPnNyY19uZW50 cyArIDEpICoKLQkJCQkJICAgICAgc2l6ZW9mKHN0cnVjdCB0YWxpdG9zX3B0cikpOwotCQlkZXNj LT5wdHJbNF0ual9leHRlbnQgfD0gREVTQ19QVFJfTE5LVEJMX0pVTVA7Ci0JCXNnX2NvdW50ID0g c2dfdG9fbGlua190YmwoYXJlcS0+ZHN0LCBzZ19jb3VudCwgY3J5cHRsZW4sCi0JCQkJCSAgbGlu a190YmxfcHRyKTsKLQkJZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2UoY3R4LT5kZXYsIGVkZXNj LT5kbWFfbGlua190YmwsCi0JCQkJCSAgIGVkZXNjLT5kbWFfbGVuLCBETUFfQklESVJFQ1RJT05B TCk7Ci0JfQorCW1hcF9zZ19vdXRfdGFsaXRvc19wdHIoZGV2LCBhcmVxLT5kc3QsIGNyeXB0bGVu LCBlZGVzYywKKwkJCSAgICAgICAoYXJlcS0+c3JjID09IGFyZXEtPmRzdCkgPyBETUFfTk9ORQor CQkJCQkJCTogRE1BX0ZST01fREVWSUNFLAorCQkJICAgICAgICZkZXNjLT5wdHJbNF0sIHNnX2Nv dW50KTsKIAogCS8qIGl2IG91dCAqLwogCW1hcF9zaW5nbGVfdGFsaXRvc19wdHIoZGV2LCAmZGVz Yy0+cHRyWzVdLCBpdnNpemUsIGN0eC0+aXYsIDAsCkBAIC0xNTA2LDYgKzE1MzIsOCBAQCBzdGF0 aWMgdm9pZCBjb21tb25fbm9uc25vb3BfaGFzaF91bm1hcChzdHJ1Y3QgZGV2aWNlICpkZXYsCiAK IAl1bm1hcF9zaW5nbGVfdGFsaXRvc19wdHIoZGV2LCAmZWRlc2MtPmRlc2MucHRyWzVdLCBETUFf RlJPTV9ERVZJQ0UpOwogCisJdW5tYXBfc2dfdGFsaXRvc19wdHIoZGV2LCByZXFfY3R4LT5wc3Jj LCBOVUxMLCAwLCBlZGVzYyk7CisKIAkvKiBXaGVuIHVzaW5nIGhhc2hjdHgtaW4sIG11c3QgdW5t YXAgaXQuICovCiAJaWYgKGVkZXNjLT5kZXNjLnB0clsxXS5sZW4pCiAJCXVubWFwX3NpbmdsZV90 YWxpdG9zX3B0cihkZXYsICZlZGVzYy0+ZGVzYy5wdHJbMV0sCkBAIC0xNTE1LDggKzE1NDMsNiBA QCBzdGF0aWMgdm9pZCBjb21tb25fbm9uc25vb3BfaGFzaF91bm1hcChzdHJ1Y3QgZGV2aWNlICpk ZXYsCiAJCXVubWFwX3NpbmdsZV90YWxpdG9zX3B0cihkZXYsICZlZGVzYy0+ZGVzYy5wdHJbMl0s CiAJCQkJCSBETUFfVE9fREVWSUNFKTsKIAotCXRhbGl0b3Nfc2dfdW5tYXAoZGV2LCBlZGVzYywg cmVxX2N0eC0+cHNyYywgTlVMTCk7Ci0KIAlpZiAoZWRlc2MtPmRtYV9sZW4pCiAJCWRtYV91bm1h cF9zaW5nbGUoZGV2LCBlZGVzYy0+ZG1hX2xpbmtfdGJsLCBlZGVzYy0+ZG1hX2xlbiwKIAkJCQkg RE1BX0JJRElSRUNUSU9OQUwpOwpAQCAtMTU1NSw3ICsxNTgxLDcgQEAgc3RhdGljIGludCBjb21t b25fbm9uc25vb3BfaGFzaChzdHJ1Y3QgdGFsaXRvc19lZGVzYyAqZWRlc2MsCiAJc3RydWN0IHRh bGl0b3NfYWhhc2hfcmVxX2N0eCAqcmVxX2N0eCA9IGFoYXNoX3JlcXVlc3RfY3R4KGFyZXEpOwog CXN0cnVjdCBkZXZpY2UgKmRldiA9IGN0eC0+ZGV2OwogCXN0cnVjdCB0YWxpdG9zX2Rlc2MgKmRl c2MgPSAmZWRlc2MtPmRlc2M7Ci0JaW50IHNnX2NvdW50LCByZXQ7CisJaW50IHJldDsKIAogCS8q IGZpcnN0IERXT1JEIGVtcHR5ICovCiAJZGVzYy0+cHRyWzBdID0gemVyb19lbnRyeTsKQEAgLTE1 ODMsMzEgKzE2MDksOCBAQCBzdGF0aWMgaW50IGNvbW1vbl9ub25zbm9vcF9oYXNoKHN0cnVjdCB0 YWxpdG9zX2VkZXNjICplZGVzYywKIAkvKgogCSAqIGRhdGEgaW4KIAkgKi8KLQlkZXNjLT5wdHJb M10ubGVuID0gY3B1X3RvX2JlMTYobGVuZ3RoKTsKLQlkZXNjLT5wdHJbM10ual9leHRlbnQgPSAw OwotCi0Jc2dfY291bnQgPSB0YWxpdG9zX21hcF9zZyhkZXYsIHJlcV9jdHgtPnBzcmMsCi0JCQkJ ICBlZGVzYy0+c3JjX25lbnRzID8gOiAxLAotCQkJCSAgRE1BX1RPX0RFVklDRSwgZWRlc2MtPnNy Y19jaGFpbmVkKTsKLQotCWlmIChzZ19jb3VudCA9PSAxKSB7Ci0JCXRvX3RhbGl0b3NfcHRyKCZk ZXNjLT5wdHJbM10sIHNnX2RtYV9hZGRyZXNzKHJlcV9jdHgtPnBzcmMpKTsKLQl9IGVsc2Ugewot CQlzZ19jb3VudCA9IHNnX3RvX2xpbmtfdGJsKHJlcV9jdHgtPnBzcmMsIHNnX2NvdW50LCBsZW5n dGgsCi0JCQkJCSAgJmVkZXNjLT5saW5rX3RibFswXSk7Ci0JCWlmIChzZ19jb3VudCA+IDEpIHsK LQkJCWRlc2MtPnB0clszXS5qX2V4dGVudCB8PSBERVNDX1BUUl9MTktUQkxfSlVNUDsKLQkJCXRv X3RhbGl0b3NfcHRyKCZkZXNjLT5wdHJbM10sIGVkZXNjLT5kbWFfbGlua190YmwpOwotCQkJZG1h X3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2UoY3R4LT5kZXYsCi0JCQkJCQkgICBlZGVzYy0+ZG1hX2xp bmtfdGJsLAotCQkJCQkJICAgZWRlc2MtPmRtYV9sZW4sCi0JCQkJCQkgICBETUFfQklESVJFQ1RJ T05BTCk7Ci0JCX0gZWxzZSB7Ci0JCQkvKiBPbmx5IG9uZSBzZWdtZW50IG5vdywgc28gbm8gbGlu ayB0YmwgbmVlZGVkICovCi0JCQl0b190YWxpdG9zX3B0cigmZGVzYy0+cHRyWzNdLAotCQkJCSAg ICAgICBzZ19kbWFfYWRkcmVzcyhyZXFfY3R4LT5wc3JjKSk7Ci0JCX0KLQl9CisJbWFwX3NnX2lu X3RhbGl0b3NfcHRyKGRldiwgcmVxX2N0eC0+cHNyYywgbGVuZ3RoLCBlZGVzYywKKwkJCSAgICAg IERNQV9UT19ERVZJQ0UsICZkZXNjLT5wdHJbM10pOwogCiAJLyogZmlmdGggRFdPUkQgZW1wdHkg Ki8KIAlkZXNjLT5wdHJbNF0gPSB6ZXJvX2VudHJ5OwotLSAKMi4xLjAKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4cHBjLWRldiBtYWlsaW5nIGxp c3QKTGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmcKaHR0cHM6Ly9saXN0cy5vemxhYnMub3Jn L2xpc3RpbmZvL2xpbnV4cHBjLWRldg==