From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laszlo Ersek Subject: Re: [edk2] [PATCH] kvm: pass the virtual SEI syndrome to guest OS Date: Thu, 6 Apr 2017 20:55:34 +0200 Message-ID: <6ac1597a-2ed5-36b2-848d-5fd048b16d66@redhat.com> References: <76795e20-2f20-1e54-cfa5-7444f28b18ee@huawei.com> <20170321113428.GC15920@cbox> <58D17AF0.2010802@arm.com> <20170321193933.GB31111@cbox> <58DA3F68.6090901@arm.com> <20170328112328.GA31156@cbox> <20170328115413.GJ23682@e104320-lin> <58DA67BA.8070404@arm.com> <5b7352f4-4965-3ed5-3879-db871797be47@huawei.com> <20170329103658.GQ23682@e104320-lin> <2a427164-9b37-6711-3a56-906634ba7f12@redhat.com> <7c5c8ab7-8fcc-1c98-0bc1-cccb66c4c84d@huawei.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: Michael Tsirkin , kvm@vger.kernel.org, rkrcmar@redhat.com, catalin.marinas@arm.com, will.deacon@arm.com, qemu-devel@nongnu.org, wuquanming@huawei.com, wangxiongfeng2@huawei.com, Christoffer Dall , suzuki.poulose@arm.com, kvmarm@lists.cs.columbia.edu, Leif.Lindholm@linaro.com, huangshaoyu@huawei.com, vladimir.murzin@arm.com, xiexiuqi@huawei.com, Marc Zyngier , andre.przywara@arm.com, edk2-devel@lists.01.org, nd@arm.com, linux-arm-kernel@lists.infradead.org, ard.biesheuvel@linaro.org, linux-kernel@vger.kernel.org, James Morse , christoffer.dall@linaro.org To: gengdongjiu , Achin Gupta Return-path: In-Reply-To: <7c5c8ab7-8fcc-1c98-0bc1-cccb66c4c84d@huawei.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" List-Id: kvm.vger.kernel.org T24gMDQvMDYvMTcgMTQ6MzUsIGdlbmdkb25naml1IHdyb3RlOgo+IERlYXIsIExhc3psbwo+ICAg IFRoYW5rcyBmb3IgeW91ciBkZXRhaWxlZCBleHBsYW5hdGlvbi4KPiAKPiBPbiAyMDE3LzMvMjkg MTk6NTgsIExhc3psbyBFcnNlayB3cm90ZToKPj4gKFRoaXMgb3VnaHQgdG8gYmUgb25lIG9mIHRo ZSBsb25nZXN0IGFkZHJlc3MgbGlzdHMgSSd2ZSBldmVyIHNlZW4gOikKPj4gVGhhbmtzIGZvciB0 aGUgQ0MuIEknbSBnbGFkIFNoYW5ub24gaXMgYWxyZWFkeSBvbiB0aGUgQ0MgbGlzdC4gRm9yIGdv b2QKPj4gbWVhc3VyZSwgSSdtIGFkZGluZyBNU1QgYW5kIElnb3IuKQo+Pgo+PiBPbiAwMy8yOS8x NyAxMjozNiwgQWNoaW4gR3VwdGEgd3JvdGU6Cj4+PiBIaSBnZW5nZG9uZ2ppdSwKPj4+Cj4+PiBP biBXZWQsIE1hciAyOSwgMjAxNyBhdCAwNTozNjozN1BNICswODAwLCBnZW5nZG9uZ2ppdSB3cm90 ZToKPj4+Pgo+Pj4+IEhpIExhc3psby9CaWVzaGV1dmVsL1FlbXUgZGV2ZWxvcGVyLAo+Pj4+Cj4+ Pj4gICAgTm93IEkgZW5jb3VudGVyIGEgaXNzdWUgYW5kIHdhbnQgdG8gY29uc3VsdCB3aXRoIHlv dSBpbiBBUk02NCBwbGF0Zm9ybe+8jCBhcyBkZXNjcmliZWQgYmVsb3c6Cj4+Pj4KPj4+PiB3aGVu IGd1ZXN0IE9TIGhhcHBlbiBzeW5jaHJvbm91cyBvciBhc3luY2hyb25vdXMgYWJvcnQsIGt2bSBu ZWVkcwo+Pj4+IHRvIHNlbmQgdGhlIGVycm9yIGFkZHJlc3MgdG8gUWVtdSBvciBVRUZJIHRocm91 Z2ggc2lnYnVzIHRvCj4+Pj4gZHluYW1pY2FsbHkgZ2VuZXJhdGUgQVBFSSB0YWJsZS4gZnJvbSBt eSBpbnZlc3RpZ2F0aW9uLCB0aGVyZSBhcmUKPj4+PiB0d28gd2F5czoKPj4+Pgo+Pj4+ICgxKSBR ZW11IGdldCB0aGUgZXJyb3IgYWRkcmVzcywgYW5kIGdlbmVyYXRlIHRoZSBBUEVJIHRhYmxlLCB0 aGVuCj4+Pj4gbm90aWZ5IFVFRkkgdG8ga25vdyB0aGlzIGdlbmVyYXRpb24sIHRoZW4gaW5qZWN0 IGFib3J0IGVycm9yIHRvCj4+Pj4gZ3Vlc3QgT1MsIGd1ZXN0IE9TIHJlYWQgdGhlIEFQRUkgdGFi bGUuCj4+Pj4gKDIpIFFlbXUgZ2V0IHRoZSBlcnJvciBhZGRyZXNzLCBhbmQgbGV0IFVFRkkgdG8g Z2VuZXJhdGUgdGhlIEFQRUkKPj4+PiB0YWJsZSwgdGhlbiBpbmplY3QgYWJvcnQgZXJyb3IgdG8g Z3Vlc3QgT1MsIGd1ZXN0IE9TIHJlYWQgdGhlIEFQRUkKPj4+PiB0YWJsZS4KPj4+Cj4+PiBKdXN0 IGJlaW5nIHBlZGFudGljISBJIGRvbid0IHRoaW5rIHdlIGFyZSB0YWxraW5nIGFib3V0IGNyZWF0 aW5nIHRoZSBBUEVJIHRhYmxlCj4+PiBkeW5hbWljYWxseSBoZXJlLiBUaGUgaXNzdWUgaXM6IE9u Y2UgS1ZNIGhhcyByZWNlaXZlZCBhbiBlcnJvciB0aGF0IGlzIGRlc3RpbmVkCj4+PiBmb3IgYSBn dWVzdCBpdCB3aWxsIHJhaXNlIGEgU0lHQlVTIHRvIFFlbXUuIE5vdyBiZWZvcmUgUWVtdSBjYW4g aW5qZWN0IHRoZSBlcnJvcgo+Pj4gaW50byB0aGUgZ3Vlc3QgT1MsIGEgQ1BFUiAoQ29tbW9uIFBs YXRmb3JtIEVycm9yIFJlY29yZCkgaGFzIHRvIGJlIGdlbmVyYXRlZAo+Pj4gY29ycmVzcG9uZGlu ZyB0byB0aGUgZXJyb3Igc291cmNlIChHSEVTIGNvcnJlc3BvbmRpbmcgdG8gbWVtb3J5IHN1YnN5 c3RlbSwKPj4+IHByb2Nlc3NvciBldGMpIHRvIGFsbG93IHRoZSBndWVzdCBPUyB0byBkbyBhbnl0 aGluZyBtZWFuaW5nZnVsIHdpdGggdGhlCj4+PiBlcnJvci4gU28gd2hvIHNob3VsZCBjcmVhdGUg dGhlIENQRVIgaXMgdGhlIHF1ZXN0aW9uLgo+Pj4KPj4+IEF0IHRoZSBFTDMvRUwyIGludGVyZmFj ZSAoU2VjdXJlIEZpcm13YXJlIGFuZCBPUy9IeXBlcnZpc29yKSwgYW4gZXJyb3IgYXJyaXZlcwo+ Pj4gYXQgRUwzIGFuZCBzZWN1cmUgZmlybXdhcmUgKGF0IEVMMyBvciBhIGxvd2VyIHNlY3VyZSBl eGNlcHRpb24gbGV2ZWwpIGlzCj4+PiByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgdGhlIENQRVIu IEFSTSBpcyBleHBlcmltZW50aW5nIHdpdGggdXNpbmcgYSBTdGFuZGFsb25lCj4+PiBNTSBFREsy IGltYWdlIGluIHRoZSBzZWN1cmUgd29ybGQgdG8gZG8gdGhlIENQRVIgY3JlYXRpb24uIFRoaXMg d2lsbCBhdm9pZAo+Pj4gYWRkaW5nIHRoZSBzYW1lIGNvZGUgaW4gQVJNIFRGIGluIEVMMyAoYmV0 dGVyIGZvciBzZWN1cml0eSkuIFRoZSBlcnJvciB3aWxsIHRoZW4KPj4+IGJlIGluamVjdGVkIGlu dG8gdGhlIE9TL0h5cGVydmlzb3IgKHRocm91Z2ggU0VBL1NFSS9TREVJKSB0aHJvdWdoIEFSTSBU cnVzdGVkCj4+PiBGaXJtd2FyZS4KPj4+Cj4+PiBRZW11IGlzIGVzc2VudGlhbGx5IGZ1bGZpbGxp bmcgdGhlIHJvbGUgb2Ygc2VjdXJlIGZpcm13YXJlIGF0IHRoZSBFTDIvRUwxCj4+PiBpbnRlcmZh Y2UgKGFzIGRpc2N1c3NlZCB3aXRoIENocmlzdG9mZmVyIGJlbG93KS4gU28gaXQgc2hvdWxkIGdl bmVyYXRlIHRoZSBDUEVSCj4+PiBiZWZvcmUgaW5qZWN0aW5nIHRoZSBlcnJvci4KPj4+Cj4+PiBU aGlzIGlzIGNvcnJlc3BvbmRzIHRvICgxKSBhYm92ZSBhcGFydCBmcm9tIG5vdGlmeWluZyBVRUZJ IChJIGFtIGFzc3VtaW5nIHlvdQo+Pj4gbWVhbiBndWVzdCBVRUZJKS4gQXQgdGhpcyB0aW1lLCB0 aGUgZ3Vlc3QgT1MgYWxyZWFkeSBrbm93cyB3aGVyZSB0byBwaWNrIHVwIHRoZQo+Pj4gQ1BFUiBm cm9tIHRocm91Z2ggdGhlIEhFU1QuIFFlbXUgaGFzIHRvIGNyZWF0ZSB0aGUgQ1BFUiBhbmQgcG9w dWxhdGUgaXRzIGFkZHJlc3MKPj4+IGF0IHRoZSBhZGRyZXNzIGV4cG9ydGVkIGluIHRoZSBIRVNU LiBHdWVzdCBVRUZJIHNob3VsZCBub3QgYmUgaW52b2x2ZWQgaW4gdGhpcwo+Pj4gZmxvdy4gSXRz IGpvYiB3YXMgdG8gY3JlYXRlIHRoZSBIRVNUIGF0IGJvb3QgYW5kIHRoYXQgaGFzIGJlZW4gZG9u ZSBieSB0aGlzCj4+PiBzdGFnZS4KPj4+Cj4+PiBRZW11IGZvbGsgd2lsbCBiZSBhYmxlIHRvIGFk ZCBidXQgaXQgbG9va3MgbGlrZSBzdXBwb3J0IGZvciBDUEVSIGdlbmVyYXRpb24gd2lsbAo+Pj4g bmVlZCB0byBiZSBhZGRlZCB0byBRZW11LiBXZSBuZWVkIHRvIHJlc29sdmUgdGhpcy4KPj4+Cj4+ PiBEbyBzaG91dCBpZiBJIGFtIG1pc3NpbmcgYW55dGhpbmcgYWJvdmUuCj4+Cj4+IEFmdGVyIHJl YWRpbmcgdGhpcyBlbWFpbCwgdGhlIHVzZSBjYXNlIGxvb2tzICp2ZXJ5KiBzaW1pbGFyIHRvIHdo YXQKPj4gd2UndmUganVzdCBkb25lIHdpdGggVk1HRU5JRCBmb3IgUUVNVSAyLjkuCj4+Cj4+IFdl IGhhdmUgYSBmYWNpbGl0eSBiZXR3ZWVuIFFFTVUgYW5kIHRoZSBndWVzdCBmaXJtd2FyZSwgY2Fs bGVkICJBQ1BJCj4+IGxpbmtlci9sb2FkZXIiLCB3aXRoIHdoaWNoIFFFTVUgaW5zdHJ1Y3RzIHRo ZSBmaXJtd2FyZSB0bwo+Pgo+PiAtIGFsbG9jYXRlIGFuZCBkb3dubG9hZCBibG9icyBpbnRvIGd1 ZXN0IFJBTSAoQWNwaU5WUyB0eXBlIG1lbW9yeSkgLS0KPj4gQUxMT0NBVEUgY29tbWFuZCwKPj4K Pj4gLSByZWxvY2F0ZSBwb2ludGVycyBpbiB0aG9zZSBibG9icywgdG8gZmllbGRzIGluIG90aGVy IChvciB0aGUgc2FtZSkKPj4gYmxvYnMgLS0gQUREX1BPSU5URVIgY29tbWFuZCwKPj4KPj4gLSBz ZXQgQUNQSSB0YWJsZSBjaGVja3N1bXMgLS0gQUREX0NIRUNLU1VNIGNvbW1hbmQsCj4+Cj4+IC0g YW5kIHNlbmQgR1BBcyBvZiBmaWVsZHMgd2l0aGluIHN1Y2ggYmxvYnMgYmFjayB0byBRRU1VIC0t Cj4+IFdSSVRFX1BPSU5URVIgY29tbWFuZC4KPj4KPj4gVGhpcyBpcyBob3cgSSBpbWFnaW5lIHdl IGNhbiBtYXAgdGhlIGZhY2lsaXR5IHRvIHRoZSBjdXJyZW50IHVzZSBjYXNlCj4+IChub3RlIHRo YXQgdGhpcyBpcyB0aGUgZmlyc3QgdGltZSBJIHJlYWQgYWJvdXQgSEVTVCAvIEdIRVMgLyBDUEVS KToKPj4KPj4gICAgIGV0Yy9hY3BpL3RhYmxlcyAgICAgICAgICAgICAgICAgZXRjL2hhcmR3YXJl X2Vycm9ycwo+PiAgICAgPT09PT09PT09PT09PT09PSAgICAgPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0t LS0tLS0rCj4+ICAgICArLS0tLS0tLS0tLS0tLS0rICAgICB8IGFkZHJlc3MgICB8ICAgICAgICAg Ky0+ICstLS0tLS0tLS0tLS0tLSsKPj4gICAgIHwgICAgSEVTVCAgICAgICsgICAgIHwgcmVnaXN0 ZXJzIHwgICAgICAgICB8ICAgfCBFcnJvciBTdGF0dXMgfAo+PiAgICAgKyArLS0tLS0tLS0tLS0t KyAgICAgfCArLS0tLS0tLS0tKyAgICAgICAgIHwgICB8IERhdGEgQmxvY2sgMSB8Cj4+ICAgICB8 IHwgR0hFUyAgICAgICB8IC0tPiB8IHwgYWRkcmVzcyB8IC0tLS0tLS0tKyAgIHwgKy0tLS0tLS0t LS0tLSsKPj4gICAgIHwgfCBHSEVTICAgICAgIHwgLS0+IHwgfCBhZGRyZXNzIHwgLS0tLS0tKyAg ICAgfCB8ICBDUEVSICAgICAgfAo+PiAgICAgfCB8IEdIRVMgICAgICAgfCAtLT4gfCB8IGFkZHJl c3MgfCAtLS0tKyB8ICAgICB8IHwgIENQRVIgICAgICB8Cj4+ICAgICB8IHwgR0hFUyAgICAgICB8 IC0tPiB8IHwgYWRkcmVzcyB8IC0rICB8IHwgICAgIHwgfCAgQ1BFUiAgICAgIHwKPj4gICAgICst Ky0tLS0tLS0tLS0tLSsgICAgICstKy0tLS0tLS0tLSsgIHwgIHwgfCAgICAgKy0rLS0tLS0tLS0t LS0tKwo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfCB8Cj4+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8ICstLS0+ICstLS0t LS0tLS0tLS0tLSsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg IHwgICAgICAgfCBFcnJvciBTdGF0dXMgfAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgfCAgICAgICB8IERhdGEgQmxvY2sgMiB8Cj4+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgIHwgKy0tLS0tLS0tLS0tLSsKPj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAgICAgfCB8ICBD UEVSICAgICAgfAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg fCAgICAgICB8IHwgIENQRVIgICAgICB8Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICB8ICAgICAgICstKy0tLS0tLS0tLS0tLSsKPj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKPj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICstLS0tLT4gKy0tLS0tLS0tLS0tLS0tKwo+PiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8IEVycm9yIFN0YXR1cyB8 Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwg RGF0YSBCbG9jayAzIHwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgICAgICAgfCArLS0tLS0tLS0tLS0tKwo+PiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgICAgICAgICB8IHwgIENQRVIgICAgICB8Cj4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICstKy0tLS0tLS0tLS0tLSsK Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLT4gKy0tLS0tLS0tLS0tLS0t Kwo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IEVycm9yIFN0YXR1cyB8Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgRGF0YSBCbG9jayA0IHwKPj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCArLS0tLS0tLS0tLS0tKwo+PiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgIENQRVIgICAgICB8 Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg fCAgQ1BFUiAgICAgIHwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCB8ICBDUEVSICAgICAgfAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArLSstLS0tLS0tLS0tLS0rCj4+Cj4+ICgxKSBRRU1V IGdlbmVyYXRlcyB0aGUgSEVTVCBBQ1BJIHRhYmxlLiBUaGlzIHRhYmxlIGdvZXMgaW4gdGhlIGN1 cnJlbnQKPj4gImV0Yy9hY3BpL3RhYmxlcyIgZndfY2ZnIGJsb2IuIEdpdmVuIE4gZXJyb3Igc291 cmNlcywgdGhlcmUgd2lsbCBiZSBOCj4+IEdIRVMgb2JqZWN0cyBpbiB0aGUgSEVTVC4KPj4KPj4g KDIpIFdlIGludHJvZHVjZSBhIG5ldyBmd19jZmcgYmxvYiBjYWxsZWQgImV0Yy9oYXJkd2FyZV9l cnJvcnMiLiBRRU1VCj4+IGFsc28gcG9wdWxhdGVzIHRoaXMgYmxvYi4KPj4KPj4gKDJhKSBHaXZl biBOIGVycm9yIHNvdXJjZXMsIHRoZSAodW5uYW1lZCkgdGFibGUgb2YgYWRkcmVzcyByZWdpc3Rl cnMKPj4gd2lsbCBjb250YWluIE4gYWRkcmVzcyByZWdpc3RlcnMuCj4+Cj4+ICgyYikgR2l2ZW4g TiBlcnJvciBzb3VyY2VzLCB0aGUgImV0Yy9oYXJkd3JlX2Vycm9ycyIgZndfY2ZnIGJsb2Igd2ls bAo+PiBhbHNvIGNvbnRhaW4gTiBFcnJvciBTdGF0dXMgRGF0YSBCbG9ja3MuCj4+Cj4+IEkgZG9u J3Qga25vdyBhYm91dCB0aGUgc2l6aW5nIChudW1iZXIgb2YgQ1BFUnMpIGVhY2ggRXJyb3IgU3Rh dHVzIERhdGEKPj4gQmxvY2sgaGFzIHRvIGNvbnRhaW4sIGJ1dCBJIHVuZGVyc3RhbmQgaXQgaXMg YWxsIHByZS1hbGxvY2F0ZWQgYXMgZmFyIGFzCj4+IHRoZSBPUyBpcyBjb25jZXJuZWQsIHdoaWNo IG1hdGNoZXMgb3VyIGNhcGFiaWxpdGllcyB3ZWxsLgo+IGhlcmUgSSBoYXZlIGEgcXVlc3Rpb24u IGFzIHlvdSBjb21tZW50OiAiICdldGMvaGFyZHdyZV9lcnJvcnMnIGZ3X2NmZyBibG9iIHdpbGwg YWxzbyBjb250YWluIE4gRXJyb3IgU3RhdHVzIERhdGEgQmxvY2tzIiwKPiBCZWNhdXNlIHRoZSBD UEVSIG51bWJlcnMgaXMgbm90IGZpeGVkLCBob3cgdG8gYXNzaWduIGVhY2ggIkVycm9yIFN0YXR1 cyBEYXRhIEJsb2NrIiBzaXplIHVzaW5nIG9uZSAiZXRjL2hhcmR3cmVfZXJyb3JzIiBmd19jZmcg YmxvYi4KPiB3aGVuIHVzZSBvbmUgZXRjL2hhcmR3cmVfZXJyb3JzLCB3aWxsIHRoZSBOIEVycm9y IFN0YXR1cyBEYXRhIEJsb2NrIHVzZSBvbmUgY29udGludW91cyBidWZmZXI/IGFzIHNob3duIGJl bG93LiBpZiBzbywgbWF5YmUgaXQgbm90IGNvbnZlbmllbnQgZm9yIGVhY2ggZGF0YSBibG9jayBz aXplIGV4dGVuc2lvbi4KPiBJIHNlZSB0aGUgYmlvc19saW5rZXJfbG9hZGVyX2FsbG9jIHdpbGwg YWxsb2NhdGUgb25lIGNvbnRpbnVvdXMgYnVmZmVyIGZvciBhIGJsb2Ioc3VjaCBhcyBWTUdFTklE X0dVSURfRldfQ0ZHX0ZJTEUpCj4gCj4gICAgIC8qIEFsbG9jYXRlIGd1ZXN0IG1lbW9yeSBmb3Ig dGhlIERhdGEgZndfY2ZnIGJsb2IgKi8KPiAgICAgYmlvc19saW5rZXJfbG9hZGVyX2FsbG9jKGxp bmtlciwgVk1HRU5JRF9HVUlEX0ZXX0NGR19GSUxFLCBndWlkLCA0MDk2LAo+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZmFsc2UgLyogcGFnZSBib3VuZGFyeSwgaGlnaCBtZW1vcnkgKi8p Owo+IAo+IAo+IAo+IC0+ICstLS0tLS0tLS0tLS0tLSsKPiAgICAgIHwgICAgSEVTVCAgICAgICsg ICAgIHwgcmVnaXN0ZXJzIHwgICAgICAgICAgICAgfCBFcnJvciBTdGF0dXMgfAo+ICAgICAgKyAr LS0tLS0tLS0tLS0tKyAgICAgfCArLS0tLS0tLS0tKyAgICAgICAgICAgICB8IERhdGEgQmxvY2sg IHwKPiAgICAgIHwgfCBHSEVTICAgICAgIHwgLS0+IHwgfCBhZGRyZXNzIHwgLS0tLS0tLS0rLS0+ fCArLS0tLS0tLS0tLS0tKwo+ICAgICAgfCB8IEdIRVMgICAgICAgfCAtLT4gfCB8IGFkZHJlc3Mg fCAtLS0tLS0rICAgICB8IHwgIENQRVIgICAgICB8Cj4gICAgICB8IHwgR0hFUyAgICAgICB8IC0t PiB8IHwgYWRkcmVzcyB8IC0tLS0rIHwgICAgIHwgfCAgQ1BFUiAgICAgIHwKPiAgICAgIHwgfCBH SEVTICAgICAgIHwgLS0+IHwgfCBhZGRyZXNzIHwgLSsgIHwgfCAgICAgfCB8ICBDUEVSICAgICAg fAo+ICAgICAgKy0rLS0tLS0tLS0tLS0tKyAgICAgKy0rLS0tLS0tLS0tKyAgfCAgfCArLS0tPiAr LS0tLS0tLS0tLS0tLS0rCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICB8ICAgICAgIHwgfCAgQ1BFUiAgICAgIHwKPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgIHwgICAgICAgfCB8ICBDUEVSICAgICAgfAo+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgKy0tLS0tPiArLS0tLS0tLS0tLS0tLS0r Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwg fCAgQ1BFUiAgICAgIHwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICstLS0tLS0tLT4gKy0tLS0tLS0tLS0tLS0tKwo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgIENQRVIgICAgICB8Cj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgQ1BFUiAgICAgIHwK PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8 ICBDUEVSICAgICAgfAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArLSstLS0tLS0tLS0tLS0rCj4gCj4gCj4gCj4gc28gaG93IGFib3V0IHdlIHVz ZSBzZXBhcmF0ZSBldGMvaGFyZHdyZV9lcnJvcnNOIGZvciBlYWNoIEVycm9yIFN0YXR1cyBzdGF0 dXMgQmxvY2s/IHRoZW4KPiAKPiBldGMvaGFyZHdyZV9lcnJvcnMwCj4gZXRjL2hhcmR3cmVfZXJy b3JzMQo+IC4uLi4uLi4uLi4uLi4uLi4uLi4KPiBldGMvaGFyZHdyZV9lcnJvcnMxMAo+ICh0aGUg bWF4IE4gaXMgMTApCj4gCj4gCj4gdGhlIE4gY2FuIGJlIG9uZSBvZiBiZWxvdyB2YWx1ZXMsIGFj Y29yZGluZyB0byBBQ1BJIHNwZWMgIlRhYmxlIDE4LTM0NSBIYXJkd2FyZSBFcnJvciBOb3RpZmlj YXRpb24gU3RydWN0dXJlIgo+IDAg4oCTIFBvbGxlZAo+IDEg4oCTIEV4dGVybmFsIEludGVycnVw dAo+IDIg4oCTIExvY2FsIEludGVycnVwdAo+IDMg4oCTIFNDSQo+IDQg4oCTIE5NSQo+IDUgLSBD TUNJCj4gNiAtIE1DRQo+IDcgLSBHUElPLVNpZ25hbAo+IDggLSBBUk12OCBTRUEKPiA5IC0gQVJN djggU0VJCj4gMTAgLSBFeHRlcm5hbCBJbnRlcnJ1cHQgLSBHU0lWCgpJJ20gdW5zdXJlIGlmLCBi eSAibm90IGZpeGVkIiwgeW91IGFyZSBzYXlpbmcKCiAgdGhlIG51bWJlciBvZiBDUEVSIGVudHJp ZXMgdGhhdCBmaXRzIGluIEVycm9yIFN0YXR1cyBEYXRhIEJsb2NrIE4gaXMKICBub3QgKnVuaWZv cm0qIGFjcm9zcyAwIDw9IE4gPD0gMTAgWzFdCgpvcgoKICB0aGUgbnVtYmVyIG9mIENQRVIgZW50 cmllcyB0aGF0IGZpdHMgaW4gRXJyb3IgU3RhdHVzIERhdGEgQmxvY2sgTiBpcwogIG5vdCAqa25v d24qIGluIGFkdmFuY2UsIGZvciBhbGwgb2YgMCA8PSBOIDw9IDEwIFsyXQoKV2hpY2ggb25lIGlz IHlvdXIgcG9pbnQ/CgpJZiBbMV0sIHRoYXQncyBubyBwcm9ibGVtOyB5b3UgY2FuIHNpbXBseSBz dW0gdGhlIGluZGl2aWR1YWwgZXJyb3IKc3RhdHVzIGRhdGEgYmxvY2sgc2l6ZXMgaW4gYWR2YW5j ZSwgYW5kIGFsbG9jYXRlICJldGMvaGFyZHdhcmVfZXJyb3JzIgphY2NvcmRpbmdseSwgdXNpbmcg dGhlIHRvdGFsIHNpemUuCgooQWxsb2NhdGluZyBvbmUgc2hhcmVkIGZ3X2NmZyBibG9iIGZvciBh bGwgc3RhdHVzIGRhdGEgYmxvY2tzIGlzIG1vcmUKbWVtb3J5IGVmZmljaWVudCwgYXMgZWFjaCBB TExPQ0FURSBjb21tYW5kIHdpbGwgYWxsb2NhdGUgd2hvbGUgcGFnZXMKKHJvdW5kZWQgdXAgZnJv bSB0aGUgYWN0dWFsIGJsb2Igc2l6ZSkuKQoKSWYgeW91ciBwb2ludCBpcyBbMl0sIHRoZW4gc3Bs aXR0aW5nIHRoZSBlcnJvciBzdGF0dXMgZGF0YSBibG9ja3MgdG8Kc2VwYXJhdGUgZndfY2ZnIGJs b2JzIG1ha2VzIG5vIGRpZmZlcmVuY2U6IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB3ZSB0cnkKdG8g cGxhY2UgYWxsIHRoZSBlcnJvciBzdGF0dXMgZGF0YSBibG9ja3MgaW4gYSBzaW5nbGUgZndfY2Zn IGJsb2IsIG9yIGluCnNlcGFyYXRlIGZ3X2NmZyBibG9icywgdGhlIGluZGl2aWR1YWwgZGF0YSBi bG9jayBjYW5ub3QgYmUgcmVzaXplZCBhdCBPUwpydW50aW1lLCBzbyB0aGVyZSdzIG5vIHdheSB0 byBtYWtlIGl0IHdvcmsuCgpUaGFua3MsCkxhc3psbwoKPiAKPiAKPiAKPiAKPj4KPj4gKDMpIFFF TVUgZ2VuZXJhdGVzIHRoZSBBQ1BJIGxpbmtlci9sb2FkZXIgc2NyaXB0IGZvciB0aGUgZmlybXdh cmUsIGFzCj4+IGFsd2F5cy4KPj4KPj4gKDNhKSBUaGUgSEVTVCB0YWJsZSBpcyBwYXJ0IG9mICJl dGMvYWNwaS90YWJsZXMiLCB3aGljaCB0aGUgZmlybXdhcmUKPj4gYWxyZWFkeSBhbGxvY2F0ZXMg bWVtb3J5IGZvciwgYW5kIGRvd25sb2FkcyAoYmVjYXVzZSBRRU1VIGFscmVhZHkKPj4gZ2VuZXJh dGVzIGFuIEFMTE9DQVRFIGxpbmtlci9sb2FkZXIgY29tbWFuZCBmb3IgaXQgYWxyZWFkeSkuCj4+ Cj4+ICgzYikgUUVNVSB3aWxsIGhhdmUgdG8gY3JlYXRlIGFub3RoZXIgQUxMT0NBVEUgY29tbWFu ZCBmb3IgdGhlCj4+ICJldGMvaGFyZHdhcmVfZXJyb3JzIiBibG9iLiBUaGUgZmlybXdhcmUgYWxs b2NhdGVzIG1lbW9yeSBmb3IgdGhpcyBibG9iLAo+PiBhbmQgZG93bmxvYWRzIGl0Lgo+Pgo+PiAo NCkgUUVNVSBnZW5lcmF0ZXMsIGluIHRoZSBBQ1BJIGxpbmtlci9sb2FkZXIgc2NyaXB0IGZvciB0 aGUgZmlyd21hcmUsIE4KPj4gQUREX1BPSU5URVIgY29tbWFuZHMsIHdoaWNoIHBvaW50IHRoZSBH SEVTLiJFcnJvciBTdGF0dXMKPj4gQWRkcmVzcyIgZmllbGRzIGluIHRoZSBIRVNUIHRhYmxlLCB0 byB0aGUgY29ycmVzcG9uZGluZyBhZGRyZXNzCj4+IHJlZ2lzdGVycyBpbiB0aGUgZG93bmxvYWRl ZCAiZXRjL2hhcmR3YXJlX2Vycm9ycyIgYmxvYi4KPj4KPj4gKDUpIFFFTVUgZ2VuZXJhdGVzIGFu IEFERF9DSEVDS1NVTSBjb21tYW5kIGZvciB0aGUgZmlybXdhcmUsIHNvIHRoYXQgdGhlCj4+IEhF U1QgdGFibGUgaXMgY29ycmVjdGx5IGNoZWNrc3VtbWVkIGFmdGVyIGV4ZWN1dGluZyB0aGUgTiBB RERfUE9JTlRFUgo+PiBjb21tYW5kcyBmcm9tICg0KS4KPj4KPj4gKDYpIFFFTVUgZ2VuZXJhdGVz IE4gQUREX1BPSU5URVIgY29tbWFuZHMgZm9yIHRoZSBmaXJtd2FyZSwgcG9pbnRpbmcgdGhlCj4+ IGFkZHJlc3MgcmVnaXN0ZXJzIChsb2NhdGVkIGluIGd1ZXN0IG1lbW9yeSwgaW4gdGhlIGRvd25s b2FkZWQKPj4gImV0Yy9oYXJkd2FyZV9lcnJvcnMiIGJsb2IpIHRvIHRoZSByZXNwZWN0aXZlIEVy cm9yIFN0YXR1cyBEYXRhIEJsb2Nrcy4KPj4KPj4gKDcpIChUaGlzIGlzIHRoZSB0cmljay4pIEZv ciB0aGlzIHN0ZXAsIHdlIG5lZWQgYSB0aGlyZCwgd3JpdGUtb25seQo+PiBmd19jZmcgYmxvYiwg Y2FsbGVkICJldGMvaGFyZHdhcmVfZXJyb3JzX2FkZHIiLiBUaHJvdWdoIHRoYXQgYmxvYiwgdGhl Cj4+IGZpcm13YXJlIGNhbiBzZW5kIGJhY2sgdGhlIGd1ZXN0LXNpZGUgYWxsb2NhdGlvbiBhZGRy ZXNzZXMgdG8gUUVNVS4KPj4KPj4gTmFtZWx5LCB0aGUgImV0Yy9oYXJkd2FyZV9lcnJvcnNfYWRk ciIgYmxvYiBjb250YWlucyBOIDgtYnl0ZSBlbnRyaWVzLgo+PiBRRU1VIGdlbmVyYXRlcyBOIFdS SVRFX1BPSU5URVIgY29tbWFuZHMgZm9yIHRoZSBmaXJtd2FyZS4KPj4KPj4gRm9yIGVycm9yIHNv dXJjZSBLICgwIDw9IEsgPCBOKSwgUUVNVSBpbnN0cnVjdHMgdGhlIGZpcm13YXJlIHRvCj4+IGNh bGN1bGF0ZSB0aGUgZ3Vlc3QgYWRkcmVzcyBvZiBFcnJvciBTdGF0dXMgRGF0YSBCbG9jayBLLCBm cm9tIHRoZQo+PiBRRU1VLWRpY3RhdGVkIG9mZnNldCB3aXRoaW4gImV0Yy9oYXJkd2FyZV9lcnJv cnMiLCBhbmQgZnJvbSB0aGUKPj4gZ3Vlc3QtZGV0ZXJtaW5lZCBhbGxvY2F0aW9uIGJhc2UgYWRk cmVzcyBmb3IgImV0Yy9oYXJkd2FyZV9lcnJvcnMiLiBUaGUKPj4gZmlybXdhcmUgdGhlbiB3cml0 ZXMgdGhlIGNhbGN1bGF0ZWQgYWRkcmVzcyBiYWNrIHRvIGZ3X2NmZyBmaWxlCj4+ICJldGMvaGFy ZHdhcmVfZXJyb3JzX2FkZHIiLCBhdCBvZmZzZXQgSyo4LCBhY2NvcmRpbmcgdG8gdGhlCj4+IFdS SVRFX1BPSU5URVIgY29tbWFuZC4KPj4KPj4gVGhpcyB3YXkgUUVNVSB3aWxsIGtub3cgdGhlIEdQ QSBvZiBlYWNoIEVycm9yIFN0YXR1cyBEYXRhIEJsb2NrLgo+Pgo+PiAoSW4gZmFjdCB0aGlzIGNh biBiZSBzaW1wbGlmaWVkIHRvIGEgc2luZ2xlIFdSSVRFX1BPSU5URVIgY29tbWFuZDogdGhlCj4+ IGFkZHJlc3Mgb2YgdGhlICJhZGRyZXNzIHJlZ2lzdGVyIHRhYmxlIiBjYW4gYmUgc2VudCBiYWNr IHRvIFFFTVUgYXMKPj4gd2VsbCwgd2hpY2ggYWxyZWFkeSBjb250YWlucyBhbGwgRXJyb3IgU3Rh dHVzIERhdGEgQmxvY2sgYWRkcmVzc2VzLikKPj4KPj4gKDgpIFdoZW4gUUVNVSBnZXRzIFNJR0JV UyBmcm9tIHRoZSBrZXJuZWwgLS0gSSBob3BlIHRoYXQncyBnb2luZyB0byBjb21lCj4+IHRocm91 Z2ggYSBzaWduYWxmZCAtLSBRRU1VIGNhbiBmb3JtYXQgdGhlIENQRVIgcmlnaHQgaW50byBndWVz dCBtZW1vcnksCj4+IGFuZCB0aGVuIGluamVjdCB3aGF0ZXZlciBpbnRlcnJ1cHQgKG9yIGFzc2Vy dCB3aGF0ZXZlciBHUElPIGxpbmUpIGlzCj4+IG5lY2Vzc2FyeSBmb3Igbm90aWZ5aW5nIHRoZSBn dWVzdC4KPj4KPj4gKDkpIFRoaXMgbm90aWZpY2F0aW9uIChpbiB2aXJ0dWFsIGhhcmR3YXJlKSBj YW4gZWl0aGVyIGJlIGhhbmRsZWQgYnkgdGhlCj4+IGd1ZXN0IGtlcm5lbCBzdGFuZC1hbG9uZSwg b3IgZWxzZSB0aGUgZ3Vlc3Qga2VybmVsIGNhbiBpbnZva2UgYW4gQUNQSQo+PiBldmVudCBoYW5k bGVyIG1ldGhvZCB3aXRoIGl0ICh3aGljaCB3b3VsZCBiZSBpbiB0aGUgRFNEVCBvciBvbmUgb2Yg dGhlCj4+IFNTRFRzLCBhbHNvIGdlbmVyYXRlZCBieSBRRU1VKS4gVGhlIEFDUEkgZXZlbnQgaGFu ZGxlciBtZXRob2QgY291bGQKPj4gaW52b2tlIHRoZSBzcGVjaWZpYyBndWVzdCBrZXJuZWwgZHJp dmVyIGZvciBlcnJyb3IgaGFuZGxpbmcgdmlhIGEKPj4gTm90aWZ5KCkgb3BlcmF0aW9uLgo+Pgo+ PiBJJ20gYXR0cmFjdGVkIHRvIHRoZSBhYm92ZSBkZXNpZ24gYmVjYXVzZToKPj4gLSBpdCB3b3Vs ZCBsZWF2ZSB0aGUgZmlybXdhcmUgYWxvbmUgYWZ0ZXIgT1MgYm9vdCwgYW5kCj4+IC0gaXQgd291 bGQgbGVhdmUgdGhlIGZpcm13YXJlIGJsaXNzZnVsbHkgaWdub3JhbnQgYWJvdXQgSEVTVCwgR0hF UywKPj4gQ1BFUiwgYW5kIHRoZSBsaWtlLiAoVGhhdCdzIHdoeSBRRU1VJ3MgQUNQSSBsaW5rZXIv bG9hZGVyIHdhcyBpbnZlbnRlZAo+PiBpbiB0aGUgZmlyc3QgcGxhY2UuKQo+Pgo+PiBUaGFua3MK Pj4gTGFzemxvCj4+Cj4+Pj4gICAgRG8geW91IHRoaW5rIHdoaWNoIG1vZHVsZXMgZ2VuZXJhdGVz IHRoZSBBUEVJIHRhYmxlIGlzIGJldHRlcj8gVUVGSSBvciBRZW11Pwo+Pj4+Cj4+Pj4KPj4+Pgo+ Pj4+Cj4+Pj4gT24gMjAxNy8zLzI4IDIxOjQwLCBKYW1lcyBNb3JzZSB3cm90ZToKPj4+Pj4gSGkg Z2VuZ2RvbmdqaXUsCj4+Pj4+Cj4+Pj4+IE9uIDI4LzAzLzE3IDEzOjE2LCBnZW5nZG9uZ2ppdSB3 cm90ZToKPj4+Pj4+IE9uIDIwMTcvMy8yOCAxOTo1NCwgQWNoaW4gR3VwdGEgd3JvdGU6Cj4+Pj4+ Pj4gT24gVHVlLCBNYXIgMjgsIDIwMTcgYXQgMDE6MjM6MjhQTSArMDIwMCwgQ2hyaXN0b2ZmZXIg RGFsbCB3cm90ZToKPj4+Pj4+Pj4gT24gVHVlLCBNYXIgMjgsIDIwMTcgYXQgMTE6NDg6MDhBTSAr MDEwMCwgSmFtZXMgTW9yc2Ugd3JvdGU6Cj4+Pj4+Pj4+PiBPbiB0aGUgaG9zdCwgcGFydCBvZiBV RUZJIGlzIGludm9sdmVkIHRvIGdlbmVyYXRlIHRoZSBDUEVSIHJlY29yZHMuCj4+Pj4+Pj4+PiBJ biBhIGd1ZXN0PywgSSBkb24ndCBrbm93Lgo+Pj4+Pj4+Pj4gUWVtdSBjb3VsZCBnZW5lcmF0ZSB0 aGUgcmVjb3Jkcywgb3IgZHJpdmUgc29tZSBvdGhlciBjb21wb25lbnQgdG8gZG8gaXQuCj4+Pj4+ Pj4+Cj4+Pj4+Pj4+IEkgdGhpbmsgSSBhbSBiZWdpbm5pbmcgdG8gdW5kZXJzdGFuZCB0aGlzIGEg Yml0LiAgU2luY2UgdGhlIGd1ZXQgVUVGSQo+Pj4+Pj4+PiBpbnN0YW5jZSBpcyBzcGVjaWZpY2Fs bHkgYnVpbHQgZm9yIHRoZSBtYWNoaW5lIGl0IHJ1bnMgb24sIFFFTVUncyB2aXJ0Cj4+Pj4+Pj4+ IG1hY2hpbmUgaW4gdGhpcyBjYXNlLCB0aGV5IGNvdWxkIHNpbXBseSBhZ3JlZSAoYnkgc29tZSBj b250cmFjdCkgdG8KPj4+Pj4+Pj4gcGxhY2UgdGhlIHJlY29yZHMgYXQgc29tZSBzcGVjaWZpYyBs b2NhdGlvbiBpbiBtZW1vcnksIGFuZCBpZiB0aGUgZ3Vlc3QKPj4+Pj4+Pj4ga2VybmVsIGFza3Mg aXRzIGd1ZXN0IFVFRkkgZm9yIHRoYXQgbG9jYXRpb24sIHRoaW5ncyBzaG91bGQganVzdCB3b3Jr IGJ5Cj4+Pj4+Pj4+IGhhdmluZyBsb2dpYyBpbiBRRU1VIHRvIHByb2Nlc3MgZXJyb3IgcmVwb3J0 cyBhbmQgcG9wdWxhdGUgZ3Vlc3QgbWVtb3J5Lgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBJcyB0aGlzIGhv dyBvdGhlcnMgc2VlIHRoZSB3b3JsZCB0b28/Cj4+Pj4+Pj4KPj4+Pj4+PiBJIHRoaW5rIHNvIQo+ Pj4+Pj4+Cj4+Pj4+Pj4gQUZBSVUsIHRoZSBtZW1vcnkgd2hlcmUgQ1BFUnMgd2lsbCByZXNpZGUg c2hvdWxkIGJlIHNwZWNpZmllZCBpbiBhIEdIRVMgZW50cnkgaW4KPj4+Pj4+PiB0aGUgSEVTVC4g SXMgdGhpcyBub3QgdGhlIGNhc2Ugd2l0aCBhIGd1ZXN0IGtlcm5lbCBpLmUuIHRoZSBndWVzdCBV RUZJIGNyZWF0ZXMgYQo+Pj4+Pj4+IEhFU1QgZm9yIHRoZSBndWVzdCBLZXJuZWw/Cj4+Pj4+Pj4K Pj4+Pj4+PiBJZiBzbywgdGhlbiB0aGUgcXVlc3Rpb24gaXMgaG93IHRoZSBndWVzdCBVRUZJIGZp bmRzIG91dCB3aGVyZSBRRU1VIChhY3RpbmcgYXMKPj4+Pj4+PiBFTDMgZmlybXdhcmUpIHdpbGwg cG9wdWxhdGUgdGhlIENQRVJzLiBUaGlzIGNvdWxkIGVpdGhlciBiZSBhIGNvbnRyYWN0IGJldHdl ZW4KPj4+Pj4+PiB0aGUgdHdvIG9yIGEgZ3Vlc3QgRFhFIGRyaXZlciB1c2VzIHRoZSBNTV9DT01N VU5JQ0FURSBjYWxsIChzZWUgWzFdKSB0byBhc2sgUUVNVQo+Pj4+Pj4+IHdoZXJlIHRoZSBtZW1v cnkgaXMuCj4+Pj4+Pgo+Pj4+Pj4gd2hldGhlciBpbnZva2UgdGhlIGd1ZXN0IFVFRkkgd2lsbCBi ZSBjb21wbGV4PyBub3Qgc2VlIHRoZSBhZHZhbnRhZ2UuIGl0IHNlZW1zIHg4NiBRZW11Cj4+Pj4+ PiBkaXJlY3RseSBnZW5lcmF0ZSB0aGUgQUNQSSB0YWJsZSwgYnV0IEkgYW0gbm90IHN1cmUsIHdl IGFyZSBjaGVja2luZyB0aGUgcWVtdQo+Pj4+PiBsb2dpY2FsLgo+Pj4+Pj4gbGV0IFFlbXUgZ2Vu ZXJhdGUgQ1BFUiByZWNvcmQgbWF5IGJlIGNsZWFyLgo+Pj4+Pgo+Pj4+PiBBdCBib290IFVFRkkg aW4gdGhlIGd1ZXN0IHdpbGwgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGFyZWFzIG9mIG1lbW9yeSB0 aGF0IG1heSBiZQo+Pj4+PiB1c2VkIGZvciBDUEVSIHJlY29yZHMgYXJlIHJlc2VydmVkLiBXaGV0 aGVyIFVFRkkgb3IgUWVtdSBkZWNpZGVzIHdoZXJlIHRoZXNlIGFyZQo+Pj4+PiBuZWVkcyBkZWNp ZGluZywgKGJ1dCBwcm9iYWJseSBub3QgaGVyZSkuLi4KPj4+Pj4KPj4+Pj4gQXQgcnVudGltZSwg d2hlbiBhbiBlcnJvciBoYXMgb2NjdXJyZWQsIEkgYWdyZWUgaXQgd291bGQgYmUgc2ltcGxlciAo ZmV3ZXIKPj4+Pj4gY29tcG9uZW50cyBpbnZvbHZlZCkgaWYgUWVtdSBnZW5lcmF0ZXMgdGhlIENQ RVIgcmVjb3Jkcy4gQnV0IGlmIFVFRkkgbWFkZSB0aGUKPj4+Pj4gbWVtb3J5IGNob2ljZSBhYm92 ZSB0aGV5IG5lZWQgdG8gaW50ZXJhY3QgYW5kIGl0IGdldHMgY29tcGxpY2F0ZWQgYWdhaW4uIFRo ZQo+Pj4+PiBDUEVSIHJlY29yZHMgYXJlIGRlZmluZWQgaW4gdGhlIFVFRkkgc3BlYywgc28gSSB3 b3VsZCBleHBlY3QgVUVGSSB0byBjb250YWluCj4+Pj4+IGNvZGUgdG8gZ2VuZXJhdGUvcGFyc2Ug dGhlbS4KPj4+Pj4KPj4+Pj4KPj4+Pj4gVGhhbmtzLAo+Pj4+Pgo+Pj4+PiBKYW1lcwo+Pj4+Pgo+ Pj4+Pgo+Pj4+PiAuCj4+Pj4+Cj4+Pj4KPj4KPj4KPj4gLgo+Pgo+IAoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZWRrMi1kZXZlbCBtYWlsaW5nIGxpc3QK ZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcKaHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0 aW5mby9lZGsyLWRldmVsCg==