From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH xf86-video-intel v5] sna: Added AYUV format support for textured and sprite video adapters. Date: Thu, 1 Nov 2018 19:39:39 +0200 Message-ID: <20181101173939.GI9144@intel.com> References: <20181012150023.20100-1-stanislav.lisovskiy@intel.com> <20181015073835.11833-1-stanislav.lisovskiy@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4E6AC6E451 for ; Thu, 1 Nov 2018 17:39:43 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20181015073835.11833-1-stanislav.lisovskiy@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Stanislav Lisovskiy Cc: intel-gfx@lists.freedesktop.org, ville.syrjala@intel.com, martin.peres@intel.com, juha-pekka.heikkila@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBPY3QgMTUsIDIwMTggYXQgMTA6Mzg6MzVBTSArMDMwMCwgU3RhbmlzbGF2IExpc292 c2tpeSB3cm90ZToKPiB2MjogUmVuYW1lZCBEUk1fRk9STUFUX1hZVVYgdG8gRFJNX0ZPUk1BVF9Y WVVWODg4OC4KPiAgICAgQWRkZWQgY29tbWVudCBhYm91dCBBWVVWIGJ5dGUgb3JkZXJpbmcgaW4g R3N0cmVhbWVyLgo+IAo+IHYzOiBSZW1vdmVkIHNuYV9jb21wb3NpdGVfb3AgZmxhZ3MgcmVsYXRl ZCBjaGFuZ2UgdG8gdGhlIHNlcGFyYXRlIHBhdGNoLgo+IAo+IHY0OiBGaXhlZCByZXZpZXcgY29t bWVudHMsIGRvbmUgY29kZSByZWZhY3RvcmluZwo+IAo+IHY1OiBGaXhlZCBmb2xsb3dpbmcgcmV2 aWV3IGNvbW1lbnRzOgo+ICAgICAtIEZpeGVkIGNvbW1lbnQgaW4gc2hhZGVyIGNvZGUgZm9yIGF5 dXYga2VybmVsLgo+ICAgICAtIEZpeGVkIG5hbWluZyB0byBWSURFT19BWVVWX0JUNjAxL0JUNzA5 IGZvciBheXV2IGtlcm5lbHMuCj4gICAgIC0gUmVtb3ZlZCBkdXBsaWNhdGUgZ2VuOV9rZXJuZWwg cGFyYW1ldGVyLCBsZWZ0IGZyb20gcHJldmlvdXMgcGF0Y2hlcwo+ICAgICAtIEFkZGVkIGNvbG9y c3BhY2UgaGFuZGxpbmcgZm9yIG5ldyBBWVVWIGtlcm5lbAo+ICAgICAtIEZpeGVkIG5hbWluZyBv ZiBzbmFfY29weV9wYWNrZWRfZGF0YV9heXV2IHRvIHNuYV9jb3B5X2F5dXZfZGF0YQo+ICAgICAt IFN0YXJ0ZWQgdXNpbmcgc3RhbmRhcmQgYnN3YXBfMzIgZnVuY3Rpb24gZm9yIGJ5dGUgc3dhcHBp bmcgaW4gc25hX2NvcHlfYXl1dl9kYXRhCj4gICAgIC0gUmVtb3ZlZCByZWR1bmRhbnQgY29kZSBp biBzbmFfY29weV9heXV2X2RhdGEgc28gdGhhdCBpdCBsb29rcyBtb3JlIG5lYXQKPiAgICAgLSBG aXhlZCBYVklNQUdFX0FZVVYgc3RydWN0dXJlIGluaXRpYWxpemF0aW9uIHRvIGNvbnRhaW4gcHJv cGVyIGJ5dGUgc2VxdWVuY2UgZm9yIEdTVAo+ICAgICAtIEZpeGVkIGJvZ3VzIGNvbW1lbnQgYWJv dXQgc3Vic2FtcGxpbmcgZm9yIERSTV9GT1JNQVRfWFlVVjg4ODgKPiAgICAgLSBGaXhlZCBBWVVW IGFkdmVydGlzZW1lbnQgZm9yIGFsbCBwbGF0Zm9ybXMKPiAgICAgLSBSZW1vdmVkIHVubmVjZXNz YXJ5IFJHQjg4OCBkZWNsYXJhdGlvbi4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBTdGFuaXNsYXYgTGlz b3Zza2l5IDxzdGFuaXNsYXYubGlzb3Zza2l5QGludGVsLmNvbT4KPiAtLS0KPiAgc3JjL3JlbmRl cl9wcm9ncmFtL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgIHwgICAyICsKPiAgLi4uL2V4YV93 bV9zcmNfc2FtcGxlX2FyZ2JfYXl1di5nOGEgICAgICAgICAgIHwgIDY2ICsrKysrKysrKysKPiAg Li4uL2V4YV93bV9zcmNfc2FtcGxlX2FyZ2JfYXl1di5nOGIgICAgICAgICAgIHwgICA2ICsKPiAg c3JjL3NuYS9nZW45X3JlbmRlci5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI0ICsrKy0K PiAgc3JjL3NuYS9zbmFfcmVuZGVyLmggICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzICsK PiAgc3JjL3NuYS9zbmFfdmlkZW8uYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTE3ICsr KysrKysrKysrKysrKysrKwo+ICBzcmMvc25hL3NuYV92aWRlby5oICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgMjAgKysrCj4gIHNyYy9zbmEvc25hX3ZpZGVvX3Nwcml0ZS5jICAgICAgICAg ICAgICAgICAgICB8ICAyMiArKystCj4gIHNyYy9zbmEvc25hX3ZpZGVvX3RleHR1cmVkLmMgICAg ICAgICAgICAgICAgICB8ICAgNyArKwo+ICA5IGZpbGVzIGNoYW5nZWQsIDI2MiBpbnNlcnRpb25z KCspLCA1IGRlbGV0aW9ucygtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3JlbmRlcl9wcm9n cmFtL2V4YV93bV9zcmNfc2FtcGxlX2FyZ2JfYXl1di5nOGEKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy9yZW5kZXJfcHJvZ3JhbS9leGFfd21fc3JjX3NhbXBsZV9hcmdiX2F5dXYuZzhiCj4gCj4g ZGlmZiAtLWdpdCBhL3NyYy9yZW5kZXJfcHJvZ3JhbS9NYWtlZmlsZS5hbSBiL3NyYy9yZW5kZXJf cHJvZ3JhbS9NYWtlZmlsZS5hbQo+IGluZGV4IGRjNTgxMzhmLi5lMzVmZmE1MiAxMDA2NDQKPiAt LS0gYS9zcmMvcmVuZGVyX3Byb2dyYW0vTWFrZWZpbGUuYW0KPiArKysgYi9zcmMvcmVuZGVyX3By b2dyYW0vTWFrZWZpbGUuYW0KPiBAQCAtMTk2LDYgKzE5Niw3IEBAIElOVEVMX0c3QiA9CQkJCVwK PiAgSU5URUxfRzhBID0JCQkJXAo+ICAJZXhhX3dtX3NyY19hZmZpbmUuZzhhIAkJXAo+ICAJZXhh X3dtX3NyY19zYW1wbGVfYXJnYi5nOGEgCVwKPiArCWV4YV93bV9zcmNfc2FtcGxlX2FyZ2JfYXl1 di5nOGEgXAo+ICAJZXhhX3dtX3NyY19zYW1wbGVfbnYxMi5nOGEgCVwKPiAgCWV4YV93bV9zcmNf c2FtcGxlX3BsYW5hci5nOGEgCVwKPiAgCWV4YV93bV93cml0ZS5nOGEgCQlcCj4gQEAgLTIwNSw2 ICsyMDYsNyBAQCBJTlRFTF9HOEEgPQkJCQlcCj4gIAo+ICBJTlRFTF9HOEIgPQkJCQlcCj4gIAll eGFfd21fc3JjX2FmZmluZS5nOGIgCQlcCj4gKwlleGFfd21fc3JjX3NhbXBsZV9hcmdiX2F5dXYu ZzhiIFwKPiAgCWV4YV93bV9zcmNfc2FtcGxlX2FyZ2IuZzhiIAlcCj4gIAlleGFfd21fc3JjX3Nh bXBsZV9udjEyLmc4YiAJXAo+ICAJZXhhX3dtX3NyY19zYW1wbGVfcGxhbmFyLmc4YiAJXAo+IGRp ZmYgLS1naXQgYS9zcmMvcmVuZGVyX3Byb2dyYW0vZXhhX3dtX3NyY19zYW1wbGVfYXJnYl9heXV2 Lmc4YSBiL3NyYy9yZW5kZXJfcHJvZ3JhbS9leGFfd21fc3JjX3NhbXBsZV9hcmdiX2F5dXYuZzhh Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uMTZjZDU0YzYKPiAtLS0g L2Rldi9udWxsCj4gKysrIGIvc3JjL3JlbmRlcl9wcm9ncmFtL2V4YV93bV9zcmNfc2FtcGxlX2Fy Z2JfYXl1di5nOGEKPiBAQCAtMCwwICsxLDY2IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAy MDA2IEludGVsIENvcnBvcmF0aW9uCj4gKyAqCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gKyAqIGNv cHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0 aGUgIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiArICogdGhlIHJpZ2h0cyB0 byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu c2UsCj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJt aXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8g c28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUg YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVk aW5nIHRoZSBuZXh0Cj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNv cGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiArICogU29mdHdhcmUuCj4gKyAq Cj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZ IE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8g RVZFTlQgU0hBTEwKPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElB QkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVU SEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcK PiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwo+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gKyAqCj4g KyAqIEF1dGhvcnM6Cj4gKyAqICAgIFdhbmcgWmhlbnl1IDx6aGVueXUuei53YW5nQGludGVsLmNv bT4KPiArICogICAgS2VpdGggUGFja2FyZCA8a2VpdGhwQGtlaXRocC5jb20+Cj4gKyAqLwo+ICsK PiArLyogU2FtcGxlIHRoZSBzcmMgc3VyZmFjZSAqLwo+ICsKPiAraW5jbHVkZShgZXhhX3dtLmc0 aScpCj4gKwo+ICt1bmRlZmluZShgc3JjX21zZycpCj4gK3VuZGVmaW5lKGBzcmNfbXNnX2luZCcp Cj4gKwo+ICtkZWZpbmUoYHNyY19tc2cnLCAgICAgICBgZzY1JykKPiArZGVmaW5lKGBzcmNfbXNn X2luZCcsICAgYDY1JykKPiArCj4gKy8qIHByZXBhcmUgc2FtcGxlciByZWFkIGJhY2sgZ1ggcmVn aXN0ZXIsIHdoaWNoIHdvdWxkIGJlIHdyaXR0ZW4gYmFjayB0byBvdXRwdXQgKi8KPiArCj4gKy8q IHVzZSBzaW1kMTYgc2FtcGxlciwgcGFyYW0gMCBpcyB1LCBwYXJhbSAxIGlzIHYuICovCj4gKy8q ICdwYXlsb2FkJyBsb2FkaW5nLCBhc3N1bWluZyB0ZXggY29vcmQgc3RhcnQgZnJvbSBnNCAqLwo+ ICsKPiArLyogbG9hZCBhcmdiICovCj4gK21vdiAoMSkgZzAuODwxPlVECTB4MDAwMDAwMDBVRCB7 IGFsaWduMSBtYXNrX2Rpc2FibGUgfTsKPiArbW92ICg4KSBzcmNfbXNnPDE+VUQgZzA8OCw4LDE+ VUQgeyBhbGlnbjEgfTsgLyogY29weSB0byBtc2cgc3RhcnQgcmVnKi8KPiArCj4gKy8qIHNyY19t c2cgd2lsbCBiZSBjb3BpZWQgd2l0aCBnMCwgYXMgaXQgY29udGFpbnMgc2VuZCBkZXNjICovCj4g Ky8qIGVtaXQgc2FtcGxlciAnc2VuZCcgY21kICovCj4gK3NlbmQgKDE2KSBzcmNfbXNnX2luZAkv KiBtc2cgcmVnIGluZGV4ICovCj4gKwlzcmNfc2FtcGxlX2Jhc2U8MT5VVyAvKiByZWFkYmFjayAq Lwo+ICsJbnVsbAo+ICsJc2FtcGxlciAoMSwwLEYpCS8qIHNhbXBsZXIgbWVzc2FnZSBkZXNjcmlw dGlvbiwgKGJpbmRpbmdfdGFibGUsc2FtcGxlcl9pbmRleCxkYXRhdHlwZSkKPiArCQkJCS8qIGhl cmUoc3JjLT5kc3QpIHdlIHNob3VsZCB1c2Ugc3JjX3NhbXBsZXIgYW5kIHNyY19zdXJmYWNlICov Cj4gKwltbGVuIDUgcmxlbiA4IHsgYWxpZ24xIH07ICAgLyogcmVxdWlyZWQgbWVzc2FnZSBsZW4g NSwgcmVhZGJhY2sgbGVuIDggKi8KPiArCj4gKwo+ICsvKgo+ICsgKiBIYXZlIHRvIGNoYW5nZSBi eXRlcyBvcmRlciwgYmVjYXVzZSB0aGUgb25seQo+ICsgKiBwbGF5ZXIgd2hpY2ggc3VwcG9ydHMg QVlVViBmb3JtYXQgY3VycmVudGx5IGlzCj4gKyAqIEdzdHJlYW1lciBhbmQgaXQgc3VwcG9ydHMg aW4gYmFkIHdheSwgZXZlbiB0aG91Z2gKPiArICogc3BlYyBzYXlzIE1TQjpBWVVWLCB3ZSBnZXQg dGhlIGJ5dGVzIG9wcG9zaXRlIHdheS4KPiArICovCj4gK21vdiAoMTYpIHNyY19zYW1wbGVfYjwx PlVEIHNyY19zYW1wbGVfcjwxPlVEICB7IGFsaWduMSB9Owo+ICttb3YgKDE2KSBzcmNfc2FtcGxl X3I8MT5VRCBzcmNfc2FtcGxlX2E8MT5VRCAgeyBhbGlnbjEgfTsKPiArbW92ICgxNikgc3JjX3Nh bXBsZV9hPDE+RiAxLjBGOwo+ICsKPiBkaWZmIC0tZ2l0IGEvc3JjL3JlbmRlcl9wcm9ncmFtL2V4 YV93bV9zcmNfc2FtcGxlX2FyZ2JfYXl1di5nOGIgYi9zcmMvcmVuZGVyX3Byb2dyYW0vZXhhX3dt X3NyY19zYW1wbGVfYXJnYl9heXV2Lmc4Ygo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXgg MDAwMDAwMDAuLjRmNDM5MTQxCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3NyYy9yZW5kZXJfcHJv Z3JhbS9leGFfd21fc3JjX3NhbXBsZV9hcmdiX2F5dXYuZzhiCj4gQEAgLTAsMCArMSw2IEBACj4g KyAgIHsgMHgwMDAwMDAwMSwgMHgyMDA4MDYwYywgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCB9LAo+ ICsgICB7IDB4MDA2MDAwMDEsIDB4MjgyMDAyMDgsIDB4MDA4ZDAwMDAsIDB4MDAwMDAwMDAgfSwK PiArICAgeyAweDAyODAwMDMxLCAweDIxYzAwYTQ4LCAweDA2MDAwODIwLCAweDBhOGMwMDAxIH0s Cj4gKyAgIHsgMHgwMDgwMDAwMSwgMHgyMjQwMDIwOCwgMHgwMDIwMDFjMCwgMHgwMDAwMDAwMCB9 LAo+ICsgICB7IDB4MDA4MDAwMDEsIDB4MjFjMDAyMDgsIDB4MDAyMDAyODAsIDB4MDAwMDAwMDAg fSwKPiArICAgeyAweDAwODAwMDAxLCAweDIyODAzZWU4LCAweDM4MDAwMDAwLCAweDNmODAwMDAw IH0sCj4gZGlmZiAtLWdpdCBhL3NyYy9zbmEvZ2VuOV9yZW5kZXIuYyBiL3NyYy9zbmEvZ2VuOV9y ZW5kZXIuYwo+IGluZGV4IGViMjJiNjQyLi5jMmM0NWUxZSAxMDA2NDQKPiAtLS0gYS9zcmMvc25h L2dlbjlfcmVuZGVyLmMKPiArKysgYi9zcmMvc25hL2dlbjlfcmVuZGVyLmMKPiBAQCAtMTI5LDYg KzEyOSwyMCBAQCBzdGF0aWMgY29uc3QgdWludDMyX3QgcHNfa2VybmVsX3BsYW5hcl9idDcwOVtd WzRdID0gewo+ICAjaW5jbHVkZSAiZXhhX3dtX3dyaXRlLmc4YiIKPiAgfTsKPiAgCj4gK3N0YXRp YyBjb25zdCB1aW50MzJfdCBwc19rZXJuZWxfYXl1dl9idDYwMVtdWzRdID0gewo+ICsjaW5jbHVk ZSAiZXhhX3dtX3NyY19hZmZpbmUuZzhiIgo+ICsjaW5jbHVkZSAiZXhhX3dtX3NyY19zYW1wbGVf YXJnYl9heXV2Lmc4YiIKPiArI2luY2x1ZGUgImV4YV93bV95dXZfcmdiX2J0NjAxLmc4YiIKPiAr I2luY2x1ZGUgImV4YV93bV93cml0ZS5nOGIiCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3QgdWlu dDMyX3QgcHNfa2VybmVsX2F5dXZfYnQ3MDlbXVs0XSA9IHsKPiArI2luY2x1ZGUgImV4YV93bV9z cmNfYWZmaW5lLmc4YiIKPiArI2luY2x1ZGUgImV4YV93bV9zcmNfc2FtcGxlX2FyZ2JfYXl1di5n OGIiCj4gKyNpbmNsdWRlICJleGFfd21feXV2X3JnYl9idDcwOS5nOGIiCj4gKyNpbmNsdWRlICJl eGFfd21fd3JpdGUuZzhiIgo+ICt9Owo+ICsKPiAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHBzX2tl cm5lbF9udjEyX2J0NzA5W11bNF0gPSB7Cj4gICNpbmNsdWRlICJleGFfd21fc3JjX2FmZmluZS5n OGIiCj4gICNpbmNsdWRlICJleGFfd21fc3JjX3NhbXBsZV9udjEyLmc4YiIKPiBAQCAtMTc3LDYg KzE5MSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgd21fa2VybmVsX2luZm8gewo+ICAJS0VSTkVM KFZJREVPX1BMQU5BUl9CVDcwOSwgcHNfa2VybmVsX3BsYW5hcl9idDcwOSwgNyksCj4gIAlLRVJO RUwoVklERU9fTlYxMl9CVDcwOSwgcHNfa2VybmVsX252MTJfYnQ3MDksIDcpLAo+ICAJS0VSTkVM KFZJREVPX1BBQ0tFRF9CVDcwOSwgcHNfa2VybmVsX3BhY2tlZF9idDcwOSwgMiksCj4gKwlLRVJO RUwoVklERU9fQVlVVl9CVDYwMSwgcHNfa2VybmVsX2F5dXZfYnQ2MDEsIDIpLAo+ICsJS0VSTkVM KFZJREVPX0FZVVZfQlQ3MDksIHBzX2tlcm5lbF9heXV2X2J0NzA5LCAyKSwKPiAgCUtFUk5FTChW SURFT19SR0IsIHBzX2tlcm5lbF9yZ2IsIDIpLAo+ICAjZW5kaWYKPiAgfTsKPiBAQCAtMjU1Miw3 ICsyNTY4LDYgQEAgZ2VuOV9yZW5kZXJfY29tcG9zaXRlKHN0cnVjdCBzbmEgKnNuYSwKPiAgCQkJ CQkJCSAgICAgdG1wLT5tYXNrLmJvICE9IE5VTEwsCj4gIAkJCQkJCQkgICAgIHRtcC0+aGFzX2Nv bXBvbmVudF9hbHBoYSwKPiAgCQkJCQkJCSAgICAgdG1wLT5pc19hZmZpbmUpOwo+IC0KPiAgCXRt cC0+Ymx0ICAgPSBnZW45X3JlbmRlcl9jb21wb3NpdGVfYmx0Owo+ICAJdG1wLT5ib3ggICA9IGdl bjlfcmVuZGVyX2NvbXBvc2l0ZV9ib3g7Cj4gIAl0bXAtPmJveGVzID0gZ2VuOV9yZW5kZXJfY29t cG9zaXRlX2JveGVzX19ibHQ7Cj4gQEAgLTM4NTMsNiArMzg2OCw4IEBAIHN0YXRpYyB2b2lkIGdl bjlfZW1pdF92aWRlb19zdGF0ZShzdHJ1Y3Qgc25hICpzbmEsCj4gIAkJCXNyY19zdXJmX2Zvcm1h dFswXSA9IFNVUkZBQ0VGT1JNQVRfQjhHOFI4WDhfVU5PUk07Cj4gIAkJZWxzZSBpZiAoZnJhbWUt PmlkID09IEZPVVJDQ19VWVZZKQo+ICAJCQlzcmNfc3VyZl9mb3JtYXRbMF0gPSBTVVJGQUNFRk9S TUFUX1lDUkNCX1NXQVBZOwo+ICsJCWVsc2UgaWYgKGlzX2F5dXZfZm91cmNjKGZyYW1lLT5pZCkp Cj4gKwkJCXNyY19zdXJmX2Zvcm1hdFswXSA9IFNVUkZBQ0VGT1JNQVRfQjhHOFI4QThfVU5PUk07 CgpZb3UgaWdub3JlIHRoZSBhbHBoYSBpbiB0aGUgc2hhZGVyLCBzbyBtaWdodCBhcyB3ZWxsIHVz ZSBCOEc4UjhYOF9VTk9STSBmb3IKdGhpcyBvbmUgYXMgd2VsbC4KCj4gIAkJZWxzZQo+ICAJCQlz cmNfc3VyZl9mb3JtYXRbMF0gPSBTVVJGQUNFRk9STUFUX1lDUkNCX05PUk1BTDsKPiAgCj4gQEAg LTM5MDMsNiArMzkyMCwxMSBAQCBzdGF0aWMgdW5zaWduZWQgc2VsZWN0X3ZpZGVvX2tlcm5lbChj b25zdCBzdHJ1Y3Qgc25hX3ZpZGVvICp2aWRlbywKPiAgCWNhc2UgRk9VUkNDX1JHQjU2NToKPiAg CQlyZXR1cm4gR0VOOV9XTV9LRVJORUxfVklERU9fUkdCOwo+ICAKPiArCWNhc2UgRk9VUkNDX0FZ VVY6Cj4gKwkJcmV0dXJuIHZpZGVvLT5jb2xvcnNwYWNlID8KPiArCQkJR0VOOV9XTV9LRVJORUxf VklERU9fQVlVVl9CVDcwOSA6Cj4gKwkJCUdFTjlfV01fS0VSTkVMX1ZJREVPX0FZVVZfQlQ2MDE7 Cj4gKwo+ICAJZGVmYXVsdDoKPiAgCQlyZXR1cm4gdmlkZW8tPmNvbG9yc3BhY2UgPwo+ICAJCQlH RU45X1dNX0tFUk5FTF9WSURFT19QQUNLRURfQlQ3MDkgOgo+IGRpZmYgLS1naXQgYS9zcmMvc25h L3NuYV9yZW5kZXIuaCBiL3NyYy9zbmEvc25hX3JlbmRlci5oCj4gaW5kZXggYTRlNWI1NmEuLjg5 MWZjOTA1IDEwMDY0NAo+IC0tLSBhL3NyYy9zbmEvc25hX3JlbmRlci5oCj4gKysrIGIvc3JjL3Nu YS9zbmFfcmVuZGVyLmgKPiBAQCAtNjE3LDYgKzYxNyw5IEBAIGVudW0gewo+ICAJR0VOOV9XTV9L RVJORUxfVklERU9fTlYxMl9CVDcwOSwKPiAgCUdFTjlfV01fS0VSTkVMX1ZJREVPX1BBQ0tFRF9C VDcwOSwKPiAgCj4gKwlHRU45X1dNX0tFUk5FTF9WSURFT19BWVVWX0JUNjAxLAo+ICsJR0VOOV9X TV9LRVJORUxfVklERU9fQVlVVl9CVDcwOSwKPiArCj4gIAlHRU45X1dNX0tFUk5FTF9WSURFT19S R0IsCj4gIAlHRU45X1dNX0tFUk5FTF9DT1VOVAo+ICB9Owo+IGRpZmYgLS1naXQgYS9zcmMvc25h L3NuYV92aWRlby5jIGIvc3JjL3NuYS9zbmFfdmlkZW8uYwo+IGluZGV4IDU1NDA1ZjgxLi43NWJk YzdkMCAxMDA2NDQKPiAtLS0gYS9zcmMvc25hL3NuYV92aWRlby5jCj4gKysrIGIvc3JjL3NuYS9z bmFfdmlkZW8uYwo+IEBAIC01OSw2ICs1OSw3IEBACj4gICNpbmNsdWRlICJpbnRlbF9vcHRpb25z LmgiCj4gIAo+ICAjaW5jbHVkZSA8eGY4Nnh2Lmg+Cj4gKyNpbmNsdWRlIDxieXRlc3dhcC5oPgo+ ICAKPiAgI2lmZGVmIFNOQV9YVk1DCj4gICNkZWZpbmUgX1NOQV9YVk1DX1NFUlZFUl8KPiBAQCAt MjgxLDYgKzI4Miw3IEBAIHNuYV92aWRlb19mcmFtZV9zZXRfcm90YXRpb24oc3RydWN0IHNuYV92 aWRlbyAqdmlkZW8sCj4gIAl9IGVsc2Ugewo+ICAJCXN3aXRjaCAoZnJhbWUtPmlkKSB7Cj4gIAkJ Y2FzZSBGT1VSQ0NfUkdCODg4Ogo+ICsJCWNhc2UgRk9VUkNDX0FZVVY6Cj4gIAkJCWlmIChyb3Rh dGlvbiAmIChSUl9Sb3RhdGVfOTAgfCBSUl9Sb3RhdGVfMjcwKSkgewo+ICAJCQkJZnJhbWUtPnBp dGNoWzBdID0gQUxJR04oKGhlaWdodCA8PCAyKSwgYWxpZ24pOwo+ICAJCQkJZnJhbWUtPnNpemUg PSAoaW50KWZyYW1lLT5waXRjaFswXSAqIHdpZHRoOwo+IEBAIC01ODQsNiArNTg2LDExOCBAQCBz bmFfY29weV9wYWNrZWRfZGF0YShzdHJ1Y3Qgc25hX3ZpZGVvICp2aWRlbywKPiAgCX0KPiAgfQo+ ICAKPiArc3RhdGljIHZvaWQKPiArc25hX2NvcHlfYXl1dl9kYXRhKHN0cnVjdCBzbmFfdmlkZW8g KnZpZGVvLAo+ICsJCSAgIGNvbnN0IHN0cnVjdCBzbmFfdmlkZW9fZnJhbWUgKmZyYW1lLAo+ICsJ CSAgIGNvbnN0IHVpbnQ4X3QgKmJ1ZiwKPiArCQkgICB1aW50OF90ICpkc3QpCj4gK3sKPiArCWlu dCBwaXRjaCA9IGZyYW1lLT53aWR0aCA8PCAyOwo+ICsJY29uc3QgdWludDhfdCAqc3JjLCAqczsK PiArCWNvbnN0IHVpbnQzMl90ICpzcmNfZHc7Cj4gKwl1aW50MzJfdCAqZHN0X2R3ID0gKHVpbnQz Ml90ICopZHN0Owo+ICsJaW50IHgsIHksIHcsIGg7Cj4gKwlpbnQgaSwgajsKPiArCj4gKwlpZiAo dmlkZW8tPnRleHR1cmVkKSB7Cj4gKwkJLyogWFhYIHN1cHBvcnQgY29weWluZyBjcm9wcGVkIGV4 dGVudHMgKi8KPiArCQl4ID0geSA9IDA7Cj4gKwkJdyA9IGZyYW1lLT53aWR0aDsKPiArCQloID0g ZnJhbWUtPmhlaWdodDsKPiArCX0gZWxzZSB7Cj4gKwkJeCA9IGZyYW1lLT5pbWFnZS54MTsKPiAr CQl5ID0gZnJhbWUtPmltYWdlLnkxOwo+ICsJCXcgPSBmcmFtZS0+aW1hZ2UueDIgLSBmcmFtZS0+ aW1hZ2UueDE7Cj4gKwkJaCA9IGZyYW1lLT5pbWFnZS55MiAtIGZyYW1lLT5pbWFnZS55MTsKPiAr CX0KPiArCj4gKwlzcmMgPSBidWYgKyAoeSAqIHBpdGNoKSArICh4IDw8IDIpOwo+ICsJc3JjX2R3 ID0gKHVpbnQzMl90ICopc3JjOwo+ICsJc3dpdGNoIChmcmFtZS0+cm90YXRpb24pIHsKPiArCWNh c2UgUlJfUm90YXRlXzA6Cj4gKwkJZm9yIChpID0gMDsgaSA8IGg7IGkrKykgewo+ICsJCQlmb3Ig KGogPSAwOyBqIDwgdzsgaisrKSB7Cj4gKwkJCQl1aW50MzJfdCByZXZlcnNlX2R3LCBkdyA9IHNy Y19kd1tpICogdyArIGpdOwo+ICsJCQkJaWYgKCF2aWRlby0+dGV4dHVyZWQpIHsKPiArCQkJCQkv Kgo+ICsJCQkJCSAqIEZvciB0ZXh0dXJlZCB3ZSBkbyBieXRlIHJldmVyc2luZyBpbiBzaGFkZXIu Cj4gKwkJCQkJICogSGF2ZSB0byByZXZlcnNlIGJ5dGVzIG9yZGVyLCBiZWNhdXNlIHRoZSBvbmx5 Cj4gKwkJCQkJICogcGxheWVyIHdoaWNoIHN1cHBvcnRzIEFZVVYgZm9ybWF0IGN1cnJlbnRseSBp cwo+ICsJCQkJCSAqIEdzdHJlYW1lciBhbmQgaXQgc3VwcG9ydHMgaW4gYmFkIHdheSwgZXZlbiB0 aG91Z2gKPiArCQkJCQkgKiBzcGVjIHNheXMgTVNCOkFZVVYsIHdlIGdldCB0aGUgYnl0ZXMgb3Bw b3NpdGUgd2F5Lgo+ICsJCQkJCSAqLwo+ICsJCQkJCXJldmVyc2VfZHcgPSBic3dhcF8zMihkdyk7 Cj4gKwkJCQl9Cj4gKwkJCQllbHNlCj4gKwkJCQkJcmV2ZXJzZV9kdyA9IGR3OwoKSSB0aGluayBJ IHNhaWQgYmVmb3JlIHRoYXQgaXQgbWlnaHQgYmUgYmV0dGVyIHRvIGp1c3QgYnl0ZXN3YXAgZXZl cnkKdGltZS4gTm8gZXh0cmEgYnJhbmNoIGluIHRoZSBpbm5lciBsb29wIHRoYXQgd2F5LgoKSXQg d291bGQgYWxzbyBsaW1pdCB0aGUgImdzdCBpcyBudXRzIiB3b3JrYXJvdW5kIGludG8gb25lIHBs YWNlCmluc3RlYWQgb2YgZHVwbGljYXRpbmcgaXQgc2V2ZXJhbCB0aW1lcy4gVGhlIG9uZSBkb3du c2lkZSBpcyB0aGF0CndlIGFsd2F5cyBuZWVkIHRvIHRha2UgdGhpcyBwYXRoIGZvciBBWVVWLiBC dXQgd2UgbmVlZCB0byBkbyB0aGF0CmZvciB0aGUgc3ByaXRlIGFkYXB0b3IgYW55d2F5IHNvIEkg dGhpbmsgaXQgd291bGQgYmUgZmluZS4KCkluZGNpZGVudGFsbHkgeW91IHNlZW0gdG8gYmUgbWlz c2luZyB0aGUgcHdyaXRlL21lbWNweSBwYXRoIGZvcgpBWVVWIGluIHNuYV92aWRlb19jb3B5X2Rh dGEoKSBidXQgeW91IGRvbid0IGNoZWNrIGZvciB0aGF0LgpTbyBJIHRoaW5rIHdlIG5lZWQgc29t ZXRoaW5nIGFsb25nIHRoZSBsaW5lcyBvZgotIGlmIChmcmFtZS0+cm90YXRpb24gPT0gUlJfUm90 YXRlXzAgJiYgIXZpZGVvLT50aWxlZCkgeworIGlmIChmcmFtZS0+cm90YXRpb24gPT0gUlJfUm90 YXRlXzAgJiYgIXZpZGVvLT50aWxlZCAmJiAhaXNfYXl1digpKSB7Cgo+ICsJCQkJZHN0X2R3W2kg KiB3ICsgal0gPSByZXZlcnNlX2R3Owo+ICsJCQl9Cj4gKwkJfQo+ICsJCWJyZWFrOwo+ICsJY2Fz ZSBSUl9Sb3RhdGVfOTA6Cj4gKwkJZm9yIChpID0gMDsgaSA8IGg7IGkrKykgewo+ICsJCQlmb3Ig KGogPSAwO2ogPCB3OyBqKyspIHsKPiArCQkJCXVpbnQzMl90IHJldmVyc2VfZHcsIGR3ID0gc3Jj X2R3W2kgKiB3ICsgal07Cj4gKwkJCQlpZiAoIXZpZGVvLT50ZXh0dXJlZCkgewo+ICsJCQkJCS8q Cj4gKwkJCQkJICogRm9yIHRleHR1cmVkIHdlIGRvIGJ5dGUgcmV2ZXJzaW5nIGluIHNoYWRlci4K PiArCQkJCQkgKiBIYXZlIHRvIHJldmVyc2UgYnl0ZXMgb3JkZXIsIGJlY2F1c2UgdGhlIG9ubHkK PiArCQkJCQkgKiBwbGF5ZXIgd2hpY2ggc3VwcG9ydHMgQVlVViBmb3JtYXQgY3VycmVudGx5IGlz Cj4gKwkJCQkJICogR3N0cmVhbWVyIGFuZCBpdCBzdXBwb3J0cyBpbiBiYWQgd2F5LCBldmVuIHRo b3VnaAo+ICsJCQkJCSAqIHNwZWMgc2F5cyBNU0I6QVlVViwgd2UgZ2V0IHRoZSBieXRlcyBvcHBv c2l0ZSB3YXkuCj4gKwkJCQkJICovCj4gKwkJCQkJcmV2ZXJzZV9kdyA9IGJzd2FwXzMyKGR3KTsK PiArCQkJCX0KPiArCQkJCWVsc2UKPiArCQkJCQlyZXZlcnNlX2R3ID0gZHc7Cj4gKwkJCQlkc3Rf ZHdbKHcgLSBqIC0gMSkgKiBoICsgaV0gPSByZXZlcnNlX2R3Owo+ICsJCQl9Cj4gKwkJfQo+ICsJ CWJyZWFrOwo+ICsJY2FzZSBSUl9Sb3RhdGVfMTgwOgo+ICsJCWZvciAoaSA9IDA7IGkgPCBoOyBp KyspIHsKPiArCQkJZm9yIChqID0gMDsgaiA8IHc7IGorKykgewo+ICsJCQkJdWludDMyX3QgcmV2 ZXJzZV9kdywgZHcgPSBzcmNfZHdbaSAqIHcgKyBqXTsKPiArCQkJCS8qIENvbHVtbnMgaW4gcmV2 ZXJzZSBvcmRlciwgcm93cyBpbiByZXZlcnNlIG9yZGVyICovCj4gKwkJCQlpZiAoIXZpZGVvLT50 ZXh0dXJlZCkgewo+ICsJCQkJCS8qCj4gKwkJCQkJICogRm9yIHRleHR1cmVkIHdlIGRvIGJ5dGUg cmV2ZXJzaW5nIGluIHNoYWRlci4KPiArCQkJCQkgKiBIYXZlIHRvIHJldmVyc2UgYnl0ZXMgb3Jk ZXIsIGJlY2F1c2UgdGhlIG9ubHkKPiArCQkJCQkgKiBwbGF5ZXIgd2hpY2ggc3VwcG9ydHMgQVlV ViBmb3JtYXQgY3VycmVudGx5IGlzCj4gKwkJCQkJICogR3N0cmVhbWVyIGFuZCBpdCBzdXBwb3J0 cyBpbiBiYWQgd2F5LCBldmVuIHRob3VnaAo+ICsJCQkJCSAqIHNwZWMgc2F5cyBNU0I6QVlVViwg d2UgZ2V0IHRoZSBieXRlcyBvcHBvc2l0ZSB3YXkuCj4gKwkJCQkJICovCj4gKwkJCQkJcmV2ZXJz ZV9kdyA9IGJzd2FwXzMyKGR3KTsKPiArCQkJCX0KPiArCQkJCWVsc2UKPiArCQkJCQlyZXZlcnNl X2R3ID0gZHc7Cj4gKwkJCQlkc3RfZHdbKGggLSBpIC0gMSkgKiB3ICsgdyAtIGogLSAxXSA9IHJl dmVyc2VfZHc7Cj4gKwkJCX0KPiArCQl9Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIFJSX1JvdGF0ZV8y NzA6Cj4gKwkJZm9yIChpID0gMDsgaSA8IGg7IGkrKykgewo+ICsJCQlmb3IgKGogPSAwOyBqIDwg dzsgaisrKSB7Cj4gKwkJCQl1aW50MzJfdCByZXZlcnNlX2R3LCBkdyA9IHNyY19kd1tpICogdyAr IGpdOzsKPiArCQkJCWlmICghdmlkZW8tPnRleHR1cmVkKSB7Cj4gKwkJCQkJLyoKPiArCQkJCQkg KiBGb3IgdGV4dHVyZWQgd2UgZG8gYnl0ZSByZXZlcnNpbmcgaW4gc2hhZGVyLgo+ICsJCQkJCSAq IEhhdmUgdG8gcmV2ZXJzZSBieXRlcyBvcmRlciwgYmVjYXVzZSB0aGUgb25seQo+ICsJCQkJCSAq IHBsYXllciB3aGljaCBzdXBwb3J0cyBBWVVWIGZvcm1hdCBjdXJyZW50bHkgaXMKPiArCQkJCQkg KiBHc3RyZWFtZXIgYW5kIGl0IHN1cHBvcnRzIGluIGJhZCB3YXksIGV2ZW4gdGhvdWdoCj4gKwkJ CQkJICogc3BlYyBzYXlzIE1TQjpBWVVWLCB3ZSBnZXQgdGhlIGJ5dGVzIG9wcG9zaXRlIHdheS4K PiArCQkJCQkgKi8KPiArCQkJCQlyZXZlcnNlX2R3ID0gYnN3YXBfMzIoZHcpOwo+ICsJCQkJfQo+ ICsJCQkJZWxzZQo+ICsJCQkJCXJldmVyc2VfZHcgPSBkdzsKPiArCQkJCWRzdF9kd1sodyAtIGog LSAxKSAqIGggKyBpXSA9IHJldmVyc2VfZHc7Cj4gKwkJCX0KPiArCQl9Cj4gKwkJYnJlYWs7Cj4g Kwl9Cj4gK30KPiArCj4gIGJvb2wKPiAgc25hX3ZpZGVvX2NvcHlfZGF0YShzdHJ1Y3Qgc25hX3Zp ZGVvICp2aWRlbywKPiAgCQkgICAgc3RydWN0IHNuYV92aWRlb19mcmFtZSAqZnJhbWUsCj4gQEAg LTcwOSw2ICs4MjMsOSBAQCB1c2VfZ3R0OiAvKiBjb3B5IGRhdGEsIG11c3QgdXNlIEdUVCBzbyB0 aGF0IHdlIGtlZXAgdGhlIG92ZXJsYXkgdW5jYWNoZWQgKi8KPiAgCQlzbmFfY29weV9udjEyX2Rh dGEodmlkZW8sIGZyYW1lLCBidWYsIGRzdCk7Cj4gIAllbHNlIGlmIChpc19wbGFuYXJfZm91cmNj KGZyYW1lLT5pZCkpCj4gIAkJc25hX2NvcHlfcGxhbmFyX2RhdGEodmlkZW8sIGZyYW1lLCBidWYs IGRzdCk7Cj4gKwllbHNlIGlmIChpc19heXV2X2ZvdXJjYyhmcmFtZS0+aWQpKQo+ICsJCS8qIFNv bWUgaGFyZGNvZGluZyBpcyBkb25lIGluIGRlZmF1bHQgc25hX2NvcHlfcGFja2VkX2RhdGEsIHNv IGFkZGVkIGEgc3BlY2lmaWMgZnVuY3Rpb24gKi8KCnNuYV9jb3B5X3BhY2tlZF9kYXRhKCkgaXMg bWVhbnQgZm9yIHBhY2tlZCBZVVYgNDoyOjIgZm9ybWF0cywKc28gdGhlIGZhY3QgdGhhdCBpdCBj YW4ndCBiZSB1c2VkIGlzIHNlbGYgZXZpZGVudC4gU28ganVzdApkcm9wIHRoZSBjb21taXQgSU1P LgoKPiArCQlzbmFfY29weV9heXV2X2RhdGEodmlkZW8sIGZyYW1lLCBidWYsIGRzdCk7Cj4gIAll bHNlCj4gIAkJc25hX2NvcHlfcGFja2VkX2RhdGEodmlkZW8sIGZyYW1lLCBidWYsIGRzdCk7Cj4g IAo+IGRpZmYgLS1naXQgYS9zcmMvc25hL3NuYV92aWRlby5oIGIvc3JjL3NuYS9zbmFfdmlkZW8u aAo+IGluZGV4IGJiZDNmMGZkLi4zZTY3NWY4NCAxMDA2NDQKPiAtLS0gYS9zcmMvc25hL3NuYV92 aWRlby5oCj4gKysrIGIvc3JjL3NuYS9zbmFfdmlkZW8uaAo+IEBAIC0zOSw2ICszOSw3IEBAIFRI RSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgo+ICAjZGVmaW5lIEZPVVJD Q19SR0I1NjUgKCgxNiA8PCAyNCkgKyAoJ0InIDw8IDE2KSArICgnRycgPDwgOCkgKyAnUicpCj4g ICNkZWZpbmUgRk9VUkNDX1JHQjg4OCAoKDI0IDw8IDI0KSArICgnQicgPDwgMTYpICsgKCdHJyA8 PCA4KSArICdSJykKPiAgI2RlZmluZSBGT1VSQ0NfTlYxMiAoKCcyJyA8PCAyNCkgKyAoJzEnIDw8 IDE2KSArICgnVicgPDwgOCkgKyAnTicpCj4gKyNkZWZpbmUgRk9VUkNDX0FZVVYgKCgnVicgPDwg MjQpICsgKCdVJyA8PCAxNikgKyAoJ1knIDw8IDgpICsgJ0EnKQo+ICAKPiAgLyoKPiAgICogQmVs b3csIGEgZHVtbXkgcGljdHVyZSB0eXBlIHRoYXQgaXMgdXNlZCBpbiBYdlB1dEltYWdlCj4gQEAg LTc5LDYgKzgwLDE1IEBAIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJF Lgo+ICAJWHZUb3BUb0JvdHRvbSBcCj4gIH0KPiAgCj4gKyNkZWZpbmUgWFZJTUFHRV9BWVVWIHsg XAo+ICsJRk9VUkNDX0FZVVYsIFh2WVVWLCBMU0JGaXJzdCwgXAo+ICsJeydBJywgJ1knLCAnVScs ICdWJywgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMCwgMHg4MCwgMHgwMCwgMHgwMCwgMHhBQSwgMHgw MCwgMHgzOCwgMHg5QiwgMHg3MX0sIFwKPiArCTMyLCBYdlBhY2tlZCwgMSwgMCwgMCwgMCwgMCwg OCwgOCwgOCwgMSwgMiwgMiwgMSwgMiwgMiwgXAoKVGhlIDJzIHNob3VsZCBiZSAxcy4gVGhlcmUg aXMgbm8gY2hyb21hIHN1YnNhbXBsaW5nIHdpdGggdGhpcyBmb3JtYXQuCgo+ICsJeydBJywgJ1kn LCAnVScsICdWJywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0sIFwKPiArCVh2VG9wVG9Cb3R0 b20gXAo+ICt9Cj4gKwo+ICsKPiAgc3RydWN0IHNuYV92aWRlbyB7Cj4gIAlzdHJ1Y3Qgc25hICpz bmE7Cj4gIAo+IEBAIC0xODksNiArMTk5LDE2IEBAIHN0YXRpYyBpbmxpbmUgaW50IGlzX252MTJf Zm91cmNjKGludCBpZCkKPiAgCX0KPiAgfQo+ICAKPiArc3RhdGljIGlubGluZSBpbnQgaXNfYXl1 dl9mb3VyY2MoaW50IGlkKQo+ICt7Cj4gKwlzd2l0Y2ggKGlkKSB7Cj4gKwljYXNlIEZPVVJDQ19B WVVWOgo+ICsJCXJldHVybiAxOwo+ICsJZGVmYXVsdDoKPiArCQlyZXR1cm4gMDsKPiArCX0KPiAr fQo+ICsKPiAgYm9vbAo+ICBzbmFfdmlkZW9fY2xpcF9oZWxwZXIoc3RydWN0IHNuYV92aWRlbyAq dmlkZW8sCj4gIAkJICAgICAgc3RydWN0IHNuYV92aWRlb19mcmFtZSAqZnJhbWUsCj4gZGlmZiAt LWdpdCBhL3NyYy9zbmEvc25hX3ZpZGVvX3Nwcml0ZS5jIGIvc3JjL3NuYS9zbmFfdmlkZW9fc3By aXRlLmMKPiBpbmRleCA4YjdhZThhZS4uYWU0OTNkYWEgMTAwNjQ0Cj4gLS0tIGEvc3JjL3NuYS9z bmFfdmlkZW9fc3ByaXRlLmMKPiArKysgYi9zcmMvc25hL3NuYV92aWRlb19zcHJpdGUuYwo+IEBA IC00Nyw3ICs0Nyw3IEBACj4gICNkZWZpbmUgRFJNX0ZPUk1BVF9ZVVlWICAgICAgICAgZm91cmNj X2NvZGUoJ1knLCAnVScsICdZJywgJ1YnKSAvKiBbMzE6MF0gQ3IwOlkxOkNiMDpZMCA4Ojg6ODo4 IGxpdHRsZSBlbmRpYW4gKi8KPiAgI2RlZmluZSBEUk1fRk9STUFUX1VZVlkgICAgICAgICBmb3Vy Y2NfY29kZSgnVScsICdZJywgJ1YnLCAnWScpIC8qIFszMTowXSBZMTpDcjA6WTA6Q2IwIDg6ODo4 OjggbGl0dGxlIGVuZGlhbiAqLwo+ICAjZGVmaW5lIERSTV9GT1JNQVRfTlYxMiAgICAgICAgIGZv dXJjY19jb2RlKCdOJywgJ1YnLCAnMScsICcyJykgLyogMngyIHN1YnNhbXBsZWQgQ3I6Q2IgcGxh bmUgKi8KPiAtCj4gKyNkZWZpbmUgRFJNX0ZPUk1BVF9YWVVWODg4OCAgICAgZm91cmNjX2NvZGUo J1gnLCAnWScsICdVJywgJ1YnKSAvKiBbMzE6MF0geDpZOlU6ViA4Ojg6ODo4IGxpdHRsZSBlbmRp YW4gKi8KPiAgI2RlZmluZSBoYXNfaHdfc2NhbGluZyhzbmEsIHZpZGVvKSAoKHNuYSktPmtnZW0u Z2VuIDwgMDcxIHx8IFwKPiAgCQkJCSAgICAoc25hKS0+a2dlbS5nZW4gPj0gMDExMCkKPiAgCj4g QEAgLTc2LDkgKzc2LDExIEBAIHN0YXRpYyBYdkZvcm1hdFJlYyBmb3JtYXRzW10gPSB7IHsxNX0s IHsxNn0sIHsyNH0gfTsKPiAgc3RhdGljIGNvbnN0IFh2SW1hZ2VSZWMgaW1hZ2VzW10gPSB7IFhW SU1BR0VfWVVZMiwgWFZJTUFHRV9VWVZZLAo+ICAJCQkJICAgICBYVk1DX1JHQjg4OCB9Owo+ICBz dGF0aWMgY29uc3QgWHZJbWFnZVJlYyBpbWFnZXNfcmdiNTY1W10gPSB7IFhWSU1BR0VfWVVZMiwg WFZJTUFHRV9VWVZZLAo+IC0JCQkJCSAgICBYVk1DX1JHQjg4OCwgWFZNQ19SR0I1NjUgfTsKPiAr CQkJCQkgICAgWFZNQ19SR0I4ODgsIFhWTUNfUkdCNTY1LCBYVklNQUdFX0FZVVYgfTsKPiAgc3Rh dGljIGNvbnN0IFh2SW1hZ2VSZWMgaW1hZ2VzX252MTJbXSA9IHsgWFZJTUFHRV9ZVVkyLCBYVklN QUdFX1VZVlksCj4gLQkJCQkJICBYVklNQUdFX05WMTIsIFhWTUNfUkdCODg4LCBYVk1DX1JHQjU2 NSB9Owo+ICsJCQkJCSAgWFZJTUFHRV9OVjEyLCBYVk1DX1JHQjg4OCwgWFZNQ19SR0I1NjUsIFhW SU1BR0VfQVlVViB9OwoKVGhlc2Ugc2hvdWxkIHJlbWFpbiB1bmNoYW5nZWQuCgo+ICtzdGF0aWMg Y29uc3QgWHZJbWFnZVJlYyBpbWFnZXNfeHl1djg4ODhbXSA9IHsgWFZJTUFHRV9ZVVkyLCBYVklN QUdFX1VZVlksCj4gKwkJCQkJICBYVklNQUdFX05WMTIsIFhWTUNfUkdCODg4LCBYVk1DX1JHQjU2 NSwgWFZJTUFHRV9BWVVWIH07CgpJJ2QgY2FsbCB0aGlzIGltYWdlc19heXV2W10gc2luY2UgdGhp cyBpcyBhYm91dCB4dmltYWdlcyBhbmQgbm90CmRybSBmb3VyY2NzLiBBbmQgSSdkIHB1dCBBWVVW IGJlZm9yZSB0aGUgUkdCIGZvcm1hdHMgaW4gdGhlIGxpc3QuIAoKPiAgc3RhdGljIGNvbnN0IFh2 QXR0cmlidXRlUmVjIGF0dHJpYnNbXSA9IHsKPiAgCXsgWHZTZXR0YWJsZSB8IFh2R2V0dGFibGUs IDAsIDEsIChjaGFyICopIlhWX0NPTE9SU1BBQ0UiIH0sIC8qIEJULjYwMSwgQlQuNzA5ICovCj4g IAl7IFh2U2V0dGFibGUgfCBYdkdldHRhYmxlLCAwLCAweGZmZmZmZiwgKGNoYXIgKikiWFZfQ09M T1JLRVkiIH0sCj4gQEAgLTM2NCw2ICszNjYsMTAgQEAgc25hX3ZpZGVvX3Nwcml0ZV9zaG93KHN0 cnVjdCBzbmEgKnNuYSwKPiAgCQljYXNlIEZPVVJDQ19VWVZZOgo+ICAJCQlmLnBpeGVsX2Zvcm1h dCA9IERSTV9GT1JNQVRfVVlWWTsKPiAgCQkJYnJlYWs7Cj4gKwkJY2FzZSBGT1VSQ0NfQVlVVjoK PiArCQkJLyogaTkxNSBkb2Vzbid0IHN1cHBvcnQgYWxwaGEsIHNvIHdlIHVzZSBYWVVWICovCj4g KwkJCWYucGl4ZWxfZm9ybWF0ID0gRFJNX0ZPUk1BVF9YWVVWODg4ODsKPiArCQkJYnJlYWs7Cj4g IAkJY2FzZSBGT1VSQ0NfWVVZMjoKPiAgCQlkZWZhdWx0Ogo+ICAJCQlmLnBpeGVsX2Zvcm1hdCA9 IERSTV9GT1JNQVRfWVVZVjsKPiBAQCAtNzA1LDcgKzcxMSwxMiBAQCBzdGF0aWMgaW50IHNuYV92 aWRlb19zcHJpdGVfcXVlcnkoZGRRdWVyeUltYWdlQXR0cmlidXRlc19BUkdTKQo+ICAJCXRtcCAq PSAoKmggPj4gMSk7Cj4gIAkJc2l6ZSArPSB0bXA7Cj4gIAkJYnJlYWs7Cj4gLQo+ICsJY2FzZSBG T1VSQ0NfQVlVVjoKPiArCQl0bXAgPSAqdyA8PCAyOwo+ICsJCWlmIChwaXRjaGVzKQo+ICsJCQlw aXRjaGVzWzBdID0gdG1wOwo+ICsJCXNpemUgPSAqaCAqIHRtcDsKPiArCQlicmVhazsKPiAgCWRl ZmF1bHQ6Cj4gIAkJKncgPSAoKncgKyAxKSAmIH4xOwo+ICAJCSpoID0gKCpoICsgMSkgJiB+MTsK PiBAQCAtODExLDYgKzgyMiw5IEBAIHZvaWQgc25hX3ZpZGVvX3Nwcml0ZV9zZXR1cChzdHJ1Y3Qg c25hICpzbmEsIFNjcmVlblB0ciBzY3JlZW4pCj4gIAl9IGVsc2UgaWYgKHNuYV9oYXNfc3ByaXRl X2Zvcm1hdChzbmEsIERSTV9GT1JNQVRfUkdCNTY1KSkgewo+ICAJCWFkYXB0b3ItPnBJbWFnZXMg PSAoWHZJbWFnZVJlYyAqKWltYWdlc19yZ2I1NjU7Cj4gIAkJYWRhcHRvci0+bkltYWdlcyA9IEFS UkFZX1NJWkUoaW1hZ2VzX3JnYjU2NSk7Cj4gKwl9IGVsc2UgaWYgKHNuYV9oYXNfc3ByaXRlX2Zv cm1hdChzbmEsIERSTV9GT1JNQVRfWFlVVjg4ODgpKSB7Cj4gKwkJYWRhcHRvci0+cEltYWdlcyA9 IChYdkltYWdlUmVjICopaW1hZ2VzX3h5dXY4ODg4Owo+ICsJCWFkYXB0b3ItPm5JbWFnZXMgPSBB UlJBWV9TSVpFKGltYWdlc194eXV2ODg4OCk7CgpUaGlzIG5lZWRzIHRvIGJlIGNoZWNrZWQgYmVm b3JlIDU2NS9udjEyLiBPdGhlcndpc2Ugd2UnbGwgbmV2ZXIgcGljawp0aGlzIG9uZSBvbiBtb3N0 IFNLTCsgcGxhbmVzLgoKPiAgCX0gZWxzZSB7Cj4gIAkJYWRhcHRvci0+cEltYWdlcyA9IChYdklt YWdlUmVjICopaW1hZ2VzOwo+ICAJCWFkYXB0b3ItPm5JbWFnZXMgPSBBUlJBWV9TSVpFKGltYWdl cyk7Cj4gZGlmZiAtLWdpdCBhL3NyYy9zbmEvc25hX3ZpZGVvX3RleHR1cmVkLmMgYi9zcmMvc25h L3NuYV92aWRlb190ZXh0dXJlZC5jCj4gaW5kZXggYTc4NGZlMmUuLjQ2YzIxM2VmIDEwMDY0NAo+ IC0tLSBhL3NyYy9zbmEvc25hX3ZpZGVvX3RleHR1cmVkLmMKPiArKysgYi9zcmMvc25hL3NuYV92 aWRlb190ZXh0dXJlZC5jCj4gQEAgLTY4LDYgKzY4LDcgQEAgc3RhdGljIGNvbnN0IFh2SW1hZ2VS ZWMgZ2VuNF9JbWFnZXNbXSA9IHsKPiAgCVhWSU1BR0VfSTQyMCwKPiAgCVhWSU1BR0VfTlYxMiwK PiAgCVhWSU1BR0VfVVlWWSwKPiArCVhWSU1BR0VfQVlVViwKPiAgCVhWTUNfWVVWLAo+ICB9Owo+ ICAKPiBAQCAtMzM3LDYgKzMzOCwxMiBAQCBzbmFfdmlkZW9fdGV4dHVyZWRfcXVlcnkoZGRRdWVy eUltYWdlQXR0cmlidXRlc19BUkdTKQo+ICAJCQlwaXRjaGVzWzBdID0gc2l6ZTsKPiAgCQlzaXpl ICo9ICpoOwo+ICAJCWJyZWFrOwo+ICsJY2FzZSBGT1VSQ0NfQVlVVjoKPiArCQlzaXplID0gKncg PDwgMjsKPiArCQlpZiAocGl0Y2hlcykKPiArCQkJcGl0Y2hlc1swXSA9IHNpemU7Cj4gKwkJc2l6 ZSAqPSAqaDsKPiArCQlicmVhazsKPiAgCWNhc2UgRk9VUkNDX1hWTUM6Cj4gIAkJKmggPSAoKmgg KyAxKSAmIH4xOwo+ICAJCXNpemUgPSBzaXplb2YodWludDMyX3QpOwo+IC0tIAo+IDIuMTcuMQo+ IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoK LS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK