PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48aGVhZD48IS0tCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgICAgICAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGZyb20geG1sIHNvdXJjZTogRE8gTk9UIEVESVQKICAgICAgICBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWAogICAgICAtLT4KPHRpdGxlPm1vZF9pbmNsdWRlIC0gQXBhY2hlIEhUVFAgU2VydmVyPC90aXRsZT4KPGxpbmsgaHJlZj0iLi4vc3R5bGUvY3NzL21hbnVhbC5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIgdHlwZT0idGV4dC9jc3MiIHRpdGxlPSJNYWluIHN0eWxlc2hlZXQiIC8+CjxsaW5rIGhyZWY9Ii4uL3N0eWxlL2Nzcy9tYW51YWwtbG9vc2UtMTAwcGMuY3NzIiByZWw9ImFsdGVybmF0ZSBzdHlsZXNoZWV0IiBtZWRpYT0iYWxsIiB0eXBlPSJ0ZXh0L2NzcyIgdGl0bGU9Ik5vIFNpZGViYXIgLSBEZWZhdWx0IGZvbnQgc2l6ZSIgLz4KPGxpbmsgaHJlZj0iLi4vc3R5bGUvY3NzL21hbnVhbC1wcmludC5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9InByaW50IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KPGxpbmsgaHJlZj0iLi4vaW1hZ2VzL2Zhdmljb24uaWNvIiByZWw9InNob3J0Y3V0IGljb24iIC8+PC9oZWFkPgo8Ym9keT4KPGRpdiBpZD0icGFnZS1oZWFkZXIiPgo8cCBjbGFzcz0ibWVudSI+PGEgaHJlZj0iLi4vbW9kLyI+TW9kdWxlczwvYT4gfCA8YSBocmVmPSIuLi9tb2QvZGlyZWN0aXZlcy5odG1sIj5EaXJlY3RpdmVzPC9hPiB8IDxhIGhyZWY9Ii4uL2ZhcS8iPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FyeTwvYT4gfCA8YSBocmVmPSIuLi9zaXRlbWFwLmh0bWwiPlNpdGVtYXA8L2E+PC9wPgo8cCBjbGFzcz0iYXBhY2hlIj5BcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjM8L3A+CjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2ZlYXRoZXIuZ2lmIiAvPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ1cCI+PGEgaHJlZj0iLi8iPjxpbWcgdGl0bGU9IiZsdDstIiBhbHQ9IiZsdDstIiBzcmM9Ii4uL2ltYWdlcy9sZWZ0LmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgaWQ9InBhdGgiPgo8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BcGFjaGU8L2E+ICZndDsgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvIj5IVFRQIFNlcnZlcjwvYT4gJmd0OyA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLyI+RG9jdW1lbnRhdGlvbjwvYT4gJmd0OyA8YSBocmVmPSIuLi8iPlZlcnNpb24gMi4zPC9hPiAmZ3Q7IDxhIGhyZWY9Ii4vIj5Nb2R1bGVzPC9hPjwvZGl2Pgo8ZGl2IGlkPSJwYWdlLWNvbnRlbnQiPgo8ZGl2IGlkPSJwcmVhbWJsZSI+PGgxPkFwYWNoZSBNb2R1bGUgbW9kX2luY2x1ZGU8L2gxPgo8ZGl2IGNsYXNzPSJ0b3BsYW5nIj4KPHA+PHNwYW4+QXZhaWxhYmxlIExhbmd1YWdlczogPC9zcGFuPjxhIGhyZWY9Ii4uL2VuL21vZC9tb2RfaW5jbHVkZS5odG1sIiB0aXRsZT0iRW5nbGlzaCI+Jm5ic3A7ZW4mbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4vamEvbW9kL21vZF9pbmNsdWRlLmh0bWwiIGhyZWZsYW5nPSJqYSIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJKYXBhbmVzZSI+Jm5ic3A7amEmbmJzcDs8L2E+PC9wPgo8L2Rpdj4KPHRhYmxlIGNsYXNzPSJtb2R1bGUiPjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPlNlcnZlci1wYXJzZWQgaHRtbCBkb2N1bWVudHMgKFNlcnZlciBTaWRlIEluY2x1ZGVzKTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5CYXNlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9Im1vZHVsZS1kaWN0Lmh0bWwjTW9kdWxlSWRlbnRpZmllciI+TW9kdWxloElkZW50aWZpZXI6PC9hPjwvdGg+PHRkPmluY2x1ZGVfbW9kdWxlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9Im1vZHVsZS1kaWN0Lmh0bWwjU291cmNlRmlsZSI+U291cmNloEZpbGU6PC9hPjwvdGg+PHRkPm1vZF9pbmNsdWRlLmM8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNDb21wYXRpYmlsaXR5Ij5Db21wYXRpYmlsaXR5OjwvYT48L3RoPjx0ZD5JbXBsZW1lbnRlZCBhcyBhbiBvdXRwdXQgZmlsdGVyIHNpbmNlIEFwYWNoZQoyLjA8L3RkPjwvdHI+PC90YWJsZT4KPGgzPlN1bW1hcnk8L2gzPgoKICAgIDxwPlRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgZmlsdGVyIHdoaWNoIHdpbGwgcHJvY2VzcyBmaWxlcwogICAgYmVmb3JlIHRoZXkgYXJlIHNlbnQgdG8gdGhlIGNsaWVudC4gVGhlIHByb2Nlc3NpbmcgaXMKICAgIGNvbnRyb2xsZWQgYnkgc3BlY2lhbGx5IGZvcm1hdHRlZCBTR01MIGNvbW1lbnRzLCByZWZlcnJlZCB0byBhcwogICAgPGRmbj5lbGVtZW50czwvZGZuPi4gVGhlc2UgZWxlbWVudHMgYWxsb3cgY29uZGl0aW9uYWwgdGV4dCwgdGhlCiAgICBpbmNsdXNpb24gb2Ygb3RoZXIgZmlsZXMgb3IgcHJvZ3JhbXMsIGFzIHdlbGwgYXMgdGhlIHNldHRpbmcgYW5kCiAgICBwcmludGluZyBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMuPC9wPgo8L2Rpdj4KPGRpdiBpZD0icXVpY2t2aWV3Ij48aDMgY2xhc3M9ImRpcmVjdGl2ZXMiPkRpcmVjdGl2ZXM8L2gzPgo8dWwgaWQ9InRvYyI+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI3NzaWVuZHRhZyI+U1NJRW5kVGFnPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI3NzaWVycm9ybXNnIj5TU0lFcnJvck1zZzwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNzc2lzdGFydHRhZyI+U1NJU3RhcnRUYWc8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjc3NpdGltZWZvcm1hdCI+U1NJVGltZUZvcm1hdDwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNzc2l1bmRlZmluZWRlY2hvIj5TU0lVbmRlZmluZWRFY2hvPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI3hiaXRoYWNrIj5YQml0SGFjazwvYT48L2xpPgo8L3VsPgo8aDM+VG9waWNzPC9oMz4KPHVsIGlkPSJ0b3BpY3MiPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNlbmFibGluZyI+RW5hYmxpbmcgU2VydmVyLVNpZGUgSW5jbHVkZXM8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjcGF0aGluZm8iPlBBVEhfSU5GTyB3aXRoIFNlcnZlciBTaWRlIEluY2x1ZGVzPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2VsZW1lbnRzIj5CYXNpYyBFbGVtZW50czwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNpbmNsdWRldmFycyI+SW5jbHVkZSBWYXJpYWJsZXM8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjc3Vic3RpdHV0aW9uIj5WYXJpYWJsZSBTdWJzdGl0dXRpb248L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjZmxvd2N0cmwiPkZsb3cgQ29udHJvbCBFbGVtZW50czwvYT48L2xpPgo8L3VsPjxoMz5TZWUgYWxzbzwvaDM+Cjx1bCBjbGFzcz0ic2VlYWxzbyI+CjxsaT48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvY29yZS5odG1sI29wdGlvbnMiPk9wdGlvbnM8L2E+PC9jb2RlPjwvbGk+CjxsaT48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvY29yZS5odG1sI2FjY2VwdHBhdGhpbmZvIj5BY2NlcHRQYXRoSW5mbzwvYT48L2NvZGU+PC9saT4KPGxpPjxhIGhyZWY9Ii4uL2ZpbHRlci5odG1sIj5GaWx0ZXJzPC9hPjwvbGk+CjxsaT48YSBocmVmPSIuLi9ob3d0by9zc2kuaHRtbCI+U1NJIFR1dG9yaWFsPC9hPjwvbGk+CjwvdWw+PC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9ImVuYWJsaW5nIiBpZD0iZW5hYmxpbmciPkVuYWJsaW5nIFNlcnZlci1TaWRlIEluY2x1ZGVzPC9hPjwvaDI+CiAgICAKCiAgICA8cD5TZXJ2ZXIgU2lkZSBJbmNsdWRlcyBhcmUgaW1wbGVtZW50ZWQgYnkgdGhlCiAgICA8Y29kZT5JTkNMVURFUzwvY29kZT4gPGEgaHJlZj0iLi4vZmlsdGVyLmh0bWwiPmZpbHRlcjwvYT4uIElmCiAgICBkb2N1bWVudHMgY29udGFpbmluZyBzZXJ2ZXItc2lkZSBpbmNsdWRlIGRpcmVjdGl2ZXMgYXJlIGdpdmVuCiAgICB0aGUgZXh0ZW5zaW9uIC5zaHRtbCwgdGhlIGZvbGxvd2luZyBkaXJlY3RpdmVzIHdpbGwgbWFrZSBBcGFjaGUKICAgIHBhcnNlIHRoZW0gYW5kIGFzc2lnbiB0aGUgcmVzdWx0aW5nIGRvY3VtZW50IHRoZSBtaW1lIHR5cGUgb2YKICAgIDxjb2RlPnRleHQvaHRtbDwvY29kZT46PC9wPgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgICBBZGRUeXBlIHRleHQvaHRtbCAuc2h0bWw8YnIgLz4KICAgICAgQWRkT3V0cHV0RmlsdGVyIElOQ0xVREVTIC5zaHRtbAogICAgPC9jb2RlPjwvcD48L2Rpdj4KCiAgICA8cD5UaGUgZm9sbG93aW5nIGRpcmVjdGl2ZSBtdXN0IGJlIGdpdmVuIGZvciB0aGUgZGlyZWN0b3JpZXMKICAgIGNvbnRhaW5pbmcgdGhlIHNodG1sIGZpbGVzICh0eXBpY2FsbHkgaW4gYQogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL2NvcmUuaHRtbCNkaXJlY3RvcnkiPiZsdDtEaXJlY3RvcnkmZ3Q7PC9hPjwvY29kZT4gc2VjdGlvbiwKICAgIGJ1dCB0aGlzIGRpcmVjdGl2ZSBpcyBhbHNvIHZhbGlkIGluIDxjb2RlPi5odGFjY2VzczwvY29kZT4gZmlsZXMgaWYKICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9jb3JlLmh0bWwjYWxsb3dvdmVycmlkZSI+QWxsb3dPdmVycmlkZTwvYT48L2NvZGU+IDxjb2RlPk9wdGlvbnM8L2NvZGU+CiAgICBpcyBzZXQpOjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgT3B0aW9ucyArSW5jbHVkZXMKICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+Rm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB0aGUgPGNvZGU+c2VydmVyLXBhcnNlZDwvY29kZT4KICAgIDxhIGhyZWY9Ii4uL2hhbmRsZXIuaHRtbCI+aGFuZGxlcjwvYT4gYWxzbyBhY3RpdmF0ZXMgdGhlCiAgICBJTkNMVURFUyBmaWx0ZXIuIEFzIHdlbGwsIEFwYWNoZSB3aWxsIGFjdGl2YXRlIHRoZSBJTkNMVURFUwogICAgZmlsdGVyIGZvciBhbnkgZG9jdW1lbnQgd2l0aCBtaW1lIHR5cGUKICAgIDxjb2RlPnRleHQveC1zZXJ2ZXItcGFyc2VkLWh0bWw8L2NvZGU+IG9yCiAgICA8Y29kZT50ZXh0L3gtc2VydmVyLXBhcnNlZC1odG1sMzwvY29kZT4gKGFuZCB0aGUgcmVzdWx0aW5nCiAgICBvdXRwdXQgd2lsbCBoYXZlIHRoZSBtaW1lIHR5cGUgPGNvZGU+dGV4dC9odG1sPC9jb2RlPikuPC9wPgoKICAgIDxwPkZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgb3VyIDxhIGhyZWY9Ii4uL2hvd3RvL3NzaS5odG1sIj5UdXRvcmlhbCBvbiBTZXJ2ZXIgU2lkZSBJbmNsdWRlczwvYT4uPC9wPgo8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJwYXRoaW5mbyIgaWQ9InBhdGhpbmZvIj5QQVRIX0lORk8gd2l0aCBTZXJ2ZXIgU2lkZSBJbmNsdWRlczwvYT48L2gyPgogICAgCgogICAgPHA+RmlsZXMgcHJvY2Vzc2VkIGZvciBzZXJ2ZXItc2lkZSBpbmNsdWRlcyBubyBsb25nZXIgYWNjZXB0CiAgICByZXF1ZXN0cyB3aXRoIDxjb2RlPlBBVEhfSU5GTzwvY29kZT4gKHRyYWlsaW5nIHBhdGhuYW1lIGluZm9ybWF0aW9uKQogICAgYnkgZGVmYXVsdC4gIFlvdSBjYW4gdXNlIHRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvY29yZS5odG1sI2FjY2VwdHBhdGhpbmZvIj5BY2NlcHRQYXRoSW5mbzwvYT48L2NvZGU+IGRpcmVjdGl2ZSB0bwogICAgY29uZmlndXJlIHRoZSBzZXJ2ZXIgdG8gYWNjZXB0IHJlcXVlc3RzIHdpdGggPGNvZGU+UEFUSF9JTkZPPC9jb2RlPi48L3A+CjwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9ImVsZW1lbnRzIiBpZD0iZWxlbWVudHMiPkJhc2ljIEVsZW1lbnRzPC9hPjwvaDI+CiAgICA8cD5UaGUgZG9jdW1lbnQgaXMgcGFyc2VkIGFzIGFuIEhUTUwgZG9jdW1lbnQsIHdpdGggc3BlY2lhbAogICAgY29tbWFuZHMgZW1iZWRkZWQgYXMgU0dNTCBjb21tZW50cy4gQSBjb21tYW5kIGhhcyB0aGUgc3ludGF4OiA8L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgICZsdDshLS0jPHZhcj5lbGVtZW50PC92YXI+IDx2YXI+YXR0cmlidXRlPC92YXI+PTx2YXI+dmFsdWU8L3Zhcj4KICAgICAgPHZhcj5hdHRyaWJ1dGU8L3Zhcj49PHZhcj52YWx1ZTwvdmFyPiAuLi4gLS0mZ3Q7CiAgICA8L2NvZGU+PC9wPjwvZGl2PgoKICAgIDxwPlRoZSB2YWx1ZSB3aWxsIG9mdGVuIGJlIGVuY2xvc2VkIGluIGRvdWJsZSBxdW90ZXMsIGJ1dCBzaW5nbGUKICAgIHF1b3RlcyAoPGNvZGU+JzwvY29kZT4pIGFuZCBiYWNrdGlja3MgKDxjb2RlPmA8L2NvZGU+KSBhcmUgYWxzbwogICAgcG9zc2libGUuIE1hbnkgY29tbWFuZHMgb25seSBhbGxvdyBhIHNpbmdsZSBhdHRyaWJ1dGUtdmFsdWUgcGFpci4KICAgIE5vdGUgdGhhdCB0aGUgY29tbWVudCB0ZXJtaW5hdG9yICg8Y29kZT4tLSZndDs8L2NvZGU+KSBzaG91bGQgYmUKICAgIHByZWNlZGVkIGJ5IHdoaXRlc3BhY2UgdG8gZW5zdXJlIHRoYXQgaXQgaXNuJ3QgY29uc2lkZXJlZCBwYXJ0IG9mCiAgICBhbiBTU0kgdG9rZW4uIE5vdGUgdGhhdCB0aGUgbGVhZGluZyA8Y29kZT4mbHQ7IS0tIzwvY29kZT4gaXMgPGVtPm9uZTwvZW0+CiAgICB0b2tlbiBhbmQgbWF5IG5vdCBjb250YWluIGFueSB3aGl0ZXNwYWNlcy48L3A+CgogICAgPHA+VGhlIGFsbG93ZWQgZWxlbWVudHMgYXJlIGxpc3RlZCBpbiB0aGUgZm9sbG93aW5nIHRhYmxlOjwvcD4KCiAgICA8dGFibGUgY2xhc3M9ImJvcmRlcmVkIj4KICAgIDx0cj48dGg+RWxlbWVudDwvdGg+PHRoPkRlc2NyaXB0aW9uPC90aD48L3RyPgogICAgPHRyPjx0ZD48Y29kZT48YSBocmVmPSIjZWxlbWVudC5jb25maWciPmNvbmZpZzwvYT48L2NvZGU+PC90ZD4KICAgICAgICA8dGQ+Y29uZmlndXJlIG91dHB1dCBmb3JtYXRzPC90ZD48L3RyPgogICAgPHRyPjx0ZD48Y29kZT48YSBocmVmPSIjZWxlbWVudC5lY2hvIj5lY2hvPC9hPjwvY29kZT48L3RkPgogICAgICAgIDx0ZD5wcmludCB2YXJpYWJsZXM8L3RkPjwvdHI+CiAgICA8dHI+PHRkPjxjb2RlPjxhIGhyZWY9IiNlbGVtZW50LmV4ZWMiPmV4ZWM8L2E+PC9jb2RlPjwvdGQ+CiAgICAgICAgPHRkPmV4ZWN1dGUgZXh0ZXJuYWwgcHJvZ3JhbXM8L3RkPjwvdHI+CiAgICA8dHI+PHRkPjxjb2RlPjxhIGhyZWY9IiNlbGVtZW50LmZzaXplIj5mc2l6ZTwvYT48L2NvZGU+PC90ZD4KICAgICAgICA8dGQ+cHJpbnQgc2l6ZSBvZiBhIGZpbGU8L3RkPjwvdHI+CiAgICA8dHI+PHRkPjxjb2RlPjxhIGhyZWY9IiNlbGVtZW50LmZsYXN0bW9kIj5mbGFzdG1vZDwvYT48L2NvZGU+PC90ZD4KICAgICAgICA8dGQ+cHJpbnQgbGFzdCBtb2RpZmljYXRpb24gdGltZSBvZiBhIGZpbGU8L3RkPjwvdHI+CiAgICA8dHI+PHRkPjxjb2RlPjxhIGhyZWY9IiNlbGVtZW50LmluY2x1ZGUiPmluY2x1ZGU8L2E+PC9jb2RlPjwvdGQ+CiAgICAgICAgPHRkPmluY2x1ZGUgYSBmaWxlPC90ZD48L3RyPgogICAgPHRyPjx0ZD48Y29kZT48YSBocmVmPSIjZWxlbWVudC5wcmludGVudiI+cHJpbnRlbnY8L2E+PC9jb2RlPjwvdGQ+CiAgICAgICAgPHRkPnByaW50IGFsbCBhdmFpbGFibGUgdmFyaWFibGVzPC90ZD48L3RyPgogICAgPHRyPjx0ZD48Y29kZT48YSBocmVmPSIjZWxlbWVudC5zZXQiPnNldDwvYT48L2NvZGU+PC90ZD4KICAgICAgICA8dGQ+c2V0IGEgdmFsdWUgb2YgYSB2YXJpYWJsZTwvdGQ+PC90cj4KICAgIDwvdGFibGU+CgogICAgPHA+U1NJIGVsZW1lbnRzIG1heSBiZSBkZWZpbmVkIGJ5IG1vZHVsZXMgb3RoZXIgdGhhbgogICAgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9pbmNsdWRlLmh0bWwiPm1vZF9pbmNsdWRlPC9hPjwvY29kZT4uIEluIGZhY3QsIHRoZSA8Y29kZT48YSBocmVmPSIjZWxlbWVudC5leGVjIj5leGVjPC9hPjwvY29kZT4gZWxlbWVudCBpcyBwcm92aWRlZCBieQogICAgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9jZ2kuaHRtbCI+bW9kX2NnaTwvYT48L2NvZGU+LCBhbmQgd2lsbCBvbmx5IGJlIGF2YWlsYWJsZSBpZiB0aGlzCiAgICBtb2R1bGUgaXMgbG9hZGVkLjwvcD4KCiAgICA8aDM+PGEgbmFtZT0iZWxlbWVudC5jb25maWciIGlkPSJlbGVtZW50LmNvbmZpZyI+VGhlIGNvbmZpZyBFbGVtZW50PC9hPjwvaDM+CiAgICAgIDxwPlRoaXMgY29tbWFuZCBjb250cm9scyB2YXJpb3VzIGFzcGVjdHMgb2YgdGhlIHBhcnNpbmcuIFRoZQogICAgICB2YWxpZCBhdHRyaWJ1dGVzIGFyZTo8L3A+CgogICAgICA8ZGw+CiAgICAgIDxkdD48Y29kZT5lY2hvbXNnPC9jb2RlPiAoPGVtPkFwYWNoZSAyLjEgYW5kIGxhdGVyPC9lbT4pPC9kdD4KICAgICAgPGRkPlRoZSB2YWx1ZSBpcyBhIG1lc3NhZ2UgdGhhdCBpcyBzZW50IGJhY2sgdG8gdGhlCiAgICAgIGNsaWVudCBpZiB0aGUgPGNvZGU+PGEgaHJlZj0iI2VsZW1lbnQuZWNobyI+ZWNobzwvYT48L2NvZGU+IGVsZW1lbnQKICAgICAgYXR0ZW1wdHMgdG8gZWNobyBhbiB1bmRlZmluZWQgdmFyaWFibGUuIFRoaXMgb3ZlcnJpZGVzIGFueSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjc3NpdW5kZWZpbmVkZWNobyI+U1NJVW5kZWZpbmVkRWNobzwvYT48L2NvZGU+IGRpcmVjdGl2ZXMuPC9kZD4KCiAgICAgIDxkdD48Y29kZT5lcnJtc2c8L2NvZGU+PC9kdD4KICAgICAgPGRkPlRoZSB2YWx1ZSBpcyBhIG1lc3NhZ2UgdGhhdCBpcyBzZW50IGJhY2sgdG8gdGhlCiAgICAgIGNsaWVudCBpZiBhbiBlcnJvciBvY2N1cnMgd2hpbGUgcGFyc2luZyB0aGUKICAgICAgZG9jdW1lbnQuIFRoaXMgb3ZlcnJpZGVzIGFueSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjc3NpZXJyb3Jtc2ciPlNTSUVycm9yTXNnPC9hPjwvY29kZT4gZGlyZWN0aXZlcy48L2RkPgoKICAgICAgPGR0Pjxjb2RlPnNpemVmbXQ8L2NvZGU+PC9kdD4KICAgICAgPGRkPlRoZSB2YWx1ZSBzZXRzIHRoZSBmb3JtYXQgdG8gYmUgdXNlZCB3aGljaCBkaXNwbGF5aW5nCiAgICAgIHRoZSBzaXplIG9mIGEgZmlsZS4gVmFsaWQgdmFsdWVzIGFyZSA8Y29kZT5ieXRlczwvY29kZT4KICAgICAgZm9yIGEgY291bnQgaW4gYnl0ZXMsIG9yIDxjb2RlPmFiYnJldjwvY29kZT4gZm9yIGEgY291bnQKICAgICAgaW4gS2Igb3IgTWIgYXMgYXBwcm9wcmlhdGUsIGZvciBleGFtcGxlIGEgc2l6ZSBvZiAxMDI0IGJ5dGVzCiAgICAgIHdpbGwgYmUgcHJpbnRlZCBhcyAiMUsiLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+dGltZWZtdDwvY29kZT48L2R0PgogICAgICA8ZGQ+VGhlIHZhbHVlIGlzIGEgc3RyaW5nIHRvIGJlIHVzZWQgYnkgdGhlCiAgICAgIDxjb2RlPnN0cmZ0aW1lKDMpPC9jb2RlPiBsaWJyYXJ5IHJvdXRpbmUgd2hlbiBwcmludGluZwogICAgICBkYXRlcy48L2RkPgogICAgICA8L2RsPgogICAgIAoKICAgIDxoMz48YSBuYW1lPSJlbGVtZW50LmVjaG8iIGlkPSJlbGVtZW50LmVjaG8iPlRoZSBlY2hvIEVsZW1lbnQ8L2E+PC9oMz4KICAgICAgPHA+VGhpcyBjb21tYW5kIHByaW50cyBvbmUgb2YgdGhlIDxhIGhyZWY9IiNpbmNsdWRldmFycyI+aW5jbHVkZQogICAgICB2YXJpYWJsZXM8L2E+LCBkZWZpbmVkIGJlbG93LiBJZiB0aGUgdmFyaWFibGUgaXMgdW5zZXQsIHRoZSByZXN1bHQgaXMKICAgICAgZGV0ZXJtaW5lZCBieSB0aGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI3NzaXVuZGVmaW5lZGVjaG8iPlNTSVVuZGVmaW5lZEVjaG88L2E+PC9jb2RlPiBkaXJlY3RpdmUuIEFueSBkYXRlcyBwcmludGVkIGFyZQogICAgICBzdWJqZWN0IHRvIHRoZSBjdXJyZW50bHkgY29uZmlndXJlZCA8Y29kZT50aW1lZm10PC9jb2RlPi48L3A+CgogICAgICA8cD5BdHRyaWJ1dGVzOjwvcD4gCgogICAgICA8ZGw+CiAgICAgIDxkdD48Y29kZT52YXI8L2NvZGU+PC9kdD4KICAgICAgPGRkPlRoZSB2YWx1ZSBpcyB0aGUgbmFtZSBvZiB0aGUgdmFyaWFibGUgdG8gcHJpbnQuPC9kZD4KCiAgICAgIDxkdD48Y29kZT5lbmNvZGluZzwvY29kZT48L2R0PgogICAgICA8ZGQ+PHA+U3BlY2lmaWVzIGhvdyBBcGFjaGUgc2hvdWxkIGVuY29kZSBzcGVjaWFsIGNoYXJhY3RlcnMKICAgICAgY29udGFpbmVkIGluIHRoZSB2YXJpYWJsZSBiZWZvcmUgb3V0cHV0dGluZyB0aGVtLiBJZiBzZXQKICAgICAgdG8gPGNvZGU+bm9uZTwvY29kZT4sIG5vIGVuY29kaW5nIHdpbGwgYmUgZG9uZS4gSWYgc2V0IHRvCiAgICAgIDxjb2RlPnVybDwvY29kZT4sIHRoZW4gVVJMIGVuY29kaW5nIChhbHNvIGtub3duIGFzICUtZW5jb2Rpbmc7CiAgICAgIHRoaXMgaXMgYXBwcm9wcmlhdGUgZm9yIHVzZSB3aXRoaW4gVVJMcyBpbiBsaW5rcywgZXRjLikgd2lsbCBiZQogICAgICBwZXJmb3JtZWQuIEF0IHRoZSBzdGFydCBvZiBhbiA8Y29kZT5lY2hvPC9jb2RlPiBlbGVtZW50LAogICAgICB0aGUgZGVmYXVsdCBpcyBzZXQgdG8gPGNvZGU+ZW50aXR5PC9jb2RlPiwgcmVzdWx0aW5nIGluIGVudGl0eQogICAgICBlbmNvZGluZyAod2hpY2ggaXMgYXBwcm9wcmlhdGUgaW4gdGhlIGNvbnRleHQgb2YgYSBibG9jay1sZXZlbAogICAgICBIVE1MIGVsZW1lbnQsIDxlbT5lLmcuPC9lbT4gYSBwYXJhZ3JhcGggb2YgdGV4dCkuIFRoaXMgY2FuIGJlCiAgICAgIGNoYW5nZWQgYnkgYWRkaW5nIGFuIDxjb2RlPmVuY29kaW5nPC9jb2RlPiBhdHRyaWJ1dGUsIHdoaWNoIHdpbGwKICAgICAgcmVtYWluIGluIGVmZmVjdCB1bnRpbCB0aGUgbmV4dCA8Y29kZT5lbmNvZGluZzwvY29kZT4gYXR0cmlidXRlCiAgICAgIGlzIGVuY291bnRlcmVkIG9yIHRoZSBlbGVtZW50IGVuZHMsIHdoaWNoZXZlciBjb21lcyBmaXJzdC48L3A+CgogICAgICA8cD5UaGUgPGNvZGU+ZW5jb2Rpbmc8L2NvZGU+IGF0dHJpYnV0ZSBtdXN0IDxlbT5wcmVjZWRlPC9lbT4gdGhlCiAgICAgIGNvcnJlc3BvbmRpbmcgPGNvZGU+dmFyPC9jb2RlPiBhdHRyaWJ1dGUgdG8gYmUgZWZmZWN0aXZlLCBhbmQgCiAgICAgIG9ubHkgc3BlY2lhbCBjaGFyYWN0ZXJzIGFzIGRlZmluZWQgaW4gdGhlIElTTy04ODU5LTEgY2hhcmFjdGVyCiAgICAgIGVuY29kaW5nIHdpbGwgYmUgZW5jb2RlZC4gVGhpcyBlbmNvZGluZyBwcm9jZXNzIG1heSBub3QgaGF2ZSB0aGUKICAgICAgZGVzaXJlZCByZXN1bHQgaWYgYSBkaWZmZXJlbnQgY2hhcmFjdGVyIGVuY29kaW5nIGlzIGluIHVzZS48L3A+CgogICAgICA8ZGl2IGNsYXNzPSJ3YXJuaW5nIj4KICAgICAgICBJbiBvcmRlciB0byBhdm9pZCBjcm9zcy1zaXRlIHNjcmlwdGluZyBpc3N1ZXMsIHlvdSBzaG91bGQKICAgICAgICA8ZW0+YWx3YXlzPC9lbT4gZW5jb2RlIHVzZXIgc3VwcGxpZWQgZGF0YS4KICAgICAgPC9kaXY+CiAgICAgIDwvZGQ+CiAgICAgIDwvZGw+CiAgICAgCgogICAgPGgzPjxhIG5hbWU9ImVsZW1lbnQuZXhlYyIgaWQ9ImVsZW1lbnQuZXhlYyI+VGhlIGV4ZWMgRWxlbWVudDwvYT48L2gzPgogICAgICA8cD5UaGUgPGNvZGU+ZXhlYzwvY29kZT4gY29tbWFuZCBleGVjdXRlcyBhIGdpdmVuIHNoZWxsIGNvbW1hbmQgb3IKICAgICAgQ0dJIHNjcmlwdC4gSXQgcmVxdWlyZXMgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9jZ2kuaHRtbCI+bW9kX2NnaTwvYT48L2NvZGU+IHRvIGJlIHByZXNlbnQKICAgICAgaW4gdGhlIHNlcnZlci4gSWYgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL2NvcmUuaHRtbCNvcHRpb25zIj5PcHRpb25zPC9hPjwvY29kZT4KICAgICAgPGNvZGU+SW5jbHVkZXNOT0VYRUM8L2NvZGU+IGlzIHNldCwgdGhpcyBjb21tYW5kIGlzIGNvbXBsZXRlbHkKICAgICAgZGlzYWJsZWQuIFRoZSB2YWxpZCBhdHRyaWJ1dGVzIGFyZTo8L3A+CgogICAgICA8ZGw+CiAgICAgIDxkdD48Y29kZT5jZ2k8L2NvZGU+PC9kdD4KICAgICAgPGRkPjxwPlRoZSB2YWx1ZSBzcGVjaWZpZXMgYSAoJS1lbmNvZGVkKSBVUkwtcGF0aCB0bwogICAgICB0aGUgQ0dJIHNjcmlwdC4gSWYgdGhlIHBhdGggZG9lcyBub3QgYmVnaW4gd2l0aCBhIHNsYXNoICgvKSwKICAgICAgdGhlbiBpdCBpcyB0YWtlbiB0byBiZSByZWxhdGl2ZSB0byB0aGUgY3VycmVudAogICAgICBkb2N1bWVudC4gVGhlIGRvY3VtZW50IHJlZmVyZW5jZWQgYnkgdGhpcyBwYXRoIGlzCiAgICAgIGludm9rZWQgYXMgYSBDR0kgc2NyaXB0LCBldmVuIGlmIHRoZSBzZXJ2ZXIgd291bGQgbm90CiAgICAgIG5vcm1hbGx5IHJlY29nbml6ZSBpdCBhcyBzdWNoLiBIb3dldmVyLCB0aGUgZGlyZWN0b3J5CiAgICAgIGNvbnRhaW5pbmcgdGhlIHNjcmlwdCBtdXN0IGJlIGVuYWJsZWQgZm9yIENHSSBzY3JpcHRzCiAgICAgICh3aXRoIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfYWxpYXMuaHRtbCNzY3JpcHRhbGlhcyI+U2NyaXB0QWxpYXM8L2E+PC9jb2RlPgogICAgICBvciA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvY29yZS5odG1sI29wdGlvbnMiPk9wdGlvbnM8L2E+PC9jb2RlPgogICAgICA8Y29kZT5FeGVjQ0dJPC9jb2RlPikuPC9wPgoKICAgICAgPHA+VGhlIENHSSBzY3JpcHQgaXMgZ2l2ZW4gdGhlIDxjb2RlPlBBVEhfSU5GTzwvY29kZT4gYW5kIHF1ZXJ5CiAgICAgIHN0cmluZyAoPGNvZGU+UVVFUllfU1RSSU5HPC9jb2RlPikgb2YgdGhlIG9yaWdpbmFsIHJlcXVlc3QgZnJvbSB0aGUKICAgICAgY2xpZW50OyB0aGVzZSA8ZW0+Y2Fubm90PC9lbT4gYmUgc3BlY2lmaWVkIGluIHRoZSBVUkwgcGF0aC4gVGhlCiAgICAgIGluY2x1ZGUgdmFyaWFibGVzIHdpbGwgYmUgYXZhaWxhYmxlIHRvIHRoZSBzY3JpcHQgaW4gYWRkaXRpb24gdG8KICAgICAgdGhlIHN0YW5kYXJkIDxhIGhyZWY9Im1vZF9jZ2kuaHRtbCI+Q0dJPC9hPiBlbnZpcm9ubWVudC48L3A+CgogICAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48aDM+RXhhbXBsZTwvaDM+PHA+PGNvZGU+CiAgICAgICAgJmx0OyEtLSNleGVjIGNnaT0iL2NnaS1iaW4vZXhhbXBsZS5jZ2kiIC0tJmd0OwogICAgICA8L2NvZGU+PC9wPjwvZGl2PgoKICAgICAgPHA+SWYgdGhlIHNjcmlwdCByZXR1cm5zIGEgPGNvZGU+TG9jYXRpb246PC9jb2RlPiBoZWFkZXIgaW5zdGVhZCBvZgogICAgICBvdXRwdXQsIHRoZW4gdGhpcyB3aWxsIGJlIHRyYW5zbGF0ZWQgaW50byBhbiBIVE1MIGFuY2hvci48L3A+CgogICAgICA8cD5UaGUgPGNvZGU+PGEgaHJlZj0iI2luY2x1ZGV2aXJ0dWFsIj5pbmNsdWRlIHZpcnR1YWw8L2E+PC9jb2RlPgogICAgICBlbGVtZW50IHNob3VsZCBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gPGNvZGU+ZXhlYyBjZ2k8L2NvZGU+LiBJbgogICAgICBwYXJ0aWN1bGFyLCBpZiB5b3UgbmVlZCB0byBwYXNzIGFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIGEgQ0dJIHByb2dyYW0sCiAgICAgIHVzaW5nIHRoZSBxdWVyeSBzdHJpbmcsIHRoaXMgY2Fubm90IGJlIGRvbmUgd2l0aCA8Y29kZT5leGVjCiAgICAgIGNnaTwvY29kZT4sIGJ1dCBjYW4gYmUgZG9uZSB3aXRoIDxjb2RlPmluY2x1ZGUgdmlydHVhbDwvY29kZT4sIGFzCiAgICAgIHNob3duIGhlcmU6PC9wPgoKICAgICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgICAgJmx0OyEtLSNpbmNsdWRlIHZpcnR1YWw9Ii9jZ2ktYmluL2V4YW1wbGUuY2dpP2FyZ3VtZW50PXZhbHVlIiAtLSZndDsKICAgICAgPC9jb2RlPjwvcD48L2Rpdj4KICAgICAgPC9kZD4KCiAgICAgIDxkdD48Y29kZT5jbWQ8L2NvZGU+PC9kdD4KICAgICAgPGRkPjxwPlRoZSBzZXJ2ZXIgd2lsbCBleGVjdXRlIHRoZSBnaXZlbiBzdHJpbmcgdXNpbmcKICAgICAgPGNvZGU+L2Jpbi9zaDwvY29kZT4uIFRoZSA8YSBocmVmPSIjaW5jbHVkZXZhcnMiPmluY2x1ZGUgdmFyaWFibGVzPC9hPiBhcmUgYXZhaWxhYmxlIHRvIHRoZSBjb21tYW5kLCBpbiBhZGRpdGlvbgogICAgICB0byB0aGUgdXN1YWwgc2V0IG9mIENHSSB2YXJpYWJsZXMuPC9wPgoKICAgICAgPHA+VGhlIHVzZSBvZiA8Y29kZT48YSBocmVmPSIjaW5jbHVkZXZpcnR1YWwiPiNpbmNsdWRlIHZpcnR1YWw8L2E+PC9jb2RlPiBpcyBhbG1vc3QgYWx3YXlzIHByZWZlcmVkIHRvIHVzaW5nCiAgICAgIGVpdGhlciA8Y29kZT4jZXhlYyBjZ2k8L2NvZGU+IG9yIDxjb2RlPiNleGVjIGNtZDwvY29kZT4uIFRoZSBmb3JtZXIKICAgICAgKDxjb2RlPiNpbmNsdWRlIHZpcnR1YWw8L2NvZGU+KSB1c2VzIHRoZSBzdGFuZGFyZCBBcGFjaGUgc3ViLXJlcXVlc3QKICAgICAgbWVjaGFuaXNtIHRvIGluY2x1ZGUgZmlsZXMgb3Igc2NyaXB0cy4gSXQgaXMgbXVjaCBiZXR0ZXIgdGVzdGVkIGFuZAogICAgICBtYWludGFpbmVkLjwvcD4KCiAgICAgIDxwPkluIGFkZGl0aW9uLCBvbiBzb21lIHBsYXRmb3JtcywgbGlrZSBXaW4zMiwgYW5kIG9uIHVuaXggd2hlbgogICAgICB1c2luZyA8YSBocmVmPSIuLi9zdWV4ZWMuaHRtbCI+c3VleGVjPC9hPiwgeW91IGNhbm5vdCBwYXNzIGFyZ3VtZW50cwogICAgICB0byBhIGNvbW1hbmQgaW4gYW4gPGNvZGU+ZXhlYzwvY29kZT4gZGlyZWN0aXZlLCBvciBvdGhlcndpc2UgaW5jbHVkZQogICAgICBzcGFjZXMgaW4gdGhlIGNvbW1hbmQuIFRodXMsIHdoaWxlIHRoZSBmb2xsb3dpbmcgd2lsbCB3b3JrIHVuZGVyIGEKICAgICAgbm9uLXN1ZXhlYyBjb25maWd1cmF0aW9uIG9uIHVuaXgsIGl0IHdpbGwgbm90IHByb2R1Y2UgdGhlIGRlc2lyZWQKICAgICAgcmVzdWx0IHVuZGVyIFdpbjMyLCBvciB3aGVuIHJ1bm5pbmcgc3VleGVjOjwvcD4KCiAgICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgICAgICZsdDshLS0jZXhlYyBjbWQ9InBlcmwgL3BhdGgvdG8vcGVybHNjcmlwdCBhcmcxIGFyZzIiIC0tJmd0OwogICAgICA8L2NvZGU+PC9wPjwvZGl2PgogICAgICA8L2RkPgogICAgICA8L2RsPgogICAgIAoKICAgIDxoMz48YSBuYW1lPSJlbGVtZW50LmZzaXplIiBpZD0iZWxlbWVudC5mc2l6ZSI+VGhlIGZzaXplIEVsZW1lbnQ8L2E+PC9oMz4KICAgICAgPHA+VGhpcyBjb21tYW5kIHByaW50cyB0aGUgc2l6ZSBvZiB0aGUgc3BlY2lmaWVkIGZpbGUsIHN1YmplY3QKICAgICAgdG8gdGhlIDxjb2RlPnNpemVmbXQ8L2NvZGU+IGZvcm1hdCBzcGVjaWZpY2F0aW9uLiBBdHRyaWJ1dGVzOjwvcD4KCiAgICAgIDxkbD4KICAgICAgPGR0Pjxjb2RlPmZpbGU8L2NvZGU+PC9kdD4KICAgICAgPGRkPlRoZSB2YWx1ZSBpcyBhIHBhdGggcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeQogICAgICBjb250YWluaW5nIHRoZSBjdXJyZW50IGRvY3VtZW50IGJlaW5nIHBhcnNlZC48L2RkPgoKICAgICAgPGR0Pjxjb2RlPnZpcnR1YWw8L2NvZGU+PC9kdD4KICAgICAgPGRkPlRoZSB2YWx1ZSBpcyBhICglLWVuY29kZWQpIFVSTC1wYXRoLiBJZiBpdCBkb2VzIG5vdCBiZWdpbiB3aXRoCiAgICAgIGEgc2xhc2ggKC8pIHRoZW4gaXQgaXMgdGFrZW4gdG8gYmUgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgZG9jdW1lbnQuCiAgICAgIE5vdGUsIHRoYXQgdGhpcyBkb2VzIDxlbT5ub3Q8L2VtPiBwcmludCB0aGUgc2l6ZSBvZiBhbnkgQ0dJIG91dHB1dCwKICAgICAgYnV0IHRoZSBzaXplIG9mIHRoZSBDR0kgc2NyaXB0IGl0c2VsZi48L2RkPgogICAgICA8L2RsPgogICAgIAoKICAgIDxoMz48YSBuYW1lPSJlbGVtZW50LmZsYXN0bW9kIiBpZD0iZWxlbWVudC5mbGFzdG1vZCI+VGhlIGZsYXN0bW9kIEVsZW1lbnQ8L2E+PC9oMz4KICAgICAgPHA+VGhpcyBjb21tYW5kIHByaW50cyB0aGUgbGFzdCBtb2RpZmljYXRpb24gZGF0ZSBvZiB0aGUKICAgICAgc3BlY2lmaWVkIGZpbGUsIHN1YmplY3QgdG8gdGhlIDxjb2RlPnRpbWVmbXQ8L2NvZGU+IGZvcm1hdAogICAgICBzcGVjaWZpY2F0aW9uLiBUaGUgYXR0cmlidXRlcyBhcmUgdGhlIHNhbWUgYXMgZm9yIHRoZQogICAgICA8Y29kZT48YSBocmVmPSIjZWxlbWVudC5mc2l6ZSI+ZnNpemU8L2E+PC9jb2RlPiBjb21tYW5kLjwvcD4KICAgICAKCiAgICA8aDM+PGEgbmFtZT0iZWxlbWVudC5pbmNsdWRlIiBpZD0iZWxlbWVudC5pbmNsdWRlIj5UaGUgaW5jbHVkZSBFbGVtZW50PC9hPjwvaDM+CiAgICAgIDxwPlRoaXMgY29tbWFuZCBpbnNlcnRzIHRoZSB0ZXh0IG9mIGFub3RoZXIgZG9jdW1lbnQgb3IgZmlsZQogICAgICBpbnRvIHRoZSBwYXJzZWQgZmlsZS4gQW55IGluY2x1ZGVkIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgdXN1YWwKICAgICAgYWNjZXNzIGNvbnRyb2wuIElmIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgcGFyc2VkIGZpbGUgaGFzCiAgICAgIDxhIGhyZWY9ImNvcmUuaHRtbCNvcHRpb25zIj5PcHRpb25zPC9hPgogICAgICA8Y29kZT5JbmNsdWRlc05PRVhFQzwvY29kZT4gc2V0LCB0aGVuIG9ubHkgZG9jdW1lbnRzIHdpdGggYSB0ZXh0CiAgICAgIDxhIGNsYXNzPSJnbG9zc2FyeWxpbmsiIGhyZWY9Ii4uL2dsb3NzYXJ5Lmh0bWwjbWltZS10eXBlIiB0aXRsZT0ic2VlIGdsb3NzYXJ5Ij5NSU1FLXR5cGU8L2E+ICg8Y29kZT50ZXh0L3BsYWluPC9jb2RlPiwKICAgICAgPGNvZGU+dGV4dC9odG1sPC9jb2RlPiBldGMuKSB3aWxsIGJlIGluY2x1ZGVkLiBPdGhlcndpc2UgQ0dJCiAgICAgIHNjcmlwdHMgYXJlIGludm9rZWQgYXMgbm9ybWFsIHVzaW5nIHRoZSBjb21wbGV0ZSBVUkwgZ2l2ZW4gaW4KICAgICAgdGhlIGNvbW1hbmQsIGluY2x1ZGluZyBhbnkgcXVlcnkgc3RyaW5nLjwvcD4KCiAgICAgIDxwPkFuIGF0dHJpYnV0ZSBkZWZpbmVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgZG9jdW1lbnQ7IHRoZQogICAgICBpbmNsdXNpb24gaXMgZG9uZSBmb3IgZWFjaCBhdHRyaWJ1dGUgZ2l2ZW4gdG8gdGhlIGluY2x1ZGUKICAgICAgY29tbWFuZC4gVGhlIHZhbGlkIGF0dHJpYnV0ZXMgYXJlOjwvcD4KCiAgICAgIDxkbD4KICAgICAgPGR0Pjxjb2RlPmZpbGU8L2NvZGU+PC9kdD4KICAgICAgPGRkPlRoZSB2YWx1ZSBpcyBhIHBhdGggcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeQogICAgICBjb250YWluaW5nIHRoZSBjdXJyZW50IGRvY3VtZW50IGJlaW5nIHBhcnNlZC4gSXQgY2Fubm90CiAgICAgIGNvbnRhaW4gPGNvZGU+Li4vPC9jb2RlPiwgbm9yIGNhbiBpdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLgogICAgICBUaGVyZWZvcmUsIHlvdSBjYW5ub3QgaW5jbHVkZSBmaWxlcyB0aGF0IGFyZSBvdXRzaWRlIG9mIHRoZQogICAgICBkb2N1bWVudCByb290LCBvciBhYm92ZSB0aGUgY3VycmVudCBkb2N1bWVudCBpbiB0aGUgZGlyZWN0b3J5CiAgICAgIHN0cnVjdHVyZS4gVGhlIDxjb2RlPnZpcnR1YWw8L2NvZGU+IGF0dHJpYnV0ZSBzaG91bGQgYWx3YXlzIGJlCiAgICAgIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aGlzIG9uZS48L2RkPgoKICAgICAgPGR0Pjxjb2RlPjxhIGlkPSJpbmNsdWRldmlydHVhbCIgbmFtZT0iaW5jbHVkZXZpcnR1YWwiPnZpcnR1YWw8L2E+PC9jb2RlPjwvZHQ+CiAgICAgIDxkZD48cD5UaGUgdmFsdWUgaXMgYSAoJS1lbmNvZGVkKSBVUkwtcGF0aC4gVGhlIFVSTCBjYW5ub3QgY29udGFpbiBhCiAgICAgIHNjaGVtZSBvciBob3N0bmFtZSwgb25seSBhIHBhdGggYW5kIGFuIG9wdGlvbmFsIHF1ZXJ5IHN0cmluZy4gSWYgaXQKICAgICAgZG9lcyBub3QgYmVnaW4gd2l0aCBhIHNsYXNoICgvKSB0aGVuIGl0IGlzIHRha2VuIHRvIGJlIHJlbGF0aXZlIHRvIHRoZQogICAgICBjdXJyZW50IGRvY3VtZW50LjwvcD4KCiAgICAgIDxwPkEgVVJMIGlzIGNvbnN0cnVjdGVkIGZyb20gdGhlIGF0dHJpYnV0ZSwgYW5kIHRoZSBvdXRwdXQgdGhlCiAgICAgIHNlcnZlciB3b3VsZCByZXR1cm4gaWYgdGhlIFVSTCB3ZXJlIGFjY2Vzc2VkIGJ5IHRoZSBjbGllbnQgaXMKICAgICAgaW5jbHVkZWQgaW4gdGhlIHBhcnNlZCBvdXRwdXQuIFRodXMgaW5jbHVkZWQgZmlsZXMgY2FuIGJlIG5lc3RlZC48L3A+CgogICAgICA8cD5JZiB0aGUgc3BlY2lmaWVkIFVSTCBpcyBhIENHSSBwcm9ncmFtLCB0aGUgcHJvZ3JhbSB3aWxsIGJlCiAgICAgIGV4ZWN1dGVkIGFuZCBpdHMgb3V0cHV0IGluc2VydGVkIGluIHBsYWNlIG9mIHRoZSBkaXJlY3RpdmUgaW4gdGhlCiAgICAgIHBhcnNlZCBmaWxlLiBZb3UgbWF5IGluY2x1ZGUgYSBxdWVyeSBzdHJpbmcgaW4gYSBDR0kgdXJsOjwvcD4KICAgICAKICAgICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgICAgJmx0OyEtLSNpbmNsdWRlIHZpcnR1YWw9Ii9jZ2ktYmluL2V4YW1wbGUuY2dpP2FyZ3VtZW50PXZhbHVlIiAtLSZndDsKICAgICAgPC9jb2RlPjwvcD48L2Rpdj4KICAgICAgICAgICAKICAgICAgPHA+PGNvZGU+aW5jbHVkZSB2aXJ0dWFsPC9jb2RlPiBzaG91bGQgYmUgdXNlZCBpbiBwcmVmZXJlbmNlCiAgICAgIHRvIDxjb2RlPmV4ZWMgY2dpPC9jb2RlPiB0byBpbmNsdWRlIHRoZSBvdXRwdXQgb2YgQ0dJIHByb2dyYW1zCiAgICAgIGludG8gYW4gSFRNTCBkb2N1bWVudC48L3A+CiAgICAgIDwvZGQ+CiAgICAgIDwvZGw+CiAgICAgCgogICAgPGgzPjxhIG5hbWU9ImVsZW1lbnQucHJpbnRlbnYiIGlkPSJlbGVtZW50LnByaW50ZW52Ij5UaGUgcHJpbnRlbnYgRWxlbWVudDwvYT48L2gzPgogICAgICA8cD5UaGlzIHByaW50cyBvdXQgYSBsaXN0aW5nIG9mIGFsbCBleGlzdGluZyB2YXJpYWJsZXMgYW5kCiAgICAgIHRoZWlyIHZhbHVlcy4gU3BlY2lhbCBjaGFyYWN0ZXJzIGFyZSBlbnRpdHkgZW5jb2RlZCAoc2VlIHRoZSA8Y29kZT48YSBocmVmPSIjZWxlbWVudC5lY2hvIj5lY2hvPC9hPjwvY29kZT4gZWxlbWVudCBmb3IgZGV0YWlscykKICAgICAgYmVmb3JlIGJlaW5nIG91dHB1dC4gVGhlcmUgYXJlIG5vIGF0dHJpYnV0ZXMuPC9wPgoKICAgICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PGgzPkV4YW1wbGU8L2gzPjxwPjxjb2RlPgogICAgICAgICZsdDshLS0jcHJpbnRlbnYgLS0mZ3Q7CiAgICAgIDwvY29kZT48L3A+PC9kaXY+CiAgICAgCgogICAgPGgzPjxhIG5hbWU9ImVsZW1lbnQuc2V0IiBpZD0iZWxlbWVudC5zZXQiPlRoZSBzZXQgRWxlbWVudDwvYT48L2gzPgogICAgICA8cD5UaGlzIHNldHMgdGhlIHZhbHVlIG9mIGEgdmFyaWFibGUuIEF0dHJpYnV0ZXM6PC9wPgoKICAgICAgPGRsPgogICAgICA8ZHQ+PGNvZGU+dmFyPC9jb2RlPjwvZHQ+CiAgICAgIDxkZD5UaGUgbmFtZSBvZiB0aGUgdmFyaWFibGUgdG8gc2V0LjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+dmFsdWU8L2NvZGU+PC9kdD4KICAgICAgPGRkPlRoZSB2YWx1ZSB0byBnaXZlIGEgdmFyaWFibGUuPC9kZD4KICAgICAgPC9kbD4KCiAgICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxoMz5FeGFtcGxlPC9oMz48cD48Y29kZT4KICAgICAgICAmbHQ7IS0tI3NldCB2YXI9ImNhdGVnb3J5IiB2YWx1ZT0iaGVscCIgLS0mZ3Q7CiAgICAgIDwvY29kZT48L3A+PC9kaXY+CiAgICAgCjwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9ImluY2x1ZGV2YXJzIiBpZD0iaW5jbHVkZXZhcnMiPkluY2x1ZGUgVmFyaWFibGVzPC9hPjwvaDI+CiAgICAKCiAgICA8cD5JbiBhZGRpdGlvbiB0byB0aGUgdmFyaWFibGVzIGluIHRoZSBzdGFuZGFyZCBDR0kgZW52aXJvbm1lbnQsCiAgICB0aGVzZSBhcmUgYXZhaWxhYmxlIGZvciB0aGUgPGNvZGU+ZWNobzwvY29kZT4gY29tbWFuZCwgZm9yCiAgICA8Y29kZT5pZjwvY29kZT4gYW5kIDxjb2RlPmVsaWY8L2NvZGU+LCBhbmQgdG8gYW55IHByb2dyYW0KICAgIGludm9rZWQgYnkgdGhlIGRvY3VtZW50LjwvcD4KCiAgICA8ZGw+CiAgICAgIDxkdD48Y29kZT5EQVRFX0dNVDwvY29kZT48L2R0PgogICAgICA8ZGQ+VGhlIGN1cnJlbnQgZGF0ZSBpbiBHcmVlbndpY2ggTWVhbiBUaW1lLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+REFURV9MT0NBTDwvY29kZT48L2R0PgogICAgICA8ZGQ+VGhlIGN1cnJlbnQgZGF0ZSBpbiB0aGUgbG9jYWwgdGltZSB6b25lLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+RE9DVU1FTlRfTkFNRTwvY29kZT48L2R0PgogICAgICA8ZGQ+VGhlIGZpbGVuYW1lIChleGNsdWRpbmcgZGlyZWN0b3JpZXMpIG9mIHRoZSBkb2N1bWVudAogICAgICByZXF1ZXN0ZWQgYnkgdGhlIHVzZXIuPC9kZD4KCiAgICAgIDxkdD48Y29kZT5ET0NVTUVOVF9VUkk8L2NvZGU+PC9kdD4KICAgICAgPGRkPlRoZSAoJS1kZWNvZGVkKSBVUkwgcGF0aCBvZiB0aGUgZG9jdW1lbnQgcmVxdWVzdGVkIGJ5IHRoZQogICAgICB1c2VyLiBOb3RlIHRoYXQgaW4gdGhlIGNhc2Ugb2YgbmVzdGVkIGluY2x1ZGUgZmlsZXMsIHRoaXMgaXMKICAgICAgPGVtPm5vdDwvZW0+IHRoZSBVUkwgZm9yIHRoZSBjdXJyZW50IGRvY3VtZW50LjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+TEFTVF9NT0RJRklFRDwvY29kZT48L2R0PgogICAgICA8ZGQ+VGhlIGxhc3QgbW9kaWZpY2F0aW9uIGRhdGUgb2YgdGhlIGRvY3VtZW50IHJlcXVlc3RlZCBieQogICAgICB0aGUgdXNlci48L2RkPgoKICAgICAgPGR0Pjxjb2RlPlFVRVJZX1NUUklOR19VTkVTQ0FQRUQ8L2NvZGU+PC9kdD4KICAgICAgPGRkPklmIGEgcXVlcnkgc3RyaW5nIGlzIHByZXNlbnQsIHRoaXMgdmFyaWFibGUgY29udGFpbnMgdGhlCiAgICAgICglLWRlY29kZWQpIHF1ZXJ5IHN0cmluZywgd2hpY2ggaXMgPGVtPmVzY2FwZWQ8L2VtPiBmb3Igc2hlbGwKICAgICAgdXNhZ2UgKHNwZWNpYWwgY2hhcmFjdGVycyBsaWtlIDxjb2RlPiZhbXA7PC9jb2RlPiBldGMuIGFyZQogICAgICBwcmVjZWRlZCBieSBiYWNrc2xhc2hlcykuPC9kZD4KICAgIDwvZGw+CjwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9InN1YnN0aXR1dGlvbiIgaWQ9InN1YnN0aXR1dGlvbiI+VmFyaWFibGUgU3Vic3RpdHV0aW9uPC9hPjwvaDI+CgogICAgPHA+VmFyaWFibGUgc3Vic3RpdHV0aW9uIGlzIGRvbmUgd2l0aGluIHF1b3RlZCBzdHJpbmdzIGluIG1vc3QKICAgIGNhc2VzIHdoZXJlIHRoZXkgbWF5IHJlYXNvbmFibHkgb2NjdXIgYXMgYW4gYXJndW1lbnQgdG8gYW4gU1NJCiAgICBkaXJlY3RpdmUuIFRoaXMgaW5jbHVkZXMgdGhlIDxjb2RlPmNvbmZpZzwvY29kZT4sCiAgICA8Y29kZT5leGVjPC9jb2RlPiwgPGNvZGU+Zmxhc3Rtb2Q8L2NvZGU+LCA8Y29kZT5mc2l6ZTwvY29kZT4sCiAgICA8Y29kZT5pbmNsdWRlPC9jb2RlPiwgPGNvZGU+ZWNobzwvY29kZT4sIGFuZCA8Y29kZT5zZXQ8L2NvZGU+CiAgICBkaXJlY3RpdmVzLCBhcyB3ZWxsIGFzIHRoZSBhcmd1bWVudHMgdG8gY29uZGl0aW9uYWwgb3BlcmF0b3JzLgogICAgWW91IGNhbiBpbnNlcnQgYSBsaXRlcmFsIGRvbGxhciBzaWduIGludG8gdGhlIHN0cmluZyB1c2luZyBiYWNrc2xhc2gKICAgIHF1b3Rpbmc6PC9wPgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgICAmbHQ7IS0tI2lmIGV4cHI9IiRhID0gXCR0ZXN0IiAtLSZndDsKICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+SWYgYSB2YXJpYWJsZSByZWZlcmVuY2UgbmVlZHMgdG8gYmUgc3Vic3RpdHV0ZWQgaW4gdGhlCiAgICBtaWRkbGUgb2YgYSBjaGFyYWN0ZXIgc2VxdWVuY2UgdGhhdCBtaWdodCBvdGhlcndpc2UgYmUKICAgIGNvbnNpZGVyZWQgYSB2YWxpZCBpZGVudGlmaWVyIGluIGl0cyBvd24gcmlnaHQsIGl0IGNhbiBiZQogICAgZGlzYW1iaWd1YXRlZCBieSBlbmNsb3NpbmcgdGhlIHJlZmVyZW5jZSBpbiBicmFjZXMsCiAgICA8ZW0+YSBsYTwvZW0+IHNoZWxsIHN1YnN0aXR1dGlvbjo8L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgICZsdDshLS0jc2V0IHZhcj0iWmVkIiB2YWx1ZT0iJHtSRU1PVEVfSE9TVH1fJHtSRVFVRVNUX01FVEhPRH0iIC0tJmd0OwogICAgPC9jb2RlPjwvcD48L2Rpdj4KCiAgICA8cD5UaGlzIHdpbGwgcmVzdWx0IGluIHRoZSA8Y29kZT5aZWQ8L2NvZGU+IHZhcmlhYmxlIGJlaW5nIHNldAogICAgdG8gIjxjb2RlPlhfWTwvY29kZT4iIGlmIDxjb2RlPlJFTU9URV9IT1NUPC9jb2RlPiBpcwogICAgIjxjb2RlPlg8L2NvZGU+IiBhbmQgPGNvZGU+UkVRVUVTVF9NRVRIT0Q8L2NvZGU+IGlzCiAgICAiPGNvZGU+WTwvY29kZT4iLjwvcD4KCiAgICA8cD5UaGUgYmVsb3cgZXhhbXBsZSB3aWxsIHByaW50ICJpbiBmb28iIGlmIHRoZQogICAgPGNvZGU+RE9DVU1FTlRfVVJJPC9jb2RlPiBpcyA8Y29kZT4vZm9vL2ZpbGUuaHRtbDwvY29kZT4sICJpbiBiYXIiCiAgICBpZiBpdCBpcyA8Y29kZT4vYmFyL2ZpbGUuaHRtbDwvY29kZT4gYW5kICJpbiBuZWl0aGVyIiBvdGhlcndpc2U6PC9wPgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgICAmbHQ7IS0tI2lmIGV4cHI9JyIkRE9DVU1FTlRfVVJJIiA9ICIvZm9vL2ZpbGUuaHRtbCInIC0tJmd0OzxiciAvPgogICAgICA8c3BhbiBjbGFzcz0iaW5kZW50Ij4KICAgICAgICBpbiBmb288YnIgLz4KICAgICAgPC9zcGFuPgogICAgICAmbHQ7IS0tI2VsaWYgZXhwcj0nIiRET0NVTUVOVF9VUkkiID0gIi9iYXIvZmlsZS5odG1sIicgLS0mZ3Q7PGJyIC8+CiAgICAgIDxzcGFuIGNsYXNzPSJpbmRlbnQiPgogICAgICAgIGluIGJhcjxiciAvPgogICAgICA8L3NwYW4+CiAgICAgICZsdDshLS0jZWxzZSAtLSZndDs8YnIgLz4KICAgICAgPHNwYW4gY2xhc3M9ImluZGVudCI+CiAgICAgICAgaW4gbmVpdGhlcjxiciAvPgogICAgICA8L3NwYW4+CiAgICAgICZsdDshLS0jZW5kaWYgLS0mZ3Q7CiAgICA8L2NvZGU+PC9wPjwvZGl2Pgo8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJmbG93Y3RybCIgaWQ9ImZsb3djdHJsIj5GbG93IENvbnRyb2wgRWxlbWVudHM8L2E+PC9oMj4KICAgIAoKICAgIDxwPlRoZSBiYXNpYyBmbG93IGNvbnRyb2wgZWxlbWVudHMgYXJlOjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgJmx0OyEtLSNpZiBleHByPSI8dmFyPnRlc3RfY29uZGl0aW9uPC92YXI+IiAtLSZndDs8YnIgLz4KICAgICAgJmx0OyEtLSNlbGlmIGV4cHI9Ijx2YXI+dGVzdF9jb25kaXRpb248L3Zhcj4iIC0tJmd0OzxiciAvPgogICAgICAmbHQ7IS0tI2Vsc2UgLS0mZ3Q7PGJyIC8+CiAgICAgICZsdDshLS0jZW5kaWYgLS0mZ3Q7CiAgICA8L2NvZGU+PC9wPjwvZGl2PgoKICAgIDxwPlRoZSA8Y29kZT5pZjwvY29kZT4gZWxlbWVudCB3b3JrcyBsaWtlIGFuIGlmIHN0YXRlbWVudCBpbiBhCiAgICBwcm9ncmFtbWluZyBsYW5ndWFnZS4gVGhlIHRlc3QgY29uZGl0aW9uIGlzIGV2YWx1YXRlZCBhbmQgaWYKICAgIHRoZSByZXN1bHQgaXMgdHJ1ZSwgdGhlbiB0aGUgdGV4dCB1bnRpbCB0aGUgbmV4dCA8Y29kZT5lbGlmPC9jb2RlPiwKICAgIDxjb2RlPmVsc2U8L2NvZGU+IG9yIDxjb2RlPmVuZGlmPC9jb2RlPiBlbGVtZW50IGlzIGluY2x1ZGVkIGluIHRoZQogICAgb3V0cHV0IHN0cmVhbS48L3A+CgogICAgPHA+VGhlIDxjb2RlPmVsaWY8L2NvZGU+IG9yIDxjb2RlPmVsc2U8L2NvZGU+IHN0YXRlbWVudHMgYXJlIGJlIHVzZWQKICAgIHRvIHB1dCB0ZXh0IGludG8gdGhlIG91dHB1dCBzdHJlYW0gaWYgdGhlIG9yaWdpbmFsCiAgICA8dmFyPnRlc3RfY29uZGl0aW9uPC92YXI+IHdhcyBmYWxzZS4gVGhlc2UgZWxlbWVudHMgYXJlIG9wdGlvbmFsLjwvcD4KCiAgICA8cD5UaGUgPGNvZGU+ZW5kaWY8L2NvZGU+IGVsZW1lbnQgZW5kcyB0aGUgPGNvZGU+aWY8L2NvZGU+IGVsZW1lbnQKICAgIGFuZCBpcyByZXF1aXJlZC48L3A+CgogICAgPHA+PHZhcj50ZXN0X2NvbmRpdGlvbjwvdmFyPiBpcyBvbmUgb2YgdGhlIGZvbGxvd2luZzo8L3A+CgogICAgPGRsPgogICAgICA8ZHQ+PGNvZGU+PHZhcj5zdHJpbmc8L3Zhcj48L2NvZGU+PC9kdD4KICAgICAgPGRkPnRydWUgaWYgPHZhcj5zdHJpbmc8L3Zhcj4gaXMgbm90IGVtcHR5PC9kZD4KCiAgICAgIDxkdD48Y29kZT48dmFyPnN0cmluZzE8L3Zhcj4gPSA8dmFyPnN0cmluZzI8L3Zhcj48YnIgLz4KICAgICAgPHZhcj5zdHJpbmcxPC92YXI+ID09IDx2YXI+c3RyaW5nMjwvdmFyPjxiciAvPgogICAgICA8dmFyPnN0cmluZzE8L3Zhcj4gIT0gPHZhcj5zdHJpbmcyPC92YXI+PC9jb2RlPjwvZHQ+CiAgICAgIAogICAgICA8ZGQ+PHA+Q29tcGFyZSA8dmFyPnN0cmluZzE8L3Zhcj4gd2l0aCA8dmFyPnN0cmluZzI8L3Zhcj4uIElmCiAgICAgIDx2YXI+c3RyaW5nMjwvdmFyPiBoYXMgdGhlIGZvcm0gPGNvZGU+Lzx2YXI+c3RyaW5nMjwvdmFyPi88L2NvZGU+CiAgICAgIHRoZW4gaXQgaXMgdHJlYXRlZCBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4gUmVndWxhciBleHByZXNzaW9ucyBhcmUKICAgICAgaW1wbGVtZW50ZWQgYnkgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cucGNyZS5vcmciPlBDUkU8L2E+IGVuZ2luZSBhbmQKICAgICAgaGF2ZSB0aGUgc2FtZSBzeW50YXggYXMgdGhvc2UgaW4gPGEgaHJlZj0iaHR0cDovL3d3dy5wZXJsLmNvbSI+cGVybAogICAgICA1PC9hPi4gTm90ZSB0aGF0IDxjb2RlPj09PC9jb2RlPiBpcyBqdXN0IGFuIGFsaWFzIGZvciA8Y29kZT49PC9jb2RlPgogICAgICBhbmQgYmVoYXZlcyBleGFjdGx5IHRoZSBzYW1lIHdheS48L3A+CgogICAgICA8cD5JZiB5b3UgYXJlIG1hdGNoaW5nIHBvc2l0aXZlICg8Y29kZT49PC9jb2RlPiBvciA8Y29kZT49PTwvY29kZT4pLCB5b3UKICAgICAgY2FuIGNhcHR1cmUgZ3JvdXBlZCBwYXJ0cyBvZiB0aGUgcmVndWxhciBleHByZXNzaW9uLiBUaGUgY2FwdHVyZWQgcGFydHMKICAgICAgYXJlIHN0b3JlZCBpbiB0aGUgc3BlY2lhbCB2YXJpYWJsZXMgPGNvZGU+JDE8L2NvZGU+IC4uCiAgICAgIDxjb2RlPiQ5PC9jb2RlPi48L3A+CgogICAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48aDM+RXhhbXBsZTwvaDM+PHA+PGNvZGU+CiAgICAgICAgJmx0OyEtLSNpZiBleHByPSIkUVVFUllfU1RSSU5HID0gL15zaWQ9KFthLXpBLVowLTldKykvIiAtLSZndDs8YnIgLz4KICAgICAgICA8c3BhbiBjbGFzcz0iaW5kZW50Ij4KICAgICAgICAgICZsdDshLS0jc2V0IHZhcj0ic2Vzc2lvbiIgdmFsdWU9IiQxIiAtLSZndDs8YnIgLz4KICAgICAgICA8L3NwYW4+CiAgICAgICAgJmx0OyEtLSNlbmRpZiAtLSZndDsKICAgICAgPC9jb2RlPjwvcD48L2Rpdj4KICAgICAgPC9kZD4KCiAgICAgIDxkdD48Y29kZT48dmFyPnN0cmluZzE8L3Zhcj4gJmx0OyA8dmFyPnN0cmluZzI8L3Zhcj48YnIgLz4KICAgICAgIDx2YXI+c3RyaW5nMTwvdmFyPiAmbHQ7PSA8dmFyPnN0cmluZzI8L3Zhcj48YnIgLz4KICAgICAgIDx2YXI+c3RyaW5nMTwvdmFyPiAmZ3Q7IDx2YXI+c3RyaW5nMjwvdmFyPjxiciAvPgogICAgICAgPHZhcj5zdHJpbmcxPC92YXI+ICZndDs9IDx2YXI+c3RyaW5nMjwvdmFyPjwvY29kZT48L2R0PgoKICAgICAgPGRkPkNvbXBhcmUgPHZhcj5zdHJpbmcxPC92YXI+IHdpdGggPHZhcj5zdHJpbmcyPC92YXI+LiBOb3RlLCB0aGF0CiAgICAgIHN0cmluZ3MgYXJlIGNvbXBhcmVkIDxlbT5saXRlcmFsbHk8L2VtPiAodXNpbmcKICAgICAgPGNvZGU+c3RyY21wKDMpPC9jb2RlPikuIFRoZXJlZm9yZSB0aGUgc3RyaW5nICIxMDAiIGlzIGxlc3MgdGhhbgogICAgICAiMjAiLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+KCA8dmFyPnRlc3RfY29uZGl0aW9uPC92YXI+ICk8L2NvZGU+PC9kdD4KICAgICAgPGRkPnRydWUgaWYgPHZhcj50ZXN0X2NvbmRpdGlvbjwvdmFyPiBpcyB0cnVlPC9kZD4KCiAgICAgIDxkdD48Y29kZT4hIDx2YXI+dGVzdF9jb25kaXRpb248L3Zhcj48L2NvZGU+PC9kdD4KICAgICAgPGRkPnRydWUgaWYgPHZhcj50ZXN0X2NvbmRpdGlvbjwvdmFyPiBpcyBmYWxzZTwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+PHZhcj50ZXN0X2NvbmRpdGlvbjE8L3Zhcj4gJmFtcDsmYW1wOwogICAgICAgIDx2YXI+dGVzdF9jb25kaXRpb24yPC92YXI+PC9jb2RlPjwvZHQ+CiAgICAgIDxkZD50cnVlIGlmIGJvdGggPHZhcj50ZXN0X2NvbmRpdGlvbjE8L3Zhcj4gYW5kCiAgICAgIDx2YXI+dGVzdF9jb25kaXRpb24yPC92YXI+IGFyZSB0cnVlPC9kZD4KCiAgICAgIDxkdD48Y29kZT48dmFyPnRlc3RfY29uZGl0aW9uMTwvdmFyPiB8fAogICAgICAgIDx2YXI+dGVzdF9jb25kaXRpb24yPC92YXI+PC9jb2RlPjwvZHQ+CiAgICAgIDxkZD50cnVlIGlmIGVpdGhlciA8dmFyPnRlc3RfY29uZGl0aW9uMTwvdmFyPiBvcgogICAgICA8dmFyPnRlc3RfY29uZGl0aW9uMjwvdmFyPiBpcyB0cnVlPC9kZD4KICAgIDwvZGw+CgogICAgPHA+Ijxjb2RlPj08L2NvZGU+IiBhbmQgIjxjb2RlPiE9PC9jb2RlPiIgYmluZCBtb3JlIHRpZ2h0bHkgdGhhbgogICAgIjxjb2RlPiZhbXA7JmFtcDs8L2NvZGU+IiBhbmQgIjxjb2RlPnx8PC9jb2RlPiIuICI8Y29kZT4hPC9jb2RlPiIgYmluZHMKICAgIG1vc3QgdGlnaHRseS4gVGh1cywgdGhlIGZvbGxvd2luZyBhcmUgZXF1aXZhbGVudDo8L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgICZsdDshLS0jaWYgZXhwcj0iJGEgPSB0ZXN0MSAmYW1wOyZhbXA7ICRiID0gdGVzdDIiIC0tJmd0OzxiciAvPgogICAgICAmbHQ7IS0tI2lmIGV4cHI9IigkYSA9IHRlc3QxKSAmYW1wOyZhbXA7ICgkYiA9IHRlc3QyKSIgLS0mZ3Q7CiAgICA8L2NvZGU+PC9wPjwvZGl2PgoKICAgIDxwPlRoZSBib29sZWFuIG9wZXJhdG9ycyA8Y29kZT4mYW1wOyZhbXA7PC9jb2RlPiBhbmQgPGNvZGU+fHw8L2NvZGU+CiAgICBzaGFyZSB0aGUgc2FtZSBwcmlvcml0eS4gU28gaWYgeW91IHdhbnQgdG8gYmluZCBzdWNoIGFuIG9wZXJhdG9yIG1vcmUKICAgIHRpZ2h0bHksIHlvdSBzaG91bGQgdXNlIHBhcmVudGhlc2VzLjwvcD4KCiAgICA8cD5Bbnl0aGluZyB0aGF0J3Mgbm90IHJlY29nbml6ZWQgYXMgYSB2YXJpYWJsZSBvciBhbiBvcGVyYXRvcgogICAgaXMgdHJlYXRlZCBhcyBhIHN0cmluZy4gU3RyaW5ncyBjYW4gYWxzbyBiZSBxdW90ZWQ6CiAgICA8Y29kZT4nc3RyaW5nJzwvY29kZT4uIFVucXVvdGVkIHN0cmluZ3MgY2FuJ3QgY29udGFpbiB3aGl0ZXNwYWNlCiAgICAoYmxhbmtzIGFuZCB0YWJzKSBiZWNhdXNlIGl0IGlzIHVzZWQgdG8gc2VwYXJhdGUgdG9rZW5zIHN1Y2ggYXMKICAgIHZhcmlhYmxlcy4gSWYgbXVsdGlwbGUgc3RyaW5ncyBhcmUgZm91bmQgaW4gYSByb3csIHRoZXkgYXJlCiAgICBjb25jYXRlbmF0ZWQgdXNpbmcgYmxhbmtzLiBTbyw8L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+PHZhcj5zdHJpbmcxPC92YXI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PHZhcj5zdHJpbmcyPC92YXI+PC9jb2RlPiByZXN1bHRzIGluIDxjb2RlPjx2YXI+c3RyaW5nMTwvdmFyPiZuYnNwOzx2YXI+c3RyaW5nMjwvdmFyPjwvY29kZT48YnIgLz4KICAgICAgPGJyIC8+CiAgICAgIGFuZDxiciAvPgogICAgICA8YnIgLz4KICAgICAgPGNvZGU+Jzx2YXI+c3RyaW5nMTwvdmFyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzx2YXI+c3RyaW5nMjwvdmFyPic8L2NvZGU+IHJlc3VsdHMgaW4gPGNvZGU+PHZhcj5zdHJpbmcxPC92YXI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PHZhcj5zdHJpbmcyPC92YXI+PC9jb2RlPi48L3A+PC9kaXY+CgogICAgPGRpdiBjbGFzcz0ibm90ZSI+PGgzPk9wdGltaXphdGlvbiBvZiBCb29sZWFuIEV4cHJlc3Npb25zPC9oMz4KICAgICAgPHA+SWYgdGhlIGV4cHJlc3Npb25zIGJlY29tZSBtb3JlIGNvbXBsZXggYW5kIHNsb3cgZG93biBwcm9jZXNzaW5nCiAgICAgIHNpZ25pZmljYW50bHksIHlvdSBjYW4gdHJ5IHRvIG9wdGltaXplIHRoZW0gYWNjb3JkaW5nIHRvIHRoZQogICAgICBldmFsdWF0aW9uIHJ1bGVzOjwvcD4KICAgICAgPHVsPgogICAgICA8bGk+RXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQ8L2xpPgogICAgICA8bGk+QmluYXJ5IGJvb2xlYW4gb3BlcmF0b3JzICg8Y29kZT4mYW1wOyZhbXA7PC9jb2RlPiBhbmQgPGNvZGU+fHw8L2NvZGU+KQogICAgICAgICAgYXJlIHNob3J0IGNpcmN1aXRlZCB3aGVyZXZlciBwb3NzaWJsZS4gSW4gY29uY2x1c2lvbiB3aXRoIHRoZSBydWxlCiAgICAgICAgICBhYm92ZSB0aGF0IG1lYW5zLCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2luY2x1ZGUuaHRtbCI+bW9kX2luY2x1ZGU8L2E+PC9jb2RlPiBldmFsdWF0ZXMgYXQgZmlyc3QKICAgICAgICAgIHRoZSBsZWZ0IGV4cHJlc3Npb24uIElmIHRoZSBsZWZ0IHJlc3VsdCBpcyBzdWZmaWNpZW50IHRvIGRldGVybWluZQogICAgICAgICAgdGhlIGVuZCByZXN1bHQsIHByb2Nlc3Npbmcgc3RvcHMgaGVyZS4gT3RoZXJ3aXNlIGl0IGV2YWx1YXRlcyB0aGUKICAgICAgICAgIHJpZ2h0IHNpZGUgYW5kIGNvbXB1dGVzIHRoZSBlbmQgcmVzdWx0IGZyb20gYm90aCBsZWZ0IGFuZCByaWdodAogICAgICAgICAgcmVzdWx0cy48L2xpPgogICAgICA8bGk+U2hvcnQgY2lyY3VpdCBldmFsdWF0aW9uIGlzIHR1cm5lZCBvZmYgYXMgbG9uZyBhcyB0aGVyZSBhcmUgcmVndWxhcgogICAgICAgICAgZXhwcmVzc2lvbnMgdG8gZGVhbCB3aXRoLiBUaGVzZSBtdXN0IGJlIGV2YWx1YXRlZCB0byBmaWxsIGluIHRoZQogICAgICAgICAgYmFja3JlZmVyZW5jZSB2YXJpYWJsZXMgKDxjb2RlPiQxPC9jb2RlPiAuLiA8Y29kZT4kOTwvY29kZT4pLjwvbGk+CiAgICAgIDwvdWw+CiAgICAgIDxwPklmIHlvdSB3YW50IHRvIGxvb2sgaG93IGEgcGFydGljdWxhciBleHByZXNzaW9uIGlzIGhhbmRsZWQsIHlvdSBjYW4KICAgICAgcmVjb21waWxlIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfaW5jbHVkZS5odG1sIj5tb2RfaW5jbHVkZTwvYT48L2NvZGU+IHVzaW5nIHRoZQogICAgICA8Y29kZT4tRERFQlVHX0lOQ0xVREU8L2NvZGU+IGNvbXBpbGVyIG9wdGlvbi4gVGhpcyBpbnNlcnRzIGZvciBldmVyeQogICAgICBwYXJzZWQgZXhwcmVzc2lvbiB0b2tlbml6ZXIgaW5mb3JtYXRpb24sIHRoZSBwYXJzZSB0cmVlIGFuZCBob3cgaXQgaXMKICAgICAgZXZhbHVhdGVkIGludG8gdGhlIG91dHB1dCBzZW50IHRvIHRoZSBjbGllbnQuPC9wPgogICAgPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJTU0lFbmRUYWciIGlkPSJTU0lFbmRUYWciPlNTSUVuZFRhZzwvYT4gPGEgbmFtZT0ic3NpZW5kdGFnIiBpZD0ic3NpZW5kdGFnIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5TdHJpbmcgdGhhdCBlbmRzIGFuIGluY2x1ZGUgZWxlbWVudDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5TU0lFbmRUYWcgPHZhcj50YWc8L3Zhcj48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+U1NJRW5kVGFnICItLSZndDsiPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWcsIHZpcnR1YWwgaG9zdDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5CYXNlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9pbmNsdWRlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29tcGF0aWJpbGl0eSI+Q29tcGF0aWJpbGl0eTo8L2E+PC90aD48dGQ+QXZhaWxhYmxlIGluIHZlcnNpb24gMi4wLjMwIGFuZCBsYXRlci48L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5UaGlzIGRpcmVjdGl2ZSBjaGFuZ2VzIHRoZSBzdHJpbmcgdGhhdCA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2luY2x1ZGUuaHRtbCI+bW9kX2luY2x1ZGU8L2E+PC9jb2RlPgogICAgbG9va3MgZm9yIHRvIG1hcmsgdGhlIGVuZCBvZiBhbiBpbmNsdWRlIGVsZW1lbnQuPC9wPgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxoMz5FeGFtcGxlPC9oMz48cD48Y29kZT4KICAgICAgU1NJRW5kVGFnICIlJmd0OyIKICAgIDwvY29kZT48L3A+PC9kaXY+CgoKPGgzPlNlZSBhbHNvPC9oMz4KPHVsPgo8bGk+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI3NzaXN0YXJ0dGFnIj5TU0lTdGFydFRhZzwvYT48L2NvZGU+PC9saT4KPC91bD4KPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IlNTSUVycm9yTXNnIiBpZD0iU1NJRXJyb3JNc2ciPlNTSUVycm9yTXNnPC9hPiA8YSBuYW1lPSJzc2llcnJvcm1zZyIgaWQ9InNzaWVycm9ybXNnIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5FcnJvciBtZXNzYWdlIGRpc3BsYXllZCB3aGVuIHRoZXJlIGlzIGFuIFNTSQplcnJvcjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5TU0lFcnJvck1zZyA8dmFyPm1lc3NhZ2U8L3Zhcj48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+U1NJRXJyb3JNc2cgIlthbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nIHRoaXMKZGlyZWN0aXZlXSI8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZywgdmlydHVhbCBob3N0LCBkaXJlY3RvcnksIC5odGFjY2VzczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI092ZXJyaWRlIj5PdmVycmlkZTo8L2E+PC90aD48dGQ+QWxsPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkJhc2U8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2luY2x1ZGU8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb21wYXRpYmlsaXR5Ij5Db21wYXRpYmlsaXR5OjwvYT48L3RoPjx0ZD5BdmFpbGFibGUgaW4gdmVyc2lvbiAyLjAuMzAgYW5kIGxhdGVyLjwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPlRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5TU0lFcnJvck1zZzwvY29kZT4gZGlyZWN0aXZlIGNoYW5nZXMgdGhlIGVycm9yCiAgICBtZXNzYWdlIGRpc3BsYXllZCB3aGVuIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfaW5jbHVkZS5odG1sIj5tb2RfaW5jbHVkZTwvYT48L2NvZGU+IGVuY291bnRlcnMgYW4KICAgIGVycm9yLiBGb3IgcHJvZHVjdGlvbiBzZXJ2ZXJzIHlvdSBtYXkgY29uc2lkZXIgY2hhbmdpbmcgdGhlIGRlZmF1bHQKICAgIGVycm9yIG1lc3NhZ2UgdG8gPGNvZGU+IiZsdDshLS0gRXJyb3IgLS0mZ3Q7IjwvY29kZT4gc28gdGhhdAogICAgdGhlIG1lc3NhZ2UgaXMgbm90IHByZXNlbnRlZCB0byB0aGUgdXNlci48L3A+CgogICAgPHA+VGhpcyBkaXJlY3RpdmUgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgPGNvZGU+Jmx0OyEtLSNjb25maWcKICAgIGVycm1zZz08dmFyPm1lc3NhZ2U8L3Zhcj4gLS0mZ3Q7PC9jb2RlPiBlbGVtZW50LjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48aDM+RXhhbXBsZTwvaDM+PHA+PGNvZGU+CiAgICAgIFNTSUVycm9yTXNnICImbHQ7IS0tIEVycm9yIC0tJmd0OyIKICAgIDwvY29kZT48L3A+PC9kaXY+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iU1NJU3RhcnRUYWciIGlkPSJTU0lTdGFydFRhZyI+U1NJU3RhcnRUYWc8L2E+IDxhIG5hbWU9InNzaXN0YXJ0dGFnIiBpZD0ic3Npc3RhcnR0YWciPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPlN0cmluZyB0aGF0IHN0YXJ0cyBhbiBpbmNsdWRlIGVsZW1lbnQ8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+U1NJU3RhcnRUYWcgPHZhcj50YWc8L3Zhcj48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+U1NJU3RhcnRUYWcgIiZsdDshLS0jIjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnLCB2aXJ0dWFsIGhvc3Q8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+QmFzZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfaW5jbHVkZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbXBhdGliaWxpdHkiPkNvbXBhdGliaWxpdHk6PC9hPjwvdGg+PHRkPkF2YWlsYWJsZSBpbiB2ZXJzaW9uIDIuMC4zMCBhbmQgbGF0ZXIuPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VGhpcyBkaXJlY3RpdmUgY2hhbmdlcyB0aGUgc3RyaW5nIHRoYXQgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9pbmNsdWRlLmh0bWwiPm1vZF9pbmNsdWRlPC9hPjwvY29kZT4KICAgIGxvb2tzIGZvciB0byBtYXJrIGFuIGluY2x1ZGUgZWxlbWVudCB0byBwcm9jZXNzLjwvcD4KCiAgICA8cD5Zb3UgbWF5IHdhbnQgdG8gdXNlIHRoaXMgb3B0aW9uIGlmIHlvdSBoYXZlIDIgc2VydmVycyBwYXJzaW5nIHRoZQogICAgb3V0cHV0IG9mIGEgZmlsZSBlYWNoIHByb2Nlc3NpbmcgZGlmZmVyZW50IGNvbW1hbmRzIChwb3NzaWJseSBhdAogICAgZGlmZmVyZW50IHRpbWVzKS48L3A+IAoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxoMz5FeGFtcGxlPC9oMz48cD48Y29kZT4KICAgICAgU1NJU3RhcnRUYWcgIiZsdDslIjxiciAvPgogICAgICBTU0lFbmRUYWcgICAiJSZndDsiCiAgICA8L2NvZGU+PC9wPjwvZGl2PgoKICAgIDxwPlRoZSBleGFtcGxlIGdpdmVuIGFib3ZlLCB3aGljaCBhbHNvIHNwZWNpZmllcyBhIG1hdGNoaW5nCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjc3NpZW5kdGFnIj5TU0lFbmRUYWc8L2E+PC9jb2RlPiwgd2lsbCAKICAgIGFsbG93IHlvdSB0byB1c2UgU1NJIGRpcmVjdGl2ZXMgYXMgc2hvd24gaW4gdGhlIGV4YW1wbGUgCiAgICBiZWxvdzo8L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PGgzPlNTSSBkaXJlY3RpdmVzIHdpdGggYWx0ZXJuYXRlIHN0YXJ0IGFuZCBlbmQgdGFnczwvaDM+PHA+PGNvZGU+CiAgICAgICZsdDslcHJpbnRlbnYgJSZndDsKICAgIDwvY29kZT48L3A+PC9kaXY+Cgo8aDM+U2VlIGFsc288L2gzPgo8dWw+CjxsaT48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjc3NpZW5kdGFnIj5TU0lFbmRUYWc8L2E+PC9jb2RlPjwvbGk+CjwvdWw+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJTU0lUaW1lRm9ybWF0IiBpZD0iU1NJVGltZUZvcm1hdCI+U1NJVGltZUZvcm1hdDwvYT4gPGEgbmFtZT0ic3NpdGltZWZvcm1hdCIgaWQ9InNzaXRpbWVmb3JtYXQiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkNvbmZpZ3VyZXMgdGhlIGZvcm1hdCBpbiB3aGljaCBkYXRlIHN0cmluZ3MgYXJlCmRpc3BsYXllZDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5TU0lUaW1lRm9ybWF0IDx2YXI+Zm9ybWF0c3RyaW5nPC92YXI+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPlNTSVRpbWVGb3JtYXQgIiVBLCAlZC0lYi0lWSAlSDolTTolUyAlWiI8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZywgdmlydHVhbCBob3N0LCBkaXJlY3RvcnksIC5odGFjY2VzczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI092ZXJyaWRlIj5PdmVycmlkZTo8L2E+PC90aD48dGQ+QWxsPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkJhc2U8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2luY2x1ZGU8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb21wYXRpYmlsaXR5Ij5Db21wYXRpYmlsaXR5OjwvYT48L3RoPjx0ZD5BdmFpbGFibGUgaW4gdmVyc2lvbiAyLjAuMzAgYW5kIGxhdGVyLjwvdGQ+PC90cj4KPC90YWJsZT4KPHA+VGhpcyBkaXJlY3RpdmUgY2hhbmdlcyB0aGUgZm9ybWF0IGluIHdoaWNoIGRhdGUgc3RyaW5ncyBhcmUgZGlzcGxheWVkIAogICAgd2hlbiBlY2hvaW5nIDxjb2RlPkRBVEU8L2NvZGU+IGVudmlyb25tZW50IHZhcmlhYmxlcy4gVGhlCiAgICA8dmFyPmZvcm1hdHN0cmluZzwvdmFyPiBpcyBhcyBpbiA8Y29kZT5zdHJmdGltZSgzKTwvY29kZT4gZnJvbSB0aGUKICAgIEMgc3RhbmRhcmQgbGlicmFyeS48L3A+CgogICAgPHA+VGhpcyBkaXJlY3RpdmUgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgPGNvZGU+Jmx0OyEtLSNjb25maWcKICAgIHRpbWVmbXQ9PHZhcj5mb3JtYXRzdHJpbmc8L3Zhcj4gLS0mZ3Q7PC9jb2RlPiBlbGVtZW50LjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48aDM+RXhhbXBsZTwvaDM+PHA+PGNvZGU+CiAgICAgIFNTSVRpbWVGb3JtYXQgIiVSLCAlQiAlZCwgJVkiCiAgICA8L2NvZGU+PC9wPjwvZGl2PgoKICAgIDxwPlRoZSBhYm92ZSBkaXJlY3RpdmUgd291bGQgY2F1c2UgdGltZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZQogICAgZm9ybWF0ICIyMjoyNiwgSnVuZSAxNCwgMjAwMiIuPC9wPgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IlNTSVVuZGVmaW5lZEVjaG8iIGlkPSJTU0lVbmRlZmluZWRFY2hvIj5TU0lVbmRlZmluZWRFY2hvPC9hPiA8YSBuYW1lPSJzc2l1bmRlZmluZWRlY2hvIiBpZD0ic3NpdW5kZWZpbmVkZWNobyI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+U3RyaW5nIGRpc3BsYXllZCB3aGVuIGFuIHVuc2V0IHZhcmlhYmxlIGlzIGVjaG9lZDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5TU0lVbmRlZmluZWRFY2hvIDx2YXI+c3RyaW5nPC92YXI+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPlNTSVVuZGVmaW5lZEVjaG8gIihub25lKSI8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZywgdmlydHVhbCBob3N0LCBkaXJlY3RvcnksIC5odGFjY2VzczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI092ZXJyaWRlIj5PdmVycmlkZTo8L2E+PC90aD48dGQ+QWxsPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkJhc2U8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2luY2x1ZGU8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb21wYXRpYmlsaXR5Ij5Db21wYXRpYmlsaXR5OjwvYT48L3RoPjx0ZD5BdmFpbGFibGUgaW4gdmVyc2lvbiAyLjAuMzQgYW5kIGxhdGVyLjwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPlRoaXMgZGlyZWN0aXZlIGNoYW5nZXMgdGhlIHN0cmluZyB0aGF0IDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfaW5jbHVkZS5odG1sIj5tb2RfaW5jbHVkZTwvYT48L2NvZGU+CiAgICBkaXNwbGF5cyB3aGVuIGEgdmFyaWFibGUgaXMgbm90IHNldCBhbmQgImVjaG9lZCIuPC9wPgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxoMz5FeGFtcGxlPC9oMz48cD48Y29kZT4KICAgICAgU1NJVW5kZWZpbmVkRWNobyAiJmx0OyEtLSB1bmRlZiAtLSZndDsiCiAgICA8L2NvZGU+PC9wPjwvZGl2PgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IlhCaXRIYWNrIiBpZD0iWEJpdEhhY2siPlhCaXRIYWNrPC9hPiA8YSBuYW1lPSJ4Yml0aGFjayIgaWQ9InhiaXRoYWNrIj5EaXJlY3RpdmU8L2E+PC9oMj4KPHRhYmxlIGNsYXNzPSJkaXJlY3RpdmUiPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVzY3JpcHRpb24iPkRlc2NyaXB0aW9uOjwvYT48L3RoPjx0ZD5QYXJzZSBTU0kgZGlyZWN0aXZlcyBpbiBmaWxlcyB3aXRoIHRoZSBleGVjdXRlIGJpdApzZXQ8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+WEJpdEhhY2sgb258b2ZmfGZ1bGw8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjRGVmYXVsdCI+RGVmYXVsdDo8L2E+PC90aD48dGQ+PGNvZGU+WEJpdEhhY2sgb2ZmPC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWcsIHZpcnR1YWwgaG9zdCwgZGlyZWN0b3J5LCAuaHRhY2Nlc3M8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNPdmVycmlkZSI+T3ZlcnJpZGU6PC9hPjwvdGg+PHRkPk9wdGlvbnM8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+QmFzZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfaW5jbHVkZTwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPlRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5YQml0SGFjazwvY29kZT4gZGlyZWN0aXZlIGNvbnRyb2xzIHRoZSBwYXJzaW5nCiAgICBvZiBvcmRpbmFyeSBodG1sIGRvY3VtZW50cy4gVGhpcyBkaXJlY3RpdmUgb25seSBhZmZlY3RzIGZpbGVzIGFzc29jaWF0ZWQKICAgIHdpdGggdGhlIDxhIGNsYXNzPSJnbG9zc2FyeWxpbmsiIGhyZWY9Ii4uL2dsb3NzYXJ5Lmh0bWwjbWltZS10eXBlIiB0aXRsZT0ic2VlIGdsb3NzYXJ5Ij5NSU1FLXR5cGU8L2E+IDxjb2RlPnRleHQvaHRtbDwvY29kZT4uIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPlhCaXRIYWNrPC9jb2RlPiBjYW4gdGFrZSBvbiB0aGUgZm9sbG93aW5nIHZhbHVlczo8L3A+CgogICAgPGRsPgogICAgICA8ZHQ+PGNvZGU+b2ZmPC9jb2RlPjwvZHQ+CiAgICAgIDxkZD5ObyBzcGVjaWFsIHRyZWF0bWVudCBvZiBleGVjdXRhYmxlIGZpbGVzLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+b248L2NvZGU+PC9kdD4KICAgICAgPGRkPkFueSA8Y29kZT50ZXh0L2h0bWw8L2NvZGU+IGZpbGUgdGhhdCBoYXMgdGhlIHVzZXItZXhlY3V0ZSBiaXQKICAgICAgc2V0IHdpbGwgYmUgdHJlYXRlZCBhcyBhIHNlcnZlci1wYXJzZWQgaHRtbCBkb2N1bWVudC48L2RkPgoKICAgICAgPGR0Pjxjb2RlPmZ1bGw8L2NvZGU+PC9kdD4KICAgICAgPGRkPkFzIGZvciA8Y29kZT5vbjwvY29kZT4gYnV0IGFsc28gdGVzdCB0aGUgZ3JvdXAtZXhlY3V0ZSBiaXQuCiAgICAgIElmIGl0IGlzIHNldCwgdGhlbiBzZXQgdGhlIDxjb2RlPkxhc3QtbW9kaWZpZWQ8L2NvZGU+IGRhdGUgb2YgdGhlCiAgICAgIHJldHVybmVkIGZpbGUgdG8gYmUgdGhlIGxhc3QgbW9kaWZpZWQgdGltZSBvZiB0aGUgZmlsZS4gSWYKICAgICAgaXQgaXMgbm90IHNldCwgdGhlbiBubyBsYXN0LW1vZGlmaWVkIGRhdGUgaXMgc2VudC4gU2V0dGluZwogICAgICB0aGlzIGJpdCBhbGxvd3MgY2xpZW50cyBhbmQgcHJveGllcyB0byBjYWNoZSB0aGUgcmVzdWx0IG9mCiAgICAgIHRoZSByZXF1ZXN0LiAKCiAgICAgIDxkaXYgY2xhc3M9Im5vdGUiPjxoMz5Ob3RlPC9oMz4KICAgICAgPHA+WW91IHdvdWxkIG5vdCB3YW50IHRvIHVzZSB0aGUgZnVsbCBvcHRpb24sIHVubGVzcyB5b3UgYXNzdXJlIHRoZQogICAgICBncm91cC1leGVjdXRlIGJpdCBpcyB1bnNldCBmb3IgZXZlcnkgU1NJIHNjcmlwdCB3aGljaCBtaWdodCA8Y29kZT4jaW5jbHVkZTwvY29kZT4gYSBDR0kgb3Igb3RoZXJ3aXNlIHByb2R1Y2VzIGRpZmZlcmVudCBvdXRwdXQgb24KICAgICAgZWFjaCBoaXQgKG9yIGNvdWxkIHBvdGVudGlhbGx5IGNoYW5nZSBvbiBzdWJzZXF1ZW50IHJlcXVlc3RzKS48L3A+CiAgICAgIDwvZGl2PgogICAgICA8L2RkPgogICAgPC9kbD4KCiAgICAKPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJib3R0b21sYW5nIj4KPHA+PHNwYW4+QXZhaWxhYmxlIExhbmd1YWdlczogPC9zcGFuPjxhIGhyZWY9Ii4uL2VuL21vZC9tb2RfaW5jbHVkZS5odG1sIiB0aXRsZT0iRW5nbGlzaCI+Jm5ic3A7ZW4mbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4vamEvbW9kL21vZF9pbmNsdWRlLmh0bWwiIGhyZWZsYW5nPSJqYSIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJKYXBhbmVzZSI+Jm5ic3A7amEmbmJzcDs8L2E+PC9wPgo8L2Rpdj48ZGl2IGlkPSJmb290ZXIiPgo8cCBjbGFzcz0iYXBhY2hlIj5Db3B5cmlnaHQgMTk5NS0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiBvciBpdHMgbGljZW5zb3JzLCBhcyBhcHBsaWNhYmxlLjxiciAvPkxpY2Vuc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAiPkFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMDwvYT4uPC9wPgo8cCBjbGFzcz0ibWVudSI+PGEgaHJlZj0iLi4vbW9kLyI+TW9kdWxlczwvYT4gfCA8YSBocmVmPSIuLi9tb2QvZGlyZWN0aXZlcy5odG1sIj5EaXJlY3RpdmVzPC9hPiB8IDxhIGhyZWY9Ii4uL2ZhcS8iPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FyeTwvYT4gfCA8YSBocmVmPSIuLi9zaXRlbWFwLmh0bWwiPlNpdGVtYXA8L2E+PC9wPjwvZGl2Pgo8L2JvZHk+PC9odG1sPg==