{"id":6054,"date":"2026-07-06T05:11:40","date_gmt":"2026-07-06T05:11:40","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-3-test-1-listening\/"},"modified":"2026-07-12T03:25:18","modified_gmt":"2026-07-12T03:25:18","slug":"celpip-set-3-test-1-listening","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-3-test-1-listening\/","title":{"rendered":"CELPIP Set 3 \u2013 Practice Test 1 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 3 &#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('dmFyIENMUF9BVURJTz17IjAuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9zM3QxLXAxczEubXAzIiwiMC4xIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L3MzdDEtcDFzMi5tcDMiLCIwLjIiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvczN0MS1wMXMzLm1wMyIsIjEuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9zM3QxLXAyLm1wMyIsIjIuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9zM3QxLXAzLm1wMyIsIjMuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9zM3QxLXA0Lm1wMyIsIjQuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9zM3QxLXA1Lm1wNCIsIjUuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9zM3QxLXA2Lm1wMyJ9O3ZhciBDTFBfQVVESU9fVklERU89eyI0LjAiOjF9OwoKKGZ1bmN0aW9uKCl7dmFyIHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtzLnRleHRDb250ZW50PSJcbi8qID09PT09PT09PT09PSBDRUxQSVAgTGlzdGVuaW5nIFByYWN0aWNlIFx1MjAxNCBzY29wZWQsIFdvcmRQcmVzcy1zYWZlID09PT09PT09PT09PSAqL1xuLmNscC13cmFwe1xuICAvKiBWQVJJQU5UX0NIUk9NRV9TVEFSVCAqL1xuICAtLWJhci1iZzojRThFQkVGO1xuICAtLWJhci1ib3JkZXI6I0QzRDlFMDtcbiAgLS1iYXItdGV4dDojMUYyOTM3O1xuICAtLXBhbmVsLW1lZGlhLWJnOiNGNEY1Rjc7XG4gIC0tcGFuZWwtbWVkaWEtYm9yZGVyOiNFM0U2RUE7XG4gIC0tbWVkaWEtY2FyZC1iZzojRUNFRUYxO1xuICAtLW1lZGlhLWNhcmQtYm9yZGVyOiNEOERERTM7XG4gIC0tcGFuZWwtcS1iZzojRTlGNEY3O1xuICAtLXBhbmVsLXEtYm9yZGVyOiNENkU4RUQ7XG4gIC0tZGQtb3Blbi1iZzojQ0JFQkY0O1xuICAvKiBWQVJJQU5UX0NIUk9NRV9FTkQgKi9cbiAgLS1uYXZ5OiMwNTBFMjA7IC0tZGFyazojMEExNjI4OyAtLWI5MDA6IzBEMjM1MjsgLS1iNzAwOiMxMjQ1QTg7IC0tYjUwMDojMjU2M0VCO1xuICAtLWI0MDA6IzNCODJGNjsgLS1iMjAwOiM5M0M1RkQ7IC0tYjEwMDojREJFQUZFOyAtLWI1MDojRUZGNkZGO1xuICAtLXRlYWw6IzBEOTQ4ODsgLS1jeWFuOiMwNkI2RDQ7IC0tZ3JlZW46IzEwQjk4MTsgLS1ncmVlbjUwOiNFQ0ZERjU7XG4gIC0tcm9zZTojRjQzRjVFOyAtLW9yYW5nZTojRjk3MzE2O1xuICAtLXRleHQ6IzBGMTcyQTsgLS1tdXRlZDojNDc1NTY5OyAtLXN1YnRsZTojOTRBM0I4OyAtLWJvcmRlcjojRTJFOEYwO1xuICAtLWNyaW1zb246I0I0MkIzQzsgLS13aGl0ZTojRkZGRkZGOyAtLXBhZ2U6I0Y4RkFGRjtcbiAgZm9udC1mYW1pbHk6J1BsdXMgSmFrYXJ0YSBTYW5zJyxzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSxzYW5zLXNlcmlmO1xuICBjb2xvcjp2YXIoLS10ZXh0KTtcbiAgbWF4LXdpZHRoOjExNDBweDsgbWFyZ2luOjAgYXV0bzsgcGFkZGluZzoxNnB4IDE2cHggNDhweDtcbiAgbGluZS1oZWlnaHQ6MS41OyBmb250LXNpemU6MTZweDtcbn1cbi5jbHAtd3JhcCAqLCAuY2xwLXdyYXAgKjo6YmVmb3JlLCAuY2xwLXdyYXAgKjo6YWZ0ZXJ7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfVxuLmNscC13cmFwIGJ1dHRvbnsgZm9udC1mYW1pbHk6aW5oZXJpdDsgY3Vyc29yOnBvaW50ZXI7IH1cbi5jbHAtd3JhcCBoMSwuY2xwLXdyYXAgaDIsLmNscC13cmFwIGgzLC5jbHAtd3JhcCBweyBtYXJnaW46MDsgfVxuXG4vKiA9PT09PT09PT09PT0gSEVSTyA9PT09PT09PT09PT0gKi9cbi5jbHAtaGVyb3tcbiAgcG9zaXRpb246cmVsYXRpdmU7IG92ZXJmbG93OmhpZGRlbjsgYm9yZGVyLXJhZGl1czoyMnB4O1xuICBiYWNrZ3JvdW5kOnZhcigtLW5hdnkpOyBjb2xvcjojZmZmO1xuICBwYWRkaW5nOjM2cHggNDBweDtcbiAgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGdhcDoxNHB4OyBhbGlnbi1pdGVtczpmbGV4LXN0YXJ0O1xuICBib3gtc2hhZG93OjAgMjBweCA0MHB4IC0yMHB4IHJnYmEoNSwxNCwzMiwuNDUpLCAwIDRweCAxMnB4IC02cHggcmdiYSg1LDE0LDMyLC4zKTtcbn1cbi5jbHAtYXVyb3JheyBwb3NpdGlvbjphYnNvbHV0ZTsgaW5zZXQ6MDsgcG9pbnRlci1ldmVudHM6bm9uZTsgfVxuLmNscC1hdXJvcmEgc3BhbntcbiAgcG9zaXRpb246YWJzb2x1dGU7IGJvcmRlci1yYWRpdXM6NTAlOyBmaWx0ZXI6Ymx1cig2MHB4KTsgb3BhY2l0eTouNTtcbiAgYW5pbWF0aW9uOmNscEZsb2F0IDE0cyBlYXNlLWluLW91dCBpbmZpbml0ZSBhbHRlcm5hdGU7XG59XG4uY2xwLWF1cm9yYSBzcGFuOm50aC1jaGlsZCgxKXsgd2lkdGg6NDIwcHg7IGhlaWdodDo0MjBweDsgbGVmdDotMTIwcHg7IHRvcDotMjAwcHg7IGJhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSwjMTI0NUE4IDAlLHRyYW5zcGFyZW50IDcwJSk7IH1cbi5jbHAtYXVyb3JhIHNwYW46bnRoLWNoaWxkKDIpeyB3aWR0aDozODBweDsgaGVpZ2h0OjM4MHB4OyByaWdodDotODBweDsgdG9wOi0xNjBweDsgYmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMwRDk0ODggMCUsdHJhbnNwYXJlbnQgNzAlKTsgYW5pbWF0aW9uLWRlbGF5Oi00czsgfVxuLmNscC1hdXJvcmEgc3BhbjpudGgtY2hpbGQoMyl7IHdpZHRoOjM0MHB4OyBoZWlnaHQ6MzQwcHg7IHJpZ2h0OjIyJTsgYm90dG9tOi0yNDBweDsgYmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMyNTYzRUIgMCUsdHJhbnNwYXJlbnQgNzAlKTsgYW5pbWF0aW9uLWRlbGF5Oi04czsgfVxuQGtleWZyYW1lcyBjbHBGbG9hdHtcbiAgZnJvbXsgdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKSBzY2FsZSgxKTsgfVxuICB0b3sgdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDQwcHgsMjZweCwwKSBzY2FsZSgxLjEyKTsgfVxufVxuLmNscC1oZXJvLXNoaW1tZXJ7XG4gIHBvc2l0aW9uOmFic29sdXRlOyBpbnNldDowOyBwb2ludGVyLWV2ZW50czpub25lO1xuICBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMTVkZWcsIHRyYW5zcGFyZW50IDMwJSwgcmdiYSgxNDcsMTk3LDI1MywuMTApIDQ1JSwgcmdiYSg2LDE4MiwyMTIsLjEyKSA1MCUsIHRyYW5zcGFyZW50IDY1JSk7XG4gIGJhY2tncm91bmQtc2l6ZToyNTAlIDEwMCU7XG4gIGFuaW1hdGlvbjpjbHBTaGltbWVyIDdzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBjbHBTaGltbWVyeyAwJXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjEyMCUgMDt9IDU1JXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00MCUgMDt9IDEwMCV7YmFja2dyb3VuZC1wb3NpdGlvbjotNDAlIDA7fSB9XG4uY2xwLWhlcm8tYmFkZ2VzeyBkaXNwbGF5OmZsZXg7IGdhcDoxMHB4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGZsZXgtd3JhcDp3cmFwOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfVxuLmNscC1iYWRnZS1icmFuZHtcbiAgYmFja2dyb3VuZDp2YXIoLS1jcmltc29uKTsgY29sb3I6I2ZmZjsgZm9udC13ZWlnaHQ6ODAwOyBmb250LXNpemU6MTJweDtcbiAgbGV0dGVyLXNwYWNpbmc6LjEyZW07IHBhZGRpbmc6NXB4IDEycHg7IGJvcmRlci1yYWRpdXM6NnB4O1xufVxuLmNscC1iYWRnZS1zZXR7IGNvbG9yOnZhcigtLWIyMDApOyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NjAwOyB9XG4uY2xwLWhlcm8gaDF7IHBvc2l0aW9uOnJlbGF0aXZlOyBmb250LXNpemU6Y2xhbXAoMjZweCw0dncsNDBweCk7IGZvbnQtd2VpZ2h0OjgwMDsgbGV0dGVyLXNwYWNpbmc6LS4wMmVtOyBsaW5lLWhlaWdodDoxLjEyOyB9XG4uY2xwLWhlcm8tY2hpcHN7IGRpc3BsYXk6ZmxleDsgZ2FwOjhweDsgZmxleC13cmFwOndyYXA7IHBvc2l0aW9uOnJlbGF0aXZlOyB9XG4uY2xwLWNoaXB7XG4gIGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMDkpOyBib3JkZXI6MXB4IHNvbGlkIHJnYmEoMTQ3LDE5NywyNTMsLjI1KTtcbiAgY29sb3I6I0RCRUFGRTsgZm9udC1zaXplOjEzcHg7IGZvbnQtd2VpZ2h0OjYwMDsgcGFkZGluZzo2cHggMTRweDsgYm9yZGVyLXJhZGl1czozMnB4O1xuICBiYWNrZHJvcC1maWx0ZXI6Ymx1cig0cHgpOyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMjVzIGVhc2UsIGJhY2tncm91bmQgLjI1cyBlYXNlO1xufVxuLmNscC1jaGlwOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTsgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4xNSk7IH1cbi5jbHAtY3Rhe1xuICBwb3NpdGlvbjpyZWxhdGl2ZTsgYmFja2dyb3VuZDp2YXIoLS1iNTAwKTsgY29sb3I6I2ZmZjsgYm9yZGVyOm5vbmU7IGJvcmRlci1yYWRpdXM6MTBweDtcbiAgZm9udC1zaXplOjE2cHg7IGZvbnQtd2VpZ2h0OjcwMDsgcGFkZGluZzoxM3B4IDM0cHg7IG1hcmdpbi10b3A6MnB4O1xuICBib3gtc2hhZG93OjAgMTBweCAyMnB4IC04cHggcmdiYSgzNyw5OSwyMzUsLjY1KTtcbiAgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjIycyBlYXNlLCBib3gtc2hhZG93IC4yMnMgZWFzZSwgYmFja2dyb3VuZCAuMjJzIGVhc2U7XG59XG4uY2xwLWN0YTpob3ZlcnsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7IGJhY2tncm91bmQ6dmFyKC0tYjQwMCk7IGJveC1zaGFkb3c6MCAxNHB4IDI2cHggLThweCByZ2JhKDM3LDk5LDIzNSwuNzUpOyB9XG5cbi8qID09PT09PT09PT09PSBTVElDS1kgVE9PTEJBUiA9PT09PT09PT09PT0gKi9cbi5jbHAtdG9vbGJhcltoaWRkZW5deyBkaXNwbGF5Om5vbmU7IH1cbi5jbHAtdG9vbGJhcntcbiAgcG9zaXRpb246c3RpY2t5OyB0b3A6OHB4OyB6LWluZGV4OjYwO1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjEwcHg7IGZsZXgtd3JhcDp3cmFwO1xuICBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjkyKTsgYmFja2Ryb3AtZmlsdGVyOmJsdXIoOHB4KTtcbiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjE2cHg7XG4gIHBhZGRpbmc6OHB4IDEycHg7IG1hcmdpbjoxOHB4IDAgMDtcbiAgYm94LXNoYWRvdzowIDhweCAyNHB4IC0xNHB4IHJnYmEoMTUsMjMsNDIsLjI1KSwgMCAycHggNnB4IC00cHggcmdiYSgxNSwyMyw0MiwuMTIpO1xuICBtaW4taGVpZ2h0OjUycHg7XG59XG4uY2xwLXNjb3JlLWNoaXB7XG4gIGZvbnQtd2VpZ2h0OjgwMDsgZm9udC1zaXplOjE0cHg7IGNvbG9yOnZhcigtLWI5MDApO1xuICBiYWNrZ3JvdW5kOnZhcigtLWI1MCk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYjEwMCk7IGJvcmRlci1yYWRpdXM6MzJweDsgcGFkZGluZzo3cHggMTZweDtcbn1cbi5jbHAtdGJ0bntcbiAgYm9yZGVyLXJhZGl1czoxMHB4OyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NzAwOyBwYWRkaW5nOjlweCAxNnB4O1xuICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJhY2tncm91bmQ6I2ZmZjsgY29sb3I6dmFyKC0tbXV0ZWQpO1xuICBtaW4taGVpZ2h0OjQwcHg7IHRyYW5zaXRpb246dHJhbnNmb3JtIC4ycyBlYXNlLCBib3gtc2hhZG93IC4ycyBlYXNlLCBiYWNrZ3JvdW5kIC4ycyBlYXNlO1xufVxuLmNscC10YnRuOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMXB4KTsgYm94LXNoYWRvdzowIDZweCAxNHB4IC04cHggcmdiYSgxNSwyMyw0MiwuMyk7IH1cbi5jbHAtdGJ0bi1jaGVja3sgYmFja2dyb3VuZDp2YXIoLS1ncmVlbik7IGJvcmRlci1jb2xvcjp2YXIoLS1ncmVlbik7IGNvbG9yOiNmZmY7IH1cbi5jbHAtdGJ0bi1jaGVjazpob3ZlcnsgYmFja2dyb3VuZDojMGNhNjc4OyB9XG4uY2xwLXRidG5bZGlzYWJsZWRdeyBvcGFjaXR5Oi41OyBjdXJzb3I6bm90LWFsbG93ZWQ7IHRyYW5zZm9ybTpub25lOyBib3gtc2hhZG93Om5vbmU7IH1cbi5jbHAtdG9vbGJhci1zcGFjZXJ7IGZsZXg6MTsgfVxuXG4vKiA9PT09PT09PT09PT0gQ0FUIFNJTVVMQVRPUiA9PT09PT09PT09PT0gKi9cbi5jbHAtc2lteyBtYXJnaW4tdG9wOjE4cHg7IH1cbi5jbHAtZG90c3sgZGlzcGxheTpmbGV4OyBnYXA6NnB4OyBtYXJnaW46MCAwIDEwcHggMnB4OyB9XG4uY2xwLWRvdHtcbiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBiYWNrZ3JvdW5kOiNmZmY7IGNvbG9yOnZhcigtLXN1YnRsZSk7XG4gIGZvbnQtc2l6ZToxMXB4OyBmb250LXdlaWdodDo3MDA7IGJvcmRlci1yYWRpdXM6MzJweDsgcGFkZGluZzo0cHggMTBweDtcbiAgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4yNXMgZWFzZSwgY29sb3IgLjI1cyBlYXNlO1xufVxuLmNscC1kb3QuY2xwLWRvbmV7IGJhY2tncm91bmQ6dmFyKC0tYjEwMCk7IGJvcmRlci1jb2xvcjp2YXIoLS1iMjAwKTsgY29sb3I6dmFyKC0tYjkwMCk7IH1cbi5jbHAtZG90LmNscC1jdXJ7IGJhY2tncm91bmQ6dmFyKC0tYjUwMCk7IGJvcmRlci1jb2xvcjp2YXIoLS1iNTAwKTsgY29sb3I6I2ZmZjsgfVxuLmNscC1kb3QuY2xwLWNsaWNrYWJsZXsgY3Vyc29yOnBvaW50ZXI7IH1cbi5jbHAtZG90Om5vdCguY2xwLWNsaWNrYWJsZSl7IGN1cnNvcjpkZWZhdWx0OyB9XG5cbi5jbHAtY2F0e1xuICBwb3NpdGlvbjpyZWxhdGl2ZTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1iYXItYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxMHB4OyBvdmVyZmxvdzp2aXNpYmxlO1xuICBiYWNrZ3JvdW5kOiNmZmY7XG4gIGJveC1zaGFkb3c6MCAxMHB4IDMwcHggLTE4cHggcmdiYSgxNSwyMyw0MiwuMjIpLCAwIDJweCA4cHggLTVweCByZ2JhKDE1LDIzLDQyLC4xKTtcbn1cbi5jbHAtYmFye1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjEycHg7XG4gIGJhY2tncm91bmQ6dmFyKC0tYmFyLWJnKTsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tYmFyLWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6MTBweCAxMHB4IDAgMDtcbiAgcGFkZGluZzo5cHggMTJweDsgbWluLWhlaWdodDo0NHB4O1xufVxuLmNscC1iYXItdGl0bGV7IGZvbnQtc2l6ZToxM3B4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLWJhci10ZXh0KTsgZmxleDoxOyBtaW4td2lkdGg6MDsgfVxuLmNscC1iYXItdGltZXJ7IGZvbnQtc2l6ZToxMnB4OyBjb2xvcjp2YXIoLS1iYXItdGV4dCk7IHdoaXRlLXNwYWNlOm5vd3JhcDsgfVxuLmNscC1iYXItdGltZXIgYnsgZm9udC13ZWlnaHQ6ODAwOyB9XG4uY2xwLW5leHR7XG4gIGJhY2tncm91bmQ6dmFyKC0tYjcwMCk7IGNvbG9yOiNmZmY7IGJvcmRlcjpub25lOyBib3JkZXItcmFkaXVzOjRweDtcbiAgZm9udC1zaXplOjExcHg7IGZvbnQtd2VpZ2h0OjcwMDsgbGV0dGVyLXNwYWNpbmc6LjA4ZW07IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtcbiAgcGFkZGluZzo3cHggMTZweDsgbWluLWhlaWdodDozMHB4O1xuICB0cmFuc2l0aW9uOmJhY2tncm91bmQgLjJzIGVhc2UsIHRyYW5zZm9ybSAuMnMgZWFzZTtcbn1cbi5jbHAtbmV4dDpob3ZlcnsgYmFja2dyb3VuZDp2YXIoLS1iOTAwKTsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTFweCk7IH1cbi5jbHAtc2NyZWVueyBib3JkZXItcmFkaXVzOjAgMCAxMHB4IDEwcHg7IG92ZXJmbG93OmhpZGRlbjsgfVxuXG4uY2xwLWluc3Rye1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7IGdhcDo5cHg7XG4gIHBhZGRpbmc6MTRweCAxNnB4IDEycHg7IGJhY2tncm91bmQ6I2ZmZjtcbn1cbi5jbHAtaW5mb3tcbiAgZmxleDpub25lOyB3aWR0aDoxOHB4OyBoZWlnaHQ6MThweDsgbWFyZ2luLXRvcDoycHg7IGJvcmRlci1yYWRpdXM6NTAlO1xuICBiYWNrZ3JvdW5kOnZhcigtLWI1MDApOyBjb2xvcjojZmZmOyBmb250LXdlaWdodDo4MDA7IGZvbnQtc2l6ZToxMXB4OyBmb250LXN0eWxlOml0YWxpYztcbiAgZGlzcGxheTppbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBmb250LWZhbWlseTpHZW9yZ2lhLHNlcmlmO1xufVxuLmNscC1pbnN0ciBweyBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NzAwOyBjb2xvcjp2YXIoLS1iOTAwKTsgfVxuXG4vKiBpbnRybyBzY3JlZW4gKi9cbi5jbHAtaW50cm8tYm9keXsgcGFkZGluZzo2cHggMjBweCAyNnB4IDQ0cHg7IGJhY2tncm91bmQ6I2ZmZjsgfVxuLmNscC1pbnRyby1ib2R5IGgzeyBmb250LXNpemU6MTVweDsgZm9udC13ZWlnaHQ6ODAwOyBjb2xvcjp2YXIoLS10ZXh0KTsgbWFyZ2luLWJvdHRvbToxMnB4OyB9XG4uY2xwLWJ1bGxldHN7IGxpc3Qtc3R5bGU6bm9uZTsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGdhcDoxMHB4OyBtYXgtd2lkdGg6NjQwcHg7IH1cbi5jbHAtYnVsbGV0cyBsaXtcbiAgZGlzcGxheTpmbGV4OyBnYXA6MTBweDsgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tYjkwMCk7XG4gIHBhZGRpbmctYm90dG9tOjEwcHg7IGJvcmRlci1ib3R0b206MXB4IGRvdHRlZCB2YXIoLS1ib3JkZXIpO1xufVxuLmNscC1idWxsZXRzIGxpOjpiZWZvcmV7IGNvbnRlbnQ6XCJcIjsgZmxleDpub25lOyB3aWR0aDo4cHg7IGhlaWdodDo4cHg7IGJvcmRlci1yYWRpdXM6NTAlOyBiYWNrZ3JvdW5kOnZhcigtLWI0MDApOyBtYXJnaW4tdG9wOjZweDsgfVxuXG4vKiBtZWRpYSBzY3JlZW4gKi9cbi5jbHAtbWVkaWEtcGFuZWx7XG4gIGJhY2tncm91bmQ6dmFyKC0tcGFuZWwtbWVkaWEtYmcpOyBib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1wYW5lbC1tZWRpYS1ib3JkZXIpO1xuICBwYWRkaW5nOjM0cHggMjBweCAyNnB4OyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTRweDtcbn1cbi5jbHAtbWVkaWEtY2FyZHtcbiAgd2lkdGg6MTAwJTsgbWF4LXdpZHRoOjUyMHB4O1xuICBiYWNrZ3JvdW5kOnZhcigtLW1lZGlhLWNhcmQtYmcpOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLW1lZGlhLWNhcmQtYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxMHB4O1xuICBwYWRkaW5nOjIycHggMjZweDtcbn1cbi5jbHAtbWVkaWEtY2FyZC5jbHAtaXMtdmlkZW97IG1heC13aWR0aDo2NjBweDsgcGFkZGluZzoxMnB4OyB9XG4uY2xwLW1lZGlhLXpvbmV7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MThweDsgfVxuLmNscC1pcy12aWRlbyAuY2xwLW1lZGlhLXpvbmV7XG4gIGFzcGVjdC1yYXRpbzoxNi85OyB3aWR0aDoxMDAlOyBib3JkZXItcmFkaXVzOjZweDsgYmFja2dyb3VuZDp2YXIoLS1kYXJrKTtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IG1hcmdpbi1ib3R0b206MTJweDtcbiAgY29sb3I6I2ZmZjtcbn1cbi5jbHAtc3BlYWtlcntcbiAgZmxleDpub25lOyB3aWR0aDo1NnB4OyBoZWlnaHQ6NTZweDsgYm9yZGVyLXJhZGl1czo4cHg7IGJhY2tncm91bmQ6I2ZmZjtcbiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1tZWRpYS1jYXJkLWJvcmRlcik7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBjb2xvcjp2YXIoLS1tdXRlZCk7XG59XG4uY2xwLWlzLXZpZGVvIC5jbHAtc3BlYWtlcnsgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4xMik7IGJvcmRlcjpub25lOyBjb2xvcjojZmZmOyB3aWR0aDo2NHB4OyBoZWlnaHQ6NjRweDsgYm9yZGVyLXJhZGl1czo1MCU7IH1cbi5jbHAtbWVkaWEtbWFpbnsgZmxleDoxOyBtaW4td2lkdGg6MDsgfVxuLmNscC1pcy12aWRlbyAuY2xwLW1lZGlhLW1haW57IHBhZGRpbmc6MCAxMHB4IDRweDsgfVxuLmNscC1tZWRpYS1sYWJlbHsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLXRleHQpOyBtYXJnaW4tYm90dG9tOjEwcHg7IH1cbi5jbHAtcHJvZ3Jlc3N7IGhlaWdodDo4cHg7IGJvcmRlci1yYWRpdXM6NnB4OyBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tbWVkaWEtY2FyZC1ib3JkZXIpOyBvdmVyZmxvdzpoaWRkZW47IH1cbi5jbHAtaXMtdmlkZW8gLmNscC1wcm9ncmVzc3sgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC42KTsgfVxuLmNscC1wcm9ncmVzcy1maWxseyBoZWlnaHQ6MTAwJTsgd2lkdGg6MCU7IGJhY2tncm91bmQ6dmFyKC0tY3lhbik7IGJvcmRlci1yYWRpdXM6NnB4OyB0cmFuc2l0aW9uOndpZHRoIC4zcyBsaW5lYXI7IH1cbi5jbHAtbWVkaWEtbWV0YXtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxMHB4OyBmb250LXNpemU6MTNweDsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXdlaWdodDo2MDA7XG59XG4uY2xwLW1lZGlhLW1ldGEgc3ZneyBkaXNwbGF5OmJsb2NrOyB9XG4uY2xwLW9uY2Utbm90ZXsgZm9udC1zaXplOjEycHg7IGNvbG9yOnZhcigtLXN1YnRsZSk7IGZvbnQtd2VpZ2h0OjYwMDsgfVxuXG4vKiBxdWVzdGlvbiBzY3JlZW4gKi9cbi5jbHAtcS1wYW5lbHtcbiAgYmFja2dyb3VuZDp2YXIoLS1wYW5lbC1xLWJnKTsgYm9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tcGFuZWwtcS1ib3JkZXIpO1xuICBwYWRkaW5nOjIwcHggMjJweCAzMHB4OyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjIwcHg7XG59XG4uY2xwLXF7IGZvbnQtc2l6ZToxNS41cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tdGV4dCk7IGxpbmUtaGVpZ2h0OjI7IH1cbi5jbHAtcW51bXsgZm9udC13ZWlnaHQ6NzAwOyB9XG4uY2xwLWRke1xuICBkaXNwbGF5OmlubGluZS1mbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDo4cHg7XG4gIGJvcmRlcjpub25lOyBib3JkZXItYm90dG9tOjJweCBkb3R0ZWQgdmFyKC0tc3VidGxlKTsgYmFja2dyb3VuZDp0cmFuc3BhcmVudDtcbiAgY29sb3I6dmFyKC0tYjcwMCk7IGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo2MDA7XG4gIHBhZGRpbmc6NHB4IDhweCAzcHg7IG1hcmdpbjowIDJweDsgbWluLWhlaWdodDozMnB4OyBtYXgtd2lkdGg6MTAwJTtcbiAgYm9yZGVyLXJhZGl1czo0cHggNHB4IDAgMDsgdmVydGljYWwtYWxpZ246YmFzZWxpbmU7XG4gIHRyYW5zaXRpb246YmFja2dyb3VuZCAuMnMgZWFzZTtcbn1cbi5jbHAtZGQ6aG92ZXJ7IGJhY2tncm91bmQ6cmdiYSgzNyw5OSwyMzUsLjA4KTsgfVxuLmNscC1kZC5jbHAtb3BlbnsgYmFja2dyb3VuZDp2YXIoLS1kZC1vcGVuLWJnKTsgfVxuLmNscC1kZCAuY2xwLWRkLXRleHR7XG4gIG92ZXJmbG93OmhpZGRlbjsgdGV4dC1vdmVyZmxvdzplbGxpcHNpczsgd2hpdGUtc3BhY2U6bm93cmFwOyBtYXgtd2lkdGg6NDIwcHg7XG59XG4uY2xwLWRkIC5jbHAtZGQtY2FyZXR7IGZvbnQtc2l6ZTo5cHg7IGNvbG9yOnZhcigtLWI3MDApOyBmbGV4Om5vbmU7IH1cbi5jbHAtZGQuY2xwLXVuYW5zd2VyZWQgLmNscC1kZC10ZXh0eyBsZXR0ZXItc3BhY2luZzoycHg7IGNvbG9yOnZhcigtLXN1YnRsZSk7IH1cbi5jbHAtZGQuY2xwLW1hcmstcmlnaHR7IGJhY2tncm91bmQ6dmFyKC0tZ3JlZW41MCk7IGJvcmRlcjoycHggc29saWQgdmFyKC0tZ3JlZW4pOyBib3JkZXItcmFkaXVzOjZweDsgY29sb3I6IzA0Nzg1NzsgfVxuLmNscC1kZC5jbHAtbWFyay13cm9uZ3sgYmFja2dyb3VuZDojRkZGMUYyOyBib3JkZXI6MnB4IHNvbGlkIHZhcigtLXJvc2UpOyBib3JkZXItcmFkaXVzOjZweDsgY29sb3I6I0JFMTIzQzsgfVxuLmNscC1kZFtkaXNhYmxlZF17IGN1cnNvcjpkZWZhdWx0OyB9XG4uY2xwLXJldmVhbHtcbiAgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjEzLjVweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjojMDQ3ODU3OyBsaW5lLWhlaWdodDoxLjU7XG4gIG1hcmdpbjoycHggMCAwIDI2cHg7XG59XG4uY2xwLXJldmVhbCBieyBmb250LXdlaWdodDo4MDA7IH1cbi5jbHAtdG9kby10YWd7XG4gIGZvbnQtc2l6ZToxMHB4OyBmb250LXdlaWdodDo4MDA7IGxldHRlci1zcGFjaW5nOi4wOGVtOyBjb2xvcjp2YXIoLS1vcmFuZ2UpO1xuICBib3JkZXI6MXB4IHNvbGlkIGN1cnJlbnRDb2xvcjsgYm9yZGVyLXJhZGl1czo0cHg7IHBhZGRpbmc6MXB4IDZweDsgbWFyZ2luLWxlZnQ6OHB4OyB2ZXJ0aWNhbC1hbGlnbjoycHg7XG59XG5cbi8qIGRyb3Bkb3duIHBvcHVwICovXG4uY2xwLXBvcHtcbiAgcG9zaXRpb246YWJzb2x1dGU7IHotaW5kZXg6ODA7IHdpZHRoOm1pbigzNDBweCwgY2FsYygxMDB2dyAtIDQ4cHgpKTtcbiAgYmFja2dyb3VuZDojZmZmOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTBweDtcbiAgYm94LXNoYWRvdzowIDE4cHggNDBweCAtMTJweCByZ2JhKDE1LDIzLDQyLC4yOCksIDAgNHB4IDEycHggLTZweCByZ2JhKDE1LDIzLDQyLC4xNCk7XG4gIHBhZGRpbmc6NnB4OyBcbn1cbi5jbHAtb3B0e1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjExcHg7IHdpZHRoOjEwMCU7XG4gIGJhY2tncm91bmQ6dHJhbnNwYXJlbnQ7IGJvcmRlcjpub25lOyB0ZXh0LWFsaWduOmxlZnQ7XG4gIGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLXRleHQpO1xuICBwYWRkaW5nOjEwcHggMTJweDsgbWluLWhlaWdodDo0MnB4OyBib3JkZXItcmFkaXVzOjZweDtcbiAgYm9yZGVyLWJvdHRvbToxcHggZG90dGVkIHZhcigtLWJvcmRlcik7XG4gIHRyYW5zaXRpb246YmFja2dyb3VuZCAuMTVzIGVhc2U7XG59XG4uY2xwLW9wdDpsYXN0LWNoaWxkeyBib3JkZXItYm90dG9tOm5vbmU7IH1cbi5jbHAtb3B0OmhvdmVyeyBiYWNrZ3JvdW5kOnZhcigtLWI1MCk7IH1cbi5jbHAtcmFkaW97XG4gIGZsZXg6bm9uZTsgd2lkdGg6MTdweDsgaGVpZ2h0OjE3cHg7IGJvcmRlci1yYWRpdXM6NTAlO1xuICBib3JkZXI6MnB4IHNvbGlkIHZhcigtLXN1YnRsZSk7IGJhY2tncm91bmQ6I2ZmZjsgcG9zaXRpb246cmVsYXRpdmU7XG59XG4uY2xwLW9wdC5jbHAtc2VsIC5jbHAtcmFkaW97IGJvcmRlci1jb2xvcjp2YXIoLS1iNTAwKTsgfVxuLmNscC1vcHQuY2xwLXNlbCAuY2xwLXJhZGlvOjphZnRlcntcbiAgY29udGVudDpcIlwiOyBwb3NpdGlvbjphYnNvbHV0ZTsgaW5zZXQ6Mi41cHg7IGJvcmRlci1yYWRpdXM6NTAlOyBiYWNrZ3JvdW5kOnZhcigtLWI1MDApO1xufVxuXG4vKiBwcmUtc3RhcnQgLyBmaW5pc2ggKi9cbi5jbHAtaWRsZXtcbiAgcGFkZGluZzo1NnB4IDI0cHg7IHRleHQtYWxpZ246Y2VudGVyOyBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlci1yYWRpdXM6MCAwIDEwcHggMTBweDtcbn1cbi5jbHAtaWRsZSBweyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtc2l6ZToxNXB4OyBmb250LXdlaWdodDo2MDA7IG1heC13aWR0aDo0ODBweDsgbWFyZ2luOjAgYXV0bzsgfVxuLmNscC1maW5pc2h7IHBhZGRpbmc6NDhweCAyNHB4IDU2cHg7IHRleHQtYWxpZ246Y2VudGVyOyBiYWNrZ3JvdW5kOiNmZmY7IH1cbi5jbHAtZmluaXNoIGgzeyBmb250LXNpemU6MjJweDsgZm9udC13ZWlnaHQ6ODAwOyBtYXJnaW4tYm90dG9tOjEwcHg7IH1cbi5jbHAtZmluaXNoIHB7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC1zaXplOjE1cHg7IGZvbnQtd2VpZ2h0OjYwMDsgbWFyZ2luLWJvdHRvbToyMnB4OyB9XG4uY2xwLWZpbmlzaC1jaGVja3tcbiAgYmFja2dyb3VuZDp2YXIoLS1ncmVlbik7IGNvbG9yOiNmZmY7IGJvcmRlcjpub25lOyBib3JkZXItcmFkaXVzOjEwcHg7XG4gIGZvbnQtc2l6ZToxNnB4OyBmb250LXdlaWdodDo3MDA7IHBhZGRpbmc6MTNweCAzMnB4OyBtaW4taGVpZ2h0OjQ0cHg7XG4gIGJveC1zaGFkb3c6MCAxMHB4IDIycHggLThweCByZ2JhKDE2LDE4NSwxMjksLjU1KTtcbiAgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjJzIGVhc2UsIGJhY2tncm91bmQgLjJzIGVhc2U7XG59XG4uY2xwLWZpbmlzaC1jaGVjazpob3ZlcnsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7IGJhY2tncm91bmQ6IzBjYTY3ODsgfVxuXG4vKiA9PT09PT09PT09PT0gUkVTVUxUUyA9PT09PT09PT09PT0gKi9cbi5jbHAtcmVzdWx0c3sgbWFyZ2luLXRvcDozMHB4OyB9XG4uY2xwLXJlc3VsdHMgaDJ7IGZvbnQtc2l6ZToyNHB4OyBmb250LXdlaWdodDo4MDA7IGxldHRlci1zcGFjaW5nOi0uMDFlbTsgbWFyZ2luLWJvdHRvbToxNnB4OyB9XG4uY2xwLXJlcy1ncmlkeyBkaXNwbGF5OmdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczphdXRvIDFmcjsgZ2FwOjE2cHg7IGFsaWduLWl0ZW1zOnN0cmV0Y2g7IH1cbi5jbHAtY2FyZHtcbiAgYmFja2dyb3VuZDojZmZmOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTZweDsgcGFkZGluZzoyMnB4O1xuICBib3gtc2hhZG93OjAgMTBweCAzMHB4IC0yMHB4IHJnYmEoMTUsMjMsNDIsLjI1KSwgMCAycHggOHB4IC02cHggcmdiYSgxNSwyMyw0MiwuMDgpO1xuICB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMjVzIGVhc2UsIGJveC1zaGFkb3cgLjI1cyBlYXNlO1xufVxuLmNscC1jYXJkOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTsgYm94LXNoYWRvdzowIDE2cHggMzZweCAtMjBweCByZ2JhKDE1LDIzLDQyLC4zKTsgfVxuLmNscC1yaW5nLWNhcmR7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDo4cHg7IG1pbi13aWR0aDoyMjBweDsgfVxuLmNscC1yaW5nLXdyYXB7IHBvc2l0aW9uOnJlbGF0aXZlOyB3aWR0aDoxMzJweDsgaGVpZ2h0OjEzMnB4OyB9XG4uY2xwLXJpbmctd3JhcCBzdmd7IHRyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKTsgZGlzcGxheTpibG9jazsgfVxuLmNscC1yaW5nLW51bXtcbiAgcG9zaXRpb246YWJzb2x1dGU7IGluc2V0OjA7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uO1xuICBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGZvbnQtd2VpZ2h0OjgwMDtcbn1cbi5jbHAtcmluZy1udW0gYnsgZm9udC1zaXplOjI4cHg7IGxpbmUtaGVpZ2h0OjE7IGNvbG9yOnZhcigtLWI5MDApOyB9XG4uY2xwLXJpbmctbnVtIHNwYW57IGZvbnQtc2l6ZToxMnB4OyBjb2xvcjp2YXIoLS1zdWJ0bGUpOyBmb250LXdlaWdodDo3MDA7IH1cbi5jbHAtcmluZy1jYXJkIGgzeyBmb250LXNpemU6MTRweDsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXdlaWdodDo3MDA7IH1cbi5jbHAtcGFydC1jaGlwc3sgZGlzcGxheTpmbGV4OyBmbGV4LXdyYXA6d3JhcDsgZ2FwOjEwcHg7IG1hcmdpbi10b3A6MTJweDsgfVxuLmNscC1wYXJ0LWNoaXB7XG4gIGJvcmRlci1yYWRpdXM6MzJweDsgcGFkZGluZzo4cHggMTZweDsgZm9udC1zaXplOjEzcHg7IGZvbnQtd2VpZ2h0OjcwMDtcbiAgYmFja2dyb3VuZDp2YXIoLS1iNTApOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWIxMDApOyBjb2xvcjp2YXIoLS1iOTAwKTtcbn1cbi5jbHAtcGFydC1jaGlwIGJ7IGZvbnQtd2VpZ2h0OjgwMDsgfVxuLmNscC1jbGItcm93e1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjE0cHg7IGZsZXgtd3JhcDp3cmFwOyBtYXJnaW4tdG9wOjE2cHg7XG4gIHBhZGRpbmc6MTRweCAxNnB4OyBib3JkZXItcmFkaXVzOjEwcHg7IGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1iMTAwKTtcbn1cbi5jbHAtY2xiLWJhZGdle1xuICBiYWNrZ3JvdW5kOnZhcigtLWNyaW1zb24pOyBjb2xvcjojZmZmOyBmb250LXdlaWdodDo4MDA7IGZvbnQtc2l6ZToxNHB4O1xuICBib3JkZXItcmFkaXVzOjEwcHg7IHBhZGRpbmc6OHB4IDE2cHg7XG59XG4uY2xwLWNsYi1yb3cgcHsgZm9udC1zaXplOjEzcHg7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC13ZWlnaHQ6NjAwOyBmbGV4OjE7IG1pbi13aWR0aDoyMDBweDsgfVxuLmNscC10cmFuc2NyaXB0c3sgbWFyZ2luLXRvcDoxNnB4OyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjEwcHg7IH1cbi5jbHAtdHItY2FyZHsgYmFja2dyb3VuZDojZmZmOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTZweDsgb3ZlcmZsb3c6aGlkZGVuOyB9XG4uY2xwLXRyLWhlYWR7XG4gIHdpZHRoOjEwMCU7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgZ2FwOjEwcHg7XG4gIGJhY2tncm91bmQ6dHJhbnNwYXJlbnQ7IGJvcmRlcjpub25lOyBwYWRkaW5nOjE1cHggMjBweDsgdGV4dC1hbGlnbjpsZWZ0O1xuICBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NzAwOyBjb2xvcjp2YXIoLS10ZXh0KTsgbWluLWhlaWdodDo0OHB4O1xufVxuLmNscC10ci1oZWFkOmhvdmVyeyBiYWNrZ3JvdW5kOnZhcigtLWI1MCk7IH1cbi5jbHAtdHItaGVhZCAuY2xwLXRyLWNhcmV0eyBjb2xvcjp2YXIoLS1zdWJ0bGUpOyBmb250LXNpemU6MTFweDsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjJzIGVhc2U7IH1cbi5jbHAtdHItY2FyZC5jbHAtb3BlbiAuY2xwLXRyLWNhcmV0eyB0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyk7IH1cbi5jbHAtdHItYm9keXsgZGlzcGxheTpub25lOyBwYWRkaW5nOjAgMjBweCAxOHB4OyBmb250LXNpemU6MTRweDsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXdlaWdodDo1MDA7IGxpbmUtaGVpZ2h0OjEuNzsgfVxuLmNscC10ci1jYXJkLmNscC1vcGVuIC5jbHAtdHItYm9keXsgZGlzcGxheTpibG9jazsgfVxuLmNscC10ci10b2RveyBjb2xvcjp2YXIoLS1vcmFuZ2UpOyBmb250LXdlaWdodDo3MDA7IGZvbnQtc2l6ZToxMi41cHg7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbi10b3A6OHB4OyB9XG5cbi8qIHNjcm9sbCByZXZlYWwgKi9cbi5jbHAtcmV2eyBvcGFjaXR5OjA7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKDE2cHgpOyB0cmFuc2l0aW9uOm9wYWNpdHkgLjVzIGVhc2UsIHRyYW5zZm9ybSAuNXMgZWFzZTsgfVxuLmNscC1yZXYuY2xwLWlueyBvcGFjaXR5OjE7IHRyYW5zZm9ybTpub25lOyB9XG5cbi8qID09PT09PT09PT09PSBSRVNQT05TSVZFID09PT09PT09PT09PSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6NzAwcHgpe1xuICAuY2xwLXdyYXB7IHBhZGRpbmc6MTBweCAxMHB4IDQwcHg7IH1cbiAgLmNscC1oZXJveyBwYWRkaW5nOjI4cHggMjJweDsgYm9yZGVyLXJhZGl1czoxNnB4OyB9XG4gIC5jbHAtcXsgZm9udC1zaXplOjE1cHg7IH1cbiAgLmNscC1kZHsgbWluLWhlaWdodDo0MHB4OyB9XG4gIC5jbHAtZGQgLmNscC1kZC10ZXh0eyBtYXgtd2lkdGg6MTgwcHg7IH1cbiAgLmNscC1iYXJ7IGZsZXgtd3JhcDp3cmFwOyB9XG4gIC5jbHAtYmFyLXRpdGxleyBmbGV4LWJhc2lzOjEwMCU7IH1cbiAgLmNscC1xLXBhbmVseyBwYWRkaW5nOjE2cHggMTRweCAyNnB4OyB9XG4gIC5jbHAtaW50cm8tYm9keXsgcGFkZGluZy1sZWZ0OjIwcHg7IH1cbiAgLmNscC1yZXMtZ3JpZHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjsgfVxuICAuY2xwLW1lZGlhLWNhcmR7IHBhZGRpbmc6MTZweDsgfVxufVxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2Upe1xuICAuY2xwLXdyYXAgKiwgLmNscC13cmFwICo6OmJlZm9yZSwgLmNscC13cmFwICo6OmFmdGVye1xuICAgIGFuaW1hdGlvbjpub25lICFpbXBvcnRhbnQ7IHRyYW5zaXRpb246bm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIC5jbHAtcmV2eyBvcGFjaXR5OjE7IHRyYW5zZm9ybTpub25lOyB9XG59XG5cbi5jbHAtYXVyb3JhIHNwYW57ZmlsdGVyOmJsdXIoMzZweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9XG4uY2xwLWhlcm8tc2hpbW1lcnt3aWxsLWNoYW5nZTpiYWNrZ3JvdW5kLXBvc2l0aW9ufVxuIjtkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHMpO30pKCk7CgondXNlIHN0cmljdCc7Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBURVNUX0RBVEEgXHUyMDE0IHN3YXAgaW4gbmV3IHNldHMgaGVyZSB3aXRob3V0IHRvdWNoaW5nIG1hcmt1cC4KICAgU2hhcGU6IHsgcGFydHM6W3sgbmFtZSwgaGVhZGVyVGl0bGUsIGludHJvVGl0bGUsIGludHJvQnVsbGV0c1tdLAogICAgICAgICAgICBxSW5zdHJ1Y3Rpb24sIHRyYW5zY3JpcHQsIHNlY3Rpb25zOlt7IGxhYmVsLCBtZWRpYVR5cGUsCiAgICAgICAgICAgIGR1cmF0aW9uKHNlYyksIHRpbWVNaW51dGVzLCBtZWRpYUluc3RydWN0aW9uLAogICAgICAgICAgICBxdWVzdGlvbnM6W3sgbiwgc3RlbSwgb3B0aW9uc1s0XSwga2V5KDEtNCksIHRvZG8\/IH1dIH1dIH1dIH0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCnZhciBURVNUX0RBVEE9eyJ0ZXN0TGFiZWwiOiJTZXQgMyBcdTIwMTMgUHJhY3RpY2UgVGVzdCAxIiwic2V0Tm8iOjMsInRlc3RObyI6MSwicGFydHMiOlt7Im5hbWUiOiJQYXJ0IDE6IExpc3RlbmluZyB0byBQcm9ibGVtIFNvbHZpbmciLCJoZWFkZXJUaXRsZSI6IlNldCAzIFx1MjAxMyBQcmFjdGljZSBUZXN0IDEgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDE6IExpc3RlbmluZyB0byBQcm9ibGVtIFNvbHZpbmciLCJpbnRyb1RpdGxlIjoiTGlzdGVuaW5nIHRvIFByb2JsZW0gU29sdmluZyIsImludHJvQnVsbGV0cyI6WyJZb3Ugd2lsbCBoZWFyIGEgY29udmVyc2F0aW9uIGJldHdlZW4gdHdvIHBlb3BsZSBpbiBhIHVuaXZlcnNpdHkgb2ZmaWNlLiBUaGUgd29tYW4gaXMgYWJvdXQgdG8gc3RhcnQgdW5pdmVyc2l0eSwgYW5kIHRoZSBtYW4gaXMgYSBTdHVkZW50IEFkdmlzb3IuIEl0IHBsYXlzIGluIHRocmVlIHNlY3Rpb25zLCBhbmQgZWFjaCBzZWN0aW9uIHBsYXlzIG9ubHkgb25jZS4iLCJBZnRlciBlYWNoIHNlY3Rpb24sIHF1ZXN0aW9ucyB3aWxsIGFwcGVhci4gQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbi4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbiBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoIFx1MjViZSApLiIsInRyYW5zY3JpcHQiOiJZb3Ugd2lsbCBoZWFyIGEgY29udmVyc2F0aW9uIGJldHdlZW4gdHdvIHBlb3BsZSBpbiBhIHVuaXZlcnNpdHkgb2ZmaWNlLiBUaGUgd29tYW4gaXNcbmFib3V0IHRvIHN0YXJ0IHVuaXZlcnNpdHksIGFuZCB0aGUgbWFuIGlzIGEgU3R1ZGVudCBBZHZpc29yLlxuXG5TZWN0aW9uIDE6XG5NQU46IEhlbGxvLCBob3cgY2FuIEkgaGVscCB5b3U\/XG5XT01BTjogSVx1MjAxOW0gcmVnaXN0ZXJlZCBmb3IgdGhlIEhvbm91cnMgUHN5Y2hvbG9neSBwcm9ncmFtLCBhbmQgZm9yIHRoZSBmb3JlaWduXG5sYW5ndWFnZSByZXF1aXJlbWVudCwgSVx1MjAxOWQgbGlrZSB0byB0YWtlIExhdGluLCBidXQgaXRcdTIwMTlzIG9mZmVyZWQgYXQgdGhlIHNhbWUgdGltZSBhcyB0aGUgZmlyc3RcbnllYXIgSG9ub3VycyBQc3ljaG9sb2d5IGNvdXJzZS5cbk1BTjogWW91IGNvdWxkIHRha2UgRnJlbmNoIGluc3RlYWQuXG5XT01BTjogICAgICAgIEJ1dCBJIHRvb2sgRnJlbmNoIGluIGhpZ2ggc2Nob29sLiBFdmVyeSBzaW5nbGUgeWVhci5cbk1BTjogV2VsbCwgeW91IGNvdWxkIHRha2UgdGhlIGZpcnN0IHllYXIgR2VuZXJhbCBQc3ljaG9sb2d5IGNvdXJzZSwgYW5kIHRoZW4ganVzdFxuc3dpdGNoIHRvIHRoZSBIb25vdXJzIGNvdXJzZXMgaW4geW91ciBzZWNvbmQgeWVhci4gVGhhdCB3YXkgeW91IGNvdWxkIHRha2UgTGF0aW4uXG5XT01BTjogICAgICAgIFRoZSBmaXJzdCB5ZWFyIEhvbm91cnMgUHN5Y2hvbG9neSBjb3Vyc2UgaXNuXHUyMDE5dCBhIHByZXJlcXVpc2l0ZT8gRm9yIG1lP1xuTUFOOiBOb3QgcmVhbGx5LiBXZSBoYXZlIHNvIG1hbnkgc3R1ZGVudHMgd2FudGluZyBmaXJzdCB5ZWFyIFBzeWNob2xvZ3ksIHdlIGp1c3RcbmNyZWF0ZWQgdHdvIHNlY3Rpb25zLiBBbmQgaXQgbWFrZXMgc2Vuc2UgdG8gcHV0IGFsbCB0aGUgSG9ub3VycyBzdHVkZW50cyBpbiB0aGUgb25lXG5zZWN0aW9uIGFuZCB0aGUgR2VuZXJhbCBzdHVkZW50cyBpbiB0aGUgb3RoZXIuIFlvdVx1MjAxOXJlIGFscmVhZHkgYWNjZXB0ZWQgaW50byB0aGUgSG9ub3Vyc1xucHJvZ3JhbSwgc28gdGhlcmVcdTIwMTlzIG5vIHByb2JsZW0ganVzdCByZWdpc3RlcmluZyBmb3IgdGhlIEhvbm91cnMgY291cnNlcyBpbiB5b3VyIHNlY29uZFxueWVhci5cbldPTUFOOiAgICAgICAgT2theSwgdGhhbmsgeW91LlxuU2VjdGlvbiAyOlxuTUFOOiBIZWxsbyBhZ2FpbiFcblxmV09NQU46IEkgd2FzIHRhbGtpbmcgdG8gYSBmcmllbmQgYWJvdXQgd2hhdCB5b3UgYWR2aXNlZCwgYW5kIHNoZSBhY3R1YWxseSBkaWQgdGhhdC5cbkJ1dCBzaGUgc2FpZCB0aGF0IG9uY2Ugc2hlIHdhcyBpbiBzZWNvbmQgeWVhciwgc2hlIG5ldmVyIGdvdCBhbnl0aGluZyBoaWdoZXIgdGhhbiBhbiBBXG5taW51cy4gSGVyIHByb2Zlc3NvcnMgdGhvdWdodCBzaGUgd2FzIGp1c3QgYSBHZW5lcmFsIHN0dWRlbnQgdHJ5aW5nIHRvIHN0ZXAgdXAgdG8gdGhlXG5Ib25vdXJzIGxldmVsLiBFdmVuIHRob3VnaCwgbGlrZSBtZSwgc2hlIHdhcyBhbiBBIHBsdXMgc3R1ZGVudCBhbGwgdGhyb3VnaCBoaWdoIHNjaG9vbC5cbk1BTjogSVx1MjAxOW0gc29ycnkgdG8gaGVhciB0aGF0LiBNYW55IHN0dWRlbnRzXHUyMDE5IGdyYWRlcyBnbyBkb3duIG9uY2UgdGhleVx1MjAxOXJlIGluIHVuaXZlcnNpdHkuXG5QZXJoYXBzIHlvdXIgZnJpZW5kc1x1MjAxOSBoaWdoIHNjaG9vbCB0ZWFjaGVycyBncmFkZWQgZWFzeS4gSSByZWFsbHkgZG9uXHUyMDE5dCB0aGluayBvdXIgcHJvZmVzc29yc1xud291bGQgYmUgc28gcHJlanVkaWNlZC4gSVx1MjAxOW0gc3VyZSB0aGV5IGdyYWRlIGFzc2lnbm1lbnRzIGZhaXJseS5cbldPTUFOOiBJIGhvcGUgeW91XHUyMDE5cmUgcmlnaHQuIEV2ZW4gc28sIElcdTIwMTlkIGxpa2UgdG8gYmUgY29uc2lkZXJlZCBhbiBIb25vdXJzIHN0dWRlbnRcbmZyb20gdGhlIGJlZ2lubmluZy4gU2hlIGFsc28gc2FpZCB0aGF0IGJ5IHNlY29uZCB5ZWFyLCBldmVyeW9uZVx1MjAxOXMgZm9ybWVkIHRoZWlyIGdyb3Vwcy5cblNvIHNoZSBmZWx0IGxpa2UgYW4gb3V0c2lkZXIgaW4gdGhlIEhvbm91cnMgcHJvZ3JhbSBmb3IgdGhlIHJlc3Qgb2YgaGVyIGRlZ3JlZS5cbk1BTjogSSBzZWUuIFdlbGwsIHRoZXJlIG1pZ2h0IGJlIGFub3RoZXIgc29sdXRpb24uIElmIHlvdSB0b29rIGEgbGFuZ3VhZ2UgY291cnNlIGF0IHRoZVxub3RoZXIgdW5pdmVyc2l0eSwgeW91IG1pZ2h0IGdldCBjcmVkaXQgZm9yIGl0IGhlcmUuIElcdTIwMTlkIGhhdmUgdG8gbG9vayBpbnRvIHRoYXQuIEluIHRoZVxubWVhbnRpbWUsIHdoeSBkb25cdTIwMTl0IHlvdSBzZWUgaWYgdGhleSBvZmZlciBhIExhdGluIGNvdXJzZSwgYW5kIGJyaW5nIGJhY2sgdGhlIGNvdXJzZVxub3V0bGluZSwgaW4gY2FzZSB0aGUgZGVjaXNpb24gaGVyZSBpcyBtYWRlIG9uIGEgY2FzZSBieSBjYXNlIGJhc2lzLlxuV09NQU46ICAgICAgICBPa2F5LCBJXHUyMDE5bGwgZG8gdGhhdC5cblNlY3Rpb24gMzpcbk1BTjogSGVsbG8sIEkgaGF2ZSBnb29kIG5ld3NcdTIwMTR3ZSBnaXZlIHRyYW5zZmVyIGNyZWRpdCBmb3IgYWxsIGxhbmd1YWdlIGNvdXJzZXMgYXQgdGhlXG5vdGhlciB1bml2ZXJzaXR5LiBFdmVuIEVuZ2xpc2guXG5XT01BTjogT2gsIHRoYXQgaXMgZ29vZCBuZXdzLiBUaGV5IGRvblx1MjAxOXQgaGF2ZSBMYXRpbiwgYnV0IHRoZXkgZG8gb2ZmZXIgQ2hpbmVzZSxcbndoaWNoIElcdTIwMTlkIGxpa2UgdG8gdGFrZS4gQW5kIGl0IGRvZXNuXHUyMDE5dCBjb25mbGljdCB3aXRoIGFueSBvdGhlciBvZiBteSBmaXJzdCB5ZWFyIGNvdXJzZXMuXG5NQU46IE5vdCBldmVuIHRoZSBIb25vdXJzIFBzeWNoP1xuV09NQU46ICAgICAgICBObyFcbk1BTjogVGhlbiB5b3VcdTIwMTlyZSBhbGwgc2V0IVxuV09NQU46ICAgICAgICBZZXMhIiwic2VjdGlvbnMiOlt7ImxhYmVsIjoiQ29udmVyc2F0aW9uIFx1MjAxNCBTZWN0aW9uIDEiLCJtZWRpYVR5cGUiOiJhdWRpbyIsImR1cmF0aW9uIjo1NywidGltZU1pbnV0ZXMiOjIsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiIsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IldoYXQgaXMgdGhlIHdvbWFuJ3MgcHJvYmxlbT8iLCJvcHRpb25zIjpbIlNoZSBmYWlsZWQgaGVyIGZpcnN0IHllYXIgUHN5Y2hvbG9neSBjb3Vyc2UuIiwiU2hlIGNhbm5vdCBhZmZvcmQgdGhlIGxhbmd1YWdlIGNvdXJzZSBmZWVzLiIsIlNoZSB3YW50cyB0byB0YWtlIHR3byBjb3Vyc2VzIHRoYXQgY29uZmxpY3QuIiwiU2hlIG1pc3NlZCB0aGUgcmVnaXN0cmF0aW9uIGRlYWRsaW5lLiJdLCJrZXkiOjIsInJlY29uIjp0cnVlfSx7Im4iOjIsInN0ZW0iOiJXaGF0IGRvZXMgdGhlIHdvbWFuIHRoaW5rIGFib3V0IHRha2luZyBGcmVuY2g\/Iiwib3B0aW9ucyI6WyJTaGUgZmluZHMgRnJlbmNoIHRvbyBkaWZmaWN1bHQuIiwiU2hlIHByZWZlcnMgRnJlbmNoIHRvIExhdGluLiIsIlNoZSBoYXMgbmV2ZXIgc3R1ZGllZCBGcmVuY2guIiwiU2hlIGhhcyBoYWQgZW5vdWdoIEZyZW5jaC4iXSwia2V5IjozLCJyZWNvbiI6dHJ1ZX0seyJuIjozLCJzdGVtIjoiV2hhdCBkb2VzIHRoZSBtYW4gaW1wbHkgYWJvdXQgdGhlIGZpcnN0IHllYXIgUHN5Y2hvbG9neSBjb3Vyc2VzPyIsIm9wdGlvbnMiOlsiVGhlIEdlbmVyYWwgYW5kIEhvbm91cnMgY291cnNlcyBhcmUgdGhlIHNhbWUuIiwiVGhlIEhvbm91cnMgY291cnNlIGlzIG11Y2ggaGFyZGVyLiIsIlRoZSBHZW5lcmFsIGNvdXJzZSBoYXMgbm8gc3BhY2VzIGxlZnQuIiwiSG9ub3VycyBzdHVkZW50cyBtdXN0IHRha2UgYm90aCBjb3Vyc2VzLiJdLCJrZXkiOjAsInJlY29uIjp0cnVlfV19LHsibGFiZWwiOiJDb252ZXJzYXRpb24gXHUyMDE0IFNlY3Rpb24gMiIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwiZHVyYXRpb24iOjcxLCJ0aW1lTWludXRlcyI6MiwibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgbmV4dCBwYXJ0IG9mIHRoZSBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiIsInF1ZXN0aW9ucyI6W3sibiI6NCwic3RlbSI6IldoYXQgZ3JhZGVzIGRpZCB0aGUgd29tYW4ncyBmcmllbmQgZ2V0IGluIGhpZ2ggc2Nob29sPyIsIm9wdGlvbnMiOlsiQSBtaW51cyIsIkIgcGx1cyIsIkEgcGx1cyIsIkMgYXZlcmFnZSJdLCJrZXkiOjIsInJlY29uIjp0cnVlfSx7Im4iOjUsInN0ZW0iOiJXaGF0IGlzIHRoZSB3b21hbiBjb25jZXJuZWQgYWJvdXQ\/Iiwib3B0aW9ucyI6WyJyZWNlaXZpbmcgbG93ZXIgZ3JhZGVzIHRoYW4gc2hlIGRlc2VydmVzIiwicGF5aW5nIGZvciBhbiBleHRyYSBsYW5ndWFnZSBjb3Vyc2UiLCJmYWlsaW5nIHRoZSBmb3JlaWduIGxhbmd1YWdlIHJlcXVpcmVtZW50Iiwibm90IGJlaW5nIHBhcnQgb2YgYW55IHNvY2lhbCBncm91cCJdLCJrZXkiOjMsInJlY29uIjp0cnVlfSx7Im4iOjYsInN0ZW0iOiJXaGF0IGlzIHRoZSBtYW4ncyByZXNwb25zZSB0byB0aGUgd29tYW4ncyBpbXBsaWNhdGlvbiBhYm91dCBwcm9mZXNzb3JzPyIsIm9wdGlvbnMiOlsiZGVuaWFsIiwiYWdyZWVtZW50IiwiYW11c2VtZW50IiwiaW5kaWZmZXJlbmNlIl0sImtleSI6MCwicmVjb24iOnRydWV9XX0seyJsYWJlbCI6IkNvbnZlcnNhdGlvbiBcdTIwMTQgU2VjdGlvbiAzIiwibWVkaWFUeXBlIjoiYXVkaW8iLCJkdXJhdGlvbiI6MjcsInRpbWVNaW51dGVzIjoyLCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBmaW5hbCBwYXJ0IG9mIHRoZSBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiIsInF1ZXN0aW9ucyI6W3sibiI6Nywic3RlbSI6IldoYXQgbGFuZ3VhZ2UgY291cnNlIHdpbGwgdGhlIHdvbWFuIHRha2U\/Iiwib3B0aW9ucyI6WyJMYXRpbiIsIkZyZW5jaCIsIkNoaW5lc2UiLCJFbmdsaXNoIl0sImtleSI6MiwicmVjb24iOnRydWV9LHsibiI6OCwic3RlbSI6IkhvdyB3b3VsZCB5b3UgZGVzY3JpYmUgdGhlIGVuZGluZz8iLCJvcHRpb25zIjpbImRpc2FwcG9pbnRpbmciLCJ1bmNlcnRhaW4iLCJ0ZW5zZSIsImhhcHB5Il0sImtleSI6MywicmVjb24iOnRydWV9XX1dfSx7Im5hbWUiOiJQYXJ0IDI6IExpc3RlbmluZyB0byBhIERhaWx5IExpZmUgQ29udmVyc2F0aW9uIiwiaGVhZGVyVGl0bGUiOiJTZXQgMyBcdTIwMTMgUHJhY3RpY2UgVGVzdCAxIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCAyOiBMaXN0ZW5pbmcgdG8gYSBEYWlseSBMaWZlIENvbnZlcnNhdGlvbiIsImludHJvVGl0bGUiOiJMaXN0ZW5pbmcgdG8gYSBEYWlseSBMaWZlIENvbnZlcnNhdGlvbiIsImludHJvQnVsbGV0cyI6WyJZb3Ugd2lsbCBoZWFyIGEgY29udmVyc2F0aW9uIHRoYXQgdGFrZXMgcGxhY2UgYXQgYSBidXMgc3RvcC4gSXQgcGxheXMgb25seSBvbmNlLiIsIkFmdGVyIHRoZSBjb252ZXJzYXRpb24sIHF1ZXN0aW9ucyB3aWxsIGFwcGVhci4gQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbi4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbiBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoIFx1MjViZSApLiIsInRyYW5zY3JpcHQiOiJZb3Ugd2lsbCBoZWFyIGEgY29udmVyc2F0aW9uIHRoYXQgdGFrZXMgcGxhY2UgYXQgYSBidXMgc3RvcC5cblxuV09NQU46IEhpISBJJ20gd2FpdGluZyBmb3IgdGhlIG51bWJlciAjODcgYnVzIHRoYXQgZ29lcyBieSBNYWluIFN0cmVldC4gRG8geW91XG5rbm93IGlmIHRoaXMgaXMgdGhlIHJpZ2h0IHN0b3A\/XG5NQU46IFllcywgaXQgaXMgdGhlIHJpZ2h0IHN0b3AsIGJ1dCBhcHBhcmVudGx5IHdlIGJvdGgganVzdCBtaXNzZWQgdGhlIGJ1cyEgSSdtIGp1c3RcbmNoZWNraW5nIHRoZSB0cmFuc2l0IHNjaGVkdWxlIG9uIG15IHBob25lIGFuZCBpdCBjYW1lIGJ5IGZpdmUgbWludXRlcyBhZ28sIGV2ZW4gdGhvdWdoXG5pdCBzYXlzIGl0IHNob3VsZCBiZSBoZXJlIHJpZ2h0IG5vdy4gSSBndWVzcyBpdCBjYW1lIGVhcmx5LiBUaGUgbmV4dCBvbmUgY29tZXMgaW4gaGFsZiBhblxuaG91ci5cbldPTUFOOiBPaCwgZGFybi4gSSdtIGdvaW5nIHRvIGJlIGxhdGUgdG8gbXkgYnVzaW5lc3MgbWVldGluZy4gSSB3b3VsZCBoYXZlIGRyaXZlblxudG8gd29yayB0b2RheSwgYnV0IG15IGNhciBnb3QgYSBmbGF0IHRpcmUgbGFzdCBuaWdodC4gSSB0aGluayBJIGRyb3ZlIG92ZXIgYSBuYWlsIG9yXG5zb21ldGhpbmcuXG5NQU46IFRoYXQncyB0b28gYmFkLiBJcyB5b3VyIGNhciB0aGUgcmVkIEhvbmRhIHBhcmtlZCBvbiB0aGUgc2lkZSBvZiBXb3Jkc3dvcnRoXG5BdmVudWU\/XG5XT01BTjogICAgICAgIFllcywgaXQgaXMhXG5NQU46IFdlJ3JlIG5laWdoYm91cnMgdGhlbiEgSSBub3RpY2VkIGEgcmVkIEhvbmRhIHdpdGggYSBmbGF0IHRpcmUgb3V0c2lkZSBteSBob3VzZSB0aGlzXG5tb3JuaW5nLlxuV09NQU46IEkgbGl2ZSB1cCB0aGUgc3RyZWV0IG9uIHRoZSBuZXh0IGJsb2NrLCBidXQgdGhlIHRpcmUgcmltIHdhcyBzY3JhcGluZyBvbiB0aGVcbmdyb3VuZCBhbmQgSSBkaWRuXHUyMDE5dCB3YW50IHRvIGRhbWFnZSBpdC4gSXMgaXQgb2theSBpZiBJIHBhcmsgaXQgaW4gZnJvbnQgb2YgeW91ciBob3VzZSB1bnRpbCBJXG5nZXQgaXQgZml4ZWQ\/XG5NQU46IExlYXZlIGl0IGFzIGxvbmcgYXMgeW91IGxpa2UhIERpZCB5b3UgbW92ZSBoZXJlIHJlY2VudGx5PyBJIGRvblx1MjAxOXQgdGhpbmsgSVx1MjAxOXZlIHNlZW5cbnlvdSBiZWZvcmUuXG5XT01BTjogT25lIG1vbnRoIGV4YWN0bHkgdG9kYXkhIEkgdXNlZCB0byBsaXZlIGRvd250b3duLCBidXQgSSBwcmVmZXIgaXQgb3V0IGhlcmUsXG53aGVyZSB0aGVyZSdzIG1vcmUgbmF0dXJlLlxuTUFOOiBJIGxpa2UgbGl2aW5nIG91dCBoZXJlIGFzIHdlbGwuIFRoZSBvbmx5IHJlYWwgZHJhd2JhY2sgaXMgdGhhdCBjb21tdXRpbmcgdG8gdGhlIGNpdHlcbnRha2VzIGEgbG90IGxvbmdlci5cbldPTUFOOiBJdCB3b3VsZCBiZSBva2F5LCBpZiBvbmx5IHRyYW5zaXQgd2FzIHJlbGlhYmxlISBJJ20gcmVhbGx5IGxhdGUuIE1heWJlIElcbnNob3VsZCBqdXN0IHRha2UgYSBjYWIuIEFyZSB5b3UgZ29pbmcgdG8gTWFpbiBTdHJlZXQgYXMgd2VsbD8gRGlkIHlvdSB3YW50IHRvIHNwbGl0IGEgY2FiXG50aGVyZT9cbk1BTjogVGhhdCB3b3VsZCBiZSBncmVhdCwgYWN0dWFsbHkuIEknbSBtZWV0aW5nIGEgZnJpZW5kIGZvciBsdW5jaCBhbmQgSSBkb24ndCB3YW50IHRvXG5rZWVwIGhpbSB3YWl0aW5nLlxuXGZXT01BTjogICAgICAgIFRoYXQgd29ya3Mgb3V0IHBlcmZlY3RseSB0aGVuLiBJJ2xsIGp1c3QgY2FsbCBhIGNhYiBub3chIiwic2VjdGlvbnMiOlt7ImxhYmVsIjoiQ29udmVyc2F0aW9uIiwibWVkaWFUeXBlIjoiYXVkaW8iLCJkdXJhdGlvbiI6MTIwLCJ0aW1lTWludXRlcyI6MywibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZm9sbG93aW5nIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIEl0IGlzIGFib3V0IDIgbWludXRlcyBsb25nLiIsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IkhvdyBsb25nIGhhdmUgdGhlIG1hbiBhbmQgd29tYW4ga25vd24gZWFjaCBvdGhlcj8iLCJvcHRpb25zIjpbImEgZmV3IHllYXJzIiwiYSBmZXcgbWludXRlcyIsInNpbmNlIGNoaWxkaG9vZCIsImFib3V0IGEgbW9udGgiXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX0seyJuIjoyLCJzdGVtIjoiV2h5IGlzIHRoZSB3b21hbiB3b3JyaWVkPyIsIm9wdGlvbnMiOlsiU2hlIGhhcyBsb3N0IGhlciBjYXIga2V5cy4iLCJTaGUgbWlzc2VkIGhlciBmbGlnaHQuIiwiU2hlIHdpbGwgYmUgbGF0ZSBmb3IgYSBtZWV0aW5nLiIsIlNoZSBmb3Jnb3QgaGVyIHBob25lIGF0IGhvbWUuIl0sImtleSI6MiwicmVjb24iOnRydWV9LHsibiI6Mywic3RlbSI6IldoZXJlIGRvIHRoZSBtYW4gYW5kIHdvbWFuIGxpdmU\/Iiwib3B0aW9ucyI6WyJpbiB0aGUgc2FtZSBidWlsZGluZyIsImluIGRpZmZlcmVudCBjaXRpZXMiLCJkb3dudG93biBuZWFyIGVhY2ggb3RoZXIiLCJvbiB0aGUgc2FtZSBzdHJlZXQiXSwia2V5IjozLCJyZWNvbiI6dHJ1ZX0seyJuIjo0LCJzdGVtIjoiV2h5IGlzIHRoZSB3b21hbiB0YWtpbmcgdGhlIGJ1cyB0byB3b3JrPyIsIm9wdGlvbnMiOlsiSGVyIGNhciBpc24ndCB3b3JraW5nIHRvZGF5LiIsIlNoZSB3YW50cyB0byBzYXZlIG1vbmV5LiIsIkhlciBsaWNlbmNlIHdhcyBzdXNwZW5kZWQuIiwiVGhlIHJvYWRzIGFyZSBjbG9zZWQuIl0sImtleSI6MCwicmVjb24iOnRydWV9LHsibiI6NSwic3RlbSI6IkhvdyBkbyB0aGV5IGdldCB0byBNYWluIFN0cmVldD8iLCJvcHRpb25zIjpbIlRoZXkgd2FpdCBmb3IgdGhlIG5leHQgYnVzLiIsIlRoZXkgd2FsayB0b2dldGhlci4iLCJUaGV5IHNoYXJlIGEgdGF4aS4iLCJUaGV5IHJpZGUgYmljeWNsZXMuIl0sImtleSI6MiwicmVjb24iOnRydWV9XX1dfSx7Im5hbWUiOiJQYXJ0IDM6IExpc3RlbmluZyBmb3IgSW5mb3JtYXRpb24iLCJoZWFkZXJUaXRsZSI6IlNldCAzIFx1MjAxMyBQcmFjdGljZSBUZXN0IDEgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDM6IExpc3RlbmluZyBmb3IgSW5mb3JtYXRpb24iLCJpbnRyb1RpdGxlIjoiTGlzdGVuaW5nIGZvciBJbmZvcm1hdGlvbiIsImludHJvQnVsbGV0cyI6WyJZb3Ugd2lsbCBoZWFyIGEgY29udmVyc2F0aW9uIHdoZXJlIGEgd29tYW4gYXJyYW5nZXMgYW4gZXZlbnQuIEl0IHBsYXlzIG9ubHkgb25jZS4iLCJBZnRlciB0aGUgY29udmVyc2F0aW9uLCBxdWVzdGlvbnMgd2lsbCBhcHBlYXIuIENob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24uIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24gZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCBcdTI1YmUgKS4iLCJ0cmFuc2NyaXB0IjoiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiB3aGVyZSBhIHdvbWFuIGFycmFuZ2VzIGFuIGV2ZW50LlxuXG5XT01BTjogSGkgdGhlcmUsIEkgc2F3IHRoYXQgdGhlIEdyZWVuIEJ1dGxlciBjb21wYW55IHdvbiB0aGUgYXdhcmQgZm9yIGJlc3RcbmNhdGVyaW5nIG9uIGJlc3R3ZWRkaW5ncy5jb20sIHNvIEkgdGhvdWdodCBJXHUyMDE5ZCBkcm9wIGJ5LiBNeSBmYW1pbHkgYW5kIEkgYXJlIHBsYW5uaW5nIG15XG5zaXN0ZXJcdTIwMTlzIHdlZGRpbmcgZm9yIEp1bHkgOXRoLlxuTUFOOiBXZSBjYW4gY2VydGFpbmx5IGNhdGVyIHlvdXIgZXZlbnQhIFdlIHByb3ZpZGUgYSBjb21wcmVoZW5zaXZlIHJhbmdlIG9mIHdlZGRpbmdcbnNlcnZpY2VzIGZyb20gbG9jYXRpb24gcmVudGFscyB0byBmbG9yYWwgYXJyYW5nZW1lbnRzLCBhbmQgY3VzdG9tIG1lbnUgY2hvaWNlcy5cbldPTUFOOiBXZWxsLCBJXHUyMDE5bSBhY3R1YWxseSBhIGZsb3Jpc3QgbXlzZWxmLCBzbyB3ZSB3b25cdTIwMTl0IG5lZWQgZmxvd2VycywgdGhhbmtzISBBbmRcbm15IHNpc3RlciBoYXMgYWxyZWFkeSBwaWNrZWQgQ2xlYXJ3YXRlciBQYXJrIGFzIGhlciBsb2NhdGlvbiwgc28gdGhhdFx1MjAxOXMgY292ZXJlZCB0b28uIEJ1dFxuZXZlcnl0aGluZyBlbHNlIHdlIHdpbGwgbmVlZC5cbk1BTjogRXhjZWxsZW50LiBIb3cgbWFueSBwZW9wbGUgd2lsbCBiZSBjb21pbmcgdG8geW91ciBldmVudD9cbldPTUFOOiBXZVx1MjAxOXZlIGludml0ZWQgc2V2ZW50eSwgYW5kIHNvIGZhciBmaWZ0eSBoYXZlIGNvbmZpcm1lZC4gQ291bGQgSSBsZXQgeW91XG5rbm93IHRoZSBleGFjdCBudW1iZXIgYnkgdGhlIGVuZCBvZiBuZXh0IHdlZWs\/XG5NQU46IE9oLCBubyBydXNoISBBcyBsb25nIGFzIHdlIGtub3cgYSB3ZWVrIGluIGFkdmFuY2UgdG8gdGhlIGFjdHVhbCBkYXkgb2YgdGhlIGV2ZW50LFxudGhhdFx1MjAxOWxsIGJlIGZpbmUgLiAuIC4gTm93LCB3aGF0IHNvcnQgb2YgbWVhbCBzZXJ2aWNlIHdvdWxkIHlvdSBwcmVmZXI\/IFdlIG9mZmVyIGZ1bGwgbXVsdGktXG5jb3Vyc2UgZGlubmVycywgYnVmZmV0LXN0eWxlIGZvb2QsIG9yIGFwcGV0aXplcnMgb24gcGxhdHRlcnMuXG5XT01BTjogSSB0aGluayBidWZmZXQtc3R5bGUgd291bGQgYmUgYmVzdC4gSXQgd2lsbCBiZSBvdXRkb29ycyBpbiB0aGUgcGFyaywgYW5kIHdlXG5kb25cdTIwMTl0IHdhbnQgdG8gaGF2ZSB0byBzZXQgdXAgdG9vIG1hbnkgdGFibGVzIG9yIGNoYWlycy5cblxmTUFOOiBHcmVhdCEgV2UgaGF2ZSBmb3VyIGJhc2ljIG9wdGlvbnMgZm9yIGJ1ZmZldCBtZW51cy4gT25lIGlzIHZlZ2V0YXJpYW4sIG9uZSBpc1xuc2VhZm9vZCwgb25lIGlzIG1lYXQsIGFuZCBvbmUgaXMgY29udGluZW50YWwsIHdoaWNoIGlzIGJhc2ljYWxseSBhIG1peCBvZiB0aGUgb3RoZXIgdGhyZWUuXG5PZiBjb3Vyc2UsIHdlIGNhbiBtb2RpZnkgdGhlbSBpZiBuZWVkZWQuXG5XT01BTjogU29waGlhIGFuZCBoZXIgZmlhbmNcdTAwZTkgYXJlIGJvdGggdmVnZXRhcmlhbiwgYnV0IHRoZSByZXN0IG9mIG91ciBmYW1pbGllcyBhcmVcbm5vdCwgc28gSSB0aGluayB0aGUgY29udGluZW50YWwgbWVudSB3b3VsZCB3b3JrIGJlc3QuXG5NQU46IFNvdW5kcyBnb29kISBXb3VsZCB5b3UgbGlrZSB0byBib29rIHRoaXMgdG9kYXk\/IFdlIHRha2UgYSAyNSUgZGVwb3NpdCBhdCB0aGVcbnRpbWUgb2YgYm9va2luZywgYW5kIHRoZSByZXN0IG9mIHRoZSBwYXltZW50IG5vIGxlc3MgdGhhbiB0ZW4gZGF5cyBiZWZvcmUgdGhlIGV2ZW50LiBJZiB5b3VcbnNob3VsZCBuZWVkIHRvIGNhbmNlbCwgdGhlIHByZS1wYXltZW50cyBhbmQgZGVwb3NpdHMgYXJlIGZvcmZlaXRlZC5cbldPTUFOOiBUaGF0IGFsbCBzb3VuZHMgZ3JlYXQuIFNlbmQgdXMgYSBxdW90ZSB3aXRoIGZ1bGwgcHJpY2luZyBkZXRhaWxzIGxhaWQgb3V0LCBhbmRcbndlXHUyMDE5bGwgZ2V0IGJhY2sgdG8geW91IGluIGEgZmV3IGRheXMuIiwic2VjdGlvbnMiOlt7ImxhYmVsIjoiQ29udmVyc2F0aW9uIiwibWVkaWFUeXBlIjoiYXVkaW8iLCJkdXJhdGlvbiI6MTM4LCJ0aW1lTWludXRlcyI6MywibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZm9sbG93aW5nIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIEl0IGlzIGFib3V0IDIgbWludXRlcyBsb25nLiIsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IldoeSBpcyB0aGUgd29tYW4gaW50ZXJlc3RlZCBpbiB0aGlzIGNvbXBhbnk\/Iiwib3B0aW9ucyI6WyJUaGV5IGhhdmUgcmVjZWl2ZWQgYXdhcmRzLiIsIkEgZnJpZW5kIHJlY29tbWVuZGVkIHRoZW0uIiwiVGhleSBvZmZlciB0aGUgbG93ZXN0IHByaWNlcy4iLCJUaGV5IGFyZSBjbG9zZSB0byBoZXIgaG9tZS4iXSwia2V5IjowLCJyZWNvbiI6dHJ1ZX0seyJuIjoyLCJzdGVtIjoiV2hhdCBkb2VzIHRoZSB3b21hbiBzYXkgYWJvdXQgZmxvd2Vycz8iLCJvcHRpb25zIjpbIlNoZSB3YW50cyBhbiBlbGFib3JhdGUgZmxvcmFsIGFycmFuZ2VtZW50LiIsIlNoZSBpcyBhbGxlcmdpYyB0byBtb3N0IGZsb3dlcnMuIiwiU2hlIHdpbGwgb3JkZXIgZmxvd2VycyBzZXBhcmF0ZWx5LiIsIlRoZSB3b21hbiB3b3JrcyBpbiBhIGZsb3dlciBzdG9yZS4iXSwia2V5IjozLCJyZWNvbiI6dHJ1ZX0seyJuIjozLCJzdGVtIjoiV2h5IGRvZXMgdGhlIHdvbWFuIHdhbnQgYSBidWZmZXQtc3R5bGUgbWVhbD8iLCJvcHRpb25zIjpbImJlY2F1c2UgaXQgaXMgdGhlIGNoZWFwZXN0IG9wdGlvbiIsImJlY2F1c2UgdGhlIGV2ZW50IHdpbGwgYmUgb3V0c2lkZSIsImJlY2F1c2UgdGhlcmUgYXJlIG1hbnkgdmVnZXRhcmlhbnMiLCJiZWNhdXNlIHRoZSBndWVzdHMgcmVxdWVzdGVkIGl0Il0sImtleSI6MSwicmVjb24iOnRydWV9LHsibiI6NCwic3RlbSI6IldoeSBkb2VzIHRoZSB3b21hbiBjaG9vc2UgdGhlIGNvbnRpbmVudGFsIG1lbnU\/Iiwib3B0aW9ucyI6WyJJdCBpcyB0aGUgbGVhc3QgZXhwZW5zaXZlIG1lbnUuIiwiVGhlIGNvdXBsZSBhcmUgYm90aCB2ZWdldGFyaWFuLiIsIlNoZSB3YW50cyB0byBwbGVhc2UgZXZlcnlvbmUuIiwiSXQgb2ZmZXJzIHRoZSBtb3N0IGRpc2hlcy4iXSwia2V5IjoyLCJyZWNvbiI6dHJ1ZX0seyJuIjo1LCJzdGVtIjoiV2hhdCBpcyB0aGUgd29tYW4ncyBmaW5hbCBkZWNpc2lvbj8iLCJvcHRpb25zIjpbIlNoZSBib29rcyB0aGUgc2VydmljZSBpbW1lZGlhdGVseS4iLCJTaGUgY2FuY2VscyB0aGUgYm9va2luZy4iLCJTaGUgY2hvb3NlcyBhbm90aGVyIGNvbXBhbnkuIiwiU2hlIGFza3MgZm9yIG1vcmUgaW5mb3JtYXRpb24uIl0sImtleSI6MywicmVjb24iOnRydWV9LHsibiI6Niwic3RlbSI6IldoYXQga2luZCBvZiBldmVudCBpcyB0aGUgd29tYW4gcGxhbm5pbmc\/Iiwib3B0aW9ucyI6WyJ3ZWRkaW5nIHJlY2VwdGlvbiIsImJpcnRoZGF5IHBhcnR5IiwiY29tcGFueSBiYW5xdWV0IiwiYW5uaXZlcnNhcnkgZGlubmVyIl0sImtleSI6MCwicmVjb24iOnRydWV9XX1dfSx7Im5hbWUiOiJQYXJ0IDQ6IExpc3RlbmluZyB0byBhIE5ld3MgSXRlbSIsImhlYWRlclRpdGxlIjoiU2V0IDMgXHUyMDEzIFByYWN0aWNlIFRlc3QgMSBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgNDogTGlzdGVuaW5nIHRvIGEgTmV3cyBJdGVtIiwiaW50cm9UaXRsZSI6Ikxpc3RlbmluZyB0byBhIE5ld3MgSXRlbSIsImludHJvQnVsbGV0cyI6WyJZb3Ugd2lsbCBoZWFyIGEgbmV3cyBpdGVtIGFib3V0IHR3byBwZW9wbGUgd2hvIGdvdCBsb3N0LiBJdCBwbGF5cyBvbmx5IG9uY2UuIiwiQWZ0ZXIgdGhlIG5ld3MgaXRlbSwgY29tcGxldGUgZWFjaCBzdGF0ZW1lbnQgdXNpbmcgdGhlIGRyb3AtZG93biBtZW51LiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGNvbXBsZXRlIGVhY2ggc3RhdGVtZW50IGZyb20gdGhlIGRyb3AtZG93biBtZW51ICggXHUyNWJlICkuIiwidHJhbnNjcmlwdCI6IllvdSB3aWxsIGhlYXIgYSBuZXdzIGl0ZW0gYWJvdXQgdHdvIHBlb3BsZSB3aG8gZ290IGxvc3QuXG5cblR3byBoaWtlcnMgbG9zdCBvbiBNb3VudCBHaWJzb24gZm9yIHRoZSBwYXN0IHRocmVlIGRheXMgd2VyZSBmaW5hbGx5IGZvdW5kIGFuZCByZXNjdWVkXG50b2RheS4gUm9uIGFuZCBTYWxseSBKYWNrc29uIGxlZnQgdGhlaXIgaG9tZSBpbiBDYWxnYXJ5LCBBbGJlcnRhIGxhc3QgU2F0dXJkYXkgYW5kIGRyb3ZlXG5ub3J0aCB0byBNb3VudCBHaWJzb24uIFRoZSBjb3VwbGUgaGFkIHBsYW5uZWQgdG8gc3BlbmQgdGhlIGFmdGVybm9vbiBoaWtpbmcgdGhlXG5tb3VudGFpbiB0cmFpbHMgYW5kIGNhcnJpZWQgYSBzbWFsbCBiYWNrcGFjayBjb250YWluaW5nIG9ubHkgc2FuZHdpY2hlcyBhbmQgd2F0ZXIuIEFuXG5ob3VyIGludG8gdGhlaXIgaGlrZSwgdGhleSBkZWNpZGVkIHRvIGxlYXZlIHRoZSBkZXNpZ25hdGVkIHRyYWlsIGFuZCBzb29uIGJlY2FtZSBsb3N0IGluIHRoZVxuZGVuc2UgZm9yZXN0LiBGb3J0dW5hdGVseSwgYSBsb2NhbCByZXNpZGVudCBub3RpY2VkIHRoYXQgdGhlaXIgY2FyIGhhZCBiZWVuIHBhcmtlZCBhdCB0aGVcbmJhc2Ugb2YgdGhlIG1vdW50YWluIGZvciBhIGZldyBkYXlzLiBIZSBub3RpZmllZCB0aGUgcG9saWNlLCBhbmQgYSBTZWFyY2ggYW5kIFJlc2N1ZVxuaGVsaWNvcHRlciB3YXMgc2VudCB0byBsb29rIGZvciB0aGUgcGFpci5cblxmV2hlbiBhc2tlZCBob3cgdGhleSBoYWQgbWFuYWdlZCB0byBzdXJ2aXZlLCBTYWxseSBKYWNrc29uLCB3aG8gd2FzIHVuaW5qdXJlZCBidXRcbnZlcnkgZGVoeWRyYXRlZCwgYW5zd2VyZWQsIFx1MjAxY1dlIGF0ZSBiZXJyaWVzIGFuZCBkcmFuayB3YXRlciBmcm9tIHRoZSBjcmVlay5cdTIwMWQgU2VhcmNoIGFuZFxuUmVzY3VlIG9mZmljaWFsIEZyYW5rIFNtaXRoIHNhaWQsIFx1MjAxY1Blb3BsZSBzaG91bGQgYWx3YXlzIGNhcnJ5IGV4dHJhIGZvb2QsIHdhdGVyLCBhbmRcbmNsb3RoaW5nIHdoZW4gaGlraW5nLCBhbmQgdGhleSBzaG91bGQgYWxzbyBpbmZvcm0gc29tZW9uZSBhcyB0byB3aGVyZSB0aGV5IHBsYW4gdG8gaGlrZVxuYW5kIGFwcHJveGltYXRlbHkgd2hlbiB0aGV5IGV4cGVjdCB0byByZXR1cm4uXHUyMDFkXG5cbkdyYXRlZnVsIGZvciBoaXMgcmVzY3VlLCBSb24gSmFja3NvbiBzYWlkLCBcdTIwMWNXZSB3b3VsZG5cdTIwMTl0IGJlIGFsaXZlIHRvZGF5IHdpdGhvdXQgdGhlIGhlbHBcbm9mIHRoZSBtYW4gd2hvIHJlcG9ydGVkIG91ciBjYXIgdG8gdGhlIHBvbGljZSBhbmQgdGhlIGV4cGVyaWVuY2VkIFJlc2N1ZSBDcmV3IHRoYXRcbmZvdW5kIHVzLiBBbmQgbmV4dCB0aW1lLCB3ZVx1MjAxOWxsIHN0aWNrIHRvIHRoZSBtYXJrZWQgdHJhaWxzIVx1MjAxZCIsInNlY3Rpb25zIjpbeyJsYWJlbCI6Ik5ld3MgSXRlbSIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwiZHVyYXRpb24iOjEwMiwidGltZU1pbnV0ZXMiOjMsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBuZXdzIGl0ZW0uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiBJdCBpcyBhYm91dCAxLjUgbWludXRlcyBsb25nLiIsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IlJvbiBhbmQgU2FsbHkgd2VudCBmb3IiLCJvcHRpb25zIjpbImEgZHJpdmUgaW4gdGhlIG1vdW50YWlucy4iLCJhIGxvbmcgaGlrZSBpbiB0aGUgbW91bnRhaW5zLiIsImEgcGljbmljIGluIHRoZSBtb3VudGFpbnMuIiwiYSBoZWxpY29wdGVyIHJpZGUgaW4gdGhlIG1vdW50YWlucy4iXSwia2V5IjoxLCJyZWNvbiI6ZmFsc2V9LHsibiI6Miwic3RlbSI6IlRoZSBKYWNrc29ucyIsIm9wdGlvbnMiOlsiaW50ZW5kZWQgdG8gYmUgYXdheSBvbmx5IGZvciB0aGUgYWZ0ZXJub29uLiIsIndlcmUgbm90IG5vdGljZWQgYnkgbG9jYWwgcmVzaWRlbnRzLiIsImRpZCBub3QgYnJpbmcgYW55IGZvb2QgYW5kIHdhdGVyIHdpdGggdGhlbS4iLCJpbnRlbmRlZCB0byBjYW1wIGF0IHRoZSB0b3Agb2YgdGhlIG1vdW50YWluLiJdLCJrZXkiOjAsInJlY29uIjpmYWxzZX0seyJuIjozLCJzdGVtIjoiVGhlIEphY2tzb25zIGdvdCBsb3N0Iiwib3B0aW9ucyI6WyJ3aGVuIGl0IHN0YXJ0ZWQgdG8gZ2V0IGRhcmsuIiwid2hlbiB0aGV5IGxlZnQgdGhlIHRyYWlsIGluIHRoZSBmb3Jlc3QuIiwiYmVjYXVzZSB0aGVpciBjYXIgYnJva2UgZG93bi4iLCJiZWNhdXNlIHRoZXkgZ290IGRlaHlkcmF0ZWQgYW5kIGNvbmZ1c2VkLiJdLCJrZXkiOjEsInJlY29uIjpmYWxzZX0seyJuIjo0LCJzdGVtIjoiQSByZXNjdWUgb3BlcmF0aW9uIGJlZ2FuIGFmdGVyIiwib3B0aW9ucyI6WyJ0aGUgSmFja3NvbnMgY2FsbGVkIHRoZSBwb2xpY2UgYnkgY2VsbCBwaG9uZS4iLCJhIGZyaWVuZCByZWFsaXplZCB0aGV5IGhhZCBub3QgcmV0dXJuZWQuIiwic29tZW9uZSBub3RpY2VkIHRoZWlyIHBhcmtlZCBjYXIgaGFkIG5vdCBtb3ZlZC4iLCJhIGxvY2FsIHJlc2lkZW50IHNhdyB0aGUgSmFja3NvbidzIGNhbXAgZmlyZS4iXSwia2V5IjoyLCJyZWNvbiI6ZmFsc2V9LHsibiI6NSwic3RlbSI6IlRoZSBKYWNrc29ucyBzdXJ2aXZlZCBieSIsIm9wdGlvbnMiOlsicmVseWluZyBvbiB0aGUgc3VwcGxpZXMgdGhleSBoYWQgYnJvdWdodC4iLCJmaW5kaW5nIHRoaW5ncyB0byBlYXQgaW4gdGhlIGZvcmVzdC4iLCJidWlsZGluZyBhIHNoZWx0ZXIgbmV4dCB0byB0aGUgY3JlZWsuIiwidXNpbmcgc21va2UgYXMgYSBjYWxsIGZvciBoZWxwLiJdLCJrZXkiOjEsInJlY29uIjpmYWxzZX1dfV19LHsibmFtZSI6IlBhcnQgNTogTGlzdGVuaW5nIHRvIGEgRGlzY3Vzc2lvbiIsImhlYWRlclRpdGxlIjoiU2V0IDMgXHUyMDEzIFByYWN0aWNlIFRlc3QgMSBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgNTogTGlzdGVuaW5nIHRvIGEgRGlzY3Vzc2lvbiIsImludHJvVGl0bGUiOiJMaXN0ZW5pbmcgdG8gYSBEaXNjdXNzaW9uIiwiaW50cm9CdWxsZXRzIjpbIllvdSB3aWxsIHdhdGNoIGEgZGlzY3Vzc2lvbiBhbW9uZyB0aHJlZSBjb2xsZWFndWVzIGF0IHdvcmsuIFRoZSBtYW4gd29ya3MgaW4gdGhlIGNvbXBhbnkncyBMZWdhbCBkZXBhcnRtZW50LCBhbmQgdGhlIHdvbWVuIHdvcmsgaW4gdGhlIGNvbXBhbnkncyBIdW1hbiBSZXNvdXJjZXMgZGVwYXJ0bWVudC4gSXQgcGxheXMgb25seSBvbmNlLiIsIkFmdGVyIHRoZSBkaXNjdXNzaW9uLCBxdWVzdGlvbnMgd2lsbCBhcHBlYXIuIENob29zZSB0aGUgYmVzdCBhbnN3ZXIgdG8gZWFjaCBxdWVzdGlvbi4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbiBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoIFx1MjViZSApLiIsInRyYW5zY3JpcHQiOiJZb3Ugd2lsbCB3YXRjaCBhIGRpc2N1c3Npb24gYW1vbmcgdGhyZWUgY29sbGVhZ3VlcyBhdCB3b3JrLiBUaGUgbWFuIHdvcmtzIGluIHRoZVxuY29tcGFueVx1MjAxOXMgTGVnYWwgZGVwYXJ0bWVudCwgYW5kIHRoZSB3b21lbiB3b3JrIGluIHRoZSBjb21wYW55XHUyMDE5cyBIdW1hbiBSZXNvdXJjZXNcbmRlcGFydG1lbnQuXG5cbkJlYXRyaWNlOiAgICAgVGhhbmsgeW91IGZvciBtZWV0aW5nIHdpdGggdXMsIFRlZC4gV2Uga25vdyBob3cgYnVzeSB5b3UgYXJlLlxuVGVkOiBZZWFoLCB0b28gYnVzeSBmb3IgdGhpcyEgSXMgdGhpcyBtZWV0aW5nIGV2ZW4gbmVjZXNzYXJ5PyBFdmVyeSB5ZWFyIHdlIHByZXNlbnQgdGhlXG5cdTIwMWNIb3N0aWxlIFdvcmtwbGFjZVx1MjAxZCBsZWN0dXJlLiBJIHRhbGsgYWJvdXQgdGhlIGxlZ2FsIGlzc3VlczsgeW91IGd1eXMgdGFsayBhYm91dCB0aGVcbnBlcnNvbm5lbCBpc3N1ZXMuIFdoYXRcdTIwMTlzIHRvIGRpc2N1c3M\/IFdlIGNvdWxkXHUyMDE5dmUgcGlja2VkIGEgdGltZSwgeW91IGNvdWxkXHUyMDE5dmUgYm9va2VkIHRoZVxucm9vbSAuIC4gLiB3ZSB3b3VsZG5cdTIwMTl0IGhhdmUgdG8gaGF2ZSB0aGlzIG1lZXRpbmcuXG5Sb3NhOiBIZXksIElcdTIwMTltIHNob3J0IG9uIHRpbWUsIHRvby4gQnV0IEkgd2FudCB0byBtYWtlIHNvbWUgY2hhbmdlcyB0byB0aGlzIHllYXJcdTIwMTlzIGV2ZW50LFxuc28gbGV0XHUyMDE5cyB0YWxrLiBGaXJzdCBvZiBhbGwsIG5vIG1vcmUgc3RhbmRpbmcgb24gdGhlIHN0YWdlIHdoaWxlIHBlb3BsZSBqdXN0IHNpdCBhbmQgbGlzdGVuLlxuQmVhdHJpY2U6ICAgIFdlIHRob3VnaHQgdGhhdCB0aGUgc3RhZmYgY291bGQgYmUgbW9yZSBhY3RpdmVseSBpbnZvbHZlZCAuIC4gLiBtYXliZSBkb1xuc29tZSByb2xlcGxheWluZyBnYW1lcy5cblRlZDogVGhlcmVcdTIwMTlzIG92ZXIgYSBodW5kcmVkIHN0YWZmLCBhbmQgdGhleSBhbGwgaGF2ZSB0byBhdHRlbmQhIERvaW5nIHNvbWUga2luZCBvZiAuIC4gLlxucGFydGljaXBhdG9yeSBkcmFtYSBnYW1lcyAuIC4gLiBpdFx1MjAxOXMgZ29ubmEgYmUga2luZCBvZiBjaGFvdGljLCBpc25cdTIwMTl0IGl0P1xuQmVhdHJpY2U6ICAgIFdlbGwsIElcdTIwMTltIG5vIGV4cGVydCwgYnV0IHJvbGVwbGF5aW5nIGlzIGEgd2lkZWx5LXVzZWQgbGVhcm5pbmcgYWN0aXZpdHkuXG5QZW9wbGUgY2FuIGxlYXJuIGEgbG90IGZyb20gaXQuIEFuZCBpc25cdTIwMTl0IHRoYXQgb3VyIGdvYWw\/IFRvIGhlbHAgb3VyIGVtcGxveWVlcyBsZWFybj9cblRlYWNoIHRoZW0gd2hhdCB0byBkbyBhbmQgbm90IHRvIGRvIG9uIHRoZSBqb2I\/IFRoaXMgYWZmZWN0cyB5b3UgZGlyZWN0bHksIHlvdSBrbm93LlxuXGZUZWQ6IFdlbGwsIHdoZW4geW91IHB1dCBpdCB0aGF0IHdheSwgSSBkbyB3YW50IHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGdyaWV2YW5jZXMgYW5kXG5wcmV2ZW50IGxhd3N1aXRzLlxuUm9zYTogQW5kIHdlIGNvdWxkIGRvIGl0IGluIHNtYWxsIGdyb3Vwcy4gQW5kIGluIGEgY296aWVyIHBsYWNlIHRoYW4gdGhlIGNhZmV0ZXJpYS5cbk9idmlvdXNseSwgdGhpcyByb29tIHdvdWxkIGJlIHRvbyBzbWFsbC4gQnV0IG1heWJlIHdlIGNvdWxkIGJvb2sgYSBjb25mZXJlbmNlIHJvb20uXG5UZWQ6IExvb2suIElcdTIwMTl2ZSBnb3QgYSBsb3Qgb24gbXkgcGxhdGUuIEkgY2FuIHB1dCBhc2lkZSBtYXliZSBvbmUgZGF5IGEgd2VlayB0byBkbyB0aGlzIC5cbi4gLiBJIGRvblx1MjAxOXQgd2FudCB0byBkbyBNYXJrZXRpbmcgb25lIGRheSwgQWNjb3VudGluZyB0aGUgbmV4dCBkYXkgLiAuIC4gSWYgd2UgY291bGQganVzdFxuYm9vaywgc2F5LCBldmVyeSBNb25kYXkgYXQgMTAgb1x1MjAxOWNsb2NrLCBhbmQgZG8gYSBkaWZmZXJlbnQgZGVwYXJ0bWVudCBlYWNoIHdlZWs\/XG5Sb3NhOiBBY3R1YWxseSwgSSB3YXMgdGhpbmtpbmcgd2UgY291bGQgZ2V0IHVuaXRzIHRvIG1peCBhbmQgbWluZ2xlLiBIYXZlIHlvdSBldmVyXG5ub3RpY2VkIHRoYXQgYXQgdGhlIGFubnVhbCB3aW50ZXIgcGFydHksIHBlb3BsZSBqdXN0IHRlbmQgdG8gc3RpY2sgdG8gdGhlaXIgb3duIGRlcGFydG1lbnRzP1xuSSB0aGluayBpdCB3b3VsZCBiZSBnb29kIGZvciB0aGUgY29tcGFueSBpZiBwZW9wbGUgd2VyZW5cdTIwMTl0IHNvIC4gLiAuIGF0dGFjaGVkIHRvIHRoZWlyIHRyaWJlcy5cbldlIHNob3VsZCB3YXJtIHVwIHRvIG90aGVyIHBlb3BsZSAuIC4gLiBiZWNvbWUgbW9yZSBhd2FyZSBvZiB3aGF0IHRoZXkgZG8uXG5UZWQ6IFlvdSBrbm93LCB0aGF0IG1pZ2h0IGdvIGEgd2F5cyB0b3dhcmRzIGNyZWF0aW5nIGEgbGVzcyBob3N0aWxlIHdvcmsgZW52aXJvbm1lbnQuXG5JZiBwZW9wbGUgbGVhcm5lZCBzb21lIHJlc3BlY3QgZm9yIHRob3NlIGluIG90aGVyIGRlcGFydG1lbnRzIC4gLiAuIElmIGV2ZXJ5b25lIGRpZG5cdTIwMTl0IHRoaW5rXG50aGV5IHdlcmUgdGhlIG9ubHkgb25lcyB3aXRoIGltcG9ydGFudCB3b3JrIHRvIGRvIC4gLiAuIElmIGV2ZXJ5b25lIHdlcmVuXHUyMDE5dCBzbyAuIC4gLiIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IkRpc2N1c3Npb24gKHZpZGVvKSIsIm1lZGlhVHlwZSI6InZpZGVvIiwiZHVyYXRpb24iOjEzMCwidGltZU1pbnV0ZXMiOjMsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJXYXRjaCB0aGUgZGlzY3Vzc2lvbi4gWW91IHdpbGwgd2F0Y2ggaXQgb25seSBvbmNlLiBJdCBpcyBhYm91dCAxLjUgdG8gMiBtaW51dGVzIGxvbmcuIiwicXVlc3Rpb25zIjpbeyJuIjoxLCJzdGVtIjoiV2hpY2ggd29yZCBiZXN0IGZpbmlzaGVzIHRoZSBtYW4ncyBsYXN0IHNlbnRlbmNlPyBcdTIwMWNJZiBldmVyeW9uZSB3ZXJlbid0IHNvIC4gLiAuXHUyMDFkIiwib3B0aW9ucyI6WyJidXN5IiwicGVzc2ltaXN0aWMiLCJzZWxmLWNlbnRlcmVkIiwidW5mcmllbmRseSJdLCJrZXkiOjIsInJlY29uIjpmYWxzZX0seyJuIjoyLCJzdGVtIjoiV2h5IGRvIHRoZSB3b21lbiByZW1haW4gc2lsZW50IGF0IHRoZSBlbmQgb2YgdGhlIHZpZGVvPyIsIm9wdGlvbnMiOlsiVGhleSdyZSBhbXVzZWQgdGhhdCB0aGUgbWFuIGlzIGRlc2NyaWJpbmcgaGltc2VsZi4iLCJUaGUgbWFuIGhhcyBnaXZlbiB0aGVtIGhlYWRhY2hlcy4iLCJUaGV5IHN0aWxsIGRpc2FncmVlIHdpdGggd2hhdCB0aGUgbWFuIHNhaWQuIiwiVGhleSBkb24ndCB1bmRlcnN0YW5kIHdoYXQgdGhlIG1hbiBzYWlkLiJdLCJrZXkiOjAsInJlY29uIjpmYWxzZX0seyJuIjozLCJzdGVtIjoiV2hhdCBhcmUgdGhlIGNvLXdvcmtlcnMgbWVldGluZyB0byBkaXNjdXNzPyIsIm9wdGlvbnMiOlsid2hldGhlciB0byBob2xkIGFuIGV2ZW50IHRoaXMgeWVhciIsInRoZSBmb3JtYXQgZm9yIGFuIGFubnVhbCBldmVudCIsIndoZXRoZXIgdG8gaGlyZSBleHBlcnRzIGZvciBhbiBldmVudCIsInRoZSBjaGFuZ2VzIHRvIG5leHQgeWVhcidzIGV2ZW50Il0sImtleSI6MSwicmVjb24iOmZhbHNlfSx7Im4iOjQsInN0ZW0iOiJXaGF0IGlzIHRoZSB0b3BpYyBvZiB0aGUgYW5udWFsIGxlY3R1cmU\/Iiwib3B0aW9ucyI6WyJhY2NlcHRhYmxlIHdvcmtwbGFjZSBiZWhhdmlvdXIiLCJpbXByb3ZpbmcgeW91ciBwZW9wbGUgc2tpbGxzIiwibWFuYWdpbmcgeW91ciB0aW1lIG9uIHRoZSBqb2IiLCJ0aGUgcm9sZSBvZiB0aGUgbGVnYWwgZGVwYXJ0bWVudCJdLCJrZXkiOjAsInJlY29uIjpmYWxzZX0seyJuIjo1LCJzdGVtIjoiV2hhdCBpcyB0aGUgbWFuJ3MgYXR0aXR1ZGUgdG93YXJkIHRoZSBldmVudD8iLCJvcHRpb25zIjpbIkhlIHdvdWxkIHJhdGhlciBub3QgbWFrZSBhIHByZXNlbnRhdGlvbi4iLCJIZSB3aXNoZXMgdGhlIHdvbWVuIHdlcmVuJ3QgaW52b2x2ZWQuIiwiSGUgd291bGQgcmF0aGVyIHJlc29sdmUgc3RhZmYgZ3JpZXZhbmNlcy4iLCJIZSB3YW50cyB0byBpbnZlc3QgdGltZSBpbiBvdGhlciBwcmlvcml0aWVzLiJdLCJrZXkiOjMsInJlY29uIjpmYWxzZX0seyJuIjo2LCJzdGVtIjoiV2hhdCBkbyB0aGUgd29tZW4gdGhpbmsgYWJvdXQgdGhlIGxlY3R1cmUgZm9ybWF0PyIsIm9wdGlvbnMiOlsiSXQncyB0b28gY29uZnVzaW5nLiIsIkl0J3MgdG9vIGxlbmd0aHkuIiwiSXQncyB0b28gcGFzc2l2ZS4iLCJJdCdzIHRvbyB0ZWNobmljYWwuIl0sImtleSI6MiwicmVjb24iOmZhbHNlfSx7Im4iOjcsInN0ZW0iOiJXaGF0IHJvb20gZG9lcyB0aGUgd29tYW4gaW4gdGhlIFQtc2hpcnQgd2FudCB0byByZXNlcnZlPyIsIm9wdGlvbnMiOlsidGhlIG9uZSB0aGV5J3JlIGluIG5vdyIsImEgcm9vbSB3aXRoIGEgc3RhZ2UiLCJ0aGUgc3RhZmYgY2FmZXRlcmlhIiwiYSBiaWcgbWVldGluZyByb29tIl0sImtleSI6MywicmVjb24iOmZhbHNlfSx7Im4iOjgsInN0ZW0iOiJXaHkgZG9lcyB0aGUgd29tYW4gaW4gdGhlIFQtc2hpcnQgbWVudGlvbiB0aGUgd2ludGVyIHBhcnR5PyIsIm9wdGlvbnMiOlsidG8gd2FybiBvZiB0aGUgcmlza3Mgb2YgdHJpYmFsIHRoaW5raW5nIiwidG8gc3VnZ2VzdCBpdCBzaG91bGQgYmUgaW4gc3VtbWVyIiwidG8gaWxsdXN0cmF0ZSBhIG5lZWQgZm9yIGltcHJvdmVtZW50IiwidG8gZ2l2ZSBhbiBleGFtcGxlIG9mIGluY2x1c2l2ZW5lc3MiXSwia2V5IjoyLCJyZWNvbiI6ZmFsc2V9XX1dfSx7Im5hbWUiOiJQYXJ0IDY6IExpc3RlbmluZyBmb3IgVmlld3BvaW50cyIsImhlYWRlclRpdGxlIjoiU2V0IDMgXHUyMDEzIFByYWN0aWNlIFRlc3QgMSBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgNjogTGlzdGVuaW5nIGZvciBWaWV3cG9pbnRzIiwiaW50cm9UaXRsZSI6Ikxpc3RlbmluZyBmb3IgVmlld3BvaW50cyIsImludHJvQnVsbGV0cyI6WyJZb3Ugd2lsbCBoZWFyIGEgcHJlc2VudGF0aW9uIGFib3V0IGNpdHkgcGxhbm5pbmcuIEl0IHBsYXlzIG9ubHkgb25jZS4iLCJBZnRlciB0aGUgcHJlc2VudGF0aW9uLCBjb21wbGV0ZSBlYWNoIHN0YXRlbWVudCB1c2luZyB0aGUgZHJvcC1kb3duIG1lbnUuIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gY29tcGxldGUgZWFjaCBzdGF0ZW1lbnQgZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCBcdTI1YmUgKS4iLCJ0cmFuc2NyaXB0IjoiWW91IHdpbGwgaGVhciBhIHByZXNlbnRhdGlvbiBhYm91dCBjaXR5IHBsYW5uaW5nLlxuXG5CYWNrIGluIHRoZSAxOTgwXHUyMDE5cywgUm9nZXIgV2FuZyBsaXZlZCBpbiBTdXJyZXksIEJyaXRpc2ggQ29sdW1iaWEgYW5kIGNvbW11dGVkIHRvXG53b3JrIGluIFZhbmNvdXZlci4gVGhlIGpvdXJuZXkgdG9vayBoaW0gZm9ydHkgbWludXRlcy4gT3ZlciB0aGUgbGFzdCB0aGlydHkgeWVhcnMsIGNpdHlcbnBsYW5uZXJzIGhhdmUgYmVlbiBkZXNpZ25pbmcgYW5kIGludmVzdGluZyBpbiByb2FkIGltcHJvdmVtZW50cyBhbmQgdHJhbnNpdCBzeXN0ZW1zLlxuTm93LCB0aGlydHkgeWVhcnMgbGF0ZXIsIFJvZ2VyXHUyMDE5cyBzb24gbGl2ZXMgaW4gU3VycmV5IGFuZCBjb21tdXRlcyB0byBWYW5jb3V2ZXIganVzdCBhc1xuaGlzIGZhdGhlciBkaWQuIFRoZSBqb3VybmV5IGJ5IGNhciB0YWtlcyBjbG9zZSB0byBhbiBob3VyLiBEZXNwaXRlIHRoZSBjaGFuZ2VzLCB0cmFmZmljXG5jb25nZXN0aW9uIGhhcyBub3QgaW1wcm92ZWQuXG5cbkNpdHkgcGxhbm5lcnMgYWNyb3NzIENhbmFkYSBoYXZlIGJlZW4gdW5zdWNjZXNzZnVsbHkgZmlnaHRpbmcgY29tbXV0ZXIgY29uZ2VzdGlvbiBmb3JcbmRlY2FkZXMuIERlc3BpdGUgd2lkZXIgZnJlZXdheXMsIGNvbXB1dGVyaXplZCBtYW5hZ2VtZW50IHN5c3RlbXMgYW5kIG1vcmVcbnRyYW5zcG9ydGF0aW9uIGNvcnJpZG9ycywgbW9zdCBjaXRpZXMgYXJlIHdvcnNlIG9mZiB0aGFuIHRoZXkgd2VyZSB0aHJlZSBkZWNhZGVzIGFnby5cbkV4cGVyaWVuY2UgaGFzIHNob3duIHRoYXQgYnVpbGRpbmcgbW9yZSByb2FkcyBzaW1wbHkgbGVhZHMgdG8gbW9yZSB0cmFmZmljLiBNb3Jlb3Zlcixcbm1vc3QgQ2FuYWRpYW4gY2l0aWVzIGNvdmVyIGEgaHVnZSBhcmVhIGFuZCBkZW1hbmQgYSBsb3Qgb2Ygcm9hZHMuIFRoZSBjb3N0IG9mIGRldmVsb3BpbmdcbnN1Y2ggYW4gaW5mcmFzdHJ1Y3R1cmUgaW4gdGhlIGxvdyBkZW5zaXR5IHN1YnVyYnMgb2Ygb3VyIGNpdGllcyBpcyBpbW1lbnNlLiBXaGF0IGNhbiB3ZVxuZG8gdG8gZGVmZWF0IHRyYWZmaWMgY29uZ2VzdGlvbiBvbmNlIGFuZCBmb3IgYWxsPyBUaGUgc2hvcnQgYW5zd2VyIGlzIHRoYXQgd2UgbmVlZCB0byBnZXRcblxmcGVvcGxlIG91dCBvZiB0aGVpciBjYXJzLiBDaXR5IHBsYW5uaW5nIHBvbGljaWVzIG5lZWQgdG8gY29uc2lkZXIgYWx0ZXJuYXRpdmVzIHRvIHJvYWRzLiBBc1xubG9uZyBhcyBtb3N0IGNvbW11dGVycyB0cmF2ZWwgYWxvbmUgaW4gYSBjYXIsIHRyYWZmaWMgY29uZ2VzdGlvbiB3aWxsIHJlbWFpbiBhIHByb2JsZW0uXG5cbkNoYW5nZSB3aWxsIG5vdCBiZSBlYXN5LiBPcHBvc2l0aW9uIHRvIGNoYW5nZXMgaW4gY2l0eSBwbGFubmluZyBwb2xpY2llcyBhcmVcbm92ZXJ3aGVsbWluZy4gSW4gVmFuY291dmVyLCBjbG9zaW5nIGRvd24gYSBzaW5nbGUgbGFuZSBvZiBhIGJyaWRnZSBmb3IgYSBiaWN5Y2xlIGxhbmVcbm1ldCB3aXRoIGZ1cmlvdXMgb3Bwb3NpdGlvbiBmcm9tIG1vdG9yaXN0cy4gUHJvcG9zYWxzIGZvciBhIGdhc29saW5lIHRheCB0byByYWlzZSBmdW5kcyBmb3JcbnB1YmxpYyB0cmFuc3BvcnRhdGlvbiBhbHNvIG1ldCB3aXRoIHByb3Rlc3QgZnJvbSBtb3RvcmlzdHMuIEN1cmlvdXNseSwgdGhlIG9uZSBmb3JtIG9mXG5jb21tdXRlciBpbmZyYXN0cnVjdHVyZSBpbnZlc3RtZW50IHRoYXQgbWVldHMgd2l0aCBnZW5lcmFsIGFwcHJvdmFsIGlzIG1vcmUgcm9hZFxuYnJpZGdlcyBhbmQgd2lkZXIgcm9hZHNcdTIwMTRwcmVjaXNlbHkgdGhlIHBvbGljaWVzIHRoYXQgaGF2ZSBjb25zaXN0ZW50bHkgZmFpbGVkIG92ZXIgdGhlIGxhc3RcbmZldyBkZWNhZGVzLlxuXG5JbiBzaG9ydCwgd2UgaGF2ZSBhIHNvY2lldHkgdGhhdCBzZWVtcyBkZXRlcm1pbmVkIHRvIHBlcnNpc3Qgd2l0aCBmYWlsZWQgcG9saWNpZXMuIFRoZXJlIGFyZVxuZm91ciByZWFzb25zIHdoeSB0aGlzIG1pZ2h0IGJlIHRoZSBjYXNlLiBGaXJzdCwgZm9yIG1vc3QgY29tbXV0ZXJzLCBwcml2YXRlIHZlaGljbGVzIGFyZVxudXN1YWxseSBmYXN0ZXIgdGhhbiBwdWJsaWMgdHJhbnNwb3J0YXRpb24uIFNlY29uZCwgdGhlcmUgaXMgdGhlIHByb2JsZW0gb2YgZ2V0dGluZyB0byB0aGVcbndvcmtwbGFjZSBmcm9tIHRoZSB0cmFpbiBzdGF0aW9uIHdoaWNoIG1heSBpbnZvbHZlIGFuIGFkZGl0aW9uYWwgdGVuLW1pbnV0ZSB3YWxrLiBUaGlyZCxcbmZhdGlndWUgYWxzbyBkaXNjb3VyYWdlcyB1dGlsaXphdGlvbiBvZiBvdXIgcHVibGljIG5ldHdvcmtzLiBGZXcgcGVvcGxlIHdpc2ggdG8gc3RhcnQgYW5kXG5lbmQgdGhlaXIgZGF5IHdpdGggYW4gaG91ciBvZiBzdGFuZGluZyBpbiBjcmFtcGVkIGNvbmRpdGlvbnMuIEZvdXJ0aCwgZ3JvY2VyeSBzaG9wcGluZ1xub3Igb3RoZXIgZXJyYW5kcyBhZnRlciB3b3JrIG1pZ2h0IGJlIGRpZmZpY3VsdC5cblxuSXQgc2VlbXMgdGhhdCBwZW9wbGUgd2lsbCBjb250aW51ZSB0byByZWx5IG9uIHByaXZhdGUgdmVoaWNsZXMgdW50aWwgdGhpcyBtb2RlIG9mXG50cmFuc3BvcnRhdGlvbiBwcm92ZXMgbGVzcyBwbGVhc2FudCB0aGFuIHRoZSBhbHRlcm5hdGl2ZXMuIENpdHkgcGxhbm5lcnMsIGhvd2V2ZXIsIGNvbnRpbnVlXG50byBpbnZlc3QgaHVuZHJlZHMgb2YgbWlsbGlvbnMgb2YgZG9sbGFycyBpbiBhIHJvYWQgaW5mcmFzdHJ1Y3R1cmUgdGhhdCBtYWtlcyB0aGUgbW90b3Jpc3RzXHUyMDE5XG5tZXRob2Qgb2YgY29tbXV0aW5nIG1hcmdpbmFsbHkgbW9yZSB0b2xlcmFibGUgdGhhbiB0aGUgYWx0ZXJuYXRpdmVzLiIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IlByZXNlbnRhdGlvbiIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwiZHVyYXRpb24iOjE5MywidGltZU1pbnV0ZXMiOjQsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyByZXBvcnQuIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiBJdCBpcyBhYm91dCAzIG1pbnV0ZXMgbG9uZy4iLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJSb2dlcidzIHNvbiIsIm9wdGlvbnMiOlsid29ya3MgaW4gdGhlIHNhbWUgY2l0eSBhcyBSb2dlciBkaWQuIiwidGFrZXMgdGhlIHNhbWUgYnVzIGFzIFJvZ2VyIGRpZC4iLCJsaXZlcyBpbiBhIG1vcmUgZGlzdGFudCBzdWJ1cmIgdGhhbiBSb2dlciBkaWQuIiwiaGFzIGEgbW9yZSBjb21mb3J0YWJsZSBjb21tdXRlIHRoYW4gUm9nZXIgZGlkLiJdLCJrZXkiOjAsInJlY29uIjpmYWxzZX0seyJuIjoyLCJzdGVtIjoiQ2l0eSBwbGFubmVycyBpbiBDYW5hZGEgaGF2ZSIsIm9wdGlvbnMiOlsibWFuYWdlZCB0byByZWR1Y2UgdHJhZmZpYyBjb25nZXN0aW9uIGluIHRoZSBzdWJ1cmJzLiIsIm5lZ2xlY3RlZCB0aGUgYnVpbGRpbmcgb2Ygcm9hZHMgZm9yIHRoZSBzdWJ1cmJzLiIsInN0cnVnZ2xlZCB3aXRoIGluc3VmZmljaWVudCBmdW5kaW5nIGZvciBicmlkZ2VzIGFuZCByb2Fkcy4iLCJmYWlsZWQgdG8gcmVkdWNlIGNvbW11dGUgdGltZXMgZm9yIG1vc3QgZHJpdmVycy4iXSwia2V5IjozLCJyZWNvbiI6ZmFsc2V9LHsibiI6Mywic3RlbSI6IlRoZSBzcGVha2VyIGFyZ3VlcyB0aGF0IGFuIGFsdGVybmF0aXZlIHBsYW5uaW5nIHBvbGljeSBzaG91bGQgYmUgdG8iLCJvcHRpb25zIjpbImJ1aWxkIHdpZGVyIHJvYWRzIGFuZCBpbmNyZWFzZSB0aGUgbnVtYmVyIG9mIGJyaWRnZXMuIiwicGVyc3VhZGUgcGVvcGxlIHRvIHVzZSB0aGUgdHJhbnNpdCBzeXN0ZW0uIiwiZW5jb3VyYWdlIHBlb3BsZSB0byB3b3JrIGZyb20gaG9tZS4iLCJidWlsZCBtb3JlIG1ham9yIGFjY2VzcyByb2FkcyB0byB0aGUgc3VidXJicy4iXSwia2V5IjoxLCJyZWNvbiI6ZmFsc2V9LHsibiI6NCwic3RlbSI6IkluIFZhbmNvdXZlciwgbWFueSBwZW9wbGUgb3Bwb3NlZCIsIm9wdGlvbnMiOlsibW9yZSBicmlkZ2VzIG5lYXIgdGhlIGNpdHkuIiwiYSBiaWN5Y2xlIGxhbmUgb24gYSBicmlkZ2UuIiwid2lkZXIgcm9hZHMgaW4gdGhlIHN1YnVyYnMuIiwibW9yZSB0cmFpbiBzdGF0aW9ucyBpbiB0aGUgc3VidXJicy4iXSwia2V5IjoxLCJyZWNvbiI6ZmFsc2V9LHsibiI6NSwic3RlbSI6Ik9uZSBwcm9ibGVtIHdpdGggcHVibGljIHRyYW5zaXQgaXMgdGhhdCIsIm9wdGlvbnMiOlsidGhlIGNvc3Qgb2YgcHVibGljIHRyYW5zcG9ydCBpcyBub3QgY29tcGV0aXRpdmUuIiwidHJhaW5zIGFyZSBvZnRlbiBxdWl0ZSBkaXJ0eSBhbmQgdW5oeWdpZW5pYy4iLCJ0aGVyZSBhcmUgbm90IGVub3VnaCBidXNlcyB0byBtZWV0IGRlbWFuZC4iLCJzaG9wcGluZyBjZW50cmVzIGFyZSBtb3JlIGVhc2lseSBhY2Nlc3NpYmxlIGJ5IGNhci4iXSwia2V5IjozLCJyZWNvbiI6ZmFsc2V9LHsibiI6Niwic3RlbSI6IlRoZSBzcGVha2VyIGJlbGlldmVzIHRoYXQiLCJvcHRpb25zIjpbImN1cnJlbnQgY2l0eSBwbGFubmluZyBwb2xpY2llcyBhcmUgYm91bmQgdG8gZmFpbC4iLCJyb2FkcyBiZWluZyBidWlsdCB3aWxsIHJlZHVjZSBjb25nZXN0aW9uLiIsInB1YmxpYyB0cmFuc2l0IHN5c3RlbXMgYXJlIHRvbyBzbG93LiIsImJ1ZGdldCBmb3Igcm9hZCBleHBhbnNpb25zIHNob3VsZCBpbmNyZWFzZS4iXSwia2V5IjowLCJyZWNvbiI6ZmFsc2V9XX1dfV19OwoKdmFyIENFTFBJUF9ZVCA9IHsgdmlkZW9JZDogJycgfTsgIC8qIGUuZy4gJ2RRdzR3OVdnWGNRJyBcdTIwMTQgU2V0IDMgVGVzdCAxIGZ1bGwgbGlzdGVuaW5nIHZpZGVvICovCnZhciBDTFBfQ0hBUFRFUlMgPSB7ICcwLjAnOlswLDUyMF0sICcwLjEnOlswLDUyMF0sICcwLjInOlswLDUyMF0sICcxLjAnOls1MjAsODUzXSwgJzIuMCc6Wzg1MywxMjcyXSwgJzMuMCc6WzEyNzIsMTM2NF0sICc0LjAnOlsxMzY0LDE1MDNdLCAnNS4wJzpbMTUwMywxNzU3XSB9OwoKLyogVE9ETzogcGxhY2Vob2xkZXIgbWFwcGluZyBcdTIwMTQgdmVyaWZ5IGFnYWluc3QgdGhlIG9mZmljaWFsIENFTFBJUCBzY29yZSBjaGFydC4gKi8KZnVuY3Rpb24gY2xiRXN0aW1hdGUocmF3KXsKICBpZiAocmF3ID49IDM1KSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCAxMFx1MjAxMzEyJywgbm90ZTogJ0FkdmFuY2VkIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMzApIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDknLCAgICAgICAgbm90ZTogJ0VmZmVjdGl2ZSBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDI3KSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCA4JywgICAgICAgIG5vdGU6ICdHb29kIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMjIpIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDcnLCAgICAgICAgbm90ZTogJ0FkZXF1YXRlIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMTcpIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDYnLCAgICAgICAgbm90ZTogJ0RldmVsb3BpbmcgcHJvZmljaWVuY3knIH07CiAgaWYgKHJhdyA+PSAxMSkgcmV0dXJuIHsgbGV2ZWw6ICdDRUxQSVAgNScsICAgICAgICBub3RlOiAnQWNxdWlyaW5nIHByb2ZpY2llbmN5JyB9OwogIHJldHVybiAgICAgICAgICAgIHsgbGV2ZWw6ICdDRUxQSVAgNCBvciBiZWxvdycsICAgbm90ZTogJ0tlZXAgcHJhY3RpY2luZyEnIH07Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PSBlbmdpbmUgPT09PT09PT09PT09PT09PT09PT09ICovCihmdW5jdGlvbigpewogIHZhciByZWR1Y2VkTW90aW9uID0gd2luZG93Lm1hdGNoTWVkaWEgJiYgd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpJykubWF0Y2hlczsKICB2YXIgY2F0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscENhdCcpOwogIHZhciBkb3RzRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwRG90cycpOwogIHZhciB0b29sYmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFRvb2xiYXInKTsKICB2YXIgcmVzdWx0c0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFJlc3VsdHMnKTsKICB2YXIgc2NvcmVDaGlwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFNjb3JlQ2hpcCcpOwoKICB2YXIgVE9UQUxfUSA9IDA7CiAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocCl7IHAuc2VjdGlvbnMuZm9yRWFjaChmdW5jdGlvbihzKXsgVE9UQUxfUSArPSBzLnF1ZXN0aW9ucy5sZW5ndGg7IH0pOyB9KTsKCiAgdmFyIHNjcmVlbnMgPSBbXTsKICBURVNUX0RBVEEucGFydHMuZm9yRWFjaChmdW5jdGlvbihwYXJ0LCBwaSl7CiAgICBzY3JlZW5zLnB1c2goeyB0eXBlOiAnaW50cm8nLCBwaTogcGkgfSk7CiAgICBwYXJ0LnNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24oc2VjLCBzaSl7CiAgICAgIHNjcmVlbnMucHVzaCh7IHR5cGU6ICdtZWRpYScsIHBpOiBwaSwgc2k6IHNpIH0pOwogICAgICBzY3JlZW5zLnB1c2goeyB0eXBlOiAncScsIHBpOiBwaSwgc2k6IHNpIH0pOwogICAgfSk7CiAgfSk7CiAgc2NyZWVucy5wdXNoKHsgdHlwZTogJ2ZpbmlzaCcgfSk7CgogIHZhciBzdGF0ZSA9IHsKICAgIHN0YXJ0ZWQ6IGZhbHNlLAogICAgaWR4OiAwLAogICAgYW5zd2Vyczoge30sICAgICAgLyogInBpLnNpLnFpIiAtPiBvcHRpb24gaW5kZXggKDAtMykgKi8KICAgIGNoZWNrZWQ6IGZhbHNlLAogICAgdGltZXJPbjogdHJ1ZQogIH07CiAgdmFyIG1lZGlhVGltZXIgPSBudWxsLCBxVGltZXIgPSBudWxsLCBxUmVtYWluaW5nID0gMDsKICB2YXIgcG9wdXAgPSBudWxsLCBvcGVuVHJpZ2dlciA9IG51bGw7CgogIGZ1bmN0aW9uIHFLZXkocGksIHNpLCBxaSl7IHJldHVybiBwaSArICcuJyArIHNpICsgJy4nICsgcWk7IH0KICBmdW5jdGlvbiBmbXQoc2VjKXsgdmFyIG0gPSBNYXRoLmZsb29yKHNlYy82MCksIHMgPSBzZWMgJSA2MDsgcmV0dXJuIG0gKyAnOicgKyAocyA8IDEwID8gJzAnIDogJycpICsgczsgfQogIGZ1bmN0aW9uIGVsKHRhZywgY2xzLCB0ZXh0KXsKICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpOwogICAgaWYgKGNscykgZS5jbGFzc05hbWUgPSBjbHM7CiAgICBpZiAodGV4dCAhPT0gdW5kZWZpbmVkKSBlLnRleHRDb250ZW50ID0gdGV4dDsKICAgIHJldHVybiBlOwogIH0KICBmdW5jdGlvbiBzY3JvbGxUb0VsKHRhcmdldCwgb2Zmc2V0KXsKICAgIHZhciB5ID0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIHdpbmRvdy5wYWdlWU9mZnNldCAtIChvZmZzZXQgfHwgNzApOwogICAgd2luZG93LnNjcm9sbFRvKHsgdG9wOiB5LCBiZWhhdmlvcjogcmVkdWNlZE1vdGlvbiA\/ICdhdXRvJyA6ICdzbW9vdGgnIH0pOwogIH0KICBmdW5jdGlvbiBjbGVhclRpbWVycygpewogICAgaWYgKG1lZGlhVGltZXIpeyBjbGVhckludGVydmFsKG1lZGlhVGltZXIpOyBtZWRpYVRpbWVyID0gbnVsbDsgfQogICAgaWYgKHFUaW1lcil7IGNsZWFySW50ZXJ2YWwocVRpbWVyKTsgcVRpbWVyID0gbnVsbDsgfQogIH0KICBmdW5jdGlvbiBhbnN3ZXJlZENvdW50KCl7IHJldHVybiBPYmplY3Qua2V5cyhzdGF0ZS5hbnN3ZXJzKS5sZW5ndGg7IH0KICBmdW5jdGlvbiB1cGRhdGVTY29yZUNoaXAoKXsKICAgIGlmIChzdGF0ZS5jaGVja2VkKXsKICAgICAgc2NvcmVDaGlwLnRleHRDb250ZW50ID0gJ1Njb3JlICcgKyBjb21wdXRlU2NvcmUoKS50b3RhbCArICcvJyArIFRPVEFMX1E7CiAgICB9IGVsc2UgewogICAgICBzY29yZUNoaXAudGV4dENvbnRlbnQgPSAnQW5zd2VyZWQgJyArIGFuc3dlcmVkQ291bnQoKSArICcvJyArIFRPVEFMX1E7CiAgICB9CiAgfQogIGZ1bmN0aW9uIGNvbXB1dGVTY29yZSgpewogICAgdmFyIHRvdGFsID0gMCwgcGVyUGFydCA9IFtdOwogICAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCwgcGkpewogICAgICB2YXIgYyA9IDAsIG4gPSAwOwogICAgICBwYXJ0LnNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24oc2VjLCBzaSl7CiAgICAgICAgc2VjLnF1ZXN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHEsIHFpKXsKICAgICAgICAgIG4rKzsKICAgICAgICAgIGlmIChzdGF0ZS5hbnN3ZXJzW3FLZXkocGksIHNpLCBxaSldID09PSBxLmtleSAtIDEpeyBjKys7IHRvdGFsKys7IH0KICAgICAgICB9KTsKICAgICAgfSk7CiAgICAgIHBlclBhcnQucHVzaCh7IGNvcnJlY3Q6IGMsIHRvdGFsOiBuIH0pOwogICAgfSk7CiAgICByZXR1cm4geyB0b3RhbDogdG90YWwsIHBlclBhcnQ6IHBlclBhcnQgfTsKICB9CgogIC8qIC0tLS0tLS0tLS0gZHJvcGRvd24gcG9wdXAgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIGNsb3NlUG9wdXAoKXsKICAgIGlmIChwb3B1cCl7IHBvcHVwLnJlbW92ZSgpOyBwb3B1cCA9IG51bGw7IH0KICAgIGlmIChvcGVuVHJpZ2dlcil7IG9wZW5UcmlnZ2VyLmNsYXNzTGlzdC5yZW1vdmUoJ2NscC1vcGVuJyk7IG9wZW5UcmlnZ2VyID0gbnVsbDsgfQogIH0KICBmdW5jdGlvbiBvcGVuUG9wdXAodHJpZ2dlciwgcGksIHNpLCBxaSl7CiAgICBpZiAob3BlblRyaWdnZXIgPT09IHRyaWdnZXIpeyBjbG9zZVBvcHVwKCk7IHJldHVybjsgfQogICAgY2xvc2VQb3B1cCgpOwogICAgdmFyIHEgPSBURVNUX0RBVEEucGFydHNbcGldLnNlY3Rpb25zW3NpXS5xdWVzdGlvbnNbcWldOwogICAgdmFyIGtleSA9IHFLZXkocGksIHNpLCBxaSk7CiAgICBwb3B1cCA9IGVsKCdkaXYnLCAnY2xwLXBvcCcpOwogICAgcS5vcHRpb25zLmZvckVhY2goZnVuY3Rpb24ob3B0LCBvaSl7CiAgICAgIHZhciBiID0gZWwoJ2J1dHRvbicsICdjbHAtb3B0JyArIChzdGF0ZS5hbnN3ZXJzW2tleV0gPT09IG9pID8gJyBjbHAtc2VsJyA6ICcnKSk7CiAgICAgIGIudHlwZSA9ICdidXR0b24nOwogICAgICBiLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1yYWRpbycpKTsKICAgICAgYi5hcHBlbmRDaGlsZChlbCgnc3BhbicsICcnLCBvcHQpKTsKICAgICAgYi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGV2KXsKICAgICAgICBldi5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICBzdGF0ZS5hbnN3ZXJzW2tleV0gPSBvaTsKICAgICAgICB1cGRhdGVTY29yZUNoaXAoKTsKICAgICAgICBjbG9zZVBvcHVwKCk7CiAgICAgICAgc2V0VHJpZ2dlckxhYmVsKHRyaWdnZXIsIG9wdCwgZmFsc2UpOwogICAgICB9KTsKICAgICAgcG9wdXAuYXBwZW5kQ2hpbGQoYik7CiAgICB9KTsKICAgIGNhdC5hcHBlbmRDaGlsZChwb3B1cCk7CiAgICAvKiBwb3NpdGlvbjogYmVsb3cgdHJpZ2dlciwgZmxpcCBhYm92ZSB3aGVuIG5lYXIgdmlld3BvcnQgYm90dG9tICovCiAgICBwb3B1cC5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7CiAgICB2YXIgY2F0UmVjdCA9IGNhdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgIHZhciB0UmVjdCA9IHRyaWdnZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICB2YXIgcG9wVyA9IHBvcHVwLm9mZnNldFdpZHRoLCBwb3BIID0gcG9wdXAub2Zmc2V0SGVpZ2h0OwogICAgdmFyIGxlZnQgPSB0UmVjdC5sZWZ0IC0gY2F0UmVjdC5sZWZ0OwogICAgbGVmdCA9IE1hdGgubWF4KDgsIE1hdGgubWluKGxlZnQsIGNhdC5jbGllbnRXaWR0aCAtIHBvcFcgLSA4KSk7CiAgICB2YXIgdG9wOwogICAgaWYgKHRSZWN0LmJvdHRvbSArIHBvcEggKyAyNCA+IHdpbmRvdy5pbm5lckhlaWdodCAmJiB0UmVjdC50b3AgLSBwb3BIIC0gOCA+IDApewogICAgICB0b3AgPSB0UmVjdC50b3AgLSBjYXRSZWN0LnRvcCAtIHBvcEggLSA2OyAgIC8qIGZsaXAgYWJvdmUgKi8KICAgIH0gZWxzZSB7CiAgICAgIHRvcCA9IHRSZWN0LmJvdHRvbSAtIGNhdFJlY3QudG9wICsgNjsKICAgIH0KICAgIHBvcHVwLnN0eWxlLmxlZnQgPSBsZWZ0ICsgJ3B4JzsKICAgIHBvcHVwLnN0eWxlLnRvcCA9IHRvcCArICdweCc7CiAgICBwb3B1cC5zdHlsZS52aXNpYmlsaXR5ID0gJyc7CiAgICB0cmlnZ2VyLmNsYXNzTGlzdC5hZGQoJ2NscC1vcGVuJyk7CiAgICBvcGVuVHJpZ2dlciA9IHRyaWdnZXI7CiAgfQogIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZXYpewogICAgaWYgKHBvcHVwICYmICFwb3B1cC5jb250YWlucyhldi50YXJnZXQpICYmIGV2LnRhcmdldCAhPT0gb3BlblRyaWdnZXIgJiYgKCFvcGVuVHJpZ2dlciB8fCAhb3BlblRyaWdnZXIuY29udGFpbnMoZXYudGFyZ2V0KSkpewogICAgICBjbG9zZVBvcHVwKCk7CiAgICB9CiAgfSk7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNsb3NlUG9wdXApOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBmdW5jdGlvbigpeyAvKiBrZWVwIHBvcHVwIGFuY2hvcmVkOiBjbG9zZSBvbiBzY3JvbGwgKi8gaWYgKHBvcHVwKSBjbG9zZVBvcHVwKCk7IH0sIHsgcGFzc2l2ZTogdHJ1ZSB9KTsKCiAgZnVuY3Rpb24gc2V0VHJpZ2dlckxhYmVsKHRyaWdnZXIsIHRleHQsIHVuYW5zd2VyZWQpewogICAgdHJpZ2dlci5jbGFzc0xpc3QudG9nZ2xlKCdjbHAtdW5hbnN3ZXJlZCcsICEhdW5hbnN3ZXJlZCk7CiAgICB0cmlnZ2VyLnF1ZXJ5U2VsZWN0b3IoJy5jbHAtZGQtdGV4dCcpLnRleHRDb250ZW50ID0gdW5hbnN3ZXJlZCA\/ICdcdTIwMjZcdTIwMjZcdTIwMjZcdTIwMjYnIDogdGV4dDsKICB9CgogIC8qIC0tLS0tLS0tLS0gZG90cyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gcmVuZGVyRG90cygpewogICAgZG90c0VsLmlubmVySFRNTCA9ICcnOwogICAgdmFyIGN1clBpID0gLTE7CiAgICB2YXIgcyA9IHNjcmVlbnNbc3RhdGUuaWR4XTsKICAgIGlmIChzICYmIHMucGkgIT09IHVuZGVmaW5lZCkgY3VyUGkgPSBzLnBpOwogICAgaWYgKHMgJiYgcy50eXBlID09PSAnZmluaXNoJykgY3VyUGkgPSBURVNUX0RBVEEucGFydHMubGVuZ3RoOyAvKiBhbGwgZG9uZSAqLwogICAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCwgcGkpewogICAgICB2YXIgZCA9IGVsKCdidXR0b24nLCAnY2xwLWRvdCcsICdQJyArIChwaSArIDEpKTsKICAgICAgZC50eXBlID0gJ2J1dHRvbic7CiAgICAgIGlmIChwaSA9PT0gY3VyUGkpIGQuY2xhc3NMaXN0LmFkZCgnY2xwLWN1cicpOwogICAgICBlbHNlIGlmIChwaSA8IGN1clBpIHx8IHN0YXRlLmNoZWNrZWQpIGQuY2xhc3NMaXN0LmFkZCgnY2xwLWRvbmUnKTsKICAgICAgaWYgKHN0YXRlLmNoZWNrZWQpewogICAgICAgIGQuY2xhc3NMaXN0LmFkZCgnY2xwLWNsaWNrYWJsZScpOwogICAgICAgIGQudGl0bGUgPSAnUmV2aWV3ICcgKyBwYXJ0Lm5hbWU7CiAgICAgICAgZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmVlbnMubGVuZ3RoOyBpKyspewogICAgICAgICAgICBpZiAoc2NyZWVuc1tpXS50eXBlID09PSAncScgJiYgc2NyZWVuc1tpXS5waSA9PT0gcGkpeyBzdGF0ZS5pZHggPSBpOyBicmVhazsgfQogICAgICAgICAgfQogICAgICAgICAgcmVuZGVyKCk7IHNjcm9sbFRvRWwoY2F0KTsKICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBkLnRpdGxlID0gcGFydC5uYW1lOwogICAgICB9CiAgICAgIGRvdHNFbC5hcHBlbmRDaGlsZChkKTsKICAgIH0pOwogIH0KCiAgLyogLS0tLS0tLS0tLSBjaHJvbWUgcGllY2VzIC0tLS0tLS0tLS0gKi8KICBmdW5jdGlvbiBtYWtlQmFyKHRpdGxlLCB3aXRoVGltZXIpewogICAgdmFyIGJhciA9IGVsKCdkaXYnLCAnY2xwLWJhcicpOwogICAgYmFyLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1iYXItdGl0bGUnLCB0aXRsZSkpOwogICAgaWYgKHdpdGhUaW1lciAmJiBzdGF0ZS50aW1lck9uKXsKICAgICAgdmFyIHQgPSBlbCgnc3BhbicsICdjbHAtYmFyLXRpbWVyJyk7CiAgICAgIHQuaWQgPSAnY2xwUVRpbWVyJzsKICAgICAgdC5pbm5lckhUTUwgPSAnVGltZSByZW1haW5pbmc6IDxiPicgKyBmbXQocVJlbWFpbmluZykgKyAnPC9iPic7CiAgICAgIGJhci5hcHBlbmRDaGlsZCh0KTsKICAgIH0KICAgIHZhciBuZXh0ID0gZWwoJ2J1dHRvbicsICdjbHAtbmV4dCcsICdOZXh0Jyk7CiAgICBuZXh0LnR5cGUgPSAnYnV0dG9uJzsKICAgIG5leHQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgICBjbG9zZVBvcHVwKCk7CiAgICAgIGlmIChzdGF0ZS5pZHggPCBzY3JlZW5zLmxlbmd0aCAtIDEpeyBzdGF0ZS5pZHgrKzsgcmVuZGVyKCk7IHNjcm9sbFRvRWwoY2F0KTsgfQogICAgfSk7CiAgICBpZiAoc2NyZWVuc1tzdGF0ZS5pZHhdLnR5cGUgPT09ICdmaW5pc2gnKSBuZXh0LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICBiYXIuYXBwZW5kQ2hpbGQobmV4dCk7CiAgICByZXR1cm4gYmFyOwogIH0KICBmdW5jdGlvbiBtYWtlSW5zdHIodGV4dCl7CiAgICB2YXIgcm93ID0gZWwoJ2RpdicsICdjbHAtaW5zdHInKTsKICAgIHJvdy5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtaW5mbycsICdpJykpOwogICAgcm93LmFwcGVuZENoaWxkKGVsKCdwJywgJycsIHRleHQpKTsKICAgIHJldHVybiByb3c7CiAgfQogIHZhciBTUEVBS0VSX1NWRyA9ICc8c3ZnIHdpZHRoPSIyNiIgaGVpZ2h0PSIyNiIgdmlld0JveD0iMCAwIDI2IDI2IiBmaWxsPSJub25lIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JyArCiAgICAnPHJlY3QgeD0iMyIgeT0iOSIgd2lkdGg9IjYiIGhlaWdodD0iOCIgcng9IjEiIGZpbGw9ImN1cnJlbnRDb2xvciIvPicgKwogICAgJzxwYXRoIGQ9Ik05IDkgTDE1IDQgTDE1IDIyIEw5IDE3IFoiIGZpbGw9ImN1cnJlbnRDb2xvciIvPicgKwogICAgJzxwYXRoIGQ9Ik0xOCA5IGE1LjUgNS41IDAgMCAxIDAgOCIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+JyArCiAgICAnPHBhdGggZD0iTTIwLjUgNi41IGE5IDkgMCAwIDEgMCAxMyIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PC9zdmc+JzsKICB2YXIgUExBWV9TVkcgPSAnPHN2ZyB3aWR0aD0iMjYiIGhlaWdodD0iMjYiIHZpZXdCb3g9IjAgMCAyNiAyNiIgZmlsbD0ibm9uZSIgYXJpYS1oaWRkZW49InRydWUiPicgKwogICAgJzxwYXRoIGQ9Ik04IDUgTDIxIDEzIEw4IDIxIFoiIGZpbGw9ImN1cnJlbnRDb2xvciIvPjwvc3ZnPic7CgogIC8qIC0tLS0tLS0tLS0gc2NyZWVucyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gcmVuZGVySW50cm8oc2NyLCByb290KXsKICAgIHZhciBwYXJ0ID0gVEVTVF9EQVRBLnBhcnRzW3Njci5waV07CiAgICByb290LnNldEF0dHJpYnV0ZSgnZGF0YS1zY3JlZW4tbGFiZWwnLCBwYXJ0Lm5hbWUgKyAnIFx1MjAxNCBJbnN0cnVjdGlvbnMnKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQobWFrZUluc3RyKCdJbnN0cnVjdGlvbnM6JykpOwogICAgdmFyIGJvZHkgPSBlbCgnZGl2JywgJ2NscC1pbnRyby1ib2R5Jyk7CiAgICBib2R5LmFwcGVuZENoaWxkKGVsKCdoMycsICcnLCBwYXJ0LmludHJvVGl0bGUpKTsKICAgIHZhciB1bCA9IGVsKCd1bCcsICdjbHAtYnVsbGV0cycpOwogICAgcGFydC5pbnRyb0J1bGxldHMuZm9yRWFjaChmdW5jdGlvbihiKXsgdWwuYXBwZW5kQ2hpbGQoZWwoJ2xpJywgJycsIGIpKTsgfSk7CiAgICBib2R5LmFwcGVuZENoaWxkKHVsKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQoYm9keSk7CiAgfQoKICBmdW5jdGlvbiByZW5kZXJNZWRpYShzY3IsIHJvb3QpewogICAgdmFyIHBhcnQgPSBURVNUX0RBVEEucGFydHNbc2NyLnBpXTsKICAgIHZhciBzZWMgPSBwYXJ0LnNlY3Rpb25zW3Njci5zaV07CiAgICByb290LnNldEF0dHJpYnV0ZSgnZGF0YS1zY3JlZW4tbGFiZWwnLCBwYXJ0Lm5hbWUgKyAnIFx1MjAxNCBNZWRpYScpOwogICAgcm9vdC5hcHBlbmRDaGlsZChtYWtlSW5zdHIoc2VjLm1lZGlhSW5zdHJ1Y3Rpb24pKTsKdmFyIF9haz1zY3IucGkrIi4iK3Njci5zaSxfYXU9KHR5cGVvZiBDTFBfQVVESU8hPT0idW5kZWZpbmVkIikmJkNMUF9BVURJT1tfYWtdO2lmKF9hdSl7dmFyIF9pc1Y9KHR5cGVvZiBDTFBfQVVESU9fVklERU8hPT0idW5kZWZpbmVkIikmJkNMUF9BVURJT19WSURFT1tfYWtdO3ZhciBfcD1lbCgiZGl2IiwiY2xwLW1lZGlhLXBhbmVsIik7dmFyIF9jPWVsKCJkaXYiLCJjbHAtbWVkaWEtY2FyZCIrKF9pc1Y\/IiBjbHAtaXMtdmlkZW8iOiIiKSk7dmFyIF9tPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoX2lzVj8idmlkZW8iOiJhdWRpbyIpO19tLnNyYz1fYXU7X20uY29udHJvbHM9dHJ1ZTtfbS5wcmVsb2FkPSJub25lIjtfbS5jbGFzc05hbWU9ImNscC1yZWFsbWVkaWEiO19tLnNldEF0dHJpYnV0ZSgiY29udHJvbHNMaXN0Iiwibm9kb3dubG9hZCIpO19tLnN0eWxlLmNzc1RleHQ9X2lzVj8id2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjhweDtiYWNrZ3JvdW5kOiMwMDA7ZGlzcGxheTpibG9jayI6IndpZHRoOjEwMCU7ZGlzcGxheTpibG9jayI7X2MuYXBwZW5kQ2hpbGQoX20pO19wLmFwcGVuZENoaWxkKF9jKTtfcC5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLW9uY2Utbm90ZSIsIkluIHRoZSByZWFsIHRlc3QgdGhpcyByZWNvcmRpbmcgcGxheXMgb25jZS4gRm9yIHByYWN0aWNlIHlvdSBjYW4gcmVwbGF5IGl0IFx1MjAxNCBidXQgdHJ5IHRvIGxpc3RlbiBvbmx5IG9uY2UgZmlyc3QuIikpO3Jvb3QuYXBwZW5kQ2hpbGQoX3ApO3JldHVybjt9CgogICAgaWYgKENFTFBJUF9ZVC52aWRlb0lkKXsKICAgICAgdmFyIGNoID0gQ0xQX0NIQVBURVJTW3Njci5waSArICcuJyArIHNjci5zaV0gfHwgWzAsIDBdOwogICAgICB2YXIgdnBhbmVsID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtcGFuZWwnKTsKICAgICAgdmFyIHZjYXJkID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtY2FyZCBjbHAtaXMtdmlkZW8nKTsKICAgICAgdmFyIHdyYXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgd3JhcC5zdHlsZS5jc3NUZXh0ID0gJ3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7YXNwZWN0LXJhdGlvOjE2Lzk7Ym9yZGVyLXJhZGl1czo4cHg7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQ6IzAwMDsnOwogICAgICB2YXIgaWZyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7CiAgICAgIGlmci5zcmMgPSAnaHR0cHM6Ly93d3cueW91dHViZS1ub2Nvb2tpZS5jb20vZW1iZWQvJyArIENFTFBJUF9ZVC52aWRlb0lkICsgJz9zdGFydD0nICsgY2hbMF0gKyAoY2hbMV0gPyAnJmVuZD0nICsgY2hbMV0gOiAnJykgKyAnJnJlbD0wJm1vZGVzdGJyYW5kaW5nPTEnOwogICAgICBpZnIuYWxsb3cgPSAnYXV0b3BsYXk7IGVuY3J5cHRlZC1tZWRpYTsgcGljdHVyZS1pbi1waWN0dXJlJzsKICAgICAgaWZyLmFsbG93RnVsbHNjcmVlbiA9IHRydWU7CiAgICAgIGlmci50aXRsZSA9ICdDRUxQSVAgTGlzdGVuaW5nIG1lZGlhJzsKICAgICAgaWZyLnN0eWxlLmNzc1RleHQgPSAncG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JvcmRlcjowOyc7CiAgICAgIHdyYXAuYXBwZW5kQ2hpbGQoaWZyKTsKICAgICAgdmNhcmQuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICAgIHZwYW5lbC5hcHBlbmRDaGlsZCh2Y2FyZCk7CiAgICAgIHZwYW5lbC5hcHBlbmRDaGlsZChlbCgnZGl2JywgJ2NscC1vbmNlLW5vdGUnLCAnSW4gdGhlIHJlYWwgdGVzdCB0aGlzIHBsYXlzIG9ubHkgb25jZSBcdTIwMTQgcHJlc3MgTkVYVCB3aGVuIGl0IGVuZHMuJykpOwogICAgICByb290LmFwcGVuZENoaWxkKHZwYW5lbCk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgcGFuZWwgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1wYW5lbCcpOwogICAgdmFyIGNhcmQgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1jYXJkJyArIChzZWMubWVkaWFUeXBlID09PSAndmlkZW8nID8gJyBjbHAtaXMtdmlkZW8nIDogJycpKTsKICAgIC8qIC5jbHAtbWVkaWEtem9uZSBpcyB0aGUgZnV0dXJlIFlvdVR1YmUtZW1iZWQgdGFyZ2V0IChkYXRhLW1lZGlhLXNsb3QpICovCiAgICB2YXIgem9uZSA9IGVsKCdkaXYnLCAnY2xwLW1lZGlhLXpvbmUnKTsKICAgIHpvbmUuc2V0QXR0cmlidXRlKCdkYXRhLW1lZGlhLXNsb3QnLCBzY3IucGkgKyAnLicgKyBzY3Iuc2kpOwogICAgdmFyIGljb24gPSBlbCgnZGl2JywgJ2NscC1zcGVha2VyJyk7CiAgICBpY29uLmlubmVySFRNTCA9IHNlYy5tZWRpYVR5cGUgPT09ICd2aWRlbycgPyBQTEFZX1NWRyA6IFNQRUFLRVJfU1ZHOwogICAgdmFyIG1haW4gPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1tYWluJyk7CiAgICB2YXIgbGFiZWwgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1sYWJlbCcsICdQbGF5aW5nXHUyMDI2Jyk7CiAgICB2YXIgcHJvZyA9IGVsKCdkaXYnLCAnY2xwLXByb2dyZXNzJyk7CiAgICB2YXIgZmlsbCA9IGVsKCdkaXYnLCAnY2xwLXByb2dyZXNzLWZpbGwnKTsKICAgIHByb2cuYXBwZW5kQ2hpbGQoZmlsbCk7CgogICAgaWYgKHNlYy5tZWRpYVR5cGUgPT09ICd2aWRlbycpewogICAgICB6b25lLmFwcGVuZENoaWxkKGljb24pOwogICAgICBjYXJkLmFwcGVuZENoaWxkKHpvbmUpOwogICAgICBtYWluLmFwcGVuZENoaWxkKGxhYmVsKTsKICAgICAgbWFpbi5hcHBlbmRDaGlsZChwcm9nKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZChtYWluKTsKICAgIH0gZWxzZSB7CiAgICAgIG1haW4uYXBwZW5kQ2hpbGQobGFiZWwpOwogICAgICBtYWluLmFwcGVuZENoaWxkKHByb2cpOwogICAgICB6b25lLmFwcGVuZENoaWxkKGljb24pOwogICAgICB6b25lLmFwcGVuZENoaWxkKG1haW4pOwogICAgICBjYXJkLmFwcGVuZENoaWxkKHpvbmUpOwogICAgfQogICAgcGFuZWwuYXBwZW5kQ2hpbGQoY2FyZCk7CgogICAgdmFyIG1ldGEgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1tZXRhJyk7CiAgICB2YXIgdGltZVNwYW4gPSBlbCgnc3BhbicsICcnLCAnMDowMCAvICcgKyBmbXQoc2VjLmR1cmF0aW9uKSk7CiAgICBtZXRhLmFwcGVuZENoaWxkKHRpbWVTcGFuKTsKICAgIHZhciB2b2wgPSBlbCgnc3BhbicsICcnKTsKICAgIHZvbC5pbm5lckhUTUwgPSAnPHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAyNiAyNiIgZmlsbD0ibm9uZSIgYXJpYS1oaWRkZW49InRydWUiPicgKwogICAgICAnPHJlY3QgeD0iMyIgeT0iOSIgd2lkdGg9IjYiIGhlaWdodD0iOCIgcng9IjEiIGZpbGw9ImN1cnJlbnRDb2xvciIvPicgKwogICAgICAnPHBhdGggZD0iTTkgOSBMMTUgNCBMMTUgMjIgTDkgMTcgWiIgZmlsbD0iY3VycmVudENvbG9yIi8+JyArCiAgICAgICc8cGF0aCBkPSJNMTggOSBhNS41IDUuNSAwIDAgMSAwIDgiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPic7CiAgICBtZXRhLmFwcGVuZENoaWxkKHZvbCk7CiAgICBwYW5lbC5hcHBlbmRDaGlsZChtZXRhKTsKICAgIHBhbmVsLmFwcGVuZENoaWxkKGVsKCdkaXYnLCAnY2xwLW9uY2Utbm90ZScsIChzZWMubWVkaWFUeXBlID09PSAndmlkZW8nID8gJ1RoaXMgdmlkZW8gcGxheXMnIDogJ1RoaXMgcmVjb3JkaW5nIHBsYXlzJykgKyAnIG9ubHkgb25jZSBcdTIwMTQganVzdCBsaWtlIHRoZSByZWFsIHRlc3QuJykpOwogICAgaWYgKCFDRUxQSVBfWVQudmlkZW9JZCl7IHBhbmVsLmFwcGVuZENoaWxkKGVsKCdkaXYnLCAnY2xwLW9uY2Utbm90ZScsICdPZmZpY2lhbCBhdWRpby92aWRlbyBpcyBiZWluZyBwcmVwYXJlZCBcdTIwMTQgdGhlIGJhciBhYm92ZSBpcyBhIHNpbXVsYXRpb24uIFByZXNzIE5FWFQgdG8gY29udGludWUuJykpOyB9CiAgICByb290LmFwcGVuZENoaWxkKHBhbmVsKTsKCiAgICAvKiBzaW11bGF0ZWQgcGxheWJhY2sgKi8KICAgIHZhciBlbGFwc2VkID0gMDsKICAgIG1lZGlhVGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpewogICAgICBlbGFwc2VkKys7CiAgICAgIGlmIChlbGFwc2VkID49IHNlYy5kdXJhdGlvbil7CiAgICAgICAgZWxhcHNlZCA9IHNlYy5kdXJhdGlvbjsKICAgICAgICBjbGVhckludGVydmFsKG1lZGlhVGltZXIpOyBtZWRpYVRpbWVyID0gbnVsbDsKICAgICAgICBsYWJlbC50ZXh0Q29udGVudCA9ICdGaW5pc2hlZCc7CiAgICAgIH0KICAgICAgZmlsbC5zdHlsZS53aWR0aCA9IE1hdGgucm91bmQoZWxhcHNlZCAvIHNlYy5kdXJhdGlvbiAqIDEwMCkgKyAnJSc7CiAgICAgIHRpbWVTcGFuLnRleHRDb250ZW50ID0gZm10KGVsYXBzZWQpICsgJyAvICcgKyBmbXQoc2VjLmR1cmF0aW9uKTsKICAgIH0sIDEwMDApOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyUXVlc3Rpb25zKHNjciwgcm9vdCl7CiAgICB2YXIgcGFydCA9IFRFU1RfREFUQS5wYXJ0c1tzY3IucGldOwogICAgdmFyIHNlYyA9IHBhcnQuc2VjdGlvbnNbc2NyLnNpXTsKICAgIHJvb3Quc2V0QXR0cmlidXRlKCdkYXRhLXNjcmVlbi1sYWJlbCcsIHBhcnQubmFtZSArICcgXHUyMDE0IFF1ZXN0aW9ucycpOwogICAgcm9vdC5hcHBlbmRDaGlsZChtYWtlSW5zdHIocGFydC5xSW5zdHJ1Y3Rpb24pKTsKCiAgICB2YXIgcGFuZWwgPSBlbCgnZGl2JywgJ2NscC1xLXBhbmVsJyk7CiAgICBzZWMucXVlc3Rpb25zLmZvckVhY2goZnVuY3Rpb24ocSwgcWkpewogICAgICB2YXIga2V5ID0gcUtleShzY3IucGksIHNjci5zaSwgcWkpOwogICAgICB2YXIgcm93ID0gZWwoJ2RpdicsICdjbHAtcScpOwogICAgICB2YXIgbnVtID0gZWwoJ3NwYW4nLCAnY2xwLXFudW0nLCBxLm4gKyAnLiAnKTsKICAgICAgcm93LmFwcGVuZENoaWxkKG51bSk7CiAgICAgIHJvdy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShxLnN0ZW0gKyAnICcpKTsKCiAgICAgIHZhciBkZCA9IGVsKCdidXR0b24nLCAnY2xwLWRkJyk7CiAgICAgIGRkLnR5cGUgPSAnYnV0dG9uJzsKICAgICAgZGQuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLWRkLXRleHQnKSk7CiAgICAgIGRkLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1kZC1jYXJldCcsICdcdTI1QkMnKSk7CiAgICAgIHZhciBhbnMgPSBzdGF0ZS5hbnN3ZXJzW2tleV07CiAgICAgIHNldFRyaWdnZXJMYWJlbChkZCwgYW5zICE9PSB1bmRlZmluZWQgPyBxLm9wdGlvbnNbYW5zXSA6ICcnLCBhbnMgPT09IHVuZGVmaW5lZCk7CiAgICAgIHJvdy5hcHBlbmRDaGlsZChkZCk7CgogICAgICBpZiAocS50b2RvKXsKICAgICAgICByb3cuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLXRvZG8tdGFnJywgJ1RPRE8nKSk7CiAgICAgIH0KCiAgICAgIGlmIChzdGF0ZS5jaGVja2VkKXsKICAgICAgICBkZC5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgdmFyIGNvcnJlY3QgPSBhbnMgPT09IHEua2V5IC0gMTsKICAgICAgICBkZC5jbGFzc0xpc3QuYWRkKGNvcnJlY3QgPyAnY2xwLW1hcmstcmlnaHQnIDogJ2NscC1tYXJrLXdyb25nJyk7CiAgICAgICAgaWYgKCFjb3JyZWN0KXsKICAgICAgICAgIHZhciByZXYgPSBlbCgnc3BhbicsICdjbHAtcmV2ZWFsJyk7CiAgICAgICAgICByZXYuaW5uZXJIVE1MID0gJ0NvcnJlY3QgYW5zd2VyOiA8Yj48L2I+JzsKICAgICAgICAgIHJldi5xdWVyeVNlbGVjdG9yKCdiJykudGV4dENvbnRlbnQgPSBxLm9wdGlvbnNbcS5rZXkgLSAxXTsKICAgICAgICAgIHJvdy5hcHBlbmRDaGlsZChyZXYpOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBkZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGV2KXsKICAgICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgb3BlblBvcHVwKGRkLCBzY3IucGksIHNjci5zaSwgcWkpOwogICAgICAgIH0pOwogICAgICB9CiAgICAgIHBhbmVsLmFwcGVuZENoaWxkKHJvdyk7CiAgICB9KTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQocGFuZWwpOwoKICAgIC8qIGNvdW50ZG93biAqLwogICAgcVJlbWFpbmluZyA9IHNlYy50aW1lTWludXRlcyAqIDYwOwogICAgc3RhcnRRVGltZXIoKTsKICB9CiAgZnVuY3Rpb24gc3RhcnRRVGltZXIoKXsKICAgIGlmIChxVGltZXIpIGNsZWFySW50ZXJ2YWwocVRpbWVyKTsKICAgIGlmICghc3RhdGUudGltZXJPbikgcmV0dXJuOwogICAgcVRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsKICAgICAgaWYgKHFSZW1haW5pbmcgPiAwKSBxUmVtYWluaW5nLS07CiAgICAgIHZhciB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFFUaW1lcicpOwogICAgICBpZiAodCkgdC5pbm5lckhUTUwgPSAnVGltZSByZW1haW5pbmc6IDxiPicgKyBmbXQocVJlbWFpbmluZykgKyAnPC9iPic7CiAgICAgIGlmIChxUmVtYWluaW5nIDw9IDApeyBjbGVhckludGVydmFsKHFUaW1lcik7IHFUaW1lciA9IG51bGw7IH0KICAgIH0sIDEwMDApOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyRmluaXNoKHJvb3QpewogICAgcm9vdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2NyZWVuLWxhYmVsJywgJ0VuZCBvZiBUZXN0Jyk7CiAgICB2YXIgYm94ID0gZWwoJ2RpdicsICdjbHAtZmluaXNoJyk7CiAgICBib3guYXBwZW5kQ2hpbGQoZWwoJ2gzJywgJycsICdFbmQgb2YgdGhlIExpc3RlbmluZyBUZXN0JykpOwogICAgYm94LmFwcGVuZENoaWxkKGVsKCdwJywgJycsICdZb3UgaGF2ZSBhbnN3ZXJlZCAnICsgYW5zd2VyZWRDb3VudCgpICsgJyBvZiAnICsgVE9UQUxfUSArICcgcXVlc3Rpb25zLiBDaGVjayB5b3VyIGFuc3dlcnMgdG8gc2VlIHlvdXIgc2NvcmUsIHBhcnQtYnktcGFydCByZXN1bHRzLCBhbmQgdHJhbnNjcmlwdHMuJykpOwogICAgdmFyIGJ0biA9IGVsKCdidXR0b24nLCAnY2xwLWZpbmlzaC1jaGVjaycsICdDaGVjayBhbnN3ZXJzJyk7CiAgICBidG4udHlwZSA9ICdidXR0b24nOwogICAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2hlY2tBbnN3ZXJzKTsKICAgIGJveC5hcHBlbmRDaGlsZChidG4pOwogICAgcm9vdC5hcHBlbmRDaGlsZChib3gpOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyKCl7CiAgICBjbGVhclRpbWVycygpOwogICAgY2xvc2VQb3B1cCgpOwogICAgY2F0LmlubmVySFRNTCA9ICcnOwogICAgdmFyIHNjciA9IHNjcmVlbnNbc3RhdGUuaWR4XTsKCiAgICBpZiAoIXN0YXRlLnN0YXJ0ZWQpewogICAgICB2YXIgYmFyMCA9IGVsKCdkaXYnLCAnY2xwLWJhcicpOwogICAgICBiYXIwLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1iYXItdGl0bGUnLCBURVNUX0RBVEEudGVzdExhYmVsICsgJyBcdTIwMTMgTGlzdGVuaW5nIFRlc3QnKSk7CiAgICAgIGNhdC5hcHBlbmRDaGlsZChiYXIwKTsKICAgICAgdmFyIGlkbGUgPSBlbCgnZGl2JywgJ2NscC1pZGxlJyk7CiAgICAgIHZhciBwID0gZWwoJ3AnLCAnJywgJ1ByZXNzIFx1MjAxQ1N0YXJ0IHRlc3RcdTIwMUQgYWJvdmUgdG8gYmVnaW4uIFRoZSB0ZXN0IGhhcyA2IHBhcnRzIGFuZCAzOCBxdWVzdGlvbnMsIGFuZCBldmVyeSByZWNvcmRpbmcgYW5kIHZpZGVvIHBsYXlzIG9ubHkgb25jZSBcdTIwMTQganVzdCBsaWtlIHRoZSByZWFsIGNvbXB1dGVyLWRlbGl2ZXJlZCB0ZXN0LicpOwogICAgICBpZGxlLmFwcGVuZENoaWxkKHApOwogICAgICBjYXQuYXBwZW5kQ2hpbGQoaWRsZSk7CiAgICAgIHJlbmRlckRvdHMoKTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhciBpc1EgPSBzY3IudHlwZSA9PT0gJ3EnOwogICAgaWYgKGlzUSl7CiAgICAgIHZhciBzZWMgPSBURVNUX0RBVEEucGFydHNbc2NyLnBpXS5zZWN0aW9uc1tzY3Iuc2ldOwogICAgICBxUmVtYWluaW5nID0gc2VjLnRpbWVNaW51dGVzICogNjA7CiAgICB9CiAgICB2YXIgdGl0bGUgPSBzY3IudHlwZSA9PT0gJ2ZpbmlzaCcKICAgICAgPyBURVNUX0RBVEEudGVzdExhYmVsICsgJyBcdTIwMTMgTGlzdGVuaW5nIFRlc3QnCiAgICAgIDogVEVTVF9EQVRBLnBhcnRzW3Njci5waV0uaGVhZGVyVGl0bGU7CiAgICBjYXQuYXBwZW5kQ2hpbGQobWFrZUJhcih0aXRsZSwgaXNRKSk7CgogICAgdmFyIHNjcmVlbiA9IGVsKCdkaXYnLCAnY2xwLXNjcmVlbicpOwogICAgaWYgKHNjci50eXBlID09PSAnaW50cm8nKSByZW5kZXJJbnRybyhzY3IsIHNjcmVlbik7CiAgICBlbHNlIGlmIChzY3IudHlwZSA9PT0gJ21lZGlhJykgcmVuZGVyTWVkaWEoc2NyLCBzY3JlZW4pOwogICAgZWxzZSBpZiAoc2NyLnR5cGUgPT09ICdxJykgcmVuZGVyUXVlc3Rpb25zKHNjciwgc2NyZWVuKTsKICAgIGVsc2UgcmVuZGVyRmluaXNoKHNjcmVlbik7CiAgICBjYXQuYXBwZW5kQ2hpbGQoc2NyZWVuKTsKICAgIHJlbmRlckRvdHMoKTsKICB9CgogIC8qIC0tLS0tLS0tLS0gcmVzdWx0cyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gY2hlY2tBbnN3ZXJzKCl7CiAgICBpZiAoc3RhdGUuY2hlY2tlZCkgcmV0dXJuOwogICAgc3RhdGUuY2hlY2tlZCA9IHRydWU7CiAgICB2YXIgc2NvcmUgPSBjb21wdXRlU2NvcmUoKTsKICAgIHVwZGF0ZVNjb3JlQ2hpcCgpOwogICAgcmVuZGVyKCk7CiAgICByZW5kZXJSZXN1bHRzKHNjb3JlKTsKICAgIHJlc3VsdHNFbC5oaWRkZW4gPSBmYWxzZTsKICAgIHNjcm9sbFRvRWwocmVzdWx0c0VsKTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlclJlc3VsdHMoc2NvcmUpewogICAgcmVzdWx0c0VsLmlubmVySFRNTCA9ICcnOwogICAgcmVzdWx0c0VsLmFwcGVuZENoaWxkKGVsKCdoMicsICcnLCAnWW91ciByZXN1bHRzJykpOwogICAgdmFyIGdyaWQgPSBlbCgnZGl2JywgJ2NscC1yZXMtZ3JpZCcpOwoKICAgIC8qIHJpbmcgY2FyZCAqLwogICAgdmFyIHJpbmdDYXJkID0gZWwoJ2RpdicsICdjbHAtY2FyZCBjbHAtcmluZy1jYXJkIGNscC1yZXYnKTsKICAgIHZhciB3cmFwID0gZWwoJ2RpdicsICdjbHAtcmluZy13cmFwJyk7CiAgICB2YXIgUiA9IDU2LCBDID0gMiAqIE1hdGguUEkgKiBSOwogICAgd3JhcC5pbm5lckhUTUwgPQogICAgICAnPHN2ZyB3aWR0aD0iMTMyIiBoZWlnaHQ9IjEzMiIgdmlld0JveD0iMCAwIDEzMiAxMzIiPicgKwogICAgICAnPGNpcmNsZSBjeD0iNjYiIGN5PSI2NiIgcj0iJyArIFIgKyAnIiBzdHJva2U9IiNFMkU4RjAiIHN0cm9rZS13aWR0aD0iMTEiIGZpbGw9Im5vbmUiLz4nICsKICAgICAgJzxjaXJjbGUgaWQ9ImNscFJpbmciIGN4PSI2NiIgY3k9IjY2IiByPSInICsgUiArICciIHN0cm9rZT0iIzEwQjk4MSIgc3Ryb2tlLXdpZHRoPSIxMSIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAnICsKICAgICAgJ3N0cm9rZS1kYXNoYXJyYXk9IicgKyBDICsgJyIgc3Ryb2tlLWRhc2hvZmZzZXQ9IicgKyBDICsgJyIvPjwvc3ZnPic7CiAgICB2YXIgbnVtID0gZWwoJ2RpdicsICdjbHAtcmluZy1udW0nKTsKICAgIHZhciBiaWcgPSBlbCgnYicsICcnLCAnMCcpOwogICAgbnVtLmFwcGVuZENoaWxkKGJpZyk7CiAgICBudW0uYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnJywgJ291dCBvZiAnICsgVE9UQUxfUSkpOwogICAgd3JhcC5hcHBlbmRDaGlsZChudW0pOwogICAgcmluZ0NhcmQuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICByaW5nQ2FyZC5hcHBlbmRDaGlsZChlbCgnaDMnLCAnJywgJ1RvdGFsIHNjb3JlJykpOwogICAgZ3JpZC5hcHBlbmRDaGlsZChyaW5nQ2FyZCk7CgogICAgLyogYnJlYWtkb3duIGNhcmQgKi8KICAgIHZhciBiZCA9IGVsKCdkaXYnLCAnY2xwLWNhcmQgY2xwLXJldicpOwogICAgYmQuYXBwZW5kQ2hpbGQoZWwoJ2gzJywgJycsICdQYXJ0LWJ5LXBhcnQgYnJlYWtkb3duJykpOwogICAgdmFyIGNoaXBzID0gZWwoJ2RpdicsICdjbHAtcGFydC1jaGlwcycpOwogICAgc2NvcmUucGVyUGFydC5mb3JFYWNoKGZ1bmN0aW9uKHBwLCBwaSl7CiAgICAgIHZhciBjID0gZWwoJ3NwYW4nLCAnY2xwLXBhcnQtY2hpcCcpOwogICAgICBjLmlubmVySFRNTCA9ICdQJyArIChwaSArIDEpICsgJyA8Yj4nICsgcHAuY29ycmVjdCArICcvJyArIHBwLnRvdGFsICsgJzwvYj4nOwogICAgICBjaGlwcy5hcHBlbmRDaGlsZChjKTsKICAgIH0pOwogICAgYmQuYXBwZW5kQ2hpbGQoY2hpcHMpOwoKICAgIHZhciBlc3QgPSBjbGJFc3RpbWF0ZShzY29yZS50b3RhbCk7CiAgICB2YXIgY2xiID0gZWwoJ2RpdicsICdjbHAtY2xiLXJvdycpOwogICAgY2xiLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1jbGItYmFkZ2UnLCBlc3QubGV2ZWwpKTsKICAgIGNsYi5hcHBlbmRDaGlsZChlbCgncCcsICcnLCBlc3Qubm90ZSArICcgXHUyMDE0IGVzdGltYXRlZCBmcm9tIGEgcmF3IHNjb3JlIG9mICcgKyBzY29yZS50b3RhbCArICcvJyArIFRPVEFMX1EgKyAnLiBUT0RPOiBwbGFjZWhvbGRlciBtYXBwaW5nIFx1MjAxNCB2ZXJpZnkgYWdhaW5zdCB0aGUgb2ZmaWNpYWwgQ0VMUElQIHNjb3JlIGNoYXJ0LicpKTsKICAgIGJkLmFwcGVuZENoaWxkKGNsYik7CiAgICBncmlkLmFwcGVuZENoaWxkKGJkKTsKICAgIHJlc3VsdHNFbC5hcHBlbmRDaGlsZChncmlkKTsKCiAgICAvKiB0cmFuc2NyaXB0cyAqLwogICAgdmFyIHRyV3JhcCA9IGVsKCdkaXYnLCAnY2xwLXRyYW5zY3JpcHRzJyk7CiAgICBURVNUX0RBVEEucGFydHMuZm9yRWFjaChmdW5jdGlvbihwYXJ0LCBwaSl7CiAgICAgIHZhciBjYXJkID0gZWwoJ2RpdicsICdjbHAtdHItY2FyZCBjbHAtcmV2Jyk7CiAgICAgIHZhciBoZWFkID0gZWwoJ2J1dHRvbicsICdjbHAtdHItaGVhZCcpOwogICAgICBoZWFkLnR5cGUgPSAnYnV0dG9uJzsKICAgICAgaGVhZC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICcnLCAnVHJhbnNjcmlwdCBcdTIwMTQgJyArIHBhcnQubmFtZSkpOwogICAgICBoZWFkLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC10ci1jYXJldCcsICdcdTI1QkMnKSk7CiAgICAgIGhlYWQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpeyBjYXJkLmNsYXNzTGlzdC50b2dnbGUoJ2NscC1vcGVuJyk7IH0pOwogICAgICB2YXIgYm9keSA9IGVsKCdkaXYnLCAnY2xwLXRyLWJvZHknKTsKICAgICAgYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShwYXJ0LnRyYW5zY3JpcHQpKTsKICAgICAgaWYgKHBhcnQudHJhbnNjcmlwdFRvZG8pewogICAgICAgIGJvZHkuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLXRyLXRvZG8nLCAnVE9ETzogcmVwbGFjZSB0aGlzIHN1bW1hcnkgd2l0aCB0aGUgZnVsbCBvZmZpY2lhbCB0cmFuc2NyaXB0LicpKTsKICAgICAgfQogICAgICBjYXJkLmFwcGVuZENoaWxkKGhlYWQpOwogICAgICBjYXJkLmFwcGVuZENoaWxkKGJvZHkpOwogICAgICB0cldyYXAuYXBwZW5kQ2hpbGQoY2FyZCk7CiAgICB9KTsKICAgIHJlc3VsdHNFbC5hcHBlbmRDaGlsZCh0cldyYXApOwoKICAgIC8qIHJldmVhbCArIGNvdW50LXVwICovCiAgICB2YXIgcmV2RWxzID0gcmVzdWx0c0VsLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jbHAtcmV2Jyk7CiAgICBpZiAoJ0ludGVyc2VjdGlvbk9ic2VydmVyJyBpbiB3aW5kb3cgJiYgIXJlZHVjZWRNb3Rpb24pewogICAgICB2YXIgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oZW50cmllcyl7CiAgICAgICAgZW50cmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVuKXsKICAgICAgICAgIGlmIChlbi5pc0ludGVyc2VjdGluZyl7IGVuLnRhcmdldC5jbGFzc0xpc3QuYWRkKCdjbHAtaW4nKTsgaW8udW5vYnNlcnZlKGVuLnRhcmdldCk7IH0KICAgICAgICB9KTsKICAgICAgfSwgeyB0aHJlc2hvbGQ6IDAuMTUgfSk7CiAgICAgIHJldkVscy5mb3JFYWNoKGZ1bmN0aW9uKGUpeyBpby5vYnNlcnZlKGUpOyB9KTsKICAgIH0gZWxzZSB7CiAgICAgIHJldkVscy5mb3JFYWNoKGZ1bmN0aW9uKGUpeyBlLmNsYXNzTGlzdC5hZGQoJ2NscC1pbicpOyB9KTsKICAgIH0KCiAgICB2YXIgcmluZyA9IHJlc3VsdHNFbC5xdWVyeVNlbGVjdG9yKCcjY2xwUmluZycpOwogICAgdmFyIHRhcmdldCA9IHNjb3JlLnRvdGFsOwogICAgaWYgKHJlZHVjZWRNb3Rpb24pewogICAgICBiaWcudGV4dENvbnRlbnQgPSB0YXJnZXQ7CiAgICAgIHJpbmcuc3R5bGUuc3Ryb2tlRGFzaG9mZnNldCA9IEMgKiAoMSAtIHRhcmdldCAvIFRPVEFMX1EpOwogICAgfSBlbHNlIHsKICAgICAgdmFyIHQwID0gbnVsbCwgRFVSID0gMTEwMDsKICAgICAgZnVuY3Rpb24gc3RlcCh0cyl7CiAgICAgICAgaWYgKCF0MCkgdDAgPSB0czsKICAgICAgICB2YXIgcCA9IE1hdGgubWluKDEsICh0cyAtIHQwKSAvIERVUik7CiAgICAgICAgdmFyIGVhc2UgPSAxIC0gTWF0aC5wb3coMSAtIHAsIDMpOwogICAgICAgIGJpZy50ZXh0Q29udGVudCA9IE1hdGgucm91bmQoZWFzZSAqIHRhcmdldCk7CiAgICAgICAgcmluZy5zdHlsZS5zdHJva2VEYXNob2Zmc2V0ID0gQyAqICgxIC0gKGVhc2UgKiB0YXJnZXQpIC8gVE9UQUxfUSk7CiAgICAgICAgaWYgKHAgPCAxKSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RlcCk7CiAgICAgIH0KICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApOwogICAgfQogIH0KCiAgLyogLS0tLS0tLS0tLSB0b29sYmFyIC8gY29udHJvbHMgLS0tLS0tLS0tLSAqLwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBTdGFydCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIHN0YXRlLnN0YXJ0ZWQgPSB0cnVlOwogICAgc3RhdGUuaWR4ID0gMDsKICAgIHRvb2xiYXIuaGlkZGVuID0gZmFsc2U7CiAgICByZW5kZXIoKTsKICAgIHVwZGF0ZVNjb3JlQ2hpcCgpOwogICAgc2Nyb2xsVG9FbChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwU2ltJykpOwogIH0pOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBDaGVjaycpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIGlmICghc3RhdGUuc3RhcnRlZCkgcmV0dXJuOwogICAgY2hlY2tBbnN3ZXJzKCk7CiAgfSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFJlc2V0JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgc3RhdGUuc3RhcnRlZCA9IGZhbHNlOwogICAgc3RhdGUuaWR4ID0gMDsKICAgIHN0YXRlLmFuc3dlcnMgPSB7fTsKICAgIHN0YXRlLmNoZWNrZWQgPSBmYWxzZTsKICAgIHJlc3VsdHNFbC5oaWRkZW4gPSB0cnVlOwogICAgcmVzdWx0c0VsLmlubmVySFRNTCA9ICcnOwogICAgdG9vbGJhci5oaWRkZW4gPSB0cnVlOwogICAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgICByZW5kZXIoKTsKICAgIHNjcm9sbFRvRWwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscEFwcCcpLCAyMCk7CiAgfSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFRpbWVyVG9nZ2xlJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgc3RhdGUudGltZXJPbiA9ICFzdGF0ZS50aW1lck9uOwogICAgdGhpcy50ZXh0Q29udGVudCA9ICdUaW1lcjogJyArIChzdGF0ZS50aW1lck9uID8gJ29uJyA6ICdvZmYnKTsKICAgIHZhciB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFFUaW1lcicpOwogICAgaWYgKCFzdGF0ZS50aW1lck9uKXsKICAgICAgaWYgKHFUaW1lcil7IGNsZWFySW50ZXJ2YWwocVRpbWVyKTsgcVRpbWVyID0gbnVsbDsgfQogICAgICBpZiAodCkgdC5yZW1vdmUoKTsKICAgIH0gZWxzZSBpZiAoc2NyZWVuc1tzdGF0ZS5pZHhdICYmIHNjcmVlbnNbc3RhdGUuaWR4XS50eXBlID09PSAncScpewogICAgICByZW5kZXIoKTsKICAgIH0KICB9KTsKCiAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgcmVuZGVyKCk7Cn0pKCk7Cg=='));<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Listening Set 3 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-6054","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6054","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=6054"}],"version-history":[{"count":1,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6054\/revisions"}],"predecessor-version":[{"id":6607,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6054\/revisions\/6607"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6054"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}