From mboxrd@z Thu Jan 1 00:00:00 1970 From: Volodymyr Babchuk Subject: Re: [PATCH v2 04/13] optee: add OP-TEE mediator skeleton Date: Mon, 3 Sep 2018 20:55:39 +0300 Message-ID: References: <1535993677-20816-1-git-send-email-volodymyr_babchuk@epam.com> <1535993677-20816-5-git-send-email-volodymyr_babchuk@epam.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fwt4u-0006jO-Eh for xen-devel@lists.xenproject.org; Mon, 03 Sep 2018 17:55:56 +0000 In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Julien Grall , xen-devel@lists.xenproject.org, xen-devel@lists.xen.org Cc: tee-dev@lists.linaro.org, Stefano Stabellini List-Id: xen-devel@lists.xenproject.org SGkgSnVsaWVuLAoKT24gMDMuMDkuMTggMjA6MzgsIEp1bGllbiBHcmFsbCB3cm90ZToKPiBIaSBW b2xvZHlteXIsCj4gCj4gT24gMDMvMDkvMTggMTc6NTQsIFZvbG9keW15ciBCYWJjaHVrIHdyb3Rl Ogo+PiBBZGQgdmVyeSBiYXNpYyBPUC1URUUgbWVkaWF0b3IuIEl0IGNhbiBwcm9iZSBmb3IgT1At VEVFIHByZXNlbmNlLAo+PiB0ZWxsIGl0IGFib3V0IGRvbWFpbiBjcmVhdGlvbi9kZXN0dWN0aW9u IGFuZCBmb3J3YXJkIGFsbCBrbm93bgo+IAo+IHMvZGVzdHVjdGlvbi9kZXN0cnVjdGlvbi8KPiAK Pj4gY2FsbHMuCj4+Cj4+IFRoaXMgaXMgYWxsIHdoYXQgaXMgbmVlZGVkIGZvciBEb20wIHRvIHdv cmsgd2l0aCBPUC1URUUgYXMgbG9uZwo+PiBhcyBEb20wIHNoYXJlcyAxOjEgbWFwcGVkIHBhZ2Vz IHdpdGggT1AtVEVFLiBBbnkgYXR0ZW1wdCB0byBjYWxsCj4+IE9QLVRFRSBmcm9tIERvbVUgd2ls bCBmYWlsIGFuZCBjYW4gbGVhZCB0byBzcGVjdGFjdWxhciByZXN1bHRzLgo+IAo+IFNoYWxsIHdl IGV4cGVjdCBmaXJld29ya3M/IDopLgpJIHRyaWVkIGNvdXBsZSBvZiB0aW1lLCBidXQgd2l0aCBu byBzdWNjZXNzIDopCgo+IEFueXdheSwgSSB0aGluayB0aGlzIGlzIGEgY2FsbCBmb3IgZm9yYmlk ZGluZyBEb21VIGFjY2VzcyB1bnRpbCBpdCBpcyAKPiBzdXBwb3J0ZWQuIFRoaXMgYWxzbyBoYXMg dGhlIGJlbmVmaXRzIHRvIGFsbG93IG1lcmdpbmcgRG9tMCBzdXBwb3J0IGZvciAKPiBPUC1URUUg d2l0aG91dCB0aGUgcmVzdC4KU29tZSB0aW1lIGFnbyB5b3Ugc2FpZCB0aGF0IEkgY2FuJ3QgYmUg c3VyZSB0aGF0IERvbTAgaXMgMToxIG1hcHBlZCwgCmJlY2F1c2Ugb2YgZ3JhbnQgcmVmcy4gU28s IGFjdHVhbGx5LCBhbnkgYWNjZXNzIHNob3VsZCBiZSBmb3JiaWRkZW4uIEkgCmNhbiBvbWl0CgpS RUdJU1RFUl9URUVfTUVESUFUT1Iob3B0ZWUsICJPUC1URUUiLCAmb3B0ZWVfb3BzKTsKCnRpbGwg dGhlIHZlcnkgbGFzdCBwYXRjaCBpbiB0aGUgc2VyaWVzLgoKQnV0IHRoZW4gaXQgd291bGQgbm90 IGNvbXBpbGUsIGJlY2F1c2Ugb3B0ZWVfb3BzIGlzIHRoZSBzdGF0aWMgc3RydWN0Li4uCgo+IAo+ Pgo+PiBTaWduZWQtb2ZmLWJ5OiBWb2xvZHlteXIgQmFiY2h1ayA8dm9sb2R5bXlyX2JhYmNodWtA ZXBhbS5jb20+Cj4+IC0tLQo+PiDCoCB4ZW4vYXJjaC9hcm0vdGVlL0tjb25maWfCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHzCoMKgIDQgKysKPj4gwqAgeGVuL2FyY2gvYXJtL3RlZS9NYWtlZmlsZcKg wqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDEgKwo+PiDCoCB4ZW4vYXJjaC9hcm0vdGVlL29wdGVl LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMTM0IAo+PiArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKPj4gwqAgeGVuL2luY2x1ZGUvYXNtLWFybS90ZWUvb3B0ZWVfc21jLmgg fMKgIDUwICsrKysrKysrKysrKysrCj4+IMKgIDQgZmlsZXMgY2hhbmdlZCwgMTg5IGluc2VydGlv bnMoKykKPj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL2FybS90ZWUvb3B0ZWUuYwo+ Pgo+PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3RlZS9LY29uZmlnIGIveGVuL2FyY2gvYXJt L3RlZS9LY29uZmlnCj4+IGluZGV4IGU2OWRlMjkuLjViODI5ZGIgMTAwNjQ0Cj4+IC0tLSBhL3hl bi9hcmNoL2FybS90ZWUvS2NvbmZpZwo+PiArKysgYi94ZW4vYXJjaC9hcm0vdGVlL0tjb25maWcK Pj4gQEAgLTAsMCArMSw0IEBACj4+ICtjb25maWcgT1BURUUKPj4gK8KgwqDCoCBib29sICJFbmFi bGUgT1AtVEVFIG1lZGlhdG9yIgo+PiArwqDCoMKgIGRlZmF1bHQgbgo+PiArwqDCoMKgIGRlcGVu ZHMgb24gVEVFCj4+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdGVlL01ha2VmaWxlIGIveGVu L2FyY2gvYXJtL3RlZS9NYWtlZmlsZQo+PiBpbmRleCBjNTRkNDc5Li45ODJjODc5IDEwMDY0NAo+ PiAtLS0gYS94ZW4vYXJjaC9hcm0vdGVlL01ha2VmaWxlCj4+ICsrKyBiL3hlbi9hcmNoL2FybS90 ZWUvTWFrZWZpbGUKPj4gQEAgLTEgKzEsMiBAQAo+PiDCoCBvYmoteSArPSB0ZWUubwo+PiArb2Jq LSQoQ09ORklHX09QVEVFKSArPSBvcHRlZS5vCj4+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0v dGVlL29wdGVlLmMgYi94ZW4vYXJjaC9hcm0vdGVlL29wdGVlLmMKPj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQKPj4gaW5kZXggMDAwMDAwMC4uN2JiODRkOQo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBi L3hlbi9hcmNoL2FybS90ZWUvb3B0ZWUuYwo+PiBAQCAtMCwwICsxLDEzNCBAQAo+PiArLyoKPj4g KyAqIHhlbi9hcmNoL2FybS90ZWUvb3B0ZWUuYwo+PiArICoKPj4gKyAqIE9QLVRFRSBtZWRpYXRv cgo+PiArICoKPj4gKyAqIFZvbG9keW15ciBCYWJjaHVrIDx2b2xvZHlteXJfYmFiY2h1a0BlcGFt LmNvbT4KPj4gKyAqIENvcHlyaWdodCAoYykgMjAxOCBFUEFNIFN5c3RlbXMuCj4+ICsgKgo+PiAr ICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKPj4gKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCj4+ICsgKiBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPj4gKyAqLwo+PiArCj4+ICsjaW5jbHVkZSA8eGVuL2Rl dmljZV90cmVlLmg+Cj4+ICsjaW5jbHVkZSA8eGVuL3NjaGVkLmg+Cj4+ICsjaW5jbHVkZSA8YXNt L3NtY2NjLmg+Cj4+ICsjaW5jbHVkZSA8YXNtL3RlZS90ZWUuaD4KPj4gKwo+PiArI2luY2x1ZGUg PGFzbS90ZWUvb3B0ZWVfbXNnLmg+Cj4+ICsjaW5jbHVkZSA8YXNtL3RlZS9vcHRlZV9zbWMuaD4K Pj4gKwo+PiArc3RhdGljIGJvb2wgb3B0ZWVfcHJvYmUodm9pZCkKPj4gK3sKPj4gK8KgwqDCoCBz dHJ1Y3QgZHRfZGV2aWNlX25vZGUgKm5vZGU7Cj4+ICvCoMKgwqAgc3RydWN0IGFybV9zbWNjY19y ZXMgcmVzcDsKPj4gKwo+PiArwqDCoMKgIC8qIENoZWNrIGZvciBlbnRyeSBpbiBkdGLCoCAqLwo+ PiArwqDCoMKgIG5vZGUgPSBkdF9maW5kX2NvbXBhdGlibGVfbm9kZShOVUxMLCBOVUxMLCAibGlu YXJvLG9wdGVlLXR6Iik7Cj4+ICvCoMKgwqAgaWYgKCAhbm9kZSApCj4+ICvCoMKgwqDCoMKgwqDC oCByZXR1cm4gZmFsc2U7Cj4+ICsKPj4gK8KgwqDCoCAvKiBDaGVjayBVSUQgKi8KPj4gK8KgwqDC oCBhcm1fc21jY2Nfc21jKEFSTV9TTUNDQ19DQUxMX1VJRF9GSUQoVFJVU1RFRF9PU19FTkQpLCAm cmVzcCk7Cj4+ICsKPj4gK8KgwqDCoCBpZiAoIHJlc3AuYTAgIT0gT1BURUVfTVNHX1VJRF8wIHx8 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgIHJlc3AuYTEgIT0gT1BURUVfTVNHX1VJRF8xIHx8Cj4+ICvC oMKgwqDCoMKgwqDCoMKgIHJlc3AuYTIgIT0gT1BURUVfTVNHX1VJRF8yIHx8Cj4+ICvCoMKgwqDC oMKgwqDCoMKgIHJlc3AuYTMgIT0gT1BURUVfTVNHX1VJRF8zICkKPiAKPiBJIHdvdWxkIGJlIGV4 dHJhIGNhdXRpb3VzIHdpdGggdGhlIHNpZ24tZXh0ZW5zaW9uIGhlcmUuIEl0IHdvdWxkIGJlIAo+ IGJldHRlciB0byBmb2xsb3cgdGhlIHNwZWMgcmVnYXJkaW5nIFVVSUQgYnkgY2FzdGluZyByZXNw LmEwICYgY28gdG8gMzItYml0Lgo+IAo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGZhbHNlOwo+ PiArCj4+ICvCoMKgwqAgcmV0dXJuIHRydWU7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgb3B0 ZWVfZW5hYmxlKHN0cnVjdCBkb21haW4gKmQpCj4+ICt7Cj4+ICvCoMKgwqAgc3RydWN0IGFybV9z bWNjY19yZXMgcmVzcDsKPj4gKwo+PiArwqDCoMKgIGFybV9zbWNjY19zbWMoT1BURUVfU01DX1ZN X0NSRUFURUQsIGQtPmRvbWFpbl9pZCArIDEsIDAsIDAsIDAsIDAsIAo+PiAwLCAwLAo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmcmVzcCk7Cj4+ICvCoMKgwqAgaWYgKCBy ZXNwLmEwICE9IE9QVEVFX1NNQ19SRVRVUk5fT0sgKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBncHJp bnRrKFhFTkxPR19XQVJOSVJFR0lTVEVSX1RFRV9NRURJQVRPUihvcHRlZSwgIk9QLVRFRSIsICZv cHRlZV9vcHMpO05HLCAiT1AtVEVFIGRvbid0IHdhbnQgdG8gc3VwcG9ydCBkb21haW46IAo+PiAl ZFxuIiwKPiAKPiBUaGlzIG1lc3NhZ2UgaXMgc2xpZ2h0bHkgb2RkLiBJdCB3b3VsZCBiZSBiZXR0 ZXIgdG8gc2F5Ogo+IAo+ICJVbmFibGUgdG8gY3JlYXRlIE9QLVRFRSBjbGllbnQ6IHJjPSVkXG4i Lgo+IAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICh1aW50MzJfdClyZXNwLmEw KTsKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5PREVWOwo+PiArwqDCoMKgIH0KPj4gKwo+ PiArwqDCoMKgIHJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBmb3J3YXJkX2Nh bGwoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCj4+ICt7Cj4+ICvCoMKgwqAgc3RydWN0IGFy bV9zbWNjY19yZXMgcmVzcDsKPj4gKwo+PiArwqDCoMKgIGFybV9zbWNjY19zbWMoZ2V0X3VzZXJf cmVnKHJlZ3MsIDApLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnZXRf dXNlcl9yZWcocmVncywgMSksCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGdldF91c2VyX3JlZyhyZWdzLCAyKSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgZ2V0X3VzZXJfcmVnKHJlZ3MsIDMpLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBnZXRfdXNlcl9yZWcocmVncywgNCksCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGdldF91c2VyX3JlZyhyZWdzLCA1KSwKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2V0X3VzZXJfcmVnKHJlZ3MsIDYpLAo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBjbGllbnQgaWQgMCBpcyByZXNlcnZlZCBmb3Ig aHlwZXJ2aXNvciBpdHNlbGYgKi8KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgY3VycmVudC0+ZG9tYWluLT5kb21haW5faWQgKyAxLAo+IAo+IEkgd291bGQgcHJlZmVyIGlm IHRoZSBjbGllbnQgSUQgaXMgZW5jb2RlZCBpbiBhIG1hY3JvLiBTbyB0aGlzIGNvdWxkIGJlIAo+ IHJlLXVzZWQKClNvbWV0aGluZyBsaWtlCgogICNkZWZpbmUgT1BURUVfQ0xJRU5UX0lEKGRvbWFp bikgKGRvbWFpbi0+ZG9tYWluX2lkICsgMSkKCj8KCj4gCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgICZyZXNwKTsKPj4gKwo+PiArwqDCoMKgIHNldF91c2VyX3JlZyhyZWdz LCAwLCByZXNwLmEwKTsKPj4gK8KgwqDCoCBzZXRfdXNlcl9yZWcocmVncywgMSwgcmVzcC5hMSk7 Cj4+ICvCoMKgwqAgc2V0X3VzZXJfcmVnKHJlZ3MsIDIsIHJlc3AuYTIpOwo+PiArwqDCoMKgIHNl dF91c2VyX3JlZyhyZWdzLCAzLCByZXNwLmEzKTsKPj4gK8KgwqDCoCBzZXRfdXNlcl9yZWcocmVn cywgNCwgMCk7Cj4+ICvCoMKgwqAgc2V0X3VzZXJfcmVnKHJlZ3MsIDUsIDApOwo+PiArwqDCoMKg IHNldF91c2VyX3JlZyhyZWdzLCA2LCAwKTsKPj4gK8KgwqDCoCBzZXRfdXNlcl9yZWcocmVncywg NywgMCk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIG9wdGVlX2RvbWFpbl9kZXN0cm95KHN0 cnVjdCBkb21haW4gKmQpCj4+ICt7Cj4+ICvCoMKgwqAgc3RydWN0IGFybV9zbWNjY19yZXMgcmVz cDsKPj4gKwo+PiArwqDCoMKgIC8qIEF0IHRoaXMgdGltZSBhbGwgZG9tYWluIFZDUFVzIHNob3Vs ZCBiZSBzdG9wcGVkICovCj4+ICsKPj4gK8KgwqDCoCAvKiBJbmZvcm0gT1AtVEVFIHRoYXQgZG9t YWluIGlzIHNodXR0aW5nIGRvd24gKi8KPj4gK8KgwqDCoCBhcm1fc21jY2Nfc21jKE9QVEVFX1NN Q19WTV9ERVNUUk9ZRUQsIGQtPmRvbWFpbl9pZCArIDEsIDAsIDAsIDAsIAo+PiAwLCAwLCAwLAo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmcmVzcCk7Cj4gCj4gU28gdGhp cyBTTUMgc2hvdWxkIG5ldmVyIGZhaWwgb3IgZXZlbiBnZXQgcHJlZW1wdGVkPyBJIHdhcyBraW5k IG9mIAo+IGV4cGVjdGluZyB0aGF0IGl0IG1heSB0aW1lIHNvbWUgdGltZSB0byBkZXN0cm95IGEg ZG9tYWluLgoKSXQgaXMgdGhlIGZhc3QgU01DQ0MgY2FsbCwgc28gaXQgY2FuJ3QgYmUgcHJlZW1w dGVkLiBBbmQgaXQgaXMgcmVhbGx5IApmYXN0LCBhdCBsZXN0IGluIE9QLVRFRSBjYXNlLiBCYXNp Y2FsbHksIE9QLVRFRSBqdXN0IHJlbW92ZXMgc29tZSAKZW50cmllcyBmcm9tIHRoZSBsaXN0IGFu ZCBmcmVlcyBzb21lIG1lbW9yeS4gQW5kIHllcywgaXQgY2FuJ3QgZmFpbC4KCj4+ICt9Cj4+ICsK Pj4gK3N0YXRpYyBib29sIG9wdGVlX2hhbmRsZV9jYWxsKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpy ZWdzKQo+PiArewo+PiArwqDCoMKgIHN3aXRjaCAoIGdldF91c2VyX3JlZyhyZWdzLCAwKSApCj4+ ICvCoMKgwqAgewo+PiArwqDCoMKgIGNhc2UgT1BURUVfU01DX0NBTExTX0NPVU5UOgo+PiArwqDC oMKgIGNhc2UgT1BURUVfU01DX0NBTExTX1VJRDoKPj4gK8KgwqDCoCBjYXNlIE9QVEVFX1NNQ19D QUxMU19SRVZJU0lPTjoKPj4gK8KgwqDCoCBjYXNlIE9QVEVFX1NNQ19DQUxMX0dFVF9PU19VVUlE Ogo+PiArwqDCoMKgIGNhc2UgT1BURUVfU01DX0ZVTkNJRF9HRVRfT1NfUkVWSVNJT046Cj4+ICvC oMKgwqAgY2FzZSBPUFRFRV9TTUNfRU5BQkxFX1NITV9DQUNIRToKPj4gK8KgwqDCoCBjYXNlIE9Q VEVFX1NNQ19ESVNBQkxFX1NITV9DQUNIRToKPj4gK8KgwqDCoCBjYXNlIE9QVEVFX1NNQ19HRVRf U0hNX0NPTkZJRzoKPj4gK8KgwqDCoCBjYXNlIE9QVEVFX1NNQ19FWENIQU5HRV9DQVBBQklMSVRJ RVM6Cj4+ICvCoMKgwqAgY2FzZSBPUFRFRV9TTUNfQ0FMTF9XSVRIX0FSRzoKPj4gK8KgwqDCoCBj YXNlIE9QVEVFX1NNQ19DQUxMX1JFVFVSTl9GUk9NX1JQQzoKPj4gK8KgwqDCoMKgwqDCoMKgIGZv cndhcmRfY2FsbChyZWdzKTsKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiB0cnVlOwo+PiArwqDC oMKgIGRlZmF1bHQ6Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gZmFsc2U7Cj4+ICvCoMKgwqAg fQo+PiArfQo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHRlZV9tZWRpYXRvcl9vcHMgb3B0 ZWVfb3BzID0KPj4gK3sKPj4gK8KgwqDCoCAucHJvYmUgPSBvcHRlZV9wcm9iZSwKPj4gK8KgwqDC oCAuZW5hYmxlID0gb3B0ZWVfZW5hYmxlLAo+PiArwqDCoMKgIC5kb21haW5fZGVzdHJveSA9IG9w dGVlX2RvbWFpbl9kZXN0cm95LAo+PiArwqDCoMKgIC5oYW5kbGVfY2FsbCA9IG9wdGVlX2hhbmRs ZV9jYWxsLAo+PiArfTsKPj4gKwo+PiArUkVHSVNURVJfVEVFX01FRElBVE9SKG9wdGVlLCAiT1At VEVFIiwgJm9wdGVlX29wcyk7Cj4+ICsKPj4gKy8qCj4+ICsgKiBMb2NhbCB2YXJpYWJsZXM6Cj4+ ICsgKiBtb2RlOiBDCj4+ICsgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCj4+ICsgKiBjLWJhc2ljLW9m ZnNldDogNAo+PiArICogaW5kZW50LXRhYnMtbW9kZTogbmlsCj4+ICsgKiBFbmQ6Cj4+ICsgKi8K Pj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vdGVlL29wdGVlX3NtYy5oIAo+PiBi L3hlbi9pbmNsdWRlL2FzbS1hcm0vdGVlL29wdGVlX3NtYy5oCj4+IGluZGV4IDI2ZDEwMGUuLjFj NWEyNDcgMTAwNjQ0Cj4+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vdGVlL29wdGVlX3NtYy5o Cj4+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vdGVlL29wdGVlX3NtYy5oCj4+IEBAIC0zMDUs NiArMzA1LDU2IEBAIHN0cnVjdCBvcHRlZV9zbWNfZGlzYWJsZV9zaG1fY2FjaGVfcmVzdWx0IHsK Pj4gwqDCoMKgwqDCoCBPUFRFRV9TTUNfRkFTVF9DQUxMX1ZBTChPUFRFRV9TTUNfRlVOQ0lEX0VO QUJMRV9TSE1fQ0FDSEUpCj4+IMKgIC8qCj4+ICsgKiBJbmZvcm0gT1AtVEVFIGFib3V0IGEgbmV3 IHZpcnR1YWwgbWFjaGluZQo+PiArICoKPj4gKyAqIEh5cGVydmlzb3IgaXNzdWVzIHRoaXMgY2Fs bCBkdXJpbmcgdmlydHVhbCBtYWNoaW5lIChndWVzdCkgY3JlYXRpb24uCj4+ICsgKiBPUC1URUUg cmVjb3JkcyBWTV9JRCBvZiBuZXcgdmlydHVhbCBtYWNoaW5lIGFuZCBtYWtlcyBzZWxmIHJlYWR5 Cj4+ICsgKiB0byByZWNlaXZlIHJlcXVlc3RzIGZyb20gaXQuCj4+ICsgKgo+PiArICogQ2FsbCBy ZXF1ZXN0cyB1c2FnZToKPj4gKyAqIGEwwqDCoMKgIFNNQyBGdW5jdGlvbiBJRCwgT1BURUVfU01D X1ZNX0NSRUFURUQKPj4gKyAqIGExwqDCoMKgIFZNX0lEIG9mIG5ld2x5IGNyZWF0ZWQgdmlydHVh bCBtYWNoaW5lCj4+ICsgKiBhMi02IE5vdCB1c2VkCj4+ICsgKiBhN8KgwqDCoCBIeXBlcnZpc29y IENsaWVudCBJRCByZWdpc3Rlci4gTXVzdCBiZSAwLCBiZWNhdXNlIG9ubHkgCj4+IGh5cGVydmlz b3IKPj4gKyAqwqDCoMKgwqDCoCBjYW4gaXNzdWUgdGhpcyBjYWxsCj4+ICsgKgo+PiArICogTm9y bWFsIHJldHVybiByZWdpc3RlciB1c2FnZToKPj4gKyAqIGEwwqDCoMKgIE9QVEVFX1NNQ19SRVRV Uk5fT0sKPj4gKyAqIGExLTfCoMKgwqAgUHJlc2VydmVkCj4+ICsgKgo+PiArICogRXJyb3IgcmV0 dXJuOgo+PiArICogYTDCoMKgwqAgT1BURUVfU01DX1JFVFVSTl9FTk9UQVZBSUzCoMKgwqAgT1At VEVFIGhhcyBubyByZXNvdXJjZXMgZm9yCj4+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGFub3RoZXIgVk0KPj4gKyAqIGExLTfCoMKgwqAgUHJlc2VydmVkCj4+ICsg Kgo+PiArICovCj4+ICsjZGVmaW5lIE9QVEVFX1NNQ19GVU5DSURfVk1fQ1JFQVRFRMKgwqDCoCAx Mwo+PiArI2RlZmluZSBPUFRFRV9TTUNfVk1fQ1JFQVRFRCBcCj4+ICvCoMKgwqAgT1BURUVfU01D X0ZBU1RfQ0FMTF9WQUwoT1BURUVfU01DX0ZVTkNJRF9WTV9DUkVBVEVEKQo+PiArCj4+ICsvKgo+ PiArICogSW5mb3JtIE9QLVRFRSBhYm91dCBzaHV0ZG93biBvZiBhIHZpcnR1YWwgbWFjaGluZQo+ PiArICoKPj4gKyAqIEh5cGVydmlzb3IgaXNzdWVzIHRoaXMgY2FsbCBkdXJpbmcgdmlydHVhbCBt YWNoaW5lIChndWVzdCkgCj4+IGRlc3RydWN0aW9uLgo+PiArICogT1AtVEVFIHdpbGwgY2xlYW4g dXAgYWxsIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBWTS4KPj4gKyAqCj4+ICsgKiBD YWxsIHJlcXVlc3RzIHVzYWdlOgo+PiArICogYTDCoMKgwqAgU01DIEZ1bmN0aW9uIElELCBPUFRF RV9TTUNfVk1fREVTVFJPWUVECj4+ICsgKiBhMcKgwqDCoCBWTV9JRCBvZiB2aXJ0dWFsIG1hY2hp bmUgYmVpbmcgc2h1dHRlZCBkb3duCj4+ICsgKiBhMi02IE5vdCB1c2VkCj4+ICsgKiBhN8KgwqDC oCBIeXBlcnZpc29yIENsaWVudCBJRCByZWdpc3Rlci4gTXVzdCBiZSAwLCBiZWNhdXNlIG9ubHkg Cj4+IGh5cGVydmlzb3IKPj4gKyAqwqDCoMKgwqDCoCBjYW4gaXNzdWUgdGhpcyBjYWxsCj4+ICsg Kgo+PiArICogTm9ybWFsIHJldHVybiByZWdpc3RlciB1c2FnZToKPj4gKyAqIGEwwqDCoMKgIE9Q VEVFX1NNQ19SRVRVUk5fT0sKPj4gKyAqIGExLTfCoMKgwqAgUHJlc2VydmVkCj4+ICsgKgo+PiAr ICovCj4+ICsjZGVmaW5lIE9QVEVFX1NNQ19GVU5DSURfVk1fREVTVFJPWUVEwqDCoMKgIDE0Cj4+ ICsjZGVmaW5lIE9QVEVFX1NNQ19WTV9ERVNUUk9ZRUQgXAo+PiArwqDCoMKgIE9QVEVFX1NNQ19G QVNUX0NBTExfVkFMKE9QVEVFX1NNQ19GVU5DSURfVk1fREVTVFJPWUVEKQo+PiArCj4+ICsvKgo+ PiDCoMKgICogUmVzdW1lIGZyb20gUlBDIChmb3IgZXhhbXBsZSBhZnRlciBwcm9jZXNzaW5nIGEg Zm9yZWlnbiBpbnRlcnJ1cHQpCj4+IMKgwqAgKgo+PiDCoMKgICogQ2FsbCByZWdpc3RlciB1c2Fn ZToKPj4KPiAKPiBDaGVlcnMsCj4gCgotLSAKVm9sb2R5bXlyIEJhYmNodWsKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxp c3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVj dC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=