From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gary Lin Subject: Re: [edk2] OVMF broken under Xen (in PCI initialisation) Date: Wed, 27 Apr 2016 12:29:07 +0800 Message-ID: <20160427042907.GH3109__47029.2406193495$1461731436$gmane$org@GaryWorkstation> References: <20160422144736.GD1885@perard.uk.xensource.com> <734D49CCEBEEF84792F5B80ED585239D0DA25884@SHSMSX103.ccr.corp.intel.com> <20160426073529.GC3109@GaryWorkstation> <734D49CCEBEEF84792F5B80ED585239D0DA25B98@SHSMSX103.ccr.corp.intel.com> <20160426084000.GD3109@GaryWorkstation> <734D49CCEBEEF84792F5B80ED585239D0DA25D38@SHSMSX103.ccr.corp.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: <734D49CCEBEEF84792F5B80ED585239D0DA25D38@SHSMSX103.ccr.corp.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: "Ni, Ruiyu" Cc: "edk2-devel@lists.01.org" , Xen Devel List-Id: xen-devel@lists.xenproject.org T24gVHVlLCBBcHIgMjYsIDIwMTYgYXQgMDk6NDA6NDJBTSArMDAwMCwgTmksIFJ1aXl1IHdyb3Rl Ogo+IEdhcnksCj4gSSBjYW4gcmVwcm9kdWNlIHRoZSBpc3N1ZSBhbmQgaGF2ZSBkZWJ1Z2dlZCB0 byBnZXQgdGhlIHJlYXNvbi4KPiBJbiBNZGVNb2R1bGVQa2cvQnVzL1BjaS9QY2lCdXNEeGUvUGNp RW51bWVyYXRvclN1cHBvcnQuYzoKPiBQY2lFbnVtZXJhdG9yTGlnaHQoKSBjYWxscyBQY2lSb290 QnJpZGdlSW8tPkNvbmZpZ3VyYXRpb24oKQo+IHdoaWxlIHRoZSBDb25maWd1cmF0aW9uIHJldHVy bnMgRUZJX1VOU1VQUE9SVEVEIHJlc3VsdGluZwo+IHRoZSBQY2lCdXMgZHJpdmVyIGV4aXRzIGVh cmxpZXIuCj4gWW91IGNvdWxkIHRyeSB0byBtYW51YWxseSBzZXQgTWluQnVzIHRvIDAgYW5kIE1h eEJ1cyB0byAweEZGLgo+IApEbyB5b3UgbWVhbiB0byBzZXQgTWluQnVzIGFuZCBNYXhCdXMgaW4g UGNpR2V0QnVzUmFuZ2UoKSA/ClNob3VsZCBJIGFsc28ga2VlcCB0aGUgRUZJX1VOU1VQUE9SVEVE IGNvZGUgaW4gQ29uZmlndXJhdGlvbigpID8KCj4gVGhlIHNlY29uZCBjaGFuZ2UgeW91IG5lZWQg dG8gbWFrZSBpcyBpbiBQY2lJby5jOgo+IENoYW5nZSBHZXRNbWlvQWRkcmVzc1RyYW5zbGF0aW9u T2Zmc2V0KCkgdG8gcmV0dXJuIDAgaW5zdGVhZAo+IG9mIC0xIHdoZW4gZXJyb3Igb2NjdXJzCj4g CgpTaG91bGQgSSBhbHNvIHJlbW92ZSAiQVNTRVJUIChGQUxTRSk7IiA/CgpDaGVlcnMsCgpHYXJ5 IExpbgoKPiBXaXRoIHRoZSBhYm92ZSAyIGNoYW5nZXMsIGNhbiB5b3UgY2hlY2sgd2hldGhlciB0 aGUgc3lzdGVtIGNhbgo+IGJvb3Q/Cj4gCj4gSWYgaXQgY2FuIGJvb3QsIHRoZW4gd2UgbmVlZCB0 byB0aGluayBhYm91dCB3aGF0IHRoZSBwcm9wZXIgZml4IGlzLgo+IEZvciBPVk1GIGFib3ZlIFhl biwgdGhlIFBDSSByZXNvdXJjZXMgYXJlIGFzc2lnbmVkIGJ5IFhlbiBvdGhlciB0aGFuCj4gUGNp QnVzIGRyaXZlci4gU28gUGNpUm9vdEJyaWRnZUlvLT5Db25maWd1cmF0aW9uKCkgZG9lc24ndCBr bm93Cj4gdGhlIHJlc291cmNlIGFzc2lnbm1lbnQgaW5mb3JtYXRpb24uCj4gV2l0aCBvbGQgUGNp SG9zdEJyaWRnZSBkcml2ZXIsIHRoZSBDb25maWd1cmF0aW9uKCkgcmV0dXJucyBCVVMgcmVzb3Vy Y2UKPiBkZXNjcmlwdG9yIHdpdGggTWluQnVzID0gTWF4QnVzID0gMCAoZGVmYXVsdCB2YWx1ZSks IHNvIHRoYXQgdGhlIFBjaUJ1cwo+IGRyaXZlciBjYW4gZGV0ZWN0IGFsbCBkZXZpY2VzIGluIEJV UyAwLCBidXQgSSBndWVzcyBkZXZpY2VzIGluIEJVUyAxKyBjYW5ub3QKPiBiZSBkZXRlY3RlZC4K PiAKPiBEb2VzIFhlbiBwYXNzIHRoZSByZXNvdXJjZSBhc3NpZ25tZW50IGluZm9ybWF0aW9uIHRo cm91Z2ggc29tZSBtZW1vcnkKPiBibG9iIHRvIGZpcm13YXJlPyBJZiB5ZXMsIHdlIGNvdWxkIHRo aW5rIGFib3V0IGxldCBQY2lIb3N0QnJpZGdlTGliIHBhc3MgdGhhdAo+IGluZm9ybWF0aW9uIHRv IFBjaUhvc3RCcmlkZ2UgZHJpdmVyLiBJZiBubywgd2UgYWxzbyBjb3VsZCBsZXQgUGNpSG9zdEJy aWRnZUxpYgo+IGNvbGxlY3QgdGhlIGluZm9ybWF0aW9uIChJTy9NRU0vQlVTIHJlc291cmNlIGFz c2lnbm1lbnQpIGFuZCBwYXNzIHRoYXQKPiB0byBQY2lIb3N0QnJpZGdlRHhlIGRyaXZlci4KPiAK PiBBbmQgd2UgbmVlZCB0byBoYXZlIGEgd2F5IHRvIHRlbGwgUGNpSG9zdEJyaWRnZUR4ZSB0aGUg cmVzb3VyY2UgaW5mb3JtYXRpb24KPiBwYXNzZWQgZnJvbSBQY2lIb3N0QnJpZGdlTGliIGlzIGF2 YWlsYWJsZSByZXNvdXJjZSB0byBhc3NpZ24sIG9yIGFscmVhZHkgYWxsb2NhdGVkLgo+IE1heWJl IGp1c3QgZGVwZW5kcyBvbiB0aGUgUGNkUGNpQnVzRGlzYWJsZUVudW1lcmF0aW9uLiBzdGlsbCB0 aGlua2luZy4KPiAKPiAKPiBSZWdhcmRzLAo+IFJheQo+IAo+ID4tLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQo+ID5Gcm9tOiBHYXJ5IExpbiBbbWFpbHRvOmdsaW5Ac3VzZS5jb21dCj4gPlNlbnQ6 IFR1ZXNkYXksIEFwcmlsIDI2LCAyMDE2IDQ6NDAgUE0KPiA+VG86IE5pLCBSdWl5dSA8cnVpeXUu bmlAaW50ZWwuY29tPgo+ID5DYzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc7IFhlbiBEZXZlbCA8 eGVuLWRldmVsQGxpc3RzLnhlbi5vcmc+Cj4gPlN1YmplY3Q6IFJlOiBbZWRrMl0gT1ZNRiBicm9r ZW4gdW5kZXIgWGVuIChpbiBQQ0kgaW5pdGlhbGlzYXRpb24pCj4gPgo+ID5PbiBUdWUsIEFwciAy NiwgMjAxNiBhdCAwODoxOTo0OUFNICswMDAwLCBOaSwgUnVpeXUgd3JvdGU6Cj4gPj4gR2FyeSwK PiA+PiBNYXliZSB0aGUgc3lzdGVtIGJvb3RzIHRvIFNoZWxsIHdlbGwgYnV0IHRoZSB2aWRlbyBp c24ndCBpbml0aWFsaXplZCBwcm9wZXJseS4KPiA+PiBDYW4geW91IGJ1aWxkIHRoZSBmaXJtd2Fy ZSB1c2luZyAiLUQgREVCVUdfT05fU0VSSUFMX1BPUlQiIHN3aXRjaCBhbmQKPiA+PiBnaXZlIG1l IHRoZSBib290IGxvZz8KPiA+Pgo+ID5IaSBSYXksCj4gPgo+ID5JIGFscmVhZHkgZGlkIGFuZCBp dCdzIGhvdyBJIG1ha2UgdGhlIGZpcm13YXJlIHNwaXQgdGhlIGxvZyA6LSgKPiA+Cj4gPlRoYW5r cywKPiA+Cj4gPkdhcnkgTGluCj4gPgo+ID4+IFJlZ2FyZHMsCj4gPj4gUmF5Cj4gPj4KPiA+PiBG cm9tOiBHYXJ5IExpbiBbbWFpbHRvOmdsaW5Ac3VzZS5jb21dCj4gPj4gU2VudDogVHVlc2RheSwg QXByaWwgMjYsIDIwMTYgMzozNSBQTQo+ID4+IFRvOiBOaSwgUnVpeXUgPHJ1aXl1Lm5pQGludGVs LmNvbT4KPiA+PiBDYzogQW50aG9ueSBQRVJBUkQgPGFudGhvbnkucGVyYXJkQGNpdHJpeC5jb20+ OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsgWGVuIERldmVsIDx4ZW4tZGV2ZWxAbGlzdHMueGVu Lm9yZz4KPiA+PiBTdWJqZWN0OiBSZTogW2VkazJdIE9WTUYgYnJva2VuIHVuZGVyIFhlbiAoaW4g UENJIGluaXRpYWxpc2F0aW9uKQo+ID4+Cj4gPj4gT24gVHVlLCBBcHIgMjYsIDIwMTYgYXQgMDY6 NDM6NTZBTSArMDAwMCwgTmksIFJ1aXl1IHdyb3RlOgo+ID4+ID4KPiA+PiA+Cj4gPj4gPiBSZWdh cmRzLAo+ID4+ID4gUmF5Cj4gPj4gPgo+ID4+ID4gPi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t Cj4gPj4gPiA+RnJvbTogZWRrMi1kZXZlbCBbbWFpbHRvOmVkazItZGV2ZWwtYm91bmNlc0BsaXN0 cy4wMS5vcmddIE9uIEJlaGFsZiBPZiBBbnRob255IFBFUkFSRAo+ID4+ID4gPlNlbnQ6IEZyaWRh eSwgQXByaWwgMjIsIDIwMTYgMTA6NDggUE0KPiA+PiA+ID5UbzogZWRrMi1kZXZlbEBsaXN0cy4w MS5vcmc8bWFpbHRvOmVkazItZGV2ZWxAbGlzdHMuMDEub3JnPgo+ID4+ID4gPkNjOiBYZW4gRGV2 ZWwgPHhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnPG1haWx0bzp4ZW4tZGV2ZWxAbGlzdHMueGVuLm9y Zz4+Cj4gPj4gPiA+U3ViamVjdDogW2VkazJdIE9WTUYgYnJva2VuIHVuZGVyIFhlbiAoaW4gUENJ IGluaXRpYWxpc2F0aW9uKQo+ID4+ID4gPgo+ID4+ID4gPkhpLAo+ID4+ID4gPgo+ID4+ID4gPkZv bGxvd2luZyB0aGUgc3dpdGNoIHRvIE1kZU1vZHVsZVBrZy9CdXMvUGNpL1BjaUhvc3RCcmlkZ2VE eGUsIHRoZSBwY2kgcm9vdAo+ID4+ID4gPmJyaWRnZSBkb2VzIG5vdCBmaW5pc2ggdG8gaW5pdGlh bGl6ZSBhbmQgYnJlYWtzIHVuZGVyIFhlbi4KPiA+PiA+ID4KPiA+PiA+ID5UaGVyZSBhcmUgc2V2 ZXJhbCBpc3N1ZSBwcm9iYWJseSBkdWUgdG8gdGhlIHVzZSBvZgo+ID4+ID4gPlBjZFBjaURpc2Fi bGVCdXNFbnVtZXJhdGlvbj1UUlVFLgo+ID4+ID4gPgo+ID4+ID4gPkZpcnN0IG9uZToKPiA+PiA+ ID5BU1NFUlQgTWRlTW9kdWxlUGtnL0J1cy9QY2kvUGNpSG9zdEJyaWRnZUR4ZS9QY2lSb290QnJp ZGdlSW8uYyg5OSk6IEJyaWRnZS0+TWVtLkxpbWl0IDwKPiA+MHgwMDAwMDAwMTAwMDAwMDAwVUxM Cj4gPj4gPiA+Cj4gPj4gPiA+VGhpcyBwYXRjaCB3b3VsZCBmaXggdGhlIGZpcnN0IGFzc2VydDoK PiA+PiA+ID5kaWZmIC0tZ2l0IGEvT3ZtZlBrZy9QbGF0Zm9ybVBlaS9YZW4uYyBiL092bWZQa2cv UGxhdGZvcm1QZWkvWGVuLmMKPiA+PiA+ID5pbmRleCA3ZmE5MDE5Li4xNWVjN2E3IDEwMDY0NAo+ ID4+ID4gPi0tLSBhL092bWZQa2cvUGxhdGZvcm1QZWkvWGVuLmMKPiA+PiA+ID4rKysgYi9Pdm1m UGtnL1BsYXRmb3JtUGVpL1hlbi5jCj4gPj4gPiA+QEAgLTIyNyw1ICsyMjcsMTEgQEAgSW5pdGlh bGl6ZVhlbiAoCj4gPj4gPiA+Cj4gPj4gPiA+ICAgUGNkU2V0Qm9vbCAoUGNkUGNpRGlzYWJsZUJ1 c0VudW1lcmF0aW9uLCBUUlVFKTsKPiA+PiA+ID4KPiA+PiA+ID4rICAvLyBWYWx1ZXMgZnJvbSBo dm1sb2FkZXIKPiA+PiA+ID4rI2RlZmluZSBQQ0lfTUVNX0VORCAgICAgICAgIDB4RkMwMDAwMDAK PiA+PiA+ID4rI2RlZmluZSBIVk1fQkVMT1dfNEdfTU1JT19TVEFSVCAweEYwMDAwMDAwCj4gPj4g PiA+KyAgUGNkU2V0NjQgKFBjZFBjaU1taW8zMkJhc2UsIEhWTV9CRUxPV180R19NTUlPX1NUQVJU KTsKPiA+PiA+ID4rICBQY2RTZXQ2NCAoUGNkUGNpTW1pbzMyU2l6ZSwgUENJX01FTV9FTkQgLSBI Vk1fQkVMT1dfNEdfTU1JT19TVEFSVCk7Cj4gPj4gPiA+Kwo+ID4+ID4gPiAgIHJldHVybiBFRklf U1VDQ0VTUzsKPiA+PiA+ID4gfQo+ID4+ID4gPgo+ID4+ID4gPgo+ID4+ID4gPkJ1dCB0aGF0IG5v dCBlbm91Z2gsIG5leHQgYXNzZXJ0IGlzOgo+ID4+ID4gPkFTU0VSVCBNZGVNb2R1bGVQa2cvQnVz L1BjaS9QY2lCdXNEeGUvUGNpRGV2aWNlU3VwcG9ydC5jKDgwNyk6IFJvb3RCcmlkZ2UgIT0gKCh2 b2lkICopIDApCj4gPj4gPiA+Cj4gPj4gPiA+SSBoYXZlIHdvcmtlZCBhcm91bmQgdGhpcyBvbmUg d2l0aCB0aGUgZm9sbG93aW5nIHBhdGNoLiBUaGF0IHdvdWxkCj4gPj4gPiA+Y29ycmVzcG9uZCB0 byBob3cgdGhlIGZvcm1lciBpbXBsZW1lbnRhdGlvbiBpbiBPdm1mUGtnIHdhcyBpbml0aWFsaXpp bmcgdGhlCj4gPj4gPiA+c3RydWN0LiBNYXliZSBhIGJldHRlciB3YXkgd291bGQgYmUgdG8gZmls bCBSZXNBbGxvY2F0ZWQgdW5kZXIgWGVuLAo+ID4+ID4gPnNvbWVob3cuIFVuZGVyIFhlbiwgdGhl IFJlc0FsbG9jTm9kZSBzdGF0dXMgaXMgbm90IGFsbG9jYXRlZCwgc28gbm8KPiA+PiA+ID5EZXNj cmlwdG9yIGFyZSBjcmVhdGVkLgo+ID4+ID4gPgo+ID4+ID4gPmRpZmYgLS1naXQgYS9NZGVNb2R1 bGVQa2cvQnVzL1BjaS9QY2lIb3N0QnJpZGdlRHhlL1BjaVJvb3RCcmlkZ2VJby5jCj4gPj4gPiA+ Yi9NZGVNb2R1bGVQa2cvQnVzL1BjaS9QY2lIb3N0QnJpZGdlRHhlL1BjaVJvb3RCcmlkZ2VJby5j Cj4gPj4gPiA+aW5kZXggY2RhOWI0OS4uZWRhOTJiNiAxMDA2NDQKPiA+PiA+ID4tLS0gYS9NZGVN b2R1bGVQa2cvQnVzL1BjaS9QY2lIb3N0QnJpZGdlRHhlL1BjaVJvb3RCcmlkZ2VJby5jCj4gPj4g PiA+KysrIGIvTWRlTW9kdWxlUGtnL0J1cy9QY2kvUGNpSG9zdEJyaWRnZUR4ZS9QY2lSb290QnJp ZGdlSW8uYwo+ID4+ID4gPkBAIC0xNTA5LDE1ICsxNTA5LDEzIEBAIFJvb3RCcmlkZ2VJb0NvbmZp Z3VyYXRpb24gKAo+ID4+ID4gPgo+ID4+ID4gPiAgICAgUmVzQWxsb2NOb2RlID0gJlJvb3RCcmlk Z2UtPlJlc0FsbG9jTm9kZVtJbmRleF07Cj4gPj4gPiA+Cj4gPj4gPiA+LSAgICBpZiAoUmVzQWxs b2NOb2RlLT5TdGF0dXMgIT0gUmVzQWxsb2NhdGVkKSB7Cj4gPj4gPiA+LSAgICAgIGNvbnRpbnVl Owo+ID4+ID4gPi0gICAgfQo+ID4+ID4gPi0KPiA+PiA+ID4gICAgIERlc2NyaXB0b3ItPkRlc2Mg PSBBQ1BJX0FERFJFU1NfU1BBQ0VfREVTQ1JJUFRPUjsKPiA+PiA+ID4gICAgIERlc2NyaXB0b3It PkxlbiAgPSBzaXplb2YgKEVGSV9BQ1BJX0FERFJFU1NfU1BBQ0VfREVTQ1JJUFRPUikgLSAzOwo+ ID4+ID4gPisgICAgaWYgKFJlc0FsbG9jTm9kZS0+U3RhdHVzICE9IFJlc0FsbG9jYXRlZCkgewo+ ID4+ID4gPiAgICAgRGVzY3JpcHRvci0+QWRkclJhbmdlTWluICA9IFJlc0FsbG9jTm9kZS0+QmFz ZTsKPiA+PiA+ID4gICAgIERlc2NyaXB0b3ItPkFkZHJSYW5nZU1heCAgPSBSZXNBbGxvY05vZGUt PkJhc2UgKyBSZXNBbGxvY05vZGUtPkxlbmd0aCAtIDE7Cj4gPj4gPiA+ICAgICBEZXNjcmlwdG9y LT5BZGRyTGVuICAgICAgID0gUmVzQWxsb2NOb2RlLT5MZW5ndGg7Cj4gPj4gPiA+KyAgICB9Cj4g Pj4gPiA+ICAgICBzd2l0Y2ggKFJlc0FsbG9jTm9kZS0+VHlwZSkgewo+ID4+ID4gPgo+ID4+ID4g SSB0aGluayBhIG1vcmUgcHJvcGVyIGZpeCBpcyB0byByZXR1cm4gRUZJX1VOU1VQUE9SVEVEIHdp dGhvdXQgcmV0dXJuaW5nIGFueQo+ID4+ID4gZGVzY3JpcHRvcnMgd2hlbiB0aGUgUGNkUGNpRGlz YWJsZUJ1c0VudW1lcmF0aW9uIGlzIFRSVUUuCj4gPj4gPiBQZXIgVUVGSSBTcGVjLCBFRklfVU5T VVBQT1JURUQgbWVhbnMgIlRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gb2YgdGhpcyBQQ0kKPiA+ PiA+IHJvb3QgYnJpZGdlIGNvdWxkIG5vdCBiZSByZXRyaWV2ZWQuIiBJdCdzIHRydWUgd2hlbiB0 aGUgUENEIGlzIHRydWUuCj4gPj4gPgo+ID4+ID4gPgo+ID4+ID4gPlRoYXQgbGVhZHMgdG8gb25l IGxhc3QgYXNzZXJ0Ogo+ID4+ID4gPj4gUWVtdVZpZGVvOiBDaXJydXMgNTQ0NiBkZXRlY3RlZAo+ ID4+ID4gPj4gSW5zdGFsbFByb3RvY29sSW50ZXJmYWNlOiAwOTU3NkU5MS02RDNGLTExRDItOEUz OS0wMEEwQzk2OTcyM0IgN0I5RUY1OTgKPiA+PiA+ID4+IEFkZGluZyBNb2RlIDAgYXMgQ2lycnVz IEludGVybmFsIE1vZGUgMDogNjQweDQ4MCwgMzItYml0LCA2MCBIego+ID4+ID4gPj4gQWRkaW5n IE1vZGUgMSBhcyBDaXJydXMgSW50ZXJuYWwgTW9kZSAxOiA4MDB4NjAwLCAzMi1iaXQsIDYwIEh6 Cj4gPj4gPiA+PiBBZGRpbmcgTW9kZSAyIGFzIENpcnJ1cyBJbnRlcm5hbCBNb2RlIDI6IDEwMjR4 NzY4LCAyNC1iaXQsIDYwIEh6Cj4gPj4gPiA+PiBQaXhlbEJsdWVHcmVlblJlZFJlc2VydmVkOEJp dFBlckNvbG9yCj4gPj4gPiA+PiBBU1NFUlQgL2xvY2FsL2hvbWUvc2hlZXAvd29yay9vdm1mL01k ZU1vZHVsZVBrZy9CdXMvUGNpL1BjaUJ1c0R4ZS9QY2lJby5jKDE3ODkpOiAoKEJPT0xFQU4pKDA9 PTEpKQo+ID4+ID4gPkZvciB0aGlzIG9uZSwgSSd2ZSB3b3JrYXJvdW5kIGJ5IHJldmVydGluZyBw YXRjaCA3YjBhMWVhCj4gPj4gPiA+KE1kZU1vZHVlbFBrZy9QY2lCdXM6IFJldHVybiBBZGRyVHJh bnNsYXRpb25PZmZzZXQgaW4gR2V0QmFyQXR0cmlidXRlcykuCj4gPj4gPiA+VGhhdCBpc3N1ZSB3 YXMgaW50cm9kdWNlIHdoaWxlIHN0aWxsIHVzaW5nIHRoZSBVU0VfT0xEX1BDSV9IT1NULgo+ID4+ ID4gPgo+ID4+ID4gPkFueSBpZGVlIG9yIHBvaW50ZXIgb24gaG93IHRvIGZpeCB0aG9zZSBpc3N1 ZXMgPwo+ID4+ID4KPiA+PiA+IFdoZW4gdGhlIFBjaVJvb3RCcmlkZ2VJby5Db25maWd1cmF0aW9u KCkgcmV0dXJucyBFRklfVU5TVVBQT1JURUQsIHRoaXMgYXNzZXJ0aW9uCj4gPj4gPiBjYW4gYmUg Zml4ZWQgYXMgd2VsbC4gQ29ycmVjdD8KPiA+Pgo+ID4+IEkgdHJpZWQgdG8gbWFrZSBSb290QnJp ZGdlSW9Db25maWd1cmF0aW9uKCkgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRAo+ID4+IChzZWUgdGhl IGF0dGFjaG1lbnQpLCBhbmQgdGhvc2UgYXNzZXJ0cyB3ZXJlIGdvbmUuIEhvd2V2ZXIsIHRoZSBz eXN0ZW0KPiA+PiBzdHVjayBzb21ld2hlcmUgYWZ0ZXIgbG9hZGluZyBzaGVsbC5lZmkuIEhlcmUg YXJlIHRoZSBtZXNzYWdlcyBmcm9tIHRoZQo+ID4+IGRlYnVnIGxvZzoKPiA+Pgo+ID4+IEJkc0xp YkNvbm5lY3RBbGwKPiA+PiBTZWxlY3QgSXRlbTogMHhFCj4gPj4gTWVtb3J5ICBQcmV2aW91cyAg Q3VycmVudCAgICBOZXh0Cj4gPj4gIFR5cGUgICAgUGFnZXMgICAgIFBhZ2VzICAgICBQYWdlcwo+ ID4+ID09PT09PSAgPT09PT09PT0gID09PT09PT09ICA9PT09PT09PQo+ID4+ICAgMEEgICAgMDAw MDAwMDQgIDAwMDAwMDAxICAwMDAwMDAwNAo+ID4+ICAgMDkgICAgMDAwMDAwMDggIDAwMDAwMDEx ICAwMDAwMDAxNQo+ID4+ICAgMDAgICAgMDAwMDAwMDQgIDAwMDAwMDAxICAwMDAwMDAwNAo+ID4+ ICAgMDYgICAgMDAwMDAwMjQgIDAwMDAwMDU3ICAwMDAwMDA2Qwo+ID4+ICAgMDUgICAgMDAwMDAw MzAgIDAwMDAwMDYzICAwMDAwMDA3Qgo+ID4+ICAgMDMgICAgMDAwMDAxODAgIDAwMDAwNDhEICAw MDAwMDVCMAo+ID4+ICAgMDQgICAgMDAwMDBGMDAgIDAwMDAwQjY1ICAwMDAwMEYwMAo+ID4+IEJv b3RpbmcgRUZJIEludGVybmFsIFNoZWxsCj4gPj4gSW5zdGFsbFByb3RvY29sSW50ZXJmYWNlOiA1 QjFCMzFBMS05NTYyLTExRDItOEUzRi0wMEEwQzk2OTcyM0IgM0VBNTgwQzAKPiA+PiBMb2FkaW5n IGRyaXZlciBhdCAweDAwMDNFMDNGMDAwIEVudHJ5UG9pbnQ9MHgwMDAzRTAzRjI0MCBTaGVsbC5l ZmkKPiA+PiBJbnN0YWxsUHJvdG9jb2xJbnRlcmZhY2U6IEJDNjIxNTdFLTNFMzMtNEZFQy05OTIw LTJEM0IzNkQ3NTBERiAzRUE1OEI5OAo+ID4+IEluc3RhbGxQcm90b2NvbEludGVyZmFjZTogMzg3 NDc3QzItNjlDNy0xMUQyLThFMzktMDBBMEM5Njk3MjNCIDNFQTU0MzIwCj4gPj4gSW5zdGFsbFBy b3RvY29sSW50ZXJmYWNlOiA3NTJGMzEzNi00RTE2LTRGREMtQTIyQS1FNUY0NjgxMkY0Q0EgM0VB NTNDRDgKPiA+PiBJbnN0YWxsUHJvdG9jb2xJbnRlcmZhY2U6IDYzMDJEMDA4LTdGOUItNEYzMC04 N0FDLTYwQzlGRUY1REE0RSAzRTE2QjU4MAo+ID4+Cj4gPj4gSSBjb3VsZG4ndCBmaW5kIG91dCB3 aGVyZSBpdCBzdHVjayB1bmxlc3MgdGhlcmUgaXMgYSB3YXkgdG8gYXR0YWNoIGdkYgo+ID4+IHRv IFhlbiBIVk0gZm9yIHNvdXJjZSBsZXZlbCBkZWJ1Z2dpbmcgOi0oCj4gPj4KPiA+PiBUaGFua3Ms Cj4gPj4KPiA+PiBHYXJ5IExpbgo+ID4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCj4gPj4gZWRrMi1kZXZlbCBtYWlsaW5nIGxpc3QKPiA+PiBlZGsyLWRl dmVsQGxpc3RzLjAxLm9yZwo+ID4+IGh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlzdGlu Zm8vZWRrMi1kZXZlbAo+ID4+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KPiBlZGsyLWRldmVsIG1haWxpbmcgbGlzdAo+IGVkazItZGV2ZWxAbGlzdHMu MDEub3JnCj4gaHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9lZGsyLWRldmVs Cj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t ZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54 ZW4ub3JnL3hlbi1kZXZlbAo=