From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Harrison Subject: Re: [RFC 3/9] drm/i915: Convert requests to use struct fence Date: Tue, 28 Jul 2015 11:18:14 +0100 Message-ID: <55B756E6.9000404@Intel.com> References: <1437143483-6234-1-git-send-email-John.C.Harrison@Intel.com> <1437143483-6234-4-git-send-email-John.C.Harrison@Intel.com> <55AFAC87.8090602@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 7AE416E01A for ; Tue, 28 Jul 2015 03:18:16 -0700 (PDT) In-Reply-To: <55AFAC87.8090602@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin , Intel-GFX@Lists.FreeDesktop.Org List-Id: intel-gfx@lists.freedesktop.org T24gMjIvMDcvMjAxNSAxNTo0NSwgVHZydGtvIFVyc3VsaW4gd3JvdGU6Cj4KPiBPbiAwNy8xNy8y MDE1IDAzOjMxIFBNLCBKb2huLkMuSGFycmlzb25ASW50ZWwuY29tIHdyb3RlOgo+PiBGcm9tOiBK b2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgo+Pgo+PiBUaGVyZSBpcyBh IGNvbnN0cnVjdCBpbiB0aGUgbGludXgga2VybmVsIGNhbGxlZCAnc3RydWN0IGZlbmNlJyB0aGF0 IAo+PiBpcyBpbnRlbmRlZAo+PiB0byBrZWVwIHRyYWNrIG9mIHdvcmsgdGhhdCBpcyBleGVjdXRl ZCBvbiBoYXJkd2FyZS4gSS5lLiBpdCBzb2x2ZXMgCj4+IHRoZSBiYXNpYwo+PiBwcm9ibGVtIHRo YXQgdGhlIGRyaXZlcnMgJ3N0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCcgaXMgdHJ5aW5nIHRv IAo+PiBhZGRyZXNzLiBUaGUKPj4gcmVxdWVzdCBzdHJ1Y3R1cmUgZG9lcyBxdWl0ZSBhIGxvdCBt b3JlIHRoYW4gc2ltcGx5IHRyYWNrIHRoZSAKPj4gZXhlY3V0aW9uIHByb2dyZXNzCj4+IHNvIGlz IHZlcnkgZGVmaW5pdGVseSBzdGlsbCByZXF1aXJlZC4gSG93ZXZlciwgdGhlIGJhc2ljIGNvbXBs ZXRpb24gCj4+IHN0YXR1cyBzaWRlCj4+IGNvdWxkIGJlIHVwZGF0ZWQgdG8gdXNlIHRoZSByZWFk eSBtYWRlIGZlbmNlIGltcGxlbWVudGF0aW9uIGFuZCBnYWluIAo+PiBhbGwgdGhlCj4+IGFkdmFu dGFnZXMgdGhhdCBwcm92aWRlcy4KPj4KPj4gVGhpcyBwYXRjaCBtYWtlcyB0aGUgZmlyc3Qgc3Rl cCBvZiBpbnRlZ3JhdGluZyBhIHN0cnVjdCBmZW5jZSBpbnRvIAo+PiB0aGUgcmVxdWVzdC4KPj4g SXQgcmVwbGFjZXMgdGhlIGV4cGxpY2l0IHJlZmVyZW5jZSBjb3VudCB3aXRoIHRoYXQgb2YgdGhl IGZlbmNlLiBJdCBhbHNvCj4+IHJlcGxhY2VzIHRoZSAnaXMgY29tcGxldGVkJyB0ZXN0IHdpdGgg dGhlIGZlbmNlJ3MgZXF1aXZhbGVudC4gCj4+IEN1cnJlbnRseSwgdGhhdAo+PiBzaW1wbHkgY2hh aW5zIG9uIHRvIHRoZSBvcmlnaW5hbCByZXF1ZXN0IGltcGxlbWVudGF0aW9uLiBBIGZ1dHVyZSAK Pj4gcGF0Y2ggd2lsbAo+PiBpbXByb3ZlIHRoaXMuCj4+Cj4+IEZvcjogVklaLTUxOTAKPj4gU2ln bmVkLW9mZi1ieTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVsLmNvbT4KPj4g LS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgIHwgNDUgKysr KysrKysrKysrKy0tLS0tLS0tLS0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMgICAgICAgICB8IDU4IAo+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KPj4g ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgfCAgMSArCj4+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIHwgIDEgKwo+PiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCB8ICAzICsrCj4+ICAgNSBmaWxlcyBjaGFu Z2VkLCA4MCBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggCj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaAo+PiBpbmRleCBjZjY3NjFjLi43OWQzNDZjIDEwMDY0NAo+PiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKPj4gQEAgLTUwLDYgKzUwLDcgQEAKPj4gICAjaW5jbHVkZSA8bGludXgv aW50ZWwtaW9tbXUuaD4KPj4gICAjaW5jbHVkZSA8bGludXgva3JlZi5oPgo+PiAgICNpbmNsdWRl IDxsaW51eC9wbV9xb3MuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9mZW5jZS5oPgo+Pgo+PiAgIC8q IEdlbmVyYWwgY3VzdG9taXphdGlvbjoKPj4gICAgKi8KPj4gQEAgLTIxNTAsNyArMjE1MSwxNyBA QCB2b2lkIGk5MTVfZ2VtX3RyYWNrX2ZiKHN0cnVjdCAKPj4gZHJtX2k5MTVfZ2VtX29iamVjdCAq b2xkLAo+PiAgICAqIGluaXRpYWwgcmVmZXJlbmNlIHRha2VuIHVzaW5nIGtyZWZfaW5pdAo+PiAg ICAqLwo+PiAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCB7Cj4+IC0gICAgc3RydWN0IGty ZWYgcmVmOwo+PiArICAgIC8qKgo+PiArICAgICAqIFVuZGVybHlpbmcgb2JqZWN0IGZvciBpbXBs ZW1lbnRpbmcgdGhlIHNpZ25hbC93YWl0IHN0dWZmLgo+PiArICAgICAqIE5COiBOZXZlciBjYWxs IGZlbmNlX2xhdGVyKCkgb3IgcmV0dXJuIHRoaXMgZmVuY2Ugb2JqZWN0IHRvIHVzZXIKPj4gKyAg ICAgKiBsYW5kISBEdWUgdG8gbGF6eSBhbGxvY2F0aW9uLCBzY2hlZHVsZXIgcmUtb3JkZXJpbmcs IAo+PiBwcmUtZW1wdGlvbiwKPj4gKyAgICAgKiBldGMuLCB0aGVyZSBpcyBubyBndWFyYW50ZWUg YXQgYWxsIGFib3V0IHRoZSB2YWxpZGl0eSBvcgo+PiArICAgICAqIHNlcXVlbnRpYWxpdHkgb2Yg dGhlIGZlbmNlJ3Mgc2Vxbm8hIEl0IGlzIGFsc28gdW5zYWZlIHRvIGxldAo+PiArICAgICAqIGFu eXRoaW5nIG91dHNpZGUgb2YgdGhlIGk5MTUgZHJpdmVyIGdldCBob2xkIG9mIHRoZSBmZW5jZSBv YmplY3QKPj4gKyAgICAgKiBhcyB0aGUgY2xlYW4gdXAgd2hlbiBkZWNyZW1lbnRpbmcgdGhlIHJl ZmVyZW5jZSBjb3VudCByZXF1aXJlcwo+PiArICAgICAqIGhvbGRpbmcgdGhlIGRyaXZlciBtdXRl eCBsb2NrLgo+PiArICAgICAqLwo+PiArICAgIHN0cnVjdCBmZW5jZSBmZW5jZTsKPj4KPj4gICAg ICAgLyoqIE9uIFdoaWNoIHJpbmcgdGhpcyByZXF1ZXN0IHdhcyBnZW5lcmF0ZWQgKi8KPj4gICAg ICAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTU7Cj4+IEBAIC0yMjI3LDcgKzIyMzgsMTMg QEAgaW50IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2Moc3RydWN0IAo+PiBpbnRlbF9lbmdpbmVfY3Mg KnJpbmcsCj4+ICAgICAgICAgICAgICAgICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwKPj4g ICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKipyZXFfb3V0KTsK Pj4gICB2b2lkIGk5MTVfZ2VtX3JlcXVlc3RfY2FuY2VsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxKTsKPj4gLXZvaWQgaTkxNV9nZW1fcmVxdWVzdF9mcmVlKHN0cnVjdCBrcmVmICpy ZXFfcmVmKTsKPj4gKwo+PiArc3RhdGljIGlubGluZSBib29sIGk5MTVfZ2VtX3JlcXVlc3RfY29t cGxldGVkKHN0cnVjdCAKPj4gZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgYm9vbCBsYXp5X2NvaGVyZW5jeSkKPj4gK3sKPj4gKyAgICByZXR1 cm4gZmVuY2VfaXNfc2lnbmFsZWQoJnJlcS0+ZmVuY2UpOwo+PiArfQo+PiArCj4+ICAgaW50IGk5 MTVfZ2VtX3JlcXVlc3RfYWRkX3RvX2NsaWVudChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSwKPj4gICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlKTsKPj4K Pj4gQEAgLTIyNDcsNyArMjI2NCw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICoKPj4gICBpOTE1X2dlbV9yZXF1ZXN0X3JlZmVyZW5jZShzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPj4gICB7Cj4+ICAgICAgIGlmIChyZXEpCj4+IC0gICAgICAg IGtyZWZfZ2V0KCZyZXEtPnJlZik7Cj4+ICsgICAgICAgIGZlbmNlX2dldCgmcmVxLT5mZW5jZSk7 Cj4+ICAgICAgIHJldHVybiByZXE7Cj4+ICAgfQo+Pgo+PiBAQCAtMjI1NSw3ICsyMjcyLDcgQEAg c3RhdGljIGlubGluZSB2b2lkCj4+ICAgaTkxNV9nZW1fcmVxdWVzdF91bnJlZmVyZW5jZShzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPj4gICB7Cj4+IFdBUk5fT04oIW11dGV4X2lz X2xvY2tlZCgmcmVxLT5yaW5nLT5kZXYtPnN0cnVjdF9tdXRleCkpOwo+PiAtICAgIGtyZWZfcHV0 KCZyZXEtPnJlZiwgaTkxNV9nZW1fcmVxdWVzdF9mcmVlKTsKPj4gKyAgICBmZW5jZV9wdXQoJnJl cS0+ZmVuY2UpOwo+PiAgIH0KPj4KPj4gICBzdGF0aWMgaW5saW5lIHZvaWQKPj4gQEAgLTIyNjcs NyArMjI4NCw3IEBAIGk5MTVfZ2VtX3JlcXVlc3RfdW5yZWZlcmVuY2VfX3VubG9ja2VkKHN0cnVj dCAKPj4gZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPj4gICAgICAgICAgIHJldHVybjsKPj4K Pj4gICAgICAgZGV2ID0gcmVxLT5yaW5nLT5kZXY7Cj4+IC0gICAgaWYgKGtyZWZfcHV0X211dGV4 KCZyZXEtPnJlZiwgaTkxNV9nZW1fcmVxdWVzdF9mcmVlLCAKPj4gJmRldi0+c3RydWN0X211dGV4 KSkKPj4gKyAgICBpZiAoa3JlZl9wdXRfbXV0ZXgoJnJlcS0+ZmVuY2UucmVmY291bnQsIGZlbmNl X3JlbGVhc2UsIAo+PiAmZGV2LT5zdHJ1Y3RfbXV0ZXgpKQo+PiAgICAgICAgICAgbXV0ZXhfdW5s b2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4+ICAgfQo+Pgo+PiBAQCAtMjI4NCwxMiArMjMwMSw2 IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCAKPj4gaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICoqcGRzdCwKPj4gICB9Cj4+Cj4+ICAgLyoKPj4gLSAqIFhY WDogaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQgc2hvdWxkIGJlIGhlcmUgYnV0IGN1cnJlbnRs eSAKPj4gbmVlZHMgdGhlCj4+IC0gKiBkZWZpbml0aW9uIG9mIGk5MTVfc2Vxbm9fcGFzc2VkKCkg d2hpY2ggaXMgYmVsb3cuIEl0IHdpbGwgYmUgCj4+IG1vdmVkIGluCj4+IC0gKiBhIGxhdGVyIHBh dGNoIHdoZW4gdGhlIGNhbGwgdG8gaTkxNV9zZXFub19wYXNzZWQoKSBpcyBvYnNvbGV0ZWQuLi4K Pj4gLSAqLwo+PiAtCj4+IC0vKgo+PiAgICAqIEEgY29tbWFuZCB0aGF0IHJlcXVpcmVzIHNwZWNp YWwgaGFuZGxpbmcgYnkgdGhlIGNvbW1hbmQgcGFyc2VyLgo+PiAgICAqLwo+PiAgIHN0cnVjdCBk cm1faTkxNV9jbWRfZGVzY3JpcHRvciB7Cj4+IEBAIC0yODUxLDE4ICsyODYyLDYgQEAgaTkxNV9z ZXFub19wYXNzZWQodWludDMyX3Qgc2VxMSwgdWludDMyX3Qgc2VxMikKPj4gICAgICAgcmV0dXJu IChpbnQzMl90KShzZXExIC0gc2VxMikgPj0gMDsKPj4gICB9Cj4+Cj4+IC1zdGF0aWMgaW5saW5l IGJvb2wgaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQoc3RydWN0IAo+PiBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxLAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGxhenlfY29o ZXJlbmN5KQo+PiAtewo+PiAtICAgIHUzMiBzZXFubzsKPj4gLQo+PiAtICAgIEJVR19PTihyZXEg PT0gTlVMTCk7Cj4+IC0KPj4gLSAgICBzZXFubyA9IHJlcS0+cmluZy0+Z2V0X3NlcW5vKHJlcS0+ cmluZywgbGF6eV9jb2hlcmVuY3kpOwo+PiAtCj4+IC0gICAgcmV0dXJuIGk5MTVfc2Vxbm9fcGFz c2VkKHNlcW5vLCByZXEtPnNlcW5vKTsKPj4gLX0KPj4gLQo+PiAgIGludCBfX211c3RfY2hlY2sg aTkxNV9nZW1fZ2V0X3NlcW5vKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiAKPj4gKnNlcW5v KTsKPj4gICBpbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2VtX3NldF9zZXFubyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB1MzIgCj4+IHNlcW5vKTsKPj4gICBpbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2Vt X29iamVjdF9nZXRfZmVuY2Uoc3RydWN0IAo+PiBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOwo+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAKPj4gYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4+IGluZGV4IGQ5ZjI3MDEuLjg4OGJiNzIgMTAw NjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+PiBAQCAtMjYxNiwxMiArMjYxNiwxNCBAQCBz dGF0aWMgdm9pZCBpOTE1X3NldF9yZXNldF9zdGF0dXMoc3RydWN0IAo+PiBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPj4gICAgICAgfQo+PiAgIH0KPj4KPj4gLXZvaWQgaTkxNV9nZW1fcmVx dWVzdF9mcmVlKHN0cnVjdCBrcmVmICpyZXFfcmVmKQo+PiArc3RhdGljIHZvaWQgaTkxNV9nZW1f cmVxdWVzdF9mcmVlKHN0cnVjdCBmZW5jZSAqcmVxX2ZlbmNlKQo+PiAgIHsKPj4gLSAgICBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSA9IGNvbnRhaW5lcl9vZihyZXFfcmVmLAo+PiAt ICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZigqcmVxKSwgcmVmKTsKPj4gKyAgICBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSA9IGNvbnRhaW5lcl9vZihyZXFfZmVuY2UsCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mKCpyZXEpLCBmZW5jZSk7Cj4+ICAgICAg IHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHggPSByZXEtPmN0eDsKPj4KPj4gKyBCVUdfT04oIW11 dGV4X2lzX2xvY2tlZCgmcmVxLT5yaW5nLT5kZXYtPnN0cnVjdF9tdXRleCkpOwo+PiArCj4+ICAg ICAgIGlmIChyZXEtPmZpbGVfcHJpdikKPj4gICAgICAgICAgIGk5MTVfZ2VtX3JlcXVlc3RfcmVt b3ZlX2Zyb21fY2xpZW50KHJlcSk7Cj4+Cj4+IEBAIC0yNjM3LDYgKzI2MzksNDcgQEAgdm9pZCBp OTE1X2dlbV9yZXF1ZXN0X2ZyZWUoc3RydWN0IGtyZWYgKnJlcV9yZWYpCj4+ICAgICAgIGttZW1f Y2FjaGVfZnJlZShyZXEtPmk5MTUtPnJlcXVlc3RzLCByZXEpOwo+PiAgIH0KPj4KPj4gK3N0YXRp YyBjb25zdCBjaGFyICppOTE1X2dlbV9yZXF1ZXN0X2dldF9kcml2ZXJfbmFtZShzdHJ1Y3QgZmVu Y2UgCj4+ICpyZXFfZmVuY2UpCj4+ICt7Cj4+ICsgICAgcmV0dXJuICJpOTE1X3JlcXVlc3QiOwo+ PiArfQo+PiArCj4+ICtzdGF0aWMgY29uc3QgY2hhciAqaTkxNV9nZW1fcmVxdWVzdF9nZXRfdGlt ZWxpbmVfbmFtZShzdHJ1Y3QgZmVuY2UgCj4+ICpyZXFfZmVuY2UpCj4+ICt7Cj4+ICsgICAgc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEgPSBjb250YWluZXJfb2YocmVxX2ZlbmNlLAo+ PiArICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZigqcmVxKSwgZmVuY2UpOwo+PiArICAg IHJldHVybiByZXEtPnJpbmctPm5hbWU7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBib29sIGk5MTVf Z2VtX3JlcXVlc3RfZW5hYmxlX3NpZ25hbGluZyhzdHJ1Y3QgZmVuY2UgKnJlcV9mZW5jZSkKPj4g K3sKPj4gKyAgICAvKiBJbnRlcnJ1cHQgZHJpdmVuIGZlbmNlcyBhcmUgbm90IGltcGxlbWVudGVk IHlldC4qLwo+PiArICAgIFdBUk4odHJ1ZSwgIlRoaXMgc2hvdWxkIG5vdCBiZSBjYWxsZWQhIik7 Cj4+ICsgICAgcmV0dXJuIHRydWU7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBib29sIGk5MTVfZ2Vt X3JlcXVlc3RfaXNfY29tcGxldGVkKHN0cnVjdCBmZW5jZSAqcmVxX2ZlbmNlKQo+PiArewo+PiAr ICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxID0gY29udGFpbmVyX29mKHJlcV9m ZW5jZSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YoKnJlcSksIGZlbmNlKTsK Pj4gKyAgICB1MzIgc2Vxbm87Cj4+ICsKPj4gKyAgICBCVUdfT04ocmVxID09IE5VTEwpOwo+PiAr Cj4+ICsgICAgc2Vxbm8gPSByZXEtPnJpbmctPmdldF9zZXFubyhyZXEtPnJpbmcsIGZhbHNlLyps YXp5X2NvaGVyZW5jeSovKTsKPj4gKwo+PiArICAgIHJldHVybiBpOTE1X3NlcW5vX3Bhc3NlZChz ZXFubywgcmVxLT5zZXFubyk7Cj4+ICt9Cj4KPiBIb3cgZG9lcyB0aGlzIHJlYWxseSB3b3JrPyBJ IGRvbid0IHNlZSBhbnkgZmVuY2UgY29kZSBjYWxsaW5nIHRoaXMsIAo+IHBsdXMsIHRoaXMgcGF0 Y2ggaXMgbm90IGRvaW5nIGZlbmNlX3NpZ25hbCBhbnl3aGVyZS4gU28gaXMgdGhlIHdob2xlIAo+ IHRoaW5nIGZ1bmN0aW9uYWwgYXQgdGhpcyBwb2ludD8KCkRvIHlvdSBtZWFuIGZlbmNlIGNvZGUg Y2FsbGluZyBpOTE1X2dlbV9yZXF1ZXN0X2lzX2NvbXBsZXRlZD8gSXQgaXMgYSAKY2FsbGJhY2sg aW4gdGhlIGZlbmNlIG9wcyBzdHJ1Y3R1cmUgYXNzaWduZWQgYSBmZXcgbGluZXMgbG93ZXIgaW4g dGhlIHBhdGNoOgogPiArIC5zaWduYWxlZCA9IGk5MTVfZ2VtX3JlcXVlc3RfaXNfY29tcGxldGVk LAoKV2hlbmV2ZXIgJ2ZlbmNlX2lzX3NpZ25hbGVkKCZmZW5jZSknIGlzIGNhbGxlZCBpdCBiYXNp Y2FsbHkgY2hhaW5zIG9uIHRvIAp0aGUgLnNpZ25hbGxlZCBjYWxsYmFjayBpbnNpZGUgdGhlIGZl bmNlIGltcGxlbWVudGF0aW9uLiBXaGVuIHRoZSAKaW50ZXJydXB0IHZlcnNpb24gY29tZXMgaW4g d2l0aCB0aGUgbGF0ZXIgcGF0Y2gsIHRoaXMgaXMgcmVtb3ZlZCBhcyB0aGUgCmZlbmNlIGlzIHRo ZW4gdHJhY2tpbmcgaXRzIGNvbXBsZXRpb24gc3RhdGUgYW5kIGRvZXMgbm90IG5lZWQgdG8gZG8g dGhlIApoYXJkd2FyZSBxdWVyeSBldmVyeSB0aW1lLiBIb3dldmVyLCBhdCB0aGlzIHBvaW50IGl0 IHN0aWxsIGRvZXMgbmVlZCB0byAKY2hhaW4gb24gdG8gcmVhZGluZyB0aGUgSFdTLiBBbmQgeWVz LCBpdCBpcyBjZXJ0YWlubHkgc3VwcG9zZWQgdG8gYmUgCmZ1bGx5IGZ1bmN0aW9uYWwgYXQgdGhp cyBwb2ludCEgSXQgY2VydGFpbmx5IHdhcyB3aGVuIEkgd2FzIHRlc3RpbmcgaXQuCgoKPgo+IFJl Z2FyZHMsCj4KPiBUdnJ0a28KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==