From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-14.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,HK_RANDOM_FROM,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B08AFC07E96 for ; Thu, 15 Jul 2021 10:33:19 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 140E560BD3 for ; Thu, 15 Jul 2021 10:33:17 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 140E560BD3 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id AF6A56E81D; Thu, 15 Jul 2021 10:33:16 +0000 (UTC) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7A16A6E81D; Thu, 15 Jul 2021 10:33:15 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10045"; a="296162711" X-IronPort-AV: E=Sophos;i="5.84,240,1620716400"; d="scan'208";a="296162711" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jul 2021 03:33:15 -0700 X-IronPort-AV: E=Sophos;i="5.84,240,1620716400"; d="scan'208";a="494527959" Received: from shyland-mobl2.ger.corp.intel.com (HELO [10.213.241.81]) ([10.213.241.81]) by orsmga001-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jul 2021 03:33:12 -0700 To: Matthew Auld , intel-gfx@lists.freedesktop.org References: <20210715101536.2606307-1-matthew.auld@intel.com> <20210715101536.2606307-4-matthew.auld@intel.com> From: Tvrtko Ursulin Organization: Intel Corporation UK Plc Message-ID: <997238fe-075b-380d-3ef2-b9f528193623@linux.intel.com> Date: Thu, 15 Jul 2021 11:33:10 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <20210715101536.2606307-4-matthew.auld@intel.com> Content-Language: en-US Subject: Re: [Intel-gfx] [PATCH 3/4] drm/i915/userptr: Probe existence of backing struct pages upon creation X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?Q?Thomas_Hellstr=c3=b6m?= , dri-devel@lists.freedesktop.org, Chris Wilson , Kenneth Graunke , Daniel Vetter Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Ck9uIDE1LzA3LzIwMjEgMTE6MTUsIE1hdHRoZXcgQXVsZCB3cm90ZToKPiBGcm9tOiBDaHJpcyBX aWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiAKPiBKYXNvbiBFa3N0cmFuZCByZXF1 ZXN0ZWQgYSBtb3JlIGVmZmljaWVudCBtZXRob2QgdGhhbiB1c2VycHRyK3NldC1kb21haW4KPiB0 byBkZXRlcm1pbmUgaWYgdGhlIHVzZXJwdHIgb2JqZWN0IHdhcyBiYWNrZWQgYnkgYSBjb21wbGV0 ZSBzZXQgb2YgcGFnZXMKPiB1cG9uIGNyZWF0aW9uLiBUbyBiZSBtb3JlIGVmZmljaWVudCB0aGFu IHNpbXBseSBwb3B1bGF0aW5nIHRoZSB1c2VycHRyCj4gdXNpbmcgZ2V0X3VzZXJfcGFnZXMoKSAo YXMgZG9uZSBieSB0aGUgY2FsbCB0byBzZXQtZG9tYWluIG9yIGV4ZWNidWYpLAo+IHdlIGNhbiB3 YWxrIHRoZSB0cmVlIG9mIHZtX2FyZWFfc3RydWN0IGFuZCBjaGVjayBmb3IgZ2FwcyBvciB2bWEg bm90Cj4gYmFja2VkIGJ5IHN0cnVjdCBwYWdlIChWTV9QRk5NQVApLiBUaGUgcXVlc3Rpb24gaXMg aG93IHRvIGhhbmRsZQo+IFZNX01JWEVETUFQIHdoaWNoIG1heSBiZSBlaXRoZXIgc3RydWN0IHBh Z2Ugb3IgcGZuIGJhY2tlZC4uLgo+IAo+IFdpdGggZGlzY3JldGUgYXJlIGdvaW5nIHRvIGRyb3Ag c3VwcG9ydCBmb3Igc2V0X2RvbWFpbigpLCBzbyBvZmZlcmluZyBhCj4gd2F5IHRvIHByb2JlIHRo ZSBwYWdlcywgd2l0aG91dCBoYXZpbmcgdG8gcmVzb3J0IHRvIGR1bW15IGJhdGNoZXMgaGFzCj4g YmVlbiByZXF1ZXN0ZWQuCj4gCj4gdjI6Cj4gLSBhZGQgbmV3IHF1ZXJ5IHBhcmFtIGZvciB0aGUg UFJPUEJFIGZsYWcsIHNvIHVzZXJzcGFjZSBjYW4gZWFzaWx5Cj4gICAgY2hlY2sgaWYgdGhlIGtl cm5lbCBzdXBwb3J0cyBpdChKYXNvbikuCj4gLSB1c2UgbW1hcF9yZWFkX3tsb2NrLCB1bmxvY2t9 Lgo+IC0gYWRkIHNvbWUga2VybmVsLWRvYy4KCjEpCgpJIHRoaW5rIHByb2JpbmcgaXMgdG9vIHdl YWsgdG8gYmUgb2ZmZXJlZCBhcyBwYXJ0IG9mIHRoZSB1YXBpLiBXaGF0IApwcm9iZXMgc3VjY2Vz c2Z1bGx5IGF0IGNyZWF0ZSB0aW1lIG1pZ2h0IG5vdCBiZSB0aGVyZSBhbnltb3JlIGF0IHVzYWdl IAp0aW1lLiBTbyBpZiB0aGUgcG9pbnRlciBpcyBub3QgdHJ1c3RlZCBhdCBvbmUgcG9pbnQsIHdo eSBzaG91bGQgaXQgYmUgYXQgCmEgbGF0ZXIgc3RhZ2U/CgpPbmx5IHRoaW5nIHdoaWNoIHdvcmtz IGZvciBtZSBpcyBwb3B1bGF0ZSAoc28gZ2V0X3BhZ2VzKSBhdCBjcmVhdGUgdGltZS4gCkJ1dCBh Z2FpbiB3aXRoIG5vIGd1YXJhbnRlZXMgdGhleSBhcmUgc3RpbGwgdGhlcmUgYXQgdXNlIHRpbWUg Y2xlYXJseSAKZG9jdW1lbnRlZC4KCjIpCgpJIGFtIGFsc28gbm90IGEgZmFuIG9mIGdldHBhcmFt IGZvciBpbmRpdmlkdWFsIGlvY3RsIGZsYWdzIHNpbmNlIEkgZG9uJ3QgCnRoaW5rIGl0IHNjYWxl cyBuaWNlbHkuIEhvdyBhYm91dCBhZGQgYSBwYXJhbSB3aGljaCByZXR1cm5zIGFsbCAKc3VwcG9y dGVkIGZsYWdzIGxpa2UgSTkxNV9QQVJBTV9VU0VSUFRSX1NVUFBPUlRFRF9GTEFHUz8KCkRvd25z aWRlIGlzIGl0IG9ubHkgd29ya3MgZm9yIDMyLWJpdCBmbGFnIGZpZWxkcyB3aXRoIGdldHBhcmFt LiBPciBpdCAKY291bGQgYmUgYSBxdWVyeSB0byBzb2x2ZSB0aGF0IGFzIHdlbGwuCgpSZWdhcmRz LAoKVHZydGtvCgo+IFRlc3RjYXNlOiBpZ3QvZ2VtX3VzZXJwdHJfYmxpdHMvcHJvYmUKPiBTaWdu ZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBTaWdu ZWQtb2ZmLWJ5OiBNYXR0aGV3IEF1bGQgPG1hdHRoZXcuYXVsZEBpbnRlbC5jb20+Cj4gQ2M6IFRo b21hcyBIZWxsc3Ryw7ZtIDx0aG9tYXMuaGVsbHN0cm9tQGxpbnV4LmludGVsLmNvbT4KPiBDYzog TWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiBD YzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGxpbnV4LmludGVsLmNvbT4KPiBDYzog Sm9yZGFuIEp1c3RlbiA8am9yZGFuLmwuanVzdGVuQGludGVsLmNvbT4KPiBDYzogS2VubmV0aCBH cmF1bmtlIDxrZW5uZXRoQHdoaXRlY2FwZS5vcmc+Cj4gQ2M6IEphc29uIEVrc3RyYW5kIDxqYXNv bkBqbGVrc3RyYW5kLm5ldD4KPiBDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZnds bC5jaD4KPiBDYzogUmFtYWxpbmdhbSBDIDxyYW1hbGluZ2FtLmNAaW50ZWwuY29tPgo+IC0tLQo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3VzZXJwdHIuYyB8IDQwICsrKysr KysrKysrKysrKysrKysrLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZXRwYXJhbS5j ICAgICAgICB8ICAzICsrCj4gICBpbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggICAgICAgICAg ICAgICAgIHwgMTggKysrKysrKysrKwo+ICAgMyBmaWxlcyBjaGFuZ2VkLCA2MCBpbnNlcnRpb25z KCspLCAxIGRlbGV0aW9uKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2dlbS9pOTE1X2dlbV91c2VycHRyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9n ZW1fdXNlcnB0ci5jCj4gaW5kZXggNTZlZGZlZmY4YzAyLi5mZDY4ODAzMjg1OTYgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3VzZXJwdHIuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV91c2VycHRyLmMKPiBAQCAtNDIyLDYg KzQyMiwzMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Rfb3BzIGk5 MTVfZ2VtX3VzZXJwdHJfb3BzID0gewo+ICAgCj4gICAjZW5kaWYKPiAgIAo+ICtzdGF0aWMgaW50 Cj4gK3Byb2JlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIs IHVuc2lnbmVkIGxvbmcgbGVuKQo+ICt7Cj4gKwljb25zdCB1bnNpZ25lZCBsb25nIGVuZCA9IGFk ZHIgKyBsZW47Cj4gKwlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTsKPiArCWludCByZXQgPSAt RUZBVUxUOwo+ICsKPiArCW1tYXBfcmVhZF9sb2NrKG1tKTsKPiArCWZvciAodm1hID0gZmluZF92 bWEobW0sIGFkZHIpOyB2bWE7IHZtYSA9IHZtYS0+dm1fbmV4dCkgewo+ICsJCWlmICh2bWEtPnZt X3N0YXJ0ID4gYWRkcikKPiArCQkJYnJlYWs7Cj4gKwo+ICsJCWlmICh2bWEtPnZtX2ZsYWdzICYg KFZNX1BGTk1BUCB8IFZNX01JWEVETUFQKSkKPiArCQkJYnJlYWs7Cj4gKwo+ICsJCWlmICh2bWEt PnZtX2VuZCA+PSBlbmQpIHsKPiArCQkJcmV0ID0gMDsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsK PiArCQlhZGRyID0gdm1hLT52bV9lbmQ7Cj4gKwl9Cj4gKwltbWFwX3JlYWRfdW5sb2NrKG1tKTsK PiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICAgLyoKPiAgICAqIENyZWF0ZXMgYSBuZXcg bW0gb2JqZWN0IHRoYXQgd3JhcHMgc29tZSBub3JtYWwgbWVtb3J5IGZyb20gdGhlIHByb2Nlc3MK PiAgICAqIGNvbnRleHQgLSB1c2VyIG1lbW9yeS4KPiBAQCAtNDc3LDcgKzUwNCw4IEBAIGk5MTVf Z2VtX3VzZXJwdHJfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAl9Cj4gICAKPiAg IAlpZiAoYXJncy0+ZmxhZ3MgJiB+KEk5MTVfVVNFUlBUUl9SRUFEX09OTFkgfAo+IC0JCQkgICAg STkxNV9VU0VSUFRSX1VOU1lOQ0hST05JWkVEKSkKPiArCQkJICAgIEk5MTVfVVNFUlBUUl9VTlNZ TkNIUk9OSVpFRCB8Cj4gKwkJCSAgICBJOTE1X1VTRVJQVFJfUFJPQkUpKQo+ICAgCQlyZXR1cm4g LUVJTlZBTDsKPiAgIAo+ICAgCWlmIChpOTE1X2dlbV9vYmplY3Rfc2l6ZV8yYmlnKGFyZ3MtPnVz ZXJfc2l6ZSkpCj4gQEAgLTUwNCw2ICs1MzIsMTYgQEAgaTkxNV9nZW1fdXNlcnB0cl9pb2N0bChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCQkJcmV0dXJuIC1FTk9ERVY7Cj4gICAJfQo+ICAg Cj4gKwlpZiAoYXJncy0+ZmxhZ3MgJiBJOTE1X1VTRVJQVFJfUFJPQkUpIHsKPiArCQkvKgo+ICsJ CSAqIENoZWNrIHRoYXQgdGhlIHJhbmdlIHBvaW50ZWQgdG8gcmVwcmVzZW50cyByZWFsIHN0cnVj dAo+ICsJCSAqIHBhZ2VzIGFuZCBub3QgaW9tYXBwaW5ncyAoYXQgdGhpcyBtb21lbnQgaW4gdGlt ZSEpCj4gKwkJICovCj4gKwkJcmV0ID0gcHJvYmVfcmFuZ2UoY3VycmVudC0+bW0sIGFyZ3MtPnVz ZXJfcHRyLCBhcmdzLT51c2VyX3NpemUpOwo+ICsJCWlmIChyZXQpCj4gKwkJCXJldHVybiByZXQ7 Cj4gKwl9Cj4gKwo+ICAgI2lmZGVmIENPTkZJR19NTVVfTk9USUZJRVIKPiAgIAlvYmogPSBpOTE1 X2dlbV9vYmplY3RfYWxsb2MoKTsKPiAgIAlpZiAob2JqID09IE5VTEwpCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2V0cGFyYW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2V0cGFyYW0uYwo+IGluZGV4IDI0ZTE4MjE5ZWI1MC4uZDZkMmUxYTEwZDE0IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2V0cGFyYW0uYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2V0cGFyYW0uYwo+IEBAIC0xNjMsNiArMTYzLDkg QEAgaW50IGk5MTVfZ2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAq ZGF0YSwKPiAgIAljYXNlIEk5MTVfUEFSQU1fUEVSRl9SRVZJU0lPTjoKPiAgIAkJdmFsdWUgPSBp OTE1X3BlcmZfaW9jdGxfdmVyc2lvbigpOwo+ICAgCQlicmVhazsKPiArCWNhc2UgSTkxNV9QQVJB TV9IQVNfVVNFUlBUUl9QUk9CRToKPiArCQl2YWx1ZSA9IHRydWU7Cj4gKwkJYnJlYWs7Cj4gICAJ ZGVmYXVsdDoKPiAgIAkJRFJNX0RFQlVHKCJVbmtub3duIHBhcmFtZXRlciAlZFxuIiwgcGFyYW0t PnBhcmFtKTsKPiAgIAkJcmV0dXJuIC1FSU5WQUw7Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFw aS9kcm0vaTkxNV9kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+IGluZGV4IGUy MGVlZWNhN2ExYy4uMmU0MTEyYmY0ZDM4IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvdWFwaS9kcm0v aTkxNV9kcm0uaAo+ICsrKyBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+IEBAIC02NzQs NiArNjc0LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgZHJtX2k5MTVfaXJxX3dhaXQgewo+ICAgICovCj4g ICAjZGVmaW5lIEk5MTVfUEFSQU1fSEFTX0VYRUNfVElNRUxJTkVfRkVOQ0VTIDU1Cj4gICAKPiAr LyogUXVlcnkgaWYgdGhlIGtlcm5lbCBzdXBwb3J0cyB0aGUgSTkxNV9VU0VSUFRSX1BST0JFIGZs YWcuICovCj4gKyNkZWZpbmUgSTkxNV9QQVJBTV9IQVNfVVNFUlBUUl9QUk9CRSA1Ngo+ICsKPiAg IC8qIE11c3QgYmUga2VwdCBjb21wYWN0IC0tIG5vIGhvbGVzIGFuZCB3ZWxsIGRvY3VtZW50ZWQg Ki8KPiAgIAo+ICAgdHlwZWRlZiBzdHJ1Y3QgZHJtX2k5MTVfZ2V0cGFyYW0gewo+IEBAIC0yMTc4 LDEyICsyMTgxLDI3IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fdXNlcnB0ciB7Cj4gICAJICogdGhy b3VnaCB0aGUgR1RULiBJZiB0aGUgSFcgY2FuJ3Qgc3VwcG9ydCByZWFkb25seSBhY2Nlc3MsIGFu IGVycm9yIGlzCj4gICAJICogcmV0dXJuZWQuCj4gICAJICoKPiArCSAqIEk5MTVfVVNFUlBUUl9Q Uk9CRToKPiArCSAqCj4gKwkgKiBQcm9iZSB0aGUgcHJvdmlkZWQgQHVzZXJfcHRyIHJhbmdlIGFu ZCB2YWxpZGF0ZSB0aGF0IHRoZSBAdXNlcl9wdHIgaXMKPiArCSAqIGluZGVlZCBwb2ludGluZyB0 byBub3JtYWwgbWVtb3J5IGFuZCB0aGF0IHRoZSByYW5nZSBpcyBhbHNvIHZhbGlkLgo+ICsJICog Rm9yIGV4YW1wbGUgaWYgc29tZSBnYXJiYWdlIGFkZHJlc3MgaXMgZ2l2ZW4gdG8gdGhlIGtlcm5l bCwgdGhlbiB0aGlzCj4gKwkgKiBzaG91bGQgY29tcGxhaW4uCj4gKwkgKgo+ICsJICogUmV0dXJu cyAtRUZBVUxUIGlmIHRoZSBwcm9iZSBmYWlsZWQuCj4gKwkgKgo+ICsJICogTm90ZSB0aGF0IHRo aXMgZG9lc24ndCBwb3B1bGF0ZSB0aGUgYmFja2luZyBwYWdlcy4KPiArCSAqCj4gKwkgKiBUaGUg a2VybmVsIHN1cHBvcnRzIHRoaXMgZmVhdHVyZSBpZiBJOTE1X1BBUkFNX0hBU19VU0VSUFRSX1BS T0JFCj4gKwkgKiByZXR1cm5zIGEgbm9uLXplcm8gdmFsdWUuCj4gKwkgKgo+ICAgCSAqIEk5MTVf VVNFUlBUUl9VTlNZTkNIUk9OSVpFRDoKPiAgIAkgKgo+ICAgCSAqIE5PVCBVU0VELiBTZXR0aW5n IHRoaXMgZmxhZyB3aWxsIHJlc3VsdCBpbiBhbiBlcnJvci4KPiAgIAkgKi8KPiAgIAlfX3UzMiBm bGFnczsKPiAgICNkZWZpbmUgSTkxNV9VU0VSUFRSX1JFQURfT05MWSAweDEKPiArI2RlZmluZSBJ OTE1X1VTRVJQVFJfUFJPQkUgMHgyCj4gICAjZGVmaW5lIEk5MTVfVVNFUlBUUl9VTlNZTkNIUk9O SVpFRCAweDgwMDAwMDAwCj4gICAJLyoqCj4gICAJICogQGhhbmRsZTogUmV0dXJuZWQgaGFuZGxl IGZvciB0aGUgb2JqZWN0Lgo+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK