From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [PATCH v6 03/14] xen: Use a typesafe to define INVALID_MFN Date: Wed, 6 Jul 2016 14:04:17 +0100 Message-ID: <577D01D1.2080000@arm.com> References: <1467810073-27971-1-git-send-email-julien.grall@arm.com> <1467810073-27971-4-git-send-email-julien.grall@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1467810073-27971-4-git-send-email-julien.grall@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: elena.ufimtseva@oracle.com, Kevin Tian , sstabellini@kernel.org, Jun Nakajima , George Dunlap , Andrew Cooper , Christoph Egger , Tim Deegan , Paul Durrant , Jan Beulich , Liu Jinsong List-Id: xen-devel@lists.xenproject.org KENDIEVsZW5hKS4KCk9uIDA2LzA3LzE2IDE0OjAxLCBKdWxpZW4gR3JhbGwgd3JvdGU6Cj4gQWxz byB0YWtlIHRoZSBvcHBvcnR1bml0eSB0byBjb252ZXJ0IGFyY2gveDg2L2RlYnVnLmMgdG8gdGhl IHR5cGVzYWZlCj4gbWZuIGFuZCB1c2UgcHJvcGVyIHByaW50ZiBmb3JtYXQgZm9yIE1GTi9HRk4g d2hlbiB0aGUgY29kZSBhcm91bmQgaXMKPiBtb2RpZmllZC4KPgo+IFNpZ25lZC1vZmYtYnk6IEp1 bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+Cj4gUmV2aWV3ZWQtYnk6IEFuZHJldyBD b29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Cj4gQWNrZWQtYnk6IFN0ZWZhbm8gU3Rh YmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KPgo+IC0tLQo+IENjOiBDaHJpc3RvcGgg RWdnZXIgPGNoZWdnZXJAYW1hem9uLmRlPgo+IENjOiBMaXUgSmluc29uZyA8amluc29uZy5saXVA YWxpYmFiYS1pbmMuY29tPgo+IENjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Cj4g Q2M6IE11a2VzaCBSYXRob3IgPG11a2VzaC5yYXRob3JAb3JhY2xlLmNvbT4KCkkgZm9yZ290IHRv IHVwZGF0ZSB0aGUgQ0MgbGlzdCBzaW5jZSBHRFNYIG1haW50YWluZXJzaGlwIHdhcyB0YWtlIG92 ZXIgCmJ5IEVsZW5hLiBTb3JyeSBmb3IgdGhhdC4KCj4gQ2M6IFBhdWwgRHVycmFudCA8cGF1bC5k dXJyYW50QGNpdHJpeC5jb20+Cj4gQ2M6IEp1biBOYWthamltYSA8anVuLm5ha2FqaW1hQGludGVs LmNvbT4KPiBDYzogS2V2aW4gVGlhbiA8a2V2aW4udGlhbkBpbnRlbC5jb20+Cj4gQ2M6IEdlb3Jn ZSBEdW5sYXAgPGdlb3JnZS5kdW5sYXBAZXUuY2l0cml4LmNvbT4KPiBDYzogVGltIERlZWdhbiA8 dGltQHhlbi5vcmc+Cj4KPiAgICAgIENoYW5nZXMgaW4gdjY6Cj4gICAgICAgICAgLSBBZGQgU3Rl ZmFubydzIGFja2VkLWJ5IGZvciBBUk0gYml0cwo+ICAgICAgICAgIC0gVXNlIFBSSV9tZm4gYW5k IFBSSV9nZm4KPiAgICAgICAgICAtIFJlbW92ZSBzZXQgb2YgYnJhY2tldHMgd2hlbiBpdCBpcyBu b3QgbmVjZXNzYXJ5Cj4gICAgICAgICAgLSBVc2UgbWZuX2FkZCB3aGVuIHBvc3NpYmxlCj4gICAg ICAgICAgLSBBZGQgQW5kcmV3J3MgcmV2aWV3ZWQtYnkKPgo+ICAgICAgQ2hhbmdlcyBpbiB2NToK PiAgICAgICAgICAtIFBhdGNoIGFkZGVkCj4gLS0tCj4gICB4ZW4vYXJjaC9hcm0vcDJtLmMgICAg ICAgICAgICAgIHwgIDQgKy0tCj4gICB4ZW4vYXJjaC94ODYvY3B1L21jaGVjay9tY2UuYyAgIHwg IDIgKy0KPiAgIHhlbi9hcmNoL3g4Ni9kZWJ1Zy5jICAgICAgICAgICAgfCA1OCArKysrKysrKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICAgeGVuL2FyY2gveDg2L2h2bS9odm0u YyAgICAgICAgICB8ICA2ICsrLS0tCj4gICB4ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuLmMgICAg IHwgMTIgKysrKy0tLS0tCj4gICB4ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYyAgICAgIHwgIDIg Ky0KPiAgIHhlbi9hcmNoL3g4Ni9tbS9ndWVzdF93YWxrLmMgICAgfCAgNCArLS0KPiAgIHhlbi9h cmNoL3g4Ni9tbS9oYXAvaGFwLmMgICAgICAgfCAgNCArLS0KPiAgIHhlbi9hcmNoL3g4Ni9tbS9w Mm0tZXB0LmMgICAgICAgfCAgNiArKy0tLQo+ICAgeGVuL2FyY2gveDg2L21tL3AybS1wb2QuYyAg ICAgICB8IDE4ICsrKysrKy0tLS0tLS0KPiAgIHhlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYyAgICAg ICAgfCAxOCArKysrKystLS0tLS0tCj4gICB4ZW4vYXJjaC94ODYvbW0vcDJtLmMgICAgICAgICAg IHwgNTQgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgIHhlbi9hcmNo L3g4Ni9tbS9wYWdpbmcuYyAgICAgICAgfCAxMiArKysrLS0tLS0KPiAgIHhlbi9hcmNoL3g4Ni9t bS9zaGFkb3cvY29tbW9uLmMgfCA0MyArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KPiAg IHhlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGkuYyAgfCAzNiArKysrKysrKysrKystLS0tLS0t LS0tLS0tCj4gICB4ZW4vY29tbW9uL2RvbWFpbi5jICAgICAgICAgICAgIHwgIDYgKystLS0KPiAg IHhlbi9jb21tb24vZ3JhbnRfdGFibGUuYyAgICAgICAgfCAgNiArKy0tLQo+ICAgeGVuL2luY2x1 ZGUveGVuL21tLmggICAgICAgICAgICB8ICAyICstCj4gICAxOCBmaWxlcyBjaGFuZ2VkLCAxNDcg aW5zZXJ0aW9ucygrKSwgMTQ2IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNo L2FybS9wMm0uYyBiL3hlbi9hcmNoL2FybS9wMm0uYwo+IGluZGV4IDM0NTYzYmIuLmQ2OTA2MDIg MTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJtL3AybS5jCj4gKysrIGIveGVuL2FyY2gvYXJtL3Ay bS5jCj4gQEAgLTE0NjEsNyArMTQ2MSw3IEBAIGludCByZWxpbnF1aXNoX3AybV9tYXBwaW5nKHN0 cnVjdCBkb21haW4gKmQpCj4gICAgICAgcmV0dXJuIGFwcGx5X3AybV9jaGFuZ2VzKGQsIFJFTElO UVVJU0gsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZm5fdG9fcGFkZHIocDJt LT5sb3dlc3RfbWFwcGVkX2dmbiksCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw Zm5fdG9fcGFkZHIocDJtLT5tYXhfbWFwcGVkX2dmbiksCj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBmbl90b19wYWRkcihJTlZBTElEX01GTiksCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBmbl90b19wYWRkcihtZm5feChJTlZBTElEX01GTikpLAo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTUFUVFJfTUVNLCAwLCBwMm1faW52YWxpZCwKPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQtPmFyY2gucDJtLmRlZmF1bHRfYWNjZXNzKTsK PiAgIH0KPiBAQCAtMTQ3Niw3ICsxNDc2LDcgQEAgaW50IHAybV9jYWNoZV9mbHVzaChzdHJ1Y3Qg ZG9tYWluICpkLCB4ZW5fcGZuX3Qgc3RhcnRfbWZuLCB4ZW5fcGZuX3QgZW5kX21mbikKPiAgICAg ICByZXR1cm4gYXBwbHlfcDJtX2NoYW5nZXMoZCwgQ0FDSEVGTFVTSCwKPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcGZuX3RvX3BhZGRyKHN0YXJ0X21mbiksCj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBmbl90b19wYWRkcihlbmRfbWZuKSwKPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwZm5fdG9fcGFkZHIoSU5WQUxJRF9NRk4pLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBmbl90b19wYWRkcihtZm5feChJTlZBTElEX01GTikpLAo+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVRUUl9NRU0sIDAsIHAybV9pbnZhbGlkLAo+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLT5hcmNoLnAybS5kZWZhdWx0X2FjY2Vz cyk7Cj4gICB9Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUvbWNoZWNrL21jZS5jIGIv eGVuL2FyY2gveDg2L2NwdS9tY2hlY2svbWNlLmMKPiBpbmRleCBlZGNiZTQ4Li4yNjk1YjBjIDEw MDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9jcHUvbWNoZWNrL21jZS5jCj4gKysrIGIveGVuL2Fy Y2gveDg2L2NwdS9tY2hlY2svbWNlLmMKPiBAQCAtMTQ1NSw3ICsxNDU1LDcgQEAgbG9uZyBkb19t Y2EoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fbWNfdCkgdV94ZW5fbWMpCj4gICAgICAgICAg ICAgICAgICAgZ2ZuID0gUEZOX0RPV04oZ2FkZHIpOwo+ICAgICAgICAgICAgICAgICAgIG1mbiA9 IG1mbl94KGdldF9nZm4oZCwgZ2ZuLCAmdCkpOwo+Cj4gLSAgICAgICAgICAgICAgICBpZiAoIG1m biA9PSBJTlZBTElEX01GTiApCj4gKyAgICAgICAgICAgICAgICBpZiAoIG1mbiA9PSBtZm5feChJ TlZBTElEX01GTikgKQo+ICAgICAgICAgICAgICAgICAgIHsKPiAgICAgICAgICAgICAgICAgICAg ICAgcHV0X2dmbihkLCBnZm4pOwo+ICAgICAgICAgICAgICAgICAgICAgICBwdXRfZG9tYWluKGQp Owo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZGVidWcuYyBiL3hlbi9hcmNoL3g4Ni9kZWJ1 Zy5jCj4gaW5kZXggNThjYWUyMi4uOTIxM2VhNyAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYv ZGVidWcuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9kZWJ1Zy5jCj4gQEAgLTQzLDExICs0MywxMSBA QCB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgZGJndmFfdDsKPiAgIHR5cGVkZWYgdW5zaWduZWQgY2hh ciBkYmdieXRlX3Q7Cj4KPiAgIC8qIFJldHVybnM6IG1mbiBmb3IgdGhlIGdpdmVuIChodm0gZ3Vl c3QpIHZhZGRyICovCj4gLXN0YXRpYyB1bnNpZ25lZCBsb25nCj4gK3N0YXRpYyBtZm5fdAo+ICAg ZGJnX2h2bV92YTJtZm4oZGJndmFfdCB2YWRkciwgc3RydWN0IGRvbWFpbiAqZHAsIGludCB0b2Fk ZHIsCj4gICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqZ2ZuKQo+ICAgewo+IC0gICAg dW5zaWduZWQgbG9uZyBtZm47Cj4gKyAgICBtZm5fdCBtZm47Cj4gICAgICAgdWludDMyX3QgcGZl YyA9IFBGRUNfcGFnZV9wcmVzZW50Owo+ICAgICAgIHAybV90eXBlX3QgZ2ZudHlwZTsKPgo+IEBA IC02MCwxNiArNjAsMTcgQEAgZGJnX2h2bV92YTJtZm4oZGJndmFfdCB2YWRkciwgc3RydWN0IGRv bWFpbiAqZHAsIGludCB0b2FkZHIsCj4gICAgICAgICAgIHJldHVybiBJTlZBTElEX01GTjsKPiAg ICAgICB9Cj4KPiAtICAgIG1mbiA9IG1mbl94KGdldF9nZm4oZHAsICpnZm4sICZnZm50eXBlKSk7 Cj4gKyAgICBtZm4gPSBnZXRfZ2ZuKGRwLCAqZ2ZuLCAmZ2ZudHlwZSk7Cj4gICAgICAgaWYgKCBw Mm1faXNfcmVhZG9ubHkoZ2ZudHlwZSkgJiYgdG9hZGRyICkKPiAgICAgICB7Cj4gICAgICAgICAg IERCR1AyKCJrZGI6cDJtX2lzX3JlYWRvbmx5OiBnZm50eXBlOiV4XG4iLCBnZm50eXBlKTsKPiAg ICAgICAgICAgbWZuID0gSU5WQUxJRF9NRk47Cj4gICAgICAgfQo+ICAgICAgIGVsc2UKPiAtICAg ICAgICBEQkdQMigiWDogdmFkZHI6JWx4IGRvbWlkOiVkIG1mbjolbHhcbiIsIHZhZGRyLCBkcC0+ ZG9tYWluX2lkLCBtZm4pOwo+ICsgICAgICAgIERCR1AyKCJYOiB2YWRkcjolbHggZG9taWQ6JWQg bWZuOiUjIlBSSV9tZm4iXG4iLAo+ICsgICAgICAgICAgICAgIHZhZGRyLCBkcC0+ZG9tYWluX2lk LCBtZm5feChtZm4pKTsKPgo+IC0gICAgaWYgKCBtZm4gPT0gSU5WQUxJRF9NRk4gKQo+ICsgICAg aWYgKCBtZm5fZXEobWZuLCBJTlZBTElEX01GTikgKQo+ICAgICAgIHsKPiAgICAgICAgICAgcHV0 X2dmbihkcCwgKmdmbik7Cj4gICAgICAgICAgICpnZm4gPSBJTlZBTElEX0dGTjsKPiBAQCAtOTEs NyArOTIsNyBAQCBkYmdfaHZtX3ZhMm1mbihkYmd2YV90IHZhZGRyLCBzdHJ1Y3QgZG9tYWluICpk cCwgaW50IHRvYWRkciwKPiAgICAqICAgICAgIG1vZGUuCj4gICAgKiBSZXR1cm5zOiBtZm4gZm9y IHRoZSBnaXZlbiAocHYgZ3Vlc3QpIHZhZGRyCj4gICAgKi8KPiAtc3RhdGljIHVuc2lnbmVkIGxv bmcKPiArc3RhdGljIG1mbl90Cj4gICBkYmdfcHZfdmEybWZuKGRiZ3ZhX3QgdmFkZHIsIHN0cnVj dCBkb21haW4gKmRwLCB1aW50NjRfdCBwZ2QzdmFsKQo+ICAgewo+ICAgICAgIGw0X3BnZW50cnlf dCBsNGUsICpsNHQ7Cj4gQEAgLTk5LDMxICsxMDAsMzEgQEAgZGJnX3B2X3ZhMm1mbihkYmd2YV90 IHZhZGRyLCBzdHJ1Y3QgZG9tYWluICpkcCwgdWludDY0X3QgcGdkM3ZhbCkKPiAgICAgICBsMl9w Z2VudHJ5X3QgbDJlLCAqbDJ0Owo+ICAgICAgIGwxX3BnZW50cnlfdCBsMWUsICpsMXQ7Cj4gICAg ICAgdW5zaWduZWQgbG9uZyBjcjMgPSAocGdkM3ZhbCA/IHBnZDN2YWwgOiBkcC0+dmNwdVswXS0+ YXJjaC5jcjMpOwo+IC0gICAgdW5zaWduZWQgbG9uZyBtZm4gPSBjcjMgPj4gUEFHRV9TSElGVDsK PiArICAgIG1mbl90IG1mbiA9IF9tZm4oY3IzID4+IFBBR0VfU0hJRlQpOwo+Cj4gICAgICAgREJH UDIoInZhZGRyOiVseCBkb21pZDolZCBjcjM6JWx4IHBnZDM6JWx4XG4iLCB2YWRkciwgZHAtPmRv bWFpbl9pZCwKPiAgICAgICAgICAgICBjcjMsIHBnZDN2YWwpOwo+Cj4gICAgICAgaWYgKCBwZ2Qz dmFsID09IDAgKQo+ICAgICAgIHsKPiAtICAgICAgICBsNHQgPSBtYXBfZG9tYWluX3BhZ2UoX21m bihtZm4pKTsKPiArICAgICAgICBsNHQgPSBtYXBfZG9tYWluX3BhZ2UobWZuKTsKPiAgICAgICAg ICAgbDRlID0gbDR0W2w0X3RhYmxlX29mZnNldCh2YWRkcildOwo+ICAgICAgICAgICB1bm1hcF9k b21haW5fcGFnZShsNHQpOwo+IC0gICAgICAgIG1mbiA9IGw0ZV9nZXRfcGZuKGw0ZSk7Cj4gLSAg ICAgICAgREJHUDIoImw0dDolcCBsNHRvOiVseCBsNGU6JWx4IG1mbjolbHhcbiIsIGw0dCwKPiAt ICAgICAgICAgICAgICBsNF90YWJsZV9vZmZzZXQodmFkZHIpLCBsNGUsIG1mbik7Cj4gKyAgICAg ICAgbWZuID0gX21mbihsNGVfZ2V0X3BmbihsNGUpKTsKPiArICAgICAgICBEQkdQMigibDR0OiVw IGw0dG86JWx4IGw0ZTolbHggbWZuOiUjIlBSSV9tZm4iXG4iLCBsNHQsCj4gKyAgICAgICAgICAg ICAgbDRfdGFibGVfb2Zmc2V0KHZhZGRyKSwgbDRlLCBtZm5feChtZm4pKTsKPiAgICAgICAgICAg aWYgKCAhKGw0ZV9nZXRfZmxhZ3MobDRlKSAmIF9QQUdFX1BSRVNFTlQpICkKPiAgICAgICAgICAg ewo+ICAgICAgICAgICAgICAgREJHUDEoImw0IFBBR0Ugbm90IHByZXNlbnQuIHZhZGRyOiVseCBj cjM6JWx4XG4iLCB2YWRkciwgY3IzKTsKPiAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEX01G TjsKPiAgICAgICAgICAgfQo+Cj4gLSAgICAgICAgbDN0ID0gbWFwX2RvbWFpbl9wYWdlKF9tZm4o bWZuKSk7Cj4gKyAgICAgICAgbDN0ID0gbWFwX2RvbWFpbl9wYWdlKG1mbik7Cj4gICAgICAgICAg IGwzZSA9IGwzdFtsM190YWJsZV9vZmZzZXQodmFkZHIpXTsKPiAgICAgICAgICAgdW5tYXBfZG9t YWluX3BhZ2UobDN0KTsKPiAtICAgICAgICBtZm4gPSBsM2VfZ2V0X3BmbihsM2UpOwo+IC0gICAg ICAgIERCR1AyKCJsM3Q6JXAgbDN0bzolbHggbDNlOiVseCBtZm46JWx4XG4iLCBsM3QsCj4gLSAg ICAgICAgICAgICAgbDNfdGFibGVfb2Zmc2V0KHZhZGRyKSwgbDNlLCBtZm4pOwo+ICsgICAgICAg IG1mbiA9IF9tZm4obDNlX2dldF9wZm4obDNlKSk7Cj4gKyAgICAgICAgREJHUDIoImwzdDolcCBs M3RvOiVseCBsM2U6JWx4IG1mbjolIyJQUklfbWZuIlxuIiwgbDN0LAo+ICsgICAgICAgICAgICAg IGwzX3RhYmxlX29mZnNldCh2YWRkciksIGwzZSwgbWZuX3gobWZuKSk7Cj4gICAgICAgICAgIGlm ICggIShsM2VfZ2V0X2ZsYWdzKGwzZSkgJiBfUEFHRV9QUkVTRU5UKSB8fAo+ICAgICAgICAgICAg ICAgIChsM2VfZ2V0X2ZsYWdzKGwzZSkgJiBfUEFHRV9QU0UpICkKPiAgICAgICAgICAgewo+IEBA IC0xMzIsMjYgKzEzMywyNiBAQCBkYmdfcHZfdmEybWZuKGRiZ3ZhX3QgdmFkZHIsIHN0cnVjdCBk b21haW4gKmRwLCB1aW50NjRfdCBwZ2QzdmFsKQo+ICAgICAgICAgICB9Cj4gICAgICAgfQo+Cj4g LSAgICBsMnQgPSBtYXBfZG9tYWluX3BhZ2UoX21mbihtZm4pKTsKPiArICAgIGwydCA9IG1hcF9k b21haW5fcGFnZShtZm4pOwo+ICAgICAgIGwyZSA9IGwydFtsMl90YWJsZV9vZmZzZXQodmFkZHIp XTsKPiAgICAgICB1bm1hcF9kb21haW5fcGFnZShsMnQpOwo+IC0gICAgbWZuID0gbDJlX2dldF9w Zm4obDJlKTsKPiAtICAgIERCR1AyKCJsMnQ6JXAgbDJ0bzolbHggbDJlOiVseCBtZm46JWx4XG4i LCBsMnQsIGwyX3RhYmxlX29mZnNldCh2YWRkciksCj4gLSAgICAgICAgICBsMmUsIG1mbik7Cj4g KyAgICBtZm4gPSBfbWZuKGwyZV9nZXRfcGZuKGwyZSkpOwo+ICsgICAgREJHUDIoImwydDolcCBs MnRvOiVseCBsMmU6JWx4IG1mbjolIyJQUklfbWZuIlxuIiwKPiArICAgICAgICAgIGwydCwgbDJf dGFibGVfb2Zmc2V0KHZhZGRyKSwgbDJlLCBtZm5feChtZm4pKTsKPiAgICAgICBpZiAoICEobDJl X2dldF9mbGFncyhsMmUpICYgX1BBR0VfUFJFU0VOVCkgfHwKPiAgICAgICAgICAgIChsMmVfZ2V0 X2ZsYWdzKGwyZSkgJiBfUEFHRV9QU0UpICkKPiAgICAgICB7Cj4gICAgICAgICAgIERCR1AxKCJs MiBQQUdFIG5vdCBwcmVzZW50LiB2YWRkcjolbHggY3IzOiVseFxuIiwgdmFkZHIsIGNyMyk7Cj4g ICAgICAgICAgIHJldHVybiBJTlZBTElEX01GTjsKPiAgICAgICB9Cj4gLSAgICBsMXQgPSBtYXBf ZG9tYWluX3BhZ2UoX21mbihtZm4pKTsKPiArICAgIGwxdCA9IG1hcF9kb21haW5fcGFnZShtZm4p Owo+ICAgICAgIGwxZSA9IGwxdFtsMV90YWJsZV9vZmZzZXQodmFkZHIpXTsKPiAgICAgICB1bm1h cF9kb21haW5fcGFnZShsMXQpOwo+IC0gICAgbWZuID0gbDFlX2dldF9wZm4obDFlKTsKPiAtICAg IERCR1AyKCJsMXQ6JXAgbDF0bzolbHggbDFlOiVseCBtZm46JWx4XG4iLCBsMXQsIGwxX3RhYmxl X29mZnNldCh2YWRkciksCj4gLSAgICAgICAgICBsMWUsIG1mbik7Cj4gKyAgICBtZm4gPSBfbWZu KGwxZV9nZXRfcGZuKGwxZSkpOwo+ICsgICAgREJHUDIoImwxdDolcCBsMXRvOiVseCBsMWU6JWx4 IG1mbjolIyJQUklfbWZuIlxuIiwgbDF0LCBsMV90YWJsZV9vZmZzZXQodmFkZHIpLAo+ICsgICAg ICAgICAgbDFlLCBtZm5feChtZm4pKTsKPgo+IC0gICAgcmV0dXJuIG1mbl92YWxpZChtZm4pID8g bWZuIDogSU5WQUxJRF9NRk47Cj4gKyAgICByZXR1cm4gbWZuX3ZhbGlkKG1mbl94KG1mbikpID8g bWZuIDogSU5WQUxJRF9NRk47Cj4gICB9Cj4KPiAgIC8qIFJldHVybnM6IG51bWJlciBvZiBieXRl cyByZW1haW5pbmcgdG8gYmUgY29waWVkICovCj4gQEAgLTE2MywyMyArMTY0LDI0IEBAIHVuc2ln bmVkIGludCBkYmdfcndfZ3Vlc3RfbWVtKHN0cnVjdCBkb21haW4gKmRwLCB2b2lkICogX191c2Vy IGdhZGRyLAo+ICAgICAgIHsKPiAgICAgICAgICAgY2hhciAqdmE7Cj4gICAgICAgICAgIHVuc2ln bmVkIGxvbmcgYWRkciA9ICh1bnNpZ25lZCBsb25nKWdhZGRyOwo+IC0gICAgICAgIHVuc2lnbmVk IGxvbmcgbWZuLCBnZm4gPSBJTlZBTElEX0dGTiwgcGFnZWNudDsKPiArICAgICAgICBtZm5fdCBt Zm47Cj4gKyAgICAgICAgdW5zaWduZWQgbG9uZyBnZm4gPSBJTlZBTElEX0dGTiwgcGFnZWNudDsK Pgo+ICAgICAgICAgICBwYWdlY250ID0gbWluX3QobG9uZywgUEFHRV9TSVpFIC0gKGFkZHIgJiB+ UEFHRV9NQVNLKSwgbGVuKTsKPgo+ICAgICAgICAgICBtZm4gPSAoaGFzX2h2bV9jb250YWluZXJf ZG9tYWluKGRwKQo+ICAgICAgICAgICAgICAgICAgPyBkYmdfaHZtX3ZhMm1mbihhZGRyLCBkcCwg dG9hZGRyLCAmZ2ZuKQo+ICAgICAgICAgICAgICAgICAgOiBkYmdfcHZfdmEybWZuKGFkZHIsIGRw LCBwZ2QzKSk7Cj4gLSAgICAgICAgaWYgKCBtZm4gPT0gSU5WQUxJRF9NRk4gKQo+ICsgICAgICAg IGlmICggbWZuX2VxKG1mbiwgSU5WQUxJRF9NRk4pICkKPiAgICAgICAgICAgICAgIGJyZWFrOwo+ Cj4gLSAgICAgICAgdmEgPSBtYXBfZG9tYWluX3BhZ2UoX21mbihtZm4pKTsKPiArICAgICAgICB2 YSA9IG1hcF9kb21haW5fcGFnZShtZm4pOwo+ICAgICAgICAgICB2YSA9IHZhICsgKGFkZHIgJiAo UEFHRV9TSVpFLTEpKTsKPgo+ICAgICAgICAgICBpZiAoIHRvYWRkciApCj4gICAgICAgICAgIHsK PiAgICAgICAgICAgICAgIGNvcHlfZnJvbV91c2VyKHZhLCBidWYsIHBhZ2VjbnQpOyAgICAvKiB2 YSA9IGJ1ZiAqLwo+IC0gICAgICAgICAgICBwYWdpbmdfbWFya19kaXJ0eShkcCwgbWZuKTsKPiAr ICAgICAgICAgICAgcGFnaW5nX21hcmtfZGlydHkoZHAsIG1mbl94KG1mbikpOwo+ICAgICAgICAg ICB9Cj4gICAgICAgICAgIGVsc2UKPiAgICAgICAgICAgewo+IGRpZmYgLS1naXQgYS94ZW4vYXJj aC94ODYvaHZtL2h2bS5jIGIveGVuL2FyY2gveDg2L2h2bS9odm0uYwo+IGluZGV4IGM4OWFiNmUu LmYzZmFmMmUgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L2h2bS9odm0uYwo+ICsrKyBiL3hl bi9hcmNoL3g4Ni9odm0vaHZtLmMKPiBAQCAtMTc5Niw3ICsxNzk2LDcgQEAgaW50IGh2bV9oYXBf bmVzdGVkX3BhZ2VfZmF1bHQocGFkZHJfdCBncGEsIHVuc2lnbmVkIGxvbmcgZ2xhLAo+ICAgICAg ICAgICBwMm0gPSBob3N0cDJtOwo+Cj4gICAgICAgLyogQ2hlY2sgYWNjZXNzIHBlcm1pc3Npb25z IGZpcnN0LCB0aGVuIGhhbmRsZSBmYXVsdHMgKi8KPiAtICAgIGlmICggbWZuX3gobWZuKSAhPSBJ TlZBTElEX01GTiApCj4gKyAgICBpZiAoICFtZm5fZXEobWZuLCBJTlZBTElEX01GTikgKQo+ICAg ICAgIHsKPiAgICAgICAgICAgYm9vbF90IHZpb2xhdGlvbjsKPgo+IEBAIC01Mjk5LDggKzUyOTks OCBAQCBzdGF0aWMgaW50IGRvX2FsdHAybV9vcCgKPiAgICAgICAgICAgICAgIHJjID0gLUVJTlZB TDsKPgo+ICAgICAgICAgICBpZiAoIChnZm5feCh2Y3B1X2FsdHAybShjdXJyKS52ZWluZm9fZ2Zu KSAhPSBJTlZBTElEX0dGTikgfHwKPiAtICAgICAgICAgICAgIChtZm5feChnZXRfZ2ZuX3F1ZXJ5 X3VubG9ja2VkKGN1cnItPmRvbWFpbiwKPiAtICAgICAgICAgICAgICAgICAgICBhLnUuZW5hYmxl X25vdGlmeS5nZm4sICZwMm10KSkgPT0gSU5WQUxJRF9NRk4pICkKPiArICAgICAgICAgICAgIG1m bl9lcShnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGN1cnItPmRvbWFpbiwKPiArICAgICAgICAgICAg ICAgICAgICBhLnUuZW5hYmxlX25vdGlmeS5nZm4sICZwMm10KSwgSU5WQUxJRF9NRk4pICkKPiAg ICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+Cj4gICAgICAgICAgIHZjcHVfYWx0cDJtKGN1 cnIpLnZlaW5mb19nZm4gPSBfZ2ZuKGEudS5lbmFibGVfbm90aWZ5Lmdmbik7Cj4gZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4uYyBiL3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRp YW4uYwo+IGluZGV4IDgyNTNmZDAuLjE3MzRiN2UgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2 L2h2bS92aXJpZGlhbi5jCj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi5jCj4gQEAg LTE5NSw4ICsxOTUsOCBAQCBzdGF0aWMgdm9pZCBlbmFibGVfaHlwZXJjYWxsX3BhZ2Uoc3RydWN0 IGRvbWFpbiAqZCkKPiAgICAgICB7Cj4gICAgICAgICAgIGlmICggcGFnZSApCj4gICAgICAgICAg ICAgICBwdXRfcGFnZShwYWdlKTsKPiAtICAgICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywg IkJhZCBHTUZOICVseCAoTUZOICVseClcbiIsIGdtZm4sCj4gLSAgICAgICAgICAgICAgICAgcGFn ZSA/IHBhZ2VfdG9fbWZuKHBhZ2UpIDogSU5WQUxJRF9NRk4pOwo+ICsgICAgICAgIGdkcHJpbnRr KFhFTkxPR19XQVJOSU5HLCAiQmFkIEdNRk4gJSMiUFJJX2dmbiIgKE1GTiAlIyJQUklfbWZuIilc biIsCj4gKyAgICAgICAgICAgICAgICAgZ21mbiwgcGFnZSA/IHBhZ2VfdG9fbWZuKHBhZ2UpIDog bWZuX3goSU5WQUxJRF9NRk4pKTsKPiAgICAgICAgICAgcmV0dXJuOwo+ICAgICAgIH0KPgo+IEBA IC0yNjgsOCArMjY4LDggQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZV9hcGljX2Fzc2lzdChzdHJ1 Y3QgdmNwdSAqdikKPiAgICAgICByZXR1cm47Cj4KPiAgICBmYWlsOgo+IC0gICAgZ2RwcmludGso WEVOTE9HX1dBUk5JTkcsICJCYWQgR01GTiAlbHggKE1GTiAlbHgpXG4iLCBnbWZuLAo+IC0gICAg ICAgICAgICAgcGFnZSA/IHBhZ2VfdG9fbWZuKHBhZ2UpIDogSU5WQUxJRF9NRk4pOwo+ICsgICAg Z2RwcmludGsoWEVOTE9HX1dBUk5JTkcsICJCYWQgR01GTiAlIyJQUklfZ2ZuIiAoTUZOICUjIlBS SV9tZm4iKVxuIiwgZ21mbiwKPiArICAgICAgICAgICAgIHBhZ2UgPyBwYWdlX3RvX21mbihwYWdl KSA6IG1mbl94KElOVkFMSURfTUZOKSk7Cj4gICB9Cj4KPiAgIHN0YXRpYyB2b2lkIHRlYXJkb3du X2FwaWNfYXNzaXN0KHN0cnVjdCB2Y3B1ICp2KQo+IEBAIC0zNDgsOCArMzQ4LDggQEAgc3RhdGlj IHZvaWQgdXBkYXRlX3JlZmVyZW5jZV90c2Moc3RydWN0IGRvbWFpbiAqZCwgYm9vbF90IGluaXRp YWxpemUpCj4gICAgICAgewo+ICAgICAgICAgICBpZiAoIHBhZ2UgKQo+ICAgICAgICAgICAgICAg cHV0X3BhZ2UocGFnZSk7Cj4gLSAgICAgICAgZ2RwcmludGsoWEVOTE9HX1dBUk5JTkcsICJCYWQg R01GTiAlbHggKE1GTiAlbHgpXG4iLCBnbWZuLAo+IC0gICAgICAgICAgICAgICAgIHBhZ2UgPyBw YWdlX3RvX21mbihwYWdlKSA6IElOVkFMSURfTUZOKTsKPiArICAgICAgICBnZHByaW50ayhYRU5M T0dfV0FSTklORywgIkJhZCBHTUZOICUjIlBSSV9nZm4iIChNRk4gJSMiUFJJX21mbiIpXG4iLAo+ ICsgICAgICAgICAgICAgICAgIGdtZm4sIHBhZ2UgPyBwYWdlX3RvX21mbihwYWdlKSA6IG1mbl94 KElOVkFMSURfTUZOKSk7Cj4gICAgICAgICAgIHJldHVybjsKPiAgICAgICB9Cj4KPiBkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMgYi94ZW4vYXJjaC94ODYvaHZtL3ZteC92 bXguYwo+IGluZGV4IGRmMTk1NzkuLmEwNjE0MjAgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2 L2h2bS92bXgvdm14LmMKPiArKysgYi94ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYwo+IEBAIC0y MDI1LDcgKzIwMjUsNyBAQCBzdGF0aWMgdm9pZCB2bXhfdmNwdV91cGRhdGVfdm1mdW5jX3ZlKHN0 cnVjdCB2Y3B1ICp2KQo+Cj4gICAgICAgICAgICAgICBtZm4gPSBnZXRfZ2ZuX3F1ZXJ5X3VubG9j a2VkKGQsIGdmbl94KHZjcHVfYWx0cDJtKHYpLnZlaW5mb19nZm4pLCAmdCk7Cj4KPiAtICAgICAg ICAgICAgaWYgKCBtZm5feChtZm4pICE9IElOVkFMSURfTUZOICkKPiArICAgICAgICAgICAgaWYg KCAhbWZuX2VxKG1mbiwgSU5WQUxJRF9NRk4pICkKPiAgICAgICAgICAgICAgICAgICBfX3Ztd3Jp dGUoVklSVF9FWENFUFRJT05fSU5GTywgbWZuX3gobWZuKSA8PCBQQUdFX1NISUZUKTsKPiAgICAg ICAgICAgICAgIGVsc2UKPiAgICAgICAgICAgICAgICAgICB2LT5hcmNoLmh2bV92bXguc2Vjb25k YXJ5X2V4ZWNfY29udHJvbCAmPQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vZ3Vlc3Rf d2Fsay5jIGIveGVuL2FyY2gveDg2L21tL2d1ZXN0X3dhbGsuYwo+IGluZGV4IGU4NTA1MDIuLjg2 OGU5MDkgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L21tL2d1ZXN0X3dhbGsuYwo+ICsrKyBi L3hlbi9hcmNoL3g4Ni9tbS9ndWVzdF93YWxrLmMKPiBAQCAtMjgxLDcgKzI4MSw3IEBAIGd1ZXN0 X3dhbGtfdGFibGVzKHN0cnVjdCB2Y3B1ICp2LCBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLAo+ICAg ICAgICAgICBzdGFydCA9IF9nZm4oKGdmbl94KHN0YXJ0KSAmIH5HVUVTVF9MM19HRk5fTUFTSykg Kwo+ICAgICAgICAgICAgICAgICAgICAgICAgKCh2YSA+PiBQQUdFX1NISUZUKSAmIEdVRVNUX0wz X0dGTl9NQVNLKSk7Cj4gICAgICAgICAgIGd3LT5sMWUgPSBndWVzdF9sMWVfZnJvbV9nZm4oc3Rh cnQsIGZsYWdzKTsKPiAtICAgICAgICBndy0+bDJtZm4gPSBndy0+bDFtZm4gPSBfbWZuKElOVkFM SURfTUZOKTsKPiArICAgICAgICBndy0+bDJtZm4gPSBndy0+bDFtZm4gPSBJTlZBTElEX01GTjsK PiAgICAgICAgICAgZ290byBzZXRfYWQ7Cj4gICAgICAgfQo+Cj4gQEAgLTM1Niw3ICszNTYsNyBA QCBndWVzdF93YWxrX3RhYmxlcyhzdHJ1Y3QgdmNwdSAqdiwgc3RydWN0IHAybV9kb21haW4gKnAy bSwKPiAgICAgICAgICAgc3RhcnQgPSBfZ2ZuKChnZm5feChzdGFydCkgJiB+R1VFU1RfTDJfR0ZO X01BU0spICsKPiAgICAgICAgICAgICAgICAgICAgICAgIGd1ZXN0X2wxX3RhYmxlX29mZnNldCh2 YSkpOwo+ICAgICAgICAgICBndy0+bDFlID0gZ3Vlc3RfbDFlX2Zyb21fZ2ZuKHN0YXJ0LCBmbGFn cyk7Cj4gLSAgICAgICAgZ3ctPmwxbWZuID0gX21mbihJTlZBTElEX01GTik7Cj4gKyAgICAgICAg Z3ctPmwxbWZuID0gSU5WQUxJRF9NRk47Cj4gICAgICAgfQo+ICAgICAgIGVsc2UKPiAgICAgICB7 Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9oYXAvaGFwLmMgYi94ZW4vYXJjaC94ODYv bW0vaGFwL2hhcC5jCj4gaW5kZXggOWMyY2Q0OS4uMzIxOGZhMiAxMDA2NDQKPiAtLS0gYS94ZW4v YXJjaC94ODYvbW0vaGFwL2hhcC5jCj4gKysrIGIveGVuL2FyY2gveDg2L21tL2hhcC9oYXAuYwo+ IEBAIC00MzAsNyArNDMwLDcgQEAgc3RhdGljIG1mbl90IGhhcF9tYWtlX21vbml0b3JfdGFibGUo c3RydWN0IHZjcHUgKnYpCj4gICAgb29tOgo+ICAgICAgIEhBUF9FUlJPUigib3V0IG9mIG1lbW9y eSBidWlsZGluZyBtb25pdG9yIHBhZ2V0YWJsZVxuIik7Cj4gICAgICAgZG9tYWluX2NyYXNoKGQp Owo+IC0gICAgcmV0dXJuIF9tZm4oSU5WQUxJRF9NRk4pOwo+ICsgICAgcmV0dXJuIElOVkFMSURf TUZOOwo+ICAgfQo+Cj4gICBzdGF0aWMgdm9pZCBoYXBfZGVzdHJveV9tb25pdG9yX3RhYmxlKHN0 cnVjdCB2Y3B1KiB2LCBtZm5fdCBtbWZuKQo+IEBAIC01MDksNyArNTA5LDcgQEAgaW50IGhhcF9l bmFibGUoc3RydWN0IGRvbWFpbiAqZCwgdTMyIG1vZGUpCj4gICAgICAgICAgIH0KPgo+ICAgICAg ICAgICBmb3IgKCBpID0gMDsgaSA8IE1BWF9FUFRQOyBpKysgKQo+IC0gICAgICAgICAgICBkLT5h cmNoLmFsdHAybV9lcHRwW2ldID0gSU5WQUxJRF9NRk47Cj4gKyAgICAgICAgICAgIGQtPmFyY2gu YWx0cDJtX2VwdHBbaV0gPSBtZm5feChJTlZBTElEX01GTik7Cj4KPiAgICAgICAgICAgZm9yICgg aSA9IDA7IGkgPCBNQVhfQUxUUDJNOyBpKysgKQo+ICAgICAgICAgICB7Cj4gZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMgYi94ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jCj4g aW5kZXggNzE2NmM3MS4uNmQwMzczNiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJt LWVwdC5jCj4gKysrIGIveGVuL2FyY2gveDg2L21tL3AybS1lcHQuYwo+IEBAIC01MCw3ICs1MCw3 IEBAIHN0YXRpYyBpbnQgYXRvbWljX3dyaXRlX2VwdF9lbnRyeShlcHRfZW50cnlfdCAqZW50cnlw dHIsIGVwdF9lbnRyeV90IG5ldywKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgbGV2ZWwpCj4gICB7Cj4gICAgICAgaW50IHJjOwo+IC0gICAgdW5zaWduZWQgbG9uZyBv bGRtZm4gPSBJTlZBTElEX01GTjsKPiArICAgIHVuc2lnbmVkIGxvbmcgb2xkbWZuID0gbWZuX3go SU5WQUxJRF9NRk4pOwo+ICAgICAgIGJvb2xfdCBjaGVja19mb3JlaWduID0gKG5ldy5tZm4gIT0g ZW50cnlwdHItPm1mbiB8fAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldy5zYV9w Mm10ICE9IGVudHJ5cHRyLT5zYV9wMm10KTsKPgo+IEBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBp bnQgYXRvbWljX3dyaXRlX2VwdF9lbnRyeShlcHRfZW50cnlfdCAqZW50cnlwdHIsIGVwdF9lbnRy eV90IG5ldywKPgo+ICAgICAgIHdyaXRlX2F0b21pYygmZW50cnlwdHItPmVwdGUsIG5ldy5lcHRl KTsKPgo+IC0gICAgaWYgKCB1bmxpa2VseShvbGRtZm4gIT0gSU5WQUxJRF9NRk4pICkKPiArICAg IGlmICggdW5saWtlbHkob2xkbWZuICE9IG1mbl94KElOVkFMSURfTUZOKSkgKQo+ICAgICAgICAg ICBwdXRfcGFnZShtZm5fdG9fcGFnZShvbGRtZm4pKTsKPgo+ICAgICAgIHJjID0gMDsKPiBAQCAt ODg3LDcgKzg4Nyw3IEBAIHN0YXRpYyBtZm5fdCBlcHRfZ2V0X2VudHJ5KHN0cnVjdCBwMm1fZG9t YWluICpwMm0sCj4gICAgICAgaW50IGk7Cj4gICAgICAgaW50IHJldCA9IDA7Cj4gICAgICAgYm9v bF90IHJlY2FsYyA9IDA7Cj4gLSAgICBtZm5fdCBtZm4gPSBfbWZuKElOVkFMSURfTUZOKTsKPiAr ICAgIG1mbl90IG1mbiA9IElOVkFMSURfTUZOOwo+ICAgICAgIHN0cnVjdCBlcHRfZGF0YSAqZXB0 ID0gJnAybS0+ZXB0Owo+Cj4gICAgICAgKnQgPSBwMm1fbW1pb19kbTsKPiBkaWZmIC0tZ2l0IGEv eGVuL2FyY2gveDg2L21tL3AybS1wb2QuYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcG9kLmMKPiBp bmRleCBiN2FiMTY5Li5mMzg0NTg5IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0t cG9kLmMKPiArKysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLXBvZC5jCj4gQEAgLTU1OSw3ICs1NTks NyBAQCBwMm1fcG9kX2RlY3JlYXNlX3Jlc2VydmF0aW9uKHN0cnVjdCBkb21haW4gKmQsCj4gICAg ICAgewo+ICAgICAgICAgICAvKiBBbGwgUG9EOiBNYXJrIHRoZSB3aG9sZSByZWdpb24gaW52YWxp ZCBhbmQgdGVsbCBjYWxsZXIKPiAgICAgICAgICAgICogd2UncmUgZG9uZS4gKi8KPiAtICAgICAg ICBwMm1fc2V0X2VudHJ5KHAybSwgZ3BmbiwgX21mbihJTlZBTElEX01GTiksIG9yZGVyLCBwMm1f aW52YWxpZCwKPiArICAgICAgICBwMm1fc2V0X2VudHJ5KHAybSwgZ3BmbiwgSU5WQUxJRF9NRk4s IG9yZGVyLCBwMm1faW52YWxpZCwKPiAgICAgICAgICAgICAgICAgICAgICAgICBwMm0tPmRlZmF1 bHRfYWNjZXNzKTsKPiAgICAgICAgICAgcDJtLT5wb2QuZW50cnlfY291bnQtPSgxPDxvcmRlcik7 Cj4gICAgICAgICAgIEJVR19PTihwMm0tPnBvZC5lbnRyeV9jb3VudCA8IDApOwo+IEBAIC02MDIs NyArNjAyLDcgQEAgcDJtX3BvZF9kZWNyZWFzZV9yZXNlcnZhdGlvbihzdHJ1Y3QgZG9tYWluICpk LAo+ICAgICAgICAgICBuID0gMVVMIDw8IGN1cl9vcmRlcjsKPiAgICAgICAgICAgaWYgKCB0ID09 IHAybV9wb3B1bGF0ZV9vbl9kZW1hbmQgKQo+ICAgICAgICAgICB7Cj4gLSAgICAgICAgICAgIHAy bV9zZXRfZW50cnkocDJtLCBncGZuICsgaSwgX21mbihJTlZBTElEX01GTiksIGN1cl9vcmRlciwK PiArICAgICAgICAgICAgcDJtX3NldF9lbnRyeShwMm0sIGdwZm4gKyBpLCBJTlZBTElEX01GTiwg Y3VyX29yZGVyLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1faW52YWxpZCwgcDJt LT5kZWZhdWx0X2FjY2Vzcyk7Cj4gICAgICAgICAgICAgICBwMm0tPnBvZC5lbnRyeV9jb3VudCAt PSBuOwo+ICAgICAgICAgICAgICAgQlVHX09OKHAybS0+cG9kLmVudHJ5X2NvdW50IDwgMCk7Cj4g QEAgLTYyNCw3ICs2MjQsNyBAQCBwMm1fcG9kX2RlY3JlYXNlX3Jlc2VydmF0aW9uKHN0cnVjdCBk b21haW4gKmQsCj4KPiAgICAgICAgICAgICAgIHBhZ2UgPSBtZm5fdG9fcGFnZShtZm4pOwo+Cj4g LSAgICAgICAgICAgIHAybV9zZXRfZW50cnkocDJtLCBncGZuICsgaSwgX21mbihJTlZBTElEX01G TiksIGN1cl9vcmRlciwKPiArICAgICAgICAgICAgcDJtX3NldF9lbnRyeShwMm0sIGdwZm4gKyBp LCBJTlZBTElEX01GTiwgY3VyX29yZGVyLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw Mm1faW52YWxpZCwgcDJtLT5kZWZhdWx0X2FjY2Vzcyk7Cj4gICAgICAgICAgICAgICBwMm1fdGxi X2ZsdXNoX3N5bmMocDJtKTsKPiAgICAgICAgICAgICAgIGZvciAoIGogPSAwOyBqIDwgbjsgKytq ICkKPiBAQCAtNjcxLDcgKzY3MSw3IEBAIHZvaWQgcDJtX3BvZF9kdW1wX2RhdGEoc3RydWN0IGRv bWFpbiAqZCkKPiAgIHN0YXRpYyBpbnQKPiAgIHAybV9wb2RfemVyb19jaGVja19zdXBlcnBhZ2Uo c3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBnZm4pCj4gICB7Cj4gLSAgICBt Zm5fdCBtZm4sIG1mbjAgPSBfbWZuKElOVkFMSURfTUZOKTsKPiArICAgIG1mbl90IG1mbiwgbWZu MCA9IElOVkFMSURfTUZOOwo+ICAgICAgIHAybV90eXBlX3QgdHlwZSwgdHlwZTAgPSAwOwo+ICAg ICAgIHVuc2lnbmVkIGxvbmcgKiBtYXAgPSBOVUxMOwo+ICAgICAgIGludCByZXQ9MCwgcmVzZXQg PSAwOwo+IEBAIC03NTQsNyArNzU0LDcgQEAgcDJtX3BvZF96ZXJvX2NoZWNrX3N1cGVycGFnZShz dHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25lZCBsb25nIGdmbikKPiAgICAgICB9Cj4KPiAg ICAgICAvKiBUcnkgdG8gcmVtb3ZlIHRoZSBwYWdlLCByZXN0b3Jpbmcgb2xkIG1hcHBpbmcgaWYg aXQgZmFpbHMuICovCj4gLSAgICBwMm1fc2V0X2VudHJ5KHAybSwgZ2ZuLCBfbWZuKElOVkFMSURf TUZOKSwgUEFHRV9PUkRFUl8yTSwKPiArICAgIHAybV9zZXRfZW50cnkocDJtLCBnZm4sIElOVkFM SURfTUZOLCBQQUdFX09SREVSXzJNLAo+ICAgICAgICAgICAgICAgICAgICAgcDJtX3BvcHVsYXRl X29uX2RlbWFuZCwgcDJtLT5kZWZhdWx0X2FjY2Vzcyk7Cj4gICAgICAgcDJtX3RsYl9mbHVzaF9z eW5jKHAybSk7Cj4KPiBAQCAtODcxLDcgKzg3MSw3IEBAIHAybV9wb2RfemVyb19jaGVjayhzdHJ1 Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25lZCBsb25nICpnZm5zLCBpbnQgY291bnQpCj4gICAg ICAgICAgIH0KPgo+ICAgICAgICAgICAvKiBUcnkgdG8gcmVtb3ZlIHRoZSBwYWdlLCByZXN0b3Jp bmcgb2xkIG1hcHBpbmcgaWYgaXQgZmFpbHMuICovCj4gLSAgICAgICAgcDJtX3NldF9lbnRyeShw Mm0sIGdmbnNbaV0sIF9tZm4oSU5WQUxJRF9NRk4pLCBQQUdFX09SREVSXzRLLAo+ICsgICAgICAg IHAybV9zZXRfZW50cnkocDJtLCBnZm5zW2ldLCBJTlZBTElEX01GTiwgUEFHRV9PUkRFUl80SywK PiAgICAgICAgICAgICAgICAgICAgICAgICBwMm1fcG9wdWxhdGVfb25fZGVtYW5kLCBwMm0tPmRl ZmF1bHRfYWNjZXNzKTsKPgo+ICAgICAgICAgICAvKiBTZWUgaWYgdGhlIHBhZ2Ugd2FzIHN1Y2Nl c3NmdWxseSB1bm1hcHBlZC4gIChBbGxvdyBvbmUgcmVmY291bnQKPiBAQCAtMTA3Myw3ICsxMDcz LDcgQEAgcDJtX3BvZF9kZW1hbmRfcG9wdWxhdGUoc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5z aWduZWQgbG9uZyBnZm4sCj4gICAgICAgICAgICAqIE5PVEU6IEluIGEgZmluZS1ncmFpbmVkIHAy bSBsb2NraW5nIHNjZW5hcmlvIHRoaXMgb3BlcmF0aW9uCj4gICAgICAgICAgICAqIG1heSBuZWVk IHRvIHByb21vdGUgaXRzIGxvY2tpbmcgZnJvbSBnZm4tPjFnIHN1cGVycGFnZQo+ICAgICAgICAg ICAgKi8KPiAtICAgICAgICBwMm1fc2V0X2VudHJ5KHAybSwgZ2ZuX2FsaWduZWQsIF9tZm4oSU5W QUxJRF9NRk4pLCBQQUdFX09SREVSXzJNLAo+ICsgICAgICAgIHAybV9zZXRfZW50cnkocDJtLCBn Zm5fYWxpZ25lZCwgSU5WQUxJRF9NRk4sIFBBR0VfT1JERVJfMk0sCj4gICAgICAgICAgICAgICAg ICAgICAgICAgcDJtX3BvcHVsYXRlX29uX2RlbWFuZCwgcDJtLT5kZWZhdWx0X2FjY2Vzcyk7Cj4g ICAgICAgICAgIHJldHVybiAwOwo+ICAgICAgIH0KPiBAQCAtMTE1Nyw3ICsxMTU3LDcgQEAgcmVt YXBfYW5kX3JldHJ5Ogo+ICAgICAgICAqIG5lZWQgcHJvbW90aW5nIHRoZSBnZm4gbG9jayBmcm9t IGdmbi0+Mk0gc3VwZXJwYWdlICovCj4gICAgICAgZ2ZuX2FsaWduZWQgPSAoZ2ZuPj5vcmRlcik8 PG9yZGVyOwo+ICAgICAgIGZvcihpPTA7IGk8KDE8PG9yZGVyKTsgaSsrKQo+IC0gICAgICAgIHAy bV9zZXRfZW50cnkocDJtLCBnZm5fYWxpZ25lZCArIGksIF9tZm4oSU5WQUxJRF9NRk4pLCBQQUdF X09SREVSXzRLLAo+ICsgICAgICAgIHAybV9zZXRfZW50cnkocDJtLCBnZm5fYWxpZ25lZCArIGks IElOVkFMSURfTUZOLCBQQUdFX09SREVSXzRLLAo+ICAgICAgICAgICAgICAgICAgICAgICAgIHAy bV9wb3B1bGF0ZV9vbl9kZW1hbmQsIHAybS0+ZGVmYXVsdF9hY2Nlc3MpOwo+ICAgICAgIGlmICgg dGJfaW5pdF9kb25lICkKPiAgICAgICB7Cj4gQEAgLTEyMTUsNyArMTIxNSw3IEBAIGd1ZXN0X3Bo eXNtYXBfbWFya19wb3B1bGF0ZV9vbl9kZW1hbmQoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQg bG9uZyBnZm4sCj4gICAgICAgfQo+Cj4gICAgICAgLyogTm93LCBhY3R1YWxseSBkbyB0aGUgdHdv LXdheSBtYXBwaW5nICovCj4gLSAgICByYyA9IHAybV9zZXRfZW50cnkocDJtLCBnZm4sIF9tZm4o SU5WQUxJRF9NRk4pLCBvcmRlciwKPiArICAgIHJjID0gcDJtX3NldF9lbnRyeShwMm0sIGdmbiwg SU5WQUxJRF9NRk4sIG9yZGVyLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1fcG9wdWxh dGVfb25fZGVtYW5kLCBwMm0tPmRlZmF1bHRfYWNjZXNzKTsKPiAgICAgICBpZiAoIHJjID09IDAg KQo+ICAgICAgIHsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3AybS1wdC5jIGIveGVu L2FyY2gveDg2L21tL3AybS1wdC5jCj4gaW5kZXggNDk4MDkzNC4uMmI2ZTg5ZSAxMDA2NDQKPiAt LS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMKPiArKysgYi94ZW4vYXJjaC94ODYvbW0vcDJt LXB0LmMKPiBAQCAtNTExLDcgKzUxMSw3IEBAIHAybV9wdF9zZXRfZW50cnkoc3RydWN0IHAybV9k b21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBnZm4sIG1mbl90IG1mbiwKPiAgICAgICAgKiB0aGUg aW50ZXJtZWRpYXRlIG9uZSBtaWdodCBiZSkuCj4gICAgICAgICovCj4gICAgICAgdW5zaWduZWQg aW50IGZsYWdzLCBpb21tdV9vbGRfZmxhZ3MgPSAwOwo+IC0gICAgdW5zaWduZWQgbG9uZyBvbGRf bWZuID0gSU5WQUxJRF9NRk47Cj4gKyAgICB1bnNpZ25lZCBsb25nIG9sZF9tZm4gPSBtZm5feChJ TlZBTElEX01GTik7Cj4KPiAgICAgICBBU1NFUlQoc3ZlICE9IDApOwo+Cj4gQEAgLTc2NCw3ICs3 NjQsNyBAQCBwMm1fcHRfZ2V0X2VudHJ5KHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIHVuc2lnbmVk IGxvbmcgZ2ZuLAo+ICAgICAgICAgICAgICAgICAgICAgICAgcDJtLT5tYXhfbWFwcGVkX3BmbiAp Cj4gICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICAgICAgICAgICB9Cj4gLSAgICAgICAg cmV0dXJuIF9tZm4oSU5WQUxJRF9NRk4pOwo+ICsgICAgICAgIHJldHVybiBJTlZBTElEX01GTjsK PiAgICAgICB9Cj4KPiAgICAgICBtZm4gPSBwYWdldGFibGVfZ2V0X21mbihwMm1fZ2V0X3BhZ2V0 YWJsZShwMm0pKTsKPiBAQCAtNzc3LDcgKzc3Nyw3IEBAIHAybV9wdF9nZXRfZW50cnkoc3RydWN0 IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBnZm4sCj4gICAgICAgICAgIGlmICggKGw0 ZV9nZXRfZmxhZ3MoKmw0ZSkgJiBfUEFHRV9QUkVTRU5UKSA9PSAwICkKPiAgICAgICAgICAgewo+ ICAgICAgICAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2UobDRlKTsKPiAtICAgICAgICAgICAgcmV0 dXJuIF9tZm4oSU5WQUxJRF9NRk4pOwo+ICsgICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9NRk47 Cj4gICAgICAgICAgIH0KPiAgICAgICAgICAgbWZuID0gX21mbihsNGVfZ2V0X3BmbigqbDRlKSk7 Cj4gICAgICAgICAgIHJlY2FsYyA9IG5lZWRzX3JlY2FsYyhsNCwgKmw0ZSk7Cj4gQEAgLTgwNSw3 ICs4MDUsNyBAQCBwb2RfcmV0cnlfbDM6Cj4gICAgICAgICAgICAgICAgICAgICAgICp0ID0gcDJt X3BvcHVsYXRlX29uX2RlbWFuZDsKPiAgICAgICAgICAgICAgIH0KPiAgICAgICAgICAgICAgIHVu bWFwX2RvbWFpbl9wYWdlKGwzZSk7Cj4gLSAgICAgICAgICAgIHJldHVybiBfbWZuKElOVkFMSURf TUZOKTsKPiArICAgICAgICAgICAgcmV0dXJuIElOVkFMSURfTUZOOwo+ICAgICAgICAgICB9Cj4g ICAgICAgICAgIGlmICggZmxhZ3MgJiBfUEFHRV9QU0UgKQo+ICAgICAgICAgICB7Cj4gQEAgLTgx Nyw3ICs4MTcsNyBAQCBwb2RfcmV0cnlfbDM6Cj4gICAgICAgICAgICAgICB1bm1hcF9kb21haW5f cGFnZShsM2UpOwo+Cj4gICAgICAgICAgICAgICBBU1NFUlQobWZuX3ZhbGlkKG1mbikgfHwgIXAy bV9pc19yYW0oKnQpKTsKPiAtICAgICAgICAgICAgcmV0dXJuIChwMm1faXNfdmFsaWQoKnQpKSA/ IG1mbiA6IF9tZm4oSU5WQUxJRF9NRk4pOwo+ICsgICAgICAgICAgICByZXR1cm4gKHAybV9pc192 YWxpZCgqdCkpID8gbWZuIDogSU5WQUxJRF9NRk47Cj4gICAgICAgICAgIH0KPgo+ICAgICAgICAg ICBtZm4gPSBfbWZuKGwzZV9nZXRfcGZuKCpsM2UpKTsKPiBAQCAtODQ2LDcgKzg0Niw3IEBAIHBv ZF9yZXRyeV9sMjoKPiAgICAgICAgICAgfQo+Cj4gICAgICAgICAgIHVubWFwX2RvbWFpbl9wYWdl KGwyZSk7Cj4gLSAgICAgICAgcmV0dXJuIF9tZm4oSU5WQUxJRF9NRk4pOwo+ICsgICAgICAgIHJl dHVybiBJTlZBTElEX01GTjsKPiAgICAgICB9Cj4gICAgICAgaWYgKCBmbGFncyAmIF9QQUdFX1BT RSApCj4gICAgICAgewo+IEBAIC04NTYsNyArODU2LDcgQEAgcG9kX3JldHJ5X2wyOgo+ICAgICAg ICAgICB1bm1hcF9kb21haW5fcGFnZShsMmUpOwo+Cj4gICAgICAgICAgIEFTU0VSVChtZm5fdmFs aWQobWZuKSB8fCAhcDJtX2lzX3JhbSgqdCkpOwo+IC0gICAgICAgIHJldHVybiAocDJtX2lzX3Zh bGlkKCp0KSkgPyBtZm4gOiBfbWZuKElOVkFMSURfTUZOKTsKPiArICAgICAgICByZXR1cm4gKHAy bV9pc192YWxpZCgqdCkpID8gbWZuIDogSU5WQUxJRF9NRk47Cj4gICAgICAgfQo+Cj4gICAgICAg bWZuID0gX21mbihsMmVfZ2V0X3BmbigqbDJlKSk7Cj4gQEAgLTg4NSwxNCArODg1LDE0IEBAIHBv ZF9yZXRyeV9sMToKPiAgICAgICAgICAgfQo+Cj4gICAgICAgICAgIHVubWFwX2RvbWFpbl9wYWdl KGwxZSk7Cj4gLSAgICAgICAgcmV0dXJuIF9tZm4oSU5WQUxJRF9NRk4pOwo+ICsgICAgICAgIHJl dHVybiBJTlZBTElEX01GTjsKPiAgICAgICB9Cj4gICAgICAgbWZuID0gX21mbihsMWVfZ2V0X3Bm bigqbDFlKSk7Cj4gICAgICAgKnQgPSByZWNhbGNfdHlwZShyZWNhbGMgfHwgX25lZWRzX3JlY2Fs YyhmbGFncyksIGwxdCwgcDJtLCBnZm4pOwo+ICAgICAgIHVubWFwX2RvbWFpbl9wYWdlKGwxZSk7 Cj4KPiAgICAgICBBU1NFUlQobWZuX3ZhbGlkKG1mbikgfHwgIXAybV9pc19yYW0oKnQpIHx8IHAy bV9pc19wYWdpbmcoKnQpKTsKPiAtICAgIHJldHVybiAocDJtX2lzX3ZhbGlkKCp0KSB8fCBwMm1f aXNfZ3JhbnQoKnQpKSA/IG1mbiA6IF9tZm4oSU5WQUxJRF9NRk4pOwo+ICsgICAgcmV0dXJuIChw Mm1faXNfdmFsaWQoKnQpIHx8IHAybV9pc19ncmFudCgqdCkpID8gbWZuIDogSU5WQUxJRF9NRk47 Cj4gICB9Cj4KPiAgIHN0YXRpYyB2b2lkIHAybV9wdF9jaGFuZ2VfZW50cnlfdHlwZV9nbG9iYWwo c3RydWN0IHAybV9kb21haW4gKnAybSwKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3Ay bS5jIGIveGVuL2FyY2gveDg2L21tL3AybS5jCj4gaW5kZXggNjI1OGE1Yi4uYjkzYzhhMiAxMDA2 NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLmMKPiArKysgYi94ZW4vYXJjaC94ODYvbW0v cDJtLmMKPiBAQCAtMzg4LDcgKzM4OCw3IEBAIG1mbl90IF9fZ2V0X2dmbl90eXBlX2FjY2Vzcyhz dHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25lZCBsb25nIGdmbiwKPiAgICAgICBpZiAodW5s aWtlbHkoKHAybV9pc19icm9rZW4oKnQpKSkpCj4gICAgICAgewo+ICAgICAgICAgICAvKiBSZXR1 cm4gaW52YWxpZF9tZm4gdG8gYXZvaWQgY2FsbGVyJ3MgYWNjZXNzICovCj4gLSAgICAgICAgbWZu ID0gX21mbihJTlZBTElEX01GTik7Cj4gKyAgICAgICAgbWZuID0gSU5WQUxJRF9NRk47Cj4gICAg ICAgICAgIGlmICggcSAmIFAyTV9BTExPQyApCj4gICAgICAgICAgICAgICBkb21haW5fY3Jhc2go cDJtLT5kb21haW4pOwo+ICAgICAgIH0KPiBAQCAtNDkzLDggKzQ5Myw4IEBAIGludCBwMm1fc2V0 X2VudHJ5KHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2ZuLCBtZm5fdCBt Zm4sCj4gICAgICAgICAgICAgICByYyA9IHNldF9yYzsKPgo+ICAgICAgICAgICBnZm4gKz0gMXVs IDw8IG9yZGVyOwo+IC0gICAgICAgIGlmICggbWZuX3gobWZuKSAhPSBJTlZBTElEX01GTiApCj4g LSAgICAgICAgICAgIG1mbiA9IF9tZm4obWZuX3gobWZuKSArICgxdWwgPDwgb3JkZXIpKTsKPiAr ICAgICAgICBpZiAoICFtZm5fZXEobWZuLCBJTlZBTElEX01GTikgKQo+ICsgICAgICAgICAgICBt Zm4gPSBtZm5fYWRkKG1mbiwgMXVsIDw8IG9yZGVyKTsKPiAgICAgICAgICAgdG9kbyAtPSAxdWwg PDwgb3JkZXI7Cj4gICAgICAgfQo+Cj4gQEAgLTU4MCw3ICs1ODAsNyBAQCBpbnQgcDJtX2FsbG9j X3RhYmxlKHN0cnVjdCBwMm1fZG9tYWluICpwMm0pCj4KPiAgICAgICAvKiBJbml0aWFsaXNlIHBo eXNtYXAgdGFibGVzIGZvciBzbG90IHplcm8uIE90aGVyIGNvZGUgYXNzdW1lcyB0aGlzLiAqLwo+ ICAgICAgIHAybS0+ZGVmZXJfbmVzdGVkX2ZsdXNoID0gMTsKPiAtICAgIHJjID0gcDJtX3NldF9l bnRyeShwMm0sIDAsIF9tZm4oSU5WQUxJRF9NRk4pLCBQQUdFX09SREVSXzRLLAo+ICsgICAgcmMg PSBwMm1fc2V0X2VudHJ5KHAybSwgMCwgSU5WQUxJRF9NRk4sIFBBR0VfT1JERVJfNEssCj4gICAg ICAgICAgICAgICAgICAgICAgICAgIHAybV9pbnZhbGlkLCBwMm0tPmRlZmF1bHRfYWNjZXNzKTsK PiAgICAgICBwMm0tPmRlZmVyX25lc3RlZF9mbHVzaCA9IDA7Cj4gICAgICAgcDJtX3VubG9jayhw Mm0pOwo+IEBAIC02NzAsNyArNjcwLDcgQEAgcDJtX3JlbW92ZV9wYWdlKHN0cnVjdCBwMm1fZG9t YWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2ZuLCB1bnNpZ25lZCBsb25nIG1mbiwKPiAgICAgICAg ICAgICAgIEFTU0VSVCggIXAybV9pc192YWxpZCh0KSB8fCBtZm4gKyBpID09IG1mbl94KG1mbl9y ZXR1cm4pICk7Cj4gICAgICAgICAgIH0KPiAgICAgICB9Cj4gLSAgICByZXR1cm4gcDJtX3NldF9l bnRyeShwMm0sIGdmbiwgX21mbihJTlZBTElEX01GTiksIHBhZ2Vfb3JkZXIsIHAybV9pbnZhbGlk LAo+ICsgICAgcmV0dXJuIHAybV9zZXRfZW50cnkocDJtLCBnZm4sIElOVkFMSURfTUZOLCBwYWdl X29yZGVyLCBwMm1faW52YWxpZCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMm0tPmRl ZmF1bHRfYWNjZXNzKTsKPiAgIH0KPgo+IEBAIC04NDAsNyArODQwLDcgQEAgZ3Vlc3RfcGh5c21h cF9hZGRfZW50cnkoc3RydWN0IGRvbWFpbiAqZCwgZ2ZuX3QgZ2ZuLCBtZm5fdCBtZm4sCj4gICAg ICAgewo+ICAgICAgICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywgIkFkZGluZyBiYWQgbWZu IHRvIHAybSBtYXAgKCUjbHggLT4gJSNseClcbiIsCj4gICAgICAgICAgICAgICAgICAgIGdmbl94 KGdmbiksIG1mbl94KG1mbikpOwo+IC0gICAgICAgIHJjID0gcDJtX3NldF9lbnRyeShwMm0sIGdm bl94KGdmbiksIF9tZm4oSU5WQUxJRF9NRk4pLCBwYWdlX29yZGVyLAo+ICsgICAgICAgIHJjID0g cDJtX3NldF9lbnRyeShwMm0sIGdmbl94KGdmbiksIElOVkFMSURfTUZOLCBwYWdlX29yZGVyLAo+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJtX2ludmFsaWQsIHAybS0+ZGVmYXVsdF9h Y2Nlc3MpOwo+ICAgICAgICAgICBpZiAoIHJjID09IDAgKQo+ICAgICAgICAgICB7Cj4gQEAgLTEx MDcsNyArMTEwNyw3IEBAIGludCBjbGVhcl9tbWlvX3AybV9lbnRyeShzdHJ1Y3QgZG9tYWluICpk LCB1bnNpZ25lZCBsb25nIGdmbiwgbWZuX3QgbWZuLAo+ICAgICAgIH0KPgo+ICAgICAgIC8qIERv IG5vdCB1c2UgbWZuX3ZhbGlkKCkgaGVyZSBhcyBpdCB3aWxsIHVzdWFsbHkgZmFpbCBmb3IgTU1J TyBwYWdlcy4gKi8KPiAtICAgIGlmICggKElOVkFMSURfTUZOID09IG1mbl94KGFjdHVhbF9tZm4p KSB8fCAodCAhPSBwMm1fbW1pb19kaXJlY3QpICkKPiArICAgIGlmICggbWZuX2VxKGFjdHVhbF9t Zm4sIElOVkFMSURfTUZOKSB8fCAodCAhPSBwMm1fbW1pb19kaXJlY3QpICkKPiAgICAgICB7Cj4g ICAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19FUlIsCj4gICAgICAgICAgICAgICAgICAgICJnZm5f dG9fbWZuIGZhaWxlZCEgZ2ZuPSUwOGx4IHR5cGU6JWRcbiIsIGdmbiwgdCk7Cj4gQEAgLTExMTcs NyArMTExNyw3IEBAIGludCBjbGVhcl9tbWlvX3AybV9lbnRyeShzdHJ1Y3QgZG9tYWluICpkLCB1 bnNpZ25lZCBsb25nIGdmbiwgbWZuX3QgbWZuLAo+ICAgICAgICAgICBnZHByaW50ayhYRU5MT0df V0FSTklORywKPiAgICAgICAgICAgICAgICAgICAgIm5vIG1hcHBpbmcgYmV0d2VlbiBtZm4gJTA4 bHggYW5kIGdmbiAlMDhseFxuIiwKPiAgICAgICAgICAgICAgICAgICAgbWZuX3gobWZuKSwgZ2Zu KTsKPiAtICAgIHJjID0gcDJtX3NldF9lbnRyeShwMm0sIGdmbiwgX21mbihJTlZBTElEX01GTiks IG9yZGVyLCBwMm1faW52YWxpZCwKPiArICAgIHJjID0gcDJtX3NldF9lbnRyeShwMm0sIGdmbiwg SU5WQUxJRF9NRk4sIG9yZGVyLCBwMm1faW52YWxpZCwKPiAgICAgICAgICAgICAgICAgICAgICAg ICAgcDJtLT5kZWZhdWx0X2FjY2Vzcyk7Cj4KPiAgICBvdXQ6Cj4gQEAgLTExNDYsNyArMTE0Niw3 IEBAIGludCBjbGVhcl9pZGVudGl0eV9wMm1fZW50cnkoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWdu ZWQgbG9uZyBnZm4pCj4gICAgICAgbWZuID0gcDJtLT5nZXRfZW50cnkocDJtLCBnZm4sICZwMm10 LCAmYSwgMCwgTlVMTCwgTlVMTCk7Cj4gICAgICAgaWYgKCBwMm10ID09IHAybV9tbWlvX2RpcmVj dCAmJiBtZm5feChtZm4pID09IGdmbiApCj4gICAgICAgewo+IC0gICAgICAgIHJldCA9IHAybV9z ZXRfZW50cnkocDJtLCBnZm4sIF9tZm4oSU5WQUxJRF9NRk4pLCBQQUdFX09SREVSXzRLLAo+ICsg ICAgICAgIHJldCA9IHAybV9zZXRfZW50cnkocDJtLCBnZm4sIElOVkFMSURfTUZOLCBQQUdFX09S REVSXzRLLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAybV9pbnZhbGlkLCBwMm0t PmRlZmF1bHRfYWNjZXNzKTsKPiAgICAgICAgICAgZ2ZuX3VubG9jayhwMm0sIGdmbiwgMCk7Cj4g ICAgICAgfQo+IEBAIC0xMzE2LDcgKzEzMTYsNyBAQCBpbnQgcDJtX21lbV9wYWdpbmdfZXZpY3Qo c3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4pCj4gICAgICAgICAgIHB1dF9wYWdl KHBhZ2UpOwo+Cj4gICAgICAgLyogUmVtb3ZlIG1hcHBpbmcgZnJvbSBwMm0gdGFibGUgKi8KPiAt ICAgIHJldCA9IHAybV9zZXRfZW50cnkocDJtLCBnZm4sIF9tZm4oSU5WQUxJRF9NRk4pLCBQQUdF X09SREVSXzRLLAo+ICsgICAgcmV0ID0gcDJtX3NldF9lbnRyeShwMm0sIGdmbiwgSU5WQUxJRF9N Rk4sIFBBR0VfT1JERVJfNEssCj4gICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1fcmFtX3Bh Z2VkLCBhKTsKPgo+ICAgICAgIC8qIENsZWFyIGNvbnRlbnQgYmVmb3JlIHJldHVybmluZyB0aGUg cGFnZSB0byBYZW4gKi8KPiBAQCAtMTg0NCw3ICsxODQ0LDcgQEAgbG9uZyBwMm1fc2V0X21lbV9h Y2Nlc3Moc3RydWN0IGRvbWFpbiAqZCwgZ2ZuX3QgZ2ZuLCB1aW50MzJfdCBuciwKPiAgICAgICBp ZiAoIGFsdHAybV9pZHggKQo+ICAgICAgIHsKPiAgICAgICAgICAgaWYgKCBhbHRwMm1faWR4ID49 IE1BWF9BTFRQMk0gfHwKPiAtICAgICAgICAgICAgIGQtPmFyY2guYWx0cDJtX2VwdHBbYWx0cDJt X2lkeF0gPT0gSU5WQUxJRF9NRk4gKQo+ICsgICAgICAgICAgICAgZC0+YXJjaC5hbHRwMm1fZXB0 cFthbHRwMm1faWR4XSA9PSBtZm5feChJTlZBTElEX01GTikgKQo+ICAgICAgICAgICAgICAgcmV0 dXJuIC1FSU5WQUw7Cj4KPiAgICAgICAgICAgYXAybSA9IGQtPmFyY2guYWx0cDJtX3AybVthbHRw Mm1faWR4XTsKPiBAQCAtMTk0Miw3ICsxOTQyLDcgQEAgaW50IHAybV9nZXRfbWVtX2FjY2Vzcyhz dHJ1Y3QgZG9tYWluICpkLCBnZm5fdCBnZm4sIHhlbm1lbV9hY2Nlc3NfdCAqYWNjZXNzKQo+ICAg ICAgIG1mbiA9IHAybS0+Z2V0X2VudHJ5KHAybSwgZ2ZuX3goZ2ZuKSwgJnQsICZhLCAwLCBOVUxM LCBOVUxMKTsKPiAgICAgICBnZm5fdW5sb2NrKHAybSwgZ2ZuLCAwKTsKPgo+IC0gICAgaWYgKCBt Zm5feChtZm4pID09IElOVkFMSURfTUZOICkKPiArICAgIGlmICggbWZuX2VxKG1mbiwgSU5WQUxJ RF9NRk4pICkKPiAgICAgICAgICAgcmV0dXJuIC1FU1JDSDsKPgo+ICAgICAgIGlmICggKHVuc2ln bmVkKSBhID49IEFSUkFZX1NJWkUobWVtYWNjZXNzKSApCj4gQEAgLTIyODgsNyArMjI4OCw3IEBA IHVuc2lnbmVkIGludCBwMm1fZmluZF9hbHRwMm1fYnlfZXB0cChzdHJ1Y3QgZG9tYWluICpkLCB1 aW50NjRfdCBlcHRwKQo+Cj4gICAgICAgZm9yICggaSA9IDA7IGkgPCBNQVhfQUxUUDJNOyBpKysg KQo+ICAgICAgIHsKPiAtICAgICAgICBpZiAoIGQtPmFyY2guYWx0cDJtX2VwdHBbaV0gPT0gSU5W QUxJRF9NRk4gKQo+ICsgICAgICAgIGlmICggZC0+YXJjaC5hbHRwMm1fZXB0cFtpXSA9PSBtZm5f eChJTlZBTElEX01GTikgKQo+ICAgICAgICAgICAgICAgY29udGludWU7Cj4KPiAgICAgICAgICAg cDJtID0gZC0+YXJjaC5hbHRwMm1fcDJtW2ldOwo+IEBAIC0yMzE1LDcgKzIzMTUsNyBAQCBib29s X3QgcDJtX3N3aXRjaF92Y3B1X2FsdHAybV9ieV9pZChzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQg aW50IGlkeCkKPgo+ICAgICAgIGFsdHAybV9saXN0X2xvY2soZCk7Cj4KPiAtICAgIGlmICggZC0+ YXJjaC5hbHRwMm1fZXB0cFtpZHhdICE9IElOVkFMSURfTUZOICkKPiArICAgIGlmICggZC0+YXJj aC5hbHRwMm1fZXB0cFtpZHhdICE9IG1mbl94KElOVkFMSURfTUZOKSApCj4gICAgICAgewo+ICAg ICAgICAgICBpZiAoIGlkeCAhPSB2Y3B1X2FsdHAybSh2KS5wMm1pZHggKQo+ICAgICAgICAgICB7 Cj4gQEAgLTIzNTksMTQgKzIzNTksMTQgQEAgYm9vbF90IHAybV9hbHRwMm1fbGF6eV9jb3B5KHN0 cnVjdCB2Y3B1ICp2LCBwYWRkcl90IGdwYSwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDAsICZwYWdlX29yZGVyKTsKPiAgICAgICBfX3B1dF9nZm4oKmFwMm0sIGdmbl94KGdmbikp Owo+Cj4gLSAgICBpZiAoIG1mbl94KG1mbikgIT0gSU5WQUxJRF9NRk4gKQo+ICsgICAgaWYgKCAh bWZuX2VxKG1mbiwgSU5WQUxJRF9NRk4pICkKPiAgICAgICAgICAgcmV0dXJuIDA7Cj4KPiAgICAg ICBtZm4gPSBnZXRfZ2ZuX3R5cGVfYWNjZXNzKGhwMm0sIGdmbl94KGdmbiksICZwMm10LCAmcDJt YSwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFAyTV9BTExPQyB8IFAyTV9VTlNI QVJFLCAmcGFnZV9vcmRlcik7Cj4gICAgICAgX19wdXRfZ2ZuKGhwMm0sIGdmbl94KGdmbikpOwo+ Cj4gLSAgICBpZiAoIG1mbl94KG1mbikgPT0gSU5WQUxJRF9NRk4gKQo+ICsgICAgaWYgKCBtZm5f ZXEobWZuLCBJTlZBTElEX01GTikgKQo+ICAgICAgICAgICByZXR1cm4gMDsKPgo+ICAgICAgIHAy bV9sb2NrKCphcDJtKTsKPiBAQCAtMjQwNCw3ICsyNDA0LDcgQEAgdm9pZCBwMm1fZmx1c2hfYWx0 cDJtKHN0cnVjdCBkb21haW4gKmQpCj4gICAgICAgICAgIC8qIFVuaW5pdCBhbmQgcmVpbml0IGVw dCB0byBmb3JjZSBUTEIgc2hvb3Rkb3duICovCj4gICAgICAgICAgIGVwdF9wMm1fdW5pbml0KGQt PmFyY2guYWx0cDJtX3AybVtpXSk7Cj4gICAgICAgICAgIGVwdF9wMm1faW5pdChkLT5hcmNoLmFs dHAybV9wMm1baV0pOwo+IC0gICAgICAgIGQtPmFyY2guYWx0cDJtX2VwdHBbaV0gPSBJTlZBTElE X01GTjsKPiArICAgICAgICBkLT5hcmNoLmFsdHAybV9lcHRwW2ldID0gbWZuX3goSU5WQUxJRF9N Rk4pOwo+ICAgICAgIH0KPgo+ICAgICAgIGFsdHAybV9saXN0X3VubG9jayhkKTsKPiBAQCAtMjQz MSw3ICsyNDMxLDcgQEAgaW50IHAybV9pbml0X2FsdHAybV9ieV9pZChzdHJ1Y3QgZG9tYWluICpk LCB1bnNpZ25lZCBpbnQgaWR4KQo+Cj4gICAgICAgYWx0cDJtX2xpc3RfbG9jayhkKTsKPgo+IC0g ICAgaWYgKCBkLT5hcmNoLmFsdHAybV9lcHRwW2lkeF0gPT0gSU5WQUxJRF9NRk4gKQo+ICsgICAg aWYgKCBkLT5hcmNoLmFsdHAybV9lcHRwW2lkeF0gPT0gbWZuX3goSU5WQUxJRF9NRk4pICkKPiAg ICAgICB7Cj4gICAgICAgICAgIHAybV9pbml0X2FsdHAybV9oZWxwZXIoZCwgaWR4KTsKPiAgICAg ICAgICAgcmMgPSAwOwo+IEBAIC0yNDUwLDcgKzI0NTAsNyBAQCBpbnQgcDJtX2luaXRfbmV4dF9h bHRwMm0oc3RydWN0IGRvbWFpbiAqZCwgdWludDE2X3QgKmlkeCkKPgo+ICAgICAgIGZvciAoIGkg PSAwOyBpIDwgTUFYX0FMVFAyTTsgaSsrICkKPiAgICAgICB7Cj4gLSAgICAgICAgaWYgKCBkLT5h cmNoLmFsdHAybV9lcHRwW2ldICE9IElOVkFMSURfTUZOICkKPiArICAgICAgICBpZiAoIGQtPmFy Y2guYWx0cDJtX2VwdHBbaV0gIT0gbWZuX3goSU5WQUxJRF9NRk4pICkKPiAgICAgICAgICAgICAg IGNvbnRpbnVlOwo+Cj4gICAgICAgICAgIHAybV9pbml0X2FsdHAybV9oZWxwZXIoZCwgaSk7Cj4g QEAgLTI0NzYsNyArMjQ3Niw3IEBAIGludCBwMm1fZGVzdHJveV9hbHRwMm1fYnlfaWQoc3RydWN0 IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGlkeCkKPgo+ICAgICAgIGFsdHAybV9saXN0X2xvY2so ZCk7Cj4KPiAtICAgIGlmICggZC0+YXJjaC5hbHRwMm1fZXB0cFtpZHhdICE9IElOVkFMSURfTUZO ICkKPiArICAgIGlmICggZC0+YXJjaC5hbHRwMm1fZXB0cFtpZHhdICE9IG1mbl94KElOVkFMSURf TUZOKSApCj4gICAgICAgewo+ICAgICAgICAgICBwMm0gPSBkLT5hcmNoLmFsdHAybV9wMm1baWR4 XTsKPgo+IEBAIC0yNDg2LDcgKzI0ODYsNyBAQCBpbnQgcDJtX2Rlc3Ryb3lfYWx0cDJtX2J5X2lk KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBpZHgpCj4gICAgICAgICAgICAgICAvKiBV bmluaXQgYW5kIHJlaW5pdCBlcHQgdG8gZm9yY2UgVExCIHNob290ZG93biAqLwo+ICAgICAgICAg ICAgICAgZXB0X3AybV91bmluaXQoZC0+YXJjaC5hbHRwMm1fcDJtW2lkeF0pOwo+ICAgICAgICAg ICAgICAgZXB0X3AybV9pbml0KGQtPmFyY2guYWx0cDJtX3AybVtpZHhdKTsKPiAtICAgICAgICAg ICAgZC0+YXJjaC5hbHRwMm1fZXB0cFtpZHhdID0gSU5WQUxJRF9NRk47Cj4gKyAgICAgICAgICAg IGQtPmFyY2guYWx0cDJtX2VwdHBbaWR4XSA9IG1mbl94KElOVkFMSURfTUZOKTsKPiAgICAgICAg ICAgICAgIHJjID0gMDsKPiAgICAgICAgICAgfQo+ICAgICAgIH0KPiBAQCAtMjUxMCw3ICsyNTEw LDcgQEAgaW50IHAybV9zd2l0Y2hfZG9tYWluX2FsdHAybV9ieV9pZChzdHJ1Y3QgZG9tYWluICpk LCB1bnNpZ25lZCBpbnQgaWR4KQo+Cj4gICAgICAgYWx0cDJtX2xpc3RfbG9jayhkKTsKPgo+IC0g ICAgaWYgKCBkLT5hcmNoLmFsdHAybV9lcHRwW2lkeF0gIT0gSU5WQUxJRF9NRk4gKQo+ICsgICAg aWYgKCBkLT5hcmNoLmFsdHAybV9lcHRwW2lkeF0gIT0gbWZuX3goSU5WQUxJRF9NRk4pICkKPiAg ICAgICB7Cj4gICAgICAgICAgIGZvcl9lYWNoX3ZjcHUoIGQsIHYgKQo+ICAgICAgICAgICAgICAg aWYgKCBpZHggIT0gdmNwdV9hbHRwMm0odikucDJtaWR4ICkKPiBAQCAtMjU0MSw3ICsyNTQxLDcg QEAgaW50IHAybV9jaGFuZ2VfYWx0cDJtX2dmbihzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBp bnQgaWR4LAo+ICAgICAgIHVuc2lnbmVkIGludCBwYWdlX29yZGVyOwo+ICAgICAgIGludCByYyA9 IC1FSU5WQUw7Cj4KPiAtICAgIGlmICggaWR4ID49IE1BWF9BTFRQMk0gfHwgZC0+YXJjaC5hbHRw Mm1fZXB0cFtpZHhdID09IElOVkFMSURfTUZOICkKPiArICAgIGlmICggaWR4ID49IE1BWF9BTFRQ Mk0gfHwgZC0+YXJjaC5hbHRwMm1fZXB0cFtpZHhdID09IG1mbl94KElOVkFMSURfTUZOKSApCj4g ICAgICAgICAgIHJldHVybiByYzsKPgo+ICAgICAgIGhwMm0gPSBwMm1fZ2V0X2hvc3RwMm0oZCk7 Cj4gQEAgLTI2MzYsMTQgKzI2MzYsMTQgQEAgdm9pZCBwMm1fYWx0cDJtX3Byb3BhZ2F0ZV9jaGFu Z2Uoc3RydWN0IGRvbWFpbiAqZCwgZ2ZuX3QgZ2ZuLAo+Cj4gICAgICAgZm9yICggaSA9IDA7IGkg PCBNQVhfQUxUUDJNOyBpKysgKQo+ICAgICAgIHsKPiAtICAgICAgICBpZiAoIGQtPmFyY2guYWx0 cDJtX2VwdHBbaV0gPT0gSU5WQUxJRF9NRk4gKQo+ICsgICAgICAgIGlmICggZC0+YXJjaC5hbHRw Mm1fZXB0cFtpXSA9PSBtZm5feChJTlZBTElEX01GTikgKQo+ICAgICAgICAgICAgICAgY29udGlu dWU7Cj4KPiAgICAgICAgICAgcDJtID0gZC0+YXJjaC5hbHRwMm1fcDJtW2ldOwo+ICAgICAgICAg ICBtID0gZ2V0X2dmbl90eXBlX2FjY2VzcyhwMm0sIGdmbl94KGdmbiksICZ0LCAmYSwgMCwgTlVM TCk7Cj4KPiAgICAgICAgICAgLyogQ2hlY2sgZm9yIGEgZHJvcHBlZCBwYWdlIHRoYXQgbWF5IGlt cGFjdCB0aGlzIGFsdHAybSAqLwo+IC0gICAgICAgIGlmICggbWZuX3gobWZuKSA9PSBJTlZBTElE X01GTiAmJgo+ICsgICAgICAgIGlmICggbWZuX2VxKG1mbiwgSU5WQUxJRF9NRk4pICYmCj4gICAg ICAgICAgICAgICAgZ2ZuX3goZ2ZuKSA+PSBwMm0tPm1pbl9yZW1hcHBlZF9nZm4gJiYKPiAgICAg ICAgICAgICAgICBnZm5feChnZm4pIDw9IHAybS0+bWF4X3JlbWFwcGVkX2dmbiApCj4gICAgICAg ICAgIHsKPiBAQCAtMjY2MCw3ICsyNjYwLDcgQEAgdm9pZCBwMm1fYWx0cDJtX3Byb3BhZ2F0ZV9j aGFuZ2Uoc3RydWN0IGRvbWFpbiAqZCwgZ2ZuX3QgZ2ZuLAo+ICAgICAgICAgICAgICAgICAgIGZv ciAoIGkgPSAwOyBpIDwgTUFYX0FMVFAyTTsgaSsrICkKPiAgICAgICAgICAgICAgICAgICB7Cj4g ICAgICAgICAgICAgICAgICAgICAgIGlmICggaSA9PSBsYXN0X3Jlc2V0X2lkeCB8fAo+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgZC0+YXJjaC5hbHRwMm1fZXB0cFtpXSA9PSBJTlZBTElEX01G TiApCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBkLT5hcmNoLmFsdHAybV9lcHRwW2ldID09 IG1mbl94KElOVkFMSURfTUZOKSApCj4gICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51 ZTsKPgo+ICAgICAgICAgICAgICAgICAgICAgICBwMm0gPSBkLT5hcmNoLmFsdHAybV9wMm1baV07 Cj4gQEAgLTI2NzIsNyArMjY3Miw3IEBAIHZvaWQgcDJtX2FsdHAybV9wcm9wYWdhdGVfY2hhbmdl KHN0cnVjdCBkb21haW4gKmQsIGdmbl90IGdmbiwKPiAgICAgICAgICAgICAgICAgICBnb3RvIG91 dDsKPiAgICAgICAgICAgICAgIH0KPiAgICAgICAgICAgfQo+IC0gICAgICAgIGVsc2UgaWYgKCBt Zm5feChtKSAhPSBJTlZBTElEX01GTiApCj4gKyAgICAgICAgZWxzZSBpZiAoICFtZm5fZXEobSwg SU5WQUxJRF9NRk4pICkKPiAgICAgICAgICAgICAgIHAybV9zZXRfZW50cnkocDJtLCBnZm5feChn Zm4pLCBtZm4sIHBhZ2Vfb3JkZXIsIHAybXQsIHAybWEpOwo+Cj4gICAgICAgICAgIF9fcHV0X2dm bihwMm0sIGdmbl94KGdmbikpOwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcGFnaW5n LmMgYi94ZW4vYXJjaC94ODYvbW0vcGFnaW5nLmMKPiBpbmRleCA4MjE5YmI2Li4xMDdmYzhjIDEw MDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wYWdpbmcuYwo+ICsrKyBiL3hlbi9hcmNoL3g4 Ni9tbS9wYWdpbmcuYwo+IEBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBtZm5fdCBwYWdpbmdfbmV3 X2xvZ19kaXJ0eV9wYWdlKHN0cnVjdCBkb21haW4gKmQpCj4gICAgICAgaWYgKCB1bmxpa2VseShw YWdlID09IE5VTEwpICkKPiAgICAgICB7Cj4gICAgICAgICAgIGQtPmFyY2gucGFnaW5nLmxvZ19k aXJ0eS5mYWlsZWRfYWxsb2NzKys7Cj4gLSAgICAgICAgcmV0dXJuIF9tZm4oSU5WQUxJRF9NRk4p Owo+ICsgICAgICAgIHJldHVybiBJTlZBTElEX01GTjsKPiAgICAgICB9Cj4KPiAgICAgICBkLT5h cmNoLnBhZ2luZy5sb2dfZGlydHkuYWxsb2NzKys7Cj4gQEAgLTk1LDcgKzk1LDcgQEAgc3RhdGlj IG1mbl90IHBhZ2luZ19uZXdfbG9nX2RpcnR5X25vZGUoc3RydWN0IGRvbWFpbiAqZCkKPiAgICAg ICAgICAgaW50IGk7Cj4gICAgICAgICAgIG1mbl90ICpub2RlID0gbWFwX2RvbWFpbl9wYWdlKG1m bik7Cj4gICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgTE9HRElSVFlfTk9ERV9FTlRSSUVTOyBp KysgKQo+IC0gICAgICAgICAgICBub2RlW2ldID0gX21mbihJTlZBTElEX01GTik7Cj4gKyAgICAg ICAgICAgIG5vZGVbaV0gPSBJTlZBTElEX01GTjsKPiAgICAgICAgICAgdW5tYXBfZG9tYWluX3Bh Z2Uobm9kZSk7Cj4gICAgICAgfQo+ICAgICAgIHJldHVybiBtZm47Cj4gQEAgLTE2Nyw3ICsxNjcs NyBAQCBzdGF0aWMgaW50IHBhZ2luZ19mcmVlX2xvZ19kaXJ0eV9iaXRtYXAoc3RydWN0IGRvbWFp biAqZCwgaW50IHJjKQo+Cj4gICAgICAgICAgICAgICB1bm1hcF9kb21haW5fcGFnZShsMik7Cj4g ICAgICAgICAgICAgICBwYWdpbmdfZnJlZV9sb2dfZGlydHlfcGFnZShkLCBsM1tpM10pOwo+IC0g ICAgICAgICAgICBsM1tpM10gPSBfbWZuKElOVkFMSURfTUZOKTsKPiArICAgICAgICAgICAgbDNb aTNdID0gSU5WQUxJRF9NRk47Cj4KPiAgICAgICAgICAgICAgIGlmICggaTMgPCBMT0dESVJUWV9O T0RFX0VOVFJJRVMgLSAxICYmIGh5cGVyY2FsbF9wcmVlbXB0X2NoZWNrKCkgKQo+ICAgICAgICAg ICAgICAgewo+IEBAIC0xODIsNyArMTgyLDcgQEAgc3RhdGljIGludCBwYWdpbmdfZnJlZV9sb2df ZGlydHlfYml0bWFwKHN0cnVjdCBkb21haW4gKmQsIGludCByYykKPiAgICAgICAgICAgaWYgKCBy YyApCj4gICAgICAgICAgICAgICBicmVhazsKPiAgICAgICAgICAgcGFnaW5nX2ZyZWVfbG9nX2Rp cnR5X3BhZ2UoZCwgbDRbaTRdKTsKPiAtICAgICAgICBsNFtpNF0gPSBfbWZuKElOVkFMSURfTUZO KTsKPiArICAgICAgICBsNFtpNF0gPSBJTlZBTElEX01GTjsKPgo+ICAgICAgICAgICBpZiAoIGk0 IDwgTE9HRElSVFlfTk9ERV9FTlRSSUVTIC0gMSAmJiBoeXBlcmNhbGxfcHJlZW1wdF9jaGVjaygp ICkKPiAgICAgICAgICAgewo+IEBAIC0xOTgsNyArMTk4LDcgQEAgc3RhdGljIGludCBwYWdpbmdf ZnJlZV9sb2dfZGlydHlfYml0bWFwKHN0cnVjdCBkb21haW4gKmQsIGludCByYykKPiAgICAgICBp ZiAoICFyYyApCj4gICAgICAgewo+ICAgICAgICAgICBwYWdpbmdfZnJlZV9sb2dfZGlydHlfcGFn ZShkLCBkLT5hcmNoLnBhZ2luZy5sb2dfZGlydHkudG9wKTsKPiAtICAgICAgICBkLT5hcmNoLnBh Z2luZy5sb2dfZGlydHkudG9wID0gX21mbihJTlZBTElEX01GTik7Cj4gKyAgICAgICAgZC0+YXJj aC5wYWdpbmcubG9nX2RpcnR5LnRvcCA9IElOVkFMSURfTUZOOwo+Cj4gICAgICAgICAgIEFTU0VS VChkLT5hcmNoLnBhZ2luZy5sb2dfZGlydHkuYWxsb2NzID09IDApOwo+ICAgICAgICAgICBkLT5h cmNoLnBhZ2luZy5sb2dfZGlydHkuZmFpbGVkX2FsbG9jcyA9IDA7Cj4gQEAgLTY2MCw3ICs2NjAs NyBAQCBpbnQgcGFnaW5nX2RvbWFpbl9pbml0KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGlu dCBkb21jcl9mbGFncykKPiAgICAgICAvKiBUaGlzIG11c3QgYmUgaW5pdGlhbGl6ZWQgc2VwYXJh dGVseSBmcm9tIHRoZSByZXN0IG9mIHRoZQo+ICAgICAgICAqIGxvZy1kaXJ0eSBpbml0IGNvZGUg YXMgdGhhdCBjYW4gYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIGFuZCB3ZQo+ICAgICAgICAqIGRv bid0IHdhbnQgdG8gbGVhayBhbnkgYWN0aXZlIGxvZy1kaXJ0eSBiaXRtYXBzICovCj4gLSAgICBk LT5hcmNoLnBhZ2luZy5sb2dfZGlydHkudG9wID0gX21mbihJTlZBTElEX01GTik7Cj4gKyAgICBk LT5hcmNoLnBhZ2luZy5sb2dfZGlydHkudG9wID0gSU5WQUxJRF9NRk47Cj4KPiAgICAgICAvKgo+ ICAgICAgICAqIFNoYWRvdyBwYWdldGFibGVzIGFyZSB0aGUgZGVmYXVsdCwgYnV0IHdlIHdpbGwg dXNlCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMgYi94ZW4v YXJjaC94ODYvbW0vc2hhZG93L2NvbW1vbi5jCj4gaW5kZXggMjI2ZTMyZC4uMWMwYjZjZCAxMDA2 NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvbW0vc2hhZG93L2NvbW1vbi5jCj4gKysrIGIveGVuL2Fy Y2gveDg2L21tL3NoYWRvdy9jb21tb24uYwo+IEBAIC04OCwxMCArODgsMTAgQEAgdm9pZCBzaGFk b3dfdmNwdV9pbml0KHN0cnVjdCB2Y3B1ICp2KQo+Cj4gICAgICAgZm9yICggaSA9IDA7IGkgPCBT SEFET1dfT09TX1BBR0VTOyBpKysgKQo+ICAgICAgIHsKPiAtICAgICAgICB2LT5hcmNoLnBhZ2lu Zy5zaGFkb3cub29zW2ldID0gX21mbihJTlZBTElEX01GTik7Cj4gLSAgICAgICAgdi0+YXJjaC5w YWdpbmcuc2hhZG93Lm9vc19zbmFwc2hvdFtpXSA9IF9tZm4oSU5WQUxJRF9NRk4pOwo+ICsgICAg ICAgIHYtPmFyY2gucGFnaW5nLnNoYWRvdy5vb3NbaV0gPSBJTlZBTElEX01GTjsKPiArICAgICAg ICB2LT5hcmNoLnBhZ2luZy5zaGFkb3cub29zX3NuYXBzaG90W2ldID0gSU5WQUxJRF9NRk47Cj4g ICAgICAgICAgIGZvciAoIGogPSAwOyBqIDwgU0hBRE9XX09PU19GSVhVUFM7IGorKyApCj4gLSAg ICAgICAgICAgIHYtPmFyY2gucGFnaW5nLnNoYWRvdy5vb3NfZml4dXBbaV0uc21mbltqXSA9IF9t Zm4oSU5WQUxJRF9NRk4pOwo+ICsgICAgICAgICAgICB2LT5hcmNoLnBhZ2luZy5zaGFkb3cub29z X2ZpeHVwW2ldLnNtZm5bal0gPSBJTlZBTElEX01GTjsKPiAgICAgICB9Cj4gICAjZW5kaWYKPgo+ IEBAIC01OTMsMTIgKzU5MywxMiBAQCBzdGF0aWMgaW5saW5lIGludCBvb3NfZml4dXBfZmx1c2hf Z21mbihzdHJ1Y3QgdmNwdSAqdiwgbWZuX3QgZ21mbiwKPiAgICAgICBpbnQgaTsKPiAgICAgICBm b3IgKCBpID0gMDsgaSA8IFNIQURPV19PT1NfRklYVVBTOyBpKysgKQo+ICAgICAgIHsKPiAtICAg ICAgICBpZiAoIG1mbl94KGZpeHVwLT5zbWZuW2ldKSAhPSBJTlZBTElEX01GTiApCj4gKyAgICAg ICAgaWYgKCAhbWZuX2VxKGZpeHVwLT5zbWZuW2ldLCBJTlZBTElEX01GTikgKQo+ICAgICAgICAg ICB7Cj4gICAgICAgICAgICAgICBzaF9yZW1vdmVfd3JpdGVfYWNjZXNzX2Zyb21fc2wxcChkLCBn bWZuLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4 dXAtPnNtZm5baV0sCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmaXh1cC0+b2ZmW2ldKTsKPiAtICAgICAgICAgICAgZml4dXAtPnNtZm5baV0gPSBfbWZu KElOVkFMSURfTUZOKTsKPiArICAgICAgICAgICAgZml4dXAtPnNtZm5baV0gPSBJTlZBTElEX01G TjsKPiAgICAgICAgICAgfQo+ICAgICAgIH0KPgo+IEBAIC02MzYsNyArNjM2LDcgQEAgdm9pZCBv b3NfZml4dXBfYWRkKHN0cnVjdCBkb21haW4gKmQsIG1mbl90IGdtZm4sCj4KPiAgICAgICAgICAg ICAgIG5leHQgPSBvb3NfZml4dXBbaWR4XS5uZXh0Owo+Cj4gLSAgICAgICAgICAgIGlmICggbWZu X3gob29zX2ZpeHVwW2lkeF0uc21mbltuZXh0XSkgIT0gSU5WQUxJRF9NRk4gKQo+ICsgICAgICAg ICAgICBpZiAoICFtZm5fZXEob29zX2ZpeHVwW2lkeF0uc21mbltuZXh0XSwgSU5WQUxJRF9NRk4p ICkKPiAgICAgICAgICAgICAgIHsKPiAgICAgICAgICAgICAgICAgICBUUkFDRV9TSEFET1dfUEFU SF9GTEFHKFRSQ0VfU0ZMQUdfT09TX0ZJWFVQX0VWSUNUKTsKPgo+IEBAIC03NTcsNyArNzU3LDcg QEAgc3RhdGljIHZvaWQgb29zX2hhc2hfYWRkKHN0cnVjdCB2Y3B1ICp2LCBtZm5fdCBnbWZuKQo+ ICAgICAgIHN0cnVjdCBvb3NfZml4dXAgZml4dXAgPSB7IC5uZXh0ID0gMCB9Owo+Cj4gICAgICAg Zm9yIChpID0gMDsgaSA8IFNIQURPV19PT1NfRklYVVBTOyBpKysgKQo+IC0gICAgICAgIGZpeHVw LnNtZm5baV0gPSBfbWZuKElOVkFMSURfTUZOKTsKPiArICAgICAgICBmaXh1cC5zbWZuW2ldID0g SU5WQUxJRF9NRk47Cj4KPiAgICAgICBpZHggPSBtZm5feChnbWZuKSAlIFNIQURPV19PT1NfUEFH RVM7Cj4gICAgICAgb2lkeCA9IGlkeDsKPiBAQCAtODA3LDcgKzgwNyw3IEBAIHN0YXRpYyB2b2lk IG9vc19oYXNoX3JlbW92ZShzdHJ1Y3QgZG9tYWluICpkLCBtZm5fdCBnbWZuKQo+ICAgICAgICAg ICAgICAgaWR4ID0gKGlkeCArIDEpICUgU0hBRE9XX09PU19QQUdFUzsKPiAgICAgICAgICAgaWYg KCBtZm5feChvb3NbaWR4XSkgPT0gbWZuX3goZ21mbikgKQo+ICAgICAgICAgICB7Cj4gLSAgICAg ICAgICAgIG9vc1tpZHhdID0gX21mbihJTlZBTElEX01GTik7Cj4gKyAgICAgICAgICAgIG9vc1tp ZHhdID0gSU5WQUxJRF9NRk47Cj4gICAgICAgICAgICAgICByZXR1cm47Cj4gICAgICAgICAgIH0K PiAgICAgICB9Cj4gQEAgLTgzOCw3ICs4MzgsNiBAQCBtZm5fdCBvb3Nfc25hcHNob3RfbG9va3Vw KHN0cnVjdCBkb21haW4gKmQsIG1mbl90IGdtZm4pCj4KPiAgICAgICBTSEFET1dfRVJST1IoImdt Zm4gJWx4IHdhcyBPT1MgYnV0IG5vdCBpbiBoYXNoIHRhYmxlXG4iLCBtZm5feChnbWZuKSk7Cj4g ICAgICAgQlVHKCk7Cj4gLSAgICByZXR1cm4gX21mbihJTlZBTElEX01GTik7Cj4gICB9Cj4KPiAg IC8qIFB1bGwgYSBzaW5nbGUgZ3Vlc3QgcGFnZSBiYWNrIGludG8gc3luYyAqLwo+IEBAIC04NjIs NyArODYxLDcgQEAgdm9pZCBzaF9yZXN5bmMoc3RydWN0IGRvbWFpbiAqZCwgbWZuX3QgZ21mbikK PiAgICAgICAgICAgaWYgKCBtZm5feChvb3NbaWR4XSkgPT0gbWZuX3goZ21mbikgKQo+ICAgICAg ICAgICB7Cj4gICAgICAgICAgICAgICBfc2hfcmVzeW5jKHYsIGdtZm4sICZvb3NfZml4dXBbaWR4 XSwgb29zX3NuYXBzaG90W2lkeF0pOwo+IC0gICAgICAgICAgICBvb3NbaWR4XSA9IF9tZm4oSU5W QUxJRF9NRk4pOwo+ICsgICAgICAgICAgICBvb3NbaWR4XSA9IElOVkFMSURfTUZOOwo+ICAgICAg ICAgICAgICAgcmV0dXJuOwo+ICAgICAgICAgICB9Cj4gICAgICAgfQo+IEBAIC05MTQsNyArOTEz LDcgQEAgdm9pZCBzaF9yZXN5bmNfYWxsKHN0cnVjdCB2Y3B1ICp2LCBpbnQgc2tpcCwgaW50IHRo aXMsIGludCBvdGhlcnMpCj4gICAgICAgICAgIHsKPiAgICAgICAgICAgICAgIC8qIFdyaXRlLXBy b3RlY3QgYW5kIHN5bmMgY29udGVudHMgKi8KPiAgICAgICAgICAgICAgIF9zaF9yZXN5bmModiwg b29zW2lkeF0sICZvb3NfZml4dXBbaWR4XSwgb29zX3NuYXBzaG90W2lkeF0pOwo+IC0gICAgICAg ICAgICBvb3NbaWR4XSA9IF9tZm4oSU5WQUxJRF9NRk4pOwo+ICsgICAgICAgICAgICBvb3NbaWR4 XSA9IElOVkFMSURfTUZOOwo+ICAgICAgICAgICB9Cj4KPiAgICByZXN5bmNfb3RoZXJzOgo+IEBA IC05NDgsNyArOTQ3LDcgQEAgdm9pZCBzaF9yZXN5bmNfYWxsKHN0cnVjdCB2Y3B1ICp2LCBpbnQg c2tpcCwgaW50IHRoaXMsIGludCBvdGhlcnMpCj4gICAgICAgICAgICAgICB7Cj4gICAgICAgICAg ICAgICAgICAgLyogV3JpdGUtcHJvdGVjdCBhbmQgc3luYyBjb250ZW50cyAqLwo+ICAgICAgICAg ICAgICAgICAgIF9zaF9yZXN5bmMob3RoZXIsIG9vc1tpZHhdLCAmb29zX2ZpeHVwW2lkeF0sIG9v c19zbmFwc2hvdFtpZHhdKTsKPiAtICAgICAgICAgICAgICAgIG9vc1tpZHhdID0gX21mbihJTlZB TElEX01GTik7Cj4gKyAgICAgICAgICAgICAgICBvb3NbaWR4XSA9IElOVkFMSURfTUZOOwo+ICAg ICAgICAgICAgICAgfQo+ICAgICAgICAgICB9Cj4gICAgICAgfQo+IEBAIC0xNzg0LDcgKzE3ODMs NyBAQCB2b2lkICpzaF9lbXVsYXRlX21hcF9kZXN0KHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBs b25nIHZhZGRyLAo+ICAgICAgIGlmICggbGlrZWx5KCgodmFkZHIgKyBieXRlcyAtIDEpICYgUEFH RV9NQVNLKSA9PSAodmFkZHIgJiBQQUdFX01BU0spKSApCj4gICAgICAgewo+ICAgICAgICAgICAv KiBXaG9sZSB3cml0ZSBmaXRzIG9uIGEgc2luZ2xlIHBhZ2UuICovCj4gLSAgICAgICAgc2hfY3R4 dC0+bWZuWzFdID0gX21mbihJTlZBTElEX01GTik7Cj4gKyAgICAgICAgc2hfY3R4dC0+bWZuWzFd ID0gSU5WQUxJRF9NRk47Cj4gICAgICAgICAgIG1hcCA9IG1hcF9kb21haW5fcGFnZShzaF9jdHh0 LT5tZm5bMF0pICsgKHZhZGRyICYgflBBR0VfTUFTSyk7Cj4gICAgICAgfQo+ICAgICAgIGVsc2Ug aWYgKCAhaXNfaHZtX2RvbWFpbihkKSApCj4gQEAgLTIwODYsNyArMjA4NSw3IEBAIG1mbl90IHNo YWRvd19oYXNoX2xvb2t1cChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIG4sIHVuc2ln bmVkIGludCB0KQo+ICAgICAgIH0KPgo+ICAgICAgIHBlcmZjX2luY3Ioc2hhZG93X2hhc2hfbG9v a3VwX21pc3MpOwo+IC0gICAgcmV0dXJuIF9tZm4oSU5WQUxJRF9NRk4pOwo+ICsgICAgcmV0dXJu IElOVkFMSURfTUZOOwo+ICAgfQo+Cj4gICB2b2lkIHNoYWRvd19oYXNoX2luc2VydChzdHJ1Y3Qg ZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIG4sIHVuc2lnbmVkIGludCB0LAo+IEBAIC0yOTEwLDcg KzI5MDksNyBAQCB2b2lkIHNoX3Jlc2V0X2wzX3VwX3BvaW50ZXJzKHN0cnVjdCB2Y3B1ICp2KQo+ ICAgICAgIH07Cj4gICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBjYWxsYmFja19tYXNr ID0gU0hGX0wzXzY0Owo+Cj4gLSAgICBoYXNoX3ZjcHVfZm9yZWFjaCh2LCBjYWxsYmFja19tYXNr LCBjYWxsYmFja3MsIF9tZm4oSU5WQUxJRF9NRk4pKTsKPiArICAgIGhhc2hfdmNwdV9mb3JlYWNo KHYsIGNhbGxiYWNrX21hc2ssIGNhbGxiYWNrcywgSU5WQUxJRF9NRk4pOwo+ICAgfQo+Cj4KPiBA QCAtMjk0MCw3ICsyOTM5LDcgQEAgc3RhdGljIHZvaWQgc2hfdXBkYXRlX3BhZ2luZ19tb2Rlcyhz dHJ1Y3QgdmNwdSAqdikKPiAgICNlbmRpZiAvKiAoU0hBRE9XX09QVElNSVpBVElPTlMgJiBTSE9Q VF9WSVJUVUFMX1RMQikgKi8KPgo+ICAgI2lmIChTSEFET1dfT1BUSU1JWkFUSU9OUyAmIFNIT1BU X09VVF9PRl9TWU5DKQo+IC0gICAgaWYgKCBtZm5feCh2LT5hcmNoLnBhZ2luZy5zaGFkb3cub29z X3NuYXBzaG90WzBdKSA9PSBJTlZBTElEX01GTiApCj4gKyAgICBpZiAoIG1mbl9lcSh2LT5hcmNo LnBhZ2luZy5zaGFkb3cub29zX3NuYXBzaG90WzBdLCBJTlZBTElEX01GTikgKQo+ICAgICAgIHsK PiAgICAgICAgICAgaW50IGk7Cj4gICAgICAgICAgIGZvcihpID0gMDsgaSA8IFNIQURPV19PT1Nf UEFHRVM7IGkrKykKPiBAQCAtMzI4NCw3ICszMjgzLDcgQEAgdm9pZCBzaGFkb3dfdGVhcmRvd24o c3RydWN0IGRvbWFpbiAqZCwgaW50ICpwcmVlbXB0ZWQpCj4gICAgICAgICAgICAgICAgICAgaWYg KCBtZm5fdmFsaWQob29zX3NuYXBzaG90W2ldKSApCj4gICAgICAgICAgICAgICAgICAgewo+ICAg ICAgICAgICAgICAgICAgICAgICBzaGFkb3dfZnJlZShkLCBvb3Nfc25hcHNob3RbaV0pOwo+IC0g ICAgICAgICAgICAgICAgICAgIG9vc19zbmFwc2hvdFtpXSA9IF9tZm4oSU5WQUxJRF9NRk4pOwo+ ICsgICAgICAgICAgICAgICAgICAgIG9vc19zbmFwc2hvdFtpXSA9IElOVkFMSURfTUZOOwo+ICAg ICAgICAgICAgICAgICAgIH0KPiAgICAgICAgICAgfQo+ICAgI2VuZGlmIC8qIE9PUyAqLwo+IEBA IC0zNDQ5LDcgKzM0NDgsNyBAQCBzdGF0aWMgaW50IHNoYWRvd19vbmVfYml0X2Rpc2FibGUoc3Ry dWN0IGRvbWFpbiAqZCwgdTMyIG1vZGUpCj4gICAgICAgICAgICAgICAgICAgICAgIGlmICggbWZu X3ZhbGlkKG9vc19zbmFwc2hvdFtpXSkgKQo+ICAgICAgICAgICAgICAgICAgICAgICB7Cj4gICAg ICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dfZnJlZShkLCBvb3Nfc25hcHNob3RbaV0pOwo+ IC0gICAgICAgICAgICAgICAgICAgICAgICBvb3Nfc25hcHNob3RbaV0gPSBfbWZuKElOVkFMSURf TUZOKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgb29zX3NuYXBzaG90W2ldID0gSU5WQUxJ RF9NRk47Cj4gICAgICAgICAgICAgICAgICAgICAgIH0KPiAgICAgICAgICAgICAgIH0KPiAgICNl bmRpZiAvKiBPT1MgKi8KPiBAQCAtMzc0NCw3ICszNzQzLDcgQEAgaW50IHNoYWRvd190cmFja19k aXJ0eV92cmFtKHN0cnVjdCBkb21haW4gKmQsCj4gICAgICAgICAgIG1lbWNweShkaXJ0eV9iaXRt YXAsIGRpcnR5X3ZyYW0tPmRpcnR5X2JpdG1hcCwgZGlydHlfc2l6ZSk7Cj4gICAgICAgZWxzZQo+ ICAgICAgIHsKPiAtICAgICAgICB1bnNpZ25lZCBsb25nIG1hcF9tZm4gPSBJTlZBTElEX01GTjsK PiArICAgICAgICB1bnNpZ25lZCBsb25nIG1hcF9tZm4gPSBtZm5feChJTlZBTElEX01GTik7Cj4g ICAgICAgICAgIHZvaWQgKm1hcF9zbDFwID0gTlVMTDsKPgo+ICAgICAgICAgICAvKiBJdGVyYXRl IG92ZXIgVlJBTSB0byB0cmFjayBkaXJ0eSBiaXRzLiAqLwo+IEBAIC0zNzU0LDcgKzM3NTMsNyBA QCBpbnQgc2hhZG93X3RyYWNrX2RpcnR5X3ZyYW0oc3RydWN0IGRvbWFpbiAqZCwKPiAgICAgICAg ICAgICAgIGludCBkaXJ0eSA9IDA7Cj4gICAgICAgICAgICAgICBwYWRkcl90IHNsMW1hID0gZGly dHlfdnJhbS0+c2wxbWFbaV07Cj4KPiAtICAgICAgICAgICAgaWYgKG1mbl94KG1mbikgPT0gSU5W QUxJRF9NRk4pCj4gKyAgICAgICAgICAgIGlmICggIW1mbl9lcShtZm4sIElOVkFMSURfTUZOKSAp Cj4gICAgICAgICAgICAgICB7Cj4gICAgICAgICAgICAgICAgICAgZGlydHkgPSAxOwo+ICAgICAg ICAgICAgICAgfQo+IEBAIC0zODMwLDcgKzM4MjksNyBAQCBpbnQgc2hhZG93X3RyYWNrX2RpcnR5 X3ZyYW0oc3RydWN0IGRvbWFpbiAqZCwKPiAgICAgICAgICAgICAgIGZvciAoIGkgPSBiZWdpbl9w Zm47IGkgPCBlbmRfcGZuOyBpKysgKQo+ICAgICAgICAgICAgICAgewo+ICAgICAgICAgICAgICAg ICAgIG1mbl90IG1mbiA9IGdldF9nZm5fcXVlcnlfdW5sb2NrZWQoZCwgaSwgJnQpOwo+IC0gICAg ICAgICAgICAgICAgaWYgKCBtZm5feChtZm4pICE9IElOVkFMSURfTUZOICkKPiArICAgICAgICAg ICAgICAgIGlmICggIW1mbl9lcShtZm4sIElOVkFMSURfTUZOKSApCj4gICAgICAgICAgICAgICAg ICAgICAgIGZsdXNoX3RsYiB8PSBzaF9yZW1vdmVfd3JpdGVfYWNjZXNzKGQsIG1mbiwgMSwgMCk7 Cj4gICAgICAgICAgICAgICB9Cj4gICAgICAgICAgICAgICBkaXJ0eV92cmFtLT5sYXN0X2RpcnR5 ID0gLTE7Cj4gQEAgLTM5NjgsNyArMzk2Nyw3IEBAIHZvaWQgc2hhZG93X2F1ZGl0X3RhYmxlcyhz dHJ1Y3QgdmNwdSAqdikKPiAgICAgICAgICAgfQo+ICAgICAgIH0KPgo+IC0gICAgaGFzaF92Y3B1 X2ZvcmVhY2godiwgbWFzaywgY2FsbGJhY2tzLCBfbWZuKElOVkFMSURfTUZOKSk7Cj4gKyAgICBo YXNoX3ZjcHVfZm9yZWFjaCh2LCBtYXNrLCBjYWxsYmFja3MsIElOVkFMSURfTUZOX1QpOwo+ICAg fQo+Cj4gICAjZW5kaWYgLyogU2hhZG93IGF1ZGl0ICovCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9tbS9zaGFkb3cvbXVsdGkuYyBiL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGkuYwo+ IGluZGV4IGRmZTU5YTIuLmY4OTJlMmYgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L21tL3No YWRvdy9tdWx0aS5jCj4gKysrIGIveGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jCj4gQEAg LTE3Nyw3ICsxNzcsNyBAQCBzaF93YWxrX2d1ZXN0X3RhYmxlcyhzdHJ1Y3QgdmNwdSAqdiwgdW5z aWduZWQgbG9uZyB2YSwgd2Fsa190ICpndywKPiAgIHsKPiAgICAgICByZXR1cm4gZ3Vlc3Rfd2Fs a190YWJsZXModiwgcDJtX2dldF9ob3N0cDJtKHYtPmRvbWFpbiksIHZhLCBndywgcGZlYywKPiAg ICNpZiBHVUVTVF9QQUdJTkdfTEVWRUxTID09IDMgLyogUEFFICovCj4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgX21mbihJTlZBTElEX01GTiksCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSU5WQUxJRF9NRk4sCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYt PmFyY2gucGFnaW5nLnNoYWRvdy5nbDNlCj4gICAjZWxzZSAvKiAzMiBvciA2NCAqLwo+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdldGFibGVfZ2V0X21mbih2LT5hcmNoLmd1ZXN0 X3RhYmxlKSwKPiBAQCAtMzM2LDMyICszMzYsMzIgQEAgc3RhdGljIHZvaWQgc2hfYXVkaXRfZ3co c3RydWN0IHZjcHUgKnYsIHdhbGtfdCAqZ3cpCj4gICAgICAgaWYgKCBtZm5fdmFsaWQoZ3ctPmw0 bWZuKQo+ICAgICAgICAgICAgJiYgbWZuX3ZhbGlkKChzbWZuID0gZ2V0X3NoYWRvd19zdGF0dXMo ZCwgZ3ctPmw0bWZuLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU0hfdHlwZV9sNF9zaGFkb3cpKSkgKQo+IC0gICAgICAgICh2b2lkKSBzaF9hdWRp dF9sNF90YWJsZSh2LCBzbWZuLCBfbWZuKElOVkFMSURfTUZOKSk7Cj4gKyAgICAgICAgKHZvaWQp IHNoX2F1ZGl0X2w0X3RhYmxlKHYsIHNtZm4sIElOVkFMSURfTUZOKTsKPiAgICAgICBpZiAoIG1m bl92YWxpZChndy0+bDNtZm4pCj4gICAgICAgICAgICAmJiBtZm5fdmFsaWQoKHNtZm4gPSBnZXRf c2hhZG93X3N0YXR1cyhkLCBndy0+bDNtZm4sCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBTSF90eXBlX2wzX3NoYWRvdykpKSApCj4gLSAgICAgICAg KHZvaWQpIHNoX2F1ZGl0X2wzX3RhYmxlKHYsIHNtZm4sIF9tZm4oSU5WQUxJRF9NRk4pKTsKPiAr ICAgICAgICAodm9pZCkgc2hfYXVkaXRfbDNfdGFibGUodiwgc21mbiwgSU5WQUxJRF9NRk4pOwo+ ICAgI2VuZGlmIC8qIFBBRSBvciA2NC4uLiAqLwo+ICAgICAgIGlmICggbWZuX3ZhbGlkKGd3LT5s Mm1mbikgKQo+ICAgICAgIHsKPiAgICAgICAgICAgaWYgKCBtZm5fdmFsaWQoKHNtZm4gPSBnZXRf c2hhZG93X3N0YXR1cyhkLCBndy0+bDJtZm4sCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgU0hfdHlwZV9sMl9zaGFkb3cpKSkgKQo+IC0gICAgICAg ICAgICAodm9pZCkgc2hfYXVkaXRfbDJfdGFibGUodiwgc21mbiwgX21mbihJTlZBTElEX01GTikp Owo+ICsgICAgICAgICAgICAodm9pZCkgc2hfYXVkaXRfbDJfdGFibGUodiwgc21mbiwgSU5WQUxJ RF9NRk4pOwo+ICAgI2lmIEdVRVNUX1BBR0lOR19MRVZFTFMgPT0gMwo+ICAgICAgICAgICBpZiAo IG1mbl92YWxpZCgoc21mbiA9IGdldF9zaGFkb3dfc3RhdHVzKGQsIGd3LT5sMm1mbiwKPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSF90eXBlX2wy aF9zaGFkb3cpKSkgKQo+IC0gICAgICAgICAgICAodm9pZCkgc2hfYXVkaXRfbDJfdGFibGUodiwg c21mbiwgX21mbihJTlZBTElEX01GTikpOwo+ICsgICAgICAgICAgICAodm9pZCkgc2hfYXVkaXRf bDJfdGFibGUodiwgc21mbiwgSU5WQUxJRF9NRk4pOwo+ICAgI2VuZGlmCj4gICAgICAgfQo+ICAg ICAgIGlmICggbWZuX3ZhbGlkKGd3LT5sMW1mbikKPiAgICAgICAgICAgICYmIG1mbl92YWxpZCgo c21mbiA9IGdldF9zaGFkb3dfc3RhdHVzKGQsIGd3LT5sMW1mbiwKPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIX3R5cGVfbDFfc2hhZG93KSkpICkK PiAtICAgICAgICAodm9pZCkgc2hfYXVkaXRfbDFfdGFibGUodiwgc21mbiwgX21mbihJTlZBTElE X01GTikpOwo+ICsgICAgICAgICh2b2lkKSBzaF9hdWRpdF9sMV90YWJsZSh2LCBzbWZuLCBJTlZB TElEX01GTik7Cj4gICAgICAgZWxzZSBpZiAoIChndWVzdF9sMmVfZ2V0X2ZsYWdzKGd3LT5sMmUp ICYgX1BBR0VfUFJFU0VOVCkKPiAgICAgICAgICAgICAgICAgJiYgKGd1ZXN0X2wyZV9nZXRfZmxh Z3MoZ3ctPmwyZSkgJiBfUEFHRV9QU0UpCj4gICAgICAgICAgICAgICAgICYmIG1mbl92YWxpZCgK PiAgICAgICAgICAgICAgICAgKHNtZm4gPSBnZXRfZmwxX3NoYWRvd19zdGF0dXMoZCwgZ3Vlc3Rf bDJlX2dldF9nZm4oZ3ctPmwyZSkpKSkgKQo+IC0gICAgICAgICh2b2lkKSBzaF9hdWRpdF9mbDFf dGFibGUodiwgc21mbiwgX21mbihJTlZBTElEX01GTikpOwo+ICsgICAgICAgICh2b2lkKSBzaF9h dWRpdF9mbDFfdGFibGUodiwgc21mbiwgSU5WQUxJRF9NRk4pOwo+ICAgfQo+Cj4gICAjZWxzZQo+ IEBAIC0xNzUyLDcgKzE3NTIsNyBAQCBzdGF0aWMgc2hhZG93X2wyZV90ICogc2hhZG93X2dldF9h bmRfY3JlYXRlX2wyZShzdHJ1Y3QgdmNwdSAqdiwKPiAgIHsKPiAgICNpZiBHVUVTVF9QQUdJTkdf TEVWRUxTID49IDQgLyogNjRiaXQuLi4gKi8KPiAgICAgICBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ ZG9tYWluOwo+IC0gICAgbWZuX3Qgc2wzbWZuID0gX21mbihJTlZBTElEX01GTik7Cj4gKyAgICBt Zm5fdCBzbDNtZm4gPSBJTlZBTElEX01GTjsKPiAgICAgICBzaGFkb3dfbDNlX3QgKnNsM2U7Cj4g ICAgICAgaWYgKCAhbWZuX3ZhbGlkKGd3LT5sMm1mbikgKSByZXR1cm4gTlVMTDsgLyogTm8gZ3Vl c3QgcGFnZS4gKi8KPiAgICAgICAvKiBHZXQgdGhlIGwzZSAqLwo+IEBAIC0yMTU4LDcgKzIxNTgs NyBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX2dsNGUoc3RydWN0IHZjcHUgKnYsIHZvaWQgKm5ld19n ZSwgbWZuX3Qgc2w0bWZuLCB2b2lkICpzZSkKPiAgICAgICBzaGFkb3dfbDRlX3QgbmV3X3NsNGU7 Cj4gICAgICAgZ3Vlc3RfbDRlX3QgbmV3X2dsNGUgPSAqKGd1ZXN0X2w0ZV90ICopbmV3X2dlOwo+ ICAgICAgIHNoYWRvd19sNGVfdCAqc2w0cCA9IHNlOwo+IC0gICAgbWZuX3Qgc2wzbWZuID0gX21m bihJTlZBTElEX01GTik7Cj4gKyAgICBtZm5fdCBzbDNtZm4gPSBJTlZBTElEX01GTjsKPiAgICAg ICBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOwo+ICAgICAgIHAybV90eXBlX3QgcDJtdDsK PiAgICAgICBpbnQgcmVzdWx0ID0gMDsKPiBAQCAtMjIxNyw3ICsyMjE3LDcgQEAgc3RhdGljIGlu dCB2YWxpZGF0ZV9nbDNlKHN0cnVjdCB2Y3B1ICp2LCB2b2lkICpuZXdfZ2UsIG1mbl90IHNsM21m biwgdm9pZCAqc2UpCj4gICAgICAgc2hhZG93X2wzZV90IG5ld19zbDNlOwo+ICAgICAgIGd1ZXN0 X2wzZV90IG5ld19nbDNlID0gKihndWVzdF9sM2VfdCAqKW5ld19nZTsKPiAgICAgICBzaGFkb3df bDNlX3QgKnNsM3AgPSBzZTsKPiAtICAgIG1mbl90IHNsMm1mbiA9IF9tZm4oSU5WQUxJRF9NRk4p Owo+ICsgICAgbWZuX3Qgc2wybWZuID0gSU5WQUxJRF9NRk47Cj4gICAgICAgcDJtX3R5cGVfdCBw Mm10Owo+ICAgICAgIGludCByZXN1bHQgPSAwOwo+Cj4gQEAgLTIyNTAsNyArMjI1MCw3IEBAIHN0 YXRpYyBpbnQgdmFsaWRhdGVfZ2wyZShzdHJ1Y3QgdmNwdSAqdiwgdm9pZCAqbmV3X2dlLCBtZm5f dCBzbDJtZm4sIHZvaWQgKnNlKQo+ICAgICAgIHNoYWRvd19sMmVfdCBuZXdfc2wyZTsKPiAgICAg ICBndWVzdF9sMmVfdCBuZXdfZ2wyZSA9ICooZ3Vlc3RfbDJlX3QgKiluZXdfZ2U7Cj4gICAgICAg c2hhZG93X2wyZV90ICpzbDJwID0gc2U7Cj4gLSAgICBtZm5fdCBzbDFtZm4gPSBfbWZuKElOVkFM SURfTUZOKTsKPiArICAgIG1mbl90IHNsMW1mbiA9IElOVkFMSURfTUZOOwo+ICAgICAgIHAybV90 eXBlX3QgcDJtdDsKPiAgICAgICBpbnQgcmVzdWx0ID0gMDsKPgo+IEBAIC0yNjA4LDcgKzI2MDgs NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY2hlY2tfZm9yX2Vhcmx5X3Vuc2hhZG93KHN0cnVjdCB2 Y3B1ICp2LCBtZm5fdCBnbWZuKQo+ICAgc3RhdGljIGlubGluZSB2b2lkIHJlc2V0X2Vhcmx5X3Vu c2hhZG93KHN0cnVjdCB2Y3B1ICp2KQo+ICAgewo+ICAgI2lmIFNIQURPV19PUFRJTUlaQVRJT05T ICYgU0hPUFRfRUFSTFlfVU5TSEFET1cKPiAtICAgIHYtPmFyY2gucGFnaW5nLnNoYWRvdy5sYXN0 X2VtdWxhdGVkX21mbl9mb3JfdW5zaGFkb3cgPSBJTlZBTElEX01GTjsKPiArICAgIHYtPmFyY2gu cGFnaW5nLnNoYWRvdy5sYXN0X2VtdWxhdGVkX21mbl9mb3JfdW5zaGFkb3cgPSBtZm5feChJTlZB TElEX01GTik7Cj4gICAjZW5kaWYKPiAgIH0KPgo+IEBAIC00MTA1LDEwICs0MTA1LDEwIEBAIHNo X3VwZGF0ZV9jcjMoc3RydWN0IHZjcHUgKnYsIGludCBkb19sb2NraW5nKQo+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gU0hfdHlwZV9sMmhfc2hhZG93Cj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBTSF90eXBlX2wy X3NoYWRvdyk7Cj4gICAgICAgICAgICAgICAgICAgZWxzZQo+IC0gICAgICAgICAgICAgICAgICAg IHNoX3NldF90b3BsZXZlbF9zaGFkb3codiwgaSwgX21mbihJTlZBTElEX01GTiksIDApOwo+ICsg ICAgICAgICAgICAgICAgICAgIHNoX3NldF90b3BsZXZlbF9zaGFkb3codiwgaSwgSU5WQUxJRF9N Rk4sIDApOwo+ICAgICAgICAgICAgICAgfQo+ICAgICAgICAgICAgICAgZWxzZQo+IC0gICAgICAg ICAgICAgICAgc2hfc2V0X3RvcGxldmVsX3NoYWRvdyh2LCBpLCBfbWZuKElOVkFMSURfTUZOKSwg MCk7Cj4gKyAgICAgICAgICAgICAgICBzaF9zZXRfdG9wbGV2ZWxfc2hhZG93KHYsIGksIElOVkFM SURfTUZOLCAwKTsKPiAgICAgICAgICAgfQo+ICAgICAgIH0KPiAgICNlbGlmIEdVRVNUX1BBR0lO R19MRVZFTFMgPT0gNAo+IEBAIC00NTMxLDcgKzQ1MzEsNyBAQCBzdGF0aWMgdm9pZCBzaF9wYWdl dGFibGVfZHlpbmcoc3RydWN0IHZjcHUgKnYsIHBhZGRyX3QgZ3BhKQo+Cj4gICAgICAgICAgIGlm ICggZmFzdF9wYXRoICkgewo+ICAgICAgICAgICAgICAgaWYgKCBwYWdldGFibGVfaXNfbnVsbCh2 LT5hcmNoLnNoYWRvd190YWJsZVtpXSkgKQo+IC0gICAgICAgICAgICAgICAgc21mbiA9IF9tZm4o SU5WQUxJRF9NRk4pOwo+ICsgICAgICAgICAgICAgICAgc21mbiA9IElOVkFMSURfTUZOOwo+ICAg ICAgICAgICAgICAgZWxzZQo+ICAgICAgICAgICAgICAgICAgIHNtZm4gPSBfbWZuKHBhZ2V0YWJs ZV9nZXRfcGZuKHYtPmFyY2guc2hhZG93X3RhYmxlW2ldKSk7Cj4gICAgICAgICAgIH0KPiBAQCAt NDU0MCw4ICs0NTQwLDggQEAgc3RhdGljIHZvaWQgc2hfcGFnZXRhYmxlX2R5aW5nKHN0cnVjdCB2 Y3B1ICp2LCBwYWRkcl90IGdwYSkKPiAgICAgICAgICAgICAgIC8qIHJldHJpZXZpbmcgdGhlIGwy cyAqLwo+ICAgICAgICAgICAgICAgZ21mbiA9IGdldF9nZm5fcXVlcnlfdW5sb2NrZWQoZCwgZ2Zu X3goZ3Vlc3RfbDNlX2dldF9nZm4oZ2wzZVtpXSkpLAo+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJnAybXQpOwo+IC0gICAgICAgICAgICBzbWZuID0gdW5saWtl bHkobWZuX3goZ21mbikgPT0gSU5WQUxJRF9NRk4pCj4gLSAgICAgICAgICAgICAgICAgICA/IF9t Zm4oSU5WQUxJRF9NRk4pCj4gKyAgICAgICAgICAgIHNtZm4gPSB1bmxpa2VseShtZm5fZXEoZ21m biwgSU5WQUxJRF9NRk4pKQo+ICsgICAgICAgICAgICAgICAgICAgPyBJTlZBTElEX01GTgo+ICAg ICAgICAgICAgICAgICAgICAgIDogc2hhZG93X2hhc2hfbG9va3VwKGQsIG1mbl94KGdtZm4pLCBT SF90eXBlX2wyX3BhZV9zaGFkb3cpOwo+ICAgICAgICAgICB9Cj4KPiBAQCAtNDg0Niw3ICs0ODQ2 LDcgQEAgaW50IHNoX2F1ZGl0X2ZsMV90YWJsZShzdHJ1Y3QgdmNwdSAqdiwgbWZuX3Qgc2wxbWZu LCBtZm5fdCB4KQo+ICAgewo+ICAgICAgIGd1ZXN0X2wxZV90ICpnbDFlLCBlOwo+ICAgICAgIHNo YWRvd19sMWVfdCAqc2wxZTsKPiAtICAgIG1mbl90IGdsMW1mbiA9IF9tZm4oSU5WQUxJRF9NRk4p Owo+ICsgICAgbWZuX3QgZ2wxbWZuID0gSU5WQUxJRF9NRk47Cj4gICAgICAgaW50IGY7Cj4gICAg ICAgaW50IGRvbmUgPSAwOwo+Cj4gZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vZG9tYWluLmMgYi94 ZW4vY29tbW9uL2RvbWFpbi5jCj4gaW5kZXggNDUyNzNkNC4uNDJjMDdlZSAxMDA2NDQKPiAtLS0g YS94ZW4vY29tbW9uL2RvbWFpbi5jCj4gKysrIGIveGVuL2NvbW1vbi9kb21haW4uYwo+IEBAIC0x MTcsNyArMTE3LDcgQEAgc3RhdGljIHZvaWQgdmNwdV9pbmZvX3Jlc2V0KHN0cnVjdCB2Y3B1ICp2 KQo+ICAgICAgIHYtPnZjcHVfaW5mbyA9ICgodi0+dmNwdV9pZCA8IFhFTl9MRUdBQ1lfTUFYX1ZD UFVTKQo+ICAgICAgICAgICAgICAgICAgICAgICA/ICh2Y3B1X2luZm9fdCAqKSZzaGFyZWRfaW5m byhkLCB2Y3B1X2luZm9bdi0+dmNwdV9pZF0pCj4gICAgICAgICAgICAgICAgICAgICAgIDogJmR1 bW15X3ZjcHVfaW5mbyk7Cj4gLSAgICB2LT52Y3B1X2luZm9fbWZuID0gSU5WQUxJRF9NRk47Cj4g KyAgICB2LT52Y3B1X2luZm9fbWZuID0gbWZuX3goSU5WQUxJRF9NRk4pOwo+ICAgfQo+Cj4gICBz dHJ1Y3QgdmNwdSAqYWxsb2NfdmNwdSgKPiBAQCAtMTE0MSw3ICsxMTQxLDcgQEAgaW50IG1hcF92 Y3B1X2luZm8oc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGxvbmcgZ2ZuLCB1bnNpZ25lZCBvZmZz ZXQpCj4gICAgICAgaWYgKCBvZmZzZXQgPiAoUEFHRV9TSVpFIC0gc2l6ZW9mKHZjcHVfaW5mb190 KSkgKQo+ICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPgo+IC0gICAgaWYgKCB2LT52Y3B1X2lu Zm9fbWZuICE9IElOVkFMSURfTUZOICkKPiArICAgIGlmICggdi0+dmNwdV9pbmZvX21mbiAhPSBt Zm5feChJTlZBTElEX01GTikgKQo+ICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPgo+ICAgICAg IC8qIFJ1biB0aGlzIGNvbW1hbmQgb24geW91cnNlbGYgb3Igb24gb3RoZXIgb2ZmbGluZSBWQ1BV Uy4gKi8KPiBAQCAtMTIwNSw3ICsxMjA1LDcgQEAgdm9pZCB1bm1hcF92Y3B1X2luZm8oc3RydWN0 IHZjcHUgKnYpCj4gICB7Cj4gICAgICAgdW5zaWduZWQgbG9uZyBtZm47Cj4KPiAtICAgIGlmICgg di0+dmNwdV9pbmZvX21mbiA9PSBJTlZBTElEX01GTiApCj4gKyAgICBpZiAoIHYtPnZjcHVfaW5m b19tZm4gPT0gbWZuX3goSU5WQUxJRF9NRk4pICkKPiAgICAgICAgICAgcmV0dXJuOwo+Cj4gICAg ICAgbWZuID0gdi0+dmNwdV9pbmZvX21mbjsKPiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9ncmFu dF90YWJsZS5jIGIveGVuL2NvbW1vbi9ncmFudF90YWJsZS5jCj4gaW5kZXggM2YxNTU0My4uZWNh Y2UwNyAxMDA2NDQKPiAtLS0gYS94ZW4vY29tbW9uL2dyYW50X3RhYmxlLmMKPiArKysgYi94ZW4v Y29tbW9uL2dyYW50X3RhYmxlLmMKPiBAQCAtMjQ0LDcgKzI0NCw3IEBAIHN0YXRpYyBpbnQgX19n ZXRfcGFnZWRfZnJhbWUodW5zaWduZWQgbG9uZyBnZm4sIHVuc2lnbmVkIGxvbmcgKmZyYW1lLCBz dHJ1Y3QgcGFnCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVhZG9ubHkpID8g UDJNX0FMTE9DIDogUDJNX1VOU0hBUkUpOwo+ICAgICAgIGlmICggISgqcGFnZSkgKQo+ICAgICAg IHsKPiAtICAgICAgICAqZnJhbWUgPSBJTlZBTElEX01GTjsKPiArICAgICAgICAqZnJhbWUgPSBt Zm5feChJTlZBTElEX01GTik7Cj4gICAgICAgICAgIGlmICggcDJtX2lzX3NoYXJlZChwMm10KSAp Cj4gICAgICAgICAgICAgICByZXR1cm4gR05UU1RfZWFnYWluOwo+ICAgICAgICAgICBpZiAoIHAy bV9pc19wYWdpbmcocDJtdCkgKQo+IEBAIC0yNjAsNyArMjYwLDcgQEAgc3RhdGljIGludCBfX2dl dF9wYWdlZF9mcmFtZSh1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWduZWQgbG9uZyAqZnJhbWUsIHN0 cnVjdCBwYWcKPiAgICAgICAqcGFnZSA9IG1mbl92YWxpZCgqZnJhbWUpID8gbWZuX3RvX3BhZ2Uo KmZyYW1lKSA6IE5VTEw7Cj4gICAgICAgaWYgKCAoISgqcGFnZSkpIHx8ICghZ2V0X3BhZ2UoKnBh Z2UsIHJkKSkgKQo+ICAgICAgIHsKPiAtICAgICAgICAqZnJhbWUgPSBJTlZBTElEX01GTjsKPiAr ICAgICAgICAqZnJhbWUgPSBtZm5feChJTlZBTElEX01GTik7Cj4gICAgICAgICAgICpwYWdlID0g TlVMTDsKPiAgICAgICAgICAgcmMgPSBHTlRTVF9iYWRfcGFnZTsKPiAgICAgICB9Cj4gQEAgLTE3 ODUsNyArMTc4NSw3IEBAIGdudHRhYl90cmFuc2ZlcigKPiAgICAgICAgICAgICAgIHAybV90eXBl X3QgX19wMm10Owo+ICAgICAgICAgICAgICAgbWZuID0gbWZuX3goZ2V0X2dmbl91bnNoYXJlKGQs IGdvcC5tZm4sICZfX3AybXQpKTsKPiAgICAgICAgICAgICAgIGlmICggcDJtX2lzX3NoYXJlZChf X3AybXQpIHx8ICFwMm1faXNfdmFsaWQoX19wMm10KSApCj4gLSAgICAgICAgICAgICAgICBtZm4g PSBJTlZBTElEX01GTjsKPiArICAgICAgICAgICAgICAgIG1mbiA9IG1mbl94KElOVkFMSURfTUZO KTsKPiAgICAgICAgICAgfQo+ICAgI2Vsc2UKPiAgICAgICAgICAgbWZuID0gbWZuX3goZ2ZuX3Rv X21mbihkLCBfZ2ZuKGdvcC5tZm4pKSk7Cj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9t bS5oIGIveGVuL2luY2x1ZGUveGVuL21tLmgKPiBpbmRleCBhZmJiMWExLi43ZjIwN2VjIDEwMDY0 NAo+IC0tLSBhL3hlbi9pbmNsdWRlL3hlbi9tbS5oCj4gKysrIGIveGVuL2luY2x1ZGUveGVuL21t LmgKPiBAQCAtNTUsNyArNTUsNyBAQAo+Cj4gICBUWVBFX1NBRkUodW5zaWduZWQgbG9uZywgbWZu KTsKPiAgICNkZWZpbmUgUFJJX21mbiAgICAgICAgICAiMDVseCIKPiAtI2RlZmluZSBJTlZBTElE X01GTiAgICAgICh+MFVMKQo+ICsjZGVmaW5lIElOVkFMSURfTUZOICAgICAgX21mbih+MFVMKQo+ Cj4gICAjaWZuZGVmIG1mbl90Cj4gICAjZGVmaW5lIG1mbl90IC8qIEdyZXAgZm9kZGVyOiBtZm5f dCwgX21mbigpIGFuZCBtZm5feCgpIGFyZSBkZWZpbmVkIGFib3ZlICovCj4KCi0tIApKdWxpZW4g R3JhbGwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl bi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0 cy54ZW4ub3JnL3hlbi1kZXZlbAo=