From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from anholt.net (anholt.net [50.246.234.109]) by gabe.freedesktop.org (Postfix) with ESMTP id 9473E6E67D for ; Thu, 15 Nov 2018 18:57:48 +0000 (UTC) From: Eric Anholt Date: Thu, 15 Nov 2018 10:57:37 -0800 Message-Id: <20181115185737.19311-6-eric@anholt.net> In-Reply-To: <20181115185737.19311-1-eric@anholt.net> References: <20181115185737.19311-1-eric@anholt.net> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v2 6/6] v3d: Add tests for hanging V3D using an RCL. List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org List-ID: ZHJtLW1pc2MtbmV4dCByZWNlbnRseSByZWdyZXNzZWQgR1BVIGhhbmcgcmVjb3ZlcnksIGFuZCB0 aGVzZQpyZXByb2R1Y2UgdGhvc2UgYnVncy4KClNpZ25lZC1vZmYtYnk6IEVyaWMgQW5ob2x0IDxl cmljQGFuaG9sdC5uZXQ+Ci0tLQogbGliL2lndF92M2QuYyAgICAgICAgICAgICAgICAgICAgICAg IHwgMTI2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKwogbGliL2lndF92M2QuaCAgICAgICAg ICAgICAgICAgICAgICAgIHwgIDM4ICsrKysrKysrCiB0ZXN0cy9tZXNvbi5idWlsZCAgICAgICAg ICAgICAgICAgICAgfCAgIDEgKwogdGVzdHMvdjNkX2NpL3YzZC50ZXN0bGlzdCAgICAgICAgICAg IHwgICAyICsKIGxpYi9pZ3RfdjNkLmggPT4gdGVzdHMvdjNkX2NsX2hhbmcuYyB8ICA2MSArKysr KysrKystLS0tCiA1IGZpbGVzIGNoYW5nZWQsIDIxMSBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlv bnMoLSkKIGNvcHkgbGliL2lndF92M2QuaCA9PiB0ZXN0cy92M2RfY2xfaGFuZy5jICg1NiUpCgpk aWZmIC0tZ2l0IGEvbGliL2lndF92M2QuYyBiL2xpYi9pZ3RfdjNkLmMKaW5kZXggNjE5YzA3MmMw ZTQ3Li45YTlmMzJlMGNlZDQgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfdjNkLmMKKysrIGIvbGliL2ln dF92M2QuYwpAQCAtMTI0LDMgKzEyNCwxMjkgQEAgdm9pZCBpZ3RfdjNkX2JvX21tYXAoaW50IGZk LCBzdHJ1Y3QgdjNkX2JvICpibykKIAkJCQkgIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpOwogCWln dF9hc3NlcnQoYm8tPm1hcCk7CiB9CisKK3ZvaWQgKgoraWd0X3YzZF93YWl0X2JvKGludCBmZCwg dWludDMyX3QgaGFuZGxlKQoreworCXN0cnVjdCBkcm1fdjNkX3dhaXRfYm8gd2FpdF9ibyA9IHsK KwkJLmhhbmRsZSA9IGhhbmRsZSwKKwkJLnRpbWVvdXRfbnMgPSB+MHVsbCwKKwl9OworCisJZG9f aW9jdGwoZmQsIERSTV9JT0NUTF9WM0RfV0FJVF9CTywgJndhaXRfYm8pOworCisJcmV0dXJuIDA7 Cit9CisKK3ZvaWQgaWd0X3YzZF9ib193YWl0KGludCBmZCwgc3RydWN0IHYzZF9ibyAqYm8pCit7 CisJaWd0X3YzZF93YWl0X2JvKGZkLCBiby0+aGFuZGxlKTsKK30KKworc3RydWN0IHYzZF9jbCAq CitpZ3RfdjNkX2NsX2NyZWF0ZShpbnQgZmQsIHNpemVfdCBzaXplKQoreworCXN0cnVjdCB2M2Rf Y2wgKmNsID0gY2FsbG9jKDEsIHNpemVvZigqY2wpKTsKKworCWNsLT5mZCA9IGZkOworCWNsLT5i byA9IGlndF92M2RfY3JlYXRlX2JvKGZkLCBzaXplKTsKKwl2M2RfY2xfcmVmZXJlbmNlX2JvKGNs LCBjbC0+Ym8pOworCisJaWd0X3YzZF9ib19tbWFwKGZkLCBjbC0+Ym8pOworCWNsLT5uZXh0ID0g Y2wtPmJvLT5tYXA7CisKKwlyZXR1cm4gY2w7Cit9CisKKy8qKiBDcmVhdGVzIGEgc2ltcGxlIENM IGNvbnNpc3Rpbmcgb2YgYSBzaW5nbGUgTk9QIGluc3RydWN0aW9uLiAqLworc3RydWN0IHYzZF9j bCAqCitpZ3RfdjNkX2NsX2NyZWF0ZV9ub3AoaW50IGZkKQoreworCXN0cnVjdCB2M2RfY2wgKmNs ID0gaWd0X3YzZF9jbF9jcmVhdGUoZmQsIDEpOworICAgICAgICB1aW50OF90IG5vcF9vcGNvZGUg PSAxOworCisJbWVtY3B5KGNsLT5uZXh0LCAmbm9wX29wY29kZSwgMSk7CisJY2wtPm5leHQrKzsK KworCXJldHVybiBjbDsKK30KKworLyoqCisgKiBDcmVhdGVzIGEgc2ltcGxlIENMIGNvbnNpc3Rp bmcgb2YgYW4gaW5maW5pdGUgbG9vcCBicmFuY2hpbmcgdG8gaXRzZWxmLgorICovCitzdHJ1Y3Qg djNkX2NsICoKK2lndF92M2RfY2xfY3JlYXRlX2luZmluaXRlX2xvb3AoaW50IGZkKQoreworCXN0 cnVjdCB2M2RfY2wgKmNsID0gaWd0X3YzZF9jbF9jcmVhdGUoZmQsIDUpOworICAgICAgICB1aW50 OF90IGJyYW5jaF9vcGNvZGUgPSAxNjsKKworCW1lbWNweShjbC0+bmV4dCwgJmJyYW5jaF9vcGNv ZGUsIDEpOworCWNsLT5uZXh0Kys7CisKKwltZW1jcHkoY2wtPm5leHQsICZjbC0+Ym8tPm9mZnNl dCwgNCk7CisJY2wtPm5leHQgKz0gNDsKKworCXJldHVybiBjbDsKK30KKwordm9pZAoraWd0X3Yz ZF9jbF9mcmVlKHN0cnVjdCB2M2RfY2wgKmNsKQoreworCWlndF92M2RfZnJlZV9ibyhjbC0+ZmQs IGNsLT5ibyk7CisJZnJlZShjbCk7Cit9CisKK3ZvaWQKK2lndF92M2Rfc3VibWl0X2NsKGludCBm ZCwgc3RydWN0IGRybV92M2Rfc3VibWl0X2NsICpzdWJtaXQpCit7CisJZG9faW9jdGwoZmQsIERS TV9JT0NUTF9WM0RfU1VCTUlUX0NMLCBzdWJtaXQpOworfQorCit2b2lkCitpZ3RfdjNkX3N1Ym1p dF9yY2woc3RydWN0IHYzZF9jbCAqcmNsKQoreworCXN0cnVjdCBkcm1fdjNkX3N1Ym1pdF9jbCBz dWJtaXQgPSB7CisJCS5yY2xfc3RhcnQgPSByY2wtPmJvLT5vZmZzZXQsCisJCS5yY2xfZW5kID0g cmNsLT5iby0+b2Zmc2V0ICsgY2xfb2Zmc2V0KHJjbCksCisJCS5ib19oYW5kbGVzID0gKHVpbnRw dHJfdClyY2wtPmhhbmRsZXMsCisJCS5ib19oYW5kbGVfY291bnQgPSByY2wtPmhhbmRsZV9jb3Vu dCwKKwl9OworCWlndF92M2Rfc3VibWl0X2NsKHJjbC0+ZmQsICZzdWJtaXQpOworfQorCitzdGF0 aWMgYm9vbAoraGFuZGxlX2luX2xpc3QodWludDMyX3QgKmhhbmRsZXMsIGludCBoYW5kbGVfY291 bnQsIGludCBoYW5kbGUpCit7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBoYW5kbGVfY291bnQ7IGkr KykgeworCQlpZiAoaGFuZGxlc1tpXSA9PSBoYW5kbGUpCisJCQlyZXR1cm4gdHJ1ZTsKKwl9CisJ cmV0dXJuIGZhbHNlOworfQorCit2b2lkCitpZ3RfdjNkX3N1Ym1pdF9iY2xfYW5kX3JjbChzdHJ1 Y3QgdjNkX2NsICpiY2wsIHN0cnVjdCB2M2RfY2wgKnJjbCkKK3sKKwl1aW50MzJfdCBoYW5kbGVz WzMyXTsKKwlpbnQgaGFuZGxlX2NvdW50ID0gMDsKKworCS8qIE1lcmdlIHRoZSB0d28gaW5jb21p bmcgaGFuZGxlIGxpc3RzLiAqLworCWlndF9hc3NlcnQocmNsLT5oYW5kbGVfY291bnQgKyBiY2wt PmhhbmRsZV9jb3VudCA8PSBBUlJBWV9TSVpFKGhhbmRsZXMpKTsKKwlmb3IgKGludCBpID0gMDsg aSA8IHJjbC0+aGFuZGxlX2NvdW50OyBpKyspCisJCWhhbmRsZXNbaGFuZGxlX2NvdW50KytdID0g cmNsLT5oYW5kbGVzW2ldOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBiY2wtPmhhbmRsZV9jb3Vu dDsgaSsrKSB7CisJCWlmICghaGFuZGxlX2luX2xpc3QoaGFuZGxlcywgaGFuZGxlX2NvdW50LCBi Y2wtPmhhbmRsZXNbaV0pKQorCQkJaGFuZGxlc1toYW5kbGVfY291bnQrK10gPSBiY2wtPmhhbmRs ZXNbaV07CisJfQorCisJc3RydWN0IGRybV92M2Rfc3VibWl0X2NsIHN1Ym1pdCA9IHsKKwkJLnJj bF9zdGFydCA9IHJjbC0+Ym8tPm9mZnNldCwKKwkJLnJjbF9lbmQgPSByY2wtPmJvLT5vZmZzZXQg KyBjbF9vZmZzZXQocmNsKSwKKwkJLmJjbF9zdGFydCA9IGJjbC0+Ym8tPm9mZnNldCwKKwkJLmJj bF9lbmQgPSBiY2wtPmJvLT5vZmZzZXQgKyBjbF9vZmZzZXQoYmNsKSwKKwkJLmJvX2hhbmRsZXMg PSAodWludHB0cl90KWhhbmRsZXMsCisJCS5ib19oYW5kbGVfY291bnQgPSBoYW5kbGVfY291bnQs CisJfTsKKwlpZ3RfdjNkX3N1Ym1pdF9jbChyY2wtPmZkLCAmc3VibWl0KTsKK30KZGlmZiAtLWdp dCBhL2xpYi9pZ3RfdjNkLmggYi9saWIvaWd0X3YzZC5oCmluZGV4IDIwNDI5OTUxMDNjYy4uN2Rk YmVlMzZhNTQ3IDEwMDY0NAotLS0gYS9saWIvaWd0X3YzZC5oCisrKyBiL2xpYi9pZ3RfdjNkLmgK QEAgLTMzLDYgKzMzLDE1IEBAIHN0cnVjdCB2M2RfYm8gewogCXZvaWQgKm1hcDsKIH07CiAKK3N0 cnVjdCB2M2RfY2wgeworCWludCBmZDsKKwlzdHJ1Y3QgdjNkX2JvICpibzsKKwl2b2lkICpuZXh0 OworCisJdWludDMyX3QgaGFuZGxlc1szMl07CisJdWludDMyX3QgaGFuZGxlX2NvdW50OworfTsK Kwogc3RydWN0IHYzZF9ibyAqaWd0X3YzZF9jcmVhdGVfYm8oaW50IGZkLCBzaXplX3Qgc2l6ZSk7 CiB2b2lkIGlndF92M2RfZnJlZV9ibyhpbnQgZmQsIHN0cnVjdCB2M2RfYm8gKmJvKTsKIApAQCAt NDAsNyArNDksMzYgQEAgdm9pZCBpZ3RfdjNkX2ZyZWVfYm8oaW50IGZkLCBzdHJ1Y3QgdjNkX2Jv ICpibyk7CiB1aW50MzJfdCBpZ3RfdjNkX2dldF9ib19vZmZzZXQoaW50IGZkLCB1aW50MzJfdCBo YW5kbGUpOwogdWludDMyX3QgaWd0X3YzZF9nZXRfcGFyYW0oaW50IGZkLCBlbnVtIGRybV92M2Rf cGFyYW0gcGFyYW0pOwogdm9pZCAqaWd0X3YzZF9tbWFwX2JvKGludCBmZCwgdWludDMyX3QgaGFu ZGxlLCB1aW50MzJfdCBzaXplLCB1bnNpZ25lZCBwcm90KTsKK3ZvaWQgKmlndF92M2Rfd2FpdF9i byhpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSk7Cit2b2lkIGlndF92M2Rfc3VibWl0X2NsKGludCBm ZCwgc3RydWN0IGRybV92M2Rfc3VibWl0X2NsICpzdWJtaXQpOwordm9pZCBpZ3RfdjNkX3N1Ym1p dF9yY2woc3RydWN0IHYzZF9jbCAqcmNsKTsKK3ZvaWQgaWd0X3YzZF9zdWJtaXRfYmNsX2FuZF9y Y2woc3RydWN0IHYzZF9jbCAqYmNsLCBzdHJ1Y3QgdjNkX2NsICpyY2wpOwogCiB2b2lkIGlndF92 M2RfYm9fbW1hcChpbnQgZmQsIHN0cnVjdCB2M2RfYm8gKmJvKTsKK3ZvaWQgaWd0X3YzZF9ib193 YWl0KGludCBmZCwgc3RydWN0IHYzZF9ibyAqYm8pOworCitzdGF0aWMgaW5saW5lIHZvaWQgdjNk X2NsX3JlZmVyZW5jZV9ibyhzdHJ1Y3QgdjNkX2NsICpjbCwKKwkJCQkgICAgICAgY29uc3Qgc3Ry dWN0IHYzZF9ibyAqYm8pCit7CisJaWYgKCFibykKKwkJcmV0dXJuOworCisJZm9yIChpbnQgaSA9 IDA7IGkgPCBjbC0+aGFuZGxlX2NvdW50OyBpKyspIHsKKwkJaWYgKGNsLT5oYW5kbGVzW2ldID09 IGJvLT5oYW5kbGUpCisJCQlyZXR1cm47CisJfQorCisJY2wtPmhhbmRsZXNbY2wtPmhhbmRsZV9j b3VudCsrXSA9IGJvLT5oYW5kbGU7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgY2xfb2Zm c2V0KHN0cnVjdCB2M2RfY2wgKmNsKQoreworCXJldHVybiAoY2hhciAqKWNsLT5uZXh0IC0gKGNo YXIgKiljbC0+Ym8tPm1hcDsKK30KKworc3RydWN0IHYzZF9jbCAqaWd0X3YzZF9jbF9jcmVhdGUo aW50IGZkLCBzaXplX3Qgc2l6ZSk7CitzdHJ1Y3QgdjNkX2NsICppZ3RfdjNkX2NsX2NyZWF0ZV9p bmZpbml0ZV9sb29wKGludCBmZCk7CitzdHJ1Y3QgdjNkX2NsICppZ3RfdjNkX2NsX2NyZWF0ZV9u b3AoaW50IGZkKTsKK3ZvaWQgaWd0X3YzZF9jbF9mcmVlKHN0cnVjdCB2M2RfY2wgKmNsKTsKIAog I2VuZGlmIC8qIElHVF9WM0RfSCAqLwpkaWZmIC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVpbGQgYi90 ZXN0cy9tZXNvbi5idWlsZAppbmRleCA0NDcyNTM2YWVmNjUuLmVjOGFkMTQyMWI2MSAxMDA2NDQK LS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKKysrIGIvdGVzdHMvbWVzb24uYnVpbGQKQEAgLTg4LDYg Kzg4LDcgQEAgdGVzdF9wcm9ncyA9IFsKIAkndjNkX2dldF9ib19vZmZzZXQnLAogCSd2M2RfZ2V0 X3BhcmFtJywKIAkndjNkX21tYXAnLAorCSd2M2RfY2xfaGFuZycsCiAJJ3ZjNF9jcmVhdGVfYm8n LAogCSd2YzRfZG1hYnVmX3BvbGwnLAogCSd2YzRfbGFiZWxfYm8nLApkaWZmIC0tZ2l0IGEvdGVz dHMvdjNkX2NpL3YzZC50ZXN0bGlzdCBiL3Rlc3RzL3YzZF9jaS92M2QudGVzdGxpc3QKaW5kZXgg YjU1ZThlNTcxZDdkLi5iZjYyNWY3ODhmNzkgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3YzZF9jaS92M2Qu dGVzdGxpc3QKKysrIGIvdGVzdHMvdjNkX2NpL3YzZC50ZXN0bGlzdApAQCAtMSwzICsxLDUgQEAK K2lndEB2M2RfY2xfaGFuZ0ByY2wtaW5maW5pdGUtbG9vcAoraWd0QHYzZF9jbF9oYW5nQGJjbC1p bmZpbml0ZS1sb29wCiBpZ3RAdjNkX2dldF9ib19vZmZzZXRAY3JlYXRlLWdldC1vZmZzZXRzCiBp Z3RAdjNkX2dldF9ib19vZmZzZXRAZ2V0LWJhZC1oYW5kbGUKIGlndEB2M2RfZ2V0X3BhcmFtQGJh c2UtcGFyYW1zCmRpZmYgLS1naXQgYS9saWIvaWd0X3YzZC5oIGIvdGVzdHMvdjNkX2NsX2hhbmcu YwpzaW1pbGFyaXR5IGluZGV4IDU2JQpjb3B5IGZyb20gbGliL2lndF92M2QuaApjb3B5IHRvIHRl c3RzL3YzZF9jbF9oYW5nLmMKaW5kZXggMjA0Mjk5NTEwM2NjLi42ZWNjMzM3YzI0MzIgMTAwNjQ0 Ci0tLSBhL2xpYi9pZ3RfdjNkLmgKKysrIGIvdGVzdHMvdjNkX2NsX2hhbmcuYwpAQCAtMjEsMjYg KzIxLDUzIEBACiAgKiBJTiBUSEUgU09GVFdBUkUuCiAgKi8KIAotI2lmbmRlZiBJR1RfVjNEX0gK LSNkZWZpbmUgSUdUX1YzRF9ICi0KKyNpbmNsdWRlICJpZ3QuaCIKKyNpbmNsdWRlICJpZ3RfdjNk LmgiCisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8 c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1 ZGUgPGludHR5cGVzLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5o PgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgogI2luY2x1ZGUgInYzZF9kcm0uaCIKIAotc3RydWN0 IHYzZF9ibyB7Ci0JaW50IGhhbmRsZTsKLQl1aW50MzJfdCBvZmZzZXQ7Ci0JdWludDMyX3Qgc2l6 ZTsKLQl2b2lkICptYXA7Ci19OworaWd0X21haW4KK3sKKwlpbnQgZmQ7CisKKwlpZ3RfZml4dHVy ZSB7CisJCWZkID0gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9WM0QpOworCX0KKworCWlndF9zdWJ0 ZXN0KCJyY2wtaW5maW5pdGUtbG9vcCIpIHsKKwkJc3RydWN0IHYzZF9jbCAqaGFuZyA9IGlndF92 M2RfY2xfY3JlYXRlX2luZmluaXRlX2xvb3AoZmQpOworCQlzdHJ1Y3QgdjNkX2NsICpub3AgPSBp Z3RfdjNkX2NsX2NyZWF0ZV9ub3AoZmQpOworCisJCWlndF92M2Rfc3VibWl0X3JjbChoYW5nKTsK KworCQlpZ3RfdjNkX3N1Ym1pdF9yY2wobm9wKTsKKwkJaWd0X3YzZF9ib193YWl0KGZkLCBub3At PmJvKTsKKworCQlpZ3RfdjNkX2NsX2ZyZWUoaGFuZyk7CisJCWlndF92M2RfY2xfZnJlZShub3Ap OworCX0KKworCWlndF9zdWJ0ZXN0KCJiY2wtaW5maW5pdGUtbG9vcCIpIHsKKwkJc3RydWN0IHYz ZF9jbCAqaGFuZyA9IGlndF92M2RfY2xfY3JlYXRlX2luZmluaXRlX2xvb3AoZmQpOworCQlzdHJ1 Y3QgdjNkX2NsICpub3AgPSBpZ3RfdjNkX2NsX2NyZWF0ZV9ub3AoZmQpOwogCi1zdHJ1Y3QgdjNk X2JvICppZ3RfdjNkX2NyZWF0ZV9ibyhpbnQgZmQsIHNpemVfdCBzaXplKTsKLXZvaWQgaWd0X3Yz ZF9mcmVlX2JvKGludCBmZCwgc3RydWN0IHYzZF9ibyAqYm8pOworCQlpZ3RfdjNkX3N1Ym1pdF9i Y2xfYW5kX3JjbChoYW5nLCBub3ApOwogCi0vKiBJT0NUTCB3cmFwcGVycyAqLwotdWludDMyX3Qg aWd0X3YzZF9nZXRfYm9fb2Zmc2V0KGludCBmZCwgdWludDMyX3QgaGFuZGxlKTsKLXVpbnQzMl90 IGlndF92M2RfZ2V0X3BhcmFtKGludCBmZCwgZW51bSBkcm1fdjNkX3BhcmFtIHBhcmFtKTsKLXZv aWQgKmlndF92M2RfbW1hcF9ibyhpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDMyX3Qgc2l6 ZSwgdW5zaWduZWQgcHJvdCk7CisJCWlndF92M2Rfc3VibWl0X3JjbChub3ApOworCQlpZ3RfdjNk X2JvX3dhaXQoZmQsIG5vcC0+Ym8pOwogCi12b2lkIGlndF92M2RfYm9fbW1hcChpbnQgZmQsIHN0 cnVjdCB2M2RfYm8gKmJvKTsKKwkJaWd0X3YzZF9jbF9mcmVlKGhhbmcpOworCQlpZ3RfdjNkX2Ns X2ZyZWUobm9wKTsKKwl9CiAKLSNlbmRpZiAvKiBJR1RfVjNEX0ggKi8KKwlpZ3RfZml4dHVyZQor CQljbG9zZShmZCk7Cit9Ci0tIAoyLjE5LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaWd0LWRldgo=