From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v3 for-next 4/4] xen: Convert __page_to_mfn and __mfn_to_page to use typesafe MFN Date: Wed, 1 Nov 2017 15:35:27 +0000 Message-ID: <8b5a0984b787457ea5b9f684ecf43fb7@AMSPEX02CL03.citrite.net> References: <20171101140316.31333-1-julien.grall@linaro.org> <20171101140316.31333-5-julien.grall@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171101140316.31333-5-julien.grall@linaro.org> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: 'Julien Grall' , "xen-devel@lists.xen.org" Cc: Kevin Tian , Stefano Stabellini , Wei Liu , Suravee Suthikulpanit , Razvan Cojocaru , Konrad Rzeszutek Wilk , Jun Nakajima , Andrew Cooper , "Tim (Xen.org)" , George Dunlap , Julien Grall , Tamas K Lengyel , Jan Beulich , Shane Wang , Ian Jackson , Boris Ostrovsky , Gang Wei List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IEp1bGllbiBHcmFsbCBbbWFpbHRv Omp1bGllbi5ncmFsbEBsaW5hcm8ub3JnXQo+IFNlbnQ6IDAxIE5vdmVtYmVyIDIwMTcgMTQ6MDMK PiBUbzogeGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKPiBDYzogSnVsaWVuIEdyYWxsIDxqdWxpZW4u Z3JhbGxAbGluYXJvLm9yZz47IFN0ZWZhbm8gU3RhYmVsbGluaQo+IDxzc3RhYmVsbGluaUBrZXJu ZWwub3JnPjsgSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT47IEFuZHJldwo+IENv b3BlciA8QW5kcmV3LkNvb3BlcjNAY2l0cml4LmNvbT47IEdlb3JnZSBEdW5sYXAKPiA8R2Vvcmdl LkR1bmxhcEBjaXRyaXguY29tPjsgSWFuIEphY2tzb24gPElhbi5KYWNrc29uQGNpdHJpeC5jb20+ OyBKYW4KPiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT47IEtvbnJhZCBSemVzenV0ZWsgV2ls awo+IDxrb25yYWQud2lsa0BvcmFjbGUuY29tPjsgVGltIChYZW4ub3JnKSA8dGltQHhlbi5vcmc+ OyBXZWkgTGl1Cj4gPHdlaS5saXUyQGNpdHJpeC5jb20+OyBSYXp2YW4gQ29qb2NhcnUgPHJjb2pv Y2FydUBiaXRkZWZlbmRlci5jb20+Owo+IFRhbWFzIEsgTGVuZ3llbCA8dGFtYXNAdGtsZW5neWVs LmNvbT47IFBhdWwgRHVycmFudAo+IDxQYXVsLkR1cnJhbnRAY2l0cml4LmNvbT47IEJvcmlzIE9z dHJvdnNreSA8Ym9yaXMub3N0cm92c2t5QG9yYWNsZS5jb20+Owo+IFN1cmF2ZWUgU3V0aGlrdWxw YW5pdCA8c3VyYXZlZS5zdXRoaWt1bHBhbml0QGFtZC5jb20+OyBKdW4gTmFrYWppbWEKPiA8anVu Lm5ha2FqaW1hQGludGVsLmNvbT47IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPjsg R2VvcmdlCj4gRHVubGFwIDxHZW9yZ2UuRHVubGFwQGNpdHJpeC5jb20+OyBHYW5nIFdlaSA8Z2Fu Zy53ZWlAaW50ZWwuY29tPjsKPiBTaGFuZSBXYW5nIDxzaGFuZS53YW5nQGludGVsLmNvbT4KPiBT dWJqZWN0OiBbUEFUQ0ggdjMgZm9yLW5leHQgNC80XSB4ZW46IENvbnZlcnQgX19wYWdlX3RvX21m biBhbmQKPiBfX21mbl90b19wYWdlIHRvIHVzZSB0eXBlc2FmZSBNRk4KPiAKPiBNb3N0IG9mIHRo ZSB1c2VycyBvZiBwYWdlX3RvX21mbiBhbmQgbWZuX3RvX3BhZ2UgYXJlIGVpdGhlciBvdmVycmlk aW5nCj4gdGhlIG1hY3JvcyB0byBtYWtlIHRoZW0gd29yayB3aXRoIG1mbl90IG9yIHVzZSBtZm5f eC9fbWZuIGJlY2F1c2UgdGhlCj4gcmVzdCBvZiB0aGUgZnVuY3Rpb24gdXNlIG1mbl90Lgo+IAo+ IFNvIG1ha2UgX19wYWdlX3RvX21mbiBhbmQgX19tZm5fdG9fcGFnZSByZXR1cm4gbWZuX3QgYnkg ZGVmYXVsdC4KPiAKPiBPbmx5IHJlYXNvbmFibGUgY2xlYW4tdXBzIGFyZSBkb25lIGluIHRoaXMg cGF0Y2ggYmVjYXVzZSBpdCBpcwo+IGFscmVhZHkgcXVpdGUgYmlnLiBTbyBzb21lIG9mIHRoZSBm aWxlcyBub3cgb3ZlcnJpZGUgcGFnZV90b19tZm4gYW5kCj4gbWZuX3RvX3BhZ2UgdG8gYXZvaWQg dXNpbmcgbWZuX3QuCj4gCj4gTGFzdGx5LCBkb21haW5fcGFnZV90b19tZm4gaXMgYWxzbyBjb252 ZXJ0ZWQgdG8gdXNlIG1mbl90IGdpdmVuIHRoYXQKPiBtb3N0IG9mIHRoZSBjYWxsZXJzIGFyZSBu b3cgc3dpdGNoZWQgdG8gX21mbihkb21haW5fcGFnZV90b19tZm4oLi4uKSkuCj4gCj4gU2lnbmVk LW9mZi1ieTogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAbGluYXJvLm9yZz4KPiAKCmVtdWxh dGUgYml0cy4uLgoKUmV2aWV3ZWQtYnk6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJp eC5jb20+Cgo+IC0tLQo+IAo+IEFuZHJldyBzdWdnZXN0ZWQgdG8gZHJvcCBJU19WQUxJRF9QQUdF IGluIHhlbi90bWVtX3hlbi5oLiBIaXMKPiBjb21tZW50Cj4gd2FzOgo+IAo+ICIvc2lnaCAgVGhp cyBpcyB0YXV0b2xvZ2ljYWwuICBUaGUgZGVmaW5pdGlvbiBvZiBhICJ2YWxpZCBtZm4iIGluIHRo aXMKPiBjYXNlIGlzIG9uZSBmb3Igd2hpY2ggd2UgaGF2ZSBmcmFtZXRhYmxlIGVudHJ5LCBhbmQg YnkgaGF2aW5nIGEgc3RydWN0Cj4gcGFnZV9pbmZvIGluIG91ciBoYW5kcywgdGhpcyBpcyBieSBk ZWZpbml0aW9uIHRydWUgKHVubGVzcyB5b3UgaGF2ZSBhCj4gd2lsZCBwb2ludGVyLCBhdCB3aGlj aCBwb2ludCB5b3VyIGJ1ZyBpcyBlbHNld2hlcmUpLgo+IAo+IElTX1ZBTElEX1BBR0UoKSBpcyBv bmx5IGV2ZXIgdXNlZCBpbiBhc3NlcnRpb25zIGFuZCBuZXZlciB1c2VmdWxseSwgc28KPiBpbnN0 ZWFkIEkgd291bGQgcmVtb3ZlIGl0IGVudGlyZWx5IHJhdGhlciB0aGFuIHRyeWluZyB0byBmaXgg aXQgdXAuIgo+IAo+IEkgY2FuIHJlbW92ZSB0aGUgZnVuY3Rpb24gaW4gYSBzZXBhcmF0ZSBwYXRj aCBhdCB0aGUgYmVnaW5pbmcgb2YgdGhlCj4gc2VyaWVzIGlmIEtvbnJhZCAoVE1FTSBtYWludGFp bmVyKSBpcyBoYXBweSB3aXRoIHRoYXQuCj4gCj4gQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0 YWJlbGxpbmlAa2VybmVsLm9yZz4KPiBDYzogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJt LmNvbT4KPiBDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KPiBD YzogR2VvcmdlIER1bmxhcCA8R2VvcmdlLkR1bmxhcEBldS5jaXRyaXguY29tPgo+IENjOiBJYW4g SmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4KPiBDYzogSmFuIEJldWxpY2ggPGpi ZXVsaWNoQHN1c2UuY29tPgo+IENjOiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxr QG9yYWNsZS5jb20+Cj4gQ2M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgo+IENjOiBXZWkgTGl1 IDx3ZWkubGl1MkBjaXRyaXguY29tPgo+IENjOiBSYXp2YW4gQ29qb2NhcnUgPHJjb2pvY2FydUBi aXRkZWZlbmRlci5jb20+Cj4gQ2M6IFRhbWFzIEsgTGVuZ3llbCA8dGFtYXNAdGtsZW5neWVsLmNv bT4KPiBDYzogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KPiBDYzogQm9y aXMgT3N0cm92c2t5IDxib3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbT4KPiBDYzogU3VyYXZlZSBT dXRoaWt1bHBhbml0IDxzdXJhdmVlLnN1dGhpa3VscGFuaXRAYW1kLmNvbT4KPiBDYzogSnVuIE5h a2FqaW1hIDxqdW4ubmFrYWppbWFAaW50ZWwuY29tPgo+IENjOiBLZXZpbiBUaWFuIDxrZXZpbi50 aWFuQGludGVsLmNvbT4KPiBDYzogR2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBldS5jaXRy aXguY29tPgo+IENjOiBHYW5nIFdlaSA8Z2FuZy53ZWlAaW50ZWwuY29tPgo+IENjOiBTaGFuZSBX YW5nIDxzaGFuZS53YW5nQGludGVsLmNvbT4KPiAKPiAgICAgQ2hhbmdlcyBpbiB2MzoKPiAgICAg ICAgIC0gUmViYXNlIG9uIHRoZSBsYXRlc3Qgc3RhZ2luZyBhbmQgZml4IHNvbWUgY29uZmxpY3Rz LiBUYWdzCj4gICAgICAgICBoYXZlbid0IGJlIHJldGFpbmVkLgo+ICAgICAgICAgLSBTd2l0Y2gg dGhlIHByaW50ZiBmb3JtYXQgdG8gUFJJX21mbgo+IAo+ICAgICBDaGFuZ2VzIGluIHYyOgo+ICAg ICAgICAgLSBTb21lIHBhcnQgaGF2ZSBiZWVuIG1vdmVkIGluIHNlcGFyYXRlIHBhdGNoCj4gICAg ICAgICAtIFJlbW92ZSBvbmUgc3B1cmlvdXMgY29tbWVudAo+ICAgICAgICAgLSBDb252ZXJ0IGRv bWFpbl9wYWdlX3RvX21mbiB0byB1c2UgbWZuX3QKPiAtLS0KPiAgeGVuL2FyY2gvYXJtL2RvbWFp bl9idWlsZC5jICAgICAgICAgICAgIHwgIDIgLS0KPiAgeGVuL2FyY2gvYXJtL2tlcm5lbC5jICAg ICAgICAgICAgICAgICAgIHwgIDIgKy0KPiAgeGVuL2FyY2gvYXJtL21lbV9hY2Nlc3MuYyAgICAg ICAgICAgICAgIHwgIDIgKy0KPiAgeGVuL2FyY2gvYXJtL21tLmMgICAgICAgICAgICAgICAgICAg ICAgIHwgIDggKysrKy0tLS0KPiAgeGVuL2FyY2gvYXJtL3AybS5jICAgICAgICAgICAgICAgICAg ICAgIHwgMTAgKystLS0tLS0tLQo+ICB4ZW4vYXJjaC94ODYvY3B1L3ZwbXUuYyAgICAgICAgICAg ICAgICAgfCAgNCArKy0tCj4gIHhlbi9hcmNoL3g4Ni9kb21haW4uYyAgICAgICAgICAgICAgICAg ICB8IDIxICsrKysrKysrKysrLS0tLS0tLS0tLQo+ICB4ZW4vYXJjaC94ODYvZG9tYWluX3BhZ2Uu YyAgICAgICAgICAgICAgfCAgNiArKystLS0KPiAgeGVuL2FyY2gveDg2L2RvbWN0bC5jICAgICAg ICAgICAgICAgICAgIHwgIDIgKy0KPiAgeGVuL2FyY2gveDg2L2h2bS9kbS5jICAgICAgICAgICAg ICAgICAgIHwgIDIgKy0KPiAgeGVuL2FyY2gveDg2L2h2bS9kb20wX2J1aWxkLmMgICAgICAgICAg IHwgIDYgKysrLS0tCj4gIHhlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jICAgICAgICAgICAgICB8 ICA2ICsrKy0tLQo+ICB4ZW4vYXJjaC94ODYvaHZtL2h2bS5jICAgICAgICAgICAgICAgICAgfCAx NiArKysrKysrKy0tLS0tLS0tCj4gIHhlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYyAgICAgICAgICAg ICAgICB8ICA2ICsrKy0tLQo+ICB4ZW4vYXJjaC94ODYvaHZtL3N0ZHZnYS5jICAgICAgICAgICAg ICAgfCAgMiArLQo+ICB4ZW4vYXJjaC94ODYvaHZtL3N2bS9zdm0uYyAgICAgICAgICAgICAgfCAg NCArKy0tCj4gIHhlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4uYyAgICAgICAgICAgICB8ICA2ICsr Ky0tLQo+ICB4ZW4vYXJjaC94ODYvaHZtL3ZteC92bWNzLmMgICAgICAgICAgICAgfCAgMiArLQo+ ICB4ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYyAgICAgICAgICAgICAgfCAxMCArKysrKy0tLS0t Cj4gIHhlbi9hcmNoL3g4Ni9odm0vdm14L3Z2bXguYyAgICAgICAgICAgICB8ICA2ICsrKy0tLQo+ ICB4ZW4vYXJjaC94ODYvbW0uYyAgICAgICAgICAgICAgICAgICAgICAgfCAgNiAtLS0tLS0KPiAg eGVuL2FyY2gveDg2L21tL2d1ZXN0X3dhbGsuYyAgICAgICAgICAgIHwgIDYgKysrLS0tCj4gIHhl bi9hcmNoL3g4Ni9tbS9oYXAvZ3Vlc3Rfd2Fsay5jICAgICAgICB8ICAyICstCj4gIHhlbi9hcmNo L3g4Ni9tbS9oYXAvaGFwLmMgICAgICAgICAgICAgICB8ICA2IC0tLS0tLQo+ICB4ZW4vYXJjaC94 ODYvbW0vaGFwL25lc3RlZF9lcHQuYyAgICAgICAgfCAgMiArLQo+ICB4ZW4vYXJjaC94ODYvbW0v bWVtX3NoYXJpbmcuYyAgICAgICAgICAgfCAgNSAtLS0tLQo+ICB4ZW4vYXJjaC94ODYvbW0vcDJt LWVwdC5jICAgICAgICAgICAgICAgfCAgNCArKysrCj4gIHhlbi9hcmNoL3g4Ni9tbS9wMm0tcG9k LmMgICAgICAgICAgICAgICB8ICA2IC0tLS0tLQo+ICB4ZW4vYXJjaC94ODYvbW0vcDJtLmMgICAg ICAgICAgICAgICAgICAgfCAgNiAtLS0tLS0KPiAgeGVuL2FyY2gveDg2L21tL3BhZ2luZy5jICAg ICAgICAgICAgICAgIHwgIDYgLS0tLS0tCj4gIHhlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvcHJpdmF0 ZS5oICAgICAgICB8IDE2ICsrLS0tLS0tLS0tLS0tLS0KPiAgeGVuL2FyY2gveDg2L251bWEuYyAg ICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KPiAgeGVuL2FyY2gveDg2L3BoeXNkZXYuYyAgICAg ICAgICAgICAgICAgIHwgIDIgKy0KPiAgeGVuL2FyY2gveDg2L3B2L2NhbGxiYWNrLmMgICAgICAg ICAgICAgIHwgIDYgLS0tLS0tCj4gIHhlbi9hcmNoL3g4Ni9wdi9kZXNjcmlwdG9yLXRhYmxlcy5j ICAgICB8IDEwIC0tLS0tLS0tLS0KPiAgeGVuL2FyY2gveDg2L3B2L2RvbTBfYnVpbGQuYyAgICAg ICAgICAgIHwgIDYgKysrKysrCj4gIHhlbi9hcmNoL3g4Ni9wdi9kb21haW4uYyAgICAgICAgICAg ICAgICB8ICA2IC0tLS0tLQo+ICB4ZW4vYXJjaC94ODYvcHYvZW11bC1nYXRlLW9wLmMgICAgICAg ICAgfCAgNiAtLS0tLS0KPiAgeGVuL2FyY2gveDg2L3B2L2VtdWwtcHJpdi1vcC5jICAgICAgICAg IHwgMTAgLS0tLS0tLS0tLQo+ICB4ZW4vYXJjaC94ODYvcHYvZ3JhbnRfdGFibGUuYyAgICAgICAg ICAgfCAgNiAtLS0tLS0KPiAgeGVuL2FyY2gveDg2L3B2L3JvLXBhZ2UtZmF1bHQuYyAgICAgICAg IHwgIDYgLS0tLS0tCj4gIHhlbi9hcmNoL3g4Ni9zbXBib290LmMgICAgICAgICAgICAgICAgICB8 ICA2IC0tLS0tLQo+ICB4ZW4vYXJjaC94ODYvdGJvb3QuYyAgICAgICAgICAgICAgICAgICAgfCAg NCArKy0tCj4gIHhlbi9hcmNoL3g4Ni90cmFwcy5jICAgICAgICAgICAgICAgICAgICB8ICA0ICsr LS0KPiAgeGVuL2FyY2gveDg2L3g4Nl82NC9tbS5jICAgICAgICAgICAgICAgIHwgIDYgKysrKysr Cj4gIHhlbi9jb21tb24vZG9tYWluLmMgICAgICAgICAgICAgICAgICAgICB8ICA0ICsrLS0KPiAg eGVuL2NvbW1vbi9ncmFudF90YWJsZS5jICAgICAgICAgICAgICAgIHwgIDYgKysrKysrCj4gIHhl bi9jb21tb24va2ltYWdlLmMgICAgICAgICAgICAgICAgICAgICB8ICA2IC0tLS0tLQo+ICB4ZW4v Y29tbW9uL21lbW9yeS5jICAgICAgICAgICAgICAgICAgICAgfCAgNiArKysrKysKPiAgeGVuL2Nv bW1vbi9wYWdlX2FsbG9jLmMgICAgICAgICAgICAgICAgIHwgIDYgKysrKysrCj4gIHhlbi9jb21t b24vdG1lbS5jICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCj4gIHhlbi9jb21tb24vdG1l bV94ZW4uYyAgICAgICAgICAgICAgICAgICB8ICA0IC0tLS0KPiAgeGVuL2NvbW1vbi90cmFjZS5j ICAgICAgICAgICAgICAgICAgICAgIHwgIDYgKysrKysrCj4gIHhlbi9jb21tb24vdm1hcC5jICAg ICAgICAgICAgICAgICAgICAgICB8ICA5ICsrKysrLS0tLQo+ICB4ZW4vY29tbW9uL3hlbm9wcm9m LmMgICAgICAgICAgICAgICAgICAgfCAgMiAtLQo+ICB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9h bWQvaW9tbXVfbWFwLmMgfCAgNiArKysrKysKPiAgeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9t bXUuYyAgICAgICAgIHwgIDIgKy0KPiAgeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gveDg2L2lvbW11 LmMgICAgIHwgIDIgKy0KPiAgeGVuL2luY2x1ZGUvYXNtLWFybS9tbS5oICAgICAgICAgICAgICAg IHwgMTYgKysrKysrKysrLS0tLS0tLQo+ICB4ZW4vaW5jbHVkZS9hc20tYXJtL3AybS5oICAgICAg ICAgICAgICAgfCAgNCArKy0tCj4gIHhlbi9pbmNsdWRlL2FzbS14ODYvbW0uaCAgICAgICAgICAg ICAgICB8IDEyICsrKysrKy0tLS0tLQo+ICB4ZW4vaW5jbHVkZS9hc20teDg2L3AybS5oICAgICAg ICAgICAgICAgfCAgMiArLQo+ICB4ZW4vaW5jbHVkZS9hc20teDg2L3BhZ2UuaCAgICAgICAgICAg ICAgfCAzMiArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQo+ICB4ZW4vaW5jbHVkZS94 ZW4vZG9tYWluX3BhZ2UuaCAgICAgICAgICAgfCAgOCArKysrLS0tLQo+ICB4ZW4vaW5jbHVkZS94 ZW4vdG1lbV94ZW4uaCAgICAgICAgICAgICAgfCAgMiArLQo+ICA2NSBmaWxlcyBjaGFuZ2VkLCAx NjYgaW5zZXJ0aW9ucygrKSwgMjM5IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS94ZW4v YXJjaC9hcm0vZG9tYWluX2J1aWxkLmMgYi94ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMKPiBp bmRleCA1NTMyMDY4YWIxLi40YjU1NGI0OWMxIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL2FybS9k b21haW5fYnVpbGQuYwo+ICsrKyBiL3hlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYwo+IEBAIC01 MCw4ICs1MCw2IEBAIHN0cnVjdCBtYXBfcmFuZ2VfZGF0YQo+ICAvKiBPdmVycmlkZSBtYWNyb3Mg ZnJvbSBhc20vcGFnZS5oIHRvIG1ha2UgdGhlbSB3b3JrIHdpdGggbWZuX3QgKi8KPiAgI3VuZGVm IHZpcnRfdG9fbWZuCj4gICNkZWZpbmUgdmlydF90b19tZm4odmEpIF9tZm4oX192aXJ0X3RvX21m bih2YSkpCj4gLSN1bmRlZiBwYWdlX3RvX21mbgo+IC0jZGVmaW5lIHBhZ2VfdG9fbWZuKHBnKSBf bWZuKF9fcGFnZV90b19tZm4ocGcpKQo+IAo+ICAvLyNkZWZpbmUgREVCVUdfMTFfQUxMT0NBVElP Tgo+ICAjaWZkZWYgREVCVUdfMTFfQUxMT0NBVElPTgo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9h cm0va2VybmVsLmMgYi94ZW4vYXJjaC9hcm0va2VybmVsLmMKPiBpbmRleCBjMjc1NWE5YWI5Li4w MThkMWFlZDA2IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL2FybS9rZXJuZWwuYwo+ICsrKyBiL3hl bi9hcmNoL2FybS9rZXJuZWwuYwo+IEBAIC0yOTUsNyArMjk1LDcgQEAgc3RhdGljIF9faW5pdCBp bnQga2VybmVsX2RlY29tcHJlc3Moc3RydWN0Cj4gYm9vdG1vZHVsZSAqbW9kKQo+ICAgICAgICAg IGlvdW5tYXAoaW5wdXQpOwo+ICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ICAgICAgfQo+IC0g ICAgbWZuID0gX21mbihwYWdlX3RvX21mbihwYWdlcykpOwo+ICsgICAgbWZuID0gcGFnZV90b19t Zm4ocGFnZXMpOwo+ICAgICAgb3V0cHV0ID0gX192bWFwKCZtZm4sIDEgPDwga2VybmVsX29yZGVy X291dCwgMSwgMSwgUEFHRV9IWVBFUlZJU09SLAo+IFZNQVBfREVGQVVMVCk7Cj4gCj4gICAgICBy YyA9IHBlcmZvcm1fZ3VuemlwKG91dHB1dCwgaW5wdXQsIHNpemUpOwo+IGRpZmYgLS1naXQgYS94 ZW4vYXJjaC9hcm0vbWVtX2FjY2Vzcy5jIGIveGVuL2FyY2gvYXJtL21lbV9hY2Nlc3MuYwo+IGlu ZGV4IDBmMmNiYjgxZDMuLjExMmUyOTFjYmEgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJtL21l bV9hY2Nlc3MuYwo+ICsrKyBiL3hlbi9hcmNoL2FybS9tZW1fYWNjZXNzLmMKPiBAQCAtMjEwLDcg KzIxMCw3IEBAIHAybV9tZW1fYWNjZXNzX2NoZWNrX2FuZF9nZXRfcGFnZSh2YWRkcl90Cj4gZ3Zh LCB1bnNpZ25lZCBsb25nIGZsYWcsCj4gICAgICBpZiAoIHQgIT0gcDJtX3JhbV9ydyApCj4gICAg ICAgICAgZ290byBlcnI7Cj4gCj4gLSAgICBwYWdlID0gbWZuX3RvX3BhZ2UobWZuX3gobWZuKSk7 Cj4gKyAgICBwYWdlID0gbWZuX3RvX3BhZ2UobWZuKTsKPiAKPiAgICAgIGlmICggdW5saWtlbHko IWdldF9wYWdlKHBhZ2UsIHYtPmRvbWFpbikpICkKPiAgICAgICAgICBwYWdlID0gTlVMTDsKPiBk aWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL21tLmMgYi94ZW4vYXJjaC9hcm0vbW0uYwo+IGluZGV4 IDNjMzI4ZTJkZjUuLmI4ODE4ZTAzYWIgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJtL21tLmMK PiArKysgYi94ZW4vYXJjaC9hcm0vbW0uYwo+IEBAIC00NzcsNyArNDc3LDcgQEAgdm9pZCB1bm1h cF9kb21haW5fcGFnZShjb25zdCB2b2lkICp2YSkKPiAgICAgIGxvY2FsX2lycV9yZXN0b3JlKGZs YWdzKTsKPiAgfQo+IAo+IC11bnNpZ25lZCBsb25nIGRvbWFpbl9wYWdlX21hcF90b19tZm4oY29u c3Qgdm9pZCAqcHRyKQo+ICttZm5fdCBkb21haW5fcGFnZV9tYXBfdG9fbWZuKGNvbnN0IHZvaWQg KnB0cikKPiAgewo+ICAgICAgdW5zaWduZWQgbG9uZyB2YSA9ICh1bnNpZ25lZCBsb25nKXB0cjsK PiAgICAgIGxwYWVfdCAqbWFwID0gdGhpc19jcHUoeGVuX2RvbW1hcCk7Cj4gQEAgLTQ4NSwxMiAr NDg1LDEyIEBAIHVuc2lnbmVkIGxvbmcgZG9tYWluX3BhZ2VfbWFwX3RvX21mbihjb25zdAo+IHZv aWQgKnB0cikKPiAgICAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gKHZhPj5USElSRF9TSElGVCkg JiBMUEFFX0VOVFJZX01BU0s7Cj4gCj4gICAgICBpZiAoIHZhID49IFZNQVBfVklSVF9TVEFSVCAm JiB2YSA8IFZNQVBfVklSVF9FTkQgKQo+IC0gICAgICAgIHJldHVybiBfX3ZpcnRfdG9fbWZuKHZh KTsKPiArICAgICAgICByZXR1cm4gdmlydF90b19tZm4odmEpOwo+IAo+ICAgICAgQVNTRVJUKHNs b3QgPj0gMCAmJiBzbG90IDwgRE9NSEVBUF9FTlRSSUVTKTsKPiAgICAgIEFTU0VSVChtYXBbc2xv dF0ucHQuYXZhaWwgIT0gMCk7Cj4gCj4gLSAgICByZXR1cm4gbWFwW3Nsb3RdLnB0LmJhc2UgKyBv ZmZzZXQ7Cj4gKyAgICByZXR1cm4gX21mbihtYXBbc2xvdF0ucHQuYmFzZSArIG9mZnNldCk7Cj4g IH0KPiAgI2VuZGlmCj4gCj4gQEAgLTEyODgsNyArMTI4OCw3IEBAIGludCB4ZW5tZW1fYWRkX3Rv X3BoeXNtYXBfb25lKAo+ICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiAgICAgICAgICB9 Cj4gCj4gLSAgICAgICAgbWZuID0gX21mbihwYWdlX3RvX21mbihwYWdlKSk7Cj4gKyAgICAgICAg bWZuID0gcGFnZV90b19tZm4ocGFnZSk7Cj4gICAgICAgICAgdCA9IHAybV9tYXBfZm9yZWlnbjsK PiAKPiAgICAgICAgICByY3VfdW5sb2NrX2RvbWFpbihvZCk7Cj4gZGlmZiAtLWdpdCBhL3hlbi9h cmNoL2FybS9wMm0uYyBiL3hlbi9hcmNoL2FybS9wMm0uYwo+IGluZGV4IDY4YjQ4ODk5N2QuLmQx ZWY1MzVhNDMgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJtL3AybS5jCj4gKysrIGIveGVuL2Fy Y2gvYXJtL3AybS5jCj4gQEAgLTM4LDEyICszOCw2IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgX19y ZWFkX21vc3RseSBtYXhfdm1pZCA9Cj4gTUFYX1ZNSURfOF9CSVQ7Cj4gCj4gICNkZWZpbmUgUDJN X1JPT1RfUEFHRVMgICAgKDE8PFAyTV9ST09UX09SREVSKQo+IAo+IC0vKiBPdmVycmlkZSBtYWNy b3MgZnJvbSBhc20vbW0uaCB0byBtYWtlIHRoZW0gd29yayB3aXRoIG1mbl90ICovCj4gLSN1bmRl ZiBtZm5fdG9fcGFnZQo+IC0jZGVmaW5lIG1mbl90b19wYWdlKG1mbikgX19tZm5fdG9fcGFnZSht Zm5feChtZm4pKQo+IC0jdW5kZWYgcGFnZV90b19tZm4KPiAtI2RlZmluZSBwYWdlX3RvX21mbihw ZykgX21mbihfX3BhZ2VfdG9fbWZuKHBnKSkKPiAtCj4gIHVuc2lnbmVkIGludCBfX3JlYWRfbW9z dGx5IHAybV9pcGFfYml0czsKPiAKPiAgLyogSGVscGVycyB0byBsb29rdXAgdGhlIHByb3BlcnRp ZXMgb2YgZWFjaCBsZXZlbCAqLwo+IEBAIC05Nyw4ICs5MSw4IEBAIHZvaWQgZHVtcF9wMm1fbG9v a3VwKHN0cnVjdCBkb21haW4gKmQsIHBhZGRyX3QKPiBhZGRyKQo+IAo+ICAgICAgcHJpbnRrKCJk b20lZCBJUEEgMHglIlBSSXBhZGRyIlxuIiwgZC0+ZG9tYWluX2lkLCBhZGRyKTsKPiAKPiAtICAg IHByaW50aygiUDJNIEAgJXAgbWZuOjB4JWx4XG4iLAo+IC0gICAgICAgICAgIHAybS0+cm9vdCwg X19wYWdlX3RvX21mbihwMm0tPnJvb3QpKTsKPiArICAgIHByaW50aygiUDJNIEAgJXAgbWZuOiUj IlBSSV9tZm4iXG4iLAo+ICsgICAgICAgICAgIHAybS0+cm9vdCwgbWZuX3gocGFnZV90b19tZm4o cDJtLT5yb290KSkpOwo+IAo+ICAgICAgZHVtcF9wdF93YWxrKHBhZ2VfdG9fbWFkZHIocDJtLT5y b290KSwgYWRkciwKPiAgICAgICAgICAgICAgICAgICBQMk1fUk9PVF9MRVZFTCwgUDJNX1JPT1Rf UEFHRVMpOwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvY3B1L3ZwbXUuYyBiL3hlbi9hcmNo L3g4Ni9jcHUvdnBtdS5jCj4gaW5kZXggN2JhZjQ2MTRiZS4uYjk3OGUwNTYxMyAxMDA2NDQKPiAt LS0gYS94ZW4vYXJjaC94ODYvY3B1L3ZwbXUuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9jcHUvdnBt dS5jCj4gQEAgLTY1Myw3ICs2NTMsNyBAQCBzdGF0aWMgdm9pZCBwdnBtdV9maW5pc2goc3RydWN0 IGRvbWFpbiAqZCwKPiB4ZW5fcG11X3BhcmFtc190ICpwYXJhbXMpCj4gIHsKPiAgICAgIHN0cnVj dCB2Y3B1ICp2Owo+ICAgICAgc3RydWN0IHZwbXVfc3RydWN0ICp2cG11Owo+IC0gICAgdWludDY0 X3QgbWZuOwo+ICsgICAgbWZuX3QgbWZuOwo+ICAgICAgdm9pZCAqeGVucG11X2RhdGE7Cj4gCj4g ICAgICBpZiAoIChwYXJhbXMtPnZjcHUgPj0gZC0+bWF4X3ZjcHVzKSB8fCAoZC0+dmNwdVtwYXJh bXMtPnZjcHVdID09Cj4gTlVMTCkgKQo+IEBAIC02NzUsNyArNjc1LDcgQEAgc3RhdGljIHZvaWQg cHZwbXVfZmluaXNoKHN0cnVjdCBkb21haW4gKmQsCj4geGVuX3BtdV9wYXJhbXNfdCAqcGFyYW1z KQo+ICAgICAgaWYgKCB4ZW5wbXVfZGF0YSApCj4gICAgICB7Cj4gICAgICAgICAgbWZuID0gZG9t YWluX3BhZ2VfbWFwX3RvX21mbih4ZW5wbXVfZGF0YSk7Cj4gLSAgICAgICAgQVNTRVJUKG1mbl92 YWxpZChfbWZuKG1mbikpKTsKPiArICAgICAgICBBU1NFUlQobWZuX3ZhbGlkKG1mbikpOwo+ICAg ICAgICAgIHVubWFwX2RvbWFpbl9wYWdlX2dsb2JhbCh4ZW5wbXVfZGF0YSk7Cj4gICAgICAgICAg cHV0X3BhZ2VfYW5kX3R5cGUobWZuX3RvX3BhZ2UobWZuKSk7Cj4gICAgICB9Cj4gZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9kb21haW4uYyBiL3hlbi9hcmNoL3g4Ni9kb21haW4uYwo+IGluZGV4 IDczNWY0NWMxMzMuLmNiNTk2YzRhMzEgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L2RvbWFp bi5jCj4gKysrIGIveGVuL2FyY2gveDg2L2RvbWFpbi5jCj4gQEAgLTE4Niw3ICsxODYsNyBAQCB2 b2lkIGR1bXBfcGFnZWZyYW1lX2luZm8oc3RydWN0IGRvbWFpbiAqZCkKPiAgICAgICAgICAgICAg ICAgIH0KPiAgICAgICAgICAgICAgfQo+ICAgICAgICAgICAgICBwcmludGsoIiAgICBEb21QYWdl ICVwOiBjYWY9JTA4bHgsIHRhZj0lIiBQUnR5cGVfaW5mbyAiXG4iLAo+IC0gICAgICAgICAgICAg ICAgICAgX3AocGFnZV90b19tZm4ocGFnZSkpLAo+ICsgICAgICAgICAgICAgICAgICAgX3AobWZu X3gocGFnZV90b19tZm4ocGFnZSkpKSwKPiAgICAgICAgICAgICAgICAgICAgIHBhZ2UtPmNvdW50 X2luZm8sIHBhZ2UtPnUuaW51c2UudHlwZV9pbmZvKTsKPiAgICAgICAgICB9Cj4gICAgICAgICAg c3Bpbl91bmxvY2soJmQtPnBhZ2VfYWxsb2NfbG9jayk7Cj4gQEAgLTE5OSw3ICsxOTksNyBAQCB2 b2lkIGR1bXBfcGFnZWZyYW1lX2luZm8oc3RydWN0IGRvbWFpbiAqZCkKPiAgICAgIHBhZ2VfbGlz dF9mb3JfZWFjaCAoIHBhZ2UsICZkLT54ZW5wYWdlX2xpc3QgKQo+ICAgICAgewo+ICAgICAgICAg IHByaW50aygiICAgIFhlblBhZ2UgJXA6IGNhZj0lMDhseCwgdGFmPSUiIFBSdHlwZV9pbmZvICJc biIsCj4gLSAgICAgICAgICAgICAgIF9wKHBhZ2VfdG9fbWZuKHBhZ2UpKSwKPiArICAgICAgICAg ICAgICAgX3AobWZuX3gocGFnZV90b19tZm4ocGFnZSkpKSwKPiAgICAgICAgICAgICAgICAgcGFn ZS0+Y291bnRfaW5mbywgcGFnZS0+dS5pbnVzZS50eXBlX2luZm8pOwo+ICAgICAgfQo+ICAgICAg c3Bpbl91bmxvY2soJmQtPnBhZ2VfYWxsb2NfbG9jayk7Cj4gQEAgLTYyMSw3ICs2MjEsOCBAQCBp bnQgYXJjaF9kb21haW5fc29mdF9yZXNldChzdHJ1Y3QgZG9tYWluICpkKQo+ICAgICAgc3RydWN0 IHBhZ2VfaW5mbyAqcGFnZSA9IHZpcnRfdG9fcGFnZShkLT5zaGFyZWRfaW5mbyksICpuZXdfcGFn ZTsKPiAgICAgIGludCByZXQgPSAwOwo+ICAgICAgc3RydWN0IGRvbWFpbiAqb3duZXI7Cj4gLSAg ICB1bnNpZ25lZCBsb25nIG1mbiwgZ2ZuOwo+ICsgICAgbWZuX3QgbWZuOwo+ICsgICAgdW5zaWdu ZWQgbG9uZyBnZm47Cj4gICAgICBwMm1fdHlwZV90IHAybXQ7Cj4gICAgICB1bnNpZ25lZCBpbnQg aTsKPiAKPiBAQCAtNjU1LDcgKzY1Niw3IEBAIGludCBhcmNoX2RvbWFpbl9zb2Z0X3Jlc2V0KHN0 cnVjdCBkb21haW4gKmQpCj4gICAgICBBU1NFUlQoIG93bmVyID09IGQgKTsKPiAKPiAgICAgIG1m biA9IHBhZ2VfdG9fbWZuKHBhZ2UpOwo+IC0gICAgZ2ZuID0gbWZuX3RvX2dtZm4oZCwgbWZuKTsK PiArICAgIGdmbiA9IG1mbl90b19nbWZuKGQsIG1mbl94KG1mbikpOwo+IAo+ICAgICAgLyoKPiAg ICAgICAqIGdmbiA9PSBJTlZBTElEX0dGTiBpbmRpY2F0ZXMgdGhhdCB0aGUgc2hhcmVkX2luZm8g cGFnZSB3YXMgbmV2ZXIKPiBtYXBwZWQKPiBAQCAtNjY0LDcgKzY2NSw3IEBAIGludCBhcmNoX2Rv bWFpbl9zb2Z0X3Jlc2V0KHN0cnVjdCBkb21haW4gKmQpCj4gICAgICBpZiAoIGdmbiA9PSBnZm5f eChJTlZBTElEX0dGTikgKQo+ICAgICAgICAgIGdvdG8gZXhpdF9wdXRfcGFnZTsKPiAKPiAtICAg IGlmICggbWZuX3goZ2V0X2dmbl9xdWVyeShkLCBnZm4sICZwMm10KSkgIT0gbWZuICkKPiArICAg IGlmICggIW1mbl9lcShnZXRfZ2ZuX3F1ZXJ5KGQsIGdmbiwgJnAybXQpLCBtZm4pICkKPiAgICAg IHsKPiAgICAgICAgICBwcmludGsoWEVOTE9HX0dfRVJSICJGYWlsZWQgdG8gZ2V0IERvbSVkJ3Mg c2hhcmVkX2luZm8gR0ZOCj4gKCVseClcbiIsCj4gICAgICAgICAgICAgICAgIGQtPmRvbWFpbl9p ZCwgZ2ZuKTsKPiBAQCAtNjgxLDcgKzY4Miw3IEBAIGludCBhcmNoX2RvbWFpbl9zb2Z0X3Jlc2V0 KHN0cnVjdCBkb21haW4gKmQpCj4gICAgICAgICAgZ290byBleGl0X3B1dF9nZm47Cj4gICAgICB9 Cj4gCj4gLSAgICByZXQgPSBndWVzdF9waHlzbWFwX3JlbW92ZV9wYWdlKGQsIF9nZm4oZ2ZuKSwg X21mbihtZm4pLAo+IFBBR0VfT1JERVJfNEspOwo+ICsgICAgcmV0ID0gZ3Vlc3RfcGh5c21hcF9y ZW1vdmVfcGFnZShkLCBfZ2ZuKGdmbiksIG1mbiwKPiBQQUdFX09SREVSXzRLKTsKPiAgICAgIGlm ICggcmV0ICkKPiAgICAgIHsKPiAgICAgICAgICBwcmludGsoWEVOTE9HX0dfRVJSICJGYWlsZWQg dG8gcmVtb3ZlIERvbSVkJ3Mgc2hhcmVkX2luZm8gZnJhbWUKPiAlbHhcbiIsCj4gQEAgLTY5MCw3 ICs2OTEsNyBAQCBpbnQgYXJjaF9kb21haW5fc29mdF9yZXNldChzdHJ1Y3QgZG9tYWluICpkKQo+ ICAgICAgICAgIGdvdG8gZXhpdF9wdXRfZ2ZuOwo+ICAgICAgfQo+IAo+IC0gICAgcmV0ID0gZ3Vl c3RfcGh5c21hcF9hZGRfcGFnZShkLCBfZ2ZuKGdmbiksCj4gX21mbihwYWdlX3RvX21mbihuZXdf cGFnZSkpLAo+ICsgICAgcmV0ID0gZ3Vlc3RfcGh5c21hcF9hZGRfcGFnZShkLCBfZ2ZuKGdmbiks IHBhZ2VfdG9fbWZuKG5ld19wYWdlKSwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUEFHRV9PUkRFUl80Syk7Cj4gICAgICBpZiAoIHJldCApCj4gICAgICB7Cj4gQEAgLTk4OCw3 ICs5ODksNyBAQCBpbnQgYXJjaF9zZXRfaW5mb19ndWVzdCgKPiAgICAgICAgICAgICAgICAgIHsK PiAgICAgICAgICAgICAgICAgICAgICBpZiAoIChwYWdlLT51LmludXNlLnR5cGVfaW5mbyAmIFBH VF90eXBlX21hc2spID09Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICBQR1RfbDRfcGFnZV90 YWJsZSApCj4gLSAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUgPSAhZmlsbF9yb19tcHQoX21m bihwYWdlX3RvX21mbihwYWdlKSkpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICBkb25lID0g IWZpbGxfcm9fbXB0KHBhZ2VfdG9fbWZuKHBhZ2UpKTsKPiAKPiAgICAgICAgICAgICAgICAgICAg ICBwYWdlX3VubG9jayhwYWdlKTsKPiAgICAgICAgICAgICAgICAgIH0KPiBAQCAtMTExNSw3ICsx MTE2LDcgQEAgaW50IGFyY2hfc2V0X2luZm9fZ3Vlc3QoCj4gICAgICAgICAgbDRfcGdlbnRyeV90 ICpsNHRhYjsKPiAKPiAgICAgICAgICBsNHRhYiA9IG1hcF9kb21haW5fcGFnZShwYWdldGFibGVf Z2V0X21mbih2LT5hcmNoLmd1ZXN0X3RhYmxlKSk7Cj4gLSAgICAgICAgKmw0dGFiID0gbDRlX2Zy b21fcGZuKHBhZ2VfdG9fbWZuKGNyM19wYWdlKSwKPiArICAgICAgICAqbDR0YWIgPSBsNGVfZnJv bV9tZm4ocGFnZV90b19tZm4oY3IzX3BhZ2UpLAo+ICAgICAgICAgICAgICBfUEFHRV9QUkVTRU5U fF9QQUdFX1JXfF9QQUdFX1VTRVJ8X1BBR0VfQUNDRVNTRUQpOwo+ICAgICAgICAgIHVubWFwX2Rv bWFpbl9wYWdlKGw0dGFiKTsKPiAgICAgIH0KPiBAQCAtMTk0NSw3ICsxOTQ2LDcgQEAgaW50IGRv bWFpbl9yZWxpbnF1aXNoX3Jlc291cmNlcyhzdHJ1Y3QgZG9tYWluICpkKQo+ICAgICAgICAgIGlm ICggZC0+YXJjaC5waXJxX2VvaV9tYXAgIT0gTlVMTCApCj4gICAgICAgICAgewo+ICAgICAgICAg ICAgICB1bm1hcF9kb21haW5fcGFnZV9nbG9iYWwoZC0+YXJjaC5waXJxX2VvaV9tYXApOwo+IC0g ICAgICAgICAgICBwdXRfcGFnZV9hbmRfdHlwZShtZm5fdG9fcGFnZShkLT5hcmNoLnBpcnFfZW9p X21hcF9tZm4pKTsKPiArICAgICAgICAgICAgcHV0X3BhZ2VfYW5kX3R5cGUobWZuX3RvX3BhZ2Uo X21mbihkLQo+ID5hcmNoLnBpcnFfZW9pX21hcF9tZm4pKSk7Cj4gICAgICAgICAgICAgIGQtPmFy Y2gucGlycV9lb2lfbWFwID0gTlVMTDsKPiAgICAgICAgICAgICAgZC0+YXJjaC5hdXRvX3VubWFz ayA9IDA7Cj4gICAgICAgICAgfQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZG9tYWluX3Bh Z2UuYyBiL3hlbi9hcmNoL3g4Ni9kb21haW5fcGFnZS5jCj4gaW5kZXggMzQzMmE4NTRkZC4uODgw NDZiMzljOSAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvZG9tYWluX3BhZ2UuYwo+ICsrKyBi L3hlbi9hcmNoL3g4Ni9kb21haW5fcGFnZS5jCj4gQEAgLTMzMSwxMyArMzMxLDEzIEBAIHZvaWQg dW5tYXBfZG9tYWluX3BhZ2VfZ2xvYmFsKGNvbnN0IHZvaWQgKnB0cikKPiAgfQo+IAo+ICAvKiBU cmFuc2xhdGUgYSBtYXAtZG9tYWluLXBhZ2UnZCBhZGRyZXNzIHRvIHRoZSB1bmRlcmx5aW5nIE1G TiAqLwo+IC11bnNpZ25lZCBsb25nIGRvbWFpbl9wYWdlX21hcF90b19tZm4oY29uc3Qgdm9pZCAq cHRyKQo+ICttZm5fdCBkb21haW5fcGFnZV9tYXBfdG9fbWZuKGNvbnN0IHZvaWQgKnB0cikKPiAg ewo+ICAgICAgdW5zaWduZWQgbG9uZyB2YSA9ICh1bnNpZ25lZCBsb25nKXB0cjsKPiAgICAgIGNv bnN0IGwxX3BnZW50cnlfdCAqcGwxZTsKPiAKPiAgICAgIGlmICggdmEgPj0gRElSRUNUTUFQX1ZJ UlRfU1RBUlQgKQo+IC0gICAgICAgIHJldHVybiB2aXJ0X3RvX21mbihwdHIpOwo+ICsgICAgICAg IHJldHVybiBfbWZuKHZpcnRfdG9fbWZuKHB0cikpOwo+IAo+ICAgICAgaWYgKCB2YSA+PSBWTUFQ X1ZJUlRfU1RBUlQgJiYgdmEgPCBWTUFQX1ZJUlRfRU5EICkKPiAgICAgIHsKPiBAQCAtMzUwLDUg KzM1MCw1IEBAIHVuc2lnbmVkIGxvbmcgZG9tYWluX3BhZ2VfbWFwX3RvX21mbihjb25zdCB2b2lk Cj4gKnB0cikKPiAgICAgICAgICBwbDFlID0gJl9fbGluZWFyX2wxX3RhYmxlW2wxX2xpbmVhcl9v ZmZzZXQodmEpXTsKPiAgICAgIH0KPiAKPiAtICAgIHJldHVybiBsMWVfZ2V0X3BmbigqcGwxZSk7 Cj4gKyAgICByZXR1cm4gbDFlX2dldF9tZm4oKnBsMWUpOwo+ICB9Cj4gZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9kb21jdGwuYyBiL3hlbi9hcmNoL3g4Ni9kb21jdGwuYwo+IGluZGV4IDgwYjRk ZjllYzkuLjlmNmM5MjQxMWEgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L2RvbWN0bC5jCj4g KysrIGIveGVuL2FyY2gveDg2L2RvbWN0bC5jCj4gQEAgLTQyOSw3ICs0MjksNyBAQCBsb25nIGFy Y2hfZG9fZG9tY3RsKAo+ICAgICAgICAgIHsKPiAgICAgICAgICAgICAgaWYgKCBpID49IG1heF9w Zm5zICkKPiAgICAgICAgICAgICAgICAgIGJyZWFrOwo+IC0gICAgICAgICAgICBtZm4gPSBwYWdl X3RvX21mbihwYWdlKTsKPiArICAgICAgICAgICAgbWZuID0gbWZuX3gocGFnZV90b19tZm4ocGFn ZSkpOwo+ICAgICAgICAgICAgICBpZiAoIGNvcHlfdG9fZ3Vlc3Rfb2Zmc2V0KGRvbWN0bC0+dS5n ZXRtZW1saXN0LmJ1ZmZlciwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpLCAmbWZuLCAxKSApCj4gICAgICAgICAgICAgIHsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L2h2bS9kbS5jIGIveGVuL2FyY2gveDg2L2h2bS9kbS5jCj4gaW5kZXggYTc4N2Y0MzczNy4u NDc2MDgxNmVlNiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL2RtLmMKPiArKysgYi94 ZW4vYXJjaC94ODYvaHZtL2RtLmMKPiBAQCAtMjE5LDcgKzIxOSw3IEBAIHN0YXRpYyBpbnQgbW9k aWZpZWRfbWVtb3J5KHN0cnVjdCBkb21haW4gKmQsCj4gICAgICAgICAgICAgIHBhZ2UgPSBnZXRf cGFnZV9mcm9tX2dmbihkLCBwZm4sIE5VTEwsIFAyTV9VTlNIQVJFKTsKPiAgICAgICAgICAgICAg aWYgKCBwYWdlICkKPiAgICAgICAgICAgICAgewo+IC0gICAgICAgICAgICAgICAgbWZuX3QgZ21m biA9IF9tZm4ocGFnZV90b19tZm4ocGFnZSkpOwo+ICsgICAgICAgICAgICAgICAgbWZuX3QgZ21m biA9IHBhZ2VfdG9fbWZuKHBhZ2UpOwo+IAo+ICAgICAgICAgICAgICAgICAgcGFnaW5nX21hcmtf ZGlydHkoZCwgZ21mbik7Cj4gICAgICAgICAgICAgICAgICAvKgo+IGRpZmYgLS1naXQgYS94ZW4v YXJjaC94ODYvaHZtL2RvbTBfYnVpbGQuYwo+IGIveGVuL2FyY2gveDg2L2h2bS9kb20wX2J1aWxk LmMKPiBpbmRleCBhNjcwNzFjNzM5Li5iNTA1MDZlYzYzIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNo L3g4Ni9odm0vZG9tMF9idWlsZC5jCj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS9kb20wX2J1aWxk LmMKPiBAQCAtMTIwLDcgKzEyMCw3IEBAIHN0YXRpYyBpbnQgX19pbml0IHB2aF9wb3B1bGF0ZV9t ZW1vcnlfcmFuZ2Uoc3RydWN0Cj4gZG9tYWluICpkLAo+ICAgICAgICAgICAgICBjb250aW51ZTsK PiAgICAgICAgICB9Cj4gCj4gLSAgICAgICAgcmMgPSBndWVzdF9waHlzbWFwX2FkZF9wYWdlKGQs IF9nZm4oc3RhcnQpLAo+IF9tZm4ocGFnZV90b19tZm4ocGFnZSkpLAo+ICsgICAgICAgIHJjID0g Z3Vlc3RfcGh5c21hcF9hZGRfcGFnZShkLCBfZ2ZuKHN0YXJ0KSwgcGFnZV90b19tZm4ocGFnZSks Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyKTsKPiAgICAgICAg ICBpZiAoIHJjICE9IDAgKQo+ICAgICAgICAgIHsKPiBAQCAtMjcwLDcgKzI3MCw3IEBAIHN0YXRp YyBpbnQgX19pbml0Cj4gcHZoX3NldHVwX3ZteF9yZWFsbW9kZV9oZWxwZXJzKHN0cnVjdCBkb21h aW4gKmQpCj4gICAgICB9Cj4gICAgICB3cml0ZV8zMmJpdF9wc2VfaWRlbnRtYXAoaWRlbnRfcHQp Owo+ICAgICAgdW5tYXBfZG9tYWluX3BhZ2UoaWRlbnRfcHQpOwo+IC0gICAgcHV0X3BhZ2UobWZu X3RvX3BhZ2UobWZuX3gobWZuKSkpOwo+ICsgICAgcHV0X3BhZ2UobWZuX3RvX3BhZ2UobWZuKSk7 Cj4gICAgICBkLT5hcmNoLmh2bV9kb21haW4ucGFyYW1zW0hWTV9QQVJBTV9JREVOVF9QVF0gPSBn YWRkcjsKPiAgICAgIGlmICggcHZoX2FkZF9tZW1fcmFuZ2UoZCwgZ2FkZHIsIGdhZGRyICsgUEFH RV9TSVpFLCBFODIwX1JFU0VSVkVEKSApCj4gICAgICAgICAgICAgIHByaW50aygiVW5hYmxlIHRv IHNldCBpZGVudGl0eSBwYWdlIHRhYmxlcyBhcyByZXNlcnZlZCBpbiB0aGUgbWVtb3J5Cj4gbWFw XG4iKTsKPiBAQCAtMjg4LDcgKzI4OCw3IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBwdmhfc3RlYWxf bG93X3JhbShzdHJ1Y3QgZG9tYWluCj4gKmQsIHVuc2lnbmVkIGxvbmcgc3RhcnQsCj4gCj4gICAg ICBmb3IgKCBtZm4gPSBzdGFydDsgbWZuIDwgc3RhcnQgKyBucl9wYWdlczsgbWZuKysgKQo+ICAg ICAgewo+IC0gICAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnBnID0gbWZuX3RvX3BhZ2UobWZuKTsK PiArICAgICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwZyA9IG1mbl90b19wYWdlKF9tZm4obWZuKSk7 Cj4gICAgICAgICAgaW50IHJjOwo+IAo+ICAgICAgICAgIHJjID0gdW5zaGFyZV94ZW5fcGFnZV93 aXRoX2d1ZXN0KHBnLCBkb21faW8pOwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2Vt dWxhdGUuYyBiL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCj4gaW5kZXggZTkyNGNlMDdjNC4u MzEyYWE5MTQxNiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYwo+ICsr KyBiL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCj4gQEAgLTU5MCw3ICs1OTAsNyBAQCBzdGF0 aWMgdm9pZCAqaHZtZW11bF9tYXBfbGluZWFyX2FkZHIoCj4gICAgICAgICAgICAgIGdvdG8gdW5o YW5kbGVhYmxlOwo+ICAgICAgICAgIH0KPiAKPiAtICAgICAgICAqbWZuKysgPSBfbWZuKHBhZ2Vf dG9fbWZuKHBhZ2UpKTsKPiArICAgICAgICAqbWZuKysgPSBwYWdlX3RvX21mbihwYWdlKTsKPiAK PiAgICAgICAgICBpZiAoIHAybV9pc19kaXNjYXJkX3dyaXRlKHAybXQpICkKPiAgICAgICAgICB7 Cj4gQEAgLTYyMiw3ICs2MjIsNyBAQCBzdGF0aWMgdm9pZCAqaHZtZW11bF9tYXBfbGluZWFyX2Fk ZHIoCj4gICBvdXQ6Cj4gICAgICAvKiBEcm9wIGFsbCBoZWxkIHJlZmVyZW5jZXMuICovCj4gICAg ICB3aGlsZSAoIG1mbi0tID4gaHZtZW11bF9jdHh0LT5tZm4gKQo+IC0gICAgICAgIHB1dF9wYWdl KG1mbl90b19wYWdlKG1mbl94KCptZm4pKSk7Cj4gKyAgICAgICAgcHV0X3BhZ2UobWZuX3RvX3Bh Z2UoKm1mbikpOwo+IAo+ICAgICAgcmV0dXJuIGVycjsKPiAgfQo+IEBAIC02NDgsNyArNjQ4LDcg QEAgc3RhdGljIHZvaWQgaHZtZW11bF91bm1hcF9saW5lYXJfYWRkcigKPiAgICAgIHsKPiAgICAg ICAgICBBU1NFUlQobWZuX3ZhbGlkKCptZm4pKTsKPiAgICAgICAgICBwYWdpbmdfbWFya19kaXJ0 eShjdXJyZCwgKm1mbik7Cj4gLSAgICAgICAgcHV0X3BhZ2UobWZuX3RvX3BhZ2UobWZuX3goKm1m bikpKTsKPiArICAgICAgICBwdXRfcGFnZShtZm5fdG9fcGFnZSgqbWZuKSk7Cj4gCj4gICAgICAg ICAgKm1mbisrID0gX21mbigwKTsgLyogQ2xlYW4gc2xvdCBmb3IgbWFwKCkncyBlcnJvciBjaGVj a2luZy4gKi8KPiAgICAgIH0KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9odm0uYyBi L3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKPiBpbmRleCAyMDViNGNiNjg1Li40ZDc5NWVlNzAwIDEw MDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKPiArKysgYi94ZW4vYXJjaC94ODYv aHZtL2h2bS5jCj4gQEAgLTIyMTEsNyArMjIxMSw3IEBAIGludCBodm1fc2V0X2NyMCh1bnNpZ25l ZCBsb25nIHZhbHVlLCBib29sX3QKPiBtYXlfZGVmZXIpCj4gICAgICAgICAgICAgIHYtPmFyY2gu Z3Vlc3RfdGFibGUgPSBwYWdldGFibGVfZnJvbV9wYWdlKHBhZ2UpOwo+IAo+ICAgICAgICAgICAg ICBIVk1fREJHX0xPRyhEQkdfTEVWRUxfVk1NVSwgIlVwZGF0ZSBDUjMgdmFsdWUgPSAlbHgsIG1m biA9Cj4gJWx4IiwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgdi0+YXJjaC5odm1fdmNwdS5n dWVzdF9jclszXSwgcGFnZV90b19tZm4ocGFnZSkpOwo+ICsgICAgICAgICAgICAgICAgICAgICAg ICB2LT5hcmNoLmh2bV92Y3B1Lmd1ZXN0X2NyWzNdLCBtZm5feChwYWdlX3RvX21mbihwYWdlKSkp Owo+ICAgICAgICAgIH0KPiAgICAgIH0KPiAgICAgIGVsc2UgaWYgKCAhKHZhbHVlICYgWDg2X0NS MF9QRykgJiYgKG9sZF92YWx1ZSAmIFg4Nl9DUjBfUEcpICkKPiBAQCAtMjU0Niw3ICsyNTQ2LDcg QEAgc3RhdGljIHZvaWQgKl9odm1fbWFwX2d1ZXN0X2ZyYW1lKHVuc2lnbmVkCj4gbG9uZyBnZm4s IGJvb2xfdCBwZXJtYW5lbnQsCj4gICAgICAgICAgaWYgKCB1bmxpa2VseShwMm1faXNfZGlzY2Fy ZF93cml0ZShwMm10KSkgKQo+ICAgICAgICAgICAgICAqd3JpdGFibGUgPSAwOwo+ICAgICAgICAg IGVsc2UgaWYgKCAhcGVybWFuZW50ICkKPiAtICAgICAgICAgICAgcGFnaW5nX21hcmtfZGlydHko ZCwgX21mbihwYWdlX3RvX21mbihwYWdlKSkpOwo+ICsgICAgICAgICAgICBwYWdpbmdfbWFya19k aXJ0eShkLCBwYWdlX3RvX21mbihwYWdlKSk7Cj4gICAgICB9Cj4gCj4gICAgICBpZiAoICFwZXJt YW5lbnQgKQo+IEBAIC0yNTg4LDcgKzI1ODgsNyBAQCB2b2lkICpodm1fbWFwX2d1ZXN0X2ZyYW1l X3JvKHVuc2lnbmVkIGxvbmcKPiBnZm4sIGJvb2xfdCBwZXJtYW5lbnQpCj4gCj4gIHZvaWQgaHZt X3VubWFwX2d1ZXN0X2ZyYW1lKHZvaWQgKnAsIGJvb2xfdCBwZXJtYW5lbnQpCj4gIHsKPiAtICAg IHVuc2lnbmVkIGxvbmcgbWZuOwo+ICsgICAgbWZuX3QgbWZuOwo+ICAgICAgc3RydWN0IHBhZ2Vf aW5mbyAqcGFnZTsKPiAKPiAgICAgIGlmICggIXAgKQo+IEBAIC0yNjA5LDcgKzI2MDksNyBAQCB2 b2lkIGh2bV91bm1hcF9ndWVzdF9mcmFtZSh2b2lkICpwLCBib29sX3QKPiBwZXJtYW5lbnQpCj4g ICAgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSh0cmFjaywgJmQtPmFyY2guaHZtX2RvbWFpbi53 cml0ZV9tYXAubGlzdCwgbGlzdCkKPiAgICAgICAgICAgICAgaWYgKCB0cmFjay0+cGFnZSA9PSBw YWdlICkKPiAgICAgICAgICAgICAgewo+IC0gICAgICAgICAgICAgICAgcGFnaW5nX21hcmtfZGly dHkoZCwgX21mbihtZm4pKTsKPiArICAgICAgICAgICAgICAgIHBhZ2luZ19tYXJrX2RpcnR5KGQs IG1mbik7Cj4gICAgICAgICAgICAgICAgICBsaXN0X2RlbCgmdHJhY2stPmxpc3QpOwo+ICAgICAg ICAgICAgICAgICAgeGZyZWUodHJhY2spOwo+ICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gQEAg LTI2MjYsNyArMjYyNiw3IEBAIHZvaWQKPiBodm1fbWFwcGVkX2d1ZXN0X2ZyYW1lc19tYXJrX2Rp cnR5KHN0cnVjdCBkb21haW4gKmQpCj4gCj4gICAgICBzcGluX2xvY2soJmQtPmFyY2guaHZtX2Rv bWFpbi53cml0ZV9tYXAubG9jayk7Cj4gICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KHRyYWNrLCAm ZC0+YXJjaC5odm1fZG9tYWluLndyaXRlX21hcC5saXN0LCBsaXN0KQo+IC0gICAgICAgIHBhZ2lu Z19tYXJrX2RpcnR5KGQsIF9tZm4ocGFnZV90b19tZm4odHJhY2stPnBhZ2UpKSk7Cj4gKyAgICAg ICAgcGFnaW5nX21hcmtfZGlydHkoZCwgcGFnZV90b19tZm4odHJhY2stPnBhZ2UpKTsKPiAgICAg IHNwaW5fdW5sb2NrKCZkLT5hcmNoLmh2bV9kb21haW4ud3JpdGVfbWFwLmxvY2spOwo+ICB9Cj4g Cj4gQEAgLTMyMDAsOCArMzIwMCw4IEBAIHN0YXRpYyBlbnVtIGh2bV90cmFuc2xhdGlvbl9yZXN1 bHQgX19odm1fY29weSgKPiAKPiAgICAgICAgICAgICAgICAgIGlmICggeGNoZygmbGFzdHBhZ2Us IGdmbl94KGdmbikpICE9IGdmbl94KGdmbikgKQo+ICAgICAgICAgICAgICAgICAgICAgIGRwcmlu dGsoWEVOTE9HX0dfREVCVUcsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXB2IGF0 dGVtcHRlZCB3cml0ZSB0byByZWFkLW9ubHkgZ2ZuICUjbHggKG1mbj0lI2x4KVxuIiwKPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHYsIGdmbl94KGdmbiksIHBhZ2VfdG9fbWZuKHBhZ2Up KTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcHYgYXR0ZW1wdGVkIHdyaXRlIHRv IHJlYWQtb25seSBnZm4gJSNseAo+IChtZm49JSMiUFJJX21mbiIpXG4iLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdiwgZ2ZuX3goZ2ZuKSwgbWZuX3gocGFnZV90b19tZm4ocGFnZSkp KTsKPiAgICAgICAgICAgICAgfQo+ICAgICAgICAgICAgICBlbHNlCj4gICAgICAgICAgICAgIHsK PiBAQCAtMzIwOSw3ICszMjA5LDcgQEAgc3RhdGljIGVudW0gaHZtX3RyYW5zbGF0aW9uX3Jlc3Vs dCBfX2h2bV9jb3B5KAo+ICAgICAgICAgICAgICAgICAgICAgIG1lbWNweShwLCBidWYsIGNvdW50 KTsKPiAgICAgICAgICAgICAgICAgIGVsc2UKPiAgICAgICAgICAgICAgICAgICAgICBtZW1zZXQo cCwgMCwgY291bnQpOwo+IC0gICAgICAgICAgICAgICAgcGFnaW5nX21hcmtfZGlydHkodi0+ZG9t YWluLCBfbWZuKHBhZ2VfdG9fbWZuKHBhZ2UpKSk7Cj4gKyAgICAgICAgICAgICAgICBwYWdpbmdf bWFya19kaXJ0eSh2LT5kb21haW4sIHBhZ2VfdG9fbWZuKHBhZ2UpKTsKPiAgICAgICAgICAgICAg fQo+ICAgICAgICAgIH0KPiAgICAgICAgICBlbHNlCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4 Ni9odm0vaW9yZXEuYyBiL3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYwo+IGluZGV4IGQ1YWZlMjBj YzguLjBmODIzZDIwMWEgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jCj4g KysrIGIveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jCj4gQEAgLTI2OCw3ICsyNjgsNyBAQCBzdGF0 aWMgdm9pZCBodm1fcmVtb3ZlX2lvcmVxX2dmbigKPiAgICAgIHN0cnVjdCBkb21haW4gKmQsIHN0 cnVjdCBodm1faW9yZXFfcGFnZSAqaW9ycCkKPiAgewo+ICAgICAgaWYgKCBndWVzdF9waHlzbWFw X3JlbW92ZV9wYWdlKGQsIF9nZm4oaW9ycC0+Z2ZuKSwKPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBfbWZuKHBhZ2VfdG9fbWZuKGlvcnAtPnBhZ2UpKSwgMCkgKQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VfdG9fbWZuKGlvcnAtPnBhZ2UpLCAw KSApCj4gICAgICAgICAgZG9tYWluX2NyYXNoKGQpOwo+ICAgICAgY2xlYXJfcGFnZShpb3JwLT52 YSk7Cj4gIH0KPiBAQCAtMjgxLDkgKzI4MSw5IEBAIHN0YXRpYyBpbnQgaHZtX2FkZF9pb3JlcV9n Zm4oCj4gICAgICBjbGVhcl9wYWdlKGlvcnAtPnZhKTsKPiAKPiAgICAgIHJjID0gZ3Vlc3RfcGh5 c21hcF9hZGRfcGFnZShkLCBfZ2ZuKGlvcnAtPmdmbiksCj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgX21mbihwYWdlX3RvX21mbihpb3JwLT5wYWdlKSksIDApOwo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VfdG9fbWZuKGlvcnAtPnBhZ2UpLCAwKTsKPiAg ICAgIGlmICggcmMgPT0gMCApCj4gLSAgICAgICAgcGFnaW5nX21hcmtfZGlydHkoZCwgX21mbihw YWdlX3RvX21mbihpb3JwLT5wYWdlKSkpOwo+ICsgICAgICAgIHBhZ2luZ19tYXJrX2RpcnR5KGQs IHBhZ2VfdG9fbWZuKGlvcnAtPnBhZ2UpKTsKPiAKPiAgICAgIHJldHVybiByYzsKPiAgfQo+IGRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3N0ZHZnYS5jIGIveGVuL2FyY2gveDg2L2h2bS9z dGR2Z2EuYwo+IGluZGV4IDA4OGZiZGY4Y2UuLjkyNWJhYjI0MzggMTAwNjQ0Cj4gLS0tIGEveGVu L2FyY2gveDg2L2h2bS9zdGR2Z2EuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vc3RkdmdhLmMK PiBAQCAtNTkwLDcgKzU5MCw3IEBAIHZvaWQgc3RkdmdhX2luaXQoc3RydWN0IGRvbWFpbiAqZCkK PiAgICAgICAgICBpZiAoIHBnID09IE5VTEwgKQo+ICAgICAgICAgICAgICBicmVhazsKPiAgICAg ICAgICBzLT52cmFtX3BhZ2VbaV0gPSBwZzsKPiAtICAgICAgICBjbGVhcl9kb21haW5fcGFnZShf bWZuKHBhZ2VfdG9fbWZuKHBnKSkpOwo+ICsgICAgICAgIGNsZWFyX2RvbWFpbl9wYWdlKHBhZ2Vf dG9fbWZuKHBnKSk7Cj4gICAgICB9Cj4gCj4gICAgICBpZiAoIGkgPT0gQVJSQVlfU0laRShzLT52 cmFtX3BhZ2UpICkKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMgYi94 ZW4vYXJjaC94ODYvaHZtL3N2bS9zdm0uYwo+IGluZGV4IGI5Y2Y0MjNmZDkuLmY1MGY5MzE1OTgg MTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMKPiArKysgYi94ZW4vYXJj aC94ODYvaHZtL3N2bS9zdm0uYwo+IEBAIC0xNTIxLDcgKzE1MjEsNyBAQCBzdGF0aWMgaW50IHN2 bV9jcHVfdXBfcHJlcGFyZSh1bnNpZ25lZCBpbnQgY3B1KQo+ICAgICAgICAgIGlmICggIXBnICkK PiAgICAgICAgICAgICAgZ290byBlcnI7Cj4gCj4gLSAgICAgICAgY2xlYXJfZG9tYWluX3BhZ2Uo X21mbihwYWdlX3RvX21mbihwZykpKTsKPiArICAgICAgICBjbGVhcl9kb21haW5fcGFnZShwYWdl X3RvX21mbihwZykpOwo+ICAgICAgICAgICp0aGlzX2hzYSA9IHBhZ2VfdG9fbWFkZHIocGcpOwo+ ICAgICAgfQo+IAo+IEBAIC0xNTMxLDcgKzE1MzEsNyBAQCBzdGF0aWMgaW50IHN2bV9jcHVfdXBf cHJlcGFyZSh1bnNpZ25lZCBpbnQgY3B1KQo+ICAgICAgICAgIGlmICggIXBnICkKPiAgICAgICAg ICAgICAgZ290byBlcnI7Cj4gCj4gLSAgICAgICAgY2xlYXJfZG9tYWluX3BhZ2UoX21mbihwYWdl X3RvX21mbihwZykpKTsKPiArICAgICAgICBjbGVhcl9kb21haW5fcGFnZShwYWdlX3RvX21mbihw ZykpOwo+ICAgICAgICAgICp0aGlzX3ZtY2IgPSBwYWdlX3RvX21hZGRyKHBnKTsKPiAgICAgIH0K PiAKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi5jIGIveGVuL2FyY2gv eDg2L2h2bS92aXJpZGlhbi5jCj4gaW5kZXggZjBmYTU5ZDdkNS4uMDcwNTUxZTFhYiAxMDA2NDQK PiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuLmMKPiArKysgYi94ZW4vYXJjaC94ODYv aHZtL3ZpcmlkaWFuLmMKPiBAQCAtMzU0LDcgKzM1NCw3IEBAIHN0YXRpYyB2b2lkIGVuYWJsZV9o eXBlcmNhbGxfcGFnZShzdHJ1Y3QgZG9tYWluICpkKQo+ICAgICAgICAgIGlmICggcGFnZSApCj4g ICAgICAgICAgICAgIHB1dF9wYWdlKHBhZ2UpOwo+ICAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19X QVJOSU5HLCAiQmFkIEdNRk4gJSMiUFJJX2dmbiIgKE1GTgo+ICUjIlBSSV9tZm4iKVxuIiwKPiAt ICAgICAgICAgICAgICAgICBnbWZuLCBwYWdlID8gcGFnZV90b19tZm4ocGFnZSkgOiBtZm5feChJ TlZBTElEX01GTikpOwo+ICsgICAgICAgICAgICAgICAgIGdtZm4sIG1mbl94KHBhZ2UgPyBwYWdl X3RvX21mbihwYWdlKSA6IElOVkFMSURfTUZOKSk7Cj4gICAgICAgICAgcmV0dXJuOwo+ICAgICAg fQo+IAo+IEBAIC00MTQsNyArNDE0LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZV92cF9hc3Np c3Qoc3RydWN0IHZjcHUgKnYpCj4gCj4gICBmYWlsOgo+ICAgICAgZ2RwcmludGsoWEVOTE9HX1dB Uk5JTkcsICJCYWQgR01GTiAlIyJQUklfZ2ZuIiAoTUZOCj4gJSMiUFJJX21mbiIpXG4iLCBnbWZu LAo+IC0gICAgICAgICAgICAgcGFnZSA/IHBhZ2VfdG9fbWZuKHBhZ2UpIDogbWZuX3goSU5WQUxJ RF9NRk4pKTsKPiArICAgICAgICAgICAgIG1mbl94KHBhZ2UgPyBwYWdlX3RvX21mbihwYWdlKSA6 IElOVkFMSURfTUZOKSk7Cj4gIH0KPiAKPiAgc3RhdGljIHZvaWQgdGVhcmRvd25fdnBfYXNzaXN0 KHN0cnVjdCB2Y3B1ICp2KQo+IEBAIC00OTQsNyArNDk0LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRl X3JlZmVyZW5jZV90c2Moc3RydWN0IGRvbWFpbiAqZCwKPiBib29sX3QgaW5pdGlhbGl6ZSkKPiAg ICAgICAgICBpZiAoIHBhZ2UgKQo+ICAgICAgICAgICAgICBwdXRfcGFnZShwYWdlKTsKPiAgICAg ICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywgIkJhZCBHTUZOICUjIlBSSV9nZm4iIChNRk4K PiAlIyJQUklfbWZuIilcbiIsCj4gLSAgICAgICAgICAgICAgICAgZ21mbiwgcGFnZSA/IHBhZ2Vf dG9fbWZuKHBhZ2UpIDogbWZuX3goSU5WQUxJRF9NRk4pKTsKPiArICAgICAgICAgICAgICAgICBn bWZuLCBtZm5feChwYWdlID8gcGFnZV90b19tZm4ocGFnZSkgOiBJTlZBTElEX01GTikpOwo+ICAg ICAgICAgIHJldHVybjsKPiAgICAgIH0KPiAKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2 bS92bXgvdm1jcy5jIGIveGVuL2FyY2gveDg2L2h2bS92bXgvdm1jcy5jCj4gaW5kZXggYjUxMDBi NTAyMS4uOGVhYTU4ZTNjMCAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92bWNz LmMKPiArKysgYi94ZW4vYXJjaC94ODYvaHZtL3ZteC92bWNzLmMKPiBAQCAtMTQzNyw3ICsxNDM3 LDcgQEAgaW50IHZteF92Y3B1X2VuYWJsZV9wbWwoc3RydWN0IHZjcHUgKnYpCj4gCj4gICAgICB2 bXhfdm1jc19lbnRlcih2KTsKPiAKPiAtICAgIF9fdm13cml0ZShQTUxfQUREUkVTUywgcGFnZV90 b19tZm4odi0+YXJjaC5odm1fdm14LnBtbF9wZykgPDwKPiBQQUdFX1NISUZUKTsKPiArICAgIF9f dm13cml0ZShQTUxfQUREUkVTUywgcGFnZV90b19tYWRkcih2LT5hcmNoLmh2bV92bXgucG1sX3Bn KSk7Cj4gICAgICBfX3Ztd3JpdGUoR1VFU1RfUE1MX0lOREVYLCBOUl9QTUxfRU5UUklFUyAtIDEp Owo+IAo+ICAgICAgdi0+YXJjaC5odm1fdm14LnNlY29uZGFyeV9leGVjX2NvbnRyb2wgfD0KPiBT RUNPTkRBUllfRVhFQ19FTkFCTEVfUE1MOwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZt L3ZteC92bXguYyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jCj4gaW5kZXggYjE4Y2NlYWI1 NS4uYzY1N2JhODlmNSAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYwo+ ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jCj4gQEAgLTI5NzgsNyArMjk3OCw3IEBA IGdwX2ZhdWx0Ogo+ICBzdGF0aWMgaW50IHZteF9hbGxvY192bGFwaWNfbWFwcGluZyhzdHJ1Y3Qg ZG9tYWluICpkKQo+ICB7Cj4gICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwZzsKPiAtICAgIHVuc2ln bmVkIGxvbmcgbWZuOwo+ICsgICAgbWZuX3QgbWZuOwo+IAo+ICAgICAgaWYgKCAhY3B1X2hhc192 bXhfdmlydHVhbGl6ZV9hcGljX2FjY2Vzc2VzICkKPiAgICAgICAgICByZXR1cm4gMDsKPiBAQCAt Mjk4NywxMCArMjk4NywxMCBAQCBzdGF0aWMgaW50IHZteF9hbGxvY192bGFwaWNfbWFwcGluZyhz dHJ1Y3QKPiBkb21haW4gKmQpCj4gICAgICBpZiAoICFwZyApCj4gICAgICAgICAgcmV0dXJuIC1F Tk9NRU07Cj4gICAgICBtZm4gPSBwYWdlX3RvX21mbihwZyk7Cj4gLSAgICBjbGVhcl9kb21haW5f cGFnZShfbWZuKG1mbikpOwo+ICsgICAgY2xlYXJfZG9tYWluX3BhZ2UobWZuKTsKPiAgICAgIHNo YXJlX3hlbl9wYWdlX3dpdGhfZ3Vlc3QocGcsIGQsIFhFTlNIQVJFX3dyaXRhYmxlKTsKPiAtICAg IGQtPmFyY2guaHZtX2RvbWFpbi52bXguYXBpY19hY2Nlc3NfbWZuID0gbWZuOwo+IC0gICAgc2V0 X21taW9fcDJtX2VudHJ5KGQsIHBhZGRyX3RvX3BmbihBUElDX0RFRkFVTFRfUEhZU19CQVNFKSwK PiBfbWZuKG1mbiksCj4gKyAgICBkLT5hcmNoLmh2bV9kb21haW4udm14LmFwaWNfYWNjZXNzX21m biA9IG1mbl94KG1mbik7Cj4gKyAgICBzZXRfbW1pb19wMm1fZW50cnkoZCwgcGFkZHJfdG9fcGZu KEFQSUNfREVGQVVMVF9QSFlTX0JBU0UpLAo+IG1mbiwKPiAgICAgICAgICAgICAgICAgICAgICAg ICBQQUdFX09SREVSXzRLLCBwMm1fZ2V0X2hvc3RwMm0oZCktPmRlZmF1bHRfYWNjZXNzKTsKPiAK PiAgICAgIHJldHVybiAwOwo+IEBAIC0zMDAxLDcgKzMwMDEsNyBAQCBzdGF0aWMgdm9pZCB2bXhf ZnJlZV92bGFwaWNfbWFwcGluZyhzdHJ1Y3QKPiBkb21haW4gKmQpCj4gICAgICB1bnNpZ25lZCBs b25nIG1mbiA9IGQtPmFyY2guaHZtX2RvbWFpbi52bXguYXBpY19hY2Nlc3NfbWZuOwo+IAo+ICAg ICAgaWYgKCBtZm4gIT0gMCApCj4gLSAgICAgICAgZnJlZV9zaGFyZWRfZG9taGVhcF9wYWdlKG1m bl90b19wYWdlKG1mbikpOwo+ICsgICAgICAgIGZyZWVfc2hhcmVkX2RvbWhlYXBfcGFnZShtZm5f dG9fcGFnZShfbWZuKG1mbikpKTsKPiAgfQo+IAo+ICBzdGF0aWMgdm9pZCB2bXhfaW5zdGFsbF92 bGFwaWNfbWFwcGluZyhzdHJ1Y3QgdmNwdSAqdikKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L2h2bS92bXgvdnZteC5jCj4gYi94ZW4vYXJjaC94ODYvaHZtL3ZteC92dm14LmMKPiBpbmRleCBk ZGUwMmMwNzZiLi40ODM2ZDY5YzBlIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vdm14 L3Z2bXguYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3Z2bXguYwo+IEBAIC04NCw3ICs4 NCw3IEBAIGludCBudm14X3ZjcHVfaW5pdGlhbGlzZShzdHJ1Y3QgdmNwdSAqdikKPiAgICAgICAg ICB9Cj4gICAgICAgICAgdi0+YXJjaC5odm1fdm14LnZtcmVhZF9iaXRtYXAgPSB2bXJlYWRfYml0 bWFwOwo+IAo+IC0gICAgICAgIGNsZWFyX2RvbWFpbl9wYWdlKF9tZm4ocGFnZV90b19tZm4odm1y ZWFkX2JpdG1hcCkpKTsKPiArICAgICAgICBjbGVhcl9kb21haW5fcGFnZShwYWdlX3RvX21mbih2 bXJlYWRfYml0bWFwKSk7Cj4gCj4gICAgICAgICAgdm13cml0ZV9iaXRtYXAgPSBhbGxvY19kb21o ZWFwX3BhZ2UoTlVMTCwgMCk7Cj4gICAgICAgICAgaWYgKCAhdm13cml0ZV9iaXRtYXAgKQo+IEBA IC0xNzI5LDcgKzE3MjksNyBAQCBpbnQgbnZteF9oYW5kbGVfdm1wdHJsZChzdHJ1Y3QgY3B1X3Vz ZXJfcmVncwo+ICpyZWdzKQo+ICAgICAgICAgICAgICAgICAgbnZjcHUtPm52X3Z2bWN4ID0gdnZt Y3g7Cj4gICAgICAgICAgICAgICAgICBudmNwdS0+bnZfdnZtY3hhZGRyID0gZ3BhOwo+ICAgICAg ICAgICAgICAgICAgdi0+YXJjaC5odm1fdm14LnZtY3Nfc2hhZG93X21hZGRyID0KPiAtICAgICAg ICAgICAgICAgICAgICBwZm5fdG9fcGFkZHIoZG9tYWluX3BhZ2VfbWFwX3RvX21mbih2dm1jeCkp Owo+ICsgICAgICAgICAgICAgICAgICAgIG1mbl90b19tYWRkcihkb21haW5fcGFnZV9tYXBfdG9f bWZuKHZ2bWN4KSk7Cj4gICAgICAgICAgICAgIH0KPiAgICAgICAgICAgICAgZWxzZQo+ICAgICAg ICAgICAgICB7Cj4gQEAgLTE4MTUsNyArMTgxNSw3IEBAIGludCBudm14X2hhbmRsZV92bWNsZWFy KHN0cnVjdCBjcHVfdXNlcl9yZWdzCj4gKnJlZ3MpCj4gICAgICAgICAgewo+ICAgICAgICAgICAg ICBpZiAoIHdyaXRhYmxlICkKPiAgICAgICAgICAgICAgICAgIGNsZWFyX3Z2bWNzX2xhdW5jaGVk KCZudm14LT5sYXVuY2hlZF9saXN0LAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZG9tYWluX3BhZ2VfbWFwX3RvX21mbih2dm1jcykpOwo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbWZuX3goZG9tYWluX3BhZ2VfbWFwX3RvX21mbih2dm1jcykp KTsKPiAgICAgICAgICAgICAgZWxzZQo+ICAgICAgICAgICAgICAgICAgcmMgPSBWTUZBSUxfVkFM SUQ7Cj4gICAgICAgICAgICAgIGh2bV91bm1hcF9ndWVzdF9mcmFtZSh2dm1jcywgMCk7Cj4gZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS5jIGIveGVuL2FyY2gveDg2L21tLmMKPiBpbmRleCBh MjBmZGNhZWE0Li5mNmNhNGY4ODRiIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS5jCj4g KysrIGIveGVuL2FyY2gveDg2L21tLmMKPiBAQCAtMTI4LDEyICsxMjgsNiBAQAo+IAo+ICAjaW5j bHVkZSAicHYvbW0uaCIKPiAKPiAtLyogT3ZlcnJpZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0 byBtYWtlIHRoZW0gd29yayB3aXRoIG1mbl90ICovCj4gLSN1bmRlZiBtZm5fdG9fcGFnZQo+IC0j ZGVmaW5lIG1mbl90b19wYWdlKG1mbikgX19tZm5fdG9fcGFnZShtZm5feChtZm4pKQo+IC0jdW5k ZWYgcGFnZV90b19tZm4KPiAtI2RlZmluZSBwYWdlX3RvX21mbihwZykgX21mbihfX3BhZ2VfdG9f bWZuKHBnKSkKPiAtCj4gIC8qIE1hcHBpbmcgb2YgdGhlIGZpeG1hcCBzcGFjZSBuZWVkZWQgZWFy bHkuICovCj4gIGwxX3BnZW50cnlfdCBfX3NlY3Rpb24oIi5ic3MucGFnZV9hbGlnbmVkIikgX19h bGlnbmVkKFBBR0VfU0laRSkKPiAgICAgIGwxX2ZpeG1hcFtMMV9QQUdFVEFCTEVfRU5UUklFU107 Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9ndWVzdF93YWxrLmMKPiBiL3hlbi9hcmNo L3g4Ni9tbS9ndWVzdF93YWxrLmMKPiBpbmRleCA2MDU1ZmVjMWFkLi5mNjdhZWRhM2QwIDEwMDY0 NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9ndWVzdF93YWxrLmMKPiArKysgYi94ZW4vYXJjaC94 ODYvbW0vZ3Vlc3Rfd2Fsay5jCj4gQEAgLTQ2OSwyMCArNDY5LDIwIEBAIGd1ZXN0X3dhbGtfdGFi bGVzKHN0cnVjdCB2Y3B1ICp2LCBzdHJ1Y3QKPiBwMm1fZG9tYWluICpwMm0sCj4gICAgICBpZiAo IGwzcCApCj4gICAgICB7Cj4gICAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2UobDNwKTsKPiAtICAg ICAgICBwdXRfcGFnZShtZm5fdG9fcGFnZShtZm5feChndy0+bDNtZm4pKSk7Cj4gKyAgICAgICAg cHV0X3BhZ2UobWZuX3RvX3BhZ2UoZ3ctPmwzbWZuKSk7Cj4gICAgICB9Cj4gICNlbmRpZgo+ICAj aWYgR1VFU1RfUEFHSU5HX0xFVkVMUyA+PSAzCj4gICAgICBpZiAoIGwycCApCj4gICAgICB7Cj4g ICAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2UobDJwKTsKPiAtICAgICAgICBwdXRfcGFnZShtZm5f dG9fcGFnZShtZm5feChndy0+bDJtZm4pKSk7Cj4gKyAgICAgICAgcHV0X3BhZ2UobWZuX3RvX3Bh Z2UoZ3ctPmwybWZuKSk7Cj4gICAgICB9Cj4gICNlbmRpZgo+ICAgICAgaWYgKCBsMXAgKQo+ICAg ICAgewo+ICAgICAgICAgIHVubWFwX2RvbWFpbl9wYWdlKGwxcCk7Cj4gLSAgICAgICAgcHV0X3Bh Z2UobWZuX3RvX3BhZ2UobWZuX3goZ3ctPmwxbWZuKSkpOwo+ICsgICAgICAgIHB1dF9wYWdlKG1m bl90b19wYWdlKGd3LT5sMW1mbikpOwo+ICAgICAgfQo+IAo+ICAgICAgcmV0dXJuIHdhbGtfb2s7 Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9oYXAvZ3Vlc3Rfd2Fsay5jCj4gYi94ZW4v YXJjaC94ODYvbW0vaGFwL2d1ZXN0X3dhbGsuYwo+IGluZGV4IGM1NTAwMTdiYTQuLmNiM2Y5Y2Vi ZTcgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L21tL2hhcC9ndWVzdF93YWxrLmMKPiArKysg Yi94ZW4vYXJjaC94ODYvbW0vaGFwL2d1ZXN0X3dhbGsuYwo+IEBAIC04Myw3ICs4Myw3IEBAIHVu c2lnbmVkIGxvbmcKPiBoYXBfcDJtX2dhX3RvX2dmbihHVUVTVF9QQUdJTkdfTEVWRUxTKSgKPiAg ICAgICAgICAqcGZlYyAmPSB+UEZFQ19wYWdlX3ByZXNlbnQ7Cj4gICAgICAgICAgZ290byBvdXRf dHdlYWtfcGZlYzsKPiAgICAgIH0KPiAtICAgIHRvcF9tZm4gPSBfbWZuKHBhZ2VfdG9fbWZuKHRv cF9wYWdlKSk7Cj4gKyAgICB0b3BfbWZuID0gcGFnZV90b19tZm4odG9wX3BhZ2UpOwo+IAo+ICAg ICAgLyogTWFwIHRoZSB0b3AtbGV2ZWwgdGFibGUgYW5kIGNhbGwgdGhlIHRyZWUtd2Fsa2VyICov Cj4gICAgICBBU1NFUlQobWZuX3ZhbGlkKHRvcF9tZm4pKTsKPiBkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L21tL2hhcC9oYXAuYyBiL3hlbi9hcmNoL3g4Ni9tbS9oYXAvaGFwLmMKPiBpbmRleCA0 MWRlYjkwNzg3Li45N2YyNTE2ZWNkIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9oYXAv aGFwLmMKPiArKysgYi94ZW4vYXJjaC94ODYvbW0vaGFwL2hhcC5jCj4gQEAgLTQyLDEyICs0Miw2 IEBACj4gCj4gICNpbmNsdWRlICJwcml2YXRlLmgiCj4gCj4gLS8qIE92ZXJyaWRlIG1hY3JvcyBm cm9tIGFzbS9wYWdlLmggdG8gbWFrZSB0aGVtIHdvcmsgd2l0aCBtZm5fdCAqLwo+IC0jdW5kZWYg bWZuX3RvX3BhZ2UKPiAtI2RlZmluZSBtZm5fdG9fcGFnZShfbSkgX19tZm5fdG9fcGFnZShtZm5f eChfbSkpCj4gLSN1bmRlZiBwYWdlX3RvX21mbgo+IC0jZGVmaW5lIHBhZ2VfdG9fbWZuKF9wZykg X21mbihfX3BhZ2VfdG9fbWZuKF9wZykpCj4gLQo+ICAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLwo+ICAvKiAgICAgICAgICBIQVAgVlJBTSBUUkFDS0lO RyBTVVBQT1JUICAgICAgICAgICAqLwo+ICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vaGFwL25l c3RlZF9lcHQuYwo+IGIveGVuL2FyY2gveDg2L21tL2hhcC9uZXN0ZWRfZXB0LmMKPiBpbmRleCAx NGIxYmIwMWU5Li4xNzM4ZGY2OWY2IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9oYXAv bmVzdGVkX2VwdC5jCj4gKysrIGIveGVuL2FyY2gveDg2L21tL2hhcC9uZXN0ZWRfZXB0LmMKPiBA QCAtMTczLDcgKzE3Myw3IEBAIG5lcHRfd2Fsa190YWJsZXMoc3RydWN0IHZjcHUgKnYsIHVuc2ln bmVkIGxvbmcgbDJnYSwKPiBlcHRfd2Fsa190ICpndykKPiAgICAgICAgICAgICAgZ290byBtYXBf ZXJyOwo+ICAgICAgICAgIGd3LT5seGVbbHZsXSA9IGx4cFtlcHRfbHZsX3RhYmxlX29mZnNldChs MmdhLCBsdmwpXTsKPiAgICAgICAgICB1bm1hcF9kb21haW5fcGFnZShseHApOwo+IC0gICAgICAg IHB1dF9wYWdlKG1mbl90b19wYWdlKG1mbl94KGx4bWZuKSkpOwo+ICsgICAgICAgIHB1dF9wYWdl KG1mbl90b19wYWdlKGx4bWZuKSk7Cj4gCj4gICAgICAgICAgaWYgKCBuZXB0X25vbl9wcmVzZW50 X2NoZWNrKGd3LT5seGVbbHZsXSkgKQo+ICAgICAgICAgICAgICBnb3RvIG5vbl9wcmVzZW50Owo+ IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vbWVtX3NoYXJpbmcuYwo+IGIveGVuL2FyY2gv eDg2L21tL21lbV9zaGFyaW5nLmMKPiBpbmRleCA2ZjRiZTk1NTE1Li42ZWNmMGIyN2Q1IDEwMDY0 NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9tZW1fc2hhcmluZy5jCj4gKysrIGIveGVuL2FyY2gv eDg2L21tL21lbV9zaGFyaW5nLmMKPiBAQCAtMTUyLDExICsxNTIsNiBAQCBzdGF0aWMgaW5saW5l IHNocl9oYW5kbGVfdCBnZXRfbmV4dF9oYW5kbGUodm9pZCkKPiAgI2RlZmluZSBtZW1fc2hhcmlu Z19lbmFibGVkKGQpIFwKPiAgICAgIChpc19odm1fZG9tYWluKGQpICYmIChkKS0+YXJjaC5odm1f ZG9tYWluLm1lbV9zaGFyaW5nX2VuYWJsZWQpCj4gCj4gLSN1bmRlZiBtZm5fdG9fcGFnZQo+IC0j ZGVmaW5lIG1mbl90b19wYWdlKF9tKSBfX21mbl90b19wYWdlKG1mbl94KF9tKSkKPiAtI3VuZGVm IHBhZ2VfdG9fbWZuCj4gLSNkZWZpbmUgcGFnZV90b19tZm4oX3BnKSBfbWZuKF9fcGFnZV90b19t Zm4oX3BnKSkKPiAtCj4gIHN0YXRpYyBhdG9taWNfdCBucl9zYXZlZF9tZm5zICAgPSBBVE9NSUNf SU5JVCgwKTsKPiAgc3RhdGljIGF0b21pY190IG5yX3NoYXJlZF9tZm5zICA9IEFUT01JQ19JTklU KDApOwo+IAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jIGIveGVuL2Fy Y2gveDg2L21tL3AybS1lcHQuYwo+IGluZGV4IGI0OTk2Y2U2NTguLjg4ODU5MTZjMGEgMTAwNjQ0 Cj4gLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS1lcHQuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9t bS9wMm0tZXB0LmMKPiBAQCAtMzMsNiArMzMsMTAgQEAKPiAKPiAgI2luY2x1ZGUgIm1tLWxvY2tz LmgiCj4gCj4gKy8qIE92ZXJyaWRlIG1hY3JvcyBmcm9tIGFzbS9wYWdlLmggdG8gYXZvaWQgdXNp bmcgdHlwZXNhZmUgbWZuX3QuICovCj4gKyN1bmRlZiBtZm5fdG9fcGFnZQo+ICsjZGVmaW5lIG1m bl90b19wYWdlKG1mbikgX19tZm5fdG9fcGFnZShfbWZuKG1mbikpCj4gKwo+ICAjZGVmaW5lIGF0 b21pY19yZWFkX2VwdF9lbnRyeShfX3BlcHRlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKPiAgICAgICggKGVwdF9lbnRyeV90KSB7IC5lcHRlID0gcmVhZF9hdG9taWMoJihfX3BlcHRl KS0+ZXB0ZSkgfSApCj4gCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcG9kLmMg Yi94ZW4vYXJjaC94ODYvbW0vcDJtLXBvZC5jCj4gaW5kZXggMGE4MTFjY2YyOC4uN2E4ODA3NGMz MSAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLXBvZC5jCj4gKysrIGIveGVuL2Fy Y2gveDg2L21tL3AybS1wb2QuYwo+IEBAIC0yOSwxMiArMjksNiBAQAo+IAo+ICAjaW5jbHVkZSAi bW0tbG9ja3MuaCIKPiAKPiAtLyogT3ZlcnJpZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0byBt YWtlIHRoZW0gd29yayB3aXRoIG1mbl90ICovCj4gLSN1bmRlZiBtZm5fdG9fcGFnZQo+IC0jZGVm aW5lIG1mbl90b19wYWdlKF9tKSBfX21mbl90b19wYWdlKG1mbl94KF9tKSkKPiAtI3VuZGVmIHBh Z2VfdG9fbWZuCj4gLSNkZWZpbmUgcGFnZV90b19tZm4oX3BnKSBfbWZuKF9fcGFnZV90b19tZm4o X3BnKSkKPiAtCj4gICNkZWZpbmUgc3VwZXJwYWdlX2FsaWduZWQoX3gpICAoKChfeCkmKFNVUEVS UEFHRV9QQUdFUy0xKSk9PTApCj4gCj4gIC8qIEVuZm9yY2UgbG9jayBvcmRlcmluZyB3aGVuIGdy YWJiaW5nIHRoZSAiZXh0ZXJuYWwiIHBhZ2VfYWxsb2MgbG9jayAqLwo+IGRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvbW0vcDJtLmMgYi94ZW4vYXJjaC94ODYvbW0vcDJtLmMKPiBpbmRleCBjNzJh M2NkZWJiLi5iNzFmNTFlMGIyIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwo+ ICsrKyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwo+IEBAIC00NywxMiArNDcsNiBAQCBib29sX3Qg X19pbml0ZGF0YSBvcHRfaGFwXzFnYiA9IDEsIF9faW5pdGRhdGEKPiBvcHRfaGFwXzJtYiA9IDE7 Cj4gIGJvb2xlYW5fcGFyYW0oImhhcF8xZ2IiLCBvcHRfaGFwXzFnYik7Cj4gIGJvb2xlYW5fcGFy YW0oImhhcF8ybWIiLCBvcHRfaGFwXzJtYik7Cj4gCj4gLS8qIE92ZXJyaWRlIG1hY3JvcyBmcm9t IGFzbS9wYWdlLmggdG8gbWFrZSB0aGVtIHdvcmsgd2l0aCBtZm5fdCAqLwo+IC0jdW5kZWYgbWZu X3RvX3BhZ2UKPiAtI2RlZmluZSBtZm5fdG9fcGFnZShfbSkgX19tZm5fdG9fcGFnZShtZm5feChf bSkpCj4gLSN1bmRlZiBwYWdlX3RvX21mbgo+IC0jZGVmaW5lIHBhZ2VfdG9fbWZuKF9wZykgX21m bihfX3BhZ2VfdG9fbWZuKF9wZykpCj4gLQo+ICBERUZJTkVfUEVSQ1BVX1JXTE9DS19HTE9CQUwo cDJtX3BlcmNwdV9yd2xvY2spOwo+IAo+ICAvKiBJbml0IHRoZSBkYXRhc3RydWN0dXJlcyBmb3Ig bGF0ZXIgdXNlIGJ5IHRoZSBwMm0gY29kZSAqLwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYv bW0vcGFnaW5nLmMgYi94ZW4vYXJjaC94ODYvbW0vcGFnaW5nLmMKPiBpbmRleCAxZTJjOWJhNGNj Li5jYjk3NjQyY2JjIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wYWdpbmcuYwo+ICsr KyBiL3hlbi9hcmNoL3g4Ni9tbS9wYWdpbmcuYwo+IEBAIC00NywxMiArNDcsNiBAQAo+ICAvKiBQ ZXItQ1BVIHZhcmlhYmxlIGZvciBlbmZvcmNpbmcgdGhlIGxvY2sgb3JkZXJpbmcgKi8KPiAgREVG SU5FX1BFUl9DUFUoaW50LCBtbV9sb2NrX2xldmVsKTsKPiAKPiAtLyogT3ZlcnJpZGUgbWFjcm9z IGZyb20gYXNtL3BhZ2UuaCB0byBtYWtlIHRoZW0gd29yayB3aXRoIG1mbl90ICovCj4gLSN1bmRl ZiBtZm5fdG9fcGFnZQo+IC0jZGVmaW5lIG1mbl90b19wYWdlKF9tKSBfX21mbl90b19wYWdlKG1m bl94KF9tKSkKPiAtI3VuZGVmIHBhZ2VfdG9fbWZuCj4gLSNkZWZpbmUgcGFnZV90b19tZm4oX3Bn KSBfbWZuKF9fcGFnZV90b19tZm4oX3BnKSkKPiAtCj4gIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCj4gIC8qICAgICAgICAgICAgICBMT0cgRElSVFkg U1VQUE9SVCAgICAgICAgICAgICAgICovCj4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFk b3cvcHJpdmF0ZS5oCj4gYi94ZW4vYXJjaC94ODYvbW0vc2hhZG93L3ByaXZhdGUuaAo+IGluZGV4 IDZhMDMzNzA0MDIuLmI5Y2M2ODBmNGUgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L21tL3No YWRvdy9wcml2YXRlLmgKPiArKysgYi94ZW4vYXJjaC94ODYvbW0vc2hhZG93L3ByaXZhdGUuaAo+ IEBAIC0zMTUsNyArMzE1LDcgQEAgc3RhdGljIGlubGluZSBpbnQgcGFnZV9pc19vdXRfb2Zfc3lu YyhzdHJ1Y3QgcGFnZV9pbmZvCj4gKnApCj4gCj4gIHN0YXRpYyBpbmxpbmUgaW50IG1mbl9pc19v dXRfb2Zfc3luYyhtZm5fdCBnbWZuKQo+ICB7Cj4gLSAgICByZXR1cm4gcGFnZV9pc19vdXRfb2Zf c3luYyhtZm5fdG9fcGFnZShtZm5feChnbWZuKSkpOwo+ICsgICAgcmV0dXJuIHBhZ2VfaXNfb3V0 X29mX3N5bmMobWZuX3RvX3BhZ2UoZ21mbikpOwo+ICB9Cj4gCj4gIHN0YXRpYyBpbmxpbmUgaW50 IHBhZ2Vfb29zX21heV93cml0ZShzdHJ1Y3QgcGFnZV9pbmZvICpwKQo+IEBAIC0zMjYsNyArMzI2 LDcgQEAgc3RhdGljIGlubGluZSBpbnQgcGFnZV9vb3NfbWF5X3dyaXRlKHN0cnVjdCBwYWdlX2lu Zm8KPiAqcCkKPiAKPiAgc3RhdGljIGlubGluZSBpbnQgbWZuX29vc19tYXlfd3JpdGUobWZuX3Qg Z21mbikKPiAgewo+IC0gICAgcmV0dXJuIHBhZ2Vfb29zX21heV93cml0ZShtZm5fdG9fcGFnZSht Zm5feChnbWZuKSkpOwo+ICsgICAgcmV0dXJuIHBhZ2Vfb29zX21heV93cml0ZShtZm5fdG9fcGFn ZShnbWZuKSk7Cj4gIH0KPiAgI2VuZGlmIC8qIChTSEFET1dfT1BUSU1JWkFUSU9OUyAmIFNIT1BU X09VVF9PRl9TWU5DKSAqLwo+IAo+IEBAIC00NjUsMTggKzQ2NSw2IEBAIHZvaWQgc2hfcmVzZXRf bDNfdXBfcG9pbnRlcnMoc3RydWN0IHZjcHUgKnYpOwo+ICAgKiBNRk4vcGFnZS1pbmZvIGhhbmRs aW5nCj4gICAqLwo+IAo+IC0vKiBPdmVycmlkZSBtYWNyb3MgZnJvbSBhc20vcGFnZS5oIHRvIG1h a2UgdGhlbSB3b3JrIHdpdGggbWZuX3QgKi8KPiAtI3VuZGVmIG1mbl90b19wYWdlCj4gLSNkZWZp bmUgbWZuX3RvX3BhZ2UoX20pIF9fbWZuX3RvX3BhZ2UobWZuX3goX20pKQo+IC0jdW5kZWYgcGFn ZV90b19tZm4KPiAtI2RlZmluZSBwYWdlX3RvX21mbihfcGcpIF9tZm4oX19wYWdlX3RvX21mbihf cGcpKQo+IC0KPiAtLyogT3ZlcnJpZGUgcGFnZXRhYmxlX3QgPC0+IHN0cnVjdCBwYWdlX2luZm8g Y29udmVyc2lvbnMgdG8gd29yayB3aXRoCj4gbWZuX3QgKi8KPiAtI3VuZGVmIHBhZ2V0YWJsZV9n ZXRfcGFnZQo+IC0jZGVmaW5lIHBhZ2V0YWJsZV9nZXRfcGFnZSh4KSAgIG1mbl90b19wYWdlKHBh Z2V0YWJsZV9nZXRfbWZuKHgpKQo+IC0jdW5kZWYgcGFnZXRhYmxlX2Zyb21fcGFnZQo+IC0jZGVm aW5lIHBhZ2V0YWJsZV9mcm9tX3BhZ2UocGcpCj4gcGFnZXRhYmxlX2Zyb21fbWZuKHBhZ2VfdG9f bWZuKHBnKSkKPiAtCj4gICNkZWZpbmUgYmFja3BvaW50ZXIoc3ApIF9tZm4ocGR4X3RvX3Bmbigo dW5zaWduZWQgbG9uZykoc3ApLT52LnNoLmJhY2spKQo+ICBzdGF0aWMgaW5saW5lIHVuc2lnbmVk IGxvbmcgX19iYWNrcG9pbnRlcihjb25zdCBzdHJ1Y3QgcGFnZV9pbmZvICpzcCkKPiAgewo+IGRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbnVtYS5jIGIveGVuL2FyY2gveDg2L251bWEuYwo+IGlu ZGV4IDRmYzk2N2Y4OTMuLmE4Nzk4N2RhNmYgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L251 bWEuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9udW1hLmMKPiBAQCAtNDMwLDcgKzQzMCw3IEBAIHN0 YXRpYyB2b2lkIGR1bXBfbnVtYSh1bnNpZ25lZCBjaGFyIGtleSkKPiAgICAgICAgICBzcGluX2xv Y2soJmQtPnBhZ2VfYWxsb2NfbG9jayk7Cj4gICAgICAgICAgcGFnZV9saXN0X2Zvcl9lYWNoKHBh Z2UsICZkLT5wYWdlX2xpc3QpCj4gICAgICAgICAgewo+IC0gICAgICAgICAgICBpID0gcGh5c190 b19uaWQoKHBhZGRyX3QpcGFnZV90b19tZm4ocGFnZSkgPDwgUEFHRV9TSElGVCk7Cj4gKyAgICAg ICAgICAgIGkgPSBwaHlzX3RvX25pZChwYWdlX3RvX21hZGRyKHBhZ2UpKTsKPiAgICAgICAgICAg ICAgcGFnZV9udW1fbm9kZVtpXSsrOwo+ICAgICAgICAgIH0KPiAgICAgICAgICBzcGluX3VubG9j aygmZC0+cGFnZV9hbGxvY19sb2NrKTsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3BoeXNk ZXYuYyBiL3hlbi9hcmNoL3g4Ni9waHlzZGV2LmMKPiBpbmRleCBhNWZlZGNhNjcxLi41NDIyZjNl MzcyIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9waHlzZGV2LmMKPiArKysgYi94ZW4vYXJj aC94ODYvcGh5c2Rldi5jCj4gQEAgLTI0Miw3ICsyNDIsNyBAQCByZXRfdCBkb19waHlzZGV2X29w KGludCBjbWQsCj4gWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpCj4gICAgICAgICAg fQo+IAo+ICAgICAgICAgIGlmICggY21weGNoZygmY3VycmQtPmFyY2gucGlycV9lb2lfbWFwX21m biwKPiAtICAgICAgICAgICAgICAgICAgICAgMCwgcGFnZV90b19tZm4ocGFnZSkpICE9IDAgKQo+ ICsgICAgICAgICAgICAgICAgICAgICAwLCBtZm5feChwYWdlX3RvX21mbihwYWdlKSkpICE9IDAg KQo+ICAgICAgICAgIHsKPiAgICAgICAgICAgICAgcHV0X3BhZ2VfYW5kX3R5cGUocGFnZSk7Cj4g ICAgICAgICAgICAgIHJldCA9IC1FQlVTWTsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3B2 L2NhbGxiYWNrLmMgYi94ZW4vYXJjaC94ODYvcHYvY2FsbGJhY2suYwo+IGluZGV4IDk3ZDg0Mzg2 MDAuLjU5NTdjYjUwODUgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L3B2L2NhbGxiYWNrLmMK PiArKysgYi94ZW4vYXJjaC94ODYvcHYvY2FsbGJhY2suYwo+IEBAIC0zMSwxMiArMzEsNiBAQAo+ IAo+ICAjaW5jbHVkZSA8cHVibGljL2NhbGxiYWNrLmg+Cj4gCj4gLS8qIE92ZXJyaWRlIG1hY3Jv cyBmcm9tIGFzbS9wYWdlLmggdG8gbWFrZSB0aGVtIHdvcmsgd2l0aCBtZm5fdCAqLwo+IC0jdW5k ZWYgbWZuX3RvX3BhZ2UKPiAtI2RlZmluZSBtZm5fdG9fcGFnZShtZm4pIF9fbWZuX3RvX3BhZ2Uo bWZuX3gobWZuKSkKPiAtI3VuZGVmIHBhZ2VfdG9fbWZuCj4gLSNkZWZpbmUgcGFnZV90b19tZm4o cGcpIF9tZm4oX19wYWdlX3RvX21mbihwZykpCj4gLQo+ICBzdGF0aWMgaW50IHJlZ2lzdGVyX2d1 ZXN0X25taV9jYWxsYmFjayh1bnNpZ25lZCBsb25nIGFkZHJlc3MpCj4gIHsKPiAgICAgIHN0cnVj dCB2Y3B1ICpjdXJyID0gY3VycmVudDsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3B2L2Rl c2NyaXB0b3ItdGFibGVzLmMKPiBiL3hlbi9hcmNoL3g4Ni9wdi9kZXNjcmlwdG9yLXRhYmxlcy5j Cj4gaW5kZXggODE5NzNhZjEyNC4uZjJiMjBmOTkxMCAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94 ODYvcHYvZGVzY3JpcHRvci10YWJsZXMuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9wdi9kZXNjcmlw dG9yLXRhYmxlcy5jCj4gQEAgLTI1LDE2ICsyNSw2IEBACj4gICNpbmNsdWRlIDxhc20vcDJtLmg+ Cj4gICNpbmNsdWRlIDxhc20vcHYvbW0uaD4KPiAKPiAtLyogT3ZlcnJpZGUgbWFjcm9zIGZyb20g YXNtL3BhZ2UuaCB0byBtYWtlIHRoZW0gd29yayB3aXRoIG1mbl90ICovCj4gLSN1bmRlZiBtZm5f dG9fcGFnZQo+IC0jZGVmaW5lIG1mbl90b19wYWdlKG1mbikgX19tZm5fdG9fcGFnZShtZm5feCht Zm4pKQo+IC0jdW5kZWYgcGFnZV90b19tZm4KPiAtI2RlZmluZSBwYWdlX3RvX21mbihwZykgX21m bihfX3BhZ2VfdG9fbWZuKHBnKSkKPiAtCj4gLS8qKioqKioqKioqKioqKioqKioqCj4gLSAqIERl c2NyaXB0b3IgVGFibGVzCj4gLSAqLwo+IC0KPiAgdm9pZCBwdl9kZXN0cm95X2dkdChzdHJ1Y3Qg dmNwdSAqdikKPiAgewo+ICAgICAgbDFfcGdlbnRyeV90ICpwbDFlOwo+IGRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvcHYvZG9tMF9idWlsZC5jIGIveGVuL2FyY2gveDg2L3B2L2RvbTBfYnVpbGQu Ywo+IGluZGV4IDQ0NjAxZDA4ZDMuLjFhYzg0M2U2MDMgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gv eDg2L3B2L2RvbTBfYnVpbGQuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9wdi9kb20wX2J1aWxkLmMK PiBAQCAtMjAsNiArMjAsMTIgQEAKPiAgI2luY2x1ZGUgPGFzbS9wYWdlLmg+Cj4gICNpbmNsdWRl IDxhc20vc2V0dXAuaD4KPiAKPiArLyogT3ZlcnJpZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0 byBhdm9pZCB1c2luZyB0eXBlc2FmZSBtZm5fdC4gKi8KPiArI3VuZGVmIHBhZ2VfdG9fbWZuCj4g KyNkZWZpbmUgcGFnZV90b19tZm4ocGcpIG1mbl94KF9fcGFnZV90b19tZm4ocGcpKQo+ICsjdW5k ZWYgbWZuX3RvX3BhZ2UKPiArI2RlZmluZSBtZm5fdG9fcGFnZShtZm4pIF9fbWZuX3RvX3BhZ2Uo X21mbihtZm4pKQo+ICsKPiAgLyogQWxsb3cgcmluZy0zIGFjY2VzcyBpbiBsb25nIG1vZGUgYXMg Z3Vlc3QgY2Fubm90IHVzZSByaW5nIDEgLi4uICovCj4gICNkZWZpbmUgQkFTRV9QUk9UCj4gKF9Q QUdFX1BSRVNFTlR8X1BBR0VfUld8X1BBR0VfQUNDRVNTRUR8X1BBR0VfVVNFUikKPiAgI2RlZmlu ZSBMMV9QUk9UIChCQVNFX1BST1R8X1BBR0VfR1VFU1RfS0VSTkVMKQo+IGRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvcHYvZG9tYWluLmMgYi94ZW4vYXJjaC94ODYvcHYvZG9tYWluLmMKPiBpbmRl eCAyMjM0MTI4YmIzLi45M2Y4ZmE0MzIzIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9wdi9k b21haW4uYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9wdi9kb21haW4uYwo+IEBAIC0xMSwxMiArMTEs NiBAQAo+IAo+ICAjaW5jbHVkZSA8YXNtL3B2L2RvbWFpbi5oPgo+IAo+IC0vKiBPdmVycmlkZSBt YWNyb3MgZnJvbSBhc20vcGFnZS5oIHRvIG1ha2UgdGhlbSB3b3JrIHdpdGggbWZuX3QgKi8KPiAt I3VuZGVmIG1mbl90b19wYWdlCj4gLSNkZWZpbmUgbWZuX3RvX3BhZ2UobWZuKSBfX21mbl90b19w YWdlKG1mbl94KG1mbikpCj4gLSN1bmRlZiBwYWdlX3RvX21mbgo+IC0jZGVmaW5lIHBhZ2VfdG9f bWZuKHBnKSBfbWZuKF9fcGFnZV90b19tZm4ocGcpKQo+IC0KPiAgc3RhdGljIHZvaWQgbm9yZXR1 cm4gY29udGludWVfbm9uaWRsZV9kb21haW4oc3RydWN0IHZjcHUgKnYpCj4gIHsKPiAgICAgIGNo ZWNrX3dha2V1cF9mcm9tX3dhaXQoKTsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3B2L2Vt dWwtZ2F0ZS1vcC5jIGIveGVuL2FyY2gveDg2L3B2L2VtdWwtZ2F0ZS0KPiBvcC5jCj4gaW5kZXgg MGY4OWM5MWRmZi4uNWNkYjU0YzkzNyAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvcHYvZW11 bC1nYXRlLW9wLmMKPiArKysgYi94ZW4vYXJjaC94ODYvcHYvZW11bC1nYXRlLW9wLmMKPiBAQCAt NDEsMTIgKzQxLDYgQEAKPiAKPiAgI2luY2x1ZGUgImVtdWxhdGUuaCIKPiAKPiAtLyogT3ZlcnJp ZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0byBtYWtlIHRoZW0gd29yayB3aXRoIG1mbl90ICov Cj4gLSN1bmRlZiBtZm5fdG9fcGFnZQo+IC0jZGVmaW5lIG1mbl90b19wYWdlKG1mbikgX19tZm5f dG9fcGFnZShtZm5feChtZm4pKQo+IC0jdW5kZWYgcGFnZV90b19tZm4KPiAtI2RlZmluZSBwYWdl X3RvX21mbihwZykgX21mbihfX3BhZ2VfdG9fbWZuKHBnKSkKPiAtCj4gIHN0YXRpYyBpbnQgcmVh ZF9nYXRlX2Rlc2NyaXB0b3IodW5zaWduZWQgaW50IGdhdGVfc2VsLAo+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB2Y3B1ICp2LAo+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqc2VsLAo+IGRpZmYgLS1naXQgYS94ZW4v YXJjaC94ODYvcHYvZW11bC1wcml2LW9wLmMgYi94ZW4vYXJjaC94ODYvcHYvZW11bC1wcml2LQo+ IG9wLmMKPiBpbmRleCAyZjkyNjQ1NDhhLi42ZWJhZjJmMWUzIDEwMDY0NAo+IC0tLSBhL3hlbi9h cmNoL3g4Ni9wdi9lbXVsLXByaXYtb3AuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9wdi9lbXVsLXBy aXYtb3AuYwo+IEBAIC00MywxNiArNDMsNiBAQAo+ICAjaW5jbHVkZSAiZW11bGF0ZS5oIgo+ICAj aW5jbHVkZSAibW0uaCIKPiAKPiAtLyogT3ZlcnJpZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0 byBtYWtlIHRoZW0gd29yayB3aXRoIG1mbl90ICovCj4gLSN1bmRlZiBtZm5fdG9fcGFnZQo+IC0j ZGVmaW5lIG1mbl90b19wYWdlKG1mbikgX19tZm5fdG9fcGFnZShtZm5feChtZm4pKQo+IC0jdW5k ZWYgcGFnZV90b19tZm4KPiAtI2RlZmluZSBwYWdlX3RvX21mbihwZykgX21mbihfX3BhZ2VfdG9f bWZuKHBnKSkKPiAtCj4gLS8qKioqKioqKioqKioqKioqKioqKioqKgo+IC0gKiBJL08gZW11bGF0 aW9uIHN1cHBvcnQKPiAtICovCj4gLQo+ICBzdHJ1Y3QgcHJpdl9vcF9jdHh0IHsKPiAgICAgIHN0 cnVjdCB4ODZfZW11bGF0ZV9jdHh0IGN0eHQ7Cj4gICAgICBzdHJ1Y3Qgewo+IGRpZmYgLS1naXQg YS94ZW4vYXJjaC94ODYvcHYvZ3JhbnRfdGFibGUuYyBiL3hlbi9hcmNoL3g4Ni9wdi9ncmFudF90 YWJsZS5jCj4gaW5kZXggYWFjYTIyOGM2Yi4uOTczMjMzNjdjNSAxMDA2NDQKPiAtLS0gYS94ZW4v YXJjaC94ODYvcHYvZ3JhbnRfdGFibGUuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9wdi9ncmFudF90 YWJsZS5jCj4gQEAgLTI3LDEyICsyNyw2IEBACj4gCj4gICNpbmNsdWRlICJtbS5oIgo+IAo+IC0v KiBPdmVycmlkZSBtYWNyb3MgZnJvbSBhc20vcGFnZS5oIHRvIG1ha2UgdGhlbSB3b3JrIHdpdGgg bWZuX3QgKi8KPiAtI3VuZGVmIG1mbl90b19wYWdlCj4gLSNkZWZpbmUgbWZuX3RvX3BhZ2UobWZu KSBfX21mbl90b19wYWdlKG1mbl94KG1mbikpCj4gLSN1bmRlZiBwYWdlX3RvX21mbgo+IC0jZGVm aW5lIHBhZ2VfdG9fbWZuKHBnKSBfbWZuKF9fcGFnZV90b19tZm4ocGcpKQo+IC0KPiAgc3RhdGlj IHVuc2lnbmVkIGludCBncmFudF90b19wdGVfZmxhZ3ModW5zaWduZWQgaW50IGdyYW50X2ZsYWdz LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg Y2FjaGVfZmxhZ3MpCj4gIHsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3B2L3JvLXBhZ2Ut ZmF1bHQuYyBiL3hlbi9hcmNoL3g4Ni9wdi9yby1wYWdlLQo+IGZhdWx0LmMKPiBpbmRleCA2YjI5 NzZkM2RmLi5hN2I3ZWI1MTEzIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9wdi9yby1wYWdl LWZhdWx0LmMKPiArKysgYi94ZW4vYXJjaC94ODYvcHYvcm8tcGFnZS1mYXVsdC5jCj4gQEAgLTMz LDEyICszMyw2IEBACj4gICNpbmNsdWRlICJlbXVsYXRlLmgiCj4gICNpbmNsdWRlICJtbS5oIgo+ IAo+IC0vKiBPdmVycmlkZSBtYWNyb3MgZnJvbSBhc20vcGFnZS5oIHRvIG1ha2UgdGhlbSB3b3Jr IHdpdGggbWZuX3QgKi8KPiAtI3VuZGVmIG1mbl90b19wYWdlCj4gLSNkZWZpbmUgbWZuX3RvX3Bh Z2UobWZuKSBfX21mbl90b19wYWdlKG1mbl94KG1mbikpCj4gLSN1bmRlZiBwYWdlX3RvX21mbgo+ IC0jZGVmaW5lIHBhZ2VfdG9fbWZuKHBnKSBfbWZuKF9fcGFnZV90b19tZm4ocGcpKQo+IC0KPiAg LyoqKioqKioqKioqKioqKioqKioqKgo+ICAgKiBXcml0YWJsZSBQYWdldGFibGVzCj4gICAqLwo+ IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvc21wYm9vdC5jIGIveGVuL2FyY2gveDg2L3NtcGJv b3QuYwo+IGluZGV4IDE2MDliNjI3YWUuLjA3OTEzNDVhNDcgMTAwNjQ0Cj4gLS0tIGEveGVuL2Fy Y2gveDg2L3NtcGJvb3QuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9zbXBib290LmMKPiBAQCAtNDYs MTIgKzQ2LDYgQEAKPiAgI2luY2x1ZGUgPG1hY2hfd2FrZWNwdS5oPgo+ICAjaW5jbHVkZSA8c21w Ym9vdF9ob29rcy5oPgo+IAo+IC0vKiBPdmVycmlkZSBtYWNyb3MgZnJvbSBhc20vcGFnZS5oIHRv IG1ha2UgdGhlbSB3b3JrIHdpdGggbWZuX3QgKi8KPiAtI3VuZGVmIG1mbl90b19wYWdlCj4gLSNk ZWZpbmUgbWZuX3RvX3BhZ2UobWZuKSBfX21mbl90b19wYWdlKG1mbl94KG1mbikpCj4gLSN1bmRl ZiBwYWdlX3RvX21mbgo+IC0jZGVmaW5lIHBhZ2VfdG9fbWZuKHBnKSBfbWZuKF9fcGFnZV90b19t Zm4ocGcpKQo+IC0KPiAgI2RlZmluZSBzZXR1cF90cmFtcG9saW5lKCkKPiAoYm9vdHN5bV9waHlz KHRyYW1wb2xpbmVfcmVhbG1vZGVfZW50cnkpKQo+IAo+ICB1bnNpZ25lZCBsb25nIF9fcmVhZF9t b3N0bHkgdHJhbXBvbGluZV9waHlzOwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvdGJvb3Qu YyBiL3hlbi9hcmNoL3g4Ni90Ym9vdC5jCj4gaW5kZXggNTlkN2M0NzdmNC4uZTk1MjJmMDZlYyAx MDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvdGJvb3QuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni90 Ym9vdC5jCj4gQEAgLTE4NCw3ICsxODQsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfcGFnZXRhYmxl X21hYyh2bWFjX2N0eF90ICpjdHgpCj4gCj4gICAgICBmb3IgKCBtZm4gPSAwOyBtZm4gPCBtYXhf cGFnZTsgbWZuKysgKQo+ICAgICAgewo+IC0gICAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2Ug PSBtZm5fdG9fcGFnZShtZm4pOwo+ICsgICAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UgPSBt Zm5fdG9fcGFnZShfbWZuKG1mbikpOwo+IAo+ICAgICAgICAgIGlmICggIW1mbl92YWxpZChfbWZu KG1mbikpICkKPiAgICAgICAgICAgICAgY29udGludWU7Cj4gQEAgLTI3Niw3ICsyNzYsNyBAQCBz dGF0aWMgdm9pZCB0Ym9vdF9nZW5feGVuaGVhcF9pbnRlZ3JpdHkoY29uc3QKPiB1aW50OF90IGtl eVtUQl9LRVlfU0laRV0sCj4gICAgICB2bWFjX3NldF9rZXkoKHVpbnQ4X3QgKilrZXksICZjdHgp Owo+ICAgICAgZm9yICggbWZuID0gMDsgbWZuIDwgbWF4X3BhZ2U7IG1mbisrICkKPiAgICAgIHsK PiAtICAgICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlID0gX19tZm5fdG9fcGFnZShtZm4pOwo+ ICsgICAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UgPSBtZm5fdG9fcGFnZShfbWZuKG1mbikp Owo+IAo+ICAgICAgICAgIGlmICggIW1mbl92YWxpZChfbWZuKG1mbikpICkKPiAgICAgICAgICAg ICAgY29udGludWU7Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni90cmFwcy5jIGIveGVuL2Fy Y2gveDg2L3RyYXBzLmMKPiBpbmRleCA4NjUwNmYzNzQ3Li5lMjU2MmVlZTRlIDEwMDY0NAo+IC0t LSBhL3hlbi9hcmNoL3g4Ni90cmFwcy5jCj4gKysrIGIveGVuL2FyY2gveDg2L3RyYXBzLmMKPiBA QCAtODEwLDggKzgxMCw4IEBAIGludCB3cm1zcl9oeXBlcnZpc29yX3JlZ3ModWludDMyX3QgaWR4 LCB1aW50NjRfdCB2YWwpCj4gICAgICAgICAgICAgIH0KPiAKPiAgICAgICAgICAgICAgZ2Rwcmlu dGsoWEVOTE9HX1dBUk5JTkcsCj4gLSAgICAgICAgICAgICAgICAgICAgICJCYWQgR01GTiAlbHgg KE1GTiAlbHgpIHRvIE1TUiAlMDh4XG4iLAo+IC0gICAgICAgICAgICAgICAgICAgICBnbWZuLCBw YWdlID8gcGFnZV90b19tZm4ocGFnZSkgOiAtMVVMLCBiYXNlKTsKPiArICAgICAgICAgICAgICAg ICAgICAgIkJhZCBHTUZOICVseCAoTUZOICUjIlBSSV9tZm4iKSB0byBNU1IgJTA4eFxuIiwKPiAr ICAgICAgICAgICAgICAgICAgICAgZ21mbiwgbWZuX3gocGFnZSA/IHBhZ2VfdG9fbWZuKHBhZ2Up IDogSU5WQUxJRF9NRk4pLAo+IGJhc2UpOwo+ICAgICAgICAgICAgICByZXR1cm4gMDsKPiAgICAg ICAgICB9Cj4gCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfNjQvbW0uYyBiL3hlbi9h cmNoL3g4Ni94ODZfNjQvbW0uYwo+IGluZGV4IDM0Y2Q4NDU3Y2YuLmNjYWQzZDQ0OGIgMTAwNjQ0 Cj4gLS0tIGEveGVuL2FyY2gveDg2L3g4Nl82NC9tbS5jCj4gKysrIGIveGVuL2FyY2gveDg2L3g4 Nl82NC9tbS5jCj4gQEAgLTQwLDYgKzQwLDEyIEBAIGFzbSgiLmZpbGUgXCIiIF9fRklMRV9fICJc IiIpOwo+ICAjaW5jbHVkZSA8YXNtL21lbV9zaGFyaW5nLmg+Cj4gICNpbmNsdWRlIDxwdWJsaWMv bWVtb3J5Lmg+Cj4gCj4gKy8qIE92ZXJyaWRlIG1hY3JvcyBmcm9tIGFzbS9wYWdlLmggdG8gYXZv aWQgdXNpbmcgdHlwZXNhZmUgbWZuX3QuICovCj4gKyN1bmRlZiBwYWdlX3RvX21mbgo+ICsjZGVm aW5lIHBhZ2VfdG9fbWZuKHBnKSBtZm5feChfX3BhZ2VfdG9fbWZuKHBnKSkKPiArI3VuZGVmIG1m bl90b19wYWdlCj4gKyNkZWZpbmUgbWZuX3RvX3BhZ2UobWZuKSBfX21mbl90b19wYWdlKF9tZm4o bWZuKSkKPiArCj4gIHVuc2lnbmVkIGludCBfX3JlYWRfbW9zdGx5IG0ycF9jb21wYXRfdnN0YXJ0 ID0KPiBfX0hZUEVSVklTT1JfQ09NUEFUX1ZJUlRfU1RBUlQ7Cj4gCj4gIGwyX3BnZW50cnlfdCAq Y29tcGF0X2lkbGVfcGdfdGFibGVfbDI7Cj4gZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vZG9tYWlu LmMgYi94ZW4vY29tbW9uL2RvbWFpbi5jCj4gaW5kZXggNWFlYmNmMjY1Zi4uZTgzMDJlOGUxYiAx MDA2NDQKPiAtLS0gYS94ZW4vY29tbW9uL2RvbWFpbi5jCj4gKysrIGIveGVuL2NvbW1vbi9kb21h aW4uYwo+IEBAIC0xMTkyLDcgKzExOTIsNyBAQCBpbnQgbWFwX3ZjcHVfaW5mbyhzdHJ1Y3QgdmNw dSAqdiwgdW5zaWduZWQgbG9uZwo+IGdmbiwgdW5zaWduZWQgb2Zmc2V0KQo+ICAgICAgfQo+IAo+ ICAgICAgdi0+dmNwdV9pbmZvID0gbmV3X2luZm87Cj4gLSAgICB2LT52Y3B1X2luZm9fbWZuID0g X21mbihwYWdlX3RvX21mbihwYWdlKSk7Cj4gKyAgICB2LT52Y3B1X2luZm9fbWZuID0gcGFnZV90 b19tZm4ocGFnZSk7Cj4gCj4gICAgICAvKiBTZXQgbmV3IHZjcHVfaW5mbyBwb2ludGVyIC9iZWZv cmUvIHNldHRpbmcgcGVuZGluZyBmbGFncy4gKi8KPiAgICAgIHNtcF93bWIoKTsKPiBAQCAtMTIy NSw3ICsxMjI1LDcgQEAgdm9pZCB1bm1hcF92Y3B1X2luZm8oc3RydWN0IHZjcHUgKnYpCj4gCj4g ICAgICB2Y3B1X2luZm9fcmVzZXQodik7IC8qIE5COiBDbG9iYmVycyB2LT52Y3B1X2luZm9fbWZu ICovCj4gCj4gLSAgICBwdXRfcGFnZV9hbmRfdHlwZShtZm5fdG9fcGFnZShtZm5feChtZm4pKSk7 Cj4gKyAgICBwdXRfcGFnZV9hbmRfdHlwZShtZm5fdG9fcGFnZShtZm4pKTsKPiAgfQo+IAo+ICBp bnQgZGVmYXVsdF9pbml0aWFsaXNlX3ZjcHUoc3RydWN0IHZjcHUgKnYsCj4gWEVOX0dVRVNUX0hB TkRMRV9QQVJBTSh2b2lkKSBhcmcpCj4gZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vZ3JhbnRfdGFi bGUuYyBiL3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYwo+IGluZGV4IGM1OTUwZjJiM2YuLjczYTlk MDI5M2IgMTAwNjQ0Cj4gLS0tIGEveGVuL2NvbW1vbi9ncmFudF90YWJsZS5jCj4gKysrIGIveGVu L2NvbW1vbi9ncmFudF90YWJsZS5jCj4gQEAgLTQwLDYgKzQwLDEyIEBACj4gICNpbmNsdWRlIDx4 c20veHNtLmg+Cj4gICNpbmNsdWRlIDxhc20vZmx1c2h0bGIuaD4KPiAKPiArLyogT3ZlcnJpZGUg bWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0byBhdm9pZCB1c2luZyB0eXBlc2FmZSBtZm5fdC4gKi8K PiArI3VuZGVmIHBhZ2VfdG9fbWZuCj4gKyNkZWZpbmUgcGFnZV90b19tZm4ocGcpIG1mbl94KF9f cGFnZV90b19tZm4ocGcpKQo+ICsjdW5kZWYgbWZuX3RvX3BhZ2UKPiArI2RlZmluZSBtZm5fdG9f cGFnZShtZm4pIF9fbWZuX3RvX3BhZ2UoX21mbihtZm4pKQo+ICsKPiAgLyogUGVyLWRvbWFpbiBn cmFudCBpbmZvcm1hdGlvbi4gKi8KPiAgc3RydWN0IGdyYW50X3RhYmxlIHsKPiAgICAgIC8qCj4g ZGlmZiAtLWdpdCBhL3hlbi9jb21tb24va2ltYWdlLmMgYi94ZW4vY29tbW9uL2tpbWFnZS5jCj4g aW5kZXggYWZkODI5MmNjMS4uMjEwMjQxZGZiNyAxMDA2NDQKPiAtLS0gYS94ZW4vY29tbW9uL2tp bWFnZS5jCj4gKysrIGIveGVuL2NvbW1vbi9raW1hZ2UuYwo+IEBAIC0yMywxMiArMjMsNiBAQAo+ IAo+ICAjaW5jbHVkZSA8YXNtL3BhZ2UuaD4KPiAKPiAtLyogT3ZlcnJpZGUgbWFjcm9zIGZyb20g YXNtL3BhZ2UuaCB0byBtYWtlIHRoZW0gd29yayB3aXRoIG1mbl90ICovCj4gLSN1bmRlZiBtZm5f dG9fcGFnZQo+IC0jZGVmaW5lIG1mbl90b19wYWdlKG1mbikgX19tZm5fdG9fcGFnZShtZm5feCht Zm4pKQo+IC0jdW5kZWYgcGFnZV90b19tZm4KPiAtI2RlZmluZSBwYWdlX3RvX21mbihwZykgIF9t Zm4oX19wYWdlX3RvX21mbihwZykpCj4gLQo+ICAvKgo+ICAgKiBXaGVuIGtleGVjIHRyYW5zaXRp b25zIHRvIHRoZSBuZXcga2VybmVsIHRoZXJlIGlzIGEgb25lLXRvLW9uZQo+ICAgKiBtYXBwaW5n IGJldHdlZW4gcGh5c2ljYWwgYW5kIHZpcnR1YWwgYWRkcmVzc2VzLiAgT24gcHJvY2Vzc29ycwo+ IGRpZmYgLS1naXQgYS94ZW4vY29tbW9uL21lbW9yeS5jIGIveGVuL2NvbW1vbi9tZW1vcnkuYwo+ IGluZGV4IGFkOTg3ZTBmMjkuLmU0NjdmMjcxYzcgMTAwNjQ0Cj4gLS0tIGEveGVuL2NvbW1vbi9t ZW1vcnkuYwo+ICsrKyBiL3hlbi9jb21tb24vbWVtb3J5LmMKPiBAQCAtMjksNiArMjksMTIgQEAK PiAgI2luY2x1ZGUgPHB1YmxpYy9tZW1vcnkuaD4KPiAgI2luY2x1ZGUgPHhzbS94c20uaD4KPiAK PiArLyogT3ZlcnJpZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0byBhdm9pZCB1c2luZyB0eXBl c2FmZSBtZm5fdC4gKi8KPiArI3VuZGVmIHBhZ2VfdG9fbWZuCj4gKyNkZWZpbmUgcGFnZV90b19t Zm4ocGcpIG1mbl94KF9fcGFnZV90b19tZm4ocGcpKQo+ICsjdW5kZWYgbWZuX3RvX3BhZ2UKPiAr I2RlZmluZSBtZm5fdG9fcGFnZShtZm4pIF9fbWZuX3RvX3BhZ2UoX21mbihtZm4pKQo+ICsKPiAg c3RydWN0IG1lbW9wX2FyZ3Mgewo+ICAgICAgLyogSU5QVVQgKi8KPiAgICAgIHN0cnVjdCBkb21h aW4gKmRvbWFpbjsgICAgIC8qIERvbWFpbiB0byBiZSBhZmZlY3RlZC4gKi8KPiBkaWZmIC0tZ2l0 IGEveGVuL2NvbW1vbi9wYWdlX2FsbG9jLmMgYi94ZW4vY29tbW9uL3BhZ2VfYWxsb2MuYwo+IGlu ZGV4IDU2MTZhODIyNjMuLjM0YzIwODljZDIgMTAwNjQ0Cj4gLS0tIGEveGVuL2NvbW1vbi9wYWdl X2FsbG9jLmMKPiArKysgYi94ZW4vY29tbW9uL3BhZ2VfYWxsb2MuYwo+IEBAIC0xNTAsNiArMTUw LDEyIEBACj4gICNkZWZpbmUgcDJtX3BvZF9vZmZsaW5lX29yX2Jyb2tlbl9yZXBsYWNlKHBnKSBC VUdfT04ocGcgIT0gTlVMTCkKPiAgI2VuZGlmCj4gCj4gKy8qIE92ZXJyaWRlIG1hY3JvcyBmcm9t IGFzbS9wYWdlLmggdG8gYXZvaWQgdXNpbmcgdHlwZXNhZmUgbWZuX3QuICovCj4gKyN1bmRlZiBw YWdlX3RvX21mbgo+ICsjZGVmaW5lIHBhZ2VfdG9fbWZuKHBnKSBtZm5feChfX3BhZ2VfdG9fbWZu KHBnKSkKPiArI3VuZGVmIG1mbl90b19wYWdlCj4gKyNkZWZpbmUgbWZuX3RvX3BhZ2UobWZuKSBf X21mbl90b19wYWdlKF9tZm4obWZuKSkKPiArCj4gIC8qCj4gICAqIENvbW1hLXNlcGFyYXRlZCBs aXN0IG9mIGhleGFkZWNpbWFsIHBhZ2UgbnVtYmVycyBjb250YWluaW5nIGJhZAo+IGJ5dGVzLgo+ ICAgKiBlLmcuICdiYWRwYWdlPTB4M2Y0NSwweDhhMzIxJy4KPiBkaWZmIC0tZ2l0IGEveGVuL2Nv bW1vbi90bWVtLmMgYi94ZW4vY29tbW9uL3RtZW0uYwo+IGluZGV4IDMyNGY0MmE2ZjkuLmMwNzdm ODdlNzcgMTAwNjQ0Cj4gLS0tIGEveGVuL2NvbW1vbi90bWVtLmMKPiArKysgYi94ZW4vY29tbW9u L3RtZW0uYwo+IEBAIC0yNDMsNyArMjQzLDcgQEAgc3RhdGljIHZvaWQgdG1lbV9wZXJzaXN0ZW50 X3Bvb2xfcGFnZV9wdXQodm9pZAo+ICpwYWdlX3ZhKQo+ICAgICAgc3RydWN0IHBhZ2VfaW5mbyAq cGk7Cj4gCj4gICAgICBBU1NFUlQoSVNfUEFHRV9BTElHTkVEKHBhZ2VfdmEpKTsKPiAtICAgIHBp ID0gbWZuX3RvX3BhZ2UodmlydF90b19tZm4ocGFnZV92YSkpOwo+ICsgICAgcGkgPSBtZm5fdG9f cGFnZShfbWZuKHZpcnRfdG9fbWZuKHBhZ2VfdmEpKSk7Cj4gICAgICBBU1NFUlQoSVNfVkFMSURf UEFHRShwaSkpOwo+ICAgICAgX190bWVtX2ZyZWVfcGFnZV90aGlzcG9vbChwaSk7Cj4gIH0KPiBk aWZmIC0tZ2l0IGEveGVuL2NvbW1vbi90bWVtX3hlbi5jIGIveGVuL2NvbW1vbi90bWVtX3hlbi5j Cj4gaW5kZXggYmQ1MmU0NGZhZi4uYmY3YjE0Zjc5YSAxMDA2NDQKPiAtLS0gYS94ZW4vY29tbW9u L3RtZW1feGVuLmMKPiArKysgYi94ZW4vY29tbW9uL3RtZW1feGVuLmMKPiBAQCAtMTQsMTAgKzE0 LDYgQEAKPiAgI2luY2x1ZGUgPHhlbi9jcHUuaD4KPiAgI2luY2x1ZGUgPHhlbi9pbml0Lmg+Cj4g Cj4gLS8qIE92ZXJyaWRlIG1hY3JvcyBmcm9tIGFzbS9wYWdlLmggdG8gbWFrZSB0aGVtIHdvcmsg d2l0aCBtZm5fdCAqLwo+IC0jdW5kZWYgcGFnZV90b19tZm4KPiAtI2RlZmluZSBwYWdlX3RvX21m bihwZykgX21mbihfX3BhZ2VfdG9fbWZuKHBnKSkKPiAtCj4gIGJvb2wgX19yZWFkX21vc3RseSBv cHRfdG1lbTsKPiAgYm9vbGVhbl9wYXJhbSgidG1lbSIsIG9wdF90bWVtKTsKPiAKPiBkaWZmIC0t Z2l0IGEveGVuL2NvbW1vbi90cmFjZS5jIGIveGVuL2NvbW1vbi90cmFjZS5jCj4gaW5kZXggMmUx ODcwMjMxNy4uY2Y4ZjhiMDk5NyAxMDA2NDQKPiAtLS0gYS94ZW4vY29tbW9uL3RyYWNlLmMKPiAr KysgYi94ZW4vY29tbW9uL3RyYWNlLmMKPiBAQCAtNDIsNiArNDIsMTIgQEAgQ0hFQ0tfdF9idWY7 Cj4gICNkZWZpbmUgY29tcGF0X3RfcmVjIHRfcmVjCj4gICNlbmRpZgo+IAo+ICsvKiBPdmVycmlk ZSBtYWNyb3MgZnJvbSBhc20vcGFnZS5oIHRvIGF2b2lkIHVzaW5nIHR5cGVzYWZlIG1mbl90LiAq Lwo+ICsjdW5kZWYgcGFnZV90b19tZm4KPiArI2RlZmluZSBwYWdlX3RvX21mbihwZykgbWZuX3go X19wYWdlX3RvX21mbihwZykpCj4gKyN1bmRlZiBtZm5fdG9fcGFnZQo+ICsjZGVmaW5lIG1mbl90 b19wYWdlKG1mbikgX19tZm5fdG9fcGFnZShfbWZuKG1mbikpCj4gKwo+ICAvKiBvcHRfdGJ1Zl9z aXplOiB0cmFjZSBidWZmZXIgc2l6ZSAoaW4gcGFnZXMpIGZvciBlYWNoIGNwdSAqLwo+ICBzdGF0 aWMgdW5zaWduZWQgaW50IG9wdF90YnVmX3NpemU7Cj4gIHN0YXRpYyB1bnNpZ25lZCBpbnQgb3B0 X3RldnRfbWFzazsKPiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi92bWFwLmMgYi94ZW4vY29tbW9u L3ZtYXAuYwo+IGluZGV4IDBiMjNmOGZiOTcuLjEwZjMyYjI5ZTAgMTAwNjQ0Cj4gLS0tIGEveGVu L2NvbW1vbi92bWFwLmMKPiArKysgYi94ZW4vY29tbW9uL3ZtYXAuYwo+IEBAIC0zNiw3ICszNiw3 IEBAIHZvaWQgX19pbml0IHZtX2luaXRfdHlwZShlbnVtIHZtYXBfcmVnaW9uIHR5cGUsIHZvaWQK PiAqc3RhcnQsIHZvaWQgKmVuZCkKPiAgICAgIHsKPiAgICAgICAgICBzdHJ1Y3QgcGFnZV9pbmZv ICpwZyA9IGFsbG9jX2RvbWhlYXBfcGFnZShOVUxMLCAwKTsKPiAKPiAtICAgICAgICBtYXBfcGFn ZXNfdG9feGVuKHZhLCBwYWdlX3RvX21mbihwZyksIDEsIFBBR0VfSFlQRVJWSVNPUik7Cj4gKyAg ICAgICAgbWFwX3BhZ2VzX3RvX3hlbih2YSwgbWZuX3gocGFnZV90b19tZm4ocGcpKSwgMSwKPiBQ QUdFX0hZUEVSVklTT1IpOwo+ICAgICAgICAgIGNsZWFyX3BhZ2UoKHZvaWQgKil2YSk7Cj4gICAg ICB9Cj4gICAgICBiaXRtYXBfZmlsbCh2bV9iaXRtYXAodHlwZSksIHZtX2xvd1t0eXBlXSk7Cj4g QEAgLTEwNyw3ICsxMDcsOCBAQCBzdGF0aWMgdm9pZCAqdm1fYWxsb2ModW5zaWduZWQgaW50IG5y LCB1bnNpZ25lZCBpbnQKPiBhbGlnbiwKPiAgICAgICAgICB7Cj4gICAgICAgICAgICAgIHVuc2ln bmVkIGxvbmcgdmEgPSAodW5zaWduZWQgbG9uZyl2bV9iaXRtYXAodCkgKyB2bV90b3BbdF0gLyA4 Owo+IAo+IC0gICAgICAgICAgICBpZiAoICFtYXBfcGFnZXNfdG9feGVuKHZhLCBwYWdlX3RvX21m bihwZyksIDEsIFBBR0VfSFlQRVJWSVNPUikKPiApCj4gKyAgICAgICAgICAgIGlmICggIW1hcF9w YWdlc190b194ZW4odmEsIG1mbl94KHBhZ2VfdG9fbWZuKHBnKSksCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMSwgUEFHRV9IWVBFUlZJU09SKSApCj4gICAgICAgICAgICAg IHsKPiAgICAgICAgICAgICAgICAgIGNsZWFyX3BhZ2UoKHZvaWQgKil2YSk7Cj4gICAgICAgICAg ICAgICAgICB2bV90b3BbdF0gKz0gUEFHRV9TSVpFICogODsKPiBAQCAtMjU4LDcgKzI1OSw3IEBA IHN0YXRpYyB2b2lkICp2bWFsbG9jX3R5cGUoc2l6ZV90IHNpemUsIGVudW0KPiB2bWFwX3JlZ2lv biB0eXBlKQo+ICAgICAgICAgIHBnID0gYWxsb2NfZG9taGVhcF9wYWdlKE5VTEwsIDApOwo+ICAg ICAgICAgIGlmICggcGcgPT0gTlVMTCApCj4gICAgICAgICAgICAgIGdvdG8gZXJyb3I7Cj4gLSAg ICAgICAgbWZuW2ldID0gX21mbihwYWdlX3RvX21mbihwZykpOwo+ICsgICAgICAgIG1mbltpXSA9 IHBhZ2VfdG9fbWZuKHBnKTsKPiAgICAgIH0KPiAKPiAgICAgIHZhID0gX192bWFwKG1mbiwgMSwg cGFnZXMsIDEsIFBBR0VfSFlQRVJWSVNPUiwgdHlwZSk7Cj4gQEAgLTI3MCw3ICsyNzEsNyBAQCBz dGF0aWMgdm9pZCAqdm1hbGxvY190eXBlKHNpemVfdCBzaXplLCBlbnVtCj4gdm1hcF9yZWdpb24g dHlwZSkKPiAKPiAgIGVycm9yOgo+ICAgICAgd2hpbGUgKCBpLS0gKQo+IC0gICAgICAgIGZyZWVf ZG9taGVhcF9wYWdlKG1mbl90b19wYWdlKG1mbl94KG1mbltpXSkpKTsKPiArICAgICAgICBmcmVl X2RvbWhlYXBfcGFnZShtZm5fdG9fcGFnZShtZm5baV0pKTsKPiAgICAgIHhmcmVlKG1mbik7Cj4g ICAgICByZXR1cm4gTlVMTDsKPiAgfQo+IGRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3hlbm9wcm9m LmMgYi94ZW4vY29tbW9uL3hlbm9wcm9mLmMKPiBpbmRleCA1YWNkZGU1NjkxLi5mZWNkZmIzNjk3 IDEwMDY0NAo+IC0tLSBhL3hlbi9jb21tb24veGVub3Byb2YuYwo+ICsrKyBiL3hlbi9jb21tb24v eGVub3Byb2YuYwo+IEBAIC0yMiw4ICsyMiw2IEBACj4gIC8qIE92ZXJyaWRlIG1hY3JvcyBmcm9t IGFzbS9wYWdlLmggdG8gbWFrZSB0aGVtIHdvcmsgd2l0aCBtZm5fdCAqLwo+ICAjdW5kZWYgdmly dF90b19tZm4KPiAgI2RlZmluZSB2aXJ0X3RvX21mbih2YSkgX21mbihfX3ZpcnRfdG9fbWZuKHZh KSkKPiAtI3VuZGVmIG1mbl90b19wYWdlCj4gLSNkZWZpbmUgbWZuX3RvX3BhZ2UobWZuKSBfX21m bl90b19wYWdlKG1mbl94KG1mbikpCj4gCj4gIC8qIExpbWl0IGFtb3VudCBvZiBwYWdlcyB1c2Vk IGZvciBzaGFyZWQgYnVmZmVyIChwZXIgZG9tYWluKSAqLwo+ICAjZGVmaW5lIE1BWF9PUFJPRl9T SEFSRURfUEFHRVMgMzIKPiBkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1k L2lvbW11X21hcC5jCj4gYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfbWFwLmMK PiBpbmRleCBmZDIzMjdkM2U1Li5iZDYyYzJjZTkwIDEwMDY0NAo+IC0tLSBhL3hlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9tYXAuYwo+ICsrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJv dWdoL2FtZC9pb21tdV9tYXAuYwo+IEBAIC0yNSw2ICsyNSwxMiBAQAo+ICAjaW5jbHVkZSAiLi4v YXRzLmgiCj4gICNpbmNsdWRlIDx4ZW4vcGNpLmg+Cj4gCj4gKy8qIE92ZXJyaWRlIG1hY3JvcyBm cm9tIGFzbS9wYWdlLmggdG8gYXZvaWQgdXNpbmcgdHlwZXNhZmUgbWZuX3QuICovCj4gKyN1bmRl ZiBwYWdlX3RvX21mbgo+ICsjZGVmaW5lIHBhZ2VfdG9fbWZuKHBnKSBtZm5feChfX3BhZ2VfdG9f bWZuKHBnKSkKPiArI3VuZGVmIG1mbl90b19wYWdlCj4gKyNkZWZpbmUgbWZuX3RvX3BhZ2UobWZu KSBfX21mbl90b19wYWdlKF9tZm4obWZuKSkKPiArCj4gIC8qIEdpdmVuIHBmbiBhbmQgcGFnZSB0 YWJsZSBsZXZlbCwgcmV0dXJuIHBkZSBpbmRleCAqLwo+ICBzdGF0aWMgdW5zaWduZWQgaW50IHBm bl90b19wZGVfaWR4KHVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBpbnQgbGV2ZWwpCj4gIHsK PiBkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYwo+IGIveGVuL2Ry aXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYwo+IGluZGV4IDFhZWNmN2NmMzQuLjJjNDRmYWJmOTkg MTAwNjQ0Cj4gLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYwo+ICsrKyBiL3hl bi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMKPiBAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQg X19od2RvbV9pbml0IGlvbW11X2h3ZG9tX2luaXQoc3RydWN0Cj4gZG9tYWluICpkKQo+IAo+ICAg ICAgICAgIHBhZ2VfbGlzdF9mb3JfZWFjaCAoIHBhZ2UsICZkLT5wYWdlX2xpc3QgKQo+ICAgICAg ICAgIHsKPiAtICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4gPSBwYWdlX3RvX21mbihwYWdl KTsKPiArICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4gPSBtZm5feChwYWdlX3RvX21mbihw YWdlKSk7Cj4gICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2ZuID0gbWZuX3RvX2dtZm4oZCwg bWZuKTsKPiAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG1hcHBpbmcgPSBJT01NVUZfcmVhZGFi bGU7Cj4gICAgICAgICAgICAgIGludCByZXQ7Cj4gZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bh c3N0aHJvdWdoL3g4Ni9pb21tdS5jCj4gYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvaW9t bXUuYwo+IGluZGV4IDAyNTM4MjMxNzMuLjY4MTgyYWZkOTEgMTAwNjQ0Cj4gLS0tIGEveGVuL2Ry aXZlcnMvcGFzc3Rocm91Z2gveDg2L2lvbW11LmMKPiArKysgYi94ZW4vZHJpdmVycy9wYXNzdGhy b3VnaC94ODYvaW9tbXUuYwo+IEBAIC01OCw3ICs1OCw3IEBAIGludCBhcmNoX2lvbW11X3BvcHVs YXRlX3BhZ2VfdGFibGUoc3RydWN0IGRvbWFpbgo+ICpkKQo+ICAgICAgICAgIGlmICggaXNfaHZt X2RvbWFpbihkKSB8fAo+ICAgICAgICAgICAgICAocGFnZS0+dS5pbnVzZS50eXBlX2luZm8gJiBQ R1RfdHlwZV9tYXNrKSA9PSBQR1Rfd3JpdGFibGVfcGFnZSApCj4gICAgICAgICAgewo+IC0gICAg ICAgICAgICB1bnNpZ25lZCBsb25nIG1mbiA9IHBhZ2VfdG9fbWZuKHBhZ2UpOwo+ICsgICAgICAg ICAgICB1bnNpZ25lZCBsb25nIG1mbiA9IG1mbl94KHBhZ2VfdG9fbWZuKHBhZ2UpKTsKPiAgICAg ICAgICAgICAgdW5zaWduZWQgbG9uZyBnZm4gPSBtZm5fdG9fZ21mbihkLCBtZm4pOwo+IAo+ICAg ICAgICAgICAgICBpZiAoIGdmbiAhPSBnZm5feChJTlZBTElEX0dGTikgKQo+IGRpZmYgLS1naXQg YS94ZW4vaW5jbHVkZS9hc20tYXJtL21tLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL21tLmgKPiBp bmRleCA3MzdhNDI5NDA5Li4zZWI0YjY4NzYxIDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL2Fz bS1hcm0vbW0uaAo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vbW0uaAo+IEBAIC0xMzgsNyAr MTM4LDcgQEAgZXh0ZXJuIHZhZGRyX3QgeGVuaGVhcF92aXJ0X3N0YXJ0Owo+ICAjZW5kaWYKPiAK PiAgI2lmZGVmIENPTkZJR19BUk1fMzIKPiAtI2RlZmluZSBpc194ZW5faGVhcF9wYWdlKHBhZ2Up IGlzX3hlbl9oZWFwX21mbihwYWdlX3RvX21mbihwYWdlKSkKPiArI2RlZmluZSBpc194ZW5faGVh cF9wYWdlKHBhZ2UpCj4gaXNfeGVuX2hlYXBfbWZuKG1mbl94KF9fcGFnZV90b19tZm4ocGFnZSkp KQo+ICAjZGVmaW5lIGlzX3hlbl9oZWFwX21mbihtZm4pICh7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAo+ICAgICAgdW5zaWduZWQgbG9uZyBtZm5fID0gKG1mbik7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICAgICAgKG1mbl8gPj0gbWZuX3goeGVuaGVhcF9t Zm5fc3RhcnQpICYmICAgICAgICAgICAgICAgICAgICAgICAgXAo+IEBAIC0yMjAsMTIgKzIyMCwx NCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19pb21lbSAqaW9yZW1hcF93YyhwYWRkcl90Cj4gc3Rh cnQsIHNpemVfdCBsZW4pCj4gIH0pCj4gCj4gIC8qIENvbnZlcnQgYmV0d2VlbiBtYWNoaW5lIGZy YW1lIG51bWJlcnMgYW5kIHBhZ2UtaW5mbyBzdHJ1Y3R1cmVzLiAqLwo+IC0jZGVmaW5lIF9fbWZu X3RvX3BhZ2UobWZuKSAgKGZyYW1lX3RhYmxlICsgKHBmbl90b19wZHgobWZuKSAtCj4gZnJhbWV0 YWJsZV9iYXNlX3BkeCkpCj4gLSNkZWZpbmUgX19wYWdlX3RvX21mbihwZykgICBwZHhfdG9fcGZu KCh1bnNpZ25lZCBsb25nKSgocGcpIC0KPiBmcmFtZV90YWJsZSkgKyBmcmFtZXRhYmxlX2Jhc2Vf cGR4KQo+ICsjZGVmaW5lIF9fbWZuX3RvX3BhZ2UobWZuKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKPiArICAgIChmcmFtZV90YWJsZSArIChwZm5fdG9fcGR4KG1m bl94KG1mbikpIC0gZnJhbWV0YWJsZV9iYXNlX3BkeCkpCj4gKyNkZWZpbmUgX19wYWdlX3RvX21m bihwZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAg X21mbihwZHhfdG9fcGZuKCh1bnNpZ25lZCBsb25nKSgocGcpIC0gZnJhbWVfdGFibGUpICsKPiBm cmFtZXRhYmxlX2Jhc2VfcGR4KSkKPiAKPiAgLyogQ29udmVydCBiZXR3ZWVuIG1hY2hpbmUgYWRk cmVzc2VzIGFuZCBwYWdlLWluZm8gc3RydWN0dXJlcy4gKi8KPiAtI2RlZmluZSBtYWRkcl90b19w YWdlKG1hKSBfX21mbl90b19wYWdlKChtYSkgPj4gUEFHRV9TSElGVCkKPiAtI2RlZmluZSBwYWdl X3RvX21hZGRyKHBnKSAoKHBhZGRyX3QpX19wYWdlX3RvX21mbihwZykgPDwKPiBQQUdFX1NISUZU KQo+ICsjZGVmaW5lIG1hZGRyX3RvX3BhZ2UobWEpIF9fbWZuX3RvX3BhZ2UobWFkZHJfdG9fbWZu KG1hKSkKPiArI2RlZmluZSBwYWdlX3RvX21hZGRyKHBnKSAobWZuX3RvX21hZGRyKF9fcGFnZV90 b19tZm4ocGcpKSkKPiAKPiAgLyogQ29udmVydCBiZXR3ZWVuIGZyYW1lIG51bWJlciBhbmQgYWRk cmVzcyBmb3JtYXRzLiAgKi8KPiAgI2RlZmluZSBwZm5fdG9fcGFkZHIocGZuKSAoKHBhZGRyX3Qp KHBmbikgPDwgUEFHRV9TSElGVCkKPiBAQCAtMjM1LDcgKzIzNyw3IEBAIHN0YXRpYyBpbmxpbmUg dm9pZCBfX2lvbWVtICppb3JlbWFwX3djKHBhZGRyX3QKPiBzdGFydCwgc2l6ZV90IGxlbikKPiAg I2RlZmluZSBnYWRkcl90b19nZm4oZ2EpICAgIF9nZm4ocGFkZHJfdG9fcGZuKGdhKSkKPiAgI2Rl ZmluZSBtZm5fdG9fbWFkZHIobWZuKSAgIHBmbl90b19wYWRkcihtZm5feChtZm4pKQo+ICAjZGVm aW5lIG1hZGRyX3RvX21mbihtYSkgICAgX21mbihwYWRkcl90b19wZm4obWEpKQo+IC0jZGVmaW5l IHZtYXBfdG9fbWZuKHZhKSAgICAgcGFkZHJfdG9fcGZuKHZpcnRfdG9fbWFkZHIoKHZhZGRyX3Qp dmEpKQo+ICsjZGVmaW5lIHZtYXBfdG9fbWZuKHZhKSAgICAgbWFkZHJfdG9fbWZuKHZpcnRfdG9f bWFkZHIoKHZhZGRyX3QpdmEpKQo+ICAjZGVmaW5lIHZtYXBfdG9fcGFnZSh2YSkgICAgbWZuX3Rv X3BhZ2Uodm1hcF90b19tZm4odmEpKQo+IAo+ICAvKiBQYWdlLWFsaWduIGFkZHJlc3MgYW5kIGNv bnZlcnQgdG8gZnJhbWUgbnVtYmVyIGZvcm1hdCAqLwo+IEBAIC0zMDksNyArMzExLDcgQEAgc3Rh dGljIGlubGluZSBzdHJ1Y3QgcGFnZV9pbmZvICp2aXJ0X3RvX3BhZ2UoY29uc3Qgdm9pZAo+ICp2 KQo+IAo+ICBzdGF0aWMgaW5saW5lIHZvaWQgKnBhZ2VfdG9fdmlydChjb25zdCBzdHJ1Y3QgcGFn ZV9pbmZvICpwZykKPiAgewo+IC0gICAgcmV0dXJuIG1mbl90b192aXJ0KHBhZ2VfdG9fbWZuKHBn KSk7Cj4gKyAgICByZXR1cm4gbWZuX3RvX3ZpcnQobWZuX3goX19wYWdlX3RvX21mbihwZykpKTsK PiAgfQo+IAo+ICBzdHJ1Y3QgcGFnZV9pbmZvICpnZXRfcGFnZV9mcm9tX2d2YShzdHJ1Y3QgdmNw dSAqdiwgdmFkZHJfdCB2YSwKPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9wMm0u aCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vcDJtLmgKPiBpbmRleCBmYWFkY2ZlOGZlLi44N2M5OTk0 OTc0IDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vcDJtLmgKPiArKysgYi94ZW4v aW5jbHVkZS9hc20tYXJtL3AybS5oCj4gQEAgLTI3Niw3ICsyNzYsNyBAQCBzdGF0aWMgaW5saW5l IHN0cnVjdCBwYWdlX2luZm8gKmdldF9wYWdlX2Zyb21fZ2ZuKAo+ICB7Cj4gICAgICBzdHJ1Y3Qg cGFnZV9pbmZvICpwYWdlOwo+ICAgICAgcDJtX3R5cGVfdCBwMm10Owo+IC0gICAgdW5zaWduZWQg bG9uZyBtZm4gPSBtZm5feChwMm1fbG9va3VwKGQsIF9nZm4oZ2ZuKSwgJnAybXQpKTsKPiArICAg IG1mbl90IG1mbiA9IHAybV9sb29rdXAoZCwgX2dmbihnZm4pLCAmcDJtdCk7Cj4gCj4gICAgICBp ZiAodCkKPiAgICAgICAgICAqdCA9IHAybXQ7Cj4gQEAgLTI4NCw3ICsyODQsNyBAQCBzdGF0aWMg aW5saW5lIHN0cnVjdCBwYWdlX2luZm8gKmdldF9wYWdlX2Zyb21fZ2ZuKAo+ICAgICAgaWYgKCAh cDJtX2lzX2FueV9yYW0ocDJtdCkgKQo+ICAgICAgICAgIHJldHVybiBOVUxMOwo+IAo+IC0gICAg aWYgKCAhbWZuX3ZhbGlkKF9tZm4obWZuKSkgKQo+ICsgICAgaWYgKCAhbWZuX3ZhbGlkKG1mbikg KQo+ICAgICAgICAgIHJldHVybiBOVUxMOwo+ICAgICAgcGFnZSA9IG1mbl90b19wYWdlKG1mbik7 Cj4gCj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaCBiL3hlbi9pbmNsdWRl L2FzbS14ODYvbW0uaAo+IGluZGV4IDgzNjI2MDg1ZTAuLmM4ZGQyNzM1MTcgMTAwNjQ0Cj4gLS0t IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9tbS5oCj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9t bS5oCj4gQEAgLTI3MCw3ICsyNzAsNyBAQCBzdHJ1Y3QgcGFnZV9pbmZvCj4gCj4gICNkZWZpbmUg aXNfeGVuX2hlYXBfcGFnZShwYWdlKSAoKHBhZ2UpLT5jb3VudF9pbmZvICYgUEdDX3hlbl9oZWFw KQo+ICAjZGVmaW5lIGlzX3hlbl9oZWFwX21mbihtZm4pIFwKPiAtICAgIChfX21mbl92YWxpZCht Zm4pICYmIGlzX3hlbl9oZWFwX3BhZ2UoX19tZm5fdG9fcGFnZShtZm4pKSkKPiArICAgIChfX21m bl92YWxpZChtZm4pICYmCj4gaXNfeGVuX2hlYXBfcGFnZShfX21mbl90b19wYWdlKF9tZm4obWZu KSkpKQo+ICAjZGVmaW5lIGlzX3hlbl9maXhlZF9tZm4obWZuKSAgICAgICAgICAgICAgICAgICAg IFwKPiAgICAgICgoKChtZm4pIDw8IFBBR0VfU0hJRlQpID49IF9fcGEoJl9zdGV4dCkpICYmICBc Cj4gICAgICAgKCgobWZuKSA8PCBQQUdFX1NISUZUKSA8PSBfX3BhKCZfXzJNX3J3ZGF0YV9lbmQp KSkKPiBAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgcHV0X3BhZ2VfZnJvbV9sMWUobDFfcGdlbnRy eV90IGwxZSwgc3RydWN0Cj4gZG9tYWluICpsMWVfb3duZXIpOwo+IAo+ICBzdGF0aWMgaW5saW5l IGJvb2wgZ2V0X3BhZ2VfZnJvbV9tZm4obWZuX3QgbWZuLCBzdHJ1Y3QgZG9tYWluICpkKQo+ICB7 Cj4gLSAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlID0gX19tZm5fdG9fcGFnZShtZm5feChtZm4p KTsKPiArICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UgPSBfX21mbl90b19wYWdlKG1mbik7Cj4g Cj4gICAgICBpZiAoIHVubGlrZWx5KCFtZm5fdmFsaWQobWZuKSkgfHwgdW5saWtlbHkoIWdldF9w YWdlKHBhZ2UsIGQpKSApCj4gICAgICB7Cj4gQEAgLTQ3NywxMCArNDc3LDEwIEBAIGV4dGVybiBw YWRkcl90IG1lbV9ob3RwbHVnOwo+ICAjZGVmaW5lIFNIQVJFRF9NMlAoX2UpICAgICAgICAgICAo KF9lKSA9PSBTSEFSRURfTTJQX0VOVFJZKQo+IAo+ICAjZGVmaW5lIGNvbXBhdF9tYWNoaW5lX3Rv X3BoeXNfbWFwcGluZyAoKHVuc2lnbmVkIGludAo+ICopUkRXUl9DT01QQVRfTVBUX1ZJUlRfU1RB UlQpCj4gLSNkZWZpbmUgX3NldF9ncGZuX2Zyb21fbWZuKG1mbiwgcGZuKSAoeyAgICAgICAgICAg ICAgICAgICAgICAgIFwKPiAtICAgIHN0cnVjdCBkb21haW4gKmQgPSBwYWdlX2dldF9vd25lcihf X21mbl90b19wYWdlKG1mbikpOyAgICAgXAo+IC0gICAgdW5zaWduZWQgbG9uZyBlbnRyeSA9IChk ICYmIChkID09IGRvbV9jb3cpKSA/ICAgICAgICAgICAgICBcCj4gLSAgICAgICAgU0hBUkVEX00y UF9FTlRSWSA6IChwZm4pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArI2RlZmlu ZSBfc2V0X2dwZm5fZnJvbV9tZm4obWZuLCBwZm4pICh7ICAgICAgICAgICAgICAgICAgICAgICAg IFwKPiArICAgIHN0cnVjdCBkb21haW4gKmQgPSBwYWdlX2dldF9vd25lcihfX21mbl90b19wYWdl KF9tZm4obWZuKSkpOyAgICBcCj4gKyAgICB1bnNpZ25lZCBsb25nIGVudHJ5ID0gKGQgJiYgKGQg PT0gZG9tX2NvdykpID8gICAgICAgICAgICAgICBcCj4gKyAgICAgICAgU0hBUkVEX00yUF9FTlRS WSA6IChwZm4pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gICAgICAoKHZvaWQp KChtZm4pID49IChSRFdSX0NPTVBBVF9NUFRfVklSVF9FTkQgLQo+IFJEV1JfQ09NUEFUX01QVF9W SVJUX1NUQVJUKSAvIDQgfHwgXAo+ICAgICAgICAgICAgICAoY29tcGF0X21hY2hpbmVfdG9fcGh5 c19tYXBwaW5nWyhtZm4pXSA9ICh1bnNpZ25lZCBpbnQpKGVudHJ5KSkpLAo+IFwKPiAgICAgICBt YWNoaW5lX3RvX3BoeXNfbWFwcGluZ1sobWZuKV0gPSAoZW50cnkpKTsgICAgICAgICAgICAgICAg XAo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3AybS5oIGIveGVuL2luY2x1ZGUv YXNtLXg4Ni9wMm0uaAo+IGluZGV4IDE3YjFkMGM4ZDMuLmEyYTIxNjA2MWYgMTAwNjQ0Cj4gLS0t IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaAo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYv cDJtLmgKPiBAQCAtNDg3LDcgKzQ4Nyw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IHBhZ2VfaW5m byAqZ2V0X3BhZ2VfZnJvbV9nZm4oCj4gICAgICAvKiBOb24tdHJhbnNsYXRlZCBndWVzdHMgc2Vl IDEtMSBSQU0gLyBNTUlPIG1hcHBpbmdzIGV2ZXJ5d2hlcmUgKi8KPiAgICAgIGlmICggdCApCj4g ICAgICAgICAgKnQgPSBsaWtlbHkoZCAhPSBkb21faW8pID8gcDJtX3JhbV9ydyA6IHAybV9tbWlv X2RpcmVjdDsKPiAtICAgIHBhZ2UgPSBfX21mbl90b19wYWdlKGdmbik7Cj4gKyAgICBwYWdlID0g X19tZm5fdG9fcGFnZShfbWZuKGdmbikpOwo+ICAgICAgcmV0dXJuIG1mbl92YWxpZChfbWZuKGdm bikpICYmIGdldF9wYWdlKHBhZ2UsIGQpID8gcGFnZSA6IE5VTEw7Cj4gIH0KPiAKPiBkaWZmIC0t Z2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wYWdlLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L3Bh Z2UuaAo+IGluZGV4IDQ1Y2E3NDI2NzguLjg3MzdlZjE2ZmYgMTAwNjQ0Cj4gLS0tIGEveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9wYWdlLmgKPiArKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L3BhZ2UuaAo+ IEBAIC04OCwxMCArODgsMTAgQEAKPiAgICAgICgocGFkZHJfdCkoKCh4KS5sNCAmIChQQUREUl9N QVNLJlBBR0VfTUFTSykpKSkKPiAKPiAgLyogR2V0IHBvaW50ZXIgdG8gaW5mbyBzdHJ1Y3R1cmUg b2YgcGFnZSBtYXBwZWQgYnkgcHRlIChzdHJ1Y3QgcGFnZV9pbmZvICopLgo+ICovCj4gLSNkZWZp bmUgbDFlX2dldF9wYWdlKHgpICAgICAgICAgICAoX19tZm5fdG9fcGFnZShsMWVfZ2V0X3Bmbih4 KSkpCj4gLSNkZWZpbmUgbDJlX2dldF9wYWdlKHgpICAgICAgICAgICAoX19tZm5fdG9fcGFnZShs MmVfZ2V0X3Bmbih4KSkpCj4gLSNkZWZpbmUgbDNlX2dldF9wYWdlKHgpICAgICAgICAgICAoX19t Zm5fdG9fcGFnZShsM2VfZ2V0X3Bmbih4KSkpCj4gLSNkZWZpbmUgbDRlX2dldF9wYWdlKHgpICAg ICAgICAgICAoX19tZm5fdG9fcGFnZShsNGVfZ2V0X3Bmbih4KSkpCj4gKyNkZWZpbmUgbDFlX2dl dF9wYWdlKHgpICAgICAgICAgICAoX19tZm5fdG9fcGFnZShsMWVfZ2V0X21mbih4KSkpCj4gKyNk ZWZpbmUgbDJlX2dldF9wYWdlKHgpICAgICAgICAgICAoX19tZm5fdG9fcGFnZShsMmVfZ2V0X21m bih4KSkpCj4gKyNkZWZpbmUgbDNlX2dldF9wYWdlKHgpICAgICAgICAgICAoX19tZm5fdG9fcGFn ZShsM2VfZ2V0X21mbih4KSkpCj4gKyNkZWZpbmUgbDRlX2dldF9wYWdlKHgpICAgICAgICAgICAo X19tZm5fdG9fcGFnZShsNGVfZ2V0X21mbih4KSkpCj4gCj4gIC8qIEdldCBwdGUgYWNjZXNzIGZs YWdzICh1bnNpZ25lZCBpbnQpLiAqLwo+ICAjZGVmaW5lIGwxZV9nZXRfZmxhZ3MoeCkgICAgICAg ICAgIChnZXRfcHRlX2ZsYWdzKCh4KS5sMSkpCj4gQEAgLTE1NywxMCArMTU3LDEwIEBAIHN0YXRp YyBpbmxpbmUgbDRfcGdlbnRyeV90IGw0ZV9mcm9tX3BhZGRyKHBhZGRyX3QKPiBwYSwgdW5zaWdu ZWQgaW50IGZsYWdzKQo+ICAjZGVmaW5lIGw0ZV9mcm9tX2ludHB0ZShpbnRwdGUpICAgICgobDRf cGdlbnRyeV90KSB7IChpbnRwdGVfdCkoaW50cHRlKSB9KQo+IAo+ICAvKiBDb25zdHJ1Y3QgYSBw dGUgZnJvbSBhIHBhZ2UgcG9pbnRlciBhbmQgYWNjZXNzIGZsYWdzLiAqLwo+IC0jZGVmaW5lIGwx ZV9mcm9tX3BhZ2UocGFnZSwgZmxhZ3MpIGwxZV9mcm9tX3BmbihfX3BhZ2VfdG9fbWZuKHBhZ2Up LAo+IChmbGFncykpCj4gLSNkZWZpbmUgbDJlX2Zyb21fcGFnZShwYWdlLCBmbGFncykgbDJlX2Zy b21fcGZuKF9fcGFnZV90b19tZm4ocGFnZSksCj4gKGZsYWdzKSkKPiAtI2RlZmluZSBsM2VfZnJv bV9wYWdlKHBhZ2UsIGZsYWdzKSBsM2VfZnJvbV9wZm4oX19wYWdlX3RvX21mbihwYWdlKSwKPiAo ZmxhZ3MpKQo+IC0jZGVmaW5lIGw0ZV9mcm9tX3BhZ2UocGFnZSwgZmxhZ3MpIGw0ZV9mcm9tX3Bm bihfX3BhZ2VfdG9fbWZuKHBhZ2UpLAo+IChmbGFncykpCj4gKyNkZWZpbmUgbDFlX2Zyb21fcGFn ZShwYWdlLCBmbGFncykgbDFlX2Zyb21fbWZuKF9fcGFnZV90b19tZm4ocGFnZSksCj4gKGZsYWdz KSkKPiArI2RlZmluZSBsMmVfZnJvbV9wYWdlKHBhZ2UsIGZsYWdzKSBsMmVfZnJvbV9tZm4oX19w YWdlX3RvX21mbihwYWdlKSwKPiAoZmxhZ3MpKQo+ICsjZGVmaW5lIGwzZV9mcm9tX3BhZ2UocGFn ZSwgZmxhZ3MpIGwzZV9mcm9tX21mbihfX3BhZ2VfdG9fbWZuKHBhZ2UpLAo+IChmbGFncykpCj4g KyNkZWZpbmUgbDRlX2Zyb21fcGFnZShwYWdlLCBmbGFncykgbDRlX2Zyb21fbWZuKF9fcGFnZV90 b19tZm4ocGFnZSksCj4gKGZsYWdzKSkKPiAKPiAgLyogQWRkIGV4dHJhIGZsYWdzIHRvIGFuIGV4 aXN0aW5nIHB0ZS4gKi8KPiAgI2RlZmluZSBsMWVfYWRkX2ZsYWdzKHgsIGZsYWdzKSAgICAoKHgp LmwxIHw9IHB1dF9wdGVfZmxhZ3MoZmxhZ3MpKQo+IEBAIC0yMTUsMTMgKzIxNSwxMyBAQCBzdGF0 aWMgaW5saW5lIGw0X3BnZW50cnlfdCBsNGVfZnJvbV9wYWRkcihwYWRkcl90Cj4gcGEsIHVuc2ln bmVkIGludCBmbGFncykKPiAgLyogUGFnZS10YWJsZSB0eXBlLiAqLwo+ICB0eXBlZGVmIHN0cnVj dCB7IHU2NCBwZm47IH0gcGFnZXRhYmxlX3Q7Cj4gICNkZWZpbmUgcGFnZXRhYmxlX2dldF9wYWRk cih4KSAgKChwYWRkcl90KSh4KS5wZm4gPDwgUEFHRV9TSElGVCkKPiAtI2RlZmluZSBwYWdldGFi bGVfZ2V0X3BhZ2UoeCkgICBfX21mbl90b19wYWdlKCh4KS5wZm4pCj4gKyNkZWZpbmUgcGFnZXRh YmxlX2dldF9wYWdlKHgpICAgX19tZm5fdG9fcGFnZShwYWdldGFibGVfZ2V0X21mbih4KSkKPiAg I2RlZmluZSBwYWdldGFibGVfZ2V0X3Bmbih4KSAgICAoKHgpLnBmbikKPiAgI2RlZmluZSBwYWdl dGFibGVfZ2V0X21mbih4KSAgICBfbWZuKCgoeCkucGZuKSkKPiAgI2RlZmluZSBwYWdldGFibGVf aXNfbnVsbCh4KSAgICAoKHgpLnBmbiA9PSAwKQo+ICAjZGVmaW5lIHBhZ2V0YWJsZV9mcm9tX3Bm bihwZm4pICgocGFnZXRhYmxlX3QpIHsgKHBmbikgfSkKPiAgI2RlZmluZSBwYWdldGFibGVfZnJv bV9tZm4obWZuKSAoKHBhZ2V0YWJsZV90KSB7IG1mbl94KG1mbikgfSkKPiAtI2RlZmluZSBwYWdl dGFibGVfZnJvbV9wYWdlKHBnKQo+IHBhZ2V0YWJsZV9mcm9tX3BmbihfX3BhZ2VfdG9fbWZuKHBn KSkKPiArI2RlZmluZSBwYWdldGFibGVfZnJvbV9wYWdlKHBnKQo+IHBhZ2V0YWJsZV9mcm9tX21m bihfX3BhZ2VfdG9fbWZuKHBnKSkKPiAgI2RlZmluZSBwYWdldGFibGVfZnJvbV9wYWRkcihwKSBw YWdldGFibGVfZnJvbV9wZm4oKHApPj5QQUdFX1NISUZUKQo+ICAjZGVmaW5lIHBhZ2V0YWJsZV9u dWxsKCkgICAgICAgIHBhZ2V0YWJsZV9mcm9tX3BmbigwKQo+IAo+IEBAIC0yNDAsMTIgKzI0MCwx MiBAQCB2b2lkIGNvcHlfcGFnZV9zc2UyKHZvaWQgKiwgY29uc3Qgdm9pZCAqKTsKPiAgI2RlZmlu ZSBfX21mbl90b192aXJ0KG1mbikgIChtYWRkcl90b192aXJ0KChwYWRkcl90KShtZm4pIDw8Cj4g UEFHRV9TSElGVCkpCj4gCj4gIC8qIENvbnZlcnQgYmV0d2VlbiBtYWNoaW5lIGZyYW1lIG51bWJl cnMgYW5kIHBhZ2UtaW5mbyBzdHJ1Y3R1cmVzLiAqLwo+IC0jZGVmaW5lIF9fbWZuX3RvX3BhZ2Uo bWZuKSAgKGZyYW1lX3RhYmxlICsgcGZuX3RvX3BkeChtZm4pKQo+IC0jZGVmaW5lIF9fcGFnZV90 b19tZm4ocGcpICAgcGR4X3RvX3BmbigodW5zaWduZWQgbG9uZykoKHBnKSAtCj4gZnJhbWVfdGFi bGUpKQo+ICsjZGVmaW5lIF9fbWZuX3RvX3BhZ2UobWZuKSAgKGZyYW1lX3RhYmxlICsgcGZuX3Rv X3BkeChtZm5feChtZm4pKSkKPiArI2RlZmluZSBfX3BhZ2VfdG9fbWZuKHBnKSAgIF9tZm4ocGR4 X3RvX3BmbigodW5zaWduZWQgbG9uZykoKHBnKSAtCj4gZnJhbWVfdGFibGUpKSkKPiAKPiAgLyog Q29udmVydCBiZXR3ZWVuIG1hY2hpbmUgYWRkcmVzc2VzIGFuZCBwYWdlLWluZm8gc3RydWN0dXJl cy4gKi8KPiAtI2RlZmluZSBfX21hZGRyX3RvX3BhZ2UobWEpIF9fbWZuX3RvX3BhZ2UoKG1hKSA+ PiBQQUdFX1NISUZUKQo+IC0jZGVmaW5lIF9fcGFnZV90b19tYWRkcihwZykgKChwYWRkcl90KV9f cGFnZV90b19tZm4ocGcpIDw8Cj4gUEFHRV9TSElGVCkKPiArI2RlZmluZSBfX21hZGRyX3RvX3Bh Z2UobWEpIF9fbWZuX3RvX3BhZ2UobWFkZHJfdG9fbWZuKG1hKSkKPiArI2RlZmluZSBfX3BhZ2Vf dG9fbWFkZHIocGcpIChtZm5fdG9fbWFkZHIoX19wYWdlX3RvX21mbihwZykpKQo+IAo+ICAvKiBD b252ZXJ0IGJldHdlZW4gZnJhbWUgbnVtYmVyIGFuZCBhZGRyZXNzIGZvcm1hdHMuICAqLwo+ICAj ZGVmaW5lIF9fcGZuX3RvX3BhZGRyKHBmbikgKChwYWRkcl90KShwZm4pIDw8IFBBR0VfU0hJRlQp Cj4gQEAgLTI3Myw4ICsyNzMsOCBAQCB2b2lkIGNvcHlfcGFnZV9zc2UyKHZvaWQgKiwgY29uc3Qg dm9pZCAqKTsKPiAgI2RlZmluZSBwZm5fdG9fcGFkZHIocGZuKSAgIF9fcGZuX3RvX3BhZGRyKHBm bikKPiAgI2RlZmluZSBwYWRkcl90b19wZm4ocGEpICAgIF9fcGFkZHJfdG9fcGZuKHBhKQo+ICAj ZGVmaW5lIHBhZGRyX3RvX3BkeChwYSkgICAgcGZuX3RvX3BkeChwYWRkcl90b19wZm4ocGEpKQo+ IC0jZGVmaW5lIHZtYXBfdG9fbWZuKHZhKSAgICAgbDFlX2dldF9wZm4oKnZpcnRfdG9feGVuX2wx ZSgodW5zaWduZWQKPiBsb25nKSh2YSkpKQo+IC0jZGVmaW5lIHZtYXBfdG9fcGFnZSh2YSkgICAg bWZuX3RvX3BhZ2Uodm1hcF90b19tZm4odmEpKQo+ICsjZGVmaW5lIHZtYXBfdG9fbWZuKHZhKQo+ IF9tZm4obDFlX2dldF9wZm4oKnZpcnRfdG9feGVuX2wxZSgodW5zaWduZWQgbG9uZykodmEpKSkp Cj4gKyNkZWZpbmUgdm1hcF90b19wYWdlKHZhKSAgICBfX21mbl90b19wYWdlKHZtYXBfdG9fbWZu KHZhKSkKPiAKPiAgI2VuZGlmIC8qICFkZWZpbmVkKF9fQVNTRU1CTFlfXykgKi8KPiAKPiBkaWZm IC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL2RvbWFpbl9wYWdlLmgKPiBiL3hlbi9pbmNsdWRlL3hl bi9kb21haW5fcGFnZS5oCj4gaW5kZXggODkwYmFlNWI5Yy4uMjJhYjY1YmExNiAxMDA2NDQKPiAt LS0gYS94ZW4vaW5jbHVkZS94ZW4vZG9tYWluX3BhZ2UuaAo+ICsrKyBiL3hlbi9pbmNsdWRlL3hl bi9kb21haW5fcGFnZS5oCj4gQEAgLTM0LDcgKzM0LDcgQEAgdm9pZCB1bm1hcF9kb21haW5fcGFn ZShjb25zdCB2b2lkICp2YSk7Cj4gIC8qCj4gICAqIEdpdmVuIGEgVkEgZnJvbSBtYXBfZG9tYWlu X3BhZ2UoKSwgcmV0dXJuIGl0cyB1bmRlcmx5aW5nIE1GTi4KPiAgICovCj4gLXVuc2lnbmVkIGxv bmcgZG9tYWluX3BhZ2VfbWFwX3RvX21mbihjb25zdCB2b2lkICp2YSk7Cj4gK21mbl90IGRvbWFp bl9wYWdlX21hcF90b19tZm4oY29uc3Qgdm9pZCAqdmEpOwo+IAo+ICAvKgo+ICAgKiBTaW1pbGFy IHRvIHRoZSBhYm92ZSBjYWxscywgZXhjZXB0IHRoZSBtYXBwaW5nIGlzIGFjY2Vzc2libGUgaW4g YWxsCj4gQEAgLTQ0LDExICs0NCwxMSBAQCB1bnNpZ25lZCBsb25nIGRvbWFpbl9wYWdlX21hcF90 b19tZm4oY29uc3Qgdm9pZAo+ICp2YSk7Cj4gIHZvaWQgKm1hcF9kb21haW5fcGFnZV9nbG9iYWwo bWZuX3QgbWZuKTsKPiAgdm9pZCB1bm1hcF9kb21haW5fcGFnZV9nbG9iYWwoY29uc3Qgdm9pZCAq dmEpOwo+IAo+IC0jZGVmaW5lIF9fbWFwX2RvbWFpbl9wYWdlKHBnKQo+IG1hcF9kb21haW5fcGFn ZShfbWZuKF9fcGFnZV90b19tZm4ocGcpKSkKPiArI2RlZmluZSBfX21hcF9kb21haW5fcGFnZShw ZykKPiBtYXBfZG9tYWluX3BhZ2UoX19wYWdlX3RvX21mbihwZykpCj4gCj4gIHN0YXRpYyBpbmxp bmUgdm9pZCAqX19tYXBfZG9tYWluX3BhZ2VfZ2xvYmFsKGNvbnN0IHN0cnVjdCBwYWdlX2luZm8g KnBnKQo+ICB7Cj4gLSAgICByZXR1cm4gbWFwX2RvbWFpbl9wYWdlX2dsb2JhbChfbWZuKF9fcGFn ZV90b19tZm4ocGcpKSk7Cj4gKyAgICByZXR1cm4gbWFwX2RvbWFpbl9wYWdlX2dsb2JhbChwYWdl X3RvX21mbihwZykpOwo+ICB9Cj4gCj4gICNlbHNlIC8qICFDT05GSUdfRE9NQUlOX1BBR0UgKi8K PiBAQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgKl9fbWFwX2RvbWFpbl9wYWdl X2dsb2JhbChjb25zdAo+IHN0cnVjdCBwYWdlX2luZm8gKnBnKQo+ICAjZGVmaW5lIG1hcF9kb21h aW5fcGFnZShtZm4pICAgICAgICAgICAgICAgIF9fbWZuX3RvX3ZpcnQobWZuX3gobWZuKSkKPiAg I2RlZmluZSBfX21hcF9kb21haW5fcGFnZShwZykgICAgICAgICAgICAgICBwYWdlX3RvX3ZpcnQo cGcpCj4gICNkZWZpbmUgdW5tYXBfZG9tYWluX3BhZ2UodmEpICAgICAgICAgICAgICAgKCh2b2lk KSh2YSkpCj4gLSNkZWZpbmUgZG9tYWluX3BhZ2VfbWFwX3RvX21mbih2YSkgICAgICAgICAgdmly dF90b19tZm4oKHVuc2lnbmVkCj4gbG9uZykodmEpKQo+ICsjZGVmaW5lIGRvbWFpbl9wYWdlX21h cF90b19tZm4odmEpICAgICAgICAgIF9tZm4odmlydF90b19tZm4oKHVuc2lnbmVkCj4gbG9uZyko dmEpKSkKPiAKPiAgc3RhdGljIGlubGluZSB2b2lkICptYXBfZG9tYWluX3BhZ2VfZ2xvYmFsKG1m bl90IG1mbikKPiAgewo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vdG1lbV94ZW4uaCBi L3hlbi9pbmNsdWRlL3hlbi90bWVtX3hlbi5oCj4gaW5kZXggNTQyYzBiM2YyMC4uODUxNmEwYjEz MSAxMDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS94ZW4vdG1lbV94ZW4uaAo+ICsrKyBiL3hlbi9p bmNsdWRlL3hlbi90bWVtX3hlbi5oCj4gQEAgLTI1LDcgKzI1LDcgQEAKPiAgdHlwZWRlZiB1aW50 MzJfdCBwYWdlc2l6ZV90OyAgLyogbGlrZSBzaXplX3QsIG11c3QgaGFuZGxlIGxhcmdlc3QgUEFH RV9TSVpFCj4gKi8KPiAKPiAgI2RlZmluZSBJU19QQUdFX0FMSUdORUQoYWRkcikgSVNfQUxJR05F RCgodW5zaWduZWQgbG9uZykoYWRkciksCj4gUEFHRV9TSVpFKQo+IC0jZGVmaW5lIElTX1ZBTElE X1BBR0UoX3BpKSAgICBtZm5fdmFsaWQoX21mbihwYWdlX3RvX21mbihfcGkpKSkKPiArI2RlZmlu ZSBJU19WQUxJRF9QQUdFKF9waSkgICAgbWZuX3ZhbGlkKHBhZ2VfdG9fbWZuKF9waSkpCj4gCj4g IGV4dGVybiBzdHJ1Y3QgcGFnZV9saXN0X2hlYWQgdG1lbV9wYWdlX2xpc3Q7Cj4gIGV4dGVybiBz cGlubG9ja190IHRtZW1fcGFnZV9saXN0X2xvY2s7Cj4gLS0KPiAyLjExLjAKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBs aXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2 ZWwK