From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH 5/5] tools/libxenctrl: use new xenforeignmemory API to seed grant table Date: Mon, 7 Aug 2017 12:36:21 +0000 Message-ID: References: <20170802095949.40677-1-paul.durrant@citrix.com> <20170802095949.40677-6-paul.durrant@citrix.com> <20170804122621.d5ptwybyk6avgypc@citrix.com> <20170804130203.GG8495@mail-itl> 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 1dehGh-00021t-Ab for xen-devel@lists.xenproject.org; Mon, 07 Aug 2017 12:36:23 +0000 In-Reply-To: <20170804130203.GG8495@mail-itl> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: =?utf-8?B?J01hcmVrIE1hcmN6eWtvd3NraS1Hw7NyZWNraSc=?= , Wei Liu Cc: "xen-devel@lists.xenproject.org" , Ian Jackson List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBNYXJlayBNYXJjenlrb3dza2kt R8OzcmVja2kNCj4gW21haWx0bzptYXJtYXJla0BpbnZpc2libGV0aGluZ3NsYWIuY29tXQ0KPiBT ZW50OiAwNCBBdWd1c3QgMjAxNyAxNDowMg0KPiBUbzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4 LmNvbT4NCj4gQ2M6IFBhdWwgRHVycmFudCA8UGF1bC5EdXJyYW50QGNpdHJpeC5jb20+OyB4ZW4t ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmc7DQo+IElhbiBKYWNrc29uIDxJYW4uSmFja3NvbkBj aXRyaXguY29tPg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIDUvNV0gdG9vbHMvbGlieGVuY3RybDog dXNlIG5ldyB4ZW5mb3JlaWdubWVtb3J5IEFQSSB0bw0KPiBzZWVkIGdyYW50IHRhYmxlDQo+IA0K PiBPbiBGcmksIEF1ZyAwNCwgMjAxNyBhdCAwMToyNjoyMVBNICswMTAwLCBXZWkgTGl1IHdyb3Rl Og0KPiA+IE9uIFdlZCwgQXVnIDAyLCAyMDE3IGF0IDEwOjU5OjQ5QU0gKzAxMDAsIFBhdWwgRHVy cmFudCB3cm90ZToNCj4gPiA+IEEgcHJldmlvdXMgcGF0Y2ggYWRkZWQgc3VwcG9ydCBmb3IgcHJp di1tYXBwaW5nIGd1ZXN0IHJlc291cmNlcyBkaXJlY3RseQ0KPiA+ID4gKHJhdGhlciB0aGFuIGhh dmluZyB0byBmb3JlaWduLW1hcCwgd2hpY2ggcmVxdWlyZXMgUDJNIG1vZGlmaWNhdGlvbiBmb3IN Cj4gPiA+IEhWTSBndWVzdHMpLg0KPiA+ID4NCj4gPiA+IFRoaXMgcGF0Y2ggbWFrZXMgdXNlIG9m IHRoZSBuZXcgQVBJIHRvIHNlZWQgdGhlIGd1ZXN0IGdyYW50IHRhYmxlIHVubGVzcw0KPiA+ID4g dGhlIHVuZGVybHlpbmcgaW5mcmFzdHJ1Y3R1cmUgKGkuZS4gcHJpdmNtZCkgZG9lc24ndCBzdXBw b3J0IGl0LCBpbiB3aGljaA0KPiA+ID4gY2FzZSB0aGUgb2xkIHNjaGVtZSBpcyB1c2VkLg0KPiA+ ID4NCj4gPg0KPiA+IFRoZSBjb2RlIG1vc3RseSBsb29rcyBmaW5lLg0KPiA+DQo+ID4gV2hhdCdz IHRoZSBiZW5lZml0IG9mIGRvaW5nIHRoaXM/DQo+IA0KPiBBbHNvLCBJIHNlZSBjaGFuZ2VkIHNp Z25hdHVyZSBvZiB4Y19kb21fZ250dGFiX3NlZWQgKGl0IGdvdCBpc19odm0NCj4gcGFyYW1ldGVy KS4gV2VpLCB3aGF0IGlzIHRoZSBwb2xpY3kgZm9yIGJhY2t3YXJkIGluY29tcGF0aWJsZSBsaWJ4 YyBBUEkNCj4gY2hhbmdlcz8NCj4gDQo+ID4gPiBOT1RFOiBUaGUgY2FsbCB0byB4Y19kb21fZ250 dGFiX2h2bV9zZWVkKCkgaW4NCj4gaHZtX2J1aWxkX3NldF9wYXJhbXMoKSB3YXMNCj4gPiA+ICAg ICAgIGFjdHVhbGx5IHVubmVjZXNzYXJ5LCBhcyB0aGUgZ3JhbnQgdGFibGUgaGFzIGFscmVhZHkg YmVlbiBzZWVkZWQNCj4gPiA+ICAgICAgIGJ5IGEgcHJpb3IgY2FsbCB0byB4Y19kb21fZ250dGFi X2luaXQoKSBtYWRlIGJ5IGxpYnhsX19idWlsZF9kb20oKS4NCj4gPiA+DQo+ID4gPiBTaWduZWQt b2ZmLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPg0KPiA+ID4gLS0t DQo+ID4gPiBDYzogSWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+DQo+ID4g PiBDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4NCj4gPg0KPiA+IEJUVyBNYXJlayBu ZWVkcyB0byBiZSBDQyBvbiBjaGFuZ2VzIHRvIFB5dGhvbiBiaW5kaW5ncy4gSSd2ZSBkb25lIHRo YXQNCj4gPiBmb3IgeW91Lg0KPiANCj4gRm9yIFB5dGhvbiBiaXRzOg0KPiBBY2tlZC1ieTogTWFy ZWsgTWFyY3p5a293c2tpLUfDs3JlY2tpDQo+IDxtYXJtYXJla0BpbnZpc2libGV0aGluZ3NsYWIu Y29tPg0KDQpUaGFua3MgOi0pDQoNCiAgUGF1bA0KDQo+IA0KPiA+ID4gLS0tDQo+ID4gPiAgdG9v bHMvbGlieGMvaW5jbHVkZS94Y19kb20uaCAgICAgICAgfCAgIDggKy0tDQo+ID4gPiAgdG9vbHMv bGlieGMveGNfZG9tX2Jvb3QuYyAgICAgICAgICAgfCAxMDINCj4gKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tDQo+ID4gPiAgdG9vbHMvbGlieGMveGNfc3JfcmVzdG9yZV94ODZf aHZtLmMgfCAgMTAgKystLQ0KPiA+ID4gIHRvb2xzL2xpYnhjL3hjX3NyX3Jlc3RvcmVfeDg2X3B2 LmMgIHwgICAyICstDQo+ID4gPiAgdG9vbHMvbGlieGwvbGlieGxfZG9tLmMgICAgICAgICAgICAg fCAgIDEgLQ0KPiA+ID4gIHRvb2xzL3B5dGhvbi94ZW4vbG93bGV2ZWwveGMveGMuYyAgIHwgICA2 ICstLQ0KPiA+ID4gIDYgZmlsZXMgY2hhbmdlZCwgOTIgaW5zZXJ0aW9ucygrKSwgMzcgZGVsZXRp b25zKC0pDQo+ID4gPg0KPiA+ID4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGNf ZG9tLmggYi90b29scy9saWJ4Yy9pbmNsdWRlL3hjX2RvbS5oDQo+ID4gPiBpbmRleCBjZTQ3MDU4 YzQxLi5kNmNhMGE4NjgwIDEwMDY0NA0KPiA+ID4gLS0tIGEvdG9vbHMvbGlieGMvaW5jbHVkZS94 Y19kb20uaA0KPiA+ID4gKysrIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94Y19kb20uaA0KPiA+ID4g QEAgLTMyMywxMiArMzIzLDggQEAgdm9pZCAqeGNfZG9tX2Jvb3RfZG9tVV9tYXAoc3RydWN0DQo+ IHhjX2RvbV9pbWFnZSAqZG9tLCB4ZW5fcGZuX3QgcGZuLA0KPiA+ID4gIGludCB4Y19kb21fYm9v dF9pbWFnZShzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pOw0KPiA+ID4gIGludCB4Y19kb21fY29t cGF0X2NoZWNrKHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSk7DQo+ID4gPiAgaW50IHhjX2RvbV9n bnR0YWJfaW5pdChzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pOw0KPiA+ID4gLWludCB4Y19kb21f Z250dGFiX2h2bV9zZWVkKHhjX2ludGVyZmFjZSAqeGNoLCBkb21pZF90IGRvbWlkLA0KPiA+ID4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgIHhlbl9wZm5fdCBjb25zb2xlX2dtZm4sDQo+ID4g PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgeGVuX3Bmbl90IHhlbnN0b3JlX2dtZm4sDQo+ ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9taWRfdCBjb25zb2xlX2RvbWlkLA0K PiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWlkX3QgeGVuc3RvcmVfZG9taWQp Ow0KPiA+ID4gLWludCB4Y19kb21fZ250dGFiX3NlZWQoeGNfaW50ZXJmYWNlICp4Y2gsIGRvbWlk X3QgZG9taWQsDQo+ID4gPiAraW50IHhjX2RvbV9nbnR0YWJfc2VlZCh4Y19pbnRlcmZhY2UgKnhj aCwgZG9taWRfdCBndWVzdF9kb21pZCwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGJv b2wgaXNfaHZtLA0KPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgeGVuX3Bmbl90IGNvbnNv bGVfZ21mbiwNCj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIHhlbl9wZm5fdCB4ZW5zdG9y ZV9nbWZuLA0KPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgZG9taWRfdCBjb25zb2xlX2Rv bWlkLA0KPiA+ID4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX2RvbV9ib290LmMgYi90b29s cy9saWJ4Yy94Y19kb21fYm9vdC5jDQo+ID4gPiBpbmRleCBjM2I0NGRkMzk5Li5mYzMxNzRhZDdl IDEwMDY0NA0KPiA+ID4gLS0tIGEvdG9vbHMvbGlieGMveGNfZG9tX2Jvb3QuYw0KPiA+ID4gKysr IGIvdG9vbHMvbGlieGMveGNfZG9tX2Jvb3QuYw0KPiA+ID4gQEAgLTI4MCwxMSArMjgwLDExIEBA IHN0YXRpYyB4ZW5fcGZuX3QNCj4geGNfZG9tX2dudHRhYl9zZXR1cCh4Y19pbnRlcmZhY2UgKnhj aCwgZG9taWRfdCBkb21pZCkNCj4gPiA+ICAgICAgcmV0dXJuIGdtZm47DQo+ID4gPiAgfQ0KPiA+ ID4NCj4gPiA+IC1pbnQgeGNfZG9tX2dudHRhYl9zZWVkKHhjX2ludGVyZmFjZSAqeGNoLCBkb21p ZF90IGRvbWlkLA0KPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgeGVuX3Bmbl90IGNvbnNv bGVfZ21mbiwNCj4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIHhlbl9wZm5fdCB4ZW5zdG9y ZV9nbWZuLA0KPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgZG9taWRfdCBjb25zb2xlX2Rv bWlkLA0KPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgZG9taWRfdCB4ZW5zdG9yZV9kb21p ZCkNCj4gPiA+ICtzdGF0aWMgaW50IGNvbXBhdF9nbnR0YWJfc2VlZCh4Y19pbnRlcmZhY2UgKnhj aCwgZG9taWRfdCBkb21pZCwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4 ZW5fcGZuX3QgY29uc29sZV9nbWZuLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHhlbl9wZm5fdCB4ZW5zdG9yZV9nbWZuLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRvbWlkX3QgY29uc29sZV9kb21pZCwNCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkb21pZF90IHhlbnN0b3JlX2RvbWlkKQ0KPiA+ID4gIHsNCj4gPiA+DQo+ ID4gPiAgICAgIHhlbl9wZm5fdCBnbnR0YWJfZ21mbjsNCj4gPiA+IEBAIC0zMzcsMTEgKzMzNywx MSBAQCBpbnQgeGNfZG9tX2dudHRhYl9zZWVkKHhjX2ludGVyZmFjZSAqeGNoLA0KPiBkb21pZF90 IGRvbWlkLA0KPiA+ID4gICAgICByZXR1cm4gMDsNCj4gPiA+ICB9DQo+ID4gPg0KPiA+ID4gLWlu dCB4Y19kb21fZ250dGFiX2h2bV9zZWVkKHhjX2ludGVyZmFjZSAqeGNoLCBkb21pZF90IGRvbWlk LA0KPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHhlbl9wZm5fdCBjb25zb2xlX2dw Zm4sDQo+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgeGVuX3Bmbl90IHhlbnN0b3Jl X2dwZm4sDQo+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9taWRfdCBjb25zb2xl X2RvbWlkLA0KPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWlkX3QgeGVuc3Rv cmVfZG9taWQpDQo+ID4gPiArc3RhdGljIGludCBjb21wYXRfZ250dGFiX2h2bV9zZWVkKHhjX2lu dGVyZmFjZSAqeGNoLCBkb21pZF90IGRvbWlkLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB4ZW5fcGZuX3QgY29uc29sZV9ncGZuLA0KPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB4ZW5fcGZuX3QgeGVuc3RvcmVfZ3BmbiwNCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9taWRfdCBjb25zb2xlX2RvbWlkLA0K PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21pZF90IHhlbnN0b3Jl X2RvbWlkKQ0KPiA+ID4gIHsNCj4gPiA+ICAgICAgaW50IHJjOw0KPiA+ID4gICAgICB4ZW5fcGZu X3Qgc2NyYXRjaF9ncGZuOw0KPiA+ID4gQEAgLTM4MCw3ICszODAsNyBAQCBpbnQgeGNfZG9tX2du dHRhYl9odm1fc2VlZCh4Y19pbnRlcmZhY2UgKnhjaCwNCj4gZG9taWRfdCBkb21pZCwNCj4gPiA+ ICAgICAgICAgIHJldHVybiAtMTsNCj4gPiA+ICAgICAgfQ0KPiA+ID4NCj4gPiA+IC0gICAgcmMg PSB4Y19kb21fZ250dGFiX3NlZWQoeGNoLCBkb21pZCwNCj4gPiA+ICsgICAgcmMgPSBjb21wYXRf Z250dGFiX3NlZWQoeGNoLCBkb21pZCwNCj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc29sZV9ncGZuLCB4ZW5zdG9yZV9ncGZuLA0KPiA+ID4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zb2xlX2RvbWlkLCB4ZW5zdG9yZV9kb21pZCk7DQo+ID4gPiAgICAgIGlm IChyYyAhPSAwKQ0KPiA+ID4gQEAgLTQwNSwxOCArNDA1LDc4IEBAIGludCB4Y19kb21fZ250dGFi X2h2bV9zZWVkKHhjX2ludGVyZmFjZQ0KPiAqeGNoLCBkb21pZF90IGRvbWlkLA0KPiA+ID4gICAg ICByZXR1cm4gMDsNCj4gPiA+ICB9DQo+ID4gPg0KPiA+ID4gLWludCB4Y19kb21fZ250dGFiX2lu aXQoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tKQ0KPiA+ID4gK2ludCB4Y19kb21fZ250dGFiX3Nl ZWQoeGNfaW50ZXJmYWNlICp4Y2gsIGRvbWlkX3QgZ3Vlc3RfZG9taWQsDQo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICBib29sIGlzX2h2bSwgeGVuX3Bmbl90IGNvbnNvbGVfZ21mbiwNCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHhlbl9wZm5fdCB4ZW5zdG9yZV9nbWZuLCBkb21p ZF90IGNvbnNvbGVfZG9taWQsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICBkb21pZF90 IHhlbnN0b3JlX2RvbWlkKQ0KPiA+ID4gIHsNCj4gPiA+IC0gICAgaWYgKCB4Y19kb21fdHJhbnNs YXRlZChkb20pICkgew0KPiA+ID4gLSAgICAgICAgcmV0dXJuIHhjX2RvbV9nbnR0YWJfaHZtX3Nl ZWQoZG9tLT54Y2gsIGRvbS0+Z3Vlc3RfZG9taWQsDQo+ID4gPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkb20tPmNvbnNvbGVfcGZuLCBkb20tPnhlbnN0b3JlX3BmbiwN Cj4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbS0+Y29uc29s ZV9kb21pZCwgZG9tLT54ZW5zdG9yZV9kb21pZCk7DQo+ID4gPiAtICAgIH0gZWxzZSB7DQo+ID4g PiAtICAgICAgICByZXR1cm4geGNfZG9tX2dudHRhYl9zZWVkKGRvbS0+eGNoLCBkb20tPmd1ZXN0 X2RvbWlkLA0KPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4Y19kb21f cDJtKGRvbSwgZG9tLT5jb25zb2xlX3BmbiksDQo+ID4gPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHhjX2RvbV9wMm0oZG9tLCBkb20tPnhlbnN0b3JlX3BmbiksDQo+ID4gPiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbS0+Y29uc29sZV9kb21pZCwgZG9t LT54ZW5zdG9yZV9kb21pZCk7DQo+ID4gPiArICAgIHhlbmZvcmVpZ25tZW1vcnlfaGFuZGxlKiBm bWVtID0geGNoLT5mbWVtOw0KPiA+ID4gKyAgICB4ZW5mb3JlaWdubWVtb3J5X3Jlc291cmNlX2hh bmRsZSAqZnJlczsNCj4gPiA+ICsgICAgdm9pZCAqYWRkciA9IE5VTEw7DQo+ID4gPiArICAgIGdy YW50X2VudHJ5X3YxX3QgKmdudHRhYjsNCj4gPiA+ICsNCj4gPiA+ICsgICAgZnJlcyA9IHhlbmZv cmVpZ25tZW1vcnlfbWFwX3Jlc291cmNlKGZtZW0sIGd1ZXN0X2RvbWlkLA0KPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWEVOTUVNX3Jlc291cmNlX2dyYW50 X3RhYmxlLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg MCwgMCwgMSwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZhZGRyLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLCAwKTsNCj4gPiA+ICsgICAgaWYgKCAhZnJl cyApDQo+ID4gPiArICAgIHsNCj4gPiA+ICsgICAgICAgIGlmICggZXJybm8gPT0gRU9QTk9UU1VQ UCApDQo+ID4gPiArICAgICAgICAgICAgcmV0dXJuIGlzX2h2bSA/DQo+ID4gPiArICAgICAgICAg ICAgICAgIGNvbXBhdF9nbnR0YWJfaHZtX3NlZWQoeGNoLCBndWVzdF9kb21pZCwNCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlX2dtZm4sIHhlbnN0 b3JlX2dtZm4sDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc29sZV9kb21pZCwgeGVuc3RvcmVfZG9taWQpIDoNCj4gPiA+ICsgICAgICAgICAgICAgICAg Y29tcGF0X2dudHRhYl9zZWVkKHhjaCwgZ3Vlc3RfZG9taWQsDQo+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlX2dtZm4sIHhlbnN0b3JlX2dtZm4sDQo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlX2RvbWlkLCB4ZW5z dG9yZV9kb21pZCk7DQo+ID4gPiArDQo+ID4gPiArICAgICAgICB4Y19kb21fcGFuaWMoeGNoLCBY Q19JTlRFUk5BTF9FUlJPUiwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAiJXM6IGZhaWxl ZCB0byBhY3F1aXJlIGdyYW50IHRhYmxlICINCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAi W2Vycm5vPSVkXVxuIiwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18s IGVycm5vKTsNCj4gPiA+ICsgICAgICAgIHJldHVybiAtMTsNCj4gPiA+ICAgICAgfQ0KPiA+ID4g Kw0KPiA+ID4gKyAgICBnbnR0YWIgPSBhZGRyOw0KPiA+ID4gKw0KPiA+ID4gKyAgICBpZiAoIGd1 ZXN0X2RvbWlkICE9IGNvbnNvbGVfZG9taWQgICYmIGNvbnNvbGVfZ21mbiAhPSAtMSkNCj4gPiA+ ICsgICAgew0KPiA+ID4gKyAgICAgICAgeGNfZG9tX3ByaW50Zih4Y2gsICIlczogc2V0dGluZyBj b25zb2xlIHBmbj0weCUiUFJJX3hlbl9wZm4sDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg IF9fRlVOQ1RJT05fXywgY29uc29sZV9nbWZuKTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgICAgIGdu dHRhYltHTlRUQUJfUkVTRVJWRURfQ09OU09MRV0uZmxhZ3MgPSBHVEZfcGVybWl0X2FjY2VzczsN Cj4gPiA+ICsgICAgICAgIGdudHRhYltHTlRUQUJfUkVTRVJWRURfQ09OU09MRV0uZG9taWQgPSBj b25zb2xlX2RvbWlkOw0KPiA+ID4gKyAgICAgICAgZ250dGFiW0dOVFRBQl9SRVNFUlZFRF9DT05T T0xFXS5mcmFtZSA9IGNvbnNvbGVfZ21mbjsNCj4gPiA+ICsgICAgfQ0KPiA+ID4gKw0KPiA+ID4g KyAgICBpZiAoIGd1ZXN0X2RvbWlkICE9IHhlbnN0b3JlX2RvbWlkICYmIHhlbnN0b3JlX2dtZm4g IT0gLTEpDQo+ID4gPiArICAgIHsNCj4gPiA+ICsgICAgICAgIHhjX2RvbV9wcmludGYoeGNoLCAi JXM6IHNldHRpbmcgeGVuc3RvcmUgcGZuPTB4JSJQUklfeGVuX3BmbiwNCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgX19GVU5DVElPTl9fLCB4ZW5zdG9yZV9nbWZuKTsNCj4gPiA+ICsNCj4g PiA+ICsgICAgICAgIGdudHRhYltHTlRUQUJfUkVTRVJWRURfWEVOU1RPUkVdLmZsYWdzID0gR1RG X3Blcm1pdF9hY2Nlc3M7DQo+ID4gPiArICAgICAgICBnbnR0YWJbR05UVEFCX1JFU0VSVkVEX1hF TlNUT1JFXS5kb21pZCA9IHhlbnN0b3JlX2RvbWlkOw0KPiA+ID4gKyAgICAgICAgZ250dGFiW0dO VFRBQl9SRVNFUlZFRF9YRU5TVE9SRV0uZnJhbWUgPSB4ZW5zdG9yZV9nbWZuOw0KPiA+ID4gKyAg ICB9DQo+ID4gPiArDQo+ID4gPiArICAgIHhlbmZvcmVpZ25tZW1vcnlfdW5tYXBfcmVzb3VyY2Uo Zm1lbSwgZnJlcyk7DQo+ID4gPiArDQo+ID4gPiArICAgIHJldHVybiAwOw0KPiA+ID4gK30NCj4g PiA+ICsNCj4gPiA+ICtpbnQgeGNfZG9tX2dudHRhYl9pbml0KHN0cnVjdCB4Y19kb21faW1hZ2Ug KmRvbSkNCj4gPiA+ICt7DQo+ID4gPiArICAgIHhjX2ludGVyZmFjZSAqeGNoID0gZG9tLT54Y2g7 DQo+ID4gPiArICAgIGRvbWlkX3QgZ3Vlc3RfZG9taWQgPSBkb20tPmd1ZXN0X2RvbWlkOw0KPiA+ ID4gKyAgICBib29sIGlzX2h2bSA9IHhjX2RvbV90cmFuc2xhdGVkKGRvbSk7DQo+ID4gPiArICAg IHhlbl9wZm5fdCBjb25zb2xlX2dtZm4gPSB4Y19kb21fcDJtKGRvbSwgZG9tLT5jb25zb2xlX3Bm bik7DQo+ID4gPiArICAgIHhlbl9wZm5fdCB4ZW5zdG9yZV9nbWZuID0geGNfZG9tX3AybShkb20s IGRvbS0NCj4gPnhlbnN0b3JlX3Bmbik7DQo+ID4gPiArICAgIGRvbWlkX3QgY29uc29sZV9kb21p ZCA9IGRvbS0+Y29uc29sZV9kb21pZDsNCj4gPiA+ICsgICAgZG9taWRfdCB4ZW5zdG9yZV9kb21p ZCA9IGRvbS0+eGVuc3RvcmVfZG9taWQ7DQo+ID4gPiArDQo+ID4gPiArICAgIHJldHVybiB4Y19k b21fZ250dGFiX3NlZWQoeGNoLCBndWVzdF9kb21pZCwgaXNfaHZtLA0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVfZ21mbiwgeGVuc3RvcmVfZ21mbiwNCj4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlX2RvbWlkLCB4ZW5zdG9yZV9k b21pZCk7DQo+ID4gPiAgfQ0KPiA+ID4NCj4gPiA+ICAvKg0KPiA+ID4gZGlmZiAtLWdpdCBhL3Rv b2xzL2xpYnhjL3hjX3NyX3Jlc3RvcmVfeDg2X2h2bS5jDQo+IGIvdG9vbHMvbGlieGMveGNfc3Jf cmVzdG9yZV94ODZfaHZtLmMNCj4gPiA+IGluZGV4IDFkY2E4NTM1NGEuLmE1YzY2MWRhOGYgMTAw NjQ0DQo+ID4gPiAtLS0gYS90b29scy9saWJ4Yy94Y19zcl9yZXN0b3JlX3g4Nl9odm0uYw0KPiA+ ID4gKysrIGIvdG9vbHMvbGlieGMveGNfc3JfcmVzdG9yZV94ODZfaHZtLmMNCj4gPiA+IEBAIC0y MDcsMTEgKzIwNywxMSBAQCBzdGF0aWMgaW50IHg4Nl9odm1fc3RyZWFtX2NvbXBsZXRlKHN0cnVj dA0KPiB4Y19zcl9jb250ZXh0ICpjdHgpDQo+ID4gPiAgICAgICAgICByZXR1cm4gcmM7DQo+ID4g PiAgICAgIH0NCj4gPiA+DQo+ID4gPiAtICAgIHJjID0geGNfZG9tX2dudHRhYl9odm1fc2VlZCh4 Y2gsIGN0eC0+ZG9taWQsDQo+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj dHgtPnJlc3RvcmUuY29uc29sZV9nZm4sDQo+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjdHgtPnJlc3RvcmUueGVuc3RvcmVfZ2ZuLA0KPiA+ID4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY3R4LT5yZXN0b3JlLmNvbnNvbGVfZG9taWQsDQo+ID4gPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPnJlc3RvcmUueGVuc3RvcmVfZG9taWQp Ow0KPiA+ID4gKyAgICByYyA9IHhjX2RvbV9nbnR0YWJfc2VlZCh4Y2gsIGN0eC0+ZG9taWQsIHRy dWUsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+cmVzdG9yZS5jb25z b2xlX2dmbiwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5yZXN0b3Jl LnhlbnN0b3JlX2dmbiwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5y ZXN0b3JlLmNvbnNvbGVfZG9taWQsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg IGN0eC0+cmVzdG9yZS54ZW5zdG9yZV9kb21pZCk7DQo+ID4gPiAgICAgIGlmICggcmMgKQ0KPiA+ ID4gICAgICB7DQo+ID4gPiAgICAgICAgICBQRVJST1IoIkZhaWxlZCB0byBzZWVkIGdyYW50IHRh YmxlIik7DQo+ID4gPiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfc3JfcmVzdG9yZV94ODZf cHYuYw0KPiBiL3Rvb2xzL2xpYnhjL3hjX3NyX3Jlc3RvcmVfeDg2X3B2LmMNCj4gPiA+IGluZGV4 IDUwZTI1YzE2MmMuLjEwNjM1ZDQzNmIgMTAwNjQ0DQo+ID4gPiAtLS0gYS90b29scy9saWJ4Yy94 Y19zcl9yZXN0b3JlX3g4Nl9wdi5jDQo+ID4gPiArKysgYi90b29scy9saWJ4Yy94Y19zcl9yZXN0 b3JlX3g4Nl9wdi5jDQo+ID4gPiBAQCAtMTEwNCw3ICsxMTA0LDcgQEAgc3RhdGljIGludCB4ODZf cHZfc3RyZWFtX2NvbXBsZXRlKHN0cnVjdA0KPiB4Y19zcl9jb250ZXh0ICpjdHgpDQo+ID4gPiAg ICAgIGlmICggcmMgKQ0KPiA+ID4gICAgICAgICAgcmV0dXJuIHJjOw0KPiA+ID4NCj4gPiA+IC0g ICAgcmMgPSB4Y19kb21fZ250dGFiX3NlZWQoeGNoLCBjdHgtPmRvbWlkLA0KPiA+ID4gKyAgICBy YyA9IHhjX2RvbV9nbnR0YWJfc2VlZCh4Y2gsIGN0eC0+ZG9taWQsIGZhbHNlLA0KPiA+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPnJlc3RvcmUuY29uc29sZV9nZm4sDQo+ID4g PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+cmVzdG9yZS54ZW5zdG9yZV9nZm4s DQo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+cmVzdG9yZS5jb25zb2xl X2RvbWlkLA0KPiA+ID4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX2RvbS5jIGIvdG9v bHMvbGlieGwvbGlieGxfZG9tLmMNCj4gPiA+IGluZGV4IGY1NGZkNDlhNzMuLjBkM2U0NjJjMTIg MTAwNjQ0DQo+ID4gPiAtLS0gYS90b29scy9saWJ4bC9saWJ4bF9kb20uYw0KPiA+ID4gKysrIGIv dG9vbHMvbGlieGwvbGlieGxfZG9tLmMNCj4gPiA+IEBAIC04NTEsNyArODUxLDYgQEAgc3RhdGlj IGludCBodm1fYnVpbGRfc2V0X3BhcmFtcyh4Y19pbnRlcmZhY2UNCj4gKmhhbmRsZSwgdWludDMy X3QgZG9taWQsDQo+ID4gPiAgICAgICpzdG9yZV9tZm4gPSBzdHJfbWZuOw0KPiA+ID4gICAgICAq Y29uc29sZV9tZm4gPSBjb25zX21mbjsNCj4gPiA+DQo+ID4gPiAtICAgIHhjX2RvbV9nbnR0YWJf aHZtX3NlZWQoaGFuZGxlLCBkb21pZCwgKmNvbnNvbGVfbWZuLA0KPiAqc3RvcmVfbWZuLCBjb25z b2xlX2RvbWlkLCBzdG9yZV9kb21pZCk7DQo+ID4gPiAgICAgIHJldHVybiAwOw0KPiA+ID4gIH0N Cj4gPiA+DQo+ID4gPiBkaWZmIC0tZ2l0IGEvdG9vbHMvcHl0aG9uL3hlbi9sb3dsZXZlbC94Yy94 Yy5jDQo+IGIvdG9vbHMvcHl0aG9uL3hlbi9sb3dsZXZlbC94Yy94Yy5jDQo+ID4gPiBpbmRleCBh YTlmOGU0ZDllLi41ODNhYjUyYTZmIDEwMDY0NA0KPiA+ID4gLS0tIGEvdG9vbHMvcHl0aG9uL3hl bi9sb3dsZXZlbC94Yy94Yy5jDQo+ID4gPiArKysgYi90b29scy9weXRob24veGVuL2xvd2xldmVs L3hjL3hjLmMNCj4gPiA+IEBAIC04MDAsOSArODAwLDkgQEAgc3RhdGljIFB5T2JqZWN0DQo+ICpw eXhjX2dudHRhYl9odm1fc2VlZChYY09iamVjdCAqc2VsZiwNCj4gPiA+ICAJCQkJICAgICAgJmNv bnNvbGVfZG9taWQsICZ4ZW5zdG9yZV9kb21pZCkgKQ0KPiA+ID4gICAgICAgICAgcmV0dXJuIE5V TEw7DQo+ID4gPg0KPiA+ID4gLSAgICBpZiAoIHhjX2RvbV9nbnR0YWJfaHZtX3NlZWQoc2VsZi0+ eGNfaGFuZGxlLCBkb20sDQo+ID4gPiAtCQkJCWNvbnNvbGVfZ21mbiwgeGVuc3RvcmVfZ21mbiwN Cj4gPiA+IC0JCQkJY29uc29sZV9kb21pZCwgeGVuc3RvcmVfZG9taWQpICE9IDAgKQ0KPiA+ID4g KyAgICBpZiAoIHhjX2RvbV9nbnR0YWJfc2VlZChzZWxmLT54Y19oYW5kbGUsIGRvbSwgdHJ1ZSwN Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZV9nbWZuLCB4ZW5zdG9y ZV9nbWZuLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlX2RvbWlk LCB4ZW5zdG9yZV9kb21pZCkgIT0gMCApDQo+ID4gPiAgICAgICAgICByZXR1cm4gcHl4Y19lcnJv cl90b19leGNlcHRpb24oc2VsZi0+eGNfaGFuZGxlKTsNCj4gPiA+DQo+ID4gPiAgICAgIHJldHVy biBQeV9Ob25lOw0KPiA+ID4gLS0NCj4gPiA+IDIuMTEuMA0KPiA+ID4NCj4gDQo+IC0tDQo+IEJl c3QgUmVnYXJkcywNCj4gTWFyZWsgTWFyY3p5a293c2tpLUfDs3JlY2tpDQo+IEludmlzaWJsZSBU aGluZ3MgTGFiDQo+IEE6IEJlY2F1c2UgaXQgbWVzc2VzIHVwIHRoZSBvcmRlciBpbiB3aGljaCBw ZW9wbGUgbm9ybWFsbHkgcmVhZCB0ZXh0Lg0KPiBROiBXaHkgaXMgdG9wLXBvc3Rpbmcgc3VjaCBh IGJhZCB0aGluZz8NCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6 Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=