VGhvbWFzIEzDvGJraW5nIHdyb3RlOgo+IAo+IFRoaXMgaXMgYW4gYXV0b21hdGljYWxseSBnZW5l cmF0ZWQgZS1tYWlsLiBUbyByZXBseSwgdmlzaXQ6IAo+IGh0dHA6Ly9naXQucmV2aWV3Ym9hcmQu a2RlLm9yZy9yLzEwMzk0OC8KPiAKPiAKPiAgICAgT24gRmVicnVhcnkgMjV0aCwgMjAxMywgMTI6 NTMgcC5tLiBVVEMsICpNYXJ0aW4gR3LDpMOfbGluKiB3cm90ZToKPiAKPiAgICAgICAgIGt3aW4v bGlia2RlY29yYXRpb25zL2tkZWNvcmF0aW9uYnJpZGdlLmgKPiAgICAgICAgIDxodHRwOi8vZ2l0 LnJldmlld2JvYXJkLmtkZS5vcmcvci8xMDM5NDgvZGlmZi80Lz9maWxlPTExNTI2NiNmaWxlMTE1 MjY2bGluZTUxPgo+ICAgICAgICAgKERpZmYgcmV2aXNpb24gNCkKPiAKPiAgICAgICAgIGNsYXNz IEtEZWNvcmF0aW9uQnJpZGdlIDogcHVibGljIEtEZWNvcmF0aW9uRGVmaW5lcwo+IAo+ICAgICAg ICAgCQo+IAo+ICAgICAgICAgCTUxIAkKPiAKPiAgICAgICAgICAgICB2aXJ0dWFsIFF1aWNrVGls ZU1vZGUgcXVpY2tUaWxlTW9kZSgpIGNvbnN0ID0gMDsKPiAKPiAgICAgICAgIGRvIHdlIG5lZWQg dG8gY3JlYXRlIGEgS0RlY29yYXRpb25CcmlkZ2UyIG9yIGlzIGl0IHNhZmUgdG8gZG8gbm9uLUFC SSBjaGFuZ2VzIGluIHRoZSBicmlkZ2Ugc2luY2UgQ29tcGl6IGlzIG5vIGlzc3VlIGFueSBtb3Jl Pwo+IAo+IFRvd2FyZHMgdGhlIGRlY29yYXRpb24gcGx1Z2lucyB0aGlzIGlzIHNhZmUuCj4gCj4g V2hldGhlciB0aGlzIGlzIGdvbm5hIGludHJvZHVjZSBhbiBBQkkgYnJlYWsgZm9yIHRoZSBrZGU0 IGRlY29yYXRvciBmb3IgY29tcGl6IGRlcGVuZHMgb24gd2hldGhlciBpdCBhY3R1YWxseSBpbmNs dWRlcyB0aGlzIGhlYWRlci4KPiBJZiB5ZXMsIGl0IGhhcyB0byBpbXBsZW1lbnQgdGhlIG5ldyB2 aXJ0dWFsIGFuZCBwcmV2aW91c2x5IGNvbXBpbGVkIHZlcnNpb25zIGxpbmtpbmcgbGlia2RlY29y YXRpb25zIHdpbGwgZ2V0IGFuIEFCSSBjcmFzaCBmb3IgdGhpcy4KPiAKPiBJZiB0aGUgZGVjb3Jh dG9yIGJyaW5ncyBpdHMgb3duIGRlY28gaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uLCB0aGVyZSdz IG5vIHByb2JsZW0uCj4gCj4gSSBndWVzcyBpJ2xsIGhhdmUgdG8gbG9va3VwIHRoZSBkZWNvcmF0 b3Igc291cmNlcywgYnV0IHRoYXQgd291bGQgYmUgYSBxdWl0ZSBjcmFwIHNpdHVhdGlvbiBiZWNh dXNlIHRoZSBkZWNvYnJpZGdlIHdvdWxkIGV4aXN0IGZvciBubyBtb3JlIGFueSByZWFzb24gKGJl aW5nIHRoZSBnbHVlIGJldHdlZW4gdGhlIGNvcmUgYW5kIHRoZSBkZWNvIEFQSSkKPiAKPiAKPiAt IFRob21hcwo+IAo+IAo+IE9uIEZlYnJ1YXJ5IDI0dGgsIDIwMTMsIDEwOjM2IHAubS4gVVRDLCBU aG9tYXMgTMO8Ymtpbmcgd3JvdGU6Cj4gCj4gUmV2aWV3IHJlcXVlc3QgZm9yIGt3aW4sIE1hcnRp biBHcsOkw59saW4gYW5kIEh1Z28gUGVyZWlyYSBEYSBDb3N0YS4KPiBCeSBUaG9tYXMgTMO8Ymtp bmcuCj4gCj4gL1VwZGF0ZWQgRmViLiAyNCwgMjAxMywgMTA6MzYgcC5tLi8KPiAKPiAKPiAgIERl c2NyaXB0aW9uCj4gCj4gQWN0dWFsbHkgdGhlIG9ubHkgdGhpbmcgdGhlIHBhdGNoIGRvZXMgbm90 IGlzIHdoYXQncyBzdGF0ZWQgaW4gdGhlIHN1bW1hcnkgOy0pCj4gCj4gLSBUaGUgc2V0dGluZyBp cyBpZ25vcmVkLCB0aGUgZGVjb3JhdGlvbiBhbHdheXMgZ2V0cyBhICJ0cnVlIiBmb3IgaXQKPiAt IG1vdmluZyBhIG1heGltaXplZCB3aW5kb3cgcmVxdWlyZXMgYnJlYWtpbmcgYSAic3Ryb25nIiBz bmFwICgxLzE2IG9mIHNjcmVlbiBoZWlnaHQgLSB1bmxlc3MgeW91IHVzZSBxdWljayBtYXhpbWl6 YXRpb24pCj4gLSBhbGwgc25hcHBpbmcgaXMgZG9uZSB0b3dhcmRzIHRoZSBjbGllbnQsIG5vdCB0 aGUgZnJhbWUKPiAtIFF1aWNrVGlsZU1vZGUgaXMgZXhwb3J0ZWQgdG8gdGhlIGRlY29yYXRpb24g KGp1c3QgYXMgdGhlIG1heGltaXplTW9kZSkgc28gdGhhdCBpdCBjYW4gZml4IHRoZSBib3JkZXJz aXplIGFsb25nc2lkZSB0aGF0LiAoSSd2ZSBhIHNhbXBsZSBpbXBsZW1lbnRhdGlvbiBpbiBsb2Nh bCBCZXNwaW4gYXMgaW5zcGlyYXRpb24gZm9yIG90aGVyIGRlY29zKQo+IAo+ICAgUmF0aW86Cj4g SXQncyBzaW1wbHkgbm90IHBvc3NpYmxlIHRvIHBlcmZvcm0gdGhlIHNwZWNpYWxzdGF0ZSBzbmFw cGluZyBpbiB0aGUgY29yZS4KPiBFaXRoZXIgdGhlIGRlY29yYXRpb24gZ2V0cyBjbGlwcGVkLCBi dXQgdGhhdCBhbHNvIGNsaXBzIHRpdGxlYmFyIGJ1dHRvbnMgLT4gZmFpbAo+IE9yIHRoZSBkZWNv cmF0aW9uIGdldHMgcmVzaXplZCAidW5kZXIgdGhlIGhvb2QiIChpZS4gd2Ugb3ZlcnJpZGUgYm9y ZGVyXyogYWZ0ZXIgb2J0YWluaW5nIGl0KSBidXQgdGhhdCBoYXMgYmFkIHZpc3VhbCBpbXBhY3Qg b24gZGVjb3JhdGlvbnMgbGlrZSBwbGFzdGlrICh3aGVyZSB0aGUgY2xpZW50IHZpc3VhbGx5IG92 ZXJmbG93cyB0aGUgYm9yZGVyLCBpdCBjbGVhcmx5IGxvb2tzIGxpa2UgdGhlIGNsaWVudCBpcyBw YXRjaGVkIG9udG8gdGhlIGRlY28pIC0+IGZhaWwKPiAKPiAtPiB0aGUgZGVjbyBpcyBpbmZvcm1l ZCBhYm91dCB0aG9zZSBzcGVjaWFsIHN0YXRlcyBhbmQgY2FuIGRyb3Agc29tZSBvZiBpdHMgYm9y ZGVycyBvciBub3QuCj4gU2hvdWxkIGJlIG5vIG1ham9yIHByb2JsZW0gZm9yIG94eWdlbiAoc2lu Y2UgaXQgYmxlbmRzIGludG8gY2xpZW50cyBhbnl3YXkpIGJ1dCBpJ3ZlIG5vdCBjaGVja2VkIGhv dyB0byBtYWtlIHVzZSBvZiB0aGF0IGluIGF1cm9yYWUgKG9yIGV2ZW4gaXRzIGNsaWVudCBjb2Rl KQo+IAo+IAo+ICAgVGVzdGluZwo+IAo+IFdpdGggdGhlIChzdGlsbCBsb2NhbCkgY2hhbmdlcyB0 byBiZXNwaW4gSSBnZXQgbmljZSBwYXJ0aWFsIGNsaXBwaW5nIGZvciBxdWlja3RpbGVkIChvciBw YXJ0aWFsbHkgbWF4aW1pemVkKSB3aW5kb3dzLgo+IEhlbHBlZCBtZSB0byBjbGVhbiB1cCBzb21l IGJlc3BpbiBkZWNvIGNvZGUgYXMgd2VsbCA9KQo+IAo+ICpCdWdzOiAqIDI5OTI0NSA8aHR0cDov L2J1Z3Mua2RlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk5MjQ1Pgo+IAo+IAo+ICAgRGlmZnMKPiAK PiAgICAgKiBrd2luL3dvcmtzcGFjZS5oIChlMDMzYWM5KQo+ICAgICAqIGt3aW4vbGlia2RlY29y YXRpb25zL2tkZWNvcmF0aW9uX3AuY3BwICg1YjU0MzY5KQo+ICAgICAqIGt3aW4vbGlia2RlY29y YXRpb25zL2tkZWNvcmF0aW9uYnJpZGdlLmggKDJjYjM2YzkpCj4gICAgICoga3dpbi9saWJrd2lu ZWZmZWN0cy9rd2luZ2xvYmFscy5oIChkYmE0MzI0KQo+ICAgICAqIGt3aW4va2Nta3dpbi9rd2lu ZGVjb3JhdGlvbi9wcmV2aWV3LmNwcCAoOTRhYWNiYSkKPiAgICAgKiBrd2luL2xpYmtkZWNvcmF0 aW9ucy9rZGVjb3JhdGlvbi5oICgyYzIwNzY3KQo+ICAgICAqIGt3aW4vbGlia2RlY29yYXRpb25z L2tkZWNvcmF0aW9uLmNwcCAoN2NjYmRiNikKPiAgICAgKiBrd2luL2xpYmtkZWNvcmF0aW9ucy9r ZGVjb3JhdGlvbl9wLmggKDcxODMzY2QpCj4gICAgICoga3dpbi9icmlkZ2UuaCAoMzVlZmM5MCkK PiAgICAgKiBrd2luL2JyaWRnZS5jcHAgKDMxZDI4NWUpCj4gICAgICoga3dpbi9jbGllbnQuaCAo MGM5ZDFkMikKPiAgICAgKiBrd2luL2NsaWVudC5jcHAgKGYyMzM4ZDQpCj4gICAgICoga3dpbi9n ZW9tZXRyeS5jcHAgKDM3MmE0YzgpCj4gICAgICoga3dpbi9rY21rd2luL2t3aW5kZWNvcmF0aW9u L3ByZXZpZXcuaCAoNDIwZTMwMikKPiAKPiBWaWV3IERpZmYgPGh0dHA6Ly9naXQucmV2aWV3Ym9h cmQua2RlLm9yZy9yLzEwMzk0OC9kaWZmLz4KPiAKPiAKSGksCgpTb3JyeSB0byBpbnRydWRlIGlu IHRoZSBkaXNjdXNzaW9uLCBidXQgSSBhbSBzdGlsbCB2ZXJ5IGF0dGVudGl2ZSB0byAKY2hhbmdl cyB0aGF0IG1heSBhZmZlY3QgbXVsdGlwbGUgc2NyZWVucyBzZXR1cHMsIGFuZCBJIHByZWZlciB0 byBhc2sgCmJlZm9yZSBpdCBpcyB0b28gbGF0ZS4KCkFzIGZhciBhcyBJIHVuZGVyc3RhbmQsIHRo ZSBvcHRpb24gIkFsbG93IHRvIG1vdmUgbWF4aW1pemVkIHdpbmRvd3MiIAp3aWxsIGRpc2FwcGVh ciwgYnV0LCB3ZSB3b24ndCBsb29zZSB0aGUgYWJpbGl0eSB0byBtb3ZlIG1heGltaXplZCAKd2lu ZG93cywgcmlnaHQgPyAodGhhdCdzIGZpbmU6IHRoaXMgZmVhdHVyZSBpcyByZWFsbHkgaW1wb3J0 YW50LCAKZXNwZWNpYWxseSBvbiBtdWx0aXBsZS1zY3JlZW5zIHNldHVwcykuCgpDb3VsZCB5b3Ug anVzdCBjb25maXJtIHRoYXQgdGhlIG1heGltaXplZCB3aW5kb3dzIHdpbGwgc3RpbGwgYmUgbW92 YWJsZSAKdXNpbmcgdGhlIFtBTFRdICsgIm1vdXNlIGxlZnQgY2xpY2siIGNvbWJpbmF0aW9uIHRv bywgYXMgaXQgd2FzIGJlZm9yZSA/CgoKUC5TLiBhcyBmb3IgS0RFMyAoMy40KSwgbm90IGNoZWNr aW5nIHRoZSBvcHRpb24gIkFsbG93IHRvIG1vdmUgbWF4aW1pemVkIAp3aW5kb3dzIiB0b3RhbGx5 IHByZXZlbnRzIHRvIG1vdmUgYSBtYXhpbWl6ZWQgd2luZG93LgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18Ka3dpbiBtYWlsaW5nIGxpc3QKa3dpbkBrZGUu b3JnCmh0dHBzOi8vbWFpbC5rZGUub3JnL21haWxtYW4vbGlzdGluZm8va3dpbgo=