{"id":6021,"date":"2026-07-06T01:24:34","date_gmt":"2026-07-06T01:24:34","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-2-test-2-listening\/"},"modified":"2026-07-12T03:25:20","modified_gmt":"2026-07-12T03:25:20","slug":"celpip-set-2-test-2-listening","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-2-test-2-listening\/","title":{"rendered":"CELPIP Set 2 \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 2 &#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('dmFyIENMUF9BVURJTz17IjAuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczJ0Mi1wMXMxLm1wMyIsIjAuMSI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczJ0Mi1wMXMyLm1wMyIsIjAuMiI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczJ0Mi1wMXMzLm1wMyIsIjEuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczJ0Mi1wMi5tcDMiLCIyLjAiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvY2VscGlwLXMydDItcDMubXAzIiwiMy4wIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L2NlbHBpcC1zMnQyLXA0Lm1wMyIsIjQuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczJ0Mi1wNS5tcDQiLCI1LjAiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvY2VscGlwLXMydDItcDYubXAzIn07dmFyIENMUF9BVURJT19WSURFTz17IjQuMCI6MX07CgooZnVuY3Rpb24oKXt2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3MudGV4dENvbnRlbnQ9IlxuLyogPT09PT09PT09PT09IENFTFBJUCBMaXN0ZW5pbmcgUHJhY3RpY2UgXHUyMDE0IHNjb3BlZCwgV29yZFByZXNzLXNhZmUgPT09PT09PT09PT09ICovXG4uY2xwLXdyYXB7XG4gIC8qIFZBUklBTlRfQ0hST01FX1NUQVJUICovXG4gIC0tYmFyLWJnOiNFOEVCRUY7XG4gIC0tYmFyLWJvcmRlcjojRDNEOUUwO1xuICAtLWJhci10ZXh0OiMxRjI5Mzc7XG4gIC0tcGFuZWwtbWVkaWEtYmc6I0Y0RjVGNztcbiAgLS1wYW5lbC1tZWRpYS1ib3JkZXI6I0UzRTZFQTtcbiAgLS1tZWRpYS1jYXJkLWJnOiNFQ0VFRjE7XG4gIC0tbWVkaWEtY2FyZC1ib3JkZXI6I0Q4RERFMztcbiAgLS1wYW5lbC1xLWJnOiNFOUY0Rjc7XG4gIC0tcGFuZWwtcS1ib3JkZXI6I0Q2RThFRDtcbiAgLS1kZC1vcGVuLWJnOiNDQkVCRjQ7XG4gIC8qIFZBUklBTlRfQ0hST01FX0VORCAqL1xuICAtLW5hdnk6IzA1MEUyMDsgLS1kYXJrOiMwQTE2Mjg7IC0tYjkwMDojMEQyMzUyOyAtLWI3MDA6IzEyNDVBODsgLS1iNTAwOiMyNTYzRUI7XG4gIC0tYjQwMDojM0I4MkY2OyAtLWIyMDA6IzkzQzVGRDsgLS1iMTAwOiNEQkVBRkU7IC0tYjUwOiNFRkY2RkY7XG4gIC0tdGVhbDojMEQ5NDg4OyAtLWN5YW46IzA2QjZENDsgLS1ncmVlbjojMTBCOTgxOyAtLWdyZWVuNTA6I0VDRkRGNTtcbiAgLS1yb3NlOiNGNDNGNUU7IC0tb3JhbmdlOiNGOTczMTY7XG4gIC0tdGV4dDojMEYxNzJBOyAtLW11dGVkOiM0NzU1Njk7IC0tc3VidGxlOiM5NEEzQjg7IC0tYm9yZGVyOiNFMkU4RjA7XG4gIC0tY3JpbXNvbjojQjQyQjNDOyAtLXdoaXRlOiNGRkZGRkY7IC0tcGFnZTojRjhGQUZGO1xuICBmb250LWZhbWlseTonUGx1cyBKYWthcnRhIFNhbnMnLHN5c3RlbS11aSwtYXBwbGUtc3lzdGVtLHNhbnMtc2VyaWY7XG4gIGNvbG9yOnZhcigtLXRleHQpO1xuICBtYXgtd2lkdGg6MTE0MHB4OyBtYXJnaW46MCBhdXRvOyBwYWRkaW5nOjE2cHggMTZweCA0OHB4O1xuICBsaW5lLWhlaWdodDoxLjU7IGZvbnQtc2l6ZToxNnB4O1xufVxuLmNscC13cmFwICosIC5jbHAtd3JhcCAqOjpiZWZvcmUsIC5jbHAtd3JhcCAqOjphZnRlcnsgYm94LXNpemluZzpib3JkZXItYm94OyB9XG4uY2xwLXdyYXAgYnV0dG9ueyBmb250LWZhbWlseTppbmhlcml0OyBjdXJzb3I6cG9pbnRlcjsgfVxuLmNscC13cmFwIGgxLC5jbHAtd3JhcCBoMiwuY2xwLXdyYXAgaDMsLmNscC13cmFwIHB7IG1hcmdpbjowOyB9XG5cbi8qID09PT09PT09PT09PSBIRVJPID09PT09PT09PT09PSAqL1xuLmNscC1oZXJve1xuICBwb3NpdGlvbjpyZWxhdGl2ZTsgb3ZlcmZsb3c6aGlkZGVuOyBib3JkZXItcmFkaXVzOjIycHg7XG4gIGJhY2tncm91bmQ6dmFyKC0tbmF2eSk7IGNvbG9yOiNmZmY7XG4gIHBhZGRpbmc6MzZweCA0MHB4O1xuICBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjE0cHg7IGFsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7XG4gIGJveC1zaGFkb3c6MCAyMHB4IDQwcHggLTIwcHggcmdiYSg1LDE0LDMyLC40NSksIDAgNHB4IDEycHggLTZweCByZ2JhKDUsMTQsMzIsLjMpO1xufVxuLmNscC1hdXJvcmF7IHBvc2l0aW9uOmFic29sdXRlOyBpbnNldDowOyBwb2ludGVyLWV2ZW50czpub25lOyB9XG4uY2xwLWF1cm9yYSBzcGFue1xuICBwb3NpdGlvbjphYnNvbHV0ZTsgYm9yZGVyLXJhZGl1czo1MCU7IGZpbHRlcjpibHVyKDYwcHgpOyBvcGFjaXR5Oi41O1xuICBhbmltYXRpb246Y2xwRmxvYXQgMTRzIGVhc2UtaW4tb3V0IGluZmluaXRlIGFsdGVybmF0ZTtcbn1cbi5jbHAtYXVyb3JhIHNwYW46bnRoLWNoaWxkKDEpeyB3aWR0aDo0MjBweDsgaGVpZ2h0OjQyMHB4OyBsZWZ0Oi0xMjBweDsgdG9wOi0yMDBweDsgYmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMxMjQ1QTggMCUsdHJhbnNwYXJlbnQgNzAlKTsgfVxuLmNscC1hdXJvcmEgc3BhbjpudGgtY2hpbGQoMil7IHdpZHRoOjM4MHB4OyBoZWlnaHQ6MzgwcHg7IHJpZ2h0Oi04MHB4OyB0b3A6LTE2MHB4OyBiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzBEOTQ4OCAwJSx0cmFuc3BhcmVudCA3MCUpOyBhbmltYXRpb24tZGVsYXk6LTRzOyB9XG4uY2xwLWF1cm9yYSBzcGFuOm50aC1jaGlsZCgzKXsgd2lkdGg6MzQwcHg7IGhlaWdodDozNDBweDsgcmlnaHQ6MjIlOyBib3R0b206LTI0MHB4OyBiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzI1NjNFQiAwJSx0cmFuc3BhcmVudCA3MCUpOyBhbmltYXRpb24tZGVsYXk6LThzOyB9XG5Aa2V5ZnJhbWVzIGNscEZsb2F0e1xuICBmcm9teyB0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApIHNjYWxlKDEpOyB9XG4gIHRveyB0cmFuc2Zvcm06dHJhbnNsYXRlM2QoNDBweCwyNnB4LDApIHNjYWxlKDEuMTIpOyB9XG59XG4uY2xwLWhlcm8tc2hpbW1lcntcbiAgcG9zaXRpb246YWJzb2x1dGU7IGluc2V0OjA7IHBvaW50ZXItZXZlbnRzOm5vbmU7XG4gIGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDExNWRlZywgdHJhbnNwYXJlbnQgMzAlLCByZ2JhKDE0NywxOTcsMjUzLC4xMCkgNDUlLCByZ2JhKDYsMTgyLDIxMiwuMTIpIDUwJSwgdHJhbnNwYXJlbnQgNjUlKTtcbiAgYmFja2dyb3VuZC1zaXplOjI1MCUgMTAwJTtcbiAgYW5pbWF0aW9uOmNscFNoaW1tZXIgN3MgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGNscFNoaW1tZXJ7IDAle2JhY2tncm91bmQtcG9zaXRpb246MTIwJSAwO30gNTUle2JhY2tncm91bmQtcG9zaXRpb246LTQwJSAwO30gMTAwJXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00MCUgMDt9IH1cbi5jbHAtaGVyby1iYWRnZXN7IGRpc3BsYXk6ZmxleDsgZ2FwOjEwcHg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZmxleC13cmFwOndyYXA7IHBvc2l0aW9uOnJlbGF0aXZlOyB9XG4uY2xwLWJhZGdlLWJyYW5ke1xuICBiYWNrZ3JvdW5kOnZhcigtLWNyaW1zb24pOyBjb2xvcjojZmZmOyBmb250LXdlaWdodDo4MDA7IGZvbnQtc2l6ZToxMnB4O1xuICBsZXR0ZXItc3BhY2luZzouMTJlbTsgcGFkZGluZzo1cHggMTJweDsgYm9yZGVyLXJhZGl1czo2cHg7XG59XG4uY2xwLWJhZGdlLXNldHsgY29sb3I6dmFyKC0tYjIwMCk7IGZvbnQtc2l6ZToxM3B4OyBmb250LXdlaWdodDo2MDA7IH1cbi5jbHAtaGVybyBoMXsgcG9zaXRpb246cmVsYXRpdmU7IGZvbnQtc2l6ZTpjbGFtcCgyNnB4LDR2dyw0MHB4KTsgZm9udC13ZWlnaHQ6ODAwOyBsZXR0ZXItc3BhY2luZzotLjAyZW07IGxpbmUtaGVpZ2h0OjEuMTI7IH1cbi5jbHAtaGVyby1jaGlwc3sgZGlzcGxheTpmbGV4OyBnYXA6OHB4OyBmbGV4LXdyYXA6d3JhcDsgcG9zaXRpb246cmVsYXRpdmU7IH1cbi5jbHAtY2hpcHtcbiAgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wOSk7IGJvcmRlcjoxcHggc29saWQgcmdiYSgxNDcsMTk3LDI1MywuMjUpO1xuICBjb2xvcjojREJFQUZFOyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NjAwOyBwYWRkaW5nOjZweCAxNHB4OyBib3JkZXItcmFkaXVzOjMycHg7XG4gIGJhY2tkcm9wLWZpbHRlcjpibHVyKDRweCk7IHRyYW5zaXRpb246dHJhbnNmb3JtIC4yNXMgZWFzZSwgYmFja2dyb3VuZCAuMjVzIGVhc2U7XG59XG4uY2xwLWNoaXA6aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpOyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjE1KTsgfVxuLmNscC1jdGF7XG4gIHBvc2l0aW9uOnJlbGF0aXZlOyBiYWNrZ3JvdW5kOnZhcigtLWI1MDApOyBjb2xvcjojZmZmOyBib3JkZXI6bm9uZTsgYm9yZGVyLXJhZGl1czoxMHB4O1xuICBmb250LXNpemU6MTZweDsgZm9udC13ZWlnaHQ6NzAwOyBwYWRkaW5nOjEzcHggMzRweDsgbWFyZ2luLXRvcDoycHg7XG4gIGJveC1zaGFkb3c6MCAxMHB4IDIycHggLThweCByZ2JhKDM3LDk5LDIzNSwuNjUpO1xuICB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMjJzIGVhc2UsIGJveC1zaGFkb3cgLjIycyBlYXNlLCBiYWNrZ3JvdW5kIC4yMnMgZWFzZTtcbn1cbi5jbHAtY3RhOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTsgYmFja2dyb3VuZDp2YXIoLS1iNDAwKTsgYm94LXNoYWRvdzowIDE0cHggMjZweCAtOHB4IHJnYmEoMzcsOTksMjM1LC43NSk7IH1cblxuLyogPT09PT09PT09PT09IFNUSUNLWSBUT09MQkFSID09PT09PT09PT09PSAqL1xuLmNscC10b29sYmFyW2hpZGRlbl17IGRpc3BsYXk6bm9uZTsgfVxuLmNscC10b29sYmFye1xuICBwb3NpdGlvbjpzdGlja3k7IHRvcDo4cHg7IHotaW5kZXg6NjA7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTBweDsgZmxleC13cmFwOndyYXA7XG4gIGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuOTIpOyBiYWNrZHJvcC1maWx0ZXI6Ymx1cig4cHgpO1xuICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTZweDtcbiAgcGFkZGluZzo4cHggMTJweDsgbWFyZ2luOjE4cHggMCAwO1xuICBib3gtc2hhZG93OjAgOHB4IDI0cHggLTE0cHggcmdiYSgxNSwyMyw0MiwuMjUpLCAwIDJweCA2cHggLTRweCByZ2JhKDE1LDIzLDQyLC4xMik7XG4gIG1pbi1oZWlnaHQ6NTJweDtcbn1cbi5jbHAtc2NvcmUtY2hpcHtcbiAgZm9udC13ZWlnaHQ6ODAwOyBmb250LXNpemU6MTRweDsgY29sb3I6dmFyKC0tYjkwMCk7XG4gIGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1iMTAwKTsgYm9yZGVyLXJhZGl1czozMnB4OyBwYWRkaW5nOjdweCAxNnB4O1xufVxuLmNscC10YnRue1xuICBib3JkZXItcmFkaXVzOjEwcHg7IGZvbnQtc2l6ZToxM3B4OyBmb250LXdlaWdodDo3MDA7IHBhZGRpbmc6OXB4IDE2cHg7XG4gIGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYmFja2dyb3VuZDojZmZmOyBjb2xvcjp2YXIoLS1tdXRlZCk7XG4gIG1pbi1oZWlnaHQ6NDBweDsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjJzIGVhc2UsIGJveC1zaGFkb3cgLjJzIGVhc2UsIGJhY2tncm91bmQgLjJzIGVhc2U7XG59XG4uY2xwLXRidG46aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xcHgpOyBib3gtc2hhZG93OjAgNnB4IDE0cHggLThweCByZ2JhKDE1LDIzLDQyLC4zKTsgfVxuLmNscC10YnRuLWNoZWNreyBiYWNrZ3JvdW5kOnZhcigtLWdyZWVuKTsgYm9yZGVyLWNvbG9yOnZhcigtLWdyZWVuKTsgY29sb3I6I2ZmZjsgfVxuLmNscC10YnRuLWNoZWNrOmhvdmVyeyBiYWNrZ3JvdW5kOiMwY2E2Nzg7IH1cbi5jbHAtdGJ0bltkaXNhYmxlZF17IG9wYWNpdHk6LjU7IGN1cnNvcjpub3QtYWxsb3dlZDsgdHJhbnNmb3JtOm5vbmU7IGJveC1zaGFkb3c6bm9uZTsgfVxuLmNscC10b29sYmFyLXNwYWNlcnsgZmxleDoxOyB9XG5cbi8qID09PT09PT09PT09PSBDQVQgU0lNVUxBVE9SID09PT09PT09PT09PSAqL1xuLmNscC1zaW17IG1hcmdpbi10b3A6MThweDsgfVxuLmNscC1kb3RzeyBkaXNwbGF5OmZsZXg7IGdhcDo2cHg7IG1hcmdpbjowIDAgMTBweCAycHg7IH1cbi5jbHAtZG90e1xuICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJhY2tncm91bmQ6I2ZmZjsgY29sb3I6dmFyKC0tc3VidGxlKTtcbiAgZm9udC1zaXplOjExcHg7IGZvbnQtd2VpZ2h0OjcwMDsgYm9yZGVyLXJhZGl1czozMnB4OyBwYWRkaW5nOjRweCAxMHB4O1xuICB0cmFuc2l0aW9uOmJhY2tncm91bmQgLjI1cyBlYXNlLCBjb2xvciAuMjVzIGVhc2U7XG59XG4uY2xwLWRvdC5jbHAtZG9uZXsgYmFja2dyb3VuZDp2YXIoLS1iMTAwKTsgYm9yZGVyLWNvbG9yOnZhcigtLWIyMDApOyBjb2xvcjp2YXIoLS1iOTAwKTsgfVxuLmNscC1kb3QuY2xwLWN1cnsgYmFja2dyb3VuZDp2YXIoLS1iNTAwKTsgYm9yZGVyLWNvbG9yOnZhcigtLWI1MDApOyBjb2xvcjojZmZmOyB9XG4uY2xwLWRvdC5jbHAtY2xpY2thYmxleyBjdXJzb3I6cG9pbnRlcjsgfVxuLmNscC1kb3Q6bm90KC5jbHAtY2xpY2thYmxlKXsgY3Vyc29yOmRlZmF1bHQ7IH1cblxuLmNscC1jYXR7XG4gIHBvc2l0aW9uOnJlbGF0aXZlOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJhci1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjEwcHg7IG92ZXJmbG93OnZpc2libGU7XG4gIGJhY2tncm91bmQ6I2ZmZjtcbiAgYm94LXNoYWRvdzowIDEwcHggMzBweCAtMThweCByZ2JhKDE1LDIzLDQyLC4yMiksIDAgMnB4IDhweCAtNXB4IHJnYmEoMTUsMjMsNDIsLjEpO1xufVxuLmNscC1iYXJ7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTJweDtcbiAgYmFja2dyb3VuZDp2YXIoLS1iYXItYmcpOyBib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1iYXItYm9yZGVyKTtcbiAgYm9yZGVyLXJhZGl1czoxMHB4IDEwcHggMCAwO1xuICBwYWRkaW5nOjlweCAxMnB4OyBtaW4taGVpZ2h0OjQ0cHg7XG59XG4uY2xwLWJhci10aXRsZXsgZm9udC1zaXplOjEzcHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tYmFyLXRleHQpOyBmbGV4OjE7IG1pbi13aWR0aDowOyB9XG4uY2xwLWJhci10aW1lcnsgZm9udC1zaXplOjEycHg7IGNvbG9yOnZhcigtLWJhci10ZXh0KTsgd2hpdGUtc3BhY2U6bm93cmFwOyB9XG4uY2xwLWJhci10aW1lciBieyBmb250LXdlaWdodDo4MDA7IH1cbi5jbHAtbmV4dHtcbiAgYmFja2dyb3VuZDp2YXIoLS1iNzAwKTsgY29sb3I6I2ZmZjsgYm9yZGVyOm5vbmU7IGJvcmRlci1yYWRpdXM6NHB4O1xuICBmb250LXNpemU6MTFweDsgZm9udC13ZWlnaHQ6NzAwOyBsZXR0ZXItc3BhY2luZzouMDhlbTsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO1xuICBwYWRkaW5nOjdweCAxNnB4OyBtaW4taGVpZ2h0OjMwcHg7XG4gIHRyYW5zaXRpb246YmFja2dyb3VuZCAuMnMgZWFzZSwgdHJhbnNmb3JtIC4ycyBlYXNlO1xufVxuLmNscC1uZXh0OmhvdmVyeyBiYWNrZ3JvdW5kOnZhcigtLWI5MDApOyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMXB4KTsgfVxuLmNscC1zY3JlZW57IGJvcmRlci1yYWRpdXM6MCAwIDEwcHggMTBweDsgb3ZlcmZsb3c6aGlkZGVuOyB9XG5cbi5jbHAtaW5zdHJ7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6ZmxleC1zdGFydDsgZ2FwOjlweDtcbiAgcGFkZGluZzoxNHB4IDE2cHggMTJweDsgYmFja2dyb3VuZDojZmZmO1xufVxuLmNscC1pbmZve1xuICBmbGV4Om5vbmU7IHdpZHRoOjE4cHg7IGhlaWdodDoxOHB4OyBtYXJnaW4tdG9wOjJweDsgYm9yZGVyLXJhZGl1czo1MCU7XG4gIGJhY2tncm91bmQ6dmFyKC0tYjUwMCk7IGNvbG9yOiNmZmY7IGZvbnQtd2VpZ2h0OjgwMDsgZm9udC1zaXplOjExcHg7IGZvbnQtc3R5bGU6aXRhbGljO1xuICBkaXNwbGF5OmlubGluZS1mbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGZvbnQtZmFtaWx5Okdlb3JnaWEsc2VyaWY7XG59XG4uY2xwLWluc3RyIHB7IGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo3MDA7IGNvbG9yOnZhcigtLWI5MDApOyB9XG5cbi8qIGludHJvIHNjcmVlbiAqL1xuLmNscC1pbnRyby1ib2R5eyBwYWRkaW5nOjZweCAyMHB4IDI2cHggNDRweDsgYmFja2dyb3VuZDojZmZmOyB9XG4uY2xwLWludHJvLWJvZHkgaDN7IGZvbnQtc2l6ZToxNXB4OyBmb250LXdlaWdodDo4MDA7IGNvbG9yOnZhcigtLXRleHQpOyBtYXJnaW4tYm90dG9tOjEycHg7IH1cbi5jbHAtYnVsbGV0c3sgbGlzdC1zdHlsZTpub25lOyBtYXJnaW46MDsgcGFkZGluZzowOyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjEwcHg7IG1heC13aWR0aDo2NDBweDsgfVxuLmNscC1idWxsZXRzIGxpe1xuICBkaXNwbGF5OmZsZXg7IGdhcDoxMHB4OyBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjp2YXIoLS1iOTAwKTtcbiAgcGFkZGluZy1ib3R0b206MTBweDsgYm9yZGVyLWJvdHRvbToxcHggZG90dGVkIHZhcigtLWJvcmRlcik7XG59XG4uY2xwLWJ1bGxldHMgbGk6OmJlZm9yZXsgY29udGVudDpcIlwiOyBmbGV4Om5vbmU7IHdpZHRoOjhweDsgaGVpZ2h0OjhweDsgYm9yZGVyLXJhZGl1czo1MCU7IGJhY2tncm91bmQ6dmFyKC0tYjQwMCk7IG1hcmdpbi10b3A6NnB4OyB9XG5cbi8qIG1lZGlhIHNjcmVlbiAqL1xuLmNscC1tZWRpYS1wYW5lbHtcbiAgYmFja2dyb3VuZDp2YXIoLS1wYW5lbC1tZWRpYS1iZyk7IGJvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLXBhbmVsLW1lZGlhLWJvcmRlcik7XG4gIHBhZGRpbmc6MzRweCAyMHB4IDI2cHg7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxNHB4O1xufVxuLmNscC1tZWRpYS1jYXJke1xuICB3aWR0aDoxMDAlOyBtYXgtd2lkdGg6NTIwcHg7XG4gIGJhY2tncm91bmQ6dmFyKC0tbWVkaWEtY2FyZC1iZyk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tbWVkaWEtY2FyZC1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjEwcHg7XG4gIHBhZGRpbmc6MjJweCAyNnB4O1xufVxuLmNscC1tZWRpYS1jYXJkLmNscC1pcy12aWRlb3sgbWF4LXdpZHRoOjY2MHB4OyBwYWRkaW5nOjEycHg7IH1cbi5jbHAtbWVkaWEtem9uZXsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxOHB4OyB9XG4uY2xwLWlzLXZpZGVvIC5jbHAtbWVkaWEtem9uZXtcbiAgYXNwZWN0LXJhdGlvOjE2Lzk7IHdpZHRoOjEwMCU7IGJvcmRlci1yYWRpdXM6NnB4OyBiYWNrZ3JvdW5kOnZhcigtLWRhcmspO1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgbWFyZ2luLWJvdHRvbToxMnB4O1xuICBjb2xvcjojZmZmO1xufVxuLmNscC1zcGVha2Vye1xuICBmbGV4Om5vbmU7IHdpZHRoOjU2cHg7IGhlaWdodDo1NnB4OyBib3JkZXItcmFkaXVzOjhweDsgYmFja2dyb3VuZDojZmZmO1xuICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLW1lZGlhLWNhcmQtYm9yZGVyKTtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGNvbG9yOnZhcigtLW11dGVkKTtcbn1cbi5jbHAtaXMtdmlkZW8gLmNscC1zcGVha2VyeyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjEyKTsgYm9yZGVyOm5vbmU7IGNvbG9yOiNmZmY7IHdpZHRoOjY0cHg7IGhlaWdodDo2NHB4OyBib3JkZXItcmFkaXVzOjUwJTsgfVxuLmNscC1tZWRpYS1tYWlueyBmbGV4OjE7IG1pbi13aWR0aDowOyB9XG4uY2xwLWlzLXZpZGVvIC5jbHAtbWVkaWEtbWFpbnsgcGFkZGluZzowIDEwcHggNHB4OyB9XG4uY2xwLW1lZGlhLWxhYmVseyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tdGV4dCk7IG1hcmdpbi1ib3R0b206MTBweDsgfVxuLmNscC1wcm9ncmVzc3sgaGVpZ2h0OjhweDsgYm9yZGVyLXJhZGl1czo2cHg7IGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1tZWRpYS1jYXJkLWJvcmRlcik7IG92ZXJmbG93OmhpZGRlbjsgfVxuLmNscC1pcy12aWRlbyAuY2xwLXByb2dyZXNzeyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjYpOyB9XG4uY2xwLXByb2dyZXNzLWZpbGx7IGhlaWdodDoxMDAlOyB3aWR0aDowJTsgYmFja2dyb3VuZDp2YXIoLS1jeWFuKTsgYm9yZGVyLXJhZGl1czo2cHg7IHRyYW5zaXRpb246d2lkdGggLjNzIGxpbmVhcjsgfVxuLmNscC1tZWRpYS1tZXRhe1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjEwcHg7IGZvbnQtc2l6ZToxM3B4OyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtd2VpZ2h0OjYwMDtcbn1cbi5jbHAtbWVkaWEtbWV0YSBzdmd7IGRpc3BsYXk6YmxvY2s7IH1cbi5jbHAtb25jZS1ub3RleyBmb250LXNpemU6MTJweDsgY29sb3I6dmFyKC0tc3VidGxlKTsgZm9udC13ZWlnaHQ6NjAwOyB9XG5cbi8qIHF1ZXN0aW9uIHNjcmVlbiAqL1xuLmNscC1xLXBhbmVse1xuICBiYWNrZ3JvdW5kOnZhcigtLXBhbmVsLXEtYmcpOyBib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1wYW5lbC1xLWJvcmRlcik7XG4gIHBhZGRpbmc6MjBweCAyMnB4IDMwcHg7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBnYXA6MjBweDtcbn1cbi5jbHAtcXsgZm9udC1zaXplOjE1LjVweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjp2YXIoLS10ZXh0KTsgbGluZS1oZWlnaHQ6MjsgfVxuLmNscC1xbnVteyBmb250LXdlaWdodDo3MDA7IH1cbi5jbHAtZGR7XG4gIGRpc3BsYXk6aW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjhweDtcbiAgYm9yZGVyOm5vbmU7IGJvcmRlci1ib3R0b206MnB4IGRvdHRlZCB2YXIoLS1zdWJ0bGUpOyBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O1xuICBjb2xvcjp2YXIoLS1iNzAwKTsgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjYwMDtcbiAgcGFkZGluZzo0cHggOHB4IDNweDsgbWFyZ2luOjAgMnB4OyBtaW4taGVpZ2h0OjMycHg7IG1heC13aWR0aDoxMDAlO1xuICBib3JkZXItcmFkaXVzOjRweCA0cHggMCAwOyB2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTtcbiAgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4ycyBlYXNlO1xufVxuLmNscC1kZDpob3ZlcnsgYmFja2dyb3VuZDpyZ2JhKDM3LDk5LDIzNSwuMDgpOyB9XG4uY2xwLWRkLmNscC1vcGVueyBiYWNrZ3JvdW5kOnZhcigtLWRkLW9wZW4tYmcpOyB9XG4uY2xwLWRkIC5jbHAtZGQtdGV4dHtcbiAgb3ZlcmZsb3c6aGlkZGVuOyB0ZXh0LW92ZXJmbG93OmVsbGlwc2lzOyB3aGl0ZS1zcGFjZTpub3dyYXA7IG1heC13aWR0aDo0MjBweDtcbn1cbi5jbHAtZGQgLmNscC1kZC1jYXJldHsgZm9udC1zaXplOjlweDsgY29sb3I6dmFyKC0tYjcwMCk7IGZsZXg6bm9uZTsgfVxuLmNscC1kZC5jbHAtdW5hbnN3ZXJlZCAuY2xwLWRkLXRleHR7IGxldHRlci1zcGFjaW5nOjJweDsgY29sb3I6dmFyKC0tc3VidGxlKTsgfVxuLmNscC1kZC5jbHAtbWFyay1yaWdodHsgYmFja2dyb3VuZDp2YXIoLS1ncmVlbjUwKTsgYm9yZGVyOjJweCBzb2xpZCB2YXIoLS1ncmVlbik7IGJvcmRlci1yYWRpdXM6NnB4OyBjb2xvcjojMDQ3ODU3OyB9XG4uY2xwLWRkLmNscC1tYXJrLXdyb25neyBiYWNrZ3JvdW5kOiNGRkYxRjI7IGJvcmRlcjoycHggc29saWQgdmFyKC0tcm9zZSk7IGJvcmRlci1yYWRpdXM6NnB4OyBjb2xvcjojQkUxMjNDOyB9XG4uY2xwLWRkW2Rpc2FibGVkXXsgY3Vyc29yOmRlZmF1bHQ7IH1cbi5jbHAtcmV2ZWFse1xuICBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MTMuNXB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOiMwNDc4NTc7IGxpbmUtaGVpZ2h0OjEuNTtcbiAgbWFyZ2luOjJweCAwIDAgMjZweDtcbn1cbi5jbHAtcmV2ZWFsIGJ7IGZvbnQtd2VpZ2h0OjgwMDsgfVxuLmNscC10b2RvLXRhZ3tcbiAgZm9udC1zaXplOjEwcHg7IGZvbnQtd2VpZ2h0OjgwMDsgbGV0dGVyLXNwYWNpbmc6LjA4ZW07IGNvbG9yOnZhcigtLW9yYW5nZSk7XG4gIGJvcmRlcjoxcHggc29saWQgY3VycmVudENvbG9yOyBib3JkZXItcmFkaXVzOjRweDsgcGFkZGluZzoxcHggNnB4OyBtYXJnaW4tbGVmdDo4cHg7IHZlcnRpY2FsLWFsaWduOjJweDtcbn1cblxuLyogZHJvcGRvd24gcG9wdXAgKi9cbi5jbHAtcG9we1xuICBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDo4MDsgd2lkdGg6bWluKDM0MHB4LCBjYWxjKDEwMHZ3IC0gNDhweCkpO1xuICBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxMHB4O1xuICBib3gtc2hhZG93OjAgMThweCA0MHB4IC0xMnB4IHJnYmEoMTUsMjMsNDIsLjI4KSwgMCA0cHggMTJweCAtNnB4IHJnYmEoMTUsMjMsNDIsLjE0KTtcbiAgcGFkZGluZzo2cHg7IFxufVxuLmNscC1vcHR7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTFweDsgd2lkdGg6MTAwJTtcbiAgYmFja2dyb3VuZDp0cmFuc3BhcmVudDsgYm9yZGVyOm5vbmU7IHRleHQtYWxpZ246bGVmdDtcbiAgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tdGV4dCk7XG4gIHBhZGRpbmc6MTBweCAxMnB4OyBtaW4taGVpZ2h0OjQycHg7IGJvcmRlci1yYWRpdXM6NnB4O1xuICBib3JkZXItYm90dG9tOjFweCBkb3R0ZWQgdmFyKC0tYm9yZGVyKTtcbiAgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4xNXMgZWFzZTtcbn1cbi5jbHAtb3B0Omxhc3QtY2hpbGR7IGJvcmRlci1ib3R0b206bm9uZTsgfVxuLmNscC1vcHQ6aG92ZXJ7IGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgfVxuLmNscC1yYWRpb3tcbiAgZmxleDpub25lOyB3aWR0aDoxN3B4OyBoZWlnaHQ6MTdweDsgYm9yZGVyLXJhZGl1czo1MCU7XG4gIGJvcmRlcjoycHggc29saWQgdmFyKC0tc3VidGxlKTsgYmFja2dyb3VuZDojZmZmOyBwb3NpdGlvbjpyZWxhdGl2ZTtcbn1cbi5jbHAtb3B0LmNscC1zZWwgLmNscC1yYWRpb3sgYm9yZGVyLWNvbG9yOnZhcigtLWI1MDApOyB9XG4uY2xwLW9wdC5jbHAtc2VsIC5jbHAtcmFkaW86OmFmdGVye1xuICBjb250ZW50OlwiXCI7IHBvc2l0aW9uOmFic29sdXRlOyBpbnNldDoyLjVweDsgYm9yZGVyLXJhZGl1czo1MCU7IGJhY2tncm91bmQ6dmFyKC0tYjUwMCk7XG59XG5cbi8qIHByZS1zdGFydCAvIGZpbmlzaCAqL1xuLmNscC1pZGxle1xuICBwYWRkaW5nOjU2cHggMjRweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyLXJhZGl1czowIDAgMTBweCAxMHB4O1xufVxuLmNscC1pZGxlIHB7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC1zaXplOjE1cHg7IGZvbnQtd2VpZ2h0OjYwMDsgbWF4LXdpZHRoOjQ4MHB4OyBtYXJnaW46MCBhdXRvOyB9XG4uY2xwLWZpbmlzaHsgcGFkZGluZzo0OHB4IDI0cHggNTZweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJhY2tncm91bmQ6I2ZmZjsgfVxuLmNscC1maW5pc2ggaDN7IGZvbnQtc2l6ZToyMnB4OyBmb250LXdlaWdodDo4MDA7IG1hcmdpbi1ib3R0b206MTBweDsgfVxuLmNscC1maW5pc2ggcHsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXNpemU6MTVweDsgZm9udC13ZWlnaHQ6NjAwOyBtYXJnaW4tYm90dG9tOjIycHg7IH1cbi5jbHAtZmluaXNoLWNoZWNre1xuICBiYWNrZ3JvdW5kOnZhcigtLWdyZWVuKTsgY29sb3I6I2ZmZjsgYm9yZGVyOm5vbmU7IGJvcmRlci1yYWRpdXM6MTBweDtcbiAgZm9udC1zaXplOjE2cHg7IGZvbnQtd2VpZ2h0OjcwMDsgcGFkZGluZzoxM3B4IDMycHg7IG1pbi1oZWlnaHQ6NDRweDtcbiAgYm94LXNoYWRvdzowIDEwcHggMjJweCAtOHB4IHJnYmEoMTYsMTg1LDEyOSwuNTUpO1xuICB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnMgZWFzZSwgYmFja2dyb3VuZCAuMnMgZWFzZTtcbn1cbi5jbHAtZmluaXNoLWNoZWNrOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTsgYmFja2dyb3VuZDojMGNhNjc4OyB9XG5cbi8qID09PT09PT09PT09PSBSRVNVTFRTID09PT09PT09PT09PSAqL1xuLmNscC1yZXN1bHRzeyBtYXJnaW4tdG9wOjMwcHg7IH1cbi5jbHAtcmVzdWx0cyBoMnsgZm9udC1zaXplOjI0cHg7IGZvbnQtd2VpZ2h0OjgwMDsgbGV0dGVyLXNwYWNpbmc6LS4wMWVtOyBtYXJnaW4tYm90dG9tOjE2cHg7IH1cbi5jbHAtcmVzLWdyaWR7IGRpc3BsYXk6Z3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOmF1dG8gMWZyOyBnYXA6MTZweDsgYWxpZ24taXRlbXM6c3RyZXRjaDsgfVxuLmNscC1jYXJke1xuICBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxNnB4OyBwYWRkaW5nOjIycHg7XG4gIGJveC1zaGFkb3c6MCAxMHB4IDMwcHggLTIwcHggcmdiYSgxNSwyMyw0MiwuMjUpLCAwIDJweCA4cHggLTZweCByZ2JhKDE1LDIzLDQyLC4wOCk7XG4gIHRyYW5zaXRpb246dHJhbnNmb3JtIC4yNXMgZWFzZSwgYm94LXNoYWRvdyAuMjVzIGVhc2U7XG59XG4uY2xwLWNhcmQ6aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpOyBib3gtc2hhZG93OjAgMTZweCAzNnB4IC0yMHB4IHJnYmEoMTUsMjMsNDIsLjMpOyB9XG4uY2xwLXJpbmctY2FyZHsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjhweDsgbWluLXdpZHRoOjIyMHB4OyB9XG4uY2xwLXJpbmctd3JhcHsgcG9zaXRpb246cmVsYXRpdmU7IHdpZHRoOjEzMnB4OyBoZWlnaHQ6MTMycHg7IH1cbi5jbHAtcmluZy13cmFwIHN2Z3sgdHJhbnNmb3JtOnJvdGF0ZSgtOTBkZWcpOyBkaXNwbGF5OmJsb2NrOyB9XG4uY2xwLXJpbmctbnVte1xuICBwb3NpdGlvbjphYnNvbHV0ZTsgaW5zZXQ6MDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47XG4gIGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgZm9udC13ZWlnaHQ6ODAwO1xufVxuLmNscC1yaW5nLW51bSBieyBmb250LXNpemU6MjhweDsgbGluZS1oZWlnaHQ6MTsgY29sb3I6dmFyKC0tYjkwMCk7IH1cbi5jbHAtcmluZy1udW0gc3BhbnsgZm9udC1zaXplOjEycHg7IGNvbG9yOnZhcigtLXN1YnRsZSk7IGZvbnQtd2VpZ2h0OjcwMDsgfVxuLmNscC1yaW5nLWNhcmQgaDN7IGZvbnQtc2l6ZToxNHB4OyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtd2VpZ2h0OjcwMDsgfVxuLmNscC1wYXJ0LWNoaXBzeyBkaXNwbGF5OmZsZXg7IGZsZXgtd3JhcDp3cmFwOyBnYXA6MTBweDsgbWFyZ2luLXRvcDoxMnB4OyB9XG4uY2xwLXBhcnQtY2hpcHtcbiAgYm9yZGVyLXJhZGl1czozMnB4OyBwYWRkaW5nOjhweCAxNnB4OyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NzAwO1xuICBiYWNrZ3JvdW5kOnZhcigtLWI1MCk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYjEwMCk7IGNvbG9yOnZhcigtLWI5MDApO1xufVxuLmNscC1wYXJ0LWNoaXAgYnsgZm9udC13ZWlnaHQ6ODAwOyB9XG4uY2xwLWNsYi1yb3d7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTRweDsgZmxleC13cmFwOndyYXA7IG1hcmdpbi10b3A6MTZweDtcbiAgcGFkZGluZzoxNHB4IDE2cHg7IGJvcmRlci1yYWRpdXM6MTBweDsgYmFja2dyb3VuZDp2YXIoLS1iNTApOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWIxMDApO1xufVxuLmNscC1jbGItYmFkZ2V7XG4gIGJhY2tncm91bmQ6dmFyKC0tY3JpbXNvbik7IGNvbG9yOiNmZmY7IGZvbnQtd2VpZ2h0OjgwMDsgZm9udC1zaXplOjE0cHg7XG4gIGJvcmRlci1yYWRpdXM6MTBweDsgcGFkZGluZzo4cHggMTZweDtcbn1cbi5jbHAtY2xiLXJvdyBweyBmb250LXNpemU6MTNweDsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXdlaWdodDo2MDA7IGZsZXg6MTsgbWluLXdpZHRoOjIwMHB4OyB9XG4uY2xwLXRyYW5zY3JpcHRzeyBtYXJnaW4tdG9wOjE2cHg7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBnYXA6MTBweDsgfVxuLmNscC10ci1jYXJkeyBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxNnB4OyBvdmVyZmxvdzpoaWRkZW47IH1cbi5jbHAtdHItaGVhZHtcbiAgd2lkdGg6MTAwJTsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOyBnYXA6MTBweDtcbiAgYmFja2dyb3VuZDp0cmFuc3BhcmVudDsgYm9yZGVyOm5vbmU7IHBhZGRpbmc6MTVweCAyMHB4OyB0ZXh0LWFsaWduOmxlZnQ7XG4gIGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo3MDA7IGNvbG9yOnZhcigtLXRleHQpOyBtaW4taGVpZ2h0OjQ4cHg7XG59XG4uY2xwLXRyLWhlYWQ6aG92ZXJ7IGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgfVxuLmNscC10ci1oZWFkIC5jbHAtdHItY2FyZXR7IGNvbG9yOnZhcigtLXN1YnRsZSk7IGZvbnQtc2l6ZToxMXB4OyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnMgZWFzZTsgfVxuLmNscC10ci1jYXJkLmNscC1vcGVuIC5jbHAtdHItY2FyZXR7IHRyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKTsgfVxuLmNscC10ci1ib2R5eyBkaXNwbGF5Om5vbmU7IHBhZGRpbmc6MCAyMHB4IDE4cHg7IGZvbnQtc2l6ZToxNHB4OyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtd2VpZ2h0OjUwMDsgbGluZS1oZWlnaHQ6MS43OyB9XG4uY2xwLXRyLWNhcmQuY2xwLW9wZW4gLmNscC10ci1ib2R5eyBkaXNwbGF5OmJsb2NrOyB9XG4uY2xwLXRyLXRvZG97IGNvbG9yOnZhcigtLW9yYW5nZSk7IGZvbnQtd2VpZ2h0OjcwMDsgZm9udC1zaXplOjEyLjVweDsgZGlzcGxheTpibG9jazsgbWFyZ2luLXRvcDo4cHg7IH1cblxuLyogc2Nyb2xsIHJldmVhbCAqL1xuLmNscC1yZXZ7IG9wYWNpdHk6MDsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTZweCk7IHRyYW5zaXRpb246b3BhY2l0eSAuNXMgZWFzZSwgdHJhbnNmb3JtIC41cyBlYXNlOyB9XG4uY2xwLXJldi5jbHAtaW57IG9wYWNpdHk6MTsgdHJhbnNmb3JtOm5vbmU7IH1cblxuLyogPT09PT09PT09PT09IFJFU1BPTlNJVkUgPT09PT09PT09PT09ICovXG5AbWVkaWEgKG1heC13aWR0aDo3MDBweCl7XG4gIC5jbHAtd3JhcHsgcGFkZGluZzoxMHB4IDEwcHggNDBweDsgfVxuICAuY2xwLWhlcm97IHBhZGRpbmc6MjhweCAyMnB4OyBib3JkZXItcmFkaXVzOjE2cHg7IH1cbiAgLmNscC1xeyBmb250LXNpemU6MTVweDsgfVxuICAuY2xwLWRkeyBtaW4taGVpZ2h0OjQwcHg7IH1cbiAgLmNscC1kZCAuY2xwLWRkLXRleHR7IG1heC13aWR0aDoxODBweDsgfVxuICAuY2xwLWJhcnsgZmxleC13cmFwOndyYXA7IH1cbiAgLmNscC1iYXItdGl0bGV7IGZsZXgtYmFzaXM6MTAwJTsgfVxuICAuY2xwLXEtcGFuZWx7IHBhZGRpbmc6MTZweCAxNHB4IDI2cHg7IH1cbiAgLmNscC1pbnRyby1ib2R5eyBwYWRkaW5nLWxlZnQ6MjBweDsgfVxuICAuY2xwLXJlcy1ncmlkeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyOyB9XG4gIC5jbHAtbWVkaWEtY2FyZHsgcGFkZGluZzoxNnB4OyB9XG59XG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSl7XG4gIC5jbHAtd3JhcCAqLCAuY2xwLXdyYXAgKjo6YmVmb3JlLCAuY2xwLXdyYXAgKjo6YWZ0ZXJ7XG4gICAgYW5pbWF0aW9uOm5vbmUgIWltcG9ydGFudDsgdHJhbnNpdGlvbjpub25lICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmNscC1yZXZ7IG9wYWNpdHk6MTsgdHJhbnNmb3JtOm5vbmU7IH1cbn1cblxuLmNscC1hdXJvcmEgc3BhbntmaWx0ZXI6Ymx1cigzNnB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX1cbi5jbHAtaGVyby1zaGltbWVye3dpbGwtY2hhbmdlOmJhY2tncm91bmQtcG9zaXRpb259XG4iO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocyk7fSkoKTsKCid1c2Ugc3RyaWN0JzsKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIFRFU1RfREFUQSBcdTIwMTQgc3dhcCBpbiBuZXcgc2V0cyBoZXJlIHdpdGhvdXQgdG91Y2hpbmcgbWFya3VwLgogICBTaGFwZTogeyBwYXJ0czpbeyBuYW1lLCBoZWFkZXJUaXRsZSwgaW50cm9UaXRsZSwgaW50cm9CdWxsZXRzW10sCiAgICAgICAgICAgIHFJbnN0cnVjdGlvbiwgdHJhbnNjcmlwdCwgc2VjdGlvbnM6W3sgbGFiZWwsIG1lZGlhVHlwZSwKICAgICAgICAgICAgZHVyYXRpb24oc2VjKSwgdGltZU1pbnV0ZXMsIG1lZGlhSW5zdHJ1Y3Rpb24sCiAgICAgICAgICAgIHF1ZXN0aW9uczpbeyBuLCBzdGVtLCBvcHRpb25zWzRdLCBrZXkoMS00KSwgdG9kbz8gfV0gfV0gfV0gfQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KdmFyIFRFU1RfREFUQSA9IHsidGVzdExhYmVsIjoiU2V0IDIgXHUyMDEzIFByYWN0aWNlIFRlc3QgMiIsInNldE5vIjoyLCJ0ZXN0Tm8iOjIsInBhcnRzIjpbeyJuYW1lIjoiUGFydCAxOiBMaXN0ZW5pbmcgdG8gUHJvYmxlbSBTb2x2aW5nIiwiaGVhZGVyVGl0bGUiOiJTZXQgMiBcdTIwMTMgUHJhY3RpY2UgVGVzdCAyIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCAxOiBMaXN0ZW5pbmcgdG8gUHJvYmxlbSBTb2x2aW5nIiwiaW50cm9UaXRsZSI6Ikxpc3RlbmluZyB0byBQcm9ibGVtIFNvbHZpbmciLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIGEgbWFuIGFuZCBhIHdvbWFuIGluIGEgY2xvdGhpbmcgc3RvcmUuIFRoZSBtYW4gaXMgYSBzYWxlc3BlcnNvbiwgYW5kIHRoZSB3b21hbiBpcyBhIHNob3BwZXIuIEl0IHBsYXlzIGluIHRocmVlIHNlY3Rpb25zLCBhbmQgZWFjaCBzZWN0aW9uIHBsYXlzIG9ubHkgb25jZS4iLCJBZnRlciBlYWNoIHNlY3Rpb24sIHF1ZXN0aW9ucyB3aWxsIGFwcGVhci4gQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbi4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbiBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoIFx1MjViZSApLiIsInRyYW5zY3JpcHQiOiJZb3Ugd2lsbCBoZWFyIGEgY29udmVyc2F0aW9uIGJldHdlZW4gYSBtYW4gYW5kIGEgd29tYW4gaW4gYSBjbG90aGluZyBzdG9yZS4gVGhlIG1hbiBpc1xuYSBzYWxlc3BlcnNvbiwgYW5kIHRoZSB3b21hbiBpcyBhIHNob3BwZXIuXG5cblNlY3Rpb24gMTpcbldPTUFOOiAgICAgICAgQ2FuIEkgYXNrIHlvdXIgb3Bpbmlvbj8gQm90aCB0aGVzZSBzaGlydHMgZml0IG1lIC4gLiAuIGJ1dCB3aGljaCBvbmUgc3VpdHMgbWVcbmJldHRlcj9cbk1BTjogSSB0aGluayB0aGV5XHUyMDE5ZCBib3RoIGxvb2sgZ3JlYXQgb24geW91LlxuV09NQU46IE1tbW0uIEJ1dCBJXHUyMDE5bSBnb2luZyB0byBidXkgb25seSBvbmUgb2YgdGhlbS4gSSBjYW5cdTIwMTl0IGRlY2lkZS4gT24gdGhpc1xub25lLCB0aGUgbmVja2xpbmUgcmVhbGx5IHN1aXRzIG15IGhlaWdodCwgYW5kIHRoZSBsaWdodCBjb2xvdXIgZ29lcyB3ZWxsIHdpdGggbXkgaGFpci4gQnV0XG50aGlzIG90aGVyIG9uZVx1MjAxOXMgZGFya2VyIGFuZCBtb3JlIGZvcm1hbCwgd2hpY2ggSSBsaWtlLCB0b28uXG5NQU46IEhtbS4gV2hlcmUgd2lsbCB5b3UgYmUgd2VhcmluZyB0aGUgc2hpcnQ\/XG5XT01BTjogVGhlIG9mZmljZS4gSVx1MjAxOXZlIGJlZW4gcHJvbW90ZWQgYW5kIElcdTIwMTlsbCBuZWVkIHNvbWUgY2xvdGhlcyBmb3IgbWVldGluZ3NcbndpdGggY2xpZW50cy5cbk1BTjogVGhlbiBtYXliZSAuIC4gLiBkcmVzcyB0byBmaXQgdGhlIHNpdHVhdGlvbiBhbmQgZ28gd2l0aCB0aGUgbW9yZSBmb3JtYWwgb25lP1xuV09NQU46IFllcyAuIC4gLiBidXQgSSB3YW50IHRvIG1ha2UgYW4gaW1wcmVzc2lvbi4gSSBuZWVkIHNvbWV0aGluZyB0aGF0IGxvb2tzXG5yZWFsbHkgZ29vZCBvbiBtZS5cbk1BTjogSG1tLiBUb3VnaCBkZWNpc2lvbi4gVGhleVx1MjAxOXJlIGJvdGggZ29vZCBwaWNrcy5cbldPTUFOOiAgICAgICAgSSB0aGluayBJXHUyMDE5bGwgdGFrZSB0aGUgbGlnaHRlciBvbmUuIEkgbGlrZSBpdCBiZXR0ZXIuIEkgbGlrZSB0aGUgcHJpY2UgYmV0dGVyLCB0b28uXG5NQU46IElcdTIwMTlsbCByaW5nIGl0IHVwIGZvciB5b3UuXG5TZWN0aW9uIDI6XG5XT01BTjogRXhjdXNlIG1lLCBJIGJvdWdodCB0aGlzIHNoaXJ0IGhlcmUgcmVjZW50bHksIGJ1dCBJXHUyMDE5bSBicmluZ2luZyBpdCBiYWNrLlxuSGVyZVx1MjAxOXMgdGhlIHJlY2VpcHQuXG5cZk1BTjogVGhhbmtzIC4gLiAuIFtwYXVzZV0gSVx1MjAxOW0gc29ycnksIHRoaXMgcmVjZWlwdCBpcyBmcm9tIGxhc3QgbW9udGguIFlvdSBib3VnaHQgdGhlIHNoaXJ0XG5hbG1vc3QgdHdvIHdlZWtzIGFnby4gSVx1MjAxOW0gYWZyYWlkIHdlIGdpdmUgcmVmdW5kcyBvbmx5IHdpdGhpbiBvbmUgd2VlayBvZiB0aGUgZGF0ZSBvZlxucHVyY2hhc2UuIEJ1dCB3ZSBjb3VsZCBzdGlsbCBnaXZlIHlvdSBzdG9yZSBjcmVkaXQuXG5XT01BTjogICAgICAgIE5vLCBhY3R1YWxseSwgYWxsIEkgd2FudCBpcyB0byBzd2FwIHRoaXMgc2hpcnQgZm9yIG9uZSBJIGxpa2UgYmV0dGVyLlxuTUFOOiBPaCEgWW91IHdhbnQgdG8gZXhjaGFuZ2UgaXQuIEluIHRoYXQgY2FzZSwgYnkgYWxsIG1lYW5zLiBZb3UgY2FuIGV4Y2hhbmdlIHRoZVxuc2hpcnQgZm9yIGFuIGl0ZW0gb2YgZXF1YWwgb3IgbGVzc2VyIHZhbHVlLlxuV09NQU46IFdlbGwgdGhhdCB3b3JrcyBvdXQgd2VsbC4gSSBrbm93IGV4YWN0bHkgd2hpY2ggb25lIElcdTIwMTltIGFmdGVyLiBJIHRoaW5rIGl0IHdhc1xuYSBiaXQgbW9yZSBleHBlbnNpdmUsIHRob3VnaC5cbk1BTjogV2hpY2ggc2hpcnQgd2FzIGl0PyBXYXMgaXQgb3ZlciBoZXJlP1xuV09NQU46ICAgICAgICBUaGF0IGRhcmsgb25lIG92ZXIgdGhlcmUuIFNpemUgMzIsIHBsZWFzZS5cblNlY3Rpb24gMzpcbk1BTjogSGVyZSB5b3UgZ28uIE9oLCBsb29rLCB0aGlzIHNoaXJ0XHUyMDE5cyBvbiBzYWxlLiBOb3cgaXQgY29zdHMgbGVzcyB0aGFuIHRoZSBvbmUgeW91XHUyMDE5cmVcbmJyaW5naW5nIGJhY2shXG5XT01BTjogICAgICAgIFJlYWxseT8hIFRoYXRcdTIwMTlzIGEgZ29vZCBkZWFsLlxuTUFOOiBCdXQgcmVtZW1iZXIsIGl0XHUyMDE5cyBhbiBleGNoYW5nZSwgc28gSSBjYW5cdTIwMTl0IGdpdmUgeW91IGFueSBtb25leSBiYWNrLiBZb3UgbWF5IGFzXG53ZWxsIHBpY2sgdXAgc29tZXRoaW5nIGVsc2UsIHRvby4gSG93IGFib3V0IGEgYmVsdD9cbldPTUFOOiAgICAgICAgVWgsIGxldCBtZSB0aGluayAuIC4gLiBJIHJlYWxseSBkb25cdTIwMTl0IG5lZWQgYW55dGhpbmcgZWxzZS5cbk1BTjogRWFycmluZ3MsIHBlcmhhcHM\/IE9yIGEgc2NhcmY\/XG5XT01BTjogICAgICAgIEkgdGhpbmsgSVx1MjAxOWxsIGp1c3QgZ2V0IC4gLiAuIHRoZXNlIHNvY2tzIGhlcmUuIFlvdSBjYW4gbmV2ZXIgaGF2ZSB0b28gbWFueVxuc29ja3MuXG5NQU46IEFsbCByaWdodCB0aGVuLiBXaXRoIHRoZSBzb2NrcywgdGhlIGRpZmZlcmVuY2UgaXMgJDMuNDUuIEhvdyB3b3VsZCB5b3UgbGlrZSB0byBwYXk\/XG5XT01BTjogICAgICAgIEJ5IGNhc2g6IHRvb25pZXMgYW5kIHF1YXJ0ZXJzLiIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IkNvbnZlcnNhdGlvbiBcdTIwMTQgU2VjdGlvbiAxIiwibWVkaWFUeXBlIjoiYXVkaW8iLCJkdXJhdGlvbiI6NTcsInRpbWVNaW51dGVzIjoyLCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBmb2xsb3dpbmcgY29udmVyc2F0aW9uLiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4iLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJXaGF0IGRpZCB0aGUgc2hvcHBlciBidXk\/Iiwib3B0aW9ucyI6WyJBIGxpZ2h0LWNvbG91cmVkIHNoaXJ0LiIsIkEgZGFyaywgZm9ybWFsIHNoaXJ0LiIsIlR3byBzaGlydHMgYXQgb25jZS4iLCJBIHNoaXJ0IGFuZCBhIGJlbHQuIl0sImtleSI6MCwicmVjb24iOnRydWV9LHsibiI6Miwic3RlbSI6IldoYXQgYmVzdCBzdW1zIHVwIHRoZSBzYWxlc3BlcnNvbidzIGFkdmljZT8iLCJvcHRpb25zIjpbIkNob29zZSB0aGUgbW9yZSBmb3JtYWwgc2hpcnQuIiwiQnV5IHRoZSBjaGVhcGVyIHNoaXJ0LiIsIlBpY2sgZWl0aGVyIG9uZSwgYm90aCBhcmUgZ29vZCBjaG9pY2VzLiIsIldhaXQgZm9yIGEgYmV0dGVyIHNhbGUuIl0sImtleSI6MiwicmVjb24iOnRydWV9LHsibiI6Mywic3RlbSI6IldoaWNoIHN0eWxlIGRpZCB0aGUgc2hvcHBlciBjaG9vc2U\/Iiwib3B0aW9ucyI6WyJ0aGUgZGFya2VyIG9uZSIsInRoZSBsaWdodGVyIG9uZSIsInRoZSBtb3JlIGZvcm1hbCBvbmUiLCJ0aGUgbW9zdCBleHBlbnNpdmUgb25lIl0sImtleSI6MSwicmVjb24iOnRydWV9XX0seyJsYWJlbCI6IkNvbnZlcnNhdGlvbiBcdTIwMTQgU2VjdGlvbiAyIiwibWVkaWFUeXBlIjoiYXVkaW8iLCJkdXJhdGlvbiI6NDgsInRpbWVNaW51dGVzIjoyLCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBuZXh0IHBhcnQgb2YgdGhlIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwicXVlc3Rpb25zIjpbeyJuIjo0LCJzdGVtIjoiV2h5IGRpZCB0aGUgc2hvcHBlciBjb21lIGJhY2s\/Iiwib3B0aW9ucyI6WyJ0byBleGNoYW5nZSBhIHNoaXJ0IiwidG8gZ2V0IGEgY2FzaCByZWZ1bmQiLCJ0byBidXkgYSBtYXRjaGluZyBpdGVtIiwidG8gbWFrZSBhIGNvbXBsYWludCJdLCJrZXkiOjAsInJlY29uIjp0cnVlfSx7Im4iOjUsInN0ZW0iOiJXaGF0IGlzIG9uZSBvZiB0aGUgc3RvcmUncyBwb2xpY2llcyBvbiByZXR1cm5lZCBpdGVtcz8iLCJvcHRpb25zIjpbIkZ1bGwgcmVmdW5kcyBhcmUgZ2l2ZW4gd2l0aGluIG9uZSBtb250aC4iLCJSZXR1cm5zIHJlcXVpcmUgYSBtYW5hZ2VyJ3MgYXBwcm92YWwuIiwiU2FsZSBpdGVtcyBjYW5ub3QgYmUgZXhjaGFuZ2VkLiIsIkV4Y2hhbmdlIG9yIHN0b3JlIGNyZWRpdCB3aXRoaW4gdHdvIHdlZWtzLiJdLCJrZXkiOjMsInJlY29uIjp0cnVlfSx7Im4iOjYsInN0ZW0iOiJXaGF0IGRpZCB0aGUgc2FsZXNwZXJzb24gZG8\/Iiwib3B0aW9ucyI6WyJIZSByZWZ1c2VkIHRoZSBleGNoYW5nZS4iLCJIZSBvZmZlcmVkIHN0b3JlIGNyZWRpdCBmb3IgYSByZXR1cm4uIiwiSGUgZ2F2ZSBhIGNhc2ggcmVmdW5kLiIsIkhlIGNoYXJnZWQgYSByZXN0b2NraW5nIGZlZS4iXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX1dfSx7ImxhYmVsIjoiQ29udmVyc2F0aW9uIFx1MjAxNCBTZWN0aW9uIDMiLCJtZWRpYVR5cGUiOiJhdWRpbyIsImR1cmF0aW9uIjozOCwidGltZU1pbnV0ZXMiOjIsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZpbmFsIHBhcnQgb2YgdGhlIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwicXVlc3Rpb25zIjpbeyJuIjo3LCJzdGVtIjoiV2hhdCBkaWQgdGhlIHNob3BwZXIgYnV5IGluIHRoZSB0aGlyZCBzZWN0aW9uPyIsIm9wdGlvbnMiOlsiYSBiZWx0IiwiYSBzY2FyZiIsInNvbWUgc29ja3MiLCJlYXJyaW5ncyJdLCJrZXkiOjIsInJlY29uIjp0cnVlfSx7Im4iOjgsInN0ZW0iOiJXaGljaCBzdGF0ZW1lbnQgaXMgdHJ1ZSBvZiB0aGUgc2hvcHBlcj8iLCJvcHRpb25zIjpbIlNoZSBnb3QgdHdvIG5ldyBpdGVtcyBvZiBjbG90aGluZy4iLCJTaGUgcmV0dXJuZWQgZXZlcnl0aGluZyBmb3IgYSByZWZ1bmQuIiwiU2hlIHBhaWQgYnkgY3JlZGl0IGNhcmQuIiwiU2hlIHNwZW50IGxlc3MgdGhhbiBzaGUgZXhwZWN0ZWQuIl0sImtleSI6MCwicmVjb24iOnRydWV9XX1dfSx7Im5hbWUiOiJQYXJ0IDI6IExpc3RlbmluZyB0byBhIERhaWx5IExpZmUgQ29udmVyc2F0aW9uIiwiaGVhZGVyVGl0bGUiOiJTZXQgMiBcdTIwMTMgUHJhY3RpY2UgVGVzdCAyIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCAyOiBMaXN0ZW5pbmcgdG8gYSBEYWlseSBMaWZlIENvbnZlcnNhdGlvbiIsImludHJvVGl0bGUiOiJMaXN0ZW5pbmcgdG8gYSBEYWlseSBMaWZlIENvbnZlcnNhdGlvbiIsImludHJvQnVsbGV0cyI6WyJZb3Ugd2lsbCBoZWFyIGEgY29udmVyc2F0aW9uIGFib3V0IGEgdmVyeSBidXN5IHdlZWtlbmQuIEl0IHBsYXlzIG9ubHkgb25jZS4iLCJBZnRlciB0aGUgY29udmVyc2F0aW9uLCBxdWVzdGlvbnMgd2lsbCBhcHBlYXIuIENob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24uIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24gZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCBcdTI1YmUgKS4iLCJ0cmFuc2NyaXB0IjoiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBhYm91dCBhIHZlcnkgYnVzeSB3ZWVrZW5kLlxuXG5NQU46IEdvb2QgbW9ybmluZywgU3VlLiBIb3cgd2FzIHlvdXIgd2Vla2VuZD9cbldPTUFOOiBVZ2gsIGl0XHUyMDE5cyBhbGwgYSBibHVyLiBJdCBzdGFydGVkIG9uIEZyaWRheSBuaWdodCB3aXRoIG15IHlvdW5nZXIgc29uXHUyMDE5c1xuYmFzZWJhbGwgYXdhcmQgY2VyZW1vbnkuIEl0IHdhcyBuaWNlIHRvIHNlZSBoaW0gZ2V0IGhpcyB0cm9waHksIGJ1dCBJIGhhdmUgdG8gY29uZmVzcyBpdFxud2FzIHRvdWdoIHNpdHRpbmcgdGhyb3VnaCAzIGhvdXJzIG9mIHRyb3BoeSBwcmVzZW50YXRpb25zLlxuTUFOOiBJXHUyMDE5bGwgYmV0LiBEaWQgeW91IGdldCB0byByZWxheCBhIGJpdCBhZnRlciB0aGF0P1xuV09NQU46IFNhdHVyZGF5IG1vcm5pbmcsIEkgd2FzIHVwIGF0IDY6MDAgYS5tLiB0byB0YWtlIG15IG90aGVyIHNvbiBhbmQgaGlzXG5mcmllbmRzIHRvIGhvY2tleSBwcmFjdGljZS4gSXQgd2FzIG15IHdlZWtlbmQgZm9yIGNhcnBvb2wgZHV0eS4gSG9ja2V5XHUyMDE5cyBub3QgcmVhbGx5IG15XG50aGluZywgeW91IGtub3csIGJ1dCB3ZSBoYXZlIHRvIHNob3cgb3VyIHN1cHBvcnQgZm9yIHRoZSBraWRzLlxuTUFOOiBXZWxsLCBhdCBsZWFzdCB0aGUgYXJlbmFcdTIwMTlzIGluZG9vcnMuIE15IHdpZmUgYW5kIEkgdXNlZCB0byBmcmVlemUgdG8gZGVhdGggb24gdGhlXG5zb2NjZXIgZmllbGQgd2F0Y2hpbmcgb3VyIGtpZHNcdTIwMTkgbWF0Y2hlcyBpbiB0aGUgcmFpbiBvciBzbm93LiBIb3cgd2FzIHRoZSByZXN0IG9mIHlvdXJcbndlZWtlbmQ\/XG5XT01BTjogV2Ugc3BlbnQgd2hhdCB3YXMgbGVmdCBvZiBTYXR1cmRheSBnZXR0aW5nIHJlYWR5IGZvciBteSBkYXVnaHRlclx1MjAxOXNcbmJpcnRoZGF5IHBhcnR5XHUyMDE0YmFraW5nIHRoZSBjYWtlLCBwcmVwYXJpbmcgdGhlIGdhbWVzLCBzdHVmZmluZyB0aGUgcGluYXRhLCBmaWxsaW5nIHVwIGxvb3RcbmJhZ3MsIGJsb3dpbmcgdXAgYSB6aWxsaW9uIGJhbGxvb25zLCBkZWNvcmF0aW5nIHRoZSBsaXZpbmcgcm9vbS4uLiBTbyBTdW5kYXkgd2FzIHV0dGVyXG5jaGFvcy4gSXQgdG9vayAzIGhvdXJzIHRvIGhhdmUgdGhlIHBhcnR5Li4uIGFuZCA2IGhvdXJzIHRvIGNsZWFuIHVwIHRoZSBtZXNzIVxuTUFOOiBXaGVuIG15IGtpZHMgd2VyZSBsaXR0bGUsIEkgYWx3YXlzIGZlbHQgbHVja3kgdGhleSB3ZXJlIGJvcm4gaW4gc3VtbWVyLiBUaGVpclxuYmlydGhkYXkgcGFydGllcyB3ZXJlIGFsd2F5cyBvdXRkb29yc1x1MjAxNHRoZSBwYXJrLCB0aGUgY2Fybml2YWwsIHRoZSBiZWFjaCwgdGhlIGdvLWNhcnRcbnRyYWNrLCB0aGUgY2FtcGdyb3VuZC4uLiBUaGF0IHdheSwgdGhlIGtpZHMgbmV2ZXIgd3JlY2tlZCBteSBob3VzZS5cbldPTUFOOiBMdWNreSB5b3UhIE15IGtpZHNcdTIwMTkgYmlydGhkYXlzIGFyZSBpbiBKYW51YXJ5IGFuZCBGZWJydWFyeS4gTWF5YmUgbmV4dFxueWVhciBpbnN0ZWFkIG9mIGxldHRpbmcgdGhlbSB3cmVjayBteSBob3VzZSwgSSBzaG91bGQgc2VuZCB0aGVtIG91dHNpZGUgdG8gcGxheSBpbiB0aGVcbnNub3cuXG5NQU46IE9yIHRoZSBpY2UgYXJlbmEuLi4gTWF5YmUgeW91IHNob3VsZCBsZWFybiB0byBwbGF5IGhvY2tleSB3aXRoIHRoZW0uIEFueXdheSxcbmhlcmUgeW91IGFyZSBiYWNrIGF0IHRoZSBzd2VhdCBzaG9wIHRvIGRvIHNvbWUgXHUyMDFjcmVhbFx1MjAxZCB3b3JrLCBlaD9cbldPTUFOOiAgICAgICAgVHJ1c3QgbWUsIGNvbWluZyBoZXJlIGZlZWxzIGxpa2UgcGxheSBjb21wYXJlZCB0byB3aGF0IEkgZG8gYXQgaG9tZS4iLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJDb252ZXJzYXRpb24iLCJtZWRpYVR5cGUiOiJhdWRpbyIsImR1cmF0aW9uIjoxMjAsInRpbWVNaW51dGVzIjozLCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBmb2xsb3dpbmcgY29udmVyc2F0aW9uLiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4gSXQgaXMgYWJvdXQgMiBtaW51dGVzIGxvbmcuIiwicXVlc3Rpb25zIjpbeyJuIjoxLCJzdGVtIjoiSG93IGFyZSB0aGUgc3BlYWtlcnMgcmVsYXRlZD8iLCJvcHRpb25zIjpbIlRoZXkgYXJlIG1hcnJpZWQuIiwiVGhleSB3b3JrIGF0IHRoZSBzYW1lIGxvY2F0aW9uLiIsIlRoZXkgYXJlIG5laWdoYm91cnMuIiwiVGhleSBhcmUgc2libGluZ3MuIl0sImtleSI6MSwicmVjb24iOnRydWV9LHsibiI6Miwic3RlbSI6IkhvdyB3YXMgdGhlIHdvbWFuJ3Mgd2Vla2VuZD8iLCJvcHRpb25zIjpbInJlbGF4aW5nIiwiYm9yaW5nIiwidGlyaW5nIiwiZGlzYXBwb2ludGluZyJdLCJrZXkiOjIsInJlY29uIjp0cnVlfSx7Im4iOjMsInN0ZW0iOiJXaGF0IGRvIHRoZSB3b21hbiBhbmQgdGhlIG1hbiBhZ3JlZSBvbj8iLCJvcHRpb25zIjpbIk91dGRvb3IgYWN0aXZpdGllcyBoYXZlIGFkdmFudGFnZXMuIiwiV2ludGVyIGJpcnRoZGF5cyBhcmUgYmVzdC4iLCJIb2NrZXkgaXMgYW4gZXhjaXRpbmcgc3BvcnQuIiwiQ2xlYW5pbmcgdXAgaXMgZWFzeS4iXSwia2V5IjowLCJyZWNvbiI6dHJ1ZX0seyJuIjo0LCJzdGVtIjoiV2hhdCBkb2VzIHRoZSB3b21hbiBzYXkgYWJvdXQgaGVyIGpvYj8iLCJvcHRpb25zIjpbIkhlciBqb2IgaXMgdmVyeSBzdHJlc3NmdWwuIiwiU2hlIHdvdWxkIGxpa2UgYSBuZXcgam9iLiIsIlNoZSB3YW50cyBhIHByb21vdGlvbi4iLCJXb3JrIGlzIGVhc2llciB0aGFuIGZhbWlseSBsaWZlLiJdLCJrZXkiOjMsInJlY29uIjp0cnVlfSx7Im4iOjUsInN0ZW0iOiJPdmVyYWxsLCB3aGF0IGlzIHRoZSB3b21hbiBleHByZXNzaW5nPyIsIm9wdGlvbnMiOlsiZ3JhdGl0dWRlIiwiY29tcGxhaW50cyIsImV4Y2l0ZW1lbnQiLCJpbmRpZmZlcmVuY2UiXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX1dfV19LHsibmFtZSI6IlBhcnQgMzogTGlzdGVuaW5nIGZvciBJbmZvcm1hdGlvbiIsImhlYWRlclRpdGxlIjoiU2V0IDIgXHUyMDEzIFByYWN0aWNlIFRlc3QgMiBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgMzogTGlzdGVuaW5nIGZvciBJbmZvcm1hdGlvbiIsImludHJvVGl0bGUiOiJMaXN0ZW5pbmcgZm9yIEluZm9ybWF0aW9uIiwiaW50cm9CdWxsZXRzIjpbIllvdSB3aWxsIGhlYXIgYSBjb252ZXJzYXRpb24gYWJvdXQgYSBtYXNzYWdlIHNlcnZpY2UgZm9yIG9mZmljZSB3b3JrZXJzLiBJdCBwbGF5cyBvbmx5IG9uY2UuIiwiQWZ0ZXIgdGhlIGNvbnZlcnNhdGlvbiwgcXVlc3Rpb25zIHdpbGwgYXBwZWFyLiBDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGFuc3dlciBlYWNoIHF1ZXN0aW9uLiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGFuc3dlciBlYWNoIHF1ZXN0aW9uIGZyb20gdGhlIGRyb3AtZG93biBtZW51ICggXHUyNWJlICkuIiwidHJhbnNjcmlwdCI6IllvdSB3aWxsIGhlYXIgYSBjb252ZXJzYXRpb24gYWJvdXQgYSBtYXNzYWdlIHNlcnZpY2UgZm9yIG9mZmljZSB3b3JrZXJzLlxuXG5XT01BTjogICAgICAgSGkgdGhlcmUhIFdlbGNvbWUgdG8gV2VsbG5lc3MgTWFzc2FnZSBhbmQgU3BhLiBIb3cgYXJlIHlvdSB0b2RheT9cbk1BTjogVmVyeSB3ZWxsLCB0aGFuayB5b3UuIElcdTIwMTltIG9yZ2FuaXppbmcgYSBjb3Jwb3JhdGUgZXZlbnQgZm9yIG15IGNvbXBhbnkgYW5kIG15XG5ib3NzIGhhcyByZXF1ZXN0ZWQgc29tZXRoaW5nIGEgbGl0dGxlIGRpZmZlcmVudCB0aGlzIHRpbWUuIEEgY28td29ya2VyIHNhaWQgc2hlIGdldHNcbm1hc3NhZ2VzIGhlcmUsIGFuZCBzaGUgcmVjYWxsZWQgdGhhdCB5b3Ugb2ZmZXIgb24tc2l0ZSB3b3JrcGxhY2UgbWFzc2FnZSB0aGVyYXB5LiBJcyB0aGF0XG5yaWdodD9cbldPTUFOOiBBYnNvbHV0ZWx5ISBZb3VcdTIwMTl2ZSBjb21lIHRvIHRoZSByaWdodCBwbGFjZS4gV2Ugc3BlY2lhbGl6ZSBpbiBwcm92aWRpbmdcbm1vYmlsZSBlZmZlY3RpdmUgc3RyZXNzIHJlbGllZiBhbmQgdGhlcmFwZXV0aWMgY2hhaXIgbWFzc2FnZXMuIFN0dWRpZXMgb2Ygb25nb2luZyBvZmZpY2Vcbm1hc3NhZ2UgcHJvZ3JhbXMgaGF2ZSBzaG93biB0aGF0IHJlZ3VsYXIgbWFzc2FnZSBzZXNzaW9ucyByZXN1bHQgaW4gYmV0dGVyIHBlcmZvcm1hbmNlXG5hbmQgZGVjcmVhc2VkIGpvYiBzdHJlc3MgYW5kIGFueGlldHkuXG5NQU46IFNvdW5kcyBsaWtlIHdoYXQgZXZlcnkgd29ya3BsYWNlIG5lZWRzISBJXHUyMDE5dmUgYWx3YXlzIHRob3VnaHQgdGhhdCBtYXNzYWdlIHdvdWxkXG5iZSBhIGdvb2QgY29tcG9uZW50IG9mIGEgY29tcGFueVx1MjAxOXMgc3VjY2VzcyBzdHJhdGVneS4gSXRcdTIwMTlzIGdvb2QgdG8ga2VlcCB3b3JrZXJzIGhhcHB5LlxuSXMgaXQgbGlrZSBhIG5vcm1hbCBzcGEgbWFzc2FnZT9cbldPTUFOOiBObywgaXRcdTIwMTlzIHF1aXRlIGRpZmZlcmVudC4gT3VyIHByYWN0aXRpb25lcnMgY29tZSB0byB5b3VyIHdvcmtwbGFjZSB3aXRoXG5wb3J0YWJsZSBlcmdvbm9taWMgbWFzc2FnZSBjaGFpcnMuIFlvdSBzdGF5IGZ1bGx5IGRyZXNzZWQsIGJ1dCBvZiBjb3Vyc2UgeW91IGNhbiByZW1vdmVcbnlvdXIgc3VpdCBqYWNrZXQgYW5kIHRpZSB0byBiZSBtb3JlIGNvbWZvcnRhYmxlLiBXZSBuZXZlciB1c2Ugb2lscy4gV2UgZG8sIGhvd2V2ZXIsXG5icmluZyBtdXNpYyB0byBzZXQgYSBzb290aGluZyBhdG1vc3BoZXJlIGZvciByZWxpZXZpbmcgdGVuc2lvbi5cbk1BTjogV2hhdFx1MjAxOXMgYW4gZXJnb25vbWljIGNoYWlyP1xuV09NQU46IEl0XHUyMDE5cyBkZXNpZ25lZCBzbyB0aGF0IHRoZSBjbGllbnRcdTIwMTlzIGNoZXN0IGFuZCBoZWFkIHJlc3Qgb24gc3VwcG9ydCBjdXNoaW9ucyxcbndoaWNoIHJlZHVjZXMgcHJlc3N1cmUgb24gdGhlIGhpcHMgYW5kIHNwaW5hbCBjb2x1bW4uIE9uZSBvZiB0aGUgYmlnZ2VzdCBjb21wbGFpbnRzIG9mXG5vZmZpY2Ugd29ya2VycyBpcyB0ZW5zaW9uIGluIHRoZSBuZWNrIGFuZCBzaG91bGRlcnMuIE91ciBwcmFjdGl0aW9uZXJzIHdvcmsgb24gdGhlc2UgYXJlYXNcbnRvIHJlbGlldmUgc3RyZXNzIHN5bXB0b21zLlxuTUFOOiBHcmVhdC4gTm93LCBJIHNob3VsZCBpbnF1aXJlLCBpcyBvZmZpY2UgY2hhaXIgbWFzc2FnZSBjb3ZlcmVkIGJ5IGFuIGV4dGVuZGVkXG5oZWFsdGggY2FyZSBwbGFuLCBhbmQgYXJlIHlvdXIgcHJhY3RpdGlvbmVycyBmdWxseSBpbnN1cmVkP1xuXGZXT01BTjogWWVzLCBvdXIgcHJhY3RpdGlvbmVycyBhcmUgZnVsbHkgY2VydGlmaWVkIGFuZCBpbnN1cmVkLiBIb3dldmVyLCB1bmxlc3MgeW91clxuaGVhbHRoIGNhcmUgcGxhbiBpbmNsdWRlcyBpbmRpdmlkdWFsIGRpc2NyZXRpb25hcnkgZnVuZHMsIHdoaWNoIHVzdWFsbHkgY292ZXIgdGhpbmdzIHN1Y2hcbmFzIGZpdG5lc3MgbWVtYmVyc2hpcHMsIGl0IHdvblx1MjAxOXQgYmUgY292ZXJlZCBieSB5b3VyIHBsYW4uIFdlIGFyZSBjZXJ0aWZpZWQgbWFzc2FnZVxucHJhY3RpdGlvbmVycywgYnV0IG5vdCBtYXNzYWdlIHRoZXJhcGlzdHMuIFdlIGZvY3VzIG9uIHJlbGF4YXRpb24gYW5kIHN0cmVzcyByZWR1Y3Rpb24sXG5yYXRoZXIgdGhhbiB0cmVhdG1lbnQgb2Ygc3BlY2lmaWMgaW5qdXJpZXMuXG5NQU46IEkgc2VlLiBXZWxsLCB0aGF0XHUyMDE5cyBub3QgYSBwcm9ibGVtLiBJXHUyMDE5ZCBsaWtlIHRvIGJvb2sgeW91ciBjb21wYW55LiBBbnl0aGluZyBlbHNlIElcbm5lZWQgdG8ga25vdz9cbldPTUFOOiBXb25kZXJmdWwhIEZlZXMgYW5kIHByaWNlcyBhcmUgbGlzdGVkIGluIG91ciBib29rbGV0IHJpZ2h0IGhlcmUuIFRoZXJlXHUyMDE5c1xucXVpdGUgYSByYW5nZSBvZiBvcHRpb25zLCBkZXBlbmRpbmcgb24gaG93IG1hbnkgcHJhY3RpdGlvbmVycyB5b3Ugd291bGQgbGlrZSB0byBoaXJlLiBMZXRcbm1lIHNob3cgeW91LiIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IkNvbnZlcnNhdGlvbiIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwiZHVyYXRpb24iOjE1MiwidGltZU1pbnV0ZXMiOjMsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiBJdCBpcyBhYm91dCAyIG1pbnV0ZXMgbG9uZy4iLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJXaGF0IGRvZXMgdGhlIG1hbiB3YW50IGZyb20gdGhlIHdvbWFuPyIsIm9wdGlvbnMiOlsiZGV0YWlscyBhYm91dCB3b3JrcGxhY2UgbWFzc2FnZXMiLCJhIHBlcnNvbmFsIHNwYSBhcHBvaW50bWVudCIsImEgam9iIGFzIGEgdGhlcmFwaXN0IiwiZGlyZWN0aW9ucyB0byBhbm90aGVyIHNwYSJdLCJrZXkiOjAsInJlY29uIjp0cnVlfSx7Im4iOjIsInN0ZW0iOiJIb3cgZGlkIHRoZSBtYW4gbWVldCB0aGUgd29tYW4\/Iiwib3B0aW9ucyI6WyJBIGNvLXdvcmtlciBpbnRyb2R1Y2VkIHRoZW0uIiwiSGUgcGhvbmVkIGhlciBhdCB0aGUgc3BhLiIsIkhlIHdlbnQgdG8gaGVyIGJ1c2luZXNzLiIsIlRoZXkgbWV0IGF0IGhpcyBjb21wYW55LiJdLCJrZXkiOjIsInJlY29uIjp0cnVlfSx7Im4iOjMsInN0ZW0iOiJIb3cgd2lsbCB0aGUgbWFuJ3MgY29tcGFueSB1c2UgdGhlIG1hc3NhZ2Ugc2VydmljZXM\/Iiwib3B0aW9ucyI6WyJhcyBhIGRhaWx5IGVtcGxveWVlIHBlcmsiLCJmb3IgYSBzcGVjaWFsIG9mZmljZSBldmVudCIsInRvIHRyZWF0IGluanVyZWQgd29ya2VycyIsInRvIHRyYWluIG5ldyBzdGFmZiJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjQsInN0ZW0iOiJXaGF0IHdpbGwgd29ya2VycyBuZWVkIHRvIGRvIGZvciB0aGUgbWFzc2FnZT8iLCJvcHRpb25zIjpbInJlbWFpbiBkcmVzc2VkIGFuZCBzaXQgaW4gYSBzcGVjaWFsIGNoYWlyIiwidW5kcmVzcyBhbmQgbGllIG9uIGEgdGFibGUiLCJib29rIGluZGl2aWR1YWwgYXBwb2ludG1lbnRzIiwiYnJpbmcgdGhlaXIgb3duIGVxdWlwbWVudCJdLCJrZXkiOjAsInJlY29uIjp0cnVlfSx7Im4iOjUsInN0ZW0iOiJXaHkgZG9lcyB0aGUgbWFuIGFzayBhYm91dCBoZWFsdGggcGxhbiBjb3ZlcmFnZT8iLCJvcHRpb25zIjpbIkhlIHBlcnNvbmFsbHkgbmVlZHMgdHJlYXRtZW50LiIsIlRoZSBzZXJ2aWNlIHJlcXVpcmVzIGluc3VyYW5jZS4iLCJIZSB3YW50cyBhIHBlcnNvbmFsIGRpc2NvdW50LiIsIlRoZSBjb21wYW55IHN0YWZmIGxpa2VseSBoYXZlIGhlYWx0aCBwbGFucy4iXSwia2V5IjozLCJyZWNvbiI6dHJ1ZX0seyJuIjo2LCJzdGVtIjoiV2hhdCBkb2VzIHRoZSBtYW4gZXhwZWN0IHRvIHJlc3VsdCBmcm9tIG1hc3NhZ2Ugc2VydmljZXM\/Iiwib3B0aW9ucyI6WyJsb3dlciBidXNpbmVzcyBjb3N0cyIsImZld2VyIHNpY2sgZGF5cyIsImhhcHB5IHdvcmtlcnMiLCJtb3JlIGN1c3RvbWVycyJdLCJrZXkiOjIsInJlY29uIjp0cnVlfV19XX0seyJuYW1lIjoiUGFydCA0OiBMaXN0ZW5pbmcgdG8gYSBOZXdzIEl0ZW0iLCJoZWFkZXJUaXRsZSI6IlNldCAyIFx1MjAxMyBQcmFjdGljZSBUZXN0IDIgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDQ6IExpc3RlbmluZyB0byBhIE5ld3MgSXRlbSIsImludHJvVGl0bGUiOiJMaXN0ZW5pbmcgdG8gYSBOZXdzIEl0ZW0iLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciBhIG5ld3MgaXRlbSBhYm91dCBhIGxvc3QgcmluZy4gSXQgcGxheXMgb25seSBvbmNlLiIsIkFmdGVyIHRoZSBuZXdzIGl0ZW0sIGNvbXBsZXRlIGVhY2ggc3RhdGVtZW50IHVzaW5nIHRoZSBkcm9wLWRvd24gbWVudS4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBjb21wbGV0ZSBlYWNoIHN0YXRlbWVudCBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoIFx1MjViZSApLiIsInRyYW5zY3JpcHQiOiJZb3Ugd2lsbCBoZWFyIGEgbmV3cyBpdGVtIGFib3V0IGEgbG9zdCByaW5nLlxuXG5TYXJhaCBIdW50ZXIgaXMgc21pbGluZyBhZ2Fpbiwgbm93IHRoYXQgaGVyIGVuZ2FnZW1lbnQgcmluZyBpcyBiYWNrIG9uIGhlciBmaW5nZXIgd2hlcmVcbml0IGJlbG9uZ3MuIExhc3QgU2F0dXJkYXksIFNhcmFoIHdhcyBhdHRlbmRpbmcgYW4gYXJ0IGNsYXNzIHdoZW4gc2hlIGRlY2lkZWQgdG8gcmVtb3ZlXG5oZXIgZW5nYWdlbWVudCByaW5nIGFuZCBwdXQgaXQgaW4gaGVyIGphY2tldCBwb2NrZXQuIEFmdGVyIGhlciBjbGFzcywgc2hlIHRvb2sgYSBib3ggb2Ygb2xkXG5jbG90aGluZywgaW5jbHVkaW5nIHRoZSBqYWNrZXQsIHRvIGJlIHNvbGQgaW4gdGhlIGxvY2FsIHNlY29uZC1oYW5kIHN0b3JlLiBMYXRlciB0aGF0IGRheSxcblNhcmFoIHN1ZGRlbmx5IHJlYWxpemVkIGhlciBtaXN0YWtlLiBTaGUgaW1tZWRpYXRlbHkgY2FsbGVkIHRoZSB0aHJpZnQgc3RvcmUgb25seSB0b1xuZGlzY292ZXIgdGhhdCBoZXIgamFja2V0IGhhZCBqdXN0IGJlZW4gc29sZC4gXHUyMDFjSSBob25lc3RseSBuZXZlciBleHBlY3RlZCB0byBzZWUgbXlcbmVuZ2FnZW1lbnQgcmluZyBhZ2FpbixcdTIwMWQgc2FpZCBTYXJhaC4gU3VycHJpc2luZ2x5LCB0aGUgeW91bmcgZ2lybCB3aG8gcHVyY2hhc2VkIHRoZVxuamFja2V0IHNvb24gZGlzY292ZXJlZCB0aGUgcmluZyBhbmQgcHJvbXB0bHkgYnJvdWdodCBpdCBiYWNrIHRvIHRoZSB0aHJpZnQgc3RvcmUuIFNhcmFoIHdhc1xuYXN0b25pc2hlZCBhbmQgdGhyaWxsZWQgYXQgdGhlIHJldHVybiBvZiB0aGUgcmluZywgd2hpY2ggaXMgdmFsdWVkIGF0IGZpdmUgdGhvdXNhbmQgZG9sbGFycy5cblxmU2FyYWggaW1tZWRpYXRlbHkgY29udGFjdGVkIHRoZSB5b3VuZyBnaXJsLCBhIG11c2ljIHN0dWRlbnQgYXQgRmFpcm1vbnQgQ29sbGVnZSwgYW5kXG50aGFua2VkIGhlciBmb3IgYmVpbmcgc28gaG9uZXN0LiBUaGUgeW91bmcgZ2lybCBxdWlldGx5IGV4cGxhaW5lZCwgXHUyMDFjSSBrbmV3IHRoYXQgSVx1MjAxOWQgZmVlbFxuZGV2YXN0YXRlZCBpZiBzb21ldGhpbmcgbGlrZSB0aGlzIGhhZCBoYXBwZW5lZCB0byBtZSwgc28gSSBoYWQgdG8gcmV0dXJuIGl0Llx1MjAxZCBGb3J0dW5hdGVseVxuZm9yIHRoZSB5b3VuZyBnaXJsLCBTYXJhaFx1MjAxOXMgZmlhbmPpIHBlcmZvcm1zIGluIGEgcG9wdWxhciByb2NrIGdyb3VwIGFuZCBoYXMgZ2l2ZW4gaGVyXG5mcm9udCByb3cgdGlja2V0cyB0byBoaXMgc29sZCBvdXQgY29uY2VydCBzY2hlZHVsZWQgZm9yIG5leHQgbW9udGguIiwic2VjdGlvbnMiOlt7ImxhYmVsIjoiTmV3cyBJdGVtIiwibWVkaWFUeXBlIjoiYXVkaW8iLCJkdXJhdGlvbiI6MTIwLCJ0aW1lTWludXRlcyI6MywibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZm9sbG93aW5nIG5ld3MgaXRlbS4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwicXVlc3Rpb25zIjpbeyJuIjoxLCJzdGVtIjoiU2FyYWggcGxhY2VkIGhlciByaW5nIiwib3B0aW9ucyI6WyJvbiB0aGUgc3RvcmUgY291bnRlci4iLCJpbiBoZXIgY2xvdGhpbmcuIiwiaW4gaGVyIGFydCBraXQuIiwiaW4gaGVyIGZyaWVuZCdzIGNvbGxlZ2UgYmFnLiJdLCJrZXkiOjEsInJlY29uIjpmYWxzZX0seyJuIjoyLCJzdGVtIjoiU2FyYWggbG9zdCBoZXIgcmluZyB3aGVuIHNoZSB3YXMiLCJvcHRpb25zIjpbImdldHRpbmcgZHJlc3NlZC4iLCJ0YWtpbmcgY2xvdGhlcyB0byBhIHN0b3JlLiIsIm1vdmluZyBzb21lIGJveGVzLiIsInRha2luZyBhbiBhcnQgY2xhc3MuIl0sImtleSI6MSwicmVjb24iOmZhbHNlfSx7Im4iOjMsInN0ZW0iOiJXaGVuIFNhcmFoIHJlYWxpemVkIGhlciBtaXN0YWtlLCBzaGUiLCJvcHRpb25zIjpbIndhcyBob3BlZnVsIHRoZSByaW5nIHdvdWxkIGJlIGZvdW5kLiIsInRob3VnaHQgdGhlIHN0b3JlIGNsZXJrIHN0b2xlIGl0LiIsIndhcyBwZXNzaW1pc3RpYyBhYm91dCBnZXR0aW5nIGl0IGJhY2suIiwidGhvdWdodCBoZXIgZnJpZW5kIGhhZCBrZXB0IGl0LiJdLCJrZXkiOjIsInJlY29uIjpmYWxzZX0seyJuIjo0LCJzdGVtIjoiU2FyYWggZ290IGhlciByaW5nIGJhY2sgYmVjYXVzZSIsIm9wdGlvbnMiOlsidGhlIHN0b3JlIGNsZXJrIGZvdW5kIGl0IGFuZCByZXR1cm5lZCBpdC4iLCJhIGdpcmwgZm91bmQgaXQgYW5kIHJldHVybmVkIGl0IHRvIHRoZSBzdG9yZS4iLCJhIGdpcmwgZm91bmQgaXQgaW4gaGVyIGNvbGxlZ2UgYmFnLiIsInNoZSBvZmZlcmVkIGEgZml2ZSB0aG91c2FuZCBkb2xsYXIgcmV3YXJkLiJdLCJrZXkiOjEsInJlY29uIjpmYWxzZX0seyJuIjo1LCJzdGVtIjoiU2FyYWggYXJyYW5nZWQgZm9yIiwib3B0aW9ucyI6WyJoZXIgcmluZyB0byBiZSBrZXB0IGluIGEgc2FmZXIgcGxhY2UuIiwidGhlIGdpcmwgdG8gdGFrZSBhcnQgY2xhc3Nlcy4iLCJ0aGUgcmluZyB0byBiZSB0YWtlbiBvdXQgb2YgdGhlIGJveC4iLCJ0aGUgZ2lybCB0byBnbyB0byBhIHBvcHVsYXIgcm9jayBjb25jZXJ0LiJdLCJrZXkiOjMsInJlY29uIjpmYWxzZX1dfV19LHsibmFtZSI6IlBhcnQgNTogTGlzdGVuaW5nIHRvIGEgRGlzY3Vzc2lvbiIsImhlYWRlclRpdGxlIjoiU2V0IDIgXHUyMDEzIFByYWN0aWNlIFRlc3QgMiBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgNTogTGlzdGVuaW5nIHRvIGEgRGlzY3Vzc2lvbiIsImludHJvVGl0bGUiOiJMaXN0ZW5pbmcgdG8gYSBEaXNjdXNzaW9uIiwiaW50cm9CdWxsZXRzIjpbIllvdSB3aWxsIHdhdGNoIGEgZGlzY3Vzc2lvbiBiZXR3ZWVuIHRocmVlIHBlb3BsZSB3aG8gYmVsb25nIHRvIGEgc2luZ2xlcycgc29jaWFsIGNsdWIuIFRoZXkgYXJlIHBsYW5uaW5nIGEgZ3JvdXAgdHJpcCB0byBNb250cmVhbC4gSXQgcGxheXMgb25seSBvbmNlLiIsIkFmdGVyIHRoZSBkaXNjdXNzaW9uLCBxdWVzdGlvbnMgd2lsbCBhcHBlYXIuIENob29zZSB0aGUgYmVzdCBhbnN3ZXIgdG8gZWFjaCBxdWVzdGlvbi4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbiBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoIFx1MjViZSApLiIsInRyYW5zY3JpcHQiOiJZb3Ugd2lsbCB3YXRjaCBhIGRpc2N1c3Npb24gYmV0d2VlbiB0aHJlZSBwZW9wbGUgd2hvIGJlbG9uZyB0byBhIHNpbmdsZXNcdTIwMTkgc29jaWFsIGNsdWIuXG5UaGV5IGFyZSBwbGFubmluZyBhIGdyb3VwIHRyaXAgdG8gTW9udHJlYWwuXG5cbldPTUFOOiBTbywgYXMgb2YgdG9kYXkgd2UgaGF2ZSBzaXggbWVtYmVycyBzaWduZWQgdXAgZm9yIG91ciBNb250cmVhbCB0cmlwLiBJXHUyMDE5bVxuc3RpbGwgd2FpdGluZyB0byBoZWFyIGJhY2sgZnJvbSBmb3VyIG90aGVycy4gRXZlcnlvbmUgd2FudHMgdG8ga2VlcCByb3VuZC10cmlwIHRyYXZlbCBjb3N0c1xudG8gJDEwMCBhIHBlcnNvbi5cbk1BTiAxOiAgICAgICAgIFRoZSBjaGVhcGVzdCB3ZWVrZW5kIHRyYWluIGZhcmUgeW91IGNhbiBnZXQgdGhpcyB0aW1lIG9mIHllYXIgaXMgJDMwMCBhXG5wZXJzb24sIHJvdW5kIHRyaXAuIEFuZCB0aGF0XHUyMDE5cyB0aGUgc2VuaW9yc1x1MjAxOSByYXRlIGZvciBhZ2VzIDU1IGFuZCB1cCEgT25seSBzb21lIG9mIHVzIGZhbGxcbmludG8gdGhhdCBhZ2UgZ3JvdXAuXG5NQU4gMjogICAgICAgIFdlbGwsICQzMDAgaXMgYSBsb3QgbW9yZSB0aGFuIEkgaW50ZW5kZWQgdG8gcGF5LiBJcyB0aGF0IGEgZ3JvdXAgcmF0ZT9cbk1BTiAxOiAgICAgICBObywgdGhhdFx1MjAxOXMgdGhlIGluZGl2aWR1YWwgcmF0ZSBmb3IgdXAgdG8gc2l4IHNlbmlvcnMgLiAuIC4gV2Ugb25seSBoYXZlIHNpeFxucGVvcGxlIHNpZ25lZCB1cCBzbyBmYXIuIElmIHRlbiBvciBtb3JlIHBlb3BsZSBzaWduIHVwLCB3ZSBxdWFsaWZ5IGZvciB0aGUgZ3JvdXAgcmF0ZS5cbldPTUFOOiBOb3csIHRoZSBwcm9ibGVtIHdpdGggdGhlIHRyYWluIGlzIHRoYXQgaXQgbGVhdmVzIGZyb20gQ2VudHJhbCBTdGF0aW9uLiBBbmRcbndpdGggYWxsIHRoZSBkb3dudG93biB0cmFmZmljIGNvbmdlc3Rpb24sIGl0IGNhbiBiZSBoYXJkIGZvciBwZW9wbGUgdG8gZ2V0IHRvLCBlc3BlY2lhbGx5IGlmXG50aGV5XHUyMDE5cmUgbm90IG9uZSBvZiB0aGUgZmV3IHVyYmFuIGR3ZWxsZXJzIGFtb25nIHVzIC4gLiAuIG9yIHVubGVzcyB0aGV5IGxpdmUgbmVhciBwdWJsaWNcbnRyYW5zaXQuIElzIGl0IHBvc3NpYmxlIHRoYXQgd2UgY2FuIGNhdGNoIHRoZSB0cmFpbiBzb21ld2hlcmUgbmVhciBvdXIgaG9tZXM\/XG5NQU4gMTogICAgICAgIElcdTIwMTlsbCBoYXZlIHRvIGdldCBiYWNrIHRvIHlvdSBvbiB0aGF0LiBJIGRvIGtub3cgdGhhdCBpbiBvcmRlciB0byBxdWFsaWZ5IGZvclxudGhlIGdyb3VwIGRpc2NvdW50LCB3ZVx1MjAxOWQgYWxsIGhhdmUgdG8gYm9hcmQgYW5kIGRpc2VtYmFyayBhdCB0aGUgc2FtZSBzdGF0aW9uIVxuV09NQU46IEhtbS4gVGhhdFx1MjAxOXMgbm90IHNvIGdyZWF0LiBXb3VsZCB3ZSBiZSBhYmxlIHRvIHJlbnQgYSB2YW4\/IFRoYXQgd2F5LCB3ZVxuY2FuIHBpY2sgdXAgYW5kIGRyb3Agb2ZmIHBlb3BsZSByaWdodCBhdCB0aGVpciBkb29yc3RlcHMuXG5NQU4gMjogICAgICAgIFdlbGwsIGZvciBzZXZlbiB0byBmaWZ0ZWVuIHBlb3BsZSwgd2UgY291bGQgcmVudCBhIHBhc3NlbmdlciB2YW4uIFlvdVxud291bGRuXHUyMDE5dCBoYXZlIHRvIHBheSBtZSB0byBkcml2ZSBpdC4gQnV0IEkgd291bGQgaGF2ZSB0byBnZXQgYmFjayB0byB5b3Ugd2l0aCBhIHF1b3RlXG5hYm91dCB0aGUgcmVudGFsIGNvc3QuIEJ1dCBpZiB3ZSBoYWQsIHNheSwgc2l4dGVlbiB0byB0d2VudHktZm91ciBwZW9wbGUsIHdlIGNvdWxkIGNoYXJ0ZXIgYVxuc21hbGwgdG91ciBidXMgYW5kIGhpcmUgYSBkcml2ZXIuXG5cZk1BTiAxOiAgICAgICAgQnV0IHdvdWxkblx1MjAxOXQgYSBidXMgdGFrZSBsb25nZXIgdGhhbiB0aGUgdHJhaW4\/IFdlXHUyMDE5dmUgb25seSBnb3QgYSB0aHJlZS1kYXlcbndlZWtlbmQhXG5NQU4gMjogICAgICAgIFdlbGwsIGEgbm9uc3RvcCB0cmFpbiBnZXRzIHlvdSB0aGVyZSBpbiBmaXZlIGhvdXJzOyB3ZSBrbm93IHRoaXMgZm9yIHN1cmUuXG5UaGUgYnVzIHdvdWxkIG9ubHkgdGFrZSBsb25nZXIgaWYgd2UgZGVjaWRlZCB0byB0YWtlIGJyZWFrcyBhbG9uZyB0aGUgd2F5LiBCdXRcbnNpZ2h0c2VlaW5nIGJyZWFrcyBhcmUgYSBib251cy4gV2UgYWxsIGFncmVlZCBvbiB0aGF0LiBJIG1lYW4sIHRoYXRcdTIwMTlzIG9uZSByZWFzb24gd2UgY2hvc2Vcbm5vdCB0byBnbyBieSBhaXIgaW4gdGhlIGZpcnN0IHBsYWNlLlxuTUFOIDE6ICAgICAgICBPbmUgb2YgdGhlIGRvd25zaWRlIG9mIGNoYXJ0ZXJpbmcgYSBidXMgaXMgaXQgd291bGQgY29zdCB0aG91c2FuZHMgb2ZcbmRvbGxhcnMsIGFuZCB3ZVx1MjAxOWQgaGF2ZSB0byBwYXkgdGhlIGRyaXZlci4gV2VcdTIwMTlkIGhhdmUgdG8gZmlsbCBldmVyeSBzZWF0IHRvIG1ha2UgaXQgY29zdFxuZWZmZWN0aXZlLlxuV09NQU46IE9rYXksIHNvIC4gLiAuIGhpZ2h3YXkgb3IgcmFpbHdheT8gSW4gdGVybXMgb2YgcHJpY2UsIGl0IHNvdW5kcyB0byBtZSBsaWtlIHNpeFxub2Ygb25lLCBoYWxmIGEgZG96ZW4gb2YgdGhlIG90aGVyLiBJdCByZWFsbHkgZGVwZW5kcyBvbiBob3cgbWFueSBwZW9wbGUgd2UgY2FuIGdldC4gT25jZVxud2Uga25vdyB0aGF0LCB3ZSBjYW4gZmlybSB1cCBwcmljaW5nLiIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IkRpc2N1c3Npb24gKHZpZGVvKSIsIm1lZGlhVHlwZSI6InZpZGVvIiwiZHVyYXRpb24iOjE1OCwidGltZU1pbnV0ZXMiOjMsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJXYXRjaCB0aGUgZGlzY3Vzc2lvbi4gWW91IHdpbGwgd2F0Y2ggaXQgb25seSBvbmNlLiBJdCBpcyBhYm91dCAxLjUgdG8gMiBtaW51dGVzIGxvbmcuIiwicXVlc3Rpb25zIjpbeyJuIjoxLCJzdGVtIjoiSW4gd2hhdCBvcmRlciBhcmUgdGhlIHRyYXZlbCBvcHRpb25zIGRpc2N1c3NlZD8iLCJvcHRpb25zIjpbImJ1cywgdHJhaW4sIHZhbiIsImJ1cywgdmFuLCB0cmFpbiIsInRyYWluLCBidXMsIHZhbiIsInRyYWluLCB2YW4sIGJ1cyJdLCJrZXkiOjMsInJlY29uIjpmYWxzZX0seyJuIjoyLCJzdGVtIjoiV2hhdCBpcyB0cnVlIG9mIGdyb3VwIGRpc2NvdW50cyBvbiB0cmFpbiB0aWNrZXRzPyIsIm9wdGlvbnMiOlsiRXZlcnlvbmUgbXVzdCBnZXQgb24gYW5kIG9mZiBhdCB0aGUgc2FtZSBzdG9wLiIsIkdyb3VwIGRpc2NvdW50cyBhcmUgbm90IG9mZmVyZWQgb24gd2Vla2VuZHMuIiwiU2l4IHBhc3NlbmdlcnMgbXVzdCBhbGwgYnV5IHRpY2tldHMgdG9nZXRoZXIuIiwiU2VuaW9ycycgYW5kIGdyb3VwIHJhdGVzIGNhbm5vdCBiZSBjb21iaW5lZC4iXSwia2V5IjowLCJyZWNvbiI6ZmFsc2V9LHsibiI6Mywic3RlbSI6IldoYXQgaXMgdGhlIGFkdmFudGFnZSBvZiByYWlsIHRyYXZlbD8iLCJvcHRpb25zIjpbInRoZSBjb252ZW5pZW50IGRlcGFydHVyZSBzdGF0aW9uIiwidGhlIHR3by13YXkgaW5kaXZpZHVhbCB0aWNrZXQgcHJpY2UiLCJ0aGUgcHJlZGljdGFibHkgc2hvcnQgdHJpcCBkdXJhdGlvbiIsInRoZSBzdGF0aW9uIHdoZXJlIGV2ZXJ5b25lIGdldHMgb2ZmIl0sImtleSI6MiwicmVjb24iOmZhbHNlfSx7Im4iOjQsInN0ZW0iOiJXaGVyZSBkbyBtb3N0IG9mIHRoZSBjbHViIG1lbWJlcnMgcHJvYmFibHkgbGl2ZT8iLCJvcHRpb25zIjpbImluIHRoZSBkb3dudG93biBhcmVhIiwibmVhciBhIHN1YndheSBsaW5lIiwiaW4gc3VidXJiYW4gYXJlYXMiLCJuZWFyIGEgYnVzIHN0YXRpb24iXSwia2V5IjoyLCJyZWNvbiI6ZmFsc2V9LHsibiI6NSwic3RlbSI6IkNhbiBjbHViIG1lbWJlcnMgZ2V0IG9uIHRoZSB0cmFpbiBuZWFyIHRoZWlyIGhvbWVzPyIsIm9wdGlvbnMiOlsiTm8sIHRoZXkgbXVzdCBhbGwgYm9hcmQgYXQgdGhlIGNlbnRyYWwgc3RhdGlvbi4iLCJNYXliZSwgYW5kIG9uZSBvZiB0aGUgbWVuIHdpbGwgZmluZCBvdXQuIiwiUHJvYmFibHksIGJ1dCBvbmx5IGlmIHRoZXkgZ2V0IG9uIHRvZ2V0aGVyLiIsIlllcywgYnV0IGl0IG1lYW5zIG5vIGdyb3VwIGRpc2NvdW50LiJdLCJrZXkiOjEsInJlY29uIjpmYWxzZX0seyJuIjo2LCJzdGVtIjoiV2hhdCBkb2VzIHRoZSBtYW4gaW4gdGhlIG1pZGRsZSB3YW50IHRvIG1heGltaXplPyIsIm9wdGlvbnMiOlsidGhlIGFtb3VudCBvZiBzaWdodHNlZWluZyBvbiB0aGUgd2F5IiwidGhlIGxlbmd0aCBvZiB0aW1lIHNwZW50IGluIE1vbnRyZWFsIiwidGhlIG51bWJlciBvZiBjbHViIG1lbWJlcnMgYWdlZCA1NSsiLCJ0aGUgc2VhdGluZyBjYXBhY2l0eSBvZiB0aGUgY2hhcnRlciBidXMiXSwia2V5IjoxLCJyZWNvbiI6ZmFsc2V9LHsibiI6Nywic3RlbSI6Ik92ZXJhbGwsIHdoYXQgaXMgdGhlIGdyb3VwJ3MgbWFpbiBwcmlvcml0eT8iLCJvcHRpb25zIjpbImFiaWxpdHkgdG8gc3RvcCBhbG9uZyB0aGUgd2F5IiwiY29udmVuaWVudCBkZXBhcnR1cmUgcG9pbnQiLCJwZXIgcGFzc2VuZ2VyIHRyYXZlbCBjb3N0cyIsInRvdGFsIHJvdW5kIHRyaXAgdHJhbnNpdCB0aW1lIl0sImtleSI6MiwicmVjb24iOmZhbHNlfSx7Im4iOjgsInN0ZW0iOiJJZiBuaW5lIG1lbWJlcnMgc2lnbiB1cCwgaG93IHdpbGwgdGhleSBwcm9iYWJseSB0cmF2ZWw\/Iiwib3B0aW9ucyI6WyJjaGFydGVyIHRvdXIgYnVzIiwicGFzc2VuZ2VyIHZhbiIsInJhaWx3YXkgdHJhaW4iLCJzbWFsbCBhaXJjcmFmdCJdLCJrZXkiOjEsInJlY29uIjpmYWxzZX1dfV19LHsibmFtZSI6IlBhcnQgNjogTGlzdGVuaW5nIGZvciBWaWV3cG9pbnRzIiwiaGVhZGVyVGl0bGUiOiJTZXQgMiBcdTIwMTMgUHJhY3RpY2UgVGVzdCAyIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCA2OiBMaXN0ZW5pbmcgZm9yIFZpZXdwb2ludHMiLCJpbnRyb1RpdGxlIjoiTGlzdGVuaW5nIGZvciBWaWV3cG9pbnRzIiwiaW50cm9CdWxsZXRzIjpbIllvdSB3aWxsIGhlYXIgYSByZXBvcnQgYWJvdXQgdXJiYW4gY2hpY2tlbiBieWxhd3MuIEl0IHBsYXlzIG9ubHkgb25jZS4iLCJBZnRlciB0aGUgcmVwb3J0LCBjb21wbGV0ZSBlYWNoIHN0YXRlbWVudCB1c2luZyB0aGUgZHJvcC1kb3duIG1lbnUuIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gY29tcGxldGUgZWFjaCBzdGF0ZW1lbnQgZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCBcdTI1YmUgKS4iLCJ0cmFuc2NyaXB0IjoiWW91IHdpbGwgaGVhciBhIHJlcG9ydCBhYm91dCB1cmJhbiBjaGlja2VuIGJ5bGF3cy5cblxuU2FyYWggQ2hhbmcsIG1hbmFnZXIgb2YgdGhlIFZhbmNvdXZlciBBbmltYWwgU2hlbHRlciwgc2F5cyBpdFx1MjAxOXMgdGltZSBmb3IgdGhlIGZlYXRoZXJzIHRvXG5mbHkgYXQgQ2l0eSBIYWxsIG92ZXIgdGhlIGlzc3VlIG9mIGJhY2t5YXJkIGNoaWNrZW4gZmFybWluZy4gQ2hhbmcgaXMgcGV0aXRpb25pbmcgdGhlIGNpdHlcbnRvIHJldm9rZSBhIHR3by15ZWFyLW9sZCBieWxhdyBhbGxvd2luZyBjaXR5IHJlc2lkZW50cyB0byByYWlzZSBwb3VsdHJ5LiBUaGUgbGF3IHdhc1xuaW5pdGlhbGx5IGJyb3VnaHQgYmVmb3JlIGNpdHkgY291bmNpbCBieSBlY29sb2dpY2FsbHktbWluZGVkIFZhbmNvdXZlcml0ZXMgdWx0aW1hdGVseVxuc2Vla2luZyB0byBoZWxwIHRoZSBlbnZpcm9ubWVudCBieSBwcm9kdWNpbmcgYSBob21lZ3Jvd24gYWx0ZXJuYXRpdmUgdG8gZmFjdG9yeS1mYXJtZWRcbmVnZ3MuIFdoaWxlIG1vc3QgcmVzaWRlbnRzIHN1cHBvcnRlZCB0aGUgaW5pdGlhdGl2ZSwgY3JpdGljcyB3ZXJlIGNvbmNlcm5lZCBhYm91dCB0aGVcbnBvdGVudGlhbCBmb3IgZXhjZXNzaXZlIG5vaXNlLCBwcmVkYXRvcnkgd2lsZGxpZmUsIHBvb3Igc2FuaXRhdGlvbiwgYW5kIGV2ZW4gYmlyZCBmbHUuIEJ1dFxuQ2hhbmdcdTIwMTlzIHByaW1hcnkgY29uY2VybiB3YXMgdGhlIGJpcmRzIHRoZW1zZWx2ZXMuIFNoZSBmZWFyZWQgYmFja3lhcmQgcG91bHRyeSBmYXJtaW5nXG53b3VsZCBjYXVzZSBhbiBpbmZsdXggb2YgYWJhbmRvbmVkIGNoaWNrZW5zIG9uIGFuaW1hbCBzaGVsdGVyIGRvb3JzdGVwc1x1MjAxNGEgcHJlZGljdGlvblxud2hpY2ggc2hlIGNvbmZpcm1zIGhhcyBjb21lIHRvIHBhc3MuXG5cbkJ1dCBCcnVjZSBXZWJzdGVyLCBhbiBhY3RpdmlzdCBhbmQgcG91bHRyeSBleHBlcnQgd2hvIHNwZW50IDUgeWVhcnMgYmF0dGxpbmcgY2l0eSBjb3VuY2lsXG50byBhbGxvdyB1cmJhbiBjaGlja2VucywgaGFzIG5vIGludGVudGlvbiBvZiBzZWVpbmcgdGhlIGJ5bGF3IG92ZXJ0dXJuZWQgYW5kIGhpcyBvd24gcGFpclxub2YgaGVucyBleGlsZWQgZnJvbSB0aGUgY2l0eS4gV2hpbGUgV2Vic3RlciBhZG1pdHMgdGhlIGNpdHkgaGFzIHNlZW4gc29tZSBwcmVkYXRvcnlcbmNveW90ZXMgYW5kIGFiYW5kb25lZCBoZW5zLCBoZSBzdHJlc3NlcyBsYXJnZXIgZm9vZCBpc3N1ZXMuIEVuc3VyaW5nIGFjY2VzcyB0byBmb29kIGlzIGFcbm1ham9yIGNvbmNlcm4gdGhyb3VnaG91dCB0aGUgd29ybGQsIGFuZCBldmVuIENhbmFkYSBpcyBub3QgaW52dWxuZXJhYmxlIHRvIGh1bmdlciBhbmRcbmZvb2Qgc3VwcGx5IHByb2JsZW1zLiBXZWJzdGVyIHBvaW50cyB0byB0aGUgZ3Jvd2luZyBuZWVkIGZvciBmb29kIGJhbmtzIGluIHVyYmFuXG5cZmNlbnRyZXMuIE9uZSBzb2x1dGlvbiwgc2F5cyBXZWJzdGVyLCBpcyBsb2NhbCBmb29kIHByb2R1Y3Rpb24sIGFuZCBiYWNreWFyZCBjaGlja2VuXG5jb29wcyBhcmUgYSBwYXJ0IG9mIGl0LlxuXG5BbHNvIGEgc3VwcG9ydGVyIG9mIGxvY2FsIGZvb2QgcHJvZHVjdGlvbiwgQ2hhbmcgYXJndWVzIHRoYXQgaXQgc2hvdWxkblx1MjAxOXQgY29tZSBhdCB0aGUgY29zdFxub2YgYW5pbWFsIHdlbGZhcmUuIE1hbnkgd2VsbC1pbnRlbnRpb25lZCBjaXR5IGR3ZWxsZXJzIHN0YXJ0IHJhaXNpbmcgY2hpY2tlbnMsIG9ubHkgdG9cbmRpc2NvdmVyIHRoZXlcdTIwMTlyZSBmYXIgbW9yZSB3b3JrIHRoYW4gZXhwZWN0ZWQuIE1vc3QgY2hpY2tlbnMgbGF5IGVnZ3MgZm9yIGp1c3QgdHdvIG9mXG50aGVpciB0ZW4geWVhciBsaWZlc3Bhbiwgd2hpY2gsIGZvciBtYW55IHVyYmFuaXRlcywgYW1vdW50cyB0byB0b28gbXVjaCB3b3JrIGZvciB0b28gbGl0dGxlXG5wYXlvZmYuIFRoZSByZXN1bHQsIHNheXMgQ2hhbmcsIGlzIHRoYXQgaHVuZHJlZHMgb2YgY2hpY2tlbnMgZW5kIHRoZWlyIGxpdmVzIGluIGNyb3dkZWQsXG51bmRlcmZ1bmRlZCBhbmltYWwgc2hlbHRlcnMuIE1hbnkgYXJlIGV1dGhhbml6ZWQuIENoYW5nIGFsc28gcXVlc3Rpb25zIHdoZXRoZXIgdXJiYW5cbmNoaWNrZW4gZmFybWluZyBhY3R1YWxseSBhaWRzIHRob3NlIGluIGdlbnVpbmUgbmVlZCBvZiBhY2Nlc3MgdG8gYWZmb3JkYWJsZSBmb29kLiBBZnRlclxuYWxsLCByYWlzaW5nIGZvd2wgZ2VuZXJhbGx5IHJlcXVpcmVzIGEgYmFja3lhcmQuIFZhbmNvdXZlcml0ZXMgbHVja3kgZW5vdWdoIHRvIGhhdmUgb25lXG50ZW5kIHRvIGJlIHVwcGVyIG1pZGRsZSBjbGFzcyBob21lb3duZXJzIHdobyBjb3VsZCBhZmZvcmQgdG8gYnV5XHUyMDE0YW5kIGRvblx1MjAxOXQgcmVhbGx5XG5uZWVkIHRvIHJhaXNlXHUyMDE0b3JnYW5pYyBmcmVlLXJhbmdlIHBvdWx0cnkgcHJvZHVjdHMuXG5cblNvLCBzaG91bGQgdGhlIHVyYmFuIGNoaWNrZW4gYnlsYXcgYmUgcmV2b2tlZD8gQ2l0eSBjb3VuY2lsbG9yIFJpdGEgSm9uZXMgdGhpbmtzIHRoZVxuYnlsYXcganVzdCBuZWVkcyBtb3JlIHRlZXRoLiBJbiBhZGRpdGlvbiB0byB0aGUgZXhpc3RpbmcgbGltaXQgb2YgNCBoZW5zIGFuZCB0aGUgYmFuIG9uXG5ub2lzeSByb29zdGVycywgSm9uZXMgd2FudHMgcm91dGluZSBnb3Zlcm5tZW50IGluc3BlY3Rpb25zLCBmaW5lcyBmb3IgYWJhbmRvbm1lbnQsIGFuZCBhXG5yZXF1aXJlbWVudCB0aGF0IHdhbm5hYmVzIGZpcnN0IHJlY2VpdmUgdHJhaW5pbmcuIEVkdWNhdGluZyBwcm9zcGVjdGl2ZSBjaGlja2VuIG93bmVyc1xuYWJvdXQgd2hhdFx1MjAxOXMgaW52b2x2ZWQsIHNheXMgSm9uZXMsIHdvdWxkIHdlZWQgb3V0IG5lZ2xpZ2VudCBvbmVzIGJlZm9yZSB0aGVpciBsaXZlc3RvY2tcbm1lZXQgdGhlIHNhbWUgZGVtaXNlIGFzIHRoZSBjaXR5XHUyMDE5cyB1bndhbnRlZCBwZXRzLiIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IlJlcG9ydCIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwiZHVyYXRpb24iOjE5NSwidGltZU1pbnV0ZXMiOjQsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyByZXBvcnQuIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiBJdCBpcyBhYm91dCAzIG1pbnV0ZXMgbG9uZy4iLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJVcmJhbiBjaGlja2VuIHN1cHBvcnRlcnMgaW5pdGlhbGx5IHdhbnRlZCIsIm9wdGlvbnMiOlsidG8gb2ZmZXIgYW4gZWNvLWZyaWVuZGx5IG1lYW5zIG9mIGVnZyBmYXJtaW5nLiIsInRvIHJhaXNlIGF3YXJlbmVzcyBvZiBhbmltYWwgcmlnaHRzIGlzc3Vlcy4iLCJ0byBoZWxwIHRoZSBlYXJ0aCBieSBncm93aW5nIHRoZWlyIG93biBmb29kLiIsInRvIGNvbnRyaWJ1dGUgdG8gdGhlIGNpdHkgZm9vZCBiYW5rIGZvciB0aGUgcG9vci4iXSwia2V5IjowLCJyZWNvbiI6ZmFsc2V9LHsibiI6Miwic3RlbSI6IkZvciBDaGFuZywgdGhlIHByb2JsZW0gd2l0aCB0aGUgXHUyMDFjZ3JvdyB5b3VyIG93biBmb29kXHUyMDFkIG1vdmVtZW50IGlzIHRoYXQiLCJvcHRpb25zIjpbInRoZSBodW5ncnkgYW5kIHBvb3IgbmVlZCBmb29kIGZvciBhIGxpZmV0aW1lLCBub3QganVzdCB0d28geWVhcnMuIiwiYmFja3lhcmQgZm9vZCBwcm9kdWN0aW9uIHVsdGltYXRlbHkgaGFybXMgaHVtYW5zIGFuZCB3aWxkbGlmZS4iLCJncm93aW5nIHlvdXIgb3duIGZvb2QgZG9lc24ndCBtZWFuIHJhaXNpbmcgeW91ciBvd24gY2hpY2tlbnMuIiwidGhvc2UgdG9vIHBvb3IgdG8gcHVyY2hhc2UgZm9vZCBhcmUgYWxzbyB0b28gcG9vciB0byBwcm9kdWNlIGl0LiJdLCJrZXkiOjMsInJlY29uIjpmYWxzZX0seyJuIjozLCJzdGVtIjoiV2Vic3RlciBhZHZvY2F0ZXMgdXJiYW4gZmFybWluZyBiZWNhdXNlIGhlIGJlbGlldmVzIiwib3B0aW9ucyI6WyJwZW9wbGUgY2FuIGxlYXJuIHZhbHVhYmxlIGZhcm1pbmcgcHJhY3RpY2VzLiIsIml0IGlzIGEgcGVyc29uJ3MgcmlnaHQgdG8gYmUgYWJsZSB0byBwcm9kdWNlIGZvb2QuIiwiYW5pbWFscyBhcmUgdHJlYXRlZCBiZXR0ZXIgdGhhbiBvbiBmYWN0b3J5IGZhcm1zLiIsIml0IGNhbiBib29zdCBhIGNvbW11bml0eSdzIHN1cHBseSBvZiBmb29kLiJdLCJrZXkiOjMsInJlY29uIjpmYWxzZX0seyJuIjo0LCJzdGVtIjoiQWxsIHRocmVlIHBlb3BsZSBhZ3JlZSB0aGF0IHVyYmFuIGNoaWNrZW5zIiwib3B0aW9ucyI6WyJkbyBub3QgbGl2ZSBsb25nIGVub3VnaC4iLCJhcmUgb2Z0ZW4gYWJhbmRvbmVkLiIsInNwcmVhZCBiaXJkIGRpc2Vhc2VzLiIsImF0dHJhY3Qgd2lsZCBwcmVkYXRvcnMuIl0sImtleSI6MSwicmVjb24iOmZhbHNlfSx7Im4iOjUsInN0ZW0iOiJJZiB0aGUgYnlsYXcgaXMgcmV2b2tlZCwgdGhlcmUgd2lsbCBiZSBhIGRlY3JlYXNlIGluIiwib3B0aW9ucyI6WyJjaXR5IGNoaWNrZW4gZXV0aGFuaXphdGlvbi4iLCJsb2NhbCBjb3lvdGUgc2lnaHRpbmdzLiIsImFuaW1hbCBjcnVlbHR5IGluY2lkZW50cy4iLCJmb29kIGJhbmsgZGVwZW5kZW5jZS4iXSwia2V5IjowLCJyZWNvbiI6ZmFsc2V9LHsibiI6Niwic3RlbSI6IkpvbmVzIHdvdWxkIGxpa2UgdG8gc2VlIHRoZSBieWxhdyIsIm9wdGlvbnMiOlsicmVtb3ZlZCBlbnRpcmVseS4iLCJsZWZ0IGFzIGl0IGlzLiIsInRpZ2h0ZW5lZCB1cC4iLCJwYXNzZWQgaW1tZWRpYXRlbHkuIl0sImtleSI6MiwicmVjb24iOmZhbHNlfV19XX1dfTsKCnZhciBDRUxQSVBfWVQgPSB7IHZpZGVvSWQ6ICcnIH07ICAvKiBlLmcuICdkUXc0dzlXZ1hjUScgXHUyMDE0IFNldCAyIFRlc3QgMiBmdWxsIGxpc3RlbmluZyB2aWRlbyAqLwp2YXIgQ0xQX0NIQVBURVJTID0geyAnMC4wJzpbMCw1MjBdLCAnMC4xJzpbMCw1MjBdLCAnMC4yJzpbMCw1MjBdLCAnMS4wJzpbNTIwLDg1M10sICcyLjAnOls4NTMsMTI3Ml0sICczLjAnOlsxMjcyLDEzNjRdLCAnNC4wJzpbMTM2NCwxNTAzXSwgJzUuMCc6WzE1MDMsMTc1N10gfTsKCi8qIFRPRE86IHBsYWNlaG9sZGVyIG1hcHBpbmcgXHUyMDE0IHZlcmlmeSBhZ2FpbnN0IHRoZSBvZmZpY2lhbCBDRUxQSVAgc2NvcmUgY2hhcnQuICovCmZ1bmN0aW9uIGNsYkVzdGltYXRlKHJhdyl7CiAgaWYgKHJhdyA+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 2 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-6021","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6021","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=6021"}],"version-history":[{"count":1,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6021\/revisions"}],"predecessor-version":[{"id":6610,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6021\/revisions\/6610"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6021"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}