From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Ostrovsky Subject: Re: Branch Trace Storage for guests and VPMUinitialization Date: Thu, 26 Feb 2015 11:35:26 -0500 Message-ID: <54EF4B4E.4050206@oracle.com> References: <5C9C3B9BEF1B354596EAE3D6800D876BA3BF8F@e1.gdata.de> <5C9C3B9BEF1B354596EAE3D6800D876BA441F4@e1.gdata.de> <54EDF8E3.2060609@oracle.com> <5820128.XDeVCQ4qG6@amur> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <5820128.XDeVCQ4qG6@amur> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Dietmar Hahn , xen-devel@lists.xen.org Cc: Kevin.Mayer@gdata.de List-Id: xen-devel@lists.xenproject.org T24gMDIvMjYvMjAxNSAwMzo1NiBBTSwgRGlldG1hciBIYWhuIHdyb3RlOgo+IEFtIE1pdHR3b2No IDI1IEZlYnJ1YXIgMjAxNSwgMTE6MzE6MzEgc2NocmllYiBCb3JpcyBPc3Ryb3Zza3k6Cj4+IE9u IDAyLzI1LzIwMTUgMTA6MTIgQU0sIEtldmluLk1heWVyQGdkYXRhLmRlIHdyb3RlOgo+Pj4+IC0t LS0tVXJzcHLDvG5nbGljaGUgTmFjaHJpY2h0LS0tLS0KPj4+PiBWb246IEJvcmlzIE9zdHJvdnNr eSBbbWFpbHRvOmJvcmlzLm9zdHJvdnNreUBvcmFjbGUuY29tXQo+Pj4+IEdlc2VuZGV0OiBEaWVu c3RhZywgMjQuIEZlYnJ1YXIgMjAxNSAxODoxMwo+Pj4+IEFuOiBNYXllciwgS2V2aW47IHhlbi1k ZXZlbEBsaXN0cy54ZW4ub3JnCj4+Pj4gQmV0cmVmZjogUmU6IFtYZW4tZGV2ZWxdIEJyYW5jaCBU cmFjZSBTdG9yYWdlIGZvciBndWVzdHMgYW5kIFZQTVUKPj4+PiBpbml0aWFsaXphdGlvbgo+Pj4+ Cj4+Pj4gT24gMDIvMjQvMjAxNSAxMDoyNyBBTSwgS2V2aW4uTWF5ZXJAZ2RhdGEuZGUgd3JvdGU6 Cj4+Pj4+IEhpIGd1eXMKPj4+Pj4KPj4+Pj4gSWBtIHRyeWluZyB0byBzZXQgdXAgdGhlIEJUUyBz byB0aGF0IEkgY2FuIGxvZyB0aGUgYnJhbmNoZXMgdGFrZW4gaW4KPj4+Pj4gdGhlIGd1ZXN0IHVz aW5nIFhlbiA0LjQuMSB3aXRoIGEgV2luWFAgU1AzIGd1ZXN0IG9uIGEgQ29yZSBpNyBTYW5keQo+ Pj4+PiBCcmlkZ2UuCj4+Pj4+Cj4+Pj4+IEkgYWRkZWQgdGhlIHZwbXU9YnRzIGJvb3QgcGFyYW1l dGVyIHRvIG15IGdydWIyIGNvbmZpZ3VyYXRpb24gYW5kCj4+Pj4+IGV4dGVuZGVkIHRoZSBsaWJ4 bCxsaWJ4Yyxkb21jdGws4oCmIHdpdGggYW4gb3duIGNvbW1hbmQgc28gdGhhdCBJIGNhbgo+Pj4+ PiB0cmlnZ2VyIHRoZSBhY3RpdmF0aW9uIG9mIHRoZSBCVFMgd2hlbmV2ZXIgSSB3YW50Lgo+Pj4+ Pgo+Pj4+IEkgYW0gbm90IHN1cmUgd2h5IHlvdSBhcmUgZG9pbmcgYWxsIHRoZXNlIGNoYW5nZXMg dG8gWGVuIGNvZGUuIEJUUyBpcwo+Pj4+IHN1cHBvc2VkIHRvIGJlIG1hbmFnZWQgZnJvbSB0aGUg Z3Vlc3QuIEZvciBleGFtcGxlLCBhIEZlZG9yYSBIVk0gZ3Vlc3QKPj4+PiB3aWxsIHByb2R1Y2Ug dGhpczoKPj4+Pgo+Pj4+IFtyb290QGRoY3AtYnVybGluZ3RvbjctMm5kLUItZWFzdC0xMC0xNTIt NTUtMTQwIH5dIyBwZXJmIHJlY29yZCAtZQo+Pj4+IGJyYW5jaGVzOnUgLWMgMSAtZCBzbGVlcCAx IFsgcGVyZiByZWNvcmQ6IFdva2VuIHVwIDM4MzggdGltZXMgdG8gd3JpdGUgZGF0YSBdIFsKPj4+ PiBwZXJmIHJlY29yZDogQ2FwdHVyZWQgYW5kIHdyb3RlIDAuNzA0IE1CIHBlcmYuZGF0YSAofjMw NzU2IHNhbXBsZXMpIF0KPj4+PiBbcm9vdEBkaGNwLWJ1cmxpbmd0b243LTJuZC1CLWVhc3QtMTAt MTUyLTU1LTE0MCB+XSMgcGVyZiBzY3JpcHQgLWYKPj4+PiBpcCxhZGRyLHN5bSxkc28sc3ltb2Zm IC0tc2hvdy1rZXJuZWwtcGF0aAo+Pj4+ICAgICBmZmZmZmZmZjgxNjdjMzQ3IG5hdGl2ZV9pcnFf cmV0dXJuX2lyZXQrMHgwICgvcHJvYy9rY29yZSkgPT4KPj4+PiAzMjhjMDAxNTkwIFt1bmtub3du XSAoL3Byb2Mva2NvcmUpCj4+Pj4gICAgIGZmZmZmZmZmODE2N2MzNDcgbmF0aXZlX2lycV9yZXR1 cm5faXJldCsweDAgKC9wcm9jL2tjb3JlKSA9Pgo+Pj4+IDMyOGMwMDE1OTAgW3Vua25vd25dIChb dW5rbm93bl0pCj4+Pj4gICAgICAgICAgIDMyOGMwMDE1OTMgW3Vua25vd25dIChbdW5rbm93bl0p ID0+ICAgICAgIDMyOGMwMDRiNzAgW3Vua25vd25dCj4+Pj4gKFt1bmtub3duXSkKPj4+PiAuLi4K Pj4+Pgo+Pj4gSSB3YW50IHRvIGJlIGFibGUgdG8gbG9nIHRoZSB0YWtlbiBicmFuY2hlcyAob2Yg dGhlIGd1ZXN0KSB3aXRob3V0IHRoZSBuZWVkIHRvIG1vZGlmeSB0aGUgZ3Vlc3QgYXQgYWxsLgo+ Pj4gVGhpcyBtZWFucyBJIGhhdmUgdG8gZG8gYWxsIHRoZSBsb2dpYyBpbiB0aGUgaHlwZXJ2aXNv ciwgb3IgYW0gSSB3cm9uZz8KPj4gSW4gdGhhdCBjYXNlLCB5ZXMuIEJ1dCB0aGVuIHlvdSBoYXZl IHRvIG1ha2Ugc3VyZSB0aGF0IGF0IGxlYXN0Cj4+ICAgICogeW91IGRvbid0IGxvYWQgZ3Vlc3Qn cyBWUE1VIChvciwgYXQgbGVhc3QsIEJUUy1yZWxhdGVkIHJlZ2lzdGVycykgb24KPj4gY29udGV4 dCBzd2l0Y2gKPiBCdXQgeW91IG5lZWQgdG8gbW9kaWZ5IFBNVSByZWdpc3RlcnMgd2hlbiBzd2l0 Y2hpbmcgdG8vZnJvbSB0aGUgZ3Vlc3QgY29udGV4dAo+IHRvIGdldCBQTVUgcnVubmluZy4KCgoK SSB3YXMgdGhpbmtpbmcgdGhhdCBhbGwgQlRTIHN0dWZmIGNhbiBiZSBjb250cm9sbGVkIGZyb20g ZG9tMCBhbmQgc28gd2UgCmNhbiB1c2UgZG9tMCdzIHZlcnNpb24gb2YgdGhlc2UgcmVnaXN0ZXJz LiBJIGRpZG4ndCByZWFsaXplIHRoYXQgRFNfQVJFQSAKd291bGQgaGF2ZSB0byBiZSBhY2Nlc3Nl ZCBpbiBndWVzdCdzIGFkZHJlc3Mgc3BhY2UgKGFuZCB0aGF0IERFQlVHQ1RMIGlzIApsb2FkZWQg ZnJvbSBWTUNTKS4KCldoaWNoIGlzIHdoYXQgSSB0aGluayBJIHNhaWQgaW4gcmVzcG9uc2UgdG8g dGhpcyBtZXNzYWdlICh3aGljaCBkaWRuJ3QgCnNob3cgdXAgb24gdGhlIGxpc3QgYmVjYXVzZSBL ZXZpbiBhY2NpZGVudGFsbHkgZHJvcHBlZCB4ZW4tZGV2ZWwpLgoKLWJvcmlzCgoKCj4gSSBkaWRu J3QgdGhpbmsgb2YgdXNpbmcgdGhlIFZQTVUgc3R1ZmYgd2l0aCBtb2RpZnlpbmcgdGhlIGNvbnRl eHQgZnJvbSBvdXRzaWRlCj4gdGhlIGd1ZXN0Lgo+Cj4+ICAgICogWW91IGRvbid0IHNlbmQgdGhl IGludGVycnVwdCB0byB0aGUgZ3Vlc3QgKG1lYW5pbmcgdGhhdCB5b3Ugd2lsbAo+PiBuZWVkIHRv IHNvbWVob3cgaW5mb3JtIGRvbTAgb2YgdGhlIEJUUyBpbnRlcnJ1cHQpCj4+Cj4+IGFuZCBwcm9i YWJseSBtb3JlLgo+Pgo+PiBFc3NlbnRpYWxseSwgeW91IHdhbnQgZG9tMCB0byBwcm9maWxlIHRo ZSBndWVzdC4gSSBoYXZlIGJlZW4gd29ya2luZyBvbgo+PiBwYXRjaGVzIHRoYXQgd291bGQgYWxs b3cgdGhhdCBidXQgdGhleSBhcmUgc3RpbGwgdW5kZXIgcmV2aWV3Lgo+Pgo+Pgo+Pj4+PiBJbiB0 aGlzIGNvbW1hbmQgSSBkbyB0aGUgZm9sbG93aW5nOgo+Pj4+Pgo+Pj4+PiBJIHNldCB1cCB0aGUg bWVtb3J5IHJlZ2lvbiBmb3IgdGhlIEJUUyBCdWZmZXIgYW5kIHRoZSBEUyBCdWZmZXIKPj4+Pj4g TWFuYWdlbWVudCBBcmVhIHVzaW5nIHh6YWxsb2NfYnl0ZXMKPj4+Pj4KPj4+PiBJIGRvbid0IHRo aW5rIHlvdSBzaG91bGQgYmUgYWxsb2NhdGluZyBCVFMgYnVmZmVycyBpbiB0aGUgaHlwZXJ2aXNv ciwgdGhleSBhcmUKPj4+PiBpbiBndWVzdCdzIG1lbW9yeS4KPj4+IEkgYWdyZWUuIEFzIEkgc2Fp ZCBJIHRoaW5rIHRoaXMgaXMgd2hlcmUgbXkgbWFpbiBwcm9ibGVtIGlzIGF0IHRoZSBtb21lbnQu Cj4+PiBJcyB0aGVyZSBhbnkgd2F5IEkgY2FuIGFsbG9jYXRlIG1lbW9yeSBpbiB0aGUgaHlwZXJ2 aXNvciBpbiBhIHdheSB0aGUgZ3Vlc3QgY2FuIGFjY2VzcyBpdD8KPj4gSSBhbSBub3Qgc3VyZSB0 aGlzIGlzIHdoYXQgeW91IHdhbnQgc2luY2UgeW91IHNlZW0gdG8gKm5vdCogd2FudCB0aGUKPj4g Z3Vlc3QgdG8gcHJvY2VzcyB0aGUgc2FtcGxlcywgcmlnaHQ/Cj4+Cj4+IEJ1dCB5ZXMsIHlvdSBj YW4uIEUuZy4gc29tZXRoaW5nIGxpa2Ugd2hhdCBtYXBfdmNwdV9pbmZvKCkgZG9lcy4gKEkgaGF2 ZQo+PiBubyBpZGVhIGhvdyB5b3UnZCBkbyB0aGlzIGZyb20gV2luZG93cy4pCj4gVGhlIERTIGJ1 ZmZlciBoYXMgdG8gYmUgbWFwcGVkIHdpdGhpbiB0aGUgZ3Vlc3RzIGFkZHJlc3Mgc3BhY2Ugc28g dGhlIENQVQo+IHJ1bm5pbmcgaW4gZ3Vlc3QgY29udGV4dCBjYW4gYWNjZXNzIHRoaXMgYXJlYS4g T3RoZXJ3aXNlIHlvdSBnZXQgdGhpcwo+IHRyaXBsZSBmYXVsdC4KPiBTbyBJIHdvdWxkIHRoaW5r IHlvdSBuZWVkIGEgbWl4dHVyZSBvZiB3cml0aW5nIHNvbWUgc3R1ZmYgaW4gV2luZG93cyBhbmQK PiBwYXRjaGluZyB0aGUgaHlwZXJ2aXNvci4KPgo+IERpZXRtYXIuCj4KPj4KPj4+IE9mIGNvdXJz ZSB0aGUgZ3Vlc3QgbXVzdCBub3QgYmUgYWJsZSB0byB1c2UgdGhpcyBtZW1vcnkgaW4gaXRzIG5v cm1hbCBvcGVyYXRpb25zIGJ1dCBqdXN0IGZvciBCVFMuCj4+PiBJcyB0aGlzIGV2ZW4gcG9zc2li bGU/IEkgYW0gcmF0aGVyIGNvbmZ1c2VkIGF0IHRoZSBtb21lbnQuIDotRAo+Pj4KPj4+Pj4gVGhl biBJIHdyaXRlIHRoZSBwb2ludGVyIHRvIHRoZSBCVFMgQnVmZmVyIGludG8gdGhlIERTIEJ1ZmZl cgo+Pj4+PiBNYW5hZ2VtZW50IEFyZWEgYXQgKzB4MCBhbmQgKzB4OCAoQlRTIEJ1ZmZlciBCYXNl IGFuZCBCVFMgSW5kZXgpCj4+Pj4+Cj4+Pj4+IFdoZW4gSSB1c2Ugdm14X21zcl93cml0ZV9pbnRl cmNlcHQgdG8gc3RvcmUgdGhlIHZhbHVlIGluCj4+Pj4+IE1TUl9JQTMyX0RTX0FSRUEgdGhlIGhv c3QgcmVib290cyAobXkgaWRlYSBpcyBoZSB0cmllcyB0byBhY2Nlc3MgYQo+Pj4+PiB2cG11LXN0 cnVjdCB0aGF0IGlzbsK0dCB0aGVyZSBpbiB0aGUgY3VycmVudCB2Y3B1IGFuZCBwYW5pY3MpLgo+ Pgo+PiBXaG8gaXMgdHJ5aW5nIHRvIHdyaXRlIHRvIE1TUl9JQTMyX0RTX0FSRUE/IFRoZSBndWVz dCBvciBkb20wPyBJIHRob3VnaHQKPj4geW91IHNhaWQgdGhhdCB5b3Ugd2FudCBkb20wIHRvIGRv IHNhbXBsaW5nLiBPciBhcmUgeW91IHRyeWluZyB0byBzZXR1cAo+PiBEUyBhcmVhIGZyb20geW91 ciBndWVzdCBhbmQgY29udHJvbCBpdCBmcm9tIGRvbTA/IEkgYW0gc29tZXdoYXQgY29uZnVzZWQu Cj4+Cj4+Pj4gQ2FuIHlvdSBwb3N0IGh5cGVydmlzb3IgbG9nPyAoaGFyZCB0byBzYXkgaG93IGhl bHBmdWwgaXQgd2lsbCBiZSB3aXRob3V0Cj4+Pj4gc2VlaW5nIHlvdXIgY29kZSBjaGFuZ2VzIHRo b3VnaCkKPj4+Pgo+Pj4gUmlnaHQgYWZ0ZXIgZW5hYmxpbmcgdGhlIEJUUyBJIGdldCBhIHRyaXBs ZSBmYXVsdC4KPj4+IGh2bS5jOjEzNTc6ZDIgVHJpcGxlIGZhdWx0IG9uIFZDUFUwIC0gaW52b2tp bmcgSFZNIHNodXRkb3duIGFjdGlvbiAxLgo+Pgo+PiBUaGF0J3Mgbm90IGhvc3QgcmVib290LCB0 aGlzIGlzIHlvdXIgZ3Vlc3QgZHlpbmcuCj4+Cj4+Cj4+Pj4+IFdoZW4gSSB1c2UgYSBtb2RpZmll ZCB2ZXJzaW9uIG9mIHZteF9tc3Jfd3JpdGVfaW50ZXJjZXB0IEkgZG9u4oCZdCBnZXQKPj4+Pj4g YW55IGNyYXNoZXMgYXMgbG9uZyBhcyBJIGRvbuKAmXQgZW5hYmxlIEJUUyBhbmQgVFIgaW4gdGhl Cj4+Pj4+IEdVRVNUX0lBMzJfREVCVUdDVEwgKEJUUiB3b3JrcykuIFdoZW4gSSBlbmFibGUgdGhl IEJUUyAoYW5kIFRSKSB0aGUKPj4+Pj4gZ3Vlc3QgY3Jhc2hlcy4gSSBzdXBwb3NlIGhlIGdldHMg a2lsbGVkIGJ5IHRoZSBoeXBlcnZpc29yIGZvcgo+Pj4+PiBhY2Nlc3NpbmcgZm9yYmlkZGVuIG1l bW9yeS4KPj4+Pj4KPj4+PiBQb3NzaWJseSBiZWNhdXNlIERTIGFyZWEgcG9pbnQgdG8gaHlwZXJ2 aXNvciBtZW1vcnkuCj4+Pj4KPj4+Pgo+Pj4+IEhhdmluZyBzYWlkIGFsbCB0aGlzLCBJIGFtIG5v dCBzdXJlIGhvdyB3ZWxsIEJUUyB3b3Jrcy4gWW91IGRpZCBub3RpY2UKPj4+PiB0aGlzIGluIHRo ZSBoeXBlcnZpc29yIGxvZzoKPj4+Pgo+Pj4+IChYRU4pICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+Pj4+IChYRU4pICoqIFdBUk5JTkc6IEVt dWxhdGlvbiBvZiBCVFMgRmVhdHVyZSBpcyBzd2l0Y2hlZCBvbiAqKgo+Pj4+IChYRU4pICoqIFVz aW5nIHRoaXMgcHJvY2Vzc29yIGZlYXR1cmUgaW4gYSB2aXJ0dWFsaXplZCAqKgo+Pj4+IChYRU4p ICoqIGVudmlyb25tZW50IGlzIG5vdCAxMDAlIHNhZmUuICoqCj4+Pj4gKFhFTikgKiogU2V0dGlu ZyB0aGUgRFMgYnVmZmVyIGFkZHJlc3Mgd2l0aCB3cm9uZyB2YWx1ZXMgKioKPj4+PiAoWEVOKSAq KiBtYXkgbGVhZCB0byBoeXBlcnZpc29yIGhhbmdzIG9yIGNyYXNoZXMuICoqCj4+Pj4gKFhFTikg KiogSXQgaXMgTk9UIHJlY29tbWVuZGVkIGZvciBwcm9kdWN0aW9uIHVzZSEgKioKPj4+PiAoWEVO KSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK Pj4+Pgo+Pj4gWWVzLCBJIHNhdyB0aGF0LiBJdCBkb2VzbuKAmXQgc3RhdGUgdGhhdCBCVFMgaXMg bm90IHdvcmtpbmcgYXQgYWxsLCBqdXN0IHRoYXQgaXQgaXMgbm90IHRoYXQgc2FmZSB0byB1c2Uu Cj4+PiBBcyBJIHVuZGVyc3RhbmQgaXQgYXMgbG9uZyBhcyBJIHNldCB0aGUgRFMgYnVmZmVyIGFk ZHJlc3MgY29ycmVjdGx5IEkgc2hvdWxkIGJlIGZpbmUsIHJpZ2h0Pwo+PiBSaWdodC4gRXhjZXB0 IHRoYXQgSSBhbSBub3QgY29udmluY2VkIHlvdSBkaWQgc2V0IHRoaXMgYnVmZmVyIGNvcnJlY3Rs eSwKPj4gd2hpY2ggaXMgcG9zc2libHkgd2h5IHlvdXIgaHlwZXJ2aXNvciBjcmFzaGVkIChJIGFt IG5vdCBzdXJlIEkKPj4gdW5kZXJzdG9vZCB1bmRlciB3aGF0IGNpcmN1bXN0YW5jZXMgdGhvdWdo KS4KPj4KPj4gLWJvcmlzCj4+Cj4+PiBTaW5jZSBJIGRvbuKAmXQgd2FudCB0byB1c2UgZm9yIHBy b2R1Y3Rpb24gdGhhdCBpcyBmaW5lIHdpdGggbWUuIEF0IGxlYXN0IGZvciBub3cuCj4+Pgo+Pj4K Pj4+IEtldmluCj4+Pj4gLWJvcmlzCj4+Pj4KPj4+Pgo+Pj4+PiBUaGUgbW9kaWZpZWQgdmVyc2lv biBvZiB2bXhfbXNyX3dyaXRlX2ludGVyY2VwdCB0YWtlcyBhIHZjcHUtc3RydWN0IGFzCj4+Pj4+ IGEgcGFyYW1ldGVyIGFuZCB1c2VzIHRoaXMgaW5zdGVhZCBvZiB0aGUgY3VycmVudCB2Y3B1Lgo+ Pj4+Pgo+Pj4+PiBJbnN0ZWFkIG9mCj4+Pj4+Cj4+Pj4+IHN0YXRpY2ludCB2bXhfbXNyX3dyaXRl X2ludGVyY2VwdCh1bnNpZ25lZCBpbnQgbXNyLCB1aW50NjRfdAo+Pj4+IG1zcl9jb250ZW50KQo+ Pj4+PiB7Cj4+Pj4+Cj4+Pj4+ICAgICAgIHN0cnVjdCB2Y3B1ICp2ID0gY3VycmVudDsKPj4+Pj4K Pj4+Pj4gSSBqdXN0IGhhdmUKPj4+Pj4KPj4+Pj4gc3RhdGljaW50IG93bl92bXhfbXNyX3dyaXRl X2ludGVyY2VwdCh1bnNpZ25lZCBpbnQgbXNyLCB1aW50NjRfdAo+Pj4+PiBtc3JfY29udGVudCwg c3RydWN0IHZjcHUgKnYpCj4+Pj4+Cj4+Pj4+IEkgZ2V0IHRoaXMgdmNwdSBieSBkLT52Y3B1WzBd IGFzIEkgaGF2ZSBsaW1pdGVkIG15IGd1ZXN0IGRvbWFpbiB0byBvbmUKPj4+Pj4gdmNwdSBhdG0u Cj4+Pj4+Cj4+Pj4+IE9mIGNvdXJzZSBJIGFsc28gdXNlIHNpbWlsYXJseSBtb2RpZmllZCB2ZXJz aW9uIG9mIHRoZSBjYWxsZWQKPj4+Pj4gZnVuY3Rpb25zKHZwbXVfZG9fd3Jtc3Is4oCmKS4KPj4+ Pj4KPj4+Pj4gScK0bSBwcmV0dHkgc3VyZSB0aGF0IG15IHByb2JsZW0gaXMgd2l0aCBhIHdyb25n IHNjb3BlL3VzYWdlIG9mIHRoZQo+Pj4+PiB2Y3B1cy9tZW1vcnksIGJ1dCBJIGhhdmUgbm8gaWRl YSBob3cgdG8gZml4IHRoaXMuCj4+Pj4+Cj4+Pj4+IEkgY2FuIHNlZSBhIHBvdGVudGlhbCBwcm9i bGVtIHdpdGggdGhlIG1lbW9yeSBhbGxvY2F0aW9uIChpbiB0aGUgaG9zdCkKPj4+Pj4gaW50byB3 aGljaCB0aGUgY3B1IGluIGd1ZXN0LW1vZGUgaXMgc3VwcG9zZWQgdG8gd3JpdGUuCj4+Pj4+Cj4+ Pj4+IE9yIG1heWJlIEkgZ290IHRoZSBwcmluY2lwbGUgb2YgYSB2Y3B1L3ZwbXUgYWxsIHdyb25n Lgo+Pj4+Pgo+Pj4+PiBTaW5jZSBJIGNvdWxkbuKAmXQgZmluZCBhbnkgcHJvamVjdCB0aGF0IHVz ZXMgdGhlIEJUUyBmb3IgdGhlIGd1ZXN0LCBJCj4+Pj4+IGFtIHdvbmRlcmluZyBpZiBhbnlvbmUg aGFzIGV2ZXIgZG9uZSB0aGlzIGFuZCBpZiBpdCBpcyBwb3NzaWJsZSBhdCBhbGwuCj4+Pj4+Cj4+ Pj4+IEFueSBpbnB1dCBpcyB3ZWxjb21lIGFzIEkgYW0gcHJldHR5IG11Y2ggc3R1Y2sgYXRt4oCm Cj4+Pj4+Cj4+Pj4+IENoZWVycwo+Pj4+Pgo+Pj4+PiBLZXZpbgo+CgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApY ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK