From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: Proposed XENMEM_claim_pages hypercall: Analysis of problem and alternate solutions Date: Fri, 11 Jan 2013 11:03:14 -0500 Message-ID: <20130111160314.GD15353@phenom.dumpdata.com> References: <49049C00-89CA-4B43-9660-83B9ADC061E0@gridcentric.ca> <20121218221749.GA6332@phenom.dumpdata.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Andres Lagar-Cavilla Cc: Dan Magenheimer , "Keir (Xen.org)" , Ian Campbell , George Dunlap , Tim Deegan , Ian Jackson , xen-devel@lists.xen.org, Konrad Rzeszutek Wilk , Jan Beulich List-Id: xen-devel@lists.xenproject.org SGV5YSwKCk11Y2ggYXBwcmVjaWF0ZSB5b3VyIGlucHV0LCBhbmQgYmVsb3cgYXJlIG15IHJlc3Bv bnNlcy4KPiA+Pj4gQSkgSW4gTGludXgsIGEgcHJpdmlsZWdlZCB1c2VyIGNhbiB3cml0ZSB0byBh IHN5c2ZzIGZpbGUgd2hpY2ggd3JpdGVzCj4gPj4+IHRvIHRoZSBiYWxsb29uIGRyaXZlciB3aGlj aCBtYWtlcyBoeXBlcmNhbGxzIGZyb20gdGhlIGd1ZXN0IGtlcm5lbCB0bwo+ID4+IAo+ID4+IEEg ZmFpcmx5IGJpemFycmUgbGltaXRhdGlvbiBvZiBhIGJhbGxvb24tYmFzZWQgYXBwcm9hY2ggdG8g bWVtb3J5IG1hbmFnZW1lbnQuIFdoeSBvbiBlYXJ0aCBzaG91bGQgdGhlIGd1ZXN0IGJlIGFsbG93 ZWQgdG8gY2hhbmdlIHRoZSBzaXplIG9mIGl0cyBiYWxsb29uLCBhbmQgdGhlcmVmb3JlIGl0cyBm b290cHJpbnQgb24gdGhlIGhvc3QuIFRoaXMgbWF5IGJlIGp1c3RpZmllZCB3aXRoIGFyZ3VtZW50 cyBwZXJ0YWluaW5nIHRvIHRoZSBzdGFiaWxpdHkgb2YgdGhlIGluLWd1ZXN0IHdvcmtsb2FkLiBX aGF0IHRoZXkgcmVhbGx5IHJldmVhbCBhcmUgbGltaXRhdGlvbnMgb2YgYmFsbG9vbmluZy4gQnV0 IHRoZSBpbmFkZXF1YWN5IG9mIHRoZSBiYWxsb29uIGluIGl0c2VsZiBkb2Vzbid0IGF1dG9tYXRp Y2FsbHkgdHJhbnNsYXRlIGludG8ganVzdGlmeWluZyB0aGUgbmVlZCBmb3IgYSBuZXcgaHlwZXIg Y2FsbC4KPiA+IAo+ID4gV2h5IGlzIHRoaXMgYSBsaW1pdGF0aW9uPyBXaHkgc2hvdWxkbid0IHRo ZSBndWVzdCB0aGUgYWxsb3dlZCB0byBjaGFuZ2UKPiA+IGl0cyBtZW1vcnkgdXNhZ2U/IEl0IGNh biBnbyB1cCBhbmQgZG93biBhcyBpdCBzZWVzIGZpdC4KPiAKPiBObyBuby4gQ2FuIHRoZSBndWVz dCBjaGFuZ2UgaXRzIGNwdSB1dGlsaXphdGlvbiBvdXRzaWRlIHNjaGVkdWxlciBjb25zdHJhaW50 cz8gTklDL2Jsb2NrIGRldiBxdW90YXM/IFdoeSBzaG91bGQgYW4gdW5wcml2aWxlZ2VkIGd1ZXN0 IGJlIGFibGUgdG8gdGFrZSBhIG1hc3NpdmUgcyppdCBvdmVyIHRoZSBob3N0IGNvbnRyb2xsZXIn cyBtZW1vcnkgYWxsb2NhdGlvbiwgYXQgdGhlIGd1ZXN0J3Mgd2hpbT8KClRoZXJlIGlzIGEgbGlt aXQgdG8gd2hhdCBpdCBjYW4gZG8uIEl0IGlzIG5vdCBhbiB1bmNvbnRyb2xsZWQgZ3Vlc3QKZ29p bmcgbWF5aGVtIC0gaXQgZG9lcyBpdCBzdHVmZiB3aXRoaW4gdGhlIHBhcmFtZXRlcnMgb2YgdGhl IGd1ZXN0IGNvbmZpZy4KV2l0aGluIGluIG15IG1pbmQgYWxzbyBpbXBsaWVzIHRoZSAndG1lbScg ZG9pbmcgZXh0cmEgdGhpbmdzIGluIHRoZSBoeXBlcnZpc29yLgoKPiAKPiBJJ2xsIGJlIGhhcHB5 IHdpdGggYSBiYWxsb29uIHRoZSBkYXkgSSBzZWUgYW4gT1MgdGhhdCBjYW4ndCBiZSByb290ZWQg OikKPiAKPiBPYnZpb3VzbHkgdGhpcyBwb2ludHMgdG8gYSBwcm9ibGVtIHdpdGggc2hhcmluZyAm IHBhZ2luZy4gQW5kIHRoaXMgaXMgd2h5IEkgc3RpbGwgc3BhbSB0aGlzIHRocmVhZC4gTW9yZSBi ZWxvdy4KPiAgCj4gPiBBbmQgaWYgaXQgZ29lcyBkb3duIGFuZCBpdCBnZXRzIGJldHRlciBwZXJm b3JtYW5jZSAtIHdlbGwsIHdoeSBzaG91bGRuJ3QKPiA+IGl0IGRvIGl0Pwo+ID4gCj4gPiBJIGNv bmN1ciBpdCBpcyBvZGQgLSBidXQgaXQgaGFzIGJlZW4gbGlrZSB0aGF0IGZvciBkZWNhZGVzLgo+ IAo+IEhlaC4gRGVjYWRlcyDigKYgb25lPwoKU3RpbGwgLSBhIGRlY2FkZS4KPiA+IAo+ID4gCj4g Pj4gCj4gPj4+IHRoZSBoeXBlcnZpc29yLCB3aGljaCBhZGp1c3RzIHRoZSBkb21haW4gbWVtb3J5 IGZvb3RwcmludCwgd2hpY2ggY2hhbmdlcyB0aGUgbnVtYmVyIG9mIGZyZWUgcGFnZXMgX3dpdGhv dXRfIHRoZSB0b29sc3RhY2sga25vd2xlZGdlLgo+ID4+PiBUaGUgdG9vbHN0YWNrIGNvbnRyb2xz IGNvbnN0cmFpbnRzIChlc3NlbnRpYWxseSBhIG1pbmltdW0gYW5kIG1heGltdW0pCj4gPj4+IHdo aWNoIHRoZSBoeXBlcnZpc29yIGVuZm9yY2VzLiAgVGhlIHRvb2xzdGFjayBjYW4gZW5zdXJlIHRo YXQgdGhlCj4gPj4+IG1pbmltdW0gYW5kIG1heGltdW0gYXJlIGlkZW50aWNhbCB0byBlc3NlbnRp YWxseSBkaXNhbGxvdyBMaW51eCBmcm9tCj4gPj4+IHVzaW5nIHRoaXMgZnVuY3Rpb25hbGl0eS4g IEluZGVlZCwgdGhpcyBpcyBwcmVjaXNlbHkgd2hhdCBDaXRyaXgncwo+ID4+PiBEeW5hbWljIE1l bW9yeSBDb250cm9sbGVyIChETUMpIGRvZXM6IGVuZm9yY2UgbWluPT1tYXggc28gdGhhdCBETUMg YWx3YXlzIGhhcyBjb21wbGV0ZSBjb250cm9sIGFuZCwgc28sIGtub3dsZWRnZSBvZiBhbnkgZG9t YWluIG1lbW9yeQo+ID4+PiBmb290cHJpbnQgY2hhbmdlcy4gIEJ1dCBETUMgaXMgbm90IHByZXNj cmliZWQgYnkgdGhlIHRvb2xzdGFjaywKPiA+PiAKPiA+PiBOZWl0aGVyIGlzIGVuZm9yY2luZyBt aW49PW1heC4gVGhpcyB3YXMgbXkgYXJndW1lbnQgd2hlbiBwcmV2aW91c2x5IGNvbW1lbnRpbmcg b24gdGhpcyB0aHJlYWQuIFRoZSBmYWN0IHRoYXQgeW91IGhhdmUgZW5mb3JjZW1lbnQgb2YgYSBt YXhpbXVtIGRvbWFpbiBhbGxvY2F0aW9uIGdpdmVzIHlvdSBhbiBleGNlbGxlbnQgdG9vbCB0byBr ZWVwIGEgZG9tYWluJ3MgdW5zdXBlcnZpc2VkIGdyb3d0aCBhdCBiYXkuIFRoZSB0b29sc3RhY2sg Y2FuIGNob29zZSBob3cgZmluZS1ncmFpbmVkLCBob3cgb2Z0ZW4gdG8gYmUgYWxlcnRlZCBhbmQg c3RhbGwgdGhlIGRvbWFpbi4KClRoYXQgd291bGQgYWxzbyBkbyB0aGUgdHJpY2sgLSBidXQgdGhl cmUgYXJlIHBlbmFsdGllcyB0byBpdC4KCklmIG9uZSBqdXN0IHdhbnRzIHRvIGxhdW5jaCBtdWx0 aXBsZSBndWVzdHMgYW5kICJmcmVlemUiIGFsbCB0aGUgb3RoZXIgZ3Vlc3RzCmZyb20gdXNpbmcg dGhlIGJhbGxvb24gZHJpdmVyIC0gdGhhdCBjYW4gY2VydGFpbmx5IGJlIGRvbmUuCgpCdXQgdGhh dCBpcyBhIGhhbGYtd2F5IHNvbHV0aW9uIChpbiBteSBtaW5kKS4gRGFuJ3MgaWRlYSBpcyB0aGF0 IHlvdSB3b3VsZG4ndApldmVuIG5lZWQgdGhhdCBhbmQgY2FuIGp1c3QgYWxsb2NhdGUgd2l0aG91 dCBoYXZpbmcgdG8gd29ycnkgYWJvdXQgdGhlIG90aGVyCmd1ZXN0cyBhdCBhbGwgLSBiL2MgeW91 IGhhdmUgcmVzZXJ2ZWQgZW5vdWdoIG1lbW9yeSBpbiB0aGUgaHlwZXJ2aXNvciAoaG9zdCkgdG8K bGF1bmNoIHRoZSBndWVzdC4KCj4gPiAKPiA+IFRoZXJlIGlzIGEgZG93bi1jYWxsIChzbyBldmVu dHMpIHRvIHRoZSB0b29sLXN0YWNrIGZyb20gdGhlIGh5cGVydmlzb3Igd2hlbgo+ID4gdGhlIGd1 ZXN0IHRyaWVzIHRvIGJhbGxvb24gaW4vb3V0PyBTbyB0aGUgbmVlZCBmb3IgdGhpcyBwcm9ibGVt IGFyb3NlCj4gPiBidXQgdGhlIG1lY2hhbmlzbSB0byBkZWFsIHdpdGggaXQgaGFzIGJlZW4gc2hp ZnRlZCB0byB0aGUgdXNlci1zcGFjZQo+ID4gdGhlbj8gV2hhdCB0byBkbyB3aGVuIHRoZSBndWVz dCBkb2VzIHRoaXMgaW4vb3V0IGJhbGxvb24gYXQgZnJlcQo+ID4gaW50ZXJ2YWxzPwo+ID4gCj4g PiBJIGFtIG1pc3NpbmcgYWN0dWFsbHkgdGhlIHJlYXNvbmluZyBiZWhpbmQgd2FudGluZyB0byBz dGFsbCB0aGUgZG9tYWluPwo+ID4gSXMgdGhhdCB0byBjb21wcmVzcy9zd2FwIHRoZSBwYWdlcyB0 aGF0IHRoZSBndWVzdCByZXF1ZXN0cz8gTWVhbmluZwo+ID4gYW4gdXNlci1zcGFjZSBkYWVtb24g dGhhdCBkb2VzICJ0aGluZ3MiIGFuZCBoYXMgb3duZXJzaGlwCj4gPiBvZiB0aGUgcGFnZXM/Cj4g Cj4gVGhlIChteSkgcmVhc29uaW5nIGlzIHRoYXQgdGhpcyBlbmFibGVzIGNvbnRyb2wgb3ZlciB1 bnN1cGVydmlzZWQgZ3Jvd3RoLiBJIHdhcyBiZWluZyBmYWNldGlvdXMgYSBjb3VwbGUgbGluZXMg YWJvdmUuIFBhZ2luZyBhbmQgc2hhcmluZyBhbHNvIGhhdmUgdGhlIHNhbWUgcHJvYmxlbSB3aXRo IGJhZGx5IGJlaGF2ZWQgZ3Vlc3RzLiBTbyB0aGlzIGlzIHdoZXJlIHlvdSBzdG9wIHRoZXNlIGd1 eXMsIGFsbG93IHRoZSB0b29sc3RhY2sgdG8gY2F0Y2ggYSBicmVhdGgsIGFuZCBmaWd1cmUgb3V0 IHdoYXQgdG8gZG8gd2l0aCB0aGlzIGRvbWFpbiAobW9yZSBSQU0/IHBhZ2Ugb3V0PyBmb28/KS4K CkJ1dCB3aGF0IGlmIHdlIGRvIG5vdCBldmVuIGhhdmUgdG8gaGF2ZSB0aGUgdG9vbHN0YWNrIHRv IGNhdGNoIGEgYnJlYXRoLiBUaGUgZ29hbApoZXJlIGlzIGZvciBpdCBub3QgdG8gYmUgaW52b2x2 ZWQgaW4gdGhpcyBhbmQgbGV0IHRoZSBoeXBlcnZpc29yIGRlYWwgd2l0aAp1bnN1cGVydmlzZWQg Z3Jvd3RoIGFzIGl0IGlzIGJldHRlciBlcXVpcGVkIHRvIGRvIHNvIC0gYW5kIGl0IGlzIHRoZSB1 bHRpbWF0ZQpqdWRnZSB3aGV0aGVyIHRoZSBndWVzdCBjYW4gZ3JvdyB3aWxkbHkgb3Igbm90LgoK SSBtZWFuIHdoeSBtYWtlIHRoZSB0b29sc3RhY2sgYmVjb21lIENQVSBib3VuZCB3aGVuIHlvdSBj YW4ganVzdCBzZXQKdGhlIGh5cGVydmlzb3IgdG8gdGFrZSB0aGlzIGV4dHJhIGluZm9ybWF0aW9u IGluIGFuIGFjY291bnQgYW5kIHlvdSBhdm9pZAp0aGUgQ1BVLWJvdW5kIHByb2JsZW0gYWx0b2dl dGhlci4KCj4gCj4gQWxsIHlvdXIgcXVlc3Rpb25zIGFyZSB2ZXJ5IHZhbGlkLCBidXQgdGhleSBh cmUgcG9saWN5IGluIHRvb2xzdGFjay1sYW5kLiBMdWNraWx5IHRoZSBoeXBlcnZpc29yIG5lZWRz IG5vIGtub3dsZWRnZSBvZiB0aGF0LgoKTXkgdGhpbmtpbmcgaXMgdGhhdCBzb21lIHBvbGljeSAo c2F5IGhvdyBtdWNoIHRoZSBndWVzdHMgY2FuIGdyb3cpIGlzIHNvbWV0aGluZwp0aGF0IHRoZSBo b3N0IHNldHMuIEFuZCB0aGUgaHlwZXJ2aXNvciBpcyB0aGUgZW5naW5lIHRoYXQgdGFrZXMgdGhl c2UgdmFsdWVzCmluIGFjY291bnQgYW5kIHJ1bnMgd2l0aCBpdC4KCkkgdGhpbmsgeW91IGFyZSBh ZHZvY2F0aW5nIHRoYXQgdGhlICJlbmdpbmUiIGFuZCBwb2xpY3kgc2hvdWxkIGJlIGJvdGgKaW4g dGhlIHVzZXItbGFuZC4KCi4uIHNuaXAuLgo+ID4+IEdyZWF0IGNhcmUgaGFzIGJlZW4gdGFrZW4g Zm9yIHRoaXMgc3RhdGVtZW50IHRvIG5vdCBiZSBleGFjdGx5IHRydWUuIFRoZSBoeXBlcnZpc29y IGRpc2NhcmRzIG9uZSBvZiB0d28gcGFnZXMgdGhhdCB0aGUgdG9vbHN0YWNrIHRlbGxzIGl0IHRv IChhbmQgcGF0Y2hlcyB0aGUgcGh5c21hcCBvZiB0aGUgVk0gcHJldmlvdXNseSBwb2ludGluZyB0 byB0aGUgZGlzY2FyZCBwYWdlKS4gSXQgZG9lc24ndCBtZXJnZSwgbm9yIGRvZXMgaXQgbG9vayBp bnRvIGNvbnRlbnRzLiBUaGUgaHlwZXJ2aXNvciBkb2Vzbid0IGNhcmUgYWJvdXQgdGhlIHBhZ2Ug Y29udGVudHMuIFRoaXMgaXMgZGVsaWJlcmF0ZSwgc28gYXMgdG8gYXZvaWQgc3B1cmlvdXMgY2xh aW1zIG9mICJ5b3UgYXJlIHVzaW5nIHRlY2huaXF1ZSBYISIKPiA+PiAKPiA+IAo+ID4gSXMgdGhl IHRvb2xzdGFjayAob3IgYSBkYWVtb24gaW4gdXNlcnNwYWNlKSBkb2luZyB0aGlzPyBJIHdvdWxk Cj4gPiBoYXZlIHRob3VnaHQgdGhhdCB0aGVyZSB3b3VsZCBiZSBzb21lIG9wdGltaXphdGlvbiB0 byBkbyB0aGlzCj4gPiBzb21ld2hlcmU/Cj4gCj4gWW91IGNvdWxkIG9wdGltaXplIGJ1dCB0aGVu IHlvdSBhcmUgYmFraW5nIHBvbGljeSB3aGVyZSBpdCBkb2VzIG5vdCBiZWxvbmcuIFRoaXMgaXMg d2hhdCBLU00gZGlkLCB3aGljaCBJIGRpc2xpa2UuIFNlcmlvdXNseSwgZG9lcyB0aGUga2VybmVs IG5lZWQgdG8gc2NhbiBtZW1vcnkgdG8gZmluZCBkdXBsaWNhdGVzPyBDYW4ndCBzb21ldGhpbmcg ZWxzZSBkbyBpdCBnaXZlbiBzdWl0YWJsZSBpbnRlcmZhY2VzPyBOb3cgYW55IG90aGVyIGZvcm0g b2Ygc2hhcmluZyBwb2xpY3kgdGhhdCB0cmllcyB0byB1c2UgVk1BX01FUkdFQUJMRSBpcyBTT0wu IFRpbSwgR3JlZ29yIGFuZCBJLCBhdCBkaWZmZXJlbnQgcG9pbnRzIGluIHRpbWUsIHRyaWVkIHRv IGF2b2lkIHRoaXMuIEkgZG9uJ3Qga25vdyB0aGF0IGl0IHdhcyBhIGNvbnNjaW91cyBvciBkZWxp YmVyYXRlIGVmZm9ydCwgYnV0IGl0IHdvcmtlZCBvdXQgdGhhdCB3YXkuCgpPSywgSSB0aGluayBJ IHVuZGVyc3RhbmQgeW91IC0geW91IGFyZSBhZHZvY2F0aW5nIGZvciB1c2VyLXNwYWNlCmJlY2F1 c2UgdGhlIGNvbWJpbmF0aW9uIG9mIHBvbGljeS9lbmdpbmUgY2FuIGJlIGRvbmUgdGhlcmUuCgpE YW4ncyBhbmQgbWluZSB0aGlua2luZyBpcyB0byBwaWdneWJhY2sgb24gdGhlIGh5cGVydmlzb3Jz JyBNTSBlbmdpbmUKYW5kIGp1c3QgcHJvdmlkZSBhIG1lYW5zIG9mIHR3ZWFraW5nIG9uZSB2YWx1 ZS4gSW4gc29tZSB3YXlzIHRoYXQKaXMgc2ltaWFsYXIgdG8gbWFraW5nIHN5c2N0bHMgaW4gdGhl IGtlcm5lbCB0byB0ZWxsIHRoZSBNTSBob3cgdG8KYmVoYXZlLgoKLi4gc25pcC4uCj4gPiBUaGF0 IGNvZGUgbWFrZXMgY2VydGFpbiBhc3N1bXB0aW9ucyAtIHRoYXQgdGhlIGd1ZXN0IHdpbGwgbm90 IGdvL3VwIGRvd24KPiA+IGluIHRoZSBiYWxsb29uaW5nIG9uY2UgdGhlIHRvb2xzdGFjayBoYXMg ZGVjcmVlZCBob3cgbXVjaAo+ID4gbWVtb3J5IHRoZSBndWVzdCBzaG91bGQgdXNlLiBJdCBhbHNv IGFzc3VtZXMgdGhhdCB0aGUgb3BlcmF0aW9ucwo+ID4gYXJlIHNlbWktYXRvbWljIC0gYW5kIHRv IG1ha2UgaXQgc28gYXMgbXVjaCBhcyBpdCBjYW4gLSBpdCBleGVjdXRlcwo+ID4gdGhlc2Ugb3Bl cmF0aW9ucyBpbiBzZXJpYWwuCj4gPiAKPiA+IFRoaXMgZ29lcyBiYWNrIHRvIHRoZSBwcm9ibGVt IHN0YXRlbWVudCAtIGlmIHdlIHRyeSB0byBwYXJhbGxpemUKPiA+IHRoaXMgd2UgcnVuIGluIHRo ZSBwcm9ibGVtIHRoYXQgdGhlIGFtb3VudCBvZiBtZW1vcnkgd2UgdGhvdWdodAo+ID4gd2UgZnJl ZSBpcyBub3QgdHJ1ZSBhbnltb3JlLiBUaGUgc3RhcnQgb2YgdGhpcyBlbWFpbCBoYXMgYSBnb29k Cj4gPiBkZXNjcmlwdGlvbiBvZiBzb21lIG9mIHRoZSBpc3N1ZXMuCj4gCj4gSnVzdCBzZXQgbWF4 X3BhZ2VzIChiYWQgbmFtZS4uLikgZXZlcnl3aGVyZSBhcyBuZWVkZWQgdG8gbWFrZSByb29tLiBU aGVuIGtpY2sgdG1lbSAoZXZlcnl3aGVyZSwgaW4gcGFyYWxsZWwpIHRvIGZyZWUgbWVtb3J5LiBX YWl0IHVudGlsIGVub3VnaCBpcyBmcmVlIOKApi4gQWxsb2NhdGUgeW91ciBkb21haW4ocywgaW4g cGFyYWxsZWwpLiBJZiBhbnkgdmNwdXMgYmVjb21lIHN0YWxsZWQgYmVjYXVzZSBhIHRtZW0gZ3Vl c3QgZHJpdmVyIGlzIHRyeWluZyB0byBhbGxvY2F0ZSBiZXlvbmQgbWF4X3BhZ2VzLCB5b3UgbmVl ZCB0byBhZGp1c3QgeW91ciBhbGxvY2F0aW9ucy4gQXMgdXN1YWwuCgoKVmVyc3VzIGp1c3Qgb25l ICJyZXNlcnZlIiB0aGF0IHdvdWxkIHJlbW92ZSB0aGUgbmVlZCBmb3IgbW9zdCBvZiB0aGlzLgpU aGF0IGlzIC0gaWYgd2UgY2FuIG5vdCAicmVzZXJ2ZSIgd2Ugd291bGQgZmFsbC1iYWNrIHRvIHRo ZSBtZWNoYW5pc20geW91CnN0YXRlZCwgYnV0IGlmIHRoZXJlIGlzIGVub3VnaCBtZW1vcnkgd2Ug ZG8gbm90IGhhdmUgdG8gZG8gdGhlICJ3YWl0IgpnYW1lICh3aGljaCBvbiBhIDFUQiB0YWtlcyBm b3JldmVyIGFuZCBtYWtlcyBsYXVuY2hpbmcgZ3Vlc3RzIHNvbWV0aW1lcwp0YWtlIG1pbnV0ZXMp IC0gYW5kIGNhbiBsYXVuY2ggdGhlIGd1ZXN0IHdpdGhvdXQgaGF2aW5nIHRvIHdvcnJ5CmFib3V0 IHNsb3ctcGF0aC4KLi4gc25pcC4KCj4gPj4gCj4gPiAKPiA+IEkgYmVsaWV2ZSBEYW4gaXMgc2F5 aW5nIGlzIHRoYXQgaXQgaXMgbm90IGVuYWJsZWQgYnkgZGVmYXVsdC4KPiA+IE1lYW5pbmcgaXQg ZG9lcyBub3QgZ2V0IGV4ZWN1dGVkIGluIGJ5IC9ldGMvaW5pdC5kL3hlbmNvbW1vbnMgYW5kCj4g PiBhcyBzdWNoIGl0IG5ldmVyIGdldHMgcnVuIChvciBkb2VzIGl0IG5vdz8pIC0gdW5sZXNzIG9u ZSBrbm93cwo+ID4gYWJvdXQgaXQgLSBvciBpdCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgaW4gYSBw cm9kdWN0LiBCdXQgcGVyaGFwcwo+ID4gd2UgYXJlIGJvdGggbWlzdGFrZW4/IElzIGl0IGVuYWJs ZWQgYnkgZGVmYXVsdCBub3cgb24gZGVuLXVuc3RhYmxlPwo+IAo+IEknbSBhIGJpdCBsb3N0IOKA piB3aGF0IGlzIHN1cHBvc2VkIHRvIGJlIGVuYWJsZWQ/IEEgc2hhcmluZyBkYWVtb24/IEEgcGFn aW5nIGRhZW1vbj8gTmVpdGhlciBkYWVtb24gcmVxdWlyZXMgd2FpdCBxdWV1ZSB3b3JrLCBiYXRj aCBhbGxvY2F0aW9ucywgZXRjLiBJIGNhbid0IGZpZ3VyZSBvdXQgd2hhdCB0aGlzIHBvcnRpb24g b2YgdGhlIGNvbnZlcnNhdGlvbiBpcyBhYm91dC4KClRoZSB4ZW5zaGFyZWQgZGFlbW9uLgo+IAo+ IEhhdmluZyBzYWlkIHRoYXQsIHRoYW5rcyBmb3IgdGhlIHRob3VnaHRmdWwgZm9sbG93LXVwCgpU aGFuayB5b3UgZm9yIHlvdXIgcmVzcG9uc2UhCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0 cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=