{"id":6126,"date":"2026-07-06T05:41:05","date_gmt":"2026-07-06T05:41:05","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-10-test-2-listening\/"},"modified":"2026-07-12T03:25:11","modified_gmt":"2026-07-12T03:25:11","slug":"celpip-set-10-test-2-listening","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-10-test-2-listening\/","title":{"rendered":"CELPIP Set 10 \u2013 Practice Test 2 Listening"},"content":{"rendered":"<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Plus+Jakarta+Sans:wght@400;600;700;800&#038;display=swap\" rel=\"stylesheet\">\n<div class=\"clp-wrap\" id=\"clpApp\" data-variant=\"A\">\n<p>  <!-- ============ 1. HERO ============ --><\/p>\n<section class=\"clp-hero\" data-screen-label=\"Hero\">\n<div class=\"clp-aurora\"><span><\/span><span><\/span><span><\/span><\/div>\n<div class=\"clp-hero-shimmer\"><\/div>\n<div class=\"clp-hero-badges\">\n      <span class=\"clp-badge-brand\">CELPIP<\/span><br \/>\n      <span class=\"clp-badge-set\">Set 10 &#183; Practice Test 2<\/span>\n    <\/div>\n<h1>CELPIP Listening Practice Test<\/h1>\n<div class=\"clp-hero-chips\">\n      <span class=\"clp-chip\">6 parts<\/span><br \/>\n      <span class=\"clp-chip\">38 questions<\/span><br \/>\n      <span class=\"clp-chip\">~47 minutes<\/span><br \/>\n      <span class=\"clp-chip\">Everything plays once<\/span>\n    <\/div>\n<p>    <button class=\"clp-cta\" id=\"clpStart\">Start test<\/button><br \/>\n  <\/section>\n<p>  <!-- ============ Sticky practice toolbar ============ --><\/p>\n<div class=\"clp-toolbar\" id=\"clpToolbar\" hidden data-screen-label=\"Toolbar\">\n    <span class=\"clp-score-chip\" id=\"clpScoreChip\">Answered 0\/38<\/span><br \/>\n    <span class=\"clp-toolbar-spacer\"><\/span><br \/>\n    <button class=\"clp-tbtn\" id=\"clpTimerToggle\">Timer: on<\/button><br \/>\n    <button class=\"clp-tbtn clp-tbtn-check\" id=\"clpCheck\">Check answers<\/button><br \/>\n    <button class=\"clp-tbtn\" id=\"clpReset\">Reset<\/button>\n  <\/div>\n<p>  <!-- ============ 2. CAT SIMULATOR ============ --><\/p>\n<section class=\"clp-sim\" id=\"clpSim\" data-screen-label=\"CAT Simulator\">\n<div class=\"clp-dots\" id=\"clpDots\"><\/div>\n<div class=\"clp-cat\" id=\"clpCat\"><\/div>\n<\/section>\n<p>  <!-- ============ 3. RESULTS ============ --><\/p>\n<section class=\"clp-results\" id=\"clpResults\" hidden data-screen-label=\"Results\"><\/section>\n<\/div>\n<p><script>eval(atob('dmFyIENMUF9BVURJTz17IjAuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczEwdDItcDFzMS5tcDMiLCIwLjEiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvY2VscGlwLXMxMHQyLXAxczIubXAzIiwiMC4yIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L2NlbHBpcC1zMTB0Mi1wMXMzLm1wMyIsIjEuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczEwdDItcDIubXAzIiwiMi4wIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L2NlbHBpcC1zMTB0Mi1wMy5tcDMiLCIzLjAiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvY2VscGlwLXMxMHQyLXA0Lm1wMyIsIjUuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczEwdDItcDYubXAzIiwiNC4wIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L2NlbHBpcC1zMTB0Mi1wNS5tcDQifTt2YXIgQ0xQX0FVRElPX1ZJREVPPXsiNC4wIjoxfTsKCihmdW5jdGlvbigpe3ZhciBzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7cy50ZXh0Q29udGVudD0iXG4vKiA9PT09PT09PT09PT0gQ0VMUElQIExpc3RlbmluZyBQcmFjdGljZSBcdTIwMTQgc2NvcGVkLCBXb3JkUHJlc3Mtc2FmZSA9PT09PT09PT09PT0gKi9cbi5jbHAtd3JhcHtcbiAgLyogVkFSSUFOVF9DSFJPTUVfU1RBUlQgKi9cbiAgLS1iYXItYmc6I0U4RUJFRjtcbiAgLS1iYXItYm9yZGVyOiNEM0Q5RTA7XG4gIC0tYmFyLXRleHQ6IzFGMjkzNztcbiAgLS1wYW5lbC1tZWRpYS1iZzojRjRGNUY3O1xuICAtLXBhbmVsLW1lZGlhLWJvcmRlcjojRTNFNkVBO1xuICAtLW1lZGlhLWNhcmQtYmc6I0VDRUVGMTtcbiAgLS1tZWRpYS1jYXJkLWJvcmRlcjojRDhEREUzO1xuICAtLXBhbmVsLXEtYmc6I0U5RjRGNztcbiAgLS1wYW5lbC1xLWJvcmRlcjojRDZFOEVEO1xuICAtLWRkLW9wZW4tYmc6I0NCRUJGNDtcbiAgLyogVkFSSUFOVF9DSFJPTUVfRU5EICovXG4gIC0tbmF2eTojMDUwRTIwOyAtLWRhcms6IzBBMTYyODsgLS1iOTAwOiMwRDIzNTI7IC0tYjcwMDojMTI0NUE4OyAtLWI1MDA6IzI1NjNFQjtcbiAgLS1iNDAwOiMzQjgyRjY7IC0tYjIwMDojOTNDNUZEOyAtLWIxMDA6I0RCRUFGRTsgLS1iNTA6I0VGRjZGRjtcbiAgLS10ZWFsOiMwRDk0ODg7IC0tY3lhbjojMDZCNkQ0OyAtLWdyZWVuOiMxMEI5ODE7IC0tZ3JlZW41MDojRUNGREY1O1xuICAtLXJvc2U6I0Y0M0Y1RTsgLS1vcmFuZ2U6I0Y5NzMxNjtcbiAgLS10ZXh0OiMwRjE3MkE7IC0tbXV0ZWQ6IzQ3NTU2OTsgLS1zdWJ0bGU6Izk0QTNCODsgLS1ib3JkZXI6I0UyRThGMDtcbiAgLS1jcmltc29uOiNCNDJCM0M7IC0td2hpdGU6I0ZGRkZGRjsgLS1wYWdlOiNGOEZBRkY7XG4gIGZvbnQtZmFtaWx5OidQbHVzIEpha2FydGEgU2Fucycsc3lzdGVtLXVpLC1hcHBsZS1zeXN0ZW0sc2Fucy1zZXJpZjtcbiAgY29sb3I6dmFyKC0tdGV4dCk7XG4gIG1heC13aWR0aDoxMTQwcHg7IG1hcmdpbjowIGF1dG87IHBhZGRpbmc6MTZweCAxNnB4IDQ4cHg7XG4gIGxpbmUtaGVpZ2h0OjEuNTsgZm9udC1zaXplOjE2cHg7XG59XG4uY2xwLXdyYXAgKiwgLmNscC13cmFwICo6OmJlZm9yZSwgLmNscC13cmFwICo6OmFmdGVyeyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH1cbi5jbHAtd3JhcCBidXR0b257IGZvbnQtZmFtaWx5OmluaGVyaXQ7IGN1cnNvcjpwb2ludGVyOyB9XG4uY2xwLXdyYXAgaDEsLmNscC13cmFwIGgyLC5jbHAtd3JhcCBoMywuY2xwLXdyYXAgcHsgbWFyZ2luOjA7IH1cblxuLyogPT09PT09PT09PT09IEhFUk8gPT09PT09PT09PT09ICovXG4uY2xwLWhlcm97XG4gIHBvc2l0aW9uOnJlbGF0aXZlOyBvdmVyZmxvdzpoaWRkZW47IGJvcmRlci1yYWRpdXM6MjJweDtcbiAgYmFja2dyb3VuZDp2YXIoLS1uYXZ5KTsgY29sb3I6I2ZmZjtcbiAgcGFkZGluZzozNnB4IDQwcHg7XG4gIGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBnYXA6MTRweDsgYWxpZ24taXRlbXM6ZmxleC1zdGFydDtcbiAgYm94LXNoYWRvdzowIDIwcHggNDBweCAtMjBweCByZ2JhKDUsMTQsMzIsLjQ1KSwgMCA0cHggMTJweCAtNnB4IHJnYmEoNSwxNCwzMiwuMyk7XG59XG4uY2xwLWF1cm9yYXsgcG9zaXRpb246YWJzb2x1dGU7IGluc2V0OjA7IHBvaW50ZXItZXZlbnRzOm5vbmU7IH1cbi5jbHAtYXVyb3JhIHNwYW57XG4gIHBvc2l0aW9uOmFic29sdXRlOyBib3JkZXItcmFkaXVzOjUwJTsgZmlsdGVyOmJsdXIoNjBweCk7IG9wYWNpdHk6LjU7XG4gIGFuaW1hdGlvbjpjbHBGbG9hdCAxNHMgZWFzZS1pbi1vdXQgaW5maW5pdGUgYWx0ZXJuYXRlO1xufVxuLmNscC1hdXJvcmEgc3BhbjpudGgtY2hpbGQoMSl7IHdpZHRoOjQyMHB4OyBoZWlnaHQ6NDIwcHg7IGxlZnQ6LTEyMHB4OyB0b3A6LTIwMHB4OyBiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzEyNDVBOCAwJSx0cmFuc3BhcmVudCA3MCUpOyB9XG4uY2xwLWF1cm9yYSBzcGFuOm50aC1jaGlsZCgyKXsgd2lkdGg6MzgwcHg7IGhlaWdodDozODBweDsgcmlnaHQ6LTgwcHg7IHRvcDotMTYwcHg7IGJhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSwjMEQ5NDg4IDAlLHRyYW5zcGFyZW50IDcwJSk7IGFuaW1hdGlvbi1kZWxheTotNHM7IH1cbi5jbHAtYXVyb3JhIHNwYW46bnRoLWNoaWxkKDMpeyB3aWR0aDozNDBweDsgaGVpZ2h0OjM0MHB4OyByaWdodDoyMiU7IGJvdHRvbTotMjQwcHg7IGJhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSwjMjU2M0VCIDAlLHRyYW5zcGFyZW50IDcwJSk7IGFuaW1hdGlvbi1kZWxheTotOHM7IH1cbkBrZXlmcmFtZXMgY2xwRmxvYXR7XG4gIGZyb217IHRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCkgc2NhbGUoMSk7IH1cbiAgdG97IHRyYW5zZm9ybTp0cmFuc2xhdGUzZCg0MHB4LDI2cHgsMCkgc2NhbGUoMS4xMik7IH1cbn1cbi5jbHAtaGVyby1zaGltbWVye1xuICBwb3NpdGlvbjphYnNvbHV0ZTsgaW5zZXQ6MDsgcG9pbnRlci1ldmVudHM6bm9uZTtcbiAgYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTE1ZGVnLCB0cmFuc3BhcmVudCAzMCUsIHJnYmEoMTQ3LDE5NywyNTMsLjEwKSA0NSUsIHJnYmEoNiwxODIsMjEyLC4xMikgNTAlLCB0cmFuc3BhcmVudCA2NSUpO1xuICBiYWNrZ3JvdW5kLXNpemU6MjUwJSAxMDAlO1xuICBhbmltYXRpb246Y2xwU2hpbW1lciA3cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgY2xwU2hpbW1lcnsgMCV7YmFja2dyb3VuZC1wb3NpdGlvbjoxMjAlIDA7fSA1NSV7YmFja2dyb3VuZC1wb3NpdGlvbjotNDAlIDA7fSAxMDAle2JhY2tncm91bmQtcG9zaXRpb246LTQwJSAwO30gfVxuLmNscC1oZXJvLWJhZGdlc3sgZGlzcGxheTpmbGV4OyBnYXA6MTBweDsgYWxpZ24taXRlbXM6Y2VudGVyOyBmbGV4LXdyYXA6d3JhcDsgcG9zaXRpb246cmVsYXRpdmU7IH1cbi5jbHAtYmFkZ2UtYnJhbmR7XG4gIGJhY2tncm91bmQ6dmFyKC0tY3JpbXNvbik7IGNvbG9yOiNmZmY7IGZvbnQtd2VpZ2h0OjgwMDsgZm9udC1zaXplOjEycHg7XG4gIGxldHRlci1zcGFjaW5nOi4xMmVtOyBwYWRkaW5nOjVweCAxMnB4OyBib3JkZXItcmFkaXVzOjZweDtcbn1cbi5jbHAtYmFkZ2Utc2V0eyBjb2xvcjp2YXIoLS1iMjAwKTsgZm9udC1zaXplOjEzcHg7IGZvbnQtd2VpZ2h0OjYwMDsgfVxuLmNscC1oZXJvIGgxeyBwb3NpdGlvbjpyZWxhdGl2ZTsgZm9udC1zaXplOmNsYW1wKDI2cHgsNHZ3LDQwcHgpOyBmb250LXdlaWdodDo4MDA7IGxldHRlci1zcGFjaW5nOi0uMDJlbTsgbGluZS1oZWlnaHQ6MS4xMjsgfVxuLmNscC1oZXJvLWNoaXBzeyBkaXNwbGF5OmZsZXg7IGdhcDo4cHg7IGZsZXgtd3JhcDp3cmFwOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfVxuLmNscC1jaGlwe1xuICBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjA5KTsgYm9yZGVyOjFweCBzb2xpZCByZ2JhKDE0NywxOTcsMjUzLC4yNSk7XG4gIGNvbG9yOiNEQkVBRkU7IGZvbnQtc2l6ZToxM3B4OyBmb250LXdlaWdodDo2MDA7IHBhZGRpbmc6NnB4IDE0cHg7IGJvcmRlci1yYWRpdXM6MzJweDtcbiAgYmFja2Ryb3AtZmlsdGVyOmJsdXIoNHB4KTsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjI1cyBlYXNlLCBiYWNrZ3JvdW5kIC4yNXMgZWFzZTtcbn1cbi5jbHAtY2hpcDpob3ZlcnsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7IGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMTUpOyB9XG4uY2xwLWN0YXtcbiAgcG9zaXRpb246cmVsYXRpdmU7IGJhY2tncm91bmQ6dmFyKC0tYjUwMCk7IGNvbG9yOiNmZmY7IGJvcmRlcjpub25lOyBib3JkZXItcmFkaXVzOjEwcHg7XG4gIGZvbnQtc2l6ZToxNnB4OyBmb250LXdlaWdodDo3MDA7IHBhZGRpbmc6MTNweCAzNHB4OyBtYXJnaW4tdG9wOjJweDtcbiAgYm94LXNoYWRvdzowIDEwcHggMjJweCAtOHB4IHJnYmEoMzcsOTksMjM1LC42NSk7XG4gIHRyYW5zaXRpb246dHJhbnNmb3JtIC4yMnMgZWFzZSwgYm94LXNoYWRvdyAuMjJzIGVhc2UsIGJhY2tncm91bmQgLjIycyBlYXNlO1xufVxuLmNscC1jdGE6aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpOyBiYWNrZ3JvdW5kOnZhcigtLWI0MDApOyBib3gtc2hhZG93OjAgMTRweCAyNnB4IC04cHggcmdiYSgzNyw5OSwyMzUsLjc1KTsgfVxuXG4vKiA9PT09PT09PT09PT0gU1RJQ0tZIFRPT0xCQVIgPT09PT09PT09PT09ICovXG4uY2xwLXRvb2xiYXJbaGlkZGVuXXsgZGlzcGxheTpub25lOyB9XG4uY2xwLXRvb2xiYXJ7XG4gIHBvc2l0aW9uOnN0aWNreTsgdG9wOjhweDsgei1pbmRleDo2MDtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxMHB4OyBmbGV4LXdyYXA6d3JhcDtcbiAgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC45Mik7IGJhY2tkcm9wLWZpbHRlcjpibHVyKDhweCk7XG4gIGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxNnB4O1xuICBwYWRkaW5nOjhweCAxMnB4OyBtYXJnaW46MThweCAwIDA7XG4gIGJveC1zaGFkb3c6MCA4cHggMjRweCAtMTRweCByZ2JhKDE1LDIzLDQyLC4yNSksIDAgMnB4IDZweCAtNHB4IHJnYmEoMTUsMjMsNDIsLjEyKTtcbiAgbWluLWhlaWdodDo1MnB4O1xufVxuLmNscC1zY29yZS1jaGlwe1xuICBmb250LXdlaWdodDo4MDA7IGZvbnQtc2l6ZToxNHB4OyBjb2xvcjp2YXIoLS1iOTAwKTtcbiAgYmFja2dyb3VuZDp2YXIoLS1iNTApOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWIxMDApOyBib3JkZXItcmFkaXVzOjMycHg7IHBhZGRpbmc6N3B4IDE2cHg7XG59XG4uY2xwLXRidG57XG4gIGJvcmRlci1yYWRpdXM6MTBweDsgZm9udC1zaXplOjEzcHg7IGZvbnQtd2VpZ2h0OjcwMDsgcGFkZGluZzo5cHggMTZweDtcbiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBiYWNrZ3JvdW5kOiNmZmY7IGNvbG9yOnZhcigtLW11dGVkKTtcbiAgbWluLWhlaWdodDo0MHB4OyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnMgZWFzZSwgYm94LXNoYWRvdyAuMnMgZWFzZSwgYmFja2dyb3VuZCAuMnMgZWFzZTtcbn1cbi5jbHAtdGJ0bjpob3ZlcnsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTFweCk7IGJveC1zaGFkb3c6MCA2cHggMTRweCAtOHB4IHJnYmEoMTUsMjMsNDIsLjMpOyB9XG4uY2xwLXRidG4tY2hlY2t7IGJhY2tncm91bmQ6dmFyKC0tZ3JlZW4pOyBib3JkZXItY29sb3I6dmFyKC0tZ3JlZW4pOyBjb2xvcjojZmZmOyB9XG4uY2xwLXRidG4tY2hlY2s6aG92ZXJ7IGJhY2tncm91bmQ6IzBjYTY3ODsgfVxuLmNscC10YnRuW2Rpc2FibGVkXXsgb3BhY2l0eTouNTsgY3Vyc29yOm5vdC1hbGxvd2VkOyB0cmFuc2Zvcm06bm9uZTsgYm94LXNoYWRvdzpub25lOyB9XG4uY2xwLXRvb2xiYXItc3BhY2VyeyBmbGV4OjE7IH1cblxuLyogPT09PT09PT09PT09IENBVCBTSU1VTEFUT1IgPT09PT09PT09PT09ICovXG4uY2xwLXNpbXsgbWFyZ2luLXRvcDoxOHB4OyB9XG4uY2xwLWRvdHN7IGRpc3BsYXk6ZmxleDsgZ2FwOjZweDsgbWFyZ2luOjAgMCAxMHB4IDJweDsgfVxuLmNscC1kb3R7XG4gIGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYmFja2dyb3VuZDojZmZmOyBjb2xvcjp2YXIoLS1zdWJ0bGUpO1xuICBmb250LXNpemU6MTFweDsgZm9udC13ZWlnaHQ6NzAwOyBib3JkZXItcmFkaXVzOjMycHg7IHBhZGRpbmc6NHB4IDEwcHg7XG4gIHRyYW5zaXRpb246YmFja2dyb3VuZCAuMjVzIGVhc2UsIGNvbG9yIC4yNXMgZWFzZTtcbn1cbi5jbHAtZG90LmNscC1kb25leyBiYWNrZ3JvdW5kOnZhcigtLWIxMDApOyBib3JkZXItY29sb3I6dmFyKC0tYjIwMCk7IGNvbG9yOnZhcigtLWI5MDApOyB9XG4uY2xwLWRvdC5jbHAtY3VyeyBiYWNrZ3JvdW5kOnZhcigtLWI1MDApOyBib3JkZXItY29sb3I6dmFyKC0tYjUwMCk7IGNvbG9yOiNmZmY7IH1cbi5jbHAtZG90LmNscC1jbGlja2FibGV7IGN1cnNvcjpwb2ludGVyOyB9XG4uY2xwLWRvdDpub3QoLmNscC1jbGlja2FibGUpeyBjdXJzb3I6ZGVmYXVsdDsgfVxuXG4uY2xwLWNhdHtcbiAgcG9zaXRpb246cmVsYXRpdmU7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYmFyLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTBweDsgb3ZlcmZsb3c6dmlzaWJsZTtcbiAgYmFja2dyb3VuZDojZmZmO1xuICBib3gtc2hhZG93OjAgMTBweCAzMHB4IC0xOHB4IHJnYmEoMTUsMjMsNDIsLjIyKSwgMCAycHggOHB4IC01cHggcmdiYSgxNSwyMyw0MiwuMSk7XG59XG4uY2xwLWJhcntcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxMnB4O1xuICBiYWNrZ3JvdW5kOnZhcigtLWJhci1iZyk7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWJhci1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOjEwcHggMTBweCAwIDA7XG4gIHBhZGRpbmc6OXB4IDEycHg7IG1pbi1oZWlnaHQ6NDRweDtcbn1cbi5jbHAtYmFyLXRpdGxleyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjp2YXIoLS1iYXItdGV4dCk7IGZsZXg6MTsgbWluLXdpZHRoOjA7IH1cbi5jbHAtYmFyLXRpbWVyeyBmb250LXNpemU6MTJweDsgY29sb3I6dmFyKC0tYmFyLXRleHQpOyB3aGl0ZS1zcGFjZTpub3dyYXA7IH1cbi5jbHAtYmFyLXRpbWVyIGJ7IGZvbnQtd2VpZ2h0OjgwMDsgfVxuLmNscC1uZXh0e1xuICBiYWNrZ3JvdW5kOnZhcigtLWI3MDApOyBjb2xvcjojZmZmOyBib3JkZXI6bm9uZTsgYm9yZGVyLXJhZGl1czo0cHg7XG4gIGZvbnQtc2l6ZToxMXB4OyBmb250LXdlaWdodDo3MDA7IGxldHRlci1zcGFjaW5nOi4wOGVtOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7XG4gIHBhZGRpbmc6N3B4IDE2cHg7IG1pbi1oZWlnaHQ6MzBweDtcbiAgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4ycyBlYXNlLCB0cmFuc2Zvcm0gLjJzIGVhc2U7XG59XG4uY2xwLW5leHQ6aG92ZXJ7IGJhY2tncm91bmQ6dmFyKC0tYjkwMCk7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xcHgpOyB9XG4uY2xwLXNjcmVlbnsgYm9yZGVyLXJhZGl1czowIDAgMTBweCAxMHB4OyBvdmVyZmxvdzpoaWRkZW47IH1cblxuLmNscC1pbnN0cntcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpmbGV4LXN0YXJ0OyBnYXA6OXB4O1xuICBwYWRkaW5nOjE0cHggMTZweCAxMnB4OyBiYWNrZ3JvdW5kOiNmZmY7XG59XG4uY2xwLWluZm97XG4gIGZsZXg6bm9uZTsgd2lkdGg6MThweDsgaGVpZ2h0OjE4cHg7IG1hcmdpbi10b3A6MnB4OyBib3JkZXItcmFkaXVzOjUwJTtcbiAgYmFja2dyb3VuZDp2YXIoLS1iNTAwKTsgY29sb3I6I2ZmZjsgZm9udC13ZWlnaHQ6ODAwOyBmb250LXNpemU6MTFweDsgZm9udC1zdHlsZTppdGFsaWM7XG4gIGRpc3BsYXk6aW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgZm9udC1mYW1pbHk6R2VvcmdpYSxzZXJpZjtcbn1cbi5jbHAtaW5zdHIgcHsgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjcwMDsgY29sb3I6dmFyKC0tYjkwMCk7IH1cblxuLyogaW50cm8gc2NyZWVuICovXG4uY2xwLWludHJvLWJvZHl7IHBhZGRpbmc6NnB4IDIwcHggMjZweCA0NHB4OyBiYWNrZ3JvdW5kOiNmZmY7IH1cbi5jbHAtaW50cm8tYm9keSBoM3sgZm9udC1zaXplOjE1cHg7IGZvbnQtd2VpZ2h0OjgwMDsgY29sb3I6dmFyKC0tdGV4dCk7IG1hcmdpbi1ib3R0b206MTJweDsgfVxuLmNscC1idWxsZXRzeyBsaXN0LXN0eWxlOm5vbmU7IG1hcmdpbjowOyBwYWRkaW5nOjA7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBnYXA6MTBweDsgbWF4LXdpZHRoOjY0MHB4OyB9XG4uY2xwLWJ1bGxldHMgbGl7XG4gIGRpc3BsYXk6ZmxleDsgZ2FwOjEwcHg7IGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLWI5MDApO1xuICBwYWRkaW5nLWJvdHRvbToxMHB4OyBib3JkZXItYm90dG9tOjFweCBkb3R0ZWQgdmFyKC0tYm9yZGVyKTtcbn1cbi5jbHAtYnVsbGV0cyBsaTo6YmVmb3JleyBjb250ZW50OlwiXCI7IGZsZXg6bm9uZTsgd2lkdGg6OHB4OyBoZWlnaHQ6OHB4OyBib3JkZXItcmFkaXVzOjUwJTsgYmFja2dyb3VuZDp2YXIoLS1iNDAwKTsgbWFyZ2luLXRvcDo2cHg7IH1cblxuLyogbWVkaWEgc2NyZWVuICovXG4uY2xwLW1lZGlhLXBhbmVse1xuICBiYWNrZ3JvdW5kOnZhcigtLXBhbmVsLW1lZGlhLWJnKTsgYm9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tcGFuZWwtbWVkaWEtYm9yZGVyKTtcbiAgcGFkZGluZzozNHB4IDIwcHggMjZweDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjE0cHg7XG59XG4uY2xwLW1lZGlhLWNhcmR7XG4gIHdpZHRoOjEwMCU7IG1heC13aWR0aDo1MjBweDtcbiAgYmFja2dyb3VuZDp2YXIoLS1tZWRpYS1jYXJkLWJnKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1tZWRpYS1jYXJkLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTBweDtcbiAgcGFkZGluZzoyMnB4IDI2cHg7XG59XG4uY2xwLW1lZGlhLWNhcmQuY2xwLWlzLXZpZGVveyBtYXgtd2lkdGg6NjYwcHg7IHBhZGRpbmc6MTJweDsgfVxuLmNscC1tZWRpYS16b25leyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjE4cHg7IH1cbi5jbHAtaXMtdmlkZW8gLmNscC1tZWRpYS16b25le1xuICBhc3BlY3QtcmF0aW86MTYvOTsgd2lkdGg6MTAwJTsgYm9yZGVyLXJhZGl1czo2cHg7IGJhY2tncm91bmQ6dmFyKC0tZGFyayk7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBtYXJnaW4tYm90dG9tOjEycHg7XG4gIGNvbG9yOiNmZmY7XG59XG4uY2xwLXNwZWFrZXJ7XG4gIGZsZXg6bm9uZTsgd2lkdGg6NTZweDsgaGVpZ2h0OjU2cHg7IGJvcmRlci1yYWRpdXM6OHB4OyBiYWNrZ3JvdW5kOiNmZmY7XG4gIGJvcmRlcjoxcHggc29saWQgdmFyKC0tbWVkaWEtY2FyZC1ib3JkZXIpO1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgY29sb3I6dmFyKC0tbXV0ZWQpO1xufVxuLmNscC1pcy12aWRlbyAuY2xwLXNwZWFrZXJ7IGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMTIpOyBib3JkZXI6bm9uZTsgY29sb3I6I2ZmZjsgd2lkdGg6NjRweDsgaGVpZ2h0OjY0cHg7IGJvcmRlci1yYWRpdXM6NTAlOyB9XG4uY2xwLW1lZGlhLW1haW57IGZsZXg6MTsgbWluLXdpZHRoOjA7IH1cbi5jbHAtaXMtdmlkZW8gLmNscC1tZWRpYS1tYWlueyBwYWRkaW5nOjAgMTBweCA0cHg7IH1cbi5jbHAtbWVkaWEtbGFiZWx7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjp2YXIoLS10ZXh0KTsgbWFyZ2luLWJvdHRvbToxMHB4OyB9XG4uY2xwLXByb2dyZXNzeyBoZWlnaHQ6OHB4OyBib3JkZXItcmFkaXVzOjZweDsgYmFja2dyb3VuZDojZmZmOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLW1lZGlhLWNhcmQtYm9yZGVyKTsgb3ZlcmZsb3c6aGlkZGVuOyB9XG4uY2xwLWlzLXZpZGVvIC5jbHAtcHJvZ3Jlc3N7IGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuNik7IH1cbi5jbHAtcHJvZ3Jlc3MtZmlsbHsgaGVpZ2h0OjEwMCU7IHdpZHRoOjAlOyBiYWNrZ3JvdW5kOnZhcigtLWN5YW4pOyBib3JkZXItcmFkaXVzOjZweDsgdHJhbnNpdGlvbjp3aWR0aCAuM3MgbGluZWFyOyB9XG4uY2xwLW1lZGlhLW1ldGF7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTBweDsgZm9udC1zaXplOjEzcHg7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC13ZWlnaHQ6NjAwO1xufVxuLmNscC1tZWRpYS1tZXRhIHN2Z3sgZGlzcGxheTpibG9jazsgfVxuLmNscC1vbmNlLW5vdGV7IGZvbnQtc2l6ZToxMnB4OyBjb2xvcjp2YXIoLS1zdWJ0bGUpOyBmb250LXdlaWdodDo2MDA7IH1cblxuLyogcXVlc3Rpb24gc2NyZWVuICovXG4uY2xwLXEtcGFuZWx7XG4gIGJhY2tncm91bmQ6dmFyKC0tcGFuZWwtcS1iZyk7IGJvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLXBhbmVsLXEtYm9yZGVyKTtcbiAgcGFkZGluZzoyMHB4IDIycHggMzBweDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGdhcDoyMHB4O1xufVxuLmNscC1xeyBmb250LXNpemU6MTUuNXB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLXRleHQpOyBsaW5lLWhlaWdodDoyOyB9XG4uY2xwLXFudW17IGZvbnQtd2VpZ2h0OjcwMDsgfVxuLmNscC1kZHtcbiAgZGlzcGxheTppbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6OHB4O1xuICBib3JkZXI6bm9uZTsgYm9yZGVyLWJvdHRvbToycHggZG90dGVkIHZhcigtLXN1YnRsZSk7IGJhY2tncm91bmQ6dHJhbnNwYXJlbnQ7XG4gIGNvbG9yOnZhcigtLWI3MDApOyBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NjAwO1xuICBwYWRkaW5nOjRweCA4cHggM3B4OyBtYXJnaW46MCAycHg7IG1pbi1oZWlnaHQ6MzJweDsgbWF4LXdpZHRoOjEwMCU7XG4gIGJvcmRlci1yYWRpdXM6NHB4IDRweCAwIDA7IHZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO1xuICB0cmFuc2l0aW9uOmJhY2tncm91bmQgLjJzIGVhc2U7XG59XG4uY2xwLWRkOmhvdmVyeyBiYWNrZ3JvdW5kOnJnYmEoMzcsOTksMjM1LC4wOCk7IH1cbi5jbHAtZGQuY2xwLW9wZW57IGJhY2tncm91bmQ6dmFyKC0tZGQtb3Blbi1iZyk7IH1cbi5jbHAtZGQgLmNscC1kZC10ZXh0e1xuICBvdmVyZmxvdzpoaWRkZW47IHRleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7IHdoaXRlLXNwYWNlOm5vd3JhcDsgbWF4LXdpZHRoOjQyMHB4O1xufVxuLmNscC1kZCAuY2xwLWRkLWNhcmV0eyBmb250LXNpemU6OXB4OyBjb2xvcjp2YXIoLS1iNzAwKTsgZmxleDpub25lOyB9XG4uY2xwLWRkLmNscC11bmFuc3dlcmVkIC5jbHAtZGQtdGV4dHsgbGV0dGVyLXNwYWNpbmc6MnB4OyBjb2xvcjp2YXIoLS1zdWJ0bGUpOyB9XG4uY2xwLWRkLmNscC1tYXJrLXJpZ2h0eyBiYWNrZ3JvdW5kOnZhcigtLWdyZWVuNTApOyBib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdyZWVuKTsgYm9yZGVyLXJhZGl1czo2cHg7IGNvbG9yOiMwNDc4NTc7IH1cbi5jbHAtZGQuY2xwLW1hcmstd3Jvbmd7IGJhY2tncm91bmQ6I0ZGRjFGMjsgYm9yZGVyOjJweCBzb2xpZCB2YXIoLS1yb3NlKTsgYm9yZGVyLXJhZGl1czo2cHg7IGNvbG9yOiNCRTEyM0M7IH1cbi5jbHAtZGRbZGlzYWJsZWRdeyBjdXJzb3I6ZGVmYXVsdDsgfVxuLmNscC1yZXZlYWx7XG4gIGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZToxMy41cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6IzA0Nzg1NzsgbGluZS1oZWlnaHQ6MS41O1xuICBtYXJnaW46MnB4IDAgMCAyNnB4O1xufVxuLmNscC1yZXZlYWwgYnsgZm9udC13ZWlnaHQ6ODAwOyB9XG4uY2xwLXRvZG8tdGFne1xuICBmb250LXNpemU6MTBweDsgZm9udC13ZWlnaHQ6ODAwOyBsZXR0ZXItc3BhY2luZzouMDhlbTsgY29sb3I6dmFyKC0tb3JhbmdlKTtcbiAgYm9yZGVyOjFweCBzb2xpZCBjdXJyZW50Q29sb3I7IGJvcmRlci1yYWRpdXM6NHB4OyBwYWRkaW5nOjFweCA2cHg7IG1hcmdpbi1sZWZ0OjhweDsgdmVydGljYWwtYWxpZ246MnB4O1xufVxuXG4vKiBkcm9wZG93biBwb3B1cCAqL1xuLmNscC1wb3B7XG4gIHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjgwOyB3aWR0aDptaW4oMzQwcHgsIGNhbGMoMTAwdncgLSA0OHB4KSk7XG4gIGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjEwcHg7XG4gIGJveC1zaGFkb3c6MCAxOHB4IDQwcHggLTEycHggcmdiYSgxNSwyMyw0MiwuMjgpLCAwIDRweCAxMnB4IC02cHggcmdiYSgxNSwyMyw0MiwuMTQpO1xuICBwYWRkaW5nOjZweDsgXG59XG4uY2xwLW9wdHtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxMXB4OyB3aWR0aDoxMDAlO1xuICBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50OyBib3JkZXI6bm9uZTsgdGV4dC1hbGlnbjpsZWZ0O1xuICBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjp2YXIoLS10ZXh0KTtcbiAgcGFkZGluZzoxMHB4IDEycHg7IG1pbi1oZWlnaHQ6NDJweDsgYm9yZGVyLXJhZGl1czo2cHg7XG4gIGJvcmRlci1ib3R0b206MXB4IGRvdHRlZCB2YXIoLS1ib3JkZXIpO1xuICB0cmFuc2l0aW9uOmJhY2tncm91bmQgLjE1cyBlYXNlO1xufVxuLmNscC1vcHQ6bGFzdC1jaGlsZHsgYm9yZGVyLWJvdHRvbTpub25lOyB9XG4uY2xwLW9wdDpob3ZlcnsgYmFja2dyb3VuZDp2YXIoLS1iNTApOyB9XG4uY2xwLXJhZGlve1xuICBmbGV4Om5vbmU7IHdpZHRoOjE3cHg7IGhlaWdodDoxN3B4OyBib3JkZXItcmFkaXVzOjUwJTtcbiAgYm9yZGVyOjJweCBzb2xpZCB2YXIoLS1zdWJ0bGUpOyBiYWNrZ3JvdW5kOiNmZmY7IHBvc2l0aW9uOnJlbGF0aXZlO1xufVxuLmNscC1vcHQuY2xwLXNlbCAuY2xwLXJhZGlveyBib3JkZXItY29sb3I6dmFyKC0tYjUwMCk7IH1cbi5jbHAtb3B0LmNscC1zZWwgLmNscC1yYWRpbzo6YWZ0ZXJ7XG4gIGNvbnRlbnQ6XCJcIjsgcG9zaXRpb246YWJzb2x1dGU7IGluc2V0OjIuNXB4OyBib3JkZXItcmFkaXVzOjUwJTsgYmFja2dyb3VuZDp2YXIoLS1iNTAwKTtcbn1cblxuLyogcHJlLXN0YXJ0IC8gZmluaXNoICovXG4uY2xwLWlkbGV7XG4gIHBhZGRpbmc6NTZweCAyNHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgYmFja2dyb3VuZDojZmZmOyBib3JkZXItcmFkaXVzOjAgMCAxMHB4IDEwcHg7XG59XG4uY2xwLWlkbGUgcHsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXNpemU6MTVweDsgZm9udC13ZWlnaHQ6NjAwOyBtYXgtd2lkdGg6NDgwcHg7IG1hcmdpbjowIGF1dG87IH1cbi5jbHAtZmluaXNoeyBwYWRkaW5nOjQ4cHggMjRweCA1NnB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgYmFja2dyb3VuZDojZmZmOyB9XG4uY2xwLWZpbmlzaCBoM3sgZm9udC1zaXplOjIycHg7IGZvbnQtd2VpZ2h0OjgwMDsgbWFyZ2luLWJvdHRvbToxMHB4OyB9XG4uY2xwLWZpbmlzaCBweyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtc2l6ZToxNXB4OyBmb250LXdlaWdodDo2MDA7IG1hcmdpbi1ib3R0b206MjJweDsgfVxuLmNscC1maW5pc2gtY2hlY2t7XG4gIGJhY2tncm91bmQ6dmFyKC0tZ3JlZW4pOyBjb2xvcjojZmZmOyBib3JkZXI6bm9uZTsgYm9yZGVyLXJhZGl1czoxMHB4O1xuICBmb250LXNpemU6MTZweDsgZm9udC13ZWlnaHQ6NzAwOyBwYWRkaW5nOjEzcHggMzJweDsgbWluLWhlaWdodDo0NHB4O1xuICBib3gtc2hhZG93OjAgMTBweCAyMnB4IC04cHggcmdiYSgxNiwxODUsMTI5LC41NSk7XG4gIHRyYW5zaXRpb246dHJhbnNmb3JtIC4ycyBlYXNlLCBiYWNrZ3JvdW5kIC4ycyBlYXNlO1xufVxuLmNscC1maW5pc2gtY2hlY2s6aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpOyBiYWNrZ3JvdW5kOiMwY2E2Nzg7IH1cblxuLyogPT09PT09PT09PT09IFJFU1VMVFMgPT09PT09PT09PT09ICovXG4uY2xwLXJlc3VsdHN7IG1hcmdpbi10b3A6MzBweDsgfVxuLmNscC1yZXN1bHRzIGgyeyBmb250LXNpemU6MjRweDsgZm9udC13ZWlnaHQ6ODAwOyBsZXR0ZXItc3BhY2luZzotLjAxZW07IG1hcmdpbi1ib3R0b206MTZweDsgfVxuLmNscC1yZXMtZ3JpZHsgZGlzcGxheTpncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6YXV0byAxZnI7IGdhcDoxNnB4OyBhbGlnbi1pdGVtczpzdHJldGNoOyB9XG4uY2xwLWNhcmR7XG4gIGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjE2cHg7IHBhZGRpbmc6MjJweDtcbiAgYm94LXNoYWRvdzowIDEwcHggMzBweCAtMjBweCByZ2JhKDE1LDIzLDQyLC4yNSksIDAgMnB4IDhweCAtNnB4IHJnYmEoMTUsMjMsNDIsLjA4KTtcbiAgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjI1cyBlYXNlLCBib3gtc2hhZG93IC4yNXMgZWFzZTtcbn1cbi5jbHAtY2FyZDpob3ZlcnsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7IGJveC1zaGFkb3c6MCAxNnB4IDM2cHggLTIwcHggcmdiYSgxNSwyMyw0MiwuMyk7IH1cbi5jbHAtcmluZy1jYXJkeyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6OHB4OyBtaW4td2lkdGg6MjIwcHg7IH1cbi5jbHAtcmluZy13cmFweyBwb3NpdGlvbjpyZWxhdGl2ZTsgd2lkdGg6MTMycHg7IGhlaWdodDoxMzJweDsgfVxuLmNscC1yaW5nLXdyYXAgc3ZneyB0cmFuc2Zvcm06cm90YXRlKC05MGRlZyk7IGRpc3BsYXk6YmxvY2s7IH1cbi5jbHAtcmluZy1udW17XG4gIHBvc2l0aW9uOmFic29sdXRlOyBpbnNldDowOyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjtcbiAgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBmb250LXdlaWdodDo4MDA7XG59XG4uY2xwLXJpbmctbnVtIGJ7IGZvbnQtc2l6ZToyOHB4OyBsaW5lLWhlaWdodDoxOyBjb2xvcjp2YXIoLS1iOTAwKTsgfVxuLmNscC1yaW5nLW51bSBzcGFueyBmb250LXNpemU6MTJweDsgY29sb3I6dmFyKC0tc3VidGxlKTsgZm9udC13ZWlnaHQ6NzAwOyB9XG4uY2xwLXJpbmctY2FyZCBoM3sgZm9udC1zaXplOjE0cHg7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC13ZWlnaHQ6NzAwOyB9XG4uY2xwLXBhcnQtY2hpcHN7IGRpc3BsYXk6ZmxleDsgZmxleC13cmFwOndyYXA7IGdhcDoxMHB4OyBtYXJnaW4tdG9wOjEycHg7IH1cbi5jbHAtcGFydC1jaGlwe1xuICBib3JkZXItcmFkaXVzOjMycHg7IHBhZGRpbmc6OHB4IDE2cHg7IGZvbnQtc2l6ZToxM3B4OyBmb250LXdlaWdodDo3MDA7XG4gIGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1iMTAwKTsgY29sb3I6dmFyKC0tYjkwMCk7XG59XG4uY2xwLXBhcnQtY2hpcCBieyBmb250LXdlaWdodDo4MDA7IH1cbi5jbHAtY2xiLXJvd3tcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxNHB4OyBmbGV4LXdyYXA6d3JhcDsgbWFyZ2luLXRvcDoxNnB4O1xuICBwYWRkaW5nOjE0cHggMTZweDsgYm9yZGVyLXJhZGl1czoxMHB4OyBiYWNrZ3JvdW5kOnZhcigtLWI1MCk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYjEwMCk7XG59XG4uY2xwLWNsYi1iYWRnZXtcbiAgYmFja2dyb3VuZDp2YXIoLS1jcmltc29uKTsgY29sb3I6I2ZmZjsgZm9udC13ZWlnaHQ6ODAwOyBmb250LXNpemU6MTRweDtcbiAgYm9yZGVyLXJhZGl1czoxMHB4OyBwYWRkaW5nOjhweCAxNnB4O1xufVxuLmNscC1jbGItcm93IHB7IGZvbnQtc2l6ZToxM3B4OyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtd2VpZ2h0OjYwMDsgZmxleDoxOyBtaW4td2lkdGg6MjAwcHg7IH1cbi5jbHAtdHJhbnNjcmlwdHN7IG1hcmdpbi10b3A6MTZweDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGdhcDoxMHB4OyB9XG4uY2xwLXRyLWNhcmR7IGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjE2cHg7IG92ZXJmbG93OmhpZGRlbjsgfVxuLmNscC10ci1oZWFke1xuICB3aWR0aDoxMDAlOyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IGdhcDoxMHB4O1xuICBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50OyBib3JkZXI6bm9uZTsgcGFkZGluZzoxNXB4IDIwcHg7IHRleHQtYWxpZ246bGVmdDtcbiAgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjcwMDsgY29sb3I6dmFyKC0tdGV4dCk7IG1pbi1oZWlnaHQ6NDhweDtcbn1cbi5jbHAtdHItaGVhZDpob3ZlcnsgYmFja2dyb3VuZDp2YXIoLS1iNTApOyB9XG4uY2xwLXRyLWhlYWQgLmNscC10ci1jYXJldHsgY29sb3I6dmFyKC0tc3VidGxlKTsgZm9udC1zaXplOjExcHg7IHRyYW5zaXRpb246dHJhbnNmb3JtIC4ycyBlYXNlOyB9XG4uY2xwLXRyLWNhcmQuY2xwLW9wZW4gLmNscC10ci1jYXJldHsgdHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpOyB9XG4uY2xwLXRyLWJvZHl7IGRpc3BsYXk6bm9uZTsgcGFkZGluZzowIDIwcHggMThweDsgZm9udC1zaXplOjE0cHg7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC13ZWlnaHQ6NTAwOyBsaW5lLWhlaWdodDoxLjc7IH1cbi5jbHAtdHItY2FyZC5jbHAtb3BlbiAuY2xwLXRyLWJvZHl7IGRpc3BsYXk6YmxvY2s7IH1cbi5jbHAtdHItdG9kb3sgY29sb3I6dmFyKC0tb3JhbmdlKTsgZm9udC13ZWlnaHQ6NzAwOyBmb250LXNpemU6MTIuNXB4OyBkaXNwbGF5OmJsb2NrOyBtYXJnaW4tdG9wOjhweDsgfVxuXG4vKiBzY3JvbGwgcmV2ZWFsICovXG4uY2xwLXJldnsgb3BhY2l0eTowOyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgxNnB4KTsgdHJhbnNpdGlvbjpvcGFjaXR5IC41cyBlYXNlLCB0cmFuc2Zvcm0gLjVzIGVhc2U7IH1cbi5jbHAtcmV2LmNscC1pbnsgb3BhY2l0eToxOyB0cmFuc2Zvcm06bm9uZTsgfVxuXG4vKiA9PT09PT09PT09PT0gUkVTUE9OU0lWRSA9PT09PT09PT09PT0gKi9cbkBtZWRpYSAobWF4LXdpZHRoOjcwMHB4KXtcbiAgLmNscC13cmFweyBwYWRkaW5nOjEwcHggMTBweCA0MHB4OyB9XG4gIC5jbHAtaGVyb3sgcGFkZGluZzoyOHB4IDIycHg7IGJvcmRlci1yYWRpdXM6MTZweDsgfVxuICAuY2xwLXF7IGZvbnQtc2l6ZToxNXB4OyB9XG4gIC5jbHAtZGR7IG1pbi1oZWlnaHQ6NDBweDsgfVxuICAuY2xwLWRkIC5jbHAtZGQtdGV4dHsgbWF4LXdpZHRoOjE4MHB4OyB9XG4gIC5jbHAtYmFyeyBmbGV4LXdyYXA6d3JhcDsgfVxuICAuY2xwLWJhci10aXRsZXsgZmxleC1iYXNpczoxMDAlOyB9XG4gIC5jbHAtcS1wYW5lbHsgcGFkZGluZzoxNnB4IDE0cHggMjZweDsgfVxuICAuY2xwLWludHJvLWJvZHl7IHBhZGRpbmctbGVmdDoyMHB4OyB9XG4gIC5jbHAtcmVzLWdyaWR7IGdyaWQtdGVtcGxhdGUtY29sdW1uczoxZnI7IH1cbiAgLmNscC1tZWRpYS1jYXJkeyBwYWRkaW5nOjE2cHg7IH1cbn1cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKXtcbiAgLmNscC13cmFwICosIC5jbHAtd3JhcCAqOjpiZWZvcmUsIC5jbHAtd3JhcCAqOjphZnRlcntcbiAgICBhbmltYXRpb246bm9uZSAhaW1wb3J0YW50OyB0cmFuc2l0aW9uOm5vbmUgIWltcG9ydGFudDtcbiAgfVxuICAuY2xwLXJldnsgb3BhY2l0eToxOyB0cmFuc2Zvcm06bm9uZTsgfVxufVxuXG4uY2xwLWF1cm9yYSBzcGFue2ZpbHRlcjpibHVyKDM2cHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfVxuLmNscC1oZXJvLXNoaW1tZXJ7d2lsbC1jaGFuZ2U6YmFja2dyb3VuZC1wb3NpdGlvbn1cbiI7ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzKTt9KSgpOwoKJ3VzZSBzdHJpY3QnOwovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgVEVTVF9EQVRBIFx1MjAxNCBzd2FwIGluIG5ldyBzZXRzIGhlcmUgd2l0aG91dCB0b3VjaGluZyBtYXJrdXAuCiAgIFNoYXBlOiB7IHBhcnRzOlt7IG5hbWUsIGhlYWRlclRpdGxlLCBpbnRyb1RpdGxlLCBpbnRyb0J1bGxldHNbXSwKICAgICAgICAgICAgcUluc3RydWN0aW9uLCB0cmFuc2NyaXB0LCBzZWN0aW9uczpbeyBsYWJlbCwgbWVkaWFUeXBlLAogICAgICAgICAgICBkdXJhdGlvbihzZWMpLCB0aW1lTWludXRlcywgbWVkaWFJbnN0cnVjdGlvbiwKICAgICAgICAgICAgcXVlc3Rpb25zOlt7IG4sIHN0ZW0sIG9wdGlvbnNbNF0sIGtleSgxLTQpLCB0b2RvPyB9XSB9XSB9XSB9CiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwp2YXIgVEVTVF9EQVRBID0geyJ0ZXN0TGFiZWwiOiJTZXQgMTAgXHUyMDEzIFByYWN0aWNlIFRlc3QgMiIsInNldE5vIjoiMTAiLCJ0ZXN0Tm8iOiIyIiwicGFydHMiOlt7Im5hbWUiOiJQYXJ0IDE6IExpc3RlbmluZyB0byBQcm9ibGVtIFNvbHZpbmciLCJoZWFkZXJUaXRsZSI6IlNldCAxMCBcdTIwMTMgUHJhY3RpY2UgVGVzdCAyIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCAxOiBMaXN0ZW5pbmcgdG8gUHJvYmxlbSBTb2x2aW5nIiwiaW50cm9UaXRsZSI6Ikxpc3RlbmluZyB0byBQcm9ibGVtIFNvbHZpbmciLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIGEgbWFuIGFuZCBhIHdvbWFuIGF0IGEgZ3JvY2VyeSBzdG9yZSBiYWtlcnkuIFRoZSB3b21hbiB3b3JrcyBhdCB0aGUgc3RvcmUuIFRoZSBtYW4gaXMgYSBjdXN0b21lci4gSXQgcGxheXMgaW4gdGhyZWUgc2VjdGlvbnMsIGFuZCBlYWNoIHNlY3Rpb24gcGxheXMgb25seSBvbmNlLiIsIkFmdGVyIGVhY2ggc2VjdGlvbiwgcXVlc3Rpb25zIHdpbGwgYXBwZWFyLiBDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGFuc3dlciBlYWNoIHF1ZXN0aW9uLiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGFuc3dlciBlYWNoIHF1ZXN0aW9uIGZyb20gdGhlIGRyb3AtZG93biBtZW51ICggXHUyNWJlICkuIiwidHJhbnNjcmlwdCI6IlBhcnQgMTogTGlzdGVuaW5nIHRvIFByb2JsZW0gU29sdmluZ1xuWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIGEgbWFuIGFuZCBhIHdvbWFuIGF0IGEgZ3JvY2VyeSBzdG9yZSBiYWtlcnkuIFRoZVxud29tYW4gd29ya3MgYXQgdGhlIHN0b3JlLiBUaGUgbWFuIGlzIGEgY3VzdG9tZXIuXG5TZWN0aW9uIDE6XG5NQU46IEhlbGxvLCBjb3VsZCB5b3UgcGxlYXNlIGhlbHAgbWU\/IEkgb3JkZXJlZCB0aGlzIGJpcnRoZGF5IGNha2UgYW5kIHBpY2tlZCBpdCB1cCB0aGlzXG5tb3JuaW5nLiBCdXQgd2hlbiBJIG9wZW5lZCBpdCBqdXN0IG5vdyB0byBwdXQgaXQgb24gdGhlIHRhYmxlLCBJIGRpc2NvdmVyZWQgdGhhdCBpdCBzYXlzLFxuXHUyMDFjSGFwcHkgMTB0aCBCaXJ0aGRheSwgRGF2aWRcdTIwMWQhIEl0XHUyMDE5cyBzdXBwb3NlZCB0byBzYXksIFx1MjAxY0hhcHB5IDEwdGggQmlydGhkYXksIE1hdHRoZXdcdTIwMWQhXG5XT01BTjogICAgICAgIE5vIHByb2JsZW0sIHdlIGNhbiBqdXN0IG9yZGVyIGFub3RoZXIgb25lLlxuTUFOOiBObywgdGhhdCB3b25cdTIwMTl0IGRvISBNeSBzb25cdTIwMTlzIHBhcnR5IHN0YXJ0cyBpbiBhbiBob3VyLiBJXHUyMDE5bSBhZnJhaWQgSSBuZWVkIGEgY2FrZSBub3cuXG5XT01BTjogT2theSwgc3RpbGwgbm90IGEgcHJvYmxlbS4gSSBjYW4gc2NyYXBlIHRoZSBmcm9zdGluZyBvZmYgdGhlIHRvcCBhbmQgcmUtXG5kZWNvcmF0ZSBpdC4gWW91XHUyMDE5bGwgbmV2ZXIgbm90aWNlIHRoZSBkaWZmZXJlbmNlLlxuTUFOOiBBcmUgeW91IHN1cmU\/IE9rYXkgLiAuIC5cbldPTUFOOiAgICAgICAgSSBjYW4gZG8gaXQgcmlnaHQgbm93LiBDYW4geW91IGNvbWUgYmFjayBpbiBmaWZ0ZWVuIG1pbnV0ZXM\/XG5NQU46IE9rYXksIHRoYW5rcywgSVx1MjAxOWxsIGp1c3QgZ28gcGljayB1cCBhIGZldyBleHRyYSB0aGluZ3MgZm9yIHRoZSBwYXJ0eS4gSVx1MjAxOWxsIGJlIGJhY2sgaW5cbnR3ZW50eS5cblNlY3Rpb24gMjpcbldPTUFOOiAgICAgICAgSGVsbG8sIGhvdyBkaWQgdGhlIGJpcnRoZGF5IHBhcnR5IGdvP1xuTUFOOiBJdCB3YXMgYSBkaXNhc3Rlci4gSSBvcmRlcmVkIGEgY2hlcnJ5IGNha2UuIFRoZSBjYWtlIHdhcyBjaG9jb2xhdGUuIE1hdHRoZXcgaXNcbmFsbGVyZ2ljIHRvIGNob2NvbGF0ZS5cbldPTUFOOiBPaCwgSVx1MjAxOW0gc28gc29ycnkuIFRoZXJlIG11c3QgaGF2ZSBiZWVuIGEgbWl4LXVwIG5vdCBvbmx5IHdpdGggdGhlXG5kZWNvcmF0aW9uLCBidXQgd2l0aCB0aGUgY2FrZSBpdHNlbGYuIElcdTIwMTlsbCBzZWUgdG8gaXQgdGhhdCB5b3UgZ2V0IGEgZnVsbCByZWZ1bmQuXG5NQU46IElcdTIwMTltIGFmcmFpZCB0aGF0IHdvblx1MjAxOXQgYmUgZ29vZCBlbm91Z2guIE1hdHRoZXcgc2F3IHRoZSBjYWtlIGFuZCBJIGhhZCB0byB0YWtlIGl0XG5hd2F5IGZyb20gaGltLiBIZSB3YXMgc28gdXBzZXQhXG5XT01BTjogICAgICAgIE9oIGRlYXIsIEkgcmVhbGx5IGFtIHNvcnJ5LiBMZXQgbWUgY29udGFjdCB0aGUgbWFuYWdlci5cbk1BTjogUGxlYXNlIGRvIHRoYXQuIE51dHMgYW5kIGJlZSBzdGluZ3MgYXJlblx1MjAxOXQgdGhlIG9ubHkgdGhpbmdzIHBlb3BsZSBhcmUgYWxsZXJnaWMgdG8hXG5TZWN0aW9uIDM6XG5XT01BTjogICAgICAgIEhlbGxvLCB5b3VyIGNvbnZlcnNhdGlvbiB3aXRoIG91ciBtYW5hZ2VyIHdhcyBzYXRpc2ZhY3Rvcnk\/XG5NQU46IFllcywgdGhhbmtzLiBIZSB0b2xkIG1lIHRoYXQgaGUgd291bGQgYmUgaW1wbGVtZW50aW5nIG5ldyBwcm9jZWR1cmVzIGluIHRoZVxuYmFrZXJ5IGRlcGFydG1lbnQgc28gdGhhdCBraW5kIG9mIG1pc3Rha2Ugd291bGQgbmV2ZXIgaGFwcGVuIGFnYWluLlxuV09NQU46IFllcywgd2UgaGF2ZSBhIGxpc3Qgb2YgaW5ncmVkaWVudHMgdGhhdCBhcmUgcG9zc2libGUgcHJvYmxlbXMsIGFuZCB3ZSBhcmVcbmluc3RydWN0ZWQgdG8gYXNrIHRoZSBjdXN0b21lciBub3Qgb25jZSwgYnV0IHR3aWNlLCBhYm91dCBhbGxlcmdpZXMuIFdlIGFyZSBhbHNvIHN1cHBvc2VkXG50byB0ZWxsIHRoZSBjdXN0b21lciB3aGV0aGVyIGFueSBvZiB0aGUgaW5ncmVkaWVudHMgb24gdGhlIGxpc3QgYXJlIGluIHRoZSBwcm9kdWN0cyBvcmRlcmVkLlxuTUFOOiBXZWxsLCB0aGF0XHUyMDE5cyBnb29kIG5ld3MuIEkgZG9uXHUyMDE5dCB3YW50IHdoYXQgaGFwcGVuZWQgdG8gTWF0dGhldyB0byBoYXBwZW4gdG9cbmFueW9uZSBlbHNlLlxuV09NQU46IE5vciBkbyBJLCBhbmQgSSBhcG9sb2dpemUgYWdhaW4uIFdlIGhhdmUgYmVlbiBjYXJlZnVsIGFib3V0IG51dHMsIGJ1dCBJXHUyMDE5dmVcbm5ldmVyIGV2ZW4gaGVhcmQgb2YgYW4gYWxsZXJneSB0byBjaG9jb2xhdGUuXG5NQU46IFdlbGwsIGV2ZXJ5IGRheSB0aGVyZSBzZWVtcyB0byBiZSBzb21ldGhpbmcgbmV3IHRoYXQga2lkcyBhcmUgYWxsZXJnaWMgdG8sIHNvIElcbnRoaW5rIGl0XHUyMDE5cyBiZXN0IHRvIHN0YXkgb24gdG9wIG9mIGl0LlxuV09NQU46IEkgYWdyZWUuIEkgaG9wZSB0aGUgbWFuYWdlciBhbHNvIGdhdmUgeW91IGEgZGlzY291bnQgb24gZnV0dXJlIG9yZGVycy4gSSBkb1xuaG9wZSB5b3Ugd2lsbCBvcmRlciB5b3VyIG5leHQgYmlydGhkYXkgY2FrZSBmcm9tIHVzIVxuTUFOOiBXZWxsLCBhY3R1YWxseSwgdGhhdFx1MjAxOXMgd2h5IElcdTIwMTltIGhlcmUgLiAuIC4iLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJDb252ZXJzYXRpb24gXHUyMDE0IFNlY3Rpb24gMSIsImR1cmF0aW9uIjo0NCwibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZm9sbG93aW5nIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwibWVkaWFUeXBlIjoiYXVkaW8iLCJ0aW1lTWludXRlcyI6MiwicXVlc3Rpb25zIjpbeyJuIjoxLCJzdGVtIjoiV2hhdCB3YXMgdGhlIHByb2JsZW0gd2l0aCB0aGUgY2FrZT8iLCJvcHRpb25zIjpbIkl0IHdhcyB0aGUgd3JvbmcgZmxhdm91ci4iLCJJdCBoYWQgdGhlIHdyb25nIG5hbWUgb24gaXQuIiwiSXQgd2FzIHRoZSB3cm9uZyBzaXplLiIsIkl0IGhhZCB0aGUgd3JvbmcgZGF0ZSBvbiBpdC4iXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX0seyJuIjoyLCJzdGVtIjoiSG93IGxvbmcgd2lsbCBpdCB0YWtlIHRvIGZpeCB0aGUgY2FrZT8iLCJvcHRpb25zIjpbIjUgbWludXRlcyIsIjIwIG1pbnV0ZXMiLCIxNSBtaW51dGVzIiwiMzAgbWludXRlcyJdLCJrZXkiOjIsInJlY29uIjp0cnVlfV19LHsibGFiZWwiOiJDb252ZXJzYXRpb24gXHUyMDE0IFNlY3Rpb24gMiIsImR1cmF0aW9uIjozOSwibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgbmV4dCBwYXJ0IG9mIHRoZSBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwidGltZU1pbnV0ZXMiOjIsInF1ZXN0aW9ucyI6W3sibiI6Mywic3RlbSI6IldoYXQga2luZCBvZiBjYWtlIGRpZCB0aGUgbWFuIHdhbnQ\/Iiwib3B0aW9ucyI6WyJDaG9jb2xhdGUgY2FrZSIsIkNoZXJyeSBjYWtlIiwiVmFuaWxsYSBjYWtlIiwiQ2Fycm90IGNha2UiXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX0seyJuIjo0LCJzdGVtIjoiV2hhdCBkb2VzIHRoZSB3b21hbiBkbz8iLCJvcHRpb25zIjpbIm9mZmVyIGEgZnVsbCByZWZ1bmQiLCJub3RpZnkgaGVyIHN1cGVydmlzb3IiLCJyZS1kZWNvcmF0ZSB0aGUgY2FrZSIsImFwb2xvZ2l6ZSB0byB0aGUgYm95Il0sImtleSI6MSwicmVjb24iOnRydWV9LHsibiI6NSwic3RlbSI6IkhvdyBpcyB0aGUgbWFuIGZlZWxpbmc\/Iiwib3B0aW9ucyI6WyJjb25mdXNlZCIsImdyYXRlZnVsIiwiYW5ncnkiLCJyZWxpZXZlZCJdLCJrZXkiOjIsInJlY29uIjp0cnVlfV19LHsibGFiZWwiOiJDb252ZXJzYXRpb24gXHUyMDE0IFNlY3Rpb24gMyIsImR1cmF0aW9uIjo1OSwibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZmluYWwgcGFydCBvZiB0aGUgY29udmVyc2F0aW9uLiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4iLCJtZWRpYVR5cGUiOiJhdWRpbyIsInRpbWVNaW51dGVzIjoyLCJxdWVzdGlvbnMiOlt7Im4iOjYsInN0ZW0iOiJXaGF0IGFjdGlvbiBkaWQgdGhlIG1hbmFnZXIgdGFrZT8iLCJvcHRpb25zIjpbIkhlIGZpcmVkIG9uZSBvZiB0aGUgYmFrZXJ5IHN0YWZmLiIsIkhlIGludHJvZHVjZWQgbmV3IHJ1bGVzIGZvciBiYWtlcnkgc3RhZmYuIiwiSGUgY2xvc2VkIHRoZSBiYWtlcnkgZGVwYXJ0bWVudC4iLCJIZSByZWZ1bmRlZCBhbGwgcmVjZW50IG9yZGVycy4iXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX0seyJuIjo3LCJzdGVtIjoiV2hhdCBpcyBsaWtlbHkgdHJ1ZSBvZiB0aGUgd29tYW4\/Iiwib3B0aW9ucyI6WyJTaGUgd2FudHMgdG8gcXVpdCBoZXIgam9iLiIsIlNoZSBkaXNsaWtlcyB0aGUgbWFuYWdlci4iLCJTaGUgY2FyZXMgYWJvdXQgaGVyIGN1c3RvbWVycy4iLCJTaGUgaXMgbmV3IHRvIHRoZSBiYWtlcnkuIl0sImtleSI6MiwicmVjb24iOnRydWV9LHsibiI6OCwic3RlbSI6IldoYXQgd2lsbCBsaWtlbHkgaGFwcGVuIG5leHQ\/Iiwib3B0aW9ucyI6WyJUaGUgbWFuIHdpbGwgZGVtYW5kIG1vcmUgbW9uZXkuIiwiVGhlIG1hbiB3aWxsIG9yZGVyIGFub3RoZXIgY2FrZS4iLCJUaGUgbWFuIHdpbGwgY29tcGxhaW4gYWdhaW4uIiwiVGhlIG1hbiB3aWxsIGxlYXZlIHRoZSBzdG9yZS4iXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX1dfV19LHsibmFtZSI6IlBhcnQgMjogTGlzdGVuaW5nIHRvIGEgRGFpbHkgTGlmZSBDb252ZXJzYXRpb24iLCJoZWFkZXJUaXRsZSI6IlNldCAxMCBcdTIwMTMgUHJhY3RpY2UgVGVzdCAyIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCAyOiBMaXN0ZW5pbmcgdG8gYSBEYWlseSBMaWZlIENvbnZlcnNhdGlvbiIsImludHJvVGl0bGUiOiJMaXN0ZW5pbmcgdG8gYSBEYWlseSBMaWZlIENvbnZlcnNhdGlvbiIsImludHJvQnVsbGV0cyI6WyJZb3UgYXJlIGFib3V0IHRvIGhlYXIgYSBjb252ZXJzYXRpb24gYmV0d2VlbiBhIG1hbiBhbmQgYSB3b21hbi4gSXQgcGxheXMgb25seSBvbmNlLiIsIkFmdGVyIHRoZSBjb252ZXJzYXRpb24sIHF1ZXN0aW9ucyB3aWxsIGFwcGVhci4gQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbi4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbiBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoIFx1MjViZSApLiIsInRyYW5zY3JpcHQiOiJQYXJ0IDI6IExpc3RlbmluZyB0byBhIERhaWx5IExpZmUgQ29udmVyc2F0aW9uXG5Zb3UgYXJlIGFib3V0IHRvIGhlYXIgYSBjb252ZXJzYXRpb24gYmV0d2VlbiBhIG1hbiBhbmQgYSB3b21hbi5cbk1BTjogR29vZCBtb3JuaW5nLCBSZWJlY2NhLlxuV09NQU46ICAgICAgICBNb3JuaW5nIEphc29uLiBEbyB5b3Ugd2FudCB0byBncmFiIGEgY29mZmVlIGRvd24gdGhlIGhhbGw\/XG5NQU46IFN1cmUuIExldFx1MjAxOXMgZ28uIEhvdyB3YXMgeW91ciB3ZWVrZW5kP1xuV09NQU46IEl0IHdhc25cdTIwMTl0IGJhZC4gVGhlcmUgd2FzIGEgaHVnZSBzYWxlIGF0IE1ldHJvdG93biwgc28gSSBkaWQgc29tZSBzaG9wcGluZy5cbkhvdyBhYm91dCB5b3U\/IEhvdyB3YXMgeW91ciB3ZWVrZW5kP1xuTUFOOiBJdCB3YXMgYXdlc29tZSEgWW91XHUyMDE5bGwgbmV2ZXIgZ3Vlc3Mgd2hhdCBoYXBwZW5lZC5cbldPTUFOOiAgICAgICAgWW91IGRpZG5cdTIwMTl0IGNhdGNoIGFub3RoZXIgcHJpemUgc2FsbW9uLCBkaWQgeW91PyBUaGF0IHdhcyBhbiBhbWF6aW5nIGZpcnN0XG5hdHRlbXB0IVxuTUFOOiBObywgSSBkaWRuXHUyMDE5dCBnbyBvdXQgb24gdGhlIHdhdGVyLiBNeSBidWRkeSBhbmQgSSB3ZW50IGZvciBhIGhpa2Ugb3V0IGF0IEdvbGRlblxuRWFycyBQYXJrLCBhbmQgd2UgY2FtZSBmYWNlIHRvIGZhY2Ugd2l0aCBhIGh1Z2UgYmxhY2sgYmVhciEgSSBtZWFuLCBoZSB3YXMgbWFzc2l2ZS5cbkFjdHVhbGx5LCBwYXJkb24gbWUsIEkgc2hvdWxkIHNheSBcdTIwMThzaGUsXHUyMDE5IGFzIHRoZXJlIHdlcmUgdHdvIGN1YnMgd2l0aCBoZXIuXG5XT01BTjogICAgICAgIE9oIG15IGdvb2RuZXNzISBXaGF0IGRpZCB5b3UgZG8\/IFlvdSBkaWRuXHUyMDE5dCBydW4sIEkgaG9wZSFcbk1BTjogTm8uIEl0IGp1c3Qgc28gaGFwcGVuZWQgdGhhdCBJIGhhZCBhIGJhZyBvZiBwZWFudXQgYnV0dGVyIHNhbmR3aWNoZXMgaW4gbXkgaGFuZC5cblNvLCBJIHRocmV3IHRoZSBiYWcgb2Ygc2FuZHdpY2hlcyBhcyBmYXIgYXMgSSBjb3VsZCwgcGFzdCB0aGUgYmVhcnMuIEkgZ3Vlc3MgdGhleSBzbWVsbGVkXG50aGUgcGVhbnV0IGJ1dHRlciBhbmQgd2VudCB0byBpbnZlc3RpZ2F0ZS4gV2Ugd2VyZSBzbyBsdWNreS4gVGhvc2Ugc2FuZHdpY2hlcyBtdXN0XG5oYXZlIHNtZWxsZWQgYmV0dGVyIHRoYW4gd2UgZGlkLCBiZWNhdXNlIHRoZSBiZWFycyByaXBwZWQgb3BlbiB0aGUgYmFnIGFuZCBzdGFydGVkIGVhdGluZ1xudGhlbS5cbldPTUFOOiAgICAgICAgQW5kIHlvdSBzdHVjayBhcm91bmQgdG8gd2F0Y2ggdGhlbT9cbk1BTjogTm90IGEgY2hhbmNlISBXZSB0b29rIG9mZiBhbmQgaGVhZGVkIGZvciB0aGUgY2FyLiBJXHUyMDE5dmUgbmV2ZXIgbW92ZWQgc28gZmFzdCBpbiBteVxubGlmZSEgTHVja2lseSwgd2UgaGFkIGhpa2VkIHVwaGlsbCwgc28gdGhlIHNwcmludCBiYWNrIGRvd24gdG8gdGhlIGNhciB3YXNuXHUyMDE5dCB0b28gYmFkLiBXZVxuanVtcGVkIGluLCBsb2NrZWQgdGhlIGRvb3JzIGFuZCB0b3JlIG91dCBvZiB0aGVyZSBzbyBmYXN0LiBOZXh0IHRpbWUgSSBnbyBoaWtpbmcsIElcdTIwMTltXG5icmluZ2luZyBvbmUgb2YgdGhvc2UgY2FucyBvZiBhaXIgdGhhdCB3b3JrcyBhcyBhIGhvcm4uIEkgaGVhcmQgdGhhdCBub2lzZSBpcyB0aGUgYmVzdCB3YXkgdG9cbmdldCByaWQgb2YgYSBiZWFyLlxuV09NQU46ICAgICAgICBZb3UgYXJlIG9uZSBsdWNreSBndXkuIEhvdyBjb21lIHRoYXQga2luZCBvZiB0aGluZyBuZXZlciBoYXBwZW5zIHRvIG1lP1xuTUFOOiBXZWxsLCB5b3UgZG9uXHUyMDE5dCBzZWUgbWFueSBiZWFycyBhdCB0aGUgbWFsbCFcbldPTUFOOiBWZXJ5IGZ1bm55LiBJXHUyMDE5bSBnb2luZyBjYW1waW5nIGF0IEhhcnJpc29uIG5leHQgd2Vla2VuZC4gTWF5YmUgSVx1MjAxOWxsIGhhdmVcbmEgd2lsZGxpZmUgZW5jb3VudGVyIHRvIHRlbGwgeW91IGFib3V0IG5leHQgTW9uZGF5LlxuTUFOOiBKdXN0IGJlIGNhcmVmdWwhIiwic2VjdGlvbnMiOlt7ImxhYmVsIjoiQ29udmVyc2F0aW9uIiwiZHVyYXRpb24iOjExNywibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZm9sbG93aW5nIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIEl0IGlzIGFib3V0IDIgbWludXRlcyBsb25nLiIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwidGltZU1pbnV0ZXMiOjMsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IldoZXJlIGFyZSBKYXNvbiBhbmQgUmViZWNjYT8iLCJvcHRpb25zIjpbImF0IHRoZSBtYWxsIiwiYXQgd29yayIsImF0IGEgcGFyayIsImF0IGEgY29mZmVlIHNob3AiXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX0seyJuIjoyLCJzdGVtIjoiV2hhdCBkaWQgSmFzb24gZG8gbGFzdCB3ZWVrZW5kPyIsIm9wdGlvbnMiOlsiZmlzaGluZyIsInNob3BwaW5nIiwiY2FtcGluZyIsImhpa2luZyJdLCJrZXkiOjMsInJlY29uIjp0cnVlfSx7Im4iOjMsInN0ZW0iOiJIb3cgZGlkIEphc29uIGdldCBhd2F5IGZyb20gdGhlIGJlYXJzPyIsIm9wdGlvbnMiOlsiSGUgbWFkZSBsb3VkIG5vaXNlcy4iLCJIZSBkaXN0cmFjdGVkIHRoZW0gd2l0aCBmb29kLiIsIkhlIGNsaW1iZWQgYSB0cmVlLiIsIkhlIHN0YXllZCBwZXJmZWN0bHkgc3RpbGwuIl0sImtleSI6MSwicmVjb24iOnRydWV9LHsibiI6NCwic3RlbSI6IkhvdyB3b3VsZCBSZWJlY2NhIGRlc2NyaWJlIEphc29uJ3MgZXhwZXJpZW5jZT8iLCJvcHRpb25zIjpbImJvcmluZyIsImZyaWdodGVuaW5nIiwiZXhjaXRpbmciLCJkaXNhcHBvaW50aW5nIl0sImtleSI6MiwicmVjb24iOnRydWV9LHsibiI6NSwic3RlbSI6IldoYXQgd2lsbCBSZWJlY2NhIGRvIG5leHQgd2Vla2VuZD8iLCJvcHRpb25zIjpbImdvIHNob3BwaW5nIGFnYWluIiwiY2FtcCBpbiB0aGUgd29vZHMiLCJnbyBmaXNoaW5nIiwic3RheSBob21lIl0sImtleSI6MSwicmVjb24iOnRydWV9XX1dfSx7Im5hbWUiOiJQYXJ0IDM6IExpc3RlbmluZyBmb3IgSW5mb3JtYXRpb24iLCJoZWFkZXJUaXRsZSI6IlNldCAxMCBcdTIwMTMgUHJhY3RpY2UgVGVzdCAyIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCAzOiBMaXN0ZW5pbmcgZm9yIEluZm9ybWF0aW9uIiwiaW50cm9UaXRsZSI6Ikxpc3RlbmluZyBmb3IgSW5mb3JtYXRpb24iLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIHR3byBwZW9wbGUgYWJvdXQgdGVhY2hpbmcuIEl0IHBsYXlzIG9ubHkgb25jZS4iLCJBZnRlciB0aGUgY29udmVyc2F0aW9uLCBxdWVzdGlvbnMgd2lsbCBhcHBlYXIuIENob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24uIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24gZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCBcdTI1YmUgKS4iLCJ0cmFuc2NyaXB0IjoiUGFydCAzOiBMaXN0ZW5pbmcgZm9yIEluZm9ybWF0aW9uXG5Zb3Ugd2lsbCBoZWFyIGEgY29udmVyc2F0aW9uIGJldHdlZW4gdHdvIHBlb3BsZSBhYm91dCB0ZWFjaGluZy5cbk1BTjogSGVsbG8gRWxsZW4sIGNvbWUgb24gaW4uIFdoYXQgZGlkIHlvdSB3YW50IHRvIHNlZSBtZSBhYm91dD9cbldPTUFOOiBUaGFuayB5b3UsIEJvYiwgYW5kIHRoYW5rcyBmb3IgbWVldGluZyB3aXRoIG1lLiBJXHUyMDE5bSBnb2luZyB0byBiZSB3b3JraW5nXG5hdCBhIGNoaWxkcmVuXHUyMDE5cyBjYW1wIHRoaXMgc3VtbWVyLCBhbmQgcGFydCBvZiBteSBqb2Igd2lsbCBpbnZvbHZlIHRlYWNoaW5nIHRoZW0gdGhpbmdzXG5saWtlIGdhbWVzLCBzb25ncywgZGFuY2VzIC4gLiAuIHRoYXQgc29ydCBvZiB0aGluZy4gSSB3YXMgaG9waW5nIHlvdSBjb3VsZCBnaXZlIG1lIHNvbWVcbnRpcHMuXG5NQU46IFRoYXQgc291bmRzIGZ1biEgV2VsbCwgbGV0IG1lIHNlZSAuIC4gLiBGaXJzdCBhbmQgZm9yZW1vc3QsIG1ha2UgaXQgZnVuLiBDaGlsZHJlblxubGlrZSB0byBwbGF5LiBXZSBhbGwgZG8uIExlYXJuaW5nIHNvbWV0aGluZyByZXF1aXJlcyBhIGxvdCBvZiBwcmFjdGljZSwgYW5kIHRoZSBtb3JlIGZ1biBpdFxuaXMsIHRoZSBtb3JlIGxpa2VseSB0aGV5XHUyMDE5bGwgc3BlbmQgdGhlIHRpbWUgdGhleSBuZWVkIHByYWN0aWNpbmcuXG5XT01BTjogWWVzLCB0aGVyZVx1MjAxOXMgYSBjZXJ0YWluIG1ldGhvZCAuIC4gLiBJIGNhblx1MjAxOXQgcmVtZW1iZXIgdGhlIG5hbWUgcmlnaHQgbm93IC4gLiAuXG5hIGNlcnRhaW4gbWV0aG9kIG9mIHRlYWNoaW5nIG11c2ljIHRoYXQgdXNlcyB0aGF0IGJhc2ljIHByaW5jaXBsZS4gQW5kIGl0XHUyMDE5cyB2ZXJ5IHN1Y2Nlc3NmdWwuXG5Nb3JlIHN1Y2Nlc3NmdWwgdGhhbiBtYW55IHRyYWRpdGlvbmFsIG1ldGhvZHMuIE1heWJlIHRoYXRcdTIwMTlzIHdoeS5cbk1BTjogQXQgdGhlIHNhbWUgdGltZSwgeW91IG11c3QgcmVjb2duaXplIHRoYXQgcHJhY3RpY2UgaW52b2x2ZXMgcmVwZXRpdGlvbi4gTWFueVxuY2hpbGRyZW4gd2lsbCB3YW50IHRvIGRvIHNvbWV0aGluZyBvbmNlIG9yIHR3aWNlIGFuZCBiZSBkb25lIHdpdGggaXQsIGJ1dCB0aGF0IHdvblx1MjAxOXQgYmVcbmVub3VnaC4gTW9yZSBpbXBvcnRhbnRseSwgZWFjaCByZXBldGl0aW9uIG11c3QgYmUgZG9uZSBjb3JyZWN0bHkuIE90aGVyd2lzZSwgdGhleVx1MjAxOWxsIGJlXG5wcmFjdGljaW5nIGhvdyB0byBkbyBpdCB3cm9uZy5cbldPTUFOOiBIb3cgY2FuIEkgbWFrZSBzdXJlIHRoZXkgYXJlIHByYWN0aWNpbmcgY29ycmVjdGx5PyBJIGNhblx1MjAxOXQgZ28gaG9tZSB3aXRoXG50aGVtOyBJIGNhblx1MjAxOXQgd2F0Y2ggdGhlbSBwcmFjdGljZSBhbGwgdGhlIHRpbWUuXG5NQU46IE5vLCBidXQgaWYgcG9zc2libGUsIGludm9sdmUgdGhlaXIgcGFyZW50cy4gVGhleSBjYW4gd2F0Y2ggdGhlbSBhdCBob21lLiBUaGF0XHUyMDE5c1xuYW5vdGhlciB0aXAgSSBoaWdobHkgcmVjb21tZW5kLlxuV09NQU46IE9rYXksIHRoYW5rcywgYW55dGhpbmcgZWxzZT8gSSB3YXMgd29uZGVyaW5nIGFib3V0IGF0dGVudGlvbiBzcGFuXG50ZWNobmlxdWVzLiBDaGlsZHJlbiBoYXZlIHZlcnkgc2hvcnQgYXR0ZW50aW9uIHNwYW5zLlxuTUFOOiBUaGV5IGRvIGluZGVlZC4gU28sIGtlZXAgdGhlIGxlc3NvbnMgYW5kIHByYWN0aWNlIHRpbWVzIHNob3J0LiBUd28gbWludXRlcyBvZlxuYXR0ZW50aW9uIGlzIGJldHRlciB0aGFuIDEwIG1pbnV0ZXMgb2YgZGlzdHJhY3Rpb24uIEZpdmUgMi1taW51dGUgc2Vzc2lvbnMgaXMgYmV0dGVyIHRoYW4gb25lXG4xMC1taW51dGUgc2Vzc2lvbi5cbldPTUFOOiBHb3QgaXQuIElcdTIwMTlsbCByZW1lbWJlciB0aGF0LiBJXHUyMDE5bGwgbWFrZSBhIGJpZyBzaWduIGluIG15IGhlYWQhIFdoYXQgYWJvdXRcbndoZW4gdGhleSBkb25cdTIwMTl0IGdldCBpdD8gU29tZSBjaGlsZHJlbiBhcmUgbW9yZSBjb21wZXRlbnQgdGhhbiBvdGhlcnMuXG5NQU46IEJlIHBhdGllbnQuIERvIG5vdCBwdW5pc2g7IGRvIG5vdCBldmVuIHJlcHJpbWFuZC4gVGhhdFx1MjAxOXMgdGhlIHF1aWNrZXN0IHdheSB0byBsb3NlXG50aGVtLiBJZiB0aGV5IHdhbnQgdG8gbGVhcm4gd2hhdCB5b3VcdTIwMTlyZSB0ZWFjaGluZywgZXZlbnR1YWxseSB0aGV5XHUyMDE5bGwgY29tZSBhcm91bmQuXG5XT01BTjogQW5kIGlmIHRoZXkgZG9uXHUyMDE5dCB3YW50IHRvIGxlYXJuIHdoYXQgSVx1MjAxOW0gdGVhY2hpbmcsIGl0XHUyMDE5cyBwcm9iYWJseSBqdXN0IGFzXG53ZWxsLiBOb3QgZXZlcnlvbmUgaGFzIHRvIGxlYXJuIGV2ZXJ5dGhpbmchXG5NQU46IEV4YWN0bHkuIEhtbW0sIEkgY2FuXHUyMDE5dCB0aGluayBvZiBhbnl0aGluZyBlbHNlIGF0IHRoZSBtb21lbnQgLiAuIC5cbldPTUFOOiBBbGwgcmlnaHQgdGhlbiwgSVx1MjAxOWxsIGxldCB5b3UgZ2V0IG9uIHdpdGggeW91ciBkYXksIGFuZCBJIHdhbnQgdG8gdGhhbmsgeW91XG5hZ2FpbiBmb3IgeW91ciB0aXBzLiIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IkNvbnZlcnNhdGlvbiIsImR1cmF0aW9uIjoxNDYsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiBJdCBpcyBhYm91dCAyIG1pbnV0ZXMgbG9uZy4iLCJtZWRpYVR5cGUiOiJhdWRpbyIsInRpbWVNaW51dGVzIjozLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJXaGF0IGlzIHByb2JhYmx5IHRydWUgYWJvdXQgdGhlIG1hbj8iLCJvcHRpb25zIjpbIkhlIHdvcmtzIGF0IHRoZSBjaGlsZHJlbidzIGNhbXAuIiwiSGUgd2FzIGNvbnRhY3RlZCBpbiBhZHZhbmNlIGJ5IHRoZSB3b21hbi4iLCJIZSBpcyB0aGUgd29tYW4ncyBzdXBlcnZpc29yLiIsIkhlIHRlYWNoZXMgbXVzaWMgcHJvZmVzc2lvbmFsbHkuIl0sImtleSI6MSwicmVjb24iOnRydWV9LHsibiI6Miwic3RlbSI6IldoeSBkb2VzIHRoZSB3b21hbiBhcnJhbmdlIHRoZSBtZWV0aW5nPyIsIm9wdGlvbnMiOlsidG8gb2ZmZXIgYSBqb2IiLCJ0byBvYnRhaW4gYWR2aWNlIiwidG8gbWFrZSBhIGNvbXBsYWludCIsInRvIHJlcXVlc3QgdGltZSBvZmYiXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX0seyJuIjozLCJzdGVtIjoiV2hhdCBkb2VzIHRoZSB3b21hbiB0aGluayBhYm91dCBzb21lIHRyYWRpdGlvbmFsIHRlYWNoaW5nIG1ldGhvZHM\/Iiwib3B0aW9ucyI6WyJUaGV5IHRha2UgdG9vIG11Y2ggdGltZS4iLCJUaGV5IGFyZSB0b28gZXhwZW5zaXZlLiIsIlRoZXkgZG9uJ3QgbWFrZSBsZWFybmluZyBmdW4uIiwiVGhleSByZXF1aXJlIHRvbyBtdWNoIHByYWN0aWNlLiJdLCJrZXkiOjIsInJlY29uIjp0cnVlfSx7Im4iOjQsInN0ZW0iOiJXaGF0IGRvZXMgdGhlIG1hbiB0aGluayBhYm91dCByZXBldGl0aW9ucz8iLCJvcHRpb25zIjpbIlRoZXkgc2hvdWxkIGJlIGF2b2lkZWQuIiwiVGhleSBzaG91bGQgYmUgYWNjdXJhdGUuIiwiVGhleSBzaG91bGQgYmUgc2hvcnRlbmVkLiIsIlRoZXkgc2hvdWxkIGJlIG9wdGlvbmFsLiJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjUsInN0ZW0iOiJXaGF0IGRvZXMgdGhlIG1hbiBzYXkgYWJvdXQgYXR0ZW50aW9uIHNwYW4\/Iiwib3B0aW9ucyI6WyJleHRlbmQgdGhlIGxlc3NvbnMgZ3JhZHVhbGx5IiwiYWNjZXB0IGNoaWxkcmVuJ3MgbGltaXRhdGlvbnMiLCJpZ25vcmUgc2hvcnQgYXR0ZW50aW9uIHNwYW5zIiwicHVuaXNoIGRpc3RyYWN0ZWQgY2hpbGRyZW4iXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX0seyJuIjo2LCJzdGVtIjoiSG93IGRvZXMgdGhlIHdvbWFuIGZlZWwgYXQgdGhlIGVuZCBvZiB0aGUgY29udmVyc2F0aW9uPyIsIm9wdGlvbnMiOlsiY29uZnVzZWQiLCJwbGVhc2VkIiwiZnJ1c3RyYXRlZCIsIndvcnJpZWQiXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX1dfV19LHsibmFtZSI6IlBhcnQgNDogTGlzdGVuaW5nIHRvIGEgTmV3cyBJdGVtIiwiaGVhZGVyVGl0bGUiOiJTZXQgMTAgXHUyMDEzIFByYWN0aWNlIFRlc3QgMiBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgNDogTGlzdGVuaW5nIHRvIGEgTmV3cyBJdGVtIiwiaW50cm9UaXRsZSI6Ikxpc3RlbmluZyB0byBhIE5ld3MgSXRlbSIsImludHJvQnVsbGV0cyI6WyJZb3Ugd2lsbCBoZWFyIGEgbmV3cyBpdGVtIGFib3V0IGEgY29tbXVuaXR5IGRldmVsb3BtZW50IGlzc3VlLiBJdCBwbGF5cyBvbmx5IG9uY2UuIiwiQWZ0ZXIgdGhlIG5ld3MgaXRlbSwgY29tcGxldGUgZWFjaCBzdGF0ZW1lbnQgdXNpbmcgdGhlIGRyb3AtZG93biBtZW51LiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGNvbXBsZXRlIGVhY2ggc3RhdGVtZW50IGZyb20gdGhlIGRyb3AtZG93biBtZW51ICggXHUyNWJlICkuIiwidHJhbnNjcmlwdCI6IlBhcnQgNDogTGlzdGVuaW5nIHRvIGEgTmV3cyBJdGVtXG5Zb3Ugd2lsbCBoZWFyIGEgbmV3cyBpdGVtIGFib3V0IGEgY29tbXVuaXR5IGRldmVsb3BtZW50IGlzc3VlLlxuU2hhcm9uIFNtaXRoLCBIZWFkIExpYnJhcmlhbiBhdCBSaWNrbWFuIFB1YmxpYyBMaWJyYXJ5LCBoYXMgcmVwb3J0ZWQgdGhhdCB0aGUgbGlicmFyeVx1MjAxOXNcbmdyYW50IGZyb20gdGhlIGdvdmVybm1lbnQgd2lsbCBub3QgYmUgcmVuZXdlZCBmb3IgdGhlIGNvbWluZyB5ZWFyLiBDb25zZXF1ZW50bHksIHRoZVxubGlicmFyeSB3aWxsIHN0YXJ0IGNoYXJnaW5nIHBhdHJvbnMgZm9yIGNvbXB1dGVyIHRpbWUsIHRoZSBhbW91bnQgbm90IHlldCBkZWNpZGVkIHVwb24uXG5GdXJ0aGVybW9yZSwgc2hlIHJlcG9ydHMsIGFsdGhvdWdoIHBhdHJvbnMgbWF5IGNvbnRpbnVlIHRvIG1ha2Ugc3BlY2lhbCByZXF1ZXN0cyBmb3JcbmJvb2tzIG5vdCBhdmFpbGFibGUgYXQgdGhlIGxpYnJhcnksIHRoZXJlIHdpbGwgYmUgYSBmaXZlLWRvbGxhciBmZWUgZm9yIGJvb2tzIGF2YWlsYWJsZVxuZWxzZXdoZXJlIGluIHRoZSByZWdpb24uIFRoZSBmZWUgZm9yIGJvb2tzIG91dHNpZGUgdGhlIHJlZ2lvbiB3aWxsIGluY3JlYXNlIGZyb20gZml2ZVxuZG9sbGFycyB0byB0ZW4gZG9sbGFycy4gTGFzdGx5LCByZXNpZGVudHMgd2lsbCBoYXZlIHRvIHBheSBhIHNtYWxsIGFubnVhbCBtZW1iZXJzaGlwIGZlZS5cblVwIHRvIG5vdywgb25seSBub24tcmVzaWRlbnRzIGhhdmUgaGFkIHRvIHBheSBmb3IgbWVtYmVyc2hpcCBwcml2aWxlZ2VzLlxuU21pdGggc2FpZCB0aGF0IHRoZXkgcmVncmV0IGRvaW5nIHRoaXMsIGJ1dCB0aGV5XHUyMDE5cmUganVzdCB0cnlpbmcgdG8ga2VlcCB0aGUgbGlicmFyeSBvcGVuLlxuVG9kYXkgc2hlIGxlYXJuZWQgdGhhdCB0aGUgcHJvdmluY2UgaXMgcHJvdmlkaW5nIGdyYW50cyBmb3IgcmVjcmVhdGlvbiBpbnN0ZWFkIG9mIGxpYnJhcmllcy5cbldoaWxlIGNvbmNlZGluZyB0aGF0IHJlY3JlYXRpb24gaXMgaW1wb3J0YW50LCBTbWl0aCB3YXMgdXBzZXQgdGhhdCB0aGUgZ292ZXJubWVudCBpc1xuZnVuZGluZyBjb3N0bHkgZm9vdGJhbGwgbGVhZ3VlcyBpbnN0ZWFkIG9mIHRoZSBjaGVhcGVyIHNvY2NlciBnYW1lcy4gU2hlIGV4cGxhaW5lZCB0aGF0XG5ub3Qgb25seSBhcmUgdGhlIGVxdWlwbWVudCBleHBlbnNlcyBsZXNzIGZvciBzb2NjZXIsIGJ1dCBpdFx1MjAxOXMgYWxzbyBtb3JlIGluY2x1c2l2ZSBiZWNhdXNlXG50aGVyZSBhcmUgZ2lybHNcdTIwMTkgdGVhbXMgYW5kIGJveXNcdTIwMTkgdGVhbXMsIGFuZCBsZWFndWVzIGZvciBhbGwgYWdlcy4iLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJOZXdzIEl0ZW0iLCJkdXJhdGlvbiI6NjUsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBuZXdzIGl0ZW0uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwidGltZU1pbnV0ZXMiOjMsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IlByZXZpb3VzbHksIHRoZSBsaWJyYXJ5J3MgY29tcHV0ZXJzIiwib3B0aW9ucyI6WyJjb3N0IG5vdGhpbmcgZm9yIHRoZSBwdWJsaWMuIiwiY2hhcmdlZCBhIHNtYWxsIHVzZXIgZmVlLiIsInJlcXVpcmVkIGEgbWVtYmVyc2hpcCBjYXJkLiIsImhhZCB0byBiZSBib29rZWQgaW4gYWR2YW5jZS4iXSwia2V5IjowfSx7Im4iOjIsInN0ZW0iOiJTbWl0aCBjYWxsZWQgdGhlIHByZXNzIHRvIiwib3B0aW9ucyI6WyJtYWtlIGEgY29tcGxhaW50IGFib3V0IHNwb3J0cy4iLCJpbmZvcm0gdGhlIHB1YmxpYyBvZiBzb21lIGNoYW5nZXMuIiwiZW5jb3VyYWdlIGdyZWF0ZXIgdXNlIG9mIHB1YmxpYyBsaWJyYXJpZXMuIiwiYXNrIGZvciBib29rIGFuZCBjb21wdXRlciBkb25hdGlvbnMuIl0sImtleSI6MX0seyJuIjozLCJzdGVtIjoiQm9va3MgdW5hdmFpbGFibGUgYXQgUmlja21hbiBMaWJyYXJ5Iiwib3B0aW9ucyI6WyJjYW4gYmUgcmVhZCBvbmxpbmUuIiwid2lsbCBzb29uIGJlIHB1cmNoYXNlZC4iLCJ3ZXJlIG5vdCByZXR1cm5lZCBieSBvdGhlcnMuIiwibWF5IGJlIHJlcXVlc3RlZC4iXSwia2V5IjozfSx7Im4iOjQsInN0ZW0iOiJJbXBsZW1lbnRpbmcgZmVlcyB3aWxsIGVuYWJsZSIsIm9wdGlvbnMiOlsidGhlIGxpYnJhcnkgdG8gcmVtYWluIGluIGJ1c2luZXNzLiIsIm1vcmUgc3BlY2lhbCBzZXJ2aWNlIHJlcXVlc3RzLiIsInRoZSBsaWJyYXJ5IHRvIHBheSBvZmYgaXRzIGRlYnRzLiIsIlNtaXRoIHRvIHB1cmNoYXNlIG1vcmUgbGlicmFyeSBib29rcy4iXSwia2V5IjowfSx7Im4iOjUsInN0ZW0iOiJTbWl0aCB0aGlua3MgdGhlIGdvdmVybm1lbnQncyBkZWNpc2lvbiIsIm9wdGlvbnMiOlsiaXMgYSBnb29kIG9uZS4iLCJ3aWxsIGFmZmVjdCBtb3N0bHkgZ2lybHMuIiwiaXMgYSBwb29yIG9uZS4iLCJ3aWxsIG5vdCBtYWtlIGEgZGlmZmVyZW5jZS4iXSwia2V5IjoyfV19XX0seyJuYW1lIjoiUGFydCA1OiBMaXN0ZW5pbmcgdG8gYSBEaXNjdXNzaW9uIiwiaGVhZGVyVGl0bGUiOiJTZXQgMTAgXHUyMDEzIFByYWN0aWNlIFRlc3QgMiBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgNTogTGlzdGVuaW5nIHRvIGEgRGlzY3Vzc2lvbiIsImludHJvVGl0bGUiOiJMaXN0ZW5pbmcgdG8gYSBEaXNjdXNzaW9uIiwiaW50cm9CdWxsZXRzIjpbIllvdSB3aWxsIHdhdGNoIGEgZGlzY3Vzc2lvbiBhbW9uZyB0aHJlZSBlbXBsb3llZXMuIFRoZXJlIGFyZSB0d28gbWVuIGFuZCBvbmUgd29tYW4uIFRoZXkgYXJlIG1lZXRpbmcgdG8gZGlzY3VzcyBhIGNoYW5nZSBhdCB3b3JrLiBJdCBwbGF5cyBvbmx5IG9uY2UuIiwiQWZ0ZXIgdGhlIGRpc2N1c3Npb24sIHF1ZXN0aW9ucyB3aWxsIGFwcGVhci4gQ2hvb3NlIHRoZSBiZXN0IGFuc3dlciB0byBlYWNoIHF1ZXN0aW9uLiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGFuc3dlciBlYWNoIHF1ZXN0aW9uIGZyb20gdGhlIGRyb3AtZG93biBtZW51ICggXHUyNWJlICkuIiwidHJhbnNjcmlwdCI6IlBhcnQgNTogTGlzdGVuaW5nIHRvIGEgRGlzY3Vzc2lvblxuWW91IHdpbGwgd2F0Y2ggYSBkaXNjdXNzaW9uIGFtb25nIHRocmVlIGVtcGxveWVlcy4gVGhlcmUgYXJlIHR3byBtZW4gYW5kIG9uZSB3b21hbi5cblRoZXkgYXJlIG1lZXRpbmcgdG8gZGlzY3VzcyBhIGNoYW5nZSBhdCB3b3JrLlxuRWR3YXJkOiAgICAgICAgU28sIGFzIHlvdVx1MjAxOXZlIGxpa2VseSBoZWFyZCwgdGhlIGNvbXBhbnkncyBwdXJjaGFzZWQgYSBuZXcgc29mdHdhcmVcbnByb2dyYW0gdG8gbWFuYWdlIHRoZSBjbGllbnQgZGF0YWJhc2UuIE5vdyB0aGlzIG1lYW5zIHdlXHUyMDE5cmUgZ29pbmcgdG8gaGF2ZSB0byByZXRyYWluIGFsbFxudGhlIHNhbGVzIHJlcHJlc2VudGF0aXZlcyBvbiBob3cgdG8gdXNlIHRoZSBuZXcgc3lzdGVtLiBJJ3ZlIGNhbGxlZCB5b3UgaGVyZSB0byBkaXNjdXNzXG5zb21lIGVmZmVjdGl2ZSwgeWV0IGluZXhwZW5zaXZlLCB0cmFpbmluZyBvcHRpb25zLlxuVGVkOiBIbW1tIC4gLiAuIHdlbGwsIEkga25vdyB0aGF0IHRoZSBwcm9ncmFtIGNvbWVzIHdpdGggYSB1c2VyIGd1aWRlLiBPbmUgb3B0aW9uXG53b3VsZCBiZSB0byBoYXZlIHRoZSBlbXBsb3llZXMgcmVhZCB0aGUgZ3VpZGUgYW5kIHRyeSB0byBmaWd1cmUgaXQgb3V0IG9uIHRoZWlyIG93bi4gSXQnc1xuZGVmaW5pdGVseSBhIGNvc3QtZWZmZWN0aXZlIG9wdGlvbi5cbkNsYWlyZTogSSdtIHNvcnJ5IFRlZCwgYnV0IHRoYXQgc291bmRzIHNvIHRlZGlvdXMhIEkndmUgc2VlbiB0aGF0IHVzZXIgZ3VpZGUsIGFuZCBpdCBpcyBub3RcbnNob3J0LiBJdCdzIGNlcnRhaW5seSBhbiBpbmV4cGVuc2l2ZSBvcHRpb24sIGJ1dCBwcm9iYWJseSBub3QgYW4gZWZmZWN0aXZlIG9uZS4gSSBtZWFuLCB3aGF0XG5pZiBwZW9wbGUgaGF2ZSBxdWVzdGlvbnMgYWJvdXQgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBndWlkZT8gV2hhdCBpZiB0aGV5IGRpZG5cdTIwMTl0IGV2ZW5cbnJlYWQgaXQ\/XG5UZWQ6IFllYWggLiAuIC4gaXQgcHJvYmFibHkgd291bGRuJ3QgYmUgYW4gYXBwZWFsaW5nIHRhc2suIEkgd2FzIGp1c3QgdGhyb3dpbmcgaXQgb3V0XG50aGVyZS4gSG93IGFib3V0IGhvbGRpbmcgYSB0cmFpbmluZyB3b3Jrc2hvcD8gVGhhdCB3YXksIHBlb3BsZSBjb3VsZCBhdHRlbmQgaW4gcGVyc29uXG5hbmQgZ2V0IGhhbmRzLW9uIGV4cGVyaWVuY2UuXG5FZHdhcmQ6ICAgICAgIFllYWgsIGhhbmRzLW9uIHRyYWluaW5nIGlzIGRlZmluaXRlbHkgZWZmZWN0aXZlLiBJIHRoaW5rIHRoZSBkcmF3YmFjayB0aGVyZVxuY291bGQgYmUgZmluZGluZyBhIHRpbWUgZm9yIHRoZSB3b3Jrc2hvcCBhbW9uZ3N0IGV2ZXJ5Ym9keVx1MjAxOXMgYnVzeSB3b3JrIHNjaGVkdWxlcy4gQW5kXG53ZVx1MjAxOWQgaGF2ZSB0byBoaXJlIGEgdHJhaW5lci4gVGhhdCBjb3VsZCBnZXQgdHJpY2t5LlxuVGVkOiBBY3R1YWxseSwgSSBkb24ndCB0aGluayB3ZSdkIG5lZWQgdG8gaGlyZSBmcm9tIG91dHNpZGUuIEkga25vdyBQYXVsIGluIElUIGhhcyBhIGxvdFxub2YgZXhwZXJpZW5jZSB1c2luZyB0aGUgcHJvZ3JhbS4gV2UgY291bGQgYXNrIGhpbSB0byBkZWxpdmVyIGEgd29ya3Nob3Agb3IgdHdvLlxuQ2xhaXJlOiBUaGF0IHdvdWxkIGRlZmluaXRlbHkgc2F2ZSB1cyBmcm9tIGhhdmluZyB0byBoaXJlIHNvbWVvbmUuIEkgbGVhcm4gYmVzdCB3aXRoXG5pbnRlcmFjdGl2ZSB0cmFpbmluZyB3b3Jrc2hvcHMuIEkgbGlrZSB0aGF0IG9wdGlvbiB0aGUgYmVzdCBzbyBmYXIuXG5FZHdhcmQ6ICAgICBBbm90aGVyIHRoaW5nIElcdTIwMTl2ZSBiZWVuIGNvbnNpZGVyaW5nIGlzIGFuIG9ubGluZSB0cmFpbmluZyBtb2R1bGUuIE5vdywgdGhhdFxud2F5IHdlIGNvdWxkIGVuc3VyZSB0aGF0IGV2ZXJ5b25lIGhhcyBjb21wbGV0ZWQgdGhlIHRyYWluaW5nLCBhbmQgdGhleSBjb3VsZCBkbyBpdFxud2hlbmV2ZXIgdGhleSBoYXZlIHRpbWUuXG5DbGFpcmU6IFRoYXQgc291bmRzIGNvbnZlbmllbnQsIGJ1dCBraW5kIG9mIGNvbXBsaWNhdGVkLiBJIG1lYW4sIHdlJ2QgaGF2ZSB0byBoaXJlXG5zb21lb25lIHdpdGggY29tcHV0ZXIgc2tpbGxzIHRvIGNyZWF0ZSB0aGUgbW9kdWxlOyBpdCBtaWdodCB0YWtlIGEgbG90IG9mIHRpbWUuIEJ1dCBpdFxuY291bGQgYmUgZWFzaWVyIHRoYW4gc2NoZWR1bGluZyBhIGJ1bmNoIG9mIHdvcmtzaG9wIHRyYWluaW5nIHNlc3Npb25zLlxuVGVkOiBXZWxsLCB3ZSd2ZSBnb3QgdGhyZWUgb3B0aW9ucyAuIC4gLiBvciBhY3R1YWxseSwgdHdvLiBJIHRoaW5rIHdlIGNhbiBydWxlIG91dCB0aGUgZmlyc3Rcbm9uZS4gV2h5IGRvbid0IHdlIHNlbmQgb3V0IGEgcXVpY2sgc3VydmV5IHRvIHRoZSBlbXBsb3llZXMgYW5kIGdldCB0aGVpciBmZWVkYmFjaz9cbkVkd2FyZDogICAgICAgU291bmRzIGdyZWF0ISBUZWQsIGRvIHlvdSBtaW5kIG9yZ2FuaXppbmcgdGhhdD8iLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJEaXNjdXNzaW9uICh2aWRlbykiLCJkdXJhdGlvbiI6MTM0LCJtZWRpYUluc3RydWN0aW9uIjoiV2F0Y2ggdGhlIGRpc2N1c3Npb24uIFlvdSB3aWxsIHdhdGNoIGl0IG9ubHkgb25jZS4gSXQgaXMgYWJvdXQgMS41IHRvIDIgbWludXRlcyBsb25nLiIsIm1lZGlhVHlwZSI6InZpZGVvIiwidGltZU1pbnV0ZXMiOjMsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IldoYXQgaXMgdGhlIHB1cnBvc2Ugb2YgdGhlIG1lZXRpbmc\/Iiwib3B0aW9ucyI6WyJ0byBicmFpbnN0b3JtIGlkZWFzIiwidG8gZXZhbHVhdGUgYSBwcm9ncmFtIiwidG8gZGlzY3VzcyBhIG5ldyBwb2xpY3kiLCJ0byBsZWFybiBhYm91dCBzb2Z0d2FyZSJdLCJrZXkiOjB9LHsibiI6Miwic3RlbSI6IldoYXQgdG9waWMgYXJlIHRoZSBwZW9wbGUgZGlzY3Vzc2luZz8iLCJvcHRpb25zIjpbImxhY2sgb2YgZW1wbG95ZWUgdHJhaW5pbmciLCJpc3N1ZXMgd2l0aCB0aGUgbmV3IHNvZnR3YXJlIiwidmlhYmxlIHRyYWluaW5nIG1ldGhvZHMiLCJwb3NzaWJseSBidXlpbmcgbmV3IHNvZnR3YXJlIl0sImtleSI6Mn0seyJuIjozLCJzdGVtIjoiV2hhdCBpcyBDbGFpcmUncyBjb25jZXJuIGFib3V0IHJlbHlpbmcgb24gdGhlIHVzZXIgbWFudWFsPyIsIm9wdGlvbnMiOlsiSXQgbWF5IGp1c3QgYmUgdGhyb3duIG91dC4iLCJJdCBpcyBib3JpbmcgdG8gcmVhZCB0aHJvdWdoLiIsIkl0IG1heSBub3QgYmUgZGV0YWlsZWQgZW5vdWdoLiIsIkl0IGlzIG9ubHkgYXZhaWxhYmxlIG9ubGluZS4iXSwia2V5IjoxfSx7Im4iOjQsInN0ZW0iOiJIb3cgZG9lcyBUZWQgZmVlbCBhYm91dCBoaXMgZmlyc3Qgc3VnZ2VzdGlvbj8iLCJvcHRpb25zIjpbIkl0IGlzIG5vdCBoaXMgYmVzdCBpZGVhLiIsIkl0IHJlcXVpcmVzIHRvbyBtdWNoIHdvcmsuIiwiSXQgd2FzIG1lYW50IGFzIGEgam9rZS4iLCJJdCBtYXkgbm90IGJlIHNpbXBsZS4iXSwia2V5IjowfSx7Im4iOjUsInN0ZW0iOiJXaGF0IGlzIEVkd2FyZCdzIG1haW4gY29uY2VybiBhYm91dCB0cmFpbmluZyB3b3Jrc2hvcHM\/Iiwib3B0aW9ucyI6WyJUaGUgY29tcGFueSB0cmFpbmVycyBhcmUgdG9vIGJ1c3kgdG8gZ2l2ZSB3b3Jrc2hvcHMuIiwiVGhlaXIgb2ZmaWNlIGRvZXMgbm90IGhhdmUgZW5vdWdoIHNwYWNlIHRvIGhvbGQgdGhlbS4iLCJUaGV5IG5lZWQgc29tZW9uZSBxdWFsaWZpZWQgdG8gbGVhZCB0aGVtLiIsIlN0YWZmIG1heSBub3Qgd2FudCB0byBhdHRlbmQgdGhlbS4iXSwia2V5IjoyfSx7Im4iOjYsInN0ZW0iOiJXaGF0IGlzIHRoZSBkaXNhZHZhbnRhZ2UgbWVudGlvbmVkIGFib3V0IGFuIG9ubGluZSB0cmFpbmluZyBtb2R1bGU\/Iiwib3B0aW9ucyI6WyJTdGFmZiBtYXkgbmVnbGVjdCB0byBjb21wbGV0ZSBpdC4iLCJJdCByZXF1aXJlcyByZXNvdXJjZXMgdG8gZGV2ZWxvcC4iLCJJdCBjb3VsZCBiZSB2ZXJ5IGV4cGVuc2l2ZS4iLCJFbXBsb3llZXMgd291bGQgcmF0aGVyIGludGVyYWN0LiJdLCJrZXkiOjF9LHsibiI6Nywic3RlbSI6IldoYXQgZG8gdGhlIHRocmVlIHBlb3BsZSBkZWNpZGUgdG8gZG8gYXQgdGhlIGVuZD8iLCJvcHRpb25zIjpbImZpbmQgc3VydmV5cyBhYm91dCB0cmFpbmluZyIsImdldCBhc3Npc3RhbmNlIGZyb20gSVQiLCJyZWNvbnNpZGVyIGFsbCBvcHRpb25zIiwiZ2F0aGVyIGlucHV0IGZyb20gc3RhZmYiXSwia2V5IjozfSx7Im4iOjgsInN0ZW0iOiJXaGF0IGZpZWxkIGRvIHRoZSBlbXBsb3llZXMgbGlrZWx5IHdvcmsgaW4\/Iiwib3B0aW9ucyI6WyJidXNpbmVzcyBzZXJ2aWNlcyIsInNjaWVudGlmaWMgcmVzZWFyY2giLCJoaWdoZXIgZWR1Y2F0aW9uIiwicHVibGljIGhlYWx0aCBjYXJlIl0sImtleSI6MH1dfV19LHsibmFtZSI6IlBhcnQgNjogTGlzdGVuaW5nIGZvciBWaWV3cG9pbnRzIiwiaGVhZGVyVGl0bGUiOiJTZXQgMTAgXHUyMDEzIFByYWN0aWNlIFRlc3QgMiBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgNjogTGlzdGVuaW5nIGZvciBWaWV3cG9pbnRzIiwiaW50cm9UaXRsZSI6Ikxpc3RlbmluZyBmb3IgVmlld3BvaW50cyIsImludHJvQnVsbGV0cyI6WyJZb3Ugd2lsbCBoZWFyIGEgcHJlc2VudGF0aW9uIGFib3V0IHNvY2lhbCByZXNwb25zaWJpbGl0eS4gSXQgcGxheXMgb25seSBvbmNlLiIsIkFmdGVyIHRoZSByZXBvcnQsIGNvbXBsZXRlIGVhY2ggc3RhdGVtZW50IHVzaW5nIHRoZSBkcm9wLWRvd24gbWVudS4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBjb21wbGV0ZSBlYWNoIHN0YXRlbWVudCBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoIFx1MjViZSApLiIsInRyYW5zY3JpcHQiOiJQYXJ0IDY6IExpc3RlbmluZyBmb3IgVmlld3BvaW50c1xuWW91IHdpbGwgaGVhciBhIHByZXNlbnRhdGlvbiBhYm91dCBzb2NpYWwgcmVzcG9uc2liaWxpdHkuXG5UaGUgc29sZSByZXNwb25zaWJpbGl0eSBvZiBhIGNvcnBvcmF0aW9uLCBhY2NvcmRpbmcgdG8gZWNvbm9taXN0IE1pbHRvbiBGcmllZG1hbiwgaXMgdG9cbm1ha2UgbW9uZXkuIEEgY29ycG9yYXRpb24gZXhpc3RzIHRvIHNlcnZlIGl0cyBzaGFyZWhvbGRlcnNcdTIwMTR0aGF0IGlzLCBhbnkgZW50aXR5IHdoaWNoXG5vd25zIGFueSBwYXJ0IG9mIHRoZSBjb21wYW55XHUyMDE0d2hvc2UgZ29hbCBpcyB0byBpbmNyZWFzZSB0aGUgdmFsdWUgb2YgdGhlaXIgaW52ZXN0bWVudCBpblxudGhhdCBjb21wYW55LiBBcyBsb25nIGFzIHRoZSBkZWNpc2lvbnMgbWFkZSBieSBhIGNvbXBhbnlcdTIwMTlzIGV4ZWN1dGl2ZXMgZnVydGhlciB0aGlzIGFpbSxcbmEgY29ycG9yYXRpb24gaXMgZnVsZmlsbGluZyBpdHMgZHV0eS5cblByb2ZpdHMgYXNpZGUsIGlmIGEgY29tcGFueVx1MjAxOXMgYWN0aW9ucyBoYXJtIGl0cyBlbXBsb3llZXMsIGN1c3RvbWVycywgdGhlIGNvbW11bml0eSwgb3JcbnRoZSBlbnZpcm9ubWVudCwgc3VyZWx5IHRoaXMgbXVzdCBiZSBwcm9ibGVtYXRpYy4gSW4gcmVjZW50IGRlY2FkZXMsIG1vcmUgcGVvcGxlIGhhdmVcbnJlYWxpemVkIHRoYXQgdGhlc2UgYWZmZWN0ZWQgZ3JvdXBzLCBrbm93biBhcyBzdGFrZWhvbGRlcnMsIGRlc2VydmUgY29uc2lkZXJhdGlvbiBpblxuY29ycG9yYXRlIGRlY2lzaW9uIG1ha2luZy4gSW4gY29udHJhc3QgdG8gRnJpZWRtYW5cdTIwMTlzIHNoYXJlaG9sZGVyIHZpZXcsIHRoZSBzdGFrZWhvbGRlclxudmlldyBjb250ZW5kcyB0aGF0IGNvcnBvcmF0aW9ucyBoYXZlIGFuIG9ibGlnYXRpb24gdG8gaW50ZWdyYXRlIHNvY2lhbCBhbmQgZW52aXJvbm1lbnRhbFxuY29uY2VybnMgaW50byB0aGVpciBidXNpbmVzcyBtb2RlbC4gRm9yIGV4YW1wbGUsIGNvcnBvcmF0aW9ucyBzaG91bGQgY29udHJpYnV0ZSB0b1xuY29tbXVuaXR5IGRldmVsb3BtZW50LCBwYXkgcmVzcGVjdGFibGUgd2FnZXMsIG9yIGRvbmF0ZSB0byB3b3J0aHkgY2F1c2VzLlxuRm9yIE1pbHRvbiBGcmllZG1hbiwgaG93ZXZlciwgYWRkcmVzc2luZyBzb2NpYWwgaXNzdWVzIGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGVcbmdvdmVybm1lbnQsIG5vdCBjb3Jwb3JhdGlvbnMuIEFza2luZyBjb21wYW5pZXMgdG8gc3BlbmQgcmV2ZW51ZSBvbiBzb2NpYWwgd2VsZmFyZSBpc1xuYWtpbiB0byBpbXBvc2luZyB0YXhhdGlvbiBvbiBzaGFyZWhvbGRlcnMuIEZyaWVkbWFuIG1ha2VzIGl0IGNsZWFyIHRoYXQgY29ycG9yYXRpb25zIGFyZVxubm90IHB1YmxpYyBzZXJ2YW50cyBhbmQgc28gYXJlIG5vdCByZXNwb25zaWJsZSB0byB0aGUgcHVibGljLiBXaGF0XHUyMDE5cyBtb3JlLCBhIGNvcnBvcmF0aW9uLFxuYXMgYW4gYXJ0aWZpY2lhbCBjb25zdHJ1Y3QsIGRvZXMgbm90IGhhdmUgbW9yYWwgb3Igc29jaWFsIHJlc3BvbnNpYmlsaXRpZXMgaW4gdGhlIHNhbWUgc2Vuc2VcbmFzIHBlb3BsZS4gRm9yIEZyaWVkbWFuLCB0aGUgc29sZSBzb2NpYWwgcmVzcG9uc2liaWxpdHkgb2YgYSBjb3Jwb3JhdGlvbiBpcyB0byBtYXhpbWl6ZVxucHJvZml0cyB3aGlsZSBvYmV5aW5nIHRoZSBsYXcuXG5FdGhpY2lzdCBNYXJnYXJldCBXaGl0ZSBzYXlzIEZyaWVkbWFuIGlzIHJpZ2h0IGluIG9uZSBzZW5zZS4gV2hpbGUgaXQgd291bGQgdW5kb3VidGVkbHlcbmJlIGtpbmQgZm9yIGEgcmljaCBjb21wYW55IHRvIGdpdmUgbW9uZXkgdG8gYSBjb21tdW5pdHkgc3RydWdnbGluZyBlY29ub21pY2FsbHksIHdlXG5jYW4gbm8gbW9yZSByZXF1aXJlIGEgY29tcGFueSB0byBoYW5kIG91dCBkb25hdGlvbnMgdGhhbiB3ZSBjYW4gcmVxdWlyZSBhIHBlcnNvbiB0b1xuZ2l2ZSBtb25leSB0byBzb21lb25lIG9uIHRoZSBzdHJlZXQgd2hvIGFza3MgZm9yIGNoYW5nZS4gQ2hhcml0eSBzaG91bGQgbm90IGJlXG5tYW5kYXRlZC5cbldoaXRlIHBvaW50cyBvdXQgdGhhdCBpbiBtYW55IGNhc2VzLCBob3dldmVyLCBjb3Jwb3JhdGlvbnMgYXJlIGluZXh0cmljYWJseSBsaW5rZWQgdG9cbnNvY2lhbCBvciBlbnZpcm9ubWVudGFsIHByb2JsZW1zLiBNYW55IGNvbXBhbmllcywgZm9yIGV4YW1wbGUsIGZpbmQgbGVnYWwgbG9vcGhvbGVzIHRvXG5pcnJlc3BvbnNpYmx5IGRpc3Bvc2Ugb2YgdGhlaXIgd2FzdGUuIFRob3VnaCB0aGV5IG1hbmFnZSB0byBza2lydCB0aGUgbGF3LCBjb21wYW5pZXMsXG5qdXN0IGxpa2UgcGVvcGxlLCBzaG91bGQgYmUgaGVsZCBtb3JhbGx5IHJlc3BvbnNpYmxlIGZvciB0aGUgY29uc2VxdWVuY2VzIG9mIHRoZWlyIGFjdGlvbnMuXG5JbnRlcmVzdGluZ2x5LCB3aGV0aGVyIGNvbXBhbmllcyBhZ3JlZSBvciBkaXNhZ3JlZSB3aXRoIFdoaXRlLCBpdFx1MjAxOXMgbm93IGluIHRoZWlyIGludGVyZXN0XG50byBhZG9wdCBhIHNvY2lhbGx5IHJlc3BvbnNpYmxlIHBvc2l0aW9uLiBXaXRoIHRoZSByaXNlIG9mIGV0aGljcy1pbmZsdWVuY2VkIGNvbnN1bWVyaXNtLFxuc2hvcHBlcnMgYXJlIGRlbWFuZGluZyB0aGF0IHByb2R1Y3RzIGJlIHByb2R1Y2VkIHdpdGggdGhlIGNvbmNlcm5zIG9mIGxhYm91cmVycyxcbmFuaW1hbHMsIGFuZCB0aGUgZW52aXJvbm1lbnQgaW4gbWluZC4gU2FkbHksIGFzIGEgYnktcHJvZHVjdCwgdGhpcyBoYXMgYWxzbyBnaXZlbiByaXNlIHRvIGFcbmZvcm0gb2YgXHUyMDFjZ3JlZW53YXNoaW5nXHUyMDFkIGluIGFkdmVydGlzaW5nLCB3aGVyZSBjb21wYW5pZXMgbWFya2V0IHRoZW1zZWx2ZXMgd2l0aCBhblxuZW52aXJvbm1lbnRhbGx5IGZyaWVuZGx5IGltYWdlIGZvciB0aGUgc29sZSBpbnRlcmVzdCBvZiBpbmNyZWFzaW5nIHNhbGVzLiIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IlJlcG9ydCIsImR1cmF0aW9uIjoxOTIsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyByZXBvcnQuIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiBJdCBpcyBhYm91dCAzIG1pbnV0ZXMgbG9uZy4iLCJtZWRpYVR5cGUiOiJhdWRpbyIsInRpbWVNaW51dGVzIjo0LCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJBIHN1cHBvcnRlciBvZiB0aGUgc3Rha2Vob2xkZXIgdmlldyBtaWdodCBzdWdnZXN0IGNvcnBvcmF0aW9ucyBzaG91bGQiLCJvcHRpb25zIjpbImRpc3RyaWJ1dGUgcHJvZml0cyBldmVubHkgYW1vbmcgc2hhcmVob2xkZXJzLiIsImludm9sdmUgZXhlY3V0aXZlcyBpbiBjb3Jwb3JhdGUgZGVjaXNpb25zLiIsInNwZW5kIG1vbmV5IG9uIGNvbW11bml0eS1iYXNlZCBwcm9qZWN0cy4iLCJyZXF1ZXN0IGZpbmFuY2lhbCBhc3Npc3RhbmNlIGZyb20gZ292ZXJubWVudC4iXSwia2V5IjoyfSx7Im4iOjIsInN0ZW0iOiJFY29ub21pc3QgTWlsdG9uIEZyaWVkbWFuIHJlZmVyZW5jZXMgZ292ZXJubWVudCB0byIsIm9wdGlvbnMiOlsic2hvdyBhIHNpbWlsYXJpdHkgdG8gY29ycG9yYXRpb25zLiIsImNvbnRyYXN0IHRoZSBkdXRpZXMgb2YgY29ycG9yYXRpb25zLiIsImRlc2NyaWJlIGEgcHJvYmxlbSBmYWNlZCBieSBjb3Jwb3JhdGlvbnMuIiwiZXhlbXBsaWZ5IGhvdyBjb3Jwb3JhdGlvbnMgYXJlIG92ZXJzZWVuLiJdLCJrZXkiOjF9LHsibiI6Mywic3RlbSI6IkV0aGljaXN0IE1hcmdhcmV0IFdoaXRlIHdvdWxkIGFncmVlIHdpdGggRnJpZWRtYW4gdGhhdCIsIm9wdGlvbnMiOlsiY29tcGFuaWVzIHNlcnZlIHRoZSBwdWJsaWMgYnkgbWFraW5nIG1vbmV5LiIsImNvcnBvcmF0aW9ucyBjYW5ub3QgaGF2ZSBtb3JhbCByZXNwb25zaWJpbGl0aWVzLiIsImdvdmVybm1lbnQgc2hvdWxkIG5vdCBpbnRlcmZlcmUgd2l0aCBidXNpbmVzcy4iLCJjaGFyaXR5IGNhbm5vdCBiZSBtYW5kYXRvcnkgZm9yIGNvbXBhbmllcy4iXSwia2V5IjozfSx7Im4iOjQsInN0ZW0iOiJXaGl0ZSBzdWdnZXN0cyB0aGF0IGNvcnBvcmF0aW9ucyBhcmUgb2Z0ZW4iLCJvcHRpb25zIjpbInN1cHBvcnRpdmUgb2YgZGV2ZWxvcGluZyBjb21tdW5pdGllcy4iLCJhcyBnZW5lcm91cyBhcyBjaGFyaXRhYmxlIG9yZ2FuaXphdGlvbnMuIiwidW5mYWlybHkgYmxhbWVkIGZvciBwcm9ibGVtcy4iLCJhYmxlIHRvIGF2b2lkIG1vcmFsIG9ibGlnYXRpb25zLiJdLCJrZXkiOjN9LHsibiI6NSwic3RlbSI6IkFjY29yZGluZyB0byB0aGUgcHJlc2VudGF0aW9uLCBtb3JlIHBlb3BsZSBub3dhZGF5cyIsIm9wdGlvbnMiOlsic3VwcG9ydCBzb2NpYWxseSByZXNwb25zaWJsZSBjb21wYW5pZXMuIiwid2FudCB0byB3b3JrIGZvciBldGhpY2FsIG9yZ2FuaXphdGlvbnMuIiwiYXJlIGludGVyZXN0ZWQgaW4gcHJvZHVjaW5nIHRoZWlyIG93biBwcm9kdWN0cy4iLCJhcmUgZG91YnRmdWwgb2YgbWVzc2FnZXMgaW4gbWFya2V0aW5nLiJdLCJrZXkiOjB9LHsibiI6Niwic3RlbSI6IlRoZSBzcGVha2VyIHN1Z2dlc3RzIHRoYXQgY29tcGFuaWVzIiwib3B0aW9ucyI6WyJjYXJlIGFib3V0IG1vcmUgdGhhbiBtZXJlbHkgaW5jcmVhc2luZyB0aGVpciBwcm9maXRzLiIsImhhdmUgYWdyZWVkIHRoZXkgaGF2ZSBzb2NpYWwgcmVzcG9uc2liaWxpdGllcy4iLCJzb21ldGltZXMgbWlzcmVwcmVzZW50IHRoZW1zZWx2ZXMgdG8gc2VsbCBwcm9kdWN0cy4iLCJjYXVzZSBoYXJtIGJ5IG5vdCBjb250cmlidXRpbmcgdG8gc29jaWFsIHdlbGZhcmUuIl0sImtleSI6Mn1dfV19XX07Cgp2YXIgQ0VMUElQX1lUID0geyB2aWRlb0lkOiAnJyB9OyAgLyogZS5nLiAnZFF3NHc5V2dYY1EnIFx1MjAxNCBTZXQgMTAgVGVzdCAyIGZ1bGwgbGlzdGVuaW5nIHZpZGVvICovCnZhciBDTFBfQ0hBUFRFUlMgPSB7ICcwLjAnOlswLDUyMF0sICcwLjEnOlswLDUyMF0sICcwLjInOlswLDUyMF0sICcxLjAnOls1MjAsODUzXSwgJzIuMCc6Wzg1MywxMjcyXSwgJzMuMCc6WzEyNzIsMTM2NF0sICc0LjAnOlsxMzY0LDE1MDNdLCAnNS4wJzpbMTUwMywxNzU3XSB9OwoKLyogVE9ETzogcGxhY2Vob2xkZXIgbWFwcGluZyBcdTIwMTQgdmVyaWZ5IGFnYWluc3QgdGhlIG9mZmljaWFsIENFTFBJUCBzY29yZSBjaGFydC4gKi8KZnVuY3Rpb24gY2xiRXN0aW1hdGUocmF3KXsKICBpZiAocmF3ID49IDM1KSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCAxMFx1MjAxMzEyJywgbm90ZTogJ0FkdmFuY2VkIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMzApIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDknLCAgICAgICAgbm90ZTogJ0VmZmVjdGl2ZSBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDI3KSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCA4JywgICAgICAgIG5vdGU6ICdHb29kIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMjIpIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDcnLCAgICAgICAgbm90ZTogJ0FkZXF1YXRlIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMTcpIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDYnLCAgICAgICAgbm90ZTogJ0RldmVsb3BpbmcgcHJvZmljaWVuY3knIH07CiAgaWYgKHJhdyA+PSAxMSkgcmV0dXJuIHsgbGV2ZWw6ICdDRUxQSVAgNScsICAgICAgICBub3RlOiAnQWNxdWlyaW5nIHByb2ZpY2llbmN5JyB9OwogIHJldHVybiAgICAgICAgICAgIHsgbGV2ZWw6ICdDRUxQSVAgNCBvciBiZWxvdycsICAgbm90ZTogJ0tlZXAgcHJhY3RpY2luZyEnIH07Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PSBlbmdpbmUgPT09PT09PT09PT09PT09PT09PT09ICovCihmdW5jdGlvbigpewogIHZhciByZWR1Y2VkTW90aW9uID0gd2luZG93Lm1hdGNoTWVkaWEgJiYgd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpJykubWF0Y2hlczsKICB2YXIgY2F0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscENhdCcpOwogIHZhciBkb3RzRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwRG90cycpOwogIHZhciB0b29sYmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFRvb2xiYXInKTsKICB2YXIgcmVzdWx0c0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFJlc3VsdHMnKTsKICB2YXIgc2NvcmVDaGlwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFNjb3JlQ2hpcCcpOwoKICB2YXIgVE9UQUxfUSA9IDA7CiAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocCl7IHAuc2VjdGlvbnMuZm9yRWFjaChmdW5jdGlvbihzKXsgVE9UQUxfUSArPSBzLnF1ZXN0aW9ucy5sZW5ndGg7IH0pOyB9KTsKCiAgdmFyIHNjcmVlbnMgPSBbXTsKICBURVNUX0RBVEEucGFydHMuZm9yRWFjaChmdW5jdGlvbihwYXJ0LCBwaSl7CiAgICBzY3JlZW5zLnB1c2goeyB0eXBlOiAnaW50cm8nLCBwaTogcGkgfSk7CiAgICBwYXJ0LnNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24oc2VjLCBzaSl7CiAgICAgIHNjcmVlbnMucHVzaCh7IHR5cGU6ICdtZWRpYScsIHBpOiBwaSwgc2k6IHNpIH0pOwogICAgICBzY3JlZW5zLnB1c2goeyB0eXBlOiAncScsIHBpOiBwaSwgc2k6IHNpIH0pOwogICAgfSk7CiAgfSk7CiAgc2NyZWVucy5wdXNoKHsgdHlwZTogJ2ZpbmlzaCcgfSk7CgogIHZhciBzdGF0ZSA9IHsKICAgIHN0YXJ0ZWQ6IGZhbHNlLAogICAgaWR4OiAwLAogICAgYW5zd2Vyczoge30sICAgICAgLyogInBpLnNpLnFpIiAtPiBvcHRpb24gaW5kZXggKDAtMykgKi8KICAgIGNoZWNrZWQ6IGZhbHNlLAogICAgdGltZXJPbjogdHJ1ZQogIH07CiAgdmFyIG1lZGlhVGltZXIgPSBudWxsLCBxVGltZXIgPSBudWxsLCBxUmVtYWluaW5nID0gMDsKICB2YXIgcG9wdXAgPSBudWxsLCBvcGVuVHJpZ2dlciA9IG51bGw7CgogIGZ1bmN0aW9uIHFLZXkocGksIHNpLCBxaSl7IHJldHVybiBwaSArICcuJyArIHNpICsgJy4nICsgcWk7IH0KICBmdW5jdGlvbiBmbXQoc2VjKXsgdmFyIG0gPSBNYXRoLmZsb29yKHNlYy82MCksIHMgPSBzZWMgJSA2MDsgcmV0dXJuIG0gKyAnOicgKyAocyA8IDEwID8gJzAnIDogJycpICsgczsgfQogIGZ1bmN0aW9uIGVsKHRhZywgY2xzLCB0ZXh0KXsKICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpOwogICAgaWYgKGNscykgZS5jbGFzc05hbWUgPSBjbHM7CiAgICBpZiAodGV4dCAhPT0gdW5kZWZpbmVkKSBlLnRleHRDb250ZW50ID0gdGV4dDsKICAgIHJldHVybiBlOwogIH0KICBmdW5jdGlvbiBzY3JvbGxUb0VsKHRhcmdldCwgb2Zmc2V0KXsKICAgIHZhciB5ID0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIHdpbmRvdy5wYWdlWU9mZnNldCAtIChvZmZzZXQgfHwgNzApOwogICAgd2luZG93LnNjcm9sbFRvKHsgdG9wOiB5LCBiZWhhdmlvcjogcmVkdWNlZE1vdGlvbiA\/ICdhdXRvJyA6ICdzbW9vdGgnIH0pOwogIH0KICBmdW5jdGlvbiBjbGVhclRpbWVycygpewogICAgaWYgKG1lZGlhVGltZXIpeyBjbGVhckludGVydmFsKG1lZGlhVGltZXIpOyBtZWRpYVRpbWVyID0gbnVsbDsgfQogICAgaWYgKHFUaW1lcil7IGNsZWFySW50ZXJ2YWwocVRpbWVyKTsgcVRpbWVyID0gbnVsbDsgfQogIH0KICBmdW5jdGlvbiBhbnN3ZXJlZENvdW50KCl7IHJldHVybiBPYmplY3Qua2V5cyhzdGF0ZS5hbnN3ZXJzKS5sZW5ndGg7IH0KICBmdW5jdGlvbiB1cGRhdGVTY29yZUNoaXAoKXsKICAgIGlmIChzdGF0ZS5jaGVja2VkKXsKICAgICAgc2NvcmVDaGlwLnRleHRDb250ZW50ID0gJ1Njb3JlICcgKyBjb21wdXRlU2NvcmUoKS50b3RhbCArICcvJyArIFRPVEFMX1E7CiAgICB9IGVsc2UgewogICAgICBzY29yZUNoaXAudGV4dENvbnRlbnQgPSAnQW5zd2VyZWQgJyArIGFuc3dlcmVkQ291bnQoKSArICcvJyArIFRPVEFMX1E7CiAgICB9CiAgfQogIGZ1bmN0aW9uIGNvbXB1dGVTY29yZSgpewogICAgdmFyIHRvdGFsID0gMCwgcGVyUGFydCA9IFtdOwogICAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCwgcGkpewogICAgICB2YXIgYyA9IDAsIG4gPSAwOwogICAgICBwYXJ0LnNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24oc2VjLCBzaSl7CiAgICAgICAgc2VjLnF1ZXN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHEsIHFpKXsKICAgICAgICAgIG4rKzsKICAgICAgICAgIGlmIChzdGF0ZS5hbnN3ZXJzW3FLZXkocGksIHNpLCBxaSldID09PSBxLmtleSAtIDEpeyBjKys7IHRvdGFsKys7IH0KICAgICAgICB9KTsKICAgICAgfSk7CiAgICAgIHBlclBhcnQucHVzaCh7IGNvcnJlY3Q6IGMsIHRvdGFsOiBuIH0pOwogICAgfSk7CiAgICByZXR1cm4geyB0b3RhbDogdG90YWwsIHBlclBhcnQ6IHBlclBhcnQgfTsKICB9CgogIC8qIC0tLS0tLS0tLS0gZHJvcGRvd24gcG9wdXAgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIGNsb3NlUG9wdXAoKXsKICAgIGlmIChwb3B1cCl7IHBvcHVwLnJlbW92ZSgpOyBwb3B1cCA9IG51bGw7IH0KICAgIGlmIChvcGVuVHJpZ2dlcil7IG9wZW5UcmlnZ2VyLmNsYXNzTGlzdC5yZW1vdmUoJ2NscC1vcGVuJyk7IG9wZW5UcmlnZ2VyID0gbnVsbDsgfQogIH0KICBmdW5jdGlvbiBvcGVuUG9wdXAodHJpZ2dlciwgcGksIHNpLCBxaSl7CiAgICBpZiAob3BlblRyaWdnZXIgPT09IHRyaWdnZXIpeyBjbG9zZVBvcHVwKCk7IHJldHVybjsgfQogICAgY2xvc2VQb3B1cCgpOwogICAgdmFyIHEgPSBURVNUX0RBVEEucGFydHNbcGldLnNlY3Rpb25zW3NpXS5xdWVzdGlvbnNbcWldOwogICAgdmFyIGtleSA9IHFLZXkocGksIHNpLCBxaSk7CiAgICBwb3B1cCA9IGVsKCdkaXYnLCAnY2xwLXBvcCcpOwogICAgcS5vcHRpb25zLmZvckVhY2goZnVuY3Rpb24ob3B0LCBvaSl7CiAgICAgIHZhciBiID0gZWwoJ2J1dHRvbicsICdjbHAtb3B0JyArIChzdGF0ZS5hbnN3ZXJzW2tleV0gPT09IG9pID8gJyBjbHAtc2VsJyA6ICcnKSk7CiAgICAgIGIudHlwZSA9ICdidXR0b24nOwogICAgICBiLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1yYWRpbycpKTsKICAgICAgYi5hcHBlbmRDaGlsZChlbCgnc3BhbicsICcnLCBvcHQpKTsKICAgICAgYi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGV2KXsKICAgICAgICBldi5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICBzdGF0ZS5hbnN3ZXJzW2tleV0gPSBvaTsKICAgICAgICB1cGRhdGVTY29yZUNoaXAoKTsKICAgICAgICBjbG9zZVBvcHVwKCk7CiAgICAgICAgc2V0VHJpZ2dlckxhYmVsKHRyaWdnZXIsIG9wdCwgZmFsc2UpOwogICAgICB9KTsKICAgICAgcG9wdXAuYXBwZW5kQ2hpbGQoYik7CiAgICB9KTsKICAgIGNhdC5hcHBlbmRDaGlsZChwb3B1cCk7CiAgICAvKiBwb3NpdGlvbjogYmVsb3cgdHJpZ2dlciwgZmxpcCBhYm92ZSB3aGVuIG5lYXIgdmlld3BvcnQgYm90dG9tICovCiAgICBwb3B1cC5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7CiAgICB2YXIgY2F0UmVjdCA9IGNhdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgIHZhciB0UmVjdCA9IHRyaWdnZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICB2YXIgcG9wVyA9IHBvcHVwLm9mZnNldFdpZHRoLCBwb3BIID0gcG9wdXAub2Zmc2V0SGVpZ2h0OwogICAgdmFyIGxlZnQgPSB0UmVjdC5sZWZ0IC0gY2F0UmVjdC5sZWZ0OwogICAgbGVmdCA9IE1hdGgubWF4KDgsIE1hdGgubWluKGxlZnQsIGNhdC5jbGllbnRXaWR0aCAtIHBvcFcgLSA4KSk7CiAgICB2YXIgdG9wOwogICAgaWYgKHRSZWN0LmJvdHRvbSArIHBvcEggKyAyNCA+IHdpbmRvdy5pbm5lckhlaWdodCAmJiB0UmVjdC50b3AgLSBwb3BIIC0gOCA+IDApewogICAgICB0b3AgPSB0UmVjdC50b3AgLSBjYXRSZWN0LnRvcCAtIHBvcEggLSA2OyAgIC8qIGZsaXAgYWJvdmUgKi8KICAgIH0gZWxzZSB7CiAgICAgIHRvcCA9IHRSZWN0LmJvdHRvbSAtIGNhdFJlY3QudG9wICsgNjsKICAgIH0KICAgIHBvcHVwLnN0eWxlLmxlZnQgPSBsZWZ0ICsgJ3B4JzsKICAgIHBvcHVwLnN0eWxlLnRvcCA9IHRvcCArICdweCc7CiAgICBwb3B1cC5zdHlsZS52aXNpYmlsaXR5ID0gJyc7CiAgICB0cmlnZ2VyLmNsYXNzTGlzdC5hZGQoJ2NscC1vcGVuJyk7CiAgICBvcGVuVHJpZ2dlciA9IHRyaWdnZXI7CiAgfQogIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZXYpewogICAgaWYgKHBvcHVwICYmICFwb3B1cC5jb250YWlucyhldi50YXJnZXQpICYmIGV2LnRhcmdldCAhPT0gb3BlblRyaWdnZXIgJiYgKCFvcGVuVHJpZ2dlciB8fCAhb3BlblRyaWdnZXIuY29udGFpbnMoZXYudGFyZ2V0KSkpewogICAgICBjbG9zZVBvcHVwKCk7CiAgICB9CiAgfSk7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNsb3NlUG9wdXApOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBmdW5jdGlvbigpeyAvKiBrZWVwIHBvcHVwIGFuY2hvcmVkOiBjbG9zZSBvbiBzY3JvbGwgKi8gaWYgKHBvcHVwKSBjbG9zZVBvcHVwKCk7IH0sIHsgcGFzc2l2ZTogdHJ1ZSB9KTsKCiAgZnVuY3Rpb24gc2V0VHJpZ2dlckxhYmVsKHRyaWdnZXIsIHRleHQsIHVuYW5zd2VyZWQpewogICAgdHJpZ2dlci5jbGFzc0xpc3QudG9nZ2xlKCdjbHAtdW5hbnN3ZXJlZCcsICEhdW5hbnN3ZXJlZCk7CiAgICB0cmlnZ2VyLnF1ZXJ5U2VsZWN0b3IoJy5jbHAtZGQtdGV4dCcpLnRleHRDb250ZW50ID0gdW5hbnN3ZXJlZCA\/ICdcdTIwMjZcdTIwMjZcdTIwMjZcdTIwMjYnIDogdGV4dDsKICB9CgogIC8qIC0tLS0tLS0tLS0gZG90cyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gcmVuZGVyRG90cygpewogICAgZG90c0VsLmlubmVySFRNTCA9ICcnOwogICAgdmFyIGN1clBpID0gLTE7CiAgICB2YXIgcyA9IHNjcmVlbnNbc3RhdGUuaWR4XTsKICAgIGlmIChzICYmIHMucGkgIT09IHVuZGVmaW5lZCkgY3VyUGkgPSBzLnBpOwogICAgaWYgKHMgJiYgcy50eXBlID09PSAnZmluaXNoJykgY3VyUGkgPSBURVNUX0RBVEEucGFydHMubGVuZ3RoOyAvKiBhbGwgZG9uZSAqLwogICAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCwgcGkpewogICAgICB2YXIgZCA9IGVsKCdidXR0b24nLCAnY2xwLWRvdCcsICdQJyArIChwaSArIDEpKTsKICAgICAgZC50eXBlID0gJ2J1dHRvbic7CiAgICAgIGlmIChwaSA9PT0gY3VyUGkpIGQuY2xhc3NMaXN0LmFkZCgnY2xwLWN1cicpOwogICAgICBlbHNlIGlmIChwaSA8IGN1clBpIHx8IHN0YXRlLmNoZWNrZWQpIGQuY2xhc3NMaXN0LmFkZCgnY2xwLWRvbmUnKTsKICAgICAgaWYgKHN0YXRlLmNoZWNrZWQpewogICAgICAgIGQuY2xhc3NMaXN0LmFkZCgnY2xwLWNsaWNrYWJsZScpOwogICAgICAgIGQudGl0bGUgPSAnUmV2aWV3ICcgKyBwYXJ0Lm5hbWU7CiAgICAgICAgZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmVlbnMubGVuZ3RoOyBpKyspewogICAgICAgICAgICBpZiAoc2NyZWVuc1tpXS50eXBlID09PSAncScgJiYgc2NyZWVuc1tpXS5waSA9PT0gcGkpeyBzdGF0ZS5pZHggPSBpOyBicmVhazsgfQogICAgICAgICAgfQogICAgICAgICAgcmVuZGVyKCk7IHNjcm9sbFRvRWwoY2F0KTsKICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBkLnRpdGxlID0gcGFydC5uYW1lOwogICAgICB9CiAgICAgIGRvdHNFbC5hcHBlbmRDaGlsZChkKTsKICAgIH0pOwogIH0KCiAgLyogLS0tLS0tLS0tLSBjaHJvbWUgcGllY2VzIC0tLS0tLS0tLS0gKi8KICBmdW5jdGlvbiBtYWtlQmFyKHRpdGxlLCB3aXRoVGltZXIpewogICAgdmFyIGJhciA9IGVsKCdkaXYnLCAnY2xwLWJhcicpOwogICAgYmFyLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1iYXItdGl0bGUnLCB0aXRsZSkpOwogICAgaWYgKHdpdGhUaW1lciAmJiBzdGF0ZS50aW1lck9uKXsKICAgICAgdmFyIHQgPSBlbCgnc3BhbicsICdjbHAtYmFyLXRpbWVyJyk7CiAgICAgIHQuaWQgPSAnY2xwUVRpbWVyJzsKICAgICAgdC5pbm5lckhUTUwgPSAnVGltZSByZW1haW5pbmc6IDxiPicgKyBmbXQocVJlbWFpbmluZykgKyAnPC9iPic7CiAgICAgIGJhci5hcHBlbmRDaGlsZCh0KTsKICAgIH0KICAgIHZhciBuZXh0ID0gZWwoJ2J1dHRvbicsICdjbHAtbmV4dCcsICdOZXh0Jyk7CiAgICBuZXh0LnR5cGUgPSAnYnV0dG9uJzsKICAgIG5leHQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgICBjbG9zZVBvcHVwKCk7CiAgICAgIGlmIChzdGF0ZS5pZHggPCBzY3JlZW5zLmxlbmd0aCAtIDEpeyBzdGF0ZS5pZHgrKzsgcmVuZGVyKCk7IHNjcm9sbFRvRWwoY2F0KTsgfQogICAgfSk7CiAgICBpZiAoc2NyZWVuc1tzdGF0ZS5pZHhdLnR5cGUgPT09ICdmaW5pc2gnKSBuZXh0LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICBiYXIuYXBwZW5kQ2hpbGQobmV4dCk7CiAgICByZXR1cm4gYmFyOwogIH0KICBmdW5jdGlvbiBtYWtlSW5zdHIodGV4dCl7CiAgICB2YXIgcm93ID0gZWwoJ2RpdicsICdjbHAtaW5zdHInKTsKICAgIHJvdy5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtaW5mbycsICdpJykpOwogICAgcm93LmFwcGVuZENoaWxkKGVsKCdwJywgJycsIHRleHQpKTsKICAgIHJldHVybiByb3c7CiAgfQogIHZhciBTUEVBS0VSX1NWRyA9ICc8c3ZnIHdpZHRoPSIyNiIgaGVpZ2h0PSIyNiIgdmlld0JveD0iMCAwIDI2IDI2IiBmaWxsPSJub25lIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JyArCiAgICAnPHJlY3QgeD0iMyIgeT0iOSIgd2lkdGg9IjYiIGhlaWdodD0iOCIgcng9IjEiIGZpbGw9ImN1cnJlbnRDb2xvciIvPicgKwogICAgJzxwYXRoIGQ9Ik05IDkgTDE1IDQgTDE1IDIyIEw5IDE3IFoiIGZpbGw9ImN1cnJlbnRDb2xvciIvPicgKwogICAgJzxwYXRoIGQ9Ik0xOCA5IGE1LjUgNS41IDAgMCAxIDAgOCIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+JyArCiAgICAnPHBhdGggZD0iTTIwLjUgNi41IGE5IDkgMCAwIDEgMCAxMyIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PC9zdmc+JzsKICB2YXIgUExBWV9TVkcgPSAnPHN2ZyB3aWR0aD0iMjYiIGhlaWdodD0iMjYiIHZpZXdCb3g9IjAgMCAyNiAyNiIgZmlsbD0ibm9uZSIgYXJpYS1oaWRkZW49InRydWUiPicgKwogICAgJzxwYXRoIGQ9Ik04IDUgTDIxIDEzIEw4IDIxIFoiIGZpbGw9ImN1cnJlbnRDb2xvciIvPjwvc3ZnPic7CgogIC8qIC0tLS0tLS0tLS0gc2NyZWVucyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gcmVuZGVySW50cm8oc2NyLCByb290KXsKICAgIHZhciBwYXJ0ID0gVEVTVF9EQVRBLnBhcnRzW3Njci5waV07CiAgICByb290LnNldEF0dHJpYnV0ZSgnZGF0YS1zY3JlZW4tbGFiZWwnLCBwYXJ0Lm5hbWUgKyAnIFx1MjAxNCBJbnN0cnVjdGlvbnMnKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQobWFrZUluc3RyKCdJbnN0cnVjdGlvbnM6JykpOwogICAgdmFyIGJvZHkgPSBlbCgnZGl2JywgJ2NscC1pbnRyby1ib2R5Jyk7CiAgICBib2R5LmFwcGVuZENoaWxkKGVsKCdoMycsICcnLCBwYXJ0LmludHJvVGl0bGUpKTsKICAgIHZhciB1bCA9IGVsKCd1bCcsICdjbHAtYnVsbGV0cycpOwogICAgcGFydC5pbnRyb0J1bGxldHMuZm9yRWFjaChmdW5jdGlvbihiKXsgdWwuYXBwZW5kQ2hpbGQoZWwoJ2xpJywgJycsIGIpKTsgfSk7CiAgICBib2R5LmFwcGVuZENoaWxkKHVsKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQoYm9keSk7CiAgfQoKICBmdW5jdGlvbiByZW5kZXJNZWRpYShzY3IsIHJvb3QpewogICAgdmFyIHBhcnQgPSBURVNUX0RBVEEucGFydHNbc2NyLnBpXTsKICAgIHZhciBzZWMgPSBwYXJ0LnNlY3Rpb25zW3Njci5zaV07CiAgICByb290LnNldEF0dHJpYnV0ZSgnZGF0YS1zY3JlZW4tbGFiZWwnLCBwYXJ0Lm5hbWUgKyAnIFx1MjAxNCBNZWRpYScpOwogICAgcm9vdC5hcHBlbmRDaGlsZChtYWtlSW5zdHIoc2VjLm1lZGlhSW5zdHJ1Y3Rpb24pKTsKdmFyIF9haz1zY3IucGkrIi4iK3Njci5zaSxfYXU9KHR5cGVvZiBDTFBfQVVESU8hPT0idW5kZWZpbmVkIikmJkNMUF9BVURJT1tfYWtdO2lmKF9hdSl7dmFyIF9pc1Y9KHR5cGVvZiBDTFBfQVVESU9fVklERU8hPT0idW5kZWZpbmVkIikmJkNMUF9BVURJT19WSURFT1tfYWtdO3ZhciBfcD1lbCgiZGl2IiwiY2xwLW1lZGlhLXBhbmVsIik7dmFyIF9jPWVsKCJkaXYiLCJjbHAtbWVkaWEtY2FyZCIrKF9pc1Y\/IiBjbHAtaXMtdmlkZW8iOiIiKSk7dmFyIF9tPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoX2lzVj8idmlkZW8iOiJhdWRpbyIpO19tLnNyYz1fYXU7X20uY29udHJvbHM9dHJ1ZTtfbS5wcmVsb2FkPSJub25lIjtfbS5jbGFzc05hbWU9ImNscC1yZWFsbWVkaWEiO19tLnNldEF0dHJpYnV0ZSgiY29udHJvbHNMaXN0Iiwibm9kb3dubG9hZCIpO19tLnN0eWxlLmNzc1RleHQ9X2lzVj8id2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjhweDtiYWNrZ3JvdW5kOiMwMDA7ZGlzcGxheTpibG9jayI6IndpZHRoOjEwMCU7ZGlzcGxheTpibG9jayI7X2MuYXBwZW5kQ2hpbGQoX20pO19wLmFwcGVuZENoaWxkKF9jKTtfcC5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLW9uY2Utbm90ZSIsIkluIHRoZSByZWFsIHRlc3QgdGhpcyByZWNvcmRpbmcgcGxheXMgb25jZS4gRm9yIHByYWN0aWNlIHlvdSBjYW4gcmVwbGF5IGl0IFx1MjAxNCBidXQgdHJ5IHRvIGxpc3RlbiBvbmx5IG9uY2UgZmlyc3QuIikpO3Jvb3QuYXBwZW5kQ2hpbGQoX3ApO3JldHVybjt9CgogICAgaWYgKENFTFBJUF9ZVC52aWRlb0lkKXsKICAgICAgdmFyIGNoID0gQ0xQX0NIQVBURVJTW3Njci5waSArICcuJyArIHNjci5zaV0gfHwgWzAsIDBdOwogICAgICB2YXIgdnBhbmVsID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtcGFuZWwnKTsKICAgICAgdmFyIHZjYXJkID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtY2FyZCBjbHAtaXMtdmlkZW8nKTsKICAgICAgdmFyIHdyYXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgd3JhcC5zdHlsZS5jc3NUZXh0ID0gJ3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7YXNwZWN0LXJhdGlvOjE2Lzk7Ym9yZGVyLXJhZGl1czo4cHg7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQ6IzAwMDsnOwogICAgICB2YXIgaWZyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7CiAgICAgIGlmci5zcmMgPSAnaHR0cHM6Ly93d3cueW91dHViZS1ub2Nvb2tpZS5jb20vZW1iZWQvJyArIENFTFBJUF9ZVC52aWRlb0lkICsgJz9zdGFydD0nICsgY2hbMF0gKyAoY2hbMV0gPyAnJmVuZD0nICsgY2hbMV0gOiAnJykgKyAnJnJlbD0wJm1vZGVzdGJyYW5kaW5nPTEnOwogICAgICBpZnIuYWxsb3cgPSAnYXV0b3BsYXk7IGVuY3J5cHRlZC1tZWRpYTsgcGljdHVyZS1pbi1waWN0dXJlJzsKICAgICAgaWZyLmFsbG93RnVsbHNjcmVlbiA9IHRydWU7CiAgICAgIGlmci50aXRsZSA9ICdDRUxQSVAgTGlzdGVuaW5nIG1lZGlhJzsKICAgICAgaWZyLnN0eWxlLmNzc1RleHQgPSAncG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JvcmRlcjowOyc7CiAgICAgIHdyYXAuYXBwZW5kQ2hpbGQoaWZyKTsKICAgICAgdmNhcmQuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICAgIHZwYW5lbC5hcHBlbmRDaGlsZCh2Y2FyZCk7CiAgICAgIHZwYW5lbC5hcHBlbmRDaGlsZChlbCgnZGl2JywgJ2NscC1vbmNlLW5vdGUnLCAnSW4gdGhlIHJlYWwgdGVzdCB0aGlzIHBsYXlzIG9ubHkgb25jZSBcdTIwMTQgcHJlc3MgTkVYVCB3aGVuIGl0IGVuZHMuJykpOwogICAgICByb290LmFwcGVuZENoaWxkKHZwYW5lbCk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgcGFuZWwgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1wYW5lbCcpOwogICAgdmFyIGNhcmQgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1jYXJkJyArIChzZWMubWVkaWFUeXBlID09PSAndmlkZW8nID8gJyBjbHAtaXMtdmlkZW8nIDogJycpKTsKICAgIC8qIC5jbHAtbWVkaWEtem9uZSBpcyB0aGUgZnV0dXJlIFlvdVR1YmUtZW1iZWQgdGFyZ2V0IChkYXRhLW1lZGlhLXNsb3QpICovCiAgICB2YXIgem9uZSA9IGVsKCdkaXYnLCAnY2xwLW1lZGlhLXpvbmUnKTsKICAgIHpvbmUuc2V0QXR0cmlidXRlKCdkYXRhLW1lZGlhLXNsb3QnLCBzY3IucGkgKyAnLicgKyBzY3Iuc2kpOwogICAgdmFyIGljb24gPSBlbCgnZGl2JywgJ2NscC1zcGVha2VyJyk7CiAgICBpY29uLmlubmVySFRNTCA9IHNlYy5tZWRpYVR5cGUgPT09ICd2aWRlbycgPyBQTEFZX1NWRyA6IFNQRUFLRVJfU1ZHOwogICAgdmFyIG1haW4gPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1tYWluJyk7CiAgICB2YXIgbGFiZWwgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1sYWJlbCcsICdQbGF5aW5nXHUyMDI2Jyk7CiAgICB2YXIgcHJvZyA9IGVsKCdkaXYnLCAnY2xwLXByb2dyZXNzJyk7CiAgICB2YXIgZmlsbCA9IGVsKCdkaXYnLCAnY2xwLXByb2dyZXNzLWZpbGwnKTsKICAgIHByb2cuYXBwZW5kQ2hpbGQoZmlsbCk7CgogICAgaWYgKHNlYy5tZWRpYVR5cGUgPT09ICd2aWRlbycpewogICAgICB6b25lLmFwcGVuZENoaWxkKGljb24pOwogICAgICBjYXJkLmFwcGVuZENoaWxkKHpvbmUpOwogICAgICBtYWluLmFwcGVuZENoaWxkKGxhYmVsKTsKICAgICAgbWFpbi5hcHBlbmRDaGlsZChwcm9nKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZChtYWluKTsKICAgIH0gZWxzZSB7CiAgICAgIG1haW4uYXBwZW5kQ2hpbGQobGFiZWwpOwogICAgICBtYWluLmFwcGVuZENoaWxkKHByb2cpOwogICAgICB6b25lLmFwcGVuZENoaWxkKGljb24pOwogICAgICB6b25lLmFwcGVuZENoaWxkKG1haW4pOwogICAgICBjYXJkLmFwcGVuZENoaWxkKHpvbmUpOwogICAgfQogICAgcGFuZWwuYXBwZW5kQ2hpbGQoY2FyZCk7CgogICAgdmFyIG1ldGEgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1tZXRhJyk7CiAgICB2YXIgdGltZVNwYW4gPSBlbCgnc3BhbicsICcnLCAnMDowMCAvICcgKyBmbXQoc2VjLmR1cmF0aW9uKSk7CiAgICBtZXRhLmFwcGVuZENoaWxkKHRpbWVTcGFuKTsKICAgIHZhciB2b2wgPSBlbCgnc3BhbicsICcnKTsKICAgIHZvbC5pbm5lckhUTUwgPSAnPHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAyNiAyNiIgZmlsbD0ibm9uZSIgYXJpYS1oaWRkZW49InRydWUiPicgKwogICAgICAnPHJlY3QgeD0iMyIgeT0iOSIgd2lkdGg9IjYiIGhlaWdodD0iOCIgcng9IjEiIGZpbGw9ImN1cnJlbnRDb2xvciIvPicgKwogICAgICAnPHBhdGggZD0iTTkgOSBMMTUgNCBMMTUgMjIgTDkgMTcgWiIgZmlsbD0iY3VycmVudENvbG9yIi8+JyArCiAgICAgICc8cGF0aCBkPSJNMTggOSBhNS41IDUuNSAwIDAgMSAwIDgiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPic7CiAgICBtZXRhLmFwcGVuZENoaWxkKHZvbCk7CiAgICBwYW5lbC5hcHBlbmRDaGlsZChtZXRhKTsKICAgIHBhbmVsLmFwcGVuZENoaWxkKGVsKCdkaXYnLCAnY2xwLW9uY2Utbm90ZScsIChzZWMubWVkaWFUeXBlID09PSAndmlkZW8nID8gJ1RoaXMgdmlkZW8gcGxheXMnIDogJ1RoaXMgcmVjb3JkaW5nIHBsYXlzJykgKyAnIG9ubHkgb25jZSBcdTIwMTQganVzdCBsaWtlIHRoZSByZWFsIHRlc3QuJykpOwogICAgaWYgKCFDRUxQSVBfWVQudmlkZW9JZCl7IHBhbmVsLmFwcGVuZENoaWxkKGVsKCdkaXYnLCAnY2xwLW9uY2Utbm90ZScsICdPZmZpY2lhbCBhdWRpby92aWRlbyBpcyBiZWluZyBwcmVwYXJlZCBcdTIwMTQgdGhlIGJhciBhYm92ZSBpcyBhIHNpbXVsYXRpb24uIFByZXNzIE5FWFQgdG8gY29udGludWUuJykpOyB9CiAgICByb290LmFwcGVuZENoaWxkKHBhbmVsKTsKCiAgICAvKiBzaW11bGF0ZWQgcGxheWJhY2sgKi8KICAgIHZhciBlbGFwc2VkID0gMDsKICAgIG1lZGlhVGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpewogICAgICBlbGFwc2VkKys7CiAgICAgIGlmIChlbGFwc2VkID49IHNlYy5kdXJhdGlvbil7CiAgICAgICAgZWxhcHNlZCA9IHNlYy5kdXJhdGlvbjsKICAgICAgICBjbGVhckludGVydmFsKG1lZGlhVGltZXIpOyBtZWRpYVRpbWVyID0gbnVsbDsKICAgICAgICBsYWJlbC50ZXh0Q29udGVudCA9ICdGaW5pc2hlZCc7CiAgICAgIH0KICAgICAgZmlsbC5zdHlsZS53aWR0aCA9IE1hdGgucm91bmQoZWxhcHNlZCAvIHNlYy5kdXJhdGlvbiAqIDEwMCkgKyAnJSc7CiAgICAgIHRpbWVTcGFuLnRleHRDb250ZW50ID0gZm10KGVsYXBzZWQpICsgJyAvICcgKyBmbXQoc2VjLmR1cmF0aW9uKTsKICAgIH0sIDEwMDApOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyUXVlc3Rpb25zKHNjciwgcm9vdCl7CiAgICB2YXIgcGFydCA9IFRFU1RfREFUQS5wYXJ0c1tzY3IucGldOwogICAgdmFyIHNlYyA9IHBhcnQuc2VjdGlvbnNbc2NyLnNpXTsKICAgIHJvb3Quc2V0QXR0cmlidXRlKCdkYXRhLXNjcmVlbi1sYWJlbCcsIHBhcnQubmFtZSArICcgXHUyMDE0IFF1ZXN0aW9ucycpOwogICAgcm9vdC5hcHBlbmRDaGlsZChtYWtlSW5zdHIocGFydC5xSW5zdHJ1Y3Rpb24pKTsKCiAgICB2YXIgcGFuZWwgPSBlbCgnZGl2JywgJ2NscC1xLXBhbmVsJyk7CiAgICBzZWMucXVlc3Rpb25zLmZvckVhY2goZnVuY3Rpb24ocSwgcWkpewogICAgICB2YXIga2V5ID0gcUtleShzY3IucGksIHNjci5zaSwgcWkpOwogICAgICB2YXIgcm93ID0gZWwoJ2RpdicsICdjbHAtcScpOwogICAgICB2YXIgbnVtID0gZWwoJ3NwYW4nLCAnY2xwLXFudW0nLCBxLm4gKyAnLiAnKTsKICAgICAgcm93LmFwcGVuZENoaWxkKG51bSk7CiAgICAgIHJvdy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShxLnN0ZW0gKyAnICcpKTsKCiAgICAgIHZhciBkZCA9IGVsKCdidXR0b24nLCAnY2xwLWRkJyk7CiAgICAgIGRkLnR5cGUgPSAnYnV0dG9uJzsKICAgICAgZGQuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLWRkLXRleHQnKSk7CiAgICAgIGRkLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1kZC1jYXJldCcsICdcdTI1QkMnKSk7CiAgICAgIHZhciBhbnMgPSBzdGF0ZS5hbnN3ZXJzW2tleV07CiAgICAgIHNldFRyaWdnZXJMYWJlbChkZCwgYW5zICE9PSB1bmRlZmluZWQgPyBxLm9wdGlvbnNbYW5zXSA6ICcnLCBhbnMgPT09IHVuZGVmaW5lZCk7CiAgICAgIHJvdy5hcHBlbmRDaGlsZChkZCk7CgogICAgICBpZiAocS50b2RvKXsKICAgICAgICByb3cuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLXRvZG8tdGFnJywgJ1RPRE8nKSk7CiAgICAgIH0KCiAgICAgIGlmIChzdGF0ZS5jaGVja2VkKXsKICAgICAgICBkZC5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgdmFyIGNvcnJlY3QgPSBhbnMgPT09IHEua2V5IC0gMTsKICAgICAgICBkZC5jbGFzc0xpc3QuYWRkKGNvcnJlY3QgPyAnY2xwLW1hcmstcmlnaHQnIDogJ2NscC1tYXJrLXdyb25nJyk7CiAgICAgICAgaWYgKCFjb3JyZWN0KXsKICAgICAgICAgIHZhciByZXYgPSBlbCgnc3BhbicsICdjbHAtcmV2ZWFsJyk7CiAgICAgICAgICByZXYuaW5uZXJIVE1MID0gJ0NvcnJlY3QgYW5zd2VyOiA8Yj48L2I+JzsKICAgICAgICAgIHJldi5xdWVyeVNlbGVjdG9yKCdiJykudGV4dENvbnRlbnQgPSBxLm9wdGlvbnNbcS5rZXkgLSAxXTsKICAgICAgICAgIHJvdy5hcHBlbmRDaGlsZChyZXYpOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBkZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGV2KXsKICAgICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgb3BlblBvcHVwKGRkLCBzY3IucGksIHNjci5zaSwgcWkpOwogICAgICAgIH0pOwogICAgICB9CiAgICAgIHBhbmVsLmFwcGVuZENoaWxkKHJvdyk7CiAgICB9KTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQocGFuZWwpOwoKICAgIC8qIGNvdW50ZG93biAqLwogICAgcVJlbWFpbmluZyA9IHNlYy50aW1lTWludXRlcyAqIDYwOwogICAgc3RhcnRRVGltZXIoKTsKICB9CiAgZnVuY3Rpb24gc3RhcnRRVGltZXIoKXsKICAgIGlmIChxVGltZXIpIGNsZWFySW50ZXJ2YWwocVRpbWVyKTsKICAgIGlmICghc3RhdGUudGltZXJPbikgcmV0dXJuOwogICAgcVRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsKICAgICAgaWYgKHFSZW1haW5pbmcgPiAwKSBxUmVtYWluaW5nLS07CiAgICAgIHZhciB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFFUaW1lcicpOwogICAgICBpZiAodCkgdC5pbm5lckhUTUwgPSAnVGltZSByZW1haW5pbmc6IDxiPicgKyBmbXQocVJlbWFpbmluZykgKyAnPC9iPic7CiAgICAgIGlmIChxUmVtYWluaW5nIDw9IDApeyBjbGVhckludGVydmFsKHFUaW1lcik7IHFUaW1lciA9IG51bGw7IH0KICAgIH0sIDEwMDApOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyRmluaXNoKHJvb3QpewogICAgcm9vdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2NyZWVuLWxhYmVsJywgJ0VuZCBvZiBUZXN0Jyk7CiAgICB2YXIgYm94ID0gZWwoJ2RpdicsICdjbHAtZmluaXNoJyk7CiAgICBib3guYXBwZW5kQ2hpbGQoZWwoJ2gzJywgJycsICdFbmQgb2YgdGhlIExpc3RlbmluZyBUZXN0JykpOwogICAgYm94LmFwcGVuZENoaWxkKGVsKCdwJywgJycsICdZb3UgaGF2ZSBhbnN3ZXJlZCAnICsgYW5zd2VyZWRDb3VudCgpICsgJyBvZiAnICsgVE9UQUxfUSArICcgcXVlc3Rpb25zLiBDaGVjayB5b3VyIGFuc3dlcnMgdG8gc2VlIHlvdXIgc2NvcmUsIHBhcnQtYnktcGFydCByZXN1bHRzLCBhbmQgdHJhbnNjcmlwdHMuJykpOwogICAgdmFyIGJ0biA9IGVsKCdidXR0b24nLCAnY2xwLWZpbmlzaC1jaGVjaycsICdDaGVjayBhbnN3ZXJzJyk7CiAgICBidG4udHlwZSA9ICdidXR0b24nOwogICAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2hlY2tBbnN3ZXJzKTsKICAgIGJveC5hcHBlbmRDaGlsZChidG4pOwogICAgcm9vdC5hcHBlbmRDaGlsZChib3gpOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyKCl7CiAgICBjbGVhclRpbWVycygpOwogICAgY2xvc2VQb3B1cCgpOwogICAgY2F0LmlubmVySFRNTCA9ICcnOwogICAgdmFyIHNjciA9IHNjcmVlbnNbc3RhdGUuaWR4XTsKCiAgICBpZiAoIXN0YXRlLnN0YXJ0ZWQpewogICAgICB2YXIgYmFyMCA9IGVsKCdkaXYnLCAnY2xwLWJhcicpOwogICAgICBiYXIwLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1iYXItdGl0bGUnLCBURVNUX0RBVEEudGVzdExhYmVsICsgJyBcdTIwMTMgTGlzdGVuaW5nIFRlc3QnKSk7CiAgICAgIGNhdC5hcHBlbmRDaGlsZChiYXIwKTsKICAgICAgdmFyIGlkbGUgPSBlbCgnZGl2JywgJ2NscC1pZGxlJyk7CiAgICAgIHZhciBwID0gZWwoJ3AnLCAnJywgJ1ByZXNzIFx1MjAxQ1N0YXJ0IHRlc3RcdTIwMUQgYWJvdmUgdG8gYmVnaW4uIFRoZSB0ZXN0IGhhcyA2IHBhcnRzIGFuZCAzOCBxdWVzdGlvbnMsIGFuZCBldmVyeSByZWNvcmRpbmcgYW5kIHZpZGVvIHBsYXlzIG9ubHkgb25jZSBcdTIwMTQganVzdCBsaWtlIHRoZSByZWFsIGNvbXB1dGVyLWRlbGl2ZXJlZCB0ZXN0LicpOwogICAgICBpZGxlLmFwcGVuZENoaWxkKHApOwogICAgICBjYXQuYXBwZW5kQ2hpbGQoaWRsZSk7CiAgICAgIHJlbmRlckRvdHMoKTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhciBpc1EgPSBzY3IudHlwZSA9PT0gJ3EnOwogICAgaWYgKGlzUSl7CiAgICAgIHZhciBzZWMgPSBURVNUX0RBVEEucGFydHNbc2NyLnBpXS5zZWN0aW9uc1tzY3Iuc2ldOwogICAgICBxUmVtYWluaW5nID0gc2VjLnRpbWVNaW51dGVzICogNjA7CiAgICB9CiAgICB2YXIgdGl0bGUgPSBzY3IudHlwZSA9PT0gJ2ZpbmlzaCcKICAgICAgPyBURVNUX0RBVEEudGVzdExhYmVsICsgJyBcdTIwMTMgTGlzdGVuaW5nIFRlc3QnCiAgICAgIDogVEVTVF9EQVRBLnBhcnRzW3Njci5waV0uaGVhZGVyVGl0bGU7CiAgICBjYXQuYXBwZW5kQ2hpbGQobWFrZUJhcih0aXRsZSwgaXNRKSk7CgogICAgdmFyIHNjcmVlbiA9IGVsKCdkaXYnLCAnY2xwLXNjcmVlbicpOwogICAgaWYgKHNjci50eXBlID09PSAnaW50cm8nKSByZW5kZXJJbnRybyhzY3IsIHNjcmVlbik7CiAgICBlbHNlIGlmIChzY3IudHlwZSA9PT0gJ21lZGlhJykgcmVuZGVyTWVkaWEoc2NyLCBzY3JlZW4pOwogICAgZWxzZSBpZiAoc2NyLnR5cGUgPT09ICdxJykgcmVuZGVyUXVlc3Rpb25zKHNjciwgc2NyZWVuKTsKICAgIGVsc2UgcmVuZGVyRmluaXNoKHNjcmVlbik7CiAgICBjYXQuYXBwZW5kQ2hpbGQoc2NyZWVuKTsKICAgIHJlbmRlckRvdHMoKTsKICB9CgogIC8qIC0tLS0tLS0tLS0gcmVzdWx0cyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gY2hlY2tBbnN3ZXJzKCl7CiAgICBpZiAoc3RhdGUuY2hlY2tlZCkgcmV0dXJuOwogICAgc3RhdGUuY2hlY2tlZCA9IHRydWU7CiAgICB2YXIgc2NvcmUgPSBjb21wdXRlU2NvcmUoKTsKICAgIHVwZGF0ZVNjb3JlQ2hpcCgpOwogICAgcmVuZGVyKCk7CiAgICByZW5kZXJSZXN1bHRzKHNjb3JlKTsKICAgIHJlc3VsdHNFbC5oaWRkZW4gPSBmYWxzZTsKICAgIHNjcm9sbFRvRWwocmVzdWx0c0VsKTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlclJlc3VsdHMoc2NvcmUpewogICAgcmVzdWx0c0VsLmlubmVySFRNTCA9ICcnOwogICAgcmVzdWx0c0VsLmFwcGVuZENoaWxkKGVsKCdoMicsICcnLCAnWW91ciByZXN1bHRzJykpOwogICAgdmFyIGdyaWQgPSBlbCgnZGl2JywgJ2NscC1yZXMtZ3JpZCcpOwoKICAgIC8qIHJpbmcgY2FyZCAqLwogICAgdmFyIHJpbmdDYXJkID0gZWwoJ2RpdicsICdjbHAtY2FyZCBjbHAtcmluZy1jYXJkIGNscC1yZXYnKTsKICAgIHZhciB3cmFwID0gZWwoJ2RpdicsICdjbHAtcmluZy13cmFwJyk7CiAgICB2YXIgUiA9IDU2LCBDID0gMiAqIE1hdGguUEkgKiBSOwogICAgd3JhcC5pbm5lckhUTUwgPQogICAgICAnPHN2ZyB3aWR0aD0iMTMyIiBoZWlnaHQ9IjEzMiIgdmlld0JveD0iMCAwIDEzMiAxMzIiPicgKwogICAgICAnPGNpcmNsZSBjeD0iNjYiIGN5PSI2NiIgcj0iJyArIFIgKyAnIiBzdHJva2U9IiNFMkU4RjAiIHN0cm9rZS13aWR0aD0iMTEiIGZpbGw9Im5vbmUiLz4nICsKICAgICAgJzxjaXJjbGUgaWQ9ImNscFJpbmciIGN4PSI2NiIgY3k9IjY2IiByPSInICsgUiArICciIHN0cm9rZT0iIzEwQjk4MSIgc3Ryb2tlLXdpZHRoPSIxMSIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAnICsKICAgICAgJ3N0cm9rZS1kYXNoYXJyYXk9IicgKyBDICsgJyIgc3Ryb2tlLWRhc2hvZmZzZXQ9IicgKyBDICsgJyIvPjwvc3ZnPic7CiAgICB2YXIgbnVtID0gZWwoJ2RpdicsICdjbHAtcmluZy1udW0nKTsKICAgIHZhciBiaWcgPSBlbCgnYicsICcnLCAnMCcpOwogICAgbnVtLmFwcGVuZENoaWxkKGJpZyk7CiAgICBudW0uYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnJywgJ291dCBvZiAnICsgVE9UQUxfUSkpOwogICAgd3JhcC5hcHBlbmRDaGlsZChudW0pOwogICAgcmluZ0NhcmQuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICByaW5nQ2FyZC5hcHBlbmRDaGlsZChlbCgnaDMnLCAnJywgJ1RvdGFsIHNjb3JlJykpOwogICAgZ3JpZC5hcHBlbmRDaGlsZChyaW5nQ2FyZCk7CgogICAgLyogYnJlYWtkb3duIGNhcmQgKi8KICAgIHZhciBiZCA9IGVsKCdkaXYnLCAnY2xwLWNhcmQgY2xwLXJldicpOwogICAgYmQuYXBwZW5kQ2hpbGQoZWwoJ2gzJywgJycsICdQYXJ0LWJ5LXBhcnQgYnJlYWtkb3duJykpOwogICAgdmFyIGNoaXBzID0gZWwoJ2RpdicsICdjbHAtcGFydC1jaGlwcycpOwogICAgc2NvcmUucGVyUGFydC5mb3JFYWNoKGZ1bmN0aW9uKHBwLCBwaSl7CiAgICAgIHZhciBjID0gZWwoJ3NwYW4nLCAnY2xwLXBhcnQtY2hpcCcpOwogICAgICBjLmlubmVySFRNTCA9ICdQJyArIChwaSArIDEpICsgJyA8Yj4nICsgcHAuY29ycmVjdCArICcvJyArIHBwLnRvdGFsICsgJzwvYj4nOwogICAgICBjaGlwcy5hcHBlbmRDaGlsZChjKTsKICAgIH0pOwogICAgYmQuYXBwZW5kQ2hpbGQoY2hpcHMpOwoKICAgIHZhciBlc3QgPSBjbGJFc3RpbWF0ZShzY29yZS50b3RhbCk7CiAgICB2YXIgY2xiID0gZWwoJ2RpdicsICdjbHAtY2xiLXJvdycpOwogICAgY2xiLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1jbGItYmFkZ2UnLCBlc3QubGV2ZWwpKTsKICAgIGNsYi5hcHBlbmRDaGlsZChlbCgncCcsICcnLCBlc3Qubm90ZSArICcgXHUyMDE0IGVzdGltYXRlZCBmcm9tIGEgcmF3IHNjb3JlIG9mICcgKyBzY29yZS50b3RhbCArICcvJyArIFRPVEFMX1EgKyAnLiBUT0RPOiBwbGFjZWhvbGRlciBtYXBwaW5nIFx1MjAxNCB2ZXJpZnkgYWdhaW5zdCB0aGUgb2ZmaWNpYWwgQ0VMUElQIHNjb3JlIGNoYXJ0LicpKTsKICAgIGJkLmFwcGVuZENoaWxkKGNsYik7CiAgICBncmlkLmFwcGVuZENoaWxkKGJkKTsKICAgIHJlc3VsdHNFbC5hcHBlbmRDaGlsZChncmlkKTsKCiAgICAvKiB0cmFuc2NyaXB0cyAqLwogICAgdmFyIHRyV3JhcCA9IGVsKCdkaXYnLCAnY2xwLXRyYW5zY3JpcHRzJyk7CiAgICBURVNUX0RBVEEucGFydHMuZm9yRWFjaChmdW5jdGlvbihwYXJ0LCBwaSl7CiAgICAgIHZhciBjYXJkID0gZWwoJ2RpdicsICdjbHAtdHItY2FyZCBjbHAtcmV2Jyk7CiAgICAgIHZhciBoZWFkID0gZWwoJ2J1dHRvbicsICdjbHAtdHItaGVhZCcpOwogICAgICBoZWFkLnR5cGUgPSAnYnV0dG9uJzsKICAgICAgaGVhZC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICcnLCAnVHJhbnNjcmlwdCBcdTIwMTQgJyArIHBhcnQubmFtZSkpOwogICAgICBoZWFkLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC10ci1jYXJldCcsICdcdTI1QkMnKSk7CiAgICAgIGhlYWQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpeyBjYXJkLmNsYXNzTGlzdC50b2dnbGUoJ2NscC1vcGVuJyk7IH0pOwogICAgICB2YXIgYm9keSA9IGVsKCdkaXYnLCAnY2xwLXRyLWJvZHknKTsKICAgICAgYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShwYXJ0LnRyYW5zY3JpcHQpKTsKICAgICAgaWYgKHBhcnQudHJhbnNjcmlwdFRvZG8pewogICAgICAgIGJvZHkuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLXRyLXRvZG8nLCAnVE9ETzogcmVwbGFjZSB0aGlzIHN1bW1hcnkgd2l0aCB0aGUgZnVsbCBvZmZpY2lhbCB0cmFuc2NyaXB0LicpKTsKICAgICAgfQogICAgICBjYXJkLmFwcGVuZENoaWxkKGhlYWQpOwogICAgICBjYXJkLmFwcGVuZENoaWxkKGJvZHkpOwogICAgICB0cldyYXAuYXBwZW5kQ2hpbGQoY2FyZCk7CiAgICB9KTsKICAgIHJlc3VsdHNFbC5hcHBlbmRDaGlsZCh0cldyYXApOwoKICAgIC8qIHJldmVhbCArIGNvdW50LXVwICovCiAgICB2YXIgcmV2RWxzID0gcmVzdWx0c0VsLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jbHAtcmV2Jyk7CiAgICBpZiAoJ0ludGVyc2VjdGlvbk9ic2VydmVyJyBpbiB3aW5kb3cgJiYgIXJlZHVjZWRNb3Rpb24pewogICAgICB2YXIgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oZW50cmllcyl7CiAgICAgICAgZW50cmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVuKXsKICAgICAgICAgIGlmIChlbi5pc0ludGVyc2VjdGluZyl7IGVuLnRhcmdldC5jbGFzc0xpc3QuYWRkKCdjbHAtaW4nKTsgaW8udW5vYnNlcnZlKGVuLnRhcmdldCk7IH0KICAgICAgICB9KTsKICAgICAgfSwgeyB0aHJlc2hvbGQ6IDAuMTUgfSk7CiAgICAgIHJldkVscy5mb3JFYWNoKGZ1bmN0aW9uKGUpeyBpby5vYnNlcnZlKGUpOyB9KTsKICAgIH0gZWxzZSB7CiAgICAgIHJldkVscy5mb3JFYWNoKGZ1bmN0aW9uKGUpeyBlLmNsYXNzTGlzdC5hZGQoJ2NscC1pbicpOyB9KTsKICAgIH0KCiAgICB2YXIgcmluZyA9IHJlc3VsdHNFbC5xdWVyeVNlbGVjdG9yKCcjY2xwUmluZycpOwogICAgdmFyIHRhcmdldCA9IHNjb3JlLnRvdGFsOwogICAgaWYgKHJlZHVjZWRNb3Rpb24pewogICAgICBiaWcudGV4dENvbnRlbnQgPSB0YXJnZXQ7CiAgICAgIHJpbmcuc3R5bGUuc3Ryb2tlRGFzaG9mZnNldCA9IEMgKiAoMSAtIHRhcmdldCAvIFRPVEFMX1EpOwogICAgfSBlbHNlIHsKICAgICAgdmFyIHQwID0gbnVsbCwgRFVSID0gMTEwMDsKICAgICAgZnVuY3Rpb24gc3RlcCh0cyl7CiAgICAgICAgaWYgKCF0MCkgdDAgPSB0czsKICAgICAgICB2YXIgcCA9IE1hdGgubWluKDEsICh0cyAtIHQwKSAvIERVUik7CiAgICAgICAgdmFyIGVhc2UgPSAxIC0gTWF0aC5wb3coMSAtIHAsIDMpOwogICAgICAgIGJpZy50ZXh0Q29udGVudCA9IE1hdGgucm91bmQoZWFzZSAqIHRhcmdldCk7CiAgICAgICAgcmluZy5zdHlsZS5zdHJva2VEYXNob2Zmc2V0ID0gQyAqICgxIC0gKGVhc2UgKiB0YXJnZXQpIC8gVE9UQUxfUSk7CiAgICAgICAgaWYgKHAgPCAxKSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RlcCk7CiAgICAgIH0KICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApOwogICAgfQogIH0KCiAgLyogLS0tLS0tLS0tLSB0b29sYmFyIC8gY29udHJvbHMgLS0tLS0tLS0tLSAqLwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBTdGFydCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIHN0YXRlLnN0YXJ0ZWQgPSB0cnVlOwogICAgc3RhdGUuaWR4ID0gMDsKICAgIHRvb2xiYXIuaGlkZGVuID0gZmFsc2U7CiAgICByZW5kZXIoKTsKICAgIHVwZGF0ZVNjb3JlQ2hpcCgpOwogICAgc2Nyb2xsVG9FbChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwU2ltJykpOwogIH0pOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBDaGVjaycpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIGlmICghc3RhdGUuc3RhcnRlZCkgcmV0dXJuOwogICAgY2hlY2tBbnN3ZXJzKCk7CiAgfSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFJlc2V0JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgc3RhdGUuc3RhcnRlZCA9IGZhbHNlOwogICAgc3RhdGUuaWR4ID0gMDsKICAgIHN0YXRlLmFuc3dlcnMgPSB7fTsKICAgIHN0YXRlLmNoZWNrZWQgPSBmYWxzZTsKICAgIHJlc3VsdHNFbC5oaWRkZW4gPSB0cnVlOwogICAgcmVzdWx0c0VsLmlubmVySFRNTCA9ICcnOwogICAgdG9vbGJhci5oaWRkZW4gPSB0cnVlOwogICAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgICByZW5kZXIoKTsKICAgIHNjcm9sbFRvRWwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscEFwcCcpLCAyMCk7CiAgfSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFRpbWVyVG9nZ2xlJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgc3RhdGUudGltZXJPbiA9ICFzdGF0ZS50aW1lck9uOwogICAgdGhpcy50ZXh0Q29udGVudCA9ICdUaW1lcjogJyArIChzdGF0ZS50aW1lck9uID8gJ29uJyA6ICdvZmYnKTsKICAgIHZhciB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFFUaW1lcicpOwogICAgaWYgKCFzdGF0ZS50aW1lck9uKXsKICAgICAgaWYgKHFUaW1lcil7IGNsZWFySW50ZXJ2YWwocVRpbWVyKTsgcVRpbWVyID0gbnVsbDsgfQogICAgICBpZiAodCkgdC5yZW1vdmUoKTsKICAgIH0gZWxzZSBpZiAoc2NyZWVuc1tzdGF0ZS5pZHhdICYmIHNjcmVlbnNbc3RhdGUuaWR4XS50eXBlID09PSAncScpewogICAgICByZW5kZXIoKTsKICAgIH0KICB9KTsKCiAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgcmVuZGVyKCk7Cn0pKCk7Cg=='));<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Listening Set 10 Practice Test 2: 6-part computer-delivered listening test in the real exam format, with audio, instant scoring and answer key. Free, no sign-up.<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-with-title","meta":{"footnotes":""},"class_list":["post-6126","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6126","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/comments?post=6126"}],"version-history":[{"count":1,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6126\/revisions"}],"predecessor-version":[{"id":6599,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6126\/revisions\/6599"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6126"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}