From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v2 9/9] xen: Convert __page_to_mfn and __mfn_to_page to use typesafe MFN Date: Fri, 6 Oct 2017 09:11:22 +0000 Message-ID: <73c55f21a19b4831b011044c43fa9dbb@AMSPEX02CL03.citrite.net> References: <20171005174222.29161-1-julien.grall@linaro.org> <20171005174222.29161-10-julien.grall@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171005174222.29161-10-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+IFNlbnQ6IDA1IE9jdG9iZXIgMjAxNyAxODo0Mgo+ IFRvOiB4ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwo+IENjOiBKdWxpZW4gR3JhbGwgPGp1bGllbi5n cmFsbEBsaW5hcm8ub3JnPjsgU3RlZmFubyBTdGFiZWxsaW5pCj4gPHNzdGFiZWxsaW5pQGtlcm5l bC5vcmc+OyBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPjsgQW5kcmV3Cj4gQ29v cGVyIDxBbmRyZXcuQ29vcGVyM0BjaXRyaXguY29tPjsgR2VvcmdlIER1bmxhcAo+IDxHZW9yZ2Uu RHVubGFwQGNpdHJpeC5jb20+OyBJYW4gSmFja3NvbiA8SWFuLkphY2tzb25AY2l0cml4LmNvbT47 IEphbgo+IEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPjsgS29ucmFkIFJ6ZXN6dXRlayBXaWxr Cj4gPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+OyBUaW0gKFhlbi5vcmcpIDx0aW1AeGVuLm9yZz47 IFdlaSBMaXUKPiA8d2VpLmxpdTJAY2l0cml4LmNvbT47IFJhenZhbiBDb2pvY2FydSA8cmNvam9j YXJ1QGJpdGRlZmVuZGVyLmNvbT47Cj4gVGFtYXMgSyBMZW5neWVsIDx0YW1hc0B0a2xlbmd5ZWwu Y29tPjsgUGF1bCBEdXJyYW50Cj4gPFBhdWwuRHVycmFudEBjaXRyaXguY29tPjsgQm9yaXMgT3N0 cm92c2t5IDxib3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbT47Cj4gU3VyYXZlZSBTdXRoaWt1bHBh bml0IDxzdXJhdmVlLnN1dGhpa3VscGFuaXRAYW1kLmNvbT47IEp1biBOYWthamltYQo+IDxqdW4u bmFrYWppbWFAaW50ZWwuY29tPjsgS2V2aW4gVGlhbiA8a2V2aW4udGlhbkBpbnRlbC5jb20+OyBH ZW9yZ2UKPiBEdW5sYXAgPEdlb3JnZS5EdW5sYXBAY2l0cml4LmNvbT47IEdhbmcgV2VpIDxnYW5n LndlaUBpbnRlbC5jb20+Owo+IFNoYW5lIFdhbmcgPHNoYW5lLndhbmdAaW50ZWwuY29tPgo+IFN1 YmplY3Q6IFtQQVRDSCB2MiA5LzldIHhlbjogQ29udmVydCBfX3BhZ2VfdG9fbWZuIGFuZCBfX21m bl90b19wYWdlCj4gdG8gdXNlIHR5cGVzYWZlIE1GTgo+IAo+IE1vc3Qgb2YgdGhlIHVzZXJzIG9m IHBhZ2VfdG9fbWZuIGFuZCBtZm5fdG9fcGFnZSBhcmUgZWl0aGVyIG92ZXJyaWRpbmcKPiB0aGUg bWFjcm9zIHRvIG1ha2UgdGhlbSB3b3JrIHdpdGggbWZuX3Qgb3IgdXNlIG1mbl94L19tZm4gYmVj YXVzZSB0aGUKPiByZXN0IG9mIHRoZSBmdW5jdGlvbiB1c2UgbWZuX3QuCj4gCj4gU28gbWFrZSBf X3BhZ2VfdG9fbWZuIGFuZCBfX21mbl90b19wYWdlIHJldHVybiBtZm5fdCBieSBkZWZhdWx0Lgo+ IAo+IE9ubHkgcmVhc29uYWJsZSBjbGVhbi11cHMgYXJlIGRvbmUgaW4gdGhpcyBwYXRjaCBiZWNh dXNlIGl0IGlzCj4gYWxyZWFkeSBxdWl0ZSBiaWcuIFNvIHNvbWUgb2YgdGhlIGZpbGVzIG5vdyBv dmVycmlkZSBwYWdlX3RvX21mbiBhbmQKPiBtZm5fdG9fcGFnZSB0byBhdm9pZCB1c2luZyBtZm5f dC4KPiAKPiBMYXN0bHksIGRvbWFpbl9wYWdlX3RvX21mbiBpcyBhbHNvIGNvbnZlcnRlZCB0byB1 c2UgbWZuX3QgZ2l2ZW4gdGhhdAo+IG1vc3Qgb2YgdGhlIGNhbGxlcnMgYXJlIG5vdyBzd2l0Y2hl ZCB0byBfbWZuKGRvbWFpbl9wYWdlX3RvX21mbiguLi4pKS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBK dWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBsaW5hcm8ub3JnPgo+IAo+IC0tLQo+IAo+IEFuZHJl dyBzdWdnZXN0ZWQgdG8gZHJvcCBJU19WQUxJRF9QQUdFIGluIHhlbi90bWVtX3hlbi5oLiBIaXMK PiBjb21tZW50Cj4gd2FzOgo+IAo+ICIvc2lnaCAgVGhpcyBpcyB0YXV0b2xvZ2ljYWwuICBUaGUg ZGVmaW5pdGlvbiBvZiBhICJ2YWxpZCBtZm4iIGluIHRoaXMKPiBjYXNlIGlzIG9uZSBmb3Igd2hp Y2ggd2UgaGF2ZSBmcmFtZXRhYmxlIGVudHJ5LCBhbmQgYnkgaGF2aW5nIGEgc3RydWN0Cj4gcGFn ZV9pbmZvIGluIG91ciBoYW5kcywgdGhpcyBpcyBieSBkZWZpbml0aW9uIHRydWUgKHVubGVzcyB5 b3UgaGF2ZSBhCj4gd2lsZCBwb2ludGVyLCBhdCB3aGljaCBwb2ludCB5b3VyIGJ1ZyBpcyBlbHNl d2hlcmUpLgo+IAo+IElTX1ZBTElEX1BBR0UoKSBpcyBvbmx5IGV2ZXIgdXNlZCBpbiBhc3NlcnRp b25zIGFuZCBuZXZlciB1c2VmdWxseSwgc28KPiBpbnN0ZWFkIEkgd291bGQgcmVtb3ZlIGl0IGVu dGlyZWx5IHJhdGhlciB0aGFuIHRyeWluZyB0byBmaXggaXQgdXAuIgo+IAo+IEkgY2FuIHJlbW92 ZSB0aGUgZnVuY3Rpb24gaW4gYSBzZXBhcmF0ZSBwYXRjaCBhdCB0aGUgYmVnaW5pbmcgb2YgdGhl Cj4gc2VyaWVzIGlmIEtvbnJhZCAoVE1FTSBtYWludGFpbmVyKSBpcyBoYXBweSB3aXRoIHRoYXQu Cj4gCj4gQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KPiBD YzogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KPiBDYzogQW5kcmV3IENvb3Bl ciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KPiBDYzogR2VvcmdlIER1bmxhcCA8R2Vvcmdl LkR1bmxhcEBldS5jaXRyaXguY29tPgo+IENjOiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUu Y2l0cml4LmNvbT4KPiBDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgo+IENjOiBL b25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+Cj4gQ2M6IFRpbSBE ZWVnYW4gPHRpbUB4ZW4ub3JnPgo+IENjOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgo+ IENjOiBSYXp2YW4gQ29qb2NhcnUgPHJjb2pvY2FydUBiaXRkZWZlbmRlci5jb20+Cj4gQ2M6IFRh bWFzIEsgTGVuZ3llbCA8dGFtYXNAdGtsZW5neWVsLmNvbT4KPiBDYzogUGF1bCBEdXJyYW50IDxw YXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KPiBDYzogQm9yaXMgT3N0cm92c2t5IDxib3Jpcy5vc3Ry b3Zza3lAb3JhY2xlLmNvbT4KPiBDYzogU3VyYXZlZSBTdXRoaWt1bHBhbml0IDxzdXJhdmVlLnN1 dGhpa3VscGFuaXRAYW1kLmNvbT4KPiBDYzogSnVuIE5ha2FqaW1hIDxqdW4ubmFrYWppbWFAaW50 ZWwuY29tPgo+IENjOiBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4KPiBDYzogR2Vv cmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBldS5jaXRyaXguY29tPgo+IENjOiBHYW5nIFdlaSA8 Z2FuZy53ZWlAaW50ZWwuY29tPgo+IENjOiBTaGFuZSBXYW5nIDxzaGFuZS53YW5nQGludGVsLmNv bT4KPiAKPiAgICAgQ2hhbmdlcyBpbiB2MjoKPiAgICAgICAgIC0gU29tZSBwYXJ0IGhhdmUgYmVl biBtb3ZlZCBpbiBzZXBhcmF0ZSBwYXRjaAo+ICAgICAgICAgLSBSZW1vdmUgb25lIHNwdXJpb3Vz IGNvbW1lbnQKPiAgICAgICAgIC0gQ29udmVydCBkb21haW5fcGFnZV90b19tZm4gdG8gdXNlIG1m bl90Cj4gLS0tCj4gIHhlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYyAgICAgICAgICAgICB8ICAy IC0tCj4gIHhlbi9hcmNoL2FybS9rZXJuZWwuYyAgICAgICAgICAgICAgICAgICB8ICAyICstCj4g IHhlbi9hcmNoL2FybS9tZW1fYWNjZXNzLmMgICAgICAgICAgICAgICB8ICAyICstCj4gIHhlbi9h cmNoL2FybS9tbS5jICAgICAgICAgICAgICAgICAgICAgICB8ICA4ICsrKystLS0tCj4gIHhlbi9h cmNoL2FybS9wMm0uYyAgICAgICAgICAgICAgICAgICAgICB8ICA4ICstLS0tLS0tCj4gIHhlbi9h cmNoL3g4Ni9jcHUvdnBtdS5jICAgICAgICAgICAgICAgICB8ICA0ICsrLS0KPiAgeGVuL2FyY2gv eDg2L2RvbWFpbi5jICAgICAgICAgICAgICAgICAgIHwgMjEgKysrKysrKysrKystLS0tLS0tLS0t Cj4gIHhlbi9hcmNoL3g4Ni9kb21haW5fcGFnZS5jICAgICAgICAgICAgICB8ICA2ICsrKy0tLQo+ ICB4ZW4vYXJjaC94ODYvZG9tY3RsLmMgICAgICAgICAgICAgICAgICAgfCAgMiArLQo+ICB4ZW4v YXJjaC94ODYvaHZtL2RtLmMgICAgICAgICAgICAgICAgICAgfCAgMiArLQo+ICB4ZW4vYXJjaC94 ODYvaHZtL2RvbTBfYnVpbGQuYyAgICAgICAgICAgfCAgNiArKystLS0KPiAgeGVuL2FyY2gveDg2 L2h2bS9odm0uYyAgICAgICAgICAgICAgICAgIHwgMTQgKysrKysrKy0tLS0tLS0KPiAgeGVuL2Fy Y2gveDg2L2h2bS9pb3JlcS5jICAgICAgICAgICAgICAgIHwgIDYgKysrLS0tCj4gIHhlbi9hcmNo L3g4Ni9odm0vc3RkdmdhLmMgICAgICAgICAgICAgICB8ICAyICstCj4gIHhlbi9hcmNoL3g4Ni9o dm0vc3ZtL3N2bS5jICAgICAgICAgICAgICB8ICA0ICsrLS0KPiAgeGVuL2FyY2gveDg2L2h2bS92 aXJpZGlhbi5jICAgICAgICAgICAgIHwgIDYgKysrLS0tCj4gIHhlbi9hcmNoL3g4Ni9odm0vdm14 L3ZtY3MuYyAgICAgICAgICAgICB8ICAyICstCj4gIHhlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5j ICAgICAgICAgICAgICB8IDEwICsrKysrLS0tLS0KPiAgeGVuL2FyY2gveDg2L2h2bS92bXgvdnZt eC5jICAgICAgICAgICAgIHwgIDYgKysrLS0tCj4gIHhlbi9hcmNoL3g4Ni9tbS5jICAgICAgICAg ICAgICAgICAgICAgICB8ICA2IC0tLS0tLQo+ICB4ZW4vYXJjaC94ODYvbW0vZ3Vlc3Rfd2Fsay5j ICAgICAgICAgICAgfCAgNiArKystLS0KPiAgeGVuL2FyY2gveDg2L21tL2hhcC9ndWVzdF93YWxr LmMgICAgICAgIHwgIDIgKy0KPiAgeGVuL2FyY2gveDg2L21tL2hhcC9oYXAuYyAgICAgICAgICAg ICAgIHwgIDYgLS0tLS0tCj4gIHhlbi9hcmNoL3g4Ni9tbS9oYXAvbmVzdGVkX2VwdC5jICAgICAg ICB8ICAyICstCj4gIHhlbi9hcmNoL3g4Ni9tbS9tZW1fc2hhcmluZy5jICAgICAgICAgICB8ICA1 IC0tLS0tCj4gIHhlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMgICAgICAgICAgICAgICB8ICA0ICsr KysKPiAgeGVuL2FyY2gveDg2L21tL3AybS1wb2QuYyAgICAgICAgICAgICAgIHwgIDYgLS0tLS0t Cj4gIHhlbi9hcmNoL3g4Ni9tbS9wMm0uYyAgICAgICAgICAgICAgICAgICB8ICA2IC0tLS0tLQo+ ICB4ZW4vYXJjaC94ODYvbW0vcGFnaW5nLmMgICAgICAgICAgICAgICAgfCAgNiAtLS0tLS0KPiAg eGVuL2FyY2gveDg2L21tL3NoYWRvdy9wcml2YXRlLmggICAgICAgIHwgMTYgKystLS0tLS0tLS0t LS0tLQo+ICB4ZW4vYXJjaC94ODYvbnVtYS5jICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQo+ ICB4ZW4vYXJjaC94ODYvcGh5c2Rldi5jICAgICAgICAgICAgICAgICAgfCAgMiArLQo+ICB4ZW4v YXJjaC94ODYvcHYvY2FsbGJhY2suYyAgICAgICAgICAgICAgfCAgNiAtLS0tLS0KPiAgeGVuL2Fy Y2gveDg2L3B2L2Rlc2NyaXB0b3ItdGFibGVzLmMgICAgIHwgMTAgLS0tLS0tLS0tLQo+ICB4ZW4v YXJjaC94ODYvcHYvZG9tMF9idWlsZC5jICAgICAgICAgICAgfCAgNiArKysrKysKPiAgeGVuL2Fy Y2gveDg2L3B2L2RvbWFpbi5jICAgICAgICAgICAgICAgIHwgIDYgLS0tLS0tCj4gIHhlbi9hcmNo L3g4Ni9wdi9lbXVsLWdhdGUtb3AuYyAgICAgICAgICB8ICA2IC0tLS0tLQo+ICB4ZW4vYXJjaC94 ODYvcHYvZW11bC1wcml2LW9wLmMgICAgICAgICAgfCAxMCAtLS0tLS0tLS0tCj4gIHhlbi9hcmNo L3g4Ni9wdi9ncmFudF90YWJsZS5jICAgICAgICAgICB8ICA2IC0tLS0tLQo+ICB4ZW4vYXJjaC94 ODYvcHYvbW0uYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQo+ICB4ZW4vYXJjaC94ODYvcHYv cm8tcGFnZS1mYXVsdC5jICAgICAgICAgfCAgNiAtLS0tLS0KPiAgeGVuL2FyY2gveDg2L3NtcGJv b3QuYyAgICAgICAgICAgICAgICAgIHwgIDYgLS0tLS0tCj4gIHhlbi9hcmNoL3g4Ni90Ym9vdC5j ICAgICAgICAgICAgICAgICAgICB8ICA0ICsrLS0KPiAgeGVuL2FyY2gveDg2L3RyYXBzLmMgICAg ICAgICAgICAgICAgICAgIHwgIDIgKy0KPiAgeGVuL2FyY2gveDg2L3g4Nl82NC9tbS5jICAgICAg ICAgICAgICAgIHwgIDYgKysrKysrCj4gIHhlbi9jb21tb24vZG9tYWluLmMgICAgICAgICAgICAg ICAgICAgICB8ICA0ICsrLS0KPiAgeGVuL2NvbW1vbi9ncmFudF90YWJsZS5jICAgICAgICAgICAg ICAgIHwgIDYgKysrKysrCj4gIHhlbi9jb21tb24va2ltYWdlLmMgICAgICAgICAgICAgICAgICAg ICB8ICA2IC0tLS0tLQo+ICB4ZW4vY29tbW9uL21lbW9yeS5jICAgICAgICAgICAgICAgICAgICAg fCAgNiArKysrKysKPiAgeGVuL2NvbW1vbi9wYWdlX2FsbG9jLmMgICAgICAgICAgICAgICAgIHwg IDYgKysrKysrCj4gIHhlbi9jb21tb24vdG1lbS5jICAgICAgICAgICAgICAgICAgICAgICB8ICAy ICstCj4gIHhlbi9jb21tb24vdG1lbV94ZW4uYyAgICAgICAgICAgICAgICAgICB8ICA0IC0tLS0K PiAgeGVuL2NvbW1vbi90cmFjZS5jICAgICAgICAgICAgICAgICAgICAgIHwgIDYgKysrKysrCj4g IHhlbi9jb21tb24vdm1hcC5jICAgICAgICAgICAgICAgICAgICAgICB8ICA5ICsrKysrLS0tLQo+ ICB4ZW4vY29tbW9uL3hlbm9wcm9mLmMgICAgICAgICAgICAgICAgICAgfCAgMiAtLQo+ICB4ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfbWFwLmMgfCAgNiArKysrKysKPiAgeGVuL2Ry aXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYyAgICAgICAgIHwgIDIgKy0KPiAgeGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gveDg2L2lvbW11LmMgICAgIHwgIDIgKy0KPiAgeGVuL2luY2x1ZGUvYXNtLWFy bS9tbS5oICAgICAgICAgICAgICAgIHwgMTYgKysrKysrKysrLS0tLS0tLQo+ICB4ZW4vaW5jbHVk ZS9hc20tYXJtL3AybS5oICAgICAgICAgICAgICAgfCAgNCArKy0tCj4gIHhlbi9pbmNsdWRlL2Fz bS14ODYvbW0uaCAgICAgICAgICAgICAgICB8IDEyICsrKysrKy0tLS0tLQo+ICB4ZW4vaW5jbHVk ZS9hc20teDg2L3AybS5oICAgICAgICAgICAgICAgfCAgMiArLQo+ICB4ZW4vaW5jbHVkZS9hc20t eDg2L3BhZ2UuaCAgICAgICAgICAgICAgfCAzMiArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LS0tLQo+ICB4ZW4vaW5jbHVkZS94ZW4vZG9tYWluX3BhZ2UuaCAgICAgICAgICAgfCAgOCArKysr LS0tLQo+ICB4ZW4vaW5jbHVkZS94ZW4vdG1lbV94ZW4uaCAgICAgICAgICAgICAgfCAgMiArLQo+ ICA2NSBmaWxlcyBjaGFuZ2VkLCAxNjEgaW5zZXJ0aW9ucygrKSwgMjM0IGRlbGV0aW9ucygtKQo+ IAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMgYi94ZW4vYXJjaC9h cm0vZG9tYWluX2J1aWxkLmMKPiBpbmRleCAxNjc3MTFiNGZhLi5hNmI0NzFlMmY2IDEwMDY0NAo+ IC0tLSBhL3hlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYwo+ICsrKyBiL3hlbi9hcmNoL2FybS9k b21haW5fYnVpbGQuYwo+IEBAIC01MCw4ICs1MCw2IEBAIHN0cnVjdCBtYXBfcmFuZ2VfZGF0YQo+ ICAvKiBPdmVycmlkZSBtYWNyb3MgZnJvbSBhc20vcGFnZS5oIHRvIG1ha2UgdGhlbSB3b3JrIHdp dGggbWZuX3QgKi8KPiAgI3VuZGVmIHZpcnRfdG9fbWZuCj4gICNkZWZpbmUgdmlydF90b19tZm4o dmEpIF9tZm4oX192aXJ0X3RvX21mbih2YSkpCj4gLSN1bmRlZiBwYWdlX3RvX21mbgo+IC0jZGVm aW5lIHBhZ2VfdG9fbWZuKHBnKSBfbWZuKF9fcGFnZV90b19tZm4ocGcpKQo+IAo+ICAvLyNkZWZp bmUgREVCVUdfMTFfQUxMT0NBVElPTgo+ICAjaWZkZWYgREVCVUdfMTFfQUxMT0NBVElPTgo+IGRp ZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0va2VybmVsLmMgYi94ZW4vYXJjaC9hcm0va2VybmVsLmMK PiBpbmRleCA5YzE4M2Y5NmRhLi5mMzkxOTM4NjQwIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL2Fy bS9rZXJuZWwuYwo+ICsrKyBiL3hlbi9hcmNoL2FybS9rZXJuZWwuYwo+IEBAIC0yOTUsNyArMjk1 LDcgQEAgc3RhdGljIF9faW5pdCBpbnQga2VybmVsX2RlY29tcHJlc3Moc3RydWN0Cj4gYm9vdG1v ZHVsZSAqbW9kKQo+ICAgICAgICAgIGlvdW5tYXAoaW5wdXQpOwo+ICAgICAgICAgIHJldHVybiAt RU5PTUVNOwo+ICAgICAgfQo+IC0gICAgbWZuID0gX21mbihwYWdlX3RvX21mbihwYWdlcykpOwo+ ICsgICAgbWZuID0gcGFnZV90b19tZm4ocGFnZXMpOwo+ICAgICAgb3V0cHV0ID0gX192bWFwKCZt Zm4sIDEgPDwga2VybmVsX29yZGVyX291dCwgMSwgMSwgUEFHRV9IWVBFUlZJU09SLAo+IFZNQVBf REVGQVVMVCk7Cj4gCj4gICAgICByYyA9IHBlcmZvcm1fZ3VuemlwKG91dHB1dCwgaW5wdXQsIHNp emUpOwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vbWVtX2FjY2Vzcy5jIGIveGVuL2FyY2gv YXJtL21lbV9hY2Nlc3MuYwo+IGluZGV4IDBmMmNiYjgxZDMuLjExMmUyOTFjYmEgMTAwNjQ0Cj4g LS0tIGEveGVuL2FyY2gvYXJtL21lbV9hY2Nlc3MuYwo+ICsrKyBiL3hlbi9hcmNoL2FybS9tZW1f YWNjZXNzLmMKPiBAQCAtMjEwLDcgKzIxMCw3IEBAIHAybV9tZW1fYWNjZXNzX2NoZWNrX2FuZF9n ZXRfcGFnZSh2YWRkcl90Cj4gZ3ZhLCB1bnNpZ25lZCBsb25nIGZsYWcsCj4gICAgICBpZiAoIHQg IT0gcDJtX3JhbV9ydyApCj4gICAgICAgICAgZ290byBlcnI7Cj4gCj4gLSAgICBwYWdlID0gbWZu X3RvX3BhZ2UobWZuX3gobWZuKSk7Cj4gKyAgICBwYWdlID0gbWZuX3RvX3BhZ2UobWZuKTsKPiAK PiAgICAgIGlmICggdW5saWtlbHkoIWdldF9wYWdlKHBhZ2UsIHYtPmRvbWFpbikpICkKPiAgICAg ICAgICBwYWdlID0gTlVMTDsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL21tLmMgYi94ZW4v YXJjaC9hcm0vbW0uYwo+IGluZGV4IDlhMzdmMjljZTYuLmViY2UyMzIwZWMgMTAwNjQ0Cj4gLS0t IGEveGVuL2FyY2gvYXJtL21tLmMKPiArKysgYi94ZW4vYXJjaC9hcm0vbW0uYwo+IEBAIC00Nzcs NyArNDc3LDcgQEAgdm9pZCB1bm1hcF9kb21haW5fcGFnZShjb25zdCB2b2lkICp2YSkKPiAgICAg IGxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKPiAgfQo+IAo+IC11bnNpZ25lZCBsb25nIGRvbWFp bl9wYWdlX21hcF90b19tZm4oY29uc3Qgdm9pZCAqcHRyKQo+ICttZm5fdCBkb21haW5fcGFnZV9t YXBfdG9fbWZuKGNvbnN0IHZvaWQgKnB0cikKPiAgewo+ICAgICAgdW5zaWduZWQgbG9uZyB2YSA9 ICh1bnNpZ25lZCBsb25nKXB0cjsKPiAgICAgIGxwYWVfdCAqbWFwID0gdGhpc19jcHUoeGVuX2Rv bW1hcCk7Cj4gQEAgLTQ4NSwxMiArNDg1LDEyIEBAIHVuc2lnbmVkIGxvbmcgZG9tYWluX3BhZ2Vf bWFwX3RvX21mbihjb25zdAo+IHZvaWQgKnB0cikKPiAgICAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0 ID0gKHZhPj5USElSRF9TSElGVCkgJiBMUEFFX0VOVFJZX01BU0s7Cj4gCj4gICAgICBpZiAoIHZh ID49IFZNQVBfVklSVF9TVEFSVCAmJiB2YSA8IFZNQVBfVklSVF9FTkQgKQo+IC0gICAgICAgIHJl dHVybiBfX3ZpcnRfdG9fbWZuKHZhKTsKPiArICAgICAgICByZXR1cm4gdmlydF90b19tZm4odmEp Owo+IAo+ICAgICAgQVNTRVJUKHNsb3QgPj0gMCAmJiBzbG90IDwgRE9NSEVBUF9FTlRSSUVTKTsK PiAgICAgIEFTU0VSVChtYXBbc2xvdF0ucHQuYXZhaWwgIT0gMCk7Cj4gCj4gLSAgICByZXR1cm4g bWFwW3Nsb3RdLnB0LmJhc2UgKyBvZmZzZXQ7Cj4gKyAgICByZXR1cm4gX21mbihtYXBbc2xvdF0u cHQuYmFzZSArIG9mZnNldCk7Cj4gIH0KPiAgI2VuZGlmCj4gCj4gQEAgLTEyODYsNyArMTI4Niw3 IEBAIGludCB4ZW5tZW1fYWRkX3RvX3BoeXNtYXBfb25lKAo+ICAgICAgICAgICAgICByZXR1cm4g LUVJTlZBTDsKPiAgICAgICAgICB9Cj4gCj4gLSAgICAgICAgbWZuID0gX21mbihwYWdlX3RvX21m bihwYWdlKSk7Cj4gKyAgICAgICAgbWZuID0gcGFnZV90b19tZm4ocGFnZSk7Cj4gICAgICAgICAg dCA9IHAybV9tYXBfZm9yZWlnbjsKPiAKPiAgICAgICAgICByY3VfdW5sb2NrX2RvbWFpbihvZCk7 Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9wMm0uYyBiL3hlbi9hcmNoL2FybS9wMm0uYwo+ IGluZGV4IDA0MTBiMWU4NmIuLjFlN2EwYzZjNDAgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJt L3AybS5jCj4gKysrIGIveGVuL2FyY2gvYXJtL3AybS5jCj4gQEAgLTM4LDEyICszOCw2IEBAIHN0 YXRpYyB1bnNpZ25lZCBpbnQgX19yZWFkX21vc3RseSBtYXhfdm1pZCA9Cj4gTUFYX1ZNSURfOF9C SVQ7Cj4gCj4gICNkZWZpbmUgUDJNX1JPT1RfUEFHRVMgICAgKDE8PFAyTV9ST09UX09SREVSKQo+ IAo+IC0vKiBPdmVycmlkZSBtYWNyb3MgZnJvbSBhc20vbW0uaCB0byBtYWtlIHRoZW0gd29yayB3 aXRoIG1mbl90ICovCj4gLSN1bmRlZiBtZm5fdG9fcGFnZQo+IC0jZGVmaW5lIG1mbl90b19wYWdl KG1mbikgX19tZm5fdG9fcGFnZShtZm5feChtZm4pKQo+IC0jdW5kZWYgcGFnZV90b19tZm4KPiAt I2RlZmluZSBwYWdlX3RvX21mbihwZykgX21mbihfX3BhZ2VfdG9fbWZuKHBnKSkKPiAtCj4gIHVu c2lnbmVkIGludCBfX3JlYWRfbW9zdGx5IHAybV9pcGFfYml0czsKPiAKPiAgLyogSGVscGVycyB0 byBsb29rdXAgdGhlIHByb3BlcnRpZXMgb2YgZWFjaCBsZXZlbCAqLwo+IEBAIC05OCw3ICs5Miw3 IEBAIHZvaWQgZHVtcF9wMm1fbG9va3VwKHN0cnVjdCBkb21haW4gKmQsIHBhZGRyX3QKPiBhZGRy KQo+ICAgICAgcHJpbnRrKCJkb20lZCBJUEEgMHglIlBSSXBhZGRyIlxuIiwgZC0+ZG9tYWluX2lk LCBhZGRyKTsKPiAKPiAgICAgIHByaW50aygiUDJNIEAgJXAgbWZuOjB4JWx4XG4iLAo+IC0gICAg ICAgICAgIHAybS0+cm9vdCwgX19wYWdlX3RvX21mbihwMm0tPnJvb3QpKTsKPiArICAgICAgICAg ICBwMm0tPnJvb3QsIG1mbl94KHBhZ2VfdG9fbWZuKHAybS0+cm9vdCkpKTsKClRoZSBmb3JtYXQg c3BlY2lmaWVyIHNob3VsZCByZWFsbHkgYmUgdXNpbmcgUFJJX21mbiBub3cuIFNhbWUgZ29lcyBm b3Igb3RoZXJzIGJlbG93LgoKPiAKPiAgICAgIGR1bXBfcHRfd2FsayhwYWdlX3RvX21hZGRyKHAy bS0+cm9vdCksIGFkZHIsCj4gICAgICAgICAgICAgICAgICAgUDJNX1JPT1RfTEVWRUwsIFAyTV9S T09UX1BBR0VTKTsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2NwdS92cG11LmMgYi94ZW4v YXJjaC94ODYvY3B1L3ZwbXUuYwo+IGluZGV4IGZkMmZjYWNjMjYuLjM3NmU4MGI2YzcgMTAwNjQ0 Cj4gLS0tIGEveGVuL2FyY2gveDg2L2NwdS92cG11LmMKPiArKysgYi94ZW4vYXJjaC94ODYvY3B1 L3ZwbXUuYwo+IEBAIC02NTcsNyArNjU3LDcgQEAgc3RhdGljIHZvaWQgcHZwbXVfZmluaXNoKHN0 cnVjdCBkb21haW4gKmQsCj4geGVuX3BtdV9wYXJhbXNfdCAqcGFyYW1zKQo+ICB7Cj4gICAgICBz dHJ1Y3QgdmNwdSAqdjsKPiAgICAgIHN0cnVjdCB2cG11X3N0cnVjdCAqdnBtdTsKPiAtICAgIHVp bnQ2NF90IG1mbjsKPiArICAgIG1mbl90IG1mbjsKPiAgICAgIHZvaWQgKnhlbnBtdV9kYXRhOwo+ IAo+ICAgICAgaWYgKCAocGFyYW1zLT52Y3B1ID49IGQtPm1heF92Y3B1cykgfHwgKGQtPnZjcHVb cGFyYW1zLT52Y3B1XSA9PQo+IE5VTEwpICkKPiBAQCAtNjc5LDcgKzY3OSw3IEBAIHN0YXRpYyB2 b2lkIHB2cG11X2ZpbmlzaChzdHJ1Y3QgZG9tYWluICpkLAo+IHhlbl9wbXVfcGFyYW1zX3QgKnBh cmFtcykKPiAgICAgIGlmICggeGVucG11X2RhdGEgKQo+ICAgICAgewo+ICAgICAgICAgIG1mbiA9 IGRvbWFpbl9wYWdlX21hcF90b19tZm4oeGVucG11X2RhdGEpOwo+IC0gICAgICAgIEFTU0VSVCht Zm5fdmFsaWQoX21mbihtZm4pKSk7Cj4gKyAgICAgICAgQVNTRVJUKG1mbl92YWxpZChtZm4pKTsK PiAgICAgICAgICB1bm1hcF9kb21haW5fcGFnZV9nbG9iYWwoeGVucG11X2RhdGEpOwo+ICAgICAg ICAgIHB1dF9wYWdlX2FuZF90eXBlKG1mbl90b19wYWdlKG1mbikpOwo+ICAgICAgfQo+IGRpZmYg LS1naXQgYS94ZW4vYXJjaC94ODYvZG9tYWluLmMgYi94ZW4vYXJjaC94ODYvZG9tYWluLmMKPiBp bmRleCBiYjFmZmEzMjIyLi4zOTVlZjYxNDVhIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9k b21haW4uYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9kb21haW4uYwo+IEBAIC0xODYsNyArMTg2LDcg QEAgdm9pZCBkdW1wX3BhZ2VmcmFtZV9pbmZvKHN0cnVjdCBkb21haW4gKmQpCj4gICAgICAgICAg ICAgICAgICB9Cj4gICAgICAgICAgICAgIH0KPiAgICAgICAgICAgICAgcHJpbnRrKCIgICAgRG9t UGFnZSAlcDogY2FmPSUwOGx4LCB0YWY9JSIgUFJ0eXBlX2luZm8gIlxuIiwKPiAtICAgICAgICAg ICAgICAgICAgIF9wKHBhZ2VfdG9fbWZuKHBhZ2UpKSwKPiArICAgICAgICAgICAgICAgICAgIF9w KG1mbl94KHBhZ2VfdG9fbWZuKHBhZ2UpKSksCj4gICAgICAgICAgICAgICAgICAgICBwYWdlLT5j b3VudF9pbmZvLCBwYWdlLT51LmludXNlLnR5cGVfaW5mbyk7Cj4gICAgICAgICAgfQo+ICAgICAg ICAgIHNwaW5fdW5sb2NrKCZkLT5wYWdlX2FsbG9jX2xvY2spOwo+IEBAIC0xOTksNyArMTk5LDcg QEAgdm9pZCBkdW1wX3BhZ2VmcmFtZV9pbmZvKHN0cnVjdCBkb21haW4gKmQpCj4gICAgICBwYWdl X2xpc3RfZm9yX2VhY2ggKCBwYWdlLCAmZC0+eGVucGFnZV9saXN0ICkKPiAgICAgIHsKPiAgICAg ICAgICBwcmludGsoIiAgICBYZW5QYWdlICVwOiBjYWY9JTA4bHgsIHRhZj0lIiBQUnR5cGVfaW5m byAiXG4iLAo+IC0gICAgICAgICAgICAgICBfcChwYWdlX3RvX21mbihwYWdlKSksCj4gKyAgICAg ICAgICAgICAgIF9wKG1mbl94KHBhZ2VfdG9fbWZuKHBhZ2UpKSksCj4gICAgICAgICAgICAgICAg IHBhZ2UtPmNvdW50X2luZm8sIHBhZ2UtPnUuaW51c2UudHlwZV9pbmZvKTsKPiAgICAgIH0KPiAg ICAgIHNwaW5fdW5sb2NrKCZkLT5wYWdlX2FsbG9jX2xvY2spOwo+IEBAIC02MjEsNyArNjIxLDgg QEAgaW50IGFyY2hfZG9tYWluX3NvZnRfcmVzZXQoc3RydWN0IGRvbWFpbiAqZCkKPiAgICAgIHN0 cnVjdCBwYWdlX2luZm8gKnBhZ2UgPSB2aXJ0X3RvX3BhZ2UoZC0+c2hhcmVkX2luZm8pLCAqbmV3 X3BhZ2U7Cj4gICAgICBpbnQgcmV0ID0gMDsKPiAgICAgIHN0cnVjdCBkb21haW4gKm93bmVyOwo+ IC0gICAgdW5zaWduZWQgbG9uZyBtZm4sIGdmbjsKPiArICAgIG1mbl90IG1mbjsKPiArICAgIHVu c2lnbmVkIGxvbmcgZ2ZuOwo+ICAgICAgcDJtX3R5cGVfdCBwMm10Owo+ICAgICAgdW5zaWduZWQg aW50IGk7Cj4gCj4gQEAgLTY1NSw3ICs2NTYsNyBAQCBpbnQgYXJjaF9kb21haW5fc29mdF9yZXNl dChzdHJ1Y3QgZG9tYWluICpkKQo+ICAgICAgQVNTRVJUKCBvd25lciA9PSBkICk7Cj4gCj4gICAg ICBtZm4gPSBwYWdlX3RvX21mbihwYWdlKTsKPiAtICAgIGdmbiA9IG1mbl90b19nbWZuKGQsIG1m bik7Cj4gKyAgICBnZm4gPSBtZm5fdG9fZ21mbihkLCBtZm5feChtZm4pKTsKPiAKPiAgICAgIC8q Cj4gICAgICAgKiBnZm4gPT0gSU5WQUxJRF9HRk4gaW5kaWNhdGVzIHRoYXQgdGhlIHNoYXJlZF9p bmZvIHBhZ2Ugd2FzIG5ldmVyCj4gbWFwcGVkCj4gQEAgLTY2NCw3ICs2NjUsNyBAQCBpbnQgYXJj aF9kb21haW5fc29mdF9yZXNldChzdHJ1Y3QgZG9tYWluICpkKQo+ICAgICAgaWYgKCBnZm4gPT0g Z2ZuX3goSU5WQUxJRF9HRk4pICkKPiAgICAgICAgICBnb3RvIGV4aXRfcHV0X3BhZ2U7Cj4gCj4g LSAgICBpZiAoIG1mbl94KGdldF9nZm5fcXVlcnkoZCwgZ2ZuLCAmcDJtdCkpICE9IG1mbiApCj4g KyAgICBpZiAoICFtZm5fZXEoZ2V0X2dmbl9xdWVyeShkLCBnZm4sICZwMm10KSwgbWZuKSApCj4g ICAgICB7Cj4gICAgICAgICAgcHJpbnRrKFhFTkxPR19HX0VSUiAiRmFpbGVkIHRvIGdldCBEb20l ZCdzIHNoYXJlZF9pbmZvIEdGTgo+ICglbHgpXG4iLAo+ICAgICAgICAgICAgICAgICBkLT5kb21h aW5faWQsIGdmbik7Cj4gQEAgLTY4MSw3ICs2ODIsNyBAQCBpbnQgYXJjaF9kb21haW5fc29mdF9y ZXNldChzdHJ1Y3QgZG9tYWluICpkKQo+ICAgICAgICAgIGdvdG8gZXhpdF9wdXRfZ2ZuOwo+ICAg ICAgfQo+IAo+IC0gICAgcmV0ID0gZ3Vlc3RfcGh5c21hcF9yZW1vdmVfcGFnZShkLCBfZ2ZuKGdm biksIF9tZm4obWZuKSwKPiBQQUdFX09SREVSXzRLKTsKPiArICAgIHJldCA9IGd1ZXN0X3BoeXNt YXBfcmVtb3ZlX3BhZ2UoZCwgX2dmbihnZm4pLCBtZm4sCj4gUEFHRV9PUkRFUl80Syk7Cj4gICAg ICBpZiAoIHJldCApCj4gICAgICB7Cj4gICAgICAgICAgcHJpbnRrKFhFTkxPR19HX0VSUiAiRmFp bGVkIHRvIHJlbW92ZSBEb20lZCdzIHNoYXJlZF9pbmZvIGZyYW1lCj4gJWx4XG4iLAo+IEBAIC02 OTAsNyArNjkxLDcgQEAgaW50IGFyY2hfZG9tYWluX3NvZnRfcmVzZXQoc3RydWN0IGRvbWFpbiAq ZCkKPiAgICAgICAgICBnb3RvIGV4aXRfcHV0X2dmbjsKPiAgICAgIH0KPiAKPiAtICAgIHJldCA9 IGd1ZXN0X3BoeXNtYXBfYWRkX3BhZ2UoZCwgX2dmbihnZm4pLAo+IF9tZm4ocGFnZV90b19tZm4o bmV3X3BhZ2UpKSwKPiArICAgIHJldCA9IGd1ZXN0X3BoeXNtYXBfYWRkX3BhZ2UoZCwgX2dmbihn Zm4pLCBwYWdlX3RvX21mbihuZXdfcGFnZSksCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFBBR0VfT1JERVJfNEspOwo+ICAgICAgaWYgKCByZXQgKQo+ICAgICAgewo+IEBAIC05 ODgsNyArOTg5LDcgQEAgaW50IGFyY2hfc2V0X2luZm9fZ3Vlc3QoCj4gICAgICAgICAgICAgICAg ICB7Cj4gICAgICAgICAgICAgICAgICAgICAgaWYgKCAocGFnZS0+dS5pbnVzZS50eXBlX2luZm8g JiBQR1RfdHlwZV9tYXNrKSA9PQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgUEdUX2w0X3Bh Z2VfdGFibGUgKQo+IC0gICAgICAgICAgICAgICAgICAgICAgICBkb25lID0gIWZpbGxfcm9fbXB0 KF9tZm4ocGFnZV90b19tZm4ocGFnZSkpKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgZG9u ZSA9ICFmaWxsX3JvX21wdChwYWdlX3RvX21mbihwYWdlKSk7Cj4gCj4gICAgICAgICAgICAgICAg ICAgICAgcGFnZV91bmxvY2socGFnZSk7Cj4gICAgICAgICAgICAgICAgICB9Cj4gQEAgLTExMTQs NyArMTExNSw3IEBAIGludCBhcmNoX3NldF9pbmZvX2d1ZXN0KAo+ICAgICAgICAgIGw0X3BnZW50 cnlfdCAqbDR0YWI7Cj4gCj4gICAgICAgICAgbDR0YWIgPSBtYXBfZG9tYWluX3BhZ2UoX21mbihw YWdldGFibGVfZ2V0X3Bmbih2LQo+ID5hcmNoLmd1ZXN0X3RhYmxlKSkpOwo+IC0gICAgICAgICps NHRhYiA9IGw0ZV9mcm9tX3BmbihwYWdlX3RvX21mbihjcjNfcGFnZSksCj4gKyAgICAgICAgKmw0 dGFiID0gbDRlX2Zyb21fcGZuKG1mbl94KHBhZ2VfdG9fbWZuKGNyM19wYWdlKSksCj4gICAgICAg ICAgICAgIF9QQUdFX1BSRVNFTlR8X1BBR0VfUld8X1BBR0VfVVNFUnxfUEFHRV9BQ0NFU1NFRCk7 Cj4gICAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2UobDR0YWIpOwo+ICAgICAgfQo+IEBAIC0xOTQx LDcgKzE5NDIsNyBAQCBpbnQgZG9tYWluX3JlbGlucXVpc2hfcmVzb3VyY2VzKHN0cnVjdCBkb21h aW4gKmQpCj4gICAgICAgICAgaWYgKCBkLT5hcmNoLnBpcnFfZW9pX21hcCAhPSBOVUxMICkKPiAg ICAgICAgICB7Cj4gICAgICAgICAgICAgIHVubWFwX2RvbWFpbl9wYWdlX2dsb2JhbChkLT5hcmNo LnBpcnFfZW9pX21hcCk7Cj4gLSAgICAgICAgICAgIHB1dF9wYWdlX2FuZF90eXBlKG1mbl90b19w YWdlKGQtPmFyY2gucGlycV9lb2lfbWFwX21mbikpOwo+ICsgICAgICAgICAgICBwdXRfcGFnZV9h bmRfdHlwZShtZm5fdG9fcGFnZShfbWZuKGQtCj4gPmFyY2gucGlycV9lb2lfbWFwX21mbikpKTsK PiAgICAgICAgICAgICAgZC0+YXJjaC5waXJxX2VvaV9tYXAgPSBOVUxMOwo+ICAgICAgICAgICAg ICBkLT5hcmNoLmF1dG9fdW5tYXNrID0gMDsKPiAgICAgICAgICB9Cj4gZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9kb21haW5fcGFnZS5jIGIveGVuL2FyY2gveDg2L2RvbWFpbl9wYWdlLmMKPiBp bmRleCAzNDMyYTg1NGRkLi44ODA0NmIzOWM5IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9k b21haW5fcGFnZS5jCj4gKysrIGIveGVuL2FyY2gveDg2L2RvbWFpbl9wYWdlLmMKPiBAQCAtMzMx LDEzICszMzEsMTMgQEAgdm9pZCB1bm1hcF9kb21haW5fcGFnZV9nbG9iYWwoY29uc3Qgdm9pZCAq cHRyKQo+ICB9Cj4gCj4gIC8qIFRyYW5zbGF0ZSBhIG1hcC1kb21haW4tcGFnZSdkIGFkZHJlc3Mg dG8gdGhlIHVuZGVybHlpbmcgTUZOICovCj4gLXVuc2lnbmVkIGxvbmcgZG9tYWluX3BhZ2VfbWFw X3RvX21mbihjb25zdCB2b2lkICpwdHIpCj4gK21mbl90IGRvbWFpbl9wYWdlX21hcF90b19tZm4o Y29uc3Qgdm9pZCAqcHRyKQo+ICB7Cj4gICAgICB1bnNpZ25lZCBsb25nIHZhID0gKHVuc2lnbmVk IGxvbmcpcHRyOwo+ICAgICAgY29uc3QgbDFfcGdlbnRyeV90ICpwbDFlOwo+IAo+ICAgICAgaWYg KCB2YSA+PSBESVJFQ1RNQVBfVklSVF9TVEFSVCApCj4gLSAgICAgICAgcmV0dXJuIHZpcnRfdG9f bWZuKHB0cik7Cj4gKyAgICAgICAgcmV0dXJuIF9tZm4odmlydF90b19tZm4ocHRyKSk7Cj4gCj4g ICAgICBpZiAoIHZhID49IFZNQVBfVklSVF9TVEFSVCAmJiB2YSA8IFZNQVBfVklSVF9FTkQgKQo+ ICAgICAgewo+IEBAIC0zNTAsNSArMzUwLDUgQEAgdW5zaWduZWQgbG9uZyBkb21haW5fcGFnZV9t YXBfdG9fbWZuKGNvbnN0IHZvaWQKPiAqcHRyKQo+ICAgICAgICAgIHBsMWUgPSAmX19saW5lYXJf bDFfdGFibGVbbDFfbGluZWFyX29mZnNldCh2YSldOwo+ICAgICAgfQo+IAo+IC0gICAgcmV0dXJu IGwxZV9nZXRfcGZuKCpwbDFlKTsKPiArICAgIHJldHVybiBsMWVfZ2V0X21mbigqcGwxZSk7Cj4g IH0KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2RvbWN0bC5jIGIveGVuL2FyY2gveDg2L2Rv bWN0bC5jCj4gaW5kZXggNTQwYmEwODlkNy4uOTI5MmFlNTExOCAxMDA2NDQKPiAtLS0gYS94ZW4v YXJjaC94ODYvZG9tY3RsLmMKPiArKysgYi94ZW4vYXJjaC94ODYvZG9tY3RsLmMKPiBAQCAtNDI5 LDcgKzQyOSw3IEBAIGxvbmcgYXJjaF9kb19kb21jdGwoCj4gICAgICAgICAgewo+ICAgICAgICAg ICAgICBpZiAoIGkgPj0gbWF4X3BmbnMgKQo+ICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gLSAg ICAgICAgICAgIG1mbiA9IHBhZ2VfdG9fbWZuKHBhZ2UpOwo+ICsgICAgICAgICAgICBtZm4gPSBt Zm5feChwYWdlX3RvX21mbihwYWdlKSk7Cj4gICAgICAgICAgICAgIGlmICggY29weV90b19ndWVz dF9vZmZzZXQoZG9tY3RsLT51LmdldG1lbWxpc3QuYnVmZmVyLAo+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGksICZtZm4sIDEpICkKPiAgICAgICAgICAgICAgewo+IGRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2RtLmMgYi94ZW4vYXJjaC94ODYvaHZtL2RtLmMK PiBpbmRleCA5Y2Y1M2I1NTFjLi4xYTgzZjI3YzBiIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4 Ni9odm0vZG0uYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vZG0uYwo+IEBAIC0yMTksNyArMjE5 LDcgQEAgc3RhdGljIGludCBtb2RpZmllZF9tZW1vcnkoc3RydWN0IGRvbWFpbiAqZCwKPiAgICAg ICAgICAgICAgcGFnZSA9IGdldF9wYWdlX2Zyb21fZ2ZuKGQsIHBmbiwgTlVMTCwgUDJNX1VOU0hB UkUpOwo+ICAgICAgICAgICAgICBpZiAoIHBhZ2UgKQo+ICAgICAgICAgICAgICB7Cj4gLSAgICAg ICAgICAgICAgICBtZm5fdCBnbWZuID0gX21mbihwYWdlX3RvX21mbihwYWdlKSk7Cj4gKyAgICAg ICAgICAgICAgICBtZm5fdCBnbWZuID0gcGFnZV90b19tZm4ocGFnZSk7Cj4gCj4gICAgICAgICAg ICAgICAgICBwYWdpbmdfbWFya19kaXJ0eShkLCBnbWZuKTsKPiAgICAgICAgICAgICAgICAgIC8q Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vZG9tMF9idWlsZC5jCj4gYi94ZW4vYXJj aC94ODYvaHZtL2RvbTBfYnVpbGQuYwo+IGluZGV4IGU4Zjc0NmM3MGIuLjc3ODlmNmU1NzEgMTAw NjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L2h2bS9kb20wX2J1aWxkLmMKPiArKysgYi94ZW4vYXJj aC94ODYvaHZtL2RvbTBfYnVpbGQuYwo+IEBAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIGludCBf X2luaXQgcHZoX3BvcHVsYXRlX21lbW9yeV9yYW5nZShzdHJ1Y3QKPiBkb21haW4gKmQsCj4gICAg ICAgICAgICAgIGNvbnRpbnVlOwo+ICAgICAgICAgIH0KPiAKPiAtICAgICAgICByYyA9IGd1ZXN0 X3BoeXNtYXBfYWRkX3BhZ2UoZCwgX2dmbihzdGFydCksCj4gX21mbihwYWdlX3RvX21mbihwYWdl KSksCj4gKyAgICAgICAgcmMgPSBndWVzdF9waHlzbWFwX2FkZF9wYWdlKGQsIF9nZm4oc3RhcnQp LCBwYWdlX3RvX21mbihwYWdlKSwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgb3JkZXIpOwo+ICAgICAgICAgIGlmICggcmMgIT0gMCApCj4gICAgICAgICAgewo+IEBAIC0y NzAsNyArMjcwLDcgQEAgc3RhdGljIGludCBfX2luaXQKPiBwdmhfc2V0dXBfdm14X3JlYWxtb2Rl X2hlbHBlcnMoc3RydWN0IGRvbWFpbiAqZCkKPiAgICAgIH0KPiAgICAgIHdyaXRlXzMyYml0X3Bz ZV9pZGVudG1hcChpZGVudF9wdCk7Cj4gICAgICB1bm1hcF9kb21haW5fcGFnZShpZGVudF9wdCk7 Cj4gLSAgICBwdXRfcGFnZShtZm5fdG9fcGFnZShtZm5feChtZm4pKSk7Cj4gKyAgICBwdXRfcGFn ZShtZm5fdG9fcGFnZShtZm4pKTsKPiAgICAgIGQtPmFyY2guaHZtX2RvbWFpbi5wYXJhbXNbSFZN X1BBUkFNX0lERU5UX1BUXSA9IGdhZGRyOwo+ICAgICAgaWYgKCBwdmhfYWRkX21lbV9yYW5nZShk LCBnYWRkciwgZ2FkZHIgKyBQQUdFX1NJWkUsIEU4MjBfUkVTRVJWRUQpICkKPiAgICAgICAgICAg ICAgcHJpbnRrKCJVbmFibGUgdG8gc2V0IGlkZW50aXR5IHBhZ2UgdGFibGVzIGFzIHJlc2VydmVk IGluIHRoZSBtZW1vcnkKPiBtYXBcbiIpOwo+IEBAIC0yODgsNyArMjg4LDcgQEAgc3RhdGljIHZv aWQgX19pbml0IHB2aF9zdGVhbF9sb3dfcmFtKHN0cnVjdCBkb21haW4KPiAqZCwgdW5zaWduZWQg bG9uZyBzdGFydCwKPiAKPiAgICAgIGZvciAoIG1mbiA9IHN0YXJ0OyBtZm4gPCBzdGFydCArIG5y X3BhZ2VzOyBtZm4rKyApCj4gICAgICB7Cj4gLSAgICAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGcg PSBtZm5fdG9fcGFnZShtZm4pOwo+ICsgICAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnBnID0gbWZu X3RvX3BhZ2UoX21mbihtZm4pKTsKPiAgICAgICAgICBpbnQgcmM7Cj4gCj4gICAgICAgICAgcmMg PSB1bnNoYXJlX3hlbl9wYWdlX3dpdGhfZ3Vlc3QocGcsIGRvbV9pbyk7Cj4gZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCj4gaW5kZXgg MjA1YjRjYjY4NS4uZGM3YTAxOGQxZCAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL2h2 bS5jCj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS9odm0uYwo+IEBAIC0yMjExLDcgKzIyMTEsNyBA QCBpbnQgaHZtX3NldF9jcjAodW5zaWduZWQgbG9uZyB2YWx1ZSwgYm9vbF90Cj4gbWF5X2RlZmVy KQo+ICAgICAgICAgICAgICB2LT5hcmNoLmd1ZXN0X3RhYmxlID0gcGFnZXRhYmxlX2Zyb21fcGFn ZShwYWdlKTsKPiAKPiAgICAgICAgICAgICAgSFZNX0RCR19MT0coREJHX0xFVkVMX1ZNTVUsICJV cGRhdGUgQ1IzIHZhbHVlID0gJWx4LCBtZm4gPQo+ICVseCIsCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgIHYtPmFyY2guaHZtX3ZjcHUuZ3Vlc3RfY3JbM10sIHBhZ2VfdG9fbWZuKHBhZ2UpKTsK PiArICAgICAgICAgICAgICAgICAgICAgICAgdi0+YXJjaC5odm1fdmNwdS5ndWVzdF9jclszXSwg bWZuX3gocGFnZV90b19tZm4ocGFnZSkpKTsKPiAgICAgICAgICB9Cj4gICAgICB9Cj4gICAgICBl bHNlIGlmICggISh2YWx1ZSAmIFg4Nl9DUjBfUEcpICYmIChvbGRfdmFsdWUgJiBYODZfQ1IwX1BH KSApCj4gQEAgLTI1NDYsNyArMjU0Niw3IEBAIHN0YXRpYyB2b2lkICpfaHZtX21hcF9ndWVzdF9m cmFtZSh1bnNpZ25lZAo+IGxvbmcgZ2ZuLCBib29sX3QgcGVybWFuZW50LAo+ICAgICAgICAgIGlm ICggdW5saWtlbHkocDJtX2lzX2Rpc2NhcmRfd3JpdGUocDJtdCkpICkKPiAgICAgICAgICAgICAg KndyaXRhYmxlID0gMDsKPiAgICAgICAgICBlbHNlIGlmICggIXBlcm1hbmVudCApCj4gLSAgICAg ICAgICAgIHBhZ2luZ19tYXJrX2RpcnR5KGQsIF9tZm4ocGFnZV90b19tZm4ocGFnZSkpKTsKPiAr ICAgICAgICAgICAgcGFnaW5nX21hcmtfZGlydHkoZCwgcGFnZV90b19tZm4ocGFnZSkpOwo+ICAg ICAgfQo+IAo+ICAgICAgaWYgKCAhcGVybWFuZW50ICkKPiBAQCAtMjU4OCw3ICsyNTg4LDcgQEAg dm9pZCAqaHZtX21hcF9ndWVzdF9mcmFtZV9ybyh1bnNpZ25lZCBsb25nCj4gZ2ZuLCBib29sX3Qg cGVybWFuZW50KQo+IAo+ICB2b2lkIGh2bV91bm1hcF9ndWVzdF9mcmFtZSh2b2lkICpwLCBib29s X3QgcGVybWFuZW50KQo+ICB7Cj4gLSAgICB1bnNpZ25lZCBsb25nIG1mbjsKPiArICAgIG1mbl90 IG1mbjsKPiAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2U7Cj4gCj4gICAgICBpZiAoICFwICkK PiBAQCAtMjYwOSw3ICsyNjA5LDcgQEAgdm9pZCBodm1fdW5tYXBfZ3Vlc3RfZnJhbWUodm9pZCAq cCwgYm9vbF90Cj4gcGVybWFuZW50KQo+ICAgICAgICAgIGxpc3RfZm9yX2VhY2hfZW50cnkodHJh Y2ssICZkLT5hcmNoLmh2bV9kb21haW4ud3JpdGVfbWFwLmxpc3QsIGxpc3QpCj4gICAgICAgICAg ICAgIGlmICggdHJhY2stPnBhZ2UgPT0gcGFnZSApCj4gICAgICAgICAgICAgIHsKPiAtICAgICAg ICAgICAgICAgIHBhZ2luZ19tYXJrX2RpcnR5KGQsIF9tZm4obWZuKSk7Cj4gKyAgICAgICAgICAg ICAgICBwYWdpbmdfbWFya19kaXJ0eShkLCBtZm4pOwo+ICAgICAgICAgICAgICAgICAgbGlzdF9k ZWwoJnRyYWNrLT5saXN0KTsKPiAgICAgICAgICAgICAgICAgIHhmcmVlKHRyYWNrKTsKPiAgICAg ICAgICAgICAgICAgIGJyZWFrOwo+IEBAIC0yNjI2LDcgKzI2MjYsNyBAQCB2b2lkCj4gaHZtX21h cHBlZF9ndWVzdF9mcmFtZXNfbWFya19kaXJ0eShzdHJ1Y3QgZG9tYWluICpkKQo+IAo+ICAgICAg c3Bpbl9sb2NrKCZkLT5hcmNoLmh2bV9kb21haW4ud3JpdGVfbWFwLmxvY2spOwo+ICAgICAgbGlz dF9mb3JfZWFjaF9lbnRyeSh0cmFjaywgJmQtPmFyY2guaHZtX2RvbWFpbi53cml0ZV9tYXAubGlz dCwgbGlzdCkKPiAtICAgICAgICBwYWdpbmdfbWFya19kaXJ0eShkLCBfbWZuKHBhZ2VfdG9fbWZu KHRyYWNrLT5wYWdlKSkpOwo+ICsgICAgICAgIHBhZ2luZ19tYXJrX2RpcnR5KGQsIHBhZ2VfdG9f bWZuKHRyYWNrLT5wYWdlKSk7Cj4gICAgICBzcGluX3VubG9jaygmZC0+YXJjaC5odm1fZG9tYWlu LndyaXRlX21hcC5sb2NrKTsKPiAgfQo+IAo+IEBAIC0zMjAxLDcgKzMyMDEsNyBAQCBzdGF0aWMg ZW51bSBodm1fdHJhbnNsYXRpb25fcmVzdWx0IF9faHZtX2NvcHkoCj4gICAgICAgICAgICAgICAg ICBpZiAoIHhjaGcoJmxhc3RwYWdlLCBnZm5feChnZm4pKSAhPSBnZm5feChnZm4pICkKPiAgICAg ICAgICAgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19HX0RFQlVHLAo+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIiVwdiBhdHRlbXB0ZWQgd3JpdGUgdG8gcmVhZC1vbmx5IGdmbiAlI2x4 IChtZm49JSNseClcbiIsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LCBnZm5feChn Zm4pLCBwYWdlX3RvX21mbihwYWdlKSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2 LCBnZm5feChnZm4pLCBtZm5feChwYWdlX3RvX21mbihwYWdlKSkpOwo+ICAgICAgICAgICAgICB9 Cj4gICAgICAgICAgICAgIGVsc2UKPiAgICAgICAgICAgICAgewo+IEBAIC0zMjA5LDcgKzMyMDks NyBAQCBzdGF0aWMgZW51bSBodm1fdHJhbnNsYXRpb25fcmVzdWx0IF9faHZtX2NvcHkoCj4gICAg ICAgICAgICAgICAgICAgICAgbWVtY3B5KHAsIGJ1ZiwgY291bnQpOwo+ICAgICAgICAgICAgICAg ICAgZWxzZQo+ICAgICAgICAgICAgICAgICAgICAgIG1lbXNldChwLCAwLCBjb3VudCk7Cj4gLSAg ICAgICAgICAgICAgICBwYWdpbmdfbWFya19kaXJ0eSh2LT5kb21haW4sIF9tZm4ocGFnZV90b19t Zm4ocGFnZSkpKTsKPiArICAgICAgICAgICAgICAgIHBhZ2luZ19tYXJrX2RpcnR5KHYtPmRvbWFp biwgcGFnZV90b19tZm4ocGFnZSkpOwo+ICAgICAgICAgICAgICB9Cj4gICAgICAgICAgfQo+ICAg ICAgICAgIGVsc2UKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jIGIveGVu L2FyY2gveDg2L2h2bS9pb3JlcS5jCj4gaW5kZXggZjJlMGIzZjc0YS4uNWJkNWNkNzg4ZSAxMDA2 NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMKPiArKysgYi94ZW4vYXJjaC94ODYv aHZtL2lvcmVxLmMKPiBAQCAtMjY4LDcgKzI2OCw3IEBAIHN0YXRpYyB2b2lkIGh2bV9yZW1vdmVf aW9yZXFfZ2ZuKAo+ICAgICAgc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGh2bV9pb3JlcV9wYWdl ICppb3JwKQo+ICB7Cj4gICAgICBpZiAoIGd1ZXN0X3BoeXNtYXBfcmVtb3ZlX3BhZ2UoZCwgX2dm bihpb3JwLT5nZm4pLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tZm4o cGFnZV90b19tZm4oaW9ycC0+cGFnZSkpLCAwKSApCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGFnZV90b19tZm4oaW9ycC0+cGFnZSksIDApICkKPiAgICAgICAgICBkb21h aW5fY3Jhc2goZCk7Cj4gICAgICBjbGVhcl9wYWdlKGlvcnAtPnZhKTsKPiAgfQo+IEBAIC0yODEs OSArMjgxLDkgQEAgc3RhdGljIGludCBodm1fYWRkX2lvcmVxX2dmbigKPiAgICAgIGNsZWFyX3Bh Z2UoaW9ycC0+dmEpOwo+IAo+ICAgICAgcmMgPSBndWVzdF9waHlzbWFwX2FkZF9wYWdlKGQsIF9n Zm4oaW9ycC0+Z2ZuKSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbWZuKHBh Z2VfdG9fbWZuKGlvcnAtPnBhZ2UpKSwgMCk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGFnZV90b19tZm4oaW9ycC0+cGFnZSksIDApOwo+ICAgICAgaWYgKCByYyA9PSAwICkK PiAtICAgICAgICBwYWdpbmdfbWFya19kaXJ0eShkLCBfbWZuKHBhZ2VfdG9fbWZuKGlvcnAtPnBh Z2UpKSk7Cj4gKyAgICAgICAgcGFnaW5nX21hcmtfZGlydHkoZCwgcGFnZV90b19tZm4oaW9ycC0+ cGFnZSkpOwo+IAo+ICAgICAgcmV0dXJuIHJjOwo+ICB9Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9odm0vc3RkdmdhLmMgYi94ZW4vYXJjaC94ODYvaHZtL3N0ZHZnYS5jCj4gaW5kZXggMDg4 ZmJkZjhjZS4uOTI1YmFiMjQzOCAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL3N0ZHZn YS5jCj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS9zdGR2Z2EuYwo+IEBAIC01OTAsNyArNTkwLDcg QEAgdm9pZCBzdGR2Z2FfaW5pdChzdHJ1Y3QgZG9tYWluICpkKQo+ICAgICAgICAgIGlmICggcGcg PT0gTlVMTCApCj4gICAgICAgICAgICAgIGJyZWFrOwo+ICAgICAgICAgIHMtPnZyYW1fcGFnZVtp XSA9IHBnOwo+IC0gICAgICAgIGNsZWFyX2RvbWFpbl9wYWdlKF9tZm4ocGFnZV90b19tZm4ocGcp KSk7Cj4gKyAgICAgICAgY2xlYXJfZG9tYWluX3BhZ2UocGFnZV90b19tZm4ocGcpKTsKPiAgICAg IH0KPiAKPiAgICAgIGlmICggaSA9PSBBUlJBWV9TSVpFKHMtPnZyYW1fcGFnZSkgKQo+IGRpZmYg LS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3N2bS9zdm0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vc3Zt L3N2bS5jCj4gaW5kZXggYjljZjQyM2ZkOS4uZjUwZjkzMTU5OCAxMDA2NDQKPiAtLS0gYS94ZW4v YXJjaC94ODYvaHZtL3N2bS9zdm0uYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL3N2bS5j Cj4gQEAgLTE1MjEsNyArMTUyMSw3IEBAIHN0YXRpYyBpbnQgc3ZtX2NwdV91cF9wcmVwYXJlKHVu c2lnbmVkIGludCBjcHUpCj4gICAgICAgICAgaWYgKCAhcGcgKQo+ICAgICAgICAgICAgICBnb3Rv IGVycjsKPiAKPiAtICAgICAgICBjbGVhcl9kb21haW5fcGFnZShfbWZuKHBhZ2VfdG9fbWZuKHBn KSkpOwo+ICsgICAgICAgIGNsZWFyX2RvbWFpbl9wYWdlKHBhZ2VfdG9fbWZuKHBnKSk7Cj4gICAg ICAgICAgKnRoaXNfaHNhID0gcGFnZV90b19tYWRkcihwZyk7Cj4gICAgICB9Cj4gCj4gQEAgLTE1 MzEsNyArMTUzMSw3IEBAIHN0YXRpYyBpbnQgc3ZtX2NwdV91cF9wcmVwYXJlKHVuc2lnbmVkIGlu dCBjcHUpCj4gICAgICAgICAgaWYgKCAhcGcgKQo+ICAgICAgICAgICAgICBnb3RvIGVycjsKPiAK PiAtICAgICAgICBjbGVhcl9kb21haW5fcGFnZShfbWZuKHBhZ2VfdG9fbWZuKHBnKSkpOwo+ICsg ICAgICAgIGNsZWFyX2RvbWFpbl9wYWdlKHBhZ2VfdG9fbWZuKHBnKSk7Cj4gICAgICAgICAgKnRo aXNfdm1jYiA9IHBhZ2VfdG9fbWFkZHIocGcpOwo+ICAgICAgfQo+IAo+IGRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuLmMgYi94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuLmMK PiBpbmRleCBmMGZhNTlkN2Q1Li4wNzA1NTFlMWFiIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4 Ni9odm0vdmlyaWRpYW4uYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4uYwo+IEBA IC0zNTQsNyArMzU0LDcgQEAgc3RhdGljIHZvaWQgZW5hYmxlX2h5cGVyY2FsbF9wYWdlKHN0cnVj dCBkb21haW4gKmQpCj4gICAgICAgICAgaWYgKCBwYWdlICkKPiAgICAgICAgICAgICAgcHV0X3Bh Z2UocGFnZSk7Cj4gICAgICAgICAgZ2RwcmludGsoWEVOTE9HX1dBUk5JTkcsICJCYWQgR01GTiAl IyJQUklfZ2ZuIiAoTUZOCj4gJSMiUFJJX21mbiIpXG4iLAo+IC0gICAgICAgICAgICAgICAgIGdt Zm4sIHBhZ2UgPyBwYWdlX3RvX21mbihwYWdlKSA6IG1mbl94KElOVkFMSURfTUZOKSk7Cj4gKyAg ICAgICAgICAgICAgICAgZ21mbiwgbWZuX3gocGFnZSA/IHBhZ2VfdG9fbWZuKHBhZ2UpIDogSU5W QUxJRF9NRk4pKTsKPiAgICAgICAgICByZXR1cm47Cj4gICAgICB9Cj4gCj4gQEAgLTQxNCw3ICs0 MTQsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplX3ZwX2Fzc2lzdChzdHJ1Y3QgdmNwdSAqdikK PiAKPiAgIGZhaWw6Cj4gICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywgIkJhZCBHTUZOICUj IlBSSV9nZm4iIChNRk4KPiAlIyJQUklfbWZuIilcbiIsIGdtZm4sCj4gLSAgICAgICAgICAgICBw YWdlID8gcGFnZV90b19tZm4ocGFnZSkgOiBtZm5feChJTlZBTElEX01GTikpOwo+ICsgICAgICAg ICAgICAgbWZuX3gocGFnZSA/IHBhZ2VfdG9fbWZuKHBhZ2UpIDogSU5WQUxJRF9NRk4pKTsKPiAg fQo+IAo+ICBzdGF0aWMgdm9pZCB0ZWFyZG93bl92cF9hc3Npc3Qoc3RydWN0IHZjcHUgKnYpCj4g QEAgLTQ5NCw3ICs0OTQsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfcmVmZXJlbmNlX3RzYyhzdHJ1 Y3QgZG9tYWluICpkLAo+IGJvb2xfdCBpbml0aWFsaXplKQo+ICAgICAgICAgIGlmICggcGFnZSAp Cj4gICAgICAgICAgICAgIHB1dF9wYWdlKHBhZ2UpOwo+ICAgICAgICAgIGdkcHJpbnRrKFhFTkxP R19XQVJOSU5HLCAiQmFkIEdNRk4gJSMiUFJJX2dmbiIgKE1GTgo+ICUjIlBSSV9tZm4iKVxuIiwK PiAtICAgICAgICAgICAgICAgICBnbWZuLCBwYWdlID8gcGFnZV90b19tZm4ocGFnZSkgOiBtZm5f eChJTlZBTElEX01GTikpOwo+ICsgICAgICAgICAgICAgICAgIGdtZm4sIG1mbl94KHBhZ2UgPyBw YWdlX3RvX21mbihwYWdlKSA6IElOVkFMSURfTUZOKSk7Cj4gICAgICAgICAgcmV0dXJuOwo+ICAg ICAgfQo+IAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92bWNzLmMgYi94ZW4v YXJjaC94ODYvaHZtL3ZteC92bWNzLmMKPiBpbmRleCBmNjJmZTdlMjE3Li40NzFkMjI0NTM5IDEw MDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZtY3MuYwo+ICsrKyBiL3hlbi9hcmNo L3g4Ni9odm0vdm14L3ZtY3MuYwo+IEBAIC0xNDQxLDcgKzE0NDEsNyBAQCBpbnQgdm14X3ZjcHVf ZW5hYmxlX3BtbChzdHJ1Y3QgdmNwdSAqdikKPiAKPiAgICAgIHZteF92bWNzX2VudGVyKHYpOwo+ IAo+IC0gICAgX192bXdyaXRlKFBNTF9BRERSRVNTLCBwYWdlX3RvX21mbih2LT5hcmNoLmh2bV92 bXgucG1sX3BnKSA8PAo+IFBBR0VfU0hJRlQpOwo+ICsgICAgX192bXdyaXRlKFBNTF9BRERSRVNT LCBwYWdlX3RvX21hZGRyKHYtPmFyY2guaHZtX3ZteC5wbWxfcGcpKTsKPiAgICAgIF9fdm13cml0 ZShHVUVTVF9QTUxfSU5ERVgsIE5SX1BNTF9FTlRSSUVTIC0gMSk7Cj4gCj4gICAgICB2LT5hcmNo Lmh2bV92bXguc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCB8PQo+IFNFQ09OREFSWV9FWEVDX0VOQUJM RV9QTUw7Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jIGIveGVuL2Fy Y2gveDg2L2h2bS92bXgvdm14LmMKPiBpbmRleCA5Y2ZhOWI2OTY1Li40MGI5MTkzM2JmIDEwMDY0 NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jCj4gKysrIGIveGVuL2FyY2gveDg2 L2h2bS92bXgvdm14LmMKPiBAQCAtMjk1MSw3ICsyOTUxLDcgQEAgZ3BfZmF1bHQ6Cj4gIHN0YXRp YyBpbnQgdm14X2FsbG9jX3ZsYXBpY19tYXBwaW5nKHN0cnVjdCBkb21haW4gKmQpCj4gIHsKPiAg ICAgIHN0cnVjdCBwYWdlX2luZm8gKnBnOwo+IC0gICAgdW5zaWduZWQgbG9uZyBtZm47Cj4gKyAg ICBtZm5fdCBtZm47Cj4gCj4gICAgICBpZiAoICFjcHVfaGFzX3ZteF92aXJ0dWFsaXplX2FwaWNf YWNjZXNzZXMgKQo+ICAgICAgICAgIHJldHVybiAwOwo+IEBAIC0yOTYwLDEwICsyOTYwLDEwIEBA IHN0YXRpYyBpbnQgdm14X2FsbG9jX3ZsYXBpY19tYXBwaW5nKHN0cnVjdAo+IGRvbWFpbiAqZCkK PiAgICAgIGlmICggIXBnICkKPiAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPiAgICAgIG1mbiA9 IHBhZ2VfdG9fbWZuKHBnKTsKPiAtICAgIGNsZWFyX2RvbWFpbl9wYWdlKF9tZm4obWZuKSk7Cj4g KyAgICBjbGVhcl9kb21haW5fcGFnZShtZm4pOwo+ICAgICAgc2hhcmVfeGVuX3BhZ2Vfd2l0aF9n dWVzdChwZywgZCwgWEVOU0hBUkVfd3JpdGFibGUpOwo+IC0gICAgZC0+YXJjaC5odm1fZG9tYWlu LnZteC5hcGljX2FjY2Vzc19tZm4gPSBtZm47Cj4gLSAgICBzZXRfbW1pb19wMm1fZW50cnkoZCwg cGFkZHJfdG9fcGZuKEFQSUNfREVGQVVMVF9QSFlTX0JBU0UpLAo+IF9tZm4obWZuKSwKPiArICAg IGQtPmFyY2guaHZtX2RvbWFpbi52bXguYXBpY19hY2Nlc3NfbWZuID0gbWZuX3gobWZuKTsKPiAr ICAgIHNldF9tbWlvX3AybV9lbnRyeShkLCBwYWRkcl90b19wZm4oQVBJQ19ERUZBVUxUX1BIWVNf QkFTRSksCj4gbWZuLAo+ICAgICAgICAgICAgICAgICAgICAgICAgIFBBR0VfT1JERVJfNEssIHAy bV9nZXRfaG9zdHAybShkKS0+ZGVmYXVsdF9hY2Nlc3MpOwo+IAo+ICAgICAgcmV0dXJuIDA7Cj4g QEAgLTI5NzQsNyArMjk3NCw3IEBAIHN0YXRpYyB2b2lkIHZteF9mcmVlX3ZsYXBpY19tYXBwaW5n KHN0cnVjdAo+IGRvbWFpbiAqZCkKPiAgICAgIHVuc2lnbmVkIGxvbmcgbWZuID0gZC0+YXJjaC5o dm1fZG9tYWluLnZteC5hcGljX2FjY2Vzc19tZm47Cj4gCj4gICAgICBpZiAoIG1mbiAhPSAwICkK PiAtICAgICAgICBmcmVlX3NoYXJlZF9kb21oZWFwX3BhZ2UobWZuX3RvX3BhZ2UobWZuKSk7Cj4g KyAgICAgICAgZnJlZV9zaGFyZWRfZG9taGVhcF9wYWdlKG1mbl90b19wYWdlKF9tZm4obWZuKSkp Owo+ICB9Cj4gCj4gIHN0YXRpYyB2b2lkIHZteF9pbnN0YWxsX3ZsYXBpY19tYXBwaW5nKHN0cnVj dCB2Y3B1ICp2KQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92dm14LmMKPiBi L3hlbi9hcmNoL3g4Ni9odm0vdm14L3Z2bXguYwo+IGluZGV4IGNkMGVlMGEzMDcuLjM1ZjdjZGU4 MWEgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L2h2bS92bXgvdnZteC5jCj4gKysrIGIveGVu L2FyY2gveDg2L2h2bS92bXgvdnZteC5jCj4gQEAgLTg0LDcgKzg0LDcgQEAgaW50IG52bXhfdmNw dV9pbml0aWFsaXNlKHN0cnVjdCB2Y3B1ICp2KQo+ICAgICAgICAgIH0KPiAgICAgICAgICB2LT5h cmNoLmh2bV92bXgudm1yZWFkX2JpdG1hcCA9IHZtcmVhZF9iaXRtYXA7Cj4gCj4gLSAgICAgICAg Y2xlYXJfZG9tYWluX3BhZ2UoX21mbihwYWdlX3RvX21mbih2bXJlYWRfYml0bWFwKSkpOwo+ICsg ICAgICAgIGNsZWFyX2RvbWFpbl9wYWdlKHBhZ2VfdG9fbWZuKHZtcmVhZF9iaXRtYXApKTsKPiAK PiAgICAgICAgICB2bXdyaXRlX2JpdG1hcCA9IGFsbG9jX2RvbWhlYXBfcGFnZShOVUxMLCAwKTsK PiAgICAgICAgICBpZiAoICF2bXdyaXRlX2JpdG1hcCApCj4gQEAgLTE3MDQsNyArMTcwNCw3IEBA IGludCBudm14X2hhbmRsZV92bXB0cmxkKHN0cnVjdCBjcHVfdXNlcl9yZWdzCj4gKnJlZ3MpCj4g ICAgICAgICAgICAgICAgICBudmNwdS0+bnZfdnZtY3ggPSB2dm1jeDsKPiAgICAgICAgICAgICAg ICAgIG52Y3B1LT5udl92dm1jeGFkZHIgPSBncGE7Cj4gICAgICAgICAgICAgICAgICB2LT5hcmNo Lmh2bV92bXgudm1jc19zaGFkb3dfbWFkZHIgPQo+IC0gICAgICAgICAgICAgICAgICAgIHBmbl90 b19wYWRkcihkb21haW5fcGFnZV9tYXBfdG9fbWZuKHZ2bWN4KSk7Cj4gKyAgICAgICAgICAgICAg ICAgICAgbWZuX3RvX21hZGRyKGRvbWFpbl9wYWdlX21hcF90b19tZm4odnZtY3gpKTsKPiAgICAg ICAgICAgICAgfQo+ICAgICAgICAgICAgICBlbHNlCj4gICAgICAgICAgICAgIHsKPiBAQCAtMTc5 MCw3ICsxNzkwLDcgQEAgaW50IG52bXhfaGFuZGxlX3ZtY2xlYXIoc3RydWN0IGNwdV91c2VyX3Jl Z3MKPiAqcmVncykKPiAgICAgICAgICB7Cj4gICAgICAgICAgICAgIGlmICggd3JpdGFibGUgKQo+ ICAgICAgICAgICAgICAgICAgY2xlYXJfdnZtY3NfbGF1bmNoZWQoJm52bXgtPmxhdW5jaGVkX2xp c3QsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW5fcGFnZV9t YXBfdG9fbWZuKHZ2bWNzKSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBtZm5feChkb21haW5fcGFnZV9tYXBfdG9fbWZuKHZ2bWNzKSkpOwo+ICAgICAgICAgICAgICBl bHNlCj4gICAgICAgICAgICAgICAgICByYyA9IFZNRkFJTF9WQUxJRDsKPiAgICAgICAgICAgICAg aHZtX3VubWFwX2d1ZXN0X2ZyYW1lKHZ2bWNzLCAwKTsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L21tLmMgYi94ZW4vYXJjaC94ODYvbW0uYwo+IGluZGV4IGQ5ZGY1Y2E2OWYuLjM5MDM4NzIz Y2UgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L21tLmMKPiArKysgYi94ZW4vYXJjaC94ODYv bW0uYwo+IEBAIC0xMjksMTIgKzEyOSw2IEBACj4gCj4gICNpbmNsdWRlICJwdi9tbS5oIgo+IAo+ IC0vKiBPdmVycmlkZSBtYWNyb3MgZnJvbSBhc20vcGFnZS5oIHRvIG1ha2UgdGhlbSB3b3JrIHdp dGggbWZuX3QgKi8KPiAtI3VuZGVmIG1mbl90b19wYWdlCj4gLSNkZWZpbmUgbWZuX3RvX3BhZ2Uo bWZuKSBfX21mbl90b19wYWdlKG1mbl94KG1mbikpCj4gLSN1bmRlZiBwYWdlX3RvX21mbgo+IC0j ZGVmaW5lIHBhZ2VfdG9fbWZuKHBnKSBfbWZuKF9fcGFnZV90b19tZm4ocGcpKQo+IC0KPiAgLyog TWFwcGluZyBvZiB0aGUgZml4bWFwIHNwYWNlIG5lZWRlZCBlYXJseS4gKi8KPiAgbDFfcGdlbnRy eV90IF9fc2VjdGlvbigiLmJzcy5wYWdlX2FsaWduZWQiKSBfX2FsaWduZWQoUEFHRV9TSVpFKQo+ ICAgICAgbDFfZml4bWFwW0wxX1BBR0VUQUJMRV9FTlRSSUVTXTsKPiBkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L21tL2d1ZXN0X3dhbGsuYwo+IGIveGVuL2FyY2gveDg2L21tL2d1ZXN0X3dhbGsu Ywo+IGluZGV4IDYwNTVmZWMxYWQuLmY2N2FlZGEzZDAgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gv eDg2L21tL2d1ZXN0X3dhbGsuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9tbS9ndWVzdF93YWxrLmMK PiBAQCAtNDY5LDIwICs0NjksMjAgQEAgZ3Vlc3Rfd2Fsa190YWJsZXMoc3RydWN0IHZjcHUgKnYs IHN0cnVjdAo+IHAybV9kb21haW4gKnAybSwKPiAgICAgIGlmICggbDNwICkKPiAgICAgIHsKPiAg ICAgICAgICB1bm1hcF9kb21haW5fcGFnZShsM3ApOwo+IC0gICAgICAgIHB1dF9wYWdlKG1mbl90 b19wYWdlKG1mbl94KGd3LT5sM21mbikpKTsKPiArICAgICAgICBwdXRfcGFnZShtZm5fdG9fcGFn ZShndy0+bDNtZm4pKTsKPiAgICAgIH0KPiAgI2VuZGlmCj4gICNpZiBHVUVTVF9QQUdJTkdfTEVW RUxTID49IDMKPiAgICAgIGlmICggbDJwICkKPiAgICAgIHsKPiAgICAgICAgICB1bm1hcF9kb21h aW5fcGFnZShsMnApOwo+IC0gICAgICAgIHB1dF9wYWdlKG1mbl90b19wYWdlKG1mbl94KGd3LT5s Mm1mbikpKTsKPiArICAgICAgICBwdXRfcGFnZShtZm5fdG9fcGFnZShndy0+bDJtZm4pKTsKPiAg ICAgIH0KPiAgI2VuZGlmCj4gICAgICBpZiAoIGwxcCApCj4gICAgICB7Cj4gICAgICAgICAgdW5t YXBfZG9tYWluX3BhZ2UobDFwKTsKPiAtICAgICAgICBwdXRfcGFnZShtZm5fdG9fcGFnZShtZm5f eChndy0+bDFtZm4pKSk7Cj4gKyAgICAgICAgcHV0X3BhZ2UobWZuX3RvX3BhZ2UoZ3ctPmwxbWZu KSk7Cj4gICAgICB9Cj4gCj4gICAgICByZXR1cm4gd2Fsa19vazsKPiBkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L21tL2hhcC9ndWVzdF93YWxrLmMKPiBiL3hlbi9hcmNoL3g4Ni9tbS9oYXAvZ3Vl c3Rfd2Fsay5jCj4gaW5kZXggYzU1MDAxN2JhNC4uY2IzZjljZWJlNyAxMDA2NDQKPiAtLS0gYS94 ZW4vYXJjaC94ODYvbW0vaGFwL2d1ZXN0X3dhbGsuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9tbS9o YXAvZ3Vlc3Rfd2Fsay5jCj4gQEAgLTgzLDcgKzgzLDcgQEAgdW5zaWduZWQgbG9uZwo+IGhhcF9w Mm1fZ2FfdG9fZ2ZuKEdVRVNUX1BBR0lOR19MRVZFTFMpKAo+ICAgICAgICAgICpwZmVjICY9IH5Q RkVDX3BhZ2VfcHJlc2VudDsKPiAgICAgICAgICBnb3RvIG91dF90d2Vha19wZmVjOwo+ICAgICAg fQo+IC0gICAgdG9wX21mbiA9IF9tZm4ocGFnZV90b19tZm4odG9wX3BhZ2UpKTsKPiArICAgIHRv cF9tZm4gPSBwYWdlX3RvX21mbih0b3BfcGFnZSk7Cj4gCj4gICAgICAvKiBNYXAgdGhlIHRvcC1s ZXZlbCB0YWJsZSBhbmQgY2FsbCB0aGUgdHJlZS13YWxrZXIgKi8KPiAgICAgIEFTU0VSVChtZm5f dmFsaWQodG9wX21mbikpOwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vaGFwL2hhcC5j IGIveGVuL2FyY2gveDg2L21tL2hhcC9oYXAuYwo+IGluZGV4IGRjODVlODI4Y2QuLmU0NWMxYTE5 MTMgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L21tL2hhcC9oYXAuYwo+ICsrKyBiL3hlbi9h cmNoL3g4Ni9tbS9oYXAvaGFwLmMKPiBAQCAtNDIsMTIgKzQyLDYgQEAKPiAKPiAgI2luY2x1ZGUg InByaXZhdGUuaCIKPiAKPiAtLyogT3ZlcnJpZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0byBt YWtlIHRoZW0gd29yayB3aXRoIG1mbl90ICovCj4gLSN1bmRlZiBtZm5fdG9fcGFnZQo+IC0jZGVm aW5lIG1mbl90b19wYWdlKF9tKSBfX21mbl90b19wYWdlKG1mbl94KF9tKSkKPiAtI3VuZGVmIHBh Z2VfdG9fbWZuCj4gLSNkZWZpbmUgcGFnZV90b19tZm4oX3BnKSBfbWZuKF9fcGFnZV90b19tZm4o X3BnKSkKPiAtCj4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCj4gIC8qICAgICAgICAgIEhBUCBWUkFNIFRSQUNLSU5HIFNVUFBPUlQgICAgICAgICAg ICovCj4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9oYXAvbmVzdGVkX2VwdC5jCj4gYi94ZW4v YXJjaC94ODYvbW0vaGFwL25lc3RlZF9lcHQuYwo+IGluZGV4IDE0YjFiYjAxZTkuLjE3MzhkZjY5 ZjYgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L21tL2hhcC9uZXN0ZWRfZXB0LmMKPiArKysg Yi94ZW4vYXJjaC94ODYvbW0vaGFwL25lc3RlZF9lcHQuYwo+IEBAIC0xNzMsNyArMTczLDcgQEAg bmVwdF93YWxrX3RhYmxlcyhzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgbG9uZyBsMmdhLAo+IGVw dF93YWxrX3QgKmd3KQo+ICAgICAgICAgICAgICBnb3RvIG1hcF9lcnI7Cj4gICAgICAgICAgZ3ct Pmx4ZVtsdmxdID0gbHhwW2VwdF9sdmxfdGFibGVfb2Zmc2V0KGwyZ2EsIGx2bCldOwo+ICAgICAg ICAgIHVubWFwX2RvbWFpbl9wYWdlKGx4cCk7Cj4gLSAgICAgICAgcHV0X3BhZ2UobWZuX3RvX3Bh Z2UobWZuX3gobHhtZm4pKSk7Cj4gKyAgICAgICAgcHV0X3BhZ2UobWZuX3RvX3BhZ2UobHhtZm4p KTsKPiAKPiAgICAgICAgICBpZiAoIG5lcHRfbm9uX3ByZXNlbnRfY2hlY2soZ3ctPmx4ZVtsdmxd KSApCj4gICAgICAgICAgICAgIGdvdG8gbm9uX3ByZXNlbnQ7Cj4gZGlmZiAtLWdpdCBhL3hlbi9h cmNoL3g4Ni9tbS9tZW1fc2hhcmluZy5jCj4gYi94ZW4vYXJjaC94ODYvbW0vbWVtX3NoYXJpbmcu Ywo+IGluZGV4IDZmNGJlOTU1MTUuLjZlY2YwYjI3ZDUgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gv eDg2L21tL21lbV9zaGFyaW5nLmMKPiArKysgYi94ZW4vYXJjaC94ODYvbW0vbWVtX3NoYXJpbmcu Ywo+IEBAIC0xNTIsMTEgKzE1Miw2IEBAIHN0YXRpYyBpbmxpbmUgc2hyX2hhbmRsZV90IGdldF9u ZXh0X2hhbmRsZSh2b2lkKQo+ICAjZGVmaW5lIG1lbV9zaGFyaW5nX2VuYWJsZWQoZCkgXAo+ICAg ICAgKGlzX2h2bV9kb21haW4oZCkgJiYgKGQpLT5hcmNoLmh2bV9kb21haW4ubWVtX3NoYXJpbmdf ZW5hYmxlZCkKPiAKPiAtI3VuZGVmIG1mbl90b19wYWdlCj4gLSNkZWZpbmUgbWZuX3RvX3BhZ2Uo X20pIF9fbWZuX3RvX3BhZ2UobWZuX3goX20pKQo+IC0jdW5kZWYgcGFnZV90b19tZm4KPiAtI2Rl ZmluZSBwYWdlX3RvX21mbihfcGcpIF9tZm4oX19wYWdlX3RvX21mbihfcGcpKQo+IC0KPiAgc3Rh dGljIGF0b21pY190IG5yX3NhdmVkX21mbnMgICA9IEFUT01JQ19JTklUKDApOwo+ICBzdGF0aWMg YXRvbWljX3QgbnJfc2hhcmVkX21mbnMgID0gQVRPTUlDX0lOSVQoMCk7Cj4gCj4gZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMgYi94ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5j Cj4gaW5kZXggMDU0ODI3YWE4OC4uMjRkZTIwMmExYiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94 ODYvbW0vcDJtLWVwdC5jCj4gKysrIGIveGVuL2FyY2gveDg2L21tL3AybS1lcHQuYwo+IEBAIC0z Myw2ICszMywxMCBAQAo+IAo+ICAjaW5jbHVkZSAibW0tbG9ja3MuaCIKPiAKPiArLyogT3ZlcnJp ZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0byBhdm9pZCB1c2luZyB0eXBlc2FmZSBtZm5fdC4g Ki8KPiArI3VuZGVmIG1mbl90b19wYWdlCj4gKyNkZWZpbmUgbWZuX3RvX3BhZ2UobWZuKSBfX21m bl90b19wYWdlKF9tZm4obWZuKSkKPiArCj4gICNkZWZpbmUgYXRvbWljX3JlYWRfZXB0X2VudHJ5 KF9fcGVwdGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICAgICAgKCAoZXB0X2Vu dHJ5X3QpIHsgLmVwdGUgPSByZWFkX2F0b21pYygmKF9fcGVwdGUpLT5lcHRlKSB9ICkKPiAKPiBk aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3AybS1wb2QuYyBiL3hlbi9hcmNoL3g4Ni9tbS9w Mm0tcG9kLmMKPiBpbmRleCAwYTgxMWNjZjI4Li43YTg4MDc0YzMxIDEwMDY0NAo+IC0tLSBhL3hl bi9hcmNoL3g4Ni9tbS9wMm0tcG9kLmMKPiArKysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLXBvZC5j Cj4gQEAgLTI5LDEyICsyOSw2IEBACj4gCj4gICNpbmNsdWRlICJtbS1sb2Nrcy5oIgo+IAo+IC0v KiBPdmVycmlkZSBtYWNyb3MgZnJvbSBhc20vcGFnZS5oIHRvIG1ha2UgdGhlbSB3b3JrIHdpdGgg bWZuX3QgKi8KPiAtI3VuZGVmIG1mbl90b19wYWdlCj4gLSNkZWZpbmUgbWZuX3RvX3BhZ2UoX20p IF9fbWZuX3RvX3BhZ2UobWZuX3goX20pKQo+IC0jdW5kZWYgcGFnZV90b19tZm4KPiAtI2RlZmlu ZSBwYWdlX3RvX21mbihfcGcpIF9tZm4oX19wYWdlX3RvX21mbihfcGcpKQo+IC0KPiAgI2RlZmlu ZSBzdXBlcnBhZ2VfYWxpZ25lZChfeCkgICgoKF94KSYoU1VQRVJQQUdFX1BBR0VTLTEpKT09MCkK PiAKPiAgLyogRW5mb3JjZSBsb2NrIG9yZGVyaW5nIHdoZW4gZ3JhYmJpbmcgdGhlICJleHRlcm5h bCIgcGFnZV9hbGxvYyBsb2NrICovCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0u YyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwo+IGluZGV4IDNmYmM1MzdkYTYuLjIxOTRiMzViYzcg MTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS5jCj4gKysrIGIveGVuL2FyY2gveDg2 L21tL3AybS5jCj4gQEAgLTQ3LDEyICs0Nyw2IEBAIGJvb2xfdCBfX2luaXRkYXRhIG9wdF9oYXBf MWdiID0gMSwgX19pbml0ZGF0YQo+IG9wdF9oYXBfMm1iID0gMTsKPiAgYm9vbGVhbl9wYXJhbSgi aGFwXzFnYiIsIG9wdF9oYXBfMWdiKTsKPiAgYm9vbGVhbl9wYXJhbSgiaGFwXzJtYiIsIG9wdF9o YXBfMm1iKTsKPiAKPiAtLyogT3ZlcnJpZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0byBtYWtl IHRoZW0gd29yayB3aXRoIG1mbl90ICovCj4gLSN1bmRlZiBtZm5fdG9fcGFnZQo+IC0jZGVmaW5l IG1mbl90b19wYWdlKF9tKSBfX21mbl90b19wYWdlKG1mbl94KF9tKSkKPiAtI3VuZGVmIHBhZ2Vf dG9fbWZuCj4gLSNkZWZpbmUgcGFnZV90b19tZm4oX3BnKSBfbWZuKF9fcGFnZV90b19tZm4oX3Bn KSkKPiAtCj4gIERFRklORV9QRVJDUFVfUldMT0NLX0dMT0JBTChwMm1fcGVyY3B1X3J3bG9jayk7 Cj4gCj4gIC8qIEluaXQgdGhlIGRhdGFzdHJ1Y3R1cmVzIGZvciBsYXRlciB1c2UgYnkgdGhlIHAy bSBjb2RlICovCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wYWdpbmcuYyBiL3hlbi9h cmNoL3g4Ni9tbS9wYWdpbmcuYwo+IGluZGV4IDFlMmM5YmE0Y2MuLmNiOTc2NDJjYmMgMTAwNjQ0 Cj4gLS0tIGEveGVuL2FyY2gveDg2L21tL3BhZ2luZy5jCj4gKysrIGIveGVuL2FyY2gveDg2L21t L3BhZ2luZy5jCj4gQEAgLTQ3LDEyICs0Nyw2IEBACj4gIC8qIFBlci1DUFUgdmFyaWFibGUgZm9y IGVuZm9yY2luZyB0aGUgbG9jayBvcmRlcmluZyAqLwo+ICBERUZJTkVfUEVSX0NQVShpbnQsIG1t X2xvY2tfbGV2ZWwpOwo+IAo+IC0vKiBPdmVycmlkZSBtYWNyb3MgZnJvbSBhc20vcGFnZS5oIHRv IG1ha2UgdGhlbSB3b3JrIHdpdGggbWZuX3QgKi8KPiAtI3VuZGVmIG1mbl90b19wYWdlCj4gLSNk ZWZpbmUgbWZuX3RvX3BhZ2UoX20pIF9fbWZuX3RvX3BhZ2UobWZuX3goX20pKQo+IC0jdW5kZWYg cGFnZV90b19tZm4KPiAtI2RlZmluZSBwYWdlX3RvX21mbihfcGcpIF9tZm4oX19wYWdlX3RvX21m bihfcGcpKQo+IC0KPiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KPiAgLyogICAgICAgICAgICAgIExPRyBESVJUWSBTVVBQT1JUICAgICAgICAgICAg ICAgKi8KPiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3NoYWRvdy9wcml2YXRlLmgKPiBiL3hl bi9hcmNoL3g4Ni9tbS9zaGFkb3cvcHJpdmF0ZS5oCj4gaW5kZXggNmEwMzM3MDQwMi4uYjljYzY4 MGY0ZSAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvbW0vc2hhZG93L3ByaXZhdGUuaAo+ICsr KyBiL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvcHJpdmF0ZS5oCj4gQEAgLTMxNSw3ICszMTUsNyBA QCBzdGF0aWMgaW5saW5lIGludCBwYWdlX2lzX291dF9vZl9zeW5jKHN0cnVjdCBwYWdlX2luZm8K PiAqcCkKPiAKPiAgc3RhdGljIGlubGluZSBpbnQgbWZuX2lzX291dF9vZl9zeW5jKG1mbl90IGdt Zm4pCj4gIHsKPiAtICAgIHJldHVybiBwYWdlX2lzX291dF9vZl9zeW5jKG1mbl90b19wYWdlKG1m bl94KGdtZm4pKSk7Cj4gKyAgICByZXR1cm4gcGFnZV9pc19vdXRfb2Zfc3luYyhtZm5fdG9fcGFn ZShnbWZuKSk7Cj4gIH0KPiAKPiAgc3RhdGljIGlubGluZSBpbnQgcGFnZV9vb3NfbWF5X3dyaXRl KHN0cnVjdCBwYWdlX2luZm8gKnApCj4gQEAgLTMyNiw3ICszMjYsNyBAQCBzdGF0aWMgaW5saW5l IGludCBwYWdlX29vc19tYXlfd3JpdGUoc3RydWN0IHBhZ2VfaW5mbwo+ICpwKQo+IAo+ICBzdGF0 aWMgaW5saW5lIGludCBtZm5fb29zX21heV93cml0ZShtZm5fdCBnbWZuKQo+ICB7Cj4gLSAgICBy ZXR1cm4gcGFnZV9vb3NfbWF5X3dyaXRlKG1mbl90b19wYWdlKG1mbl94KGdtZm4pKSk7Cj4gKyAg ICByZXR1cm4gcGFnZV9vb3NfbWF5X3dyaXRlKG1mbl90b19wYWdlKGdtZm4pKTsKPiAgfQo+ICAj ZW5kaWYgLyogKFNIQURPV19PUFRJTUlaQVRJT05TICYgU0hPUFRfT1VUX09GX1NZTkMpICovCj4g Cj4gQEAgLTQ2NSwxOCArNDY1LDYgQEAgdm9pZCBzaF9yZXNldF9sM191cF9wb2ludGVycyhzdHJ1 Y3QgdmNwdSAqdik7Cj4gICAqIE1GTi9wYWdlLWluZm8gaGFuZGxpbmcKPiAgICovCj4gCj4gLS8q IE92ZXJyaWRlIG1hY3JvcyBmcm9tIGFzbS9wYWdlLmggdG8gbWFrZSB0aGVtIHdvcmsgd2l0aCBt Zm5fdCAqLwo+IC0jdW5kZWYgbWZuX3RvX3BhZ2UKPiAtI2RlZmluZSBtZm5fdG9fcGFnZShfbSkg X19tZm5fdG9fcGFnZShtZm5feChfbSkpCj4gLSN1bmRlZiBwYWdlX3RvX21mbgo+IC0jZGVmaW5l IHBhZ2VfdG9fbWZuKF9wZykgX21mbihfX3BhZ2VfdG9fbWZuKF9wZykpCj4gLQo+IC0vKiBPdmVy cmlkZSBwYWdldGFibGVfdCA8LT4gc3RydWN0IHBhZ2VfaW5mbyBjb252ZXJzaW9ucyB0byB3b3Jr IHdpdGgKPiBtZm5fdCAqLwo+IC0jdW5kZWYgcGFnZXRhYmxlX2dldF9wYWdlCj4gLSNkZWZpbmUg cGFnZXRhYmxlX2dldF9wYWdlKHgpICAgbWZuX3RvX3BhZ2UocGFnZXRhYmxlX2dldF9tZm4oeCkp Cj4gLSN1bmRlZiBwYWdldGFibGVfZnJvbV9wYWdlCj4gLSNkZWZpbmUgcGFnZXRhYmxlX2Zyb21f cGFnZShwZykKPiBwYWdldGFibGVfZnJvbV9tZm4ocGFnZV90b19tZm4ocGcpKQo+IC0KPiAgI2Rl ZmluZSBiYWNrcG9pbnRlcihzcCkgX21mbihwZHhfdG9fcGZuKCh1bnNpZ25lZCBsb25nKShzcCkt PnYuc2guYmFjaykpCj4gIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBfX2JhY2twb2ludGVy KGNvbnN0IHN0cnVjdCBwYWdlX2luZm8gKnNwKQo+ICB7Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9udW1hLmMgYi94ZW4vYXJjaC94ODYvbnVtYS5jCj4gaW5kZXggNGZjOTY3Zjg5My4uYTg3 OTg3ZGE2ZiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvbnVtYS5jCj4gKysrIGIveGVuL2Fy Y2gveDg2L251bWEuYwo+IEBAIC00MzAsNyArNDMwLDcgQEAgc3RhdGljIHZvaWQgZHVtcF9udW1h KHVuc2lnbmVkIGNoYXIga2V5KQo+ICAgICAgICAgIHNwaW5fbG9jaygmZC0+cGFnZV9hbGxvY19s b2NrKTsKPiAgICAgICAgICBwYWdlX2xpc3RfZm9yX2VhY2gocGFnZSwgJmQtPnBhZ2VfbGlzdCkK PiAgICAgICAgICB7Cj4gLSAgICAgICAgICAgIGkgPSBwaHlzX3RvX25pZCgocGFkZHJfdClwYWdl X3RvX21mbihwYWdlKSA8PCBQQUdFX1NISUZUKTsKPiArICAgICAgICAgICAgaSA9IHBoeXNfdG9f bmlkKHBhZ2VfdG9fbWFkZHIocGFnZSkpOwo+ICAgICAgICAgICAgICBwYWdlX251bV9ub2RlW2ld Kys7Cj4gICAgICAgICAgfQo+ICAgICAgICAgIHNwaW5fdW5sb2NrKCZkLT5wYWdlX2FsbG9jX2xv Y2spOwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcGh5c2Rldi5jIGIveGVuL2FyY2gveDg2 L3BoeXNkZXYuYwo+IGluZGV4IDBlYjQwOTc1OGYuLmJhOTUwYWY0YTggMTAwNjQ0Cj4gLS0tIGEv eGVuL2FyY2gveDg2L3BoeXNkZXYuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9waHlzZGV2LmMKPiBA QCAtMjQxLDcgKzI0MSw3IEBAIHJldF90IGRvX3BoeXNkZXZfb3AoaW50IGNtZCwKPiBYRU5fR1VF U1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZykKPiAgICAgICAgICB9Cj4gCj4gICAgICAgICAgaWYg KCBjbXB4Y2hnKCZjdXJyZC0+YXJjaC5waXJxX2VvaV9tYXBfbWZuLAo+IC0gICAgICAgICAgICAg ICAgICAgICAwLCBwYWdlX3RvX21mbihwYWdlKSkgIT0gMCApCj4gKyAgICAgICAgICAgICAgICAg ICAgIDAsIG1mbl94KHBhZ2VfdG9fbWZuKHBhZ2UpKSkgIT0gMCApCj4gICAgICAgICAgewo+ICAg ICAgICAgICAgICBwdXRfcGFnZV9hbmRfdHlwZShwYWdlKTsKPiAgICAgICAgICAgICAgcmV0ID0g LUVCVVNZOwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcHYvY2FsbGJhY2suYyBiL3hlbi9h cmNoL3g4Ni9wdi9jYWxsYmFjay5jCj4gaW5kZXggOTdkODQzODYwMC4uNTk1N2NiNTA4NSAxMDA2 NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvcHYvY2FsbGJhY2suYwo+ICsrKyBiL3hlbi9hcmNoL3g4 Ni9wdi9jYWxsYmFjay5jCj4gQEAgLTMxLDEyICszMSw2IEBACj4gCj4gICNpbmNsdWRlIDxwdWJs aWMvY2FsbGJhY2suaD4KPiAKPiAtLyogT3ZlcnJpZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0 byBtYWtlIHRoZW0gd29yayB3aXRoIG1mbl90ICovCj4gLSN1bmRlZiBtZm5fdG9fcGFnZQo+IC0j ZGVmaW5lIG1mbl90b19wYWdlKG1mbikgX19tZm5fdG9fcGFnZShtZm5feChtZm4pKQo+IC0jdW5k ZWYgcGFnZV90b19tZm4KPiAtI2RlZmluZSBwYWdlX3RvX21mbihwZykgX21mbihfX3BhZ2VfdG9f bWZuKHBnKSkKPiAtCj4gIHN0YXRpYyBpbnQgcmVnaXN0ZXJfZ3Vlc3Rfbm1pX2NhbGxiYWNrKHVu c2lnbmVkIGxvbmcgYWRkcmVzcykKPiAgewo+ICAgICAgc3RydWN0IHZjcHUgKmN1cnIgPSBjdXJy ZW50Owo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcHYvZGVzY3JpcHRvci10YWJsZXMuYwo+ IGIveGVuL2FyY2gveDg2L3B2L2Rlc2NyaXB0b3ItdGFibGVzLmMKPiBpbmRleCA4MTk3M2FmMTI0 Li5mMmIyMGY5OTEwIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9wdi9kZXNjcmlwdG9yLXRh Ymxlcy5jCj4gKysrIGIveGVuL2FyY2gveDg2L3B2L2Rlc2NyaXB0b3ItdGFibGVzLmMKPiBAQCAt MjUsMTYgKzI1LDYgQEAKPiAgI2luY2x1ZGUgPGFzbS9wMm0uaD4KPiAgI2luY2x1ZGUgPGFzbS9w di9tbS5oPgo+IAo+IC0vKiBPdmVycmlkZSBtYWNyb3MgZnJvbSBhc20vcGFnZS5oIHRvIG1ha2Ug dGhlbSB3b3JrIHdpdGggbWZuX3QgKi8KPiAtI3VuZGVmIG1mbl90b19wYWdlCj4gLSNkZWZpbmUg bWZuX3RvX3BhZ2UobWZuKSBfX21mbl90b19wYWdlKG1mbl94KG1mbikpCj4gLSN1bmRlZiBwYWdl X3RvX21mbgo+IC0jZGVmaW5lIHBhZ2VfdG9fbWZuKHBnKSBfbWZuKF9fcGFnZV90b19tZm4ocGcp KQo+IC0KPiAtLyoqKioqKioqKioqKioqKioqKioKPiAtICogRGVzY3JpcHRvciBUYWJsZXMKPiAt ICovCj4gLQoKSXMgdGhlIGNvbW1lbnQgd3Jvbmc/Cgo+ICB2b2lkIHB2X2Rlc3Ryb3lfZ2R0KHN0 cnVjdCB2Y3B1ICp2KQo+ICB7Cj4gICAgICBsMV9wZ2VudHJ5X3QgKnBsMWU7Cj4gZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9wdi9kb20wX2J1aWxkLmMgYi94ZW4vYXJjaC94ODYvcHYvZG9tMF9i dWlsZC5jCj4gaW5kZXggZGNiZWU0M2U4Zi4uZTlhODkzYmE0NyAxMDA2NDQKPiAtLS0gYS94ZW4v YXJjaC94ODYvcHYvZG9tMF9idWlsZC5jCj4gKysrIGIveGVuL2FyY2gveDg2L3B2L2RvbTBfYnVp bGQuYwo+IEBAIC0yMiw2ICsyMiwxMiBAQAo+IAo+ICAjaW5jbHVkZSAibW0uaCIKPiAKPiArLyog T3ZlcnJpZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0byBhdm9pZCB1c2luZyB0eXBlc2FmZSBt Zm5fdC4gKi8KPiArI3VuZGVmIHBhZ2VfdG9fbWZuCj4gKyNkZWZpbmUgcGFnZV90b19tZm4ocGcp IG1mbl94KF9fcGFnZV90b19tZm4ocGcpKQo+ICsjdW5kZWYgbWZuX3RvX3BhZ2UKPiArI2RlZmlu ZSBtZm5fdG9fcGFnZShtZm4pIF9fbWZuX3RvX3BhZ2UoX21mbihtZm4pKQo+ICsKPiAgLyogQWxs b3cgcmluZy0zIGFjY2VzcyBpbiBsb25nIG1vZGUgYXMgZ3Vlc3QgY2Fubm90IHVzZSByaW5nIDEg Li4uICovCj4gICNkZWZpbmUgQkFTRV9QUk9UCj4gKF9QQUdFX1BSRVNFTlR8X1BBR0VfUld8X1BB R0VfQUNDRVNTRUR8X1BBR0VfVVNFUikKPiAgI2RlZmluZSBMMV9QUk9UIChCQVNFX1BST1R8X1BB R0VfR1VFU1RfS0VSTkVMKQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcHYvZG9tYWluLmMg Yi94ZW4vYXJjaC94ODYvcHYvZG9tYWluLmMKPiBpbmRleCA5MGQ1NTY5YmUxLi40Y2EzMjA1ODIx IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9wdi9kb21haW4uYwo+ICsrKyBiL3hlbi9hcmNo L3g4Ni9wdi9kb21haW4uYwo+IEBAIC0xNiwxMiArMTYsNiBAQAo+IAo+ICAjaW5jbHVkZSAibW0u aCIKPiAKPiAtLyogT3ZlcnJpZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0byBtYWtlIHRoZW0g d29yayB3aXRoIG1mbl90ICovCj4gLSN1bmRlZiBtZm5fdG9fcGFnZQo+IC0jZGVmaW5lIG1mbl90 b19wYWdlKG1mbikgX19tZm5fdG9fcGFnZShtZm5feChtZm4pKQo+IC0jdW5kZWYgcGFnZV90b19t Zm4KPiAtI2RlZmluZSBwYWdlX3RvX21mbihwZykgX21mbihfX3BhZ2VfdG9fbWZuKHBnKSkKPiAt Cj4gIHN0YXRpYyB2b2lkIG5vcmV0dXJuIGNvbnRpbnVlX25vbmlkbGVfZG9tYWluKHN0cnVjdCB2 Y3B1ICp2KQo+ICB7Cj4gICAgICBjaGVja193YWtldXBfZnJvbV93YWl0KCk7Cj4gZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9wdi9lbXVsLWdhdGUtb3AuYyBiL3hlbi9hcmNoL3g4Ni9wdi9lbXVs LWdhdGUtCj4gb3AuYwo+IGluZGV4IDBmODljOTFkZmYuLjVjZGI1NGM5MzcgMTAwNjQ0Cj4gLS0t IGEveGVuL2FyY2gveDg2L3B2L2VtdWwtZ2F0ZS1vcC5jCj4gKysrIGIveGVuL2FyY2gveDg2L3B2 L2VtdWwtZ2F0ZS1vcC5jCj4gQEAgLTQxLDEyICs0MSw2IEBACj4gCj4gICNpbmNsdWRlICJlbXVs YXRlLmgiCj4gCj4gLS8qIE92ZXJyaWRlIG1hY3JvcyBmcm9tIGFzbS9wYWdlLmggdG8gbWFrZSB0 aGVtIHdvcmsgd2l0aCBtZm5fdCAqLwo+IC0jdW5kZWYgbWZuX3RvX3BhZ2UKPiAtI2RlZmluZSBt Zm5fdG9fcGFnZShtZm4pIF9fbWZuX3RvX3BhZ2UobWZuX3gobWZuKSkKPiAtI3VuZGVmIHBhZ2Vf dG9fbWZuCj4gLSNkZWZpbmUgcGFnZV90b19tZm4ocGcpIF9tZm4oX19wYWdlX3RvX21mbihwZykp Cj4gLQo+ICBzdGF0aWMgaW50IHJlYWRfZ2F0ZV9kZXNjcmlwdG9yKHVuc2lnbmVkIGludCBnYXRl X3NlbCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdmNw dSAqdiwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKnNl bCwKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3B2L2VtdWwtcHJpdi1vcC5jIGIveGVuL2Fy Y2gveDg2L3B2L2VtdWwtcHJpdi0KPiBvcC5jCj4gaW5kZXggZGQ5MDcxM2FjZi4uOWNjYmQwMjFl ZiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvcHYvZW11bC1wcml2LW9wLmMKPiArKysgYi94 ZW4vYXJjaC94ODYvcHYvZW11bC1wcml2LW9wLmMKPiBAQCAtNDMsMTYgKzQzLDYgQEAKPiAgI2lu Y2x1ZGUgImVtdWxhdGUuaCIKPiAgI2luY2x1ZGUgIm1tLmgiCj4gCj4gLS8qIE92ZXJyaWRlIG1h Y3JvcyBmcm9tIGFzbS9wYWdlLmggdG8gbWFrZSB0aGVtIHdvcmsgd2l0aCBtZm5fdCAqLwo+IC0j dW5kZWYgbWZuX3RvX3BhZ2UKPiAtI2RlZmluZSBtZm5fdG9fcGFnZShtZm4pIF9fbWZuX3RvX3Bh Z2UobWZuX3gobWZuKSkKPiAtI3VuZGVmIHBhZ2VfdG9fbWZuCj4gLSNkZWZpbmUgcGFnZV90b19t Zm4ocGcpIF9tZm4oX19wYWdlX3RvX21mbihwZykpCj4gLQo+IC0vKioqKioqKioqKioqKioqKioq KioqKioKPiAtICogSS9PIGVtdWxhdGlvbiBzdXBwb3J0Cj4gLSAqLwo+IC0KCldoYXQncyB3cm9u ZyB3aXRoIHRoZSBjb21tZW50PwoKPiAgc3RydWN0IHByaXZfb3BfY3R4dCB7Cj4gICAgICBzdHJ1 Y3QgeDg2X2VtdWxhdGVfY3R4dCBjdHh0Owo+ICAgICAgc3RydWN0IHsKPiBkaWZmIC0tZ2l0IGEv eGVuL2FyY2gveDg2L3B2L2dyYW50X3RhYmxlLmMgYi94ZW4vYXJjaC94ODYvcHYvZ3JhbnRfdGFi bGUuYwo+IGluZGV4IGFhY2EyMjhjNmIuLjk3MzIzMzY3YzUgMTAwNjQ0Cj4gLS0tIGEveGVuL2Fy Y2gveDg2L3B2L2dyYW50X3RhYmxlLmMKPiArKysgYi94ZW4vYXJjaC94ODYvcHYvZ3JhbnRfdGFi bGUuYwo+IEBAIC0yNywxMiArMjcsNiBAQAo+IAo+ICAjaW5jbHVkZSAibW0uaCIKPiAKPiAtLyog T3ZlcnJpZGUgbWFjcm9zIGZyb20gYXNtL3BhZ2UuaCB0byBtYWtlIHRoZW0gd29yayB3aXRoIG1m bl90ICovCj4gLSN1bmRlZiBtZm5fdG9fcGFnZQo+IC0jZGVmaW5lIG1mbl90b19wYWdlKG1mbikg X19tZm5fdG9fcGFnZShtZm5feChtZm4pKQo+IC0jdW5kZWYgcGFnZV90b19tZm4KPiAtI2RlZmlu ZSBwYWdlX3RvX21mbihwZykgX21mbihfX3BhZ2VfdG9fbWZuKHBnKSkKPiAtCj4gIHN0YXRpYyB1 bnNpZ25lZCBpbnQgZ3JhbnRfdG9fcHRlX2ZsYWdzKHVuc2lnbmVkIGludCBncmFudF9mbGFncywK PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNh Y2hlX2ZsYWdzKQo+ICB7Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wdi9tbS5jIGIveGVu L2FyY2gveDg2L3B2L21tLmMKPiBpbmRleCBlNDVkNjI4ZGViLi5iZGIwOWJmYTc1IDEwMDY0NAo+ IC0tLSBhL3hlbi9hcmNoL3g4Ni9wdi9tbS5jCj4gKysrIGIveGVuL2FyY2gveDg2L3B2L21tLmMK PiBAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgaW5pdF9ndWVzdF9sNF90YWJsZShsNF9wZ2VudHJ5 X3QgbDR0YWJbXSwgY29uc3QKPiBzdHJ1Y3QgZG9tYWluICpkLAo+ICAgICAgQlVJTERfQlVHX09O KHJvb3RfcGd0X3B2X3hlbl9zbG90cyAhPQo+IFJPT1RfUEFHRVRBQkxFX1BWX1hFTl9TTE9UUyk7 Cj4gICNlbmRpZgo+ICAgICAgbDR0YWJbbDRfdGFibGVfb2Zmc2V0KExJTkVBUl9QVF9WSVJUX1NU QVJUKV0gPQo+IC0gICAgICAgIGw0ZV9mcm9tX3Bmbihkb21haW5fcGFnZV9tYXBfdG9fbWZuKGw0 dGFiKSwKPiBfX1BBR0VfSFlQRVJWSVNPUl9SVyk7Cj4gKyAgICAgICAgbDRlX2Zyb21fbWZuKGRv bWFpbl9wYWdlX21hcF90b19tZm4obDR0YWIpLAo+IF9fUEFHRV9IWVBFUlZJU09SX1JXKTsKPiAg ICAgIGw0dGFiW2w0X3RhYmxlX29mZnNldChQRVJET01BSU5fVklSVF9TVEFSVCldID0KPiAgICAg ICAgICBsNGVfZnJvbV9wYWdlKGQtPmFyY2gucGVyZG9tYWluX2wzX3BnLCBfX1BBR0VfSFlQRVJW SVNPUl9SVyk7Cj4gICAgICBpZiAoIHphcF9yb19tcHQgfHwgaXNfcHZfMzJiaXRfZG9tYWluKGQp ICkKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3B2L3JvLXBhZ2UtZmF1bHQuYyBiL3hlbi9h cmNoL3g4Ni9wdi9yby1wYWdlLQo+IGZhdWx0LmMKPiBpbmRleCA2YjI5NzZkM2RmLi5hN2I3ZWI1 MTEzIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9wdi9yby1wYWdlLWZhdWx0LmMKPiArKysg Yi94ZW4vYXJjaC94ODYvcHYvcm8tcGFnZS1mYXVsdC5jCj4gQEAgLTMzLDEyICszMyw2IEBACj4g ICNpbmNsdWRlICJlbXVsYXRlLmgiCj4gICNpbmNsdWRlICJtbS5oIgo+IAo+IC0vKiBPdmVycmlk ZSBtYWNyb3MgZnJvbSBhc20vcGFnZS5oIHRvIG1ha2UgdGhlbSB3b3JrIHdpdGggbWZuX3QgKi8K PiAtI3VuZGVmIG1mbl90b19wYWdlCj4gLSNkZWZpbmUgbWZuX3RvX3BhZ2UobWZuKSBfX21mbl90 b19wYWdlKG1mbl94KG1mbikpCj4gLSN1bmRlZiBwYWdlX3RvX21mbgo+IC0jZGVmaW5lIHBhZ2Vf dG9fbWZuKHBnKSBfbWZuKF9fcGFnZV90b19tZm4ocGcpKQo+IC0KPiAgLyoqKioqKioqKioqKioq KioqKioqKgo+ICAgKiBXcml0YWJsZSBQYWdldGFibGVzCj4gICAqLwo+IGRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvc21wYm9vdC5jIGIveGVuL2FyY2gveDg2L3NtcGJvb3QuYwo+IGluZGV4IDNj YTcxNmM1OWYuLjY2Mzk2NmJjNzQgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L3NtcGJvb3Qu Ywo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9zbXBib290LmMKPiBAQCAtNDYsMTIgKzQ2LDYgQEAKPiAg I2luY2x1ZGUgPG1hY2hfd2FrZWNwdS5oPgo+ICAjaW5jbHVkZSA8c21wYm9vdF9ob29rcy5oPgo+ IAo+IC0vKiBPdmVycmlkZSBtYWNyb3MgZnJvbSBhc20vcGFnZS5oIHRvIG1ha2UgdGhlbSB3b3Jr IHdpdGggbWZuX3QgKi8KPiAtI3VuZGVmIG1mbl90b19wYWdlCj4gLSNkZWZpbmUgbWZuX3RvX3Bh Z2UobWZuKSBfX21mbl90b19wYWdlKG1mbl94KG1mbikpCj4gLSN1bmRlZiBwYWdlX3RvX21mbgo+ IC0jZGVmaW5lIHBhZ2VfdG9fbWZuKHBnKSBfbWZuKF9fcGFnZV90b19tZm4ocGcpKQo+IC0KPiAg I2RlZmluZSBzZXR1cF90cmFtcG9saW5lKCkKPiAoYm9vdHN5bV9waHlzKHRyYW1wb2xpbmVfcmVh bG1vZGVfZW50cnkpKQo+IAo+ICB1bnNpZ25lZCBsb25nIF9fcmVhZF9tb3N0bHkgdHJhbXBvbGlu ZV9waHlzOwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvdGJvb3QuYyBiL3hlbi9hcmNoL3g4 Ni90Ym9vdC5jCj4gaW5kZXggNTlkN2M0NzdmNC4uZTk1MjJmMDZlYyAxMDA2NDQKPiAtLS0gYS94 ZW4vYXJjaC94ODYvdGJvb3QuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni90Ym9vdC5jCj4gQEAgLTE4 NCw3ICsxODQsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfcGFnZXRhYmxlX21hYyh2bWFjX2N0eF90 ICpjdHgpCj4gCj4gICAgICBmb3IgKCBtZm4gPSAwOyBtZm4gPCBtYXhfcGFnZTsgbWZuKysgKQo+ ICAgICAgewo+IC0gICAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UgPSBtZm5fdG9fcGFnZSht Zm4pOwo+ICsgICAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UgPSBtZm5fdG9fcGFnZShfbWZu KG1mbikpOwo+IAo+ICAgICAgICAgIGlmICggIW1mbl92YWxpZChfbWZuKG1mbikpICkKPiAgICAg ICAgICAgICAgY29udGludWU7Cj4gQEAgLTI3Niw3ICsyNzYsNyBAQCBzdGF0aWMgdm9pZCB0Ym9v dF9nZW5feGVuaGVhcF9pbnRlZ3JpdHkoY29uc3QKPiB1aW50OF90IGtleVtUQl9LRVlfU0laRV0s Cj4gICAgICB2bWFjX3NldF9rZXkoKHVpbnQ4X3QgKilrZXksICZjdHgpOwo+ICAgICAgZm9yICgg bWZuID0gMDsgbWZuIDwgbWF4X3BhZ2U7IG1mbisrICkKPiAgICAgIHsKPiAtICAgICAgICBzdHJ1 Y3QgcGFnZV9pbmZvICpwYWdlID0gX19tZm5fdG9fcGFnZShtZm4pOwo+ICsgICAgICAgIHN0cnVj dCBwYWdlX2luZm8gKnBhZ2UgPSBtZm5fdG9fcGFnZShfbWZuKG1mbikpOwo+IAo+ICAgICAgICAg IGlmICggIW1mbl92YWxpZChfbWZuKG1mbikpICkKPiAgICAgICAgICAgICAgY29udGludWU7Cj4g ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni90cmFwcy5jIGIveGVuL2FyY2gveDg2L3RyYXBzLmMK PiBpbmRleCA4NjUwNmYzNzQ3Li5iODUzOTRkMWY5IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4 Ni90cmFwcy5jCj4gKysrIGIveGVuL2FyY2gveDg2L3RyYXBzLmMKPiBAQCAtODExLDcgKzgxMSw3 IEBAIGludCB3cm1zcl9oeXBlcnZpc29yX3JlZ3ModWludDMyX3QgaWR4LCB1aW50NjRfdCB2YWwp Cj4gCj4gICAgICAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19XQVJOSU5HLAo+ICAgICAgICAgICAg ICAgICAgICAgICAiQmFkIEdNRk4gJWx4IChNRk4gJWx4KSB0byBNU1IgJTA4eFxuIiwKPiAtICAg ICAgICAgICAgICAgICAgICAgZ21mbiwgcGFnZSA/IHBhZ2VfdG9fbWZuKHBhZ2UpIDogLTFVTCwg YmFzZSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgIGdtZm4sIHBhZ2UgPyBtZm5feChwYWdlX3Rv X21mbihwYWdlKSkgOiAtMVVMLCBiYXNlKTsKCldvdWxkIHRoaXMgbm90IGJlIGJldHRlciBhcyBt Zm5feChwYWdlID8gcGFnZV90b19tZm4ocGFnZSkgOiBJTlZBTElEX01GTiksIGFzIHlvdSBoYXZl IGRvbmUgZWxzZXdoZXJlPwoKICBQYXVsCgo+ICAgICAgICAgICAgICByZXR1cm4gMDsKPiAgICAg ICAgICB9Cj4gCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfNjQvbW0uYyBiL3hlbi9h cmNoL3g4Ni94ODZfNjQvbW0uYwo+IGluZGV4IDExNzQ2NzMwYjQuLjk3MWNjZmNiYmUgMTAwNjQ0 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+IGluZGV4IDZkMjBiMTc3MzkuLjJhZmRl NTk2ZDkgMTAwNjQ0Cj4gLS0tIGEveGVuL2NvbW1vbi9ncmFudF90YWJsZS5jCj4gKysrIGIveGVu 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 ZGV4IDQ3MmM2ZmUzMjkuLjVlN2Q3NGUyNzQgMTAwNjQ0Cj4gLS0tIGEveGVuL2NvbW1vbi9wYWdl X2FsbG9jLmMKPiArKysgYi94ZW4vY29tbW9uL3BhZ2VfYWxsb2MuYwo+IEBAIC0xNTAsNiArMTUw LDEyIEBACj4gICNkZWZpbmUgcDJtX3BvZF9vZmZsaW5lX29yX2Jyb2tlbl9yZXBsYWNlKHBnKSBC VUdfT04ocGcgIT0gTlVMTCkKPiAgI2VuZGlmCj4gCj4gKy8qIE92ZXJyaWRlIG1hY3JvcyBmcm9t IGFzbS9wYWdlLmggdG8gYXZvaWQgdXNpbmcgdHlwZXNhZmUgbWZuX3QuICovCj4gKyN1bmRlZiBw YWdlX3RvX21mbgo+ICsjZGVmaW5lIHBhZ2VfdG9fbWZuKHBnKSBtZm5feChfX3BhZ2VfdG9fbWZu KHBnKSkKPiArI3VuZGVmIG1mbl90b19wYWdlCj4gKyNkZWZpbmUgbWZuX3RvX3BhZ2UobWZuKSBf X21mbl90b19wYWdlKF9tZm4obWZuKSkKPiArCj4gIC8qCj4gICAqIENvbW1hLXNlcGFyYXRlZCBs aXN0IG9mIGhleGFkZWNpbWFsIHBhZ2UgbnVtYmVycyBjb250YWluaW5nIGJhZAo+IGJ5dGVzLgo+ ICAgKiBlLmcuICdiYWRwYWdlPTB4M2Y0NSwweDhhMzIxJy4KPiBkaWZmIC0tZ2l0IGEveGVuL2Nv bW1vbi90bWVtLmMgYi94ZW4vY29tbW9uL3RtZW0uYwo+IGluZGV4IGM5NTVjZjcxNjcuLjFhZGI5 NmYwMGMgMTAwNjQ0Cj4gLS0tIGEveGVuL2NvbW1vbi90bWVtLmMKPiArKysgYi94ZW4vY29tbW9u 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+IGluZGV4IGYyZTBmNDk4YzQuLjk4NGY1NGMzZmEgMTAwNjQ0Cj4gLS0t IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9tbS5oCj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9t bS5oCj4gQEAgLTI1OSw3ICsyNTksNyBAQCBzdHJ1Y3QgcGFnZV9pbmZvCj4gCj4gICNkZWZpbmUg aXNfeGVuX2hlYXBfcGFnZShwYWdlKSAoKHBhZ2UpLT5jb3VudF9pbmZvICYgUEdDX3hlbl9oZWFw KQo+ICAjZGVmaW5lIGlzX3hlbl9oZWFwX21mbihtZm4pIFwKPiAtICAgIChfX21mbl92YWxpZCht Zm4pICYmIGlzX3hlbl9oZWFwX3BhZ2UoX19tZm5fdG9fcGFnZShtZm4pKSkKPiArICAgIChfX21m bl92YWxpZChtZm4pICYmCj4gaXNfeGVuX2hlYXBfcGFnZShfX21mbl90b19wYWdlKF9tZm4obWZu KSkpKQo+ICAjZGVmaW5lIGlzX3hlbl9maXhlZF9tZm4obWZuKSAgICAgICAgICAgICAgICAgICAg IFwKPiAgICAgICgoKChtZm4pIDw8IFBBR0VfU0hJRlQpID49IF9fcGEoJl9zdGV4dCkpICYmICBc Cj4gICAgICAgKCgobWZuKSA8PCBQQUdFX1NISUZUKSA8PSBfX3BhKCZfXzJNX3J3ZGF0YV9lbmQp KSkKPiBAQCAtMzY5LDcgKzM2OSw3IEBAIHZvaWQgcHV0X3BhZ2VfZnJvbV9sMWUobDFfcGdlbnRy eV90IGwxZSwgc3RydWN0Cj4gZG9tYWluICpsMWVfb3duZXIpOwo+IAo+ICBzdGF0aWMgaW5saW5l IGJvb2wgZ2V0X3BhZ2VfZnJvbV9tZm4obWZuX3QgbWZuLCBzdHJ1Y3QgZG9tYWluICpkKQo+ICB7 Cj4gLSAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlID0gX19tZm5fdG9fcGFnZShtZm5feChtZm4p KTsKPiArICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UgPSBfX21mbl90b19wYWdlKG1mbik7Cj4g Cj4gICAgICBpZiAoIHVubGlrZWx5KCFtZm5fdmFsaWQobWZuKSkgfHwgdW5saWtlbHkoIWdldF9w YWdlKHBhZ2UsIGQpKSApCj4gICAgICB7Cj4gQEAgLTQ2MywxMCArNDYzLDEwIEBAIGV4dGVybiBw 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+IGluZGV4IDcwZjAwYzMzMmYuLjE4ZWFjNTM3YzkgMTAwNjQ0Cj4gLS0t IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaAo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYv cDJtLmgKPiBAQCAtNDgwLDcgKzQ4MCw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IHBhZ2VfaW5m 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