{"id":6174,"date":"2026-07-06T05:47:45","date_gmt":"2026-07-06T05:47:45","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-12-test-2-listening\/"},"modified":"2026-07-12T03:25:05","modified_gmt":"2026-07-12T03:25:05","slug":"celpip-set-12-test-2-listening","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-12-test-2-listening\/","title":{"rendered":"CELPIP Set 12 \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 12 &#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('dmFyIENMUF9BVURJTz17IjAuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczEydDItcDFzMS5tcDMiLCIwLjEiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvY2VscGlwLXMxMnQyLXAxczIubXAzIiwiMC4yIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L2NlbHBpcC1zMTJ0Mi1wMXMzLm1wMyIsIjEuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczEydDItcDIubXAzIiwiMi4wIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L2NlbHBpcC1zMTJ0Mi1wMy5tcDMiLCIzLjAiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvY2VscGlwLXMxMnQyLXA0Lm1wMyIsIjUuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczEydDItcDYubXAzIiwiNC4wIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L2NlbHBpcC1zMTJ0Mi1wNS5tcDQifTt2YXIgQ0xQX0FVRElPX1ZJREVPPXsiNC4wIjoxfTsKCihmdW5jdGlvbigpe3ZhciBzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7cy50ZXh0Q29udGVudD0iXG4vKiA9PT09PT09PT09PT0gQ0VMUElQIExpc3RlbmluZyBQcmFjdGljZSBcdTIwMTQgc2NvcGVkLCBXb3JkUHJlc3Mtc2FmZSA9PT09PT09PT09PT0gKi9cbi5jbHAtd3JhcHtcbiAgLyogVkFSSUFOVF9DSFJPTUVfU1RBUlQgKi9cbiAgLS1iYXItYmc6I0U4RUJFRjtcbiAgLS1iYXItYm9yZGVyOiNEM0Q5RTA7XG4gIC0tYmFyLXRleHQ6IzFGMjkzNztcbiAgLS1wYW5lbC1tZWRpYS1iZzojRjRGNUY3O1xuICAtLXBhbmVsLW1lZGlhLWJvcmRlcjojRTNFNkVBO1xuICAtLW1lZGlhLWNhcmQtYmc6I0VDRUVGMTtcbiAgLS1tZWRpYS1jYXJkLWJvcmRlcjojRDhEREUzO1xuICAtLXBhbmVsLXEtYmc6I0U5RjRGNztcbiAgLS1wYW5lbC1xLWJvcmRlcjojRDZFOEVEO1xuICAtLWRkLW9wZW4tYmc6I0NCRUJGNDtcbiAgLyogVkFSSUFOVF9DSFJPTUVfRU5EICovXG4gIC0tbmF2eTojMDUwRTIwOyAtLWRhcms6IzBBMTYyODsgLS1iOTAwOiMwRDIzNTI7IC0tYjcwMDojMTI0NUE4OyAtLWI1MDA6IzI1NjNFQjtcbiAgLS1iNDAwOiMzQjgyRjY7IC0tYjIwMDojOTNDNUZEOyAtLWIxMDA6I0RCRUFGRTsgLS1iNTA6I0VGRjZGRjtcbiAgLS10ZWFsOiMwRDk0ODg7IC0tY3lhbjojMDZCNkQ0OyAtLWdyZWVuOiMxMEI5ODE7IC0tZ3JlZW41MDojRUNGREY1O1xuICAtLXJvc2U6I0Y0M0Y1RTsgLS1vcmFuZ2U6I0Y5NzMxNjtcbiAgLS10ZXh0OiMwRjE3MkE7IC0tbXV0ZWQ6IzQ3NTU2OTsgLS1zdWJ0bGU6Izk0QTNCODsgLS1ib3JkZXI6I0UyRThGMDtcbiAgLS1jcmltc29uOiNCNDJCM0M7IC0td2hpdGU6I0ZGRkZGRjsgLS1wYWdlOiNGOEZBRkY7XG4gIGZvbnQtZmFtaWx5OidQbHVzIEpha2FydGEgU2Fucycsc3lzdGVtLXVpLC1hcHBsZS1zeXN0ZW0sc2Fucy1zZXJpZjtcbiAgY29sb3I6dmFyKC0tdGV4dCk7XG4gIG1heC13aWR0aDoxMTQwcHg7IG1hcmdpbjowIGF1dG87IHBhZGRpbmc6MTZweCAxNnB4IDQ4cHg7XG4gIGxpbmUtaGVpZ2h0OjEuNTsgZm9udC1zaXplOjE2cHg7XG59XG4uY2xwLXdyYXAgKiwgLmNscC13cmFwICo6OmJlZm9yZSwgLmNscC13cmFwICo6OmFmdGVyeyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH1cbi5jbHAtd3JhcCBidXR0b257IGZvbnQtZmFtaWx5OmluaGVyaXQ7IGN1cnNvcjpwb2ludGVyOyB9XG4uY2xwLXdyYXAgaDEsLmNscC13cmFwIGgyLC5jbHAtd3JhcCBoMywuY2xwLXdyYXAgcHsgbWFyZ2luOjA7IH1cblxuLyogPT09PT09PT09PT09IEhFUk8gPT09PT09PT09PT09ICovXG4uY2xwLWhlcm97XG4gIHBvc2l0aW9uOnJlbGF0aXZlOyBvdmVyZmxvdzpoaWRkZW47IGJvcmRlci1yYWRpdXM6MjJweDtcbiAgYmFja2dyb3VuZDp2YXIoLS1uYXZ5KTsgY29sb3I6I2ZmZjtcbiAgcGFkZGluZzozNnB4IDQwcHg7XG4gIGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBnYXA6MTRweDsgYWxpZ24taXRlbXM6ZmxleC1zdGFydDtcbiAgYm94LXNoYWRvdzowIDIwcHggNDBweCAtMjBweCByZ2JhKDUsMTQsMzIsLjQ1KSwgMCA0cHggMTJweCAtNnB4IHJnYmEoNSwxNCwzMiwuMyk7XG59XG4uY2xwLWF1cm9yYXsgcG9zaXRpb246YWJzb2x1dGU7IGluc2V0OjA7IHBvaW50ZXItZXZlbnRzOm5vbmU7IH1cbi5jbHAtYXVyb3JhIHNwYW57XG4gIHBvc2l0aW9uOmFic29sdXRlOyBib3JkZXItcmFkaXVzOjUwJTsgZmlsdGVyOmJsdXIoNjBweCk7IG9wYWNpdHk6LjU7XG4gIGFuaW1hdGlvbjpjbHBGbG9hdCAxNHMgZWFzZS1pbi1vdXQgaW5maW5pdGUgYWx0ZXJuYXRlO1xufVxuLmNscC1hdXJvcmEgc3BhbjpudGgtY2hpbGQoMSl7IHdpZHRoOjQyMHB4OyBoZWlnaHQ6NDIwcHg7IGxlZnQ6LTEyMHB4OyB0b3A6LTIwMHB4OyBiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzEyNDVBOCAwJSx0cmFuc3BhcmVudCA3MCUpOyB9XG4uY2xwLWF1cm9yYSBzcGFuOm50aC1jaGlsZCgyKXsgd2lkdGg6MzgwcHg7IGhlaWdodDozODBweDsgcmlnaHQ6LTgwcHg7IHRvcDotMTYwcHg7IGJhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSwjMEQ5NDg4IDAlLHRyYW5zcGFyZW50IDcwJSk7IGFuaW1hdGlvbi1kZWxheTotNHM7IH1cbi5jbHAtYXVyb3JhIHNwYW46bnRoLWNoaWxkKDMpeyB3aWR0aDozNDBweDsgaGVpZ2h0OjM0MHB4OyByaWdodDoyMiU7IGJvdHRvbTotMjQwcHg7IGJhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSwjMjU2M0VCIDAlLHRyYW5zcGFyZW50IDcwJSk7IGFuaW1hdGlvbi1kZWxheTotOHM7IH1cbkBrZXlmcmFtZXMgY2xwRmxvYXR7XG4gIGZyb217IHRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCkgc2NhbGUoMSk7IH1cbiAgdG97IHRyYW5zZm9ybTp0cmFuc2xhdGUzZCg0MHB4LDI2cHgsMCkgc2NhbGUoMS4xMik7IH1cbn1cbi5jbHAtaGVyby1zaGltbWVye1xuICBwb3NpdGlvbjphYnNvbHV0ZTsgaW5zZXQ6MDsgcG9pbnRlci1ldmVudHM6bm9uZTtcbiAgYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTE1ZGVnLCB0cmFuc3BhcmVudCAzMCUsIHJnYmEoMTQ3LDE5NywyNTMsLjEwKSA0NSUsIHJnYmEoNiwxODIsMjEyLC4xMikgNTAlLCB0cmFuc3BhcmVudCA2NSUpO1xuICBiYWNrZ3JvdW5kLXNpemU6MjUwJSAxMDAlO1xuICBhbmltYXRpb246Y2xwU2hpbW1lciA3cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgY2xwU2hpbW1lcnsgMCV7YmFja2dyb3VuZC1wb3NpdGlvbjoxMjAlIDA7fSA1NSV7YmFja2dyb3VuZC1wb3NpdGlvbjotNDAlIDA7fSAxMDAle2JhY2tncm91bmQtcG9zaXRpb246LTQwJSAwO30gfVxuLmNscC1oZXJvLWJhZGdlc3sgZGlzcGxheTpmbGV4OyBnYXA6MTBweDsgYWxpZ24taXRlbXM6Y2VudGVyOyBmbGV4LXdyYXA6d3JhcDsgcG9zaXRpb246cmVsYXRpdmU7IH1cbi5jbHAtYmFkZ2UtYnJhbmR7XG4gIGJhY2tncm91bmQ6dmFyKC0tY3JpbXNvbik7IGNvbG9yOiNmZmY7IGZvbnQtd2VpZ2h0OjgwMDsgZm9udC1zaXplOjEycHg7XG4gIGxldHRlci1zcGFjaW5nOi4xMmVtOyBwYWRkaW5nOjVweCAxMnB4OyBib3JkZXItcmFkaXVzOjZweDtcbn1cbi5jbHAtYmFkZ2Utc2V0eyBjb2xvcjp2YXIoLS1iMjAwKTsgZm9udC1zaXplOjEzcHg7IGZvbnQtd2VpZ2h0OjYwMDsgfVxuLmNscC1oZXJvIGgxeyBwb3NpdGlvbjpyZWxhdGl2ZTsgZm9udC1zaXplOmNsYW1wKDI2cHgsNHZ3LDQwcHgpOyBmb250LXdlaWdodDo4MDA7IGxldHRlci1zcGFjaW5nOi0uMDJlbTsgbGluZS1oZWlnaHQ6MS4xMjsgfVxuLmNscC1oZXJvLWNoaXBzeyBkaXNwbGF5OmZsZXg7IGdhcDo4cHg7IGZsZXgtd3JhcDp3cmFwOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfVxuLmNscC1jaGlwe1xuICBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjA5KTsgYm9yZGVyOjFweCBzb2xpZCByZ2JhKDE0NywxOTcsMjUzLC4yNSk7XG4gIGNvbG9yOiNEQkVBRkU7IGZvbnQtc2l6ZToxM3B4OyBmb250LXdlaWdodDo2MDA7IHBhZGRpbmc6NnB4IDE0cHg7IGJvcmRlci1yYWRpdXM6MzJweDtcbiAgYmFja2Ryb3AtZmlsdGVyOmJsdXIoNHB4KTsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjI1cyBlYXNlLCBiYWNrZ3JvdW5kIC4yNXMgZWFzZTtcbn1cbi5jbHAtY2hpcDpob3ZlcnsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7IGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMTUpOyB9XG4uY2xwLWN0YXtcbiAgcG9zaXRpb246cmVsYXRpdmU7IGJhY2tncm91bmQ6dmFyKC0tYjUwMCk7IGNvbG9yOiNmZmY7IGJvcmRlcjpub25lOyBib3JkZXItcmFkaXVzOjEwcHg7XG4gIGZvbnQtc2l6ZToxNnB4OyBmb250LXdlaWdodDo3MDA7IHBhZGRpbmc6MTNweCAzNHB4OyBtYXJnaW4tdG9wOjJweDtcbiAgYm94LXNoYWRvdzowIDEwcHggMjJweCAtOHB4IHJnYmEoMzcsOTksMjM1LC42NSk7XG4gIHRyYW5zaXRpb246dHJhbnNmb3JtIC4yMnMgZWFzZSwgYm94LXNoYWRvdyAuMjJzIGVhc2UsIGJhY2tncm91bmQgLjIycyBlYXNlO1xufVxuLmNscC1jdGE6aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpOyBiYWNrZ3JvdW5kOnZhcigtLWI0MDApOyBib3gtc2hhZG93OjAgMTRweCAyNnB4IC04cHggcmdiYSgzNyw5OSwyMzUsLjc1KTsgfVxuXG4vKiA9PT09PT09PT09PT0gU1RJQ0tZIFRPT0xCQVIgPT09PT09PT09PT09ICovXG4uY2xwLXRvb2xiYXJbaGlkZGVuXXsgZGlzcGxheTpub25lOyB9XG4uY2xwLXRvb2xiYXJ7XG4gIHBvc2l0aW9uOnN0aWNreTsgdG9wOjhweDsgei1pbmRleDo2MDtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxMHB4OyBmbGV4LXdyYXA6d3JhcDtcbiAgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC45Mik7IGJhY2tkcm9wLWZpbHRlcjpibHVyKDhweCk7XG4gIGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxNnB4O1xuICBwYWRkaW5nOjhweCAxMnB4OyBtYXJnaW46MThweCAwIDA7XG4gIGJveC1zaGFkb3c6MCA4cHggMjRweCAtMTRweCByZ2JhKDE1LDIzLDQyLC4yNSksIDAgMnB4IDZweCAtNHB4IHJnYmEoMTUsMjMsNDIsLjEyKTtcbiAgbWluLWhlaWdodDo1MnB4O1xufVxuLmNscC1zY29yZS1jaGlwe1xuICBmb250LXdlaWdodDo4MDA7IGZvbnQtc2l6ZToxNHB4OyBjb2xvcjp2YXIoLS1iOTAwKTtcbiAgYmFja2dyb3VuZDp2YXIoLS1iNTApOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWIxMDApOyBib3JkZXItcmFkaXVzOjMycHg7IHBhZGRpbmc6N3B4IDE2cHg7XG59XG4uY2xwLXRidG57XG4gIGJvcmRlci1yYWRpdXM6MTBweDsgZm9udC1zaXplOjEzcHg7IGZvbnQtd2VpZ2h0OjcwMDsgcGFkZGluZzo5cHggMTZweDtcbiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBiYWNrZ3JvdW5kOiNmZmY7IGNvbG9yOnZhcigtLW11dGVkKTtcbiAgbWluLWhlaWdodDo0MHB4OyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnMgZWFzZSwgYm94LXNoYWRvdyAuMnMgZWFzZSwgYmFja2dyb3VuZCAuMnMgZWFzZTtcbn1cbi5jbHAtdGJ0bjpob3ZlcnsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTFweCk7IGJveC1zaGFkb3c6MCA2cHggMTRweCAtOHB4IHJnYmEoMTUsMjMsNDIsLjMpOyB9XG4uY2xwLXRidG4tY2hlY2t7IGJhY2tncm91bmQ6dmFyKC0tZ3JlZW4pOyBib3JkZXItY29sb3I6dmFyKC0tZ3JlZW4pOyBjb2xvcjojZmZmOyB9XG4uY2xwLXRidG4tY2hlY2s6aG92ZXJ7IGJhY2tncm91bmQ6IzBjYTY3ODsgfVxuLmNscC10YnRuW2Rpc2FibGVkXXsgb3BhY2l0eTouNTsgY3Vyc29yOm5vdC1hbGxvd2VkOyB0cmFuc2Zvcm06bm9uZTsgYm94LXNoYWRvdzpub25lOyB9XG4uY2xwLXRvb2xiYXItc3BhY2VyeyBmbGV4OjE7IH1cblxuLyogPT09PT09PT09PT09IENBVCBTSU1VTEFUT1IgPT09PT09PT09PT09ICovXG4uY2xwLXNpbXsgbWFyZ2luLXRvcDoxOHB4OyB9XG4uY2xwLWRvdHN7IGRpc3BsYXk6ZmxleDsgZ2FwOjZweDsgbWFyZ2luOjAgMCAxMHB4IDJweDsgfVxuLmNscC1kb3R7XG4gIGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYmFja2dyb3VuZDojZmZmOyBjb2xvcjp2YXIoLS1zdWJ0bGUpO1xuICBmb250LXNpemU6MTFweDsgZm9udC13ZWlnaHQ6NzAwOyBib3JkZXItcmFkaXVzOjMycHg7IHBhZGRpbmc6NHB4IDEwcHg7XG4gIHRyYW5zaXRpb246YmFja2dyb3VuZCAuMjVzIGVhc2UsIGNvbG9yIC4yNXMgZWFzZTtcbn1cbi5jbHAtZG90LmNscC1kb25leyBiYWNrZ3JvdW5kOnZhcigtLWIxMDApOyBib3JkZXItY29sb3I6dmFyKC0tYjIwMCk7IGNvbG9yOnZhcigtLWI5MDApOyB9XG4uY2xwLWRvdC5jbHAtY3VyeyBiYWNrZ3JvdW5kOnZhcigtLWI1MDApOyBib3JkZXItY29sb3I6dmFyKC0tYjUwMCk7IGNvbG9yOiNmZmY7IH1cbi5jbHAtZG90LmNscC1jbGlja2FibGV7IGN1cnNvcjpwb2ludGVyOyB9XG4uY2xwLWRvdDpub3QoLmNscC1jbGlja2FibGUpeyBjdXJzb3I6ZGVmYXVsdDsgfVxuXG4uY2xwLWNhdHtcbiAgcG9zaXRpb246cmVsYXRpdmU7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYmFyLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTBweDsgb3ZlcmZsb3c6dmlzaWJsZTtcbiAgYmFja2dyb3VuZDojZmZmO1xuICBib3gtc2hhZG93OjAgMTBweCAzMHB4IC0xOHB4IHJnYmEoMTUsMjMsNDIsLjIyKSwgMCAycHggOHB4IC01cHggcmdiYSgxNSwyMyw0MiwuMSk7XG59XG4uY2xwLWJhcntcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxMnB4O1xuICBiYWNrZ3JvdW5kOnZhcigtLWJhci1iZyk7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWJhci1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOjEwcHggMTBweCAwIDA7XG4gIHBhZGRpbmc6OXB4IDEycHg7IG1pbi1oZWlnaHQ6NDRweDtcbn1cbi5jbHAtYmFyLXRpdGxleyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjp2YXIoLS1iYXItdGV4dCk7IGZsZXg6MTsgbWluLXdpZHRoOjA7IH1cbi5jbHAtYmFyLXRpbWVyeyBmb250LXNpemU6MTJweDsgY29sb3I6dmFyKC0tYmFyLXRleHQpOyB3aGl0ZS1zcGFjZTpub3dyYXA7IH1cbi5jbHAtYmFyLXRpbWVyIGJ7IGZvbnQtd2VpZ2h0OjgwMDsgfVxuLmNscC1uZXh0e1xuICBiYWNrZ3JvdW5kOnZhcigtLWI3MDApOyBjb2xvcjojZmZmOyBib3JkZXI6bm9uZTsgYm9yZGVyLXJhZGl1czo0cHg7XG4gIGZvbnQtc2l6ZToxMXB4OyBmb250LXdlaWdodDo3MDA7IGxldHRlci1zcGFjaW5nOi4wOGVtOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7XG4gIHBhZGRpbmc6N3B4IDE2cHg7IG1pbi1oZWlnaHQ6MzBweDtcbiAgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4ycyBlYXNlLCB0cmFuc2Zvcm0gLjJzIGVhc2U7XG59XG4uY2xwLW5leHQ6aG92ZXJ7IGJhY2tncm91bmQ6dmFyKC0tYjkwMCk7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xcHgpOyB9XG4uY2xwLXNjcmVlbnsgYm9yZGVyLXJhZGl1czowIDAgMTBweCAxMHB4OyBvdmVyZmxvdzpoaWRkZW47IH1cblxuLmNscC1pbnN0cntcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpmbGV4LXN0YXJ0OyBnYXA6OXB4O1xuICBwYWRkaW5nOjE0cHggMTZweCAxMnB4OyBiYWNrZ3JvdW5kOiNmZmY7XG59XG4uY2xwLWluZm97XG4gIGZsZXg6bm9uZTsgd2lkdGg6MThweDsgaGVpZ2h0OjE4cHg7IG1hcmdpbi10b3A6MnB4OyBib3JkZXItcmFkaXVzOjUwJTtcbiAgYmFja2dyb3VuZDp2YXIoLS1iNTAwKTsgY29sb3I6I2ZmZjsgZm9udC13ZWlnaHQ6ODAwOyBmb250LXNpemU6MTFweDsgZm9udC1zdHlsZTppdGFsaWM7XG4gIGRpc3BsYXk6aW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgZm9udC1mYW1pbHk6R2VvcmdpYSxzZXJpZjtcbn1cbi5jbHAtaW5zdHIgcHsgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjcwMDsgY29sb3I6dmFyKC0tYjkwMCk7IH1cblxuLyogaW50cm8gc2NyZWVuICovXG4uY2xwLWludHJvLWJvZHl7IHBhZGRpbmc6NnB4IDIwcHggMjZweCA0NHB4OyBiYWNrZ3JvdW5kOiNmZmY7IH1cbi5jbHAtaW50cm8tYm9keSBoM3sgZm9udC1zaXplOjE1cHg7IGZvbnQtd2VpZ2h0OjgwMDsgY29sb3I6dmFyKC0tdGV4dCk7IG1hcmdpbi1ib3R0b206MTJweDsgfVxuLmNscC1idWxsZXRzeyBsaXN0LXN0eWxlOm5vbmU7IG1hcmdpbjowOyBwYWRkaW5nOjA7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBnYXA6MTBweDsgbWF4LXdpZHRoOjY0MHB4OyB9XG4uY2xwLWJ1bGxldHMgbGl7XG4gIGRpc3BsYXk6ZmxleDsgZ2FwOjEwcHg7IGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLWI5MDApO1xuICBwYWRkaW5nLWJvdHRvbToxMHB4OyBib3JkZXItYm90dG9tOjFweCBkb3R0ZWQgdmFyKC0tYm9yZGVyKTtcbn1cbi5jbHAtYnVsbGV0cyBsaTo6YmVmb3JleyBjb250ZW50OlwiXCI7IGZsZXg6bm9uZTsgd2lkdGg6OHB4OyBoZWlnaHQ6OHB4OyBib3JkZXItcmFkaXVzOjUwJTsgYmFja2dyb3VuZDp2YXIoLS1iNDAwKTsgbWFyZ2luLXRvcDo2cHg7IH1cblxuLyogbWVkaWEgc2NyZWVuICovXG4uY2xwLW1lZGlhLXBhbmVse1xuICBiYWNrZ3JvdW5kOnZhcigtLXBhbmVsLW1lZGlhLWJnKTsgYm9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tcGFuZWwtbWVkaWEtYm9yZGVyKTtcbiAgcGFkZGluZzozNHB4IDIwcHggMjZweDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjE0cHg7XG59XG4uY2xwLW1lZGlhLWNhcmR7XG4gIHdpZHRoOjEwMCU7IG1heC13aWR0aDo1MjBweDtcbiAgYmFja2dyb3VuZDp2YXIoLS1tZWRpYS1jYXJkLWJnKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1tZWRpYS1jYXJkLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTBweDtcbiAgcGFkZGluZzoyMnB4IDI2cHg7XG59XG4uY2xwLW1lZGlhLWNhcmQuY2xwLWlzLXZpZGVveyBtYXgtd2lkdGg6NjYwcHg7IHBhZGRpbmc6MTJweDsgfVxuLmNscC1tZWRpYS16b25leyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjE4cHg7IH1cbi5jbHAtaXMtdmlkZW8gLmNscC1tZWRpYS16b25le1xuICBhc3BlY3QtcmF0aW86MTYvOTsgd2lkdGg6MTAwJTsgYm9yZGVyLXJhZGl1czo2cHg7IGJhY2tncm91bmQ6dmFyKC0tZGFyayk7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBtYXJnaW4tYm90dG9tOjEycHg7XG4gIGNvbG9yOiNmZmY7XG59XG4uY2xwLXNwZWFrZXJ7XG4gIGZsZXg6bm9uZTsgd2lkdGg6NTZweDsgaGVpZ2h0OjU2cHg7IGJvcmRlci1yYWRpdXM6OHB4OyBiYWNrZ3JvdW5kOiNmZmY7XG4gIGJvcmRlcjoxcHggc29saWQgdmFyKC0tbWVkaWEtY2FyZC1ib3JkZXIpO1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgY29sb3I6dmFyKC0tbXV0ZWQpO1xufVxuLmNscC1pcy12aWRlbyAuY2xwLXNwZWFrZXJ7IGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMTIpOyBib3JkZXI6bm9uZTsgY29sb3I6I2ZmZjsgd2lkdGg6NjRweDsgaGVpZ2h0OjY0cHg7IGJvcmRlci1yYWRpdXM6NTAlOyB9XG4uY2xwLW1lZGlhLW1haW57IGZsZXg6MTsgbWluLXdpZHRoOjA7IH1cbi5jbHAtaXMtdmlkZW8gLmNscC1tZWRpYS1tYWlueyBwYWRkaW5nOjAgMTBweCA0cHg7IH1cbi5jbHAtbWVkaWEtbGFiZWx7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjp2YXIoLS10ZXh0KTsgbWFyZ2luLWJvdHRvbToxMHB4OyB9XG4uY2xwLXByb2dyZXNzeyBoZWlnaHQ6OHB4OyBib3JkZXItcmFkaXVzOjZweDsgYmFja2dyb3VuZDojZmZmOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLW1lZGlhLWNhcmQtYm9yZGVyKTsgb3ZlcmZsb3c6aGlkZGVuOyB9XG4uY2xwLWlzLXZpZGVvIC5jbHAtcHJvZ3Jlc3N7IGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuNik7IH1cbi5jbHAtcHJvZ3Jlc3MtZmlsbHsgaGVpZ2h0OjEwMCU7IHdpZHRoOjAlOyBiYWNrZ3JvdW5kOnZhcigtLWN5YW4pOyBib3JkZXItcmFkaXVzOjZweDsgdHJhbnNpdGlvbjp3aWR0aCAuM3MgbGluZWFyOyB9XG4uY2xwLW1lZGlhLW1ldGF7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTBweDsgZm9udC1zaXplOjEzcHg7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC13ZWlnaHQ6NjAwO1xufVxuLmNscC1tZWRpYS1tZXRhIHN2Z3sgZGlzcGxheTpibG9jazsgfVxuLmNscC1vbmNlLW5vdGV7IGZvbnQtc2l6ZToxMnB4OyBjb2xvcjp2YXIoLS1zdWJ0bGUpOyBmb250LXdlaWdodDo2MDA7IH1cblxuLyogcXVlc3Rpb24gc2NyZWVuICovXG4uY2xwLXEtcGFuZWx7XG4gIGJhY2tncm91bmQ6dmFyKC0tcGFuZWwtcS1iZyk7IGJvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLXBhbmVsLXEtYm9yZGVyKTtcbiAgcGFkZGluZzoyMHB4IDIycHggMzBweDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGdhcDoyMHB4O1xufVxuLmNscC1xeyBmb250LXNpemU6MTUuNXB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLXRleHQpOyBsaW5lLWhlaWdodDoyOyB9XG4uY2xwLXFudW17IGZvbnQtd2VpZ2h0OjcwMDsgfVxuLmNscC1kZHtcbiAgZGlzcGxheTppbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6OHB4O1xuICBib3JkZXI6bm9uZTsgYm9yZGVyLWJvdHRvbToycHggZG90dGVkIHZhcigtLXN1YnRsZSk7IGJhY2tncm91bmQ6dHJhbnNwYXJlbnQ7XG4gIGNvbG9yOnZhcigtLWI3MDApOyBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NjAwO1xuICBwYWRkaW5nOjRweCA4cHggM3B4OyBtYXJnaW46MCAycHg7IG1pbi1oZWlnaHQ6MzJweDsgbWF4LXdpZHRoOjEwMCU7XG4gIGJvcmRlci1yYWRpdXM6NHB4IDRweCAwIDA7IHZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO1xuICB0cmFuc2l0aW9uOmJhY2tncm91bmQgLjJzIGVhc2U7XG59XG4uY2xwLWRkOmhvdmVyeyBiYWNrZ3JvdW5kOnJnYmEoMzcsOTksMjM1LC4wOCk7IH1cbi5jbHAtZGQuY2xwLW9wZW57IGJhY2tncm91bmQ6dmFyKC0tZGQtb3Blbi1iZyk7IH1cbi5jbHAtZGQgLmNscC1kZC10ZXh0e1xuICBvdmVyZmxvdzpoaWRkZW47IHRleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7IHdoaXRlLXNwYWNlOm5vd3JhcDsgbWF4LXdpZHRoOjQyMHB4O1xufVxuLmNscC1kZCAuY2xwLWRkLWNhcmV0eyBmb250LXNpemU6OXB4OyBjb2xvcjp2YXIoLS1iNzAwKTsgZmxleDpub25lOyB9XG4uY2xwLWRkLmNscC11bmFuc3dlcmVkIC5jbHAtZGQtdGV4dHsgbGV0dGVyLXNwYWNpbmc6MnB4OyBjb2xvcjp2YXIoLS1zdWJ0bGUpOyB9XG4uY2xwLWRkLmNscC1tYXJrLXJpZ2h0eyBiYWNrZ3JvdW5kOnZhcigtLWdyZWVuNTApOyBib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdyZWVuKTsgYm9yZGVyLXJhZGl1czo2cHg7IGNvbG9yOiMwNDc4NTc7IH1cbi5jbHAtZGQuY2xwLW1hcmstd3Jvbmd7IGJhY2tncm91bmQ6I0ZGRjFGMjsgYm9yZGVyOjJweCBzb2xpZCB2YXIoLS1yb3NlKTsgYm9yZGVyLXJhZGl1czo2cHg7IGNvbG9yOiNCRTEyM0M7IH1cbi5jbHAtZGRbZGlzYWJsZWRdeyBjdXJzb3I6ZGVmYXVsdDsgfVxuLmNscC1yZXZlYWx7XG4gIGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZToxMy41cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6IzA0Nzg1NzsgbGluZS1oZWlnaHQ6MS41O1xuICBtYXJnaW46MnB4IDAgMCAyNnB4O1xufVxuLmNscC1yZXZlYWwgYnsgZm9udC13ZWlnaHQ6ODAwOyB9XG4uY2xwLXRvZG8tdGFne1xuICBmb250LXNpemU6MTBweDsgZm9udC13ZWlnaHQ6ODAwOyBsZXR0ZXItc3BhY2luZzouMDhlbTsgY29sb3I6dmFyKC0tb3JhbmdlKTtcbiAgYm9yZGVyOjFweCBzb2xpZCBjdXJyZW50Q29sb3I7IGJvcmRlci1yYWRpdXM6NHB4OyBwYWRkaW5nOjFweCA2cHg7IG1hcmdpbi1sZWZ0OjhweDsgdmVydGljYWwtYWxpZ246MnB4O1xufVxuXG4vKiBkcm9wZG93biBwb3B1cCAqL1xuLmNscC1wb3B7XG4gIHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjgwOyB3aWR0aDptaW4oMzQwcHgsIGNhbGMoMTAwdncgLSA0OHB4KSk7XG4gIGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjEwcHg7XG4gIGJveC1zaGFkb3c6MCAxOHB4IDQwcHggLTEycHggcmdiYSgxNSwyMyw0MiwuMjgpLCAwIDRweCAxMnB4IC02cHggcmdiYSgxNSwyMyw0MiwuMTQpO1xuICBwYWRkaW5nOjZweDsgXG59XG4uY2xwLW9wdHtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxMXB4OyB3aWR0aDoxMDAlO1xuICBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50OyBib3JkZXI6bm9uZTsgdGV4dC1hbGlnbjpsZWZ0O1xuICBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjp2YXIoLS10ZXh0KTtcbiAgcGFkZGluZzoxMHB4IDEycHg7IG1pbi1oZWlnaHQ6NDJweDsgYm9yZGVyLXJhZGl1czo2cHg7XG4gIGJvcmRlci1ib3R0b206MXB4IGRvdHRlZCB2YXIoLS1ib3JkZXIpO1xuICB0cmFuc2l0aW9uOmJhY2tncm91bmQgLjE1cyBlYXNlO1xufVxuLmNscC1vcHQ6bGFzdC1jaGlsZHsgYm9yZGVyLWJvdHRvbTpub25lOyB9XG4uY2xwLW9wdDpob3ZlcnsgYmFja2dyb3VuZDp2YXIoLS1iNTApOyB9XG4uY2xwLXJhZGlve1xuICBmbGV4Om5vbmU7IHdpZHRoOjE3cHg7IGhlaWdodDoxN3B4OyBib3JkZXItcmFkaXVzOjUwJTtcbiAgYm9yZGVyOjJweCBzb2xpZCB2YXIoLS1zdWJ0bGUpOyBiYWNrZ3JvdW5kOiNmZmY7IHBvc2l0aW9uOnJlbGF0aXZlO1xufVxuLmNscC1vcHQuY2xwLXNlbCAuY2xwLXJhZGlveyBib3JkZXItY29sb3I6dmFyKC0tYjUwMCk7IH1cbi5jbHAtb3B0LmNscC1zZWwgLmNscC1yYWRpbzo6YWZ0ZXJ7XG4gIGNvbnRlbnQ6XCJcIjsgcG9zaXRpb246YWJzb2x1dGU7IGluc2V0OjIuNXB4OyBib3JkZXItcmFkaXVzOjUwJTsgYmFja2dyb3VuZDp2YXIoLS1iNTAwKTtcbn1cblxuLyogcHJlLXN0YXJ0IC8gZmluaXNoICovXG4uY2xwLWlkbGV7XG4gIHBhZGRpbmc6NTZweCAyNHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgYmFja2dyb3VuZDojZmZmOyBib3JkZXItcmFkaXVzOjAgMCAxMHB4IDEwcHg7XG59XG4uY2xwLWlkbGUgcHsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXNpemU6MTVweDsgZm9udC13ZWlnaHQ6NjAwOyBtYXgtd2lkdGg6NDgwcHg7IG1hcmdpbjowIGF1dG87IH1cbi5jbHAtZmluaXNoeyBwYWRkaW5nOjQ4cHggMjRweCA1NnB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgYmFja2dyb3VuZDojZmZmOyB9XG4uY2xwLWZpbmlzaCBoM3sgZm9udC1zaXplOjIycHg7IGZvbnQtd2VpZ2h0OjgwMDsgbWFyZ2luLWJvdHRvbToxMHB4OyB9XG4uY2xwLWZpbmlzaCBweyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtc2l6ZToxNXB4OyBmb250LXdlaWdodDo2MDA7IG1hcmdpbi1ib3R0b206MjJweDsgfVxuLmNscC1maW5pc2gtY2hlY2t7XG4gIGJhY2tncm91bmQ6dmFyKC0tZ3JlZW4pOyBjb2xvcjojZmZmOyBib3JkZXI6bm9uZTsgYm9yZGVyLXJhZGl1czoxMHB4O1xuICBmb250LXNpemU6MTZweDsgZm9udC13ZWlnaHQ6NzAwOyBwYWRkaW5nOjEzcHggMzJweDsgbWluLWhlaWdodDo0NHB4O1xuICBib3gtc2hhZG93OjAgMTBweCAyMnB4IC04cHggcmdiYSgxNiwxODUsMTI5LC41NSk7XG4gIHRyYW5zaXRpb246dHJhbnNmb3JtIC4ycyBlYXNlLCBiYWNrZ3JvdW5kIC4ycyBlYXNlO1xufVxuLmNscC1maW5pc2gtY2hlY2s6aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpOyBiYWNrZ3JvdW5kOiMwY2E2Nzg7IH1cblxuLyogPT09PT09PT09PT09IFJFU1VMVFMgPT09PT09PT09PT09ICovXG4uY2xwLXJlc3VsdHN7IG1hcmdpbi10b3A6MzBweDsgfVxuLmNscC1yZXN1bHRzIGgyeyBmb250LXNpemU6MjRweDsgZm9udC13ZWlnaHQ6ODAwOyBsZXR0ZXItc3BhY2luZzotLjAxZW07IG1hcmdpbi1ib3R0b206MTZweDsgfVxuLmNscC1yZXMtZ3JpZHsgZGlzcGxheTpncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6YXV0byAxZnI7IGdhcDoxNnB4OyBhbGlnbi1pdGVtczpzdHJldGNoOyB9XG4uY2xwLWNhcmR7XG4gIGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjE2cHg7IHBhZGRpbmc6MjJweDtcbiAgYm94LXNoYWRvdzowIDEwcHggMzBweCAtMjBweCByZ2JhKDE1LDIzLDQyLC4yNSksIDAgMnB4IDhweCAtNnB4IHJnYmEoMTUsMjMsNDIsLjA4KTtcbiAgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjI1cyBlYXNlLCBib3gtc2hhZG93IC4yNXMgZWFzZTtcbn1cbi5jbHAtY2FyZDpob3ZlcnsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7IGJveC1zaGFkb3c6MCAxNnB4IDM2cHggLTIwcHggcmdiYSgxNSwyMyw0MiwuMyk7IH1cbi5jbHAtcmluZy1jYXJkeyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6OHB4OyBtaW4td2lkdGg6MjIwcHg7IH1cbi5jbHAtcmluZy13cmFweyBwb3NpdGlvbjpyZWxhdGl2ZTsgd2lkdGg6MTMycHg7IGhlaWdodDoxMzJweDsgfVxuLmNscC1yaW5nLXdyYXAgc3ZneyB0cmFuc2Zvcm06cm90YXRlKC05MGRlZyk7IGRpc3BsYXk6YmxvY2s7IH1cbi5jbHAtcmluZy1udW17XG4gIHBvc2l0aW9uOmFic29sdXRlOyBpbnNldDowOyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjtcbiAgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBmb250LXdlaWdodDo4MDA7XG59XG4uY2xwLXJpbmctbnVtIGJ7IGZvbnQtc2l6ZToyOHB4OyBsaW5lLWhlaWdodDoxOyBjb2xvcjp2YXIoLS1iOTAwKTsgfVxuLmNscC1yaW5nLW51bSBzcGFueyBmb250LXNpemU6MTJweDsgY29sb3I6dmFyKC0tc3VidGxlKTsgZm9udC13ZWlnaHQ6NzAwOyB9XG4uY2xwLXJpbmctY2FyZCBoM3sgZm9udC1zaXplOjE0cHg7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC13ZWlnaHQ6NzAwOyB9XG4uY2xwLXBhcnQtY2hpcHN7IGRpc3BsYXk6ZmxleDsgZmxleC13cmFwOndyYXA7IGdhcDoxMHB4OyBtYXJnaW4tdG9wOjEycHg7IH1cbi5jbHAtcGFydC1jaGlwe1xuICBib3JkZXItcmFkaXVzOjMycHg7IHBhZGRpbmc6OHB4IDE2cHg7IGZvbnQtc2l6ZToxM3B4OyBmb250LXdlaWdodDo3MDA7XG4gIGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1iMTAwKTsgY29sb3I6dmFyKC0tYjkwMCk7XG59XG4uY2xwLXBhcnQtY2hpcCBieyBmb250LXdlaWdodDo4MDA7IH1cbi5jbHAtY2xiLXJvd3tcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxNHB4OyBmbGV4LXdyYXA6d3JhcDsgbWFyZ2luLXRvcDoxNnB4O1xuICBwYWRkaW5nOjE0cHggMTZweDsgYm9yZGVyLXJhZGl1czoxMHB4OyBiYWNrZ3JvdW5kOnZhcigtLWI1MCk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYjEwMCk7XG59XG4uY2xwLWNsYi1iYWRnZXtcbiAgYmFja2dyb3VuZDp2YXIoLS1jcmltc29uKTsgY29sb3I6I2ZmZjsgZm9udC13ZWlnaHQ6ODAwOyBmb250LXNpemU6MTRweDtcbiAgYm9yZGVyLXJhZGl1czoxMHB4OyBwYWRkaW5nOjhweCAxNnB4O1xufVxuLmNscC1jbGItcm93IHB7IGZvbnQtc2l6ZToxM3B4OyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtd2VpZ2h0OjYwMDsgZmxleDoxOyBtaW4td2lkdGg6MjAwcHg7IH1cbi5jbHAtdHJhbnNjcmlwdHN7IG1hcmdpbi10b3A6MTZweDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGdhcDoxMHB4OyB9XG4uY2xwLXRyLWNhcmR7IGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjE2cHg7IG92ZXJmbG93OmhpZGRlbjsgfVxuLmNscC10ci1oZWFke1xuICB3aWR0aDoxMDAlOyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IGdhcDoxMHB4O1xuICBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50OyBib3JkZXI6bm9uZTsgcGFkZGluZzoxNXB4IDIwcHg7IHRleHQtYWxpZ246bGVmdDtcbiAgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjcwMDsgY29sb3I6dmFyKC0tdGV4dCk7IG1pbi1oZWlnaHQ6NDhweDtcbn1cbi5jbHAtdHItaGVhZDpob3ZlcnsgYmFja2dyb3VuZDp2YXIoLS1iNTApOyB9XG4uY2xwLXRyLWhlYWQgLmNscC10ci1jYXJldHsgY29sb3I6dmFyKC0tc3VidGxlKTsgZm9udC1zaXplOjExcHg7IHRyYW5zaXRpb246dHJhbnNmb3JtIC4ycyBlYXNlOyB9XG4uY2xwLXRyLWNhcmQuY2xwLW9wZW4gLmNscC10ci1jYXJldHsgdHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpOyB9XG4uY2xwLXRyLWJvZHl7IGRpc3BsYXk6bm9uZTsgcGFkZGluZzowIDIwcHggMThweDsgZm9udC1zaXplOjE0cHg7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC13ZWlnaHQ6NTAwOyBsaW5lLWhlaWdodDoxLjc7IH1cbi5jbHAtdHItY2FyZC5jbHAtb3BlbiAuY2xwLXRyLWJvZHl7IGRpc3BsYXk6YmxvY2s7IH1cbi5jbHAtdHItdG9kb3sgY29sb3I6dmFyKC0tb3JhbmdlKTsgZm9udC13ZWlnaHQ6NzAwOyBmb250LXNpemU6MTIuNXB4OyBkaXNwbGF5OmJsb2NrOyBtYXJnaW4tdG9wOjhweDsgfVxuXG4vKiBzY3JvbGwgcmV2ZWFsICovXG4uY2xwLXJldnsgb3BhY2l0eTowOyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgxNnB4KTsgdHJhbnNpdGlvbjpvcGFjaXR5IC41cyBlYXNlLCB0cmFuc2Zvcm0gLjVzIGVhc2U7IH1cbi5jbHAtcmV2LmNscC1pbnsgb3BhY2l0eToxOyB0cmFuc2Zvcm06bm9uZTsgfVxuXG4vKiA9PT09PT09PT09PT0gUkVTUE9OU0lWRSA9PT09PT09PT09PT0gKi9cbkBtZWRpYSAobWF4LXdpZHRoOjcwMHB4KXtcbiAgLmNscC13cmFweyBwYWRkaW5nOjEwcHggMTBweCA0MHB4OyB9XG4gIC5jbHAtaGVyb3sgcGFkZGluZzoyOHB4IDIycHg7IGJvcmRlci1yYWRpdXM6MTZweDsgfVxuICAuY2xwLXF7IGZvbnQtc2l6ZToxNXB4OyB9XG4gIC5jbHAtZGR7IG1pbi1oZWlnaHQ6NDBweDsgfVxuICAuY2xwLWRkIC5jbHAtZGQtdGV4dHsgbWF4LXdpZHRoOjE4MHB4OyB9XG4gIC5jbHAtYmFyeyBmbGV4LXdyYXA6d3JhcDsgfVxuICAuY2xwLWJhci10aXRsZXsgZmxleC1iYXNpczoxMDAlOyB9XG4gIC5jbHAtcS1wYW5lbHsgcGFkZGluZzoxNnB4IDE0cHggMjZweDsgfVxuICAuY2xwLWludHJvLWJvZHl7IHBhZGRpbmctbGVmdDoyMHB4OyB9XG4gIC5jbHAtcmVzLWdyaWR7IGdyaWQtdGVtcGxhdGUtY29sdW1uczoxZnI7IH1cbiAgLmNscC1tZWRpYS1jYXJkeyBwYWRkaW5nOjE2cHg7IH1cbn1cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKXtcbiAgLmNscC13cmFwICosIC5jbHAtd3JhcCAqOjpiZWZvcmUsIC5jbHAtd3JhcCAqOjphZnRlcntcbiAgICBhbmltYXRpb246bm9uZSAhaW1wb3J0YW50OyB0cmFuc2l0aW9uOm5vbmUgIWltcG9ydGFudDtcbiAgfVxuICAuY2xwLXJldnsgb3BhY2l0eToxOyB0cmFuc2Zvcm06bm9uZTsgfVxufVxuXG4uY2xwLWF1cm9yYSBzcGFue2ZpbHRlcjpibHVyKDM2cHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfVxuLmNscC1oZXJvLXNoaW1tZXJ7d2lsbC1jaGFuZ2U6YmFja2dyb3VuZC1wb3NpdGlvbn1cbiI7ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzKTt9KSgpOwoKJ3VzZSBzdHJpY3QnOwovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgVEVTVF9EQVRBIFx1MjAxNCBzd2FwIGluIG5ldyBzZXRzIGhlcmUgd2l0aG91dCB0b3VjaGluZyBtYXJrdXAuCiAgIFNoYXBlOiB7IHBhcnRzOlt7IG5hbWUsIGhlYWRlclRpdGxlLCBpbnRyb1RpdGxlLCBpbnRyb0J1bGxldHNbXSwKICAgICAgICAgICAgcUluc3RydWN0aW9uLCB0cmFuc2NyaXB0LCBzZWN0aW9uczpbeyBsYWJlbCwgbWVkaWFUeXBlLAogICAgICAgICAgICBkdXJhdGlvbihzZWMpLCB0aW1lTWludXRlcywgbWVkaWFJbnN0cnVjdGlvbiwKICAgICAgICAgICAgcXVlc3Rpb25zOlt7IG4sIHN0ZW0sIG9wdGlvbnNbNF0sIGtleSgxLTQpLCB0b2RvPyB9XSB9XSB9XSB9CiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwp2YXIgVEVTVF9EQVRBID0geyJ0ZXN0TGFiZWwiOiJTZXQgMTIgXHUyMDEzIFByYWN0aWNlIFRlc3QgMiIsInNldE5vIjoiMTIiLCJ0ZXN0Tm8iOiIyIiwicGFydHMiOlt7Im5hbWUiOiJQYXJ0IDE6IExpc3RlbmluZyB0byBQcm9ibGVtIFNvbHZpbmciLCJoZWFkZXJUaXRsZSI6IlNldCAxMiBcdTIwMTMgUHJhY3RpY2UgVGVzdCAyIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCAxOiBMaXN0ZW5pbmcgdG8gUHJvYmxlbSBTb2x2aW5nIiwiaW50cm9UaXRsZSI6Ikxpc3RlbmluZyB0byBQcm9ibGVtIFNvbHZpbmciLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIGEgbWFuIGFuZCBhIHdvbWFuIGF0IGEgbGFyZ2Ugd2FyZWhvdXNlIHN0b3JlLiBUaGUgbWFuIHdvcmtzIGF0IHRoZSBzdG9yZS4gSXQgcGxheXMgaW4gdGhyZWUgc2VjdGlvbnMsIGFuZCBlYWNoIHNlY3Rpb24gcGxheXMgb25seSBvbmNlLiIsIkFmdGVyIGVhY2ggc2VjdGlvbiwgcXVlc3Rpb25zIHdpbGwgYXBwZWFyLiBDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGFuc3dlciBlYWNoIHF1ZXN0aW9uLiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGFuc3dlciBlYWNoIHF1ZXN0aW9uIGZyb20gdGhlIGRyb3AtZG93biBtZW51ICggXHUyNWJlICkuIiwidHJhbnNjcmlwdCI6IlBhcnQgMTogTGlzdGVuaW5nIHRvIFByb2JsZW0gU29sdmluZ1xuWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIGEgbWFuIGFuZCBhIHdvbWFuIGF0IGEgbGFyZ2Ugd2FyZWhvdXNlIHN0b3JlLlxuVGhlIG1hbiB3b3JrcyBhdCB0aGUgc3RvcmUuXG5TZWN0aW9uIDE6XG5NQU46IEhpISBXZWxjb21lIHRvIEJ1bGsgQ2x1YiEgQ2FuIEkgc2VlIHlvdXIgbWVtYmVyc2hpcCBjYXJkP1xuV09NQU46IE9oLiBBIG1lbWJlcnNoaXAgY2FyZD8gRm9yIGEgZ3JvY2VyeSBzdG9yZT8gSVx1MjAxOXZlIG5ldmVyIGhlYXJkIG9mIHRoYXRcbmJlZm9yZS4gSSBoYXZlIG90aGVyIGlkZW50aWZpY2F0aW9uIGNhcmRzIHdpdGggbWUuXG5NQU46IFNvcnJ5LCBCdWxrIENsdWIgaXMgYWN0dWFsbHkgYSB3YXJlaG91c2UgY2x1Yi4gWW91IGNhbiBqb2luIHRoZSBzdG9yZSBieVxucHVyY2hhc2luZyBhIG1lbWJlcnNoaXAsIGFuZCB0aGVuIHlvdSBjYW4gdGFrZSBhZHZhbnRhZ2Ugb2YgYWxsIG9mIG91ciBncmVhdCBsb3cgcHJpY2VzXG5ieSBidXlpbmcgaW4gYnVsay5cbldPTUFOOiBXZWxsLCBJIHJlYWxseSBqdXN0IG5lZWQgc29tZSBtaWxrIGFuZCBhIGZldyBwcm9kdWNlIGl0ZW1zLiBJIGp1c3QgbW92ZWQgdG9cbnRoaXMgYXJlYSwgYW5kIEkgbm90aWNlZCB0aGlzIHdhcyBteSBjbG9zZXN0IHN0b3JlLiBJIGd1ZXNzIElcdTIwMTlsbCBnbyBzb21ld2hlcmUgZWxzZS5cbk1BTjogT0suIEJ1dCB3ZSBkbyBzZWxsIG1pbGsgYW5kIHByb2R1Y2UuIEZvciBleGFtcGxlLCB3ZSBoYXZlIGEgc3BlY2lhbCBvbiBiYWdzIG9mXG5hcHBsZXMgdGhpcyB3ZWVrIFx1MjAxMyBmaXZlIHBvdW5kcyBvZiBhcHBsZXMgZm9yIGZpdmUgZG9sbGFycy5cbldPTUFOOiBIbW0uIFRoYXQgaXMgYSBnb29kIHByaWNlIGZvciBhcHBsZXMuIERvIHlvdSBoYXZlIHNvbWUgaW5mb3JtYXRpb24gSSBjYW5cbnRha2Ugd2l0aCBtZT9cbk1BTjogU3VyZS4gSGVyZSBpcyBvdXIgbWVtYmVyc2hpcCBpbmZvcm1hdGlvbiBicm9jaHVyZSBhbmQgb3VyIGZseWVyIGZvciB0aGlzIHdlZWsuIElmXG55b3UgaGF2ZSBhbnkgcXVlc3Rpb25zLCBqdXN0IGxldCBtZSBrbm93LlxuU2VjdGlvbiAyOlxuTUFOOiBPaCwgaGkhIEkgcmVtZW1iZXIgeW91IGZyb20gYSBmZXcgZGF5cyBhZ28uIFNvLCBoYXZlIHlvdSBkZWNpZGVkIHRvIGpvaW4\/XG5BcHBsZXMgYXJlIHN0aWxsIG9uIHNhbGUhXG5XT01BTjogV2VsbCwgSVx1MjAxOW0gbm90IHN1cmUgeWV0LiBJIHdhcyB0YWxraW5nIHRvIG15IG5laWdoYm91ciwgYW5kIHNoZSBzYWlkIHNoZSBpc1xuaGVyZSBvbiBhIHdlZWtseSBiYXNpcy4gU2hlIGhhcyBmb3VyIGtpZHMsIHNvIGJ1eWluZyBldmVyeXRoaW5nIGluIGJ1bGsgcmVhbGx5IGhlbHBzIGhlclxuc2F2ZSBtb25leS5cbk1BTjogWWVzLCBvdXIgc3RvcmUgaXMgcG9wdWxhciB3aXRoIGZhbWlsaWVzIHNpbmNlIHdlIHNlbGwgZXZlcnl0aGluZyBpbiBsYXJnZSBxdWFudGl0aWVzLlxuV09NQU46ICAgICAgICBZZXMsIHNvIHNoZSBsZW50IG1lIGhlciBjYXJkIHRvIHVzZSB0b2RheS4gSSBmaWd1cmUgSVx1MjAxOWxsIHRyeSBpdCBvdXQgYW5kIHNlZSBpZiBJXG5saWtlIGl0LlxuTUFOOiBbVmVyeSBwb2xpdGVseV0gT2gsIHVuZm9ydHVuYXRlbHkgdGhlIG1lbWJlcnNoaXAgY2FyZHMgYXJlIG5vbi10cmFuc2ZlcmFibGUuIFlvdVxud291bGQgaGF2ZSB0byBjb21lIHdpdGggeW91ciBuZWlnaGJvdXIuXG5XT01BTjogU28sIHlvdSBtZWFuIEkgY2FuXHUyMDE5dCBldmVuIGNvbWUgaW50byB0aGUgc3RvcmU\/IEV2ZW4ganVzdCB0byBidXkgb25lIG9yIHR3b1xuaXRlbXM\/IElcdTIwMTltIG5vdCBpbnRlcmVzdGVkIGluIHRob3NlIGh1Z2UgYm94ZXMgb2YgY2FuZHkgb3IgbGFyZ2UgcGFja2FnZXMgb2YgbWVhdC4gSXRcdTIwMTlzIGp1c3Rcbm15IGh1c2JhbmQgYW5kIG1lIGF0IGhvbWVcdTIwMTRhbmQgd2VcdTIwMTlyZSB2ZWdldGFyaWFucyFcbk1BTjogW1ZlcnkgcG9saXRlbHldIFNvcnJ5LCBidXQgeW91XHUyMDE5bGwgaGF2ZSB0byBnbyB0YWxrIHRvIHRoZSBzdGFmZiBhdCBvdXIgbWVtYmVyc2hpcFxuZGVzay4gVGhleSBjYW4gaGVscCB5b3Ugd2l0aCBtZW1iZXJzaGlwIHF1ZXN0aW9ucy5cbldPTUFOOiAgICAgICAgW2FuZ3JpbHldIFdlbGwsIEkgaG9wZSB0aGV5IGNhbiBoZWxwIHdpdGggY29tcGxhaW50cyFcblNlY3Rpb24gMzpcbldPTUFOOiAgICAgICAgW3N0aWxsIHVwc2V0XSBPSywgaGVyZVx1MjAxOXMgbXkgY2FyZC5cbk1BTjogVGhhdCB3YXMgZmFzdCEgSVx1MjAxOW0gZ2xhZCB5b3UgZGVjaWRlZCB0byBqb2luLlxuV09NQU46IFdlbGwsIEkgd2VudCBvdmVyIHRoZXJlIHRvIGNvbXBsYWluLCBidXQgdGhlbiB0aGV5IHNob3dlZCBtZSB0aGUgZGlmZmVyZW50XG5tZW1iZXJzaGlwIG9wdGlvbnMuIFRoZXJlIGlzIGFjdHVhbGx5IGEgc3BlY2lhbCByYXRlIGZvciBzZW5pb3JzLCBzbyBJIHdhcyBvbmx5IGNoYXJnZWRcbmhhbGYgcHJpY2UgZm9yIHRoZSBzYW1lIGNhcmQuXG5NQU46IFdvbmRlcmZ1bC4gQW5kIHlvdXIgcGljdHVyZSBjYW1lIG91dCBuaWNlbHksIHRvbyFcbldPTUFOOiAgICAgICAgWWVzLCBiZXR0ZXIgdGhhbiBteSBkcml2ZXJcdTIwMTlzIGxpY2Vuc2UsIHRoYXRcdTIwMTlzIGZvciBzdXJlIVxuTUFOOiBPSywgd2VsbCBoZXJlIGFyZSBzb21lIGNvdXBvbnMgd2VcdTIwMTlyZSBnaXZpbmcgYWxsIG91ciBjdXN0b21lcnMgdG9kYXkuXG5XT01BTjogICAgICAgIE1vcmUgZGlzY291bnRzISBJXHUyMDE5bSBzdGFydGluZyB0byBsaWtlIHRoaXMgcGxhY2UhIiwic2VjdGlvbnMiOlt7ImxhYmVsIjoiQ29udmVyc2F0aW9uIFx1MjAxNCBTZWN0aW9uIDEiLCJkdXJhdGlvbiI6NTQsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwidGltZU1pbnV0ZXMiOjIsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IldoYXQgcHJvYmxlbSBkb2VzIHRoZSB3b21hbiBoYXZlPyIsIm9wdGlvbnMiOlsiU2hlIGlzIG5vdCBhIG1lbWJlciBvZiB0aGlzIHN0b3JlLiIsIlNoZSBjYW5ub3QgZmluZCBhbnkgbWlsayBvciBwcm9kdWNlLiIsIlNoZSBsb3N0IGhlciBtZW1iZXJzaGlwIGNhcmQuIiwiU2hlIHdhcyBvdmVyY2hhcmdlZCBmb3IgYXBwbGVzLiJdLCJrZXkiOjAsInJlY29uIjp0cnVlfSx7Im4iOjIsInN0ZW0iOiJXaGF0IHNlZW1zIHRvIGJlIHRydWUgYWJvdXQgdGhlIHdvbWFuPyIsIm9wdGlvbnMiOlsiU2hlIHNob3BzIGhlcmUgZXZlcnkgd2Vlay4iLCJTaGUgaGFzIGEgbGFyZ2UgZmFtaWx5IHRvIGZlZWQuIiwiU2hlIGhhcyBub3QgYmVlbiB0byB0aGlzIHN0b3JlIGJlZm9yZS4iLCJTaGUgd29ya3MgYXQgYSBuZWFyYnkgZ3JvY2VyeSBzdG9yZS4iXSwia2V5IjoyLCJyZWNvbiI6dHJ1ZX0seyJuIjozLCJzdGVtIjoiV2hhdCBpcyB0aGUgbWFuIHRyeWluZyB0byBkbz8iLCJvcHRpb25zIjpbImdpdmUgdGhlIHdvbWFuIGEgcmVmdW5kIiwicGVyc3VhZGUgdGhlIHdvbWFuIHRvIGpvaW4gdGhlIHN0b3JlIiwiaGVscCB0aGUgd29tYW4gZmluZCBhbm90aGVyIHN0b3JlIiwic2VsbCB0aGUgd29tYW4gYSBiYWcgb2YgYXBwbGVzIl0sImtleSI6MSwicmVjb24iOnRydWV9XX0seyJsYWJlbCI6IkNvbnZlcnNhdGlvbiBcdTIwMTQgU2VjdGlvbiAyIiwiZHVyYXRpb24iOjU0LCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBuZXh0IHBhcnQgb2YgdGhlIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwibWVkaWFUeXBlIjoiYXVkaW8iLCJ0aW1lTWludXRlcyI6MiwicXVlc3Rpb25zIjpbeyJuIjo0LCJzdGVtIjoiV2hhdCBkb2VzIHRoZSBtYW4gc2F5IGFib3V0IEJ1bGsgQ2x1YiBjYXJkcz8iLCJvcHRpb25zIjpbIlRoZXkgY2FuIGJlIHNoYXJlZCB3aXRoIGEgbmVpZ2hib3VyLiIsIlRoZXkgYXJlIGZyZWUgZm9yIG5ldyBmYW1pbGllcy4iLCJPbmx5IG1lbWJlcnMgY2FuIHVzZSB0aGVtLiIsIlRoZXkgZXhwaXJlIGFmdGVyIG9uZSB3ZWVrLiJdLCJrZXkiOjIsInJlY29uIjp0cnVlfSx7Im4iOjUsInN0ZW0iOiJXaGljaCBpdGVtIGRvZXMgdGhlIHdvbWFuIG1vc3QgbGlrZWx5IHdhbnQgdG8gYnV5IGF0IEJ1bGsgQ2x1Yj8iLCJvcHRpb25zIjpbImEgY3JhdGUgb2YgdG9tYXRvZXMiLCJhIGxhcmdlIGJveCBvZiBjYW5keSIsImEgcGFja2FnZSBvZiBtZWF0IiwiYSBiYWcgb2YgY29mZmVlIGJlYW5zIl0sImtleSI6MCwicmVjb24iOnRydWV9LHsibiI6Niwic3RlbSI6IldoeSBpcyB0aGUgd29tYW4gdXBzZXQ\/Iiwib3B0aW9ucyI6WyJUaGUgYXBwbGVzIGFyZSBubyBsb25nZXIgb24gc2FsZS4iLCJTaGUgY2Fubm90IHNob3AgYXQgdGhlIHN0b3JlLiIsIlRoZSBzdGFmZiB3ZXJlIHJ1ZGUgdG8gaGVyLiIsIlRoZSBzdG9yZSBpcyB0b28gZmFyIGZyb20gaGVyIGhvbWUuIl0sImtleSI6MSwicmVjb24iOnRydWV9XX0seyJsYWJlbCI6IkNvbnZlcnNhdGlvbiBcdTIwMTQgU2VjdGlvbiAzIiwiZHVyYXRpb24iOjMwLCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBmaW5hbCBwYXJ0IG9mIHRoZSBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwidGltZU1pbnV0ZXMiOjIsInF1ZXN0aW9ucyI6W3sibiI6Nywic3RlbSI6IldoeSBkaWQgdGhlIHdvbWFuIGRlY2lkZSB0byBqb2luIEJ1bGsgQ2x1Yj8iLCJvcHRpb25zIjpbIkhlciBuZWlnaGJvdXIgY29udmluY2VkIGhlciB0byBqb2luLiIsIlNoZSB3YW50ZWQgdGhlIGFwcGxlIHNwZWNpYWwuIiwiU2hlIGdvdCBhIGRpc2NvdW50IG9uIHRoZSBtZW1iZXJzaGlwIGZlZS4iLCJUaGUgc3RvcmUgd2FzIHRoZSBjbG9zZXN0IHRvIGhlciBob21lLiJdLCJrZXkiOjIsInJlY29uIjp0cnVlfSx7Im4iOjgsInN0ZW0iOiJXaGF0IHNlZW1zIHRvIGJlIHRydWUgYWJvdXQgQnVsayBDbHViIGNhcmRzPyIsIm9wdGlvbnMiOlsiVGhleSBhcmUgY2hlYXBlciBmb3IgbGFyZ2UgZmFtaWxpZXMuIiwiVGhleSBtdXN0IGJlIHJlbmV3ZWQgZXZlcnkgbW9udGguIiwiVGhleSBjYW4gYmUgdXNlZCBhdCBhbnkgbG9jYXRpb24uIiwiVGhleSBoYXZlIGEgcGhvdG8gb2YgdGhlIG1lbWJlciBvbiB0aGVtLiJdLCJrZXkiOjMsInJlY29uIjp0cnVlfV19XX0seyJuYW1lIjoiUGFydCAyOiBMaXN0ZW5pbmcgdG8gYSBEYWlseSBMaWZlIENvbnZlcnNhdGlvbiIsImhlYWRlclRpdGxlIjoiU2V0IDEyIFx1MjAxMyBQcmFjdGljZSBUZXN0IDIgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDI6IExpc3RlbmluZyB0byBhIERhaWx5IExpZmUgQ29udmVyc2F0aW9uIiwiaW50cm9UaXRsZSI6Ikxpc3RlbmluZyB0byBhIERhaWx5IExpZmUgQ29udmVyc2F0aW9uIiwiaW50cm9CdWxsZXRzIjpbIllvdSB3aWxsIGhlYXIgYSBjb252ZXJzYXRpb24gYmV0d2VlbiB0d28gbmVpZ2hib3Vycy4gSXQgcGxheXMgb25seSBvbmNlLiIsIkFmdGVyIHRoZSBjb252ZXJzYXRpb24sIHF1ZXN0aW9ucyB3aWxsIGFwcGVhci4gQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbi4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbiBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoIFx1MjViZSApLiIsInRyYW5zY3JpcHQiOiJQYXJ0IDI6IExpc3RlbmluZyB0byBhIERhaWx5IExpZmUgQ29udmVyc2F0aW9uXG5Zb3Ugd2lsbCBoZWFyIGEgY29udmVyc2F0aW9uIGJldHdlZW4gdHdvIG5laWdoYm91cnMuXG5XT01BTjogSGV5IEp1biEgSSdtIGxvb2tpbmcgZm9yIHNvbWVvbmUgdG8gdGFrZSBjYXJlIG9mIG15IGNhdCB3aGlsZSBJXHUyMDE5bSBhd2F5XG5uZXh0IHdlZWsuIFRoZXJlXHUyMDE5cyBhYnNvbHV0ZWx5IG5vIHByZXNzdXJlIHRob3VnaC4gSSBrbm93IHlvdVx1MjAxOXJlIGJ1c3kuXG5NQU46IEknZCBiZSBoYXBweSB0byBsb29rIGFmdGVyIHlvdXIgY2F0LCBUcmFjeSEgSGlzIG5hbWUgaXMgQmx1ZSwgcmlnaHQ\/IFNvbWV0aW1lcyBoZVxuY29tZXMgb3ZlciBhbmQgbmFwcyBvbiBteSBkb29yc3RlcC5cbldPTUFOOiAgICAgICAgR3JlYXQsIHRoYW5rcyEgTXkgc2lzdGVyIGFuZCBJIGFyZSB0YWtpbmcgYSB0cmlwIHRvIENhbGlmb3JuaWEuXG5NQU46IEFuZCB5b3UnbGwgYmUgZ29uZSBmb3IgdGhlIHdob2xlIHdlZWs\/IE9rYXksIHdoYXQgZXhhY3RseSBkbyBJIGhhdmUgdG8gZG8gdG9cbmxvb2sgYWZ0ZXIgQmx1ZT9cbldPTUFOOiBXZWxsLCBJIHRoaW5rIGl0J2xsIGJlIGJldHRlciBpZiBoZSBqdXN0IHN0YXlzIGF0IG15IGhvdXNlLiBZb3UgbGl2ZSByaWdodCBuZXh0XG5kb29yLCBhbmQgaXQncyBzdWNoIGEgaGFzc2xlIHdoZW4gSSBoYXZlIHRvIHRha2UgaGltIHRvIGEgbmV3IHBsYWNlLiBBbGwgeW91IHJlYWxseSBoYXZlIHRvXG5kbyBpcyBmZWVkIGhpbSB0d2ljZSBhIGRheSBhbmQgZmlsbCBoaXMgd2F0ZXIgZGlzaC5cbk1BTjogQnV0IGhlXHUyMDE5cyBhbiBvdXRkb29yIGNhdCwgcmlnaHQ\/IFN1cmVseSBJIGhhdmUgdG8gbGV0IGhpbSBpbiBhbmQgb3V0IG9mIHRoZSBob3VzZSxcbnRvbz9cbldPTUFOOiA6IFdlbGwsIGlkZWFsbHkgaGVcdTIwMTlzIGFuIG91dGRvb3IgY2F0LCBidXQgSSBkb25cdTIwMTl0IHdhbnQgdG8gY3JlYXRlIGV4dHJhIHdvcmsgZm9yXG55b3UuIEhlIGNhbiBqdXN0IHN0YXkgaW5zaWRlIGZvciB0aGUgd2Vlay5cbk1BTjogTm8sIG5vLCBpdFx1MjAxOXMgbm8gcHJvYmxlbSEgSVx1MjAxOWxsIGxldCBoaW0gaW4gYW5kIG91dCBvZiB0aGUgaG91c2Ugd2hlbiBJIGNhbi4gSVx1MjAxOW0gbW9zdGx5XG53b3JraW5nIGZyb20gaG9tZSB0aGVzZSBkYXlzIGFueXdheS5cbldPTUFOOiBBcmUgeW91IHN1cmU\/IFlvdSdsbCBuZWVkIHRvIG1ha2Ugc3VyZSBoZVx1MjAxOXMgaW5zaWRlIHdoZW4gaXQgZ2V0cyBkYXJrLiBCdXRcbmhlIHN0YXlzIHByZXR0eSBjbG9zZSB0byB0aGUgaG91c2UsIHNvIGl0XHUyMDE5bGwgYmUgZWFzeSBmb3IgeW91IHRvIGZpbmQgaGltLlxuTUFOOiBTb3VuZHMgZ29vZC4gRG9lcyBoZSBjb21lIHdoZW4gaGUncyBjYWxsZWQgYnkgbmFtZT9cbldPTUFOOiAgICAgICAgVXN1YWxseS4gSWYgaGUgZG9lc24ndCwganVzdCBzaGFrZSBoaXMgYmFnIG9mIGNhdCB0cmVhdHMhXG5NQU46IFBlcmZlY3QhIFRoaXMgYWN0dWFsbHkgc291bmRzIGxpa2UgZnVuLiBJXHUyMDE5dmUgYWx3YXlzIHdhbnRlZCB0byBleHBlcmllbmNlIGhhdmluZyBhXG5wZXQsIHNvIHRoaXMgd2lsbCBiZSBhIGdyZWF0IHdheSBmb3IgbWUgdG8gc2VlIHdoYXQgaXQncyBsaWtlISIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IkNvbnZlcnNhdGlvbiIsImR1cmF0aW9uIjo4MSwibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZm9sbG93aW5nIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIEl0IGlzIGFib3V0IDIgbWludXRlcyBsb25nLiIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwidGltZU1pbnV0ZXMiOjMsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IldoYXQgaXMgdGhlIGNvbnZlcnNhdGlvbiBtYWlubHkgYWJvdXQ\/Iiwib3B0aW9ucyI6WyJUaGUgd29tYW4gaXMgYXNraW5nIHRoZSBtYW4gdG8gaGVscCBoZXIuIiwiVGhlIG1hbiBpcyBwbGFubmluZyBhIHRyaXAgdG8gQ2FsaWZvcm5pYS4iLCJUaGUgd29tYW4gd2FudHMgdG8gYWRvcHQgYSBuZXcgcGV0LiIsIlRoZSBtYW4gaXMgY29tcGxhaW5pbmcgYWJvdXQgYSBub2lzeSBjYXQuIl0sImtleSI6MCwicmVjb24iOnRydWV9LHsibiI6Miwic3RlbSI6IldoeSBkb2VzIHRoZSBtYW4gdGhpbmsgaGVyIGNhdCBpcyBhbiBvdXRkb29yIGNhdD8iLCJvcHRpb25zIjpbIlRoZSB3b21hbiB0b2xkIGhpbSBzby4iLCJIZSBoYXMgc2VlbiBoZXIgY2F0IHNsZWVwaW5nIG91dHNpZGUuIiwiVGhlIGNhdCBoYXMgbm8gbGl0dGVyIGJveC4iLCJUaGUgY2F0IHdlYXJzIGFuIG91dGRvb3IgY29sbGFyLiJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjMsInN0ZW0iOiJXaGF0IHJlYXNvbiBkb2VzIHRoZSB3b21hbiBnaXZlIGZvciBzdWdnZXN0aW5nIGhlciBwbGFuPyIsIm9wdGlvbnMiOlsiVGhlIGNhdCBnZXRzIGFsb25nIHdpdGggdGhlIG1hbi4iLCJUaGUgbWFuIGlzIG9mdGVuIGF3YXkgZnJvbSBob21lLiIsIkl0IGlzIHRoZSBtb3N0IGNvbnZlbmllbnQgb3B0aW9uLiIsIlRoZSBjYXQgZGlzbGlrZXMgYmVpbmcgZmVkIHR3aWNlIGEgZGF5LiJdLCJrZXkiOjIsInJlY29uIjp0cnVlfSx7Im4iOjQsInN0ZW0iOiJXaGF0IGRldGFpbCBkb2VzIHRoZSB3b21hbiB3b3JyeSBhYm91dD8iLCJvcHRpb25zIjpbInRoZSBjYXQgcmVmdXNpbmcgdG8gZWF0IGl0cyBmb29kIiwidGhlIG1hbiBiZWluZyB0b28gYnVzeSB0byBoZWxwIiwidGhlIGNhdCB3YW5kZXJpbmcgZmFyIGZyb20gdGhlIGhvdXNlIiwiaGVyIGNhdCBiZWluZyBvdXRzaWRlIG92ZXJuaWdodCJdLCJrZXkiOjMsInJlY29uIjp0cnVlfSx7Im4iOjUsInN0ZW0iOiJXaGF0IHdpbGwgbW9zdCBsaWtlbHkgaGFwcGVuIG5leHQ\/Iiwib3B0aW9ucyI6WyJUaGUgbWFuIHdpbGwgZm9sbG93IHRoZSB3b21hbidzIHBsYW4uIiwiVGhlIHdvbWFuIHdpbGwgY2FuY2VsIGhlciB0cmlwLiIsIlRoZSBtYW4gd2lsbCB0YWtlIHRoZSBjYXQgdG8gaGlzIGhvdXNlLiIsIlRoZSB3b21hbiB3aWxsIGZpbmQgYW5vdGhlciBjYXQtc2l0dGVyLiJdLCJrZXkiOjAsInJlY29uIjp0cnVlfV19XX0seyJuYW1lIjoiUGFydCAzOiBMaXN0ZW5pbmcgZm9yIEluZm9ybWF0aW9uIiwiaGVhZGVyVGl0bGUiOiJTZXQgMTIgXHUyMDEzIFByYWN0aWNlIFRlc3QgMiBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgMzogTGlzdGVuaW5nIGZvciBJbmZvcm1hdGlvbiIsImludHJvVGl0bGUiOiJMaXN0ZW5pbmcgZm9yIEluZm9ybWF0aW9uIiwiaW50cm9CdWxsZXRzIjpbIllvdSB3aWxsIGhlYXIgYSBjb252ZXJzYXRpb24gYmV0d2VlbiB0d28gb2ZmaWNlIGNvbGxlYWd1ZXMgd2hvIGFyZSBpbiB0aGUgbHVuY2ggcm9vbS4gSXQgcGxheXMgb25seSBvbmNlLiIsIkFmdGVyIHRoZSBjb252ZXJzYXRpb24sIHF1ZXN0aW9ucyB3aWxsIGFwcGVhci4gQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbi4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbiBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoIFx1MjViZSApLiIsInRyYW5zY3JpcHQiOiJQYXJ0IDM6IExpc3RlbmluZyBmb3IgSW5mb3JtYXRpb25cbllvdSB3aWxsIGhlYXIgYSBjb252ZXJzYXRpb24gYmV0d2VlbiB0d28gb2ZmaWNlIGNvbGxlYWd1ZXMgd2hvIGFyZSBpbiB0aGUgbHVuY2ggcm9vbS5cbk0gICAgICBIZXkhIFlvdSB3ZXJlblx1MjAxOXQgYXQgdGhlIHN0YWZmIG1lZXRpbmcuIFlvdSBtaXNzZWQgYW4gaW1wb3J0YW50IGFubm91bmNlbWVudFxuYWJvdXQgdGhlIEJldmVyYWdlIENsdWIuXG5XOiAgICAgVGhlIEJldmVyYWdlIENsdWI\/IFdoYXRcdTIwMTlzIHRoYXQ\/IFNvbWUgbmV3IGNhdGVyaW5nIHNlcnZpY2U\/IEFuIGFmdGVyLWhvdXJzXG5kcmlua2luZyBncm91cD9cbk06ICAgICBOZWl0aGVyLiBSZW1lbWJlciB0aGF0IHN1cnZleSBJIHNlbnQgb3V0IGEgY291cGxlIHdlZWtzIGFnbywgYXNraW5nIHdoYXQgcGVvcGxlXG50ZW5kIHRvIGRyaW5rIGR1cmluZyB0aGUgZGF5P1xuVzogICAgIFllYWgsIEkgd2FzIHdvbmRlcmluZyBhYm91dCB0aGF0LiBJIGZpZ3VyZWQgaXQgcHJvYmFibHkgaGFkIHNvbWV0aGluZyB0byBkbyB3aXRoXG50aGUgdXBjb21pbmcgc3RhZmYgcmV0cmVhdDsgZ2V0dGluZyBldmVyeW9uZVx1MjAxOXMgZHJpbmsgcHJlZmVyZW5jZXMgZm9yIHRoZSBjYXRlcmVyIG9yXG5zb21ldGhpbmcuXG5NOiAgICAgIFdlbGwsIGFjdHVhbGx5LCB5b3UgbWlnaHQgaGF2ZSBub3RpY2VkIHdlXHUyMDE5cmUgcnVubmluZyBvdXQgb2Ygcm9vbSBpbiB0aGUgZnJpZGdlLFxud2hhdCB3aXRoIGV2ZXJ5b25lIGhhdmluZyB0aGVpciBvd24gYm90dGxlIG9mIGp1aWNlIG9yIGNhcnRvbiBvZiBtaWxrIG9yIGNyZWFtIGZvciB0aGVpclxudGVhIG9yIGNvZmZlZS0tXG5XOiAgICAgWWVhaCwgSSBmcmVxdWVudGx5IHNlZSB0aHJlZSBjYXJ0b25zIG9mIGV4YWN0bHkgdGhlIHNhbWUgdGhpbmcsIGVhY2ggd2l0aCBhXG5kaWZmZXJlbnQgbmFtZSBvbiBpdC0tXG5NOiAgICBSaWdodCwgc28gd2VcdTIwMTlyZSBnb2luZyB0byBzdGFydCBhIEJldmVyYWdlIENsdWIuIElcdTIwMTl2ZSBwcmVwYXJlZCBhIGxpc3QgdGhhdCBjb3ZlcnNcbmFsbW9zdCBldmVyeXRoaW5nIHBlb3BsZSBkcmluazoganVpY2UsIHJlZ3VsYXIgY29mZmVlLCBnb3VybWV0IGNvZmZlZSwgZ3JlZW4gdGVhLCByZWd1bGFyXG50ZWEtLXdoaWNoLCBhcm91bmQgaGVyZSwgaXMgb3JhbmdlIHBla29lLS1hbmQgc3VnYXIsIG1pbGssIGFuZCBjcmVhbS4gV2VcdTIwMTlsbCBwcm92aWRlIGl0XG5hbGwsIHNvIHBlb3BsZSBkb25cdTIwMTl0IGhhdmUgdG8gYnV5IHRoZWlyIG93bi0td2UgY2FuIHNoYXJlLlxuVzogICAoaGVzaXRhbnQpIEkgbGlrZSB0aGUgaWRlYS4uLiBidXQgaG93IGFyZSB3ZSBnb2luZyB0byBwYXkgZm9yIGl0PyBJXHUyMDE5bSBhc3N1bWluZ1xubWFuYWdlbWVudCBoYXNuXHUyMDE5dCB2b2x1bnRlZXJlZCB0byBmdW5kIHRoaXMuXG5NOiAgICAgKGxhdWdocykgTm90IHF1aXRlISBCdXQgbG9vaywgSVx1MjAxOXZlIHByaWNlZCBldmVyeXRoaW5nIG9uIHRoaXMgc2hlZXQgaGVyZS4gWW91IGp1c3RcbmFkZCB1cCBob3cgbWFueSBjdXBzIG9mIHdoYXQgeW91IGRyaW5rIGVhY2ggZGF5IHRvIGZpZ3VyZSBvdXQgaG93IG11Y2ggdG8gcGF5LiBZb3VcbnBheSBhdCB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggbW9udGgsIGFuZCB0aGVuIHlvdVx1MjAxOXJlIGNvdmVyZWQuXG5XOiAgICBUaGF0IHNvdW5kcyBwcmV0dHkgY29tcGxpY2F0ZWQuIFdoeSBub3QganVzdCBjaGFyZ2UgZXZlcnlvbmUgdGhlIHNhbWUgYW1vdW50P1xuTTogICAgIEJlY2F1c2UgdGhhdCB3b3VsZG5cdTIwMTl0IGJlIGZhaXIuIFN1cHBvc2UgeW91IGRyaW5rIHR3byBjdXBzIG9mIGdyZWVuIHRlYSBwZXIgZGF5LlxuVGhhdFx1MjAxOXMgYWJvdXQgNSBjZW50cyBhIGRheS4gU29tZW9uZSBlbHNlIG1pZ2h0IGRyaW5rIHNpeCBjdXBzIG9mIGdvdXJtZXQgY29mZmVlIHdpdGhcbmNyZWFtLS10aGF0XHUyMDE5cyBhbG1vc3QgMTAgYnVja3MhIFdoeSBzaG91bGQgeW91IGJvdGggcGF5IHRoZSBzYW1lP1xuVzogICAgSG1tLi4uIEdvb2QgcG9pbnRcdTIwMjZidXQgc3RpbGwsIElcdTIwMTltIG5vdCBzdXJlIGl0IHdpbGwgd29yay4gSG93IHdpbGwgd2UgcHJldmVudFxucGVvcGxlIGZyb20gcGF5aW5nIGZvciB0aGUgZ3JlZW4gdGVhIGFuZCB0aGVuIGRyaW5raW5nIHRoZSBnb3VybWV0IGNvZmZlZT8gT3IgcGF5aW5nIGZvclxub25lIGN1cCBhbmQgZHJpbmtpbmcgZml2ZT9cbk06ICAgICBJXHUyMDE5bSBwcmV0dHkgc3VyZSBwZW9wbGUgYXJvdW5kIGhlcmUgYXJlIGEgbGl0dGxlIG1vcmUgaG9uZXN0IHRoYW4gdGhhdD8gVGhhdCB3b3VsZFxuYmUgc3RlYWxpbmcuXG5XOiAgICAgRG9uXHUyMDE5dCBiZSBzbyBzdXJlISBTdHVmZiBpcyBhbHdheXMgZ29pbmcgbWlzc2luZyBmcm9tIHRoZSBzdXBwbHkgY2FiaW5ldC4gUGVvcGxlXG50YWtlIHN0YXBsZXMsIHBlbnMsIHBhZHMgb2YgcGFwZXJcdTIwMjZhbmQgdGhleSBkb25cdTIwMTl0IHBheSBhIGRpbWUgZm9yIHRoZW0hIiwic2VjdGlvbnMiOlt7ImxhYmVsIjoiQ29udmVyc2F0aW9uIiwiZHVyYXRpb24iOjE0MSwibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZm9sbG93aW5nIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIEl0IGlzIGFib3V0IDIgbWludXRlcyBsb25nLiIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwidGltZU1pbnV0ZXMiOjMsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IldoYXQgZG9lcyB0aGUgbWFuIGV4cGxhaW4\/Iiwib3B0aW9ucyI6WyJhIG5ldyBwcm9jZWR1cmUiLCJhIHN0YWZmIHJldHJlYXQiLCJhIGNhdGVyaW5nIHNlcnZpY2UiLCJhIHN1cnZleSByZXN1bHQiXSwia2V5IjowLCJyZWNvbiI6dHJ1ZX0seyJuIjoyLCJzdGVtIjoiSG93IGRpZCB0aGUgbWFuIGNvbWUgdXAgd2l0aCB0aGUgZHJpbmtzIG1lbnU\/Iiwib3B0aW9ucyI6WyJIZSBhc2tlZCB0aGUgY2F0ZXJlci4iLCJIZSBzZW50IGFyb3VuZCBhIHN1cnZleS4iLCJIZSBjaGVja2VkIHRoZSBvZmZpY2UgZnJpZGdlLiIsIkhlIGNvcGllZCBhbm90aGVyIGNvbXBhbnkncyBsaXN0LiJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjMsInN0ZW0iOiJXaGVuIGFyZSBwZW9wbGUgc3VwcG9zZWQgdG8gcGF5PyIsIm9wdGlvbnMiOlsiZWFjaCB0aW1lIHRoZXkgdGFrZSBhIGRyaW5rIiwiYXQgdGhlIGVuZCBvZiBlYWNoIG1vbnRoIiwiYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIG1vbnRoIiwiYWZ0ZXIgdGhlIHN0YWZmIHJldHJlYXQiXSwia2V5IjoyLCJyZWNvbiI6dHJ1ZX0seyJuIjo0LCJzdGVtIjoiV2h5IGRvZXMgdGhlIG1hbiBtZW50aW9uIGdvdXJtZXQgY29mZmVlIHdpdGggY3JlYW0\/Iiwib3B0aW9ucyI6WyJ0byBhZHZlcnRpc2UgYSBuZXcgcHJvZHVjdCIsInRvIGV4cGxhaW4gd2hhdCBoZSBkcmlua3MiLCJ0byB3YXJuIGFib3V0IHRoZSBjb3N0IiwidG8gbWFrZSBhIGNvbXBhcmlzb24iXSwia2V5IjozLCJyZWNvbiI6dHJ1ZX0seyJuIjo1LCJzdGVtIjoiV2hhdCBkaWQgdGhlIG1hbiBhbmQgd29tYW4gYWdyZWUgYWJvdXQ\/Iiwib3B0aW9ucyI6WyJ3aGV0aGVyIHRoZSByZWZyaWdlcmF0b3IgaXMgb3ZlcmNyb3dkZWQiLCJob3cgbXVjaCBlYWNoIGRyaW5rIHNob3VsZCBjb3N0Iiwid2hlbiB0aGUgc3RhZmYgcmV0cmVhdCB3aWxsIGJlIGhlbGQiLCJ3aG8gd2lsbCBtYW5hZ2UgdGhlIEJldmVyYWdlIENsdWIiXSwia2V5IjowLCJyZWNvbiI6dHJ1ZX0seyJuIjo2LCJzdGVtIjoiV2hhdCBkb2VzIHRoZSB3b21hbiB0aGluayBhYm91dCBwZW9wbGUgaW4gdGhlIG9mZmljZT8iLCJvcHRpb25zIjpbIlRoZXkgYXJlIHZlcnkgZ2VuZXJvdXMuIiwiVGhleSBkcmluayB0b28gbXVjaCBjb2ZmZWUuIiwiVGhleSdyZSB1bnRydXN0d29ydGh5LiIsIlRoZXkgd2FzdGUgb2ZmaWNlIHN1cHBsaWVzLiJdLCJrZXkiOjIsInJlY29uIjp0cnVlfV19XX0seyJuYW1lIjoiUGFydCA0OiBMaXN0ZW5pbmcgdG8gYSBOZXdzIEl0ZW0iLCJoZWFkZXJUaXRsZSI6IlNldCAxMiBcdTIwMTMgUHJhY3RpY2UgVGVzdCAyIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCA0OiBMaXN0ZW5pbmcgdG8gYSBOZXdzIEl0ZW0iLCJpbnRyb1RpdGxlIjoiTGlzdGVuaW5nIHRvIGEgTmV3cyBJdGVtIiwiaW50cm9CdWxsZXRzIjpbIllvdSB3aWxsIGhlYXIgYSBuZXdzIGl0ZW0gYWJvdXQgYSBwb3B1bGFyIGV2ZW50LiBJdCBwbGF5cyBvbmx5IG9uY2UuIiwiQWZ0ZXIgdGhlIG5ld3MgaXRlbSwgY29tcGxldGUgZWFjaCBzdGF0ZW1lbnQgdXNpbmcgdGhlIGRyb3AtZG93biBtZW51LiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGNvbXBsZXRlIGVhY2ggc3RhdGVtZW50IGZyb20gdGhlIGRyb3AtZG93biBtZW51ICggXHUyNWJlICkuIiwidHJhbnNjcmlwdCI6IlBhcnQgNDogTGlzdGVuaW5nIHRvIGEgTmV3cyBJdGVtXG5Zb3Ugd2lsbCBoZWFyIGEgbmV3cyBpdGVtIGFib3V0IGEgcG9wdWxhciBldmVudC5cbkhhbGlmYXggYXR0cmFjdHMgdmlzaXRvcnMgYWxsIHllYXIgcm91bmQsIGJ1dCBzaW5jZSAyMDEwLCBpdCBpcyBwYXJ0aWN1bGFybHkgYnVzeSBpbiBmYWxsIHdoZW5cbnRoZSB1bmlxdWUgZXZlbnQgSGFsLUNvbiB0YWtlcyBwbGFjZSwgXCJIYWxcIiBiZWluZyBzaG9ydCBmb3IgSGFsaWZheCwgYW5kIFwiQ29uJycgc2hvcnQgZm9yXG5jb252ZW50aW9uLiBJbiBIYWwtQ29uJ3MgZmlyc3QgeWVhciB0aGVyZSB3ZXJlIDEsNzAwIGF0dGVuZGVlcy4gQSBtZXJlIHNpeCB5ZWFycyBsYXRlciwgYW5cbmluY3JlZGlibGUgOSwwMDAgZGVsZWdhdGVzIGNyb3dkZWQgaW50byB0aGUgY2l0eSBmb3IgdGhlIGV2ZW50LiBIYWwtQ29uIGNlbGVicmF0ZXMgZ2Vla1xucG9wLWN1bHR1cmUsIGEgdHJlbmQgdGhhdCBjb250aW51ZXMgdG8gZ3JvdyBpbiBwb3B1bGFyaXR5IGFtb25nIHRob3NlIHVuZGVyIDQwLlxuVG8gaGVscCB0aG9zZSB1bmZhbWlsaWFyIHdpdGggdGhlIGphcmdvbiwgd2UgaW50ZXJ2aWV3ZWQgbG9jYWwgb3JnYW5pemVyIEFsZXggSmFydmlzLiBIZVxuZXhwbGFpbmVkIHRoYXQgZ2VlayBwb3AtY3VsdHVyZSByZWZlcnMgdG8gYWN0aXZpdGllcyBvZiBwZW9wbGUgaW50ZXJlc3RlZCBpbiBzY2llbmNlIGZpY3Rpb24sXG5mYW50YXN5LCB2aWRlbyBnYW1lcywgYm9hcmQgZ2FtZXMsIGNvbWljIGJvb2tzLCBhbmQgZWxhYm9yYXRlIHJvbGUtcGxheWluZyB0aGF0IGludm9sdmVzXG5jb3N0dW1lcy4gSmFydmlzIHNhaWQgdGhhdCBtYW55IGF0dGVuZGVlcyBhcHBlYXIgaW4gY29zdHVtZXMgdGhhdCBib2dnbGUgdGhlIG1pbmQuIFRoZXNlXG5hcmVuJ3QgYWR1bHQgdmVyc2lvbnMgb2YgSGFsbG93ZWVuIGNvc3R1bWVzLCBidXQgY2xvdGhlcyBjYXJlZnVsbHkgY3JhZnRlZCBieSBlYWNoXG5pbmRpdmlkdWFsIGZvciBhIHVuaXF1ZSByb2xlLXBsYXkgY2hhcmFjdGVyLiBHYW1pbmcgZm9yIHRoZXNlIHBhcnRpY2lwYW50cyBtZWFucyBsaXZlXG5lbmFjdG1lbnRzLCBub3QganVzdCBjb21wdXRlciBnYW1lcy5cbk5vdCBldmVyeW9uZSBpbiB0aGUgY2l0eSB3ZWxjb21lcyBzdWNoIHVudXN1YWwgZXZlbnRzLCBwZXJoYXBzIGZlYXJpbmcgYW4gZW5jb3VudGVyXG53aXRoIGFuIHVuZmFtaWxpYXIgZHJlc3NlZC11cCBjaGFyYWN0ZXIsIGJ1dCBIYWwtQ29uIHdpbGwgcmV0dXJuIG5leHQgeWVhciB3aXRoIGFuXG5leHBlY3RlZCAxMCwwMDAgYXR0ZW5kZWVzLCBicmluZ2luZyByZXZlbnVlIGFuZCBhIGRhc2ggb2YgY29sb3VyZnVsIGV4Y2l0ZW1lbnQuIiwic2VjdGlvbnMiOlt7ImxhYmVsIjoiTmV3cyBJdGVtIiwiZHVyYXRpb24iOjg5LCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBmb2xsb3dpbmcgbmV3cyBpdGVtLiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4iLCJtZWRpYVR5cGUiOiJhdWRpbyIsInRpbWVNaW51dGVzIjozLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJBdHRlbmRhbmNlIGF0IEhhbC1Db24gaGFzIGdyb3duIGJlY2F1c2UiLCJvcHRpb25zIjpbIm1vcmUga2lkcyBsaWtlIGRyZXNzaW5nIGluIGNvc3R1bWVzLiIsImF0dGVuZGVlcyBlbmpveSBjb21pbmcgdG8gSGFsaWZheC4iLCJ0aGUgZXZlbnQgaGFzIGFwcGVhbCBmb3IgZXZlcnlvbmUuIiwiaXRzIHRoZW1lIGlzIGluY3JlYXNpbmdseSBwb3B1bGFyLiJdLCJrZXkiOjN9LHsibiI6Miwic3RlbSI6IkhhbC1Db24gdGVybWlub2xvZ3kgaXMiLCJvcHRpb25zIjpbImtub3duIG1vc3RseSB0byBjb3N0dW1lIGRlc2lnbmVycy4iLCJ0YWtlbiBmcm9tIHNjaWVuY2UgZmljdGlvbiBtb3ZpZXMuIiwiY29ubmVjdGVkIHRvIGdlZWsgcG9wIGN1bHR1cmUuIiwidW5mYW1pbGlhciB0byBsb2NhbCByZXNpZGVudHMuIl0sImtleSI6Mn0seyJuIjozLCJzdGVtIjoiRHVyaW5nIEhhbC1Db24sIGNvc3R1bWVzIGFyZSIsIm9wdGlvbnMiOlsidW5wb3B1bGFyIHdpdGggc29tZSBsb2NhbHMuIiwid29ybiBieSBjb25mZXJlbmNlIHBsYW5uZXJzLiIsInB1cmNoYXNlZCBhdCB0aGUgY29udmVudGlvbi4iLCJjcmVhdGVkIGZvciBIYWxsb3dlZW4uIl0sImtleSI6MH0seyJuIjo0LCJzdGVtIjoiVGhlIHNwZWFrZXIgdGhpbmtzIEhhbC1Db24gaXMiLCJvcHRpb25zIjpbImFuIGF0dHJhY3RpdmUgZXZlbnQgZm9yIHZpc2l0b3JzLiIsImFuIGV4dGVuc2lvbiBvZiBIYWxsb3dlZW4gYWN0aXZpdGllcy4iLCJhIGZvcm0gb2YgZW50ZXJ0YWlubWVudCBmb3IgY2hpbGRyZW4uIiwiYSBjb3Vyc2UgaW4gY29zdHVtZSBkZXNpZ24gZm9yIGFkdWx0cy4iXSwia2V5IjowfSx7Im4iOjUsInN0ZW0iOiJUaGUgbmV3cyBpdGVtIGlzIGFib3V0Iiwib3B0aW9ucyI6WyJhbiBldmVudCBkaXNsaWtlZCBieSB5b3VuZyBhZHVsdHMuIiwiYW4gaW5jcmVhc2luZ2x5IHBvcHVsYXIgZXhoaWJpdGlvbi4iLCJ1bmlxdWUgY29zdHVtZSBjb21wZXRpdGlvbnMuIiwicGVvcGxlIHdobyBsaWtlIHZpZGVvIGdhbWVzLiJdLCJrZXkiOjF9XX1dfSx7Im5hbWUiOiJQYXJ0IDU6IExpc3RlbmluZyB0byBhIERpc2N1c3Npb24iLCJoZWFkZXJUaXRsZSI6IlNldCAxMiBcdTIwMTMgUHJhY3RpY2UgVGVzdCAyIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCA1OiBMaXN0ZW5pbmcgdG8gYSBEaXNjdXNzaW9uIiwiaW50cm9UaXRsZSI6Ikxpc3RlbmluZyB0byBhIERpc2N1c3Npb24iLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgd2F0Y2ggYSBkaXNjdXNzaW9uIGFtb25nIHRocmVlIHBlb3BsZS4gVGhleSBhcmUgc3RhcnRpbmcgYSBwYWludGluZyBjb21wYW55LiBUaGUgZGlzY3Vzc2lvbiB0YWtlcyBwbGFjZSBhdCB0aGUgaG91c2Ugb2Ygb25lIG9mIHRoZSBwZW9wbGUuIEl0IHBsYXlzIG9ubHkgb25jZS4iLCJBZnRlciB0aGUgZGlzY3Vzc2lvbiwgcXVlc3Rpb25zIHdpbGwgYXBwZWFyLiBDaG9vc2UgdGhlIGJlc3QgYW5zd2VyIHRvIGVhY2ggcXVlc3Rpb24uIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24gZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCBcdTI1YmUgKS4iLCJ0cmFuc2NyaXB0IjoiUGFydCA1OiBMaXN0ZW5pbmcgdG8gYSBEaXNjdXNzaW9uXG5Zb3Ugd2lsbCB3YXRjaCBhIGRpc2N1c3Npb24gYW1vbmcgdGhyZWUgcGVvcGxlLiBUaGV5IGFyZSBzdGFydGluZyBhIHBhaW50aW5nIGNvbXBhbnkuXG5UaGUgZGlzY3Vzc2lvbiB0YWtlcyBwbGFjZSBhdCB0aGUgaG91c2Ugb2Ygb25lIG9mIHRoZSBwZW9wbGUuXG5EZXZvbjogICAgICAgICBTbyB3ZVx1MjAxOXZlIGdvdCB0byBmaWd1cmUgb3V0IHNvbWUgZGV0YWlscyBhYm91dCB0aGlzIGhvdXNlIHBhaW50aW5nIGNvbXBhbnlcbnRoYXRcdTIwMTlzIG9mIG91cnMuIEZvciBleGFtcGxlLCB3ZVx1MjAxOXJlIG5vdCBsaW1pdGluZyBvdXJzZWx2ZXMgdG8gaG91c2VzLCBhcmUgd2U\/IEkgbWVhbiwgd2VcdTIwMTlsbFxuYWxzbyBwYWludCBwb3JjaGVzIGFuZCBvdXRkb29yIGZ1cm5pdHVyZSBpZiB0aGF0XHUyMDE5cyBhbGwgcGVvcGxlIHdhbnQ\/XG5SZW46IFN1cmUsIElcdTIwMTlsbCBnbyBmb3IgdGhhdC4gQnV0IHRoZW4gd2Ugc2hvdWxkIHJlY29uc2lkZXIgdGhlIG5hbWUgb2Ygb3VyIGNvbXBhbnkuXG5EZXZvbiwgeW91IHNob3VsZCBiZSB0aGUgb25lIHRvIHByb3ZpZGUgdGhlIGVzdGltYXRlcyBiZWNhdXNlIHlvdVx1MjAxOXJlIGdvb2QgYXQgaXQuIFlvdSBzYXlcbmEgam9iIHdpbGwgdGFrZSB1cyB0aHJlZSBkYXlzIGFuZCBpdCBkb2VzIVxuRGV2b246ICAgICAgIChtb2Rlc3RseSkgSXRcdTIwMTlzIGp1c3QgYXJpdGhtZXRpYy4gU28gbXVjaCBwZXIgc3F1YXJlIG1ldGVyIG9mIHN1cmZhY2UgYXJlYSxcbnBsdXMgc28gbXVjaCBwZXIgd2luZG93Li4gQWxpY2UsIHlvdSBzaG91bGQgYmUgdGhlIG9uZSB0byBtZWV0IHdpdGggcHJvc3BlY3RpdmUgY2xpZW50cztcbnlvdSBhcmUgZ29vZCBhdCB0aGF0IVxuQWxpY2U6IE9rYXksIEkgZG9uXHUyMDE5dCBtaW5kLiAobGF1Z2hpbmcpIElcdTIwMTlsbCBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG1pc3VuZGVyc3RhbmRpbmdzXG5hYm91dCB3aGF0IHdlXHUyMDE5cmUgc3VwcG9zZWQgdG8gYmUgZG9pbmcgYW5kIHdoZW4uXG5SZW46IFdoZW4geW91IHRhbGsgdG8gdGhlbSwgZG9uXHUyMDE5dCBmb3JnZXQgdG8gbWVudGlvbiBkb2dzLiBJZiB0aGV5IGhhdmUgZG9nZXMsIHRoZXlcbnNob3VsZCBrZWVwIHRoZW0gaW5zaWRlLiBPbiBvdXIgbGFzdCBqb2IsIGEgZG9nIGNhbWUgcnVzaGluZyBvdXQgb2YgYSBob3VzZSwgYW5kIGl0IHNjYXJlZFxubWUgc28gYmFkLCBJIGFsbW9zdCBmZWxsIG9mZiB0aGUgbGFkZGVyISBJdCB3YXMgaHVnZSFcbkFsaWNlOiBTcGVha2luZyBvZiBmYWxsaW5nIG9mZiBsYWRkZXJzLCB3ZSBzaG91bGQgZ2V0IGluc3VyYW5jZS4gTWF5YmUgd2Ugc2hvdWxkIGFsbCBnb1xudG9nZXRoZXIsIHRvIGEgZmV3IGRpZmZlcmVudCBpbnN1cmFuY2UgY29tcGFuaWVzLiBGaW5kIG91dCB3aGF0IGtpbmQgb2YgcG9saWN5IHdlIG5lZWQsXG5maW5kIG91dCBob3cgbXVjaCBpdCB3aWxsIGNvc3QsIHdoZXJlIHdlIGNhbiBnZXQgdGhlIGJlc3QgZGVhbC4uLlxuUmVuOiBUaGF0XHUyMDE5cyBhIGdvb2QgaWRlYS4gQW5kIEkgY2FuIGJlIGluIGNoYXJnZSBvZiBhbGwgZXF1aXBtZW50LiBXZVx1MjAxOWxsIG5lZWQgdG8gYnV5XG5uZXcgYnJ1c2hlcywgcGFpbnQgcm9sbGVycywgcGFucywgcGFpbnQgdGhpbm5lciwgbGFkZGVycyBcdTIwMjYgT2gsIGFuZCBJIHNob3VsZCBwaWNrIHVwIHBhaW50XG5zYW1wbGVzIGZyb20gYWxsIHRoZSBwYWludCBjb21wYW5pZXMuXG5BbGljZTogQW5kIGEgYmluZGVyIHRvIHB1dCB0aGVtIGluLiBUaGF0IHdheSBpdFx1MjAxOWxsIGJlIGNvbnZlbmllbnQgZm9yIG1lIHRvIHNob3cgcGVvcGxlXG53aGF0IHRoZWlyIG9wdGlvbnMgYXJlLiBBbmQgYSBiaW5kZXIgd2lsbCBrZWVwIHRoZSBjYXJkcyBjbGVhbi5cbkRldm9uOiAgICAgICAgQW5kIHNwZWFraW5nIG9mIGVxdWlwbWVudCwgYXJlIHdlIGdvaW5nIHRvIGhvbGQgb2ZmIG9uIGJ1eWluZyBvdXIgb3duXG5zY2FmZm9sZGluZz8gSXRcdTIwMTlzIGV4cGVuc2l2ZSwgYW5kIHdlIGRvblx1MjAxOXQgbmVlZCBpdCBhdCBldmVyeSBqb2IuIFdlIGNhbiByZW50IGl0IHdoZW4gd2Vcbm5lZWQgaXQuXG5SZW46IE5vLCBJIHRoaW5rIHdlIHNob3VsZCBnbyBhaGVhZCBhbmQgYnV5IGl0LiBJdFx1MjAxOWxsIGJlIGxlc3MgZXhwZW5zaXZlIGluIHRoZSBsb25nIHJ1bi5cbkFsaWNlOiBCdXQgd2UgZG9uXHUyMDE5dCBoYXZlIHJvb20gb24gb3VyIHRydWNrIGZvciBhbGwgb3VyIGxhZGRlcnMgYW5kIHNjYWZmb2xkaW5nLCBkbyB3ZT9cbkNvdWxkblx1MjAxOXQgd2UganVzdCB1c2Ugb3VyIGV4dGVuc2lvbiBsYWRkZXJzP1xuRGV2b246ICAgICAgICBNYXliZSB3ZSBzaG91bGQgaG9sZCBvZmYgb24gdGhpcyBhbmQgbWFrZSBhIGRlY2lzaW9uIGxhdGVyIG9uLiBXaGF0IGFib3V0XG50aGUgYm9va3M\/XG5BbGljZTogTXkgc2lzdGVyIHdpbGwgdGFrZSBjYXJlIG9mIHRoYXQsIGlmIHlvdSBsaWtlLiBCdXQgd2UgaGF2ZSB0byBiZSBzdXJlIHRvIHNhdmUgYWxsIG91clxucmVjZWlwdHMgYW5kIG1ha2Ugc3VyZSB3ZSBtYWtlIG5vdGUgb2YgZXZlcnkgZGV0YWlsIHNvIHNoZSBjYW4gbWFrZSB1cCB0aGUgaW52b2ljZXMuIiwic2VjdGlvbnMiOlt7ImxhYmVsIjoiRGlzY3Vzc2lvbiAodmlkZW8pIiwiZHVyYXRpb24iOjEzNiwibWVkaWFJbnN0cnVjdGlvbiI6IldhdGNoIHRoZSBkaXNjdXNzaW9uLiBZb3Ugd2lsbCB3YXRjaCBpdCBvbmx5IG9uY2UuIEl0IGlzIGFib3V0IDEuNSB0byAyIG1pbnV0ZXMgbG9uZy4iLCJtZWRpYVR5cGUiOiJ2aWRlbyIsInRpbWVNaW51dGVzIjozLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJXaGF0IGFyZSB0aGUgcGVvcGxlIG1haW5seSB0cnlpbmcgdG8gbWFrZSBkZWNpc2lvbnMgYWJvdXQ\/Iiwib3B0aW9ucyI6WyJ0aGUgbmFtZSBvZiB0aGVpciBjb21wYW55IiwidGhlIGRpdmlzaW9uIG9mIGxhYm91ciIsInRoZSBwcmljZXMgdGhleSB3aWxsIGNoYXJnZSIsInRoZSB0aW1lIGpvYnMgd2lsbCB0YWtlIl0sImtleSI6MX0seyJuIjoyLCJzdGVtIjoiV2hhdCBpcyBBbGljZSBiZXN0IGF0IGRvaW5nPyIsIm9wdGlvbnMiOlsiZXN0aW1hdGluZyBwcmljZXMiLCJsaWFpc2luZyB3aXRoIGNsaWVudHMiLCJnYXRoZXJpbmcgZXF1aXBtZW50IiwidHJhY2tpbmcgdGhlIGZpbmFuY2VzIl0sImtleSI6MX0seyJuIjozLCJzdGVtIjoiV2hhdCBpcyBEZXZvbidzIHJlc3BvbnNlIHRvIHByYWlzZSBhYm91dCBoaXMgZXN0aW1hdGVzPyIsIm9wdGlvbnMiOlsic3VycHJpc2UiLCJhbXVzZW1lbnQiLCJjb25mdXNpb24iLCJtb2Rlc3R5Il0sImtleSI6M30seyJuIjo0LCJzdGVtIjoiV2h5IGRpZCBSZW4gYWxtb3N0IGZhbGwgb2ZmIHRoZSBsYWRkZXIgYXQgdGhlaXIgbGFzdCBqb2I\/Iiwib3B0aW9ucyI6WyJTaGUgd2Fzbid0IHBheWluZyBhdHRlbnRpb24uIiwiU2hlIHdhcyB2ZXJ5IHRpcmVkIHRoYXQgZGF5LiIsIlNoZSB3YXMgdGFrZW4gYnkgc3VycHJpc2UuIiwiU2hlIHdhcyB1c2luZyBhIGJyb2tlbiBsYWRkZXIuIl0sImtleSI6Mn0seyJuIjo1LCJzdGVtIjoiV2hhdCBkb2VzIEFsaWNlIHRoaW5rIGFib3V0IGdldHRpbmcgaW5zdXJhbmNlPyIsIm9wdGlvbnMiOlsiVGhleSBzaG91bGQgZG8gdGhhdCBmaXJzdC4iLCJUaGV5IHNob3VsZCBzaG9wIGFyb3VuZC4iLCJEZXZvbiBzaG91bGQgdGFrZSBjYXJlIG9mIGl0LiIsIlRoZSBpbnN1cmFuY2UgdGhleSBoYXZlIGlzIGVub3VnaC4iXSwia2V5IjoxfSx7Im4iOjYsInN0ZW0iOiJXaGF0IGRvZXMgQWxpY2UgdGhpbmsgYWJvdXQgdXNpbmcgYSBiaW5kZXI\/Iiwib3B0aW9ucyI6WyJJdCdzIGEgZ29vZCB3YXkgdG8gcHJlc2VudCBzYW1wbGVzLiIsIkl0J3MgdW5uZWNlc3NhcnkgZm9yIHRoZWlyIGJ1c2luZXNzLiIsIlBhaW50IGNvbXBhbmllcyB3aWxsIHN1cHBseSBmcmVlIGJpbmRlcnMuIiwiVGhleSBjb3VsZCBzYXZlIG1vbmV5IGJ5IHVzaW5nIG9uZS4iXSwia2V5IjowfSx7Im4iOjcsInN0ZW0iOiJXaGF0IGRlY2lzaW9uIGRvIHRoZXkgZGVjaWRlIHRvIHBvc3Rwb25lPyIsIm9wdGlvbnMiOlsid2hldGhlciB0byBwdXJjaGFzZSBpbnN1cmFuY2UiLCJ3aGV0aGVyIHRvIGJ1eSBwYWludCBvciBzdGFpbiIsIndoZXRoZXIgdG8gZ2V0IHBhaW50IHNhbXBsZSBjYXJkcyIsIndoZXRoZXIgdG8gYnV5IG9yIHJlbnQgZXF1aXBtZW50Il0sImtleSI6M30seyJuIjo4LCJzdGVtIjoiV2hvIHdpbGwgdGFrZSBjYXJlIG9mIHRoZWlyIGZpbmFuY2lhbCByZWNvcmRzPyIsIm9wdGlvbnMiOlsidGhlIHdvbWFuIiwiYSBmcmllbmQiLCJhIHJlbGF0aXZlIiwiYSBjb2xsZWFndWUiXSwia2V5IjoyfV19XX0seyJuYW1lIjoiUGFydCA2OiBMaXN0ZW5pbmcgZm9yIFZpZXdwb2ludHMiLCJoZWFkZXJUaXRsZSI6IlNldCAxMiBcdTIwMTMgUHJhY3RpY2UgVGVzdCAyIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCA2OiBMaXN0ZW5pbmcgZm9yIFZpZXdwb2ludHMiLCJpbnRyb1RpdGxlIjoiTGlzdGVuaW5nIGZvciBWaWV3cG9pbnRzIiwiaW50cm9CdWxsZXRzIjpbIllvdSB3aWxsIGhlYXIgYSBwcmVzZW50YXRpb24gYWJvdXQgYSB3b3JrcGxhY2UgaXNzdWUuIEl0IHBsYXlzIG9ubHkgb25jZS4iLCJBZnRlciB0aGUgcmVwb3J0LCBjb21wbGV0ZSBlYWNoIHN0YXRlbWVudCB1c2luZyB0aGUgZHJvcC1kb3duIG1lbnUuIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gY29tcGxldGUgZWFjaCBzdGF0ZW1lbnQgZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCBcdTI1YmUgKS4iLCJ0cmFuc2NyaXB0IjoiUGFydCA2OiBMaXN0ZW5pbmcgZm9yIFZpZXdwb2ludHNcbllvdSB3aWxsIGhlYXIgYSBwcmVzZW50YXRpb24gYWJvdXQgYSB3b3JrcGxhY2UgaXNzdWUuXG5JbiB0aGlzIG5ldyBhZ2Ugb2YgdGVjaG5vbG9neSwgd29ya3BsYWNlIG5vcm1zIGFuZCB3b3JrcGxhY2UgY3VsdHVyZSBhcmUgcmFwaWRseVxuY2hhbmdpbmcuIFByZXZpb3VzbHksIGVtcGxveWVlcyB3ZXJlIGdlbmVyYWxseSBleHBlY3RlZCB0byBjb21tdXRlIHRvIGEgcGh5c2ljYWxcbm9mZmljZSBhbmQgY29tcGxldGUgdGhlaXIgd29yayBpbiBjb21wYW55IHByb3ZpZGVkIHdvcmtzcGFjZXMuIFRvZGF5LCB3aXRoIG1vYmlsZVxuZGV2aWNlcyBzdWNoIGFzIHNtYXJ0IHBob25lcywgdGFibGV0cywgYW5kIGxhcHRvcHMgY29tbW9ucGxhY2UsIG1hbnkgY29tcGFuaWVzIGFyZVxubW92aW5nIHRvd2FyZHMgbW9yZSBmbGV4aWJsZSB3b3JrIGFycmFuZ2VtZW50cywgd2l0aCB3b3JrIGhvdXJzIGFuZCB3b3JrIGxvY2F0aW9uc1xubm8gbG9uZ2VyIGJlaW5nIGZpeGVkLiBXaGlsZSBtYW55IHdlbGNvbWUgc3VjaCBjaGFuZ2VzLCBvdGhlcnMgYXJlIG5vdCB5ZXQgY29udmluY2VkLlxuRW1tYW51ZWwgQ29ybGV5LCBoZWFkIG9mIG9wZXJhdGlvbnMgYXQgVGhpbmstVGVjaCBJbmMuLCBhIGdsb2JhbCBjb3Jwb3JhdGlvbiwgbWFuYWdlc1xuYSB3b3JrZm9yY2Ugb2YgZmlmdHktdHdvIGVtcGxveWVlcy4gSGF2aW5nIGhlbGQgdGhpcyBwb3NpdGlvbiBmb3Igb3ZlciBmaWZ0ZWVuIHllYXJzLFxuQ29ybGV5IHRha2VzIHByaWRlIGluIG1haW50YWluaW5nIGEgcHJvZHVjdGl2ZSBhbmQgZW5qb3lhYmxlIHdvcmsgZW52aXJvbm1lbnQuIEhlXG52YWx1ZXMgdGVhbXdvcmsgYW5kIGJlbGlldmVzIHRoYXQgYSBwcm9kdWN0aXZlIHdvcmtwbGFjZSBpcyBiZXN0IGFjaGlldmVkIHdoZW4gY28tXG53b3JrZXJzIGFyZSBmcmllbmRzLiBDb25zZXF1ZW50bHksIENvcmxleSB2aWV3cyB0aGUgZ3Jvd2luZyAnd29yayBmcm9tIGFueXdoZXJlJyB0cmVuZFxud2l0aCB0cmVwaWRhdGlvbi4gTm90IG9ubHkgaXMgaXQgbW9yZSBkaWZmaWN1bHQgdG8gc3VwZXJ2aXNlIHdvcmtlcnMgd2hvIGFyZSBub3QgcGh5c2ljYWxseVxucHJlc2VudCwgYnV0IHdpdGggYW4gZW50aXJlIHdvcmtmb3JjZSB3b3JraW5nIGZyb20gaG9tZSBvciBzb21lIG90aGVyIHJlbW90ZSBsb2NhdGlvbixcbnRoZXJlIGlzIGxpdHRsZSBvcHBvcnR1bml0eSBmb3IgZ2V0dGluZyB0byBrbm93IG9uZVx1MjAxOXMgY28td29ya2Vycy4gQ29ybGV5IHdvcnJpZXMgdGhhdCwgd2hpbGVcbnRoZSBmbGV4aWJpbGl0eSBvZiB3b3JraW5nIGZyb20gYW55d2hlcmUgbWF5IGluaXRpYWxseSBhcHBlYWwgdG8gc29tZSwgZXZlbnR1YWxseVxuZW1wbG95ZWVzIHdpbGwgZmVlbCBpc29sYXRlZCBhbmQgbG9zZSB0aGVpciBzZW5zZSBvZiBjb21taXRtZW50LlxuSG93ZXZlciwgZm9yIERhbmllbCBTYWdlLCBhIGNvbXB1dGVyIHByb2dyYW1tZXIsIG1vYmlsZSB3b3JraW5nIGhhcyBoYWQgYW5cbmVub3Jtb3VzIGltcGFjdCBvbiBoaXMgYWJpbGl0eSB0byBtYWludGFpbiBhIGhlYWx0aHkgd29yay9saWZlIGJhbGFuY2UuIEEgc2luZ2xlIGZhdGhlcixcblNhZ2UgdXNlZCB0byBtaXNzIGNvdW50bGVzcyBkYXlzIG9mIHdvcmsgd2hlbiBoaXMgY2hpbGRyZW4gd2VyZSBob21lIHNpY2s7IHRoaXMgYWZmZWN0ZWRcbm5vdCBvbmx5IGhpcyBwcm9kdWN0aXZpdHksIGJ1dCBhbHNvIGhvdyBjby13b3JrZXJzIGFuZCBtYW5hZ2VycyBwZXJjZWl2ZWQgaGlzXG5jb21taXRtZW50IHRvIHRoZSBjb21wYW55LiBBY2NvcmRpbmcgdG8gU2FnZSwgdGhlIHN0cmVzcyBvZiB0cnlpbmcgdG8ga2VlcCB1cCB3aXRoXG5ob21lIGFuZCB3b3JrIGNvbW1pdG1lbnRzIHdhcyB0YWtpbmcgaXRzIHRvbGwgb24gaGlzIGhlYWx0aC4gSGF2aW5nIHNwZW50IHRoZSBwYXN0IHR3b1xueWVhcnMgd29ya2luZyBmcm9tIGhvbWUsIFNhZ2UgaXMgZW1waGF0aWMgdGhhdCBmbGV4aWJsZSB3b3JrIGFycmFuZ2VtZW50cyBhcmUgdGhlIHdheVxub2YgdGhlIGZ1dHVyZS4gQWx0aG91Z2ggaGUgYWRtaXRzIHRvIG9jY2FzaW9uYWxseSBtaXNzaW5nIHRoZSBjYW1hcmFkZXJpZSBvZiBoaXNcbmNvbGxlYWd1ZXMsIHRoZSBiZW5lZml0cyBvZiBiZWluZyBhYmxlIHRvIHdvcmsgd2hlbiBhbmQgd2hlcmUgaGUgd2FudHMgZmFyIG91dHdlaWdoIGFueVxuZHJhd2JhY2tzLlxuQW5pdGEgQnVmZmlsbCwgQ0VPIG9mIEdsb2JhbC1Tb2x1dGlvbnMsIGFja25vd2xlZGdlcyB0aGUgY29uY2VybnMgb2YgQ29ybGV5OyBob3dldmVyLFxuc2hlIGJlbGlldmVzIHRoYXQgYSBtb2JpbGUgd29ya2ZvcmNlIGNhbiBiZSBhIHdpbi13aW4gc2l0dWF0aW9uLiBOb3Qgb25seSBkbyBlbXBsb3llZXNcbmFwcHJlY2lhdGUgdGhlIGZsZXhpYmlsaXR5IGFuZCBjb250cm9sIGFmZm9yZGVkIHRvIHRoZW0sIGJ1dCBjb21wYW5pZXMgYmVuZWZpdCBmcm9tIGxvd2VyXG5pbmZyYXN0cnVjdHVyZSBjb3N0cy4gSWYgb25lXHUyMDE5cyBlbnRpcmUgd29ya2ZvcmNlIHdvcmtzIGZyb20gaG9tZSwgdGhlIGNvc3RzIGludm9sdmVkIGluXG5tYWludGFpbmluZyBhbiBvZmZpY2Ugc3BhY2UgZGlzYXBwZWFyLiBBbHRob3VnaCBCdWZmaWxsIGFkbWl0cyB0aGF0IHN3aXRjaGluZyB0byBtb2JpbGVcbndvcmsgYXJyYW5nZW1lbnRzIGNhbiBwb3NlIGNlcnRhaW4gY2hhbGxlbmdlcyB3aGVuIGl0IGNvbWVzIHRvIGVtcGxveWVlIHN1cGVydmlzaW9uLFxuc2hlIGJlbGlldmVzIHRoYXQgdGhpcyBjYW4gYmUgY291bnRlcmVkIGJ5IGEgc2hpZnQgaW4gdGhpbmtpbmcuIEF0IEdsb2JhbC1Tb2x1dGlvbnMsXG5lbXBsb3llZSBwZXJmb3JtYW5jZSBpcyBkZXRlcm1pbmVkIHNvbGVseSBieSB0aGUgdGFuZ2libGUgcmVzdWx0cyB0aGV5IGFjaGlldmUsIG5vdCB0aGVcbnRpbWUgc3BlbnQgaW4gYWNoaWV2aW5nIHRoZW0uIiwic2VjdGlvbnMiOlt7ImxhYmVsIjoiUmVwb3J0IiwiZHVyYXRpb24iOjE4NCwibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZm9sbG93aW5nIHJlcG9ydC4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIEl0IGlzIGFib3V0IDMgbWludXRlcyBsb25nLiIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwidGltZU1pbnV0ZXMiOjQsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IlRoZSBiZXN0IHRpdGxlIGZvciB0aGlzIHByZXNlbnRhdGlvbiB3b3VsZCBiZSIsIm9wdGlvbnMiOlsiTW9iaWxlIFdvcms6IFByb21pc2Ugb3IgUGVyaWwuIiwiV29ya3BsYWNlIEN1bHR1cmU6IFRoZSBOZXcgTm9ybWFsLiIsIldvcmtpbmcgZnJvbSBIb21lOiBNYWludGFpbmluZyBCYWxhbmNlLiIsIk1hbmFnZW1lbnQgVG9kYXk6IExlYWRpbmcgYSBNb2JpbGUgV29ya2ZvcmNlLiJdLCJrZXkiOjB9LHsibiI6Miwic3RlbSI6IlRoZSBoZWFkIG9mIG9wZXJhdGlvbnMgYXQgVGhpbmstVGVjaCBpcyBjb25jZXJuZWQgdGhhdCB0aGUgbmV3IHRyZW5kIHdpbGwiLCJvcHRpb25zIjpbImF0dHJhY3QgZW1wbG95ZWVzIHRvIG90aGVyIGNvbXBhbmllcy4iLCJkZWNyZWFzZSBlbXBsb3llZSBkZWRpY2F0aW9uLiIsImluY3JlYXNlIHRoZSBjb21wYW55J3MgZXhwZW5zZXMuIiwiY2F1c2UgZXhjZXNzaXZlIHNvY2lhbGl6aW5nIGR1cmluZyB3b3JrLiJdLCJrZXkiOjF9LHsibiI6Mywic3RlbSI6IlRoZSBoZWFkIG9mIG9wZXJhdGlvbnMgYXQgVGhpbmstVGVjaCB3b3VsZCBsaWtlbHkgY2hvb3NlIHRvIHdvcmsiLCJvcHRpb25zIjpbInNldmVyYWwgZGF5cyBhIHdlZWsgZnJvbSBob21lLiIsImV2ZXJ5IGRheSBmcm9tIGhpcyBob21lIG9mZmljZS4iLCJldmVyeSBkYXkgYXQgdGhlIGNvbXBhbnkncyBvZmZpY2UuIiwicGFydCBvZiB0aGUgeWVhciBpbiBhbm90aGVyIGNvdW50cnkuIl0sImtleSI6Mn0seyJuIjo0LCJzdGVtIjoiVGhlIGNvbXB1dGVyIHByb2dyYW1tZXIgYmVsaWV2ZXMgaGlzIG5ldyB3b3JrIGFycmFuZ2VtZW50IGhhcyIsIm9wdGlvbnMiOlsiY2F1c2VkIGhpbSBleHRyYSBzdHJlc3MuIiwibWFkZSBoaW0gZmVlbCBpc29sYXRlZC4iLCJpbXByb3ZlZCBoaXMgd29yayBldGhpYy4iLCJpbmNyZWFzZWQgaGlzIGhhcHBpbmVzcy4iXSwia2V5IjozfSx7Im4iOjUsInN0ZW0iOiJUaGUgQ0VPIG9mIEdsb2JhbCBTb2x1dGlvbnMgYmVsaWV2ZXMgdGhlIG5ldyB0cmVuZCB3aWxsIiwib3B0aW9ucyI6WyJiZSBjb3VudGVyZWQgYnkgYW5vdGhlciBzaGlmdCBpbiB0aGlua2luZy4iLCJiZW5lZml0IGNvcnBvcmF0aW9ucyBhbmQgd29ya2VycyBlcXVhbGx5LiIsIm92ZXJjb21lIHN1cGVydmlzb3JzJyBjdXJyZW50IHJlc2lzdGFuY2UgdG8gaXQuIiwicHJvdmUgdG8gYmUgbW9yZSBhZmZvcmRhYmxlIHRoYW4gZmlyc3QgcHJlZGljdGVkLiJdLCJrZXkiOjF9LHsibiI6Niwic3RlbSI6IlRoZSBDRU8gb2YgR2xvYmFsIFNvbHV0aW9ucyB3b3VsZCBsaWtlbHkgYWdyZWUgdGhhdCIsIm9wdGlvbnMiOlsibW9iaWxlIHdvcmtlcnMgbmVlZCBtb3JlIHN1cGVydmlzaW9uIHRoYW4gb3RoZXJzLiIsImVmZm9ydCBpcyBlcXVhbGx5IGltcG9ydGFudCBhcyB0aGUgZW5kIHByb2R1Y3QuIiwiY29tcGFuaWVzIHByb2ZpdCBmcm9tIGhhdmluZyBhIG1vYmlsZSB3b3JrIGZvcmNlLiIsImxvdyBjb3N0IGluZnJhc3RydWN0dXJlcyB1bHRpbWF0ZWx5IGJvb3N0IHdhZ2VzLiJdLCJrZXkiOjJ9XX1dfV19OwoKdmFyIENFTFBJUF9ZVCA9IHsgdmlkZW9JZDogJycgfTsgIC8qIGUuZy4gJ2RRdzR3OVdnWGNRJyBcdTIwMTQgU2V0IDEyIFRlc3QgMiBmdWxsIGxpc3RlbmluZyB2aWRlbyAqLwp2YXIgQ0xQX0NIQVBURVJTID0geyAnMC4wJzpbMCw1MjBdLCAnMC4xJzpbMCw1MjBdLCAnMC4yJzpbMCw1MjBdLCAnMS4wJzpbNTIwLDg1M10sICcyLjAnOls4NTMsMTI3Ml0sICczLjAnOlsxMjcyLDEzNjRdLCAnNC4wJzpbMTM2NCwxNTAzXSwgJzUuMCc6WzE1MDMsMTc1N10gfTsKCi8qIFRPRE86IHBsYWNlaG9sZGVyIG1hcHBpbmcgXHUyMDE0IHZlcmlmeSBhZ2FpbnN0IHRoZSBvZmZpY2lhbCBDRUxQSVAgc2NvcmUgY2hhcnQuICovCmZ1bmN0aW9uIGNsYkVzdGltYXRlKHJhdyl7CiAgaWYgKHJhdyA+PSAzNSkgcmV0dXJuIHsgbGV2ZWw6ICdDRUxQSVAgMTBcdTIwMTMxMicsIG5vdGU6ICdBZHZhbmNlZCBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDMwKSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCA5JywgICAgICAgIG5vdGU6ICdFZmZlY3RpdmUgcHJvZmljaWVuY3knIH07CiAgaWYgKHJhdyA+PSAyNykgcmV0dXJuIHsgbGV2ZWw6ICdDRUxQSVAgOCcsICAgICAgICBub3RlOiAnR29vZCBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDIyKSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCA3JywgICAgICAgIG5vdGU6ICdBZGVxdWF0ZSBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDE3KSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCA2JywgICAgICAgIG5vdGU6ICdEZXZlbG9waW5nIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMTEpIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDUnLCAgICAgICAgbm90ZTogJ0FjcXVpcmluZyBwcm9maWNpZW5jeScgfTsKICByZXR1cm4gICAgICAgICAgICB7IGxldmVsOiAnQ0VMUElQIDQgb3IgYmVsb3cnLCAgIG5vdGU6ICdLZWVwIHByYWN0aWNpbmchJyB9Owp9CgovKiA9PT09PT09PT09PT09PT09PT09PT0gZW5naW5lID09PT09PT09PT09PT09PT09PT09PSAqLwooZnVuY3Rpb24oKXsKICB2YXIgcmVkdWNlZE1vdGlvbiA9IHdpbmRvdy5tYXRjaE1lZGlhICYmIHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKScpLm1hdGNoZXM7CiAgdmFyIGNhdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBDYXQnKTsKICB2YXIgZG90c0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscERvdHMnKTsKICB2YXIgdG9vbGJhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBUb29sYmFyJyk7CiAgdmFyIHJlc3VsdHNFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBSZXN1bHRzJyk7CiAgdmFyIHNjb3JlQ2hpcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBTY29yZUNoaXAnKTsKCiAgdmFyIFRPVEFMX1EgPSAwOwogIFRFU1RfREFUQS5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHApeyBwLnNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24ocyl7IFRPVEFMX1EgKz0gcy5xdWVzdGlvbnMubGVuZ3RoOyB9KTsgfSk7CgogIHZhciBzY3JlZW5zID0gW107CiAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCwgcGkpewogICAgc2NyZWVucy5wdXNoKHsgdHlwZTogJ2ludHJvJywgcGk6IHBpIH0pOwogICAgcGFydC5zZWN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHNlYywgc2kpewogICAgICBzY3JlZW5zLnB1c2goeyB0eXBlOiAnbWVkaWEnLCBwaTogcGksIHNpOiBzaSB9KTsKICAgICAgc2NyZWVucy5wdXNoKHsgdHlwZTogJ3EnLCBwaTogcGksIHNpOiBzaSB9KTsKICAgIH0pOwogIH0pOwogIHNjcmVlbnMucHVzaCh7IHR5cGU6ICdmaW5pc2gnIH0pOwoKICB2YXIgc3RhdGUgPSB7CiAgICBzdGFydGVkOiBmYWxzZSwKICAgIGlkeDogMCwKICAgIGFuc3dlcnM6IHt9LCAgICAgIC8qICJwaS5zaS5xaSIgLT4gb3B0aW9uIGluZGV4ICgwLTMpICovCiAgICBjaGVja2VkOiBmYWxzZSwKICAgIHRpbWVyT246IHRydWUKICB9OwogIHZhciBtZWRpYVRpbWVyID0gbnVsbCwgcVRpbWVyID0gbnVsbCwgcVJlbWFpbmluZyA9IDA7CiAgdmFyIHBvcHVwID0gbnVsbCwgb3BlblRyaWdnZXIgPSBudWxsOwoKICBmdW5jdGlvbiBxS2V5KHBpLCBzaSwgcWkpeyByZXR1cm4gcGkgKyAnLicgKyBzaSArICcuJyArIHFpOyB9CiAgZnVuY3Rpb24gZm10KHNlYyl7IHZhciBtID0gTWF0aC5mbG9vcihzZWMvNjApLCBzID0gc2VjICUgNjA7IHJldHVybiBtICsgJzonICsgKHMgPCAxMCA\/ICcwJyA6ICcnKSArIHM7IH0KICBmdW5jdGlvbiBlbCh0YWcsIGNscywgdGV4dCl7CiAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTsKICAgIGlmIChjbHMpIGUuY2xhc3NOYW1lID0gY2xzOwogICAgaWYgKHRleHQgIT09IHVuZGVmaW5lZCkgZS50ZXh0Q29udGVudCA9IHRleHQ7CiAgICByZXR1cm4gZTsKICB9CiAgZnVuY3Rpb24gc2Nyb2xsVG9FbCh0YXJnZXQsIG9mZnNldCl7CiAgICB2YXIgeSA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyB3aW5kb3cucGFnZVlPZmZzZXQgLSAob2Zmc2V0IHx8IDcwKTsKICAgIHdpbmRvdy5zY3JvbGxUbyh7IHRvcDogeSwgYmVoYXZpb3I6IHJlZHVjZWRNb3Rpb24gPyAnYXV0bycgOiAnc21vb3RoJyB9KTsKICB9CiAgZnVuY3Rpb24gY2xlYXJUaW1lcnMoKXsKICAgIGlmIChtZWRpYVRpbWVyKXsgY2xlYXJJbnRlcnZhbChtZWRpYVRpbWVyKTsgbWVkaWFUaW1lciA9IG51bGw7IH0KICAgIGlmIChxVGltZXIpeyBjbGVhckludGVydmFsKHFUaW1lcik7IHFUaW1lciA9IG51bGw7IH0KICB9CiAgZnVuY3Rpb24gYW5zd2VyZWRDb3VudCgpeyByZXR1cm4gT2JqZWN0LmtleXMoc3RhdGUuYW5zd2VycykubGVuZ3RoOyB9CiAgZnVuY3Rpb24gdXBkYXRlU2NvcmVDaGlwKCl7CiAgICBpZiAoc3RhdGUuY2hlY2tlZCl7CiAgICAgIHNjb3JlQ2hpcC50ZXh0Q29udGVudCA9ICdTY29yZSAnICsgY29tcHV0ZVNjb3JlKCkudG90YWwgKyAnLycgKyBUT1RBTF9ROwogICAgfSBlbHNlIHsKICAgICAgc2NvcmVDaGlwLnRleHRDb250ZW50ID0gJ0Fuc3dlcmVkICcgKyBhbnN3ZXJlZENvdW50KCkgKyAnLycgKyBUT1RBTF9ROwogICAgfQogIH0KICBmdW5jdGlvbiBjb21wdXRlU2NvcmUoKXsKICAgIHZhciB0b3RhbCA9IDAsIHBlclBhcnQgPSBbXTsKICAgIFRFU1RfREFUQS5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQsIHBpKXsKICAgICAgdmFyIGMgPSAwLCBuID0gMDsKICAgICAgcGFydC5zZWN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHNlYywgc2kpewogICAgICAgIHNlYy5xdWVzdGlvbnMuZm9yRWFjaChmdW5jdGlvbihxLCBxaSl7CiAgICAgICAgICBuKys7CiAgICAgICAgICBpZiAoc3RhdGUuYW5zd2Vyc1txS2V5KHBpLCBzaSwgcWkpXSA9PT0gcS5rZXkgLSAxKXsgYysrOyB0b3RhbCsrOyB9CiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgICBwZXJQYXJ0LnB1c2goeyBjb3JyZWN0OiBjLCB0b3RhbDogbiB9KTsKICAgIH0pOwogICAgcmV0dXJuIHsgdG90YWw6IHRvdGFsLCBwZXJQYXJ0OiBwZXJQYXJ0IH07CiAgfQoKICAvKiAtLS0tLS0tLS0tIGRyb3Bkb3duIHBvcHVwIC0tLS0tLS0tLS0gKi8KICBmdW5jdGlvbiBjbG9zZVBvcHVwKCl7CiAgICBpZiAocG9wdXApeyBwb3B1cC5yZW1vdmUoKTsgcG9wdXAgPSBudWxsOyB9CiAgICBpZiAob3BlblRyaWdnZXIpeyBvcGVuVHJpZ2dlci5jbGFzc0xpc3QucmVtb3ZlKCdjbHAtb3BlbicpOyBvcGVuVHJpZ2dlciA9IG51bGw7IH0KICB9CiAgZnVuY3Rpb24gb3BlblBvcHVwKHRyaWdnZXIsIHBpLCBzaSwgcWkpewogICAgaWYgKG9wZW5UcmlnZ2VyID09PSB0cmlnZ2VyKXsgY2xvc2VQb3B1cCgpOyByZXR1cm47IH0KICAgIGNsb3NlUG9wdXAoKTsKICAgIHZhciBxID0gVEVTVF9EQVRBLnBhcnRzW3BpXS5zZWN0aW9uc1tzaV0ucXVlc3Rpb25zW3FpXTsKICAgIHZhciBrZXkgPSBxS2V5KHBpLCBzaSwgcWkpOwogICAgcG9wdXAgPSBlbCgnZGl2JywgJ2NscC1wb3AnKTsKICAgIHEub3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKG9wdCwgb2kpewogICAgICB2YXIgYiA9IGVsKCdidXR0b24nLCAnY2xwLW9wdCcgKyAoc3RhdGUuYW5zd2Vyc1trZXldID09PSBvaSA\/ICcgY2xwLXNlbCcgOiAnJykpOwogICAgICBiLnR5cGUgPSAnYnV0dG9uJzsKICAgICAgYi5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtcmFkaW8nKSk7CiAgICAgIGIuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnJywgb3B0KSk7CiAgICAgIGIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihldil7CiAgICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgc3RhdGUuYW5zd2Vyc1trZXldID0gb2k7CiAgICAgICAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgICAgICAgY2xvc2VQb3B1cCgpOwogICAgICAgIHNldFRyaWdnZXJMYWJlbCh0cmlnZ2VyLCBvcHQsIGZhbHNlKTsKICAgICAgfSk7CiAgICAgIHBvcHVwLmFwcGVuZENoaWxkKGIpOwogICAgfSk7CiAgICBjYXQuYXBwZW5kQ2hpbGQocG9wdXApOwogICAgLyogcG9zaXRpb246IGJlbG93IHRyaWdnZXIsIGZsaXAgYWJvdmUgd2hlbiBuZWFyIHZpZXdwb3J0IGJvdHRvbSAqLwogICAgcG9wdXAuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nOwogICAgdmFyIGNhdFJlY3QgPSBjYXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICB2YXIgdFJlY3QgPSB0cmlnZ2VyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgdmFyIHBvcFcgPSBwb3B1cC5vZmZzZXRXaWR0aCwgcG9wSCA9IHBvcHVwLm9mZnNldEhlaWdodDsKICAgIHZhciBsZWZ0ID0gdFJlY3QubGVmdCAtIGNhdFJlY3QubGVmdDsKICAgIGxlZnQgPSBNYXRoLm1heCg4LCBNYXRoLm1pbihsZWZ0LCBjYXQuY2xpZW50V2lkdGggLSBwb3BXIC0gOCkpOwogICAgdmFyIHRvcDsKICAgIGlmICh0UmVjdC5ib3R0b20gKyBwb3BIICsgMjQgPiB3aW5kb3cuaW5uZXJIZWlnaHQgJiYgdFJlY3QudG9wIC0gcG9wSCAtIDggPiAwKXsKICAgICAgdG9wID0gdFJlY3QudG9wIC0gY2F0UmVjdC50b3AgLSBwb3BIIC0gNjsgICAvKiBmbGlwIGFib3ZlICovCiAgICB9IGVsc2UgewogICAgICB0b3AgPSB0UmVjdC5ib3R0b20gLSBjYXRSZWN0LnRvcCArIDY7CiAgICB9CiAgICBwb3B1cC5zdHlsZS5sZWZ0ID0gbGVmdCArICdweCc7CiAgICBwb3B1cC5zdHlsZS50b3AgPSB0b3AgKyAncHgnOwogICAgcG9wdXAuc3R5bGUudmlzaWJpbGl0eSA9ICcnOwogICAgdHJpZ2dlci5jbGFzc0xpc3QuYWRkKCdjbHAtb3BlbicpOwogICAgb3BlblRyaWdnZXIgPSB0cmlnZ2VyOwogIH0KICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGV2KXsKICAgIGlmIChwb3B1cCAmJiAhcG9wdXAuY29udGFpbnMoZXYudGFyZ2V0KSAmJiBldi50YXJnZXQgIT09IG9wZW5UcmlnZ2VyICYmICghb3BlblRyaWdnZXIgfHwgIW9wZW5UcmlnZ2VyLmNvbnRhaW5zKGV2LnRhcmdldCkpKXsKICAgICAgY2xvc2VQb3B1cCgpOwogICAgfQogIH0pOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjbG9zZVBvcHVwKTsKICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgZnVuY3Rpb24oKXsgLyoga2VlcCBwb3B1cCBhbmNob3JlZDogY2xvc2Ugb24gc2Nyb2xsICovIGlmIChwb3B1cCkgY2xvc2VQb3B1cCgpOyB9LCB7IHBhc3NpdmU6IHRydWUgfSk7CgogIGZ1bmN0aW9uIHNldFRyaWdnZXJMYWJlbCh0cmlnZ2VyLCB0ZXh0LCB1bmFuc3dlcmVkKXsKICAgIHRyaWdnZXIuY2xhc3NMaXN0LnRvZ2dsZSgnY2xwLXVuYW5zd2VyZWQnLCAhIXVuYW5zd2VyZWQpOwogICAgdHJpZ2dlci5xdWVyeVNlbGVjdG9yKCcuY2xwLWRkLXRleHQnKS50ZXh0Q29udGVudCA9IHVuYW5zd2VyZWQgPyAnXHUyMDI2XHUyMDI2XHUyMDI2XHUyMDI2JyA6IHRleHQ7CiAgfQoKICAvKiAtLS0tLS0tLS0tIGRvdHMgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIHJlbmRlckRvdHMoKXsKICAgIGRvdHNFbC5pbm5lckhUTUwgPSAnJzsKICAgIHZhciBjdXJQaSA9IC0xOwogICAgdmFyIHMgPSBzY3JlZW5zW3N0YXRlLmlkeF07CiAgICBpZiAocyAmJiBzLnBpICE9PSB1bmRlZmluZWQpIGN1clBpID0gcy5waTsKICAgIGlmIChzICYmIHMudHlwZSA9PT0gJ2ZpbmlzaCcpIGN1clBpID0gVEVTVF9EQVRBLnBhcnRzLmxlbmd0aDsgLyogYWxsIGRvbmUgKi8KICAgIFRFU1RfREFUQS5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQsIHBpKXsKICAgICAgdmFyIGQgPSBlbCgnYnV0dG9uJywgJ2NscC1kb3QnLCAnUCcgKyAocGkgKyAxKSk7CiAgICAgIGQudHlwZSA9ICdidXR0b24nOwogICAgICBpZiAocGkgPT09IGN1clBpKSBkLmNsYXNzTGlzdC5hZGQoJ2NscC1jdXInKTsKICAgICAgZWxzZSBpZiAocGkgPCBjdXJQaSB8fCBzdGF0ZS5jaGVja2VkKSBkLmNsYXNzTGlzdC5hZGQoJ2NscC1kb25lJyk7CiAgICAgIGlmIChzdGF0ZS5jaGVja2VkKXsKICAgICAgICBkLmNsYXNzTGlzdC5hZGQoJ2NscC1jbGlja2FibGUnKTsKICAgICAgICBkLnRpdGxlID0gJ1JldmlldyAnICsgcGFydC5uYW1lOwogICAgICAgIGQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY3JlZW5zLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgaWYgKHNjcmVlbnNbaV0udHlwZSA9PT0gJ3EnICYmIHNjcmVlbnNbaV0ucGkgPT09IHBpKXsgc3RhdGUuaWR4ID0gaTsgYnJlYWs7IH0KICAgICAgICAgIH0KICAgICAgICAgIHJlbmRlcigpOyBzY3JvbGxUb0VsKGNhdCk7CiAgICAgICAgfSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZC50aXRsZSA9IHBhcnQubmFtZTsKICAgICAgfQogICAgICBkb3RzRWwuYXBwZW5kQ2hpbGQoZCk7CiAgICB9KTsKICB9CgogIC8qIC0tLS0tLS0tLS0gY2hyb21lIHBpZWNlcyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gbWFrZUJhcih0aXRsZSwgd2l0aFRpbWVyKXsKICAgIHZhciBiYXIgPSBlbCgnZGl2JywgJ2NscC1iYXInKTsKICAgIGJhci5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtYmFyLXRpdGxlJywgdGl0bGUpKTsKICAgIGlmICh3aXRoVGltZXIgJiYgc3RhdGUudGltZXJPbil7CiAgICAgIHZhciB0ID0gZWwoJ3NwYW4nLCAnY2xwLWJhci10aW1lcicpOwogICAgICB0LmlkID0gJ2NscFFUaW1lcic7CiAgICAgIHQuaW5uZXJIVE1MID0gJ1RpbWUgcmVtYWluaW5nOiA8Yj4nICsgZm10KHFSZW1haW5pbmcpICsgJzwvYj4nOwogICAgICBiYXIuYXBwZW5kQ2hpbGQodCk7CiAgICB9CiAgICB2YXIgbmV4dCA9IGVsKCdidXR0b24nLCAnY2xwLW5leHQnLCAnTmV4dCcpOwogICAgbmV4dC50eXBlID0gJ2J1dHRvbic7CiAgICBuZXh0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgICAgY2xvc2VQb3B1cCgpOwogICAgICBpZiAoc3RhdGUuaWR4IDwgc2NyZWVucy5sZW5ndGggLSAxKXsgc3RhdGUuaWR4Kys7IHJlbmRlcigpOyBzY3JvbGxUb0VsKGNhdCk7IH0KICAgIH0pOwogICAgaWYgKHNjcmVlbnNbc3RhdGUuaWR4XS50eXBlID09PSAnZmluaXNoJykgbmV4dC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgYmFyLmFwcGVuZENoaWxkKG5leHQpOwogICAgcmV0dXJuIGJhcjsKICB9CiAgZnVuY3Rpb24gbWFrZUluc3RyKHRleHQpewogICAgdmFyIHJvdyA9IGVsKCdkaXYnLCAnY2xwLWluc3RyJyk7CiAgICByb3cuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLWluZm8nLCAnaScpKTsKICAgIHJvdy5hcHBlbmRDaGlsZChlbCgncCcsICcnLCB0ZXh0KSk7CiAgICByZXR1cm4gcm93OwogIH0KICB2YXIgU1BFQUtFUl9TVkcgPSAnPHN2ZyB3aWR0aD0iMjYiIGhlaWdodD0iMjYiIHZpZXdCb3g9IjAgMCAyNiAyNiIgZmlsbD0ibm9uZSIgYXJpYS1oaWRkZW49InRydWUiPicgKwogICAgJzxyZWN0IHg9IjMiIHk9IjkiIHdpZHRoPSI2IiBoZWlnaHQ9IjgiIHJ4PSIxIiBmaWxsPSJjdXJyZW50Q29sb3IiLz4nICsKICAgICc8cGF0aCBkPSJNOSA5IEwxNSA0IEwxNSAyMiBMOSAxNyBaIiBmaWxsPSJjdXJyZW50Q29sb3IiLz4nICsKICAgICc8cGF0aCBkPSJNMTggOSBhNS41IDUuNSAwIDAgMSAwIDgiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPicgKwogICAgJzxwYXRoIGQ9Ik0yMC41IDYuNSBhOSA5IDAgMCAxIDAgMTMiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPic7CiAgdmFyIFBMQVlfU1ZHID0gJzxzdmcgd2lkdGg9IjI2IiBoZWlnaHQ9IjI2IiB2aWV3Qm94PSIwIDAgMjYgMjYiIGZpbGw9Im5vbmUiIGFyaWEtaGlkZGVuPSJ0cnVlIj4nICsKICAgICc8cGF0aCBkPSJNOCA1IEwyMSAxMyBMOCAyMSBaIiBmaWxsPSJjdXJyZW50Q29sb3IiLz48L3N2Zz4nOwoKICAvKiAtLS0tLS0tLS0tIHNjcmVlbnMgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIHJlbmRlckludHJvKHNjciwgcm9vdCl7CiAgICB2YXIgcGFydCA9IFRFU1RfREFUQS5wYXJ0c1tzY3IucGldOwogICAgcm9vdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2NyZWVuLWxhYmVsJywgcGFydC5uYW1lICsgJyBcdTIwMTQgSW5zdHJ1Y3Rpb25zJyk7CiAgICByb290LmFwcGVuZENoaWxkKG1ha2VJbnN0cignSW5zdHJ1Y3Rpb25zOicpKTsKICAgIHZhciBib2R5ID0gZWwoJ2RpdicsICdjbHAtaW50cm8tYm9keScpOwogICAgYm9keS5hcHBlbmRDaGlsZChlbCgnaDMnLCAnJywgcGFydC5pbnRyb1RpdGxlKSk7CiAgICB2YXIgdWwgPSBlbCgndWwnLCAnY2xwLWJ1bGxldHMnKTsKICAgIHBhcnQuaW50cm9CdWxsZXRzLmZvckVhY2goZnVuY3Rpb24oYil7IHVsLmFwcGVuZENoaWxkKGVsKCdsaScsICcnLCBiKSk7IH0pOwogICAgYm9keS5hcHBlbmRDaGlsZCh1bCk7CiAgICByb290LmFwcGVuZENoaWxkKGJvZHkpOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyTWVkaWEoc2NyLCByb290KXsKICAgIHZhciBwYXJ0ID0gVEVTVF9EQVRBLnBhcnRzW3Njci5waV07CiAgICB2YXIgc2VjID0gcGFydC5zZWN0aW9uc1tzY3Iuc2ldOwogICAgcm9vdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2NyZWVuLWxhYmVsJywgcGFydC5uYW1lICsgJyBcdTIwMTQgTWVkaWEnKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQobWFrZUluc3RyKHNlYy5tZWRpYUluc3RydWN0aW9uKSk7CnZhciBfYWs9c2NyLnBpKyIuIitzY3Iuc2ksX2F1PSh0eXBlb2YgQ0xQX0FVRElPIT09InVuZGVmaW5lZCIpJiZDTFBfQVVESU9bX2FrXTtpZihfYXUpe3ZhciBfaXNWPSh0eXBlb2YgQ0xQX0FVRElPX1ZJREVPIT09InVuZGVmaW5lZCIpJiZDTFBfQVVESU9fVklERU9bX2FrXTt2YXIgX3A9ZWwoImRpdiIsImNscC1tZWRpYS1wYW5lbCIpO3ZhciBfYz1lbCgiZGl2IiwiY2xwLW1lZGlhLWNhcmQiKyhfaXNWPyIgY2xwLWlzLXZpZGVvIjoiIikpO3ZhciBfbT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KF9pc1Y\/InZpZGVvIjoiYXVkaW8iKTtfbS5zcmM9X2F1O19tLmNvbnRyb2xzPXRydWU7X20ucHJlbG9hZD0ibm9uZSI7X20uY2xhc3NOYW1lPSJjbHAtcmVhbG1lZGlhIjtfbS5zZXRBdHRyaWJ1dGUoImNvbnRyb2xzTGlzdCIsIm5vZG93bmxvYWQiKTtfbS5zdHlsZS5jc3NUZXh0PV9pc1Y\/IndpZHRoOjEwMCU7Ym9yZGVyLXJhZGl1czo4cHg7YmFja2dyb3VuZDojMDAwO2Rpc3BsYXk6YmxvY2siOiJ3aWR0aDoxMDAlO2Rpc3BsYXk6YmxvY2siO19jLmFwcGVuZENoaWxkKF9tKTtfcC5hcHBlbmRDaGlsZChfYyk7X3AuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1vbmNlLW5vdGUiLCJJbiB0aGUgcmVhbCB0ZXN0IHRoaXMgcmVjb3JkaW5nIHBsYXlzIG9uY2UuIEZvciBwcmFjdGljZSB5b3UgY2FuIHJlcGxheSBpdCBcdTIwMTQgYnV0IHRyeSB0byBsaXN0ZW4gb25seSBvbmNlIGZpcnN0LiIpKTtyb290LmFwcGVuZENoaWxkKF9wKTtyZXR1cm47fQoKICAgIGlmIChDRUxQSVBfWVQudmlkZW9JZCl7CiAgICAgIHZhciBjaCA9IENMUF9DSEFQVEVSU1tzY3IucGkgKyAnLicgKyBzY3Iuc2ldIHx8IFswLCAwXTsKICAgICAgdmFyIHZwYW5lbCA9IGVsKCdkaXYnLCAnY2xwLW1lZGlhLXBhbmVsJyk7CiAgICAgIHZhciB2Y2FyZCA9IGVsKCdkaXYnLCAnY2xwLW1lZGlhLWNhcmQgY2xwLWlzLXZpZGVvJyk7CiAgICAgIHZhciB3cmFwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgIHdyYXAuc3R5bGUuY3NzVGV4dCA9ICdwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlO2FzcGVjdC1yYXRpbzoxNi85O2JvcmRlci1yYWRpdXM6OHB4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kOiMwMDA7JzsKICAgICAgdmFyIGlmciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOwogICAgICBpZnIuc3JjID0gJ2h0dHBzOi8vd3d3LnlvdXR1YmUtbm9jb29raWUuY29tL2VtYmVkLycgKyBDRUxQSVBfWVQudmlkZW9JZCArICc\/c3RhcnQ9JyArIGNoWzBdICsgKGNoWzFdID8gJyZlbmQ9JyArIGNoWzFdIDogJycpICsgJyZyZWw9MCZtb2Rlc3RicmFuZGluZz0xJzsKICAgICAgaWZyLmFsbG93ID0gJ2F1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IHBpY3R1cmUtaW4tcGljdHVyZSc7CiAgICAgIGlmci5hbGxvd0Z1bGxzY3JlZW4gPSB0cnVlOwogICAgICBpZnIudGl0bGUgPSAnQ0VMUElQIExpc3RlbmluZyBtZWRpYSc7CiAgICAgIGlmci5zdHlsZS5jc3NUZXh0ID0gJ3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtib3JkZXI6MDsnOwogICAgICB3cmFwLmFwcGVuZENoaWxkKGlmcik7CiAgICAgIHZjYXJkLmFwcGVuZENoaWxkKHdyYXApOwogICAgICB2cGFuZWwuYXBwZW5kQ2hpbGQodmNhcmQpOwogICAgICB2cGFuZWwuYXBwZW5kQ2hpbGQoZWwoJ2RpdicsICdjbHAtb25jZS1ub3RlJywgJ0luIHRoZSByZWFsIHRlc3QgdGhpcyBwbGF5cyBvbmx5IG9uY2UgXHUyMDE0IHByZXNzIE5FWFQgd2hlbiBpdCBlbmRzLicpKTsKICAgICAgcm9vdC5hcHBlbmRDaGlsZCh2cGFuZWwpOwogICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIHBhbmVsID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtcGFuZWwnKTsKICAgIHZhciBjYXJkID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtY2FyZCcgKyAoc2VjLm1lZGlhVHlwZSA9PT0gJ3ZpZGVvJyA\/ICcgY2xwLWlzLXZpZGVvJyA6ICcnKSk7CiAgICAvKiAuY2xwLW1lZGlhLXpvbmUgaXMgdGhlIGZ1dHVyZSBZb3VUdWJlLWVtYmVkIHRhcmdldCAoZGF0YS1tZWRpYS1zbG90KSAqLwogICAgdmFyIHpvbmUgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS16b25lJyk7CiAgICB6b25lLnNldEF0dHJpYnV0ZSgnZGF0YS1tZWRpYS1zbG90Jywgc2NyLnBpICsgJy4nICsgc2NyLnNpKTsKICAgIHZhciBpY29uID0gZWwoJ2RpdicsICdjbHAtc3BlYWtlcicpOwogICAgaWNvbi5pbm5lckhUTUwgPSBzZWMubWVkaWFUeXBlID09PSAndmlkZW8nID8gUExBWV9TVkcgOiBTUEVBS0VSX1NWRzsKICAgIHZhciBtYWluID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtbWFpbicpOwogICAgdmFyIGxhYmVsID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtbGFiZWwnLCAnUGxheWluZ1x1MjAyNicpOwogICAgdmFyIHByb2cgPSBlbCgnZGl2JywgJ2NscC1wcm9ncmVzcycpOwogICAgdmFyIGZpbGwgPSBlbCgnZGl2JywgJ2NscC1wcm9ncmVzcy1maWxsJyk7CiAgICBwcm9nLmFwcGVuZENoaWxkKGZpbGwpOwoKICAgIGlmIChzZWMubWVkaWFUeXBlID09PSAndmlkZW8nKXsKICAgICAgem9uZS5hcHBlbmRDaGlsZChpY29uKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZCh6b25lKTsKICAgICAgbWFpbi5hcHBlbmRDaGlsZChsYWJlbCk7CiAgICAgIG1haW4uYXBwZW5kQ2hpbGQocHJvZyk7CiAgICAgIGNhcmQuYXBwZW5kQ2hpbGQobWFpbik7CiAgICB9IGVsc2UgewogICAgICBtYWluLmFwcGVuZENoaWxkKGxhYmVsKTsKICAgICAgbWFpbi5hcHBlbmRDaGlsZChwcm9nKTsKICAgICAgem9uZS5hcHBlbmRDaGlsZChpY29uKTsKICAgICAgem9uZS5hcHBlbmRDaGlsZChtYWluKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZCh6b25lKTsKICAgIH0KICAgIHBhbmVsLmFwcGVuZENoaWxkKGNhcmQpOwoKICAgIHZhciBtZXRhID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtbWV0YScpOwogICAgdmFyIHRpbWVTcGFuID0gZWwoJ3NwYW4nLCAnJywgJzA6MDAgLyAnICsgZm10KHNlYy5kdXJhdGlvbikpOwogICAgbWV0YS5hcHBlbmRDaGlsZCh0aW1lU3Bhbik7CiAgICB2YXIgdm9sID0gZWwoJ3NwYW4nLCAnJyk7CiAgICB2b2wuaW5uZXJIVE1MID0gJzxzdmcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMjYgMjYiIGZpbGw9Im5vbmUiIGFyaWEtaGlkZGVuPSJ0cnVlIj4nICsKICAgICAgJzxyZWN0IHg9IjMiIHk9IjkiIHdpZHRoPSI2IiBoZWlnaHQ9IjgiIHJ4PSIxIiBmaWxsPSJjdXJyZW50Q29sb3IiLz4nICsKICAgICAgJzxwYXRoIGQ9Ik05IDkgTDE1IDQgTDE1IDIyIEw5IDE3IFoiIGZpbGw9ImN1cnJlbnRDb2xvciIvPicgKwogICAgICAnPHBhdGggZD0iTTE4IDkgYTUuNSA1LjUgMCAwIDEgMCA4IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4nOwogICAgbWV0YS5hcHBlbmRDaGlsZCh2b2wpOwogICAgcGFuZWwuYXBwZW5kQ2hpbGQobWV0YSk7CiAgICBwYW5lbC5hcHBlbmRDaGlsZChlbCgnZGl2JywgJ2NscC1vbmNlLW5vdGUnLCAoc2VjLm1lZGlhVHlwZSA9PT0gJ3ZpZGVvJyA\/ICdUaGlzIHZpZGVvIHBsYXlzJyA6ICdUaGlzIHJlY29yZGluZyBwbGF5cycpICsgJyBvbmx5IG9uY2UgXHUyMDE0IGp1c3QgbGlrZSB0aGUgcmVhbCB0ZXN0LicpKTsKICAgIGlmICghQ0VMUElQX1lULnZpZGVvSWQpeyBwYW5lbC5hcHBlbmRDaGlsZChlbCgnZGl2JywgJ2NscC1vbmNlLW5vdGUnLCAnT2ZmaWNpYWwgYXVkaW8vdmlkZW8gaXMgYmVpbmcgcHJlcGFyZWQgXHUyMDE0IHRoZSBiYXIgYWJvdmUgaXMgYSBzaW11bGF0aW9uLiBQcmVzcyBORVhUIHRvIGNvbnRpbnVlLicpKTsgfQogICAgcm9vdC5hcHBlbmRDaGlsZChwYW5lbCk7CgogICAgLyogc2ltdWxhdGVkIHBsYXliYWNrICovCiAgICB2YXIgZWxhcHNlZCA9IDA7CiAgICBtZWRpYVRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsKICAgICAgZWxhcHNlZCsrOwogICAgICBpZiAoZWxhcHNlZCA+PSBzZWMuZHVyYXRpb24pewogICAgICAgIGVsYXBzZWQgPSBzZWMuZHVyYXRpb247CiAgICAgICAgY2xlYXJJbnRlcnZhbChtZWRpYVRpbWVyKTsgbWVkaWFUaW1lciA9IG51bGw7CiAgICAgICAgbGFiZWwudGV4dENvbnRlbnQgPSAnRmluaXNoZWQnOwogICAgICB9CiAgICAgIGZpbGwuc3R5bGUud2lkdGggPSBNYXRoLnJvdW5kKGVsYXBzZWQgLyBzZWMuZHVyYXRpb24gKiAxMDApICsgJyUnOwogICAgICB0aW1lU3Bhbi50ZXh0Q29udGVudCA9IGZtdChlbGFwc2VkKSArICcgLyAnICsgZm10KHNlYy5kdXJhdGlvbik7CiAgICB9LCAxMDAwKTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlclF1ZXN0aW9ucyhzY3IsIHJvb3QpewogICAgdmFyIHBhcnQgPSBURVNUX0RBVEEucGFydHNbc2NyLnBpXTsKICAgIHZhciBzZWMgPSBwYXJ0LnNlY3Rpb25zW3Njci5zaV07CiAgICByb290LnNldEF0dHJpYnV0ZSgnZGF0YS1zY3JlZW4tbGFiZWwnLCBwYXJ0Lm5hbWUgKyAnIFx1MjAxNCBRdWVzdGlvbnMnKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQobWFrZUluc3RyKHBhcnQucUluc3RydWN0aW9uKSk7CgogICAgdmFyIHBhbmVsID0gZWwoJ2RpdicsICdjbHAtcS1wYW5lbCcpOwogICAgc2VjLnF1ZXN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHEsIHFpKXsKICAgICAgdmFyIGtleSA9IHFLZXkoc2NyLnBpLCBzY3Iuc2ksIHFpKTsKICAgICAgdmFyIHJvdyA9IGVsKCdkaXYnLCAnY2xwLXEnKTsKICAgICAgdmFyIG51bSA9IGVsKCdzcGFuJywgJ2NscC1xbnVtJywgcS5uICsgJy4gJyk7CiAgICAgIHJvdy5hcHBlbmRDaGlsZChudW0pOwogICAgICByb3cuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocS5zdGVtICsgJyAnKSk7CgogICAgICB2YXIgZGQgPSBlbCgnYnV0dG9uJywgJ2NscC1kZCcpOwogICAgICBkZC50eXBlID0gJ2J1dHRvbic7CiAgICAgIGRkLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1kZC10ZXh0JykpOwogICAgICBkZC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtZGQtY2FyZXQnLCAnXHUyNUJDJykpOwogICAgICB2YXIgYW5zID0gc3RhdGUuYW5zd2Vyc1trZXldOwogICAgICBzZXRUcmlnZ2VyTGFiZWwoZGQsIGFucyAhPT0gdW5kZWZpbmVkID8gcS5vcHRpb25zW2Fuc10gOiAnJywgYW5zID09PSB1bmRlZmluZWQpOwogICAgICByb3cuYXBwZW5kQ2hpbGQoZGQpOwoKICAgICAgaWYgKHEudG9kbyl7CiAgICAgICAgcm93LmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC10b2RvLXRhZycsICdUT0RPJykpOwogICAgICB9CgogICAgICBpZiAoc3RhdGUuY2hlY2tlZCl7CiAgICAgICAgZGQuZGlzYWJsZWQgPSB0cnVlOwogICAgICAgIHZhciBjb3JyZWN0ID0gYW5zID09PSBxLmtleSAtIDE7CiAgICAgICAgZGQuY2xhc3NMaXN0LmFkZChjb3JyZWN0ID8gJ2NscC1tYXJrLXJpZ2h0JyA6ICdjbHAtbWFyay13cm9uZycpOwogICAgICAgIGlmICghY29ycmVjdCl7CiAgICAgICAgICB2YXIgcmV2ID0gZWwoJ3NwYW4nLCAnY2xwLXJldmVhbCcpOwogICAgICAgICAgcmV2LmlubmVySFRNTCA9ICdDb3JyZWN0IGFuc3dlcjogPGI+PC9iPic7CiAgICAgICAgICByZXYucXVlcnlTZWxlY3RvcignYicpLnRleHRDb250ZW50ID0gcS5vcHRpb25zW3Eua2V5IC0gMV07CiAgICAgICAgICByb3cuYXBwZW5kQ2hpbGQocmV2KTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZGQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihldil7CiAgICAgICAgICBldi5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgIG9wZW5Qb3B1cChkZCwgc2NyLnBpLCBzY3Iuc2ksIHFpKTsKICAgICAgICB9KTsKICAgICAgfQogICAgICBwYW5lbC5hcHBlbmRDaGlsZChyb3cpOwogICAgfSk7CiAgICByb290LmFwcGVuZENoaWxkKHBhbmVsKTsKCiAgICAvKiBjb3VudGRvd24gKi8KICAgIHFSZW1haW5pbmcgPSBzZWMudGltZU1pbnV0ZXMgKiA2MDsKICAgIHN0YXJ0UVRpbWVyKCk7CiAgfQogIGZ1bmN0aW9uIHN0YXJ0UVRpbWVyKCl7CiAgICBpZiAocVRpbWVyKSBjbGVhckludGVydmFsKHFUaW1lcik7CiAgICBpZiAoIXN0YXRlLnRpbWVyT24pIHJldHVybjsKICAgIHFUaW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uKCl7CiAgICAgIGlmIChxUmVtYWluaW5nID4gMCkgcVJlbWFpbmluZy0tOwogICAgICB2YXIgdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBRVGltZXInKTsKICAgICAgaWYgKHQpIHQuaW5uZXJIVE1MID0gJ1RpbWUgcmVtYWluaW5nOiA8Yj4nICsgZm10KHFSZW1haW5pbmcpICsgJzwvYj4nOwogICAgICBpZiAocVJlbWFpbmluZyA8PSAwKXsgY2xlYXJJbnRlcnZhbChxVGltZXIpOyBxVGltZXIgPSBudWxsOyB9CiAgICB9LCAxMDAwKTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlckZpbmlzaChyb290KXsKICAgIHJvb3Quc2V0QXR0cmlidXRlKCdkYXRhLXNjcmVlbi1sYWJlbCcsICdFbmQgb2YgVGVzdCcpOwogICAgdmFyIGJveCA9IGVsKCdkaXYnLCAnY2xwLWZpbmlzaCcpOwogICAgYm94LmFwcGVuZENoaWxkKGVsKCdoMycsICcnLCAnRW5kIG9mIHRoZSBMaXN0ZW5pbmcgVGVzdCcpKTsKICAgIGJveC5hcHBlbmRDaGlsZChlbCgncCcsICcnLCAnWW91IGhhdmUgYW5zd2VyZWQgJyArIGFuc3dlcmVkQ291bnQoKSArICcgb2YgJyArIFRPVEFMX1EgKyAnIHF1ZXN0aW9ucy4gQ2hlY2sgeW91ciBhbnN3ZXJzIHRvIHNlZSB5b3VyIHNjb3JlLCBwYXJ0LWJ5LXBhcnQgcmVzdWx0cywgYW5kIHRyYW5zY3JpcHRzLicpKTsKICAgIHZhciBidG4gPSBlbCgnYnV0dG9uJywgJ2NscC1maW5pc2gtY2hlY2snLCAnQ2hlY2sgYW5zd2VycycpOwogICAgYnRuLnR5cGUgPSAnYnV0dG9uJzsKICAgIGJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNoZWNrQW5zd2Vycyk7CiAgICBib3guYXBwZW5kQ2hpbGQoYnRuKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQoYm94KTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlcigpewogICAgY2xlYXJUaW1lcnMoKTsKICAgIGNsb3NlUG9wdXAoKTsKICAgIGNhdC5pbm5lckhUTUwgPSAnJzsKICAgIHZhciBzY3IgPSBzY3JlZW5zW3N0YXRlLmlkeF07CgogICAgaWYgKCFzdGF0ZS5zdGFydGVkKXsKICAgICAgdmFyIGJhcjAgPSBlbCgnZGl2JywgJ2NscC1iYXInKTsKICAgICAgYmFyMC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtYmFyLXRpdGxlJywgVEVTVF9EQVRBLnRlc3RMYWJlbCArICcgXHUyMDEzIExpc3RlbmluZyBUZXN0JykpOwogICAgICBjYXQuYXBwZW5kQ2hpbGQoYmFyMCk7CiAgICAgIHZhciBpZGxlID0gZWwoJ2RpdicsICdjbHAtaWRsZScpOwogICAgICB2YXIgcCA9IGVsKCdwJywgJycsICdQcmVzcyBcdTIwMUNTdGFydCB0ZXN0XHUyMDFEIGFib3ZlIHRvIGJlZ2luLiBUaGUgdGVzdCBoYXMgNiBwYXJ0cyBhbmQgMzggcXVlc3Rpb25zLCBhbmQgZXZlcnkgcmVjb3JkaW5nIGFuZCB2aWRlbyBwbGF5cyBvbmx5IG9uY2UgXHUyMDE0IGp1c3QgbGlrZSB0aGUgcmVhbCBjb21wdXRlci1kZWxpdmVyZWQgdGVzdC4nKTsKICAgICAgaWRsZS5hcHBlbmRDaGlsZChwKTsKICAgICAgY2F0LmFwcGVuZENoaWxkKGlkbGUpOwogICAgICByZW5kZXJEb3RzKCk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgaXNRID0gc2NyLnR5cGUgPT09ICdxJzsKICAgIGlmIChpc1EpewogICAgICB2YXIgc2VjID0gVEVTVF9EQVRBLnBhcnRzW3Njci5waV0uc2VjdGlvbnNbc2NyLnNpXTsKICAgICAgcVJlbWFpbmluZyA9IHNlYy50aW1lTWludXRlcyAqIDYwOwogICAgfQogICAgdmFyIHRpdGxlID0gc2NyLnR5cGUgPT09ICdmaW5pc2gnCiAgICAgID8gVEVTVF9EQVRBLnRlc3RMYWJlbCArICcgXHUyMDEzIExpc3RlbmluZyBUZXN0JwogICAgICA6IFRFU1RfREFUQS5wYXJ0c1tzY3IucGldLmhlYWRlclRpdGxlOwogICAgY2F0LmFwcGVuZENoaWxkKG1ha2VCYXIodGl0bGUsIGlzUSkpOwoKICAgIHZhciBzY3JlZW4gPSBlbCgnZGl2JywgJ2NscC1zY3JlZW4nKTsKICAgIGlmIChzY3IudHlwZSA9PT0gJ2ludHJvJykgcmVuZGVySW50cm8oc2NyLCBzY3JlZW4pOwogICAgZWxzZSBpZiAoc2NyLnR5cGUgPT09ICdtZWRpYScpIHJlbmRlck1lZGlhKHNjciwgc2NyZWVuKTsKICAgIGVsc2UgaWYgKHNjci50eXBlID09PSAncScpIHJlbmRlclF1ZXN0aW9ucyhzY3IsIHNjcmVlbik7CiAgICBlbHNlIHJlbmRlckZpbmlzaChzY3JlZW4pOwogICAgY2F0LmFwcGVuZENoaWxkKHNjcmVlbik7CiAgICByZW5kZXJEb3RzKCk7CiAgfQoKICAvKiAtLS0tLS0tLS0tIHJlc3VsdHMgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIGNoZWNrQW5zd2VycygpewogICAgaWYgKHN0YXRlLmNoZWNrZWQpIHJldHVybjsKICAgIHN0YXRlLmNoZWNrZWQgPSB0cnVlOwogICAgdmFyIHNjb3JlID0gY29tcHV0ZVNjb3JlKCk7CiAgICB1cGRhdGVTY29yZUNoaXAoKTsKICAgIHJlbmRlcigpOwogICAgcmVuZGVyUmVzdWx0cyhzY29yZSk7CiAgICByZXN1bHRzRWwuaGlkZGVuID0gZmFsc2U7CiAgICBzY3JvbGxUb0VsKHJlc3VsdHNFbCk7CiAgfQoKICBmdW5jdGlvbiByZW5kZXJSZXN1bHRzKHNjb3JlKXsKICAgIHJlc3VsdHNFbC5pbm5lckhUTUwgPSAnJzsKICAgIHJlc3VsdHNFbC5hcHBlbmRDaGlsZChlbCgnaDInLCAnJywgJ1lvdXIgcmVzdWx0cycpKTsKICAgIHZhciBncmlkID0gZWwoJ2RpdicsICdjbHAtcmVzLWdyaWQnKTsKCiAgICAvKiByaW5nIGNhcmQgKi8KICAgIHZhciByaW5nQ2FyZCA9IGVsKCdkaXYnLCAnY2xwLWNhcmQgY2xwLXJpbmctY2FyZCBjbHAtcmV2Jyk7CiAgICB2YXIgd3JhcCA9IGVsKCdkaXYnLCAnY2xwLXJpbmctd3JhcCcpOwogICAgdmFyIFIgPSA1NiwgQyA9IDIgKiBNYXRoLlBJICogUjsKICAgIHdyYXAuaW5uZXJIVE1MID0KICAgICAgJzxzdmcgd2lkdGg9IjEzMiIgaGVpZ2h0PSIxMzIiIHZpZXdCb3g9IjAgMCAxMzIgMTMyIj4nICsKICAgICAgJzxjaXJjbGUgY3g9IjY2IiBjeT0iNjYiIHI9IicgKyBSICsgJyIgc3Ryb2tlPSIjRTJFOEYwIiBzdHJva2Utd2lkdGg9IjExIiBmaWxsPSJub25lIi8+JyArCiAgICAgICc8Y2lyY2xlIGlkPSJjbHBSaW5nIiBjeD0iNjYiIGN5PSI2NiIgcj0iJyArIFIgKyAnIiBzdHJva2U9IiMxMEI5ODEiIHN0cm9rZS13aWR0aD0iMTEiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgJyArCiAgICAgICdzdHJva2UtZGFzaGFycmF5PSInICsgQyArICciIHN0cm9rZS1kYXNob2Zmc2V0PSInICsgQyArICciLz48L3N2Zz4nOwogICAgdmFyIG51bSA9IGVsKCdkaXYnLCAnY2xwLXJpbmctbnVtJyk7CiAgICB2YXIgYmlnID0gZWwoJ2InLCAnJywgJzAnKTsKICAgIG51bS5hcHBlbmRDaGlsZChiaWcpOwogICAgbnVtLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJycsICdvdXQgb2YgJyArIFRPVEFMX1EpKTsKICAgIHdyYXAuYXBwZW5kQ2hpbGQobnVtKTsKICAgIHJpbmdDYXJkLmFwcGVuZENoaWxkKHdyYXApOwogICAgcmluZ0NhcmQuYXBwZW5kQ2hpbGQoZWwoJ2gzJywgJycsICdUb3RhbCBzY29yZScpKTsKICAgIGdyaWQuYXBwZW5kQ2hpbGQocmluZ0NhcmQpOwoKICAgIC8qIGJyZWFrZG93biBjYXJkICovCiAgICB2YXIgYmQgPSBlbCgnZGl2JywgJ2NscC1jYXJkIGNscC1yZXYnKTsKICAgIGJkLmFwcGVuZENoaWxkKGVsKCdoMycsICcnLCAnUGFydC1ieS1wYXJ0IGJyZWFrZG93bicpKTsKICAgIHZhciBjaGlwcyA9IGVsKCdkaXYnLCAnY2xwLXBhcnQtY2hpcHMnKTsKICAgIHNjb3JlLnBlclBhcnQuZm9yRWFjaChmdW5jdGlvbihwcCwgcGkpewogICAgICB2YXIgYyA9IGVsKCdzcGFuJywgJ2NscC1wYXJ0LWNoaXAnKTsKICAgICAgYy5pbm5lckhUTUwgPSAnUCcgKyAocGkgKyAxKSArICcgPGI+JyArIHBwLmNvcnJlY3QgKyAnLycgKyBwcC50b3RhbCArICc8L2I+JzsKICAgICAgY2hpcHMuYXBwZW5kQ2hpbGQoYyk7CiAgICB9KTsKICAgIGJkLmFwcGVuZENoaWxkKGNoaXBzKTsKCiAgICB2YXIgZXN0ID0gY2xiRXN0aW1hdGUoc2NvcmUudG90YWwpOwogICAgdmFyIGNsYiA9IGVsKCdkaXYnLCAnY2xwLWNsYi1yb3cnKTsKICAgIGNsYi5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtY2xiLWJhZGdlJywgZXN0LmxldmVsKSk7CiAgICBjbGIuYXBwZW5kQ2hpbGQoZWwoJ3AnLCAnJywgZXN0Lm5vdGUgKyAnIFx1MjAxNCBlc3RpbWF0ZWQgZnJvbSBhIHJhdyBzY29yZSBvZiAnICsgc2NvcmUudG90YWwgKyAnLycgKyBUT1RBTF9RICsgJy4gVE9ETzogcGxhY2Vob2xkZXIgbWFwcGluZyBcdTIwMTQgdmVyaWZ5IGFnYWluc3QgdGhlIG9mZmljaWFsIENFTFBJUCBzY29yZSBjaGFydC4nKSk7CiAgICBiZC5hcHBlbmRDaGlsZChjbGIpOwogICAgZ3JpZC5hcHBlbmRDaGlsZChiZCk7CiAgICByZXN1bHRzRWwuYXBwZW5kQ2hpbGQoZ3JpZCk7CgogICAgLyogdHJhbnNjcmlwdHMgKi8KICAgIHZhciB0cldyYXAgPSBlbCgnZGl2JywgJ2NscC10cmFuc2NyaXB0cycpOwogICAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCwgcGkpewogICAgICB2YXIgY2FyZCA9IGVsKCdkaXYnLCAnY2xwLXRyLWNhcmQgY2xwLXJldicpOwogICAgICB2YXIgaGVhZCA9IGVsKCdidXR0b24nLCAnY2xwLXRyLWhlYWQnKTsKICAgICAgaGVhZC50eXBlID0gJ2J1dHRvbic7CiAgICAgIGhlYWQuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnJywgJ1RyYW5zY3JpcHQgXHUyMDE0ICcgKyBwYXJ0Lm5hbWUpKTsKICAgICAgaGVhZC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtdHItY2FyZXQnLCAnXHUyNUJDJykpOwogICAgICBoZWFkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsgY2FyZC5jbGFzc0xpc3QudG9nZ2xlKCdjbHAtb3BlbicpOyB9KTsKICAgICAgdmFyIGJvZHkgPSBlbCgnZGl2JywgJ2NscC10ci1ib2R5Jyk7CiAgICAgIGJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocGFydC50cmFuc2NyaXB0KSk7CiAgICAgIGlmIChwYXJ0LnRyYW5zY3JpcHRUb2RvKXsKICAgICAgICBib2R5LmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC10ci10b2RvJywgJ1RPRE86IHJlcGxhY2UgdGhpcyBzdW1tYXJ5IHdpdGggdGhlIGZ1bGwgb2ZmaWNpYWwgdHJhbnNjcmlwdC4nKSk7CiAgICAgIH0KICAgICAgY2FyZC5hcHBlbmRDaGlsZChoZWFkKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZChib2R5KTsKICAgICAgdHJXcmFwLmFwcGVuZENoaWxkKGNhcmQpOwogICAgfSk7CiAgICByZXN1bHRzRWwuYXBwZW5kQ2hpbGQodHJXcmFwKTsKCiAgICAvKiByZXZlYWwgKyBjb3VudC11cCAqLwogICAgdmFyIHJldkVscyA9IHJlc3VsdHNFbC5xdWVyeVNlbGVjdG9yQWxsKCcuY2xwLXJldicpOwogICAgaWYgKCdJbnRlcnNlY3Rpb25PYnNlcnZlcicgaW4gd2luZG93ICYmICFyZWR1Y2VkTW90aW9uKXsKICAgICAgdmFyIGlvID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uKGVudHJpZXMpewogICAgICAgIGVudHJpZXMuZm9yRWFjaChmdW5jdGlvbihlbil7CiAgICAgICAgICBpZiAoZW4uaXNJbnRlcnNlY3RpbmcpeyBlbi50YXJnZXQuY2xhc3NMaXN0LmFkZCgnY2xwLWluJyk7IGlvLnVub2JzZXJ2ZShlbi50YXJnZXQpOyB9CiAgICAgICAgfSk7CiAgICAgIH0sIHsgdGhyZXNob2xkOiAwLjE1IH0pOwogICAgICByZXZFbHMuZm9yRWFjaChmdW5jdGlvbihlKXsgaW8ub2JzZXJ2ZShlKTsgfSk7CiAgICB9IGVsc2UgewogICAgICByZXZFbHMuZm9yRWFjaChmdW5jdGlvbihlKXsgZS5jbGFzc0xpc3QuYWRkKCdjbHAtaW4nKTsgfSk7CiAgICB9CgogICAgdmFyIHJpbmcgPSByZXN1bHRzRWwucXVlcnlTZWxlY3RvcignI2NscFJpbmcnKTsKICAgIHZhciB0YXJnZXQgPSBzY29yZS50b3RhbDsKICAgIGlmIChyZWR1Y2VkTW90aW9uKXsKICAgICAgYmlnLnRleHRDb250ZW50ID0gdGFyZ2V0OwogICAgICByaW5nLnN0eWxlLnN0cm9rZURhc2hvZmZzZXQgPSBDICogKDEgLSB0YXJnZXQgLyBUT1RBTF9RKTsKICAgIH0gZWxzZSB7CiAgICAgIHZhciB0MCA9IG51bGwsIERVUiA9IDExMDA7CiAgICAgIGZ1bmN0aW9uIHN0ZXAodHMpewogICAgICAgIGlmICghdDApIHQwID0gdHM7CiAgICAgICAgdmFyIHAgPSBNYXRoLm1pbigxLCAodHMgLSB0MCkgLyBEVVIpOwogICAgICAgIHZhciBlYXNlID0gMSAtIE1hdGgucG93KDEgLSBwLCAzKTsKICAgICAgICBiaWcudGV4dENvbnRlbnQgPSBNYXRoLnJvdW5kKGVhc2UgKiB0YXJnZXQpOwogICAgICAgIHJpbmcuc3R5bGUuc3Ryb2tlRGFzaG9mZnNldCA9IEMgKiAoMSAtIChlYXNlICogdGFyZ2V0KSAvIFRPVEFMX1EpOwogICAgICAgIGlmIChwIDwgMSkgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApOwogICAgICB9CiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShzdGVwKTsKICAgIH0KICB9CgogIC8qIC0tLS0tLS0tLS0gdG9vbGJhciAvIGNvbnRyb2xzIC0tLS0tLS0tLS0gKi8KICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwU3RhcnQnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICBzdGF0ZS5zdGFydGVkID0gdHJ1ZTsKICAgIHN0YXRlLmlkeCA9IDA7CiAgICB0b29sYmFyLmhpZGRlbiA9IGZhbHNlOwogICAgcmVuZGVyKCk7CiAgICB1cGRhdGVTY29yZUNoaXAoKTsKICAgIHNjcm9sbFRvRWwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFNpbScpKTsKICB9KTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwQ2hlY2snKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICBpZiAoIXN0YXRlLnN0YXJ0ZWQpIHJldHVybjsKICAgIGNoZWNrQW5zd2VycygpOwogIH0pOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBSZXNldCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIHN0YXRlLnN0YXJ0ZWQgPSBmYWxzZTsKICAgIHN0YXRlLmlkeCA9IDA7CiAgICBzdGF0ZS5hbnN3ZXJzID0ge307CiAgICBzdGF0ZS5jaGVja2VkID0gZmFsc2U7CiAgICByZXN1bHRzRWwuaGlkZGVuID0gdHJ1ZTsKICAgIHJlc3VsdHNFbC5pbm5lckhUTUwgPSAnJzsKICAgIHRvb2xiYXIuaGlkZGVuID0gdHJ1ZTsKICAgIHVwZGF0ZVNjb3JlQ2hpcCgpOwogICAgcmVuZGVyKCk7CiAgICBzY3JvbGxUb0VsKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBBcHAnKSwgMjApOwogIH0pOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBUaW1lclRvZ2dsZScpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIHN0YXRlLnRpbWVyT24gPSAhc3RhdGUudGltZXJPbjsKICAgIHRoaXMudGV4dENvbnRlbnQgPSAnVGltZXI6ICcgKyAoc3RhdGUudGltZXJPbiA\/ICdvbicgOiAnb2ZmJyk7CiAgICB2YXIgdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBRVGltZXInKTsKICAgIGlmICghc3RhdGUudGltZXJPbil7CiAgICAgIGlmIChxVGltZXIpeyBjbGVhckludGVydmFsKHFUaW1lcik7IHFUaW1lciA9IG51bGw7IH0KICAgICAgaWYgKHQpIHQucmVtb3ZlKCk7CiAgICB9IGVsc2UgaWYgKHNjcmVlbnNbc3RhdGUuaWR4XSAmJiBzY3JlZW5zW3N0YXRlLmlkeF0udHlwZSA9PT0gJ3EnKXsKICAgICAgcmVuZGVyKCk7CiAgICB9CiAgfSk7CgogIHVwZGF0ZVNjb3JlQ2hpcCgpOwogIHJlbmRlcigpOwp9KSgpOwo='));<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Listening Set 12 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-6174","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6174","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=6174"}],"version-history":[{"count":1,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6174\/revisions"}],"predecessor-version":[{"id":6593,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6174\/revisions\/6593"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6174"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}