PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48aGVhZD4KPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KPCEtLQogICAgICAgIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYCiAgICAgICAgICAgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBmcm9tIHhtbCBzb3VyY2U6IERPIE5PVCBFRElUCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgLS0+Cjx0aXRsZT5BcGFjaGUncyBIYW5kbGVyIFVzZSAtIEFwYWNoZSBIVFRQIFNlcnZlciBWZXJzaW9uIDIuNTwvdGl0bGU+CjxsaW5rIGhyZWY9Ii4vc3R5bGUvY3NzL21hbnVhbC5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIgdHlwZT0idGV4dC9jc3MiIHRpdGxlPSJNYWluIHN0eWxlc2hlZXQiIC8+CjxsaW5rIGhyZWY9Ii4vc3R5bGUvY3NzL21hbnVhbC1sb29zZS0xMDBwYy5jc3MiIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTm8gU2lkZWJhciAtIERlZmF1bHQgZm9udCBzaXplIiAvPgo8bGluayBocmVmPSIuL3N0eWxlL2Nzcy9tYW51YWwtcHJpbnQuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJwcmludCIgdHlwZT0idGV4dC9jc3MiIC8+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi9zdHlsZS9jc3MvcHJldHRpZnkuY3NzIiAvPgo8c2NyaXB0IHNyYz0iLi9zdHlsZS9zY3JpcHRzL3ByZXR0aWZ5Lm1pbi5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPC9zY3JpcHQ+Cgo8bGluayBocmVmPSIuL2ltYWdlcy9mYXZpY29uLmljbyIgcmVsPSJzaG9ydGN1dCBpY29uIiAvPjwvaGVhZD4KPGJvZHkgaWQ9Im1hbnVhbC1wYWdlIj48ZGl2IGlkPSJwYWdlLWhlYWRlciI+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuL21vZC8iPk1vZHVsZXM8L2E+IHwgPGEgaHJlZj0iLi9tb2QvcXVpY2tyZWZlcmVuY2UuaHRtbCI+RGlyZWN0aXZlczwvYT4gfCA8YSBocmVmPSJodHRwOi8vd2lraS5hcGFjaGUub3JnL2h0dHBkL0ZBUSI+RkFRPC9hPiB8IDxhIGhyZWY9Ii4vZ2xvc3NhcnkuaHRtbCI+R2xvc3Nhcnk8L2E+IHwgPGEgaHJlZj0iLi9zaXRlbWFwLmh0bWwiPlNpdGVtYXA8L2E+PC9wPgo8cCBjbGFzcz0iYXBhY2hlIj5BcGFjaGUgSFRUUCBTZXJ2ZXIgVmVyc2lvbiAyLjU8L3A+CjxpbWcgYWx0PSIiIHNyYz0iLi9pbWFnZXMvZmVhdGhlci5wbmciIC8+PC9kaXY+CjxkaXYgY2xhc3M9InVwIj48YSBocmVmPSIuLyI+PGltZyB0aXRsZT0iJmx0Oy0iIGFsdD0iJmx0Oy0iIHNyYz0iLi9pbWFnZXMvbGVmdC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGlkPSJwYXRoIj4KPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QXBhY2hlPC9hPiAmZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnLyI+SFRUUCBTZXJ2ZXI8L2E+ICZndDsgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvZG9jcy8iPkRvY3VtZW50YXRpb248L2E+ICZndDsgPGEgaHJlZj0iLi8iPlZlcnNpb24gMi41PC9hPjwvZGl2PjxkaXYgaWQ9InBhZ2UtY29udGVudCI+PGRpdiBpZD0icHJlYW1ibGUiPjxoMT5BcGFjaGUncyBIYW5kbGVyIFVzZTwvaDE+CjxkaXYgY2xhc3M9InRvcGxhbmciPgo8cD48c3Bhbj5BdmFpbGFibGUgTGFuZ3VhZ2VzOiA8L3NwYW4+PGEgaHJlZj0iLi9lbi9oYW5kbGVyLmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuL2VzL2hhbmRsZXIuaHRtbCIgaHJlZmxhbmc9ImVzIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkVzcGHxb2wiPiZuYnNwO2VzJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4vZnIvaGFuZGxlci5odG1sIiBocmVmbGFuZz0iZnIiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iRnJhbudhaXMiPiZuYnNwO2ZyJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4vamEvaGFuZGxlci5odG1sIiBocmVmbGFuZz0iamEiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iSmFwYW5lc2UiPiZuYnNwO2phJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4va28vaGFuZGxlci5odG1sIiBocmVmbGFuZz0ia28iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iS29yZWFuIj4mbmJzcDtrbyZuYnNwOzwvYT4gfAo8YSBocmVmPSIuL3RyL2hhbmRsZXIuaHRtbCIgaHJlZmxhbmc9InRyIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IlT8cmvnZSI+Jm5ic3A7dHImbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi96aC1jbi9oYW5kbGVyLmh0bWwiIGhyZWZsYW5nPSJ6aC1jbiIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJTaW1wbGlmaWVkIENoaW5lc2UiPiZuYnNwO3poLWNuJm5ic3A7PC9hPjwvcD4KPC9kaXY+CgogICAgPHA+VGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIHVzZSBvZiBBcGFjaGUncyBIYW5kbGVycy48L3A+CiAgPC9kaXY+CjxkaXYgaWQ9InF1aWNrdmlldyI+PHVsIGlkPSJ0b2MiPjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjZGVmaW5pdGlvbiI+V2hhdCBpcyBhIEhhbmRsZXI8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNleGFtcGxlcyI+RXhhbXBsZXM8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNwcm9ncmFtbWVyIj5Qcm9ncmFtbWVyJ3MgTm90ZTwvYT48L2xpPgo8L3VsPjxoMz5TZWUgYWxzbzwvaDM+PHVsIGNsYXNzPSJzZWVhbHNvIj48bGk+PGEgaHJlZj0iI2NvbW1lbnRzX3NlY3Rpb24iPkNvbW1lbnRzPC9hPjwvbGk+PC91bD48L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJkZWZpbml0aW9uIiBpZD0iZGVmaW5pdGlvbiI+V2hhdCBpcyBhIEhhbmRsZXI8L2E+IDxhIHRpdGxlPSJQZXJtYW5lbnQgbGluayIgaHJlZj0iI2RlZmluaXRpb24iIGNsYXNzPSJwZXJtYWxpbmsiPiZwYXJhOzwvYT48L2gyPgogICAgCiAgICA8dGFibGUgY2xhc3M9InJlbGF0ZWQiPjx0cj48dGg+UmVsYXRlZCBNb2R1bGVzPC90aD48dGg+UmVsYXRlZCBEaXJlY3RpdmVzPC90aD48L3RyPjx0cj48dGQ+PHVsPjxsaT48Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuL21vZC9tb2RfYWN0aW9ucy5odG1sIj5tb2RfYWN0aW9uczwvYT48L2NvZGU+PC9saT48bGk+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi9tb2QvbW9kX2FzaXMuaHRtbCI+bW9kX2FzaXM8L2E+PC9jb2RlPjwvbGk+PGxpPjxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4vbW9kL21vZF9jZ2kuaHRtbCI+bW9kX2NnaTwvYT48L2NvZGU+PC9saT48bGk+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi9tb2QvbW9kX2ltYWdlbWFwLmh0bWwiPm1vZF9pbWFnZW1hcDwvYT48L2NvZGU+PC9saT48bGk+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi9tb2QvbW9kX2luZm8uaHRtbCI+bW9kX2luZm88L2E+PC9jb2RlPjwvbGk+PGxpPjxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4vbW9kL21vZF9taW1lLmh0bWwiPm1vZF9taW1lPC9hPjwvY29kZT48L2xpPjxsaT48Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuL21vZC9tb2RfbmVnb3RpYXRpb24uaHRtbCI+bW9kX25lZ290aWF0aW9uPC9hPjwvY29kZT48L2xpPjxsaT48Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuL21vZC9tb2Rfc3RhdHVzLmh0bWwiPm1vZF9zdGF0dXM8L2E+PC9jb2RlPjwvbGk+PC91bD48L3RkPjx0ZD48dWw+PGxpPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4vbW9kL21vZF9hY3Rpb25zLmh0bWwjYWN0aW9uIj5BY3Rpb248L2E+PC9jb2RlPjwvbGk+PGxpPjxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4vbW9kL21vZF9taW1lLmh0bWwjYWRkaGFuZGxlciI+QWRkSGFuZGxlcjwvYT48L2NvZGU+PC9saT48bGk+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi9tb2QvbW9kX21pbWUuaHRtbCNyZW1vdmVoYW5kbGVyIj5SZW1vdmVIYW5kbGVyPC9hPjwvY29kZT48L2xpPjxsaT48Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuL21vZC9jb3JlLmh0bWwjc2V0aGFuZGxlciI+U2V0SGFuZGxlcjwvYT48L2NvZGU+PC9saT48L3VsPjwvdGQ+PC90cj48L3RhYmxlPgoKCiAgICA8cD5BICJoYW5kbGVyIiBpcyBhbiBpbnRlcm5hbCBBcGFjaGUgcmVwcmVzZW50YXRpb24gb2YgdGhlCiAgICBhY3Rpb24gdG8gYmUgcGVyZm9ybWVkIHdoZW4gYSBmaWxlIGlzIGNhbGxlZC4gR2VuZXJhbGx5LCBmaWxlcwogICAgaGF2ZSBpbXBsaWNpdCBoYW5kbGVycywgYmFzZWQgb24gdGhlIGZpbGUgdHlwZS4gTm9ybWFsbHksIGFsbAogICAgZmlsZXMgYXJlIHNpbXBseSBzZXJ2ZWQgYnkgdGhlIHNlcnZlciwgYnV0IGNlcnRhaW4gZmlsZSB0eXBlcwogICAgYXJlICJoYW5kbGVkIiBzZXBhcmF0ZWx5LjwvcD4KCiAgICA8cD5IYW5kbGVycyBtYXkgYWxzbyBiZSBjb25maWd1cmVkIGV4cGxpY2l0bHksCiAgICBiYXNlZCBvbiBlaXRoZXIgZmlsZW5hbWUgZXh0ZW5zaW9ucyBvciBvbiBsb2NhdGlvbiwKICAgIHdpdGhvdXQgcmVsYXRpb24gdG8gZmlsZSB0eXBlLiBUaGlzIGlzCiAgICBhZHZhbnRhZ2VvdXMgYm90aCBiZWNhdXNlIGl0IGlzIGEgbW9yZSBlbGVnYW50IHNvbHV0aW9uLCBhbmQKICAgIGJlY2F1c2UgaXQgYWxzbyBhbGxvd3MgZm9yIGJvdGggYSB0eXBlIDxzdHJvbmc+YW5kPC9zdHJvbmc+IGEKICAgIGhhbmRsZXIgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIGEgZmlsZS4gKFNlZSBhbHNvIDxhIGhyZWY9Im1vZC9tb2RfbWltZS5odG1sI211bHRpcGxlZXh0Ij5GaWxlcyB3aXRoIE11bHRpcGxlCiAgICBFeHRlbnNpb25zPC9hPi4pPC9wPgoKICAgIDxwPkhhbmRsZXJzIGNhbiBlaXRoZXIgYmUgYnVpbHQgaW50byB0aGUgc2VydmVyIG9yIGluY2x1ZGVkIGluCiAgICBhIG1vZHVsZSwgb3IgdGhleSBjYW4gYmUgYWRkZWQgd2l0aCB0aGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi9tb2QvbW9kX2FjdGlvbnMuaHRtbCNhY3Rpb24iPkFjdGlvbjwvYT48L2NvZGU+IGRpcmVjdGl2ZS4gVGhlCiAgICBidWlsdC1pbiBoYW5kbGVycyBpbiB0aGUgc3RhbmRhcmQgZGlzdHJpYnV0aW9uIGFyZSBhcwogICAgZm9sbG93czo8L3A+CgogICAgPHVsPgogICAgICA8bGk+PHN0cm9uZz5kZWZhdWx0LWhhbmRsZXI8L3N0cm9uZz46IFNlbmQgdGhlIGZpbGUgdXNpbmcgdGhlCiAgICAgIDxjb2RlPmRlZmF1bHRfaGFuZGxlcigpPC9jb2RlPiwgd2hpY2ggaXMgdGhlIGhhbmRsZXIgdXNlZCBieQogICAgICBkZWZhdWx0IHRvIGhhbmRsZSBzdGF0aWMgY29udGVudC4gKGNvcmUpPC9saT4KCiAgICAgIDxsaT48c3Ryb25nPnNlbmQtYXMtaXM8L3N0cm9uZz46IFNlbmQgZmlsZSB3aXRoIEhUVFAgaGVhZGVycwogICAgICBhcyBpcy4gKDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4vbW9kL21vZF9hc2lzLmh0bWwiPm1vZF9hc2lzPC9hPjwvY29kZT4pPC9saT4KCiAgICAgIDxsaT48c3Ryb25nPmNnaS1zY3JpcHQ8L3N0cm9uZz46IFRyZWF0IHRoZSBmaWxlIGFzIGEgQ0dJCiAgICAgIHNjcmlwdC4gKDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4vbW9kL21vZF9jZ2kuaHRtbCI+bW9kX2NnaTwvYT48L2NvZGU+KTwvbGk+CgogICAgICA8bGk+PHN0cm9uZz5pbWFwLWZpbGU8L3N0cm9uZz46IFBhcnNlIGFzIGFuIGltYWdlbWFwIHJ1bGUKICAgICAgZmlsZS4gKDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4vbW9kL21vZF9pbWFnZW1hcC5odG1sIj5tb2RfaW1hZ2VtYXA8L2E+PC9jb2RlPik8L2xpPgoKICAgICAgPGxpPjxzdHJvbmc+c2VydmVyLWluZm88L3N0cm9uZz46IEdldCB0aGUgc2VydmVyJ3MKICAgICAgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi4gKDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4vbW9kL21vZF9pbmZvLmh0bWwiPm1vZF9pbmZvPC9hPjwvY29kZT4pPC9saT4KCiAgICAgIDxsaT48c3Ryb25nPnNlcnZlci1zdGF0dXM8L3N0cm9uZz46IEdldCB0aGUgc2VydmVyJ3Mgc3RhdHVzCiAgICAgIHJlcG9ydC4gKDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4vbW9kL21vZF9zdGF0dXMuaHRtbCI+bW9kX3N0YXR1czwvYT48L2NvZGU+KTwvbGk+CgogICAgICA8bGk+PHN0cm9uZz50eXBlLW1hcDwvc3Ryb25nPjogUGFyc2UgYXMgYSB0eXBlIG1hcCBmaWxlIGZvcgogICAgICBjb250ZW50IG5lZ290aWF0aW9uLiAoPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi9tb2QvbW9kX25lZ290aWF0aW9uLmh0bWwiPm1vZF9uZWdvdGlhdGlvbjwvYT48L2NvZGU+KTwvbGk+CiAgICA8L3VsPgogIDwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0iZXhhbXBsZXMiIGlkPSJleGFtcGxlcyI+RXhhbXBsZXM8L2E+IDxhIHRpdGxlPSJQZXJtYW5lbnQgbGluayIgaHJlZj0iI2V4YW1wbGVzIiBjbGFzcz0icGVybWFsaW5rIj4mcGFyYTs8L2E+PC9oMj4KICAgIAoKICAgIDxoMz48YSBuYW1lPSJleGFtcGxlMSIgaWQ9ImV4YW1wbGUxIj5Nb2RpZnlpbmcgc3RhdGljIGNvbnRlbnQgdXNpbmcgYSBDR0kgc2NyaXB0PC9hPjwvaDM+CiAgICAgIAoKICAgICAgPHA+VGhlIGZvbGxvd2luZyBkaXJlY3RpdmVzIHdpbGwgY2F1c2UgcmVxdWVzdHMgZm9yIGZpbGVzIHdpdGgKICAgICAgdGhlIDxjb2RlPmh0bWw8L2NvZGU+IGV4dGVuc2lvbiB0byB0cmlnZ2VyIHRoZSBsYXVuY2ggb2YgdGhlCiAgICAgIDxjb2RlPmZvb3Rlci5wbDwvY29kZT4gQ0dJIHNjcmlwdC48L3A+CgogICAgICA8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+QWN0aW9uIGFkZC1mb290ZXIgL2NnaS1iaW4vZm9vdGVyLnBsCkFkZEhhbmRsZXIgYWRkLWZvb3RlciAuaHRtbDwvcHJlPgoKCiAgICAgIDxwPlRoZW4gdGhlIENHSSBzY3JpcHQgaXMgcmVzcG9uc2libGUgZm9yIHNlbmRpbmcgdGhlCiAgICAgIG9yaWdpbmFsbHkgcmVxdWVzdGVkIGRvY3VtZW50IChwb2ludGVkIHRvIGJ5IHRoZQogICAgICA8Y29kZT5QQVRIX1RSQU5TTEFURUQ8L2NvZGU+IGVudmlyb25tZW50IHZhcmlhYmxlKSBhbmQgbWFraW5nCiAgICAgIHdoYXRldmVyIG1vZGlmaWNhdGlvbnMgb3IgYWRkaXRpb25zIGFyZSBkZXNpcmVkLjwvcD4KCiAgICAKICAgIDxoMz48YSBuYW1lPSJleGFtcGxlMiIgaWQ9ImV4YW1wbGUyIj5GaWxlcyB3aXRoIEhUVFAgaGVhZGVyczwvYT48L2gzPgogICAgICAKCiAgICAgIDxwPlRoZSBmb2xsb3dpbmcgZGlyZWN0aXZlcyB3aWxsIGVuYWJsZSB0aGUKICAgICAgPGNvZGU+c2VuZC1hcy1pczwvY29kZT4gaGFuZGxlciwgd2hpY2ggaXMgdXNlZCBmb3IgZmlsZXMgd2hpY2gKICAgICAgY29udGFpbiB0aGVpciBvd24gSFRUUCBoZWFkZXJzLiBBbGwgZmlsZXMgaW4gdGhlCiAgICAgIDxjb2RlPi93ZWIvaHRkb2NzL2FzaXMvPC9jb2RlPiBkaXJlY3Rvcnkgd2lsbCBiZSBwcm9jZXNzZWQgYnkKICAgICAgdGhlIDxjb2RlPnNlbmQtYXMtaXM8L2NvZGU+IGhhbmRsZXIsIHJlZ2FyZGxlc3Mgb2YgdGhlaXIKICAgICAgZmlsZW5hbWUgZXh0ZW5zaW9ucy48L3A+CgogICAgICA8cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+Jmx0O0RpcmVjdG9yeSAiL3dlYi9odGRvY3MvYXNpcyImZ3Q7CiAgICBTZXRIYW5kbGVyIHNlbmQtYXMtaXMKJmx0Oy9EaXJlY3RvcnkmZ3Q7PC9wcmU+CgoKICAgIAogIDwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0icHJvZ3JhbW1lciIgaWQ9InByb2dyYW1tZXIiPlByb2dyYW1tZXIncyBOb3RlPC9hPiA8YSB0aXRsZT0iUGVybWFuZW50IGxpbmsiIGhyZWY9IiNwcm9ncmFtbWVyIiBjbGFzcz0icGVybWFsaW5rIj4mcGFyYTs8L2E+PC9oMj4KICAgIAoKICAgIDxwPkluIG9yZGVyIHRvIGltcGxlbWVudCB0aGUgaGFuZGxlciBmZWF0dXJlcywgYW4gYWRkaXRpb24gaGFzCiAgICBiZWVuIG1hZGUgdG8gdGhlIDxhIGhyZWY9ImRldmVsb3Blci9BUEkuaHRtbCI+QXBhY2hlIEFQSTwvYT4gdGhhdAogICAgeW91IG1heSB3aXNoIHRvIG1ha2UgdXNlIG9mLiBTcGVjaWZpY2FsbHksIGEgbmV3IHJlY29yZCBoYXMKICAgIGJlZW4gYWRkZWQgdG8gdGhlIDxjb2RlPnJlcXVlc3RfcmVjPC9jb2RlPiBzdHJ1Y3R1cmU6PC9wPgoKICAgIDxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctYyI+Y2hhciAqaGFuZGxlcjwvcHJlPgoKCiAgICA8cD5JZiB5b3Ugd2lzaCB0byBoYXZlIHlvdXIgbW9kdWxlIGVuZ2FnZSBhIGhhbmRsZXIsIHlvdSBuZWVkCiAgICBvbmx5IHRvIHNldCA8Y29kZT5yLSZndDtoYW5kbGVyPC9jb2RlPiB0byB0aGUgbmFtZSBvZiB0aGUKICAgIGhhbmRsZXIgYXQgYW55IHRpbWUgcHJpb3IgdG8gdGhlIDxjb2RlPmludm9rZV9oYW5kbGVyPC9jb2RlPgogICAgc3RhZ2Ugb2YgdGhlIHJlcXVlc3QuIEhhbmRsZXJzIGFyZSBpbXBsZW1lbnRlZCBhcyB0aGV5IHdlcmUKICAgIGJlZm9yZSwgYWxiZWl0IHVzaW5nIHRoZSBoYW5kbGVyIG5hbWUgaW5zdGVhZCBvZiBhIGNvbnRlbnQKICAgIHR5cGUuIFdoaWxlIGl0IGlzIG5vdCBuZWNlc3NhcnksIHRoZSBuYW1pbmcgY29udmVudGlvbiBmb3IKICAgIGhhbmRsZXJzIGlzIHRvIHVzZSBhIGRhc2gtc2VwYXJhdGVkIHdvcmQsIHdpdGggbm8gc2xhc2hlcywgc28KICAgIGFzIHRvIG5vdCBpbnZhZGUgdGhlIG1lZGlhIHR5cGUgbmFtZS1zcGFjZS48L3A+CiAgPC9kaXY+PC9kaXY+CjxkaXYgY2xhc3M9ImJvdHRvbWxhbmciPgo8cD48c3Bhbj5BdmFpbGFibGUgTGFuZ3VhZ2VzOiA8L3NwYW4+PGEgaHJlZj0iLi9lbi9oYW5kbGVyLmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuL2VzL2hhbmRsZXIuaHRtbCIgaHJlZmxhbmc9ImVzIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkVzcGHxb2wiPiZuYnNwO2VzJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4vZnIvaGFuZGxlci5odG1sIiBocmVmbGFuZz0iZnIiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iRnJhbudhaXMiPiZuYnNwO2ZyJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4vamEvaGFuZGxlci5odG1sIiBocmVmbGFuZz0iamEiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iSmFwYW5lc2UiPiZuYnNwO2phJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4va28vaGFuZGxlci5odG1sIiBocmVmbGFuZz0ia28iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iS29yZWFuIj4mbmJzcDtrbyZuYnNwOzwvYT4gfAo8YSBocmVmPSIuL3RyL2hhbmRsZXIuaHRtbCIgaHJlZmxhbmc9InRyIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IlT8cmvnZSI+Jm5ic3A7dHImbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi96aC1jbi9oYW5kbGVyLmh0bWwiIGhyZWZsYW5nPSJ6aC1jbiIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJTaW1wbGlmaWVkIENoaW5lc2UiPiZuYnNwO3poLWNuJm5ic3A7PC9hPjwvcD4KPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgc3JjPSIuL2ltYWdlcy91cC5naWYiIGFsdD0idG9wIiAvPjwvYT48L2Rpdj48ZGl2IGNsYXNzPSJzZWN0aW9uIj48aDI+PGEgaWQ9ImNvbW1lbnRzX3NlY3Rpb24iIG5hbWU9ImNvbW1lbnRzX3NlY3Rpb24iPkNvbW1lbnRzPC9hPjwvaDI+PGRpdiBjbGFzcz0id2FybmluZyI+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+PGJyIC8+VGhpcyBpcyBub3QgYSBRJmFtcDtBIHNlY3Rpb24uIENvbW1lbnRzIHBsYWNlZCBoZXJlIHNob3VsZCBiZSBwb2ludGVkIHRvd2FyZHMgc3VnZ2VzdGlvbnMgb24gaW1wcm92aW5nIHRoZSBkb2N1bWVudGF0aW9uIG9yIHNlcnZlciwgYW5kIG1heSBiZSByZW1vdmVkIGFnYWluIGJ5IG91ciBtb2RlcmF0b3JzIGlmIHRoZXkgYXJlIGVpdGhlciBpbXBsZW1lbnRlZCBvciBjb25zaWRlcmVkIGludmFsaWQvb2ZmLXRvcGljLiBRdWVzdGlvbnMgb24gaG93IHRvIG1hbmFnZSB0aGUgQXBhY2hlIEhUVFAgU2VydmVyIHNob3VsZCBiZSBkaXJlY3RlZCBhdCBlaXRoZXIgb3VyIElSQyBjaGFubmVsLCAjaHR0cGQsIG9uIEZyZWVub2RlLCBvciBzZW50IHRvIG91ciA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9saXN0cy5odG1sIj5tYWlsaW5nIGxpc3RzPC9hPi48L2Rpdj4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0vLy0tPjwhW0NEQVRBWy8vPjwhLS0KdmFyIGNvbW1lbnRzX3Nob3J0bmFtZSA9ICdodHRwZCc7CnZhciBjb21tZW50c19pZGVudGlmaWVyID0gJ2h0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvdHJ1bmsvaGFuZGxlci5odG1sJzsKKGZ1bmN0aW9uKHcsIGQpIHsKICAgIGlmICh3LmxvY2F0aW9uLmhvc3RuYW1lLnRvTG93ZXJDYXNlKCkgPT0gImh0dHBkLmFwYWNoZS5vcmciKSB7CiAgICAgICAgZC53cml0ZSgnPGRpdiBpZD0iY29tbWVudHNfdGhyZWFkIj48XC9kaXY+Jyk7CiAgICAgICAgdmFyIHMgPSBkLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOwogICAgICAgIHMudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnOwogICAgICAgIHMuYXN5bmMgPSB0cnVlOwogICAgICAgIHMuc3JjID0gJ2h0dHBzOi8vY29tbWVudHMuYXBhY2hlLm9yZy9zaG93X2NvbW1lbnRzLmx1YT9zaXRlPScgKyBjb21tZW50c19zaG9ydG5hbWUgKyAnJnBhZ2U9JyArIGNvbW1lbnRzX2lkZW50aWZpZXI7CiAgICAgICAgKGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXSB8fCBkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdib2R5JylbMF0pLmFwcGVuZENoaWxkKHMpOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgZC53cml0ZSgnPGRpdiBpZD0iY29tbWVudHNfdGhyZWFkIj5Db21tZW50cyBhcmUgZGlzYWJsZWQgZm9yIHRoaXMgcGFnZSBhdCB0aGUgbW9tZW50LjxcL2Rpdj4nKTsKICAgIH0KfSkod2luZG93LCBkb2N1bWVudCk7Ci8vLS0+PCFdXT48L3NjcmlwdD48L2Rpdj48ZGl2IGlkPSJmb290ZXIiPgo8cCBjbGFzcz0iYXBhY2hlIj5Db3B5cmlnaHQgMjAxOSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uPGJyIC8+TGljZW5zZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCI+QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wPC9hPi48L3A+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuL21vZC8iPk1vZHVsZXM8L2E+IHwgPGEgaHJlZj0iLi9tb2QvcXVpY2tyZWZlcmVuY2UuaHRtbCI+RGlyZWN0aXZlczwvYT4gfCA8YSBocmVmPSJodHRwOi8vd2lraS5hcGFjaGUub3JnL2h0dHBkL0ZBUSI+RkFRPC9hPiB8IDxhIGhyZWY9Ii4vZ2xvc3NhcnkuaHRtbCI+R2xvc3Nhcnk8L2E+IHwgPGEgaHJlZj0iLi9zaXRlbWFwLmh0bWwiPlNpdGVtYXA8L2E+PC9wPjwvZGl2PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tLy8tLT48IVtDREFUQVsvLz48IS0tCmlmICh0eXBlb2YocHJldHR5UHJpbnQpICE9PSAndW5kZWZpbmVkJykgewogICAgcHJldHR5UHJpbnQoKTsKfQovLy0tPjwhXV0+PC9zY3JpcHQ+CjwvYm9keT48L2h0bWw+