From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v9 2/6] drm/i915: Convert requests to use struct fence Date: Thu, 2 Jun 2016 12:07:35 +0100 Message-ID: <57501377.8010202@linux.intel.com> References: <1464800848-36672-1-git-send-email-John.C.Harrison@Intel.com> <1464800848-36672-3-git-send-email-John.C.Harrison@Intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 6AD2E6EB5D for ; Thu, 2 Jun 2016 11:07:37 +0000 (UTC) In-Reply-To: <1464800848-36672-3-git-send-email-John.C.Harrison@Intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: John.C.Harrison@Intel.com, Intel-GFX@Lists.FreeDesktop.Org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDAxLzA2LzE2IDE4OjA3LCBKb2huLkMuSGFycmlzb25ASW50ZWwuY29tIHdyb3RlOgo+IEZy b206IEpvaG4gSGFycmlzb24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+Cj4KPiBUaGVyZSBp cyBhIGNvbnN0cnVjdCBpbiB0aGUgbGludXgga2VybmVsIGNhbGxlZCAnc3RydWN0IGZlbmNlJyB0 aGF0IGlzCj4gaW50ZW5kZWQgdG8ga2VlcCB0cmFjayBvZiB3b3JrIHRoYXQgaXMgZXhlY3V0ZWQg b24gaGFyZHdhcmUuIEkuZS4gaXQKPiBzb2x2ZXMgdGhlIGJhc2ljIHByb2JsZW0gdGhhdCB0aGUg ZHJpdmVycyAnc3RydWN0Cj4gZHJtX2k5MTVfZ2VtX3JlcXVlc3QnIGlzIHRyeWluZyB0byBhZGRy ZXNzLiBUaGUgcmVxdWVzdCBzdHJ1Y3R1cmUgZG9lcwo+IHF1aXRlIGEgbG90IG1vcmUgdGhhbiBz aW1wbHkgdHJhY2sgdGhlIGV4ZWN1dGlvbiBwcm9ncmVzcyBzbyBpcyB2ZXJ5Cj4gZGVmaW5pdGVs eSBzdGlsbCByZXF1aXJlZC4gSG93ZXZlciwgdGhlIGJhc2ljIGNvbXBsZXRpb24gc3RhdHVzIHNp ZGUKPiBjb3VsZCBiZSB1cGRhdGVkIHRvIHVzZSB0aGUgcmVhZHkgbWFkZSBmZW5jZSBpbXBsZW1l bnRhdGlvbiBhbmQgZ2Fpbgo+IGFsbCB0aGUgYWR2YW50YWdlcyB0aGF0IHByb3ZpZGVzLgo+Cj4g VGhpcyBwYXRjaCBtYWtlcyB0aGUgZmlyc3Qgc3RlcCBvZiBpbnRlZ3JhdGluZyBhIHN0cnVjdCBm ZW5jZSBpbnRvIHRoZQo+IHJlcXVlc3QuIEl0IHJlcGxhY2VzIHRoZSBleHBsaWNpdCByZWZlcmVu Y2UgY291bnQgd2l0aCB0aGF0IG9mIHRoZQo+IGZlbmNlLiBJdCBhbHNvIHJlcGxhY2VzIHRoZSAn aXMgY29tcGxldGVkJyB0ZXN0IHdpdGggdGhlIGZlbmNlJ3MKPiBlcXVpdmFsZW50LiBDdXJyZW50 bHksIHRoYXQgc2ltcGx5IGNoYWlucyBvbiB0byB0aGUgb3JpZ2luYWwgcmVxdWVzdAo+IGltcGxl bWVudGF0aW9uLiBBIGZ1dHVyZSBwYXRjaCB3aWxsIGltcHJvdmUgdGhpcy4KPgo+IHYzOiBVcGRh dGVkIGFmdGVyIHJldmlldyBjb21tZW50cyBieSBUdnJ0a28gVXJzdWxpbi4gQWRkZWQgZmVuY2UK PiBjb250ZXh0L3NlcW5vIHBhaXIgdG8gdGhlIGRlYnVnZnMgcmVxdWVzdCBpbmZvLiBSZW5hbWVk IGZlbmNlICdkcml2ZXIKPiBuYW1lJyB0byBqdXN0ICdpOTE1Jy4gUmVtb3ZlZCBCVUdfT05zLgo+ Cj4gdjU6IENoYW5nZWQgc2Vxbm8gZm9ybWF0IGluIGRlYnVnZnMgdG8gJXggcmF0aGVyIHRoYW4g JXUgYXMgdGhhdCBpcwo+IGFwcGFyZW50bHkgdGhlIHByZWZlcnJlZCBhcHBlYXJhbmNlLiBMaW5l IHdyYXBwZWQgc29tZSBsb25nIGxpbmVzIHRvCj4ga2VlcCB0aGUgc3R5bGUgY2hlY2tlciBoYXBw eS4KPgo+IHY2OiBVcGRhdGVkIHRvIG5ld2VyIG5pZ3RobHkgYW5kIHJlc29sdmVkIGNvbmZsaWN0 cy4gVGhlIGJpZ2dlc3QgaXNzdWUKPiB3YXMgd2l0aCB0aGUgcmUtd29ya2VkIGJ1c3kgc3BpbiBw cmVjdXJzb3IgdG8gd2FpdGluZyBvbiBhIHJlcXVlc3QuIEluCj4gcGFydGljdWxhciwgdGhlIGFk ZGl0aW9uIG9mIGEgJ3JlcXVlc3Rfc3RhcnRlZCcgaGVscGVyIGZ1bmN0aW9uLiBUaGlzCj4gaGFz IG5vIGNvcnJlc3BvbmRpbmcgY29uY2VwdCB3aXRoaW4gdGhlIGZlbmNlIGZyYW1ld29yay4gSG93 ZXZlciwgaXQKPiBpcyBvbmx5IGV2ZXIgdXNlZCBpbiBvbmUgcGxhY2UgYW5kIHRoZSB3aG9sZSBw b2ludCBvZiB0aGF0IHBsYWNlIGlzIHRvCj4gYWx3YXlzIGRpcmVjdGx5IHJlYWQgdGhlIHNlcW5v IGZvciBhYnNvbHV0ZWx5IGxvd2VzdCBsYXRlbmN5IHBvc3NpYmxlLgo+IFNvIHRoZSBzaW1wbGUg c29sdXRpb24gaXMgdG8ganVzdCBtYWtlIHRoZSBzZXFubyB0ZXN0IGV4cGxpY2l0IGF0IHRoYXQK PiBwb2ludCBub3cgcmF0aGVyIHRoYW4gbGF0ZXIgaW4gdGhlIHNlcmllcyAoaXQgd2FzIHByZXZp b3VzbHkgYmVpbmcKPiBkb25lIGFueXdheSB3aGVuIGZlbmNlcyBiZWNvbWUgaW50ZXJydXB0IGRy aXZlbikuCj4KPiB2NzogUmViYXNlZCB0byBuZXdlciBuaWdodGx5IC0gbG90cyBvZiByaW5nIC0+ IGVuZ2luZSByZW5hbWluZyBhbmQKPiBpbnRlcmZhY2UgY2hhbmdlIHRvIGdldF9zZXFubygpLgo+ Cj4gdjg6IFJlYmFzZWQgdG8gbmV3ZXIgbmlnaHRseSAtIG5vIGxvbmdlciBuZWVkcyB0byB3b3Jy eSBhYm91dCBtdXRleAo+IGxvY2tpbmcgaW4gdGhlIHJlcXVlc3QgZnJlZSBjb2RlIHBhdGguIE1v dmVkIHRvIGFmdGVyIGZlbmNlIHRpbWVsaW5lCj4gcGF0Y2ggc28gbm8gbG9uZ2VyIG5lZWRzIHRv IGFkZCBhIGhvcnJpZCBoYWNrIHRpbWVsaW5lLgo+Cj4gUmVtb3ZlZCBjb21tZW50ZWQgb3V0IGNv ZGUgYmxvY2suIEFkZGVkIHN1cHBvcnQgZm9yIHBvc3NpYmxlIFJDVSB1c2FnZQo+IG9mIGZlbmNl IG9iamVjdCAoUmV2aWV3IGNvbW1lbnRzIGJ5IE1hYXJ0ZW4gTGFua2hvcnN0KS4KPgo+IEZvcjog VklaLTUxOTAKPiBTaWduZWQtb2ZmLWJ5OiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25A SW50ZWwuY29tPgo+IENjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29t Pgo+IENjOiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwu Y29tPgo+IFJldmlld2VkLWJ5OiBKZXNzZSBCYXJuZXMgPGpiYXJuZXNAdmlydHVvdXNnZWVrLm9y Zz4KCldhcyBpdCBhbiByLWIgb3IgYW4gYWNrIGZyb20gSmVzc2U/IElmIHRoZSBmb3JtZXIgZG9l cyBpdCBuZWVkIGEgIih2PykiIApzdWZmaXgsIGRlcGVuZGluZyBvbiB0aGUgYW1vdW50IG9mIGNv ZGUgY2hhbmdlcyBhZnRlciBoaXMgci1iPwoKPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jICAgICB8ICAgNSArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCAgICAgICAgIHwgIDQzICsrKysrLS0tLS0tLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jICAgICAgICAgfCAxMDEgKysrKysrKysrKysrKysrKysrKysrKysrKysr KystLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICB8ICAgMSAr Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgfCAgIDEgKwo+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIHwgICAyICsKPiAgIDYgZmls ZXMgY2hhbmdlZCwgMTE1IGluc2VydGlvbnMoKyksIDM4IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCBhYzdlNTY5Li44NDRjYzRiIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBAQCAtNzY3LDExICs3NjcsMTIgQEAgc3Rh dGljIGludCBpOTE1X2dlbV9yZXF1ZXN0X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpk YXRhKQo+ICAgCQkJdGFzayA9IE5VTEw7Cj4gICAJCQlpZiAocmVxLT5waWQpCj4gICAJCQkJdGFz ayA9IHBpZF90YXNrKHJlcS0+cGlkLCBQSURUWVBFX1BJRCk7Cj4gLQkJCXNlcV9wcmludGYobSwg IiAgICAleCBAICVkOiAlcyBbJWRdXG4iLAo+ICsJCQlzZXFfcHJpbnRmKG0sICIgICAgJXggQCAl ZDogJXMgWyVkXSwgZmVuY2UgPSAleDoleFxuIiwKCkluIHRoZSBwcmV2aW91cyBwYXRjaCBmZW5j ZSBjb250ZXh0IGFuZCBzZXFubyB3ZXJlICVkIGluIHRoZSAKdGltZWxpbmUtPm5hbWUgc28gaXQg d291bGQgcHJvYmFibHkgYmUgbW9yZSBjb25zaXN0ZW50LgoKPiAgIAkJCQkgICByZXEtPnNlcW5v LAo+ICAgCQkJCSAgIChpbnQpIChqaWZmaWVzIC0gcmVxLT5lbWl0dGVkX2ppZmZpZXMpLAo+ICAg CQkJCSAgIHRhc2sgPyB0YXNrLT5jb21tIDogIjx1bmtub3duPiIsCj4gLQkJCQkgICB0YXNrID8g dGFzay0+cGlkIDogLTEpOwo+ICsJCQkJICAgdGFzayA/IHRhc2stPnBpZCA6IC0xLAo+ICsJCQkJ ICAgcmVxLT5mZW5jZS5jb250ZXh0LCByZXEtPmZlbmNlLnNlcW5vKTsKPiAgIAkJCXJjdV9yZWFk X3VubG9jaygpOwo+ICAgCQl9Cj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCBhNWY4 YWQ4Li45MDVmZWFlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTQyLDYgKzQy LDcgQEAKPiAgICNpbmNsdWRlIDxsaW51eC9rcmVmLmg+Cj4gICAjaW5jbHVkZSA8bGludXgvcG1f cW9zLmg+Cj4gICAjaW5jbHVkZSA8bGludXgvc2htZW1fZnMuaD4KPiArI2luY2x1ZGUgPGxpbnV4 L2ZlbmNlLmg+Cj4KPiAgICNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ICAgI2luY2x1ZGUgPGRybS9p bnRlbC1ndHQuaD4KPiBAQCAtMjM1Myw3ICsyMzU0LDExIEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0 IHNjYXR0ZXJsaXN0ICpfX3NnX25leHQoc3RydWN0IHNjYXR0ZXJsaXN0ICpzZykKPiAgICAqIGlu aXRpYWwgcmVmZXJlbmNlIHRha2VuIHVzaW5nIGtyZWZfaW5pdAo+ICAgICovCj4gICBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3Qgewo+IC0Jc3RydWN0IGtyZWYgcmVmOwo+ICsJLyoqCj4gKwkg KiBVbmRlcmx5aW5nIG9iamVjdCBmb3IgaW1wbGVtZW50aW5nIHRoZSBzaWduYWwvd2FpdCBzdHVm Zi4KPiArCSAqLwo+ICsJc3RydWN0IGZlbmNlIGZlbmNlOwo+ICsJc3RydWN0IHJjdV9oZWFkIHJj dV9oZWFkOwo+Cj4gICAJLyoqIE9uIFdoaWNoIHJpbmcgdGhpcyByZXF1ZXN0IHdhcyBnZW5lcmF0 ZWQgKi8KPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNTsKPiBAQCAtMjQ1NSw3ICsy NDYwLDEzIEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCB7Cj4gICBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKiBfX211c3RfY2hlY2sKPiAgIGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2Mo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAgCQkgICAgICAgc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKmN0eCk7Cj4gLXZvaWQgaTkxNV9nZW1fcmVxdWVzdF9mcmVlKHN0cnVjdCBr cmVmICpyZXFfcmVmKTsKPiArCj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X2dlbV9yZXF1ZXN0 X2NvbXBsZXRlZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiArCQkJCQkgICAg ICBib29sIGxhenlfY29oZXJlbmN5KQo+ICt7Cj4gKwlyZXR1cm4gZmVuY2VfaXNfc2lnbmFsZWQo JnJlcS0+ZmVuY2UpOwo+ICt9CgpJIHdvdWxkIHNxdWFzaCB0aGUgZm9sbG93aW5nIHBhdGNoIGlu dG8gdGhpcyBvbmUsIGl0IG1ha2VzIG5vIHNlbnNlIHRvIAprZWVwIGEgZnVuY3Rpb24gd2l0aCBh biB1bnVzZWQgcGFyYW1ldGVyLiBBbmQgZmV3ZXIgcGF0Y2hlcyBpbiB0aGUgCnNlcmllcyBtYWtl cyBpdCBsZXNzIHNjYXJ5IHRvIHJldmlldy4gOikgT2YgY291cnNlIGlmIHRoZXkgYXJlIGFsc28g bm90IAp0b28gYmlnLiA6RAoKPiArCj4gICBpbnQgaTkxNV9nZW1fcmVxdWVzdF9hZGRfdG9fY2xp ZW50KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAgCQkJCSAgIHN0cnVjdCBk cm1fZmlsZSAqZmlsZSk7Cj4KPiBAQCAtMjQ3NSwxNCArMjQ4NiwxNCBAQCBzdGF0aWMgaW5saW5l IHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqCj4gICBpOTE1X2dlbV9yZXF1ZXN0X3JlZmVy ZW5jZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAgIHsKPiAgIAlpZiAocmVx KQo+IC0JCWtyZWZfZ2V0KCZyZXEtPnJlZik7Cj4gKwkJZmVuY2VfZ2V0KCZyZXEtPmZlbmNlKTsK PiAgIAlyZXR1cm4gcmVxOwo+ICAgfQo+Cj4gICBzdGF0aWMgaW5saW5lIHZvaWQKPiAgIGk5MTVf Z2VtX3JlcXVlc3RfdW5yZWZlcmVuY2Uoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEp Cj4gICB7Cj4gLQlrcmVmX3B1dCgmcmVxLT5yZWYsIGk5MTVfZ2VtX3JlcXVlc3RfZnJlZSk7Cj4g KwlmZW5jZV9wdXQoJnJlcS0+ZmVuY2UpOwo+ICAgfQo+Cj4gICBzdGF0aWMgaW5saW5lIHZvaWQg aTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICoqcGRz dCwKPiBAQCAtMjQ5OCwxMiArMjUwOSw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X2dlbV9y ZXF1ZXN0X2Fzc2lnbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKipwZHN0LAo+ICAgfQo+ Cj4gICAvKgo+IC0gKiBYWFg6IGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkIHNob3VsZCBiZSBo ZXJlIGJ1dCBjdXJyZW50bHkgbmVlZHMgdGhlCj4gLSAqIGRlZmluaXRpb24gb2YgaTkxNV9zZXFu b19wYXNzZWQoKSB3aGljaCBpcyBiZWxvdy4gSXQgd2lsbCBiZSBtb3ZlZCBpbgo+IC0gKiBhIGxh dGVyIHBhdGNoIHdoZW4gdGhlIGNhbGwgdG8gaTkxNV9zZXFub19wYXNzZWQoKSBpcyBvYnNvbGV0 ZWQuLi4KPiAtICovCj4gLQo+IC0vKgo+ICAgICogQSBjb21tYW5kIHRoYXQgcmVxdWlyZXMgc3Bl Y2lhbCBoYW5kbGluZyBieSB0aGUgY29tbWFuZCBwYXJzZXIuCj4gICAgKi8KPiAgIHN0cnVjdCBk cm1faTkxNV9jbWRfZGVzY3JpcHRvciB7Cj4gQEAgLTMyMTEsMjQgKzMyMTYsNiBAQCBpOTE1X3Nl cW5vX3Bhc3NlZCh1aW50MzJfdCBzZXExLCB1aW50MzJfdCBzZXEyKQo+ICAgCXJldHVybiAoaW50 MzJfdCkoc2VxMSAtIHNlcTIpID49IDA7Cj4gICB9Cj4KPiAtc3RhdGljIGlubGluZSBib29sIGk5 MTVfZ2VtX3JlcXVlc3Rfc3RhcnRlZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwK PiAtCQkJCQkgICBib29sIGxhenlfY29oZXJlbmN5KQo+IC17Cj4gLQlpZiAoIWxhenlfY29oZXJl bmN5ICYmIHJlcS0+ZW5naW5lLT5pcnFfc2Vxbm9fYmFycmllcikKPiAtCQlyZXEtPmVuZ2luZS0+ aXJxX3NlcW5vX2JhcnJpZXIocmVxLT5lbmdpbmUpOwo+IC0JcmV0dXJuIGk5MTVfc2Vxbm9fcGFz c2VkKHJlcS0+ZW5naW5lLT5nZXRfc2Vxbm8ocmVxLT5lbmdpbmUpLAo+IC0JCQkJIHJlcS0+cHJl dmlvdXNfc2Vxbm8pOwo+IC19Cj4gLQo+IC1zdGF0aWMgaW5saW5lIGJvb2wgaTkxNV9nZW1fcmVx dWVzdF9jb21wbGV0ZWQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gLQkJCQkJ ICAgICAgYm9vbCBsYXp5X2NvaGVyZW5jeSkKPiAtewo+IC0JaWYgKCFsYXp5X2NvaGVyZW5jeSAm JiByZXEtPmVuZ2luZS0+aXJxX3NlcW5vX2JhcnJpZXIpCj4gLQkJcmVxLT5lbmdpbmUtPmlycV9z ZXFub19iYXJyaWVyKHJlcS0+ZW5naW5lKTsKPiAtCXJldHVybiBpOTE1X3NlcW5vX3Bhc3NlZChy ZXEtPmVuZ2luZS0+Z2V0X3NlcW5vKHJlcS0+ZW5naW5lKSwKPiAtCQkJCSByZXEtPnNlcW5vKTsK PiAtfQo+IC0KPiAgIGludCBfX211c3RfY2hlY2sgaTkxNV9nZW1fZ2V0X3NlcW5vKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyICpzZXFubyk7Cj4gICBpbnQgX19tdXN0X2No ZWNrIGk5MTVfZ2VtX3NldF9zZXFubyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgc2Vxbm8p Owo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggNTdkMzU5My4uYjY3ZmQ3YyAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC0xMTcwLDYgKzExNzAsNyBAQCBzdGF0aWMg aW50IF9faTkxNV9zcGluX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEs IGludCBzdGF0ZSkKPiAgIHsKPiAgIAl1bnNpZ25lZCBsb25nIHRpbWVvdXQ7Cj4gICAJdW5zaWdu ZWQgY3B1Owo+ICsJdWludDMyX3Qgc2Vxbm87Cj4KPiAgIAkvKiBXaGVuIHdhaXRpbmcgZm9yIGhp Z2ggZnJlcXVlbmN5IHJlcXVlc3RzLCBlLmcuIGR1cmluZyBzeW5jaHJvbm91cwo+ICAgCSAqIHJl bmRlcmluZyBzcGxpdCBiZXR3ZWVuIHRoZSBDUFUgYW5kIEdQVSwgdGhlIGZpbml0ZSBhbW91bnQg b2YgdGltZQo+IEBAIC0xMTg1LDEyICsxMTg2LDE0IEBAIHN0YXRpYyBpbnQgX19pOTE1X3NwaW5f cmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgaW50IHN0YXRlKQo+ICAg CQlyZXR1cm4gLUVCVVNZOwo+Cj4gICAJLyogT25seSBzcGluIGlmIHdlIGtub3cgdGhlIEdQVSBp cyBwcm9jZXNzaW5nIHRoaXMgcmVxdWVzdCAqLwo+IC0JaWYgKCFpOTE1X2dlbV9yZXF1ZXN0X3N0 YXJ0ZWQocmVxLCB0cnVlKSkKPiArCXNlcW5vID0gcmVxLT5lbmdpbmUtPmdldF9zZXFubyhyZXEt PmVuZ2luZSk7Cj4gKwlpZiAoIWk5MTVfc2Vxbm9fcGFzc2VkKHNlcW5vLCByZXEtPnByZXZpb3Vz X3NlcW5vKSkKPiAgIAkJcmV0dXJuIC1FQUdBSU47Cj4KPiAgIAl0aW1lb3V0ID0gbG9jYWxfY2xv Y2tfdXMoJmNwdSkgKyA1Owo+ICAgCXdoaWxlICghbmVlZF9yZXNjaGVkKCkpIHsKPiAtCQlpZiAo aTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxLCB0cnVlKSkKPiArCQlzZXFubyA9IHJlcS0+ ZW5naW5lLT5nZXRfc2Vxbm8ocmVxLT5lbmdpbmUpOwo+ICsJCWlmIChpOTE1X3NlcW5vX3Bhc3Nl ZChzZXFubywgcmVxLT5zZXFubykpCj4gICAJCQlyZXR1cm4gMDsKPgo+ICAgCQlpZiAoc2lnbmFs X3BlbmRpbmdfc3RhdGUoc3RhdGUsIGN1cnJlbnQpKQo+IEBAIC0xMjAyLDcgKzEyMDUsMTAgQEAg c3RhdGljIGludCBfX2k5MTVfc3Bpbl9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxLCBpbnQgc3RhdGUpCj4gICAJCWNwdV9yZWxheF9sb3dsYXRlbmN5KCk7Cj4gICAJfQo+ Cj4gLQlpZiAoaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxLCBmYWxzZSkpCj4gKwlpZiAo cmVxLT5lbmdpbmUtPmlycV9zZXFub19iYXJyaWVyKQo+ICsJCXJlcS0+ZW5naW5lLT5pcnFfc2Vx bm9fYmFycmllcihyZXEtPmVuZ2luZSk7Cj4gKwlzZXFubyA9IHJlcS0+ZW5naW5lLT5nZXRfc2Vx bm8ocmVxLT5lbmdpbmUpOwo+ICsJaWYgKGk5MTVfc2Vxbm9fcGFzc2VkKHNlcW5vLCByZXEtPnNl cW5vKSkKPiAgIAkJcmV0dXJuIDA7Cj4KPiAgIAlyZXR1cm4gLUVBR0FJTjsKPiBAQCAtMjczNiwx MyArMjc0Miw4OSBAQCBzdGF0aWMgdm9pZCBpOTE1X3NldF9yZXNldF9zdGF0dXMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCX0KPiAgIH0KPgo+IC12b2lkIGk5MTVfZ2Vt X3JlcXVlc3RfZnJlZShzdHJ1Y3Qga3JlZiAqcmVxX3JlZikKPiArc3RhdGljIHZvaWQgaTkxNV9n ZW1fcmVxdWVzdF9mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpCj4gICB7Cj4gLQlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSA9IGNvbnRhaW5lcl9vZihyZXFfcmVmLAo+IC0J CQkJCQkgdHlwZW9mKCpyZXEpLCByZWYpOwo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXE7Cj4gKwo+ICsJcmVxID0gY29udGFpbmVyX29mKGhlYWQsIHR5cGVvZigqcmVxKSwgcmN1 X2hlYWQpOwo+ICAgCWttZW1fY2FjaGVfZnJlZShyZXEtPmk5MTUtPnJlcXVlc3RzLCByZXEpOwo+ ICAgfQo+Cj4gK3N0YXRpYyB2b2lkIGk5MTVfZ2VtX3JlcXVlc3RfZnJlZShzdHJ1Y3QgZmVuY2Ug KnJlcV9mZW5jZSkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7Cj4g Kwo+ICsJcmVxID0gY29udGFpbmVyX29mKHJlcV9mZW5jZSwgdHlwZW9mKCpyZXEpLCBmZW5jZSk7 Cj4gKwljYWxsX3JjdSgmcmVxLT5yY3VfaGVhZCwgaTkxNV9nZW1fcmVxdWVzdF9mcmVlX3JjdSk7 Cj4gK30KPiArCj4gK3N0YXRpYyBib29sIGk5MTVfZ2VtX3JlcXVlc3RfZW5hYmxlX3NpZ25hbGlu ZyhzdHJ1Y3QgZmVuY2UgKnJlcV9mZW5jZSkKPiArewo+ICsJLyogSW50ZXJydXB0IGRyaXZlbiBm ZW5jZXMgYXJlIG5vdCBpbXBsZW1lbnRlZCB5ZXQuKi8KPiArCVdBUk4odHJ1ZSwgIlRoaXMgc2hv dWxkIG5vdCBiZSBjYWxsZWQhIik7Cj4gKwlyZXR1cm4gdHJ1ZTsKPiArfQo+ICsKPiArc3RhdGlj IGJvb2wgaTkxNV9nZW1fcmVxdWVzdF9pc19jb21wbGV0ZWQoc3RydWN0IGZlbmNlICpyZXFfZmVu Y2UpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxID0gY29udGFpbmVy X29mKHJlcV9mZW5jZSwKPiArCQkJCQkJIHR5cGVvZigqcmVxKSwgZmVuY2UpOwo+ICsJdTMyIHNl cW5vOwo+ICsKPiArCXNlcW5vID0gcmVxLT5lbmdpbmUtPmdldF9zZXFubyhyZXEtPmVuZ2luZSk7 Cj4gKwo+ICsJcmV0dXJuIGk5MTVfc2Vxbm9fcGFzc2VkKHNlcW5vLCByZXEtPnNlcW5vKTsKPiAr fQo+ICsKPiArc3RhdGljIGNvbnN0IGNoYXIgKmk5MTVfZ2VtX3JlcXVlc3RfZ2V0X2RyaXZlcl9u YW1lKHN0cnVjdCBmZW5jZSAqcmVxX2ZlbmNlKQo+ICt7Cj4gKwlyZXR1cm4gImk5MTUiOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgY29uc3QgY2hhciAqaTkxNV9nZW1fcmVxdWVzdF9nZXRfdGltZWxpbmVf bmFtZShzdHJ1Y3QgZmVuY2UgKnJlcV9mZW5jZSkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXE7Cj4gKwlzdHJ1Y3QgaTkxNV9mZW5jZV90aW1lbGluZSAqdGltZWxpbmU7 Cj4gKwo+ICsJcmVxID0gY29udGFpbmVyX29mKHJlcV9mZW5jZSwgdHlwZW9mKCpyZXEpLCBmZW5j ZSk7Cj4gKwl0aW1lbGluZSA9ICZyZXEtPmN0eC0+ZW5naW5lW3JlcS0+ZW5naW5lLT5pZF0uZmVu Y2VfdGltZWxpbmU7Cj4gKwo+ICsJcmV0dXJuIHRpbWVsaW5lLT5uYW1lOwo+ICt9Cj4gKwo+ICtz dGF0aWMgdm9pZCBpOTE1X2dlbV9yZXF1ZXN0X3RpbWVsaW5lX3ZhbHVlX3N0cihzdHJ1Y3QgZmVu Y2UgKnJlcV9mZW5jZSwKPiArCQkJCQkJY2hhciAqc3RyLCBpbnQgc2l6ZSkKPiArewo+ICsJc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7Cj4gKwo+ICsJcmVxID0gY29udGFpbmVyX29m KHJlcV9mZW5jZSwgdHlwZW9mKCpyZXEpLCBmZW5jZSk7Cj4gKwo+ICsJLyogTGFzdCBzaWduYWxs ZWQgdGltZWxpbmUgdmFsdWUgPz8/ICovCj4gKwlzbnByaW50ZihzdHIsIHNpemUsICI/IFslZF0i LyosIHRpbWVsaW5lLT52YWx1ZSovLAoKUmVmZXJlbmNlIHRvIHRpbWVsaW5lLT52YWx1ZSBhIGxl ZnRvdmVyIGZyb20gdGhlIHBhc3Q/CgpJcyB0aGUgc3RyaW5nIGZvcm1hdCBkZWZpbmVkIGJ5IHRo ZSBBUEk/IEFza2luZyBiZWNhdXNlICI/IFslZF0iIGxvb2tzIAppbnRyaWd1aW5nLgoKPiArCQkg cmVxLT5lbmdpbmUtPmdldF9zZXFubyhyZXEtPmVuZ2luZSkpOwo+ICt9Cj4gKwo+ICtzdGF0aWMg dm9pZCBpOTE1X2dlbV9yZXF1ZXN0X2ZlbmNlX3ZhbHVlX3N0cihzdHJ1Y3QgZmVuY2UgKnJlcV9m ZW5jZSwKPiArCQkJCQkgICAgIGNoYXIgKnN0ciwgaW50IHNpemUpCj4gK3sKPiArCXN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwo+ICsKPiArCXJlcSA9IGNvbnRhaW5lcl9vZihyZXFf ZmVuY2UsIHR5cGVvZigqcmVxKSwgZmVuY2UpOwo+ICsKPiArCXNucHJpbnRmKHN0ciwgc2l6ZSwg IiVkIFslZF0iLCByZXEtPmZlbmNlLnNlcW5vLCByZXEtPnNlcW5vKTsKCklzIGl0IE9LIHRvIHB1 dCByZXEtPnNlcW5vIGluIHRoaXMgb25lPyBPUiBpdCBpcyBqdXN0IGZvciBkZWJ1ZyBhbnl3YXkg CnNvIGl0IGhlbHBzIHVzIGFuZCBmZW5jZSBmcmFtZXdvcmsgZG9lcyBub3QgY2FyZT8KCj4gK30K PiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmVuY2Vfb3BzIGk5MTVfZ2VtX3JlcXVlc3RfZm9w cyA9IHsKPiArCS5lbmFibGVfc2lnbmFsaW5nCT0gaTkxNV9nZW1fcmVxdWVzdF9lbmFibGVfc2ln bmFsaW5nLAo+ICsJLnNpZ25hbGVkCQk9IGk5MTVfZ2VtX3JlcXVlc3RfaXNfY29tcGxldGVkLAo+ ICsJLndhaXQJCQk9IGZlbmNlX2RlZmF1bHRfd2FpdCwKPiArCS5yZWxlYXNlCQk9IGk5MTVfZ2Vt X3JlcXVlc3RfZnJlZSwKPiArCS5nZXRfZHJpdmVyX25hbWUJPSBpOTE1X2dlbV9yZXF1ZXN0X2dl dF9kcml2ZXJfbmFtZSwKPiArCS5nZXRfdGltZWxpbmVfbmFtZQk9IGk5MTVfZ2VtX3JlcXVlc3Rf Z2V0X3RpbWVsaW5lX25hbWUsCj4gKwkuZmVuY2VfdmFsdWVfc3RyCT0gaTkxNV9nZW1fcmVxdWVz dF9mZW5jZV92YWx1ZV9zdHIsCj4gKwkudGltZWxpbmVfdmFsdWVfc3RyCT0gaTkxNV9nZW1fcmVx dWVzdF90aW1lbGluZV92YWx1ZV9zdHIsCj4gK307Cj4gKwo+ICAgaW50IGk5MTVfY3JlYXRlX2Zl bmNlX3RpbWVsaW5lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJCQkgICAgICAgc3RydWN0 IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAgIAkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCj4gQEAgLTI3NzAsNyArMjg1Miw3IEBAIGludCBpOTE1X2NyZWF0ZV9mZW5j ZV90aW1lbGluZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCXJldHVybiAwOwo+ICAgfQo+ Cj4gLXVuc2lnbmVkIGk5MTVfZmVuY2VfdGltZWxpbmVfZ2V0X25leHRfc2Vxbm8oc3RydWN0IGk5 MTVfZmVuY2VfdGltZWxpbmUgKnRpbWVsaW5lKQo+ICtzdGF0aWMgdW5zaWduZWQgaTkxNV9mZW5j ZV90aW1lbGluZV9nZXRfbmV4dF9zZXFubyhzdHJ1Y3QgaTkxNV9mZW5jZV90aW1lbGluZSAqdGlt ZWxpbmUpCj4gICB7Cj4gICAJdW5zaWduZWQgc2Vxbm87Cj4KPiBAQCAtMjgxNCwxMyArMjg5Niwx NiBAQCBfX2k5MTVfZ2VtX3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLAo+ICAgCWlmIChyZXQpCj4gICAJCWdvdG8gZXJyOwo+Cj4gLQlrcmVmX2luaXQoJnJlcS0+ cmVmKTsKPiAgIAlyZXEtPmk5MTUgPSBkZXZfcHJpdjsKPiAgIAlyZXEtPmVuZ2luZSA9IGVuZ2lu ZTsKPiAgIAlyZXEtPnJlc2V0X2NvdW50ZXIgPSByZXNldF9jb3VudGVyOwo+ICAgCXJlcS0+Y3R4 ICA9IGN0eDsKPiAgIAlpOTE1X2dlbV9jb250ZXh0X3JlZmVyZW5jZShyZXEtPmN0eCk7Cj4KPiAr CWZlbmNlX2luaXQoJnJlcS0+ZmVuY2UsICZpOTE1X2dlbV9yZXF1ZXN0X2ZvcHMsICZlbmdpbmUt PmZlbmNlX2xvY2ssCj4gKwkJICAgY3R4LT5lbmdpbmVbZW5naW5lLT5pZF0uZmVuY2VfdGltZWxp bmUuZmVuY2VfY29udGV4dCwKPiArCQkgICBpOTE1X2ZlbmNlX3RpbWVsaW5lX2dldF9uZXh0X3Nl cW5vKCZjdHgtPmVuZ2luZVtlbmdpbmUtPmlkXS5mZW5jZV90aW1lbGluZSkpOwo+ICsKPiAgIAkv Kgo+ICAgCSAqIFJlc2VydmUgc3BhY2UgaW4gdGhlIHJpbmcgYnVmZmVyIGZvciBhbGwgdGhlIGNv bW1hbmRzIHJlcXVpcmVkIHRvCj4gICAJICogZXZlbnR1YWxseSBlbWl0IHRoaXMgcmVxdWVzdC4g VGhpcyBpcyB0byBndWFyYW50ZWUgdGhhdCB0aGUKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ IGluZGV4IDE0YmNmYjcuLmYxMjZiY2IgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ IEBAIC0yMDMwLDYgKzIwMzAsNyBAQCBsb2dpY2FsX3Jpbmdfc2V0dXAoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQpCj4gICAJSU5JVF9MSVNUX0hFQUQoJmVu Z2luZS0+YnVmZmVycyk7Cj4gICAJSU5JVF9MSVNUX0hFQUQoJmVuZ2luZS0+ZXhlY2xpc3RfcXVl dWUpOwo+ICAgCXNwaW5fbG9ja19pbml0KCZlbmdpbmUtPmV4ZWNsaXN0X2xvY2spOwo+ICsJc3Bp bl9sb2NrX2luaXQoJmVuZ2luZS0+ZmVuY2VfbG9jayk7Cj4KPiAgIAl0YXNrbGV0X2luaXQoJmVu Z2luZS0+aXJxX3Rhc2tsZXQsCj4gICAJCSAgICAgaW50ZWxfbHJjX2lycV9oYW5kbGVyLCAodW5z aWduZWQgbG9uZyllbmdpbmUpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmMKPiBpbmRleCA4ZDM1YTM5Li5mYmQzZjEyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuYwo+IEBAIC0yMjU0LDYgKzIyNTQsNyBAQCBzdGF0aWMgaW50IGludGVs X2luaXRfcmluZ19idWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAlJTklUX0xJU1Rf SEVBRCgmZW5naW5lLT5yZXF1ZXN0X2xpc3QpOwo+ICAgCUlOSVRfTElTVF9IRUFEKCZlbmdpbmUt PmV4ZWNsaXN0X3F1ZXVlKTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmZW5naW5lLT5idWZmZXJzKTsK PiArCXNwaW5fbG9ja19pbml0KCZlbmdpbmUtPmZlbmNlX2xvY2spOwo+ICAgCWk5MTVfZ2VtX2Jh dGNoX3Bvb2xfaW5pdChkZXYsICZlbmdpbmUtPmJhdGNoX3Bvb2wpOwo+ICAgCW1lbXNldChlbmdp bmUtPnNlbWFwaG9yZS5zeW5jX3NlcW5vLCAwLAo+ICAgCSAgICAgICBzaXplb2YoZW5naW5lLT5z ZW1hcGhvcmUuc3luY19zZXFubykpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmgKPiBpbmRleCBiMzNjODc2Li4zZjM5ZGFmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuaAo+IEBAIC0zNDUsNiArMzQ1LDggQEAgc3RydWN0IGludGVsX2Vu Z2luZV9jcyB7Cj4gICAJICogdG8gZW5jb2RlIHRoZSBjb21tYW5kIGxlbmd0aCBpbiB0aGUgaGVh ZGVyKS4KPiAgIAkgKi8KPiAgIAl1MzIgKCpnZXRfY21kX2xlbmd0aF9tYXNrKSh1MzIgY21kX2hl YWRlcik7Cj4gKwo+ICsJc3BpbmxvY2tfdCBmZW5jZV9sb2NrOwoKV2h5IGlzIHRoaXMgbG9jayBw ZXItZW5naW5lLCBhbmQgbm90IGZvciBleGFtcGxlIHBlciB0aW1lbGluZT8gQXJlbid0IApmZW5j ZWVzIGxpdmluZyBjb21wbGV0ZWx5IGlzb2xhdGVkIGluIHRoZWlyIHBlci1jb250ZXh0LXBlci1l bmdpbmUgCmRvbWFpbnM/IFNvIHByZXN1bWFibHkgdGhlcmUgaXMgc29tZXRoaW5nIHNvbWV3aGVy ZSB3aGljaCBpcyBzaGFyZWQgCm91dHNpZGUgdGhhdCBkb21haW4gdG8gbmVlZCBhIGxvY2sgYXQg dGhlIGVuZ2luZSBsZXZlbD8KCj4gICB9Owo+Cj4gICBzdGF0aWMgaW5saW5lIGJvb2wKPgoKUmVn YXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK