PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJmciIgeG1sOmxhbmc9ImZyIj48aGVhZD4KPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgLz4KPCEtLQogICAgICAgIFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYCiAgICAgICAgICAgICAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBmcm9tIHhtbCBzb3VyY2U6IERPIE5PVCBFRElUCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgLS0+Cjx0aXRsZT5hcHhzIC0gVXRpbGl0YWlyZSBwb3VyIGxlcyBleHRlbnNpb25zIGQnQXBhY2hlIC0gU2VydmV1ciBBcGFjaGUgSFRUUCBWZXJzaW9uIDIuNDwvdGl0bGU+CjxsaW5rIGhyZWY9Ii4uL3N0eWxlL2Nzcy9tYW51YWwuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTWFpbiBzdHlsZXNoZWV0IiAvPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLWxvb3NlLTEwMHBjLmNzcyIgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgbWVkaWE9ImFsbCIgdHlwZT0idGV4dC9jc3MiIHRpdGxlPSJObyBTaWRlYmFyIC0gRGVmYXVsdCBmb250IHNpemUiIC8+CjxsaW5rIGhyZWY9Ii4uL3N0eWxlL2Nzcy9tYW51YWwtcHJpbnQuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJwcmludCIgdHlwZT0idGV4dC9jc3MiIC8+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vc3R5bGUvY3NzL3ByZXR0aWZ5LmNzcyIgLz4KPHNjcmlwdCBzcmM9Ii4uL3N0eWxlL3NjcmlwdHMvcHJldHRpZnkubWluLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgo8L3NjcmlwdD4KCjxsaW5rIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIgcmVsPSJzaG9ydGN1dCBpY29uIiAvPjwvaGVhZD4KPGJvZHkgaWQ9Im1hbnVhbC1wYWdlIj48ZGl2IGlkPSJwYWdlLWhlYWRlciI+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuLi9tb2QvIj5Nb2R1bGVzPC9hPiB8IDxhIGhyZWY9Ii4uL21vZC9kaXJlY3RpdmVzLmh0bWwiPkRpcmVjdGl2ZXM8L2E+IHwgPGEgaHJlZj0iaHR0cDovL3dpa2kuYXBhY2hlLm9yZy9odHRwZC9GQVEiPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FpcmU8L2E+IHwgPGEgaHJlZj0iLi4vc2l0ZW1hcC5odG1sIj5QbGFuIGR1IHNpdGU8L2E+PC9wPgo8cCBjbGFzcz0iYXBhY2hlIj5TZXJ2ZXVyIEFwYWNoZSBIVFRQIFZlcnNpb24gMi40PC9wPgo8aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9mZWF0aGVyLnBuZyIgLz48L2Rpdj4KPGRpdiBjbGFzcz0idXAiPjxhIGhyZWY9Ii4vIj48aW1nIHRpdGxlPSImbHQ7LSIgYWx0PSImbHQ7LSIgc3JjPSIuLi9pbWFnZXMvbGVmdC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGlkPSJwYXRoIj4KPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QXBhY2hlPC9hPiAmZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnLyI+U2VydmV1ciBIVFRQPC9hPiAmZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvIj5Eb2N1bWVudGF0aW9uPC9hPiAmZ3Q7IDxhIGhyZWY9Ii4uLyI+VmVyc2lvbiAyLjQ8L2E+ICZndDsgPGEgaHJlZj0iLi8iPlByb2dyYW1tZXM8L2E+PC9kaXY+PGRpdiBpZD0icGFnZS1jb250ZW50Ij48ZGl2IGlkPSJwcmVhbWJsZSI+PGgxPmFweHMgLSBVdGlsaXRhaXJlIHBvdXIgbGVzIGV4dGVuc2lvbnMgZCdBcGFjaGU8L2gxPgo8ZGl2IGNsYXNzPSJ0b3BsYW5nIj4KPHA+PHNwYW4+TGFuZ3VlcyBEaXNwb25pYmxlczogPC9zcGFuPjxhIGhyZWY9Ii4uL2VuL3Byb2dyYW1zL2FweHMuaHRtbCIgaHJlZmxhbmc9ImVuIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IkVuZ2xpc2giPiZuYnNwO2VuJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL2ZyL3Byb2dyYW1zL2FweHMuaHRtbCIgdGl0bGU9IkZyYW7nYWlzIj4mbmJzcDtmciZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9rby9wcm9ncmFtcy9hcHhzLmh0bWwiIGhyZWZsYW5nPSJrbyIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJLb3JlYW4iPiZuYnNwO2tvJm5ic3A7PC9hPiB8CjxhIGhyZWY9Ii4uL3RyL3Byb2dyYW1zL2FweHMuaHRtbCIgaHJlZmxhbmc9InRyIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IlT8cmvnZSI+Jm5ic3A7dHImbmJzcDs8L2E+PC9wPgo8L2Rpdj4KCiAgICA8cD48Y29kZT5hcHhzPC9jb2RlPiBlc3QgdW4gdXRpbGl0YWlyZSBwZXJtZXR0YW50IGRlIGNvbXBpbGVyIGV0CiAgICBkJ2luc3RhbGxlciBkZXMgbW9kdWxlcyBlbiB0YW50IHF1J2V4dGVuc2lvbnMgZHUgc2VydmV1ciBIVFRQCiAgICBBcGFjaGUuIEEgY2V0IGVmZmV0LCB1biBvYmpldCBkeW5hbWlxdWUgcGFydGFn6SAoRFNPKSBlc3QgY29tcGls6SDgCiAgICBwYXJ0aXIgZCd1biBvdSBwbHVzaWV1cnMgPHZhcj5maWNoaWVyczwvdmFyPiBzb3VyY2VzIG91IG9iamV0cyBldAogICAgcGV1dCDqdHJlIGNoYXJn6SBwZW5kYW50IGwnZXjpY3V0aW9uIGR1IHNlcnZldXIgQXBhY2hlIHZpYSBsYQogICAgZGlyZWN0aXZlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2Rfc28uaHRtbCNsb2FkbW9kdWxlIj5Mb2FkTW9kdWxlPC9hPjwvY29kZT4gZHUKICAgIG1vZHVsZSA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX3NvLmh0bWwiPm1vZF9zbzwvYT48L2NvZGU+LjwvcD4KCiAgICA8cD5Qb3VyIHBvdXZvaXIgdXRpbGlzZXIgY2UgbeljYW5pc21lIGQnZXh0ZW5zaW9ucywgdm90cmUKICAgIHBsYXRlLWZvcm1lIGRvaXQgc3VwcG9ydGVyIGxhIGZvbmN0aW9ubmFsaXTpIERTTywgZXQgdm90cmUgYmluYWlyZQogICAgPGNvZGUgY2xhc3M9InByb2dyYW0iPjxhIGhyZWY9Ii4uL3Byb2dyYW1zL2h0dHBkLmh0bWwiPmh0dHBkPC9hPjwvY29kZT4gQXBhY2hlIGRvaXQg6nRyZSBjb21waWzpIGF2ZWMgbGUgbW9kdWxlCiAgICA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX3NvLmh0bWwiPm1vZF9zbzwvYT48L2NvZGU+LiBTaSBjZSBuJ2VzdCBwYXMgbGUgY2FzLCBsJ3V0aWxpdGFpcmUKICAgIDxjb2RlPmFweHM8L2NvZGU+IHZvdXMgbGUgc2lnbmFsZXJhLiBWb3VzIHBvdXZleiBhdXNzaSB26XJpZmllcgogICAgdm91cy1t6m1lIGNlcyBwculyZXF1aXMgZW4gZXjpY3V0YW50IG1hbnVlbGxlbWVudCBsYSBjb21tYW5kZSA6PC9wPgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgICAkIGh0dHBkIC1sCiAgICA8L2NvZGU+PC9wPjwvZGl2PgoKICAgIDxwPkxlIG1vZHVsZSA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX3NvLmh0bWwiPm1vZF9zbzwvYT48L2NvZGU+IGRvaXQgZmFpcmUgcGFydGllIGRlIGxhIGxpc3RlCiAgICBkZXMgbW9kdWxlcyBhZmZpY2jpZS4gU2kgY2VzIHBy6XJlcXVpcyBzb250IHBy6XNlbnRzLCB2b3VzIHBvdXZlegogICAgZmFjaWxlbWVudCDpdGVuZHJlIGxlcyBmb25jdGlvbm5hbGl06XMgZGUgdm90cmUgc2VydmV1ciBBcGFjaGUgZW4KICAgIGluc3RhbGxhbnQgdm9zIHByb3ByZXMgbW9kdWxlcyDgIGwnYWlkZSBkZSBsJ3V0aWxpdGFpcmUKICAgIDxjb2RlPmFweHM8L2NvZGU+LCB2aWEgbGUgbeljYW5pc21lIERTTyA6PC9wPgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgICAkIGFweHMgLWkgLWEgLWMgbW9kX2Zvby5jPGJyIC8+CiAgICAgIGdjYyAtZnBpYyAtRFNIQVJFRF9NT0RVTEUgLUkvY2hlbWluL3ZlcnMvYXBhY2hlL2luY2x1ZGUgLWMgbW9kX2Zvby5jPGJyIC8+CiAgICAgIGxkIC1Cc2hhcmVhYmxlIC1vIG1vZF9mb28uc28gbW9kX2Zvby5vPGJyIC8+CiAgICAgIGNwIG1vZF9mb28uc28gL2NoZW1pbi92ZXJzL2FwYWNoZS9tb2R1bGVzL21vZF9mb28uc288YnIgLz4KICAgICAgY2htb2QgNzU1IC9jaGVtaW4vdmVycy9hcGFjaGUvbW9kdWxlcy9tb2RfZm9vLnNvPGJyIC8+CiAgICAgIFthY3RpdmF0aW9uIGR1IG1vZHVsZSBgZm9vJyBkYW5zIC9jaGVtaW4vdmVycy9hcGFjaGUvZXRjL2h0dHBkLmNvbmZdPGJyIC8+CiAgICAgICQgYXBhY2hlY3RsIHJlc3RhcnQ8YnIgLz4KICAgICAgL2NoZW1pbi92ZXJzL2FwYWNoZS9zYmluL2FwYWNoZWN0bCByZXN0YXJ0OiBodHRwZCBub3QgcnVubmluZywgdHJ5aW5nIHRvIHN0YXJ0PGJyIC8+CiAgICAgIFtUdWUgTWFyIDMxIDExOjI3OjU1IDE5OThdIFtkZWJ1Z10gbW9kX3NvLmMoMzAzKTogbG9hZGVkIG1vZHVsZSBmb29fbW9kdWxlPGJyIC8+CiAgICAgIC9jaGVtaW4vdmVycy9hcGFjaGUvc2Jpbi9hcGFjaGVjdGwgcmVzdGFydDogaHR0cGQgc3RhcnRlZDxiciAvPgogICAgICAkIF8KICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+TGVzIGFyZ3VtZW50cyA8dmFyPmZpY2hpZXJzPC92YXI+IHBldXZlbnQgY29ycmVzcG9uZHJlIOAgdW4KICAgIGZpY2hpZXIgc291cmNlIEMgKC5jKSwgdW4gZmljaGllciBvYmpldCAoLm8pIG91IG3qbWUgdW5lIGFyY2hpdmUgZGUKICAgIGJpYmxpb3Ro6HF1ZXMgKC5hKS4gTCd1dGlsaXRhaXJlIDxjb2RlPmFweHM8L2NvZGU+IHJlY29ubmHudAogICAgYXV0b21hdGlxdWVtZW50IGNlcyBleHRlbnNpb25zIGV0IHV0aWxpc2UgYXV0b21hdGlxdWVtZW50IGxlcwogICAgZmljaGllcnMgc291cmNlIEMgcG91ciBsYSBjb21waWxhdGlvbiwgZXQgbGVzIGZpY2hpZXJzIG9iamV0cyBldAogICAgYXJjaGl2ZXMgcG91ciBsJ+lkaXRpb24gZGUgbGllbnMuIENlcGVuZGFudCwgc2kgdm91cyB1dGlsaXNleiBkZXMKICAgIGZpY2hpZXJzIG9iamV0cyBwculjb21waWzpcywgYXNzdXJlei12b3VzIHF1ZSBsZXVyIGNvZGUgc29pdAogICAgaW5k6XBlbmRhbnQgZGUgbGEgcG9zaXRpb24gKFBJQyksIGFmaW4gZGUgcG91dm9pciBsZXMgdXRpbGlzZXIgYXZlYwogICAgdW4gb2JqZXQgcGFydGFn6SBjaGFyZ+kgZHluYW1pcXVlbWVudC4gQXZlYyBHQ0MsIHBhciBleGVtcGxlLCBpbAogICAgdm91cyBzdWZmaXQgZGUgdG91am91cnMgdXRpbGlzZXIgbCdvcHRpb24gZGUgY29tcGlsYXRpb24KICAgIDxjb2RlPi1mcGljPC9jb2RlPi4gUG91ciBsZXMgYXV0cmVzIGNvbXBpbGF0ZXVycyBDLCBjb25zdWx0ZXogbGV1cgogICAgcGFnZSBkZSBtYW51ZWwsIG91IHbpcmlmaWV6IGxlcyBkcmFwZWF1eCBxdSc8Y29kZT5hcHhzPC9jb2RlPgogICAgdXRpbGlzZSBwb3VyIGNvbXBpbGVyIGxlcyBmaWNoaWVycyBvYmpldHMuPC9wPgoKICAgIDxwPlBvdXIgcGx1cyBkZSBk6XRhaWxzIOAgcHJvcG9zIGR1IHN1cHBvcnQgRFNPIGRhbnMgQXBhY2hlLCBsaXJlIGxhCiAgICBkb2N1bWVudGF0aW9uIGR1IG1vZHVsZSA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX3NvLmh0bWwiPm1vZF9zbzwvYT48L2NvZGU+LCBvdSBt6m1lLCBjb25zdWx0ZXoKICAgIGxlIGZpY2hpZXIgc291cmNlIDxjb2RlPnNyYy9tb2R1bGVzL3N0YW5kYXJkL21vZF9zby5jPC9jb2RlPi48L3A+CjwvZGl2Pgo8ZGl2IGlkPSJxdWlja3ZpZXciPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvZm91bmRhdGlvbi9jb250cmlidXRpbmcuaHRtbCIgY2xhc3M9ImJhZGdlIj48aW1nIHNyYz0iaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9pbWFnZXMvU3VwcG9ydEFwYWNoZS1zbWFsbC5wbmciIGFsdD0iU3VwcG9ydCBBcGFjaGUhIiAvPjwvYT48dWwgaWQ9InRvYyI+PGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjc3lub3BzaXMiPlN5bnRheGU8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjb3B0aW9ucyI+T3B0aW9uczwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNleGFtcGxlcyI+RXhlbXBsZXM8L2E+PC9saT4KPC91bD48aDM+Vm9pciBhdXNzaTwvaDM+PHVsIGNsYXNzPSJzZWVhbHNvIj48bGk+PGNvZGUgY2xhc3M9InByb2dyYW0iPjxhIGhyZWY9Ii4uL3Byb2dyYW1zL2FwYWNoZWN0bC5odG1sIj5hcGFjaGVjdGw8L2E+PC9jb2RlPjwvbGk+PGxpPjxjb2RlIGNsYXNzPSJwcm9ncmFtIj48YSBocmVmPSIuLi9wcm9ncmFtcy9odHRwZC5odG1sIj5odHRwZDwvYT48L2NvZGU+PC9saT48bGk+PGEgaHJlZj0iI2NvbW1lbnRzX3NlY3Rpb24iPkNvbW1lbnRhaXJlczwvYT48L2xpPjwvdWw+PC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9InN5bm9wc2lzIiBpZD0ic3lub3BzaXMiPlN5bnRheGU8L2E+PC9oMj4KICAgIDxwPjxjb2RlPjxzdHJvbmc+YXB4czwvc3Ryb25nPiAtPHN0cm9uZz5nPC9zdHJvbmc+CiAgICBbIC08c3Ryb25nPlM8L3N0cm9uZz4gPHZhcj5ub208L3Zhcj49PHZhcj52YWxldXI8L3Zhcj4gXQogICAgLTxzdHJvbmc+bjwvc3Ryb25nPiA8dmFyPm5vbS1tb2R1bGU8L3Zhcj48L2NvZGU+PC9wPgoKICAgIDxwPjxjb2RlPjxzdHJvbmc+YXB4czwvc3Ryb25nPiAtPHN0cm9uZz5xPC9zdHJvbmc+CiAgICBbIC08c3Ryb25nPnY8L3N0cm9uZz4gXQogICAgWyAtPHN0cm9uZz5TPC9zdHJvbmc+IDx2YXI+bm9tPC92YXI+PTx2YXI+dmFsZXVyPC92YXI+IF0KICAgIDx2YXI+cmVxdep0ZTwvdmFyPiAuLi48L2NvZGU+PC9wPgoKICAgIDxwPjxjb2RlPjxzdHJvbmc+YXB4czwvc3Ryb25nPiAtPHN0cm9uZz5jPC9zdHJvbmc+CiAgICBbIC08c3Ryb25nPlM8L3N0cm9uZz4gPHZhcj5ub208L3Zhcj49PHZhcj52YWxldXI8L3Zhcj4gXQogICAgWyAtPHN0cm9uZz5vPC9zdHJvbmc+IDx2YXI+ZmljaGllci1kc288L3Zhcj4gXQogICAgWyAtPHN0cm9uZz5JPC9zdHJvbmc+IDx2YXI+culwZXJ0b2lyZS1pbmM8L3Zhcj4gXQogICAgWyAtPHN0cm9uZz5EPC9zdHJvbmc+IDx2YXI+bm9tPC92YXI+PTx2YXI+dmFsZXVyPC92YXI+IF0KICAgIFsgLTxzdHJvbmc+TDwvc3Ryb25nPiA8dmFyPnLpcGVydG9pcmUtbGliPC92YXI+IF0KICAgIFsgLTxzdHJvbmc+bDwvc3Ryb25nPiA8dmFyPm5vbS1iaWJsaW90aOhxdWU8L3Zhcj4gXQogICAgWyAtPHN0cm9uZz5XYyw8L3N0cm9uZz48dmFyPm9wdGlvbnMtY29tcGlsYXRpb248L3Zhcj4gXQogICAgWyAtPHN0cm9uZz5XbCw8L3N0cm9uZz48dmFyPm9wdGlvbnMtZWRpdGlvbi1saWVuczwvdmFyPiBdCiAgICA8dmFyPmZpY2hpZXJzPC92YXI+IC4uLjwvY29kZT48L3A+CgogICAgPHA+PGNvZGU+PHN0cm9uZz5hcHhzPC9zdHJvbmc+IC08c3Ryb25nPmk8L3N0cm9uZz4KICAgIFsgLTxzdHJvbmc+Uzwvc3Ryb25nPiA8dmFyPm5vbTwvdmFyPj08dmFyPnZhbGV1cjwvdmFyPiBdCiAgICBbIC08c3Ryb25nPm48L3N0cm9uZz4gPHZhcj5ub20tbW9kdWxlPC92YXI+IF0KICAgIFsgLTxzdHJvbmc+YTwvc3Ryb25nPiBdCiAgICBbIC08c3Ryb25nPkE8L3N0cm9uZz4gXQogICAgPHZhcj5maWNoaWVyLWRzbzwvdmFyPiAuLi48L2NvZGU+PC9wPgoKICAgIDxwPjxjb2RlPjxzdHJvbmc+YXB4czwvc3Ryb25nPiAtPHN0cm9uZz5lPC9zdHJvbmc+CiAgICBbIC08c3Ryb25nPlM8L3N0cm9uZz4gPHZhcj5ub208L3Zhcj49PHZhcj52YWxldXI8L3Zhcj4gXQogICAgWyAtPHN0cm9uZz5uPC9zdHJvbmc+IDx2YXI+bm9tLW1vZHVsZTwvdmFyPiBdCiAgICBbIC08c3Ryb25nPmE8L3N0cm9uZz4gXQogICAgWyAtPHN0cm9uZz5BPC9zdHJvbmc+IF0KICAgIDx2YXI+ZmljaGllci1kc288L3Zhcj4gLi4uPC9jb2RlPjwvcD4KPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0ib3B0aW9ucyIgaWQ9Im9wdGlvbnMiPk9wdGlvbnM8L2E+PC9oMj4KICAgIDxoMz48YSBuYW1lPSJvcHRpb25zLmNvbW1vbiIgaWQ9Im9wdGlvbnMuY29tbW9uIj5PcHRpb25zIGNvdXJhbnRlczwvYT48L2gzPgogICAgICA8ZGw+CiAgICAgIDxkdD48Y29kZT4tbiA8dmFyPm5vbS1tb2R1bGU8L3Zhcj48L2NvZGU+PC9kdD4KICAgICAgPGRkPkTpZmluaXQgZXhwbGljaXRlbWVudCBsZSBub20gZHUgbW9kdWxlIHBvdXIgbGVzIG9wdGlvbnMKICAgICAgPGNvZGU+LWk8L2NvZGU+IChpbnN0YWxsKSBldCA8Y29kZT4tZzwvY29kZT4gKGfpbulyYXRpb24gZGUKICAgICAgbW9k6GxlcykuIFV0aWxpc2V6IGNldHRlIG9wdGlvbiBwb3VyIHNw6WNpZmllciBkZSBtYW5p6HJlCiAgICAgIGV4cGxpY2l0ZSBsZSBub20gZHUgbW9kdWxlLiBQb3VyIGwnb3B0aW9uIDxjb2RlPi1nPC9jb2RlPiwgY2V0dGUKICAgICAgb3B0aW9uIGVzdCBu6WNlc3NhaXJlIDsgcG91ciBsJ29wdGlvbiA8Y29kZT4taTwvY29kZT4sCiAgICAgIGwndXRpbGl0YWlyZSA8Y29kZT5hcHhzPC9jb2RlPiB0ZW50ZSBkZSBk6XRlcm1pbmVyIGxlIG5vbSBkdQogICAgICBtb2R1bGUg4CBwYXJ0aXIgZGVzIHNvdXJjZXMsIG91ICjgIGTpZmF1dCkgZW4gbGUgZOlkdWlzYW50IGR1IG5vbQogICAgICBkZSBmaWNoaWVyLjwvZGQ+CiAgICAgIDwvZGw+CiAgICAKCiAgICA8aDM+PGEgbmFtZT0ib3B0aW9ucy5xdWVyeSIgaWQ9Im9wdGlvbnMucXVlcnkiPk9wdGlvbnMgZGUgcmVxdep0ZTwvYT48L2gzPgogICAgICA8ZGw+CiAgICAgIDxkdD48Y29kZT4tcTwvY29kZT48L2R0PgogICAgICA8ZGQ+RWZmZWN0dWUgdW5lIHJlcXXqdGUg4CBwcm9wb3MgZGVzIHZhcmlhYmxlcyBldCBkZQogICAgICBsJ2Vudmlyb25uZW1lbnQgdXRpbGlz6XMgcG91ciBjb21waWxlciA8Y29kZT5odHRwZDwvY29kZT4uCiAgICAgIExvcnNxdSdlbGxlIGVzdCBpbnZvcXXpZSBzYW5zIHBhcmFt6HRyZSA8dmFyPnJlcXXqdGU8L3Zhcj4sIGNldHRlCiAgICAgIG9wdGlvbiBhZmZpY2hlIHRvdXRlcyBsZXMgdmFyaWFibGVzIGNvbm51ZXMsIGFpbnNpIHF1ZSBsZXVycwogICAgICB2YWxldXJzLiBMZSBwYXJhbeh0cmUgb3B0aW9ubmVsIDxjb2RlPi12PC9jb2RlPiBmb3JtYXRlIGxhIGxpc3RlCiAgICAgIGFmZmljaOllLgoKICAgICAgPHA+VXRpbGlzZXogY2V0dGUgb3B0aW9uIHBvdXIgZOl0ZXJtaW5lciBtYW51ZWxsZW1lbnQgbGVzIG9wdGlvbnMKICAgICAgdXRpbGlz6WVzIHBvdXIgY29tcGlsZXIgbGUgYmluYWlyZSA8Y29kZT5odHRwZDwvY29kZT4gcXVpIGNoYXJnZXJhCiAgICAgIHZvdHJlIG1vZHVsZS4gQWpvdXRleiBwYXIgZXhlbXBsZTwvcD4KICAgICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgICAgSU5DPS1JYGFweHMgLXEgSU5DTFVERURJUmAKICAgICAgPC9jb2RlPjwvcD48L2Rpdj4KCiAgICAgIDxwPmRhbnMgdm9zIHByb3ByZXMgTWFrZWZpbGVzIHNpIHZvdXMgZGV2ZXogYWNj6WRlciBtYW51ZWxsZW1lbnQKICAgICAgYXV4IGZpY2hpZXJzIGQnZW4tdOp0ZXMgQyBkJ0FwYWNoZS48L3A+PC9kZD4KICAgICAgPC9kbD4KICAgIAoKICAgIDxoMz48YSBuYW1lPSJvcHRpb25zLmNvbmYiIGlkPSJvcHRpb25zLmNvbmYiPk9wdGlvbnMgZGUgY29uZmlndXJhdGlvbjwvYT48L2gzPgogICAgICA8ZGw+CiAgICAgIDxkdD48Y29kZT4tUyA8dmFyPm5vbTwvdmFyPj08dmFyPnZhbGV1cjwvdmFyPjwvY29kZT48L2R0PgogICAgICA8ZGQ+Q2V0dGUgb3B0aW9uIHBlcm1ldCBkZSBtb2RpZmllciBsYSBjb25maWd1cmF0aW9uIGQnYXB4cwogICAgICBk6WNyaXRlIGNpLWRlc3N1cy48L2RkPgogICAgICA8L2RsPgogICAgCgogICAgPGgzPjxhIG5hbWU9Im9wdGlvbnMudGVtcGxhdGUiIGlkPSJvcHRpb25zLnRlbXBsYXRlIj5PcHRpb24gZGUgZ+lu6XJhdGlvbiBkZXMKICAgIG1vZOhsZXM8L2E+PC9oMz4KICAgICAgPGRsPgogICAgICA8ZHQ+PGNvZGU+LWc8L2NvZGU+PC9kdD4KICAgICAgPGRkPkNldHRlIG9wdGlvbiBwZXJtZXQgZGUgZ+lu6XJlciB1biBzb3VzLXLpcGVydG9pcmUKICAgICAgPHZhcj5ub208L3Zhcj4gKHZvaXIgb3B0aW9uIDxjb2RlPi1uPC9jb2RlPikgY29udGVuYW50IGRldXgKICAgICAgZmljaGllcnMgOiBsZSBwcmVtaWVyIGZpY2hpZXIgZXN0IHVuIGV4ZW1wbGUgZGUgZmljaGllciBzb3VyY2UgZGUKICAgICAgbW9kdWxlIG5vbW3pIDxjb2RlPm1vZF88dmFyPm5vbTwvdmFyPi5jPC9jb2RlPiBxdWUgbCdvbiBwZXV0CiAgICAgIHV0aWxpc2VyIGNvbW1lIG1vZOhsZSBwb3VyIGNy6WVyIHNlcyBwcm9wcmVzIG1vZHVsZXMsIG91IGNvbW1lCiAgICAgIHBvaW50IGRlIGTpcGFydCBwb3VyIHNlIGZhbWlsaWFyaXNlciBhdmVjIGxlIG3pY2FuaXNtZSBhcHhzIDsgbGUKICAgICAgc2Vjb25kIGZpY2hpZXIgZXN0IGxlIDxjb2RlPk1ha2VmaWxlPC9jb2RlPiBjb3JyZXNwb25kYW50CiAgICAgIGZhY2lsaXRhbnQgbGEgY29tcGlsYXRpb24gZXQgbCdpbnN0YWxsYXRpb24gZGUgY2UgbW9kdWxlLjwvZGQ+CiAgICAgIDwvZGw+CiAgICAKICAgIDxoMz48YSBuYW1lPSJvcHRpb25zLmRzbyIgaWQ9Im9wdGlvbnMuZHNvIj5PcHRpb25zIGRlIGNvbXBpbGF0aW9uIERTTzwvYT48L2gzPgogICAgICA8ZGw+CiAgICAgIDxkdD48Y29kZT4tYzwvY29kZT48L2R0PgogICAgICA8ZGQ+Q2V0dGUgb3B0aW9uIGluZGlxdWUgdW5lIG9w6XJhdGlvbiBkZSBjb21waWxhdGlvbi4gVG91dAogICAgICBkJ2Fib3JkLCBsZXMgZmljaGllcnMgc291cmNlcyAoLmMpIHNw6WNpZmnpcyBwYXIKICAgICAgPHZhcj5maWNoaWVyczwvdmFyPiBzb250IGNvbXBpbOlzIGVuIGZpY2hpZXJzIG9iamV0cwogICAgICBjb3JyZXNwb25kYW50cyAoLm8pLCBwdWlzIHVuIG9iamV0IGR5bmFtaXF1ZW1lbnQgcGFydGFn6QogICAgICA8dmFyPmZpY2hpZXItZHNvPC92YXI+IGVzdCBjb21waWzpIHZpYSB1bmUg6WRpdGlvbiBkZSBsaWVucyBkZSBjZXMKICAgICAgZmljaGllcnMgb2JqZXRzIGF2ZWMgbGVzIGF1dHJlcyBmaWNoaWVycyBvYmpldHMgKC5vIGFuZCAuYSkKICAgICAgc3DpY2lmaelzIHBhciA8dmFyPmZpY2hpZXJzPC92YXI+LiBTaSBsJ29wdGlvbiA8Y29kZT4tbzwvY29kZT4KICAgICAgbidlc3QgcGFzIHNw6WNpZmnpZSwgbGUgbm9tIGR1IGZpY2hpZXIgculzdWx0YW50IGVzdCBk6WR1aXQgZHUKICAgICAgcHJlbWllciBub20gZGUgZmljaGllciBzcOljaWZp6SBwYXIgPHZhcj5maWNoaWVyczwvdmFyPiwgZXQgYWluc2kKICAgICAgcHJlbmQgZW4gZ+lu6XJhbCBwb3VyIHZhbGV1ciBwYXIgZOlmYXV0CiAgICAgIDxjb2RlPm1vZF88dmFyPm5vbTwvdmFyPi5zbzwvY29kZT4uPC9kZD4KCiAgICAgIDxkdD48Y29kZT4tbyA8dmFyPmZpY2hpZXItZHNvPC92YXI+PC9jb2RlPjwvZHQ+CiAgICAgIDxkZD5TcOljaWZpZSBkZSBtYW5p6HJlIGV4cGxpY2l0ZSBsZSBub20gZGUgZmljaGllciBkZSBsJ29iamV0CiAgICAgIHBhcnRhZ+kgZHluYW1pcXVlbWVudCBjcunpLiBTYW5zIGNldHRlIG9wdGlvbiwgZXQgc2kgbGUgbm9tIG5lCiAgICAgIHBldXQgcGFzIOp0cmUgZOlkdWl0IGRlIGxhIGxpc3RlIDx2YXI+ZmljaGllcnM8L3Zhcj4sIGMnZXN0IGxlIG5vbQogICAgICBwYXIgZOlmYXV0IDxjb2RlPm1vZF91bmtub3duLnNvPC9jb2RlPiBxdWkgc2VyYSB1dGlsaXPpLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+LUQgPHZhcj5ub208L3Zhcj49PHZhcj52YWxldXI8L3Zhcj48L2NvZGU+PC9kdD4KICAgICAgPGRkPkNldHRlIG9wdGlvbiBlc3QgdHJhbnNtaXNlIGRpcmVjdGVtZW50IOAgbGEgY29tbWFuZGUgZGUKICAgICAgY29tcGlsYXRpb24uIFZvdXMgcG91dmV6IGwndXRpbGlzZXIgcG91ciBham91dGVyIHZvcyBwcm9wcmVzCiAgICAgIGTpZmluaXRpb25zIGF1IHByb2Nlc3N1cyBkZSBjb21waWxhdGlvbi4gPC9kZD4KCiAgICAgIDxkdD48Y29kZT4tSSA8dmFyPnLpcGVydG9pcmUtaW5jPC92YXI+PC9jb2RlPjwvZHQ+CiAgICAgIDxkZD5DZXR0ZSBvcHRpb24gZXN0IHRyYW5zbWlzZSBkaXJlY3RlbWVudCDgIGxhIGNvbW1hbmRlIGRlCiAgICAgIGNvbXBpbGF0aW9uLiBWb3VzIHBvdXZleiBsJ3V0aWxpc2VyIHBvdXIgYWpvdXRlciB2b3MgcHJvcHJlcwogICAgICBjaGVtaW5zIGRlIHJlY2hlcmNoZSBkZXMgculwZXJ0b2lyZXMgPGNvZGU+aW5jbHVkZTwvY29kZT4gYXUgcHJvY2Vzc3VzIGRlCiAgICAgIGNvbXBpbGF0aW9uLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+LUwgPHZhcj5y6XBlcnRvaXJlLWxpYjwvdmFyPjwvY29kZT48L2R0PgogICAgICA8ZGQ+Q2V0dGUgb3B0aW9uIGVzdCB0cmFuc21pc2UgZGlyZWN0ZW1lbnQg4CBsYSBjb21tYW5kZSBkJ+lkaXRpb24KICAgICAgZGUgbGllbnMuIFZvdXMgcG91dmV6IGwndXRpbGlzZXIgcG91ciBham91dGVyIHZvcyBwcm9wcmVzCiAgICAgIGNoZW1pbnMgZGUgcmVjaGVyY2hlIGRlcyBy6XBlcnRvaXJlcyBkZSBiaWJsaW90aOhxdWVzIGF1IHByb2Nlc3N1cwogICAgICBkZSBjb21waWxhdGlvbi48L2RkPgoKICAgICAgPGR0Pjxjb2RlPi1sIDx2YXI+bm9tLWJpYmxpb3Ro6HF1ZTwvdmFyPjwvY29kZT48L2R0PgogICAgICA8ZGQ+Q2V0dGUgb3B0aW9uIGVzdCB0cmFuc21pc2UgZGlyZWN0ZW1lbnQg4CBsYSBjb21tYW5kZSBkJ+lkaXRpb24KICAgICAgZGUgbGllbnMuIFZvdXMgcG91dmV6IGwndXRpbGlzZXIgcG91ciBham91dGVyIHZvcyBwcm9wcmVzCiAgICAgIGJpYmxpb3Ro6HF1ZXMg4CByZWNoZXJjaGVyIGF1IHByb2Nlc3N1cyBkZSBjb21waWxhdGlvbi48L2RkPgoKICAgICAgPGR0Pjxjb2RlPi1XYyw8dmFyPm9wdGlvbnMtY29tcGlsYXRpb248L3Zhcj48L2NvZGU+PC9kdD4KICAgICAgPGRkPkNldHRlIG9wdGlvbiB0cmFuc21ldCBsZXMgPHZhcj5vcHRpb25zLWNvbXBpbGF0aW9uPC92YXI+IGVuCiAgICAgIHRhbnQgcXUnb3B0aW9ucyBzdXBwbOltZW50YWlyZXMg4CBsYSBjb21tYW5kZSA8Y29kZT5saWJ0b29sCiAgICAgIC0tbW9kZT1jb21waWxlPC9jb2RlPi4gVm91cyBwb3V2ZXogbCd1dGlsaXNlciBwb3VyIGFqb3V0ZXIgZGVzCiAgICAgIG9wdGlvbnMgbG9jYWxlcyBzcOljaWZpcXVlcyBhdSBjb21waWxhdGV1ci48L2RkPgoKICAgICAgPGR0Pjxjb2RlPi1XbCw8dmFyPm9wdGlvbnMtZWRpdGlvbi1saWVuczwvdmFyPjwvY29kZT48L2R0PgogICAgICA8ZGQ+Q2V0dGUgb3B0aW9uIHRyYW5zbWV0IGxlcyA8dmFyPm9wdGlvbnMtZWRpdGlvbi1saWVuczwvdmFyPiBlbgogICAgICB0YW50IHF1J29wdGlvbnMgc3VwcGzpbWVudGFpcmVzIOAgbGEgY29tbWFuZGUgPGNvZGU+bGlidG9vbAogICAgICAtLW1vZGU9bGluazwvY29kZT4uIFZvdXMgcG91dmV6IGwndXRpbGlzZXIgcG91ciBham91dGVyIGRlcwogICAgICBvcHRpb25zIGxvY2FsZXMgc3DpY2lmaXF1ZXMg4CBsJ+lkaXRldXIgZGUgbGllbnMuPC9kZD4KICAgICAgCiAgICAgIDxkdD48Y29kZT4tcDwvY29kZT48L2R0PgogICAgICA8ZGQ+QXZlYyBjZXR0ZSBvcHRpb24sIGFweHMgZWZmZWN0dWUgbCfpZGl0aW9uIGRlIGxpZW5zIGF2ZWMgbGVzCiAgICAgIGJpYmxpb3Ro6HF1ZXMgYXByL2Fwci11dGlsLiBFbGxlIHBlcm1ldCBkZSBjb21waWxlciBsZXMgcHJvZ3JhbW1lcwogICAgICBoZWxwZXIgcXVpIHV0aWxpc2VudCBsZXMgYmlibGlvdGjocXVlcyBhcHIvYXByLXV0aWwuPC9kZD4KICAgICAgPC9kbD4KICAgIAoKICAgIDxoMz48YSBuYW1lPSJvcHRpb25zLmRzb2luc3RhbGwiIGlkPSJvcHRpb25zLmRzb2luc3RhbGwiPk9wdGlvbnMgZCdpbnN0YWxsYXRpb24gZXQgZGUgY29uZmlndXJhdGlvbiBEU088L2E+PC9oMz4KICAgIAogICAgICA8ZGw+CiAgICAgIDxkdD48Y29kZT4taTwvY29kZT48L2R0PgogICAgICA8ZGQ+Q2V0dGUgb3B0aW9uIGluZGlxdWUgdW5lIG9w6XJhdGlvbiBkJ2luc3RhbGxhdGlvbiBldCBpbnN0YWxsZQogICAgICB1biBvdSBwbHVzaWV1cnMgb2JqZXRzIGR5bmFtaXF1ZW1lbnQgcGFydGFn6XMgZGFucyBsZSBy6XBlcnRvaXJlCiAgICAgIDx2YXI+bW9kdWxlczwvdmFyPiBkdSBzZXJ2ZXVyLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+LWE8L2NvZGU+PC9kdD4KICAgICAgPGRkPkNldHRlIG9wdGlvbiBhY3RpdmUgbGUgbW9kdWxlIGVuIGFqb3V0YW50IGF1dG9tYXRpcXVlbWVudCB1bmUKICAgICAgZGlyZWN0aXZlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2Rfc28uaHRtbCNsb2FkbW9kdWxlIj5Mb2FkTW9kdWxlPC9hPjwvY29kZT4KICAgICAgY29ycmVzcG9uZGFudGUgYXUgZmljaGllciBkZSBjb25maWd1cmF0aW9uIGQnQXBhY2hlCiAgICAgIDxjb2RlPmh0dHBkLmNvbmY8L2NvZGU+LCBvdSBlbiBsJ2FjdGl2YW50IHMnaWwgZXhpc3RlIGTpauAuPC9kZD4KCiAgICAgIDxkdD48Y29kZT4tQTwvY29kZT48L2R0PgogICAgICA8ZGQ+SWRlbnRpcXVlIOAgbCdvcHRpb24gPGNvZGU+LWE8L2NvZGU+LCDgIGxhIGRpZmbpcmVuY2UgcXVlIGxhCiAgICAgIGRpcmVjdGl2ZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvbW9kX3NvLmh0bWwjbG9hZG1vZHVsZSI+TG9hZE1vZHVsZTwvYT48L2NvZGU+IGNy6ellCiAgICAgIGVzdCBwculmaXjpZSBwYXIgdW4gY2FyYWN06HJlIGRp6HNlICg8Y29kZT4jPC9jb2RlPikgOyBsZSBtb2R1bGUKICAgICAgZXN0IGFpbnNpIHBy6XBhcukgcG91ciB1bmUgYWN0aXZhdGlvbiB1bHTpcmlldXJlLCBtYWlzIGVzdAogICAgICBk6XNhY3RpdukgZGFucyB1biBwcmVtaWVyIHRlbXBzLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+LWU8L2NvZGU+PC9kdD4KICAgICAgPGRkPkNldHRlIG9wdGlvbiBpbmRpcXVlIHVuZSBvcOlyYXRpb24gZCfpZGl0aW9uIGRlIGxpZW5zIGV0IHBldXQKICAgICAg6nRyZSB1dGlsaXPpZSBhdmVjIGxlcyBvcHRpb25zIDxjb2RlPi1hPC9jb2RlPiBldCA8Y29kZT4tQTwvY29kZT4KICAgICAgZGUgbGEgbeptZSBtYW5p6HJlIHF1J2F1IGNvdXJzIGRlIGwnb3DpcmF0aW9uIGQnaW5zdGFsbGF0aW9uIHBvdXIKICAgICAg6WRpdGVyIGxlIGZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiBkJ0FwYWNoZQogICAgICA8Y29kZT5odHRwZC5jb25mPC9jb2RlPiwgc2FucyB0b3V0ZWZvaXMgaW5zdGFsbGVyIGxlIG1vZHVsZS48L2RkPgogICAgICA8L2RsPgogICAgCjwvZGl2PjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIj4KPGgyPjxhIG5hbWU9ImV4YW1wbGVzIiBpZD0iZXhhbXBsZXMiPkV4ZW1wbGVzPC9hPjwvaDI+CiAgICA8cD5TdXBwb3NvbnMgcXVlIHZvdXMgZGlzcG9zaWV6IGQndW4gbW9kdWxlIEFwYWNoZSBub21t6QogICAgPGNvZGU+bW9kX2Zvby5jPC9jb2RlPiBldCBkZXN0aW7pIOAg6XRlbmRyZSBsZXMgZm9uY3Rpb25uYWxpdOlzIGR1CiAgICBzZXJ2ZXVyLiBQb3VyIGNlIGZhaXJlLCB2b3VzIGRldmV6IHRvdXQgZCdhYm9yZCBjb21waWxlciBsZSBmaWNoaWVyCiAgICBzb3VyY2UgQyBlbiB1biBvYmpldCBwYXJ0YWfpIHBvdXZhbnQg6nRyZSBjaGFyZ+kgZGFucyBsZSBzZXJ2ZXVyCiAgICBBcGFjaGUg4CBsJ2V46WN1dGlvbiwgdmlhIGxhIGNvbW1hbmRlIHN1aXZhbnRlIDo8L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgICQgYXB4cyAtYyBtb2RfZm9vLmM8YnIgLz4KICAgICAgL2NoZW1pbi92ZXJzL2xpYnRvb2wgLS1tb2RlPWNvbXBpbGUgZ2NjIC4uLiAtYyBtb2RfZm9vLmM8YnIgLz4KICAgICAgL2NoZW1pbi92ZXJzL2xpYnRvb2wgLS1tb2RlPWxpbmsgZ2NjIC4uLiAtbyBtb2RfZm9vLmxhIG1vZF9mb28uc2xvPGJyIC8+CiAgICAgICQgXwogICAgPC9jb2RlPjwvcD48L2Rpdj4KCiAgICA8cD5Wb3VzIGRldmV6IGVuc3VpdGUgdulyaWZpZXIgbGEgY29uZmlndXJhdGlvbiBkJ0FwYWNoZSBlbiB2b3VzCiAgICBhc3N1cmFudCBxdSd1bmUgZGlyZWN0aXZlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9Ii4uL21vZC9tb2Rfc28uaHRtbCNsb2FkbW9kdWxlIj5Mb2FkTW9kdWxlPC9hPjwvY29kZT4gZXN0IGJpZW4gcHLpc2VudGUgcG91cgogICAgY2hhcmdlciBjZXQgb2JqZXQgcGFydGFn6S4gUG91ciBzaW1wbGlmaWVyIGNldHRlIOl0YXBlLAogICAgPGNvZGU+YXB4czwvY29kZT4gcHJvcG9zZSB1bmUgbel0aG9kZSBhdXRvbWF0aXF1ZSBkJ2luc3RhbGxhdGlvbiBkZQogICAgbCdvYmpldCBwYXJ0YWfpIGRhbnMgc29uIHLpcGVydG9pcmUgIm1vZHVsZXMiLCBldCBkZSBtaXNlIOAgam91ciBkdQogICAgZmljaGllciA8Y29kZT5odHRwZC5jb25mPC9jb2RlPiBlbiBjb25z6XF1ZW5jZS4gUG91ciBi6W7pZmljaWVyIGRlCiAgICBjZXR0ZSBhdXRvbWF0aXNhdGlvbiwgdXRpbGlzZXogbGEgY29tbWFuZGUgc3VpdmFudGUgOjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgJCBhcHhzIC1pIC1hIG1vZF9mb28ubGE8YnIgLz4KICAgICAgL2NoZW1pbi92ZXJzL2luc3Rkc28uc2ggbW9kX2Zvby5sYSAvY2hlbWluL3ZlcnMvYXBhY2hlL21vZHVsZXM8YnIgLz4KICAgICAgL2NoZW1pbi92ZXJzL2xpYnRvb2wgLS1tb2RlPWluc3RhbGwgY3AgbW9kX2Zvby5sYSAvY2hlbWluL3ZlcnMvYXBhY2hlL21vZHVsZXMKICAgICAgLi4uCiAgICAgIGNobW9kIDc1NSAvY2hlbWluL3ZlcnMvYXBhY2hlL21vZHVsZXMvbW9kX2Zvby5zbzxiciAvPgogICAgICBbYWN0aXZhdGlvbiBkdSBtb2R1bGUgYGZvbycgZGFucyAvY2hlbWluL3ZlcnMvYXBhY2hlL2NvbmYvaHR0cGQuY29uZl08YnIgLz4KICAgICAgJCBfCiAgICA8L2NvZGU+PC9wPjwvZGl2PgoKICAgIDxwPlVuZSBsaWduZSBjb250ZW5hbnQ8L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgIExvYWRNb2R1bGUgZm9vX21vZHVsZSBtb2R1bGVzL21vZF9mb28uc28KICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+ZXN0IGFsb3JzIGFqb3V06WUgYXUgZmljaGllciBkZSBjb25maWd1cmF0aW9uIHNpIGNlIG4nZXN0IHBhcwogICAgZOlq4CBmYWl0LiBTaSB2b3VzIHZvdWxleiBxdWUgbGUgbW9kdWxlIHNvaXQgZOlzYWN0aXbpIHBhciBk6WZhdXQsCiAgICB1dGlsaXNleiBsJ29wdGlvbiA8Y29kZT4tQTwvY29kZT4gY29tbWUgc3VpdCA6PC9wPgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgICAkIGFweHMgLWkgLUEgbW9kX2Zvby5jCiAgICA8L2NvZGU+PC9wPjwvZGl2PgoKICAgIDxwPlBvdXIgdW4gdGVzdCByYXBpZGUgZHUgbeljYW5pc21lIGFweHMsIHZvdXMgcG91dmV6IGNy6WVyIHVuCiAgICBleGVtcGxlIGRlIG1vZOhsZSBkZSBtb2R1bGUgQXBhY2hlLCBhaW5zaSBxdWUgbGUgTWFrZWZpbGUKICAgIGNvcnJlc3BvbmRhbnQgdmlhIDo8L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgICQgYXB4cyAtZyAtbiBmb288YnIgLz4KICAgICAgQ3JlYXRpbmcgW0RJUl0gIGZvbzxiciAvPgogICAgICBDcmVhdGluZyBbRklMRV0gZm9vL01ha2VmaWxlPGJyIC8+CiAgICAgIENyZWF0aW5nIFtGSUxFXSBmb28vbW9kdWxlcy5tazxiciAvPgogICAgICBDcmVhdGluZyBbRklMRV0gZm9vL21vZF9mb28uYzxiciAvPgogICAgICBDcmVhdGluZyBbRklMRV0gZm9vLy5kZXBzPGJyIC8+CiAgICAgICQgXwogICAgPC9jb2RlPjwvcD48L2Rpdj4KCiAgICA8cD5Wb3VzIHBvdXZleiBlbnN1aXRlIGNvbXBpbGVyIGltbelkaWF0ZW1lbnQgY2UgbW9kdWxlIGV4ZW1wbGUgZW4KICAgIG9iamV0IHBhcnRhZ+kgZXQgbGUgY2hhcmdlciBkYW5zIGxlIHNlcnZldXIgQXBhY2hlIDo8L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgICQgY2QgZm9vPGJyIC8+CiAgICAgICQgbWFrZSBhbGwgcmVsb2FkPGJyIC8+CiAgICAgIGFweHMgLWMgbW9kX2Zvby5jPGJyIC8+CiAgICAgIC9jaGVtaW4vdmVycy9saWJ0b29sIC0tbW9kZT1jb21waWxlIGdjYyAuLi4gLWMgbW9kX2Zvby5jPGJyIC8+CiAgICAgIC9jaGVtaW4vdmVycy9saWJ0b29sIC0tbW9kZT1saW5rIGdjYyAuLi4gLW8gbW9kX2Zvby5sYSBtb2RfZm9vLnNsbzxiciAvPgogICAgICBhcHhzIC1pIC1hIC1uICJmb28iIG1vZF9mb28ubGE8YnIgLz4KICAgICAgL2NoZW1pbi92ZXJzL2luc3Rkc28uc2ggbW9kX2Zvby5sYSAvY2hlbWluL3ZlcnMvYXBhY2hlL21vZHVsZXM8YnIgLz4KICAgICAgL2NoZW1pbi92ZXJzL2xpYnRvb2wgLS1tb2RlPWluc3RhbGwgY3AgbW9kX2Zvby5sYSAvY2hlbWluL3ZlcnMvYXBhY2hlL21vZHVsZXMKICAgICAgLi4uCiAgICAgIGNobW9kIDc1NSAvY2hlbWluL3ZlcnMvYXBhY2hlL21vZHVsZXMvbW9kX2Zvby5zbzxiciAvPgogICAgICBbYWN0aXZhdGlvbiBkdSBtb2R1bGUgYGZvbycgZGFucyAvY2hlbWluL3ZlcnMvYXBhY2hlL2NvbmYvaHR0cGQuY29uZl08YnIgLz4KICAgICAgYXBhY2hlY3RsIHJlc3RhcnQ8YnIgLz4KICAgICAgL2NoZW1pbi92ZXJzL2FwYWNoZS9zYmluL2FwYWNoZWN0bCByZXN0YXJ0OiBodHRwZCBub3QgcnVubmluZywgdHJ5aW5nIHRvIHN0YXJ0PGJyIC8+CiAgICAgIFtUdWUgTWFyIDMxIDExOjI3OjU1IDE5OThdIFtkZWJ1Z10gbW9kX3NvLmMoMzAzKTogbG9hZGVkIG1vZHVsZSBmb29fbW9kdWxlPGJyIC8+CiAgICAgIC9jaGVtaW4vdmVycy9hcGFjaGUvc2Jpbi9hcGFjaGVjdGwgcmVzdGFydDogaHR0cGQgc3RhcnRlZDxiciAvPgogICAgICAkIF8KICAgIDwvY29kZT48L3A+PC9kaXY+Cgo8L2Rpdj48L2Rpdj4KPGRpdiBjbGFzcz0iYm90dG9tbGFuZyI+CjxwPjxzcGFuPkxhbmd1ZXMgRGlzcG9uaWJsZXM6IDwvc3Bhbj48YSBocmVmPSIuLi9lbi9wcm9ncmFtcy9hcHhzLmh0bWwiIGhyZWZsYW5nPSJlbiIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9mci9wcm9ncmFtcy9hcHhzLmh0bWwiIHRpdGxlPSJGcmFu52FpcyI+Jm5ic3A7ZnImbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4va28vcHJvZ3JhbXMvYXB4cy5odG1sIiBocmVmbGFuZz0ia28iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iS29yZWFuIj4mbmJzcDtrbyZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi90ci9wcm9ncmFtcy9hcHhzLmh0bWwiIGhyZWZsYW5nPSJ0ciIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJU/HJr52UiPiZuYnNwO3RyJm5ic3A7PC9hPjwvcD4KPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiBhbHQ9InRvcCIgLz48L2E+PC9kaXY+PGRpdiBjbGFzcz0ic2VjdGlvbiI+PGgyPjxhIGlkPSJjb21tZW50c19zZWN0aW9uIiBuYW1lPSJjb21tZW50c19zZWN0aW9uIj5Db21tZW50YWlyZXM8L2E+PC9oMj48ZGl2IGNsYXNzPSJ3YXJuaW5nIj48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz48YnIgLz5UaGlzIGlzIG5vdCBhIFEmYW1wO0Egc2VjdGlvbi4gQ29tbWVudHMgcGxhY2VkIGhlcmUgc2hvdWxkIGJlIHBvaW50ZWQgdG93YXJkcyBzdWdnZXN0aW9ucyBvbiBpbXByb3ZpbmcgdGhlIGRvY3VtZW50YXRpb24gb3Igc2VydmVyLCBhbmQgbWF5IGJlIHJlbW92ZWQgYWdhaW4gYnkgb3VyIG1vZGVyYXRvcnMgaWYgdGhleSBhcmUgZWl0aGVyIGltcGxlbWVudGVkIG9yIGNvbnNpZGVyZWQgaW52YWxpZC9vZmYtdG9waWMuIFF1ZXN0aW9ucyBvbiBob3cgdG8gbWFuYWdlIHRoZSBBcGFjaGUgSFRUUCBTZXJ2ZXIgc2hvdWxkIGJlIGRpcmVjdGVkIGF0IGVpdGhlciBvdXIgSVJDIGNoYW5uZWwsICNodHRwZCwgb24gRnJlZW5vZGUsIG9yIHNlbnQgdG8gb3VyIDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2xpc3RzLmh0bWwiPm1haWxpbmcgbGlzdHM8L2E+LjwvZGl2Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLS8vLS0+PCFbQ0RBVEFbLy8+PCEtLQp2YXIgY29tbWVudHNfc2hvcnRuYW1lID0gJ2h0dHBkJzsKdmFyIGNvbW1lbnRzX2lkZW50aWZpZXIgPSAnaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvZG9jcy8yLjQvcHJvZ3JhbXMvYXB4cy5odG1sJzsKKGZ1bmN0aW9uKHcsIGQpIHsKICAgIGlmICh3LmxvY2F0aW9uLmhvc3RuYW1lLnRvTG93ZXJDYXNlKCkgPT0gImh0dHBkLmFwYWNoZS5vcmciKSB7CiAgICAgICAgZC53cml0ZSgnPGRpdiBpZD0iY29tbWVudHNfdGhyZWFkIj48XC9kaXY+Jyk7CiAgICAgICAgdmFyIHMgPSBkLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOwogICAgICAgIHMudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnOwogICAgICAgIHMuYXN5bmMgPSB0cnVlOwogICAgICAgIHMuc3JjID0gJ2h0dHBzOi8vY29tbWVudHMuYXBhY2hlLm9yZy9zaG93X2NvbW1lbnRzLmx1YT9zaXRlPScgKyBjb21tZW50c19zaG9ydG5hbWUgKyAnJnBhZ2U9JyArIGNvbW1lbnRzX2lkZW50aWZpZXI7CiAgICAgICAgKGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXSB8fCBkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdib2R5JylbMF0pLmFwcGVuZENoaWxkKHMpOwogICAgfQogICAgZWxzZSB7IAogICAgICAgIGQud3JpdGUoJzxkaXYgaWQ9ImNvbW1lbnRzX3RocmVhZCI+Q29tbWVudHMgYXJlIGRpc2FibGVkIGZvciB0aGlzIHBhZ2UgYXQgdGhlIG1vbWVudC48XC9kaXY+Jyk7CiAgICB9Cn0pKHdpbmRvdywgZG9jdW1lbnQpOwovLy0tPjwhXV0+PC9zY3JpcHQ+PC9kaXY+PGRpdiBpZD0iZm9vdGVyIj4KPHAgY2xhc3M9ImFwYWNoZSI+Q29weXJpZ2h0IDIwMTggVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLjxiciAvPkF1dG9yaXPpIHNvdXMgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIj5BcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjA8L2E+LjwvcD4KPHAgY2xhc3M9Im1lbnUiPjxhIGhyZWY9Ii4uL21vZC8iPk1vZHVsZXM8L2E+IHwgPGEgaHJlZj0iLi4vbW9kL2RpcmVjdGl2ZXMuaHRtbCI+RGlyZWN0aXZlczwvYT4gfCA8YSBocmVmPSJodHRwOi8vd2lraS5hcGFjaGUub3JnL2h0dHBkL0ZBUSI+RkFRPC9hPiB8IDxhIGhyZWY9Ii4uL2dsb3NzYXJ5Lmh0bWwiPkdsb3NzYWlyZTwvYT4gfCA8YSBocmVmPSIuLi9zaXRlbWFwLmh0bWwiPlBsYW4gZHUgc2l0ZTwvYT48L3A+PC9kaXY+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0vLy0tPjwhW0NEQVRBWy8vPjwhLS0KaWYgKHR5cGVvZihwcmV0dHlQcmludCkgIT09ICd1bmRlZmluZWQnKSB7CiAgICBwcmV0dHlQcmludCgpOwp9Ci8vLS0+PCFdXT48L3NjcmlwdD4KPC9ib2R5PjwvaHRtbD4=