From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH v2] drm/i915: Expose engine properties via sysfs Date: Fri, 11 Oct 2019 10:40:15 +0100 Message-ID: <20191011094015.2882-1-chris@chris-wilson.co.uk> References: <20191010071434.31195-3-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 17FC26E057 for ; Fri, 11 Oct 2019 09:40:35 +0000 (UTC) In-Reply-To: <20191010071434.31195-3-chris@chris-wilson.co.uk> 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 UHJlbGltaW5hcnkgc3R1YiB0byBhZGQgZW5naW5lcyB1bmRlcm5lYXRoIC9zeXMvY2xhc3MvZHJt L2NhcmROLywgc28KdGhhdCB3ZSBjYW4gZXhwb3NlIHByb3BlcnRpZXMgb24gZWFjaCBlbmdpbmUg dG8gdGhlIHN5c2FkbWluLgoKVG8gc3RhcnQgd2l0aCB3ZSBoYXZlIGJhc2ljIGFuYWxvZ3VlcyBv ZiB0aGUgaTkxNV9xdWVyeSBpb2N0bCBzbyB0aGF0IHdlCmNhbiBwcmV0dHkgcHJpbnQgZW5naW5l IGRpc2NvdmVyeSBmcm9tIHRoZSBzaGVsbCwgYW5kIGZsZXNoIG91dCB0aGUKZGlyZWN0b3J5IHN0 cnVjdHVyZS4gTGF0ZXIgd2Ugd2lsbCBhZGQgd3JpdGVhYmxlIHN5c2FkbWluIHByb3BlcnRpZXMg c3VjaAphcyBwZXItZW5naW5lIHRpbWVvdXQgY29udHJvbHMuCgpBbiBleGFtcGxlIHRyZWUgb2Yg dGhlIGVuZ2luZSBwcm9wZXJ0aWVzIG9uIEJyYXN3ZWxsOgogICAgL3N5cy9jbGFzcy9kcm0vY2Fy ZDAKICAgIOKUlOKUgOKUgCBlbmdpbmUKICAgICDCoMKgIOKUnOKUgOKUgCBiY3MwCiAgICAgwqDC oCDilILCoMKgIOKUnOKUgOKUgCBjYXBhYmlsaXRpZXMKICAgICDCoMKgIOKUgsKgwqAg4pSc4pSA 4pSAIGNsYXNzCiAgICAgwqDCoCDilILCoMKgIOKUnOKUgOKUgCBpbnN0YW5jZQogICAgIMKgwqAg 4pSCwqDCoCDilJTilIDilIAgbmFtZQogICAgIMKgwqAg4pSc4pSA4pSAIHJjczAKICAgICDCoMKg IOKUgsKgwqAg4pSc4pSA4pSAIGNhcGFiaWxpdGllcwogICAgIMKgwqAg4pSCwqDCoCDilJzilIDi lIAgY2xhc3MKICAgICDCoMKgIOKUgsKgwqAg4pSc4pSA4pSAIGluc3RhbmNlCiAgICAgwqDCoCDi lILCoMKgIOKUlOKUgOKUgCBuYW1lCiAgICAgwqDCoCDilJzilIDilIAgdmNzMAogICAgIMKgwqAg 4pSCwqDCoCDilJzilIDilIAgY2FwYWJpbGl0aWVzCiAgICAgwqDCoCDilILCoMKgIOKUnOKUgOKU gCBjbGFzcwogICAgIMKgwqAg4pSCwqDCoCDilJzilIDilIAgaW5zdGFuY2UKICAgICDCoMKgIOKU gsKgwqAg4pSU4pSA4pSAIG5hbWUKICAgICDCoMKgIOKUlOKUgOKUgCB2ZWNzMAogICAgIMKgwqAg IMKgwqAg4pSc4pSA4pSAIGNhcGFiaWxpdGllcwogICAgIMKgwqAgICAgIOKUnOKUgOKUgCBjbGFz cwogICAgIMKgwqAgICAgIOKUnOKUgOKUgCBpbnN0YW5jZQogICAgIMKgwqAgICAgIOKUlOKUgOKU gCBuYW1lCgp2MjogSW5jbHVkZSBzdHJpbmdpZmllZCBjYXBhYmlsaXRpZXMKClNpZ25lZC1vZmYt Ynk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpDYzogSm9vbmFzIExh aHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgpDYzogVHZydGtvIFVyc3Vs aW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KQ2M6IERhbmllbGUgQ2VyYW9sbyBTcHVyaW8g PGRhbmllbGUuY2VyYW9sb3NwdXJpb0BpbnRlbC5jb20+CkNjOiBSb2RyaWdvIFZpdmkgPHJvZHJp Z28udml2aUBpbnRlbC5jb20+CkFja2VkLWJ5OiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBp bnRlbC5jb20+Ci0tLQpUdnJ0a28sIHlvdSBtZW50aW9uZWQgZXhwb3NpbmcgZmxhZ3MgYXMgd2Vs bCwgSSBoYXZlbid0IHNwb3R0ZWQgd2hhdApzaG91bGQgYmUgaW5jbHVkZWQgZm9yIHRoYXQgZmll bGQuCi0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgICAgICAgfCAg IDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9zeXNmcy5jIHwgMTc1 ICsrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2lu ZV9zeXNmcy5oIHwgIDE0ICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMgICAg ICAgICAgICB8ICAgMyArCiA0IGZpbGVzIGNoYW5nZWQsIDE5NCBpbnNlcnRpb25zKCspLCAxIGRl bGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfZW5naW5lX3N5c2ZzLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9lbmdpbmVfc3lzZnMuaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKaW5kZXggZTc5MWQ5 MzIzYjUxLi5jZDlhMTBiYTI1MTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01h a2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCkBAIC03OCw4ICs3OCw5 IEBAIGd0LXkgKz0gXAogCWd0L2ludGVsX2JyZWFkY3J1bWJzLm8gXAogCWd0L2ludGVsX2NvbnRl eHQubyBcCiAJZ3QvaW50ZWxfZW5naW5lX2NzLm8gXAotCWd0L2ludGVsX2VuZ2luZV9wb29sLm8g XAogCWd0L2ludGVsX2VuZ2luZV9wbS5vIFwKKwlndC9pbnRlbF9lbmdpbmVfcG9vbC5vIFwKKwln dC9pbnRlbF9lbmdpbmVfc3lzZnMubyBcCiAJZ3QvaW50ZWxfZW5naW5lX3VzZXIubyBcCiAJZ3Qv aW50ZWxfZ3QubyBcCiAJZ3QvaW50ZWxfZ3RfaXJxLm8gXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3N5c2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9lbmdpbmVfc3lzZnMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLmJmYzNhNGY2MzFhNQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX2VuZ2luZV9zeXNmcy5jCkBAIC0wLDAgKzEsMTc1IEBACisvKgorICog U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorICoKKyAqIENvcHlyaWdodCDCqSAyMDE5IElu dGVsIENvcnBvcmF0aW9uCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2tvYmplY3QuaD4KKyNpbmNs dWRlIDxsaW51eC9zeXNmcy5oPgorCisjaW5jbHVkZSAiaTkxNV9kcnYuaCIKKyNpbmNsdWRlICJp bnRlbF9lbmdpbmUuaCIKKyNpbmNsdWRlICJpbnRlbF9lbmdpbmVfc3lzZnMuaCIKKworc3RydWN0 IGtvYmpfZW5naW5lIHsKKwlzdHJ1Y3Qga29iamVjdCBiYXNlOworCXN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZTsKK307CisKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICprb2Jq X3RvX2VuZ2luZShzdHJ1Y3Qga29iamVjdCAqa29iaikKK3sKKwlyZXR1cm4gY29udGFpbmVyX29m KGtvYmosIHN0cnVjdCBrb2JqX2VuZ2luZSwgYmFzZSktPmVuZ2luZTsKK30KKworc3RhdGljIHNz aXplX3QKK25hbWVfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmli dXRlICphdHRyLCBjaGFyICpidWYpCit7CisJcmV0dXJuIHNwcmludGYoYnVmLCAiJXNcbiIsIGtv YmpfdG9fZW5naW5lKGtvYmopLT5uYW1lKTsKK30KKworc3RhdGljIHN0cnVjdCBrb2JqX2F0dHJp YnV0ZSBuYW1lX2F0dHIgPQorX19BVFRSKG5hbWUsIDA0NDQsIG5hbWVfc2hvdywgTlVMTCk7CisK K3N0YXRpYyBzc2l6ZV90CitjbGFzc19zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qg a29ial9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKK3sKKwlyZXR1cm4gc3ByaW50ZihidWYs ICIlZFxuIiwga29ial90b19lbmdpbmUoa29iaiktPnVhYmlfY2xhc3MpOworfQorCitzdGF0aWMg c3RydWN0IGtvYmpfYXR0cmlidXRlIGNsYXNzX2F0dHIgPQorX19BVFRSKGNsYXNzLCAwNDQ0LCBj bGFzc19zaG93LCBOVUxMKTsKKworc3RhdGljIHNzaXplX3QKK2luc3Rfc2hvdyhzdHJ1Y3Qga29i amVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCit7CisJ cmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIGtvYmpfdG9fZW5naW5lKGtvYmopLT51YWJpX2lu c3RhbmNlKTsKK30KKworc3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBpbnN0X2F0dHIgPQor X19BVFRSKGluc3RhbmNlLCAwNDQ0LCBpbnN0X3Nob3csIE5VTEwpOworCitzdGF0aWMgc3NpemVf dCByZXByX3RyaW0oY2hhciAqYnVmLCBzc2l6ZV90IGxlbikKK3sKKwkvKiBUcmltIG9mZiB0aGUg dHJhaWxpbmcgc3BhY2UgKi8KKwlpZiAobGVuID4gUEFHRV9TSVpFKQorCQlsZW4gPSBQQUdFX1NJ WkU7CisJaWYgKGxlbiA+IDApCisJCWJ1ZlstLWxlbl0gPSAnXDAnOworCisJcmV0dXJuIGxlbjsK K30KKworc3RhdGljIHNzaXplX3QKK2NhcHNfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3Ry dWN0IGtvYmpfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCit7CisJc3RhdGljIGNvbnN0IGNo YXIgKnZjc19yZXByW10gPSB7CisJICAgICAgIFtpbG9nMihJOTE1X1ZJREVPX0NMQVNTX0NBUEFC SUxJVFlfSEVWQyldID0gImhldmMiLAorCSAgICAgICBbaWxvZzIoSTkxNV9WSURFT19BTkRfRU5I QU5DRV9DTEFTU19DQVBBQklMSVRZX1NGQyldID0gInNmYyIsCisJfTsKKwlzdGF0aWMgY29uc3Qg Y2hhciAqdmVjc19yZXByW10gPSB7CisJICAgICAgIFtpbG9nMihJOTE1X1ZJREVPX0FORF9FTkhB TkNFX0NMQVNTX0NBUEFCSUxJVFlfU0ZDKV0gPSAic2ZjIiwKKwl9OworCXN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSA9IGtvYmpfdG9fZW5naW5lKGtvYmopOworCWNvbnN0IGNoYXIgKipy ZXByOworCWludCBudW1fcmVwciwgbjsKKwlzc2l6ZV90IGxlbjsKKworCXN3aXRjaCAoZW5naW5l LT5jbGFzcykgeworCWNhc2UgVklERU9fREVDT0RFX0NMQVNTOgorCQlyZXByID0gdmNzX3JlcHI7 CisJCW51bV9yZXByID0gQVJSQVlfU0laRSh2Y3NfcmVwcik7CisJCWJyZWFrOworCisJY2FzZSBW SURFT19FTkhBTkNFTUVOVF9DTEFTUzoKKwkJcmVwciA9IHZlY3NfcmVwcjsKKwkJbnVtX3JlcHIg PSBBUlJBWV9TSVpFKHZlY3NfcmVwcik7CisJCWJyZWFrOworCisJZGVmYXVsdDoKKwkJcmVwciA9 IE5VTEw7CisJCW51bV9yZXByID0gMDsKKwkJYnJlYWs7CisJfQorCisJbGVuID0gMDsKKwlmb3Jf ZWFjaF9zZXRfYml0KG4sICh1bnNpZ25lZCBsb25nICopJmVuZ2luZS0+dWFiaV9jYXBhYmlsaXRp ZXMsIDY0KSB7CisJCWlmIChuIDwgbnVtX3JlcHIgJiYgcmVwcltuXSkKKwkJCWxlbiArPSBzbnBy aW50ZihidWYgKyBsZW4sIFBBR0VfU0laRSAtIGxlbiwKKwkJCQkJIiVzICIsIHJlcHJbbl0pOwor CQllbHNlCisJCQlsZW4gKz0gc25wcmludGYoYnVmICsgbGVuLCBQQUdFX1NJWkUgLSBsZW4sCisJ CQkJCSJbJWRdICIsIG4pOworCX0KKwlyZXR1cm4gcmVwcl90cmltKGJ1ZiwgbGVuKTsKK30KKwor c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBjYXBzX2F0dHIgPQorX19BVFRSKGNhcGFiaWxp dGllcywgMDQ0NCwgY2Fwc19zaG93LCBOVUxMKTsKKworc3RhdGljIHZvaWQga29ial9lbmdpbmVf cmVsZWFzZShzdHJ1Y3Qga29iamVjdCAqa29iaikKK3sKKwlrZnJlZShrb2JqKTsKK30KKworc3Rh dGljIHN0cnVjdCBrb2JqX3R5cGUga29ial9lbmdpbmVfdHlwZSA9IHsKKwkucmVsZWFzZSA9IGtv YmpfZW5naW5lX3JlbGVhc2UsCisJLnN5c2ZzX29wcyA9ICZrb2JqX3N5c2ZzX29wcworfTsKKwor c3RhdGljIHN0cnVjdCBrb2JqZWN0ICoKK2tvYmpfZW5naW5lKHN0cnVjdCBrb2JqZWN0ICpkaXIs IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwlzdHJ1Y3Qga29ial9lbmdpbmUg KmtlOworCisJa2UgPSBremFsbG9jKHNpemVvZigqa2UpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWtl KQorCQlyZXR1cm4gTlVMTDsKKworCWtvYmplY3RfaW5pdCgma2UtPmJhc2UsICZrb2JqX2VuZ2lu ZV90eXBlKTsKKwlrZS0+ZW5naW5lID0gZW5naW5lOworCisJaWYgKGtvYmplY3RfYWRkKCZrZS0+ YmFzZSwgZGlyLCAiJXMiLCBlbmdpbmUtPm5hbWUpKSB7CisJCWtvYmplY3RfcHV0KCZrZS0+YmFz ZSk7CisJCXJldHVybiBOVUxMOworCX0KKworCS8qIHhmZXIgb3duZXJzaGlwIHRvIHN5c2ZzIHRy ZWUgKi8KKwlyZXR1cm4gJmtlLT5iYXNlOworfQorCit2b2lkIGludGVsX2VuZ2luZXNfYWRkX3N5 c2ZzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQoreworCXN0YXRpYyBjb25zdCBzdHJ1 Y3QgYXR0cmlidXRlICpmaWxlc1tdID0geworCQkmbmFtZV9hdHRyLmF0dHIsCisJCSZjbGFzc19h dHRyLmF0dHIsCisJCSZpbnN0X2F0dHIuYXR0ciwKKwkJJmNhcHNfYXR0ci5hdHRyLAorCQlOVUxM CisJfTsKKworCXN0cnVjdCBkZXZpY2UgKmtkZXYgPSBpOTE1LT5kcm0ucHJpbWFyeS0+a2RldjsK KwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisJc3RydWN0IGtvYmplY3QgKmRpcjsK KworCWRpciA9IGtvYmplY3RfY3JlYXRlX2FuZF9hZGQoImVuZ2luZSIsICZrZGV2LT5rb2JqKTsK KwlpZiAoIWRpcikKKwkJcmV0dXJuOworCisJZm9yX2VhY2hfdWFiaV9lbmdpbmUoZW5naW5lLCBp OTE1KSB7CisJCXN0cnVjdCBrb2JqZWN0ICprb2JqOworCisJCWtvYmogPSBrb2JqX2VuZ2luZShk aXIsIGVuZ2luZSk7CisJCWlmICgha29iaikKKwkJCWdvdG8gZXJyX2VuZ2luZTsKKworCQlpZiAo c3lzZnNfY3JlYXRlX2ZpbGVzKGtvYmosIGZpbGVzKSkKKwkJCWdvdG8gZXJyX2VuZ2luZTsKKwor CQlpZiAoMCkgeworZXJyX2VuZ2luZToKKwkJCWRldl9lcnIoa2RldiwgIkZhaWxlZCB0byBhZGQg c3lzZnMgZW5naW5lICclcydcbiIsCisJCQkJZW5naW5lLT5uYW1lKTsKKwkJCWJyZWFrOworCQl9 CisJfQorfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5l X3N5c2ZzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfc3lzZnMuaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmVmNDRhNzQ1YjcwYQotLS0g L2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9zeXNm cy5oCkBAIC0wLDAgKzEsMTQgQEAKKy8qCisgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlU CisgKgorICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KKyAqLworCisjaWZu ZGVmIElOVEVMX0VOR0lORV9TWVNGU19ICisjZGVmaW5lIElOVEVMX0VOR0lORV9TWVNGU19ICisK K3N0cnVjdCBkcm1faTkxNV9wcml2YXRlOworCit2b2lkIGludGVsX2VuZ2luZXNfYWRkX3N5c2Zz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKKworI2VuZGlmIC8qIElOVEVMX0VOR0lO RV9TWVNGU19IICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2Zz LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMKaW5kZXggYmYwMzliOGJhNTkz Li43YjY2NWY2OWYzMDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lz ZnMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMKQEAgLTMwLDYgKzMw LDcgQEAKICNpbmNsdWRlIDxsaW51eC9zdGF0Lmg+CiAjaW5jbHVkZSA8bGludXgvc3lzZnMuaD4K IAorI2luY2x1ZGUgImd0L2ludGVsX2VuZ2luZV9zeXNmcy5oIgogI2luY2x1ZGUgImd0L2ludGVs X3JjNi5oIgogCiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKQEAgLTYxNiw2ICs2MTcsOCBAQCB2b2lk IGk5MTVfc2V0dXBfc3lzZnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQlE Uk1fRVJST1IoIlJQUyBzeXNmcyBzZXR1cCBmYWlsZWRcbiIpOwogCiAJaTkxNV9zZXR1cF9lcnJv cl9jYXB0dXJlKGtkZXYpOworCisJaW50ZWxfZW5naW5lc19hZGRfc3lzZnMoZGV2X3ByaXYpOwog fQogCiB2b2lkIGk5MTVfdGVhcmRvd25fc3lzZnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQotLSAKMi4yMy4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZng=