From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 2/5] drm/i915: Kill intel_crtc->active Date: Mon, 9 Mar 2015 17:41:33 +0200 Message-ID: <20150309154133.GW11371@intel.com> References: <1425848445-19479-1-git-send-email-matthew.d.roper@intel.com> <1425848445-19479-3-git-send-email-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 2F10E6E51E for ; Mon, 9 Mar 2015 08:41:39 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1425848445-19479-3-git-send-email-matthew.d.roper@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gU3VuLCBNYXIgMDgsIDIwMTUgYXQgMDI6MDA6NDJQTSAtMDcwMCwgTWF0dCBSb3BlciB3cm90 ZToKPiBSZXBsYWNlIGFsbCB1c2VzIG9mIGludGVsX2NydGMtPmFjdGl2ZSB3aXRoIGNydGMtPnN0 YXRlLT5hY3RpdmUuICBBdCB0aGUKPiBtb21lbnQgd2UgZG9uJ3QgaGF2ZSBhdG9taWMgc3RhdGUg aGFuZGxpbmcgd2lyZWQgdXAgZm9yIENSVEMncyBzbyB0aGlzCj4gbWVhbnMgd2UganVzdCBkaXJl Y3RseSBzZXQgdGhlIHN0YXRlIGFjdGl2ZSBmaWVsZCBhdCB2YXJpb3VzIHBvaW50cyBpbgo+IG91 ciAobGVnYWN5KSBtb2Rlc2V0IHBpcGVsaW5lLiAgT25jZSB3ZSBoYXZlIENSVEMgYXRvbWljIHN0 YXRlcyBwcm9wZXJseQo+IGhvb2tlZCB1cCwgY3J0Y19zdGF0ZS0+YWN0aXZlIHdpbGwgYmUgc2V0 IGR1cmluZyB0aGUgY2hlY2sgcGhhc2UuCgpJJ20gbm90IGF0IGFsbCBzdXJlIHdlIHdhbnQgdG8g ZG8gdGhpcyBjaGFuZ2UsIG9yIGF0IHRoZSB2ZXJ5IGxlYXN0IEknZApub3QgZG8gaXQgdGhyb3Vn aCBhIG1hc3MgcmVuYW1lIGxpa2UgdGhpcy4gSSB0aGluayB3ZSBuZWVkIHRvIGV2YWx1YXRlCmVh Y2ggY2FzZSBzZXBhcmF0ZWx5LgoKVGhlIG1vc3QgaW1wb3J0YW50IHF1ZXN0aW9uIGlzIHdoYXQg YXJlIHRoZSBwbGFubmVkIHNlbWFudGljcyBvZgpjcnRjLT5zdGF0ZS0+YWN0aXZlLCBhbmQgZG8g dGhleSBtYXRjaCB0aGUgc2VtYW50aWNzIG9mIGludGVsX2NydGMtPmFjdGl2ZS4KaW50ZWxfY3J0 Yy0+YWN0aXZlIGlzIHRoYXQgYWN0dWFsIHBpcGUgc3RhdGUsIGFuZCB0aGF0IG1lYW5zIGl0J2xs IGNoYW5nZQppbiB0aGUgbWlkZGxlIG9mIHRoZSBtb2Rlc2V0IHNlcXVlbmNlLCBhbmQgbm90IGJl Zm9yZSBvciBhZnRlciBpdC4gQW5kIHNpbmNlCmNydGMtPnN0YXRlIGlzIGdvaW5nIHRvIGJlIHN3 YXBwZWQgaW4gdmlhIHRoZSBhdG9taWMgY29kZSBhcyBhIHdob2xlCihiZWZvcmUgdGhlIGNvbW1p dCBhc3N1bWluZyB0aGUgcGF0dGVybiBmcm9tIHRoZSBwbGFuZSBjb2RlIGhvbGRzKSBpdCB3b3Vs ZAphbHJlYWR5IGNoYW5nZSBiZWZvcmUgdGhlIG1vZGVzZXQgc2VxdWVuY2Ugc3RhcnRlZC4KCj4g Cj4gUGF0Y2ggZ2VuZXJhdGVkIHdpdGggQ29jY2luZWxsZSB2aWE6Cj4gCj4gICAgICAgICAvLyBJ ZiB3ZSBhbHJlYWR5IGhhdmUgdGhlIGJhc2UgcG9pbnRlciwgZG9uJ3QgYWNjZXNzIGl0IHRocm91 Z2gKPiAgICAgICAgIC8vIGludGVsX2NydGMtPmJhc2UgbmVlZGxlc3NseS4KPiAgICAgICAgIEBA Cj4gICAgICAgICBleHByZXNzaW9uIEU7Cj4gICAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0YyAqSUM7 Cj4gICAgICAgICBAQAo+ICAgICAgICAgSUMgPSB0b19pbnRlbF9jcnRjKEUpOwo+ICAgICAgICAg PCsuLi4KPiAgICAgICAgIC0gSUMtPmFjdGl2ZQo+ICAgICAgICAgKyBFLT5zdGF0ZS0+YWN0aXZl Cj4gICAgICAgICAuLi4rPgo+IAo+ICAgICAgICAgLy8gTm90IHN1cmUgd2h5IHRoZSBydWxlIGFi b3ZlIGRvZXNuJ3QgY2F0Y2ggdGhlc2UsIGJ1dCB0aGlzIHNlZW1zCj4gICAgICAgICAvLyB0byBt b3AgdXAgdGhlIHJlbWFpbmRlcnMuCj4gICAgICAgICBAQAo+ICAgICAgICAgaWRlbnRpZmllciBJ Owo+ICAgICAgICAgZXhwcmVzc2lvbiBFOwo+ICAgICAgICAgQEAKPiAgICAgICAgIHsKPiAgICAg ICAgIHN0cnVjdCBpbnRlbF9jcnRjICpJID0gdG9faW50ZWxfY3J0YyhFKTsKPiAgICAgICAgIDwr Li4uCj4gICAgICAgICAtIEktPmFjdGl2ZQo+ICAgICAgICAgKyBFLT5zdGF0ZS0+YWN0aXZlCj4g ICAgICAgICAuLi4rPgo+ICAgICAgICAgfQo+IAo+ICAgICAgICAgLy8gV2UgbWlnaHQgaGF2ZSBs ZWZ0IGFuIHVudXNlZCBpbnRlbF9jcnRjIGluIHNvbWUgZnVuY3Rpb25zOyBjbGVhbiB0aGF0IHVw Lgo+ICAgICAgICAgQEAKPiAgICAgICAgIGlkZW50aWZpZXIgSUM7Cj4gICAgICAgICBjb25zdGFu dCBDOwo+ICAgICAgICAgQEAKPiAgICAgICAgIHsKPiAgICAgICAgIC4uLgo+ICAgICAgICAgLSBz dHJ1Y3QgaW50ZWxfY3J0YyAqSUM7Cj4gICAgICAgICAuLi4gd2hlbiAhPSBJQwo+ICAgICAgICAg fQo+IAo+ICAgICAgICAgLy8gQ2hhbmdlIGFsbCBvZiB0aGUgb3RoZXIgdXNlcyBvZiBpbnRlbF9j cnRjLT5hY3RpdmUKPiAgICAgICAgIEBACj4gICAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0YyAqSUM7 Cj4gICAgICAgICBAQAo+ICAgICAgICAgLSBJQy0+YWN0aXZlCj4gICAgICAgICArIElDLT5iYXNl LnN0YXRlLT5hY3RpdmUKPiAKPiAgICAgICAgIC8vIERpdHRvCj4gICAgICAgICBAQAo+ICAgICAg ICAgZXhwcmVzc2lvbiBFOwo+ICAgICAgICAgQEAKPiAgICAgICAgIC0gdG9faW50ZWxfY3J0YyhF KS0+YWN0aXZlCj4gICAgICAgICArIEUtPnN0YXRlLT5hY3RpdmUKPiAKPiAgICAgICAgIC8vIFJl bW92ZSB0aGUgYWN0aXZlIGZpZWxkIGZyb20gaW50ZWxfY3J0Ywo+ICAgICAgICAgQEAgQEAKPiAg ICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjIHsKPiAgICAgICAgIC4uLgo+ICAgICAgICAgLSBib29s IGFjdGl2ZTsKPiAgICAgICAgIC4uLgo+ICAgICAgICAgfTsKPiAKPiBTaWduZWQtb2ZmLWJ5OiBN YXR0IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICB8ICAgOSArKy0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgICAgICAgfCAgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMgfCAgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jICAgICAgfCAxMjkgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAgICAgICAgIHwgICA0ICst Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgICAgIHwgICA2IC0tCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMgICAgICAgIHwgICA2ICstCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYyAgICAgIHwgICAyICstCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICAgICAgIHwgIDEwICstLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgICAgICB8ICAgNiArLQo+ICAxMCBmaWxlcyBj aGFuZ2VkLCA4NiBpbnNlcnRpb25zKCspLCA5MiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4IDNmNjQ3ODYuLjI4MTc2ZmQgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC0yNjU2LDkgKzI2NTYsMTAgQEAgc3RhdGlj IGludCBpOTE1X2Rpc3BsYXlfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkK PiAgCj4gIAkJc2VxX3ByaW50ZihtLCAiQ1JUQyAlZDogcGlwZTogJWMsIGFjdGl2ZT0lcyAoc2l6 ZT0lZHglZClcbiIsCj4gIAkJCSAgIGNydGMtPmJhc2UuYmFzZS5pZCwgcGlwZV9uYW1lKGNydGMt PnBpcGUpLAo+IC0JCQkgICB5ZXNubyhjcnRjLT5hY3RpdmUpLCBjcnRjLT5jb25maWctPnBpcGVf c3JjX3csCj4gKwkJCSAgIHllc25vKGNydGMtPmJhc2Uuc3RhdGUtPmFjdGl2ZSksCj4gKwkJCSAg IGNydGMtPmNvbmZpZy0+cGlwZV9zcmNfdywKPiAgCQkJICAgY3J0Yy0+Y29uZmlnLT5waXBlX3Ny Y19oKTsKPiAtCQlpZiAoY3J0Yy0+YWN0aXZlKSB7Cj4gKwkJaWYgKGNydGMtPmJhc2Uuc3RhdGUt PmFjdGl2ZSkgewo+ICAJCQlpbnRlbF9jcnRjX2luZm8obSwgY3J0Yyk7Cj4gIAo+ICAJCQlhY3Rp dmUgPSBjdXJzb3JfcG9zaXRpb24oZGV2LCBjcnRjLT5waXBlLCAmeCwgJnkpOwo+IEBAIC0yOTUx LDcgKzI5NTIsNyBAQCBzdGF0aWMgaW50IGk5MTVfZHJyc19zdGF0dXMoc3RydWN0IHNlcV9maWxl ICptLCB2b2lkICp1bnVzZWQpCj4gIAlmb3JfZWFjaF9pbnRlbF9jcnRjKGRldiwgaW50ZWxfY3J0 Yykgewo+ICAJCWRybV9tb2Rlc2V0X2xvY2soJmludGVsX2NydGMtPmJhc2UubXV0ZXgsIE5VTEwp Owo+ICAKPiAtCQlpZiAoaW50ZWxfY3J0Yy0+YWN0aXZlKSB7Cj4gKwkJaWYgKGludGVsX2NydGMt PmJhc2Uuc3RhdGUtPmFjdGl2ZSkgewo+ICAJCQlhY3RpdmVfY3J0Y19jbnQrKzsKPiAgCQkJc2Vx X3ByaW50ZihtLCAiXG5DUlRDICVkOiAgIiwgYWN0aXZlX2NydGNfY250KTsKPiAgCj4gQEAgLTM2 NTAsNyArMzY1MSw3IEBAIHN0YXRpYyBpbnQgcGlwZV9jcmNfc2V0X3NvdXJjZShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBlbnVtIHBpcGUgcGlwZSwKPiAgCQkJCSBwaXBlX25hbWUocGlwZSkpOwo+ ICAKPiAgCQlkcm1fbW9kZXNldF9sb2NrKCZjcnRjLT5iYXNlLm11dGV4LCBOVUxMKTsKPiAtCQlp ZiAoY3J0Yy0+YWN0aXZlKQo+ICsJCWlmIChjcnRjLT5iYXNlLnN0YXRlLT5hY3RpdmUpCj4gIAkJ CWludGVsX3dhaXRfZm9yX3ZibGFuayhkZXYsIHBpcGUpOwo+ICAJCWRybV9tb2Rlc2V0X3VubG9j aygmY3J0Yy0+YmFzZS5tdXRleCk7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+IGluZGV4 IDliYWVjYjcuLmFjODM0ZGUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9pcnEuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiBAQCAtNjQ5 LDcgKzY0OSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9nZXRfY3J0Y19zY2Fub3V0cG9zKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIGludCBwaXBlLAo+ICAJaW50IHJldCA9IDA7Cj4gIAl1bnNpZ25lZCBs b25nIGlycWZsYWdzOwo+ICAKPiAtCWlmICghaW50ZWxfY3J0Yy0+YWN0aXZlKSB7Cj4gKwlpZiAo IWludGVsX2NydGMtPmJhc2Uuc3RhdGUtPmFjdGl2ZSkgewo+ICAJCURSTV9ERUJVR19EUklWRVIo InRyeWluZyB0byBnZXQgc2Nhbm91dHBvcyBmb3IgZGlzYWJsZWQgIgo+ICAJCQkJICJwaXBlICVj XG4iLCBwaXBlX25hbWUocGlwZSkpOwo+ICAJCXJldHVybiAwOwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2F0b21pY19wbGFuZS5jCj4gaW5kZXggOTc2Yjg5MS4uNDNjYjIxZiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jCj4gQEAgLTE0NCw5ICsx NDQsOSBAQCBzdGF0aWMgaW50IGludGVsX3BsYW5lX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSwKPiAgCWludGVsX3N0YXRlLT5jbGlwLngxID0gMDsKPiAgCWludGVsX3N0YXRl LT5jbGlwLnkxID0gMDsKPiAgCWludGVsX3N0YXRlLT5jbGlwLngyID0KPiAtCQlpbnRlbF9jcnRj LT5hY3RpdmUgPyBpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX3cgOiAwOwo+ICsJCWNydGMt PnN0YXRlLT5hY3RpdmUgPyBpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX3cgOiAwOwo+ICAJ aW50ZWxfc3RhdGUtPmNsaXAueTIgPQo+IC0JCWludGVsX2NydGMtPmFjdGl2ZSA/IGludGVsX2Ny dGMtPmNvbmZpZy0+cGlwZV9zcmNfaCA6IDA7Cj4gKwkJY3J0Yy0+c3RhdGUtPmFjdGl2ZSA/IGlu dGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfaCA6IDA7Cj4gIAo+ICAJLyoKPiAgCSAqIERpc2Fi bGluZyBhIHBsYW5lIGlzIGFsd2F5cyBva2F5OyB3ZSBqdXN0IG5lZWQgdG8gdXBkYXRlCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDE4OGY4N2YuLmIxMTUyOGYgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTg5Nyw3ICs4OTcsNyBA QCBib29sIGludGVsX2NydGNfYWN0aXZlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCSAqIFdl IGNhbiBkaXRjaCB0aGUgY3J0Yy0+cHJpbWFyeS0+ZmIgY2hlY2sgYXMgc29vbiBhcyB3ZSBjYW4K PiAgCSAqIHByb3Blcmx5IHJlY29uc3RydWN0IGZyYW1lYnVmZmVycy4KPiAgCSAqLwo+IC0JcmV0 dXJuIGludGVsX2NydGMtPmFjdGl2ZSAmJiBjcnRjLT5wcmltYXJ5LT5mYiAmJgo+ICsJcmV0dXJu IGNydGMtPnN0YXRlLT5hY3RpdmUgJiYgY3J0Yy0+cHJpbWFyeS0+ZmIgJiYKPiAgCQlpbnRlbF9j cnRjLT5jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrOwo+ICB9Cj4gIAo+IEBA IC0xNTkxLDcgKzE1OTEsNyBAQCBzdGF0aWMgaW50IGludGVsX251bV9kdm9fcGlwZXMoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPiAgCWludCBjb3VudCA9IDA7Cj4gIAo+ICAJZm9yX2VhY2hfaW50 ZWxfY3J0YyhkZXYsIGNydGMpCj4gLQkJY291bnQgKz0gY3J0Yy0+YWN0aXZlICYmCj4gKwkJY291 bnQgKz0gY3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZlICYmCj4gIAkJCWludGVsX3BpcGVfaGFzX3R5 cGUoY3J0YywgSU5URUxfT1VUUFVUX0RWTyk7Cj4gIAo+ICAJcmV0dXJuIGNvdW50Owo+IEBAIC0y MTY4LDcgKzIxNjgsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kaXNhYmxlX3ByaW1hcnlfaHdfcGxh bmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVs X2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICAKPiAtCWlmIChXQVJOX09OKCFpbnRlbF9j cnRjLT5hY3RpdmUpKQo+ICsJaWYgKFdBUk5fT04oIWludGVsX2NydGMtPmJhc2Uuc3RhdGUtPmFj dGl2ZSkpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCWlmICghaW50ZWxfY3J0Yy0+cHJpbWFyeV9lbmFi bGVkKQo+IEBAIC0yNTEyLDcgKzI1MTIsNyBAQCBpbnRlbF9maW5kX3BsYW5lX29iaihzdHJ1Y3Qg aW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiAgCQlpZiAoYyA9PSAmaW50ZWxfY3J0Yy0+YmFzZSkK PiAgCQkJY29udGludWU7Cj4gIAo+IC0JCWlmICghaS0+YWN0aXZlKQo+ICsJCWlmICghaS0+YmFz ZS5zdGF0ZS0+YWN0aXZlKQo+ICAJCQljb250aW51ZTsKPiAgCj4gIAkJb2JqID0gaW50ZWxfZmJf b2JqKGMtPnByaW1hcnktPmZiKTsKPiBAQCAtMjkzNywxNSArMjkzNywxMyBAQCBzdGF0aWMgdm9p ZCBpbnRlbF91cGRhdGVfcHJpbWFyeV9wbGFuZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAg CXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiAgCj4gIAlmb3JfZWFjaF9jcnRjKGRldiwgY3J0Yykg ewo+IC0JCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRj KTsKPiAtCj4gIAkJZHJtX21vZGVzZXRfbG9jaygmY3J0Yy0+bXV0ZXgsIE5VTEwpOwo+ICAJCS8q Cj4gIAkJICogRklYTUU6IE9uY2Ugd2UgaGF2ZSBwcm9wZXIgc3VwcG9ydCBmb3IgcHJpbWFyeSBw bGFuZXMgKGFuZAo+ICAJCSAqIGRpc2FibGluZyB0aGVtIHdpdGhvdXQgZGlzYWJsaW5nIHRoZSBl bnRpcmUgY3J0YykgYWxsb3cgYWdhaW4KPiAgCQkgKiBhIE5VTEwgY3J0Yy0+cHJpbWFyeS0+ZmIu Cj4gIAkJICovCj4gLQkJaWYgKGludGVsX2NydGMtPmFjdGl2ZSAmJiBjcnRjLT5wcmltYXJ5LT5m YikKPiArCQlpZiAoY3J0Yy0+c3RhdGUtPmFjdGl2ZSAmJiBjcnRjLT5wcmltYXJ5LT5mYikKPiAg CQkJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3ByaW1hcnlfcGxhbmUoY3J0YywKPiAgCQkJCQkJ CSAgICAgICBjcnRjLT5wcmltYXJ5LT5mYiwKPiAgCQkJCQkJCSAgICAgICBjcnRjLT54LAo+IEBA IC0yOTc0LDcgKzI5NzIsNyBAQCB2b2lkIGludGVsX3ByZXBhcmVfcmVzZXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKPiAgCSAqIGczMyBkb2NzIHNheSB3ZSBzaG91bGQgYXQgbGVhc3QgZGlzYWJs ZSBhbGwgdGhlIHBsYW5lcy4KPiAgCSAqLwo+ICAJZm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYsIGNy dGMpIHsKPiAtCQlpZiAoY3J0Yy0+YWN0aXZlKQo+ICsJCWlmIChjcnRjLT5iYXNlLnN0YXRlLT5h Y3RpdmUpCj4gIAkJCWRldl9wcml2LT5kaXNwbGF5LmNydGNfZGlzYWJsZSgmY3J0Yy0+YmFzZSk7 Cj4gIAl9Cj4gIH0KPiBAQCAtMzE1MCw3ICszMTQ4LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZmRp X25vcm1hbF90cmFpbihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAo+ICBzdGF0aWMgYm9vbCBw aXBlX2hhc19lbmFibGVkX3BjaChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAgewo+IC0JcmV0 dXJuIGNydGMtPmJhc2Uuc3RhdGUtPmVuYWJsZSAmJiBjcnRjLT5hY3RpdmUgJiYKPiArCXJldHVy biBjcnRjLT5iYXNlLnN0YXRlLT5lbmFibGUgJiYgY3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZlICYm Cj4gIAkJY3J0Yy0+Y29uZmlnLT5oYXNfcGNoX2VuY29kZXI7Cj4gIH0KPiAgCj4gQEAgLTQzMDYs NyArNDMwNCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2NydGNfbG9hZF9sdXQoc3RydWN0IGRybV9j cnRjICpjcnRjKQo+ICAJYm9vbCByZWVuYWJsZV9pcHMgPSBmYWxzZTsKPiAgCj4gIAkvKiBUaGUg Y2xvY2tzIGhhdmUgdG8gYmUgb24gdG8gbG9hZCB0aGUgcGFsZXR0ZS4gKi8KPiAtCWlmICghY3J0 Yy0+c3RhdGUtPmVuYWJsZSB8fCAhaW50ZWxfY3J0Yy0+YWN0aXZlKQo+ICsJaWYgKCFjcnRjLT5z dGF0ZS0+ZW5hYmxlIHx8ICFpbnRlbF9jcnRjLT5iYXNlLnN0YXRlLT5hY3RpdmUpCj4gIAkJcmV0 dXJuOwo+ICAKPiAgCWlmICghSEFTX1BDSF9TUExJVChkZXZfcHJpdi0+ZGV2KSkgewo+IEBAIC00 NDIxLDcgKzQ0MTksNyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9jcnRjX2VuYWJsZShzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMpCj4gIAo+ICAJV0FSTl9PTighY3J0Yy0+c3RhdGUtPmVuYWJsZSk7Cj4g IAo+IC0JaWYgKGludGVsX2NydGMtPmFjdGl2ZSkKPiArCWlmIChpbnRlbF9jcnRjLT5iYXNlLnN0 YXRlLT5hY3RpdmUpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCWlmIChpbnRlbF9jcnRjLT5jb25maWct Pmhhc19wY2hfZW5jb2RlcikKPiBAQCAtNDQzOSw3ICs0NDM3LDcgQEAgc3RhdGljIHZvaWQgaXJv bmxha2VfY3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAKPiAgCWlyb25sYWtl X3NldF9waXBlY29uZihjcnRjKTsKPiAgCj4gLQlpbnRlbF9jcnRjLT5hY3RpdmUgPSB0cnVlOwo+ ICsJaW50ZWxfY3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZlID0gdHJ1ZTsKPiAgCj4gIAlpbnRlbF9z ZXRfY3B1X2ZpZm9fdW5kZXJydW5fcmVwb3J0aW5nKGRldl9wcml2LCBwaXBlLCB0cnVlKTsKPiAg CWludGVsX3NldF9wY2hfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYsIHBpcGUsIHRy dWUpOwo+IEBAIC00NTA0LDcgKzQ1MDIsNyBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX21vZGVfc2V0 X3BsYW5lc193b3JrYXJvdW5kKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICAJLyogV2Ugd2Fu dCB0byBnZXQgdGhlIG90aGVyX2FjdGl2ZV9jcnRjIG9ubHkgaWYgdGhlcmUncyBvbmx5IDEgb3Ro ZXIKPiAgCSAqIGFjdGl2ZSBjcnRjLiAqLwo+ICAJZm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYsIGNy dGNfaXQpIHsKPiAtCQlpZiAoIWNydGNfaXQtPmFjdGl2ZSB8fCBjcnRjX2l0ID09IGNydGMpCj4g KwkJaWYgKCFjcnRjX2l0LT5iYXNlLnN0YXRlLT5hY3RpdmUgfHwgY3J0Y19pdCA9PSBjcnRjKQo+ ICAJCQljb250aW51ZTsKPiAgCj4gIAkJaWYgKG90aGVyX2FjdGl2ZV9jcnRjKQo+IEBAIC00NTI5 LDcgKzQ1MjcsNyBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YykKPiAgCj4gIAlXQVJOX09OKCFjcnRjLT5zdGF0ZS0+ZW5hYmxlKTsKPiAgCj4g LQlpZiAoaW50ZWxfY3J0Yy0+YWN0aXZlKQo+ICsJaWYgKGludGVsX2NydGMtPmJhc2Uuc3RhdGUt PmFjdGl2ZSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJaWYgKGludGVsX2NydGNfdG9fc2hhcmVkX2Rw bGwoaW50ZWxfY3J0YykpCj4gQEAgLTQ1NTQsNyArNDU1Miw3IEBAIHN0YXRpYyB2b2lkIGhhc3dl bGxfY3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAKPiAgCWludGVsX3NldF9w aXBlX2NzYyhjcnRjKTsKPiAgCj4gLQlpbnRlbF9jcnRjLT5hY3RpdmUgPSB0cnVlOwo+ICsJaW50 ZWxfY3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZlID0gdHJ1ZTsKPiAgCj4gIAlpbnRlbF9zZXRfY3B1 X2ZpZm9fdW5kZXJydW5fcmVwb3J0aW5nKGRldl9wcml2LCBwaXBlLCB0cnVlKTsKPiAgCWZvcl9l YWNoX2VuY29kZXJfb25fY3J0YyhkZXYsIGNydGMsIGVuY29kZXIpCj4gQEAgLTQ2NDUsNyArNDY0 Myw3IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMg KmNydGMpCj4gIAlpbnQgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4gIAl1MzIgcmVnLCB0ZW1w Owo+ICAKPiAtCWlmICghaW50ZWxfY3J0Yy0+YWN0aXZlKQo+ICsJaWYgKCFpbnRlbF9jcnRjLT5i YXNlLnN0YXRlLT5hY3RpdmUpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCWludGVsX2NydGNfZGlzYWJs ZV9wbGFuZXMoY3J0Yyk7Cj4gQEAgLTQ2OTMsNyArNDY5MSw3IEBAIHN0YXRpYyB2b2lkIGlyb25s YWtlX2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAkJaXJvbmxha2VfZmRp X3BsbF9kaXNhYmxlKGludGVsX2NydGMpOwo+ICAJfQo+ICAKPiAtCWludGVsX2NydGMtPmFjdGl2 ZSA9IGZhbHNlOwo+ICsJaW50ZWxfY3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZlID0gZmFsc2U7Cj4g IAlpbnRlbF91cGRhdGVfd2F0ZXJtYXJrcyhjcnRjKTsKPiAgCj4gIAltdXRleF9sb2NrKCZkZXYt PnN0cnVjdF9tdXRleCk7Cj4gQEAgLTQ3MDksNyArNDcwNyw3IEBAIHN0YXRpYyB2b2lkIGhhc3dl bGxfY3J0Y19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCXN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyOwo+ICAJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gaW50 ZWxfY3J0Yy0+Y29uZmlnLT5jcHVfdHJhbnNjb2RlcjsKPiAgCj4gLQlpZiAoIWludGVsX2NydGMt PmFjdGl2ZSkKPiArCWlmICghaW50ZWxfY3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZlKQo+ICAJCXJl dHVybjsKPiAgCj4gIAlpbnRlbF9jcnRjX2Rpc2FibGVfcGxhbmVzKGNydGMpOwo+IEBAIC00NzQ4 LDcgKzQ3NDYsNyBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJt X2NydGMgKmNydGMpCj4gIAkJaWYgKGVuY29kZXItPnBvc3RfZGlzYWJsZSkKPiAgCQkJZW5jb2Rl ci0+cG9zdF9kaXNhYmxlKGVuY29kZXIpOwo+ICAKPiAtCWludGVsX2NydGMtPmFjdGl2ZSA9IGZh bHNlOwo+ICsJaW50ZWxfY3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZlID0gZmFsc2U7Cj4gIAlpbnRl bF91cGRhdGVfd2F0ZXJtYXJrcyhjcnRjKTsKPiAgCj4gIAltdXRleF9sb2NrKCZkZXYtPnN0cnVj dF9tdXRleCk7Cj4gQEAgLTUxMzcsNyArNTEzNSw3IEBAIHN0YXRpYyB2b2lkIHZhbGxleXZpZXdf Y3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAKPiAgCVdBUk5fT04oIWNydGMt PnN0YXRlLT5lbmFibGUpOwo+ICAKPiAtCWlmIChpbnRlbF9jcnRjLT5hY3RpdmUpCj4gKwlpZiAo aW50ZWxfY3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZlKQo+ICAJCXJldHVybjsKPiAgCj4gIAlpc19k c2kgPSBpbnRlbF9waXBlX2hhc190eXBlKGludGVsX2NydGMsIElOVEVMX09VVFBVVF9EU0kpOwo+ IEBAIC01MTYzLDcgKzUxNjEsNyBAQCBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X2NydGNfZW5hYmxl KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCj4gIAlpOXh4X3NldF9waXBlY29uZihpbnRlbF9j cnRjKTsKPiAgCj4gLQlpbnRlbF9jcnRjLT5hY3RpdmUgPSB0cnVlOwo+ICsJaW50ZWxfY3J0Yy0+ YmFzZS5zdGF0ZS0+YWN0aXZlID0gdHJ1ZTsKPiAgCj4gIAlpbnRlbF9zZXRfY3B1X2ZpZm9fdW5k ZXJydW5fcmVwb3J0aW5nKGRldl9wcml2LCBwaXBlLCB0cnVlKTsKPiAgCj4gQEAgLTUyMjAsNyAr NTIxOCw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfY3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRjICpj cnRjKQo+ICAKPiAgCVdBUk5fT04oIWNydGMtPnN0YXRlLT5lbmFibGUpOwo+ICAKPiAtCWlmIChp bnRlbF9jcnRjLT5hY3RpdmUpCj4gKwlpZiAoaW50ZWxfY3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZl KQo+ICAJCXJldHVybjsKPiAgCj4gIAlpOXh4X3NldF9wbGxfZGl2aWRlcnMoaW50ZWxfY3J0Yyk7 Cj4gQEAgLTUyMzIsNyArNTIzMCw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfY3J0Y19lbmFibGUoc3Ry dWN0IGRybV9jcnRjICpjcnRjKQo+ICAKPiAgCWk5eHhfc2V0X3BpcGVjb25mKGludGVsX2NydGMp Owo+ICAKPiAtCWludGVsX2NydGMtPmFjdGl2ZSA9IHRydWU7Cj4gKwlpbnRlbF9jcnRjLT5iYXNl LnN0YXRlLT5hY3RpdmUgPSB0cnVlOwo+ICAKPiAgCWlmICghSVNfR0VOMihkZXYpKQo+ICAJCWlu dGVsX3NldF9jcHVfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYsIHBpcGUsIHRydWUp Owo+IEBAIC01Mjk1LDcgKzUyOTMsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X2NydGNfZGlzYWJsZShz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcjsK PiAgCWludCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiAgCj4gLQlpZiAoIWludGVsX2NydGMt PmFjdGl2ZSkKPiArCWlmICghaW50ZWxfY3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZlKQo+ICAJCXJl dHVybjsKPiAgCj4gIAkvKgo+IEBAIC01MzUzLDcgKzUzNTEsNyBAQCBzdGF0aWMgdm9pZCBpOXh4 X2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAlpZiAoIUlTX0dFTjIoZGV2 KSkKPiAgCQlpbnRlbF9zZXRfY3B1X2ZpZm9fdW5kZXJydW5fcmVwb3J0aW5nKGRldl9wcml2LCBw aXBlLCBmYWxzZSk7Cj4gIAo+IC0JaW50ZWxfY3J0Yy0+YWN0aXZlID0gZmFsc2U7Cj4gKwlpbnRl bF9jcnRjLT5iYXNlLnN0YXRlLT5hY3RpdmUgPSBmYWxzZTsKPiAgCWludGVsX3VwZGF0ZV93YXRl cm1hcmtzKGNydGMpOwo+ICAKPiAgCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiBA QCAtNTM3NSw3ICs1MzczLDcgQEAgdm9pZCBpbnRlbF9jcnRjX2NvbnRyb2woc3RydWN0IGRybV9j cnRjICpjcnRjLCBib29sIGVuYWJsZSkKPiAgCXVuc2lnbmVkIGxvbmcgZG9tYWluczsKPiAgCj4g IAlpZiAoZW5hYmxlKSB7Cj4gLQkJaWYgKCFpbnRlbF9jcnRjLT5hY3RpdmUpIHsKPiArCQlpZiAo IWludGVsX2NydGMtPmJhc2Uuc3RhdGUtPmFjdGl2ZSkgewo+ICAJCQlkb21haW5zID0gZ2V0X2Ny dGNfcG93ZXJfZG9tYWlucyhjcnRjKTsKPiAgCQkJZm9yX2VhY2hfcG93ZXJfZG9tYWluKGRvbWFp biwgZG9tYWlucykKPiAgCQkJCWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LCBkb21h aW4pOwo+IEBAIC01Mzg0LDcgKzUzODIsNyBAQCB2b2lkIGludGVsX2NydGNfY29udHJvbChzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsIGJvb2wgZW5hYmxlKQo+ICAJCQlkZXZfcHJpdi0+ZGlzcGxheS5j cnRjX2VuYWJsZShjcnRjKTsKPiAgCQl9Cj4gIAl9IGVsc2Ugewo+IC0JCWlmIChpbnRlbF9jcnRj LT5hY3RpdmUpIHsKPiArCQlpZiAoaW50ZWxfY3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZlKSB7Cj4g IAkJCWRldl9wcml2LT5kaXNwbGF5LmNydGNfZGlzYWJsZShjcnRjKTsKPiAgCj4gIAkJCWRvbWFp bnMgPSBpbnRlbF9jcnRjLT5lbmFibGVkX3Bvd2VyX2RvbWFpbnM7Cj4gQEAgLTU0OTcsNyArNTQ5 NSw4IEBAIHN0YXRpYyB2b2lkIGludGVsX2Nvbm5lY3Rvcl9jaGVja19zdGF0ZShzdHJ1Y3QgaW50 ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gIAo+ICAJCQlJOTE1X1NUQVRFX1dBUk4oIWNydGMt PnN0YXRlLT5lbmFibGUsCj4gIAkJCQkJImNydGMgbm90IGVuYWJsZWRcbiIpOwo+IC0JCQlJOTE1 X1NUQVRFX1dBUk4oIXRvX2ludGVsX2NydGMoY3J0YyktPmFjdGl2ZSwgImNydGMgbm90IGFjdGl2 ZVxuIik7Cj4gKwkJCUk5MTVfU1RBVEVfV0FSTighY3J0Yy0+c3RhdGUtPmFjdGl2ZSwKPiArCQkJ CQkiY3J0YyBub3QgYWN0aXZlXG4iKTsKPiAgCQkJSTkxNV9TVEFURV9XQVJOKHBpcGUgIT0gdG9f aW50ZWxfY3J0YyhjcnRjKS0+cGlwZSwKPiAgCQkJICAgICAiZW5jb2RlciBhY3RpdmUgb24gdGhl IHdyb25nIHBpcGVcbiIpOwo+ICAJCX0KPiBAQCAtODAzMiw3ICs4MDMxLDggQEAgc3RhdGljIHZv aWQgYXNzZXJ0X2Nhbl9kaXNhYmxlX2xjcGxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjOwo+ICAKPiAgCWZvcl9lYWNoX2ludGVs X2NydGMoZGV2LCBjcnRjKQo+IC0JCUk5MTVfU1RBVEVfV0FSTihjcnRjLT5hY3RpdmUsICJDUlRD IGZvciBwaXBlICVjIGVuYWJsZWRcbiIsCj4gKwkJSTkxNV9TVEFURV9XQVJOKGNydGMtPmJhc2Uu c3RhdGUtPmFjdGl2ZSwKPiArCQkJCSJDUlRDIGZvciBwaXBlICVjIGVuYWJsZWRcbiIsCj4gIAkJ ICAgICBwaXBlX25hbWUoY3J0Yy0+cGlwZSkpOwo+ICAKPiAgCUk5MTVfU1RBVEVfV0FSTihJOTE1 X1JFQUQoSFNXX1BXUl9XRUxMX0RSSVZFUiksICJQb3dlciB3ZWxsIG9uXG4iKTsKPiBAQCAtMTA4 MTYsNyArMTA4MTYsNyBAQCBzdGF0aWMgdm9pZCBjaGVja193bV9zdGF0ZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+ICAJCXN0cnVjdCBza2xfZGRiX2VudHJ5ICpod19lbnRyeSwgKnN3X2VudHJ5 Owo+ICAJCWNvbnN0IGVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiAgCj4gLQkJ aWYgKCFpbnRlbF9jcnRjLT5hY3RpdmUpCj4gKwkJaWYgKCFpbnRlbF9jcnRjLT5iYXNlLnN0YXRl LT5hY3RpdmUpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAgCQkvKiBwbGFuZXMgKi8KPiBAQCAtMTA5 NDUsNyArMTA5NDUsNyBAQCBjaGVja19jcnRjX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gIAkJRFJNX0RFQlVHX0tNUygiW0NSVEM6JWRdXG4iLAo+ICAJCQkgICAgICBjcnRjLT5iYXNl LmJhc2UuaWQpOwo+ICAKPiAtCQlJOTE1X1NUQVRFX1dBUk4oY3J0Yy0+YWN0aXZlICYmICFjcnRj LT5iYXNlLnN0YXRlLT5lbmFibGUsCj4gKwkJSTkxNV9TVEFURV9XQVJOKGNydGMtPmJhc2Uuc3Rh dGUtPmFjdGl2ZSAmJiAhY3J0Yy0+YmFzZS5zdGF0ZS0+ZW5hYmxlLAo+ICAJCSAgICAgImFjdGl2 ZSBjcnRjLCBidXQgbm90IGVuYWJsZWQgaW4gc3cgdHJhY2tpbmdcbiIpOwo+ICAKPiAgCQlmb3Jf ZWFjaF9pbnRlbF9lbmNvZGVyKGRldiwgZW5jb2Rlcikgewo+IEBAIC0xMDk1Niw5ICsxMDk1Niwx MCBAQCBjaGVja19jcnRjX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJCQlhY3Rp dmUgPSB0cnVlOwo+ICAJCX0KPiAgCj4gLQkJSTkxNV9TVEFURV9XQVJOKGFjdGl2ZSAhPSBjcnRj LT5hY3RpdmUsCj4gKwkJSTkxNV9TVEFURV9XQVJOKGFjdGl2ZSAhPSBjcnRjLT5iYXNlLnN0YXRl LT5hY3RpdmUsCj4gIAkJICAgICAiY3J0YydzIGNvbXB1dGVkIGFjdGl2ZSBzdGF0ZSBkb2Vzbid0 IG1hdGNoIHRyYWNrZWQgYWN0aXZlIHN0YXRlICIKPiAtCQkgICAgICIoZXhwZWN0ZWQgJWksIGZv dW5kICVpKVxuIiwgYWN0aXZlLCBjcnRjLT5hY3RpdmUpOwo+ICsJCSAgICAgIihleHBlY3RlZCAl aSwgZm91bmQgJWkpXG4iLCBhY3RpdmUsCj4gKwkJCQljcnRjLT5iYXNlLnN0YXRlLT5hY3RpdmUp Owo+ICAJCUk5MTVfU1RBVEVfV0FSTihlbmFibGVkICE9IGNydGMtPmJhc2Uuc3RhdGUtPmVuYWJs ZSwKPiAgCQkgICAgICJjcnRjJ3MgY29tcHV0ZWQgZW5hYmxlZCBzdGF0ZSBkb2Vzbid0IG1hdGNo IHRyYWNrZWQgZW5hYmxlZCBzdGF0ZSAiCj4gIAkJICAgICAiKGV4cGVjdGVkICVpLCBmb3VuZCAl aSlcbiIsIGVuYWJsZWQsCj4gQEAgLTEwOTcwLDcgKzEwOTcxLDcgQEAgY2hlY2tfY3J0Y19zdGF0 ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJCS8qIGh3IHN0YXRlIGlzIGluY29uc2lzdGVu dCB3aXRoIHRoZSBwaXBlIHF1aXJrICovCj4gIAkJaWYgKChjcnRjLT5waXBlID09IFBJUEVfQSAm JiBkZXZfcHJpdi0+cXVpcmtzICYgUVVJUktfUElQRUFfRk9SQ0UpIHx8Cj4gIAkJICAgIChjcnRj LT5waXBlID09IFBJUEVfQiAmJiBkZXZfcHJpdi0+cXVpcmtzICYgUVVJUktfUElQRUJfRk9SQ0Up KQo+IC0JCQlhY3RpdmUgPSBjcnRjLT5hY3RpdmU7Cj4gKwkJCWFjdGl2ZSA9IGNydGMtPmJhc2Uu c3RhdGUtPmFjdGl2ZTsKPiAgCj4gIAkJZm9yX2VhY2hfaW50ZWxfZW5jb2RlcihkZXYsIGVuY29k ZXIpIHsKPiAgCQkJZW51bSBwaXBlIHBpcGU7Cj4gQEAgLTEwOTgwLDkgKzEwOTgxLDEwIEBAIGNo ZWNrX2NydGNfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQkJCWVuY29kZXItPmdl dF9jb25maWcoZW5jb2RlciwgJnBpcGVfY29uZmlnKTsKPiAgCQl9Cj4gIAo+IC0JCUk5MTVfU1RB VEVfV0FSTihjcnRjLT5hY3RpdmUgIT0gYWN0aXZlLAo+ICsJCUk5MTVfU1RBVEVfV0FSTihjcnRj LT5iYXNlLnN0YXRlLT5hY3RpdmUgIT0gYWN0aXZlLAo+ICAJCSAgICAgImNydGMgYWN0aXZlIHN0 YXRlIGRvZXNuJ3QgbWF0Y2ggd2l0aCBodyBzdGF0ZSAiCj4gLQkJICAgICAiKGV4cGVjdGVkICVp LCBmb3VuZCAlaSlcbiIsIGNydGMtPmFjdGl2ZSwgYWN0aXZlKTsKPiArCQkgICAgICIoZXhwZWN0 ZWQgJWksIGZvdW5kICVpKVxuIiwgY3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZlLAo+ICsJCQkJYWN0 aXZlKTsKPiAgCj4gIAkJaWYgKGFjdGl2ZSAmJgo+ICAJCSAgICAhaW50ZWxfcGlwZV9jb25maWdf Y29tcGFyZShkZXYsIGNydGMtPmNvbmZpZywgJnBpcGVfY29uZmlnKSkgewo+IEBAIC0xMTAyOCw3 ICsxMTAzMCw3IEBAIGNoZWNrX3NoYXJlZF9kcGxsX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCj4gIAkJZm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYsIGNydGMpIHsKPiAgCQkJaWYgKGNydGMt PmJhc2Uuc3RhdGUtPmVuYWJsZSAmJiBpbnRlbF9jcnRjX3RvX3NoYXJlZF9kcGxsKGNydGMpID09 IHBsbCkKPiAgCQkJCWVuYWJsZWRfY3J0Y3MrKzsKPiAtCQkJaWYgKGNydGMtPmFjdGl2ZSAmJiBp bnRlbF9jcnRjX3RvX3NoYXJlZF9kcGxsKGNydGMpID09IHBsbCkKPiArCQkJaWYgKGNydGMtPmJh c2Uuc3RhdGUtPmFjdGl2ZSAmJiBpbnRlbF9jcnRjX3RvX3NoYXJlZF9kcGxsKGNydGMpID09IHBs bCkKPiAgCQkJCWFjdGl2ZV9jcnRjcysrOwo+ICAJCX0KPiAgCQlJOTE1X1NUQVRFX1dBUk4ocGxs LT5hY3RpdmUgIT0gYWN0aXZlX2NydGNzLAo+IEBAIC0xMTQ0OSwxMCArMTE0NTEsNyBAQCBpbnRl bF9zZXRfY29uZmlnX2NvbXB1dGVfbW9kZV9jaGFuZ2VzKHN0cnVjdCBkcm1fbW9kZV9zZXQgKnNl dCwKPiAgCQkgKiBpbiBmYXN0Ym9vdCBzaXR1YXRpb25zLgo+ICAJCSAqLwo+ICAJCWlmIChzZXQt PmNydGMtPnByaW1hcnktPmZiID09IE5VTEwpIHsKPiAtCQkJc3RydWN0IGludGVsX2NydGMgKmlu dGVsX2NydGMgPQo+IC0JCQkJdG9faW50ZWxfY3J0YyhzZXQtPmNydGMpOwo+IC0KPiAtCQkJaWYg KGludGVsX2NydGMtPmFjdGl2ZSkgewo+ICsJCQlpZiAoc2V0LT5jcnRjLT5zdGF0ZS0+YWN0aXZl KSB7Cj4gIAkJCQlEUk1fREVCVUdfS01TKCJjcnRjIGhhcyBubyBmYiwgd2lsbCBmbGlwXG4iKTsK PiAgCQkJCWNvbmZpZy0+ZmJfY2hhbmdlZCA9IHRydWU7Cj4gIAkJCX0gZWxzZSB7Cj4gQEAgLTEx NzM4LDcgKzExNzM3LDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3NldF9jb25maWcoc3RydWN0 IGRybV9tb2RlX3NldCAqc2V0KQo+ICAJCSAqIGhhcyBwcmV2aW91c2x5IGJlZW4gdHVybmVkIG9m Zi4KPiAgCQkgKi8KPiAgCQlpZiAoIWludGVsX2NydGMtPnByaW1hcnlfZW5hYmxlZCAmJiByZXQg PT0gMCkgewo+IC0JCQlXQVJOX09OKCFpbnRlbF9jcnRjLT5hY3RpdmUpOwo+ICsJCQlXQVJOX09O KCFzZXQtPmNydGMtPnN0YXRlLT5hY3RpdmUpOwo+ICAJCQlpbnRlbF9lbmFibGVfcHJpbWFyeV9o d19wbGFuZShzZXQtPmNydGMtPnByaW1hcnksIHNldC0+Y3J0Yyk7Cj4gIAkJfQo+ICAKPiBAQCAt MTIwMDEsNyArMTIwMDAsNyBAQCBpbnRlbF9jaGVja19wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lLAo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAtCWlmIChp bnRlbF9jcnRjLT5hY3RpdmUpIHsKPiArCWlmIChjcnRjLT5zdGF0ZS0+YWN0aXZlKSB7Cj4gIAkJ aW50ZWxfY3J0Yy0+YXRvbWljLndhaXRfZm9yX2ZsaXBzID0gdHJ1ZTsKPiAgCj4gIAkJLyoKPiBA QCAtMTIwNjgsNyArMTIwNjcsNyBAQCBpbnRlbF9jb21taXRfcHJpbWFyeV9wbGFuZShzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSwKPiAgCj4gIAlpbnRlbF9wbGFuZS0+b2JqID0gb2JqOwo+ICAKPiAt CWlmIChpbnRlbF9jcnRjLT5hY3RpdmUpIHsKPiArCWlmIChjcnRjLT5zdGF0ZS0+YWN0aXZlKSB7 Cj4gIAkJaWYgKHN0YXRlLT52aXNpYmxlKSB7Cj4gIAkJCS8qIEZJWE1FOiBraWxsIHRoaXMgZmFz dGJvb3QgaGFjayAqLwo+ICAJCQlpbnRlbF91cGRhdGVfcGlwZV9zaXplKGludGVsX2NydGMpOwo+ IEBAIC0xMjEzOCw3ICsxMjEzNyw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2JlZ2luX2NydGNfY29t bWl0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9w cml2KTsKPiAgCj4gIAkvKiBQZXJmb3JtIHZibGFuayBldmFzaW9uIGFyb3VuZCBjb21taXQgb3Bl cmF0aW9uICovCj4gLQlpZiAoaW50ZWxfY3J0Yy0+YWN0aXZlKQo+ICsJaWYgKGludGVsX2NydGMt PmJhc2Uuc3RhdGUtPmFjdGl2ZSkKPiAgCQlpbnRlbF9jcnRjLT5hdG9taWMuZXZhZGUgPQo+ICAJ CQlpbnRlbF9waXBlX3VwZGF0ZV9zdGFydChpbnRlbF9jcnRjLAo+ICAJCQkJCQkmaW50ZWxfY3J0 Yy0+YXRvbWljLnN0YXJ0X3ZibF9jb3VudCk7Cj4gQEAgLTEyMzEzLDcgKzEyMzEyLDcgQEAgaW50 ZWxfY2hlY2tfY3Vyc29yX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJfQo+ICAK PiAgZmluaXNoOgo+IC0JaWYgKGludGVsX2NydGMtPmFjdGl2ZSkgewo+ICsJaWYgKGNydGMtPnN0 YXRlLT5hY3RpdmUpIHsKPiAgCQlpZiAoaW50ZWxfY3J0Yy0+YmFzZS5jdXJzb3ItPnN0YXRlLT5j cnRjX3cgIT0gc3RhdGUtPmJhc2UuY3J0Y193KQo+ICAJCQlpbnRlbF9jcnRjLT5hdG9taWMudXBk YXRlX3dtID0gdHJ1ZTsKPiAgCj4gQEAgLTEyMzU4LDcgKzEyMzU3LDcgQEAgaW50ZWxfY29tbWl0 X2N1cnNvcl9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCWludGVsX2NydGMtPmN1 cnNvcl9ibyA9IG9iajsKPiAgdXBkYXRlOgo+ICAKPiAtCWlmIChpbnRlbF9jcnRjLT5hY3RpdmUp Cj4gKwlpZiAoY3J0Yy0+c3RhdGUtPmFjdGl2ZSkKPiAgCQlpbnRlbF9jcnRjX3VwZGF0ZV9jdXJz b3IoY3J0Yywgc3RhdGUtPnZpc2libGUpOwo+ICB9Cj4gIAo+IEBAIC0xMzM5OSw3ICsxMzM5OCw3 IEBAIHZvaWQgaW50ZWxfbW9kZXNldF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlk cm1fbW9kZXNldF91bmxvY2tfYWxsKGRldik7Cj4gIAo+ICAJZm9yX2VhY2hfaW50ZWxfY3J0Yyhk ZXYsIGNydGMpIHsKPiAtCQlpZiAoIWNydGMtPmFjdGl2ZSkKPiArCQlpZiAoIWNydGMtPmJhc2Uu c3RhdGUtPmFjdGl2ZSkKPiAgCQkJY29udGludWU7Cj4gIAo+ICAJCS8qCj4gQEAgLTEzNDc3LDcg KzEzNDc2LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2FuaXRpemVfY3J0YyhzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YykKPiAgCj4gIAkvKiByZXN0b3JlIHZibGFuayBpbnRlcnJ1cHRzIHRvIGNvcnJl Y3Qgc3RhdGUgKi8KPiAgCWRybV9jcnRjX3ZibGFua19yZXNldCgmY3J0Yy0+YmFzZSk7Cj4gLQlp ZiAoY3J0Yy0+YWN0aXZlKSB7Cj4gKwlpZiAoY3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZlKSB7Cj4g IAkJdXBkYXRlX3NjYW5saW5lX29mZnNldChjcnRjKTsKPiAgCQlkcm1fY3J0Y192Ymxhbmtfb24o JmNydGMtPmJhc2UpOwo+ICAJfQo+IEBAIC0xMzUxNywxMyArMTM1MTYsMTMgQEAgc3RhdGljIHZv aWQgaW50ZWxfc2FuaXRpemVfY3J0YyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAgCQkJCWNv bm5lY3Rvci0+ZW5jb2Rlci0+Y29ubmVjdG9yc19hY3RpdmUgPSBmYWxzZTsKPiAgCQkJfQo+ICAK PiAtCQlXQVJOX09OKGNydGMtPmFjdGl2ZSk7Cj4gKwkJV0FSTl9PTihjcnRjLT5iYXNlLnN0YXRl LT5hY3RpdmUpOwo+ICAJCWNydGMtPmJhc2Uuc3RhdGUtPmVuYWJsZSA9IGZhbHNlOwo+ICAJCWNy dGMtPmJhc2UuZW5hYmxlZCA9IGZhbHNlOwo+ICAJfQo+ICAKPiAgCWlmIChkZXZfcHJpdi0+cXVp cmtzICYgUVVJUktfUElQRUFfRk9SQ0UgJiYKPiAtCSAgICBjcnRjLT5waXBlID09IFBJUEVfQSAm JiAhY3J0Yy0+YWN0aXZlKSB7Cj4gKwkgICAgY3J0Yy0+cGlwZSA9PSBQSVBFX0EgJiYgIWNydGMt PmJhc2Uuc3RhdGUtPmFjdGl2ZSkgewo+ICAJCS8qIEJJT1MgZm9yZ290IHRvIGVuYWJsZSBwaXBl IEEsIHRoaXMgbW9zdGx5IGhhcHBlbnMgYWZ0ZXIKPiAgCQkgKiByZXN1bWUuIEZvcmNlLWVuYWJs ZSB0aGUgcGlwZSB0byBmaXggdGhpcywgdGhlIHVwZGF0ZV9kcG1zCj4gIAkJICogY2FsbCBiZWxv dyB3ZSByZXN0b3JlIHRoZSBwaXBlIHRvIHRoZSByaWdodCBzdGF0ZSwgYnV0IGxlYXZlCj4gQEAg LTEzNTM1LDcgKzEzNTM0LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2FuaXRpemVfY3J0YyhzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAgCSAqIGhhdmUgYWN0aXZlIGNvbm5lY3RvcnMvZW5jb2Rl cnMuICovCj4gIAlpbnRlbF9jcnRjX3VwZGF0ZV9kcG1zKCZjcnRjLT5iYXNlKTsKPiAgCj4gLQlp ZiAoY3J0Yy0+YWN0aXZlICE9IGNydGMtPmJhc2Uuc3RhdGUtPmVuYWJsZSkgewo+ICsJaWYgKGNy dGMtPmJhc2Uuc3RhdGUtPmFjdGl2ZSAhPSBjcnRjLT5iYXNlLnN0YXRlLT5lbmFibGUpIHsKPiAg CQlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcjsKPiAgCj4gIAkJLyogVGhpcyBjYW4gaGFw cGVuIGVpdGhlciBkdWUgdG8gYnVncyBpbiB0aGUgZ2V0X2h3X3N0YXRlCj4gQEAgLTEzNTQ0LDE3 ICsxMzU0MywxNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zYW5pdGl6ZV9jcnRjKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjKQo+ICAJCURSTV9ERUJVR19LTVMoIltDUlRDOiVkXSBodyBzdGF0ZSBhZGp1 c3RlZCwgd2FzICVzLCBub3cgJXNcbiIsCj4gIAkJCSAgICAgIGNydGMtPmJhc2UuYmFzZS5pZCwK PiAgCQkJICAgICAgY3J0Yy0+YmFzZS5zdGF0ZS0+ZW5hYmxlID8gImVuYWJsZWQiIDogImRpc2Fi bGVkIiwKPiAtCQkJICAgICAgY3J0Yy0+YWN0aXZlID8gImVuYWJsZWQiIDogImRpc2FibGVkIik7 Cj4gKwkJCSAgICAgIGNydGMtPmJhc2Uuc3RhdGUtPmFjdGl2ZSA/ICJlbmFibGVkIiA6ICJkaXNh YmxlZCIpOwo+ICAKPiAtCQljcnRjLT5iYXNlLnN0YXRlLT5lbmFibGUgPSBjcnRjLT5hY3RpdmU7 Cj4gLQkJY3J0Yy0+YmFzZS5lbmFibGVkID0gY3J0Yy0+YWN0aXZlOwo+ICsJCWNydGMtPmJhc2Uu c3RhdGUtPmVuYWJsZSA9IGNydGMtPmJhc2Uuc3RhdGUtPmFjdGl2ZTsKPiArCQljcnRjLT5iYXNl LmVuYWJsZWQgPSBjcnRjLT5iYXNlLnN0YXRlLT5hY3RpdmU7Cj4gIAo+ICAJCS8qIEJlY2F1c2Ug d2Ugb25seSBlc3RhYmxpc2ggdGhlIGNvbm5lY3RvciAtPiBlbmNvZGVyIC0+Cj4gIAkJICogY3J0 YyBsaW5rcyBpZiBzb21ldGhpbmcgaXMgYWN0aXZlLCB0aGlzIG1lYW5zIHRoZQo+ICAJCSAqIGNy dGMgaXMgbm93IGRlYWN0aXZhdGVkLiBCcmVhayB0aGUgbGlua3MuIGNvbm5lY3Rvcgo+ICAJCSAq IC0+IGVuY29kZXIgbGlua3MgYXJlIG9ubHkgZXN0YWJsaXNoIHdoZW4gdGhpbmdzIGFyZQo+ICAJ CSAqICBhY3R1YWxseSB1cCwgaGVuY2Ugbm8gbmVlZCB0byBicmVhayB0aGVtLiAqLwo+IC0JCVdB Uk5fT04oY3J0Yy0+YWN0aXZlKTsKPiArCQlXQVJOX09OKGNydGMtPmJhc2Uuc3RhdGUtPmFjdGl2 ZSk7Cj4gIAo+ICAJCWZvcl9lYWNoX2VuY29kZXJfb25fY3J0YyhkZXYsICZjcnRjLT5iYXNlLCBl bmNvZGVyKSB7Cj4gIAkJCVdBUk5fT04oZW5jb2Rlci0+Y29ubmVjdG9yc19hY3RpdmUpOwo+IEBA IC0xMzU2Miw3ICsxMzU2MSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Nhbml0aXplX2NydGMoc3Ry dWN0IGludGVsX2NydGMgKmNydGMpCj4gIAkJfQo+ICAJfQo+ICAKPiAtCWlmIChjcnRjLT5hY3Rp dmUgfHwgSEFTX0dNQ0hfRElTUExBWShkZXYpKSB7Cj4gKwlpZiAoY3J0Yy0+YmFzZS5zdGF0ZS0+ YWN0aXZlIHx8IEhBU19HTUNIX0RJU1BMQVkoZGV2KSkgewo+ICAJCS8qCj4gIAkJICogV2Ugc3Rh cnQgb3V0IHdpdGggdW5kZXJydW4gcmVwb3J0aW5nIGRpc2FibGVkIHRvIGF2b2lkIHJhY2VzLgo+ ICAJCSAqIEZvciBjb3JyZWN0IGJvb2trZWVwaW5nIG1hcmsgdGhpcyBvbiBhY3RpdmUgY3J0Y3Mu Cj4gQEAgLTEzNTkwLDcgKzEzNTg5LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2FuaXRpemVfZW5j b2RlcihzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgCSAqIGVuY29kZXIgaXMgYWN0 aXZlIGFuZCB0cnlpbmcgdG8gcmVhZCBmcm9tIGEgcGlwZSkgYW5kIHRoZQo+ICAJICogcGlwZSBp dHNlbGYgYmVpbmcgYWN0aXZlLiAqLwo+ICAJYm9vbCBoYXNfYWN0aXZlX2NydGMgPSBlbmNvZGVy LT5iYXNlLmNydGMgJiYKPiAtCQl0b19pbnRlbF9jcnRjKGVuY29kZXItPmJhc2UuY3J0YyktPmFj dGl2ZTsKPiArCQllbmNvZGVyLT5iYXNlLmNydGMtPnN0YXRlLT5hY3RpdmU7Cj4gIAo+ICAJaWYg KGVuY29kZXItPmNvbm5lY3RvcnNfYWN0aXZlICYmICFoYXNfYWN0aXZlX2NydGMpIHsKPiAgCQlE Uk1fREVCVUdfS01TKCJbRU5DT0RFUjolZDolc10gaGFzIGFjdGl2ZSBjb25uZWN0b3JzIGJ1dCBu byBhY3RpdmUgcGlwZSFcbiIsCj4gQEAgLTEzNjU4LDcgKzEzNjU3LDcgQEAgc3RhdGljIGJvb2wg cHJpbWFyeV9nZXRfaHdfc3RhdGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gIHsKPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGNydGMtPmJhc2UuZGV2LT5kZXZfcHJp dmF0ZTsKPiAgCj4gLQlpZiAoIWNydGMtPmFjdGl2ZSkKPiArCWlmICghY3J0Yy0+YmFzZS5zdGF0 ZS0+YWN0aXZlKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gIAlyZXR1cm4gSTkxNV9SRUFEKERT UENOVFIoY3J0Yy0+cGxhbmUpKSAmIERJU1BMQVlfUExBTkVfRU5BQkxFOwo+IEBAIC0xMzY3OCwx NiArMTM2NzcsMTYgQEAgc3RhdGljIHZvaWQgaW50ZWxfbW9kZXNldF9yZWFkb3V0X2h3X3N0YXRl KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAo+ICAJCWNydGMtPmNvbmZpZy0+cXVpcmtzIHw9 IFBJUEVfQ09ORklHX1FVSVJLX0lOSEVSSVRFRF9NT0RFOwo+ICAKPiAtCQljcnRjLT5hY3RpdmUg PSBkZXZfcHJpdi0+ZGlzcGxheS5nZXRfcGlwZV9jb25maWcoY3J0YywKPiArCQljcnRjLT5iYXNl LnN0YXRlLT5hY3RpdmUgPSBkZXZfcHJpdi0+ZGlzcGxheS5nZXRfcGlwZV9jb25maWcoY3J0YywK PiAgCQkJCQkJCQkgY3J0Yy0+Y29uZmlnKTsKPiAgCj4gLQkJY3J0Yy0+YmFzZS5zdGF0ZS0+ZW5h YmxlID0gY3J0Yy0+YWN0aXZlOwo+IC0JCWNydGMtPmJhc2UuZW5hYmxlZCA9IGNydGMtPmFjdGl2 ZTsKPiArCQljcnRjLT5iYXNlLnN0YXRlLT5lbmFibGUgPSBjcnRjLT5iYXNlLnN0YXRlLT5hY3Rp dmU7Cj4gKwkJY3J0Yy0+YmFzZS5lbmFibGVkID0gY3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZlOwo+ ICAJCWNydGMtPnByaW1hcnlfZW5hYmxlZCA9IHByaW1hcnlfZ2V0X2h3X3N0YXRlKGNydGMpOwo+ ICAKPiAgCQlEUk1fREVCVUdfS01TKCJbQ1JUQzolZF0gaHcgc3RhdGUgcmVhZG91dDogJXNcbiIs Cj4gIAkJCSAgICAgIGNydGMtPmJhc2UuYmFzZS5pZCwKPiAtCQkJICAgICAgY3J0Yy0+YWN0aXZl ID8gImVuYWJsZWQiIDogImRpc2FibGVkIik7Cj4gKwkJCSAgICAgIGNydGMtPmJhc2Uuc3RhdGUt PmFjdGl2ZSA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpOwo+ICAJfQo+ICAKPiAgCWZvciAoaSA9 IDA7IGkgPCBkZXZfcHJpdi0+bnVtX3NoYXJlZF9kcGxsOyBpKyspIHsKPiBAQCAtMTM2OTgsNyAr MTM2OTcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9tb2Rlc2V0X3JlYWRvdXRfaHdfc3RhdGUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQlwbGwtPmFjdGl2ZSA9IDA7Cj4gIAkJcGxsLT5jb25m aWcuY3J0Y19tYXNrID0gMDsKPiAgCQlmb3JfZWFjaF9pbnRlbF9jcnRjKGRldiwgY3J0Yykgewo+ IC0JCQlpZiAoY3J0Yy0+YWN0aXZlICYmIGludGVsX2NydGNfdG9fc2hhcmVkX2RwbGwoY3J0Yykg PT0gcGxsKSB7Cj4gKwkJCWlmIChjcnRjLT5iYXNlLnN0YXRlLT5hY3RpdmUgJiYgaW50ZWxfY3J0 Y190b19zaGFyZWRfZHBsbChjcnRjKSA9PSBwbGwpIHsKPiAgCQkJCXBsbC0+YWN0aXZlKys7Cj4g IAkJCQlwbGwtPmNvbmZpZy5jcnRjX21hc2sgfD0gMSA8PCBjcnRjLT5waXBlOwo+ICAJCQl9Cj4g QEAgLTEzNzY1LDcgKzEzNzY0LDcgQEAgdm9pZCBpbnRlbF9tb2Rlc2V0X3NldHVwX2h3X3N0YXRl KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkgKiBjaGVja2luZyBldmVyeXdoZXJlLgo+ICAJ ICovCj4gIAlmb3JfZWFjaF9pbnRlbF9jcnRjKGRldiwgY3J0Yykgewo+IC0JCWlmIChjcnRjLT5h Y3RpdmUgJiYgaTkxNS5mYXN0Ym9vdCkgewo+ICsJCWlmIChjcnRjLT5iYXNlLnN0YXRlLT5hY3Rp dmUgJiYgaTkxNS5mYXN0Ym9vdCkgewo+ICAJCQlpbnRlbF9tb2RlX2Zyb21fcGlwZV9jb25maWco JmNydGMtPmJhc2UubW9kZSwKPiAgCQkJCQkJICAgIGNydGMtPmNvbmZpZyk7Cj4gIAkJCURSTV9E RUJVR19LTVMoIltDUlRDOiVkXSBmb3VuZCBhY3RpdmUgbW9kZTogIiwKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwLmMKPiBpbmRleCAzM2Q1ODc3Li5lNGY0NDdmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcC5jCj4gQEAgLTM5NzQsNyArMzk3NCw3IEBAIGludGVsX2RwX2NoZWNrX2xpbmtfc3RhdHVz KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAlpZiAoV0FSTl9PTighaW50ZWxfZW5jb2Rl ci0+YmFzZS5jcnRjKSkKPiAgCQlyZXR1cm47Cj4gIAo+IC0JaWYgKCF0b19pbnRlbF9jcnRjKGlu dGVsX2VuY29kZXItPmJhc2UuY3J0YyktPmFjdGl2ZSkKPiArCWlmICghaW50ZWxfZW5jb2Rlci0+ YmFzZS5jcnRjLT5zdGF0ZS0+YWN0aXZlKQo+ICAJCXJldHVybjsKPiAgCj4gIAkvKiBUcnkgdG8g cmVhZCByZWNlaXZlciBzdGF0dXMgaWYgdGhlIGxpbmsgYXBwZWFycyB0byBiZSB1cCAqLwo+IEBA IC00OTU1LDcgKzQ5NTUsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9zZXRfZHJyc19zdGF0ZShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgcmVmcmVzaF9yYXRlKQo+ICAJCXJldHVybjsKPiAg CX0KPiAgCj4gLQlpZiAoIWludGVsX2NydGMtPmFjdGl2ZSkgewo+ICsJaWYgKCFpbnRlbF9jcnRj LT5iYXNlLnN0YXRlLT5hY3RpdmUpIHsKPiAgCQlEUk1fREVCVUdfS01TKCJlRFAgZW5jb2RlciBk aXNhYmxlZC4gQ1JUQyBub3QgQWN0aXZlXG4iKTsKPiAgCQlyZXR1cm47Cj4gIAl9Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCBmZjc5ZGNhLi5kMTk0OTQ4IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtNDQzLDEyICs0NDMsNiBAQCBzdHJ1Y3QgaW50ZWxfY3J0 YyB7Cj4gIAllbnVtIHBpcGUgcGlwZTsKPiAgCWVudW0gcGxhbmUgcGxhbmU7Cj4gIAl1OCBsdXRf clsyNTZdLCBsdXRfZ1syNTZdLCBsdXRfYlsyNTZdOwo+IC0JLyoKPiAtCSAqIFdoZXRoZXIgdGhl IGNydGMgYW5kIHRoZSBjb25uZWN0ZWQgb3V0cHV0IHBpcGVsaW5lIGlzIGFjdGl2ZS4gSW1wbGll cwo+IC0JICogdGhhdCBjcnRjLT5lbmFibGVkIGlzIHNldCwgaS5lLiB0aGUgY3VycmVudCBtb2Rl IGNvbmZpZ3VyYXRpb24gaGFzCj4gLQkgKiBzb21lIG91dHB1dHMgY29ubmVjdGVkIHRvIHRoaXMg Y3J0Yy4KPiAtCSAqLwo+IC0JYm9vbCBhY3RpdmU7Cj4gIAl1bnNpZ25lZCBsb25nIGVuYWJsZWRf cG93ZXJfZG9tYWluczsKPiAgCWJvb2wgcHJpbWFyeV9lbmFibGVkOyAvKiBpcyB0aGUgcHJpbWFy eSBwbGFuZSAocGFydGlhbGx5KSB2aXNpYmxlPyAqLwo+ICAJYm9vbCBsb3dmcmVxX2F2YWlsOwo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYwo+IGluZGV4IDIzNGE2OTkuLjE5MmQyMjkgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMKPiBAQCAtNTQxLDcgKzU0MSw3IEBAIHN0 YXRpYyBib29sIGludGVsX2ZiZGV2X2luaXRfYmlvcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ ICAJZm9yX2VhY2hfY3J0YyhkZXYsIGNydGMpIHsKPiAgCQlpbnRlbF9jcnRjID0gdG9faW50ZWxf Y3J0YyhjcnRjKTsKPiAgCj4gLQkJaWYgKCFpbnRlbF9jcnRjLT5hY3RpdmUgfHwgIWNydGMtPnBy aW1hcnktPmZiKSB7Cj4gKwkJaWYgKCFpbnRlbF9jcnRjLT5iYXNlLnN0YXRlLT5hY3RpdmUgfHwg IWNydGMtPnByaW1hcnktPmZiKSB7Cj4gIAkJCURSTV9ERUJVR19LTVMoInBpcGUgJWMgbm90IGFj dGl2ZSBvciBubyBmYiwgc2tpcHBpbmdcbiIsCj4gIAkJCQkgICAgICBwaXBlX25hbWUoaW50ZWxf Y3J0Yy0+cGlwZSkpOwo+ICAJCQljb250aW51ZTsKPiBAQCAtNTY3LDcgKzU2Nyw3IEBAIHN0YXRp YyBib29sIGludGVsX2ZiZGV2X2luaXRfYmlvcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAK PiAgCQlpbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAgCj4gLQkJaWYgKCFpbnRl bF9jcnRjLT5hY3RpdmUpIHsKPiArCQlpZiAoIWludGVsX2NydGMtPmJhc2Uuc3RhdGUtPmFjdGl2 ZSkgewo+ICAJCQlEUk1fREVCVUdfS01TKCJwaXBlICVjIG5vdCBhY3RpdmUsIHNraXBwaW5nXG4i LAo+ICAJCQkJICAgICAgcGlwZV9uYW1lKGludGVsX2NydGMtPnBpcGUpKTsKPiAgCQkJY29udGlu dWU7Cj4gQEAgLTYzMiw3ICs2MzIsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9mYmRldl9pbml0X2Jp b3Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCWZvcl9lYWNoX2NydGMoZGV2LCBjcnRjKSB7 Cj4gIAkJaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gIAo+IC0JCWlmICghaW50 ZWxfY3J0Yy0+YWN0aXZlKQo+ICsJCWlmICghaW50ZWxfY3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZl KQo+ICAJCQljb250aW51ZTsKPiAgCj4gIAkJV0FSTighY3J0Yy0+cHJpbWFyeS0+ZmIsCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYwo+IGluZGV4IDgyM2QxZDkuLjA1MGE2OGUgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jCj4gQEAgLTg1Miw3ICs4NTIsNyBA QCBpbnQgaW50ZWxfb3ZlcmxheV9zd2l0Y2hfb2ZmKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVy bGF5KQo+ICBzdGF0aWMgaW50IGNoZWNrX292ZXJsYXlfcG9zc2libGVfb25fY3J0YyhzdHJ1Y3Qg aW50ZWxfb3ZlcmxheSAqb3ZlcmxheSwKPiAgCQkJCQkgIHN0cnVjdCBpbnRlbF9jcnRjICpjcnRj KQo+ICB7Cj4gLQlpZiAoIWNydGMtPmFjdGl2ZSkKPiArCWlmICghY3J0Yy0+YmFzZS5zdGF0ZS0+ YWN0aXZlKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAKPiAgCS8qIGNhbid0IHVzZSB0aGUgb3Zl cmxheSB3aXRoIGRvdWJsZSB3aWRlIHBpcGUgKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBp bmRleCA0ZjA0ZmFiLi5kOWIxMTVlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3BtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gQEAg LTgyMiw3ICs4MjIsNyBAQCBzdGF0aWMgdWludDhfdCB2bHZfY29tcHV0ZV9kcmFpbl9sYXRlbmN5 KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCSAqIEZJWE1FIHRoZSBwbGFuZSBtaWdodCBoYXZl IGFuIGZiCj4gIAkgKiBidXQgYmUgaW52aXNpYmxlIChlZy4gZHVlIHRvIGNsaXBwaW5nKQo+ICAJ ICovCj4gLQlpZiAoIWludGVsX2NydGMtPmFjdGl2ZSB8fCAhcGxhbmUtPnN0YXRlLT5mYikKPiAr CWlmICghaW50ZWxfY3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZlIHx8ICFwbGFuZS0+c3RhdGUtPmZi KQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCWlmIChXQVJOKGNsb2NrID09IDAsICJQaXhlbCBjbG9j ayBpcyB6ZXJvIVxuIikpCj4gQEAgLTMwODAsNyArMzA4MCw3IEBAIHN0YXRpYyB2b2lkIHNrbF9m bHVzaF93bV92YWx1ZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJICog cmUtYWxsb2NhdGUgdGhlIGZyZWVkIHNwYWNlIHdpdGhvdXQgdGhpcyBwaXBlIGZldGNoaW5nIGZy b20gaXQuCj4gIAkgKi8KPiAgCWZvcl9lYWNoX2ludGVsX2NydGMoZGV2LCBjcnRjKSB7Cj4gLQkJ aWYgKCFjcnRjLT5hY3RpdmUpCj4gKwkJaWYgKCFjcnRjLT5iYXNlLnN0YXRlLT5hY3RpdmUpCj4g IAkJCWNvbnRpbnVlOwo+ICAKPiAgCQlwaXBlID0gY3J0Yy0+cGlwZTsKPiBAQCAtMzEwMyw3ICsz MTAzLDcgQEAgc3RhdGljIHZvaWQgc2tsX2ZsdXNoX3dtX3ZhbHVlcyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkgKiBzcGFjZSBpcyBub3QgdXNlZCBhbnltb3JlLgo+ICAJ ICovCj4gIAlmb3JfZWFjaF9pbnRlbF9jcnRjKGRldiwgY3J0Yykgewo+IC0JCWlmICghY3J0Yy0+ YWN0aXZlKQo+ICsJCWlmICghY3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZlKQo+ICAJCQljb250aW51 ZTsKPiAgCj4gIAkJcGlwZSA9IGNydGMtPnBpcGU7Cj4gQEAgLTMxMjYsNyArMzEyNiw3IEBAIHN0 YXRpYyB2b2lkIHNrbF9mbHVzaF93bV92YWx1ZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ICAJICogd2lsbCBqdXN0IGdldCBtb3JlIEREQiBzcGFjZSB3aXRoIHRoZSBjb3Jy ZWN0IFdNIHZhbHVlcy4KPiAgCSAqLwo+ICAJZm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYsIGNydGMp IHsKPiAtCQlpZiAoIWNydGMtPmFjdGl2ZSkKPiArCQlpZiAoIWNydGMtPmJhc2Uuc3RhdGUtPmFj dGl2ZSkKPiAgCQkJY29udGludWU7Cj4gIAo+ICAJCXBpcGUgPSBjcnRjLT5waXBlOwo+IEBAIC0z MTkxLDcgKzMxOTEsNyBAQCBzdGF0aWMgdm9pZCBza2xfdXBkYXRlX290aGVyX3BpcGVfd20oc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQlpZiAodGhpc19jcnRjLT5waXBlID09IGludGVsX2Ny dGMtPnBpcGUpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAtCQlpZiAoIWludGVsX2NydGMtPmFjdGl2 ZSkKPiArCQlpZiAoIWludGVsX2NydGMtPmJhc2Uuc3RhdGUtPmFjdGl2ZSkKPiAgCQkJY29udGlu dWU7Cj4gIAo+ICAJCXdtX2NoYW5nZWQgPSBza2xfdXBkYXRlX3BpcGVfd20oJmludGVsX2NydGMt PmJhc2UsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiBpbmRleCA3MDUxZGE3Li43 YWQ5YjdkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiBAQCAtMTI0Miw5 ICsxMjQyLDkgQEAgZmluaXNoOgo+ICAJICovCj4gIAlzdGF0ZS0+aGlkZXNfcHJpbWFyeSA9IGZi ICE9IE5VTEwgJiYgZHJtX3JlY3RfZXF1YWxzKGRzdCwgY2xpcCkgJiYKPiAgCQkhY29sb3JrZXlf ZW5hYmxlZChpbnRlbF9wbGFuZSk7Cj4gLQlXQVJOX09OKHN0YXRlLT5oaWRlc19wcmltYXJ5ICYm ICFzdGF0ZS0+dmlzaWJsZSAmJiBpbnRlbF9jcnRjLT5hY3RpdmUpOwo+ICsJV0FSTl9PTihzdGF0 ZS0+aGlkZXNfcHJpbWFyeSAmJiAhc3RhdGUtPnZpc2libGUgJiYgc3RhdGUtPmJhc2UuY3J0Yy0+ c3RhdGUtPmFjdGl2ZSk7Cj4gIAo+IC0JaWYgKGludGVsX2NydGMtPmFjdGl2ZSkgewo+ICsJaWYg KGludGVsX2NydGMtPmJhc2Uuc3RhdGUtPmFjdGl2ZSkgewo+ICAJCWlmIChpbnRlbF9jcnRjLT5w cmltYXJ5X2VuYWJsZWQgPT0gc3RhdGUtPmhpZGVzX3ByaW1hcnkpCj4gIAkJCWludGVsX2NydGMt PmF0b21pYy53YWl0X2Zvcl9mbGlwcyA9IHRydWU7Cj4gIAo+IEBAIC0xMjg2LDcgKzEyODYsNyBA QCBpbnRlbF9jb21taXRfc3ByaXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJ cGxhbmUtPmZiID0gc3RhdGUtPmJhc2UuZmI7Cj4gIAlpbnRlbF9wbGFuZS0+b2JqID0gb2JqOwo+ ICAKPiAtCWlmIChpbnRlbF9jcnRjLT5hY3RpdmUpIHsKPiArCWlmIChjcnRjLT5zdGF0ZS0+YWN0 aXZlKSB7Cj4gIAkJaW50ZWxfY3J0Yy0+cHJpbWFyeV9lbmFibGVkID0gIXN0YXRlLT5oaWRlc19w cmltYXJ5Owo+ICAKPiAgCQlpZiAoc3RhdGUtPnZpc2libGUpIHsKPiAtLSAKPiAxLjguNS4xCj4g Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRl bC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0 dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0t IApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==