From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [RFC 0/4] TEE mediator framework + OP-TEE mediator Date: Thu, 2 Nov 2017 13:17:26 +0000 Message-ID: References: <1507748484-16871-1-git-send-email-volodymyr_babchuk@epam.com> <078a8941-5a6b-f7bb-b5c8-f2cf84210cf2@linaro.org> <20171017155901.GA24929@EPUAKYIW2556.kyiv.epam.com> <942b70a8-dffa-e3ec-19d4-40ff9a328cf6@arm.com> <20171020173705.GC11787@EPUAKYIW2556.kyiv.epam.com> <20171023201141.GA20412@EPUAKYIW2556.kyiv.epam.com> <20171024190228.GB23118@EPUAKYIW2556.kyiv.epam.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171024190228.GB23118@EPUAKYIW2556.kyiv.epam.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: Volodymyr Babchuk , jens.wiklander@linaro.org Cc: Julien Grall , nd@arm.com, Stefano Stabellini , xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org SGkgVm9sb2R5bXlyLAoKT24gMjQvMTAvMTcgMjA6MDIsIFZvbG9keW15ciBCYWJjaHVrIHdyb3Rl Ogo+Pj4+Pj4gSWYgaXQgaXMgbm90IHNhZmUsIHRoaXMgbWVhbnMgeW91IGhhdmUgYSB3aGl0ZWxp c3Qgc29sdXRpb24gYW5kIHRoZXJlZm9yZQo+Pj4+Pj4gdGllIFhlbiB0byBhIHNwZWNpZmljIE9Q LVRFRSB2ZXJzaW9uLiBTbyBpZiB5b3UgbmVlZCB0byB1c2UgYSBuZXcgZnVuY3Rpb24KPj4+Pj4+ IHlvdSB3b3VsZCBuZWVkIHRvIHVwZ3JhZGUgWGVuIG1ha2luZyB0aGUgY29kZSBvZiB1c2luZyBu ZXcgdmVyc2lvbgo+Pj4+Pj4gcG90ZW50aWFsbHkgaGlnaC4KPj4+Pj4gWWVzLCBhbnkgQUJJIGNo YW5nZSBiZXR3ZWVuIE9QLVRFRSBhbmQgaXRzIGNsaWVudHMgd2lsbCByZXF1aXJlIG1lZGlhdG9y Cj4+Pj4+IHVwZ3JhZGUuIEx1Y2tpbGx5LCBPUC1URUUgbWFpbnRhaW5zIEFCSSBiYWNrd2FyZC1j b21wYXRpYmxlLCBzbyBpZiB5b3UnbGwKPj4+Pj4gaW5zdGFsbCBvbGQgWEVOIGFuZCBuZXcgT1At VEVFLCBPUC1URUUgd2lsbCB1c2Ugb25seSB0aGF0IHN1YnNldCBvZiBBQkksCj4+Pj4+IHdoaWNo IGlzIGtub3duIHRvIFhFTi4KPj4+Pj4KPj4+Pj4+IEFsc28sIGNvcnJlY3QgbWUgaWYgSSBhbSB3 cm9uZywgT1AtVEVFIGlzIGEgQlNEIDItQ2xhdXNlLiBUaGlzIG1lYW5zIHlvdQo+Pj4+Pj4gaW1w b3NlIGFueW9uZSB3YW50ZWQgdG8gbW9kaWZ5IE9QLVRFRSBmb3IgdGhlaXIgb3duIHB1cnBvc2Ug Y2FuIG1ha2UgYQo+Pj4+Pj4gY2xvc2VkIHZlcnNpb24gb2YgdGhlIFRFRS4gQnV0IGlmIHlvdSBu ZWVkIHRvIGludHJvc3BlY3Qvd2hpdGVsaXN0IGNhbGwsIHlvdQo+Pj4+Pj4gaW1wb3NlIHRoZSB2 ZW5kb3IgdG8gZXhwb3NlIHRoZWlyIEFQSS4KPj4+Pj4gQmFzaWNhbGx5IHllcy4gSXMgdGhpcyBi YWQ/IE9QLVRFRSBkcml2ZXIgaW4gTGludXggaXMgbGljZW5zZWQgdW5kZXIgR1BMIHYyLgo+Pj4+ PiBJZiB2ZW5kb3IgbW9kaWZpZXMgaW50ZXJmYWNlIGJldHdlZW4gT1AtVEVFIGFuZCBMaW51eCwg dGhleSBhbnl3YXlzIG9ibGlndWVkCj4+Pj4+IHRvIGV4cG9zZSBBUEkuCj4+Pj4KPj4+PiBQYXJk b24gbWUgZm9yIHBvdGVudGlhbCBzdHVwaWQgcXVlc3Rpb25zLCBteSBrbm93bGVkZ2Ugb2YgT1At VEVFIGlzIGxpbWl0ZWQuCj4+Pj4KPj4+PiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoZSBPUC1URUUg d2lsbCBwcm92aWRlIGEgZ2VuZXJpYyB3YXkgdG8gYWNjZXNzCj4+Pj4gZGlmZmVyZW50IFRydXN0 ZWQgQXBwbGljYXRpb24uIFdoaWxlIE9QLVRFRSBBUEkgbWF5IGJlIGdlbmVyaWMsIHRoZSBUQSBB UEkKPj4+PiBpcyBjdXN0b20uIEFGQUlDVCB0aGUgbGF0dGVyIGlzIG5vdCBwYXJ0IG9mIExpbnV4 IGRyaXZlci4KPj4+IFllcywgeW91IGFyZSBwZXJmZWN0bHkgcmlnaHQgdGhlcmUuCj4+Pgo+Pj4+ IFNvIGhlcmUgbXkgcXVlc3Rpb25zOgo+Pj4+IAkxKSBBcmUgeW91IHBsYW5uaW5nIGFsbG93IGFs bCB0aGUgZ3Vlc3RzIHRvIGFjY2VzcyBldmVyeSBUcnVzdGVkCj4+Pj4gQXBwbGljYXRpb25zPwo+ Pj4gVGhpcyBpcyBhIGdvb2QgcXVlc3Rpb24uIFRoZXJlIGFyZSB0d28gdHlwZXMgb2YgVEFzIHN1 cHBvcnRlZCBpbgo+Pj4gT1AtVEVFOiByZWFsIFRBcyAoYXMgdGhleSBhcmUgZGVzY3JpYmVkIGlu IEdsb2JhbFBsYXRmb3JtIHNwZWNzKSBhbmQKPj4+IFBzZXVkb1RBcy4gIFRoZSBsYXR0ZXIgb25l cyBhcmUgc3RhdGljYWxseSBsaW5rZWQgcmlnaHQgaW50byBPUC1URUUKPj4+IGtlcm5lbCBhbmQg ZXhlY3V0ZSBhdCBTLUVMMSBsZXZlbC4KPj4+IFJlYWwgVEFzIGFyZSBwcm92aWRlZCBieSBjbGll bnQuIFRoYXQgbWVhbnMgdGhhdCBOVyB1c2Vyc3BhY2UKPj4+IHN1cHBsaWNhbnQgbG9hZHMgVEEg aW50byBPUC1URUUuIE9QLVRFRSBjaGVja3Mgc2lnbmF0dXJlIGZvciB0aGUgVEEKPj4+IGFuZCB0 aGVuIHJ1bnMgaXQgaW4gUy1FTDAuCj4+PiBTbywgSSdtIHBsYW5uaW5nIHRvIGFsbG93IGNsaWVu dCB0byB3b3JrIHdpdGggYW55IHJlYWwgVEEuIEkgY2FuJ3Qgc2VlCj4+PiByZWFsIHByb2JsZW0g dGhlcmUuCj4+Cj4+IEFyZSB0aGUgcmVhbCBUQXMgZ29pbmcgdG8gYmUgc2hhcmVkIGJldHdlZW4g Z3Vlc3RzPyBPciB3aWxsIGVhY2ggZ3Vlc3QgaGF2ZQo+PiB0aGVpciBvd24gb25lPwo+IE5vLCB3 ZSBkb24ndCBwbGFuIHRoaXMuIEF0IGxlYXN0IGF0IHRoaXMgbW9tb2VudC4gRXZlcnkgZ3Vlc3Qg d2lsbCBoYXZlCj4gb3duIGluc3RhbmNlIG9mIFRBLgo+IAo+PiBXaWxsIHlvdSBhbGxvdyBldmVy eSBndWVzdHMgbG9hZGluZyByZWFsIFRBcz8KPiBZZXMsIGlmIGd1ZXN0IGhhcyBhY2Nlc3MgdG8g VEVFLCBpdCBjYW4gbG9hZCBUQS4gRWl0aGVyIHRoZXJlIGlzIG5vCj4gc2Vuc2UgdG8gdXNlIFRF RS4gT1AtVEVFIGNvcmUgaXRzZWxmIGRvZXMgbm90IHByb3ZpZGUgdXNlZnVsIHNlcnZpY2VzCj4g dG8gY2xpZW50cy4KCkluIGEgcHJldmlvdXMgZS1tYWlsIHlvdSBtZW50aW9uZWQgT1AtVEVFIGhh cyBsaW1pdGVkIG1lbW9yeS4gSG93IHdpbGwgCnlvdSBlbnN1cmUgdGhhdCBndWVzdCBBIHdpbGwg bm90IHVzZSBhbGwgdGhlIG1lbW9yeSBvZiBPUC1URUUgYW5kIApwcmV2ZW50IGd1ZXN0IEIgdG8g bG9hZCBUQXM/CgpbLi4uXQoKPj4gTm90IHJlYWxseSwgeW91IGNvdWxkIHRoZSBkb21haW4gY291 bGQgYmxvY2sgd2hlbiBpc3N1aW5nIGFuIFNNQyB1bnRpbCB0aGUKPj4gbWVkaWF0b3IgaXMgdXAg YW5kIHJ1bm5pbmcuCj4gRG8geW91IG1lYW4sIHRoYXQgaWYgZG9tYWluIHRyaWVzIHRvIGV4ZWN1 dGUgU01DLCBhbmQgbWVkaWF0b3IgaXMgbm90Cj4gcmVhZHksIHRoZW4gaHlwZXJ2aXNvciBzaG91 bGQgcGF1c2UgYWxsIGRvbWFpbidzIHZDUFVzPyBUaGF0IGNhbiBiZQo+IGRlc3RydWN0aXZlIGZv ciBodyBkb21haW4uCgpYZW4gaXMgZnJlZSB0byB1bnNjaGVkdWxlIGFueSB2Q1BVIGF0IGFueSB0 aW1lLiBTbyB3aHkgd291bGQgaXQgYmUgCmRlc3RydWN0aXZlPwoKWy4uLl0KCj4+Pj4+Pj4gQW5k IHllcywgaXQgc2VlbXMgb2J2aW91cywgYnV0IEkgd2FudCB0byBzYXkgdGhpcyBleHBsaWNpdGx5 OiBnZW5lcmljCj4+Pj4+Pj4gVEVFIG1lZGlhdG9yIGZyYW1ld29yayBzaG91bGQgYW5kIHdpbGwg dXNlIFhTTSB0byBjb250cm9sIHdoaWNoIGRvbWFpbgo+Pj4+Pj4+IGNhbiB3b3JrIHdpdGggVEVF LiBTbywgaWYgeW91IGRvbid0IHRydXN0IHlvdXIgZ3Vlc3QgLSBkb24ndCBsZXQgaXQKPj4+Pj4+ PiB0byBjYWxsIFRFRSBhdCBhbGwuCj4+Pj4+Pgo+Pj4+Pj4gQ29ycmVjdCBtZSBpZiBJIGFtIHdy b25nLiBURUUgY291bGQgYmUgdXNlZCBieSBBbmRyb2lkIGd1ZXN0IHdoaWNoIGxpa2VseQo+Pj4+ Pj4gcnVuIHRoZSB1c2VyIGFwcHMuLi4gcmlnaHQ/IFNvIGFyZSB5b3Ugc2F5aW5nIHlvdSBmdWxs eSB0cnVzdCB0aGF0IGd1ZXN0IGFuZAo+Pj4+Pj4gb2J2aW91c2x5IHRoZSB1c2VyIGluc3RhbGxp bmcgcm9ndWUgYXBwPwo+Pj4+PiBJIGRvbid0IHRoaW5rIHRoYXQgYXBwIGRvd25sb2FkZWQgZnJv bSBQbGF5IE1hcmdldCBjYW4gYWNjZXNzIE9QLVRFRSBkaXJlY3RseS4KPj4+Pj4gT1AtVEVFIGNh biBiZSB1c2VkIGJ5IEFuZHJvaWQgaXRzZWxmIGFzIGEga2V5IHN0b3JhZ2Ugb3IgdG8gYWNjZXNz IHRvIGEgU0UsCj4+Pj4+IGZvciBleGFtcGxlLiBCdXQgM3JkIGFwcCB0aGF0IGlzc3VlcyBURUUg Y2FsbHMuLi4gSSBkb24ndCB0aGluayBzby4KPj4+Pgo+Pj4+IFlvdSBkaWRuJ3QgZ2V0IG15IHBv aW50IGhlcmUuIFRoYXQgcm9ndWUgYXBwIG1heSBiZSBhYmxlIHRvIGJyZWFrIGludG8KPj4+PiBr ZXJuZWwgdmlhIGFuIGV4cGxvaXQgb3IgaGF2ZSBlbm91Z2ggcHJpdmlsZWdlIHRvIGJyZWFrIHRo ZSBndWVzdC4gV2hvIGtub3dzCj4+Pj4gd2hhdCBpdCB3aWxsIGJlIGFibGUgdG8gZG8gYWZ0ZXIu Li4KPj4+IE9ubHkgd2hhdCBoeXBlcnZpc29yIGFuZCBURUUgd2lsbCBhbGxvdyBpdCB0byBkby4g TG9vaywgT1AtVEVFIHdhcyBub3QgZGVzaWduZWQKPj4+IHRvIHJ1bGUgdGhlIG1hY2hpbmUuIFRo ZXJlIGlzIEFSTSBURiBmb3IgdGhhdCA6KSBPUC1URUUncyB0YXNrIGlzIHRvIHByb3ZpZGUKPj4+ IHNvbWUgc2FmZXIgZW52aXJvbm1lbnQgZm9yIHNlbnNpdGl2ZSBkYXRhIGFuZCBjb2RlLiBUaGlz IGVudmlyb25tZW50IGhhcwo+Pj4gd2VsbC1kZWZpbmVkIGludGVyZmFjZXMgYW5kIGlzIGRlc2dp bmVkIHRvIGJlIGFzIHNhZmUgYXMgcG9zc2libGUuCj4+Pgo+Pj4gSWYgcm9ndWUgYXBwIGJyZWFr cyBpbnRvIGtlcm5lbCwgdGhlbiBpdCBjYW4gaXNzdWUgYW55IFNNQyB3aGljaCBpdCB3YW50cy4K Pj4+IEJ1dCBPUC1URUUgZG9lcyBub3QgdHJ1c3QgdG8gTlcuIEh5cGVydmlzb3IgZG9lcyBub3Qg dHJ1c3QgdG8gZ3Vlc3RzLgo+Pj4gTWVkaWF0b3Igc2hvdWxkIGJlIHdyaXR0ZW4gaW4gdGhlIHNh bWUgd2F5Lgo+Pj4KPj4+IFNvLCB3aGF0IGNhbiBkbyByb2d1ZSBrZXJuZWw/IEFzIEkga25vdyAt IGl0IGNhbiBjYXVzZSBEb1MgaW4gT1AtVEVFLiBUaGlzIGlzCj4+PiBrbm93biBpc3N1ZS4gSWYg dGhlcmUgaXMgYSBzZWN1cml0eSBidWcgaW4gT1AtVEVFLCBpdCBwcm9iYWJseSBjYW4gb3ZlcmNv bWUKPj4+IHdob2xlIHN5c3RlbS4gQnV0IHRoaXMgaXMgdHJ1ZSBmb3IgYW55IHN5c3RlbSBydW5u aW5nIE9QLVRFRS4KPj4KPj4gSSBhZ3JlZSB0aGF0IGlmIHlvdSB0YWtlIG92ZXIgT1AtVEVFLCB5 b3Ugd2lsbCB0YWtlIG92ZXIgYW55IHN5c3RlbS4gVGhpcyBpcwo+PiBub3Qgc3BlY2lmaWMgdG8g aHlwZXJ2aXNvci4KPiBZZXMuIEJ1dCBpdCBqdXN0IG9jY3VyZWQgdG8gbWUgdGhhdCBtZWRpYXRv citPUC1URUUgKmNhbiogYmUgbW9yZQo+IHNlY3VyZSB0aGVuIGp1c3QgT1AtVEVFLiBZb3Ugc2Vl LCBtZWRpYXRvciBzaG91bGQgcGVyZm9ybSBvd24gc2VjdXJpdHkKPiBjaGVja3MgYmVmb3JlIGZv cndhcmRpbmcgY2FsbCB0byBPUC1URUUuIFNvIGlmIE9QLVRFRSBtaXNzZXMKPiBzb21ldGhpbmcs IG1lZGlhdG9yIGNhbiBiYWNrIGl0IHVwLiBJIHdvdWxkbid0IHJlbHkgb24gdGhpcy4gSXQganVz dAo+IGludGVyZXN0aW5nIHRob3VnaHQgOi0pCj4gCj4+IEJhcmVtZXRhbCBPUyB0YWtpbmcgZG93 biB0aGUgcGxhdGZvcm0gd2lsbCBvbmx5IGhhcm0gaXRzZWxmLiBBIGd1ZXN0IE9TCj4+IGNvdWxk IGhhcm0gdGhlIHdob2xlIHBsYXRmb3JtLgo+IENhbid0IGFyZ3VtZW50IHdpdGggdGhhdC4gSSB0 aGluayB0aGF0IHRoaXMgZmVhdHVyZSAoc2hhcmVkIFRFRSkgaXMKPiBub3Qgc3VpdGFibGUgZm9y LCBzYXksIFZQU2VzLiBCdXQgaXQgY2FuIHdvcmsganVzdCBmaW5lIG9uIHNtYXJ0cGhvbmVzCj4g b3Igb24gYW5vdGhlciBlbWJlZGRlZCBkZXZpY2VzLCB3aGVyZSB2ZW5kb3IgZGVmaW5lcyB3aG9s ZSBzeXN0ZW0uCgpJIGd1ZXNzIHlvdXIgdXNlIGNhc2UgaXMgInZlbmRvciBkZWZpbmVzIHdob2xl IHN5c3RlbSIuIEJ1dCBJIGFtIApzdHJ1Z2dsaW5nIHVuZGVyc3RhbmQgaG93IHRoaXMgd291bGQg bW9yZSBzdWl0YWJsZSB0aGVyZS4KClRoYXQgZ3Vlc3QgT1MgbWF5IGJlICJjb250cm9sbGVkIiBi eSB0aGUgdXNlci4gU28gaG93IGlzIHRoYXQgc2FmZXI/Cgo+IAo+PiBXaGF0IEkgYW0gbm90IHN1 cmUgeWV0LCBtYXliZSBiZWNhdXNlIG9mIG15IGxhY2sgb2Yga25vd2xlZGdlIGFyb3VuZCBPUC1U RUUsCj4+IHdobyBpcyBnb2luZyB0byBwcm90ZWN0IGEgVEEgdG8gYWNjZXNzIGFsbCB0aGUgTlMg bWVtb3J5Pwo+IFRBcyBpcyBydW5pbmcgaW4gUy1FTDAuIEl0IGNhbid0IGNvbnRyb2wgTU1VLiBC ZWZvcmUgZXZlcnkgVEEKPiBpbnZvY2F0aW9uLCBPUC1URUUgc2V0dXBzIE1NVSBpbiBzdWNoIHdh eSwgc28gVEEgc2VlcyBvbmx5IHNoYXJlZAo+IG1lbW9yeSBhcmd1bWVudHMgcGFzc2VkIGJ5IGNs aWVudCBmb3IgdGhpcyBwYXJ0aWN1bGFyIGludm9jYXRpb24uCgpDYW4geW91IGdpdmUgYSBiaXQg bW9yZSBkZXRhaWxzIGhlcmU/IFBhcnRpY3VsYXJseSB3aGF0IGlzIHRoZSBsaWZlIG9mIAp0aGF0 IG1hcHBlZCByZWdpb24/IElzIGl0IGp1c3QgZm9yIGEgY29tbWFuZD8gSWYgbm90LCB3aG8gaXMg Z29pbmcgdG8gCnVubWFwIGl0IGFuZCB3aGVuPwoKPiAKPj4+Cj4+PiBJZiB0aGVyZSBpcyBhIHNl Y3VyaXR5IGZsYXcgaW4gbWVkaWF0b3IgLSBpdCBjYW4gY29tcHJvbWlzZSBlaXRoZXIgaHlwZXJ2 aXNvciwKPj4+IG9yIERvbU1lZGlhdG9yIGFuZCBhbGwgVEVFLWNhcGFibGUgZ3Vlc3RzLiBZZXMs IHRoaXMgaXMgYSByaXNrLgo+Pj4KPj4+PiBUaGUgd2hvbGUgcG9pbnQgb2YgdXNpbmcgYW4gaHlw ZXJ2aXNvciBpcyB0byBpc29sYXRlIGd1ZXN0IGZyb20gZWFjaCBvdGhlci4KPj4+PiBTbyB3aGF0 IGlzIHRoZSBpc29sYXRpb24gbW9kZWwgd2l0aCBPUC1URUUgYW5kIHRoZSBtZWRpYXRvcj8KPj4+ IE9QLVRFRSBpcyB3cml0dGVuIHRvIGlzb2xhdGUgVEFzLCByZXNvdXJjZXMgYW5kIGNsaWVudHMg ZnJvbSBlYWNoIG90aGVyLgo+Pj4gQ3VycmVudGx5IHRoZXJlIGFyZSBubyBwbGFucyBmb3IgaW50 ZXJhY3Rpb24gYmV0d2VlbiBUQXMgZnJvbSBkaWZmZXJlbnQgVk1zLAo+Pj4gbm8gcmVzb3VyY2Ug c2hhcmluZywgbm90aGluZyBsaWtlIHRoaXMuCj4+PiBXaGF0IGRvIHlvdSBtZWFuIHVuZGVyICJp c29sYXRpb24gbW9kZWwiPyBDYW4geW91IGdpdmUgc29tZSBleGFtcGxlPwo+Pgo+PiBCeSB0aGF0 IEkgbWVhbnQsIHdobyBpcyBnb2luZyB0byBwcmV2ZW50IGd1ZXN0IEEgdG8gYWNjZXNzIGd1ZXN0 IEIgZGF0YS4gSQo+PiB0aGluayB5b3UgcGFydGx5IGFuc3dlcmVkIHRvIG15IHF1ZXN0aW9uIGJ5 IHRoZSAiT1AtVEVFIGlzIHdyaXR0ZW4gdG8KPj4gaXNvbGF0ZSBUQXMiLiBUaGUgYWNjZXNzIHRv IE5TIG1lbW9yeSBxdWVzdGlvbiBhYm92ZSB3aWxsIGZpbGwgdGhlIHJlc3QgSQo+PiB0aGluay4K PiBZZXMuIEV2ZXJ5IFRBIGlzIHJ1bm5pbmcgaW4gb3duIGNvbnRleHQsIGFuZCB0aGVyZSBhcmUg bm8gdHJ1c3QgZXZlbgo+IGJldHdlZW4gVEFzLgoKR2xhZCB0byBoZWFyIHRoYXQuCgpbLi4uXQoK Pj4+Pj4+Pj4gVG8gYmUgY2xlYXIsIHRoaXMgc2VyaWVzIGRvbid0IGxvb2sgY29udHJvdmVyc2lh bCBhdCBsZWFzdCBmb3IgT1AtVEVFLiBXaGF0Cj4+Pj4+Pj4+IEkgYW0gbW9yZSBjb25jZXJuZWQg aXMgYWJvdXQgRG9tVSBzdXBwb3J0cy4KPj4+Pj4+PiBZb3VyIGNvbmNlcm4gaXMgdGhhdCByb2d1 ZSBEb21VIGNhbiBjb21wcm9taXNlIHdob2xlIHN5c3RlbSwgcmlnaHQ/Cj4+Pj4+Pgo+Pj4+Pj4g WWVzLiBZb3Ugc2VlbSB0byBhc3N1bWUgdGhhdCBEb21VIHVzaW5nIFRFRSB3aWxsIGFsd2F5cyBi ZSB0cnVzdGVkLCBJIHRoaW5rCj4+Pj4+PiB0aGlzIGlzIHRoZSB3cm9uZyBhcHByb2FjaCBpZiB0 aGUgdXNlIGlzIGFibGUgdG8gaW50ZXJhY3QgZGlyZWN0bHkgd2l0aAo+Pj4+Pj4gdGhvc2UgZ3Vl c3RzLiBTZWUgYWJvdmUuCj4+Pj4+IE5vLCBJIGFtIG5vdCBhc3N1bWluZyB0aGF0IERvbVUgdGhh dCBjYWxscyBURUUgc2hvdWxkIGJlIHRydXN0ZWQuIFdoeSBkbyB5b3UKPj4+Pj4gdGhpbmsgc28/ IEl0IHNob3VsZCBiZSBhYmxlIHRvIHVzZSBURUUgc2VydmljZXMsIGJ1dCB0aGlzIGRvZXMgbm90 IG1lYW4gdGhhdAo+Pj4+PiBYRU4gc2hvdWxkIHRydXN0IGl0Lgo+Pj4+Cj4+Pj4gSW4gYSBwcmV2 aW91cyBhbnN3ZXIgeW91IHNhaWQ6ICJTbywgaWYgeW91IGRvbid0IHRydXN0IHlvdXIgZ3Vlc3Qg LSBkb24ndAo+Pj4+IGxldCBpdCIuIEZvciBtZSwgdGhpcyBjbGVhcmx5IG1lYW5zIHlvdSBjb25z aWRlciB0aGF0IERvbVUgdXNpbmcgVEVFIGFyZQo+Pj4+IHRydXN0ZWQuCj4+Pj4KPj4+PiBTbyBj YW4geW91IGNsYXJpZnkgYnkgd2hhdCB5b3UgbWVhbiBieSB0cnVzdCB0aGVuPwo+Pj4gV2VsbC4u LiBJbiByZWFsIHdvcmxkICJ0cnVzdCIgaXNuJ3QgYmluYXJ5IG9wdGlvbi4gWW91IGRvbid0IHdh bnQgdG8KPj4+IGFsbG93IGFsbCBkb21haW5zIHRvIGFjY2VzcyBURUUuIEJyZWFjaGVkIFRFRSB1 c2VyIGRvbWFpbiBkb2Vzbid0Cj4+PiBhdXRvbWF0aWNhbGx5IG1lYW4gdGhhdCB5b3VyIHdob2xl IHN5c3RlbSBpcyBjb21wcm9taXNlZC4gQnV0IHRoaXMKPj4+IGNlcnRhaW5seSBpbmNyZWFzZXMg YXR0YWNrIHN1cmZhY2UuIFNvIGl0IGlzIHNhZmVyIHRvIGdpdmUgVEVFIGFjY2Vzcwo+Pj4gb25s eSB0byB0aG9zZSBkb21haW5zLCB3aGljaCByZWFsbHkgcmVxdWlyZSBpdC4gWW91IGNhbiBjYWxs IHRoZW0KPj4+IHNsaWd0bHkgbW9yZSB0cnVzdGVkLCB0aGVuIG90aGVycy4KPj4KPj4gRG8geW91 IGhhdmUgYW4gZXhhbXBsZSBvZiBndWVzdCB5b3Ugd291bGQgc2xpZ2h0bHkgdHJ1c3QgbW9yZT8K PiBJIGhhdmUgYW4gZXhhbXBsZSBvZiBndWVzdCBJIHdvdWxkIHRydXN0IGxlc3M6IGlmIEknbSBy dW5uaW5nIHNlcnZlciwKPiBhbmQgSSdtIHNlbGxpbmcgdmlydHVhbCBtYWNoaW5lcyBvbiB0aGF0 IHNlcnZlciwgSSBkb24ndCB3YW50IHRvIHRoZW0KPiB0byBhY2Nlc3MgVEVFLgoKTWFrZSBzZW5z ZS4KCj4gCj4gSSB3aWxsIHRydXN0IHNsaWdodGx5IG1vcmUgdG8gbXkgb3duIGd1ZXN0LgoKSSBr aW5kIG9mIGFncmVlIGlmIHRoZXJlIGFyZSBlaXRoZXIgbm8gaW50ZXJhY3Rpb24gd2l0aCB0aGUg dXNlciBvciB0aGUgCnVzZXIgaXMgbm90IGFibGUgdG8gZ2FpbiBwcml2aWxlZ2UgcGVybWlzc2lv bnMuCgo+IAo+Pj4KPj4+Pj4gRXZlbiBub3csIFhFTiBwcm9jZXNzZXMgcmVxdWVzdHMgZnJvbSBE b21VcyB3aXRob3V0Cj4+Pj4+IHRydXN0aW5nIHRoZW0uIFdoeSBkbyB5b3UgdGhpbmssIHRoYXQg VEVFIG1lZGlhdG9yIHVzYWdlIHdpbGwgZGlmZmVyPwo+Pj4+Cj4+Pj4gSSBndWVzcyB5b3UgYXJl IGNvbXBhcmluZyB3aXRoIHZHSUMgYW5kIFBMMDExPyBJSE1PLCB0aGUgbWFpbiBkaWZmZXJlbmNl IGlzCj4+Pj4gWGVuIGlzIHRha2luZyBjYXJlIGFsb25lIG9mIHRoZSBpc29sYXRpb24gYmV0d2Vl biBndWVzdC4gSGVyZSBpbiB0aGUgVEVFCj4+Pj4gY2FzZSwgeW91IHJlbHkgb24gYSBjb21iaW5h dGlvbiBvZiBib3RoIFRFRSBhbmQgWGVuIHRvIGRvIHRoZSBpc29sYXRpb24uCj4+PiBZZXMuIFRo aXMgaXMgd2lsbCBiZSBsZXNzIHNlY3VyZSwgdGhhbiBURUUtb25seSBvciBoeXBlcnZpc29yLW9u bHkgc3lzdGVtLgo+Pgo+PiBDYW4geW91IGV4cGFuZCBoZXJlPwo+IElmIFRFRSBoYXMgb25lIHNl Y3VyaXR5IGZsYXcgYW5kIGh5cGVydmlzb3IgaGFzIG9uZSBzZWN1cml0eSBmbGF3LAo+IHRoZW4g eW91IGhhdmUgdHdvIHNlY3VyaXR5IGZsYXdzIGluIHlvdXIgc3lzdGVtLiBBbmQgYW55IG9mIHRo ZW0gY2FuCj4gY29tcHJvbWlzZSB3aG9sZSBzeXN0ZW0uCgpNYWtlIHNlbnNlLgoKPj4+Cj4+Pj4+ Cj4+Pj4+IExvb2ssIEkgZ2VuZXJhbGx5IG5vdCBhZ2FpbnN0IGlkZWEgb2YgVEVFIG1lZGlhdG9y IGluIHN0dWJkb21zLiBCdXQgdGhpcwo+Pj4+PiBhcHByb2FjaCByZXF1aXJlIG1hbnkgY2hhbmdl cyBpbiBleGlzdGluZyBYRU4gY29kZToKPj4+Pj4KPj4+Pj4gMS4gTG9hZCBkb21haW5zIGJlZm9y ZSBEb20wLgo+Pj4+Pgo+Pj4+PiAyLiBBZGQgc3BlY2lhbCBBUEkgZm9yIG1lZGlhdG9yLiBPciBh bHRlciBleGlzdGluZyBvbmVzLiBZb3UgY2FuJ3QgdXNlCj4+Pj4+ICAgICBleGlzdGluZyBBUElz IGFzIGl0LCBiZWNhdXNlIHlvdSBuZWVkIHRvIGVuZm9yY2Ugc3RyaWN0ZXIgWFNNIHJ1bGVzCj4+ Pj4+ICAgICBvbiB0aGVtLgo+Pj4+Cj4+Pj4gTWluZCBnaXZpbmcgbW9yZSBleHBsYW5hdGlvbi4u Li4/IFhlbiBoYXMgYSBkZWZhdWx0IHBvbGljeSBmb3IgWFNNIGFuZAo+Pj4+IGluZGVlZCBtYXkg bm90IGZpdCB5b3VyIHVzZSBjYXNlLiBCdXQgeW91IGNhbiB3cml0ZSB5b3VyIG93biBwb2xpY3kg YW5kIGxvYWQKPj4+PiBpdC4KPj4+IFllcy4gWW91IG5lZWQgcG9saWN5ICJhbGxvdyB0aGlzIHN0 dWJkb20gdG8gbWFwIG1lbW9yeSBvbmx5IGZyb20gVEVFLWVuYWJsZWQKPj4+IGd1ZXN0cyIuIEFG QUlLLCB0aGlzIGlzIG5vdCBwb3NzaWJsZSByaWdodCBub3cuIEJ1dCBJIGNhbiBiZSB3cm9uZywg SSdtCj4+PiBub3QgdmVyeSBmYW1pbGlhciB3aXRoIFhTTS4KPj4KPj4gSSBiZWxpZXZlIFhTTSBj b3VsZCBkbyB0aGF0LiBJSVJDLCB5b3UgY2FuICJsYWJlbCIgeW91ciBkb21haW4gYW5kIHVzZSB0 aGF0Cj4+IHRvIHNheSAic3R1YmRvbSBpcyBhbGxvd2VkIHRvIGFjY2VzcyBtZW1vcnkgd2l0aCBk b21haW4gdXNpbmcgdGhlIGdpdmVuCj4+IGxhYmVsIi4KPiBBaGEuIFRoaXMgaXMgZ29vZCBuZXdz LiBUaGFua3MuIExvb2tzIGxpa2UgSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byBYU00uLi4KPiAK Pj4+Cj4+Pj4+Cj4+Pj4+IDMuIENoYW5nZXMgaW4gc2NoZWR1bGluZyB0byBhbGxvdyBURUUgbWVk aWF0b3IgdXNlIGNyZWRpdHMvc2xpY2VzIG9mCj4+Pj4+ICAgICBjYWxsaW5nIGd1ZXN0Lgo+Pj4+ Pgo+Pj4+PiA0LiBTdXBwb3J0IGJvaWxlcnBsYXRlIGNvZGUgaW4gc3R1YmRvbS4gWW91IGtub3cs IHlvdSBjYW4ndCBzaW1wbHkKPj4+Pj4gICAgIHdyaXRlIG1lZGlhdG9yIGluIHN0dWJkb20uIFlv dSBuZWVkIGEga2VybmVsLiBZb3UgbmVlZCB0bwo+Pj4+PiAgICAgbWFpbnRhaW4gaXQuCj4+Pj4K Pj4+PiBXZWxsLCBpbiBhIHdheSBvciBhbm90aGVyIHNvbWVvbmUgd2lsbCBoYXZlIHRvIG1haW50 YWluIHRoZSBtZWRpYXRvci4uLiBUaGUKPj4+PiBrZXJuZWwgZG9lcyBub3QgbmVlZCB0byBiZSBz cGVjaWZpYyB0byBURUUsIGl0IGNvdWxkIGJlIGEgdW5pa2VybmVsLgo+Pj4gUmlnaHQuIEJ1dCBm b3IgbWUgWEVOIGxvb2tzIGJldHRlciBtYWludGFpbmVkICJrZXJuZWwiIDopCj4+PiBJTUhPLCBY RU4gaXMgbWF0dXJlLCB0aGVyZSBhcmUgbGVzcyBidWdzIChlc3BlY2lhbGx5IHNlY3VyaXR5IG9u ZXMpCj4+PiB0aGFuIGluIGFueSBvdGhlciBrZXJuZWwuCj4+Pgo+Pj4+IEFuZCBiZWZvcmUgeW91 IHNheSBhZ2FpbiBuby1vbmUgaW4gdGhlIGNvbW11bml0eSBzZWVtIHRvIGJlIGludGVyZXN0ZWQu IEkKPj4+PiBzaG91bGQgcmVtaW5kIHlvdSB0aGF0IEFybSBpcyB3b3JraW5nIG9uIGl0IChzZWUg ZGV2ZWxvcG1lbnQgdXBkYXRlKS4KPj4+IFlvdSBhcmUgdGFsa2luZyBhYm91dCB0aGF0ICJ1bmlj b3JlIiBwcm9qZWN0IGJ5IE5FQyBndXlzPyBTb3JyeSwKPj4+IGNhbid0IGZpbmQgbWVudGlvbmVk IGRldmVsb3BtZW50IHVwZGF0ZS4gTG9va3MgbGlrZSBzZWFyY2ggb24gbWFya21haWwKPj4+IGlz IGRvd24gKG9yIEknbSBkb2luZyBzb21ldGhpbmcgdGVycmlibHkgd3JvbmcpLgo+Pgo+PiBTb3Jy eSwgSSBtZWFudCBNaW5pLU9TLiBJIGRvbid0IGtub3cgYW55IHdvcmsgb24gInVuaWNvcmUiIGZv ciBBcm02NCBmb3IKPj4gbm93Lgo+IEFoLCBnb29kIHRvIGhlYXIuIFNvIHRoZXJlIHdpbGwgYmUg YWN0aXZlIG1haW50YWluZXIgZm9yIEFSTTY0Cj4gTWluaS1PUz8gU29ycnksIHN0aWxsIGNhbid0 IGZpbmQgdGhhdCAiZGV2ZWxvcG1lbnQgdXBkYXRlIi4KCkF0IHRoZSBtb21lbnQsIHRoZSBzZXJp ZXMgaXMgc3RpbGwgaW4gZGV2ZWxvcG1lbnQuIEJ1dCB5ZXQgdGhlIHBsYW4gaXMgCnRvIGdldCBB cm02NCBmdWxseSBzdXBwb3J0ZWQgaW4gTWluaS1PUy4KCj4gCj4+Pgo+Pj4+Pgo+Pj4+PiBUaGlz IGlzIGEgbG90IG9mIGEgd29yay4gSXQgcmVxdWlyZXMgY2hhbmdlcyBpbiBnZW5lcmljIHBhcnRz IG9mIFhFTi4KPj4+Pj4gSSBmZWFyIGl0IHdpbGwgYmUgdmVyeSBoYXJkIHRvIHVwc3RyZWFtIHN1 Y2ggY2hhbmdlcywgYmVjYXVzZSBubyBvbmUKPj4+Pj4gc2VlcyBhbiBpbW1lZGlhdGUgdmFsdWUg aW4gdGhlbS4gSG93IGRvIHlvdSB0aGluaywgd2hhdCBhcmUgbXkgY2hhbmNlcwo+Pj4+PiB0byB1 cHN0cmVhbSB0aGlzPwo+Pj4+Cj4+Pj4gSXQgaXMgZmFpcmx5IGFubm95aW5nIHRvIHNlZSB5b3Ug anVzdGlmeWluZyBiYWNrIG1vc3Qgb2YgdGhpcyB0aHJlYWQgd2l0aAo+Pj4+ICJubyBvbmUgc2Vl cyBhbiBpbW1lZGlhdGUgdmFsdWUgaW4gdGhlbSIuCj4+Pj4KPj4+PiBJIGFtIG5vdCB0aGUgb25s eSBtYWludGFpbmVycyBpbiBYZW4sIHNvIGVmZmVjdGl2ZWx5IGNhbid0IHByb21pc2Ugd2hldGhl cgo+Pj4+IGl0IGlzIGdvaW5nIHRvIGJlIHVwc3RyZWFtZWQuIEJ1dCBJIGJlbGlldmUgdGhlIGNv bW11bml0eSBoYXMgYmVlbiB2ZXJ5Cj4+Pj4gc3VwcG9ydGl2ZSBzbyBmYXIsIGEgbG90IG9mIGRp c2N1c3Npb25zIGhhcHBlbmVkIChzZWUgWzJdKSBiZWNhdXNlIG9mIHRoZQo+Pj4+IE9QLVRFRSBz dXBwb3J0LiBTbyB3aGF0IG1vcmUgZG8geW91IGV4cGVjdCBmcm9tIHVzPwo+Pj4gSSdtIHNvcnJ5 LCBJIGRpZG4ndCBtZWFuIHRvIG9mZmVuZCB5b3Ugb3Igc29tZW9uZSBlbHNlLiBZb3UsIGd1eXMs IGNhbgo+Pj4gYmUgaGFyc2ggc29tZXRpbWVzLCBidXQgSSByZWFsbHkgYXBwcmVjaWF0ZSBoZWxw IHByb3ZpZGVkIGJ5IHRoZQo+Pj4gY29tbXVuaXR5LiBBbmQgSSwgY2VydGFpbmx5LCBkb24ndCBh c2sgeW91IGFib3V0IGFueSBndWFyYW50ZWVzIG9yCj4+PiBzb21ldGhpbmcgb2YgdGhhdCBzb3J0 Lgo+Pj4KPj4+IEknbSBqdXN0IGJvdGhlcmVkIGJ5IGFtb3VudCBvZiByZXF1aXJlZCB3b3JrIGFu ZCBieSB1cHN0cmVhbWluZwo+Pj4gcHJvY2Vzcy4gQnV0IHRoaXMgaXMgbm90IGEgc3Ryb25nIGFy Z3VtZW50IGFnYWluc3QgbWVkaWF0b3JzIGluCj4+PiBzdHViZG9tcywgSSB0aGluayA6KQo+Pj4K Pj4+IEN1cnJlbnRseSBJJ20gZGV2ZWxvcGluZyB2aXJ0dWFsaXphdGlvbiBzdXBwb3J0IGluIE9Q LVRFRSwgc28gaW4KPj4+IG1lYW50aW1lIHdlJ2xsIGhhdmUgbXVjaCB0aW1lIHRvIGRpc2N1c3Mg bWVkaWF0b3JzIGFuZCBzdHViZG9tYWluCj4+PiBhcHByb2FjaCAoaWYgeW91IGhhdmUgdGltZSku IFRvIHRlc3QgdGhpcyBmZWF0dXJlIGluIE9QLVRFRSBJJ20KPj4+IGV4dGVuZGluZyB0aGlzIFJG QywgbWFraW5nIG9wdGVlLmMgdG8gbG9vayBsaWtlIGZ1bGwtc2NhbGUgbWVkaWF0b3IuCj4+PiBJ IG5lZWQgdG8gZG8gdGhpcyBhbnl3YXlzLCB0byB0ZXN0IE9QLVRFRS4gV2hlbiBJJ2xsIGZpbmlz aCwgSSBjYW4KPj4+IHNob3cgeW91IGhvdyBtZWRpYXRvciBjYW4gbG9vayBsaWtlLiBNYXliZSB0 aGlzIHdpbGwgcGVyc3VhZGUgeW91IHRvCj4+PiBvbmUgb3IgYW5vdGhlciBhcHByb2FjaC4KPj4K Pj4gSSB0aGluayB0aGlzIHdvdWxkIGJlIHVzZWZ1bC4gQ2FuIHlvdSBhbHNvIGtlZXAgYm90aCBT dGVmYW5vIChJIGFzc3VtZSBoZQo+PiB3YW50cyB0b28pIGFuZCBJICBpbiB0aGUgbG9vcCBmb3Ig dGhlIE9QLVRFRSB2aXJ0dWFsaXphdGlvbiBzaWRlPwo+IE9rYXkuIEknbSBwbGFubmluZyB0byBw cm9kdWNlIGZpcnN0IFJGQyBmb3IgT1AtVEVFIGZvbGtzIGluIGEgZmV3Cj4gZGF5cy4gSSdsbCBz dWJzY3JpYmUgeW91LiBJbiB0aGVuIG1lYW50aW1lIHlvdSBjYW4gY2hlY2sgb3V0IFsyXQoKVGhh bmsgeW91IQoKPiBbMV0gaHR0cDovL21hcmttYWlsLm9yZy9tZXNzYWdlL3RkYmc1bWd4anZzb2oy cGgKPiBbMl0gaHR0cHM6Ly9naXRodWIuY29tL09QLVRFRS9vcHRlZV9vcy9pc3N1ZXMvMTg5MAoK Q2hlZXJzLAoKLS0gCkp1bGllbiBHcmFsbAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMu eGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==