From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 1/5] drm/i915: Record the sseu configuration per-context & engine Date: Wed, 30 Jan 2019 09:34:12 +0000 Message-ID: <20190130093416.3513-2-tvrtko.ursulin@linux.intel.com> References: <20190130093416.3513-1-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1B2DE6E15B for ; Wed, 30 Jan 2019 09:34:14 +0000 (UTC) In-Reply-To: <20190130093416.3513-1-tvrtko.ursulin@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 RnJvbTogTGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJsaW5AaW50ZWwuY29tPgoK V2Ugd2FudCB0byBleHBvc2UgdGhlIGFiaWxpdHkgdG8gcmVjb25maWd1cmUgdGhlIHNsaWNlcywg c3Vic2xpY2UgYW5kCmV1IHBlciBjb250ZXh0IGFuZCBwZXIgZW5naW5lLiBUbyBmYWNpbGl0YXRl IHRoYXQsIHN0b3JlIHRoZSBjdXJyZW50CmNvbmZpZ3VyYXRpb24gb24gdGhlIGNvbnRleHQgZm9y IGVhY2ggZW5naW5lLCB3aGljaCBpcyBpbml0aWFsbHkgc2V0CnRvIHRoZSBkZXZpY2UgZGVmYXVs dCB1cG9uIGNyZWF0aW9uLgoKdjI6IHJlY29yZCBzc2V1IGNvbmZpZ3VyYXRpb24gcGVyIGNvbnRl eHQgJiBlbmdpbmUgKENocmlzKQoKdjM6IGludHJvZHVjZSB0aGUgaTkxNV9nZW1fY29udGV4dF9z c2V1IHRvIHN0b3JlIHBvd2VyZ2F0aW5nCiAgICBwcm9ncmFtbWluZywgc3NldV9kZXZfaW5mbyBo YXMgZ3Jvd24gcXVpdGUgYSBiaXQgKExpb25lbCkKCnY0OiByZW5hbWUgaTkxNV9nZW1fc3NldSBp bnRvIGludGVsX3NzZXUgKENocmlzKQogICAgdXNlIHRvX2ludGVsX2NvbnRleHQoKSAoQ2hyaXMp Cgp2NTogTW9yZSB0b19pbnRlbF9jb250ZXh0KCkgKFR2cnRrbykKICAgIFN3aXRjaCBpbnRlbF9z c2V1IGZyb20gdW5pb24gdG8gc3RydWN0IChUdnJ0a28pCiAgICBNb3ZlIGNvbnRleHQgZGVmYXVs dCBzc2V1IGluIGV4aXN0aW5nIGxvb3AgKENocmlzKQoKdjY6IHMvaW50ZWxfc3NldV9mcm9tX2Rl dmljZV9zc2V1L2ludGVsX2RldmljZV9kZWZhdWx0X3NzZXUvIChUdnJ0a28pCgpUdnJ0a28gVXJz dWxpbjoKCnY3OgogKiBQYXNzIGludGVsX3NzZXUgYnkgcG9pbnRlciBpbnN0ZWFkIG9mIHZhbHVl IHRvIG1ha2VfcnBjcy4KICogUmViYXNlIGZvciBtYWtlX3JwY3MgY2hhbmdlcy4KCnY4OgogKiBS ZWJhc2UgZm9yIFJQQ1MgZWRpdCBvbiBwaW4uCgp2OToKICogUmViYXNlIGZvciBjb250ZXh0IGlt YWdlIHNldHVwIGNoYW5nZXMuCgp2MTA6CiAqIFJlbmFtZSBkZXZfcHJpdiB0byBpOTE1LiAoQ2hy aXMgV2lsc29uKQoKdjExOgogKiBSZWJhc2UuCgp2MTI6CiAqIFJlYmFzZSBmb3IgSVNfR0VOIGNo YW5nZXMuCgp2MTM6CiAqIFJlYmFzZSBmb3IgUlVOVElNRV9JTkZPLgoKdjE0OgogKiBSZWJhc2Ug Zm9yIGludGVsX2NvbnRleHRfaW5pdC4KCnYxNToKICogUmViYXNlIGZvciBkcm0tdGlwIGNoYW5n ZXMuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51 az4KU2lnbmVkLW9mZi1ieTogTGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJsaW5A aW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5A aW50ZWwuY29tPgpSZXZpZXdlZC1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24u Y28udWs+ClJldmlld2VkLWJ5OiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51 eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAg IHwgMTQgKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQu YyB8ICAzICsrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oIHwgIDQg KysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmggICAgIHwgMTAgKysrKysr KysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICB8IDMxICsrKysrKysr KysrKystLS0tLS0tLS0tLS0KIDUgZmlsZXMgY2hhbmdlZCwgNDcgaW5zZXJ0aW9ucygrKSwgMTUg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggZDA3MmYzMzY5ZWUxLi5j YmFlNjgzZTJhYzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMzMwMiw2ICszMzAyLDIw IEBAIG1rd3JpdGVfZGV2aWNlX2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQogCXJldHVybiAoc3RydWN0IGludGVsX2RldmljZV9pbmZvICopSU5URUxfSU5GTyhkZXZfcHJp dik7CiB9CiAKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGludGVsX3NzZXUKK2ludGVsX2RldmljZV9k ZWZhdWx0X3NzZXUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCit7CisJY29uc3Qgc3Ry dWN0IHNzZXVfZGV2X2luZm8gKnNzZXUgPSAmUlVOVElNRV9JTkZPKGk5MTUpLT5zc2V1OworCXN0 cnVjdCBpbnRlbF9zc2V1IHZhbHVlID0geworCQkuc2xpY2VfbWFzayA9IHNzZXUtPnNsaWNlX21h c2ssCisJCS5zdWJzbGljZV9tYXNrID0gc3NldS0+c3Vic2xpY2VfbWFza1swXSwKKwkJLm1pbl9l dXNfcGVyX3N1YnNsaWNlID0gc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UsCisJCS5tYXhfZXVz X3Blcl9zdWJzbGljZSA9IHNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlLAorCX07CisKKwlyZXR1 cm4gdmFsdWU7Cit9CisKIC8qIG1vZGVzZXR0aW5nICovCiBleHRlcm4gdm9pZCBpbnRlbF9tb2Rl c2V0X2luaXRfaHcoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBleHRlcm4gaW50IGludGVsX21v ZGVzZXRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2NvbnRleHQuYwppbmRleCA2ZmFmMWY2ZmFhYjUuLmQzODg3YzI3YzNiYSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwpAQCAtMzMwLDYgKzMzMCw5IEBAIGlu dGVsX2NvbnRleHRfaW5pdChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCiAKIAlJTklUX0xJU1Rf SEVBRCgmY2UtPnNpZ25hbF9saW5rKTsKIAlJTklUX0xJU1RfSEVBRCgmY2UtPnNpZ25hbHMpOwor CisJLyogVXNlIHRoZSB3aG9sZSBkZXZpY2UgYnkgZGVmYXVsdCAqLworCWNlLT5zc2V1ID0gaW50 ZWxfZGV2aWNlX2RlZmF1bHRfc3NldShjdHgtPmk5MTUpOwogfQogCiBzdGF0aWMgc3RydWN0IGk5 MTVfZ2VtX2NvbnRleHQgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fY29udGV4dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCmlu ZGV4IDZiYTQwZmY2YjkxZi4uMmYwODY0Njc5MDMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fY29udGV4dC5oCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJpOTE1X2dlbS5o IgogI2luY2x1ZGUgImk5MTVfc2NoZWR1bGVyLmgiCisjaW5jbHVkZSAiaW50ZWxfZGV2aWNlX2lu Zm8uaCIKIAogc3RydWN0IHBpZDsKIApAQCAtMTczLDYgKzE3NCw5IEBAIHN0cnVjdCBpOTE1X2dl bV9jb250ZXh0IHsKIAkJaW50IHBpbl9jb3VudDsKIAogCQljb25zdCBzdHJ1Y3QgaW50ZWxfY29u dGV4dF9vcHMgKm9wczsKKworCQkvKiogc3NldTogQ29udHJvbCBldS9zbGljZSBwYXJ0aXRpb25p bmcgKi8KKwkJc3RydWN0IGludGVsX3NzZXUgc3NldTsKIAl9IF9fZW5naW5lW0k5MTVfTlVNX0VO R0lORVNdOwogCiAJLyoqIHJpbmdfc2l6ZTogc2l6ZSBmb3IgYWxsb2NhdGluZyB0aGUgcGVyLWVu Z2luZSByaW5nIGJ1ZmZlciAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZXF1ZXN0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaAppbmRleCAz Y2ZmYjk2MjAzYjkuLmVjZWY2MjU2ZGQyNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9yZXF1ZXN0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0 LmgKQEAgLTM4LDYgKzM4LDE2IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0Owogc3RydWN0 IGk5MTVfcmVxdWVzdDsKIHN0cnVjdCBpOTE1X3RpbWVsaW5lOwogCisvKgorICogUG93ZXJnYXRp bmcgY29uZmlndXJhdGlvbiBmb3IgYSBwYXJ0aWN1bGFyIChjb250ZXh0LGVuZ2luZSkuCisgKi8K K3N0cnVjdCBpbnRlbF9zc2V1IHsKKwl1OCBzbGljZV9tYXNrOworCXU4IHN1YnNsaWNlX21hc2s7 CisJdTggbWluX2V1c19wZXJfc3Vic2xpY2U7CisJdTggbWF4X2V1c19wZXJfc3Vic2xpY2U7Cit9 OworCiBzdHJ1Y3QgaTkxNV9jYXB0dXJlX2xpc3QgewogCXN0cnVjdCBpOTE1X2NhcHR1cmVfbGlz dCAqbmV4dDsKIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMK aW5kZXggYTllYjAyMTFjZTc3Li43NjgyZjFlNzFkNTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xy Yy5jCkBAIC0xMjY2LDcgKzEyNjYsOCBAQCBzdGF0aWMgaW50IF9fY29udGV4dF9waW4oc3RydWN0 IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwgc3RydWN0IGk5MTVfdm1hICp2bWEpCiAJcmV0dXJuIGk5 MTVfdm1hX3Bpbih2bWEsIDAsIDAsIGZsYWdzKTsKIH0KIAotc3RhdGljIHUzMiBtYWtlX3JwY3Mo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKK3N0YXRpYyB1MzIKK21ha2VfcnBj cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgc3RydWN0IGludGVsX3NzZXUgKmN0eF9z c2V1KTsKIAogc3RhdGljIHZvaWQKIF9fZXhlY2xpc3RzX3VwZGF0ZV9yZWdfc3RhdGUoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLApAQCAtMTI4MSw3ICsxMjgyLDggQEAgX19leGVjbGlz dHNfdXBkYXRlX3JlZ19zdGF0ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAKIAkv KiBSUENTICovCiAJaWYgKGVuZ2luZS0+Y2xhc3MgPT0gUkVOREVSX0NMQVNTKQotCQlyZWdzW0NU WF9SX1BXUl9DTEtfU1RBVEUgKyAxXSA9IG1ha2VfcnBjcyhlbmdpbmUtPmk5MTUpOworCQlyZWdz W0NUWF9SX1BXUl9DTEtfU1RBVEUgKyAxXSA9IG1ha2VfcnBjcyhlbmdpbmUtPmk5MTUsCisJCQkJ CQkJICAmY2UtPnNzZXUpOwogfQogCiBzdGF0aWMgc3RydWN0IGludGVsX2NvbnRleHQgKgpAQCAt MjQzMiwxOCArMjQzNCwxOSBAQCBpbnQgbG9naWNhbF94Y3NfcmluZ19pbml0KHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKIH0KIAogc3RhdGljIHUzMgotbWFrZV9ycGNzKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK21ha2VfcnBjcyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSwgc3RydWN0IGludGVsX3NzZXUgKmN0eF9zc2V1KQogewotCWJvb2wgc3Vic2xp Y2VfcGcgPSBSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1Lmhhc19zdWJzbGljZV9wZzsKLQl1 OCBzbGljZXMgPSBod2VpZ2h0OChSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1LnNsaWNlX21h c2spOwotCXU4IHN1YnNsaWNlcyA9IGh3ZWlnaHQ4KFJVTlRJTUVfSU5GTyhkZXZfcHJpdiktPnNz ZXUuc3Vic2xpY2VfbWFza1swXSk7CisJY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUg PSAmUlVOVElNRV9JTkZPKGk5MTUpLT5zc2V1OworCWJvb2wgc3Vic2xpY2VfcGcgPSBzc2V1LT5o YXNfc3Vic2xpY2VfcGc7CisJdTggc2xpY2VzID0gaHdlaWdodDgoY3R4X3NzZXUtPnNsaWNlX21h c2spOworCXU4IHN1YnNsaWNlcyA9IGh3ZWlnaHQ4KGN0eF9zc2V1LT5zdWJzbGljZV9tYXNrKTsK IAl1MzIgcnBjcyA9IDA7CiAKIAkvKgogCSAqIE5vIGV4cGxpY2l0IFJQQ1MgcmVxdWVzdCBpcyBu ZWVkZWQgdG8gZW5zdXJlIGZ1bGwKIAkgKiBzbGljZS9zdWJzbGljZS9FVSBlbmFibGVtZW50IHBy aW9yIHRvIEdlbjkuCiAJKi8KLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDkpCisJaWYgKElO VEVMX0dFTihpOTE1KSA8IDkpCiAJCXJldHVybiAwOwogCiAJLyoKQEAgLTI0NzEsNyArMjQ3NCw3 IEBAIG1ha2VfcnBjcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJICogc3Vi c2xpY2VzIGFyZSBlbmFibGVkLCBvciBhIGNvdW50IGJldHdlZW4gb25lIGFuZCBmb3VyIG9uIHRo ZSBmaXJzdAogCSAqIHNsaWNlLgogCSAqLwotCWlmIChJU19HRU4oZGV2X3ByaXYsIDExKSAmJiBz bGljZXMgPT0gMSAmJiBzdWJzbGljZXMgPj0gNCkgeworCWlmIChJU19HRU4oaTkxNSwgMTEpICYm IHNsaWNlcyA9PSAxICYmIHN1YnNsaWNlcyA+PSA0KSB7CiAJCUdFTV9CVUdfT04oc3Vic2xpY2Vz ICYgMSk7CiAKIAkJc3Vic2xpY2VfcGcgPSBmYWxzZTsKQEAgLTI0ODQsMTAgKzI0ODcsMTAgQEAg bWFrZV9ycGNzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkgKiBtdXN0IG1h a2UgYW4gZXhwbGljaXQgcmVxdWVzdCB0aHJvdWdoIFJQQ1MgZm9yIGZ1bGwKIAkgKiBlbmFibGVt ZW50LgogCSovCi0JaWYgKFJVTlRJTUVfSU5GTyhkZXZfcHJpdiktPnNzZXUuaGFzX3NsaWNlX3Bn KSB7CisJaWYgKHNzZXUtPmhhc19zbGljZV9wZykgewogCQl1MzIgbWFzaywgdmFsID0gc2xpY2Vz OwogCi0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKSB7CisJCWlmIChJTlRFTF9HRU4o aTkxNSkgPj0gMTEpIHsKIAkJCW1hc2sgPSBHRU4xMV9SUENTX1NfQ05UX01BU0s7CiAJCQl2YWwg PDw9IEdFTjExX1JQQ1NfU19DTlRfU0hJRlQ7CiAJCX0gZWxzZSB7CkBAIC0yNTEyLDE4ICsyNTE1 LDE2IEBAIG1ha2VfcnBjcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCXJw Y3MgfD0gR0VOOF9SUENTX0VOQUJMRSB8IEdFTjhfUlBDU19TU19DTlRfRU5BQkxFIHwgdmFsOwog CX0KIAotCWlmIChSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1Lmhhc19ldV9wZykgeworCWlm IChzc2V1LT5oYXNfZXVfcGcpIHsKIAkJdTMyIHZhbDsKIAotCQl2YWwgPSBSVU5USU1FX0lORk8o ZGV2X3ByaXYpLT5zc2V1LmV1X3Blcl9zdWJzbGljZSA8PAotCQkgICAgICBHRU44X1JQQ1NfRVVf TUlOX1NISUZUOworCQl2YWwgPSBjdHhfc3NldS0+bWluX2V1c19wZXJfc3Vic2xpY2UgPDwgR0VO OF9SUENTX0VVX01JTl9TSElGVDsKIAkJR0VNX0JVR19PTih2YWwgJiB+R0VOOF9SUENTX0VVX01J Tl9NQVNLKTsKIAkJdmFsICY9IEdFTjhfUlBDU19FVV9NSU5fTUFTSzsKIAogCQlycGNzIHw9IHZh bDsKIAotCQl2YWwgPSBSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1LmV1X3Blcl9zdWJzbGlj ZSA8PAotCQkgICAgICBHRU44X1JQQ1NfRVVfTUFYX1NISUZUOworCQl2YWwgPSBjdHhfc3NldS0+ bWF4X2V1c19wZXJfc3Vic2xpY2UgPDwgR0VOOF9SUENTX0VVX01BWF9TSElGVDsKIAkJR0VNX0JV R19PTih2YWwgJiB+R0VOOF9SUENTX0VVX01BWF9NQVNLKTsKIAkJdmFsICY9IEdFTjhfUlBDU19F VV9NQVhfTUFTSzsKIAotLSAKMi4xOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK