From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH] drm/i915: Fix Limited Range Color Handling Date: Tue, 13 Feb 2018 16:49:07 +0200 Message-ID: <20180213144907.GF5453@intel.com> References: <1513955087-17598-1-git-send-email-uma.shankar@intel.com> <20171222155431.GQ10981@intel.com> <20171222161247.GR10981@intel.com> <20180130201351.GH5453@intel.com> <20180209153838.GK5453@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id A2E1C894FF for ; Tue, 13 Feb 2018 14:49:11 +0000 (UTC) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Shankar, Uma" Cc: "intel-gfx@lists.freedesktop.org" , "Syrjala, Ville" , "Lin, Johnson" , "Lankhorst, Maarten" List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBGZWIgMTMsIDIwMTggYXQgMTA6Mzc6MDNBTSArMDAwMCwgU2hhbmthciwgVW1hIHdy b3RlOgo+IAo+IAo+ID4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID5Gcm9tOiBWaWxsZSBT eXJqw6Rsw6QgW21haWx0bzp2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbV0KPiA+U2VudDog RnJpZGF5LCBGZWJydWFyeSA5LCAyMDE4IDk6MDkgUE0KPiA+VG86IFNoYW5rYXIsIFVtYSA8dW1h LnNoYW5rYXJAaW50ZWwuY29tPgo+ID5DYzogaW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZzsgTGluLCBKb2huc29uIDxqb2huc29uLmxpbkBpbnRlbC5jb20+Owo+ID5TeXJqYWxhLCBWaWxs ZSA8dmlsbGUuc3lyamFsYUBpbnRlbC5jb20+OyBMYW5raG9yc3QsIE1hYXJ0ZW4KPiA+PG1hYXJ0 ZW4ubGFua2hvcnN0QGludGVsLmNvbT4KPiA+U3ViamVjdDogUmU6IFtJbnRlbC1nZnhdIFtQQVRD SF0gZHJtL2k5MTU6IEZpeCBMaW1pdGVkIFJhbmdlIENvbG9yIEhhbmRsaW5nCj4gPgo+ID5PbiBG cmksIEZlYiAwOSwgMjAxOCBhdCAwMTozNDo0MFBNICswMDAwLCBTaGFua2FyLCBVbWEgd3JvdGU6 Cj4gPj4KPiA+Pgo+ID4+ID4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID4+ID5Gcm9tOiBW aWxsZSBTeXJqw6Rsw6QgW21haWx0bzp2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbV0KPiA+ PiA+U2VudDogV2VkbmVzZGF5LCBKYW51YXJ5IDMxLCAyMDE4IDE6NDQgQU0KPiA+PiA+VG86IFNo YW5rYXIsIFVtYSA8dW1hLnNoYW5rYXJAaW50ZWwuY29tPgo+ID4+ID5DYzogaW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZzsgTGluLCBKb2huc29uCj4gPj4gPjxqb2huc29uLmxpbkBpbnRl bC5jb20+OyBTeXJqYWxhLCBWaWxsZSA8dmlsbGUuc3lyamFsYUBpbnRlbC5jb20+Owo+ID4+ID5M YW5raG9yc3QsIE1hYXJ0ZW4gPG1hYXJ0ZW4ubGFua2hvcnN0QGludGVsLmNvbT4KPiA+PiA+U3Vi amVjdDogUmU6IFtJbnRlbC1nZnhdIFtQQVRDSF0gZHJtL2k5MTU6IEZpeCBMaW1pdGVkIFJhbmdl IENvbG9yCj4gPj4gPkhhbmRsaW5nCj4gPj4gPgo+ID4+ID5PbiBUdWUsIEphbiAzMCwgMjAxOCBh dCAwMzoyMzozMlBNICswMDAwLCBTaGFua2FyLCBVbWEgd3JvdGU6Cj4gPj4gPj4KPiA+PiA+Pgo+ ID4+ID4+ID4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID4+ID4+ID5Gcm9tOiBWaWxsZSBT eXJqw6Rsw6QgW21haWx0bzp2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbV0KPiA+PiA+PiA+ U2VudDogRnJpZGF5LCBEZWNlbWJlciAyMiwgMjAxNyA5OjQzIFBNCj4gPj4gPj4gPlRvOiBTaGFu a2FyLCBVbWEgPHVtYS5zaGFua2FyQGludGVsLmNvbT4KPiA+PiA+PiA+Q2M6IGludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmc7IExpbiwgSm9obnNvbgo+ID4+ID4+ID48am9obnNvbi5saW5A aW50ZWwuY29tPjsgU3lyamFsYSwgVmlsbGUgPHZpbGxlLnN5cmphbGFAaW50ZWwuY29tPjsKPiA+ PiA+PiA+TGFua2hvcnN0LCBNYWFydGVuIDxtYWFydGVuLmxhbmtob3JzdEBpbnRlbC5jb20+Cj4g Pj4gPj4gPlN1YmplY3Q6IFJlOiBbSW50ZWwtZ2Z4XSBbUEFUQ0hdIGRybS9pOTE1OiBGaXggTGlt aXRlZCBSYW5nZSBDb2xvcgo+ID4+ID4+ID5IYW5kbGluZwo+ID4+ID4+ID4KPiA+PiA+PiA+T24g RnJpLCBEZWMgMjIsIDIwMTcgYXQgMDU6NTQ6MzFQTSArMDIwMCwgVmlsbGUgU3lyasOkbMOkIHdy b3RlOgo+ID4+ID4+ID4+IE9uIEZyaSwgRGVjIDIyLCAyMDE3IGF0IDA4OjM0OjQ3UE0gKzA1MzAs IFVtYSBTaGFua2FyIHdyb3RlOgo+ID4+ID4+ID4+ID4gRnJvbTogSm9obnNvbiBMaW4gPGpvaG5z b24ubGluQGludGVsLmNvbT4KPiA+PiA+PiA+PiA+Cj4gPj4gPj4gPj4gPiBTb21lIHBhbmVscyBz dXBwb3J0IGxpbWl0ZWQgcmFuZ2Ugb3V0cHV0ICgxNi0yMzUpIGNvbXBhcmVkIHRvCj4gPj4gPj4g Pj4gPiBmdWxsIHJhbmdlIFJHQiB2YWx1ZXMgKDAtMjU1KS4gQWxzbyB1c2Vyc3BhY2UgY2FuIGNv bnRyb2wgdGhlCj4gPj4gPj4gPj4gPiBSR0IgcmFuZ2UgdXNpbmcgIkJyb2FkY2FzdCBSR0IiIHBy b3BlcnR5LiBDdXJyZW50bHkgdGhlIGNvZGUKPiA+PiA+PiA+PiA+IHRvIGhhbmRsZSBmdWxsIHJh bmdlIHRvIGxpbWl0ZWQgcmFuZ2UgaXMgYnJva2VuLiBUaGlzIHBhdGNoCj4gPj4gPj4gPj4gPiBm aXhlcyB0aGUgc2FtZSBieSBwcm9wZXJseSBzY2FsaW5nIGRvd24gYWxsIHRoZSBmdWxsIHJhbmdl Cj4gPj4gPj4gPj4gPiBjby1lZmZpY2llbnRzIHdpdGggbGltaXRlZCByYW5nZSBzY2FsaW5nIGZh Y3Rvci4KPiA+PiA+PiA+PiA+Cj4gPj4gPj4gPj4gPiBTaWduZWQtb2ZmLWJ5OiBKb2huc29uIExp biA8am9obnNvbi5saW5AaW50ZWwuY29tPgo+ID4+ID4+ID4+ID4gU2lnbmVkLW9mZi1ieTogVW1h IFNoYW5rYXIgPHVtYS5zaGFua2FyQGludGVsLmNvbT4KPiA+PiA+PiA+PiA+IC0tLQo+ID4+ID4+ ID4+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yLmMgfCAgIDE2ICsrKysrKysr KysrKy0tLS0KPiA+PiA+PiA+PiA+ICAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwg NCBkZWxldGlvbnMoLSkKPiA+PiA+PiA+PiA+Cj4gPj4gPj4gPj4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYwo+ID4+ID4+ID4+ID4gYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCj4gPj4gPj4gPj4gPiBpbmRleCBhYTY2ZTk1Li43Nzdj ZTI2IDEwMDY0NAo+ID4+ID4+ID4+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Y29sb3IuYwo+ID4+ID4+ID4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29s b3IuYwo+ID4+ID4+ID4+ID4gQEAgLTk0LDE2ICs5NCwyNCBAQCBzdGF0aWMgdm9pZCBjdG1fbXVs dF9ieV9saW1pdGVkKHVpbnQ2NF90Cj4gPj4gPj4gPj4gPiAqcmVzdWx0LAo+ID4+ID4+ID5pbnQ2 NF90ICppbnB1dCkKPiA+PiA+PiA+PiA+ICAJZm9yIChpID0gMDsgaSA8IDk7IGkrKykKPiA+PiA+ PiA+PiA+ICAJCXJlc3VsdFtpXSA9IDA7Cj4gPj4gPj4gPj4KPiA+PiA+PiA+PiBUaGlzIGNhbiBn by4KPiA+PiA+PiA+Pgo+ID4+ID4+ID4+ID4KPiA+PiA+PiA+PiA+IC0JZm9yIChpID0gMDsgaSA8 IDM7IGkrKykgewo+ID4+ID4+ID4+ID4gLQkJaW50NjRfdCB1c2VyX2NvZWZmID0gaW5wdXRbaSAq IDMgKyBpXTsKPiA+PiA+PiA+PiA+ICsJZm9yIChpID0gMDsgaSA8IDk7IGkrKykgewo+ID4+ID4+ ID4+ID4gKwkJaW50NjRfdCB1c2VyX2NvZWZmID0gaW5wdXRbaV07Cj4gPj4gPj4gPj4KPiA+PiA+ PiA+PiBUaGF0J3Mgbm90IGEgdHdvJ3MgY29tcGxlbWVudCBudW1iZXIgc28gc2hvdWxkIHByb2Jh Ymx5IGJlIHU2NC4KPiA+PiA+PiA+Pgo+ID4+ID4+ID4+ID4gIAkJdWludDY0X3QgbGltaXRlZF9j b2VmZiA9IENUTV9DT0VGRl9MSU1JVEVEX1JBTkdFCj4gPj4+IDI7Cj4gPj4gPj4gPj4gPiAgCQl1 aW50NjRfdCBhYnNfY29lZmYgPQo+ID5jbGFtcF92YWwoQ1RNX0NPRUZGX0FCUyh1c2VyX2NvZWZm KSwKPiA+PiA+PiA+PiA+ICAJCQkJCSAgICAgICAwLAo+ID4+ID4+ID4+ID4gIAkJCQkJICAgICAg IENUTV9DT0VGRl80XzAgLSAxKSA+PiAyOwo+ID4+ID4+ID4+Cj4gPj4gPj4gPj4gU2VlbXMgdG8g bWUgdGhhdCB3ZSBzaG91bGQgYmUgYWJsZSB0byBkcm9wIHRoZSA+PjIgZnJvbSB0aGUKPiA+PiA+ PiA+PiBsaW1pdGVkX2NvZWZmIHNpbmNlIGl0J3MgYWx3YXlzIDwgMS4wLCBtYWtlIGJvdGggb2Yg dGhlc2UgdTMyCj4gPj4gPj4gPj4gYW5kIHRoZW4gdXNlCj4gPj4gPj4gPj4gJ211bF91MzJfdTMy KCkgPj4gMzAnIHRvIGdldCB0aGUgYW5zd2VyLgo+ID4+ID4+ID4+Cj4gPj4gPj4gPj4gPgo+ID4+ ID4+ID4+ID4gLQkJcmVzdWx0W2kgKiAzICsgaV0gPSAobGltaXRlZF9jb2VmZiAqIGFic19jb2Vm ZikgPj4gMjc7Cj4gPj4gPj4gPj4gPiArCQkvKgo+ID4+ID4+ID4+ID4gKwkJICogQnkgc2NhbGlu ZyBldmVyeSBjby1lZmZpY2llbnQgd2l0aCBsaW1pdGVkIHJhbmdlICgyMzUtCj4gPjE2KQo+ID4+ ID4+ID4+ID4gKwkJICogdnMgZnVsbCByYW5nZSAoMC0yNTUpIHRoZSBmaW5hbCBvL3Agd2lsbCBi ZSBzY2FsZWQgZG93bgo+ID50bwo+ID4+ID4+ID4+ID4gKwkJICogZml0IGluIHRoZSBsaW1pdGVk IHJhbmdlIHN1cHBvcnRlZCBieSB0aGUgcGFuZWwuCj4gPj4gPj4gPj4gPiArCQkgKiBOZWVkIHRv IHNoaWZ0IHRoZSBtdWx0aXBsaWNhdGlvbiByZXN1bHQgYnkgMjggYXMgdGhlCj4gPmZsb2F0aW5n Cj4gPj4gPj4gPj4gPiArCQkgKiBjb3VudCBleHBlY3RlZCBpcyBvZiAzMmJpdHMsIG11bHRpcGxp Y2F0aW9uIGhlcmUgaXMgZG9uZQo+ID5pbgo+ID4+ID4+ID4+ID4gKwkJICogVTIuMzAgc28gcmVz dWx0IG5lZWQgdG8gYmUgcmlnaHQgc2hpZnRlZCBieSA2MC0zMiA9IDI4Cj4gPj4gPj4gPj4gPiAr CQkgKi8KPiA+PiA+PiA+PiA+ICsJCXJlc3VsdFtpXSA9IChsaW1pdGVkX2NvZWZmICogYWJzX2Nv ZWZmKSA+PiAyODsKPiA+PiA+PiA+PiA+ICAJCWlmIChDVE1fQ09FRkZfTkVHQVRJVkUodXNlcl9j b2VmZikpCj4gPj4gPj4gPj4KPiA+PiA+PiA+PiBBbmQgdGhpcyBjYW4gYmUgcmVwbGFjZWQgd2l0 aCBqdXN0Cj4gPj4gPj4gPj4KPiA+PiA+PiA+PiByZXN1bHRbaV0gfD0gdXNlcl9jb2VmZiAmIENU TV9DT0VGRl9TSUdOOwo+ID4+ID4+ID4+Cj4gPj4gPj4gPj4gdG8gZWxpbWluYXRlIHRoZSBzaWxs eSBicmFuY2guCj4gPj4gPj4gPgo+ID4+ID4+ID5JIHdvbmRlciBpZiB3ZSBjb3VsZCBhbHNvIGdl dCBzb21lIGlndHMgZm9yIHRoaXMgbGltaXRlZCByYW5nZSBzdHVmZi4KPiA+PiA+PiA+TWF5YmUg c29tZXRoaW5nIGxpa2U6Cj4gPj4gPj4gPjEuIGdyYWIgY3JjIGZyb20gYmxhY2svd2hpdGUgc2Ny ZWVuIHdpdGggbGltaXRlZCByYW5nZSAyLiBncmFiIGNkYwo+ID4+ID4+ID5mcm9tIGFsbW9zdCBi bGFjay93aGl0ZSBzY3JlZW4gd2l0aCBmdWxsIHJhbmdlIDMuIGNvbXBhcmUgdGhlIHR3bwo+ID4+ ID4+ID4KPiA+PiA+PiA+UmVwZWF0IHdpdGggYW4gaWRlbnRpdHkgY3NjIG1hdHJpeCBzZXQuCj4g Pj4gPj4gPgo+ID4+ID4+ID5Ob3Qgc3VyZSBpZiB3ZSBjYW4gZ2V0IHRoZSBjcmNzIHRvIG1hdGNo IGluIHRoZXNlIHR3byBjYXNlcyB0aG91Z2guCj4gPj4gPj4gPkhhcmQgdG8gc2F5IHdpdGhvdXQg dHJ5aW5nIGl0IG91dC4KPiA+PiA+PiA+Cj4gPj4gPj4KPiA+PiA+PiBIaSBWaWxsZSwKPiA+PiA+ PiBXZSB3aWxsIHRyeSB0aGlzIGFwcHJvYWNoIGFuZCB1cGRhdGUuIElkZWFsbHkgY3JjJ3Mgc2hv dWxkIG1hdGNoLAo+ID4+ID4+IHdpbGwgY29uZmlybSB0aGUgYmVoYXZpb3Igb24gaGFyZHdhcmUu Cj4gPj4gPgo+ID4+ID5JIHN1c3BlY3QgaXQncyBub3QgZ29pbmcgdG8gd29yayBvbiBzb21lIG9s ZGVyIHBsYXRmb3JtcyBiZWNhdXNlIHdlCj4gPj4gPnVzZSB0aGUgbWFnaWMgYml0IGluIHRoZSBw aXBlL3BvcnQgcmVnaXN0ZXIgdG8gZG8gdGhlIHJhbmdlCj4gPj4gPmNvbXByZXNzaW9uLiBUaGUg ZWZmZWN0IG9mIHRoYXQgYml0IG1heSBub3QgYmUgdmlzaWJsZSBpbiB0aGUgcGlwZSBjcmMuIEJ1 dAo+ID5zdGFydGluZyBmcm9tIGhzdyBpdCBzaG91bGQgYmUgb2suCj4gPj4gPgo+ID4+Cj4gPj4g SGkgVmlsbGUsCj4gPj4gV2UgdHJpZWQgdG8gdGVzdCB0aGlzIG9uIEdMSyBhbmQgdGhlIGNyYyBy ZXN1bHRzIGFyZSBub3QgbWF0Y2hpbmcuIFRyaWVkIGJlbG93Cj4gPnNjZW5hcmlvczoKPiA+PiAx LiBGbGlwIEZCIChmdWxsIHdoaXRlKXdpdGggQnJvYWRjYXN0IFJHQiBwcm9wZXJ0eSBzZXQgdG8g IkZ1bGwgUmFuZ2UiIGFuZCB0aGVuCj4gPndpdGggIkxpbWl0ZWQgUmFuZ2UiLgo+ID4+ICAgICAg V2l0aG91dCBhcHBseWluZy9jaGFuZ2luZyB0aGUgQ1RNLgo+ID4+IDIuIEZsaXAgRkIgKGZ1bGwg d2hpdGUpIHdpdGggQ1RNIHNldCBhcyB1bml0eSBhbmQsIG9uZSBmbGlwIHdpdGggIkZ1bGwgUmFu Z2UiIGFuZAo+ID5vbmUgd2l0aCAiTGltaXRlZCBSYW5nZSIuCj4gPj4KPiA+PiBJbiBib3RoIHRo ZSBjYXNlcywgY3JjIGlzIG5vdCBtYXRjaGluZy4gTm90IHN1cmUgaWYgdGhpcyBpcyBhbiBleHBl Y3RlZCBiZWhhdmlvci4KPiA+Cj4gPldlbGwsIGlmIHlvdSB3YW50IHRoZW0gdG8gbWF0Y2ggeW91 IG5lZWQgYSBmYiB3aXRoIDE2LDE2LDE2IGFuZAo+ID4yMzUsMjM1LDIzNSByZ2IgZGF0YSBmb3Ig dGhlIGZ1bGwgcmFuZ2UgdGVzdC4KPiA+Cj4gCj4gV2UgdHJpZWQgdG8gZ2l2ZSBpbnB1dCBhcyBs ciA9ICgoMS4wLzI1NSkqMjM1KSBpbiBvcmRlciB0byBzY2FsZSBkb3duIGFsbCBSR0IgdmFsdWVz IHRvIDIzNS4KPiAgICAgIGNvbG9yX3Qgd2hpdGVfbHJbXSA9IHsKPiAgICAgICAgICAgIHsgbHIs IGxyLCBsciB9LAo+ICAgICAgICAgICAgICAgIHsgbHIsIGxyLCBsciB9LAo+ICAgICAgICAgICAg ICAgIHsgbHIsIGxyLCBsciB9Cj4gICAgICAgIH07Cj4gCj4gV2UgZmxpcHBlZCB0aGlzIHdpdGgg RnVsbCBSYW5nZSBidXQgc3RpbGwgQ1JDIGRpZG4ndCBtYXRjaGVkIG9uIEdMSy4gSSBhbSBub3Qg c3VyZSBpZiBoL3cgaXMgbW9kaWZ5aW5nCj4gdGhlIGRhdGEgd3J0IEZ1bGwgUmFuZ2UgYW5kIExp bWl0ZWQgUmFuZ2UuCgpIbW0uIEkgc3VwcG9zZSB0aGVyZSBtYXkgYmUgdHdvIGZhY3RvcnMgaGVy ZTogdGhlIGNzYydzIGxpbWl0ZWQKcHJlY2lzaW9uLCBhbmQgdGhlIHBpcGUncyBpbnRlcm5hbGx5 IHVzaW5nIG1vcmUgdGhhbiA4YnBjLiBJIHRoaW5rCml0J3MgMTJicGMgaW50ZXJuYWxseSBhbHdh eXMuCgpMb29rcyBsaWtlIHRoZSBjc2Mgc2hvdWxkIGhhdmUgOSBiaXQgbWFudGlzc2EsIHNvIHRo ZSBjbG9zZXN0CnRvIDIxOS8yNTUgd2UncmUgZ29pbmcgdG8gZ2V0IGlzIDB4MWI3LiBTbyBhc3N1 bWluZyAxMmJwYyBpbnRlcm5hbApwcmVjaXNpb24gd2UnbGwgZ2V0IDB4ZmZmKjB4MWI3LzB4MjAw KzB4MTAwPTB4ZWI3LiBXaGljaCBhY3R1YWxseQpvdmVyc2hvb3RzIHRoZSAweGViMCBtYXggc3Bl Y2lmaWVkIGJ5IHRoZSBIRE1JIHNwZWMuIFNvIGxvb2tzIGxpa2UKd2Ugc2hvdWxkIHBlcmhhcHMg YmUgdXNpbmcgMjE5LzI1NiBhcyB0aGUgY29lZmZpY2llbnQgaW5zdGVhZCwgd2hpY2gKd291bGQg Z2l2ZSB1cyBhIGZpbmFsIHZhbHVlIG9mIDB4ZWFmLCB3aGljaCBpcyBvbmx5IG9uZSBvZmYgZnJv bSB0aGUKMHhlYjAuIEFuZCB0aGUgMHgxMDAgSSB1c2VkIGluIHRoZSBjYWxjdWxhdGlvbiBpcyBh bHNvIGJhc2VkIG9uCm9uIHRoZSBIRE1JIHNwZWMgYW5kIG1hdGNoZXMgMTYvMjU2IGluc3RlYWQg b2YgMTYvMjU1LCBzbyB0aGF0IHRvbwpzaG91bGQgYmUgY2hhbmdlZCBpbiB0aGUgY29kZS4KCkFu eXdheXMgZXZlbiB3aXRoIHRoZSBjb2VmZmljaWVudHMvcG9zdG9mZnNldCBmaXhlZCwgd2UnbGwg YmUgb25lCm9mZiBmcm9tIHRoZSBleHBlY3RlZCAxMmJwYyB2YWx1ZS4gQW5kIHByZXN1bWFibHkg aWYgd2UgdXNlIHRoZSBhCjhicGMgZnJhbWVidWZmZXIgd2UnbGwgb3ZlcnNob290IGFnYWluIHRv IDB4ZWJlIChhc3N1bWluZyB0aGUgaHcKZXhwYW5kcyB0aGUgcHJlY2lzaW9uIGluIHRoZSB3YXkg SSBleHBlY3QpLiBJZiB3ZSBmaWxsZWQgdGhlIGZiCndpdGggMHhlYSBpbnN0ZWFkIHdlJ2QgZ2V0 IDB4ZWFlLCB3aGljaCBpcyBvbmUgb2ZmIGZyb20gdGhlIGNzYwp2YWx1ZSwgc28gbm90IGdvb2Qg ZWl0aGVyLiBXaXRoIDEwYnBjIGZiIHdlIHNob3VsZCBiZSBhYmxlIHRvCm1hdGNoIHRoZSBjc2Mg b3V0cHV0IG9mIDB4ZWFmIGlmIHdlIGZpbGwgdGhlIGZiIHdpdGggMHgzYWIgaW5zdGVhZApvZiB0 aGUgY29ycmVjdCAweDNhYy4KCk9oIGFuZCB3ZSBzaG91bGQgYWN0dWFsbHkgaGF2ZSB0byBjb25z aWRlciB0aGUgcHJlY2lzaW9uIG9mIHRoZSBnYW1tYQpMVVQgYXMgd2VsbC4gQnkgZGVmYXVsdCB3 ZSB1c2UgdGhlIDhicGMgb25lIHdoaWNoIHByZXN1bWFibHkgd2lsbApjaG9wIG9mZiB0aGUgbG93 IGJpdHMgZnJvbSB0aGUgZGF0YS4gSG1tLiBBY3R1YWxseSB0aGF0IHNob3VsZCBtYWtlCnRoaW5n cyBtYXRjaCBldmVuIGlmIHdlIG92ZXJzaG9vdCB0aGUgdGFyZ2V0IHZhbHVlIGEgYml0LiBBcmUg eW91CmZyb2JiaW5nIHdpdGggdGhlIEdBTU1BX0xVVCBwcm9wZXJ0eSBpbiB5b3VyIHRlc3Q/CgpB bnl3YXkgaXQgc2VlbXMgdG8gbWUgdGhhdCB3ZSBzaG91bGQgY2hhbmdlIHRoZSBjc2MgcHJvZ3Jh bW1pbmcgdG8KdXNlIDIxOS8yNTYgYW5kIDE2LzI1NiB2YWx1ZXMgaW5zdGVhZCBvZiB0aGUgY3Vy cmVudCBvbmVzLiBXaGV0aGVyCnRoYXQgY2FuIGhlbHAgdXMgZ2V0IHRoZSBjcmMgdG8gbWF0Y2gg SSBkb24ndCByZWFsbHkga25vdy4KCj4gCj4gUmVnYXJkcywKPiBVbWEgU2hhbmthcgo+IAo+ID4+ IEJlbG93IGlzIHRoZSBJR1QgY29kZSBzbmlwcGV0IHVzZWQsIGZvciByZWZlcmVuY2U6Cj4gPj4K PiA+PiBzdGF0aWMgdm9pZCB0ZXN0X3BpcGVfbGltaXRlZF9yYW5nZV9jdG0oZGF0YV90ICpkYXRh LCBpZ3RfcGxhbmVfdAo+ID4+ICpwcmltYXJ5KSB7Cj4gPj4gICAgICAgICBjb2xvcl90IHdoaXRl W10gPSB7Cj4gPj4gICAgICAgICAgICAgICAgIHsgMS4wLCAxLjAsIDEuMCB9LAo+ID4+ICAgICAg ICAgICAgICAgICB7IDEuMCwgMS4wLCAxLjAgfSwKPiA+PiAgICAgICAgICAgICAgICAgeyAxLjAs IDEuMCwgMS4wIH0KPiA+PiAgICAgICAgIH07Cj4gPj4gICAgICAgICBjb2xvcl90IGJsYWNrW10g PSB7Cj4gPj4gICAgICAgICAgICAgICAgIHsgMC4wLCAwLjAsIDAuMCB9LAo+ID4+ICAgICAgICAg ICAgICAgICB7IDAuMCwgMC4wLCAwLjAgfSwKPiA+PiAgICAgICAgICAgICAgICAgeyAwLjAsIDAu MCwgMC4wIH0KPiA+PiAgICAgICAgIH07Cj4gPj4gICAgICAgICBkb3VibGUgY3RtW10gPSB7Cj4g Pj4gCTEuMCwgMC4wLCAwLjAsCj4gPj4gICAgICAgICAgICAgICAgIDAuMCwgMS4wLCAwLjAsCj4g Pj4gICAgICAgICAgICAgICAgIDAuMCwgMC4wLCAxLjAgfTsKPiA+PiAgICAgICAgIGRvdWJsZSAq ZGVnYW1tYV9saW5lYXIsICpnYW1tYV9saW5lYXI7Cj4gPj4gICAgICAgICBpZ3Rfb3V0cHV0X3Qg Km91dHB1dDsKPiA+PiAgICAgICAgIGJvb2wgaGFzX2Jyb2FkY2FzdF9yZ2Jfb3V0cHV0ID0gZmFs c2U7Cj4gPj4KPiA+PiAgICAgICAgIGRlZ2FtbWFfbGluZWFyID0gZ2VuZXJhdGVfdGFibGUoZGF0 YS0+ZGVnYW1tYV9sdXRfc2l6ZSwgMS4wKTsKPiA+PiAgICAgICAgIGdhbW1hX2xpbmVhciA9IGdl bmVyYXRlX3RhYmxlKGRhdGEtPmdhbW1hX2x1dF9zaXplLCAxLjApOwo+ID4+Cj4gPj4gICAgICAg ICBmb3JfZWFjaF92YWxpZF9vdXRwdXRfb25fcGlwZSgmZGF0YS0+ZGlzcGxheSwgcHJpbWFyeS0+ cGlwZS0+cGlwZSwKPiA+b3V0cHV0KSB7Cj4gPj4gICAgICAgICAgICAgICAgIGRybU1vZGVNb2Rl SW5mbyAqbW9kZTsKPiA+PiAgICAgICAgICAgICAgICAgc3RydWN0IGlndF9mYiBmYl9tb2Rlc2V0 LCBmYjsKPiA+PiAgICAgICAgICAgICAgICAgaWd0X2NyY190IGNyY19mdWxsLCBjcmNfbGltaXRl ZDsKPiA+PiAgICAgICAgICAgICAgICAgaW50IGZiX2lkLCBmYl9tb2Rlc2V0X2lkOwo+ID4+Cj4g Pj4gICAgICAgICAgICAgICAgIGlmICghaWd0X291dHB1dF9oYXNfcHJvcChvdXRwdXQsCj4gPklH VF9DT05ORUNUT1JfQlJPQURDQVNUX1JHQikpCj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAg Y29udGludWU7Cj4gPj4gICAgICAgICAgICAgICAgIGhhc19icm9hZGNhc3RfcmdiX291dHB1dCA9 IHRydWU7Cj4gPj4gICAgICAgICAgICAgICAgIGlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBw cmltYXJ5LT5waXBlLT5waXBlKTsKPiA+PiAgICAgICAgICAgICAgICAgbW9kZSA9IGlndF9vdXRw dXRfZ2V0X21vZGUob3V0cHV0KTsKPiA+Pgo+ID4+ICAgICAgICAgICAgICAgICAvKiBDcmVhdGUg YSBmcmFtZWJ1ZmZlciBhdCB0aGUgc2l6ZSBvZiB0aGUgb3V0cHV0LiAqLwo+ID4+ICAgICAgICAg ICAgICAgICBmYl9pZCA9IGlndF9jcmVhdGVfZmIoZGF0YS0+ZHJtX2ZkLCBtb2RlLT5oZGlzcGxh eSwgIG1vZGUtPnZkaXNwbGF5LAo+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRFJNX0ZPUk1BVF9YUkdCODg4OCwKPiA+TE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwg ICZmYik7Cj4gPj4gICAgICAgICAgICAgICAgIGlndF9hc3NlcnQoZmJfaWQpOwo+ID4+Cj4gPj4g ICAgICAgICAgICAgICAgIGZiX21vZGVzZXRfaWQgPSBpZ3RfY3JlYXRlX2ZiKGRhdGEtPmRybV9m ZCwgbW9kZS0+aGRpc3BsYXksCj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG1vZGUtPnZkaXNwbGF5LCBEUk1fRk9STUFUX1hSR0I4ODg4LAo+ID4+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMT0NBTF9EUk1fRk9S TUFUX01PRF9OT05FLCAgJmZiX21vZGVzZXQpOwo+ID4+ICAgICAgICAgICAgICAgICBpZ3RfYXNz ZXJ0KGZiX21vZGVzZXRfaWQpOwo+ID4+ICAgICAgICAgICAgICAgICBpZ3RfcGxhbmVfc2V0X2Zi KHByaW1hcnksICZmYl9tb2Rlc2V0KTsKPiA+Pgo+ID4+ICAgICAgICAgICAgICAgICBzZXRfZGVn YW1tYShkYXRhLCBwcmltYXJ5LT5waXBlLCBkZWdhbW1hX2xpbmVhcik7Cj4gPj4gICAgICAgICAg ICAgICAgIHNldF9nYW1tYShkYXRhLCBwcmltYXJ5LT5waXBlLCBnYW1tYV9saW5lYXIpOwo+ID4+ ICAgICAgICAgICAgICAgICBzZXRfY3RtKHByaW1hcnktPnBpcGUsIGN0bSk7Cj4gPj4KPiA+PiAg ICAgICAgICAgICAgICAgaWd0X291dHB1dF9zZXRfcHJvcF92YWx1ZShvdXRwdXQsCj4gPklHVF9D T05ORUNUT1JfQlJPQURDQVNUX1JHQiwgQlJPQURDQVNUX1JHQl9GVUxMKTsKPiA+PiAgICAgICAg ICAgICAgICAgcGFpbnRfcmVjdGFuZ2xlcyhkYXRhLCBtb2RlLCBibGFjaywgJmZiKTsKPiA+PiAg ICAgICAgICAgICAgICAgaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCAmZmIpOwo+ID4+ICAgICAg ICAgICAgICAgICBpZ3RfZGlzcGxheV9jb21taXQoJmRhdGEtPmRpc3BsYXkpOwo+ID4+ICAgICAg ICAgICAgICAgICBpZ3Rfd2FpdF9mb3JfdmJsYW5rKGRhdGEtPmRybV9mZCwgcHJpbWFyeS0+cGlw ZS0+cGlwZSk7Cj4gPj4gICAgICAgICAgICAgICAgIGlndF9waXBlX2NyY19jb2xsZWN0X2NyYyhk YXRhLT5waXBlX2NyYywgJmNyY19mdWxsKTsKPiA+Pgo+ID4+ICAgICAgICAgICAgICAgICAvKiBT ZXQgdGhlIG91dHB1dCBpbnRvIGxpbWl0ZWQgcmFuZ2UuICovCj4gPj4gICAgICAgICAgICAgICAg IGlndF9vdXRwdXRfc2V0X3Byb3BfdmFsdWUob3V0cHV0LAo+ID5JR1RfQ09OTkVDVE9SX0JST0FE Q0FTVF9SR0IsIEJST0FEQ0FTVF9SR0JfMTZfMjM1KTsKPiA+PiAgICAgICAgICAgICAgICAgcGFp bnRfcmVjdGFuZ2xlcyhkYXRhLCBtb2RlLCBibGFjaywgJmZiKTsKPiA+PiAgICAgICAgICAgICAg ICAgaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCAmZmIpOwo+ID4+ICAgICAgICAgICAgICAgICBp Z3RfZGlzcGxheV9jb21taXQoJmRhdGEtPmRpc3BsYXkpOwo+ID4+ICAgICAgICAgICAgICAgICBp Z3Rfd2FpdF9mb3JfdmJsYW5rKGRhdGEtPmRybV9mZCwgcHJpbWFyeS0+cGlwZS0+cGlwZSk7Cj4g Pj4gICAgICAgICAgICAgICAgIGlndF9waXBlX2NyY19jb2xsZWN0X2NyYyhkYXRhLT5waXBlX2Ny YywKPiA+PiAmY3JjX2xpbWl0ZWQpOwo+ID4+Cj4gPj4gICAgICAgICAgICAgICAgIGlndF9hc3Nl cnRfY3JjX2VxdWFsKCZjcmNfZnVsbCwgJmNyY19saW1pdGVkKTsKPiA+Pgo+ID4+IFJlZ2FyZHMs Cj4gPj4gVW1hIFNoYW5rYXIKPiA+PiA+PiA+Pgo+ID4+ID4+ID4+Cj4gPj4gPj4gPj4gPiAtCQkJ cmVzdWx0W2kgKiAzICsgaV0gfD0gQ1RNX0NPRUZGX1NJR047Cj4gPj4gPj4gPj4gPiArCQkJcmVz dWx0W2ldIHw9IENUTV9DT0VGRl9TSUdOOwo+ID4+ID4+ID4+ID4gIAl9Cj4gPj4gPj4gPj4gPiAg fQo+ID4+ID4+ID4+ID4KPiA+PiA+PiA+PiA+IC0tCj4gPj4gPj4gPj4gPiAxLjcuOS41Cj4gPj4g Pj4gPj4gPgo+ID4+ID4+ID4+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KPiA+PiA+PiA+PiA+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiA+PiA+PiA+ PiA+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+PiA+PiA+PiA+IGh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4gPj4gPj4g Pj4KPiA+PiA+PiA+PiAtLQo+ID4+ID4+ID4+IFZpbGxlIFN5cmrDpGzDpAo+ID4+ID4+ID4+IElu dGVsIE9UQwo+ID4+ID4+ID4KPiA+PiA+PiA+LS0KPiA+PiA+PiA+VmlsbGUgU3lyasOkbMOkCj4g Pj4gPj4gPkludGVsIE9UQwo+ID4+ID4KPiA+PiA+LS0KPiA+PiA+VmlsbGUgU3lyasOkbMOkCj4g Pj4gPkludGVsIE9UQwo+ID4KPiA+LS0KPiA+VmlsbGUgU3lyasOkbMOkCj4gPkludGVsIE9UQwoK LS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==