PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48aGVhZD48IS0tCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgICAgICAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGZyb20geG1sIHNvdXJjZTogRE8gTk9UIEVESVQKICAgICAgICBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWAogICAgICAtLT4KPHRpdGxlPm1vZF9pbWFnZW1hcCAtIEFwYWNoZSBIVFRQIFNlcnZlcjwvdGl0bGU+CjxsaW5rIGhyZWY9Ii4uL3N0eWxlL2Nzcy9tYW51YWwuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTWFpbiBzdHlsZXNoZWV0IiAvPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLWxvb3NlLTEwMHBjLmNzcyIgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgbWVkaWE9ImFsbCIgdHlwZT0idGV4dC9jc3MiIHRpdGxlPSJObyBTaWRlYmFyIC0gRGVmYXVsdCBmb250IHNpemUiIC8+CjxsaW5rIGhyZWY9Ii4uL3N0eWxlL2Nzcy9tYW51YWwtcHJpbnQuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJwcmludCIgdHlwZT0idGV4dC9jc3MiIC8+CjxsaW5rIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIgcmVsPSJzaG9ydGN1dCBpY29uIiAvPjwvaGVhZD4KPGJvZHk+CjxkaXYgaWQ9InBhZ2UtaGVhZGVyIj4KPHAgY2xhc3M9Im1lbnUiPjxhIGhyZWY9Ii4uL21vZC8iPk1vZHVsZXM8L2E+IHwgPGEgaHJlZj0iLi4vbW9kL2RpcmVjdGl2ZXMuaHRtbCI+RGlyZWN0aXZlczwvYT4gfCA8YSBocmVmPSIuLi9mYXEvIj5GQVE8L2E+IHwgPGEgaHJlZj0iLi4vZ2xvc3NhcnkuaHRtbCI+R2xvc3Nhcnk8L2E+IHwgPGEgaHJlZj0iLi4vc2l0ZW1hcC5odG1sIj5TaXRlbWFwPC9hPjwvcD4KPHAgY2xhc3M9ImFwYWNoZSI+QXBhY2hlIEhUVFAgU2VydmVyIFZlcnNpb24gMi4zPC9wPgo8aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9mZWF0aGVyLmdpZiIgLz48L2Rpdj4KPGRpdiBjbGFzcz0idXAiPjxhIGhyZWY9Ii4vIj48aW1nIHRpdGxlPSImbHQ7LSIgYWx0PSImbHQ7LSIgc3JjPSIuLi9pbWFnZXMvbGVmdC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGlkPSJwYXRoIj4KPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QXBhY2hlPC9hPiAmZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnLyI+SFRUUCBTZXJ2ZXI8L2E+ICZndDsgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvZG9jcy8iPkRvY3VtZW50YXRpb248L2E+ICZndDsgPGEgaHJlZj0iLi4vIj5WZXJzaW9uIDIuMzwvYT4gJmd0OyA8YSBocmVmPSIuLyI+TW9kdWxlczwvYT48L2Rpdj4KPGRpdiBpZD0icGFnZS1jb250ZW50Ij4KPGRpdiBpZD0icHJlYW1ibGUiPjxoMT5BcGFjaGUgTW9kdWxlIG1vZF9pbWFnZW1hcDwvaDE+CjxkaXYgY2xhc3M9InRvcGxhbmciPgo8cD48c3Bhbj5BdmFpbGFibGUgTGFuZ3VhZ2VzOiA8L3NwYW4+PGEgaHJlZj0iLi4vZW4vbW9kL21vZF9pbWFnZW1hcC5odG1sIiB0aXRsZT0iRW5nbGlzaCI+Jm5ic3A7ZW4mbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4va28vbW9kL21vZF9pbWFnZW1hcC5odG1sIiBocmVmbGFuZz0ia28iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iS29yZWFuIj4mbmJzcDtrbyZuYnNwOzwvYT48L3A+CjwvZGl2Pgo8dGFibGUgY2xhc3M9Im1vZHVsZSI+PHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+U2VydmVyLXNpZGUgaW1hZ2VtYXAgcHJvY2Vzc2luZzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5CYXNlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9Im1vZHVsZS1kaWN0Lmh0bWwjTW9kdWxlSWRlbnRpZmllciI+TW9kdWxloElkZW50aWZpZXI6PC9hPjwvdGg+PHRkPmltYWdlbWFwX21vZHVsZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI1NvdXJjZUZpbGUiPlNvdXJjZaBGaWxlOjwvYT48L3RoPjx0ZD5tb2RfaW1hZ2VtYXAuYzwvdGQ+PC90cj48L3RhYmxlPgo8aDM+U3VtbWFyeTwvaDM+CgogICAgPHA+VGhpcyBtb2R1bGUgcHJvY2Vzc2VzIDxjb2RlPi5tYXA8L2NvZGU+IGZpbGVzLCB0aGVyZWJ5CiAgICByZXBsYWNpbmcgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIDxjb2RlPmltYWdlbWFwPC9jb2RlPiBDR0kKICAgIHByb2dyYW0uIEFueSBkaXJlY3Rvcnkgb3IgZG9jdW1lbnQgdHlwZSBjb25maWd1cmVkIHRvIHVzZSB0aGUKICAgIGhhbmRsZXIgPGNvZGU+aW1hcC1maWxlPC9jb2RlPiAodXNpbmcgZWl0aGVyIAogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL21vZF9taW1lLmh0bWwjYWRkaGFuZGxlciI+QWRkSGFuZGxlcjwvYT48L2NvZGU+IG9yCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvY29yZS5odG1sI3NldGhhbmRsZXIiPlNldEhhbmRsZXI8L2E+PC9jb2RlPikKICAgIHdpbGwgYmUgcHJvY2Vzc2VkIGJ5IHRoaXMgbW9kdWxlLjwvcD4KCiAgICA8cD5UaGUgZm9sbG93aW5nIGRpcmVjdGl2ZSB3aWxsIGFjdGl2YXRlIGZpbGVzIGVuZGluZyB3aXRoCiAgICA8Y29kZT4ubWFwPC9jb2RlPiBhcyBpbWFnZW1hcCBmaWxlczo8L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+QWRkSGFuZGxlciBpbWFwLWZpbGUgbWFwPC9jb2RlPjwvcD48L2Rpdj4KCiAgICA8cD5Ob3RlIHRoYXQgdGhlIGZvbGxvd2luZyBpcyBzdGlsbCBzdXBwb3J0ZWQ6PC9wPgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPkFkZFR5cGUgYXBwbGljYXRpb24veC1odHRwZC1pbWFwIG1hcDwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+SG93ZXZlciwgd2UgYXJlIHRyeWluZyB0byBwaGFzZSBvdXQgIm1hZ2ljIE1JTUUgdHlwZXMiIHNvIHdlCiAgICBhcmUgZGVwcmVjYXRpbmcgdGhpcyBtZXRob2QuPC9wPgo8L2Rpdj4KPGRpdiBpZD0icXVpY2t2aWV3Ij48aDMgY2xhc3M9ImRpcmVjdGl2ZXMiPkRpcmVjdGl2ZXM8L2gzPgo8dWwgaWQ9InRvYyI+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2ltYXBiYXNlIj5JbWFwQmFzZTwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNpbWFwZGVmYXVsdCI+SW1hcERlZmF1bHQ8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjaW1hcG1lbnUiPkltYXBNZW51PC9hPjwvbGk+CjwvdWw+CjxoMz5Ub3BpY3M8L2gzPgo8dWwgaWQ9InRvcGljcyI+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2ZlYXR1cmVzIj5OZXcgRmVhdHVyZXM8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjaW1hcGZpbGUiPkltYWdlbWFwIEZpbGU8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjZXhhbXBsZSI+RXhhbXBsZSBNYXBmaWxlPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI3JlZmVyZW5jaW5nIj5SZWZlcmVuY2luZyB5b3VyIG1hcGZpbGU8L2E+PC9saT4KPC91bD48L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0iZmVhdHVyZXMiIGlkPSJmZWF0dXJlcyI+TmV3IEZlYXR1cmVzPC9hPjwvaDI+CgogICAgPHA+VGhlIGltYWdlbWFwIG1vZHVsZSBhZGRzIHNvbWUgbmV3IGZlYXR1cmVzIHRoYXQgd2VyZSBub3QKICAgIHBvc3NpYmxlIHdpdGggcHJldmlvdXNseSBkaXN0cmlidXRlZCBpbWFnZW1hcCBwcm9ncmFtcy48L3A+CgogICAgPHVsPgogICAgICA8bGk+VVJMIHJlZmVyZW5jZXMgcmVsYXRpdmUgdG8gdGhlIFJlZmVyZXI6IGluZm9ybWF0aW9uLjwvbGk+CgogICAgICA8bGk+RGVmYXVsdCA8Y29kZT4mbHQ7YmFzZSZndDs8L2NvZGU+IGFzc2lnbm1lbnQgdGhyb3VnaCBhIG5ldyBtYXAKICAgICAgZGlyZWN0aXZlIDxjb2RlPmJhc2U8L2NvZGU+LjwvbGk+CgogICAgICA8bGk+Tm8gbmVlZCBmb3IgPGNvZGU+aW1hZ2VtYXAuY29uZjwvY29kZT4gZmlsZS48L2xpPgoKICAgICAgPGxpPlBvaW50IHJlZmVyZW5jZXMuPC9saT4KCiAgICAgIDxsaT5Db25maWd1cmFibGUgZ2VuZXJhdGlvbiBvZiBpbWFnZW1hcCBtZW51cy48L2xpPgogICAgPC91bD4KPC9kaXY+PGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iPgo8aDI+PGEgbmFtZT0iaW1hcGZpbGUiIGlkPSJpbWFwZmlsZSI+SW1hZ2VtYXAgRmlsZTwvYT48L2gyPgoKICAgIDxwPlRoZSBsaW5lcyBpbiB0aGUgaW1hZ2VtYXAgZmlsZXMgY2FuIGhhdmUgb25lIG9mIHNldmVyYWwKICAgIGZvcm1hdHM6PC9wPgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgICBkaXJlY3RpdmUgdmFsdWUgWzx2YXI+eDwvdmFyPiw8dmFyPnk8L3Zhcj4gLi4uXTxiciAvPgogICAgICBkaXJlY3RpdmUgdmFsdWUgIjx2YXI+TWVudSB0ZXh0PC92YXI+IiBbPHZhcj54PC92YXI+LDx2YXI+eTwvdmFyPgogICAgICAuLi5dPGJyIC8+CiAgICAgIGRpcmVjdGl2ZSB2YWx1ZSA8dmFyPng8L3Zhcj4sPHZhcj55PC92YXI+IC4uLiAiPHZhcj5NZW51IHRleHQ8L3Zhcj4iCiAgICA8L2NvZGU+PC9wPjwvZGl2PgoKICAgIDxwPlRoZSBkaXJlY3RpdmUgaXMgb25lIG9mIDxjb2RlPmJhc2U8L2NvZGU+LAogICAgPGNvZGU+ZGVmYXVsdDwvY29kZT4sIDxjb2RlPnBvbHk8L2NvZGU+LCA8Y29kZT5jaXJjbGU8L2NvZGU+LAogICAgPGNvZGU+cmVjdDwvY29kZT4sIG9yIDxjb2RlPnBvaW50PC9jb2RlPi4gVGhlIHZhbHVlIGlzIGFuCiAgICBhYnNvbHV0ZSBvciByZWxhdGl2ZSBVUkwsIG9yIG9uZSBvZiB0aGUgc3BlY2lhbCB2YWx1ZXMgbGlzdGVkCiAgICBiZWxvdy4gVGhlIGNvb3JkaW5hdGVzIGFyZSA8Y29kZT48dmFyPng8L3Zhcj4sPHZhcj55PC92YXI+PC9jb2RlPgogICAgcGFpcnMgc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2UuIFRoZSBxdW90ZWQgdGV4dCBpcyB1c2VkIGFzIHRoZSB0ZXh0IG9mCiAgICB0aGUgbGluayBpZiBhIGltYWdlbWFwIG1lbnUgaXMgZ2VuZXJhdGVkLiBMaW5lcyBiZWdpbm5pbmcgd2l0aCAnIycgYXJlCiAgICBjb21tZW50cy48L3A+CgogICAgPGgzPjxhIG5hbWU9ImltYXBmaWxlLmRpcmVjdGl2ZXMiIGlkPSJpbWFwZmlsZS5kaXJlY3RpdmVzIj5JbWFnZW1hcCBGaWxlIERpcmVjdGl2ZXM8L2E+PC9oMz4KICAgICAgPHA+VGhlcmUgYXJlIHNpeCBkaXJlY3RpdmVzIGFsbG93ZWQgaW4gdGhlIGltYWdlbWFwIGZpbGUuIFRoZQogICAgICBkaXJlY3RpdmVzIGNhbiBjb21lIGluIGFueSBvcmRlciwgYnV0IGFyZSBwcm9jZXNzZWQgaW4gdGhlCiAgICAgIG9yZGVyIHRoZXkgYXJlIGZvdW5kIGluIHRoZSBpbWFnZW1hcCBmaWxlLjwvcD4KCiAgICAgIDxkbD4KICAgICAgPGR0Pjxjb2RlPmJhc2U8L2NvZGU+IERpcmVjdGl2ZTwvZHQ+CgogICAgICA8ZGQ+PHA+SGFzIHRoZSBlZmZlY3Qgb2YgPGNvZGU+Jmx0O2Jhc2UgaHJlZj0iPHZhcj52YWx1ZTwvdmFyPiImZ3Q7CiAgICAgIDwvY29kZT4uIFRoZSBub24tYWJzb2x1dGUgVVJMcyBvZiB0aGUgbWFwLWZpbGUgYXJlIHRha2VuIHJlbGF0aXZlCiAgICAgIHRvIHRoaXMgdmFsdWUuIFRoZSA8Y29kZT5iYXNlPC9jb2RlPiBkaXJlY3RpdmUgb3ZlcnJpZGVzCiAgICAgIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNpbWFwYmFzZSI+SW1hcEJhc2U8L2E+PC9jb2RlPiBhcyBzZXQgaW4gYQogICAgICA8Y29kZT4uaHRhY2Nlc3M8L2NvZGU+IGZpbGUgb3IgaW4gdGhlIHNlcnZlciBjb25maWd1cmF0aW9uIGZpbGVzLgogICAgICBJbiB0aGUgYWJzZW5jZSBvZiBhbiA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5JbWFwQmFzZTwvY29kZT4gY29uZmlndXJhdGlvbgogICAgICBkaXJlY3RpdmUsIDxjb2RlPmJhc2U8L2NvZGU+IGRlZmF1bHRzIHRvCiAgICAgIDxjb2RlPmh0dHA6Ly9zZXJ2ZXJfbmFtZS88L2NvZGU+LjwvcD4KICAgICAgPHA+PGNvZGU+YmFzZV91cmk8L2NvZGU+IGlzIHN5bm9ueW1vdXMgd2l0aCA8Y29kZT5iYXNlPC9jb2RlPi4KICAgICAgTm90ZSB0aGF0IGEgdHJhaWxpbmcgc2xhc2ggb24gdGhlIFVSTCBpcyBzaWduaWZpY2FudC48L3A+PC9kZD4KCiAgICAgIDxkdD48Y29kZT5kZWZhdWx0PC9jb2RlPiBEaXJlY3RpdmU8L2R0PgoKICAgICAgPGRkPlRoZSBhY3Rpb24gdGFrZW4gaWYgdGhlIGNvb3JkaW5hdGVzIGdpdmVuIGRvIG5vdCBmaXQgYW55CiAgICAgIG9mIHRoZSA8Y29kZT5wb2x5PC9jb2RlPiwgPGNvZGU+Y2lyY2xlPC9jb2RlPiBvcgogICAgICA8Y29kZT5yZWN0PC9jb2RlPiBkaXJlY3RpdmVzLCBhbmQgdGhlcmUgYXJlIG5vCiAgICAgIDxjb2RlPnBvaW50PC9jb2RlPiBkaXJlY3RpdmVzLiBEZWZhdWx0cyB0byA8Y29kZT5ub2NvbnRlbnQ8L2NvZGU+CiAgICAgIGluIHRoZSBhYnNlbmNlIG9mIGFuIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNpbWFwZGVmYXVsdCI+SW1hcERlZmF1bHQ8L2E+PC9jb2RlPiBjb25maWd1cmF0aW9uIHNldHRpbmcsIGNhdXNpbmcgYSBzdGF0dXMKICAgICAgY29kZSBvZiA8Y29kZT4yMDQgTm8gQ29udGVudDwvY29kZT4gdG8gYmUgcmV0dXJuZWQuIFRoZSBjbGllbnQKICAgICAgc2hvdWxkIGtlZXAgdGhlIHNhbWUgcGFnZSBkaXNwbGF5ZWQuPC9kZD4KCiAgICAgIDxkdD48Y29kZT5wb2x5PC9jb2RlPiBEaXJlY3RpdmU8L2R0PgoKICAgICAgPGRkPlRha2VzIHRocmVlIHRvIG9uZS1odW5kcmVkIHBvaW50cywgYW5kIGlzIG9iZXllZCBpZiB0aGUKICAgICAgdXNlciBzZWxlY3RlZCBjb29yZGluYXRlcyBmYWxsIHdpdGhpbiB0aGUgcG9seWdvbiBkZWZpbmVkIGJ5CiAgICAgIHRoZXNlIHBvaW50cy48L2RkPgoKICAgICAgPGR0Pjxjb2RlPmNpcmNsZTwvY29kZT48L2R0PgoKICAgICAgPGRkPlRha2VzIHRoZSBjZW50ZXIgY29vcmRpbmF0ZXMgb2YgYSBjaXJjbGUgYW5kIGEgcG9pbnQgb24KICAgICAgdGhlIGNpcmNsZS4gSXMgb2JleWVkIGlmIHRoZSB1c2VyIHNlbGVjdGVkIHBvaW50IGlzIHdpdGggdGhlCiAgICAgIGNpcmNsZS48L2RkPgoKICAgICAgPGR0Pjxjb2RlPnJlY3Q8L2NvZGU+IERpcmVjdGl2ZTwvZHQ+CgogICAgICA8ZGQ+VGFrZXMgdGhlIGNvb3JkaW5hdGVzIG9mIHR3byBvcHBvc2luZyBjb3JuZXJzIG9mIGEKICAgICAgcmVjdGFuZ2xlLiBPYmV5ZWQgaWYgdGhlIHBvaW50IHNlbGVjdGVkIGlzIHdpdGhpbiB0aGlzCiAgICAgIHJlY3RhbmdsZS48L2RkPgoKICAgICAgPGR0Pjxjb2RlPnBvaW50PC9jb2RlPiBEaXJlY3RpdmU8L2R0PgoKICAgICAgPGRkPlRha2VzIGEgc2luZ2xlIHBvaW50LiBUaGUgcG9pbnQgZGlyZWN0aXZlIGNsb3Nlc3QgdG8gdGhlCiAgICAgIHVzZXIgc2VsZWN0ZWQgcG9pbnQgaXMgb2JleWVkIGlmIG5vIG90aGVyIGRpcmVjdGl2ZXMgYXJlCiAgICAgIHNhdGlzZmllZC4gTm90ZSB0aGF0IDxjb2RlPmRlZmF1bHQ8L2NvZGU+IHdpbGwgbm90IGJlCiAgICAgIGZvbGxvd2VkIGlmIGEgPGNvZGU+cG9pbnQ8L2NvZGU+IGRpcmVjdGl2ZSBpcyBwcmVzZW50IGFuZAogICAgICB2YWxpZCBjb29yZGluYXRlcyBhcmUgZ2l2ZW4uPC9kZD4KICAgICAgPC9kbD4KICAgIAoKICAgIDxoMz48YSBuYW1lPSJpbWFwZmlsZS52YWx1ZXMiIGlkPSJpbWFwZmlsZS52YWx1ZXMiPlZhbHVlczwvYT48L2gzPgoKICAgICAgPHA+VGhlIHZhbHVlcyBmb3IgZWFjaCBvZiB0aGUgZGlyZWN0aXZlcyBjYW4gYmUgYW55IG9mIHRoZQogICAgICBmb2xsb3dpbmc6PC9wPgoKICAgICAgPGRsPgogICAgICA8ZHQ+YSBVUkw8L2R0PgoKICAgICAgPGRkPjxwPlRoZSBVUkwgY2FuIGJlIHJlbGF0aXZlIG9yIGFic29sdXRlIFVSTC4gUmVsYXRpdmUgVVJMcwogICAgICBjYW4gY29udGFpbiAnLi4nIHN5bnRheCBhbmQgd2lsbCBiZSByZXNvbHZlZCByZWxhdGl2ZSB0byB0aGUKICAgICAgPGNvZGU+YmFzZTwvY29kZT4gdmFsdWUuPC9wPgogICAgICA8cD48Y29kZT5iYXNlPC9jb2RlPiBpdHNlbGYgd2lsbCBub3QgYmUgcmVzb2x2ZWQgYWNjb3JkaW5nIHRvIHRoZQogICAgICBjdXJyZW50IHZhbHVlLiBBIHN0YXRlbWVudCA8Y29kZT5iYXNlIG1haWx0bzo8L2NvZGU+IHdpbGwKICAgICAgd29yayBwcm9wZXJseSwgdGhvdWdoLjwvcD48L2RkPgoKICAgICAgPGR0Pjxjb2RlPm1hcDwvY29kZT48L2R0PgoKICAgICAgPGRkPkVxdWl2YWxlbnQgdG8gdGhlIFVSTCBvZiB0aGUgaW1hZ2VtYXAgZmlsZSBpdHNlbGYuIE5vCiAgICAgIGNvb3JkaW5hdGVzIGFyZSBzZW50IHdpdGggdGhpcywgc28gYSBtZW51IHdpbGwgYmUgZ2VuZXJhdGVkCiAgICAgIHVubGVzcyA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjaW1hcG1lbnUiPkltYXBNZW51PC9hPjwvY29kZT4gaXMgc2V0IHRvCiAgICAgIDxjb2RlPm5vbmU8L2NvZGU+LjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+bWVudTwvY29kZT48L2R0PgogICAgICA8ZGQ+U3lub255bW91cyB3aXRoIDxjb2RlPm1hcDwvY29kZT4uPC9kZD4KCiAgICAgIDxkdD48Y29kZT5yZWZlcmVyPC9jb2RlPjwvZHQ+CgogICAgICA8ZGQ+RXF1aXZhbGVudCB0byB0aGUgVVJMIG9mIHRoZSByZWZlcnJpbmcgZG9jdW1lbnQuIERlZmF1bHRzCiAgICAgIHRvIDxjb2RlPmh0dHA6Ly9zZXJ2ZXJuYW1lLzwvY29kZT4gaWYgbm8gPGNvZGU+UmVmZXJlcjo8L2NvZGU+CiAgICAgIGhlYWRlciB3YXMgcHJlc2VudC48L2RkPgoKICAgICAgPGR0Pjxjb2RlPm5vY29udGVudDwvY29kZT48L2R0PgoKICAgICAgPGRkPlNlbmRzIGEgc3RhdHVzIGNvZGUgb2YgPGNvZGU+MjA0IE5vIENvbnRlbnQ8L2NvZGU+LAogICAgICB0ZWxsaW5nIHRoZSBjbGllbnQgdG8ga2VlcCB0aGUgc2FtZSBwYWdlIGRpc3BsYXllZC4gVmFsaWQgZm9yCiAgICAgIGFsbCBidXQgPGNvZGU+YmFzZTwvY29kZT4uPC9kZD4KCiAgICAgIDxkdD48Y29kZT5lcnJvcjwvY29kZT48L2R0PgoKICAgICAgPGRkPkZhaWxzIHdpdGggYSA8Y29kZT41MDAgU2VydmVyIEVycm9yPC9jb2RlPi4gVmFsaWQgZm9yIGFsbAogICAgICBidXQgPGNvZGU+YmFzZTwvY29kZT4sIGJ1dCBzb3J0IG9mIHNpbGx5IGZvciBhbnl0aGluZyBidXQKICAgICAgPGNvZGU+ZGVmYXVsdDwvY29kZT4uPC9kZD4KICAgICAgPC9kbD4KICAgIAoKICAgIDxoMz48YSBuYW1lPSJpbWFwZmlsZS5jb29yZHMiIGlkPSJpbWFwZmlsZS5jb29yZHMiPkNvb3JkaW5hdGVzPC9hPjwvaDM+CgogICAgICA8ZGw+CiAgICAgIDxkdD48Y29kZT4wLDAgMjAwLDIwMDwvY29kZT48L2R0PgoKICAgICAgPGRkPkEgY29vcmRpbmF0ZSBjb25zaXN0cyBvZiBhbiA8dmFyPng8L3Zhcj4gYW5kIGEgPHZhcj55PC92YXI+CiAgICAgIHZhbHVlIHNlcGFyYXRlZCBieSBhIGNvbW1hLiBUaGUgY29vcmRpbmF0ZXMgYXJlIHNlcGFyYXRlZAogICAgICBmcm9tIGVhY2ggb3RoZXIgYnkgd2hpdGVzcGFjZS4gVG8gYWNjb21tb2RhdGUgdGhlIHdheSBMeW54CiAgICAgIGhhbmRsZXMgaW1hZ2VtYXBzLCBzaG91bGQgYSB1c2VyIHNlbGVjdCB0aGUgY29vcmRpbmF0ZQogICAgICA8Y29kZT4wLDA8L2NvZGU+LCBpdCBpcyBhcyBpZiBubyBjb29yZGluYXRlIGhhZCBiZWVuCiAgICAgIHNlbGVjdGVkLjwvZGQ+CiAgICAgIDwvZGw+CgogICAgCgogICAgPGgzPjxhIG5hbWU9ImltYXBmaWxlLnF1b3RlZHRleHQiIGlkPSJpbWFwZmlsZS5xdW90ZWR0ZXh0Ij5RdW90ZWQgVGV4dDwvYT48L2gzPgoKICAgICAgPGRsPgogICAgICA8ZHQ+PGNvZGU+Ijx2YXI+TWVudSBUZXh0PC92YXI+IjwvY29kZT48L2R0PgoKICAgICAgPGRkPjxwPkFmdGVyIHRoZSB2YWx1ZSBvciBhZnRlciB0aGUgY29vcmRpbmF0ZXMsIHRoZSBsaW5lCiAgICAgIG9wdGlvbmFsbHkgbWF5IGNvbnRhaW4gdGV4dCB3aXRoaW4gZG91YmxlIHF1b3Rlcy4gVGhpcyBzdHJpbmcKICAgICAgaXMgdXNlZCBhcyB0aGUgdGV4dCBmb3IgdGhlIGxpbmsgaWYgYSBtZW51IGlzCiAgICAgIGdlbmVyYXRlZDo8L3A+CgogICAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgICAmbHQ7YSBocmVmPSJodHRwOi8vZXhhbXBsZS5jb20vIiZndDs8dmFyPk1lbnUgdGV4dDwvdmFyPiZsdDsvYSZndDsKICAgICAgPC9jb2RlPjwvcD48L2Rpdj4KCiAgICAgIDxwPklmIG5vIHF1b3RlZCB0ZXh0IGlzIHByZXNlbnQsIHRoZSBuYW1lIG9mIHRoZSBsaW5rIHdpbGwgYmUKICAgICAgdXNlZCBhcyB0aGUgdGV4dDo8L3A+CgogICAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgICAmbHQ7YSBocmVmPSJodHRwOi8vZXhhbXBsZS5jb20vIiZndDtodHRwOi8vZXhhbXBsZS5jb20mbHQ7L2EmZ3Q7CiAgICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgICA8cD5JZiB5b3Ugd2FudCB0byB1c2UgZG91YmxlIHF1b3RlcyB3aXRoaW4gdGhpcyB0ZXh0LCB5b3UgaGF2ZSB0bwogICAgICB3cml0ZSB0aGVtIGFzIDxjb2RlPiZhbXA7cXVvdDs8L2NvZGU+LjwvcD48L2RkPgogICAgICA8L2RsPgoKICAgIAo8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJleGFtcGxlIiBpZD0iZXhhbXBsZSI+RXhhbXBsZSBNYXBmaWxlPC9hPjwvaDI+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgICNDb21tZW50cyBhcmUgcHJpbnRlZCBpbiBhICdmb3JtYXR0ZWQnIG9yICdzZW1pZm9ybWF0dGVkJyBtZW51LjxiciAvPgogICAgICAjQW5kIGNhbiBjb250YWluIGh0bWwgdGFncy4gJmx0O2hyJmd0OzxiciAvPgogICAgICBiYXNlIHJlZmVyZXI8YnIgLz4KICAgICAgcG9seSBtYXAgIkNvdWxkIEkgaGF2ZSBhIG1lbnUsIHBsZWFzZT8iIDAsMCAwLDEwIDEwLDEwIDEwLDA8YnIgLz4KICAgICAgcmVjdCAuLiAwLDAgNzcsMjcgInRoZSBkaXJlY3Rvcnkgb2YgdGhlIHJlZmVyZXIiPGJyIC8+CiAgICAgIGNpcmNsZSBodHRwOi8vd3d3LmluZXRuZWJyLmV4YW1wbGUuY29tL2xpbmNvbG4vZmVlZGJhY2svIDE5NSwwIDMwNSwyNzxiciAvPgogICAgICByZWN0IGFub3RoZXJfZmlsZSAiaW4gc2FtZSBkaXJlY3RvcnkgYXMgcmVmZXJlciIgMzA2LDAgNDE5LDI3PGJyIC8+CiAgICAgIHBvaW50IGh0dHA6Ly93d3cuenl6enl2YS5leGFtcGxlLmNvbS8gMTAwLDEwMDxiciAvPgogICAgICBwb2ludCBodHRwOi8vd3d3LnRyaXBvZC5leGFtcGxlLmNvbS8gMjAwLDIwMDxiciAvPgogICAgICByZWN0IG1haWx0bzpuYXRlQHRyaXBvZC5leGFtcGxlLmNvbSAxMDAsMTUwIDIwMCwwICJCdWdzPyI8YnIgLz4KICAgIDwvY29kZT48L3A+PC9kaXY+Cgo8L2Rpdj48ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJyZWZlcmVuY2luZyIgaWQ9InJlZmVyZW5jaW5nIj5SZWZlcmVuY2luZyB5b3VyIG1hcGZpbGU8L2E+PC9oMj4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48aDM+SFRNTCBleGFtcGxlPC9oMz48cD48Y29kZT4KICAgICAgJmx0O2EgaHJlZj0iL21hcHMvaW1hZ2VtYXAxLm1hcCImZ3Q7PGJyIC8+CiAgICAgIDxzcGFuIGNsYXNzPSJpbmRlbnQiPgogICAgICAgICZsdDtpbWcgaXNtYXAgc3JjPSIvaW1hZ2VzL2ltYWdlbWFwMS5naWYiJmd0OzxiciAvPgogICAgICA8L3NwYW4+CiAgICAgICZsdDsvYSZndDsKICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PGgzPlhIVE1MIGV4YW1wbGU8L2gzPjxwPjxjb2RlPgogICAgICAmbHQ7YSBocmVmPSIvbWFwcy9pbWFnZW1hcDEubWFwIiZndDs8YnIgLz4KICAgICAgPHNwYW4gY2xhc3M9ImluZGVudCI+CiAgICAgICAgJmx0O2ltZyBpc21hcD0iaXNtYXAiIHNyYz0iL2ltYWdlcy9pbWFnZW1hcDEuZ2lmIiAvJmd0OzxiciAvPgogICAgICA8L3NwYW4+CiAgICAgICZsdDsvYSZndDsKICAgIDwvY29kZT48L3A+PC9kaXY+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iSW1hcEJhc2UiIGlkPSJJbWFwQmFzZSI+SW1hcEJhc2U8L2E+IDxhIG5hbWU9ImltYXBiYXNlIiBpZD0iaW1hcGJhc2UiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkRlZmF1bHQgPGNvZGU+YmFzZTwvY29kZT4gZm9yIGltYWdlbWFwIGZpbGVzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkltYXBCYXNlIG1hcHxyZWZlcmVyfDx2YXI+VVJMPC92YXI+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0RlZmF1bHQiPkRlZmF1bHQ6PC9hPjwvdGg+PHRkPjxjb2RlPkltYXBCYXNlIGh0dHA6Ly9zZXJ2ZXJuYW1lLzwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnLCB2aXJ0dWFsIGhvc3QsIGRpcmVjdG9yeSwgLmh0YWNjZXNzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjT3ZlcnJpZGUiPk92ZXJyaWRlOjwvYT48L3RoPjx0ZD5JbmRleGVzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkJhc2U8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2ltYWdlbWFwPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkltYXBCYXNlPC9jb2RlPiBkaXJlY3RpdmUgc2V0cyB0aGUgZGVmYXVsdAogICAgPGNvZGU+YmFzZTwvY29kZT4gdXNlZCBpbiB0aGUgaW1hZ2VtYXAgZmlsZXMuIEl0cyB2YWx1ZSBpcwogICAgb3ZlcnJpZGRlbiBieSBhIDxjb2RlPmJhc2U8L2NvZGU+IGRpcmVjdGl2ZSB3aXRoaW4gdGhlIGltYWdlbWFwCiAgICBmaWxlLiBJZiBub3QgcHJlc2VudCwgdGhlIDxjb2RlPmJhc2U8L2NvZGU+IGRlZmF1bHRzIHRvCiAgICA8Y29kZT5odHRwOi8vPHZhcj5zZXJ2ZXJuYW1lPC92YXI+LzwvY29kZT4uPC9wPgoKPGgzPlNlZSBhbHNvPC9oMz4KPHVsPgo8bGk+PGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL2NvcmUuaHRtbCN1c2VjYW5vbmljYWxuYW1lIj5Vc2VDYW5vbmljYWxOYW1lPC9hPjwvY29kZT48L2xpPgo8L3VsPgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iSW1hcERlZmF1bHQiIGlkPSJJbWFwRGVmYXVsdCI+SW1hcERlZmF1bHQ8L2E+IDxhIG5hbWU9ImltYXBkZWZhdWx0IiBpZD0iaW1hcGRlZmF1bHQiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkRlZmF1bHQgYWN0aW9uIHdoZW4gYW4gaW1hZ2VtYXAgaXMgY2FsbGVkIHdpdGggY29vcmRpbmF0ZXMKdGhhdCBhcmUgbm90IGV4cGxpY2l0bHkgbWFwcGVkPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkltYXBEZWZhdWx0IGVycm9yfG5vY29udGVudHxtYXB8cmVmZXJlcnw8dmFyPlVSTDwvdmFyPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZWZhdWx0Ij5EZWZhdWx0OjwvYT48L3RoPjx0ZD48Y29kZT5JbWFwRGVmYXVsdCBub2NvbnRlbnQ8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZywgdmlydHVhbCBob3N0LCBkaXJlY3RvcnksIC5odGFjY2VzczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI092ZXJyaWRlIj5PdmVycmlkZTo8L2E+PC90aD48dGQ+SW5kZXhlczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5CYXNlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9pbWFnZW1hcDwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPlRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5JbWFwRGVmYXVsdDwvY29kZT4gZGlyZWN0aXZlIHNldHMgdGhlIGRlZmF1bHQKICAgIDxjb2RlPmRlZmF1bHQ8L2NvZGU+IHVzZWQgaW4gdGhlIGltYWdlbWFwIGZpbGVzLiBJdHMgdmFsdWUgaXMKICAgIG92ZXJyaWRkZW4gYnkgYSA8Y29kZT5kZWZhdWx0PC9jb2RlPiBkaXJlY3RpdmUgd2l0aGluIHRoZQogICAgaW1hZ2VtYXAgZmlsZS4gSWYgbm90IHByZXNlbnQsIHRoZSA8Y29kZT5kZWZhdWx0PC9jb2RlPiBhY3Rpb24KICAgIGlzIDxjb2RlPm5vY29udGVudDwvY29kZT4sIHdoaWNoIG1lYW5zIHRoYXQgYSA8Y29kZT4yMDQgTm8KICAgIENvbnRlbnQ8L2NvZGU+IGlzIHNlbnQgdG8gdGhlIGNsaWVudC4gSW4gdGhpcyBjYXNlLCB0aGUgY2xpZW50CiAgICBzaG91bGQgY29udGludWUgdG8gZGlzcGxheSB0aGUgb3JpZ2luYWwgcGFnZS48L3A+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iSW1hcE1lbnUiIGlkPSJJbWFwTWVudSI+SW1hcE1lbnU8L2E+IDxhIG5hbWU9ImltYXBtZW51IiBpZD0iaW1hcG1lbnUiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPkFjdGlvbiBpZiBubyBjb29yZGluYXRlcyBhcmUgZ2l2ZW4gd2hlbiBjYWxsaW5nCmFuIGltYWdlbWFwPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkltYXBNZW51IG5vbmV8Zm9ybWF0dGVkfHNlbWlmb3JtYXR0ZWR8dW5mb3JtYXR0ZWQ8L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZywgdmlydHVhbCBob3N0LCBkaXJlY3RvcnksIC5odGFjY2VzczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI092ZXJyaWRlIj5PdmVycmlkZTo8L2E+PC90aD48dGQ+SW5kZXhlczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5CYXNlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9pbWFnZW1hcDwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPlRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj5JbWFwTWVudTwvY29kZT4gZGlyZWN0aXZlIGRldGVybWluZXMgdGhlCiAgICBhY3Rpb24gdGFrZW4gaWYgYW4gaW1hZ2VtYXAgZmlsZSBpcyBjYWxsZWQgd2l0aG91dCB2YWxpZAogICAgY29vcmRpbmF0ZXMuPC9wPgoKICAgIDxkbD4KICAgICAgPGR0Pjxjb2RlPm5vbmU8L2NvZGU+PC9kdD4KICAgICAgPGRkPklmIEltYXBNZW51IGlzIDxjb2RlPm5vbmU8L2NvZGU+LCBubyBtZW51IGlzIGdlbmVyYXRlZCwKICAgICAgYW5kIHRoZSA8Y29kZT5kZWZhdWx0PC9jb2RlPiBhY3Rpb24gaXMgcGVyZm9ybWVkLjwvZGQ+CgogICAgICA8ZHQ+PGNvZGU+Zm9ybWF0dGVkPC9jb2RlPjwvZHQ+CiAgICAgIDxkZD5BIDxjb2RlPmZvcm1hdHRlZDwvY29kZT4gbWVudSBpcyB0aGUgc2ltcGxlc3QgbWVudS4KICAgICAgQ29tbWVudHMgaW4gdGhlIGltYWdlbWFwIGZpbGUgYXJlIGlnbm9yZWQuIEEgbGV2ZWwgb25lIGhlYWRlcgogICAgICBpcyBwcmludGVkLCB0aGVuIGFuIGhydWxlLCB0aGVuIHRoZSBsaW5rcyBlYWNoIG9uIGEgc2VwYXJhdGUKICAgICAgbGluZS4gVGhlIG1lbnUgaGFzIGEgY29uc2lzdGVudCwgcGxhaW4gbG9vayBjbG9zZSB0byB0aGF0IG9mCiAgICAgIGEgZGlyZWN0b3J5IGxpc3RpbmcuPC9kZD4KCiAgICAgIDxkdD48Y29kZT5zZW1pZm9ybWF0dGVkPC9jb2RlPjwvZHQ+CiAgICAgIDxkZD5JbiB0aGUgPGNvZGU+c2VtaWZvcm1hdHRlZDwvY29kZT4gbWVudSwgY29tbWVudHMgYXJlCiAgICAgIHByaW50ZWQgd2hlcmUgdGhleSBvY2N1ciBpbiB0aGUgaW1hZ2VtYXAgZmlsZS4gQmxhbmsgbGluZXMKICAgICAgYXJlIHR1cm5lZCBpbnRvIEhUTUwgYnJlYWtzLiBObyBoZWFkZXIgb3IgaHJ1bGUgaXMgcHJpbnRlZCwKICAgICAgYnV0IG90aGVyd2lzZSB0aGUgbWVudSBpcyB0aGUgc2FtZSBhcyBhCiAgICAgIDxjb2RlPmZvcm1hdHRlZDwvY29kZT4gbWVudS48L2RkPgoKICAgICAgPGR0Pjxjb2RlPnVuZm9ybWF0dGVkPC9jb2RlPjwvZHQ+CiAgICAgIDxkZD5Db21tZW50cyBhcmUgcHJpbnRlZCwgYmxhbmsgbGluZXMgYXJlIGlnbm9yZWQuIE5vdGhpbmcgaXMKICAgICAgcHJpbnRlZCB0aGF0IGRvZXMgbm90IGFwcGVhciBpbiB0aGUgaW1hZ2VtYXAgZmlsZS4gQWxsIGJyZWFrcwogICAgICBhbmQgaGVhZGVycyBtdXN0IGJlIGluY2x1ZGVkIGFzIGNvbW1lbnRzIGluIHRoZSBpbWFnZW1hcAogICAgICBmaWxlLiBUaGlzIGdpdmVzIHlvdSB0aGUgbW9zdCBmbGV4aWJpbGl0eSBvdmVyIHRoZSBhcHBlYXJhbmNlCiAgICAgIG9mIHlvdXIgbWVudXMsIGJ1dCByZXF1aXJlcyB5b3UgdG8gdHJlYXQgeW91ciBtYXAgZmlsZXMgYXMKICAgICAgSFRNTCBpbnN0ZWFkIG9mIHBsYWludGV4dC48L2RkPgogICAgPC9kbD4KCjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iYm90dG9tbGFuZyI+CjxwPjxzcGFuPkF2YWlsYWJsZSBMYW5ndWFnZXM6IDwvc3Bhbj48YSBocmVmPSIuLi9lbi9tb2QvbW9kX2ltYWdlbWFwLmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9rby9tb2QvbW9kX2ltYWdlbWFwLmh0bWwiIGhyZWZsYW5nPSJrbyIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJLb3JlYW4iPiZuYnNwO2tvJm5ic3A7PC9hPjwvcD4KPC9kaXY+PGRpdiBpZD0iZm9vdGVyIj4KPHAgY2xhc3M9ImFwYWNoZSI+Q29weXJpZ2h0IDIwMTEgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLjxiciAvPkxpY2Vuc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAiPkFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMDwvYT4uPC9wPgo8cCBjbGFzcz0ibWVudSI+PGEgaHJlZj0iLi4vbW9kLyI+TW9kdWxlczwvYT4gfCA8YSBocmVmPSIuLi9tb2QvZGlyZWN0aXZlcy5odG1sIj5EaXJlY3RpdmVzPC9hPiB8IDxhIGhyZWY9Ii4uL2ZhcS8iPkZBUTwvYT4gfCA8YSBocmVmPSIuLi9nbG9zc2FyeS5odG1sIj5HbG9zc2FyeTwvYT4gfCA8YSBocmVmPSIuLi9zaXRlbWFwLmh0bWwiPlNpdGVtYXA8L2E+PC9wPjwvZGl2Pgo8L2JvZHk+PC9odG1sPg==