PGh0bWw+PGhlYWQ+PHRpdGxlPkF4aXMgMi4wIENsaWVudCBBUEk8L3RpdGxlPg0KPHN0eWxlPg0KLnN0eWxlMSB7DQoJZm9udC1mYW1pbHk6ICJDb3VyaWVyIE5ldyIsIENvdXJpZXIsIG1vbm87DQoJZm9udC1zaXplOiAxNHB4Ow0KCWNvbG9yOiAjOTkwMDAwOw0KfQ0KPC9zdHlsZT4NCjwvaGVhZD4NCjxib2R5Pg0KPGgyPkludHJvZHVjdGlvbjwvaDI+DQo8cD5JbnZvY2F0aW9uIG9mIHdlYiBzZXJ2aWNlIHdpbGwgbGVhZCB0byBhbiBleGNoYW5nZSBvZiBtZXNzYWdlcyBiZXR3ZWVuIHR3byBvciBtb3JlIHBhcnRpZXMuICZuYnNwO0lmIHdlIGNvbnNpZGVyIHRoZSBnZW5lcmFsIHNjZW5hcmlvIHdoZXJlIA0KYSBjbGllbnQgaW52b2tlcyBhIHNpbmdsZSBzZXJ2aWNlLCB0aGUgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHRoZW0gY2FuIGJlIGVpdGhlciBvbmUgd2F5IG9yIHR3by13YXkuIERlcGVuZGluZyBvbiB0aGUgd2F5IHRoZSBjbGllbnQgaGFuZGxlcyB0aGUgaW52b2NhdGlvbiBhdCB0aGUgQVBJIGxldmVsLCB3aGV0aGVyIHRoZSB0cmFuc3BvcnQgcHJvdG9jb2wgdXNlZCBpcyB1bmlkaXJlY3Rpb25hbCBvciBiaS1kaXJlY3Rpb25hbCBhbmQgdGhlIHR5cGUgb2YgdGhlIHNlcnZpY2UgbWV0aG9kLCBvbmUgY2FuIGRlcml2ZSBtYW55IGludGVyYWN0aW9uIHBhdHRlcm5zIGJldHdlZW4gY2xpZW50IGFuZCB0aGUgc2VydmljZS4gUmVzdCBvZiB0aGUgZG9jdW1lbnQgd2lsbCBmb2N1cyBvbiBpZGVudGlmeWluZyB0aGVzZSBwb3NzaWJsZSBicmVhayB1cHMgYW5kIA0Kb24gaG93IHRoZXkgYXJlIHN1cHBvcnRlZCBpbiBBcGFjaGUgQXhpcyAyLjwvcD4NCjxwPk5vdGU6IFBsZWFzZSBub3RlIHRoYXQgdGhyb3VnaCBvdXQgdGhlIHR1dG9yaWFsIHRoZSB3b3JkcyAmcXVvdDtDbGllbnQmcXVvdDsgYW5kIHRoZSAmcXVvdDtTZXJ2aWNlJnF1b3Q7IGFyZSB1c2VkIHRvIHJlcHJlc2VudCANCiZxdW90O1dlYiBTZXJ2aWNlIENsaWVudCZxdW90OyBhbmQgdGhlICZxdW90O1dlYiBTZXJ2aWNlJnF1b3Q7IHJlc3BlY3RpdmVseS48L3A+DQo8aDI+QXhpcyAyIENsaWVudCBBUEk8L2gyPg0KPHA+Rm9sbG93aW5ncyB3aWxsIGRlY2lkZSB0aGUgaW50ZXJhY3Rpb24gcGF0dGVybnMgYmV0d2VlbiBjbGllbnQgYW5kIHRoZSBzZXJ2aWNlLjwvcD4NCjx1bD4NCgk8bGk+Q2xpZW50IEFQSSA8L2xpPg0KCTxsaT5UaGUgUHJvdG9jb2wgdXNlZCB0byBzZW5kIHRoZSBTT0FQIE1lc3NhZ2U8L2xpPg0KCTxsaT5UaGUgdHlwZSBvZiB0aGUgc2VydmljZSBtZXRob2Q8L2xpPg0KPC91bD4NCjxoMj5DbGllbnQgQVBJPC9oMj4NCjxwPkNsaWVudHMgY2FuIGNvbnN1bWUgc2VydmljZXMgd2hpY2ggdGFrZSBhbG1vc3Qgbm8gdGltZSB0byBjb21wbGV0ZSBhbmQgdGhlIHNlcnZpY2VzIHRha2UgY29uc2lkZXJhYmxlIGFtb3VudCBvZiB0aW1lIHRvIGNvbXBsZXRlLiBTbyBpdJJzIGltcG9ydGFudCB0aGF0IHRoZSBTT0FQIGVuZ2luZSBwcm92aWRlcyBib3RoIGJsb2NraW5nIGFuZCBub24tYmxvY2tpbmcgQVBJcyBmb3IgdGhlIGNsaWVudC4gVGhpcyBjYW4gYmUgZWFzaWx5IGRvbmUgaW4gdGhlIEFQSSBsZXZlbC4gPC9wPg0KPHA+V2l0aCBhIGJsb2NraW5nIEFQSSBjbGllbnQgd2lsbCBoYW5nIHRpbGwgdGhlIG9wZXJhdGlvbiBjb21wbGV0ZXMuIEluIG90aGVyIHdvcmRzIG9uY2UgaW52b2tlZCwgdGhlIGNsaWVudCB3aWxsIGtlZXAgYmxvY2tpbmcgdGlsbCBpdCBnZXRzIHRoZSByZXNwb25zZSAoaWYgYW55KSBmcm9tIHRoZSBzZXJ2aWNlLiANClRoaXMgaXMgdmVyeSB1c2VmdWwgbWV0aG9kIHdoZW4gaW52b2tpbmcgd2ViIHNlcnZpY2VzIHRoYXQgZG8gbm90IHRha2UgbG9uZyB0aW1lIA0KdG8gY29tcGxldGUgYW5kIHRoZSBoYW5naW5nIGluIHRoZSBjbGllbnQgc2lkZSBpcyBuZWdsaWdpYmxlLiBUaGlzIHdpbGwgYmUgYSBodWdlIGRyYXdiYWNrIGluIHRoZSBjbGllbnQgc2lkZSBwZXJmb3JtYW5jZSwgaWYgdGhlIG9wZXJhdGlvbiB0YWtlcyBjb25zaWRlcmFibGUgYW1vdW50IG9mIHRpbWUuPC9wPg0KPHA+QSBub24gYmxvY2tpbmcgQVBJIHdpbGwgcHJvdmlkZSB0aGUgY2xpZW50IHRvIHVzZSBhIENhbGxiYWNrIG1lY2hhbmlzbSAob3IgcG9sbGluZyBtZWNoYW5pc20pIHRvIGdldCB0aGUgcmVzcG9uc2VzIChpZiBhbnkpIGZvciBhIHNlcnZpY2UgaW52b2NhdGlvbi4gQ2xpZW50IGdldHMgdGhpcyByZXNwb25zZSBpdCB0d28gd2F5cy4gQm90aCB3YXlzIGNsaWVudCBoYXMgdG8gcmVnaXN0ZXIgYSBjYWxsIGJhY2sgd2l0aCB0aGUgU09BUCBlbmdpbmUuPC9wPg0KPHVsPg0KPGxpPkNsaWVudCBrZWVwIG9uIHBvbGxpbmcgdGhlIGNhbGwgYmFjayBvYmplY3QgaXQgcmVnaXN0ZXJzIHdpdGggdGhlIFNPQVAgZW5naW5lLCANCnVzaW5nIHRoZSBpc0NvbXBsZXRlKCkuIElmIGlzQ29tcGxldGUoKSByZXR1cm5zIHRydWUsIGNsaWVudCBnZXQgdGhlIHJlc3VsdCwgaWYgYW55LCB0aHJvdWdoIGdldFJlc3VsdCgpIHdoaWNoIHJldHVybnMgYW4gQXN5bmNSZXN1bHQgb2JqZWN0LiANCjxsaT5VcG9uIHJlY2VpcHQgb2YgdGhlIHJlc3BvbnNlLCBpZiBhbnksIFNPQVBFbmdpbmUgY2FsbHMgdGhlIG9uQ29tcGxldGUoQXN5bmNSZXN1bHQpIG9mIHRoZSBjYWxsIGJhY2sgb2JqZWN0LiA8L2xpPjwvdWw+DQo8cD5Ob3RlIHRoYXQgY2xpZW50IGNhbiBhZG9wdCBhbnkgb25lIG9mIHRoZSBhYm92ZSB0d28gbWV0aG9kcywgaW5kZXBlbmRlbnQgb2YgdGhlIHdheSBzZXJ2aWNlIGhhcyBiZWVuIGltcGxlbWVudGVkLjwvcD4NCjxoMj5UaGUgUHJvdG9jb2wgVXNlIHRvIFNlbmQgdGhlIFNPQVAgTWVzc2FnZTwvaDI+DQo8cD5UaGUgcHJvdG9jb2wgdXNlZCB0byBzZW5kIHRoZSBTT0FQIG1lc3NhZ2UgY2FuIGJlIGNhdGVnb3JpemVkIG1haW5seSBpbiB0byB0d28gdHlwZXMuPC9wPg0KPG9sPg0KCTxsaT5VbmlkaXJlY3Rpb25hbCA8L2xpPg0KCTxsaT5CaS1EaXJlY3Rpb25hbDwvbGk+DQo8L29sPg0KPHA+V2l0aCBhIHVuaWRpcmVjdGlvbmFsIHByb3RvY29sIChlLmcuIFNNVFApLCBjbGllbnQgY2FuIHNpbXBseSBpbnZva2UgYSBzZXJ2aWNlIHdoaWNoIGhhcyBubyByZXNwb25zZShzKSB0byBiZSBzZW50IGluIHRoZSBzYW1lIGNvbm5lY3Rpb24uIEJ1dCBpZiB0aGUgc2VydmljZSBpcyByZXF1ZXN0L3Jlc3BvbnNlIGluIG5hdHVyZSwgaXQgaXMgcmVxdWlyZWQgdG8gdXNlIHR3byBzZXBhcmF0ZSBjb25uZWN0aW9ucyBvZiB1bmlkaXJlY3Rpb25hbCBwcm90b2NvbC4gSG93ZXZlciBpZiB0aGUgY2xpZW50IG5lZWRzIG9ubHkgdG8gc2VuZCBpbmZvcm1hdGlvbiwgdW5pZGlyZWN0aW9uYWwgaXMgdXNlZnVsIGZvciB0aGF0LjwvcD4NCjxwPldpdGggYSBiaWRpcmVjdGlvbmFsIHByb3RvY29sIHRoZSBjbGllbnQgY2FuIHJldHJpZXZlIHRoZSBzZXJ2aWNlIHJlc3BvbnNlIChpZiBhbnkpIHVzaW5nIHRoZSBzYW1lIGNvbm5lY3Rpb24uIEluIHRoaXMgY29udGV4dCBIVFRQIGlzIHRoZSBtb3N0IGNvbW1vbiBiaWRpcmVjdGlvbmFsIHRyYW5zcG9ydCBwcm90b2NvbC4gSG93ZXZlciB0aGUgbWFpbiBkcmF3YmFjayBpcyB0aGUgcG9zc2liaWxpdHkgb2YgdGhlIHRpbWVvdXRzIHRoYXQgY2FuIGhhcHBlbi4gSWYgdGhlIHNlcnZpY2UgdGFrZXMgc29tZSB0aW1lIHRvIGNvbXBsZXRlIHRoZW4gdGhlcmUgaXMgYSBwb3NzaWJpbGl0eSBvZiB0aW1lIG91dCBpbiB0aGUgY29ubmVjdGlvbi48L3A+DQo8cD5CaS1kaXJlY3Rpb25hbCB0cmFuc3BvcnQgY2FuIGJlIHVzZWQgdG8gaW52b2tlIG9uZS13YXkgc2VydmljZXMgYXMgd2VsbC4gSW4gdGhpcyBjYXNlIHRoZSByZXR1cm4gcGF0aCBvZiB0aGUgY29tbXVuaWNhdGlvbiBjaGFubmVsIGlzIG5vdCB1c2VkLiBIb3dldmVyIHNpbmNlIHdlIGFyZSB1c2luZyBhIGJpLWRpcmVjdGlvbmFsIHByb3RvY29sIHRoZSByZXR1cm4gcGF0aCBjYW4gYmUgdXNlZCB0byBjYXJyeSB0aGUgYWNjZXB0YW5jZSBzdGF0ZSBvciBhIGZhdWx0IChpZiBhbnkpLiBXaXRoIHJlZmVyZW5jZSB0byBIVFRQIHRoZSANCiZxdW90O0hUVFAgMjAyIE9rJnF1b3Q7IGhlYWRlciBzdGF0dXMgd2lsbCBhY3QgYXMgdGhlIGFjY2VwdGFuY2Ugc3RhdGUuIFRoZSBmYXVsdHMgKGlmIA0KYW55KSBpcyBhbHNvIHNlbnQgdXNpbmcgdGhlIHJlc3BvbnNlIHBhdGggb2YgdGhlIEhUVFAgY29ubmVjdGlvbi48L3A+DQo8aDI+VHlwZSBvZiB0aGUgU2VydmljZSBNZXRob2Q8L2gyPg0KPHA+QWNjb3JkaW5nIHRvIHRoZSBXU0RMIGRlZmluaXRpb25zLCB0aGVyZSBjYW4gYmUgdmFyaW91cyBNZXNzYWdlIEV4Y2hhbmdlIFBhdHRlcm5zIGRlZmluZWQgZm9yIHdlYiBzZXJ2aWNlcy4gVGhlc2UgcmVxdWlyZSB0aGUgY2xpZW50IHRvIHVzZSBwb3NzaWJsZSBpbnZvY2F0aW9uIG1lY2hhbmlzbSB0byBoYW5kbGUgdGhlIHNlcnZpY2UgaW52b2NhdGlvbnMuIEZvciBleGFtcGxlIGlmIHRoZSBjbGllbnQgaXMgaW52b2tpbmcgYSBzZXJ2aWNlIG1ldGhvZCB3aGljaCBpcyBkZWZpbmVkIGFzIElOLU9OTFkgb3BlcmF0aW9uLCB0aGVuIHRoZSBjbGllbnQgc2hvdWxkIGJlIGFibGUgdG8gdXNlIGEgbWV0aG9kIGluIHRoZSBjbGllbnQgQVBJIHdoaWNoIGlzIGNhcGFibGUgb2YgaGFuZGxpbmcgdGhpcyB0eXBlIG9mIHJlcXVlc3RzLjwvcD4NCjxwPkFsbCB0aGVzZSB2YXJpYXRpb25zIGdpdmUgcmlzZSB0byBzZXZlcmFsIENsaWVudCBBUEkgbWV0aG9kcyB3aGljaCB3aWxsIHVsdGltYXRlbHkgZWFzZSB0aGUgc2VydmljZSBpbnZvY2F0aW9uIGZvciBhIHdlYiBzZXJ2aWNlIGNsaWVudC4gRm9yIEF4aXMgMiwgY3VycmVudGx5IHdlIGFyZSBwcm92aWRpbmcgZm9sbG93aW5nIG1ldGhvZHMgaW4gdGhlIENhbGwgQVBJIHByb3ZpZGVkPC9wPg0KPG9sPg0KPGxpPlJvYnVzdCBJbnZvY2F0aW9uIA0KPGxpPkZpcmUgYW5kIEZvcmdldCBpbnZvY2F0aW9uIA0KPGxpPkJsb2NraW5nIEludm9jYXRpb24gb2YgdHlwZSBJbi1PdXQgDQo8bGk+Tm9uIEJsb2NraW5nIEludm9jYXRpb24gb2YgdHlwZSBJbi1PdXQgPC9saT4NCjx1bD4NCgk8bGk+Jm5ic3A7TWV0aG9kIDE6IFdpdGhvdXQgYSBDbGllbnQgU2lkZSBMaXN0ZW5lcjwvbGk+DQoJPGxpPiZuYnNwO01ldGhvZCAyOiBXaXRoIGEgQ2xpZW50IFNpZGUgTGlzdGVuZXI8L2xpPg0KPC91bD4NCjwvb2w+DQo8aDI+QXJjaGl0ZWN0dXJlPC9oMj4NCjxwPkZvbGxvd2luZyBhcmNoaXRlY3R1cmUgd2FzIGRlcml2ZWQgZm9yIHRoZSBBeGlzIDIgY2xpZW50IHNpZGUsIHRvIHN1cHBvcnQgdGhlIGFib3ZlIHBhdHRlcm5zIHRoZS4gQSBkZXNjcmlwdGlvbiBvZiBlYWNoIGNvbXBvbmVudCBpcyBnaXZlbiBiZWxvdy48L3A+DQo8cCBhbGlnbj1jZW50ZXI+DQo8cCBhbGlnbj0iY2VudGVyIj4gPGltZyBoZWlnaHQ9MzE1IHNyYz0iaW1hZ2VzL2ltYWdlMDAyLmpwZyIgd2lkdGg9NTc2IERFU0lHTlRJTUVVUkw9ImltYWdlcy9pbWFnZTAwMi5qcGciPjwvcD4NCjxwIGFsaWduPWNlbnRlcj5GaWd1cmUgMSCWIEF4aXMgQ2xpZW50IEFyY2hpdGVjdHVyZTwvcD4NCjxoMz5DbGllbnQgPC9oMz4NCjxwPlRoaXMgaXMgdGhlIHdlYiBzZXJ2aWNlIGNsaWVudCB0aGF0IGFjdHVhbGx5IHV0aWxpemVzIHRoZSBzZXJ2aWNlLjwvcD4NCjxoMz5DYWxsIDwvaDM+DQo8cD5UaGlzIGlzIHRoZSBBUEkgdGhhdCB0aGUgQXhpcyBjbGllbnQgc2hvdWxkIHVzZSB0byBpbnZva2UgdGhlIHdlYiBzZXJ2aWNlcy4gRm9sbG93aW5ncyBhcmUgdGhlIG1ldGhvZHMgdGhhdCB0aGUgY2xpZW50IGNhbiB1c2UgaW4gdGhpcyBBUEkuPC9wPg0KPHNvdXJjZT4NCjxwcmUgY2xhc3M9InN0eWxlMSI+cHVibGljIHZvaWQgc2V0VG8oRW5kcG9pbnRSZWZlcmVuY2UgRVBSKQ0KcHVibGljIHZvaWQgZ2V0VE8oKSA8L3ByZT48cHJlIGNsYXNzPSJzdHlsZTEiPnB1YmxpYyB2b2lkIHNldFRyYW5zcG9ydFR5cGUoU3RyaW5nIHRyYW5zcG9ydCkgDQpwdWJsaWMgdm9pZCBzZXRMaXN0ZW5lclRyYW5zcG9ydChTdHJpbmcgTGlzdGVuZXJ0cmFuc3BvcnQsIGJvb2xlYW4gdXNlU2VwYXJhdGVMaXN0ZW5lcikgDQpwdWJsaWMgdm9pZCBzZXRBY3Rpb24oU3RyaW5nIGFjdGlvbik8L3ByZT4NCiA8cHJlIGNsYXNzPSJzdHlsZTEiPnB1YmxpYyB2b2lkIHNlbmRBc3luYyhTT0FQRW52ZWxvcGUgZW52ZWxvcGUpIHRocm93cyBBeGlzRmF1bHQgDQogcHVibGljIHZvaWQgc2VuZChTT0FQRW52ZWxvcGUgZW52ZWxvcGUpIHRocm93cyBBeGlzRmF1bHQgDQogcHVibGljIFNPQVBFbnZlbG9wZSBzZW5kUmVjZWl2ZShTT0FQRW52ZWxvcGUgZW52ZWxvcGUpIHRocm93cyBBeGlzRmF1bHQgDQogcHVibGljIHZvaWQgc2VuZFJlY2VpdmVBc3luYyhTT0FQRW52ZWxvcGUgZW52ZWxvcGUsZmluYWwgQ2FsbGJhY2sgY2FsbGJhY2spIHRocm93cyBBeGlzRmF1bHQgDQogPC9wcmU+DQo8L3NvdXJjZT4NCjxoMz5FbmdpbmU8L2gzPg0KPHA+VGhpcyBpcyBBeGlzIDIgZW5naW5lIGFuZCBpdCBkb2VzIG5vdCBtYWtlIGFueSBkaWZmZXJlbmNlIHdoZXRoZXIgdGhlIGVuZ2luZSBpcyB1c2VkIGluIHRoZSBjbGllbnQgc2lkZSBvciB0aGUgc2VydmVyIHNpZGUuJm5ic3A7IDwvcD4NCjxoMz5Db3JyZWxhdG9yPC9oMz4NCjxwPkNvcnJlbGF0b3IgaXMgcmVxdWlyZWQgd2hlbiBjbGllbnQgdXNlcyB0aGUgbm9uLWJsb2NraW5nIEFQSSB0byBpbnZva2UgYSB3ZWIgc2VydmljZS4gSXRzIHN0b3JlcyBjYWxsYmFjayBvYmplY3Qgd2l0aCBhIGtleSBmaWVsZCBhcyBtZXNzYWdlSUQuIFRoaXMgaXMgYSBzaW5nbGV0b24gY2xhc3Mgd2hpY2ggY29uc2lzdHMgb2YgZm9sbG93aW5nIHR3byBtZXRob2RzLiA8L3A+DQo8cHJlPjxzcGFuIGNsYXNzPSJzdHlsZTEiPiBwdWJsaWMgdm9pZCBhZGRDb3JyZWxhdGlvbkluZm8oU3RyaW5nIG1zZ2lkLCBDYWxsYmFjayBjYWxsYmFja09iaikmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgICAgPC9zcGFuPiAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgDQogICBwdWJsaWMgQ2FsbGJhY2sgZ2V0Q29ycmVsYXRpb25JbmZvKFN0cmluZyBNZXNzYWdlSUQpIDwvcHJlPg0KPGgzPkxpc3RlbmVyIDwvaDM+DQo8cD5BIHNlcGFyYXRlIGxpc3RlbmVyIGlzIHJlcXVpcmVkIHRvIHByb3ZpZGUgdGhlIGFzeW5jaHJvbm91cyBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIGNsaWVudCBhbmQgdGhlIHNlcnZpY2UuIFRoYXQgaXMsIHdoZW4gdGhlIGNsaWVudCByZXRyaWV2ZXMgdGhlIHJlc3BvbnNlIChpZiBhbnkpIHVzaW5nIGEgc2VwYXJhdGUgdHJhbnNwb3J0IGNvbm5lY3Rpb24sIGxpc3RlbmVyIHdpbGwgYWN0IGFzIGFuIGFkZHJlc3NhYmxlIGVuZCBwb2ludCB0byB0aGUgc2VydmljZSBzbyB0aGF0IGl0IGNhbiBzZW5kIHRoZSBzZXJ2aWNlIHJlc3BvbnNlcyBkaXJlY3RseSB0byB0aGUgbGlzdGVuZXIuPC9wPg0KPGgzPkNsaWVudFByb3ZpZGVyPC9oMz4NCjxwPlRoaXMgaXMgcHJvdmlkZXIgdXNlZCBpbiB0aGUgY2xpZW50IHNpZGUuKFRoZSBuYW1lIHNob3VsZCBiZSBjaGFuZ2VkIGxhdGVyKS4gVGhpcyBpcyBvbmx5IHVzZWQgd2hlbiB0aGUgY2xpZW50IHVzZXMgYXN5bmNocm9ub3VzIHdlYiBzZXJ2aWNlIGludm9jYXRpb24gcGF0dGVybiwgdGhhdCBpcyB3aGVuIGEgc2VwYXJhdGUgbGlzdGVuZXIgaXMgdXNlZCB0byByZXRyaWV2ZSB0aGUgcmVzcG9uc2UuIFRoZSBzZXJ2aWNlIHJlc3BvbnNlIGlzIHJlY2VpdmVkIHVzaW5nIHRoZSBzYW1lIHdheSB0aGF0IHRoZSBheGlzIGVuZ2luZSByZWNlaXZlcyBhIHJlcXVlc3QuIFNvIHRoZSBQcm92aWRlclggd2lsbCByZXByZXNlbnQgdGhlIGVuZCBvZiB0aGUgZXhlY3V0aW9uIGNoYWluIG9mIHRoZSBlbmdpbmUgYW5kIGl0IHdpbGwgc2V0IHRoZSByZXNwb25zZSB0byB0aGUgY2FsbGJhY2sgb2JqZWN0LjwvcD4NCjxwPiZuYnNwOzwvcD4NCjxoMj5Ib3cgQXhpcyAyIEFyY2hpdGVjdHVyZSBTdXBwb3J0cyB0aGUgYWJvdmUgTWVzc2FnZSBQYXR0ZXJuczwvaDI+DQo8aDM+Um9idXN0IEludm9jYXRpb248L2gzPg0KPHA+VGhpcyBpbnZvY2F0aW9uIGlzIG1haW5seSBhIG9uZSB3YXkgb3BlcmF0aW9uLiBIb3dldmVyIGl0IHN1cHBvcnRzIHRoZSByZXR1cm5pbmcgZmF1bHRzIGZyb20gdGhlIHNlcnZpY2UuIFRoZSB0cmFuc3BvcnQgcHJvdG9jb2wgdXNlZCBpbiB0aGlzIG1lc3NhZ2UgcGF0dGVybiBzaG91bGQgYmUgYmktZGlyZWN0aW9uYWwuJm5ic3A7IFRoZSBmb2xsb3dpbmcgY29kZSBzbmlwcGV0IHNob3dzIGhvdyB0aGUgY2xpZW50IGNhbiB1c2UgYWJvdmUgbWV0aG9kIG9mIGludm9jYXRpb24gYW5kIHRoZSBzZXF1ZW5jZSBkaWFncmFtIHNob3dzIHRoZSBjb21wbGV0ZSBtZXNzYWdlLiA8L3A+DQo8cD48c3Ryb25nPkNvZGUgU25pcHBldDwvc3Ryb25nPjwvcD4NCiA8cHJlPmNhbGwuc2V0VG8oRVBSKQ0KIGNhbGwuc2V0QWN0aW9uKFN0cmluZykNCmNhbGwuc2V0VHJhbnNwb3J0VHlwZShTdHJpbmcpDQpjYWxsLnNlbmQoU09BUEVudmVsb3BlKSAgPC9wcmU+DQogPHA+PHN0cm9uZz5NZXNzYWdlIFBhdGggYW5kIFNlcXVlbmNlIERpYWdyYW08L3N0cm9uZz48L3A+DQogPHByZT5hIC0mZ3Q7IGNhbGwuc2VuZChTT0FQRW52ZWxvcGUpDQpiIC0mZ3Q7IGVuZ2luZS5zZW5kKCAuLikgDQpjIC0mZ3Q7IFNlbmQgdGhlIFNPQVAgbWVzc2FnZSA8L3ByZT4NCiA8ZGl2IGFsaWduPSJjZW50ZXIiPg0KCTxwcmU+IA0KPGltZyBoZWlnaHQ9MTQ5IHNyYz0iaW1hZ2VzL2ltYWdlMDA0LmpwZyIgd2lkdGg9NDE2IERFU0lHTlRJTUVVUkw9ImltYWdlcy9pbWFnZTAwNC5qcGciPjwvcHJlPg0KPC9kaXY+DQo8cCBhbGlnbj1jZW50ZXI+RmlndXJlIDItIFNlcXVlbmNlIGRpYWdyYW0gY29ycmVzcG9uZGluZyB0byBzZW5kICgpPC9wPg0KPGgzPkZpcmUgYW5kIEZvcmdldCBJbnZvY2F0aW9uPC9oMz4NCjxwPlRoaXMgbWV0aG9kIG9mIGludm9jYXRpb24gZG9lcyBub3Qgd2FpdCBmb3IgYW55IGtpbmQgb2YgcmVzcG9uc2UsIG5vdCBldmVuIGZvciBhIGZhdWx0LiBPbmNlIHRoZSByZXF1ZXN0IGlzIHdyaXR0ZW4gdG8gdGhlIHdpcmUgdGhlIG1ldGhvZCBpbW1lZGlhdGVseSByZXR1cm5zIHRvIHRoZSBjbGllbnQuIFRyYW5zcG9ydCBjYW4gYmUgZWl0aGVyIHVuaWRpcmVjdGlvbmFsIG9yIGJpLWRpcmVjdGlvbmFsLiBGb2xsb3dpbmcgY29kZSBzbmlwcGV0IHNob3dzIGhvdyB0aGUgY2xpZW50IGNhbiB1c2UgYWJvdmUgQVBJIG1ldGhvZCBhbmQgdGhlIHNlcXVlbmNlIGRpYWdyYW0gc2hvd3MgdGhlIGNvbXBsZXRlIG1lc3NhZ2UuIDwvcD4NCjxwPjxzdHJvbmc+Q29kZSBTbmlwcGV0PC9zdHJvbmc+PC9wPg0KPHByZT5jYWxsLnNldFRvKEVQUik8YnI+DQpjYWxsLnNldEFjdGlvbihTdHJpbmcpPGJyPg0KY2FsbC5zZXRUcmFuc3BvcnRUeXBlKFN0cmluZyk8YnI+DQpjYWxsLnNlbmRBc3luYyhTT0FQRW52ZWxvcGUpIDwvcHJlPg0KPHA+PHN0cm9uZz5NZXNzYWdlIFBhdGggYW5kIFNlcXVlbmNlIERpYWdyYW08L3N0cm9uZz48L3A+DQo8cHJlPmEgLSZndDsgY2FsbC5zZW5kKFNPQVBFbnZlbG9wZSkgDQpiIC0mZ3Q7IGVuZ2luZS5zZW5kKCAuLikgDQpjIC0mZ3Q7IFNlbmQgdGhlIFNPQVAgbWVzc2FnZSA8L3ByZT4NCjxwIGFsaWduPWNlbnRlcj48aW1nIGhlaWdodD0xNDcgc3JjPSJpbWFnZXMvaW1hZ2UwMDYuanBnIiB3aWR0aD00MzQgREVTSUdOVElNRVVSTD0iaW1hZ2VzL2ltYWdlMDA2LmpwZyI+PC9wPg0KPHAgYWxpZ249Y2VudGVyPkZpZ3VyZSAzIJYgU2VxdWVuY2UgZGlhZ3JhbSBjb3JyZXNwb25kcyB0byBzZW5kQXN5bmMoKTwvcD4NCjxoMz5CbG9ja2luZyBJbnZvY2F0aW9uIG9mIHR5cGUgSW4tT3V0PC9oMz4NCjxwPlRoaXMgaW52b2NhdGlvbiBwYXR0ZXJuIGxldHMgdGhlIGNsaWVudCB0byBpbnZva2UgYSB3ZWIgc2VydmljZSBhbmQgd2FpdCB0aWxsIHRoZSByZXNwb25zZSBpcyByZWNlaXZlZCBiZWZvcmUgcHJvY2VlZGluZyB0byB0aGUgbmV4dCBsaW5lIG9mIGludm9jYXRpb24uIFRoaXMgaXMgdmVyeSBtdWNoIHNpbWlsYXIgdG8gdGhlIENhbGwuaW52b2tlKCkgd2l0aCByZXNwb25zZSB0eXBlcyBpbiBBeGlzIDEuMS4gSW4gdGhpcyBhcHByb2FjaCwgdGhlIHRyYW5zcG9ydCBzcGVjaWZpZWQgc2hvdWxkIGJlIGEgYmktZGlyZWN0aW9uYWwgdHJhbnNwb3J0IGFuZCB0aGUgcmVzcG9uc2UgaXMgcmV0cmlldmVkIHVzaW5nIHRoZSBzYW1lIHRyYW5zcG9ydCBjb25uZWN0aW9uLiBUaGUgY2xpZW50IHdpbGwgaGFuZyB0aWxsIHRoZSBlbnRpcmUgY29tbXVuaWNhdGlvbiBjb21wbGV0ZXMuPC9wPg0KPHA+PHN0cm9uZz5Db2RlIFNuaXBwZXQmbmJzcDs8L3N0cm9uZz48L3A+DQo8cHJlPjxzcGFuIGNsYXNzPSJzdHlsZTEiPmNhbGwuc2V0VE8oRVBSKTwvc3Bhbj4gY2FsbC5zZXRBY3Rpb24oU3RyaW5nKQ0KY2FsbC5zZXRUcmFuc3BvcnRUeXBlKFN0cmluZykNClNPQVBFbnZlbG9wZSBlbnY9Y2FsbC5zZW5kUmVjZWl2ZShTT0FQRW52ZWxvcGUpIDwvcHJlPg0KPHA+PHN0cm9uZz5NZXNzYWdlIFBhdGggYW5kIFNlcXVlbmNlIERpYWdyYW08L3N0cm9uZz48L3A+DQo8cHJlPmEgLSZndDsgY2FsbC5zZW5kUmVjZWl2ZShTT0FQRW52ZWxvcGUpDQpiLSAmZ3Q7IGVuZ2luZS5zZW5kICguLikgDQpjIC0mZ3Q7IFNlbmQgdGhlIFNPQVAgbWVzc2FnZSANCmQgLSZndDsgUmVjZWl2ZSB0aGUgcmVzcG9uc2Ugb3ZlciB0aGUgc3luY2hyb25vdXMgdHJhbnNwb3J0IA0KdyAtJmd0OyBQcm92aWRlclggd2lsbCBiZSBjYWxsZWQgYXMgdGhlIGxhc3Qgc3RlcCBpbiBlbmdpbmUucmVjZWl2ZSguLikgDQplIC0mZ3Q7IHByb3ZpZGVyIHJldHVybnMmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCmYgLSZndDsgQ2FsbCBoYW5kIG92ZXIgdGhlIHJlc3BvbnNlIHRvIHRoZSBjbGllbnQgPC9wcmU+DQo8cCBhbGlnbj1jZW50ZXI+PGltZyBoZWlnaHQ9MTk5IHNyYz0iaW1hZ2VzL2ltYWdlMDA4LmpwZyIgd2lkdGg9NDM5IERFU0lHTlRJTUVVUkw9ImltYWdlcy9pbWFnZTAwOC5qcGciPjwvcD4NCjxwIGFsaWduPWNlbnRlcj5GaWd1cmUgNCCWIFNlcXVlbmNlIGRpYWdyYW0gY29ycmVzcG9uZHMgdG8gc2VuZFJlY2lldmUoKTwvcD4NCjxoMz5Ob24gQmxvY2tpbmcgSW52b2NhdGlvbiBvZiB0eXBlIEluLU91dDwvaDM+DQo8cD5Vc2luZyB0aGlzIG1ldGhvZCBjbGllbnQgY2FuIGFjY2VzcyBJbi1PdXQgdHlwZSB3ZWIgc2VydmljZSBvcGVyYXRpb25zLiBUaGVyZSBhcmUgdHdvIHdheXMgdGhhdCB0aGUgY2xpZW50IGNhbiB1c2UgdGhpcyBpbnZvY2F0aW9uIHBhdHRlcm4uPC9wPg0KPHA+PHN0cm9uZz5NZXRob2QgMTogV2l0aG91dCBhIENsaWVudCBTaWRlIExpc3RlbmVyPC9zdHJvbmc+PC9wPg0KPHA+VGhlIGNvbW11bmljYXRpb24gaGFwcGVucyB1c2luZyBhIHNpbmdsZSB0cmFuc3BvcnQgY29ubmVjdGlvbi4gV2l0aCByZXNwZWN0IHRvIHRoZSB0cmFuc3BvcnQgcHJvdG9jb2wgdXNlZCwgdGhlIHdlYiBzZXJ2aWNlIHJlc3BvbnNlIGlzIHJlY2VpdmVkIHVzaW5nIHRoZSBzYW1lIGNvbm5lY3Rpb24uIEhvd2V2ZXIgdGhlIGNsaWVudCB3aWxsIG5vdCBibG9jayB0aWxsIGl0IHJlY2VpdmUgdGhlIHJlc3BvbnNlLiBJbnN0ZWFkIGl0IGNhbiBwcm9jZWVkIHRvIHRoZSBuZXh0IGxpbmUgb2YgZXhlY3V0aW9uIGJ5IHJlZ2lzdGVyaW5nIGEgQ2FsbGJhY2sgb2JqZWN0LiZuYnNwOyBUaGUgZm9sbG93aW5nIGNvZGUgc25pcHBldCBzaG93cyBob3cgdGhlIGNsaWVudCBjYW4gdXNlIGFib3ZlIEFQSSBtZXRob2QgYW5kIHRoZSBzZXF1ZW5jZSBkaWFncmFtIHNob3dzIHRoZSBjb21wbGV0ZSBtZXNzYWdlLiBUbyB1c2UgdGhpcyBwYXR0ZXJuIGNsaWVudCBzaG91bGQgdXNlIHRoZSB2YWx1ZSCTPHN0cm9uZz50cnVlPC9zdHJvbmc+lCBmb3IgdGhlIHBhcmFtZXRlciCTdXNlU2VwYXJhdGVMaXN0ZW5lcpQgaW4gdGhlIHNldExpc3RlbmVyVHJhbnNwb3J0KC4uKSBtZXRob2QuPC9wPg0KPHA+PHN0cm9uZz5Db2RlIFNuaXBwZXQ8L3N0cm9uZz48L3A+DQo8cHJlPmNhbGwuc2V0VE8oRVBSKQ0KY2FsbC5zZXRBY3Rpb24oU3RyaW5nKSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgDQpjYWxsLnNldFRyYW5zcG9ydFR5cGUoU3RyaW5nKQ0KY2FsbC5zZXRMaXN0ZW5lclRyYW5zcG9ydChTdHJpbmcgdHJhbnNwb3J0VHlwZSxib29sZWFuIHVzZVNlcGFyYXRlTGlzdGVuZXIpDQpjYWxsLnNlbmRSZWNlaXZlQXN5bmMgKFNPQVBFbnZlbG9wZSwgQ2FsbGJhY2spIDwvcHJlPg0KPHA+PHN0cm9uZz5NZXNzYWdlIFBhdGggYW5kIFNlcXVlbmNlIERpYWdyYW08L3N0cm9uZz48L3A+DQo8cHJlPmEgLSZndDsgY2FsbC5zZW5kUmVjZWl2ZUFzeW5jIChTT0FQRW52ZWxvcGUsIGNhbGxiYWNrT2JqKSANCnAgLSZndDsgY29ycmVsYXRvci5hZGRDb3JyZWxhdGlvbkluZm9yKG1zZ0lELGFsbGJhY2tPYmpSZWYpIA0KYi0gJmd0OyBlbmdpbmUuc2VuZCAoLi4pIA0KYyAtJmd0OyBTZW5kIHRoZSBTT0FQIG1lc3NhZ2UgDQpkIC0mZ3Q7IFJlY2VpdmUgdGhlIHJlc3BvbnNlIG92ZXIgdGhlIHN5bmNocm9ub3VzIHRyYW5zcG9ydCANCncgLSZndDsgUHJvdmlkZXJYIHdpbGwgYmUgY2FsbGVkIGFzIHRoZSBsYXN0IHN0ZXAgaW4gZW5naW5lLnJlY2VpdmUoLi4pIA0KcSAtJmd0OyBjb3JyZWxhdG9yLmdldENvcnJlbGF0aW9uSW5mbyhtc2dJRCkgDQpnIC0mZ3Q7IGNhbGxiYWNrT2JqLm9uQ29tcGxldGUoKSA8L3ByZT4NCjxkaXYgYWxpZ249ImNlbnRlciI+DQoJPHByZT48aW1nIGhlaWdodD0yMjUgc3JjPSJpbWFnZXMvaW1hZ2UwMTAuanBnIiB3aWR0aD02NDMgREVTSUdOVElNRVVSTD0iaW1hZ2VzL2ltYWdlMDEwLmpwZyI+PC9wcmU+DQo8L2Rpdj4NCjxwIGFsaWduPWNlbnRlcj5GaWd1cmUgNSCWIFNlcXVlbmNlIGRpYWdyYW0gY29ycmVzcG9uZHMgdG8gc2VuZFJlY2lldmVBeXNuIHdpdGggdHdvIHdheSB0cmFuc3BvcnQ8L3A+DQo8cD48c3Ryb25nPk1ldGhvZCAyOiBXaXRoIGEgQ2xpZW50IFNpZGUgTGlzdGVuZXI8L3N0cm9uZz48L3A+DQo8cD5JbiB0aGlzIG1ldGhvZCBjbGllbnQgd2lsbCBoYXZlIHRoZSB1c2FnZSBvZiBub24tYmxvY2tpbmcgQVBJIHdpdGggYSBzZXBhcmF0ZSBsaXN0ZW5lciB0byBhY2NlcHQgdGhlIHNlcnZpY2UgcmVzcG9uc2UgYXN5bmNocm9ub3VzbHkuIE91dGdvaW5nIHRyYW5zcG9ydCBkb2VzIG5vdCB3YWl0IGZvciB0aGUgcmVzcG9uc2UuIEluc3RlYWQgY29ycmVzcG9uZGluZyBpbmNvbWluZyBtZXNzYWdlIGlzIHByb2Nlc3NlZCBieSBkaWZmZXJlbnQgdHJhbnNwb3J0LCB3aGljaCBpcyBjcmVhdGVkIGJ5IGNhbGwgb2JqZWN0IHdoaWxlIGl0IGlzIHNlbmRpbmcgdGhlIHJlcXVlc3QuIFRoZSBjb3JyZWxhdGlvbiBiZXR3ZWVuIHRoZSByZXF1ZXN0IGFuZCB0aGUgcmVzcG9uc2UgbWVzc2FnZXMgaXMgYWNoaWV2ZWQgdXNpbmcgYSBzaW1pbGFyIG1lc3NhZ2UgSUQgbWVjaGFuaXNtIGFzIGluIFdTLUFkZHJlc3NpbmcuIE9uY2UgdGhlIFdTLUFkZHJlc3Npbmcgc3VwcG9ydCBpcyBpbXBsZW1lbnRlZCB0aGUgY2xpZW50IHdpbGwgb25seSB1c2UgJmx0O3dzYTpNZXNzYWdlSUQmZ3Q7IGFuZCB0aGUgJmx0O3dhczpSZWxhdGVzVG8mZ3Q7IGhlYWRlcnMgdG8gYWNoaWV2ZSB0aGUgY29ycmVsYXRpb24uIDwvcD4NCjxwPlRoZSBmb2xsb3dpbmcgY29kZSBzbmlwcGV0IHNob3dzIGhvdyB0aGUgY2xpZW50IGNhbiB1c2UgdGhhdCBhYm92ZSBBUEkgbWV0aG9kIGFuZCB0aGUgc2VxdWVuY2UgZGlhZ3JhbSBzaG93cyB0aGUgY29tcGxldGUgbWVzc2FnZS4gVG8gdXNlIHRoaXMgcGF0dGVybiBjbGllbnQgc2hvdWxkIHVzZSB0aGUgdmFsdWUgkzxzdHJvbmc+ZmFsc2U8L3N0cm9uZz6UIGZvciB0aGUgcGFyYW1ldGVyIJN1c2VTZXBhcmF0ZUxpc3RlbmVylCBpbiB0aGUgc2V0TGlzdGVuZXJUcmFuc3BvcnQoLi4pIG1ldGhvZC48L3A+DQo8cD48c3Ryb25nPkNvZGUgU25pcHBldDwvc3Ryb25nPjwvcD4NCjxwcmU+Y2FsbC5zZXRUTyhFUFIpPC9zcGFuPiANCmNhbGwuc2V0QWN0aW9uKFN0cmluZykgDQpjYWxsLnNldFRyYW5zcG9ydFR5cGUoU3RyaW5nKQ0KY2FsbC5zZXRMaXN0ZW5lclRyYW5zcG9ydChTdHJpbmcgdHJhbnNwb3J0VHlwZSxib29sZWFuIHVzZVNlcGFyYXRlTGlzdGVuZXIpDQpjYWxsLnNlbmRSZWNlaXZlQXN5bmMgKFNPQVBFbnZlbG9wZSwgQ2FsbGJhY2spIDwvcHJlPg0KPHA+PHN0cm9uZz5NZXNzYWdlIFBhdGggYW5kIFNlcXVlbmNlIERpYWdyYW08L3N0cm9uZz48L3A+DQo8cHJlPmEgLSZndDsgY2FsbC5zZW5kUmVjZWl2ZUFzeW5jIChTT0FQRW52ZWxvcGUsIGNhbGxiYWNrT2JqKQ0KIHAgLSZndDsgY29ycmVsYXRvci5hZGRDb3JyZWxhdGlvbkluZm9yKG1zZ0lELGFsbGJhY2tPYmpSZWYpIA0KYi0gJmd0OyBlbmdpbmUuc2VuZCAoLi4pIA0KIGMgLSZndDsgU2VuZCB0aGUgU09BUCBtZXNzYWdlIA0KIHIgLSZndDsgUmVjZWl2ZSB0aGUgcmVzcG9uc2UgYnkgdGhlIGxpc3RlbmVyIA0KIHMgLSZndDsgZW5naW5lLnJlY2VpdmUoLi4pIA0KIHcgLSZndDsgUHJvdmlkZXJYIHdpbGwgYmUgY2FsbGVkIGFzIHRoZSBsYXN0IHN0ZXAgaW4gZW5naW5lLnJlY2VpdmUoLi4pIA0KIHEgLSZndDsgY29ycmVsYXRvci5nZXRDb3JyZWxhdGlvbkluZm8obXNnSUQpIA0KZyAtJmd0OyBjYWxsYmFja09iai5vbkNvbXBsZXRlKCkgPC9wcmU+DQo8cCBhbGlnbj1jZW50ZXI+PGltZyBoZWlnaHQ9MjM0IHNyYz0iaW1hZ2VzL2ltYWdlMDEyLmpwZyIgd2lkdGg9NjQ4IERFU0lHTlRJTUVVUkw9ImltYWdlcy9pbWFnZTAxMi5qcGciPjwvcD4NCjxwIGFsaWduPWNlbnRlcj5GaWd1cmUgNiCWIFNlcXVlbmNlIGRpYWdyYW0gY29ycmVzcG9uZHMgdG8gc2VuZFJlY2lldmVBeW5jIHdpdGggb25lIHdheSB0cmFuc3BvcnQuPC9wPg0KPHA+PHN0cm9uZz48dT5Bc3luY2hyb25vdXMgaW52b2NhdGlvbiB3aXRoIG9uZSB3YXkgdHJhbnNwb3J0PC91Pjwvc3Ryb25nPjwvcD4NCjxwPlRoZSBwcm9ncmFtbWluZyBtb2RlbCBhbG1vc3Qgc2ltaWxhciB0byBhc3luY2hyb25vdXMgaW52b2NhdGlvbiB3aXRoIHR3byB3YXkgdHJhbnNwb3J0LiBPbmx5IGRpZmZlcmVuY2UgaXMgdGhhdCAmbmJzcDtmb3Igb3V0Z29pbmcgYW5kIGluY29taW5nIG1lc3NhZ2VzLCBpdCB1c2VzIHR3byBlbmdpbmUgaW5zdGFuY2VzLCBhbmQgb3V0Z29pbmcgdHJhbnNwb3J0IGRvc2Ugbm90IHdhaXQgZm9yIHJlc3BvbnNlLiBJbnN0ZWFkLCBjb3JyZXNwb25kaW5nIGluY29taW5nIG1lc3NhZ2UgaXMgcHJvY2Vzc2VkIGJ5IGRpZmZlcmVudCB0cmFuc3BvcnQgd2hpY2ggaXMgY3JlYXRlZCBieSBjYWxsIG9iamVjdCB3aGlsZSBpdCBpcyBzZW5kaW5nIHRoZSByZXF1ZXN0LiBIZXJlIHRoZSBMaXN0ZW5lciBpcyB0aGUgbmV3bHkgY3JlYXRlZCB0cmFuc3BvcnQsIHdoaWNoIGlzIHJ1bm5pbmcgdG8gZ2V0IHRoZSBpbmNvbWluZyBtZXNzYWdlLiBDb3JyZXNwb25kaW5nIHNlcXVlbmNlIGRpYWdyYW0gaXMgc2hvd24gaW4gRmlndXJlIDYsIGNvZGUgc25pcHBldCBhbmQgbWVzc2FnZSBwYXRocyBhcmUgZGVzY3JpYmVkIGJlbG93LiA8L3A+DQo8aDM+Q29kZSBTbmlwcGV0IDwvaDM+DQo8cHJlPmNhbGwuc2V0VE8oRVBSKQ0KIGNhbGwuc2V0QWN0aW9uKFN0cmluZykgDQpjYWxsLnNldExpc3RlbmVyVHJhbnNwb3J0KJNodHRwlCwgZmFsc2UpIA0KY2FsbC5zZW5kUmVjZWl2ZUFzeW5jKFNPQVBFbnZlbG9wZSwgQ2FsbGJhY2spIDwvcHJlPg0KPGgzPk1lc3NhZ2UgcGF0aHM8L2gzPg0KPHByZT5hIC0mZ3Q7IGNhbGwuc2VuZFJlY2VpdmVBc3luYyAoU09BUEVudmVsb3BlLCBjYWxsYmFja09iaikgcCAtJmd0OyBjb3JyZWxhdG9yLmFkZENvcnJlbGF0aW9uSW5mb3IobXNnSUQsYWxsYmFja09ialJlZikgDQpiLSAmZ3Q7IGVuZ2luZS5zZW5kICguLikgDQpjIC0mZ3Q7IFNlbmQgdGhlIFNPQVAgbWVzc2FnZSANCnIgLSZndDsgUmVjZWl2ZSB0aGUgcmVzcG9uc2UgYnkgdGhlIGxpc3RlbmVyIA0KcyAtJmd0OyBlbmdpbmUucmVjZWl2ZSguLikgDQp3IC0mZ3Q7IFByb3ZpZGVyWCB3aWxsIGJlIGNhbGxlZCBhcyB0aGUgbGFzdCBzdGVwIGluIGVuZ2luZS5yZWNlaXZlKC4uKSANCiBxIC0mZ3Q7IGNvcnJlbGF0b3IuZ2V0Q29ycmVsYXRpb25JbmZvKG1zZ0lEKSANCmcgLSZndDsgY2FsbGJhY2tPYmoub25Db21wbGV0ZSgpIDwvcHJlPg0KPHAgYWxpZ249Y2VudGVyPjxpbWcgaGVpZ2h0PTIzNCBzcmM9ImltYWdlcy9pbWFnZTAxMy5qcGciIHdpZHRoPTY0OCBERVNJR05USU1FVVJMPSJpbWFnZXMvaW1hZ2UwMTMuanBnIj48L3A+DQo8cCBhbGlnbj1jZW50ZXI+RmlndXJlIDYgliBTZXF1ZW5jZSBkaWFncmFtIGNvcnJlc3BvbmRzIHRvIHNlbmRSZWNpZXZlQXluYyB3aXRoIG9uZSB3YXkgdHJhbnNwb3J0LjwvcD4NCjxoMj5XaGF0IGlzIHN1cHBvcnRlZCBpbiBNMTwvaDI+DQo8cD5Gcm9tIHRoZSBhYm92ZSBpbnRlcmFjdGlvbiBwYXR0ZXJucyBmb3IgTWlsZXN0b25lMSwgd2UgaGF2ZSBvbmx5IGltcGxlbWVudGVkIA0KdGhlIGZvbGxvd2luZyB0d28gdHlwZXMuIDwvcD4NCjx1bD4NCgk8bGk+QmxvY2tpbmcgSW52b2NhdGlvbiBvZiB0eXBlIEluLU91dDwvbGk+DQoJPGxpPk5vbiBCbG9ja2luZyBJbnZvY2F0aW9uIG9mIHR5cGUgSW4tT3V0IC0tJmd0OyBNZXRob2QgMTogV2l0aG91dCBhIENsaWVudCBTaWRlIExpc3RlbmVyPC9saT4NCjwvdWw+DQo8cD5Ib3dldmVyIGZyb20gdGhlIGNsaWVudCdzIHBvaW50IG9mIHZpZXcgdGhlIG90aGVyIGludGVyYWN0aW9uIHBhdHRlcm5zIGFyZSANCmFsc28gaW1wbGVtZW50ZWQgZXhjZXB0IHRoZSBOb24gQmxvY2tpbmcgSW52b2NhdGlvbiBvZiB0eXBlIEluLU91dCB3aXRoIGEgY2xpZW50IA0Kc2lkZSBsaXN0ZW5lciwgYnV0IHN0aWxsIHdlIGNvdWxkIG5vdCB0ZXN0IHRoZW0gc2luY2Ugd2UgbmVlZCBjb21wbGV0ZSBzZXJ2ZXIgDQppbXBsZW1lbnRhdGlvbiB0byB0ZXN0IHRoZW0uPC9wPg0KPGgyPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogNDAwIj48Zm9udCBzaXplPSIzIj5JdCBpcyBvdXIgaW50ZW50aW9uIHRvIHN1cHBvcnQgDQphbGwgdGhlIHJlcXVpcmVkIGludGVyYWN0aW9uIHBhdHRlcm5zIGFuZCB3aWxsIGJlIGF2YWlsYWJsZSBpbiB0aGUgbmV4dCByZWxlYXNlLjwvZm9udD48L3NwYW4+PC9oMj48L2JvZHk+PC9odG1sPg0K