From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Sharma, Shashank" Subject: Re: [PATCH v2 4/4] drm/i915/icl: Add Multi-segmented gamma support Date: Mon, 6 May 2019 18:44:43 +0530 Message-ID: <7bc81282-00a5-6e20-e7ae-10918c400416@intel.com> References: <20190430152108.31814-1-shashank.sharma@intel.com> <20190430152108.31814-5-shashank.sharma@intel.com> <20190503155054.GS24299@intel.com> <20190506122522.GV24299@intel.com> <476f334d-82e1-6a1c-773f-2a1dac467125@intel.com> <20190506131109.GY24299@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id CFD6189906 for ; Mon, 6 May 2019 13:14:46 +0000 (UTC) In-Reply-To: <20190506131109.GY24299@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org UmVnYXJkcwoKU2hhc2hhbmsKCk9uIDUvNi8yMDE5IDY6NDEgUE0sIFZpbGxlIFN5cmrDpGzDpCB3 cm90ZToKPiBPbiBNb24sIE1heSAwNiwgMjAxOSBhdCAwNjoyNToxOVBNICswNTMwLCBTaGFybWEs IFNoYXNoYW5rIHdyb3RlOgo+PiBPbiA1LzYvMjAxOSA1OjU1IFBNLCBWaWxsZSBTeXJqw6Rsw6Qg d3JvdGU6Cj4+PiBPbiBNb24sIE1heSAwNiwgMjAxOSBhdCAwNDowOTozM1BNICswNTMwLCBTaGFy bWEsIFNoYXNoYW5rIHdyb3RlOgo+Pj4+IFJlZ2FyZHMKPj4+Pgo+Pj4+IFNoYXNoYW5rCj4+Pj4K Pj4+PiBPbiA1LzMvMjAxOSA5OjIwIFBNLCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4+Pj4+IE9u IFR1ZSwgQXByIDMwLCAyMDE5IGF0IDA4OjUxOjA4UE0gKzA1MzAsIFNoYXNoYW5rIFNoYXJtYSB3 cm90ZToKPj4+Pj4+IElDTCBpbnRyb2R1Y2VzIGEgbmV3IGdhbW1hIGNvcnJlY3Rpb24gbW9kZSBp biBkaXNwbGF5IGVuZ2luZSwgY2FsbGVkCj4+Pj4+PiBtdWx0aS1zZWdtZW50ZWQtZ2FtbWEgbW9k ZS4gVGhpcyBtb2RlIGFsbG93cyB1c2VycyB0byBwcm9ncmFtIHRoZQo+Pj4+Pj4gZGFya2VyIHJl Z2lvbiBvZiB0aGUgZ2FtbWEgY3VydmUgd2l0aCBzdWVwcmZpbmUgcHJlY2lzaW9uLiBBbgo+Pj4+ Pj4gZXhhbXBsZSB1c2UgY2FzZSBmb3IgdGhpcyBpcyBIRFIgY3VydmVzIChsaWtlIFBRIFNULTIw ODQpLgo+Pj4+Pj4KPj4+Pj4+IElmIHdlIHBsb3QgYSBnYW1tYSBjb3JyZWN0aW9uIGN1cnZlIGZy b20gdmFsdWUgcmFuZ2UgYmV0d2VlbiAwLjAgdG8gMS4wLAo+Pj4+Pj4gSUNMJ3MgbXVsdGktc2Vn bWVudCBoYXMgMyBkaWZmZXJlbnQgc2VjdGlvbnM6Cj4+Pj4+PiAtIHN1cGVyZmluZSBzZWdtZW50 OiA5IHZhbHVlcywgcmFuZ2VzIGJldHdlZW4gMCAtIDEvKDEyOCAqIDI1NikKPj4+Pj4+IC0gZmlu ZSBzZWdtZW50OiAyNTcgdmFsdWVzLCByYW5nZXMgYmV0d2VlbiAwIC0gMS8oMTI4KQo+Pj4+Pj4g LSBjb3Jhc2Ugc2VnbWVudDogMjU3IHZhbHVlcywgcmFuZ2VzIGJldHdlZW4gMCAtIDEKPj4+Pj4+ Cj4+Pj4+PiBUaGlzIHBhdGNoOgo+Pj4+Pj4gLSBDaGFuZ2VzIGdhbW1hIExVVHMgc2l6ZSBmb3Ig SUNML0dFTjExIHRvIDI2MjE0NCBlbnRyaWVzICg4ICogMTI4ICogMjU2KSwKPj4+Pj4+ICAgICAg c28gdGhhdCB1c2Vyc3BhY2UgY2FuIHByb2dyYW0gd2l0aCBoaWdoZXN0IHByZWNpc2lvbiBzdXBw b3J0ZWQuCj4+Pj4+PiAtIENoYW5nZXMgZGVmYXVsdCBnYW1tYSBtb2RlIChub24tbGVnYWN5KSB0 byBtdWx0aS1zZWdtZW50ZWQtZ2FtbWEgbW9kZS4KPj4+Pj4+IC0gQWRkcyBmdW5jdGlvbnMgdG8g cHJvZ3JhbS9kZXRlY3QgbXVsdGktc2VnbWVudCBnYW1tYS4KPj4+Pj4+Cj4+Pj4+PiBWMjogQWRk cmVzc2VkIHJldmlldyBjb21tZW50cyBmcm9tIFZpbGxlCj4+Pj4+PiAgICAgICAgLSBzZXBhcmF0 ZSBmdW5jdGlvbiBmb3Igc3VwZXJmaW5lIGFuZCBmaW5lIHNlZ21lbnRzLgo+Pj4+Pj4gICAgICAg IC0gcmVtb3ZlIGVudW0gZm9yIHNlZ21lbnRzLgo+Pj4+Pj4gICAgICAgIC0gcmV1c2UgbGFzdCBl bnRyeSBvZiB0aGUgTFVUIGFzIGdjX21heCB2YWx1ZS4KPj4+Pj4+ICAgICAgICAtIHJlcGxhY2Ug aWYoKSAuLi4uY29uZCB3aXRoIHN3aXRjaC4uLmNhc2UgaW4gaWNsX2xvYWRfbHV0cy4KPj4+Pj4+ ICAgICAgICAtIGFkZCBhbiBlbnRyeSB2YXJpYWJsZSwgaW5zdGVhZCBvZiAnd29yZCcKPj4+Pj4+ Cj4+Pj4+PiBDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNv bT4KPj4+Pj4+IENjOiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXgu aW50ZWwuY29tPgo+Pj4+Pj4gQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwu Y2g+Cj4+Pj4+Pgo+Pj4+Pj4gU3VnZ2VzdGVkLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5 cmphbGFAbGludXguaW50ZWwuY29tPgo+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogU2hhc2hhbmsgU2hh cm1hIDxzaGFzaGFuay5zaGFybWFAaW50ZWwuY29tPgo+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogVW1h IFNoYW5rYXIgPHVtYS5zaGFua2FyQGludGVsLmNvbT4KPj4+Pj4+IC0tLQo+Pj4+Pj4gICAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMgICAgfCAgIDMgKy0KPj4+Pj4+ICAgICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jIHwgMTI1ICsrKysrKysrKysrKysrKysrKysr KysrKysrKystCj4+Pj4+PiAgICAgMiBmaWxlcyBjaGFuZ2VkLCAxMjMgaW5zZXJ0aW9ucygrKSwg NSBkZWxldGlvbnMoLSkKPj4+Pj4+Cj4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9wY2kuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMKPj4+Pj4+ IGluZGV4IGZmYTJlZTcwYTAzZC4uODM2OTg5NTE3NjBiIDEwMDY0NAo+Pj4+Pj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYwo+Pj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9wY2kuYwo+Pj4+Pj4gQEAgLTc0OSw3ICs3NDksOCBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IGludGVsX2RldmljZV9pbmZvIGludGVsX2Nhbm5vbmxha2VfaW5mbyA9IHsKPj4+Pj4+ ICAgICAJR0VOKDExKSwgXAo+Pj4+Pj4gICAgIAkuZGRiX3NpemUgPSAyMDQ4LCBcCj4+Pj4+PiAg ICAgCS5oYXNfbG9naWNhbF9yaW5nX2Vsc3EgPSAxLCBcCj4+Pj4+PiAtCS5jb2xvciA9IHsgLmRl Z2FtbWFfbHV0X3NpemUgPSAzMywgLmdhbW1hX2x1dF9zaXplID0gMTAyNCB9Cj4+Pj4+PiArCS5j b2xvciA9IHsgLmRlZ2FtbWFfbHV0X3NpemUgPSAzMywgLmdhbW1hX2x1dF9zaXplID0gMjYyMTQ0 IH0KPj4+Pj4gVWdoLiBUaGF0cyBvbmUgYmlnIExVVC4gQnV0IGxvb2tzIGNvcnJlY3QuCj4+Pj4+ Cj4+Pj4+PiArCj4+Pj4+IEJvZ3VzIG5ld2xpbmUuCj4+Pj4gR290IGl0Lgo+Pj4+Pj4gICAgIAo+ Pj4+Pj4gICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gaW50ZWxfaWNl bGFrZV8xMV9pbmZvID0gewo+Pj4+Pj4gICAgIAlHRU4xMV9GRUFUVVJFUywKPj4+Pj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfY29sb3IuYwo+Pj4+Pj4gaW5kZXggNmMzNDFiZWE1MTRjLi40OTgzMWU4 ZDAyZmIgMTAwNjQ0Cj4+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xv ci5jCj4+Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCj4+Pj4+ PiBAQCAtNDEsNiArNDEsOSBAQAo+Pj4+Pj4gICAgICNkZWZpbmUgQ1RNX0NPRUZGX0FCUyhjb2Vm ZikJCSgoY29lZmYpICYgKENUTV9DT0VGRl9TSUdOIC0gMSkpCj4+Pj4+PiAgICAgCj4+Pj4+PiAg ICAgI2RlZmluZSBMRUdBQ1lfTFVUX0xFTkdUSAkJMjU2Cj4+Pj4+PiArI2RlZmluZSBJQ0xfR0FN TUFfTVVMVElTRUdfTFVUX0xFTkdUSAkJKDI1NiAqIDEyOCAqIDgpCj4+Pj4+PiArI2RlZmluZSBJ Q0xfR0FNTUFfU1VQRVJGSU5FX1NFR19MRU5HVEgJOQo+Pj4+Pj4gKwo+Pj4+Pj4gICAgIC8qCj4+ Pj4+PiAgICAgICogRXh0cmFjdCB0aGUgQ1NDIGNvZWZmaWNpZW50IGZyb20gYSBDVE0gY29lZmZp Y2llbnQgKGluIFUzMi4zMiBmaXhlZCBwb2ludAo+Pj4+Pj4gICAgICAqIGZvcm1hdCkuIFRoaXMg bWFjcm8gdGFrZXMgdGhlIGNvZWZmaWNpZW50IHdlIHdhbnQgdHJhbnNmb3JtZWQgYW5kIHRoZQo+ Pj4+Pj4gQEAgLTc2Nyw2ICs3NzAsMTEzIEBAIHN0YXRpYyB2b2lkIGdsa19sb2FkX2x1dHMoY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4+Pj4+PiAgICAgCX0KPj4+ Pj4+ICAgICB9Cj4+Pj4+PiAgICAgCj4+Pj4+PiArLyogaWxrKyAiMTIuNCIgaW50ZXJwb2xhdGVk IGZvcm1hdCAoaGlnaCAxMCBiaXRzKSAqLwo+Pj4+Pj4gK3N0YXRpYyB1MzIgaWxrX2x1dF8xMnA0 X2xkdyhjb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqY29sb3IpCj4+Pj4+PiArewo+Pj4+Pj4g KwlyZXR1cm4gKGNvbG9yLT5yZWQgPj4gNikgPDwgMjAgfCAoY29sb3ItPmdyZWVuID4+IDYpIDw8 IDEwIHwKPj4+Pj4+ICsJCShjb2xvci0+Ymx1ZSA+PiA2KTsKPj4+Pj4+ICt9Cj4+Pj4+PiArCj4+ Pj4+PiArLyogaWxrKyAiMTIuNCIgaW50ZXJwb2xhdGVkIGZvcm1hdCAobG93IDYgYml0cykgKi8K Pj4+Pj4+ICtzdGF0aWMgdTMyIGlsa19sdXRfMTJwNF91ZHcoY29uc3Qgc3RydWN0IGRybV9jb2xv cl9sdXQgKmNvbG9yKQo+Pj4+Pj4gK3sKPj4+Pj4+ICsJcmV0dXJuIChjb2xvci0+cmVkICYgMHgz ZikgPDwgMjQgfCAoY29sb3ItPmdyZWVuICYgMHgzZikgPDwgMTQgfAo+Pj4+Pj4gKwkJKGNvbG9y LT5ibHVlICYgMHgzZik7Cj4+Pj4+PiArfQo+Pj4+Pj4gKwo+Pj4+Pj4gK3N0YXRpYyB2b2lkCj4+ Pj4+PiAraWNsX2xvYWRfZ2NtYXgoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUsCj4+Pj4+PiArCQkJY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXQgKmVudHJ5KQo+Pj4+ PiBJbmRlbnRhdGlvbiBsb29rcyBvZmYuIEFsc28gcy9lbnRyeS9jb2xvci8gdG8gbWF0Y2ggdGhl IG90aGVyIHNpbWlsYXJpc2gKPj4+Pj4gZnVuY3MgbWF5YmU/Cj4+Pj4gU3VyZS4KPj4+Pj4+ICt7 Cj4+Pj4+PiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0 YXRlLT5iYXNlLmNydGMpOwo+Pj4+Pj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPj4+Pj4+ICsJZW51bSBwaXBlIHBpcGUgPSBj cnRjLT5waXBlOwo+Pj4+Pj4gKwo+Pj4+Pj4gKwkvKiBGaXhtZTogTFVUIGVudHJpZXMgYXJlIDE2 IGJpdCBvbmx5LCBzbyB3ZSBjYW4gcHJvZyAweEZGRkYgbWF4ICovCj4+Pj4+PiArCUk5MTVfV1JJ VEUoUFJFQ19QQUxfR0NfTUFYKHBpcGUsIDApLCBlbnRyeS0+cmVkKTsKPj4+Pj4+ICsJSTkxNV9X UklURShQUkVDX1BBTF9HQ19NQVgocGlwZSwgMSksIGVudHJ5LT5ncmVlbik7Cj4+Pj4+PiArCUk5 MTVfV1JJVEUoUFJFQ19QQUxfR0NfTUFYKHBpcGUsIDIpLCBlbnRyeS0+Ymx1ZSk7Cj4+Pj4+PiAr fQo+Pj4+Pj4gKwo+Pj4+Pj4gK3N0YXRpYyB2b2lkCj4+Pj4+PiAraWNsX3Byb2dyYW1fZ2FtbWFf c3VwZXJmaW5lX3NlZ21lbnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUpCj4+Pj4+PiArewo+Pj4+Pj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVs X2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPj4+Pj4+ICsJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4+Pj4+PiArCWNvbnN0 IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqYmxvYiA9IGNydGNfc3RhdGUtPmJhc2UuZ2FtbWFf bHV0Owo+Pj4+Pj4gKwljb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqbHV0ID0gYmxvYi0+ZGF0 YTsKPj4+Pj4+ICsJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+Pj4+Pj4gKwl1MzIgaTsK Pj4+Pj4+ICsKPj4+Pj4+ICsJaWYgKCFsdXQgfHwgZHJtX2NvbG9yX2x1dF9zaXplKGJsb2IpIDwg SUNMX0dBTU1BX1NVUEVSRklORV9TRUdfTEVOR1RIKQo+Pj4+Pj4gKwkJcmV0dXJuOwo+Pj4+PiBU aGVzZSBjaGVja3MgYXJlbid0IG5lZWRlZC4gSnVzdCBkZWFkIGNvZGUuCj4+Pj4gV2lsbCByZW1v dmUgdGhpcyBhbmQgc2ltaWxhcnMuCj4+Pj4+PiArCj4+Pj4+PiArCS8qCj4+Pj4+PiArCSAqIEV2 ZXJ5IGVudHJ5IGluIHRoZSBtdWx0aS1zZWdtZW50IExVVCBpcyBjb3JyZXNwb25kaW5nIHRvIGEg c3VwZXJmaW5lCj4+Pj4+PiArCSAqIHNlZ21lbnQgc3RlcCB3aGljaCBpcyAxLyg4ICogMTI4ICog MjU2KS4KPj4+Pj4+ICsJICoKPj4+Pj4+ICsJICogU3VwZXJmaW5lIHNlZ21lbnQgaGFzIDkgZW50 cmllcywgY29ycmVzcG9uZGluZyB0byB2YWx1ZXMKPj4+Pj4+ICsJICogMCwgMS8oOCAqIDEyOCAq IDI1NiksIDIvKDggKiAxMjggKiAyNTYpIC4uLi4gOC8oOCAqIDEyOCAqIDI1NikuCj4+Pj4+PiAr CSAqLwo+Pj4+Pj4gKwlJOTE1X1dSSVRFKFBSRUNfUEFMX01VTFRJX1NFR19JTkRFWChwaXBlKSwg UEFMX1BSRUNfQVVUT19JTkNSRU1FTlQpOwo+Pj4+Pj4gKwo+Pj4+Pj4gKwlmb3IgKGkgPSAwOyBp IDwgOTsgaSsrKSB7Cj4+Pj4+PiArCQljb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqZW50cnkg PSAmbHV0W2ldOwo+Pj4+Pj4gKwo+Pj4+Pj4gKwkJSTkxNV9XUklURShQUkVDX1BBTF9NVUxUSV9T RUdfREFUQShwaXBlKSwKPj4+Pj4+ICsJCQkgICBpbGtfbHV0XzEycDRfdWR3KGVudHJ5KSk7Cj4+ Pj4+IGxkdyBzaG91bGQgY29tZSBiZWZvcmUgdWR3Lgo+Pj4+IEdvdCBpdC4KPj4+Pj4+ICsJCUk5 MTVfV1JJVEUoUFJFQ19QQUxfTVVMVElfU0VHX0RBVEEocGlwZSksCj4+Pj4+PiArCQkJICAgaWxr X2x1dF8xMnA0X2xkdyhlbnRyeSkpOwo+Pj4+Pj4gKwl9Cj4+Pj4+PiArfQo+Pj4+Pj4gKwo+Pj4+ Pj4gK3N0YXRpYyB2b2lkCj4+Pj4+PiAraWNsX3Byb2dyYW1fZ2FtbWFfbXVsdGlfc2VnbWVudChj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPj4+Pj4+ICt7Cj4+Pj4+ PiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5i YXNlLmNydGMpOwo+Pj4+Pj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPj4+Pj4+ICsJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0 eV9ibG9iICpibG9iID0gY3J0Y19zdGF0ZS0+YmFzZS5nYW1tYV9sdXQ7Cj4+Pj4+PiArCWNvbnN0 IHN0cnVjdCBkcm1fY29sb3JfbHV0ICpsdXQgPSBibG9iLT5kYXRhOwo+Pj4+Pj4gKwljb25zdCBz dHJ1Y3QgZHJtX2NvbG9yX2x1dCAqZW50cnk7Cj4+Pj4+ICdlbnRyeScgZGVjbGFyYXRpb24gY2Fu IGJlIG1vdmVkIGludG8gdGhlIGxvb3BzLgo+Pj4+IEl0cyBiZWluZyB1c2VkIGluIG11bHRpcGxl IGxvb3BzLAo+Pj4gSU1PIHN0aWxsIGJldHRlciB0byBtb3ZlIGludG8gdGhlIGxvb3BzLiBXZSBk b24ndCB3YW50IHRvIHBhc3MgYW55Cj4+PiBpbmZvcm1hdGlvbiBiZXR3ZWVuIHRoZSBsb29wcy4K Pj4+Cj4+Pj4gYWxzbyBiZWluZyB1c2VkIGZvciBHQ01heCBvdXRzaWRlIHRoZQo+Pj4+IGxvb3Au Cj4+PiBIbW0uIFRoYXQgbWlnaHQgYmUgYW4gYXJndWVtbnQgZm9yIGtlZXBpbmcgaXQgb3V0LiBC dXQgdGhlIGN1cnJlbnQKPj4+IGdjbWF4IHVzYWdlIGxvb2tzIGJyb2tlbi4gWW91J3JlIHByb2dy YW1taW5nIHRoZSBzYW1lIHZhbHVlIGludG8KPj4+IHRoZSBsYXN0IFBBTF9QUkVDIGluZGV4IGFu ZCBHQ01BWC4KPj4gSXNuJ3QgdGhpcyB3aGF0IHlvdSB3YW50ZWQgPyBJSVJDLCB5b3VyIHJlY29t bWVuZGF0aW9uIHdhcyB0byBwcm9ncmFtCj4+IHRoZSBoaWdoZXN0IHZhbHVlcyB1c2VyIHdhbnRz IHRvIHByb2dyYW0gaW4gR0NNQVggcmVnLiBXZSBhbHNvIGhhZCBhCj4+IGRpc2N1c3Npb24gb24g aG93IHVzZXIgY2FudCBwcm9ncmFtIDEuMCwgYXMgd2UgaGF2ZSBMVVQgZGVwdGggb24gMTYgYml0 Cj4+IG9ubHksIGFuZCB3ZSBkZWNpZGVkIHRvIHVzZSB0aGUgbGFzdCB2YWx1ZSBvZiB0aGUgTFVU IGFzIEdDTUFYLiBEaWQgSQo+PiBtaXN1bmRlcnN0YW5kIGFueXRoaW5nIHRoZXJlID8KPiBJdCBz aG91bGQgYmU6Cj4gUEFMX1BSRUNbbWF4XSA9IGx1dFtzaXplLTJdOwo+IEdDTUFYID0gbHV0W3Np emUtMV07Cj4KPiBPaCwgd2UgYWxzbyBuZWVkIHRvIGluY3JlYXNlIHRoZSBMVVQgc2l6ZSBieSBv bmUgdG8gbWFrZSB0aGF0Cj4gd29yayBjb3JyZWN0bHkuCgpZZXAsIHRoYXQncyB3aHkgSSB3YXMg bm90IHNvIHN1cmUgYWJvdXQgdGhpcywgYW5kIHRob3VnaHQgcHJvZ3JhbW1pbmcgYSAKMS4wIGlz IGEgYmV0dGVyIGlkZWEuCgpTbyBub3cgdGhlIG5ldyBzaXplIHdvdWxkIGJlIDI1NyAqIDI1NiAq IDEyOCA9IDI2MywxNjggZW50cmllcy5JIHdpbGwgZG8gCmNoYW5nZXMgYW5kIHNlbmQgVjMuCgpS ZWdhcmRzCgpTaGFzaGFuawoKPgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZng=