From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH] drm/i915: Use SSE4.1 movntdqa to accelerate reads from WC memory Date: Mon, 18 Jul 2016 14:46:08 +0100 Message-ID: <578CDDA0.3010108@linux.intel.com> References: <20160718100111.GD21839@nuc-i3427.alporthouse.com> <1468836434-29107-1-git-send-email-chris@chris-wilson.co.uk> <578CBA54.40107@linux.intel.com> <20160718113501.GH21839@nuc-i3427.alporthouse.com> <578CC415.202@intel.com> <578CD214.8070703@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 ECF9B6E425 for ; Mon, 18 Jul 2016 13:46:10 +0000 (UTC) In-Reply-To: <578CD214.8070703@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: Dave Gordon , Chris Wilson , intel-gfx@lists.freedesktop.org, Akash Goel , Mika Kuoppala List-Id: intel-gfx@lists.freedesktop.org Ck9uIDE4LzA3LzE2IDEzOjU2LCBUdnJ0a28gVXJzdWxpbiB3cm90ZToKPiAKPiBPbiAxOC8wNy8x NiAxMjo1NywgRGF2ZSBHb3Jkb24gd3JvdGU6Cj4+IE9uIDE4LzA3LzE2IDEyOjM1LCBDaHJpcyBX aWxzb24gd3JvdGU6Cj4+PiBPbiBNb24sIEp1bCAxOCwgMjAxNiBhdCAxMjoxNTozMlBNICswMTAw LCBUdnJ0a28gVXJzdWxpbiB3cm90ZToKPj4+PiBJIGFtIG5vdCBzdXJlIGFib3V0IHRoaXMsIGJ1 dCBsb29raW5nIGF0IHRoZSByYWlkNiBmb3IgZXhhbXBsZSwgaXQKPj4+PiBoYXMgYSBsb3QgbW9y ZSBhbm5vdGF0aW9ucyBpbiBjYXNlcyBsaWtlIHRoaXMuCj4+Pj4KPj4+PiBJdCBzZWVtcyB0byBi ZSB0ZWxsaW5nIHRoZSBjb21waWxlciB3aGljaCBtZW1vcnkgcmFuZ2VzIGRvZXMgZWFjaAo+Pj4+ IGluc3RydWN0aW9uIGFjY2VzcywgYW5kIGFsc28gdXNlcyAiYXNtIHZvbGF0aWxlIiAtIHdoZXRo ZXIgb3Igbm90Cj4+Pj4gdGhhdCBpcyByZWFsbHkgbmVlZGVkIEkgZG9uJ3Qga25vdy4KPj4+Pgo+ Pj4+IEZvciBleGFtcGxlOgo+Pj4+ICAgICAgICAgICAgICAgICAgIGFzbSB2b2xhdGlsZSgibW92 ZHFhICUwLCUleG1tNCIgOjogIm0iIChkcHRyW3owXVtkXSkpOwo+Pj4+Cj4+Pj4gQW5kOgo+Pj4+ ICAgICAgICAgICAgICAgICAgIGFzbSB2b2xhdGlsZSgibW92ZHFhICUleG1tNCwlMCIgOiAiPW0i IChxW2RdKSk7Cj4+Pj4KPj4+PiBFYWNoIG9uZSBpcyB0ZWxsaW5nIHRoZSBjb21waWxlciB0aGUg aW5zdHJ1Y3Rpb24gaXMgZWl0aGVyIHJlYWRpbmcKPj4+PiBvciB3cml0aW5nIHJlc3BlY3RpdmVs eSBmcm9tIGEgY2VydGFpbiBtZW1vcnkgYWRkcmVzcy4KPj4+Pgo+Pj4+IFlvdSBkb24ndCBoYXZl IGFueSBvZiB0aGF0LCBhbmQgZG9uJ3QgZXZlbiBzcGVjaWZ5IG5vdGhpbmcgYXMgYW4KPj4+PiBv dXRwdXQgcGFyYW1ldGVyIHNvIEkgYW0gbm90IHN1cmUgaWYgeW91ciBjb2RlIGlzIHNhZmUuCj4+ Pgo+Pj4gVGhlIGFzbSBpcyBjb3JyZWN0LiBXZSBkbyBub3QgbW9kaWZ5IGVpdGhlciBvZiB0aGUg dHdvIHBvaW50ZXJzIHdoaWNoIHdlCj4+PiBwYXNzIGluIHZpYSByZWdpc3RlciBpbnB1dHMsIGJ1 dCB0aGUgbWVtb3J5IGJlaGluZCB0aGVtIC0gaGVuY2UgdGhlCj4+PiBtZW1vcnkKPj4+IGNsb2Ji ZXIuCj4+Cj4+IFRoaXMgaXMgYSBjaG9pY2Ugb2YgaG93IG11Y2ggd2UgbGV0IHRoZSBjb21waWxl ciBkZWNpZGUgYWJvdXQKPj4gYWRkcmVzc2luZywgYW5kIGhvdyBtdWNoIHdlIHRlbGwgaXQgYWJv dXQgd2hhdCB0aGUgYXNtIGNvZGUgcmVhbGx5IGRvZXMuCj4+IFRoZSBleGFtcGxlcyBhYm92ZSBn ZXQgdGhlIGNvbXBpbGVyIHRvIGdlbmVyYXRlICphbnkqIHN1aXRhYmxlCj4+IGFkZHJlc3Npbmcg bW9kZSBmb3IgZWFjaCBzcGVjaWZpYyBsb2NhdGlvbiBpbnZvbHZlZCBpbiB0aGUgdHJhbnNmZXJz LCBzbwo+PiB0aGUgY29tcGlsZXIga25vd3MgYSBsb3QgYWJvdXQgd2hhdCdzIGhhcHBlbmluZyBh bmQgY2FuIHRyYWNrIHdoZXJlIGVhY2gKPj4gZGF0dW0gY29tZXMgZnJvbSBhbmQgZ29lcyB0by4K Pj4KPj4gT1RPSCBDaHJpcycgY29kZQo+Pgo+PiArICAgICAgICBhc20oIm1vdm50ZHFhICAgKCUw KSwgJSV4bW0wXG4iCj4+ICsgICAgICAgICAgICAibW92bnRkcWEgMTYoJTApLCAlJXhtbTFcbiIK Pj4gKyAgICAgICAgICAgICJtb3ZudGRxYSAzMiglMCksICUleG1tMlxuIgo+PiArICAgICAgICAg ICAgIm1vdm50ZHFhIDQ4KCUwKSwgJSV4bW0zXG4iCj4+ICsgICAgICAgICAgICAibW92YXBzICUl eG1tMCwgICAoJTEpXG4iCj4+ICsgICAgICAgICAgICAibW92YXBzICUleG1tMSwgMTYoJTEpXG4i Cj4+ICsgICAgICAgICAgICAibW92YXBzICUleG1tMiwgMzIoJTEpXG4iCj4+ICsgICAgICAgICAg ICAibW92YXBzICUleG1tMywgNDgoJTEpXG4iCj4+ICsgICAgICAgICAgICA6OiAiciIgKHNyYyks ICJyIiAoZHN0KSA6ICJtZW1vcnkiKTsKPj4KPj4gLSBkb2Vzbid0IG5lZWQgInZvbGF0aWxlIiBi ZWNhdXNlIGFzbSBzdGF0ZW1lbnRzIHRoYXQgaGF2ZSBubyBvdXRwdXQKPj4gb3BlcmFuZHMgYXJl IGltcGxpY2l0bHkgdm9sYXRpbGUuCj4+Cj4+IC0gbWFrZXMgdGhlIGNvbXBpbGVyIGdpdmUgdXMg dGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gKmFkZHJlc3NlcyogaW4gYQo+PiByZWdpc3RlciBl YWNoOyBiZXlvbmQgdGhhdCwgaXQgZG9lc24ndCBrbm93IHdoYXQgd2UncmUgZG9pbmcgd2l0aCB0 aGVtLAo+PiBzbyB0aGUgdGhpcmQgKCJjbG9iYmVycyIpIHBhcmFtZXRlciBoYXMgdG8gc2F5ICJt ZW1vcnkiIGkuZS4gdHJlYXQgKmFsbCoKPj4gbWVtb3J5IGNvbnRlbnRzIGFzIHVua25vd24gYWZ0 ZXIgdGhpcy4KPj4KPj4gW1tGcm9tIEdDQyBkb2NzOiBUaGUgIm1lbW9yeSIgY2xvYmJlciB0ZWxs cyB0aGUgY29tcGlsZXIgdGhhdCB0aGUKPj4gYXNzZW1ibHkgY29kZSBwZXJmb3JtcyBtZW1vcnkg cmVhZHMgb3Igd3JpdGVzIHRvIGl0ZW1zIG90aGVyIHRoYW4gdGhvc2UKPj4gbGlzdGVkIGluIHRo ZSBpbnB1dCBhbmQgb3V0cHV0IG9wZXJhbmRzIChmb3IgZXhhbXBsZSwgYWNjZXNzaW5nIHRoZQo+ PiBtZW1vcnkgcG9pbnRlZCB0byBieSBvbmUgb2YgdGhlIGlucHV0IHBhcmFtZXRlcnMpLiBUbyBl bnN1cmUgbWVtb3J5Cj4+IGNvbnRhaW5zIGNvcnJlY3QgdmFsdWVzLCBHQ0MgbWF5IG5lZWQgdG8g Zmx1c2ggc3BlY2lmaWMgcmVnaXN0ZXIgdmFsdWVzCj4+IHRvIG1lbW9yeSBiZWZvcmUgZXhlY3V0 aW5nIHRoZSBhc20uIEZ1cnRoZXIsIHRoZSBjb21waWxlciBkb2VzIG5vdAo+PiBhc3N1bWUgdGhh dCBhbnkgdmFsdWVzIHJlYWQgZnJvbSBtZW1vcnkgYmVmb3JlIGFuIGFzbSByZW1haW4gdW5jaGFu Z2VkCj4+IGFmdGVyIHRoYXQgYXNtOyBpdCByZWxvYWRzIHRoZW0gYXMgbmVlZGVkLiBVc2luZyB0 aGUgIm1lbW9yeSIgY2xvYmJlcgo+PiBlZmZlY3RpdmVseSBmb3JtcyBhIHJlYWQvd3JpdGUgbWVt b3J5IGJhcnJpZXIgZm9yIHRoZSBjb21waWxlci5dXQo+Pgo+PiBCVFcsIHNob3VsZCB3ZSBub3Qg dGVsbCBpdCB3ZSd2ZSAqYWxzbyogY2xvYmJlcmVkICV4bW1bMC0zXT8KPj4KPj4gU28gdGhleSdy ZSBib3RoIGNvcnJlY3QsIGp1c3QgdGFraW5nIGRpZmZlcmVudCBhcHByb2FjaGVzLiBJIGRvbid0 IGtub3cKPj4gd2hpY2ggd291bGQgZ2l2ZSB0aGUgYmVzdCBwZXJmb3JtYW5jZSBmb3IgdGhpcyBz cGVjaWZpYyBjYXNlLgo+IAo+IENvb2wsIGxlYXJuIHNvbWV0aGluZyBuZXcgZXZlcnkgZGF5LiA6 KQo+IAo+IEkndmUgdHJpZWQgd3JpdGluZyBpdCBhczoKPiAKPiBzdHJ1Y3QgcXcyIHsKPiAJdTY0 CXFbMl07Cj4gfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKPiAKPiBzdGF0aWMgdm9pZCBfX21l bWNweV9udGRxYShzdHJ1Y3QgcXcyICpkc3QsIGNvbnN0IHN0cnVjdCBxdzIgKnNyYywgdW5zaWdu ZWQgbG9uZyBsZW4pCj4gewo+IAlrZXJuZWxfZnB1X2JlZ2luKCk7Cj4gCj4gCWxlbiA+Pj0gNDsK PiAJd2hpbGUgKGxlbiA+PSA0KSB7Cj4gCQlhc20oIm1vdm50ZHFhICAgKCUwKSwgJSV4bW0wIiA6 OiAiciIgKHNyYyksICJtIiAoc3JjWzBdKSk7Cj4gCQlhc20oIm1vdm50ZHFhIDE2KCUwKSwgJSV4 bW0xIiA6OiAiciIgKHNyYyksICJtIiAoc3JjWzFdKSk7Cj4gCQlhc20oIm1vdm50ZHFhIDMyKCUw KSwgJSV4bW0yIiA6OiAiciIgKHNyYyksICJtIiAoc3JjWzJdKSk7Cj4gCQlhc20oIm1vdm50ZHFh IDQ4KCUwKSwgJSV4bW0zIiA6OiAiciIgKHNyYyksICJtIiAoc3JjWzNdKSk7Cj4gCQlhc20oIm1v dmFwcyAlJXhtbTAsICAgKCUxKSIgOiAiPW0iIChkc3RbMF0pIDogInIiIChkc3QpKTsKPiAJCWFz bSgibW92YXBzICUleG1tMSwgMTYoJTEpIiA6ICI9bSIgKGRzdFsxXSkgOiAiciIgKGRzdCkpOwo+ IAkJYXNtKCJtb3ZhcHMgJSV4bW0yLCAzMiglMSkiIDogIj1tIiAoZHN0WzJdKSA6ICJyIiAoZHN0 KSk7Cj4gCQlhc20oIm1vdmFwcyAlJXhtbTMsIDQ4KCUxKSIgOiAiPW0iIChkc3RbM10pIDogInIi IChkc3QpKTsKPiAJCXNyYyArPSA0Owo+IAkJZHN0ICs9IDQ7Cj4gCQlsZW4gLT0gNDsKPiAJfQo+ IAl3aGlsZSAobGVuLS0pIHsKPiAJCWFzbSgibW92bnRkcWEgKCUwKSwgJSV4bW0wIiA6OiAiciIg KHNyYyksICJtIiAoc3JjWzBdKSk7Cj4gCQlhc20oIm1vdmFwcyAlJXhtbTAsICglMSkiIDogIj1t IiAoZHN0WzBdKSA6ICJyIiAoZHN0KSk7Cj4gCQlzcmMrKzsKPiAJCWRzdCsrOwo+IAl9Cj4gCj4g CWtlcm5lbF9mcHVfZW5kKCk7Cj4gfQo+IAo+IFRoYXQgYXBwZWFycyB0byBhbGxvdyBHQ0MgdG8g aW50ZXJsZWF2ZSBTU0UgYW5kIG5vcm1hbCBpbnN0cnVjdGlvbnMsCj4gcHJlc3VtYWJseSB0aGF0 IG1lYW5zIGl0IGlzIHRyeWluZyB0byB1dGlsaXplIHRoZSBleGVjdXRpb24gdW5pdHMgYmV0dGVy Pwo+IAo+IEkgd29uZGVyIGlmIGl0IG1ha2VzIGEgZGlmZmVyZW5jZSBpbiBzcGVlZD8KPiAKPiAK PiBPbGQgY29kZSBtYWluIGxvb3AgYXNzZW1ibHkgbG9va3MgbGlrZToKPiAKPiAgICA1ODogICA2 NiAwZiAzOCAyYSAwMCAgICAgICAgICBtb3ZudGRxYSAoJXJheCksJXhtbTAKPiAgICA1ZDogICA2 NiAwZiAzOCAyYSA0OCAxMCAgICAgICBtb3ZudGRxYSAweDEwKCVyYXgpLCV4bW0xCj4gICAgNjM6 ICAgNjYgMGYgMzggMmEgNTAgMjAgICAgICAgbW92bnRkcWEgMHgyMCglcmF4KSwleG1tMgo+ICAg IDY5OiAgIDY2IDBmIDM4IDJhIDU4IDMwICAgICAgIG1vdm50ZHFhIDB4MzAoJXJheCksJXhtbTMK PiAgICA2ZjogICAwZiAyOSAwMSAgICAgICAgICAgICAgICBtb3ZhcHMgJXhtbTAsKCVyY3gpCj4g ICAgNzI6ICAgMGYgMjkgNDkgMTAgICAgICAgICAgICAgbW92YXBzICV4bW0xLDB4MTAoJXJjeCkK PiAgICA3NjogICAwZiAyOSA1MSAyMCAgICAgICAgICAgICBtb3ZhcHMgJXhtbTIsMHgyMCglcmN4 KQo+ICAgIDdhOiAgIDBmIDI5IDU5IDMwICAgICAgICAgICAgIG1vdmFwcyAleG1tMywweDMwKCVy Y3gpCj4gICAgN2U6ICAgNDkgODMgZTggMDQgICAgICAgICAgICAgc3ViICAgICQweDQsJXI4Cj4g ICAgODI6ICAgNDggODMgYzAgNDAgICAgICAgICAgICAgYWRkICAgICQweDQwLCVyYXgKPiAgICA4 NjogICA0OCA4MyBjMSA0MCAgICAgICAgICAgICBhZGQgICAgJDB4NDAsJXJjeAo+ICAgIDhhOiAg IDQ5IDgzIGY4IDAzICAgICAgICAgICAgIGNtcCAgICAkMHgzLCVyOAo+ICAgIDhlOiAgIDc3IGM4 ICAgICAgICAgICAgICAgICAgIGphICAgICA1OCA8aTkxNV9tZW1jcHlfZnJvbV93YysweDU4Pgo+ IAo+IFdoaWxlIHRoZSBhYm92ZSB2ZXJzaW9uIGdlbmVyYXRlczoKPiAKPiAgICA1ODogICA2NiAw ZiAzOCAyYSAwMCAgICAgICAgICBtb3ZudGRxYSAoJXJheCksJXhtbTAKPiAgICA1ZDogICA2NiAw ZiAzOCAyYSA0OCAxMCAgICAgICBtb3ZudGRxYSAweDEwKCVyYXgpLCV4bW0xCj4gICAgNjM6ICAg NjYgMGYgMzggMmEgNTAgMjAgICAgICAgbW92bnRkcWEgMHgyMCglcmF4KSwleG1tMgo+ICAgIDY5 OiAgIDY2IDBmIDM4IDJhIDU4IDMwICAgICAgIG1vdm50ZHFhIDB4MzAoJXJheCksJXhtbTMKPiAg ICA2ZjogICA0OSA4MyBlOCAwNCAgICAgICAgICAgICBzdWIgICAgJDB4NCwlcjgKPiAgICA3Mzog ICA0OCA4MyBjMCA0MCAgICAgICAgICAgICBhZGQgICAgJDB4NDAsJXJheAo+ICAgIDc3OiAgIDBm IDI5IDAxICAgICAgICAgICAgICAgIG1vdmFwcyAleG1tMCwoJXJjeCkKPiAgICA3YTogICAwZiAy OSA0OSAxMCAgICAgICAgICAgICBtb3ZhcHMgJXhtbTEsMHgxMCglcmN4KQo+ICAgIDdlOiAgIDBm IDI5IDUxIDIwICAgICAgICAgICAgIG1vdmFwcyAleG1tMiwweDIwKCVyY3gpCj4gICAgODI6ICAg MGYgMjkgNTkgMzAgICAgICAgICAgICAgbW92YXBzICV4bW0zLDB4MzAoJXJjeCkKPiAgICA4Njog ICA0OCA4MyBjMSA0MCAgICAgICAgICAgICBhZGQgICAgJDB4NDAsJXJjeAo+ICAgIDhhOiAgIDQ5 IDgzIGY4IDAzICAgICAgICAgICAgIGNtcCAgICAkMHgzLCVyOAo+ICAgIDhlOiAgIDc3IGM4ICAg ICAgICAgICAgICAgICAgIGphICAgICA1OCA8aTkxNV9tZW1jcHlfZnJvbV93YysweDU4Pgo+IAo+ IEludGVyZXN0aW5nbHksIGluIGJvdGggY2FzZXMgR0NDIGRvZXMgc29tZSBpbiBteSBtaW5kIGZ1 dGlsZQo+IHNodWZmbGluZyBhcm91bmcgYmV0d2VlbiB0aGUgdHdvIGxvb3BzLiBJbnN0ZWFkIG9m IGp1c3QKPiBjYXJyeWluZyBvbiB3aXRoIHNyYyBhbmQgZHN0IGFuZCBsZW4gaG93IHRoZXkgYXJl LCBpdCBnb2VzCj4gdG8gdXNlIGEgZGlmZmVyZW50IHJlZ2lzdGVyIHNldCBmb3IgdGhlIHNlY29u ZCBsb29wOgo+IAo+IFNvIHRoaXMgcmVzaHVmZmxpbmc6Cj4gCj4gICAgOTA6ICAgNDggOGQgNDIg ZmMgICAgICAgICAgICAgbGVhICAgIC0weDQoJXJkeCksJXJheAo+ICAgIDk0OiAgIDgzIGUyIDAz ICAgICAgICAgICAgICAgIGFuZCAgICAkMHgzLCVlZHgKPiAgICA5NzogICA0OCBjMSBlOCAwMiAg ICAgICAgICAgICBzaHIgICAgJDB4MiwlcmF4Cj4gICAgOWI6ICAgNDggODMgYzAgMDEgICAgICAg ICAgICAgYWRkICAgICQweDEsJXJheAo+ICAgIDlmOiAgIDQ4IGMxIGUwIDA2ICAgICAgICAgICAg IHNobCAgICAkMHg2LCVyYXgKPiAgICBhMzogICA0OCAwMSBjNiAgICAgICAgICAgICAgICBhZGQg ICAgJXJheCwlcnNpCj4gICAgYTY6ICAgNDggMDEgYzcgICAgICAgICAgICAgICAgYWRkICAgICVy YXgsJXJkaQo+ICAgIGE5OiAgIDQ4IDhkIDQyIGZmICAgICAgICAgICAgIGxlYSAgICAtMHgxKCVy ZHgpLCVyYXgKPiAgICBhZDogICA0OCA4NSBkMiAgICAgICAgICAgICAgICB0ZXN0ICAgJXJkeCwl cmR4Cj4gICAgYjA6ICAgNzQgMWEgICAgICAgICAgICAgICAgICAgamUgICAgIGNjIDxpOTE1X21l bWNweV9mcm9tX3djKzB4Y2M+Cj4gCj4gQW5kIHRoZW4gdGhlIHNlY29uZCBsb29wOgo+IAo+ICAg IGIyOiAgIDY2IDBmIDM4IDJhIDA2ICAgICAgICAgIG1vdm50ZHFhICglcnNpKSwleG1tMAo+ICAg IGI3OiAgIDQ4IDgzIGU4IDAxICAgICAgICAgICAgIHN1YiAgICAkMHgxLCVyYXgKPiAgICBiYjog ICA0OCA4MyBjNiAxMCAgICAgICAgICAgICBhZGQgICAgJDB4MTAsJXJzaQo+ICAgIGJmOiAgIDBm IDI5IDA3ICAgICAgICAgICAgICAgIG1vdmFwcyAleG1tMCwoJXJkaSkKPiAgICBjMjogICA0OCA4 MyBjNyAxMCAgICAgICAgICAgICBhZGQgICAgJDB4MTAsJXJkaQo+ICAgIGM2OiAgIDQ4IDgzIGY4 IGZmICAgICAgICAgICAgIGNtcCAgICAkMHhmZmZmZmZmZmZmZmZmZmZmLCVyYXgKPiAgICBjYTog ICA3NSBlNiAgICAgICAgICAgICAgICAgICBqbmUgICAgYjIgPGk5MTVfbWVtY3B5X2Zyb21fd2Mr MHhiMj4KPiAKPiBBbnkgdGhvdWdodHMgb24gdGhpcz8KClRoaXMgdmVyc2lvbiBnZW5lcmF0ZXMg dGhlIHNtYWxsZXN0IGNvZGU6CgpzdGF0aWMgdm9pZCBfX21lbWNweV9udGRxYShzdHJ1Y3QgcXcy ICpkc3QsIGNvbnN0IHN0cnVjdCBxdzIgKnNyYywgdW5zaWduZWQgbG9uZyBsZW4pCnsKCXVuc2ln bmVkIGxvbmcgbDQ7CgoJa2VybmVsX2ZwdV9iZWdpbigpOwoKCWw0ID0gbGVuIC8gNDsKCXdoaWxl IChsNCkgewoJCWFzbSgibW92bnRkcWEgICAoJTApLCAlJXhtbTAiIDo6ICJyIiAoc3JjKSwgIm0i IChzcmNbMF0pKTsKCQlhc20oIm1vdm50ZHFhIDE2KCUwKSwgJSV4bW0xIiA6OiAiciIgKHNyYyks ICJtIiAoc3JjWzFdKSk7CgkJYXNtKCJtb3ZudGRxYSAzMiglMCksICUleG1tMiIgOjogInIiIChz cmMpLCAibSIgKHNyY1syXSkpOwoJCWFzbSgibW92bnRkcWEgNDgoJTApLCAlJXhtbTMiIDo6ICJy IiAoc3JjKSwgIm0iIChzcmNbM10pKTsKCQlhc20oIm1vdmFwcyAlJXhtbTAsICAgKCUxKSIgOiAi PW0iIChkc3RbMF0pIDogInIiIChkc3QpKTsKCQlhc20oIm1vdmFwcyAlJXhtbTEsIDE2KCUxKSIg OiAiPW0iIChkc3RbMV0pIDogInIiIChkc3QpKTsKCQlhc20oIm1vdmFwcyAlJXhtbTIsIDMyKCUx KSIgOiAiPW0iIChkc3RbMl0pIDogInIiIChkc3QpKTsKCQlhc20oIm1vdmFwcyAlJXhtbTMsIDQ4 KCUxKSIgOiAiPW0iIChkc3RbM10pIDogInIiIChkc3QpKTsKCQlzcmMgKz0gNDsKCQlkc3QgKz0g NDsKCQlsNC0tOwoJfQoKCWxlbiAlPSA0OwoJd2hpbGUgKGxlbikgewoJCWFzbSgibW92bnRkcWEg KCUwKSwgJSV4bW0wIiA6OiAiciIgKHNyYyksICJtIiAoc3JjWzBdKSk7CgkJYXNtKCJtb3ZhcHMg JSV4bW0wLCAoJTEpIiA6ICI9bSIgKGRzdFswXSkgOiAiciIgKGRzdCkpOwoJCXNyYysrOwoJCWRz dCsrOwoJCWxlbi0tOwoJfQoKCWtlcm5lbF9mcHVfZW5kKCk7Cn0KCkFsdGhvdWdoIEkgc3RpbGwg aGF2ZW4ndCBmaWd1cmVkIG91dCBhIHdheSB0byBjb252aW5jZSBpdCB0byB1c2UKdGhlIHNhbWUg cmVnaXN0ZXJzIGZvciBzcmMgYW5kIGRlc3QgYmV0d2VlbiB0aGUgdHdvIGxvb3BzLgoKUmVnYXJk cywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK