PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJkZSIgeG1sOmxhbmc9ImRlIj48aGVhZD4KPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KPCEtLQogICAgICAgIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYCiAgICAgICAgICAgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBmcm9tIHhtbCBzb3VyY2U6IERPIE5PVCBFRElUCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgLS0+Cjx0aXRsZT7cYmVyc2ljaHQgZGVyIG5ldWVuIEZ1bmt0aW9uZW4gaW0gQXBhY2hlIEhUVFAgU2VydmVyIDIuMCAtIEFwYWNoZSBIVFRQIFNlcnZlciBWZXJzaW9uIDIuNTwvdGl0bGU+CjxsaW5rIGhyZWY9Ii4vc3R5bGUvY3NzL21hbnVhbC5jc3MiIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIgdHlwZT0idGV4dC9jc3MiIHRpdGxlPSJNYWluIHN0eWxlc2hlZXQiIC8+CjxsaW5rIGhyZWY9Ii4vc3R5bGUvY3NzL21hbnVhbC1sb29zZS0xMDBwYy5jc3MiIHJlbD0iYWx0ZXJuYXRlIHN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTm8gU2lkZWJhciAtIERlZmF1bHQgZm9udCBzaXplIiAvPgo8bGluayBocmVmPSIuL3N0eWxlL2Nzcy9tYW51YWwtcHJpbnQuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJwcmludCIgdHlwZT0idGV4dC9jc3MiIC8+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi9zdHlsZS9jc3MvcHJldHRpZnkuY3NzIiAvPgo8c2NyaXB0IHNyYz0iLi9zdHlsZS9zY3JpcHRzL3ByZXR0aWZ5Lm1pbi5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KPC9zY3JpcHQ+Cgo8bGluayBocmVmPSIuL2ltYWdlcy9mYXZpY29uLmljbyIgcmVsPSJzaG9ydGN1dCBpY29uIiAvPjwvaGVhZD4KPGJvZHkgaWQ9Im1hbnVhbC1wYWdlIj48ZGl2IGlkPSJwYWdlLWhlYWRlciI+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuL21vZC8iPk1vZHVsZTwvYT4gfCA8YSBocmVmPSIuL21vZC9xdWlja3JlZmVyZW5jZS5odG1sIj5EaXJla3RpdmVuPC9hPiB8IDxhIGhyZWY9Imh0dHA6Ly93aWtpLmFwYWNoZS5vcmcvaHR0cGQvRkFRIj5GQVE8L2E+IHwgPGEgaHJlZj0iLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FyPC9hPiB8IDxhIGhyZWY9Ii4vc2l0ZW1hcC5odG1sIj5TZWl0ZW5pbmRleDwvYT48L3A+CjxwIGNsYXNzPSJhcGFjaGUiPkFwYWNoZSBIVFRQIFNlcnZlciBWZXJzaW9uIDIuNTwvcD4KPGltZyBhbHQ9IiIgc3JjPSIuL2ltYWdlcy9mZWF0aGVyLnBuZyIgLz48L2Rpdj4KPGRpdiBjbGFzcz0idXAiPjxhIGhyZWY9Ii4vIj48aW1nIHRpdGxlPSImbHQ7LSIgYWx0PSImbHQ7LSIgc3JjPSIuL2ltYWdlcy9sZWZ0LmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgaWQ9InBhdGgiPgo8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BcGFjaGU8L2E+ICZndDsgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvIj5IVFRQLVNlcnZlcjwvYT4gJmd0OyA8YSBocmVmPSJodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLyI+RG9rdW1lbnRhdGlvbjwvYT4gJmd0OyA8YSBocmVmPSIuLyI+VmVyc2lvbiAyLjU8L2E+PC9kaXY+PGRpdiBpZD0icGFnZS1jb250ZW50Ij48ZGl2IGlkPSJwcmVhbWJsZSI+PGgxPtxiZXJzaWNodCBkZXIgbmV1ZW4gRnVua3Rpb25lbiBpbSBBcGFjaGUgSFRUUCBTZXJ2ZXIgMi4wPC9oMT4KPGRpdiBjbGFzcz0idG9wbGFuZyI+CjxwPjxzcGFuPlZlcmb8Z2JhcmUgU3ByYWNoZW46IDwvc3Bhbj48YSBocmVmPSIuL2RlL25ld19mZWF0dXJlc18yXzAuaHRtbCIgdGl0bGU9IkRldXRzY2giPiZuYnNwO2RlJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4vZW4vbmV3X2ZlYXR1cmVzXzJfMC5odG1sIiBocmVmbGFuZz0iZW4iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iRW5nbGlzaCI+Jm5ic3A7ZW4mbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi9mci9uZXdfZmVhdHVyZXNfMl8wLmh0bWwiIGhyZWZsYW5nPSJmciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJGcmFu52FpcyI+Jm5ic3A7ZnImbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi9qYS9uZXdfZmVhdHVyZXNfMl8wLmh0bWwiIGhyZWZsYW5nPSJqYSIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJKYXBhbmVzZSI+Jm5ic3A7amEmbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi9rby9uZXdfZmVhdHVyZXNfMl8wLmh0bWwiIGhyZWZsYW5nPSJrbyIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJLb3JlYW4iPiZuYnNwO2tvJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4vcHQtYnIvbmV3X2ZlYXR1cmVzXzJfMC5odG1sIiBocmVmbGFuZz0icHQtYnIiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iUG9ydHVndepzIChCcmFzaWwpIj4mbmJzcDtwdC1iciZuYnNwOzwvYT4gfAo8YSBocmVmPSIuL3J1L25ld19mZWF0dXJlc18yXzAuaHRtbCIgaHJlZmxhbmc9InJ1IiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IlJ1c3NpYW4iPiZuYnNwO3J1Jm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4vdHIvbmV3X2ZlYXR1cmVzXzJfMC5odG1sIiBocmVmbGFuZz0idHIiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iVPxya+dlIj4mbmJzcDt0ciZuYnNwOzwvYT48L3A+CjwvZGl2PgoKICA8cD5EaWVzZXMgRG9rdW1lbnQgYmVzY2hyZWlidCBlaW5pZ2UgZGVyIHdpY2h0aWdzdGVuIMRuZGVydW5nZW4KICAgICBkZXMgQXBhY2hlIEhUVFAgU2VydmVycyAyLjAgZ2VnZW78YmVyIGRlciBWZXJzaW9uIDEuMy48L3A+CjwvZGl2Pgo8ZGl2IGlkPSJxdWlja3ZpZXciPjx1bCBpZD0idG9jIj48bGk+PGltZyBhbHQ9IiIgc3JjPSIuL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2NvcmUiPkNvcmUtRXJ3ZWl0ZXJ1bmdlbjwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI21vZHVsZSI+TW9kdWwtRXJ3ZWl0ZXJ1bmdlbjwvYT48L2xpPgo8L3VsPjxoMz5TaWVoZSBhdWNoPC9oMz48dWwgY2xhc3M9InNlZWFsc28iPjxsaT48YSBocmVmPSJ1cGdyYWRpbmcuaHRtbCI+VXBncmFkZSB2b24gMS4zIGF1ZiAyLjA8L2E+PC9saT48bGk+PGEgaHJlZj0iI2NvbW1lbnRzX3NlY3Rpb24iPktvbW1lbnRhcmU8L2E+PC9saT48L3VsPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9ImNvcmUiIGlkPSJjb3JlIj5Db3JlLUVyd2VpdGVydW5nZW48L2E+PC9oMj4KICAgIAoKICAgIDxkbD4KICAgICAgPGR0PjxzdHJvbmc+VW5peC1UaHJlYWRpbmc8L3N0cm9uZz48L2R0PgoKICAgICAgPGRkPkF1ZiBVbml4LVN5c3RlbWVuIG1pdCBVbnRlcnN0/HR6dW5nIGb8cgogICAgICBQT1NJWC1UaHJlYWRzLCBrYW5uIGRlciBBcGFjaGUgaHR0cGQgamV0enQgaW4gZWluZW0gTXVsdGktUHJvY2VzcywKICAgICAgTXVsdGktVGhyZWFkZWQgSHlicmlkLU1vZGUgZ2VzdGFydGV0IHdlcmRlbi4gRGllcyB2ZXJiZXNzZXJ0IGRpZQogICAgICBTa2FsaWVyZuRoaWdrZWl0IGb8ciB2aWVsZSwgamVkb2NoIG5pY2h0IHVuYmVkaW5ndCBhbGxlCiAgICAgIEtvbmZpZ3VyYXRpb25lbi48L2RkPgoKICAgICAgPGR0PjxzdHJvbmc+TmV1ZXMgQnVpbGQtU3lzdGVtPC9zdHJvbmc+PC9kdD4KCiAgICAgIDxkZD5EYXMgQnVpbGQtU3lzdGVtIHd1cmRlIGtvbXBsZXR0IGF1ZiBkZXIgQmFzaXMgdm9uCiAgICAgIDxjb2RlPmF1dG9jb25mPC9jb2RlPiB1bmQgPGNvZGU+bGlidG9vbDwvY29kZT4gbmV1IGdlc2NocmllYmVuLgogICAgICBEYWR1cmNoIHdpcmQgZGFzIEtvbmZpZ3VyYXRpb25zc3lzdGVtIGRlcyBBcGFjaGUgaHR0cGQgZGVtIHZpZWxlcgogICAgICBhbmRlcmVyIFBhY2thZ2VzIORobmxpY2hlci48L2RkPgoKICAgICAgPGR0PjxzdHJvbmc+TXVsdGktUHJvdG9rb2xsLVVudGVyc3T8dHp1bmc8L3N0cm9uZz48L2R0PgoKICAgICAgPGRkPkRlciBBcGFjaGUgSFRUUCBTZXJ2ZXIgc3RlbGx0IGpldHp0IGRpZSBub3R3ZW5kaWdlbgogICAgICBHcnVuZGZ1bmt0aW9uYWxpdOR0ZW4gYmVyZWl0LCB1bSBtZWhyZXJlIFByb3Rva29sbGUKICAgICAgdW50ZXJzdPx0emVuIHVuZCB2ZXJhcmJlaXRlbiB6dSBr9m5uZW4uCiAgICAgIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4vbW9kL21vZF9lY2hvLmh0bWwiPm1vZF9lY2hvPC9hPjwvY29kZT4gd3VyZGUgaGllcmb8ciBhbHMgQmVpc3BpZWwKICAgICAgZ2VzY2hyaWViZW4uPC9kZD4KCiAgICAgIDxkdD48c3Ryb25nPkJlc3NlcmUgVW50ZXJzdPx0enVuZyB2b24KICAgICAgTmljaHQtVW5peC1QbGF0dGZvcm1lbjwvc3Ryb25nPjwvZHQ+CgogICAgICA8ZGQ+RGVyIEFwYWNoZSBIVFRQIFNlcnZlciAyLjAgaXN0IHNjaG5lbGxlciB1bmQgc3RhYmlsZXIgYXVmCiAgICAgIE5pY2h0LVVuaXgtUGxhdHRmb3JtZW4gd2llIEJlT1MsIE9TLzIgdW5kIFdpbmRvd3MuIE1pdCBkZXIKICAgICAgRWluZvxocnVuZyB2b24gUGxhdHRmb3JtLXNwZXppZmlzY2hlbiA8YSBocmVmPSJtcG0uaHRtbCI+TXVsdGktUHJvY2Vzc2luZyBNb2R1bGVuPC9hPiAoTVBNcykgdW5kIGRlciBBcGFjaGUKICAgICAgUG9ydGFibGUgUnVudGltZSAoQVBSKSwgc2luZCBkaWVzZSBQbGF0dGZvcm1lbiBqZXR6dCBpbiBpaHJlbQogICAgICBuYXRpdmVuIEFQSSBpbXBsZW1lbnRpZXJ0LCB3b2R1cmNoIGRpZSBWZXJ3ZW5kdW5nIGRlciBo5HVmaWcKICAgICAgZmVobGVyYmVoYWZ0ZXRlbiB1bmQgc2NobGVjaHQgZnVua3Rpb25pZXJlbmRlbgogICAgICBQT1NJWC1FbXVsYXRpb24tTGF5ZXIgdmVybWllZGVuIHdpcmQuPC9kZD4KCiAgICAgIDxkdD48c3Ryb25nPk5ldWVzIEFwYWNoZS1odHRwZCBBUEk8L3N0cm9uZz48L2R0PgoKICAgICAgPGRkPkRhcyBBUEkgZvxyIE1vZHVsZSBoYXQgc2ljaCBpbiAyLjAgc3RhcmsgdmVy5G5kZXJ0LgogICAgICBEaWUgbWVpc3RlbiBkZXIgU29ydGllcnVuZ3MtL1ByaW9yaXTkdHNwcm9ibGVtZSB2b24gTW9kdWxlbiBiZWkKICAgICAgMS4zIHNvbGx0ZW4gbnVuIHZlcnNjaHd1bmRlbiBzZWluLiBJbiAyLjAgd2lyZCBoaWVydm9uIHZpZWxlcwogICAgICBhdXRvbWF0aXNjaCBkdXJjaGdlZvxocnQuIERpZSBNb2R1bHNvcnRpZXJ1bmcgd2lyZCBqZXR6dAogICAgICD8YmVyIGVpbmVuIHByZS1ob29rIHZvcmdlbm9tbWVuLCB1bSBtZWhyIEZsZXhpYmlsaXTkdAogICAgICB6dSBiaWV0ZW4uIEF132VyZGVtIHd1cmRlbiBuZXVlIEFQSS1DYWxscyBoaW56dWdlZvxndCwKICAgICAgZGllIHp1c+R0emxpY2hlIE1vZHVsZuRoaWdrZWl0ZW4genVyIFZlcmb8Z3VuZyBzdGVsbGVuLAogICAgICBvaG5lIGRlbiBLZXJuIGRlcyBBcGFjaGUgSFRUUCBTZXJ2ZXJzIGFucGFzc2VuIHp1IG38c3Nlbi48L2RkPgoKICAgICAgPGR0PjxzdHJvbmc+SVB2Ni1VbnRlcnN0/HR6dW5nPC9zdHJvbmc+PC9kdD4KCiAgICAgIDxkZD5BdWYgU3lzdGVtZW4sIGJlaSBkZW5lbiBkaWUgenVncnVuZGVsaWVnZW5kZSBBcGFjaGUgUG9ydGFibGUKICAgICAgUnVudGltZS1CaWJsaW90aGVrIElQdjYgdW50ZXJzdPx0enQsIGJla29tbXQgZGVyIEFwYWNoZSBodHRwZAogICAgICBzdGFuZGFybeTfaWcgSVB2NiBMaXN0ZW5pbmcgU29ja2V0cy4gWnVz5HR6bGljaAogICAgICB1bnRlcnN0/HR6ZW4gZGllIEtvbmZpZ3VyYXRpb25zYW53ZWlzdW5nZW4gPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi9tb2QvbXBtX2NvbW1vbi5odG1sI2xpc3RlbiI+TGlzdGVuPC9hPjwvY29kZT4sIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4vbW9kL2NvcmUuaHRtbCNuYW1ldmlydHVhbGhvc3QiPk5hbWVWaXJ0dWFsSG9zdDwvYT48L2NvZGU+IHVuZCA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuL21vZC9jb3JlLmh0bWwjdmlydHVhbGhvc3QiPlZpcnR1YWxIb3N0PC9hPjwvY29kZT4gbnVtZXJpc2NoZSBJUHY2LUFkcmVzc2FuZ2FiZW4KICAgICAgKHouQi4sICI8Y29kZT5MaXN0ZW4gWzIwMDE6ZGI4OjoxXTo4MDgwPC9jb2RlPiIpLjwvZGQ+CgogICAgICA8ZHQ+PHN0cm9uZz5GaWx0ZXJ1bmc8L3N0cm9uZz48L2R0PgoKICAgICAgPGRkPkFwYWNoZS1odHRwZC1Nb2R1bGUga/ZubmVuIGpldHp0IGFscyBGaWx0ZXIgZW50d2lja2VsdAogICAgICB1bmQgenVyIEZpbHRlcnVuZyBkZXMgcmVpbi0gdW5kIHJhdXNnZWhlbmRlbiBEYXRlbnN0cm9tcyBkZXMKICAgICAgU2VydmVycyBlaW5nZXNldHp0IHdlcmRlbi4gSGllcmR1cmNoIGthbm4gYmVpc3BpZWxzd2Vpc2UgZGllCiAgICAgIEF1c2dhYmUgdm9uIENHSS1Ta3JpcHRlbiBkdXJjaCBkZW4gPGNvZGU+SU5DTFVERVM8L2NvZGU+LUZpbHRlcgogICAgICB2b24gPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi9tb2QvbW9kX2luY2x1ZGUuaHRtbCI+bW9kX2luY2x1ZGU8L2E+PC9jb2RlPiBiZWFyYmVpdGV0IHdlcmRlbiB1bmQgc28KICAgICAgU2VydmVyLVNpZGUgSW5jbHVkZS1BbndlaXN1bmdlbiBhdXNnZWb8aHJ0IHdlcmRlbi4gRGFzIE1vZHVsCiAgICAgIDxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4vbW9kL21vZF9leHRfZmlsdGVyLmh0bWwiPm1vZF9leHRfZmlsdGVyPC9hPjwvY29kZT4gZXJsYXVidCBleHRlcm5lbiBQcm9ncmFtbWVuIGFscwogICAgICBGaWx0ZXIgenUgYWdpZXJlbiwgaW4gZGVyIGdsZWljaGVuIFdlaXNlIHdpZSBDR0ktUHJvZ3JhbW1lIGFscwogICAgICBFaW5nYWJlIGRpZW5lbiBr9m5uZW4uPC9kZD4KCiAgICAgIDxkdD48c3Ryb25nPk1laHJzcHJhY2hpZ2UgRmVobGVybWVsZHVuZ2VuPC9zdHJvbmc+PC9kdD4KCiAgICAgIDxkZD5GZWhsZXJtZWxkdW5nZW4gZGllIGFuIGRlbiBCcm93c2VyIHJhdXNnZWhlbiwgc3RlaGVuIGpldHp0IGFscwogICAgICBTU0ktRG9rdW1lbnRlIGluIHZlcnNjaGllZGVuZW4gU3ByYWNoZW4genVyIFZlcmb8Z3VuZy4gU2llCiAgICAgIGv2bm5lbiBiZWkgQmVkYXJmIGR1cmNoIGRlbiBBZG1pbmlzdHJhdG9yIGFuZ2VwYXNzdCB3ZXJkZW4sCiAgICAgIHVtIGVpbiBlaW5oZWl0bGljaGVzIERlc2lnbiB6dSBlcnJlaWNoZW4uPC9kZD4KCiAgICAgIDxkdD48c3Ryb25nPlZlcmVpbmZhY2h0ZSBLb25maWd1cmF0aW9uPC9zdHJvbmc+PC9kdD4KCiAgICAgIDxkZD5WaWVsZSBkZXIgdmVyd2lycmVuZGVuIEtvbmZpZ3VyYXRpb25zYW53ZWlzdW5nZW4gd3VyZGVuIHZlcmVpbmZhY2h0LgogICAgICBEaWUgb2Z0IGb8ciBWZXJ3aXJydW5nIHNvcmdlbmRlbiA8Y29kZT5Qb3J0PC9jb2RlPi0gdW5kCiAgICAgIDxjb2RlPkJpbmRBZGRyZXNzPC9jb2RlPi1BbndlaXN1bmdlbiB3dXJkZW4gZW50ZmVybnQuCiAgICAgIEF1c3NjaGxpZd9saWNoIGRpZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuL21vZC9tcG1fY29tbW9uLmh0bWwjbGlzdGVuIj5MaXN0ZW48L2E+PC9jb2RlPi1BbndlaXN1bmcgd2lyZCBudW4genVtCiAgICAgIFNldHplbiB2b24gSVAtQWRkcmVzc2VuIHVuZCBQb3J0bnVtbWVybiBiZW51dHp0LgogICAgICBEZXIgU2VydmVybmFtZSB1bmQgZGllIFBvcnRudW1tZXIsIGRpZSBm/HIgV2VpdGVybGVpdHVuZ2VuIHVuZAogICAgICB6dXIgRXJrZW5udW5nIHZpcnR1ZWxsZXIgU2VydmVyIHZlcndlbmRldCB3ZXJkZW4sIHdlcmRlbiD8YmVyCiAgICAgIGRpZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuL21vZC9jb3JlLmh0bWwjc2VydmVybmFtZSI+U2VydmVyTmFtZTwvYT48L2NvZGU+LUFud2Vpc3VuZwogICAgICBrb25maWd1cmllcnQuPC9kZD4KCiAgICAgIDxkdD48c3Ryb25nPk5hdGl2ZSBXaW5kb3dzIE5UIFVuaWNvZGUtVW50ZXJzdPx0enVuZzwvc3Ryb25nPjwvZHQ+CgogICAgICA8ZGQ+RGVyIEFwYWNoZSBodHRwZCAyLjAgYXVmIFdpbmRvd3MgTlQgYmVudXR6dCBqZXR6dCB1dGYtOAogICAgICBm/HIgYWxsZSBEYXRlaW5hbWVuLUtvZGllcnVuZ2VuLiBEaWVzZSB3ZXJkZW4gZGlyZWt0IGF1ZiBkYXMKICAgICAgenVncnVuZGVsaWVnZW5kZSBVbmljb2RlLURhdGVpc3lzdGVtIGFiZ2ViaWxkZXQsIHdvZHVyY2gKICAgICAgTWVocnNwcmFjaC1VbnRlcnN0/HR6dW5nIGb8ciBhbGxlIFdpbmRvd3MgTlQtYmFzaWVydGVuCiAgICAgIEluc3RhbGxhdGlvbmVuLCBpbmtsdXNpdmUgV2luZG93cyAyMDAwIHVuZCBXaW5kb3dzIFhQLCB6dXIKICAgICAgVmVyZvxndW5nIGdlc3RlbGx0IHdpcmQuICA8ZW0+RGllc2UgVW50ZXJzdPx0enVuZyBpc3QKICAgICAgbmljaHQgYXVmIFdpbmRvd3MgOTUsIDk4IG9kZXIgTUUgdmVyZvxnYmFyLiBIaWVyIHdpcmQKICAgICAgd2VpdGVyaGluIGRpZSBqZXdlaWxzIGxva2FsZSBDb2RlcGFnZSBkZXMgUmVjaG5lcnMgZvxyIGRlbgogICAgICBadWdyaWZmIGF1ZiBkYXMgRGF0ZWlzeXN0ZW0gdmVyd2VuZGV0LjwvZW0+PC9kZD4KCiAgICAgIDxkdD5CaWJsaW90aGVrIGb8ciByZWd1bORyZSBBdXNkcvxja2UgYWt0dWFsaXNpZXJ0PC9kdD4KCiAgICAgIDxkZD5EZXIgQXBhY2hlIGh0dHBkIDIuMCBlbnRo5Gx0IGRpZSA8YSBocmVmPSJodHRwOi8vd3d3LnBjcmUub3JnLyI+IlBlcmwgQ29tcGF0aWJsZQogICAgICBSZWd1bGFyIEV4cHJlc3Npb24gTGlicmFyeSI8L2E+IChQQ1JFKS4KICAgICAgQmVpIGRlciBBdXN3ZXJ0dW5nIGFsbGVyIHJlZ3Vs5HJlbiBBdXNkcvxja2Ugd2lyZCBudW4KICAgICAgZGllIGxlaXN0dW5nc2bkaGlnZXJlIFN5bnRheCB2b24gUGVybCA1IHZlcndlbmRldC48L2RkPgoKICAgIDwvZGw+CiAgPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJtb2R1bGUiIGlkPSJtb2R1bGUiPk1vZHVsLUVyd2VpdGVydW5nZW48L2E+PC9oMj4KICAgIAoKICAgIDxkbD4KICAgICAgPGR0Pjxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4vbW9kL21vZF9zc2wuaHRtbCI+bW9kX3NzbDwvYT48L2NvZGU+PC9kdD4KCiAgICAgIDxkZD5OZXVlcyBNb2R1bCBpbiBBcGFjaGUgaHR0cGQgMi4wLiBEaWVzZXMgTW9kdWwgaXN0IGVpbgogICAgICBJbnRlcmZhY2UgenUgZGVuIHZvbiBPcGVuU1NMIGJlcmVpdGdlc3RlbGx0ZW4gU1NML1RMUwogICAgICBWZXJzY2hs/HNzZWx1bmdzLVByb3Rva29sbGVuLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi9tb2QvbW9kX2Rhdi5odG1sIj5tb2RfZGF2PC9hPjwvY29kZT48L2R0PgoKICAgICAgPGRkPk5ldWVzIE1vZHVsIGluIEFwYWNoZSBodHRwZCAyLjAuIERpZXNlcyBNb2R1bCBpbXBsZW1lbnRpZXJ0CiAgICAgIGRpZSBIVFRQIERpc3RyaWJ1dGVkIEF1dGhvcmluZyBhbmQgVmVyc2lvbmluZyAoREFWKSBTcGV6aWZpa2F0aW9uCiAgICAgIHp1ciBFcnpldWd1bmcgdW5kIFBmbGVnZSB2b24gV2ViLUluaGFsdGVuLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi9tb2QvbW9kX2RlZmxhdGUuaHRtbCI+bW9kX2RlZmxhdGU8L2E+PC9jb2RlPjwvZHQ+CgogICAgICA8ZGQ+TmV1ZXMgTW9kdWwgaW4gQXBhY2hlIGh0dHBkIDIuMC4gRGllc2VzIE1vZHVsIGVybGF1YnQgZXMKICAgICAgQnJvd3Nlcm4sIGRpZSBkaWVzIHVudGVyc3T8dHplbiwgZWluZSBLb21wcmltaWVydW5nIGRlcwogICAgICBJbmhhbHRlcyB2b3IgZGVyIEF1c2xpZWZlcnVuZyBhbnp1Zm9yZGVybiwgdW0gc28KICAgICAgTmV0endlcmstQmFuZGJyZWl0ZSB6dSBzcGFyZW4uPC9kZD4KCiAgICAgIDxkdD48Y29kZSBjbGFzcz0ibW9kdWxlIj5tb2RfYXV0aF9sZGFwPC9jb2RlPjwvZHQ+CgogICAgICA8ZGQ+TmV1ZXMgTW9kdWwgaW4gQXBhY2hlIGh0dHBkIDIuMC40MS4gRGllc2UgTW9kdWwKICAgICAgZXJt9mdsaWNodCBkaWUgVmVyd2VuZHVuZyBlaW5lciBMREFQLURhdGVuYmFuayB6dXIKICAgICAgU3BlaWNoZXJ1bmcgdm9uIEJlcmVjaHRpZ3VuZ3NkYXRlbiBm/HIgZGllCiAgICAgIEhUVFAtQmFzaWMtQXV0aGVudGljYXRpb24uICBFaW4gQmVnbGVpdG1vZHVsLAogICAgICA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuL21vZC9tb2RfbGRhcC5odG1sIj5tb2RfbGRhcDwvYT48L2NvZGU+LCBzdGVsbHQgZWluZW4gVmVyYmluZHVuZ3MtUG9vbCB1bmQgZGllCiAgICAgIFB1ZmZlcnVuZyB2b24gQWJmcmFnZWVyZ2Vibmlzc2VuIHp1ciBWZXJm/Gd1bmcuPC9kZD4KCiAgICAgIDxkdD48Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuL21vZC9tb2RfYXV0aF9kaWdlc3QuaHRtbCI+bW9kX2F1dGhfZGlnZXN0PC9hPjwvY29kZT48L2R0PgoKICAgICAgPGRkPlp1c+R0emxpY2hlIFVudGVyc3T8dHp1bmcgZvxyCiAgICAgIHByb3plc3P8YmVyZ3JlaWZlbmRlcyBTZXNzaW9uLUNhY2hpbmcgbWl0dGVscyBTaGFyZWQtTWVtb3J5LgogICAgICA8L2RkPgoKICAgICAgPGR0Pjxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4vbW9kL21vZF9jaGFyc2V0X2xpdGUuaHRtbCI+bW9kX2NoYXJzZXRfbGl0ZTwvYT48L2NvZGU+PC9kdD4KCiAgICAgIDxkZD5OZXVlcyBNb2R1bCBpbiBBcGFjaGUgaHR0cGQgMi4wLgogICAgICBEaWVzZXMgZXhwZXJpbWVudGVsbGUgTW9kdWwgZXJsYXVidCBaZWljaGVuc2F0ei3cYmVyc2V0enVuZ2VuIG9kZXIKICAgICAgLVVtc2NobPxzc2VsdW5nLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi9tb2QvbW9kX2ZpbGVfY2FjaGUuaHRtbCI+bW9kX2ZpbGVfY2FjaGU8L2E+PC9jb2RlPjwvZHQ+CgogICAgICA8ZGQ+TmV1ZXMgTW9kdWwgaW4gQXBhY2hlIGh0dHBkIDIuMC4gRGllc2VzIE1vZHVsIGJlaW5oYWx0ZXQgZGllCiAgICAgIEZ1bmt0aW9uYWxpdOR0IHZvbiA8Y29kZT5tb2RfbW1hcF9zdGF0aWM8L2NvZGU+IGF1cyBWZXJzaW9uCiAgICAgIDEuMyBkZXMgQXBhY2hlIEhUVFAgU2VydmVyIHp1evxnbGljaCBlaW5pZ2VyIHdlaXRlcmVyCiAgICAgIENhY2hpbmctRnVua3Rpb25lbi48L2RkPgoKICAgICAgPGR0Pjxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4vbW9kL21vZF9oZWFkZXJzLmh0bWwiPm1vZF9oZWFkZXJzPC9hPjwvY29kZT48L2R0PgoKICAgICAgPGRkPkRpZXNlcyBNb2R1bCBpc3QgaW4gQXBhY2hlIGh0dHBkIDIuMCBkZXV0bGljaCBmbGV4aWJsZXIKICAgICAgZ2V3b3JkZW4uIEVzIGthbm4gamV0enQgZGllIHZvbiA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuL21vZC9tb2RfcHJveHkuaHRtbCI+bW9kX3Byb3h5PC9hPjwvY29kZT4KICAgICAgZ2VudXR6dGVuIFJlcXVlc3QtSGVhZGVyIG1hbmlwdWxpZXJlbiB1bmQgZXMgaXN0IG32Z2xpY2gKICAgICAgUmVzcG9uc2UtSGVhZGVyIGF1ZiBCYXNpcyB2b24gZGVmaW5pZXJ0ZW4gQmVkaW5ndW5nZW4genUKICAgICAgdmVy5G5kZXJuLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi9tb2QvbW9kX3Byb3h5Lmh0bWwiPm1vZF9wcm94eTwvYT48L2NvZGU+PC9kdD4KCiAgICAgIDxkZD5EYXMgUHJveHkgTW9kdWwgd3VyZGUga29tcGxldHQgbmV1IGdlc2NocmllYmVuIHVtIGRpZQogICAgICBN9mdsaWNoa2VpdGVuIGRlciBuZXVlbiBGaWx0ZXItRnVua3Rpb25hbGl05HQKICAgICAgYXVzenVzY2j2cGZlbiB1bmQgdW0gZWluZW4genV2ZXJs5HNzaWdlbiBQcm94eSB6dSBoYWJlbiwgZGVyCiAgICAgIGRlbiBIVFRQLzEuMS1TcGV6aWZpa2F0aW9uZW4gZW50c3ByaWNodC4gTmV1ZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuL21vZC9tb2RfcHJveHkuaHRtbCNwcm94eSI+Jmx0O1Byb3h5Jmd0OzwvYT48L2NvZGU+CiAgICAgIC1Lb25maWd1cmF0aW9uc2Fic2Nobml0dGUgYmlldGVuIGVpbmUgYmVzc2VyIGxlc2JhcmUgKHVuZCBpbnRlcm4KICAgICAgc2NobmVsbGVyZSkgS29udHJvbGxlIGRlciB2ZXJtaXR0ZWx0ZW4gU2VpdGVuLgogICAgICBEaWUg/GJlcmxhZGVuZW4gPGNvZGU+Jmx0O0RpcmVjdG9yeQogICAgICAicHJveHk6Li4uIiZndDs8L2NvZGU+LUtvbmZpZ3VyYXRpb25lbiB3ZXJkZW4gbmljaHQKICAgICAgbWVociB1bnRlcnN0/HR6dC4gRGFzIE1vZHVsIGlzdCBudW4gaW4gbWVocmVyZSBNb2R1bGUKICAgICAgdW50ZXJ0ZWlsdCwgZGllIGpld2VpbHMgZWluIGJlc3RpbW10ZXMg3GJlcnRyYWd1bmdzcHJvdG9rb2xsCiAgICAgIHVudGVyc3T8dHplbiwgd2llIDxjb2RlPnByb3h5X2Nvbm5lY3Q8L2NvZGU+LAogICAgICA8Y29kZT5wcm94eV9mdHA8L2NvZGU+IHVuZCA8Y29kZT5wcm94eV9odHRwPC9jb2RlPi48L2RkPgoKICAgICAgPGR0Pjxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4vbW9kL21vZF9uZWdvdGlhdGlvbi5odG1sIj5tb2RfbmVnb3RpYXRpb248L2E+PC9jb2RlPjwvZHQ+CgogICAgICA8ZGQ+RGllIG5ldWUgS29uZmlndXJhdGlvbnNhbndlaXN1bmcgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi9tb2QvbW9kX25lZ290aWF0aW9uLmh0bWwjZm9yY2VsYW5ndWFnZXByaW9yaXR5Ij5Gb3JjZUxhbmd1YWdlUHJpb3JpdHk8L2E+PC9jb2RlPgogICAgICBrYW5uIGJlbnV0enQgd2VyZGVuLCB1bSBzaWNoZXJ6dXN0ZWxsZW4sIGRhc3MgZWluIENsaWVudCBhdWYgamVkZW4KICAgICAgRmFsbCBlaW4gZWluemVsbmVzIERva3VtZW50LCBhbnN0YXR0IGVpbmVyIE5PVCBBQ0NFUFRBQkxFLSBvZGVyCiAgICAgIE1VTFRJUExFIENIT0lDRVMtQW50d29ydCwgYmVrb21tdC4gWnVz5HR6bGljaCB3dXJkZW4gZGllCiAgICAgIE5lZ290aWF0aW9uLSB1bmQgTXVsdGl2aWV3LUFsZ29yaXRobWVuIGFuZ2VwYXNzdCB1bSBlaW5oZWl0bGljaGVyZQogICAgICBFcmdlYm5pc3NlIHp1IGxpZWZlcm4uIEF132VyZGVtIHdpcmQgZWluIG5ldWVzCiAgICAgIFR5cGUtTWFwLUZvcm1hdCBiZXJlaXRnZXN0ZWxsdCwgZGFzIERva3VtZW50ZW5pbmhhbHRlIGRpcmVrdAogICAgICBlbnRoYWx0ZW4ga2Fubi48L2RkPgoKICAgICAgPGR0Pjxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4vbW9kL21vZF9hdXRvaW5kZXguaHRtbCI+bW9kX2F1dG9pbmRleDwvYT48L2NvZGU+PC9kdD4KCiAgICAgIDxkZD5BdXRvbWF0aXNjaCBlcnpldWd0ZSBWZXJ6ZWljaG5pc2luZGl6ZXMga/ZubmVuIHp1ciBiZXNzZXJlbgogICAgICDcYmVyc2ljaHRsaWNoa2VpdCBkdXJjaCBIVE1MLVRhYmVsbGVuIGRhcmdlc3RlbGx0IHdlcmRlbi4KICAgICAgR2VuYXVlcmUgU29ydGllcnVuZ2VuLCB3aWUgU29ydGllcnVuZyBuYWNoIFZlcnNpb25zbnVtbWVyIHVuZAogICAgICBXaWxkY2FyZC1GaWx0ZXJ1bmcgZGVzIFZlcnplaWNobmlzaW5kaXplcyB3ZXJkZW4gdW50ZXJzdPx0enQuPC9kZD4KCiAgICAgIDxkdD48Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuL21vZC9tb2RfaW5jbHVkZS5odG1sIj5tb2RfaW5jbHVkZTwvYT48L2NvZGU+PC9kdD4KCiAgICAgIDxkZD5OZXVlIEFud2Vpc3VuZ2VuIGVybGF1YmVuIGVzLCBkaWUgU3RhbmRhcmQgU3RhcnQtIHVuZCBFbmR0YWdzIHZvbgogICAgICBTU0ktRWxlbWVudGVuIHp1IORuZGVybi4gWnVkZW0ga/ZubmVuIGRpZSBEZWZhdWx0LUZvcm1hdGUKICAgICAgZvxyIEZlaGxlcm1lbGR1bmdlbiB1bmQgWmVpdGFuZ2FiZW4gbnVuIGViZW5mYWxscyBpbiBkZXIKICAgICAgU2VydmVya29uZmlndXJhdGlvbiB2b3JnZW5vbW1lbiB3ZXJkZW4uIEF1ZiBkaWUgRXJnZWJuaXNzZSBkZXIKICAgICAgQXVzd2VydHVuZyB1bmQgR3J1cHBpZXJ1bmcgdm9uIHJlZ3Vs5HJlbiBBdXNkcvxja2VuIChqZXR6dAogICAgICBhdWYgQmFzaXMgZGVyIFBlcmwtU3ludGF4IGb8ciByZWd1bORyZSBBdXNkcvxja2UpIGthbm4KICAgICAg/GJlciBkaWUgPGNvZGUgY2xhc3M9Im1vZHVsZSI+PGEgaHJlZj0iLi9tb2QvbW9kX2luY2x1ZGUuaHRtbCI+bW9kX2luY2x1ZGU8L2E+PC9jb2RlPiBWYXJpYWJsZW4gPGNvZGU+JDA8L2NvZGU+CiAgICAgIGJpcyA8Y29kZT4kOTwvY29kZT4genVnZWdyaWZmZW4gd2VyZGVuLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGUgY2xhc3M9Im1vZHVsZSI+bW9kX2F1dGhfZGJtPC9jb2RlPjwvZHQ+CgogICAgICA8ZGQ+REJNLeRobmxpY2hlIERhdGVuYmFua2VuIHdlcmRlbiBqZXR6dCBkdXJjaCBkaWUKICAgICAgS29uZmlndXJhdGlvbnNhd2Vpc3VuZyA8Y29kZT5BdXRoREJNVHlwZTwvY29kZT4KICAgICAgdW50ZXJzdPx0enQuPC9kZD4KICAgIDwvZGw+CiAgPC9kaXY+PC9kaXY+CjxkaXYgY2xhc3M9ImJvdHRvbWxhbmciPgo8cD48c3Bhbj5WZXJm/GdiYXJlIFNwcmFjaGVuOiA8L3NwYW4+PGEgaHJlZj0iLi9kZS9uZXdfZmVhdHVyZXNfMl8wLmh0bWwiIHRpdGxlPSJEZXV0c2NoIj4mbmJzcDtkZSZuYnNwOzwvYT4gfAo8YSBocmVmPSIuL2VuL25ld19mZWF0dXJlc18yXzAuaHRtbCIgaHJlZmxhbmc9ImVuIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkVuZ2xpc2giPiZuYnNwO2VuJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4vZnIvbmV3X2ZlYXR1cmVzXzJfMC5odG1sIiBocmVmbGFuZz0iZnIiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iRnJhbudhaXMiPiZuYnNwO2ZyJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4vamEvbmV3X2ZlYXR1cmVzXzJfMC5odG1sIiBocmVmbGFuZz0iamEiIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iSmFwYW5lc2UiPiZuYnNwO2phJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4va28vbmV3X2ZlYXR1cmVzXzJfMC5odG1sIiBocmVmbGFuZz0ia28iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iS29yZWFuIj4mbmJzcDtrbyZuYnNwOzwvYT4gfAo8YSBocmVmPSIuL3B0LWJyL25ld19mZWF0dXJlc18yXzAuaHRtbCIgaHJlZmxhbmc9InB0LWJyIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IlBvcnR1Z3XqcyAoQnJhc2lsKSI+Jm5ic3A7cHQtYnImbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi9ydS9uZXdfZmVhdHVyZXNfMl8wLmh0bWwiIGhyZWZsYW5nPSJydSIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJSdXNzaWFuIj4mbmJzcDtydSZuYnNwOzwvYT4gfAo8YSBocmVmPSIuL3RyL25ld19mZWF0dXJlc18yXzAuaHRtbCIgaHJlZmxhbmc9InRyIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IlT8cmvnZSI+Jm5ic3A7dHImbmJzcDs8L2E+PC9wPgo8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBzcmM9Ii4vaW1hZ2VzL3VwLmdpZiIgYWx0PSJ0b3AiIC8+PC9hPjwvZGl2PjxkaXYgY2xhc3M9InNlY3Rpb24iPjxoMj48YSBpZD0iY29tbWVudHNfc2VjdGlvbiIgbmFtZT0iY29tbWVudHNfc2VjdGlvbiI+S29tbWVudGFyZTwvYT48L2gyPjxkaXYgY2xhc3M9Indhcm5pbmciPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPjxiciAvPlRoaXMgaXMgbm90IGEgUSZhbXA7QSBzZWN0aW9uLiBDb21tZW50cyBwbGFjZWQgaGVyZSBzaG91bGQgYmUgcG9pbnRlZCB0b3dhcmRzIHN1Z2dlc3Rpb25zIG9uIGltcHJvdmluZyB0aGUgZG9jdW1lbnRhdGlvbiBvciBzZXJ2ZXIsIGFuZCBtYXkgYmUgcmVtb3ZlZCBhZ2FpbiBieSBvdXIgbW9kZXJhdG9ycyBpZiB0aGV5IGFyZSBlaXRoZXIgaW1wbGVtZW50ZWQgb3IgY29uc2lkZXJlZCBpbnZhbGlkL29mZi10b3BpYy4gUXVlc3Rpb25zIG9uIGhvdyB0byBtYW5hZ2UgdGhlIEFwYWNoZSBIVFRQIFNlcnZlciBzaG91bGQgYmUgZGlyZWN0ZWQgYXQgZWl0aGVyIG91ciBJUkMgY2hhbm5lbCwgI2h0dHBkLCBvbiBGcmVlbm9kZSwgb3Igc2VudCB0byBvdXIgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvbGlzdHMuaHRtbCI+bWFpbGluZyBsaXN0czwvYT4uPC9kaXY+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tLy8tLT48IVtDREFUQVsvLz48IS0tCnZhciBjb21tZW50c19zaG9ydG5hbWUgPSAnaHR0cGQnOwp2YXIgY29tbWVudHNfaWRlbnRpZmllciA9ICdodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzL3RydW5rL25ld19mZWF0dXJlc18yXzAuaHRtbCc7CihmdW5jdGlvbih3LCBkKSB7CiAgICBpZiAody5sb2NhdGlvbi5ob3N0bmFtZS50b0xvd2VyQ2FzZSgpID09ICJodHRwZC5hcGFjaGUub3JnIikgewogICAgICAgIGQud3JpdGUoJzxkaXYgaWQ9ImNvbW1lbnRzX3RocmVhZCI+PFwvZGl2PicpOwogICAgICAgIHZhciBzID0gZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICBzLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKICAgICAgICBzLmFzeW5jID0gdHJ1ZTsKICAgICAgICBzLnNyYyA9ICdodHRwczovL2NvbW1lbnRzLmFwYWNoZS5vcmcvc2hvd19jb21tZW50cy5sdWE/c2l0ZT0nICsgY29tbWVudHNfc2hvcnRuYW1lICsgJyZwYWdlPScgKyBjb21tZW50c19pZGVudGlmaWVyOwogICAgICAgIChkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0gfHwgZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdKS5hcHBlbmRDaGlsZChzKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIGQud3JpdGUoJzxkaXYgaWQ9ImNvbW1lbnRzX3RocmVhZCI+Q29tbWVudHMgYXJlIGRpc2FibGVkIGZvciB0aGlzIHBhZ2UgYXQgdGhlIG1vbWVudC48XC9kaXY+Jyk7CiAgICB9Cn0pKHdpbmRvdywgZG9jdW1lbnQpOwovLy0tPjwhXV0+PC9zY3JpcHQ+PC9kaXY+PGRpdiBpZD0iZm9vdGVyIj4KPHAgY2xhc3M9ImFwYWNoZSI+Q29weXJpZ2h0IDIwMTcgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLjxiciAvPkxpemVuemllcnQgdW50ZXIgZGVyIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCI+QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wPC9hPi48L3A+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuL21vZC8iPk1vZHVsZTwvYT4gfCA8YSBocmVmPSIuL21vZC9xdWlja3JlZmVyZW5jZS5odG1sIj5EaXJla3RpdmVuPC9hPiB8IDxhIGhyZWY9Imh0dHA6Ly93aWtpLmFwYWNoZS5vcmcvaHR0cGQvRkFRIj5GQVE8L2E+IHwgPGEgaHJlZj0iLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FyPC9hPiB8IDxhIGhyZWY9Ii4vc2l0ZW1hcC5odG1sIj5TZWl0ZW5pbmRleDwvYT48L3A+PC9kaXY+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0vLy0tPjwhW0NEQVRBWy8vPjwhLS0KaWYgKHR5cGVvZihwcmV0dHlQcmludCkgIT09ICd1bmRlZmluZWQnKSB7CiAgICBwcmV0dHlQcmludCgpOwp9Ci8vLS0+PCFdXT48L3NjcmlwdD4KPC9ib2R5PjwvaHRtbD4=