ytdl-org / youtube-dl

Command-line program to download videos from YouTube.com and other video sites
http://ytdl-org.github.io/youtube-dl/
The Unlicense
132.24k stars 10.03k forks source link

Receiving 403 Forbidden error when video is accessible in browser #26919

Open kristophercrawford opened 4 years ago

kristophercrawford commented 4 years ago

Checklist

Question

I am attempting to download a video from the website documentarymania.com and am not able to download some videos. I can access these videos in a browser normally. I have tried changing the user agent used by youtube-dl and setup an EC2 instance and tried from there as well to rule out my IP address being filtered. Verbose output is below:

(doc_download) root@lxc10:~/doc_download# youtube-dl --verbose --print-traffic --dump-page https://www.documentarymania.com/player.php?title=The+Body+vs+Coronavirus
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['--verbose', '--print-traffic', '--dump-page', 'https://www.documentarymania.com/player.php?title=The+Body+vs+Coronavirus']
[debug] Encodings: locale UTF-8, fs utf-8, out utf-8, pref UTF-8
[debug] youtube-dl version 2020.09.20
[debug] Python version 3.7.3 (CPython) - Linux-5.4.65-1-pve-x86_64-with-debian-10.6
[debug] exe versions: none
[debug] Proxy map: {}
[generic] player: Requesting header
send: b'HEAD /player.php?title=The+Body+vs+Coronavirus HTTP/1.1\r\nHost: www.documentarymania.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.20 Safari/537.36\r\nAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: en-us,en;q=0.5\r\nConnection: close\r\n\r\n'
reply: 'HTTP/1.1 200 OK\r\n'
header: Server: nginx
header: Date: Sun, 18 Oct 2020 00:51:19 GMT
header: Content-Type: text/html; charset=UTF-8
header: Connection: close
header: Vary: Accept-Encoding
header: X-Powered-By: PHP/5.6.40
header: Expires: Thu, 19 Nov 1981 08:52:00 GMT
header: Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
header: Pragma: no-cache
header: Set-Cookie: PHPSESSID=8or0c0us88neoj1fr22tprltk5; path=/
header: Strict-Transport-Security: max-age=31536000
header: Content-Encoding: gzip
WARNING: Falling back on generic information extractor.
[generic] player: Downloading webpage
send: b'GET /player.php?title=The+Body+vs+Coronavirus HTTP/1.1\r\nHost: www.documentarymania.com\r\nCookie: PHPSESSID=8or0c0us88neoj1fr22tprltk5\r\nAccept-Encoding: *\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.20 Safari/537.36\r\nAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-us,en;q=0.5\r\nConnection: close\r\n\r\n'
reply: 'HTTP/1.1 200 OK\r\n'
header: Server: nginx
header: Date: Sun, 18 Oct 2020 00:51:19 GMT
header: Content-Type: text/html; charset=UTF-8
header: Transfer-Encoding: chunked
header: Connection: close
header: Vary: Accept-Encoding
header: X-Powered-By: PHP/5.6.40
header: Expires: Thu, 19 Nov 1981 08:52:00 GMT
header: Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
header: Pragma: no-cache
header: Strict-Transport-Security: max-age=31536000
[generic] Dumping request to https://www.documentarymania.com/player.php?title=The+Body+vs+Coronavirus
CjwhRE9DVFlQRSBodG1sPgoJPGh0bWwgbGFuZz0iZW4tVVMiIHByZWZpeD0ib2c6IGh0dHA6Ly9vZ3AubWUvbnMjIGZiOiBodHRwOi8vb2dwLm1lL25zL2ZiIyI+CiAgICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04IiAvPgogICAgICAgIDx0aXRsZT5UaGUgQm9keSB2cyBDb3JvbmF2aXJ1cyBXYXRjaCBvbmxpbmUgZnVsbCBtb3ZpZSAtIERvY3VtZW50YXJ5IE1hbmlhPC90aXRsZT4KICAgICAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgICAgICAgICAgICAgICAKICAgICAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9Ii9GYXZpY29ucy9hcHBsZS1pY29uLTE4MHgxODAucG5nIj4KCSAgIAk8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgc2l6ZXM9IjMyeDMyIiBocmVmPSIvRmF2aWNvbnMvZmF2aWNvbi0zMngzMi5wbmciPgoJICAgCTxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2UvcG5nIiBzaXplcz0iOTZ4OTYiIGhyZWY9Ii9GYXZpY29ucy9mYXZpY29uLTk2eDk2LnBuZyI+CgkgICAgPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS9wbmciIHNpemVzPSIxNngxNiIgaHJlZj0iL0Zhdmljb25zL2Zhdmljb24tMTZ4MTYucG5nIj4KICAgICAgICAKICAgICAgICA8bWV0YSBuYW1lPSJyb2JvdHMiIGNvbnRlbnQ9Im5vb2RwLG5veWRpciIgLz4KICAgICAgICAKICAgICAgICA8bWV0YSBuYW1lPSJEZXNjcmlwdGlvbiIgY29udGVudD0iSG93IGNhbiB3ZSBjb3BlIHdpdGggdGhlIHRyaWNreSBjb3JvbmF2aXJ1cyBub3cgcmFtcGFudCB3b3JsZHdpZGU/IEFzIHRoZSBwYW5kZW1pYyB0aWdodGVucyBpdHMuLi4iIC8+CiAgCQk8bWV0YSBuYW1lPSJLZXl3b3JkcyIgY29udGVudD0iTWVkaWNpbmUsIERpc2Vhc2VzLCBUaGVyYXBpZXMsIFZpcnVzLCBDb3ZpZC0xOSwgQ29yb25hdmlydXMsIFBhbmRlbWljLCBJbW11bml0eSwgSW1tdW5lIFN5c3RlbSwgVCBjZWxsLCBBbnRpYm9kaWVzLCBWYWNjaW5lIi8+CiAgICAKCSAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dGl0bGUiIGNvbnRlbnQ9IlRoZSBCb2R5IHZzIENvcm9uYXZpcnVzIFdhdGNoIG9ubGluZSBmdWxsIG1vdmllIC0gRG9jdW1lbnRhcnkgTWFuaWEiIC8+CiAJICAgCTxtZXRhIHByb3BlcnR5PSJvZzp0eXBlIiBjb250ZW50PSJ2aWRlby5tb3ZpZSIgLz4KIAkgICAJPG1ldGEgcHJvcGVydHk9Im9nOnVybCIgY29udGVudD0iaHR0cHM6Ly93d3cuZG9jdW1lbnRhcnltYW5pYS5jb20vcGxheWVyLnBocD90aXRsZT1UaGUlMjBCb2R5JTIwdnMlMjBDb3JvbmF2aXJ1cyIgLz4KIAkgICAJPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlIiBjb250ZW50PSJodHRwczovL3d3dy5kb2N1bWVudGFyeW1hbmlhLmNvbS9pY29ub3MvdGh1bWJuYWlscy90bl9UaGUuQm9keS5Wcy5Db3JvbmF2aXJ1cy5qcGciIC8+CiAgICAgICAgPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlOndpZHRoIiBjb250ZW50PSIxMjAwIiAvPgoJCTxtZXRhIHByb3BlcnR5PSJvZzppbWFnZTpoZWlnaHQiIGNvbnRlbnQ9IjYzMCIgLz4KICAgICAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkhvdyBjYW4gd2UgY29wZSB3aXRoIHRoZSB0cmlja3kgY29yb25hdmlydXMgbm93IHJhbXBhbnQgd29ybGR3aWRlPyBBcyB0aGUgcGFuZGVtaWMgdGlnaHRlbnMgaXRzLi4uIiAvPgogICAgCTxtZXRhIHByb3BlcnR5PSJmYjphZG1pbnMiIGNvbnRlbnQ9IjEwMDAwOTc0ODYyNjQ3NiIgLz4KICAgIAk8bWV0YSBwcm9wZXJ0eT0iZmI6YXBwX2lkIiBjb250ZW50PSIxMTI5MjYxOTgwNDE5NDQ1IiAvPgoJCTxtZXRhIG5hbWU9InR3aXR0ZXI6Y2FyZCIgY29udGVudD0ic3VtbWFyeSIgLz4KICAgIAk8bWV0YSBuYW1lPSJ0d2l0dGVyOnNpdGUiIGNvbnRlbnQ9IkBEb2N1bWVudHJ5bWFuaWEiIC8+CgkJPG1ldGEgbmFtZT0idHdpdHRlcjpjcmVhdG9yIiBjb250ZW50PSJARG9jdW1lbnRyeW1hbmlhIiAvPgogICAgICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6aW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vd3d3LmRvY3VtZW50YXJ5bWFuaWEuY29tL2ljb25vcy9UaGUuQm9keS5Wcy5Db3JvbmF2aXJ1cy5qcGciIC8+CiAgICAgICAgPGxpbmsgcmVsPSJjYW5vbmljYWwiIGhyZWY9Imh0dHA6Ly93d3cuZG9jdW1lbnRhcnltYW5pYS5jb20vcGxheWVyLnBocD90aXRsZT1UaGUgQm9keSB2cyBDb3JvbmF2aXJ1cyIgLz4KIAogICAgICAgICAgIAogPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9sZCtqc29uIj4KewogICJAY29udGV4dCI6ICJodHRwOi8vc2NoZW1hLm9yZyIsCiAgIkB0eXBlIjogIlZpZGVvT2JqZWN0IiwKICAibmFtZSI6ICJUaGUgQm9keSB2cyBDb3JvbmF2aXJ1cyIsCiAgImRlc2NyaXB0aW9uIjogIkhvdyBjYW4gd2UgY29wZSB3aXRoIHRoZSB0cmlja3kgY29yb25hdmlydXMgbm93IHJhbXBhbnQgd29ybGR3aWRlPyBBcyB0aGUgcGFuZGVtaWMgdGlnaHRlbnMgaXRzIGdyaXAgb24gdGhlIHdvcmxkLCB0aGVyZSBhcmUgaW1wb3J0YW50IHVuYW5zd2VyZWQgcXVlc3Rpb25zIGFib3V0IHRoaXMgbm92ZWwgdmlydXM6IFdoeSBkb2VzIHRoaXMgaW5mZWN0aW9uIHNwcmVhZCBzbyByYXBpZGx5IGZyb20gcGVvcGxlIHdpdGggbm8gc3ltcHRvbXM/IFdoeSBkbyBzb21lIHBlb3BsZSBiZWNvbWUgY3JpdGljYWwgd2hpbGUgb3RoZXJzIGRvbid0PyBXaWxsIGEgZGVmaW5pdGl2ZSB0cmVhdG1lbnQgYmUgZm91bmQ/IFRoZSB1bmRlcmx5aW5nIGtleSB0byB0aGVzZSBxdWVzdGlvbnMgbGllIGluIG91ciBpbW11bmUgc3lzdGVtLiBJbW11bmUgY2VsbHMgYXJlIG1pY3Jvc2NvcGljIHdhcnJpb3JzLCBjb21iYXRpbmcgdmlydXNlcyBhbmQgYW5vdGhlciBwYXRob2dlbnMuIDxicj4gVGhyb3VnaCB0aGUgaGlnaC10ZWNoICdleWVzJyBvZiBuZXh0LWdlbmVyYXRpb24gbWljcm9zY29wZXMgYW5kIGNvbXB1dGVyLWdlbmVyYXRlZCBpbWFnZXJ5LCB3ZSB3aWxsIHNlZSBob3cgb3VyIGltbXVuZSBkZWZlbnNlIGNvcnBzIGNvbWJhdCBhZ2FpbnN0IG1pY3JvYmVzIGFuZCB3aGF0IG1lY2hhbmlzbSBpcyBleHBlY3RlZCB0byBoZWxwIGRldmVsb3AgdHJlYXRtZW50LiAiLAogICJ0aHVtYm5haWxVcmwiOiAiaHR0cHM6Ly93d3cuZG9jdW1lbnRhcnltYW5pYS5jb20vaWNvbm9zL1RoZS5Cb2R5LlZzLkNvcm9uYXZpcnVzLmpwZyIsCiAgInVwbG9hZERhdGUiOiAiMjAyMC0xMC0wOCAwOTo1Mzo0NFoiLAogICJkdXJhdGlvbiI6ICJQVDUxTTMwUyIsCiAgImNvbnRlbnRVcmwiOiAiaHR0cHM6Ly93d3cuZG9jdW1lbnRhcnltYW5pYS5jb20vVmlkZW9zLyIsCiAgImVtYmVkVXJsIjogImh0dHBzOi8vd3d3LmRvY3VtZW50YXJ5bWFuaWEuY29tL3BsYXllci5waHA/dGl0bGU9VGhlIEJvZHkgdnMgQ29yb25hdmlydXMiLAogICJpbnRlcmFjdGlvbkNvdW50IjogIjM0NDUiCn0KPC9zY3JpcHQ+ICAgICAgIAoKPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJPbmUvY3NzL3Jlc3VtZS5jc3MiIHR5cGU9InRleHQvY3NzIiAvPgo8bGluayBocmVmPScvL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9Um9ib3RvK0NvbmRlbnNlZDo0MDAsNzAwaXRhbGljLDcwMCw0MDBpdGFsaWMsMzAwaXRhbGljLDMwMCcgcmVsPSdzdHlsZXNoZWV0JyB0eXBlPSd0ZXh0L2Nzcyc+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iUGxheWVyL3N0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiIC8+CgoJPHNjcmlwdCBzcmM9Ii8vYWpheC5nb29nbGVhcGlzLmNvbS9hamF4L2xpYnMvanF1ZXJ5LzIuMS40L2pxdWVyeS5taW4uanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBkZWZlciB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iT25lL2pzL2RlZmVyLmpzIj48L3NjcmlwdD4KICAgIAogICAJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUGxheWVyL0pXUGxheWVyOC5qcyIgPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUGxheWVyL2p3cGxheWVyLmNvcmUuY29udHJvbHMuanMiID48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5qd3BsYXllci5rZXk9IkJrcVFmOGN5ZkprT3AreUErSkxKWFQwalhZdnNPNldMYmZSUmthMlRucWlJeVNqSGQ3SVVxUT09Ijs8L3NjcmlwdD4gIAoKPGxpbmsgaHJlZj0iT25lL2Nzcy9vd2wuY2Fyb3VzZWwubWluLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCI+CjxzY3JpcHQgZGVmZXIgc3JjPSJPbmUvanMvb3dsLmNhcm91c2VsLm1pbi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgZGVmZXI+CgkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpeyQoIiNvd2wtZGVtbyIpLm93bENhcm91c2VsKHtzdG9wT25Ib3ZlcjohMCxhdXRvUGxheToyMTAwLGl0ZW1zOjIsaXRlbXNEZXNrdG9wOls2NDAsNV0saXRlbXNEZXNrdG9wU21hbGw6WzQxNCw0XSxpdGVtc01vYmlsZTpbMTUyLDJdfSksJCgiI293bC1kZW1vMiIpLm93bENhcm91c2VsKHthdXRvUGxheToyMjAwLHN0b3BPbkhvdmVyOiEwLGl0ZW1zOjIsaXRlbXNEZXNrdG9wOls2NDAsNV0saXRlbXNEZXNrdG9wU21hbGw6WzQxNCw0XSxpdGVtc01vYmlsZTpbMTUyLDJdfSksJCgiI293bC1kZW1vMyIpLm93bENhcm91c2VsKHthdXRvUGxheToyZTMsc3RvcE9uSG92ZXI6ITAsaXRlbXM6MixpdGVtc0Rlc2t0b3A6WzY0MCw1XSxpdGVtc0Rlc2t0b3BTbWFsbDpbNDE0LDRdLGl0ZW1zTW9iaWxlOlsxNTIsMl19KX0pOwo8L3NjcmlwdD4KCjxzY3JpcHQ+CgkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpICAgewoJCSQoJyNsaWdodGJveF9hcmVhJykuY3NzKHsiZGlzcGxheSI6Im5vbmUifSk7CiAJCXZhciBudW1iZXIgPSAxICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogIDMpOyBpZiAobnVtYmVyPj0zKSB7CSAgICAgICQoJyNsaWdodGJveF9hcmVhJykuY3NzKHsiZGlzcGxheSI6ImJsb2NrIn0pOwoJCSAgJCgnI2xpZ2h0Ym94X2FyZWEnKS5jc3Moe29wYWNpdHk6MC4wMX0pOwoJCX0KICAgICAgZWxzZQogICAgICAgICAgJCgnI2xpZ2h0Ym94X2FyZWEnKS5jc3MoeyJkaXNwbGF5Ijoibm9uZSJ9KTsKICAgICB9KTsKPC9zY3JpcHQ+Cgo8c2NyaXB0PgpqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCQpewoJZm9jdXMoKTsKCQkJJCh3aW5kb3cpLmJsdXIoZnVuY3Rpb24oZSkgewoJCQkJc2V0VGltZW91dChmdW5jdGlvbigpIHsKCQkJJCgnI2xpZ2h0Ym94X2FyZWEnKS5jc3MoeyJkaXNwbGF5Ijoibm9uZSJ9KTsKCQkgICB9LCAzMDApOwkJCQogICAgIAl9KTsKfSk7Cjwvc2NyaXB0PgoKPHNjcmlwdD4KalF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigkKXsKCSQoIi53dGhyZWUtbmV3cy1sZWZ0IikuY2xpY2soZnVuY3Rpb24oKXsKCQlzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewkKICAgIAkJJCgiI2xpZ2h0Ym94X2FyZWEiKS5oaWRlKCk7CQoJCX0sIDQwMCk7Cn0pOwp9KTsKPC9zY3JpcHQ+Cgo8c2NyaXB0IGFzeW5jPSdhc3luYycgc3JjPSdodHRwczovL3d3dy5nb29nbGV0YWdzZXJ2aWNlcy5jb20vdGFnL2pzL2dwdC5qcyc+PC9zY3JpcHQ+CjxzY3JpcHQ+CiAgdmFyIGdvb2dsZXRhZyA9IGdvb2dsZXRhZyB8fCB7fTsKICBnb29nbGV0YWcuY21kID0gZ29vZ2xldGFnLmNtZCB8fCBbXTsKPC9zY3JpcHQ+Cgo8c2NyaXB0PgogIGdvb2dsZXRhZy5jbWQucHVzaChmdW5jdGlvbigpIHsKICAgIGdvb2dsZXRhZy5kZWZpbmVTbG90KCcvMjE2Nzk0MDY5MDEvdHJlc2NpZW50b3N4MjUwJywgWzMwMCwgMjUwXSwgJ2Rpdi1ncHQtYWQtMTUxNjE0OTIwMzMxNy0wJykuYWRkU2VydmljZShnb29nbGV0YWcucHViYWRzKCkpOwogICAgZ29vZ2xldGFnLnB1YmFkcygpLmVuYWJsZVNpbmdsZVJlcXVlc3QoKTsKICAgIGdvb2dsZXRhZy5lbmFibGVTZXJ2aWNlcygpOwogIH0pOwo8L3NjcmlwdD4KCjxzY3JpcHQ+IAppZiAodG9wLmxvY2F0aW9uIT0gc2VsZi5sb2NhdGlvbikgewoJCQl0b3AubG9jYXRpb24gPSBzZWxmLmxvY2F0aW9uLmhyZWY7CgkJfQo8L3NjcmlwdD4KCjwhLS1ub3B0aW1pemUtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgpmdW5jdGlvbiBkb3dubG9hZEpTQXRPbmxvYWQoKXt2YXIgZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtkLnNyYz0iaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvanMvYWRzYnlnb29nbGUuanMiLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZCl9d2luZG93LmFkZEV2ZW50TGlzdGVuZXI/d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGRvd25sb2FkSlNBdE9ubG9hZCwhMSk6d2luZG93LmF0dGFjaEV2ZW50P3dpbmRvdy5hdHRhY2hFdmVudCgib25sb2FkIixkb3dubG9hZEpTQXRPbmxvYWQpOndpbmRvdy5vbmxvYWQ9ZG93bmxvYWRKU0F0T25sb2FkOwo8L3NjcmlwdD4KPCEtLS9ub3B0aW1pemUtLT4KCjxzY3JpcHQgZGVmZXI+CiAgICAgKGFkc2J5Z29vZ2xlID0gd2luZG93LmFkc2J5Z29vZ2xlIHx8IFtdKS5wdXNoKHsKICAgICAgICAgIGdvb2dsZV9hZF9jbGllbnQ6ICJjYS1wdWItMzk5NjE4OTA5NzIzMjU0NiIsCiAgICAgICAgICBlbmFibGVfcGFnZV9sZXZlbF9hZHM6IHRydWUKICAgICB9KTsKPC9zY3JpcHQ+CgoKPC9oZWFkPgoJCjxib2R5PgoKPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KLmp3LXN2Zy1pY29uLXNldHRpbmdzIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnL1BsYXllci9zdmcvSEQuc3ZnJyk7CiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Owp9Cjwvc3R5bGU+Cgo8c2NyaXB0PgpqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCQpewoJc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgIAkkKCcuaGlkJykuY3NzKHsiZGlzcGxheSI6Im5vbmUifSk7Cgl9LCAyNTAwKTsJCn0pOwo8L3NjcmlwdD4KPGRpdiBjbGFzcz0iaGlkIHRleHRfY2VudGVyIiBzdHlsZT0ib3BhY2l0eToxOyI+CjxkaXYgY2xhc3M9ImNvbC1tZC0zIj4KPHNjcmlwdCBhc3luYyBzcmM9Imh0dHBzOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL2pzL2Fkc2J5Z29vZ2xlLmpzIj48L3NjcmlwdD4KPCEtLSAzMDB4MjUwIC0tPgo8aW5zIGNsYXNzPSJhZHNieWdvb2dsZSIKICAgICBzdHlsZT0iZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MzAwcHg7aGVpZ2h0OjI1MHB4IgogICAgIGRhdGEtYWQtY2xpZW50PSJjYS1wdWItMzk5NjE4OTA5NzIzMjU0NiIKICAgICBkYXRhLWFkLXNsb3Q9IjQ0NTc5Nzg3ODYiPjwvaW5zPgo8c2NyaXB0PgogICAgIChhZHNieWdvb2dsZSA9IHdpbmRvdy5hZHNieWdvb2dsZSB8fCBbXSkucHVzaCh7fSk7Cjwvc2NyaXB0PgogICAgICAgICAgICA8L2Rpdj4gCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC0zIj4KPHNjcmlwdCBhc3luYyBzcmM9Imh0dHBzOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL2pzL2Fkc2J5Z29vZ2xlLmpzIj48L3NjcmlwdD4KPCEtLSAzMDB4MjUwIC0tPgo8aW5zIGNsYXNzPSJhZHNieWdvb2dsZSIKICAgICBzdHlsZT0iZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MzAwcHg7aGVpZ2h0OjI1MHB4IgogICAgIGRhdGEtYWQtY2xpZW50PSJjYS1wdWItMzk5NjE4OTA5NzIzMjU0NiIKICAgICBkYXRhLWFkLXNsb3Q9IjQ0NTc5Nzg3ODYiPjwvaW5zPgo8c2NyaXB0PgogICAgIChhZHNieWdvb2dsZSA9IHdpbmRvdy5hZHNieWdvb2dsZSB8fCBbXSkucHVzaCh7fSk7Cjwvc2NyaXB0PgogICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAKICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtMyI+CjxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9qcy9hZHNieWdvb2dsZS5qcyI+PC9zY3JpcHQ+CjwhLS0gMzAweDI1MCAtLT4KPGlucyBjbGFzcz0iYWRzYnlnb29nbGUiCiAgICAgc3R5bGU9ImRpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjMwMHB4O2hlaWdodDoyNTBweCIKICAgICBkYXRhLWFkLWNsaWVudD0iY2EtcHViLTM5OTYxODkwOTcyMzI1NDYiCiAgICAgZGF0YS1hZC1zbG90PSI0NDU3OTc4Nzg2Ij48L2lucz4KPHNjcmlwdD4KICAgICAoYWRzYnlnb29nbGUgPSB3aW5kb3cuYWRzYnlnb29nbGUgfHwgW10pLnB1c2goe30pOwo8L3NjcmlwdD4KICAgICAgICA8L2Rpdj4gCiAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTMiPgo8c2NyaXB0IGFzeW5jIHNyYz0iaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvanMvYWRzYnlnb29nbGUuanMiPjwvc2NyaXB0Pgo8IS0tIDMwMHgyNTAgLS0+CjxpbnMgY2xhc3M9ImFkc2J5Z29vZ2xlIgogICAgIHN0eWxlPSJkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDozMDBweDtoZWlnaHQ6MjUwcHgiCiAgICAgZGF0YS1hZC1jbGllbnQ9ImNhLXB1Yi0zOTk2MTg5MDk3MjMyNTQ2IgogICAgIGRhdGEtYWQtc2xvdD0iNDQ1Nzk3ODc4NiI+PC9pbnM+CjxzY3JpcHQ+CiAgICAgKGFkc2J5Z29vZ2xlID0gd2luZG93LmFkc2J5Z29vZ2xlIHx8IFtdKS5wdXNoKHt9KTsKPC9zY3JpcHQ+CiA8L2Rpdj4KPC9kaXY+CjwhLS0gaGVhZGVyIC0tPgoJPGRpdiBjbGFzcz0iaGVhZGVyIj4KCQk8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3M2xheW91dHNfbG9nbyB0ZXh0X2NlbnRlciI+CgkJCQk8YSBocmVmPSJob21lLnBocCI+PGgxPkRvY3VtZW50YXJ5IE1hbmlhPHNwYW4+U2ltcGx5IHRoZSBiZXN0IERvY3VtZW50YXJpZXM8L3NwYW4+PC9oMT48L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJ3M19zZWFyY2ggdGV4dF9jZW50ZXIiPgoJCQkJPGZvcm0gYWN0aW9uPSJyZXN1bHRzLnBocCIgbWV0aG9kPSJnZXQiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJzZWFyY2giIHR5cGU9InRleHQiIHBsYWNlaG9sZGVyPSJTZWFyY2giPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImdlbnJlIiB2YWx1ZT0iIj4KICAgICAgICAgICAgCQk8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iR28iPgoJCQkJPC9mb3JtPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iY2xlYXJmaXgiPiA8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgo8IS0tIC8vaGVhZGVyIC0tPgoKPCEtLSBuYXYgLS0+Cgk8ZGl2IGNsYXNzPSJtb3ZpZXNfbmF2Ij4KCQk8ZGl2IGNsYXNzPSJjb250YWluZXIiPgoJCQk8bmF2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWRlZmF1bHQiPgoJCQkJPGRpdiBjbGFzcz0ibmF2YmFyLWhlYWRlciBuYXZiYXItbGVmdCI+CgkJCQkJPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJuYXZiYXItdG9nZ2xlIGNvbGxhcHNlZCIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iI2JzLWV4YW1wbGUtbmF2YmFyLWNvbGxhcHNlLTEiPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3Itb25seSI+VG9nZ2xlIG5hdmlnYXRpb248L3NwYW4+CgkJCQkJCTxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgoJCQkJCQk8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KCQkJCQkJPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CgkJCQkJPC9idXR0b24+CgkJCQk8L2Rpdj4KCQkJCTwhLS0gQ29sbGVjdCB0aGUgbmF2IGxpbmtzLCBmb3JtcywgYW5kIG90aGVyIGNvbnRlbnQgZm9yIHRvZ2dsaW5nIC0tPgoJCQkJPGRpdiBjbGFzcz0iY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlIG5hdmJhci1yaWdodCIgaWQ9ImJzLWV4YW1wbGUtbmF2YmFyLWNvbGxhcHNlLTEiPgoJCQkJCTxuYXY+CgkJCQkJCTx1bCBjbGFzcz0ibmF2IG5hdmJhci1uYXYiPgoJCQkJCQkJPGxpIGNsYXNzPSJkcm9wZG93biI+CgkJCQkJCQkJPGEgaHJlZj0iaG9tZS5waHAiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+QnJvd3NlPGIgY2xhc3M9ImNhcmV0Ij48L2I+PC9hPgoJCQkJCQkJCTx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSBtdWx0aS1jb2x1bW4gY29sdW1ucy0zIj4KCQkJCQkJCQkJPGxpPgoJCQkJCQkJCQkJCTx1bCBjbGFzcz0ibXVsdGktY29sdW1uLWRyb3Bkb3duIj4KCQkJCQkJCQkJCQkJPGxpPjxhIGhyZWY9ImhvbWUucGhwIj5Ib21lPC9hPjwvbGk+CgkJCQkJCQkJCQkJCTxsaT48YSBocmVmPSIzRC5waHAiPjNEIERvY3VtZW50YXJpZXM8L2E+PC9saT4KCQkJCQkJCQkJIAkJCTxsaT48YSBocmVmPSJzZXJpZXMucGhwIj5BbGwgU2VyaWVzPC9hPjwvbGk+CgkJCQkJCQkJCQkJCTxsaT48YSBocmVmPSJyZXN1bHRzLWFscGhhYmV0aWNhbC5waHA/c2VhcmNoPSZnZW5yZT0iPlNvcnQgYnkgVGl0bGU8L2E+PC9saT4KCQkJCQkJCQkJCQkJPGxpPjxhIGhyZWY9InJlc3VsdHMteWVhci5waHA/c2VhcmNoPSZnZW5yZT0iPlNvcnQgYnkgWWVhcjwvYT48L2xpPgoJCQkJCQkJCQkJCTwvdWw+CgkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJjbGVhcmZpeCI+PC9kaXY+CgkJCQkJCQkJCTwvbGk+CgkJCQkJCQkJPC91bD4KCQkJCQkJCTwvbGk+CgkJCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biI+CgkJCQkJCQkJPGEgaHJlZj0icmVzdWx0cy5waHA/c2VhcmNoPSZnZW5yZT1BcnQiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+QXJ0IDxiIGNsYXNzPSJjYXJldCI+PC9iPjwvYT4gCgkJCQkJCQkJPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51IG11bHRpLWNvbHVtbiBjb2x1bW5zIj4KCQkJCQkJCQkJPGxpPgoJCQkJCQkJCQkJCTx1bCBjbGFzcz0ibXVsdGktY29sdW1uLWRyb3Bkb3duIj4KCQkJCQkJCQkJCQkJPGxpPjxhIGhyZWY9InJlc3VsdHMucGhwP3NlYXJjaD0mZ2VucmU9QXJ0Ij5BTEw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9InJlc3VsdHMucGhwP3NlYXJjaD1BcmNoaXRlY3R1cmUmZ2VucmU9Ij5BcmNoaXRlY3R1cmU8L2E+PC9saT4KCQkJCQkJCQkJCQkJPGxpPjxhIGhyZWY9InJlc3VsdHMucGhwP3NlYXJjaD1DaW5lbWF0b2dyYXBoeSZnZW5yZT0iPkNpbmVtYXRvZ3JhcGh5PC9hPjwvbGk+CgkJCQkJCQkJCQkJCTxsaT48YSBocmVmPSJyZXN1bHRzLnBocD9zZWFyY2g9RGFuY2UmZ2VucmU9Ij5EYW5jZTwvYT48L2xpPgoJCQkJCQkJCQkJCQk8bGk+PGEgaHJlZj0icmVzdWx0cy5waHA/c2VhcmNoPUxpdGVyYXR1cmUmZ2VucmU9Ij5MaXRlcmF0dXJlPC9hPjwvbGk+CgkJCQkJCQkJCQkJCTxsaT48YSBocmVmPSJyZXN1bHRzLnBocD9zZWFyY2g9TXVzaWMmZ2VucmU9Ij5NdXNpYzwvYT48L2xpPgoJCQkJCQkJCQkJCQk8bGk+PGEgaHJlZj0icmVzdWx0cy5waHA/c2VhcmNoPVBhaW50aW5nJmdlbnJlPSI+UGFpbnRpbmc8L2E+PC9saT4KCQkJCQkJCQkJCQkJPGxpPjxhIGhyZWY9InJlc3VsdHMucGhwP3NlYXJjaD1QaG90b2dyYXBoeSZnZW5yZT0iPlBob3RvZ3JhcGh5PC9hPjwvbGk+CgkJCQkJCQkJCQkJCTxsaT48YSBocmVmPSJyZXN1bHRzLnBocD9zZWFyY2g9U2N1bHB0dXJlJmdlbnJlPSI+U2N1bHB0dXJlPC9hPjwvbGk+CgkJCQkJCQkJCQkJPC91bD4KCQkJCQkJCQkJCQoJCQkJCQkJCQkJCgkJCQkJCQkJCTwvbGk+CgkJCQkJCQkJPC91bD4KCQkJCQkJCTwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biI+CgkJCQkJCQkJPGEgaHJlZj0icmVzdWx0cy5waHA/c2VhcmNoPSZnZW5yZT1DdWx0dXJlIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPkN1bHR1cmUgPGIgY2xhc3M9ImNhcmV0Ij48L2I+PC9hPiAKCQkJCQkJCQk8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUgbXVsdGktY29sdW1uIGNvbHVtbnMiPgoJCQkJCQkJCQk8bGk+CgkJCQkJCQkJCQkJPHVsIGNsYXNzPSJtdWx0aS1jb2x1bW4tZHJvcGRvd24iPgoJCQkJCQkJCQkJCQk8bGk+PGEgaHJlZj0icmVzdWx0cy5waHA/c2VhcmNoPSZnZW5yZT1DdWx0dXJlIj5BTEw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9InJlc3VsdHMucGhwP3NlYXJjaD1BbnRocm9wb2xvZ3krYW5kK1NvY2lvbG9neSZnZW5yZT0iPkFudGhyb3BvbG9neSBhbmQgU29jaW9sb2d5PC9hPjwvbGk+CgkJCQkJCQkJCQkJCTxsaT48YSBocmVmPSJyZXN1bHRzLnBocD9zZWFyY2g9Q3VycmVudCtUb3BpY3MmZ2VucmU9Ij5DdXJyZW50IFRvcGljczwvYT48L2xpPgoJCQkJCQkJCQkJCQk8bGk+PGEgaHJlZj0icmVzdWx0cy5waHA/c2VhcmNoPUlkZWFzK2FuZCtNb3ZlbWVudHMmZ2VucmU9Ij5JZGVhcyBhbmQgTW92ZW1lbnRzPC9hPjwvbGk+CgkJCQkJCQkJCQkJCTxsaT48YSBocmVmPSJyZXN1bHRzLnBocD9zZWFyY2g9UGVvcGxlcyZnZW5yZT0iPlBlb3BsZXM8L2E+PC9saT4KCQkJCQkJCQkJCQkJPGxpPjxhIGhyZWY9InJlc3VsdHMucGhwP3NlYXJjaD1Qb2xpdGljcyZnZW5yZT0iPlBvbGl0aWNzPC9hPjwvbGk+CgkJCQkJCQkJCQkJCTxsaT48YSBocmVmPSJyZXN1bHRzLnBocD9zZWFyY2g9UmVsaWdpb25zJmdlbnJlPSI+UmVsaWdpb25zPC9hPjwvbGk+CgkJCQkJCQkJCQkJCTxsaT48YSBocmVmPSJyZXN1bHRzLnBocD9zZWFyY2g9U3BvcnRzJmdlbnJlPSI+U3BvcnRzPC9hPjwvbGk+CgkJCQkJCQkJCQkJCTxsaT48YSBocmVmPSJyZXN1bHRzLnBocD9zZWFyY2g9VHJhdmVsJmdlbnJlPSI+VHJhdmVsPC9hPjwvbGk+CgkJCQkJCQkJCQkJPC91bD4KCQkJCQkJCQkJCQoJCQkJCQkJCQkJCgkJCQkJCQkJCTwvbGk+CgkJCQkJCQkJPC91bD4KCQkJCQkJCTwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biI+CgkJCQkJCQkJPGEgaHJlZj0icmVzdWx0cy5waHA/c2VhcmNoPSZnZW5yZT1IaXN0b3J5IiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPkhpc3RvcnkgPGIgY2xhc3M9ImNhcmV0Ij48L2I+PC9hPiAKCQkJCQkJCQk8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUgbXVsdGktY29sdW1uIGNvbHVtbnMiPgoJCQkJCQkJCQk8bGk+CgkJCQkJCQkJCQkJPHVsIGNsYXNzPSJtdWx0aS1jb2x1bW4tZHJvcGRvd24iPgoJCQkJCQkJCQkJCQk8bGk+PGEgaHJlZj0icmVzdWx0cy5waHA/c2VhcmNoPSZnZW5yZT1IaXN0b3J5Ij5BTEw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9InJlc3VsdHMucGhwP3NlYXJjaD1QcmVoaXN0b3J5JmdlbnJlPSI+UHJlaGlzdG9yeTwvYT48L2xpPgoJCQkJCQkJCQkJCQk8bGk+PGEgaHJlZj0icmVzdWx0cy5waHA/c2VhcmNoPUFuY2llbnQmZ2VucmU9Ij5BbmNpZW50PC9hPjwvbGk+CgkJCQkJCQkJCQkJCTxsaT48YSBocmVmPSJyZXN1bHRzLnBocD9zZWFyY2g9TWlkZGxlK0FnZSZnZW5yZT0iPk1pZGRsZSBBZ2U8L2E+PC9saT4KCQkJCQkJCQkJCQkJPGxpPjxhIGhyZWY9InJlc3VsdHMucGhwP3NlYXJjaD1Nb2Rlcm4mZ2VucmU9Ij5Nb2Rlcm48L2E+PC9saT4KCQkJCQkJCQkJCQkJPGxpPjxhIGhyZWY9InJlc3VsdHMucGhwP3NlYXJjaD1Db250ZW1wb3JhcnkmZ2VucmU9Ij5Db250ZW1wb3Jhcnk8L2E+PC9saT4KCQkJCQkJCQkJCQkJPGxpPjxhIGhyZWY9InJlc3VsdHMucGhwP3NlYXJjaD1BcmNoYWVvbG9neSZnZW5yZT0iPkFyY2hhZW9sb2d5PC9hPjwvbGk+CgkJCQkJCQkJCQkJCTxsaT48YSBocmVmPSJyZXN1bHRzLnBocD9zZWFyY2g9QmlvZ3JhcGhpZXMmZ2VucmU9Ij5CaW9ncmFwaGllczwvYT48L2xpPgoJCQkJCQkJCQkJCQk8bGk+PGEgaHJlZj0icmVzdWx0cy5waHA/c2VhcmNoPVdhciZnZW5yZT0iPldhcjwvYT48L2xpPgoJCQkJCQkJCQkJCTwvdWw+CgkJCQkJCQkJCQkKCQkJCQkJCQkJCQoJCQkJCQkJCQk8L2xpPgoJCQkJCQkJCTwvdWw+CgkJCQkJCQk8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24iPgoJCQkJCQkJCTxhIGhyZWY9InJlc3VsdHMucGhwP3NlYXJjaD0mZ2VucmU9TWVkaWNpbmUiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+TWVkaWNpbmUgPGIgY2xhc3M9ImNhcmV0Ij48L2I+PC9hPiAKCQkJCQkJCQk8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUgbXVsdGktY29sdW1uIGNvbHVtbnMiPgoJCQkJCQkJCQk8bGk+CgkJCQkJCQkJCQkJPHVsIGNsYXNzPSJtdWx0aS1jb2x1bW4tZHJvcGRvd24iPgoJCQkJCQkJCQkJCQk8bGk+PGEgaHJlZj0icmVzdWx0cy5waHA/c2VhcmNoPSZnZW5yZT1NZWRpY2luZSI+QUxMPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJyZXN1bHRzLnBocD9zZWFyY2g9RGlzZWFzZXMmZ2VucmU9Ij5EaXNlYXNlczwvYT48L2xpPgoJCQkJCQkJCQkJCQk8bGk+PGEgaHJlZj0icmVzdWx0cy5waHA/c2VhcmNoPURydWdzJmdlbnJlPSI+RHJ1Z3M8L2E+PC9saT4KCQkJCQkJCQkJCQkJPGxpPjxhIGhyZWY9InJlc3VsdHMucGhwP3NlYXJjaD1HZW5ldGljcyZnZW5yZT0iPkdlbmV0aWNzPC9hPjwvbGk+CgkJCQkJCQkJCQkJCTxsaT48YSBocmVmPSJyZXN1bHRzLnBocD9zZWFyY2g9SGVhbHRoJmdlbnJlPSI+SGVhbHRoPC9hPjwvbGk+CgkJCQkJCQkJCQkJCTxsaT48YSBocmVmPSJyZXN1bHRzLnBocD9zZWFyY2g9UGh5c2lvbG9neSZnZW5yZT0iPlBoeXNpb2xvZ3k8L2E+PC9saT4KCQkJCQkJCQkJCQkJPGxpPjxhIGhyZWY9InJlc3VsdHMucGhwP3NlYXJjaD1TZXh1YWxpdHkmZ2VucmU9Ij5TZXh1YWxpdHk8L2E+PC9saT4KCQkJCQkJCQkJCQkJPGxpPjxhIGhyZWY9InJlc3VsdHMucGhwP3NlYXJjaD1UaGUrQnJhaW4mZ2VucmU9Ij5UaGUgQnJhaW48L2E+PC9saT4KCQkJCQkJCQkJCQkJPGxpPjxhIGhyZWY9InJlc3VsdHMucGhwP3NlYXJjaD1UaGVyYXBpZXMmZ2VucmU9Ij5UaGVyYXBpZXM8L2E+PC9saT4KCQkJCQkJCQkJCQk8L3VsPgoJCQkJCQkJCQkJCgkJCQkJCQkJCQkKCQkJCQkJCQkJPC9saT4KCQkJCQkJCQk8L3VsPgoJCQkJCQkJPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIj4KCQkJCQkJCQk8YSBocmVmPSJyZXN1bHRzLnBocD9zZWFyY2g9JmdlbnJlPU5hdHVyZSIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIj5OYXR1cmUgPGIgY2xhc3M9ImNhcmV0Ij48L2I+PC9hPiAKCQkJCQkJCQk8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUgbXVsdGktY29sdW1uIGNvbHVtbnMiPgoJCQkJCQkJCQk8bGk+CgkJCQkJCQkJCQkJPHVsIGNsYXNzPSJtdWx0aS1jb2x1bW4tZHJvcGRvd24iPgoJCQkJCQkJCQkJCQk8bGk+PGEgaHJlZj0icmVzdWx0cy5waHA/c2VhcmNoPSZnZW5yZT1OYXR1cmUiPkFMTDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0icmVzdWx0cy5waHA/c2VhcmNoPUFncmljdWx0dXJlK2FuZCtMaXZlc3RvY2smZ2VucmU9Ij5BZ3JpY3VsdHVyZSBhbmQgTGl2ZXN0b2NrPC9hPjwvbGk+CgkJCQkJCQkJCQkJCTxsaT48YSBocmVmPSJyZXN1bHRzLnBocD9zZWFyY2g9Q2xpbWF0ZSZnZW5yZT0iPkNsaW1hdGU8L2E+PC9saT4KCQkJCQkJCQkJCQkJPGxpPjxhIGhyZWY9InJlc3VsdHMucGhwP3NlYXJjaD1FY29zeXN0ZW1zJmdlbnJlPSI+RWNvc3lzdGVtczwvYT48L2xpPgoJCQkJCQkJCQkJCQk8bGk+PGEgaHJlZj0icmVzdWx0cy5waHA/c2VhcmNoPUVudmlyb25tZW50YWxpc20mZ2VucmU9Ij5FbnZpcm9ubWVudGFsaXNtPC9hPjwvbGk+CgkJCQkJCQkJCQkJCTxsaT48YSBocmVmPSJyZXN1bHRzLnBocD9zZWFyY2g9UGxhY2VzK29uK3RoZStHbG9iZSZnZW5yZT0iPlBsYWNlcyBvbiB0aGUgR2xvYmU8L2E+PC9saT4KCQkJCQkJCQkJCQkJPGxpPjxhIGhyZWY9InJlc3VsdHMucGhwP3NlYXJjaD1UaGUrRWFydGgmZ2VucmU9Ij5UaGUgRWFydGg8L2E+PC9saT4KCQkJCQkJCQkJCQkJPGxpPjxhIGhyZWY9InJlc3VsdHMucGhwP3NlYXJjaD1UaGUrVW5pdmVyc2UmZ2VucmU9Ij5UaGUgVW5pdmVyc2U8L2E+PC9saT4KCQkJCQkJCQkJCQkJPGxpPjxhIGhyZWY9InJlc3VsdHMucGhwP3NlYXJjaD1XaWxkbGlmZSZnZW5yZT0iPldpbGRsaWZlPC9hPjwvbGk+CgkJCQkJCQkJCQkJPC91bD4KCQkJCQkJCQkJCQoJCQkJCQkJCQkJCgkJCQkJCQkJCTwvbGk+CgkJCQkJCQkJPC91bD4KCQkJCQkJCTwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biI+CgkJCQkJCQkJPGEgaHJlZj0icmVzdWx0cy5waHA/c2VhcmNoPSZnZW5yZT1TY2llbmNlIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPlNjaWVuY2UgPGIgY2xhc3M9ImNhcmV0Ij48L2I+PC9hPiAKCQkJCQkJCQk8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUgbXVsdGktY29sdW1uIGNvbHVtbnMiPgoJCQkJCQkJCQk8bGk+CgkJCQkJCQkJCQkJPHVsIGNsYXNzPSJtdWx0aS1jb2x1bW4tZHJvcGRvd24iPgoJCQkJCQkJCQkJCQk8bGk+PGEgaHJlZj0icmVzdWx0cy5waHA/c2VhcmNoPSZnZW5yZT1TY2llbmNlIj5BTEw8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9InJlc3VsdHMucGhwP3NlYXJjaD1Bc3Ryb25vbXkmZ2VucmU9Ij5Bc3Ryb25vbXk8L2E+PC9saT4KCQkJCQkJCQkJCQkJPGxpPjxhIGhyZWY9InJlc3VsdHMucGhwP3NlYXJjaD1CaW9sb2d5JmdlbnJlPSI+QmlvbG9neTwvYT48L2xpPgoJCQkJCQkJCQkJCQk8bGk+PGEgaHJlZj0icmVzdWx0cy5waHA/c2VhcmNoPUNoZW1pc3RyeSZnZW5yZT0iPkNoZW1pc3RyeTwvYT48L2xpPgoJCQkJCQkJCQkJCQk8bGk+PGEgaHJlZj0icmVzdWx0cy5waHA/c2VhcmNoPUVjb25vbWljcyZnZW5yZT0iPkVjb25vbWljczwvYT48L2xpPgoJCQkJCQkJCQkJCQk8bGk+PGEgaHJlZj0icmVzdWx0cy5waHA/c2VhcmNoPUdlb2xvZ3kmZ2VucmU9Ij5HZW9sb2d5PC9hPjwvbGk+CgkJCQkJCQkJCQkJCTxsaT48YSBocmVmPSJyZXN1bHRzLnBocD9zZWFyY2g9TWF0aGVtYXRpY3MmZ2VucmU9Ij5NYXRoZW1hdGljczwvYT48L2xpPgoJCQkJCQkJCQkJCQk8bGk+PGEgaHJlZj0icmVzdWx0cy5waHA/c2VhcmNoPVBhbGFlb250b2xvZ3kmZ2VucmU9Ij5QYWxhZW9udG9sb2d5PC9hPjwvbGk+CgkJCQkJCQkJCQkJCTxsaT48YSBocmVmPSJyZXN1bHRzLnBocD9zZWFyY2g9UGh5c2ljcyZnZW5yZT0iPlBoeXNpY3M8L2E+PC9saT4KCQkJCQkJCQkJCQk8L3VsPgoJCQkJCQkJCQkJCgkJCQkJCQkJCQkKCQkJCQkJCQkJPC9saT4KCQkJCQkJCQk8L3VsPgoJCQkJCQkJPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duIj4KCQkJCQkJCQk8YSBocmVmPSJyZXN1bHRzLnBocD9zZWFyY2g9JmdlbnJlPVRlY2hub2xvZ3kiIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+VGVjaG5vbG9neSA8YiBjbGFzcz0iY2FyZXQiPjwvYj48L2E+IAoJCQkJCQkJCTx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSBtdWx0aS1jb2x1bW4gY29sdW1ucyI+CgkJCQkJCQkJCTxsaT4KCQkJCQkJCQkJCQk8dWwgY2xhc3M9Im11bHRpLWNvbHVtbi1kcm9wZG93biI+CgkJCQkJCQkJCQkJCTxsaT48YSBocmVmPSJyZXN1bHRzLnBocD9zZWFyY2g9JmdlbnJlPVRlY2hub2xvZ3kiPkFMTDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0icmVzdWx0cy5waHA/c2VhcmNoPUNvbXB1dGVyK1NjaWVuY2UmZ2VucmU9Ij5Db21wdXRlciBTY2llbmNlPC9hPjwvbGk+CgkJCQkJCQkJCQkJCTxsaT48YSBocmVmPSJyZXN1bHRzLnBocD9zZWFyY2g9RW5lcmd5JmdlbnJlPSI+RW5lcmd5PC9hPjwvbGk+CgkJCQkJCQkJCQkJCTxsaT48YSBocmVmPSJyZXN1bHRzLnBocD9zZWFyY2g9RW5naW5lZXJpbmcmZ2VucmU9Ij5FbmdpbmVlcmluZzwvYT48L2xpPgoJCQkJCQkJCQkJCQk8bGk+PGEgaHJlZj0icmVzdWx0cy5waHA/c2VhcmNoPUluZHVzdHJ5JmdlbnJlPSI+SW5kdXN0cnk8L2E+PC9saT4KCQkJCQkJCQkJCQkJPGxpPjxhIGhyZWY9InJlc3VsdHMucGhwP3NlYXJjaD1OdWNsZWFyJmdlbnJlPSI+TnVjbGVhcjwvYT48L2xpPgoJCQkJCQkJCQkJCQk8bGk+PGEgaHJlZj0icmVzdWx0cy5waHA/c2VhcmNoPVNwYWNlJmdlbnJlPSI+U3BhY2U8L2E+PC9saT4KCQkJCQkJCQkJCQkJPGxpPjxhIGhyZWY9InJlc3VsdHMucGhwP3NlYXJjaD1UaGUrRnV0dXJlJmdlbnJlPSI+VGhlIEZ1dHVyZTwvYT48L2xpPgoJCQkJCQkJCQkJCQk8bGk+PGEgaHJlZj0icmVzdWx0cy5waHA/c2VhcmNoPVRyYW5zcG9ydHMrYW5kK1ZlaGljbGVzJmdlbnJlPSI+VHJhbnNwb3J0cyBhbmQgVmVoaWNsZXM8L2E+PC9saT4KCQkJCQkJCQkJCQk8L3VsPgoJCQkJCQkJCQkJCgkJCQkJCQkJCQkKCQkJCQkJCQkJPC9saT4KCQkJCQkJCQk8L3VsPgoJCQkJCQkJPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJCQkJCTwvdWw+CgkJCQkJPC9uYXY+CgkJCQk8L2Rpdj4KCQkJPC9uYXY+CQoJCTwvZGl2PgoJPC9kaXY+CjwhLS0gLy9uYXYgLS0+CjxkaXYgY2xhc3M9ImdlbmVyYWxfc29jaWFsX2ljb25zIGxhcmdlIj4KCTxuYXYgY2xhc3M9InNvY2lhbCI+CgkJPHVsPgoJCQk8bGkgY2xhc3M9InczX2ZhY2Vib29rIj48ZGl2IGNsYXNzPSJmYi1saWtlIiBkYXRhLWhyZWY9Imh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9Eb2N1bWVtdGFyeU1hbmlhLyIgZGF0YS1sYXlvdXQ9ImJ1dHRvbiIgZGF0YS1hY3Rpb249Imxpa2UiIGRhdGEtc2hvdy1mYWNlcz0iZmFsc2UiIGRhdGEtc2hhcmU9ImZhbHNlIj48L2Rpdj48YT4gJm5ic3A7Jm5ic3A7Rm9sbG93IHVzIDwvYT48aSBjbGFzcz0iZmEgZmEtZmFjZWJvb2siPjwvaT48L2xpPgoJCQk8bGkgY2xhc3M9InczX3R3aXR0ZXIiPjxhIGhyZWY9Imh0dHBzOi8vdHdpdHRlci5jb20vaW50ZW50L2ZvbGxvdz9vcmlnaW5hbF9yZWZlcmVyPWh0dHAlM0ElMkYlMkZ3d3cuZG9jdW1lbnRhcnltYW5pYS5jb20mcmVmX3NyYz10d3NyYyU1RXRmdyZzY3JlZW5fbmFtZT1Eb2N1bWVudHJ5bWFuaWEmdHdfcD1mb2xsb3didXR0b24iIHRhcmdldD0iX2JsYW5rIj5Gb2xsb3cgdXMgb24gVHdpdHRlciA8L2E+PGkgY2xhc3M9ImZhIGZhLXR3aXR0ZXIiPjwvaT48L2xpPgogICAgICAgICAgICA8bGkgY2xhc3M9InczX2dfcGx1cyI+PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHBzOi8vd3d3LnBpbnRlcmVzdC5lcy9Eb2N1bWVudGFyeU1hbmlhLyI+IEZvbGxvdyB1cyBvbiBQaW50ZXJlc3QgPC9hPjxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwczovL3d3dy5waW50ZXJlc3QuZXMvRG9jdW1lbnRhcnlNYW5pYS8iPjxpIGNsYXNzPSJmYSBmYS1waW50ZXJlc3QiIHN0eWxlPSJtYXJnaW4tbGVmdDo1cHg7Ij48L2k+PC9hPjwvbGk+CgkJPC91bD4KICAgICAgICA8YSBjbGFzcz0ib2NjIj48aSBjbGFzcz0iZmEgZmEtYmFja3dhcmQiPjwvaT48L2E+CiAgPC9uYXY+CjwvZGl2PgoKPGRpdiBjbGFzcz0iY29udGFpbmVyMiI+CgkJCQk8ZGl2IGNsYXNzPSJhZ2lsZWluZm8tbmV3cy10b3AtZ3JpZHMiPgoJCQkJCTxkaXYgY2xhc3M9ImNvbC1tZC04IHd0aHJlZS10b3AtbmV3cy1sZWZ0Ij4KCQkJCQkJPGRpdiBjbGFzcz0id3RocmVlLW5ld3MtbGVmdCI+CiA8IS0tICAtLT4gICAgICAgICAgICAgICAgICAgICAgCgk8ZGl2IGNsYXNzPSJ3dGhyZWUtbmV3cy1sZWZ0LWltZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCQkJPGRpdiBpZD0ibGlnaHRib3giPgogICAgICAgICAgICAgIDxkaXYgaWQ9ImxpZ2h0Ym94X2FyZWEiPgogICAgICAgICAgICAgICAgPCEtLSAvMjE2Nzk0MDY5MDEvdHJlc2NpZW50b3N4MjUwIC0tPgo8ZGl2IGlkPSdkaXYtZ3B0LWFkLTE1MTYxNDkyMDMzMTctMCcgc3R5bGU9J2hlaWdodDoyNTBweDsgd2lkdGg6MzAwcHg7Jz4KPHNjcmlwdD4KZ29vZ2xldGFnLmNtZC5wdXNoKGZ1bmN0aW9uKCkgeyBnb29nbGV0YWcuZGlzcGxheSgnZGl2LWdwdC1hZC0xNTE2MTQ5MjAzMzE3LTAnKTsgfSk7Cjwvc2NyaXB0Pgo8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgCiAgICAgICAgICA8YXJ0aWNsZT4gICAgIAogICAgICAgICA8ZGl2IGlkPSJteUVsZW1lbnQiPgogICAgICAgICBMb2FkaW5nIHRoZSBmaWxlLi4uCiAgICAgICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAgICAgandwbGF5ZXIoJ215RWxlbWVudCcpLnNldHVwKHsKCQkgd2lkdGg6ICIxMDAlIiwKICAgICAgICAgYXNwZWN0cmF0aW86ICIxNjo5IiwKCSAgICAgcGxheWxpc3Q6IFt7CiAgICAgICAgdGl0bGU6ICJUaGUgQm9keSB2cyBDb3JvbmEuLiAmIzk2NTg7IiwKCQlpbWFnZTogIlBsYXllci9FYXJ0aC5qcGciLAogICAgICAgIHNvdXJjZXM6IFsJCSAKCQkJCQkJCQkgICAgLHsgZmlsZTogInZpZGVvSEQucGhwIiwgdHlwZSA6ICJ2aWRlby9tcDQiLCBsYWJlbDogIkhEIiB9CgkJCQkJCQkJCSAgICAgICAgXSwKCQl0cmFja3M6IFt7IAogICAgICAgICAgICBmaWxlOiAiL3dlYnZ0dC9UaGUuQm9keS5Wcy5Db3JvbmF2aXJ1cy5lbmcuc3J0IiwgCiAgICAgICAgICAgIGxhYmVsOiAiRW5nbGlzaCIsCiAgICAgICAgICAgIGtpbmQ6ICJjYXB0aW9ucyIKCQkJICAgICAgICB9XSwKCQkKICAgIH1dLAoJCSBjYXB0aW9uczogewogICAgICAgIGJhY2s6IGZhbHNlCiAgICB9LAoKfSk7Cjwvc2NyaXB0PgoKPHNjcmlwdD4gCmp3cGxheWVyKCkuc2V0Q3VycmVudFF1YWxpdHkoMCk7Cgpqd3BsYXllcigpLm9uKCdlcnJvcicsIGZ1bmN0aW9uKCkgewoJCWp3cGxheWVyKCkuc3RvcCgpCn0pOyAKPC9zY3JpcHQ+IAoKCiAgICAgICA8L2Rpdj4KPC9hcnRpY2xlPgoJCQkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCjxkaXYgY2xhc3M9InMtYXV0aG9yIj4KCTxwPjIwMjAgJm5ic3A7Jm5ic3A7Jm5ic3A7IDxpIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXRpbWUiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+IDUxOjMwICZuYnNwOyZuYnNwOyAzNDQ1IFZpZXdzICZuYnNwOyZuYnNwOyZuYnNwOyBIRAkgIDwvcD4KICAgICAgIDxwPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgkgIDwvZGl2PgoJCTxkaXYgaWQ9ImZiLXJvb3QiPjwvZGl2PgoJCTxkaXYgY2xhc3M9InNoYXJlIHRleHQtY2VudGVyIj4KICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaW5nbGUtYWdpbGUtc2hhci1idXR0b25zIiA+CiAgICAgICAgICAgICAgICA8dWw+CgkJCQkJPGxpPgoJCQkJCQk8ZGl2IGNsYXNzPSJmYi1saWtlIiBkYXRhLWhyZWY9Imh0dHA6Ly93d3cuZG9jdW1lbnRhcnltYW5pYS5jb20vcGxheWVyLnBocD90aXRsZT1UaGUgQm9keSB2cyBDb3JvbmF2aXJ1cyIgZGF0YS1sYXlvdXQ9ImJ1dHRvbl9jb3VudCIgZGF0YS1hY3Rpb249Imxpa2UiIGRhdGEtc2l6ZT0ic21hbGwiIGRhdGEtc2hvdy1mYWNlcz0iZmFsc2UiIGRhdGEtc2hhcmU9ImZhbHNlIj48L2Rpdj4KCQkJCQk8L2xpPgoJCQkJCTxsaT4KCQkJCQkJPGRpdiBjbGFzcz0iZmItc2hhcmUtYnV0dG9uIiBkYXRhLWhyZWY9Imh0dHBzOi8vd3d3LmRvY3VtZW50YXJ5bWFuaWEuY29tL3BsYXllci5waHA/dGl0bGU9VGhlK0JvZHkrdnMrQ29yb25hdmlydXMiIGRhdGEtbGF5b3V0PSJidXR0b24iIGRhdGEtc2l6ZT0ic21hbGwiIGRhdGEtbW9iaWxlLWlmcmFtZT0idHJ1ZSI+PGEgY2xhc3M9ImZiLXhmYm1sLXBhcnNlLWlnbm9yZSIgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9zaGFyZXIvc2hhcmVyLnBocD91PWh0dHBzOi8vd3d3LmRvY3VtZW50YXJ5bWFuaWEuY29tL3BsYXllci5waHA/dGl0bGU9VGhlK0JvZHkrdnMrQ29yb25hdmlydXMiPlNoYXJlPC9hPjwvZGl2PgoJCQkJCTwvbGk+CgkJCQkKCQkJCQk8bGk+CiAgICAgICAgICAgICAgICA8YSBjbGFzcz0idHdpdHRlci1zaGFyZS1idXR0b24iCiAgCQkJCWhyZWY9Imh0dHBzOi8vd3d3LmRvY3VtZW50YXJ5bWFuaWEuY29tL3BsYXllci5waHA/dGl0bGU9VGhlK0JvZHkrdnMrQ29yb25hdmlydXMiCiAgCQkJCQlkYXRhLXNpemU9InNtYWxsIj4gVHdlZXQgPC9hPgkJCQkJCiAgICAgICAgICAgICAgICAgICAgPC9saT4KCQkJCQk8bGk+CgkJCQkJPGEgZGF0YS1waW4tZG89ImJ1dHRvblBpbiIgZGF0YS1waW4tdGFsbD0iZmFsc2UiIGhyZWY9Imh0dHBzOi8vd3d3LnBpbnRlcmVzdC5jb20vcGluL2NyZWF0ZS9idXR0b24vIiBkYXRhLXBpbi11cmw9Imh0dHBzOi8vd3d3LmRvY3VtZW50YXJ5bWFuaWEuY29tL3BsYXllci5waHA/dGl0bGU9VGhlIEJvZHkgdnMgQ29yb25hdmlydXMiIGRhdGEtcGluLW1lZGlhPSJodHRwczovL3d3dy5kb2N1bWVudGFyeW1hbmlhLmNvbS9pY29ub3MvVGhlLkJvZHkuVnMuQ29yb25hdmlydXMuanBnImRhdGEtcGluLWRlc2NyaXB0aW9uPSdUSEUgQk9EWSBWUyBDT1JPTkFWSVJVUyAtIERvY3VtZW50YXJ5IE1hbmlhOiAiSG93IGNhbiB3ZSBjb3BlIHdpdGggdGhlIHRyaWNreSBjb3JvbmF2aXJ1cyBub3cgcmFtcGFudCB3b3JsZHdpZGU/IEFzIHRoZSBwYW5kZW1pYyB0aWdodGVucyBpdHMgZ3JpcCBvbiB0aGUgd29ybGQsIHRoZXJlIGFyZSBpbXBvcnRhbnQgdW5hbnN3ZXJlZCBxdWVzdGlvbnMgYWJvdXQgdGhpcyBub3ZlbCB2aXJ1czogV2h5IGRvZXMgdGhpcyBpbmZlY3Rpb24gc3ByZWFkIHNvIHJhcGlkbHkgZnJvbSBwZW9wbGUgd2l0aCBubyBzeW1wdG9tcz8gV2h5IGRvIHNvbWUgcGVvcGxlIGJlY29tZSBjcml0aWNhbCB3aGlsZSBvdGhlcnMgIic+PC9hPgoJCQkJCSZuYnNwOyZuYnNwOyA8L2xpPiA8YnI+CiAgICAgICAgICAgICAgICAgICAgPGxpIHN0eWxlPSJmb250LXNpemU6MS4zZW07IGxpbmUtaGVpZ2h0OiAxZW07Ij5MaWtlcyBhbmQgU2hhcmluZyBoZWxwIGEgbG90LiBUaGFua3MhISA8L2xpPgoJCQkJPC91bD4KCQkJPC9kaXY+CgkJCTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0idzMtYWdpbGUtbmV3cy10ZXh0Ij4KCQkJCQk8ZGl2IGlkPSJpbWFnZW4iPjxpbWcgZGF0YS1zcmM9Imljb25vcy9UaGUuQm9keS5Wcy5Db3JvbmF2aXJ1cy5qcGciIGFsdD0iVGhlIEJvZHkgdnMgQ29yb25hdmlydXMiIHRpdGxlPSJUaGUgQm9keSB2cyBDb3JvbmF2aXJ1cyIvPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgkJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDxoMz5UaGUgQm9keSB2cyBDb3JvbmF2aXJ1cyA8L2gzPgoJCQkJCTxkaXYgY2xhc3M9ImNvbW1lbnRzIj4KCQkJCQlIb3cgY2FuIHdlIGNvcGUgd2l0aCB0aGUgdHJpY2t5IGNvcm9uYXZpcnVzIG5vdyByYW1wYW50IHdvcmxkd2lkZT8gQXMgdGhlIHBhbmRlbWljIHRpZ2h0ZW5zIGl0cyBncmlwIG9uIHRoZSB3b3JsZCwgdGhlcmUgYXJlIGltcG9ydGFudCB1bmFuc3dlcmVkIHF1ZXN0aW9ucyBhYm91dCB0aGlzIG5vdmVsIHZpcnVzOiBXaHkgZG9lcyB0aGlzIGluZmVjdGlvbiBzcHJlYWQgc28gcmFwaWRseSBmcm9tIHBlb3BsZSB3aXRoIG5vIHN5bXB0b21zPyBXaHkgZG8gc29tZSBwZW9wbGUgYmVjb21lIGNyaXRpY2FsIHdoaWxlIG90aGVycyBkb24ndD8gV2lsbCBhIGRlZmluaXRpdmUgdHJlYXRtZW50IGJlIGZvdW5kPyBUaGUgdW5kZXJseWluZyBrZXkgdG8gdGhlc2UgcXVlc3Rpb25zIGxpZSBpbiBvdXIgaW1tdW5lIHN5c3RlbS4gSW1tdW5lIGNlbGxzIGFyZSBtaWNyb3Njb3BpYyB3YXJyaW9ycywgY29tYmF0aW5nIHZpcnVzZXMgYW5kIGFub3RoZXIgcGF0aG9nZW5zLiA8YnI+IFRocm91Z2ggdGhlIGhpZ2gtdGVjaCAnZXllcycgb2YgbmV4dC1nZW5lcmF0aW9uIG1pY3Jvc2NvcGVzIGFuZCBjb21wdXRlci1nZW5lcmF0ZWQgaW1hZ2VyeSwgd2Ugd2lsbCBzZWUgaG93IG91ciBpbW11bmUgZGVmZW5zZSBjb3JwcyBjb21iYXQgYWdhaW5zdCBtaWNyb2JlcyBhbmQgd2hhdCBtZWNoYW5pc20gaXMgZXhwZWN0ZWQgdG8gaGVscCBkZXZlbG9wIHRyZWF0bWVudC4gICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCQkJCTwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3My1hZ2lsZS1uZXdzLXRleHQiPgogICAgICAgICAgCQkJPHA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgCQkJPHN0cm9uZz5SZWxhdGVkIFNlYXJjaGVzPC9zdHJvbmc+OiAgICAgICAgICAgIAkJCTxhIGhyZWY9InJlc3VsdHMucGhwP3NlYXJjaD0mZ2VucmU9TWVkaWNpbmUiPk1lZGljaW5lPC9hPiwgCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0icmVzdWx0cy5waHA/c2VhcmNoPURpc2Vhc2VzJmdlbnJlPSI+RGlzZWFzZXM8L2E+LCA8YSBocmVmPSJyZXN1bHRzLnBocD9zZWFyY2g9VGhlcmFwaWVzJmdlbnJlPSI+VGhlcmFwaWVzPC9hPiwgPGEgaHJlZj0icmVzdWx0cy5waHA/c2VhcmNoPVZpcnVzJmdlbnJlPSI+VmlydXM8L2E+LCA8YSBocmVmPSJyZXN1bHRzLnBocD9zZWFyY2g9Q292aWQtMTkmZ2VucmU9Ij5Db3ZpZC0xOTwvYT4sIDxhIGhyZWY9InJlc3VsdHMucGhwP3NlYXJjaD1Db3JvbmF2aXJ1cyZnZW5yZT0iPkNvcm9uYXZpcnVzPC9hPiwgPGEgaHJlZj0icmVzdWx0cy5waHA/c2VhcmNoPVBhbmRlbWljJmdlbnJlPSI+UGFuZGVtaWM8L2E+LCA8YSBocmVmPSJyZXN1bHRzLnBocD9zZWFyY2g9SW1tdW5pdHkmZ2VucmU9Ij5JbW11bml0eTwvYT4sIDxhIGhyZWY9InJlc3VsdHMucGhwP3NlYXJjaD1JbW11bmUgU3lzdGVtJmdlbnJlPSI+SW1tdW5lIFN5c3RlbTwvYT4sIDxhIGhyZWY9InJlc3VsdHMucGhwP3NlYXJjaD1UIGNlbGwmZ2VucmU9Ij5UIGNlbGw8L2E+LCA8YSBocmVmPSJyZXN1bHRzLnBocD9zZWFyY2g9QW50aWJvZGllcyZnZW5yZT0iPkFudGlib2RpZXM8L2E+LCA8YSBocmVmPSJyZXN1bHRzLnBocD9zZWFyY2g9VmFjY2luZSZnZW5yZT0iPlZhY2NpbmU8L2E+CQkJCQk8L3A+CiAgICAgICAgICAgICAgICAgPGEgaHJlZj0icmVzdWx0cy1zZXJpZXMucGhwP3NlYXJjaD0iPjwvYT4gCiAgICAgICA8L2Rpdj4KCQkJCQkJCTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCgkJCQkJCTwvZGl2PgoJCQkJCQkKCQkJCQkJPCEtLSBhZ2lsZS1jb21tZW50cyAtLT4KCQkJCQkJPGRpdiBjbGFzcz0iYWdpbGUtbmV3cy1jb21tZW50cyI+CgkJCQkJCQk8ZGl2IGNsYXNzPSJhZ2lsZS1uZXdzLWNvbW1lbnRzLWluZm8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmctYm90dG9tOjFlbTsgcGFkZGluZy10b3A6MWVtIj4KPGRpdiBpZD0ibGFyZ2UiIGNsYXNzPSJ0ZXh0LWNlbnRlciI+CjxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9qcy9hZHNieWdvb2dsZS5qcyI+PC9zY3JpcHQ+CjwhLS0gYWRhcHRhYmxlIC0tPgoJCQkJPGlucyBjbGFzcz0iYWRzYnlnb29nbGUiCiAgICAgCQkJCXN0eWxlPSJkaXNwbGF5OmJsb2NrIgogICAgIAkJCQlkYXRhLWFkLWNsaWVudD0iY2EtcHViLTM5OTYxODkwOTcyMzI1NDYiCiAgICAgCQkJCWRhdGEtYWQtc2xvdD0iNzUzODkxNDI1MCIKICAgICAJCQkJZGF0YS1hZC1mb3JtYXQ9ImF1dG8iPjwvaW5zPgoJCQkJPHNjcmlwdCBkZWZlcj4KCQkJCQkoYWRzYnlnb29nbGUgPSB3aW5kb3cuYWRzYnlnb29nbGUgfHwgW10pLnB1c2goe30pOwoJCQkJPC9zY3JpcHQ+CjwvZGl2PgoKPGRpdiBjbGFzcz0ibW9iaSB0ZXh0X2NlbnRlciI+CgkJCQk8c2NyaXB0IGFzeW5jIHNyYz0iaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvanMvYWRzYnlnb29nbGUuanMiPjwvc2NyaXB0Pgo8IS0tIEJhbm5lciBtb2JpbGUgLS0+CjxpbnMgY2xhc3M9ImFkc2J5Z29vZ2xlIgogICAgIHN0eWxlPSJkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDozMjBweDtoZWlnaHQ6NTBweCIKICAgICBkYXRhLWFkLWNsaWVudD0iY2EtcHViLTM5OTYxODkwOTcyMzI1NDYiCiAgICAgZGF0YS1hZC1zbG90PSI0OTk2NjU0NTg0Ij48L2lucz4KCTxzY3JpcHQgZGVmZXI+CgkoYWRzYnlnb29nbGUgPSB3aW5kb3cuYWRzYnlnb29nbGUgfHwgW10pLnB1c2goe30pOwoJPC9zY3JpcHQ+CjwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgCSAJCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCQkJCQkJCQk8aDQ+Q29tbWVudHM8L2g0PgoJCQkJCQkJCTxkaXYgY2xhc3M9ImZiLWNvbW1lbnRzIiBkYXRhLWhyZWY9Imh0dHA6Ly93d3cuZG9jdW1lbnRhcnltYW5pYS5jb20vcGxheWVyLnBocD90aXRsZT1UaGUgQm9keSB2cyBDb3JvbmF2aXJ1cyIgZGF0YS13aWR0aD0iMTAwJSIgZGF0YS1udW1wb3N0cz0iNSI+PC9kaXY+CgkJCQkJCQk8L2Rpdj4KCQkJCQkJPC9kaXY+CgkJCQkJCTwhLS0gLy9hZ2lsZS1jb21tZW50cyAtLT4KCQkJCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJjb2wtbWQtNCB3dGhyZWUtbmV3cy1yaWdodCI+CgkJCQk8IS0tIG5ld3MtcmlnaHQtYm90dG9tIC0tPgoJCQkJIDxkaXYgY2xhc3M9Im5ld3MtcmlnaHQtdG9wIj4KCQkJCQk8ZGl2IGNsYXNzPSJuZXdzLXJpZ2h0LWJvdHRvbS1iZyI+CgkJCQkJCTxkaXYgY2xhc3M9Im5ld3MtZ3JpZHMtYm90dG9tIj4KCQkJCQkJCTxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206MWVtIiBjbGFzcz0idGV4dF9jZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICA8c2NyaXB0IGFzeW5jIHNyYz0iaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvanMvYWRzYnlnb29nbGUuanMiPjwvc2NyaXB0Pgo8IS0tIDMwMHgyNTAgLS0+CgkJCQkJPGlucyBjbGFzcz0iYWRzYnlnb29nbGUiCiAgICAgCQkJCQlzdHlsZT0iZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MzAwcHg7aGVpZ2h0OjI1MHB4IgogICAgIAkJCQkJZGF0YS1hZC1jbGllbnQ9ImNhLXB1Yi0zOTk2MTg5MDk3MjMyNTQ2IgogICAgIAkJCQkJZGF0YS1hZC1zbG90PSI0NDU3OTc4Nzg2Ij48L2lucz4KCQkJCQkJPHNjcmlwdCBkZWZlcj4KCQkJCQkJKGFkc2J5Z29vZ2xlID0gd2luZG93LmFkc2J5Z29vZ2xlIHx8IFtdKS5wdXNoKHt9KTsKCQkJCQkJPC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaW5nbGUtZ3JpZC1yaWdodCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz48YSBocmVmPSJyZXN1bHRzLnBocD9zZWFyY2g9JmdlbnJlPSI+RmVhdHVyZWQ8L2E+PC9oMz4gCgkJCQkJCTwvZGl2PgogICAgICAgICAgICAgICA8ZGl2IGlkPSJvd2wtZGVtbyIgY2xhc3M9Im93bC1jYXJvdXNlbCBvd2wtdGhlbWUiPgoJCQkJCSAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+CgkJCQkJCTxkaXYgY2xhc3M9InczbC1tb3ZpZS1ncmlkZS1hZ2lsZSB3M2wtbW92aWUtZ3JpZGUtYWdpbGUxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9InBsYXllci5waHA/dGl0bGU9RnJvbStQaWN0dXJlcyt0bytXb3JkcyIgY2xhc3M9Imh2ci1zaHV0dGVyLW91dC1ob3Jpem9udGFsIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBkYXRhLXNyYz0iL2ljb25vcy9CQkMuVGhlLlNlY3JldC5IaXN0b3J5Lm9mLldyaXRpbmcuRTEuanBnIiBjbGFzcz0iaW1nLXJlc3BvbnNpdmUiIGFsdD0iRnJvbSBQaWN0dXJlcyB0byBXb3JkcyIgLz4KCQkJCQkJCQk8ZGl2IGNsYXNzPSJ3M2wtYWN0aW9uLWljb24iPjxpIGNsYXNzPSJmYSBmYS1wbGF5LWNpcmNsZSIgYXJpYS1oaWRkZW49InRydWUiPjwvaT48L2Rpdj4KCQkJCQkJCTwvYT4KCQkJCQkJCTxkaXYgY2xhc3M9Im1pZC0xIGFnaWxlaXRzX3czbGF5b3V0c19taWRfMV9ob21lIj4KCQkJCQkJCQk8ZGl2IGNsYXNzPSJ3M2wtbW92aWUtdGV4dCI+CgkJCQkJCQkJCTxoNj48YSBocmVmPSJwbGF5ZXIucGhwP3RpdGxlPUZyb20rUGljdHVyZXMrdG8rV29yZHMiIHRhcmdldD0iX2JsYW5rIj5Gcm9tIFBpY3R1cmVzIHRvIFdvcmRzPC9hPjwvaDY+CQkJCQkJCQoJCQkJCQkJCTwvZGl2PgoJCQkJCQkJPC9kaXY+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+CgkJCQkJCTxkaXYgY2xhc3M9InczbC1tb3ZpZS1ncmlkZS1hZ2lsZSB3M2wtbW92aWUtZ3JpZGUtYWdpbGUxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9InBsYXllci5waHA/dGl0bGU9UHJlcGFyYXRpb24iIGNsYXNzPSJodnItc2h1dHRlci1vdXQtaG9yaXpvbnRhbCIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgZGF0YS1zcmM9Ii9pY29ub3MvTG9uZy5XYXkuVXAuUzAxRTAxLmpwZyIgY2xhc3M9ImltZy1yZXNwb25zaXZlIiBhbHQ9IlByZXBhcmF0aW9uIiAvPgoJCQkJCQkJCTxkaXYgY2xhc3M9InczbC1hY3Rpb24taWNvbiI+PGkgY2xhc3M9ImZhIGZhLXBsYXktY2lyY2xlIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPjwvZGl2PgoJCQkJCQkJPC9hPgoJCQkJCQkJPGRpdiBjbGFzcz0ibWlkLTEgYWdpbGVpdHNfdzNsYXlvdXRzX21pZF8xX2hvbWUiPgoJCQkJCQkJCTxkaXYgY2xhc3M9InczbC1tb3ZpZS10ZXh0Ij4KCQkJCQkJCQkJPGg2PjxhIGhyZWY9InBsYXllci5waHA/dGl0bGU9UHJlcGFyYXRpb24iIHRhcmdldD0iX2JsYW5rIj5QcmVwYXJhdGlvbjwvYT48L2g2PgkJCQkJCQkKCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCTwvZGl2PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgoJCQkJCQk8ZGl2IGNsYXNzPSJ3M2wtbW92aWUtZ3JpZGUtYWdpbGUgdzNsLW1vdmllLWdyaWRlLWFnaWxlMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJwbGF5ZXIucGhwP3RpdGxlPVVuZml0IiBjbGFzcz0iaHZyLXNodXR0ZXItb3V0LWhvcml6b250YWwiIHRhcmdldD0iX2JsYW5rIj48aW1nIGRhdGEtc3JjPSIvaWNvbm9zL1VuZml0LlRoZS5Qc3ljaG9sb2d5Lk9mLkRvbmFsZC5UcnVtcC5qcGciIGNsYXNzPSJpbWctcmVzcG9uc2l2ZSIgYWx0PSJVbmZpdCIgLz4KCQkJCQkJCQk8ZGl2IGNsYXNzPSJ3M2wtYWN0aW9uLWljb24iPjxpIGNsYXNzPSJmYSBmYS1wbGF5LWNpcmNsZSIgYXJpYS1oaWRkZW49InRydWUiPjwvaT48L2Rpdj4KCQkJCQkJCTwvYT4KCQkJCQkJCTxkaXYgY2xhc3M9Im1pZC0xIGFnaWxlaXRzX3czbGF5b3V0c19taWRfMV9ob21lIj4KCQkJCQkJCQk8ZGl2IGNsYXNzPSJ3M2wtbW92aWUtdGV4dCI+CgkJCQkJCQkJCTxoNj48YSBocmVmPSJwbGF5ZXIucGhwP3RpdGxlPVVuZml0IiB0YXJnZXQ9Il9ibGFuayI+VW5maXQ8L2E+PC9oNj4JCQkJCQkJCgkJCQkJCQkJPC9kaXY+CgkJCQkJCQk8L2Rpdj4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KCQkJCQkJPGRpdiBjbGFzcz0idzNsLW1vdmllLWdyaWRlLWFnaWxlIHczbC1tb3ZpZS1ncmlkZS1hZ2lsZTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0icGxheWVyLnBocD90aXRsZT1FbHZpcytQcmVzbGV5JTNBK1RoZStTZWFyY2hlcitGaXJzdCtQYXJ0IiBjbGFzcz0iaHZyLXNodXR0ZXItb3V0LWhvcml6b250YWwiIHRhcmdldD0iX2JsYW5rIj48aW1nIGRhdGEtc3JjPSIvaWNvbm9zL0VsdmlzLlByZXNsZXkuVGhlLlNlYXJjaGVyLlBhcnQuMS5qcGciIGNsYXNzPSJpbWctcmVzcG9uc2l2ZSIgYWx0PSJFbHZpcyBQcmVzbGV5OiBUaGUgU2VhcmNoZXIgRmlyc3QgUGFydCIgLz4KCQkJCQkJCQk8ZGl2IGNsYXNzPSJ3M2wtYWN0aW9uLWljb24iPjxpIGNsYXNzPSJmYSBmYS1wbGF5LWNpcmNsZSIgYXJpYS1oaWRkZW49InRydWUiPjwvaT48L2Rpdj4KCQkJCQkJCTwvYT4KCQkJCQkJCTxkaXYgY2xhc3M9Im1pZC0xIGFnaWxlaXRzX3czbGF5b3V0c19taWRfMV9ob21lIj4KCQkJCQkJCQk8ZGl2IGNsYXNzPSJ3M2wtbW92aWUtdGV4dCI+CgkJCQkJCQkJCTxoNj48YSBocmVmPSJwbGF5ZXIucGhwP3RpdGxlPUVsdmlzK1ByZXNsZXklM0ErVGhlK1NlYXJjaGVyK0ZpcnN0K1BhcnQiIHRhcmdldD0iX2JsYW5rIj5FbHZpcyBQcmVzbGV5OiBUaGUgU2VhcmNoZXIgRmlyc3QgUGFydDwvYT48L2g2PgkJCQkJCQkKCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCTwvZGl2PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgoJCQkJCQk8ZGl2IGNsYXNzPSJ3M2wtbW92aWUtZ3JpZGUtYWdpbGUgdzNsLW1vdmllLWdyaWRlLWFnaWxlMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJwbGF5ZXIucGhwP3RpdGxlPVRoZStCb2R5K3ZzK0Nvcm9uYXZpcnVzIiBjbGFzcz0iaHZyLXNodXR0ZXItb3V0LWhvcml6b250YWwiIHRhcmdldD0iX2JsYW5rIj48aW1nIGRhdGEtc3JjPSIvaWNvbm9zL1RoZS5Cb2R5LlZzLkNvcm9uYXZpcnVzLmpwZyIgY2xhc3M9ImltZy1yZXNwb25zaXZlIiBhbHQ9IlRoZSBCb2R5IHZzIENvcm9uYXZpcnVzIiAvPgoJCQkJCQkJCTxkaXYgY2xhc3M9InczbC1hY3Rpb24taWNvbiI+PGkgY2xhc3M9ImZhIGZhLXBsYXktY2lyY2xlIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPjwvZGl2PgoJCQkJCQkJPC9hPgoJCQkJCQkJPGRpdiBjbGFzcz0ibWlkLTEgYWdpbGVpdHNfdzNsYXlvdXRzX21pZF8xX2hvbWUiPgoJCQkJCQkJCTxkaXYgY2xhc3M9InczbC1tb3ZpZS10ZXh0Ij4KCQkJCQkJCQkJPGg2PjxhIGhyZWY9InBsYXllci5waHA/dGl0bGU9VGhlK0JvZHkrdnMrQ29yb25hdmlydXMiIHRhcmdldD0iX2JsYW5rIj5UaGUgQm9keSB2cyBDb3JvbmF2aXJ1czwvYT48L2g2PgkJCQkJCQkKCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCTwvZGl2PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgoJCQkJCQk8ZGl2IGNsYXNzPSJ3M2wtbW92aWUtZ3JpZGUtYWdpbGUgdzNsLW1vdmllLWdyaWRlLWFnaWxlMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJwbGF5ZXIucGhwP3RpdGxlPUZhbnRhc3RpYytGdW5naSIgY2xhc3M9Imh2ci1zaHV0dGVyLW91dC1ob3Jpem9udGFsIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBkYXRhLXNyYz0iL2ljb25vcy9GYW50YXN0aWMuRnVuZ2kuanBnIiBjbGFzcz0iaW1nLXJlc3BvbnNpdmUiIGFsdD0iRmFudGFzdGljIEZ1bmdpIiAvPgoJCQkJCQkJCTxkaXYgY2xhc3M9InczbC1hY3Rpb24taWNvbiI+PGkgY2xhc3M9ImZhIGZhLXBsYXktY2lyY2xlIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPjwvZGl2PgoJCQkJCQkJPC9hPgoJCQkJCQkJPGRpdiBjbGFzcz0ibWlkLTEgYWdpbGVpdHNfdzNsYXlvdXRzX21pZF8xX2hvbWUiPgoJCQkJCQkJCTxkaXYgY2xhc3M9InczbC1tb3ZpZS10ZXh0Ij4KCQkJCQkJCQkJPGg2PjxhIGhyZWY9InBsYXllci5waHA/dGl0bGU9RmFudGFzdGljK0Z1bmdpIiB0YXJnZXQ9Il9ibGFuayI+RmFudGFzdGljIEZ1bmdpPC9hPjwvaDY+CQkJCQkJCQoJCQkJCQkJCTwvZGl2PgoJCQkJCQkJPC9kaXY+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+CgkJCQkJCTxkaXYgY2xhc3M9InczbC1tb3ZpZS1ncmlkZS1hZ2lsZSB3M2wtbW92aWUtZ3JpZGUtYWdpbGUxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9InBsYXllci5waHA/dGl0bGU9SHVtYm9sZHQrRXBpYytFeHBsb3JlciIgY2xhc3M9Imh2ci1zaHV0dGVyLW91dC1ob3Jpem9udGFsIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBkYXRhLXNyYz0iL2ljb25vcy9IdW1ib2xkdC5FcGljLkV4cGxvcmVyLmpwZyIgY2xhc3M9ImltZy1yZXNwb25zaXZlIiBhbHQ9Ikh1bWJvbGR0IEVwaWMgRXhwbG9yZXIiIC8+CgkJCQkJCQkJPGRpdiBjbGFzcz0idzNsLWFjdGlvbi1pY29uIj48aSBjbGFzcz0iZmEgZmEtcGxheS1jaXJjbGUiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+PC9kaXY+CgkJCQkJCQk8L2E+CgkJCQkJCQk8ZGl2IGNsYXNzPSJtaWQtMSBhZ2lsZWl0c193M2xheW91dHNfbWlkXzFfaG9tZSI+CgkJCQkJCQkJPGRpdiBjbGFzcz0idzNsLW1vdmllLXRleHQiPgoJCQkJCQkJCQk8aDY+PGEgaHJlZj0icGxheWVyLnBocD90aXRsZT1IdW1ib2xkdCtFcGljK0V4cGxvcmVyIiB0YXJnZXQ9Il9ibGFuayI+SHVtYm9sZHQgRXBpYyBFeHBsb3JlcjwvYT48L2g2PgkJCQkJCQkKCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCTwvZGl2PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgoJCQkJCQk8ZGl2IGNsYXNzPSJ3M2wtbW92aWUtZ3JpZGUtYWdpbGUgdzNsLW1vdmllLWdyaWRlLWFnaWxlMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJwbGF5ZXIucGhwP3RpdGxlPUh1bnQrZm9yK3RoZStNYXJzK0FsaWVucyIgY2xhc3M9Imh2ci1zaHV0dGVyLW91dC1ob3Jpem9udGFsIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBkYXRhLXNyYz0iL2ljb25vcy9IdW50LmZvci50aGUuTWFycy5BbGllbnMuanBnIiBjbGFzcz0iaW1nLXJlc3BvbnNpdmUiIGFsdD0iSHVudCBmb3IgdGhlIE1hcnMgQWxpZW5zIiAvPgoJCQkJCQkJCTxkaXYgY2xhc3M9InczbC1hY3Rpb24taWNvbiI+PGkgY2xhc3M9ImZhIGZhLXBsYXktY2lyY2xlIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPjwvZGl2PgoJCQkJCQkJPC9hPgoJCQkJCQkJPGRpdiBjbGFzcz0ibWlkLTEgYWdpbGVpdHNfdzNsYXlvdXRzX21pZF8xX2hvbWUiPgoJCQkJCQkJCTxkaXYgY2xhc3M9InczbC1tb3ZpZS10ZXh0Ij4KCQkJCQkJCQkJPGg2PjxhIGhyZWY9InBsYXllci5waHA/dGl0bGU9SHVudCtmb3IrdGhlK01hcnMrQWxpZW5zIiB0YXJnZXQ9Il9ibGFuayI+SHVudCBmb3IgdGhlIE1hcnMgQWxpZW5zPC9hPjwvaDY+CQkJCQkJCQoJCQkJCQkJCTwvZGl2PgoJCQkJCQkJPC9kaXY+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgogICAgICAgICAgICAgICAgICAgIAkJCQkJCgkJCQk8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaW5nbGUtZ3JpZC1yaWdodCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz48YSBocmVmPSJyZXN1bHRzLW1vc3R2aWV3ZWQucGhwP3NlYXJjaD0mZ2VucmU9Ij5Nb3N0IFZpZXdlZDwvYT48L2gzPiAKCQkJCTwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBpZD0ib3dsLWRlbW8yIiBjbGFzcz0ib3dsLWNhcm91c2VsIG93bC10aGVtZSI+CgkJCQkJICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgoJCQkJCQk8ZGl2IGNsYXNzPSJ3M2wtbW92aWUtZ3JpZGUtYWdpbGUgdzNsLW1vdmllLWdyaWRlLWFnaWxlMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJwbGF5ZXIucGhwP3RpdGxlPVVuY2xlK1RvbSIgY2xhc3M9Imh2ci1zaHV0dGVyLW91dC1ob3Jpem9udGFsIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBkYXRhLXNyYz0iL2ljb25vcy9VbmNsZS5Ub20uMjAyMC5qcGciIGNsYXNzPSJpbWctcmVzcG9uc2l2ZSIgYWx0PSJVbmNsZSBUb20iIC8+CgkJCQkJCQkJPGRpdiBjbGFzcz0idzNsLWFjdGlvbi1pY29uIj48aSBjbGFzcz0iZmEgZmEtcGxheS1jaXJjbGUiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+PC9kaXY+CgkJCQkJCQk8L2E+CgkJCQkJCQk8ZGl2IGNsYXNzPSJtaWQtMSBhZ2lsZWl0c193M2xheW91dHNfbWlkXzFfaG9tZSI+CgkJCQkJCQkJPGRpdiBjbGFzcz0idzNsLW1vdmllLXRleHQiPgoJCQkJCQkJCQk8aDY+PGEgaHJlZj0icGxheWVyLnBocD90aXRsZT1VbmNsZStUb20iIHRhcmdldD0iX2JsYW5rIj5VbmNsZSBUb208L2E+PC9oNj4JCQkJCQkJCgkJCQkJCQkJPC9kaXY+CgkJCQkJCQk8L2Rpdj4KCQkJCQkJPC9kaXY+CgkJCQkJICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+CgkJCQkJCTxkaXYgY2xhc3M9InczbC1tb3ZpZS1ncmlkZS1hZ2lsZSB3M2wtbW92aWUtZ3JpZGUtYWdpbGUxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9InBsYXllci5waHA/dGl0bGU9RnJlZStTb2xvIiBjbGFzcz0iaHZyLXNodXR0ZXItb3V0LWhvcml6b250YWwiIHRhcmdldD0iX2JsYW5rIj48aW1nIGRhdGEtc3JjPSIvaWNvbm9zL0ZyZWUuU29sby5qcGciIGNsYXNzPSJpbWctcmVzcG9uc2l2ZSIgYWx0PSJGcmVlIFNvbG8iIC8+CgkJCQkJCQkJPGRpdiBjbGFzcz0idzNsLWFjdGlvbi1pY29uIj48aSBjbGFzcz0iZmEgZmEtcGxheS1jaXJjbGUiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+PC9kaXY+CgkJCQkJCQk8L2E+CgkJCQkJCQk8ZGl2IGNsYXNzPSJtaWQtMSBhZ2lsZWl0c193M2xheW91dHNfbWlkXzFfaG9tZSI+CgkJCQkJCQkJPGRpdiBjbGFzcz0idzNsLW1vdmllLXRleHQiPgoJCQkJCQkJCQk8aDY+PGEgaHJlZj0icGxheWVyLnBocD90aXRsZT1GcmVlK1NvbG8iIHRhcmdldD0iX2JsYW5rIj5GcmVlIFNvbG88L2E+PC9oNj4JCQkJCQkJCgkJCQkJCQkJPC9kaXY+CgkJCQkJCQk8L2Rpdj4KCQkJCQkJPC9kaXY+CgkJCQkJICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+CgkJCQkJCTxkaXYgY2xhc3M9InczbC1tb3ZpZS1ncmlkZS1hZ2lsZSB3M2wtbW92aWUtZ3JpZGUtYWdpbGUxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9InBsYXllci5waHA/dGl0bGU9S3VydCtDb2JhaW4rTW9udGFnZStvZitIZWNrIiBjbGFzcz0iaHZyLXNodXR0ZXItb3V0LWhvcml6b250YWwiIHRhcmdldD0iX2JsYW5rIj48aW1nIGRhdGEtc3JjPSIvaWNvbm9zL0t1cnQtQ29iYWluLU1vbnRhZ2Utb2YtSGVjay5qcGciIGNsYXNzPSJpbWctcmVzcG9uc2l2ZSIgYWx0PSJLdXJ0IENvYmFpbiBNb250YWdlIG9mIEhlY2siIC8+CgkJCQkJCQkJPGRpdiBjbGFzcz0idzNsLWFjdGlvbi1pY29uIj48aSBjbGFzcz0iZmEgZmEtcGxheS1jaXJjbGUiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+PC9kaXY+CgkJCQkJCQk8L2E+CgkJCQkJCQk8ZGl2IGNsYXNzPSJtaWQtMSBhZ2lsZWl0c193M2xheW91dHNfbWlkXzFfaG9tZSI+CgkJCQkJCQkJPGRpdiBjbGFzcz0idzNsLW1vdmllLXRleHQiPgoJCQkJCQkJCQk8aDY+PGEgaHJlZj0icGxheWVyLnBocD90aXRsZT1LdXJ0K0NvYmFpbitNb250YWdlK29mK0hlY2siIHRhcmdldD0iX2JsYW5rIj5LdXJ0IENvYmFpbiBNb250YWdlIG9mIEhlY2s8L2E+PC9oNj4JCQkJCQkJCgkJCQkJCQkJPC9kaXY+CgkJCQkJCQk8L2Rpdj4KCQkJCQkJPC9kaXY+CgkJCQkJICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+CgkJCQkJCTxkaXYgY2xhc3M9InczbC1tb3ZpZS1ncmlkZS1hZ2lsZSB3M2wtbW92aWUtZ3JpZGUtYWdpbGUxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9InBsYXllci5waHA/dGl0bGU9VGhhdCtTdWdhcitGaWxtIiBjbGFzcz0iaHZyLXNodXR0ZXItb3V0LWhvcml6b250YWwiIHRhcmdldD0iX2JsYW5rIj48aW1nIGRhdGEtc3JjPSIvaWNvbm9zL1RoYXQuU3VnYXIuRmlsbS5qcGciIGNsYXNzPSJpbWctcmVzcG9uc2l2ZSIgYWx0PSJUaGF0IFN1Z2FyIEZpbG0iIC8+CgkJCQkJCQkJPGRpdiBjbGFzcz0idzNsLWFjdGlvbi1pY29uIj48aSBjbGFzcz0iZmEgZmEtcGxheS1jaXJjbGUiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+PC9kaXY+CgkJCQkJCQk8L2E+CgkJCQkJCQk8ZGl2IGNsYXNzPSJtaWQtMSBhZ2lsZWl0c193M2xheW91dHNfbWlkXzFfaG9tZSI+CgkJCQkJCQkJPGRpdiBjbGFzcz0idzNsLW1vdmllLXRleHQiPgoJCQkJCQkJCQk8aDY+PGEgaHJlZj0icGxheWVyLnBocD90aXRsZT1UaGF0K1N1Z2FyK0ZpbG0iIHRhcmdldD0iX2JsYW5rIj5UaGF0IFN1Z2FyIEZpbG08L2E+PC9oNj4JCQkJCQkJCgkJCQkJCQkJPC9kaXY+CgkJCQkJCQk8L2Rpdj4KCQkJCQkJPC9kaXY+CgkJCQkJICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+CgkJCQkJCTxkaXYgY2xhc3M9InczbC1tb3ZpZS1ncmlkZS1hZ2lsZSB3M2wtbW92aWUtZ3JpZGUtYWdpbGUxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9InBsYXllci5waHA/dGl0bGU9MTN0aCIgY2xhc3M9Imh2ci1zaHV0dGVyLW91dC1ob3Jpem9udGFsIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBkYXRhLXNyYz0iL2ljb25vcy8xM3RoLmpwZyIgY2xhc3M9ImltZy1yZXNwb25zaXZlIiBhbHQ9IjEzdGgiIC8+CgkJCQkJCQkJPGRpdiBjbGFzcz0idzNsLWFjdGlvbi1pY29uIj48aSBjbGFzcz0iZmEgZmEtcGxheS1jaXJjbGUiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+PC9kaXY+CgkJCQkJCQk8L2E+CgkJCQkJCQk8ZGl2IGNsYXNzPSJtaWQtMSBhZ2lsZWl0c193M2xheW91dHNfbWlkXzFfaG9tZSI+CgkJCQkJCQkJPGRpdiBjbGFzcz0idzNsLW1vdmllLXRleHQiPgoJCQkJCQkJCQk8aDY+PGEgaHJlZj0icGxheWVyLnBocD90aXRsZT0xM3RoIiB0YXJnZXQ9Il9ibGFuayI+MTN0aDwvYT48L2g2PgkJCQkJCQkKCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCTwvZGl2PgoJCQkJCQk8L2Rpdj4KCQkJCQkgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KCQkJCQkJPGRpdiBjbGFzcz0idzNsLW1vdmllLWdyaWRlLWFnaWxlIHczbC1tb3ZpZS1ncmlkZS1hZ2lsZTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0icGxheWVyLnBocD90aXRsZT1PYXNpcytTdXBlcnNvbmljIiBjbGFzcz0iaHZyLXNodXR0ZXItb3V0LWhvcml6b250YWwiIHRhcmdldD0iX2JsYW5rIj48aW1nIGRhdGEtc3JjPSIvaWNvbm9zL09hc2lzLVN1cGVyc29uaWMuanBnIiBjbGFzcz0iaW1nLXJlc3BvbnNpdmUiIGFsdD0iT2FzaXMgU3VwZXJzb25pYyIgLz4KCQkJCQkJCQk8ZGl2IGNsYXNzPSJ3M2wtYWN0aW9uLWljb24iPjxpIGNsYXNzPSJmYSBmYS1wbGF5LWNpcmNsZSIgYXJpYS1oaWRkZW49InRydWUiPjwvaT48L2Rpdj4KCQkJCQkJCTwvYT4KCQkJCQkJCTxkaXYgY2xhc3M9Im1pZC0xIGFnaWxlaXRzX3czbGF5b3V0c19taWRfMV9ob21lIj4KCQkJCQkJCQk8ZGl2IGNsYXNzPSJ3M2wtbW92aWUtdGV4dCI+CgkJCQkJCQkJCTxoNj48YSBocmVmPSJwbGF5ZXIucGhwP3RpdGxlPU9hc2lzK1N1cGVyc29uaWMiIHRhcmdldD0iX2JsYW5rIj5PYXNpcyBTdXBlcnNvbmljPC9hPjwvaDY+CQkJCQkJCQoJCQkJCQkJCTwvZGl2PgoJCQkJCQkJPC9kaXY+CgkJCQkJCTwvZGl2PgoJCQkJCSAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgoJCQkJCQk8ZGl2IGNsYXNzPSJ3M2wtbW92aWUtZ3JpZGUtYWdpbGUgdzNsLW1vdmllLWdyaWRlLWFnaWxlMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJwbGF5ZXIucGhwP3RpdGxlPVJvbmFsZG8iIGNsYXNzPSJodnItc2h1dHRlci1vdXQtaG9yaXpvbnRhbCIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgZGF0YS1zcmM9Ii9pY29ub3MvUm9uYWxkby5qcGciIGNsYXNzPSJpbWctcmVzcG9uc2l2ZSIgYWx0PSJSb25hbGRvIiAvPgoJCQkJCQkJCTxkaXYgY2xhc3M9InczbC1hY3Rpb24taWNvbiI+PGkgY2xhc3M9ImZhIGZhLXBsYXktY2lyY2xlIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPjwvZGl2PgoJCQkJCQkJPC9hPgoJCQkJCQkJPGRpdiBjbGFzcz0ibWlkLTEgYWdpbGVpdHNfdzNsYXlvdXRzX21pZF8xX2hvbWUiPgoJCQkJCQkJCTxkaXYgY2xhc3M9InczbC1tb3ZpZS10ZXh0Ij4KCQkJCQkJCQkJPGg2PjxhIGhyZWY9InBsYXllci5waHA/dGl0bGU9Um9uYWxkbyIgdGFyZ2V0PSJfYmxhbmsiPlJvbmFsZG88L2E+PC9oNj4JCQkJCQkJCgkJCQkJCQkJPC9kaXY+CgkJCQkJCQk8L2Rpdj4KCQkJCQkJPC9kaXY+CgkJCQkJICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+CgkJCQkJCTxkaXYgY2xhc3M9InczbC1tb3ZpZS1ncmlkZS1hZ2lsZSB3M2wtbW92aWUtZ3JpZGUtYWdpbGUxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9InBsYXllci5waHA/dGl0bGU9T25jZStCcm90aGVycyIgY2xhc3M9Imh2ci1zaHV0dGVyLW91dC1ob3Jpem9udGFsIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBkYXRhLXNyYz0iL2ljb25vcy9PbmNlLkJyb3RoZXJzLmpwZyIgY2xhc3M9ImltZy1yZXNwb25zaXZlIiBhbHQ9Ik9uY2UgQnJvdGhlcnMiIC8+CgkJCQkJCQkJPGRpdiBjbGFzcz0idzNsLWFjdGlvbi1pY29uIj48aSBjbGFzcz0iZmEgZmEtcGxheS1jaXJjbGUiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+PC9kaXY+CgkJCQkJCQk8L2E+CgkJCQkJCQk8ZGl2IGNsYXNzPSJtaWQtMSBhZ2lsZWl0c193M2xheW91dHNfbWlkXzFfaG9tZSI+CgkJCQkJCQkJPGRpdiBjbGFzcz0idzNsLW1vdmllLXRleHQiPgoJCQkJCQkJCQk8aDY+PGEgaHJlZj0icGxheWVyLnBocD90aXRsZT1PbmNlK0Jyb3RoZXJzIiB0YXJnZXQ9Il9ibGFuayI+T25jZSBCcm90aGVyczwvYT48L2g2PgkJCQkJCQkKCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCTwvZGl2PgoJCQkJCQk8L2Rpdj4KCQkJCQkgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIAkJCQkgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQtY2VudGVyIj4KICAgICAgICAgICAgICAgICAgICA8c2NyaXB0IGFzeW5jIHNyYz0iaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvanMvYWRzYnlnb29nbGUuanMiPjwvc2NyaXB0Pgo8IS0tIDMwMHgyNTAgLS0+CgkJCQkJPGlucyBjbGFzcz0iYWRzYnlnb29nbGUiCiAgICAgCQkJCQlzdHlsZT0iZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MzAwcHg7aGVpZ2h0OjI1MHB4IgogICAgIAkJCQkJZGF0YS1hZC1jbGllbnQ9ImNhLXB1Yi0zOTk2MTg5MDk3MjMyNTQ2IgogICAgIAkJCQkJZGF0YS1hZC1zbG90PSI0NDU3OTc4Nzg2Ij48L2lucz4KCQkJCQkJPHNjcmlwdCBkZWZlcj4KCQkJCQkJKGFkc2J5Z29vZ2xlID0gd2luZG93LmFkc2J5Z29vZ2xlIHx8IFtdKS5wdXNoKHt9KTsKCQkJCQkJPC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPiZuYnNwOzwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNpbmdsZS1ncmlkLXJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGgzPjxhIGhyZWY9InJlc3VsdHMtcmVjZW50LnBocD9zZWFyY2g9JmdlbnJlPSI+TmV3bHkgQWRkZWQ8L2E+PC9oMz4gCgkJCQkJCTwvZGl2PgogICAgICAgICAgICAgICA8ZGl2IGlkPSJvd2wtZGVtbzMiIGNsYXNzPSJvd2wtY2Fyb3VzZWwgb3dsLXRoZW1lIj4KCQkJCQkgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgoJCQkJCQk8ZGl2IGNsYXNzPSJ3M2wtbW92aWUtZ3JpZGUtYWdpbGUgdzNsLW1vdmllLWdyaWRlLWFnaWxlMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJwbGF5ZXIucGhwP3RpdGxlPVdvcmRzK29uK2ErUGFnZSIgY2xhc3M9Imh2ci1zaHV0dGVyLW91dC1ob3Jpem9udGFsIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBkYXRhLXNyYz0iL2ljb25vcy9CQkMuVGhlLlNlY3JldC5IaXN0b3J5Lm9mLldyaXRpbmcuRTIuanBnIiBjbGFzcz0iaW1nLXJlc3BvbnNpdmUiIGFsdD0iV29yZHMgb24gYSBQYWdlIiAvPgoJCQkJCQkJCTxkaXYgY2xhc3M9InczbC1hY3Rpb24taWNvbiI+PGkgY2xhc3M9ImZhIGZhLXBsYXktY2lyY2xlIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPjwvZGl2PgoJCQkJCQkJPC9hPgoJCQkJCQkJPGRpdiBjbGFzcz0ibWlkLTEgYWdpbGVpdHNfdzNsYXlvdXRzX21pZF8xX2hvbWUiPgoJCQkJCQkJCTxkaXYgY2xhc3M9InczbC1tb3ZpZS10ZXh0Ij4KCQkJCQkJCQkJPGg2PjxhIGhyZWY9InBsYXllci5waHA/dGl0bGU9V29yZHMrb24rYStQYWdlIiB0YXJnZXQ9Il9ibGFuayI+V29yZHMgb24gYSBQYWdlPC9hPjwvaDY+CQkJCQkJCQoJCQkJCQkJCTwvZGl2PgoJCQkJCQkJPC9kaXY+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+CgkJCQkJCTxkaXYgY2xhc3M9InczbC1tb3ZpZS1ncmlkZS1hZ2lsZSB3M2wtbW92aWUtZ3JpZGUtYWdpbGUxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9InBsYXllci5waHA/dGl0bGU9U291dGhlcm4rUGF0YWdvbmlhIiBjbGFzcz0iaHZyLXNodXR0ZXItb3V0LWhvcml6b250YWwiIHRhcmdldD0iX2JsYW5rIj48aW1nIGRhdGEtc3JjPSIvaWNvbm9zL0xvbmcuV2F5LlVwLlMwMUUwMy5qcGciIGNsYXNzPSJpbWctcmVzcG9uc2l2ZSIgYWx0PSJTb3V0aGVybiBQYXRhZ29uaWEiIC8+CgkJCQkJCQkJPGRpdiBjbGFzcz0idzNsLWFjdGlvbi1pY29uIj48aSBjbGFzcz0iZmEgZmEtcGxheS1jaXJjbGUiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+PC9kaXY+CgkJCQkJCQk8L2E+CgkJCQkJCQk8ZGl2IGNsYXNzPSJtaWQtMSBhZ2lsZWl0c193M2xheW91dHNfbWlkXzFfaG9tZSI+CgkJCQkJCQkJPGRpdiBjbGFzcz0idzNsLW1vdmllLXRleHQiPgoJCQkJCQkJCQk8aDY+PGEgaHJlZj0icGxheWVyLnBocD90aXRsZT1Tb3V0aGVybitQYXRhZ29uaWEiIHRhcmdldD0iX2JsYW5rIj5Tb3V0aGVybiBQYXRhZ29uaWE8L2E+PC9oNj4JCQkJCQkJCgkJCQkJCQkJPC9kaXY+CgkJCQkJCQk8L2Rpdj4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KCQkJCQkJPGRpdiBjbGFzcz0idzNsLW1vdmllLWdyaWRlLWFnaWxlIHczbC1tb3ZpZS1ncmlkZS1hZ2lsZTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0icGxheWVyLnBocD90aXRsZT1Gcm9tK1BpY3R1cmVzK3RvK1dvcmRzIiBjbGFzcz0iaHZyLXNodXR0ZXItb3V0LWhvcml6b250YWwiIHRhcmdldD0iX2JsYW5rIj48aW1nIGRhdGEtc3JjPSIvaWNvbm9zL0JCQy5UaGUuU2VjcmV0Lkhpc3Rvcnkub2YuV3JpdGluZy5FMS5qcGciIGNsYXNzPSJpbWctcmVzcG9uc2l2ZSIgYWx0PSJGcm9tIFBpY3R1cmVzIHRvIFdvcmRzIiAvPgoJCQkJCQkJCTxkaXYgY2xhc3M9InczbC1hY3Rpb24taWNvbiI+PGkgY2xhc3M9ImZhIGZhLXBsYXktY2lyY2xlIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPjwvZGl2PgoJCQkJCQkJPC9hPgoJCQkJCQkJPGRpdiBjbGFzcz0ibWlkLTEgYWdpbGVpdHNfdzNsYXlvdXRzX21pZF8xX2hvbWUiPgoJCQkJCQkJCTxkaXYgY2xhc3M9InczbC1tb3ZpZS10ZXh0Ij4KCQkJCQkJCQkJPGg2PjxhIGhyZWY9InBsYXllci5waHA/dGl0bGU9RnJvbStQaWN0dXJlcyt0bytXb3JkcyIgdGFyZ2V0PSJfYmxhbmsiPkZyb20gUGljdHVyZXMgdG8gV29yZHM8L2E+PC9oNj4JCQkJCQkJCgkJCQkJCQkJPC9kaXY+CgkJCQkJCQk8L2Rpdj4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KCQkJCQkJPGRpdiBjbGFzcz0idzNsLW1vdmllLWdyaWRlLWFnaWxlIHczbC1tb3ZpZS1ncmlkZS1hZ2lsZTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0icGxheWVyLnBocD90aXRsZT1Vc2h1YWlhIiBjbGFzcz0iaHZyLXNodXR0ZXItb3V0LWhvcml6b250YWwiIHRhcmdldD0iX2JsYW5rIj48aW1nIGRhdGEtc3JjPSIvaWNvbm9zL0xvbmcuV2F5LlVwLlMwMUUwMi5qcGciIGNsYXNzPSJpbWctcmVzcG9uc2l2ZSIgYWx0PSJVc2h1YWlhIiAvPgoJCQkJCQkJCTxkaXYgY2xhc3M9InczbC1hY3Rpb24taWNvbiI+PGkgY2xhc3M9ImZhIGZhLXBsYXktY2lyY2xlIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPjwvZGl2PgoJCQkJCQkJPC9hPgoJCQkJCQkJPGRpdiBjbGFzcz0ibWlkLTEgYWdpbGVpdHNfdzNsYXlvdXRzX21pZF8xX2hvbWUiPgoJCQkJCQkJCTxkaXYgY2xhc3M9InczbC1tb3ZpZS10ZXh0Ij4KCQkJCQkJCQkJPGg2PjxhIGhyZWY9InBsYXllci5waHA/dGl0bGU9VXNodWFpYSIgdGFyZ2V0PSJfYmxhbmsiPlVzaHVhaWE8L2E+PC9oNj4JCQkJCQkJCgkJCQkJCQkJPC9kaXY+CgkJCQkJCQk8L2Rpdj4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtIj4KCQkJCQkJPGRpdiBjbGFzcz0idzNsLW1vdmllLWdyaWRlLWFnaWxlIHczbC1tb3ZpZS1ncmlkZS1hZ2lsZTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0icGxheWVyLnBocD90aXRsZT1QcmVwYXJhdGlvbiIgY2xhc3M9Imh2ci1zaHV0dGVyLW91dC1ob3Jpem9udGFsIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBkYXRhLXNyYz0iL2ljb25vcy9Mb25nLldheS5VcC5TMDFFMDEuanBnIiBjbGFzcz0iaW1nLXJlc3BvbnNpdmUiIGFsdD0iUHJlcGFyYXRpb24iIC8+CgkJCQkJCQkJPGRpdiBjbGFzcz0idzNsLWFjdGlvbi1pY29uIj48aSBjbGFzcz0iZmEgZmEtcGxheS1jaXJjbGUiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+PC9kaXY+CgkJCQkJCQk8L2E+CgkJCQkJCQk8ZGl2IGNsYXNzPSJtaWQtMSBhZ2lsZWl0c193M2xheW91dHNfbWlkXzFfaG9tZSI+CgkJCQkJCQkJPGRpdiBjbGFzcz0idzNsLW1vdmllLXRleHQiPgoJCQkJCQkJCQk8aDY+PGEgaHJlZj0icGxheWVyLnBocD90aXRsZT1QcmVwYXJhdGlvbiIgdGFyZ2V0PSJfYmxhbmsiPlByZXBhcmF0aW9uPC9hPjwvaDY+CQkJCQkJCQoJCQkJCQkJCTwvZGl2PgoJCQkJCQkJPC9kaXY+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbSI+CgkJCQkJCTxkaXYgY2xhc3M9InczbC1tb3ZpZS1ncmlkZS1hZ2lsZSB3M2wtbW92aWUtZ3JpZGUtYWdpbGUxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9InBsYXllci5waHA/dGl0bGU9VW5maXQiIGNsYXNzPSJodnItc2h1dHRlci1vdXQtaG9yaXpvbnRhbCIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgZGF0YS1zcmM9Ii9pY29ub3MvVW5maXQuVGhlLlBzeWNob2xvZ3kuT2YuRG9uYWxkLlRydW1wLmpwZyIgY2xhc3M9ImltZy1yZXNwb25zaXZlIiBhbHQ9IlVuZml0IiAvPgoJCQkJCQkJCTxkaXYgY2xhc3M9InczbC1hY3Rpb24taWNvbiI+PGkgY2xhc3M9ImZhIGZhLXBsYXktY2lyY2xlIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPjwvZGl2PgoJCQkJCQkJPC9hPgoJCQkJCQkJPGRpdiBjbGFzcz0ibWlkLTEgYWdpbGVpdHNfdzNsYXlvdXRzX21pZF8xX2hvbWUiPgoJCQkJCQkJCTxkaXYgY2xhc3M9InczbC1tb3ZpZS10ZXh0Ij4KCQkJCQkJCQkJPGg2PjxhIGhyZWY9InBsYXllci5waHA/dGl0bGU9VW5maXQiIHRhcmdldD0iX2JsYW5rIj5VbmZpdDwvYT48L2g2PgkJCQkJCQkKCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCTwvZGl2PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgoJCQkJCQk8ZGl2IGNsYXNzPSJ3M2wtbW92aWUtZ3JpZGUtYWdpbGUgdzNsLW1vdmllLWdyaWRlLWFnaWxlMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJwbGF5ZXIucGhwP3RpdGxlPUVsdmlzK1ByZXNsZXklM0ErVGhlK1NlYXJjaGVyK1BhcnQrVHdvIiBjbGFzcz0iaHZyLXNodXR0ZXItb3V0LWhvcml6b250YWwiIHRhcmdldD0iX2JsYW5rIj48aW1nIGRhdGEtc3JjPSIvaWNvbm9zL0VsdmlzLlByZXNsZXkuVGhlLlNlYXJjaGVyLlBhcnQuMi5qcGciIGNsYXNzPSJpbWctcmVzcG9uc2l2ZSIgYWx0PSJFbHZpcyBQcmVzbGV5OiBUaGUgU2VhcmNoZXIgUGFydCBUd28iIC8+CgkJCQkJCQkJPGRpdiBjbGFzcz0idzNsLWFjdGlvbi1pY29uIj48aSBjbGFzcz0iZmEgZmEtcGxheS1jaXJjbGUiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+PC9kaXY+CgkJCQkJCQk8L2E+CgkJCQkJCQk8ZGl2IGNsYXNzPSJtaWQtMSBhZ2lsZWl0c193M2xheW91dHNfbWlkXzFfaG9tZSI+CgkJCQkJCQkJPGRpdiBjbGFzcz0idzNsLW1vdmllLXRleHQiPgoJCQkJCQkJCQk8aDY+PGEgaHJlZj0icGxheWVyLnBocD90aXRsZT1FbHZpcytQcmVzbGV5JTNBK1RoZStTZWFyY2hlcitQYXJ0K1R3byIgdGFyZ2V0PSJfYmxhbmsiPkVsdmlzIFByZXNsZXk6IFRoZSBTZWFyY2hlciBQYXJ0IFR3bzwvYT48L2g2PgkJCQkJCQkKCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCTwvZGl2PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0iPgoJCQkJCQk8ZGl2IGNsYXNzPSJ3M2wtbW92aWUtZ3JpZGUtYWdpbGUgdzNsLW1vdmllLWdyaWRlLWFnaWxlMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJwbGF5ZXIucGhwP3RpdGxlPUVsdmlzK1ByZXNsZXklM0ErVGhlK1NlYXJjaGVyK0ZpcnN0K1BhcnQiIGNsYXNzPSJodnItc2h1dHRlci1vdXQtaG9yaXpvbnRhbCIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgZGF0YS1zcmM9Ii9pY29ub3MvRWx2aXMuUHJlc2xleS5UaGUuU2VhcmNoZXIuUGFydC4xLmpwZyIgY2xhc3M9ImltZy1yZXNwb25zaXZlIiBhbHQ9IkVsdmlzIFByZXNsZXk6IFRoZSBTZWFyY2hlciBGaXJzdCBQYXJ0IiAvPgoJCQkJCQkJCTxkaXYgY2xhc3M9InczbC1hY3Rpb24taWNvbiI+PGkgY2xhc3M9ImZhIGZhLXBsYXktY2lyY2xlIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPjwvZGl2PgoJCQkJCQkJPC9hPgoJCQkJCQkJPGRpdiBjbGFzcz0ibWlkLTEgYWdpbGVpdHNfdzNsYXlvdXRzX21pZF8xX2hvbWUiPgoJCQkJCQkJCTxkaXYgY2xhc3M9InczbC1tb3ZpZS10ZXh0Ij4KCQkJCQkJCQkJPGg2PjxhIGhyZWY9InBsYXllci5waHA/dGl0bGU9RWx2aXMrUHJlc2xleSUzQStUaGUrU2VhcmNoZXIrRmlyc3QrUGFydCIgdGFyZ2V0PSJfYmxhbmsiPkVsdmlzIFByZXNsZXk6IFRoZSBTZWFyY2hlciBGaXJzdCBQYXJ0PC9hPjwvaDY+CQkJCQkJCQoJCQkJCQkJCTwvZGl2PgoJCQkJCQkJPC9kaXY+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgogICAgICAgICAgICAgICAgICAgIAkJCQkJPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCQkJCQkJCiAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgCgkJCQkJCQkJCQkKCQkJCQkJICA8L2Rpdj4KCQkgIDwvZGl2PgoJCQkJICA8L2Rpdj4KCQkJCSAgPCEtLSAvL25ld3MtcmlnaHQtYm90dG9tIC0tPgo8L2Rpdj4KCTxkaXY+CgkJPHA+Jm5ic3A7PC9wPgkJCgk8L2Rpdj4KCjwhLS0gLy9mYXEtYmFubmVyIC0tPgo8IS0tIGZvb3RlciAtLT4KCTxkaXYgY2xhc3M9ImZvb3RlciIgc3R5bGU9Im1pbi1oZWlnaHQ6MzAwcHg7Ij4KICAgPGRpdiBpZD0iZmItcm9vdCI+PC9kaXY+CgkgIDxkaXYgY2xhc3M9InNoYXJlIHRleHRfY2VudGVyIj4KICAgICAgCQk8ZGl2IGNsYXNzPSJjb2wtbWQtNCI+CjxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9qcy9hZHNieWdvb2dsZS5qcyI+PC9zY3JpcHQ+CjwhLS0gMzAweDI1MCAtLT4KCQkJCQk8aW5zIGNsYXNzPSJhZHNieWdvb2dsZSIKICAgICAJCQkJCXN0eWxlPSJkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDozMDBweDtoZWlnaHQ6MjUwcHgiCiAgICAgCQkJCQlkYXRhLWFkLWNsaWVudD0iY2EtcHViLTM5OTYxODkwOTcyMzI1NDYiCiAgICAgCQkJCQlkYXRhLWFkLXNsb3Q9IjQ0NTc5Nzg3ODYiPjwvaW5zPgoJCQkJCQk8c2NyaXB0IGRlZmVyPgoJCQkJCQkoYWRzYnlnb29nbGUgPSB3aW5kb3cuYWRzYnlnb29nbGUgfHwgW10pLnB1c2goe30pOwoJCQkJCQk8L3NjcmlwdD4KICAgICAgICAgICAgPC9kaXY+IAogICAgICAgICAgIAk8ZGl2IGNsYXNzPSJjb2wtbWQtNCBzaW5nbGUtYWdpbGUtc2hhci1idXR0b25zIiA+CiAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgPGxpIHN0eWxlPSJmb250LXNpemU6MS4zZW07IGNvbG9yOiM5OTk7IGxpbmUtaGVpZ2h0OiAyZW07Ij4mbmJzcDsgRm9sbG93IE91ciBSZWxlYXNlcyEgPC9saT4gPGJyPgogICAgICAgICAgICAgICAgICAgIDxsaT4gPGRpdiBjbGFzcz0iZmItbGlrZSIgZGF0YS1ocmVmPSJodHRwczovL3d3dy5mYWNlYm9vay5jb20vRG9jdW1lbXRhcnlNYW5pYS8iIGRhdGEtbGF5b3V0PSJidXR0b25fY291bnQiIGRhdGEtYWN0aW9uPSJsaWtlIiBkYXRhLXNob3ctZmFjZXM9ImZhbHNlIiBkYXRhLXNoYXJlPSJmYWxzZSI+PC9kaXY+PC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+Jm5ic3A7Jm5ic3A7PGEgaHJlZj0iaHR0cHM6Ly90d2l0dGVyLmNvbS9Eb2N1bWVudHJ5bWFuaWEiIGNsYXNzPSJ0d2l0dGVyLWZvbGxvdy1idXR0b24iIGRhdGEtc2hvdy1jb3VudD0idHJ1ZSIgZGF0YS1sYW5nPSJlbiIgZGF0YS1zaXplPSJzbWFsbCIgZGF0YS1zaG93LXNjcmVlbi1uYW1lPSJmYWxzZSI+QERvY3VtZW50cnltYW5pYTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT4mbmJzcDsmbmJzcDs8YSBkYXRhLXBpbi1kbz0iYnV0dG9uRm9sbG93IiBocmVmPSJodHRwczovL3d3dy5waW50ZXJlc3QuY29tL0RvY3VtZW50YXJ5TWFuaWEvIj5QaW50ZXJlc3Q8L2E+PC9saT4KCQkJCQk8cD4mbmJzcDs8L3A+CiAgICAgICAgICAgICAgICAgICAgPGxpIHN0eWxlPSJmb250LXNpemU6MS4zZW07IGNvbG9yOiM5OTk7IGxpbmUtaGVpZ2h0OiAyZW07Ij4mbmJzcDsgTGlrZXMgYW5kIFNoYXJpbmcgPC9saT4gPGJyPgogICAgICAgICAgICAgICAgICAgIDxsaT4KPGRpdiBjbGFzcz0iZmItbGlrZSIgZGF0YS1ocmVmPSJodHRwczovL3d3dy5kb2N1bWVudGFyeW1hbmlhLmNvbS8iIGRhdGEtd2lkdGg9IiIgZGF0YS1sYXlvdXQ9ImJ1dHRvbl9jb3VudCIgZGF0YS1hY3Rpb249Imxpa2UiIGRhdGEtc2l6ZT0ic21hbGwiIGRhdGEtc2hhcmU9InRydWUiPjwvZGl2PgoJCQkJCTwvbGk+CgkJCQkKCQkJCQk8bGk+Jm5ic3A7Jm5ic3A7PGEgaHJlZj0iaHR0cHM6Ly90d2l0dGVyLmNvbS9pbnRlbnQvdHdlZXQ/b3JpZ2luYWxfcmVmZXJlcj1odHRwJTNBJTJGJTJGd3d3LmRvY3VtZW50YXJ5bWFuaWEuY29tJnJlZl9zcmM9dHdzcmMlNUV0ZncmdGV4dD1TaW1wbHklMjB0aGUlMjBiZXN0JTIwRG9jdW1lbnRhcmllcyUyMC0lMjBEb2N1bWVudGFyeSUyME1hbmlhJnR3X3A9dHdlZXRidXR0b24mdXJsPWh0dHAlM0ElMkYlMkZ3d3cuZG9jdW1lbnRhcnltYW5pYS5jb20lMkYiIHRhcmdldD0iX2JsYW5rIj48aW1nIGRhdGEtc3JjPSJPbmUvaW1hZ2VzL3R3ZWV0LnBuZyIgYWx0PSJUd2VldCIvPjwvYT4KCQkJCQk8L2xpPgoJCQkJCTxsaT4gJm5ic3A7Jm5ic3A7PGEgZGF0YS1waW4tZG89ImJ1dHRvblBpbiIgZGF0YS1waW4tY3VzdG9tPSJ0cnVlIiBocmVmPSJodHRwczovL3d3dy5waW50ZXJlc3QuY29tL3Bpbi9jcmVhdGUvYnV0dG9uLyIgZGF0YS1waW4tdXJsPSJodHRwczovL3d3dy5kb2N1bWVudGFyeW1hbmlhLmNvbS8iIGRhdGEtcGluLW1lZGlhPSJodHRwczovL3d3dy5kb2N1bWVudGFyeW1hbmlhLmNvbS9GYXZpY29ucy9zb2NpYWwtbG9nby5wbmciZGF0YS1waW4tZGVzY3JpcHRpb249J0RvY3VtZW50YXJ5IE1hbmlhIC0gU2ltcGx5IHRoZSBiZXN0IERvY3VtZW50YXJpZXMnPjxpbWcgc3JjPSJGYXZpY29ucy9QaW4uaXQucG5nIiBoZWlnaHQ9IjE5cHgiIHdpZHRoPSJhdXRvIiBhbHQ9IlBpbiBpdCIvPjwvYT4JCQkJCQkJCgkJCQkJPC9saT4gCiAgICAgICAgICAgICAgICAgICAgCgkJCQk8L3VsPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC00Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2JpIj4KICAgICAgICA8cD4mbmJzcDs8L3A+CiAgICAgICAgPC9kaXY+CjxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9qcy9hZHNieWdvb2dsZS5qcyI+PC9zY3JpcHQ+CjwhLS0gMzAweDI1MCAtLT4KCQkJCQk8aW5zIGNsYXNzPSJhZHNieWdvb2dsZSIKICAgICAJCQkJCXN0eWxlPSJkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDozMDBweDtoZWlnaHQ6MjUwcHgiCiAgICAgCQkJCQlkYXRhLWFkLWNsaWVudD0iY2EtcHViLTM5OTYxODkwOTcyMzI1NDYiCiAgICAgCQkJCQlkYXRhLWFkLXNsb3Q9IjQ0NTc5Nzg3ODYiPjwvaW5zPgoJCQkJCQk8c2NyaXB0IGRlZmVyPgoJCQkJCQkoYWRzYnlnb29nbGUgPSB3aW5kb3cuYWRzYnlnb29nbGUgfHwgW10pLnB1c2goe30pOwoJCQkJCQk8L3NjcmlwdD4KICAgICAgICA8L2Rpdj4gCgk8L2Rpdj4KICA8L2Rpdj4KCjwhLS0gLy9mb290ZXIgLS0+Cgo8L2Rpdj4KCjxzY3JpcHQgZGVmZXIgc3JjPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjMuNy9qcy9ib290c3RyYXAubWluLmpzIj48L3NjcmlwdD4KCjxzY3JpcHQ+CltdLmZvckVhY2guY2FsbChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbWdbZGF0YS1zcmNdJyksICAgIGZ1bmN0aW9uKGltZykgewogIGltZy5zZXRBdHRyaWJ1dGUoJ3NyYycsIGltZy5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3JjJykpOwogIGltZy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKICAgIGltZy5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtc3JjJyk7CiAgfTsKfSk7Cjwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4=
[generic] player: Extracting information
[debug] Default format spec: best/bestvideo+bestaudio
[debug] Invoking downloader on 'https://www.documentarymania.com/Videos/'
send: b'GET /Videos/ HTTP/1.1\r\nAccept-Encoding: identity\r\nHost: www.documentarymania.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.20 Safari/537.36\r\nAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-us,en;q=0.5\r\nCookie: PHPSESSID=8or0c0us88neoj1fr22tprltk5\r\nConnection: close\r\n\r\n'
reply: 'HTTP/1.1 403 Forbidden\r\n'
header: Server: nginx
header: Date: Sun, 18 Oct 2020 00:51:20 GMT
header: Content-Type: text/html; charset=iso-8859-1
header: Content-Length: 209
header: Connection: close
header: Vary: Accept-Encoding
header: Strict-Transport-Security: max-age=31536000
ERROR: unable to download video data: HTTP Error 403: Forbidden
Traceback (most recent call last):
  File "/root/doc_download/lib/python3.7/site-packages/youtube_dl/YoutubeDL.py", line 1926, in process_info
    success = dl(filename, info_dict)
  File "/root/doc_download/lib/python3.7/site-packages/youtube_dl/YoutubeDL.py", line 1865, in dl
    return fd.download(name, info)
  File "/root/doc_download/lib/python3.7/site-packages/youtube_dl/downloader/common.py", line 366, in download
    return self.real_download(filename, info_dict)
  File "/root/doc_download/lib/python3.7/site-packages/youtube_dl/downloader/http.py", line 348, in real_download
    establish_connection()
  File "/root/doc_download/lib/python3.7/site-packages/youtube_dl/downloader/http.py", line 114, in establish_connection
    raise err
  File "/root/doc_download/lib/python3.7/site-packages/youtube_dl/downloader/http.py", line 110, in establish_connection
    ctx.data = self.ydl.urlopen(request)
  File "/root/doc_download/lib/python3.7/site-packages/youtube_dl/YoutubeDL.py", line 2238, in urlopen
    return self._opener.open(req, timeout=self._socket_timeout)
  File "/usr/lib/python3.7/urllib/request.py", line 531, in open
    response = meth(req, response)
  File "/usr/lib/python3.7/urllib/request.py", line 641, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python3.7/urllib/request.py", line 569, in error
    return self._call_chain(*args)
  File "/usr/lib/python3.7/urllib/request.py", line 503, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.7/urllib/request.py", line 649, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden

(doc_download) root@lxc10:~/doc_download#
october262 commented 4 years ago

first play this video - https://www.documentarymania.com/player.php?title=The+Body+vs+Coronavirus and skip to almost to the end of the video and let it stop. 2nd open the network tab (F12) and select network and then media. you should see mp4 file.

copy the first URL, open a new tab - paste in the URL and hit enter, the video should play right click on the video and select save video as, the video should say videoHD.php, just add .mp4 like this videoHD.php.mp4 and you should have the video downloaded.

this work best using the firefox web browser and the brave web browser haven't tested on other browsers yet.

pez-public commented 4 years ago

The generic info extractor is obtaining the incorrect url. You can see in the verbose output where it says: [debug] Invoking downloader on 'https://www.documentarymania.com/Videos/'

It looks like it's happening here.

I believe this line is pulling the following content from the webpage: <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "VideoObject", "name": "The Body vs Coronavirus", "description": "How can we cope with the tricky coronavirus now rampant worldwide? As the pandemic tightens its grip on the world, there are important unanswered questions about this novel virus: Why does this infection spread so rapidly from people with no symptoms? Why do some people become critical while others don't? Will a definitive treatment be found? The underlying key to these questions lie in our immune system. Immune cells are microscopic warriors, combating viruses and another pathogens. <br> Through the high-tech 'eyes' of next-generation microscopes and computer-generated imagery, we will see how our immune defense corps combat against microbes and what mechanism is expected to help develop treatment. ", "thumbnailUrl": "https://www.documentarymania.com/iconos/The.Body.Vs.Coronavirus.jpg", "uploadDate": "2020-10-08 09:53:44Z", "duration": "PT51M30S", "contentUrl": "https://www.documentarymania.com/Videos/", "embedUrl": "https://www.documentarymania.com/player.php?title=The Body vs Coronavirus", "interactionCount": "5429" } </script>

You can see that "contentUrl" is "https://www.documentarymania.com/Videos/", and it looks like this value is used here, before being merged here.

Tested using the following: import youtube_dl from youtube_dl.extractor import generic url = "https://www.documentarymania.com/player.php?title=The+Body+vs+Coronavirus" gie = generic.GenericIE() gie.set_downloader(youtube_dl.YoutubeDL()) this = gie._real_extract(url) print(this)

I'm not authority on schemas, but per https://schema.org/VideoObject (the @context value that's referenced in the webpage), @type VideoObject is like a subclass of @type MediaObject, and the "contentUrl" of a MediaObject is supposed to be "Actual bytes of the media object, for example the image file or video file," so I would wager that this website is not following standard protocol.