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 17:49:12 +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> <20171102165342.GA12155@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: <20171102165342.GA12155@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 Cc: Julien Grall , nd@arm.com, Stefano Stabellini , jens.wiklander@linaro.org, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org SGkgVm9sb2R5bXlyLAoKT24gMDIvMTEvMTcgMTY6NTMsIFZvbG9keW15ciBCYWJjaHVrIHdyb3Rl Ogo+IE9uIFRodSwgTm92IDAyLCAyMDE3IGF0IDAxOjE3OjI2UE0gKzAwMDAsIEp1bGllbiBHcmFs bCB3cm90ZToKPj4gT24gMjQvMTAvMTcgMjA6MDIsIFZvbG9keW15ciBCYWJjaHVrIHdyb3RlOgo+ Pj4+Pj4+PiBJZiBpdCBpcyBub3Qgc2FmZSwgdGhpcyBtZWFucyB5b3UgaGF2ZSBhIHdoaXRlbGlz dCBzb2x1dGlvbiBhbmQgdGhlcmVmb3JlCj4+Pj4+Pj4+IHRpZSBYZW4gdG8gYSBzcGVjaWZpYyBP UC1URUUgdmVyc2lvbi4gU28gaWYgeW91IG5lZWQgdG8gdXNlIGEgbmV3IGZ1bmN0aW9uCj4+Pj4+ Pj4+IHlvdSB3b3VsZCBuZWVkIHRvIHVwZ3JhZGUgWGVuIG1ha2luZyB0aGUgY29kZSBvZiB1c2lu ZyBuZXcgdmVyc2lvbgo+Pj4+Pj4+PiBwb3RlbnRpYWxseSBoaWdoLgo+Pj4+Pj4+IFllcywgYW55 IEFCSSBjaGFuZ2UgYmV0d2VlbiBPUC1URUUgYW5kIGl0cyBjbGllbnRzIHdpbGwgcmVxdWlyZSBt ZWRpYXRvcgo+Pj4+Pj4+IHVwZ3JhZGUuIEx1Y2tpbGx5LCBPUC1URUUgbWFpbnRhaW5zIEFCSSBi YWNrd2FyZC1jb21wYXRpYmxlLCBzbyBpZiB5b3UnbGwKPj4+Pj4+PiBpbnN0YWxsIG9sZCBYRU4g YW5kIG5ldyBPUC1URUUsIE9QLVRFRSB3aWxsIHVzZSBvbmx5IHRoYXQgc3Vic2V0IG9mIEFCSSwK Pj4+Pj4+PiB3aGljaCBpcyBrbm93biB0byBYRU4uCj4+Pj4+Pj4KPj4+Pj4+Pj4gQWxzbywgY29y cmVjdCBtZSBpZiBJIGFtIHdyb25nLCBPUC1URUUgaXMgYSBCU0QgMi1DbGF1c2UuIFRoaXMgbWVh bnMgeW91Cj4+Pj4+Pj4+IGltcG9zZSBhbnlvbmUgd2FudGVkIHRvIG1vZGlmeSBPUC1URUUgZm9y IHRoZWlyIG93biBwdXJwb3NlIGNhbiBtYWtlIGEKPj4+Pj4+Pj4gY2xvc2VkIHZlcnNpb24gb2Yg dGhlIFRFRS4gQnV0IGlmIHlvdSBuZWVkIHRvIGludHJvc3BlY3Qvd2hpdGVsaXN0IGNhbGwsIHlv dQo+Pj4+Pj4+PiBpbXBvc2UgdGhlIHZlbmRvciB0byBleHBvc2UgdGhlaXIgQVBJLgo+Pj4+Pj4+ IEJhc2ljYWxseSB5ZXMuIElzIHRoaXMgYmFkPyBPUC1URUUgZHJpdmVyIGluIExpbnV4IGlzIGxp Y2Vuc2VkIHVuZGVyIEdQTCB2Mi4KPj4+Pj4+PiBJZiB2ZW5kb3IgbW9kaWZpZXMgaW50ZXJmYWNl IGJldHdlZW4gT1AtVEVFIGFuZCBMaW51eCwgdGhleSBhbnl3YXlzIG9ibGlndWVkCj4+Pj4+Pj4g dG8gZXhwb3NlIEFQSS4KPj4+Pj4+Cj4+Pj4+PiBQYXJkb24gbWUgZm9yIHBvdGVudGlhbCBzdHVw aWQgcXVlc3Rpb25zLCBteSBrbm93bGVkZ2Ugb2YgT1AtVEVFIGlzIGxpbWl0ZWQuCj4+Pj4+Pgo+ Pj4+Pj4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGUgT1AtVEVFIHdpbGwgcHJvdmlkZSBhIGdlbmVy aWMgd2F5IHRvIGFjY2Vzcwo+Pj4+Pj4gZGlmZmVyZW50IFRydXN0ZWQgQXBwbGljYXRpb24uIFdo aWxlIE9QLVRFRSBBUEkgbWF5IGJlIGdlbmVyaWMsIHRoZSBUQSBBUEkKPj4+Pj4+IGlzIGN1c3Rv bS4gQUZBSUNUIHRoZSBsYXR0ZXIgaXMgbm90IHBhcnQgb2YgTGludXggZHJpdmVyLgo+Pj4+PiBZ ZXMsIHlvdSBhcmUgcGVyZmVjdGx5IHJpZ2h0IHRoZXJlLgo+Pj4+Pgo+Pj4+Pj4gU28gaGVyZSBt eSBxdWVzdGlvbnM6Cj4+Pj4+PiAJMSkgQXJlIHlvdSBwbGFubmluZyBhbGxvdyBhbGwgdGhlIGd1 ZXN0cyB0byBhY2Nlc3MgZXZlcnkgVHJ1c3RlZAo+Pj4+Pj4gQXBwbGljYXRpb25zPwo+Pj4+PiBU aGlzIGlzIGEgZ29vZCBxdWVzdGlvbi4gVGhlcmUgYXJlIHR3byB0eXBlcyBvZiBUQXMgc3VwcG9y dGVkIGluCj4+Pj4+IE9QLVRFRTogcmVhbCBUQXMgKGFzIHRoZXkgYXJlIGRlc2NyaWJlZCBpbiBH bG9iYWxQbGF0Zm9ybSBzcGVjcykgYW5kCj4+Pj4+IFBzZXVkb1RBcy4gIFRoZSBsYXR0ZXIgb25l cyBhcmUgc3RhdGljYWxseSBsaW5rZWQgcmlnaHQgaW50byBPUC1URUUKPj4+Pj4ga2VybmVsIGFu ZCBleGVjdXRlIGF0IFMtRUwxIGxldmVsLgo+Pj4+PiBSZWFsIFRBcyBhcmUgcHJvdmlkZWQgYnkg Y2xpZW50LiBUaGF0IG1lYW5zIHRoYXQgTlcgdXNlcnNwYWNlCj4+Pj4+IHN1cHBsaWNhbnQgbG9h ZHMgVEEgaW50byBPUC1URUUuIE9QLVRFRSBjaGVja3Mgc2lnbmF0dXJlIGZvciB0aGUgVEEKPj4+ Pj4gYW5kIHRoZW4gcnVucyBpdCBpbiBTLUVMMC4KPj4+Pj4gU28sIEknbSBwbGFubmluZyB0byBh bGxvdyBjbGllbnQgdG8gd29yayB3aXRoIGFueSByZWFsIFRBLiBJIGNhbid0IHNlZQo+Pj4+PiBy ZWFsIHByb2JsZW0gdGhlcmUuCj4+Pj4KPj4+PiBBcmUgdGhlIHJlYWwgVEFzIGdvaW5nIHRvIGJl IHNoYXJlZCBiZXR3ZWVuIGd1ZXN0cz8gT3Igd2lsbCBlYWNoIGd1ZXN0IGhhdmUKPj4+PiB0aGVp ciBvd24gb25lPwo+Pj4gTm8sIHdlIGRvbid0IHBsYW4gdGhpcy4gQXQgbGVhc3QgYXQgdGhpcyBt b21vZW50LiBFdmVyeSBndWVzdCB3aWxsIGhhdmUKPj4+IG93biBpbnN0YW5jZSBvZiBUQS4KPj4+ Cj4+Pj4gV2lsbCB5b3UgYWxsb3cgZXZlcnkgZ3Vlc3RzIGxvYWRpbmcgcmVhbCBUQXM/Cj4+PiBZ ZXMsIGlmIGd1ZXN0IGhhcyBhY2Nlc3MgdG8gVEVFLCBpdCBjYW4gbG9hZCBUQS4gRWl0aGVyIHRo ZXJlIGlzIG5vCj4+PiBzZW5zZSB0byB1c2UgVEVFLiBPUC1URUUgY29yZSBpdHNlbGYgZG9lcyBu b3QgcHJvdmlkZSB1c2VmdWwgc2VydmljZXMKPj4+IHRvIGNsaWVudHMuCj4+Cj4+IEluIGEgcHJl dmlvdXMgZS1tYWlsIHlvdSBtZW50aW9uZWQgT1AtVEVFIGhhcyBsaW1pdGVkIG1lbW9yeS4gSG93 IHdpbGwgeW91Cj4+IGVuc3VyZSB0aGF0IGd1ZXN0IEEgd2lsbCBub3QgdXNlIGFsbCB0aGUgbWVt b3J5IG9mIE9QLVRFRSBhbmQgcHJldmVudCBndWVzdAo+PiBCIHRvIGxvYWQgVEFzPwo+IFRoZXJl IGFyZSBubyB3YXkgdG8gZG8gdGhpcyByaWdodCBub3cuIEV2ZW4gb24gYmFyZS1tZXRhbCBzeXN0 ZW0sIG9uZSBjbGllbnQKPiBjYWxsIGxvYWQgaHVnZSBUQSBvciBlYXQgdXAgbWVtb3J5IGluIGFu b3RoZXIgd2F5IHRvIHByZXZlbnQgb3RoZXIgY2xpZW50cwo+IHRvIHVzZSBPUC1URUUuIFRoaXMg aXMga25vd24gbGltaXRhdGlvbi4gSXQgY2FuIGJlIG1pdGlnYXRlZCBieSBlbmZvcmNpbmcKPiBx dW90YXMuCgpZZXMsIGJ1dCB0aG9zZSBjbGllbnRzIG9ubHkgc2VydmUgb25lIE9TLiBIZXJlIHlv dSB3b3VsZCBzZXJ2ZSBtdWx0aXBsZSAKT1NlcywgY2xpZW50cyBmcm9tIE9TIEEgY291bGQgZWF0 IHVwIHRoZSBtZW1vcnkgYW5kIHByZXZlbnQgYSBjbGllbnQgCmZyb20gT1MgQiB0byBydW4uCgpU aGlzIGNvdWxkIGJlIGEgc2VyaW91cyBpc3N1ZSBkZXBlbmRpbmcgb24gaG93IGltcG9ydGFudCB0 aGUgY2xpZW50cyBmb3IgCk9TIGFyZS4KClNvIGxpa2VseSBlbmZvcmNpbmcgcXVvdGFzIHdpbGwg YmUgbmVlZGVkLgoKPiAKPj4gWy4uLl0KPj4KPj4+PiBOb3QgcmVhbGx5LCB5b3UgY291bGQgdGhl IGRvbWFpbiBjb3VsZCBibG9jayB3aGVuIGlzc3VpbmcgYW4gU01DIHVudGlsIHRoZQo+Pj4+IG1l ZGlhdG9yIGlzIHVwIGFuZCBydW5uaW5nLgo+Pj4gRG8geW91IG1lYW4sIHRoYXQgaWYgZG9tYWlu IHRyaWVzIHRvIGV4ZWN1dGUgU01DLCBhbmQgbWVkaWF0b3IgaXMgbm90Cj4+PiByZWFkeSwgdGhl biBoeXBlcnZpc29yIHNob3VsZCBwYXVzZSBhbGwgZG9tYWluJ3MgdkNQVXM/IFRoYXQgY2FuIGJl Cj4+PiBkZXN0cnVjdGl2ZSBmb3IgaHcgZG9tYWluLgo+Pgo+PiBYZW4gaXMgZnJlZSB0byB1bnNj aGVkdWxlIGFueSB2Q1BVIGF0IGFueSB0aW1lLiBTbyB3aHkgd291bGQgaXQgYmUKPj4gZGVzdHJ1 Y3RpdmU/Cj4gU3VwcG9zZSB0aGF0IG1lZGlhdG9yIGRvbWFpbiBuZWVkcyAwLjVzIHRvIGJvb3Qg dXAgYW5kIGJlIHJlYWR5IHRvCj4gc2VydmUgY2FsbHMuIEZvciBoYWxmIG9mIGEgc2Vjb25kIEhX IGRvbWFpbiB3aWxsIGJlIGJsb2NrZWQuIEkgZG9uJ3QKPiBsaWtlIHRoZSBpZGVhLCB0aGF0IGl0 IHdpbGwgbm90IGJlIGFibGUgdG8gc2VydmUgSVJRcyBhbmQgb3RoZXIKPiByZXF1ZXN0cy4gSU1I TywgaXQgaXMgb2theSBmb3IgRG9tVSwgYnV0IG5vdCBmb3IgRG9tMC4KCgo+IAo+Pj4+Pj4+Pj4g QW5kIHllcywgaXQgc2VlbXMgb2J2aW91cywgYnV0IEkgd2FudCB0byBzYXkgdGhpcyBleHBsaWNp dGx5OiBnZW5lcmljCj4+Pj4+Pj4+PiBURUUgbWVkaWF0b3IgZnJhbWV3b3JrIHNob3VsZCBhbmQg d2lsbCB1c2UgWFNNIHRvIGNvbnRyb2wgd2hpY2ggZG9tYWluCj4+Pj4+Pj4+PiBjYW4gd29yayB3 aXRoIFRFRS4gU28sIGlmIHlvdSBkb24ndCB0cnVzdCB5b3VyIGd1ZXN0IC0gZG9uJ3QgbGV0IGl0 Cj4+Pj4+Pj4+PiB0byBjYWxsIFRFRSBhdCBhbGwuCj4+Pj4+Pj4+Cj4+Pj4+Pj4+IENvcnJlY3Qg bWUgaWYgSSBhbSB3cm9uZy4gVEVFIGNvdWxkIGJlIHVzZWQgYnkgQW5kcm9pZCBndWVzdCB3aGlj aCBsaWtlbHkKPj4+Pj4+Pj4gcnVuIHRoZSB1c2VyIGFwcHMuLi4gcmlnaHQ/IFNvIGFyZSB5b3Ug c2F5aW5nIHlvdSBmdWxseSB0cnVzdCB0aGF0IGd1ZXN0IGFuZAo+Pj4+Pj4+PiBvYnZpb3VzbHkg dGhlIHVzZXIgaW5zdGFsbGluZyByb2d1ZSBhcHA/Cj4+Pj4+Pj4gSSBkb24ndCB0aGluayB0aGF0 IGFwcCBkb3dubG9hZGVkIGZyb20gUGxheSBNYXJnZXQgY2FuIGFjY2VzcyBPUC1URUUgZGlyZWN0 bHkuCj4+Pj4+Pj4gT1AtVEVFIGNhbiBiZSB1c2VkIGJ5IEFuZHJvaWQgaXRzZWxmIGFzIGEga2V5 IHN0b3JhZ2Ugb3IgdG8gYWNjZXNzIHRvIGEgU0UsCj4+Pj4+Pj4gZm9yIGV4YW1wbGUuIEJ1dCAz cmQgYXBwIHRoYXQgaXNzdWVzIFRFRSBjYWxscy4uLiBJIGRvbid0IHRoaW5rIHNvLgo+Pj4+Pj4K Pj4+Pj4+IFlvdSBkaWRuJ3QgZ2V0IG15IHBvaW50IGhlcmUuIFRoYXQgcm9ndWUgYXBwIG1heSBi ZSBhYmxlIHRvIGJyZWFrIGludG8KPj4+Pj4+IGtlcm5lbCB2aWEgYW4gZXhwbG9pdCBvciBoYXZl IGVub3VnaCBwcml2aWxlZ2UgdG8gYnJlYWsgdGhlIGd1ZXN0LiBXaG8ga25vd3MKPj4+Pj4+IHdo YXQgaXQgd2lsbCBiZSBhYmxlIHRvIGRvIGFmdGVyLi4uCj4+Pj4+IE9ubHkgd2hhdCBoeXBlcnZp c29yIGFuZCBURUUgd2lsbCBhbGxvdyBpdCB0byBkby4gTG9vaywgT1AtVEVFIHdhcyBub3QgZGVz aWduZWQKPj4+Pj4gdG8gcnVsZSB0aGUgbWFjaGluZS4gVGhlcmUgaXMgQVJNIFRGIGZvciB0aGF0 IDopIE9QLVRFRSdzIHRhc2sgaXMgdG8gcHJvdmlkZQo+Pj4+PiBzb21lIHNhZmVyIGVudmlyb25t ZW50IGZvciBzZW5zaXRpdmUgZGF0YSBhbmQgY29kZS4gVGhpcyBlbnZpcm9ubWVudCBoYXMKPj4+ Pj4gd2VsbC1kZWZpbmVkIGludGVyZmFjZXMgYW5kIGlzIGRlc2dpbmVkIHRvIGJlIGFzIHNhZmUg YXMgcG9zc2libGUuCj4+Pj4+Cj4+Pj4+IElmIHJvZ3VlIGFwcCBicmVha3MgaW50byBrZXJuZWws IHRoZW4gaXQgY2FuIGlzc3VlIGFueSBTTUMgd2hpY2ggaXQgd2FudHMuCj4+Pj4+IEJ1dCBPUC1U RUUgZG9lcyBub3QgdHJ1c3QgdG8gTlcuIEh5cGVydmlzb3IgZG9lcyBub3QgdHJ1c3QgdG8gZ3Vl c3RzLgo+Pj4+PiBNZWRpYXRvciBzaG91bGQgYmUgd3JpdHRlbiBpbiB0aGUgc2FtZSB3YXkuCj4+ Pj4+Cj4+Pj4+IFNvLCB3aGF0IGNhbiBkbyByb2d1ZSBrZXJuZWw/IEFzIEkga25vdyAtIGl0IGNh biBjYXVzZSBEb1MgaW4gT1AtVEVFLiBUaGlzIGlzCj4+Pj4+IGtub3duIGlzc3VlLiBJZiB0aGVy ZSBpcyBhIHNlY3VyaXR5IGJ1ZyBpbiBPUC1URUUsIGl0IHByb2JhYmx5IGNhbiBvdmVyY29tZQo+ Pj4+PiB3aG9sZSBzeXN0ZW0uIEJ1dCB0aGlzIGlzIHRydWUgZm9yIGFueSBzeXN0ZW0gcnVubmlu ZyBPUC1URUUuCj4+Pj4KPj4+PiBJIGFncmVlIHRoYXQgaWYgeW91IHRha2Ugb3ZlciBPUC1URUUs IHlvdSB3aWxsIHRha2Ugb3ZlciBhbnkgc3lzdGVtLiBUaGlzIGlzCj4+Pj4gbm90IHNwZWNpZmlj IHRvIGh5cGVydmlzb3IuCj4+PiBZZXMuIEJ1dCBpdCBqdXN0IG9jY3VyZWQgdG8gbWUgdGhhdCBt ZWRpYXRvcitPUC1URUUgKmNhbiogYmUgbW9yZQo+Pj4gc2VjdXJlIHRoZW4ganVzdCBPUC1URUUu IFlvdSBzZWUsIG1lZGlhdG9yIHNob3VsZCBwZXJmb3JtIG93biBzZWN1cml0eQo+Pj4gY2hlY2tz IGJlZm9yZSBmb3J3YXJkaW5nIGNhbGwgdG8gT1AtVEVFLiBTbyBpZiBPUC1URUUgbWlzc2VzCj4+ PiBzb21ldGhpbmcsIG1lZGlhdG9yIGNhbiBiYWNrIGl0IHVwLiBJIHdvdWxkbid0IHJlbHkgb24g dGhpcy4gSXQganVzdAo+Pj4gaW50ZXJlc3RpbmcgdGhvdWdodCA6LSkKPj4+Cj4+Pj4gQmFyZW1l dGFsIE9TIHRha2luZyBkb3duIHRoZSBwbGF0Zm9ybSB3aWxsIG9ubHkgaGFybSBpdHNlbGYuIEEg Z3Vlc3QgT1MKPj4+PiBjb3VsZCBoYXJtIHRoZSB3aG9sZSBwbGF0Zm9ybS4KPj4+IENhbid0IGFy Z3VtZW50IHdpdGggdGhhdC4gSSB0aGluayB0aGF0IHRoaXMgZmVhdHVyZSAoc2hhcmVkIFRFRSkg aXMKPj4+IG5vdCBzdWl0YWJsZSBmb3IsIHNheSwgVlBTZXMuIEJ1dCBpdCBjYW4gd29yayBqdXN0 IGZpbmUgb24gc21hcnRwaG9uZXMKPj4+IG9yIG9uIGFub3RoZXIgZW1iZWRkZWQgZGV2aWNlcywg d2hlcmUgdmVuZG9yIGRlZmluZXMgd2hvbGUgc3lzdGVtLgo+Pgo+PiBJIGd1ZXNzIHlvdXIgdXNl IGNhc2UgaXMgInZlbmRvciBkZWZpbmVzIHdob2xlIHN5c3RlbSIuIEJ1dCBJIGFtIHN0cnVnZ2xp bmcKPj4gdW5kZXJzdGFuZCBob3cgdGhpcyB3b3VsZCBtb3JlIHN1aXRhYmxlIHRoZXJlLgo+IEV4 Y3VzZSBtZS4uLiAiVGhlcmUiIC0gaXQgaXMgd2hlcmUgZXhhY3RseT8KCiJ2ZW5kb3IgZGVmaW5l cyB3aG9sZSBzeXN0ZW0iLgoKPiAKPj4gVGhhdCBndWVzdCBPUyBtYXkgYmUgImNvbnRyb2xsZWQi IGJ5IHRoZSB1c2VyLiBTbyBob3cgaXMgdGhhdCBzYWZlcj8KPiBDYW4geW91IHBsZWFzZSBkZWZp bmUgd2hhdCBpcyAic2FmZSIgYW5kICJ1bnNhZmUiIGluIHRoaXMgY29udGV4dD8KPiAKPiBMZXRz IHRha2UgYSBsb29rIGF0IHdob2xlIHBpY3R1cmUuIEkgY2FuIHNlZSB0aGUgZm9sbG93aW5nIGF0 dGFja3M6Cj4gCj4gMSkgRG9TIGF0dGFjay4gT25lIGRvbWFpbiBzcGVuZHMgYWxsIE9QLVRFRSBy ZXNvdXJjZXMsIG90aGVyIGRvbWFpbnMKPiAgICAgY2FuJ3Qgd29yayB3aXRoIGl0LiBBcyBJIHNh aWQgZWFybGllciwgdGhpcyBpcyBrbm93IGxpbWl0YXRpb24uCj4gCj4gMikgTWVkaWF0b3IgY3Jh c2guIFNvcnQgb2YgRG9TLCBpZiBtZWRpYXRvciBjYW4ndCByZXN0YXJ0IHByb3Blcmx5Lgo+IAo+ IDMpIE9QLVRFRSBjcmFzaC4gVGhpcyBjcmFzaGVzIHdob2xlIHN5c3RlbS4KPiAKPiA0KSBWaXJ0 dWFsaXphdGlvbiBicmVhY2guIEF0dGFja2VyIGdhaW5zIGNvbnRyb2wgb3ZlciBtZWRpYXRvciAt Pgo+ICAgICBjb250cm9sIG92ZXIgYWxsIFRFRS1lbmFibGVkIGd1ZXN0cy4KPiAKPiA1KSBWaXJ0 dWFsaXphdGlvbiBicmVhY2guIEF0dGFja2VyIGdhaW5zIGNvbnRyb2wgb3ZlciBoeXBlcnZpc29y IC0+Cj4gICAgIGNvbnRyb2wgb3ZlciBhbGwgZ3Vlc3RzLgo+IAo+IDYpIFZpcnR1YWxpemF0aW9u IGJyZWFjaC4gQXR0YWNrZXIgZ2FpbnMgY29udHJvbCBvdmVyIE9QLVRFRSAtPgo+ICAgICBjb250 cm9sIG92ZXIgd2hvbGUgc3lzdGVtLCBpbmNsdWRpbmcgZmlybXdhcmUuCj4gCj4gTm93IGl0IHdv dWxkIGJlIGdyZWF0IHRvIGdpdmUgeW91IGxpa2Vob29kIGZvciBldmVyeSBhdHRhY2sgdHlwZS4g QnV0LAo+IG9idmlvdWxzeSBJIGhhdmUgbm8gc3VjaCBudW1iZXJzLiBJIGNhbiBvbmx5IHNwZWN1 bGF0ZSBhYm91dCB0aGlzLgo+IAo+IFJldHVybmluZyB0byB5b3VyIHF1ZXN0aW9uLi4uIFRvIHdo YXQgZXh0ZW50IGd1ZXN0IE9TIGNhbiBiZSBjb250cm9sbGVkCj4gYnkgdXNlcj8gQ2FuIHVzZXIg ZXhlY3V0ZSBhcmJpdHJhcnkgY29kZSBhdCBFTDEgZm9yIGV4YW1wbGU/IE9yIGl0IGNhbgo+IGlu c3RhbGwgb25seSBhcHBzIHByZWJ1aWx0IGJ5IHN5c3RlbSB2ZW5kb3I/Cj4gCj4gV2hhdCBiYWQg dGhpbmdzIHdpbGwgaGFwcGVuIGlmIHVzZXIgd2lsbCBjb21wcm9taXNlIHRoZSB3aG9sZSBzeXN0 ZW0/Cj4gCj4gV2hpY2ggZ3Vlc3RzIHdpbGwgYWxzbyBydW4gb24gdGhlIHNhbWUgc3lzdGVtPyBX aGljaCBzdWJzZXQgb2YgdGhlbQo+IHdpbGwgYWNjZXNzIE9QLVRFRT8KPiAKPiBJZiB5b3UgY2Fu IGFzbndlciB0byB0aGlzIHF1ZXN0aW9ucywgSSBjYW4gdGVsbCB5b3UsIGlmIGl0IGlzIHNhZmUK PiB0byB1c2UgT1AtVEVFICsgdmlydHVhbGl6YXRpb24gb24geW91ciBzeXN0ZW0uCgpJIGRvbid0 IG1ha2UgYW55IGVuZCBwcm9kdWN0IGFuZCBJIGhhdmUgbm8gaWRlYSB3aGF0IGtpbmQgb2YgZ3Vl c3RzIAp3b3VsZCBiZSBydW4gb24gdG9wLgoKU28gaWYgSSBoYWQgdG8gYW5zd2VycyB0byB0aG9z ZSBxdWVzdGlvbnMsIEkgd291bGQgY29uc2lkZXIgYWxsIHRoZSAKZ3Vlc3RzIHBvdGVudGlhbGx5 IG5hc3R5IGFuZCB0aGVyZWZvcmUgbWFraW5nIHN1cmUgdGhlIGF0dGFjayBzdXJmYWNlIGlzIAps aW1pdGVkIGFuZCB1bmRlcnN0b29kLgoKWW91IHJlYWxseSBoYXZlIHRvIGFzayB5b3Vyc2VsZiB3 aGF0IGtpbmRzIG9mIGd1ZXN0IHlvdSB3aWxsIHJ1biBvbiB0aGF0IApwbGF0Zm9ybSBhbmQgYXNz ZXNzIHRoZSByaXNrLgoKSWYgeW91IHRlbGwgbWUgeW91IGFyZSBnb2luZyB0byBydW4gc2FmZXR5 IGNyaXRpY2FsIGluIG9uZSBWTSBhbmQgCmFub3RoZXIgd2l0aCBBbmRyb2lkLiBUaGVuIEkgd291 bGQgYmUgbG9va2luZyBhdCBsaW1pdGluZyB0aGUgYXR0YWNrIApzdXJmYWNlIG9mIHRoZSBBbmRy b2lkIGd1ZXN0LgoKSWYgeW91IHRlbGwgbWUgdGhhdCB0aGUgdXNlciB3aWxsIG9ubHkgYmUgYWJs ZSB0byBpbnN0YWxsIHByZS1idWlsdCBhcHBzIApieSBzeXN0ZW0gdmVuZG9yLiBUaGVuIEkgd2ls bCBoYXZlIHNvbWUgdHJvdWJsZSB0byBiZWxpZXZlIGl0IGlzIHNlY3VyZSAKZ2l2ZW4gaG93IGNv bXBsZXggaXMgYW4gb3BlcmF0aW5nIHN5c3RlbS4KCkFuZCBJIGFtIG5vdCBldmVuIG1lbnRpb25p bmcgdGhhdCBhbGxvd2luZyB0aGUgdXNlciB0byBpbnN0YWxsIHByZS1idWlsdCAKYXBwcyBieSBz eXN0ZW0gdmVuZG9yIGxpa2VseSBtZWFucyBoYXZpbmcgbmV0d29yay9ibHVldG9vdGggYWNjZXNz LiBJIGFtIApzdXJlIHlvdSBoYXZlIHNlZW4gcmVjZW50bHkgdnVsbmVyYWJpbGl0eS4uLgoKPiAK PiBGb3Igc29tZSAiZ2VuZXJpYyIgc3lzdGVtIEkgY2FuIHNheSB0aGF0IGl0IGlzIHByZXR0eSAi c2FmZSIgKGV4Y2VwdAo+IHRoYXQgcHJvYmxlbSB3aXRoIE9QLVRFRSByZXNvdXJjZXMpLgo+IAo+ Pj4KPj4+PiBXaGF0IEkgYW0gbm90IHN1cmUgeWV0LCBtYXliZSBiZWNhdXNlIG9mIG15IGxhY2sg b2Yga25vd2xlZGdlIGFyb3VuZCBPUC1URUUsCj4+Pj4gd2hvIGlzIGdvaW5nIHRvIHByb3RlY3Qg YSBUQSB0byBhY2Nlc3MgYWxsIHRoZSBOUyBtZW1vcnk/Cj4+PiBUQXMgaXMgcnVuaW5nIGluIFMt RUwwLiBJdCBjYW4ndCBjb250cm9sIE1NVS4gQmVmb3JlIGV2ZXJ5IFRBCj4+PiBpbnZvY2F0aW9u LCBPUC1URUUgc2V0dXBzIE1NVSBpbiBzdWNoIHdheSwgc28gVEEgc2VlcyBvbmx5IHNoYXJlZAo+ Pj4gbWVtb3J5IGFyZ3VtZW50cyBwYXNzZWQgYnkgY2xpZW50IGZvciB0aGlzIHBhcnRpY3VsYXIg aW52b2NhdGlvbi4KPj4KPj4gQ2FuIHlvdSBnaXZlIGEgYml0IG1vcmUgZGV0YWlscyBoZXJlPyBQ YXJ0aWN1bGFybHkgd2hhdCBpcyB0aGUgbGlmZSBvZiB0aGF0Cj4+IG1hcHBlZCByZWdpb24/IElz IGl0IGp1c3QgZm9yIGEgY29tbWFuZD8gSWYgbm90LCB3aG8gaXMgZ29pbmcgdG8gdW5tYXAgaXQK Pj4gYW5kIHdoZW4/Cj4gWWVzLCB0aGlzIG1hcCBpcyBjcmVhdGVkIGZvciBldmVyeSBjYWxsLiBU QSBjb2RlIGFuZCBkYXRhIGFyZSBtYXBwZWQgYWx3YXlzLAo+IG9idmlvdXNseS4KCldoZXJlIGRv ZXMgdGhlIFRBIGNvZGUgYW5kIGRhdGEgbGl2ZT8gSXMgaXQgaW4gc2VjdXJlIG9yIG5vbi1zZWN1 cmUgbWVtb3J5PwoKPiBCdXQgcGFyYW1ldGVycyBhcmUgbWFwcGVkIGV2ZXJ5IGNhbGwgYW5kIG9u bHkgbmVlZGVkIG9uZXMuCj4gRXhhbXBsZTogSSBoYXZlIHNoYXJlZCBidWZmZXJzIEEsIEIsIEMs IEQuCj4gCj4gMSkgSSBjYWxsIE9wZW5TZXNzaW9uKFRBX1VVSUQsIEEsIEIpLgo+ICAgICBUQSBz ZWVzIG9ubHkgYnVmZmVycyBBLCBCIChva2F5LCBhY3R1YWxseSBpdCBzZWVzIHdob2xlIHBhZ2Us IGJlY2F1c2UKPiAgICAgYnVmZmVyIGlzIG1hcHBlZCBmcm9tIHVzZXJzcGFjZSkuCj4gCj4gMikg SSBjYWxsIEludm9rZUNvbW1hbmQoU2Vzc2lvbiwgQ01EX0lELCBCLCBDKS4KPiAgICAgVEEgc2Vl cyBvbmx5IGJ1ZmZlcnMgQiAmIEMuCj4gCj4gMykgSSBjYWxsIEludm9rZUNvbW1hbmQoU2Vzc2lv biwgQ01EX0lELCBBLCBEKS4KPiAgICAgVEEgc2VlcyBvbmx5IGJ1ZmZlcnMgQSAmIEQuCj4gCj4g Tm90ZSwgdGhhdCBzdWNoIGJ1ZmZlcnMgYXJlIG5vdCBtYXBwZWQgYXQgT1AtVEVFIGFkZHJlc3Mg c3BhY2UgYXQgYWxsLgo+IFRoZXkgd2lsbCBiZSBtYXBwZWQgb25seSB0byBUQSBhZGRyZXNzIHNw YWNlLgoKVG8gY29uZmlybSwgd2hhdCB5b3UgYXJlIHNheWluZyBpcyBhcyBzb29uIGFzIGFueSBj YWxsIGlzIHJldHVybmVkIGJ5IApUQSwgdGhlIHJlZ2lvbiB3aWxsIGJlIHVubWFwcGVkIGZyb20g dGhlIFRBIGFkZHJlc3Mgc3BhY2U/Cgo+IAo+IFsuLi5dCj4+Pj4+Pj4+Pj4gVG8gYmUgY2xlYXIs IHRoaXMgc2VyaWVzIGRvbid0IGxvb2sgY29udHJvdmVyc2lhbCBhdCBsZWFzdCBmb3IgT1AtVEVF LiBXaGF0Cj4+Pj4+Pj4+Pj4gSSBhbSBtb3JlIGNvbmNlcm5lZCBpcyBhYm91dCBEb21VIHN1cHBv cnRzLgo+Pj4+Pj4+Pj4gWW91ciBjb25jZXJuIGlzIHRoYXQgcm9ndWUgRG9tVSBjYW4gY29tcHJv bWlzZSB3aG9sZSBzeXN0ZW0sIHJpZ2h0Pwo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBZZXMuIFlvdSBzZWVt IHRvIGFzc3VtZSB0aGF0IERvbVUgdXNpbmcgVEVFIHdpbGwgYWx3YXlzIGJlIHRydXN0ZWQsIEkg dGhpbmsKPj4+Pj4+Pj4gdGhpcyBpcyB0aGUgd3JvbmcgYXBwcm9hY2ggaWYgdGhlIHVzZSBpcyBh YmxlIHRvIGludGVyYWN0IGRpcmVjdGx5IHdpdGgKPj4+Pj4+Pj4gdGhvc2UgZ3Vlc3RzLiBTZWUg YWJvdmUuCj4+Pj4+Pj4gTm8sIEkgYW0gbm90IGFzc3VtaW5nIHRoYXQgRG9tVSB0aGF0IGNhbGxz IFRFRSBzaG91bGQgYmUgdHJ1c3RlZC4gV2h5IGRvIHlvdQo+Pj4+Pj4+IHRoaW5rIHNvPyBJdCBz aG91bGQgYmUgYWJsZSB0byB1c2UgVEVFIHNlcnZpY2VzLCBidXQgdGhpcyBkb2VzIG5vdCBtZWFu IHRoYXQKPj4+Pj4+PiBYRU4gc2hvdWxkIHRydXN0IGl0Lgo+Pj4+Pj4KPj4+Pj4+IEluIGEgcHJl dmlvdXMgYW5zd2VyIHlvdSBzYWlkOiAiU28sIGlmIHlvdSBkb24ndCB0cnVzdCB5b3VyIGd1ZXN0 IC0gZG9uJ3QKPj4+Pj4+IGxldCBpdCIuIEZvciBtZSwgdGhpcyBjbGVhcmx5IG1lYW5zIHlvdSBj b25zaWRlciB0aGF0IERvbVUgdXNpbmcgVEVFIGFyZQo+Pj4+Pj4gdHJ1c3RlZC4KPj4+Pj4+Cj4+ Pj4+PiBTbyBjYW4geW91IGNsYXJpZnkgYnkgd2hhdCB5b3UgbWVhbiBieSB0cnVzdCB0aGVuPwo+ Pj4+PiBXZWxsLi4uIEluIHJlYWwgd29ybGQgInRydXN0IiBpc24ndCBiaW5hcnkgb3B0aW9uLiBZ b3UgZG9uJ3Qgd2FudCB0bwo+Pj4+PiBhbGxvdyBhbGwgZG9tYWlucyB0byBhY2Nlc3MgVEVFLiBC cmVhY2hlZCBURUUgdXNlciBkb21haW4gZG9lc24ndAo+Pj4+PiBhdXRvbWF0aWNhbGx5IG1lYW4g dGhhdCB5b3VyIHdob2xlIHN5c3RlbSBpcyBjb21wcm9taXNlZC4gQnV0IHRoaXMKPj4+Pj4gY2Vy dGFpbmx5IGluY3JlYXNlcyBhdHRhY2sgc3VyZmFjZS4gU28gaXQgaXMgc2FmZXIgdG8gZ2l2ZSBU RUUgYWNjZXNzCj4+Pj4+IG9ubHkgdG8gdGhvc2UgZG9tYWlucywgd2hpY2ggcmVhbGx5IHJlcXVp cmUgaXQuIFlvdSBjYW4gY2FsbCB0aGVtCj4+Pj4+IHNsaWd0bHkgbW9yZSB0cnVzdGVkLCB0aGVu IG90aGVycy4KPj4+Pgo+Pj4+IERvIHlvdSBoYXZlIGFuIGV4YW1wbGUgb2YgZ3Vlc3QgeW91IHdv dWxkIHNsaWdodGx5IHRydXN0IG1vcmU/Cj4+PiBJIGhhdmUgYW4gZXhhbXBsZSBvZiBndWVzdCBJ IHdvdWxkIHRydXN0IGxlc3M6IGlmIEknbSBydW5uaW5nIHNlcnZlciwKPj4+IGFuZCBJJ20gc2Vs bGluZyB2aXJ0dWFsIG1hY2hpbmVzIG9uIHRoYXQgc2VydmVyLCBJIGRvbid0IHdhbnQgdG8gdGhl bQo+Pj4gdG8gYWNjZXNzIFRFRS4KPj4KPj4gTWFrZSBzZW5zZS4KPj4KPj4+Cj4+PiBJIHdpbGwg dHJ1c3Qgc2xpZ2h0bHkgbW9yZSB0byBteSBvd24gZ3Vlc3QuCj4+Cj4+IEkga2luZCBvZiBhZ3Jl ZSBpZiB0aGVyZSBhcmUgZWl0aGVyIG5vIGludGVyYWN0aW9uIHdpdGggdGhlIHVzZXIgb3IgdGhl IHVzZXIKPj4gaXMgbm90IGFibGUgdG8gZ2FpbiBwcml2aWxlZ2UgcGVybWlzc2lvbnMuCj4gT2th eSwgaWYgdXNlciBjYW4gZXhlY3V0ZSBhcmJpdHJhcnkgY29kZSBhdCBFTDEuLi4gRXZlbiB0aGVu IG5vdGhpbmcgYmFkCj4gd2lsbCBoYXBwZW4uIFRoZXkgbXVzdCBiZSBhYmxlIHRvIGhhY2sgbWVk aWF0b3IvaHlwZXJ2aXNvci9PUC1URUUgdG8gcmVhbHkKPiBnYWluIHByaXZpZWdzIGluIHN5c3Rl bS4KCk15IHdvcnJ5IGhlcmUgaXMgeW91IGJhc2UgdGhlIHRydXN0IG9uIE9QLVRFRSBhbmQgbm90 IG9ubHkgdGhlIApoeXBlcnZpc29yLiBBdCB0aGUgbW9tZW50IHdlIGhhZCB0byB0cnVzdCB0aGUg aGFyZHdhcmUgdG8gZG8gdGhlIHJpZ2h0IAp0aGluZyBhbmQgdGhlIHNvZnR3YXJlIGlzIG93bmVk IGJ5IFhlbi4KCk5vdyB5b3UgYXJlIHRlbGxpbmcgbWUsIHdlIGhhdmUgdGhpcyBURUUgcnVubmlu ZyBpbiBFTDMgYW5kIGhhdmUgdG8gCnRydXN0IGhpbSB0byBkbyB0aGUgaXNvbGF0aW9uIGJldHdl ZW4gZ3Vlc3RzLiBVbnRpbCB0aGUgbGFzdCAyIGUtbWFpbHMsIAppdCB3YXMgbm90IGNsZWFyIGZv ciBtZSBob3cgT1AtVEVFIGNvdWxkIGVuc3VyZSB0aGlzIGlzb2xhdGlvbi4KCkkgd291bGQgYWR2 aXNlIHRvIGV4cGxhaW4gYSBiaXQgbW9yZSBpbiB5b3VyIGNvdmVyIGxldHRlciBvZiB5b3VyIG5l eHQgCnZlcnNpb24gdGhlIGRlc2lnbiBvZiBPUC1URUUuIFRoaXMgd291bGQgaGVscCBwZW9wbGUg dG8gc2VlIGhvdyB0aGlzIGNhbiAKd29yayB3aXRoIHRoZSBoeXBlcnZpc29yIGFuZCBhbHNvIHVu ZGVyc3RhbmRpbmcgdGhlIGNvbnNlcXVlbmNlLi4uCgpDaGVlcnMsCgotLSAKSnVsaWVuIEdyYWxs CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2 ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVu Lm9yZy94ZW4tZGV2ZWwK