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: Mon, 23 Oct 2017 17:59:44 +0100 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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171020173705.GC11787@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 , Julien Grall Cc: nd@arm.com, Stefano Stabellini , xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org SGkgVm9sb2R5bXlyLAoKTGV0IG1lIGJlZ2luIHRoZSBlLW1haWwgd2l0aCBJIGFtIG5vdCB0b3Rh bGx5IGFkdmVyc2VkIHRvIHB1dHRpbmcgdGhlIApURUUgbWVkaWF0b3IgaW4gWGVuLiBBdCB0aGUg bW9tZW50LCBJIGFtIHRyeWluZyB0byB1bmRlcnN0YW5kIHRoZSB3aG9sZSAKcGljdHVyZS4KCk9u IDIwLzEwLzE3IDE4OjM3LCBWb2xvZHlteXIgQmFiY2h1ayB3cm90ZToKPiBPbiBGcmksIE9jdCAy MCwgMjAxNyBhdCAwMjoxMToxNFBNICswMTAwLCBKdWxpZW4gR3JhbGwgd3JvdGU6Cj4+IE9uIDE3 LzEwLzE3IDE2OjU5LCBWb2xvZHlteXIgQmFiY2h1ayB3cm90ZToKPj4+IE9uIE1vbiwgT2N0IDE2 LCAyMDE3IGF0IDAxOjAwOjIxUE0gKzAxMDAsIEp1bGllbiBHcmFsbCB3cm90ZToKPj4+PiBPbiAx MS8xMC8xNyAyMDowMSwgVm9sb2R5bXlyIEJhYmNodWsgd3JvdGU6Cj4+Pj4+IEkgd2FudCB0byBw cmVzZW50IFRFRSBtZWRpYXRvciwgdGhhdCB3YXMgZGlzY3Vzc2VkIGVhcmxpZXIgKFsxXSkuCj4+ Pj4+Cj4+Pj4+IEkgc2VsZWN0ZWQgZGVzaWduIHdpdGggYnVpbHQtaW4gbWVkaWF0b3JzLiBUaGlz IGlzIGVhc2llc3Qgd2F5LAo+Pj4+PiBpdCByZW1vdmVzIG1hbnkgcXVlc3Rpb25zLCBpdCBpcyBl YXN5IHRvIGltcGxlbWVudCBhbmQgbWFpbnRhaW4KPj4+Pj4gKGF0IGxlYXN0IEkgaG9wZSBzbyku Cj4+Pj4KPj4+PiBXZWxsLCBpdCBtYXkgY2xvc2UgdGhlIHRlY2huaWNhbCBxdWVzdGlvbnMgYnV0 IHN0aWxsIGxlYXZlIHRoZSBzZWN1cml0eQo+Pj4+IGltcGFjdCB1bmFuc3dlcmVkLiBJIHdvdWxk IGhhdmUgYXBwcmVjaWF0ZWQgYSBzdW1tYXJ5IG9mIGVhY2ggYXBwcm9hY2ggYW5kCj4+Pj4gZXhw bGFpbiB0aGUgcHJvcy9jb25zLgo+Pj4gVGhpcyBpcyB0aGUgbW9zdCBzZWN1cmUgd2F5IGFsc28u IEluIHRlcm1zIG9mIHRydXN0IGJldHdlZW4gZ3Vlc3RzIGFuZAo+Pj4gWGVuIGF0IGxlYXN0LiBJ J20gd29ya2VkIHdpdGggT1AtVEVFIGd1eXMgbW9zdGx5LCBzbyB3aGVuIEkgaGVhciBhYm91dAo+ Pj4gInNlY3VyaXR5IiwgbXkgZmlyc3QgdGhvdWdodHMgYXJlICJDYW4gVEVFIE9TIHRydXN0IHRv IFhFTiBhcyBhCj4+PiBtZWRpYXRvcj8gQ2FuIFRFRSBjbGllbnQgdHJ1c3QgdG8gWEVOIGFzIGEg bWVkaWF0b3I/Ii4gQW5kIHdpdGgKPj4+IGN1cnJlbnQgYXBwcm9hY2ggYW5zd2VyIGlzICJ5ZXMs IHRoZXkgY2FuLCBlc3BlY2lhbGx5IGlmIFhFTiBpcyBhIHBhcnQKPj4+IG9mIGEgY2hhaW4gb2Yg dHJ1c3QiLgo+Pj4KPj4+IEJ1dCB5b3UgcHJvYmFibHkgd2FudGVkIHRvIGFzayAiQ2FuIGd1ZXN0 IGNvbXByb21pc2Ugd2hvbGUgc3lzdGVtIGJ5Cj4+PiB1c2luZyBURUUgbWVkaWF0b3Igb3IgVEVF IE9TPyIuIFRoaXMgaXMgYW4gaW50ZXJlc3RpbmcgcXVlc3Rpb24uCj4+PiBGaXJzdCBsZXQncyBk aXNjdXNzIHJlcXVpcmVtZW50cyBmb3IgYSBURUUgbWVkaWF0b3IuIFNvLCBtZWRpYXRvcgo+Pj4g c2hvdWxkIGJlIGFibGUgdG86Cj4+Pgo+Pj4gICAqIFJlY2VpdmUgcmVxdWVzdCB0byBoYW5kbGUg dHJhcHBlZCBTTUMuIFRoaXMgcmVxdWVzdCBzaG91bGQgaW5jbHVkZQo+Pj4gICAgIHVzZXIgcmVn aXN0ZXJzICsgc29tZSBpbmZvcm1hdGlvbiBhYm91dCBndWVzdCAoYXQgbGVhc3QgZG9tYWluIGlk KS4KPj4+ICAgKiBQaW4vdW5waW4gZG9tYWluIG1lbW9yeSBwYWdlcy4KPj4+ICAgKiBNYXAgZG9t YWluIG1lbW9yeSBwYWdlcyBpbnRvIG93biBhZGRyZXNzIHNwYWNlIHdpdGggUlcgYWNjZXNzLgo+ Pj4gICAqIElzc3VlIHJlYWwgU01DIHRvIGEgVEVFLgo+Pj4gICAqIFJlY2VpdmUgaW5mb3JtYXRp b24gYWJvdXQgZ3Vlc3QgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uLgo+Pj4gICAqIChQcm9iYWJs eSkgaW5qZWN0IElSUXMgaW50byBhIGRvbWFpbiAodGhpcyBjYW4gYmUgbm90IGEgcmVxdWVzdGVy IGRvbWFpbiwKPj4+ICAgICBidXQgc29tZSBvdGhlciBkb21haW4sIHRoYXQgYWxzbyBjYWxsZWQg dG8gVEVFKS4KPj4+Cj4+PiBUaGlzIGlzIGEgbWluaW1hbCBsaXN0IG9mIHJlcXVpcmVtZW50cy4g SSB0aGluaywgdGhpcyBzaG91bGQgYmUgZW5vdWdoIHRvCj4+PiBpbXBsZW1lbnQgbWVkaWF0b3Ig Zm9yIE9QLVRFRS4gQnV0IEkgY2FuJ3Qgc2F5IGZvciBzdXJlIGZvciBvdGhlciBURUVzLgo+Pj4K Pj4+IExldCdzIGNvbnNpZGVyIHBvc3NpYmxlIGFwcHJvYWNoZXM6Cj4+Pgo+Pj4gMS4gTWVkaWF0 b3IgcmlnaHQgaW4gWEVOLCB3b3JrcyBhdCBFTDIuCj4+PiAgICAgUHJvczoKPj4+ICAgICAgKiBN ZWRpYXRvciBjYW4gdXNlIGFsbCBYRU4gQVBJcwo+Pj4gICAgICAqIEFzIG1lZGlhdG9yIHJlc2lk ZXMgaW4gWEVOLCBpdCBjYW4gYmUgY2hlY2tlZCB0b2dldGhlciB3aXRoIFhFTgo+Pj4gICAgICAg IGZvciBhIHZhbGlkaXR5ICh0cnVzdGVkIGJvb3QpLgo+Pj4gICAgICAqIE1lZGlhdG9yIGlzIGlu aXRpYWxpemVkIGJlZm9yZSBEb20wLiBEb20wIGNhbiB3b3JrIHdpdGggYSBURUUuCj4+PiAgICAg ICogTm8gZXh0cmEgY29udGV4dCBzd2l0Y2hlcywgbm8gc3BlY2lhbCBBQkkgYmV0d2VlbiBYRU4g YW5kIG1lZGlhdG9yLgo+Pj4KPj4+ICAgICBDb25zOgo+Pj4gICAgICAqIEJlY2F1c2UgaXQgbGl2 ZXMgaW4gRUwyLCBpdCBjYW4gY29tcHJvbWlzZSB3aG9sZSBoeXBlcnZpc29yLAo+Pj4gICAgICAg IGlmIHRoZXJlIGlzIGEgc2VjdXJpdHkgYnVnIGluIG1lZGlhdG9yIGNvZGUuCj4+PiAgICAgICog Tm8gc3VwcG9ydCBmb3IgY2xvc2VkIHNvdXJjZSBURUVzLgo+Pgo+PiBBbm90aGVyIGNvbnMgaXMg eW91IGFzc3VtZSBURUUgQVBJIGlzIGZ1bGx5IHN0YWJsZSBhbmQgd2lsbCBub3QgY2hhbmdlLgo+ PiBJbWFnaW5lIGEgbmV3IGZ1bmN0aW9uIGlzIGFkZGVkLCBvciBhIHZlbmRvciBkZWNpZGVkIHRv IGhlbmNlIHdpdGggYSBuZXcgc2V0Cj4+IG9mIEFQSS4gSG93IHdpbGwgeW91IGtub3cgWGVuIGlz IHNhZmUgdG8gdXNlIGl0Pwo+IFdpdGggd2hpdGVsaXN0aW5nLCBhcyB5b3UgY29ycmVjdGx5IHN1 Z2dlc3RlZCBiZWxvdy4gWEVOIHdpbGwgcHJvY2Vzcwo+IG9ubHkga25vdyByZXF1ZXN0cy4gQW55 dGhpbmcgdGhhdCBsb29rcyB1bmZpbWlsaWFyIHNob3VsZCBiZSByZWplY3RlZC4KCkxldCdzIGlt YWdpbmUgdGhlIGd1ZXN0IGlzIHJ1bm5pbmcgb24gYSBwbGF0Zm9ybSB3aXRoIGEgbmV3ZXIgdmVy c2lvbiBvZiAKVEVFLiBUaGlzIGd1ZXN0IHdpbGwgcHJvYmUgdGhlIHZlcnNpb24gb2YgT1AtVEVF IGFuZCBrbm93cyB0aGUgbmV3IApmdW5jdGlvbiBpcyBwcmVzZW50LgoKSWYgYXMgeW91IHNhaWQg WGVuIGlzIHVzaW5nIGEgd2hpdGVsaXN0LCB0aGlzIG1lYW5zIHRoZSBoeXBlcnZpc29yIHdpbGwg CnJldHVybiB1bmltcGxlbWVudGVkLgoKSG93IGRvIHlvdSBleHBlY3QgdGhlIGd1ZXN0IHRvIGJl aGF2ZSBpbiB0aGF0IGNhc2U/CgpOb3RlIHRoYXQgSSB0aGluayBhIHdoaXRlbGlzdCBpcyBhIGdv b2QgaWRlYSwgYnV0IEkgdGhpbmsgd2UgbmVlZCB0byAKdGhpbmsgYSBiaXQgbW9yZSBhYm91dCB0 aGUgaW1wbGljYXRpb24uCgo+IAo+PiBJZiBpdCBpcyBub3Qgc2FmZSwgdGhpcyBtZWFucyB5b3Ug aGF2ZSBhIHdoaXRlbGlzdCBzb2x1dGlvbiBhbmQgdGhlcmVmb3JlCj4+IHRpZSBYZW4gdG8gYSBz cGVjaWZpYyBPUC1URUUgdmVyc2lvbi4gU28gaWYgeW91IG5lZWQgdG8gdXNlIGEgbmV3IGZ1bmN0 aW9uCj4+IHlvdSB3b3VsZCBuZWVkIHRvIHVwZ3JhZGUgWGVuIG1ha2luZyB0aGUgY29kZSBvZiB1 c2luZyBuZXcgdmVyc2lvbgo+PiBwb3RlbnRpYWxseSBoaWdoLgo+IFllcywgYW55IEFCSSBjaGFu Z2UgYmV0d2VlbiBPUC1URUUgYW5kIGl0cyBjbGllbnRzIHdpbGwgcmVxdWlyZSBtZWRpYXRvcgo+ IHVwZ3JhZGUuIEx1Y2tpbGx5LCBPUC1URUUgbWFpbnRhaW5zIEFCSSBiYWNrd2FyZC1jb21wYXRp YmxlLCBzbyBpZiB5b3UnbGwKPiBpbnN0YWxsIG9sZCBYRU4gYW5kIG5ldyBPUC1URUUsIE9QLVRF RSB3aWxsIHVzZSBvbmx5IHRoYXQgc3Vic2V0IG9mIEFCSSwKPiB3aGljaCBpcyBrbm93biB0byBY RU4uCj4gCj4+IEFsc28sIGNvcnJlY3QgbWUgaWYgSSBhbSB3cm9uZywgT1AtVEVFIGlzIGEgQlNE IDItQ2xhdXNlLiBUaGlzIG1lYW5zIHlvdQo+PiBpbXBvc2UgYW55b25lIHdhbnRlZCB0byBtb2Rp ZnkgT1AtVEVFIGZvciB0aGVpciBvd24gcHVycG9zZSBjYW4gbWFrZSBhCj4+IGNsb3NlZCB2ZXJz aW9uIG9mIHRoZSBURUUuIEJ1dCBpZiB5b3UgbmVlZCB0byBpbnRyb3NwZWN0L3doaXRlbGlzdCBj YWxsLCB5b3UKPj4gaW1wb3NlIHRoZSB2ZW5kb3IgdG8gZXhwb3NlIHRoZWlyIEFQSS4KPiBCYXNp Y2FsbHkgeWVzLiBJcyB0aGlzIGJhZD8gT1AtVEVFIGRyaXZlciBpbiBMaW51eCBpcyBsaWNlbnNl ZCB1bmRlciBHUEwgdjIuCj4gSWYgdmVuZG9yIG1vZGlmaWVzIGludGVyZmFjZSBiZXR3ZWVuIE9Q LVRFRSBhbmQgTGludXgsIHRoZXkgYW55d2F5cyBvYmxpZ3VlZAo+IHRvIGV4cG9zZSBBUEkuCgpQ YXJkb24gbWUgZm9yIHBvdGVudGlhbCBzdHVwaWQgcXVlc3Rpb25zLCBteSBrbm93bGVkZ2Ugb2Yg T1AtVEVFIGlzIGxpbWl0ZWQuCgpNeSB1bmRlcnN0YW5kaW5nIGlzIHRoZSBPUC1URUUgd2lsbCBw cm92aWRlIGEgZ2VuZXJpYyB3YXkgdG8gYWNjZXNzIApkaWZmZXJlbnQgVHJ1c3RlZCBBcHBsaWNh dGlvbi4gV2hpbGUgT1AtVEVFIEFQSSBtYXkgYmUgZ2VuZXJpYywgdGhlIFRBIApBUEkgaXMgY3Vz dG9tLiBBRkFJQ1QgdGhlIGxhdHRlciBpcyBub3QgcGFydCBvZiBMaW51eCBkcml2ZXIuCgpTbyBo ZXJlIG15IHF1ZXN0aW9uczoKCTEpIEFyZSB5b3UgcGxhbm5pbmcgYWxsb3cgYWxsIHRoZSBndWVz dHMgdG8gYWNjZXNzIGV2ZXJ5IFRydXN0ZWQgCkFwcGxpY2F0aW9ucz8KCTIpIFdpbGwgeW91IGV2 ZXIgbmVlZCB0byBpbnRyb3NwZWN0IHRob3NlIG1lc3NhZ2VzPwoKPj4+Cj4+PiAyLiBNZWRpYXRv ciBpbiBhIHN0dWJkb21haW4uIFdvcmtzIGF0IEVMMS4KPj4+ICAgICBQcm9zOgo+Pj4gICAgICAq IE1lZGlhdG9yIGlzIGlzb2xhdGVkIGZyb20gaHlwZXJ2aXNvciAoYnV0IGl0IHN0aWxsIGNhbiBk byBwb3RlbnRpYWxseQo+Pj4gICAgICAgIGRhbmdlcm91cyB0aGluZ3MgbGlrZSBtYXBwaW5nIGRv bWFpbiBtZW1vcnkgb3IgcGluaW5nIHBhZ2VzKS4KPj4+ICAgICAgKiBPbmUgY2FuIGxlZ2FsbHkg Y3JlYXRlIGFuZCB1c2UgbWVkaWF0b3IgZm9yIGEgY2xvc2VkLXNvdXJjZSBURUUuCj4+Cj4+ICAg ICAgICAgKiBFYXNpZXIgdG8gdXBncmFkZSB0byBhIG5ldyB2ZXJzaW9uIG9mIE9QLVRFRS4KPiBZ ZXMsIHRoaXMgaXMgdHJ1ZS4gQnV0IHdoYXQgYWJvdXQgaW50ZXJmYWNlIGJldHdlZW4gWEVOIGFu ZCBtZWRpYXRvcj8KPiBUaGlzIGlzIGEgbmV3IGVudGl0eSB0aGF0IHNob3VsZCBiZSBtYWludGFp bmVkLiBXaWxsIEkgYWJlIGFibGUgdG8gdXNlCj4gbmV3IFhFTiB3aXRoIG9sZCBtZWRpYXRvcj8g T3IgbmV3IG1lZGlhdG9yIHdpdGggb2xkIFhFTj8KCldoeSB3b3VsZCB5b3UgbmVlZCB0byBzcGVj aWZpYyBpbnRlcmZhY2UgZm9yIHRoZSBtZWRpYXRvcj8gKHNlZSBtb3JlIGJlbG93KQoKPiAKPj4+ PiAgICAgIENvbnM6Cj4+PiAgICAgICogT3ZlcmhlYWQgaW4gWEVOPC0+TWVkaWF0b3IgY29tbXVu aWNhdGlvbi4KPj4+ICAgICAgKiBYRU4gbmVlZHMgdG8gYmUgbW9kaWZpZWQgdG8gYm9vdCBtZWRp YXRvciBkb21haW4gYmVmb3JlIERvbTAuCj4+Cj4+IElzIGl0IGEgcmVhbGx5IGNvbnM/IEluIHRo ZSBwYXN0LCB3ZSBoYWQgZGlzY3Vzc2lvbiB0byBhbGxvdyBYZW4gY3JlYXRpbmcKPj4gbXVsdGlw bGUgZG9tYWluLCBhdm9pZGluZyB0aGUgb3ZlcmhlYWQgb2YgRG9tMC4gVGhpcyBjb3VsZCBhbHNv IGJlbmVmaXRzCj4+IGhlcmUuCj4gQXMgSSB1bmRlcnN0YW5kLCB0aGlzIGlzIGEgc2lnbmlmaWNh bnQgY2hhbmdlIGluIFhFTi4gV2hhdCBhcmUgdGhlIGNoYW5jZXMsCj4gdGhhdCBjb21tdW5pdHkg d2lsbCBhY2NlcHQgdGhpcyBjaGFuZ2U/IEFzIEkgY2FuIHNlZSwgaW1tZWRpYXRlIGJlbmVmaXQK PiBvZiB0aGlzIGlzIG9ubHkgVEVFIG1lZGlhdG9yIHN1cHBvcnQuIExvb2tzIGxpa2Ugbm8gb25l IGV4Y2VwdCB1cwo+IGludGVyZXN0ZWQgaW4gdGhpcyB0b3BpYy4KClRoZSBHU09DIHByb2plY3Qg d2FzIG5vdCBhZGRlZCBiZWNhdXNlIG9mIFRFRSBtZWRpYXRvci4gV2UgaGFkIGNvbXBhbmllcyAK c2hvd2luZyBpbnRlcmVzdCB0byBzdGFydCBtdWx0aXBsZSBkb21haW5zIGF0IHRoZSBzYW1lIHRp bWUuIFRoaXMgd291bGQgCnNpZ25pZmljYW50bHkgc2hyaW5rIGRvd24gdGhlIGJvb3QgdGltZSBv ZiB0aGUgd2hvbGUgcGxhdGZvcm0uCgo+IAo+IEJUVywgSSBjaGVja2VkICJYZW4gb24gQVJNOiBj cmVhdGUgbXVsdGlwbGUgZ3Vlc3RzIGZyb20gZGV2aWNlCj4gdHJlZSIgYXQgWzFdLiBUaGlzIGlz IGNsb3NlLCB0byB3aGF0IHdlIG5lZWQsIGJ1dCBub3QgZXhhY3RseS4gWW91IHNlZSwKPiBURUUg bWVkaWF0b3Igc2hvdWxkIGJlIGNyZWF0ZWQgKmJlZm9yZSogRG9tMC4gU28gYWN0dWFsbHkgVEVF IG1lZGlhdG9yCj4gd2lsbCByZWNlaXZlIGRvbWlkIDAuIEkgc3VzcGVjdCB0aGF0IHRoaXMgb25s eSBjaGFuZ2Ugd2lsbCBicmVhawo+IG1hbnkgdGhpbmdzLgoKQ2FuIHlvdSBwbGVhc2UgZ2l2ZSBl eGFtcGxlPwoKVGVjaG5pY2FsbHkgbm9uZSBvZiB0aGUgaHlwZXJ2aXNvciwgTGludXggYW5kIHRo ZSB0b29sc3RhY2sgc2hvdWxkIHJlbHkgCm9uIGRvbTAgdG8gYmUgZG9taWQgMC4KCkFGQUlLLCB0 aGUgaHlwZXJ2aXNvciBhbmQgTGludXggYXJlIGZyZWUgb2YgdGhlbS4gSXQgbWlnaHQgYmUgcG9z c2libGUgCnRvIGhhdmUgZmV3IGhhcmRjb2RlZCBpbiB0aGUgdG9vbHN0YWNrLCBidXQgdGhleSBz aG91bGQgcmVhbGx5IGRpc2FwcGVhci4KCkhvd2V2ZXIsIEkgY2FuJ3Qgc2VlIHdoeSB5b3UgcmVx dWlyZSB0aGUgbWVkaWF0b3IgdG8gdXNlIGRvbWlkIDAuIFlvdSAKY291bGQgZm9yIGV4YW1wbGUg a2VlcCB0aGUgaGFyZHdhcmUgZG9tYWluIHBhdXNlZCB1bnRpbCB0aGUgbWVkaWF0b3IgaGFzIApz dGFydGVkLgoKWy4uLl0KCj4gCj4+Pgo+Pj4gQW5kIHllcywgaXQgc2VlbXMgb2J2aW91cywgYnV0 IEkgd2FudCB0byBzYXkgdGhpcyBleHBsaWNpdGx5OiBnZW5lcmljCj4+PiBURUUgbWVkaWF0b3Ig ZnJhbWV3b3JrIHNob3VsZCBhbmQgd2lsbCB1c2UgWFNNIHRvIGNvbnRyb2wgd2hpY2ggZG9tYWlu Cj4+PiBjYW4gd29yayB3aXRoIFRFRS4gU28sIGlmIHlvdSBkb24ndCB0cnVzdCB5b3VyIGd1ZXN0 IC0gZG9uJ3QgbGV0IGl0Cj4+PiB0byBjYWxsIFRFRSBhdCBhbGwuCj4+Cj4+IENvcnJlY3QgbWUg aWYgSSBhbSB3cm9uZy4gVEVFIGNvdWxkIGJlIHVzZWQgYnkgQW5kcm9pZCBndWVzdCB3aGljaCBs aWtlbHkKPj4gcnVuIHRoZSB1c2VyIGFwcHMuLi4gcmlnaHQ/IFNvIGFyZSB5b3Ugc2F5aW5nIHlv dSBmdWxseSB0cnVzdCB0aGF0IGd1ZXN0IGFuZAo+PiBvYnZpb3VzbHkgdGhlIHVzZXIgaW5zdGFs bGluZyByb2d1ZSBhcHA/Cj4gSSBkb24ndCB0aGluayB0aGF0IGFwcCBkb3dubG9hZGVkIGZyb20g UGxheSBNYXJnZXQgY2FuIGFjY2VzcyBPUC1URUUgZGlyZWN0bHkuCj4gT1AtVEVFIGNhbiBiZSB1 c2VkIGJ5IEFuZHJvaWQgaXRzZWxmIGFzIGEga2V5IHN0b3JhZ2Ugb3IgdG8gYWNjZXNzIHRvIGEg U0UsCj4gZm9yIGV4YW1wbGUuIEJ1dCAzcmQgYXBwIHRoYXQgaXNzdWVzIFRFRSBjYWxscy4uLiBJ IGRvbid0IHRoaW5rIHNvLgoKWW91IGRpZG4ndCBnZXQgbXkgcG9pbnQgaGVyZS4gVGhhdCByb2d1 ZSBhcHAgbWF5IGJlIGFibGUgdG8gYnJlYWsgaW50byAKa2VybmVsIHZpYSBhbiBleHBsb2l0IG9y IGhhdmUgZW5vdWdoIHByaXZpbGVnZSB0byBicmVhayB0aGUgZ3Vlc3QuIFdobyAKa25vd3Mgd2hh dCBpdCB3aWxsIGJlIGFibGUgdG8gZG8gYWZ0ZXIuLi4KClRoZSB3aG9sZSBwb2ludCBvZiB1c2lu ZyBhbiBoeXBlcnZpc29yIGlzIHRvIGlzb2xhdGUgZ3Vlc3QgZnJvbSBlYWNoIApvdGhlci4gU28g d2hhdCBpcyB0aGUgaXNvbGF0aW9uIG1vZGVsIHdpdGggT1AtVEVFIGFuZCB0aGUgbWVkaWF0b3I/ Cgo+IAo+Pj4gVGhpcyBmZWF0dXJlIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGlzIFJGQyBvbmx5 IGJlY2F1c2UKPj4+IGN1cnJlbnRseSBvbmx5IERvbTAgY2FsbHMgYXJlIHN1cHBvcnRlZC4KPj4+ Cj4+Pj4gVGhpcyB3b3VsZCBoZWxwIHRvIHVuZGVyc3RhbmQgdGhhdCBtYXliZSBpdCBpcyBhbiBl YXN5IHdheSBidXQgYWxzbyBzdGlsbAo+Pj4+IHNlY3VyZS4uLgo+Pj4gSW4gcHJldmlvdXMgZGlz Y3Vzc2lvbiB3ZSBjb25zaWRlcmVkIG9ubHkgdHdvIHZhcmlhbnRzOiBpbiBYRU4gb3Igb3V0c2lk ZQo+Pj4gWEVOLiBTdHViZG9tYWluIGFwcHJvYWNoIGxvb2tzIG1vcmUgc2VjdXJlLCBidXQgSSdt IG5vdCBzdXJlIHRoYXQgaXQgaXMgdHJ1ZS4KPj4+IFN1Y2ggc3R1YmRvbWFpbiB3aWxsIG5lZWQg YWNjZXNzIHRvIGFsbCBndWVzdHMgbWVtb3J5LiBJZiB5b3UgbWFuYWdlZCB0bwo+Pj4gZ2FpbiBj b250cm9sIG9uIG1lZGlhdG9yIHN0dWJkb21haW4sIHlvdSBjYW4gZG8gYW55dGhpbmcgeW91IHdh bnQgd2l0aCBhbGwKPj4+IGd1ZXN0cy4KPj4KPj4gVGhhdCdzIHNsaWdodGx5IHVudHJ1ZS4gVGhl IHN0dWJkb21haW4gd2lsbCBvbmx5IGJlIGFibGUgdG8gbWVzcyB3aXRoCj4+IGRvbWFpbnMgdXNp bmcgVEVFLgo+IFllcywgdGhpcyBpcyBtb3JlIHN0cmljdC4gVGhlbiBlaXRoZXIgeW91IGFyZSBu b3QgYWxsb3dpbmcgeW91ciBwcml2aWxlZ2VkCj4gZG9tYWluIHRvIHVzZSBURUUsIG9yIHlvdXIg c3lzdGVtIG1heSBiZSBjb21wcm9taXNlZCBhbnl3YXlzLgoKQ2FuIHlvdSBnaXZlIGFuIGV4YW1w bGUgb2YgcHJpdmlsZWdlIGRvbWFpbiBmb3IgeW91PyBEbyB5b3UgY29uc2lkZXIgCkFuZHJvaWQg YSBwcml2aWxlZ2UgZG9tYWluPwoKPj4+Cj4+Pj4gVG8gYmUgY2xlYXIsIHRoaXMgc2VyaWVzIGRv bid0IGxvb2sgY29udHJvdmVyc2lhbCBhdCBsZWFzdCBmb3IgT1AtVEVFLiBXaGF0Cj4+Pj4gSSBh bSBtb3JlIGNvbmNlcm5lZCBpcyBhYm91dCBEb21VIHN1cHBvcnRzLgo+Pj4gWW91ciBjb25jZXJu IGlzIHRoYXQgcm9ndWUgRG9tVSBjYW4gY29tcHJvbWlzZSB3aG9sZSBzeXN0ZW0sIHJpZ2h0Pwo+ Pgo+PiBZZXMuIFlvdSBzZWVtIHRvIGFzc3VtZSB0aGF0IERvbVUgdXNpbmcgVEVFIHdpbGwgYWx3 YXlzIGJlIHRydXN0ZWQsIEkgdGhpbmsKPj4gdGhpcyBpcyB0aGUgd3JvbmcgYXBwcm9hY2ggaWYg dGhlIHVzZSBpcyBhYmxlIHRvIGludGVyYWN0IGRpcmVjdGx5IHdpdGgKPj4gdGhvc2UgZ3Vlc3Rz LiBTZWUgYWJvdmUuCj4gTm8sIEkgYW0gbm90IGFzc3VtaW5nIHRoYXQgRG9tVSB0aGF0IGNhbGxz IFRFRSBzaG91bGQgYmUgdHJ1c3RlZC4gV2h5IGRvIHlvdQo+IHRoaW5rIHNvPyBJdCBzaG91bGQg YmUgYWJsZSB0byB1c2UgVEVFIHNlcnZpY2VzLCBidXQgdGhpcyBkb2VzIG5vdCBtZWFuIHRoYXQK PiBYRU4gc2hvdWxkIHRydXN0IGl0LgoKSW4gYSBwcmV2aW91cyBhbnN3ZXIgeW91IHNhaWQ6ICJT bywgaWYgeW91IGRvbid0IHRydXN0IHlvdXIgZ3Vlc3QgLSAKZG9uJ3QgbGV0IGl0Ii4gRm9yIG1l LCB0aGlzIGNsZWFybHkgbWVhbnMgeW91IGNvbnNpZGVyIHRoYXQgRG9tVSB1c2luZyAKVEVFIGFy ZSB0cnVzdGVkLgoKU28gY2FuIHlvdSBjbGFyaWZ5IGJ5IHdoYXQgeW91IG1lYW4gYnkgdHJ1c3Qg dGhlbj8KCj4gRXZlbiBub3csIFhFTiBwcm9jZXNzZXMgcmVxdWVzdHMgZnJvbSBEb21VcyB3aXRo b3V0Cj4gdHJ1c3RpbmcgdGhlbS4gV2h5IGRvIHlvdSB0aGluaywgdGhhdCBURUUgbWVkaWF0b3Ig dXNhZ2Ugd2lsbCBkaWZmZXI/CgpJIGd1ZXNzIHlvdSBhcmUgY29tcGFyaW5nIHdpdGggdkdJQyBh bmQgUEwwMTE/IElITU8sIHRoZSBtYWluIGRpZmZlcmVuY2UgCmlzIFhlbiBpcyB0YWtpbmcgY2Fy ZSBhbG9uZSBvZiB0aGUgaXNvbGF0aW9uIGJldHdlZW4gZ3Vlc3QuIEhlcmUgaW4gdGhlIApURUUg Y2FzZSwgeW91IHJlbHkgb24gYSBjb21iaW5hdGlvbiBvZiBib3RoIFRFRSBhbmQgWGVuIHRvIGRv IHRoZSBpc29sYXRpb24uCgo+IAo+IExvb2ssIEkgZ2VuZXJhbGx5IG5vdCBhZ2FpbnN0IGlkZWEg b2YgVEVFIG1lZGlhdG9yIGluIHN0dWJkb21zLiBCdXQgdGhpcwo+IGFwcHJvYWNoIHJlcXVpcmUg bWFueSBjaGFuZ2VzIGluIGV4aXN0aW5nIFhFTiBjb2RlOgo+IAo+IDEuIExvYWQgZG9tYWlucyBi ZWZvcmUgRG9tMC4KPiAKPiAyLiBBZGQgc3BlY2lhbCBBUEkgZm9yIG1lZGlhdG9yLiBPciBhbHRl ciBleGlzdGluZyBvbmVzLiBZb3UgY2FuJ3QgdXNlCj4gICAgIGV4aXN0aW5nIEFQSXMgYXMgaXQs IGJlY2F1c2UgeW91IG5lZWQgdG8gZW5mb3JjZSBzdHJpY3RlciBYU00gcnVsZXMKPiAgICAgb24g dGhlbS4KCk1pbmQgZ2l2aW5nIG1vcmUgZXhwbGFuYXRpb24uLi4uPyBYZW4gaGFzIGEgZGVmYXVs dCBwb2xpY3kgZm9yIFhTTSBhbmQgCmluZGVlZCBtYXkgbm90IGZpdCB5b3VyIHVzZSBjYXNlLiBC dXQgeW91IGNhbiB3cml0ZSB5b3VyIG93biBwb2xpY3kgYW5kIApsb2FkIGl0LgoKPiAKPiAzLiBD aGFuZ2VzIGluIHNjaGVkdWxpbmcgdG8gYWxsb3cgVEVFIG1lZGlhdG9yIHVzZSBjcmVkaXRzL3Ns aWNlcyBvZgo+ICAgICBjYWxsaW5nIGd1ZXN0Lgo+IAo+IDQuIFN1cHBvcnQgYm9pbGVycGxhdGUg Y29kZSBpbiBzdHViZG9tLiBZb3Uga25vdywgeW91IGNhbid0IHNpbXBseQo+ICAgICB3cml0ZSBt ZWRpYXRvciBpbiBzdHViZG9tLiBZb3UgbmVlZCBhIGtlcm5lbC4gWW91IG5lZWQgdG8KPiAgICAg bWFpbnRhaW4gaXQuCgpXZWxsLCBpbiBhIHdheSBvciBhbm90aGVyIHNvbWVvbmUgd2lsbCBoYXZl IHRvIG1haW50YWluIHRoZSBtZWRpYXRvci4uLiAKVGhlIGtlcm5lbCBkb2VzIG5vdCBuZWVkIHRv IGJlIHNwZWNpZmljIHRvIFRFRSwgaXQgY291bGQgYmUgYSB1bmlrZXJuZWwuCgpBbmQgYmVmb3Jl IHlvdSBzYXkgYWdhaW4gbm8tb25lIGluIHRoZSBjb21tdW5pdHkgc2VlbSB0byBiZSBpbnRlcmVz dGVkLiAKSSBzaG91bGQgcmVtaW5kIHlvdSB0aGF0IEFybSBpcyB3b3JraW5nIG9uIGl0IChzZWUg ZGV2ZWxvcG1lbnQgdXBkYXRlKS4KCj4gCj4gVGhpcyBpcyBhIGxvdCBvZiBhIHdvcmsuIEl0IHJl cXVpcmVzIGNoYW5nZXMgaW4gZ2VuZXJpYyBwYXJ0cyBvZiBYRU4uCj4gSSBmZWFyIGl0IHdpbGwg YmUgdmVyeSBoYXJkIHRvIHVwc3RyZWFtIHN1Y2ggY2hhbmdlcywgYmVjYXVzZSBubyBvbmUKPiBz ZWVzIGFuIGltbWVkaWF0ZSB2YWx1ZSBpbiB0aGVtLiBIb3cgZG8geW91IHRoaW5rLCB3aGF0IGFy ZSBteSBjaGFuY2VzCj4gdG8gdXBzdHJlYW0gdGhpcz8KCkl0IGlzIGZhaXJseSBhbm5veWluZyB0 byBzZWUgeW91IGp1c3RpZnlpbmcgYmFjayBtb3N0IG9mIHRoaXMgdGhyZWFkIAp3aXRoICJubyBv bmUgc2VlcyBhbiBpbW1lZGlhdGUgdmFsdWUgaW4gdGhlbSIuCgpJIGFtIG5vdCB0aGUgb25seSBt YWludGFpbmVycyBpbiBYZW4sIHNvIGVmZmVjdGl2ZWx5IGNhbid0IHByb21pc2UgCndoZXRoZXIg aXQgaXMgZ29pbmcgdG8gYmUgdXBzdHJlYW1lZC4gQnV0IEkgYmVsaWV2ZSB0aGUgY29tbXVuaXR5 IGhhcyAKYmVlbiB2ZXJ5IHN1cHBvcnRpdmUgc28gZmFyLCBhIGxvdCBvZiBkaXNjdXNzaW9ucyBo YXBwZW5lZCAoc2VlIFsyXSkgCmJlY2F1c2Ugb2YgdGhlIE9QLVRFRSBzdXBwb3J0LiBTbyB3aGF0 IG1vcmUgZG8geW91IGV4cGVjdCBmcm9tIHVzPwoKPiAKPiBBcHByb2FjaCBpbiB0aGlzIFJGQyBp cyBtdWNoIHNpbXBsZXIuIEZldyBob29rcyBpbiBhcmNoIGNvZGUgKyBhZGRpdGlvbmFsCj4gc3Vi c3lzdGVtLCB3aGljaCBjYW4gYmUgZWFzaWx5IHR1cm5lZCBvZmYuCgpTdGVmYW5vIGRvIHlvdSBo YXZlIGFueSBvcGluaW9uIG9uIHRoaXMgZGlzY3Vzc2lvbj8KClJlZ2FyZHMsCgo+IAo+IFsxXSBo dHRwczovL3dpa2kueGVucHJvamVjdC5vcmcvd2lraS9PdXRyZWFjaF9Qcm9ncmFtX1Byb2plY3Rz CgpbMl0gCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvYXJjaGl2ZXMvaHRtbC94ZW4tZGV2 ZWwvMjAxNy0wNS9tc2cwMTkzMS5odG1sCgotLSAKSnVsaWVuIEdyYWxsCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0 Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK