From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v7 14/16] xen: make grant resource limits per domain Date: Tue, 19 Sep 2017 10:34:11 +0000 Message-ID: <005afa54f423438e97312f0875e59a52@AMSPEX02CL03.citrite.net> References: <20170919095852.15785-1-jgross@suse.com> <20170919095852.15785-15-jgross@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1duFr5-0006iD-9f for xen-devel@lists.xenproject.org; Tue, 19 Sep 2017 10:34:15 +0000 In-Reply-To: <20170919095852.15785-15-jgross@suse.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: 'Juergen Gross' , "xen-devel@lists.xenproject.org" Cc: "sstabellini@kernel.org" , Wei Liu , Andrew Cooper , "Tim (Xen.org)" , George Dunlap , "julien.grall@arm.com" , "jbeulich@suse.com" , Ian Jackson , "dgdegra@tycho.nsa.gov" List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBYZW4tZGV2ZWwgW21haWx0bzp4 ZW4tZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW4ub3JnXSBPbiBCZWhhbGYgT2YNCj4gSnVlcmdlbiBH cm9zcw0KPiBTZW50OiAxOSBTZXB0ZW1iZXIgMjAxNyAxMDo1OQ0KPiBUbzogeGVuLWRldmVsQGxp c3RzLnhlbnByb2plY3Qub3JnDQo+IENjOiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+ OyBzc3RhYmVsbGluaUBrZXJuZWwub3JnOyBXZWkgTGl1DQo+IDx3ZWkubGl1MkBjaXRyaXguY29t PjsgR2VvcmdlIER1bmxhcCA8R2VvcmdlLkR1bmxhcEBjaXRyaXguY29tPjsNCj4gQW5kcmV3IENv b3BlciA8QW5kcmV3LkNvb3BlcjNAY2l0cml4LmNvbT47IElhbiBKYWNrc29uDQo+IDxJYW4uSmFj a3NvbkBjaXRyaXguY29tPjsgVGltIChYZW4ub3JnKSA8dGltQHhlbi5vcmc+Ow0KPiBqdWxpZW4u Z3JhbGxAYXJtLmNvbTsgamJldWxpY2hAc3VzZS5jb207IGRnZGVncmFAdHljaG8ubnNhLmdvdg0K PiBTdWJqZWN0OiBbWGVuLWRldmVsXSBbUEFUQ0ggdjcgMTQvMTZdIHhlbjogbWFrZSBncmFudCBy ZXNvdXJjZSBsaW1pdHMgcGVyDQo+IGRvbWFpbg0KPiANCj4gSW5zdGVhZCBvZiB1c2luZyB0aGUg c2FtZSBnbG9iYWwgcmVzb3VyY2UgbGltaXRzIG9mIGdyYW50IHRhYmxlcyAobWF4Lg0KPiBudW1i ZXIgb2YgZ3JhbnQgZnJhbWVzLCBtYXguIG51bWJlciBvZiBtYXB0cmFjayBmcmFtZXMpIGZvciBh bGwgZG9tYWlucw0KPiBtYWtlIHRoZXNlIGxpbWl0cyBwZXIgZG9tYWluLiBTZXQgdGhvc2UgcGVy LWRvbWFpbiBsaW1pdHMgaW4NCj4gZ3JhbnRfdGFibGVfc2V0X2xpbWl0cygpLg0KPiANCj4gU2ln bmVkLW9mZi1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPg0KDQpSZXZpZXdlZC1i eTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4NCg0KPiAtLS0NCj4gVjY6 DQo+IC0gc2V2ZXJhbCBjaGFuZ2VzIGR1ZSB0byBuZXcgcGF0Y2ggb3JkZXINCj4gDQo+IFYzOg0K PiAtIGNvcnJlY3QgZXJyb3IgbWVzc2FnZSAoUGF1bCBEdXJyYW50KQ0KPiAtLS0NCj4gIHhlbi9j b21tb24vY29tcGF0L2dyYW50X3RhYmxlLmMgICB8ICAzMSArKystLS0tLS0tDQo+ICB4ZW4vY29t bW9uL2dyYW50X3RhYmxlLmMgICAgICAgICAgfCAxMjEgKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0NCj4gLS0tLS0tDQo+ICB4ZW4vaW5jbHVkZS9hc20tYXJtL2dyYW50X3RhYmxlLmgg fCAgIDYgKy0NCj4gIDMgZmlsZXMgY2hhbmdlZCwgODggaW5zZXJ0aW9ucygrKSwgNzAgZGVsZXRp b25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9jb21wYXQvZ3JhbnRfdGFibGUu Yw0KPiBiL3hlbi9jb21tb24vY29tcGF0L2dyYW50X3RhYmxlLmMNCj4gaW5kZXggY2NlM2ZmMGI5 YS4uZmYxZDY3OGYwMSAxMDA2NDQNCj4gLS0tIGEveGVuL2NvbW1vbi9jb21wYXQvZ3JhbnRfdGFi bGUuYw0KPiArKysgYi94ZW4vY29tbW9uL2NvbXBhdC9ncmFudF90YWJsZS5jDQo+IEBAIC0xNTcs MjEgKzE1NywxNCBAQCBpbnQgY29tcGF0X2dyYW50X3RhYmxlX29wKHVuc2lnbmVkIGludCBjbWQs DQo+ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG1heF9mcmFtZV9saXN0X3NpemVfaW5f cGFnZSA9DQo+ICAgICAgICAgICAgICAgICAgICAgIChDT01QQVRfQVJHX1hMQVRfU0laRSAtIHNp emVvZigqbmF0LnNldHVwKSkgLw0KPiAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoKm5hdC5z ZXR1cC0+ZnJhbWVfbGlzdC5wKTsNCj4gLSAgICAgICAgICAgICAgICBpZiAoIG1heF9mcmFtZV9s aXN0X3NpemVfaW5fcGFnZSA8IG1heF9ncmFudF9mcmFtZXMgKQ0KPiAtICAgICAgICAgICAgICAg IHsNCj4gLSAgICAgICAgICAgICAgICAgICAgZ2RwcmludGsoWEVOTE9HX1dBUk5JTkcsDQo+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtYXhfZ3JhbnRfZnJhbWVzIGlzIHRvbyBsYXJn ZSAoJXUsJXUpXG4iLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfZ3JhbnRf ZnJhbWVzLCBtYXhfZnJhbWVfbGlzdF9zaXplX2luX3BhZ2UpOw0KPiAtICAgICAgICAgICAgICAg ICAgICByYyA9IC1FSU5WQUw7DQo+IC0gICAgICAgICAgICAgICAgfQ0KPiAtICAgICAgICAgICAg ICAgIGVsc2UNCj4gLSAgICAgICAgICAgICAgICB7DQo+ICsNCj4gICNkZWZpbmUgWExBVF9nbnR0 YWJfc2V0dXBfdGFibGVfSE5ETF9mcmFtZV9saXN0KF9kXywgX3NfKSBcDQo+IC0gICAgICAgICAg ICAgICAgICAgIHNldF94ZW5fZ3Vlc3RfaGFuZGxlKChfZF8pLT5mcmFtZV9saXN0LCAodW5zaWdu ZWQgbG9uZw0KPiAqKShuYXQuc2V0dXAgKyAxKSkNCj4gLSAgICAgICAgICAgICAgICAgICAgWExB VF9nbnR0YWJfc2V0dXBfdGFibGUobmF0LnNldHVwLCAmY21wLnNldHVwKTsNCj4gKyAgICAgICAg ICAgICAgICBzZXRfeGVuX2d1ZXN0X2hhbmRsZSgoX2RfKS0+ZnJhbWVfbGlzdCwgKHVuc2lnbmVk IGxvbmcNCj4gKikobmF0LnNldHVwICsgMSkpDQo+ICsgICAgICAgICAgICAgICAgWExBVF9nbnR0 YWJfc2V0dXBfdGFibGUobmF0LnNldHVwLCAmY21wLnNldHVwKTsNCj4gICN1bmRlZiBYTEFUX2du dHRhYl9zZXR1cF90YWJsZV9ITkRMX2ZyYW1lX2xpc3QNCj4gLSAgICAgICAgICAgICAgICAgICAg cmMgPSBnbnR0YWJfc2V0dXBfdGFibGUoZ3Vlc3RfaGFuZGxlX2Nhc3QobmF0LnVvcCwNCj4gZ250 dGFiX3NldHVwX3RhYmxlX3QpLCAxKTsNCj4gLSAgICAgICAgICAgICAgICB9DQo+ICsgICAgICAg ICAgICAgICAgcmMgPSBnbnR0YWJfc2V0dXBfdGFibGUoZ3Vlc3RfaGFuZGxlX2Nhc3QobmF0LnVv cCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBnbnR0YWJfc2V0dXBfdGFibGVfdCksDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMSwgbWF4X2ZyYW1lX2xpc3Rfc2l6ZV9pbl9wYWdlKTsNCj4gICAg ICAgICAgICAgIH0NCj4gICAgICAgICAgICAgIEFTU0VSVChyYyA8PSAwKTsNCj4gICAgICAgICAg ICAgIGlmICggcmMgPT0gMCApDQo+IEBAIC0yOTQsMTYgKzI4Nyw2IEBAIGludCBjb21wYXRfZ3Jh bnRfdGFibGVfb3AodW5zaWduZWQgaW50IGNtZCwNCj4gICAgICAgICAgICAgICAgICByYyA9IC1F RkFVTFQ7DQo+ICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ICAgICAgICAgICAgICB9DQo+IC0g ICAgICAgICAgICBpZiAoIG1heF9mcmFtZV9saXN0X3NpemVfaW5fcGFnZXMgPA0KPiAtICAgICAg ICAgICAgICAgICBncmFudF90b19zdGF0dXNfZnJhbWVzKG1heF9ncmFudF9mcmFtZXMpICkNCj4g LSAgICAgICAgICAgIHsNCj4gLSAgICAgICAgICAgICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklO RywNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAiZ3JhbnRfdG9fc3RhdHVzX2ZyYW1lcyht YXhfZ3JhbnRfZnJhbWVzKSBpcyB0b28gbGFyZ2UNCj4gKCV1LCV1KVxuIiwNCj4gLSAgICAgICAg ICAgICAgICAgICAgICAgICBncmFudF90b19zdGF0dXNfZnJhbWVzKG1heF9ncmFudF9mcmFtZXMp LA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9mcmFtZV9saXN0X3NpemVfaW5fcGFn ZXMpOw0KPiAtICAgICAgICAgICAgICAgIHJjID0gLUVJTlZBTDsNCj4gLSAgICAgICAgICAgICAg ICBicmVhazsNCj4gLSAgICAgICAgICAgIH0NCj4gDQo+ICAjZGVmaW5lIFhMQVRfZ250dGFiX2dl dF9zdGF0dXNfZnJhbWVzX0hORExfZnJhbWVfbGlzdChfZF8sIF9zXykgXA0KPiAgICAgICAgICAg ICAgc2V0X3hlbl9ndWVzdF9oYW5kbGUoKF9kXyktPmZyYW1lX2xpc3QsICh1aW50NjRfdCAqKShu YXQuZ2V0X3N0YXR1cw0KPiArIDEpKQ0KPiBAQCAtMzEyLDcgKzI5NSw3IEBAIGludCBjb21wYXRf Z3JhbnRfdGFibGVfb3AodW5zaWduZWQgaW50IGNtZCwNCj4gDQo+ICAgICAgICAgICAgICByYyA9 IGdudHRhYl9nZXRfc3RhdHVzX2ZyYW1lcygNCj4gICAgICAgICAgICAgICAgICBndWVzdF9oYW5k bGVfY2FzdChuYXQudW9wLCBnbnR0YWJfZ2V0X3N0YXR1c19mcmFtZXNfdCksDQo+IC0gICAgICAg ICAgICAgICAgY291bnQpOw0KPiArICAgICAgICAgICAgICAgIGNvdW50LCBtYXhfZnJhbWVfbGlz dF9zaXplX2luX3BhZ2VzKTsNCj4gICAgICAgICAgICAgIGlmICggcmMgPj0gMCApDQo+ICAgICAg ICAgICAgICB7DQo+ICAjZGVmaW5lIFhMQVRfZ250dGFiX2dldF9zdGF0dXNfZnJhbWVzX0hORExf ZnJhbWVfbGlzdChfZF8sIF9zXykgXA0KPiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9ncmFudF90 YWJsZS5jIGIveGVuL2NvbW1vbi9ncmFudF90YWJsZS5jDQo+IGluZGV4IDI2ZjlhMzI2NTYuLmEw ZDhmMzI4NjkgMTAwNjQ0DQo+IC0tLSBhL3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYw0KPiArKysg Yi94ZW4vY29tbW9uL2dyYW50X3RhYmxlLmMNCj4gQEAgLTU0LDYgKzU0LDkgQEAgc3RydWN0IGdy YW50X3RhYmxlIHsNCj4gICAgICAgKiB3aGF0IHZlcnNpb24gdG8gdXNlIHlldC4NCj4gICAgICAg Ki8NCj4gICAgICB1bnNpZ25lZCBpbnQgICAgICAgICAgZ3RfdmVyc2lvbjsNCj4gKyAgICAvKiBS ZXNvdXJjZSBsaW1pdHMgb2YgdGhlIGRvbWFpbi4gKi8NCj4gKyAgICB1bnNpZ25lZCBpbnQgICAg ICAgICAgbWF4X2dyYW50X2ZyYW1lczsNCj4gKyAgICB1bnNpZ25lZCBpbnQgICAgICAgICAgbWF4 X21hcHRyYWNrX2ZyYW1lczsNCj4gICAgICAvKiBUYWJsZSBzaXplLiBOdW1iZXIgb2YgZnJhbWVz IHNoYXJlZCB3aXRoIGd1ZXN0ICovDQo+ICAgICAgdW5zaWduZWQgaW50ICAgICAgICAgIG5yX2dy YW50X2ZyYW1lczsNCj4gICAgICAvKiBOdW1iZXIgb2YgZ3JhbnQgc3RhdHVzIGZyYW1lcyBzaGFy ZWQgd2l0aCBndWVzdCAoZm9yIHZlcnNpb24gMikgKi8NCj4gQEAgLTI5MCw4ICsyOTMsOCBAQCBu dW1fYWN0X2ZyYW1lc19mcm9tX3NoYV9mcmFtZXMoY29uc3QgdW5zaWduZWQNCj4gaW50IG51bSkN Cj4gICAgICByZXR1cm4gRElWX1JPVU5EX1VQKG51bSAqIHNoYV9wZXJfcGFnZSwgQUNHTlRfUEVS X1BBR0UpOw0KPiAgfQ0KPiANCj4gLSNkZWZpbmUgbWF4X25yX2FjdGl2ZV9ncmFudF9mcmFtZXMg XA0KPiAtICAgIG51bV9hY3RfZnJhbWVzX2Zyb21fc2hhX2ZyYW1lcyhtYXhfZ3JhbnRfZnJhbWVz KQ0KPiArI2RlZmluZSBtYXhfbnJfYWN0aXZlX2dyYW50X2ZyYW1lcyhndCkgXA0KPiArICAgIG51 bV9hY3RfZnJhbWVzX2Zyb21fc2hhX2ZyYW1lcyhndC0+bWF4X2dyYW50X2ZyYW1lcykNCj4gDQo+ ICBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludA0KPiAgbnJfYWN0aXZlX2dyYW50X2ZyYW1lcyhz dHJ1Y3QgZ3JhbnRfdGFibGUgKmd0KQ0KPiBAQCAtNTI4LDcgKzUzMSw3IEBAIGdldF9tYXB0cmFj a19oYW5kbGUoDQo+ICAgICAgICogb3V0IG9mIG1lbW9yeSwgdHJ5IHN0ZWFsaW5nIGFuIGVudHJ5 IGZyb20gYW5vdGhlciBWQ1BVIChpbiBjYXNlIHRoZQ0KPiAgICAgICAqIGd1ZXN0IGlzbid0IG1h cHBpbmcgYWNyb3NzIGl0cyBWQ1BVcyBldmVubHkpLg0KPiAgICAgICAqLw0KPiAtICAgIGlmICgg bnJfbWFwdHJhY2tfZnJhbWVzKGxndCkgPCBtYXhfbWFwdHJhY2tfZnJhbWVzICkNCj4gKyAgICBp ZiAoIG5yX21hcHRyYWNrX2ZyYW1lcyhsZ3QpIDwgbGd0LT5tYXhfbWFwdHJhY2tfZnJhbWVzICkN Cj4gICAgICAgICAgbmV3X210ID0gYWxsb2NfeGVuaGVhcF9wYWdlKCk7DQo+IA0KPiAgICAgIGlm ICggIW5ld19tdCApDQo+IEBAIC0xNjY3LDIzICsxNjcwLDI2IEBAIGdyYW50X3RhYmxlX2luaXQo c3RydWN0IGdyYW50X3RhYmxlICpndCkNCj4gDQo+ICAgICAgLyogQWN0aXZlIGdyYW50IHRhYmxl LiAqLw0KPiAgICAgIGd0LT5hY3RpdmUgPSB4emFsbG9jX2FycmF5KHN0cnVjdCBhY3RpdmVfZ3Jh bnRfZW50cnkgKiwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfbnJfYWN0 aXZlX2dyYW50X2ZyYW1lcyk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4 X25yX2FjdGl2ZV9ncmFudF9mcmFtZXMoZ3QpKTsNCj4gICAgICBpZiAoIGd0LT5hY3RpdmUgPT0g TlVMTCApDQo+ICAgICAgICAgIGdvdG8gb3V0Ow0KPiANCj4gICAgICAvKiBUcmFja2luZyBvZiBt YXBwZWQgZm9yZWlnbiBmcmFtZXMgdGFibGUgKi8NCj4gLSAgICBndC0+bWFwdHJhY2sgPSB2emFs bG9jKG1heF9tYXB0cmFja19mcmFtZXMgKiBzaXplb2YoKmd0LT5tYXB0cmFjaykpOw0KPiAtICAg IGlmICggZ3QtPm1hcHRyYWNrID09IE5VTEwgKQ0KPiAtICAgICAgICBnb3RvIG91dDsNCj4gKyAg ICBpZiAoIGd0LT5tYXhfbWFwdHJhY2tfZnJhbWVzICkNCj4gKyAgICB7DQo+ICsgICAgICAgIGd0 LT5tYXB0cmFjayA9IHZ6YWxsb2MoZ3QtPm1heF9tYXB0cmFja19mcmFtZXMgKiBzaXplb2YoKmd0 LQ0KPiA+bWFwdHJhY2spKTsNCj4gKyAgICAgICAgaWYgKCBndC0+bWFwdHJhY2sgPT0gTlVMTCAp DQo+ICsgICAgICAgICAgICBnb3RvIG91dDsNCj4gKyAgICB9DQo+IA0KPiAgICAgIC8qIFNoYXJl ZCBncmFudCB0YWJsZS4gKi8NCj4gLSAgICBndC0+c2hhcmVkX3JhdyA9IHh6YWxsb2NfYXJyYXko dm9pZCAqLCBtYXhfZ3JhbnRfZnJhbWVzKTsNCj4gKyAgICBndC0+c2hhcmVkX3JhdyA9IHh6YWxs b2NfYXJyYXkodm9pZCAqLCBndC0+bWF4X2dyYW50X2ZyYW1lcyk7DQo+ICAgICAgaWYgKCBndC0+ c2hhcmVkX3JhdyA9PSBOVUxMICkNCj4gICAgICAgICAgZ290byBvdXQ7DQo+IA0KPiAgICAgIC8q IFN0YXR1cyBwYWdlcyBmb3IgZ3JhbnQgdGFibGUgLSBmb3IgdmVyc2lvbiAyICovDQo+ICAgICAg Z3QtPnN0YXR1cyA9IHh6YWxsb2NfYXJyYXkoZ3JhbnRfc3RhdHVzX3QgKiwNCj4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBncmFudF90b19zdGF0dXNfZnJhbWVzKG1heF9ncmFudF9m cmFtZXMpKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFudF90b19zdGF0 dXNfZnJhbWVzKGd0LT5tYXhfZ3JhbnRfZnJhbWVzKSk7DQo+ICAgICAgaWYgKCBndC0+c3RhdHVz ID09IE5VTEwgKQ0KPiAgICAgICAgICBnb3RvIG91dDsNCj4gDQo+IEBAIC0xNzE4LDggKzE3MjQs OSBAQCBnbnR0YWJfZ3Jvd190YWJsZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQNCj4g cmVxX25yX2ZyYW1lcykNCj4gICAgICBBU1NFUlQoZ3QtPmFjdGl2ZSk7DQo+IA0KPiAgICAgIGlm ICggcmVxX25yX2ZyYW1lcyA8IElOSVRJQUxfTlJfR1JBTlRfRlJBTUVTICkNCj4gLSAgICAgICAg cmVxX25yX2ZyYW1lcyA9IElOSVRJQUxfTlJfR1JBTlRfRlJBTUVTOw0KPiAtICAgIEFTU0VSVChy ZXFfbnJfZnJhbWVzIDw9IG1heF9ncmFudF9mcmFtZXMpOw0KPiArICAgICAgICByZXFfbnJfZnJh bWVzID0gbWluX3QodW5zaWduZWQgaW50LCBJTklUSUFMX05SX0dSQU5UX0ZSQU1FUywNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3QtPm1heF9ncmFudF9m cmFtZXMpOw0KPiArICAgIEFTU0VSVChyZXFfbnJfZnJhbWVzIDw9IGd0LT5tYXhfZ3JhbnRfZnJh bWVzKTsNCj4gDQo+ICAgICAgZ2RwcmludGsoWEVOTE9HX0lORk8sDQo+ICAgICAgICAgICAgICAi RXhwYW5kaW5nIGRvbSAoJWQpIGdyYW50IHRhYmxlIGZyb20gKCVkKSB0byAoJWQpIGZyYW1lcy5c biIsDQo+IEBAIC0xNzc3LDEzICsxNzg0LDE1IEBAIGFjdGl2ZV9hbGxvY19mYWlsZWQ6DQo+IA0K PiAgc3RhdGljIGxvbmcNCj4gIGdudHRhYl9zZXR1cF90YWJsZSgNCj4gLSAgICBYRU5fR1VFU1Rf SEFORExFX1BBUkFNKGdudHRhYl9zZXR1cF90YWJsZV90KSB1b3AsIHVuc2lnbmVkIGludA0KPiBj b3VudCkNCj4gKyAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKGdudHRhYl9zZXR1cF90YWJsZV90 KSB1b3AsIHVuc2lnbmVkIGludA0KPiBjb3VudCwNCj4gKyAgICB1bnNpZ25lZCBpbnQgbGltaXRf bWF4KQ0KPiAgew0KPiAgICAgIHN0cnVjdCB2Y3B1ICpjdXJyID0gY3VycmVudDsNCj4gICAgICBz dHJ1Y3QgZ250dGFiX3NldHVwX3RhYmxlIG9wOw0KPiAgICAgIHN0cnVjdCBkb21haW4gKmQgPSBO VUxMOw0KPiAgICAgIHN0cnVjdCBncmFudF90YWJsZSAqZ3Q7DQo+ICAgICAgdW5zaWduZWQgaW50 IGk7DQo+ICsgICAgbG9uZyByZXQgPSAwOw0KPiANCj4gICAgICBpZiAoIGNvdW50ICE9IDEgKQ0K PiAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gQEAgLTE3OTEsMTUgKzE4MDAsNiBAQCBnbnR0 YWJfc2V0dXBfdGFibGUoDQo+ICAgICAgaWYgKCB1bmxpa2VseShjb3B5X2Zyb21fZ3Vlc3QoJm9w LCB1b3AsIDEpKSApDQo+ICAgICAgICAgIHJldHVybiAtRUZBVUxUOw0KPiANCj4gLSAgICBpZiAo IHVubGlrZWx5KG9wLm5yX2ZyYW1lcyA+IG1heF9ncmFudF9mcmFtZXMpICkNCj4gLSAgICB7DQo+ IC0gICAgICAgIGdkcHJpbnRrKFhFTkxPR19JTkZPLCAiWGVuIG9ubHkgc3VwcG9ydHMgdXAgdG8g JWQgZ3JhbnQtdGFibGUNCj4gZnJhbWVzIg0KPiAtICAgICAgICAgICAgICAgICIgcGVyIGRvbWFp bi5cbiIsDQo+IC0gICAgICAgICAgICAgICAgbWF4X2dyYW50X2ZyYW1lcyk7DQo+IC0gICAgICAg IG9wLnN0YXR1cyA9IEdOVFNUX2dlbmVyYWxfZXJyb3I7DQo+IC0gICAgICAgIGdvdG8gb3V0Ow0K PiAtICAgIH0NCj4gLQ0KPiAgICAgIGlmICggIWd1ZXN0X2hhbmRsZV9va2F5KG9wLmZyYW1lX2xp c3QsIG9wLm5yX2ZyYW1lcykgKQ0KPiAgICAgICAgICByZXR1cm4gLUVGQVVMVDsNCj4gDQo+IEBA IC0xODE5LDYgKzE4MTksMjEgQEAgZ250dGFiX3NldHVwX3RhYmxlKA0KPiAgICAgIGd0ID0gZC0+ Z3JhbnRfdGFibGU7DQo+ICAgICAgZ3JhbnRfd3JpdGVfbG9jayhndCk7DQo+IA0KPiArICAgIGlm ICggdW5saWtlbHkob3AubnJfZnJhbWVzID4gZ3QtPm1heF9ncmFudF9mcmFtZXMpICkNCj4gKyAg ICB7DQo+ICsgICAgICAgIGdkcHJpbnRrKFhFTkxPR19JTkZPLCAiRG9tYWluIGlzIGxpbWl0ZWQg dG8gJWQgZ3JhbnQtdGFibGUNCj4gZnJhbWVzLlxuIiwNCj4gKyAgICAgICAgICAgICAgICBndC0+ bWF4X2dyYW50X2ZyYW1lcyk7DQo+ICsgICAgICAgIG9wLnN0YXR1cyA9IEdOVFNUX2dlbmVyYWxf ZXJyb3I7DQo+ICsgICAgICAgIGdvdG8gdW5sb2NrOw0KPiArICAgIH0NCj4gKyAgICBpZiAoIHVu bGlrZWx5KGxpbWl0X21heCA8IGd0LT5tYXhfZ3JhbnRfZnJhbWVzKSApDQo+ICsgICAgew0KPiAr ICAgICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywgIm1heF9ncmFudF9mcmFtZXMgaXMgdG9v IGxhcmdlDQo+ICgldSwldSlcbiIsDQo+ICsgICAgICAgICAgICAgICAgIGd0LT5tYXhfZ3JhbnRf ZnJhbWVzLCBsaW1pdF9tYXgpOw0KPiArICAgICAgICByZXQgPSAtRUlOVkFMOw0KPiArICAgICAg ICBnb3RvIHVubG9jazsNCj4gKyAgICB9DQo+ICsNCj4gICAgICBpZiAoIGd0LT5ndF92ZXJzaW9u ID09IDAgKQ0KPiAgICAgICAgICBndC0+Z3RfdmVyc2lvbiA9IDE7DQo+IA0KPiBAQCAtMTgyOSw3 ICsxODQ0LDcgQEAgZ250dGFiX3NldHVwX3RhYmxlKA0KPiAgICAgIHsNCj4gICAgICAgICAgZ2Rw cmludGsoWEVOTE9HX0lORk8sDQo+ICAgICAgICAgICAgICAgICAgICJFeHBhbmQgZ3JhbnQgdGFi bGUgdG8gJXUgZmFpbGVkLiBDdXJyZW50OiAldSBNYXg6ICV1XG4iLA0KPiAtICAgICAgICAgICAg ICAgICBvcC5ucl9mcmFtZXMsIG5yX2dyYW50X2ZyYW1lcyhndCksIG1heF9ncmFudF9mcmFtZXMp Ow0KPiArICAgICAgICAgICAgICAgICBvcC5ucl9mcmFtZXMsIG5yX2dyYW50X2ZyYW1lcyhndCks IGd0LT5tYXhfZ3JhbnRfZnJhbWVzKTsNCj4gICAgICAgICAgb3Auc3RhdHVzID0gR05UU1RfZ2Vu ZXJhbF9lcnJvcjsNCj4gICAgICAgICAgZ290byB1bmxvY2s7DQo+ICAgICAgfQ0KPiBAQCAtMTg1 MiwxMCArMTg2NywxMCBAQCBnbnR0YWJfc2V0dXBfdGFibGUoDQo+ICAgICAgaWYgKCBkICkNCj4g ICAgICAgICAgcmN1X3VubG9ja19kb21haW4oZCk7DQo+IA0KPiAtICAgIGlmICggdW5saWtlbHko X19jb3B5X2ZpZWxkX3RvX2d1ZXN0KHVvcCwgJm9wLCBzdGF0dXMpKSApDQo+ICsgICAgaWYgKCAh cmV0ICYmIHVubGlrZWx5KF9fY29weV9maWVsZF90b19ndWVzdCh1b3AsICZvcCwgc3RhdHVzKSkg KQ0KPiAgICAgICAgICByZXR1cm4gLUVGQVVMVDsNCj4gDQo+IC0gICAgcmV0dXJuIDA7DQo+ICsg ICAgcmV0dXJuIHJldDsNCj4gIH0NCj4gDQo+ICBzdGF0aWMgbG9uZw0KPiBAQCAtMTg2NCw2ICsx ODc5LDcgQEAgZ250dGFiX3F1ZXJ5X3NpemUoDQo+ICB7DQo+ICAgICAgc3RydWN0IGdudHRhYl9x dWVyeV9zaXplIG9wOw0KPiAgICAgIHN0cnVjdCBkb21haW4gKmQ7DQo+ICsgICAgc3RydWN0IGdy YW50X3RhYmxlICpndDsNCj4gDQo+ICAgICAgaWYgKCBjb3VudCAhPSAxICkNCj4gICAgICAgICAg cmV0dXJuIC1FSU5WQUw7DQo+IEBAIC0xODg0LDEzICsxOTAwLDE1IEBAIGdudHRhYl9xdWVyeV9z aXplKA0KPiAgICAgICAgICBnb3RvIG91dDsNCj4gICAgICB9DQo+IA0KPiAtICAgIGdyYW50X3Jl YWRfbG9jayhkLT5ncmFudF90YWJsZSk7DQo+ICsgICAgZ3QgPSBkLT5ncmFudF90YWJsZTsNCj4g DQo+IC0gICAgb3AubnJfZnJhbWVzICAgICA9IG5yX2dyYW50X2ZyYW1lcyhkLT5ncmFudF90YWJs ZSk7DQo+IC0gICAgb3AubWF4X25yX2ZyYW1lcyA9IG1heF9ncmFudF9mcmFtZXM7DQo+ICsgICAg Z3JhbnRfcmVhZF9sb2NrKGd0KTsNCj4gKw0KPiArICAgIG9wLm5yX2ZyYW1lcyAgICAgPSBucl9n cmFudF9mcmFtZXMoZ3QpOw0KPiArICAgIG9wLm1heF9ucl9mcmFtZXMgPSBndC0+bWF4X2dyYW50 X2ZyYW1lczsNCj4gICAgICBvcC5zdGF0dXMgICAgICAgID0gR05UU1Rfb2theTsNCj4gDQo+IC0g ICAgZ3JhbnRfcmVhZF91bmxvY2soZC0+Z3JhbnRfdGFibGUpOw0KPiArICAgIGdyYW50X3JlYWRf dW5sb2NrKGd0KTsNCj4gDQo+ICAgb3V0Og0KPiAgICAgIGlmICggZCApDQo+IEBAIC0yOTY1LDE0 ICsyOTgzLDE0IEBADQo+IGdudHRhYl9zZXRfdmVyc2lvbihYRU5fR1VFU1RfSEFORExFX1BBUkFN KGdudHRhYl9zZXRfdmVyc2lvbl90KQ0KPiB1b3ApDQo+IA0KPiAgc3RhdGljIGxvbmcNCj4gDQo+ IGdudHRhYl9nZXRfc3RhdHVzX2ZyYW1lcyhYRU5fR1VFU1RfSEFORExFX1BBUkFNKGdudHRhYl9n ZXRfc3RhdHUNCj4gc19mcmFtZXNfdCkgdW9wLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAg IGludCBjb3VudCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY291bnQsIHVuc2ln bmVkIGludCBsaW1pdF9tYXgpDQo+ICB7DQo+ICAgICAgZ250dGFiX2dldF9zdGF0dXNfZnJhbWVz X3Qgb3A7DQo+ICAgICAgc3RydWN0IGRvbWFpbiAqZDsNCj4gICAgICBzdHJ1Y3QgZ3JhbnRfdGFi bGUgKmd0Ow0KPiAgICAgIHVpbnQ2NF90ICAgICAgIGdtZm47DQo+ICAgICAgaW50IGk7DQo+IC0g ICAgaW50IHJjOw0KPiArICAgIGludCByYywgcmV0ID0gMDsNCj4gDQo+ICAgICAgaWYgKCBjb3Vu dCAhPSAxICkNCj4gICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+IEBAIC0zMDEyLDYgKzMwMzAs MTUgQEANCj4gZ250dGFiX2dldF9zdGF0dXNfZnJhbWVzKFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0o Z250dGFiX2dldF9zdGF0dQ0KPiBzX2ZyYW1lc190KSB1b3AsDQo+ICAgICAgICAgIGdvdG8gdW5s b2NrOw0KPiAgICAgIH0NCj4gDQo+ICsgICAgaWYgKCB1bmxpa2VseShsaW1pdF9tYXggPCBncmFu dF90b19zdGF0dXNfZnJhbWVzKGd0LQ0KPiA+bWF4X2dyYW50X2ZyYW1lcykpICkNCj4gKyAgICB7 DQo+ICsgICAgICAgIGdkcHJpbnRrKFhFTkxPR19XQVJOSU5HLA0KPiArICAgICAgICAgICAgICAg ICAiZ3JhbnRfdG9fc3RhdHVzX2ZyYW1lcyhtYXhfZ3JhbnRfZnJhbWVzKSBpcyB0b28gbGFyZ2UN Cj4gKCV1LCV1KVxuIiwNCj4gKyAgICAgICAgICAgICAgICAgZ3JhbnRfdG9fc3RhdHVzX2ZyYW1l cyhndC0+bWF4X2dyYW50X2ZyYW1lcyksIGxpbWl0X21heCk7DQo+ICsgICAgICAgIHJldCA9IC1F SU5WQUw7DQo+ICsgICAgICAgIGdvdG8gdW5sb2NrOw0KPiArICAgIH0NCj4gKw0KPiAgICAgIGZv ciAoIGkgPSAwOyBpIDwgb3AubnJfZnJhbWVzOyBpKysgKQ0KPiAgICAgIHsNCj4gICAgICAgICAg Z21mbiA9IGdudHRhYl9zdGF0dXNfZ21mbihkLCBndCwgaSk7DQo+IEBAIC0zMDI0LDEwICszMDUx LDEwIEBADQo+IGdudHRhYl9nZXRfc3RhdHVzX2ZyYW1lcyhYRU5fR1VFU1RfSEFORExFX1BBUkFN KGdudHRhYl9nZXRfc3RhdHUNCj4gc19mcmFtZXNfdCkgdW9wLA0KPiAgIG91dDI6DQo+ICAgICAg cmN1X3VubG9ja19kb21haW4oZCk7DQo+ICAgb3V0MToNCj4gLSAgICBpZiAoIHVubGlrZWx5KF9f Y29weV9maWVsZF90b19ndWVzdCh1b3AsICZvcCwgc3RhdHVzKSkgKQ0KPiArICAgIGlmICggIXJl dCAmJiB1bmxpa2VseShfX2NvcHlfZmllbGRfdG9fZ3Vlc3QodW9wLCAmb3AsIHN0YXR1cykpICkN Cj4gICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7DQo+IA0KPiAtICAgIHJldHVybiAwOw0KPiArICAg IHJldHVybiByZXQ7DQo+ICB9DQo+IA0KPiAgc3RhdGljIGxvbmcNCj4gQEAgLTMzMjAsNyArMzM0 Nyw3IEBAIGRvX2dyYW50X3RhYmxlX29wKA0KPiANCj4gICAgICBjYXNlIEdOVFRBQk9QX3NldHVw X3RhYmxlOg0KPiAgICAgICAgICByYyA9IGdudHRhYl9zZXR1cF90YWJsZSgNCj4gLSAgICAgICAg ICAgIGd1ZXN0X2hhbmRsZV9jYXN0KHVvcCwgZ250dGFiX3NldHVwX3RhYmxlX3QpLCBjb3VudCk7 DQo+ICsgICAgICAgICAgICBndWVzdF9oYW5kbGVfY2FzdCh1b3AsIGdudHRhYl9zZXR1cF90YWJs ZV90KSwgY291bnQsIH4wKTsNCj4gICAgICAgICAgQVNTRVJUKHJjIDw9IDApOw0KPiAgICAgICAg ICBicmVhazsNCj4gDQo+IEBAIC0zMzY5LDcgKzMzOTYsNyBAQCBkb19ncmFudF90YWJsZV9vcCgN Cj4gDQo+ICAgICAgY2FzZSBHTlRUQUJPUF9nZXRfc3RhdHVzX2ZyYW1lczoNCj4gICAgICAgICAg cmMgPSBnbnR0YWJfZ2V0X3N0YXR1c19mcmFtZXMoDQo+IC0gICAgICAgICAgICBndWVzdF9oYW5k bGVfY2FzdCh1b3AsIGdudHRhYl9nZXRfc3RhdHVzX2ZyYW1lc190KSwgY291bnQpOw0KPiArICAg ICAgICAgICAgZ3Vlc3RfaGFuZGxlX2Nhc3QodW9wLCBnbnR0YWJfZ2V0X3N0YXR1c19mcmFtZXNf dCksIGNvdW50LCB+MCk7DQo+ICAgICAgICAgIGJyZWFrOw0KPiANCj4gICAgICBjYXNlIEdOVFRB Qk9QX2dldF92ZXJzaW9uOg0KPiBAQCAtMzQ0Miw2ICszNDY5LDggQEAgZ3JhbnRfdGFibGVfY3Jl YXRlKA0KPiAgICAgIC8qIFNpbXBsZSBzdHVmZi4gKi8NCj4gICAgICBwZXJjcHVfcndsb2NrX3Jl c291cmNlX2luaXQoJnQtPmxvY2ssIGdyYW50X3J3bG9jayk7DQo+ICAgICAgc3Bpbl9sb2NrX2lu aXQoJnQtPm1hcHRyYWNrX2xvY2spOw0KPiArICAgIHQtPm1heF9ncmFudF9mcmFtZXMgPSBtYXhf Z3JhbnRfZnJhbWVzOw0KPiArICAgIHQtPm1heF9tYXB0cmFja19mcmFtZXMgPSBtYXhfbWFwdHJh Y2tfZnJhbWVzOw0KPiANCj4gICAgICAvKiBPa2F5LCBpbnN0YWxsIHRoZSBzdHJ1Y3R1cmUuICov DQo+ICAgICAgZC0+Z3JhbnRfdGFibGUgPSB0Ow0KPiBAQCAtMzY0OCw2ICszNjc3LDggQEAgaW50 IGdyYW50X3RhYmxlX3NldF9saW1pdHMoc3RydWN0IGRvbWFpbiAqZCwNCj4gdW5zaWduZWQgaW50 IGdyYW50X2ZyYW1lcywNCj4gICAgICBzdHJ1Y3QgZ3JhbnRfdGFibGUgKmd0ID0gZC0+Z3JhbnRf dGFibGU7DQo+ICAgICAgaW50IHJldCA9IC1FQlVTWTsNCj4gDQo+ICsgICAgaWYgKCAhZ3JhbnRf ZnJhbWVzICkNCj4gKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ICAgICAgaWYgKCAhZ3QgKQ0K PiAgICAgICAgICByZXR1cm4gLUVOT0VOVDsNCj4gDQo+IEBAIC0zNjU1LDcgKzM2ODYsMTEgQEAg aW50IGdyYW50X3RhYmxlX3NldF9saW1pdHMoc3RydWN0IGRvbWFpbiAqZCwNCj4gdW5zaWduZWQg aW50IGdyYW50X2ZyYW1lcywNCj4gDQo+ICAgICAgLyogU2V0IGxpbWl0cy4gKi8NCj4gICAgICBp ZiAoICFndC0+YWN0aXZlICkNCj4gKyAgICB7DQo+ICsgICAgICAgIGd0LT5tYXhfZ3JhbnRfZnJh bWVzID0gZ3JhbnRfZnJhbWVzOw0KPiArICAgICAgICBndC0+bWF4X21hcHRyYWNrX2ZyYW1lcyA9 IG1hcHRyYWNrX2ZyYW1lczsNCj4gICAgICAgICAgcmV0ID0gZ3JhbnRfdGFibGVfaW5pdChndCk7 DQo+ICsgICAgfQ0KPiANCj4gICAgICBncmFudF93cml0ZV91bmxvY2soZ3QpOw0KPiANCj4gQEAg LTM3MzEsNyArMzc2Niw3IEBAIGludCBnbnR0YWJfbWFwX2ZyYW1lKHN0cnVjdCBkb21haW4gKmQs IHVuc2lnbmVkDQo+IGxvbmcgaWR4LCBnZm5fdCBnZm4sDQo+ICAgICAgfQ0KPiAgICAgIGVsc2UN Cj4gICAgICB7DQo+IC0gICAgICAgIGlmICggKGlkeCA+PSBucl9ncmFudF9mcmFtZXMoZ3QpKSAm JiAoaWR4IDwgbWF4X2dyYW50X2ZyYW1lcykgKQ0KPiArICAgICAgICBpZiAoIChpZHggPj0gbnJf Z3JhbnRfZnJhbWVzKGd0KSkgJiYgKGlkeCA8IGd0LT5tYXhfZ3JhbnRfZnJhbWVzKSApDQo+ICAg ICAgICAgICAgICBnbnR0YWJfZ3Jvd190YWJsZShkLCBpZHggKyAxKTsNCj4gDQo+ICAgICAgICAg IGlmICggaWR4IDwgbnJfZ3JhbnRfZnJhbWVzKGd0KSApDQo+IEBAIC0zNzU5LDYgKzM3OTQsMTIg QEAgc3RhdGljIHZvaWQgZ250dGFiX3VzYWdlX3ByaW50KHN0cnVjdCBkb21haW4gKnJkKQ0KPiAN Cj4gICAgICBncmFudF9yZWFkX2xvY2soZ3QpOw0KPiANCj4gKyAgICBwcmludGsoImdyYW50LXRh YmxlIGZvciByZW1vdGUgZG9tYWluOiU1ZCAodiVkKVxuIg0KPiArICAgICAgICAgICAiICAlZCBm cmFtZXMgKCVkIG1heCksICVkIG1hcHRyYWNrIGZyYW1lcyAoJWQgbWF4KVxuIiwNCj4gKyAgICAg ICAgICAgcmQtPmRvbWFpbl9pZCwgZ3QtPmd0X3ZlcnNpb24sDQo+ICsgICAgICAgICAgIG5yX2dy YW50X2ZyYW1lcyhndCksIGd0LT5tYXhfZ3JhbnRfZnJhbWVzLA0KPiArICAgICAgICAgICBucl9t YXB0cmFja19mcmFtZXMoZ3QpLCBndC0+bWF4X21hcHRyYWNrX2ZyYW1lcyk7DQo+ICsNCj4gICAg ICBmb3IgKCByZWYgPSAwOyByZWYgIT0gbnJfZ3JhbnRfZW50cmllcyhndCk7IHJlZisrICkNCj4g ICAgICB7DQo+ICAgICAgICAgIHN0cnVjdCBhY3RpdmVfZ3JhbnRfZW50cnkgKmFjdDsNCj4gQEAg LTM3ODYsMTIgKzM4MjcsNyBAQCBzdGF0aWMgdm9pZCBnbnR0YWJfdXNhZ2VfcHJpbnQoc3RydWN0 IGRvbWFpbiAqcmQpDQo+ICAgICAgICAgICAgICBzdGF0dXMgPSBzdGF0dXNfZW50cnkoZ3QsIHJl Zik7DQo+ICAgICAgICAgIH0NCj4gDQo+IC0gICAgICAgIGlmICggZmlyc3QgKQ0KPiAtICAgICAg ICB7DQo+IC0gICAgICAgICAgICBwcmludGsoImdyYW50LXRhYmxlIGZvciByZW1vdGUgZG9tYWlu OiU1ZCAodiVkKVxuIiwNCj4gLSAgICAgICAgICAgICAgICAgICByZC0+ZG9tYWluX2lkLCBndC0+ Z3RfdmVyc2lvbik7DQo+IC0gICAgICAgICAgICBmaXJzdCA9IDA7DQo+IC0gICAgICAgIH0NCj4g KyAgICAgICAgZmlyc3QgPSAwOw0KPiANCj4gICAgICAgICAgLyogICAgICBbMHhYWFhdICBkZGRk ZCAweFhYWFhYWCAweFhYWFhYWFhYICAgICAgZGRkZGQgMHhYWFhYWFggMHhYWA0KPiAqLw0KPiAg ICAgICAgICBwcmludGsoIlsweCUwM3hdICAlNWQgMHglMDZseCAweCUwOHggICAgICAlNWQgMHgl MDYiUFJJeDY0Ig0KPiAweCUwMnhcbiIsDQo+IEBAIC0zODAzLDggKzM4MzksNyBAQCBzdGF0aWMg dm9pZCBnbnR0YWJfdXNhZ2VfcHJpbnQoc3RydWN0IGRvbWFpbiAqcmQpDQo+ICAgICAgZ3JhbnRf cmVhZF91bmxvY2soZ3QpOw0KPiANCj4gICAgICBpZiAoIGZpcnN0ICkNCj4gLSAgICAgICAgcHJp bnRrKCJncmFudC10YWJsZSBmb3IgcmVtb3RlIGRvbWFpbjolNWQgLi4uICINCj4gLSAgICAgICAg ICAgICAgICJubyBhY3RpdmUgZ3JhbnQgdGFibGUgZW50cmllc1xuIiwgcmQtPmRvbWFpbl9pZCk7 DQo+ICsgICAgICAgIHByaW50aygibm8gYWN0aXZlIGdyYW50IHRhYmxlIGVudHJpZXNcbiIpOw0K PiAgfQ0KPiANCj4gIHN0YXRpYyB2b2lkIGdudHRhYl91c2FnZV9wcmludF9hbGwodW5zaWduZWQg Y2hhciBrZXkpDQo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL2dyYW50X3RhYmxl LmggYi94ZW4vaW5jbHVkZS9hc20tDQo+IGFybS9ncmFudF90YWJsZS5oDQo+IGluZGV4IDA4NzBi NWI3ODIuLjlhNjBlNGU2MTQgMTAwNjQ0DQo+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ3Jh bnRfdGFibGUuaA0KPiArKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2dyYW50X3RhYmxlLmgNCj4g QEAgLTI2LDggKzI2LDggQEAgc3RhdGljIGlubGluZSBpbnQgcmVwbGFjZV9ncmFudF9zdXBwb3J0 ZWQodm9pZCkNCj4gICAgICByZXR1cm4gMTsNCj4gIH0NCj4gDQo+IC0jZGVmaW5lIGdudHRhYl9p bml0X2FyY2goZ3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XA0KPiAtICAgICggKChndCktPmFyY2guZ2ZuID0geHphbGxvY19hcnJheShnZm5fdCwgbWF4X2dy YW50X2ZyYW1lcykpID09IDAgICAgIFwNCj4gKyNkZWZpbmUgZ250dGFiX2luaXRfYXJjaChndCkg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAo ICgoZ3QpLT5hcmNoLmdmbiA9IHh6YWxsb2NfYXJyYXkoZ2ZuX3QsIChndCktPm1heF9ncmFudF9m cmFtZXMpKSA9PSAwIFwNCj4gICAgICAgID8gMCA6IC1FTk9NRU0gKQ0KPiANCj4gICNkZWZpbmUg Z250dGFiX2Rlc3Ryb3lfYXJjaChndCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQo+IEBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJlcGxhY2Vf Z3JhbnRfc3VwcG9ydGVkKHZvaWQpDQo+IA0KPiAgI2RlZmluZSBnbnR0YWJfc2hhcmVkX2dtZm4o ZCwgdCwgaSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gICAgICAo ICgoaSA+PSBucl9ncmFudF9mcmFtZXModCkpICYmICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcDQo+IC0gICAgICAgKGkgPCBtYXhfZ3JhbnRfZnJhbWVzKSkgPyAwIDogZ2Zu X3godC0+YXJjaC5nZm5baV0pKQ0KPiArICAgICAgIChpIDwgKHQpLT5tYXhfZ3JhbnRfZnJhbWVz KSk/IDAgOiBnZm5feCgodCktPmFyY2guZ2ZuW2ldKSkNCj4gDQo+ICAjZGVmaW5lIGdudHRhYl9u ZWVkX2lvbW11X21hcHBpbmcoZCkgICAgICAgICAgICAgICAgICAgIFwNCj4gICAgICAoaXNfZG9t YWluX2RpcmVjdF9tYXBwZWQoZCkgJiYgbmVlZF9pb21tdShkKSkNCj4gLS0NCj4gMi4xMi4zDQo+ IA0KPiANCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18N Cj4gWGVuLWRldmVsIG1haWxpbmcgbGlzdA0KPiBYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZw0KPiBo dHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsDQpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBs aXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK