{"id":6037,"date":"2026-07-06T05:03:16","date_gmt":"2026-07-06T05:03:16","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-7-test-1-listening\/"},"modified":"2026-07-12T03:25:19","modified_gmt":"2026-07-12T03:25:19","slug":"celpip-set-7-test-1-listening","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-7-test-1-listening\/","title":{"rendered":"CELPIP Set 7 \u00b7 Practice Test 1 \u2014 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 7 &#183; Practice Test 1<\/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('dmFyIENMUF9BVURJTz17IjAuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9wMXMxLm1wMyIsIjAuMSI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9wMXMyLm1wMyIsIjAuMiI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9wMXMzLm1wMyIsIjEuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9wMi5tcDMiLCIyLjAiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvcDMubXAzIiwiMy4wIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L3A0Lm1wMyIsIjQuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9wNS5tcDQiLCI1LjAiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvcDYubXAzIn07dmFyIENMUF9BVURJT19WSURFTz17IjQuMCI6MX07CgooZnVuY3Rpb24oKXt2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3MudGV4dENvbnRlbnQ9IlxuLyogPT09PT09PT09PT09IENFTFBJUCBMaXN0ZW5pbmcgUHJhY3RpY2UgXHUyMDE0IHNjb3BlZCwgV29yZFByZXNzLXNhZmUgPT09PT09PT09PT09ICovXG4uY2xwLXdyYXB7XG4gIC8qIFZBUklBTlRfQ0hST01FX1NUQVJUICovXG4gIC0tYmFyLWJnOiNFOEVCRUY7XG4gIC0tYmFyLWJvcmRlcjojRDNEOUUwO1xuICAtLWJhci10ZXh0OiMxRjI5Mzc7XG4gIC0tcGFuZWwtbWVkaWEtYmc6I0Y0RjVGNztcbiAgLS1wYW5lbC1tZWRpYS1ib3JkZXI6I0UzRTZFQTtcbiAgLS1tZWRpYS1jYXJkLWJnOiNFQ0VFRjE7XG4gIC0tbWVkaWEtY2FyZC1ib3JkZXI6I0Q4RERFMztcbiAgLS1wYW5lbC1xLWJnOiNFOUY0Rjc7XG4gIC0tcGFuZWwtcS1ib3JkZXI6I0Q2RThFRDtcbiAgLS1kZC1vcGVuLWJnOiNDQkVCRjQ7XG4gIC8qIFZBUklBTlRfQ0hST01FX0VORCAqL1xuICAtLW5hdnk6IzA1MEUyMDsgLS1kYXJrOiMwQTE2Mjg7IC0tYjkwMDojMEQyMzUyOyAtLWI3MDA6IzEyNDVBODsgLS1iNTAwOiMyNTYzRUI7XG4gIC0tYjQwMDojM0I4MkY2OyAtLWIyMDA6IzkzQzVGRDsgLS1iMTAwOiNEQkVBRkU7IC0tYjUwOiNFRkY2RkY7XG4gIC0tdGVhbDojMEQ5NDg4OyAtLWN5YW46IzA2QjZENDsgLS1ncmVlbjojMTBCOTgxOyAtLWdyZWVuNTA6I0VDRkRGNTtcbiAgLS1yb3NlOiNGNDNGNUU7IC0tb3JhbmdlOiNGOTczMTY7XG4gIC0tdGV4dDojMEYxNzJBOyAtLW11dGVkOiM0NzU1Njk7IC0tc3VidGxlOiM5NEEzQjg7IC0tYm9yZGVyOiNFMkU4RjA7XG4gIC0tY3JpbXNvbjojQjQyQjNDOyAtLXdoaXRlOiNGRkZGRkY7IC0tcGFnZTojRjhGQUZGO1xuICBmb250LWZhbWlseTonUGx1cyBKYWthcnRhIFNhbnMnLHN5c3RlbS11aSwtYXBwbGUtc3lzdGVtLHNhbnMtc2VyaWY7XG4gIGNvbG9yOnZhcigtLXRleHQpO1xuICBtYXgtd2lkdGg6MTE0MHB4OyBtYXJnaW46MCBhdXRvOyBwYWRkaW5nOjE2cHggMTZweCA0OHB4O1xuICBsaW5lLWhlaWdodDoxLjU7IGZvbnQtc2l6ZToxNnB4O1xufVxuLmNscC13cmFwICosIC5jbHAtd3JhcCAqOjpiZWZvcmUsIC5jbHAtd3JhcCAqOjphZnRlcnsgYm94LXNpemluZzpib3JkZXItYm94OyB9XG4uY2xwLXdyYXAgYnV0dG9ueyBmb250LWZhbWlseTppbmhlcml0OyBjdXJzb3I6cG9pbnRlcjsgfVxuLmNscC13cmFwIGgxLC5jbHAtd3JhcCBoMiwuY2xwLXdyYXAgaDMsLmNscC13cmFwIHB7IG1hcmdpbjowOyB9XG5cbi8qID09PT09PT09PT09PSBIRVJPID09PT09PT09PT09PSAqL1xuLmNscC1oZXJve1xuICBwb3NpdGlvbjpyZWxhdGl2ZTsgb3ZlcmZsb3c6aGlkZGVuOyBib3JkZXItcmFkaXVzOjIycHg7XG4gIGJhY2tncm91bmQ6dmFyKC0tbmF2eSk7IGNvbG9yOiNmZmY7XG4gIHBhZGRpbmc6MzZweCA0MHB4O1xuICBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjE0cHg7IGFsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7XG4gIGJveC1zaGFkb3c6MCAyMHB4IDQwcHggLTIwcHggcmdiYSg1LDE0LDMyLC40NSksIDAgNHB4IDEycHggLTZweCByZ2JhKDUsMTQsMzIsLjMpO1xufVxuLmNscC1hdXJvcmF7IHBvc2l0aW9uOmFic29sdXRlOyBpbnNldDowOyBwb2ludGVyLWV2ZW50czpub25lOyB9XG4uY2xwLWF1cm9yYSBzcGFue1xuICBwb3NpdGlvbjphYnNvbHV0ZTsgYm9yZGVyLXJhZGl1czo1MCU7IGZpbHRlcjpibHVyKDYwcHgpOyBvcGFjaXR5Oi41O1xuICBhbmltYXRpb246Y2xwRmxvYXQgMTRzIGVhc2UtaW4tb3V0IGluZmluaXRlIGFsdGVybmF0ZTtcbn1cbi5jbHAtYXVyb3JhIHNwYW46bnRoLWNoaWxkKDEpeyB3aWR0aDo0MjBweDsgaGVpZ2h0OjQyMHB4OyBsZWZ0Oi0xMjBweDsgdG9wOi0yMDBweDsgYmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMxMjQ1QTggMCUsdHJhbnNwYXJlbnQgNzAlKTsgfVxuLmNscC1hdXJvcmEgc3BhbjpudGgtY2hpbGQoMil7IHdpZHRoOjM4MHB4OyBoZWlnaHQ6MzgwcHg7IHJpZ2h0Oi04MHB4OyB0b3A6LTE2MHB4OyBiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzBEOTQ4OCAwJSx0cmFuc3BhcmVudCA3MCUpOyBhbmltYXRpb24tZGVsYXk6LTRzOyB9XG4uY2xwLWF1cm9yYSBzcGFuOm50aC1jaGlsZCgzKXsgd2lkdGg6MzQwcHg7IGhlaWdodDozNDBweDsgcmlnaHQ6MjIlOyBib3R0b206LTI0MHB4OyBiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzI1NjNFQiAwJSx0cmFuc3BhcmVudCA3MCUpOyBhbmltYXRpb24tZGVsYXk6LThzOyB9XG5Aa2V5ZnJhbWVzIGNscEZsb2F0e1xuICBmcm9teyB0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApIHNjYWxlKDEpOyB9XG4gIHRveyB0cmFuc2Zvcm06dHJhbnNsYXRlM2QoNDBweCwyNnB4LDApIHNjYWxlKDEuMTIpOyB9XG59XG4uY2xwLWhlcm8tc2hpbW1lcntcbiAgcG9zaXRpb246YWJzb2x1dGU7IGluc2V0OjA7IHBvaW50ZXItZXZlbnRzOm5vbmU7XG4gIGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDExNWRlZywgdHJhbnNwYXJlbnQgMzAlLCByZ2JhKDE0NywxOTcsMjUzLC4xMCkgNDUlLCByZ2JhKDYsMTgyLDIxMiwuMTIpIDUwJSwgdHJhbnNwYXJlbnQgNjUlKTtcbiAgYmFja2dyb3VuZC1zaXplOjI1MCUgMTAwJTtcbiAgYW5pbWF0aW9uOmNscFNoaW1tZXIgN3MgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGNscFNoaW1tZXJ7IDAle2JhY2tncm91bmQtcG9zaXRpb246MTIwJSAwO30gNTUle2JhY2tncm91bmQtcG9zaXRpb246LTQwJSAwO30gMTAwJXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00MCUgMDt9IH1cbi5jbHAtaGVyby1iYWRnZXN7IGRpc3BsYXk6ZmxleDsgZ2FwOjEwcHg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZmxleC13cmFwOndyYXA7IHBvc2l0aW9uOnJlbGF0aXZlOyB9XG4uY2xwLWJhZGdlLWJyYW5ke1xuICBiYWNrZ3JvdW5kOnZhcigtLWNyaW1zb24pOyBjb2xvcjojZmZmOyBmb250LXdlaWdodDo4MDA7IGZvbnQtc2l6ZToxMnB4O1xuICBsZXR0ZXItc3BhY2luZzouMTJlbTsgcGFkZGluZzo1cHggMTJweDsgYm9yZGVyLXJhZGl1czo2cHg7XG59XG4uY2xwLWJhZGdlLXNldHsgY29sb3I6dmFyKC0tYjIwMCk7IGZvbnQtc2l6ZToxM3B4OyBmb250LXdlaWdodDo2MDA7IH1cbi5jbHAtaGVybyBoMXsgcG9zaXRpb246cmVsYXRpdmU7IGZvbnQtc2l6ZTpjbGFtcCgyNnB4LDR2dyw0MHB4KTsgZm9udC13ZWlnaHQ6ODAwOyBsZXR0ZXItc3BhY2luZzotLjAyZW07IGxpbmUtaGVpZ2h0OjEuMTI7IH1cbi5jbHAtaGVyby1jaGlwc3sgZGlzcGxheTpmbGV4OyBnYXA6OHB4OyBmbGV4LXdyYXA6d3JhcDsgcG9zaXRpb246cmVsYXRpdmU7IH1cbi5jbHAtY2hpcHtcbiAgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wOSk7IGJvcmRlcjoxcHggc29saWQgcmdiYSgxNDcsMTk3LDI1MywuMjUpO1xuICBjb2xvcjojREJFQUZFOyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NjAwOyBwYWRkaW5nOjZweCAxNHB4OyBib3JkZXItcmFkaXVzOjMycHg7XG4gIGJhY2tkcm9wLWZpbHRlcjpibHVyKDRweCk7IHRyYW5zaXRpb246dHJhbnNmb3JtIC4yNXMgZWFzZSwgYmFja2dyb3VuZCAuMjVzIGVhc2U7XG59XG4uY2xwLWNoaXA6aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpOyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjE1KTsgfVxuLmNscC1jdGF7XG4gIHBvc2l0aW9uOnJlbGF0aXZlOyBiYWNrZ3JvdW5kOnZhcigtLWI1MDApOyBjb2xvcjojZmZmOyBib3JkZXI6bm9uZTsgYm9yZGVyLXJhZGl1czoxMHB4O1xuICBmb250LXNpemU6MTZweDsgZm9udC13ZWlnaHQ6NzAwOyBwYWRkaW5nOjEzcHggMzRweDsgbWFyZ2luLXRvcDoycHg7XG4gIGJveC1zaGFkb3c6MCAxMHB4IDIycHggLThweCByZ2JhKDM3LDk5LDIzNSwuNjUpO1xuICB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMjJzIGVhc2UsIGJveC1zaGFkb3cgLjIycyBlYXNlLCBiYWNrZ3JvdW5kIC4yMnMgZWFzZTtcbn1cbi5jbHAtY3RhOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTsgYmFja2dyb3VuZDp2YXIoLS1iNDAwKTsgYm94LXNoYWRvdzowIDE0cHggMjZweCAtOHB4IHJnYmEoMzcsOTksMjM1LC43NSk7IH1cblxuLyogPT09PT09PT09PT09IFNUSUNLWSBUT09MQkFSID09PT09PT09PT09PSAqL1xuLmNscC10b29sYmFyW2hpZGRlbl17IGRpc3BsYXk6bm9uZTsgfVxuLmNscC10b29sYmFye1xuICBwb3NpdGlvbjpzdGlja3k7IHRvcDo4cHg7IHotaW5kZXg6NjA7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTBweDsgZmxleC13cmFwOndyYXA7XG4gIGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuOTIpOyBiYWNrZHJvcC1maWx0ZXI6Ymx1cig4cHgpO1xuICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTZweDtcbiAgcGFkZGluZzo4cHggMTJweDsgbWFyZ2luOjE4cHggMCAwO1xuICBib3gtc2hhZG93OjAgOHB4IDI0cHggLTE0cHggcmdiYSgxNSwyMyw0MiwuMjUpLCAwIDJweCA2cHggLTRweCByZ2JhKDE1LDIzLDQyLC4xMik7XG4gIG1pbi1oZWlnaHQ6NTJweDtcbn1cbi5jbHAtc2NvcmUtY2hpcHtcbiAgZm9udC13ZWlnaHQ6ODAwOyBmb250LXNpemU6MTRweDsgY29sb3I6dmFyKC0tYjkwMCk7XG4gIGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1iMTAwKTsgYm9yZGVyLXJhZGl1czozMnB4OyBwYWRkaW5nOjdweCAxNnB4O1xufVxuLmNscC10YnRue1xuICBib3JkZXItcmFkaXVzOjEwcHg7IGZvbnQtc2l6ZToxM3B4OyBmb250LXdlaWdodDo3MDA7IHBhZGRpbmc6OXB4IDE2cHg7XG4gIGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYmFja2dyb3VuZDojZmZmOyBjb2xvcjp2YXIoLS1tdXRlZCk7XG4gIG1pbi1oZWlnaHQ6NDBweDsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjJzIGVhc2UsIGJveC1zaGFkb3cgLjJzIGVhc2UsIGJhY2tncm91bmQgLjJzIGVhc2U7XG59XG4uY2xwLXRidG46aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xcHgpOyBib3gtc2hhZG93OjAgNnB4IDE0cHggLThweCByZ2JhKDE1LDIzLDQyLC4zKTsgfVxuLmNscC10YnRuLWNoZWNreyBiYWNrZ3JvdW5kOnZhcigtLWdyZWVuKTsgYm9yZGVyLWNvbG9yOnZhcigtLWdyZWVuKTsgY29sb3I6I2ZmZjsgfVxuLmNscC10YnRuLWNoZWNrOmhvdmVyeyBiYWNrZ3JvdW5kOiMwY2E2Nzg7IH1cbi5jbHAtdGJ0bltkaXNhYmxlZF17IG9wYWNpdHk6LjU7IGN1cnNvcjpub3QtYWxsb3dlZDsgdHJhbnNmb3JtOm5vbmU7IGJveC1zaGFkb3c6bm9uZTsgfVxuLmNscC10b29sYmFyLXNwYWNlcnsgZmxleDoxOyB9XG5cbi8qID09PT09PT09PT09PSBDQVQgU0lNVUxBVE9SID09PT09PT09PT09PSAqL1xuLmNscC1zaW17IG1hcmdpbi10b3A6MThweDsgfVxuLmNscC1kb3RzeyBkaXNwbGF5OmZsZXg7IGdhcDo2cHg7IG1hcmdpbjowIDAgMTBweCAycHg7IH1cbi5jbHAtZG90e1xuICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJhY2tncm91bmQ6I2ZmZjsgY29sb3I6dmFyKC0tc3VidGxlKTtcbiAgZm9udC1zaXplOjExcHg7IGZvbnQtd2VpZ2h0OjcwMDsgYm9yZGVyLXJhZGl1czozMnB4OyBwYWRkaW5nOjRweCAxMHB4O1xuICB0cmFuc2l0aW9uOmJhY2tncm91bmQgLjI1cyBlYXNlLCBjb2xvciAuMjVzIGVhc2U7XG59XG4uY2xwLWRvdC5jbHAtZG9uZXsgYmFja2dyb3VuZDp2YXIoLS1iMTAwKTsgYm9yZGVyLWNvbG9yOnZhcigtLWIyMDApOyBjb2xvcjp2YXIoLS1iOTAwKTsgfVxuLmNscC1kb3QuY2xwLWN1cnsgYmFja2dyb3VuZDp2YXIoLS1iNTAwKTsgYm9yZGVyLWNvbG9yOnZhcigtLWI1MDApOyBjb2xvcjojZmZmOyB9XG4uY2xwLWRvdC5jbHAtY2xpY2thYmxleyBjdXJzb3I6cG9pbnRlcjsgfVxuLmNscC1kb3Q6bm90KC5jbHAtY2xpY2thYmxlKXsgY3Vyc29yOmRlZmF1bHQ7IH1cblxuLmNscC1jYXR7XG4gIHBvc2l0aW9uOnJlbGF0aXZlOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJhci1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjEwcHg7IG92ZXJmbG93OnZpc2libGU7XG4gIGJhY2tncm91bmQ6I2ZmZjtcbiAgYm94LXNoYWRvdzowIDEwcHggMzBweCAtMThweCByZ2JhKDE1LDIzLDQyLC4yMiksIDAgMnB4IDhweCAtNXB4IHJnYmEoMTUsMjMsNDIsLjEpO1xufVxuLmNscC1iYXJ7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTJweDtcbiAgYmFja2dyb3VuZDp2YXIoLS1iYXItYmcpOyBib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1iYXItYm9yZGVyKTtcbiAgYm9yZGVyLXJhZGl1czoxMHB4IDEwcHggMCAwO1xuICBwYWRkaW5nOjlweCAxMnB4OyBtaW4taGVpZ2h0OjQ0cHg7XG59XG4uY2xwLWJhci10aXRsZXsgZm9udC1zaXplOjEzcHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tYmFyLXRleHQpOyBmbGV4OjE7IG1pbi13aWR0aDowOyB9XG4uY2xwLWJhci10aW1lcnsgZm9udC1zaXplOjEycHg7IGNvbG9yOnZhcigtLWJhci10ZXh0KTsgd2hpdGUtc3BhY2U6bm93cmFwOyB9XG4uY2xwLWJhci10aW1lciBieyBmb250LXdlaWdodDo4MDA7IH1cbi5jbHAtbmV4dHtcbiAgYmFja2dyb3VuZDp2YXIoLS1iNzAwKTsgY29sb3I6I2ZmZjsgYm9yZGVyOm5vbmU7IGJvcmRlci1yYWRpdXM6NHB4O1xuICBmb250LXNpemU6MTFweDsgZm9udC13ZWlnaHQ6NzAwOyBsZXR0ZXItc3BhY2luZzouMDhlbTsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO1xuICBwYWRkaW5nOjdweCAxNnB4OyBtaW4taGVpZ2h0OjMwcHg7XG4gIHRyYW5zaXRpb246YmFja2dyb3VuZCAuMnMgZWFzZSwgdHJhbnNmb3JtIC4ycyBlYXNlO1xufVxuLmNscC1uZXh0OmhvdmVyeyBiYWNrZ3JvdW5kOnZhcigtLWI5MDApOyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMXB4KTsgfVxuLmNscC1zY3JlZW57IGJvcmRlci1yYWRpdXM6MCAwIDEwcHggMTBweDsgb3ZlcmZsb3c6aGlkZGVuOyB9XG5cbi5jbHAtaW5zdHJ7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6ZmxleC1zdGFydDsgZ2FwOjlweDtcbiAgcGFkZGluZzoxNHB4IDE2cHggMTJweDsgYmFja2dyb3VuZDojZmZmO1xufVxuLmNscC1pbmZve1xuICBmbGV4Om5vbmU7IHdpZHRoOjE4cHg7IGhlaWdodDoxOHB4OyBtYXJnaW4tdG9wOjJweDsgYm9yZGVyLXJhZGl1czo1MCU7XG4gIGJhY2tncm91bmQ6dmFyKC0tYjUwMCk7IGNvbG9yOiNmZmY7IGZvbnQtd2VpZ2h0OjgwMDsgZm9udC1zaXplOjExcHg7IGZvbnQtc3R5bGU6aXRhbGljO1xuICBkaXNwbGF5OmlubGluZS1mbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGZvbnQtZmFtaWx5Okdlb3JnaWEsc2VyaWY7XG59XG4uY2xwLWluc3RyIHB7IGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo3MDA7IGNvbG9yOnZhcigtLWI5MDApOyB9XG5cbi8qIGludHJvIHNjcmVlbiAqL1xuLmNscC1pbnRyby1ib2R5eyBwYWRkaW5nOjZweCAyMHB4IDI2cHggNDRweDsgYmFja2dyb3VuZDojZmZmOyB9XG4uY2xwLWludHJvLWJvZHkgaDN7IGZvbnQtc2l6ZToxNXB4OyBmb250LXdlaWdodDo4MDA7IGNvbG9yOnZhcigtLXRleHQpOyBtYXJnaW4tYm90dG9tOjEycHg7IH1cbi5jbHAtYnVsbGV0c3sgbGlzdC1zdHlsZTpub25lOyBtYXJnaW46MDsgcGFkZGluZzowOyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjEwcHg7IG1heC13aWR0aDo2NDBweDsgfVxuLmNscC1idWxsZXRzIGxpe1xuICBkaXNwbGF5OmZsZXg7IGdhcDoxMHB4OyBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjp2YXIoLS1iOTAwKTtcbiAgcGFkZGluZy1ib3R0b206MTBweDsgYm9yZGVyLWJvdHRvbToxcHggZG90dGVkIHZhcigtLWJvcmRlcik7XG59XG4uY2xwLWJ1bGxldHMgbGk6OmJlZm9yZXsgY29udGVudDpcIlwiOyBmbGV4Om5vbmU7IHdpZHRoOjhweDsgaGVpZ2h0OjhweDsgYm9yZGVyLXJhZGl1czo1MCU7IGJhY2tncm91bmQ6dmFyKC0tYjQwMCk7IG1hcmdpbi10b3A6NnB4OyB9XG5cbi8qIG1lZGlhIHNjcmVlbiAqL1xuLmNscC1tZWRpYS1wYW5lbHtcbiAgYmFja2dyb3VuZDp2YXIoLS1wYW5lbC1tZWRpYS1iZyk7IGJvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLXBhbmVsLW1lZGlhLWJvcmRlcik7XG4gIHBhZGRpbmc6MzRweCAyMHB4IDI2cHg7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxNHB4O1xufVxuLmNscC1tZWRpYS1jYXJke1xuICB3aWR0aDoxMDAlOyBtYXgtd2lkdGg6NTIwcHg7XG4gIGJhY2tncm91bmQ6dmFyKC0tbWVkaWEtY2FyZC1iZyk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tbWVkaWEtY2FyZC1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjEwcHg7XG4gIHBhZGRpbmc6MjJweCAyNnB4O1xufVxuLmNscC1tZWRpYS1jYXJkLmNscC1pcy12aWRlb3sgbWF4LXdpZHRoOjY2MHB4OyBwYWRkaW5nOjEycHg7IH1cbi5jbHAtbWVkaWEtem9uZXsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxOHB4OyB9XG4uY2xwLWlzLXZpZGVvIC5jbHAtbWVkaWEtem9uZXtcbiAgYXNwZWN0LXJhdGlvOjE2Lzk7IHdpZHRoOjEwMCU7IGJvcmRlci1yYWRpdXM6NnB4OyBiYWNrZ3JvdW5kOnZhcigtLWRhcmspO1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgbWFyZ2luLWJvdHRvbToxMnB4O1xuICBjb2xvcjojZmZmO1xufVxuLmNscC1zcGVha2Vye1xuICBmbGV4Om5vbmU7IHdpZHRoOjU2cHg7IGhlaWdodDo1NnB4OyBib3JkZXItcmFkaXVzOjhweDsgYmFja2dyb3VuZDojZmZmO1xuICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLW1lZGlhLWNhcmQtYm9yZGVyKTtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGNvbG9yOnZhcigtLW11dGVkKTtcbn1cbi5jbHAtaXMtdmlkZW8gLmNscC1zcGVha2VyeyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjEyKTsgYm9yZGVyOm5vbmU7IGNvbG9yOiNmZmY7IHdpZHRoOjY0cHg7IGhlaWdodDo2NHB4OyBib3JkZXItcmFkaXVzOjUwJTsgfVxuLmNscC1tZWRpYS1tYWlueyBmbGV4OjE7IG1pbi13aWR0aDowOyB9XG4uY2xwLWlzLXZpZGVvIC5jbHAtbWVkaWEtbWFpbnsgcGFkZGluZzowIDEwcHggNHB4OyB9XG4uY2xwLW1lZGlhLWxhYmVseyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tdGV4dCk7IG1hcmdpbi1ib3R0b206MTBweDsgfVxuLmNscC1wcm9ncmVzc3sgaGVpZ2h0OjhweDsgYm9yZGVyLXJhZGl1czo2cHg7IGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1tZWRpYS1jYXJkLWJvcmRlcik7IG92ZXJmbG93OmhpZGRlbjsgfVxuLmNscC1pcy12aWRlbyAuY2xwLXByb2dyZXNzeyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjYpOyB9XG4uY2xwLXByb2dyZXNzLWZpbGx7IGhlaWdodDoxMDAlOyB3aWR0aDowJTsgYmFja2dyb3VuZDp2YXIoLS1jeWFuKTsgYm9yZGVyLXJhZGl1czo2cHg7IHRyYW5zaXRpb246d2lkdGggLjNzIGxpbmVhcjsgfVxuLmNscC1tZWRpYS1tZXRhe1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjEwcHg7IGZvbnQtc2l6ZToxM3B4OyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtd2VpZ2h0OjYwMDtcbn1cbi5jbHAtbWVkaWEtbWV0YSBzdmd7IGRpc3BsYXk6YmxvY2s7IH1cbi5jbHAtb25jZS1ub3RleyBmb250LXNpemU6MTJweDsgY29sb3I6dmFyKC0tc3VidGxlKTsgZm9udC13ZWlnaHQ6NjAwOyB9XG5cbi8qIHF1ZXN0aW9uIHNjcmVlbiAqL1xuLmNscC1xLXBhbmVse1xuICBiYWNrZ3JvdW5kOnZhcigtLXBhbmVsLXEtYmcpOyBib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1wYW5lbC1xLWJvcmRlcik7XG4gIHBhZGRpbmc6MjBweCAyMnB4IDMwcHg7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBnYXA6MjBweDtcbn1cbi5jbHAtcXsgZm9udC1zaXplOjE1LjVweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjp2YXIoLS10ZXh0KTsgbGluZS1oZWlnaHQ6MjsgfVxuLmNscC1xbnVteyBmb250LXdlaWdodDo3MDA7IH1cbi5jbHAtZGR7XG4gIGRpc3BsYXk6aW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjhweDtcbiAgYm9yZGVyOm5vbmU7IGJvcmRlci1ib3R0b206MnB4IGRvdHRlZCB2YXIoLS1zdWJ0bGUpOyBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O1xuICBjb2xvcjp2YXIoLS1iNzAwKTsgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjYwMDtcbiAgcGFkZGluZzo0cHggOHB4IDNweDsgbWFyZ2luOjAgMnB4OyBtaW4taGVpZ2h0OjMycHg7IG1heC13aWR0aDoxMDAlO1xuICBib3JkZXItcmFkaXVzOjRweCA0cHggMCAwOyB2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTtcbiAgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4ycyBlYXNlO1xufVxuLmNscC1kZDpob3ZlcnsgYmFja2dyb3VuZDpyZ2JhKDM3LDk5LDIzNSwuMDgpOyB9XG4uY2xwLWRkLmNscC1vcGVueyBiYWNrZ3JvdW5kOnZhcigtLWRkLW9wZW4tYmcpOyB9XG4uY2xwLWRkIC5jbHAtZGQtdGV4dHtcbiAgb3ZlcmZsb3c6aGlkZGVuOyB0ZXh0LW92ZXJmbG93OmVsbGlwc2lzOyB3aGl0ZS1zcGFjZTpub3dyYXA7IG1heC13aWR0aDo0MjBweDtcbn1cbi5jbHAtZGQgLmNscC1kZC1jYXJldHsgZm9udC1zaXplOjlweDsgY29sb3I6dmFyKC0tYjcwMCk7IGZsZXg6bm9uZTsgfVxuLmNscC1kZC5jbHAtdW5hbnN3ZXJlZCAuY2xwLWRkLXRleHR7IGxldHRlci1zcGFjaW5nOjJweDsgY29sb3I6dmFyKC0tc3VidGxlKTsgfVxuLmNscC1kZC5jbHAtbWFyay1yaWdodHsgYmFja2dyb3VuZDp2YXIoLS1ncmVlbjUwKTsgYm9yZGVyOjJweCBzb2xpZCB2YXIoLS1ncmVlbik7IGJvcmRlci1yYWRpdXM6NnB4OyBjb2xvcjojMDQ3ODU3OyB9XG4uY2xwLWRkLmNscC1tYXJrLXdyb25neyBiYWNrZ3JvdW5kOiNGRkYxRjI7IGJvcmRlcjoycHggc29saWQgdmFyKC0tcm9zZSk7IGJvcmRlci1yYWRpdXM6NnB4OyBjb2xvcjojQkUxMjNDOyB9XG4uY2xwLWRkW2Rpc2FibGVkXXsgY3Vyc29yOmRlZmF1bHQ7IH1cbi5jbHAtcmV2ZWFse1xuICBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MTMuNXB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOiMwNDc4NTc7IGxpbmUtaGVpZ2h0OjEuNTtcbiAgbWFyZ2luOjJweCAwIDAgMjZweDtcbn1cbi5jbHAtcmV2ZWFsIGJ7IGZvbnQtd2VpZ2h0OjgwMDsgfVxuLmNscC10b2RvLXRhZ3tcbiAgZm9udC1zaXplOjEwcHg7IGZvbnQtd2VpZ2h0OjgwMDsgbGV0dGVyLXNwYWNpbmc6LjA4ZW07IGNvbG9yOnZhcigtLW9yYW5nZSk7XG4gIGJvcmRlcjoxcHggc29saWQgY3VycmVudENvbG9yOyBib3JkZXItcmFkaXVzOjRweDsgcGFkZGluZzoxcHggNnB4OyBtYXJnaW4tbGVmdDo4cHg7IHZlcnRpY2FsLWFsaWduOjJweDtcbn1cblxuLyogZHJvcGRvd24gcG9wdXAgKi9cbi5jbHAtcG9we1xuICBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDo4MDsgd2lkdGg6bWluKDM0MHB4LCBjYWxjKDEwMHZ3IC0gNDhweCkpO1xuICBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxMHB4O1xuICBib3gtc2hhZG93OjAgMThweCA0MHB4IC0xMnB4IHJnYmEoMTUsMjMsNDIsLjI4KSwgMCA0cHggMTJweCAtNnB4IHJnYmEoMTUsMjMsNDIsLjE0KTtcbiAgcGFkZGluZzo2cHg7IFxufVxuLmNscC1vcHR7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTFweDsgd2lkdGg6MTAwJTtcbiAgYmFja2dyb3VuZDp0cmFuc3BhcmVudDsgYm9yZGVyOm5vbmU7IHRleHQtYWxpZ246bGVmdDtcbiAgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tdGV4dCk7XG4gIHBhZGRpbmc6MTBweCAxMnB4OyBtaW4taGVpZ2h0OjQycHg7IGJvcmRlci1yYWRpdXM6NnB4O1xuICBib3JkZXItYm90dG9tOjFweCBkb3R0ZWQgdmFyKC0tYm9yZGVyKTtcbiAgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4xNXMgZWFzZTtcbn1cbi5jbHAtb3B0Omxhc3QtY2hpbGR7IGJvcmRlci1ib3R0b206bm9uZTsgfVxuLmNscC1vcHQ6aG92ZXJ7IGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgfVxuLmNscC1yYWRpb3tcbiAgZmxleDpub25lOyB3aWR0aDoxN3B4OyBoZWlnaHQ6MTdweDsgYm9yZGVyLXJhZGl1czo1MCU7XG4gIGJvcmRlcjoycHggc29saWQgdmFyKC0tc3VidGxlKTsgYmFja2dyb3VuZDojZmZmOyBwb3NpdGlvbjpyZWxhdGl2ZTtcbn1cbi5jbHAtb3B0LmNscC1zZWwgLmNscC1yYWRpb3sgYm9yZGVyLWNvbG9yOnZhcigtLWI1MDApOyB9XG4uY2xwLW9wdC5jbHAtc2VsIC5jbHAtcmFkaW86OmFmdGVye1xuICBjb250ZW50OlwiXCI7IHBvc2l0aW9uOmFic29sdXRlOyBpbnNldDoyLjVweDsgYm9yZGVyLXJhZGl1czo1MCU7IGJhY2tncm91bmQ6dmFyKC0tYjUwMCk7XG59XG5cbi8qIHByZS1zdGFydCAvIGZpbmlzaCAqL1xuLmNscC1pZGxle1xuICBwYWRkaW5nOjU2cHggMjRweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyLXJhZGl1czowIDAgMTBweCAxMHB4O1xufVxuLmNscC1pZGxlIHB7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC1zaXplOjE1cHg7IGZvbnQtd2VpZ2h0OjYwMDsgbWF4LXdpZHRoOjQ4MHB4OyBtYXJnaW46MCBhdXRvOyB9XG4uY2xwLWZpbmlzaHsgcGFkZGluZzo0OHB4IDI0cHggNTZweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJhY2tncm91bmQ6I2ZmZjsgfVxuLmNscC1maW5pc2ggaDN7IGZvbnQtc2l6ZToyMnB4OyBmb250LXdlaWdodDo4MDA7IG1hcmdpbi1ib3R0b206MTBweDsgfVxuLmNscC1maW5pc2ggcHsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXNpemU6MTVweDsgZm9udC13ZWlnaHQ6NjAwOyBtYXJnaW4tYm90dG9tOjIycHg7IH1cbi5jbHAtZmluaXNoLWNoZWNre1xuICBiYWNrZ3JvdW5kOnZhcigtLWdyZWVuKTsgY29sb3I6I2ZmZjsgYm9yZGVyOm5vbmU7IGJvcmRlci1yYWRpdXM6MTBweDtcbiAgZm9udC1zaXplOjE2cHg7IGZvbnQtd2VpZ2h0OjcwMDsgcGFkZGluZzoxM3B4IDMycHg7IG1pbi1oZWlnaHQ6NDRweDtcbiAgYm94LXNoYWRvdzowIDEwcHggMjJweCAtOHB4IHJnYmEoMTYsMTg1LDEyOSwuNTUpO1xuICB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnMgZWFzZSwgYmFja2dyb3VuZCAuMnMgZWFzZTtcbn1cbi5jbHAtZmluaXNoLWNoZWNrOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTsgYmFja2dyb3VuZDojMGNhNjc4OyB9XG5cbi8qID09PT09PT09PT09PSBSRVNVTFRTID09PT09PT09PT09PSAqL1xuLmNscC1yZXN1bHRzeyBtYXJnaW4tdG9wOjMwcHg7IH1cbi5jbHAtcmVzdWx0cyBoMnsgZm9udC1zaXplOjI0cHg7IGZvbnQtd2VpZ2h0OjgwMDsgbGV0dGVyLXNwYWNpbmc6LS4wMWVtOyBtYXJnaW4tYm90dG9tOjE2cHg7IH1cbi5jbHAtcmVzLWdyaWR7IGRpc3BsYXk6Z3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOmF1dG8gMWZyOyBnYXA6MTZweDsgYWxpZ24taXRlbXM6c3RyZXRjaDsgfVxuLmNscC1jYXJke1xuICBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxNnB4OyBwYWRkaW5nOjIycHg7XG4gIGJveC1zaGFkb3c6MCAxMHB4IDMwcHggLTIwcHggcmdiYSgxNSwyMyw0MiwuMjUpLCAwIDJweCA4cHggLTZweCByZ2JhKDE1LDIzLDQyLC4wOCk7XG4gIHRyYW5zaXRpb246dHJhbnNmb3JtIC4yNXMgZWFzZSwgYm94LXNoYWRvdyAuMjVzIGVhc2U7XG59XG4uY2xwLWNhcmQ6aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpOyBib3gtc2hhZG93OjAgMTZweCAzNnB4IC0yMHB4IHJnYmEoMTUsMjMsNDIsLjMpOyB9XG4uY2xwLXJpbmctY2FyZHsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjhweDsgbWluLXdpZHRoOjIyMHB4OyB9XG4uY2xwLXJpbmctd3JhcHsgcG9zaXRpb246cmVsYXRpdmU7IHdpZHRoOjEzMnB4OyBoZWlnaHQ6MTMycHg7IH1cbi5jbHAtcmluZy13cmFwIHN2Z3sgdHJhbnNmb3JtOnJvdGF0ZSgtOTBkZWcpOyBkaXNwbGF5OmJsb2NrOyB9XG4uY2xwLXJpbmctbnVte1xuICBwb3NpdGlvbjphYnNvbHV0ZTsgaW5zZXQ6MDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47XG4gIGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgZm9udC13ZWlnaHQ6ODAwO1xufVxuLmNscC1yaW5nLW51bSBieyBmb250LXNpemU6MjhweDsgbGluZS1oZWlnaHQ6MTsgY29sb3I6dmFyKC0tYjkwMCk7IH1cbi5jbHAtcmluZy1udW0gc3BhbnsgZm9udC1zaXplOjEycHg7IGNvbG9yOnZhcigtLXN1YnRsZSk7IGZvbnQtd2VpZ2h0OjcwMDsgfVxuLmNscC1yaW5nLWNhcmQgaDN7IGZvbnQtc2l6ZToxNHB4OyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtd2VpZ2h0OjcwMDsgfVxuLmNscC1wYXJ0LWNoaXBzeyBkaXNwbGF5OmZsZXg7IGZsZXgtd3JhcDp3cmFwOyBnYXA6MTBweDsgbWFyZ2luLXRvcDoxMnB4OyB9XG4uY2xwLXBhcnQtY2hpcHtcbiAgYm9yZGVyLXJhZGl1czozMnB4OyBwYWRkaW5nOjhweCAxNnB4OyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NzAwO1xuICBiYWNrZ3JvdW5kOnZhcigtLWI1MCk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYjEwMCk7IGNvbG9yOnZhcigtLWI5MDApO1xufVxuLmNscC1wYXJ0LWNoaXAgYnsgZm9udC13ZWlnaHQ6ODAwOyB9XG4uY2xwLWNsYi1yb3d7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTRweDsgZmxleC13cmFwOndyYXA7IG1hcmdpbi10b3A6MTZweDtcbiAgcGFkZGluZzoxNHB4IDE2cHg7IGJvcmRlci1yYWRpdXM6MTBweDsgYmFja2dyb3VuZDp2YXIoLS1iNTApOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWIxMDApO1xufVxuLmNscC1jbGItYmFkZ2V7XG4gIGJhY2tncm91bmQ6dmFyKC0tY3JpbXNvbik7IGNvbG9yOiNmZmY7IGZvbnQtd2VpZ2h0OjgwMDsgZm9udC1zaXplOjE0cHg7XG4gIGJvcmRlci1yYWRpdXM6MTBweDsgcGFkZGluZzo4cHggMTZweDtcbn1cbi5jbHAtY2xiLXJvdyBweyBmb250LXNpemU6MTNweDsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXdlaWdodDo2MDA7IGZsZXg6MTsgbWluLXdpZHRoOjIwMHB4OyB9XG4uY2xwLXRyYW5zY3JpcHRzeyBtYXJnaW4tdG9wOjE2cHg7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBnYXA6MTBweDsgfVxuLmNscC10ci1jYXJkeyBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxNnB4OyBvdmVyZmxvdzpoaWRkZW47IH1cbi5jbHAtdHItaGVhZHtcbiAgd2lkdGg6MTAwJTsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOyBnYXA6MTBweDtcbiAgYmFja2dyb3VuZDp0cmFuc3BhcmVudDsgYm9yZGVyOm5vbmU7IHBhZGRpbmc6MTVweCAyMHB4OyB0ZXh0LWFsaWduOmxlZnQ7XG4gIGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo3MDA7IGNvbG9yOnZhcigtLXRleHQpOyBtaW4taGVpZ2h0OjQ4cHg7XG59XG4uY2xwLXRyLWhlYWQ6aG92ZXJ7IGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgfVxuLmNscC10ci1oZWFkIC5jbHAtdHItY2FyZXR7IGNvbG9yOnZhcigtLXN1YnRsZSk7IGZvbnQtc2l6ZToxMXB4OyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnMgZWFzZTsgfVxuLmNscC10ci1jYXJkLmNscC1vcGVuIC5jbHAtdHItY2FyZXR7IHRyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKTsgfVxuLmNscC10ci1ib2R5eyBkaXNwbGF5Om5vbmU7IHBhZGRpbmc6MCAyMHB4IDE4cHg7IGZvbnQtc2l6ZToxNHB4OyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtd2VpZ2h0OjUwMDsgbGluZS1oZWlnaHQ6MS43OyB9XG4uY2xwLXRyLWNhcmQuY2xwLW9wZW4gLmNscC10ci1ib2R5eyBkaXNwbGF5OmJsb2NrOyB9XG4uY2xwLXRyLXRvZG97IGNvbG9yOnZhcigtLW9yYW5nZSk7IGZvbnQtd2VpZ2h0OjcwMDsgZm9udC1zaXplOjEyLjVweDsgZGlzcGxheTpibG9jazsgbWFyZ2luLXRvcDo4cHg7IH1cblxuLyogc2Nyb2xsIHJldmVhbCAqL1xuLmNscC1yZXZ7IG9wYWNpdHk6MDsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTZweCk7IHRyYW5zaXRpb246b3BhY2l0eSAuNXMgZWFzZSwgdHJhbnNmb3JtIC41cyBlYXNlOyB9XG4uY2xwLXJldi5jbHAtaW57IG9wYWNpdHk6MTsgdHJhbnNmb3JtOm5vbmU7IH1cblxuLyogPT09PT09PT09PT09IFJFU1BPTlNJVkUgPT09PT09PT09PT09ICovXG5AbWVkaWEgKG1heC13aWR0aDo3MDBweCl7XG4gIC5jbHAtd3JhcHsgcGFkZGluZzoxMHB4IDEwcHggNDBweDsgfVxuICAuY2xwLWhlcm97IHBhZGRpbmc6MjhweCAyMnB4OyBib3JkZXItcmFkaXVzOjE2cHg7IH1cbiAgLmNscC1xeyBmb250LXNpemU6MTVweDsgfVxuICAuY2xwLWRkeyBtaW4taGVpZ2h0OjQwcHg7IH1cbiAgLmNscC1kZCAuY2xwLWRkLXRleHR7IG1heC13aWR0aDoxODBweDsgfVxuICAuY2xwLWJhcnsgZmxleC13cmFwOndyYXA7IH1cbiAgLmNscC1iYXItdGl0bGV7IGZsZXgtYmFzaXM6MTAwJTsgfVxuICAuY2xwLXEtcGFuZWx7IHBhZGRpbmc6MTZweCAxNHB4IDI2cHg7IH1cbiAgLmNscC1pbnRyby1ib2R5eyBwYWRkaW5nLWxlZnQ6MjBweDsgfVxuICAuY2xwLXJlcy1ncmlkeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyOyB9XG4gIC5jbHAtbWVkaWEtY2FyZHsgcGFkZGluZzoxNnB4OyB9XG59XG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSl7XG4gIC5jbHAtd3JhcCAqLCAuY2xwLXdyYXAgKjo6YmVmb3JlLCAuY2xwLXdyYXAgKjo6YWZ0ZXJ7XG4gICAgYW5pbWF0aW9uOm5vbmUgIWltcG9ydGFudDsgdHJhbnNpdGlvbjpub25lICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmNscC1yZXZ7IG9wYWNpdHk6MTsgdHJhbnNmb3JtOm5vbmU7IH1cbn1cblxuLmNscC1hdXJvcmEgc3BhbntmaWx0ZXI6Ymx1cigzNnB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX1cbi5jbHAtaGVyby1zaGltbWVye3dpbGwtY2hhbmdlOmJhY2tncm91bmQtcG9zaXRpb259XG4iO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocyk7fSkoKTsKCid1c2Ugc3RyaWN0JzsKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIFRFU1RfREFUQSBcdTIwMTQgc3dhcCBpbiBuZXcgc2V0cyBoZXJlIHdpdGhvdXQgdG91Y2hpbmcgbWFya3VwLgogICBTaGFwZTogeyBwYXJ0czpbeyBuYW1lLCBoZWFkZXJUaXRsZSwgaW50cm9UaXRsZSwgaW50cm9CdWxsZXRzW10sCiAgICAgICAgICAgIHFJbnN0cnVjdGlvbiwgdHJhbnNjcmlwdCwgc2VjdGlvbnM6W3sgbGFiZWwsIG1lZGlhVHlwZSwKICAgICAgICAgICAgZHVyYXRpb24oc2VjKSwgdGltZU1pbnV0ZXMsIG1lZGlhSW5zdHJ1Y3Rpb24sCiAgICAgICAgICAgIHF1ZXN0aW9uczpbeyBuLCBzdGVtLCBvcHRpb25zWzRdLCBrZXkoMS00KSwgdG9kbz8gfV0gfV0gfV0gfQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KdmFyIFRFU1RfREFUQSA9IHsidGVzdExhYmVsIjoiU2V0IDcgXHUyMDEzIFByYWN0aWNlIFRlc3QgMSIsInNldE5vIjo3LCJ0ZXN0Tm8iOjEsInBhcnRzIjpbeyJuYW1lIjoiUGFydCAxOiBMaXN0ZW5pbmcgdG8gUHJvYmxlbSBTb2x2aW5nIiwiaGVhZGVyVGl0bGUiOiJTZXQgNyBcdTIwMTMgUHJhY3RpY2UgVGVzdCAxIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCAxOiBMaXN0ZW5pbmcgdG8gUHJvYmxlbSBTb2x2aW5nIiwiaW50cm9UaXRsZSI6IllvdSB3aWxsIGhlYXIgYSBjb252ZXJzYXRpb24gYmV0d2VlbiB0d28gcGVvcGxlIGF0IGEgcmV0YWlsIHN0b3JlLiIsImludHJvQnVsbGV0cyI6WyJUaGUgbWFuIHdvcmtzIHRoZXJlOyB0aGUgd29tYW4gaXMgYSBjdXN0b21lci4iLCJZb3Ugd2lsbCBoZWFyIHRoZSBjb252ZXJzYXRpb24gb25seSBvbmNlLiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGFuc3dlciBlYWNoIHF1ZXN0aW9uIGZyb20gdGhlIGRyb3AtZG93biBtZW51LiIsInRyYW5zY3JpcHQiOiJZb3Ugd2lsbCBoZWFyIGEgY29udmVyc2F0aW9uIGJldHdlZW4gdHdvIHBlb3BsZSBhdCBhIHJldGFpbCBzdG9yZS4gVGhlIG1hbiB3b3JrcyB0aGVyZTtcbnRoZSB3b21hbiBpcyBhIGN1c3RvbWVyLlxuXG5TZWN0aW9uIDE6XG5NQU46IEhpLCBob3cgY2FuIEkgaGVscCB5b3UgdG9kYXk\/XG5XT01BTjogICAgICAgSSBqdXN0IHJlbnRlZCBhIHN0dWRpbyBhcGFydG1lbnQsIGFuZCBJXHUyMDE5ZCBsaWtlIHRvIHBhaW50IHRoZSByb29tLlxuTUFOOiBPaCwgeW91ciBsYW5kbG9yZCB3aWxsIGxldCB5b3UgZG8gdGhhdD9cbldPTUFOOiAgICAgICBFeGN1c2UgbWU\/XG5NQU46IFdoZW4gbXkgYnJvdGhlciBtb3ZlZCBpbnRvIGEgcmVudGFsIGFwYXJ0bWVudCwgaGUgd2FudGVkIHRvIHJlcGFpbnQgdGhlIHBsYWNlXG50b28sIGJ1dCBoZSBoYWQgdG8gZ2V0IHBlcm1pc3Npb24gZnJvbSBoaXMgbGFuZGxvcmQgZmlyc3QuIFRoZSBnb29kIHRoaW5nIHdhcyB0aGF0IHRoZVxubGFuZGxvcmQgcGFpZCBmb3IgaXQuIFVzdWFsbHksIHRoZXkncmUgcmVzcG9uc2libGUgZm9yIG1haW50ZW5hbmNlIGFuZCByZXBhaXJzLlxuV09NQU46ICAgICAgIE9oLCBJIGRpZG5cdTIwMTl0IGtub3cgdGhhdC4gSSBndWVzcyBJXHUyMDE5ZCBiZXR0ZXIgYXNrIGZpcnN0IHRoZW4uXG5NQU46IE1pZ2h0IGJlIGEgZ29vZCBpZGVhLiBJcyB0aGVyZSBhbnl0aGluZyBpbiB0aGUgYXBhcnRtZW50IHRoYXQgeW91IHdhbnQgdGhlIHBhaW50IHRvXG5tYXRjaD8gWW91IGNvdWxkIGFsd2F5cyBicmluZyBpbiBhIGNoYWlyLCBidXQgYSBjdXNoaW9uIHdvdWxkIGJlIGVhc2llciFcbldPTUFOOiBBY3R1YWxseSwgSVx1MjAxOWQgbGlrZSB0aGUgcGFpbnQgdG8gbWF0Y2ggdGhlIGN1cnRhaW5zLiBNeSBncmFuZG1vdGhlciBtYWRlXG50aGVtLCBzbyBJIGRvblx1MjAxOXQgd2FudCB0byByZXBsYWNlIHRoZW0uIEdyZWF0IHN1Z2dlc3Rpb24hIFRoYW5rcyFcbk5vdyBhbnN3ZXIgcXVlc3Rpb25zIDEtMy5cbldoeSBkb2VzIHRoZSB3b21hbiBnbyB0byB0aGUgc3RvcmU\/XG5XaG8gaXMgcHJvYmFibHkgcmVzcG9uc2libGUgZm9yIG1haW50ZW5hbmNlIGFuZCByZXBhaXJzP1xuV2hhdCB3aWxsIHRoZSB3b21hbiBsaWtlbHkgYnJpbmcgaWYgc2hlIHJldHVybnM\/XG5TZWN0aW9uIDI6XG5NQU46IFlvdVx1MjAxOXJlIGJhY2shIFdpdGggY3VydGFpbnMhIE9oLCBJIGNhbiBzZWUgd2h5IHlvdSBkb25cdTIwMTl0IHdhbnQgdG8gcmVwbGFjZSB0aGVtIVxuV09NQU46ICAgICAgIERvIHlvdSB0aGluayB3ZSBjYW4gbWF0Y2ggdGhpcyBzaGFkZSBvZiBibHVlP1xuTUFOOiBZZXMsIGJ1dCBhcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZG8gdGhhdD8gSWYgdGhlIHdhbGxzIGFyZSB0aGUgc2FtZSBjb2xvdXIsIHlvdVxud29uXHUyMDE5dCByZWFsbHkgbm90aWNlIHRoZSBjdXJ0YWlucy5cblxmV09NQU46ICAgICAgICBPaCwgZ29vZCBwb2ludC4gU28gLiAuIC4gdW0gLiAuIC4gaG93IGFib3V0IFRIQVQgY29sb3VyP1xuTUFOOiBUaGUgbGlnaHQgZ3JlZW4\/IEkgd2FzIHRoaW5raW5nIHlvdSBtaWdodCB3YW50IHdoaXRlIG9yIGJlaWdlLlxuV09NQU46IFVnaFx1MjAxNHRvbyBtdWNoIGxpa2UgbXkgcGFyZW50c1x1MjAxOSBob3VzZSEgTm8sIGFjdHVhbGx5LCB3aXRoIHRoZSBsaWdodCBncmVlblxuYW5kIGJsdWUsIHRoZSByb29tIHdpbGwgbG9vayBsaWtlIHRoZSBvY2VhbiwgbmVhciB3aGVyZSBJIHVzZWQgdG8gbGl2ZS4gSSBtaXNzIGl0IGEgbG90LCBob3dcbnRoZSBicmlnaHQgc3VuIG1hZGUgdGhlIHdhdGVyIGxvb2sgZGlmZmVyZW50IHNoYWRlcyBvZiBibHVlIC4gLiAuXG5NQU46IFRoZW4gdGhlIGxpZ2h0IGdyZWVuIGlzIGEgcGVyZmVjdCBjaG9pY2UhIE5vdyB5b3VcdTIwMTlsbCBhbHNvIG5lZWQgYSByb2xsZXIsIGEgcGFuLCBzb21lXG5tYXNraW5nIHRhcGUgZm9yIGFyb3VuZCB0aGUgd2luZG93cywgYW5kIGEgYnJ1c2guIFlvdSBjYW4gZ2V0IHRob3NlIHRvZGF5LiBEbyB5b3UgbmVlZFxuYSBkcm9wIGNsb3RoP1xuV09NQU46ICAgICAgICBXaGF0XHUyMDE5cyB0aGF0P1xuTUFOOiBJdFx1MjAxOXMgYSBiaWcgcGllY2Ugb2YgY2xvdGggdG8gY292ZXIgdGhlIGZsb29yLiBZb3VyIGxhbmRsb3JkIG1pZ2h0IGhhdmUgb25lIHRob3VnaC5cbkhlIG1pZ2h0IGFsc28gaGF2ZSBhIGxhZGRlciwgc28gbGV0XHUyMDE5cyB3YWl0IHVudGlsIGxhdGVyIGZvciB0aGF0IGFzIHdlbGwuXG5Ob3cgYW5zd2VyIHF1ZXN0aW9ucyA0LTYuXG5XaGF0IGRvZXMgdGhlIG1hbiB0aGluayBhYm91dCB0aGUgY3VydGFpbnM\/XG5XaGF0IGRvZXMgdGhlIHdvbWFuIHRoaW5rIGFib3V0IGhlciBwYXJlbnRzXHUyMDE5IGhvdXNlP1xuV2hhdCBtaWdodCB0aGUgd29tYW4gcHVyY2hhc2UgbmV4dCB0aW1lP1xuU2VjdGlvbiAzOlxuV09NQU46IEhpLCBteSBsYW5kbG9yZCBzYXlzIGhlIGRvZXMgaGF2ZSBhIGRyb3AgY2xvdGgsIGJ1dCBoZSBkb2Vzblx1MjAxOXQgaGF2ZSBhIHN0ZXBcbmxhZGRlci4gQWN0dWFsbHksIGhlIGRvZXMsIGJ1dCBpdCBmZWxsIGFwYXJ0LiBTbyBoZSB0b2xkIG1lIHRvIGJ1eSBhIG5ldyBvbmUsIGFuZCBoZVx1MjAxOWxsIHBheVxuZm9yIGl0LiBIZSBzYXlzIGhlIGhhcyBhbiBhY2NvdW50IGhlcmVcdTIwMTRBbnRob255IERpbGxvbj9cbk1BTjogT2theSAuIC4gLiBsZXRcdTIwMTlzIHNlZSAuIC4gLiB5ZXMsIGhlIGRvZXMgaGF2ZSBhbiBhY2NvdW50LCBhbmQgaXRcdTIwMTlzIGFsbCBwYWlkIHVwLiBHb29kLiBJXHUyMDE5bGxcbmhhdmUgb25lIG9mIG91ciBzdGFuZGFyZCBzaXgtZm9vdCBzdGVwIGxhZGRlcnMgZGVsaXZlcmVkIHRvbW9ycm93ISBTbyB5b3VcdTIwMTlyZSBhbGwgc2V0IVxuV09NQU46IEdyZWF0ISBIZVx1MjAxOXMgaGFwcHkgdGhhdCBJXHUyMDE5bSBnb2luZyB0byBwYWludCB0aGUgcm9vbS4gSGUgZXZlbiBzYWlkIGhlXHUyMDE5ZFxuY29tZSBoZWxwIGlmIGl0XHUyMDE5cyB0b28gZGlmZmljdWx0IHRvIGRvIG9uIG15IG93bi5cbk1BTjogSSB0aGluayBoZSBzaG91bGQsIHNpbmNlIHRlY2huaWNhbGx5IHlvdVx1MjAxOXJlIGRvaW5nIGhpcyBqb2IgZm9yIGhpbSFcbk5vdyBhbnN3ZXIgcXVlc3Rpb25zIDctOC5cbldoeSBkb2VzIGhlciBsYW5kbG9yZCB3YW50IHRvIGJ1eSBhIG5ldyBsYWRkZXI\/XG5Ib3cgZG9lcyB0aGUgaW50ZXJhY3Rpb24gZW5kPyIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IkNvbnZlcnNhdGlvbiBcdTIwMTQgU2VjdGlvbiAxIiwiZHVyYXRpb24iOjc1LCJtZWRpYVR5cGUiOiJhdWRpbyIsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiIsInRpbWVNaW51dGVzIjoyLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJXaHkgZG9lcyB0aGUgd29tYW4gZ28gdG8gdGhlIHN0b3JlPyIsIm9wdGlvbnMiOlsiU2hlIHdhbnRzIHRvIHJlZGVjb3JhdGUgaGVyIG5ldyBwbGFjZS4iLCJTaGUgbmVlZHMgYWR2aWNlIGFib3V0IGhlciBsYW5kbG9yZC4iLCJTaGUgd2FudHMgdG8gcmV0dXJuIHNvbWUgcGFpbnQuIiwiU2hlIGlzIGJ1eWluZyBuZXcgY3VydGFpbnMuIl0sImtleSI6MCwicmVjb24iOnRydWV9LHsibiI6Miwic3RlbSI6IldobyBpcyBwcm9iYWJseSByZXNwb25zaWJsZSBmb3IgbWFpbnRlbmFuY2UgYW5kIHJlcGFpcnM\/Iiwib3B0aW9ucyI6WyJ0aGUgd29tYW4gaGVyc2VsZiIsInRoZSB3b21hblx1MjAxOXMgbGFuZGxvcmQiLCJ0aGUgc3RvcmVcdTIwMTlzIHN0YWZmIiwidGhlIHdvbWFuXHUyMDE5cyBncmFuZG1vdGhlciJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjMsInN0ZW0iOiJXaGF0IHdpbGwgdGhlIHdvbWFuIGxpa2VseSBicmluZyBpZiBzaGUgcmV0dXJucz8iLCJvcHRpb25zIjpbInNvbWUgcGFpbnQgc2FtcGxlcyIsImEgY2hhaXIiLCJzb21lIGN1cnRhaW5zIiwiYSBjdXNoaW9uIl0sImtleSI6MiwicmVjb24iOnRydWV9XX0seyJsYWJlbCI6IkNvbnZlcnNhdGlvbiBcdTIwMTQgU2VjdGlvbiAyIiwiZHVyYXRpb24iOjY3LCJtZWRpYVR5cGUiOiJhdWRpbyIsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIG5leHQgcGFydCBvZiB0aGUgY29udmVyc2F0aW9uLiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4iLCJ0aW1lTWludXRlcyI6MiwicXVlc3Rpb25zIjpbeyJuIjo0LCJzdGVtIjoiV2hhdCBkb2VzIHRoZSBtYW4gdGhpbmsgYWJvdXQgdGhlIGN1cnRhaW5zPyIsIm9wdGlvbnMiOlsiSGUgbGlrZXMgdGhlbSB2ZXJ5IG11Y2guIiwiSGUgdGhpbmtzIHRoZXkgYXJlIHRvbyBvbGQuIiwiSGUgd2FudHMgdG8gcmVwbGFjZSB0aGVtLiIsIkhlIGZpbmRzIHRoZW0gdG9vIGJyaWdodC4iXSwia2V5IjowLCJyZWNvbiI6dHJ1ZX0seyJuIjo1LCJzdGVtIjoiV2hhdCBkb2VzIHRoZSB3b21hbiB0aGluayBhYm91dCBoZXIgcGFyZW50c1x1MjAxOSBob3VzZT8iLCJvcHRpb25zIjpbIlNoZSBtaXNzZXMgbGl2aW5nIHRoZXJlLiIsIlNoZSBkaXNsaWtlcyB0aGUgY29sb3VyIG9mIGl0cyB3YWxscy4iLCJTaGUgdGhpbmtzIGl0IGlzIHRvbyBzbWFsbC4iLCJTaGUgYWRtaXJlcyBpdHMgZGVjb3JhdGlvbi4iXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX0seyJuIjo2LCJzdGVtIjoiV2hhdCBtaWdodCB0aGUgd29tYW4gcHVyY2hhc2UgbmV4dCB0aW1lPyIsIm9wdGlvbnMiOlsiQSBkcm9wIGNsb3RoLiIsIkEgcGFpbnQgcm9sbGVyLiIsIkEgc3RlcCBsYWRkZXIuIiwiU29tZSBtYXNraW5nIHRhcGUuIl0sImtleSI6MiwicmVjb24iOnRydWV9XX0seyJsYWJlbCI6IkNvbnZlcnNhdGlvbiBcdTIwMTQgU2VjdGlvbiAzIiwiZHVyYXRpb24iOjQzLCJtZWRpYVR5cGUiOiJhdWRpbyIsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZpbmFsIHBhcnQgb2YgdGhlIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwidGltZU1pbnV0ZXMiOjIsInF1ZXN0aW9ucyI6W3sibiI6Nywic3RlbSI6IldoeSBkb2VzIGhlciBsYW5kbG9yZCB3YW50IHRvIGJ1eSBhIG5ldyBsYWRkZXI\/Iiwib3B0aW9ucyI6WyJIaXMgbGFkZGVyIGlzIGJyb2tlbi4iLCJIZSBsZW50IGhpcyBsYWRkZXIgdG8gc29tZW9uZS4iLCJIZSBuZWVkcyBhIHRhbGxlciBsYWRkZXIuIiwiSGUgbmV2ZXIgb3duZWQgYSBsYWRkZXIuIl0sImtleSI6MCwicmVjb24iOnRydWV9LHsibiI6OCwic3RlbSI6IkhvdyBkb2VzIHRoZSBpbnRlcmFjdGlvbiBlbmQ\/Iiwib3B0aW9ucyI6WyJTaGUgZGVjaWRlcyBub3QgdG8gcGFpbnQgYWZ0ZXIgYWxsLiIsIlNoZSBzdGlsbCBuZWVkcyB0byBidXkgbW9yZSBpdGVtcy4iLCJTaGUgbm93IGhhcyBldmVyeXRoaW5nIHRoYXQgc2hlIG5lZWRzLiIsIlNoZSBhc2tzIHRoZSBsYW5kbG9yZCB0byBkbyB0aGUgd29yay4iXSwia2V5IjoyLCJyZWNvbiI6dHJ1ZX1dfV19LHsibmFtZSI6IlBhcnQgMjogTGlzdGVuaW5nIHRvIGEgRGFpbHkgTGlmZSBDb252ZXJzYXRpb24iLCJoZWFkZXJUaXRsZSI6IlNldCA3IFx1MjAxMyBQcmFjdGljZSBUZXN0IDEgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDI6IExpc3RlbmluZyB0byBhIERhaWx5IExpZmUgQ29udmVyc2F0aW9uIiwiaW50cm9UaXRsZSI6IllvdSB3aWxsIGhlYXIgYSBjb252ZXJzYXRpb24gYmV0d2VlbiBhIG1hbiBhbmQgYSB3b21hbiBhYm91dCBtYWtpbmcgcGxhbnMgZm9yIGx1bmNoLiIsImludHJvQnVsbGV0cyI6WyJZb3Ugd2lsbCBoZWFyIHRoZSBjb252ZXJzYXRpb24gb25seSBvbmNlLiIsIlRoZW4gYW5zd2VyIHRoZSBxdWVzdGlvbnMuIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24gZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUuIiwidHJhbnNjcmlwdCI6IllvdSB3aWxsIGhlYXIgYSBjb252ZXJzYXRpb24gYmV0d2VlbiBhIG1hbiBhbmQgYSB3b21hbiBhYm91dCBtYWtpbmcgcGxhbnMgZm9yIGx1bmNoLlxuXG5NQU46IEhleSBBbGV5YSwgaG93XHUyMDE5cyB5b3VyIG1vcm5pbmcgZ29pbmc\/XG5XT01BTjogTm90IGJhZC4gSVx1MjAxOW0ganVzdCBmaW5pc2hpbmcgdGhpcyBtb250aGx5IHJlcG9ydC4gVGhlcmVcdTIwMTlzIHNvIG11Y2hcbmluZm9ybWF0aW9uIHRvIGdhdGhlci5cbk1BTjogV2VsbCwgYSBidW5jaCBvZiB1cyBmcm9tIG91ciBkZXBhcnRtZW50IGFyZSBnb2luZyBvdXQgZm9yIGx1bmNoIHRvZGF5LiBXaHkgZG9uXHUyMDE5dFxueW91IHRha2UgYSBicmVhayBhbmQgY29tZSB3aXRoIHVzPyBJdFx1MjAxOWxsIGRvIHlvdSBnb29kIHRvIGdldCBvdXQgb2YgdGhlIG9mZmljZSBmb3IgYSBiaXQuXG5XT01BTjogICAgICAgT2gsIHRoYW5rIHlvdS4gVGhhdCBzb3VuZHMgd29uZGVyZnVsLiBXaGVyZSBhcmUgd2UgZ29pbmc\/XG5NQU46IERvIHlvdSBsaWtlIEl0YWxpYW4gZm9vZD8gVGhlcmVcdTIwMTlzIGEgcmVhbGx5IGdyZWF0IHBsYWNlLCBNYXJpb1x1MjAxOXMsIGEgY291cGxlIG9mIGJsb2Nrc1xuZnJvbSBoZXJlLiBUaGV5IGhhdmUgdGhlIGJlc3QgcGFzdGEgaW4gdG93biwgYW5kIHRoZWlyIGdhcmxpYyBicmVhZCBpcyBhbWF6aW5nLlxuV09NQU46IElcdTIwMTl2ZSBuZXZlciBiZWVuIHRvIGFuIEl0YWxpYW4gcmVzdGF1cmFudC4gSSBkb25cdTIwMTl0IGVhdCBvdXQgdmVyeSBvZnRlbi4gVGhlXG5jdXN0b21zIGFuZCBmb29kIGhlcmUgYXJlIHF1aXRlIGRpZmZlcmVudCBmcm9tIG15IGhvbWUgY291bnRyeS4gVGhhbmsgeW91IHNvIG11Y2ggZm9yXG5pbnZpdGluZyBtZS4gSSBsb3ZlIHRyeWluZyBuZXcgdGhpbmdzLlxuTUFOOiBJIGhvcGUgeW91IGxpa2UgaXQuIE91ciB0ZWFtIGVhdHMgdGhlcmUgYXQgbGVhc3Qgb25jZSBhIG1vbnRoLiBUaGVyZVx1MjAxOXMgYWxzbyBhIGdyZWF0XG5zdXNoaSBwbGFjZSBuZWFyYnkgdGhhdCB3ZSBnbyB0byBhbGwgdGhlIHRpbWUuIFlvdVx1MjAxOWxsIGhhdmUgdG8gY29tZSB3aXRoIHVzIG5leHQgdGltZS5cbldPTUFOOiBJdFx1MjAxOXMgc28gaW50ZXJlc3RpbmcgdGhhdCB5b3UgZ28gdG8gYSByZXN0YXVyYW50IHNvIG9mdGVuLiBUaGUgYm9zcyBpcyBzbyBraW5kLlxuTXkgZm9ybWVyIGJvc3MgbmV2ZXIgaW52aXRlZCB1cyBvdXQgZm9yIG1lYWxzLlxuTUFOOiBKdXN0IHNvIHlvdSBrbm93LCBldmVyeWJvZHkgcGF5cyBmb3IgdGhlaXIgb3duIG1lYWwuIFRoZSBjb21wYW55IHdvdWxkIGdvXG5iYW5rcnVwdCBpZiB0aGV5IHBhaWQgZm9yIGFsbCBvZiBvdXIgbHVuY2hlcyBhbGwgdGhlIHRpbWUhXG5XT01BTjogU29ycnksIEkgZGlkblx1MjAxOXQga25vdy4gSSB0aG91Z2h0IHdoZW4geW91IGludml0ZWQgbWUgdGhhdCBpdCB3YXMgcGFpZCBmb3IuIEluXG5teSBob21lIGNvdW50cnksIHRoZSBib3NzIHBheXMsIG9yIHRoZSBwZXJzb24gd2hvIGludml0ZXMgcGF5cy4gSVx1MjAxOW0gYSBsaXR0bGUgZW1iYXJyYXNzZWRcbm5vdyAuIC4gLlxuTUFOOiBEb25cdTIwMTl0IHdvcnJ5IGFib3V0IGl0LiBJbiBDYW5hZGEsIGl0XHUyMDE5cyBwcmV0dHkgY2FzdWFsLiBXZSBhbHdheXMgcGF5IGZvciBvdXJzZWx2ZXNcbnVubGVzcyBzb21lb25lIHNwZWNpZmljYWxseSBzYXlzIHRoZXlcdTIwMTlsbCB0cmVhdCB5b3UsIGFuZCB0aGF0IGRvZXNuXHUyMDE5dCBoYXBwZW4gdmVyeSBvZnRlbi5cbk1heWJlIG9uIHlvdXIgYmlydGhkYXksIGJ1dCB0aGF0XHUyMDE5cyBhYm91dCBpdC5cbldPTUFOOiBJXHUyMDE5bSBzbyBnbGFkIHlvdSB0b2xkIG1lLiBJIHdvdWxkIGhhdmUgZmVsdCByZWFsbHkgYmFkIGlmIEkgaGFkIGVhdGVuIGFuZCB0aGVuXG5ub3QgcGFpZC4gSXRcdTIwMTlzIHZlcnkgZGlmZmVyZW50LCBidXQgSSB3aWxsIGdldCB1c2VkIHRvIGl0LlxuTm93IGFuc3dlciBxdWVzdGlvbnMgMS01LlxuXG5XaGVyZSBhcmUgdGhlIG1hbiBhbmQgdGhlIHdvbWFuP1xuV2h5IGlzIHRoZSB3b21hbiBpbnZpdGVkIG91dCB0byBsdW5jaD9cblxmV2hhdCBpcyB0aGUgd29tYW5cdTIwMTlzIG9waW5pb24gb2YgSXRhbGlhbiBmb29kP1xuV2h5IGRvZXMgdGhlIHdvbWFuIHRoaW5rIHRoZSBib3NzIHdpbGwgcGF5IGZvciBsdW5jaD9cbldoYXQgaXMgdGhlIHdvbWFuXHUyMDE5cyBkZWNpc2lvbiBhYm91dCBnb2luZyBmb3IgbHVuY2g\/Iiwic2VjdGlvbnMiOlt7ImxhYmVsIjoiQ29udmVyc2F0aW9uIiwiZHVyYXRpb24iOjE0NCwibWVkaWFUeXBlIjoiYXVkaW8iLCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBmb2xsb3dpbmcgY29udmVyc2F0aW9uLiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4iLCJ0aW1lTWludXRlcyI6MiwicXVlc3Rpb25zIjpbeyJuIjoxLCJzdGVtIjoiV2hlcmUgYXJlIHRoZSBtYW4gYW5kIHRoZSB3b21hbj8iLCJvcHRpb25zIjpbImF0IGEgcmVzdGF1cmFudCIsImF0IHRoZSB3b21hblx1MjAxOXMgZGVzayIsImluIHRoZSBsdW5jaHJvb20iLCJvbiB0aGUgc3RyZWV0Il0sImtleSI6MSwicmVjb24iOnRydWV9LHsibiI6Miwic3RlbSI6IldoeSBpcyB0aGUgd29tYW4gaW52aXRlZCBvdXQgdG8gbHVuY2g\/Iiwib3B0aW9ucyI6WyJJdCBpcyBoZXIgYmlydGhkYXkuIiwiU2hlIGlzIHBhcnQgb2YgdGhlIHRlYW0uIiwiU2hlIGlzIGEgbmV3IGNsaWVudC4iLCJTaGUgaW52aXRlZCB0aGUgb3RoZXJzIGZpcnN0LiJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjMsInN0ZW0iOiJXaGF0IGlzIHRoZSB3b21hblx1MjAxOXMgb3BpbmlvbiBvZiBJdGFsaWFuIGZvb2Q\/Iiwib3B0aW9ucyI6WyJTaGUgZGlzbGlrZXMgSXRhbGlhbiBmb29kLiIsIlNoZSBlYXRzIGl0IHZlcnkgb2Z0ZW4uIiwiU2hlIGhhcyBuZXZlciBlYXRlbiBJdGFsaWFuIGZvb2QuIiwiU2hlIHByZWZlcnMgc3VzaGkgdG8gcGFzdGEuIl0sImtleSI6MiwicmVjb24iOnRydWV9LHsibiI6NCwic3RlbSI6IldoeSBkb2VzIHRoZSB3b21hbiB0aGluayB0aGUgYm9zcyB3aWxsIHBheSBmb3IgbHVuY2g\/Iiwib3B0aW9ucyI6WyJUaGUgbWFuIHRvbGQgaGVyIGl0IHdhcyBmcmVlLiIsIkl0XHUyMDE5cyB0aGUgdHJhZGl0aW9uIHRoYXQgc2hlIGtub3dzLiIsIkl0IGlzIGEgc3BlY2lhbCBvY2Nhc2lvbi4iLCJUaGUgY29tcGFueSBhbHdheXMgcGF5cy4iXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX0seyJuIjo1LCJzdGVtIjoiV2hhdCBpcyB0aGUgd29tYW5cdTIwMTlzIGRlY2lzaW9uIGFib3V0IGdvaW5nIGZvciBsdW5jaD8iLCJvcHRpb25zIjpbIlNoZSB3aWxsIGpvaW4gdGhlbSB0b2RheS4iLCJTaGUgd2lsbCBnbyBuZXh0IHRpbWUgaW5zdGVhZC4iLCJTaGUgd2lsbCBmaW5pc2ggaGVyIHJlcG9ydCBmaXJzdC4iLCJTaGUgZGVjaWRlcyBub3QgdG8gZ28uIl0sImtleSI6MCwicmVjb24iOnRydWV9XX1dfSx7Im5hbWUiOiJQYXJ0IDM6IExpc3RlbmluZyBmb3IgSW5mb3JtYXRpb24iLCJoZWFkZXJUaXRsZSI6IlNldCA3IFx1MjAxMyBQcmFjdGljZSBUZXN0IDEgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDM6IExpc3RlbmluZyBmb3IgSW5mb3JtYXRpb24iLCJpbnRyb1RpdGxlIjoiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiB0aGF0IHRha2VzIHBsYWNlIGluIGEgd29tYW5cdTIwMTlzIGhvbWUuIiwiaW50cm9CdWxsZXRzIjpbIllvdSB3aWxsIGhlYXIgdGhlIGNvbnZlcnNhdGlvbiBvbmx5IG9uY2UuIiwiVGhlbiBhbnN3ZXIgdGhlIHF1ZXN0aW9ucy4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbiBmcm9tIHRoZSBkcm9wLWRvd24gbWVudS4iLCJ0cmFuc2NyaXB0IjoiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiB0aGF0IHRha2VzIHBsYWNlIGluIGEgd29tYW4ncyBob21lLlxuXG5XT01BTjogSGkgSGFycnksIHRoYW5rcyBmb3IgY29taW5nIGJ5LiBZb3VcdTIwMTl2ZSBkb25lIGdyZWF0IHdvcmsgZm9yIHVzIGJlZm9yZSwgYW5kXG5ub3cgd2UgaGF2ZSBhIGZldyBtb3JlIGpvYnMgd2VcdTIwMTlkIGxpa2UgeW91IHRvIGRvOiBwYWludGluZyBhIHdhbGwsIHJlcGxhY2luZyBmbG9vciB0aWxlcyxcbmFuZCBjaGFuZ2luZyBjdXBib2FyZCBoYW5kbGVzLiBXaGF0IGRvIHlvdSB0aGluaz9cbk1BTjogU291bmRzIGdvb2QuIExldFx1MjAxOXMgc3RhcnQgd2l0aCB0aGUgdGlsZXMuIFdoZXJlIGFyZSB0aGV5IGdvaW5nP1xuV09NQU46IEluIHRoZSBraXRjaGVuLiBXZSBnb3QgYSByZWFsbHkgZ29vZCBkZWFsIG9uIHRoZXNlIHBlZWwtYW5kLXN0aWNrIG9uZXMuIElcbmxvdmUgdGhlIGNvbG91ciEgRG8geW91IHRoaW5rIHRoZXNlIHdpbGwgd29yayBvbiB0aGUga2l0Y2hlbiBmbG9vcj9cbk1BTjogVGhleVx1MjAxOXJlIGdvb2QgcXVhbGl0eSBhbmQgZHVyYWJsZSwgc28geW91IG1hZGUgYSBnb29kIGNob2ljZS4gV2hhdCBkb2VzIHRoZSBmbG9vclxuc3VyZmFjZSBsb29rIGxpa2U\/IENhbiBJIHNlZSBpdD9cbldPTUFOOiBTdXJlLCBmb2xsb3cgbWUuIFNlZSwgdGhlcmVcdTIwMTlzIHNvbWUgb2xkIHJpcHBlZCBmbG9vcmluZyBoZXJlLiBJIHdhcyBob3BpbmdcbnlvdSBjb3VsZCBqdXN0IHB1dCB0aGUgdGlsZXMgb24gdG9wIG9mIHRoZSBvbGQgZmxvb3IgaGVyZSwgYW5kIG1hdGNoIHRoZW0gd2l0aCB0aGUgcmVzdCBvZlxudGhlIGZsb29yLlxuTUFOOiBUaGF0XHUyMDE5cyBnb2luZyB0byBiZSBhIHByb2JsZW0uIElcdTIwMTlsbCBoYXZlIHRvIHJlbW92ZSB0aGF0IG9sZCBmbG9vcmluZywgb3IgdGhlIG5ldyB0aWxlc1xud29uXHUyMDE5dCBqb2luIHByb3Blcmx5IHdpdGggdGhlIHJlc3Qgb2YgdGhlIGZsb29yLiBUaGUga2l0Y2hlbiBmbG9vciBpc25cdTIwMTl0IHRoYXQgYmlnLiBXaHkgbm90XG5yZXBsYWNlIHRoZSB3aG9sZSBmbG9vciB3aXRoIHRoZXNlIG5ldyB0aWxlcz8gVGhlbiBpdCB3aWxsIGxvb2sgcmVhbGx5IHByb2Zlc3Npb25hbC4gSSB0aGlua1xueW91IGJvdWdodCBlbm91Z2ggdGlsZXMsIGJ1dCBJXHUyMDE5bGwgbWVhc3VyZSBsYXRlciB0byBjaGVjayB0aGF0IG91dC5cbldPTUFOOiAgICAgICAgT2gsIHdlIGRpZG5cdTIwMTl0IHRoaW5rIGFib3V0IHRoYXQuIFdoYXQgYSBnb29kIGlkZWEhXG5NQU46IE9rYXksIHNvIHdoYXQgZG8geW91IHdhbnQgbWUgdG8gcGFpbnQ\/XG5XT01BTjogSnVzdCB0aGlzIG9uZSB3YWxsIHdoZXJlIElcdTIwMTl2ZSBmaWxsZWQgdGhlIGhvbGVzLiBJIGxlYXJuZWQgaG93IHRvIGRvIHRoYXQgZnJvbVxubXkgZGFkIHdobyBlbmpveWVkIHJlcGFpcmluZyB3YWxscy4gRG8geW91IHRoaW5rIGl0IG5lZWRzIHRvIGJlIHNhbmRlZCBiZWZvcmUgeW91XG5wYWludD8gSVx1MjAxOW0gY29uY2VybmVkIGFib3V0IHRoZSBkdXN0IGJlY2F1c2UgSSBuZWVkIHRvIG1ha2UgZGlubmVyIGVhY2ggbmlnaHQuXG5NQU46IFllYWgsIGl0IGRlZmluaXRlbHkgbmVlZHMgc2FuZGluZy4gTXkgZWxlY3RyaWMgc2FuZGVyIGhhcyBhIGR1c3QgY2F0Y2hlciwgdGhvdWdoLlxuSGF2ZSB5b3UgYWxyZWFkeSBib3VnaHQgdGhlIHBhaW50P1xuXGZXT01BTjogWWVzLCB3ZSBwaWNrZWQgaXQgdXAgeWVzdGVyZGF5IHdoZW4gd2UgYm91Z2h0IHRoZSBoYW5kbGVzLiBUaGVzZSBhcmUgdGhlXG5uZXcgaGFuZGxlcyBmb3IgdGhlIGN1cGJvYXJkIGRvb3JzLiBUaGV5XHUyMDE5cmUgc28gcHJldHR5IHRoYXQgSSBqdXN0IGNvdWxkblx1MjAxOXQgcmVzaXN0IGJ1eWluZ1xudGhlbSEgV2lsbCB0aGV5IGZpdCB0aGVzZSBkb29ycyBPSz9cbk1BTjogWWVhaCwgdGhleVx1MjAxOWxsIGdvIG9uIGp1c3QgZmluZS4gT2theSwgdGhpcyBzaG91bGQgdGFrZSBtZSB0d28sIG1heWJlIHRocmVlIGRheXMuXG5XaGVuIHdvdWxkIHlvdSBsaWtlIG1lIHRvIHN0YXJ0P1xuV09NQU46ICAgICAgICBJcyB0b21vcnJvdyB0b28gc29vbj8gSVx1MjAxOWxsIGJlIHNvIGdsYWQgdG8gZmluYWxseSBoYXZlIHRoaXMgd29yayBkb25lIVxuTUFOOiBObyBwcm9ibGVtLiBJXHUyMDE5bGwganVzdCB0YWtlIHRob3NlIG1lYXN1cmVtZW50cyBhbmQgZHJhdyB1cCBhbiBlc3RpbWF0ZS4gSVx1MjAxOWxsIGdpdmUgaXRcbnRvIHlvdSBpbiBhYm91dCB0ZW4gbWludXRlcy5cbk5vdyBhbnN3ZXIgcXVlc3Rpb25zIDEtNi5cblxuV2h5IGlzIHRoZSBtYW4gdmlzaXRpbmcgdGhlIHdvbWFuP1xuV2hhdCBpcyB0aGUgd29tYW5cdTIwMTlzIHBsYW4\/XG5XaGF0IGRpZCB0aGUgd29tYW4gZG8gYnkgaGVyc2VsZj9cbldoeSBkb2VzIHRoZSBtYW4gc3VnZ2VzdCBwdXR0aW5nIG5ldyB0aWxlcyBvbiB0aGUgd2hvbGUga2l0Y2hlbiBmbG9vcj9cbldoYXQgaXMgdGhlIHdvbWFuIHdvcnJpZWQgYWJvdXQ\/XG5XaGVuIHdpbGwgdGhlIG1hbiBiZSBmaW5pc2hlZD8iLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJDb252ZXJzYXRpb24iLCJkdXJhdGlvbiI6MTYyLCJtZWRpYVR5cGUiOiJhdWRpbyIsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiIsInRpbWVNaW51dGVzIjoyLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJXaHkgaXMgdGhlIG1hbiB2aXNpdGluZyB0aGUgd29tYW4\/Iiwib3B0aW9ucyI6WyJ0byBzZWxsIGhlciBuZXcgZmxvb3IgdGlsZXMiLCJ0byBsZWFybiB3aGF0IHdvcmsgc2hlIHdhbnRzIGRvbmUiLCJ0byBkZWxpdmVyIHNvbWUgY3VwYm9hcmQgaGFuZGxlcyIsInRvIGluc3BlY3QgYSBjb21wbGV0ZWQgam9iIl0sImtleSI6MSwicmVjb24iOnRydWV9LHsibiI6Miwic3RlbSI6IldoYXQgaXMgdGhlIHdvbWFuXHUyMDE5cyBwbGFuPyIsIm9wdGlvbnMiOlsidG8gZG8gdGhlIHJlcGFpcnMgaGVyc2VsZiIsInRvIGhhdmUgdGhlIHdvcmsgY29tcGxldGVkIHNvb24iLCJ0byBzZWxsIGhlciBob21lIiwidG8gZ2V0IHNldmVyYWwgcHJpY2UgcXVvdGVzIl0sImtleSI6MSwicmVjb24iOnRydWV9LHsibiI6Mywic3RlbSI6IldoYXQgZGlkIHRoZSB3b21hbiBkbyBieSBoZXJzZWxmPyIsIm9wdGlvbnMiOlsicmVwYWlyZWQgdGhlIGRhbWFnZWQgd2FsbCIsInJlcGxhY2VkIHRoZSBmbG9vciB0aWxlcyIsInBhaW50ZWQgdGhlIGtpdGNoZW4iLCJpbnN0YWxsZWQgdGhlIGhhbmRsZXMiXSwia2V5IjowLCJyZWNvbiI6dHJ1ZX0seyJuIjo0LCJzdGVtIjoiV2h5IGRvZXMgdGhlIG1hbiBzdWdnZXN0IHB1dHRpbmcgbmV3IHRpbGVzIG9uIHRoZSB3aG9sZSBraXRjaGVuIGZsb29yPyIsIm9wdGlvbnMiOlsiSXQgd291bGQgYmUgY2hlYXBlciBvdmVyYWxsLiIsIlRoZSBuZXcgZmxvb3Igd291bGQgbG9vayBiZXR0ZXIuIiwiVGhlIG9sZCB0aWxlcyBhcmUgZGFuZ2Vyb3VzLiIsIlRoZXJlIGlzIG5vdCBlbm91Z2ggb2xkIGZsb29yaW5nLiJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjUsInN0ZW0iOiJXaGF0IGlzIHRoZSB3b21hbiB3b3JyaWVkIGFib3V0PyIsIm9wdGlvbnMiOlsidGhlIGNvc3Qgb2YgdGhlIG1hdGVyaWFscyIsInByZXBhcmluZyBtZWFscyBpbiBhIGRpcnR5IGFyZWEiLCJ0aGUgY29sb3VyIG9mIHRoZSBuZXcgdGlsZXMiLCJ0aGUgbm9pc2UgZnJvbSB0aGUgc2FuZGVyIl0sImtleSI6MSwicmVjb24iOnRydWV9LHsibiI6Niwic3RlbSI6IldoZW4gd2lsbCB0aGUgbWFuIGJlIGZpbmlzaGVkPyIsIm9wdGlvbnMiOlsid2l0aGluIG9uZSBkYXkiLCJ3aXRoaW4gb25lIHdlZWsiLCJ3aXRoaW4gb25lIG1vbnRoIiwiYnkgdGhhdCBldmVuaW5nIl0sImtleSI6MSwicmVjb24iOnRydWV9XX1dfSx7Im5hbWUiOiJQYXJ0IDQ6IExpc3RlbmluZyB0byBhIE5ld3MgSXRlbSIsImhlYWRlclRpdGxlIjoiU2V0IDcgXHUyMDEzIFByYWN0aWNlIFRlc3QgMSBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgNDogTGlzdGVuaW5nIHRvIGEgTmV3cyBJdGVtIiwiaW50cm9UaXRsZSI6IllvdSB3aWxsIGhlYXIgYSBuZXdzIHN0b3J5IGFib3V0IHRoZSBlZmZlY3Qgb2YgcmVjZW50IHN0b3JtcyBvbiBhIGNvbW11bml0eS4iLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciB0aGUgbmV3cyBpdGVtIG9ubHkgb25jZS4iLCJJdCBpcyBhYm91dCAxLjUgbWludXRlcyBsb25nLiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGNvbXBsZXRlIGVhY2ggc3RhdGVtZW50IGZyb20gdGhlIGRyb3AtZG93biBtZW51LiIsInRyYW5zY3JpcHQiOiJZb3Ugd2lsbCBoZWFyIGEgbmV3cyBzdG9yeSBhYm91dCB0aGUgZWZmZWN0IG9mIHJlY2VudCBzdG9ybXMgb24gYSBjb21tdW5pdHkuXG5cbk92ZXIgdGhlIHBhc3QgZmV3IHdlZWtzLCBzdG9ybXMgbmVhciBGcmVkZXJpY3RvbiBoYXZlIGRhbWFnZWQgbWFueSBob21lcyBhbmQgb3RoZXJcbnN0cnVjdHVyZXMuXG5cbk9uZSByZXNpZGVudCwgSmlsYSBBbWluaSwgaGFkIHJlY2VudGx5IGluc3RhbGxlZCBhIGxhcmdlIGNoaWxkcmVuXHUyMDE5cyBzbGlkZSBpbiBoZXIgZ2FyZGVuIHNvXG50aGF0IGhlciBzb24gYW5kIGRhdWdodGVyIGNvdWxkIHBsYXkgb3V0c2lkZS4gSmlsYSB3b2tlIHVwIGxhc3QgVHVlc2RheSBtb3JuaW5nIHRvXG5kaXNjb3ZlciB0aGF0IHRoZSByYWluIGFuZCBtdWQgaGFkIGNhcnJpZWQgaGVyIHNsaWRlIGRvd24gaGVyIGhpbGx5IGJhY2t5YXJkIGFuZCBpbnRvIHRoZVxubmVpZ2hib3VyaG9vZCBwYXJrLiBBZnRlciB0YWxraW5nIHRvIHRoZSB0b3duIGNvdW5jaWwsIEppbGEgZGlzY292ZXJlZCB0aGF0IHRoZSBjb3VuY2lsXG53YXMgYWxyZWFkeSBwbGFubmluZyBvbiBidXlpbmcgYSBuZXcgc2xpZGUgZm9yIHRoZSBwYXJrLiBUaGUgY291bmNpbCBzdWdnZXN0ZWQgdGhhdCBKaWxhXG5cZmxlYXZlIGhlciBzbGlkZSBpbiB0aGUgcGFyaywgYW5kIHRoZXkgb2ZmZXJlZCB0byByZXBsYWNlIEppbGFcdTIwMTlzIHNsaWRlIGF0IHRoZSBjb3VuY2lsXHUyMDE5c1xuZXhwZW5zZS4gSmlsYSBhZ3JlZWQuXG5cblRocmVlIG5pZ2h0cyBsYXRlciwgYW5vdGhlciB0aHVuZGVyc3Rvcm0ga25vY2tlZCBkb3duIGFuIG9sZCBvYWsgdHJlZSBpbiB0aGUgc2FtZSBwYXJrLlxuVGhlIHRyZWUgZmVsbCBkaXJlY3RseSBvbiB0aGUgc2xpZGUsIGNydXNoaW5nIGl0IGJleW9uZCByZXBhaXIuIFRoZSB0b3duc3Blb3BsZSBoYXZlXG5kZWNpZGVkIHRvIG1ha2UgdGhlIGJlc3Qgb2YgdGhlIHNpdHVhdGlvbi4gTGVkIGJ5IGxvY2FsIGFydGlzdCBhbmQgd29vZCBjYXJ2ZXIgRWRkeVxuR2FsZW4sIGEgdGVhbSBoYXMgc3RhcnRlZCBhIHByb2plY3QgdG8gYnVpbGQgYSBuZXcgY2hpbGRyZW5cdTIwMTlzIGNsaW1iaW5nIHN0cnVjdHVyZSBpbiB0aGVcbnBhcmsgdXNpbmcgd29vZCBmcm9tIHRoZSBmYWxsZW4gb2FrIHRyZWUuIFdoZW4gdGhlIHByb2plY3QgaXMgY29tcGxldGVkLCB0aGVzZSB0ZXJyaWJsZVxuc3Rvcm1zIHdpbGwgaGF2ZSBiZW5lZml0dGVkIGV2ZXJ5b25lLiIsInNlY3Rpb25zIjpbeyJsYWJlbCI6Ik5ld3MgSXRlbSIsImR1cmF0aW9uIjo3MiwibWVkaWFUeXBlIjoiYXVkaW8iLCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBmb2xsb3dpbmcgbmV3cyBpdGVtLiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4iLCJ0aW1lTWludXRlcyI6MiwicXVlc3Rpb25zIjpbeyJuIjoxLCJzdGVtIjoiSGVhdnkgcmFpbiBjYXVzZWQgSmlsYVx1MjAxOXMgc2xpZGUgdG8iLCJvcHRpb25zIjpbInNsaXAgaW50byB0aGUgbmVpZ2hib3VyXHUyMDE5cyB5YXJkLiIsInNsaXAgaW50byBhIHBhcmsuIiwiZmFsbCBvdmVyIGluIGhlciB5YXJkLiIsImJyZWFrIGludG8gcGllY2VzIG9uIHRoZSBoaWxsLiJdLCJrZXkiOjF9LHsibiI6Miwic3RlbSI6IlRoZSB0b3duIGNvdW5jaWwgZGVjaWRlZCB0byIsIm9wdGlvbnMiOlsiYnV5IGhlciBhIG5ldyBzbGlkZS4iLCJjaGFyZ2UgaGVyIGZvciBkYW1hZ2UuIiwibWFrZSByZXBhaXJzIHRvIHRoZSBzbGlkZS4iLCJyZW1vdmUgdGhlIHNsaWRlLiJdLCJrZXkiOjB9LHsibiI6Mywic3RlbSI6IlRoZSBjb3VuY2lsXHUyMDE5cyBkZWNpc2lvbiBtYWRlIEppbGEiLCJvcHRpb25zIjpbImV4Y2l0ZWQuIiwiYW5ncnkuIiwicGxlYXNlZC4iLCJ1cHNldC4iXSwia2V5IjoyfSx7Im4iOjQsInN0ZW0iOiJTZXZlcmFsIGRheXMgbGF0ZXIgYW5vdGhlciBzdG9ybSIsIm9wdGlvbnMiOlsiY292ZXJlZCB0aGUgYXJ0aXN0XHUyMDE5cyB3b3JrIGluIG11ZC4iLCJkYW1hZ2VkIHRoZSBwYXJrIHBsYXlncm91bmQuIiwia25vY2tlZCBhIHRyZWUgb250byB0aGUgc2xpZGUuIiwiZGVzdHJveWVkIHRoZSBjbGltYmluZyBzdHJ1Y3R1cmUuIl0sImtleSI6Mn0seyJuIjo1LCJzdGVtIjoiVG93bnNwZW9wbGUgaGlyZWQgRWRkeSBHYWxlbiB0byIsIm9wdGlvbnMiOlsiYnVpbGQgYSBuZXcgY2xpbWJpbmcgc3RydWN0dXJlLiIsIm1ha2UgYSBuZXcgc2xpZGUgZm9yIEppbGFcdTIwMTlzIGdhcmRlbi4iLCJjcmVhdGUgYXJ0d29yayBpbiB0aGUgcGFyay4iLCJtYWtlIHRoZSBwbGF5Z3JvdW5kIHNhZmVyLiJdLCJrZXkiOjB9XX1dfSx7Im5hbWUiOiJQYXJ0IDU6IExpc3RlbmluZyB0byBhIERpc2N1c3Npb24iLCJoZWFkZXJUaXRsZSI6IlNldCA3IFx1MjAxMyBQcmFjdGljZSBUZXN0IDEgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDU6IExpc3RlbmluZyB0byBhIERpc2N1c3Npb24iLCJpbnRyb1RpdGxlIjoiWW91IHdpbGwgd2F0Y2ggYSBkaXNjdXNzaW9uIGFtb25nIHRocmVlIGNvbGxlYWd1ZXMuIFRoZXJlIGFyZSB0d28gd29tZW4gYW5kIG9uZSBtYW4uIFRoZXkgYXJlIGluIGEgYnJlYWsgcm9vbSBhdCB0aGVpciB3b3JrcGxhY2UuIiwiaW50cm9CdWxsZXRzIjpbIllvdSB3aWxsIHdhdGNoIHRoZSBkaXNjdXNzaW9uIG9ubHkgb25jZS4iLCJJdCBpcyBhYm91dCAxLjUgdG8gMiBtaW51dGVzIGxvbmcuIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCBhbnN3ZXIgdG8gZWFjaCBxdWVzdGlvbiBmcm9tIHRoZSBkcm9wLWRvd24gbWVudS4iLCJ0cmFuc2NyaXB0IjoiWW91IHdpbGwgd2F0Y2ggYSBkaXNjdXNzaW9uIGFtb25nIHRocmVlIGNvbGxlYWd1ZXMuIFRoZXJlIGFyZSB0d28gd29tZW4gYW5kIG9uZSBtYW4uXG5UaGV5IGFyZSBhdCBhIGJyZWFrIHJvb20gYXQgdGhlaXIgd29ya3BsYWNlLlxuXG5UaWE6IExldCdzIGVuam95IG91ciBjb2ZmZWUgYnJlYWsgYXMgbG9uZyBhcyB3ZSBjYW4uIFRoZXNlIG5ldyBjaGFuZ2VzIGF0IHdvcmsgYXJlXG5naXZpbmcgbWUgYSBoZWFkYWNoZS5cblJpY2hhcmQ6ICAgICAgV2h5IGFyZSB0aGV5IG1ha2luZyB0aGUgY2hhbmdlcz9cblRpYTogTWFuYWdlbWVudCBzYWlkIHRoYXQgYnVzaW5lc3MgaGFzIGdyb3duIHNvIG11Y2ggaW4gdGhlIGxhc3QgeWVhciB0aGF0IHRoZXkgaGFkIHRvXG5oaXJlIGEgbG90IG9mIG5ldyBzdGFmZi4gSSBndWVzcyB3ZSBjYW4ndCBtb3ZlLCBzbyB0aGV5IGFyZSBtYWtpbmcgbWFqb3IgY2hhbmdlcyB0byB0aGlzXG5vbGQgc3BhY2UgdG8gYWNjb21tb2RhdGUgbW9yZSBzdGFmZi5cbkFsaWNlOiBUaGUgbmV3IHBsYW4sIGNhbGxlZCBvZmZpY2UgaG90ZWxpbmcsIGlzbid0IHVuaXF1ZSB0byB1cy4gQXMgYSBtYXR0ZXIgb2YgZmFjdCwgaXRcdTIwMTlzXG5iZWVuIHByb3ZlbiB0byB3b3JrIGV4dHJlbWVseSB3ZWxsLiBJZiB5b3UgdGhpbmsgb2Ygb3VyIG9mZmljZSBsaWtlIGEgaG90ZWwsIHRoZSBpZGVhIG1pZ2h0XG5jb21lIGNsZWFyZXIuIFdlIHJlc2VydmUgYSBkZXNrIGJlZm9yZSB3ZSBjb21lIHRvIHdvcmssIGFuZCB0aGVuIHdlIGNoZWNrIGluIHdoZW4gd2VcbmFycml2ZS5cblJpY2hhcmRzOiAgICBUaGF0J3MgYW4gaW50ZXJlc3RpbmcgY29tcGFyaXNvbi4gQnV0IEkgZG9uXHUyMDE5dCBzZWUgaG93IHRoZXNlIHRpbnkgZGVza3Mgd29ya1xuY29tcGFyZSB0byBhIHNwYWNpb3VzLCBjb21mb3J0YWJsZSBob3RlbCByb29tLlxuQWxpY2U6IFdlbGwsIHRoZSBpZGVhIGlzIHRoYXQgbWFueSBvZiB1cyBhcmVuJ3QgaW4gdGhlIG9mZmljZSBldmVyeSBkYXkuIFRoZXJlZm9yZSwgdGhlcmUgYXJlXG50ZW1wb3Jhcnkgc3BhY2UgYXNzaWdubWVudHMsIGxpa2UgcGVvcGxlIHVzaW5nIGEgaG90ZWwuIFRob3NlIHdvcmtpbmcgOVx1MjAxMzUgaW4gdGhlIG9mZmljZVxuZXZlcnkgZGF5IHN0aWxsIGtlZXAgdGhlaXIgZGVzaywgbGlrZSBiZWZvcmUuIEkgdGhpbmsgaXRcdTIwMTlsbCBiZSBmaW5lOyB3ZSBqdXN0IG5lZWQgdG8gZ2V0IHVzZWQgdG9cbml0LlxuXGZUaWE6IEkgaGVhcmQgdGhhdCB2ZXJ5IGZldyBwZW9wbGUgaGF2ZSBwcml2YXRlIG9mZmljZXMgbm93LiBJbnN0ZWFkLCB3ZSB3aWxsIG5lZWQgdG9cbmJvb2sgYSBzbWFsbCBzZW1pbmFyIHJvb20gaWYgeW91J3JlIG1lZXRpbmcgd2l0aCBhIGNsaWVudC4gVGhpcyB3aWxsIHJlcXVpcmUgY29uc2lkZXJhYmxlXG5hZHZhbmNlZCBwbGFubmluZy5cblJpY2hhcmQ6ICAgICBTbywgd2hhdCBkbyB5b3UgZG8gaWYgYSBjbGllbnQgZHJvcHMgdG8gY29uc3VsdCB3aXRoIHlvdSBhbmQgdGhlcmVcdTIwMTlzIG5vXG5zZW1pbmFyIHJvb21zIGF2YWlsYWJsZT8gSXRcdTIwMTlsbCB0YWtlIGNvbnNpZGVyYWJsZSB0aW1lIHRvIGFkanVzdCBvdXIgd29yayBoYWJpdHMgdG8gdGhvc2VcbmtpbmRzIG9mIGNoYW5nZXMuXG5BbGljZTogV2VsbCwgdGhlIG90aGVyIGludGVyZXN0aW5nIGNoYW5nZSBpcyB0aGF0IG9uY2UgeW91IGNoZWNrIGluIGZvciBhIGRlc2ssIHlvdSBzaWduIHVwXG5mb3IgYSBsYXB0b3AgZm9yIHRoZSByZXN0IG9mIHRoZSBkYXkuIFdlIGNhbiBub3cgYWNjZXNzIG91ciBlbWFpbCBvbiBhbnkgbGFwdG9wLlxuUmljaGFyZDogICAgICBXaGF0IEkgZG9uJ3QgbGlrZSBpcyB0aGF0IHRoZXNlIHNoYXJlZCBkZXNrcyBhcmUgYmFzaWNhbGx5IGp1c3QgYmFyZSBjdWJpY2xlcy5cbllvdSBjYW4ndCBwZXJzb25hbGl6ZSB0aGUgc3BhY2Ugb3Igc3RvcmUgeW91ciBvd24gd29yayBmaWxlcy4gQW5kIHdoYXQgYWJvdXRcbnRlbGVwaG9uZXM\/IEkgZG9uXHUyMDE5dCBzZWUgdGVsZXBob25lcyBhdCBlYWNoIGRlc2suXG5UaWE6IEkgZG9uJ3QgdW5kZXJzdGFuZCBob3cgdGhpcyBuZXcgcGhvbmUgc3lzdGVtIHdvcmtzLCBhbHRob3VnaCBJIGtub3cgd2UgY2FuJ3RcbmhhdmUgYSBwaG9uZSBhdCBvdXIgZGVzayBhbnltb3JlLiBJdCdzIGNvbnNpZGVyZWQgdG9vIGRpc3J1cHRpdmUgdG8gb3RoZXJzLiBCdXQgd2hhdCBJIHdpbGxcbm1pc3MgbW9zdCBpcyBiZWluZyB0b2dldGhlciB3aXRoIG91ciB0ZWFtIGFuZCBsZWFybmluZyBmcm9tIGVhY2ggb3RoZXIuXG5BbGljZTogWWVhaCwgd2VsbCwgdGhlcmUgY2VydGFpbmx5IHdpbGwgYmUgYSBsb3Qgb2YgY2hhbmdlcy4gTWF5YmUgaGF2aW5nIGNvZmZlZSBsaWtlIHRoaXNcbnRvZ2V0aGVyIHdoZW4gdGhlIHRocmVlIG9mIHVzIGFyZSBpbiB0aGUgb2ZmaWNlIGlzIGEgZ29vZCBpZGVhLiBNYXliZSB3ZSBzaG91bGQgaW52aXRlXG5zb21lIG9mIG91ciBvdGhlciB0ZWFtIG1lbWJlcnMgdG8gam9pbiB1c1x1MjAxNHNvIHRoZXkgY2FuIGNvcGUsIHRvby5cblJpY2hhcmQ6ICAgICAgVGhhdFx1MjAxOXMgYSBncmVhdCBpZGVhISBMZXQncyBkbyBpdC5cblRpYTogICBXZSdsbCBkbyB0ZWFtLXRleHRpbmcgdG8gc2V0IHVwIG1lZXRpbmdzISIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IkRpc2N1c3Npb24gKHZpZGVvKSIsImR1cmF0aW9uIjoxMzcsIm1lZGlhVHlwZSI6InZpZGVvIiwibWVkaWFJbnN0cnVjdGlvbiI6IldhdGNoIHRoZSBkaXNjdXNzaW9uLiBZb3Ugd2lsbCB3YXRjaCBpdCBvbmx5IG9uY2UuIiwidGltZU1pbnV0ZXMiOjIsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IldoYXQgY2hhbmdlIGlzIFRpYSBkZXNjcmliaW5nPyIsIm9wdGlvbnMiOlsiVGhlaXIgY29tcGFueSBoYXMgcmVudGVkIG91dCBvZmZpY2Ugc3BhY2UuIiwiVGhlaXIgd29ya3NwYWNlIGhhcyBiZWVuIGFycmFuZ2VkIGRpZmZlcmVudGx5LiIsIlRoZWlyIHRlYW0gbWVtYmVycyBoYXZlIGJlZW4gcmVhc3NpZ25lZCBkdXRpZXMuIiwiVGhlaXIgb2ZmaWNlIGhhcyBtb3ZlZCB0byBhIG5ldyBsb2NhdGlvbi4iXSwia2V5IjoxfSx7Im4iOjIsInN0ZW0iOiJXaGF0IGlzIFJpY2hhcmRcdTIwMTlzIG1haW4gY29uY2Vybj8iLCJvcHRpb25zIjpbInRoYXQgaGUgd2lsbCBubyBsb25nZXIgd29yayB3aXRoIHRoZSBzYW1lIHBlb3BsZSIsInRoYXQgdGhlIG9mZmljZSB3aWxsIGJlIGxvdWRlciB0aGFuIGl0IHdhcyBiZWZvcmUiLCJ0aGF0IGhpcyBwaG9uZSBjYWxscyB3aWxsIG5vIGxvbmdlciBiZSBwcml2YXRlIiwidGhhdCBtZWV0aW5ncyB3aWxsIGJlIG1vcmUgZGlmZmljdWx0IHRvIGFycmFuZ2UiXSwia2V5IjozfSx7Im4iOjMsInN0ZW0iOiJXaG8gd291bGQgTk9UIGJlIGFmZmVjdGVkIGJ5IHRoZSBjaGFuZ2U\/Iiwib3B0aW9ucyI6WyJ0aG9zZSB3aG8gd29yayBpbiB0aGUgb2ZmaWNlIGV2ZXJ5IGRheSIsInRob3NlIHdobyBoYXZlIGNsaWVudHMgdmlzaXRpbmcgdGhlIG9mZmljZSIsInRob3NlIHdobyBuZWVkIGRhaWx5IHRlbGVwaG9uZSBhY2Nlc3MiLCJ0aG9zZSB3aG8gcmVndWxhcmx5IGNvbnN1bHQgd2l0aCB0aGVpciB0ZWFtIl0sImtleSI6MH0seyJuIjo0LCJzdGVtIjoiQWNjb3JkaW5nIHRvIFRpYSwgd2hhdCBpcyBhbiBhZHZhbnRhZ2Ugb2YgdGhpcyBjaGFuZ2U\/Iiwib3B0aW9ucyI6WyJUZWFtcyB3aWxsIGJlIGFibGUgdG8gd29yayB0b2dldGhlci4iLCJCdXNpbmVzcyB3aWxsIGdyb3cgbW9yZSBxdWlja2x5LiIsIlNwYWNlIHdpbGwgYmUgdXNlZCBtb3JlIGVmZmljaWVudGx5LiIsIk5vaXNlIHdpbGwgYmUgc2lnbmlmaWNhbnRseSByZWR1Y2VkLiJdLCJrZXkiOjJ9LHsibiI6NSwic3RlbSI6IldoYXQgY2hhbmdlIGhhcyByZWNlbnRseSBhZmZlY3RlZCB0aGUgY29tcGFueT8iLCJvcHRpb25zIjpbIkl0IGhhcyBhY3F1aXJlZCBtb3JlIGJ1c2luZXNzIGNvbnRyYWN0cy4iLCJJdCBoYXMgbW92ZWQgaW50byBhIG5ldyB0eXBlIG9mIGluZHVzdHJ5LiIsIkl0IGhhcyBzaWduZWQgdXAgZm9yIGEgdGVhbSBwaG9uZSBwbGFuLiIsIkl0IGhhcyBlbGltaW5hdGVkIGEgZmxleGlibGUgd29yayBzY2hlZHVsZS4iXSwia2V5IjowfSx7Im4iOjYsInN0ZW0iOiJXaGF0IG1vc3QgdXBzZXRzIEFsaWNlPyIsIm9wdGlvbnMiOlsiaXJyZWd1bGFyIHdvcmsgaG91cnMiLCJkaWZmaWN1bHQgcGhvbmUgYWNjZXNzIiwiaW5jcmVhc2VkIHdvcmtwbGFjZSBub2lzZSIsInJlZHVjZWQgdGVhbSBkaXNjdXNzaW9ucyJdLCJrZXkiOjN9LHsibiI6Nywic3RlbSI6IldoYXQgc2VlbXMgdHJ1ZSBhYm91dCB0aGUgdGhyZWUgc3BlYWtlcnM\/Iiwib3B0aW9ucyI6WyJUaGV5IHdlcmUgbm90IHdvcmtpbmcgd2l0aCBjbGllbnRzIGJlZm9yZS4iLCJUaGV5IHNwZW5kIHRoZSBlbnRpcmUgd29yayBkYXkgaW4gdGhlIG9mZmljZS4iLCJUaGV5IHdlcmUgbm90IGNvbnN1bHRlZCBhYm91dCB0aGUgY2hhbmdlcy4iLCJUaGV5IGhhdmUgdGhlaXIgb3duIHByaXZhdGUgb2ZmaWNlIGF0IHdvcmsuIl0sImtleSI6Mn0seyJuIjo4LCJzdGVtIjoiV2h5IGRvIHRoZSB0aHJlZSBwZW9wbGUgc2VlbSBoYXBweSBhdCB0aGUgZW5kPyIsIm9wdGlvbnMiOlsiVGhleVx1MjAxOXZlIGdyYXNwZWQgdGhlIG5ldyBzeXN0ZW0gd2VsbC4iLCJUaGV5XHUyMDE5dmUgYWdyZWVkIG9uIGEgd29ya2FibGUgc29sdXRpb24uIiwiVGhleVx1MjAxOXZlIGRlY2lkZWQgdG8gY2hhbGxlbmdlIHRoZSBuZXcgcGxhbi4iLCJUaGV5XHUyMDE5dmUgcmVjb2duaXplZCBtYW55IG91dHNpZGUgb3Bwb3J0dW5pdGllcy4iXSwia2V5IjoxfV19XX0seyJuYW1lIjoiUGFydCA2OiBMaXN0ZW5pbmcgZm9yIFZpZXdwb2ludHMiLCJoZWFkZXJUaXRsZSI6IlNldCA3IFx1MjAxMyBQcmFjdGljZSBUZXN0IDEgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDY6IExpc3RlbmluZyBmb3IgVmlld3BvaW50cyIsImludHJvVGl0bGUiOiJZb3Ugd2lsbCBoZWFyIGEgcmVwb3J0IGFib3V0IGhlYWx0aCBjYXJlIGluIENhbmFkYS4iLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciB0aGUgcmVwb3J0IG9ubHkgb25jZS4iLCJJdCBpcyBhYm91dCAzIG1pbnV0ZXMgbG9uZy4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBjb21wbGV0ZSBlYWNoIHN0YXRlbWVudCBmcm9tIHRoZSBkcm9wLWRvd24gbWVudS4iLCJ0cmFuc2NyaXB0IjoiWW91IHdpbGwgaGVhciBhIHJlcG9ydCBhYm91dCBoZWFsdGggY2FyZSBpbiBDYW5hZGEuXG5cbkFzIG1hbnkgb3BpbmlvbiBwb2xscyBvdmVyIHRoZSB5ZWFycyBoYXZlIHNob3duLCB3aGVuIGFza2VkIHdoYXQgbWFrZXMgQ2FuYWRhXG5zcGVjaWFsLCB0aGUgQ2FuYWRpYW4gaGVhbHRoIGNhcmUgc3lzdGVtIGlzIG9mdGVuIHRoZSBtb3N0IGNpdGVkIHJlYXNvbi4gRm9yIG92ZXIgZmlmdHlcbnllYXJzLCBDYW5hZGEgaGFzIHJlbGllZCBvbiBhIHN5c3RlbSBvZiBoZWFsdGggY2FyZSB0aGF0IGlzIGdvdmVybm1lbnQgcnVuIGFuZCBmcmVlIHRvIGFsbFxuQ2FuYWRpYW5zLiBQcml2YXRlLCBmb3ItcHJvZml0IGhlYWx0aCBjYXJlIGlzIG9ubHkgYWxsb3dlZCBpbiB2ZXJ5IGZldyBjaXJjdW1zdGFuY2VzLlxuV2hlbiBpdCBjb21lcyB0byBoZWFsdGggY2FyZSwgbW9uZXkgd2lsbCBub3QgYnV5IGJldHRlciBkb2N0b3JzIG9yIGEgYmV0dGVyIGhvc3BpdGFsLlxuRXZlcnlvbmUgdXNlcyB0aGUgc2FtZSBzZXJ2aWNlcy5cblxmQ2FuYWRhXHUyMDE5cyBoZWFsdGggY2FyZSBzeXN0ZW0gaXMgZ2VuZXJvdXMsIGVmZmVjdGl2ZSwgYW5kLCBtb3N0IGJlbGlldmUsIGVxdWl0YWJsZS5cbkhvd2V2ZXIsIHRoZSBzeXN0ZW0gaXMgbm90IHdpdGhvdXQgaXRzIGNyaXRpY3MuIFRoZSBjb3N0IHRvIHRoZSBnb3Zlcm5tZW50IGlzLCBvZiBjb3Vyc2UsXG5odWdlIGFuZCB0aGlzIGNvc3QgaXMgZnVuZGVkIGJ5IHRoZSBDYW5hZGlhbiBwZW9wbGUgaW4gdGhlIGZvcm0gb2YgdGF4ZXMuIFdoaWxlIGZldyBoYXZlXG5hcmd1ZWQgYWdhaW5zdCB0aGUgaGVhbHRoIHN5c3RlbSBpdHNlbGYsIGFyZ3VtZW50cyBhZ2FpbnN0IHRoZSB0YXggcmF0ZXMgcmVxdWlyZWQgdG8gc3VwcG9ydFxudGhlIHN5c3RlbSBhcmUgbm90IHVuY29tbW9uLlxuXG5UaGUgbWFpbiBjcml0aWNpc20gb2YgdGhlIHN5c3RlbSwgaG93ZXZlciwgaXMgbm90IGl0cyBjb3N0LCBidXQgaXRzIGV4Y2x1c2l2aXR5LiBJbiBhbG1vc3QgYWxsXG5jYXNlcywgdGhlIG9ubHkgaGVhbHRoIGNhcmUgc2VydmljZXMgYXZhaWxhYmxlIGFyZSBnb3Zlcm5tZW50IHNlcnZpY2VzLiBXaHkgY2FuXHUyMDE5dFxuaW5kaXZpZHVhbHMgdGhhdCBjYW4gYWZmb3JkIHRvIHBheSBmb3IgaGVhbHRoIHNlcnZpY2VzIGdvIHRvIHByaXZhdGUgY2xpbmljcz8gSWYgdGhpcyB3ZXJlXG5hbGxvd2VkLCBub3Qgb25seSB3b3VsZCB0aGV5IGdldCBmYXN0ZXIsIG1vcmUgZWZmaWNpZW50IHNlcnZpY2UsIGJ1dCB0aGV5IHdvdWxkIHJlbW92ZVxudGhlbXNlbHZlcyBmcm9tIHRoZSBnb3Zlcm5tZW50IHN5c3RlbS4gRXZlcnlib2R5IHdvdWxkIGJlbmVmaXQgZnJvbSBzaG9ydGVyIHdhaXRcbnRpbWVzLiBDYW5hZGEgaXMgb25lIG9mIHRoZSBmZXcgaW5kdXN0cmlhbGl6ZWQgY291bnRyaWVzIHRvIGVmZmVjdGl2ZWx5IGJhbiBwcml2YXRlIG1lZGljYWxcbnRyZWF0bWVudC4gTW9zdCBjb3VudHJpZXMgaW4gRXVyb3BlIGFuZCBBc2lhIHN1cHBvcnQgbWl4ZWQgc3lzdGVtcyB3aGVyZSBpbmRpdmlkdWFsc1xuY2FuIGNob29zZSBiZXR3ZWVuIHB1YmxpYyBhbmQgcHJpdmF0ZSBvcHRpb25zLlxuXG5NYW55IGluIENhbmFkYSBhcmUgb3Bwb3NlZCB0byBhIG1peGVkIHN5c3RlbSBpbiB3aGljaCBtb3JlIHdlYWx0aHkgY2l0aXplbnMgcmVjZWl2ZVxuZGlmZmVyZW50XHUyMDE0YW5kIHBlcmhhcHNcdTIwMTRiZXR0ZXIgaGVhbHRoIGNhcmUuIFRoZSBmZWFyIGlzIHRoYXQgb25jZSB0aGUgd2VhbHRoeSBsZWF2ZSB0aGVcbnB1YmxpYyBzeXN0ZW0sIHRoZXkgd2lsbCBiZSBldmVuIGxlc3MgbW90aXZhdGVkIHRvIHBheSB0aGUgdGF4ZXMgcmVxdWlyZWQgdG8gbWFpbnRhaW4gdGhlXG5wdWJsaWMgaGVhbHRoIGNhcmUgc3lzdGVtLiBNb3Jlb3ZlciwgdGhlcmUgaXMgYSBtb3JhbCBpc3N1ZSBhdCBzdGFrZTogSXMgaXQgcmlnaHQgdGhhdCBzb21lXG5wZW9wbGUgaW4gc29jaWV0eSByZWNlaXZlIGJldHRlciBoZWFsdGggY2FyZSB0aGFuIG90aGVycz9cblxuVGhvc2Ugd2hvIHN1cHBvcnQgYSBtaXhlZCBzeXN0ZW0gYWxzbyBzYXkgdGhleSBzZWUgYSBtb3JhbCBpc3N1ZS4gSW4gYSBmcmVlIGNvdW50cnkgc3VjaFxuYXMgQ2FuYWRhLCBwZW9wbGUgc2hvdWxkIGhhdmUgdGhlIHJpZ2h0IHRvIGNob29zZSB3aGVyZSB0aGV5IGdvIGZvciB0aGVpciBoZWFsdGggY2FyZS5cblxuQ29tcHJvbWlzZSBzb2x1dGlvbnMgaGF2ZSBhbHNvIGJlZW4gc3VnZ2VzdGVkLiBQZXJoYXBzIHByaXZhdGUgcHJhY3RpY2VzIGNvdWxkIGJlXG5hbGxvd2VkIGZvciBzY3JlZW5pbmcsIGJ1dCBub3QgZm9yIHRyZWF0bWVudC4gUGVvcGxlIGNvdWxkIGhhdmUgcHJpdmF0ZSBtZWRpY2FsIHRlc3RzLCBYLVxucmF5cyBvciB1bHRyYXNvdW5kcywgYnV0IHRoZXkgd291bGQgaGF2ZSB0byBnZXQgdHJlYXRtZW50IGluIHRoZSBwdWJsaWMgc3lzdGVtLlxuXG5UaGUgZGViYXRlIHdpbGwgY29udGludWUgZm9yIHllYXJzIHRvIGNvbWUuIEhvd2V2ZXIsIHRoZXJlIGlzIGxpdHRsZSBldmlkZW5jZSB0aGF0IHRoZVxuaGVhbHRoIHN5c3RlbSB3aWxsIGNoYW5nZSBpbiB0aGUgbmVhciBmdXR1cmUuIENhbmFkaWFucyBhcmUgcHJvdWQgb2YgdGhlaXIgaGVhbHRoIHN5c3RlbVxuYW5kIGNoYW5nZSB0byB0aGF0IHN5c3RlbSBpcyBsaWtlbHkgdG8gYmUgc2xvdyBpbiBjb21pbmcuIiwic2VjdGlvbnMiOlt7ImxhYmVsIjoiUmVwb3J0IiwiZHVyYXRpb24iOjE2NSwibWVkaWFUeXBlIjoiYXVkaW8iLCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBmb2xsb3dpbmcgcmVwb3J0LiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4iLCJ0aW1lTWludXRlcyI6MiwicXVlc3Rpb25zIjpbeyJuIjoxLCJzdGVtIjoiR2VuZXJhbGx5IHNwZWFraW5nLCBDYW5hZGlhbnMgYXJlIiwib3B0aW9ucyI6WyJhbWJpdmFsZW50IHRvd2FyZHMgdGhlIGhlYWx0aC1jYXJlIHN5c3RlbS4iLCJjcml0aWNhbCBvZiB0aGUgaGVhbHRoLWNhcmUgc3lzdGVtLiIsImluYWRlcXVhdGVseSBzZXJ2ZWQgYnkgdGhlIGhlYWx0aC1jYXJlIHN5c3RlbS4iLCJxdWl0ZSBwcm91ZCBvZiB0aGUgaGVhbHRoLWNhcmUgc3lzdGVtLiJdLCJrZXkiOjN9LHsibiI6Miwic3RlbSI6IlNvbWUgQ2FuYWRpYW5zIGFyZ3VlIHRoYXQiLCJvcHRpb25zIjpbIkNhbmFkYSBjYW5ub3QgYWZmb3JkIHRoZSBjdXJyZW50IGhlYWx0aC1jYXJlIHN5c3RlbS4iLCJoZWFsdGggY2FyZSBnZW5lcmF0ZXMgYSBoZWF2eSB0YXggYnVyZGVuLiIsInRoZSBnb3Zlcm5tZW50IHNob3VsZCBwcml2YXRpemUgYWxsIGhlYWx0aCBzZXJ2aWNlcy4iLCJ0aGUgZ292ZXJubWVudCBuZWVkcyB0byBpbXByb3ZlIHRoZSB0cmFpbmluZyBvZiBkb2N0b3JzLiJdLCJrZXkiOjF9LHsibiI6Mywic3RlbSI6IkEgY3JpdGljaXNtIG9mIENhbmFkaWFuIGhlYWx0aCBjYXJlIGlzIHRoYXQiLCJvcHRpb25zIjpbIml0IG1vbm9wb2xpemVzIGhlYWx0aCBzZXJ2aWNlIHByb3Zpc2lvbi4iLCJpdCBwcm92aWRlcyBpbmVxdWl0YWJsZSBzZXJ2aWNlcyB0byBjaXRpemVucy4iLCJ0aGUgaGVhbHRoIHN5c3RlbSBzcGVuZHMgbW9uZXkgaW5lZmZpY2llbnRseS4iLCJDYW5hZGlhbiBzZXJ2aWNlcyBhcmUgaW5mZXJpb3IgdG8gRXVyb3BlYW4gc2VydmljZXMuIl0sImtleSI6MH0seyJuIjo0LCJzdGVtIjoiT25lIGFyZ3VtZW50IG1lbnRpb25lZCBmb3IgYSBtaXhlZCBzeXN0ZW0gaXMgdGhhdCIsIm9wdGlvbnMiOlsiaGVhbHRoIGV4cGVuZGl0dXJlIHdpbGwgZGVjcmVhc2UuIiwid2FpdC1saXN0cyB3aWxsIGJlY29tZSBzaG9ydGVyLiIsInRoZSB0YXggYnVyZGVuIHdpbGwgYmUgZWFzZWQuIiwiZG9jdG9ycyBjYW4gY2hvb3NlIHdoZXJlIHRvIHdvcmsuIl0sImtleSI6MX0seyJuIjo1LCJzdGVtIjoiQ3JpdGljcyBvZiB0aGUgY3VycmVudCBzeXN0ZW0gYXJndWUgdGhhdCIsIm9wdGlvbnMiOlsidGF4YXRpb24gc2hvdWxkIGJlIHByb3BvcnRpb25hbCB0byBzZXJ2aWNlIHVzZS4iLCJjaXRpemVucyBhcmUgZW50aXRsZWQgdG8gY2hvb3NlIHRoZWlyIHNlcnZpY2UgcHJvdmlkZXJzLiIsInF1YWxpdHkgb2Ygc2VydmljZSBzaG91bGQgYmUgcHJvcG9ydGlvbmFsIHRvIHRheGF0aW9uLiIsInRoZSBnb3Zlcm5tZW50IHNob3VsZG5cdTIwMTl0IGNvbXByb21pc2UgdGhlIGN1cnJlbnQgc3lzdGVtLiJdLCJrZXkiOjF9LHsibiI6Niwic3RlbSI6IkEgY29tcHJvbWlzZSBzb2x1dGlvbiB3b3VsZCBhbGxvdyBwcml2YXRlIGNsaW5pY3MgdG8iLCJvcHRpb25zIjpbInRyZWF0IHdlYWx0aHkgcGF0aWVudHMgd2l0aCBzcGVjaWZpYyBkaXNlYXNlcy4iLCJvcGVuIG9ubHkgaW4gbW9yZSBhZmZsdWVudCBuZWlnaGJvcmhvb2RzLiIsIm9mZmVyIGZyZWUgaGVhbHRoIGNhcmUgdG8gdGhvc2Ugd2hvIGNhbm5vdCBwYXkuIiwicHJvdmlkZSBoZWFsdGggc2NyZWVuaW5nIGFuZCBkaWFnbm9zdGljIHNlcnZpY2VzLiJdLCJrZXkiOjN9XX1dfV19OwoKdmFyIENFTFBJUF9ZVCA9IHsgdmlkZW9JZDogJycgfTsgIC8qIGUuZy4gJ2RRdzR3OVdnWGNRJyBcdTIwMTQgU2V0IDcgVGVzdCAxIGZ1bGwgbGlzdGVuaW5nIHZpZGVvICovCnZhciBDTFBfQ0hBUFRFUlMgPSB7ICcwLjAnOlswLDUyMF0sICcwLjEnOlswLDUyMF0sICcwLjInOlswLDUyMF0sICcxLjAnOls1MjAsODUzXSwgJzIuMCc6Wzg1MywxMjcyXSwgJzMuMCc6WzEyNzIsMTM2NF0sICc0LjAnOlsxMzY0LDE1MDNdLCAnNS4wJzpbMTUwMywxNzU3XSB9OwoKLyogVE9ETzogcGxhY2Vob2xkZXIgbWFwcGluZyBcdTIwMTQgdmVyaWZ5IGFnYWluc3QgdGhlIG9mZmljaWFsIENFTFBJUCBzY29yZSBjaGFydC4gKi8KZnVuY3Rpb24gY2xiRXN0aW1hdGUocmF3KXsKICBpZiAocmF3ID49IDM1KSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCAxMFx1MjAxMzEyJywgbm90ZTogJ0FkdmFuY2VkIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMzApIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDknLCAgICAgICAgbm90ZTogJ0VmZmVjdGl2ZSBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDI3KSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCA4JywgICAgICAgIG5vdGU6ICdHb29kIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMjIpIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDcnLCAgICAgICAgbm90ZTogJ0FkZXF1YXRlIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMTcpIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDYnLCAgICAgICAgbm90ZTogJ0RldmVsb3BpbmcgcHJvZmljaWVuY3knIH07CiAgaWYgKHJhdyA+PSAxMSkgcmV0dXJuIHsgbGV2ZWw6ICdDRUxQSVAgNScsICAgICAgICBub3RlOiAnQWNxdWlyaW5nIHByb2ZpY2llbmN5JyB9OwogIHJldHVybiAgICAgICAgICAgIHsgbGV2ZWw6ICdDRUxQSVAgNCBvciBiZWxvdycsICAgbm90ZTogJ0tlZXAgcHJhY3RpY2luZyEnIH07Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PSBlbmdpbmUgPT09PT09PT09PT09PT09PT09PT09ICovCihmdW5jdGlvbigpewogIHZhciByZWR1Y2VkTW90aW9uID0gd2luZG93Lm1hdGNoTWVkaWEgJiYgd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpJykubWF0Y2hlczsKICB2YXIgY2F0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscENhdCcpOwogIHZhciBkb3RzRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwRG90cycpOwogIHZhciB0b29sYmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFRvb2xiYXInKTsKICB2YXIgcmVzdWx0c0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFJlc3VsdHMnKTsKICB2YXIgc2NvcmVDaGlwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFNjb3JlQ2hpcCcpOwoKICB2YXIgVE9UQUxfUSA9IDA7CiAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocCl7IHAuc2VjdGlvbnMuZm9yRWFjaChmdW5jdGlvbihzKXsgVE9UQUxfUSArPSBzLnF1ZXN0aW9ucy5sZW5ndGg7IH0pOyB9KTsKCiAgdmFyIHNjcmVlbnMgPSBbXTsKICBURVNUX0RBVEEucGFydHMuZm9yRWFjaChmdW5jdGlvbihwYXJ0LCBwaSl7CiAgICBzY3JlZW5zLnB1c2goeyB0eXBlOiAnaW50cm8nLCBwaTogcGkgfSk7CiAgICBwYXJ0LnNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24oc2VjLCBzaSl7CiAgICAgIHNjcmVlbnMucHVzaCh7IHR5cGU6ICdtZWRpYScsIHBpOiBwaSwgc2k6IHNpIH0pOwogICAgICBzY3JlZW5zLnB1c2goeyB0eXBlOiAncScsIHBpOiBwaSwgc2k6IHNpIH0pOwogICAgfSk7CiAgfSk7CiAgc2NyZWVucy5wdXNoKHsgdHlwZTogJ2ZpbmlzaCcgfSk7CgogIHZhciBzdGF0ZSA9IHsKICAgIHN0YXJ0ZWQ6IGZhbHNlLAogICAgaWR4OiAwLAogICAgYW5zd2Vyczoge30sICAgICAgLyogInBpLnNpLnFpIiAtPiBvcHRpb24gaW5kZXggKDAtMykgKi8KICAgIGNoZWNrZWQ6IGZhbHNlLAogICAgdGltZXJPbjogdHJ1ZQogIH07CiAgdmFyIG1lZGlhVGltZXIgPSBudWxsLCBxVGltZXIgPSBudWxsLCBxUmVtYWluaW5nID0gMDsKICB2YXIgcG9wdXAgPSBudWxsLCBvcGVuVHJpZ2dlciA9IG51bGw7CgogIGZ1bmN0aW9uIHFLZXkocGksIHNpLCBxaSl7IHJldHVybiBwaSArICcuJyArIHNpICsgJy4nICsgcWk7IH0KICBmdW5jdGlvbiBmbXQoc2VjKXsgdmFyIG0gPSBNYXRoLmZsb29yKHNlYy82MCksIHMgPSBzZWMgJSA2MDsgcmV0dXJuIG0gKyAnOicgKyAocyA8IDEwID8gJzAnIDogJycpICsgczsgfQogIGZ1bmN0aW9uIGVsKHRhZywgY2xzLCB0ZXh0KXsKICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpOwogICAgaWYgKGNscykgZS5jbGFzc05hbWUgPSBjbHM7CiAgICBpZiAodGV4dCAhPT0gdW5kZWZpbmVkKSBlLnRleHRDb250ZW50ID0gdGV4dDsKICAgIHJldHVybiBlOwogIH0KICBmdW5jdGlvbiBzY3JvbGxUb0VsKHRhcmdldCwgb2Zmc2V0KXsKICAgIHZhciB5ID0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIHdpbmRvdy5wYWdlWU9mZnNldCAtIChvZmZzZXQgfHwgNzApOwogICAgd2luZG93LnNjcm9sbFRvKHsgdG9wOiB5LCBiZWhhdmlvcjogcmVkdWNlZE1vdGlvbiA\/ICdhdXRvJyA6ICdzbW9vdGgnIH0pOwogIH0KICBmdW5jdGlvbiBjbGVhclRpbWVycygpewogICAgaWYgKG1lZGlhVGltZXIpeyBjbGVhckludGVydmFsKG1lZGlhVGltZXIpOyBtZWRpYVRpbWVyID0gbnVsbDsgfQogICAgaWYgKHFUaW1lcil7IGNsZWFySW50ZXJ2YWwocVRpbWVyKTsgcVRpbWVyID0gbnVsbDsgfQogIH0KICBmdW5jdGlvbiBhbnN3ZXJlZENvdW50KCl7IHJldHVybiBPYmplY3Qua2V5cyhzdGF0ZS5hbnN3ZXJzKS5sZW5ndGg7IH0KICBmdW5jdGlvbiB1cGRhdGVTY29yZUNoaXAoKXsKICAgIGlmIChzdGF0ZS5jaGVja2VkKXsKICAgICAgc2NvcmVDaGlwLnRleHRDb250ZW50ID0gJ1Njb3JlICcgKyBjb21wdXRlU2NvcmUoKS50b3RhbCArICcvJyArIFRPVEFMX1E7CiAgICB9IGVsc2UgewogICAgICBzY29yZUNoaXAudGV4dENvbnRlbnQgPSAnQW5zd2VyZWQgJyArIGFuc3dlcmVkQ291bnQoKSArICcvJyArIFRPVEFMX1E7CiAgICB9CiAgfQogIGZ1bmN0aW9uIGNvbXB1dGVTY29yZSgpewogICAgdmFyIHRvdGFsID0gMCwgcGVyUGFydCA9IFtdOwogICAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCwgcGkpewogICAgICB2YXIgYyA9IDAsIG4gPSAwOwogICAgICBwYXJ0LnNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24oc2VjLCBzaSl7CiAgICAgICAgc2VjLnF1ZXN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHEsIHFpKXsKICAgICAgICAgIG4rKzsKICAgICAgICAgIGlmIChzdGF0ZS5hbnN3ZXJzW3FLZXkocGksIHNpLCBxaSldID09PSBxLmtleSAtIDEpeyBjKys7IHRvdGFsKys7IH0KICAgICAgICB9KTsKICAgICAgfSk7CiAgICAgIHBlclBhcnQucHVzaCh7IGNvcnJlY3Q6IGMsIHRvdGFsOiBuIH0pOwogICAgfSk7CiAgICByZXR1cm4geyB0b3RhbDogdG90YWwsIHBlclBhcnQ6IHBlclBhcnQgfTsKICB9CgogIC8qIC0tLS0tLS0tLS0gZHJvcGRvd24gcG9wdXAgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIGNsb3NlUG9wdXAoKXsKICAgIGlmIChwb3B1cCl7IHBvcHVwLnJlbW92ZSgpOyBwb3B1cCA9IG51bGw7IH0KICAgIGlmIChvcGVuVHJpZ2dlcil7IG9wZW5UcmlnZ2VyLmNsYXNzTGlzdC5yZW1vdmUoJ2NscC1vcGVuJyk7IG9wZW5UcmlnZ2VyID0gbnVsbDsgfQogIH0KICBmdW5jdGlvbiBvcGVuUG9wdXAodHJpZ2dlciwgcGksIHNpLCBxaSl7CiAgICBpZiAob3BlblRyaWdnZXIgPT09IHRyaWdnZXIpeyBjbG9zZVBvcHVwKCk7IHJldHVybjsgfQogICAgY2xvc2VQb3B1cCgpOwogICAgdmFyIHEgPSBURVNUX0RBVEEucGFydHNbcGldLnNlY3Rpb25zW3NpXS5xdWVzdGlvbnNbcWldOwogICAgdmFyIGtleSA9IHFLZXkocGksIHNpLCBxaSk7CiAgICBwb3B1cCA9IGVsKCdkaXYnLCAnY2xwLXBvcCcpOwogICAgcS5vcHRpb25zLmZvckVhY2goZnVuY3Rpb24ob3B0LCBvaSl7CiAgICAgIHZhciBiID0gZWwoJ2J1dHRvbicsICdjbHAtb3B0JyArIChzdGF0ZS5hbnN3ZXJzW2tleV0gPT09IG9pID8gJyBjbHAtc2VsJyA6ICcnKSk7CiAgICAgIGIudHlwZSA9ICdidXR0b24nOwogICAgICBiLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1yYWRpbycpKTsKICAgICAgYi5hcHBlbmRDaGlsZChlbCgnc3BhbicsICcnLCBvcHQpKTsKICAgICAgYi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGV2KXsKICAgICAgICBldi5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICBzdGF0ZS5hbnN3ZXJzW2tleV0gPSBvaTsKICAgICAgICB1cGRhdGVTY29yZUNoaXAoKTsKICAgICAgICBjbG9zZVBvcHVwKCk7CiAgICAgICAgc2V0VHJpZ2dlckxhYmVsKHRyaWdnZXIsIG9wdCwgZmFsc2UpOwogICAgICB9KTsKICAgICAgcG9wdXAuYXBwZW5kQ2hpbGQoYik7CiAgICB9KTsKICAgIGNhdC5hcHBlbmRDaGlsZChwb3B1cCk7CiAgICAvKiBwb3NpdGlvbjogYmVsb3cgdHJpZ2dlciwgZmxpcCBhYm92ZSB3aGVuIG5lYXIgdmlld3BvcnQgYm90dG9tICovCiAgICBwb3B1cC5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7CiAgICB2YXIgY2F0UmVjdCA9IGNhdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgIHZhciB0UmVjdCA9IHRyaWdnZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICB2YXIgcG9wVyA9IHBvcHVwLm9mZnNldFdpZHRoLCBwb3BIID0gcG9wdXAub2Zmc2V0SGVpZ2h0OwogICAgdmFyIGxlZnQgPSB0UmVjdC5sZWZ0IC0gY2F0UmVjdC5sZWZ0OwogICAgbGVmdCA9IE1hdGgubWF4KDgsIE1hdGgubWluKGxlZnQsIGNhdC5jbGllbnRXaWR0aCAtIHBvcFcgLSA4KSk7CiAgICB2YXIgdG9wOwogICAgaWYgKHRSZWN0LmJvdHRvbSArIHBvcEggKyAyNCA+IHdpbmRvdy5pbm5lckhlaWdodCAmJiB0UmVjdC50b3AgLSBwb3BIIC0gOCA+IDApewogICAgICB0b3AgPSB0UmVjdC50b3AgLSBjYXRSZWN0LnRvcCAtIHBvcEggLSA2OyAgIC8qIGZsaXAgYWJvdmUgKi8KICAgIH0gZWxzZSB7CiAgICAgIHRvcCA9IHRSZWN0LmJvdHRvbSAtIGNhdFJlY3QudG9wICsgNjsKICAgIH0KICAgIHBvcHVwLnN0eWxlLmxlZnQgPSBsZWZ0ICsgJ3B4JzsKICAgIHBvcHVwLnN0eWxlLnRvcCA9IHRvcCArICdweCc7CiAgICBwb3B1cC5zdHlsZS52aXNpYmlsaXR5ID0gJyc7CiAgICB0cmlnZ2VyLmNsYXNzTGlzdC5hZGQoJ2NscC1vcGVuJyk7CiAgICBvcGVuVHJpZ2dlciA9IHRyaWdnZXI7CiAgfQogIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZXYpewogICAgaWYgKHBvcHVwICYmICFwb3B1cC5jb250YWlucyhldi50YXJnZXQpICYmIGV2LnRhcmdldCAhPT0gb3BlblRyaWdnZXIgJiYgKCFvcGVuVHJpZ2dlciB8fCAhb3BlblRyaWdnZXIuY29udGFpbnMoZXYudGFyZ2V0KSkpewogICAgICBjbG9zZVBvcHVwKCk7CiAgICB9CiAgfSk7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNsb3NlUG9wdXApOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBmdW5jdGlvbigpeyAvKiBrZWVwIHBvcHVwIGFuY2hvcmVkOiBjbG9zZSBvbiBzY3JvbGwgKi8gaWYgKHBvcHVwKSBjbG9zZVBvcHVwKCk7IH0sIHsgcGFzc2l2ZTogdHJ1ZSB9KTsKCiAgZnVuY3Rpb24gc2V0VHJpZ2dlckxhYmVsKHRyaWdnZXIsIHRleHQsIHVuYW5zd2VyZWQpewogICAgdHJpZ2dlci5jbGFzc0xpc3QudG9nZ2xlKCdjbHAtdW5hbnN3ZXJlZCcsICEhdW5hbnN3ZXJlZCk7CiAgICB0cmlnZ2VyLnF1ZXJ5U2VsZWN0b3IoJy5jbHAtZGQtdGV4dCcpLnRleHRDb250ZW50ID0gdW5hbnN3ZXJlZCA\/ICdcdTIwMjZcdTIwMjZcdTIwMjZcdTIwMjYnIDogdGV4dDsKICB9CgogIC8qIC0tLS0tLS0tLS0gZG90cyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gcmVuZGVyRG90cygpewogICAgZG90c0VsLmlubmVySFRNTCA9ICcnOwogICAgdmFyIGN1clBpID0gLTE7CiAgICB2YXIgcyA9IHNjcmVlbnNbc3RhdGUuaWR4XTsKICAgIGlmIChzICYmIHMucGkgIT09IHVuZGVmaW5lZCkgY3VyUGkgPSBzLnBpOwogICAgaWYgKHMgJiYgcy50eXBlID09PSAnZmluaXNoJykgY3VyUGkgPSBURVNUX0RBVEEucGFydHMubGVuZ3RoOyAvKiBhbGwgZG9uZSAqLwogICAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCwgcGkpewogICAgICB2YXIgZCA9IGVsKCdidXR0b24nLCAnY2xwLWRvdCcsICdQJyArIChwaSArIDEpKTsKICAgICAgZC50eXBlID0gJ2J1dHRvbic7CiAgICAgIGlmIChwaSA9PT0gY3VyUGkpIGQuY2xhc3NMaXN0LmFkZCgnY2xwLWN1cicpOwogICAgICBlbHNlIGlmIChwaSA8IGN1clBpIHx8IHN0YXRlLmNoZWNrZWQpIGQuY2xhc3NMaXN0LmFkZCgnY2xwLWRvbmUnKTsKICAgICAgaWYgKHN0YXRlLmNoZWNrZWQpewogICAgICAgIGQuY2xhc3NMaXN0LmFkZCgnY2xwLWNsaWNrYWJsZScpOwogICAgICAgIGQudGl0bGUgPSAnUmV2aWV3ICcgKyBwYXJ0Lm5hbWU7CiAgICAgICAgZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmVlbnMubGVuZ3RoOyBpKyspewogICAgICAgICAgICBpZiAoc2NyZWVuc1tpXS50eXBlID09PSAncScgJiYgc2NyZWVuc1tpXS5waSA9PT0gcGkpeyBzdGF0ZS5pZHggPSBpOyBicmVhazsgfQogICAgICAgICAgfQogICAgICAgICAgcmVuZGVyKCk7IHNjcm9sbFRvRWwoY2F0KTsKICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBkLnRpdGxlID0gcGFydC5uYW1lOwogICAgICB9CiAgICAgIGRvdHNFbC5hcHBlbmRDaGlsZChkKTsKICAgIH0pOwogIH0KCiAgLyogLS0tLS0tLS0tLSBjaHJvbWUgcGllY2VzIC0tLS0tLS0tLS0gKi8KICBmdW5jdGlvbiBtYWtlQmFyKHRpdGxlLCB3aXRoVGltZXIpewogICAgdmFyIGJhciA9IGVsKCdkaXYnLCAnY2xwLWJhcicpOwogICAgYmFyLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1iYXItdGl0bGUnLCB0aXRsZSkpOwogICAgaWYgKHdpdGhUaW1lciAmJiBzdGF0ZS50aW1lck9uKXsKICAgICAgdmFyIHQgPSBlbCgnc3BhbicsICdjbHAtYmFyLXRpbWVyJyk7CiAgICAgIHQuaWQgPSAnY2xwUVRpbWVyJzsKICAgICAgdC5pbm5lckhUTUwgPSAnVGltZSByZW1haW5pbmc6IDxiPicgKyBmbXQocVJlbWFpbmluZykgKyAnPC9iPic7CiAgICAgIGJhci5hcHBlbmRDaGlsZCh0KTsKICAgIH0KICAgIHZhciBuZXh0ID0gZWwoJ2J1dHRvbicsICdjbHAtbmV4dCcsICdOZXh0Jyk7CiAgICBuZXh0LnR5cGUgPSAnYnV0dG9uJzsKICAgIG5leHQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgICBjbG9zZVBvcHVwKCk7CiAgICAgIGlmIChzdGF0ZS5pZHggPCBzY3JlZW5zLmxlbmd0aCAtIDEpeyBzdGF0ZS5pZHgrKzsgcmVuZGVyKCk7IHNjcm9sbFRvRWwoY2F0KTsgfQogICAgfSk7CiAgICBpZiAoc2NyZWVuc1tzdGF0ZS5pZHhdLnR5cGUgPT09ICdmaW5pc2gnKSBuZXh0LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICBiYXIuYXBwZW5kQ2hpbGQobmV4dCk7CiAgICByZXR1cm4gYmFyOwogIH0KICBmdW5jdGlvbiBtYWtlSW5zdHIodGV4dCl7CiAgICB2YXIgcm93ID0gZWwoJ2RpdicsICdjbHAtaW5zdHInKTsKICAgIHJvdy5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtaW5mbycsICdpJykpOwogICAgcm93LmFwcGVuZENoaWxkKGVsKCdwJywgJycsIHRleHQpKTsKICAgIHJldHVybiByb3c7CiAgfQogIHZhciBTUEVBS0VSX1NWRyA9ICc8c3ZnIHdpZHRoPSIyNiIgaGVpZ2h0PSIyNiIgdmlld0JveD0iMCAwIDI2IDI2IiBmaWxsPSJub25lIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JyArCiAgICAnPHJlY3QgeD0iMyIgeT0iOSIgd2lkdGg9IjYiIGhlaWdodD0iOCIgcng9IjEiIGZpbGw9ImN1cnJlbnRDb2xvciIvPicgKwogICAgJzxwYXRoIGQ9Ik05IDkgTDE1IDQgTDE1IDIyIEw5IDE3IFoiIGZpbGw9ImN1cnJlbnRDb2xvciIvPicgKwogICAgJzxwYXRoIGQ9Ik0xOCA5IGE1LjUgNS41IDAgMCAxIDAgOCIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+JyArCiAgICAnPHBhdGggZD0iTTIwLjUgNi41IGE5IDkgMCAwIDEgMCAxMyIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PC9zdmc+JzsKICB2YXIgUExBWV9TVkcgPSAnPHN2ZyB3aWR0aD0iMjYiIGhlaWdodD0iMjYiIHZpZXdCb3g9IjAgMCAyNiAyNiIgZmlsbD0ibm9uZSIgYXJpYS1oaWRkZW49InRydWUiPicgKwogICAgJzxwYXRoIGQ9Ik04IDUgTDIxIDEzIEw4IDIxIFoiIGZpbGw9ImN1cnJlbnRDb2xvciIvPjwvc3ZnPic7CgogIC8qIC0tLS0tLS0tLS0gc2NyZWVucyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gcmVuZGVySW50cm8oc2NyLCByb290KXsKICAgIHZhciBwYXJ0ID0gVEVTVF9EQVRBLnBhcnRzW3Njci5waV07CiAgICByb290LnNldEF0dHJpYnV0ZSgnZGF0YS1zY3JlZW4tbGFiZWwnLCBwYXJ0Lm5hbWUgKyAnIFx1MjAxNCBJbnN0cnVjdGlvbnMnKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQobWFrZUluc3RyKCdJbnN0cnVjdGlvbnM6JykpOwogICAgdmFyIGJvZHkgPSBlbCgnZGl2JywgJ2NscC1pbnRyby1ib2R5Jyk7CiAgICBib2R5LmFwcGVuZENoaWxkKGVsKCdoMycsICcnLCBwYXJ0LmludHJvVGl0bGUpKTsKICAgIHZhciB1bCA9IGVsKCd1bCcsICdjbHAtYnVsbGV0cycpOwogICAgcGFydC5pbnRyb0J1bGxldHMuZm9yRWFjaChmdW5jdGlvbihiKXsgdWwuYXBwZW5kQ2hpbGQoZWwoJ2xpJywgJycsIGIpKTsgfSk7CiAgICBib2R5LmFwcGVuZENoaWxkKHVsKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQoYm9keSk7CiAgfQoKICBmdW5jdGlvbiByZW5kZXJNZWRpYShzY3IsIHJvb3QpewogICAgdmFyIHBhcnQgPSBURVNUX0RBVEEucGFydHNbc2NyLnBpXTsKICAgIHZhciBzZWMgPSBwYXJ0LnNlY3Rpb25zW3Njci5zaV07CiAgICByb290LnNldEF0dHJpYnV0ZSgnZGF0YS1zY3JlZW4tbGFiZWwnLCBwYXJ0Lm5hbWUgKyAnIFx1MjAxNCBNZWRpYScpOwogICAgcm9vdC5hcHBlbmRDaGlsZChtYWtlSW5zdHIoc2VjLm1lZGlhSW5zdHJ1Y3Rpb24pKTsKdmFyIF9haz1zY3IucGkrIi4iK3Njci5zaSxfYXU9KHR5cGVvZiBDTFBfQVVESU8hPT0idW5kZWZpbmVkIikmJkNMUF9BVURJT1tfYWtdO2lmKF9hdSl7dmFyIF9pc1Y9KHR5cGVvZiBDTFBfQVVESU9fVklERU8hPT0idW5kZWZpbmVkIikmJkNMUF9BVURJT19WSURFT1tfYWtdO3ZhciBfcD1lbCgiZGl2IiwiY2xwLW1lZGlhLXBhbmVsIik7dmFyIF9jPWVsKCJkaXYiLCJjbHAtbWVkaWEtY2FyZCIrKF9pc1Y\/IiBjbHAtaXMtdmlkZW8iOiIiKSk7dmFyIF9tPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoX2lzVj8idmlkZW8iOiJhdWRpbyIpO19tLnNyYz1fYXU7X20uY29udHJvbHM9dHJ1ZTtfbS5wcmVsb2FkPSJub25lIjtfbS5jbGFzc05hbWU9ImNscC1yZWFsbWVkaWEiO19tLnNldEF0dHJpYnV0ZSgiY29udHJvbHNMaXN0Iiwibm9kb3dubG9hZCIpO19tLnN0eWxlLmNzc1RleHQ9X2lzVj8id2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjhweDtiYWNrZ3JvdW5kOiMwMDA7ZGlzcGxheTpibG9jayI6IndpZHRoOjEwMCU7ZGlzcGxheTpibG9jayI7X2MuYXBwZW5kQ2hpbGQoX20pO19wLmFwcGVuZENoaWxkKF9jKTtfcC5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLW9uY2Utbm90ZSIsIkluIHRoZSByZWFsIHRlc3QgdGhpcyByZWNvcmRpbmcgcGxheXMgb25jZS4gRm9yIHByYWN0aWNlIHlvdSBjYW4gcmVwbGF5IGl0IFx1MjAxNCBidXQgdHJ5IHRvIGxpc3RlbiBvbmx5IG9uY2UgZmlyc3QuIikpO3Jvb3QuYXBwZW5kQ2hpbGQoX3ApO3JldHVybjt9CgogICAgaWYgKENFTFBJUF9ZVC52aWRlb0lkKXsKICAgICAgdmFyIGNoID0gQ0xQX0NIQVBURVJTW3Njci5waSArICcuJyArIHNjci5zaV0gfHwgWzAsIDBdOwogICAgICB2YXIgdnBhbmVsID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtcGFuZWwnKTsKICAgICAgdmFyIHZjYXJkID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtY2FyZCBjbHAtaXMtdmlkZW8nKTsKICAgICAgdmFyIHdyYXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgd3JhcC5zdHlsZS5jc3NUZXh0ID0gJ3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7YXNwZWN0LXJhdGlvOjE2Lzk7Ym9yZGVyLXJhZGl1czo4cHg7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQ6IzAwMDsnOwogICAgICB2YXIgaWZyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7CiAgICAgIGlmci5zcmMgPSAnaHR0cHM6Ly93d3cueW91dHViZS1ub2Nvb2tpZS5jb20vZW1iZWQvJyArIENFTFBJUF9ZVC52aWRlb0lkICsgJz9zdGFydD0nICsgY2hbMF0gKyAoY2hbMV0gPyAnJmVuZD0nICsgY2hbMV0gOiAnJykgKyAnJnJlbD0wJm1vZGVzdGJyYW5kaW5nPTEnOwogICAgICBpZnIuYWxsb3cgPSAnYXV0b3BsYXk7IGVuY3J5cHRlZC1tZWRpYTsgcGljdHVyZS1pbi1waWN0dXJlJzsKICAgICAgaWZyLmFsbG93RnVsbHNjcmVlbiA9IHRydWU7CiAgICAgIGlmci50aXRsZSA9ICdDRUxQSVAgTGlzdGVuaW5nIG1lZGlhJzsKICAgICAgaWZyLnN0eWxlLmNzc1RleHQgPSAncG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JvcmRlcjowOyc7CiAgICAgIHdyYXAuYXBwZW5kQ2hpbGQoaWZyKTsKICAgICAgdmNhcmQuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICAgIHZwYW5lbC5hcHBlbmRDaGlsZCh2Y2FyZCk7CiAgICAgIHZwYW5lbC5hcHBlbmRDaGlsZChlbCgnZGl2JywgJ2NscC1vbmNlLW5vdGUnLCAnSW4gdGhlIHJlYWwgdGVzdCB0aGlzIHBsYXlzIG9ubHkgb25jZSBcdTIwMTQgcHJlc3MgTkVYVCB3aGVuIGl0IGVuZHMuJykpOwogICAgICByb290LmFwcGVuZENoaWxkKHZwYW5lbCk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgcGFuZWwgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1wYW5lbCcpOwogICAgdmFyIGNhcmQgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1jYXJkJyArIChzZWMubWVkaWFUeXBlID09PSAndmlkZW8nID8gJyBjbHAtaXMtdmlkZW8nIDogJycpKTsKICAgIC8qIC5jbHAtbWVkaWEtem9uZSBpcyB0aGUgZnV0dXJlIFlvdVR1YmUtZW1iZWQgdGFyZ2V0IChkYXRhLW1lZGlhLXNsb3QpICovCiAgICB2YXIgem9uZSA9IGVsKCdkaXYnLCAnY2xwLW1lZGlhLXpvbmUnKTsKICAgIHpvbmUuc2V0QXR0cmlidXRlKCdkYXRhLW1lZGlhLXNsb3QnLCBzY3IucGkgKyAnLicgKyBzY3Iuc2kpOwogICAgdmFyIGljb24gPSBlbCgnZGl2JywgJ2NscC1zcGVha2VyJyk7CiAgICBpY29uLmlubmVySFRNTCA9IHNlYy5tZWRpYVR5cGUgPT09ICd2aWRlbycgPyBQTEFZX1NWRyA6IFNQRUFLRVJfU1ZHOwogICAgdmFyIG1haW4gPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1tYWluJyk7CiAgICB2YXIgbGFiZWwgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1sYWJlbCcsICdQbGF5aW5nXHUyMDI2Jyk7CiAgICB2YXIgcHJvZyA9IGVsKCdkaXYnLCAnY2xwLXByb2dyZXNzJyk7CiAgICB2YXIgZmlsbCA9IGVsKCdkaXYnLCAnY2xwLXByb2dyZXNzLWZpbGwnKTsKICAgIHByb2cuYXBwZW5kQ2hpbGQoZmlsbCk7CgogICAgaWYgKHNlYy5tZWRpYVR5cGUgPT09ICd2aWRlbycpewogICAgICB6b25lLmFwcGVuZENoaWxkKGljb24pOwogICAgICBjYXJkLmFwcGVuZENoaWxkKHpvbmUpOwogICAgICBtYWluLmFwcGVuZENoaWxkKGxhYmVsKTsKICAgICAgbWFpbi5hcHBlbmRDaGlsZChwcm9nKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZChtYWluKTsKICAgIH0gZWxzZSB7CiAgICAgIG1haW4uYXBwZW5kQ2hpbGQobGFiZWwpOwogICAgICBtYWluLmFwcGVuZENoaWxkKHByb2cpOwogICAgICB6b25lLmFwcGVuZENoaWxkKGljb24pOwogICAgICB6b25lLmFwcGVuZENoaWxkKG1haW4pOwogICAgICBjYXJkLmFwcGVuZENoaWxkKHpvbmUpOwogICAgfQogICAgcGFuZWwuYXBwZW5kQ2hpbGQoY2FyZCk7CgogICAgdmFyIG1ldGEgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1tZXRhJyk7CiAgICB2YXIgdGltZVNwYW4gPSBlbCgnc3BhbicsICcnLCAnMDowMCAvICcgKyBmbXQoc2VjLmR1cmF0aW9uKSk7CiAgICBtZXRhLmFwcGVuZENoaWxkKHRpbWVTcGFuKTsKICAgIHZhciB2b2wgPSBlbCgnc3BhbicsICcnKTsKICAgIHZvbC5pbm5lckhUTUwgPSAnPHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAyNiAyNiIgZmlsbD0ibm9uZSIgYXJpYS1oaWRkZW49InRydWUiPicgKwogICAgICAnPHJlY3QgeD0iMyIgeT0iOSIgd2lkdGg9IjYiIGhlaWdodD0iOCIgcng9IjEiIGZpbGw9ImN1cnJlbnRDb2xvciIvPicgKwogICAgICAnPHBhdGggZD0iTTkgOSBMMTUgNCBMMTUgMjIgTDkgMTcgWiIgZmlsbD0iY3VycmVudENvbG9yIi8+JyArCiAgICAgICc8cGF0aCBkPSJNMTggOSBhNS41IDUuNSAwIDAgMSAwIDgiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPic7CiAgICBtZXRhLmFwcGVuZENoaWxkKHZvbCk7CiAgICBwYW5lbC5hcHBlbmRDaGlsZChtZXRhKTsKICAgIHBhbmVsLmFwcGVuZENoaWxkKGVsKCdkaXYnLCAnY2xwLW9uY2Utbm90ZScsIChzZWMubWVkaWFUeXBlID09PSAndmlkZW8nID8gJ1RoaXMgdmlkZW8gcGxheXMnIDogJ1RoaXMgcmVjb3JkaW5nIHBsYXlzJykgKyAnIG9ubHkgb25jZSBcdTIwMTQganVzdCBsaWtlIHRoZSByZWFsIHRlc3QuJykpOwogICAgaWYgKCFDRUxQSVBfWVQudmlkZW9JZCl7IHBhbmVsLmFwcGVuZENoaWxkKGVsKCdkaXYnLCAnY2xwLW9uY2Utbm90ZScsICdPZmZpY2lhbCBhdWRpby92aWRlbyBpcyBiZWluZyBwcmVwYXJlZCBcdTIwMTQgdGhlIGJhciBhYm92ZSBpcyBhIHNpbXVsYXRpb24uIFByZXNzIE5FWFQgdG8gY29udGludWUuJykpOyB9CiAgICByb290LmFwcGVuZENoaWxkKHBhbmVsKTsKCiAgICAvKiBzaW11bGF0ZWQgcGxheWJhY2sgKi8KICAgIHZhciBlbGFwc2VkID0gMDsKICAgIG1lZGlhVGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpewogICAgICBlbGFwc2VkKys7CiAgICAgIGlmIChlbGFwc2VkID49IHNlYy5kdXJhdGlvbil7CiAgICAgICAgZWxhcHNlZCA9IHNlYy5kdXJhdGlvbjsKICAgICAgICBjbGVhckludGVydmFsKG1lZGlhVGltZXIpOyBtZWRpYVRpbWVyID0gbnVsbDsKICAgICAgICBsYWJlbC50ZXh0Q29udGVudCA9ICdGaW5pc2hlZCc7CiAgICAgIH0KICAgICAgZmlsbC5zdHlsZS53aWR0aCA9IE1hdGgucm91bmQoZWxhcHNlZCAvIHNlYy5kdXJhdGlvbiAqIDEwMCkgKyAnJSc7CiAgICAgIHRpbWVTcGFuLnRleHRDb250ZW50ID0gZm10KGVsYXBzZWQpICsgJyAvICcgKyBmbXQoc2VjLmR1cmF0aW9uKTsKICAgIH0sIDEwMDApOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyUXVlc3Rpb25zKHNjciwgcm9vdCl7CiAgICB2YXIgcGFydCA9IFRFU1RfREFUQS5wYXJ0c1tzY3IucGldOwogICAgdmFyIHNlYyA9IHBhcnQuc2VjdGlvbnNbc2NyLnNpXTsKICAgIHJvb3Quc2V0QXR0cmlidXRlKCdkYXRhLXNjcmVlbi1sYWJlbCcsIHBhcnQubmFtZSArICcgXHUyMDE0IFF1ZXN0aW9ucycpOwogICAgcm9vdC5hcHBlbmRDaGlsZChtYWtlSW5zdHIocGFydC5xSW5zdHJ1Y3Rpb24pKTsKCiAgICB2YXIgcGFuZWwgPSBlbCgnZGl2JywgJ2NscC1xLXBhbmVsJyk7CiAgICBzZWMucXVlc3Rpb25zLmZvckVhY2goZnVuY3Rpb24ocSwgcWkpewogICAgICB2YXIga2V5ID0gcUtleShzY3IucGksIHNjci5zaSwgcWkpOwogICAgICB2YXIgcm93ID0gZWwoJ2RpdicsICdjbHAtcScpOwogICAgICB2YXIgbnVtID0gZWwoJ3NwYW4nLCAnY2xwLXFudW0nLCBxLm4gKyAnLiAnKTsKICAgICAgcm93LmFwcGVuZENoaWxkKG51bSk7CiAgICAgIHJvdy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShxLnN0ZW0gKyAnICcpKTsKCiAgICAgIHZhciBkZCA9IGVsKCdidXR0b24nLCAnY2xwLWRkJyk7CiAgICAgIGRkLnR5cGUgPSAnYnV0dG9uJzsKICAgICAgZGQuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLWRkLXRleHQnKSk7CiAgICAgIGRkLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1kZC1jYXJldCcsICdcdTI1QkMnKSk7CiAgICAgIHZhciBhbnMgPSBzdGF0ZS5hbnN3ZXJzW2tleV07CiAgICAgIHNldFRyaWdnZXJMYWJlbChkZCwgYW5zICE9PSB1bmRlZmluZWQgPyBxLm9wdGlvbnNbYW5zXSA6ICcnLCBhbnMgPT09IHVuZGVmaW5lZCk7CiAgICAgIHJvdy5hcHBlbmRDaGlsZChkZCk7CgogICAgICBpZiAocS50b2RvKXsKICAgICAgICByb3cuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLXRvZG8tdGFnJywgJ1RPRE8nKSk7CiAgICAgIH0KCiAgICAgIGlmIChzdGF0ZS5jaGVja2VkKXsKICAgICAgICBkZC5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgdmFyIGNvcnJlY3QgPSBhbnMgPT09IHEua2V5IC0gMTsKICAgICAgICBkZC5jbGFzc0xpc3QuYWRkKGNvcnJlY3QgPyAnY2xwLW1hcmstcmlnaHQnIDogJ2NscC1tYXJrLXdyb25nJyk7CiAgICAgICAgaWYgKCFjb3JyZWN0KXsKICAgICAgICAgIHZhciByZXYgPSBlbCgnc3BhbicsICdjbHAtcmV2ZWFsJyk7CiAgICAgICAgICByZXYuaW5uZXJIVE1MID0gJ0NvcnJlY3QgYW5zd2VyOiA8Yj48L2I+JzsKICAgICAgICAgIHJldi5xdWVyeVNlbGVjdG9yKCdiJykudGV4dENvbnRlbnQgPSBxLm9wdGlvbnNbcS5rZXkgLSAxXTsKICAgICAgICAgIHJvdy5hcHBlbmRDaGlsZChyZXYpOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBkZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGV2KXsKICAgICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgb3BlblBvcHVwKGRkLCBzY3IucGksIHNjci5zaSwgcWkpOwogICAgICAgIH0pOwogICAgICB9CiAgICAgIHBhbmVsLmFwcGVuZENoaWxkKHJvdyk7CiAgICB9KTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQocGFuZWwpOwoKICAgIC8qIGNvdW50ZG93biAqLwogICAgcVJlbWFpbmluZyA9IHNlYy50aW1lTWludXRlcyAqIDYwOwogICAgc3RhcnRRVGltZXIoKTsKICB9CiAgZnVuY3Rpb24gc3RhcnRRVGltZXIoKXsKICAgIGlmIChxVGltZXIpIGNsZWFySW50ZXJ2YWwocVRpbWVyKTsKICAgIGlmICghc3RhdGUudGltZXJPbikgcmV0dXJuOwogICAgcVRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsKICAgICAgaWYgKHFSZW1haW5pbmcgPiAwKSBxUmVtYWluaW5nLS07CiAgICAgIHZhciB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFFUaW1lcicpOwogICAgICBpZiAodCkgdC5pbm5lckhUTUwgPSAnVGltZSByZW1haW5pbmc6IDxiPicgKyBmbXQocVJlbWFpbmluZykgKyAnPC9iPic7CiAgICAgIGlmIChxUmVtYWluaW5nIDw9IDApeyBjbGVhckludGVydmFsKHFUaW1lcik7IHFUaW1lciA9IG51bGw7IH0KICAgIH0sIDEwMDApOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyRmluaXNoKHJvb3QpewogICAgcm9vdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2NyZWVuLWxhYmVsJywgJ0VuZCBvZiBUZXN0Jyk7CiAgICB2YXIgYm94ID0gZWwoJ2RpdicsICdjbHAtZmluaXNoJyk7CiAgICBib3guYXBwZW5kQ2hpbGQoZWwoJ2gzJywgJycsICdFbmQgb2YgdGhlIExpc3RlbmluZyBUZXN0JykpOwogICAgYm94LmFwcGVuZENoaWxkKGVsKCdwJywgJycsICdZb3UgaGF2ZSBhbnN3ZXJlZCAnICsgYW5zd2VyZWRDb3VudCgpICsgJyBvZiAnICsgVE9UQUxfUSArICcgcXVlc3Rpb25zLiBDaGVjayB5b3VyIGFuc3dlcnMgdG8gc2VlIHlvdXIgc2NvcmUsIHBhcnQtYnktcGFydCByZXN1bHRzLCBhbmQgdHJhbnNjcmlwdHMuJykpOwogICAgdmFyIGJ0biA9IGVsKCdidXR0b24nLCAnY2xwLWZpbmlzaC1jaGVjaycsICdDaGVjayBhbnN3ZXJzJyk7CiAgICBidG4udHlwZSA9ICdidXR0b24nOwogICAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2hlY2tBbnN3ZXJzKTsKICAgIGJveC5hcHBlbmRDaGlsZChidG4pOwogICAgcm9vdC5hcHBlbmRDaGlsZChib3gpOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyKCl7CiAgICBjbGVhclRpbWVycygpOwogICAgY2xvc2VQb3B1cCgpOwogICAgY2F0LmlubmVySFRNTCA9ICcnOwogICAgdmFyIHNjciA9IHNjcmVlbnNbc3RhdGUuaWR4XTsKCiAgICBpZiAoIXN0YXRlLnN0YXJ0ZWQpewogICAgICB2YXIgYmFyMCA9IGVsKCdkaXYnLCAnY2xwLWJhcicpOwogICAgICBiYXIwLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1iYXItdGl0bGUnLCBURVNUX0RBVEEudGVzdExhYmVsICsgJyBcdTIwMTMgTGlzdGVuaW5nIFRlc3QnKSk7CiAgICAgIGNhdC5hcHBlbmRDaGlsZChiYXIwKTsKICAgICAgdmFyIGlkbGUgPSBlbCgnZGl2JywgJ2NscC1pZGxlJyk7CiAgICAgIHZhciBwID0gZWwoJ3AnLCAnJywgJ1ByZXNzIFx1MjAxQ1N0YXJ0IHRlc3RcdTIwMUQgYWJvdmUgdG8gYmVnaW4uIFRoZSB0ZXN0IGhhcyA2IHBhcnRzIGFuZCAzOCBxdWVzdGlvbnMsIGFuZCBldmVyeSByZWNvcmRpbmcgYW5kIHZpZGVvIHBsYXlzIG9ubHkgb25jZSBcdTIwMTQganVzdCBsaWtlIHRoZSByZWFsIGNvbXB1dGVyLWRlbGl2ZXJlZCB0ZXN0LicpOwogICAgICBpZGxlLmFwcGVuZENoaWxkKHApOwogICAgICBjYXQuYXBwZW5kQ2hpbGQoaWRsZSk7CiAgICAgIHJlbmRlckRvdHMoKTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhciBpc1EgPSBzY3IudHlwZSA9PT0gJ3EnOwogICAgaWYgKGlzUSl7CiAgICAgIHZhciBzZWMgPSBURVNUX0RBVEEucGFydHNbc2NyLnBpXS5zZWN0aW9uc1tzY3Iuc2ldOwogICAgICBxUmVtYWluaW5nID0gc2VjLnRpbWVNaW51dGVzICogNjA7CiAgICB9CiAgICB2YXIgdGl0bGUgPSBzY3IudHlwZSA9PT0gJ2ZpbmlzaCcKICAgICAgPyBURVNUX0RBVEEudGVzdExhYmVsICsgJyBcdTIwMTMgTGlzdGVuaW5nIFRlc3QnCiAgICAgIDogVEVTVF9EQVRBLnBhcnRzW3Njci5waV0uaGVhZGVyVGl0bGU7CiAgICBjYXQuYXBwZW5kQ2hpbGQobWFrZUJhcih0aXRsZSwgaXNRKSk7CgogICAgdmFyIHNjcmVlbiA9IGVsKCdkaXYnLCAnY2xwLXNjcmVlbicpOwogICAgaWYgKHNjci50eXBlID09PSAnaW50cm8nKSByZW5kZXJJbnRybyhzY3IsIHNjcmVlbik7CiAgICBlbHNlIGlmIChzY3IudHlwZSA9PT0gJ21lZGlhJykgcmVuZGVyTWVkaWEoc2NyLCBzY3JlZW4pOwogICAgZWxzZSBpZiAoc2NyLnR5cGUgPT09ICdxJykgcmVuZGVyUXVlc3Rpb25zKHNjciwgc2NyZWVuKTsKICAgIGVsc2UgcmVuZGVyRmluaXNoKHNjcmVlbik7CiAgICBjYXQuYXBwZW5kQ2hpbGQoc2NyZWVuKTsKICAgIHJlbmRlckRvdHMoKTsKICB9CgogIC8qIC0tLS0tLS0tLS0gcmVzdWx0cyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gY2hlY2tBbnN3ZXJzKCl7CiAgICBpZiAoc3RhdGUuY2hlY2tlZCkgcmV0dXJuOwogICAgc3RhdGUuY2hlY2tlZCA9IHRydWU7CiAgICB2YXIgc2NvcmUgPSBjb21wdXRlU2NvcmUoKTsKICAgIHVwZGF0ZVNjb3JlQ2hpcCgpOwogICAgcmVuZGVyKCk7CiAgICByZW5kZXJSZXN1bHRzKHNjb3JlKTsKICAgIHJlc3VsdHNFbC5oaWRkZW4gPSBmYWxzZTsKICAgIHNjcm9sbFRvRWwocmVzdWx0c0VsKTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlclJlc3VsdHMoc2NvcmUpewogICAgcmVzdWx0c0VsLmlubmVySFRNTCA9ICcnOwogICAgcmVzdWx0c0VsLmFwcGVuZENoaWxkKGVsKCdoMicsICcnLCAnWW91ciByZXN1bHRzJykpOwogICAgdmFyIGdyaWQgPSBlbCgnZGl2JywgJ2NscC1yZXMtZ3JpZCcpOwoKICAgIC8qIHJpbmcgY2FyZCAqLwogICAgdmFyIHJpbmdDYXJkID0gZWwoJ2RpdicsICdjbHAtY2FyZCBjbHAtcmluZy1jYXJkIGNscC1yZXYnKTsKICAgIHZhciB3cmFwID0gZWwoJ2RpdicsICdjbHAtcmluZy13cmFwJyk7CiAgICB2YXIgUiA9IDU2LCBDID0gMiAqIE1hdGguUEkgKiBSOwogICAgd3JhcC5pbm5lckhUTUwgPQogICAgICAnPHN2ZyB3aWR0aD0iMTMyIiBoZWlnaHQ9IjEzMiIgdmlld0JveD0iMCAwIDEzMiAxMzIiPicgKwogICAgICAnPGNpcmNsZSBjeD0iNjYiIGN5PSI2NiIgcj0iJyArIFIgKyAnIiBzdHJva2U9IiNFMkU4RjAiIHN0cm9rZS13aWR0aD0iMTEiIGZpbGw9Im5vbmUiLz4nICsKICAgICAgJzxjaXJjbGUgaWQ9ImNscFJpbmciIGN4PSI2NiIgY3k9IjY2IiByPSInICsgUiArICciIHN0cm9rZT0iIzEwQjk4MSIgc3Ryb2tlLXdpZHRoPSIxMSIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAnICsKICAgICAgJ3N0cm9rZS1kYXNoYXJyYXk9IicgKyBDICsgJyIgc3Ryb2tlLWRhc2hvZmZzZXQ9IicgKyBDICsgJyIvPjwvc3ZnPic7CiAgICB2YXIgbnVtID0gZWwoJ2RpdicsICdjbHAtcmluZy1udW0nKTsKICAgIHZhciBiaWcgPSBlbCgnYicsICcnLCAnMCcpOwogICAgbnVtLmFwcGVuZENoaWxkKGJpZyk7CiAgICBudW0uYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnJywgJ291dCBvZiAnICsgVE9UQUxfUSkpOwogICAgd3JhcC5hcHBlbmRDaGlsZChudW0pOwogICAgcmluZ0NhcmQuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICByaW5nQ2FyZC5hcHBlbmRDaGlsZChlbCgnaDMnLCAnJywgJ1RvdGFsIHNjb3JlJykpOwogICAgZ3JpZC5hcHBlbmRDaGlsZChyaW5nQ2FyZCk7CgogICAgLyogYnJlYWtkb3duIGNhcmQgKi8KICAgIHZhciBiZCA9IGVsKCdkaXYnLCAnY2xwLWNhcmQgY2xwLXJldicpOwogICAgYmQuYXBwZW5kQ2hpbGQoZWwoJ2gzJywgJycsICdQYXJ0LWJ5LXBhcnQgYnJlYWtkb3duJykpOwogICAgdmFyIGNoaXBzID0gZWwoJ2RpdicsICdjbHAtcGFydC1jaGlwcycpOwogICAgc2NvcmUucGVyUGFydC5mb3JFYWNoKGZ1bmN0aW9uKHBwLCBwaSl7CiAgICAgIHZhciBjID0gZWwoJ3NwYW4nLCAnY2xwLXBhcnQtY2hpcCcpOwogICAgICBjLmlubmVySFRNTCA9ICdQJyArIChwaSArIDEpICsgJyA8Yj4nICsgcHAuY29ycmVjdCArICcvJyArIHBwLnRvdGFsICsgJzwvYj4nOwogICAgICBjaGlwcy5hcHBlbmRDaGlsZChjKTsKICAgIH0pOwogICAgYmQuYXBwZW5kQ2hpbGQoY2hpcHMpOwoKICAgIHZhciBlc3QgPSBjbGJFc3RpbWF0ZShzY29yZS50b3RhbCk7CiAgICB2YXIgY2xiID0gZWwoJ2RpdicsICdjbHAtY2xiLXJvdycpOwogICAgY2xiLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1jbGItYmFkZ2UnLCBlc3QubGV2ZWwpKTsKICAgIGNsYi5hcHBlbmRDaGlsZChlbCgncCcsICcnLCBlc3Qubm90ZSArICcgXHUyMDE0IGVzdGltYXRlZCBmcm9tIGEgcmF3IHNjb3JlIG9mICcgKyBzY29yZS50b3RhbCArICcvJyArIFRPVEFMX1EgKyAnLiBUT0RPOiBwbGFjZWhvbGRlciBtYXBwaW5nIFx1MjAxNCB2ZXJpZnkgYWdhaW5zdCB0aGUgb2ZmaWNpYWwgQ0VMUElQIHNjb3JlIGNoYXJ0LicpKTsKICAgIGJkLmFwcGVuZENoaWxkKGNsYik7CiAgICBncmlkLmFwcGVuZENoaWxkKGJkKTsKICAgIHJlc3VsdHNFbC5hcHBlbmRDaGlsZChncmlkKTsKCiAgICAvKiB0cmFuc2NyaXB0cyAqLwogICAgdmFyIHRyV3JhcCA9IGVsKCdkaXYnLCAnY2xwLXRyYW5zY3JpcHRzJyk7CiAgICBURVNUX0RBVEEucGFydHMuZm9yRWFjaChmdW5jdGlvbihwYXJ0LCBwaSl7CiAgICAgIHZhciBjYXJkID0gZWwoJ2RpdicsICdjbHAtdHItY2FyZCBjbHAtcmV2Jyk7CiAgICAgIHZhciBoZWFkID0gZWwoJ2J1dHRvbicsICdjbHAtdHItaGVhZCcpOwogICAgICBoZWFkLnR5cGUgPSAnYnV0dG9uJzsKICAgICAgaGVhZC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICcnLCAnVHJhbnNjcmlwdCBcdTIwMTQgJyArIHBhcnQubmFtZSkpOwogICAgICBoZWFkLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC10ci1jYXJldCcsICdcdTI1QkMnKSk7CiAgICAgIGhlYWQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpeyBjYXJkLmNsYXNzTGlzdC50b2dnbGUoJ2NscC1vcGVuJyk7IH0pOwogICAgICB2YXIgYm9keSA9IGVsKCdkaXYnLCAnY2xwLXRyLWJvZHknKTsKICAgICAgYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShwYXJ0LnRyYW5zY3JpcHQpKTsKICAgICAgaWYgKHBhcnQudHJhbnNjcmlwdFRvZG8pewogICAgICAgIGJvZHkuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLXRyLXRvZG8nLCAnVE9ETzogcmVwbGFjZSB0aGlzIHN1bW1hcnkgd2l0aCB0aGUgZnVsbCBvZmZpY2lhbCB0cmFuc2NyaXB0LicpKTsKICAgICAgfQogICAgICBjYXJkLmFwcGVuZENoaWxkKGhlYWQpOwogICAgICBjYXJkLmFwcGVuZENoaWxkKGJvZHkpOwogICAgICB0cldyYXAuYXBwZW5kQ2hpbGQoY2FyZCk7CiAgICB9KTsKICAgIHJlc3VsdHNFbC5hcHBlbmRDaGlsZCh0cldyYXApOwoKICAgIC8qIHJldmVhbCArIGNvdW50LXVwICovCiAgICB2YXIgcmV2RWxzID0gcmVzdWx0c0VsLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jbHAtcmV2Jyk7CiAgICBpZiAoJ0ludGVyc2VjdGlvbk9ic2VydmVyJyBpbiB3aW5kb3cgJiYgIXJlZHVjZWRNb3Rpb24pewogICAgICB2YXIgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oZW50cmllcyl7CiAgICAgICAgZW50cmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVuKXsKICAgICAgICAgIGlmIChlbi5pc0ludGVyc2VjdGluZyl7IGVuLnRhcmdldC5jbGFzc0xpc3QuYWRkKCdjbHAtaW4nKTsgaW8udW5vYnNlcnZlKGVuLnRhcmdldCk7IH0KICAgICAgICB9KTsKICAgICAgfSwgeyB0aHJlc2hvbGQ6IDAuMTUgfSk7CiAgICAgIHJldkVscy5mb3JFYWNoKGZ1bmN0aW9uKGUpeyBpby5vYnNlcnZlKGUpOyB9KTsKICAgIH0gZWxzZSB7CiAgICAgIHJldkVscy5mb3JFYWNoKGZ1bmN0aW9uKGUpeyBlLmNsYXNzTGlzdC5hZGQoJ2NscC1pbicpOyB9KTsKICAgIH0KCiAgICB2YXIgcmluZyA9IHJlc3VsdHNFbC5xdWVyeVNlbGVjdG9yKCcjY2xwUmluZycpOwogICAgdmFyIHRhcmdldCA9IHNjb3JlLnRvdGFsOwogICAgaWYgKHJlZHVjZWRNb3Rpb24pewogICAgICBiaWcudGV4dENvbnRlbnQgPSB0YXJnZXQ7CiAgICAgIHJpbmcuc3R5bGUuc3Ryb2tlRGFzaG9mZnNldCA9IEMgKiAoMSAtIHRhcmdldCAvIFRPVEFMX1EpOwogICAgfSBlbHNlIHsKICAgICAgdmFyIHQwID0gbnVsbCwgRFVSID0gMTEwMDsKICAgICAgZnVuY3Rpb24gc3RlcCh0cyl7CiAgICAgICAgaWYgKCF0MCkgdDAgPSB0czsKICAgICAgICB2YXIgcCA9IE1hdGgubWluKDEsICh0cyAtIHQwKSAvIERVUik7CiAgICAgICAgdmFyIGVhc2UgPSAxIC0gTWF0aC5wb3coMSAtIHAsIDMpOwogICAgICAgIGJpZy50ZXh0Q29udGVudCA9IE1hdGgucm91bmQoZWFzZSAqIHRhcmdldCk7CiAgICAgICAgcmluZy5zdHlsZS5zdHJva2VEYXNob2Zmc2V0ID0gQyAqICgxIC0gKGVhc2UgKiB0YXJnZXQpIC8gVE9UQUxfUSk7CiAgICAgICAgaWYgKHAgPCAxKSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RlcCk7CiAgICAgIH0KICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApOwogICAgfQogIH0KCiAgLyogLS0tLS0tLS0tLSB0b29sYmFyIC8gY29udHJvbHMgLS0tLS0tLS0tLSAqLwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBTdGFydCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIHN0YXRlLnN0YXJ0ZWQgPSB0cnVlOwogICAgc3RhdGUuaWR4ID0gMDsKICAgIHRvb2xiYXIuaGlkZGVuID0gZmFsc2U7CiAgICByZW5kZXIoKTsKICAgIHVwZGF0ZVNjb3JlQ2hpcCgpOwogICAgc2Nyb2xsVG9FbChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwU2ltJykpOwogIH0pOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBDaGVjaycpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIGlmICghc3RhdGUuc3RhcnRlZCkgcmV0dXJuOwogICAgY2hlY2tBbnN3ZXJzKCk7CiAgfSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFJlc2V0JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgc3RhdGUuc3RhcnRlZCA9IGZhbHNlOwogICAgc3RhdGUuaWR4ID0gMDsKICAgIHN0YXRlLmFuc3dlcnMgPSB7fTsKICAgIHN0YXRlLmNoZWNrZWQgPSBmYWxzZTsKICAgIHJlc3VsdHNFbC5oaWRkZW4gPSB0cnVlOwogICAgcmVzdWx0c0VsLmlubmVySFRNTCA9ICcnOwogICAgdG9vbGJhci5oaWRkZW4gPSB0cnVlOwogICAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgICByZW5kZXIoKTsKICAgIHNjcm9sbFRvRWwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscEFwcCcpLCAyMCk7CiAgfSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFRpbWVyVG9nZ2xlJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgc3RhdGUudGltZXJPbiA9ICFzdGF0ZS50aW1lck9uOwogICAgdGhpcy50ZXh0Q29udGVudCA9ICdUaW1lcjogJyArIChzdGF0ZS50aW1lck9uID8gJ29uJyA6ICdvZmYnKTsKICAgIHZhciB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFFUaW1lcicpOwogICAgaWYgKCFzdGF0ZS50aW1lck9uKXsKICAgICAgaWYgKHFUaW1lcil7IGNsZWFySW50ZXJ2YWwocVRpbWVyKTsgcVRpbWVyID0gbnVsbDsgfQogICAgICBpZiAodCkgdC5yZW1vdmUoKTsKICAgIH0gZWxzZSBpZiAoc2NyZWVuc1tzdGF0ZS5pZHhdICYmIHNjcmVlbnNbc3RhdGUuaWR4XS50eXBlID09PSAncScpewogICAgICByZW5kZXIoKTsKICAgIH0KICB9KTsKCiAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgcmVuZGVyKCk7Cn0pKCk7Cg=='));<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Listening Set 7 Practice Test 1: 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-6037","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6037","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=6037"}],"version-history":[{"count":1,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6037\/revisions"}],"predecessor-version":[{"id":6608,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6037\/revisions\/6608"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6037"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}