PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+DQo8IS0tIE5ld1BhZ2UgLS0+DQo8aHRtbCBsYW5nPSJydSI+DQo8aGVhZD48bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCB1c2VyLXNjYWxhYmxlPW5vLCBpbml0aWFsLXNjYWxlPTEsIG1heGltdW0tc2NhbGU9MSI+DQo8IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jICh2ZXJzaW9uIDEuNy4wXzc1KSBvbiBNb24gRGVjIDIxIDEyOjI1OjI0IE1TSyAyMDE1IC0tPg0KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWwiIGNoYXJzZXQ9IlVURi04Ij4NCjx0aXRsZT5JZ25pdGVTZW1hcGhvcmUgKElnbml0ZSAxLjUuMC1maW5hbC1TTkFQU0hPVCk8L3RpdGxlPg0KPG1ldGEgbmFtZT0iZGF0ZSIgY29udGVudD0iMjAxNS0xMi0yMSI+DQo8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi8uLi8uLi9qYXZhZG9jLmNzcyIgdGl0bGU9IlN0eWxlIj4NCjxsaW5rIHJlbD0nc2hvcnRjdXQgaWNvbicgaHJlZj0naHR0cHM6Ly9pZ25pdGUuYXBhY2hlLm9yZy9mYXZpY29uLmljbycvPgo8bGluayB0eXBlPSd0ZXh0L2NzcycgcmVsPSdzdHlsZXNoZWV0JyBocmVmPSdodHRwOi8vYWdvcmJhdGNoZXYudHlwZXBhZC5jb20vcHViL3NoLzNfMF84My9zdHlsZXMvc2hDb3JlLmNzcycvPgo8bGluayB0eXBlPSd0ZXh0L2NzcycgcmVsPSdzdHlsZXNoZWV0JyBocmVmPSdodHRwOi8vYWdvcmJhdGNoZXYudHlwZXBhZC5jb20vcHViL3NoLzNfMF84My9zdHlsZXMvc2hUaGVtZURlZmF1bHQuY3NzJy8+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J2h0dHA6Ly9hZ29yYmF0Y2hldi50eXBlcGFkLmNvbS9wdWIvc2gvM18wXzgzL3NjcmlwdHMvc2hDb3JlLmpzJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0naHR0cDovL2Fnb3JiYXRjaGV2LnR5cGVwYWQuY29tL3B1Yi9zaC8zXzBfODMvc2NyaXB0cy9zaExlZ2FjeS5qcyc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J2h0dHA6Ly9hZ29yYmF0Y2hldi50eXBlcGFkLmNvbS9wdWIvc2gvM18wXzgzL3NjcmlwdHMvc2hCcnVzaEphdmEuanMnPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSdodHRwOi8vYWdvcmJhdGNoZXYudHlwZXBhZC5jb20vcHViL3NoLzNfMF84My9zY3JpcHRzL3NoQnJ1c2hQbGFpbi5qcyc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J2h0dHA6Ly9hZ29yYmF0Y2hldi50eXBlcGFkLmNvbS9wdWIvc2gvM18wXzgzL3NjcmlwdHMvc2hCcnVzaEpTY3JpcHQuanMnPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSdodHRwOi8vYWdvcmJhdGNoZXYudHlwZXBhZC5jb20vcHViL3NoLzNfMF84My9zY3JpcHRzL3NoQnJ1c2hCYXNoLmpzJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0naHR0cDovL2Fnb3JiYXRjaGV2LnR5cGVwYWQuY29tL3B1Yi9zaC8zXzBfODMvc2NyaXB0cy9zaEJydXNoWG1sLmpzJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0naHR0cDovL2Fnb3JiYXRjaGV2LnR5cGVwYWQuY29tL3B1Yi9zaC8zXzBfODMvc2NyaXB0cy9zaEJydXNoU2NhbGEuanMnPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSdodHRwOi8vYWdvcmJhdGNoZXYudHlwZXBhZC5jb20vcHViL3NoLzNfMF84My9zY3JpcHRzL3NoQnJ1c2hHcm9vdnkuanMnPjwvc2NyaXB0Pgo8L2hlYWQ+Cg0KPGJvZHk+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQ0KICAgIGlmIChsb2NhdGlvbi5ocmVmLmluZGV4T2YoJ2lzLWV4dGVybmFsPXRydWUnKSA9PSAtMSkgew0KICAgICAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9Iklnbml0ZVNlbWFwaG9yZSAoSWduaXRlIDEuNS4wLWZpbmFsLVNOQVBTSE9UKSI7DQogICAgfQ0KLy8tLT4NCjwvc2NyaXB0Pg0KPG5vc2NyaXB0Pg0KPGRpdj5KYXZhU2NyaXB0IGlzIGRpc2FibGVkIG9uIHlvdXIgYnJvd3Nlci48L2Rpdj4NCjwvbm9zY3JpcHQ+DQo8IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+DQo8ZGl2IGNsYXNzPSJ0b3BOYXYiPjxhIG5hbWU9Im5hdmJhcl90b3AiPg0KPCEtLSAgIC0tPg0KPC9hPjxhIGhyZWY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvYT48YSBuYW1lPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij4NCjwhLS0gICAtLT4NCjwvYT4NCjx1bCBjbGFzcz0ibmF2TGlzdCIgdGl0bGU9Ik5hdmlnYXRpb24iPg0KPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+T3ZlcnZpZXc8L2E+PC9saT4NCjxsaT48YSBocmVmPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+UGFja2FnZTwvYT48L2xpPg0KPGxpIGNsYXNzPSJuYXZCYXJDZWxsMVJldiI+Q2xhc3M8L2xpPg0KPGxpPjxhIGhyZWY9ImNsYXNzLXVzZS9JZ25pdGVTZW1hcGhvcmUuaHRtbCI+VXNlPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0icGFja2FnZS10cmVlLmh0bWwiPlRyZWU8L2E+PC9saT4NCjxsaT48YSBocmVmPSIuLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+RGVwcmVjYXRlZDwvYT48L2xpPg0KPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2luZGV4LWFsbC5odG1sIj5JbmRleDwvYT48L2xpPg0KPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPkhlbHA8L2E+PC9saT4NCjwvdWw+DQo8ZGl2IGNsYXNzPSJhYm91dExhbmd1YWdlIj48ZW0+SWduaXRlIC0gSW4tTWVtb3J5IERhdGEgRmFicmljPC9lbT48L2Rpdj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0ic3ViTmF2Ij4NCjx1bCBjbGFzcz0ibmF2TGlzdCI+DQo8bGk+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2FwYWNoZS9pZ25pdGUvSWduaXRlU2NoZWR1bGVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmFwYWNoZS5pZ25pdGUiPjxzcGFuIGNsYXNzPSJzdHJvbmciPlByZXYgQ2xhc3M8L3NwYW4+PC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2FwYWNoZS9pZ25pdGUvSWduaXRlU2VydmljZXMuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcuYXBhY2hlLmlnbml0ZSI+PHNwYW4gY2xhc3M9InN0cm9uZyI+TmV4dCBDbGFzczwvc3Bhbj48L2E+PC9saT4NCjwvdWw+DQo8dWwgY2xhc3M9Im5hdkxpc3QiPg0KPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2FwYWNoZS9pZ25pdGUvSWduaXRlU2VtYXBob3JlLmh0bWwiIHRhcmdldD0iX3RvcCI+RnJhbWVzPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0iSWduaXRlU2VtYXBob3JlLmh0bWwiIHRhcmdldD0iX3RvcCI+Tm8gRnJhbWVzPC9hPjwvbGk+DQo8L3VsPg0KPHVsIGNsYXNzPSJuYXZMaXN0IiBpZD0iYWxsY2xhc3Nlc19uYXZiYXJfdG9wIj4NCjxsaT48YSBocmVmPSIuLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+QWxsIENsYXNzZXM8L2E+PC9saT4NCjwvdWw+DQo8ZGl2Pg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0NCiAgYWxsQ2xhc3Nlc0xpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWxsY2xhc3Nlc19uYXZiYXJfdG9wIik7DQogIGlmKHdpbmRvdz09dG9wKSB7DQogICAgYWxsQ2xhc3Nlc0xpbmsuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7DQogIH0NCiAgZWxzZSB7DQogICAgYWxsQ2xhc3Nlc0xpbmsuc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCiAgfQ0KICAvLy0tPg0KPC9zY3JpcHQ+DQo8L2Rpdj4NCjxkaXY+DQo8dWwgY2xhc3M9InN1Yk5hdkxpc3QiPg0KPGxpPlN1bW1hcnk6Jm5ic3A7PC9saT4NCjxsaT5OZXN0ZWQmbmJzcDt8Jm5ic3A7PC9saT4NCjxsaT5GaWVsZCZuYnNwO3wmbmJzcDs8L2xpPg0KPGxpPkNvbnN0ciZuYnNwO3wmbmJzcDs8L2xpPg0KPGxpPjxhIGhyZWY9IiNtZXRob2Rfc3VtbWFyeSI+TWV0aG9kPC9hPjwvbGk+DQo8L3VsPg0KPHVsIGNsYXNzPSJzdWJOYXZMaXN0Ij4NCjxsaT5EZXRhaWw6Jm5ic3A7PC9saT4NCjxsaT5GaWVsZCZuYnNwO3wmbmJzcDs8L2xpPg0KPGxpPkNvbnN0ciZuYnNwO3wmbmJzcDs8L2xpPg0KPGxpPjxhIGhyZWY9IiNtZXRob2RfZGV0YWlsIj5NZXRob2Q8L2E+PC9saT4NCjwvdWw+DQo8L2Rpdj4NCjxhIG5hbWU9InNraXAtbmF2YmFyX3RvcCI+DQo8IS0tICAgLS0+DQo8L2E+PC9kaXY+DQo8IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+DQo8IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+DQo8ZGl2IGNsYXNzPSJoZWFkZXIiPg0KPGRpdiBjbGFzcz0ic3ViVGl0bGUiPm9yZy5hcGFjaGUuaWduaXRlPC9kaXY+DQo8aDIgdGl0bGU9IkludGVyZmFjZSBJZ25pdGVTZW1hcGhvcmUiIGNsYXNzPSJ0aXRsZSI+SW50ZXJmYWNlIElnbml0ZVNlbWFwaG9yZTwvaDI+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9ImNvbnRlbnRDb250YWluZXIiPg0KPGRpdiBjbGFzcz0iZGVzY3JpcHRpb24iPg0KPHVsIGNsYXNzPSJibG9ja0xpc3QiPg0KPGxpIGNsYXNzPSJibG9ja0xpc3QiPg0KPGRsPg0KPGR0PkFsbCBTdXBlcmludGVyZmFjZXM6PC9kdD4NCjxkZD48YSBocmVmPSJodHRwOi8vZG9jcy5vcmFjbGUuY29tL2phdmFzZS83L2RvY3MvYXBpL2phdmEvbGFuZy9BdXRvQ2xvc2VhYmxlLmh0bWw/aXMtZXh0ZXJuYWw9dHJ1ZSIgdGl0bGU9ImNsYXNzIG9yIGludGVyZmFjZSBpbiBqYXZhLmxhbmciPkF1dG9DbG9zZWFibGU8L2E+LCA8YSBocmVmPSJodHRwOi8vZG9jcy5vcmFjbGUuY29tL2phdmFzZS83L2RvY3MvYXBpL2phdmEvaW8vQ2xvc2VhYmxlLmh0bWw/aXMtZXh0ZXJuYWw9dHJ1ZSIgdGl0bGU9ImNsYXNzIG9yIGludGVyZmFjZSBpbiBqYXZhLmlvIj5DbG9zZWFibGU8L2E+PC9kZD4NCjwvZGw+DQo8aHI+DQo8YnI+DQo8cHJlPnB1YmxpYyBpbnRlcmZhY2UgPHNwYW4gY2xhc3M9InN0cm9uZyI+SWduaXRlU2VtYXBob3JlPC9zcGFuPg0KZXh0ZW5kcyA8YSBocmVmPSJodHRwOi8vZG9jcy5vcmFjbGUuY29tL2phdmFzZS83L2RvY3MvYXBpL2phdmEvaW8vQ2xvc2VhYmxlLmh0bWw/aXMtZXh0ZXJuYWw9dHJ1ZSIgdGl0bGU9ImNsYXNzIG9yIGludGVyZmFjZSBpbiBqYXZhLmlvIj5DbG9zZWFibGU8L2E+PC9wcmU+DQo8ZGl2IGNsYXNzPSJibG9jayI+VGhpcyBpbnRlcmZhY2UgcHJvdmlkZXMgYSByaWNoIEFQSSBmb3Igd29ya2luZyB3aXRoIGRpc3RyaWJ1dGVkIHNlbWFwaG9yZS4KIDxwPgogPGgxIGNsYXNzPSJoZWFkZXIiPkZ1bmN0aW9uYWxpdHk8L2gxPgogRGlzdHJpYnV0ZWQgc2VtYXBob3JlIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byA8Y29kZT5qYXZhLnV0aWwuY29uY3VycmVudC5TZW1hcGhvcmU8L2NvZGU+LgogPGgxIGNsYXNzPSJoZWFkZXIiPkNyZWF0aW5nIERpc3RyaWJ1dGVkIFNlbWFwaG9yZTwvaDE+CiBJbnN0YW5jZSBvZiBjYWNoZSBzZW1hcGhvcmUgY2FuIGJlIGNyZWF0ZWQgYnkgY2FsbGluZyB0aGUgZm9sbG93aW5nIG1ldGhvZDoKIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9hcGFjaGUvaWduaXRlL0lnbml0ZS5odG1sI3NlbWFwaG9yZShqYXZhLmxhbmcuU3RyaW5nLCUyMGludCwlMjBib29sZWFuLCUyMGJvb2xlYW4pIj48Y29kZT5JZ25pdGUuc2VtYXBob3JlKFN0cmluZywgaW50LCBib29sZWFuLCBib29sZWFuKTwvY29kZT48L2E+LjwvZGl2Pg0KPC9saT4NCjwvdWw+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9InN1bW1hcnkiPg0KPHVsIGNsYXNzPSJibG9ja0xpc3QiPg0KPGxpIGNsYXNzPSJibG9ja0xpc3QiPg0KPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPg0KPHVsIGNsYXNzPSJibG9ja0xpc3QiPg0KPGxpIGNsYXNzPSJibG9ja0xpc3QiPjxhIG5hbWU9Im1ldGhvZF9zdW1tYXJ5Ij4NCjwhLS0gICAtLT4NCjwvYT4NCjxoMz5NZXRob2QgU3VtbWFyeTwvaDM+DQo8dGFibGUgY2xhc3M9Im92ZXJ2aWV3U3VtbWFyeSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMyIgY2VsbHNwYWNpbmc9IjAiIHN1bW1hcnk9Ik1ldGhvZCBTdW1tYXJ5IHRhYmxlLCBsaXN0aW5nIG1ldGhvZHMsIGFuZCBhbiBleHBsYW5hdGlvbiI+DQo8Y2FwdGlvbj48c3Bhbj5NZXRob2RzPC9zcGFuPjxzcGFuIGNsYXNzPSJ0YWJFbmQiPiZuYnNwOzwvc3Bhbj48L2NhcHRpb24+DQo8dHI+DQo8dGggY2xhc3M9ImNvbEZpcnN0IiBzY29wZT0iY29sIj5Nb2RpZmllciBhbmQgVHlwZTwvdGg+DQo8dGggY2xhc3M9ImNvbExhc3QiIHNjb3BlPSJjb2wiPk1ldGhvZCBhbmQgRGVzY3JpcHRpb248L3RoPg0KPC90cj4NCjx0ciBjbGFzcz0iYWx0Q29sb3IiPg0KPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+dm9pZDwvY29kZT48L3RkPg0KPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9hcGFjaGUvaWduaXRlL0lnbml0ZVNlbWFwaG9yZS5odG1sI2FjcXVpcmUoKSI+YWNxdWlyZTwvYT48L3N0cm9uZz4oKTwvY29kZT4NCjxkaXYgY2xhc3M9ImJsb2NrIj5BY3F1aXJlcyBhIHBlcm1pdCBmcm9tIHRoaXMgc2VtYXBob3JlLCBibG9ja2luZyB1bnRpbCBvbmUgaXMgYXZhaWxhYmxlLCBvciB0aGUgdGhyZWFkIGlzIDxhIGhyZWY9Imh0dHA6Ly9kb2NzLm9yYWNsZS5jb20vamF2YXNlLzcvZG9jcy9hcGkvamF2YS9sYW5nL1RocmVhZC5odG1sP2lzLWV4dGVybmFsPXRydWUjaW50ZXJydXB0KCkiIHRpdGxlPSJjbGFzcyBvciBpbnRlcmZhY2UgaW4gamF2YS5sYW5nIj5pbnRlcnJ1cHRlZDwvYT4uPC9kaXY+DQo8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0icm93Q29sb3IiPg0KPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+dm9pZDwvY29kZT48L3RkPg0KPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9hcGFjaGUvaWduaXRlL0lnbml0ZVNlbWFwaG9yZS5odG1sI2FjcXVpcmUoaW50KSI+YWNxdWlyZTwvYT48L3N0cm9uZz4oaW50Jm5ic3A7cGVybWl0cyk8L2NvZGU+DQo8ZGl2IGNsYXNzPSJibG9jayI+QWNxdWlyZXMgdGhlIGdpdmVuIG51bWJlciBvZiBwZXJtaXRzIGZyb20gdGhpcyBzZW1hcGhvcmUsIGJsb2NraW5nIHVudGlsIGFsbCBhcmUgYXZhaWxhYmxlLCBvciB0aGUgdGhyZWFkIGlzCiA8YSBocmVmPSJodHRwOi8vZG9jcy5vcmFjbGUuY29tL2phdmFzZS83L2RvY3MvYXBpL2phdmEvbGFuZy9UaHJlYWQuaHRtbD9pcy1leHRlcm5hbD10cnVlI2ludGVycnVwdCgpIiB0aXRsZT0iY2xhc3Mgb3IgaW50ZXJmYWNlIGluIGphdmEubGFuZyI+aW50ZXJydXB0ZWQ8L2E+LjwvZGl2Pg0KPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9ImFsdENvbG9yIj4NCjx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnZvaWQ8L2NvZGU+PC90ZD4NCjx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvYXBhY2hlL2lnbml0ZS9JZ25pdGVTZW1hcGhvcmUuaHRtbCNhY3F1aXJlVW5pbnRlcnJ1cHRpYmx5KCkiPmFjcXVpcmVVbmludGVycnVwdGlibHk8L2E+PC9zdHJvbmc+KCk8L2NvZGU+DQo8ZGl2IGNsYXNzPSJibG9jayI+QWNxdWlyZXMgYSBwZXJtaXQgZnJvbSB0aGlzIHNlbWFwaG9yZSwgYmxvY2tpbmcgdW50aWwgb25lIGlzIGF2YWlsYWJsZS48L2Rpdj4NCjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3dDb2xvciI+DQo8dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT52b2lkPC9jb2RlPjwvdGQ+DQo8dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2FwYWNoZS9pZ25pdGUvSWduaXRlU2VtYXBob3JlLmh0bWwjYWNxdWlyZVVuaW50ZXJydXB0aWJseShpbnQpIj5hY3F1aXJlVW5pbnRlcnJ1cHRpYmx5PC9hPjwvc3Ryb25nPihpbnQmbmJzcDtwZXJtaXRzKTwvY29kZT4NCjxkaXYgY2xhc3M9ImJsb2NrIj5BY3F1aXJlcyB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHBlcm1pdHMgZnJvbSB0aGlzIHNlbWFwaG9yZSwgYmxvY2tpbmcgdW50aWwgYWxsIGFyZSBhdmFpbGFibGUuPC9kaXY+DQo8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0iYWx0Q29sb3IiPg0KPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+aW50PC9jb2RlPjwvdGQ+DQo8dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2FwYWNoZS9pZ25pdGUvSWduaXRlU2VtYXBob3JlLmh0bWwjYXZhaWxhYmxlUGVybWl0cygpIj5hdmFpbGFibGVQZXJtaXRzPC9hPjwvc3Ryb25nPigpPC9jb2RlPg0KPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIGN1cnJlbnQgbnVtYmVyIG9mIHBlcm1pdHMgYXZhaWxhYmxlIGluIHRoaXMgc2VtYXBob3JlLjwvZGl2Pg0KPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvd0NvbG9yIj4NCjx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnZvaWQ8L2NvZGU+PC90ZD4NCjx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvYXBhY2hlL2lnbml0ZS9JZ25pdGVTZW1hcGhvcmUuaHRtbCNjbG9zZSgpIj5jbG9zZTwvYT48L3N0cm9uZz4oKTwvY29kZT4NCjxkaXYgY2xhc3M9ImJsb2NrIj5SZW1vdmVzIHRoaXMgc2VtYXBob3JlLjwvZGl2Pg0KPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9ImFsdENvbG9yIj4NCjx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPmludDwvY29kZT48L3RkPg0KPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9hcGFjaGUvaWduaXRlL0lnbml0ZVNlbWFwaG9yZS5odG1sI2RyYWluUGVybWl0cygpIj5kcmFpblBlcm1pdHM8L2E+PC9zdHJvbmc+KCk8L2NvZGU+DQo8ZGl2IGNsYXNzPSJibG9jayI+QWNxdWlyZXMgYW5kIHJldHVybnMgYWxsIHBlcm1pdHMgdGhhdCBhcmUgaW1tZWRpYXRlbHkgYXZhaWxhYmxlLjwvZGl2Pg0KPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvd0NvbG9yIj4NCjx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPmludDwvY29kZT48L3RkPg0KPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9hcGFjaGUvaWduaXRlL0lnbml0ZVNlbWFwaG9yZS5odG1sI2dldFF1ZXVlTGVuZ3RoKCkiPmdldFF1ZXVlTGVuZ3RoPC9hPjwvc3Ryb25nPigpPC9jb2RlPg0KPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgYW4gZXN0aW1hdGUgb2YgdGhlIG51bWJlciBvZiBub2RlcyB3YWl0aW5nIHRvIGFjcXVpcmUuPC9kaXY+DQo8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0iYWx0Q29sb3IiPg0KPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+Ym9vbGVhbjwvY29kZT48L3RkPg0KPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9hcGFjaGUvaWduaXRlL0lnbml0ZVNlbWFwaG9yZS5odG1sI2hhc1F1ZXVlZFRocmVhZHMoKSI+aGFzUXVldWVkVGhyZWFkczwvYT48L3N0cm9uZz4oKTwvY29kZT4NCjxkaXYgY2xhc3M9ImJsb2NrIj5RdWVyaWVzIHdoZXRoZXIgYW55IHRocmVhZHMgYXJlIHdhaXRpbmcgdG8gYWNxdWlyZS48L2Rpdj4NCjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3dDb2xvciI+DQo8dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5ib29sZWFuPC9jb2RlPjwvdGQ+DQo8dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2FwYWNoZS9pZ25pdGUvSWduaXRlU2VtYXBob3JlLmh0bWwjaXNCcm9rZW4oKSI+aXNCcm9rZW48L2E+PC9zdHJvbmc+KCk8L2NvZGU+DQo8ZGl2IGNsYXNzPSJibG9jayI+R2V0cyA8Y29kZT5icm9rZW48L2NvZGU+IHN0YXR1cyBvZiB0aGUgc2VtYXBob3JlLjwvZGl2Pg0KPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9ImFsdENvbG9yIj4NCjx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPmJvb2xlYW48L2NvZGU+PC90ZD4NCjx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvYXBhY2hlL2lnbml0ZS9JZ25pdGVTZW1hcGhvcmUuaHRtbCNpc0ZhaWxvdmVyU2FmZSgpIj5pc0ZhaWxvdmVyU2FmZTwvYT48L3N0cm9uZz4oKTwvY29kZT4NCjxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoaXMgc2VtYXBob3JlIGlzIHNhZmUgdG8gdXNlIGFmdGVyIG5vZGUgZmFpbHVyZS48L2Rpdj4NCjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3dDb2xvciI+DQo8dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT48YSBocmVmPSJodHRwOi8vZG9jcy5vcmFjbGUuY29tL2phdmFzZS83L2RvY3MvYXBpL2phdmEvbGFuZy9TdHJpbmcuaHRtbD9pcy1leHRlcm5hbD10cnVlIiB0aXRsZT0iY2xhc3Mgb3IgaW50ZXJmYWNlIGluIGphdmEubGFuZyI+U3RyaW5nPC9hPjwvY29kZT48L3RkPg0KPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9hcGFjaGUvaWduaXRlL0lnbml0ZVNlbWFwaG9yZS5odG1sI25hbWUoKSI+bmFtZTwvYT48L3N0cm9uZz4oKTwvY29kZT4NCjxkaXYgY2xhc3M9ImJsb2NrIj5HZXRzIG5hbWUgb2YgdGhlIHNlbWFwaG9yZS48L2Rpdj4NCjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJhbHRDb2xvciI+DQo8dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT52b2lkPC9jb2RlPjwvdGQ+DQo8dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2FwYWNoZS9pZ25pdGUvSWduaXRlU2VtYXBob3JlLmh0bWwjcmVsZWFzZSgpIj5yZWxlYXNlPC9hPjwvc3Ryb25nPigpPC9jb2RlPg0KPGRpdiBjbGFzcz0iYmxvY2siPlJlbGVhc2VzIGEgcGVybWl0LCByZXR1cm5pbmcgaXQgdG8gdGhlIHNlbWFwaG9yZS48L2Rpdj4NCjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3dDb2xvciI+DQo8dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT52b2lkPC9jb2RlPjwvdGQ+DQo8dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2FwYWNoZS9pZ25pdGUvSWduaXRlU2VtYXBob3JlLmh0bWwjcmVsZWFzZShpbnQpIj5yZWxlYXNlPC9hPjwvc3Ryb25nPihpbnQmbmJzcDtwZXJtaXRzKTwvY29kZT4NCjxkaXYgY2xhc3M9ImJsb2NrIj5SZWxlYXNlcyB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHBlcm1pdHMsIHJldHVybmluZyB0aGVtIHRvIHRoZSBzZW1hcGhvcmUuPC9kaXY+DQo8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0iYWx0Q29sb3IiPg0KPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+Ym9vbGVhbjwvY29kZT48L3RkPg0KPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9hcGFjaGUvaWduaXRlL0lnbml0ZVNlbWFwaG9yZS5odG1sI3JlbW92ZWQoKSI+cmVtb3ZlZDwvYT48L3N0cm9uZz4oKTwvY29kZT4NCjxkaXYgY2xhc3M9ImJsb2NrIj5HZXRzIDxjb2RlPnJlbW92ZWQ8L2NvZGU+IHN0YXR1cyBvZiB0aGUgc2VtYXBob3JlLjwvZGl2Pg0KPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9InJvd0NvbG9yIj4NCjx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPmJvb2xlYW48L2NvZGU+PC90ZD4NCjx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvYXBhY2hlL2lnbml0ZS9JZ25pdGVTZW1hcGhvcmUuaHRtbCN0cnlBY3F1aXJlKCkiPnRyeUFjcXVpcmU8L2E+PC9zdHJvbmc+KCk8L2NvZGU+DQo8ZGl2IGNsYXNzPSJibG9jayI+QWNxdWlyZXMgYSBwZXJtaXQgZnJvbSB0aGlzIHNlbWFwaG9yZSwgb25seSBpZiBvbmUgaXMgYXZhaWxhYmxlIGF0IHRoZSB0aW1lIG9mIGludm9jYXRpb24uPC9kaXY+DQo8L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0iYWx0Q29sb3IiPg0KPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+Ym9vbGVhbjwvY29kZT48L3RkPg0KPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9hcGFjaGUvaWduaXRlL0lnbml0ZVNlbWFwaG9yZS5odG1sI3RyeUFjcXVpcmUoaW50KSI+dHJ5QWNxdWlyZTwvYT48L3N0cm9uZz4oaW50Jm5ic3A7cGVybWl0cyk8L2NvZGU+DQo8ZGl2IGNsYXNzPSJibG9jayI+QWNxdWlyZXMgdGhlIGdpdmVuIG51bWJlciBvZiBwZXJtaXRzIGZyb20gdGhpcyBzZW1hcGhvcmUsIG9ubHkgaWYgYWxsIGFyZSBhdmFpbGFibGUgYXQgdGhlIHRpbWUgb2YgaW52b2NhdGlvbi48L2Rpdj4NCjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJyb3dDb2xvciI+DQo8dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5ib29sZWFuPC9jb2RlPjwvdGQ+DQo8dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2FwYWNoZS9pZ25pdGUvSWduaXRlU2VtYXBob3JlLmh0bWwjdHJ5QWNxdWlyZShpbnQsJTIwbG9uZywlMjBqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCkiPnRyeUFjcXVpcmU8L2E+PC9zdHJvbmc+KGludCZuYnNwO3Blcm1pdHMsDQogICAgICAgICAgbG9uZyZuYnNwO3RpbWVvdXQsDQogICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvNy9kb2NzL2FwaS9qYXZhL3V0aWwvY29uY3VycmVudC9UaW1lVW5pdC5odG1sP2lzLWV4dGVybmFsPXRydWUiIHRpdGxlPSJjbGFzcyBvciBpbnRlcmZhY2UgaW4gamF2YS51dGlsLmNvbmN1cnJlbnQiPlRpbWVVbml0PC9hPiZuYnNwO3VuaXQpPC9jb2RlPg0KPGRpdiBjbGFzcz0iYmxvY2siPkFjcXVpcmVzIHRoZSBnaXZlbiBudW1iZXIgb2YgcGVybWl0cyBmcm9tIHRoaXMgc2VtYXBob3JlLCBpZiBhbGwgYmVjb21lIGF2YWlsYWJsZSB3aXRoaW4gdGhlIGdpdmVuIHdhaXRpbmcgdGltZQogYW5kIHRoZSBjdXJyZW50IHRocmVhZCBoYXMgbm90IGJlZW4gPGEgaHJlZj0iaHR0cDovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvNy9kb2NzL2FwaS9qYXZhL2xhbmcvVGhyZWFkLmh0bWw/aXMtZXh0ZXJuYWw9dHJ1ZSNpbnRlcnJ1cHQoKSIgdGl0bGU9ImNsYXNzIG9yIGludGVyZmFjZSBpbiBqYXZhLmxhbmciPmludGVycnVwdGVkPC9hPi48L2Rpdj4NCjwvdGQ+DQo8L3RyPg0KPHRyIGNsYXNzPSJhbHRDb2xvciI+DQo8dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5ib29sZWFuPC9jb2RlPjwvdGQ+DQo8dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2FwYWNoZS9pZ25pdGUvSWduaXRlU2VtYXBob3JlLmh0bWwjdHJ5QWNxdWlyZShsb25nLCUyMGphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0KSI+dHJ5QWNxdWlyZTwvYT48L3N0cm9uZz4obG9uZyZuYnNwO3RpbWVvdXQsDQogICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvNy9kb2NzL2FwaS9qYXZhL3V0aWwvY29uY3VycmVudC9UaW1lVW5pdC5odG1sP2lzLWV4dGVybmFsPXRydWUiIHRpdGxlPSJjbGFzcyBvciBpbnRlcmZhY2UgaW4gamF2YS51dGlsLmNvbmN1cnJlbnQiPlRpbWVVbml0PC9hPiZuYnNwO3VuaXQpPC9jb2RlPg0KPGRpdiBjbGFzcz0iYmxvY2siPkFjcXVpcmVzIGEgcGVybWl0IGZyb20gdGhpcyBzZW1hcGhvcmUsIGlmIG9uZSBiZWNvbWVzIGF2YWlsYWJsZSB3aXRoaW4gdGhlIGdpdmVuIHdhaXRpbmcgdGltZSBhbmQgdGhlIGN1cnJlbnQKIHRocmVhZCBoYXMgbm90IGJlZW4gPGEgaHJlZj0iaHR0cDovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvNy9kb2NzL2FwaS9qYXZhL2xhbmcvVGhyZWFkLmh0bWw/aXMtZXh0ZXJuYWw9dHJ1ZSNpbnRlcnJ1cHQoKSIgdGl0bGU9ImNsYXNzIG9yIGludGVyZmFjZSBpbiBqYXZhLmxhbmciPmludGVycnVwdGVkPC9hPi48L2Rpdj4NCjwvdGQ+DQo8L3RyPg0KPC90YWJsZT4NCjwvbGk+DQo8L3VsPg0KPC9saT4NCjwvdWw+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9ImRldGFpbHMiPg0KPHVsIGNsYXNzPSJibG9ja0xpc3QiPg0KPGxpIGNsYXNzPSJibG9ja0xpc3QiPg0KPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPg0KPHVsIGNsYXNzPSJibG9ja0xpc3QiPg0KPGxpIGNsYXNzPSJibG9ja0xpc3QiPjxhIG5hbWU9Im1ldGhvZF9kZXRhaWwiPg0KPCEtLSAgIC0tPg0KPC9hPg0KPGgzPk1ldGhvZCBEZXRhaWw8L2gzPg0KPGEgbmFtZT0ibmFtZSgpIj4NCjwhLS0gICAtLT4NCjwvYT4NCjx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4NCjxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4NCjxoND5uYW1lPC9oND4NCjxwcmU+PGEgaHJlZj0iaHR0cDovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvNy9kb2NzL2FwaS9qYXZhL2xhbmcvU3RyaW5nLmh0bWw/aXMtZXh0ZXJuYWw9dHJ1ZSIgdGl0bGU9ImNsYXNzIG9yIGludGVyZmFjZSBpbiBqYXZhLmxhbmciPlN0cmluZzwvYT4mbmJzcDtuYW1lKCk8L3ByZT4NCjxkaXYgY2xhc3M9ImJsb2NrIj5HZXRzIG5hbWUgb2YgdGhlIHNlbWFwaG9yZS48L2Rpdj4NCjxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+TmFtZSBvZiB0aGUgc2VtYXBob3JlLjwvZGQ+PC9kbD4NCjwvbGk+DQo8L3VsPg0KPGEgbmFtZT0iYWNxdWlyZSgpIj4NCjwhLS0gICAtLT4NCjwvYT4NCjx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4NCjxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4NCjxoND5hY3F1aXJlPC9oND4NCjxwcmU+dm9pZCZuYnNwO2FjcXVpcmUoKQ0KICAgICAgICAgICAgIHRocm93cyA8YSBocmVmPSIuLi8uLi8uLi9vcmcvYXBhY2hlL2lnbml0ZS9JZ25pdGVJbnRlcnJ1cHRlZEV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmFwYWNoZS5pZ25pdGUiPklnbml0ZUludGVycnVwdGVkRXhjZXB0aW9uPC9hPjwvcHJlPg0KPGRpdiBjbGFzcz0iYmxvY2siPkFjcXVpcmVzIGEgcGVybWl0IGZyb20gdGhpcyBzZW1hcGhvcmUsIGJsb2NraW5nIHVudGlsIG9uZSBpcyBhdmFpbGFibGUsIG9yIHRoZSB0aHJlYWQgaXMgPGEgaHJlZj0iaHR0cDovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvNy9kb2NzL2FwaS9qYXZhL2xhbmcvVGhyZWFkLmh0bWw/aXMtZXh0ZXJuYWw9dHJ1ZSNpbnRlcnJ1cHQoKSIgdGl0bGU9ImNsYXNzIG9yIGludGVyZmFjZSBpbiBqYXZhLmxhbmciPmludGVycnVwdGVkPC9hPi4KCiA8cD5BY3F1aXJlcyBhIHBlcm1pdCwgaWYgb25lIGlzIGF2YWlsYWJsZSBhbmQgcmV0dXJucyBpbW1lZGlhdGVseSwgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBhdmFpbGFibGUgcGVybWl0cyBieQogb25lLgoKIDxwPklmIG5vIHBlcm1pdCBpcyBhdmFpbGFibGUgdGhlbiB0aGUgY3VycmVudCB0aHJlYWQgYmVjb21lcyBkaXNhYmxlZCBmb3IgdGhyZWFkIHNjaGVkdWxpbmcgcHVycG9zZXMgYW5kIGxpZXMKIGRvcm1hbnQgdW50aWwgb25lIG9mIHR3byB0aGluZ3MgaGFwcGVuczogPHVsPiA8bGk+U29tZSBvdGhlciB0aHJlYWQgaW52b2tlcyB0aGUgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2FwYWNoZS9pZ25pdGUvSWduaXRlU2VtYXBob3JlLmh0bWwjcmVsZWFzZSgpIj48Y29kZT5yZWxlYXNlKCk8L2NvZGU+PC9hPiBtZXRob2QgZm9yIHRoaXMKIHNlbWFwaG9yZSBhbmQgdGhlIGN1cnJlbnQgdGhyZWFkIGlzIG5leHQgdG8gYmUgYXNzaWduZWQgYSBwZXJtaXQ7IG9yIDxsaT5Tb21lIG90aGVyIHRocmVhZCA8YSBocmVmPSJodHRwOi8vZG9jcy5vcmFjbGUuY29tL2phdmFzZS83L2RvY3MvYXBpL2phdmEvbGFuZy9UaHJlYWQuaHRtbD9pcy1leHRlcm5hbD10cnVlI2ludGVycnVwdCgpIiB0aXRsZT0iY2xhc3Mgb3IgaW50ZXJmYWNlIGluIGphdmEubGFuZyI+aW50ZXJydXB0czwvYT4gdGhlIGN1cnJlbnQgdGhyZWFkLiA8L3VsPgoKIDxwPklmIHRoZSBjdXJyZW50IHRocmVhZDogPHVsPiA8bGk+aGFzIGl0cyBpbnRlcnJ1cHRlZCBzdGF0dXMgc2V0IG9uIGVudHJ5IHRvIHRoaXMgbWV0aG9kOyBvciA8bGk+aXMgPGEgaHJlZj0iaHR0cDovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvNy9kb2NzL2FwaS9qYXZhL2xhbmcvVGhyZWFkLmh0bWw/aXMtZXh0ZXJuYWw9dHJ1ZSNpbnRlcnJ1cHQoKSIgdGl0bGU9ImNsYXNzIG9yIGludGVyZmFjZSBpbiBqYXZhLmxhbmciPmludGVycnVwdGVkPC9hPiB3aGlsZSB3YWl0aW5nIGZvciBhIHBlcm1pdCwgPC91bD4gdGhlbiA8YSBocmVmPSIuLi8uLi8uLi9vcmcvYXBhY2hlL2lnbml0ZS9JZ25pdGVJbnRlcnJ1cHRlZEV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmFwYWNoZS5pZ25pdGUiPjxjb2RlPklnbml0ZUludGVycnVwdGVkRXhjZXB0aW9uPC9jb2RlPjwvYT4gaXMgdGhyb3duCiBhbmQgdGhlIGN1cnJlbnQgdGhyZWFkJ3MgaW50ZXJydXB0ZWQgc3RhdHVzIGlzIGNsZWFyZWQuPC9kaXY+DQo8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlRocm93czo8L3NwYW4+PC9kdD4NCjxkZD48Y29kZT48YSBocmVmPSIuLi8uLi8uLi9vcmcvYXBhY2hlL2lnbml0ZS9JZ25pdGVJbnRlcnJ1cHRlZEV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmFwYWNoZS5pZ25pdGUiPklnbml0ZUludGVycnVwdGVkRXhjZXB0aW9uPC9hPjwvY29kZT4gLSBpZiB0aGUgY3VycmVudCB0aHJlYWQgaXMgaW50ZXJydXB0ZWQ8L2RkPjwvZGw+DQo8L2xpPg0KPC91bD4NCjxhIG5hbWU9ImFjcXVpcmVVbmludGVycnVwdGlibHkoKSI+DQo8IS0tICAgLS0+DQo8L2E+DQo8dWwgY2xhc3M9ImJsb2NrTGlzdCI+DQo8bGkgY2xhc3M9ImJsb2NrTGlzdCI+DQo8aDQ+YWNxdWlyZVVuaW50ZXJydXB0aWJseTwvaDQ+DQo8cHJlPnZvaWQmbmJzcDthY3F1aXJlVW5pbnRlcnJ1cHRpYmx5KCk8L3ByZT4NCjxkaXYgY2xhc3M9ImJsb2NrIj5BY3F1aXJlcyBhIHBlcm1pdCBmcm9tIHRoaXMgc2VtYXBob3JlLCBibG9ja2luZyB1bnRpbCBvbmUgaXMgYXZhaWxhYmxlLgoKIDxwPkFjcXVpcmVzIGEgcGVybWl0LCBpZiBvbmUgaXMgYXZhaWxhYmxlIGFuZCByZXR1cm5zIGltbWVkaWF0ZWx5LCByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIGF2YWlsYWJsZSBwZXJtaXRzIGJ5CiBvbmUuCgogPHA+SWYgbm8gcGVybWl0IGlzIGF2YWlsYWJsZSB0aGVuIHRoZSBjdXJyZW50IHRocmVhZCBiZWNvbWVzIGRpc2FibGVkIGZvciB0aHJlYWQgc2NoZWR1bGluZyBwdXJwb3NlcyBhbmQgbGllcwogZG9ybWFudCB1bnRpbCBzb21lIG90aGVyIHRocmVhZCBpbnZva2VzIHRoZSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvYXBhY2hlL2lnbml0ZS9JZ25pdGVTZW1hcGhvcmUuaHRtbCNyZWxlYXNlKCkiPjxjb2RlPnJlbGVhc2UoKTwvY29kZT48L2E+IG1ldGhvZCBmb3IgdGhpcyBzZW1hcGhvcmUgYW5kIHRoZSBjdXJyZW50IHRocmVhZCBpcwogbmV4dCB0byBiZSBhc3NpZ25lZCBhIHBlcm1pdC4KCiA8cD5JZiB0aGUgY3VycmVudCB0aHJlYWQgaXMgPGEgaHJlZj0iaHR0cDovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvNy9kb2NzL2FwaS9qYXZhL2xhbmcvVGhyZWFkLmh0bWw/aXMtZXh0ZXJuYWw9dHJ1ZSNpbnRlcnJ1cHQoKSIgdGl0bGU9ImNsYXNzIG9yIGludGVyZmFjZSBpbiBqYXZhLmxhbmciPmludGVycnVwdGVkPC9hPiB3aGlsZSB3YWl0aW5nIGZvciBhIHBlcm1pdCB0aGVuIGl0IHdpbGwKIGNvbnRpbnVlIHRvIHdhaXQsIGJ1dCB0aGUgdGltZSBhdCB3aGljaCB0aGUgdGhyZWFkIGlzIGFzc2lnbmVkIGEgcGVybWl0IG1heSBjaGFuZ2UgY29tcGFyZWQgdG8gdGhlIHRpbWUgaXQgd291bGQKIGhhdmUgcmVjZWl2ZWQgdGhlIHBlcm1pdCBoYWQgbm8gaW50ZXJydXB0aW9uIG9jY3VycmVkLiAgV2hlbiB0aGUgdGhyZWFkIGRvZXMgcmV0dXJuIGZyb20gdGhpcyBtZXRob2QgaXRzCiBpbnRlcnJ1cHQgc3RhdHVzIHdpbGwgYmUgc2V0LjwvZGl2Pg0KPC9saT4NCjwvdWw+DQo8YSBuYW1lPSJ0cnlBY3F1aXJlKCkiPg0KPCEtLSAgIC0tPg0KPC9hPg0KPHVsIGNsYXNzPSJibG9ja0xpc3QiPg0KPGxpIGNsYXNzPSJibG9ja0xpc3QiPg0KPGg0PnRyeUFjcXVpcmU8L2g0Pg0KPHByZT5ib29sZWFuJm5ic3A7dHJ5QWNxdWlyZSgpPC9wcmU+DQo8ZGl2IGNsYXNzPSJibG9jayI+QWNxdWlyZXMgYSBwZXJtaXQgZnJvbSB0aGlzIHNlbWFwaG9yZSwgb25seSBpZiBvbmUgaXMgYXZhaWxhYmxlIGF0IHRoZSB0aW1lIG9mIGludm9jYXRpb24uCgogPHA+QWNxdWlyZXMgYSBwZXJtaXQsIGlmIG9uZSBpcyBhdmFpbGFibGUgYW5kIHJldHVybnMgaW1tZWRpYXRlbHksIHdpdGggdGhlIHZhbHVlIDxjb2RlPnRydWU8L2NvZGU+LCByZWR1Y2luZyB0aGUKIG51bWJlciBvZiBhdmFpbGFibGUgcGVybWl0cyBieSBvbmUuCgogPHA+SWYgbm8gcGVybWl0IGlzIGF2YWlsYWJsZSB0aGVuIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIGltbWVkaWF0ZWx5IHdpdGggdGhlIHZhbHVlIDxjb2RlPmZhbHNlPC9jb2RlPi48L2Rpdj4NCjxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+dHJ1ZTwvY29kZT4gaWYgYSBwZXJtaXQgd2FzIGFjcXVpcmVkIGFuZCA8Y29kZT5mYWxzZTwvY29kZT4gb3RoZXJ3aXNlPC9kZD48L2RsPg0KPC9saT4NCjwvdWw+DQo8YSBuYW1lPSJ0cnlBY3F1aXJlKGxvbmcsIGphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0KSI+DQo8IS0tICAgLS0+DQo8L2E+DQo8dWwgY2xhc3M9ImJsb2NrTGlzdCI+DQo8bGkgY2xhc3M9ImJsb2NrTGlzdCI+DQo8aDQ+dHJ5QWNxdWlyZTwvaDQ+DQo8cHJlPmJvb2xlYW4mbmJzcDt0cnlBY3F1aXJlKGxvbmcmbmJzcDt0aW1lb3V0LA0KICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vZG9jcy5vcmFjbGUuY29tL2phdmFzZS83L2RvY3MvYXBpL2phdmEvdXRpbC9jb25jdXJyZW50L1RpbWVVbml0Lmh0bWw/aXMtZXh0ZXJuYWw9dHJ1ZSIgdGl0bGU9ImNsYXNzIG9yIGludGVyZmFjZSBpbiBqYXZhLnV0aWwuY29uY3VycmVudCI+VGltZVVuaXQ8L2E+Jm5ic3A7dW5pdCkNCiAgICAgICAgICAgICAgICAgICB0aHJvd3MgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2FwYWNoZS9pZ25pdGUvSWduaXRlSW50ZXJydXB0ZWRFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5hcGFjaGUuaWduaXRlIj5JZ25pdGVJbnRlcnJ1cHRlZEV4Y2VwdGlvbjwvYT48L3ByZT4NCjxkaXYgY2xhc3M9ImJsb2NrIj5BY3F1aXJlcyBhIHBlcm1pdCBmcm9tIHRoaXMgc2VtYXBob3JlLCBpZiBvbmUgYmVjb21lcyBhdmFpbGFibGUgd2l0aGluIHRoZSBnaXZlbiB3YWl0aW5nIHRpbWUgYW5kIHRoZSBjdXJyZW50CiB0aHJlYWQgaGFzIG5vdCBiZWVuIDxhIGhyZWY9Imh0dHA6Ly9kb2NzLm9yYWNsZS5jb20vamF2YXNlLzcvZG9jcy9hcGkvamF2YS9sYW5nL1RocmVhZC5odG1sP2lzLWV4dGVybmFsPXRydWUjaW50ZXJydXB0KCkiIHRpdGxlPSJjbGFzcyBvciBpbnRlcmZhY2UgaW4gamF2YS5sYW5nIj5pbnRlcnJ1cHRlZDwvYT4uCgogPHA+QWNxdWlyZXMgYSBwZXJtaXQsIGlmIG9uZSBpcyBhdmFpbGFibGUgYW5kIHJldHVybnMgaW1tZWRpYXRlbHksIHdpdGggdGhlIHZhbHVlIDxjb2RlPnRydWU8L2NvZGU+LCByZWR1Y2luZyB0aGUKIG51bWJlciBvZiBhdmFpbGFibGUgcGVybWl0cyBieSBvbmUuCgogPHA+SWYgbm8gcGVybWl0IGlzIGF2YWlsYWJsZSB0aGVuIHRoZSBjdXJyZW50IHRocmVhZCBiZWNvbWVzIGRpc2FibGVkIGZvciB0aHJlYWQgc2NoZWR1bGluZyBwdXJwb3NlcyBhbmQgbGllcwogZG9ybWFudCB1bnRpbCBvbmUgb2YgdGhyZWUgdGhpbmdzIGhhcHBlbnM6IDx1bD4gPGxpPlNvbWUgb3RoZXIgdGhyZWFkIGludm9rZXMgdGhlIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9hcGFjaGUvaWduaXRlL0lnbml0ZVNlbWFwaG9yZS5odG1sI3JlbGVhc2UoKSI+PGNvZGU+cmVsZWFzZSgpPC9jb2RlPjwvYT4gbWV0aG9kIGZvcgogdGhpcyBzZW1hcGhvcmUgYW5kIHRoZSBjdXJyZW50IHRocmVhZCBpcyBuZXh0IHRvIGJlIGFzc2lnbmVkIGEgcGVybWl0OyBvciA8bGk+U29tZSBvdGhlciB0aHJlYWQgPGEgaHJlZj0iaHR0cDovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvNy9kb2NzL2FwaS9qYXZhL2xhbmcvVGhyZWFkLmh0bWw/aXMtZXh0ZXJuYWw9dHJ1ZSNpbnRlcnJ1cHQoKSIgdGl0bGU9ImNsYXNzIG9yIGludGVyZmFjZSBpbiBqYXZhLmxhbmciPmludGVycnVwdHM8L2E+IHRoZSBjdXJyZW50IHRocmVhZDsgb3IgPGxpPlRoZSBzcGVjaWZpZWQgd2FpdGluZyB0aW1lIGVsYXBzZXMuIDwvdWw+CgogPHA+SWYgYSBwZXJtaXQgaXMgYWNxdWlyZWQgdGhlbiB0aGUgdmFsdWUgPGNvZGU+dHJ1ZTwvY29kZT4gaXMgcmV0dXJuZWQuCgogPHA+SWYgdGhlIGN1cnJlbnQgdGhyZWFkOiA8dWw+IDxsaT5oYXMgaXRzIGludGVycnVwdGVkIHN0YXR1cyBzZXQgb24gZW50cnkgdG8gdGhpcyBtZXRob2Q7IG9yIDxsaT5pcyA8YSBocmVmPSJodHRwOi8vZG9jcy5vcmFjbGUuY29tL2phdmFzZS83L2RvY3MvYXBpL2phdmEvbGFuZy9UaHJlYWQuaHRtbD9pcy1leHRlcm5hbD10cnVlI2ludGVycnVwdCgpIiB0aXRsZT0iY2xhc3Mgb3IgaW50ZXJmYWNlIGluIGphdmEubGFuZyI+aW50ZXJydXB0ZWQ8L2E+IHdoaWxlIHdhaXRpbmcgdG8gYWNxdWlyZSBhIHBlcm1pdCwgPC91bD4gdGhlbiA8YSBocmVmPSIuLi8uLi8uLi9vcmcvYXBhY2hlL2lnbml0ZS9JZ25pdGVJbnRlcnJ1cHRlZEV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmFwYWNoZS5pZ25pdGUiPjxjb2RlPklnbml0ZUludGVycnVwdGVkRXhjZXB0aW9uPC9jb2RlPjwvYT4gaXMKIHRocm93biBhbmQgdGhlIGN1cnJlbnQgdGhyZWFkJ3MgaW50ZXJydXB0ZWQgc3RhdHVzIGlzIGNsZWFyZWQuCgogPHA+SWYgdGhlIHNwZWNpZmllZCB3YWl0aW5nIHRpbWUgZWxhcHNlcyB0aGVuIHRoZSB2YWx1ZSA8Y29kZT5mYWxzZTwvY29kZT4gaXMgcmV0dXJuZWQuICBJZiB0aGUgdGltZSBpcyBsZXNzIHRoYW4gb3IKIGVxdWFsIHRvIHplcm8sIHRoZSBtZXRob2Qgd2lsbCBub3Qgd2FpdCBhdCBhbGwuPC9kaXY+DQo8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPnRpbWVvdXQ8L2NvZGU+IC0gdGhlIG1heGltdW0gdGltZSB0byB3YWl0IGZvciBhIHBlcm1pdDwvZGQ+PGRkPjxjb2RlPnVuaXQ8L2NvZGU+IC0gdGhlIHRpbWUgdW5pdCBvZiB0aGUgPGNvZGU+dGltZW91dDwvY29kZT4gYXJndW1lbnQ8L2RkPg0KPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPnRydWU8L2NvZGU+IGlmIGEgcGVybWl0IHdhcyBhY3F1aXJlZCBhbmQgPGNvZGU+ZmFsc2U8L2NvZGU+IGlmIHRoZSB3YWl0aW5nIHRpbWUgZWxhcHNlZCBiZWZvcmUgYSBwZXJtaXQgd2FzCiBhY3F1aXJlZDwvZGQ+DQo8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0Pg0KPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9hcGFjaGUvaWduaXRlL0lnbml0ZUludGVycnVwdGVkRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuYXBhY2hlLmlnbml0ZSI+SWduaXRlSW50ZXJydXB0ZWRFeGNlcHRpb248L2E+PC9jb2RlPiAtIGlmIHRoZSBjdXJyZW50IHRocmVhZCBpcyBpbnRlcnJ1cHRlZDwvZGQ+PC9kbD4NCjwvbGk+DQo8L3VsPg0KPGEgbmFtZT0iYWNxdWlyZVVuaW50ZXJydXB0aWJseShpbnQpIj4NCjwhLS0gICAtLT4NCjwvYT4NCjx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4NCjxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4NCjxoND5hY3F1aXJlVW5pbnRlcnJ1cHRpYmx5PC9oND4NCjxwcmU+dm9pZCZuYnNwO2FjcXVpcmVVbmludGVycnVwdGlibHkoaW50Jm5ic3A7cGVybWl0cyk8L3ByZT4NCjxkaXYgY2xhc3M9ImJsb2NrIj5BY3F1aXJlcyB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHBlcm1pdHMgZnJvbSB0aGlzIHNlbWFwaG9yZSwgYmxvY2tpbmcgdW50aWwgYWxsIGFyZSBhdmFpbGFibGUuCgogPHA+QWNxdWlyZXMgdGhlIGdpdmVuIG51bWJlciBvZiBwZXJtaXRzLCBpZiB0aGV5IGFyZSBhdmFpbGFibGUsIGFuZCByZXR1cm5zIGltbWVkaWF0ZWx5LCByZWR1Y2luZyB0aGUgbnVtYmVyIG9mCiBhdmFpbGFibGUgcGVybWl0cyBieSB0aGUgZ2l2ZW4gYW1vdW50LgoKIDxwPklmIGluc3VmZmljaWVudCBwZXJtaXRzIGFyZSBhdmFpbGFibGUgdGhlbiB0aGUgY3VycmVudCB0aHJlYWQgYmVjb21lcyBkaXNhYmxlZCBmb3IgdGhyZWFkIHNjaGVkdWxpbmcgcHVycG9zZXMKIGFuZCBsaWVzIGRvcm1hbnQgdW50aWwgc29tZSBvdGhlciB0aHJlYWQgaW52b2tlcyBvbmUgb2YgdGhlIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9hcGFjaGUvaWduaXRlL0lnbml0ZVNlbWFwaG9yZS5odG1sI3JlbGVhc2UoKSI+PGNvZGU+cmVsZWFzZTwvY29kZT48L2E+IG1ldGhvZHMgZm9yIHRoaXMKIHNlbWFwaG9yZSwgdGhlIGN1cnJlbnQgdGhyZWFkIGlzIG5leHQgdG8gYmUgYXNzaWduZWQgcGVybWl0cyBhbmQgdGhlIG51bWJlciBvZiBhdmFpbGFibGUgcGVybWl0cyBzYXRpc2ZpZXMgdGhpcwogcmVxdWVzdC4KCiA8cD5JZiB0aGUgY3VycmVudCB0aHJlYWQgaXMgPGEgaHJlZj0iaHR0cDovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvNy9kb2NzL2FwaS9qYXZhL2xhbmcvVGhyZWFkLmh0bWw/aXMtZXh0ZXJuYWw9dHJ1ZSNpbnRlcnJ1cHQoKSIgdGl0bGU9ImNsYXNzIG9yIGludGVyZmFjZSBpbiBqYXZhLmxhbmciPmludGVycnVwdGVkPC9hPiB3aGlsZSB3YWl0aW5nIGZvciBwZXJtaXRzIHRoZW4gaXQgd2lsbAogY29udGludWUgdG8gd2FpdCBhbmQgaXRzIHBvc2l0aW9uIGluIHRoZSBxdWV1ZSBpcyBub3QgYWZmZWN0ZWQuICBXaGVuIHRoZSB0aHJlYWQgZG9lcyByZXR1cm4gZnJvbSB0aGlzIG1ldGhvZCBpdHMKIGludGVycnVwdCBzdGF0dXMgd2lsbCBiZSBzZXQuPC9kaXY+DQo8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPnBlcm1pdHM8L2NvZGU+IC0gdGhlIG51bWJlciBvZiBwZXJtaXRzIHRvIGFjcXVpcmU8L2RkPg0KPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlRocm93czo8L3NwYW4+PC9kdD4NCjxkZD48Y29kZT48YSBocmVmPSJodHRwOi8vZG9jcy5vcmFjbGUuY29tL2phdmFzZS83L2RvY3MvYXBpL2phdmEvbGFuZy9JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24uaHRtbD9pcy1leHRlcm5hbD10cnVlIiB0aXRsZT0iY2xhc3Mgb3IgaW50ZXJmYWNlIGluIGphdmEubGFuZyI+SWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uPC9hPjwvY29kZT4gLSBpZiA8Y29kZT5wZXJtaXRzPC9jb2RlPiBpcyBuZWdhdGl2ZTwvZGQ+PC9kbD4NCjwvbGk+DQo8L3VsPg0KPGEgbmFtZT0iYXZhaWxhYmxlUGVybWl0cygpIj4NCjwhLS0gICAtLT4NCjwvYT4NCjx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4NCjxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4NCjxoND5hdmFpbGFibGVQZXJtaXRzPC9oND4NCjxwcmU+aW50Jm5ic3A7YXZhaWxhYmxlUGVybWl0cygpPC9wcmU+DQo8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgY3VycmVudCBudW1iZXIgb2YgcGVybWl0cyBhdmFpbGFibGUgaW4gdGhpcyBzZW1hcGhvcmUuCgogPHA+VGhpcyBtZXRob2QgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZyBhbmQgdGVzdGluZyBwdXJwb3Nlcy48L2Rpdj4NCjxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+dGhlIG51bWJlciBvZiBwZXJtaXRzIGF2YWlsYWJsZSBpbiB0aGlzIHNlbWFwaG9yZTwvZGQ+PC9kbD4NCjwvbGk+DQo8L3VsPg0KPGEgbmFtZT0iZHJhaW5QZXJtaXRzKCkiPg0KPCEtLSAgIC0tPg0KPC9hPg0KPHVsIGNsYXNzPSJibG9ja0xpc3QiPg0KPGxpIGNsYXNzPSJibG9ja0xpc3QiPg0KPGg0PmRyYWluUGVybWl0czwvaDQ+DQo8cHJlPmludCZuYnNwO2RyYWluUGVybWl0cygpPC9wcmU+DQo8ZGl2IGNsYXNzPSJibG9jayI+QWNxdWlyZXMgYW5kIHJldHVybnMgYWxsIHBlcm1pdHMgdGhhdCBhcmUgaW1tZWRpYXRlbHkgYXZhaWxhYmxlLjwvZGl2Pg0KPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD50aGUgbnVtYmVyIG9mIHBlcm1pdHMgYWNxdWlyZWQ8L2RkPjwvZGw+DQo8L2xpPg0KPC91bD4NCjxhIG5hbWU9InJlbGVhc2UoKSI+DQo8IS0tICAgLS0+DQo8L2E+DQo8dWwgY2xhc3M9ImJsb2NrTGlzdCI+DQo8bGkgY2xhc3M9ImJsb2NrTGlzdCI+DQo8aDQ+cmVsZWFzZTwvaDQ+DQo8cHJlPnZvaWQmbmJzcDtyZWxlYXNlKCk8L3ByZT4NCjxkaXYgY2xhc3M9ImJsb2NrIj5SZWxlYXNlcyBhIHBlcm1pdCwgcmV0dXJuaW5nIGl0IHRvIHRoZSBzZW1hcGhvcmUuCgogPHA+UmVsZWFzZXMgYSBwZXJtaXQsIGluY3JlYXNpbmcgdGhlIG51bWJlciBvZiBhdmFpbGFibGUgcGVybWl0cyBieSBvbmUuICBJZiBhbnkgdGhyZWFkcyBhcmUgdHJ5aW5nIHRvIGFjcXVpcmUgYQogcGVybWl0LCB0aGVuIG9uZSBpcyBzZWxlY3RlZCBhbmQgZ2l2ZW4gdGhlIHBlcm1pdCB0aGF0IHdhcyBqdXN0IHJlbGVhc2VkLiAgVGhhdCB0aHJlYWQgaXMgKHJlKWVuYWJsZWQgZm9yIHRocmVhZAogc2NoZWR1bGluZyBwdXJwb3Nlcy4KCiA8cD5UaGVyZSBpcyBubyByZXF1aXJlbWVudCB0aGF0IGEgdGhyZWFkIHRoYXQgcmVsZWFzZXMgYSBwZXJtaXQgbXVzdCBoYXZlIGFjcXVpcmVkIHRoYXQgcGVybWl0IGJ5IGNhbGxpbmcgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2FwYWNoZS9pZ25pdGUvSWduaXRlU2VtYXBob3JlLmh0bWwjYWNxdWlyZSgpIj48Y29kZT5hY3F1aXJlKCk8L2NvZGU+PC9hPi4gQ29ycmVjdCB1c2FnZSBvZiBhIHNlbWFwaG9yZSBpcyBlc3RhYmxpc2hlZCBieSBwcm9ncmFtbWluZyBjb252ZW50aW9uIGluIHRoZSBhcHBsaWNhdGlvbi48L2Rpdj4NCjwvbGk+DQo8L3VsPg0KPGEgbmFtZT0idHJ5QWNxdWlyZShpbnQsIGxvbmcsIGphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0KSI+DQo8IS0tICAgLS0+DQo8L2E+DQo8dWwgY2xhc3M9ImJsb2NrTGlzdCI+DQo8bGkgY2xhc3M9ImJsb2NrTGlzdCI+DQo8aDQ+dHJ5QWNxdWlyZTwvaDQ+DQo8cHJlPmJvb2xlYW4mbmJzcDt0cnlBY3F1aXJlKGludCZuYnNwO3Blcm1pdHMsDQogICAgICAgICAgICAgICAgIGxvbmcmbmJzcDt0aW1lb3V0LA0KICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vZG9jcy5vcmFjbGUuY29tL2phdmFzZS83L2RvY3MvYXBpL2phdmEvdXRpbC9jb25jdXJyZW50L1RpbWVVbml0Lmh0bWw/aXMtZXh0ZXJuYWw9dHJ1ZSIgdGl0bGU9ImNsYXNzIG9yIGludGVyZmFjZSBpbiBqYXZhLnV0aWwuY29uY3VycmVudCI+VGltZVVuaXQ8L2E+Jm5ic3A7dW5pdCkNCiAgICAgICAgICAgICAgICAgICB0aHJvd3MgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2FwYWNoZS9pZ25pdGUvSWduaXRlSW50ZXJydXB0ZWRFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5hcGFjaGUuaWduaXRlIj5JZ25pdGVJbnRlcnJ1cHRlZEV4Y2VwdGlvbjwvYT48L3ByZT4NCjxkaXYgY2xhc3M9ImJsb2NrIj5BY3F1aXJlcyB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHBlcm1pdHMgZnJvbSB0aGlzIHNlbWFwaG9yZSwgaWYgYWxsIGJlY29tZSBhdmFpbGFibGUgd2l0aGluIHRoZSBnaXZlbiB3YWl0aW5nIHRpbWUKIGFuZCB0aGUgY3VycmVudCB0aHJlYWQgaGFzIG5vdCBiZWVuIDxhIGhyZWY9Imh0dHA6Ly9kb2NzLm9yYWNsZS5jb20vamF2YXNlLzcvZG9jcy9hcGkvamF2YS9sYW5nL1RocmVhZC5odG1sP2lzLWV4dGVybmFsPXRydWUjaW50ZXJydXB0KCkiIHRpdGxlPSJjbGFzcyBvciBpbnRlcmZhY2UgaW4gamF2YS5sYW5nIj5pbnRlcnJ1cHRlZDwvYT4uCgogPHA+QWNxdWlyZXMgdGhlIGdpdmVuIG51bWJlciBvZiBwZXJtaXRzLCBpZiB0aGV5IGFyZSBhdmFpbGFibGUgYW5kIHJldHVybnMgaW1tZWRpYXRlbHksIHdpdGggdGhlIHZhbHVlIDxjb2RlPnRydWU8L2NvZGU+LCByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIGF2YWlsYWJsZSBwZXJtaXRzIGJ5IHRoZSBnaXZlbiBhbW91bnQuCgogPHA+SWYgaW5zdWZmaWNpZW50IHBlcm1pdHMgYXJlIGF2YWlsYWJsZSB0aGVuIHRoZSBjdXJyZW50IHRocmVhZCBiZWNvbWVzIGRpc2FibGVkIGZvciB0aHJlYWQgc2NoZWR1bGluZyBwdXJwb3NlcwogYW5kIGxpZXMgZG9ybWFudCB1bnRpbCBvbmUgb2YgdGhyZWUgdGhpbmdzIGhhcHBlbnM6IDx1bD4gPGxpPlNvbWUgb3RoZXIgdGhyZWFkIGludm9rZXMgb25lIG9mIHRoZSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvYXBhY2hlL2lnbml0ZS9JZ25pdGVTZW1hcGhvcmUuaHRtbCNyZWxlYXNlKCkiPjxjb2RlPnJlbGVhc2U8L2NvZGU+PC9hPiBtZXRob2RzIGZvciB0aGlzIHNlbWFwaG9yZSwgdGhlIGN1cnJlbnQgdGhyZWFkIGlzIG5leHQgdG8gYmUgYXNzaWduZWQgcGVybWl0cyBhbmQgdGhlIG51bWJlcgogb2YgYXZhaWxhYmxlIHBlcm1pdHMgc2F0aXNmaWVzIHRoaXMgcmVxdWVzdDsgb3IgPGxpPlNvbWUgb3RoZXIgdGhyZWFkIDxhIGhyZWY9Imh0dHA6Ly9kb2NzLm9yYWNsZS5jb20vamF2YXNlLzcvZG9jcy9hcGkvamF2YS9sYW5nL1RocmVhZC5odG1sP2lzLWV4dGVybmFsPXRydWUjaW50ZXJydXB0KCkiIHRpdGxlPSJjbGFzcyBvciBpbnRlcmZhY2UgaW4gamF2YS5sYW5nIj5pbnRlcnJ1cHRzPC9hPgogdGhlIGN1cnJlbnQgdGhyZWFkOyBvciA8bGk+VGhlIHNwZWNpZmllZCB3YWl0aW5nIHRpbWUgZWxhcHNlcy4gPC91bD4KCiA8cD5JZiB0aGUgcGVybWl0cyBhcmUgYWNxdWlyZWQgdGhlbiB0aGUgdmFsdWUgPGNvZGU+dHJ1ZTwvY29kZT4gaXMgcmV0dXJuZWQuCgogPHA+SWYgdGhlIGN1cnJlbnQgdGhyZWFkOiA8dWw+IDxsaT5oYXMgaXRzIGludGVycnVwdGVkIHN0YXR1cyBzZXQgb24gZW50cnkgdG8gdGhpcyBtZXRob2Q7IG9yIDxsaT5pcyA8YSBocmVmPSJodHRwOi8vZG9jcy5vcmFjbGUuY29tL2phdmFzZS83L2RvY3MvYXBpL2phdmEvbGFuZy9UaHJlYWQuaHRtbD9pcy1leHRlcm5hbD10cnVlI2ludGVycnVwdCgpIiB0aXRsZT0iY2xhc3Mgb3IgaW50ZXJmYWNlIGluIGphdmEubGFuZyI+aW50ZXJydXB0ZWQ8L2E+IHdoaWxlIHdhaXRpbmcgdG8gYWNxdWlyZSB0aGUgcGVybWl0cywgPC91bD4gdGhlbiA8YSBocmVmPSIuLi8uLi8uLi9vcmcvYXBhY2hlL2lnbml0ZS9JZ25pdGVJbnRlcnJ1cHRlZEV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmFwYWNoZS5pZ25pdGUiPjxjb2RlPklnbml0ZUludGVycnVwdGVkRXhjZXB0aW9uPC9jb2RlPjwvYT4KIGlzIHRocm93biBhbmQgdGhlIGN1cnJlbnQgdGhyZWFkJ3MgaW50ZXJydXB0ZWQgc3RhdHVzIGlzIGNsZWFyZWQuIEFueSBwZXJtaXRzIHRoYXQgd2VyZSB0byBiZSBhc3NpZ25lZCB0byB0aGlzCiB0aHJlYWQsIGFyZSBpbnN0ZWFkIGFzc2lnbmVkIHRvIG90aGVyIHRocmVhZHMgdHJ5aW5nIHRvIGFjcXVpcmUgcGVybWl0cywgYXMgaWYgdGhlIHBlcm1pdHMgaGFkIGJlZW4gbWFkZQogYXZhaWxhYmxlIGJ5IGEgY2FsbCB0byA8YSBocmVmPSIuLi8uLi8uLi9vcmcvYXBhY2hlL2lnbml0ZS9JZ25pdGVTZW1hcGhvcmUuaHRtbCNyZWxlYXNlKCkiPjxjb2RlPnJlbGVhc2UoKTwvY29kZT48L2E+LgoKIDxwPklmIHRoZSBzcGVjaWZpZWQgd2FpdGluZyB0aW1lIGVsYXBzZXMgdGhlbiB0aGUgdmFsdWUgPGNvZGU+ZmFsc2U8L2NvZGU+IGlzIHJldHVybmVkLiAgSWYgdGhlIHRpbWUgaXMgbGVzcyB0aGFuIG9yCiBlcXVhbCB0byB6ZXJvLCB0aGUgbWV0aG9kIHdpbGwgbm90IHdhaXQgYXQgYWxsLiAgQW55IHBlcm1pdHMgdGhhdCB3ZXJlIHRvIGJlIGFzc2lnbmVkIHRvIHRoaXMgdGhyZWFkLCBhcmUgaW5zdGVhZAogYXNzaWduZWQgdG8gb3RoZXIgdGhyZWFkcyB0cnlpbmcgdG8gYWNxdWlyZSBwZXJtaXRzLCBhcyBpZiB0aGUgcGVybWl0cyBoYWQgYmVlbiBtYWRlIGF2YWlsYWJsZSBieSBhIGNhbGwgdG8KIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9hcGFjaGUvaWduaXRlL0lnbml0ZVNlbWFwaG9yZS5odG1sI3JlbGVhc2UoKSI+PGNvZGU+cmVsZWFzZSgpPC9jb2RlPjwvYT4uPC9kaXY+DQo8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPnBlcm1pdHM8L2NvZGU+IC0gdGhlIG51bWJlciBvZiBwZXJtaXRzIHRvIGFjcXVpcmU8L2RkPjxkZD48Y29kZT50aW1lb3V0PC9jb2RlPiAtIHRoZSBtYXhpbXVtIHRpbWUgdG8gd2FpdCBmb3IgdGhlIHBlcm1pdHM8L2RkPjxkZD48Y29kZT51bml0PC9jb2RlPiAtIHRoZSB0aW1lIHVuaXQgb2YgdGhlIDxjb2RlPnRpbWVvdXQ8L2NvZGU+IGFyZ3VtZW50PC9kZD4NCjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD48Y29kZT50cnVlPC9jb2RlPiBpZiBhbGwgcGVybWl0cyB3ZXJlIGFjcXVpcmVkIGFuZCA8Y29kZT5mYWxzZTwvY29kZT4gaWYgdGhlIHdhaXRpbmcgdGltZSBlbGFwc2VkIGJlZm9yZSBhbGwKIHBlcm1pdHMgd2VyZSBhY3F1aXJlZDwvZGQ+DQo8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0Pg0KPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9hcGFjaGUvaWduaXRlL0lnbml0ZUludGVycnVwdGVkRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuYXBhY2hlLmlnbml0ZSI+SWduaXRlSW50ZXJydXB0ZWRFeGNlcHRpb248L2E+PC9jb2RlPiAtIGlmIHRoZSBjdXJyZW50IHRocmVhZCBpcyBpbnRlcnJ1cHRlZDwvZGQ+DQo8ZGQ+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvNy9kb2NzL2FwaS9qYXZhL2xhbmcvSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uLmh0bWw/aXMtZXh0ZXJuYWw9dHJ1ZSIgdGl0bGU9ImNsYXNzIG9yIGludGVyZmFjZSBpbiBqYXZhLmxhbmciPklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbjwvYT48L2NvZGU+IC0gaWYgPGNvZGU+cGVybWl0czwvY29kZT4gaXMgbmVnYXRpdmU8L2RkPjwvZGw+DQo8L2xpPg0KPC91bD4NCjxhIG5hbWU9InRyeUFjcXVpcmUoaW50KSI+DQo8IS0tICAgLS0+DQo8L2E+DQo8dWwgY2xhc3M9ImJsb2NrTGlzdCI+DQo8bGkgY2xhc3M9ImJsb2NrTGlzdCI+DQo8aDQ+dHJ5QWNxdWlyZTwvaDQ+DQo8cHJlPmJvb2xlYW4mbmJzcDt0cnlBY3F1aXJlKGludCZuYnNwO3Blcm1pdHMpPC9wcmU+DQo8ZGl2IGNsYXNzPSJibG9jayI+QWNxdWlyZXMgdGhlIGdpdmVuIG51bWJlciBvZiBwZXJtaXRzIGZyb20gdGhpcyBzZW1hcGhvcmUsIG9ubHkgaWYgYWxsIGFyZSBhdmFpbGFibGUgYXQgdGhlIHRpbWUgb2YgaW52b2NhdGlvbi4KCiA8cD5BY3F1aXJlcyB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHBlcm1pdHMsIGlmIHRoZXkgYXJlIGF2YWlsYWJsZSwgYW5kIHJldHVybnMgaW1tZWRpYXRlbHksIHdpdGggdGhlIHZhbHVlIDxjb2RlPnRydWU8L2NvZGU+LCByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIGF2YWlsYWJsZSBwZXJtaXRzIGJ5IHRoZSBnaXZlbiBhbW91bnQuCgogPHA+SWYgaW5zdWZmaWNpZW50IHBlcm1pdHMgYXJlIGF2YWlsYWJsZSB0aGVuIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIGltbWVkaWF0ZWx5IHdpdGggdGhlIHZhbHVlIDxjb2RlPmZhbHNlPC9jb2RlPgogYW5kIHRoZSBudW1iZXIgb2YgYXZhaWxhYmxlIHBlcm1pdHMgaXMgdW5jaGFuZ2VkLgoKIDxwPklmIHlvdSB3YW50IHRvIGhvbm9yIHRoZSBmYWlsb3ZlclNhZmUgc2V0dGluZywgdGhlbiB1c2UgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2FwYWNoZS9pZ25pdGUvSWduaXRlU2VtYXBob3JlLmh0bWwjdHJ5QWNxdWlyZShpbnQsJTIwbG9uZywlMjBqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCkiPjxjb2RlPnRyeUFjcXVpcmUocGVybWl0cywgMCwgVGltZVVuaXQuU0VDT05EUykgPC9jb2RlPjwvYT4gd2hpY2ggaXMgYWxtb3N0IGVxdWl2YWxlbnQgKGl0IGFsc28gZGV0ZWN0cyBpbnRlcnJ1cHRpb24pLjwvZGl2Pg0KPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5wZXJtaXRzPC9jb2RlPiAtIHRoZSBudW1iZXIgb2YgcGVybWl0cyB0byBhY3F1aXJlPC9kZD4NCjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD48Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgcGVybWl0cyB3ZXJlIGFjcXVpcmVkIGFuZCA8Y29kZT5mYWxzZTwvY29kZT4gb3RoZXJ3aXNlPC9kZD4NCjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5UaHJvd3M6PC9zcGFuPjwvZHQ+DQo8ZGQ+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvNy9kb2NzL2FwaS9qYXZhL2xhbmcvSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uLmh0bWw/aXMtZXh0ZXJuYWw9dHJ1ZSIgdGl0bGU9ImNsYXNzIG9yIGludGVyZmFjZSBpbiBqYXZhLmxhbmciPklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbjwvYT48L2NvZGU+IC0gaWYgPGNvZGU+cGVybWl0czwvY29kZT4gaXMgbmVnYXRpdmU8L2RkPjwvZGw+DQo8L2xpPg0KPC91bD4NCjxhIG5hbWU9ImFjcXVpcmUoaW50KSI+DQo8IS0tICAgLS0+DQo8L2E+DQo8dWwgY2xhc3M9ImJsb2NrTGlzdCI+DQo8bGkgY2xhc3M9ImJsb2NrTGlzdCI+DQo8aDQ+YWNxdWlyZTwvaDQ+DQo8cHJlPnZvaWQmbmJzcDthY3F1aXJlKGludCZuYnNwO3Blcm1pdHMpDQogICAgICAgICAgICAgdGhyb3dzIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9hcGFjaGUvaWduaXRlL0lnbml0ZUludGVycnVwdGVkRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuYXBhY2hlLmlnbml0ZSI+SWduaXRlSW50ZXJydXB0ZWRFeGNlcHRpb248L2E+PC9wcmU+DQo8ZGl2IGNsYXNzPSJibG9jayI+QWNxdWlyZXMgdGhlIGdpdmVuIG51bWJlciBvZiBwZXJtaXRzIGZyb20gdGhpcyBzZW1hcGhvcmUsIGJsb2NraW5nIHVudGlsIGFsbCBhcmUgYXZhaWxhYmxlLCBvciB0aGUgdGhyZWFkIGlzCiA8YSBocmVmPSJodHRwOi8vZG9jcy5vcmFjbGUuY29tL2phdmFzZS83L2RvY3MvYXBpL2phdmEvbGFuZy9UaHJlYWQuaHRtbD9pcy1leHRlcm5hbD10cnVlI2ludGVycnVwdCgpIiB0aXRsZT0iY2xhc3Mgb3IgaW50ZXJmYWNlIGluIGphdmEubGFuZyI+aW50ZXJydXB0ZWQ8L2E+LgoKIDxwPkFjcXVpcmVzIHRoZSBnaXZlbiBudW1iZXIgb2YgcGVybWl0cywgaWYgdGhleSBhcmUgYXZhaWxhYmxlLCBhbmQgcmV0dXJucyBpbW1lZGlhdGVseSwgcmVkdWNpbmcgdGhlIG51bWJlciBvZgogYXZhaWxhYmxlIHBlcm1pdHMgYnkgdGhlIGdpdmVuIGFtb3VudC4KCiA8cD5JZiBpbnN1ZmZpY2llbnQgcGVybWl0cyBhcmUgYXZhaWxhYmxlIHRoZW4gdGhlIGN1cnJlbnQgdGhyZWFkIGJlY29tZXMgZGlzYWJsZWQgZm9yIHRocmVhZCBzY2hlZHVsaW5nIHB1cnBvc2VzCiBhbmQgbGllcyBkb3JtYW50IHVudGlsIG9uZSBvZiB0d28gdGhpbmdzIGhhcHBlbnM6IDx1bD4gPGxpPlNvbWUgb3RoZXIgdGhyZWFkIGludm9rZXMgb25lIG9mIHRoZSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvYXBhY2hlL2lnbml0ZS9JZ25pdGVTZW1hcGhvcmUuaHRtbCNyZWxlYXNlKCkiPjxjb2RlPnJlbGVhc2U8L2NvZGU+PC9hPiBtZXRob2RzIGZvciB0aGlzIHNlbWFwaG9yZSwgdGhlIGN1cnJlbnQgdGhyZWFkIGlzIG5leHQgdG8gYmUgYXNzaWduZWQgcGVybWl0cyBhbmQgdGhlIG51bWJlciBvZgogYXZhaWxhYmxlIHBlcm1pdHMgc2F0aXNmaWVzIHRoaXMgcmVxdWVzdDsgb3IgPGxpPlNvbWUgb3RoZXIgdGhyZWFkIDxhIGhyZWY9Imh0dHA6Ly9kb2NzLm9yYWNsZS5jb20vamF2YXNlLzcvZG9jcy9hcGkvamF2YS9sYW5nL1RocmVhZC5odG1sP2lzLWV4dGVybmFsPXRydWUjaW50ZXJydXB0KCkiIHRpdGxlPSJjbGFzcyBvciBpbnRlcmZhY2UgaW4gamF2YS5sYW5nIj5pbnRlcnJ1cHRzPC9hPiB0aGUKIGN1cnJlbnQgdGhyZWFkLiA8L3VsPgoKIDxwPklmIHRoZSBjdXJyZW50IHRocmVhZDogPHVsPiA8bGk+aGFzIGl0cyBpbnRlcnJ1cHRlZCBzdGF0dXMgc2V0IG9uIGVudHJ5IHRvIHRoaXMgbWV0aG9kOyBvciA8bGk+aXMgPGEgaHJlZj0iaHR0cDovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvNy9kb2NzL2FwaS9qYXZhL2xhbmcvVGhyZWFkLmh0bWw/aXMtZXh0ZXJuYWw9dHJ1ZSNpbnRlcnJ1cHQoKSIgdGl0bGU9ImNsYXNzIG9yIGludGVyZmFjZSBpbiBqYXZhLmxhbmciPmludGVycnVwdGVkPC9hPiB3aGlsZSB3YWl0aW5nIGZvciBhIHBlcm1pdCwgPC91bD4gdGhlbiA8YSBocmVmPSIuLi8uLi8uLi9vcmcvYXBhY2hlL2lnbml0ZS9JZ25pdGVJbnRlcnJ1cHRlZEV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmFwYWNoZS5pZ25pdGUiPjxjb2RlPklnbml0ZUludGVycnVwdGVkRXhjZXB0aW9uPC9jb2RlPjwvYT4gaXMgdGhyb3duCiBhbmQgdGhlIGN1cnJlbnQgdGhyZWFkJ3MgaW50ZXJydXB0ZWQgc3RhdHVzIGlzIGNsZWFyZWQuIEFueSBwZXJtaXRzIHRoYXQgd2VyZSB0byBiZSBhc3NpZ25lZCB0byB0aGlzIHRocmVhZCBhcmUKIGluc3RlYWQgYXNzaWduZWQgdG8gb3RoZXIgdGhyZWFkcyB0cnlpbmcgdG8gYWNxdWlyZSBwZXJtaXRzLCBhcyBpZiBwZXJtaXRzIGhhZCBiZWVuIG1hZGUgYXZhaWxhYmxlIGJ5IGEgY2FsbCB0bwogPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2FwYWNoZS9pZ25pdGUvSWduaXRlU2VtYXBob3JlLmh0bWwjcmVsZWFzZSgpIj48Y29kZT5yZWxlYXNlKCk8L2NvZGU+PC9hPi48L2Rpdj4NCjxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+cGVybWl0czwvY29kZT4gLSB0aGUgbnVtYmVyIG9mIHBlcm1pdHMgdG8gYWNxdWlyZTwvZGQ+DQo8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0Pg0KPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9hcGFjaGUvaWduaXRlL0lnbml0ZUludGVycnVwdGVkRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcuYXBhY2hlLmlnbml0ZSI+SWduaXRlSW50ZXJydXB0ZWRFeGNlcHRpb248L2E+PC9jb2RlPiAtIGlmIHRoZSBjdXJyZW50IHRocmVhZCBpcyBpbnRlcnJ1cHRlZDwvZGQ+DQo8ZGQ+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvNy9kb2NzL2FwaS9qYXZhL2xhbmcvSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uLmh0bWw/aXMtZXh0ZXJuYWw9dHJ1ZSIgdGl0bGU9ImNsYXNzIG9yIGludGVyZmFjZSBpbiBqYXZhLmxhbmciPklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbjwvYT48L2NvZGU+IC0gaWYgPGNvZGU+cGVybWl0czwvY29kZT4gaXMgbmVnYXRpdmU8L2RkPjwvZGw+DQo8L2xpPg0KPC91bD4NCjxhIG5hbWU9InJlbGVhc2UoaW50KSI+DQo8IS0tICAgLS0+DQo8L2E+DQo8dWwgY2xhc3M9ImJsb2NrTGlzdCI+DQo8bGkgY2xhc3M9ImJsb2NrTGlzdCI+DQo8aDQ+cmVsZWFzZTwvaDQ+DQo8cHJlPnZvaWQmbmJzcDtyZWxlYXNlKGludCZuYnNwO3Blcm1pdHMpPC9wcmU+DQo8ZGl2IGNsYXNzPSJibG9jayI+UmVsZWFzZXMgdGhlIGdpdmVuIG51bWJlciBvZiBwZXJtaXRzLCByZXR1cm5pbmcgdGhlbSB0byB0aGUgc2VtYXBob3JlLgoKIDxwPlJlbGVhc2VzIHRoZSBnaXZlbiBudW1iZXIgb2YgcGVybWl0cywgaW5jcmVhc2luZyB0aGUgbnVtYmVyIG9mIGF2YWlsYWJsZSBwZXJtaXRzIGJ5IHRoYXQgYW1vdW50LiBJZiBhbnkKIHRocmVhZHMgYXJlIHRyeWluZyB0byBhY3F1aXJlIHBlcm1pdHMsIHRoZW4gb25lIGlzIHNlbGVjdGVkIGFuZCBnaXZlbiB0aGUgcGVybWl0cyB0aGF0IHdlcmUganVzdCByZWxlYXNlZC4gSWYgdGhlCiBudW1iZXIgb2YgYXZhaWxhYmxlIHBlcm1pdHMgc2F0aXNmaWVzIHRoYXQgdGhyZWFkJ3MgcmVxdWVzdCB0aGVuIHRoYXQgdGhyZWFkIGlzIChyZSllbmFibGVkIGZvciB0aHJlYWQgc2NoZWR1bGluZwogcHVycG9zZXM7IG90aGVyd2lzZSB0aGUgdGhyZWFkIHdpbGwgd2FpdCB1bnRpbCBzdWZmaWNpZW50IHBlcm1pdHMgYXJlIGF2YWlsYWJsZS4gSWYgdGhlcmUgYXJlIHN0aWxsIHBlcm1pdHMKIGF2YWlsYWJsZSBhZnRlciB0aGlzIHRocmVhZCdzIHJlcXVlc3QgaGFzIGJlZW4gc2F0aXNmaWVkLCB0aGVuIHRob3NlIHBlcm1pdHMgYXJlIGFzc2lnbmVkIGluIHR1cm4gdG8gb3RoZXIKIHRocmVhZHMgdHJ5aW5nIHRvIGFjcXVpcmUgcGVybWl0cy4KCiA8cD5UaGVyZSBpcyBubyByZXF1aXJlbWVudCB0aGF0IGEgdGhyZWFkIHRoYXQgcmVsZWFzZXMgYSBwZXJtaXQgbXVzdCBoYXZlIGFjcXVpcmVkIHRoYXQgcGVybWl0IGJ5IGNhbGxpbmcgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2FwYWNoZS9pZ25pdGUvSWduaXRlU2VtYXBob3JlLmh0bWwjYWNxdWlyZSgpIj48Y29kZT5hY3F1aXJlPC9jb2RlPjwvYT4uIENvcnJlY3QgdXNhZ2Ugb2YgYSBzZW1hcGhvcmUgaXMgZXN0YWJsaXNoZWQgYnkgcHJvZ3JhbW1pbmcgY29udmVudGlvbiBpbiB0aGUKIGFwcGxpY2F0aW9uLjwvZGl2Pg0KPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5wZXJtaXRzPC9jb2RlPiAtIHRoZSBudW1iZXIgb2YgcGVybWl0cyB0byByZWxlYXNlPC9kZD4NCjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5UaHJvd3M6PC9zcGFuPjwvZHQ+DQo8ZGQ+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvNy9kb2NzL2FwaS9qYXZhL2xhbmcvSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uLmh0bWw/aXMtZXh0ZXJuYWw9dHJ1ZSIgdGl0bGU9ImNsYXNzIG9yIGludGVyZmFjZSBpbiBqYXZhLmxhbmciPklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbjwvYT48L2NvZGU+IC0gaWYgPGNvZGU+cGVybWl0czwvY29kZT4gaXMgbmVnYXRpdmU8L2RkPjwvZGw+DQo8L2xpPg0KPC91bD4NCjxhIG5hbWU9ImlzRmFpbG92ZXJTYWZlKCkiPg0KPCEtLSAgIC0tPg0KPC9hPg0KPHVsIGNsYXNzPSJibG9ja0xpc3QiPg0KPGxpIGNsYXNzPSJibG9ja0xpc3QiPg0KPGg0PmlzRmFpbG92ZXJTYWZlPC9oND4NCjxwcmU+Ym9vbGVhbiZuYnNwO2lzRmFpbG92ZXJTYWZlKCk8L3ByZT4NCjxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoaXMgc2VtYXBob3JlIGlzIHNhZmUgdG8gdXNlIGFmdGVyIG5vZGUgZmFpbHVyZS4KIElmIG5vdCwgSWduaXRlSW50ZXJydXB0ZWRFeGNlcHRpb24gaXMgdGhyb3duIG9uIGV2ZXJ5IG90aGVyIG5vZGUgYWZ0ZXIgbm9kZSBmYWlsdXJlLjwvZGl2Pg0KPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD48Y29kZT50cnVlPC9jb2RlPiBpZiB0aGlzIHNlbWFwaG9yZSBoYXMgZmFpbG92ZXJTYWZlIHNldCB0cnVlPC9kZD48L2RsPg0KPC9saT4NCjwvdWw+DQo8YSBuYW1lPSJoYXNRdWV1ZWRUaHJlYWRzKCkiPg0KPCEtLSAgIC0tPg0KPC9hPg0KPHVsIGNsYXNzPSJibG9ja0xpc3QiPg0KPGxpIGNsYXNzPSJibG9ja0xpc3QiPg0KPGg0Pmhhc1F1ZXVlZFRocmVhZHM8L2g0Pg0KPHByZT5ib29sZWFuJm5ic3A7aGFzUXVldWVkVGhyZWFkcygpPC9wcmU+DQo8ZGl2IGNsYXNzPSJibG9jayI+UXVlcmllcyB3aGV0aGVyIGFueSB0aHJlYWRzIGFyZSB3YWl0aW5nIHRvIGFjcXVpcmUuIE5vdGUgdGhhdCBiZWNhdXNlIGNhbmNlbGxhdGlvbnMgbWF5IG9jY3VyIGF0IGFueSB0aW1lLCBhCiA8Y29kZT50cnVlPC9jb2RlPiByZXR1cm4gZG9lcyBub3QgZ3VhcmFudGVlIHRoYXQgYW55IG90aGVyIHRocmVhZCB3aWxsIGV2ZXIgYWNxdWlyZS4gIFRoaXMgbWV0aG9kIGlzIGRlc2lnbmVkCiBwcmltYXJpbHkgZm9yIHVzZSBpbiBtb25pdG9yaW5nIG9mIHRoZSBzeXN0ZW0gc3RhdGUuPC9kaXY+DQo8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZXJlIG1heSBiZSBvdGhlciB0aHJlYWRzIHdhaXRpbmcgdG8gYWNxdWlyZSB0aGUgbG9jazwvZGQ+PC9kbD4NCjwvbGk+DQo8L3VsPg0KPGEgbmFtZT0iZ2V0UXVldWVMZW5ndGgoKSI+DQo8IS0tICAgLS0+DQo8L2E+DQo8dWwgY2xhc3M9ImJsb2NrTGlzdCI+DQo8bGkgY2xhc3M9ImJsb2NrTGlzdCI+DQo8aDQ+Z2V0UXVldWVMZW5ndGg8L2g0Pg0KPHByZT5pbnQmbmJzcDtnZXRRdWV1ZUxlbmd0aCgpPC9wcmU+DQo8ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyBhbiBlc3RpbWF0ZSBvZiB0aGUgbnVtYmVyIG9mIG5vZGVzIHdhaXRpbmcgdG8gYWNxdWlyZS4gVGhlIHZhbHVlIGlzIG9ubHkgYW4gZXN0aW1hdGUgYmVjYXVzZSB0aGUgbnVtYmVyCiBvZiBub2RlcyB0aGF0IGFyZSB3YWl0aW5nIG1heSBjaGFuZ2UgZHluYW1pY2FsbHkgd2hpbGUgdGhpcyBtZXRob2QgdHJhdmVyc2VzIGludGVybmFsIGRhdGEgc3RydWN0dXJlcy4gIFRoaXMgbWV0aG9kIGlzIGRlc2lnbmVkCiBmb3IgdXNlIGluIG1vbml0b3Jpbmcgb2YgdGhlIHN5c3RlbSBzdGF0ZSwgbm90IGZvciBzeW5jaHJvbml6YXRpb24gY29udHJvbC48L2Rpdj4NCjxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+dGhlIGVzdGltYXRlZCBudW1iZXIgb2Ygbm9kZXMgd2FpdGluZyBmb3IgdGhpcyBsb2NrPC9kZD48L2RsPg0KPC9saT4NCjwvdWw+DQo8YSBuYW1lPSJpc0Jyb2tlbigpIj4NCjwhLS0gICAtLT4NCjwvYT4NCjx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4NCjxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4NCjxoND5pc0Jyb2tlbjwvaDQ+DQo8cHJlPmJvb2xlYW4mbmJzcDtpc0Jyb2tlbigpPC9wcmU+DQo8ZGl2IGNsYXNzPSJibG9jayI+R2V0cyA8Y29kZT5icm9rZW48L2NvZGU+IHN0YXR1cyBvZiB0aGUgc2VtYXBob3JlLjwvZGl2Pg0KPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5UcnVlPC9jb2RlPiBpZiBhIG5vZGUgZmFpbGVkIG9uIHRoaXMgc2VtYXBob3JlIGFuZCBmYWlsb3ZlclNhZmUgZmxhZyB3YXMgc2V0IHRvIGZhbHNlLCA8Y29kZT5mYWxzZTwvY29kZT4gb3RoZXJ3aXNlLjwvZGQ+PC9kbD4NCjwvbGk+DQo8L3VsPg0KPGEgbmFtZT0icmVtb3ZlZCgpIj4NCjwhLS0gICAtLT4NCjwvYT4NCjx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4NCjxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4NCjxoND5yZW1vdmVkPC9oND4NCjxwcmU+Ym9vbGVhbiZuYnNwO3JlbW92ZWQoKTwvcHJlPg0KPGRpdiBjbGFzcz0iYmxvY2siPkdldHMgPGNvZGU+cmVtb3ZlZDwvY29kZT4gc3RhdHVzIG9mIHRoZSBzZW1hcGhvcmUuPC9kaXY+DQo8ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPlRydWU8L2NvZGU+IGlmIHNlbWFwaG9yZSB3YXMgcmVtb3ZlZCBmcm9tIGNhY2hlLCA8Y29kZT5mYWxzZTwvY29kZT4gb3RoZXJ3aXNlLjwvZGQ+PC9kbD4NCjwvbGk+DQo8L3VsPg0KPGEgbmFtZT0iY2xvc2UoKSI+DQo8IS0tICAgLS0+DQo8L2E+DQo8dWwgY2xhc3M9ImJsb2NrTGlzdExhc3QiPg0KPGxpIGNsYXNzPSJibG9ja0xpc3QiPg0KPGg0PmNsb3NlPC9oND4NCjxwcmU+dm9pZCZuYnNwO2Nsb3NlKCk8L3ByZT4NCjxkaXYgY2xhc3M9ImJsb2NrIj5SZW1vdmVzIHRoaXMgc2VtYXBob3JlLjwvZGl2Pg0KPGRsPg0KPGR0PjxzdHJvbmc+U3BlY2lmaWVkIGJ5Ojwvc3Ryb25nPjwvZHQ+DQo8ZGQ+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvNy9kb2NzL2FwaS9qYXZhL2xhbmcvQXV0b0Nsb3NlYWJsZS5odG1sP2lzLWV4dGVybmFsPXRydWUjY2xvc2UoKSIgdGl0bGU9ImNsYXNzIG9yIGludGVyZmFjZSBpbiBqYXZhLmxhbmciPmNsb3NlPC9hPjwvY29kZT4mbmJzcDtpbiBpbnRlcmZhY2UmbmJzcDs8Y29kZT48YSBocmVmPSJodHRwOi8vZG9jcy5vcmFjbGUuY29tL2phdmFzZS83L2RvY3MvYXBpL2phdmEvbGFuZy9BdXRvQ2xvc2VhYmxlLmh0bWw/aXMtZXh0ZXJuYWw9dHJ1ZSIgdGl0bGU9ImNsYXNzIG9yIGludGVyZmFjZSBpbiBqYXZhLmxhbmciPkF1dG9DbG9zZWFibGU8L2E+PC9jb2RlPjwvZGQ+DQo8ZHQ+PHN0cm9uZz5TcGVjaWZpZWQgYnk6PC9zdHJvbmc+PC9kdD4NCjxkZD48Y29kZT48YSBocmVmPSJodHRwOi8vZG9jcy5vcmFjbGUuY29tL2phdmFzZS83L2RvY3MvYXBpL2phdmEvaW8vQ2xvc2VhYmxlLmh0bWw/aXMtZXh0ZXJuYWw9dHJ1ZSNjbG9zZSgpIiB0aXRsZT0iY2xhc3Mgb3IgaW50ZXJmYWNlIGluIGphdmEuaW8iPmNsb3NlPC9hPjwvY29kZT4mbmJzcDtpbiBpbnRlcmZhY2UmbmJzcDs8Y29kZT48YSBocmVmPSJodHRwOi8vZG9jcy5vcmFjbGUuY29tL2phdmFzZS83L2RvY3MvYXBpL2phdmEvaW8vQ2xvc2VhYmxlLmh0bWw/aXMtZXh0ZXJuYWw9dHJ1ZSIgdGl0bGU9ImNsYXNzIG9yIGludGVyZmFjZSBpbiBqYXZhLmlvIj5DbG9zZWFibGU8L2E+PC9jb2RlPjwvZGQ+DQo8ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0Pg0KPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9hcGFjaGUvaWduaXRlL0lnbml0ZUV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmFwYWNoZS5pZ25pdGUiPklnbml0ZUV4Y2VwdGlvbjwvYT48L2NvZGU+IC0gSWYgb3BlcmF0aW9uIGZhaWxlZC48L2RkPjwvZGw+DQo8L2xpPg0KPC91bD4NCjwvbGk+DQo8L3VsPg0KPC9saT4NCjwvdWw+DQo8L2Rpdj4NCjwvZGl2Pg0KPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPg0KPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPg0KPGRpdiBjbGFzcz0iYm90dG9tTmF2Ij48YSBuYW1lPSJuYXZiYXJfYm90dG9tIj4NCjwhLS0gICAtLT4NCjwvYT48YSBocmVmPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L2E+PGEgbmFtZT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+DQo8IS0tICAgLS0+DQo8L2E+DQo8dWwgY2xhc3M9Im5hdkxpc3QiIHRpdGxlPSJOYXZpZ2F0aW9uIj4NCjxsaT48YSBocmVmPSIuLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPk92ZXJ2aWV3PC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPlBhY2thZ2U8L2E+PC9saT4NCjxsaSBjbGFzcz0ibmF2QmFyQ2VsbDFSZXYiPkNsYXNzPC9saT4NCjxsaT48YSBocmVmPSJjbGFzcy11c2UvSWduaXRlU2VtYXBob3JlLmh0bWwiPlVzZTwvYT48L2xpPg0KPGxpPjxhIGhyZWY9InBhY2thZ2UtdHJlZS5odG1sIj5UcmVlPC9hPjwvbGk+DQo8bGk+PGEgaHJlZj0iLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPkRlcHJlY2F0ZWQ8L2E+PC9saT4NCjxsaT48YSBocmVmPSIuLi8uLi8uLi9pbmRleC1hbGwuaHRtbCI+SW5kZXg8L2E+PC9saT4NCjxsaT48YSBocmVmPSIuLi8uLi8uLi9oZWxwLWRvYy5odG1sIj5IZWxwPC9hPjwvbGk+DQo8L3VsPg0KPGRpdiBjbGFzcz0iYWJvdXRMYW5ndWFnZSI+PGVtPklnbml0ZSAtIEluLU1lbW9yeSBEYXRhIEZhYnJpYzwvZW0+PC9kaXY+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9InN1Yk5hdiI+DQo8dWwgY2xhc3M9Im5hdkxpc3QiPg0KPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9hcGFjaGUvaWduaXRlL0lnbml0ZVNjaGVkdWxlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5hcGFjaGUuaWduaXRlIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5QcmV2IENsYXNzPC9zcGFuPjwvYT48L2xpPg0KPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9hcGFjaGUvaWduaXRlL0lnbml0ZVNlcnZpY2VzLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmFwYWNoZS5pZ25pdGUiPjxzcGFuIGNsYXNzPSJzdHJvbmciPk5leHQgQ2xhc3M8L3NwYW4+PC9hPjwvbGk+DQo8L3VsPg0KPHVsIGNsYXNzPSJuYXZMaXN0Ij4NCjxsaT48YSBocmVmPSIuLi8uLi8uLi9pbmRleC5odG1sP29yZy9hcGFjaGUvaWduaXRlL0lnbml0ZVNlbWFwaG9yZS5odG1sIiB0YXJnZXQ9Il90b3AiPkZyYW1lczwvYT48L2xpPg0KPGxpPjxhIGhyZWY9Iklnbml0ZVNlbWFwaG9yZS5odG1sIiB0YXJnZXQ9Il90b3AiPk5vIEZyYW1lczwvYT48L2xpPg0KPC91bD4NCjx1bCBjbGFzcz0ibmF2TGlzdCIgaWQ9ImFsbGNsYXNzZXNfbmF2YmFyX2JvdHRvbSI+DQo8bGk+PGEgaHJlZj0iLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPkFsbCBDbGFzc2VzPC9hPjwvbGk+DQo8L3VsPg0KPGRpdj4NCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tDQogIGFsbENsYXNzZXNMaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFsbGNsYXNzZXNfbmF2YmFyX2JvdHRvbSIpOw0KICBpZih3aW5kb3c9PXRvcCkgew0KICAgIGFsbENsYXNzZXNMaW5rLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOw0KICB9DQogIGVsc2Ugew0KICAgIGFsbENsYXNzZXNMaW5rLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQogIH0NCiAgLy8tLT4NCjwvc2NyaXB0Pg0KPC9kaXY+DQo8ZGl2Pg0KPHVsIGNsYXNzPSJzdWJOYXZMaXN0Ij4NCjxsaT5TdW1tYXJ5OiZuYnNwOzwvbGk+DQo8bGk+TmVzdGVkJm5ic3A7fCZuYnNwOzwvbGk+DQo8bGk+RmllbGQmbmJzcDt8Jm5ic3A7PC9saT4NCjxsaT5Db25zdHImbmJzcDt8Jm5ic3A7PC9saT4NCjxsaT48YSBocmVmPSIjbWV0aG9kX3N1bW1hcnkiPk1ldGhvZDwvYT48L2xpPg0KPC91bD4NCjx1bCBjbGFzcz0ic3ViTmF2TGlzdCI+DQo8bGk+RGV0YWlsOiZuYnNwOzwvbGk+DQo8bGk+RmllbGQmbmJzcDt8Jm5ic3A7PC9saT4NCjxsaT5Db25zdHImbmJzcDt8Jm5ic3A7PC9saT4NCjxsaT48YSBocmVmPSIjbWV0aG9kX2RldGFpbCI+TWV0aG9kPC9hPjwvbGk+DQo8L3VsPg0KPC9kaXY+DQo8YSBuYW1lPSJza2lwLW5hdmJhcl9ib3R0b20iPg0KPCEtLSAgIC0tPg0KPC9hPjwvZGl2Pg0KPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPg0KPHAgY2xhc3M9ImxlZ2FsQ29weSI+PHNtYWxsPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0wIGNlbGxwYWRkaW5nPTAgc3R5bGU9InBhZGRpbmc6IDVweCI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgc3R5bGU9InBhZGRpbmctbGVmdDogMDsgbWFyZ2luOiAwIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5IHN0eWxlPSJwYWRkaW5nOiAwOyBtYXJnaW46IDAiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIHN0eWxlPSJwYWRkaW5nOiAwOyBtYXJnaW46IDAiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgdGFyZ2V0PV9ibGFuayBocmVmPSJodHRwczovL2FwYWNoZS5vcmcvcHJvamVjdHMvaWduaXRlLmh0bWwiPjxub2JyPjIwMTUgQ29weXJpZ2h0ICYjMTY5OyBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbjwvbm9icj48L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEwMCUiIGFsaWduPSJyaWdodCIgdmFsaWduPSJjZW50ZXIiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vdHdpdHRlci5jb20vQXBhY2hlSWduaXRlIiBjbGFzcz0idHdpdHRlci1mb2xsb3ctYnV0dG9uIiBkYXRhLXNob3ctY291bnQ9ImZhbHNlIiBkYXRhLXNpemU9ImxhcmdlIj5Gb2xsb3cgQEFwYWNoZUlnbml0ZTwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NyaXB0PiFmdW5jdGlvbihkLHMsaWQpe3ZhciBqcyxmanM9ZC5nZXRFbGVtZW50c0J5VGFnTmFtZShzKVswXSxwPS9eaHR0cDovLnRlc3QoZC5sb2NhdGlvbik/J2h0dHAnOidodHRwcyc7aWYoIWQuZ2V0RWxlbWVudEJ5SWQoaWQpKXtqcz1kLmNyZWF0ZUVsZW1lbnQocyk7anMuaWQ9aWQ7anMuc3JjPXArJzovL3BsYXRmb3JtLnR3aXR0ZXIuY29tL3dpZGdldHMuanMnO2Zqcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShqcyxmanMpO319KGRvY3VtZW50LCAnc2NyaXB0JywgJ3R3aXR0ZXItd2pzJyk7PC9zY3JpcHQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iMiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0Ij4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgc3R5bGU9InBhZGRpbmctbGVmdDogMDsgbWFyZ2luOiAwIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5IHN0eWxlPSJwYWRkaW5nOiAwOyBtYXJnaW46IDAiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIHN0eWxlPSJwYWRkaW5nOiAwOyBtYXJnaW46IDAiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+SWduaXRlIEZhYnJpYzwvYj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD46Jm5ic3A7Jm5ic3A7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlci4gPHN0cm9uZz4xLjUuMC1maW5hbC1TTkFQU0hPVDwvc3Ryb25nPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIHN0eWxlPSJwYWRkaW5nOiAwOyBtYXJnaW46IDAiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+UmVsZWFzZSBEYXRlPC9iPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjombmJzcDsmbmJzcDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgxOXq4OHw/CAyMSAyMDE1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+PC9zbWFsbD48L3A+DQo8IS0tRk9PVEVSLS0+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPlN5bnRheEhpZ2hsaWdodGVyLmFsbCgpO2RwLlN5bnRheEhpZ2hsaWdodGVyLkhpZ2hsaWdodEFsbCgnY29kZScpOzwvc2NyaXB0Pgo8L2JvZHk+Cg0KPC9odG1sPg0K