VGhpcyB0aHJlYWQgbW92ZXMgdG8gT1Qgbm93LiBDaGFuZ2UgdGhlIHRhZyB0byBPVCBpZiB5b3Ug cmVwbHkgdG8gYW55Cm1lc3NhZ2UgaW4gdGhpcyB0aHJlYWQuCgpUaGFua3MsCgpCb2IKCgpPbiBT YXQsIDEyIE1hciAyMDExIDE2OjIzIC0wMzAwLCAiR2VyaGFyZCBGaWVkbGVyIgo8bGlzdHNAY29u bmVjdGlvbmJyYXppbC5jb20+IHdyb3RlOgo+IE4uIFQuIHdyb3RlOgo+IAo+ID4gWUVTIE5PUEU5 ICB3cm90ZToKPiA+PiBJIHVzZSBvbmUgTWFjQm9vayBsYXB0b3AgYXMgYSBzZXJ2ZXIuIMKgSXQg aXMgb24gYSBVUFMgLCBzbyB0aGVyZSBpcyBhCj4gPj4gZG91YmxlIGJhdHRlcnkgcmVzZXJ2ZS4g wqBJIGFtIHJ1bm5pbmcgVmlydHVhbEJveC4gwqAgSW5zaWRlIFZpcnR1YWxCb3ggLAo+ID4+IEkg cnVuIFdpbmRvd3MgWFAgd2hpY2ggSSB1c2UgdG8gc3VwcG9ydCBwcmludGVycy4gwqAoIFRoZXJl IGFyZSBtb3JlCj4gPj4gcHJpbnRlciBkcml2ZXJzIGZvciBYUCB0aGFuIExpbnV4IG9yIE1hYyAp LiDCoEkgYWxzbyBydW4gRGViaWFuIExpbnV4Cj4gPj4gdW5kZXIgVmlydHVhbEJveCApLgo+ID4+ Cj4gPj4gU28gbXkgc2VydmVyIGNhbiBzdXBwbHkgd2hhdGV2ZXIgYXBwbGljYXRpb24gSSB3YW50 Lgo+ID4gCj4gPiBTb21lIFZpcnR1YWxCb3ggNC4wLjQgbGltaXRhdGlvbnM6Cj4gPiBodHRwOi8v d3d3LnZpcnR1YWxib3gub3JnL21hbnVhbC9jaDE0Lmh0bWwKPiAKPiBUaGVyZSdzIGFsc28gVk13 YXJlIEVTWGkKPiA8aHR0cDovL3d3dy52bXdhcmUuY29tL3Byb2R1Y3RzL3ZzcGhlcmUtaHlwZXJ2 aXNvci9mYXEuaHRtbD4KPiAKPiBJIGhhdmVuJ3QgdXNlZCBpdCwgYnV0IEkgdGhpbmsgbmV4dCB0 aW1lIEkgaW5zdGFsbCBhIHN5c3RlbSBmcm9tIHNjcmF0Y2gKPiBJIGdpdmUgaXQgYSBzaG90Lgo+ IAo+IEkgdGhpbmsgaXQncyB0aGUgb25seSBmcmVlIGJhcmUgbWV0YWwgdmlydHVhbGl6ZXIuIERp ZmZlcmVudGx5IGZyb20KPiBwcmV0dHkgbXVjaCBhbGwgdGhlIG90aGVycywgaXQgc2l0cyBkaXJl Y3RseSBvbiB0aGUgaGFyZHdhcmUsIGFuZAo+IGJhc2ljYWxseSBhbGwgT1NlcyBhcmUgcnVubmlu ZyBpbiBhICJiYXJlIG1ldGFsIFZNIi4gT25lIGRvd25zaWRlIGlzCj4gcHJvYmFibHkgdGhhdCB5 b3UgbmVlZCBhbGwgdGhlIHJpZ2h0IGhhcmR3YXJlIGRyaXZlcnMgZm9yIEVTWGkuCj4gCj4gR2Vy aGFyZAo+IAo+IC0tIAo+IGh0dHA6Ly93d3cucGljbGlzdC5jb20gUElDL1NYIEZBUSAmIGxpc3Qg YXJjaGl2ZQo+IFZpZXcvY2hhbmdlIHlvdXIgbWVtYmVyc2hpcCBvcHRpb25zIGF0Cj4gaHR0cDov L21haWxtYW4ubWl0LmVkdS9tYWlsbWFuL2xpc3RpbmZvL3BpY2xpc3QKPiAKCi0tIApodHRwOi8v d3d3LmZhc3RtYWlsLmZtIC0gQSBmYXN0LCBhbnRpLXNwYW0gZW1haWwgc2VydmljZS4KCgotLSAK aHR0cDovL3d3dy5waWNsaXN0LmNvbSBQSUMvU1ggRkFRICYgbGlzdCBhcmNoaXZlClZpZXcvY2hh bmdlIHlvdXIgbWVtYmVyc2hpcCBvcHRpb25zIGF0Cmh0dHA6Ly9tYWlsbWFuLm1pdC5lZHUvbWFp bG1hbi9saXN0aW5mby9waWNsaXN0Cg== .