PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSIgc3RhbmRhbG9uZT0ibm8iPz4NCjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4NCjxodG1sPg0KPGhlYWQ+DQo8dGl0bGU+QVNGOiBXaGF0J3MgTmV3IGluIHRoaXMgUmVsZWFzZTwvdGl0bGU+DQo8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiAvPg0KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1TdHlsZS1UeXBlIiBjb250ZW50PSJ0ZXh0L2NzcyIgLz4NCjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InJlc291cmNlcy9hcGFjaGUteGFsYW4uY3NzIiAvPg0KPC9oZWFkPg0KPCEtLQ0KICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuIFNlZSB0aGUgTk9USUNFIGZpbGUNCiAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQogKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCiAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgICJMaWNlbnNlIik7DQogKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCiAqDQogKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQogKg0KICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQogLS0+DQo8Ym9keT4NCjxkaXYgaWQ9InRpdGxlIj4NCjx0YWJsZSBjbGFzcz0iSGRyVGl0bGUiPg0KPHRib2R5Pg0KPHRyPg0KPHRoIHJvd3NwYW49IjIiPg0KPGEgaHJlZj0iLi4vaW5kZXguaHRtbCI+DQo8aW1nIGFsdD0iVHJhZGVtYXJrIExvZ28iIHNyYz0icmVzb3VyY2VzL1hhbGFuQy1Mb2dvLXRtLnBuZyIgd2lkdGg9IjE5MCIgaGVpZ2h0PSI5MCIgLz4NCjwvYT4NCjwvdGg+DQo8dGggdGV4dC1hbGlnbj0iY2VudGVyIiB3aWR0aD0iNzUlIj4NCjxhIGhyZWY9ImluZGV4Lmh0bWwiPlhhbGFuLUMvQysrIFZlcnNpb24gMS4xMTwvYT4NCjwvdGg+DQo8L3RyPg0KPHRyPg0KPHRkIHZhbGlnbj0ibWlkZGxlIj5XaGF0J3MgTmV3IGluIHRoaXMgUmVsZWFzZTwvdGQ+DQo8L3RyPg0KPC90Ym9keT4NCjwvdGFibGU+DQo8dGFibGUgY2xhc3M9IkhkckJ1dHRvbnMiIGFsaWduPSJjZW50ZXIiIGJvcmRlcj0iMSI+DQo8dGJvZHk+DQo8dHI+DQo8dGQ+DQo8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmciPkFwYWNoZSBGb3VuZGF0aW9uPC9hPg0KPC90ZD4NCjx0ZD4NCjxhIGhyZWY9Imh0dHA6Ly94YWxhbi5hcGFjaGUub3JnIj5YYWxhbiBQcm9qZWN0PC9hPg0KPC90ZD4NCjx0ZD4NCjxhIGhyZWY9Imh0dHA6Ly94ZXJjZXMuYXBhY2hlLm9yZyI+WGVyY2VzIFByb2plY3Q8L2E+DQo8L3RkPg0KPHRkPg0KPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIiPldlYiBDb25zb3J0aXVtPC9hPg0KPC90ZD4NCjx0ZD4NCjxhIGhyZWY9Imh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvc3RhbmRhcmRzIj5PYXNpcyBPcGVuPC9hPg0KPC90ZD4NCjwvdHI+DQo8L3Rib2R5Pg0KPC90YWJsZT4NCjwvZGl2Pg0KPGRpdiBpZD0ibmF2TGVmdCI+DQo8dWw+DQo8bGk+DQo8YSBocmVmPSJyZXNvdXJjZXMuaHRtbCI+UmVzb3VyY2VzPC9hPg0KPGJyIC8+DQo8L2xpPg0KPGxpPg0KPGEgaHJlZj0iLi4vaW5kZXguaHRtbCI+SG9tZTwvYT4NCjwvbGk+PC91bD48aHIgLz48dWw+DQo8bGk+DQo8YSBocmVmPSJpbmRleC5odG1sIj5YYWxhbi1DKysgMS4xMTwvYT4NCjwvbGk+DQo8bGk+V2hhdCdzIE5ldzxiciAvPg0KPC9saT4NCjxsaT4NCjxhIGhyZWY9ImxpY2Vuc2UuaHRtbCI+TGljZW5zZXM8L2E+DQo8L2xpPjwvdWw+PGhyIC8+PHVsPg0KPGxpPg0KPGEgaHJlZj0ib3ZlcnZpZXcuaHRtbCI+T3ZlcnZpZXc8L2E+DQo8L2xpPg0KPGxpPg0KPGEgaHJlZj0iY2hhcnRlci5odG1sIj5DaGFydGVyPC9hPg0KPC9saT48L3VsPjxociAvPjx1bD4NCjxsaT4NCjxhIGhyZWY9ImRvd25sb2FkLmh0bWwiPkRvd25sb2FkPC9hPg0KPC9saT4NCjxsaT4NCjxhIGhyZWY9ImJ1aWxkbGlicy5odG1sIj5CdWlsZCBMaWJyYXJpZXM8L2E+DQo8L2xpPg0KPGxpPg0KPGEgaHJlZj0iaW5zdGFsbC5odG1sIj5JbnN0YWxsYXRpb248L2E+DQo8L2xpPg0KPGxpPg0KPGEgaHJlZj0iYnVpbGRkb2NzLmh0bWwiPkJ1aWxkIERvY3VtZW50czwvYT4NCjwvbGk+PC91bD48aHIgLz48dWw+DQo8bGk+DQo8YSBocmVmPSJzYW1wbGVzLmh0bWwiPlNhbXBsZSBBcHBzPC9hPg0KPC9saT4NCjxsaT4NCjxhIGhyZWY9ImNvbW1hbmRsaW5lLmh0bWwiPkNvbW1hbmQgTGluZTwvYT4NCjwvbGk+DQo8bGk+DQo8YSBocmVmPSJ1c2FnZXBhdHRlcm5zLmh0bWwiPlVzYWdlIFBhdHRlcm5zPC9hPg0KPC9saT48L3VsPjxociAvPjx1bD4NCjxsaT4NCjxhIGhyZWY9InByb2dyYW1taW5nLmh0bWwiPlByb2dyYW1taW5nPC9hPg0KPC9saT4NCjxsaT4NCjxhIGhyZWY9ImV4dGVuc2lvbnMuaHRtbCI+RXh0ZW5zaW9uczwvYT4NCjwvbGk+DQo8bGk+DQo8YSBocmVmPSJleHRlbnNpb25zbGliLmh0bWwiPkV4dGVuc2lvbnMgTGlicmFyeTwvYT4NCjwvbGk+DQo8bGk+DQo8YSBocmVmPSJhcGlEb2NzL2luZGV4Lmh0bWwiPkFQSSBSZWZlcmVuY2U8L2E+DQo8L2xpPjwvdWw+PGhyIC8+PHVsPg0KPGxpPg0KPGEgaHJlZj0iZmFxLmh0bWwiPlhhbGFuLUMgRkFRczwvYT4NCjwvbGk+PC91bD48aHIgLz48dWw+DQo8bGk+DQo8YSBocmVmPSJ3aGF0c25ldy5odG1sI2J1Z3MiPkJ1Z3M8L2E+DQo8L2xpPg0KPGxpPg0KPGEgaHJlZj0iaHR0cDovL3htbC5hcGFjaGUub3JnL3hhbGFuLWovdGVzdC9ydW4uaHRtbCNob3ctdG8tcnVuLWMiPlRlc3Rpbmc8L2E+DQo8L2xpPg0KPGxpPg0KPGEgaHJlZj0ic2VjdXJld2ViLmh0bWwiPldlYiBTZWN1cml0eTwvYT4NCjwvbGk+DQo8L3VsPg0KPC9kaXY+DQo8ZGl2IGlkPSJjb250ZW50Ij4NCjxoMj5XaGF0J3MgTmV3IGluIHRoaXMgUmVsZWFzZTwvaDI+DQoNCiA8dWw+DQogIDxsaT4NCjxhIGhyZWY9IiNzdGF0dXMiPlN0YXR1czwvYT4NCjwvbGk+DQogIDxsaT4NCjxhIGhyZWY9IiNjb250YWN0Ij5HZXR0aW5nIGluIFRvdWNoPC9hPg0KPC9saT4NCiAgPGxpPg0KPGEgaHJlZj0iI2hpc3RvcnkiPkhpc3Rvcnkgb2YgU29mdHdhcmUgQ2hhbmdlczwvYT4NCjwvbGk+DQogIDxsaT4NCjxhIGhyZWY9IiNidWdmaXgxMSI+QnVnIEZpeGVzIGluIFJlbGVhc2UgMS4xMTwvYT4NCjwvbGk+DQogIDxsaT4NCjxhIGhyZWY9IiNidWdmaXgxMCI+QnVnIEZpeGVzIGluIFJlbGVhc2UgMS4xMDwvYT4NCjwvbGk+DQogIDxsaT4NCjxhIGhyZWY9IiNidWdzIj5CdWcgcmVwb3J0aW5nPC9hPg0KPC9saT4gICAgDQogIDxsaT4NCjxhIGhyZWY9IiN0by1kbyI+VG8tZG8gdGFza3MgZm9yIGZ1dHVyZSBYYWxhbi1DL0MrKyByZWxlYXNlczwvYT4NCjwvbGk+DQogPC91bD4NCg0KPGEgbmFtZT0ic3RhdHVzIj4mIzgyMDQ7PC9hPg0KPHAgYWxpZ249InJpZ2h0IiBzaXplPSIyIj4NCjxhIGhyZWY9IiNjb250ZW50Ij4odG9wKTwvYT4NCjwvcD4NCjxoMz5TdGF0dXM8L2gzPg0KDQo8cD4NCjxiPlJlbGVhc2Ugbm90ZXMgZm9yIFhhbGFuLUMvQysrIFZlcnNpb24gMS4xMTwvYj4NCjwvcD4NCjxwPlRoaXMgaXMgcHJpbWFyaWx5IGEgYnVnLWZpeCByZWxlYXNlIG9mIHZlcnNpb24gMS4xMC4gIFN1cHBvcnQgZm9yIG51bWJlciBhbmQNCm5vZGVzZXQgdHlwZXMgZm9yIHN0eWxlc2hlZXQgdG9wLWxldmVsIHBhcmFtZXRlcnMgaGFzIGJlZW4gYWRkZWQuIFhlcmNlcy1DL0MrKw0KdmVyc2lvbnMgMy4wIGFuZCBuZXdlciBhcmUgbm93IHN1cHBvcnRlZC4gWGVyY2VzLUMvQysrIFZlcnNpb24gMy4xLjEgaXMgdGhlDQpwcmVmZXJyZWQgc3RhYmxlIHJlbGVhc2UuDQo8L3A+DQo8cD5BdCBwcmVzZW50LCB0aGUgWGFsYW4tQy9DKysgVmVyc2lvbiAxLjExIGhhcyBubyBiaW5hcnkgcmVsZWFzZXMuIA0KV2hlbiBidWlsZGluZyBYYWxhbi1DL0MrKyBmcm9tIHNvdXJjZXMsIA0KeW91IHNob3VsZCB1c2UgdGhlIHNhbWUgcGxhdGZvcm0gdGhhdCB3YXMgdXNlZCB0byANCmNvbXBpbGUgdGhlIGNvbXBhbmlvbiBYZXJjZXMtQy9DKysgbGlicmFyeS4NCjwvcD4NCjxwPkJpbmFyeSBwYWNrYWdlIHJlbGVhc2VzIGZvciBNaWNyb3NvZnQgV2luZG93cyBhcmUgYmVpbmcgcGxhbm5lZC4NCjwvcD4NCjxwPklmIHlvdSBhcmUgYWJsZSB0byBzdWNjZXNzZnVsbHkgY3JlYXRlIGEgbmV3IGJpbmFyeSBwYWNrYWdlIGFuZCB3aXNoIGl0DQp0byBiZSBpbmNsdWRlZCwgdGhlbiB3ZSB3ZWxjb21lIHlvdXIgcGFydGljaXBhdGlvbiBvbiB0aGUgDQo8YSBocmVmPSJtYWlsdG86eGFsYW4tZGV2QHhtbC5hcGFjaGUub3JnIj54YWxhbi1kZXY8L2E+IG1haWwgbGlzdC4NCjwvcD4NCjxwPlhhbGFuLUMvQysrIG5vIGxvbmdlciBzdXBwb3J0cyBNaWNyb3NvZnQgU3R1ZGlvIChWQzYpLiAgVGhlIE1pY3Jvc29mdCBWaXN1YWwNClN0dWRpbyAuTkVUIHBsYXRmb3JtcyAoMjAwMywgMjAwNSwgMjAwOCwgYW5kIDIwMTApIGFyZSBzdXBwb3J0ZWQuICBUaGlzIGVxdWF0ZXMNCnRvIGNvbXBpbGVycyAoVkM3MSwgVkM4LCBWQzksIGFuZCBWQzEwKS4NCjwvcD4NCg0KDQoNCjxhIG5hbWU9ImNvbnRhY3QiPiYjODIwNDs8L2E+DQo8cCBhbGlnbj0icmlnaHQiIHNpemU9IjIiPg0KPGEgaHJlZj0iI2NvbnRlbnQiPih0b3ApPC9hPg0KPC9wPg0KPGgzPkdldHRpbmcgaW4gVG91Y2g8L2gzPg0KPHA+WW91ciBmZWVkYmFjayBpcyBtb3JlIHRoYW4gd2VsY29tZS4gT2ZmZXJzIG9mIGhlbHAgYXJlIGV2ZW4gbW9yZSBzbyEgDQpQZXJoYXBzIHlvdSB3b3VsZCBsaWtlIHRvIGNvbnRyaWJ1dGUgdG8gdGhlIG9uZ29pbmcgZGV2ZWxvcG1lbnQsIA0KdGVzdGluZywgb3IgZG9jdW1lbnRhdGlvbiBvZiBYYWxhbi1DKysuDQo8L3A+IA0KPHA+UGxlYXNlIGVtYWlsIHlvdXIgY29tbWVudHMsIHF1ZXN0aW9ucywgc3VnZ2VzdGlvbnMsIGJ1ZyByZXBvcnRzLCANCmFuZCBvZmZlcnMgdG8gaGVscCB0byA8YSBocmVmPSJtYWlsdG86eGFsYW4tZGV2QHhtbC5hcGFjaGUub3JnIj5YYWxhbiBEZXZlbG9wbWVudCBNYWlsaW5nIExpc3Q8L2E+Lg0KPC9wPg0KPHA+WW91ciBnZW5lcmFsIHVzZXIgY29tbWVudHMgb24gWGFsYW4tQysrIHVzYWdlIGFyZSBhbHNvIHdlbGNvbWUgb24gDQo8YSBocmVmPSJtYWlsdG86eGFsYW4tYy11c2Vyc0B4bWwuYXBhY2hlLm9yZyI+WGFsYW4tQy9DKysgVXNlcnMgTWFpbGluZyBMaXN0PC9hPi4NCjwvcD4NCg0KDQo8YSBuYW1lPSJoaXN0b3J5Ij4mIzgyMDQ7PC9hPg0KPHAgYWxpZ249InJpZ2h0IiBzaXplPSIyIj4NCjxhIGhyZWY9IiNjb250ZW50Ij4odG9wKTwvYT4NCjwvcD4NCjxoMz5DdW11bGF0aXZlIGhpc3Rvcnkgb2Ygc29mdHdhcmUgY2hhbmdlczwvaDM+DQo8cD5UaGUgZm9sbG93aW5nIHNlY3Rpb25zIGxpc3QgdGhlIGNoYW5nZXMgaW4gZWFjaCByZWxlYXNlIHNpbmNlIFhhbGFuLUMrKyB2ZXJzaW9uIDAuNDAuMC48L3A+DQoNCg0KPHAgYWxpZ249InJpZ2h0IiBzaXplPSIyIj4NCjxhIGhyZWY9IiNjb250ZW50Ij4odG9wKTwvYT4NCjwvcD4NCjxoND5DaGFuZ2VzIGZvciBYYWxhbi1DKysgdmVyc2lvbiAxLjExPC9oND4NCjxwPlRoaXMgaXMgYSBnZW5lcmFsIGJ1ZyBmaXggcmVsZWFzZSB3aXRoIGFkZGVkIHN0YWJpbGl0eSBmZWF0dXJlcy48L3A+DQo8cD5NYWpvciB1cGRhdGVzIHNpbmNlIHZlcnNpb24gMS4xMCBpbmNsdWRlOjwvcD4NCjx1bD4NCiAgPGxpPkFkZCBzdXBwb3J0IGZvciBYZXJjZXMtQyAzLjAgYW5kIG5ld2VyPC9saT4NCiAgPGxpPkRyb3Agc3VwcG9ydCBmb3IgTWljcm9zb2Z0IFN0dWRpbyAoVkM2KTwvbGk+DQogIDxsaT5GaXggc3VwcG9ydCBpc3N1ZXMgZm9yIEFJWCA1LjM8L2xpPg0KICA8bGk+Rml4IHN1cHBvcnQgaXNzdWVzIGZvciBTb2xhcmlzIDIuODwvbGk+DQogIDxsaT5GaXggc3VwcG9ydCBpc3N1ZXMgZm9yIEdDQy00LjM8L2xpPg0KICA8bGk+QWRkIHN1cHBvcnQgZm9yIE1pY3Jvc29mdCAuTkVUIDIwMDggKFZDOSkgPC9saT4NCiAgPGxpPkFkZCBzdXBwb3J0IGZvciBNaWNyb3NvZnQgLk5FVCAyMDEwIChWQzEwKTwvbGk+DQogIDxsaT5BZGQgbnVtYmVyIGFuZCBub2Rlc2V0IHR5cGVzIGFzIHRvcC1sZXZlbCBzdHlsZXNoZWV0IHBhcmFtZXRlcnM8L2xpPg0KICA8bGk+DQo8YSBocmVmPSIjYnVnZml4MTEiPkJ1Z3MgZml4ZWQgaW4gdGhpcyByZWxlYXNlPC9hPi48L2xpPg0KPC91bD4NCg0KDQo8cCBhbGlnbj0icmlnaHQiIHNpemU9IjIiPg0KPGEgaHJlZj0iI2NvbnRlbnQiPih0b3ApPC9hPg0KPC9wPg0KPGg0PkNoYW5nZXMgZm9yIFhhbGFuLUMrKyB2ZXJzaW9uIDEuMTA8L2g0Pg0KPHA+TWFqb3IgdXBkYXRlcyBzaW5jZSB2ZXJzaW9uIDEuOSBpbmNsdWRlOjwvcD4NCjx1bD4NCiAgPGxpPlN1cHBvcnQgZm9yIFhNTCAxLjEgYW5kIE5hbWVzcGFjZXMgaW4gWE1MIDEuMS48L2xpPg0KICA8bGk+QWRkZWQgc3VwcG9ydCBmb3IgSUJNIFhMQyA3LjAgY29tcGlsZXIgb24gQUlYLjwvbGk+DQogIDxsaT5JbXByb3ZlZCBhbmQgc3RhYmlsaXplZCBDIHBsdWdnYWJsZSBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlvbmFsaXR5LjwvbGk+IA0KICA8bGk+VmFyaW91cyBpbXByb3ZlbWVudHMgaW4gWGFsYW4gWE1MIHNlcmlhbGl6ZXJzIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UgYW5kIHN0YWJpbGl0eS48L2xpPg0KICA8bGk+VXBncmFkZSBmcm9tIFhlcmNlcy1DIDIuNiB0byBYZXJjZXMtQyAyLjcuPC9saT4NCiA8L3VsPiAgDQogIA0KDQo8cCBhbGlnbj0icmlnaHQiIHNpemU9IjIiPg0KPGEgaHJlZj0iI2NvbnRlbnQiPih0b3ApPC9hPg0KPC9wPg0KPGg0PkNoYW5nZXMgZm9yIFhhbGFuLUMrKyB2ZXJzaW9uIDEuOTwvaDQ+DQo8cD5NYWpvciB1cGRhdGVzIHNpbmNlIHZlcnNpb24gMS44IGluY2x1ZGU6PC9wPg0KPHVsPg0KICA8bGk+UGx1Z2dhYmxlIE1lbW9yeSBNYW5hZ2VtZW50LiAgVGhpcyBmZWF0dXJlIGFsbG93cyBhcHBsaWNhdGlvbnMgdG8gbWFpbnRhaW4gcHJlY2lzZSBjb250cm9sIG92ZXIgbWVtb3J5IGFsbG9jYXRpb25zLiAgVGhpcyANCiAgICAgIHdpbGwgYWxsb3cgdXNlcnMsIHdpdGgga25vd2xlZGdlIG9mIHRoZWlyIGFwcGxpY2F0aW9uJ3MgY2hhcmFjdGVyaXN0aWNzLCB0byBwcm92aWRlIGEgbW9yZSBlZmZpY2llbnQgYWxsb2NhdGlvbiBtZXRob2QgDQogICAgICB0aGFuIHRoZSBnZW5lcmFsIHB1cnBvc2UgcHJvY2VkdXJlcyBwcm92aWRlZCBieSB0aGUgc3lzdGVtLiAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGlzIGZlYXR1cmUsIHBsZWFzZSBzZWUNCiAgICAgIHRoZSA8YSBocmVmPSJwcm9ncmFtbWluZy5odG1sI21lbW9yeSI+UGx1Z2dhYmxlIE1lbW9yeSBNYW5hZ2VtZW50PC9hPiBzZWN0aW9uIG9mIHRoZSBQcm9ncmFtbWluZyBwYWdlLjwvbGk+DQogIDxsaT5JbXByb3ZlZCBzdGFiaWxpdHkgb24gdGhlIGV4ZWN1dGlvbiBvZiBsYXJnZSBzdHlsZXNoZWV0cyBhbmQgWE1MIGRvY3VtZW50cy4gIEJlY2F1c2UgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gcmVsaWVzIG9uIA0KICAgICAgZnVuY3Rpb24gcmVjdXJzaW9uLCBjZXJ0YWluIHN0eWxlc2hlZXRzL2lucHV0IGRvY3VtZW50cyBtYXkgY2F1c2UgdGhlIHByb2dyYW0gc3RhY2sgdG8gb3ZlcmZsb3cgYW5kIGNhdXNlIHRoZSBhcHBsaWNhdGlvbiANCiAgICAgIHRvIGZhaWwuICBJdCBhbHNvIG1heSBpbmhpYml0IGV4ZWN1dGluZyBzdHlsZXNoZWV0cyB0aGF0IGFyZSBoZWF2aWx5IGRlcGVuZGVudCBvbiByZWN1cnNpdmUgZnVuY3Rpb25zLiAgVGhpcyBmZWF0dXJlIHdpbGwgDQogICAgICBwcmV2ZW50IHRoZXNlIHR5cGVzIG9mIGZhaWx1cmUuIDwvbGk+DQogIDxsaT5Qcm92aWRlZCBhIGdsb2JhbCBvcHRpb24gdG8gcG9vbCBhbGwgdGV4dCBub2RlIHN0cmluZ3MuICBUaGlzIGZlYXR1cmUgYWxsb3dzIGRldmVsb3BlcnMgdG8gc2V0IGEgZmxhZyB0byBkZXRlcm1pbmUgaWYgYSANCiAgICAgIHBhcnNlZCBzb3VyY2UgdHJlZSB3aWxsIHBvb2wgdGhlIHZhbHVlcyBvZiBhbGwgb2YgdGhlIHRleHQgbm9kZXMgaW4gdGhlIFhNTCBkb2N1bWVudC4gIEJ5IGRvaW5nIHNvLCB0aGlzIGNhbiByZXN1bHQgaW4gYSANCiAgICAgIHNpZ25pZmljYW50IHJlZHVjdGlvbiBpbiBtZW1vcnkgdXNhZ2UsIHBhcnRpY3VsYXJseSBpZiB0aGVyZSBhcmUgYSBsb3Qgb2YgcmVwZWF0ZWQgdmFsdWVzIGluIHRleHQgbm9kZXMuICBQbGVhc2Ugc2VlIA0KICAgICAgdGhlIGNsYXNzIGRlc2NyaXB0aW9ucyBmb3IgPGEgaHJlZj0iYXBpRG9jcy9jbGFzc1hhbGFuU291cmNlVHJlZURvY3VtZW50Lmh0bWwiPlhhbGFuU291cmNlVHJlZURvY3VtZW50PC9hPiwgIA0KICAgICAgPGEgaHJlZj0iYXBpRG9jcy9jbGFzc1hhbGFuRGVmYXVsdFBhcnNlZFNvdXJjZS5odG1sIj5YYWxhbkRlZmF1bHRQYXJzZWRTb3VyY2U8L2E+LCBhbmQNCiAgICAgIDxhIGhyZWY9ImFwaURvY3MvY2xhc3NYYWxhblRyYW5zZm9ybWVyLmh0bWwiPlhhbGFuVHJhbnNmb3JtZXI8L2E+IGluIHRoZSA8YSBocmVmPSJhcGlEb2NzL2luZGV4Lmh0bWwiPg0KICAgICAgQVBJIFJlZmVyZW5jZTwvYT4gc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi48L2xpPiANCiAgPGxpPkFkZGVkIHN1cHBvcnQgZm9yIE1pY3Jvc29mdCBTdHVkaW8gLk5FVCBWNy4xLiAgUHJvamVjdCBmaWxlcyBmb3IgTWljcm9zb2Z0IFN0dWRpbyAuTkVUIFY3LjEgaGF2ZSBiZWVuIHByb3ZpZGVkIHVuZGVyIHRoZSANCiAgICAgIGRpcmVjdG9yeSB4bWwteGFsYW5cY1xQcm9qZWN0c1xXaW4zMlxWQzcuMS48L2xpPg0KICA8bGk+VXBncmFkZSBmcm9tIFhlcmNlcy1DIDIuNSB0byBYZXJjZXMtQyAyLjYuIDwvbGk+DQogPC91bD4gIA0KDQoNCiAgIDxwIGFsaWduPSJyaWdodCIgc2l6ZT0iMiI+DQo8YSBocmVmPSIjY29udGVudCI+KHRvcCk8L2E+DQo8L3A+DQo8aDQ+Q2hhbmdlcyBmb3IgWGFsYW4tQysrIHZlcnNpb24gMS44PC9oND4NCiAgICAgPHA+TWFqb3IgdXBkYXRlcyBzaW5jZSB2ZXJzaW9uIDEuNyBpbmNsdWRlOjwvcD4NCiAgICAgPHVsPg0KICAgICAgPGxpPlVwZ3JhZGUgZnJvbSBYZXJjZXMtQyAyLjQgdG8gWGVyY2VzLUMgMi41LiA8L2xpPg0KICAgICAgPGxpPlByb3ZpZGUgYnVpbGQgc3VwcG9ydCBmb3IgQ3lnd2luIGFuZCBIUC1VWCAxMS4wMCBvbiBJdGFuaXVtLiAgQWx0aG91Z2ggYmluYXJ5IGRpc3RyaWJ1dGlvbnMgYXJlIG5vdCBwcm92aWRlZCBmb3IgdGhlIEN5Z3dpbiBlbnZpcm9ubWVudCBhbmQgDQogICAgICAgICAgSFAtVVggMTEuMDAgb24gSXRhbml1bSBwbGF0Zm9ybSwgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gZmlsZXMgcHJvdmlkZWQgaW4gdGhlIHNvdXJjZSBkaXN0cmlidXRpb24gY2FuIGJlIHVzZWQgdG8gYnVpbGQgb24gdGhlc2UgcGxhdGZvcm1zLiA8L2xpPg0KICAgICAgPGxpPlByb2plY3QgZmlsZXMgZm9yIHN1cHBvcnRpbmcgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gLk5FVC4gIEFsdGhvdWdoIGEgYmluYXJ5IGRpc3RyaWJ1dGlvbiBmb3IgdGhlIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIC5ORVQgDQogICAgICAgICAgaXMgbm90IHByb3ZpZGVkIGluIHRoaXMgcmVsZWFzZSwgVmlzdWFsIFN0dWRpbyBzb2x1dGlvbiBmaWxlcyBhcmUgcHJvdmlkZWQgaW4gdGhlIFdpbmRvd3Mgc291cmNlIGRpc3RyaWJ1dGlvbiBmb3IgdGhvc2Ugd2hvIGNob29zZSB0byBidWlsZA0KICAgICAgICAgIG9uIHRoaXMgcGxhdGZvcm0uICBQbGVhc2Ugc2VlIDxhIGhyZWY9ImJ1aWxkX2luc3RydWN0Lmh0bWwjZG90TmV0Ij4iU3RlcCBmb3IgZG9pbmcgYSBXaW5kb3dzIEJ1aWxkIHdpdGggVmlzdWFsIFN0dWRpbyAuTkVUIjwvYT4gDQogICAgICAgICAgZm9yIGRldGFpbHMuPC9saT4NCiAgICAgIDxsaT5BZGRpdGlvbmFsIGNoYW5nZXMgdG8gWGVyY2VzIERlcHJlY2F0ZWQgRE9NIHN1cHBvcnQuICBUaGlzIGlzIGFub3RoZXIgc3RlcCB0b3dhcmRzIHBoYXNpbmcgb3V0IHRoZSBzdXBwb3J0IGZvciBYZXJjZXMgRGVwcmVjYXRlZCBET00uICBVc2VycyANCiAgICAgICAgICBhcmUgZW5jb3VyYWdlZCB0byBtb2RpZnkgdGhlaXIgYXBwbGljYXRpb25zIHRvIGludGVyZmFjZSB3aXRoIHRoZSBuZXcgWGVyY2VzIERPTSBzdXBwb3J0LiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIGVmZmVjdHMgb2YgdGhlc2UgDQogICAgICAgICAgY2hhbmdlcyB0byB5b3VyIGJ1aWxkIGVudmlyb25tZW50LCBwbGVhc2Ugc2VlIDxhIGhyZWY9IiN4ZXJjZXNkZXBkb20iPiJTdGVwcyBmb3IgZG9pbmcgYSBCdWlsZCB3aXRoIFhlcmNlcyBEZXByZWNhdGVkIERPTSBTdXBwb3J0Ig0KICAgICAgICAgIDwvYT4NCjwvbGk+DQogICAgICANCiAgICAgIDxsaT5JbXBsZW1lbnRlZCBvcHRpbWl6YXRpb25zIHRvIHNpZ25pZmljYW50bHkgaW1wcm92ZSB0aGUgdGhyb3VnaHB1dCBvZiB0aGUgSUNVLWVuYWJsZWQgImZvcm1hdC1udW1iZXIiIGZ1bmN0aW9uLjwvbGk+DQogICAgICA8bGk+Q2hhbmdlcyBpbiB0aGUgWE1MIFNlcmlhbGl6ZXIuIFRoZSBzZXJpYWxpemVyIHdpbGwgbm8gbG9uZ2VyIHB1dCBhIG5ld2xpbmUgYWZ0ZXIgdGhlIHhtbCBoZWFkZXIgdGFnIHVubGVzcyBpbmRlbnQ9InllcyIuPC9saT4NCg0KICAgICA8L3VsPiAgDQogICAgIA0KICAgPHAgYWxpZ249InJpZ2h0IiBzaXplPSIyIj4NCjxhIGhyZWY9IiNjb250ZW50Ij4odG9wKTwvYT4NCjwvcD4NCjxoND5DaGFuZ2VzIGZvciBYYWxhbi1DKysgdmVyc2lvbiAxLjc8L2g0Pg0KICAgICA8cD5NYWpvciB1cGRhdGVzIHNpbmNlIHZlcnNpb24gMS42IGluY2x1ZGU6PC9wPg0KICAgICA8dWw+DQogICAgICA8bGk+TWVzc2FnZSBMb2NhbGl6YXRpb24gU3VwcG9ydC4gVGhpcyBmZWF0dXJlIGVuYWJsZXMgWGFsYW4tQysrIHRvIGlzc3VlIGRpYWdub3N0aWMgbWVzc2FnZXMgDQogICAgICBpbiBsYW5ndWFnZXMgb3RoZXIgdGhhbiB0aGUgZGVmYXVsdCBsYW5ndWFnZSAoRW5nbGlzaCkuIEluIG9yZGVyIHRvIHV0aWxpemUgdGhpcyBmZWF0dXJlLCANCiAgICAgIHRoZSB1c2VyIG11c3QgcHJvdmlkZSBhIHZlcnNpb24gb2YgdGhlIFhhbGFuLUMrKyBtZXNzYWdlIGNhdGFsb2cgdGhhdCBoYXMgYmVlbiB0cmFuc2xhdGVkIGluIA0KICAgICAgdGhlaXIgbGFuZ3VhZ2Ugb2YgY2hvaWNlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZXhwbG9pdCB0aGlzIGZlYXR1cmUsIHBsZWFzZSBzZWUgIA0KICAgICAgPGEgaHJlZj0iI2xvY2FsZSI+U3RlcHMgZm9yIGRvaW5nIGEgQnVpbGQgd2l0aCBNZXNzYWdlIExvY2FsaXphdGlvbiBTdXBwb3J0PC9hPi48L2xpPg0KICAgICAgPGxpPkJ1aWxkLCBwYWNrYWdpbmcsIGFuZCBpbnN0YWxsYXRpb24gaW1wcm92ZW1lbnRzLiBDaGFuZ2VzIHRvIHRoZSBYYWxhbi1DKysgbWFrZWZpbGVzIG5vdyANCiAgICAgIGFsbG93IGZvciBhIG1vcmUgZmxleGlibGUgYnVpbGQsIHBhY2thZ2luZywgYW5kIGluc3RhbGwgcHJvY2Vzcy4gRWFjaCBzdGVwIGluIGEgdHlwaWNhbCANCiAgICAgIGJ1aWxkIHByb2Nlc3MgY2FuIGJlIGludm9rZWQgYnkgc3BlY2lmeWluZyB0aGUgYXBwcm9wcmlhdGUgdGFyZ2V0LCBmb3IgZXhhbXBsZSB0byBidWlsZCB0aGUgDQogICAgICBleGVjdXRhYmxlLCBhbmQvb3Igc2FtcGxlcywgb3IgaW5zdGFsbCB0aGUgYnVpbGQgYXQgdXNlci1zcGVjaWZpZWQgbG9jYXRpb24uIEZvciBtb3JlIA0KICAgICAgaW5mb3JtYXRpb24gb24gYnVpbGRpbmcgWGFsYW4tQysrLCBwbGVhc2Ugc2VlIDxhIGhyZWY9IiN1bml4Ij5TdGVwcyBmb3IgZG9pbmcgYSBVbml4IGJ1aWxkDQogICAgICA8L2E+LjwvbGk+DQogICAgICA8bGk+RGVwcmVjYXRlZCBET00gU3VwcG9ydC4gVGhlIFhlcmNlc0JyaWRnZSBjbGFzc2VzIGhhdmUgYmVlbiBtYXJrZWQgZGVwcmVjYXRlZCBhbmQgbW92ZWQgDQogICAgICBpbnRvIGFuIGV4Y2x1c2l2ZSBkaXJlY3Rvcnkgd2l0aGluIHRoZSB4YWxhbmMvWGVyY2VzUGFyc2VyTGlhaXNvbiBkaXJlY3RvcnkgY2FsbGVkIA0KICAgICAgJ0RlcHJlY2F0ZWQnLiBJZiB5b3VyIGFwcGxpY2F0aW9uIGlzIGRlcGVuZGVudCBvbiB0aGVzZSBjbGFzc2VzIHRvIGludGVyZmFjZSB3aXRoIHRoZSANCiAgICAgIGRlcHJlY2F0ZWQgWGVyY2VzIERPTSB5b3UgbXVzdCBhbHRlciB5b3VyIGluY2x1ZGUgZGlyZWN0aXZlIHdpdGggdGhlICdEZXByZWNhdGVkJyBkaXJlY3RvcnkuIA0KICAgICAgRm9yIGV4YW1wbGU6PGJyIC8+DQo8YnIgLz4NCiAgICAgIDxjb2RlPiNpbmNsdWRlICJ4YWxhbmMvWGVyY2VzUGFyc2VyTGlhaXNvbi9YZXJjZXNEb2N1bWVudEJyaWRnZS5ocHAiPC9jb2RlPg0KPGJyIC8+DQo8YnIgLz4NCiAgICAgIHNob3VsZCBiZSBjaGFuZ2VkIHRvOjxiciAvPg0KPGJyIC8+DQogICAgICA8Y29kZT4jaW5jbHVkZSAieGFsYW5jL1hlcmNlc1BhcnNlckxpYWlzb24vRGVwcmVjYXRlZC9YZXJjZXNEb2N1bWVudEJyaWRnZS5ocHAiPC9jb2RlPg0KPGJyIC8+DQo8YnIgLz4NCjwvbGk+DQogICAgICA8bGk+VXBncmFkZSBmcm9tIFhlcmNlcy1DIDIuMyB0byBYZXJjZXMtQyAyLjQuIDwvbGk+DQogICAgICA8bGk+UG9ydGluZyBvZiBUaHJlYWRTYWZlIGV4YW1wbGUgdG8gVU5JWCBwbGF0Zm9ybS48L2xpPg0KICAgICAgPGxpPkltcGxlbWVudGF0aW9uIG9mIEVYU0xUIHN0cmluZyBleHRlbnNpb24gZnVuY3Rpb25zIGVuY29kZS11cmkoKSBhbmQgZGVjb2RlLXVyaSgpLiA8L2xpPg0KICAgICAgPGxpPkltcGxlbWVudGF0aW9uIG9mIEVYU0xUIGR5bmFtaWMgZXh0ZW5zaW9uIGZ1bmN0aW9uIGV2YWx1YXRlKCkuIDwvbGk+DQogICAgICA8bGk+SW1wbGVtZW50YXRpb24gb2YgRVhTTFQgZGF0ZS10aW1lIGV4dGVuc2lvbiBmdW5jdGlvbiBkYXRlLXRpbWUoKS48L2xpPg0KICAgICA8L3VsPiAgDQogICAgIA0KDQogICA8cCBhbGlnbj0icmlnaHQiIHNpemU9IjIiPg0KPGEgaHJlZj0iI2NvbnRlbnQiPih0b3ApPC9hPg0KPC9wPg0KPGg0PkNoYW5nZXMgZm9yIFhhbGFuLUMrKyB2ZXJzaW9uIDEuNjwvaDQ+DQogICAgIDxwPk1ham9yIHVwZGF0ZXMgc2luY2UgdmVyc2lvbiAxLjUgaW5jbHVkZTo8L3A+DQogICAgIDx1bD4NCgk8bGk+RGlyZWN0b3J5ICJzYW5lIGluY2x1ZGUiIHJlb3JnYW5pemF0aW9uLiAgQSBuZXcgc3ViLWRpcmVjdG9yeSBjYWxsZWQgJ3hhbGFuYycgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIHNyYyBkaXJlY3RvcnkgKGZvciBzb3VyY2UgZGlzdHJpYnV0aW9uIHBhY2thZ2VzKSBhbmQgaW5jbHVkZSBkaXJlY3RvcnkgKGZvciBiaW5hcnkgZGlzdHJpYnV0aW9uIHBhY2thZ2VzKS4gIE5ldyBzb3VyY2UgZmlsZXMgd2hpY2ggaW5jbHVkZSBYYWxhbiBoZWFkZXJzIHdpbGwgbmVlZCB0byBiZSBtb2RpZmllZCB0byBpbmNsdWRlIHRoZSAneGFsYW5jJyBwcmVmaXggaW4gdGhlIGhlYWRlciBwYXRoLiAgDQogICAgICAgICAgICBGb3IgZXhhbXBsZTogPGJyIC8+DQo8YnIgLz4NCiAgICAgICAgICAgIDxjb2RlPiNpbmNsdWRlICZsdDtYUGF0aC9YT2JqZWN0LmhwcCZndDs8L2NvZGU+DQo8YnIgLz4NCjxiciAvPg0KICAgICAgICAgICAgd2lsbCBuZWVkIHRvIGJlIGNoYW5nZWQgdG8gPGJyIC8+DQo8YnIgLz4NCiAgICAgICAgICAgIDxjb2RlPiNpbmNsdWRlICZsdDt4YWxhbmMvWFBhdGgvWE9iamVjdC5ocHAmZ3Q7PC9jb2RlPg0KPGJyIC8+DQo8YnIgLz4NCiAgICAgICAgICAgIEZvciBXaW5kb3dzIHVzZXJzLCBhbGwgcHJvamVjdCBmaWxlcyBoYXZlIGJlZW4gbW9kaWZpZWQgdG8gcmVmbGVjdCB0aGlzIGNoYW5nZS4gIEZvciBVTklYIHVzZXJzLCBwbGVhc2Ugc2VlIDxhIGhyZWY9IiN1bml4Ij5TdGVwcyBmb3IgZG9pbmcgYSBVTklYIGJ1aWxkPC9hPiBmb3IgbWlncmF0aW9uIGNvbnNpZGVyYXRpb25zLjwvbGk+DQogICAgIDwvdWw+ICANCiAgICAgDQoNCiAgIDxwIGFsaWduPSJyaWdodCIgc2l6ZT0iMiI+DQo8YSBocmVmPSIjY29udGVudCI+KHRvcCk8L2E+DQo8L3A+DQo8aDQ+Q2hhbmdlcyBmb3IgWGFsYW4tQysrIHZlcnNpb24gMS41PC9oND4NCiAgICAgPHA+TWFqb3IgdXBkYXRlcyBzaW5jZSB2ZXJzaW9uIDEuNCBpbmNsdWRlOjwvcD4NCiAgICAgPHVsPg0KCTxsaT5Gb3IgV2luZG93cywgWGFsYW4tQysrIGlzIG5vdyBwYWNrYWdlZCBhcyBhIHNpbmdsZSBETEwuICBUaGUgcHJvamVjdCBmaWxlcyB0byBidWlsZCBzZXBhcmF0ZSBETExzIGFyZSBub3cgZGVwcmVjYXRlZCBhbmQgd2lsbCBub3QgYmUgbWFpbnRhaW5lZC48L2xpPg0KCTxsaT5TdXBwb3J0IGZvciBYZXJjZXMtQysrIERPTU5vZGUgY2xhc3Nlcy48L2xpPg0KCTxsaT5OZXcgc2FtcGxlIDxiPlRyYW5zZm9ybVRvWGVyY2VzRE9NPC9iPiB0aGF0IGlsbHVzdHJhdGVzIGhvdyB0byBwZXJmb3JtIGEgdHJhbnNmb3JtIHJlc3VsdGluZyBpbiBhIFhlcmNlcy1DKysgRE9NRG9jdW1lbnQ8L2xpPg0KCTxsaT5Vc2FnZSBvZiB0aGUgWGVyY2VzLUMrKyBDKysgbmFtZXNwYWNlIGFuZCBjcmVhdGlvbiBvZiBYYWxhbi1DKysgbmFtZXNwYWNlLjwvbGk+DQogICAgIDwvdWw+ICANCiAgICAgDQogICA8cCBhbGlnbj0icmlnaHQiIHNpemU9IjIiPg0KPGEgaHJlZj0iI2NvbnRlbnQiPih0b3ApPC9hPg0KPC9wPg0KPGg0PkNoYW5nZXMgZm9yIFhhbGFuLUMrKyB2ZXJzaW9uIDEuNDwvaDQ+DQogICAgIDxwPk1ham9yIHVwZGF0ZXMgc2luY2UgdmVyc2lvbiAxLjMgaW5jbHVkZTo8L3A+DQogICAgIDx1bD4NCiAgICAgICA8bGk+VGhlIFhhbGFuLUMrKyBkaXN0cmlidXRpb25zIG5vIGxvbmdlciBpbmNsdWRlIHRoZSBYZXJjZXMtQysrIGhlYWRlcnMgYW5kIGxpYnJhcmllcy4gQWNjb3JkaW5nbHksIHlvdSBtdXN0IGRvd25sb2FkIHRoZSBhcHByb3ByaWF0ZSBYZXJjZXMtQysrIGRpc3RyaWJ1dGlvbiAoc2VlIDxhIGhyZWY9ImdldHN0YXJ0ZWQuaHRtbCNkb3dubG9hZCI+RG93bmxvYWRpbmcgd2hhdCB5b3UgbmVlZDwvYT4uPC9saT4NCiAgICAgICA8bGk+NjQtYml0IGJ1aWxkIGZvciBIUC0xMTsgPGEgaHJlZj0iIzY0Ij51bnRlc3RlZCA2NC1iaXQgc3VwcG9ydDwvYT4gZm9yIFNvbGFyaXMgYW5kIEFJWC48L2xpPg0KICAgICAgIDxsaT5OZXcgTGludXggcGxhdGZvcm0gYW5kIGNvbXBpbGVyOiBSZWRoYXQgNy4yIHdpdGggZ2NjIDMuMS48L2xpPg0KICAgICAgIDxsaT4NCjxhIGhyZWY9Imh0dHA6Ly93d3cuc3RscG9ydC5vcmcvIj5TVExwb3J0PC9hPiBpcyBubyBsb25nZXIgcmVxdWlyZWQgb24gYW55IG9mIG91ciBzdXBwb3J0ZWQgcGxhdGZvcm1zLjwvbGk+IA0KICAgICAgIDxsaT4NCjxhIGhyZWY9ImV4dGVuc2lvbnNsaWIuaHRtbCNleHNsdCI+QWxwaGEgc3VwcG9ydCBmb3IgYSBudW1iZXIgb2YgRVhTTFQgZnVuY3Rpb25zPC9hPi48L2xpPiAgICAgICANCiAgICAgICA8bGk+DQo8YSBocmVmPSJzYW1wbGVzLmh0bWwjcGFyc2Vkc291cmNld3JhcHBlcnMiPlBhcnNlZFNvdXJjZVdyYXBwZXJzPC9hPiwgYSBzYW1wbGUgdGhhdA0KICAgICAgIGlsbHVzdHJhdGVzIGhvdyB0byBwZXJmb3JtIHRyYW5zZm9ybWF0aW9ucyB3aXRoIGlucHV0IGluIHRoZSBmb3JtIG9mIGEgcHJlLWJ1aWx0DQogICAgICAgWGFsYW5ET00gb3IgWGFsYW5Tb3VyY2VUcmVlLjwvbGk+DQogICAgIDwvdWw+ICANCiAgICAgDQogIDxwIGFsaWduPSJyaWdodCIgc2l6ZT0iMiI+DQo8YSBocmVmPSIjY29udGVudCI+KHRvcCk8L2E+DQo8L3A+DQo8aDQ+Q2hhbmdlcyBmb3IgWGFsYW4tQysrIHZlcnNpb24gMS4zPC9oND4NCiAgICA8cD5NYWpvciB1cGRhdGVzIHNpbmNlIHZlcnNpb24gMS4yIGluY2x1ZGU6PC9wPg0KICAgICA8dWw+DQogICAgICAgPGxpPkEgbmV3IGFuZCBzaW1wbGlmaWVkIGNvbW1hbmQtbGluZSB1dGlsaXR5OiA8YSBocmVmPSJjb21tYW5kbGluZS5odG1sI3hhbGFuZXhlIj50aGUgWGFsYW4gZXhlY3V0YWJsZTwvYT4NCjwvbGk+DQogICAgICAgPGxpPk5ldyBYUGF0aCBzYW1wbGVzIGV4cGxvaXRpbmcgdGhlIFhQYXRoRXZhbHVhdG9yIEMgQVBJIGFuZCBpbGx1c3RyYXRpbmcgc2VyaWFsaXphdGlvbiBvZiBhbiBYUGF0aCByZXN1bHQgc2V0OiA8YSBocmVmPSJzYW1wbGVzLmh0bWwjc2ltcGxleHBhdGhjYXBpIj5TaW1wbGVYUGF0aENBUEk8L2E+IGFuZCA8YSBocmVmPSJzYW1wbGVzLmh0bWwjc2VyaWFsaXplbm9kZXNldCI+U2VyaWFsaXplTm9kZVNldDwvYT4NCjwvbGk+DQogICAgICAgPGxpPkEgbmV3IDxhIGhyZWY9InVzYWdlcGF0dGVybnMuaHRtbCN4ZXJjZXNkb213cmFwcGVycGFyc2Vkc291cmNlIj53cmFwcGVyIGNsYXNzPC9hPiB0aGF0IGxldHMgeW91IHBhc3MgaW4gYSBYZXJjZXMgRE9NIGFzIGlucHV0IGZvciBhIHRyYW5zZm9ybWF0aW9uPC9saT4NCiAgICAgICA8bGk+QnVnIGZpeGVzLjwvbGk+DQogICAgICAgPGxpPkNoYW5nZWQgWFBhdGhFeGNlcHRpb24gdG8gWGFsYW5YUGF0aEV4Y2VwdGlvbiBiZWNhdXNlIG9mIGEgY2xhc2ggd2l0aCBhIG5ldyBYZXJjZXMgY2xhc3Mgb2YgdGhlIHNhbWUgbmFtZS48L2xpPg0KICAgICAgPC91bD4NCiAgICAgDQogIDxwIGFsaWduPSJyaWdodCIgc2l6ZT0iMiI+DQo8YSBocmVmPSIjY29udGVudCI+KHRvcCk8L2E+DQo8L3A+DQo8aDQ+Q2hhbmdlcyBmb3IgWGFsYW4tQysrIHZlcnNpb24gMS4yPC9oND4NCiAgICA8cD5NYWpvciB1cGRhdGVzIHNpbmNlIHZlcnNpb24gMS4xIGluY2x1ZGU6PC9wPg0KICAgICA8dWw+DQogICAgICA8bGk+DQo8YSBocmVmPSJleHRlbnNpb25zbGliLmh0bWwiPkludHJvZHVjdGlvbiBvZiBhIGxpYnJhcnkgb2YgZXh0ZW5zaW9uIGZ1bmN0aW9uczwvYT4NCjwvbGk+DQogICAgICA8bGk+U3VwcG9ydCBmb3IgcHJlLXBhcnNlZCBzb3VyY2UgZG9jdW1lbnRzIGFuZCBwcmUtY29tcGlsZWQgc3R5bGVzaGVldHMgaW4gDQogICAgICA8YSBocmVmPSJhcGlEb2NzL2NsYXNzWGFsYW5UcmFuc2Zvcm1lci5odG1sIj5YYWxhblRyYW5zZm9ybWVyPC9hPiBhbmQgdGhlIEMgQVBJLjwvbGk+DQogICAgICA8bGk+U3VwcG9ydCBmb3Igc3R5bGVzaGVldCBwYXJhbXMgaW4gPGEgaHJlZj0iYXBpRG9jcy9jbGFzc1hhbGFuVHJhbnNmb3JtZXIuaHRtbCI+WGFsYW5UcmFuc2Zvcm1lcjwvYT4gDQogICAgICBhbmQgdGhlIEMgQVBJPC9saT4NCiAgICAgIDxsaT5TdXBwb3J0IGZvciBleHRlbnNpb24gZnVuY3Rpb25zIGluIDxhIGhyZWY9ImFwaURvY3MvY2xhc3NYYWxhblRyYW5zZm9ybWVyLmh0bWwiPlhhbGFuVHJhbnNmb3JtZXI8L2E+DQo8L2xpPg0KICAgICAgPGxpPlBlcmZvcm1hbmNlIGVuaGFuY2VtZW50czwvbGk+DQogICAgICA8L3VsPg0KICAgICANCiAgIDxwIGFsaWduPSJyaWdodCIgc2l6ZT0iMiI+DQo8YSBocmVmPSIjY29udGVudCI+KHRvcCk8L2E+DQo8L3A+DQo8aDQ+Q2hhbmdlcyBmb3IgWGFsYW4tQysrIHZlcnNpb24gMS4xPC9oND4NCiAgIDxwPkluIGFkZGl0aW9uIHRvIGFkZGluZyB0byB0aGUgbGlzdCBvZiBwbGF0Zm9ybXMgb24gd2hpY2ggWGFsYW4tQysrIGJ1aWxkcywgb3VyIGZvY3VzIGZvciB0aGlzIHJlbGVhc2UgaGFzIGJlZW4gb24gYnVnIGZpeGVzLCBwZXJmb3JtYW5jZSBlbmhhbmNlbWVudHMsIA0KICAgICAgYW5kIHByb3ZpZGluZyBhIHNpbXBsaWZpZWQgQysrIGFuZCBDIEFQSSBmb3IgcGVyZm9ybWluZyBzdGFuZGFyZCB0cmFuc2Zvcm1hdGlvbnMuIE1ham9yIHVwZGF0ZXMgc2luY2UgdmVyc2lvbiAxLjAgaW5jbHVkZTo8L3A+DQogICA8dWw+DQogICAgIDxsaT5BZGRlZCBIUC1VWCAxMSBidWlsZC48L2xpPg0KICAgICA8bGk+QWRkZWQgU29sYXJpcyBidWlsZC48L2xpPg0KICAgICA8bGk+R3JlYXRseSBpbXByb3ZlZCBwZXJmb3JtYW5jZS48L2xpPg0KICAgICA8bGk+SW1wcm92ZWQgY29uZm9ybWFuY2UgdG8gdGhlIFhTTFQgc3BlY2lmaWNhdGlvbi48L2xpPg0KICAgICA8bGk+U2ltcGxpZmllZCB0aGUgQysrIEFQSSBhbmQgcHJvdmlkZWQgYSBDIEFQSSBmb3IgcGVyZm9ybWluZyBzdGFuZGFyZCB0cmFuc2Zvcm1hdGlvbnMgd2l0aCB0aGUgPGEgaHJlZj0idXNhZ2VwYXR0ZXJucy5odG1sI3hhbGFudHJhbnNmb3JtZXIiPlhhbGFuVHJhbnNmb3JtZXI8L2E+IGNsYXNzIGFuZCBhc3NvY2lhdGVkIGhlYWRlciBmaWxlcy48L2xpPg0KICAgICA8bGk+QWRkZWQgc2FtcGxlIGlsbHVzdHJhdGluZyB1c2Ugb2YgWGFsYW5UcmFuc2Zvcm1lciBhbmQgdGhlIG5ldyBDKysgQVBJOiANCiAgICAgICAgIDxhIGhyZWY9InNhbXBsZXMuaHRtbCN4YWxhbnRyYW5zZm9ybSI+WGFsYW5UcmFuc2Zvcm08L2E+LjwvbGk+IA0KICAgICA8bGk+QWRkZWQgc2FtcGxlIGlsbHVzdHJhdGluZyB1c2Ugb2YgWGFsYW5UcmFuc2Zvcm1lciwgdGhlIG5ldyBDIEFQSSwgYW5kIGhvdyB0byBydW4gWGFsYW4tQysrIGFuZCBwZXJmb3JtIHRyYW5zZm9ybWF0aW9ucyBvbiBhbiANCiAgICAgICAgIEFwYWNoZSBXZWIgc2VydmVyOiA8YSBocmVmPSJzYW1wbGVzLmh0bWwjYXBhY2hlbW9kdWxleHNsdCI+QXBhY2hlTW9kdWxlWFNMVDwvYT4uPC9saT4NCiAgICAgPGxpPkFkZGVkIHRoZSA8YSBocmVmPSJzYW1wbGVzLmh0bWwjc3RyZWFtdHJhbnNmb3JtIj5TdHJlYW1UcmFuc2Zvcm08L2E+IHNhbXBsZS48L2xpPg0KICAgICA8bGk+RWxpbWluYXRlZCBkZXBlbmRlbmNpZXMgb24gbm9uLXB1YmxpYyBYZXJjZXMgaGVhZGVyczsgYWNjb3JkaW5nbHkgY2FuIG5vdyBidWlsZCB3aXRoIHRoZSBYZXJjZXMgZGlzdHJpYnV0aW9uLjwvbGk+DQogICAgIDxsaT5GaXhlZCBuYW1lc3BhY2UgbWFwcGluZyBhbmQgaW5oZXJpdGFuY2UgcHJvYmxlbXMuPC9saT4NCiAgICAgPGxpPkZpeGVkIGZhaWx1cmUgb2YgJmx0O2NvcHktb2YgLi4uJmd0OyB0byBpbmNsdWRlIENSTEZzIChpZiBhbnkpIGluIHRoZSByZXN1bHQuPC9saT4NCiAgICAgPGxpPkZpeGVkIGJ1ZyBzb3J0aW5nIGluIHJldmVyc2UgZG9jdW1lbnQgb3JkZXIgYmFzZWQgb24gcG9zaXRpb24uIDwvbGk+DQogICAgIDxsaT5GaXhlZCAmbHQ7eHNsOm51bWJlciZndDsgYnVnIHdpdGggdXNlIG9mIGxldHRlci12YWx1ZT0idHJhZGl0aW9uYWwiIGZvciAiY2xhc3NpY2FsIiBHcmVlayBudW1iZXJpbmcuPC9saT4NCiAgICAgPGxpPkZpeGVkIHVzZSBvZiAmbHQ7eHNsOmZhbGxiYWNrJmd0OyB3aXRoaW4gYSB0b3AtbGV2ZWwgZXh0ZW5zaW9uIGZ1bmN0aW9uLjwvbGk+DQogICAgIDxsaT5GaXhlZCBIVE1MIG91dHB1dCBtZXRob2QgYnVnLiBUaGUgJmx0O0hFQUQmZ3Q7IGVsZW1lbnQgd2FzIG5vdCBpbmNsdWRpbmcgYSAmbHQ7TUVUQSZndDsgdGFnIHdpdGggdGhlIGVuY29kaW5nLjwvbGk+DQogICAgIDxsaT5GaXhlZCBidWcgdXNpbmcga2V5KCkgaW4gbWF0Y2ggcGF0dGVybnMgdG8gZmluZCBkZXNjZW5kYW50cy48L2xpPg0KICAgICA8bGk+Rml4ZWQgYnVnIHVzaW5nIHRoZSBpZCgpIGZ1bmN0aW9uIGluIGNvbXBsZXggbWF0Y2ggcGF0dGVybnMuPC9saT4NCiAgICAgPGxpPkZpeGVkIHByb2JsZW0gb3V0cHV0dGluZyBtdWx0aXBsZSBzaW5nbGUtY2hhcmFjdGVyIENEQVRBIHNlY3Rpb25zLjwvbGk+DQogICAgIDxsaT5GaXhlZCBwcm9ibGVtIG91dHB1dHRpbmcgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzLjwvbGk+DQogICAgIDxsaT5GaXhlZCBwcm9ibGVtIHRyYW5zZm9ybWluZyBmcm9tIGEgc3RyZWFtIG9uIFVOSVggcGxhdGZvcm1zLjwvbGk+DQogICAgIDxsaT5GaXhlZCBhIGJ1ZyB3aXRoIHRoZSBkb2N1bWVudCgpIGZ1bmN0aW9uLCB3aGljaCB3YXMgZ2VuZXJhdGluZyBhIHN5bnRheCBlcnJvciBpZiBjYWxsZWQgaW4gdGhlIGZvbGxvd2luZyBtYW5uZXI6IGRvY3VtZW50KDxiPg0KPGk+c3RyaW5nPC9pPg0KPC9iPiwvKS48L2xpPg0KICAgICA8bGk+Rml4ZWQgbmFtZWQgdGVtcGxhdGVzIGJ1ZyBhY2NlcHRpbmcgZ2xvYmFsIHBhcmFtZXRlciB3aGVuIGNhbGxlZCB3aXRoIGEgcGFyYW1ldGVyIG9mIHRoZSBzYW1lIG5hbWUgdGhhdCB0aGUgbmFtZWQgdGVtcGxhdGUgZG9lcyBub3QgDQogICAgICAgICByZWNvZ25pemUuPC9saT4NCiAgIDwvdWw+IA0KICAgDQogICA8cCBhbGlnbj0icmlnaHQiIHNpemU9IjIiPg0KPGEgaHJlZj0iI2NvbnRlbnQiPih0b3ApPC9hPg0KPC9wPg0KPGg0PkNoYW5nZXMgZm9yIFhhbGFuLUMrKyB2ZXJzaW9uIDEuMDwvaDQ+DQogICA8cD5NYWpvciB1cGRhdGVzIHNpbmNlIHZlcnNpb24gMC40MC4wIGluY2x1ZGU6PC9wPg0KICAgPHVsPg0KICAgICA8bGk+RnVsbCBzdXBwb3J0IGZvciBuYW1lc3BhY2UgaGFuZGxpbmc8L2xpPg0KICAgICA8bGk+RnVsbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZm9ybWF0LW51bWJlcigpIGZ1bmN0aW9uIGFuZCBzdXBwb3J0IGZvciB0aGUgZGVjaW1hbC1mb3JtYXQgZWxlbWVudDwvbGk+DQogICAgIDxsaT5JbnRlZ3JhdGlvbiB3aXRoIHRoZSA8YSBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1L2luZGV4Lmh0bWwiPkludGVybmF0aW9uYWwgQ29tcG9uZW50cyBmb3IgVW5pY29kZSAoSUNVKTwvYT4gZm9yIG51bWJlciBmb3JtYXR0aW5nLCBzb3J0aW5nLCBhbmQgb3V0cHV0IGVuY29kaW5nPC9saT4NCiAgICAgPGxpPlN1cHBvcnQgZm9yIHRoZSBleGNsdWRlLXJlc3VsdC1wcmVmaXhlcyBhdHRyaWJ1dGU8L2xpPg0KICAgICA8bGk+U3VwcG9ydCBmb3IgdGhlIG91dHB1dCBlbmNvZGluZyBhdHRyaWJ1dGU8L2xpPg0KICAgPC91bD4NCiAgIA0KICAgPHAgYWxpZ249InJpZ2h0IiBzaXplPSIyIj4NCjxhIGhyZWY9IiNjb250ZW50Ij4odG9wKTwvYT4NCjwvcD4NCjxoND5DaGFuZ2VzIGZvciBYYWxhbi1DKysgdmVyc2lvbiAwLjQwLjA8L2g0Pg0KICAgPHA+TWFqb3IgdXBkYXRlcyBzaW5jZSB2ZXJzaW9uIDAuMzAuMCBpbmNsdWRlOjwvcD4NCiAgIDx1bD4NCiAgICAgPGxpPlBlcm1pdHRpbmcgT1MgZmlsZSBuYW1lcyAoYXMgd2VsbCBhcyBVUkxzKSBhcyBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHdpdGggVGVzdFhTTFQ8L2xpPg0KICAgICA8bGk+U3RyaWN0ZXIgY29tcGxpYW5jZSBmb3IgSFRNTCBhbmQgWE1MIG91dHB1dDwvbGk+DQogICAgIDxsaT5JbXByb3ZlZCBoYW5kbGluZyBvZiByZWxhdGl2ZSBVUkknczwvbGk+DQogICAgIDxsaT5JbXByb3ZlZCBoYW5kbGluZyBvZiBJbXBvcnQgYW5kIEluY2x1ZGU8L2xpPg0KICAgICA8bGk+QmV0dGVyIG5hbWVzcGFjZSBoYW5kbGluZyAoYWx0aG91Z2ggdGhlcmUgYXJlIHN0aWxsIHByb2JsZW1zIGhlcmUpPC9saT4NCiAgICAgPGxpPlN1cHBvcnQgZm9yIERvY3VtZW50KCkgZnVuY3Rpb248L2xpPg0KICAgICA8bGk+U3VwcG9ydCBmb3IgWFBhdGggcHJlZGljYXRlczwvbGk+DQogICAgIDxsaT5Qcm9ibGVtTGlzdGVuZXIgd2l0aCBhIGRpZmZlcmVudCBvdXRwdXQgc3RyZWFtIGFuZCBjYWxsIA0KICAgICAgICAgWGFsYW5UcmFuc2Zvcm1lcjo6c2V0UHJvYmxlbUxpc3RlbmVyKCkgYmVmb3JlIGNhbGxpbmcgWGFsYW5UcmFuc2Zvcm1lcjo6dHJhbnNmb3JtKCkuPC9saT4NCiAgIDwvdWw+DQogICANCg0KIA0KDQoNCjxhIG5hbWU9ImJ1Z2ZpeDExIj4mIzgyMDQ7PC9hPg0KPHAgYWxpZ249InJpZ2h0IiBzaXplPSIyIj4NCjxhIGhyZWY9IiNjb250ZW50Ij4odG9wKTwvYT4NCjwvcD4NCjxoMz5CdWcgRml4ZXMgaW4gUmVsZWFzZSAxLjExPC9oMz4NCjxwPlRoZSBidWdzIGZpeGVkIGluIFhhbGFuLUMrKyBWZXJzaW9uIDEuMTEgaW5jbHVkZTo8L3A+DQo8dWw+DQo8bGk+WEFMQU5DLTcyMyBBZGQgVG9wLUxldmVsIHBhcmFtZXRlciBzdXBwb3J0IGZvciBYYWxhbkNBUEkgYW5kIFVzZVN0eWxlc2hlZXRQYXJhbXMgc2FtcGxlPC9saT4NCjxsaT5YQUxBTkMtNzIxOiBVcGdyYWRlIHN1cHBvcnQgZm9yIE1TIFZTIDIwMTAgKFZDMTApPC9saT4NCjxsaT5YQUxBTkMtNzE5OiBYZXJjZXMgUGFyc2VyIExpYWlzb24gLSBlcnJvcnMgb24gZWxlbWVudHMgd2l0aCBubyBhdHRyaWJ1dGVzPC9saT4NCjxsaT5YQUxBTkMtNzE2OiBpbmNvcnJlY3QgYnVmZmVyLXNpemUgY2FsY3VsYXRpb24gaW4gWGFsYW5VVEYxNldyaXRlci5ocHA8L2xpPg0KPGxpPlhBTEFOQy03MTU6IE5VTEwgcG9pbnRlciBhY2Nlc3MgY3Jhc2g8L2xpPg0KPGxpPlhBTEFOQy03MTM6IEJ1aWxkIFhhbGFuLUMvQysrIEFQSSBSZWZlcmVuY2UgTWFudWFsIHVzaW5nIERveHlnZW4gMS43IG9yIG5ld2VyPC9saT4NCjxsaT5YQUxBTkMtNzEwOiBNUy1TdHVkaW8gMjAwOCBEZWJ1ZyBCdWlsZCBzZW5kcyBYYWxhbi1DXzFELmxpYiB0byB3cm9uZyBkaXJlY3Rvcnk8L2xpPg0KPGxpPlhBTEFOQy03MDk6IERveHlnZW4gYnVnIGluIFhhbGFuUU5hbWUuaHBwPC9saT4NCjxsaT5YQUxBTkMtNzA4OiBJbmNsdWRpbmcgWGFsYW5DQVBJLmhwcCBkb2VzIG5vdCBpbXBvcnQgWGVyY2VzIHR5cGVkZWYgWE1MY2g8L2xpPg0KPGxpPlhBTEFOQy03MDU6CUNyYXNoIHdpdGggcHVyZSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGw8L2xpPg0KPGxpPlhBTEFOQy03MDM6CUNvbXBpbGVyIGVycm9ycyB3aGlsZSBidWlsZGluZyBvbiBBSVggNS4zPC9saT4NCjxsaT5YQUxBTkMtNzAwOglCcm9rZW4gb3V0cHV0IHdoZW4gc2VyaWFsaXppbmcgVVRGMTYgc3Vycm9nYXRlczwvbGk+DQo8bGk+WEFMQU5DLTY5OToJQ29tcGlsZSB1c2luZyBWaXN1YWwgQysrIDIwMTAgKFZDMTApPC9saT4NCjxsaT5YQUxBTkMtNjk4OglCdWZmZXIgb3ZlcmZsb3cgZnJvbSBYYWxhbk1lc3NhZ2VMb2FkZXI6OmxvYWQoKTwvbGk+DQo8bGk+WEFMQU5DLTY5MDoJVGhlIGRvY3VtZW50IGZ1bmN0aW9uIGRvZXMgbm90IGhhbmRsZSBmcmFnbWVudCBJRHMgaW4gVVJMcyBjb3JyZWN0bHk8L2xpPg0KPGxpPlhBTEFOQy02ODk6CVhhbGFuQyB0cmFuc2Zvcm1hdGlvbiBvZiBhIDYwMCBrYiBmaWxlIHRha2VzIDQzIHNlY29uZHM8L2xpPg0KPGxpPlhBTEFOQy02ODQ6CVhQYXRoIHNpbmdsZSBxdWF0ZS1jb21tYSBidWc8L2xpPg0KPGxpPlhBTEFOQy02ODM6CXhzbDpudW1iZXIgd2l0aCBsZXZlbCBhbnkgZG9lcyBub3QgYWx3YXlzIGNvdW50IGFsbCBvZiB0aGUgcHJlY2VlZGluZyBub2RlcyBpbiB0aGUgZG9jdW1lbnQ8L2xpPg0KPGxpPlhBTEFOQy02ODE6CU5hbWVkTm9kZU1hcEF0dHJpYnV0ZUxpc3QgY29uc3RydWN0b3IgYXNzZXJ0cyB3aGVuIHRoZSBwcm92aWRlZCBOYW1lZE5vZGVNYXAgaXMgZW1wdHk8L2xpPg0KPGxpPlhBTEFOQy02ODA6CUVycm9yIGluIG1hdGNoIHBhdHRlcm4gd2l0aCAvLyBhbmQgYWJicmV2aWF0ZWQgYXR0cmlidXRlIG5vZGUgdGVzdDwvbGk+DQo8bGk+WEFMQU5DLTY3OToJUG9zc2libGUgd3JvbmcgZXZhbHVhdGlvbiBvZiBhYmJyZXZpYXRlZCBYUGF0aCBpbiB0ZW1wbGF0ZSBtYXRjaDwvbGk+DQo8bGk+WEFMQU5DLTY3NzoJRGVidWcgYXNzZXJ0aW9uIHN3aXRjaGluZyB0byBIVE1MIG1vZGUgd2hlbiB0aGUgb3V0cHV0dGVyIGlzIHByb2R1Y2luZyBhIERPTTwvbGk+DQo8bGk+WEFMQU5DLTY3NToJTm8gZXJyb3IgaXMgcmVwb3J0ZWQgZm9yIGFuIHVua25vd24ga2V5PC9saT4NCjxsaT5YQUxBTkMtNjc1OglHQ0MtNC4zIGNsZWFudXA8L2xpPg0KPGxpPlhBTEFOQy02NzM6CUFzc2VydGlvbiBmYWlsZWQgd2l0aCBYYWxhbkRPTVN0cmluZzo6c3Vic3RyPC9saT4NCjxsaT5YQUxBTkMtNjcxOglJbmNvcnJlY3QgaGFuZGxpbmcgb2YgZGVmYXVsdCBuYW1lc3BhY2UgaW4geHNsOmVsZW1lbnQ8L2xpPg0KPGxpPlhBTEFOQy02Njk6CVhhbGFuT3RoZXJFbmNvZGluZ1dyaXRlciByZXBvcnRzIGFuIGluY29ycmVjdCBlcnJvciBtZXNzYWdlPC9saT4NCjxsaT5YQUxBTkMtNjY3OglzZXRVc2VWYWxpZGF0aW9uIGRvZXNuJ3Qgd29yazwvbGk+DQo8bGk+WEFMQU5DLTY2NDoJVGVzdGluZyBoYXJuZXNzIHdyaXRlcyBzdHJpbmdzIHRvIHRoZSBvdXRwdXQgWE1MIGluIHRoZSBsb2NhbCBjb2RlIHBhZ2UuPC9saT4NCjxsaT5YQUxBTkMtNjYxOglQbGF0Zm9ybVN1cHBvcnQvRG91YmxlU3VwcG9ydC5jcHAgY29tcGlsZSBlcnJvciBvbiBBSVggNS4zPC9saT4NCjxsaT5YQUxBTkMtNjYwOglDb21waWxhdGlvbiBlcnJvcnMgaW4gVGVzdHMvUGVyZm9ybWFuY2UvVGVzdEhhcm5lc3MuaHBwIG9uIHNvbWUgcGxhdGZvcm1zPC9saT4NCjxsaT5YQUxBTkMtNjU5OglVbm5lY2Vzc2FyeSBjYXN0aW5nIGluIFJldXNhYmxlQXJlbmFCbG9jazwvbGk+DQo8bGk+WEFMQU5DLTY1ODoJTWlzcGxhY2VkIGFzc2VydCBpbiBSZXVzYWJsZUFyZW5hQWxsb2NhdG9yOjpkZXN0cm95T2JqZWN0KCk8L2xpPg0KPGxpPlhBTEFOQy02NTc6CUFkZCBXaW5kb3dzIHg2NCB0YXJnZXRzIHRvIHRoZSBwcm9qZWN0IGZpbGVzPC9saT4NCjxsaT5YQUxBTkMtNjU1OglCb29sZWFuIHZhbHVlIGluY29ycmVjdGx5IGNvbnZlcnRlZCBvdCBzdHJpbmcgaW4gYXR0cmlidXRlIHZhbHVlIHRlbXBsYXRlczwvbGk+DQo8bGk+WEFMQU5DLTY1MzoJWGFsYW4tQyBub3QgaW5jbHVkaW5nIG5hbWVzcGFjZSBkZWNsYXJhdGlvbiBpbiBvdXRwdXQ8L2xpPg0KPGxpPlhBTEFOQy02NTA6CVhQYXRoUHJvY2Vzc29ySW1wbCB1c2VzIFhhbGFuRE9NU3RyaW5nIGNvcHkgY29uc3RydWN0b3IgaW5zdGVhZCBvZiByZWZlcnJpbmcgdG8gYW4gZXhpc3RpbmcgaW5zdGFuY2U8L2xpPg0KPGxpPlhBTEFOQy02NDg6CVhhbGFuVVRGOFdyaXRlcjo6d3JpdGUoY29uc3QgWGFsYW5ET01DaGFyKiwgWGFsYW5ET01TdHJpbmc6OnNpemVfdHlwZSkgZG9lcyBub3QgaGFuZGxlIHN1cnJvZ2F0ZXMgcHJvcGVybHk8L2xpPg0KPGxpPlhBTEFOQy02NDc6CVhhbGFuT3RoZXJFbmNvZGluZ1dyaXRlcjo6d3JpdGVOdW1lcmljQ2hhcmFjdGVyUmVmZXJlbmNlKCkgaXMgaW5lZmZpY2llbnQ8L2xpPg0KPGxpPlhBTEFOQy02NDY6CUR1cmluZyB0cmFuc2NvZGluZyBYYWxhbkMgZmFpbHMgdG8gYXBwZW5kICcwJyB0byB0aGUgdHJhbnNjb2RlZCBzdHJpbmcgPC9saT4NCjxsaT5YQUxBTkMtNjQ1OglQbHVnZ2luIG9mIERPTVN0cmluZ1ByaW50V3JpdGVyIGludG8gRm9ybWF0dGVyVG9YTUwgbGVhZHMgdG8gYXNzZXJ0PC9saT4NCjxsaT5YQUxBTkMtNjQxOglDbGFzcyB1c2VkIGFzIGV4Y2VwdGlvbiBuZWVkcyBhY2Nlc3NpYmxlIGNvcHkgY29uc3RydWN0b3I8L2xpPg0KPGxpPlhBTEFOQy02NDA6CVBhdGggcHJvYmxlbSBpbiBNYWtlZmlsZSB1bmRlciBjeWd3aW48L2xpPg0KPGxpPlhBTEFOQy02Mzg6CVBlcmZvcm1hbmNlIHRlc3QgcHJvZ3JhbSBkb2VzIG5vdCBidWlsZCBvbiBIUC1VWDwvbGk+DQo8bGk+WEFMQU5DLTYzNToJQnVpbGQgZmFpbHMgb24gU29sYXJpcyAyLjg8L2xpPg0KPGxpPlhBTEFOQy02MzQ6CUJ1aWxkIGZhaWxzIHdpdGggVkM2PC9saT4NCjxsaT5YQUxBTkMtNjMzOglUaGUgcHJvY2Vzc29yIHNob3VsZCBpZ25vcmUgeHNsOmZhbGxiYWNrIGVsZW1lbnQgaW4gTFJFIDwvbGk+DQo8bGk+WEFMQU5DLTYzMjoJQHVzZS1hdHRyaWJ1dGUtc2V0cyBhdHRyaWJ1dGUgaGFzIHRvIGhhdmUgbm8gZWZmZWN0IG9uIHhzbDpjb3B5IHdoZW4gdGhlIGNvbnRleHQgaXRlbSBpcyBhIGRvY3VtZW4gbm9kZS48L2xpPg0KPGxpPlhBTEFOQy02MzE6CVRoZSBuZXh0IHN0eWxlc2hlZXQgY3Jhc2hlcyBYYWxhbkM8L2xpPg0KPGxpPlhBTEFOQy02MzA6CUluY29ycmVjdCBjYXN0IGluIFhhbGFuVVRGMTZXcml0ZXI8L2xpPg0KPGxpPlhBTEFOQy02Mjk6CVBlcmZvcm1hbmNlIGltcHJvdmVtZW50cyBmb3IgdGV4dCBub2RlIHN0cmlwcGluZzwvbGk+DQo8bGk+WEFMQU5DLTYyODoJSW5jb25zaXN0ZW50IGZsdXNpbmcgb2Ygc2VyaWFsaXplcnM8L2xpPg0KPGxpPlhBTEFOQy02Mjc6CUJyb2tlbiBjYXN0IGluIEVsZW1UZW1wbGF0ZUVsZW1lbnQ6OmZpbmRUZW1wbGF0ZVRvVHJhbnNmb3JtQ2hpbGQoKTwvbGk+DQo8bGk+WEFMQU5DLTYyNjoJRml4IGNvcHlyaWdodHMgaW4gQXBhY2hlIFhhbGFuQyBzb3VyY2U8L2xpPg0KPGxpPlhBTEFOQy02MjU6CVNwdXJpb3VzICh0aG91Z2ggaGFybWxlc3MpIGFzc2VydCBmYWlsdXJlIGluIFhQYXRoOjpmaW5kTm9kZVNldCgpIHdoZW4gYW4gZXhwcmVzc2lvbiBjb250YWlucyBhbiBlbXB0eSBub2RlLXNldCBlbmNsb3NlZCBpbiBwYXJlbnRoZXNpczwvbGk+DQo8bGk+WEFMQU5DLTYyNDoJVGhlIGtleSgpIGZ1bmN0aW9uIGRvZXMgbm90IHdvcmsgd2hlbiB0aGUgY29udGV4dCBub2RlIGlzIHRoZSByb290IG5vZGUgb2YgYSByZXN1bHQgdHJlZSBmcmFnbWVudCBvYnRhaW5lZCB0aHJvdWdoIGV4c2w6bm9kZS1zZXQoKTwvbGk+DQo8bGk+WEFMQU5DLTYyMzoJQ29tcGF0aWJpbGl0eSBpc3N1ZXMgd2l0aCBYZXJjZXMtQyAzLjA8L2xpPg0KPGxpPlhBTEFOQy02MjE6CVNlbGVjdGlvbiBvZiBjb21waWxlciBkZWZpbml0aW9ucyBmaWxlIGZhaWxzIG9uIExpbnV4IFBQQyBpbiBjbGllbnQgY29kZTwvbGk+DQo8bGk+WEFMQU5DLTYxODoJdW5pbnN0YWxsRXh0ZXJuYWxGdW5jdGlvbiBjYW4gcnVuIHBhc3QgdGhlIGVuZCBvZiB0aGUgYXJyYXk8L2xpPg0KPGxpPlhBTEFOQy02MTc6CUxlYWsgaW4gWGFsYW5UcmFuc2Zvcm1lcjwvbGk+DQo8bGk+WEFMQU5DLTYxNjoJeHNsOnN0cmlwLXNwYWNlIGVsZW1lbnQgZG9lc24ndCB3b3JrIHByb3ByZWx5PC9saT4NCjxsaT5YQUxBTkMtNjE1OglYYWxhbiByZXNvbHZlcyBhIG5hbWVzcGFjZSBwcmVmaXggd2hlbiBpdCBzaG91bGQgcmVwb3J0IGFuIGVycm9yPC9saT4NCjxsaT5YQUxBTkMtNjE0OglNc2dDcmVhdG9yIE1ha2VmaWxlIG5lZWRzIGxpbmsgb3B0aW9uPC9saT4NCjxsaT5YQUxBTkMtNjEzOglDYW5ub3QgcGFzcyB2YWx1ZSB0byBzdHlsZXNoZWV0IHBhcmFtZXRlciBpZiBwYXJhbWV0ZXIgbmFtZSBpcyBuYW1lc3BhY2UtcXVhbGlmaWVkPC9saT4NCjxsaT5YQUxBTkMtNjA5OglUZW1wbGF0ZSB3aXRoIGJ1aWx0LWluIHRlbXBsYXRlIHJ1bGVzIGZvciBuYW1lc3BhY2VzIGdpdmVzIGFuZCBhc3NlcnQ8L2xpPg0KPGxpPlhBTEFOQy02MDQ6CUNvbnN0cnVjdFdpdGhOb01lbW9yeU1hbmFnZXIgaGFzIGEgYnVnIHdoaWNoIHByZXZlbnRzIHByb3BlciBkZWZhdWx0IGluaXRpYWxpemF0aW9uIG9mIGJ1aWx0LWluIHR5cGVzLjwvbGk+DQo8bGk+WEFMQU5DLTYwMzoJU291cmNlIGRvZXMgbm90IGNvbXBpbGUgcHJvcGVybHkgb24gSFAtVVggd2l0aCBuZXdlciB2ZXJzaW9ucyBvZiB0aGUgSFAgY29tcGlsZXI8L2xpPg0KPGxpPlhBTEFOQy01OTU6CUVYU0xUIGRhdGUtdGltZSBmdW5jdGlvbiBtaXNzaW5nICsgb3IgLSBiZWZvcmUgdGltZXpvbmUgb2Zmc2V0PC9saT4NCjxsaT5YQUxBTkMtNTg4OglGbG9hdGluZyBwb2ludCBleGNlcHRpb25zIGluIERvdWJsZVN1cHBvcnQ6OmluaXRpYWxpemUoKSBvbiBTb2xhcmlzIDEwICh4ODYpPC9saT4NCjxsaT5YQUxBTkMtNTcwOiBSZW1vdmFsIG9mIGNvbXBpbGVyIHdhcm5pbmdzIGZyb20gU1RMSGVscGVyLmhwcDwvbGk+DQo8bGk+WEFMQU5DLTUzNToJSWYgYW4gZXJyb3Ivd2FybmluZyBtZXNzYWdlIGNvbnRhaW5zIG5vdC1kaXNwbGF5YWJsZSBjaGFyYWN0ZXIgZm9yIHRoZSBsb2NhbCBlbmNvZGluZyAsIG5vIG1lc3NhZ2UgaXMgc2hvd24gYXQgYWxsPC9saT4NCjxsaT5YQUxBTkMtNTI3OiBDb21waWxpbmcgb24gWGVyY2VzLTMuMDwvbGk+DQo8bGk+WEFMQU5DLTQ4MDoJWE1MMS4xIGFuZCBOYW1lc3BhY2VzIGZvciBYTUwxLjEgc3VwcG9ydDwvbGk+DQo8bGk+WEFMQU5DLTQ3ODoJQWRkIHN1cHBvcnQgZm9yIFhNTEVudGl0eVJlc29sdmVyPC9saT4NCjxsaT5YQUxBTkMtNDMyOglNaW5vciBzcGVsbGluZyBwcm9ibGVtcyBpbiBYYWxhbk1zZ19lbl9VUy54bGY8L2xpPg0KPGxpPlhBTEFOQy00MzA6CSJTdHlsZXNoZWV0RXhlY3V0aW9uQ29udGV4dDo6Z2V0VmFyaWFibGUobmFtZSkiIGNyYWhlcyBpZiB2YXJpYWJsZSAibmFtZSIgd2FzIG5vdCBmb3VuZC48L2xpPg0KPGxpPlhBTEFOQy00MjE6CW9taXQteG1sLWRlY2xhcmF0aW9uIGlnbm9yZWQ8L2xpPg0KPGxpPlhBTEFOQy00MTY6CVdyb25nIGFjY2VzcyB0byBvdXQtb2Ytc2NvcGUgeHNsOnZhcmlhYmxlIG5vdCBkZXRlY3RlZCBpbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXM8L2xpPg0KPGxpPlhBTEFOQy00MTU6CUVuY29kaW5nIGF0dHJpYnV0ZSBpcyBub3QgcmV0dXJuaW5nIHByb3Blcmx5IGluIG91dHB1dCBYTUwgaGVhZGVyPC9saT4NCjxsaT5YQUxBTkMtNDEzOglDcmFzaCB3aGlsZSB1c2luZyB0cmFuc2Zvcm0gbWV0aG9kIG9uIE1hY09TWDwvbGk+DQo8bGk+WEFMQU5DLTQxMjoJWGFsYW5FWFNMVERhdGVUaW1lIG5vdCB0aHJlYWRzYWZlLCBjcmFzaGluZyBhcHBsaWNhdGlvbjwvbGk+DQo8bGk+WEFMQU5DLTQwOToJY29tcGlsYXRpb24gZXJyb3Igb24gZysrIG9uIFN1bk9TIDIuODwvbGk+DQo8bGk+WEFMQU5DLTQwODoJcnVuQ29uZmlndXJlIGhlbHAgZG9lcyBub3QgaW5jbHVkZSBuZXcgSFAgcGxhdGZvcm08L2xpPg0KPGxpPlhBTEFOQy00MDc6CVhhbGFuQyBvdXRwdXQgZm9ybWF0IGlzIG5vdCBzdWl0YWJsZSBhcyBhIGRvY3VtZW50IGVudGl0eTwvbGk+DQo8bGk+WEFMQU5DLTM3NjoJUmVzdWx0IHRyZWUgZnJhZ21lbnQgYXR0cmlidXRlcyBhcmUgY3JlYXRlZCB3aXRob3V0IHByb3BlciBuYW1lc3BhY2UgYW5kIGxvY2FsIG5hbWUgPC9saT4NCjwvdWw+DQoNCg0KPGEgbmFtZT0iYnVnZml4MTAiPiYjODIwNDs8L2E+DQo8cCBhbGlnbj0icmlnaHQiIHNpemU9IjIiPg0KPGEgaHJlZj0iI2NvbnRlbnQiPih0b3ApPC9hPg0KPC9wPg0KPGgzPkJ1Z3MgRml4ZWQgaW4gUmVsZWFzZSAxLjEwPC9oMz4NCjxwPlRoZSBidWdzIGZpeGVkIGluIHRoZSAxLjEwIHJlbGVhc2UgaW5jbHVkZTo8L3A+DQo8dWw+DQogIDxsaT5YQUxBTkMtNTcyOiBDb21waWxlIGZhaWx1cmUgb24gU3VTRTgwQU1EXzY0Yl9HQ0MzMjIgPC9saT4NCiAgPGxpPlhBTEFOQy01Njk6IENvbXBpbGUtdGltZSBhc3NlcnQgb24gMzItYml0IFNvbGFyaXMgYW5kIEhQVVggZHVlIHRvIElFRUU3NTQgaXNzdWUgPC9saT4NCiAgPGxpPlhBTEFOQy01Njg6IFBhdHRlcm4gIi8iIGRvZXMgbm90IG1hdGNoIHRoZSBwc2V1ZG8gcm9vdCBkb2N1bWVudCBvZiBhIG5vZGUtc2V0IG9idGFpbmVkIGZyb20gYSByZXN1bHQtdHJlZSBmcmFnbWVudCB2aWEgZXhzbDpub2RlLXNldCA8L2xpPg0KICA8bGk+WEFMQU5DLTUxMTogQ3Jhc2ggZHVyaW5nIFhhbGFuVHJhbnNmb3JtZXI6OmluaXRpYWxpemUgb24gQUlYIDwvbGk+DQogIDxsaT5YQUxBTkMtNTU0OiBYYWxhbi1DIGRvZXMgbm90IGltcGxlbWVudCBlcnJhdHVtIDI1IDwvbGk+DQogIDxsaT5YQUxBTkMtNTUyOiBQcm9ibGVtcyB3aXRoIHRoZSBuZXcgc2VyaWFsaXplcnMgd2l0aCBDREFUQSBhbmQgdW5yZXByZXNlbnRhYmxlIG9yIHNwZWNpYWwgY2hhcmFjdGVycyA8L2xpPg0KICA8bGk+WEFMQU5DLTU1ODogTGF0ZXN0IHNvdXJjZSBjb2RlIGRvZXMgbm90IGJ1aWxkIHdpdGggdGhlIEludGVsIGNvbXBpbGVyIG9uIFdpbmRvd3MgPC9saT4NCiAgPGxpPlhBTEFOQy01NTU6IFhhbGFuRVhTTFREYXRlVGltZS5jcHAgaGFzIHRvbyBtYW55IHBsYXRmb3JtLXNwZWNpZmMgaWZkZWZzIDwvbGk+DQogIDxsaT5YQUxBTkMtNDIxOiBvbWl0LXhtbC1kZWNsYXJhdGlvbiBpZ25vcmVkIDwvbGk+DQogIDxsaT5YQUxBTkMtNTI5OiBYYWxhbi1DIHNvbWV0aW1lcyBjcmVhdGVzIGVtcHR5IHRleHQgbm9kZXMgaW4gUlRGcyBvciBzZW5kcyBlbXB0eSBjaGFyYWN0ZXJzKCkgZXZlbnRzIHRvIEZvcm1hdHRlckxpc3RlbmVycyA8L2xpPg0KICA8bGk+WEFMQU5DLTUzMDogU2VyaWFsaXplcnMgZmlsdGVyIGF0dHJpYnV0ZXMgdW5uZWNlc3NhcmlseSA8L2xpPg0KICA8bGk+WEFMQU5DLTI0NTogc3Vic3RyaW5nLWJlZm9yZSBhbmQgc3Vic3RyaW5nLWFmdGVyIDwvbGk+DQogIDxsaT5YQUxBTkMtMTE1OiBOZWVkIHRvIGNhdGNoIHVzZSBvZiB2YXJpYWJsZXMgaW4geHNsOmtleSBhdHRyaWJ1dGVzIDwvbGk+DQogIDxsaT5YQUxBTkMtNTQwOiBYUGF0aCBhYnNvbHV0ZSBsb2NhdGlvbiBwYXRoIGRvZXMgbm90IHdvcmsgd2hlbiB0aGUgY29udGV4dCBub2RlIHdhcyBvYnRhaW5lZCBmcm9tIGEgcmVzdWx0IHRyZWUgZnJhZ21lbnQgdGhyb3VnaCBleHNsOm5vZGUtc2V0KCkgPC9saT4NCiAgPGxpPlhBTEFOQy01NDQ6IEFzc2VydCBmYWlsdXJlLCB0aGVuIGNyYXNoLCBkdXJpbmcgInZhcmlhYmxlIHVuZGVmaW5lZCIgZXJyb3IgcmVjb3ZlcnkgaW4gY2VydGFpbiBjaXJjdW1zdGFuY2VzLiA8L2xpPg0KICA8bGk+WEFMQU5DLTU0MzogQ3Jhc2ggd2hlbiBjYWxsaW5nIGEgdGVtcGxhdGUgdGhhdCB3cm9uZ2x5IHVzZXMgeHNsOndpdGgtcGFyYW0gaW5zdGVhZCBvZiB4c2w6cGFyYW0gdG8gZGVjbGFyZSBpdHMgcGFyYW1ldGVyLiA8L2xpPg0KICA8bGk+WEFMQU5DLTUzOTogWGFsYW5NYXAgbmVlZHMgdG8gY29tcGFjdCBidWNrZXRzIHRvIHByZXZlbnQgbG9uZyBzZWFyY2ggdGltZXMgYW5kIGV2ZXItaW5jcmVhc2luZyBtZW1vcnkgdXNhZ2UuIDwvbGk+DQogIDxsaT5YQUxBTkMtNTQyOiBYYWxhbkRvY3VtZW50RnJhZ21lbnRYTm9kZVNldEJhc2VQcm94eTo6ZGVyZWZlcmVuY2VkKCkgaXMgbm90IGltcGxlbWVudGVkIHByb3Blcmx5IDwvbGk+DQogIDxsaT5YQUxBTkMtNTM4OiBCZXR0ZXIgaGFuZGxpbmcgZm9yIG5vbi1leGlzdGVudCBub2RlIHRlc3QgPC9saT4NCiAgPGxpPlhBTEFOQy01NDE6IEZpeGVzIGZvciB6T1MgYnVpbGQgPC9saT4NCiAgPGxpPlhBTEFOQy00NTU6IFByb2JsZW0gd2hlbiByZWxlYXNpbmcgSW5wdXRTb3VyY2Ugb2J0YWluZWQgdGhyb3VnaCBhbiBFbnRpdHlSZXNvbHZlciA8L2xpPg0KICA8bGk+WEFMQU5DLTUzNTogSWYgYW4gZXJyb3Ivd2FybmluZyBtZXNzYWdlIGNvbnRhaW5zIG5vdC1kaXNwbGF5YWJsZSBjaGFyYWN0ZXIgZm9yIHRoZSBsb2NhbCBlbmNvZGluZyAsIG5vIG1lc3NhZ2UgaXMgc2hvd24gYXQgYWxsIDwvbGk+DQogIDxsaT5YQUxBTkMtNTMyOiBGb3JtYXR0ZXJUb1hNTFVuaWNvZGUgZG9lcyBub3Qgc2VyaWFsaXplIFVURi04IDwvbGk+DQogIDxsaT5YQUxBTkMtNTM2OiBFbGVtTnVtYmVyIHVzZXMgZXh0cmEgdGVtcG9yYXJ5IHN0cmluZ3MgPC9saT4NCiAgPGxpPlhBTEFOQy01Mzc6IFhhbGFuQyBzb3VyY2UgY29kZSBxdW90ZXMgaW5jb3JyZWN0bHkgbGljZW5zZSBwcm90ZWN0ZWQgZG9jdW1lbnRzIDwvbGk+DQogIDxsaT5YQUxBTkMtNTI2OiBVc2Ugb2YgdW5kZWZpbmVkIHN0cmljbXAgYnJlYWtzIGNvbXBpbGF0aW9uIG9uIExpbnV4IDwvbGk+DQogIDxsaT5YQUxBTkMtNTEzOiBJQ1VGb3JtYXROdW1iZXJGdW5jdG9yIGhhcyBzb21lIE1lbW9yeU1hbmFnZXIgaXNzdWVzIDwvbGk+DQogIDxsaT5YQUxBTkMtNTA3OiBTYWZldHkgaW1wcm92ZW1lbnRzIGZvciBYYWxhblZlY3Rvcjo6aW5zZXJ0KCkgPC9saT4NCiAgPGxpPlhBTEFOQy01MDY6IFJlbW92ZSByZWZlcmVuY2VzIHRvIHN0bHBvcnQgZGlyZWN0b3J5IGluIE1ha2VmaWxlLmluY2wuaW4gPC9saT4NCiAgPGxpPlhBTEFOQy01MDU6IERpcmVjdG9yeUVudW1lcmF0b3IuaHBwIHdpbGwgbm90IGJ1aWxkIG9uIFNvbGFyaXMgMTAgd2l0aCBTdW4gV29ya3Nob3AgMTAgPC9saT4NCiAgPGxpPlhBTEFOQy01MDI6IFhhbGFuRE9NU3RyaW5nQ2FjaGUgaGFzIGluaXRpYWxpemVyIGxpc3Qgb3V0IG9mIG9yZGVyIDwvbGk+DQogIDxsaT5YQUxBTkMtNTAxOiBDcmVhdGlvbiBvZiBjb21tZW50cyBhbmQgUElzIG5lZWRzIHRvIGRldGVjdCBpbGxlZ2FsIHZhbHVlcyA8L2xpPg0KICA8bGk+WEFMQU5DLTUwMDogUmVtb3ZlIG9sZCAiZGlhZ25vc3RpYyIgb3V0cHV0IGZyb20gU3R5bGVzaGVldFJvb3QgYW5kIFhTTFRFbmdpbmVJbXBsIDwvbGk+DQogIDxsaT5YQUxBTkMtNDk3OiBMb2NhbCB2YXJpYWJsZXMgb3IgcGFyYW1ldGVycyBpbiBFWFNMVC1mdW5jdGlvbnMgYXJlIGludGVycHJldGVkIGFzIGdsb2JhbCA8L2xpPg0KICA8bGk+WEFMQU5DLTQ5NjogR2xpdGNoZXMgaW4gaGVhZGVyIGZpbGVzIDwvbGk+DQogIDxsaT5YQUxBTkMtNDkzOiBQcm9ibGVtIHdpdGggWEFMQU5fU1RBVElDX0NIRUNLIG9uIEhQLVVYIElBNjQgPC9saT4NCiAgPGxpPlhBTEFOQy00OTI6IFZhcmlvdXMgcGx1Z2dhYmxlIG1lbW9yeSBtYW5hZ2VtZW50IGJ1Z3MuIDwvbGk+DQogIDxsaT5YQUxBTkMtNDkwOiBYYWxhbkZpbGVSZXBvcnRlciBpcyBpbmNvbnNpc3RlbnQgaW4gaXRzIHVzYWdlIG9mIHBsdWdnYWJsZSBtZW1vcnkgbWFuYWdlbWVudCA8L2xpPg0KICA8bGk+WEFMQU5DLTQ4OTogWGFsYW5NZW1NZ3JzIGhhcyBhIHRocmVhZC1zYWZldHkgaXNzdWUgPC9saT4NCiAgPGxpPlhBTEFOQy00ODg6IFhTTFRJbnB1dFNvdXJjZSBkb2VzIG5vdCBzdXBwb3J0IHBsdWdnYWJsZSBtZW1vcnkgbWFuYWdlbWVudCA8L2xpPg0KICA8bGk+WEFMQU5DLTQ4NzogVVJJU3VwcG9ydCBkb2VzIG5vdCBwcm92aWRlIGV4cGxpY2l0IE1lbW9yeU1hbmFnZXIgPC9saT4NCiAgPGxpPlhBTEFOQy00ODU6IEdDQyB3YXJucyBhYm91dCBvcmRlciBvZiBtZW1iZXJzIGluIGluaXRpYWxpemVyIGxpc3QgPC9saT4NCiAgPGxpPlhBTEFOQy00ODQ6IFJlbW92ZSBjb21waWxlciB3YXJuaW5ncyBhYm91dCBwbGFjZW1lbnQgZGVsZXRlIGZvciBIUCdzIGFDQyBjb21waWxlciA8L2xpPg0KICA8bGk+WEFMQU5DLTQ4MzogWGVyY2VzUGFyc2VyTGlhaXNvbiBkb2VzIG5vdCBjcmVhdGUgWGVyY2VzLUMgRE9NIGluc3RhbmNlcyB3aXRoIG5hbWVzcGFjZXMgc3VwcG9ydCBlbmFibGVkLiA8L2xpPg0KICA8bGk+WEFMQU5DLTQ4MjogUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmdzIDwvbGk+DQogIDxsaT5YQUxBTkMtNDcwOiBydW5Db25maWd1cmUgZG9lcyBub3QgcGFzcyBsaW5rIG9wdGlvbnMgdG8gTWFrZWZpbGUgZm9yIEFJWCBwbGF0Zm9ybSA8L2xpPg0KICA8bGk+WEFMQU5DLTQ2NTogQWRkIGFsdCB0YWcgdG8gZm9vdGVyLmh0bWwgcGFnZSB1bmRlciBodG1sL2FwaURvY3MgdHJlZS4gPC9saT4NCiAgPGxpPlhBTEFOQy00NjM6IFRyYW5zZm9ybWluZyBhbiBYTUwgRE9NIGRvY3VtZW50IGVuY2Fwc3VsYXRlZCB3aXRoaW4gYW4gWGVyY2VzRE9NV3JhcHBlclBhcnNlZFNvdXJjZSBvYmplY3QgdHJpZ2dlcnMgYW4gaW52YWxpZCBoZWFwIHBvaW50ZXIgZXhjZXB0aW9uIGlmIFhTTCBvcGVucyBvdGhlciBYTUwgZG9jdW1lbnQgd2l0aCAnZG9jdW1lbnQoKScgZnVuY3Rpb24uIDwvbGk+DQogIDxsaT5YQUxBTkMtNDYwOiBMaW51eC94bEMgcG9ydCA8L2xpPg0KICA8bGk+WEFMQU5DLTQ0ODogVGVzdFhTTFQvcHJvY2Vzcy5jcHAgY29tcGlsYXRpb24gZmFpbHMsIGludGVyZmFjZSBicm9rZW4gaW4gRm9ybWF0dGVyVG9UZXh0LmhwcCA8L2xpPg0KICA8bGk+WEFMQU5DLTQ0NTogZ2VuZXJhdGUtaWQoKSBpbnNlcnRzIHBlcmlvZHMgaW50byBuYW1lIHdoaWNoIGxpbWl0cyB1c2FnZSA8L2xpPg0KPC91bD4NCg0KDQoNCjxhIG5hbWU9ImJ1Z3MiPiYjODIwNDs8L2E+DQo8cCBhbGlnbj0icmlnaHQiIHNpemU9IjIiPg0KPGEgaHJlZj0iI2NvbnRlbnQiPih0b3ApPC9hPg0KPC9wPg0KPGgzPkJ1ZyByZXBvcnRpbmc8L2gzPg0KPHA+QWxsIGtub3duIFhhbGFuLUMrKyBidWdzIGFyZSBsaXN0ZWQgaW4gPGEgaHJlZj0iaHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9YQUxBTkMiPkpJUkEgKHRoZSBBcGFjaGUgYnVnIGRhdGFiYXNlKTwvYT4uIEZvciBhIGxpc3Qgb2Ygb3BlbiBidWdzIHdpdGggbGlua3MgdG8gZWFjaCBidWcNCiAgIHJlcG9ydCwgc2VlIDxhIGhyZWY9Imh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9zZWN1cmUvSXNzdWVOYXZpZ2F0b3IuanNwYT9yZXNldD10cnVlJmFtcDttb2RlPWhpZGUmYW1wO2pxbFF1ZXJ5PXByb2plY3QrJTNEK1hBTEFOQytBTkQrcmVzb2x1dGlvbislM0QrVW5yZXNvbHZlZCtPUkRFUitCWSt1cGRhdGVkK0RFU0MiPlhhbGFuQyBvcGVuIGJ1Z3M8L2E+LiBJZiB5b3UgZmluZCBhIG5ldyBidWcsIHBsZWFzZSBlbnRlciBhIFhhbGFuQyBidWcgcmVwb3J0IGluIHRoaXMNCiAgIGRhdGFiYXNlLjwvcD4NCjx0YWJsZSBjbGFzcz0ibm90ZSI+DQo8dHI+DQo8dGQgY2xhc3M9Im5vdGVJbWciPg0KPGltZyBzcmM9InJlc291cmNlcy9ub3RlLmdpZiIgYWx0PSJub3RlIiAvPg0KPC90ZD4NCjx0ZCBjbGFzcz0ibm90ZVR4dCI+QmVmb3JlIHlvdSBjYW4gZW50ZXIgeW91ciBmaXJzdCBidWcgcmVwb3J0LCANCiAgeW91IG11c3Qgc3VibWl0IHlvdXIgZW1haWwgYWRkcmVzcyB0byANCiAgPGEgaHJlZj0iaHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhIj5KSVJBPC9hPiANCiAgYW5kIHJlY2VpdmUgYSBwYXNzd29yZC4NCjwvdGQ+DQo8L3RyPg0KPC90YWJsZT4gDQo8cD5XZSBzdHJvbmdseSBlbmNvdXJhZ2UgeW91IHdyaXRlIHBhdGNoZXMgZm9yIHByb2JsZW1zIHlvdSBmaW5kIGFuZCANCiAgc3VibWl0IHRoZW0gdG8gSklSQSBhbmQgdGhlDQogIDxhIGhyZWY9Im1haWx0bzp4YWxhbi1kZXZAeG1sLmFwYWNoZS5vcmciPnhhbGFuLWRldjwvYT4gbWFpbGluZyBsaXN0LiANCiAgV2UgcmV2aWV3IHRoZSBwYXRjaGVzIHdlIHJlY2VpdmUgdG8gbWFrZSBzdXJlIHRoZXkgZG8gbm90IGJyZWFrICAgc29tZXRoaW5nIGVsc2UsIGFuZCAoYXNzdW1pbmcgdGhleSBkbyBub3QpIA0KICBpbmNsdWRlIHRoZW0gaW4gb3VyIG5leHQgcmVsZWFzZS4gDQogIEluIHRoZSBpbnRlcmVzdCBvZiBmaXhpbmcgYnVncywgYWRkaW5nIGVuaGFuY2VtZW50cywgYW5kIA0KICBhZGRyZXNzaW5nIG91dHN0YW5kaW5nIGRlc2lnbiBpc3N1ZXMsIHdlIHNpbmNlcmVseSB3YW50DQogIChhbmQgbmVlZCEpIHlvdXIgYWN0aXZlIHBhcnRpY2lwYXRpb24gaW4gdGhlIG9uZ29pbmcgZGV2ZWxvcG1lbnQgb2YgWGFsYW4uDQo8L3A+DQoNCg0KPGEgbmFtZT0idG8tZG8iPiYjODIwNDs8L2E+DQo8cCBhbGlnbj0icmlnaHQiIHNpemU9IjIiPg0KPGEgaHJlZj0iI2NvbnRlbnQiPih0b3ApPC9hPg0KPC9wPg0KPGgzPlRvLWRvIHRhc2tzIGZvciBmdXR1cmUgWGFsYW4tQy9DKysgcmVsZWFzZXM8L2gzPg0KPHA+T3BlbiBidWdzOjwvcD4NCjx1bD4NCjxsaT5UaGUgbmFtZXNwYWNlIGF4aXMgZG9lcyBub3QgcmV0dXJuIHRoZSBkZWZhdWx0ICJ4bWwiIG5hbWVzcGFjZS48L2xpPg0KPGxpPkRvZXMgbm90IHN1cHBvcnQgY2FzZS1vcmRlciBhbmQgbGFuZyBhdHRyaWJ1dGVzIGluIHhzbDpzb3J0LjwvbGk+DQo8L3VsPg0KPHA+SXRlbXMgdG8gZG86PC9wPg0KPHVsPg0KPGxpPkFkZCBzdXBwb3J0IGZvciBuZXcgc3BlY2lmaWNhdGlvbnMgKFhQYXRoLTIwLCBYU0xULTIuMCk8L2xpPg0KPGxpPkFkZCB0cmFuc2NvZGluZyBzdXBwb3J0IHVzaW5nIFhlcmNlcy1DIG1vZHVsZXM8L2xpPg0KPGxpPkFkZCBYU0xUIGV4dGVuc2lvbiBlbGVtZW50czwvbGk+DQo8bGk+QWRkIG1vcmUgRVhTTFQgZXh0ZW5zaW9uIGZ1bmN0aW9uczwvbGk+DQo8bGk+QWRkIHRoZSBFWFNMVCBkb2N1bWVudCBleHRlbnNpb24gZnVuY3Rpb248L2xpPg0KPGxpPkFkZCBzdXBwb3J0IGZvciB1c2VyLWRlZmluZWQgZXh0ZW5zaW9uIG1vZHVsZXM8L2xpPg0KPGxpPkFkZCBzdXBwb3J0IGZvciBub2RlLXNldCB0byBiZSBkZWNsYXJlZCBhcyB0b3AtbGV2ZWwgWFNMVCBwYXJhbWV0ZXI8L2xpPg0KPC91bD4NCg0KPHAgYWxpZ249InJpZ2h0IiBzaXplPSIyIj4NCjxhIGhyZWY9IiNjb250ZW50Ij4odG9wKTwvYT4NCjwvcD4NCjwvZGl2Pg0KPGRpdiBpZD0iZm9vdGVyIj5Db3B5cmlnaHQgqSAxOTk5LTIwMTIgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uPGJyIC8+QXBhY2hlLCBYYWxhbiwgYW5kIHRoZSBGZWF0aGVyIGxvZ28gYXJlIHRyYWRlbWFya3Mgb2YgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uPGRpdiBjbGFzcz0ic21hbGwiPldlYiBQYWdlIGNyZWF0ZWQgb24gLSBGcmkgMDYvMTUvMjAxMjwvZGl2Pg0KPC9kaXY+DQo8L2JvZHk+DQo8L2h0bWw+DQo=