From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joonyoung Shim Subject: Re: [PATCH 04/14] drm/exynos: remove struct *_win_data abstraction on planes Date: Thu, 05 Feb 2015 11:37:13 +0900 Message-ID: <54D2D759.3000709@samsung.com> References: <1422990871-21355-1-git-send-email-gustavo@padovan.org> <1422990871-21355-5-git-send-email-gustavo@padovan.org> <54D1CDCC.60906@samsung.com> <20150204142838.GH14009@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-reply-to: <20150204142838.GH14009@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: linux-samsung-soc@vger.kernel.org, Gustavo Padovan , dri-devel@lists.freedesktop.org List-Id: linux-samsung-soc@vger.kernel.org SGkgRGFuaWVsLAoKT24gMDIvMDQvMjAxNSAxMToyOCBQTSwgRGFuaWVsIFZldHRlciB3cm90ZToK PiBPbiBXZWQsIEZlYiAwNCwgMjAxNSBhdCAwNDo0NDoxMlBNICswOTAwLCBKb29ueW91bmcgU2hp bSB3cm90ZToKPj4gSGksCj4+Cj4+IE9uIDAyLzA0LzIwMTUgMDQ6MTQgQU0sIEd1c3Rhdm8gUGFk b3ZhbiB3cm90ZToKPj4+IEZyb206IEd1c3Rhdm8gUGFkb3ZhbiA8Z3VzdGF2by5wYWRvdmFuQGNv bGxhYm9yYS5jby51az4KPj4+Cj4+PiBzdHJ1Y3Qge2ZpbWQsbWl4ZXIsdmlkaX1fd2luX2RhdGEg d2FzIGp1c3Qga2VlcGluZyB0aGUgc2FtZSBkYXRhCj4+PiBhcyBzdHJ1Y3QgZXh5bm9zX2RybV9w bGFuZSB0aHVzIGdldCByaWRlIG9mIGl0IGFuZCB1c2UgZXh5bm9zX2RybV9wbGFuZQo+Pj4gZGly ZWN0bHkuCj4+Pgo+Pj4gSXQgY2hhbmdlcyBob3cgcGxhbmVzIGFyZSBjcmVhdGVkIGFuZCByZW1v dmUgLndpbl9tb2RlX3NldCgpIGNhbGxiYWNrCj4+PiB0aGF0IHdhcyBvbmx5IGZpbGxpbmcgYWxs ICpfd2luX2RhdGEgc3RydWN0cy4KPj4+Cj4+Cj4+IEkgY29tbWVudGVkIGFscmVhZHkgb24gcHJp b3IgcGF0Y2guCj4gCj4gSSB0aGluayB5b3UgZG9uJ3QgcXVpdGUgdW5kZXJzdGFuZCBob3cgdGhp cyBwcmltYXJ5L292ZXJsYXkgcGxhbmUgc3R1ZmYKPiB3b3JrcyBpbiBkcm0gY29yZS4gVGhlIGVu dGlyZSBwb2ludCBvZiB0aGUgZHJtIGNvcmUgcHJpbWFyeSBwbGFuZSBpcyB0bwo+IHdvcmsgX2V4 YWN0bHlfIGxpa2UgYW4gb3ZlcmxheSBwbGFuZSBhbmQgYWxsb3cgdXNlcnNwYWNlIHRvIG1hbmds ZSB0aGUKPiBwcmltYXJ5IHBsYW5lIGNvbmZpZ3VyYXRpb24gdGhyb3VnaCB0aGUgb3ZlcmxheSBw bGFuZS4gVGhlIG9ubHkgcmVhc29uIHdlCj4gaGF2ZSBwcmltYXJ5IHBsYW5lcyBpcyBzbyB0aGF0 IG9sZCB1c2Vyc3BhY2Uga2VlcHMgd29ya2luZy4KPiAKClJpZ2h0LCBpIG1pc3VuZGVyc3Rvb2Qg YSBiaXQgYmVjYXVzZSBleHlub3MgaHcgZHJpdmVycyBoYXZlIGRlcGVuZGVuY3kKb2YgenBvcyho dyBvdmVybGF5IHBvc2l0aW9uKS4KCkN1cnJlbnQgZXh5bm9zIGRybSBkcml2ZXIgaGFzIGVhY2gg cHJpbWFyeSBwbGFuZSBvZiBodyBkcml2ZXJzIGFuZCBmaXZlCm92ZXJsYXkgcGxhbmVzLiBUaGUg cHJpbWFyeSBwbGFuZSBpcyBmaXhlZCBvbiBkZWZhdWx0IGh3IG92ZXJsYXkgYW5kIGFsbApvdmVy bGF5IHBsYW5lIGNhbiBtYXAgdG8gYWxsIGh3IG92ZXJsYXlzIHVzaW5nIHNwZWNpZmljIHpwb3Mg cHJvcGVydHkgb2YKZXh5bm9zIGRybSBwbGFuZS4KCkd1c3Rhdm8gYXBwcm9hY2ggd2lsbCBpbmNs dWRlIHNwZWNpZmljIGh3IG92ZXJsYXkgZGF0YSBpbiBvdmVybGF5IHBsYW5lCmFuZCBodyBkcml2 ZXIga2VlcHMgb3ZlcmxheSBwbGFuZXMgdG8gYXJyYXkgYnkgenBvcyBvcmRlci4gQnV0IGN1cnJl bnQKenBvcyBvZiBvdmVybGF5IHBsYW5lIGlzIDAgYWx3YXlzIGlmIHVzZXIgZG9lc24ndCBtb2Rp ZnkgaXQsIHNvIGh3CmRyaXZlciB3aWxsIHVzZSBvbmx5IGh3IG92ZXJsYXkgZGF0YSBvZiBwcmlt YXJ5IHBsYW5lIGFsd2F5cyBldmVuIGlmCnVzZXIgd2FudCB0byB1c2Ugb3ZlcmxheSBwbGFuZS4K CklmIHVzZXIgaXMgbW9kaWZpZWQgenBvcyBvZiBvdmVybGF5IHBsYW5lLCBodyBkcml2ZXIgY2Fu IGdldCB3cm9uZyBodwpvdmVybGF5IGRhdGEgZnJvbSBkaWZmZXJlbnQgb3ZlcmxheSBwbGFuZSBi ZWNhdXNlIGh3IGRyaXZlciBrZWVwcwpvdmVybGF5IHBsYW5lcyBieSB6cG9zIG9yZGVyLgoKVGhh bmtzLgoKPiBXaGVuIEkndmUgZG9uZSB0aGUgdGVzdGNvbnZlcnNpb24gd2l0aCBleHlub3MgdG8g dmFsaWRhdGUgbXkgYXRvbWljCj4gaGVscGVycyBJJ3ZlIG5vdGljZWQgdGhhdCBleHlub3MgbWFr ZXMgYSBtZXNzIGhlcmUsIGFuZCBvbiBhIHF1aWNrIGxvb2sKPiBQYWRvdmFuIHNlZW1zIHRvIGZp eCB0aGlzIHVwIGhlcmUuIE5vdCBhIGRldGFpbGVkIHJldmlldywgYnV0IHRoaXMgaGFzIG15Cj4g QWNrLgo+IC1EYW5pZWwKPiAKPj4KPj4gVGhhbmtzLgo+Pgo+Pj4gU2lnbmVkLW9mZi1ieTogR3Vz dGF2byBQYWRvdmFuIDxndXN0YXZvLnBhZG92YW5AY29sbGFib3JhLmNvLnVrPgo+Pj4gLS0tCj4+ PiAgZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2NydGMuYyAgfCAgIDkgKy0KPj4+ ICBkcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fY3J0Yy5oICB8ICAgMSArCj4+PiAg ZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Rydi5jICAgfCAgMTQgLS0KPj4+ICBk cml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHJ2LmggICB8ICAgNSArLQo+Pj4gIGRy aXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9maW1kLmMgIHwgMTgyICsrKysrKysrKyst LS0tLS0tLS0tLS0tLS0KPj4+ICBkcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fcGxh bmUuYyB8ICAyMCArLS0KPj4+ICBkcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fcGxh bmUuaCB8ICAgNiArLQo+Pj4gIGRyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV92aWRp LmMgIHwgMTIzICsrKysrLS0tLS0tLS0tLS0tCj4+PiAgZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9l eHlub3NfbWl4ZXIuYyAgICAgfCAyMTIgKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCj4+ PiAgOSBmaWxlcyBjaGFuZ2VkLCAxODMgaW5zZXJ0aW9ucygrKSwgMzg5IGRlbGV0aW9ucygtKQo+ Pj4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fY3J0 Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2NydGMuYwo+Pj4gaW5kZXgg YWQ2NzVmYi4uZDUwNGYwYiAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3Mv ZXh5bm9zX2RybV9jcnRjLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9z X2RybV9jcnRjLmMKPj4+IEBAIC0yOTYsMTMgKzI5NiwxMyBAQCBzdGF0aWMgdm9pZCBleHlub3Nf ZHJtX2NydGNfYXR0YWNoX21vZGVfcHJvcGVydHkoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+Pj4g IH0KPj4+ICAKPj4+ICBzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpleHlub3NfZHJtX2NydGNfY3Jl YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2LAo+Pj4gKwkJCQkJICAgICAgIHN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lLAo+Pj4gIAkJCQkJICAgICAgIGludCBwaXBlLAo+Pj4gIAkJCQkJICAg ICAgIGVudW0gZXh5bm9zX2RybV9vdXRwdXRfdHlwZSB0eXBlLAo+Pj4gIAkJCQkJICAgICAgIHN0 cnVjdCBleHlub3NfZHJtX2NydGNfb3BzICpvcHMsCj4+PiAgCQkJCQkgICAgICAgdm9pZCAqY3R4 KQo+Pj4gIHsKPj4+ICAJc3RydWN0IGV4eW5vc19kcm1fY3J0YyAqZXh5bm9zX2NydGM7Cj4+PiAt CXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwo+Pj4gIAlzdHJ1Y3QgZXh5bm9zX2RybV9wcml2YXRl ICpwcml2YXRlID0gZHJtX2Rldi0+ZGV2X3ByaXZhdGU7Cj4+PiAgCXN0cnVjdCBkcm1fY3J0YyAq Y3J0YzsKPj4+ICAJaW50IHJldDsKPj4+IEBAIC0zMTgsMTIgKzMxOCw2IEBAIHN0cnVjdCBleHlu b3NfZHJtX2NydGMgKmV4eW5vc19kcm1fY3J0Y19jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRy bV9kZXYsCj4+PiAgCWV4eW5vc19jcnRjLT50eXBlID0gdHlwZTsKPj4+ICAJZXh5bm9zX2NydGMt Pm9wcyA9IG9wczsKPj4+ICAJZXh5bm9zX2NydGMtPmN0eCA9IGN0eDsKPj4+IC0JcGxhbmUgPSBl eHlub3NfcGxhbmVfaW5pdChkcm1fZGV2LCAxIDw8IHBpcGUsCj4+PiAtCQkJCSAgRFJNX1BMQU5F X1RZUEVfUFJJTUFSWSk7Cj4+PiAtCWlmIChJU19FUlIocGxhbmUpKSB7Cj4+PiAtCQlyZXQgPSBQ VFJfRVJSKHBsYW5lKTsKPj4+IC0JCWdvdG8gZXJyX3BsYW5lOwo+Pj4gLQl9Cj4+PiAgCj4+PiAg CWNydGMgPSAmZXh5bm9zX2NydGMtPmJhc2U7Cj4+PiAgCj4+PiBAQCAtMzQyLDcgKzMzNiw2IEBA IHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmV4eW5vc19kcm1fY3J0Y19jcmVhdGUoc3RydWN0IGRy bV9kZXZpY2UgKmRybV9kZXYsCj4+PiAgCj4+PiAgZXJyX2NydGM6Cj4+PiAgCXBsYW5lLT5mdW5j cy0+ZGVzdHJveShwbGFuZSk7Cj4+PiAtZXJyX3BsYW5lOgo+Pj4gIAlrZnJlZShleHlub3NfY3J0 Yyk7Cj4+PiAgCXJldHVybiBFUlJfUFRSKHJldCk7Cj4+PiAgfQo+Pj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9jcnRjLmggYi9kcml2ZXJzL2dwdS9kcm0v ZXh5bm9zL2V4eW5vc19kcm1fY3J0Yy5oCj4+PiBpbmRleCA2MjhiNzg3Li4wZWNkOGZjIDEwMDY0 NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2NydGMuaAo+Pj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2NydGMuaAo+Pj4gQEAgLTE4 LDYgKzE4LDcgQEAKPj4+ICAjaW5jbHVkZSAiZXh5bm9zX2RybV9kcnYuaCIKPj4+ICAKPj4+ICBz dHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpleHlub3NfZHJtX2NydGNfY3JlYXRlKHN0cnVjdCBkcm1f ZGV2aWNlICpkcm1fZGV2LAo+Pj4gKwkJCQkJICAgICAgIHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5l LAo+Pj4gIAkJCQkJICAgICAgIGludCBwaXBlLAo+Pj4gIAkJCQkJICAgICAgIGVudW0gZXh5bm9z X2RybV9vdXRwdXRfdHlwZSB0eXBlLAo+Pj4gIAkJCQkJICAgICAgIHN0cnVjdCBleHlub3NfZHJt X2NydGNfb3BzICpvcHMsCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9l eHlub3NfZHJtX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Rydi5j Cj4+PiBpbmRleCA3MzcxNjRkLi43NzhjOTFlIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2V4eW5vcy9leHlub3NfZHJtX2Rydi5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZXh5 bm9zL2V4eW5vc19kcm1fZHJ2LmMKPj4+IEBAIC01NSw3ICs1NSw2IEBAIHN0YXRpYyBpbnQgZXh5 bm9zX2RybV9sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZmxhZ3Mp Cj4+PiAgewo+Pj4gIAlzdHJ1Y3QgZXh5bm9zX2RybV9wcml2YXRlICpwcml2YXRlOwo+Pj4gIAlp bnQgcmV0Owo+Pj4gLQlpbnQgbnI7Cj4+PiAgCj4+PiAgCXByaXZhdGUgPSBremFsbG9jKHNpemVv ZihzdHJ1Y3QgZXh5bm9zX2RybV9wcml2YXRlKSwgR0ZQX0tFUk5FTCk7Cj4+PiAgCWlmICghcHJp dmF0ZSkKPj4+IEBAIC04MCwxOSArNzksNiBAQCBzdGF0aWMgaW50IGV4eW5vc19kcm1fbG9hZChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGZsYWdzKQo+Pj4gIAo+Pj4gIAll eHlub3NfZHJtX21vZGVfY29uZmlnX2luaXQoZGV2KTsKPj4+ICAKPj4+IC0JZm9yIChuciA9IDA7 IG5yIDwgTUFYX1BMQU5FOyBucisrKSB7Cj4+PiAtCQlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsK Pj4+IC0JCXVuc2lnbmVkIGxvbmcgcG9zc2libGVfY3J0Y3MgPSAoMSA8PCBNQVhfQ1JUQykgLSAx Owo+Pj4gLQo+Pj4gLQkJcGxhbmUgPSBleHlub3NfcGxhbmVfaW5pdChkZXYsIHBvc3NpYmxlX2Ny dGNzLAo+Pj4gLQkJCQkJICBEUk1fUExBTkVfVFlQRV9PVkVSTEFZKTsKPj4+IC0JCWlmICghSVNf RVJSKHBsYW5lKSkKPj4+IC0JCQljb250aW51ZTsKPj4+IC0KPj4+IC0JCXJldCA9IFBUUl9FUlIo cGxhbmUpOwo+Pj4gLQkJZ290byBlcnJfbW9kZV9jb25maWdfY2xlYW51cDsKPj4+IC0JfQo+Pj4g LQo+Pj4gIAkvKiBzZXR1cCBwb3NzaWJsZV9jbG9uZXMuICovCj4+PiAgCWV4eW5vc19kcm1fZW5j b2Rlcl9zZXR1cChkZXYpOwo+Pj4gIAo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9l eHlub3MvZXh5bm9zX2RybV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2Ry bV9kcnYuaAo+Pj4gaW5kZXggNzQxMWFmMi4uY2FkNTRlNyAxMDA2NDQKPj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9kcnYuaAo+Pj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2V4eW5vcy9leHlub3NfZHJtX2Rydi5oCj4+PiBAQCAtNzgsNiArNzgsNyBAQCBlbnVtIGV4 eW5vc19kcm1fb3V0cHV0X3R5cGUgewo+Pj4gICAqIEB0cmFuc3BhcmVuY3k6IHRyYW5zcGFyZW5j eSBvbiBvciBvZmYuCj4+PiAgICogQGFjdGl2YXRlZDogYWN0aXZhdGVkIG9yIG5vdC4KPj4+ICAg KiBAZW5hYmxlZDogZW5hYmxlZCBvciBub3QuCj4+PiArICogQHJlc3VtZTogdG8gcmVzdW1lIG9y IG5vdC4KPj4+ICAgKgo+Pj4gICAqIHRoaXMgc3RydWN0dXJlIGlzIGNvbW1vbiB0byBleHlub3Mg U29DIGFuZCBpdHMgY29udGVudHMgd291bGQgYmUgY29waWVkCj4+PiAgICogdG8gaGFyZHdhcmUg c3BlY2lmaWMgb3ZlcmxheSBpbmZvLgo+Pj4gQEAgLTExMiw2ICsxMTMsNyBAQCBzdHJ1Y3QgZXh5 bm9zX2RybV9wbGFuZSB7Cj4+PiAgCWJvb2wgdHJhbnNwYXJlbmN5OjE7Cj4+PiAgCWJvb2wgYWN0 aXZhdGVkOjE7Cj4+PiAgCWJvb2wgZW5hYmxlZDoxOwo+Pj4gKwlib29sIHJlc3VtZToxOwo+Pj4g IH07Cj4+PiAgCj4+PiAgLyoKPj4+IEBAIC0xNzIsNyArMTc0LDYgQEAgc3RydWN0IGV4eW5vc19k cm1fZGlzcGxheSB7Cj4+PiAgICogQGRpc2FibGVfdmJsYW5rOiBzcGVjaWZpYyBkcml2ZXIgY2Fs bGJhY2sgZm9yIGRpc2FibGluZyB2YmxhbmsgaW50ZXJydXB0Lgo+Pj4gICAqIEB3YWl0X2Zvcl92 Ymxhbms6IHdhaXQgZm9yIHZibGFuayBpbnRlcnJ1cHQgdG8gbWFrZSBzdXJlIHRoYXQKPj4+ICAg KgloYXJkd2FyZSBvdmVybGF5IGlzIHVwZGF0ZWQuCj4+PiAtICogQHdpbl9tb2RlX3NldDogY29w eSBkcm0gb3ZlcmxheSBpbmZvIHRvIGh3IHNwZWNpZmljIG92ZXJsYXkgaW5mby4KPj4+ICAgKiBA d2luX2NvbW1pdDogYXBwbHkgaGFyZHdhcmUgc3BlY2lmaWMgb3ZlcmxheSBkYXRhIHRvIHJlZ2lz dGVycy4KPj4+ICAgKiBAd2luX2VuYWJsZTogZW5hYmxlIGhhcmR3YXJlIHNwZWNpZmljIG92ZXJs YXkuCj4+PiAgICogQHdpbl9kaXNhYmxlOiBkaXNhYmxlIGhhcmR3YXJlIHNwZWNpZmljIG92ZXJs YXkuCj4+PiBAQCAtMTg5LDggKzE5MCw2IEBAIHN0cnVjdCBleHlub3NfZHJtX2NydGNfb3BzIHsK Pj4+ICAJaW50ICgqZW5hYmxlX3ZibGFuaykoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0Yyk7 Cj4+PiAgCXZvaWQgKCpkaXNhYmxlX3ZibGFuaykoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0 Yyk7Cj4+PiAgCXZvaWQgKCp3YWl0X2Zvcl92YmxhbmspKHN0cnVjdCBleHlub3NfZHJtX2NydGMg KmNydGMpOwo+Pj4gLQl2b2lkICgqd2luX21vZGVfc2V0KShzdHJ1Y3QgZXh5bm9zX2RybV9jcnRj ICpjcnRjLAo+Pj4gLQkJCQlzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSAqcGxhbmUpOwo+Pj4gIAl2 b2lkICgqd2luX2NvbW1pdCkoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0YywgaW50IHpwb3Mp Owo+Pj4gIAl2b2lkICgqd2luX2VuYWJsZSkoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0Yywg aW50IHpwb3MpOwo+Pj4gIAl2b2lkICgqd2luX2Rpc2FibGUpKHN0cnVjdCBleHlub3NfZHJtX2Ny dGMgKmNydGMsIGludCB6cG9zKTsKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXh5 bm9zL2V4eW5vc19kcm1fZmltZC5jIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJt X2ZpbWQuYwo+Pj4gaW5kZXggOTI1ZmM2OS4uZWJiNGNkYyAxMDA2NDQKPj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9maW1kLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9leHlub3MvZXh5bm9zX2RybV9maW1kLmMKPj4+IEBAIC0zMSw2ICszMSw3IEBACj4+PiAg I2luY2x1ZGUgImV4eW5vc19kcm1fZHJ2LmgiCj4+PiAgI2luY2x1ZGUgImV4eW5vc19kcm1fZmJk ZXYuaCIKPj4+ICAjaW5jbHVkZSAiZXh5bm9zX2RybV9jcnRjLmgiCj4+PiArI2luY2x1ZGUgImV4 eW5vc19kcm1fcGxhbmUuaCIKPj4+ICAjaW5jbHVkZSAiZXh5bm9zX2RybV9pb21tdS5oIgo+Pj4g IAo+Pj4gIC8qCj4+PiBAQCAtMTQwLDMxICsxNDEsMTUgQEAgc3RhdGljIHN0cnVjdCBmaW1kX2Ry aXZlcl9kYXRhIGV4eW5vczVfZmltZF9kcml2ZXJfZGF0YSA9IHsKPj4+ICAJLmhhc192dHNlbCA9 IDEsCj4+PiAgfTsKPj4+ICAKPj4+IC1zdHJ1Y3QgZmltZF93aW5fZGF0YSB7Cj4+PiAtCXVuc2ln bmVkIGludAkJb2Zmc2V0X3g7Cj4+PiAtCXVuc2lnbmVkIGludAkJb2Zmc2V0X3k7Cj4+PiAtCXVu c2lnbmVkIGludAkJb3ZsX3dpZHRoOwo+Pj4gLQl1bnNpZ25lZCBpbnQJCW92bF9oZWlnaHQ7Cj4+ PiAtCXVuc2lnbmVkIGludAkJZmJfd2lkdGg7Cj4+PiAtCXVuc2lnbmVkIGludAkJZmJfaGVpZ2h0 Owo+Pj4gLQl1bnNpZ25lZCBpbnQJCWJwcDsKPj4+IC0JdW5zaWduZWQgaW50CQlwaXhlbF9mb3Jt YXQ7Cj4+PiAtCWRtYV9hZGRyX3QJCWRtYV9hZGRyOwo+Pj4gLQl1bnNpZ25lZCBpbnQJCWJ1Zl9v ZmZzaXplOwo+Pj4gLQl1bnNpZ25lZCBpbnQJCWxpbmVfc2l6ZTsJLyogYnl0ZXMgKi8KPj4+IC0J Ym9vbAkJCWVuYWJsZWQ7Cj4+PiAtCWJvb2wJCQlyZXN1bWU7Cj4+PiAtfTsKPj4+IC0KPj4+ICBz dHJ1Y3QgZmltZF9jb250ZXh0IHsKPj4+ICAJc3RydWN0IGRldmljZQkJCSpkZXY7Cj4+PiAgCXN0 cnVjdCBkcm1fZGV2aWNlCQkqZHJtX2RldjsKPj4+ICAJc3RydWN0IGV4eW5vc19kcm1fY3J0YwkJ KmNydGM7Cj4+PiArCXN0cnVjdCBleHlub3NfZHJtX3BsYW5lCQlwbGFuZXNbV0lORE9XU19OUl07 Cj4+PiAgCXN0cnVjdCBjbGsJCQkqYnVzX2NsazsKPj4+ICAJc3RydWN0IGNsawkJCSpsY2RfY2xr Owo+Pj4gIAl2b2lkIF9faW9tZW0JCQkqcmVnczsKPj4+ICAJc3RydWN0IHJlZ21hcAkJCSpzeXNy ZWc7Cj4+PiAtCXN0cnVjdCBmaW1kX3dpbl9kYXRhCQl3aW5fZGF0YVtXSU5ET1dTX05SXTsKPj4+ ICAJdW5zaWduZWQgaW50CQkJZGVmYXVsdF93aW47Cj4+PiAgCXVuc2lnbmVkIGxvbmcJCQlpcnFf ZmxhZ3M7Cj4+PiAgCXUzMgkJCQl2aWRjb24wOwo+Pj4gQEAgLTUwNiw1OCArNDkxLDkgQEAgc3Rh dGljIHZvaWQgZmltZF9kaXNhYmxlX3ZibGFuayhzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpjcnRj KQo+Pj4gIAl9Cj4+PiAgfQo+Pj4gIAo+Pj4gLXN0YXRpYyB2b2lkIGZpbWRfd2luX21vZGVfc2V0 KHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMsCj4+PiAtCQkJc3RydWN0IGV4eW5vc19kcm1f cGxhbmUgKnBsYW5lKQo+Pj4gLXsKPj4+IC0Jc3RydWN0IGZpbWRfY29udGV4dCAqY3R4ID0gY3J0 Yy0+Y3R4Owo+Pj4gLQlzdHJ1Y3QgZmltZF93aW5fZGF0YSAqd2luX2RhdGE7Cj4+PiAtCWludCB3 aW47Cj4+PiAtCXVuc2lnbmVkIGxvbmcgb2Zmc2V0Owo+Pj4gLQo+Pj4gLQlpZiAoIXBsYW5lKSB7 Cj4+PiAtCQlEUk1fRVJST1IoInBsYW5lIGlzIE5VTExcbiIpOwo+Pj4gLQkJcmV0dXJuOwo+Pj4g LQl9Cj4+PiAtCj4+PiAtCXdpbiA9IHBsYW5lLT56cG9zOwo+Pj4gLQlpZiAod2luID09IERFRkFV TFRfWlBPUykKPj4+IC0JCXdpbiA9IGN0eC0+ZGVmYXVsdF93aW47Cj4+PiAtCj4+PiAtCWlmICh3 aW4gPCAwIHx8IHdpbiA+PSBXSU5ET1dTX05SKQo+Pj4gLQkJcmV0dXJuOwo+Pj4gLQo+Pj4gLQlv ZmZzZXQgPSBwbGFuZS0+ZmJfeCAqIChwbGFuZS0+YnBwID4+IDMpOwo+Pj4gLQlvZmZzZXQgKz0g cGxhbmUtPmZiX3kgKiBwbGFuZS0+cGl0Y2g7Cj4+PiAtCj4+PiAtCURSTV9ERUJVR19LTVMoIm9m ZnNldCA9IDB4JWx4LCBwaXRjaCA9ICV4XG4iLCBvZmZzZXQsIHBsYW5lLT5waXRjaCk7Cj4+PiAt Cj4+PiAtCXdpbl9kYXRhID0gJmN0eC0+d2luX2RhdGFbd2luXTsKPj4+IC0KPj4+IC0Jd2luX2Rh dGEtPm9mZnNldF94ID0gcGxhbmUtPmNydGNfeDsKPj4+IC0Jd2luX2RhdGEtPm9mZnNldF95ID0g cGxhbmUtPmNydGNfeTsKPj4+IC0Jd2luX2RhdGEtPm92bF93aWR0aCA9IHBsYW5lLT5jcnRjX3dp ZHRoOwo+Pj4gLQl3aW5fZGF0YS0+b3ZsX2hlaWdodCA9IHBsYW5lLT5jcnRjX2hlaWdodDsKPj4+ IC0Jd2luX2RhdGEtPmZiX3dpZHRoID0gcGxhbmUtPmZiX3dpZHRoOwo+Pj4gLQl3aW5fZGF0YS0+ ZmJfaGVpZ2h0ID0gcGxhbmUtPmZiX2hlaWdodDsKPj4+IC0Jd2luX2RhdGEtPmRtYV9hZGRyID0g cGxhbmUtPmRtYV9hZGRyWzBdICsgb2Zmc2V0Owo+Pj4gLQl3aW5fZGF0YS0+YnBwID0gcGxhbmUt PmJwcDsKPj4+IC0Jd2luX2RhdGEtPnBpeGVsX2Zvcm1hdCA9IHBsYW5lLT5waXhlbF9mb3JtYXQ7 Cj4+PiAtCXdpbl9kYXRhLT5idWZfb2Zmc2l6ZSA9IChwbGFuZS0+ZmJfd2lkdGggLSBwbGFuZS0+ Y3J0Y193aWR0aCkgKgo+Pj4gLQkJCQkocGxhbmUtPmJwcCA+PiAzKTsKPj4+IC0Jd2luX2RhdGEt PmxpbmVfc2l6ZSA9IHBsYW5lLT5jcnRjX3dpZHRoICogKHBsYW5lLT5icHAgPj4gMyk7Cj4+PiAt Cj4+PiAtCURSTV9ERUJVR19LTVMoIm9mZnNldF94ID0gJWQsIG9mZnNldF95ID0gJWRcbiIsCj4+ PiAtCQkJd2luX2RhdGEtPm9mZnNldF94LCB3aW5fZGF0YS0+b2Zmc2V0X3kpOwo+Pj4gLQlEUk1f REVCVUdfS01TKCJvdmxfd2lkdGggPSAlZCwgb3ZsX2hlaWdodCA9ICVkXG4iLAo+Pj4gLQkJCXdp bl9kYXRhLT5vdmxfd2lkdGgsIHdpbl9kYXRhLT5vdmxfaGVpZ2h0KTsKPj4+IC0JRFJNX0RFQlVH X0tNUygicGFkZHIgPSAweCVseFxuIiwgKHVuc2lnbmVkIGxvbmcpd2luX2RhdGEtPmRtYV9hZGRy KTsKPj4+IC0JRFJNX0RFQlVHX0tNUygiZmJfd2lkdGggPSAlZCwgY3J0Y193aWR0aCA9ICVkXG4i LAo+Pj4gLQkJCXBsYW5lLT5mYl93aWR0aCwgcGxhbmUtPmNydGNfd2lkdGgpOwo+Pj4gLX0KPj4+ IC0KPj4+ICBzdGF0aWMgdm9pZCBmaW1kX3dpbl9zZXRfcGl4Zm10KHN0cnVjdCBmaW1kX2NvbnRl eHQgKmN0eCwgdW5zaWduZWQgaW50IHdpbikKPj4+ICB7Cj4+PiAtCXN0cnVjdCBmaW1kX3dpbl9k YXRhICp3aW5fZGF0YSA9ICZjdHgtPndpbl9kYXRhW3dpbl07Cj4+PiArCXN0cnVjdCBleHlub3Nf ZHJtX3BsYW5lICpwbGFuZSA9ICZjdHgtPnBsYW5lc1t3aW5dOwo+Pj4gIAl1bnNpZ25lZCBsb25n IHZhbDsKPj4+ICAKPj4+ICAJdmFsID0gV0lOQ09OeF9FTldJTjsKPj4+IEBAIC01NjcsMTEgKzUw MywxMSBAQCBzdGF0aWMgdm9pZCBmaW1kX3dpbl9zZXRfcGl4Zm10KHN0cnVjdCBmaW1kX2NvbnRl eHQgKmN0eCwgdW5zaWduZWQgaW50IHdpbikKPj4+ICAJICogU28gdGhlIHJlcXVlc3QgZm9ybWF0 IGlzIEFSR0I4ODg4IHRoZW4gY2hhbmdlIGl0IHRvIFhSR0I4ODg4Lgo+Pj4gIAkgKi8KPj4+ICAJ aWYgKGN0eC0+ZHJpdmVyX2RhdGEtPmhhc19saW1pdGVkX2ZtdCAmJiAhd2luKSB7Cj4+PiAtCQlp ZiAod2luX2RhdGEtPnBpeGVsX2Zvcm1hdCA9PSBEUk1fRk9STUFUX0FSR0I4ODg4KQo+Pj4gLQkJ CXdpbl9kYXRhLT5waXhlbF9mb3JtYXQgPSBEUk1fRk9STUFUX1hSR0I4ODg4Owo+Pj4gKwkJaWYg KHBsYW5lLT5waXhlbF9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9BUkdCODg4OCkKPj4+ICsJCQlwbGFu ZS0+cGl4ZWxfZm9ybWF0ID0gRFJNX0ZPUk1BVF9YUkdCODg4ODsKPj4+ICAJfQo+Pj4gIAo+Pj4g LQlzd2l0Y2ggKHdpbl9kYXRhLT5waXhlbF9mb3JtYXQpIHsKPj4+ICsJc3dpdGNoIChwbGFuZS0+ cGl4ZWxfZm9ybWF0KSB7Cj4+PiAgCWNhc2UgRFJNX0ZPUk1BVF9DODoKPj4+ICAJCXZhbCB8PSBX SU5DT04wX0JQUE1PREVfOEJQUF9QQUxFVFRFOwo+Pj4gIAkJdmFsIHw9IFdJTkNPTnhfQlVSU1RM RU5fOFdPUkQ7Cj4+PiBAQCAtNjA3LDcgKzU0Myw3IEBAIHN0YXRpYyB2b2lkIGZpbWRfd2luX3Nl dF9waXhmbXQoc3RydWN0IGZpbWRfY29udGV4dCAqY3R4LCB1bnNpZ25lZCBpbnQgd2luKQo+Pj4g IAkJYnJlYWs7Cj4+PiAgCX0KPj4+ICAKPj4+IC0JRFJNX0RFQlVHX0tNUygiYnBwID0gJWRcbiIs IHdpbl9kYXRhLT5icHApOwo+Pj4gKwlEUk1fREVCVUdfS01TKCJicHAgPSAlZFxuIiwgcGxhbmUt PmJwcCk7Cj4+PiAgCj4+PiAgCS8qCj4+PiAgCSAqIEluIGNhc2Ugb2YgZXh5bm9zLCBzZXR0aW5n IGRtYS1idXJzdCB0byAxNldvcmQgY2F1c2VzIHBlcm1hbmVudAo+Pj4gQEAgLTYxNyw3ICs1NTMs NyBAQCBzdGF0aWMgdm9pZCBmaW1kX3dpbl9zZXRfcGl4Zm10KHN0cnVjdCBmaW1kX2NvbnRleHQg KmN0eCwgdW5zaWduZWQgaW50IHdpbikKPj4+ICAJICogbW92ZW1lbnQgY2F1c2VzIHVuc3RhYmxl IERNQSB3aGljaCByZXN1bHRzIGludG8gaW9tbXUgY3Jhc2gvdGVhci4KPj4+ICAJICovCj4+PiAg Cj4+PiAtCWlmICh3aW5fZGF0YS0+ZmJfd2lkdGggPCBNSU5fRkJfV0lEVEhfRk9SXzE2V09SRF9C VVJTVCkgewo+Pj4gKwlpZiAocGxhbmUtPmZiX3dpZHRoIDwgTUlOX0ZCX1dJRFRIX0ZPUl8xNldP UkRfQlVSU1QpIHsKPj4+ICAJCXZhbCAmPSB+V0lOQ09OeF9CVVJTVExFTl9NQVNLOwo+Pj4gIAkJ dmFsIHw9IFdJTkNPTnhfQlVSU1RMRU5fNFdPUkQ7Cj4+PiAgCX0KPj4+IEBAIC02NjgsMTEgKzYw NCwxMSBAQCBzdGF0aWMgdm9pZCBmaW1kX3NoYWRvd19wcm90ZWN0X3dpbihzdHJ1Y3QgZmltZF9j b250ZXh0ICpjdHgsCj4+PiAgc3RhdGljIHZvaWQgZmltZF93aW5fY29tbWl0KHN0cnVjdCBleHlu b3NfZHJtX2NydGMgKmNydGMsIGludCB6cG9zKQo+Pj4gIHsKPj4+ICAJc3RydWN0IGZpbWRfY29u dGV4dCAqY3R4ID0gY3J0Yy0+Y3R4Owo+Pj4gLQlzdHJ1Y3QgZmltZF93aW5fZGF0YSAqd2luX2Rh dGE7Cj4+PiArCXN0cnVjdCBleHlub3NfZHJtX3BsYW5lICpwbGFuZTsKPj4+ICAJaW50IHdpbiA9 IHpwb3M7Cj4+PiAtCXVuc2lnbmVkIGxvbmcgdmFsLCBhbHBoYSwgc2l6ZTsKPj4+IC0JdW5zaWdu ZWQgaW50IGxhc3RfeDsKPj4+IC0JdW5zaWduZWQgaW50IGxhc3RfeTsKPj4+ICsJZG1hX2FkZHJf dCBkbWFfYWRkcjsKPj4+ICsJdW5zaWduZWQgbG9uZyB2YWwsIGFscGhhLCBzaXplLCBvZmZzZXQ7 Cj4+PiArCXVuc2lnbmVkIGludCBsYXN0X3gsIGxhc3RfeSwgYnVmX29mZnNpemUsIGxpbmVfc2l6 ZTsKPj4+ICAKPj4+ICAJaWYgKGN0eC0+c3VzcGVuZGVkKQo+Pj4gIAkJcmV0dXJuOwo+Pj4gQEAg LTY4MywxMSArNjE5LDExIEBAIHN0YXRpYyB2b2lkIGZpbWRfd2luX2NvbW1pdChzdHJ1Y3QgZXh5 bm9zX2RybV9jcnRjICpjcnRjLCBpbnQgenBvcykKPj4+ICAJaWYgKHdpbiA8IDAgfHwgd2luID49 IFdJTkRPV1NfTlIpCj4+PiAgCQlyZXR1cm47Cj4+PiAgCj4+PiAtCXdpbl9kYXRhID0gJmN0eC0+ d2luX2RhdGFbd2luXTsKPj4+ICsJcGxhbmUgPSAmY3R4LT5wbGFuZXNbd2luXTsKPj4+ICAKPj4+ ICAJLyogSWYgc3VzcGVuZGVkLCBlbmFibGUgdGhpcyBvbiByZXN1bWUgKi8KPj4+ICAJaWYgKGN0 eC0+c3VzcGVuZGVkKSB7Cj4+PiAtCQl3aW5fZGF0YS0+cmVzdW1lID0gdHJ1ZTsKPj4+ICsJCXBs YW5lLT5yZXN1bWUgPSB0cnVlOwo+Pj4gIAkJcmV0dXJuOwo+Pj4gIAl9Cj4+PiAgCj4+PiBAQCAt NzA0LDM4ICs2NDAsNDUgQEAgc3RhdGljIHZvaWQgZmltZF93aW5fY29tbWl0KHN0cnVjdCBleHlu b3NfZHJtX2NydGMgKmNydGMsIGludCB6cG9zKQo+Pj4gIAkvKiBwcm90ZWN0IHdpbmRvd3MgKi8K Pj4+ICAJZmltZF9zaGFkb3dfcHJvdGVjdF93aW4oY3R4LCB3aW4sIHRydWUpOwo+Pj4gIAo+Pj4g Kwo+Pj4gKwlvZmZzZXQgPSBwbGFuZS0+ZmJfeCAqIChwbGFuZS0+YnBwID4+IDMpOwo+Pj4gKwlv ZmZzZXQgKz0gcGxhbmUtPmZiX3kgKiBwbGFuZS0+cGl0Y2g7Cj4+PiArCj4+PiAgCS8qIGJ1ZmZl ciBzdGFydCBhZGRyZXNzICovCj4+PiAtCXZhbCA9ICh1bnNpZ25lZCBsb25nKXdpbl9kYXRhLT5k bWFfYWRkcjsKPj4+ICsJZG1hX2FkZHIgPSBwbGFuZS0+ZG1hX2FkZHJbMF0gKyBvZmZzZXQ7Cj4+ PiArCXZhbCA9ICh1bnNpZ25lZCBsb25nKWRtYV9hZGRyOwo+Pj4gIAl3cml0ZWwodmFsLCBjdHgt PnJlZ3MgKyBWSURXeF9CVUZfU1RBUlQod2luLCAwKSk7Cj4+PiAgCj4+PiAgCS8qIGJ1ZmZlciBl bmQgYWRkcmVzcyAqLwo+Pj4gLQlzaXplID0gd2luX2RhdGEtPmZiX3dpZHRoICogd2luX2RhdGEt Pm92bF9oZWlnaHQgKiAod2luX2RhdGEtPmJwcCA+PiAzKTsKPj4+IC0JdmFsID0gKHVuc2lnbmVk IGxvbmcpKHdpbl9kYXRhLT5kbWFfYWRkciArIHNpemUpOwo+Pj4gKwlzaXplID0gcGxhbmUtPmZi X3dpZHRoICogcGxhbmUtPmNydGNfaGVpZ2h0ICogKHBsYW5lLT5icHAgPj4gMyk7Cj4+PiArCXZh bCA9ICh1bnNpZ25lZCBsb25nKShkbWFfYWRkciArIHNpemUpOwo+Pj4gIAl3cml0ZWwodmFsLCBj dHgtPnJlZ3MgKyBWSURXeF9CVUZfRU5EKHdpbiwgMCkpOwo+Pj4gIAo+Pj4gIAlEUk1fREVCVUdf S01TKCJzdGFydCBhZGRyID0gMHglbHgsIGVuZCBhZGRyID0gMHglbHgsIHNpemUgPSAweCVseFxu IiwKPj4+IC0JCQkodW5zaWduZWQgbG9uZyl3aW5fZGF0YS0+ZG1hX2FkZHIsIHZhbCwgc2l6ZSk7 Cj4+PiArCQkJKHVuc2lnbmVkIGxvbmcpZG1hX2FkZHIsIHZhbCwgc2l6ZSk7Cj4+PiAgCURSTV9E RUJVR19LTVMoIm92bF93aWR0aCA9ICVkLCBvdmxfaGVpZ2h0ID0gJWRcbiIsCj4+PiAtCQkJd2lu X2RhdGEtPm92bF93aWR0aCwgd2luX2RhdGEtPm92bF9oZWlnaHQpOwo+Pj4gKwkJCXBsYW5lLT5j cnRjX3dpZHRoLCBwbGFuZS0+Y3J0Y19oZWlnaHQpOwo+Pj4gIAo+Pj4gIAkvKiBidWZmZXIgc2l6 ZSAqLwo+Pj4gLQl2YWwgPSBWSURXX0JVRl9TSVpFX09GRlNFVCh3aW5fZGF0YS0+YnVmX29mZnNp emUpIHwKPj4+IC0JCVZJRFdfQlVGX1NJWkVfUEFHRVdJRFRIKHdpbl9kYXRhLT5saW5lX3NpemUp IHwKPj4+IC0JCVZJRFdfQlVGX1NJWkVfT0ZGU0VUX0Uod2luX2RhdGEtPmJ1Zl9vZmZzaXplKSB8 Cj4+PiAtCQlWSURXX0JVRl9TSVpFX1BBR0VXSURUSF9FKHdpbl9kYXRhLT5saW5lX3NpemUpOwo+ Pj4gKwlidWZfb2Zmc2l6ZSA9IChwbGFuZS0+ZmJfd2lkdGggLSBwbGFuZS0+Y3J0Y193aWR0aCkg KiAocGxhbmUtPmJwcCA+PiAzKTsKPj4+ICsJbGluZV9zaXplID0gcGxhbmUtPmNydGNfd2lkdGgg KiAocGxhbmUtPmJwcCA+PiAzKTsKPj4+ICsJdmFsID0gVklEV19CVUZfU0laRV9PRkZTRVQoYnVm X29mZnNpemUpIHwKPj4+ICsJCVZJRFdfQlVGX1NJWkVfUEFHRVdJRFRIKGxpbmVfc2l6ZSkgfAo+ Pj4gKwkJVklEV19CVUZfU0laRV9PRkZTRVRfRShidWZfb2Zmc2l6ZSkgfAo+Pj4gKwkJVklEV19C VUZfU0laRV9QQUdFV0lEVEhfRShsaW5lX3NpemUpOwo+Pj4gIAl3cml0ZWwodmFsLCBjdHgtPnJl Z3MgKyBWSURXeF9CVUZfU0laRSh3aW4sIDApKTsKPj4+ICAKPj4+ICAJLyogT1NEIHBvc2l0aW9u ICovCj4+PiAtCXZhbCA9IFZJRE9TRHhBX1RPUExFRlRfWCh3aW5fZGF0YS0+b2Zmc2V0X3gpIHwK Pj4+IC0JCVZJRE9TRHhBX1RPUExFRlRfWSh3aW5fZGF0YS0+b2Zmc2V0X3kpIHwKPj4+IC0JCVZJ RE9TRHhBX1RPUExFRlRfWF9FKHdpbl9kYXRhLT5vZmZzZXRfeCkgfAo+Pj4gLQkJVklET1NEeEFf VE9QTEVGVF9ZX0Uod2luX2RhdGEtPm9mZnNldF95KTsKPj4+ICsJdmFsID0gVklET1NEeEFfVE9Q TEVGVF9YKHBsYW5lLT5jcnRjX3gpIHwKPj4+ICsJCVZJRE9TRHhBX1RPUExFRlRfWShwbGFuZS0+ Y3J0Y195KSB8Cj4+PiArCQlWSURPU0R4QV9UT1BMRUZUX1hfRShwbGFuZS0+Y3J0Y194KSB8Cj4+ PiArCQlWSURPU0R4QV9UT1BMRUZUX1lfRShwbGFuZS0+Y3J0Y195KTsKPj4+ICAJd3JpdGVsKHZh bCwgY3R4LT5yZWdzICsgVklET1NEX0Eod2luKSk7Cj4+PiAgCj4+PiAtCWxhc3RfeCA9IHdpbl9k YXRhLT5vZmZzZXRfeCArIHdpbl9kYXRhLT5vdmxfd2lkdGg7Cj4+PiArCWxhc3RfeCA9IHBsYW5l LT5jcnRjX3ggKyBwbGFuZS0+Y3J0Y193aWR0aDsKPj4+ICAJaWYgKGxhc3RfeCkKPj4+ICAJCWxh c3RfeC0tOwo+Pj4gLQlsYXN0X3kgPSB3aW5fZGF0YS0+b2Zmc2V0X3kgKyB3aW5fZGF0YS0+b3Zs X2hlaWdodDsKPj4+ICsJbGFzdF95ID0gcGxhbmUtPmNydGNfeSArIHBsYW5lLT5jcnRjX2hlaWdo dDsKPj4+ICAJaWYgKGxhc3RfeSkKPj4+ICAJCWxhc3RfeS0tOwo+Pj4gIAo+Pj4gQEAgLTc0NSw3 ICs2ODgsNyBAQCBzdGF0aWMgdm9pZCBmaW1kX3dpbl9jb21taXQoc3RydWN0IGV4eW5vc19kcm1f Y3J0YyAqY3J0YywgaW50IHpwb3MpCj4+PiAgCXdyaXRlbCh2YWwsIGN0eC0+cmVncyArIFZJRE9T RF9CKHdpbikpOwo+Pj4gIAo+Pj4gIAlEUk1fREVCVUdfS01TKCJvc2QgcG9zOiB0eCA9ICVkLCB0 eSA9ICVkLCBieCA9ICVkLCBieSA9ICVkXG4iLAo+Pj4gLQkJCXdpbl9kYXRhLT5vZmZzZXRfeCwg d2luX2RhdGEtPm9mZnNldF95LCBsYXN0X3gsIGxhc3RfeSk7Cj4+PiArCQkJcGxhbmUtPmNydGNf eCwgcGxhbmUtPmNydGNfeSwgbGFzdF94LCBsYXN0X3kpOwo+Pj4gIAo+Pj4gIAkvKiBoYXJkd2Fy ZSB3aW5kb3cgMCBkb2Vzbid0IHN1cHBvcnQgYWxwaGEgY2hhbm5lbC4gKi8KPj4+ICAJaWYgKHdp biAhPSAwKSB7Cj4+PiBAQCAtNzYyLDcgKzcwNSw3IEBAIHN0YXRpYyB2b2lkIGZpbWRfd2luX2Nv bW1pdChzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpjcnRjLCBpbnQgenBvcykKPj4+ICAJCXUzMiBv ZmZzZXQgPSBWSURPU0RfRCh3aW4pOwo+Pj4gIAkJaWYgKHdpbiA9PSAwKQo+Pj4gIAkJCW9mZnNl dCA9IFZJRE9TRF9DKHdpbik7Cj4+PiAtCQl2YWwgPSB3aW5fZGF0YS0+b3ZsX3dpZHRoICogd2lu X2RhdGEtPm92bF9oZWlnaHQ7Cj4+PiArCQl2YWwgPSBwbGFuZS0+Y3J0Y193aWR0aCAqIHBsYW5l LT5jcnRjX2hlaWdodDsKPj4+ICAJCXdyaXRlbCh2YWwsIGN0eC0+cmVncyArIG9mZnNldCk7Cj4+ PiAgCj4+PiAgCQlEUk1fREVCVUdfS01TKCJvc2Qgc2l6ZSA9IDB4JXhcbiIsICh1bnNpZ25lZCBp bnQpdmFsKTsKPj4+IEBAIC03ODIsNyArNzI1LDcgQEAgc3RhdGljIHZvaWQgZmltZF93aW5fY29t bWl0KHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMsIGludCB6cG9zKQo+Pj4gIAkvKiBFbmFi bGUgRE1BIGNoYW5uZWwgYW5kIHVucHJvdGVjdCB3aW5kb3dzICovCj4+PiAgCWZpbWRfc2hhZG93 X3Byb3RlY3Rfd2luKGN0eCwgd2luLCBmYWxzZSk7Cj4+PiAgCj4+PiAtCXdpbl9kYXRhLT5lbmFi bGVkID0gdHJ1ZTsKPj4+ICsJcGxhbmUtPmVuYWJsZWQgPSB0cnVlOwo+Pj4gIAo+Pj4gIAlpZiAo Y3R4LT5pODBfaWYpCj4+PiAgCQlhdG9taWNfc2V0KCZjdHgtPndpbl91cGRhdGVkLCAxKTsKPj4+ IEBAIC03OTEsNyArNzM0LDcgQEAgc3RhdGljIHZvaWQgZmltZF93aW5fY29tbWl0KHN0cnVjdCBl eHlub3NfZHJtX2NydGMgKmNydGMsIGludCB6cG9zKQo+Pj4gIHN0YXRpYyB2b2lkIGZpbWRfd2lu X2Rpc2FibGUoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0YywgaW50IHpwb3MpCj4+PiAgewo+ Pj4gIAlzdHJ1Y3QgZmltZF9jb250ZXh0ICpjdHggPSBjcnRjLT5jdHg7Cj4+PiAtCXN0cnVjdCBm aW1kX3dpbl9kYXRhICp3aW5fZGF0YTsKPj4+ICsJc3RydWN0IGV4eW5vc19kcm1fcGxhbmUgKnBs YW5lOwo+Pj4gIAlpbnQgd2luID0genBvczsKPj4+ICAKPj4+ICAJaWYgKHdpbiA9PSBERUZBVUxU X1pQT1MpCj4+PiBAQCAtODAwLDExICs3NDMsMTEgQEAgc3RhdGljIHZvaWQgZmltZF93aW5fZGlz YWJsZShzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpjcnRjLCBpbnQgenBvcykKPj4+ICAJaWYgKHdp biA8IDAgfHwgd2luID49IFdJTkRPV1NfTlIpCj4+PiAgCQlyZXR1cm47Cj4+PiAgCj4+PiAtCXdp bl9kYXRhID0gJmN0eC0+d2luX2RhdGFbd2luXTsKPj4+ICsJcGxhbmUgPSAmY3R4LT5wbGFuZXNb d2luXTsKPj4+ICAKPj4+ICAJaWYgKGN0eC0+c3VzcGVuZGVkKSB7Cj4+PiAgCQkvKiBkbyBub3Qg cmVzdW1lIHRoaXMgd2luZG93Ki8KPj4+IC0JCXdpbl9kYXRhLT5yZXN1bWUgPSBmYWxzZTsKPj4+ ICsJCXBsYW5lLT5yZXN1bWUgPSBmYWxzZTsKPj4+ICAJCXJldHVybjsKPj4+ICAJfQo+Pj4gIAo+ Pj4gQEAgLTgxOSw0MiArNzYyLDQyIEBAIHN0YXRpYyB2b2lkIGZpbWRfd2luX2Rpc2FibGUoc3Ry dWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0YywgaW50IHpwb3MpCj4+PiAgCS8qIHVucHJvdGVjdCB3 aW5kb3dzICovCj4+PiAgCWZpbWRfc2hhZG93X3Byb3RlY3Rfd2luKGN0eCwgd2luLCBmYWxzZSk7 Cj4+PiAgCj4+PiAtCXdpbl9kYXRhLT5lbmFibGVkID0gZmFsc2U7Cj4+PiArCXBsYW5lLT5lbmFi bGVkID0gZmFsc2U7Cj4+PiAgfQo+Pj4gIAo+Pj4gIHN0YXRpYyB2b2lkIGZpbWRfd2luZG93X3N1 c3BlbmQoc3RydWN0IGZpbWRfY29udGV4dCAqY3R4KQo+Pj4gIHsKPj4+IC0Jc3RydWN0IGZpbWRf d2luX2RhdGEgKndpbl9kYXRhOwo+Pj4gKwlzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSAqcGxhbmU7 Cj4+PiAgCWludCBpOwo+Pj4gIAo+Pj4gIAlmb3IgKGkgPSAwOyBpIDwgV0lORE9XU19OUjsgaSsr KSB7Cj4+PiAtCQl3aW5fZGF0YSA9ICZjdHgtPndpbl9kYXRhW2ldOwo+Pj4gLQkJd2luX2RhdGEt PnJlc3VtZSA9IHdpbl9kYXRhLT5lbmFibGVkOwo+Pj4gLQkJaWYgKHdpbl9kYXRhLT5lbmFibGVk KQo+Pj4gKwkJcGxhbmUgPSAmY3R4LT5wbGFuZXNbaV07Cj4+PiArCQlwbGFuZS0+cmVzdW1lID0g cGxhbmUtPmVuYWJsZWQ7Cj4+PiArCQlpZiAocGxhbmUtPmVuYWJsZWQpCj4+PiAgCQkJZmltZF93 aW5fZGlzYWJsZShjdHgtPmNydGMsIGkpOwo+Pj4gIAl9Cj4+PiAgfQo+Pj4gIAo+Pj4gIHN0YXRp YyB2b2lkIGZpbWRfd2luZG93X3Jlc3VtZShzdHJ1Y3QgZmltZF9jb250ZXh0ICpjdHgpCj4+PiAg ewo+Pj4gLQlzdHJ1Y3QgZmltZF93aW5fZGF0YSAqd2luX2RhdGE7Cj4+PiArCXN0cnVjdCBleHlu b3NfZHJtX3BsYW5lICpwbGFuZTsKPj4+ICAJaW50IGk7Cj4+PiAgCj4+PiAgCWZvciAoaSA9IDA7 IGkgPCBXSU5ET1dTX05SOyBpKyspIHsKPj4+IC0JCXdpbl9kYXRhID0gJmN0eC0+d2luX2RhdGFb aV07Cj4+PiAtCQl3aW5fZGF0YS0+ZW5hYmxlZCA9IHdpbl9kYXRhLT5yZXN1bWU7Cj4+PiAtCQl3 aW5fZGF0YS0+cmVzdW1lID0gZmFsc2U7Cj4+PiArCQlwbGFuZSA9ICZjdHgtPnBsYW5lc1tpXTsK Pj4+ICsJCXBsYW5lLT5lbmFibGVkID0gcGxhbmUtPnJlc3VtZTsKPj4+ICsJCXBsYW5lLT5yZXN1 bWUgPSBmYWxzZTsKPj4+ICAJfQo+Pj4gIH0KPj4+ICAKPj4+ICBzdGF0aWMgdm9pZCBmaW1kX2Fw cGx5KHN0cnVjdCBmaW1kX2NvbnRleHQgKmN0eCkKPj4+ICB7Cj4+PiAtCXN0cnVjdCBmaW1kX3dp bl9kYXRhICp3aW5fZGF0YTsKPj4+ICsJc3RydWN0IGV4eW5vc19kcm1fcGxhbmUgKnBsYW5lOwo+ Pj4gIAlpbnQgaTsKPj4+ICAKPj4+ICAJZm9yIChpID0gMDsgaSA8IFdJTkRPV1NfTlI7IGkrKykg ewo+Pj4gLQkJd2luX2RhdGEgPSAmY3R4LT53aW5fZGF0YVtpXTsKPj4+IC0JCWlmICh3aW5fZGF0 YS0+ZW5hYmxlZCkKPj4+ICsJCXBsYW5lID0gJmN0eC0+cGxhbmVzW2ldOwo+Pj4gKwkJaWYgKHBs YW5lLT5lbmFibGVkKQo+Pj4gIAkJCWZpbWRfd2luX2NvbW1pdChjdHgtPmNydGMsIGkpOwo+Pj4g IAkJZWxzZQo+Pj4gIAkJCWZpbWRfd2luX2Rpc2FibGUoY3R4LT5jcnRjLCBpKTsKPj4+IEBAIC0x MDExLDcgKzk1NCw2IEBAIHN0YXRpYyBzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjX29wcyBmaW1kX2Ny dGNfb3BzID0gewo+Pj4gIAkuZW5hYmxlX3ZibGFuayA9IGZpbWRfZW5hYmxlX3ZibGFuaywKPj4+ ICAJLmRpc2FibGVfdmJsYW5rID0gZmltZF9kaXNhYmxlX3ZibGFuaywKPj4+ICAJLndhaXRfZm9y X3ZibGFuayA9IGZpbWRfd2FpdF9mb3JfdmJsYW5rLAo+Pj4gLQkud2luX21vZGVfc2V0ID0gZmlt ZF93aW5fbW9kZV9zZXQsCj4+PiAgCS53aW5fY29tbWl0ID0gZmltZF93aW5fY29tbWl0LAo+Pj4g IAkud2luX2Rpc2FibGUgPSBmaW1kX3dpbl9kaXNhYmxlLAo+Pj4gIAkudGVfaGFuZGxlciA9IGZp bWRfdGVfaGFuZGxlciwKPj4+IEBAIC0xMDU2LDcgKzk5OCwxNiBAQCBzdGF0aWMgaW50IGZpbWRf YmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0 YSkKPj4+ICB7Cj4+PiAgCXN0cnVjdCBmaW1kX2NvbnRleHQgKmN0eCA9IGRldl9nZXRfZHJ2ZGF0 YShkZXYpOwo+Pj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldiA9IGRhdGE7Cj4+PiAtCWlu dCByZXQ7Cj4+PiArCXN0cnVjdCBleHlub3NfZHJtX3BsYW5lICpleHlub3NfcGxhbmU7Cj4+PiAr CWVudW0gZHJtX3BsYW5lX3R5cGUgdHlwZTsKPj4+ICsJaW50IGksIHJldDsKPj4+ICsKPj4+ICsJ Zm9yIChpID0gMDsgaSA8IFdJTkRPV1NfTlI7IGkrKykgewo+Pj4gKwkJdHlwZSA9IChpID09IGN0 eC0+ZGVmYXVsdF93aW4pID8gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSA6Cj4+PiArCQkJCQkJRFJN X1BMQU5FX1RZUEVfT1ZFUkxBWTsKPj4+ICsJCWV4eW5vc19wbGFuZV9pbml0KGRybV9kZXYsICZj dHgtPnBsYW5lc1tpXSwgMSA8PCBjdHgtPnBpcGUsCj4+PiArCQkJCSAgdHlwZSk7Cj4+PiArCX0K Pj4+ICAKPj4+ICAJcmV0ID0gZmltZF9jdHhfaW5pdGlhbGl6ZShjdHgsIGRybV9kZXYpOwo+Pj4g IAlpZiAocmV0KSB7Cj4+PiBAQCAtMTA2NCw4ICsxMDE1LDkgQEAgc3RhdGljIGludCBmaW1kX2Jp bmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEp Cj4+PiAgCQlyZXR1cm4gcmV0Owo+Pj4gIAl9Cj4+PiAgCj4+PiAtCWN0eC0+Y3J0YyA9IGV4eW5v c19kcm1fY3J0Y19jcmVhdGUoZHJtX2RldiwgY3R4LT5waXBlLAo+Pj4gLQkJCQkJICAgRVhZTk9T X0RJU1BMQVlfVFlQRV9MQ0QsCj4+PiArCWV4eW5vc19wbGFuZSA9ICZjdHgtPnBsYW5lc1tjdHgt PmRlZmF1bHRfd2luXTsKPj4+ICsJY3R4LT5jcnRjID0gZXh5bm9zX2RybV9jcnRjX2NyZWF0ZShk cm1fZGV2LCAmZXh5bm9zX3BsYW5lLT5iYXNlLAo+Pj4gKwkJCQkJICAgY3R4LT5waXBlLCBFWFlO T1NfRElTUExBWV9UWVBFX0xDRCwKPj4+ICAJCQkJCSAgICZmaW1kX2NydGNfb3BzLCBjdHgpOwo+ Pj4gIAlpZiAoSVNfRVJSKGN0eC0+Y3J0YykpIHsKPj4+ICAJCWZpbWRfY3R4X3JlbW92ZShjdHgp Owo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9wbGFu ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX3BsYW5lLmMKPj4+IGluZGV4 IDM1OGNmZjYuLmRjMTM2MjEgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9z L2V4eW5vc19kcm1fcGxhbmUuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlu b3NfZHJtX3BsYW5lLmMKPj4+IEBAIC05Myw3ICs5Myw2IEBAIHZvaWQgZXh5bm9zX3BsYW5lX21v ZGVfc2V0KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4+ PiAgCQkJICB1aW50MzJfdCBzcmNfdywgdWludDMyX3Qgc3JjX2gpCj4+PiAgewo+Pj4gIAlzdHJ1 Y3QgZXh5bm9zX2RybV9wbGFuZSAqZXh5bm9zX3BsYW5lID0gdG9fZXh5bm9zX3BsYW5lKHBsYW5l KTsKPj4+IC0Jc3RydWN0IGV4eW5vc19kcm1fY3J0YyAqZXh5bm9zX2NydGMgPSB0b19leHlub3Nf Y3J0YyhjcnRjKTsKPj4+ICAJdW5zaWduZWQgaW50IGFjdHVhbF93Owo+Pj4gIAl1bnNpZ25lZCBp bnQgYWN0dWFsX2g7Cj4+PiAgCj4+PiBAQCAtMTQwLDkgKzEzOSw2IEBAIHZvaWQgZXh5bm9zX3Bs YW5lX21vZGVfc2V0KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCj4+PiAgCQkJZXh5bm9zX3BsYW5lLT5jcnRjX3dpZHRoLCBleHlub3NfcGxhbmUtPmNydGNf aGVpZ2h0KTsKPj4+ICAKPj4+ICAJcGxhbmUtPmNydGMgPSBjcnRjOwo+Pj4gLQo+Pj4gLQlpZiAo ZXh5bm9zX2NydGMtPm9wcy0+d2luX21vZGVfc2V0KQo+Pj4gLQkJZXh5bm9zX2NydGMtPm9wcy0+ d2luX21vZGVfc2V0KGV4eW5vc19jcnRjLCBleHlub3NfcGxhbmUpOwo+Pj4gIH0KPj4+ICAKPj4+ ICB2b2lkIGV4eW5vc19wbGFuZV9kcG1zKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBpbnQgbW9k ZSkKPj4+IEBAIC0yNTUsMjQgKzI1MSwxOCBAQCBzdGF0aWMgdm9pZCBleHlub3NfcGxhbmVfYXR0 YWNoX3pwb3NfcHJvcGVydHkoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCj4+PiAgCWRybV9vYmpl Y3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFuZS0+YmFzZSwgcHJvcCwgMCk7Cj4+PiAgfQo+Pj4gIAo+ Pj4gLXN0cnVjdCBkcm1fcGxhbmUgKmV4eW5vc19wbGFuZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4+PiAtCQkJCSAgICB1bnNpZ25lZCBsb25nIHBvc3NpYmxlX2NydGNzLAo+Pj4gLQkJ CQkgICAgZW51bSBkcm1fcGxhbmVfdHlwZSB0eXBlKQo+Pj4gK2ludCBleHlub3NfcGxhbmVfaW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+Pj4gKwkJICAgICAgc3RydWN0IGV4eW5vc19kcm1f cGxhbmUgKmV4eW5vc19wbGFuZSwKPj4+ICsJCSAgICAgIHVuc2lnbmVkIGxvbmcgcG9zc2libGVf Y3J0Y3MsIGVudW0gZHJtX3BsYW5lX3R5cGUgdHlwZSkKPj4+ICB7Cj4+PiAtCXN0cnVjdCBleHlu b3NfZHJtX3BsYW5lICpleHlub3NfcGxhbmU7Cj4+PiAgCWludCBlcnI7Cj4+PiAgCj4+PiAtCWV4 eW5vc19wbGFuZSA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBleHlub3NfZHJtX3BsYW5lKSwgR0ZQ X0tFUk5FTCk7Cj4+PiAtCWlmICghZXh5bm9zX3BsYW5lKQo+Pj4gLQkJcmV0dXJuIEVSUl9QVFIo LUVOT01FTSk7Cj4+PiAtCj4+PiAgCWVyciA9IGRybV91bml2ZXJzYWxfcGxhbmVfaW5pdChkZXYs ICZleHlub3NfcGxhbmUtPmJhc2UsIHBvc3NpYmxlX2NydGNzLAo+Pj4gIAkJCQkgICAgICAgJmV4 eW5vc19wbGFuZV9mdW5jcywgZm9ybWF0cywKPj4+ICAJCQkJICAgICAgIEFSUkFZX1NJWkUoZm9y bWF0cyksIHR5cGUpOwo+Pj4gIAlpZiAoZXJyKSB7Cj4+PiAgCQlEUk1fRVJST1IoImZhaWxlZCB0 byBpbml0aWFsaXplIHBsYW5lXG4iKTsKPj4+IC0JCWtmcmVlKGV4eW5vc19wbGFuZSk7Cj4+PiAt CQlyZXR1cm4gRVJSX1BUUihlcnIpOwo+Pj4gKwkJcmV0dXJuIGVycjsKPj4+ICAJfQo+Pj4gIAo+ Pj4gIAlpZiAodHlwZSA9PSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKQo+Pj4gQEAgLTI4MCw1ICsy NzAsNSBAQCBzdHJ1Y3QgZHJtX3BsYW5lICpleHlub3NfcGxhbmVfaW5pdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+Pj4gIAllbHNlCj4+PiAgCQlleHlub3NfcGxhbmVfYXR0YWNoX3pwb3NfcHJv cGVydHkoJmV4eW5vc19wbGFuZS0+YmFzZSk7Cj4+PiAgCj4+PiAtCXJldHVybiAmZXh5bm9zX3Bs YW5lLT5iYXNlOwo+Pj4gKwlyZXR1cm4gMDsKPj4+ICB9Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX3BsYW5lLmggYi9kcml2ZXJzL2dwdS9kcm0vZXh5 bm9zL2V4eW5vc19kcm1fcGxhbmUuaAo+Pj4gaW5kZXggNTlkNDA3NS4uMTAwY2E1ZSAxMDA2NDQK Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9wbGFuZS5oCj4+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fcGxhbmUuaAo+Pj4gQEAgLTIx LDYgKzIxLDYgQEAgaW50IGV4eW5vc191cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxh bmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPj4+ICAJCQl1aW50MzJfdCBzcmNfeCwgdWludDMy X3Qgc3JjX3ksCj4+PiAgCQkJdWludDMyX3Qgc3JjX3csIHVpbnQzMl90IHNyY19oKTsKPj4+ICB2 b2lkIGV4eW5vc19wbGFuZV9kcG1zKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBpbnQgbW9kZSk7 Cj4+PiAtc3RydWN0IGRybV9wbGFuZSAqZXh5bm9zX3BsYW5lX2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPj4+IC0JCQkJICAgIHVuc2lnbmVkIGxvbmcgcG9zc2libGVfY3J0Y3MsCj4+PiAt CQkJCSAgICBlbnVtIGRybV9wbGFuZV90eXBlIHR5cGUpOwo+Pj4gK2ludCBleHlub3NfcGxhbmVf aW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+Pj4gKwkJICAgICAgc3RydWN0IGV4eW5vc19k cm1fcGxhbmUgKmV4eW5vc19wbGFuZSwKPj4+ICsJCSAgICAgIHVuc2lnbmVkIGxvbmcgcG9zc2li bGVfY3J0Y3MsIGVudW0gZHJtX3BsYW5lX3R5cGUgdHlwZSk7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX3ZpZGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9l eHlub3MvZXh5bm9zX2RybV92aWRpLmMKPj4+IGluZGV4IGI4ODY5NzIuLjA4YzdhMWUgMTAwNjQ0 Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fdmlkaS5jCj4+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fdmlkaS5jCj4+PiBAQCAtMjMs NiArMjMsNyBAQAo+Pj4gIAo+Pj4gICNpbmNsdWRlICJleHlub3NfZHJtX2Rydi5oIgo+Pj4gICNp bmNsdWRlICJleHlub3NfZHJtX2NydGMuaCIKPj4+ICsjaW5jbHVkZSAiZXh5bm9zX2RybV9wbGFu ZS5oIgo+Pj4gICNpbmNsdWRlICJleHlub3NfZHJtX2VuY29kZXIuaCIKPj4+ICAjaW5jbHVkZSAi ZXh5bm9zX2RybV92aWRpLmgiCj4+PiAgCj4+PiBAQCAtMzIsMjAgKzMzLDYgQEAKPj4+ICAjZGVm aW5lIGN0eF9mcm9tX2Nvbm5lY3RvcihjKQljb250YWluZXJfb2YoYywgc3RydWN0IHZpZGlfY29u dGV4dCwgXAo+Pj4gIAkJCQkJY29ubmVjdG9yKQo+Pj4gIAo+Pj4gLXN0cnVjdCB2aWRpX3dpbl9k YXRhIHsKPj4+IC0JdW5zaWduZWQgaW50CQlvZmZzZXRfeDsKPj4+IC0JdW5zaWduZWQgaW50CQlv ZmZzZXRfeTsKPj4+IC0JdW5zaWduZWQgaW50CQlvdmxfd2lkdGg7Cj4+PiAtCXVuc2lnbmVkIGlu dAkJb3ZsX2hlaWdodDsKPj4+IC0JdW5zaWduZWQgaW50CQlmYl93aWR0aDsKPj4+IC0JdW5zaWdu ZWQgaW50CQlmYl9oZWlnaHQ7Cj4+PiAtCXVuc2lnbmVkIGludAkJYnBwOwo+Pj4gLQlkbWFfYWRk cl90CQlkbWFfYWRkcjsKPj4+IC0JdW5zaWduZWQgaW50CQlidWZfb2Zmc2l6ZTsKPj4+IC0JdW5z aWduZWQgaW50CQlsaW5lX3NpemU7CS8qIGJ5dGVzICovCj4+PiAtCWJvb2wJCQllbmFibGVkOwo+ Pj4gLX07Cj4+PiAtCj4+PiAgc3RydWN0IHZpZGlfY29udGV4dCB7Cj4+PiAgCXN0cnVjdCBleHlu b3NfZHJtX2Rpc3BsYXkJZGlzcGxheTsKPj4+ICAJc3RydWN0IHBsYXRmb3JtX2RldmljZQkJKnBk ZXY7Cj4+PiBAQCAtNTMsNyArNDAsNyBAQCBzdHJ1Y3QgdmlkaV9jb250ZXh0IHsKPj4+ICAJc3Ry dWN0IGV4eW5vc19kcm1fY3J0YwkJKmNydGM7Cj4+PiAgCXN0cnVjdCBkcm1fZW5jb2RlcgkJKmVu Y29kZXI7Cj4+PiAgCXN0cnVjdCBkcm1fY29ubmVjdG9yCQljb25uZWN0b3I7Cj4+PiAtCXN0cnVj dCB2aWRpX3dpbl9kYXRhCQl3aW5fZGF0YVtXSU5ET1dTX05SXTsKPj4+ICsJc3RydWN0IGV4eW5v c19kcm1fcGxhbmUJCXBsYW5lc1tXSU5ET1dTX05SXTsKPj4+ICAJc3RydWN0IGVkaWQJCQkqcmF3 X2VkaWQ7Cj4+PiAgCXVuc2lnbmVkIGludAkJCWNsa2RpdjsKPj4+ICAJdW5zaWduZWQgaW50CQkJ ZGVmYXVsdF93aW47Cj4+PiBAQCAtOTcsMTkgKzg0LDYgQEAgc3RhdGljIGNvbnN0IGNoYXIgZmFr ZV9lZGlkX2luZm9bXSA9IHsKPj4+ICAJMHgwMCwgMHgwMCwgMHgwMCwgMHgwNgo+Pj4gIH07Cj4+ PiAgCj4+PiAtc3RhdGljIHZvaWQgdmlkaV9hcHBseShzdHJ1Y3QgdmlkaV9jb250ZXh0ICpjdHgp Cj4+PiAtewo+Pj4gLQlzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjX29wcyAqY3J0Y19vcHMgPSBjdHgt PmNydGMtPm9wczsKPj4+IC0Jc3RydWN0IHZpZGlfd2luX2RhdGEgKndpbl9kYXRhOwo+Pj4gLQlp bnQgaTsKPj4+IC0KPj4+IC0JZm9yIChpID0gMDsgaSA8IFdJTkRPV1NfTlI7IGkrKykgewo+Pj4g LQkJd2luX2RhdGEgPSAmY3R4LT53aW5fZGF0YVtpXTsKPj4+IC0JCWlmICh3aW5fZGF0YS0+ZW5h YmxlZCAmJiAoY3J0Y19vcHMgJiYgY3J0Y19vcHMtPndpbl9jb21taXQpKQo+Pj4gLQkJCWNydGNf b3BzLT53aW5fY29tbWl0KGN0eC0+Y3J0YywgaSk7Cj4+PiAtCX0KPj4+IC19Cj4+PiAtCj4+PiAg c3RhdGljIGludCB2aWRpX2VuYWJsZV92Ymxhbmsoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0 YykKPj4+ICB7Cj4+PiAgCXN0cnVjdCB2aWRpX2NvbnRleHQgKmN0eCA9IGNydGMtPmN0eDsKPj4+ IEBAIC0xNDMsNjMgKzExNywxMCBAQCBzdGF0aWMgdm9pZCB2aWRpX2Rpc2FibGVfdmJsYW5rKHN0 cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMpCj4+PiAgCQljdHgtPnZibGFua19vbiA9IGZhbHNl Owo+Pj4gIH0KPj4+ICAKPj4+IC1zdGF0aWMgdm9pZCB2aWRpX3dpbl9tb2RlX3NldChzdHJ1Y3Qg ZXh5bm9zX2RybV9jcnRjICpjcnRjLAo+Pj4gLQkJCXN0cnVjdCBleHlub3NfZHJtX3BsYW5lICpw bGFuZSkKPj4+IC17Cj4+PiAtCXN0cnVjdCB2aWRpX2NvbnRleHQgKmN0eCA9IGNydGMtPmN0eDsK Pj4+IC0Jc3RydWN0IHZpZGlfd2luX2RhdGEgKndpbl9kYXRhOwo+Pj4gLQlpbnQgd2luOwo+Pj4g LQl1bnNpZ25lZCBsb25nIG9mZnNldDsKPj4+IC0KPj4+IC0JaWYgKCFwbGFuZSkgewo+Pj4gLQkJ RFJNX0VSUk9SKCJwbGFuZSBpcyBOVUxMXG4iKTsKPj4+IC0JCXJldHVybjsKPj4+IC0JfQo+Pj4g LQo+Pj4gLQl3aW4gPSBwbGFuZS0+enBvczsKPj4+IC0JaWYgKHdpbiA9PSBERUZBVUxUX1pQT1Mp Cj4+PiAtCQl3aW4gPSBjdHgtPmRlZmF1bHRfd2luOwo+Pj4gLQo+Pj4gLQlpZiAod2luIDwgMCB8 fCB3aW4gPj0gV0lORE9XU19OUikKPj4+IC0JCXJldHVybjsKPj4+IC0KPj4+IC0Jb2Zmc2V0ID0g cGxhbmUtPmZiX3ggKiAocGxhbmUtPmJwcCA+PiAzKTsKPj4+IC0Jb2Zmc2V0ICs9IHBsYW5lLT5m Yl95ICogcGxhbmUtPnBpdGNoOwo+Pj4gLQo+Pj4gLQlEUk1fREVCVUdfS01TKCJvZmZzZXQgPSAw eCVseCwgcGl0Y2ggPSAleFxuIiwgb2Zmc2V0LCBwbGFuZS0+cGl0Y2gpOwo+Pj4gLQo+Pj4gLQl3 aW5fZGF0YSA9ICZjdHgtPndpbl9kYXRhW3dpbl07Cj4+PiAtCj4+PiAtCXdpbl9kYXRhLT5vZmZz ZXRfeCA9IHBsYW5lLT5jcnRjX3g7Cj4+PiAtCXdpbl9kYXRhLT5vZmZzZXRfeSA9IHBsYW5lLT5j cnRjX3k7Cj4+PiAtCXdpbl9kYXRhLT5vdmxfd2lkdGggPSBwbGFuZS0+Y3J0Y193aWR0aDsKPj4+ IC0Jd2luX2RhdGEtPm92bF9oZWlnaHQgPSBwbGFuZS0+Y3J0Y19oZWlnaHQ7Cj4+PiAtCXdpbl9k YXRhLT5mYl93aWR0aCA9IHBsYW5lLT5mYl93aWR0aDsKPj4+IC0Jd2luX2RhdGEtPmZiX2hlaWdo dCA9IHBsYW5lLT5mYl9oZWlnaHQ7Cj4+PiAtCXdpbl9kYXRhLT5kbWFfYWRkciA9IHBsYW5lLT5k bWFfYWRkclswXSArIG9mZnNldDsKPj4+IC0Jd2luX2RhdGEtPmJwcCA9IHBsYW5lLT5icHA7Cj4+ PiAtCXdpbl9kYXRhLT5idWZfb2Zmc2l6ZSA9IChwbGFuZS0+ZmJfd2lkdGggLSBwbGFuZS0+Y3J0 Y193aWR0aCkgKgo+Pj4gLQkJCQkocGxhbmUtPmJwcCA+PiAzKTsKPj4+IC0Jd2luX2RhdGEtPmxp bmVfc2l6ZSA9IHBsYW5lLT5jcnRjX3dpZHRoICogKHBsYW5lLT5icHAgPj4gMyk7Cj4+PiAtCj4+ PiAtCS8qCj4+PiAtCSAqIHNvbWUgcGFydHMgb2Ygd2luX2RhdGEgc2hvdWxkIGJlIHRyYW5zZmVy cmVkIHRvIHVzZXIgc2lkZQo+Pj4gLQkgKiB0aHJvdWdoIHNwZWNpZmljIGlvY3RsLgo+Pj4gLQkg Ki8KPj4+IC0KPj4+IC0JRFJNX0RFQlVHX0tNUygib2Zmc2V0X3ggPSAlZCwgb2Zmc2V0X3kgPSAl ZFxuIiwKPj4+IC0JCQl3aW5fZGF0YS0+b2Zmc2V0X3gsIHdpbl9kYXRhLT5vZmZzZXRfeSk7Cj4+ PiAtCURSTV9ERUJVR19LTVMoIm92bF93aWR0aCA9ICVkLCBvdmxfaGVpZ2h0ID0gJWRcbiIsCj4+ PiAtCQkJd2luX2RhdGEtPm92bF93aWR0aCwgd2luX2RhdGEtPm92bF9oZWlnaHQpOwo+Pj4gLQlE Uk1fREVCVUdfS01TKCJwYWRkciA9IDB4JWx4XG4iLCAodW5zaWduZWQgbG9uZyl3aW5fZGF0YS0+ ZG1hX2FkZHIpOwo+Pj4gLQlEUk1fREVCVUdfS01TKCJmYl93aWR0aCA9ICVkLCBjcnRjX3dpZHRo ID0gJWRcbiIsCj4+PiAtCQkJcGxhbmUtPmZiX3dpZHRoLCBwbGFuZS0+Y3J0Y193aWR0aCk7Cj4+ PiAtfQo+Pj4gLQo+Pj4gIHN0YXRpYyB2b2lkIHZpZGlfd2luX2NvbW1pdChzdHJ1Y3QgZXh5bm9z X2RybV9jcnRjICpjcnRjLCBpbnQgenBvcykKPj4+ICB7Cj4+PiAgCXN0cnVjdCB2aWRpX2NvbnRl eHQgKmN0eCA9IGNydGMtPmN0eDsKPj4+IC0Jc3RydWN0IHZpZGlfd2luX2RhdGEgKndpbl9kYXRh Owo+Pj4gKwlzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSAqcGxhbmU7Cj4+PiAgCWludCB3aW4gPSB6 cG9zOwo+Pj4gIAo+Pj4gIAlpZiAoY3R4LT5zdXNwZW5kZWQpCj4+PiBAQCAtMjExLDExICsxMzIs MTEgQEAgc3RhdGljIHZvaWQgdmlkaV93aW5fY29tbWl0KHN0cnVjdCBleHlub3NfZHJtX2NydGMg KmNydGMsIGludCB6cG9zKQo+Pj4gIAlpZiAod2luIDwgMCB8fCB3aW4gPj0gV0lORE9XU19OUikK Pj4+ICAJCXJldHVybjsKPj4+ICAKPj4+IC0Jd2luX2RhdGEgPSAmY3R4LT53aW5fZGF0YVt3aW5d Owo+Pj4gKwlwbGFuZSA9ICZjdHgtPnBsYW5lc1t3aW5dOwo+Pj4gIAo+Pj4gLQl3aW5fZGF0YS0+ ZW5hYmxlZCA9IHRydWU7Cj4+PiArCXBsYW5lLT5lbmFibGVkID0gdHJ1ZTsKPj4+ICAKPj4+IC0J RFJNX0RFQlVHX0tNUygiZG1hX2FkZHIgPSAlcGFkXG4iLCAmd2luX2RhdGEtPmRtYV9hZGRyKTsK Pj4+ICsJRFJNX0RFQlVHX0tNUygiZG1hX2FkZHIgPSAlcGFkXG4iLCBwbGFuZS0+ZG1hX2FkZHIp Owo+Pj4gIAo+Pj4gIAlpZiAoY3R4LT52Ymxhbmtfb24pCj4+PiAgCQlzY2hlZHVsZV93b3JrKCZj dHgtPndvcmspOwo+Pj4gQEAgLTIyNCw3ICsxNDUsNyBAQCBzdGF0aWMgdm9pZCB2aWRpX3dpbl9j b21taXQoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0YywgaW50IHpwb3MpCj4+PiAgc3RhdGlj IHZvaWQgdmlkaV93aW5fZGlzYWJsZShzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpjcnRjLCBpbnQg enBvcykKPj4+ICB7Cj4+PiAgCXN0cnVjdCB2aWRpX2NvbnRleHQgKmN0eCA9IGNydGMtPmN0eDsK Pj4+IC0Jc3RydWN0IHZpZGlfd2luX2RhdGEgKndpbl9kYXRhOwo+Pj4gKwlzdHJ1Y3QgZXh5bm9z X2RybV9wbGFuZSAqcGxhbmU7Cj4+PiAgCWludCB3aW4gPSB6cG9zOwo+Pj4gIAo+Pj4gIAlpZiAo d2luID09IERFRkFVTFRfWlBPUykKPj4+IEBAIC0yMzMsMTQgKzE1NCwxNyBAQCBzdGF0aWMgdm9p ZCB2aWRpX3dpbl9kaXNhYmxlKHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMsIGludCB6cG9z KQo+Pj4gIAlpZiAod2luIDwgMCB8fCB3aW4gPj0gV0lORE9XU19OUikKPj4+ICAJCXJldHVybjsK Pj4+ICAKPj4+IC0Jd2luX2RhdGEgPSAmY3R4LT53aW5fZGF0YVt3aW5dOwo+Pj4gLQl3aW5fZGF0 YS0+ZW5hYmxlZCA9IGZhbHNlOwo+Pj4gKwlwbGFuZSA9ICZjdHgtPnBsYW5lc1t3aW5dOwo+Pj4g KwlwbGFuZS0+ZW5hYmxlZCA9IGZhbHNlOwo+Pj4gIAo+Pj4gIAkvKiBUT0RPLiAqLwo+Pj4gIH0K Pj4+ICAKPj4+ICBzdGF0aWMgaW50IHZpZGlfcG93ZXJfb24oc3RydWN0IHZpZGlfY29udGV4dCAq Y3R4LCBib29sIGVuYWJsZSkKPj4+ICB7Cj4+PiArCXN0cnVjdCBleHlub3NfZHJtX3BsYW5lICpw bGFuZTsKPj4+ICsJaW50IGk7Cj4+PiArCj4+PiAgCURSTV9ERUJVR19LTVMoIiVzXG4iLCBfX0ZJ TEVfXyk7Cj4+PiAgCj4+PiAgCWlmIChlbmFibGUgIT0gZmFsc2UgJiYgZW5hYmxlICE9IHRydWUp Cj4+PiBAQCAtMjUzLDcgKzE3NywxMSBAQCBzdGF0aWMgaW50IHZpZGlfcG93ZXJfb24oc3RydWN0 IHZpZGlfY29udGV4dCAqY3R4LCBib29sIGVuYWJsZSkKPj4+ICAJCWlmICh0ZXN0X2FuZF9jbGVh cl9iaXQoMCwgJmN0eC0+aXJxX2ZsYWdzKSkKPj4+ICAJCQl2aWRpX2VuYWJsZV92YmxhbmsoY3R4 LT5jcnRjKTsKPj4+ICAKPj4+IC0JCXZpZGlfYXBwbHkoY3R4KTsKPj4+ICsJCWZvciAoaSA9IDA7 IGkgPCBXSU5ET1dTX05SOyBpKyspIHsKPj4+ICsJCQlwbGFuZSA9ICZjdHgtPnBsYW5lc1tpXTsK Pj4+ICsJCQlpZiAocGxhbmUtPmVuYWJsZWQpCj4+PiArCQkJCXZpZGlfd2luX2NvbW1pdChjdHgt PmNydGMsIGkpOwo+Pj4gKwkJfQo+Pj4gIAl9IGVsc2Ugewo+Pj4gIAkJY3R4LT5zdXNwZW5kZWQg PSB0cnVlOwo+Pj4gIAl9Cj4+PiBAQCAtMzAxLDcgKzIyOSw2IEBAIHN0YXRpYyBzdHJ1Y3QgZXh5 bm9zX2RybV9jcnRjX29wcyB2aWRpX2NydGNfb3BzID0gewo+Pj4gIAkuZHBtcyA9IHZpZGlfZHBt cywKPj4+ICAJLmVuYWJsZV92YmxhbmsgPSB2aWRpX2VuYWJsZV92YmxhbmssCj4+PiAgCS5kaXNh YmxlX3ZibGFuayA9IHZpZGlfZGlzYWJsZV92YmxhbmssCj4+PiAtCS53aW5fbW9kZV9zZXQgPSB2 aWRpX3dpbl9tb2RlX3NldCwKPj4+ICAJLndpbl9jb21taXQgPSB2aWRpX3dpbl9jb21taXQsCj4+ PiAgCS53aW5fZGlzYWJsZSA9IHZpZGlfd2luX2Rpc2FibGUsCj4+PiAgfTsKPj4+IEBAIC01NDMs MTIgKzQ3MCwyMiBAQCBzdGF0aWMgaW50IHZpZGlfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0 cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkKPj4+ICB7Cj4+PiAgCXN0cnVjdCB2aWRp X2NvbnRleHQgKmN0eCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+Pj4gIAlzdHJ1Y3QgZHJtX2Rl dmljZSAqZHJtX2RldiA9IGRhdGE7Cj4+PiAtCWludCByZXQ7Cj4+PiArCXN0cnVjdCBleHlub3Nf ZHJtX3BsYW5lICpleHlub3NfcGxhbmU7Cj4+PiArCWVudW0gZHJtX3BsYW5lX3R5cGUgdHlwZTsK Pj4+ICsJaW50IGksIHJldDsKPj4+ICsKPj4+ICsJZm9yIChpID0gMDsgaSA8IFdJTkRPV1NfTlI7 IGkrKykgewo+Pj4gKwkJdHlwZSA9IChpID09IGN0eC0+ZGVmYXVsdF93aW4pID8gRFJNX1BMQU5F X1RZUEVfUFJJTUFSWSA6Cj4+PiArCQkJCQkJRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWTsKPj4+ICsJ CWV4eW5vc19wbGFuZV9pbml0KGRybV9kZXYsICZjdHgtPnBsYW5lc1tpXSwgMSA8PCBjdHgtPnBp cGUsCj4+PiArCQkJCSAgdHlwZSk7Cj4+PiArCX0KPj4+ICAKPj4+ICAJdmlkaV9jdHhfaW5pdGlh bGl6ZShjdHgsIGRybV9kZXYpOwo+Pj4gIAo+Pj4gLQljdHgtPmNydGMgPSBleHlub3NfZHJtX2Ny dGNfY3JlYXRlKGRybV9kZXYsIGN0eC0+cGlwZSwKPj4+IC0JCQkJCSAgIEVYWU5PU19ESVNQTEFZ X1RZUEVfVklESSwKPj4+ICsJZXh5bm9zX3BsYW5lID0gJmN0eC0+cGxhbmVzW2N0eC0+ZGVmYXVs dF93aW5dOwo+Pj4gKwljdHgtPmNydGMgPSBleHlub3NfZHJtX2NydGNfY3JlYXRlKGRybV9kZXYs ICZleHlub3NfcGxhbmUtPmJhc2UsCj4+PiArCQkJCQkgICBjdHgtPnBpcGUsIEVYWU5PU19ESVNQ TEFZX1RZUEVfVklESSwKPj4+ICAJCQkJCSAgICZ2aWRpX2NydGNfb3BzLCBjdHgpOwo+Pj4gIAlp ZiAoSVNfRVJSKGN0eC0+Y3J0YykpIHsKPj4+ICAJCURSTV9FUlJPUigiZmFpbGVkIHRvIGNyZWF0 ZSBjcnRjLlxuIik7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlu b3NfbWl4ZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX21peGVyLmMKPj4+IGlu ZGV4IDczNjI2OWEuLmQ2ODY0ZTYgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXh5 bm9zL2V4eW5vc19taXhlci5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5v c19taXhlci5jCj4+PiBAQCAtMzcsMzQgKzM3LDEzIEBACj4+PiAgCj4+PiAgI2luY2x1ZGUgImV4 eW5vc19kcm1fZHJ2LmgiCj4+PiAgI2luY2x1ZGUgImV4eW5vc19kcm1fY3J0Yy5oIgo+Pj4gKyNp bmNsdWRlICJleHlub3NfZHJtX3BsYW5lLmgiCj4+PiAgI2luY2x1ZGUgImV4eW5vc19kcm1faW9t bXUuaCIKPj4+ICAjaW5jbHVkZSAiZXh5bm9zX21peGVyLmgiCj4+PiAgCj4+PiAgI2RlZmluZSBN SVhFUl9XSU5fTlIJCTMKPj4+ICAjZGVmaW5lIE1JWEVSX0RFRkFVTFRfV0lOCTAKPj4+ICAKPj4+ IC1zdHJ1Y3QgaGRtaV93aW5fZGF0YSB7Cj4+PiAtCWRtYV9hZGRyX3QJCWRtYV9hZGRyOwo+Pj4g LQlkbWFfYWRkcl90CQljaHJvbWFfZG1hX2FkZHI7Cj4+PiAtCXVpbnQzMl90CQlwaXhlbF9mb3Jt YXQ7Cj4+PiAtCXVuc2lnbmVkIGludAkJYnBwOwo+Pj4gLQl1bnNpZ25lZCBpbnQJCWNydGNfeDsK Pj4+IC0JdW5zaWduZWQgaW50CQljcnRjX3k7Cj4+PiAtCXVuc2lnbmVkIGludAkJY3J0Y193aWR0 aDsKPj4+IC0JdW5zaWduZWQgaW50CQljcnRjX2hlaWdodDsKPj4+IC0JdW5zaWduZWQgaW50CQlm Yl94Owo+Pj4gLQl1bnNpZ25lZCBpbnQJCWZiX3k7Cj4+PiAtCXVuc2lnbmVkIGludAkJZmJfd2lk dGg7Cj4+PiAtCXVuc2lnbmVkIGludAkJZmJfaGVpZ2h0Owo+Pj4gLQl1bnNpZ25lZCBpbnQJCXNy Y193aWR0aDsKPj4+IC0JdW5zaWduZWQgaW50CQlzcmNfaGVpZ2h0Owo+Pj4gLQl1bnNpZ25lZCBp bnQJCW1vZGVfd2lkdGg7Cj4+PiAtCXVuc2lnbmVkIGludAkJbW9kZV9oZWlnaHQ7Cj4+PiAtCXVu c2lnbmVkIGludAkJc2Nhbl9mbGFnczsKPj4+IC0JYm9vbAkJCWVuYWJsZWQ7Cj4+PiAtCWJvb2wJ CQlyZXN1bWU7Cj4+PiAtfTsKPj4+IC0KPj4+ICBzdHJ1Y3QgbWl4ZXJfcmVzb3VyY2VzIHsKPj4+ ICAJaW50CQkJaXJxOwo+Pj4gIAl2b2lkIF9faW9tZW0JCSptaXhlcl9yZWdzOwo+Pj4gQEAgLTg4 LDYgKzY3LDcgQEAgc3RydWN0IG1peGVyX2NvbnRleHQgewo+Pj4gIAlzdHJ1Y3QgZGV2aWNlCQkq ZGV2Owo+Pj4gIAlzdHJ1Y3QgZHJtX2RldmljZQkqZHJtX2RldjsKPj4+ICAJc3RydWN0IGV4eW5v c19kcm1fY3J0YwkqY3J0YzsKPj4+ICsJc3RydWN0IGV4eW5vc19kcm1fcGxhbmUJcGxhbmVzW01J WEVSX1dJTl9OUl07Cj4+PiAgCWludAkJCXBpcGU7Cj4+PiAgCWJvb2wJCQlpbnRlcmxhY2U7Cj4+ PiAgCWJvb2wJCQlwb3dlcmVkOwo+Pj4gQEAgLTk3LDcgKzc3LDYgQEAgc3RydWN0IG1peGVyX2Nv bnRleHQgewo+Pj4gIAo+Pj4gIAlzdHJ1Y3QgbXV0ZXgJCW1peGVyX211dGV4Owo+Pj4gIAlzdHJ1 Y3QgbWl4ZXJfcmVzb3VyY2VzCW1peGVyX3JlczsKPj4+IC0Jc3RydWN0IGhkbWlfd2luX2RhdGEJ d2luX2RhdGFbTUlYRVJfV0lOX05SXTsKPj4+ICAJZW51bSBtaXhlcl92ZXJzaW9uX2lkCW14cl92 ZXI7Cj4+PiAgCXdhaXRfcXVldWVfaGVhZF90CXdhaXRfdnN5bmNfcXVldWU7Cj4+PiAgCWF0b21p Y190CQl3YWl0X3ZzeW5jX2V2ZW50Owo+Pj4gQEAgLTQwMSw3ICszODAsNyBAQCBzdGF0aWMgdm9p ZCB2cF92aWRlb19idWZmZXIoc3RydWN0IG1peGVyX2NvbnRleHQgKmN0eCwgaW50IHdpbikKPj4+ ICB7Cj4+PiAgCXN0cnVjdCBtaXhlcl9yZXNvdXJjZXMgKnJlcyA9ICZjdHgtPm1peGVyX3JlczsK Pj4+ICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPj4+IC0Jc3RydWN0IGhkbWlfd2luX2RhdGEgKndp bl9kYXRhOwo+Pj4gKwlzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSAqcGxhbmU7Cj4+PiAgCXVuc2ln bmVkIGludCB4X3JhdGlvLCB5X3JhdGlvOwo+Pj4gIAl1bnNpZ25lZCBpbnQgYnVmX251bSA9IDE7 Cj4+PiAgCWRtYV9hZGRyX3QgbHVtYV9hZGRyWzJdLCBjaHJvbWFfYWRkclsyXTsKPj4+IEBAIC00 MDksOSArMzg4LDkgQEAgc3RhdGljIHZvaWQgdnBfdmlkZW9fYnVmZmVyKHN0cnVjdCBtaXhlcl9j b250ZXh0ICpjdHgsIGludCB3aW4pCj4+PiAgCWJvb2wgY3JjYl9tb2RlID0gZmFsc2U7Cj4+PiAg CXUzMiB2YWw7Cj4+PiAgCj4+PiAtCXdpbl9kYXRhID0gJmN0eC0+d2luX2RhdGFbd2luXTsKPj4+ ICsJcGxhbmUgPSAmY3R4LT5wbGFuZXNbd2luXTsKPj4+ICAKPj4+IC0Jc3dpdGNoICh3aW5fZGF0 YS0+cGl4ZWxfZm9ybWF0KSB7Cj4+PiArCXN3aXRjaCAocGxhbmUtPnBpeGVsX2Zvcm1hdCkgewo+ Pj4gIAljYXNlIERSTV9GT1JNQVRfTlYxMk1UOgo+Pj4gIAkJdGlsZWRfbW9kZSA9IHRydWU7Cj4+ PiAgCWNhc2UgRFJNX0ZPUk1BVF9OVjEyOgo+Pj4gQEAgLTQyMSwzNSArNDAwLDM1IEBAIHN0YXRp YyB2b2lkIHZwX3ZpZGVvX2J1ZmZlcihzdHJ1Y3QgbWl4ZXJfY29udGV4dCAqY3R4LCBpbnQgd2lu KQo+Pj4gIAkvKiBUT0RPOiBzaW5nbGUgYnVmZmVyIGZvcm1hdCBOVjEyLCBOVjIxICovCj4+PiAg CWRlZmF1bHQ6Cj4+PiAgCQkvKiBpZ25vcmUgcGl4ZWwgZm9ybWF0IGF0IGRpc2FibGUgdGltZSAq Lwo+Pj4gLQkJaWYgKCF3aW5fZGF0YS0+ZG1hX2FkZHIpCj4+PiArCQlpZiAoIXBsYW5lLT5kbWFf YWRkclswXSkKPj4+ICAJCQlicmVhazsKPj4+ICAKPj4+ICAJCURSTV9FUlJPUigicGl4ZWwgZm9y bWF0IGZvciB2cCBpcyB3cm9uZyBbJWRdLlxuIiwKPj4+IC0JCQkJd2luX2RhdGEtPnBpeGVsX2Zv cm1hdCk7Cj4+PiArCQkJCXBsYW5lLT5waXhlbF9mb3JtYXQpOwo+Pj4gIAkJcmV0dXJuOwo+Pj4g IAl9Cj4+PiAgCj4+PiAgCS8qIHNjYWxpbmcgZmVhdHVyZTogKHNyYyA8PCAxNikgLyBkc3QgKi8K Pj4+IC0JeF9yYXRpbyA9ICh3aW5fZGF0YS0+c3JjX3dpZHRoIDw8IDE2KSAvIHdpbl9kYXRhLT5j cnRjX3dpZHRoOwo+Pj4gLQl5X3JhdGlvID0gKHdpbl9kYXRhLT5zcmNfaGVpZ2h0IDw8IDE2KSAv IHdpbl9kYXRhLT5jcnRjX2hlaWdodDsKPj4+ICsJeF9yYXRpbyA9IChwbGFuZS0+c3JjX3dpZHRo IDw8IDE2KSAvIHBsYW5lLT5jcnRjX3dpZHRoOwo+Pj4gKwl5X3JhdGlvID0gKHBsYW5lLT5zcmNf aGVpZ2h0IDw8IDE2KSAvIHBsYW5lLT5jcnRjX2hlaWdodDsKPj4+ICAKPj4+ICAJaWYgKGJ1Zl9u dW0gPT0gMikgewo+Pj4gLQkJbHVtYV9hZGRyWzBdID0gd2luX2RhdGEtPmRtYV9hZGRyOwo+Pj4g LQkJY2hyb21hX2FkZHJbMF0gPSB3aW5fZGF0YS0+Y2hyb21hX2RtYV9hZGRyOwo+Pj4gKwkJbHVt YV9hZGRyWzBdID0gcGxhbmUtPmRtYV9hZGRyWzBdOwo+Pj4gKwkJY2hyb21hX2FkZHJbMF0gPSBw bGFuZS0+ZG1hX2FkZHJbMV07Cj4+PiAgCX0gZWxzZSB7Cj4+PiAtCQlsdW1hX2FkZHJbMF0gPSB3 aW5fZGF0YS0+ZG1hX2FkZHI7Cj4+PiAtCQljaHJvbWFfYWRkclswXSA9IHdpbl9kYXRhLT5kbWFf YWRkcgo+Pj4gLQkJCSsgKHdpbl9kYXRhLT5mYl93aWR0aCAqIHdpbl9kYXRhLT5mYl9oZWlnaHQp Owo+Pj4gKwkJbHVtYV9hZGRyWzBdID0gcGxhbmUtPmRtYV9hZGRyWzBdOwo+Pj4gKwkJY2hyb21h X2FkZHJbMF0gPSBwbGFuZS0+ZG1hX2FkZHJbMF0KPj4+ICsJCQkrIChwbGFuZS0+ZmJfd2lkdGgg KiBwbGFuZS0+ZmJfaGVpZ2h0KTsKPj4+ICAJfQo+Pj4gIAo+Pj4gLQlpZiAod2luX2RhdGEtPnNj YW5fZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkgewo+Pj4gKwlpZiAocGxhbmUtPnNj YW5fZmxhZyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKSB7Cj4+PiAgCQljdHgtPmludGVybGFj ZSA9IHRydWU7Cj4+PiAgCQlpZiAodGlsZWRfbW9kZSkgewo+Pj4gIAkJCWx1bWFfYWRkclsxXSA9 IGx1bWFfYWRkclswXSArIDB4NDA7Cj4+PiAgCQkJY2hyb21hX2FkZHJbMV0gPSBjaHJvbWFfYWRk clswXSArIDB4NDA7Cj4+PiAgCQl9IGVsc2Ugewo+Pj4gLQkJCWx1bWFfYWRkclsxXSA9IGx1bWFf YWRkclswXSArIHdpbl9kYXRhLT5mYl93aWR0aDsKPj4+IC0JCQljaHJvbWFfYWRkclsxXSA9IGNo cm9tYV9hZGRyWzBdICsgd2luX2RhdGEtPmZiX3dpZHRoOwo+Pj4gKwkJCWx1bWFfYWRkclsxXSA9 IGx1bWFfYWRkclswXSArIHBsYW5lLT5mYl93aWR0aDsKPj4+ICsJCQljaHJvbWFfYWRkclsxXSA9 IGNocm9tYV9hZGRyWzBdICsgcGxhbmUtPmZiX3dpZHRoOwo+Pj4gIAkJfQo+Pj4gIAl9IGVsc2Ug ewo+Pj4gIAkJY3R4LT5pbnRlcmxhY2UgPSBmYWxzZTsKPj4+IEBAIC00NzAsMjYgKzQ0OSwyNiBA QCBzdGF0aWMgdm9pZCB2cF92aWRlb19idWZmZXIoc3RydWN0IG1peGVyX2NvbnRleHQgKmN0eCwg aW50IHdpbikKPj4+ICAJdnBfcmVnX3dyaXRlbWFzayhyZXMsIFZQX01PREUsIHZhbCwgVlBfTU9E RV9GTVRfTUFTSyk7Cj4+PiAgCj4+PiAgCS8qIHNldHRpbmcgc2l6ZSBvZiBpbnB1dCBpbWFnZSAq Lwo+Pj4gLQl2cF9yZWdfd3JpdGUocmVzLCBWUF9JTUdfU0laRV9ZLCBWUF9JTUdfSFNJWkUod2lu X2RhdGEtPmZiX3dpZHRoKSB8Cj4+PiAtCQlWUF9JTUdfVlNJWkUod2luX2RhdGEtPmZiX2hlaWdo dCkpOwo+Pj4gKwl2cF9yZWdfd3JpdGUocmVzLCBWUF9JTUdfU0laRV9ZLCBWUF9JTUdfSFNJWkUo cGxhbmUtPmZiX3dpZHRoKSB8Cj4+PiArCQlWUF9JTUdfVlNJWkUocGxhbmUtPmZiX2hlaWdodCkp Owo+Pj4gIAkvKiBjaHJvbWEgaGVpZ2h0IGhhcyB0byByZWR1Y2VkIGJ5IDIgdG8gYXZvaWQgY2hy b21hIGRpc3RvcmlvbnMgKi8KPj4+IC0JdnBfcmVnX3dyaXRlKHJlcywgVlBfSU1HX1NJWkVfQywg VlBfSU1HX0hTSVpFKHdpbl9kYXRhLT5mYl93aWR0aCkgfAo+Pj4gLQkJVlBfSU1HX1ZTSVpFKHdp bl9kYXRhLT5mYl9oZWlnaHQgLyAyKSk7Cj4+PiArCXZwX3JlZ193cml0ZShyZXMsIFZQX0lNR19T SVpFX0MsIFZQX0lNR19IU0laRShwbGFuZS0+ZmJfd2lkdGgpIHwKPj4+ICsJCVZQX0lNR19WU0la RShwbGFuZS0+ZmJfaGVpZ2h0IC8gMikpOwo+Pj4gIAo+Pj4gLQl2cF9yZWdfd3JpdGUocmVzLCBW UF9TUkNfV0lEVEgsIHdpbl9kYXRhLT5zcmNfd2lkdGgpOwo+Pj4gLQl2cF9yZWdfd3JpdGUocmVz LCBWUF9TUkNfSEVJR0hULCB3aW5fZGF0YS0+c3JjX2hlaWdodCk7Cj4+PiArCXZwX3JlZ193cml0 ZShyZXMsIFZQX1NSQ19XSURUSCwgcGxhbmUtPnNyY193aWR0aCk7Cj4+PiArCXZwX3JlZ193cml0 ZShyZXMsIFZQX1NSQ19IRUlHSFQsIHBsYW5lLT5zcmNfaGVpZ2h0KTsKPj4+ICAJdnBfcmVnX3dy aXRlKHJlcywgVlBfU1JDX0hfUE9TSVRJT04sCj4+PiAtCQkJVlBfU1JDX0hfUE9TSVRJT05fVkFM KHdpbl9kYXRhLT5mYl94KSk7Cj4+PiAtCXZwX3JlZ193cml0ZShyZXMsIFZQX1NSQ19WX1BPU0lU SU9OLCB3aW5fZGF0YS0+ZmJfeSk7Cj4+PiArCQkJVlBfU1JDX0hfUE9TSVRJT05fVkFMKHBsYW5l LT5mYl94KSk7Cj4+PiArCXZwX3JlZ193cml0ZShyZXMsIFZQX1NSQ19WX1BPU0lUSU9OLCBwbGFu ZS0+ZmJfeSk7Cj4+PiAgCj4+PiAtCXZwX3JlZ193cml0ZShyZXMsIFZQX0RTVF9XSURUSCwgd2lu X2RhdGEtPmNydGNfd2lkdGgpOwo+Pj4gLQl2cF9yZWdfd3JpdGUocmVzLCBWUF9EU1RfSF9QT1NJ VElPTiwgd2luX2RhdGEtPmNydGNfeCk7Cj4+PiArCXZwX3JlZ193cml0ZShyZXMsIFZQX0RTVF9X SURUSCwgcGxhbmUtPmNydGNfd2lkdGgpOwo+Pj4gKwl2cF9yZWdfd3JpdGUocmVzLCBWUF9EU1Rf SF9QT1NJVElPTiwgcGxhbmUtPmNydGNfeCk7Cj4+PiAgCWlmIChjdHgtPmludGVybGFjZSkgewo+ Pj4gLQkJdnBfcmVnX3dyaXRlKHJlcywgVlBfRFNUX0hFSUdIVCwgd2luX2RhdGEtPmNydGNfaGVp Z2h0IC8gMik7Cj4+PiAtCQl2cF9yZWdfd3JpdGUocmVzLCBWUF9EU1RfVl9QT1NJVElPTiwgd2lu X2RhdGEtPmNydGNfeSAvIDIpOwo+Pj4gKwkJdnBfcmVnX3dyaXRlKHJlcywgVlBfRFNUX0hFSUdI VCwgcGxhbmUtPmNydGNfaGVpZ2h0IC8gMik7Cj4+PiArCQl2cF9yZWdfd3JpdGUocmVzLCBWUF9E U1RfVl9QT1NJVElPTiwgcGxhbmUtPmNydGNfeSAvIDIpOwo+Pj4gIAl9IGVsc2Ugewo+Pj4gLQkJ dnBfcmVnX3dyaXRlKHJlcywgVlBfRFNUX0hFSUdIVCwgd2luX2RhdGEtPmNydGNfaGVpZ2h0KTsK Pj4+IC0JCXZwX3JlZ193cml0ZShyZXMsIFZQX0RTVF9WX1BPU0lUSU9OLCB3aW5fZGF0YS0+Y3J0 Y195KTsKPj4+ICsJCXZwX3JlZ193cml0ZShyZXMsIFZQX0RTVF9IRUlHSFQsIHBsYW5lLT5jcnRj X2hlaWdodCk7Cj4+PiArCQl2cF9yZWdfd3JpdGUocmVzLCBWUF9EU1RfVl9QT1NJVElPTiwgcGxh bmUtPmNydGNfeSk7Cj4+PiAgCX0KPj4+ICAKPj4+ICAJdnBfcmVnX3dyaXRlKHJlcywgVlBfSF9S QVRJTywgeF9yYXRpbyk7Cj4+PiBAQCAtNTAzLDggKzQ4Miw4IEBAIHN0YXRpYyB2b2lkIHZwX3Zp ZGVvX2J1ZmZlcihzdHJ1Y3QgbWl4ZXJfY29udGV4dCAqY3R4LCBpbnQgd2luKQo+Pj4gIAl2cF9y ZWdfd3JpdGUocmVzLCBWUF9UT1BfQ19QVFIsIGNocm9tYV9hZGRyWzBdKTsKPj4+ICAJdnBfcmVn X3dyaXRlKHJlcywgVlBfQk9UX0NfUFRSLCBjaHJvbWFfYWRkclsxXSk7Cj4+PiAgCj4+PiAtCW1p eGVyX2NmZ19zY2FuKGN0eCwgd2luX2RhdGEtPm1vZGVfaGVpZ2h0KTsKPj4+IC0JbWl4ZXJfY2Zn X3JnYl9mbXQoY3R4LCB3aW5fZGF0YS0+bW9kZV9oZWlnaHQpOwo+Pj4gKwltaXhlcl9jZmdfc2Nh bihjdHgsIHBsYW5lLT5tb2RlX2hlaWdodCk7Cj4+PiArCW1peGVyX2NmZ19yZ2JfZm10KGN0eCwg cGxhbmUtPm1vZGVfaGVpZ2h0KTsKPj4+ICAJbWl4ZXJfY2ZnX2xheWVyKGN0eCwgd2luLCB0cnVl KTsKPj4+ICAJbWl4ZXJfcnVuKGN0eCk7Cj4+PiAgCj4+PiBAQCAtNTI1LDIxICs1MDQsMjEgQEAg c3RhdGljIHZvaWQgbWl4ZXJfZ3JhcGhfYnVmZmVyKHN0cnVjdCBtaXhlcl9jb250ZXh0ICpjdHgs IGludCB3aW4pCj4+PiAgewo+Pj4gIAlzdHJ1Y3QgbWl4ZXJfcmVzb3VyY2VzICpyZXMgPSAmY3R4 LT5taXhlcl9yZXM7Cj4+PiAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+PiAtCXN0cnVjdCBoZG1p X3dpbl9kYXRhICp3aW5fZGF0YTsKPj4+ICsJc3RydWN0IGV4eW5vc19kcm1fcGxhbmUgKnBsYW5l Owo+Pj4gIAl1bnNpZ25lZCBpbnQgeF9yYXRpbywgeV9yYXRpbzsKPj4+ICAJdW5zaWduZWQgaW50 IHNyY194X29mZnNldCwgc3JjX3lfb2Zmc2V0LCBkc3RfeF9vZmZzZXQsIGRzdF95X29mZnNldDsK Pj4+ICAJZG1hX2FkZHJfdCBkbWFfYWRkcjsKPj4+ICAJdW5zaWduZWQgaW50IGZtdDsKPj4+ICAJ dTMyIHZhbDsKPj4+ICAKPj4+IC0Jd2luX2RhdGEgPSAmY3R4LT53aW5fZGF0YVt3aW5dOwo+Pj4g KwlwbGFuZSA9ICZjdHgtPnBsYW5lc1t3aW5dOwo+Pj4gIAo+Pj4gIAkjZGVmaW5lIFJHQjU2NSA0 Cj4+PiAgCSNkZWZpbmUgQVJHQjE1NTUgNQo+Pj4gIAkjZGVmaW5lIEFSR0I0NDQ0IDYKPj4+ICAJ I2RlZmluZSBBUkdCODg4OCA3Cj4+PiAgCj4+PiAtCXN3aXRjaCAod2luX2RhdGEtPmJwcCkgewo+ Pj4gKwlzd2l0Y2ggKHBsYW5lLT5icHApIHsKPj4+ICAJY2FzZSAxNjoKPj4+ICAJCWZtdCA9IEFS R0I0NDQ0Owo+Pj4gIAkJYnJlYWs7Cj4+PiBAQCAtNTU0LDE3ICs1MzMsMTcgQEAgc3RhdGljIHZv aWQgbWl4ZXJfZ3JhcGhfYnVmZmVyKHN0cnVjdCBtaXhlcl9jb250ZXh0ICpjdHgsIGludCB3aW4p Cj4+PiAgCXhfcmF0aW8gPSAwOwo+Pj4gIAl5X3JhdGlvID0gMDsKPj4+ICAKPj4+IC0JZHN0X3hf b2Zmc2V0ID0gd2luX2RhdGEtPmNydGNfeDsKPj4+IC0JZHN0X3lfb2Zmc2V0ID0gd2luX2RhdGEt PmNydGNfeTsKPj4+ICsJZHN0X3hfb2Zmc2V0ID0gcGxhbmUtPmNydGNfeDsKPj4+ICsJZHN0X3lf b2Zmc2V0ID0gcGxhbmUtPmNydGNfeTsKPj4+ICAKPj4+ICAJLyogY29udmVydGluZyBkbWEgYWRk cmVzcyBiYXNlIGFuZCBzb3VyY2Ugb2Zmc2V0ICovCj4+PiAtCWRtYV9hZGRyID0gd2luX2RhdGEt PmRtYV9hZGRyCj4+PiAtCQkrICh3aW5fZGF0YS0+ZmJfeCAqIHdpbl9kYXRhLT5icHAgPj4gMykK Pj4+IC0JCSsgKHdpbl9kYXRhLT5mYl95ICogd2luX2RhdGEtPmZiX3dpZHRoICogd2luX2RhdGEt PmJwcCA+PiAzKTsKPj4+ICsJZG1hX2FkZHIgPSBwbGFuZS0+ZG1hX2FkZHJbMF0KPj4+ICsJCSsg KHBsYW5lLT5mYl94ICogcGxhbmUtPmJwcCA+PiAzKQo+Pj4gKwkJKyAocGxhbmUtPmZiX3kgKiBw bGFuZS0+ZmJfd2lkdGggKiBwbGFuZS0+YnBwID4+IDMpOwo+Pj4gIAlzcmNfeF9vZmZzZXQgPSAw Owo+Pj4gIAlzcmNfeV9vZmZzZXQgPSAwOwo+Pj4gIAo+Pj4gLQlpZiAod2luX2RhdGEtPnNjYW5f ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkKPj4+ICsJaWYgKHBsYW5lLT5zY2FuX2Zs YWcgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkKPj4+ICAJCWN0eC0+aW50ZXJsYWNlID0gdHJ1 ZTsKPj4+ICAJZWxzZQo+Pj4gIAkJY3R4LT5pbnRlcmxhY2UgPSBmYWxzZTsKPj4+IEBAIC01Nzcs MTggKzU1NiwxOCBAQCBzdGF0aWMgdm9pZCBtaXhlcl9ncmFwaF9idWZmZXIoc3RydWN0IG1peGVy X2NvbnRleHQgKmN0eCwgaW50IHdpbikKPj4+ICAJCU1YUl9HUlBfQ0ZHX0ZPUk1BVF9WQUwoZm10 KSwgTVhSX0dSUF9DRkdfRk9STUFUX01BU0spOwo+Pj4gIAo+Pj4gIAkvKiBzZXR1cCBnZW9tZXRy eSAqLwo+Pj4gLQltaXhlcl9yZWdfd3JpdGUocmVzLCBNWFJfR1JBUEhJQ19TUEFOKHdpbiksIHdp bl9kYXRhLT5mYl93aWR0aCk7Cj4+PiArCW1peGVyX3JlZ193cml0ZShyZXMsIE1YUl9HUkFQSElD X1NQQU4od2luKSwgcGxhbmUtPmZiX3dpZHRoKTsKPj4+ICAKPj4+ICAJLyogc2V0dXAgZGlzcGxh eSBzaXplICovCj4+PiAgCWlmIChjdHgtPm14cl92ZXIgPT0gTVhSX1ZFUl8xMjhfMF8wXzE4NCAm Jgo+Pj4gIAkJd2luID09IE1JWEVSX0RFRkFVTFRfV0lOKSB7Cj4+PiAtCQl2YWwgID0gTVhSX01Y Ul9SRVNfSEVJR0hUKHdpbl9kYXRhLT5mYl9oZWlnaHQpOwo+Pj4gLQkJdmFsIHw9IE1YUl9NWFJf UkVTX1dJRFRIKHdpbl9kYXRhLT5mYl93aWR0aCk7Cj4+PiArCQl2YWwgID0gTVhSX01YUl9SRVNf SEVJR0hUKHBsYW5lLT5mYl9oZWlnaHQpOwo+Pj4gKwkJdmFsIHw9IE1YUl9NWFJfUkVTX1dJRFRI KHBsYW5lLT5mYl93aWR0aCk7Cj4+PiAgCQltaXhlcl9yZWdfd3JpdGUocmVzLCBNWFJfUkVTT0xV VElPTiwgdmFsKTsKPj4+ICAJfQo+Pj4gIAo+Pj4gLQl2YWwgID0gTVhSX0dSUF9XSF9XSURUSCh3 aW5fZGF0YS0+Y3J0Y193aWR0aCk7Cj4+PiAtCXZhbCB8PSBNWFJfR1JQX1dIX0hFSUdIVCh3aW5f ZGF0YS0+Y3J0Y19oZWlnaHQpOwo+Pj4gKwl2YWwgID0gTVhSX0dSUF9XSF9XSURUSChwbGFuZS0+ Y3J0Y193aWR0aCk7Cj4+PiArCXZhbCB8PSBNWFJfR1JQX1dIX0hFSUdIVChwbGFuZS0+Y3J0Y19o ZWlnaHQpOwo+Pj4gIAl2YWwgfD0gTVhSX0dSUF9XSF9IX1NDQUxFKHhfcmF0aW8pOwo+Pj4gIAl2 YWwgfD0gTVhSX0dSUF9XSF9WX1NDQUxFKHlfcmF0aW8pOwo+Pj4gIAltaXhlcl9yZWdfd3JpdGUo cmVzLCBNWFJfR1JBUEhJQ19XSCh3aW4pLCB2YWwpOwo+Pj4gQEAgLTYwNiw4ICs1ODUsOCBAQCBz dGF0aWMgdm9pZCBtaXhlcl9ncmFwaF9idWZmZXIoc3RydWN0IG1peGVyX2NvbnRleHQgKmN0eCwg aW50IHdpbikKPj4+ICAJLyogc2V0IGJ1ZmZlciBhZGRyZXNzIHRvIG1peGVyICovCj4+PiAgCW1p eGVyX3JlZ193cml0ZShyZXMsIE1YUl9HUkFQSElDX0JBU0Uod2luKSwgZG1hX2FkZHIpOwo+Pj4g IAo+Pj4gLQltaXhlcl9jZmdfc2NhbihjdHgsIHdpbl9kYXRhLT5tb2RlX2hlaWdodCk7Cj4+PiAt CW1peGVyX2NmZ19yZ2JfZm10KGN0eCwgd2luX2RhdGEtPm1vZGVfaGVpZ2h0KTsKPj4+ICsJbWl4 ZXJfY2ZnX3NjYW4oY3R4LCBwbGFuZS0+bW9kZV9oZWlnaHQpOwo+Pj4gKwltaXhlcl9jZmdfcmdi X2ZtdChjdHgsIHBsYW5lLT5tb2RlX2hlaWdodCk7Cj4+PiAgCW1peGVyX2NmZ19sYXllcihjdHgs IHdpbiwgdHJ1ZSk7Cj4+PiAgCj4+PiAgCS8qIGxheWVyIHVwZGF0ZSBtYW5kYXRvcnkgZm9yIG1p eGVyIDE2LjAuMzMuMCAqLwo+Pj4gQEAgLTkxMyw1OCArODkyLDYgQEAgc3RhdGljIHZvaWQgbWl4 ZXJfZGlzYWJsZV92Ymxhbmsoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0YykKPj4+ICAJbWl4 ZXJfcmVnX3dyaXRlbWFzayhyZXMsIE1YUl9JTlRfRU4sIDAsIE1YUl9JTlRfRU5fVlNZTkMpOwo+ Pj4gIH0KPj4+ICAKPj4+IC1zdGF0aWMgdm9pZCBtaXhlcl93aW5fbW9kZV9zZXQoc3RydWN0IGV4 eW5vc19kcm1fY3J0YyAqY3J0YywKPj4+IC0JCQlzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSAqcGxh bmUpCj4+PiAtewo+Pj4gLQlzdHJ1Y3QgbWl4ZXJfY29udGV4dCAqbWl4ZXJfY3R4ID0gY3J0Yy0+ Y3R4Owo+Pj4gLQlzdHJ1Y3QgaGRtaV93aW5fZGF0YSAqd2luX2RhdGE7Cj4+PiAtCWludCB3aW47 Cj4+PiAtCj4+PiAtCWlmICghcGxhbmUpIHsKPj4+IC0JCURSTV9FUlJPUigicGxhbmUgaXMgTlVM TFxuIik7Cj4+PiAtCQlyZXR1cm47Cj4+PiAtCX0KPj4+IC0KPj4+IC0JRFJNX0RFQlVHX0tNUygi c2V0IFslZF14WyVkXSBhdCAoJWQsJWQpIHRvIFslZF14WyVkXSBhdCAoJWQsJWQpXG4iLAo+Pj4g LQkJCQkgcGxhbmUtPmZiX3dpZHRoLCBwbGFuZS0+ZmJfaGVpZ2h0LAo+Pj4gLQkJCQkgcGxhbmUt PmZiX3gsIHBsYW5lLT5mYl95LAo+Pj4gLQkJCQkgcGxhbmUtPmNydGNfd2lkdGgsIHBsYW5lLT5j cnRjX2hlaWdodCwKPj4+IC0JCQkJIHBsYW5lLT5jcnRjX3gsIHBsYW5lLT5jcnRjX3kpOwo+Pj4g LQo+Pj4gLQl3aW4gPSBwbGFuZS0+enBvczsKPj4+IC0JaWYgKHdpbiA9PSBERUZBVUxUX1pQT1Mp Cj4+PiAtCQl3aW4gPSBNSVhFUl9ERUZBVUxUX1dJTjsKPj4+IC0KPj4+IC0JaWYgKHdpbiA8IDAg fHwgd2luID49IE1JWEVSX1dJTl9OUikgewo+Pj4gLQkJRFJNX0VSUk9SKCJtaXhlciB3aW5kb3db JWRdIGlzIHdyb25nXG4iLCB3aW4pOwo+Pj4gLQkJcmV0dXJuOwo+Pj4gLQl9Cj4+PiAtCj4+PiAt CXdpbl9kYXRhID0gJm1peGVyX2N0eC0+d2luX2RhdGFbd2luXTsKPj4+IC0KPj4+IC0Jd2luX2Rh dGEtPmRtYV9hZGRyID0gcGxhbmUtPmRtYV9hZGRyWzBdOwo+Pj4gLQl3aW5fZGF0YS0+Y2hyb21h X2RtYV9hZGRyID0gcGxhbmUtPmRtYV9hZGRyWzFdOwo+Pj4gLQl3aW5fZGF0YS0+cGl4ZWxfZm9y bWF0ID0gcGxhbmUtPnBpeGVsX2Zvcm1hdDsKPj4+IC0Jd2luX2RhdGEtPmJwcCA9IHBsYW5lLT5i cHA7Cj4+PiAtCj4+PiAtCXdpbl9kYXRhLT5jcnRjX3ggPSBwbGFuZS0+Y3J0Y194Owo+Pj4gLQl3 aW5fZGF0YS0+Y3J0Y195ID0gcGxhbmUtPmNydGNfeTsKPj4+IC0Jd2luX2RhdGEtPmNydGNfd2lk dGggPSBwbGFuZS0+Y3J0Y193aWR0aDsKPj4+IC0Jd2luX2RhdGEtPmNydGNfaGVpZ2h0ID0gcGxh bmUtPmNydGNfaGVpZ2h0Owo+Pj4gLQo+Pj4gLQl3aW5fZGF0YS0+ZmJfeCA9IHBsYW5lLT5mYl94 Owo+Pj4gLQl3aW5fZGF0YS0+ZmJfeSA9IHBsYW5lLT5mYl95Owo+Pj4gLQl3aW5fZGF0YS0+ZmJf d2lkdGggPSBwbGFuZS0+ZmJfd2lkdGg7Cj4+PiAtCXdpbl9kYXRhLT5mYl9oZWlnaHQgPSBwbGFu ZS0+ZmJfaGVpZ2h0Owo+Pj4gLQl3aW5fZGF0YS0+c3JjX3dpZHRoID0gcGxhbmUtPnNyY193aWR0 aDsKPj4+IC0Jd2luX2RhdGEtPnNyY19oZWlnaHQgPSBwbGFuZS0+c3JjX2hlaWdodDsKPj4+IC0K Pj4+IC0Jd2luX2RhdGEtPm1vZGVfd2lkdGggPSBwbGFuZS0+bW9kZV93aWR0aDsKPj4+IC0Jd2lu X2RhdGEtPm1vZGVfaGVpZ2h0ID0gcGxhbmUtPm1vZGVfaGVpZ2h0Owo+Pj4gLQo+Pj4gLQl3aW5f ZGF0YS0+c2Nhbl9mbGFncyA9IHBsYW5lLT5zY2FuX2ZsYWc7Cj4+PiAtfQo+Pj4gLQo+Pj4gIHN0 YXRpYyB2b2lkIG1peGVyX3dpbl9jb21taXQoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0Yywg aW50IHpwb3MpCj4+PiAgewo+Pj4gIAlzdHJ1Y3QgbWl4ZXJfY29udGV4dCAqbWl4ZXJfY3R4ID0g Y3J0Yy0+Y3R4Owo+Pj4gQEAgLTk4NCw3ICs5MTEsNyBAQCBzdGF0aWMgdm9pZCBtaXhlcl93aW5f Y29tbWl0KHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMsIGludCB6cG9zKQo+Pj4gIAllbHNl Cj4+PiAgCQltaXhlcl9ncmFwaF9idWZmZXIobWl4ZXJfY3R4LCB3aW4pOwo+Pj4gIAo+Pj4gLQlt aXhlcl9jdHgtPndpbl9kYXRhW3dpbl0uZW5hYmxlZCA9IHRydWU7Cj4+PiArCW1peGVyX2N0eC0+ cGxhbmVzW3dpbl0uZW5hYmxlZCA9IHRydWU7Cj4+PiAgfQo+Pj4gIAo+Pj4gIHN0YXRpYyB2b2lk IG1peGVyX3dpbl9kaXNhYmxlKHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMsIGludCB6cG9z KQo+Pj4gQEAgLTk5OSw3ICs5MjYsNyBAQCBzdGF0aWMgdm9pZCBtaXhlcl93aW5fZGlzYWJsZShz dHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpjcnRjLCBpbnQgenBvcykKPj4+ICAJbXV0ZXhfbG9jaygm bWl4ZXJfY3R4LT5taXhlcl9tdXRleCk7Cj4+PiAgCWlmICghbWl4ZXJfY3R4LT5wb3dlcmVkKSB7 Cj4+PiAgCQltdXRleF91bmxvY2soJm1peGVyX2N0eC0+bWl4ZXJfbXV0ZXgpOwo+Pj4gLQkJbWl4 ZXJfY3R4LT53aW5fZGF0YVt3aW5dLnJlc3VtZSA9IGZhbHNlOwo+Pj4gKwkJbWl4ZXJfY3R4LT5w bGFuZXNbd2luXS5yZXN1bWUgPSBmYWxzZTsKPj4+ICAJCXJldHVybjsKPj4+ICAJfQo+Pj4gIAlt dXRleF91bmxvY2soJm1peGVyX2N0eC0+bWl4ZXJfbXV0ZXgpOwo+Pj4gQEAgLTEwMTIsNyArOTM5 LDcgQEAgc3RhdGljIHZvaWQgbWl4ZXJfd2luX2Rpc2FibGUoc3RydWN0IGV4eW5vc19kcm1fY3J0 YyAqY3J0YywgaW50IHpwb3MpCj4+PiAgCW1peGVyX3ZzeW5jX3NldF91cGRhdGUobWl4ZXJfY3R4 LCB0cnVlKTsKPj4+ICAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcmVzLT5yZWdfc2xvY2ssIGZs YWdzKTsKPj4+ICAKPj4+IC0JbWl4ZXJfY3R4LT53aW5fZGF0YVt3aW5dLmVuYWJsZWQgPSBmYWxz ZTsKPj4+ICsJbWl4ZXJfY3R4LT5wbGFuZXNbd2luXS5lbmFibGVkID0gZmFsc2U7Cj4+PiAgfQo+ Pj4gIAo+Pj4gIHN0YXRpYyB2b2lkIG1peGVyX3dhaXRfZm9yX3ZibGFuayhzdHJ1Y3QgZXh5bm9z X2RybV9jcnRjICpjcnRjKQo+Pj4gQEAgLTEwNDksMTIgKzk3NiwxMiBAQCBzdGF0aWMgdm9pZCBt aXhlcl93YWl0X2Zvcl92Ymxhbmsoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0YykKPj4+ICAK Pj4+ICBzdGF0aWMgdm9pZCBtaXhlcl93aW5kb3dfc3VzcGVuZChzdHJ1Y3QgbWl4ZXJfY29udGV4 dCAqY3R4KQo+Pj4gIHsKPj4+IC0Jc3RydWN0IGhkbWlfd2luX2RhdGEgKndpbl9kYXRhOwo+Pj4g KwlzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSAqcGxhbmU7Cj4+PiAgCWludCBpOwo+Pj4gIAo+Pj4g IAlmb3IgKGkgPSAwOyBpIDwgTUlYRVJfV0lOX05SOyBpKyspIHsKPj4+IC0JCXdpbl9kYXRhID0g JmN0eC0+d2luX2RhdGFbaV07Cj4+PiAtCQl3aW5fZGF0YS0+cmVzdW1lID0gd2luX2RhdGEtPmVu YWJsZWQ7Cj4+PiArCQlwbGFuZSA9ICZjdHgtPnBsYW5lc1tpXTsKPj4+ICsJCXBsYW5lLT5yZXN1 bWUgPSBwbGFuZS0+ZW5hYmxlZDsKPj4+ICAJCW1peGVyX3dpbl9kaXNhYmxlKGN0eC0+Y3J0Yywg aSk7Cj4+PiAgCX0KPj4+ICAJbWl4ZXJfd2FpdF9mb3JfdmJsYW5rKGN0eC0+Y3J0Yyk7Cj4+PiBA QCAtMTA2MiwxNCArOTg5LDE0IEBAIHN0YXRpYyB2b2lkIG1peGVyX3dpbmRvd19zdXNwZW5kKHN0 cnVjdCBtaXhlcl9jb250ZXh0ICpjdHgpCj4+PiAgCj4+PiAgc3RhdGljIHZvaWQgbWl4ZXJfd2lu ZG93X3Jlc3VtZShzdHJ1Y3QgbWl4ZXJfY29udGV4dCAqY3R4KQo+Pj4gIHsKPj4+IC0Jc3RydWN0 IGhkbWlfd2luX2RhdGEgKndpbl9kYXRhOwo+Pj4gKwlzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSAq cGxhbmU7Cj4+PiAgCWludCBpOwo+Pj4gIAo+Pj4gIAlmb3IgKGkgPSAwOyBpIDwgTUlYRVJfV0lO X05SOyBpKyspIHsKPj4+IC0JCXdpbl9kYXRhID0gJmN0eC0+d2luX2RhdGFbaV07Cj4+PiAtCQl3 aW5fZGF0YS0+ZW5hYmxlZCA9IHdpbl9kYXRhLT5yZXN1bWU7Cj4+PiAtCQl3aW5fZGF0YS0+cmVz dW1lID0gZmFsc2U7Cj4+PiAtCQlpZiAod2luX2RhdGEtPmVuYWJsZWQpCj4+PiArCQlwbGFuZSA9 ICZjdHgtPnBsYW5lc1tpXTsKPj4+ICsJCXBsYW5lLT5lbmFibGVkID0gcGxhbmUtPnJlc3VtZTsK Pj4+ICsJCXBsYW5lLT5yZXN1bWUgPSBmYWxzZTsKPj4+ICsJCWlmIChwbGFuZS0+ZW5hYmxlZCkK Pj4+ICAJCQltaXhlcl93aW5fY29tbWl0KGN0eC0+Y3J0YywgaSk7Cj4+PiAgCX0KPj4+ICB9Cj4+ PiBAQCAtMTE3OSw3ICsxMTA2LDYgQEAgc3RhdGljIHN0cnVjdCBleHlub3NfZHJtX2NydGNfb3Bz IG1peGVyX2NydGNfb3BzID0gewo+Pj4gIAkuZW5hYmxlX3ZibGFuawkJPSBtaXhlcl9lbmFibGVf dmJsYW5rLAo+Pj4gIAkuZGlzYWJsZV92YmxhbmsJCT0gbWl4ZXJfZGlzYWJsZV92YmxhbmssCj4+ PiAgCS53YWl0X2Zvcl92YmxhbmsJPSBtaXhlcl93YWl0X2Zvcl92YmxhbmssCj4+PiAtCS53aW5f bW9kZV9zZXQJCT0gbWl4ZXJfd2luX21vZGVfc2V0LAo+Pj4gIAkud2luX2NvbW1pdAkJPSBtaXhl cl93aW5fY29tbWl0LAo+Pj4gIAkud2luX2Rpc2FibGUJCT0gbWl4ZXJfd2luX2Rpc2FibGUsCj4+ PiAgfTsKPj4+IEBAIC0xMjQzLDE1ICsxMTY5LDI1IEBAIHN0YXRpYyBpbnQgbWl4ZXJfYmluZChz dHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hbmFnZXIsIHZvaWQgKmRhdGEpCj4+ PiAgewo+Pj4gIAlzdHJ1Y3QgbWl4ZXJfY29udGV4dCAqY3R4ID0gZGV2X2dldF9kcnZkYXRhKGRl dik7Cj4+PiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2ID0gZGF0YTsKPj4+IC0JaW50IHJl dDsKPj4+ICsJc3RydWN0IGV4eW5vc19kcm1fcGxhbmUgKmV4eW5vc19wbGFuZTsKPj4+ICsJZW51 bSBkcm1fcGxhbmVfdHlwZSB0eXBlOwo+Pj4gKwlpbnQgaSwgcmV0Owo+Pj4gKwo+Pj4gKwlmb3Ig KGkgPSAwOyBpIDwgTUlYRVJfV0lOX05SOyBpKyspIHsKPj4+ICsJCXR5cGUgPSAoaSA9PSBNSVhF Ul9ERUZBVUxUX1dJTikgPyBEUk1fUExBTkVfVFlQRV9QUklNQVJZIDoKPj4+ICsJCQkJCQlEUk1f UExBTkVfVFlQRV9PVkVSTEFZOwo+Pj4gKwkJZXh5bm9zX3BsYW5lX2luaXQoZHJtX2RldiwgJmN0 eC0+cGxhbmVzW2ldLCAxIDw8IGN0eC0+cGlwZSwKPj4+ICsJCQkJICB0eXBlKTsKPj4+ICsJfQo+ Pj4gIAo+Pj4gIAlyZXQgPSBtaXhlcl9pbml0aWFsaXplKGN0eCwgZHJtX2Rldik7Cj4+PiAgCWlm IChyZXQpCj4+PiAgCQlyZXR1cm4gcmV0Owo+Pj4gIAo+Pj4gLQljdHgtPmNydGMgPSBleHlub3Nf ZHJtX2NydGNfY3JlYXRlKGRybV9kZXYsIGN0eC0+cGlwZSwKPj4+IC0JCQkJICAgICBFWFlOT1Nf RElTUExBWV9UWVBFX0hETUksCj4+PiAtCQkJCSAgICAgJm1peGVyX2NydGNfb3BzLCBjdHgpOwo+ Pj4gKwlleHlub3NfcGxhbmUgPSAmY3R4LT5wbGFuZXNbTUlYRVJfREVGQVVMVF9XSU5dOwo+Pj4g KwljdHgtPmNydGMgPSBleHlub3NfZHJtX2NydGNfY3JlYXRlKGRybV9kZXYsICZleHlub3NfcGxh bmUtPmJhc2UsCj4+PiArCQkJCQkgICBjdHgtPnBpcGUsIEVYWU5PU19ESVNQTEFZX1RZUEVfSERN SSwKPj4+ICsJCQkJCSAgICZtaXhlcl9jcnRjX29wcywgY3R4KTsKPj4+ICAJaWYgKElTX0VSUihj dHgtPmNydGMpKSB7Cj4+PiAgCQltaXhlcl9jdHhfcmVtb3ZlKGN0eCk7Cj4+PiAgCQlyZXQgPSBQ VFJfRVJSKGN0eC0+Y3J0Yyk7Cj4+Pgo+Pgo+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwo+PiBkcmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4+IGRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWwK