From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan De Oliveira Subject: Re: [PATCH] Revert "drm/i915/skl: New ddb allocation algorithm" Date: Thu, 15 Jun 2017 09:53:47 +0300 Message-ID: <1497509627.3260.1.camel@gmail.com> References: <1497376350-3400-1-git-send-email-rodrigo.vivi@intel.com> <20170613180705.GJ19328@mdroper-desk.amr.corp.intel.com> <1497440826.14142.2.camel@gmail.com> <6117a22b-f454-f72b-1dba-59b2790458db@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ot0-x243.google.com (mail-ot0-x243.google.com [IPv6:2607:f8b0:4003:c0f::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id E6E926E6A1 for ; Thu, 15 Jun 2017 06:53:54 +0000 (UTC) Received: by mail-ot0-x243.google.com with SMTP id z48so504953otz.2 for ; Wed, 14 Jun 2017 23:53:54 -0700 (PDT) In-Reply-To: <6117a22b-f454-f72b-1dba-59b2790458db@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Mahesh Kumar , Rodrigo Vivi , Matt Roper Cc: intel-gfx , Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAyMDE3LTA2LTE1IGF0IDA5OjQ0ICswNTMwLCBNYWhlc2ggS3VtYXIgd3JvdGU6Cj4g SGkgQW5kZXIsCj4gCj4gCj4gT24gV2VkbmVzZGF5IDE0IEp1bmUgMjAxNyAwNToxNyBQTSwgQW5k ZXIgQ29uc2VsdmFuIERlIE9saXZlaXJhIHdyb3RlOgo+ID4gT24gVHVlLCAyMDE3LTA2LTEzIGF0 IDEyOjA2IC0wNzAwLCBSb2RyaWdvIFZpdmkgd3JvdGU6Cj4gPiA+IE9uIFR1ZSwgSnVuIDEzLCAy MDE3IGF0IDExOjA3IEFNLCBNYXR0IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29tPiB3 cm90ZToKPiA+ID4gPiBPbiBUdWUsIEp1biAxMywgMjAxNyBhdCAxMDo1MjozMEFNIC0wNzAwLCBS b2RyaWdvIFZpdmkgd3JvdGU6Cj4gPiA+ID4gPiBUaGlzIHJldmVydHMgY29tbWl0IGJiOWQ4NWY2 ZTlkZThmZWY1MjM2YzA3NjUzMGVhYjY3YTJmMjQzMWIuCj4gPiA+ID4gPiAKPiA+ID4gPiA+IE5l dyBkZGIgYWxsb2NhdGlvbiBhbGdvcml0aG0gaXMgYSBzaG93IHN0b3BwZXIgb24gbXkgU0tMIHN5 c3RlbS4KPiA+ID4gPiA+IAo+ID4gPiA+ID4gQmVzaWRlcyBub3QgYmUgYWJsZSB0byBnZXQgZXh0 ZXJuYWwgRFAgNGtANjAgKHRocm91Z2ggVVNCIHR5cGUgQyksCj4gPiA+ID4gPiBJdCBmdWxseSBo YW5nIG15IHNjcmVlbiB3aGVuIHVucGx1Z2dpbmcgdGhlIFVTQiB0eXBlIEMuCj4gPiA+ID4gPiAK PiA+ID4gPiA+IENjOiBNYWhlc2ggS3VtYXIgPG1haGVzaDEua3VtYXJAaW50ZWwuY29tPgo+ID4g PiA+ID4gQ2M6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRl bC5jb20+Cj4gPiA+ID4gPiBDYzogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNv bT4KPiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGlu dGVsLmNvbT4KPiA+ID4gPiAKPiA+ID4gPiBJcyB0aGVyZSBhIGJ1Z3ppbGxhIGVudHJ5IHdpdGgg ZGV0YWlscy9sb2dzIGZyb20gdGhlIGZhaWx1cmUgd2UgY2FuCj4gPiA+ID4gcmVmZXIgdG8/Cj4g PiA+IAo+ID4gPiBub3BlLCBzaW5jZSBJIGtub3cgaXQgd2FzIHdvcmtpbmcgZmV3IHdlZWtzIGFn byBhbmQgdGhlbiBzdG9wcGVkCj4gPiA+IHdvcmtpbmcgSSB3ZW50IGRpcmVjdGx5Cj4gPiA+IHRv IGJpc2VjdCBzbyBJIGNvdWxkIGdldCBteSBzeXN0ZW0gdXNhYmxlIHF1aWNrbHkgYWdhaW4uCj4g PiA+IAo+ID4gPiBCdXQgeWVzLCBJIG5lZWQgdG8gb3BlbiBhIHByb3BlciBidWd6aWxsYSBhbmQg cHJvdmlkZSBsb2dzLgo+ID4gPiBTaG91bGQgd2UgcmV2ZXJ0IGZpcnN0IGFuZCBncmFiIGxvZ3Mg bGF0dGVyIG9yIHdlIGFyZSBnb2luZyB0byB0cnkgdG8KPiA+ID4gYW5hbHlzZSBsb2dzIGFuZCBm aXg/Cj4gPiA+IAo+ID4gPiBBbnl3YXlzIHRoaXMgaXMgYSBiaWcgc2hvdyBzdG9wcGVyIHNvIEkg YmVsaWV2ZSB3ZSByZXZlcnQgYXQgbGVhc3QKPiA+ID4gYmVmb3JlIG5leHQgcHVsbCByZXF1ZXN0 Lgo+ID4gCj4gPiBUaGlzIHBhdGNoIGFsc28gY2F1c2VzIGFydGlmYWN0cyBpbiBkdWFsIHNjcmVl biBzZXR1cHMuIEFsbCB0aGUgc2NhbmxpbmVzIGJlbG93Cj4gPiB0aGUgbW91c2UgY3Vyc29yIGFy ZSB3cm9uZywgc29tZXRpbWVzIGNvbnRhaW5pbmcgYSBzaGFkZSBvZiBncmF5IGFuZCBvdGhlcnMK PiA+IHJlcGVhdGluZyB0aGUgaW1hZ2UgYWJvdmUuIEkndmUgc2VlbiB0aGlzIGluIEFQTCBhbmQg R0xLIHVzaW5nIERTSStIRE1JLAo+ID4gZURQK0hETUkgYW5kIERTSStEUC4gSW4gdGhlIERQIGNh c2UsIGhvd2V2ZXIsIHRoZSBzY3JlZW4gZ29lcyBibGFuayBhbmQgcmVwb3J0cwo+ID4gbGFjayBv ZiBzaWduYWwuCj4gPiAKPiA+IEkndmUgbm90aWNlZCBmaWZvIHVuZGVycnVuIG1lc3NhZ2VzLiBJ IGNvbXBhcmVkIHRoZSBkZGIgYWxsb2NhdGlvbiBpbiBHTEsgd2l0aCBhCj4gPiB3b3JraW5nIGFu ZCBub24td29ya2luZyBrZXJuZWwsIGJ1dCB0aGV5IHdlcmUgdGhlIHNhbWUuCj4gCj4geW91ciBv YnNlcnZhdGlvbiBsb29rcyBsaWtlIG9uZSB3ZSBvYnNlcnZlZCBpbiBvbmUgb2YgdGhlIExpbnV4 IHZhcmlhbnQgCj4gcHJvZ3JhbS4KPiBUaGVyZSB3YXMgYW4gY29uZmlndXJhdGlvbiB3aGVyZSBs b3dlciBXTS1sZXZlbCBoYXZpbmcgaGlnaGVyIEREQiAKPiByZXF1aXJlbWVudCB0aGFuIGhpZ2hl ciBsZXZlbHMuIFdoaWNoIHdhcyBsZWFkaW5nIHRvIGxvd2VyIFdNIGxldmVscyAKPiBnZXR0aW5n IGRpc2FibGVkLgo+IAo+IENhbiB5b3UgcGxlYXNlIHRyeSB3aXRoIGZvbGxvd2luZyBwYXRjaCB0 byBzZWUgaWYgaXQncyBzb2x2aW5nIHRoZSBwcm9ibGVtLgo+IAo+IGh0dHBzOi8vcGF0Y2h3b3Jr LmZyZWVkZXNrdG9wLm9yZy9wYXRjaC8xNjE1NzEvCgpJIHRlc3RlZCB0aGF0IGluIG15IEdMSywg YnV0IGl0IGRpZG4ndCBoZWxwLiBTdGlsbCBnZXR0aW5nIGFydGlmYWN0cyBmb2xsb3dpbmcKdGhl IG1vdXNlIGN1cnNvci4KCkFuZGVyCgo+IFJvZHJpZ28sCj4gCj4gQ2FuIHlvdSBwbGVhc2UgYWxz byBjaGVjayBpZiB0aGlzIGlzIHRoZSBzYW1lIHJlYXNvbiBmb3IgeW91ciBmYWlsdXJlLiAKPiBJ J20gYXJyYW5naW5nIGZvciBhIHN5c3RlbSB3aXRoIFNLTCtVU0IgdHlwZS1DIERQIDRLQDYwICYg ZURQLiB3aWxsIAo+IGRlYnVnIHRoaXMgZnVydGhlci4KPiAKPiAtTWFoZXNoCj4gCj4gPiAKPiA+ IEFuZGVyCj4gPiA+IFdoZW4geW91IHNheSB5b3UgY2FuJ3QgZ2V0IERQIDRrQDYwLCBhcmUgeW91 IHNlZWluZyBtZXNzYWdlcwo+ID4gPiA+IGluIGRtZXNnIGFib3V0IHRoZSBzZXR1cCBiZWluZyBv dXRzaWRlIHN5c3RlbSB3YXRlcm1hcmsgbGltaXRhdGlvbnMgb3IKPiA+ID4gPiBhcmUgeW91IGp1 c3QgZ2V0dGluZyBhIGJsYWNrIHNjcmVlbj8KPiA+ID4gCj4gPiA+IGp1c3QgZ2V0dGluZyBhIGJs YW5rIHNjcmVlbiBvbiBEUCB3aGVuIHBsdWdnaW5nIHVzYi1jIGFuZCBhIGxvY2tlZC11cAo+ID4g PiBzY3JlZW4gb24gZURQIHdoZW4gcmVtb3ZpbmcgdXNiLWMuCj4gPiA+IAo+ID4gPiA+IAo+ID4g PiA+IE1hdHQKPiA+ID4gPiAKPiA+ID4gPiA+IC0tLQo+ID4gPiA+ID4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wbS5jIHwgMjU3ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KPiA+ID4gPiA+ICAgMSBmaWxlIGNoYW5nZWQsIDk4IGluc2VydGlvbnMoKyksIDE1 OSBkZWxldGlvbnMoLSkKPiA+ID4gPiA+IAo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5j Cj4gPiA+ID4gPiBpbmRleCBhYTlkOGNlLi5kYzQyNzVkIDEwMDY0NAo+ID4gPiA+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ID4gPiA+ID4gQEAgLTQxNDAsNDEgKzQxNDAsMTMgQEAg aW50IHNrbF9jaGVja19waXBlX21heF9waXhlbF9yYXRlKHN0cnVjdCBpbnRlbF9jcnRjICppbnRl bF9jcnRjLAo+ID4gPiA+ID4gICAgICAgIG1pbmltdW1bUExBTkVfQ1VSU09SXSA9IHNrbF9jdXJz b3JfYWxsb2NhdGlvbihudW1fYWN0aXZlKTsKPiA+ID4gPiA+ICAgfQo+ID4gPiA+ID4gCj4gPiA+ ID4gPiAtc3RhdGljIHZvaWQKPiA+ID4gPiA+IC1za2xfZW5hYmxlX3BsYW5lX3dtX2xldmVscyhj b25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+ID4gPiAtICAgICAg ICAgICAgICAgICAgICAgICAgdWludDE2X3QgcGxhbmVfZGRiLAo+ID4gPiA+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQxNl90IG1heF9sZXZlbCwKPiA+ID4gPiA+IC0gICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bSkKPiA+ID4gPiA+IC17Cj4gPiA+ ID4gPiAtICAgICBpbnQgbGV2ZWw7Cj4gPiA+ID4gPiAtICAgICAvKgo+ID4gPiA+ID4gLSAgICAg ICogTm93IGVuYWJsZSBhbGwgbGV2ZWxzIGluIFdNIHN0cnVjdHVyZSB3aGljaCBjYW4gYmUgZW5h YmxlZAo+ID4gPiA+ID4gLSAgICAgICogdXNpbmcgY3VycmVudCBEREIgYWxsb2NhdGlvbgo+ID4g PiA+ID4gLSAgICAgICovCj4gPiA+ID4gPiAtICAgICBmb3IgKGxldmVsID0gaWxrX3dtX21heF9s ZXZlbChkZXZfcHJpdik7IGxldmVsID49IDA7IGxldmVsLS0pIHsKPiA+ID4gPiA+IC0gICAgICAg ICAgICAgc3RydWN0IHNrbF93bV9sZXZlbCAqbGV2ZWxfd20gPSAmd20tPndtW2xldmVsXTsKPiA+ ID4gPiA+IC0KPiA+ID4gPiA+IC0gICAgICAgICAgICAgaWYgKGxldmVsID4gbWF4X2xldmVsIHx8 IGxldmVsX3dtLT5wbGFuZV9yZXNfYiA9PSAwCj4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8fCBsZXZlbF93bS0+cGxhbmVfcmVzX2wgPj0gMzEKPiA+ID4gPiA+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGxldmVsX3dtLT5wbGFuZV9y ZXNfYiA+PSBwbGFuZV9kZGIpIHsKPiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICBsZXZl bF93bS0+cGxhbmVfZW4gPSBmYWxzZTsKPiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICBs ZXZlbF93bS0+cGxhbmVfcmVzX2IgPSAwOwo+ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAg IGxldmVsX3dtLT5wbGFuZV9yZXNfbCA9IDA7Cj4gPiA+ID4gPiAtICAgICAgICAgICAgIH0gZWxz ZSB7Cj4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgbGV2ZWxfd20tPnBsYW5lX2VuID0g dHJ1ZTsKPiA+ID4gPiA+IC0gICAgICAgICAgICAgfQo+ID4gPiA+ID4gLSAgICAgfQo+ID4gPiA+ ID4gLX0KPiA+ID4gPiA+IC0KPiA+ID4gPiA+ICAgc3RhdGljIGludAo+ID4gPiA+ID4gICBza2xf YWxsb2NhdGVfcGlwZV9kZGIoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKPiA+ID4g PiA+IC0gICAgICAgICAgICAgICAgICAgc3RydWN0IHNrbF9waXBlX3dtICpwaXBlX3dtLAo+ID4g PiA+ID4gICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRi IC8qIG91dCAqLykKPiA+ID4gPiA+ICAgewo+ID4gPiA+ID4gICAgICAgIHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSA9IGNzdGF0ZS0+YmFzZS5zdGF0ZTsKPiA+ID4gPiA+ICAgICAgICBz dHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBjc3RhdGUtPmJhc2UuY3J0YzsKPiA+ID4gPiA+ICAgICAg ICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ID4gPiA+ID4gLSAgICAgc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ID4gPiA+ID4g ICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRj KTsKPiA+ID4gPiA+ICAgICAgICBlbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4g PiA+ID4gPiAgICAgICAgc3RydWN0IHNrbF9kZGJfZW50cnkgKmFsbG9jID0gJmNzdGF0ZS0+d20u c2tsLmRkYjsKPiA+ID4gPiA+IEBAIC00MTg3LDkgKzQxNTksNiBAQCBpbnQgc2tsX2NoZWNrX3Bp cGVfbWF4X3BpeGVsX3JhdGUoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCj4gPiA+ID4g PiAgICAgICAgdW5zaWduZWQgcGxhbmVfZGF0YV9yYXRlW0k5MTVfTUFYX1BMQU5FU10gPSB7fTsK PiA+ID4gPiA+ICAgICAgICB1bnNpZ25lZCBwbGFuZV95X2RhdGFfcmF0ZVtJOTE1X01BWF9QTEFO RVNdID0ge307Cj4gPiA+ID4gPiAgICAgICAgdWludDE2X3QgdG90YWxfbWluX2Jsb2NrcyA9IDA7 Cj4gPiA+ID4gPiAtICAgICB1aW50MTZfdCB0b3RhbF9sZXZlbF9kZGI7Cj4gPiA+ID4gPiAtICAg ICB1aW50MTZfdCBwbGFuZV9ibG9ja3MgPSAwOwo+ID4gPiA+ID4gLSAgICAgaW50IG1heF9sZXZl bCwgbGV2ZWw7Cj4gPiA+ID4gPiAKPiA+ID4gPiA+ICAgICAgICAvKiBDbGVhciB0aGUgcGFydGl0 aW9uaW5nIGZvciBkaXNhYmxlZCBwbGFuZXMuICovCj4gPiA+ID4gPiAgICAgICAgbWVtc2V0KGRk Yi0+cGxhbmVbcGlwZV0sIDAsIHNpemVvZihkZGItPnBsYW5lW3BpcGVdKSk7Cj4gPiA+ID4gPiBA QCAtNDIyOCw0OCArNDE5NywxMCBAQCBpbnQgc2tsX2NoZWNrX3BpcGVfbWF4X3BpeGVsX3JhdGUo c3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCj4gPiA+ID4gPiAgICAgICAgICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKPiA+ID4gPiA+ICAgICAgICB9Cj4gPiA+ID4gPiAKPiA+ID4gPiA+IC0g ICAgIGFsbG9jX3NpemUgLT0gbWluaW11bVtQTEFORV9DVVJTT1JdOwo+ID4gPiA+ID4gLSAgICAg ZGRiLT5wbGFuZVtwaXBlXVtQTEFORV9DVVJTT1JdLnN0YXJ0ID0gYWxsb2MtPmVuZCAtCj4gPiA+ ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBtaW5pbXVtW1BMQU5FX0NVUlNPUl07Cj4gPiA+ID4gPiArICAgICBhbGxvY19zaXplIC09IHRv dGFsX21pbl9ibG9ja3M7Cj4gPiA+ID4gPiArICAgICBkZGItPnBsYW5lW3BpcGVdW1BMQU5FX0NV UlNPUl0uc3RhcnQgPSBhbGxvYy0+ZW5kIC0gbWluaW11bVtQTEFORV9DVVJTT1JdOwo+ID4gPiA+ ID4gICAgICAgIGRkYi0+cGxhbmVbcGlwZV1bUExBTkVfQ1VSU09SXS5lbmQgPSBhbGxvYy0+ZW5k Owo+ID4gPiA+ID4gCj4gPiA+ID4gPiAtICAgICBmb3IgKGxldmVsID0gaWxrX3dtX21heF9sZXZl bChkZXZfcHJpdik7IGxldmVsID49IDA7IGxldmVsLS0pIHsKPiA+ID4gPiA+IC0gICAgICAgICAg ICAgdG90YWxfbGV2ZWxfZGRiID0gMDsKPiA+ID4gPiA+IC0gICAgICAgICAgICAgZm9yX2VhY2hf cGxhbmVfaWRfb25fY3J0YyhpbnRlbF9jcnRjLCBwbGFuZV9pZCkgewo+ID4gPiA+ID4gLSAgICAg ICAgICAgICAgICAgICAgIC8qCj4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICogVE9E TzogV2Ugc2hvdWxkIGNhbGN1bGF0ZSB3YXRlcm1hcmsgdmFsdWVzIGZvciBZL1VWCj4gPiA+ID4g PiAtICAgICAgICAgICAgICAgICAgICAgICogcGxhbmUgYm90aCBpbiBjYXNlIG9mIE5WMTIgZm9y bWF0IGFuZCB1c2UgYm90aCB2YWx1ZXMKPiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAg KiBmb3IgZGRiIGNhbGN1bGF0aW9uLiBOVjEyIGlzIGRpc2FibGVkIGFzIG9mIG5vdywgU28KPiA+ ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgKiB1c2luZyBvbmx5IHNpbmdsZS9VViBwbGFu ZSB2YWx1ZSBoZXJlLgo+ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAqLwo+ID4gPiA+ ID4gLSAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBza2xfcGxhbmVfd20gKndtID0gJnBpcGVf d20tPnBsYW5lc1twbGFuZV9pZF07Cj4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgdWlu dDE2X3QgcGxhbmVfcmVzX2IgPSB3bS0+d21bbGV2ZWxdLnBsYW5lX3Jlc19iOwo+ID4gPiA+ID4g LSAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IG1pbiA9IG1pbmltdW1bcGxhbmVfaWRdICsg eV9taW5pbXVtW3BsYW5lX2lkXTsKPiA+ID4gPiA+IC0KPiA+ID4gPiA+IC0gICAgICAgICAgICAg ICAgICAgICBpZiAocGxhbmVfaWQgPT0gUExBTkVfQ1VSU09SKQo+ID4gPiA+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPiA+ID4gPiAtCj4gPiA+ID4gPiAtICAg ICAgICAgICAgICAgICAgICAgdG90YWxfbGV2ZWxfZGRiICs9IG1heChwbGFuZV9yZXNfYiwgbWlu KTsKPiA+ID4gPiA+IC0gICAgICAgICAgICAgfQo+ID4gPiA+ID4gLQo+ID4gPiA+ID4gLSAgICAg ICAgICAgICAvKgo+ID4gPiA+ID4gLSAgICAgICAgICAgICAgKiBJZiBUaGlzIGxldmVsIGNhbiBz dWNjZXNzZnVsbHkgYmUgZW5hYmxlZCB3aXRoIHRoZQo+ID4gPiA+ID4gLSAgICAgICAgICAgICAg KiBwaXBlJ3MgY3VycmVudCBEREIgYWxsb2NhdGlvbiwgdGhlbiBhbGwgbG93ZXIgbGV2ZWxzIGFy ZQo+ID4gPiA+ID4gLSAgICAgICAgICAgICAgKiBndWFyYW50ZWVkIHRvIHN1Y2NlZWQgYXMgd2Vs bC4KPiA+ID4gPiA+IC0gICAgICAgICAgICAgICovCj4gPiA+ID4gPiAtICAgICAgICAgICAgIGlm ICh0b3RhbF9sZXZlbF9kZGIgPD0gYWxsb2Nfc2l6ZSkKPiA+ID4gPiA+IC0gICAgICAgICAgICAg ICAgICAgICBicmVhazsKPiA+ID4gPiA+IC0gICAgIH0KPiA+ID4gPiA+IC0KPiA+ID4gPiA+IC0g ICAgIGlmICgobGV2ZWwgPCAwKSB8fCAodG90YWxfbWluX2Jsb2NrcyA+IGFsbG9jX3NpemUpKSB7 Cj4gPiA+ID4gPiAtICAgICAgICAgICAgIERSTV9ERUJVR19LTVMoIlJlcXVlc3RlZCBkaXNwbGF5 IGNvbmZpZ3VyYXRpb24gZXhjZWVkcyBzeXN0ZW0gRERCIGxpbWl0YXRpb25zIik7Cj4gPiA+ID4g PiAtICAgICAgICAgICAgIERSTV9ERUJVR19LTVMoIm1pbmltdW0gcmVxdWlyZWQgJWQvJWRcbiIs IChsZXZlbCA8IDApID8KPiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRv dGFsX2xldmVsX2RkYiA6IHRvdGFsX21pbl9ibG9ja3MsIGFsbG9jX3NpemUpOwo+ID4gPiA+ID4g LSAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+ID4gPiA+IC0gICAgIH0KPiA+ID4gPiA+ IC0gICAgIG1heF9sZXZlbCA9IGxldmVsOwo+ID4gPiA+ID4gLSAgICAgYWxsb2Nfc2l6ZSAtPSB0 b3RhbF9sZXZlbF9kZGI7Cj4gPiA+ID4gPiAtCj4gPiA+ID4gPiAgICAgICAgLyoKPiA+ID4gPiA+ ICAgICAgICAgKiAyLiBEaXN0cmlidXRlIHRoZSByZW1haW5pbmcgc3BhY2UgaW4gcHJvcG9ydGlv biB0byB0aGUgYW1vdW50IG9mCj4gPiA+ID4gPiAgICAgICAgICogZGF0YSBlYWNoIHBsYW5lIG5l ZWRzIHRvIGZldGNoIGZyb20gbWVtb3J5Lgo+ID4gPiA+ID4gQEAgLTQyNzksMjQgKzQyMTAsMTMg QEAgaW50IHNrbF9jaGVja19waXBlX21heF9waXhlbF9yYXRlKHN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjLAo+ID4gPiA+ID4gICAgICAgIHRvdGFsX2RhdGFfcmF0ZSA9IHNrbF9nZXRfdG90 YWxfcmVsYXRpdmVfZGF0YV9yYXRlKGNzdGF0ZSwKPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFuZV9kYXRhX3JhdGUs Cj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGxhbmVfeV9kYXRhX3JhdGUpOwo+ID4gPiA+ID4gLSAgICAgLyoKPiA+ID4g PiA+IC0gICAgICAqIFBMQU5FX0NVUlNPUiBkYXRhIHJhdGUgaXMgbm90IGluY2x1ZGVkIGluIHRv dGFsX2RhdGFfcmF0ZS4KPiA+ID4gPiA+IC0gICAgICAqIElmIG9ubHkgY3Vyc29yIHBsYW5lIGlz IGVuYWJsZWQgd2UgaGF2ZSB0byBlbmFibGUgaXRzIFdNIGxldmVscwo+ID4gPiA+ID4gLSAgICAg ICogZXhwbGljaXRseSBiZWZvcmUgcmV0dXJuaW5nLiBDdXJzb3IgaGFzIGZpeGVkIGRkYiBhbGxv Y2F0aW9uLAo+ID4gPiA+ID4gLSAgICAgICogU28gaXQncyBvayB0byBhbHdheXMgY2hlY2sgY3Vy c29yIFdNIGVuYWJsaW5nIGJlZm9yZSByZXR1cm4uCj4gPiA+ID4gPiAtICAgICAgKi8KPiA+ID4g PiA+IC0gICAgIHBsYW5lX2Jsb2NrcyA9IHNrbF9kZGJfZW50cnlfc2l6ZSgmZGRiLT5wbGFuZVtw aXBlXVtQTEFORV9DVVJTT1JdKTsKPiA+ID4gPiA+IC0gICAgIHNrbF9lbmFibGVfcGxhbmVfd21f bGV2ZWxzKGRldl9wcml2LCBwbGFuZV9ibG9ja3MsIG1heF9sZXZlbCwKPiA+ID4gPiA+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwaXBlX3dtLT5wbGFuZXNbUExBTkVfQ1VSU09S XSk7Cj4gPiA+ID4gPiAgICAgICAgaWYgKHRvdGFsX2RhdGFfcmF0ZSA9PSAwKQo+ID4gPiA+ID4g ICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gPiA+ID4gPiAKPiA+ID4gPiA+ICAgICAgICBzdGFy dCA9IGFsbG9jLT5zdGFydDsKPiA+ID4gPiA+ICAgICAgICBmb3JfZWFjaF9wbGFuZV9pZF9vbl9j cnRjKGludGVsX2NydGMsIHBsYW5lX2lkKSB7Cj4gPiA+ID4gPiAgICAgICAgICAgICAgICB1bnNp Z25lZCBpbnQgZGF0YV9yYXRlLCB5X2RhdGFfcmF0ZTsKPiA+ID4gPiA+IC0gICAgICAgICAgICAg dWludDE2X3QgcGxhbmVfYmxvY2tzID0gMCwgeV9wbGFuZV9ibG9ja3MgPSAwOwo+ID4gPiA+ID4g LSAgICAgICAgICAgICBzdHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bSA9ICZwaXBlX3dtLT5wbGFuZXNb cGxhbmVfaWRdOwo+ID4gPiA+ID4gLSAgICAgICAgICAgICB1aW50MTZfdCBwbGFuZV9yZXNfYiA9 IHdtLT53bVttYXhfbGV2ZWxdLnBsYW5lX3Jlc19iOwo+ID4gPiA+ID4gKyAgICAgICAgICAgICB1 aW50MTZfdCBwbGFuZV9ibG9ja3MsIHlfcGxhbmVfYmxvY2tzID0gMDsKPiA+ID4gPiA+IAo+ID4g PiA+ID4gICAgICAgICAgICAgICAgaWYgKHBsYW5lX2lkID09IFBMQU5FX0NVUlNPUikKPiA+ID4g PiA+ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPiA+ID4gPiBAQCAtNDMwOCwz NiArNDIyOCwzMyBAQCBpbnQgc2tsX2NoZWNrX3BpcGVfbWF4X3BpeGVsX3JhdGUoc3RydWN0IGlu dGVsX2NydGMgKmludGVsX2NydGMsCj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgKiBwcm9tb3Rl IHRoZSBleHByZXNzaW9uIHRvIDY0IGJpdHMgdG8gYXZvaWQgb3ZlcmZsb3dpbmcsIHRoZQo+ID4g PiA+ID4gICAgICAgICAgICAgICAgICogcmVzdWx0IGlzIDwgYXZhaWxhYmxlIGFzIGRhdGFfcmF0 ZSAvIHRvdGFsX2RhdGFfcmF0ZSA8IDEKPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAqLwo+ID4g PiA+ID4gKyAgICAgICAgICAgICBwbGFuZV9ibG9ja3MgPSBtaW5pbXVtW3BsYW5lX2lkXTsKPiA+ ID4gPiA+ICsgICAgICAgICAgICAgcGxhbmVfYmxvY2tzICs9IGRpdl91NjQoKHVpbnQ2NF90KWFs bG9jX3NpemUgKiBkYXRhX3JhdGUsCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRvdGFsX2RhdGFfcmF0ZSk7Cj4gPiA+ID4gPiAKPiA+ID4gPiA+ICAgICAg ICAgICAgICAgIC8qIExlYXZlIGRpc2FibGVkIHBsYW5lcyBhdCAoMCwwKSAqLwo+ID4gPiA+ID4g ICAgICAgICAgICAgICAgaWYgKGRhdGFfcmF0ZSkgewo+ID4gPiA+ID4gLSAgICAgICAgICAgICAg ICAgICAgIHBsYW5lX2Jsb2NrcyA9IG1heChtaW5pbXVtW3BsYW5lX2lkXSwgcGxhbmVfcmVzX2Ip Owo+ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgIHBsYW5lX2Jsb2NrcyArPSBkaXZfdTY0 KCh1aW50NjRfdClhbGxvY19zaXplICoKPiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGF0YV9yYXRlLCB0b3RhbF9kYXRhX3JhdGUpOwo+ID4gPiA+ID4gICAg ICAgICAgICAgICAgICAgICAgICBkZGItPnBsYW5lW3BpcGVdW3BsYW5lX2lkXS5zdGFydCA9IHN0 YXJ0Owo+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICBkZGItPnBsYW5lW3BpcGVdW3Bs YW5lX2lkXS5lbmQgPSBzdGFydCArIHBsYW5lX2Jsb2NrczsKPiA+ID4gPiA+IC0gICAgICAgICAg ICAgICAgICAgICBzdGFydCArPSBwbGFuZV9ibG9ja3M7Cj4gPiA+ID4gPiAgICAgICAgICAgICAg ICB9Cj4gPiA+ID4gPiAKPiA+ID4gPiA+ICsgICAgICAgICAgICAgc3RhcnQgKz0gcGxhbmVfYmxv Y2tzOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gICAgICAgICAgICAgICAgLyoKPiA+ID4gPiA+ICAg ICAgICAgICAgICAgICAqIGFsbG9jYXRpb24gZm9yIHlfcGxhbmUgcGFydCBvZiBwbGFuYXIgZm9y bWF0Ogo+ID4gPiA+ID4gLSAgICAgICAgICAgICAgKiBUT0RPOiBPbmNlIHdlIHN0YXJ0IGNhbGN1 bGF0aW5nIHdhdGVybWFyayB2YWx1ZXMgZm9yIFkvVVYKPiA+ID4gPiA+IC0gICAgICAgICAgICAg ICogcGxhbmUgYm90aCBjb25zaWRlciBpdCBmb3IgaW5pdGlhbCBhbGxvd2VkIHdtIGJsb2Nrcy4K PiA+ID4gPiA+ICAgICAgICAgICAgICAgICAqLwo+ID4gPiA+ID4gICAgICAgICAgICAgICAgeV9k YXRhX3JhdGUgPSBwbGFuZV95X2RhdGFfcmF0ZVtwbGFuZV9pZF07Cj4gPiA+ID4gPiAKPiA+ID4g PiA+ICsgICAgICAgICAgICAgeV9wbGFuZV9ibG9ja3MgPSB5X21pbmltdW1bcGxhbmVfaWRdOwo+ ID4gPiA+ID4gKyAgICAgICAgICAgICB5X3BsYW5lX2Jsb2NrcyArPSBkaXZfdTY0KCh1aW50NjRf dClhbGxvY19zaXplICogeV9kYXRhX3JhdGUsCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRvdGFsX2RhdGFfcmF0ZSk7Cj4gPiA+ID4gPiArCj4gPiA+ID4g PiAgICAgICAgICAgICAgICBpZiAoeV9kYXRhX3JhdGUpIHsKPiA+ID4gPiA+IC0gICAgICAgICAg ICAgICAgICAgICB5X3BsYW5lX2Jsb2NrcyA9IHlfbWluaW11bVtwbGFuZV9pZF07Cj4gPiA+ID4g PiAtICAgICAgICAgICAgICAgICAgICAgeV9wbGFuZV9ibG9ja3MgKz0gZGl2X3U2NCgodWludDY0 X3QpYWxsb2Nfc2l6ZSAqCj4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHlfZGF0YV9yYXRlLCB0b3RhbF9kYXRhX3JhdGUpOwo+ID4gPiA+ID4gICAgICAgICAg ICAgICAgICAgICAgICBkZGItPnlfcGxhbmVbcGlwZV1bcGxhbmVfaWRdLnN0YXJ0ID0gc3RhcnQ7 Cj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgIGRkYi0+eV9wbGFuZVtwaXBlXVtwbGFu ZV9pZF0uZW5kID0gc3RhcnQgKyB5X3BsYW5lX2Jsb2NrczsKPiA+ID4gPiA+IC0gICAgICAgICAg ICAgICAgICAgICBzdGFydCArPSB5X3BsYW5lX2Jsb2NrczsKPiA+ID4gPiA+ICAgICAgICAgICAg ICAgIH0KPiA+ID4gPiA+IC0gICAgICAgICAgICAgc2tsX2VuYWJsZV9wbGFuZV93bV9sZXZlbHMo ZGV2X3ByaXYsCj4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBsYW5lX2Jsb2NrcywKPiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbWF4X2xldmVsLAo+ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB3bSk7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgICAgICAgICAg IHN0YXJ0ICs9IHlfcGxhbmVfYmxvY2tzOwo+ID4gPiA+ID4gICAgICAgIH0KPiA+ID4gPiA+IAo+ ID4gPiA+ID4gICAgICAgIHJldHVybiAwOwo+ID4gPiA+ID4gQEAgLTQ0MjcsOSArNDM0NCwxMSBA QCBzdGF0aWMgdWludF9maXhlZF8xNl8xNl90IHNrbF93bV9tZXRob2QyKHVpbnQzMl90IHBpeGVs X3JhdGUsCj4gPiA+ID4gPiAgIHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3Qg c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiA+ID4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gPiA+ ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlICppbnRlbF9wc3RhdGUsCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50MTZfdCBkZGJfYWxsb2NhdGlvbiwKPiA+ID4gPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgbGV2ZWwsCj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdWludDE2X3QgKm91dF9ibG9ja3MsIC8qIG91dCAqLwo+ID4gPiA+ID4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0X2xpbmVzIC8qIG91dCAqLykK PiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dF9saW5l cywgLyogb3V0ICovCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s ICplbmFibGVkIC8qIG91dCAqLykKPiA+ID4gPiA+ICAgewo+ID4gPiA+ID4gICAgICAgIHN0cnVj dCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShpbnRlbF9wc3RhdGUtPmJhc2Uu cGxhbmUpOwo+ID4gPiA+ID4gICAgICAgIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBz dGF0ZSA9ICZpbnRlbF9wc3RhdGUtPmJhc2U7Cj4gPiA+ID4gPiBAQCAtNDQ1Miw4ICs0MzcxLDEw IEBAIHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3Qgc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiA+ID4gICAgICAgIGJvb2wgeV90aWxlZCwgeF90aWxl ZDsKPiA+ID4gPiA+IAo+ID4gPiA+ID4gICAgICAgIGlmIChsYXRlbmN5ID09IDAgfHwKPiA+ID4g PiA+IC0gICAgICAgICAhaW50ZWxfd21fcGxhbmVfdmlzaWJsZShjc3RhdGUsIGludGVsX3BzdGF0 ZSkpCj4gPiA+ID4gPiArICAgICAgICAgIWludGVsX3dtX3BsYW5lX3Zpc2libGUoY3N0YXRlLCBp bnRlbF9wc3RhdGUpKSB7Cj4gPiA+ID4gPiArICAgICAgICAgICAgICplbmFibGVkID0gZmFsc2U7 Cj4gPiA+ID4gPiAgICAgICAgICAgICAgICByZXR1cm4gMDsKPiA+ID4gPiA+ICsgICAgIH0KPiA+ ID4gPiA+IAo+ID4gPiA+ID4gICAgICAgIHlfdGlsZWQgPSBmYi0+bW9kaWZpZXIgPT0gSTkxNV9G T1JNQVRfTU9EX1lfVElMRUQgfHwKPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgZmItPm1vZGlm aWVyID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRDsKPiA+ID4gPiA+IEBAIC00NTQxLDYgKzQ0 NjIsOSBAQCBzdGF0aWMgaW50IHNrbF9jb21wdXRlX3BsYW5lX3dtKGNvbnN0IHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ID4gPiA+ICAgICAgICAgICAgICAgIGlmICgoY3Bw ICogY3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19odG90YWwgLyA1MTIgPCAxKSAmJgo+ ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgIChwbGFuZV9ieXRlc19wZXJfbGluZSAvIDUxMiA8 IDEpKQo+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZF9yZXN1bHQgPSBt ZXRob2QyOwo+ID4gPiA+ID4gKyAgICAgICAgICAgICBlbHNlIGlmICgoZGRiX2FsbG9jYXRpb24g JiYgZGRiX2FsbG9jYXRpb24gLwo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIGZpeGVk XzE2XzE2X3RvX3UzMl9yb3VuZF91cChwbGFuZV9ibG9ja3NfcGVyX2xpbmUpKSA+PSAxKQo+ID4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkX3Jlc3VsdCA9IG1pbl9maXhlZF8x Nl8xNihtZXRob2QxLCBtZXRob2QyKTsKPiA+ID4gPiA+ICAgICAgICAgICAgICAgIGVsc2UgaWYg KGxhdGVuY3kgPj0gbGluZXRpbWVfdXMpCj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAg IHNlbGVjdGVkX3Jlc3VsdCA9IG1pbl9maXhlZF8xNl8xNihtZXRob2QxLCBtZXRob2QyKTsKPiA+ ID4gPiA+ICAgICAgICAgICAgICAgIGVsc2UKPiA+ID4gPiA+IEBAIC00NTYwLDQyICs0NDg0LDY0 IEBAIHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3Qgc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiA+ID4gICAgICAgICAgICAgICAgfQo+ID4gPiA+ID4g ICAgICAgIH0KPiA+ID4gPiA+IAo+ID4gPiA+ID4gLSAgICAgaWYgKHJlc19saW5lcyA+PSAzMSAm JiBsZXZlbCA9PSAwKSB7Cj4gPiA+ID4gPiAtICAgICAgICAgICAgIHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lID0gcHN0YXRlLT5wbGFuZTsKPiA+ID4gPiA+ICsgICAgIGlmIChyZXNfYmxvY2tzID49 IGRkYl9hbGxvY2F0aW9uIHx8IHJlc19saW5lcyA+IDMxKSB7Cj4gPiA+ID4gPiArICAgICAgICAg ICAgICplbmFibGVkID0gZmFsc2U7Cj4gPiA+ID4gPiAKPiA+ID4gPiA+IC0gICAgICAgICAgICAg RFJNX0RFQlVHX0tNUygiUmVxdWVzdGVkIGRpc3BsYXkgY29uZmlndXJhdGlvbiBleGNlZWRzIHN5 c3RlbSB3YXRlcm1hcmsgbGltaXRhdGlvbnNcbiIpOwo+ID4gPiA+ID4gLSAgICAgICAgICAgICBE Uk1fREVCVUdfS01TKCJbUExBTkU6JWQ6JXNdIGxpbmVzIHJlcXVpcmVkID0gJXUvMzFcbiIsCj4g PiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFuZS0+YmFzZS5pZCwgcGxh bmUtPm5hbWUsIHJlc19saW5lcyk7Cj4gPiA+ID4gPiAtICAgICAgICAgICAgIHJldHVybiAtRUlO VkFMOwo+ID4gPiA+ID4gKyAgICAgICAgICAgICAvKgo+ID4gPiA+ID4gKyAgICAgICAgICAgICAg KiBJZiB0aGVyZSBhcmUgbm8gdmFsaWQgbGV2ZWwgMCB3YXRlcm1hcmtzLCB0aGVuIHdlIGNhbid0 Cj4gPiA+ID4gPiArICAgICAgICAgICAgICAqIHN1cHBvcnQgdGhpcyBkaXNwbGF5IGNvbmZpZ3Vy YXRpb24uCj4gPiA+ID4gPiArICAgICAgICAgICAgICAqLwo+ID4gPiA+ID4gKyAgICAgICAgICAg ICBpZiAobGV2ZWwpIHsKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsK PiA+ID4gPiA+ICsgICAgICAgICAgICAgfSBlbHNlIHsKPiA+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9IHBzdGF0ZS0+cGxhbmU7Cj4gPiA+ID4g PiArCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgRFJNX0RFQlVHX0tNUygiUmVxdWVz dGVkIGRpc3BsYXkgY29uZmlndXJhdGlvbiBleGNlZWRzIHN5c3RlbSB3YXRlcm1hcmsgbGltaXRh dGlvbnNcbiIpOwo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIERSTV9ERUJVR19LTVMo IltQTEFORTolZDolc10gYmxvY2tzIHJlcXVpcmVkID0gJXUvJXUsIGxpbmVzIHJlcXVpcmVkID0g JXUvMzFcbiIsCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw bGFuZS0+YmFzZS5pZCwgcGxhbmUtPm5hbWUsCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXNfYmxvY2tzLCBkZGJfYWxsb2NhdGlvbiwgcmVzX2xpbmVzKTsK PiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+ID4gPiA+ ICsgICAgICAgICAgICAgfQo+ID4gPiA+ID4gICAgICAgIH0KPiA+ID4gPiA+IAo+ID4gPiA+ID4g ICAgICAgICpvdXRfYmxvY2tzID0gcmVzX2Jsb2NrczsKPiA+ID4gPiA+ICAgICAgICAqb3V0X2xp bmVzID0gcmVzX2xpbmVzOwo+ID4gPiA+ID4gKyAgICAgKmVuYWJsZWQgPSB0cnVlOwo+ID4gPiA+ ID4gCj4gPiA+ID4gPiAgICAgICAgcmV0dXJuIDA7Cj4gPiA+ID4gPiAgIH0KPiA+ID4gPiA+IAo+ ID4gPiA+ID4gICBzdGF0aWMgaW50Cj4gPiA+ID4gPiAgIHNrbF9jb21wdXRlX3dtX2xldmVscyhj b25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmRkYiwKPiA+ID4gPiA+ICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gPiA+ ID4gPiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KmludGVsX3BzdGF0ZSwKPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBza2xf cGxhbmVfd20gKndtKQo+ID4gPiA+ID4gICB7Cj4gPiA+ID4gPiArICAgICBzdHJ1Y3QgaW50ZWxf Y3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3N0YXRlLT5iYXNlLmNydGMpOwo+ID4g PiA+ID4gKyAgICAgc3RydWN0IGRybV9wbGFuZSAqcGxhbmUgPSBpbnRlbF9wc3RhdGUtPmJhc2Uu cGxhbmU7Cj4gPiA+ID4gPiArICAgICBzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0g dG9faW50ZWxfcGxhbmUocGxhbmUpOwo+ID4gPiA+ID4gKyAgICAgdWludDE2X3QgZGRiX2Jsb2Nr czsKPiA+ID4gPiA+ICsgICAgIGVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiA+ ID4gPiA+ICAgICAgICBpbnQgbGV2ZWwsIG1heF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2 X3ByaXYpOwo+ID4gPiA+ID4gICAgICAgIGludCByZXQ7Cj4gPiA+ID4gPiAKPiA+ID4gPiA+ICAg ICAgICBpZiAoV0FSTl9PTighaW50ZWxfcHN0YXRlLT5iYXNlLmZiKSkKPiA+ID4gPiA+ICAgICAg ICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4gPiA+ID4gCj4gPiA+ID4gPiArICAgICBkZGJf YmxvY2tzID0gc2tsX2RkYl9lbnRyeV9zaXplKCZkZGItPnBsYW5lW3BpcGVdW2ludGVsX3BsYW5l LT5pZF0pOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gICAgICAgIGZvciAobGV2ZWwgPSAwOyBsZXZl bCA8PSBtYXhfbGV2ZWw7IGxldmVsKyspIHsKPiA+ID4gPiA+ICAgICAgICAgICAgICAgIHN0cnVj dCBza2xfd21fbGV2ZWwgKnJlc3VsdCA9ICZ3bS0+d21bbGV2ZWxdOwo+ID4gPiA+ID4gCj4gPiA+ ID4gPiAgICAgICAgICAgICAgICByZXQgPSBza2xfY29tcHV0ZV9wbGFuZV93bShkZXZfcHJpdiwK PiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzdGF0 ZSwKPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dGVsX3BzdGF0ZSwKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGRiX2Jsb2NrcywKPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGxldmVsLAo+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJnJlc3VsdC0+cGxhbmVfcmVzX2IsCj4gPiA+ID4gPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXN1bHQtPnBsYW5lX3Jlc19sKTsKPiA+ ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3VsdC0+ cGxhbmVfcmVzX2wsCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZyZXN1bHQtPnBsYW5lX2VuKTsKPiA+ID4gPiA+ICAgICAgICAgICAgICAgIGlmIChy ZXQpCj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiA+ID4g PiAgICAgICAgfQo+ID4gPiA+ID4gQEAgLTQ2NjEsNyArNDYwNyw4IEBAIHN0YXRpYyBpbnQgc2ts X2J1aWxkX3BpcGVfd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKPiA+ID4gPiA+ IAo+ID4gPiA+ID4gICAgICAgICAgICAgICAgd20gPSAmcGlwZV93bS0+cGxhbmVzW3BsYW5lX2lk XTsKPiA+ID4gPiA+IAo+ID4gPiA+ID4gLSAgICAgICAgICAgICByZXQgPSBza2xfY29tcHV0ZV93 bV9sZXZlbHMoZGV2X3ByaXYsIGNzdGF0ZSwgaW50ZWxfcHN0YXRlLCB3bSk7Cj4gPiA+ID4gPiAr ICAgICAgICAgICAgIHJldCA9IHNrbF9jb21wdXRlX3dtX2xldmVscyhkZXZfcHJpdiwgZGRiLCBj c3RhdGUsCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnRlbF9wc3RhdGUsIHdtKTsKPiA+ID4gPiA+ICAgICAgICAgICAgICAgIGlmIChyZXQpCj4g PiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiA+ID4gPiAgICAg ICAgICAgICAgICBza2xfY29tcHV0ZV90cmFuc2l0aW9uX3dtKGNzdGF0ZSwgJndtLT50cmFuc193 bSk7Cj4gPiA+ID4gPiBAQCAtNDc3NCw0NSArNDcyMSw2IEBAIGJvb2wgc2tsX2RkYl9hbGxvY2F0 aW9uX292ZXJsYXBzKGNvbnN0IHN0cnVjdCBza2xfZGRiX2VudHJ5ICoqZW50cmllcywKPiA+ID4g PiA+ICAgICAgICByZXR1cm4gZmFsc2U7Cj4gPiA+ID4gPiAgIH0KPiA+ID4gPiA+IAo+ID4gPiA+ ID4gLXN0YXRpYyBpbnQKPiA+ID4gPiA+IC1za2xfZGRiX2FkZF9hZmZlY3RlZF9wbGFuZXMoc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKPiA+ID4gPiA+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3Qgc3RydWN0IHNrbF9waXBlX3dtICpvbGRfcGlwZV93bSwKPiA+ID4gPiA+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHNrbF9waXBlX3dtICpwaXBl X3dtKQo+ID4gPiA+ID4gLXsKPiA+ID4gPiA+IC0gICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZSA9IGNzdGF0ZS0+YmFzZS5zdGF0ZTsKPiA+ID4gPiA+IC0gICAgIHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBzdGF0ZS0+ZGV2Owo+ID4gPiA+ID4gLSAgICAgc3RydWN0IGRybV9jcnRj ICpjcnRjID0gY3N0YXRlLT5iYXNlLmNydGM7Cj4gPiA+ID4gPiAtICAgICBzdHJ1Y3QgaW50ZWxf Y3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gPiA+ID4gPiAtICAgICBz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gPiA+ID4g PiAtICAgICBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICppbnRlbF9zdGF0ZSA9IHRvX2ludGVs X2F0b21pY19zdGF0ZShzdGF0ZSk7Cj4gPiA+ID4gPiAtICAgICBzdHJ1Y3Qgc2tsX2RkYl9hbGxv Y2F0aW9uICpuZXdfZGRiID0gJmludGVsX3N0YXRlLT53bV9yZXN1bHRzLmRkYjsKPiA+ID4gPiA+ IC0gICAgIHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmN1cl9kZGIgPSAmZGV2X3ByaXYtPndt LnNrbF9ody5kZGI7Cj4gPiA+ID4gPiAtICAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFu ZV9zdGF0ZTsKPiA+ID4gPiA+IC0gICAgIHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwo+ID4gPiA+ ID4gLSAgICAgZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ID4gPiA+ID4gLQo+ ID4gPiA+ID4gLSAgICAgV0FSTl9PTighZHJtX2F0b21pY19nZXRfZXhpc3RpbmdfY3J0Y19zdGF0 ZShzdGF0ZSwgY3J0YykpOwo+ID4gPiA+ID4gLQo+ID4gPiA+ID4gLSAgICAgZHJtX2Zvcl9lYWNo X3BsYW5lX21hc2socGxhbmUsIGRldiwgY3N0YXRlLT5iYXNlLnBsYW5lX21hc2spIHsKPiA+ID4g PiA+IC0gICAgICAgICAgICAgZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHRvX2ludGVsX3BsYW5l KHBsYW5lKS0+aWQ7Cj4gPiA+ID4gPiAtICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBza2xfcGxh bmVfd20gKndtID0gJnBpcGVfd20tPnBsYW5lc1twbGFuZV9pZF07Cj4gPiA+ID4gPiAtICAgICAg ICAgICAgIGNvbnN0IHN0cnVjdCBza2xfcGxhbmVfd20gKm9sZF93bSA9ICZvbGRfcGlwZV93bS0+ cGxhbmVzW3BsYW5lX2lkXTsKPiA+ID4gPiA+IC0KPiA+ID4gPiA+IC0gICAgICAgICAgICAgaWYg KChza2xfZGRiX2VudHJ5X2VxdWFsKCZjdXJfZGRiLT5wbGFuZVtwaXBlXVtwbGFuZV9pZF0sCj4g PiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfZGRiLT5w bGFuZVtwaXBlXVtwbGFuZV9pZF0pICYmCj4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICBza2xf ZGRiX2VudHJ5X2VxdWFsKCZjdXJfZGRiLT55X3BsYW5lW3BpcGVdW3BsYW5lX2lkXSwKPiA+ID4g PiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ld19kZGItPnlfcGxh bmVbcGlwZV1bcGxhbmVfaWRdKSkgJiYKPiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICFtZW1j bXAod20sIG9sZF93bSwgc2l6ZW9mKHN0cnVjdCBza2xfcGxhbmVfd20pKSkKPiA+ID4gPiA+IC0g ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+ID4gPiA+IC0KPiA+ID4gPiA+IC0gICAg ICAgICAgICAgcGxhbmVfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9wbGFuZV9zdGF0ZShzdGF0ZSwg cGxhbmUpOwo+ID4gPiA+ID4gLSAgICAgICAgICAgICBpZiAoSVNfRVJSKHBsYW5lX3N0YXRlKSkK PiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihwbGFuZV9zdGF0 ZSk7Cj4gPiA+ID4gPiAtICAgICB9Cj4gPiA+ID4gPiAtCj4gPiA+ID4gPiAtICAgICByZXR1cm4g MDsKPiA+ID4gPiA+IC19Cj4gPiA+ID4gPiAtCj4gPiA+ID4gPiAgIHN0YXRpYyBpbnQgc2tsX3Vw ZGF0ZV9waXBlX3dtKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3N0YXRlLAo+ID4gPiA+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qgc2tsX3BpcGVfd20gKm9sZF9w aXBlX3dtLAo+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2ts X3BpcGVfd20gKnBpcGVfd20sIC8qIG91dCAqLwo+ID4gPiA+ID4gQEAgLTQ4MjYsMTcgKzQ3MzQs NiBAQCBzdGF0aWMgaW50IHNrbF91cGRhdGVfcGlwZV93bShzdHJ1Y3QgZHJtX2NydGNfc3RhdGUg KmNzdGF0ZSwKPiA+ID4gPiA+ICAgICAgICBpZiAocmV0KQo+ID4gPiA+ID4gICAgICAgICAgICAg ICAgcmV0dXJuIHJldDsKPiA+ID4gPiA+IAo+ID4gPiA+ID4gLSAgICAgcmV0ID0gc2tsX2FsbG9j YXRlX3BpcGVfZGRiKGludGVsX2NzdGF0ZSwgcGlwZV93bSwgZGRiKTsKPiA+ID4gPiA+IC0gICAg IGlmIChyZXQpCj4gPiA+ID4gPiAtICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiA+ID4gPiAt ICAgICAvKgo+ID4gPiA+ID4gLSAgICAgICogVE9ETzogUGxhbmVzIGFyZSBpbmNsdWRlZCBpbiBz dGF0ZSB0byBhcm0gV00gcmVnaXN0ZXJzLgo+ID4gPiA+ID4gLSAgICAgICogU2NvcGUgdG8gb3B0 aW1pemUgZnVydGhlciwgYnkganVzdCByZXdyaXRpbmcgcGxhbmUgc3VyZiByZWdpc3Rlci4KPiA+ ID4gPiA+IC0gICAgICAqLwo+ID4gPiA+ID4gLSAgICAgcmV0ID0gc2tsX2RkYl9hZGRfYWZmZWN0 ZWRfcGxhbmVzKGludGVsX2NzdGF0ZSwgb2xkX3BpcGVfd20sIHBpcGVfd20pOwo+ID4gPiA+ID4g LSAgICAgaWYgKHJldCkKPiA+ID4gPiA+IC0gICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+ID4g PiA+IC0KPiA+ID4gPiA+ICAgICAgICBpZiAoIW1lbWNtcChvbGRfcGlwZV93bSwgcGlwZV93bSwg c2l6ZW9mKCpwaXBlX3dtKSkpCj4gPiA+ID4gPiAgICAgICAgICAgICAgICAqY2hhbmdlZCA9IGZh bHNlOwo+ID4gPiA+ID4gICAgICAgIGVsc2UKPiA+ID4gPiA+IEBAIC00ODU5LDcgKzQ3NTYsNDEg QEAgc3RhdGljIGludCBza2xfdXBkYXRlX3BpcGVfd20oc3RydWN0IGRybV9jcnRjX3N0YXRlICpj c3RhdGUsCj4gPiA+ID4gPiAgIH0KPiA+ID4gPiA+IAo+ID4gPiA+ID4gICBzdGF0aWMgaW50Cj4g PiA+ID4gPiAtc2tsX2luY2x1ZGVfYWZmZWN0ZWRfY3J0Y3Moc3RydWN0IGRybV9hdG9taWNfc3Rh dGUgKnN0YXRlKQo+ID4gPiA+ID4gK3NrbF9kZGJfYWRkX2FmZmVjdGVkX3BsYW5lcyhzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlKQo+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ICsgICAgIHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IGNzdGF0ZS0+YmFzZS5zdGF0ZTsKPiA+ID4g PiA+ICsgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+ZGV2Owo+ID4gPiA+ID4g KyAgICAgc3RydWN0IGRybV9jcnRjICpjcnRjID0gY3N0YXRlLT5iYXNlLmNydGM7Cj4gPiA+ID4g PiArICAgICBzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0 Yyk7Cj4gPiA+ID4gPiArICAgICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGRldik7Cj4gPiA+ID4gPiArICAgICBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpp bnRlbF9zdGF0ZSA9IHRvX2ludGVsX2F0b21pY19zdGF0ZShzdGF0ZSk7Cj4gPiA+ID4gPiArICAg ICBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpuZXdfZGRiID0gJmludGVsX3N0YXRlLT53bV9y ZXN1bHRzLmRkYjsKPiA+ID4gPiA+ICsgICAgIHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmN1 cl9kZGIgPSAmZGV2X3ByaXYtPndtLnNrbF9ody5kZGI7Cj4gPiA+ID4gPiArICAgICBzdHJ1Y3Qg ZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKPiA+ID4gPiA+ICsgICAgIHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lOwo+ID4gPiA+ID4gKyAgICAgZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRj LT5waXBlOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKyAgICAgV0FSTl9PTighZHJtX2F0b21pY19n ZXRfZXhpc3RpbmdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0YykpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gKyAgICAgZHJtX2Zvcl9lYWNoX3BsYW5lX21hc2socGxhbmUsIGRldiwgY3N0YXRlLT5iYXNl LnBsYW5lX21hc2spIHsKPiA+ID4gPiA+ICsgICAgICAgICAgICAgZW51bSBwbGFuZV9pZCBwbGFu ZV9pZCA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKS0+aWQ7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiAr ICAgICAgICAgICAgIGlmIChza2xfZGRiX2VudHJ5X2VxdWFsKCZjdXJfZGRiLT5wbGFuZVtwaXBl XVtwbGFuZV9pZF0sCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZuZXdfZGRiLT5wbGFuZVtwaXBlXVtwbGFuZV9pZF0pICYmCj4gPiA+ID4gPiArICAgICAg ICAgICAgICAgICBza2xfZGRiX2VudHJ5X2VxdWFsKCZjdXJfZGRiLT55X3BsYW5lW3BpcGVdW3Bs YW5lX2lkXSwKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Jm5ld19kZGItPnlfcGxhbmVbcGlwZV1bcGxhbmVfaWRdKSkKPiA+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICBjb250aW51ZTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsgICAgICAgICAgICAg cGxhbmVfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9wbGFuZV9zdGF0ZShzdGF0ZSwgcGxhbmUpOwo+ ID4gPiA+ID4gKyAgICAgICAgICAgICBpZiAoSVNfRVJSKHBsYW5lX3N0YXRlKSkKPiA+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihwbGFuZV9zdGF0ZSk7Cj4gPiA+ ID4gPiArICAgICB9Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgICByZXR1cm4gMDsKPiA+ID4g PiA+ICt9Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArc3RhdGljIGludAo+ID4gPiA+ID4gK3NrbF9j b21wdXRlX2RkYihzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gPiA+ID4gPiAgIHsK PiA+ID4gPiA+ICAgICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gc3RhdGUtPmRldjsKPiA+ ID4gPiA+ICAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGRldik7Cj4gPiA+ID4gPiBAQCAtNDkyMyw2ICs0ODU0LDE0IEBAIHN0YXRpYyBpbnQgc2tsX3Vw ZGF0ZV9waXBlX3dtKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3N0YXRlLAo+ID4gPiA+ID4gICAg ICAgICAgICAgICAgY3N0YXRlID0gaW50ZWxfYXRvbWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLCBp bnRlbF9jcnRjKTsKPiA+ID4gPiA+ICAgICAgICAgICAgICAgIGlmIChJU19FUlIoY3N0YXRlKSkK PiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoY3N0YXRlKTsK PiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsgICAgICAgICAgICAgcmV0ID0gc2tsX2FsbG9jYXRlX3Bp cGVfZGRiKGNzdGF0ZSwgZGRiKTsKPiA+ID4gPiA+ICsgICAgICAgICAgICAgaWYgKHJldCkKPiA+ ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4gPiA+ID4gKwo+ID4g PiA+ID4gKyAgICAgICAgICAgICByZXQgPSBza2xfZGRiX2FkZF9hZmZlY3RlZF9wbGFuZXMoY3N0 YXRlKTsKPiA+ID4gPiA+ICsgICAgICAgICAgICAgaWYgKHJldCkKPiA+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4gPiA+ID4gICAgICAgIH0KPiA+ID4gPiA+IAo+ ID4gPiA+ID4gICAgICAgIHJldHVybiAwOwo+ID4gPiA+ID4gQEAgLTUwMTIsNyArNDk1MSw3IEBA IHN0YXRpYyBpbnQgc2tsX3VwZGF0ZV9waXBlX3dtKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3N0 YXRlLAo+ID4gPiA+ID4gICAgICAgIC8qIENsZWFyIGFsbCBkaXJ0eSBmbGFncyAqLwo+ID4gPiA+ ID4gICAgICAgIHJlc3VsdHMtPmRpcnR5X3BpcGVzID0gMDsKPiA+ID4gPiA+IAo+ID4gPiA+ID4g LSAgICAgcmV0ID0gc2tsX2luY2x1ZGVfYWZmZWN0ZWRfY3J0Y3Moc3RhdGUpOwo+ID4gPiA+ID4g KyAgICAgcmV0ID0gc2tsX2NvbXB1dGVfZGRiKHN0YXRlKTsKPiA+ID4gPiA+ICAgICAgICBpZiAo cmV0KQo+ID4gPiA+ID4gICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+ID4gPiA+IAo+ID4g PiA+ID4gLS0KPiA+ID4gPiA+IDEuOS4xCj4gPiA+ID4gPiAKPiA+ID4gPiAKPiA+ID4gPiAtLQo+ ID4gPiA+IE1hdHQgUm9wZXIKPiA+ID4gPiBHcmFwaGljcyBTb2Z0d2FyZSBFbmdpbmVlcgo+ID4g PiA+IElvVEcgUGxhdGZvcm0gRW5hYmxpbmcgJiBEZXZlbG9wbWVudAo+ID4gPiA+IEludGVsIENv cnBvcmF0aW9uCj4gPiA+ID4gKDkxNikgMzU2LTI3OTUKPiA+ID4gPiBfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4gPiA+IEludGVsLWdmeCBtYWlsaW5n IGxpc3QKPiA+ID4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiA+ID4gaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKPiA+ ID4gCj4gPiA+IAo+ID4gCj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwo+ID4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+ID4gSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwo+ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngKPiAKPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==