From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: Xen virtual IOMMU high level design doc V2 Date: Tue, 18 Oct 2016 16:26:32 -0400 Message-ID: <20161018202631.GO30736@x230.dumpdata.com> References: <57518B78.6060604@citrix.com> <647d0b74-cecc-db33-1033-f7201c8a0af5@intel.com> <13fa96c1-4e66-e8a0-3b66-1c93ad2b6543@intel.com> <577BD8D002000078000FB3F7@prv-mh.provo.novell.com> <3f375a3e-0bbb-ca70-9ea2-e8a970a5dc72@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <3f375a3e-0bbb-ca70-9ea2-e8a970a5dc72@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Lan Tianyu Cc: "yang.zhang.wz@gmail.com" , Kevin Tian , Stefano Stabellini , Jan Beulich , Andrew Cooper , "ian.jackson@eu.citrix.com" , xuquan8@huawei.com, "xen-devel@lists.xensource.com" , Jun Nakajima , "anthony.perard@citrix.com" , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org T24gVHVlLCBPY3QgMTgsIDIwMTYgYXQgMTA6MTQ6MTZQTSArMDgwMCwgTGFuIFRpYW55dSB3cm90 ZToKPiBDaGFuZ2Ugc2luY2UgVjE6Cj4gCTEpIFVwZGF0ZSBtb3RpdmF0aW9uIGZvciBYZW4gdklP TU1VIC0gMjg4IHZjcHVzIHN1cHBvcnQgcGFydAo+IAkyKSBDaGFuZ2UgZGVmaW5pdGlvbiBvZiBz dHJ1Y3QgeGVuX3N5c2N0bF92aW9tbXVfb3AKPiAJMykgVXBkYXRlICIzLjUgSW1wbGVtZW50YXRp b24gY29uc2lkZXJhdGlvbiIgdG8gZXhwbGFpbiB3aHkgd2UgbmVlZHMgdG8KPiBlbmFibGUgbDIg dHJhbnNsYXRpb24gZmlyc3QuCj4gCTQpIFVwZGF0ZSAiNC4zIFEzNSB2cyBJNDQweCIgLSBMaW51 eC9XaW5kb3dzIFZURCBkcml2ZXJzIGNhbiB3b3JrIG9uIHRoZQo+IGVtdWxhdGVkIEk0NDAgY2hp cHNldC4KPiAJNSkgUmVtb3ZlIHN0YWxlIHN0YXRlbWVudCBpbiB0aGUgIjMuMyBJbnRlcnJ1cHQg cmVtYXBwaW5nIgo+IAo+IENvbnRlbnQ6Cj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+IDEuIE1v dGl2YXRpb24gb2YgdklPTU1VCj4gCTEuMSBFbmFibGUgbW9yZSB0aGFuIDI1NSB2Y3B1cwo+IAkx LjIgU3VwcG9ydCBWRklPLWJhc2VkIHVzZXIgc3BhY2UgZHJpdmVyCj4gCTEuMyBTdXBwb3J0IGd1 ZXN0IFNoYXJlZCBWaXJ0dWFsIE1lbW9yeSAoU1ZNKQo+IDIuIFhlbiB2SU9NTVUgQXJjaGl0ZWN0 dXJlCj4gCTIuMSBsMiB0cmFuc2xhdGlvbiBvdmVydmlldwo+IAkyLjIgSW50ZXJydXB0IHJlbWFw cGluZyBvdmVydmlldwo+IDMuIFhlbiBoeXBlcnZpc29yCj4gCTMuMSBOZXcgdklPTU1VIGh5cGVy Y2FsbCBpbnRlcmZhY2UKPiAJMy4yIGwyIHRyYW5zbGF0aW9uCj4gCTMuMyBJbnRlcnJ1cHQgcmVt YXBwaW5nCj4gCTMuNCBsMSB0cmFuc2xhdGlvbgo+IAkzLjUgSW1wbGVtZW50YXRpb24gY29uc2lk ZXJhdGlvbgo+IDQuIFFlbXUKPiAJNC4xIFFlbXUgdklPTU1VIGZyYW1ld29yawo+IAk0LjIgRHVt bXkgeGVuLXZJT01NVSBkcml2ZXIKPiAJNC4zIFEzNSB2cy4gaTQ0MHgKPiAJNC40IFJlcG9ydCB2 SU9NTVUgdG8gaHZtbG9hZGVyCj4gCj4gCj4gMSBNb3RpdmF0aW9uIGZvciBYZW4gdklPTU1VCj4g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQo+IDEuMSBFbmFibGUgbW9yZSB0aGFuIDI1NSB2Y3B1IHN1 cHBvcnQKPiBIUEMgY2xvdWQgc2VydmljZSByZXF1aXJlcyBWTSBwcm92aWRlcyBoaWdoIHBlcmZv cm1hbmNlIHBhcmFsbGVsCj4gY29tcHV0aW5nIGFuZCB3ZSBob3BlIHRvIGNyZWF0ZSBhIGh1Z2Ug Vk0gd2l0aCA+MjU1IHZjcHUgb24gb25lIG1hY2hpbmUKPiB0byBtZWV0IHN1Y2ggcmVxdWlyZW1l bnQuUGluZyBlYWNoIHZjcHVzIG9uIHNlcGFyYXRlZCBwY3B1cy4gTW9yZSB0aGFuCj4gMjU1IHZj cHVzIHN1cHBvcnQgcmVxdWlyZXMgWDJBUElDIGFuZCBMaW51eCBkaXNhYmxlcyBYMkFQSUMgbW9k ZSBpZgo+IHRoZXJlIGlzIG5vIGludGVycnVwdCByZW1hcHBpbmcgZnVuY3Rpb24gd2hpY2ggaXMg cHJlc2VudCBieSB2SU9NTVUuCj4gSW50ZXJydXB0IHJlbWFwcGluZyBmdW5jdGlvbiBoZWxwcyB0 byBkZWxpdmVyIGludGVycnVwdCB0byAjdmNwdSA+MjU1Lgo+IFNvIHdlIG5lZWQgdG8gYWRkIHZJ T01NVSBiZWZvcmUgZW5hYmxpbmcgPjI1NSB2Y3B1cy4KCldoYXQgYWJvdXQgV2luZG93cz8gRG9l cyBpdCBjYXJlIGFib3V0IHRoaXM/Cgo+IAo+IDEuMiBTdXBwb3J0IFZGSU8tYmFzZWQgdXNlciBz cGFjZSBkcml2ZXIgKGUuZy4gRFBESykgaW4gdGhlIGd1ZXN0Cj4gSXQgcmVsaWVzIG9uIHRoZSBs MiB0cmFuc2xhdGlvbiBjYXBhYmlsaXR5IChJT1ZBLT5HUEEpIG9uCj4gdklPTU1VLiBwSU9NTVUg bDIgYmVjb21lcyBhIHNoYWRvd2luZyBzdHJ1Y3R1cmUgb2YKPiB2SU9NTVUgdG8gaXNvbGF0ZSBE TUEgcmVxdWVzdHMgaW5pdGlhdGVkIGJ5IHVzZXIgc3BhY2UgZHJpdmVyLgo+IAo+IAo+IDEuMyBT dXBwb3J0IGd1ZXN0IFNWTSAoU2hhcmVkIFZpcnR1YWwgTWVtb3J5KQo+IEl0IHJlbGllcyBvbiB0 aGUgbDEgdHJhbnNsYXRpb24gdGFibGUgY2FwYWJpbGl0eSAoR1ZBLT5HUEEpIG9uCj4gdklPTU1V LiBwSU9NTVUgbmVlZHMgdG8gZW5hYmxlIGJvdGggbDEgYW5kIGwyIHRyYW5zbGF0aW9uIGluIG5l c3RlZAo+IG1vZGUgKEdWQS0+R1BBLT5IUEEpIGZvciBwYXNzdGhyb3VnaCBkZXZpY2UuIElHRCBw YXNzdGhyb3VnaAo+IGlzIHRoZSBtYWluIHVzYWdlIHRvZGF5ICh0byBzdXBwb3J0IE9wZW5DTCAy LjAgU1ZNIGZlYXR1cmUpLiBJbiB0aGUKPiBmdXR1cmUgU1ZNIG1pZ2h0IGJlIHVzZWQgYnkgb3Ro ZXIgSS9PIGRldmljZXMgdG9vLgo+IAo+IDIuIFhlbiB2SU9NTVUgQXJjaGl0ZWN0dXJlCj4gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KPiAKPiAqIHZJT01NVSB3aWxsIGJlIGluc2lkZSBYZW4gaHlw ZXJ2aXNvciBmb3IgZm9sbG93aW5nIGZhY3RvcnMKPiAJMSkgQXZvaWQgcm91bmQgdHJpcHMgYmV0 d2VlbiBRZW11IGFuZCBYZW4gaHlwZXJ2aXNvcgo+IAkyKSBFYXNlIG9mIGludGVncmF0aW9uIHdp dGggdGhlIHJlc3Qgb2YgdGhlIGh5cGVydmlzb3IKPiAJMykgSFZNbGl0ZS9QVkggZG9lc24ndCB1 c2UgUWVtdQo+ICogRHVtbXkgeGVuLXZJT01NVSBpbiBRZW11IGFzIGEgd3JhcHBlciBvZiBuZXcg aHlwZXJjYWxsIHRvIGNyZWF0ZQo+IC9kZXN0b3J5IHZJT01NVSBpbiBoeXBlcnZpc29yIGFuZCBk ZWFsIHdpdGggdmlydHVhbCBQQ0kgZGV2aWNlJ3MgbDIKCmRlc3Ryb3kKPiB0cmFuc2xhdGlvbi4K PiAKPiAyLjEgbDIgdHJhbnNsYXRpb24gb3ZlcnZpZXcKPiBGb3IgVmlydHVhbCBQQ0kgZGV2aWNl LCBkdW1teSB4ZW4tdklPTU1VIGRvZXMgdHJhbnNsYXRpb24gaW4gdGhlCj4gUWVtdSB2aWEgbmV3 IGh5cGVyY2FsbC4KPiAKPiBGb3IgcGh5c2ljYWwgUENJIGRldmljZSwgdklPTU1VIGluIGh5cGVy dmlzb3Igc2hhZG93cyBJTyBwYWdlIHRhYmxlIGZyb20KPiBJT1ZBLT5HUEEgdG8gSU9WQS0+SFBB IGFuZCBsb2FkIHBhZ2UgdGFibGUgdG8gcGh5c2ljYWwgSU9NTVUuCj4gCj4gVGhlIGZvbGxvd2lu ZyBkaWFncmFtIHNob3dzIGwyIHRyYW5zbGF0aW9uIGFyY2hpdGVjdHVyZS4KPiArLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+IHxRZW11 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLSsgICB8Cj4g fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIFZpcnR1YWwgICAgfCAg IHwKPiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIFBDSSBkZXZpY2Ug ICB8ICAgfAo+IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgIHwgICB8Cj4gfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0t LS0tLS0tLS0tLS0tKyAgIHwKPiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8RE1BICAgICAgICAgfAo+IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFYgICAgICAgICAgICB8Cj4gfCAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tKyAg IFJlcXVlc3QgICstLS0tLS0tLS0tLS0tLS0tKyAgIHwKPiB8ICB8ICAgICAgICAgICAgICAgICAg ICArPC0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICB8ICAgfAo+IHwgIHwgIER1bW15IHhlbiB2 SU9NTVUgIHwgVGFyZ2V0IEdQQSB8ICBNZW1vcnkgcmVnaW9uIHwgICB8Cj4gfCAgfCAgICAgICAg ICAgICAgICAgICAgKy0tLS0tLS0tLS0tPisgICAgICAgICAgICAgICAgfCAgIHwKPiB8ICArLS0t LS0tLS0tKy0tLS0tLS0tLS0rICAgICAgICAgICAgKy0tLS0tLS0rLS0tLS0tLS0rICAgfAo+IHwg ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8 Cj4gfCAgICAgICAgICAgIHxIeXBlcmNhbGwgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgIHwKPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKwo+IHxIeXBlcnZpc29yICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgICAgICAgICB8Cj4gfCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgIHwKPiB8ICAgICAgICAgICAgdiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgfAo+IHwgICAgICstLS0tLS0rLS0tLS0tKyAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8Cj4gfCAgICAgfCAgIHZJT01NVSAgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKPiB8ICAgICArLS0tLS0tKy0tLS0t LSsgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAo+IHwgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8Cj4gfCAgICAgICAg ICAgIHYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKPiB8ICAg ICArLS0tLS0tKy0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAo+ IHwgICAgIHwgSU9NTVUgZHJpdmVyfCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg ICB8Cj4gfCAgICAgKy0tLS0tLSstLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgIHwKPiB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgfAo+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rCj4gfEhXICAgICAgICAgIHYgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgViAgICAgICAgICAgIHwKPiB8ICAgICArLS0tLS0tKy0tLS0tLSsgICAgICAgICAg ICAgICAgICstLS0tLS0tLS0tLS0tKyAgICAgfAo+IHwgICAgIHwgICBJT01NVSAgICAgKy0tLS0t LS0tLS0tLS0tLS0+KyAgTWVtb3J5ICAgICB8ICAgICB8Cj4gfCAgICAgKy0tLS0tLSstLS0tLS0r ICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLSsgICAgIHwKPiB8ICAgICAgICAgICAgXiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+IHwgICAgICAgICAg ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4gfCAgICAg Ky0tLS0tLSstLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPiB8 ICAgICB8IFBDSSBEZXZpY2UgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fAo+IHwgICAgICstLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8Cj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSsKPiAKPiAyLjIgSW50ZXJydXB0IHJlbWFwcGluZyBvdmVydmlldy4KPiBJbnRl cnJ1cHRzIGZyb20gdmlydHVhbCBkZXZpY2VzIGFuZCBwaHlzaWNhbCBkZXZpY2VzIHdpbGwgYmUg ZGVsaXZlcmVkCj4gdG8gdkxBUElDIGZyb20gdklPQVBJQyBhbmQgdk1TSS4gdklPTU1VIHdpbGwg cmVtYXAgaW50ZXJydXB0IGR1cmluZyB0aGlzCj4gcHJvY2VkdXJlLgo+IAo+ICstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4gfFFlbXUgICAgICAg ICAgICAgICAgICAgICAgIHxWTSAgICAgICAgICAgICAgICAgICAgIHwKPiB8ICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCArLS0tLS0tLS0tLS0tLS0tLSsgICAgfAo+IHwgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IHwgIERldmljZSBkcml2ZXIgfCAgICB8Cj4gfCAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgKy0tLS0tLS0tKy0tLS0tLS0rICAgIHwKPiB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICBeICAgICAgICAgICAgfAo+IHwgICAgICAgKy0tLS0tLS0t LS0tLS0tLS0rICB8ICstLS0tLS0tLSstLS0tLS0tKyAgICB8Cj4gfCAgICAgICB8IFZpcnR1YWwg ZGV2aWNlIHwgIHwgfCAgSVJRIHN1YnN5c3RlbSB8ICAgIHwKPiB8ICAgICAgICstLS0tLS0tKy0t LS0tLS0tKyAgfCArLS0tLS0tLS0rLS0tLS0tLSsgICAgfAo+IHwgICAgICAgICAgICAgICB8ICAg ICAgICAgICB8ICAgICAgICAgIF4gICAgICAgICAgICB8Cj4gfCAgICAgICAgICAgICAgIHwgICAg ICAgICAgIHwgICAgICAgICAgfCAgICAgICAgICAgIHwKPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+IHxoeXBlcnZpb3NyICAgICB8ICAgICAg ICAgICAgICAgICAgICAgIHwgVklSUSAgICAgICB8Cj4gfCAgICAgICAgICAgICAgIHwgICAgICAg ICAgICArLS0tLS0tLS0tKy0tLS0tLS0tKyAgIHwKPiB8ICAgICAgICAgICAgICAgfCAgICAgICAg ICAgIHwgICAgICB2TEFQSUMgICAgICB8ICAgfAo+IHwgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgKy0tLS0tLS0tLSstLS0tLS0tLSsgICB8Cj4gfCAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgICAgICAgXiAgICAgICAgICAgIHwKPiB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgfAo+IHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAg Ky0tLS0tLS0tLSstLS0tLS0tLSsgICB8Cj4gfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8 ICAgICAgdklPTU1VICAgICAgfCAgIHwKPiB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICst LS0tLS0tLS0rLS0tLS0tLS0rICAgfAo+IHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg ICAgICAgIF4gICAgICAgICAgICB8Cj4gfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgIHwKPiB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICstLS0t LS0tLS0rLS0tLS0tLS0rICAgfAo+IHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgIHZJ T0FQSUMvdk1TSSAgIHwgICB8Cj4gfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICArLS0tLSst LS0tKy0tLS0tLS0tKyAgIHwKPiB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgXiAg ICBeICAgICAgICAgICAgfAo+IHwgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0rICAg IHwgICAgICAgICAgICB8Cj4gfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgIHwKPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKwo+IEhXICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxJ UlEKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0r Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBQQ0kgRGV2aWNlICAgICAgfAo+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLSsKPiAK PiAKPiAKPiAKPiAzIFhlbiBoeXBlcnZpc29yCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPiAzLjEgTmV3 IGh5cGVyY2FsbCBYRU5fU1lTQ1RMX3Zpb21tdV9vcAo+IFRoaXMgaHlwZXJjYWxsIHNob3VsZCBh bHNvIHN1cHBvcnQgcHYgSU9NTVUgd2hpY2ggaXMgc3RpbGwgdW5kZXIgUkZDIHJldmlldy4KPiBI ZXJlIG9ubHkgY292ZXJzIG5vbi1wdiBwYXJ0Lgo+IAo+IDEpIERlZmluaXRpb24gb2YgInN0cnVj dCB4ZW5fc3lzY3RsX3Zpb21tdV9vcCIgYXMgbmV3IGh5cGVyY2FsbCBwYXJhbWV0ZXIuCj4gCj4g c3RydWN0IHhlbl9zeXNjdGxfdmlvbW11X29wIHsKPiAJdTMyIGNtZDsKPiAJdTMyIGRvbWlkOwo+ IAl1bmlvbiB7Cj4gCQlzdHJ1Y3Qgewo+IAkJCXUzMiBjYXBhYmlsaXRpZXM7Cj4gCQl9IHF1ZXJ5 X2NhcGFiaWxpdGllczsKPiAJCXN0cnVjdCB7Cj4gCQkJdTMyIGNhcGFiaWxpdGllczsKPiAJCQl1 NjQgYmFzZV9hZGRyZXNzOwo+IAkJfSBjcmVhdGVfaW9tbXU7Cj4gCSAgICAgICAgc3RydWN0IHsK PiAJCQkvKiBJTiBwYXJhbWV0ZXJzLiAqLwo+IAkJCXUxNiBzZWdtZW50Owo+ICAgICAgICAgICAg IAkJdTggIGJ1czsKPiAgICAgICAgICAgICAJCXU4ICBkZXZmbjsKPiAgICAgICAgICAgICAJCXU2 NCBpb3ZhOwo+IAkgICAgCQkvKiBPdXQgcGFyYW1ldGVycy4gKi8KPiAgICAgICAgICAgICAJCXU2 NCB0cmFuc2xhdGVkX2FkZHI7Cj4gICAgICAgICAgICAgCQl1NjQgYWRkcl9tYXNrOyAvKiBUcmFu c2xhdGlvbiBwYWdlIHNpemUgKi8KPiAgICAgICAgICAgICAJCUlPTU1VQWNjZXNzRmxhZ3MgcGVy bWlzc29uOwo+ICAgICAgICAgCX0gbDJfdHJhbnNsYXRpb247CQkKPiB9Owo+IAo+IHR5cGVkZWYg ZW51bSB7Cj4gCUlPTU1VX05PTkUgPSAwLAo+IAlJT01NVV9STyAgID0gMSwKPiAJSU9NTVVfV08g ICA9IDIsCj4gCUlPTU1VX1JXICAgPSAzLAo+IH0gSU9NTVVBY2Nlc3NGbGFnczsKPiAKPiAKPiBE ZWZpbml0aW9uIG9mIFZJT01NVSBzdWJvcHM6Cj4gI2RlZmluZSBYRU5fU1lTQ1RMX3Zpb21tdV9x dWVyeV9jYXBhYmlsaXR5CQkwCj4gI2RlZmluZSBYRU5fU1lTQ1RMX3Zpb21tdV9jcmVhdGUJCQkx Cj4gI2RlZmluZSBYRU5fU1lTQ1RMX3Zpb21tdV9kZXN0cm95CQkJMgo+ICNkZWZpbmUgWEVOX1NZ U0NUTF92aW9tbXVfZG1hX3RyYW5zbGF0aW9uX2Zvcl92cGRldiAJMwo+IAo+IERlZmluaXRpb24g b2YgVklPTU1VIGNhcGFiaWxpdGllcwo+ICNkZWZpbmUgWEVOX1ZJT01NVV9DQVBBQklMSVRZX2wx X3RyYW5zbGF0aW9uCSgxIDw8IDApCj4gI2RlZmluZSBYRU5fVklPTU1VX0NBUEFCSUxJVFlfbDJf dHJhbnNsYXRpb24JKDEgPDwgMSkKPiAjZGVmaW5lIFhFTl9WSU9NTVVfQ0FQQUJJTElUWV9pbnRl cnJ1cHRfcmVtYXBwaW5nCSgxIDw8IDIpCj4gCj4gCj4gMikgRGVzaWduIGZvciBzdWJvcHMKPiAt IFhFTl9TWVNDVExfdmlvbW11X3F1ZXJ5X2NhcGFiaWxpdHkKPiAgICAgICAgR2V0IHZJT01NVSBj YXBhYmlsaXRpZXMobDEvbDIgdHJhbnNsYXRpb24gYW5kIGludGVycnVwdAo+IHJlbWFwcGluZyku Cj4gCj4gLSBYRU5fU1lTQ1RMX3Zpb21tdV9jcmVhdGUKPiAgICAgICBDcmVhdGUgdklPTU1VIGlu IFhlbiBoeXBlcnZpc29yIHdpdGggZG9tX2lkLCBjYXBhYmlsaXRpZXMgYW5kIHJlZwo+IGJhc2Ug YWRkcmVzcy4KPiAKPiAtIFhFTl9TWVNDVExfdmlvbW11X2Rlc3Ryb3kKPiAgICAgICBEZXN0b3J5 IHZJT01NVSBpbiBYZW4gaHlwZXJ2aXNvciB3aXRoIGRvbV9pZCBhcyBwYXJhbWV0ZXJzLgo+IAo+ IC0gWEVOX1NZU0NUTF92aW9tbXVfZG1hX3RyYW5zbGF0aW9uX2Zvcl92cGRldgo+ICAgICAgIFRy YW5zbGF0ZSBJT1ZBIHRvIEdQQSBmb3Igc3BlY2lmaWVkIHZpcnR1YWwgUENJIGRldmljZSB3aXRo IGRvbSBpZCwKPiBQQ0kgZGV2aWNlJ3MgYmRmIGFuZCBJT1ZBIGFuZCB4ZW4gaHlwZXJ2aXNvciBy ZXR1cm5zIHRyYW5zbGF0ZWQgR1BBLAo+IGFkZHJlc3MgbWFzayBhbmQgYWNjZXNzIHBlcm1pc3Np b24uCj4gCj4gCj4gMy4yIGwyIHRyYW5zbGF0aW9uCj4gMSkgRm9yIHZpcnR1YWwgUENJIGRldmlj ZQo+IFhlbiBkdW1teSB4ZW4tdklPTU1VIGluIFFlbXUgdHJhbnNsYXRlcyBJT1ZBIHRvIHRhcmdl dCBHUEEgdmlhIG5ldwo+IGh5cGVyY2FsbCB3aGVuIERNQSBvcGVyYXRpb24gaGFwcGVucy4KPiAK PiAyKSBGb3IgcGh5c2ljYWwgUENJIGRldmljZQo+IERNQSBvcGVyYXRpb25zIGdvIHRob3VnaCBw aHlzaWNhbCBJT01NVSBkaXJlY3RseSBhbmQgSU8gcGFnZSB0YWJsZSBmb3IKPiBJT1ZBLT5IUEEg c2hvdWxkIGJlIGxvYWRlZCBpbnRvIHBoeXNpY2FsIElPTU1VLiBXaGVuIGd1ZXN0IHVwZGF0ZXMK PiBsMiBQYWdlLXRhYmxlIHBvaW50ZXIgZmllbGQsIGl0IHByb3ZpZGVzIElPIHBhZ2UgdGFibGUg Zm9yCj4gSU9WQS0+R1BBLiB2SU9NTVUgbmVlZHMgdG8gc2hhZG93IGwyIHRyYW5zbGF0aW9uIHRh YmxlLCB0cmFuc2xhdGUKPiBHUEEtPkhQQSBhbmQgdXBkYXRlIHNoYWRvdyBwYWdlIHRhYmxlKElP VkEtPkhQQSkgcG9pbnRlciB0byBsMgo+IFBhZ2UtdGFibGUgcG9pbnRlciB0byBjb250ZXh0IGVu dHJ5IG9mIHBoeXNpY2FsIElPTU1VLgo+IAo+IE5vdyBhbGwgUENJIGRldmljZXMgaW4gc2FtZSBo dm0gZG9tYWluIHNoYXJlIG9uZSBJTyBwYWdlIHRhYmxlCj4gKEdQQS0+SFBBKSBpbiBwaHlzaWNh bCBJT01NVSBkcml2ZXIgb2YgWGVuLiBUbyBzdXBwb3J0IGwyCj4gdHJhbnNsYXRpb24gb2YgdklP TU1VLCBJT01NVSBkcml2ZXIgbmVlZCB0byBzdXBwb3J0IG11bHRpcGxlIGFkZHJlc3MKPiBzcGFj ZXMgcGVyIGRldmljZSBlbnRyeS4gVXNpbmcgZXhpc3RpbmcgSU8gcGFnZSB0YWJsZShHUEEtPkhQ QSkKPiBkZWZhdWx0bHkgYW5kIHN3aXRjaCB0byBzaGFkb3cgSU8gcGFnZSB0YWJsZShJT1ZBLT5I UEEpIHdoZW4gbDIKCmRlZmF1bHRseT8KCj4gdHJhbnNsYXRpb24gZnVuY3Rpb24gaXMgZW5hYmxl ZC4gVGhlc2UgY2hhbmdlIHdpbGwgbm90IGFmZmVjdCBjdXJyZW50Cj4gUDJNIGxvZ2ljLgoKV2hh dCBoYXBwZW5zIGlmIHRoZSBndWVzdHMgSU8gcGFnZSB0YWJsZXMgaGF2ZSBpbmNvcnJlY3QgdmFs dWVzPwoKRm9yIGV4YW1wbGUgdGhlIGd1ZXN0IHNldHMgdXAgdGhlIHBhZ2V0YWJsZXMgdG8gY292 ZXIgc29tZSBzZWN0aW9uCm9mIEhQQSByYW5nZXMgKHdoaWNoIGFyZSBhbGwgZ29vZCBhbmQgcGVy bWl0dGVkKS4gQnV0IHRoZW4gZHVyaW5nIGV4ZWN1dGlvbgp0aGUgZ3Vlc3Qga2VybmVsIGRlY2lk ZXMgdG8gbXVjayBhcm91bmQgd2l0aCB0aGUgcGFnZXRhYmxlcyBhbmQgYWRkcyBhbiBIUEEKcmFu Z2UgdGhhdCBpcyBvdXRzaWRlIHdoYXQgdGhlIGd1ZXN0IGhhcyBiZWVuIGFsbG9jYXRlZC4KCldo YXQgdGhlbj8KPiAKPiAzLjMgSW50ZXJydXB0IHJlbWFwcGluZwo+IEludGVycnVwdHMgZnJvbSB2 aXJ0dWFsIGRldmljZXMgYW5kIHBoeXNpY2FsIGRldmljZXMgd2lsbCBiZSBkZWxpdmVyZWQKPiB0 byB2bGFwaWMgZnJvbSB2SU9BUElDIGFuZCB2TVNJLiBJdCBuZWVkcyB0byBhZGQgaW50ZXJydXB0 IHJlbWFwcGluZwo+IGhvb2tzIGluIHRoZSB2bXNpX2RlbGl2ZXIoKSBhbmQgaW9hcGljX2RlbGl2 ZXIoKSB0byBmaW5kIHRhcmdldCB2bGFwaWMKPiBhY2NvcmRpbmcgaW50ZXJydXB0IHJlbWFwcGlu ZyB0YWJsZS4KPiAKPiAKPiAzLjQgbDEgdHJhbnNsYXRpb24KPiBXaGVuIG5lc3RlZCB0cmFuc2xh dGlvbiBpcyBlbmFibGVkLCBhbnkgYWRkcmVzcyBnZW5lcmF0ZWQgYnkgbDEKPiB0cmFuc2xhdGlv biBpcyB1c2VkIGFzIHRoZSBpbnB1dCBhZGRyZXNzIGZvciBuZXN0aW5nIHdpdGggbDIKPiB0cmFu c2xhdGlvbi4gUGh5c2ljYWwgSU9NTVUgbmVlZHMgdG8gZW5hYmxlIGJvdGggbDEgYW5kIGwyIHRy YW5zbGF0aW9uCj4gaW4gbmVzdGVkIHRyYW5zbGF0aW9uIG1vZGUoR1ZBLT5HUEEtPkhQQSkgZm9y IHBhc3N0aHJvdWdoCj4gZGV2aWNlLgo+IAo+IFZULWQgY29udGV4dCBlbnRyeSBwb2ludHMgdG8g Z3Vlc3QgbDEgdHJhbnNsYXRpb24gdGFibGUgd2hpY2gKPiB3aWxsIGJlIG5lc3QtdHJhbnNsYXRl ZCBieSBsMiB0cmFuc2xhdGlvbiB0YWJsZSBhbmQgc28gaXQKPiBjYW4gYmUgZGlyZWN0bHkgbGlu a2VkIHRvIGNvbnRleHQgZW50cnkgb2YgcGh5c2ljYWwgSU9NTVUuCgpJIHRoaW5rIHRoaXMgbWVh bnMgdGhhdCB0aGUgc2hhcmVkX2VwdCB3aWxsIGJlIGRpc2FibGVkPwo+CldoYXQgYWJvdXQgZGlm ZmVyZW50IHZlcnNpb25zIG9mIGNvbnRleHRzPyBTYXkgdGhlIFYxIGlzIGV4cG9zZWQKdG8gZ3Vl c3QgYnV0IHRoZSBoYXJkd2FyZSBzdXBwb3J0cyBWMj8gQXJlIHRoZXJlIGFueSBmbGFncyB0aGF0 IGhhdmUKc3dhcHBlZCBwb3NpdGlvbnM/IE9yIGlzIGl0IHByZXR0eSBiYWNrd2FyZHMgY29tcGF0 aWJsZT8KIAo+IFRvIGVuYWJsZSBsMSB0cmFuc2xhdGlvbiBpbiBWTQo+IDEpIFhlbiBJT01NVSBk cml2ZXIgZW5hYmxlcyBuZXN0ZWQgdHJhbnNsYXRpb24gbW9kZQo+IDIpIFVwZGF0ZSBHUEEgcm9v dCBvZiBndWVzdCBsMSB0cmFuc2xhdGlvbiB0YWJsZSB0byBjb250ZXh0IGVudHJ5Cj4gb2YgcGh5 c2ljYWwgSU9NTVUuCj4gCj4gQWxsIGhhbmRsZXMgYXJlIGluIGh5cGVydmlzb3IgYW5kIG5vIGlu dGVyYWN0aW9uIHdpdGggUWVtdS4KCkFsbCBpcyBoYW5kbGVkIGluIGh5cGVydmlzb3IuCj4gCj4g Cj4gMy41IEltcGxlbWVudGF0aW9uIGNvbnNpZGVyYXRpb24KPiBWVC1kIHNwZWMgZG9lc24ndCBk ZWZpbmUgYSBjYXBhYmlsaXR5IGJpdCBmb3IgdGhlIGwyIHRyYW5zbGF0aW9uLgo+IEFyY2hpdGVj dHVyYWxseSB0aGVyZSBpcyBubyB3YXkgdG8gdGVsbCBndWVzdCB0aGF0IGwyIHRyYW5zbGF0aW9u Cj4gY2FwYWJpbGl0eSBpcyBub3QgYXZhaWxhYmxlLiBMaW51eCBJbnRlbCBJT01NVSBkcml2ZXIg dGhpbmtzIGwyCj4gdHJhbnNsYXRpb24gaXMgYWx3YXlzIGF2YWlsYWJsZSB3aGVuIFZURCBleGl0 cyBhbmQgZmFpbCB0byBiZSBsb2FkZWQKPiB3aXRob3V0IGwyIHRyYW5zbGF0aW9uIHN1cHBvcnQg ZXZlbiBpZiBpbnRlcnJ1cHQgcmVtYXBwaW5nIGFuZCBsMQo+IHRyYW5zbGF0aW9uIGFyZSBhdmFp bGFibGUuIFNvIGl0IG5lZWRzIHRvIGVuYWJsZSBsMiB0cmFuc2xhdGlvbiBmaXJzdAoKSSBhbSBs b3N0IG9uIHRoYXQgc2VudGVuY2UuIEFyZSB5b3Ugc2F5aW5nIHRoYXQgaXQgdHJpZXMgdG8gbG9h ZAp0aGUgSU9WQSBhbmQgaWYgdGhleSBmYWlsLi4gdGhlbiBpdCBrZWVwcyBvbiBnb2luZz8gV2hh dCBpcyB0aGUgcmVzdWx0Cm9mIHRoaXM/IFRoYXQgeW91IGNhbid0IGRvIElPVkEgKHNvIGNhbid0 IHVzZSB2ZmlvID8pCgo+IGJlZm9yZSBvdGhlciBmdW5jdGlvbnMuCj4gCj4gCj4gNCBRZW11Cj4g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Cj4gNC4xIFFlbXUgdklPTU1VIGZyYW1ld29yawo+IFFlbXUg aGFzIGEgZnJhbWV3b3JrIHRvIGNyZWF0ZSB2aXJ0dWFsIElPTU1VKGUuZy4gdmlydHVhbCBpbnRl bCBWVEQgYW5kCj4gQU1EIElPTU1VKSBhbmQgcmVwb3J0IGluIGd1ZXN0IEFDUEkgdGFibGUuIFNv IGZvciBYZW4gc2lkZSwgYSBkdW1teQo+IHhlbi12SU9NTVUgd3JhcHBlciBpcyByZXF1aXJlZCB0 byBjb25uZWN0IHdpdGggYWN0dWFsIHZJT01NVSBpbiBYZW4uCj4gRXNwZWNpYWxseSBmb3IgbDIg dHJhbnNsYXRpb24gb2YgdmlydHVhbCBQQ0kgZGV2aWNlIGJlY2F1c2UKPiBlbXVsYXRpb25zIG9m IHZpcnR1YWwgUENJIGRldmljZXMgYXJlIGluIHRoZSBRZW11LiBRZW11J3MgdklPTU1VCj4gZnJh bWV3b3JrIHByb3ZpZGVzIGNhbGxiYWNrIHRvIGRlYWwgd2l0aCBsMiB0cmFuc2xhdGlvbiB3aGVu Cj4gRE1BIG9wZXJhdGlvbnMgb2YgdmlydHVhbCBQQ0kgZGV2aWNlcyBoYXBwZW4uCgpZb3Ugc2F5 IEFNRCBhbmQgSW50ZWwuIFRoaXMgc291bmRzIHF1aXRlIE9TIGFnbm9zdGljLiBEb2VzIGl0IG1l YW4geW91CmNvdWxkIGV4cG9zZSBhbiB2SU9NTVUgdG8gYSBndWVzdCBhbmQgYWN0dWFsbHkgdXNl IHRoZSBBTUQgSU9NTVUKaW4gdGhlIGh5cGVydmlzb3I/Cj4gCj4gCj4gNC4yIER1bW15IHhlbi12 SU9NTVUgZHJpdmVyCj4gMSkgUXVlcnkgdklPTU1VIGNhcGFiaWxpdHkoRSxHIERNQSB0cmFuc2xh dGlvbiwgSW50ZXJydXB0IHJlbWFwcGluZyBhbmQKPiBTaGFyZSBWaXJ0dWFsIE1lbW9yeSkgdmlh IGh5cGVyY2FsbC4KPiAKPiAyKSBDcmVhdGUgdklPTU1VIGluIFhlbiBoeXBlcnZpc29yIHZpYSBu ZXcgaHlwZXJjYWxsIHdpdGggRFJIVSByZWdpc3Rlcgo+IGFkZHJlc3MgYW5kIGRlc2lyZWQgY2Fw YWJpbGl0eSBhcyBwYXJhbWV0ZXJzLiBEZXN0cm95IHZJT01NVSB3aGVuIFZNIGlzCj4gY2xvc2Vk Lgo+IAo+IDMpIFZpcnR1YWwgUENJIGRldmljZSdzIGwyIHRyYW5zbGF0aW9uCj4gUWVtdSBhbHJl YWR5IHByb3ZpZGVzIERNQSB0cmFuc2xhdGlvbiBob29rLiBJdCdzIGNhbGxlZCB3aGVuIERNQQo+ IHRyYW5zbGF0aW9uIG9mIHZpcnR1YWwgUENJIGRldmljZSBoYXBwZW5zLiBUaGUgZHVtbXkgeGVu LXZJT01NVSBwYXNzZXMKPiBkZXZpY2UgYmRmIGFuZCBJT1ZBIGludG8gWGVuIGh5cGVydmlzb3Ig dmlhIG5ldyBpb21tdSBoeXBlcmNhbGwgYW5kCj4gcmV0dXJuIGJhY2sgdHJhbnNsYXRlZCBHUEEu Cj4gCj4gCj4gNC4zIFEzNSB2cyBJNDQweAo+IFZULUQgaXMgaW50cm9kdWNlZCB3aXRoIFEzNSBj aGlwc2V0LiBQcmV2aW91cyBjb25jZXJuIHdhcyB0aGF0IFZURAo+IGRyaXZlciBoYXMgYXNzdW1w dGlvbiB0aGF0IFZURCBvbmx5IGV4aXN0cyBvbiBRMzUgYW5kIG5ld2VyIGNoaXBzZXQgYW5kCj4g d2UgaGF2ZSB0byBlbmFibGUgUTM1IGZpcnN0LiBBZnRlciBleHBlcmltZW50cywgTGludXgvV2lu ZG93cyBndWVzdCBjYW4KPiBib290IHVwIG9uIHRoZSBlbXVsYXRlZCBJNDQweCBjaGlwc2V0IHdp dGggVlREIGFuZCBWVEQgZHJpdmVyIGVuYWJsZXMKPiBpbnRlcnJ1cHQgcmVtYXBwaW5nIGZ1bmN0 aW9uLiBTbyB3ZSBjYW4gc2tpcCBRMzUgc3VwcG9ydCB0byBpbXBsZW1lbnQKPiB2SU9NTVUgZGly ZWN0bHkuCj4gCj4gNC40IFJlcG9ydCB2SU9NTVUgdG8gaHZtbG9hZGVyCj4gSHZtbG9hZGVyIGlz IGluIGNoYXJnZSBvZiBidWlsZGluZyBBQ1BJIHRhYmxlcyBmb3IgR3Vlc3QgT1MgYW5kIE9TCj4g cHJvYmVzIElPTU1VIHZpYSBBQ1BJIERNQVIgdGFibGUuIFNvIGh2bWxvZGVyIG5lZWRzIHRvIGtu b3cgd2hldGhlcgo+IHZJT01NVSBpcyBlbmFibGVkIG9yIG5vdCBhbmQgaXRzIGNhcGFiaWxpdHkg dG8gcHJlcGFyZSBBQ1BJIERNQVIgdGFibGUKPiBmb3IgR3Vlc3QgT1MuCj4gCj4gVGhlcmUgYXJl IHRocmVlIHdheXMgdG8gZG8gdGhhdC4KPiAxKSBFeHRlbmQgc3RydWN0IGh2bV9pbmZvX3RhYmxl IGFuZCBhZGQgdmFyaWFibGVzIGluIHRoZSBzdHJ1Y3QKPiBodm1faW5mb190YWJsZSB0byBwYXNz IHZJT01NVSBpbmZvcm1hdGlvbiB0byBodm1sb2FkZXIuIEJ1dCB0aGlzCj4gcmVxdWlyZXMgdG8g YWRkIG5ldyB4YyBpbnRlcmZhY2UgdG8gdXNlIHN0cnVjdCBodm1faW5mb190YWJsZSBpbiB0aGUg UWVtdS4KPiAKPiAyKSBQYXNzIHZJT01NVSBpbmZvcm1hdGlvbiB0byBodm1sb2FkZXIgdmlhIFhl bnN0b3JlCj4gCj4gMykgQnVpbGQgQUNQSSBETUFSIHRhYmxlIGluIFFlbXUgYW5kIHBhc3MgaXQg dG8gaHZtbG9hZGVyIHZpYSBYZW5zdG9yZS4KPiBUaGlzIHNvbHV0aW9uIGlzIGFscmVhZHkgcHJl c2VudCBpbiB0aGUgdk5WRElNTSBkZXNpZ24oNC4zLjEKPiBCdWlsZGluZyBHdWVzdCBBQ1BJIFRh Ymxlcwo+IGh0dHA6Ly93d3cuZ29zc2FtZXItdGhyZWFkcy5jb20vbGlzdHMveGVuL2RldmVsLzQz OTc2NikuCj4gCj4gVGhlIHRoaXJkIG9wdGlvbiBzZWVtcyBtb3JlIGNsZWFyIGFuZCBodm1sb2Fk ZXIgZG9lc24ndCBuZWVkIHRvIGRlYWwKPiB3aXRoIHZJT01NVSBzdHVmZnMgYW5kIGp1c3QgcGFz cyB0aHJvdWdoIERNQVIgdGFibGUgdG8gR3Vlc3QgT1MuIEFsbAo+IHZJT01NVSBzcGVjaWZpYyBz dHVmZnMgd2lsbCBiZSBwcm9jZXNzZWQgaW4gdGhlIGR1bW15IHhlbi12SU9NTVUgZHJpdmVyLgo+ IAo+IAo+IAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCj4gWGVuLWRldmVsIG1haWxpbmcgbGlzdAo+IFhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCj4g aHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxA bGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==