From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: [PATCH v3 5/6] drm/i915: Introduce 'priority offset' for GPU contexts (v2) Date: Tue, 6 Mar 2018 15:46:59 -0800 Message-ID: <20180306234700.6562-6-matthew.d.roper@intel.com> References: <20180306234700.6562-1-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180306234700.6562-1-matthew.d.roper@intel.com> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Content-Type: text/plain; charset="us-ascii" To: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, cgroups@vger.kernel.org VGhlcmUgYXJlIGNhc2VzIHdoZXJlIGEgc3lzdGVtIGludGVncmF0b3IgbWF5IHdpc2ggdG8gcmFp c2UvbG93ZXIgdGhlCnByaW9yaXR5IG9mIEdQVSB3b3JrbG9hZHMgYmVpbmcgc3VibWl0dGVkIGJ5 IHNwZWNpZmljIE9TIHByb2Nlc3MoZXMpLAppbmRlcGVuZGVudGx5IG9mIGhvdyB0aGUgc29mdHdh cmUgc2VsZi1jbGFzc2lmaWVzIGl0cyBvd24gcHJpb3JpdHkuCkV4cG9zaW5nICJwcmlvcml0eSBv ZmZzZXQiIGFzIGFuIGk5MTUtc3BlY2lmaWMgY2dyb3VwIHBhcmFtZXRlciB3aWxsCmVuYWJsZSBz dWNoIHN5c3RlbS1sZXZlbCBjb25maWd1cmF0aW9uLgoKTm9ybWFsbHkgR1BVIGNvbnRleHRzIHN0 YXJ0IHdpdGggYSBwcmlvcml0eSB2YWx1ZSBvZiAwCihJOTE1X0NPTlRFWFRfREVGQVVMVF9QUklP UklUWSkgYW5kIHRoZW4gbWF5IGJlIGFkanVzdGVkIHVwL2Rvd24gZnJvbQp0aGVyZSB2aWEgb3Ro ZXIgbWVjaGFuaXNtcy4gIFdlJ2QgbGlrZSB0byBwcm92aWRlIGEgc3lzdGVtLWxldmVsIGlucHV0 CnRvIHRoZSBwcmlvcml0eSBkZWNpc2lvbiB0aGF0IHdpbGwgYmUgdGFrZW4gaW50byBjb25zaWRl cmF0aW9uLCBldmVuCndoZW4gdXNlcnNwYWNlIGxhdGVyIGF0dGVtcHRzIHRvIHNldCBhbiBhYnNv bHV0ZSBwcmlvcml0eSB2YWx1ZSB2aWEKSTkxNV9DT05URVhUX1BBUkFNX1BSSU9SSVRZLiAgVGhl IHByaW9yaXR5IG9mZnNldCBpbnRyb2R1Y2VkIGhlcmUKcHJvdmlkZXMgYSBiYXNlIHZhbHVlIHRo YXQgd2lsbCBhbHdheXMgYmUgYWRkZWQgdG8gKG9yIHN1YnRyYWN0ZWQgZnJvbSkKdGhlIHNvZnR3 YXJlJ3Mgc2VsZi1hc3NpZ25lZCBwcmlvcml0eSB2YWx1ZS4KClRoaXMgcGF0Y2ggbWFrZXMgcHJp b3JpdHkgb2Zmc2V0IGEgY2dyb3VwLXNwZWNpZmljIHZhbHVlOyBjb250ZXh0cyB3aWxsCmJlIGNy ZWF0ZWQgd2l0aCBhIHByaW9yaXR5IG9mZnNldCBiYXNlZCBvbiB0aGUgY2dyb3VwIG1lbWJlcnNo aXAgb2YgdGhlCnByb2Nlc3MgY3JlYXRpbmcgdGhlIGNvbnRleHQgYXQgdGhlIHRpbWUgdGhlIGNv bnRleHQgaXMgY3JlYXRlZC4gIE5vdGUKdGhhdCBwcmlvcml0eSBvZmZzZXQgaXMgYXNzaWduZWQg YXQgY29udGV4dCBjcmVhdGlvbiB0aW1lOyBtaWdyYXRpbmcgYQpwcm9jZXNzIHRvIGEgZGlmZmVy ZW50IGNncm91cCBvciBjaGFuZ2luZyB0aGUgb2Zmc2V0IGFzc29jaWF0ZWQgd2l0aCBhCmNncm91 cCB3aWxsIG9ubHkgYWZmZWN0IG5ldyBjb250ZXh0IGNyZWF0aW9uIGFuZCB3aWxsIG5vdCBhbHRl ciB0aGUKYmVoYXZpb3Igb2YgZXhpc3RpbmcgY29udGV4dHMgcHJldmlvdXNseSBjcmVhdGVkIGJ5 IHRoZSBwcm9jZXNzLgoKdjI6CiAtIFJlYmFzZSBvbnRvIG5ldyBjZ3JvdXBfcHJpdiBBUEkKIC0g VXNlIGN1cnJlbnQgaW5zdGVhZCBvZiBkcm1fZmlsZS0+cGlkIHRvIGRldGVybWluZSB3aGljaCBw cm9jZXNzIHRvCiAgIGxvb2t1cCBwcmlvcml0eSBmb3IuIChDaHJpcykKIC0gRG9uJ3QgZm9yZ2V0 IHRvIHN1YnRyYWN0IHByaW9yaXR5IG9mZnNldCBpbiBjb250ZXh0X2dldHBhcmFtIGlvY3RsIHRv CiAgIG1ha2UgaXQgbWF0Y2ggc2V0cGFyYW0gYmVoYXZpb3IuIChDaHJpcykKClNpZ25lZC1vZmYt Ynk6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9jZ3JvdXAuYyAgICAgIHwgNDcgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgfCAx NSArKysrKystLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIHwg IDcgKystLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaCB8ICA5ICsr KysrKysKIGluY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCAgICAgICAgICAgICB8ICAxICsKIDUg ZmlsZXMgY2hhbmdlZCwgNjkgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9jZ3JvdXAuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfY2dyb3VwLmMKaW5kZXggNGE0NmNiMTY3ZjUzLi42YTI4YjFhMjM5NzEgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfY2dyb3VwLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9jZ3JvdXAuYwpAQCAtMTMsNiArMTMsOCBAQCBzdHJ1Y3QgaTkx NV9jZ3JvdXBfZGF0YSB7CiAJc3RydWN0IGNncm91cF9wcml2IGJhc2U7CiAKIAlzdHJ1Y3QgbGlz dF9oZWFkIG5vZGU7CisKKwlpbnQgcHJpb3JpdHlfb2Zmc2V0OwogfTsKIAogc3RhdGljIGlubGlu ZSBzdHJ1Y3QgaTkxNV9jZ3JvdXBfZGF0YSAqCkBAIC0xMTcsOCArMTE5LDEwIEBAIGk5MTVfY2dy b3VwX3NldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkgICB2b2lkICpk YXRhLAogCQkJICAgc3RydWN0IGRybV9maWxlICpmaWxlKQogeworCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKIAlzdHJ1Y3QgZHJtX2k5MTVfY2dyb3Vw X3BhcmFtICpyZXEgPSBkYXRhOwogCXN0cnVjdCBjZ3JvdXAgKmNncnA7CisJc3RydWN0IGk5MTVf Y2dyb3VwX2RhdGEgKmNncnBkYXRhOwogCWludCByZXQ7CiAKIAkvKiBXZSBkb24ndCBhY3R1YWxs eSBzdXBwb3J0IGFueSBmbGFncyB5ZXQuICovCkBAIC0xNTQsNyArMTU4LDE4IEBAIGk5MTVfY2dy b3VwX3NldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJaWYgKHJldCkKIAkJ Z290byBvdXQ7CiAKKwljZ3JwZGF0YSA9IGdldF9vcl9jcmVhdGVfY2dyb3VwX2RhdGEoZGV2X3By aXYsIGNncnApOworCWlmIChJU19FUlIoY2dycGRhdGEpKSB7CisJCXJldCA9IFBUUl9FUlIoY2dy cGRhdGEpOworCQlnb3RvIG91dDsKKwl9CisKIAlzd2l0Y2ggKHJlcS0+cGFyYW0pIHsKKwljYXNl IEk5MTVfQ0dST1VQX1BBUkFNX1BSSU9SSVRZX09GRlNFVDoKKwkJRFJNX0RFQlVHX0RSSVZFUigi U2V0dGluZyBjZ3JvdXAgcHJpb3JpdHkgb2Zmc2V0IHRvICVsbGRcbiIsCisJCQkJIHJlcS0+dmFs dWUpOworCQljZ3JwZGF0YS0+cHJpb3JpdHlfb2Zmc2V0ID0gcmVxLT52YWx1ZTsKKwkJYnJlYWs7 CiAJZGVmYXVsdDoKIAkJRFJNX0RFQlVHX0RSSVZFUigiSW52YWxpZCBjZ3JvdXAgcGFyYW1ldGVy ICVsbGRcbiIsIHJlcS0+cGFyYW0pOwogCQlyZXQgPSAtRUlOVkFMOwpAQCAtMTY1LDMgKzE4MCwz NSBAQCBpOTE1X2Nncm91cF9zZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAog CiAJcmV0dXJuIHJldDsKIH0KKworLyoqCisgKiBpOTE1X2Nncm91cF9nZXRfcHJpb19vZmZzZXQo KSAtIGdldCBwcmlvIG9mZnNldCBmb3IgY3VycmVudCBwcm9jJ3MgY2dyb3VwCisgKiBAZGV2X3By aXY6IGRybSBkZXZpY2UKKyAqIEBmaWxlX3ByaXY6IGZpbGUgaGFuZGxlIGZvciBjYWxsaW5nIHBy b2Nlc3MKKyAqCisgKiBSRVRVUk5TOgorICogUHJpb3JpdHkgb2Zmc2V0IGFzc29jaWF0ZWQgd2l0 aCB0aGUgY2FsbGluZyBwcm9jZXNzJyBjZ3JvdXAgaW4gdGhlIGRlZmF1bHQKKyAqICh2MikgaGll cmFyY2h5LCBvdGhlcndpc2UgMCBpZiBubyBleHBsaWNpdCBwcmlvcml0eSBoYXMgYmVlbiBhc3Np Z25lZC4KKyAqLworaW50CitpOTE1X2Nncm91cF9nZXRfY3VycmVudF9wcmlvX29mZnNldChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisgICAgICAgc3RydWN0IGNncm91cCAq Y2dycDsKKyAgICAgICBzdHJ1Y3QgY2dyb3VwX3ByaXYgKmNncnBkYXRhOworICAgICAgIGludCBv ZmZzZXQgPSAwOworCisgICAgICAgY2dycCA9IHRhc2tfZ2V0X2RmbF9jZ3JvdXAoY3VycmVudCk7 CisgICAgICAgaWYgKFdBUk5fT04oIWNncnApKQorICAgICAgICAgICAgICAgcmV0dXJuIDA7CisK KyAgICAgICBtdXRleF9sb2NrKCZjZ3JwLT5wcml2ZGF0YV9tdXRleCk7CisKKyAgICAgICBjZ3Jw ZGF0YSA9IGNncm91cF9wcml2X2xvb2t1cChjZ3JwLCBkZXZfcHJpdik7CisgICAgICAgaWYgKGNn cnBkYXRhKQorCSAgICAgICBvZmZzZXQgPSBjZ3JwX3RvX2k5MTUoY2dycGRhdGEpLT5wcmlvcml0 eV9vZmZzZXQ7CisKKyAgICAgICBtdXRleF91bmxvY2soJmNncnAtPnByaXZkYXRhX211dGV4KTsK KyAgICAgICBjZ3JvdXBfcHV0KGNncnApOworCisgICAgICAgcmV0dXJuIG9mZnNldDsKK30KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IDdjMzgxNDJlZTAwOS4uNTFiODA5MjZkMjBjIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTI5NDcsMTggKzI5NDcsMTkgQEAgdm9pZCBpOTE1X2Nn cm91cF9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiBpbnQgaTkxNV9j Z3JvdXBfc2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwK IAkJCSAgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpOwogdm9pZCBpOTE1X2Nncm91cF9zaHV0 ZG93bihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOworaW50IGk5MTVfY2dyb3Vw X2dldF9jdXJyZW50X3ByaW9fb2Zmc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dik7CiAjZWxzZQotc3RhdGljIGlubGluZSBpbnQKLWk5MTVfY2dyb3VwX2luaXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQorc3RhdGljIGlubGluZSB2b2lkIGk5MTVfY2dyb3Vw X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KSB7fQorc3RhdGljIGlubGlu ZSB2b2lkIGk5MTVfY2dyb3VwX3NodXRkb3duKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikge30KK3N0YXRpYyBpbmxpbmUgaW50IGk5MTVfY2dyb3VwX3NldHBhcmFtX2lvY3RsKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkJCSAgICAgc3RydWN0IGRybV9m aWxlICpmaWxlKQogewotCXJldHVybiAwOworCXJldHVybiAtRUlOVkFMOwogfQotc3RhdGljIGlu bGluZSB2b2lkIGk5MTVfY2dyb3VwX3NodXRkb3duKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikge30KIHN0YXRpYyBpbmxpbmUgaW50Ci1pOTE1X2Nncm91cF9zZXRwYXJhbV9pb2N0 bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAotCQkJICAgc3RydWN0IGRybV9m aWxlICpmaWxlKQoraTkxNV9jZ3JvdXBfZ2V0X2N1cnJlbnRfcHJpb19vZmZzZXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewotCXJldHVybiAtRUlOVkFMOworCXJldHVybiAw OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwppbmRl eCBhNzMzNDBhZTk0MTkuLmIyOWZiZTBjNzc2ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2NvbnRleHQuYwpAQCAtMjc0LDcgKzI3NCw4IEBAIF9fY3JlYXRlX2h3X2NvbnRleHQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCWtyZWZfaW5pdCgmY3R4LT5yZWYpOwog CWxpc3RfYWRkX3RhaWwoJmN0eC0+bGluaywgJmRldl9wcml2LT5jb250ZXh0cy5saXN0KTsKIAlj dHgtPmk5MTUgPSBkZXZfcHJpdjsKLQljdHgtPnByaW9yaXR5ID0gSTkxNV9QUklPUklUWV9OT1JN QUw7CisJY3R4LT5wcmlvcml0eV9vZmZzZXQgPSBpOTE1X2Nncm91cF9nZXRfY3VycmVudF9wcmlv X29mZnNldChkZXZfcHJpdik7CisJY3R4LT5wcmlvcml0eSA9IEk5MTVfUFJJT1JJVFlfTk9STUFM ICsgY3R4LT5wcmlvcml0eV9vZmZzZXQ7CiAKIAlJTklUX1JBRElYX1RSRUUoJmN0eC0+aGFuZGxl c192bWEsIEdGUF9LRVJORUwpOwogCUlOSVRfTElTVF9IRUFEKCZjdHgtPmhhbmRsZXNfbGlzdCk7 CkBAIC03MzksNyArNzQwLDcgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfZ2V0cGFyYW1faW9jdGwo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJYXJncy0+dmFsdWUgPSBpOTE1 X2dlbV9jb250ZXh0X2lzX2Jhbm5hYmxlKGN0eCk7CiAJCWJyZWFrOwogCWNhc2UgSTkxNV9DT05U RVhUX1BBUkFNX1BSSU9SSVRZOgotCQlhcmdzLT52YWx1ZSA9IGN0eC0+cHJpb3JpdHk7CisJCWFy Z3MtPnZhbHVlID0gY3R4LT5wcmlvcml0eSAtIGN0eC0+cHJpb3JpdHlfb2Zmc2V0OwogCQlicmVh azsKIAlkZWZhdWx0OgogCQlyZXQgPSAtRUlOVkFMOwpAQCAtODEyLDcgKzgxMyw3IEBAIGludCBp OTE1X2dlbV9jb250ZXh0X3NldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZv aWQgKmRhdGEsCiAJCQkJICFjYXBhYmxlKENBUF9TWVNfTklDRSkpCiAJCQkJcmV0ID0gLUVQRVJN OwogCQkJZWxzZQotCQkJCWN0eC0+cHJpb3JpdHkgPSBwcmlvcml0eTsKKwkJCQljdHgtPnByaW9y aXR5ID0gcHJpb3JpdHkgKyBjdHgtPnByaW9yaXR5X29mZnNldDsKIAkJfQogCQlicmVhazsKIApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCmluZGV4IDc4NTQyNjJkZGZkOS4u YzNiNGZiNTRmYmI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9j b250ZXh0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCkBA IC0xNTAsNiArMTUwLDE1IEBAIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0IHsKIAkgKi8KIAlpbnQg cHJpb3JpdHk7CiAKKwkvKioKKwkgKiBAcHJpb3JpdHlfb2Zmc2V0OiBwcmlvcml0eSBvZmZzZXQK KwkgKgorCSAqIEEgdmFsdWUsIGNvbmZpZ3VyZWQgdmlhIGNncm91cCwgdGhhdCBzZXRzIHRoZSBz dGFydGluZyBwcmlvcml0eQorCSAqIG9mIHRoZSBjb250ZXh0LiAgQW55IHByaW9yaXR5IHNldCBl eHBsaWNpdGx5IHZpYSBjb250ZXh0IHBhcmFtZXRlcgorCSAqIHdpbGwgYmUgYWRkZWQgdG8gdGhl IHByaW9yaXR5IG9mZnNldC4KKwkgKi8KKwlpbnQgcHJpb3JpdHlfb2Zmc2V0OworCiAJLyoqIGdn dHRfb2Zmc2V0X2JpYXM6IHBsYWNlbWVudCByZXN0cmljdGlvbiBmb3IgY29udGV4dCBvYmplY3Rz ICovCiAJdTMyIGdndHRfb2Zmc2V0X2JpYXM7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9k cm0vaTkxNV9kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAppbmRleCBiNjY1MWIy NjM4MzguLjViNjdhYWY4YTFjMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2Ry bS5oCisrKyBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaApAQCAtMTYyNCw2ICsxNjI0LDcg QEAgc3RydWN0IGRybV9pOTE1X2Nncm91cF9wYXJhbSB7CiAJX19zMzIgY2dyb3VwX2ZkOwogCV9f dTMyIGZsYWdzOwogCV9fdTY0IHBhcmFtOworI2RlZmluZSBJOTE1X0NHUk9VUF9QQVJBTV9QUklP UklUWV9PRkZTRVQJMHgxCiAJX19zNjQgdmFsdWU7CiB9OwogCi0tIAoyLjE0LjMKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5n IGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=