From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH v4 04/34] HYPERCALL_version_op. New hypercall mirroring XENVER_ but sane. Date: Tue, 22 Mar 2016 11:52:51 -0400 Message-ID: <20160322155251.GB20062@char.us.oracle.com> References: <1458064616-23101-1-git-send-email-konrad.wilk@oracle.com> <1458064616-23101-5-git-send-email-konrad.wilk@oracle.com> <56E85478.5070408@citrix.com> <20160315201906.GA6211@localhost.localdomain> <20160317013852.GA22460@char.us.oracle.com> <56EC046302000078000DE54F@prv-mh.provo.novell.com> <20160318192224.GA11924@char.us.oracle.com> <56EFFAF802000078000DED1F@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aiOcI-0003KR-6i for xen-devel@lists.xenproject.org; Tue, 22 Mar 2016 15:53:10 +0000 Content-Disposition: inline In-Reply-To: <56EFFAF802000078000DED1F@prv-mh.provo.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Jan Beulich Cc: Wei Liu , Stefano Stabellini , Andrew Cooper , Ian Jackson , mpohlack@amazon.de, ross.lagerwall@citrix.com, Julien Grall , Stefano Stabellini , xen-devel@lists.xenproject.org, Daniel De Graaf , Keir Fraser , sasha.levin@oracle.com List-Id: xen-devel@lists.xenproject.org T24gTW9uLCBNYXIgMjEsIDIwMTYgYXQgMDY6NDU6MjhBTSAtMDYwMCwgSmFuIEJldWxpY2ggd3Jv dGU6Cj4gPj4+IE9uIDE4LjAzLjE2IGF0IDIwOjIyLCA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4g d3JvdGU6Cj4gPj4gPiArICogcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVxdWVzdGVkIGZv ciB0aGUgb3BlcmF0aW9uLiBPciBhbgo+ID4+ID4gKyAqIG5lZ2F0aXZlIHZhbHVlIGlmIGFuIGVy cm9yIGlzIGVuY291bnRlcmVkLgo+ID4+ID4gKyAqLwo+ID4+ID4gKwo+ID4+ID4gK3R5cGVkZWYg dWludDY0X3QgeGVuX3ZlcnNpb25fb3BfdmFsX3Q7Cj4gPj4gPiArREVGSU5FX1hFTl9HVUVTVF9I QU5ETEUoeGVuX3ZlcnNpb25fb3BfdmFsX3QpOwo+ID4+ID4gKwo+ID4+ID4gK3R5cGVkZWYgdm9p ZCB4ZW5fdmVyc2lvbl9vcF9idWZfdDsKPiA+PiA+ICtERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4 ZW5fdmVyc2lvbl9vcF9idWZfdCk7Cj4gPj4gCj4gPj4gQXJlIHRoZXNlIGFjdHVhbGx5IHVzZWZ1 bCBmb3IgYW55dGhpbmc/IEFuZCBmb3IgdGhlIHZhcmlvdXMgc3RyaW5ncywKPiA+IAo+ID4gVGhl IHhlbl92ZXJzaW9uX29wX3ZhbF90IGlzIGRlZmluaXRseSB1c2VkIGJ5IHRoZSB0b29sc3RhY2su Cj4gPiAKPiA+PiB3b3VsZG4ndCBhICJjaGFyIiBoYW5kbGUgYmUgbW9yZSBuYXR1cmFsPwo+ID4g Cj4gPiBIZWguIEl0IHdhcyBjaGFyW10gYmVmb3JlIGJ1dCBBbmRyZXcgbGlrZWQgaXQgYXMgdm9p ZC4KPiAKPiBCdXQgdGhhdCB3YXMgYmVjYXVzZSB5b3UgdXNlZCBpdCBmb3Igbm9uIHN0cmluZyB0 eXBlcyB0b28sCj4gd2Fzbid0IGl0PwoKWWVzLiBGb3IgdGhlIGJ1aWxkLWlkIHdoaWNoIGlzIGEg YmluYXJ5IGJsb2IuIEFuZCBhcyB5b3Ugbm90aWNlZCAgLSBhbHNvCnRoZSBkb21haW4gaGFuZGxl IHdoaWNoIGNhbiBiZSBhbnl0aGluZy4KCj4gCj4gPiBAQCAtMzgwLDYgKzM4OCwxMzMgQEAgRE8o eGVuX3ZlcnNpb24pKGludCBjbWQsIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJnKQo+ ID4gICAgICByZXR1cm4gLUVOT1NZUzsKPiA+ICB9Cj4gPiAgCj4gPiArc3RhdGljIGNvbnN0IGNo YXIgKmNhcGFiaWxpdGllc19pbmZvKHVuc2lnbmVkIGludCAqbGVuKQo+ID4gK3sKPiA+ICsgICAg c3RhdGljIHhlbl9jYXBhYmlsaXRpZXNfaW5mb190IF9fcmVhZF9tb3N0bHkgY2FjaGVkX2NhcDsK PiA+ICsgICAgc3RhdGljIHVuc2lnbmVkIGludCBfX3JlYWRfbW9zdGx5IGNhY2hlZF9jYXBfbGVu Owo+ID4gKyAgICBzdGF0aWMgYm9vbF90IGNhY2hlZDsKPiA+ICsKPiA+ICsgICAgaWYgKCB1bmxp a2VseSghY2FjaGVkKSApCj4gPiArICAgIHsKPiA+ICsgICAgICAgIGFyY2hfZ2V0X3hlbl9jYXBz KCZjYWNoZWRfY2FwKTsKPiA+ICsgICAgICAgIGNhY2hlZF9jYXBfbGVuID0gc3RybGVuKGNhY2hl ZF9jYXApICsgMTsKPiA+ICsgICAgICAgIGNhY2hlZCA9IDE7Cj4gPiArICAgIH0KPiAKPiBJJ20g c29ycnkgZm9yIG5vdGljaW5nIHRoaXMgb25seSBub3csIGJ1dCB3aXRob3V0IGFueSBsb2NraW5n IHRoaXMgaXMKPiB1bnNhZmU6IHg4NidzIGFyY2hfZ2V0X3hlbl9jYXBzKCkgdXNpbmcgc2FmZV9z dHJjYXQoKSB0byBmaWxsIHRoZQo+IGJ1ZmZlciwgc2ltdWx0YW5lb3VzIGludm9jYXRpb25zIHdv dWxkIHBvc3NpYmx5IHByb2R1Y2UgZ2FyYmxlZAo+IG91dHB1dCB0byBhbGwgKGkuZS4gYWxzbyBz dWJzZXF1ZW50bHkgc3RhcnRlZCkgZ3Vlc3RzLiBFaXRoZXIgdXNlIGEKPiByZWFsIGxvY2sgaGVy ZSwgb3IgbWFrZSB0aGUgZ3VhcmQgYSB0cmlzdGF0ZSBvbmUsIHdoaWNoIGdldHMKPiB0cmFuc2l0 aW9uZWQgZS5nLiBmcm9tIDAgdG8gLTEgYnkgdGhlIGZpcnN0IG9uZSBjb21pbmcgaGVyZSAoZG9p bmcKPiB0aGUgaW5pdGlhbGl6YXRpb24pLCB3aXRoIGV2ZXJ5b25lIGVsc2Ugd2FpdGluZyBmb3Ig aXQgdG8gYmVjb21lICsxCj4gKHRvIHdoaWNoIHRoZSBpbml0aWFsaXppbmcgcGFydHkgc2V0cyBp dCBvbmNlIGl0IGlzIGRvbmUpLgoKVGhhdCB3b3VsZCBpbmRlZWQgYmUgYmFkLgoKV2hhdCBpZiBh biBfaW5pdF8gY29kZSBjYWxsZWQgdGhpcyB0byAncHJlLWNhY2hlJyBpdD8KCj4gCj4gPiArRE8o dmVyc2lvbl9vcCkodW5zaWduZWQgaW50IGNtZCwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lk KSBhcmcsCj4gPiArICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxlbikKPiA+ICt7Cj4gPiAr ICAgIHVuaW9uIHsKPiA+ICsgICAgICAgIHhlbl92ZXJzaW9uX29wX3ZhbF90IHZhbDsKPiA+ICsg ICAgICAgIHhlbl9mZWF0dXJlX2luZm9fdCBmaTsKPiA+ICsgICAgfSB1ID0ge307Cj4gPiArICAg IHVuc2lnbmVkIGludCBzeiA9IDA7Cj4gPiArICAgIGNvbnN0IHZvaWQgKnB0ciA9IE5VTEw7Cj4g PiArICAgIGludCByYyA9IHhzbV92ZXJzaW9uX29wKFhTTV9PVEhFUiwgY21kKTsKPiA+ICsKPiA+ ICsgICAgLyogV2UgY2FuIHNhZmVseSByZXR1cm4gLUVQRVJNISAqLwo+ID4gKyAgICBpZiAoIHJj ICkKPiA+ICsgICAgICAgIHJldHVybiByYzsKPiA+ICsKPiA+ICsgICAgLyoKPiA+ICsgICAgICog VGhlIEhZUEVSVklTT1JfeGVuX3ZlcnNpb24gZGlmZmVycyBpbiB0aGF0IHNvbWUgcmV0dXJuIHRo ZSB2YWx1ZSwKPiA+ICsgICAgICogYW5kIHNvbWUgY29weSBpdCBvbiBiYWNrIG9uIGFyZ3VtZW50 LiBXZSBmb2xsb3cgdGhlIHNhbWUgcnVsZSBmb3IgYWxsCj4gPiArICAgICAqIHN1Yi1vcHM6IHJl dHVybiAwIG9uIHN1Y2Nlc3MsIHBvc2l0aXZlIHZhbHVlIG9mIGJ5dGVzIHJldHVybmVkLCBhbmQK PiA+ICsgICAgICogYWx3YXlzIGNvcHkgdGhlIHJlc3VsdCBpbiBhcmcuIFllZXkgc2FuaXR5IQo+ ID4gKyAgICAgKi8KPiA+ICsgICAgc3dpdGNoICggY21kICkKPiA+ICsgICAgewo+ID4gKyAgICBj YXNlIFhFTl9WRVJTSU9OX3ZlcnNpb246Cj4gPiArICAgICAgICBzeiA9IHNpemVvZih4ZW5fdmVy c2lvbl9vcF92YWxfdCk7Cj4gPiArICAgICAgICB1LnZhbCA9ICh4ZW5fbWFqb3JfdmVyc2lvbigp IDw8IDE2KSB8IHhlbl9taW5vcl92ZXJzaW9uKCk7Cj4gPiArICAgICAgICBicmVhazsKPiA+ICsK PiA+ICsgICAgY2FzZSBYRU5fVkVSU0lPTl9leHRyYXZlcnNpb246Cj4gPiArICAgICAgICBzeiA9 IHN0cmxlbih4ZW5fZXh0cmFfdmVyc2lvbigpKSArIDE7Cj4gPiArICAgICAgICBwdHIgPSB4ZW5f ZXh0cmFfdmVyc2lvbigpOwo+ID4gKyAgICAgICAgYnJlYWs7Cj4gPiArCj4gPiArICAgIGNhc2Ug WEVOX1ZFUlNJT05fY2FwYWJpbGl0aWVzOgo+ID4gKyAgICAgICAgcHRyID0gY2FwYWJpbGl0aWVz X2luZm8oJnN6KTsKPiA+ICsgICAgICAgIGJyZWFrOwo+ID4gKwo+ID4gKyAgICBjYXNlIFhFTl9W RVJTSU9OX2NoYW5nZXNldDoKPiA+ICsgICAgICAgIHN6ID0gc3RybGVuKHhlbl9jaGFuZ2VzZXQo KSkgKyAxOwo+ID4gKyAgICAgICAgcHRyID0geGVuX2NoYW5nZXNldCgpOwo+ID4gKyAgICAgICAg YnJlYWs7Cj4gPiArCj4gPiArICAgIGNhc2UgWEVOX1ZFUlNJT05fcGxhdGZvcm1fcGFyYW1ldGVy czoKPiA+ICsgICAgICAgIHN6ID0gc2l6ZW9mKHhlbl92ZXJzaW9uX29wX3ZhbF90KTsKPiA+ICsg ICAgICAgIHUudmFsID0gSFlQRVJWSVNPUl9WSVJUX1NUQVJUOwo+ID4gKyAgICAgICAgYnJlYWs7 Cj4gPiArCj4gPiArICAgIGNhc2UgWEVOX1ZFUlNJT05fZ2V0X2ZlYXR1cmVzOgo+ID4gKyAgICAg ICAgaWYgKCBjb3B5X2Zyb21fZ3Vlc3QoJnUuZmksIGFyZywgMSkgKQo+IAo+IEFmYWljdCB0aGlz IGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBudWxsIGhhbmRsZSBjaGVjayBmdXJ0aGVyIGRvd24g KGkuZS4KPiB5b3UgYWxzbyBuZWVkIHRvIGNoZWNrIGZvciBhIG51bGwgaGFuZGxlIGhlcmUpLgoK T2ggbXkuIEluZGVlZC4KCj4gCj4gPiAtLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC1hcm0u aAo+ID4gKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2FyY2gtYXJtLmgKPiA+IEBAIC0xMjgsNiAr MTI4LDkgQEAKPiA+ICAgKiAgICAqIFZDUFVPUF9yZWdpc3Rlcl92Y3B1X2luZm8KPiA+ICAgKiAg ICAqIFZDUFVPUF9yZWdpc3Rlcl9ydW5zdGF0ZV9tZW1vcnlfYXJlYQo+ID4gICAqCj4gPiArICog IEhZUEVSVklTT1JfdmVyc2lvbl9vcAo+ID4gKyAqICAgQWxsIGdlbmVyaWMgc3ViLW9wZXJhdGlv bnMKPiA+ICsgKgo+ID4gICAqCj4gPiAgICogT3RoZXIgbm90ZXMgb24gdGhlIEFSTSBBQkk6Cj4g Cj4gSSBkb24ndCB0aGluayB0aGUgZXh0cmEgYWxtb3N0IGJsYW5rIGxpbmUgaXMgd2FycmFudGVk IGhlcmUuCj4gCj4gPiAtLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvdmVyc2lvbi5oCj4gPiArKysg Yi94ZW4vaW5jbHVkZS9wdWJsaWMvdmVyc2lvbi5oCj4gPiBAQCAtMzAsNyArMzAsMTUgQEAKPiA+ ICAKPiA+ICAjaW5jbHVkZSAieGVuLmgiCj4gPiAgCj4gPiAtLyogTkIuIEFsbCBvcHMgcmV0dXJu IHplcm8gb24gc3VjY2VzcywgZXhjZXB0IFhFTlZFUl97dmVyc2lvbixwYWdlc2l6ZX0gKi8KPiA+ ICsvKgo+ID4gKyAqIFRoZXJlIGFyZSB0d28gaHlwZXJjYWxscyBtZW50aW9uZWQgaW4gaGVyZS4g VGhlIFhFTlZFUl8gYXJlIGZvcgo+ID4gKyAqIEhZUEVSQ0FMTF94ZW5fdmVyc2lvbiAoMTcpLCB3 aGlsZSBWRVJTSU9OXyBhcmUgZm9yIHRoZQo+ID4gKyAqIEhZUEVSQ0FMTF92ZXJzaW9uX29wICg0 MSkuCj4gPiArICoKPiA+ICsgKiBUaGUgc3Vib3BzIGFyZSB2ZXJ5IHNpbWlsYXIgZXhjZXB0IHRo YXQgdGhlIGxhdGVyIGh5cGVyY2FsbCBoYXMgYQo+ID4gKyAqIHNhbmUgaW50ZXJmYWNlLgo+ID4g KyAqLwo+ID4gKwo+ID4gIAo+ID4gIC8qIGFyZyA9PSBOVUxMOyByZXR1cm5zIG1ham9yOm1pbm9y ICgxNjoxNikuICovCj4gCj4gTm9yIGlzIHRoZSBleHRyYSBibGFuayBvbmUgaGVyZS4KPiAKPiA+ IEBAIC04Nyw2ICs5NSw2NiBAQCB0eXBlZGVmIHN0cnVjdCB4ZW5fZmVhdHVyZV9pbmZvIHhlbl9m ZWF0dXJlX2luZm9fdDsKPiA+ICAjZGVmaW5lIFhFTlZFUl9jb21tYW5kbGluZSA5Cj4gPiAgdHlw ZWRlZiBjaGFyIHhlbl9jb21tYW5kbGluZV90WzEwMjRdOwo+ID4gIAo+ID4gKwo+ID4gKwo+ID4g Ky8qCj4gPiArICogVGhlIEhZUEVSQ0FMTF92ZXJzaW9uX29wIGhhcyBhIHNldCBvZiBzdWItb3Bz IHdoaWNoIG1pcnJvciB0aGUKPiAKPiBBbmQgdGhyZWUgY29uc2VjdXRpdmUgYmxhbmsgbGluZXMg YXJlIHRvbyBtdWNoIGluIGFueSBldmVudC4gKElmCj4gZm9yIG5vIG90aGVyIHJlYXNvbiB0aGF0 IGJlY2F1c2UgdGhhdCBwcm92aWRlcyBleHRyZW1lbHkgYmFkCj4gcGF0Y2ggY29udGV4dCBpZiBh IGxhdGVyIGNoYW5nZSBoYXBwZW5lZCByaWdodCBuZXh0IHRvIHRoZXNlIHRocmVlCj4gbGluZXMu KQo+IAo+ID4gKy8qCj4gPiArICogYXJnID09IGNoYXIuCj4gPiArICoKPiA+ICsgKiBUaGUgdG9v bHN0YWNrIGZpbGxzIGl0IG91dCBmb3IgZ3Vlc3QgY29uc3VtcHRpb24uIEl0IGlzIGludGVuZGVk IHRvIGhvbGQKPiA+ICsgKiB0aGUgVVVJRCBvZiB0aGUgZ3Vlc3QuCj4gPiArICovCj4gPiArI2Rl ZmluZSBYRU5fVkVSU0lPTl9ndWVzdF9oYW5kbGUgICAgICAgIDgKPiAKPiBTbyB0aGlzIGlzIHRo ZSBwbGFjZSB3aGVyZSBJIGFncmVlIHdpdGggQW5kcmV3IGNoYXIgaXMgbm90IGFuCj4gYXBwcm9w cmlhdGUgdHlwZS4gQSB2b2lkIG9yIHVpbnQ4IGhhbmRsZSBzZWVtcyBsaWtlIHdoYXQgeW91Cj4g d2FudCBoZXJlLgoKL21lIG5vZHMuCj4gCj4gPiAtLS0gYS94ZW4vaW5jbHVkZS94c20vZHVtbXku aAo+ID4gKysrIGIveGVuL2luY2x1ZGUveHNtL2R1bW15LmgKPiA+IEBAIC03NTEsMyArNzUxLDIy IEBAIHN0YXRpYyBYU01fSU5MSU5FIGludCB4c21feGVuX3ZlcnNpb24gKFhTTV9ERUZBVUxUX0FS RyB1aW50MzJfdCBvcCkKPiA+ICAgICAgICAgIHJldHVybiB4c21fZGVmYXVsdF9hY3Rpb24oWFNN X1BSSVYsIGN1cnJlbnQtPmRvbWFpbiwgTlVMTCk7Cj4gPiAgICAgIH0KPiA+ICB9Cj4gPiArCj4g PiArc3RhdGljIFhTTV9JTkxJTkUgaW50IHhzbV92ZXJzaW9uX29wIChYU01fREVGQVVMVF9BUkcg dWludDMyX3Qgb3ApCj4gPiArewo+ID4gKyAgICBYU01fQVNTRVJUX0FDVElPTihYU01fT1RIRVIp Owo+ID4gKyAgICBzd2l0Y2ggKCBvcCApCj4gPiArICAgIHsKPiA+ICsgICAgY2FzZSBYRU5fVkVS U0lPTl92ZXJzaW9uOgo+ID4gKyAgICBjYXNlIFhFTl9WRVJTSU9OX2V4dHJhdmVyc2lvbjoKPiA+ ICsgICAgY2FzZSBYRU5fVkVSU0lPTl9jYXBhYmlsaXRpZXM6Cj4gPiArICAgIGNhc2UgWEVOX1ZF UlNJT05fcGxhdGZvcm1fcGFyYW1ldGVyczoKPiA+ICsgICAgY2FzZSBYRU5fVkVSU0lPTl9nZXRf ZmVhdHVyZXM6Cj4gPiArICAgIGNhc2UgWEVOX1ZFUlNJT05fcGFnZXNpemU6Cj4gPiArICAgIGNh c2UgWEVOX1ZFUlNJT05fZ3Vlc3RfaGFuZGxlOgo+ID4gKyAgICAgICAgLyogVGhlc2UgTVVTVCBh bHdheXMgYmUgYWNjZXNzaWJsZSB0byBhbnkgZ3Vlc3QgYnkgZGVmYXVsdC4gKi8KPiA+ICsgICAg ICAgIHJldHVybiB4c21fZGVmYXVsdF9hY3Rpb24oWFNNX0hPT0ssIGN1cnJlbnQtPmRvbWFpbiwg TlVMTCk7Cj4gPiArICAgIGRlZmF1bHQ6Cj4gPiArICAgICAgICByZXR1cm4geHNtX2RlZmF1bHRf YWN0aW9uKFhTTV9QUklWLCBjdXJyZW50LT5kb21haW4sIE5VTEwpOwo+IAo+IENvbnNpZGVyaW5n IHRoYXQgd2Ugc2VlbSB0byBoYXZlIHNldHRsZWQgb24gc29tZSBleGNlcHRpb25zIGhlcmUKPiBm b3IgdGhlIGNoYW5nZSBhZGRpbmcgWFNNIGNoZWNrIHRvIHRoZSBsZWdhY3kgdmVyc2lvbiBvcCwg ZG8geW91Cj4gcmVhbGx5IHRoaW5rIGdvaW5nIHdpdGggbm8gZXhjZXB0aW9uIGF0IGFsbCBoZXJl IGlzIHRoZSByaWdodCBhcHByb2FjaD8KCj4gQmVjYXVzZSBpZiB3ZSBkbywgdGhhdCdsbCBwcmV2 ZW50IGd1ZXN0cyBnZXR0aW5nIGZ1bGx5IGNvbnZlcnRlZCBvdmVyCj4gdG8gdGhlIG5ldyBpbnRl cmZhY2UuIE9mIGNvdXJzZSwgd2UgY291bGQgYWxzbyBtYWtlIHRoaXMgY29udmVyc2lvbgo+IHNw ZWNpZmljYWxseSBhIG5vbi1nb2FsLCBhbmQgb21pdCBlLmcuIFhFTl9WRVJTSU9OX1ZFUlNJT04g ZnJvbQo+IHRoaXMgbmV3IGludGVyZmFjZS4KCk5vIG5vLiBJIHRoaW5rIGNvbnZlc2lvbiBpcyB0 aGUgcmlnaHQgbG9uZy10ZXJtIGdvYWwuIAoKSG93ZXZlciB0aGUgbmljZSB0aGluZyBhYm91dCB0 aGlzIGh5cGVyY2FsbCBpcyB0aGF0IGl0IGNhbiByZXR1cm4gLUVQRVJNLgoKTWFraW5nIGl0IGFs d2F5cyByZXR1cm4gYW4gdmFsdWUgZm9yIFhFTl9WRVJTSU9OX3ZlcnNpb24sClhFTl9WRVJTSU9O X3BsYXRmb3JtX3BhcmFtZXRlcnMsIFhFTl9WRVJTSU9OX2dldF9mZWF0dXJlcyBtZWFucyB0aGF0 CnRoZXJlIGFyZSBzb21lIGV4Y2VwdGlvbnMgdG8gdGhpcyAiY2FuIHJldHVybiAtRVBFUk0iIGFz IHRoZXkgd2lsbApiZSBndWFyYW50ZWVkIGFuIHBvc3RpdmUgcmV0dXJuIHZhbHVlLiBUaGV5IGNh biBpZ25vcmUgdGhlIC1FUEVSTQpjYXNlLgoKQW5kIG1lYW5zIHRoYXQgZ3Vlc3QgY2FuIHN0aWxs IHRha2Ugc2hvcnRjdXRzLgoKSSBhZ3JlZSB3aXRoIHlvdSB0aGF0IGd1ZXN0cyBuZWVkIHRoZXNl IGh5cGVyY2FsbHMgYnV0IGF0IHRoZSBzYW1lCnRpbWUgSSBhbSBub3Qgc3VyZSB3aGF0IGNhbiBi ZSBkb25lIHNvIHRoZXkgZG9uJ3QgZmFsbCBmbGF0IG9uIHRoZWlyCmZhY2VzIGlmIHRoZXkgYXJl IHByZXNlbnRlZCB3aXRoIC1FUEVSTS4gVGhlIExpbnV4IHhlbmJ1c19pbml0IGNhbiBiZQptb2Rp ZmllZCB0byBkZWFsIHdpdGggdGhpcyByZXR1cm5pbmcgLUVQRVJNIHdoZXJlIGl0IG1ha2VzIHNv bWUgYXNzdW1wdGlvbnMuCgpCdXQgaW4gYSBsaWtlbHlob29kIGl0IGlzIHRoZSBiYWQgYXNzdW1w dGlvbiEKCkFuZHJldywgd2hhdCBkbyB5b3UgdGhpbms/CgoKPiAKPiBKYW4KCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxp c3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVs Cg==