Cgo+IE9uIEF1Zy4gNCwgMjAxNCwgMToyMCBwLm0uLCBEYW4gVnLDoXRpbCB3cm90ZToKPiA+IFNv cnJ5LCB0aGlzIGlzIG5vdCB0aGUgcmlnaHQgc29sdXRpb24gLSB0aGVyZSBhcmUgbWFueSBvdGhl ciBwbGFjZXMgaW4gQWtvbmFkaSB3aGVyZSB3ZSB1c2UgWC1BS0FQUEVORCB0aGF0IGNvdWxkIHBv dGVudGlhbGx5IGdldCBicm9rZW4gYnkgYXN0eWxlIGFuZCB3ZSBjYW4ndCBqdXN0IHdvcmthcm91 bmQgZXZlcnl0aGluZyBieSBtYWtpbmcgaXQgYSBzdHJpbmcuIEFsdGVyaW5nIHRoZSBjb2RlIGp1 c3Qgc28gdGhhdCBhc3R5bGUgdW5kZXJzdGFuZHMgaXQgaXMgbm90IHRoZSByaWdodCBhcHByb2Fj aCA6KQo+ID4gCj4gPiBBcyBJIG1lbnRpb25lZCBpbiBteSBlbWFpbCB0byB5b3UsIG5leHQgdGlt ZSBJIGp1c3QgaGF2ZSB0byBiZSBtb3JlIGNhcmVmdWwgd2hlbiByZXZpZXdpbmcgdGhlIGNoYW5n ZXMuCj4gCj4gS2V2aW4gS3JhbW1lciB3cm90ZToKPiAgICAgQXJlIHlvdSBzdXJlPwo+ICAgICBI ZXJlIGl0IGlzIGEgc3RyaW5nLCBqdXN0IHRoYXQgdGhlIHF1b3RlcyBhcmUgYWRkZWQgYnkgdGhl IG1hY3JvLgo+ICAgICAKPiAgICAgRG8gd2UgaGF2ZSBhbnkgY29kZSB0aGF0IHVzZXMgYSBjaGFy YWN0ZXIgdGhhdCBsb29rcyBsaWtlIGEgbWludXMgYnV0IGlzbid0IGFuZCBpcyBub3QgaW5zaWRl IGEgc3RyaW5nIGxpdGVyYWw/Cj4gCj4gR3V5IE1hdXJlbCB3cm90ZToKPiAgICAgTk8sIHdlIGRv bid0IGhhdmUgKGFrb25hZGkpICptYW55KiBwbGFjZXMgd2hlcmUgd2UgdXNlIFgtQUtBUFBFTkQu Cj4gICAgIFRoZSBmaXJzdCBwbGFjZSBpcyBsaWJzL3Byb3RvY29sX3AuaDo4NDojZGVmaW5lIEFL T05BRElfQ01EX0lURU1DUkVBVEUgICAgICAgIlgtQUtBUFBFTkQiCj4gICAgIE1hbnkgb3RoZXIg cGxhY2VzIGFyZSBzdWNoIHNlcnZlci90ZXN0cy91bml0dGVzdC9ha2FwcGVuZGhhbmRsZXJ0ZXN0 LmNwcDoxNTc6ICAgICAgICByZXR1cm4gIkM6IDIgWC1BS0FQUEVORCAiLi4uCj4gICAgIHVzaW5n IGl0IGFzIGEgc3RyaW5nLgo+ICAgICBVbmRlciBrZGVwaW1saWJzL2Frb25hZGkgeW91IGNhbiBm aW5kOgo+ICAgICBzcmMvY29yZS9qb2JzL2l0ZW1jcmVhdGVqb2IuY3BwOjE3NjogICAgICAgIGNv bW1hbmQgKz0gIiBYLUFLQVBQRU5EICI7Cj4gICAgIAo+ICAgICBIYXZpbmcgYSBsb29rIHRvIHNy Yy81L2tkZS9rZGVwaW1saWJzL2Frb25hZGkKPiAgICAgVGhlcmUgYXJlIG1vcmUgdGhhbiA3MDAw IGxpbmVzIHdpdGggYSBtaW51cy1zaWduLgo+ICAgICBBbGwgYXJlIGFyaXRobWV0aWMgb3BlcmF0 b3JzLCBvciBzdHJpbmdzIHdpdGggIiIgb3IgY2hhcmN0ZXIgd2l0aCAnJy4KCkV2ZW4gaWYgdGhl IGV4aXN0aW5nIGNvZGUgaXMgY2hhbmdlZCBzbyB0aGF0IGFzdHlsZSBjYW4gYmUgcnVuIHdpdGhv dXQgYnJlYWtpbmcgaXQsIHRoZXJlIGlzIGFsd2F5cyB0aGUgcG90ZW50aWFsIGZvciBmdXR1cmUg Y2hhbmdlcyB3aGljaCBjb3VsZCBiZSBicm9rZW4gYnkgYXN0eWxlLiBTbyBJIHdvdWxkIGFncmVl IHdpdGggRGFuIHRoYXQgYWx0ZXJpbmcgdGhlIGNvZGUgaXMgdGhlIHdyb25nIGFwcHJvYWNoLCBz aW5jZSBhc3R5bGUgY2FuIG5ldmVyIGJlIGd1YXJhbnRlZWQgdG8gd29yayB3aXRob3V0IGlzc3Vl cy4KCgotIERhdmlkCgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KVGhpcyBpcyBhbiBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBlLW1h aWwuIFRvIHJlcGx5LCB2aXNpdDoKaHR0cHM6Ly9naXQucmV2aWV3Ym9hcmQua2RlLm9yZy9yLzEx OTU3Ni8jcmV2aWV3NjM3NzQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KCgpPbiBBdWcuIDIsIDIwMTQsIDU6MDMgcC5tLiwgR3V5IE1h dXJlbCB3cm90ZToKPiAKPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQo+IFRoaXMgaXMgYW4gYXV0b21hdGljYWxseSBnZW5lcmF0ZWQg ZS1tYWlsLiBUbyByZXBseSwgdmlzaXQ6Cj4gaHR0cHM6Ly9naXQucmV2aWV3Ym9hcmQua2RlLm9y Zy9yLzExOTU3Ni8KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQo+IAo+IChVcGRhdGVkIEF1Zy4gMiwgMjAxNCwgNTowMyBwLm0uKQo+ IAo+IAo+IFJldmlldyByZXF1ZXN0IGZvciBLREVQSU0gYW5kIERhbiBWcsOhdGlsLgo+IAo+IAo+ IFJlcG9zaXRvcnk6IGFrb25hZGkKPiAKPiAKPiBEZXNjcmlwdGlvbgo+IC0tLS0tLS0KPiAKPiBh c3R5bGUgY2Fubm90ICh5ZXQpIGRpc3Rpbmd1aXRlIGEgaHl0aGVuIGZyb20gYSBtaW51cyBjaGFy YWN0ZXIuCj4gVXNpbmcgYSAic3RyaW5nIiBzdWNoIGFzIFgtQUtBUFBFTkQgaW4gdGhlIG1hY3Jv IE1BS0VfQ01EX1JPVyBpcyBhIHByb2JsZW0uCj4gYXN0eWxlIHN1cm91bmRzIHRoZSAtIHdpdGgg c3BhY2VzLgo+IEkgcHJvcG9zZSB0byB1c2UgYSBzZWNvbmQgbWFjcm8gTUFLRV9DTURfUk9XMiBw cm92aWRpbmcgdGhlIHN0cmluZyBhcyAiWC1BS0FQUEVORCIuCj4gSXQgbWlnaHQgYmUgcHJldHRp ZXIgdG8gZG8gdGhpcyBmb3IgYWxsIHRoZSBjb21tYW5kcy4KPiAKPiBUaGUgcHJvYmxlbSBjb3Vs ZCBhbHNvIGhhcHBlbnMgZm9yIHRoZSBjb21tYW5kczoKPiBYLUFLTElTVCBhbmQgWC1BS0xTVUIK PiAKPiAKPiBEaWZmcwo+IC0tLS0tCj4gCj4gICBzZXJ2ZXIvdGVzdHMvdW5pdHRlc3QvaGFuZGxl cnRlc3QuY3BwIDZmYzVkNjYgCj4gCj4gRGlmZjogaHR0cHM6Ly9naXQucmV2aWV3Ym9hcmQua2Rl Lm9yZy9yLzExOTU3Ni9kaWZmLwo+IAo+IAo+IFRlc3RpbmcKPiAtLS0tLS0tCj4gCj4gCj4gVGhh bmtzLAo+IAo+IEd1eSBNYXVyZWwKPiAKPgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KS0RFIFBJTSBtYWlsaW5nIGxpc3Qga2RlLXBpbUBrZGUub3JnCmh0 dHBzOi8vbWFpbC5rZGUub3JnL21haWxtYW4vbGlzdGluZm8va2RlLXBpbQpLREUgUElNIGhvbWUg cGFnZSBhdCBodHRwOi8vcGltLmtkZS5vcmcv