PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48aGVhZD48IS0tCiAgICAgICAgWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKICAgICAgICAgICAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGZyb20geG1sIHNvdXJjZTogRE8gTk9UIEVESVQKICAgICAgICBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWAogICAgICAtLT4KPHRpdGxlPm1vZF9hbGlhcyAtIEFwYWNoZSBIVFRQIFNlcnZlcjwvdGl0bGU+CjxsaW5rIGhyZWY9Ii4uL3N0eWxlL2Nzcy9tYW51YWwuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJhbGwiIHR5cGU9InRleHQvY3NzIiB0aXRsZT0iTWFpbiBzdHlsZXNoZWV0IiAvPgo8bGluayBocmVmPSIuLi9zdHlsZS9jc3MvbWFudWFsLWxvb3NlLTEwMHBjLmNzcyIgcmVsPSJhbHRlcm5hdGUgc3R5bGVzaGVldCIgbWVkaWE9ImFsbCIgdHlwZT0idGV4dC9jc3MiIHRpdGxlPSJObyBTaWRlYmFyIC0gRGVmYXVsdCBmb250IHNpemUiIC8+CjxsaW5rIGhyZWY9Ii4uL3N0eWxlL2Nzcy9tYW51YWwtcHJpbnQuY3NzIiByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJwcmludCIgdHlwZT0idGV4dC9jc3MiIC8+CjxsaW5rIGhyZWY9Ii4uL2ltYWdlcy9mYXZpY29uLmljbyIgcmVsPSJzaG9ydGN1dCBpY29uIiAvPjwvaGVhZD4KPGJvZHk+CjxkaXYgaWQ9InBhZ2UtaGVhZGVyIj4KPHAgY2xhc3M9Im1lbnUiPjxhIGhyZWY9Ii4uL21vZC8iPk1vZHVsZXM8L2E+IHwgPGEgaHJlZj0iLi4vbW9kL2RpcmVjdGl2ZXMuaHRtbCI+RGlyZWN0aXZlczwvYT4gfCA8YSBocmVmPSIuLi9mYXEvIj5GQVE8L2E+IHwgPGEgaHJlZj0iLi4vZ2xvc3NhcnkuaHRtbCI+R2xvc3Nhcnk8L2E+IHwgPGEgaHJlZj0iLi4vc2l0ZW1hcC5odG1sIj5TaXRlbWFwPC9hPjwvcD4KPHAgY2xhc3M9ImFwYWNoZSI+QXBhY2hlIEhUVFAgU2VydmVyIFZlcnNpb24gMi4xPC9wPgo8aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9mZWF0aGVyLmdpZiIgLz48L2Rpdj4KPGRpdiBjbGFzcz0idXAiPjxhIGhyZWY9Ii4vIj48aW1nIHRpdGxlPSImbHQ7LSIgYWx0PSImbHQ7LSIgc3JjPSIuLi9pbWFnZXMvbGVmdC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGlkPSJwYXRoIj4KPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QXBhY2hlPC9hPiAmZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnLyI+SFRUUCBTZXJ2ZXI8L2E+ICZndDsgPGEgaHJlZj0iaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvZG9jcy1wcm9qZWN0LyI+RG9jdW1lbnRhdGlvbjwvYT4gJmd0OyA8YSBocmVmPSIuLi8iPlZlcnNpb24gMi4xPC9hPiAmZ3Q7IDxhIGhyZWY9Ii4vIj5Nb2R1bGVzPC9hPjwvZGl2Pgo8ZGl2IGlkPSJwYWdlLWNvbnRlbnQiPgo8ZGl2IGlkPSJwcmVhbWJsZSI+PGgxPkFwYWNoZSBNb2R1bGUgbW9kX2FsaWFzPC9oMT4KPGRpdiBjbGFzcz0idG9wbGFuZyI+CjxwPjxzcGFuPkF2YWlsYWJsZSBMYW5ndWFnZXM6IDwvc3Bhbj48YSBocmVmPSIuLi9lbi9tb2QvbW9kX2FsaWFzLmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9qYS9tb2QvbW9kX2FsaWFzLmh0bWwiIGhyZWZsYW5nPSJqYSIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJKYXBhbmVzZSI+Jm5ic3A7amEmbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4va28vbW9kL21vZF9hbGlhcy5odG1sIiBocmVmbGFuZz0ia28iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iS29yZWFuIj4mbmJzcDtrbyZuYnNwOzwvYT48L3A+CjwvZGl2Pgo8dGFibGUgY2xhc3M9Im1vZHVsZSI+PHRyPjx0aD48YSBocmVmPSJtb2R1bGUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+UHJvdmlkZXMgZm9yIG1hcHBpbmcgZGlmZmVyZW50IHBhcnRzIG9mIHRoZSBob3N0CiAgICBmaWxlc3lzdGVtIGluIHRoZSBkb2N1bWVudCB0cmVlIGFuZCBmb3IgVVJMIHJlZGlyZWN0aW9uPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9Im1vZHVsZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkJhc2U8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0ibW9kdWxlLWRpY3QuaHRtbCNNb2R1bGVJZGVudGlmaWVyIj5Nb2R1bGWgSWRlbnRpZmllcjo8L2E+PC90aD48dGQ+YWxpYXNfbW9kdWxlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9Im1vZHVsZS1kaWN0Lmh0bWwjU291cmNlRmlsZSI+U291cmNloEZpbGU6PC9hPjwvdGg+PHRkPm1vZF9hbGlhcy5jPC90ZD48L3RyPjwvdGFibGU+CjxoMz5TdW1tYXJ5PC9oMz4KCiAgICA8cD5UaGUgZGlyZWN0aXZlcyBjb250YWluZWQgaW4gdGhpcyBtb2R1bGUgYWxsb3cgZm9yIG1hbmlwdWxhdGlvbgogICAgYW5kIGNvbnRyb2wgb2YgVVJMcyBhcyByZXF1ZXN0cyBhcnJpdmUgYXQgdGhlIHNlcnZlci4gVGhlCiAgICA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjYWxpYXMiPkFsaWFzPC9hPjwvY29kZT4gYW5kIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNzY3JpcHRhbGlhcyI+U2NyaXB0QWxpYXM8L2E+PC9jb2RlPiBkaXJlY3RpdmVzIGFyZSB1c2VkIHRvCiAgICBtYXAgYmV0d2VlbiBVUkxzIGFuZCBmaWxlc3lzdGVtIHBhdGhzLiAgVGhpcyBhbGxvd3MgZm9yIGNvbnRlbnQKICAgIHdoaWNoIGlzIG5vdCBkaXJlY3RseSB1bmRlciB0aGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL2NvcmUuaHRtbCNkb2N1bWVudHJvb3QiPkRvY3VtZW50Um9vdDwvYT48L2NvZGU+IHNlcnZlZCBhcyBwYXJ0IG9mIHRoZSB3ZWIKICAgIGRvY3VtZW50IHRyZWUuIFRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjc2NyaXB0YWxpYXMiPlNjcmlwdEFsaWFzPC9hPjwvY29kZT4gZGlyZWN0aXZlIGhhcyB0aGUKICAgIGFkZGl0aW9uYWwgZWZmZWN0IG9mIG1hcmtpbmcgdGhlIHRhcmdldCBkaXJlY3RvcnkgYXMgY29udGFpbmluZwogICAgb25seSBDR0kgc2NyaXB0cy48L3A+CgogICAgPHA+VGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNyZWRpcmVjdCI+UmVkaXJlY3Q8L2E+PC9jb2RlPgogICAgZGlyZWN0aXZlcyBhcmUgdXNlZCB0byBpbnN0cnVjdCBjbGllbnRzIHRvIG1ha2UgYSBuZXcgcmVxdWVzdCB3aXRoCiAgICBhIGRpZmZlcmVudCBVUkwuIFRoZXkgYXJlIG9mdGVuIHVzZWQgd2hlbiBhIHJlc291cmNlIGhhcyBtb3ZlZCB0bwogICAgYSBuZXcgbG9jYXRpb24uPC9wPgoKICAgIDxwPjxjb2RlIGNsYXNzPSJtb2R1bGUiPjxhIGhyZWY9Ii4uL21vZC9tb2RfYWxpYXMuaHRtbCI+bW9kX2FsaWFzPC9hPjwvY29kZT4gaXMgZGVzaWduZWQgdG8gaGFuZGxlIHNpbXBsZSBVUkwKICAgIG1hbmlwdWxhdGlvbiB0YXNrcy4gIEZvciBtb3JlIGNvbXBsaWNhdGVkIHRhc2tzIHN1Y2ggYXMKICAgIG1hbmlwdWxhdGluZyB0aGUgcXVlcnkgc3RyaW5nLCB1c2UgdGhlIHRvb2xzIHByb3ZpZGVkIGJ5CiAgICA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX3Jld3JpdGUuaHRtbCI+bW9kX3Jld3JpdGU8L2E+PC9jb2RlPi48L3A+Cgo8L2Rpdj4KPGRpdiBpZD0icXVpY2t2aWV3Ij48aDMgY2xhc3M9ImRpcmVjdGl2ZXMiPkRpcmVjdGl2ZXM8L2gzPgo8dWwgaWQ9InRvYyI+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI2FsaWFzIj5BbGlhczwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNhbGlhc21hdGNoIj5BbGlhc01hdGNoPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI3JlZGlyZWN0Ij5SZWRpcmVjdDwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNyZWRpcmVjdG1hdGNoIj5SZWRpcmVjdE1hdGNoPC9hPjwvbGk+CjxsaT48aW1nIGFsdD0iIiBzcmM9Ii4uL2ltYWdlcy9kb3duLmdpZiIgLz4gPGEgaHJlZj0iI3JlZGlyZWN0cGVybWFuZW50Ij5SZWRpcmVjdFBlcm1hbmVudDwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNyZWRpcmVjdHRlbXAiPlJlZGlyZWN0VGVtcDwvYT48L2xpPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNzY3JpcHRhbGlhcyI+U2NyaXB0QWxpYXM8L2E+PC9saT4KPGxpPjxpbWcgYWx0PSIiIHNyYz0iLi4vaW1hZ2VzL2Rvd24uZ2lmIiAvPiA8YSBocmVmPSIjc2NyaXB0YWxpYXNtYXRjaCI+U2NyaXB0QWxpYXNNYXRjaDwvYT48L2xpPgo8L3VsPgo8aDM+VG9waWNzPC9oMz4KPHVsIGlkPSJ0b3BpY3MiPgo8bGk+PGltZyBhbHQ9IiIgc3JjPSIuLi9pbWFnZXMvZG93bi5naWYiIC8+IDxhIGhyZWY9IiNvcmRlciI+T3JkZXIgb2YgUHJvY2Vzc2luZzwvYT48L2xpPgo8L3VsPjxoMz5TZWUgYWxzbzwvaDM+Cjx1bCBjbGFzcz0ic2VlYWxzbyI+CjxsaT48Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX3Jld3JpdGUuaHRtbCI+bW9kX3Jld3JpdGU8L2E+PC9jb2RlPjwvbGk+CjxsaT48YSBocmVmPSIuLi91cmxtYXBwaW5nLmh0bWwiPk1hcHBpbmcgVVJMcyB0byB0aGUgZmlsZXN5c3RlbTwvYT48L2xpPgo8L3VsPjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CjxoMj48YSBuYW1lPSJvcmRlciIgaWQ9Im9yZGVyIj5PcmRlciBvZiBQcm9jZXNzaW5nPC9hPjwvaDI+Cgo8cD5BbGlhc2VzIGFuZCBSZWRpcmVjdHMgb2NjdXJpbmcgaW4gZGlmZmVyZW50IGNvbnRleHRzIGFyZSBwcm9jZXNzZWQKbGlrZSBvdGhlciBkaXJlY3RpdmVzIGFjY29yZGluZyB0byBzdGFuZGFyZCA8YSBocmVmPSIuLi9zZWN0aW9ucy5odG1sI21lcmdpbiI+bWVyZ2luZyBydWxlczwvYT4uICBCdXQgd2hlbiBtdWx0aXBsZQpBbGlhc2VzIG9yIFJlZGlyZWN0cyBvY2N1ciBpbiB0aGUgc2FtZSBjb250ZXh0IChmb3IgZXhhbXBsZSwgaW4gdGhlCnNhbWUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL2NvcmUuaHRtbCN2aXJ0dWFsaG9zdCI+Jmx0O1ZpcnR1YWxIb3N0Jmd0OzwvYT48L2NvZGU+CnNlY3Rpb24pIHRoZXkgYXJlIHByb2Nlc3NlZCBpbiBhIHBhcnRpY3VsYXIgb3JkZXIuPC9wPgoKPHA+Rmlyc3QsIGFsbCBSZWRpcmVjdHMgYXJlIHByb2Nlc3NlZCBiZWZvcmUgQWxpYXNlcyBhcmUgcHJvY2Vzc2VkLAphbmQgdGhlcmVmb3JlIGEgcmVxdWVzdCB0aGF0IG1hdGNoZXMgYSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjcmVkaXJlY3QiPlJlZGlyZWN0PC9hPjwvY29kZT4gb3IgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI3JlZGlyZWN0bWF0Y2giPlJlZGlyZWN0TWF0Y2g8L2E+PC9jb2RlPiB3aWxsIG5ldmVyIGhhdmUgQWxpYXNlcwphcHBsaWVkLiAgU2Vjb25kLCB0aGUgQWxpYXNlcyBhbmQgUmVkaXJlY3RzIGFyZSBwcm9jZXNzZWQgaW4gdGhlIG9yZGVyCnRoZXkgYXBwZWFyIGluIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzLCB3aXRoIHRoZSBmaXJzdCBtYXRjaCB0YWtpbmcKcHJlY2VkZW5jZS48L3A+Cgo8cD5Gb3IgdGhpcyByZWFzb24sIHdoZW4gdHdvIG9yIG1vcmUgb2YgdGhlc2UgZGlyZWN0aXZlcyBhcHBseSB0byB0aGUKc2FtZSBzdWItcGF0aCwgeW91IG11c3QgbGlzdCB0aGUgbW9zdCBzcGVjaWZpYyBwYXRoIGZpcnN0IGluIG9yZGVyIGZvcgphbGwgdGhlIGRpcmVjdGl2ZXMgdG8gaGF2ZSBhbiBlZmZlY3QuICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZwpjb25maWd1cmF0aW9uIHdpbGwgd29yayBhcyBleHBlY3RlZDo8L3A+Cgo8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KQWxpYXMgL2Zvby9iYXIgL2JhejxiciAvPgpBbGlhcyAvZm9vIC9nYXEKPC9jb2RlPjwvcD48L2Rpdj4KCjxwPkJ1dCBpZiB0aGUgYWJvdmUgdHdvIGRpcmVjdGl2ZXMgd2VyZSByZXZlcnNlZCBpbiBvcmRlciwgdGhlCjxjb2RlPi9mb288L2NvZGU+IDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNhbGlhcyI+QWxpYXM8L2E+PC9jb2RlPgp3b3VsZCBhbHdheXMgbWF0Y2ggYmVmb3JlIHRoZSA8Y29kZT4vZm9vL2JhcjwvY29kZT4gPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI2FsaWFzIj5BbGlhczwvYT48L2NvZGU+LCBzbyB0aGUgbGF0dGVyIGRpcmVjdGl2ZSB3b3VsZCBiZQppZ25vcmVkLjwvcD4KCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJBbGlhcyIgaWQ9IkFsaWFzIj5BbGlhczwvYT4gPGEgbmFtZT0iYWxpYXMiIGlkPSJhbGlhcyI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+TWFwcyBVUkxzIHRvIGZpbGVzeXN0ZW0gbG9jYXRpb25zPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPkFsaWFzIDx2YXI+VVJMLXBhdGg8L3Zhcj4KPHZhcj5maWxlLXBhdGg8L3Zhcj58PHZhcj5kaXJlY3RvcnktcGF0aDwvdmFyPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnLCB2aXJ0dWFsIGhvc3Q8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+QmFzZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfYWxpYXM8L3RkPjwvdHI+CjwvdGFibGU+CgogICAgPHA+VGhlIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPkFsaWFzPC9jb2RlPiBkaXJlY3RpdmUgYWxsb3dzIGRvY3VtZW50cyB0bwogICAgYmUgc3RvcmVkIGluIHRoZSBsb2NhbCBmaWxlc3lzdGVtIG90aGVyIHRoYW4gdW5kZXIgdGhlIAogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL2NvcmUuaHRtbCNkb2N1bWVudHJvb3QiPkRvY3VtZW50Um9vdDwvYT48L2NvZGU+LiBVUkxzIHdpdGggYQogICAgKCUtZGVjb2RlZCkgcGF0aCBiZWdpbm5pbmcgd2l0aCA8dmFyPnVybC1wYXRoPC92YXI+IHdpbGwgYmUgbWFwcGVkCiAgICB0byBsb2NhbCBmaWxlcyBiZWdpbm5pbmcgd2l0aCA8dmFyPmRpcmVjdG9yeS1wYXRoPC92YXI+LjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48aDM+RXhhbXBsZTo8L2gzPjxwPjxjb2RlPgogICAgICBBbGlhcyAvaW1hZ2UgL2Z0cC9wdWIvaW1hZ2UKICAgIDwvY29kZT48L3A+PC9kaXY+CgogICAgPHA+QSByZXF1ZXN0IGZvciBodHRwOi8vbXlzZXJ2ZXIvaW1hZ2UvZm9vLmdpZiB3b3VsZCBjYXVzZSB0aGUKICAgIHNlcnZlciB0byByZXR1cm4gdGhlIGZpbGUgL2Z0cC9wdWIvaW1hZ2UvZm9vLmdpZi48L3A+CgogICAgPHA+Tm90ZSB0aGF0IGlmIHlvdSBpbmNsdWRlIGEgdHJhaWxpbmcgLyBvbiB0aGUKICAgIDx2YXI+dXJsLXBhdGg8L3Zhcj4gdGhlbiB0aGUgc2VydmVyIHdpbGwgcmVxdWlyZSBhIHRyYWlsaW5nIC8gaW4KICAgIG9yZGVyIHRvIGV4cGFuZCB0aGUgYWxpYXMuIFRoYXQgaXMsIGlmIHlvdSB1c2UgPGNvZGU+QWxpYXMKICAgIC9pY29ucy8gL3Vzci9sb2NhbC9hcGFjaGUvaWNvbnMvPC9jb2RlPiB0aGVuIHRoZSB1cmwKICAgIDxjb2RlPi9pY29uczwvY29kZT4gd2lsbCBub3QgYmUgYWxpYXNlZC48L3A+CgogICAgPHA+Tm90ZSB0aGF0IHlvdSBtYXkgbmVlZCB0byBzcGVjaWZ5IGFkZGl0aW9uYWwgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL2NvcmUuaHRtbCNkaXJlY3RvcnkiPiZsdDtEaXJlY3RvcnkmZ3Q7PC9hPjwvY29kZT4gc2VjdGlvbnMgd2hpY2gKICAgIGNvdmVyIHRoZSA8ZW0+ZGVzdGluYXRpb248L2VtPiBvZiBhbGlhc2VzLiAgQWxpYXNpbmcgb2NjdXJzIGJlZm9yZQogICAgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL2NvcmUuaHRtbCNkaXJlY3RvcnkiPiZsdDtEaXJlY3RvcnkmZ3Q7PC9hPjwvY29kZT4gc2VjdGlvbnMKICAgIGFyZSBjaGVja2VkLCBzbyBvbmx5IHRoZSBkZXN0aW5hdGlvbiBvZiBhbGlhc2VzIGFyZSBhZmZlY3RlZC4KICAgIChOb3RlIGhvd2V2ZXIgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iLi4vbW9kL2NvcmUuaHRtbCNsb2NhdGlvbiI+Jmx0O0xvY2F0aW9uJmd0OzwvYT48L2NvZGU+CiAgICBzZWN0aW9ucyBhcmUgcnVuIHRocm91Z2ggb25jZSBiZWZvcmUgYWxpYXNlcyBhcmUgcGVyZm9ybWVkLCBzbwogICAgdGhleSB3aWxsIGFwcGx5Lik8L3A+CgogICAgPHA+SW4gcGFydGljdWxhciwgaWYgeW91IGFyZSBjcmVhdGluZyBhbiA8Y29kZT5BbGlhczwvY29kZT4gdG8gYQogICAgZGlyZWN0b3J5IG91dHNpZGUgb2YgeW91ciA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIuLi9tb2QvY29yZS5odG1sI2RvY3VtZW50cm9vdCI+RG9jdW1lbnRSb290PC9hPjwvY29kZT4sIHlvdSBtYXkgbmVlZCB0byBleHBsaWNpdGx5CiAgICBwZXJtaXQgYWNjZXNzIHRvIHRoZSB0YXJnZXQgZGlyZWN0b3J5LjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48aDM+RXhhbXBsZTo8L2gzPjxwPjxjb2RlPgogICAgICAgIEFsaWFzIC9pbWFnZSAvZnRwL3B1Yi9pbWFnZTxiciAvPgogICAgICAgICZsdDtEaXJlY3RvcnkgL2Z0cC9wdWIvaW1hZ2UmZ3Q7PGJyIC8+CiAgICAgICAgPHNwYW4gY2xhc3M9ImluZGVudCI+CiAgICAgICAgICAgIE9yZGVyIGFsbG93LGRlbnk8YnIgLz4KICAgICAgICAgICAgQWxsb3cgZnJvbSBhbGw8YnIgLz4KICAgICAgICA8L3NwYW4+CiAgICAgICAgJmx0Oy9EaXJlY3RvcnkmZ3Q7CiAgICA8L2NvZGU+PC9wPjwvZGl2PgoKCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJBbGlhc01hdGNoIiBpZD0iQWxpYXNNYXRjaCI+QWxpYXNNYXRjaDwvYT4gPGEgbmFtZT0iYWxpYXNtYXRjaCIgaWQ9ImFsaWFzbWF0Y2giPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPk1hcHMgVVJMcyB0byBmaWxlc3lzdGVtIGxvY2F0aW9ucyB1c2luZyByZWd1bGFyIApleHByZXNzaW9uczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5BbGlhc01hdGNoIDx2YXI+cmVnZXg8L3Zhcj4KPHZhcj5maWxlLXBhdGg8L3Zhcj58PHZhcj5kaXJlY3RvcnktcGF0aDwvdmFyPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnLCB2aXJ0dWFsIGhvc3Q8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+QmFzZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfYWxpYXM8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5UaGlzIGRpcmVjdGl2ZSBpcyBlcXVpdmFsZW50IHRvIDxjb2RlIGNsYXNzPSJkaXJlY3RpdmUiPjxhIGhyZWY9IiNhbGlhcyI+QWxpYXM8L2E+PC9jb2RlPiwgYnV0IG1ha2VzIHVzZSBvZiBzdGFuZGFyZAogICAgcmVndWxhciBleHByZXNzaW9ucywgaW5zdGVhZCBvZiBzaW1wbGUgcHJlZml4IG1hdGNoaW5nLiBUaGUKICAgIHN1cHBsaWVkIHJlZ3VsYXIgZXhwcmVzc2lvbiBpcyBtYXRjaGVkIGFnYWluc3QgdGhlIFVSTC1wYXRoLCBhbmQKICAgIGlmIGl0IG1hdGNoZXMsIHRoZSBzZXJ2ZXIgd2lsbCBzdWJzdGl0dXRlIGFueSBwYXJlbnRoZXNpemVkCiAgICBtYXRjaGVzIGludG8gdGhlIGdpdmVuIHN0cmluZyBhbmQgdXNlIGl0IGFzIGEgZmlsZW5hbWUuIEZvcgogICAgZXhhbXBsZSwgdG8gYWN0aXZhdGUgdGhlIDxjb2RlPi9pY29uczwvY29kZT4gZGlyZWN0b3J5LCBvbmUgbWlnaHQKICAgIHVzZTo8L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PHA+PGNvZGU+CiAgICAgIEFsaWFzTWF0Y2ggXi9pY29ucyguKikgL3Vzci9sb2NhbC9hcGFjaGUvaWNvbnMkMQogICAgPC9jb2RlPjwvcD48L2Rpdj4KCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJSZWRpcmVjdCIgaWQ9IlJlZGlyZWN0Ij5SZWRpcmVjdDwvYT4gPGEgbmFtZT0icmVkaXJlY3QiIGlkPSJyZWRpcmVjdCI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+U2VuZHMgYW4gZXh0ZXJuYWwgcmVkaXJlY3QgYXNraW5nIHRoZSBjbGllbnQgdG8gZmV0Y2gKYSBkaWZmZXJlbnQgVVJMPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPlJlZGlyZWN0IFs8dmFyPnN0YXR1czwvdmFyPl0gPHZhcj5VUkwtcGF0aDwvdmFyPgo8dmFyPlVSTDwvdmFyPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnLCB2aXJ0dWFsIGhvc3QsIGRpcmVjdG9yeSwgLmh0YWNjZXNzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjT3ZlcnJpZGUiPk92ZXJyaWRlOjwvYT48L3RoPjx0ZD5GaWxlSW5mbzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5CYXNlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9hbGlhczwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPlRoZSBSZWRpcmVjdCBkaXJlY3RpdmUgbWFwcyBhbiBvbGQgVVJMIGludG8gYSBuZXcgb25lIGJ5IGFza2luZwogICAgdGhlIGNsaWVudCB0byByZWZldGNoIHRoZSByZXNvdXJjZSBhdCB0aGUgbmV3IGxvY2F0aW9uLjwvcD4KCiAgICA8cD5UaGUgb2xkIDxlbT5VUkwtcGF0aDwvZW0+IGlzIGEgKCUtZGVjb2RlZCkgcGF0aCBiZWdpbm5pbmcgd2l0aAogICAgYSBzbGFzaC4gIEEgcmVsYXRpdmUgcGF0aCBpcyBub3QgYWxsb3dlZC4gIFRoZSBuZXcgPGVtPlVSTDwvZW0+CiAgICBzaG91bGQgYmUgYW4gYWJzb2x1dGUgVVJMIGJlZ2lubmluZyB3aXRoIGEgc2NoZW1lIGFuZCBob3N0bmFtZSwKICAgIGJ1dCBhIFVSTC1wYXRoIGJlZ2lubmluZyB3aXRoIGEgc2xhc2ggbWF5IGFsc28gYmUgdXNlZCwgaW4gd2hpY2gKICAgIGNhc2UgdGhlIHNjaGVtZSBhbmQgaG9zdG5hbWUgb2YgdGhlIGN1cnJlbnQgc2VydmVyIHdpbGwgYmUKICAgIGFkZGVkLjwvcD4KCiAgICA8cD5UaGVuIGFueSByZXF1ZXN0IGJlZ2lubmluZyB3aXRoIDxlbT5VUkwtUGF0aDwvZW0+IHdpbGwgcmV0dXJuIGEKICAgIHJlZGlyZWN0IHJlcXVlc3QgdG8gdGhlIGNsaWVudCBhdCB0aGUgbG9jYXRpb24gb2YgdGhlIHRhcmdldAogICAgPGVtPlVSTDwvZW0+LiAgQWRkaXRpb25hbCBwYXRoIGluZm9ybWF0aW9uIGJleW9uZCB0aGUgbWF0Y2hlZAogICAgPGVtPlVSTC1QYXRoPC9lbT4gd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgdGFyZ2V0IFVSTC48L3A+CgogICAgPGRpdiBjbGFzcz0iZXhhbXBsZSI+PGgzPkV4YW1wbGU6PC9oMz48cD48Y29kZT4KICAgICAgUmVkaXJlY3QgL3NlcnZpY2UgaHR0cDovL2ZvbzIuZXhhbXBsZS5jb20vc2VydmljZQogICAgPC9jb2RlPjwvcD48L2Rpdj4KCiAgICA8cD5JZiB0aGUgY2xpZW50IHJlcXVlc3RzIGh0dHA6Ly9leGFtcGxlLmNvbS9zZXJ2aWNlL2Zvby50eHQsIGl0CiAgICB3aWxsIGJlIHRvbGQgdG8gYWNjZXNzIGh0dHA6Ly9mb28yLmV4YW1wbGUuY29tL3NlcnZpY2UvZm9vLnR4dAogICAgaW5zdGVhZC48L3A+Cgo8ZGl2IGNsYXNzPSJub3RlIj48aDM+Tm90ZTwvaDM+IDxwPlJlZGlyZWN0IGRpcmVjdGl2ZXMgdGFrZSBwcmVjZWRlbmNlIG92ZXIKQWxpYXMgYW5kIFNjcmlwdEFsaWFzIGRpcmVjdGl2ZXMsIGlycmVzcGVjdGl2ZSBvZiB0aGVpciBvcmRlcmluZyBpbgp0aGUgY29uZmlndXJhdGlvbiBmaWxlLjwvcD48L2Rpdj4KCiAgICA8cD5JZiBubyA8dmFyPnN0YXR1czwvdmFyPiBhcmd1bWVudCBpcyBnaXZlbiwgdGhlIHJlZGlyZWN0IHdpbGwKICAgIGJlICJ0ZW1wb3JhcnkiIChIVFRQIHN0YXR1cyAzMDIpLiBUaGlzIGluZGljYXRlcyB0byB0aGUgY2xpZW50CiAgICB0aGF0IHRoZSByZXNvdXJjZSBoYXMgbW92ZWQgdGVtcG9yYXJpbHkuIFRoZSA8dmFyPnN0YXR1czwvdmFyPgogICAgYXJndW1lbnQgY2FuIGJlIHVzZWQgdG8gcmV0dXJuIG90aGVyIEhUVFAgc3RhdHVzIGNvZGVzOjwvcD4KCiAgICA8ZGw+CiAgICAgIDxkdD5wZXJtYW5lbnQ8L2R0PgoKICAgICAgPGRkPlJldHVybnMgYSBwZXJtYW5lbnQgcmVkaXJlY3Qgc3RhdHVzICgzMDEpIGluZGljYXRpbmcgdGhhdAogICAgICB0aGUgcmVzb3VyY2UgaGFzIG1vdmVkIHBlcm1hbmVudGx5LjwvZGQ+CgogICAgICA8ZHQ+dGVtcDwvZHQ+CgogICAgICA8ZGQ+UmV0dXJucyBhIHRlbXBvcmFyeSByZWRpcmVjdCBzdGF0dXMgKDMwMikuIFRoaXMgaXMgdGhlCiAgICAgIGRlZmF1bHQuPC9kZD4KCiAgICAgIDxkdD5zZWVvdGhlcjwvZHQ+CgogICAgICA8ZGQ+UmV0dXJucyBhICJTZWUgT3RoZXIiIHN0YXR1cyAoMzAzKSBpbmRpY2F0aW5nIHRoYXQgdGhlCiAgICAgIHJlc291cmNlIGhhcyBiZWVuIHJlcGxhY2VkLjwvZGQ+CgogICAgICA8ZHQ+Z29uZTwvZHQ+CgogICAgICA8ZGQ+UmV0dXJucyBhICJHb25lIiBzdGF0dXMgKDQxMCkgaW5kaWNhdGluZyB0aGF0IHRoZQogICAgICByZXNvdXJjZSBoYXMgYmVlbiBwZXJtYW5lbnRseSByZW1vdmVkLiBXaGVuIHRoaXMgc3RhdHVzIGlzCiAgICAgIHVzZWQgdGhlIDx2YXI+VVJMPC92YXI+IGFyZ3VtZW50IHNob3VsZCBiZSBvbWl0dGVkLjwvZGQ+CiAgICA8L2RsPgoKICAgIDxwPk90aGVyIHN0YXR1cyBjb2RlcyBjYW4gYmUgcmV0dXJuZWQgYnkgZ2l2aW5nIHRoZSBudW1lcmljCiAgICBzdGF0dXMgY29kZSBhcyB0aGUgdmFsdWUgb2YgPHZhcj5zdGF0dXM8L3Zhcj4uIElmIHRoZSBzdGF0dXMgaXMKICAgIGJldHdlZW4gMzAwIGFuZCAzOTksIHRoZSA8dmFyPlVSTDwvdmFyPiBhcmd1bWVudCBtdXN0IGJlIHByZXNlbnQsCiAgICBvdGhlcndpc2UgaXQgbXVzdCBiZSBvbWl0dGVkLiBOb3RlIHRoYXQgdGhlIHN0YXR1cyBtdXN0IGJlCiAgICBrbm93biB0byB0aGUgQXBhY2hlIGNvZGUgKHNlZSB0aGUgZnVuY3Rpb24KICAgIDxjb2RlPnNlbmRfZXJyb3JfcmVzcG9uc2U8L2NvZGU+IGluIGh0dHBfcHJvdG9jb2wuYykuPC9wPgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxoMz5FeGFtcGxlOjwvaDM+PHA+PGNvZGU+CiAgICAgIFJlZGlyZWN0IHBlcm1hbmVudCAvb25lIGh0dHA6Ly9leGFtcGxlLmNvbS90d288YnIgLz4KICAgICAgUmVkaXJlY3QgMzAzIC90aHJlZSBodHRwOi8vZXhhbXBsZS5jb20vb3RoZXIKICAgIDwvY29kZT48L3A+PC9kaXY+CgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IlJlZGlyZWN0TWF0Y2giIGlkPSJSZWRpcmVjdE1hdGNoIj5SZWRpcmVjdE1hdGNoPC9hPiA8YSBuYW1lPSJyZWRpcmVjdG1hdGNoIiBpZD0icmVkaXJlY3RtYXRjaCI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+U2VuZHMgYW4gZXh0ZXJuYWwgcmVkaXJlY3QgYmFzZWQgb24gYSByZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2ggCm9mIHRoZSBjdXJyZW50IFVSTDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5SZWRpcmVjdE1hdGNoIFs8dmFyPnN0YXR1czwvdmFyPl0gPHZhcj5yZWdleDwvdmFyPgo8dmFyPlVSTDwvdmFyPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnLCB2aXJ0dWFsIGhvc3QsIGRpcmVjdG9yeSwgLmh0YWNjZXNzPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjT3ZlcnJpZGUiPk92ZXJyaWRlOjwvYT48L3RoPjx0ZD5GaWxlSW5mbzwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N0YXR1cyI+U3RhdHVzOjwvYT48L3RoPjx0ZD5CYXNlPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjTW9kdWxlIj5Nb2R1bGU6PC9hPjwvdGg+PHRkPm1vZF9hbGlhczwvdGQ+PC90cj4KPC90YWJsZT4KICAgIDxwPlRoaXMgZGlyZWN0aXZlIGlzIGVxdWl2YWxlbnQgdG8gPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+PGEgaHJlZj0iI3JlZGlyZWN0Ij5SZWRpcmVjdDwvYT48L2NvZGU+LCBidXQgbWFrZXMgdXNlIG9mIHN0YW5kYXJkCiAgICByZWd1bGFyIGV4cHJlc3Npb25zLCBpbnN0ZWFkIG9mIHNpbXBsZSBwcmVmaXggbWF0Y2hpbmcuIFRoZQogICAgc3VwcGxpZWQgcmVndWxhciBleHByZXNzaW9uIGlzIG1hdGNoZWQgYWdhaW5zdCB0aGUgVVJMLXBhdGgsIGFuZAogICAgaWYgaXQgbWF0Y2hlcywgdGhlIHNlcnZlciB3aWxsIHN1YnN0aXR1dGUgYW55IHBhcmVudGhlc2l6ZWQKICAgIG1hdGNoZXMgaW50byB0aGUgZ2l2ZW4gc3RyaW5nIGFuZCB1c2UgaXQgYXMgYSBmaWxlbmFtZS4gRm9yCiAgICBleGFtcGxlLCB0byByZWRpcmVjdCBhbGwgR0lGIGZpbGVzIHRvIGxpa2UtbmFtZWQgSlBFRyBmaWxlcyBvbgogICAgYW5vdGhlciBzZXJ2ZXIsIG9uZSBtaWdodCB1c2U6PC9wPgoKICAgIDxkaXYgY2xhc3M9ImV4YW1wbGUiPjxwPjxjb2RlPgogICAgICBSZWRpcmVjdE1hdGNoICguKilcLmdpZiQgaHR0cDovL3d3dy5hbm90aGVyc2VydmVyLmNvbSQxLmpwZwogICAgPC9jb2RlPjwvcD48L2Rpdj4KCjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b3AiPjxhIGhyZWY9IiNwYWdlLWhlYWRlciI+PGltZyBhbHQ9InRvcCIgc3JjPSIuLi9pbWFnZXMvdXAuZ2lmIiAvPjwvYT48L2Rpdj4KPGRpdiBjbGFzcz0iZGlyZWN0aXZlLXNlY3Rpb24iPjxoMj48YSBuYW1lPSJSZWRpcmVjdFBlcm1hbmVudCIgaWQ9IlJlZGlyZWN0UGVybWFuZW50Ij5SZWRpcmVjdFBlcm1hbmVudDwvYT4gPGEgbmFtZT0icmVkaXJlY3RwZXJtYW5lbnQiIGlkPSJyZWRpcmVjdHBlcm1hbmVudCI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+U2VuZHMgYW4gZXh0ZXJuYWwgcGVybWFuZW50IHJlZGlyZWN0IGFza2luZyB0aGUgY2xpZW50IHRvIGZldGNoCmEgZGlmZmVyZW50IFVSTDwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI1N5bnRheCI+U3ludGF4OjwvYT48L3RoPjx0ZD48Y29kZT5SZWRpcmVjdFBlcm1hbmVudCA8dmFyPlVSTC1wYXRoPC92YXI+IDx2YXI+VVJMPC92YXI+PC9jb2RlPjwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0NvbnRleHQiPkNvbnRleHQ6PC9hPjwvdGg+PHRkPnNlcnZlciBjb25maWcsIHZpcnR1YWwgaG9zdCwgZGlyZWN0b3J5LCAuaHRhY2Nlc3M8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNPdmVycmlkZSI+T3ZlcnJpZGU6PC9hPjwvdGg+PHRkPkZpbGVJbmZvPC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkJhc2U8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2FsaWFzPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VGhpcyBkaXJlY3RpdmUgbWFrZXMgdGhlIGNsaWVudCBrbm93IHRoYXQgdGhlIFJlZGlyZWN0IGlzCiAgICBwZXJtYW5lbnQgKHN0YXR1cyAzMDEpLiBFeGFjdGx5IGVxdWl2YWxlbnQgdG8gPGNvZGU+UmVkaXJlY3QKICAgIHBlcm1hbmVudDwvY29kZT4uPC9wPgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IlJlZGlyZWN0VGVtcCIgaWQ9IlJlZGlyZWN0VGVtcCI+UmVkaXJlY3RUZW1wPC9hPiA8YSBuYW1lPSJyZWRpcmVjdHRlbXAiIGlkPSJyZWRpcmVjdHRlbXAiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPlNlbmRzIGFuIGV4dGVybmFsIHRlbXBvcmFyeSByZWRpcmVjdCBhc2tpbmcgdGhlIGNsaWVudCB0byBmZXRjaAphIGRpZmZlcmVudCBVUkw8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+UmVkaXJlY3RUZW1wIDx2YXI+VVJMLXBhdGg8L3Zhcj4gPHZhcj5VUkw8L3Zhcj48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZywgdmlydHVhbCBob3N0LCBkaXJlY3RvcnksIC5odGFjY2VzczwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI092ZXJyaWRlIj5PdmVycmlkZTo8L2E+PC90aD48dGQ+RmlsZUluZm88L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+QmFzZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfYWxpYXM8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5UaGlzIGRpcmVjdGl2ZSBtYWtlcyB0aGUgY2xpZW50IGtub3cgdGhhdCB0aGUgUmVkaXJlY3QgaXMKICAgIG9ubHkgdGVtcG9yYXJ5IChzdGF0dXMgMzAyKS4gRXhhY3RseSBlcXVpdmFsZW50IHRvCiAgICA8Y29kZT5SZWRpcmVjdCB0ZW1wPC9jb2RlPi48L3A+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wIj48YSBocmVmPSIjcGFnZS1oZWFkZXIiPjxpbWcgYWx0PSJ0b3AiIHNyYz0iLi4vaW1hZ2VzL3VwLmdpZiIgLz48L2E+PC9kaXY+CjxkaXYgY2xhc3M9ImRpcmVjdGl2ZS1zZWN0aW9uIj48aDI+PGEgbmFtZT0iU2NyaXB0QWxpYXMiIGlkPSJTY3JpcHRBbGlhcyI+U2NyaXB0QWxpYXM8L2E+IDxhIG5hbWU9InNjcmlwdGFsaWFzIiBpZD0ic2NyaXB0YWxpYXMiPkRpcmVjdGl2ZTwvYT48L2gyPgo8dGFibGUgY2xhc3M9ImRpcmVjdGl2ZSI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNEZXNjcmlwdGlvbiI+RGVzY3JpcHRpb246PC9hPjwvdGg+PHRkPk1hcHMgYSBVUkwgdG8gYSBmaWxlc3lzdGVtIGxvY2F0aW9uIGFuZCBkZXNpZ25hdGVzIHRoZQp0YXJnZXQgYXMgYSBDR0kgc2NyaXB0PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3ludGF4Ij5TeW50YXg6PC9hPjwvdGg+PHRkPjxjb2RlPlNjcmlwdEFsaWFzIDx2YXI+VVJMLXBhdGg8L3Zhcj4KPHZhcj5maWxlLXBhdGg8L3Zhcj58PHZhcj5kaXJlY3RvcnktcGF0aDwvdmFyPjwvY29kZT48L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNDb250ZXh0Ij5Db250ZXh0OjwvYT48L3RoPjx0ZD5zZXJ2ZXIgY29uZmlnLCB2aXJ0dWFsIGhvc3Q8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTdGF0dXMiPlN0YXR1czo8L2E+PC90aD48dGQ+QmFzZTwvdGQ+PC90cj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI01vZHVsZSI+TW9kdWxlOjwvYT48L3RoPjx0ZD5tb2RfYWxpYXM8L3RkPjwvdHI+CjwvdGFibGU+CiAgICA8cD5UaGUgPGNvZGUgY2xhc3M9ImRpcmVjdGl2ZSI+U2NyaXB0QWxpYXM8L2NvZGU+IGRpcmVjdGl2ZSBoYXMgdGhlIHNhbWUKICAgIGJlaGF2aW9yIGFzIHRoZSA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjYWxpYXMiPkFsaWFzPC9hPjwvY29kZT4KICAgIGRpcmVjdGl2ZSwgZXhjZXB0IHRoYXQgaW4gYWRkaXRpb24gaXQgbWFya3MgdGhlIHRhcmdldCBkaXJlY3RvcnkKICAgIGFzIGNvbnRhaW5pbmcgQ0dJIHNjcmlwdHMgdGhhdCB3aWxsIGJlIHByb2Nlc3NlZCBieSA8Y29kZSBjbGFzcz0ibW9kdWxlIj48YSBocmVmPSIuLi9tb2QvbW9kX2NnaS5odG1sIj5tb2RfY2dpPC9hPjwvY29kZT4ncyBjZ2ktc2NyaXB0IGhhbmRsZXIuIFVSTHMgd2l0aCBhCiAgICAoJS1kZWNvZGVkKSBwYXRoIGJlZ2lubmluZyB3aXRoIDx2YXI+VVJMLXBhdGg8L3Zhcj4gd2lsbCBiZSBtYXBwZWQKICAgIHRvIHNjcmlwdHMgYmVnaW5uaW5nIHdpdGggdGhlIHNlY29uZCBhcmd1bWVudCB3aGljaCBpcyBhIGZ1bGwKICAgIHBhdGhuYW1lIGluIHRoZSBsb2NhbCBmaWxlc3lzdGVtLjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48aDM+RXhhbXBsZTo8L2gzPjxwPjxjb2RlPgogICAgICBTY3JpcHRBbGlhcyAvY2dpLWJpbi8gL3dlYi9jZ2ktYmluLwogICAgPC9jb2RlPjwvcD48L2Rpdj4KCiAgICA8cD5BIHJlcXVlc3QgZm9yIDxjb2RlPmh0dHA6Ly9teXNlcnZlci9jZ2ktYmluL2ZvbzwvY29kZT4gd291bGQgY2F1c2UgdGhlCiAgICBzZXJ2ZXIgdG8gcnVuIHRoZSBzY3JpcHQgPGNvZGU+L3dlYi9jZ2ktYmluL2ZvbzwvY29kZT4uPC9wPgoKPC9kaXY+CjxkaXYgY2xhc3M9InRvcCI+PGEgaHJlZj0iI3BhZ2UtaGVhZGVyIj48aW1nIGFsdD0idG9wIiBzcmM9Ii4uL2ltYWdlcy91cC5naWYiIC8+PC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXJlY3RpdmUtc2VjdGlvbiI+PGgyPjxhIG5hbWU9IlNjcmlwdEFsaWFzTWF0Y2giIGlkPSJTY3JpcHRBbGlhc01hdGNoIj5TY3JpcHRBbGlhc01hdGNoPC9hPiA8YSBuYW1lPSJzY3JpcHRhbGlhc21hdGNoIiBpZD0ic2NyaXB0YWxpYXNtYXRjaCI+RGlyZWN0aXZlPC9hPjwvaDI+Cjx0YWJsZSBjbGFzcz0iZGlyZWN0aXZlIj4KPHRyPjx0aD48YSBocmVmPSJkaXJlY3RpdmUtZGljdC5odG1sI0Rlc2NyaXB0aW9uIj5EZXNjcmlwdGlvbjo8L2E+PC90aD48dGQ+TWFwcyBhIFVSTCB0byBhIGZpbGVzeXN0ZW0gbG9jYXRpb24gdXNpbmcgYSByZWd1bGFyIGV4cHJlc3Npb24KYW5kIGRlc2lnbmF0ZXMgdGhlIHRhcmdldCBhcyBhIENHSSBzY3JpcHQ8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNTeW50YXgiPlN5bnRheDo8L2E+PC90aD48dGQ+PGNvZGU+U2NyaXB0QWxpYXNNYXRjaCA8dmFyPnJlZ2V4PC92YXI+Cjx2YXI+ZmlsZS1wYXRoPC92YXI+fDx2YXI+ZGlyZWN0b3J5LXBhdGg8L3Zhcj48L2NvZGU+PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjQ29udGV4dCI+Q29udGV4dDo8L2E+PC90aD48dGQ+c2VydmVyIGNvbmZpZywgdmlydHVhbCBob3N0PC90ZD48L3RyPgo8dHI+PHRoPjxhIGhyZWY9ImRpcmVjdGl2ZS1kaWN0Lmh0bWwjU3RhdHVzIj5TdGF0dXM6PC9hPjwvdGg+PHRkPkJhc2U8L3RkPjwvdHI+Cjx0cj48dGg+PGEgaHJlZj0iZGlyZWN0aXZlLWRpY3QuaHRtbCNNb2R1bGUiPk1vZHVsZTo8L2E+PC90aD48dGQ+bW9kX2FsaWFzPC90ZD48L3RyPgo8L3RhYmxlPgogICAgPHA+VGhpcyBkaXJlY3RpdmUgaXMgZXF1aXZhbGVudCB0byA8Y29kZSBjbGFzcz0iZGlyZWN0aXZlIj48YSBocmVmPSIjc2NyaXB0YWxpYXMiPlNjcmlwdEFsaWFzPC9hPjwvY29kZT4sIGJ1dCBtYWtlcyB1c2Ugb2Ygc3RhbmRhcmQKICAgIHJlZ3VsYXIgZXhwcmVzc2lvbnMsIGluc3RlYWQgb2Ygc2ltcGxlIHByZWZpeCBtYXRjaGluZy4gVGhlCiAgICBzdXBwbGllZCByZWd1bGFyIGV4cHJlc3Npb24gaXMgbWF0Y2hlZCBhZ2FpbnN0IHRoZSBVUkwtcGF0aCwKICAgIGFuZCBpZiBpdCBtYXRjaGVzLCB0aGUgc2VydmVyIHdpbGwgc3Vic3RpdHV0ZSBhbnkgcGFyZW50aGVzaXplZAogICAgbWF0Y2hlcyBpbnRvIHRoZSBnaXZlbiBzdHJpbmcgYW5kIHVzZSBpdCBhcyBhIGZpbGVuYW1lLiBGb3IKICAgIGV4YW1wbGUsIHRvIGFjdGl2YXRlIHRoZSBzdGFuZGFyZCA8Y29kZT4vY2dpLWJpbjwvY29kZT4sIG9uZQogICAgbWlnaHQgdXNlOjwvcD4KCiAgICA8ZGl2IGNsYXNzPSJleGFtcGxlIj48cD48Y29kZT4KICAgICAgU2NyaXB0QWxpYXNNYXRjaCBeL2NnaS1iaW4oLiopIC91c3IvbG9jYWwvYXBhY2hlL2NnaS1iaW4kMQogICAgPC9jb2RlPjwvcD48L2Rpdj4KCjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iYm90dG9tbGFuZyI+CjxwPjxzcGFuPkF2YWlsYWJsZSBMYW5ndWFnZXM6IDwvc3Bhbj48YSBocmVmPSIuLi9lbi9tb2QvbW9kX2FsaWFzLmh0bWwiIHRpdGxlPSJFbmdsaXNoIj4mbmJzcDtlbiZuYnNwOzwvYT4gfAo8YSBocmVmPSIuLi9qYS9tb2QvbW9kX2FsaWFzLmh0bWwiIGhyZWZsYW5nPSJqYSIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJKYXBhbmVzZSI+Jm5ic3A7amEmbmJzcDs8L2E+IHwKPGEgaHJlZj0iLi4va28vbW9kL21vZF9hbGlhcy5odG1sIiBocmVmbGFuZz0ia28iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iS29yZWFuIj4mbmJzcDtrbyZuYnNwOzwvYT48L3A+CjwvZGl2PjxkaXYgaWQ9ImZvb3RlciI+CjxwIGNsYXNzPSJhcGFjaGUiPkNvcHlyaWdodCAxOTk1LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG9yIGl0cyBsaWNlbnNvcnMsIGFzIGFwcGxpY2FibGUuPGJyIC8+TGljZW5zZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCI+QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wPC9hPi48L3A+CjxwIGNsYXNzPSJtZW51Ij48YSBocmVmPSIuLi9tb2QvIj5Nb2R1bGVzPC9hPiB8IDxhIGhyZWY9Ii4uL21vZC9kaXJlY3RpdmVzLmh0bWwiPkRpcmVjdGl2ZXM8L2E+IHwgPGEgaHJlZj0iLi4vZmFxLyI+RkFRPC9hPiB8IDxhIGhyZWY9Ii4uL2dsb3NzYXJ5Lmh0bWwiPkdsb3NzYXJ5PC9hPiB8IDxhIGhyZWY9Ii4uL3NpdGVtYXAuaHRtbCI+U2l0ZW1hcDwvYT48L3A+PC9kaXY+CjwvYm9keT48L2h0bWw+