PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJmciIgeG1sOmxhbmc9ImZyIj48aGVhZD4KPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KPCEtLQogICAgICAgIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYCiAgICAgICAgICAgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBmcm9tIHhtbCBzb3VyY2U6IERPIE5PVCBFRElUCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgLS0+Cjx0aXRsZT5tb2RfYWN0aW9ucyAtIFNlcnZldXIgQXBhY2hlIEhUVFAgVmVyc2lvbiAyLjQ8L3RpdGxlPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0iYWxsIiB0eXBlPSJ0ZXh0L2NzcyIgdGl0bGU9Ik1haW4gc3R5bGVzaGVldCIgLz4KPGxpbmsgaHJlZj0iLi4vc3R5bGUvY3NzL21hbnVhbC1sb29zZS0xMDBwYy5jc3MiIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTm8gU2lkZWJhciAtIERlZmF1bHQgZm9udCBzaXplIiAvPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLXByaW50LmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0icHJpbnQiIHR5cGU9InRleHQvY3NzIiAvPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlL2Nzcy9wcmV0dGlmeS5jc3MiIC8+CjxzY3JpcHQgc3JjPSIuLi9zdHlsZS9zY3JpcHRzL3ByZXR0aWZ5Lm1pbi5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPC9zY3JpcHQ+Cgo8bGluayBocmVmPSIuLi9pbWFnZXMvZmF2aWNvbi5pY28iIHJlbD0ic2hvcnRjdXQgaWNvbiIgLz48L2hlYWQ+Cjxib2R5Pgo8ZGl2IGlkPSJwYWdlLWhlYWRlciI+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuLi9tb2QvIj5Nb2R1bGVzPC9hPiB8IDxhIGhyZWY9Ii4uL21vZC9kaXJlY3RpdmVzLmh0bWwiPkRpcmVjdGl2ZXM8L2E+IHwgPGEgaHJlZj0iaHR0cDovL3dpa2kuYXBhY2hlLm9yZy9odHRwZC9GQVEiPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FpcmU8L2E+IHwgPGEgaHJlZj0iLi4vc2l0ZW1hcC5odG1sIj5QbGFuIGR1IHNpdGU8L2E+PC9wPgo8cCBjbGFzcz0iYXBhY2hlIj5TZXJ2ZXVyIEFwYWNoZSBIVFRQIFZlcnNpb24gMi40PC9wPgo8aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9mZWF0aGVyLnBuZyIgLz48L2Rpdj4KPGRpdiBjbGFzcz0idXAiPjxhIGhyZWY9Ii4vIj48aW1nIHRpdGxlPSImbHQ7LSIgYWx0PSImbHQ7LSIgc3JjPSIuLi9pbWFnZXMvbGVmdC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGlkPSJwYXRoIj4KPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QXBhY2hlPC9hPiAmZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnLyI+U2VydmV1ciBIVFRQPC9hPiAmZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvIj5Eb2N1bWVudGF0aW9uPC9hPiAmZ3Q7IDxhIGhyZWY9Ii4uLyI+VmVyc2lvbiAyLjQ8L2E+ICZndDsgPGEgaHJlZj0iLi8iPk1vZHVsZXM8L2E+PC9kaXY+CjxkaXYgaWQ9InBhZ2UtY29udGVudCI+CjxkaXYgaWQ9InByZWFtYmxlIj48aDE+TW9kdWxlIEFwYWNoZSBtb2RfYWN0aW9uczwvaDE+CjxkaXYgY2xhc3M9InRvcGxhbmciPgo8cD48c3Bhbj5MYW5ndWVzIERpc3BvbmlibGVzOiA8L3NwYW4+PGEgaHJlZj0iLi4vZGUvbW9kL21vZF9hY3Rpb25zLmh0bWwiIGhyZWZsYW5nPSJkZSIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJEZXV0c2NoIj4mbmJzcDtkZSZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9lbi9tb2QvbW9kX2FjdGlvbnMuaHRtbCIgaHJlZmxhbmc9ImVuIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkVuZ2xpc2giPiZuYnNwO2VuJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2ZyL21vZC9tb2RfYWN0aW9ucy5odG1sIiB0aXRsZT0iRnJhbudhaXMiPiZuYnNwO2ZyJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2phL21vZC9tb2RfYWN0aW9ucy5odG1sIiBocmVmbGFuZz0iamEiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iSmFwYW5lc2UiPiZuYnNwO2phJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2tvL21vZC9tb2RfYWN0aW9ucy5odG1sIiBocmVmbGFuZz0ia28iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iS29yZWFuIj4mbmJzcDtrbyZuYnNwOzwvYT48L3A+CjwvZGl2Pgo8dGFibGUgY2xhc3M9Im1vZHVsZSI+PHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+RXjpY3V0aW9uIGRlcyBzY3JpcHRzIENHSSBlbiBmb25jdGlvbiBkdQp0eXBlIGRlIG3pZGlhIG91IGRlIGxhIG3pdGhvZGUgZGUgcmVxdep0ZS48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1dDo8L2E+PC90aD48dGQ+QmFzZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI01vZHVsZUlkZW50aWZpZXIiPklkZW50aWZpY2F0ZXVyoGRloE1vZHVsZTo8L2E+PC90aD48dGQ+YWN0aW9uc19tb2R1bGU8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNTb3VyY2VGaWxlIj5GaWNoaWVyoFNvdXJjZTo8L2E+PC90aD48dGQ+bW9kX2FjdGlvbnMuYzwvdGQ+PC90cj48L3RhYmxlPgo8aDM+U29tbWFpcmU8L2gzPgoKICAgIDxwPkNlIG1vZHVsZSBwb3Nz6GRlIGRldXggZGlyZWN0aXZlcy4gTGEgZGlyZWN0aXZlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNhY3Rpb24iPkFjdGlvbjwvYT48L2NvZGU+IHZvdXMgcGVybWV0IGRlIGxhbmNlcgogICAgbCdleOljdXRpb24gZGUgc2NyaXB0cyBDR0kgY2hhcXVlIGZvaXMgcXUndW4gZmljaGllciBwb3Nz6WRhbnQgdW4KICAgIGNlcnRhaW4gPGEgY2xhc3M9Imdsb3NzYXJ5bGluayIgaHJlZj0iLi4vZ2xvc3NhcnkuaHRtbCNtaW1lLXR5cGUiIHRpdGxlPSJ2b2lyIGdsb3NzYWlyZSI+dHlwZSBkZSBjb250ZW51IE1JTUU8L2E+CiAgICBmYWl0IGwnb2JqZXQgZCd1bmUgcmVxdep0ZS4gTGEgZGlyZWN0aXZlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNzY3JpcHQiPlNjcmlwdDwvYT48L2NvZGU+IHZvdXMgcGVybWV0IGRlIGxhbmNlcgogICAgbCdleOljdXRpb24gZGUgc2NyaXB0cyBDR0kgY2hhcXVlIGZvaXMgcXVlIGxhIHJlcXXqdGUgdXRpbGlzZSB1bmUKICAgIG3pdGhvZGUgcGFydGljdWxp6HJlLiBDZWNpIGZhY2lsaXRlIGdyYW5kZW1lbnQgbCdleOljdXRpb24gZGUKICAgIHNjcmlwdHMgcXVpIHRyYWl0ZW50IGRlcyBmaWNoaWVycy48L3A+IDwvZGl2Pgo8ZGl2IGlkPSJxdWlja3ZpZXciPjxoMyBjbGFzcz0iZGlyZWN0aXZlcyI+RGlyZWN0aXZlczwvaDM+Cjx1bCBpZD0idG9jIj4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjYWN0aW9uIj5BY3Rpb248L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjc2NyaXB0Ij5TY3JpcHQ8L2E+PC9saT4KPC91bD4KPGgzPlRyYWl0ZW1lbnQgZGVzIGJ1Z3M8L2gzPjx1bCBjbGFzcz0ic2VlYWxzbyI+PGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvZGlzdC9odHRwZC9DSEFOR0VTXzIuNCI+Sm91cm5hbCBkZXMgbW9kaWZpY2F0aW9ucyBkZSBodHRwZDwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwczovL2J6LmFwYWNoZS5vcmcvYnVnemlsbGEvYnVnbGlzdC5jZ2k/YnVnX3N0YXR1cz1fX29wZW5fXyZhbXA7bGlzdF9pZD0xNDQ1MzImYW1wO3Byb2R1Y3Q9QXBhY2hlJTIwaHR0cGQtMiZhbXA7cXVlcnlfZm9ybWF0PXNwZWNpZmljJmFtcDtvcmRlcj1jaGFuZ2VkZGF0ZSUyMERFU0MlMkNwcmlvcml0eSUyQ2J1Z19zZXZlcml0eSZhbXA7Y29tcG9uZW50PW1vZF9hY3Rpb25zIj5Qcm9ibOhtZXMgY29ubnVzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vYnouYXBhY2hlLm9yZy9idWd6aWxsYS9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9QXBhY2hlJTIwaHR0cGQtMiZhbXA7Y29tcG9uZW50PW1vZF9hY3Rpb25zIj5TaWduYWxlciB1biBidWc8L2E+PC9saT48L3VsPjxoMz5Wb2lyIGF1c3NpPC9oMz4KPHVsIGNsYXNzPSJzZWVhbHNvIj4KPGxpPjxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfY2dpLmh0bWwiPm1vZF9jZ2k8L2E+PC9jb2RlPjwvbGk+CjxsaT48YSBocmVmPSIuLi9ob3d0by9jZ2kuaHRtbCI+Q29udGVudSBkeW5hbWlxdWUgYXZlYyBDR0k8L2E+PC9saT4KPGxpPjxhIGhyZWY9Ii4uL2hhbmRsZXIuaHRtbCI+VXRpbGlzYXRpb24gZGVzIGdlc3Rpb25uYWlyZXMKZCdBcGFjaGUgaHR0cGQ8L2E+PC9saT4KPGxpPjxhIGhyZWY9IiNjb21tZW50c19zZWN0aW9uIj5Db21tZW50YWlyZXM8L2E+PC9saT48L3VsPjwvZGl2PgoKPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iYWN0aW9uIiBpZD0iYWN0aW9uIj5EaXJlY3RpdmU8L2E+IDxhIG5hbWU9IkFjdGlvbiIgaWQ9IkFjdGlvbiI+QWN0aW9uPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+QWN0aXZlIHVuIHNjcmlwdCBDR0kgcG91ciB1biBnZXN0aW9ubmFpcmUgb3UgdW4gdHlwZSBkZQpjb250ZW51IHBhcnRpY3VsaWVyPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXhlOjwvYT48L3RoPjx0ZD48Y29kZT5BY3Rpb24gPHZhcj50eXBlIGQnYWN0aW9uPC92YXI+IDx2YXI+c2NyaXB0IGNnaTwvdmFyPgpbdmlydHVhbF08L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dGU6PC9hPjwvdGg+PHRkPmNvbmZpZ3VyYXRpb24gZHUgc2VydmV1ciwgc2VydmV1ciB2aXJ0dWVsLCBy6XBlcnRvaXJlLCAuaHRhY2Nlc3M8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNPdmVycmlkZSI+QWxsb3dPdmVycmlkZTo8L2E+PC90aD48dGQ+RmlsZUluZm88L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1dDo8L2E+PC90aD48dGQ+QmFzZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfYWN0aW9uczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbXBhdGliaWxpdHkiPkNvbXBhdGliaWxpdOk6PC9hPjwvdGg+PHRkPkxlIG1vZGlmaWNhdGV1ciA8Y29kZT52aXJ0dWFsPC9jb2RlPiBldCBsZSBwYXNzYWdlIGRlCmdlc3Rpb25uYWlyZSBvbnQg6XTpIGludHJvZHVpdHMgZGFucyBBcGFjaGUgMi4xPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+Q2V0dGUgZGlyZWN0aXZlIGFqb3V0ZSB1bmUgYWN0aW9uIHF1aSB2YSBhY3RpdmVyIDx2YXI+c2NyaXB0CiAgICBjZ2k8L3Zhcj4gbG9yc3F1ZSA8dmFyPnR5cGUgZCdhY3Rpb248L3Zhcj4gZXN0IGTpY2xlbmNo6SBwYXIgbGEKICAgIHJlcXXqdGUuIDx2YXI+c2NyaXB0IGNnaTwvdmFyPiBlc3QgdW4gY2hlbWluIFVSTCB2ZXJzIHVuZSByZXNzb3VyY2UKICAgIHF1aSBhIOl06SBk6XNpZ27pZSBjb21tZSBzY3JpcHQgQ0dJIOAgbCdhaWRlIGRlcyBkaXJlY3RpdmVzCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX2FsaWFzLmh0bWwjc2NyaXB0YWxpYXMiPlNjcmlwdEFsaWFzPC9hPjwvY29kZT4gb3UgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9taW1lLmh0bWwjYWRkaGFuZGxlciI+QWRkSGFuZGxlcjwvYT48L2NvZGU+LiA8dmFyPnR5cGUgZCdhY3Rpb248L3Zhcj4KICAgIHBldXQg6nRyZSBzb2l0IHVuIDxhIGhyZWY9Ii4uL2hhbmRsZXIuaHRtbCI+Z2VzdGlvbm5haXJlPC9hPiwgc29pdAogICAgdW4gPGEgY2xhc3M9Imdsb3NzYXJ5bGluayIgaHJlZj0iLi4vZ2xvc3NhcnkuaHRtbCNtaW1lLXR5cGUiIHRpdGxlPSJ2b2lyIGdsb3NzYWlyZSI+dHlwZSBkZSBjb250ZW51IE1JTUU8L2E+LiBMJ1VSTAogICAgZXQgbGUgY2hlbWluIGR1IGRvY3VtZW50IGNvcnJlc3BvbmRhbnQgc29udCBlbnZveelzIGVuIHV0aWxpc2FudAogICAgbGVzIHZhcmlhYmxlcyBkJ2Vudmlyb25uZW1lbnQgQ0dJIHN0YW5kYXJkcyA8Y29kZT5QQVRIX0lORk88L2NvZGU+CiAgICBldCA8Y29kZT5QQVRIX1RSQU5TTEFURUQ8L2NvZGU+LiBMZSBnZXN0aW9ubmFpcmUgdXRpbGlz6SBwb3VyIGNldHRlCiAgICByZXF16nRlIHBhcnRpY3VsaehyZSBlc3QgdHJhbnNtaXMg4CBsJ2FpZGUgZGUgbGEgdmFyaWFibGUKICAgIDxjb2RlPlJFRElSRUNUX0hBTkRMRVI8L2NvZGU+LjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48aDM+RXhlbXBsZSA6IHR5cGUgTUlNRTwvaDM+PHByZSBjbGFzcz0icHJldHR5cHJpbnQgbGFuZy1jb25maWciPiMgUmVxdWVzdHMgZm9yIGZpbGVzIG9mIGEgcGFydGljdWxhciBNSU1FIGNvbnRlbnQgdHlwZToKQWN0aW9uIGltYWdlL2dpZiAvY2dpLWJpbi9pbWFnZXMuY2dpPC9wcmU+CjwvZGl2PgoKICAgIDxwPkRhbnMgY2V0IGV4ZW1wbGUsIGxlcyByZXF16nRlcyBwb3VyIGRlcyBmaWNoaWVycyBwb3Nz6WRhbnQKICAgIGxlIHR5cGUgZGUgY29udGVudSBNSU1FIDxjb2RlPmltYWdlL2dpZjwvY29kZT4gc2Vyb250IHRyYWl06WVzIHBhcgogICAgbGUgc2NyaXB0IENHSSA8Y29kZT4vY2dpLWJpbi9pbWFnZXMuY2dpPC9jb2RlPi48L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PGgzPkV4YW1wbGU6IEZpbGUgZXh0ZW5zaW9uPC9oMz48cHJlIGNsYXNzPSJwcmV0dHlwcmludCBsYW5nLWNvbmZpZyI+IyBGaWxlcyBvZiBhIHBhcnRpY3VsYXIgZmlsZSBleHRlbnNpb24KQWRkSGFuZGxlciBteS1maWxlLXR5cGUgLnh5egpBY3Rpb24gbXktZmlsZS10eXBlICIvY2dpLWJpbi9wcm9ncmFtLmNnaSI8L3ByZT4KPC9kaXY+CiAgICA8cD5EYW5zIGNldCBleGVtcGxlLCBsZXMgcmVxdep0ZXMgcG91ciBkZXMgZmljaGllcnMgcG9zc+lkYW50CiAgICBsJ2V4dGVuc2lvbiA8Y29kZT4ueHl6PC9jb2RlPiBzZXJvbnQgdHJhaXTpZXMgcGFyCiAgICBsZSBzY3JpcHQgQ0dJIDxjb2RlPi9jZ2ktYmluL3Byb2dyYW1tZS5jZ2k8L2NvZGU+LjwvcD4KCiAgICA8cD5MZSBtb2RpZmljYXRldXIgb3B0aW9ubmVsIDxjb2RlPnZpcnR1YWw8L2NvZGU+IHBlcm1ldCBkZQogICAgZOlzYWN0aXZlciBsYSB26XJpZmljYXRpb24gZGUgbCdleGlzdGVuY2UgZHUgZmljaGllciBkZW1hbmTpLiBDZWNpCiAgICBwZXV0IHMnYXbpcmVyIHV0aWxlLCBwYXIgZXhlbXBsZSwgc2kgdm91cyB2b3VsZXogdXRpbGlzZXIgbGEKICAgIGRpcmVjdGl2ZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5BY3Rpb248L2NvZGU+IHBvdXIgZGVzIGxvY2FsaXNhdGlvbnMKICAgIHZpcnR1ZWxsZXMuPC9wPgoKICAgIDxwcmUgY2xhc3M9InByZXR0eXByaW50IGxhbmctY29uZmlnIj4mbHQ7TG9jYXRpb24gIi9uZXdzIiZndDsKICAgIFNldEhhbmRsZXIgbmV3cy1oYW5kbGVyCiAgICBBY3Rpb24gbmV3cy1oYW5kbGVyICIvY2dpLWJpbi9uZXdzLmNnaSIgdmlydHVhbAombHQ7L0xvY2F0aW9uJmd0OzwvcHJlPgoKCjxoMz5Wb2lyIGF1c3NpPC9oMz4KPHVsPgo8bGk+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9taW1lLmh0bWwjYWRkaGFuZGxlciI+QWRkSGFuZGxlcjwvYT48L2NvZGU+PC9saT4KPC91bD4KPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9InNjcmlwdCIgaWQ9InNjcmlwdCI+RGlyZWN0aXZlPC9hPiA8YSBuYW1lPSJTY3JpcHQiIGlkPSJTY3JpcHQiPlNjcmlwdDwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkFjdGl2ZSB1biBzY3JpcHQgQ0dJIGRhbnMgbGUgY2FzIGQndW5lIG3pdGhvZGUgZGUgcmVxdep0ZQpwYXJ0aWN1bGnocmUuPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXhlOjwvYT48L3RoPjx0ZD48Y29kZT5TY3JpcHQgPHZhcj5t6XRob2RlPC92YXI+IDx2YXI+c2NyaXB0IGNnaTwvdmFyPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0ZTo8L2E+PC90aD48dGQ+Y29uZmlndXJhdGlvbiBkdSBzZXJ2ZXVyLCBzZXJ2ZXVyIHZpcnR1ZWwsIHLpcGVydG9pcmU8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1dDo8L2E+PC90aD48dGQ+QmFzZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfYWN0aW9uczwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPkNldHRlIGRpcmVjdGl2ZSBham91dGUgdW5lIGFjdGlvbiBxdWkgdmEgYWN0aXZlciA8dmFyPnNjcmlwdAogICAgY2dpPC92YXI+IGxvcnNxdSd1biBmaWNoaWVyIGVzdCBkZW1hbmTpIGVuIHV0aWxpc2FudCBsYSBt6XRob2RlCiAgICA8dmFyPm3pdGhvZGU8L3Zhcj4uIDx2YXI+c2NyaXB0IGNnaTwvdmFyPiBlc3QgbGUgY2hlbWluIFVSTCBkJ3VuZQogICAgcmVzc291cmNlIHF1aSBhIOl06SBk6XNpZ27pZSBjb21tZSBzY3JpcHQgQ0dJIGVuIHV0aWxpc2FudCBsZXMKICAgIGRpcmVjdGl2ZXMgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9hbGlhcy5odG1sI3NjcmlwdGFsaWFzIj5TY3JpcHRBbGlhczwvYT48L2NvZGU+IG91IDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfbWltZS5odG1sI2FkZGhhbmRsZXIiPkFkZEhhbmRsZXI8L2E+PC9jb2RlPi4gTCdVUkwgZXQgbGUgY2hlbWluIGR1CiAgICBkb2N1bWVudCBkZW1hbmTpIHNvbnQgZW52b3npcyBlbiB1dGlsaXNhbnQgbGVzIHZhcmlhYmxlcwogICAgZCdlbnZpcm9ubmVtZW50IENHSSBzdGFuZGFyZHMgPGNvZGU+UEFUSF9JTkZPPC9jb2RlPiBldAogICAgPGNvZGU+UEFUSF9UUkFOU0xBVEVEPC9jb2RlPi48L3A+CgogICAgPGRpdiBjbGFzcz0ibm90ZSI+CiAgICAgIFRvdXMgbGVzIG5vbXMgZGUgbel0aG9kZSBwZXV2ZW50IOp0cmUgdXRpbGlz6XMuIDxzdHJvbmc+TGVzIG5vbXMKICAgICAgZGUgbel0aG9kZSBzb250IHNlbnNpYmxlcyDgIGxhIGNhc3NlPC9zdHJvbmc+LCBzaSBiaWVuIHF1ZQogICAgICA8Y29kZT5TY3JpcHQgUFVUPC9jb2RlPiBldCA8Y29kZT5TY3JpcHQgcHV0PC9jb2RlPiBvbnQgZGVzIGVmZmV0cwogICAgICB0b3RhbGVtZW50IGRpZmbpcmVudHMuCiAgICA8L2Rpdj4KCiAgICA8cD5Ob3RleiBxdWUgbGEgY29tbWFuZGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+U2NyaXB0PC9jb2RlPiBuZSBk6WZpbml0CiAgICBxdWUgZGVzIGFjdGlvbnMgcGFyIGTpZmF1dC4gU2kgdW4gc2NyaXB0IENHSSBlc3QgYXBwZWzpLCBvdSB0b3V0ZQogICAgYXV0cmUgcmVzc291cmNlIGNhcGFibGUgZGUgZ+lyZXIgbGEgbel0aG9kZSBkZSBsYSByZXF16nRlIGVuCiAgICBpbnRlcm5lLCBpbCBhZ2lyYSBlbiBjb25z6XF1ZW5jZS4gTm90ZXogYXVzc2kgcXVlCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5TY3JpcHQ8L2NvZGU+IGF2ZWMgdW5lIG3pdGhvZGUgPGNvZGU+R0VUPC9jb2RlPiBuZQogICAgc2VyYSBhcHBlbOkgcXVlIHNpIGxhIHJlcXXqdGUgcG9zc+hkZSBkZXMgYXJndW1lbnRzIChwYXIgZXhlbXBsZQogICAgZm9vLmh0bWw/aGkpLiBEYW5zIGxlIGNhcyBjb250cmFpcmUsIGxhIHJlcXXqdGUgc2VyYSB0cmFpdOllCiAgICBub3JtYWxlbWVudC48L3A+CgogICAgPHByZSBjbGFzcz0icHJldHR5cHJpbnQgbGFuZy1jb25maWciPiMgQWxsIEdFVCByZXF1ZXN0cyBnbyBoZXJlClNjcmlwdCBHRVQgIi9jZ2ktYmluL3NlYXJjaCIKCiMgQSBDR0kgUFVUIGhhbmRsZXIKU2NyaXB0IFBVVCAiL35ib2IvcHV0LmNnaSI8L3ByZT4KCgo8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9ImJvdHRvbWxhbmciPgo8cD48c3Bhbj5MYW5ndWVzIERpc3BvbmlibGVzOiA8L3NwYW4+PGEgaHJlZj0iLi4vZGUvbW9kL21vZF9hY3Rpb25zLmh0bWwiIGhyZWZsYW5nPSJkZSIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJEZXV0c2NoIj4mbmJzcDtkZSZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9lbi9tb2QvbW9kX2FjdGlvbnMuaHRtbCIgaHJlZmxhbmc9ImVuIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkVuZ2xpc2giPiZuYnNwO2VuJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2ZyL21vZC9tb2RfYWN0aW9ucy5odG1sIiB0aXRsZT0iRnJhbudhaXMiPiZuYnNwO2ZyJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2phL21vZC9tb2RfYWN0aW9ucy5odG1sIiBocmVmbGFuZz0iamEiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iSmFwYW5lc2UiPiZuYnNwO2phJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2tvL21vZC9tb2RfYWN0aW9ucy5odG1sIiBocmVmbGFuZz0ia28iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iS29yZWFuIj4mbmJzcDtrbyZuYnNwOzwvYT48L3A+CjwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgYWx0PSJ0b3AiIC8+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InNlY3Rpb24iPjxoMj48YSBpZD0iY29tbWVudHNfc2VjdGlvbiIgbmFtZT0iY29tbWVudHNfc2VjdGlvbiI+Q29tbWVudGFpcmVzPC9hPjwvaDI+PGRpdiBjbGFzcz0id2FybmluZyI+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+PGJyIC8+VGhpcyBpcyBub3QgYSBRJmFtcDtBIHNlY3Rpb24uIENvbW1lbnRzIHBsYWNlZCBoZXJlIHNob3VsZCBiZSBwb2ludGVkIHRvd2FyZHMgc3VnZ2VzdGlvbnMgb24gaW1wcm92aW5nIHRoZSBkb2N1bWVudGF0aW9uIG9yIHNlcnZlciwgYW5kIG1heSBiZSByZW1vdmVkIGFnYWluIGJ5IG91ciBtb2RlcmF0b3JzIGlmIHRoZXkgYXJlIGVpdGhlciBpbXBsZW1lbnRlZCBvciBjb25zaWRlcmVkIGludmFsaWQvb2ZmLXRvcGljLiBRdWVzdGlvbnMgb24gaG93IHRvIG1hbmFnZSB0aGUgQXBhY2hlIEhUVFAgU2VydmVyIHNob3VsZCBiZSBkaXJlY3RlZCBhdCBlaXRoZXIgb3VyIElSQyBjaGFubmVsLCAjaHR0cGQsIG9uIEZyZWVub2RlLCBvciBzZW50IHRvIG91ciA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9saXN0cy5odG1sIj5tYWlsaW5nIGxpc3RzPC9hPi48L2Rpdj4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0vLy0tPjwhW0NEQVRBWy8vPjwhLS0KdmFyIGNvbW1lbnRzX3Nob3J0bmFtZSA9ICdodHRwZCc7CnZhciBjb21tZW50c19pZGVudGlmaWVyID0gJ2h0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvMi40L21vZC9tb2RfYWN0aW9ucy5odG1sJzsKKGZ1bmN0aW9uKHcsIGQpIHsKICAgIGlmICh3LmxvY2F0aW9uLmhvc3RuYW1lLnRvTG93ZXJDYXNlKCkgPT0gImh0dHBkLmFwYWNoZS5vcmciKSB7CiAgICAgICAgZC53cml0ZSgnPGRpdiBpZD0iY29tbWVudHNfdGhyZWFkIj48XC9kaXY+Jyk7CiAgICAgICAgdmFyIHMgPSBkLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOwogICAgICAgIHMudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnOwogICAgICAgIHMuYXN5bmMgPSB0cnVlOwogICAgICAgIHMuc3JjID0gJ2h0dHBzOi8vY29tbWVudHMuYXBhY2hlLm9yZy9zaG93X2NvbW1lbnRzLmx1YT9zaXRlPScgKyBjb21tZW50c19zaG9ydG5hbWUgKyAnJnBhZ2U9JyArIGNvbW1lbnRzX2lkZW50aWZpZXI7CiAgICAgICAgKGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXSB8fCBkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdib2R5JylbMF0pLmFwcGVuZENoaWxkKHMpOwogICAgfQogICAgZWxzZSB7IAogICAgICAgIGQud3JpdGUoJzxkaXYgaWQ9ImNvbW1lbnRzX3RocmVhZCI+Q29tbWVudHMgYXJlIGRpc2FibGVkIGZvciB0aGlzIHBhZ2UgYXQgdGhlIG1vbWVudC48XC9kaXY+Jyk7CiAgICB9Cn0pKHdpbmRvdywgZG9jdW1lbnQpOwovLy0tPjwhXV0+PC9zY3JpcHQ+PC9kaXY+PGRpdiBpZD0iZm9vdGVyIj4KPHAgY2xhc3M9ImFwYWNoZSI+Q29weXJpZ2h0IDIwMTYgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLjxiciAvPkF1dG9yaXPpIHNvdXMgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIj5BcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjA8L2E+LjwvcD4KPHAgY2xhc3M9Im1lbnUiPjxhIGhyZWY9Ii4uL21vZC8iPk1vZHVsZXM8L2E+IHwgPGEgaHJlZj0iLi4vbW9kL2RpcmVjdGl2ZXMuaHRtbCI+RGlyZWN0aXZlczwvYT4gfCA8YSBocmVmPSJodHRwOi8vd2lraS5hcGFjaGUub3JnL2h0dHBkL0ZBUSI+RkFRPC9hPiB8IDxhIGhyZWY9Ii4uL2dsb3NzYXJ5Lmh0bWwiPkdsb3NzYWlyZTwvYT4gfCA8YSBocmVmPSIuLi9zaXRlbWFwLmh0bWwiPlBsYW4gZHUgc2l0ZTwvYT48L3A+PC9kaXY+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0vLy0tPjwhW0NEQVRBWy8vPjwhLS0KaWYgKHR5cGVvZihwcmV0dHlQcmludCkgIT09ICd1bmRlZmluZWQnKSB7CiAgICBwcmV0dHlQcmludCgpOwp9Ci8vLS0+PCFdXT48L3NjcmlwdD4KPC9ib2R5PjwvaHRtbD4=