SGkgSG93YXJkLA0KDQpJIGNhbiBjaGFuZ2UgdGhlIGNvZGUgc28gdGhhdCBpdCBvdmVyd3JpdGVz IHRoZSBtZW1vcnkgZnJvbSBsZGFwX2ZyZWVfcmVxdWVzdF9pbnQoKSBpbnN0ZWFkLiBUaGlzIHdp bGwgY292ZXIgdGhlIGV4ZWN1dGlvbiB1c2luZyBhIGJpbmQgKGJvdGggc3luY2hyb25vdXMgYW5k IGFzeW5jaHJvbm91cykuIElzIHRoZXJlIGFueSBvdGhlciBwbGFjZXMgd2hlcmUgdGhlIHBhc3N3 b3JkIHdvdWxkIGJlIGluIHRoZSBidWZmZXIgdGhhdCBuZWVkcyB0byBiZSBjbGVhcmVkPyBUaGUg cmVhc29uIGZvciBpbnNlcnRpbmcgaXQgaW50byBiZXJfZnJlZV9idWYoKSB3YXMgdGhhdCBpdCB3 b3VsZCBjbGVhciBhbGwgcGxhY2VzLg0KDQpTb21lIGNvbXBpbGVycyB3aWxsIG9wdGltaXplIGNh bGxzIHRvIG1lbXNldCgpIHNvIHRoYXQgb25seSB0aGUgZmlyc3QgY2hhcmFjdGVyIHdpbGwgYmUg Y2hhbmdlZC4gTGVhdmluZyB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nIGludGFjdC4gVGhpcyBpcyB3 aHkgdGhlIGl0ZXJhdGlvbiBpcyBpbiBwbGFjZS4NCg0KVGhhbmtzIGZvciBsb29raW5nIGludG8g dGhpcyBwYXRjaC4NCg0KQWxhbg0KDQpPbiAwNS8wOC8yMDE2LCAxOTo1MCwgIkhvd2FyZCBDaHUi IDxoeWNAc3ltYXMuY29tPiB3cm90ZToNCg0KICAgIGFsY3JvbmluQGNpc2NvLmNvbSB3cm90ZToN CiAgICA+IEZ1bGxfTmFtZTogQWxhbiBDcm9uaW4NCiAgICA+IFZlcnNpb246IDIuNC40NA0KICAg ID4gT1M6IFdpbmRvd3MgOC4xDQogICAgPiBVUkw6IGh0dHBzOi8vZGwuZHJvcGJveHVzZXJjb250 ZW50LmNvbS91LzgyMzQzNDc1L1NlY3VyZWx5RXJhc2VCdWZmZXIuZGlmZg0KICAgID4gU3VibWlz c2lvbiBmcm9tOiAoTlVMTCkgKDIwMDE6NDIwOjQwNDE6MjAwMzpmOTQyOjU5YTU6NTQ1ZjpiMzM0 KQ0KICAgID4NCiAgICA+DQogICAgPiBUaGUgZm9sbG93aW5nIHBhdGNoIGlzIGEgbW9kaWZpY2F0 aW9uIHRvIHRoZSBPcGVuTERBUCBCZXJFbGVtZW50IGJ1ZmZlci4gVGhlDQogICAgPiBidWZmZXIg Y2FuIGJlIHVzZWQgdG8gY29udGFpbiB0aGUgTERBUCByZXF1ZXN0IGluY2x1ZGluZyB0aGUgcGFz c3dvcmQgZm9yDQogICAgPiBhdXRoZW50aWNhdGlvbi4gV2hpbGUgdGhpcyBpcyBmcmVlJ2Qgd2hl biBpdCBpcyBubyBsb25nZXIgbmVlZGVkLCB0aGUgY29udGVudHMNCiAgICA+IG9mIHRoZSBidWZm ZXIgaXMgbm90IG92ZXJ3cml0dGVuIGZyb20gbWVtb3J5LiBUaGlzIGNhbiBsZWFkIHRvIHNvbWVv bmUgcmVhZGluZw0KICAgID4gdGhlIG1lbW9yeSBvZiB0aGUgcHJvY2VzcyBhbmQgZGV0ZXJtaW5p bmcgd2hhdCB0aGUgcGFzc3dvcmQgaXMuIFRoZSBjaGFuZ2UNCiAgICA+IGluY2x1ZGVkIGluIHRo aXMgcGF0Y2ggd2lsbCBpdGVyYXRlIG92ZXIgdGhlIG1lbW9yeSBhbmQgY2xlYXIgaXQuIFRoaXMg d2lsbA0KICAgID4gcmVtb3ZlIGFueSB0cmFjZSBvZiB0aGUgcGFzc3dvcmQgYnkgdGhlIHRpbWUg ZXhlY3V0aW9uIGlzIGhhbmRlZCBiYWNrIHRvIHRoZQ0KICAgID4gY2FsbGVyLg0KICAgIA0KICAg IFdoeSB3b3VsZCB5b3UgaW5zZXJ0IGEgcGVyZm9ybWFuY2UgcGVzc2ltaXphdGlvbiBpbnRvIGV2 ZXJ5IHVzZSBvZiB0aGUgTEJFUiANCiAgICBsaWJyYXJ5LCByYXRoZXIgdGhhbiBqdXN0IGVyYXNp bmcgdGhlIHBhc3N3b3JkIGZyb20gYSBCaW5kIHJlcXVlc3Q/DQogICAgDQogICAgV2h5IHdvdWxk IHlvdSB1c2UgYW4gZXhwbGljaXRseSBjb2RlZCBsb29wIHNldHRpbmcgb25lIGNoYXJhY3RlciBh dCBhIHRpbWUsIA0KICAgIGluc3RlYWQgb2YgdXNpbmcgbGliYydzIG1lbXNldCgpIHdoaWNoIGhh cyBwcm9iYWJseSBiZWVuIHdlbGwgb3B0aW1pemVkPw0KICAgIA0KICAgID4gVGhlIGF0dGFjaGVk IHBhdGNoIGZpbGUgaXMgZGVyaXZlZCBmcm9tIE9wZW5MREFQIFNvZnR3YXJlLiBBbGwgb2YgdGhl DQogICAgPiBtb2RpZmljYXRpb25zIHRvIE9wZW5MREFQIFNvZnR3YXJlIHJlcHJlc2VudGVkIGlu IHRoZSBmb2xsb3dpbmcgcGF0Y2goZXMpIHdlcmUNCiAgICA+IGRldmVsb3BlZCBieSBBbGFuIENy b25pbiBhbGNyb25pbkBjaXNjby5jb20uIEkgaGF2ZSBub3QgYXNzaWduZWQgcmlnaHRzIGFuZC9v cg0KICAgID4gaW50ZXJlc3QgaW4gdGhpcyB3b3JrIHRvIGFueSBwYXJ0eS4NCiAgICA+IFRoZSBh dHRhY2hlZCBmaWxlIGlzIGRlcml2ZWQgZnJvbSBPcGVuTERBUCBTb2Z0d2FyZS4gQWxsIG9mIHRo ZSBtb2RpZmljYXRpb25zIHRvDQogICAgPiBPcGVuTERBUCBTb2Z0d2FyZSByZXByZXNlbnRlZCBp biB0aGUgZm9sbG93aW5nIHBhdGNoKGVzKSB3ZXJlIGRldmVsb3BlZCBieSBDaXNjbw0KICAgID4g U3lzdGVtcywgSW5jLi4gQ2lzY28gU3lzdGVtcywgSW5jLiBoYXMgbm90IGFzc2lnbmVkIHJpZ2h0 cyBhbmQvb3IgaW50ZXJlc3QgaW4NCiAgICA+IHRoaXMgd29yayB0byBhbnkgcGFydHkuIEksIEFs YW4gQ3JvbmluIGFtIGF1dGhvcml6ZWQgYnkgQ2lzY28gU3lzdGVtcywgSW5jLiwgbXkNCiAgICA+ IGVtcGxveWVyLCB0byByZWxlYXNlIHRoaXMgd29yayB1bmRlciB0aGUgZm9sbG93aW5nIHRlcm1z Lg0KICAgID4gQ2lzY28gU3lzdGVtcywgSW5jLiBoZXJlYnkgcGxhY2UgdGhlIGZvbGxvd2luZyBt b2RpZmljYXRpb25zIHRvIE9wZW5MREFQDQogICAgPiBTb2Z0d2FyZSAoYW5kIG9ubHkgdGhlc2Ug bW9kaWZpY2F0aW9ucykgaW50byB0aGUgcHVibGljIGRvbWFpbi4gSGVuY2UsIHRoZXNlDQogICAg PiBtb2RpZmljYXRpb25zIG1heSBiZSBmcmVlbHkgdXNlZCBhbmQvb3IgcmVkaXN0cmlidXRlZCBm b3IgYW55IHB1cnBvc2Ugd2l0aCBvcg0KICAgID4gd2l0aG91dCBhdHRyaWJ1dGlvbiBhbmQvb3Ig b3RoZXIgbm90aWNlLg0KICAgID4NCiAgICA+DQogICAgDQogICAgDQogICAgLS0gDQogICAgICAg LS0gSG93YXJkIENodQ0KICAgICAgIENUTywgU3ltYXMgQ29ycC4gICAgICAgICAgIGh0dHA6Ly93 d3cuc3ltYXMuY29tDQogICAgICAgRGlyZWN0b3IsIEhpZ2hsYW5kIFN1biAgICAgaHR0cDovL2hp Z2hsYW5kc3VuLmNvbS9oeWMvDQogICAgICAgQ2hpZWYgQXJjaGl0ZWN0LCBPcGVuTERBUCAgaHR0 cDovL3d3dy5vcGVubGRhcC5vcmcvcHJvamVjdC8NCiAgICANCg0K