SWYgeW91J3JlIHRhbGtpbmcgYWJvdXQgdGhlIGxhc2VyIHByaW50ZXJzIChsaWtlIG1lbnRpb25l ZCBpbiB0aGUKZXRjaGluZyB0b3BpYyksIGl0J3MgYSB0cml2aWFsIHRoaW5nIHVuZGVyIFVidW50 dSAtIGp1c3QgY29ubmVjdCAmCnByZXNzIHByaW50LiBHZXR0aW5nIFdpbmRvd3MgVmlzdGEgdG8g cHJpbnQgdG8gaXQgdG9vayBtb3JlIHdvcmsgKGJvdGgKbG9jYWwgJiBuZXR3b3JrKSwgV2luZG93 cyBYUCB5ZXQgYWdhaW4gbW9yZSB3b3JrLgoKS2luZCByZWdhcmRzLApQZXRlciBCaW5kZWxzCgoy MDA5LzExLzI2IFRhbWFzIFJ1ZG5haSA8dGFtYXMucnVkbmFpQGdtYWlsLmNvbT46Cj4gVGhhbmtz IGd1eXMhCj4KPiBTbyBtYW55IHJlcGxpZXMsIGRpZCBub3QgZXhwZWN0IHRoYXQgbXVjaC4gOi0p Cj4KPiBBbnl3YXksIGl0IHNlZW1zIHRoYXQgbm9uZSBvZiB0aGUgbWV0aG9kcyB3b3JrZWQgc28g ZmFyLiBXaXRoIHRoZQo+IHdpbmRvdyBjbGVhbmVyIEkgZ290IHRoZSBiZXN0IHJlc3VsdHM6IFRo ZSBsaXF1aWQgYmVjb21lIGJsYWNrLCBzbyBJCj4gZmVsdCBsdWNreS4gQWZ0ZXIgY2xlYW5pbmcg b2ZmIHRoZSBsaXF1aWQgSSBwdXQgdGhlIGNhcnRyaWRnZSB0byB0aGUKPiBwcmludGVyLCBhbmQg c29tZSBvZiB0aGUgbWljcm8gbGluZXMgc3RhcnRlZCB0byB3b3JrIGJ1dCBvbmx5Cj4gbW9tZW50 YXJpbHkuIEkgZ3Vlc3MgSSBuZWVkIHRvIGJ1eSBuZXcgaW5rLgo+Cj4gQW55d2F5LCBpZiBJIG5l ZWQgdG8gYnV5IG5ldyBpbmsgcHJvYmFibHkgSSB3aWxsIGxpc3RlbiB0byB5b3UsCj4gWGlhb2Zh biBhbmQgYnV5IG5ldyBwcmludGVyIGluc3RlYWQuIFRoaXMgb25lIGRvZXMgbm90IGV2ZW4gd29y ayB3aXRoCj4gTGludXggKHdpbnByaW50ZXIgb3IgaG93IHRoZXkgY2FsbCBpdCkuIERvIHlvdSBr bm93IGlmIHRoZXNlIFNhbXN1bmcKPiBwcmludGVycyB3b3JrIHdpdGggTGludXg/Cj4KPiBUaGFu a3MsCj4gVGFtYXMKPgo+Cj4KPiBPbiBUaHUsIE5vdiAyNiwgMjAwOSBhdCAxOjI2IEFNLCBYaWFv ZmFuIENoZW4gPHhpYW9mYW5jQGdtYWlsLmNvbT4gd3JvdGU6Cj4+IE9uIFdlZCwgTm92IDI1LCAy MDA5IGF0IDEwOjEyIFBNLCBUYW1hcyBSdWRuYWkgPHRhbWFzLnJ1ZG5haUBnbWFpbC5jb20+IHdy b3RlOgo+Pj4gSGksCj4+Pgo+Pj4gSSBoYXZlIGEgRGVsbCBBSU8gOTUwIGFuZCBJIGRpZCBub3Qg dXNlIHRoYXQgcHJpbnRlciBmb3IgYSB5ZWFyLgo+Pj4gWWVzdGVyZGF5IEkgd2FudGVkIHRvIHBy aW50IHNvbWV0aGluZyBhbmQgcmVhbGlzZWQgdGhhdCB0aGUgYmxhY2sgaW5rCj4+PiBkb2VzIG5v dCB3b3JrLiBJIHRoaW5rIGl0IGNvdWxkIGhhdmUgYmVlbiBkcmllZCBvdXQ/IElzIHRoZXJlIGFu eSB3YXkKPj4+IHRvIGdldCBpdCBiYWNrLCBvciBzaG91bGQgbm90IGJvdGhlciBqdXN0IGJ1eSBh IG5ldyBjYXJ0cmlkZ2U/IChidXQKPj4+IHRoZW4gSSB3b24ndCB1c2UgdGhhdCBhZ2FpbiBmb3Ig YSB5ZWFyIHNvIGR1bm5vIHdoYXQgdG8gZG8gd2l0aCBhbgo+Pj4gaW5ramV0IGlmIHRoYXQgaGFw cGVucyBldmVyeSBvZnRlbi4uLikgQW55IGFkdmlzZT8KPj4+Cj4+Cj4+IEJ1eSBhIG5ldyBjYXJ0 cmlkZ2UuIE9yIGJldHRlciBnaXZlIHVwIHVzaW5nIHRoZSBJbmtqZXQuIExhc2VyCj4+IHByaW50 ZXIgYXJlIGdldHRpbmcgY2hlYXBlciBub3cgYW5kIHRoZXkgYXJlIGVhc2llciB0bwo+PiBtYWlu dGFpbiBhbmQgbW9yZSBlY29ub21pYyB0byB1c2UgaW4gdGhlIGxvbmcgcnVuLgo+PiBUaGUgbWFp biBwcmludGVyIHdlIHVzZSBub3cgaXMgYSAyLjUgeWVhcnMgb2xkIFNhbXN1bmcgU0NYLTQyMDAK Pj4gKG1vbm8gTUZQKS4gQW5kIG15IHBob3RvIHByaW50ZXIgKFNhbXN1bmcgU1BQLTIwMjAsIGFy b3VuZCAzCj4+IHllYXIgb2xkKSBpcyBub3QgwqBhbiBpbmtqZXQsIGl0IGlzIHVzaW5nIER5ZSBE aWZmdXNpb24gVGhlcm1hbCBUcmFuc2Zlcgo+PiBhbmQgaXQgd29ya3Mgd2VsbC4gVGhlIG9sZCBD YW5vbiBJbmtqZXQgaXMgc3RpbGwgYWxpdmUgYnV0IHdlIHNlbGRvbQo+PiB1c2UgaXQuCj4+Cj4+ Cj4+Cj4+IC0tCj4+IFhpYW9mYW4gaHR0cDovL21jdWVlLmJsb2dzcG90LmNvbQo+PiAtLQo+PiBo dHRwOi8vd3d3LnBpY2xpc3QuY29tIFBJQy9TWCBGQVEgJiBsaXN0IGFyY2hpdmUKPj4gVmlldy9j aGFuZ2UgeW91ciBtZW1iZXJzaGlwIG9wdGlvbnMgYXQKPj4gaHR0cDovL21haWxtYW4ubWl0LmVk dS9tYWlsbWFuL2xpc3RpbmZvL3BpY2xpc3QKPj4KPgo+Cj4KPiAtLQo+IC8qIHd3dy5tY3Vob2Ji eS5jb20gKi8gaW50IG1haW4oKSB7IGNoYXIgKmEsKnMsKnE7IHByaW50ZihzPSIvKgo+IHd3dy5t Y3Vob2JieS5jb20gKi8gaW50IG1haW4oKSB7IGNoYXIgKmEsKnMsKnE7IHByaW50ZihzPSVzJXMl cywKPiBxPSVzJXMlcyVzLHMscSxxLGE9JXMlcyVzJXMscSxxLHEsYSxhLHEpOyB9IiwKPiBxPSJc IiIscyxxLHEsYT0iXFwiLHEscSxxLGEsYSxxKTsgfQo+Cj4gLS0KPiBodHRwOi8vd3d3LnBpY2xp c3QuY29tIFBJQy9TWCBGQVEgJiBsaXN0IGFyY2hpdmUKPiBWaWV3L2NoYW5nZSB5b3VyIG1lbWJl cnNoaXAgb3B0aW9ucyBhdAo+IGh0dHA6Ly9tYWlsbWFuLm1pdC5lZHUvbWFpbG1hbi9saXN0aW5m by9waWNsaXN0Cj4KCi0tIApodHRwOi8vd3d3LnBpY2xpc3QuY29tIFBJQy9TWCBGQVEgJiBsaXN0 IGFyY2hpdmUKVmlldy9jaGFuZ2UgeW91ciBtZW1iZXJzaGlwIG9wdGlvbnMgYXQKaHR0cDovL21h aWxtYW4ubWl0LmVkdS9tYWlsbWFuL2xpc3RpbmZvL3BpY2xpc3QK