From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 05/10] drm/i915/execlists: Direct submit onto idle engines Date: Mon, 14 May 2018 10:37:05 +0100 Message-ID: <20180514093710.7730-6-chris@chris-wilson.co.uk> References: <20180514093710.7730-1-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 86B6D6E026 for ; Mon, 14 May 2018 09:37:29 +0000 (UTC) In-Reply-To: <20180514093710.7730-1-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 QnlwYXNzIHVzaW5nIHRoZSB0YXNrbGV0IHRvIHN1Ym1pdCB0aGUgZmlyc3QgcmVxdWVzdCB0byBI VywgYXMgdGhlCnRhc2tsZXQgbWF5IGJlIGRlZmVycmVkIHVudG8ga3NvZnRpcnFkIGFuZCBhdCBh IG1pbmltdW0gd2lsbCBhZGQgaW4KZXhjZXNzIG9mIDEwdXMgKGFuZCBtYXliZSB0ZW5zIG9mIG1p bGxpc2Vjb25kcykgdG8gb3VyIGV4ZWN1dGlvbgpsYXRlbmN5LiBUaGlzIGxhdGVuY3kgcmVkdWN0 aW9uIGlzIG1vc3Qgbm90YWJsZSB3aGVuIGV4ZWN1dGlvbiBmbG93cwpiZXR3ZWVuIGVuZ2luZXMu Cgp2MjogQmV3YXJlIGhhbmRsaW5nIHByZWVtcHRpb24gY29tcGxldGlvbiBmcm9tIHRoZSBkaXJl Y3Qgc3VibWl0IHBhdGggYXMKd2VsbC4KdjM6IE1ha2UgdGhlIGFidXNlIGNsZWFyIGFuZCB0cmFj ayBvdXIgZXh0cmEgc3RhdGUgaW5zaWRlIGk5MTVfdGFza2xldC4KdjQ6cy93YWtldXBfcXVldWUv dXBkYXRlX3F1ZXVlLwoKU3VnZ2VzdGVkLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3Vs aW5AaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdp bHNvbi5jby51az4KQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+ Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90YXNrbGV0LmggICAgICAgICB8IDI0ICsr KysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMgfCAxMCAr Ky0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICAgICAgfCA3MSArKysr KysrKysrKysrKysrKy0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgODkgaW5zZXJ0aW9ucygrKSwgMTYg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90YXNr bGV0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Rhc2tsZXQuaAppbmRleCBiN2NiYmMy ZjhmNjkuLjZmM2IyZmVkYzY1YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV90YXNrbGV0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90YXNrbGV0LmgKQEAg LTgsOCArOCwxMSBAQAogI2RlZmluZSBfSTkxNV9UQVNLTEVUX0hfCiAKICNpbmNsdWRlIDxsaW51 eC9hdG9taWMuaD4KKyNpbmNsdWRlIDxsaW51eC9iaXRvcHMuaD4KICNpbmNsdWRlIDxsaW51eC9p bnRlcnJ1cHQuaD4KIAorI2luY2x1ZGUgImk5MTVfZ2VtLmgiCisKIC8qKgogICogc3RydWN0IGk5 MTVfdGFza2xldCAtIHdyYXBwZXIgYXJvdW5kIHRhc2tsZXRfc3RydWN0CiAgKgpAQCAtMTksNiAr MjIsOCBAQAogICovCiBzdHJ1Y3QgaTkxNV90YXNrbGV0IHsKIAlzdHJ1Y3QgdGFza2xldF9zdHJ1 Y3QgYmFzZTsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworI2RlZmluZSBJOTE1X1RBU0tMRVRfRElS RUNUX1NVQk1JVCBCSVQoMCkKIH07CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X3Rhc2tsZXRf aW5pdChzdHJ1Y3QgaTkxNV90YXNrbGV0ICp0LApAQCAtNDMsNiArNDgsMTQgQEAgc3RhdGljIGlu bGluZSBib29sIGk5MTVfdGFza2xldF9pc19lbmFibGVkKGNvbnN0IHN0cnVjdCBpOTE1X3Rhc2ts ZXQgKnQpCiAJcmV0dXJuIGxpa2VseSghYXRvbWljX3JlYWQoJnQtPmJhc2UuY291bnQpKTsKIH0K IAorc3RhdGljIGlubGluZSBib29sIGk5MTVfdGFza2xldF9pc19kaXJlY3Rfc3VibWl0KGNvbnN0 IHN0cnVjdCBpOTE1X3Rhc2tsZXQgKnQpCit7CisJLyogT25seSBsZWdhbCB0byBiZSBjaGVja2Vk IGZyb20gaW5zaWRlIHRoZSB0YXNrbGV0LiAqLworCUdFTV9CVUdfT04oIWk5MTVfdGFza2xldF9p c19ydW5uaW5nKHQpKTsKKworCXJldHVybiB0LT5mbGFncyAmIEk5MTVfVEFTS0xFVF9ESVJFQ1Rf U1VCTUlUOworfQorCiBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV90YXNrbGV0X3NjaGVkdWxlKHN0 cnVjdCBpOTE1X3Rhc2tsZXQgKnQpCiB7CiAJdGFza2xldF9oaV9zY2hlZHVsZSgmdC0+YmFzZSk7 CkBAIC04MSw0ICs5NCwxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV90YXNrbGV0X3NldF9m dW5jKHN0cnVjdCBpOTE1X3Rhc2tsZXQgKnQsCiAJaTkxNV90YXNrbGV0X2VuYWJsZSh0KTsKIH0K IAorc3RhdGljIGlubGluZSB2b2lkIF9faTkxNV90YXNrbGV0X3J1bihjb25zdCBzdHJ1Y3QgaTkx NV90YXNrbGV0ICp0KQoreworCXQtPmJhc2UuZnVuYyh0LT5iYXNlLmRhdGEpOworfQorCitzdGF0 aWMgaW5saW5lIHZvaWQgaTkxNV90YXNrbGV0X3J1bihjb25zdCBzdHJ1Y3QgaTkxNV90YXNrbGV0 ICp0KQoreworCUdFTV9CVUdfT04oIWk5MTVfdGFza2xldF9pc19ydW5uaW5nKHQpKTsKKwlfX2k5 MTVfdGFza2xldF9ydW4odCk7Cit9CisKICNlbmRpZiAvKiBfSTkxNV9UQVNLTEVUX0hfICovCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfc3VibWlzc2lvbi5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwppbmRleCBhN2FmYzk3 NmMzYjkuLmYyZGVkMTc5NjUyMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZ3VjX3N1Ym1pc3Npb24uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNf c3VibWlzc2lvbi5jCkBAIC03NTQsMTQgKzc1NCwxOCBAQCBzdGF0aWMgYm9vbCBfX2d1Y19kZXF1 ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAogc3RhdGljIHZvaWQgZ3VjX2Rl cXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCXVuc2lnbmVkIGxvbmcg ZmxhZ3M7CisJdW5zaWduZWQgbG9uZyB1bmluaXRpYWxpemVkX3ZhcihmbGFncyk7CiAJYm9vbCBz dWJtaXQ7CiAKIAlsb2NhbF9pcnFfc2F2ZShmbGFncyk7CiAKLQlzcGluX2xvY2soJmVuZ2luZS0+ dGltZWxpbmUubG9jayk7CisJaWYgKCFpOTE1X3Rhc2tsZXRfaXNfZGlyZWN0X3N1Ym1pdCgmZW5n aW5lLT5leGVjbGlzdHMudGFza2xldCkpCisJCXNwaW5fbG9jaygmZW5naW5lLT50aW1lbGluZS5s b2NrKTsKKwogCXN1Ym1pdCA9IF9fZ3VjX2RlcXVldWUoZW5naW5lKTsKLQlzcGluX3VubG9jaygm ZW5naW5lLT50aW1lbGluZS5sb2NrKTsKKworCWlmICghaTkxNV90YXNrbGV0X2lzX2RpcmVjdF9z dWJtaXQoJmVuZ2luZS0+ZXhlY2xpc3RzLnRhc2tsZXQpKQorCQlzcGluX3VubG9jaygmZW5naW5l LT50aW1lbGluZS5sb2NrKTsKIAogCWlmIChzdWJtaXQpCiAJCWd1Y19zdWJtaXQoZW5naW5lKTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKaW5kZXggMGMzZGFkNWM5NzA5Li43MGYxYjVkZDQ5MmEg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCkBAIC0zNTYsMTMgKzM1NiwxNSBAQCBleGVjbGlz dHNfdW53aW5kX2luY29tcGxldGVfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlz dHMgKmV4ZWNsaXN0cykKIHsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPQogCQlj b250YWluZXJfb2YoZXhlY2xpc3RzLCB0eXBlb2YoKmVuZ2luZSksIGV4ZWNsaXN0cyk7Ci0JdW5z aWduZWQgbG9uZyBmbGFnczsKKwl1bnNpZ25lZCBsb25nIHVuaW5pdGlhbGl6ZWRfdmFyKGZsYWdz KTsKIAotCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsK KwlpZiAoIWk5MTVfdGFza2xldF9pc19kaXJlY3Rfc3VibWl0KCZleGVjbGlzdHMtPnRhc2tsZXQp KQorCQlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT50aW1lbGluZS5sb2NrLCBmbGFncyk7CiAK IAlfX3Vud2luZF9pbmNvbXBsZXRlX3JlcXVlc3RzKGVuZ2luZSk7CiAKLQlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKKwlpZiAoIWk5MTVfdGFz a2xldF9pc19kaXJlY3Rfc3VibWl0KCZleGVjbGlzdHMtPnRhc2tsZXQpKQorCQlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKIH0KIAogc3RhdGlj IGlubGluZSB2b2lkCkBAIC02MDEsNiArNjAzLDggQEAgc3RhdGljIGJvb2wgX19leGVjbGlzdHNf ZGVxdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJCSAqLwogCQlHRU1fQlVH X09OKCFleGVjbGlzdHNfaXNfYWN0aXZlKGV4ZWNsaXN0cywKIAkJCQkJCUVYRUNMSVNUU19BQ1RJ VkVfVVNFUikpOworCQlHRU1fQlVHX09OKGV4ZWNsaXN0c19pc19hY3RpdmUoZXhlY2xpc3RzLAor CQkJCQkgICAgICAgRVhFQ0xJU1RTX0FDVElWRV9QUkVFTVBUKSk7CiAJCUdFTV9CVUdfT04oIXBv cnRfY291bnQoJnBvcnRbMF0pKTsKIAkJaWYgKHBvcnRfY291bnQoJnBvcnRbMF0pID4gMSkKIAkJ CXJldHVybiBmYWxzZTsKQEAgLTc1NywxMiArNzYxLDE2IEBAIHN0YXRpYyBib29sIF9fZXhlY2xp c3RzX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogc3RhdGljIHZvaWQg ZXhlY2xpc3RzX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCXN0 cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xpc3RzID0gJmVuZ2luZS0+ ZXhlY2xpc3RzOwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJdW5zaWduZWQgbG9uZyB1bmluaXRp YWxpemVkX3ZhcihmbGFncyk7CiAJYm9vbCBzdWJtaXQ7CiAKLQlzcGluX2xvY2tfaXJxc2F2ZSgm ZW5naW5lLT50aW1lbGluZS5sb2NrLCBmbGFncyk7CisJaWYgKCFpOTE1X3Rhc2tsZXRfaXNfZGly ZWN0X3N1Ym1pdCgmZXhlY2xpc3RzLT50YXNrbGV0KSkKKwkJc3Bpbl9sb2NrX2lycXNhdmUoJmVu Z2luZS0+dGltZWxpbmUubG9jaywgZmxhZ3MpOworCiAJc3VibWl0ID0gX19leGVjbGlzdHNfZGVx dWV1ZShlbmdpbmUpOwotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+dGltZWxpbmUu bG9jaywgZmxhZ3MpOworCisJaWYgKCFpOTE1X3Rhc2tsZXRfaXNfZGlyZWN0X3N1Ym1pdCgmZXhl Y2xpc3RzLT50YXNrbGV0KSkKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT50aW1l bGluZS5sb2NrLCBmbGFncyk7CiAKIAlpZiAoc3VibWl0KQogCQlleGVjbGlzdHNfc3VibWl0X3Bv cnRzKGVuZ2luZSk7CkBAIC0xMTYzLDE2ICsxMTcxLDUyIEBAIHN0YXRpYyB2b2lkIHF1ZXVlX3Jl cXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCQkgICAgICAmbG9va3VwX3By aW9saXN0KGVuZ2luZSwgcHJpbyktPnJlcXVlc3RzKTsKIH0KIAotc3RhdGljIHZvaWQgX19zdWJt aXRfcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBpbnQgcHJpbykKK3N0YXRp YyB2b2lkIF9fdXBkYXRlX3F1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgaW50 IHByaW8pCiB7CiAJZW5naW5lLT5leGVjbGlzdHMucXVldWVfcHJpb3JpdHkgPSBwcmlvOworfQor CitzdGF0aWMgdm9pZCBfX3NjaGVkdWxlX3F1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKK3sKIAlpOTE1X3Rhc2tsZXRfc2NoZWR1bGUoJmVuZ2luZS0+ZXhlY2xpc3RzLnRhc2ts ZXQpOwogfQogCitzdGF0aWMgYm9vbCBfX2RpcmVjdF9zdWJtaXQoc3RydWN0IGludGVsX2VuZ2lu ZV9leGVjbGlzdHMgKmNvbnN0IGV4ZWNsaXN0cykKK3sKKwlzdHJ1Y3QgaTkxNV90YXNrbGV0ICog Y29uc3QgdCA9ICZleGVjbGlzdHMtPnRhc2tsZXQ7CisKKwlpZiAoIXRhc2tsZXRfdHJ5bG9jaygm dC0+YmFzZSkpCisJCXJldHVybiBmYWxzZTsKKworCXQtPmZsYWdzIHw9IEk5MTVfVEFTS0xFVF9E SVJFQ1RfU1VCTUlUOworCWk5MTVfdGFza2xldF9ydW4odCk7CisJdC0+ZmxhZ3MgJj0gfkk5MTVf VEFTS0xFVF9ESVJFQ1RfU1VCTUlUOworCisJdGFza2xldF91bmxvY2soJnQtPmJhc2UpOworCXJl dHVybiB0cnVlOworfQorCitzdGF0aWMgdm9pZCBfX3N1Ym1pdF9xdWV1ZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBj b25zdCBleGVjbGlzdHMgPSAmZW5naW5lLT5leGVjbGlzdHM7CisKKwlHRU1fQlVHX09OKCFlbmdp bmUtPmk5MTUtPmd0LmF3YWtlKTsKKworCS8qIElmIGluc2lkZSBHUFUgcmVzZXQsIHRoZSB0YXNr bGV0IHdpbGwgYmUgcXVldWVkIGxhdGVyLiAqLworCWlmICghaTkxNV90YXNrbGV0X2lzX2VuYWJs ZWQoJmV4ZWNsaXN0cy0+dGFza2xldCkpCisJCXJldHVybjsKKworCS8qIERpcmVjdGx5IHN1Ym1p dCB0aGUgZmlyc3QgcmVxdWVzdCB0byByZWR1Y2UgdGhlIGluaXRpYWwgbGF0ZW5jeSAqLworCWlm IChwb3J0X2lzc2V0KGV4ZWNsaXN0cy0+cG9ydCkgfHwgIV9fZGlyZWN0X3N1Ym1pdChleGVjbGlz dHMpKQorCQlfX3NjaGVkdWxlX3F1ZXVlKGVuZ2luZSk7Cit9CisKIHN0YXRpYyB2b2lkIHN1Ym1p dF9xdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGludCBwcmlvKQogewotCWlm IChwcmlvID4gZW5naW5lLT5leGVjbGlzdHMucXVldWVfcHJpb3JpdHkpCi0JCV9fc3VibWl0X3F1 ZXVlKGVuZ2luZSwgcHJpbyk7CisJaWYgKHByaW8gPiBlbmdpbmUtPmV4ZWNsaXN0cy5xdWV1ZV9w cmlvcml0eSkgeworCQlfX3VwZGF0ZV9xdWV1ZShlbmdpbmUsIHByaW8pOworCQlfX3N1Ym1pdF9x dWV1ZShlbmdpbmUpOworCX0KIH0KIAogc3RhdGljIHZvaWQgZXhlY2xpc3RzX3N1Ym1pdF9yZXF1 ZXN0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCkBAIC0xMTg0LDEwICsxMjI4LDkgQEAg c3RhdGljIHZvaWQgZXhlY2xpc3RzX3N1Ym1pdF9yZXF1ZXN0KHN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJlcXVlc3QpCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+dGltZWxpbmUubG9jaywgZmxh Z3MpOwogCiAJcXVldWVfcmVxdWVzdChlbmdpbmUsICZyZXF1ZXN0LT5zY2hlZCwgcnFfcHJpbyhy ZXF1ZXN0KSk7Ci0Jc3VibWl0X3F1ZXVlKGVuZ2luZSwgcnFfcHJpbyhyZXF1ZXN0KSk7Ci0KIAlH RU1fQlVHX09OKCFlbmdpbmUtPmV4ZWNsaXN0cy5maXJzdCk7CiAJR0VNX0JVR19PTihsaXN0X2Vt cHR5KCZyZXF1ZXN0LT5zY2hlZC5saW5rKSk7CisJc3VibWl0X3F1ZXVlKGVuZ2luZSwgcnFfcHJp byhyZXF1ZXN0KSk7CiAKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5l LmxvY2ssIGZsYWdzKTsKIH0KQEAgLTEzMTUsOCArMTM1OCwxMCBAQCBzdGF0aWMgdm9pZCBleGVj bGlzdHNfc2NoZWR1bGUoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCwKIAkJfQogCiAJCWlm IChwcmlvID4gZW5naW5lLT5leGVjbGlzdHMucXVldWVfcHJpb3JpdHkgJiYKLQkJICAgIGk5MTVf c3dfZmVuY2VfZG9uZSgmc2NoZWRfdG9fcmVxdWVzdChub2RlKS0+c3VibWl0KSkKLQkJCV9fc3Vi bWl0X3F1ZXVlKGVuZ2luZSwgcHJpbyk7CisJCSAgICBpOTE1X3N3X2ZlbmNlX2RvbmUoJnNjaGVk X3RvX3JlcXVlc3Qobm9kZSktPnN1Ym1pdCkpIHsKKwkJCV9fdXBkYXRlX3F1ZXVlKGVuZ2luZSwg cHJpbyk7CisJCQlfX3NjaGVkdWxlX3F1ZXVlKGVuZ2luZSk7CisJCX0KIAl9CiAKIAlzcGluX3Vu bG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUubG9jayk7Ci0tIAoyLjE3LjAKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=