From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: Re: [PATCH v2 3/5] drm/i915: Move SST DP link retraining into the ->post_hotplug() hook Date: Wed, 28 Feb 2018 15:10:24 -0500 Message-ID: <1519848624.26611.10.camel@redhat.com> References: <20180117192149.17760-1-ville.syrjala@linux.intel.com> <20180117192149.17760-3-ville.syrjala@linux.intel.com> <1517354219.4938.24.camel@redhat.com> <20180131132710.GK5453@intel.com> <20180228071731.GB2386@intel.com> <1519844854.26611.4.camel@redhat.com> <20180228192730.GA11481@intel.com> <1519846866.26611.8.camel@redhat.com> <20180228195756.GB11481@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qt0-f181.google.com (mail-qt0-f181.google.com [209.85.216.181]) by gabe.freedesktop.org (Postfix) with ESMTPS id F35C06EB44 for ; Wed, 28 Feb 2018 20:10:28 +0000 (UTC) Received: by mail-qt0-f181.google.com with SMTP id z14so4644780qti.2 for ; Wed, 28 Feb 2018 12:10:28 -0800 (PST) In-Reply-To: <20180228195756.GB11481@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Manasi Navare Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAyMDE4LTAyLTI4IGF0IDExOjU3IC0wODAwLCBNYW5hc2kgTmF2YXJlIHdyb3RlOgo+ IE9uIFdlZCwgRmViIDI4LCAyMDE4IGF0IDAyOjQxOjA2UE0gLTA1MDAsIEx5dWRlIFBhdWwgd3Jv dGU6Cj4gPiBPbiBXZWQsIDIwMTgtMDItMjggYXQgMTE6MjcgLTA4MDAsIE1hbmFzaSBOYXZhcmUg d3JvdGU6Cj4gPiA+IE9uIFdlZCwgRmViIDI4LCAyMDE4IGF0IDAyOjA3OjM0UE0gLTA1MDAsIEx5 dWRlIFBhdWwgd3JvdGU6Cj4gPiA+ID4gCj4gPiA+ID4gT24gVHVlLCAyMDE4LTAyLTI3IGF0IDIz OjE3IC0wODAwLCBNYW5hc2kgTmF2YXJlIHdyb3RlOgo+ID4gPiA+ID4gVmlsbGUsICB0aGFua3Mg Zm9yIHRoZSBwYXRjaCBhbmQKPiA+ID4gPiA+IFNvcnJ5IGZvciBub3QgYmVpbmcgYWJsZSB0byBy ZXZpZXcgdGhpcyBlYXJsaWVyLgo+ID4gPiA+ID4gUGxlYXNlIGZpbmQgc29tZSBjb21tZW50cyBi ZWxvdzoKPiA+ID4gPiA+IAo+ID4gPiA+ID4gT24gV2VkLCBKYW4gMzEsIDIwMTggYXQgMDM6Mjc6 MTBQTSArMDIwMCwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+ID4gPiA+ID4gPiBPbiBUdWUsIEph biAzMCwgMjAxOCBhdCAwNjoxNjo1OVBNIC0wNTAwLCBMeXVkZSBQYXVsIHdyb3RlOgo+ID4gPiA+ ID4gPiA+IE9uIFdlZCwgMjAxOC0wMS0xNyBhdCAyMToyMSArMDIwMCwgVmlsbGUgU3lyamFsYSB3 cm90ZToKPiA+ID4gPiA+ID4gPiA+IEZyb206IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFs YUBsaW51eC5pbnRlbC5jb20+Cj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+IERvaW5n IGxpbmsgcmV0cmFpbmluZyBmcm9tIHRoZSBzaG9ydCBwdWxzZSBoYW5kbGVyIGlzCj4gPiA+ID4g PiA+ID4gPiBwcm9ibGVtYXRpYwo+ID4gPiA+ID4gPiA+ID4gc2luY2UKPiA+ID4gPiA+ID4gPiA+ IHRoYXQgbWlnaHQgaW50cm9kdWNlIGRlYWRsb2NrcyB3aXRoIE1TVCBzaWRlYmFuZCBwcm9jZXNz aW5nLgo+ID4gPiA+ID4gPiA+ID4gQ3VycmVudGx5Cj4gPiA+ID4gPiA+ID4gPiB3ZSBkb24ndCBy ZXRyYWluIE1TVCBsaW5rcyBmcm9tIHRoaXMgY29kZSwgYnV0IHdlIHdhbnQgdG8KPiA+ID4gPiA+ ID4gPiA+IGNoYW5nZQo+ID4gPiA+ID4gPiA+ID4gdGhhdC4KPiA+ID4gPiA+ID4gPiA+IFNvIGJl dHRlciB0byBtb3ZlIHRoZSBlbnRpcmUgdGhpbmcgdG8gdGhlIGhvdHBsdWcgd29yay4gV2UgY2Fu Cj4gPiA+ID4gPiA+ID4gPiB1dGlsaXplCj4gPiA+ID4gPiA+ID4gPiB0aGUgbmV3IGVuY29kZXIt PmhvdHBsdWcoKSBob29rIGZvciB0aGlzLgo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4g PiBUaGUgb25seSB0aGluZyB3ZSBsZWF2ZSBpbiB0aGUgc2hvcnQgcHVsc2UgaGFuZGxlciBpcyB0 aGUgbGluawo+ID4gPiA+ID4gPiA+ID4gc3RhdHVzCj4gPiA+ID4gPiA+ID4gPiBjaGVjay4gVGhh dCBvbmUgc3RpbGwgZGVwZW5kcyBvbiB0aGUgbGluayBwYXJhbWV0ZXJzIHN0b3JlZAo+ID4gPiA+ ID4gPiA+ID4gdW5kZXIKPiA+ID4gPiA+ID4gPiA+IGludGVsX2RwLCBzbyBubyBsb2NraW5nIGFy b3VuZCB0aGF0IGJ1dCByYWNlcyBzaG91bGQgYmUgbW9zdGx5Cj4gPiA+ID4gPiA+ID4gPiBoYXJt bGVzcwo+ID4gPiA+ID4gPiA+ID4gYXMgdGhlIGFjdHVhbCByZXRyYWluaW5nIGNvZGUgd2lsbCBy ZWNoZWNrIHRoZSBsaW5rIHN0YXRlIGlmCj4gPiA+ID4gPiA+ID4gPiB3ZQo+ID4gPiA+ID4gPiA+ ID4gZW5kIHVwIHRoZXJlIGJ5IG1pc3Rha2UuCj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4g PiA+IHYyOiBSZWJhc2UgZHVlIHRvIC0+cG9zdF9ob3RwbHVnKCkgbm93IGJlaW5nIGp1c3QgLT5o b3RwbHVnKCkKPiA+ID4gPiA+ID4gPiA+ICAgICBDaGVjayB0aGUgY29ubmVjdG9yIHR5cGUgdG8g ZmlndXJlIG91dCBpZiB3ZSBzaG91bGQgZG8KPiA+ID4gPiA+ID4gPiA+ICAgICB0aGUgSERNSSB0 aGluZyBvciB0aGUgRFAgdGhpbmsgZm9yIERESQo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ ID4gPiBDYzogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KPiA+ID4g PiA+ID4gPiA+IENjOiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXgu aW50ZWwuY29tPgo+ID4gPiA+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOk IDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+ID4gPiA+ID4gPiA+IC0tLQo+ID4g PiA+ID4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jIHwgIDEwICstCj4g PiA+ID4gPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgfCAxOTYKPiA+ ID4gPiA+ID4gPiA+ICsrKysrKysrKysrKysrKysrKysrKystLQo+ID4gPiA+ID4gPiA+ID4gLS0t LQo+ID4gPiA+ID4gPiA+ID4gLS0tLS0tLS0KPiA+ID4gPiA+ID4gPiA+IC0tLQo+ID4gPiA+ID4g PiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIHwgICAyICsKPiA+ID4gPiA+ ID4gPiA+ICAzIGZpbGVzIGNoYW5nZWQsIDEyMCBpbnNlcnRpb25zKCspLCA4OCBkZWxldGlvbnMo LSkKPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPiA+ID4gPiA+ID4gPiBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RkaS5jCj4gPiA+ID4gPiA+ID4gPiBpbmRleCAyNTc5M2JkYzY5MmYuLjVm M2Q1OGYxYWU2ZSAxMDA2NDQKPiA+ID4gPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RkaS5jCj4gPiA+ID4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kZGkuYwo+ID4gPiA+ID4gPiA+ID4gQEAgLTI4ODAsNyArMjg4MCwxMCBAQCBzdGF0 aWMgYm9vbCBpbnRlbF9kZGlfaG90cGx1ZyhzdHJ1Y3QKPiA+ID4gPiA+ID4gPiA+IGludGVsX2Vu Y29kZXIKPiA+ID4gPiA+ID4gPiA+ICplbmNvZGVyLAo+ID4gPiA+ID4gPiA+ID4gIAlkcm1fbW9k ZXNldF9hY3F1aXJlX2luaXQoJmN0eCwgMCk7Cj4gPiA+ID4gPiA+ID4gPiAgCj4gPiA+ID4gPiA+ ID4gPiAgCWZvciAoOzspIHsKPiA+ID4gPiA+ID4gPiA+IC0JCXJldCA9IGludGVsX2hkbWlfcmVz ZXRfbGluayhlbmNvZGVyLCAmY3R4KTsKPiA+ID4gPiA+ID4gPiA+ICsJCWlmIChjb25uZWN0b3It PmJhc2UuY29ubmVjdG9yX3R5cGUgPT0KPiA+ID4gPiA+ID4gPiA+IERSTV9NT0RFX0NPTk5FQ1RP Ul9IRE1JQSkKPiA+ID4gPiA+ID4gPiA+ICsJCQlyZXQgPSBpbnRlbF9oZG1pX3Jlc2V0X2xpbmso ZW5jb2RlciwKPiA+ID4gPiA+ID4gPiA+ICZjdHgpOwo+ID4gPiA+ID4gPiA+ID4gKwkJZWxzZQo+ ID4gPiA+ID4gPiA+ID4gKwkJCXJldCA9IGludGVsX2RwX3JldHJhaW5fbGluayhlbmNvZGVyLAo+ ID4gPiA+ID4gPiA+ID4gJmN0eCk7Cj4gPiA+ID4gPiA+ID4gPiAgCj4gPiA+ID4gPiA+ID4gPiAg CQlpZiAocmV0ID09IC1FREVBRExLKSB7Cj4gPiA+ID4gPiA+ID4gPiAgCQkJZHJtX21vZGVzZXRf YmFja29mZigmY3R4KTsKPiA+ID4gPiA+ID4gPiA+IEBAIC0zMDA3LDEwICszMDEwLDcgQEAgdm9p ZCBpbnRlbF9kZGlfaW5pdChzdHJ1Y3QKPiA+ID4gPiA+ID4gPiA+IGRybV9pOTE1X3ByaXZhdGUK PiA+ID4gPiA+ID4gPiA+ICpkZXZfcHJpdiwKPiA+ID4gPiA+ID4gPiA+IGVudW0gcG9ydCBwb3J0 KQo+ID4gPiA+ID4gPiA+ID4gIAlkcm1fZW5jb2Rlcl9pbml0KCZkZXZfcHJpdi0+ZHJtLCBlbmNv ZGVyLAo+ID4gPiA+ID4gPiA+ID4gJmludGVsX2RkaV9mdW5jcywKPiA+ID4gPiA+ID4gPiA+ICAJ CQkgRFJNX01PREVfRU5DT0RFUl9UTURTLCAiRERJICVjIiwKPiA+ID4gPiA+ID4gPiA+IHBvcnRf bmFtZShwb3J0KSk7Cj4gPiA+ID4gPiA+ID4gPiAgCj4gPiA+ID4gPiA+ID4gPiAtCWlmIChpbml0 X2hkbWkpCj4gPiA+ID4gPiA+ID4gPiAtCQlpbnRlbF9lbmNvZGVyLT5ob3RwbHVnID0gaW50ZWxf ZGRpX2hvdHBsdWc7Cj4gPiA+ID4gPiA+ID4gPiAtCWVsc2UKPiA+ID4gPiA+ID4gPiA+IC0JCWlu dGVsX2VuY29kZXItPmhvdHBsdWcgPQo+ID4gPiA+ID4gPiA+ID4gaW50ZWxfZW5jb2Rlcl9ob3Rw bHVnOwo+ID4gPiA+ID4gPiA+ID4gKwlpbnRlbF9lbmNvZGVyLT5ob3RwbHVnID0gaW50ZWxfZGRp X2hvdHBsdWc7Cj4gPiA+ID4gPiA+ID4gPiAgCWludGVsX2VuY29kZXItPmNvbXB1dGVfb3V0cHV0 X3R5cGUgPQo+ID4gPiA+ID4gPiA+ID4gaW50ZWxfZGRpX2NvbXB1dGVfb3V0cHV0X3R5cGU7Cj4g PiA+ID4gPiA+ID4gPiAgCWludGVsX2VuY29kZXItPmNvbXB1dGVfY29uZmlnID0KPiA+ID4gPiA+ ID4gPiA+IGludGVsX2RkaV9jb21wdXRlX2NvbmZpZzsKPiA+ID4gPiA+ID4gPiA+ICAJaW50ZWxf ZW5jb2Rlci0+ZW5hYmxlID0gaW50ZWxfZW5hYmxlX2RkaTsKPiA+ID4gPiA+ID4gPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiA+ID4gPiA+ID4gPiBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiA+ID4gPiA+ID4gPiA+IGluZGV4IDZi YmYxNDQxMGMyYS4uMTUyMDE2ZTA5YTExIDEwMDY0NAo+ID4gPiA+ID4gPiA+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gPiA+ID4gPiA+ID4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gPiA+ID4gPiA+ID4gQEAgLTQyNzUsMTIgKzQy NzUsODMgQEAgaW50ZWxfZHBfY2hlY2tfbXN0X3N0YXR1cyhzdHJ1Y3QKPiA+ID4gPiA+ID4gPiA+ IGludGVsX2RwCj4gPiA+ID4gPiA+ID4gPiAqaW50ZWxfZHApCj4gPiA+ID4gPiA+ID4gPiAgCXJl dHVybiAtRUlOVkFMOwo+ID4gPiA+ID4gPiA+ID4gIH0KPiA+ID4gPiA+ID4gPiA+ICAKPiA+ID4g PiA+ID4gPiA+IC1zdGF0aWMgdm9pZAo+ID4gPiA+ID4gPiA+ID4gLWludGVsX2RwX3JldHJhaW5f bGluayhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ID4gPiA+ID4gPiA+ID4gK3N0YXRpYyBi b29sCj4gPiA+ID4gPiA+ID4gPiAraW50ZWxfZHBfbmVlZHNfbGlua19yZXRyYWluKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHApCj4gPiA+ID4gPiA+ID4gPiArewo+ID4gPiA+ID4gPiA+ID4gKwl1 OCBsaW5rX3N0YXR1c1tEUF9MSU5LX1NUQVRVU19TSVpFXTsKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ ID4gPiA+ID4gPiA+ICsJaWYgKCFpbnRlbF9kcF9nZXRfbGlua19zdGF0dXMoaW50ZWxfZHAsIGxp bmtfc3RhdHVzKSkKPiA+ID4gPiA+ID4gPiA+IHsKPiA+ID4gPiA+ID4gPiA+ICsJCURSTV9FUlJP UigiRmFpbGVkIHRvIGdldCBsaW5rIHN0YXR1c1xuIik7Cj4gPiA+ID4gPiA+ID4gPiArCQlyZXR1 cm4gZmFsc2U7Cj4gPiA+ID4gPiA+ID4gPiArCX0KPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ID4gPiA+ICsJLyoKPiA+ID4gPiA+ID4gPiA+ICsJICogVmFsaWRhdGUgdGhlIGNhY2hlZCB2YWx1 ZXMgb2YgaW50ZWxfZHAtPmxpbmtfcmF0ZQo+ID4gPiA+ID4gPiA+ID4gYW5kCj4gPiA+ID4gPiA+ ID4gPiArCSAqIGludGVsX2RwLT5sYW5lX2NvdW50IGJlZm9yZSBhdHRlbXB0aW5nIHRvIHJldHJh aW4uCj4gPiA+ID4gPiA+ID4gPiArCSAqLwo+ID4gPiA+ID4gPiA+ID4gKwlpZiAoIWludGVsX2Rw X2xpbmtfcGFyYW1zX3ZhbGlkKGludGVsX2RwLCBpbnRlbF9kcC0KPiA+ID4gPiA+ID4gPiA+ID4g bGlua19yYXRlLAo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiArCQkJCQlpbnRlbF9k cC0KPiA+ID4gPiA+ID4gPiA+ID5sYW5lX2NvdW50KSkKPiA+ID4gPiA+ID4gPiA+ICsJCXJldHVy biBmYWxzZTsKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICsJLyogUmV0cmFpbiBp ZiBDaGFubmVsIEVRIG9yIENSIG5vdCBvayAqLwo+ID4gPiA+ID4gPiA+ID4gKwlyZXR1cm4gIWRy bV9kcF9jaGFubmVsX2VxX29rKGxpbmtfc3RhdHVzLCBpbnRlbF9kcC0KPiA+ID4gPiA+ID4gPiA+ ID4gbGFuZV9jb3VudCk7Cj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ICt9Cj4gPiA+ ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArLyoKPiA+ID4gPiA+ID4gPiA+ICsgKiBJZiBk aXNwbGF5IGlzIG5vdyBjb25uZWN0ZWQgY2hlY2sgbGlua3Mgc3RhdHVzLAo+ID4gPiA+ID4gPiA+ ID4gKyAqIHRoZXJlIGhhcyBiZWVuIGtub3duIGlzc3VlcyBvZiBsaW5rIGxvc3MgdHJpZ2dlcmlu Zwo+ID4gPiA+ID4gPiA+ID4gKyAqIGxvbmcgcHVsc2UuCj4gPiA+ID4gPiA+ID4gPiArICoKPiA+ ID4gPiA+ID4gPiA+ICsgKiBTb21lIHNpbmtzIChlZy4gQVNVUyBQQjI4N1EpIHNlZW0gdG8gcGVy Zm9ybSBzb21lCj4gPiA+ID4gPiA+ID4gPiArICogd2VpcmQgSFBEIHBpbmcgcG9uZyBkdXJpbmcg bW9kZXNldHMuIFNvIHdlIGNhbiBhcHBhcmVudGx5Cj4gPiA+ID4gPiA+ID4gPiArICogZW5kIHVw IHdpdGggSFBEIGdvaW5nIGxvdyBkdXJpbmcgYSBtb2Rlc2V0LCBhbmQgdGhlbgo+ID4gPiA+ID4g PiA+ID4gKyAqIGdvaW5nIGJhY2sgdXAgc29vbiBhZnRlci4gQW5kIG9uY2UgdGhhdCBoYXBwZW5z IHdlIG11c3QKPiA+ID4gPiA+ID4gPiA+ICsgKiByZXRyYWluIHRoZSBsaW5rIHRvIGdldCBhIHBp Y3R1cmUuIFRoYXQncyBpbiBjYXNlIG5vCj4gPiA+ID4gPiA+ID4gPiArICogdXNlcnNwYWNlIGNv bXBvbmVudCByZWFjdGVkIHRvIGludGVybWl0dGVudCBIUEQgZGlwLgo+ID4gPiA+ID4gPiA+ID4g KyAqLwo+ID4gPiA+ID4gPiA+ID4gK2ludCBpbnRlbF9kcF9yZXRyYWluX2xpbmsoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiA+ID4gPiA+ID4gPiArCQkJICBzdHJ1Y3QgZHJtX21v ZGVzZXRfYWNxdWlyZV9jdHgKPiA+ID4gPiA+ID4gPiA+ICpjdHgpCj4gPiA+ID4gPiA+ID4gPiAg ewo+ID4gPiA+ID4gPiA+ID4gLQlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciA9Cj4gPiA+ ID4gPiA+ID4gPiAmZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApLQo+ID4gPiA+ID4gPiA+ID4gPiBi YXNlOwo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0KPiA+ID4gPiA+ID4gPiA+ID4gYmFz ZS5kZXYpOwo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiAtCXN0cnVjdCBpbnRlbF9j cnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhlbmNvZGVyLQo+ID4gPiA+ID4gPiA+ID4gPiBiYXNl LmNydGMpOwo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiArCXN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoJmVuY29kZXItCj4gPiA+ID4gPiA+ID4gPiA+ IGJhc2UpOwo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiArCXN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmNvbm5lY3RvciA9IGludGVsX2RwLQo+ID4gPiA+ID4gPiA+ID4gPiBhdHRhY2hl ZF9jb25uZWN0b3I7Cj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ICsJc3RydWN0IGRy bV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGU7Cj4gPiA+ID4gPiA+ID4gPiArCXN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ID4gPiA+ID4gPiA+ID4gKwlzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YzsKPiA+ID4gPiA+ID4gPiA+ICsJaW50IHJldDsKPiA+ID4gPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ID4gPiA+ICsJLyogRklYTUUgaGFuZGxlIHRoZSBNU1QgY29ubmVjdG9ycyBh cyB3ZWxsICovCj4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArCWlmICghY29ubmVj dG9yIHx8IGNvbm5lY3Rvci0+YmFzZS5zdGF0dXMgIT0KPiA+ID4gPiA+ID4gPiA+IGNvbm5lY3Rv cl9zdGF0dXNfY29ubmVjdGVkKQo+ID4gPiA+ID4gPiA+ID4gKwkJcmV0dXJuIDA7Cj4gPiA+ID4g PiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArCXJldCA9IGRybV9tb2Rlc2V0X2xvY2soJmRldl9w cml2LQo+ID4gPiA+ID4gPiA+ID4gPiBkcm0ubW9kZV9jb25maWcuY29ubmVjdGlvbl9tdXRleCwK PiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gY3R4KTsKPiA+ID4gPiA+ID4gPiA+ICsJ aWYgKHJldCkKPiA+ID4gPiA+ID4gPiA+ICsJCXJldHVybiByZXQ7Cj4gPiA+ID4gPiA+ID4gPiAr Cj4gPiA+ID4gPiA+ID4gPiArCWNvbm5fc3RhdGUgPSBjb25uZWN0b3ItPmJhc2Uuc3RhdGU7Cj4g PiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArCWNydGMgPSB0b19pbnRlbF9jcnRjKGNv bm5fc3RhdGUtPmNydGMpOwo+ID4gPiA+ID4gPiA+ID4gKwlpZiAoIWNydGMpCj4gPiA+ID4gPiA+ ID4gPiArCQlyZXR1cm4gMDsKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICsJcmV0 ID0gZHJtX21vZGVzZXRfbG9jaygmY3J0Yy0+YmFzZS5tdXRleCwgY3R4KTsKPiA+ID4gPiA+ID4g PiA+ICsJaWYgKHJldCkKPiA+ID4gPiA+ID4gPiA+ICsJCXJldHVybiByZXQ7Cj4gPiA+ID4gPiA+ ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArCWNydGNfc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRl KGNydGMtPmJhc2Uuc3RhdGUpOwo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gKwlX QVJOX09OKCFpbnRlbF9jcnRjX2hhc19kcF9lbmNvZGVyKGNydGNfc3RhdGUpKTsKPiA+ID4gPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICsJaWYgKCFjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkK PiA+ID4gPiA+ID4gPiA+ICsJCXJldHVybiAwOwo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4g PiA+ID4gKwlpZiAoY29ubl9zdGF0ZS0+Y29tbWl0ICYmCj4gPiA+ID4gPiA+ID4gPiArCSAgICAh dHJ5X3dhaXRfZm9yX2NvbXBsZXRpb24oJmNvbm5fc3RhdGUtPmNvbW1pdC0KPiA+ID4gPiA+ID4g PiA+ID4gaHdfZG9uZSkpCj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ICsJCXJldHVy biAwOwo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gKwlpZiAoIWludGVsX2RwX25l ZWRzX2xpbmtfcmV0cmFpbihpbnRlbF9kcCkpCj4gPiA+ID4gPiA+ID4gPiArCQlyZXR1cm4gMDsK PiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiBOQUssIHRoaXMgZGVmaW5pdGVseSB3b24ndCB3 b3JrIGZvciBpbXBsZW1lbnRpbmcgTVNUIHJldHJhaW5pbmcuCj4gPiA+ID4gPiA+ID4gVGhlcmUn cwo+ID4gPiA+ID4gPiA+IHNvbWUKPiA+ID4gPiA+ID4gPiBwcmV0dHkgaHVnZSBkaWZmZXJlbmNl cyB3aXRoIGhvdyByZXRyYWluaW5nIG5lZWRzIHRvIGJlIGhhbmRsZWQKPiA+ID4gPiA+ID4gPiBv bgo+ID4gPiA+ID4gPiA+IFNTVAo+ID4gPiA+ID4gPiA+IHZzLiBNU1QuCj4gPiA+ID4gPiA+ID4g QW4gZXhhbXBsZSB3aXRoIHNvbWUgbm9ybWFsIFNTVCBzaW5rIHZzLiB3aGF0IGhhcHBlbnMgb24g bXkKPiA+ID4gPiA+ID4gPiBjYWxkaWdpdAo+ID4gPiA+ID4gPiA+IFRTMwo+ID4gPiA+ID4gPiA+ IAo+ID4gPiA+ID4gPiA+IFNTVDoKPiA+ID4gPiA+ID4gPiAgICAgMS4gY29tbWl0IG1vZGVzZXQs IGV2ZXJ5dGhpbmcgaXMgT0sKPiA+ID4gPiA+ID4gPiAgICAgMi4gc29tZXRoaW5nIGhhcHBlbnMs IHNpbmsgc2VuZHMgc2hvcnRwdWxzZSBhbmQgY2hhbmdlcyBsaW5rCj4gPiA+ID4gPiA+ID4gc3Rh dHVzCj4gPiA+ID4gPiA+ID4gcmVnaXN0ZXJzCj4gPiA+ID4gPiA+ID4gICAgIGluIGRwY2QKPiA+ ID4gPiA+ID4gPiAgICAgMy4gU291cmNlIHJlY2VpdmVzIHNob3J0IHB1bHNlLCB0cmllcyByZXRy YWluaW5nIGZpdmUgdGltZXMKPiA+ID4gPiA+ID4gPiAgICAgNC4gaWYgdGhpcyBzdWNjZWVkczoK PiA+ID4gPiA+ID4gPiAgICAgICAgIDUuIHdlJ3JlIGRvbmUgaGVyZQo+ID4gPiA+ID4gPiA+ICAg ICA2LiBpZiB0aGlzIGZhaWxzOgo+ID4gPiA+ID4gPiA+ICAgICAgICAgNy4gbWFyayBsaW5rIHN0 YXR1cyBhcyBiYWQKPiA+ID4gPiA+ID4gPiAgICAgICAgIDguIGdldCBmYWxsYmFjayBwYXJhbWV0 ZXJzCj4gPiA+ID4gPiA+ID4gICAgICAgICA5LiBob3RwbHVnIGV2ZW50Cj4gPiA+ID4gPiA+ID4g Cj4gPiA+ID4gPiA+ID4gTVNUIChpOTE1IGRvZXNuJ3QgZG8gdGhpcyB5ZXQsIGJ1dCB0aGlzIGlz IGdlbmVyYWxseSBob3cgaXQKPiA+ID4gPiA+ID4gPiBuZWVkcyB0bwo+ID4gPiA+ID4gPiA+IGJl Cj4gPiA+ID4gPiA+ID4gaGFuZGxlZCk6Cj4gPiA+ID4gPiA+ID4gICAgIDEuIGNvbW1pdCBtb2Rl c2V0LCBldmVyeXRoaW5nIGlzIE9LCj4gPiA+ID4gPiA+ID4gICAgIDIuIHNvbWV0aGluZyBoYXBw ZW5zIChpbiBteSBjYXNlLCB0aGUgTVNUIGh1YiBkaXNjb3ZlcnMgaXQKPiA+ID4gPiA+ID4gPiBo YWQKPiA+ID4gPiA+ID4gPiB0aGUKPiA+ID4gPiA+ID4gPiB3cm9uZyBtYXgKPiA+ID4gPiA+ID4g PiAgICAgbGluayByYXRlL2xhbmUgY291bnQpLCBzaW5rIHNlbmRzIEVTSSBpbmRpY2F0aW5nIGNo YW5uZWwgRVEKPiA+ID4gPiA+ID4gPiBoYXMKPiA+ID4gPiA+ID4gPiBmYWlsZWQKPiA+ID4gPiA+ ID4gPiAgICAgMy4gcmV0cmFpbmluZyBjb21tZW5jZXMgd2l0aCBmaXZlIHJldHJpZXMuCj4gPiA+ ID4gPiA+ID4gICAgIDQuIGlmIHRoaXMgc3VjY2VlZHM6Cj4gPiA+ID4gPiA+ID4gICAgICAgIDUu IGNvbnRpbnVlCj4gPiA+ID4gPiA+ID4gICAgIDYuIGlmIHRoaXMgZmFpbHMgKEkgYWN0dWFsbHkg aGF2ZW4ndCBzZWVuIHRoaXMgb25jZSB5ZXQpCj4gPiA+ID4gPiA+ID4gICAgICAgICA3LiBtYXJr IGxpbmsgc3RhdHVzIGFzIGJhZCBvbiBhbGwgZG93bnN0cmVhbSBjb25uZWN0b3JzCj4gPiA+ID4g PiA+ID4gICAgICAgICA4LiBnZXQgZmFsbGJhY2sgcGFyYW1ldGVycwo+ID4gPiA+ID4gPiA+ICAg ICAgICAgOS4gaG90cGx1ZyBldmVudAo+ID4gPiA+ID4gPiA+ICAgICAxMC4gdGhlIHJldHJhaW4g ZGlkbid0IGFjdHVhbGx5IHdvcmsgKGRlc3BpdGUgd2hhdCB0aGUgU1NUCj4gPiA+ID4gPiA+ID4g bGluawo+ID4gPiA+ID4gPiA+IHN0YXR1cwo+ID4gPiA+ID4gPiA+ICAgICByZWdpc3RlcnMgdG9s ZCB1cykuIGdvIGJhY2sgdG8gc3RlcCAzIGZpdmUgbW9yZSB0aW1lcwo+ID4gPiA+ID4gPiA+ICAg ICAxMS4gaWYgdGhpcyBmYWlsczoKPiA+ID4gPiA+ID4gPiAgICAgICAgIDEyLiBtYXJrIGxpbmsg c3RhdHVzIGFzIGJhZCBvbiBhbGwgZG93bnN0cmVhbSBjb25uZWN0b3JzCj4gPiA+ID4gPiA+ID4g ICAgICAgICAxMy4gZ2V0IGZhbGxiYWNrIHBhcmFtZXRlcnMKPiA+ID4gPiA+ID4gPiAgICAgICAg IDE0LiBob3RwbHVnIGV2ZW50Cj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gc2ltcGx5IHB1 dDogd2UgcmVhbGx5IHNob3VsZCBrZWVwIHRoZSAiZG8gd2UgbmVlZCB0byByZXRyYWluPyIKPiA+ ID4gPiA+ID4gPiBsb2dpYwo+ID4gPiA+ID4gPiA+IG91dAo+ID4gPiA+ID4gPiA+IG9mIHRoZQo+ ID4gPiA+ID4gPiA+IGFjdHVhbCByZXRyYWluaW5nIGhlbHBlcnMgc28gdGhhdCBTU1QvTVNUIGNv ZGVwYXRocyBjYW4gZG8gdGhlaXIKPiA+ID4gPiA+ID4gPiBvd24KPiA+ID4gPiA+ID4gPiBjaGVj a3MgdG8KPiA+ID4gPiA+ID4gPiBmaWd1cmUgdGhpcyBvdXQuCj4gPiA+ID4gPiA+IAo+ID4gPiA+ ID4gPiBObywgd2UgbmVlZCBpdCBzaW5jZSB3ZSB3YW50IHRvIGNoZWNrIGl0ICphZnRlciogYW55 IG1vZGVzZXQgaGFzCj4gPiA+ID4gPiA+IGZpbmlzaGVkLiBXaXRoIE1TVCBJIHRoaW5rIHdoYXQg d2UnbGwgd2FudCB0byBkbyBpcyBmaW5kIGFsbCB0aGUKPiA+ID4gPiA+ID4gcGlwZXMKPiA+ID4g PiA+ID4gYWZmZWN0ZWQgYnkgdGhlIGxpbmsgZmFpbHVyZSwgbG9jayB0aGVtLCBhbmQgd2FpdCB1 bnRpbCB0aGV5J3JlCj4gPiA+ID4gPiA+IGRvbmUKPiA+ID4gPiA+ID4gd2l0aCB0aGVpciBtb2Rl c2V0cywgdGhlbiB3ZSBjaGVjayB0aGUgbGluayBzdGF0ZS4gSWYgaXQncyBiYWQgd2UKPiA+ID4g PiA+ID4gcHJvY2VlZCB0byByZXRyYWluIHRoZSBsaW5rLgo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ ID4gU28gYmFzaWNhbGx5IGp1c3Qgd2Fsa2luZyBvdmVyIHRoZSBNU1QgZW5jb2RlcnMgaW4gYWRk aXRpb24gdG8gdGhlCj4gPiA+ID4gPiA+IFNTVCBlbmNvZGVyLCBhbmQgcmVwZWF0aW5nIG1vc3Qg b2YgdGhlIHN0ZXBzIGluIHRoaXMgY29kZSBmb3IKPiA+ID4gPiA+ID4gZWFjaC4KPiA+ID4gPiA+ ID4gSGVuY2UgdGhlIHRoZSBNU1QgRklYTUUgSSBsZWZ0IGluIHRoZXJlIDspCj4gPiA+ID4gPiA+ IAo+ID4gPiA+ID4gCj4gPiA+ID4gPiBMeXVkZSwKPiA+ID4gPiA+IAo+ID4gPiA+ID4gSSBhZ3Jl ZSB3aXRoIFZpbGxlIGhlcmUsIGNhbiB3ZSBhZGQgdGhlIE1TVCByZXRyYWluIHJlcXVpcmVkIGNo ZWNrCj4gPiA+ID4gPiBmcm9tCj4gPiA+ID4gPiB3aXRoaW4gdGhlIGludGVsX2RwX3JldHJhaW5f bGluaygpPyBTbyBmb3Igbm93IHRoZSBGSVhNRSBzaG91bGQgYmUKPiA+ID4gPiA+IGxlZnQKPiA+ ID4gPiA+IHRoZXJlCj4gPiA+ID4gPiBhbmQgTVNUIHJldHJhaW5pbmcgY2hlY2sgY2FuIGJlIGFk ZGVkIGZyb20geW91ciBwYXRjaGVzLgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBNYW5hc2kKPiA+ID4g PiAKPiA+ID4gPiBZZXAhIFNvcnJ5IEkgcHJvYmFibHkgc2hvdWxkIGhhdmUgcmVpdGVyYXRlZCB0 aGlzIHBhcnQgb3ZlciBlbWFpbAo+ID4gPiA+IHNpbmNlIEkKPiA+ID4gPiBvbmx5Cj4gPiA+ID4g bWVudGlvbmVkIGl0IHRvIHZpbGxlIGRpcmVjdGx5OiB0aGlzIHBhcnQgc2hvdWxkIGRlZmluaXRl bHkgd29yayBmaW5lLAo+ID4gPiA+IGFuZAo+ID4gPiA+IGludGVsX2RwX3JldHJhaW5fbGluaygp IGlzIGFjdHVhbGx5IHdoZXJlIHdlIGhhbmRsZSBNU1QgcmV0cmFpbmluZyBpbgo+ID4gPiA+IHRo ZQo+ID4gPiA+IGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSByZXRyYWluaW5nIHNlcmllczoKPiA+ID4g PiAKPiA+ID4gPiBqZnlpLCB5b3UgY2FuIGZpbmQgdGhhdCBoZXJlOgo+ID4gPiA+IGh0dHBzOi8v Z2l0aHViLmNvbS9MeXVkZS9saW51eC90cmVlL3dpcC9pOTE1LW1zdC1mYWxsYmFjay1hNAo+ID4g PiA+IEl0J3MgYWxtb3N0IHJlYWR5IGZvciB0aGUgTUwsIGp1c3Qgd2FudCB0byBnZXQgdGhlIG90 aGVyIHBhdGNoZXMgdGhpcwo+ID4gPiA+IGlzCj4gPiA+ID4gZ29pbmcKPiA+ID4gPiB0byByZWx5 IG9uIGluIGZpcnN0IGFuZCBmaXggc29tZSBzbWFsbCBjb25jZXJucyBJJ3ZlIGdvdCBhYm91dCB0 aGF0Cj4gPiA+ID4gc2VyaWVzJwo+ID4gPiA+IGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgaGFu ZGxpbmcgbW9kZXNldHMgYWZ0ZXIgYSBmYWlsZWQgcmV0cmFpbgo+ID4gPiA+IHNlcXVlbmNlCj4g PiA+ID4gPiAKPiA+ID4gCj4gPiA+IEdyZWF0IQo+ID4gPiBBZnRlciB0aGUgZmFpbGVkIHJldHJh aW4gc2VxdWVuY2UsIGl0IHdpbGwga2VlcCBvbiByZXRyeWluZyB1bnRpbCBoYXMKPiA+ID4gdHJp ZWQKPiA+ID4gYWxsCj4gPiA+IHRoZSBsaW5rIHJhdGUvbGFuZSBjb3VudCBjb21iaW5hdGlvbnMg dW50aWwgUkJSIDEgbGFuZSBhbmQgdGhlbiBmYWlsCj4gPiA+IHdpdGggYQo+ID4gPiBFUlJPUiBt ZXNzYWdlLgo+ID4gPiBXaGF0IHdhcyB0aGUgY29uY2VybiBvbiB0aGUgY3VycmVudCBpbXBsZW1l bnRhdGlvbiBvZiBtb2Rlc3RlIGFmdGVyCj4gPiA+IGZhaWxlZAo+ID4gPiByZXRyYWluPwo+ID4g Cj4gPiBJIGFjdHVhbGx5IHRha2UgdGhhdCBiYWNrLiBXYXMgd29ycmllZCB0aGF0IG5vdCBmcmVl aW5nIGV4aXN0aW5nIFZDUEkKPiA+IGFsbG9jYXRpb25zIGR1cmluZyB0aGUgZmlyc3QgYXRvbWlj IGNoZWNrIHBoYXNlIGZvciB0aGUgZmlyc3QgbW9kZXNldAo+ID4gYWZ0ZXIgYQo+ID4gcmV0cmFp biBmYWlsdXJlIG1pZ2h0IGNhdXNlIGF0b21pYyBjaGVja3MgdG8gZmFpbCBmcm9tIG5vdCBoYXZp bmcgZW5vdWdoCj4gPiBWQ1BJIAo+ID4gc3BhY2UsIGJ1dCB0aGVuIEkgcmVhbGl6ZWQgdGhhdCB3 b3VsZG4ndCBtYXR0ZXIgc2luY2UgaWYgd2UncmUgbm90IGFibGUgdG8KPiA+IGZpdAo+ID4gb25l IGRpc3BsYXkgaW50byB0aGUgVkNQSSB3aXRoIGEgcmVkdWNlZCBwYm5fZGl2LCB0aGF0IGp1c3Qg bWVhbnMgZml0dGluZwo+ID4gYm90aAo+ID4gZGlzcGxheXMgd2l0aCBhIHJlZHVjZWQgcGJuX2Rp diB3b3VsZCBhbHNvIGJlIGltcG9zc2libGUgOlAuCj4gPiAKPiAKPiBCdXQgdGhlbiBpbiB0aGF0 IGNhc2UsIGluIG9yZWRyIHRvIHJldHJ5IGF0IGxvd2VyIGxpbmsgcmF0ZXMsIGJvdGggdGhlc2UK PiBtb25pdG9ycyB3aWxsCj4gaGF2ZSB0byBkcm9wIHRvIHRoZSBuZXh0IGxvd2VyIHJlc29sdXRp b25zIHRvIGZpdCB0aGUgcmVkdWNlZCBwYm5fZGl2LgoKWWVwLCB0aGF0J3MgdGhlIGlkZWEhIElu IHdoaWNoIGNhc2UgdGhlIGF0b21pYyBjaGVjayBzaG91bGQgZmFpbCwgd2hpY2ggc2hvdWxkCmNh dXNlIHVzZXJzcGFjZSB0byB0cnkgYXQgYSByZWR1Y2VkIHJlc29sdXRpb24gb3IgdGFrZSBzb21l IG90aGVyIHJlcGFyYXRpdmUKYWN0aW9uCj4gCj4gTWFuYXNpCj4gIAo+ID4gPiAKPiA+ID4gTWFu YXNpCj4gPiA+ICAKPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ICAKPiA+ID4gPiA+ID4g PiA+ICAJLyogU3VwcHJlc3MgdW5kZXJydW5zIGNhdXNlZCBieSByZS10cmFpbmluZyAqLwo+ID4g PiA+ID4gPiA+ID4gIAlpbnRlbF9zZXRfY3B1X2ZpZm9fdW5kZXJydW5fcmVwb3J0aW5nKGRldl9w cml2LCBjcnRjLQo+ID4gPiA+ID4gPiA+ID4gPiBwaXBlLAo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ ID4gPiA+ID4gPiBmYWxzZSk7Cj4gPiA+ID4gPiA+ID4gPiBAQCAtNDI5OCw1MSArNDM2OSw0OSBA QCBpbnRlbF9kcF9yZXRyYWluX2xpbmsoc3RydWN0IGludGVsX2RwCj4gPiA+ID4gPiA+ID4gPiAq aW50ZWxfZHApCj4gPiA+ID4gPiA+ID4gPiAgCWlmIChjcnRjLT5jb25maWctPmhhc19wY2hfZW5j b2RlcikKPiA+ID4gPiA+ID4gPiA+ICAJCWludGVsX3NldF9wY2hfZmlmb191bmRlcnJ1bl9yZXBv cnRpbmcoZGV2X3ByaQo+ID4gPiA+ID4gPiA+ID4gdiwKPiA+ID4gPiA+ID4gPiA+ICAJCQkJCQkg ICAgICBpbnRlbF9jCj4gPiA+ID4gPiA+ID4gPiBydGNfCj4gPiA+ID4gPiA+ID4gPiBwY2hfCj4g PiA+ID4gPiA+ID4gPiB0cmFuc2NvZAo+ID4gPiA+ID4gPiA+ID4gZXIoY3J0YyksIHRydWUpOwo+ ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gKwlyZXR1cm4gMDsKPiA+ID4gPiA+ID4g PiA+ICB9Cj4gPiA+ID4gPiA+ID4gPiAgCj4gPiA+ID4gPiA+ID4gPiAtc3RhdGljIHZvaWQKPiA+ ID4gPiA+ID4gPiA+IC1pbnRlbF9kcF9jaGVja19saW5rX3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwKQo+ID4gPiA+ID4gPiA+ID4gKy8qCj4gPiA+ID4gPiA+ID4gPiArICogSWYgZGlz cGxheSBpcyBub3cgY29ubmVjdGVkIGNoZWNrIGxpbmtzIHN0YXR1cywKPiA+ID4gPiA+ID4gPiA+ ICsgKiB0aGVyZSBoYXMgYmVlbiBrbm93biBpc3N1ZXMgb2YgbGluayBsb3NzIHRyaWdnZXJpbmcK PiA+ID4gPiA+ID4gPiA+ICsgKiBsb25nIHB1bHNlLgo+ID4gPiA+ID4gPiA+ID4gKyAqCj4gPiA+ ID4gPiA+ID4gPiArICogU29tZSBzaW5rcyAoZWcuIEFTVVMgUEIyODdRKSBzZWVtIHRvIHBlcmZv cm0gc29tZQo+ID4gPiA+ID4gPiA+ID4gKyAqIHdlaXJkIEhQRCBwaW5nIHBvbmcgZHVyaW5nIG1v ZGVzZXRzLiBTbyB3ZSBjYW4gYXBwYXJlbnRseQo+ID4gPiA+ID4gPiA+ID4gKyAqIGVuZCB1cCB3 aXRoIEhQRCBnb2luZyBsb3cgZHVyaW5nIGEgbW9kZXNldCwgYW5kIHRoZW4KPiA+ID4gPiA+ID4g PiA+ICsgKiBnb2luZyBiYWNrIHVwIHNvb24gYWZ0ZXIuIEFuZCBvbmNlIHRoYXQgaGFwcGVucyB3 ZSBtdXN0Cj4gPiA+ID4gPiA+ID4gPiArICogcmV0cmFpbiB0aGUgbGluayB0byBnZXQgYSBwaWN0 dXJlLiBUaGF0J3MgaW4gY2FzZSBubwo+ID4gPiA+ID4gPiA+ID4gKyAqIHVzZXJzcGFjZSBjb21w b25lbnQgcmVhY3RlZCB0byBpbnRlcm1pdHRlbnQgSFBEIGRpcC4KPiA+ID4gPiA+ID4gPiA+ICsg Ki8KPiA+ID4gPiA+ID4gPiA+ICtzdGF0aWMgYm9vbCBpbnRlbF9kcF9ob3RwbHVnKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gPiA+ID4gPiA+ID4gKwkJCSAgICAgc3RydWN0IGlu dGVsX2Nvbm5lY3Rvcgo+ID4gPiA+ID4gPiA+ID4gKmNvbm5lY3RvcikKPiA+ID4gPiA+ID4gPiA+ ICB7Cj4gPiA+ID4gPiA+ID4gPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 Cj4gPiA+ID4gPiA+ID4gPiB0b19pOTE1KGludGVsX2RwX3RvX2RldihpbnRlbF9kcCkpOwo+ID4g PiA+ID4gPiA+ID4gLQlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciA9Cj4gPiA+ ID4gPiA+ID4gPiAmZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApLQo+ID4gPiA+ID4gPiA+ID4gPiBi YXNlOwo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiAtCXN0cnVjdCBkcm1fY29ubmVj dG9yX3N0YXRlICpjb25uX3N0YXRlID0KPiA+ID4gPiA+ID4gPiA+IC0JCWludGVsX2RwLT5hdHRh Y2hlZF9jb25uZWN0b3ItPmJhc2Uuc3RhdGU7Cj4gPiA+ID4gPiA+ID4gPiAtCXU4IGxpbmtfc3Rh dHVzW0RQX0xJTktfU1RBVFVTX1NJWkVdOwo+ID4gPiA+ID4gPiA+ID4gLQo+ID4gPiA+ID4gPiA+ ID4gLQlXQVJOX09OKCFkcm1fbW9kZXNldF9pc19sb2NrZWQoJmRldl9wcml2LQo+ID4gPiA+ID4g PiA+ID4gPiBkcm0ubW9kZV9jb25maWcuY29ubmVjdGlvbl9tdXRleCkpOwo+ID4gPiA+ID4gPiA+ ID4gCj4gPiA+ID4gPiA+ID4gPiAtCj4gPiA+ID4gPiA+ID4gPiAtCWlmICghaW50ZWxfZHBfZ2V0 X2xpbmtfc3RhdHVzKGludGVsX2RwLCBsaW5rX3N0YXR1cykpCj4gPiA+ID4gPiA+ID4gPiB7Cj4g PiA+ID4gPiA+ID4gPiAtCQlEUk1fRVJST1IoIkZhaWxlZCB0byBnZXQgbGluayBzdGF0dXNcbiIp Owo+ID4gPiA+ID4gPiA+ID4gLQkJcmV0dXJuOwo+ID4gPiA+ID4gPiA+ID4gLQl9Cj4gPiA+ID4g PiA+ID4gPiArCXN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCBjdHg7Cj4gPiA+ID4gPiA+ ID4gPiArCWJvb2wgY2hhbmdlZDsKPiA+ID4gPiA+ID4gPiA+ICsJaW50IHJldDsKPiA+ID4gPiA+ ID4gPiA+ICAKPiA+ID4gPiA+ID4gPiA+IC0JaWYgKCFjb25uX3N0YXRlLT5jcnRjKQo+ID4gPiA+ ID4gPiA+ID4gLQkJcmV0dXJuOwo+ID4gPiA+ID4gPiA+ID4gKwljaGFuZ2VkID0gaW50ZWxfZW5j b2Rlcl9ob3RwbHVnKGVuY29kZXIsIGNvbm5lY3Rvcik7Cj4gPiA+ID4gPiA+ID4gPiAgCj4gPiA+ ID4gPiA+ID4gPiAtCVdBUk5fT04oIWRybV9tb2Rlc2V0X2lzX2xvY2tlZCgmY29ubl9zdGF0ZS0+ Y3J0Yy0KPiA+ID4gPiA+ID4gPiA+ID4gbXV0ZXgpKTsKPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ ID4gPiA+ID4gKwlkcm1fbW9kZXNldF9hY3F1aXJlX2luaXQoJmN0eCwgMCk7Cj4gPiA+ID4gPiA+ ID4gPiAgCj4gPiA+ID4gPiA+ID4gPiAtCWlmICghY29ubl9zdGF0ZS0+Y3J0Yy0+c3RhdGUtPmFj dGl2ZSkKPiA+ID4gPiA+ID4gPiA+IC0JCXJldHVybjsKPiA+ID4gPiA+ID4gPiA+ICsJZm9yICg7 Oykgewo+ID4gPiA+ID4gCj4gPiA+ID4gPiBIZXJlIGlmIHRoaXMgaXMgZ2V0dGluZyBleGVjdXRl ZCBkdWUgdG8gaHBkIHBpbmcgcG9uZyBkdXJpbmcgdGhlCj4gPiA+ID4gPiBtb2Rlc2V0Cj4gPiA+ ID4gPiBhbmQgdGhhdCBtb2Rlc2V0IGlzIGFscmVhZHkgaGFwcGVuaW5nIGF0IGEgbGluayBmYWxs YmFjayBwYXJhbWV0ZXIKPiA+ID4gPiA+IHRoZW4KPiA+ID4gPiA+IHdoaWxlIHdlIGNhbGwgcmV0 cmFpbiBsaW5rLCB3ZSBzaG91bGQgYWxzbyB2YWxpZGF0ZSB0aGUgbGluawo+ID4gPiA+ID4gcGFy YW1ldGVycwo+ID4gPiA+ID4gc28gdGhhdCBpdCBkb2VzbnQgdHJ5IHRvIHJldHJhaW4gd2l0aCBz dGFsZSB2YWx1ZXMuCj4gPiA+ID4gPiAKPiA+ID4gPiA+IEkgdGhpbmsgd2UgbmVlZCB0byBjYWxs IGludGVsX2RwX2xpbmtfcGFyYW1zX3ZhbGlkKCkgYmVmb3JlIHJldHJhaW4uCj4gPiA+ID4gPiAK PiA+ID4gPiA+ID4gPiA+ICsJCXJldCA9IGludGVsX2RwX3JldHJhaW5fbGluayhlbmNvZGVyLCAm Y3R4KTsKPiA+ID4gPiA+ID4gPiA+ICAKPiA+ID4gPiA+ID4gPiA+IC0JaWYgKGNvbm5fc3RhdGUt PmNvbW1pdCAmJgo+ID4gPiA+ID4gPiA+ID4gLQkgICAgIXRyeV93YWl0X2Zvcl9jb21wbGV0aW9u KCZjb25uX3N0YXRlLT5jb21taXQtCj4gPiA+ID4gPiA+ID4gPiA+IGh3X2RvbmUpKQo+ID4gPiA+ ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiAtCQlyZXR1cm47Cj4gPiA+ID4gPiA+ID4gPiArCQlp ZiAocmV0ID09IC1FREVBRExLKSB7Cj4gPiA+ID4gPiA+ID4gPiArCQkJZHJtX21vZGVzZXRfYmFj a29mZigmY3R4KTsKPiA+ID4gPiA+ID4gPiA+ICsJCQljb250aW51ZTsKPiA+ID4gPiA+ID4gPiA+ ICsJCX0KPiA+ID4gPiA+ID4gPiA+ICAKPiA+ID4gPiA+ID4gPiA+IC0JLyoKPiA+ID4gPiA+ID4g PiA+IC0JICogVmFsaWRhdGUgdGhlIGNhY2hlZCB2YWx1ZXMgb2YgaW50ZWxfZHAtPmxpbmtfcmF0 ZQo+ID4gPiA+ID4gPiA+ID4gYW5kCj4gPiA+ID4gPiA+ID4gPiAtCSAqIGludGVsX2RwLT5sYW5l X2NvdW50IGJlZm9yZSBhdHRlbXB0aW5nIHRvIHJldHJhaW4uCj4gPiA+ID4gPiA+ID4gPiAtCSAq Lwo+ID4gPiA+ID4gPiA+ID4gLQlpZiAoIWludGVsX2RwX2xpbmtfcGFyYW1zX3ZhbGlkKGludGVs X2RwLCBpbnRlbF9kcC0KPiA+ID4gPiA+ID4gPiA+ID4gbGlua19yYXRlLAo+ID4gPiA+ID4gPiA+ ID4gCj4gPiA+ID4gPiA+ID4gPiAtCQkJCQlpbnRlbF9kcC0KPiA+ID4gPiA+ID4gPiA+ID5sYW5l X2NvdW50KSkKPiA+ID4gPiA+ID4gPiA+IC0JCXJldHVybjsKPiA+ID4gPiA+ID4gPiA+ICsJCWJy ZWFrOwo+ID4gPiA+ID4gPiA+ID4gKwl9Cj4gPiA+ID4gPiA+ID4gPiAgCj4gPiA+ID4gPiA+ID4g PiAtCS8qIFJldHJhaW4gaWYgQ2hhbm5lbCBFUSBvciBDUiBub3Qgb2sgKi8KPiA+ID4gPiA+ID4g PiA+IC0JaWYgKCFkcm1fZHBfY2hhbm5lbF9lcV9vayhsaW5rX3N0YXR1cywgaW50ZWxfZHAtCj4g PiA+ID4gPiA+ID4gPiA+IGxhbmVfY291bnQpKSAKPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4g PiA+ID4gewo+ID4gPiA+ID4gPiA+ID4gLQkJRFJNX0RFQlVHX0tNUygiJXM6IGNoYW5uZWwgRVEg bm90IG9rLAo+ID4gPiA+ID4gPiA+ID4gcmV0cmFpbmluZ1xuIiwKPiA+ID4gPiA+ID4gPiA+IC0J CQkgICAgICBpbnRlbF9lbmNvZGVyLT5iYXNlLm5hbWUpOwo+ID4gPiA+ID4gPiA+ID4gKwlkcm1f bW9kZXNldF9kcm9wX2xvY2tzKCZjdHgpOwo+ID4gPiA+ID4gPiA+ID4gKwlkcm1fbW9kZXNldF9h Y3F1aXJlX2ZpbmkoJmN0eCk7Cj4gPiA+ID4gPiA+ID4gPiArCVdBUk4ocmV0LCAiQWNxdWlyaW5n IG1vZGVzZXQgbG9ja3MgZmFpbGVkIHdpdGggJWlcbiIsCj4gPiA+ID4gPiA+ID4gPiByZXQpOwo+ ID4gPiA+ID4gPiA+ID4gIAo+ID4gPiA+ID4gPiA+ID4gLQkJaW50ZWxfZHBfcmV0cmFpbl9saW5r KGludGVsX2RwKTsKPiA+ID4gPiA+ID4gPiA+IC0JfQo+ID4gPiA+ID4gPiA+ID4gKwlyZXR1cm4g Y2hhbmdlZDsKPiA+ID4gPiA+ID4gPiA+ICB9Cj4gPiA+ID4gPiA+ID4gPiAgCj4gPiA+ID4gPiA+ ID4gPiAgLyoKPiA+ID4gPiA+ID4gPiA+IEBAIC00NDAwLDcgKzQ0NjksOSBAQCBpbnRlbF9kcF9z aG9ydF9wdWxzZShzdHJ1Y3QgaW50ZWxfZHAKPiA+ID4gPiA+ID4gPiA+ICppbnRlbF9kcCkKPiA+ ID4gPiA+ID4gPiA+ICAJCQlEUk1fREVCVUdfRFJJVkVSKCJDUCBvciBzaW5rIHNwZWNpZmljCj4g PiA+ID4gPiA+ID4gPiBpcnEKPiA+ID4gPiA+ID4gPiA+IHVuaGFuZGxlZFxuIik7Cj4gPiA+ID4g PiA+ID4gPiAgCX0KPiA+ID4gPiA+ID4gPiA+ICAKPiA+ID4gPiA+ID4gPiA+IC0JaW50ZWxfZHBf Y2hlY2tfbGlua19zdGF0dXMoaW50ZWxfZHApOwo+ID4gPiA+ID4gPiA+ID4gKwkvKiBkZWZlciB0 byB0aGUgaG90cGx1ZyB3b3JrIGZvciBsaW5rIHJldHJhaW5pbmcgaWYKPiA+ID4gPiA+ID4gPiA+ IG5lZWRlZCAqLwo+ID4gPiA+ID4gPiA+ID4gKwlpZiAoaW50ZWxfZHBfbmVlZHNfbGlua19yZXRy YWluKGludGVsX2RwKSkKPiA+ID4gPiA+ID4gPiA+ICsJCXJldHVybiBmYWxzZTsKPiA+ID4gPiA+ ID4gPiA+ICAKPiA+ID4gPiA+ID4gPiA+ICAJaWYgKGludGVsX2RwLT5jb21wbGlhbmNlLnRlc3Rf dHlwZSA9PQo+ID4gPiA+ID4gPiA+ID4gRFBfVEVTVF9MSU5LX1RSQUlOSU5HKQo+ID4gPiA+ID4g PiA+ID4gewo+ID4gPiA+ID4gPiA+ID4gIAkJRFJNX0RFQlVHX0tNUygiTGluayBUcmFpbmluZyBD b21wbGlhbmNlIFRlc3QKPiA+ID4gPiA+ID4gPiA+IHJlcXVlc3RlZFxuIik7Cj4gPiA+ID4gPiA+ ID4gPiBAQCAtNDc4NSwyMCArNDg1Niw2IEBAIGludGVsX2RwX2xvbmdfcHVsc2Uoc3RydWN0Cj4g PiA+ID4gPiA+ID4gPiBpbnRlbF9jb25uZWN0b3IKPiA+ID4gPiA+ID4gPiA+ICpjb25uZWN0b3Ip Cj4gPiA+ID4gPiA+ID4gPiAgCQkgKi8KPiA+ID4gPiA+ID4gPiA+ICAJCXN0YXR1cyA9IGNvbm5l Y3Rvcl9zdGF0dXNfZGlzY29ubmVjdGVkOwo+ID4gPiA+ID4gPiA+ID4gIAkJZ290byBvdXQ7Cj4g PiA+ID4gPiA+ID4gPiAtCX0gZWxzZSB7Cj4gPiA+ID4gPiA+ID4gPiAtCQkvKgo+ID4gPiA+ID4g PiA+ID4gLQkJICogSWYgZGlzcGxheSBpcyBub3cgY29ubmVjdGVkIGNoZWNrIGxpbmtzCj4gPiA+ ID4gPiA+ID4gPiBzdGF0dXMsCj4gPiA+ID4gPiA+ID4gPiAtCQkgKiB0aGVyZSBoYXMgYmVlbiBr bm93biBpc3N1ZXMgb2YgbGluayBsb3NzCj4gPiA+ID4gPiA+ID4gPiB0cmlnZ2VycmluZwo+ID4g PiA+ID4gPiA+ID4gLQkJICogbG9uZyBwdWxzZS4KPiA+ID4gPiA+ID4gPiA+IC0JCSAqCj4gPiA+ ID4gPiA+ID4gPiAtCQkgKiBTb21lIHNpbmtzIChlZy4gQVNVUyBQQjI4N1EpIHNlZW0gdG8KPiA+ ID4gPiA+ID4gPiA+IHBlcmZvcm0KPiA+ID4gPiA+ID4gPiA+IHNvbWUKPiA+ID4gPiA+ID4gPiA+ IC0JCSAqIHdlaXJkIEhQRCBwaW5nIHBvbmcgZHVyaW5nIG1vZGVzZXRzLiBTbyB3ZQo+ID4gPiA+ ID4gPiA+ID4gY2FuCj4gPiA+ID4gPiA+ID4gPiBhcHBhcmVudGx5Cj4gPiA+ID4gPiA+ID4gPiAt CQkgKiBlbmQgdXAgd2l0aCBIUEQgZ29pbmcgbG93IGR1cmluZyBhCj4gPiA+ID4gPiA+ID4gPiBt b2Rlc2V0LAo+ID4gPiA+ID4gPiA+ID4gYW5kCj4gPiA+ID4gPiA+ID4gPiB0aGVuCj4gPiA+ID4g PiA+ID4gPiAtCQkgKiBnb2luZyBiYWNrIHVwIHNvb24gYWZ0ZXIuIEFuZCBvbmNlIHRoYXQKPiA+ ID4gPiA+ID4gPiA+IGhhcHBlbnMgd2UKPiA+ID4gPiA+ID4gPiA+IG11c3QKPiA+ID4gPiA+ID4g PiA+IC0JCSAqIHJldHJhaW4gdGhlIGxpbmsgdG8gZ2V0IGEgcGljdHVyZS4gVGhhdCdzCj4gPiA+ ID4gPiA+ID4gPiBpbgo+ID4gPiA+ID4gPiA+ID4gY2FzZQo+ID4gPiA+ID4gPiA+ID4gbm8KPiA+ ID4gPiA+ID4gPiA+IC0JCSAqIHVzZXJzcGFjZSBjb21wb25lbnQgcmVhY3RlZCB0bwo+ID4gPiA+ ID4gPiA+ID4gaW50ZXJtaXR0ZW50Cj4gPiA+ID4gPiA+ID4gPiBIUEQKPiA+ID4gPiA+ID4gPiA+ IGRpcC4KPiA+ID4gPiA+ID4gPiA+IC0JCSAqLwo+ID4gPiA+ID4gPiA+ID4gLQkJaW50ZWxfZHBf Y2hlY2tfbGlua19zdGF0dXMoaW50ZWxfZHApOwo+ID4gPiA+ID4gPiA+ID4gIAl9Cj4gPiA+ID4g PiA+ID4gPiAgCj4gPiA+ID4gPiA+ID4gPiAgCS8qCj4gPiA+ID4gPiA+ID4gPiBAQCAtNTM0MCwz NyArNTM5NywxMCBAQCBpbnRlbF9kcF9ocGRfcHVsc2Uoc3RydWN0Cj4gPiA+ID4gPiA+ID4gPiBp bnRlbF9kaWdpdGFsX3BvcnQKPiA+ID4gPiA+ID4gPiA+ICppbnRlbF9kaWdfcG9ydCwgYm9vbCBs b25nX2hwZCkKPiA+ID4gPiA+ID4gPiA+ICAJfQo+ID4gPiA+ID4gPiA+ID4gIAo+ID4gPiA+ID4g PiA+ID4gIAlpZiAoIWludGVsX2RwLT5pc19tc3QpIHsKPiA+ID4gPiA+ID4gPiA+IC0JCXN0cnVj dCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCBjdHg7Cj4gPiA+ID4gPiA+ID4gPiAtCQlzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gJmludGVsX2RwLQo+ID4gPiA+ID4gPiA+ID4gPiBh dHRhY2hlZF9jb25uZWN0b3ItPmJhc2U7Cj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ IC0JCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiA+ID4gPiA+ID4gPiA+IC0JCWludCBpcmV0Owo+ ID4gPiA+ID4gPiA+ID4gLQkJYm9vbCBoYW5kbGVkID0gZmFsc2U7Cj4gPiA+ID4gPiA+ID4gPiAt Cj4gPiA+ID4gPiA+ID4gPiAtCQlkcm1fbW9kZXNldF9hY3F1aXJlX2luaXQoJmN0eCwgMCk7Cj4g PiA+ID4gPiA+ID4gPiAtcmV0cnk6Cj4gPiA+ID4gPiA+ID4gPiAtCQlpcmV0ID0gZHJtX21vZGVz ZXRfbG9jaygmZGV2X3ByaXYtCj4gPiA+ID4gPiA+ID4gPiA+IGRybS5tb2RlX2NvbmZpZy5jb25u ZWN0aW9uX211dGV4LCAmY3R4KTsKPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gLQkJ aWYgKGlyZXQpCj4gPiA+ID4gPiA+ID4gPiAtCQkJZ290byBlcnI7Cj4gPiA+ID4gPiA+ID4gPiAt Cj4gPiA+ID4gPiA+ID4gPiAtCQljcnRjID0gY29ubmVjdG9yLT5zdGF0ZS0+Y3J0YzsKPiA+ID4g PiA+ID4gPiA+IC0JCWlmIChjcnRjKSB7Cj4gPiA+ID4gPiA+ID4gPiAtCQkJaXJldCA9IGRybV9t b2Rlc2V0X2xvY2soJmNydGMtPm11dGV4LAo+ID4gPiA+ID4gPiA+ID4gJmN0eCk7Cj4gPiA+ID4g PiA+ID4gPiAtCQkJaWYgKGlyZXQpCj4gPiA+ID4gPiA+ID4gPiAtCQkJCWdvdG8gZXJyOwo+ID4g PiA+ID4gPiA+ID4gLQkJfQo+ID4gPiA+ID4gPiA+ID4gKwkJYm9vbCBoYW5kbGVkOwo+ID4gPiA+ ID4gPiA+ID4gIAo+ID4gPiA+ID4gPiA+ID4gIAkJaGFuZGxlZCA9IGludGVsX2RwX3Nob3J0X3B1 bHNlKGludGVsX2RwKTsKPiA+ID4gPiA+ID4gPiA+ICAKPiA+ID4gPiA+ID4gPiA+IC1lcnI6Cj4g PiA+ID4gPiA+ID4gPiAtCQlpZiAoaXJldCA9PSAtRURFQURMSykgewo+ID4gPiA+ID4gPiA+ID4g LQkJCWRybV9tb2Rlc2V0X2JhY2tvZmYoJmN0eCk7Cj4gPiA+ID4gPiA+ID4gPiAtCQkJZ290byBy ZXRyeTsKPiA+ID4gPiA+ID4gPiA+IC0JCX0KPiA+ID4gPiA+ID4gPiA+IC0KPiA+ID4gPiA+ID4g PiA+IC0JCWRybV9tb2Rlc2V0X2Ryb3BfbG9ja3MoJmN0eCk7Cj4gPiA+ID4gPiA+ID4gPiAtCQlk cm1fbW9kZXNldF9hY3F1aXJlX2ZpbmkoJmN0eCk7Cj4gPiA+ID4gPiA+ID4gPiAtCQlXQVJOKGly ZXQsICJBY3F1aXJpbmcgbW9kZXNldCBsb2NrcyBmYWlsZWQKPiA+ID4gPiA+ID4gPiA+IHdpdGgK PiA+ID4gPiA+ID4gPiA+ICVpXG4iLCBpcmV0KTsKPiA+ID4gPiA+ID4gPiA+IC0KPiA+ID4gPiA+ ID4gPiA+ICAJCS8qIFNob3J0IHB1bHNlIGNhbiBzaWduaWZ5IGxvc3Mgb2YgaGRjcAo+ID4gPiA+ ID4gPiA+ID4gYXV0aGVudGljYXRpb24gKi8KPiA+ID4gPiA+ID4gPiA+ICAJCWludGVsX2hkY3Bf Y2hlY2tfbGluayhpbnRlbF9kcC0KPiA+ID4gPiA+ID4gPiA+ID4gYXR0YWNoZWRfY29ubmVjdG9y KTsKPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gIAo+ID4gPiA+ID4gPiA+ID4gQEAg LTY0MDAsNyArNjQzMCw3IEBAIGJvb2wgaW50ZWxfZHBfaW5pdChzdHJ1Y3QKPiA+ID4gPiA+ID4g PiA+IGRybV9pOTE1X3ByaXZhdGUKPiA+ID4gPiA+ID4gPiA+ICpkZXZfcHJpdiwKPiA+ID4gPiA+ ID4gPiA+ICAJCQkgICAgICJEUCAlYyIsIHBvcnRfbmFtZShwb3J0KSkpCj4gPiA+ID4gPiA+ID4g PiAgCQlnb3RvIGVycl9lbmNvZGVyX2luaXQ7Cj4gPiA+ID4gPiA+ID4gPiAgCj4gPiA+ID4gPiA+ ID4gPiAtCWludGVsX2VuY29kZXItPmhvdHBsdWcgPSBpbnRlbF9lbmNvZGVyX2hvdHBsdWc7Cj4g PiA+ID4gPiA+ID4gPiArCWludGVsX2VuY29kZXItPmhvdHBsdWcgPSBpbnRlbF9kcF9ob3RwbHVn Owo+ID4gPiA+ID4gPiA+ID4gIAlpbnRlbF9lbmNvZGVyLT5jb21wdXRlX2NvbmZpZyA9Cj4gPiA+ ID4gPiA+ID4gPiBpbnRlbF9kcF9jb21wdXRlX2NvbmZpZzsKPiA+ID4gPiA+ID4gPiA+ICAJaW50 ZWxfZW5jb2Rlci0+Z2V0X2h3X3N0YXRlID0gaW50ZWxfZHBfZ2V0X2h3X3N0YXRlOwo+ID4gPiA+ ID4gPiA+ID4gIAlpbnRlbF9lbmNvZGVyLT5nZXRfY29uZmlnID0gaW50ZWxfZHBfZ2V0X2NvbmZp ZzsKPiA+ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaAo+ID4gPiA+ID4gPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aAo+ID4gPiA+ID4gPiA+ID4gaW5kZXggNWVhMWRjM2Y2M2JmLi5kZGYyOGE0NDJjZDcgMTAwNjQ0 Cj4gPiA+ID4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ ID4gPiA+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ ID4gPiA+ID4gPiA+IEBAIC0xNjExLDYgKzE2MTEsOCBAQCBpbnQKPiA+ID4gPiA+ID4gPiA+IGlu dGVsX2RwX2dldF9saW5rX3RyYWluX2ZhbGxiYWNrX3ZhbHVlcyhzdHJ1Y3QKPiA+ID4gPiA+ID4g PiA+IGludGVsX2RwICppbnRlbF9kcCwKPiA+ID4gPiA+ID4gPiA+ICAJCQkJCSAgICBpbnQgbGlu a19yYXRlLAo+ID4gPiA+ID4gPiA+ID4gdWludDhfdAo+ID4gPiA+ID4gPiA+ID4gbGFuZV9jb3Vu dCk7Cj4gPiA+ID4gPiA+ID4gPiAgdm9pZCBpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+ID4gPiA+ID4gPiA+ID4gIHZvaWQgaW50ZWxfZHBfc3Rv cF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+ID4gPiA+ID4gPiA+ID4g K2ludCBpbnRlbF9kcF9yZXRyYWluX2xpbmsoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs Cj4gPiA+ID4gPiA+ID4gPiArCQkJICBzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHgKPiA+ ID4gPiA+ID4gPiA+ICpjdHgpOwo+ID4gPiA+ID4gPiA+ID4gIHZvaWQgaW50ZWxfZHBfc2lua19k cG1zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludCBtb2RlKTsKPiA+ID4gPiA+ID4gPiA+ ICB2b2lkIGludGVsX2RwX2VuY29kZXJfcmVzZXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVy KTsKPiA+ID4gPiA+ID4gPiA+ICB2b2lkIGludGVsX2RwX2VuY29kZXJfc3VzcGVuZChzdHJ1Y3Qg aW50ZWxfZW5jb2Rlcgo+ID4gPiA+ID4gPiA+ID4gKmludGVsX2VuY29kZXIpOwo+ID4gPiA+ID4g PiAKPiA+ID4gPiA+ID4gLS0gCj4gPiA+ID4gPiA+IFZpbGxlIFN5cmrDpGzDpAo+ID4gPiA+ID4g PiBJbnRlbCBPVEMKPiA+ID4gPiA+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KPiA+ID4gPiA+ID4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+ID4gPiA+ ID4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiA+ID4gPiA+IGh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4gPiA+ID4g Cj4gPiA+ID4gLS0gCj4gPiA+ID4gQ2hlZXJzLAo+ID4gPiA+IAlMeXVkZSBQYXVsCj4gPiAKPiA+ IC0tIAo+ID4gQ2hlZXJzLAo+ID4gCUx5dWRlIFBhdWwKLS0gCkNoZWVycywKCUx5dWRlIFBhdWwK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==