From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH v3] drm/i915/icl: combo port vswing programming changes per BSPEC Date: Tue, 11 Dec 2018 16:25:09 +0200 Message-ID: <20181211142509.GA20205@ideak-desk.fi.intel.com> References: <1543618681-15255-1-git-send-email-clinton.a.taylor@intel.com> <1543966869-9759-1-git-send-email-clinton.a.taylor@intel.com> <20181205163222.GA8944@ideak-desk.fi.intel.com> <20181211094043.GE16782@ideak-desk.fi.intel.com> <20181211141847.GQ9144@intel.com> Reply-To: imre.deak@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 378306E21B for ; Tue, 11 Dec 2018 14:25:12 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20181211141847.GQ9144@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Cc: Intel-gfx@lists.freedesktop.org, Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBEZWMgMTEsIDIwMTggYXQgMDQ6MTg6NDdQTSArMDIwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFR1ZSwgRGVjIDExLCAyMDE4IGF0IDExOjQwOjQzQU0gKzAyMDAsIEltcmUg RGVhayB3cm90ZToKPiA+IE9uIFdlZCwgRGVjIDA1LCAyMDE4IGF0IDA2OjMyOjIyUE0gKzAyMDAs IEltcmUgRGVhayB3cm90ZToKPiA+ID4gT24gVHVlLCBEZWMgMDQsIDIwMTggYXQgMDM6NDE6MDlQ TSAtMDgwMCwgY2xpbnRvbi5hLnRheWxvckBpbnRlbC5jb20gd3JvdGU6Cj4gPiA+ID4gRnJvbTog Q2xpbnQgVGF5bG9yIDxjbGludG9uLmEudGF5bG9yQGludGVsLmNvbT4KPiA+ID4gPiAKPiA+ID4g PiBJbiBBdWd1c3QgMjAxOCB0aGUgQlNQRUMgY2hhbmdlZCB0aGUgSUNMIHBvcnQgcHJvZ3JhbW1p bmcgc2VxdWVuY2UgdG8KPiA+ID4gPiBjbG9zZWx5IHJlc2VtYmxlIGVhcmxpZXIgZ2VuIHByb2dy YW1taW5nIHNlcXVlbmNlLgo+ID4gPiA+IAo+ID4gPiA+IHYyOiByZW1vdmUgZGVidWcgY29kZSB0 aGF0IEltcmUgZm91bmQKPiA+ID4gPiB2Mzogc2ltcGxpZnkgdHJhbnNsYXRpb24gdGFibGUgaWYt ZWxzZQo+ID4gPiA+IAo+ID4gPiA+IEJTcGVjOiAyMTI1Nwo+ID4gPiA+IENjOiBWaWxsZSBTeXJq w6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+ID4gPiA+IENjOiBJbXJlIERl YWsgPGltcmUuZGVha0BpbnRlbC5jb20+Cj4gPiA+ID4gQ2M6IFJvZHJpZ28gVml2aSA8cm9kcmln by52aXZpQGludGVsLmNvbT4KPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBDbGludCBUYXlsb3IgPGNs aW50b24uYS50YXlsb3JAaW50ZWwuY29tPgo+ID4gPiA+IC0tLQo+ID4gPiA+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlZy5oICB8ICAgNCArCj4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RkaS5jIHwgMjI0ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQo+ID4gPiA+ICAyIGZpbGVzIGNoYW5nZWQsIDg1IGluc2VydGlvbnMoKyksIDE0MyBkZWxl dGlvbnMoLSkKPiA+ID4gPiAKPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+ID4gPiBp bmRleCAwYTdkNjA1Li4yOWFjZGI5IDEwMDY0NAo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVnLmgKPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlZy5oCj4gPiA+ID4gQEAgLTE4NjYsNiArMTg2NiwxMCBAQCBlbnVtIGk5MTVfcG93ZXJfd2Vs bF9pZCB7Cj4gPiA+ID4gIAo+ID4gPiA+ICAjZGVmaW5lIENOTF9QT1JUX1RYX0RXN19HUlAocG9y dCkJX01NSU8oX0NOTF9QT1JUX1RYX0RXX0dSUCgocG9ydCksIDcpKQo+ID4gPiA+ICAjZGVmaW5l IENOTF9QT1JUX1RYX0RXN19MTjAocG9ydCkJX01NSU8oX0NOTF9QT1JUX1RYX0RXX0xOMCgocG9y dCksIDcpKQo+ID4gPiA+ICsjZGVmaW5lIElDTF9QT1JUX1RYX0RXN19BVVgocG9ydCkJX01NSU8o X0lDTF9QT1JUX1RYX0RXX0FVWCg3LCBwb3J0KSkKPiA+ID4gPiArI2RlZmluZSBJQ0xfUE9SVF9U WF9EVzdfR1JQKHBvcnQpCV9NTUlPKF9JQ0xfUE9SVF9UWF9EV19HUlAoNywgcG9ydCkpCj4gPiA+ ID4gKyNkZWZpbmUgSUNMX1BPUlRfVFhfRFc3X0xOMChwb3J0KQlfTU1JTyhfSUNMX1BPUlRfVFhf RFdfTE4oNywgMCwgcG9ydCkpCj4gPiA+ID4gKyNkZWZpbmUgSUNMX1BPUlRfVFhfRFc3X0xOKHBv cnQsIGxuKQlfTU1JTyhfSUNMX1BPUlRfVFhfRFdfTE4oNywgbG4sIHBvcnQpKQo+ID4gPiAKPiA+ ID4gTG9va3MgbGlrZSBfQ05MX1BPUlRfVFhfRFdfR1JQKCkgaXMgaW5jb25zaXN0ZW50IHdpdGgg dGhlIElDTAo+ID4gPiBjb3VudGVycGFydCBhbmQgQ05MX1BPUlRfVFhfRFcyXyogLyBDTkxfUE9S VF9UWF9EVzVfKiBhcmUgYnJva2VuIGF0bSwKPiA+ID4gdGhleSBuZWVkIHRvIGJlIGZpeGVkIGFz IGEgZm9sbG93LXVwLgo+ID4gPiAKPiA+ID4gPiAgI2RlZmluZSAgIE5fU0NBTEFSKHgpCQkJKCh4 KSA8PCAyNCkKPiA+ID4gPiAgI2RlZmluZSAgIE5fU0NBTEFSX01BU0sJCQkoMHg3RiA8PCAyNCkK PiA+ID4gPiAgCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+ID4gPiBpbmRleCBm M2UxZDZhLi5kNzhlYzE3IDEwMDY0NAo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RkaS5jCj4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRp LmMKPiA+ID4gPiBAQCAtNDk0LDEwMyArNDk0LDYzIEBAIHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFu cyB7Cj4gPiA+ID4gIAl7IDB4MiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA0MDAgICA0 MDAgICAgICAwLjAgICAqLwo+ID4gPiA+ICB9Owo+ID4gPiA+ICAKPiA+ID4gPiAtc3RydWN0IGlj bF9jb21ib19waHlfZGRpX2J1Zl90cmFucyB7Cj4gPiA+ID4gLQl1MzIgZHcyX3N3aW5nX3NlbGVj dDsKPiA+ID4gPiAtCXUzMiBkdzJfc3dpbmdfc2NhbGFyOwo+ID4gPiA+IC0JdTMyIGR3NF9zY2Fs aW5nOwo+ID4gPiA+IC19Owo+ID4gPiA+IC0KPiA+ID4gPiAtLyogVm9sdGFnZSBTd2luZyBQcm9n cmFtbWluZyBmb3IgVmNjSU8gMC44NVYgZm9yIERQICovCj4gPiA+ID4gLXN0YXRpYyBjb25zdCBz dHJ1Y3QgaWNsX2NvbWJvX3BoeV9kZGlfYnVmX3RyYW5zIGljbF9jb21ib19waHlfZGRpX3RyYW5z bGF0aW9uc19kcF9oZG1pXzBfODVWW10gPSB7Cj4gPiA+ID4gLQkJCQkvKiBWb2x0YWdlIG1WICBk YiAgICAqLwo+ID4gPiA+IC0JeyAweDIsIDB4OTgsIDB4MDAxOCB9LAkvKiA0MDAgICAgICAgICAw LjAgICAqLwo+ID4gPiA+IC0JeyAweDIsIDB4OTgsIDB4MzAxNSB9LAkvKiA0MDAgICAgICAgICAz LjUgICAqLwo+ID4gPiA+IC0JeyAweDIsIDB4OTgsIDB4NjAxMiB9LAkvKiA0MDAgICAgICAgICA2 LjAgICAqLwo+ID4gPiA+IC0JeyAweDIsIDB4OTgsIDB4OTAwRiB9LAkvKiA0MDAgICAgICAgICA5 LjUgICAqLwo+ID4gPiA+IC0JeyAweEIsIDB4NzAsIDB4MDAxOCB9LAkvKiA2MDAgICAgICAgICAw LjAgICAqLwo+ID4gPiA+IC0JeyAweEIsIDB4NzAsIDB4MzAxNSB9LAkvKiA2MDAgICAgICAgICAz LjUgICAqLwo+ID4gPiA+IC0JeyAweEIsIDB4NzAsIDB4NjAxMiB9LAkvKiA2MDAgICAgICAgICA2 LjAgICAqLwo+ID4gPiA+IC0JeyAweDUsIDB4MDAsIDB4MDAxOCB9LAkvKiA4MDAgICAgICAgICAw LjAgICAqLwo+ID4gPiA+IC0JeyAweDUsIDB4MDAsIDB4MzAxNSB9LAkvKiA4MDAgICAgICAgICAz LjUgICAqLwo+ID4gPiA+IC0JeyAweDYsIDB4OTgsIDB4MDAxOCB9LAkvKiAxMjAwICAgICAgICAw LjAgICAqLwo+ID4gPiA+IC19Owo+ID4gPiA+IC0KPiA+ID4gPiAtLyogRklYTUUgLSBBZnRlciB0 YWJsZSBpcyB1cGRhdGVkIGluIEJzcGVjICovCj4gPiA+ID4gLS8qIFZvbHRhZ2UgU3dpbmcgUHJv Z3JhbW1pbmcgZm9yIFZjY0lPIDAuODVWIGZvciBlRFAgKi8KPiA+ID4gPiAtc3RhdGljIGNvbnN0 IHN0cnVjdCBpY2xfY29tYm9fcGh5X2RkaV9idWZfdHJhbnMgaWNsX2NvbWJvX3BoeV9kZGlfdHJh bnNsYXRpb25zX2VkcF8wXzg1VltdID0gewo+ID4gPiA+IC0JCQkJLyogVm9sdGFnZSBtViAgZGIg ICAgKi8KPiA+ID4gPiAtCXsgMHgwLCAweDAwLCAweDAwIH0sCS8qIDIwMCAgICAgICAgIDAuMCAg ICovCj4gPiA+ID4gLQl7IDB4MCwgMHgwMCwgMHgwMCB9LAkvKiAyMDAgICAgICAgICAxLjUgICAq Lwo+ID4gPiA+IC0JeyAweDAsIDB4MDAsIDB4MDAgfSwJLyogMjAwICAgICAgICAgNC4wICAgKi8K PiA+ID4gPiAtCXsgMHgwLCAweDAwLCAweDAwIH0sCS8qIDIwMCAgICAgICAgIDYuMCAgICovCj4g PiA+ID4gLQl7IDB4MCwgMHgwMCwgMHgwMCB9LAkvKiAyNTAgICAgICAgICAwLjAgICAqLwo+ID4g PiA+IC0JeyAweDAsIDB4MDAsIDB4MDAgfSwJLyogMjUwICAgICAgICAgMS41ICAgKi8KPiA+ID4g PiAtCXsgMHgwLCAweDAwLCAweDAwIH0sCS8qIDI1MCAgICAgICAgIDQuMCAgICovCj4gPiA+ID4g LQl7IDB4MCwgMHgwMCwgMHgwMCB9LAkvKiAzMDAgICAgICAgICAwLjAgICAqLwo+ID4gPiA+IC0J eyAweDAsIDB4MDAsIDB4MDAgfSwJLyogMzAwICAgICAgICAgMS41ICAgKi8KPiA+ID4gPiAtCXsg MHgwLCAweDAwLCAweDAwIH0sCS8qIDM1MCAgICAgICAgIDAuMCAgICovCj4gPiA+ID4gKy8qIGlj bF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9ucyAqLwo+ID4gPiA+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGNubF9kZGlfYnVmX3RyYW5zIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcFtd ID0gewo+ID4gPiA+ICsJCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwo+ID4gPiA+ICsJ eyAweEEsIDB4MzUsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAg Ki8KPiA+ID4gPiArCXsgMHhBLCAweDRGLCAweDM3LCAweDAwLCAweDA4IH0sCS8qIDM1MCAgIDUw MCAgICAgIDMuMSAgICovCj4gPiA+ID4gKwl7IDB4QywgMHg3MSwgMHgyRiwgMHgwMCwgMHgxMCB9 LAkvKiAzNTAgICA3MDAgICAgICA2LjAgICAqLwo+ID4gPiA+ICsJeyAweDYsIDB4N0YsIDB4MkIs IDB4MDAsIDB4MTQgfSwJLyogMzUwICAgOTAwICAgICAgOC4yICAgKi8KPiA+ID4gPiArCXsgMHhB LCAweDRDLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDUwMCAgIDUwMCAgICAgIDAuMCAgICovCj4g PiA+ID4gKwl7IDB4QywgMHg3MywgMHgzNCwgMHgwMCwgMHgwQiB9LAkvKiA1MDAgICA3MDAgICAg ICAyLjkgICAqLwo+ID4gPiA+ICsJeyAweDYsIDB4N0YsIDB4MkYsIDB4MDAsIDB4MTAgfSwJLyog NTAwICAgOTAwICAgICAgNS4xICAgKi8KPiA+ID4gPiArCXsgMHhDLCAweDZDLCAweDNDLCAweDAw LCAweDAzIH0sCS8qIDY1MCAgIDcwNSAgICAgIDAuNiAgICovCj4gPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLV4gNzAwCj4gPiA+IAo+ ID4gPiA+ICsJeyAweDYsIDB4N0YsIDB4MzUsIDB4MDAsIDB4MEEgfSwJLyogNjAwICAgOTAwICAg ICAgMy41ICAgKi8KPiA+ID4gPiArCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8q IDkwMCAgIDkwMCAgICAgIDAuMCAgICovCj4gPiA+ID4gIH07Cj4gPiA+ID4gIAo+ID4gPiA+IC0v KiBWb2x0YWdlIFN3aW5nIFByb2dyYW1taW5nIGZvciBWY2NJTyAwLjk1ViBmb3IgRFAgKi8KPiA+ ID4gPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBpY2xfY29tYm9fcGh5X2RkaV9idWZfdHJhbnMgaWNs X2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hkbWlfMF85NVZbXSA9IHsKPiA+ID4gPiAt CQkJCS8qIFZvbHRhZ2UgbVYgIGRiICAgICovCj4gPiA+ID4gLQl7IDB4MiwgMHg5OCwgMHgwMDE4 IH0sCS8qIDQwMCAgICAgICAgIDAuMCAgICovCj4gPiA+ID4gLQl7IDB4MiwgMHg5OCwgMHgzMDE1 IH0sCS8qIDQwMCAgICAgICAgIDMuNSAgICovCj4gPiA+ID4gLQl7IDB4MiwgMHg5OCwgMHg2MDEy IH0sCS8qIDQwMCAgICAgICAgIDYuMCAgICovCj4gPiA+ID4gLQl7IDB4MiwgMHg5OCwgMHg5MDBG IH0sCS8qIDQwMCAgICAgICAgIDkuNSAgICovCj4gPiA+ID4gLQl7IDB4NCwgMHg5OCwgMHgwMDE4 IH0sCS8qIDYwMCAgICAgICAgIDAuMCAgICovCj4gPiA+ID4gLQl7IDB4NCwgMHg5OCwgMHgzMDE1 IH0sCS8qIDYwMCAgICAgICAgIDMuNSAgICovCj4gPiA+ID4gLQl7IDB4NCwgMHg5OCwgMHg2MDEy IH0sCS8qIDYwMCAgICAgICAgIDYuMCAgICovCj4gPiA+ID4gLQl7IDB4NSwgMHg3NiwgMHgwMDE4 IH0sCS8qIDgwMCAgICAgICAgIDAuMCAgICovCj4gPiA+ID4gLQl7IDB4NSwgMHg3NiwgMHgzMDE1 IH0sCS8qIDgwMCAgICAgICAgIDMuNSAgICovCj4gPiA+ID4gLQl7IDB4NiwgMHg5OCwgMHgwMDE4 IH0sCS8qIDEyMDAgICAgICAgIDAuMCAgICovCj4gPiA+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg Y25sX2RkaV9idWZfdHJhbnMgaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9sb3dz d2luZ1tdID0gewo+ID4gPiA+ICsJCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwo+ID4g PiA+ICsJeyAweDAsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMjAwICAgMjAwICAgICAg MC4wICAgKi8KPiA+ID4gPiArCXsgMHg4LCAweDdGLCAweDM4LCAweDAwLCAweDA3IH0sCS8qIDIw MCAgIDI1MCAgICAgIDEuOSAgICovCj4gPiA+ID4gKwl7IDB4MSwgMHg3RiwgMHgzMywgMHgwMCwg MHgwQyB9LAkvKiAyMDAgICAzMDAgICAgICAzLjUgICAqLwo+ID4gPiA+ICsJeyAweDksIDB4N0Ys IDB4MzEsIDB4MDAsIDB4MEUgfSwJLyogMjAwICAgMzUwICAgICAgNC45ICAgKi8KPiA+ID4gPiAr CXsgMHg4LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDI1MCAgIDI1MCAgICAgIDAuMCAg ICovCj4gPiA+ID4gKwl7IDB4MSwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAyNTAgICAz MDAgICAgICAxLjYgICAqLwo+ID4gPiA+ICsJeyAweDksIDB4N0YsIDB4MzUsIDB4MDAsIDB4MEEg fSwJLyogMjUwICAgMzUwICAgICAgMi45ICAgKi8KPiA+ID4gPiArCXsgMHgxLCAweDdGLCAweDNG LCAweDAwLCAweDAwIH0sCS8qIDMwMCAgIDMwMCAgICAgIDAuMCAgICovCj4gPiA+ID4gKwl7IDB4 OSwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAzMDAgICAzNTAgICAgICAxLjMgICAqLwo+ ID4gPiA+ICsJeyAweDksIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAg ICAgMC4wICAgKi8KPiA+ID4gPiAgfTsKPiA+ID4gPiAgCj4gPiA+ID4gLS8qIEZJWE1FIC0gQWZ0 ZXIgdGFibGUgaXMgdXBkYXRlZCBpbiBCc3BlYyAqLwo+ID4gPiA+IC0vKiBWb2x0YWdlIFN3aW5n IFByb2dyYW1taW5nIGZvciBWY2NJTyAwLjk1ViBmb3IgZURQICovCj4gPiA+ID4gLXN0YXRpYyBj b25zdCBzdHJ1Y3QgaWNsX2NvbWJvX3BoeV9kZGlfYnVmX3RyYW5zIGljbF9jb21ib19waHlfZGRp X3RyYW5zbGF0aW9uc19lZHBfMF85NVZbXSA9IHsKPiA+ID4gPiAtCQkJCS8qIFZvbHRhZ2UgbVYg IGRiICAgICovCj4gPiA+ID4gLQl7IDB4MCwgMHgwMCwgMHgwMCB9LAkvKiAyMDAgICAgICAgICAw LjAgICAqLwo+ID4gPiA+IC0JeyAweDAsIDB4MDAsIDB4MDAgfSwJLyogMjAwICAgICAgICAgMS41 ICAgKi8KPiA+ID4gPiAtCXsgMHgwLCAweDAwLCAweDAwIH0sCS8qIDIwMCAgICAgICAgIDQuMCAg ICovCj4gPiA+ID4gLQl7IDB4MCwgMHgwMCwgMHgwMCB9LAkvKiAyMDAgICAgICAgICA2LjAgICAq Lwo+ID4gPiA+IC0JeyAweDAsIDB4MDAsIDB4MDAgfSwJLyogMjUwICAgICAgICAgMC4wICAgKi8K PiA+ID4gPiAtCXsgMHgwLCAweDAwLCAweDAwIH0sCS8qIDI1MCAgICAgICAgIDEuNSAgICovCj4g PiA+ID4gLQl7IDB4MCwgMHgwMCwgMHgwMCB9LAkvKiAyNTAgICAgICAgICA0LjAgICAqLwo+ID4g PiA+IC0JeyAweDAsIDB4MDAsIDB4MDAgfSwJLyogMzAwICAgICAgICAgMC4wICAgKi8KPiA+ID4g PiAtCXsgMHgwLCAweDAwLCAweDAwIH0sCS8qIDMwMCAgICAgICAgIDEuNSAgICovCj4gPiA+ID4g LQl7IDB4MCwgMHgwMCwgMHgwMCB9LAkvKiAzNTAgICAgICAgICAwLjAgICAqLwo+ID4gPiA+ICtz dGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGljbF9jb21ib19waHlfZGRpX3Ry YW5zbGF0aW9uc19lZHBfaGJyM1tdID0gewo+ID4gPiA+ICsJCQkJCQkvKiBOVCBtViBUcmFucyBt ViBkYiAgICAqLwo+ID4gPiA+ICsJeyAweEEsIDB4MzUsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyog MzUwICAgMzUwICAgICAgMC4wICAgKi8KPiA+ID4gPiArCXsgMHhBLCAweDRGLCAweDM3LCAweDAw LCAweDA4IH0sCS8qIDM1MCAgIDUwMCAgICAgIDMuMSAgICovCj4gPiA+ID4gKwl7IDB4QywgMHg3 MSwgMHgyRiwgMHgwMCwgMHgxMCB9LAkvKiAzNTAgICA3MDAgICAgICA2LjAgICAqLwo+ID4gPiA+ ICsJeyAweDYsIDB4N0YsIDB4MkIsIDB4MDAsIDB4MTQgfSwJLyogMzUwICAgOTAwICAgICAgOC4y ICAgKi8KPiA+ID4gPiArCXsgMHhBLCAweDRDLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDUwMCAg IDUwMCAgICAgIDAuMCAgICovCj4gPiA+ID4gKwl7IDB4QywgMHg3MywgMHgzNCwgMHgwMCwgMHgw QiB9LAkvKiA1MDAgICA3MDAgICAgICAyLjkgICAqLwo+ID4gPiA+ICsJeyAweDYsIDB4N0YsIDB4 MkYsIDB4MDAsIDB4MTAgfSwJLyogNTAwICAgOTAwICAgICAgNS4xICAgKi8KPiA+ID4gPiArCXsg MHhDLCAweDZDLCAweDNDLCAweDAwLCAweDAzIH0sCS8qIDY1MCAgIDcwMCAgICAgIDAuNiAgICov Cj4gPiA+ID4gKwl7IDB4NiwgMHg3RiwgMHgzNSwgMHgwMCwgMHgwQSB9LAkvKiA2MDAgICA5MDAg ICAgICAzLjUgICAqLwo+ID4gPiA+ICsJeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJ LyogOTAwICAgOTAwICAgICAgMC4wICAgKi8KPiA+ID4gPiAgfTsKPiA+ID4gPiAgCj4gPiA+ID4g LS8qIFZvbHRhZ2UgU3dpbmcgUHJvZ3JhbW1pbmcgZm9yIFZjY0lPIDEuMDVWIGZvciBEUCAqLwo+ ID4gPiA+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGljbF9jb21ib19waHlfZGRpX2J1Zl90cmFucyBp Y2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGRtaV8xXzA1VltdID0gewo+ID4gPiA+ IC0JCQkJLyogVm9sdGFnZSBtViAgZGIgICAgKi8KPiA+ID4gPiAtCXsgMHgyLCAweDk4LCAweDAw MTggfSwJLyogNDAwICAgICAgICAgMC4wICAgKi8KPiA+ID4gPiAtCXsgMHgyLCAweDk4LCAweDMw MTUgfSwJLyogNDAwICAgICAgICAgMy41ICAgKi8KPiA+ID4gPiAtCXsgMHgyLCAweDk4LCAweDYw MTIgfSwJLyogNDAwICAgICAgICAgNi4wICAgKi8KPiA+ID4gPiAtCXsgMHgyLCAweDk4LCAweDkw MEYgfSwJLyogNDAwICAgICAgICAgOS41ICAgKi8KPiA+ID4gPiAtCXsgMHg0LCAweDk4LCAweDAw MTggfSwJLyogNjAwICAgICAgICAgMC4wICAgKi8KPiA+ID4gPiAtCXsgMHg0LCAweDk4LCAweDMw MTUgfSwJLyogNjAwICAgICAgICAgMy41ICAgKi8KPiA+ID4gPiAtCXsgMHg0LCAweDk4LCAweDYw MTIgfSwJLyogNjAwICAgICAgICAgNi4wICAgKi8KPiA+ID4gPiAtCXsgMHg1LCAweDcxLCAweDAw MTggfSwJLyogODAwICAgICAgICAgMC4wICAgKi8KPiA+ID4gPiAtCXsgMHg1LCAweDcxLCAweDMw MTUgfSwJLyogODAwICAgICAgICAgMy41ICAgKi8KPiA+ID4gPiAtCXsgMHg2LCAweDk4LCAweDAw MTggfSwJLyogMTIwMCAgICAgICAgMC4wICAgKi8KPiA+ID4gPiArc3RhdGljIGNvbnN0IHN0cnVj dCBjbmxfZGRpX2J1Zl90cmFucyBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRtaVtd ID0gewo+ID4gPiA+ICsJCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwo+ID4gPiA+ICsJ eyAweEEsIDB4NjAsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNDUwICAgNDUwICAgICAgMC4wICAg Ki8KPiA+ID4gPiArCXsgMHhCLCAweDczLCAweDM2LCAweDAwLCAweDA5IH0sCS8qIDQ1MCAgIDY1 MCAgICAgIDMuMiAgICovCj4gPiA+ID4gKwl7IDB4NiwgMHg3RiwgMHgzMSwgMHgwMCwgMHgwRSB9 LAkvKiA0NTAgICA4NTAgICAgICA1LjUgICAqLwo+ID4gPiA+ICsJeyAweEIsIDB4NzMsIDB4M0Ys IDB4MDAsIDB4MDAgfSwJLyogNjUwICAgNjUwICAgICAgMC4wICAgQUxTICovCj4gPiA+ID4gKwl7 IDB4NiwgMHg3RiwgMHgzNywgMHgwMCwgMHgwOCB9LAkvKiA2NTAgICA4NTAgICAgICAyLjMgICAq Lwo+ID4gPiA+ICsJeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogODUwICAgODUw ICAgICAgMC4wICAgKi8KPiA+ID4gPiArCXsgMHg2LCAweDdGLCAweDM1LCAweDAwLCAweDBBIH0s CS8qIDYwMCAgIDg1MCAgICAgIDMuMCAgICovCj4gPiA+ID4gIH07Cj4gPiA+ID4gIAo+ID4gPiA+ IC0vKiBGSVhNRSAtIEFmdGVyIHRhYmxlIGlzIHVwZGF0ZWQgaW4gQnNwZWMgKi8KPiA+ID4gPiAt LyogVm9sdGFnZSBTd2luZyBQcm9ncmFtbWluZyBmb3IgVmNjSU8gMS4wNVYgZm9yIGVEUCAqLwo+ ID4gPiA+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGljbF9jb21ib19waHlfZGRpX2J1Zl90cmFucyBp Y2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwXzFfMDVWW10gPSB7Cj4gPiA+ID4gLQkJ CQkvKiBWb2x0YWdlIG1WICBkYiAgICAqLwo+ID4gPiA+IC0JeyAweDAsIDB4MDAsIDB4MDAgfSwJ LyogMjAwICAgICAgICAgMC4wICAgKi8KPiA+ID4gPiAtCXsgMHgwLCAweDAwLCAweDAwIH0sCS8q IDIwMCAgICAgICAgIDEuNSAgICovCj4gPiA+ID4gLQl7IDB4MCwgMHgwMCwgMHgwMCB9LAkvKiAy MDAgICAgICAgICA0LjAgICAqLwo+ID4gPiA+IC0JeyAweDAsIDB4MDAsIDB4MDAgfSwJLyogMjAw ICAgICAgICAgNi4wICAgKi8KPiA+ID4gPiAtCXsgMHgwLCAweDAwLCAweDAwIH0sCS8qIDI1MCAg ICAgICAgIDAuMCAgICovCj4gPiA+ID4gLQl7IDB4MCwgMHgwMCwgMHgwMCB9LAkvKiAyNTAgICAg ICAgICAxLjUgICAqLwo+ID4gPiA+IC0JeyAweDAsIDB4MDAsIDB4MDAgfSwJLyogMjUwICAgICAg ICAgNC4wICAgKi8KPiA+ID4gPiAtCXsgMHgwLCAweDAwLCAweDAwIH0sCS8qIDMwMCAgICAgICAg IDAuMCAgICovCj4gPiA+ID4gLQl7IDB4MCwgMHgwMCwgMHgwMCB9LAkvKiAzMDAgICAgICAgICAx LjUgICAqLwo+ID4gPiA+IC0JeyAweDAsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgICAgICAgMC4w ICAgKi8KPiA+ID4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBpY2xf Y29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfbWlwaVtdID0gewo+ID4gPiA+ICsJCQkJCQkvKiBO VCBtViBUcmFucyBtViBkYiAgICAqLwo+ID4gPiA+ICsJeyAweDIsIDB4N0YsIDB4M0YsIDB4MDAs IDB4MDAgfSwJLyogNDAwICAgNDAwICAgICAgMC4wICAgKi8KPiA+ID4gCj4gPiA+IFRoZSBEU0kg Y29kZSBoYXMgaXRzIG93biBQSFkgcHJvZ3JhbW1pbmcgYXRtLCBhbmQgdGhpcyB0YWJsZSBoZXJl IGlzCj4gPiA+IHVudXNlZCBzbyBubyBuZWVkIGFkZGluZyBpdC4KPiA+ID4gCj4gPiA+IFVucmVs YXRlZCBidXQgbG9va3MgbGlrZSB0aGUgRFNJIGNvZGUgZG9lc24ndCBwcm9ncmFtIElDTF9QT1JU X1RYX0RXNywKPiA+ID4gdGhhdCBzaG91bGQgYmUgZml4ZWQgYXMgYSBmb2xsb3ctdXAuCj4gPiA+ IAo+ID4gPiA+ICB9Owo+ID4gPiA+ICAKPiA+ID4gPiAgc3RydWN0IGljbF9tZ19waHlfZGRpX2J1 Zl90cmFucyB7Cj4gPiA+ID4gQEAgLTg3MSw0MyArODMxLDI0IEBAIHN0YXRpYyBpbnQgc2tsX2J1 Zl90cmFuc19udW1fZW50cmllcyhlbnVtIHBvcnQgcG9ydCwgaW50IG5fZW50cmllcykKPiA+ID4g PiAgCX0KPiA+ID4gPiAgfQo+ID4gPiA+ICAKPiA+ID4gPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBp Y2xfY29tYm9fcGh5X2RkaV9idWZfdHJhbnMgKgo+ID4gPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGNubF9kZGlfYnVmX3RyYW5zICoKPiA+ID4gPiAgaWNsX2dldF9jb21ib19idWZfdHJhbnMoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQgcG9ydCwKPiA+ID4gPiAg CQkJaW50IHR5cGUsIGludCAqbl9lbnRyaWVzKQo+ID4gPiA+ICB7Cj4gPiA+ID4gLQl1MzIgdm9s dGFnZSA9IEk5MTVfUkVBRChJQ0xfUE9SVF9DT01QX0RXMyhwb3J0KSkgJiBWT0xUQUdFX0lORk9f TUFTSzsKPiA+ID4gPiAtCj4gPiA+ID4gLQlpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQICYm IGRldl9wcml2LT52YnQuZWRwLmxvd192c3dpbmcpIHsKPiA+ID4gPiAtCQlzd2l0Y2ggKHZvbHRh Z2UpIHsKPiA+ID4gPiAtCQljYXNlIFZPTFRBR0VfSU5GT18wXzg1VjoKPiA+ID4gPiAtCQkJKm5f ZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF8w Xzg1Vik7Cj4gPiA+ID4gLQkJCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNf ZWRwXzBfODVWOwo+ID4gPiA+IC0JCWNhc2UgVk9MVEFHRV9JTkZPXzBfOTVWOgo+ID4gPiA+IC0J CQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNf ZWRwXzBfOTVWKTsKPiA+ID4gPiAtCQkJcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0 aW9uc19lZHBfMF85NVY7Cj4gPiA+ID4gLQkJY2FzZSBWT0xUQUdFX0lORk9fMV8wNVY6Cj4gPiA+ ID4gLQkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0 aW9uc19lZHBfMV8wNVYpOwo+ID4gPiA+IC0JCQlyZXR1cm4gaWNsX2NvbWJvX3BoeV9kZGlfdHJh bnNsYXRpb25zX2VkcF8xXzA1VjsKPiA+ID4gPiAtCQlkZWZhdWx0Ogo+ID4gPiA+IC0JCQlNSVNT SU5HX0NBU0Uodm9sdGFnZSk7Cj4gPiA+ID4gLQkJCXJldHVybiBOVUxMOwo+ID4gPiA+IC0JCX0K PiA+ID4gPiAtCX0gZWxzZSB7Cj4gPiA+ID4gLQkJc3dpdGNoICh2b2x0YWdlKSB7Cj4gPiA+ID4g LQkJY2FzZSBWT0xUQUdFX0lORk9fMF84NVY6Cj4gPiA+ID4gLQkJCSpuX2VudHJpZXMgPSBBUlJB WV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oZG1pXzBfODVWKTsKPiA+ ID4gPiAtCQkJcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oZG1pXzBf ODVWOwo+ID4gPiA+IC0JCWNhc2UgVk9MVEFHRV9JTkZPXzBfOTVWOgo+ID4gPiA+IC0JCQkqbl9l bnRyaWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGRt aV8wXzk1Vik7Cj4gPiA+ID4gLQkJCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlv bnNfZHBfaGRtaV8wXzk1VjsKPiA+ID4gPiAtCQljYXNlIFZPTFRBR0VfSU5GT18xXzA1VjoKPiA+ ID4gPiAtCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNs YXRpb25zX2RwX2hkbWlfMV8wNVYpOwo+ID4gPiA+IC0JCQlyZXR1cm4gaWNsX2NvbWJvX3BoeV9k ZGlfdHJhbnNsYXRpb25zX2RwX2hkbWlfMV8wNVY7Cj4gPiA+ID4gLQkJZGVmYXVsdDoKPiA+ID4g PiAtCQkJTUlTU0lOR19DQVNFKHZvbHRhZ2UpOwo+ID4gPiA+IC0JCQlyZXR1cm4gTlVMTDsKPiA+ ID4gPiAtCQl9Cj4gPiA+ID4gKwo+ID4gPiA+ICsJaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0hE TUkpIHsKPiA+ID4gPiArCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2Rk aV90cmFuc2xhdGlvbnNfaGRtaSk7Cj4gPiA+ID4gKwkJcmV0dXJuIGljbF9jb21ib19waHlfZGRp X3RyYW5zbGF0aW9uc19oZG1pOwo+ID4gPiA+ICsJfSBlbHNlIGlmICh0eXBlID09IElOVEVMX09V VFBVVF9FRFAgJiYgZGV2X3ByaXYtPnZidC5lZHAubG93X3Zzd2luZykgewo+ID4gPiA+ICsJCSpu X2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBf bG93c3dpbmcpOwo+ID4gPiA+ICsJCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlv bnNfZWRwX2xvd3N3aW5nOwo+ID4gPiAKPiA+ID4gSG0sIGJvdGggaW4gdGhlIENOTCBhbmQgdGhp cyBJQ0wgY29kZSwgbm90IHN1cmUgd2h5IHdlIHdvdWxkIHVzZSB0aGUKPiA+ID4gSEJSMiB0YWJs ZSB3aGVuIHRoZSBsb3dfdnN3aW5nIHBhcmFtIGlzIHNldC4gSXQgd291bGQgYmUgbW9yZSBsb2dp Y2FsIHRvCj4gPiA+IG1lIHRoYXQgSEJSMiBpcyB0byBiZSB1c2VkIHdoZW4gdGhlIGFjdHVhbCBs aW5rIHJhdGUgaXMgSEJSMiwgZWxzZSB3ZSdkCj4gPiA+IHVzZSB0aGUgSEJSMyB0YWJsZS4gQlhU LCBJQ0wgc3RpbGwgZGVmaW5lZCB0aGVzZSBsb3cgdnN3aW5nIHRhYmxlcyBidXQKPiA+ID4gQ05M IGFuZCBJQ0wgZG9uJ3QuIFdlIHNob3VsZCBhdCBsZWFzdCBhc2sgZm9yIGNsYXJpZmljYXRpb24g YWJvdXQgdGhpcwo+ID4gPiBpbiBCU3BlYy4KPiA+IAo+ID4gQmFzZWQgb24gdGhlIHJlY2VudCBC U3BlYyB1cGRhdGUsIHdlIHNob3VsZCBqdXN0IGlnbm9yZQo+ID4gZGV2X3ByaXYtPnZidC5lZHAu bG93X3Zzd2luZyBhbmQgdXNlIHRoZSAiZWRwIHVwIHRvIEhCUjIiIHRhYmxlIGlmIHRoZQo+ID4g bGluayByYXRlIGlzIDw9IEhCUjIgYW5kIHRoZSAiZWRwIEhCUjMiIHRhYmxlIG90aGVyd2lzZS4K PiAKPiBBZnRlciBBcnQncyBjbGFyaWZpY2F0aW9uIEkgdGhpbmsgdGhlIGNvcnJlY3QgbG9naWMg d2lsbCBiZToKPiAKPiBpZiAoaGRtaSkgewo+IAlyZXR1cm4gLi4uOwo+IGVsc2UgaWYgKHJhdGUg PT0gOC4xKSAvLyBjb3VsZCBjaGVjayBmb3IgZWRwIHRvbyBoZXJlIGkgc3VwcG9zZQo+IAlyZXR1 cm4gaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIzOwo+IGVsc2UgaWYgKGVk cCAmJiBsb3dfdnN3aW5nKQo+IAlyZXR1cm4gaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25z X2VkcF9oYnIyOwo+IGVsc2UKPiAJcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9u c19kcF9oYnIyOwo+IAo+IAo+IEFuZCBJIGJlbGlldmUgaWNsX21heF9zb3VyY2VfcmF0ZSgpIG5l ZWRzIHRvIGJlIGNoYW5nZWQgdG8KPiBzb21ldGhpbmcgbGlrZToKPiAKPiBpZiAoaXNfY29tYm9f cGh5KCkgJiYgIWVkcCkKPiAJcmV0dXJuIDUuNDsKPiByZXR1cm4gOC4xOwoKWWVwLCBjb3JyZWN0 LCBJIG1pc3JlYWQgaW4gaGlzIGNvbW1lbnQgdGhpbmtpbmcgJ0RQIHVwIHRvIEhCUjInIGlzCidl RFAgdXAgdG8gSEJSMicuIFRoZSBhYm92ZSBsb2dpYyB5b3UgZGVzY3JpYmUgc2VlbXMgY29ycmVj dCB0byBtZS4KCj4gCj4gPiAKPiA+IENvdWxkIHlvdSByZXNlbmQgdGhlIHBhdGNoIHdpdGggdGhh dCBjaGFuZ2VkIChhbmQgdGhlIDIgb3RoZXIgaXNzdWVzCj4gPiBhYm92ZSBhZGRyZXNzZWQpPwo+ ID4gCj4gPiBUaGFua3MsCj4gPiBJbXJlCj4gPiAKPiA+ID4gCj4gPiA+IE90aGVyIHRoYW4gdGhl IGFib3ZlIHRoZSBwYXRjaCBsb29rcyBvaywgYnV0IEknZCB3YWl0IGZvciB0aGUgQlNwZWMKPiA+ ID4gY2xhcmlmaWNhdGlvbiB1bnRpbCBhZGRpbmcgUi1iLgo+ID4gPiAKPiA+ID4gPiArCX0gZWxz ZSBpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7Cj4gPiA+ID4gKwkJKm5fZW50cmllcyA9 IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIzKTsKPiA+ ID4gPiArCQlyZXR1cm4gaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIzOwo+ ID4gPiA+ICAJfQo+ID4gPiA+ICsKPiA+ID4gPiArCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGlj bF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcCk7Cj4gPiA+ID4gKwlyZXR1cm4gaWNsX2Nv bWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwOwo+ID4gPiA+ICB9Cj4gPiA+ID4gIAo+ID4gPiA+ ICBzdGF0aWMgaW50IGludGVsX2RkaV9oZG1pX2xldmVsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgZW51bSBwb3J0IHBvcnQpCj4gPiA+ID4gQEAgLTI0NjQsNyArMjQwNSw3IEBA IHN0YXRpYyB2b2lkIGNubF9kZGlfdnN3aW5nX3NlcXVlbmNlKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLAo+ID4gPiA+ICBzdGF0aWMgdm9pZCBpY2xfZGRpX2NvbWJvX3Zzd2luZ19wcm9n cmFtKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ID4gPiAgCQkJCQkgdTMy IGxldmVsLCBlbnVtIHBvcnQgcG9ydCwgaW50IHR5cGUpCj4gPiA+ID4gIHsKPiA+ID4gPiAtCWNv bnN0IHN0cnVjdCBpY2xfY29tYm9fcGh5X2RkaV9idWZfdHJhbnMgKmRkaV90cmFuc2xhdGlvbnMg PSBOVUxMOwo+ID4gPiA+ICsJY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICpkZGlfdHJh bnNsYXRpb25zID0gTlVMTDsKPiA+ID4gPiAgCXUzMiBuX2VudHJpZXMsIHZhbDsKPiA+ID4gPiAg CWludCBsbjsKPiA+ID4gPiAgCj4gPiA+ID4gQEAgLTI0NzgsMzQgKzI0MTksMjMgQEAgc3RhdGlj IHZvaWQgaWNsX2RkaV9jb21ib192c3dpbmdfcHJvZ3JhbShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gPiA+ID4gIAkJbGV2ZWwgPSBuX2VudHJpZXMgLSAxOwo+ID4gPiA+ICAJ fQo+ID4gPiA+ICAKPiA+ID4gPiAtCS8qIFNldCBQT1JUX1RYX0RXNSBSdGVybSBTZWwgdG8gMTEw Yi4gKi8KPiA+ID4gPiArCS8qIFNldCBQT1JUX1RYX0RXNSAqLwo+ID4gPiA+ICAJdmFsID0gSTkx NV9SRUFEKElDTF9QT1JUX1RYX0RXNV9MTjAocG9ydCkpOwo+ID4gPiA+IC0JdmFsICY9IH5SVEVS TV9TRUxFQ1RfTUFTSzsKPiA+ID4gPiArCXZhbCAmPSB+KFNDQUxJTkdfTU9ERV9TRUxfTUFTSyB8 IFJURVJNX1NFTEVDVF9NQVNLIHwKPiA+ID4gPiArCQkgIFRBUDJfRElTQUJMRSB8IFRBUDNfRElT QUJMRSk7Cj4gPiA+ID4gKwl2YWwgfD0gU0NBTElOR19NT0RFX1NFTCgweDIpOwo+ID4gPiA+ICAJ dmFsIHw9IFJURVJNX1NFTEVDVCgweDYpOwo+ID4gPiA+IC0JSTkxNV9XUklURShJQ0xfUE9SVF9U WF9EVzVfR1JQKHBvcnQpLCB2YWwpOwo+ID4gPiA+IC0KPiA+ID4gPiAtCS8qIFByb2dyYW0gUE9S VF9UWF9EVzUgKi8KPiA+ID4gPiAtCXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9UWF9EVzVfTE4w KHBvcnQpKTsKPiA+ID4gPiAtCS8qIFNldCBEaXNhYmxlVGFwMiBhbmQgRGlzYWJsZVRhcDMgaWYg TUlQSSBEU0kKPiA+ID4gPiAtCSAqIENsZWFyIERpc2FibGVUYXAyIGFuZCBEaXNhYmxlVGFwMyBm b3IgYWxsIG90aGVyIFBvcnRzCj4gPiA+ID4gLQkgKi8KPiA+ID4gPiAtCWlmICh0eXBlID09IElO VEVMX09VVFBVVF9EU0kpIHsKPiA+ID4gPiAtCQl2YWwgfD0gVEFQMl9ESVNBQkxFOwo+ID4gPiA+ IC0JCXZhbCB8PSBUQVAzX0RJU0FCTEU7Cj4gPiA+ID4gLQl9IGVsc2Ugewo+ID4gPiA+IC0JCXZh bCAmPSB+VEFQMl9ESVNBQkxFOwo+ID4gPiA+IC0JCXZhbCAmPSB+VEFQM19ESVNBQkxFOwo+ID4g PiA+IC0JfQo+ID4gPiA+ICsJdmFsIHw9IFRBUDNfRElTQUJMRTsKPiA+ID4gPiAgCUk5MTVfV1JJ VEUoSUNMX1BPUlRfVFhfRFc1X0dSUChwb3J0KSwgdmFsKTsKPiA+ID4gPiAgCj4gPiA+ID4gIAkv KiBQcm9ncmFtIFBPUlRfVFhfRFcyICovCj4gPiA+ID4gIAl2YWwgPSBJOTE1X1JFQUQoSUNMX1BP UlRfVFhfRFcyX0xOMChwb3J0KSk7Cj4gPiA+ID4gIAl2YWwgJj0gfihTV0lOR19TRUxfTE9XRVJf TUFTSyB8IFNXSU5HX1NFTF9VUFBFUl9NQVNLIHwKPiA+ID4gPiAgCQkgUkNPTVBfU0NBTEFSX01B U0spOwo+ID4gPiA+IC0JdmFsIHw9IFNXSU5HX1NFTF9VUFBFUihkZGlfdHJhbnNsYXRpb25zW2xl dmVsXS5kdzJfc3dpbmdfc2VsZWN0KTsKPiA+ID4gPiAtCXZhbCB8PSBTV0lOR19TRUxfTE9XRVIo ZGRpX3RyYW5zbGF0aW9uc1tsZXZlbF0uZHcyX3N3aW5nX3NlbGVjdCk7Cj4gPiA+ID4gKwl2YWwg fD0gU1dJTkdfU0VMX1VQUEVSKGRkaV90cmFuc2xhdGlvbnNbbGV2ZWxdLmR3Ml9zd2luZ19zZWwp Owo+ID4gPiA+ICsJdmFsIHw9IFNXSU5HX1NFTF9MT1dFUihkZGlfdHJhbnNsYXRpb25zW2xldmVs XS5kdzJfc3dpbmdfc2VsKTsKPiA+ID4gPiAgCS8qIFByb2dyYW0gUmNvbXAgc2NhbGFyIGZvciBl dmVyeSB0YWJsZSBlbnRyeSAqLwo+ID4gPiA+IC0JdmFsIHw9IFJDT01QX1NDQUxBUihkZGlfdHJh bnNsYXRpb25zW2xldmVsXS5kdzJfc3dpbmdfc2NhbGFyKTsKPiA+ID4gPiArCXZhbCB8PSBSQ09N UF9TQ0FMQVIoMHg5OCk7Cj4gPiA+ID4gIAlJOTE1X1dSSVRFKElDTF9QT1JUX1RYX0RXMl9HUlAo cG9ydCksIHZhbCk7Cj4gPiA+ID4gIAo+ID4gPiA+ICAJLyogUHJvZ3JhbSBQT1JUX1RYX0RXNCAq Lwo+ID4gPiA+IEBAIC0yNTE0LDkgKzI0NDQsMTcgQEAgc3RhdGljIHZvaWQgaWNsX2RkaV9jb21i b192c3dpbmdfcHJvZ3JhbShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+ ID4gIAkJdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX1RYX0RXNF9MTihwb3J0LCBsbikpOwo+ID4g PiA+ICAJCXZhbCAmPSB+KFBPU1RfQ1VSU09SXzFfTUFTSyB8IFBPU1RfQ1VSU09SXzJfTUFTSyB8 Cj4gPiA+ID4gIAkJCSBDVVJTT1JfQ09FRkZfTUFTSyk7Cj4gPiA+ID4gLQkJdmFsIHw9IGRkaV90 cmFuc2xhdGlvbnNbbGV2ZWxdLmR3NF9zY2FsaW5nOwo+ID4gPiA+ICsJCXZhbCB8PSBQT1NUX0NV UlNPUl8xKGRkaV90cmFuc2xhdGlvbnNbbGV2ZWxdLmR3NF9wb3N0X2N1cnNvcl8xKTsKPiA+ID4g PiArCQl2YWwgfD0gUE9TVF9DVVJTT1JfMihkZGlfdHJhbnNsYXRpb25zW2xldmVsXS5kdzRfcG9z dF9jdXJzb3JfMik7Cj4gPiA+ID4gKwkJdmFsIHw9IENVUlNPUl9DT0VGRihkZGlfdHJhbnNsYXRp b25zW2xldmVsXS5kdzRfY3Vyc29yX2NvZWZmKTsKPiA+ID4gPiAgCQlJOTE1X1dSSVRFKElDTF9Q T1JUX1RYX0RXNF9MTihwb3J0LCBsbiksIHZhbCk7Cj4gPiA+ID4gIAl9Cj4gPiA+ID4gKwo+ID4g PiA+ICsJLyogUHJvZ3JhbSBQT1JUX1RYX0RXNyAqLwo+ID4gPiA+ICsJdmFsID0gSTkxNV9SRUFE KElDTF9QT1JUX1RYX0RXN19MTjAocG9ydCkpOwo+ID4gPiA+ICsJdmFsICY9IH5OX1NDQUxBUl9N QVNLOwo+ID4gPiA+ICsJdmFsIHw9IE5fU0NBTEFSKGRkaV90cmFuc2xhdGlvbnNbbGV2ZWxdLmR3 N19uX3NjYWxhcik7Cj4gPiA+ID4gKwlJOTE1X1dSSVRFKElDTF9QT1JUX1RYX0RXN19HUlAocG9y dCksIHZhbCk7Cj4gPiA+ID4gIH0KPiA+ID4gPiAgCj4gPiA+ID4gIHN0YXRpYyB2b2lkIGljbF9j b21ib19waHlfZGRpX3Zzd2luZ19zZXF1ZW5jZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKPiA+ID4gPiAtLSAKPiA+ID4gPiAxLjkuMQo+ID4gPiA+IAo+ID4gPiBfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4gPiBJbnRlbC1nZnggbWFpbGlu ZyBsaXN0Cj4gPiA+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+ID4gaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKPiA+IF9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiBJbnRlbC1n ZnggbWFpbGluZyBsaXN0Cj4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiBo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+ IAo+IC0tIAo+IFZpbGxlIFN5cmrDpGzDpAo+IEludGVsCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=