From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v2 1/3] x86: remove PVHv1 code Date: Wed, 1 Mar 2017 13:20:24 +0000 Message-ID: <29ad9a2f9f2a45378b5b89248efc0a5e@AMSPEX02CL03.citrite.net> References: <20170228173941.69473-1-roger.pau@citrix.com> <20170228173941.69473-2-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cj4BR-0005XN-F9 for xen-devel@lists.xenproject.org; Wed, 01 Mar 2017 13:20:45 +0000 In-Reply-To: <20170228173941.69473-2-roger.pau@citrix.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: "xen-devel@lists.xenproject.org" Cc: Elena Ufimtseva , Kevin Tian , Tamas K Lengyel , Wei Liu , Jun Nakajima , Razvan Cojocaru , Andrew Cooper , George Dunlap , Jan Beulich , Ian Jackson , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBSb2dlciBQYXUgTW9ubmUgW21h aWx0bzpyb2dlci5wYXVAY2l0cml4LmNvbV0NCj4gU2VudDogMjggRmVicnVhcnkgMjAxNyAxNzo0 MA0KPiBUbzogeGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnDQo+IENjOiBSb2dlciBQYXUg TW9ubmUgPHJvZ2VyLnBhdUBjaXRyaXguY29tPjsgSWFuIEphY2tzb24NCj4gPElhbi5KYWNrc29u QGNpdHJpeC5jb20+OyBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPjsgRWxlbmEgVWZpbXRz ZXZhDQo+IDxlbGVuYS51ZmltdHNldmFAb3JhY2xlLmNvbT47IEphbiBCZXVsaWNoIDxqYmV1bGlj aEBzdXNlLmNvbT47IEFuZHJldw0KPiBDb29wZXIgPEFuZHJldy5Db29wZXIzQGNpdHJpeC5jb20+ OyBQYXVsIER1cnJhbnQNCj4gPFBhdWwuRHVycmFudEBjaXRyaXguY29tPjsgSnVuIE5ha2FqaW1h IDxqdW4ubmFrYWppbWFAaW50ZWwuY29tPjsgS2V2aW4NCj4gVGlhbiA8a2V2aW4udGlhbkBpbnRl bC5jb20+OyBHZW9yZ2UgRHVubGFwIDxHZW9yZ2UuRHVubGFwQGNpdHJpeC5jb20+Ow0KPiBSYXp2 YW4gQ29qb2NhcnUgPHJjb2pvY2FydUBiaXRkZWZlbmRlci5jb20+OyBUYW1hcyBLIExlbmd5ZWwN Cj4gPHRhbWFzQHRrbGVuZ3llbC5jb20+DQo+IFN1YmplY3Q6IFtQQVRDSCB2MiAxLzNdIHg4Njog cmVtb3ZlIFBWSHYxIGNvZGUNCj4gDQo+IFRoaXMgcmVtb3ZhbCBhcHBsaWVzIHRvIGJvdGggdGhl IGh5cGVydmlzb3IgYW5kIHRoZSB0b29sc3RhY2sgc2lkZSBvZiBQVkh2MS4NCj4gDQo+IE5vdGUg dGhhdCBvbiB0aGUgdG9vbHN0YWNrIHNpZGUgdGhlcmUncyBvbmUgaGljY3VwOiBvbiB4bCB0aGUg InB2aCINCj4gY29uZmlndXJhdGlvbiBvcHRpb24gaXMgdHJhbnNsYXRlZCB0byBidWlsZGVyPSJo dm0iLA0KPiBkZXZpY2VfbW9kZWxfdmVyc2lvbj0ibm9uZSIuICBUaGlzIGlzIGRvbmUgYmVjYXVz ZSBvdGhlcndpc2UgeGwgd291bGQNCj4gc3RhcnQNCj4gcGFyc2luZyBQViBsaWtlIG9wdGlvbnMs IGFuZCBmaWxsaW5nIHRoZSBQViBzdHJ1Y3QgYXQgbGlieGxfZG9tYWluX2J1aWxkX2luZm8NCj4g KHdoaWNoIGluIHR1cm4gcG9sbHV0ZXMgdGhlIEhWTSBvbmUgYmVjYXVzZSBpdCdzIGEgdW5pb24p Lg0KPiANCj4gU2lnbmVkLW9mZi1ieTogUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJp eC5jb20+DQoNClJldmlld2VkLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXgu Y29tPg0KDQo+IC0tLQ0KPiBDaGFuZ2VzIHNpbmNlIHYxOg0KPiAgLSBSZW1vdmUgZG9tMHB2aCBv cHRpb24gZnJvbSB0aGUgY29tbWFuZCBsaW5lIGRvY3MuDQo+ICAtIEJ1bXAgZG9tY3RsIGludGVy ZmFjZSB2ZXJzaW9uIGR1ZSB0byB0aGUgcmVtb3ZlZCBDREYgZmxhZy4NCj4gDQo+IC0tLQ0KPiBD YzogSWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+DQo+IENjOiBXZWkgTGl1 IDx3ZWkubGl1MkBjaXRyaXguY29tPg0KPiBDYzogRWxlbmEgVWZpbXRzZXZhIDxlbGVuYS51Zmlt dHNldmFAb3JhY2xlLmNvbT4NCj4gQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4N Cj4gQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+DQo+IENjOiBQ YXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPg0KPiBDYzogSnVuIE5ha2FqaW1h IDxqdW4ubmFrYWppbWFAaW50ZWwuY29tPg0KPiBDYzogS2V2aW4gVGlhbiA8a2V2aW4udGlhbkBp bnRlbC5jb20+DQo+IENjOiBHZW9yZ2UgRHVubGFwIDxnZW9yZ2UuZHVubGFwQGV1LmNpdHJpeC5j b20+DQo+IENjOiBSYXp2YW4gQ29qb2NhcnUgPHJjb2pvY2FydUBiaXRkZWZlbmRlci5jb20+DQo+ IENjOiBUYW1hcyBLIExlbmd5ZWwgPHRhbWFzQHRrbGVuZ3llbC5jb20+DQo+IC0tLQ0KPiAgZG9j cy9tYW4veGwuY2ZnLnBvZC41LmluICAgICAgICAgICAgfCAgMTAgKy0NCj4gIGRvY3MvbWlzYy9w dmgtcmVhZG1lLnR4dCAgICAgICAgICAgIHwgIDYzIC0tLS0tLS0tDQo+ICBkb2NzL21pc2MveGVu LWNvbW1hbmQtbGluZS5tYXJrZG93biB8ICAgNyAtDQo+ICB0b29scy9kZWJ1Z2dlci9nZGJzeC94 Zy94Z19tYWluLmMgICB8ICAgNCArLQ0KPiAgdG9vbHMvbGlieGMvaW5jbHVkZS94Y19kb20uaCAg ICAgICAgfCAgIDEgLQ0KPiAgdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmggICAgICAgfCAg IDIgKy0NCj4gIHRvb2xzL2xpYnhjL3hjX2NwdWlkX3g4Ni5jICAgICAgICAgIHwgIDEzICstDQo+ ICB0b29scy9saWJ4Yy94Y19kb21fY29yZS5jICAgICAgICAgICB8ICAgOSAtLQ0KPiAgdG9vbHMv bGlieGMveGNfZG9tX3g4Ni5jICAgICAgICAgICAgfCAgNDkgKysrLS0tDQo+ICB0b29scy9saWJ4 Yy94Y19kb21haW4uYyAgICAgICAgICAgICB8ICAgMSAtDQo+ICB0b29scy9saWJ4bC9saWJ4bF9j cmVhdGUuYyAgICAgICAgICB8ICAzMSArKy0tDQo+ICB0b29scy9saWJ4bC9saWJ4bF9kb20uYyAg ICAgICAgICAgICB8ICAgMSAtDQo+ICB0b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oICAgICAg ICB8ICAgMSAtDQo+ICB0b29scy9saWJ4bC9saWJ4bF94ODYuYyAgICAgICAgICAgICB8ICAgNyAr LQ0KPiAgdG9vbHMveGwveGxfcGFyc2UuYyAgICAgICAgICAgICAgICAgfCAgMTAgKy0NCj4gIHhl bi9hcmNoL3g4Ni9jcHUvdnBtdS5jICAgICAgICAgICAgIHwgICAzICstDQo+ICB4ZW4vYXJjaC94 ODYvZG9tYWluLmMgICAgICAgICAgICAgICB8ICA0MiArLS0tLS0NCj4gIHhlbi9hcmNoL3g4Ni9k b21haW5fYnVpbGQuYyAgICAgICAgIHwgMjg3ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KPiAgeGVuL2FyY2gveDg2L2RvbWN0bC5jICAgICAgICAgICAgICAgfCAgIDcgKy0N Cj4gIHhlbi9hcmNoL3g4Ni9odm0vaHZtLmMgICAgICAgICAgICAgIHwgIDgxICstLS0tLS0tLS0N Cj4gIHhlbi9hcmNoL3g4Ni9odm0vaHlwZXJjYWxsLmMgICAgICAgIHwgICA0ICstDQo+ICB4ZW4v YXJjaC94ODYvaHZtL2lvLmMgICAgICAgICAgICAgICB8ICAgMiAtDQo+ICB4ZW4vYXJjaC94ODYv aHZtL2lvcmVxLmMgICAgICAgICAgICB8ICAgMyArLQ0KPiAgeGVuL2FyY2gveDg2L2h2bS9pcnEu YyAgICAgICAgICAgICAgfCAgIDMgLQ0KPiAgeGVuL2FyY2gveDg2L2h2bS92bXgvdm1jcy5jICAg ICAgICAgfCAgMzUgKy0tLS0NCj4gIHhlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jICAgICAgICAg IHwgIDEyICstDQo+ICB4ZW4vYXJjaC94ODYvbW0uYyAgICAgICAgICAgICAgICAgICB8ICAgMiAr LQ0KPiAgeGVuL2FyY2gveDg2L21tL3AybS1wdC5jICAgICAgICAgICAgfCAgIDIgKy0NCj4gIHhl bi9hcmNoL3g4Ni9tbS9wMm0uYyAgICAgICAgICAgICAgIHwgICA2ICstDQo+ICB4ZW4vYXJjaC94 ODYvcGh5c2Rldi5jICAgICAgICAgICAgICB8ICAgOCAtDQo+ICB4ZW4vYXJjaC94ODYvc2V0dXAu YyAgICAgICAgICAgICAgICB8ICAgNyAtDQo+ICB4ZW4vYXJjaC94ODYvdGltZS5jICAgICAgICAg ICAgICAgICB8ICAyNyAtLS0tDQo+ICB4ZW4vY29tbW9uL2RvbWFpbi5jICAgICAgICAgICAgICAg ICB8ICAgMiAtDQo+ICB4ZW4vY29tbW9uL2RvbWN0bC5jICAgICAgICAgICAgICAgICB8ICAxMCAt LQ0KPiAgeGVuL2NvbW1vbi9rZXJuZWwuYyAgICAgICAgICAgICAgICAgfCAgIDUgLQ0KPiAgeGVu L2NvbW1vbi92bV9ldmVudC5jICAgICAgICAgICAgICAgfCAgIDggKy0NCj4gIHhlbi9pbmNsdWRl L2FzbS14ODYvZG9tYWluLmggICAgICAgIHwgICAxIC0NCj4gIHhlbi9pbmNsdWRlL2FzbS14ODYv aHZtL2h2bS5oICAgICAgIHwgICAzIC0NCj4gIHhlbi9pbmNsdWRlL3B1YmxpYy9kb21jdGwuaCAg ICAgICAgIHwgIDE0ICstDQo+ICB4ZW4vaW5jbHVkZS94ZW4vc2NoZWQuaCAgICAgICAgICAgICB8 ICAgOSArLQ0KPiAgNDAgZmlsZXMgY2hhbmdlZCwgOTYgaW5zZXJ0aW9ucygrKSwgNjk2IGRlbGV0 aW9ucygtKQ0KPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IGRvY3MvbWlzYy9wdmgtcmVhZG1lLnR4dA0K PiANCj4gZGlmZiAtLWdpdCBhL2RvY3MvbWFuL3hsLmNmZy5wb2QuNS5pbiBiL2RvY3MvbWFuL3hs LmNmZy5wb2QuNS5pbg0KPiBpbmRleCA1MDVjMTExLi5kYTFmZGQ3IDEwMDY0NA0KPiAtLS0gYS9k b2NzL21hbi94bC5jZmcucG9kLjUuaW4NCj4gKysrIGIvZG9jcy9tYW4veGwuY2ZnLnBvZC41Lmlu DQo+IEBAIC0xMDY0LDYgKzEwNjQsMTIgQEAgRklGTy1iYXNlZCBldmVudCBjaGFubmVsIEFCSSBz dXBwb3J0IHVwIHRvDQo+IDEzMSwwNzEgZXZlbnQgY2hhbm5lbHMuDQo+ICBPdGhlciBndWVzdHMg YXJlIGxpbWl0ZWQgdG8gNDA5NSAoNjQtYml0IHg4NiBhbmQgQVJNKSBvciAxMDIzICgzMi1iaXQN Cj4gIHg4NikuDQo+IA0KPiArPWl0ZW0gQjxwdmg9Qk9PTEVBTj4NCj4gKw0KPiArU2VsZWN0cyB3 aGV0aGVyIHRvIHJ1biB0aGlzIFBWIGd1ZXN0IGluIGFuIEhWTSBjb250YWluZXIuIERlZmF1bHQg aXMgMC4NCj4gK05vdGUgdGhhdCB0aGlzIG9wdGlvbiBpcyBlcXVpdmFsZW50IHRvIHNldHRpbmcg YnVpbGRlcj0iaHZtIiBhbmQNCj4gK2RldmljZV9tb2RlbF92ZXJzaW9uPSJub25lIg0KPiArDQo+ ICA9YmFjaw0KPiANCj4gID1oZWFkMiBQYXJhdmlydHVhbGlzZWQgKFBWKSBHdWVzdCBTcGVjaWZp YyBPcHRpb25zDQo+IEBAIC0xMTA4LDEwICsxMTE0LDYgQEAgaWYgeW91ciBwYXJ0aWN1bGFyIGd1 ZXN0IGtlcm5lbCBkb2VzIG5vdCByZXF1aXJlIHRoaXMNCj4gYmVoYXZpb3VyIHRoZW4NCj4gIGl0 IGlzIHNhZmUgdG8gYWxsb3cgdGhpcyB0byBiZSBlbmFibGVkIGJ1dCB5b3UgbWF5IHdpc2ggdG8g ZGlzYWJsZSBpdA0KPiAgYW55d2F5Lg0KPiANCj4gLT1pdGVtIEI8cHZoPUJPT0xFQU4+DQo+IC0N Cj4gLVNlbGVjdHMgd2hldGhlciB0byBydW4gdGhpcyBQViBndWVzdCBpbiBhbiBIVk0gY29udGFp bmVyLiBEZWZhdWx0IGlzIDAuDQo+IC0NCj4gID1iYWNrDQo+IA0KPiAgPWhlYWQyIEZ1bGx5LXZp cnR1YWxpc2VkIChIVk0pIEd1ZXN0IFNwZWNpZmljIE9wdGlvbnMNCj4gZGlmZiAtLWdpdCBhL2Rv Y3MvbWlzYy9wdmgtcmVhZG1lLnR4dCBiL2RvY3MvbWlzYy9wdmgtcmVhZG1lLnR4dA0KPiBkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggYzViM2RlNC4uMDAwMDAwMA0KPiAtLS0gYS9k b2NzL21pc2MvcHZoLXJlYWRtZS50eHQNCj4gKysrIC9kZXYvbnVsbA0KPiBAQCAtMSw2MyArMCww IEBADQo+IC0NCj4gLVBWSCA6IGFuIHg4NiBQViBndWVzdCBydW5uaW5nIGluIGFuIEhWTSBjb250 YWluZXIuDQo+IC0NCj4gLVNlZTogaHR0cDovL2Jsb2cueGVuLm9yZy9pbmRleC5waHAvMjAxMi8x MC8yMy90aGUtcGFyYXZpcnR1YWxpemF0aW9uLQ0KPiBzcGVjdHJ1bS1wYXJ0LTEtdGhlLWVuZHMt b2YtdGhlLXNwZWN0cnVtLw0KPiAtDQo+IC1BdCB0aGUgbW9tZW50IEhBUCBpcyByZXF1aXJlZCBm b3IgUFZILg0KPiAtDQo+IC1BdCBwcmVzZW50IHRoZSBvbmx5IFBWSCBndWVzdCBpcyBhbiB4ODYg NjRiaXQgUFYgbGludXguIFBhdGNoZXMgYXJlIGF0Og0KPiAtICAgZ2l0Oi8vZ2l0Lmtlcm5lbC5v cmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2tvbnJhZC94ZW4uZ2l0DQo+IC0NCj4gLUEgUFZI IGd1ZXN0IGtlcm5lbCBtdXN0IHN1cHBvcnQgZm9sbG93aW5nIGZlYXR1cmVzLCBhcyBkZWZpbmVk IGZvciBsaW51eA0KPiAtaW4gYXJjaC94ODYveGVuL3hlbi1oZWFkLlM6DQo+IC0NCj4gLSAgICNk ZWZpbmUgRkVBVFVSRVNfUFZIICJ8d3JpdGFibGVfZGVzY3JpcHRvcl90YWJsZXMiIFwNCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICJ8YXV0b190cmFuc2xhdGVkX3BoeXNtYXAiICAgIFwNCj4g LSAgICAgICAgICAgICAgICAgICAgICAgICJ8c3VwZXJ2aXNvcl9tb2RlX2tlcm5lbCIgICAgIFwN Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICJ8aHZtX2NhbGxiYWNrX3ZlY3RvciINCj4gLQ0K PiAtSW4gYSBudXRzaGVsbDoNCj4gLSogdGhlIGd1ZXN0IHVzZXMgYXV0byB0cmFuc2xhdGU6DQo+ IC0gLSBwMm0gaXMgbWFuYWdlZCBieSB4ZW4NCj4gLSAtIHBhZ2V0YWJsZXMgYXJlIG93bmVkIGJ5 IHRoZSBndWVzdA0KPiAtIC0gbW11X3VwZGF0ZSBoeXBlcmNhbGwgbm90IGF2YWlsYWJsZQ0KPiAt KiBpdCB1c2VzIGV2ZW50IGNhbGxiYWNrIGFuZCBub3QgdmxhcGljIGVtdWxhdGlvbiwNCj4gLSog SURUIGlzIG5hdGl2ZSwgc28gc2V0X3RyYXBfdGFibGUgaGNhbGwgaXMgYWxzbyBOL0EgZm9yIGEg UFZIIGd1ZXN0Lg0KPiAtDQo+IC1Gb3IgYSBmdWxsIGxpc3Qgb2YgaGNhbGxzIHN1cHBvcnRlZCBm b3IgUFZILCBzZWUgcHZoX2h5cGVyY2FsbDY0X3RhYmxlDQo+IC1pbiBhcmNoL3g4Ni9odm0vaHZt LmMgaW4geGVuLiAgRnJvbSB0aGUgQUJJIHByZXNwZWN0aXZlLCBpdCdzIG1vc3RseSBhDQo+IC1Q ViBndWVzdCB3aXRoIGF1dG8gdHJhbnNsYXRlLCBhbHRob3VnaCBpdCBkb2VzIHVzZSBodm1fb3Ag Zm9yIHNldHRpbmcNCj4gLWNhbGxiYWNrIHZlY3RvciwgYW5kIGhhcyBhIHNwZWNpYWwgdmVyc2lv biBvZiBhcmNoX3NldF9ndWVzdF9pbmZvIGZvciBicmluZ2luZw0KPiAtdXAgc2Vjb25kYXJ5IGNw dXMuDQo+IC0NCj4gLVRoZSBpbml0aWFsIHBoYXNlIHRhcmdldHMgdGhlIGJvb3Rpbmcgb2YgYSA2 NGJpdCBVUC9TTVAgbGludXggZ3Vlc3QgaW4gUFZIDQo+IC1tb2RlLiBUaGlzIGlzIGRvbmUgYnkg YWRkaW5nOiBwdmg9MSBpbiB0aGUgY29uZmlnIGZpbGUuIHhsLCBhbmQgbm90IHhtLCBpcw0KPiAt c3VwcG9ydGVkLiBQaGFzZSBJIHBhdGNoZXMgYXJlIGJyb2tlbiBpbnRvIHRocmVlIHBhcnRzOg0K PiAtICAgLSB4ZW4gY2hhbmdlcyBmb3IgYm9vdGluZyBvZiA2NGJpdCBQVkggZ3Vlc3QNCj4gLSAg IC0gdG9vbHMgY2hhbmdlcyBmb3IgY3JlYXRpbmcgYSBQVkggZ3Vlc3QNCj4gLSAgIC0gYm9vdCBv ZiA2NGJpdCBkb20wIGluIFBWSCBtb2RlLg0KPiAtDQo+IC1UbyBib290IDY0Yml0IGRvbTAgaW4g UFZIIG1vZGUsIGFkZCBkb20wcHZoIHRvIGdydWIgeGVuIGNvbW1hbmQgbGluZS4NCj4gLQ0KPiAt Rm9sbG93aW5nIGZpeG1lJ3MgZXhpc3QgaW4gdGhlIGNvZGU6DQo+IC0gIC0gYXJjaC94ODYvdGlt ZS5jOiBzdXBwb3J0IG1vcmUgdHNjIG1vZGVzLg0KPiAtDQo+IC1Gb2xsb3dpbmcgcmVtYWluIHRv IGJlIGRvbmUgZm9yIFBWSDoNCj4gLSAgIC0gR2V0IHJpZCBvZiBQVkggbW9kZSwgbWFrZSBpdCBq dXN0IEhWTSB3aXRoIHNvbWUgZmxhZ3Mgc2V0DQo+IC0gICAtIGltcGxlbWVudCBhcmNoX2dldF9p bmZvX2d1ZXN0KCkgZm9yIHB2aC4NCj4gLSAgIC0gSW52ZXN0aWdhdGUgd2hhdCBlbHNlIG5lZWRz IHRvIGJlIGRvbmUgZm9yIFZNSSBzdXBwb3J0Lg0KPiAtICAgLSBBTUQgcG9ydC4NCj4gLSAgIC0g MzJiaXQgUFZIIGd1ZXN0IHN1cHBvcnQgaW4gYm90aCBsaW51eCBhbmQgeGVuLiBYZW4gY2hhbmdl cyBhcmUgdGFnZ2VkDQo+IC0gICAgICIzMmJpdGZpeG1lIi4NCj4gLSAgIC0gQWRkIHN1cHBvcnQg Zm9yIG1vbml0b3JpbmcgZ3Vlc3QgYmVoYXZpb3IuIFNlZSBodm1fbWVtb3J5X2V2ZW50Kg0KPiBm dW5jdGlvbnMNCj4gLSAgICAgaW4gaHZtLmMNCj4gLSAgIC0gdmNwdSBob3RwbHVnIHN1cHBvcnQN Cj4gLSAgIC0gTGl2ZSBtaWdyYXRpb24gb2YgUFZIIGd1ZXN0cy4NCj4gLSAgIC0gQXZhaWwgUFZI IGRvbTAgb2YgcG9zdGVkIGludGVycnVwdHMuIChUaGlzIHdpbGwgYmUgYSBiaWcgd2luKS4NCj4g LQ0KPiAtDQo+IC1Ob3RlLCBhbnkgZW1haWxzIHRvIG1lIG11c3QgYmUgY2MnZCB0byB4ZW4gZGV2 ZWwgbWFpbGluZyBsaXN0LiBPVE9ILCBwbGVhc2UNCj4gLWNjIG1lIG9uIFBWSCBlbWFpbHMgdG8g dGhlIHhlbiBkZXZlbCBtYWlsaW5nIGxpc3QuDQo+IC0NCj4gLU11a2VzaCBSYXRob3INCj4gLW11 a2VzaC5yYXRob3IgW2F0XSBvcmFjbGUgW2RvdF0gY29tDQo+IGRpZmYgLS1naXQgYS9kb2NzL21p c2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93biBiL2RvY3MvbWlzYy94ZW4tDQo+IGNvbW1hbmQt bGluZS5tYXJrZG93bg0KPiBpbmRleCAzYWNiYjMzLi5lMDY5NTk0IDEwMDY0NA0KPiAtLS0gYS9k b2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93bg0KPiArKysgYi9kb2NzL21pc2MveGVu LWNvbW1hbmQtbGluZS5tYXJrZG93bg0KPiBAQCAtNjc1LDEzICs2NzUsNiBAQCBGbGFnIHRoYXQg bWFrZXMgYSBkb20wIGJvb3QgaW4gUFZIdjIgbW9kZS4NCj4gDQo+ICBGbGFnIHRoYXQgbWFrZXMg YSBkb20wIHVzZSBzaGFkb3cgcGFnaW5nLg0KPiANCj4gLSMjIyBkb20wcHZoDQo+IC0+IGA9IDxi b29sZWFuPmANCj4gLQ0KPiAtPiBEZWZhdWx0OiBgZmFsc2VgDQo+IC0NCj4gLUZsYWcgdGhhdCBt YWtlcyBhIDY0Yml0IGRvbTAgYm9vdCBpbiBQVkggbW9kZS4gTm8gMzJiaXQgc3VwcG9ydCBhdA0K PiBwcmVzZW50Lg0KPiAtDQo+ICAjIyMgZHR1YXJ0IChBUk0pDQo+ICA+IGA9IHBhdGggWzpvcHRp b25zXWANCj4gDQo+IGRpZmYgLS1naXQgYS90b29scy9kZWJ1Z2dlci9nZGJzeC94Zy94Z19tYWlu LmMNCj4gYi90b29scy9kZWJ1Z2dlci9nZGJzeC94Zy94Z19tYWluLmMNCj4gaW5kZXggOGM4YTQw Mi4uN2ViZjkxNCAxMDA2NDQNCj4gLS0tIGEvdG9vbHMvZGVidWdnZXIvZ2Ric3gveGcveGdfbWFp bi5jDQo+ICsrKyBiL3Rvb2xzL2RlYnVnZ2VyL2dkYnN4L3hnL3hnX21haW4uYw0KPiBAQCAtNzks NyArNzksNiBAQCBpbnQgeGd0cmNfb24gPSAwOw0KPiAgc3RydWN0IHhlbl9kb21jdGwgZG9tY3Rs OyAgICAgICAgIC8qIGp1c3QgdXNlIGEgZ2xvYmFsIGRvbWN0bCAqLw0KPiANCj4gIHN0YXRpYyBp bnQgICAgIF9odm1fZ3Vlc3Q7ICAgICAgICAvKiBodm0gZ3Vlc3Q/IDMyYml0IEhWTXMgaGF2ZSA2 NGJpdCBjb250ZXh0ICovDQo+IC1zdGF0aWMgaW50ICAgICBfcHZoX2d1ZXN0OyAgICAgICAgLyog UFYgZ3Vlc3QgaW4gSFZNIGNvbnRhaW5lciAqLw0KPiAgc3RhdGljIGRvbWlkX3QgX2RvbV9pZDsg ICAgICAgICAgIC8qIGd1ZXN0IGRvbWlkICovDQo+ICBzdGF0aWMgaW50ICAgICBfbWF4X3ZjcHVf aWQ7ICAgICAgLyogdGh1cyBtYXhfdmNwdV9pZCsxIFZDUFVzICovDQo+ICBzdGF0aWMgaW50ICAg ICBfZG9tMF9mZDsgICAgICAgICAgLyogZmQgb2YgL2Rldi9wcml2Y21kICovDQo+IEBAIC0zMDgs NyArMzA3LDYgQEAgeGdfYXR0YWNoKGludCBkb21pZCwgaW50IGd1ZXN0X2JpdG5lc3MpDQo+IA0K PiAgICAgIF9tYXhfdmNwdV9pZCA9IGRvbWN0bC51LmdldGRvbWFpbmluZm8ubWF4X3ZjcHVfaWQ7 DQo+ICAgICAgX2h2bV9ndWVzdCA9IChkb21jdGwudS5nZXRkb21haW5pbmZvLmZsYWdzICYNCj4g WEVOX0RPTUlORl9odm1fZ3Vlc3QpOw0KPiAtICAgIF9wdmhfZ3Vlc3QgPSAoZG9tY3RsLnUuZ2V0 ZG9tYWluaW5mby5mbGFncyAmDQo+IFhFTl9ET01JTkZfcHZoX2d1ZXN0KTsNCj4gICAgICByZXR1 cm4gX21heF92Y3B1X2lkOw0KPiAgfQ0KPiANCj4gQEAgLTM2OSw3ICszNjcsNyBAQCBfY2hhbmdl X1RGKHZjcHVpZF90IHdoaWNoX3ZjcHUsIGludCBndWVzdF9iaXRuZXNzLA0KPiBpbnQgc2V0aXQp DQo+ICAgICAgaW50IHN6ID0gc2l6ZW9mKGFueWMpOw0KPiANCj4gICAgICAvKiBmaXJzdCB0cnkg dGhlIE1URiBmb3IgaHZtIGd1ZXN0LiBvdGhlcndpc2UgZG8gbWFudWFsbHkgKi8NCj4gLSAgICBp ZiAoX2h2bV9ndWVzdCB8fCBfcHZoX2d1ZXN0KSB7DQo+ICsgICAgaWYgKF9odm1fZ3Vlc3QpIHsN Cj4gICAgICAgICAgZG9tY3RsLnUuZGVidWdfb3AudmNwdSA9IHdoaWNoX3ZjcHU7DQo+ICAgICAg ICAgIGRvbWN0bC51LmRlYnVnX29wLm9wID0gc2V0aXQgPw0KPiBYRU5fRE9NQ1RMX0RFQlVHX09Q X1NJTkdMRV9TVEVQX09OIDoNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFhFTl9ET01DVExfREVCVUdfT1BfU0lOR0xFX1NURVBfT0ZGOw0KPiBkaWZmIC0tZ2l0IGEv dG9vbHMvbGlieGMvaW5jbHVkZS94Y19kb20uaCBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGNfZG9t LmgNCj4gaW5kZXggNjA4Y2JjMi4uYjQxNmViNSAxMDA2NDQNCj4gLS0tIGEvdG9vbHMvbGlieGMv aW5jbHVkZS94Y19kb20uaA0KPiArKysgYi90b29scy9saWJ4Yy9pbmNsdWRlL3hjX2RvbS5oDQo+ IEBAIC0xNjQsNyArMTY0LDYgQEAgc3RydWN0IHhjX2RvbV9pbWFnZSB7DQo+ICAgICAgZG9taWRf dCBjb25zb2xlX2RvbWlkOw0KPiAgICAgIGRvbWlkX3QgeGVuc3RvcmVfZG9taWQ7DQo+ICAgICAg eGVuX3Bmbl90IHNoYXJlZF9pbmZvX21mbjsNCj4gLSAgICBpbnQgcHZoX2VuYWJsZWQ7DQo+IA0K PiAgICAgIHhjX2ludGVyZmFjZSAqeGNoOw0KPiAgICAgIGRvbWlkX3QgZ3Vlc3RfZG9taWQ7DQo+ IGRpZmYgLS1naXQgYS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCBiL3Rvb2xzL2xpYnhj L2luY2x1ZGUveGVuY3RybC5oDQo+IGluZGV4IGE0ODk4MWEuLmE3MDgzZjggMTAwNjQ0DQo+IC0t LSBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oDQo+ICsrKyBiL3Rvb2xzL2xpYnhjL2lu Y2x1ZGUveGVuY3RybC5oDQo+IEBAIC00NDMsNyArNDQzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGNf ZG9taW5mbyB7DQo+ICAgICAgdWludDMyX3QgICAgICBzc2lkcmVmOw0KPiAgICAgIHVuc2lnbmVk IGludCAgZHlpbmc6MSwgY3Jhc2hlZDoxLCBzaHV0ZG93bjoxLA0KPiAgICAgICAgICAgICAgICAg ICAgcGF1c2VkOjEsIGJsb2NrZWQ6MSwgcnVubmluZzoxLA0KPiAtICAgICAgICAgICAgICAgICAg aHZtOjEsIGRlYnVnZ2VkOjEsIHB2aDoxLCB4ZW5zdG9yZToxLCBoYXA6MTsNCj4gKyAgICAgICAg ICAgICAgICAgIGh2bToxLCBkZWJ1Z2dlZDoxLCB4ZW5zdG9yZToxLCBoYXA6MTsNCj4gICAgICB1 bnNpZ25lZCBpbnQgIHNodXRkb3duX3JlYXNvbjsgLyogb25seSBtZWFuaW5nZnVsIGlmIHNodXRk b3duPT0xICovDQo+ICAgICAgdW5zaWduZWQgbG9uZyBucl9wYWdlczsgLyogY3VycmVudCBudW1i ZXIsIG5vdCBtYXhpbXVtICovDQo+ICAgICAgdW5zaWduZWQgbG9uZyBucl9vdXRzdGFuZGluZ19w YWdlczsNCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX2NwdWlkX3g4Ni5jIGIvdG9vbHMv bGlieGMveGNfY3B1aWRfeDg2LmMNCj4gaW5kZXggMzVlY2NhMS4uMWJlZGYwNSAxMDA2NDQNCj4g LS0tIGEvdG9vbHMvbGlieGMveGNfY3B1aWRfeDg2LmMNCj4gKysrIGIvdG9vbHMvbGlieGMveGNf Y3B1aWRfeDg2LmMNCj4gQEAgLTE2Nyw3ICsxNjcsNiBAQCBzdHJ1Y3QgY3B1aWRfZG9tYWluX2lu Zm8NCj4gICAgICB9IHZlbmRvcjsNCj4gDQo+ICAgICAgYm9vbCBodm07DQo+IC0gICAgYm9vbCBw dmg7DQo+ICAgICAgdWludDY0X3QgeGZlYXR1cmVfbWFzazsNCj4gDQo+ICAgICAgdWludDMyX3Qg KmZlYXR1cmVzZXQ7DQo+IEBAIC0yMzEsNyArMjMwLDYgQEAgc3RhdGljIGludCBnZXRfY3B1aWRf ZG9tYWluX2luZm8oeGNfaW50ZXJmYWNlICp4Y2gsDQo+IGRvbWlkX3QgZG9taWQsDQo+ICAgICAg ICAgIHJldHVybiAtRVNSQ0g7DQo+IA0KPiAgICAgIGluZm8tPmh2bSA9IGRpLmh2bTsNCj4gLSAg ICBpbmZvLT5wdmggPSBkaS5wdmg7DQo+IA0KPiAgICAgIGluZm8tPmZlYXR1cmVzZXQgPSBjYWxs b2MoaG9zdF9ucl9mZWF0dXJlcywgc2l6ZW9mKCppbmZvLT5mZWF0dXJlc2V0KSk7DQo+ICAgICAg aWYgKCAhaW5mby0+ZmVhdHVyZXNldCApDQo+IEBAIC02ODIsMTMgKzY4MCwxMCBAQCBzdGF0aWMg dm9pZCBzYW5pdGlzZV9mZWF0dXJlc2V0KHN0cnVjdA0KPiBjcHVpZF9kb21haW5faW5mbyAqaW5m bykNCj4gICAgICAgICAgICAgICAgICBjbGVhcl9iaXQoWDg2X0ZFQVRVUkVfU1lTQ0FMTCwgaW5m by0+ZmVhdHVyZXNldCk7DQo+ICAgICAgICAgIH0NCj4gDQo+IC0gICAgICAgIGlmICggIWluZm8t PnB2aCApDQo+IC0gICAgICAgIHsNCj4gLSAgICAgICAgICAgIGNsZWFyX2JpdChYODZfRkVBVFVS RV9QU0UsIGluZm8tPmZlYXR1cmVzZXQpOw0KPiAtICAgICAgICAgICAgY2xlYXJfYml0KFg4Nl9G RUFUVVJFX1BTRTM2LCBpbmZvLT5mZWF0dXJlc2V0KTsNCj4gLSAgICAgICAgICAgIGNsZWFyX2Jp dChYODZfRkVBVFVSRV9QR0UsIGluZm8tPmZlYXR1cmVzZXQpOw0KPiAtICAgICAgICAgICAgY2xl YXJfYml0KFg4Nl9GRUFUVVJFX1BBR0UxR0IsIGluZm8tPmZlYXR1cmVzZXQpOw0KPiAtICAgICAg ICB9DQo+ICsgICAgICAgIGNsZWFyX2JpdChYODZfRkVBVFVSRV9QU0UsIGluZm8tPmZlYXR1cmVz ZXQpOw0KPiArICAgICAgICBjbGVhcl9iaXQoWDg2X0ZFQVRVUkVfUFNFMzYsIGluZm8tPmZlYXR1 cmVzZXQpOw0KPiArICAgICAgICBjbGVhcl9iaXQoWDg2X0ZFQVRVUkVfUEdFLCBpbmZvLT5mZWF0 dXJlc2V0KTsNCj4gKyAgICAgICAgY2xlYXJfYml0KFg4Nl9GRUFUVVJFX1BBR0UxR0IsIGluZm8t PmZlYXR1cmVzZXQpOw0KPiAgICAgIH0NCj4gDQo+ICAgICAgaWYgKCBpbmZvLT54ZmVhdHVyZV9t YXNrID09IDAgKQ0KPiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfZG9tX2NvcmUuYyBiL3Rv b2xzL2xpYnhjL3hjX2RvbV9jb3JlLmMNCj4gaW5kZXggMzZjZDNjOC4uY2Y0MDM0MyAxMDA2NDQN Cj4gLS0tIGEvdG9vbHMvbGlieGMveGNfZG9tX2NvcmUuYw0KPiArKysgYi90b29scy9saWJ4Yy94 Y19kb21fY29yZS5jDQo+IEBAIC04OTYsMTUgKzg5Niw2IEBAIGludCB4Y19kb21fcGFyc2VfaW1h Z2Uoc3RydWN0IHhjX2RvbV9pbWFnZQ0KPiAqZG9tKQ0KPiAgICAgICAgICBnb3RvIGVycjsNCj4g ICAgICB9DQo+IA0KPiAtICAgIGlmICggZG9tLT5wdmhfZW5hYmxlZCApDQo+IC0gICAgew0KPiAt ICAgICAgICBjb25zdCBjaGFyICpwdmhfZmVhdHVyZXMgPSAid3JpdGFibGVfZGVzY3JpcHRvcl90 YWJsZXN8Ig0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXV0b190cmFu c2xhdGVkX3BoeXNtYXB8Ig0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi c3VwZXJ2aXNvcl9tb2RlX2tlcm5lbHwiDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJodm1fY2FsbGJhY2tfdmVjdG9yIjsNCj4gLSAgICAgICAgZWxmX3hlbl9wYXJzZV9m ZWF0dXJlcyhwdmhfZmVhdHVyZXMsIGRvbS0+Zl9yZXF1ZXN0ZWQsIE5VTEwpOw0KPiAtICAgIH0N Cj4gLQ0KPiAgICAgIC8qIGNoZWNrIGZlYXR1cmVzICovDQo+ICAgICAgZm9yICggaSA9IDA7IGkg PCBYRU5GRUFUX05SX1NVQk1BUFM7IGkrKyApDQo+ICAgICAgew0KPiBkaWZmIC0tZ2l0IGEvdG9v bHMvbGlieGMveGNfZG9tX3g4Ni5jIGIvdG9vbHMvbGlieGMveGNfZG9tX3g4Ni5jDQo+IGluZGV4 IDY0OTVlN2YuLmMxNzZjMDAgMTAwNjQ0DQo+IC0tLSBhL3Rvb2xzL2xpYnhjL3hjX2RvbV94ODYu Yw0KPiArKysgYi90b29scy9saWJ4Yy94Y19kb21feDg2LmMNCj4gQEAgLTM3Myw3ICszNzMsNyBA QCBzdGF0aWMgeDg2X3BnZW50cnlfdCBnZXRfcGdfcHJvdF94ODYoc3RydWN0DQo+IHhjX2RvbV9p bWFnZSAqZG9tLCBpbnQgbCwNCj4gICAgICB1bnNpZ25lZCBtOw0KPiANCj4gICAgICBwcm90ID0g ZG9teDg2LT5wYXJhbXMtPmx2bF9wcm90W2xdOw0KPiAtICAgIGlmICggbCA+IDAgfHwgZG9tLT5w dmhfZW5hYmxlZCApDQo+ICsgICAgaWYgKCBsID4gMCApDQo+ICAgICAgICAgIHJldHVybiBwcm90 Ow0KPiANCj4gICAgICBmb3IgKCBtID0gMDsgbSA8IGRvbXg4Ni0+bl9tYXBwaW5nczsgbSsrICkN Cj4gQEAgLTg3MCwxOCArODcwLDE1IEBAIHN0YXRpYyBpbnQgdmNwdV94ODZfMzIoc3RydWN0IHhj X2RvbV9pbWFnZSAqZG9tKQ0KPiAgICAgIERPTVBSSU5URigiJXM6IGNyMzogcGZuIDB4JSIgUFJJ cGZuICIgbWZuIDB4JSIgUFJJcGZuICIiLA0KPiAgICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18s IGRvbS0+cGd0YWJsZXNfc2VnLnBmbiwgY3IzX3Bmbik7DQo+IA0KPiAtICAgIGlmICggIWRvbS0+ cHZoX2VuYWJsZWQgKQ0KPiAtICAgIHsNCj4gLSAgICAgICAgY3R4dC0+dXNlcl9yZWdzLmRzID0g RkxBVF9LRVJORUxfRFNfWDg2XzMyOw0KPiAtICAgICAgICBjdHh0LT51c2VyX3JlZ3MuZXMgPSBG TEFUX0tFUk5FTF9EU19YODZfMzI7DQo+IC0gICAgICAgIGN0eHQtPnVzZXJfcmVncy5mcyA9IEZM QVRfS0VSTkVMX0RTX1g4Nl8zMjsNCj4gLSAgICAgICAgY3R4dC0+dXNlcl9yZWdzLmdzID0gRkxB VF9LRVJORUxfRFNfWDg2XzMyOw0KPiAtICAgICAgICBjdHh0LT51c2VyX3JlZ3Muc3MgPSBGTEFU X0tFUk5FTF9TU19YODZfMzI7DQo+IC0gICAgICAgIGN0eHQtPnVzZXJfcmVncy5jcyA9IEZMQVRf S0VSTkVMX0NTX1g4Nl8zMjsNCj4gLQ0KPiAtICAgICAgICBjdHh0LT5rZXJuZWxfc3MgPSBjdHh0 LT51c2VyX3JlZ3Muc3M7DQo+IC0gICAgICAgIGN0eHQtPmtlcm5lbF9zcCA9IGN0eHQtPnVzZXJf cmVncy5lc3A7DQo+IC0gICAgfQ0KPiArICAgIGN0eHQtPnVzZXJfcmVncy5kcyA9IEZMQVRfS0VS TkVMX0RTX1g4Nl8zMjsNCj4gKyAgICBjdHh0LT51c2VyX3JlZ3MuZXMgPSBGTEFUX0tFUk5FTF9E U19YODZfMzI7DQo+ICsgICAgY3R4dC0+dXNlcl9yZWdzLmZzID0gRkxBVF9LRVJORUxfRFNfWDg2 XzMyOw0KPiArICAgIGN0eHQtPnVzZXJfcmVncy5ncyA9IEZMQVRfS0VSTkVMX0RTX1g4Nl8zMjsN Cj4gKyAgICBjdHh0LT51c2VyX3JlZ3Muc3MgPSBGTEFUX0tFUk5FTF9TU19YODZfMzI7DQo+ICsg ICAgY3R4dC0+dXNlcl9yZWdzLmNzID0gRkxBVF9LRVJORUxfQ1NfWDg2XzMyOw0KPiArDQo+ICsg ICAgY3R4dC0+a2VybmVsX3NzID0gY3R4dC0+dXNlcl9yZWdzLnNzOw0KPiArICAgIGN0eHQtPmtl cm5lbF9zcCA9IGN0eHQtPnVzZXJfcmVncy5lc3A7DQo+IA0KPiAgICAgIHJjID0geGNfdmNwdV9z ZXRjb250ZXh0KGRvbS0+eGNoLCBkb20tPmd1ZXN0X2RvbWlkLCAwLCAmYW55X2N0eCk7DQo+ICAg ICAgaWYgKCByYyAhPSAwICkNCj4gQEAgLTkxNiwxOCArOTEzLDE1IEBAIHN0YXRpYyBpbnQgdmNw dV94ODZfNjQoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tKQ0KPiAgICAgIERPTVBSSU5URigiJXM6 IGNyMzogcGZuIDB4JSIgUFJJcGZuICIgbWZuIDB4JSIgUFJJcGZuICIiLA0KPiAgICAgICAgICAg ICAgICBfX0ZVTkNUSU9OX18sIGRvbS0+cGd0YWJsZXNfc2VnLnBmbiwgY3IzX3Bmbik7DQo+IA0K PiAtICAgIGlmICggIWRvbS0+cHZoX2VuYWJsZWQgKQ0KPiAtICAgIHsNCj4gLSAgICAgICAgY3R4 dC0+dXNlcl9yZWdzLmRzID0gRkxBVF9LRVJORUxfRFNfWDg2XzY0Ow0KPiAtICAgICAgICBjdHh0 LT51c2VyX3JlZ3MuZXMgPSBGTEFUX0tFUk5FTF9EU19YODZfNjQ7DQo+IC0gICAgICAgIGN0eHQt PnVzZXJfcmVncy5mcyA9IEZMQVRfS0VSTkVMX0RTX1g4Nl82NDsNCj4gLSAgICAgICAgY3R4dC0+ dXNlcl9yZWdzLmdzID0gRkxBVF9LRVJORUxfRFNfWDg2XzY0Ow0KPiAtICAgICAgICBjdHh0LT51 c2VyX3JlZ3Muc3MgPSBGTEFUX0tFUk5FTF9TU19YODZfNjQ7DQo+IC0gICAgICAgIGN0eHQtPnVz ZXJfcmVncy5jcyA9IEZMQVRfS0VSTkVMX0NTX1g4Nl82NDsNCj4gLQ0KPiAtICAgICAgICBjdHh0 LT5rZXJuZWxfc3MgPSBjdHh0LT51c2VyX3JlZ3Muc3M7DQo+IC0gICAgICAgIGN0eHQtPmtlcm5l bF9zcCA9IGN0eHQtPnVzZXJfcmVncy5lc3A7DQo+IC0gICAgfQ0KPiArICAgIGN0eHQtPnVzZXJf cmVncy5kcyA9IEZMQVRfS0VSTkVMX0RTX1g4Nl82NDsNCj4gKyAgICBjdHh0LT51c2VyX3JlZ3Mu ZXMgPSBGTEFUX0tFUk5FTF9EU19YODZfNjQ7DQo+ICsgICAgY3R4dC0+dXNlcl9yZWdzLmZzID0g RkxBVF9LRVJORUxfRFNfWDg2XzY0Ow0KPiArICAgIGN0eHQtPnVzZXJfcmVncy5ncyA9IEZMQVRf S0VSTkVMX0RTX1g4Nl82NDsNCj4gKyAgICBjdHh0LT51c2VyX3JlZ3Muc3MgPSBGTEFUX0tFUk5F TF9TU19YODZfNjQ7DQo+ICsgICAgY3R4dC0+dXNlcl9yZWdzLmNzID0gRkxBVF9LRVJORUxfQ1Nf WDg2XzY0Ow0KPiArDQo+ICsgICAgY3R4dC0+a2VybmVsX3NzID0gY3R4dC0+dXNlcl9yZWdzLnNz Ow0KPiArICAgIGN0eHQtPmtlcm5lbF9zcCA9IGN0eHQtPnVzZXJfcmVncy5lc3A7DQo+IA0KPiAg ICAgIHJjID0geGNfdmNwdV9zZXRjb250ZXh0KGRvbS0+eGNoLCBkb20tPmd1ZXN0X2RvbWlkLCAw LCAmYW55X2N0eCk7DQo+ICAgICAgaWYgKCByYyAhPSAwICkNCj4gQEAgLTExMDYsNyArMTEwMCw3 IEBAIHN0YXRpYyBpbnQgbWVtaW5pdF9wdihzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pDQo+ICAg ICAgcmMgPSB4ODZfY29tcGF0KGRvbS0+eGNoLCBkb20tPmd1ZXN0X2RvbWlkLCBkb20tPmd1ZXN0 X3R5cGUpOw0KPiAgICAgIGlmICggcmMgKQ0KPiAgICAgICAgICByZXR1cm4gcmM7DQo+IC0gICAg aWYgKCB4Y19kb21fZmVhdHVyZV90cmFuc2xhdGVkKGRvbSkgJiYgIWRvbS0+cHZoX2VuYWJsZWQg KQ0KPiArICAgIGlmICggeGNfZG9tX2ZlYXR1cmVfdHJhbnNsYXRlZChkb20pICkNCj4gICAgICB7 DQo+ICAgICAgICAgIGRvbS0+c2hhZG93X2VuYWJsZWQgPSAxOw0KPiAgICAgICAgICByYyA9IHg4 Nl9zaGFkb3coZG9tLT54Y2gsIGRvbS0+Z3Vlc3RfZG9taWQpOw0KPiBAQCAtMTU5NCw5ICsxNTg4 LDYgQEAgc3RhdGljIGludCBtYXBfZ3JhbnRfdGFibGVfZnJhbWVzKHN0cnVjdA0KPiB4Y19kb21f aW1hZ2UgKmRvbSkNCj4gIHsNCj4gICAgICBpbnQgaSwgcmM7DQo+IA0KPiAtICAgIGlmICggZG9t LT5wdmhfZW5hYmxlZCApDQo+IC0gICAgICAgIHJldHVybiAwOw0KPiAtDQo+ICAgICAgZm9yICgg aSA9IDA7IDsgaSsrICkNCj4gICAgICB7DQo+ICAgICAgICAgIHJjID0geGNfZG9tYWluX2FkZF90 b19waHlzbWFwKGRvbS0+eGNoLCBkb20tPmd1ZXN0X2RvbWlkLA0KPiBkaWZmIC0tZ2l0IGEvdG9v bHMvbGlieGMveGNfZG9tYWluLmMgYi90b29scy9saWJ4Yy94Y19kb21haW4uYw0KPiBpbmRleCBk ODYyZTUzLi5lYTNmMTkzIDEwMDY0NA0KPiAtLS0gYS90b29scy9saWJ4Yy94Y19kb21haW4uYw0K PiArKysgYi90b29scy9saWJ4Yy94Y19kb21haW4uYw0KPiBAQCAtMzcwLDcgKzM3MCw2IEBAIGlu dCB4Y19kb21haW5fZ2V0aW5mbyh4Y19pbnRlcmZhY2UgKnhjaCwNCj4gICAgICAgICAgaW5mby0+ cnVubmluZyAgPQ0KPiAhIShkb21jdGwudS5nZXRkb21haW5pbmZvLmZsYWdzJlhFTl9ET01JTkZf cnVubmluZyk7DQo+ICAgICAgICAgIGluZm8tPmh2bSAgICAgID0NCj4gISEoZG9tY3RsLnUuZ2V0 ZG9tYWluaW5mby5mbGFncyZYRU5fRE9NSU5GX2h2bV9ndWVzdCk7DQo+ICAgICAgICAgIGluZm8t PmRlYnVnZ2VkID0NCj4gISEoZG9tY3RsLnUuZ2V0ZG9tYWluaW5mby5mbGFncyZYRU5fRE9NSU5G X2RlYnVnZ2VkKTsNCj4gLSAgICAgICAgaW5mby0+cHZoICAgICAgPQ0KPiAhIShkb21jdGwudS5n ZXRkb21haW5pbmZvLmZsYWdzJlhFTl9ET01JTkZfcHZoX2d1ZXN0KTsNCj4gICAgICAgICAgaW5m by0+eGVuc3RvcmUgPQ0KPiAhIShkb21jdGwudS5nZXRkb21haW5pbmZvLmZsYWdzJlhFTl9ET01J TkZfeHNfZG9tYWluKTsNCj4gICAgICAgICAgaW5mby0+aGFwICAgICAgPSAhIShkb21jdGwudS5n ZXRkb21haW5pbmZvLmZsYWdzJlhFTl9ET01JTkZfaGFwKTsNCj4gDQo+IGRpZmYgLS1naXQgYS90 b29scy9saWJ4bC9saWJ4bF9jcmVhdGUuYyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2NyZWF0ZS5jDQo+ IGluZGV4IGU3NDFiOWEuLmMyM2JhMmYgMTAwNjQ0DQo+IC0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhs X2NyZWF0ZS5jDQo+ICsrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2NyZWF0ZS5jDQo+IEBAIC0zOCw5 ICszOCw2IEBAIGludCBsaWJ4bF9fZG9tYWluX2NyZWF0ZV9pbmZvX3NldGRlZmF1bHQobGlieGxf X2djICpnYywNCj4gICAgICBpZiAoY19pbmZvLT50eXBlID09IExJQlhMX0RPTUFJTl9UWVBFX0hW TSkgew0KPiAgICAgICAgICBsaWJ4bF9kZWZib29sX3NldGRlZmF1bHQoJmNfaW5mby0+aGFwLCB0 cnVlKTsNCj4gICAgICAgICAgbGlieGxfZGVmYm9vbF9zZXRkZWZhdWx0KCZjX2luZm8tPm9vcywg dHJ1ZSk7DQo+IC0gICAgfSBlbHNlIHsNCj4gLSAgICAgICAgbGlieGxfZGVmYm9vbF9zZXRkZWZh dWx0KCZjX2luZm8tPnB2aCwgZmFsc2UpOw0KPiAtICAgICAgICBsaWJ4bF9kZWZib29sX3NldGRl ZmF1bHQoJmNfaW5mby0+aGFwLCBsaWJ4bF9kZWZib29sX3ZhbChjX2luZm8tDQo+ID5wdmgpKTsN Cj4gICAgICB9DQo+IA0KPiAgICAgIGxpYnhsX2RlZmJvb2xfc2V0ZGVmYXVsdCgmY19pbmZvLT5y dW5faG90cGx1Z19zY3JpcHRzLCB0cnVlKTsNCj4gQEAgLTQ3NSw4ICs0NzIsNiBAQCBpbnQgbGli eGxfX2RvbWFpbl9idWlsZChsaWJ4bF9fZ2MgKmdjLA0KPiANCj4gICAgICAgICAgYnJlYWs7DQo+ ICAgICAgY2FzZSBMSUJYTF9ET01BSU5fVFlQRV9QVjoNCj4gLSAgICAgICAgc3RhdGUtPnB2aF9l bmFibGVkID0gbGlieGxfZGVmYm9vbF92YWwoZF9jb25maWctPmNfaW5mby5wdmgpOw0KPiAtDQo+ ICAgICAgICAgIHJldCA9IGxpYnhsX19idWlsZF9wdihnYywgZG9taWQsIGluZm8sIHN0YXRlKTsN Cj4gICAgICAgICAgaWYgKHJldCkNCj4gICAgICAgICAgICAgIGdvdG8gb3V0Ow0KPiBAQCAtNTM2 LDE0ICs1MzEsNiBAQCBpbnQgbGlieGxfX2RvbWFpbl9tYWtlKGxpYnhsX19nYyAqZ2MsDQo+IGxp YnhsX2RvbWFpbl9jb25maWcgKmRfY29uZmlnLA0KPiAgICAgICAgICBmbGFncyB8PSBYRU5fRE9N Q1RMX0NERl9odm1fZ3Vlc3Q7DQo+ICAgICAgICAgIGZsYWdzIHw9IGxpYnhsX2RlZmJvb2xfdmFs KGluZm8tPmhhcCkgPyBYRU5fRE9NQ1RMX0NERl9oYXAgOiAwOw0KPiAgICAgICAgICBmbGFncyB8 PSBsaWJ4bF9kZWZib29sX3ZhbChpbmZvLT5vb3MpID8gMCA6IFhFTl9ET01DVExfQ0RGX29vc19v ZmY7DQo+IC0gICAgfSBlbHNlIGlmIChsaWJ4bF9kZWZib29sX3ZhbChpbmZvLT5wdmgpKSB7DQo+ IC0gICAgICAgIGZsYWdzIHw9IFhFTl9ET01DVExfQ0RGX3B2aF9ndWVzdDsNCj4gLSAgICAgICAg aWYgKCFsaWJ4bF9kZWZib29sX3ZhbChpbmZvLT5oYXApKSB7DQo+IC0gICAgICAgICAgICBMT0dE KEVSUk9SLCAqZG9taWQsICJIQVAgbXVzdCBiZSBvbiBmb3IgUFZIIik7DQo+IC0gICAgICAgICAg ICByYyA9IEVSUk9SX0lOVkFMOw0KPiAtICAgICAgICAgICAgZ290byBvdXQ7DQo+IC0gICAgICAg IH0NCj4gLSAgICAgICAgZmxhZ3MgfD0gWEVOX0RPTUNUTF9DREZfaGFwOw0KPiAgICAgIH0NCj4g DQo+ICAgICAgLyogVWx0aW1hdGVseSwgaGFuZGxlIGlzIGFuIGFycmF5IG9mIDE2IHVpbnQ4X3Qs IHNhbWUgYXMgdXVpZCAqLw0KPiBAQCAtODU5LDYgKzg0NiwyNCBAQCBzdGF0aWMgdm9pZCBpbml0 aWF0ZV9kb21haW5fY3JlYXRlKGxpYnhsX19lZ2MgKmVnYywNCj4gICAgICAgICAgZ290byBlcnJv cl9vdXQ7DQo+ICAgICAgfQ0KPiANCj4gKyAgICBsaWJ4bF9kZWZib29sX3NldGRlZmF1bHQoJmRf Y29uZmlnLT5jX2luZm8ucHZoLCBmYWxzZSk7DQo+ICsgICAgaWYgKGxpYnhsX2RlZmJvb2xfdmFs KGRfY29uZmlnLT5jX2luZm8ucHZoKSkgew0KPiArICAgICAgICBpZiAoZF9jb25maWctPmNfaW5m by50eXBlICE9IExJQlhMX0RPTUFJTl9UWVBFX0hWTSkgew0KPiArICAgICAgICAgICAgTE9HRChF UlJPUiwgZG9taWQsICJJbnZhbGlkIGRvbWFpbiB0eXBlIGZvciBQVkg6ICVzIiwNCj4gKyAgICAg ICAgICAgICAgICAgbGlieGxfZG9tYWluX3R5cGVfdG9fc3RyaW5nKGRfY29uZmlnLT5jX2luZm8u dHlwZSkpOw0KPiArICAgICAgICAgICAgcmV0ID0gRVJST1JfSU5WQUw7DQo+ICsgICAgICAgICAg ICBnb3RvIGVycm9yX291dDsNCj4gKyAgICAgICAgfQ0KPiArICAgICAgICBpZiAoZF9jb25maWct PmJfaW5mby5kZXZpY2VfbW9kZWxfdmVyc2lvbiAhPQ0KPiArICAgICAgICAgICAgTElCWExfREVW SUNFX01PREVMX1ZFUlNJT05fTk9ORSkgew0KPiArICAgICAgICAgICAgTE9HRChFUlJPUiwgZG9t aWQsICJJbnZhbGlkIGRldmljZSBtb2RlbCB2ZXJzaW9uIGZvciBQVkg6ICVzIiwNCj4gKyAgICAg ICAgICAgICAgICAgbGlieGxfZGV2aWNlX21vZGVsX3ZlcnNpb25fdG9fc3RyaW5nKA0KPiArICAg ICAgICAgICAgICAgICAgICAgZF9jb25maWctPmJfaW5mby5kZXZpY2VfbW9kZWxfdmVyc2lvbikp Ow0KPiArICAgICAgICAgICAgcmV0ID0gRVJST1JfSU5WQUw7DQo+ICsgICAgICAgICAgICBnb3Rv IGVycm9yX291dDsNCj4gKyAgICAgICAgfQ0KPiArICAgIH0NCj4gKw0KPiAgICAgIC8qIElmIHRh cmdldF9tZW1rYiBpcyBzbWFsbGVyIHRoYW4gbWF4X21lbWtiLCB0aGUgc3Vic2VxdWVudCBjYWxs DQo+ICAgICAgICogdG8gbGlieGMgd2hlbiBidWlsZGluZyBIVk0gZG9tYWluIHdpbGwgZW5hYmxl IFBvRCBtb2RlLg0KPiAgICAgICAqLw0KPiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxf ZG9tLmMgYi90b29scy9saWJ4bC9saWJ4bF9kb20uYw0KPiBpbmRleCBkNTE5YzhkLi5lMTMzOTYy IDEwMDY0NA0KPiAtLS0gYS90b29scy9saWJ4bC9saWJ4bF9kb20uYw0KPiArKysgYi90b29scy9s aWJ4bC9saWJ4bF9kb20uYw0KPiBAQCAtNjkwLDcgKzY5MCw2IEBAIGludCBsaWJ4bF9fYnVpbGRf cHYobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsDQo+ICAgICAgICAgIHJldHVybiBFUlJP Ul9GQUlMOw0KPiAgICAgIH0NCj4gDQo+IC0gICAgZG9tLT5wdmhfZW5hYmxlZCA9IHN0YXRlLT5w dmhfZW5hYmxlZDsNCj4gICAgICBkb20tPmNvbnRhaW5lcl90eXBlID0gWENfRE9NX1BWX0NPTlRB SU5FUjsNCj4gDQo+ICAgICAgTE9HKERFQlVHLCAicHYga2VybmVsIG1hcHBlZCAlZCBwYXRoICVz Iiwgc3RhdGUtPnB2X2tlcm5lbC5tYXBwZWQsDQo+IHN0YXRlLT5wdl9rZXJuZWwucGF0aCk7DQo+ IGRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oIGIvdG9vbHMvbGlieGwv bGlieGxfaW50ZXJuYWwuaA0KPiBpbmRleCA1YmJlZGU1Li43NzIyNjY1IDEwMDY0NA0KPiAtLS0g YS90b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oDQo+ICsrKyBiL3Rvb2xzL2xpYnhsL2xpYnhs X2ludGVybmFsLmgNCj4gQEAgLTExMjksNyArMTEyOSw2IEBAIHR5cGVkZWYgc3RydWN0IHsNCj4g ICAgICBsaWJ4bF9fZmlsZV9yZWZlcmVuY2UgcHZfa2VybmVsOw0KPiAgICAgIGxpYnhsX19maWxl X3JlZmVyZW5jZSBwdl9yYW1kaXNrOw0KPiAgICAgIGNvbnN0IGNoYXIgKiBwdl9jbWRsaW5lOw0K PiAtICAgIGJvb2wgcHZoX2VuYWJsZWQ7DQo+IA0KPiAgICAgIHhlbl92bWVtcmFuZ2VfdCAqdm1l bXJhbmdlczsNCj4gICAgICB1aW50MzJfdCBudW1fdm1lbXJhbmdlczsNCj4gZGlmZiAtLWdpdCBh L3Rvb2xzL2xpYnhsL2xpYnhsX3g4Ni5jIGIvdG9vbHMvbGlieGwvbGlieGxfeDg2LmMNCj4gaW5k ZXggNWRhNzUwNC4uZWI2YmY2NiAxMDA2NDQNCj4gLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfeDg2 LmMNCj4gKysrIGIvdG9vbHMvbGlieGwvbGlieGxfeDg2LmMNCj4gQEAgLTMzOCwxMSArMzM4LDgg QEAgaW50IGxpYnhsX19hcmNoX2RvbWFpbl9jcmVhdGUobGlieGxfX2djICpnYywNCj4gbGlieGxf ZG9tYWluX2NvbmZpZyAqZF9jb25maWcsDQo+ICAgICAgaWYgKHJ0Y190aW1lb2Zmc2V0KQ0KPiAg ICAgICAgICB4Y19kb21haW5fc2V0X3RpbWVfb2Zmc2V0KGN0eC0+eGNoLCBkb21pZCwgcnRjX3Rp bWVvZmZzZXQpOw0KPiANCj4gLSAgICBpZiAoZF9jb25maWctPmJfaW5mby50eXBlID09IExJQlhM X0RPTUFJTl9UWVBFX0hWTSB8fA0KPiAtICAgICAgICBsaWJ4bF9kZWZib29sX3ZhbChkX2NvbmZp Zy0+Y19pbmZvLnB2aCkpIHsNCj4gLQ0KPiAtICAgICAgICB1bnNpZ25lZCBsb25nIHNoYWRvdzsN Cj4gLSAgICAgICAgc2hhZG93ID0gKGRfY29uZmlnLT5iX2luZm8uc2hhZG93X21lbWtiICsgMTAy MykgLyAxMDI0Ow0KPiArICAgIGlmIChkX2NvbmZpZy0+Yl9pbmZvLnR5cGUgPT0gTElCWExfRE9N QUlOX1RZUEVfSFZNKSB7DQo+ICsgICAgICAgIHVuc2lnbmVkIGxvbmcgc2hhZG93ID0gKGRfY29u ZmlnLT5iX2luZm8uc2hhZG93X21lbWtiICsgMTAyMykgLw0KPiAxMDI0Ow0KPiAgICAgICAgICB4 Y19zaGFkb3dfY29udHJvbChjdHgtPnhjaCwgZG9taWQsDQo+IFhFTl9ET01DVExfU0hBRE9XX09Q X1NFVF9BTExPQ0FUSU9OLCBOVUxMLCAwLCAmc2hhZG93LCAwLA0KPiBOVUxMKTsNCj4gICAgICB9 DQo+IA0KPiBkaWZmIC0tZ2l0IGEvdG9vbHMveGwveGxfcGFyc2UuYyBiL3Rvb2xzL3hsL3hsX3Bh cnNlLmMNCj4gaW5kZXggMWVmMGMyNy4uYmFjNDBiNyAxMDA2NDQNCj4gLS0tIGEvdG9vbHMveGwv eGxfcGFyc2UuYw0KPiArKysgYi90b29scy94bC94bF9wYXJzZS5jDQo+IEBAIC03NjAsNyArNzYw LDE1IEBAIHZvaWQgcGFyc2VfY29uZmlnX2RhdGEoY29uc3QgY2hhciAqY29uZmlnX3NvdXJjZSwN Cj4gICAgICAgICAgIXN0cm5jbXAoYnVmLCAiaHZtIiwgc3RybGVuKGJ1ZikpKQ0KPiAgICAgICAg ICBjX2luZm8tPnR5cGUgPSBMSUJYTF9ET01BSU5fVFlQRV9IVk07DQo+IA0KPiAtICAgIHhsdV9j ZmdfZ2V0X2RlZmJvb2woY29uZmlnLCAicHZoIiwgJmNfaW5mby0+cHZoLCAwKTsNCj4gKyAgICBp ZiAoIXhsdV9jZmdfZ2V0X2RlZmJvb2woY29uZmlnLCAicHZoIiwgJmNfaW5mby0+cHZoLCAwKSkg ew0KPiArICAgICAgICAvKiBOQjogd2UgbmVlZCB0byBzZXQgdGhlIHR5cGUgaGVyZSwgb3IgZWxz ZSB3ZSB3aWxsIGZhbGwgaW50bw0KPiArICAgICAgICAgKiB0aGUgUFYgcGF0aCwgYW5kIHRoZSBz ZXQgb2Ygb3B0aW9ucyB3aWxsIGJlIGNvbXBsZXRlbHkgd3JvbmcNCj4gKyAgICAgICAgICogKGV2 ZW4gbW9yZSBiZWNhdXNlIHRoZSBQViBhbmQgSFZNIG9wdGlvbnMgYXJlIGluc2lkZSBhbiB1bmlv bikuDQo+ICsgICAgICAgICAqLw0KPiArICAgICAgICBjX2luZm8tPnR5cGUgPSBMSUJYTF9ET01B SU5fVFlQRV9IVk07DQo+ICsgICAgICAgIGJfaW5mby0+ZGV2aWNlX21vZGVsX3ZlcnNpb24gPQ0K PiBMSUJYTF9ERVZJQ0VfTU9ERUxfVkVSU0lPTl9OT05FOw0KPiArICAgIH0NCj4gKw0KPiAgICAg IHhsdV9jZmdfZ2V0X2RlZmJvb2woY29uZmlnLCAiaGFwIiwgJmNfaW5mby0+aGFwLCAwKTsNCj4g DQo+ICAgICAgaWYgKHhsdV9jZmdfcmVwbGFjZV9zdHJpbmcgKGNvbmZpZywgIm5hbWUiLCAmY19p bmZvLT5uYW1lLCAwKSkgew0KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2NwdS92cG11LmMg Yi94ZW4vYXJjaC94ODYvY3B1L3ZwbXUuYw0KPiBpbmRleCBjODYxNWU4Li5kMzE5ZGVhIDEwMDY0 NA0KPiAtLS0gYS94ZW4vYXJjaC94ODYvY3B1L3ZwbXUuYw0KPiArKysgYi94ZW4vYXJjaC94ODYv Y3B1L3ZwbXUuYw0KPiBAQCAtMjI1LDggKzIyNSw3IEBAIHZvaWQgdnBtdV9kb19pbnRlcnJ1cHQo c3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpDQo+ICAgICAgICAgIGlmICggIXZwbXUtPnhlbnBt dV9kYXRhICkNCj4gICAgICAgICAgICAgIHJldHVybjsNCj4gDQo+IC0gICAgICAgIGlmICggaXNf cHZoX3ZjcHUoc2FtcGxpbmcpICYmDQo+IC0gICAgICAgICAgICAgISh2cG11X21vZGUgJiBYRU5Q TVVfTU9ERV9BTEwpICYmDQo+ICsgICAgICAgIGlmICggISh2cG11X21vZGUgJiBYRU5QTVVfTU9E RV9BTEwpICYmDQo+ICAgICAgICAgICAgICAgIXZwbXUtPmFyY2hfdnBtdV9vcHMtPmRvX2ludGVy cnVwdChyZWdzKSApDQo+ICAgICAgICAgICAgICByZXR1cm47DQo+IA0KPiBkaWZmIC0tZ2l0IGEv eGVuL2FyY2gveDg2L2RvbWFpbi5jIGIveGVuL2FyY2gveDg2L2RvbWFpbi5jDQo+IGluZGV4IDdk MzA3MWUuLjc1ZGVkMjUgMTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9kb21haW4uYw0KPiAr KysgYi94ZW4vYXJjaC94ODYvZG9tYWluLmMNCj4gQEAgLTMyOCw3ICszMjgsNyBAQCBpbnQgc3dp dGNoX2NvbXBhdChzdHJ1Y3QgZG9tYWluICpkKQ0KPiANCj4gICAgICBpZiAoIGlzX2h2bV9kb21h aW4oZCkgfHwgZC0+dG90X3BhZ2VzICE9IDAgKQ0KPiAgICAgICAgICByZXR1cm4gLUVBQ0NFUzsN Cj4gLSAgICBpZiAoIGlzX3B2XzMyYml0X2RvbWFpbihkKSB8fCBpc19wdmhfMzJiaXRfZG9tYWlu KGQpICkNCj4gKyAgICBpZiAoIGlzX3B2XzMyYml0X2RvbWFpbihkKSApDQo+ICAgICAgICAgIHJl dHVybiAwOw0KPiANCj4gICAgICBkLT5hcmNoLmhhc18zMmJpdF9zaGluZm8gPSAxOw0KPiBAQCAt MzM5LDEyICszMzksNyBAQCBpbnQgc3dpdGNoX2NvbXBhdChzdHJ1Y3QgZG9tYWluICpkKQ0KPiAg ICAgIHsNCj4gICAgICAgICAgcmMgPSBzZXR1cF9jb21wYXRfYXJnX3hsYXQodik7DQo+ICAgICAg ICAgIGlmICggIXJjICkNCj4gLSAgICAgICAgew0KPiAtICAgICAgICAgICAgaWYgKCAhaXNfcHZo X2RvbWFpbihkKSApDQo+IC0gICAgICAgICAgICAgICAgcmMgPSBzZXR1cF9jb21wYXRfbDQodik7 DQo+IC0gICAgICAgICAgICBlbHNlDQo+IC0gICAgICAgICAgICAgICAgcmMgPSBodm1fc2V0X21v ZGUodiwgNCk7DQo+IC0gICAgICAgIH0NCj4gKyAgICAgICAgICAgIHJjID0gc2V0dXBfY29tcGF0 X2w0KHYpOw0KPiANCj4gICAgICAgICAgaWYgKCByYyApDQo+ICAgICAgICAgICAgICBnb3RvIHVu ZG9fYW5kX2ZhaWw7DQo+IEBAIC0zNjMsNyArMzU4LDcgQEAgaW50IHN3aXRjaF9jb21wYXQoc3Ry dWN0IGRvbWFpbiAqZCkNCj4gICAgICB7DQo+ICAgICAgICAgIGZyZWVfY29tcGF0X2FyZ194bGF0 KHYpOw0KPiANCj4gLSAgICAgICAgaWYgKCAhaXNfcHZoX2RvbWFpbihkKSAmJiAhcGFnZXRhYmxl X2lzX251bGwodi0+YXJjaC5ndWVzdF90YWJsZSkgKQ0KPiArICAgICAgICBpZiAoICFwYWdldGFi bGVfaXNfbnVsbCh2LT5hcmNoLmd1ZXN0X3RhYmxlKSApDQo+ICAgICAgICAgICAgICByZWxlYXNl X2NvbXBhdF9sNCh2KTsNCj4gICAgICB9DQo+IA0KPiBAQCAtODczLDcgKzg2OCw3IEBAIGludCBh cmNoX3NldF9pbmZvX2d1ZXN0KA0KPiANCj4gICAgICAvKiBUaGUgY29udGV4dCBpcyBhIGNvbXBh dC1tb2RlIG9uZSBpZiB0aGUgdGFyZ2V0IGRvbWFpbiBpcyBjb21wYXQtDQo+IG1vZGU7DQo+ICAg ICAgICogd2UgZXhwZWN0IHRoZSB0b29scyB0byBEVFJUIGV2ZW4gaW4gY29tcGF0LW1vZGUgY2Fs bGVycy4gKi8NCj4gLSAgICBjb21wYXQgPSBpc19wdl8zMmJpdF9kb21haW4oZCkgfHwgaXNfcHZo XzMyYml0X2RvbWFpbihkKTsNCj4gKyAgICBjb21wYXQgPSBpc19wdl8zMmJpdF9kb21haW4oZCk7 DQo+IA0KPiAgI2RlZmluZSBjKGZsZCkgKGNvbXBhdCA/IChjLmNtcC0+ZmxkKSA6IChjLm5hdC0+ ZmxkKSkNCj4gICAgICBmbGFncyA9IGMoZmxhZ3MpOw0KPiBAQCAtOTI1LDE4ICs5MjAsNiBAQCBp bnQgYXJjaF9zZXRfaW5mb19ndWVzdCgNCj4gICAgICAgICAgICAgICAoYyhsZHRfZW50cykgPiA4 MTkyKSApDQo+ICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gICAgICB9DQo+IC0gICAg ZWxzZSBpZiAoIGlzX3B2aF9kb21haW4oZCkgKQ0KPiAtICAgIHsNCj4gLSAgICAgICAgaWYgKCBj KGN0cmxyZWdbMF0pIHx8IGMoY3RybHJlZ1sxXSkgfHwgYyhjdHJscmVnWzJdKSB8fA0KPiAtICAg ICAgICAgICAgIGMoY3RybHJlZ1s0XSkgfHwgYyhjdHJscmVnWzVdKSB8fCBjKGN0cmxyZWdbNl0p IHx8DQo+IC0gICAgICAgICAgICAgYyhjdHJscmVnWzddKSB8fCAgYyhsZHRfYmFzZSkgfHwgYyhs ZHRfZW50cykgfHwNCj4gLSAgICAgICAgICAgICBjKHVzZXJfcmVncy5jcykgfHwgYyh1c2VyX3Jl Z3Muc3MpIHx8IGModXNlcl9yZWdzLmVzKSB8fA0KPiAtICAgICAgICAgICAgIGModXNlcl9yZWdz LmRzKSB8fCBjKHVzZXJfcmVncy5mcykgfHwgYyh1c2VyX3JlZ3MuZ3MpIHx8DQo+IC0gICAgICAg ICAgICAgYyhrZXJuZWxfc3MpIHx8IGMoa2VybmVsX3NwKSB8fCBjKGdkdF9lbnRzKSB8fA0KPiAt ICAgICAgICAgICAgICghY29tcGF0ICYmIChjLm5hdC0+Z3NfYmFzZV9rZXJuZWwgfHwNCj4gLSAg ICAgICAgICAgICAgYy5uYXQtPmZzX2Jhc2UgfHwgYy5uYXQtPmdzX2Jhc2VfdXNlcikpICkNCj4g LSAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiAtICAgIH0NCj4gDQo+ICAgICAgdi0+ZnB1 X2luaXRpYWxpc2VkID0gISEoZmxhZ3MgJiBWR0NGX0kzODdfVkFMSUQpOw0KPiANCj4gQEAgLTk5 MiwyMSArOTc1LDcgQEAgaW50IGFyY2hfc2V0X2luZm9fZ3Vlc3QoDQo+ICAgICAgICAgICAgICB2 LT5hcmNoLmRlYnVncmVnW2ldID0gYyhkZWJ1Z3JlZ1tpXSk7DQo+IA0KPiAgICAgICAgICBodm1f c2V0X2luZm9fZ3Vlc3Qodik7DQo+IC0NCj4gLSAgICAgICAgaWYgKCBpc19odm1fZG9tYWluKGQp IHx8IHYtPmlzX2luaXRpYWxpc2VkICkNCj4gLSAgICAgICAgICAgIGdvdG8gb3V0Ow0KPiAtDQo+ IC0gICAgICAgIC8qIE5COiBObyBuZWVkIHRvIHVzZSBQViBjcjMgdW4tcGlja2xpbmcgbWFjcm9z ICovDQo+IC0gICAgICAgIGNyM19nZm4gPSBjKGN0cmxyZWdbM10pID4+IFBBR0VfU0hJRlQ7DQo+ IC0gICAgICAgIGNyM19wYWdlID0gZ2V0X3BhZ2VfZnJvbV9nZm4oZCwgY3IzX2dmbiwgTlVMTCwg UDJNX0FMTE9DKTsNCj4gLQ0KPiAtICAgICAgICB2LT5hcmNoLmNyMyA9IHBhZ2VfdG9fbWFkZHIo Y3IzX3BhZ2UpOw0KPiAtICAgICAgICB2LT5hcmNoLmh2bV92Y3B1Lmd1ZXN0X2NyWzNdID0gYyhj dHJscmVnWzNdKTsNCj4gLSAgICAgICAgdi0+YXJjaC5ndWVzdF90YWJsZSA9IHBhZ2V0YWJsZV9m cm9tX3BhZ2UoY3IzX3BhZ2UpOw0KPiAtDQo+IC0gICAgICAgIEFTU0VSVChwYWdpbmdfbW9kZV9l bmFibGVkKGQpKTsNCj4gLQ0KPiAtICAgICAgICBnb3RvIHB2aF9za2lwX3B2X3N0dWZmOw0KPiAr ICAgICAgICBnb3RvIG91dDsNCj4gICAgICB9DQo+IA0KPiAgICAgIGluaXRfaW50ODBfZGlyZWN0 X3RyYXAodik7DQo+IEBAIC0xMjU5LDcgKzEyMjgsNiBAQCBpbnQgYXJjaF9zZXRfaW5mb19ndWVz dCgNCj4gDQo+ICAgICAgY2xlYXJfYml0KF9WUEZfaW5fcmVzZXQsICZ2LT5wYXVzZV9mbGFncyk7 DQo+IA0KPiAtIHB2aF9za2lwX3B2X3N0dWZmOg0KPiAgICAgIGlmICggdi0+dmNwdV9pZCA9PSAw ICkNCj4gICAgICAgICAgdXBkYXRlX2RvbWFpbl93YWxsY2xvY2tfdGltZShkKTsNCj4gDQo+IGRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZG9tYWluX2J1aWxkLmMgYi94ZW4vYXJjaC94ODYvZG9t YWluX2J1aWxkLmMNCj4gaW5kZXggNTA2NzgwZi4uODhmNjVjYiAxMDA2NDQNCj4gLS0tIGEveGVu L2FyY2gveDg2L2RvbWFpbl9idWlsZC5jDQo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9kb21haW5fYnVp bGQuYw0KPiBAQCAtNDcxLDE0MSArNDcxLDYgQEAgc3RhdGljIHZvaWQgX19pbml0DQo+IHByb2Nl c3NfZG9tMF9pb3BvcnRzX2Rpc2FibGUoc3RydWN0IGRvbWFpbiAqZG9tMCkNCj4gICAgICB9DQo+ ICB9DQo+IA0KPiAtc3RhdGljIF9faW5pdCB2b2lkIHB2aF9hZGRfbWVtX21hcHBpbmcoc3RydWN0 IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZw0KPiBnZm4sDQo+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1mbiwgdW5zaWduZWQgbG9uZyBucl9t Zm5zKQ0KPiAtew0KPiAtICAgIHVuc2lnbmVkIGxvbmcgaTsNCj4gLSAgICBwMm1fYWNjZXNzX3Qg YTsNCj4gLSAgICBtZm5fdCBvbWZuOw0KPiAtICAgIHAybV90eXBlX3QgdDsNCj4gLSAgICBpbnQg cmM7DQo+IC0NCj4gLSAgICBmb3IgKCBpID0gMDsgaSA8IG5yX21mbnM7IGkrKyApDQo+IC0gICAg ew0KPiAtICAgICAgICBpZiAoICFpb21lbV9hY2Nlc3NfcGVybWl0dGVkKGQsIG1mbiArIGksIG1m biArIGkpICkNCj4gLSAgICAgICAgew0KPiAtICAgICAgICAgICAgb21mbiA9IGdldF9nZm5fcXVl cnlfdW5sb2NrZWQoZCwgZ2ZuICsgaSwgJnQpOw0KPiAtICAgICAgICAgICAgZ3Vlc3RfcGh5c21h cF9yZW1vdmVfcGFnZShkLCBfZ2ZuKGdmbiArIGkpLCBvbWZuLA0KPiBQQUdFX09SREVSXzRLKTsN Cj4gLSAgICAgICAgICAgIGNvbnRpbnVlOw0KPiAtICAgICAgICB9DQo+IC0NCj4gLSAgICAgICAg aWYgKCByYW5nZXNldF9jb250YWluc19zaW5nbGV0b24obW1pb19yb19yYW5nZXMsIG1mbiArIGkp ICkNCj4gLSAgICAgICAgICAgIGEgPSBwMm1fYWNjZXNzX3I7DQo+IC0gICAgICAgIGVsc2UNCj4g LSAgICAgICAgICAgIGEgPSBwMm1fYWNjZXNzX3J3Ow0KPiAtDQo+IC0gICAgICAgIGlmICggKHJj ID0gc2V0X21taW9fcDJtX2VudHJ5KGQsIGdmbiArIGksIF9tZm4obWZuICsgaSksDQo+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBR0VfT1JERVJfNEssIGEpKSApDQo+ IC0gICAgICAgICAgICBwYW5pYygicHZoX2FkZF9tZW1fbWFwcGluZzogZ2ZuOiVseCBtZm46JWx4 IGk6JWxkIHJjOiVkXG4iLA0KPiAtICAgICAgICAgICAgICAgICAgZ2ZuLCBtZm4sIGksIHJjKTsN Cj4gLSAgICAgICAgaWYgKCAhKGkgJiAweGZmZmZmKSApDQo+IC0gICAgICAgICAgICAgICAgcHJv Y2Vzc19wZW5kaW5nX3NvZnRpcnFzKCk7DQo+IC0gICAgfQ0KPiAtfQ0KPiAtDQo+IC0vKg0KPiAt ICogU2V0IHRoZSAxOjEgbWFwIGZvciBhbGwgbm9uLVJBTSByZWdpb25zIGZvciBkb20gMC4gVGh1 cywgZG9tMCB3aWxsIGhhdmUNCj4gLSAqIHRoZSBlbnRpcmUgaW8gcmVnaW9uIG1hcHBlZCBpbiB0 aGUgRVBUL05QVC4NCj4gLSAqDQo+IC0gKiBwdmggZml4bWU6IFRoZSBmb2xsb3dpbmcgZG9lc24n dCBtYXAgTU1JTyByYW5nZXMgd2hlbiB0aGV5IHNpdCBhYm92ZQ0KPiB0aGUNCj4gLSAqICAgICAg ICAgICAgaGlnaGVzdCBFODIwIGNvdmVyZWQgYWRkcmVzcy4NCj4gLSAqLw0KPiAtc3RhdGljIF9f aW5pdCB2b2lkIHB2aF9tYXBfYWxsX2lvbWVtKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxv bmcNCj4gbnJfcGFnZXMpDQo+IC17DQo+IC0gICAgdW5zaWduZWQgbG9uZyBzdGFydF9wZm4sIGVu ZF9wZm4sIGVuZCA9IDAsIHN0YXJ0ID0gMDsNCj4gLSAgICBjb25zdCBzdHJ1Y3QgZTgyMGVudHJ5 ICplbnRyeTsNCj4gLSAgICB1bnNpZ25lZCBsb25nIG51bXAsIG5tYXAsIG5hdmFpbCwgbWZuLCBu cl9ob2xlcyA9IDA7DQo+IC0gICAgdW5zaWduZWQgaW50IGk7DQo+IC0gICAgc3RydWN0IHBhZ2Vf aW5mbyAqcGFnZTsNCj4gLSAgICBpbnQgcmM7DQo+IC0NCj4gLSAgICBmb3IgKCBpID0gMCwgZW50 cnkgPSBlODIwLm1hcDsgaSA8IGU4MjAubnJfbWFwOyBpKyssIGVudHJ5KysgKQ0KPiAtICAgIHsN Cj4gLSAgICAgICAgZW5kID0gZW50cnktPmFkZHIgKyBlbnRyeS0+c2l6ZTsNCj4gLQ0KPiAtICAg ICAgICBpZiAoIGVudHJ5LT50eXBlID09IEU4MjBfUkFNIHx8IGVudHJ5LT50eXBlID09IEU4MjBf VU5VU0FCTEUgfHwNCj4gLSAgICAgICAgICAgICBpID09IGU4MjAubnJfbWFwIC0gMSApDQo+IC0g ICAgICAgIHsNCj4gLSAgICAgICAgICAgIHN0YXJ0X3BmbiA9IFBGTl9ET1dOKHN0YXJ0KTsNCj4g LQ0KPiAtICAgICAgICAgICAgLyogVW51c2VkIFJBTSBhcmVhcyBhcmUgbWFya2VkIFVOVVNBQkxF LCBzbyBza2lwIHRoZW0gdG9vICovDQo+IC0gICAgICAgICAgICBpZiAoIGVudHJ5LT50eXBlID09 IEU4MjBfUkFNIHx8IGVudHJ5LT50eXBlID09IEU4MjBfVU5VU0FCTEUgKQ0KPiAtICAgICAgICAg ICAgICAgIGVuZF9wZm4gPSBQRk5fVVAoZW50cnktPmFkZHIpOw0KPiAtICAgICAgICAgICAgZWxz ZQ0KPiAtICAgICAgICAgICAgICAgIGVuZF9wZm4gPSBQRk5fVVAoZW5kKTsNCj4gLQ0KPiAtICAg ICAgICAgICAgaWYgKCBzdGFydF9wZm4gPCBlbmRfcGZuICkNCj4gLSAgICAgICAgICAgIHsNCj4g LSAgICAgICAgICAgICAgICBudW1wID0gZW5kX3BmbiAtIHN0YXJ0X3BmbjsNCj4gLSAgICAgICAg ICAgICAgICAvKiBBZGQgcGFnZXMgdG8gdGhlIG1hcHBpbmcgKi8NCj4gLSAgICAgICAgICAgICAg ICBwdmhfYWRkX21lbV9tYXBwaW5nKGQsIHN0YXJ0X3Bmbiwgc3RhcnRfcGZuLCBudW1wKTsNCj4g LSAgICAgICAgICAgICAgICBpZiAoIHN0YXJ0X3BmbiA8IG5yX3BhZ2VzICkNCj4gLSAgICAgICAg ICAgICAgICAgICAgbnJfaG9sZXMgKz0gKGVuZF9wZm4gPCBucl9wYWdlcykgPw0KPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtcCA6IChucl9wYWdlcyAtIHN0YXJ0X3Bm bik7DQo+IC0gICAgICAgICAgICB9DQo+IC0gICAgICAgICAgICBzdGFydCA9IGVuZDsNCj4gLSAg ICAgICAgfQ0KPiAtICAgIH0NCj4gLQ0KPiAtICAgIC8qDQo+IC0gICAgICogU29tZSBCSU9TZXMg bWF5IG5vdCByZXBvcnQgaW8gc3BhY2UgYWJvdmUgcmFtIHRoYXQgaXMgbGVzcyB0aGFuIDRHQi4N Cj4gU28NCj4gLSAgICAgKiB3ZSBtYXAgYW55IG5vbi1yYW0gdXB0byA0R0IuDQo+IC0gICAgICov DQo+IC0gICAgaWYgKCBlbmQgPCBHQig0KSApDQo+IC0gICAgew0KPiAtICAgICAgICBzdGFydF9w Zm4gPSBQRk5fVVAoZW5kKTsNCj4gLSAgICAgICAgZW5kX3BmbiA9IChHQig0KSkgPj4gUEFHRV9T SElGVDsNCj4gLSAgICAgICAgbnVtcCA9IGVuZF9wZm4gLSBzdGFydF9wZm47DQo+IC0gICAgICAg IHB2aF9hZGRfbWVtX21hcHBpbmcoZCwgc3RhcnRfcGZuLCBzdGFydF9wZm4sIG51bXApOw0KPiAt ICAgIH0NCj4gLQ0KPiAtICAgIC8qDQo+IC0gICAgICogQWRkIHRoZSBtZW1vcnkgcmVtb3ZlZCBi eSB0aGUgaG9sZXMgYXQgdGhlIGVuZCBvZiB0aGUNCj4gLSAgICAgKiBtZW1vcnkgbWFwLg0KPiAt ICAgICAqLw0KPiAtICAgIHBhZ2UgPSBwYWdlX2xpc3RfZmlyc3QoJmQtPnBhZ2VfbGlzdCk7DQo+ IC0gICAgZm9yICggaSA9IDAsIGVudHJ5ID0gZTgyMC5tYXA7IGkgPCBlODIwLm5yX21hcCAmJiBu cl9ob2xlcyA+IDA7DQo+IC0gICAgICAgICAgaSsrLCBlbnRyeSsrICkNCj4gLSAgICB7DQo+IC0g ICAgICAgIGlmICggZW50cnktPnR5cGUgIT0gRTgyMF9SQU0gKQ0KPiAtICAgICAgICAgICAgY29u dGludWU7DQo+IC0NCj4gLSAgICAgICAgZW5kX3BmbiA9IFBGTl9VUChlbnRyeS0+YWRkciArIGVu dHJ5LT5zaXplKTsNCj4gLSAgICAgICAgaWYgKCBlbmRfcGZuIDw9IG5yX3BhZ2VzICkNCj4gLSAg ICAgICAgICAgIGNvbnRpbnVlOw0KPiAtDQo+IC0gICAgICAgIG5hdmFpbCA9IGVuZF9wZm4gLSBu cl9wYWdlczsNCj4gLSAgICAgICAgbm1hcCA9IG1pbihuYXZhaWwsIG5yX2hvbGVzKTsNCj4gLSAg ICAgICAgbnJfaG9sZXMgLT0gbm1hcDsNCj4gLSAgICAgICAgc3RhcnRfcGZuID0gbWF4X3QodW5z aWduZWQgbG9uZywgbnJfcGFnZXMsIFBGTl9ET1dOKGVudHJ5LT5hZGRyKSk7DQo+IC0gICAgICAg IC8qDQo+IC0gICAgICAgICAqIFBvcHVsYXRlIHRoaXMgbWVtb3J5IHJlZ2lvbiB1c2luZyB0aGUg cGFnZXMNCj4gLSAgICAgICAgICogcHJldmlvdXNseSByZW1vdmVkIGJ5IHRoZSBNTUlPIGhvbGVz Lg0KPiAtICAgICAgICAgKi8NCj4gLSAgICAgICAgZG8NCj4gLSAgICAgICAgew0KPiAtICAgICAg ICAgICAgbWZuID0gcGFnZV90b19tZm4ocGFnZSk7DQo+IC0gICAgICAgICAgICBpZiAoIGdldF9n cGZuX2Zyb21fbWZuKG1mbikgIT0gSU5WQUxJRF9NMlBfRU5UUlkgKQ0KPiAtICAgICAgICAgICAg ICAgIGNvbnRpbnVlOw0KPiAtDQo+IC0gICAgICAgICAgICByYyA9IGd1ZXN0X3BoeXNtYXBfYWRk X3BhZ2UoZCwgX2dmbihzdGFydF9wZm4pLCBfbWZuKG1mbiksIDApOw0KPiAtICAgICAgICAgICAg aWYgKCByYyAhPSAwICkNCj4gLSAgICAgICAgICAgICAgICBwYW5pYygiVW5hYmxlIHRvIGFkZCBn cGZuICUjbHggbWZuICUjbHggdG8gRG9tMCBwaHlzbWFwOiAlZCIsDQo+IC0gICAgICAgICAgICAg ICAgICAgICAgc3RhcnRfcGZuLCBtZm4sIHJjKTsNCj4gLSAgICAgICAgICAgIHN0YXJ0X3Bmbisr Ow0KPiAtICAgICAgICAgICAgbm1hcC0tOw0KPiAtICAgICAgICAgICAgaWYgKCAhKG5tYXAgJiAw eGZmZmZmKSApDQo+IC0gICAgICAgICAgICAgICAgcHJvY2Vzc19wZW5kaW5nX3NvZnRpcnFzKCk7 DQo+IC0gICAgICAgIH0gd2hpbGUgKCAoKHBhZ2UgPSBwYWdlX2xpc3RfbmV4dChwYWdlLCAmZC0+ cGFnZV9saXN0KSkgIT0gTlVMTCkNCj4gLSAgICAgICAgICAgICAgICAgICYmIG5tYXAgKTsNCj4g LSAgICAgICAgQVNTRVJUKG5tYXAgPT0gMCk7DQo+IC0gICAgICAgIGlmICggcGFnZSA9PSBOVUxM ICkNCj4gLSAgICAgICAgICAgIGJyZWFrOw0KPiAtICAgIH0NCj4gLQ0KPiAtICAgIEFTU0VSVChu cl9ob2xlcyA9PSAwKTsNCj4gLX0NCj4gLQ0KPiAgc3RhdGljIF9faW5pdCB2b2lkIHB2aF9zZXR1 cF9lODIwKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcNCj4gbnJfcGFnZXMpDQo+ICB7 DQo+ICAgICAgc3RydWN0IGU4MjBlbnRyeSAqZW50cnksICplbnRyeV9ndWVzdDsNCj4gQEAgLTY3 NiwxMiArNTQxLDYgQEAgc3RhdGljIF9faW5pdCB2b2lkIHB2aF9zZXR1cF9lODIwKHN0cnVjdCBk b21haW4gKmQsDQo+IHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpDQo+ICBzdGF0aWMgX19pbml0IHZv aWQgZG9tMF91cGRhdGVfcGh5c21hcChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nDQo+ IHBmbiwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u ZyBtZm4sIHVuc2lnbmVkIGxvbmcgdnBoeXNtYXBfcykNCj4gIHsNCj4gLSAgICBpZiAoIGlzX3B2 aF9kb21haW4oZCkgKQ0KPiAtICAgIHsNCj4gLSAgICAgICAgaW50IHJjID0gZ3Vlc3RfcGh5c21h cF9hZGRfcGFnZShkLCBfZ2ZuKHBmbiksIF9tZm4obWZuKSwgMCk7DQo+IC0gICAgICAgIEJVR19P TihyYyk7DQo+IC0gICAgICAgIHJldHVybjsNCj4gLSAgICB9DQo+ICAgICAgaWYgKCAhaXNfcHZf MzJiaXRfZG9tYWluKGQpICkNCj4gICAgICAgICAgKCh1bnNpZ25lZCBsb25nICopdnBoeXNtYXBf cylbcGZuXSA9IG1mbjsNCj4gICAgICBlbHNlDQo+IEBAIC02OTAsNzggKzU0OSw2IEBAIHN0YXRp YyBfX2luaXQgdm9pZCBkb20wX3VwZGF0ZV9waHlzbWFwKHN0cnVjdA0KPiBkb21haW4gKmQsIHVu c2lnbmVkIGxvbmcgcGZuLA0KPiAgICAgIHNldF9ncGZuX2Zyb21fbWZuKG1mbiwgcGZuKTsNCj4g IH0NCj4gDQo+IC0vKiBSZXBsYWNlIG1mbnMgd2l0aCBwZm5zIGluIGRvbTAgcGFnZSB0YWJsZXMg Ki8NCj4gLXN0YXRpYyBfX2luaXQgdm9pZCBwdmhfZml4dXBfcGFnZV90YWJsZXNfZm9yX2hhcChz dHJ1Y3QgdmNwdSAqdiwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBsb25nIHZfc3RhcnQsDQo+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB2X2VuZCkNCj4gLXsN Cj4gLSAgICBpbnQgaSwgaiwgazsNCj4gLSAgICBsNF9wZ2VudHJ5X3QgKnBsNGUsICpsNHN0YXJ0 Ow0KPiAtICAgIGwzX3BnZW50cnlfdCAqcGwzZTsNCj4gLSAgICBsMl9wZ2VudHJ5X3QgKnBsMmU7 DQo+IC0gICAgbDFfcGdlbnRyeV90ICpwbDFlOw0KPiAtICAgIHVuc2lnbmVkIGxvbmcgY3IzX3Bm bjsNCj4gLQ0KPiAtICAgIEFTU0VSVChwYWdpbmdfbW9kZV9lbmFibGVkKHYtPmRvbWFpbikpOw0K PiAtDQo+IC0gICAgbDRzdGFydCA9IG1hcF9kb21haW5fcGFnZShfbWZuKHBhZ2V0YWJsZV9nZXRf cGZuKHYtDQo+ID5hcmNoLmd1ZXN0X3RhYmxlKSkpOw0KPiAtDQo+IC0gICAgLyogQ2xlYXIgZW50 cmllcyBwcmlvciB0byBndWVzdCBMNCBzdGFydCAqLw0KPiAtICAgIHBsNGUgPSBsNHN0YXJ0ICsg bDRfdGFibGVfb2Zmc2V0KHZfc3RhcnQpOw0KPiAtICAgIG1lbXNldChsNHN0YXJ0LCAwLCAodW5z aWduZWQgbG9uZylwbDRlIC0gKHVuc2lnbmVkIGxvbmcpbDRzdGFydCk7DQo+IC0NCj4gLSAgICBm b3IgKCA7IHBsNGUgPD0gbDRzdGFydCArIGw0X3RhYmxlX29mZnNldCh2X2VuZCAtIDEpOyBwbDRl KysgKQ0KPiAtICAgIHsNCj4gLSAgICAgICAgcGwzZSA9IG1hcF9sM3RfZnJvbV9sNGUoKnBsNGUp Ow0KPiAtICAgICAgICBmb3IgKCBpID0gMDsgaSA8IFBBR0VfU0laRSAvIHNpemVvZigqcGwzZSk7 IGkrKywgcGwzZSsrICkNCj4gLSAgICAgICAgew0KPiAtICAgICAgICAgICAgaWYgKCAhKGwzZV9n ZXRfZmxhZ3MoKnBsM2UpICYgX1BBR0VfUFJFU0VOVCkgKQ0KPiAtICAgICAgICAgICAgICAgIGNv bnRpbnVlOw0KPiAtDQo+IC0gICAgICAgICAgICBwbDJlID0gbWFwX2wydF9mcm9tX2wzZSgqcGwz ZSk7DQo+IC0gICAgICAgICAgICBmb3IgKCBqID0gMDsgaiA8IFBBR0VfU0laRSAvIHNpemVvZigq cGwyZSk7IGorKywgcGwyZSsrICkNCj4gLSAgICAgICAgICAgIHsNCj4gLSAgICAgICAgICAgICAg ICBpZiAoICEobDJlX2dldF9mbGFncygqcGwyZSkgICYgX1BBR0VfUFJFU0VOVCkgKQ0KPiAtICAg ICAgICAgICAgICAgICAgICBjb250aW51ZTsNCj4gLQ0KPiAtICAgICAgICAgICAgICAgIHBsMWUg PSBtYXBfbDF0X2Zyb21fbDJlKCpwbDJlKTsNCj4gLSAgICAgICAgICAgICAgICBmb3IgKCBrID0g MDsgayA8IFBBR0VfU0laRSAvIHNpemVvZigqcGwxZSk7IGsrKywgcGwxZSsrICkNCj4gLSAgICAg ICAgICAgICAgICB7DQo+IC0gICAgICAgICAgICAgICAgICAgIGlmICggIShsMWVfZ2V0X2ZsYWdz KCpwbDFlKSAmIF9QQUdFX1BSRVNFTlQpICkNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgIGNv bnRpbnVlOw0KPiAtDQo+IC0gICAgICAgICAgICAgICAgICAgICpwbDFlID0gbDFlX2Zyb21fcGZu KGdldF9ncGZuX2Zyb21fbWZuKGwxZV9nZXRfcGZuKCpwbDFlKSksDQo+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwxZV9nZXRfZmxhZ3MoKnBsMWUpKTsNCj4gLSAg ICAgICAgICAgICAgICB9DQo+IC0gICAgICAgICAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2UocGwx ZSk7DQo+IC0gICAgICAgICAgICAgICAgKnBsMmUgPSBsMmVfZnJvbV9wZm4oZ2V0X2dwZm5fZnJv bV9tZm4obDJlX2dldF9wZm4oKnBsMmUpKSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBsMmVfZ2V0X2ZsYWdzKCpwbDJlKSk7DQo+IC0gICAgICAgICAgICB9DQo+IC0g ICAgICAgICAgICB1bm1hcF9kb21haW5fcGFnZShwbDJlKTsNCj4gLSAgICAgICAgICAgICpwbDNl ID0gbDNlX2Zyb21fcGZuKGdldF9ncGZuX2Zyb21fbWZuKGwzZV9nZXRfcGZuKCpwbDNlKSksDQo+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsM2VfZ2V0X2ZsYWdzKCpwbDNlKSk7 DQo+IC0gICAgICAgIH0NCj4gLSAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2UocGwzZSk7DQo+IC0g ICAgICAgICpwbDRlID0gbDRlX2Zyb21fcGZuKGdldF9ncGZuX2Zyb21fbWZuKGw0ZV9nZXRfcGZu KCpwbDRlKSksDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw0ZV9nZXRfZmxhZ3Mo KnBsNGUpKTsNCj4gLSAgICB9DQo+IC0NCj4gLSAgICAvKiBDbGVhciBlbnRyaWVzIHBvc3QgZ3Vl c3QgTDQuICovDQo+IC0gICAgaWYgKCAodW5zaWduZWQgbG9uZylwbDRlICYgKFBBR0VfU0laRSAt IDEpICkNCj4gLSAgICAgICAgbWVtc2V0KHBsNGUsIDAsIFBBR0VfU0laRSAtICgodW5zaWduZWQg bG9uZylwbDRlICYgKFBBR0VfU0laRSAtIDEpKSk7DQo+IC0NCj4gLSAgICB1bm1hcF9kb21haW5f cGFnZShsNHN0YXJ0KTsNCj4gLQ0KPiAtICAgIGNyM19wZm4gPSBnZXRfZ3Bmbl9mcm9tX21mbihw YWRkcl90b19wZm4odi0+YXJjaC5jcjMpKTsNCj4gLSAgICB2LT5hcmNoLmh2bV92Y3B1Lmd1ZXN0 X2NyWzNdID0gcGZuX3RvX3BhZGRyKGNyM19wZm4pOw0KPiAtDQo+IC0gICAgLyoNCj4gLSAgICAg KiBGaW5hbGx5LCB3ZSB1cGRhdGUgdGhlIHBhZ2luZyBtb2RlcyAoaGFwX3VwZGF0ZV9wYWdpbmdf bW9kZXMpLg0KPiBUaGlzIHdpbGwNCj4gLSAgICAgKiBjcmVhdGUgbW9uaXRvcl90YWJsZSBmb3Ig dXMsIHVwZGF0ZSB2LT5hcmNoLmNyMywgYW5kIHVwZGF0ZSB2bWNzLmNyMy4NCj4gLSAgICAgKi8N Cj4gLSAgICBwYWdpbmdfdXBkYXRlX3BhZ2luZ19tb2Rlcyh2KTsNCj4gLX0NCj4gLQ0KPiAgc3Rh dGljIF9faW5pdCB2b2lkIG1hcmtfcHZfcHRfcGFnZXNfcmRvbmx5KHN0cnVjdCBkb21haW4gKmQs DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDRfcGdlbnRy eV90ICpsNHN0YXJ0LA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGxvbmcgdnB0X3N0YXJ0LA0KPiBAQCAtMTA1Myw4ICs4NDAsNiBAQCBzdGF0 aWMgaW50IF9faW5pdCBjb25zdHJ1Y3RfZG9tMF9wdigNCj4gICAgICBsM19wZ2VudHJ5X3QgKmwz dGFiID0gTlVMTCwgKmwzc3RhcnQgPSBOVUxMOw0KPiAgICAgIGwyX3BnZW50cnlfdCAqbDJ0YWIg PSBOVUxMLCAqbDJzdGFydCA9IE5VTEw7DQo+ICAgICAgbDFfcGdlbnRyeV90ICpsMXRhYiA9IE5V TEwsICpsMXN0YXJ0ID0gTlVMTDsNCj4gLSAgICBwYWRkcl90IHNoYXJlZF9pbmZvX3BhZGRyID0g MDsNCj4gLSAgICB1MzIgc2F2ZV9wdmhfcGdfbW9kZSA9IDA7DQo+IA0KPiAgICAgIC8qDQo+ICAg ICAgICogVGhpcyBmdWxseSBkZXNjcmliZXMgdGhlIG1lbW9yeSBsYXlvdXQgb2YgdGhlIGluaXRp YWwgZG9tYWluLiBBbGwNCj4gQEAgLTExMzUsMTMgKzkyMCw2IEBAIHN0YXRpYyBpbnQgX19pbml0 IGNvbnN0cnVjdF9kb20wX3B2KA0KPiAgICAgICAgICAgICAgcmMgPSAtRUlOVkFMOw0KPiAgICAg ICAgICAgICAgZ290byBvdXQ7DQo+ICAgICAgICAgIH0NCj4gLSAgICAgICAgaWYgKCBpc19wdmhf ZG9tYWluKGQpICYmDQo+IC0gICAgICAgICAgICAgIXRlc3RfYml0KFhFTkZFQVRfaHZtX2NhbGxi YWNrX3ZlY3RvciwgcGFybXMuZl9zdXBwb3J0ZWQpICkNCj4gLSAgICAgICAgew0KPiAtICAgICAg ICAgICAgcHJpbnRrKCJLZXJuZWwgZG9lcyBub3Qgc3VwcG9ydCBQVkggbW9kZVxuIik7DQo+IC0g ICAgICAgICAgICByYyA9IC1FSU5WQUw7DQo+IC0gICAgICAgICAgICBnb3RvIG91dDsNCj4gLSAg ICAgICAgfQ0KPiAgICAgIH0NCj4gDQo+ICAgICAgaWYgKCBjb21wYXQzMiApDQo+IEBAIC0xMjA3 LDEyICs5ODUsNiBAQCBzdGF0aWMgaW50IF9faW5pdCBjb25zdHJ1Y3RfZG9tMF9wdigNCj4gICAg ICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3Qgc3RhcnRfaW5mbykgKw0KPiAgICAg ICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBkb20wX3ZnYV9jb25zb2xlX2luZm8p KTsNCj4gDQo+IC0gICAgaWYgKCBpc19wdmhfZG9tYWluKGQpICkNCj4gLSAgICB7DQo+IC0gICAg ICAgIHNoYXJlZF9pbmZvX3BhZGRyID0gcm91bmRfcGd1cCh2c3RhcnRpbmZvX2VuZCkgLSB2X3N0 YXJ0Ow0KPiAtICAgICAgICB2c3RhcnRpbmZvX2VuZCAgICs9IFBBR0VfU0laRTsNCj4gLSAgICB9 DQo+IC0NCj4gICAgICB2cHRfc3RhcnQgICAgICAgID0gcm91bmRfcGd1cCh2c3RhcnRpbmZvX2Vu ZCk7DQo+ICAgICAgZm9yICggbnJfcHRfcGFnZXMgPSAyOyA7IG5yX3B0X3BhZ2VzKysgKQ0KPiAg ICAgIHsNCj4gQEAgLTE0NTgsMTEgKzEyMzAsNiBAQCBzdGF0aWMgaW50IF9faW5pdCBjb25zdHJ1 Y3RfZG9tMF9wdigNCj4gICAgICAgICAgc2V0dXBfZG9tMF92Y3B1KGQsIGksIGNwdSk7DQo+ICAg ICAgfQ0KPiANCj4gLSAgICAvKg0KPiAtICAgICAqIHB2aDogd2UgdGVtcG9yYXJpbHkgZGlzYWJs ZSBkLT5hcmNoLnBhZ2luZy5tb2RlIHNvIHRoYXQgd2UgY2FuIGJ1aWxkDQo+IGNyMw0KPiAtICAg ICAqIG5lZWRlZCB0byBydW4gb24gZG9tMCdzIHBhZ2UgdGFibGVzLg0KPiAtICAgICAqLw0KPiAt ICAgIHNhdmVfcHZoX3BnX21vZGUgPSBkLT5hcmNoLnBhZ2luZy5tb2RlOw0KPiAgICAgIGQtPmFy Y2gucGFnaW5nLm1vZGUgPSAwOw0KPiANCj4gICAgICAvKiBTZXQgdXAgQ1IzIHZhbHVlIGZvciB3 cml0ZV9wdGJhc2UgKi8NCj4gQEAgLTE1MzIsMjUgKzEyOTksNiBAQCBzdGF0aWMgaW50IF9faW5p dCBjb25zdHJ1Y3RfZG9tMF9wdigNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICBucl9wYWdl cyk7DQo+ICAgICAgfQ0KPiANCj4gLSAgICAvKg0KPiAtICAgICAqIFdlIGVuYWJsZSBwYWdpbmcg bW9kZSBhZ2FpbiBzbyBndWVzdF9waHlzbWFwX2FkZF9wYWdlIGFuZA0KPiAtICAgICAqIHBhZ2lu Z19zZXRfYWxsb2NhdGlvbiB3aWxsIGRvIHRoZSByaWdodCB0aGluZyBmb3IgdXMuDQo+IC0gICAg ICovDQo+IC0gICAgZC0+YXJjaC5wYWdpbmcubW9kZSA9IHNhdmVfcHZoX3BnX21vZGU7DQo+IC0N Cj4gLSAgICBpZiAoIGlzX3B2aF9kb21haW4oZCkgKQ0KPiAtICAgIHsNCj4gLSAgICAgICAgYm9v bCBwcmVlbXB0ZWQ7DQo+IC0NCj4gLSAgICAgICAgZG8gew0KPiAtICAgICAgICAgICAgcHJlZW1w dGVkID0gZmFsc2U7DQo+IC0gICAgICAgICAgICBwYWdpbmdfc2V0X2FsbG9jYXRpb24oZCwgZG9t MF9wYWdpbmdfcGFnZXMoZCwgbnJfcGFnZXMpLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZwcmVlbXB0ZWQpOw0KPiAtICAgICAgICAgICAgcHJvY2Vzc19wZW5kaW5nX3Nv ZnRpcnFzKCk7DQo+IC0gICAgICAgIH0gd2hpbGUgKCBwcmVlbXB0ZWQgKTsNCj4gLSAgICB9DQo+ IC0NCj4gLQ0KPiAgICAgIC8qIFdyaXRlIHRoZSBwaHlzLT5tYWNoaW5lIGFuZCBtYWNoaW5lLT5w aHlzIHRhYmxlIGVudHJpZXMuICovDQo+ICAgICAgZm9yICggcGZuID0gMDsgcGZuIDwgY291bnQ7 IHBmbisrICkNCj4gICAgICB7DQo+IEBAIC0xNjI4LDE1ICsxMzc2LDYgQEAgc3RhdGljIGludCBf X2luaXQgY29uc3RydWN0X2RvbTBfcHYoDQo+ICAgICAgICAgIHNpLT5jb25zb2xlLmRvbTAuaW5m b19zaXplID0gc2l6ZW9mKHN0cnVjdCBkb20wX3ZnYV9jb25zb2xlX2luZm8pOw0KPiAgICAgIH0N Cj4gDQo+IC0gICAgLyoNCj4gLSAgICAgKiBQVkg6IFdlIG5lZWQgdG8gdXBkYXRlIHNpLT5zaGFy ZWRfaW5mbyB3aGlsZSB3ZSBhcmUgb24gZG9tMCBwYWdlDQo+IHRhYmxlcywNCj4gLSAgICAgKiBi dXQgbmVlZCB0byBkZWZlciB0aGUgcDJtIHVwZGF0ZSB1bnRpbCBhZnRlciB3ZSBoYXZlIGZpeGVk IHVwIHRoZQ0KPiAtICAgICAqIHBhZ2UgdGFibGVzIGZvciBQVkggc28gdGhhdCB0aGUgbTJwIGZv ciB0aGUgc2kgcHRlIGVudHJ5IHJldHVybnMNCj4gLSAgICAgKiBjb3JyZWN0IHBmbi4NCj4gLSAg ICAgKi8NCj4gLSAgICBpZiAoIGlzX3B2aF9kb21haW4oZCkgKQ0KPiAtICAgICAgICBzaS0+c2hh cmVkX2luZm8gPSBzaGFyZWRfaW5mb19wYWRkcjsNCj4gLQ0KPiAgICAgIGlmICggaXNfcHZfMzJi aXRfZG9tYWluKGQpICkNCj4gICAgICAgICAgeGxhdF9zdGFydF9pbmZvKHNpLCBYTEFUX3N0YXJ0 X2luZm9fY29uc29sZV9kb20wKTsNCj4gDQo+IEBAIC0xNjcwLDE2ICsxNDA5LDggQEAgc3RhdGlj IGludCBfX2luaXQgY29uc3RydWN0X2RvbTBfcHYoDQo+ICAgICAgcmVncy0+X2VmbGFncyA9IFg4 Nl9FRkxBR1NfSUY7DQo+IA0KPiAgI2lmZGVmIENPTkZJR19TSEFET1dfUEFHSU5HDQo+IC0gICAg aWYgKCBvcHRfZG9tMF9zaGFkb3cgKQ0KPiAtICAgIHsNCj4gLSAgICAgICAgaWYgKCBpc19wdmhf ZG9tYWluKGQpICkNCj4gLSAgICAgICAgew0KPiAtICAgICAgICAgICAgcHJpbnRrKCJVbnN1cHBv cnRlZCBvcHRpb24gZG9tMF9zaGFkb3cgZm9yIFBWSFxuIik7DQo+IC0gICAgICAgICAgICByZXR1 cm4gLUVJTlZBTDsNCj4gLSAgICAgICAgfQ0KPiAtICAgICAgICBpZiAoIHBhZ2luZ19lbmFibGUo ZCwgUEdfU0hfZW5hYmxlKSA9PSAwICkNCj4gLSAgICAgICAgICAgIHBhZ2luZ191cGRhdGVfcGFn aW5nX21vZGVzKHYpOw0KPiAtICAgIH0NCj4gKyAgICBpZiAoIG9wdF9kb20wX3NoYWRvdyAmJiBw YWdpbmdfZW5hYmxlKGQsIFBHX1NIX2VuYWJsZSkgPT0gMCApDQo+ICsgICAgICAgIHBhZ2luZ191 cGRhdGVfcGFnaW5nX21vZGVzKHYpOw0KPiAgI2VuZGlmDQo+IA0KPiAgICAgIC8qDQo+IEBAIC0x Njk2LDIwICsxNDI3LDYgQEAgc3RhdGljIGludCBfX2luaXQgY29uc3RydWN0X2RvbTBfcHYoDQo+ ICAgICAgICAgIHByaW50aygiIFhlbiB3YXJuaW5nOiBkb20wIGtlcm5lbCBicm9rZW4gRUxGOiAl c1xuIiwNCj4gICAgICAgICAgICAgICAgIGVsZl9jaGVja19icm9rZW4oJmVsZikpOw0KPiANCj4g LSAgICBpZiAoIGlzX3B2aF9kb21haW4oZCkgKQ0KPiAtICAgIHsNCj4gLSAgICAgICAgLyogZmlu YWxseSwgZml4dXAgdGhlIHBhZ2UgdGFibGUsIHJlcGxhY2luZyBtZm5zIHdpdGggcGZucyAqLw0K PiAtICAgICAgICBwdmhfZml4dXBfcGFnZV90YWJsZXNfZm9yX2hhcCh2LCB2X3N0YXJ0LCB2X2Vu ZCk7DQo+IC0NCj4gLSAgICAgICAgLyogdGhlIHB0IGhhcyBjb3JyZWN0IHBmbiBmb3Igc2ksIG5v dyB1cGRhdGUgdGhlIG1mbiBpbiB0aGUgcDJtICovDQo+IC0gICAgICAgIG1mbiA9IHZpcnRfdG9f bWZuKGQtPnNoYXJlZF9pbmZvKTsNCj4gLSAgICAgICAgcGZuID0gc2hhcmVkX2luZm9fcGFkZHIg Pj4gUEFHRV9TSElGVDsNCj4gLSAgICAgICAgZG9tMF91cGRhdGVfcGh5c21hcChkLCBwZm4sIG1m biwgMCk7DQo+IC0NCj4gLSAgICAgICAgcHZoX21hcF9hbGxfaW9tZW0oZCwgbnJfcGFnZXMpOw0K PiAtICAgICAgICBwdmhfc2V0dXBfZTgyMChkLCBucl9wYWdlcyk7DQo+IC0gICAgfQ0KPiAtDQo+ ICAgICAgaWYgKCBkLT5kb21haW5faWQgPT0gaGFyZHdhcmVfZG9taWQgKQ0KPiAgICAgICAgICBp b21tdV9od2RvbV9pbml0KGQpOw0KPiANCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9kb21j dGwuYyBiL3hlbi9hcmNoL3g4Ni9kb21jdGwuYw0KPiBpbmRleCBhM2RkMjc2Li4yYzE4OTNkIDEw MDY0NA0KPiAtLS0gYS94ZW4vYXJjaC94ODYvZG9tY3RsLmMNCj4gKysrIGIveGVuL2FyY2gveDg2 L2RvbWN0bC5jDQo+IEBAIC02MTgsOSArNjE4LDggQEAgbG9uZyBhcmNoX2RvX2RvbWN0bCgNCj4g ICAgICAgICAgYnJlYWs7DQo+IA0KPiAgICAgIGNhc2UgWEVOX0RPTUNUTF9nZXRfYWRkcmVzc19z aXplOg0KPiAtICAgICAgICBkb21jdGwtPnUuYWRkcmVzc19zaXplLnNpemUgPQ0KPiAtICAgICAg ICAgICAgKGlzX3B2XzMyYml0X2RvbWFpbihkKSB8fCBpc19wdmhfMzJiaXRfZG9tYWluKGQpKSA/ DQo+IC0gICAgICAgICAgICAzMiA6IEJJVFNfUEVSX0xPTkc7DQo+ICsgICAgICAgIGRvbWN0bC0+ dS5hZGRyZXNzX3NpemUuc2l6ZSA9IGlzX3B2XzMyYml0X2RvbWFpbihkKSA/IDMyIDoNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQklUU19QRVJfTE9ORzsNCj4gICAgICAgICAgY29weWJhY2sgPSAxOw0KPiAgICAgICAgICBi cmVhazsNCj4gDQo+IEBAIC0xNDkzLDcgKzE0OTIsNyBAQCB2b2lkIGFyY2hfZ2V0X2luZm9fZ3Vl c3Qoc3RydWN0IHZjcHUgKnYsDQo+IHZjcHVfZ3Vlc3RfY29udGV4dF91IGMpDQo+ICB7DQo+ICAg ICAgdW5zaWduZWQgaW50IGk7DQo+ICAgICAgY29uc3Qgc3RydWN0IGRvbWFpbiAqZCA9IHYtPmRv bWFpbjsNCj4gLSAgICBib29sX3QgY29tcGF0ID0gaXNfcHZfMzJiaXRfZG9tYWluKGQpIHx8IGlz X3B2aF8zMmJpdF9kb21haW4oZCk7DQo+ICsgICAgYm9vbF90IGNvbXBhdCA9IGlzX3B2XzMyYml0 X2RvbWFpbihkKTsNCj4gICNkZWZpbmUgYyhmbGQpICghY29tcGF0ID8gKGMubmF0LT5mbGQpIDog KGMuY21wLT5mbGQpKQ0KPiANCj4gICAgICBpZiAoICFpc19wdl9kb21haW4oZCkgKQ0KPiBkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9odm0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMN Cj4gaW5kZXggOWVlYjBhMi4uYjk1YjUwMCAxMDA2NDQNCj4gLS0tIGEveGVuL2FyY2gveDg2L2h2 bS9odm0uYw0KPiArKysgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jDQo+IEBAIC0xODAsOSArMTgw LDYgQEAgc3RhdGljIGludCBfX2luaXQgaHZtX2VuYWJsZSh2b2lkKQ0KPiAgICAgICAgICBwcmlu dGsoIlxuIik7DQo+ICAgICAgfQ0KPiANCj4gLSAgICBpZiAoICFmbnMtPnB2aF9zdXBwb3J0ZWQg KQ0KPiAtICAgICAgICBwcmludGsoWEVOTE9HX0lORk8gIkhWTTogUFZIIG1vZGUgbm90IHN1cHBv cnRlZCBvbiB0aGlzDQo+IHBsYXRmb3JtXG4iKTsNCj4gLQ0KPiAgICAgIGlmICggIW9wdF9hbHRw Mm1fZW5hYmxlZCApDQo+ICAgICAgICAgIGh2bV9mdW5jcy5hbHRwMm1fc3VwcG9ydGVkID0gMDsN Cj4gDQo+IEBAIC00MzEsMTAgKzQyOCw2IEBAIHU2NCBodm1fZ2V0X2d1ZXN0X3RzY19maXhlZChz dHJ1Y3QgdmNwdSAqdiwNCj4gdWludDY0X3QgYXRfdHNjKQ0KPiANCj4gIHZvaWQgaHZtX21pZ3Jh dGVfdGltZXJzKHN0cnVjdCB2Y3B1ICp2KQ0KPiAgew0KPiAtICAgIC8qIFBWSCBkb2Vzbid0IHVz ZSBydGMgYW5kIGVtdWxhdGVkIHRpbWVycywgaXQgdXNlcyBwdmNsb2NrIG1lY2hhbmlzbS4NCj4g Ki8NCj4gLSAgICBpZiAoIGlzX3B2aF92Y3B1KHYpICkNCj4gLSAgICAgICAgcmV0dXJuOw0KPiAt DQo+ICAgICAgcnRjX21pZ3JhdGVfdGltZXJzKHYpOw0KPiAgICAgIHB0X21pZ3JhdGUodik7DQo+ ICB9DQo+IEBAIC01OTQsMTkgKzU4Nyw2IEBAIHN0YXRpYyBpbnQgaHZtX3ByaW50X2xpbmUoDQo+ ICAgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsNCj4gIH0NCj4gDQo+IC1zdGF0aWMgaW50IGhhbmRs ZV9wdmhfaW8oDQo+IC0gICAgaW50IGRpciwgdW5zaWduZWQgaW50IHBvcnQsIHVuc2lnbmVkIGlu dCBieXRlcywgdWludDMyX3QgKnZhbCkNCj4gLXsNCj4gLSAgICBzdHJ1Y3QgZG9tYWluICpjdXJy ZCA9IGN1cnJlbnQtPmRvbWFpbjsNCj4gLQ0KPiAtICAgIGlmICggZGlyID09IElPUkVRX1dSSVRF ICkNCj4gLSAgICAgICAgZ3Vlc3RfaW9fd3JpdGUocG9ydCwgYnl0ZXMsICp2YWwsIGN1cnJkKTsN Cj4gLSAgICBlbHNlDQo+IC0gICAgICAgICp2YWwgPSBndWVzdF9pb19yZWFkKHBvcnQsIGJ5dGVz LCBjdXJyZCk7DQo+IC0NCj4gLSAgICByZXR1cm4gWDg2RU1VTF9PS0FZOw0KPiAtfQ0KPiAtDQo+ ICBpbnQgaHZtX2RvbWFpbl9pbml0aWFsaXNlKHN0cnVjdCBkb21haW4gKmQpDQo+ICB7DQo+ICAg ICAgaW50IHJjOw0KPiBAQCAtNjE4LDIyICs1OTgsNiBAQCBpbnQgaHZtX2RvbWFpbl9pbml0aWFs aXNlKHN0cnVjdCBkb21haW4gKmQpDQo+ICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiAgICAg IH0NCj4gDQo+IC0gICAgaWYgKCBpc19wdmhfZG9tYWluKGQpICkNCj4gLSAgICB7DQo+IC0gICAg ICAgIGlmICggIWh2bV9mdW5jcy5wdmhfc3VwcG9ydGVkICkNCj4gLSAgICAgICAgew0KPiAtICAg ICAgICAgICAgcHJpbnRrKFhFTkxPR19HX1dBUk5JTkcgIkF0dGVtcHQgdG8gY3JlYXRlIGEgUFZI IGd1ZXN0ICINCj4gLSAgICAgICAgICAgICAgICAgICAib24gYSBzeXN0ZW0gd2l0aG91dCBuZWNl c3NhcnkgaGFyZHdhcmUgc3VwcG9ydFxuIik7DQo+IC0gICAgICAgICAgICByZXR1cm4gLUVJTlZB TDsNCj4gLSAgICAgICAgfQ0KPiAtICAgICAgICBpZiAoICFoYXBfZW5hYmxlZChkKSApDQo+IC0g ICAgICAgIHsNCj4gLSAgICAgICAgICAgIHByaW50ayhYRU5MT0dfR19JTkZPICJQVkggZ3Vlc3Qg bXVzdCBoYXZlIEhBUCBvblxuIik7DQo+IC0gICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4g LSAgICAgICAgfQ0KPiAtDQo+IC0gICAgfQ0KPiAtDQo+ICAgICAgc3Bpbl9sb2NrX2luaXQoJmQt PmFyY2guaHZtX2RvbWFpbi5pcnFfbG9jayk7DQo+ICAgICAgc3Bpbl9sb2NrX2luaXQoJmQtPmFy Y2guaHZtX2RvbWFpbi51Y19sb2NrKTsNCj4gICAgICBzcGluX2xvY2tfaW5pdCgmZC0+YXJjaC5o dm1fZG9tYWluLndyaXRlX21hcC5sb2NrKTsNCj4gQEAgLTY3NSwxMiArNjM5LDYgQEAgaW50IGh2 bV9kb21haW5faW5pdGlhbGlzZShzdHJ1Y3QgZG9tYWluICpkKQ0KPiANCj4gICAgICBodm1faW9y ZXFfaW5pdChkKTsNCj4gDQo+IC0gICAgaWYgKCBpc19wdmhfZG9tYWluKGQpICkNCj4gLSAgICB7 DQo+IC0gICAgICAgIHJlZ2lzdGVyX3BvcnRpb19oYW5kbGVyKGQsIDAsIDB4MTAwMDMsIGhhbmRs ZV9wdmhfaW8pOw0KPiAtICAgICAgICByZXR1cm4gMDsNCj4gLSAgICB9DQo+IC0NCj4gICAgICBo dm1faW5pdF9ndWVzdF90aW1lKGQpOw0KPiANCj4gICAgICBkLT5hcmNoLmh2bV9kb21haW4ucGFy YW1zW0hWTV9QQVJBTV9UUklQTEVfRkFVTFRfUkVBU09OXSA9DQo+IFNIVVRET1dOX3JlYm9vdDsN Cj4gQEAgLTcyMyw5ICs2ODEsNiBAQCBpbnQgaHZtX2RvbWFpbl9pbml0aWFsaXNlKHN0cnVjdCBk b21haW4gKmQpDQo+IA0KPiAgdm9pZCBodm1fZG9tYWluX3JlbGlucXVpc2hfcmVzb3VyY2VzKHN0 cnVjdCBkb21haW4gKmQpDQo+ICB7DQo+IC0gICAgaWYgKCBpc19wdmhfZG9tYWluKGQpICkNCj4g LSAgICAgICAgcmV0dXJuOw0KPiAtDQo+ICAgICAgaWYgKCBodm1fZnVuY3Mubmh2bV9kb21haW5f cmVsaW5xdWlzaF9yZXNvdXJjZXMgKQ0KPiAgICAgICAgICBodm1fZnVuY3Mubmh2bV9kb21haW5f cmVsaW5xdWlzaF9yZXNvdXJjZXMoZCk7DQo+IA0KPiBAQCAtNzU0LDkgKzcwOSw2IEBAIHZvaWQg aHZtX2RvbWFpbl9kZXN0cm95KHN0cnVjdCBkb21haW4gKmQpDQo+IA0KPiAgICAgIGh2bV9kZXN0 cm95X2NhY2hlYXR0cl9yZWdpb25fbGlzdChkKTsNCj4gDQo+IC0gICAgaWYgKCBpc19wdmhfZG9t YWluKGQpICkNCj4gLSAgICAgICAgcmV0dXJuOw0KPiAtDQo+ICAgICAgaHZtX2Z1bmNzLmRvbWFp bl9kZXN0cm95KGQpOw0KPiAgICAgIHJ0Y19kZWluaXQoZCk7DQo+ICAgICAgc3RkdmdhX2RlaW5p dChkKTsNCj4gQEAgLTE1MjUsMTMgKzE0NzcsNiBAQCBpbnQgaHZtX3ZjcHVfaW5pdGlhbGlzZShz dHJ1Y3QgdmNwdSAqdikNCj4gDQo+ICAgICAgdi0+YXJjaC5odm1fdmNwdS5pbmplY3RfZXZlbnQu dmVjdG9yID0gSFZNX0VWRU5UX1ZFQ1RPUl9VTlNFVDsNCj4gDQo+IC0gICAgaWYgKCBpc19wdmhf ZG9tYWluKGQpICkNCj4gLSAgICB7DQo+IC0gICAgICAgIC8qIFRoaXMgaXMgZm9yIGh2bV9sb25n X21vZGVfZW5hYmxlZCh2KS4gKi8NCj4gLSAgICAgICAgdi0+YXJjaC5odm1fdmNwdS5ndWVzdF9l ZmVyID0gRUZFUl9MTUEgfCBFRkVSX0xNRTsNCj4gLSAgICAgICAgcmV0dXJuIDA7DQo+IC0gICAg fQ0KPiAtDQo+ICAgICAgcmMgPSBzZXR1cF9jb21wYXRfYXJnX3hsYXQodik7IC8qIHRlYXJkb3du OiBmcmVlX2NvbXBhdF9hcmdfeGxhdCgpICovDQo+ICAgICAgaWYgKCByYyAhPSAwICkNCj4gICAg ICAgICAgZ290byBmYWlsNDsNCj4gQEAgLTE4NjksOSArMTgxNCw2IEBAIGludCBodm1faGFwX25l c3RlZF9wYWdlX2ZhdWx0KHBhZGRyX3QgZ3BhLA0KPiB1bnNpZ25lZCBsb25nIGdsYSwNCj4gICAg ICAgICAgICAgIF9fcHV0X2dmbihob3N0cDJtLCBnZm4pOw0KPiANCj4gICAgICAgICAgcmMgPSAw Ow0KPiAtICAgICAgICBpZiAoIHVubGlrZWx5KGlzX3B2aF9kb21haW4oY3VycmQpKSApDQo+IC0g ICAgICAgICAgICBnb3RvIG91dDsNCj4gLQ0KPiAgICAgICAgICBpZiAoICFoYW5kbGVfbW1pb193 aXRoX3RyYW5zbGF0aW9uKGdsYSwgZ3BhID4+IFBBR0VfU0hJRlQsIG5wZmVjKSApDQo+ICAgICAg ICAgICAgICBodm1faW5qZWN0X2h3X2V4Y2VwdGlvbihUUkFQX2dwX2ZhdWx0LCAwKTsNCj4gICAg ICAgICAgcmMgPSAxOw0KPiBAQCAtMjIxMSwxNSArMjE1Myw2IEBAIGludCBodm1fc2V0X2NyMCh1 bnNpZ25lZCBsb25nIHZhbHVlLCBib29sX3QNCj4gbWF5X2RlZmVyKQ0KPiAgICAgICAgICAgKHZh bHVlICYgKFg4Nl9DUjBfUEUgfCBYODZfQ1IwX1BHKSkgPT0gWDg2X0NSMF9QRyApDQo+ICAgICAg ICAgIGdvdG8gZ3BmOw0KPiANCj4gLSAgICAvKiBBIHB2aCBpcyBub3QgZXhwZWN0ZWQgdG8gY2hh bmdlIHRvIHJlYWwgbW9kZS4gKi8NCj4gLSAgICBpZiAoIGlzX3B2aF9kb21haW4oZCkgJiYNCj4g LSAgICAgICAgICh2YWx1ZSAmIChYODZfQ1IwX1BFIHwgWDg2X0NSMF9QRykpICE9IChYODZfQ1Iw X1BHIHwgWDg2X0NSMF9QRSkNCj4gKQ0KPiAtICAgIHsNCj4gLSAgICAgICAgcHJpbnRrKFhFTkxP R19HX1dBUk5JTkcNCj4gLSAgICAgICAgICAgICAgICJQVkggYXR0ZW1wdGluZyB0byB0dXJuIG9m ZiBQRS9QRy4gQ1IwOiVseFxuIiwgdmFsdWUpOw0KPiAtICAgICAgICBnb3RvIGdwZjsNCj4gLSAg ICB9DQo+IC0NCj4gICAgICBpZiAoIG1heV9kZWZlciAmJiB1bmxpa2VseSh2LT5kb21haW4tDQo+ ID5hcmNoLm1vbml0b3Iud3JpdGVfY3RybHJlZ19lbmFibGVkICYNCj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtb25pdG9yX2N0cmxyZWdfYml0bWFzayhWTV9FVkVOVF9YODZfQ1Iw KSkgKQ0KPiAgICAgIHsNCj4gQEAgLTIzODQsMTEgKzIzMTcsNiBAQCBpbnQgaHZtX3NldF9jcjQo dW5zaWduZWQgbG9uZyB2YWx1ZSwgYm9vbF90DQo+IG1heV9kZWZlcikNCj4gICAgICAgICAgICAg ICAgICAgICAgICAgICJFRkVSLkxNQSBpcyBzZXQiKTsNCj4gICAgICAgICAgICAgIGdvdG8gZ3Bm Ow0KPiAgICAgICAgICB9DQo+IC0gICAgICAgIGlmICggaXNfcHZoX3ZjcHUodikgKQ0KPiAtICAg ICAgICB7DQo+IC0gICAgICAgICAgICBIVk1fREJHX0xPRyhEQkdfTEVWRUxfMSwgIjMyLWJpdCBQ VkggZ3Vlc3QgY2xlYXJlZCBDUjQuUEFFIik7DQo+IC0gICAgICAgICAgICBnb3RvIGdwZjsNCj4g LSAgICAgICAgfQ0KPiAgICAgIH0NCj4gDQo+ICAgICAgb2xkX2NyID0gdi0+YXJjaC5odm1fdmNw dS5ndWVzdF9jcls0XTsNCj4gQEAgLTM1NDIsOCArMzQ3MCw3IEBAIGludCBodm1fbXNyX3dyaXRl X2ludGVyY2VwdCh1bnNpZ25lZCBpbnQgbXNyLA0KPiB1aW50NjRfdCBtc3JfY29udGVudCwNCj4g ICAgICAgICAgYnJlYWs7DQo+IA0KPiAgICAgIGNhc2UgTVNSX0lBMzJfQVBJQ0JBU0U6DQo+IC0g ICAgICAgIGlmICggdW5saWtlbHkoaXNfcHZoX3ZjcHUodikpIHx8DQo+IC0gICAgICAgICAgICAg IXZsYXBpY19tc3Jfc2V0KHZjcHVfdmxhcGljKHYpLCBtc3JfY29udGVudCkgKQ0KPiArICAgICAg ICBpZiAoICF2bGFwaWNfbXNyX3NldCh2Y3B1X3ZsYXBpYyh2KSwgbXNyX2NvbnRlbnQpICkNCj4g ICAgICAgICAgICAgIGdvdG8gZ3BfZmF1bHQ7DQo+ICAgICAgICAgIGJyZWFrOw0KPiANCj4gQEAg LTQwNjYsOCArMzk5Myw3IEBAIHN0YXRpYyBpbnQgaHZtb3Bfc2V0X3BhcmFtKA0KPiAgICAgICAg ICByZXR1cm4gLUVTUkNIOw0KPiANCj4gICAgICByYyA9IC1FSU5WQUw7DQo+IC0gICAgaWYgKCAh aGFzX2h2bV9jb250YWluZXJfZG9tYWluKGQpIHx8DQo+IC0gICAgICAgICAoaXNfcHZoX2RvbWFp bihkKSAmJiAoYS5pbmRleCAhPSBIVk1fUEFSQU1fQ0FMTEJBQ0tfSVJRKSkgKQ0KPiArICAgIGlm ICggIWhhc19odm1fY29udGFpbmVyX2RvbWFpbihkKSApDQo+ICAgICAgICAgIGdvdG8gb3V0Ow0K PiANCj4gICAgICByYyA9IGh2bV9hbGxvd19zZXRfcGFyYW0oZCwgJmEpOw0KPiBAQCAtNDMyMiw4 ICs0MjQ4LDcgQEAgc3RhdGljIGludCBodm1vcF9nZXRfcGFyYW0oDQo+ICAgICAgICAgIHJldHVy biAtRVNSQ0g7DQo+IA0KPiAgICAgIHJjID0gLUVJTlZBTDsNCj4gLSAgICBpZiAoICFoYXNfaHZt X2NvbnRhaW5lcl9kb21haW4oZCkgfHwNCj4gLSAgICAgICAgIChpc19wdmhfZG9tYWluKGQpICYm IChhLmluZGV4ICE9IEhWTV9QQVJBTV9DQUxMQkFDS19JUlEpKSApDQo+ICsgICAgaWYgKCAhaGFz X2h2bV9jb250YWluZXJfZG9tYWluKGQpICkNCj4gICAgICAgICAgZ290byBvdXQ7DQo+IA0KPiAg ICAgIHJjID0gaHZtX2FsbG93X2dldF9wYXJhbShkLCAmYSk7DQo+IGRpZmYgLS1naXQgYS94ZW4v YXJjaC94ODYvaHZtL2h5cGVyY2FsbC5jIGIveGVuL2FyY2gveDg2L2h2bS9oeXBlcmNhbGwuYw0K PiBpbmRleCA2NDk5Y2FhLi44Y2M3Y2M2IDEwMDY0NA0KPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZt L2h5cGVyY2FsbC5jDQo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaHlwZXJjYWxsLmMNCj4gQEAg LTc4LDcgKzc4LDcgQEAgc3RhdGljIGxvbmcgaHZtX3BoeXNkZXZfb3AoaW50IGNtZCwNCj4gWEVO X0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpDQo+ICAgICAgc3dpdGNoICggY21kICkNCj4g ICAgICB7DQo+ICAgICAgZGVmYXVsdDoNCj4gLSAgICAgICAgaWYgKCAhaXNfcHZoX3ZjcHUoY3Vy cikgfHwgIWlzX2hhcmR3YXJlX2RvbWFpbihjdXJyLT5kb21haW4pICkNCj4gKyAgICAgICAgaWYg KCAhaXNfaGFyZHdhcmVfZG9tYWluKGN1cnItPmRvbWFpbikgKQ0KPiAgICAgICAgICAgICAgcmV0 dXJuIC1FTk9TWVM7DQo+ICAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLw0KPiAgICAgIGNhc2Ug UEhZU0RFVk9QX21hcF9waXJxOg0KPiBAQCAtODYsNyArODYsNyBAQCBzdGF0aWMgbG9uZyBodm1f cGh5c2Rldl9vcChpbnQgY21kLA0KPiBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZykN Cj4gICAgICBjYXNlIFBIWVNERVZPUF9lb2k6DQo+ICAgICAgY2FzZSBQSFlTREVWT1BfaXJxX3N0 YXR1c19xdWVyeToNCj4gICAgICBjYXNlIFBIWVNERVZPUF9nZXRfZnJlZV9waXJxOg0KPiAtICAg ICAgICBpZiAoICFoYXNfcGlycShjdXJyLT5kb21haW4pICYmICFpc19wdmhfdmNwdShjdXJyKSAp DQo+ICsgICAgICAgIGlmICggIWhhc19waXJxKGN1cnItPmRvbWFpbikgKQ0KPiAgICAgICAgICAg ICAgcmV0dXJuIC1FTk9TWVM7DQo+ICAgICAgICAgIGJyZWFrOw0KPiAgICAgIH0NCj4gZGlmZiAt LWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaW8uYyBiL3hlbi9hcmNoL3g4Ni9odm0vaW8uYw0KPiBp bmRleCAyMDVmYjY4Li41MDE2MzAwIDEwMDY0NA0KPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL2lv LmMNCj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS9pby5jDQo+IEBAIC04NCw4ICs4NCw2IEBAIGJv b2wgaHZtX2VtdWxhdGVfb25lX2luc24oaHZtX2VtdWxhdGVfdmFsaWRhdGVfdA0KPiAqdmFsaWRh dGUpDQo+ICAgICAgc3RydWN0IGh2bV92Y3B1X2lvICp2aW8gPSAmY3Vyci0+YXJjaC5odm1fdmNw dS5odm1faW87DQo+ICAgICAgaW50IHJjOw0KPiANCj4gLSAgICBBU1NFUlQoIWlzX3B2aF92Y3B1 KGN1cnIpKTsNCj4gLQ0KPiAgICAgIGh2bV9lbXVsYXRlX2luaXRfb25jZSgmY3R4dCwgdmFsaWRh dGUsIGd1ZXN0X2NwdV91c2VyX3JlZ3MoKSk7DQo+IA0KPiAgICAgIHJjID0gaHZtX2VtdWxhdGVf b25lKCZjdHh0KTsNCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYyBiL3hl bi9hcmNoL3g4Ni9odm0vaW9yZXEuYw0KPiBpbmRleCBlYmIzZWNhLi5hZDJlZGFkIDEwMDY0NA0K PiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMNCj4gKysrIGIveGVuL2FyY2gveDg2L2h2 bS9pb3JlcS5jDQo+IEBAIC0xMzg3LDggKzEzODcsNyBAQCB2b2lkIGh2bV9pb3JlcV9pbml0KHN0 cnVjdCBkb21haW4gKmQpDQo+ICAgICAgc3Bpbl9sb2NrX2luaXQoJmQtPmFyY2guaHZtX2RvbWFp bi5pb3JlcV9zZXJ2ZXIubG9jayk7DQo+ICAgICAgSU5JVF9MSVNUX0hFQUQoJmQtPmFyY2guaHZt X2RvbWFpbi5pb3JlcV9zZXJ2ZXIubGlzdCk7DQo+IA0KPiAtICAgIGlmICggIWlzX3B2aF9kb21h aW4oZCkgKQ0KPiAtICAgICAgICByZWdpc3Rlcl9wb3J0aW9faGFuZGxlcihkLCAweGNmOCwgNCwg aHZtX2FjY2Vzc19jZjgpOw0KPiArICAgIHJlZ2lzdGVyX3BvcnRpb19oYW5kbGVyKGQsIDB4Y2Y4 LCA0LCBodm1fYWNjZXNzX2NmOCk7DQo+ICB9DQo+IA0KPiAgLyoNCj4gZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9odm0vaXJxLmMgYi94ZW4vYXJjaC94ODYvaHZtL2lycS5jDQo+IGluZGV4IGZm N2QyODguLjc2MDU0NGIgMTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaXJxLmMNCj4g KysrIGIveGVuL2FyY2gveDg2L2h2bS9pcnEuYw0KPiBAQCAtNDIzLDkgKzQyMyw2IEBAIHN0cnVj dCBodm1faW50YWNrIGh2bV92Y3B1X2hhc19wZW5kaW5nX2lycShzdHJ1Y3QNCj4gdmNwdSAqdikN Cj4gICAgICAgICAgICYmIHZjcHVfaW5mbyh2LCBldnRjaG5fdXBjYWxsX3BlbmRpbmcpICkNCj4g ICAgICAgICAgcmV0dXJuIGh2bV9pbnRhY2tfdmVjdG9yKHBsYXQtPmlycS5jYWxsYmFja192aWEu dmVjdG9yKTsNCj4gDQo+IC0gICAgaWYgKCBpc19wdmhfdmNwdSh2KSApDQo+IC0gICAgICAgIHJl dHVybiBodm1faW50YWNrX25vbmU7DQo+IC0NCj4gICAgICBpZiAoIHZsYXBpY19hY2NlcHRfcGlj X2ludHIodikgJiYgcGxhdC0+dnBpY1swXS5pbnRfb3V0cHV0ICkNCj4gICAgICAgICAgcmV0dXJu IGh2bV9pbnRhY2tfcGljKDApOw0KPiANCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0v dm14L3ZtY3MuYyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZtY3MuYw0KPiBpbmRleCAwM2U2OGFk Li5mOThhOGI3IDEwMDY0NA0KPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92bWNzLmMNCj4g KysrIGIveGVuL2FyY2gveDg2L2h2bS92bXgvdm1jcy5jDQo+IEBAIC0xMDY4LDIwICsxMDY4LDYg QEAgc3RhdGljIGludCBjb25zdHJ1Y3Rfdm1jcyhzdHJ1Y3QgdmNwdSAqdikNCj4gICAgICAgICAg ICAgICAgICAgIHZteF9waW5fYmFzZWRfZXhlY19jb250cm9sICYNCj4gflBJTl9CQVNFRF9QT1NU RURfSU5URVJSVVBUKTsNCj4gICAgICB9DQo+IA0KPiAtICAgIGlmICggaXNfcHZoX2RvbWFpbihk KSApDQo+IC0gICAgew0KPiAtICAgICAgICAvKiBVbnJlc3RyaWN0ZWQgZ3Vlc3QgKHJlYWwgbW9k ZSBmb3IgRVBUKSAqLw0KPiAtICAgICAgICB2LT5hcmNoLmh2bV92bXguc2Vjb25kYXJ5X2V4ZWNf Y29udHJvbCAmPQ0KPiAtICAgICAgICAgICAgflNFQ09OREFSWV9FWEVDX1VOUkVTVFJJQ1RFRF9H VUVTVDsNCj4gLQ0KPiAtICAgICAgICAvKiBTdGFydCBpbiA2NC1iaXQgbW9kZS4gUFZIIDMyYml0 Zml4bWUuICovDQo+IC0gICAgICAgIHZtZW50cnlfY3RsIHw9IFZNX0VOVFJZX0lBMzJFX01PREU7 ICAgICAgIC8qIEdVRVNUX0VGRVIuTE1FL0xNQQ0KPiBpZ25vcmVkICovDQo+IC0NCj4gLSAgICAg ICAgQVNTRVJUKHYtPmFyY2guaHZtX3ZteC5leGVjX2NvbnRyb2wgJg0KPiBDUFVfQkFTRURfQUNU SVZBVEVfU0VDT05EQVJZX0NPTlRST0xTKTsNCj4gLSAgICAgICAgQVNTRVJUKHYtPmFyY2guaHZt X3ZteC5leGVjX2NvbnRyb2wgJg0KPiBDUFVfQkFTRURfQUNUSVZBVEVfTVNSX0JJVE1BUCk7DQo+ IC0gICAgICAgIEFTU0VSVCghKHYtPmFyY2guaHZtX3ZteC5leGVjX2NvbnRyb2wgJg0KPiBDUFVf QkFTRURfUkRUU0NfRVhJVElORykpOw0KPiAtICAgIH0NCj4gLQ0KPiAgICAgIHZteF91cGRhdGVf Y3B1X2V4ZWNfY29udHJvbCh2KTsNCj4gDQo+ICAgICAgX192bXdyaXRlKFZNX0VYSVRfQ09OVFJP TFMsIHZtZXhpdF9jdGwpOw0KPiBAQCAtMTIxNywxMSArMTIwMyw3IEBAIHN0YXRpYyBpbnQgY29u c3RydWN0X3ZtY3Moc3RydWN0IHZjcHUgKnYpDQo+ICAgICAgX192bXdyaXRlKEdVRVNUX0RTX0FS X0JZVEVTLCAweGMwOTMpOw0KPiAgICAgIF9fdm13cml0ZShHVUVTVF9GU19BUl9CWVRFUywgMHhj MDkzKTsNCj4gICAgICBfX3Ztd3JpdGUoR1VFU1RfR1NfQVJfQllURVMsIDB4YzA5Myk7DQo+IC0g ICAgaWYgKCBpc19wdmhfZG9tYWluKGQpICkNCj4gLSAgICAgICAgLyogQ1MuTCA9PSAxLCBleGVj LCByZWFkL3dyaXRlLCBhY2Nlc3NlZC4gKi8NCj4gLSAgICAgICAgX192bXdyaXRlKEdVRVNUX0NT X0FSX0JZVEVTLCAweGEwOWIpOw0KPiAtICAgIGVsc2UNCj4gLSAgICAgICAgX192bXdyaXRlKEdV RVNUX0NTX0FSX0JZVEVTLCAweGMwOWIpOyAvKiBleGVjL3JlYWQsIGFjY2Vzc2VkICovDQo+ICsg ICAgX192bXdyaXRlKEdVRVNUX0NTX0FSX0JZVEVTLCAweGMwOWIpOyAvKiBleGVjL3JlYWQsIGFj Y2Vzc2VkICovDQo+IA0KPiAgICAgIC8qIEd1ZXN0IElEVC4gKi8NCj4gICAgICBfX3Ztd3JpdGUo R1VFU1RfSURUUl9CQVNFLCAwKTsNCj4gQEAgLTEyNTEsMjMgKzEyMzMsMTAgQEAgc3RhdGljIGlu dCBjb25zdHJ1Y3Rfdm1jcyhzdHJ1Y3QgdmNwdSAqdikNCj4gICAgICAgICAgICAgICAgfCAoMVUg PDwgVFJBUF9ub19kZXZpY2UpOw0KPiAgICAgIHZteF91cGRhdGVfZXhjZXB0aW9uX2JpdG1hcCh2 KTsNCj4gDQo+IC0gICAgLyoNCj4gLSAgICAgKiBJbiBIVk0gZG9tYWlucywgdGhpcyBoYXBwZW5z IG9uIHRoZSByZWFsbW9kZS0+cGFnaW5nDQo+IC0gICAgICogdHJhbnNpdGlvbi4gIFNpbmNlIFBW SCBuZXZlciBnb2VzIHRocm91Z2ggdGhpcyB0cmFuc2l0aW9uLCB3ZQ0KPiAtICAgICAqIG5lZWQg dG8gZG8gaXQgYXQgc3RhcnQtb2YtZGF5Lg0KPiAtICAgICAqLw0KPiAtICAgIGlmICggaXNfcHZo X2RvbWFpbihkKSApDQo+IC0gICAgICAgIHZteF91cGRhdGVfZGVidWdfc3RhdGUodik7DQo+IC0N Cj4gICAgICB2LT5hcmNoLmh2bV92Y3B1Lmd1ZXN0X2NyWzBdID0gWDg2X0NSMF9QRSB8IFg4Nl9D UjBfRVQ7DQo+IC0NCj4gLSAgICAvKiBQVkggZG9tYWlucyBhbHdheXMgc3RhcnQgaW4gcGFnaW5n IG1vZGUgKi8NCj4gLSAgICBpZiAoIGlzX3B2aF9kb21haW4oZCkgKQ0KPiAtICAgICAgICB2LT5h cmNoLmh2bV92Y3B1Lmd1ZXN0X2NyWzBdIHw9IFg4Nl9DUjBfUEc7DQo+IC0NCj4gICAgICBodm1f dXBkYXRlX2d1ZXN0X2NyKHYsIDApOw0KPiANCj4gLSAgICB2LT5hcmNoLmh2bV92Y3B1Lmd1ZXN0 X2NyWzRdID0gaXNfcHZoX2RvbWFpbihkKSA/IFg4Nl9DUjRfUEFFIDogMDsNCj4gKyAgICB2LT5h cmNoLmh2bV92Y3B1Lmd1ZXN0X2NyWzRdID0gMDsNCj4gICAgICBodm1fdXBkYXRlX2d1ZXN0X2Ny KHYsIDQpOw0KPiANCj4gICAgICBpZiAoIGNwdV9oYXNfdm14X3Rwcl9zaGFkb3cgKQ0KPiBkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMgYi94ZW4vYXJjaC94ODYvaHZtL3Zt eC92bXguYw0KPiBpbmRleCA2MGI3YzkyLi44NDA0YjAzIDEwMDY0NA0KPiAtLS0gYS94ZW4vYXJj aC94ODYvaHZtL3ZteC92bXguYw0KPiArKysgYi94ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYw0K PiBAQCAtMjA2Myw5ICsyMDYzLDYgQEAgc3RhdGljIGludCB2bXhfc2V0X21vZGUoc3RydWN0IHZj cHUgKnYsIGludCBtb2RlKQ0KPiAgew0KPiAgICAgIHVuc2lnbmVkIGxvbmcgYXR0cjsNCj4gDQo+ IC0gICAgaWYgKCAhaXNfcHZoX3ZjcHUodikgKQ0KPiAtICAgICAgICByZXR1cm4gMDsNCj4gLQ0K PiAgICAgIEFTU0VSVCgobW9kZSA9PSA0KSB8fCAobW9kZSA9PSA4KSk7DQo+IA0KPiAgICAgIGF0 dHIgPSAobW9kZSA9PSA0KSA/IDB4YzA5YiA6IDB4YTA5YjsNCj4gQEAgLTIzMDAsMTIgKzIyOTcs NiBAQCBjb25zdCBzdHJ1Y3QgaHZtX2Z1bmN0aW9uX3RhYmxlICogX19pbml0DQo+IHN0YXJ0X3Zt eCh2b2lkKQ0KPiAgICAgICAgICB2bXhfZnVuY3Rpb25fdGFibGUuc3luY19waXJfdG9faXJyID0g TlVMTDsNCj4gICAgICB9DQo+IA0KPiAtICAgIGlmICggY3B1X2hhc192bXhfZXB0DQo+IC0gICAg ICAgICAmJiBjcHVfaGFzX3ZteF9wYXQNCj4gLSAgICAgICAgICYmIGNwdV9oYXNfdm14X21zcl9i aXRtYXANCj4gLSAgICAgICAgICYmIGNwdV9oYXNfdm14X3NlY29uZGFyeV9leGVjX2NvbnRyb2wg KQ0KPiAtICAgICAgICB2bXhfZnVuY3Rpb25fdGFibGUucHZoX3N1cHBvcnRlZCA9IDE7DQo+IC0N Cj4gICAgICBpZiAoIGNwdV9oYXNfdm14X3RzY19zY2FsaW5nICkNCj4gICAgICAgICAgdm14X2Z1 bmN0aW9uX3RhYmxlLnRzY19zY2FsaW5nLnJhdGlvX2ZyYWNfYml0cyA9IDQ4Ow0KPiANCj4gQEAg LTM4MDAsOCArMzc5MSw3IEBAIHZvaWQgdm14X3ZtZXhpdF9oYW5kbGVyKHN0cnVjdCBjcHVfdXNl cl9yZWdzDQo+ICpyZWdzKQ0KPiAgICAgICAgICBpZiAoIGV4aXRfcXVhbGlmaWNhdGlvbiAmIDB4 MTAgKQ0KPiAgICAgICAgICB7DQo+ICAgICAgICAgICAgICAvKiBJTlMsIE9VVFMgKi8NCj4gLSAg ICAgICAgICAgIGlmICggdW5saWtlbHkoaXNfcHZoX3ZjcHUodikpIC8qIFBWSCBmaXhtZSAqLyB8 fA0KPiAtICAgICAgICAgICAgICAgICAhaHZtX2VtdWxhdGVfb25lX2luc24oeDg2X2luc25faXNf cG9ydGlvKSApDQo+ICsgICAgICAgICAgICBpZiAoICFodm1fZW11bGF0ZV9vbmVfaW5zbih4ODZf aW5zbl9pc19wb3J0aW8pICkNCj4gICAgICAgICAgICAgICAgICBodm1faW5qZWN0X2h3X2V4Y2Vw dGlvbihUUkFQX2dwX2ZhdWx0LCAwKTsNCj4gICAgICAgICAgfQ0KPiAgICAgICAgICBlbHNlDQo+ IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0uYyBiL3hlbi9hcmNoL3g4Ni9tbS5jDQo+IGlu ZGV4IDE2NjFlNjYuLjEyZGFiY2YgMTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS5jDQo+ ICsrKyBiL3hlbi9hcmNoL3g4Ni9tbS5jDQo+IEBAIC0zMDQxLDcgKzMwNDEsNyBAQCBzdGF0aWMg c3RydWN0IGRvbWFpbiAqZ2V0X3BnX293bmVyKGRvbWlkX3QNCj4gZG9taWQpDQo+ICAgICAgICAg IGdvdG8gb3V0Ow0KPiAgICAgIH0NCj4gDQo+IC0gICAgaWYgKCAhaXNfcHZoX2RvbWFpbihjdXJy KSAmJiB1bmxpa2VseShwYWdpbmdfbW9kZV90cmFuc2xhdGUoY3VycikpICkNCj4gKyAgICBpZiAo IHVubGlrZWx5KHBhZ2luZ19tb2RlX3RyYW5zbGF0ZShjdXJyKSkgKQ0KPiAgICAgIHsNCj4gICAg ICAgICAgTUVNX0xPRygiQ2Fubm90IG1peCBmb3JlaWduIG1hcHBpbmdzIHdpdGggdHJhbnNsYXRl ZCBkb21haW5zIik7DQo+ICAgICAgICAgIGdvdG8gb3V0Ow0KPiBkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L21tL3AybS1wdC5jIGIveGVuL2FyY2gveDg2L21tL3AybS1wdC5jDQo+IGluZGV4IGJi ZmE1NGUuLjA3ZTJjY2QgMTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYw0K PiArKysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMNCj4gQEAgLTUzMiw3ICs1MzIsNyBAQCBw Mm1fcHRfc2V0X2VudHJ5KHN0cnVjdCBwMm1fZG9tYWluICpwMm0sDQo+IHVuc2lnbmVkIGxvbmcg Z2ZuLCBtZm5fdCBtZm4sDQo+IA0KPiAgICAgIGlmICggdW5saWtlbHkocDJtX2lzX2ZvcmVpZ24o cDJtdCkpICkNCj4gICAgICB7DQo+IC0gICAgICAgIC8qIHB2aCBmaXhtZTogZm9yZWlnbiB0eXBl cyBhcmUgb25seSBzdXBwb3J0ZWQgb24gZXB0IGF0IHByZXNlbnQgKi8NCj4gKyAgICAgICAgLyog aHZtIGZpeG1lOiBmb3JlaWduIHR5cGVzIGFyZSBvbmx5IHN1cHBvcnRlZCBvbiBlcHQgYXQgcHJl c2VudCAqLw0KPiAgICAgICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywgIlVuaW1wbGVtZW50 ZWQgZm9yZWlnbiBwMm0gdHlwZS5cbiIpOw0KPiAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4g ICAgICB9DQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcDJtLmMgYi94ZW4vYXJjaC94 ODYvbW0vcDJtLmMNCj4gaW5kZXggMmVlZTljZC4uYTU2NTFhMyAxMDA2NDQNCj4gLS0tIGEveGVu L2FyY2gveDg2L21tL3AybS5jDQo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYw0KPiBAQCAt NTg5LDcgKzU4OSw3IEBAIGludCBwMm1fYWxsb2NfdGFibGUoc3RydWN0IHAybV9kb21haW4gKnAy bSkNCj4gIH0NCj4gDQo+ICAvKg0KPiAtICogcHZoIGZpeG1lOiB3aGVuIGFkZGluZyBzdXBwb3J0 IGZvciBwdmggbm9uLWhhcmR3YXJlIGRvbWFpbnMsIHRoaXMgcGF0aA0KPiBtdXN0DQo+ICsgKiBo dm0gZml4bWU6IHdoZW4gYWRkaW5nIHN1cHBvcnQgZm9yIHB2aCBub24taGFyZHdhcmUgZG9tYWlu cywgdGhpcw0KPiBwYXRoIG11c3QNCj4gICAqIGNsZWFudXAgYW55IGZvcmVpZ24gcDJtIHR5cGVz IChyZWxlYXNlIHJlZmNudHMgb24gdGhlbSkuDQo+ICAgKi8NCj4gIHZvaWQgcDJtX3RlYXJkb3du KHN0cnVjdCBwMm1fZG9tYWluICpwMm0pDQo+IEBAIC0yNDExLDEwICsyNDExLDEwIEBAIGludCBw Mm1fYWRkX2ZvcmVpZ24oc3RydWN0IGRvbWFpbiAqdGRvbSwNCj4gdW5zaWduZWQgbG9uZyBmZ2Zu LA0KPiAgICAgIHN0cnVjdCBkb21haW4gKmZkb207DQo+IA0KPiAgICAgIEFTU0VSVCh0ZG9tKTsN Cj4gLSAgICBpZiAoIGZvcmVpZ25kb20gPT0gRE9NSURfU0VMRiB8fCAhaXNfcHZoX2RvbWFpbih0 ZG9tKSApDQo+ICsgICAgaWYgKCBmb3JlaWduZG9tID09IERPTUlEX1NFTEYgKQ0KPiAgICAgICAg ICByZXR1cm4gLUVJTlZBTDsNCj4gICAgICAvKg0KPiAtICAgICAqIHB2aCBmaXhtZTogdW50aWwg c3VwcG9ydCBpcyBhZGRlZCB0byBwMm0gdGVhcmRvd24gY29kZSB0byBjbGVhbnVwIGFueQ0KPiAr ICAgICAqIGh2bSBmaXhtZTogdW50aWwgc3VwcG9ydCBpcyBhZGRlZCB0byBwMm0gdGVhcmRvd24g Y29kZSB0byBjbGVhbnVwDQo+IGFueQ0KPiAgICAgICAqIGZvcmVpZ24gZW50cmllcywgbGltaXQg dGhpcyB0byBoYXJkd2FyZSBkb21haW4gb25seS4NCj4gICAgICAgKi8NCj4gICAgICBpZiAoICFp c19oYXJkd2FyZV9kb21haW4odGRvbSkgKQ0KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3Bo eXNkZXYuYyBiL3hlbi9hcmNoL3g4Ni9waHlzZGV2LmMNCj4gaW5kZXggZmM0NWJmYi4uODFjZDZj OSAxMDA2NDQNCj4gLS0tIGEveGVuL2FyY2gveDg2L3BoeXNkZXYuYw0KPiArKysgYi94ZW4vYXJj aC94ODYvcGh5c2Rldi5jDQo+IEBAIC01MTcsMTAgKzUxNyw2IEBAIHJldF90IGRvX3BoeXNkZXZf b3AoaW50IGNtZCwNCj4gWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpDQo+ICAgICAg ICAgIHN0cnVjdCB2Y3B1ICpjdXJyID0gY3VycmVudDsNCj4gICAgICAgICAgc3RydWN0IHBoeXNk ZXZfc2V0X2lvcGwgc2V0X2lvcGw7DQo+IA0KPiAtICAgICAgICByZXQgPSAtRU5PU1lTOw0KPiAt ICAgICAgICBpZiAoIGlzX3B2aF92Y3B1KGN1cnIpICkNCj4gLSAgICAgICAgICAgIGJyZWFrOw0K PiAtDQo+ICAgICAgICAgIHJldCA9IC1FRkFVTFQ7DQo+ICAgICAgICAgIGlmICggY29weV9mcm9t X2d1ZXN0KCZzZXRfaW9wbCwgYXJnLCAxKSAhPSAwICkNCj4gICAgICAgICAgICAgIGJyZWFrOw0K PiBAQCAtNTM2LDEwICs1MzIsNiBAQCByZXRfdCBkb19waHlzZGV2X29wKGludCBjbWQsDQo+IFhF Tl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJnKQ0KPiAgICAgICAgICBzdHJ1Y3QgdmNwdSAq Y3VyciA9IGN1cnJlbnQ7DQo+ICAgICAgICAgIHN0cnVjdCBwaHlzZGV2X3NldF9pb2JpdG1hcCBz ZXRfaW9iaXRtYXA7DQo+IA0KPiAtICAgICAgICByZXQgPSAtRU5PU1lTOw0KPiAtICAgICAgICBp ZiAoIGlzX3B2aF92Y3B1KGN1cnIpICkNCj4gLSAgICAgICAgICAgIGJyZWFrOw0KPiAtDQo+ICAg ICAgICAgIHJldCA9IC1FRkFVTFQ7DQo+ICAgICAgICAgIGlmICggY29weV9mcm9tX2d1ZXN0KCZz ZXRfaW9iaXRtYXAsIGFyZywgMSkgIT0gMCApDQo+ICAgICAgICAgICAgICBicmVhazsNCj4gZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9zZXR1cC5jIGIveGVuL2FyY2gveDg2L3NldHVwLmMNCj4g aW5kZXggZGFiNjdkNS4uNGE4MDdiOCAxMDA2NDQNCj4gLS0tIGEveGVuL2FyY2gveDg2L3NldHVw LmMNCj4gKysrIGIveGVuL2FyY2gveDg2L3NldHVwLmMNCj4gQEAgLTYyLDEwICs2Miw2IEBAIGlu dGVnZXJfcGFyYW0oIm1heGNwdXMiLCBtYXhfY3B1cyk7DQo+IA0KPiAgdW5zaWduZWQgbG9uZyBf X3JlYWRfbW9zdGx5IGNyNF9wdjMyX21hc2s7DQo+IA0KPiAtLyogQm9vdCBkb20wIGluIHB2aCBt b2RlICovDQo+IC1zdGF0aWMgYm9vbF90IF9faW5pdGRhdGEgb3B0X2RvbTBwdmg7DQo+IC1ib29s ZWFuX3BhcmFtKCJkb20wcHZoIiwgb3B0X2RvbTBwdmgpOw0KPiAtDQo+ICAvKiAqKioqIExpbnV4 IGNvbmZpZyBvcHRpb246IHByb3BhZ2F0ZWQgdG8gZG9tYWluMC4gKi8NCj4gIC8qICJhY3BpPW9m ZiI6ICAgIFNpc2FibGVzIGJvdGggQUNQSSB0YWJsZSBwYXJzaW5nIGFuZCBpbnRlcnByZXRlci4g Ki8NCj4gIC8qICJhY3BpPWZvcmNlIjogIE92ZXJyaWRlIHRoZSBkaXNhYmxlIGJsYWNrbGlzdC4g ICAgICAgICAgICAgICAgICAgKi8NCj4gQEAgLTE1NDUsOSArMTU0MSw2IEBAIHZvaWQgX19pbml0 IG5vcmV0dXJuIF9fc3RhcnRfeGVuKHVuc2lnbmVkIGxvbmcNCj4gbWJpX3ApDQo+IA0KPiAgICAg IGluaXRfZ3Vlc3RfY3B1aWQoKTsNCj4gDQo+IC0gICAgaWYgKCBvcHRfZG9tMHB2aCApDQo+IC0g ICAgICAgIGRvbWNyX2ZsYWdzIHw9IERPTUNSRl9wdmggfCBET01DUkZfaGFwOw0KPiAtDQo+ICAg ICAgaWYgKCBkb20wX3B2aCApDQo+ICAgICAgew0KPiAgICAgICAgICBkb21jcl9mbGFncyB8PSBE T01DUkZfaHZtIHwNCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni90aW1lLmMgYi94ZW4vYXJj aC94ODYvdGltZS5jDQo+IGluZGV4IDNhZDJhYjAuLmI3MzlkYzggMTAwNjQ0DQo+IC0tLSBhL3hl bi9hcmNoL3g4Ni90aW1lLmMNCj4gKysrIGIveGVuL2FyY2gveDg2L3RpbWUuYw0KPiBAQCAtMjAx MywzMyArMjAxMyw2IEBAIHZvaWQgdHNjX3NldF9pbmZvKHN0cnVjdCBkb21haW4gKmQsDQo+ICAg ICAgICAgIGQtPmFyY2gudnRzYyA9IDA7DQo+ICAgICAgICAgIHJldHVybjsNCj4gICAgICB9DQo+ IC0gICAgaWYgKCBpc19wdmhfZG9tYWluKGQpICkNCj4gLSAgICB7DQo+IC0gICAgICAgIC8qDQo+ IC0gICAgICAgICAqIFBWSCBmaXhtZTogc3VwcG9ydCBtb3JlIHRzYyBtb2Rlcy4NCj4gLSAgICAg ICAgICoNCj4gLSAgICAgICAgICogTkI6IFRoZSByZWFzb24gdGhpcyBpcyBkaXNhYmxlZCBoZXJl IGFwcGVhcnMgdG8gYmUgd2l0aA0KPiAtICAgICAgICAgKiBhZGRpdGlvbmFsIHN1cHBvcnQgcmVx dWlyZWQgdG8gZG8gdGhlIFBWIFJEVFNDIGVtdWxhdGlvbi4NCj4gLSAgICAgICAgICogU2luY2Ug d2UncmUgbm8gbG9uZ2VyIHRha2luZyB0aGUgUFYgZW11bGF0aW9uIHBhdGggZm9yDQo+IC0gICAg ICAgICAqIGFueXRoaW5nLCB3ZSBtYXkgYmUgYWJsZSB0byByZW1vdmUgdGhpcyByZXN0cmljdGlv bi4NCj4gLSAgICAgICAgICoNCj4gLSAgICAgICAgICogcHZoZml4bWU6IEV4cGVyaW1lbnRzIHNo b3cgdGhhdCAiZGVmYXVsdCIgd29ya3MgZm9yIFBWSCwNCj4gLSAgICAgICAgICogYnV0ICJhbHdh eXNfZW11bGF0ZSIgZG9lcyBub3QgZm9yIHNvbWUgcmVhc29uLiAgRmlndXJlIG91dA0KPiAtICAg ICAgICAgKiB3aHkuDQo+IC0gICAgICAgICAqLw0KPiAtICAgICAgICBzd2l0Y2ggKCB0c2NfbW9k ZSApDQo+IC0gICAgICAgIHsNCj4gLSAgICAgICAgY2FzZSBUU0NfTU9ERV9ORVZFUl9FTVVMQVRF Og0KPiAtICAgICAgICAgICAgYnJlYWs7DQo+IC0gICAgICAgIGRlZmF1bHQ6DQo+IC0gICAgICAg ICAgICBwcmludGsoWEVOTE9HX1dBUk5JTkcNCj4gLSAgICAgICAgICAgICAgICAgICAiUFZIIGN1 cnJlbnRseSBkb2VzIG5vdCBzdXBwb3J0IHRzYyBlbXVsYXRpb24uIFNldHRpbmcNCj4gdGltZXJf bW9kZSA9IG5ldmVyX2VtdWxhdGVcbiIpOw0KPiAtICAgICAgICAgICAgLyogRkFMTFRIUlUgKi8N Cj4gLSAgICAgICAgY2FzZSBUU0NfTU9ERV9ERUZBVUxUOg0KPiAtICAgICAgICAgICAgdHNjX21v ZGUgPSBUU0NfTU9ERV9ORVZFUl9FTVVMQVRFOw0KPiAtICAgICAgICAgICAgYnJlYWs7DQo+IC0g ICAgICAgIH0NCj4gLSAgICB9DQo+IA0KPiAgICAgIHN3aXRjaCAoIGQtPmFyY2gudHNjX21vZGUg PSB0c2NfbW9kZSApDQo+ICAgICAgew0KPiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9kb21haW4u YyBiL3hlbi9jb21tb24vZG9tYWluLmMNCj4gaW5kZXggNDQ5MmM5Yy4uYjIyYWFjYyAxMDA2NDQN Cj4gLS0tIGEveGVuL2NvbW1vbi9kb21haW4uYw0KPiArKysgYi94ZW4vY29tbW9uL2RvbWFpbi5j DQo+IEBAIC0zMDQsOCArMzA0LDYgQEAgc3RydWN0IGRvbWFpbiAqZG9tYWluX2NyZWF0ZShkb21p ZF90IGRvbWlkLA0KPiB1bnNpZ25lZCBpbnQgZG9tY3JfZmxhZ3MsDQo+IA0KPiAgICAgIGlmICgg ZG9tY3JfZmxhZ3MgJiBET01DUkZfaHZtICkNCj4gICAgICAgICAgZC0+Z3Vlc3RfdHlwZSA9IGd1 ZXN0X3R5cGVfaHZtOw0KPiAtICAgIGVsc2UgaWYgKCBkb21jcl9mbGFncyAmIERPTUNSRl9wdmgg KQ0KPiAtICAgICAgICBkLT5ndWVzdF90eXBlID0gZ3Vlc3RfdHlwZV9wdmg7DQo+ICAgICAgZWxz ZQ0KPiAgICAgICAgICBkLT5ndWVzdF90eXBlID0gZ3Vlc3RfdHlwZV9wdjsNCj4gDQo+IGRpZmYg LS1naXQgYS94ZW4vY29tbW9uL2RvbWN0bC5jIGIveGVuL2NvbW1vbi9kb21jdGwuYw0KPiBpbmRl eCA5M2UzMDI5Li45NTFhNWRjIDEwMDY0NA0KPiAtLS0gYS94ZW4vY29tbW9uL2RvbWN0bC5jDQo+ ICsrKyBiL3hlbi9jb21tb24vZG9tY3RsLmMNCj4gQEAgLTE5NCw5ICsxOTQsNiBAQCB2b2lkIGdl dGRvbWFpbmluZm8oc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0DQo+IHhlbl9kb21jdGxfZ2V0ZG9t YWluaW5mbyAqaW5mbykNCj4gICAgICBjYXNlIGd1ZXN0X3R5cGVfaHZtOg0KPiAgICAgICAgICBp bmZvLT5mbGFncyB8PSBYRU5fRE9NSU5GX2h2bV9ndWVzdDsNCj4gICAgICAgICAgYnJlYWs7DQo+ IC0gICAgY2FzZSBndWVzdF90eXBlX3B2aDoNCj4gLSAgICAgICAgaW5mby0+ZmxhZ3MgfD0gWEVO X0RPTUlORl9wdmhfZ3Vlc3Q7DQo+IC0gICAgICAgIGJyZWFrOw0KPiAgICAgIGRlZmF1bHQ6DQo+ ICAgICAgICAgIGJyZWFrOw0KPiAgICAgIH0NCj4gQEAgLTUwMSw3ICs0OTgsNiBAQCBsb25nDQo+ IGRvX2RvbWN0bChYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9kb21jdGxfdCkgdV9kb21jdGwp DQo+ICAgICAgICAgIHJldCA9IC1FSU5WQUw7DQo+ICAgICAgICAgIGlmICggKG9wLT51LmNyZWF0 ZWRvbWFpbi5mbGFncyAmDQo+ICAgICAgICAgICAgICAgfihYRU5fRE9NQ1RMX0NERl9odm1fZ3Vl c3QNCj4gLSAgICAgICAgICAgICAgIHwgWEVOX0RPTUNUTF9DREZfcHZoX2d1ZXN0DQo+ICAgICAg ICAgICAgICAgICB8IFhFTl9ET01DVExfQ0RGX2hhcA0KPiAgICAgICAgICAgICAgICAgfCBYRU5f RE9NQ1RMX0NERl9zM19pbnRlZ3JpdHkNCj4gICAgICAgICAgICAgICAgIHwgWEVOX0RPTUNUTF9D REZfb29zX29mZg0KPiBAQCAtNTMyLDE1ICs1MjgsOSBAQCBsb25nDQo+IGRvX2RvbWN0bChYRU5f R1VFU1RfSEFORExFX1BBUkFNKHhlbl9kb21jdGxfdCkgdV9kb21jdGwpDQo+ICAgICAgICAgICAg ICByb3ZlciA9IGRvbTsNCj4gICAgICAgICAgfQ0KPiANCj4gLSAgICAgICAgaWYgKCAob3AtPnUu Y3JlYXRlZG9tYWluLmZsYWdzICYgWEVOX0RPTUNUTF9DREZfaHZtX2d1ZXN0KQ0KPiAtICAgICAg ICAgICAgICYmIChvcC0+dS5jcmVhdGVkb21haW4uZmxhZ3MgJiBYRU5fRE9NQ1RMX0NERl9wdmhf Z3Vlc3QpICkNCj4gLSAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiAtDQo+ICAgICAgICAg IGRvbWNyX2ZsYWdzID0gMDsNCj4gICAgICAgICAgaWYgKCBvcC0+dS5jcmVhdGVkb21haW4uZmxh Z3MgJiBYRU5fRE9NQ1RMX0NERl9odm1fZ3Vlc3QgKQ0KPiAgICAgICAgICAgICAgZG9tY3JfZmxh Z3MgfD0gRE9NQ1JGX2h2bTsNCj4gLSAgICAgICAgaWYgKCBvcC0+dS5jcmVhdGVkb21haW4uZmxh Z3MgJiBYRU5fRE9NQ1RMX0NERl9wdmhfZ3Vlc3QgKQ0KPiAtICAgICAgICAgICAgZG9tY3JfZmxh Z3MgfD0gRE9NQ1JGX3B2aDsNCj4gICAgICAgICAgaWYgKCBvcC0+dS5jcmVhdGVkb21haW4uZmxh Z3MgJiBYRU5fRE9NQ1RMX0NERl9oYXAgKQ0KPiAgICAgICAgICAgICAgZG9tY3JfZmxhZ3MgfD0g RE9NQ1JGX2hhcDsNCj4gICAgICAgICAgaWYgKCBvcC0+dS5jcmVhdGVkb21haW4uZmxhZ3MgJiBY RU5fRE9NQ1RMX0NERl9zM19pbnRlZ3JpdHkgKQ0KPiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9r ZXJuZWwuYyBiL3hlbi9jb21tb24va2VybmVsLmMNCj4gaW5kZXggNGI4N2M2MC4uYTRhZTYxMiAx MDA2NDQNCj4gLS0tIGEveGVuL2NvbW1vbi9rZXJuZWwuYw0KPiArKysgYi94ZW4vY29tbW9uL2tl cm5lbC5jDQo+IEBAIC0zMjQsMTEgKzMyNCw2IEBAIERPKHhlbl92ZXJzaW9uKShpbnQgY21kLA0K PiBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZykNCj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKDFVIDw8IFhFTkZFQVRfaGlnaG1lbV9hc3Npc3QpIHwNCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKDFVIDw8IFhFTkZFQVRfZ250dGFiX21hcF9hdmFpbF9iaXRz KTsNCj4gICAgICAgICAgICAgICAgICBicmVhazsNCj4gLSAgICAgICAgICAgIGNhc2UgZ3Vlc3Rf dHlwZV9wdmg6DQo+IC0gICAgICAgICAgICAgICAgZmkuc3VibWFwIHw9ICgxVSA8PCBYRU5GRUFU X2h2bV9zYWZlX3B2Y2xvY2spIHwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDFV IDw8IFhFTkZFQVRfc3VwZXJ2aXNvcl9tb2RlX2tlcm5lbCkgfA0KPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoMVUgPDwgWEVORkVBVF9odm1fY2FsbGJhY2tfdmVjdG9yKTsNCj4gLSAg ICAgICAgICAgICAgICBicmVhazsNCj4gICAgICAgICAgICAgIGNhc2UgZ3Vlc3RfdHlwZV9odm06 DQo+ICAgICAgICAgICAgICAgICAgZmkuc3VibWFwIHw9ICgxVSA8PCBYRU5GRUFUX2h2bV9zYWZl X3B2Y2xvY2spIHwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDFVIDw8IFhFTkZF QVRfaHZtX2NhbGxiYWNrX3ZlY3RvcikgfA0KPiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi92bV9l dmVudC5jIGIveGVuL2NvbW1vbi92bV9ldmVudC5jDQo+IGluZGV4IDQ1MDQ2ZDEuLjBmZTlhNTMg MTAwNjQ0DQo+IC0tLSBhL3hlbi9jb21tb24vdm1fZXZlbnQuYw0KPiArKysgYi94ZW4vY29tbW9u L3ZtX2V2ZW50LmMNCj4gQEAgLTYwNiw4ICs2MDYsOCBAQCBpbnQgdm1fZXZlbnRfZG9tY3RsKHN0 cnVjdCBkb21haW4gKmQsDQo+IHhlbl9kb21jdGxfdm1fZXZlbnRfb3BfdCAqdmVjLA0KPiAgICAg ICAgICAgICAgc3RydWN0IHAybV9kb21haW4gKnAybSA9IHAybV9nZXRfaG9zdHAybShkKTsNCj4g DQo+ICAgICAgICAgICAgICByYyA9IC1FT1BOT1RTVVBQOw0KPiAtICAgICAgICAgICAgLyogcHZo IGZpeG1lOiBwMm1faXNfZm9yZWlnbiB0eXBlcyBuZWVkIGFkZHJlc3NpbmcgKi8NCj4gLSAgICAg ICAgICAgIGlmICggaXNfcHZoX3ZjcHUoY3VycmVudCkgfHwgaXNfcHZoX2RvbWFpbihoYXJkd2Fy ZV9kb21haW4pICkNCj4gKyAgICAgICAgICAgIC8qIGh2bSBmaXhtZTogcDJtX2lzX2ZvcmVpZ24g dHlwZXMgbmVlZCBhZGRyZXNzaW5nICovDQo+ICsgICAgICAgICAgICBpZiAoIGlzX2h2bV9kb21h aW4oaGFyZHdhcmVfZG9tYWluKSApDQo+ICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+IA0KPiAg ICAgICAgICAgICAgcmMgPSAtRU5PREVWOw0KPiBAQCAtNzA3LDggKzcwNyw4IEBAIGludCB2bV9l dmVudF9kb21jdGwoc3RydWN0IGRvbWFpbiAqZCwNCj4geGVuX2RvbWN0bF92bV9ldmVudF9vcF90 ICp2ZWMsDQo+ICAgICAgICAgIHsNCj4gICAgICAgICAgY2FzZSBYRU5fVk1fRVZFTlRfRU5BQkxF Og0KPiAgICAgICAgICAgICAgcmMgPSAtRU9QTk9UU1VQUDsNCj4gLSAgICAgICAgICAgIC8qIHB2 aCBmaXhtZTogcDJtX2lzX2ZvcmVpZ24gdHlwZXMgbmVlZCBhZGRyZXNzaW5nICovDQo+IC0gICAg ICAgICAgICBpZiAoIGlzX3B2aF92Y3B1KGN1cnJlbnQpIHx8IGlzX3B2aF9kb21haW4oaGFyZHdh cmVfZG9tYWluKSApDQo+ICsgICAgICAgICAgICAvKiBodm0gZml4bWU6IHAybV9pc19mb3JlaWdu IHR5cGVzIG5lZWQgYWRkcmVzc2luZyAqLw0KPiArICAgICAgICAgICAgaWYgKCBpc19odm1fZG9t YWluKGhhcmR3YXJlX2RvbWFpbikgKQ0KPiAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiANCj4g ICAgICAgICAgICAgIHJjID0gLUVOT0RFVjsNCj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2Fz bS14ODYvZG9tYWluLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2RvbWFpbi5oDQo+IGluZGV4IDFi ZWVmMmYuLjhmMGVkYWYgMTAwNjQ0DQo+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvZG9tYWlu LmgNCj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9kb21haW4uaA0KPiBAQCAtMTUsNyArMTUs NiBAQA0KPiAgI2RlZmluZSBoYXNfMzJiaXRfc2hpbmZvKGQpICAgICgoZCktPmFyY2guaGFzXzMy Yml0X3NoaW5mbykNCj4gICNkZWZpbmUgaXNfcHZfMzJiaXRfZG9tYWluKGQpICAoKGQpLT5hcmNo LmlzXzMyYml0X3B2KQ0KPiAgI2RlZmluZSBpc19wdl8zMmJpdF92Y3B1KHYpICAgIChpc19wdl8z MmJpdF9kb21haW4oKHYpLT5kb21haW4pKQ0KPiAtI2RlZmluZSBpc19wdmhfMzJiaXRfZG9tYWlu KGQpIChpc19wdmhfZG9tYWluKGQpICYmDQo+IGhhc18zMmJpdF9zaGluZm8oZCkpDQo+IA0KPiAg I2RlZmluZSBpc19odm1fcHZfZXZ0Y2huX2RvbWFpbihkKSAoaGFzX2h2bV9jb250YWluZXJfZG9t YWluKGQpICYmDQo+IFwNCj4gICAgICAgICAgZC0+YXJjaC5odm1fZG9tYWluLmlycS5jYWxsYmFj a192aWFfdHlwZSA9PQ0KPiBIVk1JUlFfY2FsbGJhY2tfdmVjdG9yKQ0KPiBkaWZmIC0tZ2l0IGEv eGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaHZtLmggYi94ZW4vaW5jbHVkZS9hc20tDQo+IHg4Ni9o dm0vaHZtLmgNCj4gaW5kZXggODdiMjAzYS4uOGM4YzYzMyAxMDA2NDQNCj4gLS0tIGEveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9odm0vaHZtLmgNCj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0v aHZtLmgNCj4gQEAgLTkxLDkgKzkxLDYgQEAgc3RydWN0IGh2bV9mdW5jdGlvbl90YWJsZSB7DQo+ ICAgICAgLyogU3VwcG9ydCBIYXJkd2FyZS1Bc3Npc3RlZCBQYWdpbmc/ICovDQo+ICAgICAgYm9v bF90IGhhcF9zdXBwb3J0ZWQ7DQo+IA0KPiAtICAgIC8qIE5lY2Vzc2FyeSBoYXJkd2FyZSBzdXBw b3J0IGZvciBQVkggbW9kZT8gKi8NCj4gLSAgICBib29sX3QgcHZoX3N1cHBvcnRlZDsNCj4gLQ0K PiAgICAgIC8qIE5lY2Vzc2FyeSBoYXJkd2FyZSBzdXBwb3J0IGZvciBhbHRlcm5hdGUgcDJtJ3M/ ICovDQo+ICAgICAgYm9vbCBhbHRwMm1fc3VwcG9ydGVkOw0KPiANCj4gZGlmZiAtLWdpdCBhL3hl bi9pbmNsdWRlL3B1YmxpYy9kb21jdGwuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9kb21jdGwuaA0K PiBpbmRleCA4NWNiYjdjLi45ZTNjZTIxIDEwMDY0NA0KPiAtLS0gYS94ZW4vaW5jbHVkZS9wdWJs aWMvZG9tY3RsLmgNCj4gKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2RvbWN0bC5oDQo+IEBAIC0z Nyw3ICszNyw3IEBADQo+ICAjaW5jbHVkZSAiaHZtL3NhdmUuaCINCj4gICNpbmNsdWRlICJtZW1v cnkuaCINCj4gDQo+IC0jZGVmaW5lIFhFTl9ET01DVExfSU5URVJGQUNFX1ZFUlNJT04gMHgwMDAw MDAwYw0KPiArI2RlZmluZSBYRU5fRE9NQ1RMX0lOVEVSRkFDRV9WRVJTSU9OIDB4MDAwMDAwMGQN Cj4gDQo+ICAvKg0KPiAgICogTkIuIHhlbl9kb21jdGwuZG9tYWluIGlzIGFuIElOL09VVCBwYXJh bWV0ZXIgZm9yIHRoaXMgb3BlcmF0aW9uLg0KPiBAQCAtNjAsMTEgKzYwLDggQEAgc3RydWN0IHhl bl9kb21jdGxfY3JlYXRlZG9tYWluIHsNCj4gICAvKiBEaXNhYmxlIG91dC1vZi1zeW5jIHNoYWRv dyBwYWdlIHRhYmxlcz8gKi8NCj4gICNkZWZpbmUgX1hFTl9ET01DVExfQ0RGX29vc19vZmYgICAg ICAgMw0KPiAgI2RlZmluZSBYRU5fRE9NQ1RMX0NERl9vb3Nfb2ZmDQo+ICgxVTw8X1hFTl9ET01D VExfQ0RGX29vc19vZmYpDQo+IC0gLyogSXMgdGhpcyBhIFBWSCBndWVzdCAoYXMgb3Bwb3NlZCB0 byBhbiBIVk0gb3IgUFYgZ3Vlc3QpPyAqLw0KPiAtI2RlZmluZSBfWEVOX0RPTUNUTF9DREZfcHZo X2d1ZXN0ICAgICA0DQo+IC0jZGVmaW5lIFhFTl9ET01DVExfQ0RGX3B2aF9ndWVzdA0KPiAoMVU8 PF9YRU5fRE9NQ1RMX0NERl9wdmhfZ3Vlc3QpDQo+ICAgLyogSXMgdGhpcyBhIHhlbnN0b3JlIGRv bWFpbj8gKi8NCj4gLSNkZWZpbmUgX1hFTl9ET01DVExfQ0RGX3hzX2RvbWFpbiAgICAgNQ0KPiAr I2RlZmluZSBfWEVOX0RPTUNUTF9DREZfeHNfZG9tYWluICAgICA0DQo+ICAjZGVmaW5lIFhFTl9E T01DVExfQ0RGX3hzX2RvbWFpbg0KPiAoMVU8PF9YRU5fRE9NQ1RMX0NERl94c19kb21haW4pDQo+ ICAgICAgdWludDMyX3QgZmxhZ3M7DQo+ICAgICAgc3RydWN0IHhlbl9hcmNoX2RvbWFpbmNvbmZp ZyBjb25maWc7DQo+IEBAIC05NywxNCArOTQsMTEgQEAgc3RydWN0IHhlbl9kb21jdGxfZ2V0ZG9t YWluaW5mbyB7DQo+ICAgLyogQmVpbmcgZGVidWdnZWQuICAqLw0KPiAgI2RlZmluZSBfWEVOX0RP TUlORl9kZWJ1Z2dlZCAgNg0KPiAgI2RlZmluZSBYRU5fRE9NSU5GX2RlYnVnZ2VkICAgKDFVPDxf WEVOX0RPTUlORl9kZWJ1Z2dlZCkNCj4gLS8qIGRvbWFpbiBpcyBQVkggKi8NCj4gLSNkZWZpbmUg X1hFTl9ET01JTkZfcHZoX2d1ZXN0IDcNCj4gLSNkZWZpbmUgWEVOX0RPTUlORl9wdmhfZ3Vlc3Qg ICgxVTw8X1hFTl9ET01JTkZfcHZoX2d1ZXN0KQ0KPiAgLyogZG9tYWluIGlzIGEgeGVuc3RvcmUg ZG9tYWluICovDQo+IC0jZGVmaW5lIF9YRU5fRE9NSU5GX3hzX2RvbWFpbiA4DQo+ICsjZGVmaW5l IF9YRU5fRE9NSU5GX3hzX2RvbWFpbiA3DQo+ICAjZGVmaW5lIFhFTl9ET01JTkZfeHNfZG9tYWlu ICAoMVU8PF9YRU5fRE9NSU5GX3hzX2RvbWFpbikNCj4gIC8qIGRvbWFpbiBoYXMgaGFyZHdhcmUg YXNzaXN0ZWQgcGFnaW5nICovDQo+IC0jZGVmaW5lIF9YRU5fRE9NSU5GX2hhcCAgICAgICA5DQo+ ICsjZGVmaW5lIF9YRU5fRE9NSU5GX2hhcCAgICAgICA4DQo+ICAjZGVmaW5lIFhFTl9ET01JTkZf aGFwICAgICAgICAoMVU8PF9YRU5fRE9NSU5GX2hhcCkNCj4gICAvKiBYRU5fRE9NSU5GX3NodXRk b3duIGd1ZXN0LXN1cHBsaWVkIGNvZGUuICAqLw0KPiAgI2RlZmluZSBYRU5fRE9NSU5GX3NodXRk b3dubWFzayAyNTUNCj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9zY2hlZC5oIGIveGVu L2luY2x1ZGUveGVuL3NjaGVkLmgNCj4gaW5kZXggMDkyOWMwYi4uY2MxMTk5OSAxMDA2NDQNCj4g LS0tIGEveGVuL2luY2x1ZGUveGVuL3NjaGVkLmgNCj4gKysrIGIveGVuL2luY2x1ZGUveGVuL3Nj aGVkLmgNCj4gQEAgLTMxMiw3ICszMTIsNyBAQCBzdHJ1Y3QgZXZ0Y2huX3BvcnRfb3BzOw0KPiAg ICogd2lsbCBiZSBmYWxzZSwgYnV0IGhhc19odm1fY29udGFpbmVyXyogY2hlY2tzIHdpbGwgYmUg dHJ1ZS4NCj4gICAqLw0KPiAgZW51bSBndWVzdF90eXBlIHsNCj4gLSAgICBndWVzdF90eXBlX3B2 LCBndWVzdF90eXBlX3B2aCwgZ3Vlc3RfdHlwZV9odm0NCj4gKyAgICBndWVzdF90eXBlX3B2LCBn dWVzdF90eXBlX2h2bQ0KPiAgfTsNCj4gDQo+ICBzdHJ1Y3QgZG9tYWluDQo+IEBAIC01NTUsMTEg KzU1NSw4IEBAIHN0cnVjdCBkb21haW4gKmRvbWFpbl9jcmVhdGUoZG9taWRfdCBkb21pZCwNCj4g dW5zaWduZWQgaW50IGRvbWNyX2ZsYWdzLA0KPiAgIC8qIERPTUNSRl9vb3Nfb2ZmOiBkb250IHVz ZSBvdXQtb2Ytc3luYyBvcHRpbWl6YXRpb24gZm9yIHNoYWRvdyBwYWdlDQo+IHRhYmxlcyAqLw0K PiAgI2RlZmluZSBfRE9NQ1JGX29vc19vZmYgICAgICAgICA0DQo+ICAjZGVmaW5lIERPTUNSRl9v b3Nfb2ZmICAgICAgICAgICgxVTw8X0RPTUNSRl9vb3Nfb2ZmKQ0KPiAtIC8qIERPTUNSRl9wdmg6 IENyZWF0ZSBQViBkb21haW4gaW4gSFZNIGNvbnRhaW5lci4gKi8NCj4gLSNkZWZpbmUgX0RPTUNS Rl9wdmggICAgICAgICAgICAgNQ0KPiAtI2RlZmluZSBET01DUkZfcHZoICAgICAgICAgICAgICAo MVU8PF9ET01DUkZfcHZoKQ0KPiAgIC8qIERPTUNSRl94c19kb21haW46IHhlbnN0b3JlIGRvbWFp biAqLw0KPiAtI2RlZmluZSBfRE9NQ1JGX3hzX2RvbWFpbiAgICAgICA2DQo+ICsjZGVmaW5lIF9E T01DUkZfeHNfZG9tYWluICAgICAgIDUNCj4gICNkZWZpbmUgRE9NQ1JGX3hzX2RvbWFpbiAgICAg ICAgKDFVPDxfRE9NQ1JGX3hzX2RvbWFpbikNCj4gDQo+ICAvKg0KPiBAQCAtODc1LDggKzg3Miw2 IEBAIHZvaWQgd2F0Y2hkb2dfZG9tYWluX2Rlc3Ryb3koc3RydWN0IGRvbWFpbiAqZCk7DQo+IA0K PiAgI2RlZmluZSBpc19wdl9kb21haW4oZCkgKChkKS0+Z3Vlc3RfdHlwZSA9PSBndWVzdF90eXBl X3B2KQ0KPiAgI2RlZmluZSBpc19wdl92Y3B1KHYpICAgKGlzX3B2X2RvbWFpbigodiktPmRvbWFp bikpDQo+IC0jZGVmaW5lIGlzX3B2aF9kb21haW4oZCkgKChkKS0+Z3Vlc3RfdHlwZSA9PSBndWVz dF90eXBlX3B2aCkNCj4gLSNkZWZpbmUgaXNfcHZoX3ZjcHUodikgICAoaXNfcHZoX2RvbWFpbigo diktPmRvbWFpbikpDQo+ICAjZGVmaW5lIGlzX2h2bV9kb21haW4oZCkgKChkKS0+Z3Vlc3RfdHlw ZSA9PSBndWVzdF90eXBlX2h2bSkNCj4gICNkZWZpbmUgaXNfaHZtX3ZjcHUodikgICAoaXNfaHZt X2RvbWFpbih2LT5kb21haW4pKQ0KPiAgI2RlZmluZSBoYXNfaHZtX2NvbnRhaW5lcl9kb21haW4o ZCkgKChkKS0+Z3Vlc3RfdHlwZSAhPQ0KPiBndWVzdF90eXBlX3B2KQ0KPiAtLQ0KPiAyLjEwLjEg KEFwcGxlIEdpdC03OCkNCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpo dHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==