/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */

/**
 * 1. Set default font family to sans-serif.
 * 2. Prevent iOS and IE text size adjust after device orientation change,
 *    without disabling user zoom.
 */

html {
  font-family: sans-serif; /* 1 */
  -ms-text-size-adjust: 100%; /* 2 */
  -webkit-text-size-adjust: 100%; /* 2 */
}

/**
 * Remove default margin.
 */

body {
  margin: 0;
}

/* HTML5 display definitions
   ========================================================================== */

/**
 * Correct `block` display not defined for any HTML5 element in IE 8/9.
 * Correct `block` display not defined for `details` or `summary` in IE 10/11
 * and Firefox.
 * Correct `block` display not defined for `main` in IE 11.
 */

article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
  display: block;
}

/**
 * 1. Correct `inline-block` display not defined in IE 8/9.
 * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
 */

audio,
canvas,
progress,
video {
  display: inline-block; /* 1 */
  vertical-align: baseline; /* 2 */
}

/**
 * Prevent modern browsers from displaying `audio` without controls.
 * Remove excess height in iOS 5 devices.
 */

audio:not([controls]) {
  display: none;
  height: 0;
}

/**
 * Address `[hidden]` styling not present in IE 8/9/10.
 * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
 */

[hidden],
template {
  display: none;
}

/* Links
   ========================================================================== */

/**
 * Remove the gray background color from active links in IE 10.
 */

a {
  background-color: transparent;
}

/**
 * Improve readability of focused elements when they are also in an
 * active/hover state.
 */

a:active,
a:hover {
  outline: 0;
}

/* Text-level semantics
   ========================================================================== */

/**
 * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
 */

abbr[title] {
  border-bottom: 1px dotted;
}

/**
 * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
 */

b,
strong {
  font-weight: bold;
}

/**
 * Address styling not present in Safari and Chrome.
 */

dfn {
  font-style: italic;
}

/**
 * Address variable `h1` font-size and margin within `section` and `article`
 * contexts in Firefox 4+, Safari, and Chrome.
 */

h1 {
  font-size: 2em;
  margin: 0.67em 0;
}

/**
 * Address styling not present in IE 8/9.
 */

mark {
  background: #ff0;
  color: #000;
}

/**
 * Address inconsistent and variable font size in all browsers.
 */

small {
  font-size: 80%;
}

/**
 * Prevent `sub` and `sup` affecting `line-height` in all browsers.
 */

sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sup {
  top: -0.5em;
}

sub {
  bottom: -0.25em;
}

/* Embedded content
   ========================================================================== */

/**
 * Remove border when inside `a` element in IE 8/9/10.
 */

img {
  border: 0;
}

/**
 * Correct overflow not hidden in IE 9/10/11.
 */

svg:not(:root) {
  overflow: hidden;
}

/* Grouping content
   ========================================================================== */

/**
 * Address margin not present in IE 8/9 and Safari.
 */

figure {
  margin: 1em 40px;
}

/**
 * Address differences between Firefox and other browsers.
 */

hr {
  box-sizing: content-box;
  height: 0;
}

/**
 * Contain overflow in all browsers.
 */

pre {
  overflow: auto;
}

/**
 * Address odd `em`-unit font size rendering in all browsers.
 */

code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  font-size: 1em;
}

/* Forms
   ========================================================================== */

/**
 * Known limitation: by default, Chrome and Safari on OS X allow very limited
 * styling of `select`, unless a `border` property is set.
 */

/**
 * 1. Correct color not being inherited.
 *    Known issue: affects color of disabled elements.
 * 2. Correct font properties not being inherited.
 * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
 */

button,
input,
optgroup,
select,
textarea {
  color: inherit; /* 1 */
  font: inherit; /* 2 */
  margin: 0; /* 3 */
}

/**
 * Address `overflow` set to `hidden` in IE 8/9/10/11.
 */

button {
  overflow: visible;
}

/**
 * Address inconsistent `text-transform` inheritance for `button` and `select`.
 * All other form control elements do not inherit `text-transform` values.
 * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
 * Correct `select` style inheritance in Firefox.
 */

button,
select {
  text-transform: none;
}

/**
 * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
 *    and `video` controls.
 * 2. Correct inability to style clickable `input` types in iOS.
 * 3. Improve usability and consistency of cursor style between image-type
 *    `input` and others.
 */

button,
html input[type="button"], /* 1 */
input[type="reset"],
input[type="submit"] {
  -webkit-appearance: button; /* 2 */
  cursor: pointer; /* 3 */
}

/**
 * Re-set default cursor for disabled elements.
 */

button[disabled],
html input[disabled] {
  cursor: default;
}

/**
 * Remove inner padding and border in Firefox 4+.
 */

button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0;
}

/**
 * Address Firefox 4+ setting `line-height` on `input` using `!important` in
 * the UA stylesheet.
 */

input {
  line-height: normal;
}

/**
 * It's recommended that you don't attempt to style these elements.
 * Firefox's implementation doesn't respect box-sizing, padding, or width.
 *
 * 1. Address box sizing set to `content-box` in IE 8/9/10.
 * 2. Remove excess padding in IE 8/9/10.
 */

input[type="checkbox"],
input[type="radio"] {
  box-sizing: border-box; /* 1 */
  padding: 0; /* 2 */
}

/**
 * Fix the cursor style for Chrome's increment/decrement buttons. For certain
 * `font-size` values of the `input`, it causes the cursor style of the
 * decrement button to change from `default` to `text`.
 */

input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  height: auto;
}

/**
 * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
 * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
 */

input[type="search"] {
  -webkit-appearance: textfield; /* 1 */
  box-sizing: content-box; /* 2 */
}

/**
 * Remove inner padding and search cancel button in Safari and Chrome on OS X.
 * Safari (but not Chrome) clips the cancel button when the search input has
 * padding (and `textfield` appearance).
 */

input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}

/**
 * Define consistent border, margin, and padding.
 */

fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em;
}

/**
 * 1. Correct `color` not being inherited in IE 8/9/10/11.
 * 2. Remove padding so people aren't caught out if they zero out fieldsets.
 */

legend {
  border: 0; /* 1 */
  padding: 0; /* 2 */
}

/**
 * Remove default vertical scrollbar in IE 8/9/10/11.
 */

textarea {
  overflow: auto;
}

/**
 * Don't inherit the `font-weight` (applied by a rule above).
 * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
 */

optgroup {
  font-weight: bold;
}

/* Tables
   ========================================================================== */

/**
 * Remove most spacing between table cells.
 */

table {
  border-collapse: collapse;
  border-spacing: 0;
}

td,
th {
  padding: 0;
}

/*
 * Animation configurations ( duration and fill mode )
 */

/* topdoc
  name: App Header -- Base
  description: Styling for application header base
  modifiers:
  markup:
    <div class="theme-appheader">

      <!-- LOGO -->
      <div class="theme-appheader__logo">
        <span class="theme-appheader__logo-mark"></span>
        <span class="theme-appheader__logo-text">enReach</span>
      </div>

      <!-- MENU -->
      <div class="theme-appheader__menu">
        <span class="is-active">Booking</span>
        <span>Sessions</span>
        <span>Schedules</span>
        <span>Availability</span>
        <span>Data</span>
      </div>

      <!-- MOBILE MENU BUTTON -->
      <div class="theme-appheader__menu__launcher"></div>

      <!-- PROJECT DROPDOWN -->
      <div class="theme-appheader__dropdown theme-appheader__project">
        <span>Miyarisan project</span>
        <div class="dropdown-menu">
          <div>Project A</div>
          <div>Project B</div>
        </div>
      </div>

      <!-- ACTIONS -->
      <div class="theme-appheader__actions">

        <!-- Bell -->
        <div class="icon has-badge">
          <span class="badge">3</span>
          <svg viewBox="0 0 24 24" class="icon-svg">
            <path d="M6 8a6 6 0 1 1 12 0v4c0 1.5 1 3 2 4H4c1-1 2-2.5 2-4V8"
                  fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/>
            <path d="M10 19a2 2 0 0 0 4 0"
                  fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round"/>
          </svg>
        </div>

        <!-- Globe -->
        <div class="theme-appheader__dropdown icon">
          <svg viewBox="0 0 24 24" class="icon-svg">
            <circle cx="12" cy="12" r="9"
                    fill="none" stroke="white" stroke-width="1.8"/>
            <path d="M3 12h18M12 3c3 3 3 15 0 18M12 3c-3 3-3 15 0 18"
                  fill="none" stroke="white" stroke-width="1.4" stroke-linecap="round"/>
          </svg>

          <div class="dropdown-menu">
            <div>EN</div>
            <div>JP</div>
          </div>
        </div>

        <!-- User -->
        <div class="theme-appheader__dropdown icon">
          <svg viewBox="0 0 24 24" class="icon-svg">
            <circle cx="12" cy="8" r="4"
                    fill="none" stroke="white" stroke-width="1.8"/>
            <path d="M4 20c2.5-4 13.5-4 16 0"
                  fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round"/>
          </svg>

          <div class="dropdown-menu">
            <div>Account</div>
            <div>Logout</div>
          </div>
        </div>

      </div>
    </div>

    <!-- MOBILE MENU PANEL -->
    <div class="theme-mobile-menu">
      <span>Booking</span>
      <span>Sessions</span>
      <span>Schedules</span>
      <span>Availability</span>
      <span>Data</span>
    </div>
    <script>
      const menuBtn = document.querySelector('.theme-appheader__menu__launcher');
      const mobileMenu = document.querySelector('.theme-mobile-menu');

      menuBtn.addEventListener('click', () => {
        mobileMenu.classList.toggle('open');
      });

      document.querySelectorAll('.theme-appheader__dropdown').forEach(drop => {
        drop.addEventListener('click', (e) => {
          e.stopPropagation();
          document.querySelectorAll('.theme-appheader__dropdown').forEach(d => d.classList.remove('open'));
          drop.classList.toggle('open');
        });
      });

      document.addEventListener('click', () => {
        document.querySelectorAll('.theme-appheader__dropdown').forEach(d => d.classList.remove('open'));
      });
    </script>
  example:
  tags:

*/
/* ================= SAFE AREA ================= */
.theme-appheader {
  padding-top: env(safe-area-inset-top);
}
/* ================= HEADER ================= */
.theme-appheader {
  height: 56px;
  background: #8f8f8f;
  display: flex;
  align-items: center;
  padding: 0 16px;
  color: #f2f2f2;
  font-family: system-ui, sans-serif;
  position: relative;
  z-index: 10;
}
/* ================= LOGO ================= */
.theme-appheader__logo {
  display: flex;
  align-items: center;
  gap: 8px;
}
.theme-appheader__logo-mark {
  height: 20px;
  width: 40px;
  background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20viewBox%3D%220%200%2099%2050%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Cpath%20d%3D%22M97.364%202.73556C88.364%2017.7356%2061.564%2047.7356%2026.364%2047.7356C6.96214%2047.7356%202.27185%2036.9736%202.01016%2028.4736M2.01016%2028.4736C1.60517%2015.3193%2013.3639%20-1.76423%2027.864%202.73556C47.8176%208.9277%2017.6645%2043.4736%202.01016%2028.4736Z%22%0A%20%20%20%20%20%20%20%20stroke%3D%22white%22%20stroke-width%3D%223%22%20stroke-linecap%3D%22round%22%20fill%3D%22none%22%2F%3E%0A%3C%2Fsvg%3E%0A");
}
.theme-appheader__logo-text {
  font-size: 18px;
}
/* ================= MENU ================= */
.theme-appheader__menu {
  display: flex;
  gap: 24px;
  margin-left: 32px;
}
.theme-appheader__menu span {
  opacity: 0.7;
  cursor: pointer;
}
.theme-appheader__menu .is-active {
  opacity: 1;
  font-weight: 600;
}
/* ================= DROPDOWN ================= */
.theme-appheader__dropdown {
  position: relative;
  cursor: pointer;
}
.dropdown-menu {
  position: absolute;
  top: 120%;
  right: 0;
  background: #fff;
  color: #333;
  border-radius: 8px;
  padding: 6px 0;
  min-width: 140px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
  display: none;
}
.dropdown-menu div {
  padding: 8px 12px;
  font-size: 13px;
}
.dropdown-menu div:hover {
  background: #f2f2f2;
}
/* open state */
.theme-appheader__dropdown.open .dropdown-menu {
  display: block;
}
/* ================= PROJECT ================= */
.theme-appheader__project {
  margin-left: auto;
  margin-right: 16px;
  display: flex;
  align-items: center;
  gap: 6px;
  text-align: right;
}
.theme-appheader__project span {
  padding-left: 20px;
}
/* ================= ACTIONS ================= */
.theme-appheader__actions {
  display: flex;
  gap: 16px;
}
/* ================= ICONS ================= */
/* SVG icon sizing */
.icon-svg {
  width: 20px;
  height: 20px;
  display: block;
  opacity: 0.9;
  transition: opacity 0.2s ease, transform 0.15s ease;
}
/* Hover */
.icon:hover .icon-svg {
  opacity: 1;
}
/* Active (tap feedback) */
.icon:active .icon-svg {
  transform: scale(0.95);
}
/* Ensure proper alignment */
.icon {
  display: flex;
  align-items: center;
  justify-content: center;
}
/* Badge stays above SVG */
.has-badge {
  position: relative;
}
/* Notification badge */
.badge {
  position: absolute;
  top: -4px;
  right: -6px;
  background: #ff4d4d;
  color: white;
  font-size: 10px;
  padding: 2px 5px;
  border-radius: 10px;
}
/* ================= MOBILE MENU BUTTON ================= */
.theme-appheader__menu__launcher {
  display: none;
  width: 22px;
  height: 16px;
  margin: 0 16px 0 16px;
  cursor: pointer;
  position: relative;
}
.theme-appheader__menu__launcher::before,
.theme-appheader__menu__launcher::after {
  content: "";
  position: absolute;
  width: 100%;
  height: 2px;
  background: white;
}
.theme-appheader__menu__launcher::before {
  top: 0;
}
.theme-appheader__menu__launcher::after {
  bottom: 0;
}
.theme-appheader__menu__launcher::before {
  box-shadow: 0 7px 0 white;
}
/* ================= MOBILE MENU PANEL ================= */
.theme-mobile-menu {
  position: fixed;
  top: 56px;
  left: 0;
  right: 0;
  background: #8f8f8f;
  display: none;
  flex-direction: column;
  padding: 12px;
}
.theme-mobile-menu span {
  padding: 12px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
/* open */
.theme-mobile-menu.open {
  display: flex;
}
/* ================= TABLET ================= */
@media (max-width: 900px) {
  .theme-appheader__project {
    display: none;
  }
}
/* ================= MOBILE ================= */
@media (max-width: 640px) {
  .theme-appheader__menu {
    display: none;
  }
  .theme-appheader__menu__launcher {
    display: block;
  }
  .theme-appheader__logo-text {
    font-size: 16px;
  }
}
/* ================= SMALL ================= */
@media (max-width: 400px) {
  .theme-appheader__logo-text {
    display: none;
  }
}

/* topdoc
  name: Login page specific components
  description: Login components styles
  modifiers:
  markup:
    <!-- login-card -->
    <div class="login-card">Form</button>
    <!-- forgot-card -->
    <div class="forgot-card">Form</button>
    <!-- reset-card -->
    <div class="reset-card">Form</button>
  example:
  tags:

*/
/* Base */
.login-card {
  width: 500px;
  height: 350px;
  background: white;
  border-radius: 8px;
  padding: 40px;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
  display: flex;
  flex-direction: column;
  align-items: center;
}
.forgot-card {
  width: 500px;
  height: 350px;
  background: white;
  border-radius: 8px;
  padding: 40px;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
  display: flex;
  flex-direction: column;
  align-items: center;
}
.reset-card {
  width: 500px;
  height: 390px;
  background: white;
  border-radius: 8px;
  padding: 40px;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
  display: flex;
  flex-direction: column;
  align-items: center;
}

body,
input,
button,
select,
ul {
  margin: 0;
  padding: 0;
}
h1,
h2,
h3,
h4 {
  margin: 0;
  padding: 0;
}
body {
  height: 100vh;
  width: 100vw;
  cursor: default;
}
table {
  border-collapse: collapse;
  border-spacing: 0;
}
td,
th {
  padding: 0;
}
.popout {
  position: absolute;
  width: 100%;
  height: 100%;
}

/* topdoc
  name: Buttons
  description: Button styles
  modifiers:
    :disabled
    theme-button__primary--medium
    theme-button__primary--large
    theme-button__primary--stretch
    theme-button__secondary--medium
    theme-button__secondary--large
    theme-button__third--medium
    theme-button__third--large
  markup:
    <!-- primary -->
    <button class="theme-button__primary">Example</button>
    <br/></br>
    <!-- primary medium -->
    <button class="theme-button__primary--medium">Example</button>
    <br/></br>
    <!-- primary large -->
    <button class="theme-button__primary--large">Example</button>
    <br/></br>
    <!-- stretch -->
    <button class="theme-button__primary--stretch">Example</button>
    <br/></br>
    <!-- secondary -->
    <button class="theme-button__secondary">Example</button>
    <br/></br>
    <!-- third -->
    <button class="theme-button__third">Example</button>
    <br/></br>
    <!-- disabled -->
    <button class="theme-button__primary" disabled>Example</button>
    <br/></br>
    <button class="theme-button__secondary disabled">Example</button>
    <br/></br>
    <button class="theme-button__third disabled">Example</button>
  example:
  tags:

*/
/* Base */
button {
  font-family: system-ui, sans-serif;
  font-size: 14px;
  border-radius: 8px;
  padding: 8px 16px;
  cursor: pointer;
  transition: all 0.15s ease;
  /* Remove harsh default border */
  border: 1px solid rgba(0, 0, 0, 0.08);
  /* Anti-aliased edge effect */
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.6), /* soft top highlight */ 0 0 0 0.5px rgba(0, 0, 0, 0.04);
  /* outer blend */
}
/* ================= PRIMARY ================= */
.theme-button__primary,
.theme-button__primary--medium,
.theme-button__primary--large,
.theme-button__primary--stretch {
  background-color: #8e8e8e;
  color: #ffffff;
  /* Softer border tuned for darker bg */
  border: 1px solid rgba(0, 0, 0, 0.18);
  /* Adjusted anti-aliasing */
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), /* reduced highlight (darker bg) */ 0 0 0 0.5px rgba(0, 0, 0, 0.12);
  /* slightly stronger outer blend */
}
/* Hover */
.theme-button__primary:hover,
.theme-button__primary--medium:hover,
.theme-button__primary--large:hover,
.theme-button__primary--stretch:hover {
  background-color: #838383;
}
/* Active (pressed) */
.theme-button__primary:active,
.theme-button__primary--medium:active,
.theme-button__primary--large:active,
.theme-button__primary--stretch:active {
  background-color: #7a7a7a;
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.25), /* deeper press */ 0 0 0 0.5px rgba(0, 0, 0, 0.1);
}
/* Sizes */
.theme-button__primary--medium {
  padding: 10px 18px;
  font-size: 15px;
}
.theme-button__primary--large {
  padding: 12px 22px;
  font-size: 16px;
  border-radius: 10px;
}
.theme-button__primary--stretch {
  padding: 10px 18px;
  font-size: 15px;
  width: 100%;
}
/* ================= SECONDARY ================= */
.theme-button__secondary,
.theme-button__secondary--medium,
.theme-button__secondary--large,
.theme-button__secondary--stretch {
  background-color: transparent;
  color: #4a4a4a;
  border: 1px solid rgba(0, 0, 0, 0.1);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7), 0 0 0 0.5px rgba(0, 0, 0, 0.03);
}
/* Hover */
.theme-button__secondary:hover,
.theme-button__secondary--medium:hover,
.theme-button__secondary--large:hover,
.theme-button__secondary--stretch:hover {
  background-color: #f4f4f4;
}
/* Active */
.theme-button__secondary:active,
.theme-button__secondary--medium:active,
.theme-button__secondary--large:active,
.theme-button__secondary--stretch:active {
  background-color: #f4f4f4;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05), 0 0 0 0.5px rgba(0, 0, 0, 0.03);
}
/* Sizes */
.theme-button__secondary--medium {
  padding: 10px 18px;
  font-size: 15px;
}
.theme-button__secondary--large {
  padding: 12px 22px;
  font-size: 16px;
  border-radius: 10px;
}
.theme-button__secondary--stretch {
  padding: 12px 22px;
  font-size: 16px;
  border-radius: 10px;
  width: 100%;
}
/* ================= THIRD ================= */
.theme-button__third,
.theme-button__third--medium,
.theme-button__third--large {
  background: transparent;
  color: #6a6a6a;
  border: none;
  box-shadow: none;
  padding-left: 0;
  padding-right: 0;
}
/* Hover */
.theme-button__third:hover {
  color: #3a3a3a;
}
/* Active */
.theme-button__third:active {
  color: #1a1c21;
}
/* Sizes */
.theme-button__third--medium {
  font-size: 15px;
}
.theme-button__third--large {
  font-size: 16px;
}
/* ================= DISABLED ================= */
button:disabled,
button.disabled,
button.disabled:hover,
button:disabled:hover {
  background-color: #f2f2f0;
  color: #bcbcbc;
  border-color: rgba(0, 0, 0, 0.05);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.5);
  cursor: not-allowed;
}
/* Ghost disabled */
.theme-button__third:disabled,
.theme-button__third.disabled {
  background: transparent;
  color: #c8c8c8;
  box-shadow: none;
}

/* topdoc
  name: Calendar
  description: Styling for calendar
  modifiers:
  markup:
    <div class="theme-calendar">
        <div class="theme-calendar__header">
            <div class="theme-calendar__month-selector">
                <button class="theme-calendar__arrow" id="prevMonth">
                    <svg viewBox="0 0 24 24">
                        <path d="M15 5L8 12L15 19"/>
                    </svg>
                </button>
                <div class="theme-calendar__month" id="monthLabel">April 2026</div>
                <button class="theme-calendar__arrow" id="nextMonth">
                    <svg viewBox="0 0 24 24">
                        <path d="M9 5L16 12L9 19"/>
                    </svg>
                </button>
            </div>
            <div class="theme-calendar__selected">
                <span id="selectedDate">2026/04/23</span>
                <button class="theme-calendar__close">
                    <svg viewBox="0 0 24 24">
                        <path d="M5 5L19 19M19 5L5 19" stroke="#111" stroke-width="2.5" stroke-linecap="round"/>
                    </svg>
                </button>
            </div>
        </div>
        <div class="theme-calendar__weekdays">
            <div class="theme-calendar__weekday">Mon</div>
            <div class="theme-calendar__weekday">Tue</div>
            <div class="theme-calendar__weekday">Wed</div>
            <div class="theme-calendar__weekday">Thu</div>
            <div class="theme-calendar__weekday">Fri</div>
            <div class="theme-calendar__weekday">Sat</div>
            <div class="theme-calendar__weekday">Sun</div>
        </div>
        <div class="theme-calendar__grid">
            <div class="theme-calendar__day theme-calendar__day--unavailable theme-calendar__day--outside">30</div>
            <div class="theme-calendar__day theme-calendar__day--unavailable theme-calendar__day--outside">31</div>
            <div class="theme-calendar__day theme-calendar__day--unavailable">1</div>
            <div class="theme-calendar__day theme-calendar__day--unavailable">2</div>
            <div class="theme-calendar__day theme-calendar__day--unavailable">3</div>
            <div class="theme-calendar__day theme-calendar__day--unavailable">4</div>
            <div class="theme-calendar__day theme-calendar__day--unavailable">5</div>
            <div class="theme-calendar__day theme-calendar__day--unavailable">6</div>
            <div class="theme-calendar__day theme-calendar__day--available theme-calendar__day--today theme-calendar__day--selected">7 Today</div>
            <div class="theme-calendar__day theme-calendar__day--available">8</div>
            <div class="theme-calendar__day theme-calendar__day--partial">9</div>
            <div class="theme-calendar__day theme-calendar__day--available">10</div>
            <div class="theme-calendar__day theme-calendar__day--unavailable">11</div>
            <div class="theme-calendar__day theme-calendar__day--unavailable">12</div>
            <div class="theme-calendar__day theme-calendar__day--partial">13</div>
            <div class="theme-calendar__day theme-calendar__day--partial">14</div>
            <div class="theme-calendar__day theme-calendar__day--partial">15</div>
            <div class="theme-calendar__day theme-calendar__day--available">16</div>
            <div class="theme-calendar__day theme-calendar__day--partial">17</div>
            <div class="theme-calendar__day theme-calendar__day--unavailable">18</div>
            <div class="theme-calendar__day theme-calendar__day--unavailable">19</div>
            <div class="theme-calendar__day theme-calendar__day--available">20</div>
            <div class="theme-calendar__day theme-calendar__day--available">21</div>
            <div class="theme-calendar__day theme-calendar__day--partial">22</div>
            <div class="theme-calendar__day theme-calendar__day--partial">23</div>
            <div class="theme-calendar__day theme-calendar__day--available">24</div>
            <div class="theme-calendar__day theme-calendar__day--unavailable">25</div>
            <div class="theme-calendar__day theme-calendar__day--unavailable">26</div>
            <div class="theme-calendar__day theme-calendar__day--partial">27</div>
            <div class="theme-calendar__day theme-calendar__day--partial">28</div>
            <div class="theme-calendar__day theme-calendar__day--available">29</div>
            <div class="theme-calendar__day theme-calendar__day--available">30</div>
            <div class="theme-calendar__day theme-calendar__day--unavailable theme-calendar__day--outside">1</div>
            <div class="theme-calendar__day theme-calendar__day--unavailable theme-calendar__day--outside">2</div>
            <div class="theme-calendar__day theme-calendar__day--unavailable theme-calendar__day--outside">3</div>
        </div>
        <div class="theme-calendar__legend">
            <div class="theme-calendar__legend-item">
                <div class="theme-calendar__legend-box legend-unavailable"></div>
                <span>Unavailable</span>
            </div>
            <div class="theme-calendar__legend-item">
                <div class="theme-calendar__legend-box legend-available"></div>
                <span>Available</span>
            </div>
            <div class="theme-calendar__legend-item">
                <div class="theme-calendar__legend-box legend-partial"></div>
                <span>Partial</span>
            </div>
        </div>
        <div class="theme-calendar__notes">
            <div>Note, Partial means some slots are available.</div>
            <div>Click on a day to view available slots.</div>
        </div>
    </div>
    <script>
        document.querySelectorAll('.theme-calendar__day').forEach(day => {
            if (day.className.indexOf("unavailable") === -1) {
                day.addEventListener('click', () => {

                    document
                        .querySelectorAll('.theme-calendar__day--selected')
                        .forEach(selected => {
                            selected.classList.remove('theme-calendar__day--selected');
                        });

                    day.classList.add('theme-calendar__day--selected');
                });
            }
        });
    </script>
  example:
  tags:
*/
.theme-calendar {
  width: 100%;
  background: #f4f4f4;
  border-radius: 18px;
  padding: 24px;
  border: 1px solid rgba(0, 0, 0, 0.05);
}
/* =========================
   HEADER
========================= */
.theme-calendar__header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 28px;
  gap: 16px;
}
/* Month selector */
.theme-calendar__month-selector {
  display: flex;
  align-items: center;
  gap: 20px;
  background: #dddddd;
  border-radius: 16px;
  padding: 14px 22px;
  min-width: 230px;
}
.theme-calendar__month {
  font-size: 24px;
  font-weight: 700;
  letter-spacing: 0.2px;
  color: #111111;
}
/* =========================
   ARROWS
========================= */
.theme-calendar__arrow {
  width: 24px;
  height: 24px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  border: none;
  background: transparent;
  cursor: pointer;
}
.theme-calendar__arrow svg {
  width: 24px;
  height: 24px;
}
.theme-calendar__arrow path {
  stroke: #111111;
  stroke-width: 2.5;
  stroke-linecap: round;
  stroke-linejoin: round;
}
/* =========================
   SELECTED DATE
========================= */
.theme-calendar__selected {
  display: flex;
  align-items: center;
  gap: 18px;
  background: #ffffff;
  border: 2px solid rgba(0, 0, 0, 0.12);
  border-radius: 16px;
  padding: 12px 18px;
  font-size: 18px;
  color: #111111;
}
.theme-calendar__close {
  width: 20px;
  height: 20px;
  padding: 0;
  border: none;
  background: transparent;
  cursor: pointer;
}
.theme-calendar__close svg {
  width: 20px;
  height: 20px;
}
/* =========================
   WEEKDAY HEADER
========================= */
.theme-calendar__weekdays {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 12px;
  margin-bottom: 12px;
}
.theme-calendar__weekday {
  padding: 8px 0;
  text-align: left;
  font-size: 18px;
  font-weight: 700;
  color: #111111;
}
/* =========================
   GRID
========================= */
.theme-calendar__grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 12px;
}
/* =========================
   DAY CELL
========================= */
.theme-calendar__day {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  padding: 0 16px;
  border: 2px solid rgba(0, 0, 0, 0.05);
  border-radius: 14px;
  font-size: 18px;
  font-weight: 400;
  color: #111111;
  cursor: pointer;
  transition: transform .15s ease;
  width: 100%;
  height: 55px;
  box-sizing: border-box;
  box-shadow: none;
}
.theme-calendar__day:hover {
  transform: translateY(-1px);
}
/* =========================
   SELECTED
========================= */
.theme-calendar__day--selected {
  box-shadow: inset 0 0 0 2px #111111;
}
.theme-calendar__day--selected:hover {
  box-shadow: inset 0 0 0 2px #111111;
}
/* =========================
   STATES
========================= */
/* unavailable */
.theme-calendar__day--unavailable {
  background: #ffffff;
  color: #8a8a8a;
}
/* available */
.theme-calendar__day--available {
  background: #dddddd;
  color: #111111;
  border-color: transparent;
}
/* partial */
.theme-calendar__day--partial {
  background: #bababa;
  color: #111111;
  border-color: transparent;
}
/* today */
.theme-calendar__day--today {
  font-weight: 700;
}
/* outside month */
.theme-calendar__day--outside {
  color: #8a8a8a;
}
/* =========================
   LEGEND
========================= */
.theme-calendar__legend {
  display: flex;
  flex-wrap: wrap;
  gap: 40px;
  margin-top: 36px;
}
.theme-calendar__legend-item {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 16px;
  color: #4a4a4a;
}
.theme-calendar__legend-box {
  width: 34px;
  height: 34px;
  border-radius: 10px;
}
.legend-unavailable {
  background: #ffffff;
  border: 2px solid rgba(0, 0, 0, 0.05);
}
.legend-available {
  background: #dddddd;
}
.legend-partial {
  background: #bababa;
}
/* =========================
   NOTES
========================= */
.theme-calendar__notes {
  margin-top: 28px;
  font-size: 15px;
  line-height: 1.8;
  color: #6a6a6a;
}
/* =========================
   RESPONSIVE
========================= */
@media (max-width: 900px) {
  body {
    padding: 16px;
  }
  .theme-calendar__day {
    min-height: 72px;
    padding: 12px;
    font-size: 16px;
  }
  .theme-calendar__month {
    font-size: 20px;
  }
  .theme-calendar__weekday {
    font-size: 16px;
  }
}
@media (max-width: 640px) {
  .theme-calendar {
    padding: 14px;
  }
  .theme-calendar__header {
    flex-direction: column;
    align-items: stretch;
  }
  .theme-calendar__month-selector {
    width: 100%;
    justify-content: center;
  }
  .theme-calendar__selected {
    width: 100%;
    justify-content: space-between;
  }
  .theme-calendar__grid {
    gap: 8px;
  }
  .theme-calendar__day {
    min-height: 58px;
    border-radius: 10px;
    font-size: 14px;
  }
  .theme-calendar__weekday {
    font-size: 14px;
  }
}


/* topdoc
  name: Dropdown
  description: Styling for dropdowns/select box
  modifiers:
    :active: Active state
    .is-active: Simulates an active state on mobile devices
    :disabled: Disabled state
    .is-disabled: Simulates a disabled state on mobile devices
  markup:
    <select class="theme-dropdown is-active">
        <option>test</option>
        <option>test</option>
        <option>test</option>
    </select>
    <select class="theme-dropdown is-disabled">
        <option>test</option>
        <option>test</option>
        <option>test</option>
    </select>
    <select class="theme-dropdown" disabled>
        <option>test</option>
        <option>test</option>
        <option>test</option>
    </select>
  example:
  tags:

*/
.theme-dropdown {
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  width: 200px;
  padding: 10px 40px 10px 14px;
  font-size: 14px;
  font-family: system-ui, sans-serif;
  color: #666;
  background-color: #f4f4f4;
  border: 1px solid #bababa;
  border-radius: 10px;
  cursor: pointer;
  outline: none;
  /* chevron */
  background-image: url("data:image/svg+xml;utf8,<svg width='20' height='20' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg'><polyline points='5,7 10,12 15,7' fill='none' stroke='%23666' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/></svg>");
  background-repeat: no-repeat;
  background-position: right 12px center;
  background-size: 16px;
}
/* Hover */
.theme-dropdown:hover {
  background-color: #e3e3e3;
}
/* Active (desktop) */
.theme-dropdown:active,
.theme-dropdown.is-active {
  background-color: #dedede;
  border-color: #bdbdbd;
}
/* Focus */
.theme-dropdown:focus {
  border-color: #999;
}
/* Disabled (native + simulated) */
.theme-dropdown:disabled,
.theme-dropdown.disabled,
.theme-dropdown.is-disabled {
  background-color: #f3f3f3;
  color: #aaa;
  border-color: #ddd;
  cursor: not-allowed;
}
/* Remove default arrow in IE */
.theme-dropdown::-ms-expand {
  display: none;
}

/* topdoc
  name: Forms
  description: Form styles
  modifiers:
  markup:
    <form>
      <div class="theme-form-label">Label above</div><input class="theme-form-input" type="text"></input>
      </br>
      </br>
      <div class="theme-form-label-inline">Label inline</div><input class="theme-form-input" type="text"></input>
      </br>
      </br>
      <div class="theme-form-field">Normal state password</div><input class="theme-form-input" type="password"></input>
      </br>
      <div class="theme-form-field">Disabled state password</div><input class="theme-form-input" disabled type="password"></input>
      </br>
      </br>
      <div class="theme-form-label">Input with clear</div>
      <div class="theme-form-group">
        <div class="theme-form-input-wrapper">
          <input class="theme-form-input" type="text" value="n.kuzmina+emr@entouch.co.jp">
          <button type="button" class="theme-form-clear-btn">&times;</button>
        </div>
      </div>
      <br>
      <div class="theme-form-label">Input with error</div>
      <div class="theme-form-group is-error">
        <input class="theme-form-input" type="text" placeholder="Enter username (email)">
        <div class="theme-form-message">Email is required</div>
      </div>
      </br>
      <div class="theme-form-label">Input with error (filled)</div>
      <div class="theme-form-group is-error">
        <input class="theme-form-input is-filled" type="text" value="n.kuzmina+emr">
        <div class="theme-form-message">Invalid email format</div>
      </div>
    </form>
    <script>
      document.querySelectorAll('.theme-form-input-wrapper').forEach(wrapper => {
        const input = wrapper.querySelector('.theme-form-input');
        const button = wrapper.querySelector('.theme-form-clear-btn');

        const toggle = () => {
          wrapper.classList.toggle('has-value', input.value.length > 0);
        };

        // Initial state
        toggle();

        // On input
        input.addEventListener('input', toggle);

        // Clear action
        button.addEventListener('click', () => {
          input.value = '';
          input.focus();
          toggle();
        });
      });
    </script>
  example:
  tags:

*/
/* Base */
.theme-form-input {
  width: 100%;
  height: 36px;
  padding: 0 12px;
  font-size: 14px;
  font-family: system-ui, sans-serif;
  color: #333;
  background-color: #f2f2f2;
  border: 1px solid #d6d6d6;
  border-radius: 8px;
  outline: none;
  transition: all 0.2s ease;
}
/* Placeholder */
.theme-form-input::placeholder {
  color: #9e9e9e;
}
/* Hover */
.theme-form-input:hover {
  background-color: #ededed;
}
/* Focus */
.theme-form-input:focus {
  background-color: #f7f7f7;
  border-color: #9e9e9e;
}
/* Filled state */
.theme-form-input.is-filled {
  background-color: #e9e9e9;
  color: #333;
}
/* Disabled */
.theme-form-input:disabled {
  background-color: #f7f7f7;
  border-color: #e2e2e2;
  color: #b5b5b5;
  cursor: not-allowed;
}
/* Labels */
.theme-form-label {
  margin-bottom: 6px;
  font-size: 13px;
  color: #333;
}
.theme-form-label-inline {
  font-size: 13px;
  color: #333;
  margin-right: 10px;
}
/* Inline row */
.form-row {
  display: flex;
  align-items: center;
}
/* Section label (like "Default", "Focus" etc.) */
.theme-form-field {
  font-size: 13px;
  color: #333;
  margin: 10px 0 4px;
}
/* Error state */
.theme-form-group.is-error .form-input {
  border-color: #e54848;
  background-color: #fff;
}
/* Error message */
.theme-form-message {
  font-size: 11px;
  color: #e54848;
  margin-top: 4px;
}
/* Wrapper to position the clear button */
.theme-form-input-wrapper {
  position: relative;
  display: inline-block;
}
/* Add padding so text doesn't overlap the button */
.theme-form-input-wrapper .theme-form-input {
  padding-right: 34px;
}
/* Clear button */
.theme-form-clear-btn {
  position: absolute;
  right: 8px;
  top: 50%;
  transform: translateY(-50%);
  width: 18px;
  height: 18px;
  border: none;
  border-radius: 50%;
  background-color: #dcdcdc;
  color: #666;
  font-size: 12px;
  line-height: 18px;
  text-align: center;
  cursor: pointer;
  padding: 0;
  display: none;
  /* hidden by default */
}
/* Show when input has content */
.theme-form-input-wrapper.has-value .theme-form-clear-btn {
  display: block;
}
/* Hover effect */
.theme-form-clear-btn:hover {
  background-color: #cfcfcf;
}
/* Disabled state */
.theme-form-input:disabled + .theme-form-clear-btn {
  display: none;
}
/* Optional: subtle inset feel */
.theme-form-input {
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.03);
}
/* Optional: focus ring (very subtle like your image) */
.theme-form-input:focus {
  box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.04);
}

*,
*:before,
*:after {
  box-sizing: border-box;
}

.theme-icon-close--small {
  width: 10px;
  height: 10px;
}
.theme-icon-close--medium {
  width: 15px;
  height: 15px;
}
.theme-icon-close--large {
  width: 20px;
  height: 20px;
}




/* topdoc
  name: Switch Control
  description: Styling for switch control
  modifiers:
  markup:
    <p>active state</p>
    <div>
      <label class="theme-switch">
        <input type="checkbox" class="theme-switch-input" />
        <div class="theme-switch-handle"></div>
      </label>
    </div>
    <p>disabled state</p>
    <div>
      <label class="theme-switch--disabled">
        <input type="checkbox" class="theme-switch-input" disabled />
        <div class="theme-switch-handle"></div>
      </label>
    </div>
  example:
  tags:

*/
.theme-switch,
.theme-switch--disabled {
  position: relative;
  display: inline-block;
  width: 44px;
  height: 24px;
}
/* Hide default checkbox */
.theme-switch-input {
  opacity: 0;
  width: 0;
  height: 0;
}
/* Track */
.theme-switch-handle {
  position: absolute;
  inset: 0;
  background-color: #e5e5e5;
  border-radius: 999px;
  transition: background-color 0.25s ease;
  cursor: pointer;
}
/* Knob */
.theme-switch-handle::before {
  content: "";
  position: absolute;
  height: 20px;
  width: 20px;
  left: 2px;
  top: 2px;
  background-color: #fff;
  border-radius: 50%;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);
  transition: transform 0.25s ease;
}
/* Active (checked) */
.theme-switch-input:checked + .theme-switch-handle {
  background-color: #d1d1d1;
  /* subtle, not bright green */
}
.theme-switch-input:checked + .theme-switch-handle::before {
  transform: translateX(20px);
}
/* Press (optional subtle interaction) */
.theme-switch-handle:active::before {
  width: 22px;
}
/* Disabled state */
.theme-switch--disabled {
  opacity: 0.5;
  cursor: not-allowed;
}
.theme-switch--disabled .theme-switch-handle {
  cursor: not-allowed;
}
.theme-switch--disabled .theme-switch-input:checked + .theme-switch-handle {
  background-color: #dddddd;
}

/* topdoc
  name: Time
  description: Styling for time selector
  modifiers:
  markup:
    <div class="theme-times">
        <div class="theme-times__header">
            <div class="theme-times__title">Select time&colon;</div>
            <div class="theme-times__selected">
                <span>12:00</span>
                <button class="theme-times__clear">
                    <svg viewBox="0 0 24 24">
                        <path d="M5 5L19 19M19 5L5 19" stroke="#111" stroke-width="2.5" stroke-linecap="round"/>
                    </svg>
                </button>
            </div>
        </div>
        <div class="theme-times__list">
            <button class="theme-time theme-time--unavailable">11:00</button>
            <button class="theme-time theme-time--unavailable">11:30</button>
            <button class="theme-time theme-time--available theme-time--selected">12:00</button>
            <button class="theme-time theme-time--available">12:30</button>
            <button class="theme-time theme-time--available">13:00</button>
            <button class="theme-time theme-time--partial">13:30</button>
            <button class="theme-time theme-time--partial">14:00</button>
            <button class="theme-time theme-time--partial">14:30</button>
            <button class="theme-time theme-time--available">15:00</button>
            <button class="theme-time theme-time--available">15:30</button>
            <button class="theme-time theme-time--partial">16:00</button>
            <button class="theme-time theme-time--partial">16:30</button>
            <button class="theme-time theme-time--available">17:00</button>
            <button class="theme-time theme-time--available">17:30</button>
            <button class="theme-time theme-time--partial">18:00</button>
            <button class="theme-time theme-time--available">18:30</button>
            <button class="theme-time theme-time--available">19:00</button>
            <button class="theme-time theme-time--available">19:30</button>
            <!-- extra rows just to demonstrate scrolling -->
            <button class="theme-time theme-time--available">20:00</button>
            <button class="theme-time theme-time--available">20:30</button>
            <button class="theme-time theme-time--available">21:00</button>
            <button class="theme-time theme-time--available">21:30</button>
        </div>
    </div>
    <script>
        const timeButtons = document.querySelectorAll('.theme-time');
        const selectedTimeLabel = document.querySelector('.theme-times__selected span');
        const clearButton = document.querySelector('.theme-times__clear');

        timeButtons.forEach(button => {
            button.addEventListener('click', () => {

                // Don't allow unavailable times
                if (button.classList.contains('theme-time--unavailable')) {
                    return;
                }

                // Remove existing selection
                document
                    .querySelectorAll('.theme-time--selected')
                    .forEach(selected => {
                        selected.classList.remove('theme-time--selected');
                    });

                // Add new selection
                button.classList.add('theme-time--selected');

                // Update header
                selectedTimeLabel.textContent = button.textContent.trim();
            });
        });

        // Clear selected time
        clearButton.addEventListener('click', () => {
            document
                .querySelectorAll('.theme-time--selected')
                .forEach(selected => {
                    selected.classList.remove('theme-time--selected');
                });

            selectedTimeLabel.textContent = "";
        });
    </script>
  example:
  tags:
*/
.theme-times {
  background: #f4f4f4;
  border-radius: 18px;
  padding: 20px;
  border: 1px solid rgba(0, 0, 0, 0.05);
  height: 640px;
  display: flex;
  flex-direction: column;
}
/* ===========================
   HEADER
=========================== */
.theme-times__header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 18px;
}
.theme-times__title {
  font-size: 24px;
  font-weight: 700;
  color: #111111;
}
/* Selected field */
.theme-times__selected {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-width: 160px;
  background: #ffffff;
  border: 2px solid rgba(0, 0, 0, 0.12);
  border-radius: 16px;
  padding: 10px 14px;
  font-size: 18px;
  color: #111111;
}
.theme-times__clear {
  display: flex;
  align-items: center;
  padding: 0;
  border: none;
  background: none;
  cursor: pointer;
}
.theme-times__clear svg {
  width: 20px;
  height: 20px;
}
/* ===========================
   LIST
=========================== */
.theme-times__list {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
  flex: 1;
  overflow-y: auto;
  padding-right: 8px;
  scrollbar-width: thin;
  scrollbar-color: #bababa #eaeaea;
}
/* ===========================
   SCROLLBAR
=========================== */
.theme-times__list::-webkit-scrollbar {
  width: 10px;
}
.theme-times__list::-webkit-scrollbar-track {
  background: #eaeaea;
  border-radius: 8px;
}
.theme-times__list::-webkit-scrollbar-thumb {
  background: #bababa;
  border-radius: 8px;
}
/* ===========================
   TIME BUTTON
=========================== */
.theme-time {
  position: relative;
  height: 52px;
  padding: 0 18px;
  border: none;
  border-radius: 14px;
  font-size: 18px;
  font-weight: 400;
  text-align: left;
  color: #111111;
  cursor: pointer;
  transition: transform .15s;
}
.theme-time:hover {
  transform: translateY(-1px);
}
/* ===========================
   STATES
=========================== */
/* unavailable */
.theme-time--unavailable {
  background: #ffffff;
  color: #8a8a8a;
  box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.05);
}
/* available */
.theme-time--available {
  background: #dddddd;
}
/* partial */
.theme-time--partial {
  background: #bababa;
}
/* selected */
.theme-time--selected {
  box-shadow: inset 0 0 0 2px #111111;
}
/* ===========================
   MOBILE
=========================== */
@media (max-width: 640px) {
  .theme-times {
    height: auto;
  }
  .theme-times__header {
    flex-direction: column;
    align-items: stretch;
    gap: 14px;
  }
  .theme-times__selected {
    width: 100%;
  }
  .theme-times__list {
    grid-template-columns: 1fr;
    max-height: 420px;
  }
}

/* topdoc
  name: Texts and titles
  description: Major and minor title elements
  modifiers:
  markup:
    <!-- title-primary -->
    <div class="title-primary">Primary Title</button>
    <!-- title-secondary -->
    <div class="title-secondary">Secondary Title</button>
    <!-- title-tip -->
    <div class="title-tip">Title Tip</button>
  example:
  tags:

*/
/* Base */
.title-primary {
  margin: 0;
  font-size: 32px;
}
.title-secondary {
  color: #666;
  font-size: 14px;
}
.title-tip {
  font-size: 12px;
  color: #888;
}

/*# sourceMappingURL=data:application/json;base64,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Q3JCLFVBQVU7R0FDWDtFQUNEO0lBQ0UsWUFBWTtHQUNiO0VBQ0Q7SUFDRSwyQkFBMkI7SUFDM0Isa0JBQWtCO0dBQ25CO0NBQ0Y7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFDRixVQUFVO0FBQ1Y7RUFDRSxVQUFVO0VBQ1YsZ0JBQWdCO0NBQ2pCO0FBQ0Q7RUFDRSxZQUFZO0VBQ1osZ0JBQWdCO0NBQ2pCO0FBQ0Q7RUFDRSxnQkFBZ0I7RUFDaEIsWUFBWTtDQUNiIiwiZmlsZSI6ImxpZ2h0LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qISBub3JtYWxpemUuY3NzIHYzLjAuMyB8IE1JVCBMaWNlbnNlIHwgZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MgKi9cblxuLyoqXG4gKiAxLiBTZXQgZGVmYXVsdCBmb250IGZhbWlseSB0byBzYW5zLXNlcmlmLlxuICogMi4gUHJldmVudCBpT1MgYW5kIElFIHRleHQgc2l6ZSBhZGp1c3QgYWZ0ZXIgZGV2aWNlIG9yaWVudGF0aW9uIGNoYW5nZSxcbiAqICAgIHdpdGhvdXQgZGlzYWJsaW5nIHVzZXIgem9vbS5cbiAqL1xuXG5odG1sIHtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IC8qIDEgKi9cbiAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIDIgKi9cbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG59XG5cbi8qKlxuICogUmVtb3ZlIGRlZmF1bHQgbWFyZ2luLlxuICovXG5cbmJvZHkge1xuICBtYXJnaW46IDA7XG59XG5cbi8qIEhUTUw1IGRpc3BsYXkgZGVmaW5pdGlvbnNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogQ29ycmVjdCBgYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgZm9yIGFueSBIVE1MNSBlbGVtZW50IGluIElFIDgvOS5cbiAqIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBgZGV0YWlsc2Agb3IgYHN1bW1hcnlgIGluIElFIDEwLzExXG4gKiBhbmQgRmlyZWZveC5cbiAqIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBgbWFpbmAgaW4gSUUgMTEuXG4gKi9cblxuYXJ0aWNsZSxcbmFzaWRlLFxuZGV0YWlscyxcbmZpZ2NhcHRpb24sXG5maWd1cmUsXG5mb290ZXIsXG5oZWFkZXIsXG5oZ3JvdXAsXG5tYWluLFxubWVudSxcbm5hdixcbnNlY3Rpb24sXG5zdW1tYXJ5IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCBgaW5saW5lLWJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGluIElFIDgvOS5cbiAqIDIuIE5vcm1hbGl6ZSB2ZXJ0aWNhbCBhbGlnbm1lbnQgb2YgYHByb2dyZXNzYCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS5cbiAqL1xuXG5hdWRpbyxcbmNhbnZhcyxcbnByb2dyZXNzLFxudmlkZW8ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IC8qIDEgKi9cbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyAvKiAyICovXG59XG5cbi8qKlxuICogUHJldmVudCBtb2Rlcm4gYnJvd3NlcnMgZnJvbSBkaXNwbGF5aW5nIGBhdWRpb2Agd2l0aG91dCBjb250cm9scy5cbiAqIFJlbW92ZSBleGNlc3MgaGVpZ2h0IGluIGlPUyA1IGRldmljZXMuXG4gKi9cblxuYXVkaW86bm90KFtjb250cm9sc10pIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgaGVpZ2h0OiAwO1xufVxuXG4vKipcbiAqIEFkZHJlc3MgYFtoaWRkZW5dYCBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS8xMC5cbiAqIEhpZGUgdGhlIGB0ZW1wbGF0ZWAgZWxlbWVudCBpbiBJRSA4LzkvMTAvMTEsIFNhZmFyaSwgYW5kIEZpcmVmb3ggPCAyMi5cbiAqL1xuXG5baGlkZGVuXSxcbnRlbXBsYXRlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLyogTGlua3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgY29sb3IgZnJvbSBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXG4gKi9cblxuYSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4vKipcbiAqIEltcHJvdmUgcmVhZGFiaWxpdHkgb2YgZm9jdXNlZCBlbGVtZW50cyB3aGVuIHRoZXkgYXJlIGFsc28gaW4gYW5cbiAqIGFjdGl2ZS9ob3ZlciBzdGF0ZS5cbiAqL1xuXG5hOmFjdGl2ZSxcbmE6aG92ZXIge1xuICBvdXRsaW5lOiAwO1xufVxuXG4vKiBUZXh0LWxldmVsIHNlbWFudGljc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBBZGRyZXNzIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gSUUgOC85LzEwLzExLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4gKi9cblxuYWJiclt0aXRsZV0ge1xuICBib3JkZXItYm90dG9tOiAxcHggZG90dGVkO1xufVxuXG4vKipcbiAqIEFkZHJlc3Mgc3R5bGUgc2V0IHRvIGBib2xkZXJgIGluIEZpcmVmb3ggNCssIFNhZmFyaSwgYW5kIENocm9tZS5cbiAqL1xuXG5iLFxuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi8qKlxuICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIFNhZmFyaSBhbmQgQ2hyb21lLlxuICovXG5cbmRmbiB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLyoqXG4gKiBBZGRyZXNzIHZhcmlhYmxlIGBoMWAgZm9udC1zaXplIGFuZCBtYXJnaW4gd2l0aGluIGBzZWN0aW9uYCBhbmQgYGFydGljbGVgXG4gKiBjb250ZXh0cyBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4gKi9cblxuaDEge1xuICBmb250LXNpemU6IDJlbTtcbiAgbWFyZ2luOiAwLjY3ZW0gMDtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gSUUgOC85LlxuICovXG5cbm1hcmsge1xuICBiYWNrZ3JvdW5kOiAjZmYwO1xuICBjb2xvcjogIzAwMDtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIGluY29uc2lzdGVudCBhbmQgdmFyaWFibGUgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlO1xufVxuXG4vKipcbiAqIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGFmZmVjdGluZyBgbGluZS1oZWlnaHRgIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5zdWIsXG5zdXAge1xuICBmb250LXNpemU6IDc1JTtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG5zdXAge1xuICB0b3A6IC0wLjVlbTtcbn1cblxuc3ViIHtcbiAgYm90dG9tOiAtMC4yNWVtO1xufVxuXG4vKiBFbWJlZGRlZCBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFJlbW92ZSBib3JkZXIgd2hlbiBpbnNpZGUgYGFgIGVsZW1lbnQgaW4gSUUgOC85LzEwLlxuICovXG5cbmltZyB7XG4gIGJvcmRlcjogMDtcbn1cblxuLyoqXG4gKiBDb3JyZWN0IG92ZXJmbG93IG5vdCBoaWRkZW4gaW4gSUUgOS8xMC8xMS5cbiAqL1xuXG5zdmc6bm90KDpyb290KSB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8qIEdyb3VwaW5nIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogQWRkcmVzcyBtYXJnaW4gbm90IHByZXNlbnQgaW4gSUUgOC85IGFuZCBTYWZhcmkuXG4gKi9cblxuZmlndXJlIHtcbiAgbWFyZ2luOiAxZW0gNDBweDtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIGRpZmZlcmVuY2VzIGJldHdlZW4gRmlyZWZveCBhbmQgb3RoZXIgYnJvd3NlcnMuXG4gKi9cblxuaHIge1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgaGVpZ2h0OiAwO1xufVxuXG4vKipcbiAqIENvbnRhaW4gb3ZlcmZsb3cgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnByZSB7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuXG4vKipcbiAqIEFkZHJlc3Mgb2RkIGBlbWAtdW5pdCBmb250IHNpemUgcmVuZGVyaW5nIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5jb2RlLFxua2JkLFxucHJlLFxuc2FtcCB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTtcbiAgZm9udC1zaXplOiAxZW07XG59XG5cbi8qIEZvcm1zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEtub3duIGxpbWl0YXRpb246IGJ5IGRlZmF1bHQsIENocm9tZSBhbmQgU2FmYXJpIG9uIE9TIFggYWxsb3cgdmVyeSBsaW1pdGVkXG4gKiBzdHlsaW5nIG9mIGBzZWxlY3RgLCB1bmxlc3MgYSBgYm9yZGVyYCBwcm9wZXJ0eSBpcyBzZXQuXG4gKi9cblxuLyoqXG4gKiAxLiBDb3JyZWN0IGNvbG9yIG5vdCBiZWluZyBpbmhlcml0ZWQuXG4gKiAgICBLbm93biBpc3N1ZTogYWZmZWN0cyBjb2xvciBvZiBkaXNhYmxlZCBlbGVtZW50cy5cbiAqIDIuIENvcnJlY3QgZm9udCBwcm9wZXJ0aWVzIG5vdCBiZWluZyBpbmhlcml0ZWQuXG4gKiAzLiBBZGRyZXNzIG1hcmdpbnMgc2V0IGRpZmZlcmVudGx5IGluIEZpcmVmb3ggNCssIFNhZmFyaSwgYW5kIENocm9tZS5cbiAqL1xuXG5idXR0b24sXG5pbnB1dCxcbm9wdGdyb3VwLFxuc2VsZWN0LFxudGV4dGFyZWEge1xuICBjb2xvcjogaW5oZXJpdDsgLyogMSAqL1xuICBmb250OiBpbmhlcml0OyAvKiAyICovXG4gIG1hcmdpbjogMDsgLyogMyAqL1xufVxuXG4vKipcbiAqIEFkZHJlc3MgYG92ZXJmbG93YCBzZXQgdG8gYGhpZGRlbmAgaW4gSUUgOC85LzEwLzExLlxuICovXG5cbmJ1dHRvbiB7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4vKipcbiAqIEFkZHJlc3MgaW5jb25zaXN0ZW50IGB0ZXh0LXRyYW5zZm9ybWAgaW5oZXJpdGFuY2UgZm9yIGBidXR0b25gIGFuZCBgc2VsZWN0YC5cbiAqIEFsbCBvdGhlciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgZG8gbm90IGluaGVyaXQgYHRleHQtdHJhbnNmb3JtYCB2YWx1ZXMuXG4gKiBDb3JyZWN0IGBidXR0b25gIHN0eWxlIGluaGVyaXRhbmNlIGluIEZpcmVmb3gsIElFIDgvOS8xMC8xMSwgYW5kIE9wZXJhLlxuICogQ29ycmVjdCBgc2VsZWN0YCBzdHlsZSBpbmhlcml0YW5jZSBpbiBGaXJlZm94LlxuICovXG5cbmJ1dHRvbixcbnNlbGVjdCB7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xufVxuXG4vKipcbiAqIDEuIEF2b2lkIHRoZSBXZWJLaXQgYnVnIGluIEFuZHJvaWQgNC4wLiogd2hlcmUgKDIpIGRlc3Ryb3lzIG5hdGl2ZSBgYXVkaW9gXG4gKiAgICBhbmQgYHZpZGVvYCBjb250cm9scy5cbiAqIDIuIENvcnJlY3QgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSBgaW5wdXRgIHR5cGVzIGluIGlPUy5cbiAqIDMuIEltcHJvdmUgdXNhYmlsaXR5IGFuZCBjb25zaXN0ZW5jeSBvZiBjdXJzb3Igc3R5bGUgYmV0d2VlbiBpbWFnZS10eXBlXG4gKiAgICBgaW5wdXRgIGFuZCBvdGhlcnMuXG4gKi9cblxuYnV0dG9uLFxuaHRtbCBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdLCAvKiAxICovXG5pbnB1dFt0eXBlPVwicmVzZXRcIl0sXG5pbnB1dFt0eXBlPVwic3VibWl0XCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IC8qIDIgKi9cbiAgY3Vyc29yOiBwb2ludGVyOyAvKiAzICovXG59XG5cbi8qKlxuICogUmUtc2V0IGRlZmF1bHQgY3Vyc29yIGZvciBkaXNhYmxlZCBlbGVtZW50cy5cbiAqL1xuXG5idXR0b25bZGlzYWJsZWRdLFxuaHRtbCBpbnB1dFtkaXNhYmxlZF0ge1xuICBjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi8qKlxuICogUmVtb3ZlIGlubmVyIHBhZGRpbmcgYW5kIGJvcmRlciBpbiBGaXJlZm94IDQrLlxuICovXG5cbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcbmlucHV0OjotbW96LWZvY3VzLWlubmVyIHtcbiAgYm9yZGVyOiAwO1xuICBwYWRkaW5nOiAwO1xufVxuXG4vKipcbiAqIEFkZHJlc3MgRmlyZWZveCA0KyBzZXR0aW5nIGBsaW5lLWhlaWdodGAgb24gYGlucHV0YCB1c2luZyBgIWltcG9ydGFudGAgaW5cbiAqIHRoZSBVQSBzdHlsZXNoZWV0LlxuICovXG5cbmlucHV0IHtcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcbn1cblxuLyoqXG4gKiBJdCdzIHJlY29tbWVuZGVkIHRoYXQgeW91IGRvbid0IGF0dGVtcHQgdG8gc3R5bGUgdGhlc2UgZWxlbWVudHMuXG4gKiBGaXJlZm94J3MgaW1wbGVtZW50YXRpb24gZG9lc24ndCByZXNwZWN0IGJveC1zaXppbmcsIHBhZGRpbmcsIG9yIHdpZHRoLlxuICpcbiAqIDEuIEFkZHJlc3MgYm94IHNpemluZyBzZXQgdG8gYGNvbnRlbnQtYm94YCBpbiBJRSA4LzkvMTAuXG4gKiAyLiBSZW1vdmUgZXhjZXNzIHBhZGRpbmcgaW4gSUUgOC85LzEwLlxuICovXG5cbmlucHV0W3R5cGU9XCJjaGVja2JveFwiXSxcbmlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cbiAgcGFkZGluZzogMDsgLyogMiAqL1xufVxuXG4vKipcbiAqIEZpeCB0aGUgY3Vyc29yIHN0eWxlIGZvciBDaHJvbWUncyBpbmNyZW1lbnQvZGVjcmVtZW50IGJ1dHRvbnMuIEZvciBjZXJ0YWluXG4gKiBgZm9udC1zaXplYCB2YWx1ZXMgb2YgdGhlIGBpbnB1dGAsIGl0IGNhdXNlcyB0aGUgY3Vyc29yIHN0eWxlIG9mIHRoZVxuICogZGVjcmVtZW50IGJ1dHRvbiB0byBjaGFuZ2UgZnJvbSBgZGVmYXVsdGAgdG8gYHRleHRgLlxuICovXG5cbmlucHV0W3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG5pbnB1dFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG4vKipcbiAqIDEuIEFkZHJlc3MgYGFwcGVhcmFuY2VgIHNldCB0byBgc2VhcmNoZmllbGRgIGluIFNhZmFyaSBhbmQgQ2hyb21lLlxuICogMi4gQWRkcmVzcyBgYm94LXNpemluZ2Agc2V0IHRvIGBib3JkZXItYm94YCBpbiBTYWZhcmkgYW5kIENocm9tZS5cbiAqL1xuXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC8qIDEgKi9cbiAgYm94LXNpemluZzogY29udGVudC1ib3g7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBSZW1vdmUgaW5uZXIgcGFkZGluZyBhbmQgc2VhcmNoIGNhbmNlbCBidXR0b24gaW4gU2FmYXJpIGFuZCBDaHJvbWUgb24gT1MgWC5cbiAqIFNhZmFyaSAoYnV0IG5vdCBDaHJvbWUpIGNsaXBzIHRoZSBjYW5jZWwgYnV0dG9uIHdoZW4gdGhlIHNlYXJjaCBpbnB1dCBoYXNcbiAqIHBhZGRpbmcgKGFuZCBgdGV4dGZpZWxkYCBhcHBlYXJhbmNlKS5cbiAqL1xuXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuLyoqXG4gKiBEZWZpbmUgY29uc2lzdGVudCBib3JkZXIsIG1hcmdpbiwgYW5kIHBhZGRpbmcuXG4gKi9cblxuZmllbGRzZXQge1xuICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwO1xuICBtYXJnaW46IDAgMnB4O1xuICBwYWRkaW5nOiAwLjM1ZW0gMC42MjVlbSAwLjc1ZW07XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCBgY29sb3JgIG5vdCBiZWluZyBpbmhlcml0ZWQgaW4gSUUgOC85LzEwLzExLlxuICogMi4gUmVtb3ZlIHBhZGRpbmcgc28gcGVvcGxlIGFyZW4ndCBjYXVnaHQgb3V0IGlmIHRoZXkgemVybyBvdXQgZmllbGRzZXRzLlxuICovXG5cbmxlZ2VuZCB7XG4gIGJvcmRlcjogMDsgLyogMSAqL1xuICBwYWRkaW5nOiAwOyAvKiAyICovXG59XG5cbi8qKlxuICogUmVtb3ZlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFIDgvOS8xMC8xMS5cbiAqL1xuXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuXG4vKipcbiAqIERvbid0IGluaGVyaXQgdGhlIGBmb250LXdlaWdodGAgKGFwcGxpZWQgYnkgYSBydWxlIGFib3ZlKS5cbiAqIE5PVEU6IHRoZSBkZWZhdWx0IGNhbm5vdCBzYWZlbHkgYmUgY2hhbmdlZCBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBPUyBYLlxuICovXG5cbm9wdGdyb3VwIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi8qIFRhYmxlc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBSZW1vdmUgbW9zdCBzcGFjaW5nIGJldHdlZW4gdGFibGUgY2VsbHMuXG4gKi9cblxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDtcbn1cblxudGQsXG50aCB7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi8qXG4gKiBBbmltYXRpb24gY29uZmlndXJhdGlvbnMgKCBkdXJhdGlvbiBhbmQgZmlsbCBtb2RlIClcbiAqL1xuXG4vKiB0b3Bkb2NcbiAgbmFtZTogQXBwIEhlYWRlciAtLSBCYXNlXG4gIGRlc2NyaXB0aW9uOiBTdHlsaW5nIGZvciBhcHBsaWNhdGlvbiBoZWFkZXIgYmFzZVxuICBtb2RpZmllcnM6XG4gIG1hcmt1cDpcbiAgICA8ZGl2IGNsYXNzPVwidGhlbWUtYXBwaGVhZGVyXCI+XG5cbiAgICAgIDwhLS0gTE9HTyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS1hcHBoZWFkZXJfX2xvZ29cIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aGVtZS1hcHBoZWFkZXJfX2xvZ28tbWFya1wiPjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aGVtZS1hcHBoZWFkZXJfX2xvZ28tdGV4dFwiPmVuUmVhY2g8L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBNRU5VIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInRoZW1lLWFwcGhlYWRlcl9fbWVudVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImlzLWFjdGl2ZVwiPkJvb2tpbmc8L3NwYW4+XG4gICAgICAgIDxzcGFuPlNlc3Npb25zPC9zcGFuPlxuICAgICAgICA8c3Bhbj5TY2hlZHVsZXM8L3NwYW4+XG4gICAgICAgIDxzcGFuPkF2YWlsYWJpbGl0eTwvc3Bhbj5cbiAgICAgICAgPHNwYW4+RGF0YTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIE1PQklMRSBNRU5VIEJVVFRPTiAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS1hcHBoZWFkZXJfX21lbnVfX2xhdW5jaGVyXCI+PC9kaXY+XG5cbiAgICAgIDwhLS0gUFJPSkVDVCBEUk9QRE9XTiAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS1hcHBoZWFkZXJfX2Ryb3Bkb3duIHRoZW1lLWFwcGhlYWRlcl9fcHJvamVjdFwiPlxuICAgICAgICA8c3Bhbj5NaXlhcmlzYW4gcHJvamVjdDwvc3Bhbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIj5cbiAgICAgICAgICA8ZGl2PlByb2plY3QgQTwvZGl2PlxuICAgICAgICAgIDxkaXY+UHJvamVjdCBCPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gQUNUSU9OUyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS1hcHBoZWFkZXJfX2FjdGlvbnNcIj5cblxuICAgICAgICA8IS0tIEJlbGwgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpY29uIGhhcy1iYWRnZVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2VcIj4zPC9zcGFuPlxuICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGNsYXNzPVwiaWNvbi1zdmdcIj5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNNiA4YTYgNiAwIDEgMSAxMiAwdjRjMCAxLjUgMSAzIDIgNEg0YzEtMSAyLTIuNSAyLTRWOFwiIFxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjEuOFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAgMTlhMiAyIDAgMCAwIDQgMFwiIFxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjEuOFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIi8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gR2xvYmUgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS1hcHBoZWFkZXJfX2Ryb3Bkb3duIGljb25cIj5cbiAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBjbGFzcz1cImljb24tc3ZnXCI+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjlcIiBcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjEuOFwiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMyAxMmgxOE0xMiAzYzMgMyAzIDE1IDAgMThNMTIgM2MtMyAzLTMgMTUgMCAxOFwiIFxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIi8+XG4gICAgICAgICAgPC9zdmc+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiPlxuICAgICAgICAgICAgPGRpdj5FTjwvZGl2PlxuICAgICAgICAgICAgPGRpdj5KUDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIFVzZXIgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS1hcHBoZWFkZXJfX2Ryb3Bkb3duIGljb25cIj5cbiAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBjbGFzcz1cImljb24tc3ZnXCI+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjhcIiByPVwiNFwiIFxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIndoaXRlXCIgc3Ryb2tlLXdpZHRoPVwiMS44XCIvPlxuICAgICAgICAgICAgPHBhdGggZD1cIk00IDIwYzIuNS00IDEzLjUtNCAxNiAwXCIgXG4gICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIndoaXRlXCIgc3Ryb2tlLXdpZHRoPVwiMS44XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiLz5cbiAgICAgICAgICA8L3N2Zz5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCI+XG4gICAgICAgICAgICA8ZGl2PkFjY291bnQ8L2Rpdj5cbiAgICAgICAgICAgIDxkaXY+TG9nb3V0PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gTU9CSUxFIE1FTlUgUEFORUwgLS0+XG4gICAgPGRpdiBjbGFzcz1cInRoZW1lLW1vYmlsZS1tZW51XCI+XG4gICAgICA8c3Bhbj5Cb29raW5nPC9zcGFuPlxuICAgICAgPHNwYW4+U2Vzc2lvbnM8L3NwYW4+XG4gICAgICA8c3Bhbj5TY2hlZHVsZXM8L3NwYW4+XG4gICAgICA8c3Bhbj5BdmFpbGFiaWxpdHk8L3NwYW4+XG4gICAgICA8c3Bhbj5EYXRhPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxzY3JpcHQ+XG4gICAgICBjb25zdCBtZW51QnRuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnRoZW1lLWFwcGhlYWRlcl9fbWVudV9fbGF1bmNoZXInKTtcbiAgICAgIGNvbnN0IG1vYmlsZU1lbnUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcudGhlbWUtbW9iaWxlLW1lbnUnKTtcblxuICAgICAgbWVudUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgbW9iaWxlTWVudS5jbGFzc0xpc3QudG9nZ2xlKCdvcGVuJyk7XG4gICAgICB9KTtcblxuICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRoZW1lLWFwcGhlYWRlcl9fZHJvcGRvd24nKS5mb3JFYWNoKGRyb3AgPT4ge1xuICAgICAgICBkcm9wLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50aGVtZS1hcHBoZWFkZXJfX2Ryb3Bkb3duJykuZm9yRWFjaChkID0+IGQuY2xhc3NMaXN0LnJlbW92ZSgnb3BlbicpKTtcbiAgICAgICAgICBkcm9wLmNsYXNzTGlzdC50b2dnbGUoJ29wZW4nKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50aGVtZS1hcHBoZWFkZXJfX2Ryb3Bkb3duJykuZm9yRWFjaChkID0+IGQuY2xhc3NMaXN0LnJlbW92ZSgnb3BlbicpKTtcbiAgICAgIH0pO1xuICAgIDwvc2NyaXB0PlxuICBleGFtcGxlOlxuICB0YWdzOlxuXG4qL1xuLyogPT09PT09PT09PT09PT09PT0gU0FGRSBBUkVBID09PT09PT09PT09PT09PT09ICovXG4udGhlbWUtYXBwaGVhZGVyIHtcbiAgcGFkZGluZy10b3A6IGVudihzYWZlLWFyZWEtaW5zZXQtdG9wKTtcbn1cbi8qID09PT09PT09PT09PT09PT09IEhFQURFUiA9PT09PT09PT09PT09PT09PSAqL1xuLnRoZW1lLWFwcGhlYWRlciB7XG4gIGhlaWdodDogNTZweDtcbiAgYmFja2dyb3VuZDogIzhmOGY4ZjtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMCAxNnB4O1xuICBjb2xvcjogI2YyZjJmMjtcbiAgZm9udC1mYW1pbHk6IHN5c3RlbS11aSwgc2Fucy1zZXJpZjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxMDtcbn1cbi8qID09PT09PT09PT09PT09PT09IExPR08gPT09PT09PT09PT09PT09PT0gKi9cbi50aGVtZS1hcHBoZWFkZXJfX2xvZ28ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDhweDtcbn1cbi50aGVtZS1hcHBoZWFkZXJfX2xvZ28tbWFyayB7XG4gIGhlaWdodDogMjBweDtcbiAgd2lkdGg6IDQwcHg7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDk5JTIwNTAlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUwQSUyMCUyMCUzQ3BhdGglMjBkJTNEJTIyTTk3LjM2NCUyMDIuNzM1NTZDODguMzY0JTIwMTcuNzM1NiUyMDYxLjU2NCUyMDQ3LjczNTYlMjAyNi4zNjQlMjA0Ny43MzU2QzYuOTYyMTQlMjA0Ny43MzU2JTIwMi4yNzE4NSUyMDM2Ljk3MzYlMjAyLjAxMDE2JTIwMjguNDczNk0yLjAxMDE2JTIwMjguNDczNkMxLjYwNTE3JTIwMTUuMzE5MyUyMDEzLjM2MzklMjAtMS43NjQyMyUyMDI3Ljg2NCUyMDIuNzM1NTZDNDcuODE3NiUyMDguOTI3NyUyMDE3LjY2NDUlMjA0My40NzM2JTIwMi4wMTAxNiUyMDI4LjQ3MzZaJTIyJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3Ryb2tlJTNEJTIyd2hpdGUlMjIlMjBzdHJva2Utd2lkdGglM0QlMjIzJTIyJTIwc3Ryb2tlLWxpbmVjYXAlM0QlMjJyb3VuZCUyMiUyMGZpbGwlM0QlMjJub25lJTIyJTJGJTNFJTBBJTNDJTJGc3ZnJTNFJTBBXCIpO1xufVxuLnRoZW1lLWFwcGhlYWRlcl9fbG9nby10ZXh0IHtcbiAgZm9udC1zaXplOiAxOHB4O1xufVxuLyogPT09PT09PT09PT09PT09PT0gTUVOVSA9PT09PT09PT09PT09PT09PSAqL1xuLnRoZW1lLWFwcGhlYWRlcl9fbWVudSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdhcDogMjRweDtcbiAgbWFyZ2luLWxlZnQ6IDMycHg7XG59XG4udGhlbWUtYXBwaGVhZGVyX19tZW51IHNwYW4ge1xuICBvcGFjaXR5OiAwLjc7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi50aGVtZS1hcHBoZWFkZXJfX21lbnUgLmlzLWFjdGl2ZSB7XG4gIG9wYWNpdHk6IDE7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG4vKiA9PT09PT09PT09PT09PT09PSBEUk9QRE9XTiA9PT09PT09PT09PT09PT09PSAqL1xuLnRoZW1lLWFwcGhlYWRlcl9fZHJvcGRvd24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5kcm9wZG93bi1tZW51IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEyMCU7XG4gIHJpZ2h0OiAwO1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBjb2xvcjogIzMzMztcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBwYWRkaW5nOiA2cHggMDtcbiAgbWluLXdpZHRoOiAxNDBweDtcbiAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uZHJvcGRvd24tbWVudSBkaXYge1xuICBwYWRkaW5nOiA4cHggMTJweDtcbiAgZm9udC1zaXplOiAxM3B4O1xufVxuLmRyb3Bkb3duLW1lbnUgZGl2OmhvdmVyIHtcbiAgYmFja2dyb3VuZDogI2YyZjJmMjtcbn1cbi8qIG9wZW4gc3RhdGUgKi9cbi50aGVtZS1hcHBoZWFkZXJfX2Ryb3Bkb3duLm9wZW4gLmRyb3Bkb3duLW1lbnUge1xuICBkaXNwbGF5OiBibG9jaztcbn1cbi8qID09PT09PT09PT09PT09PT09IFBST0pFQ1QgPT09PT09PT09PT09PT09PT0gKi9cbi50aGVtZS1hcHBoZWFkZXJfX3Byb2plY3Qge1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiAxNnB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDZweDtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG4udGhlbWUtYXBwaGVhZGVyX19wcm9qZWN0IHNwYW4ge1xuICBwYWRkaW5nLWxlZnQ6IDIwcHg7XG59XG4vKiA9PT09PT09PT09PT09PT09PSBBQ1RJT05TID09PT09PT09PT09PT09PT09ICovXG4udGhlbWUtYXBwaGVhZGVyX19hY3Rpb25zIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiAxNnB4O1xufVxuLyogPT09PT09PT09PT09PT09PT0gSUNPTlMgPT09PT09PT09PT09PT09PT0gKi9cbi8qIFNWRyBpY29uIHNpemluZyAqL1xuLmljb24tc3ZnIHtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG9wYWNpdHk6IDAuOTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2UsIHRyYW5zZm9ybSAwLjE1cyBlYXNlO1xufVxuLyogSG92ZXIgKi9cbi5pY29uOmhvdmVyIC5pY29uLXN2ZyB7XG4gIG9wYWNpdHk6IDE7XG59XG4vKiBBY3RpdmUgKHRhcCBmZWVkYmFjaykgKi9cbi5pY29uOmFjdGl2ZSAuaWNvbi1zdmcge1xuICB0cmFuc2Zvcm06IHNjYWxlKDAuOTUpO1xufVxuLyogRW5zdXJlIHByb3BlciBhbGlnbm1lbnQgKi9cbi5pY29uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG4vKiBCYWRnZSBzdGF5cyBhYm92ZSBTVkcgKi9cbi5oYXMtYmFkZ2Uge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4vKiBOb3RpZmljYXRpb24gYmFkZ2UgKi9cbi5iYWRnZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAtNHB4O1xuICByaWdodDogLTZweDtcbiAgYmFja2dyb3VuZDogI2ZmNGQ0ZDtcbiAgY29sb3I6IHdoaXRlO1xuICBmb250LXNpemU6IDEwcHg7XG4gIHBhZGRpbmc6IDJweCA1cHg7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG59XG4vKiA9PT09PT09PT09PT09PT09PSBNT0JJTEUgTUVOVSBCVVRUT04gPT09PT09PT09PT09PT09PT0gKi9cbi50aGVtZS1hcHBoZWFkZXJfX21lbnVfX2xhdW5jaGVyIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgd2lkdGg6IDIycHg7XG4gIGhlaWdodDogMTZweDtcbiAgbWFyZ2luOiAwIDE2cHggMCAxNnB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi50aGVtZS1hcHBoZWFkZXJfX21lbnVfX2xhdW5jaGVyOjpiZWZvcmUsXG4udGhlbWUtYXBwaGVhZGVyX19tZW51X19sYXVuY2hlcjo6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDJweDtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG59XG4udGhlbWUtYXBwaGVhZGVyX19tZW51X19sYXVuY2hlcjo6YmVmb3JlIHtcbiAgdG9wOiAwO1xufVxuLnRoZW1lLWFwcGhlYWRlcl9fbWVudV9fbGF1bmNoZXI6OmFmdGVyIHtcbiAgYm90dG9tOiAwO1xufVxuLnRoZW1lLWFwcGhlYWRlcl9fbWVudV9fbGF1bmNoZXI6OmJlZm9yZSB7XG4gIGJveC1zaGFkb3c6IDAgN3B4IDAgd2hpdGU7XG59XG4vKiA9PT09PT09PT09PT09PT09PSBNT0JJTEUgTUVOVSBQQU5FTCA9PT09PT09PT09PT09PT09PSAqL1xuLnRoZW1lLW1vYmlsZS1tZW51IHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDU2cHg7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBiYWNrZ3JvdW5kOiAjOGY4ZjhmO1xuICBkaXNwbGF5OiBub25lO1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBwYWRkaW5nOiAxMnB4O1xufVxuLnRoZW1lLW1vYmlsZS1tZW51IHNwYW4ge1xuICBwYWRkaW5nOiAxMnB4O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xufVxuLyogb3BlbiAqL1xuLnRoZW1lLW1vYmlsZS1tZW51Lm9wZW4ge1xuICBkaXNwbGF5OiBmbGV4O1xufVxuLyogPT09PT09PT09PT09PT09PT0gVEFCTEVUID09PT09PT09PT09PT09PT09ICovXG5AbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHtcbiAgLnRoZW1lLWFwcGhlYWRlcl9fcHJvamVjdCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuLyogPT09PT09PT09PT09PT09PT0gTU9CSUxFID09PT09PT09PT09PT09PT09ICovXG5AbWVkaWEgKG1heC13aWR0aDogNjQwcHgpIHtcbiAgLnRoZW1lLWFwcGhlYWRlcl9fbWVudSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAudGhlbWUtYXBwaGVhZGVyX19tZW51X19sYXVuY2hlciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbiAgLnRoZW1lLWFwcGhlYWRlcl9fbG9nby10ZXh0IHtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gIH1cbn1cbi8qID09PT09PT09PT09PT09PT09IFNNQUxMID09PT09PT09PT09PT09PT09ICovXG5AbWVkaWEgKG1heC13aWR0aDogNDAwcHgpIHtcbiAgLnRoZW1lLWFwcGhlYWRlcl9fbG9nby10ZXh0IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi8qIHRvcGRvY1xuICBuYW1lOiBMb2dpbiBwYWdlIHNwZWNpZmljIGNvbXBvbmVudHNcbiAgZGVzY3JpcHRpb246IExvZ2luIGNvbXBvbmVudHMgc3R5bGVzXG4gIG1vZGlmaWVyczpcbiAgbWFya3VwOlxuICAgIDwhLS0gbG9naW4tY2FyZCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibG9naW4tY2FyZFwiPkZvcm08L2J1dHRvbj5cbiAgICA8IS0tIGZvcmdvdC1jYXJkIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJmb3Jnb3QtY2FyZFwiPkZvcm08L2J1dHRvbj5cbiAgICA8IS0tIHJlc2V0LWNhcmQgLS0+XG4gICAgPGRpdiBjbGFzcz1cInJlc2V0LWNhcmRcIj5Gb3JtPC9idXR0b24+XG4gIGV4YW1wbGU6XG4gIHRhZ3M6XG5cbiovXG4vKiBCYXNlICovXG4ubG9naW4tY2FyZCB7XG4gIHdpZHRoOiA1MDBweDtcbiAgaGVpZ2h0OiAzNTBweDtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgcGFkZGluZzogNDBweDtcbiAgYm94LXNoYWRvdzogMCA0cHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG4uZm9yZ290LWNhcmQge1xuICB3aWR0aDogNTAwcHg7XG4gIGhlaWdodDogMzUwcHg7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIHBhZGRpbmc6IDQwcHg7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuLnJlc2V0LWNhcmQge1xuICB3aWR0aDogNTAwcHg7XG4gIGhlaWdodDogMzkwcHg7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIHBhZGRpbmc6IDQwcHg7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG5ib2R5LFxuaW5wdXQsXG5idXR0b24sXG5zZWxlY3QsXG51bCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbn1cbmgxLFxuaDIsXG5oMyxcbmg0IHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xufVxuYm9keSB7XG4gIGhlaWdodDogMTAwdmg7XG4gIHdpZHRoOiAxMDB2dztcbiAgY3Vyc29yOiBkZWZhdWx0O1xufVxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDtcbn1cbnRkLFxudGgge1xuICBwYWRkaW5nOiAwO1xufVxuLnBvcG91dCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbn1cblxuLyogdG9wZG9jXG4gIG5hbWU6IEJ1dHRvbnNcbiAgZGVzY3JpcHRpb246IEJ1dHRvbiBzdHlsZXNcbiAgbW9kaWZpZXJzOlxuICAgIDpkaXNhYmxlZFxuICAgIHRoZW1lLWJ1dHRvbl9fcHJpbWFyeS0tbWVkaXVtXG4gICAgdGhlbWUtYnV0dG9uX19wcmltYXJ5LS1sYXJnZVxuICAgIHRoZW1lLWJ1dHRvbl9fcHJpbWFyeS0tc3RyZXRjaFxuICAgIHRoZW1lLWJ1dHRvbl9fc2Vjb25kYXJ5LS1tZWRpdW1cbiAgICB0aGVtZS1idXR0b25fX3NlY29uZGFyeS0tbGFyZ2VcbiAgICB0aGVtZS1idXR0b25fX3RoaXJkLS1tZWRpdW1cbiAgICB0aGVtZS1idXR0b25fX3RoaXJkLS1sYXJnZVxuICBtYXJrdXA6XG4gICAgPCEtLSBwcmltYXJ5IC0tPlxuICAgIDxidXR0b24gY2xhc3M9XCJ0aGVtZS1idXR0b25fX3ByaW1hcnlcIj5FeGFtcGxlPC9idXR0b24+XG4gICAgPGJyLz48L2JyPlxuICAgIDwhLS0gcHJpbWFyeSBtZWRpdW0gLS0+XG4gICAgPGJ1dHRvbiBjbGFzcz1cInRoZW1lLWJ1dHRvbl9fcHJpbWFyeS0tbWVkaXVtXCI+RXhhbXBsZTwvYnV0dG9uPlxuICAgIDxici8+PC9icj5cbiAgICA8IS0tIHByaW1hcnkgbGFyZ2UgLS0+XG4gICAgPGJ1dHRvbiBjbGFzcz1cInRoZW1lLWJ1dHRvbl9fcHJpbWFyeS0tbGFyZ2VcIj5FeGFtcGxlPC9idXR0b24+XG4gICAgPGJyLz48L2JyPlxuICAgIDwhLS0gc3RyZXRjaCAtLT5cbiAgICA8YnV0dG9uIGNsYXNzPVwidGhlbWUtYnV0dG9uX19wcmltYXJ5LS1zdHJldGNoXCI+RXhhbXBsZTwvYnV0dG9uPlxuICAgIDxici8+PC9icj5cbiAgICA8IS0tIHNlY29uZGFyeSAtLT5cbiAgICA8YnV0dG9uIGNsYXNzPVwidGhlbWUtYnV0dG9uX19zZWNvbmRhcnlcIj5FeGFtcGxlPC9idXR0b24+XG4gICAgPGJyLz48L2JyPlxuICAgIDwhLS0gdGhpcmQgLS0+XG4gICAgPGJ1dHRvbiBjbGFzcz1cInRoZW1lLWJ1dHRvbl9fdGhpcmRcIj5FeGFtcGxlPC9idXR0b24+XG4gICAgPGJyLz48L2JyPlxuICAgIDwhLS0gZGlzYWJsZWQgLS0+XG4gICAgPGJ1dHRvbiBjbGFzcz1cInRoZW1lLWJ1dHRvbl9fcHJpbWFyeVwiIGRpc2FibGVkPkV4YW1wbGU8L2J1dHRvbj5cbiAgICA8YnIvPjwvYnI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cInRoZW1lLWJ1dHRvbl9fc2Vjb25kYXJ5IGRpc2FibGVkXCI+RXhhbXBsZTwvYnV0dG9uPlxuICAgIDxici8+PC9icj5cbiAgICA8YnV0dG9uIGNsYXNzPVwidGhlbWUtYnV0dG9uX190aGlyZCBkaXNhYmxlZFwiPkV4YW1wbGU8L2J1dHRvbj5cbiAgZXhhbXBsZTpcbiAgdGFnczpcblxuKi9cbi8qIEJhc2UgKi9cbmJ1dHRvbiB7XG4gIGZvbnQtZmFtaWx5OiBzeXN0ZW0tdWksIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBwYWRkaW5nOiA4cHggMTZweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTtcbiAgLyogUmVtb3ZlIGhhcnNoIGRlZmF1bHQgYm9yZGVyICovXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4wOCk7XG4gIC8qIEFudGktYWxpYXNlZCBlZGdlIGVmZmVjdCAqL1xuICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42KSwgLyogc29mdCB0b3AgaGlnaGxpZ2h0ICovIDAgMCAwIDAuNXB4IHJnYmEoMCwgMCwgMCwgMC4wNCk7XG4gIC8qIG91dGVyIGJsZW5kICovXG59XG4vKiA9PT09PT09PT09PT09PT09PSBQUklNQVJZID09PT09PT09PT09PT09PT09ICovXG4udGhlbWUtYnV0dG9uX19wcmltYXJ5LFxuLnRoZW1lLWJ1dHRvbl9fcHJpbWFyeS0tbWVkaXVtLFxuLnRoZW1lLWJ1dHRvbl9fcHJpbWFyeS0tbGFyZ2UsXG4udGhlbWUtYnV0dG9uX19wcmltYXJ5LS1zdHJldGNoIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzhlOGU4ZTtcbiAgY29sb3I6ICNmZmZmZmY7XG4gIC8qIFNvZnRlciBib3JkZXIgdHVuZWQgZm9yIGRhcmtlciBiZyAqL1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTgpO1xuICAvKiBBZGp1c3RlZCBhbnRpLWFsaWFzaW5nICovXG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KSwgLyogcmVkdWNlZCBoaWdobGlnaHQgKGRhcmtlciBiZykgKi8gMCAwIDAgMC41cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbiAgLyogc2xpZ2h0bHkgc3Ryb25nZXIgb3V0ZXIgYmxlbmQgKi9cbn1cbi8qIEhvdmVyICovXG4udGhlbWUtYnV0dG9uX19wcmltYXJ5OmhvdmVyLFxuLnRoZW1lLWJ1dHRvbl9fcHJpbWFyeS0tbWVkaXVtOmhvdmVyLFxuLnRoZW1lLWJ1dHRvbl9fcHJpbWFyeS0tbGFyZ2U6aG92ZXIsXG4udGhlbWUtYnV0dG9uX19wcmltYXJ5LS1zdHJldGNoOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgzODM4Mztcbn1cbi8qIEFjdGl2ZSAocHJlc3NlZCkgKi9cbi50aGVtZS1idXR0b25fX3ByaW1hcnk6YWN0aXZlLFxuLnRoZW1lLWJ1dHRvbl9fcHJpbWFyeS0tbWVkaXVtOmFjdGl2ZSxcbi50aGVtZS1idXR0b25fX3ByaW1hcnktLWxhcmdlOmFjdGl2ZSxcbi50aGVtZS1idXR0b25fX3ByaW1hcnktLXN0cmV0Y2g6YWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzdhN2E3YTtcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4yNSksIC8qIGRlZXBlciBwcmVzcyAqLyAwIDAgMCAwLjVweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG59XG4vKiBTaXplcyAqL1xuLnRoZW1lLWJ1dHRvbl9fcHJpbWFyeS0tbWVkaXVtIHtcbiAgcGFkZGluZzogMTBweCAxOHB4O1xuICBmb250LXNpemU6IDE1cHg7XG59XG4udGhlbWUtYnV0dG9uX19wcmltYXJ5LS1sYXJnZSB7XG4gIHBhZGRpbmc6IDEycHggMjJweDtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xufVxuLnRoZW1lLWJ1dHRvbl9fcHJpbWFyeS0tc3RyZXRjaCB7XG4gIHBhZGRpbmc6IDEwcHggMThweDtcbiAgZm9udC1zaXplOiAxNXB4O1xuICB3aWR0aDogMTAwJTtcbn1cbi8qID09PT09PT09PT09PT09PT09IFNFQ09OREFSWSA9PT09PT09PT09PT09PT09PSAqL1xuLnRoZW1lLWJ1dHRvbl9fc2Vjb25kYXJ5LFxuLnRoZW1lLWJ1dHRvbl9fc2Vjb25kYXJ5LS1tZWRpdW0sXG4udGhlbWUtYnV0dG9uX19zZWNvbmRhcnktLWxhcmdlLFxuLnRoZW1lLWJ1dHRvbl9fc2Vjb25kYXJ5LS1zdHJldGNoIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGNvbG9yOiAjNGE0YTRhO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpLCAwIDAgMCAwLjVweCByZ2JhKDAsIDAsIDAsIDAuMDMpO1xufVxuLyogSG92ZXIgKi9cbi50aGVtZS1idXR0b25fX3NlY29uZGFyeTpob3Zlcixcbi50aGVtZS1idXR0b25fX3NlY29uZGFyeS0tbWVkaXVtOmhvdmVyLFxuLnRoZW1lLWJ1dHRvbl9fc2Vjb25kYXJ5LS1sYXJnZTpob3Zlcixcbi50aGVtZS1idXR0b25fX3NlY29uZGFyeS0tc3RyZXRjaDpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNGY0ZjQ7XG59XG4vKiBBY3RpdmUgKi9cbi50aGVtZS1idXR0b25fX3NlY29uZGFyeTphY3RpdmUsXG4udGhlbWUtYnV0dG9uX19zZWNvbmRhcnktLW1lZGl1bTphY3RpdmUsXG4udGhlbWUtYnV0dG9uX19zZWNvbmRhcnktLWxhcmdlOmFjdGl2ZSxcbi50aGVtZS1idXR0b25fX3NlY29uZGFyeS0tc3RyZXRjaDphY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmNGY0O1xuICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA1KSwgMCAwIDAgMC41cHggcmdiYSgwLCAwLCAwLCAwLjAzKTtcbn1cbi8qIFNpemVzICovXG4udGhlbWUtYnV0dG9uX19zZWNvbmRhcnktLW1lZGl1bSB7XG4gIHBhZGRpbmc6IDEwcHggMThweDtcbiAgZm9udC1zaXplOiAxNXB4O1xufVxuLnRoZW1lLWJ1dHRvbl9fc2Vjb25kYXJ5LS1sYXJnZSB7XG4gIHBhZGRpbmc6IDEycHggMjJweDtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xufVxuLnRoZW1lLWJ1dHRvbl9fc2Vjb25kYXJ5LS1zdHJldGNoIHtcbiAgcGFkZGluZzogMTJweCAyMnB4O1xuICBmb250LXNpemU6IDE2cHg7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIHdpZHRoOiAxMDAlO1xufVxuLyogPT09PT09PT09PT09PT09PT0gVEhJUkQgPT09PT09PT09PT09PT09PT0gKi9cbi50aGVtZS1idXR0b25fX3RoaXJkLFxuLnRoZW1lLWJ1dHRvbl9fdGhpcmQtLW1lZGl1bSxcbi50aGVtZS1idXR0b25fX3RoaXJkLS1sYXJnZSB7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBjb2xvcjogIzZhNmE2YTtcbiAgYm9yZGVyOiBub25lO1xuICBib3gtc2hhZG93OiBub25lO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIHBhZGRpbmctcmlnaHQ6IDA7XG59XG4vKiBIb3ZlciAqL1xuLnRoZW1lLWJ1dHRvbl9fdGhpcmQ6aG92ZXIge1xuICBjb2xvcjogIzNhM2EzYTtcbn1cbi8qIEFjdGl2ZSAqL1xuLnRoZW1lLWJ1dHRvbl9fdGhpcmQ6YWN0aXZlIHtcbiAgY29sb3I6ICMxYTFjMjE7XG59XG4vKiBTaXplcyAqL1xuLnRoZW1lLWJ1dHRvbl9fdGhpcmQtLW1lZGl1bSB7XG4gIGZvbnQtc2l6ZTogMTVweDtcbn1cbi50aGVtZS1idXR0b25fX3RoaXJkLS1sYXJnZSB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbn1cbi8qID09PT09PT09PT09PT09PT09IERJU0FCTEVEID09PT09PT09PT09PT09PT09ICovXG5idXR0b246ZGlzYWJsZWQsXG5idXR0b24uZGlzYWJsZWQsXG5idXR0b24uZGlzYWJsZWQ6aG92ZXIsXG5idXR0b246ZGlzYWJsZWQ6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmMmYwO1xuICBjb2xvcjogI2JjYmNiYztcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cbi8qIEdob3N0IGRpc2FibGVkICovXG4udGhlbWUtYnV0dG9uX190aGlyZDpkaXNhYmxlZCxcbi50aGVtZS1idXR0b25fX3RoaXJkLmRpc2FibGVkIHtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGNvbG9yOiAjYzhjOGM4O1xuICBib3gtc2hhZG93OiBub25lO1xufVxuXG4vKiB0b3Bkb2NcbiAgbmFtZTogQ2FsZW5kYXJcbiAgZGVzY3JpcHRpb246IFN0eWxpbmcgZm9yIGNhbGVuZGFyXG4gIG1vZGlmaWVyczpcbiAgbWFya3VwOlxuICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS1jYWxlbmRhclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGhlbWUtY2FsZW5kYXJfX2hlYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoZW1lLWNhbGVuZGFyX19tb250aC1zZWxlY3RvclwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0aGVtZS1jYWxlbmRhcl9fYXJyb3dcIiBpZD1cInByZXZNb250aFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUgNUw4IDEyTDE1IDE5XCIvPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhlbWUtY2FsZW5kYXJfX21vbnRoXCIgaWQ9XCJtb250aExhYmVsXCI+QXByaWwgMjAyNjwvZGl2PlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0aGVtZS1jYWxlbmRhcl9fYXJyb3dcIiBpZD1cIm5leHRNb250aFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOSA1TDE2IDEyTDkgMTlcIi8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhlbWUtY2FsZW5kYXJfX3NlbGVjdGVkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gaWQ9XCJzZWxlY3RlZERhdGVcIj4yMDI2LzA0LzIzPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0aGVtZS1jYWxlbmRhcl9fY2xvc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUgNUwxOSAxOU0xOSA1TDUgMTlcIiBzdHJva2U9XCIjMTExXCIgc3Ryb2tlLXdpZHRoPVwiMi41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS1jYWxlbmRhcl9fd2Vla2RheXNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS1jYWxlbmRhcl9fd2Vla2RheVwiPk1vbjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoZW1lLWNhbGVuZGFyX193ZWVrZGF5XCI+VHVlPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhlbWUtY2FsZW5kYXJfX3dlZWtkYXlcIj5XZWQ8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS1jYWxlbmRhcl9fd2Vla2RheVwiPlRodTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoZW1lLWNhbGVuZGFyX193ZWVrZGF5XCI+RnJpPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhlbWUtY2FsZW5kYXJfX3dlZWtkYXlcIj5TYXQ8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS1jYWxlbmRhcl9fd2Vla2RheVwiPlN1bjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRoZW1lLWNhbGVuZGFyX19ncmlkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhlbWUtY2FsZW5kYXJfX2RheSB0aGVtZS1jYWxlbmRhcl9fZGF5LS11bmF2YWlsYWJsZSB0aGVtZS1jYWxlbmRhcl9fZGF5LS1vdXRzaWRlXCI+MzA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS1jYWxlbmRhcl9fZGF5IHRoZW1lLWNhbGVuZGFyX19kYXktLXVuYXZhaWxhYmxlIHRoZW1lLWNhbGVuZGFyX19kYXktLW91dHNpZGVcIj4zMTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoZW1lLWNhbGVuZGFyX19kYXkgdGhlbWUtY2FsZW5kYXJfX2RheS0tdW5hdmFpbGFibGVcIj4xPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhlbWUtY2FsZW5kYXJfX2RheSB0aGVtZS1jYWxlbmRhcl9fZGF5LS11bmF2YWlsYWJsZVwiPjI8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS1jYWxlbmRhcl9fZGF5IHRoZW1lLWNhbGVuZGFyX19kYXktLXVuYXZhaWxhYmxlXCI+MzwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoZW1lLWNhbGVuZGFyX19kYXkgdGhlbWUtY2FsZW5kYXJfX2RheS0tdW5hdmFpbGFibGVcIj40PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhlbWUtY2FsZW5kYXJfX2RheSB0aGVtZS1jYWxlbmRhcl9fZGF5LS11bmF2YWlsYWJsZVwiPjU8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS1jYWxlbmRhcl9fZGF5IHRoZW1lLWNhbGVuZGFyX19kYXktLXVuYXZhaWxhYmxlXCI+NjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoZW1lLWNhbGVuZGFyX19kYXkgdGhlbWUtY2FsZW5kYXJfX2RheS0tYXZhaWxhYmxlIHRoZW1lLWNhbGVuZGFyX19kYXktLXRvZGF5IHRoZW1lLWNhbGVuZGFyX19kYXktLXNlbGVjdGVkXCI+NyBUb2RheTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoZW1lLWNhbGVuZGFyX19kYXkgdGhlbWUtY2FsZW5kYXJfX2RheS0tYXZhaWxhYmxlXCI+ODwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoZW1lLWNhbGVuZGFyX19kYXkgdGhlbWUtY2FsZW5kYXJfX2RheS0tcGFydGlhbFwiPjk8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS1jYWxlbmRhcl9fZGF5IHRoZW1lLWNhbGVuZGFyX19kYXktLWF2YWlsYWJsZVwiPjEwPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhlbWUtY2FsZW5kYXJfX2RheSB0aGVtZS1jYWxlbmRhcl9fZGF5LS11bmF2YWlsYWJsZVwiPjExPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhlbWUtY2FsZW5kYXJfX2RheSB0aGVtZS1jYWxlbmRhcl9fZGF5LS11bmF2YWlsYWJsZVwiPjEyPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhlbWUtY2FsZW5kYXJfX2RheSB0aGVtZS1jYWxlbmRhcl9fZGF5LS1wYXJ0aWFsXCI+MTM8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS1jYWxlbmRhcl9fZGF5IHRoZW1lLWNhbGVuZGFyX19kYXktLXBhcnRpYWxcIj4xNDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoZW1lLWNhbGVuZGFyX19kYXkgdGhlbWUtY2FsZW5kYXJfX2RheS0tcGFydGlhbFwiPjE1PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhlbWUtY2FsZW5kYXJfX2RheSB0aGVtZS1jYWxlbmRhcl9fZGF5LS1hdmFpbGFibGVcIj4xNjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoZW1lLWNhbGVuZGFyX19kYXkgdGhlbWUtY2FsZW5kYXJfX2RheS0tcGFydGlhbFwiPjE3PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhlbWUtY2FsZW5kYXJfX2RheSB0aGVtZS1jYWxlbmRhcl9fZGF5LS11bmF2YWlsYWJsZVwiPjE4PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhlbWUtY2FsZW5kYXJfX2RheSB0aGVtZS1jYWxlbmRhcl9fZGF5LS11bmF2YWlsYWJsZVwiPjE5PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhlbWUtY2FsZW5kYXJfX2RheSB0aGVtZS1jYWxlbmRhcl9fZGF5LS1hdmFpbGFibGVcIj4yMDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoZW1lLWNhbGVuZGFyX19kYXkgdGhlbWUtY2FsZW5kYXJfX2RheS0tYXZhaWxhYmxlXCI+MjE8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS1jYWxlbmRhcl9fZGF5IHRoZW1lLWNhbGVuZGFyX19kYXktLXBhcnRpYWxcIj4yMjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoZW1lLWNhbGVuZGFyX19kYXkgdGhlbWUtY2FsZW5kYXJfX2RheS0tcGFydGlhbFwiPjIzPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhlbWUtY2FsZW5kYXJfX2RheSB0aGVtZS1jYWxlbmRhcl9fZGF5LS1hdmFpbGFibGVcIj4yNDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoZW1lLWNhbGVuZGFyX19kYXkgdGhlbWUtY2FsZW5kYXJfX2RheS0tdW5hdmFpbGFibGVcIj4yNTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoZW1lLWNhbGVuZGFyX19kYXkgdGhlbWUtY2FsZW5kYXJfX2RheS0tdW5hdmFpbGFibGVcIj4yNjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoZW1lLWNhbGVuZGFyX19kYXkgdGhlbWUtY2FsZW5kYXJfX2RheS0tcGFydGlhbFwiPjI3PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhlbWUtY2FsZW5kYXJfX2RheSB0aGVtZS1jYWxlbmRhcl9fZGF5LS1wYXJ0aWFsXCI+Mjg8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS1jYWxlbmRhcl9fZGF5IHRoZW1lLWNhbGVuZGFyX19kYXktLWF2YWlsYWJsZVwiPjI5PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhlbWUtY2FsZW5kYXJfX2RheSB0aGVtZS1jYWxlbmRhcl9fZGF5LS1hdmFpbGFibGVcIj4zMDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoZW1lLWNhbGVuZGFyX19kYXkgdGhlbWUtY2FsZW5kYXJfX2RheS0tdW5hdmFpbGFibGUgdGhlbWUtY2FsZW5kYXJfX2RheS0tb3V0c2lkZVwiPjE8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS1jYWxlbmRhcl9fZGF5IHRoZW1lLWNhbGVuZGFyX19kYXktLXVuYXZhaWxhYmxlIHRoZW1lLWNhbGVuZGFyX19kYXktLW91dHNpZGVcIj4yPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhlbWUtY2FsZW5kYXJfX2RheSB0aGVtZS1jYWxlbmRhcl9fZGF5LS11bmF2YWlsYWJsZSB0aGVtZS1jYWxlbmRhcl9fZGF5LS1vdXRzaWRlXCI+MzwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRoZW1lLWNhbGVuZGFyX19sZWdlbmRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS1jYWxlbmRhcl9fbGVnZW5kLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhlbWUtY2FsZW5kYXJfX2xlZ2VuZC1ib3ggbGVnZW5kLXVuYXZhaWxhYmxlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPHNwYW4+VW5hdmFpbGFibGU8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS1jYWxlbmRhcl9fbGVnZW5kLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhlbWUtY2FsZW5kYXJfX2xlZ2VuZC1ib3ggbGVnZW5kLWF2YWlsYWJsZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuPkF2YWlsYWJsZTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoZW1lLWNhbGVuZGFyX19sZWdlbmQtaXRlbVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS1jYWxlbmRhcl9fbGVnZW5kLWJveCBsZWdlbmQtcGFydGlhbFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuPlBhcnRpYWw8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS1jYWxlbmRhcl9fbm90ZXNcIj5cbiAgICAgICAgICAgIDxkaXY+Tm90ZSwgUGFydGlhbCBtZWFucyBzb21lIHNsb3RzIGFyZSBhdmFpbGFibGUuPC9kaXY+XG4gICAgICAgICAgICA8ZGl2PkNsaWNrIG9uIGEgZGF5IHRvIHZpZXcgYXZhaWxhYmxlIHNsb3RzLjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8c2NyaXB0PlxuICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudGhlbWUtY2FsZW5kYXJfX2RheScpLmZvckVhY2goZGF5ID0+IHtcbiAgICAgICAgICAgIGlmIChkYXkuY2xhc3NOYW1lLmluZGV4T2YoXCJ1bmF2YWlsYWJsZVwiKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBkYXkuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG5cbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKCcudGhlbWUtY2FsZW5kYXJfX2RheS0tc2VsZWN0ZWQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goc2VsZWN0ZWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLmNsYXNzTGlzdC5yZW1vdmUoJ3RoZW1lLWNhbGVuZGFyX19kYXktLXNlbGVjdGVkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICBkYXkuY2xhc3NMaXN0LmFkZCgndGhlbWUtY2FsZW5kYXJfX2RheS0tc2VsZWN0ZWQnKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgPC9zY3JpcHQ+XG4gIGV4YW1wbGU6XG4gIHRhZ3M6XG4qL1xuLnRoZW1lLWNhbGVuZGFyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQ6ICNmNGY0ZjQ7XG4gIGJvcmRlci1yYWRpdXM6IDE4cHg7XG4gIHBhZGRpbmc6IDI0cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4wNSk7XG59XG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBIRUFERVJcbj09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi50aGVtZS1jYWxlbmRhcl9faGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW4tYm90dG9tOiAyOHB4O1xuICBnYXA6IDE2cHg7XG59XG4vKiBNb250aCBzZWxlY3RvciAqL1xuLnRoZW1lLWNhbGVuZGFyX19tb250aC1zZWxlY3RvciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMjBweDtcbiAgYmFja2dyb3VuZDogI2RkZGRkZDtcbiAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgcGFkZGluZzogMTRweCAyMnB4O1xuICBtaW4td2lkdGg6IDIzMHB4O1xufVxuLnRoZW1lLWNhbGVuZGFyX19tb250aCB7XG4gIGZvbnQtc2l6ZTogMjRweDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMnB4O1xuICBjb2xvcjogIzExMTExMTtcbn1cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEFSUk9XU1xuPT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnRoZW1lLWNhbGVuZGFyX19hcnJvdyB7XG4gIHdpZHRoOiAyNHB4O1xuICBoZWlnaHQ6IDI0cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4udGhlbWUtY2FsZW5kYXJfX2Fycm93IHN2ZyB7XG4gIHdpZHRoOiAyNHB4O1xuICBoZWlnaHQ6IDI0cHg7XG59XG4udGhlbWUtY2FsZW5kYXJfX2Fycm93IHBhdGgge1xuICBzdHJva2U6ICMxMTExMTE7XG4gIHN0cm9rZS13aWR0aDogMi41O1xuICBzdHJva2UtbGluZWNhcDogcm91bmQ7XG4gIHN0cm9rZS1saW5lam9pbjogcm91bmQ7XG59XG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBTRUxFQ1RFRCBEQVRFXG49PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4udGhlbWUtY2FsZW5kYXJfX3NlbGVjdGVkIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAxOHB4O1xuICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICBwYWRkaW5nOiAxMnB4IDE4cHg7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgY29sb3I6ICMxMTExMTE7XG59XG4udGhlbWUtY2FsZW5kYXJfX2Nsb3NlIHtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyOiBub25lO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLnRoZW1lLWNhbGVuZGFyX19jbG9zZSBzdmcge1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xufVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgV0VFS0RBWSBIRUFERVJcbj09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi50aGVtZS1jYWxlbmRhcl9fd2Vla2RheXMge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg3LCAxZnIpO1xuICBnYXA6IDEycHg7XG4gIG1hcmdpbi1ib3R0b206IDEycHg7XG59XG4udGhlbWUtY2FsZW5kYXJfX3dlZWtkYXkge1xuICBwYWRkaW5nOiA4cHggMDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXNpemU6IDE4cHg7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGNvbG9yOiAjMTExMTExO1xufVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgR1JJRFxuPT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnRoZW1lLWNhbGVuZGFyX19ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNywgMWZyKTtcbiAgZ2FwOiAxMnB4O1xufVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgREFZIENFTExcbj09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi50aGVtZS1jYWxlbmRhcl9fZGF5IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBtaW4taGVpZ2h0OiA4NnB4O1xuICBwYWRkaW5nOiAxOHB4IDE2cHg7XG4gIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gIGJvcmRlci1yYWRpdXM6IDE0cHg7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgY29sb3I6ICMxMTExMTE7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC4xNXMgZWFzZTtcbn1cbi50aGVtZS1jYWxlbmRhcl9fZGF5OmhvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xufVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgU0VMRUNURURcbj09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi50aGVtZS1jYWxlbmRhcl9fZGF5LS1zZWxlY3RlZCB7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDJweCAjMTExMTExO1xufVxuLnRoZW1lLWNhbGVuZGFyX19kYXktLXNlbGVjdGVkOmhvdmVyIHtcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMnB4ICMxMTExMTE7XG59XG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBTVEFURVNcbj09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qIHVuYXZhaWxhYmxlICovXG4udGhlbWUtY2FsZW5kYXJfX2RheS0tdW5hdmFpbGFibGUge1xuICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICBjb2xvcjogIzhhOGE4YTtcbn1cbi8qIGF2YWlsYWJsZSAqL1xuLnRoZW1lLWNhbGVuZGFyX19kYXktLWF2YWlsYWJsZSB7XG4gIGJhY2tncm91bmQ6ICNkZGRkZGQ7XG4gIGNvbG9yOiAjMTExMTExO1xuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLyogcGFydGlhbCAqL1xuLnRoZW1lLWNhbGVuZGFyX19kYXktLXBhcnRpYWwge1xuICBiYWNrZ3JvdW5kOiAjYmFiYWJhO1xuICBjb2xvcjogIzExMTExMTtcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cbi8qIHRvZGF5ICovXG4udGhlbWUtY2FsZW5kYXJfX2RheS0tdG9kYXkge1xuICBmb250LXdlaWdodDogNzAwO1xufVxuLyogb3V0c2lkZSBtb250aCAqL1xuLnRoZW1lLWNhbGVuZGFyX19kYXktLW91dHNpZGUge1xuICBjb2xvcjogIzhhOGE4YTtcbn1cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIExFR0VORFxuPT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnRoZW1lLWNhbGVuZGFyX19sZWdlbmQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGdhcDogNDBweDtcbiAgbWFyZ2luLXRvcDogMzZweDtcbn1cbi50aGVtZS1jYWxlbmRhcl9fbGVnZW5kLWl0ZW0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDEycHg7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgY29sb3I6ICM0YTRhNGE7XG59XG4udGhlbWUtY2FsZW5kYXJfX2xlZ2VuZC1ib3gge1xuICB3aWR0aDogMzRweDtcbiAgaGVpZ2h0OiAzNHB4O1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xufVxuLmxlZ2VuZC11bmF2YWlsYWJsZSB7XG4gIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4wNSk7XG59XG4ubGVnZW5kLWF2YWlsYWJsZSB7XG4gIGJhY2tncm91bmQ6ICNkZGRkZGQ7XG59XG4ubGVnZW5kLXBhcnRpYWwge1xuICBiYWNrZ3JvdW5kOiAjYmFiYWJhO1xufVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgTk9URVNcbj09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi50aGVtZS1jYWxlbmRhcl9fbm90ZXMge1xuICBtYXJnaW4tdG9wOiAyOHB4O1xuICBmb250LXNpemU6IDE1cHg7XG4gIGxpbmUtaGVpZ2h0OiAxLjg7XG4gIGNvbG9yOiAjNmE2YTZhO1xufVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgUkVTUE9OU0lWRVxuPT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDkwMHB4KSB7XG4gIGJvZHkge1xuICAgIHBhZGRpbmc6IDE2cHg7XG4gIH1cbiAgLnRoZW1lLWNhbGVuZGFyX19kYXkge1xuICAgIG1pbi1oZWlnaHQ6IDcycHg7XG4gICAgcGFkZGluZzogMTJweDtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gIH1cbiAgLnRoZW1lLWNhbGVuZGFyX19tb250aCB7XG4gICAgZm9udC1zaXplOiAyMHB4O1xuICB9XG4gIC50aGVtZS1jYWxlbmRhcl9fd2Vla2RheSB7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICB9XG59XG5AbWVkaWEgKG1heC13aWR0aDogNjQwcHgpIHtcbiAgLnRoZW1lLWNhbGVuZGFyIHtcbiAgICBwYWRkaW5nOiAxNHB4O1xuICB9XG4gIC50aGVtZS1jYWxlbmRhcl9faGVhZGVyIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICB9XG4gIC50aGVtZS1jYWxlbmRhcl9fbW9udGgtc2VsZWN0b3Ige1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB9XG4gIC50aGVtZS1jYWxlbmRhcl9fc2VsZWN0ZWQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgfVxuICAudGhlbWUtY2FsZW5kYXJfX2dyaWQge1xuICAgIGdhcDogOHB4O1xuICB9XG4gIC50aGVtZS1jYWxlbmRhcl9fZGF5IHtcbiAgICBtaW4taGVpZ2h0OiA1OHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICB9XG4gIC50aGVtZS1jYWxlbmRhcl9fd2Vla2RheSB7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICB9XG59XG5cblxuLyogdG9wZG9jXG4gIG5hbWU6IERyb3Bkb3duXG4gIGRlc2NyaXB0aW9uOiBTdHlsaW5nIGZvciBkcm9wZG93bnMvc2VsZWN0IGJveFxuICBtb2RpZmllcnM6XG4gICAgOmFjdGl2ZTogQWN0aXZlIHN0YXRlXG4gICAgLmlzLWFjdGl2ZTogU2ltdWxhdGVzIGFuIGFjdGl2ZSBzdGF0ZSBvbiBtb2JpbGUgZGV2aWNlc1xuICAgIDpkaXNhYmxlZDogRGlzYWJsZWQgc3RhdGVcbiAgICAuaXMtZGlzYWJsZWQ6IFNpbXVsYXRlcyBhIGRpc2FibGVkIHN0YXRlIG9uIG1vYmlsZSBkZXZpY2VzXG4gIG1hcmt1cDpcbiAgICA8c2VsZWN0IGNsYXNzPVwidGhlbWUtZHJvcGRvd24gaXMtYWN0aXZlXCI+XG4gICAgICAgIDxvcHRpb24+dGVzdDwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uPnRlc3Q8L29wdGlvbj5cbiAgICAgICAgPG9wdGlvbj50ZXN0PC9vcHRpb24+XG4gICAgPC9zZWxlY3Q+XG4gICAgPHNlbGVjdCBjbGFzcz1cInRoZW1lLWRyb3Bkb3duIGlzLWRpc2FibGVkXCI+XG4gICAgICAgIDxvcHRpb24+dGVzdDwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uPnRlc3Q8L29wdGlvbj5cbiAgICAgICAgPG9wdGlvbj50ZXN0PC9vcHRpb24+XG4gICAgPC9zZWxlY3Q+XG4gICAgPHNlbGVjdCBjbGFzcz1cInRoZW1lLWRyb3Bkb3duXCIgZGlzYWJsZWQ+XG4gICAgICAgIDxvcHRpb24+dGVzdDwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uPnRlc3Q8L29wdGlvbj5cbiAgICAgICAgPG9wdGlvbj50ZXN0PC9vcHRpb24+XG4gICAgPC9zZWxlY3Q+XG4gIGV4YW1wbGU6XG4gIHRhZ3M6XG5cbiovXG4udGhlbWUtZHJvcGRvd24ge1xuICBhcHBlYXJhbmNlOiBub25lO1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbiAgd2lkdGg6IDIwMHB4O1xuICBwYWRkaW5nOiAxMHB4IDQwcHggMTBweCAxNHB4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtZmFtaWx5OiBzeXN0ZW0tdWksIHNhbnMtc2VyaWY7XG4gIGNvbG9yOiAjNjY2O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmNGY0O1xuICBib3JkZXI6IDFweCBzb2xpZCAjYmFiYWJhO1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIG91dGxpbmU6IG5vbmU7XG4gIC8qIGNoZXZyb24gKi9cbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB3aWR0aD0nMjAnIGhlaWdodD0nMjAnIHZpZXdCb3g9JzAgMCAyMCAyMCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48cG9seWxpbmUgcG9pbnRzPSc1LDcgMTAsMTIgMTUsNycgZmlsbD0nbm9uZScgc3Ryb2tlPSclMjM2NjYnIHN0cm9rZS13aWR0aD0nMS44JyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnLz48L3N2Zz5cIik7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IDEycHggY2VudGVyO1xuICBiYWNrZ3JvdW5kLXNpemU6IDE2cHg7XG59XG4vKiBIb3ZlciAqL1xuLnRoZW1lLWRyb3Bkb3duOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UzZTNlMztcbn1cbi8qIEFjdGl2ZSAoZGVza3RvcCkgKi9cbi50aGVtZS1kcm9wZG93bjphY3RpdmUsXG4udGhlbWUtZHJvcGRvd24uaXMtYWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RlZGVkZTtcbiAgYm9yZGVyLWNvbG9yOiAjYmRiZGJkO1xufVxuLyogRm9jdXMgKi9cbi50aGVtZS1kcm9wZG93bjpmb2N1cyB7XG4gIGJvcmRlci1jb2xvcjogIzk5OTtcbn1cbi8qIERpc2FibGVkIChuYXRpdmUgKyBzaW11bGF0ZWQpICovXG4udGhlbWUtZHJvcGRvd246ZGlzYWJsZWQsXG4udGhlbWUtZHJvcGRvd24uZGlzYWJsZWQsXG4udGhlbWUtZHJvcGRvd24uaXMtZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmM2YzO1xuICBjb2xvcjogI2FhYTtcbiAgYm9yZGVyLWNvbG9yOiAjZGRkO1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuLyogUmVtb3ZlIGRlZmF1bHQgYXJyb3cgaW4gSUUgKi9cbi50aGVtZS1kcm9wZG93bjo6LW1zLWV4cGFuZCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qIHRvcGRvY1xuICBuYW1lOiBGb3Jtc1xuICBkZXNjcmlwdGlvbjogRm9ybSBzdHlsZXNcbiAgbW9kaWZpZXJzOlxuICBtYXJrdXA6XG4gICAgPGZvcm0+XG4gICAgICA8ZGl2IGNsYXNzPVwidGhlbWUtZm9ybS1sYWJlbFwiPkxhYmVsIGFib3ZlPC9kaXY+PGlucHV0IGNsYXNzPVwidGhlbWUtZm9ybS1pbnB1dFwiIHR5cGU9XCJ0ZXh0XCI+PC9pbnB1dD5cbiAgICAgIDwvYnI+XG4gICAgICA8L2JyPlxuICAgICAgPGRpdiBjbGFzcz1cInRoZW1lLWZvcm0tbGFiZWwtaW5saW5lXCI+TGFiZWwgaW5saW5lPC9kaXY+PGlucHV0IGNsYXNzPVwidGhlbWUtZm9ybS1pbnB1dFwiIHR5cGU9XCJ0ZXh0XCI+PC9pbnB1dD5cbiAgICAgIDwvYnI+XG4gICAgICA8L2JyPlxuICAgICAgPGRpdiBjbGFzcz1cInRoZW1lLWZvcm0tZmllbGRcIj5Ob3JtYWwgc3RhdGUgcGFzc3dvcmQ8L2Rpdj48aW5wdXQgY2xhc3M9XCJ0aGVtZS1mb3JtLWlucHV0XCIgdHlwZT1cInBhc3N3b3JkXCI+PC9pbnB1dD5cbiAgICAgIDwvYnI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGhlbWUtZm9ybS1maWVsZFwiPkRpc2FibGVkIHN0YXRlIHBhc3N3b3JkPC9kaXY+PGlucHV0IGNsYXNzPVwidGhlbWUtZm9ybS1pbnB1dFwiIGRpc2FibGVkIHR5cGU9XCJwYXNzd29yZFwiPjwvaW5wdXQ+XG4gICAgICA8L2JyPlxuICAgICAgPC9icj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS1mb3JtLWxhYmVsXCI+SW5wdXQgd2l0aCBjbGVhcjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInRoZW1lLWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRoZW1lLWZvcm0taW5wdXQtd3JhcHBlclwiPlxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInRoZW1lLWZvcm0taW5wdXRcIiB0eXBlPVwidGV4dFwiIHZhbHVlPVwibi5rdXptaW5hK2VtckBlbnRvdWNoLmNvLmpwXCI+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ0aGVtZS1mb3JtLWNsZWFyLWJ0blwiPiZ0aW1lczs8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxicj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS1mb3JtLWxhYmVsXCI+SW5wdXQgd2l0aCBlcnJvcjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInRoZW1lLWZvcm0tZ3JvdXAgaXMtZXJyb3JcIj5cbiAgICAgICAgPGlucHV0IGNsYXNzPVwidGhlbWUtZm9ybS1pbnB1dFwiIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJFbnRlciB1c2VybmFtZSAoZW1haWwpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS1mb3JtLW1lc3NhZ2VcIj5FbWFpbCBpcyByZXF1aXJlZDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8L2JyPlxuICAgICAgPGRpdiBjbGFzcz1cInRoZW1lLWZvcm0tbGFiZWxcIj5JbnB1dCB3aXRoIGVycm9yIChmaWxsZWQpPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidGhlbWUtZm9ybS1ncm91cCBpcy1lcnJvclwiPlxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJ0aGVtZS1mb3JtLWlucHV0IGlzLWZpbGxlZFwiIHR5cGU9XCJ0ZXh0XCIgdmFsdWU9XCJuLmt1em1pbmErZW1yXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS1mb3JtLW1lc3NhZ2VcIj5JbnZhbGlkIGVtYWlsIGZvcm1hdDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICAgIDxzY3JpcHQ+XG4gICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudGhlbWUtZm9ybS1pbnB1dC13cmFwcGVyJykuZm9yRWFjaCh3cmFwcGVyID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSB3cmFwcGVyLnF1ZXJ5U2VsZWN0b3IoJy50aGVtZS1mb3JtLWlucHV0Jyk7XG4gICAgICAgIGNvbnN0IGJ1dHRvbiA9IHdyYXBwZXIucXVlcnlTZWxlY3RvcignLnRoZW1lLWZvcm0tY2xlYXItYnRuJyk7XG5cbiAgICAgICAgY29uc3QgdG9nZ2xlID0gKCkgPT4ge1xuICAgICAgICAgIHdyYXBwZXIuY2xhc3NMaXN0LnRvZ2dsZSgnaGFzLXZhbHVlJywgaW5wdXQudmFsdWUubGVuZ3RoID4gMCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gSW5pdGlhbCBzdGF0ZVxuICAgICAgICB0b2dnbGUoKTtcblxuICAgICAgICAvLyBPbiBpbnB1dFxuICAgICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIHRvZ2dsZSk7XG5cbiAgICAgICAgLy8gQ2xlYXIgYWN0aW9uXG4gICAgICAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgICBpbnB1dC52YWx1ZSA9ICcnO1xuICAgICAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgICAgICAgdG9nZ2xlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgPC9zY3JpcHQ+XG4gIGV4YW1wbGU6XG4gIHRhZ3M6XG5cbiovXG4vKiBCYXNlICovXG4udGhlbWUtZm9ybS1pbnB1dCB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDM2cHg7XG4gIHBhZGRpbmc6IDAgMTJweDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LWZhbWlseTogc3lzdGVtLXVpLCBzYW5zLXNlcmlmO1xuICBjb2xvcjogIzMzMztcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YyZjJmMjtcbiAgYm9yZGVyOiAxcHggc29saWQgI2Q2ZDZkNjtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBvdXRsaW5lOiBub25lO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xufVxuLyogUGxhY2Vob2xkZXIgKi9cbi50aGVtZS1mb3JtLWlucHV0OjpwbGFjZWhvbGRlciB7XG4gIGNvbG9yOiAjOWU5ZTllO1xufVxuLyogSG92ZXIgKi9cbi50aGVtZS1mb3JtLWlucHV0OmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VkZWRlZDtcbn1cbi8qIEZvY3VzICovXG4udGhlbWUtZm9ybS1pbnB1dDpmb2N1cyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7XG4gIGJvcmRlci1jb2xvcjogIzllOWU5ZTtcbn1cbi8qIEZpbGxlZCBzdGF0ZSAqL1xuLnRoZW1lLWZvcm0taW5wdXQuaXMtZmlsbGVkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZTllOTtcbiAgY29sb3I6ICMzMzM7XG59XG4vKiBEaXNhYmxlZCAqL1xuLnRoZW1lLWZvcm0taW5wdXQ6ZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3O1xuICBib3JkZXItY29sb3I6ICNlMmUyZTI7XG4gIGNvbG9yOiAjYjViNWI1O1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuLyogTGFiZWxzICovXG4udGhlbWUtZm9ybS1sYWJlbCB7XG4gIG1hcmdpbi1ib3R0b206IDZweDtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBjb2xvcjogIzMzMztcbn1cbi50aGVtZS1mb3JtLWxhYmVsLWlubGluZSB7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgY29sb3I6ICMzMzM7XG4gIG1hcmdpbi1yaWdodDogMTBweDtcbn1cbi8qIElubGluZSByb3cgKi9cbi5mb3JtLXJvdyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG4vKiBTZWN0aW9uIGxhYmVsIChsaWtlIFwiRGVmYXVsdFwiLCBcIkZvY3VzXCIgZXRjLikgKi9cbi50aGVtZS1mb3JtLWZpZWxkIHtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBjb2xvcjogIzMzMztcbiAgbWFyZ2luOiAxMHB4IDAgNHB4O1xufVxuLyogRXJyb3Igc3RhdGUgKi9cbi50aGVtZS1mb3JtLWdyb3VwLmlzLWVycm9yIC5mb3JtLWlucHV0IHtcbiAgYm9yZGVyLWNvbG9yOiAjZTU0ODQ4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuLyogRXJyb3IgbWVzc2FnZSAqL1xuLnRoZW1lLWZvcm0tbWVzc2FnZSB7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgY29sb3I6ICNlNTQ4NDg7XG4gIG1hcmdpbi10b3A6IDRweDtcbn1cbi8qIFdyYXBwZXIgdG8gcG9zaXRpb24gdGhlIGNsZWFyIGJ1dHRvbiAqL1xuLnRoZW1lLWZvcm0taW5wdXQtd3JhcHBlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLyogQWRkIHBhZGRpbmcgc28gdGV4dCBkb2Vzbid0IG92ZXJsYXAgdGhlIGJ1dHRvbiAqL1xuLnRoZW1lLWZvcm0taW5wdXQtd3JhcHBlciAudGhlbWUtZm9ybS1pbnB1dCB7XG4gIHBhZGRpbmctcmlnaHQ6IDM0cHg7XG59XG4vKiBDbGVhciBidXR0b24gKi9cbi50aGVtZS1mb3JtLWNsZWFyLWJ0biB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDhweDtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgd2lkdGg6IDE4cHg7XG4gIGhlaWdodDogMThweDtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkY2RjZGM7XG4gIGNvbG9yOiAjNjY2O1xuICBmb250LXNpemU6IDEycHg7XG4gIGxpbmUtaGVpZ2h0OiAxOHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgcGFkZGluZzogMDtcbiAgZGlzcGxheTogbm9uZTtcbiAgLyogaGlkZGVuIGJ5IGRlZmF1bHQgKi9cbn1cbi8qIFNob3cgd2hlbiBpbnB1dCBoYXMgY29udGVudCAqL1xuLnRoZW1lLWZvcm0taW5wdXQtd3JhcHBlci5oYXMtdmFsdWUgLnRoZW1lLWZvcm0tY2xlYXItYnRuIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG4vKiBIb3ZlciBlZmZlY3QgKi9cbi50aGVtZS1mb3JtLWNsZWFyLWJ0bjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjZmNmY2Y7XG59XG4vKiBEaXNhYmxlZCBzdGF0ZSAqL1xuLnRoZW1lLWZvcm0taW5wdXQ6ZGlzYWJsZWQgKyAudGhlbWUtZm9ybS1jbGVhci1idG4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuLyogT3B0aW9uYWw6IHN1YnRsZSBpbnNldCBmZWVsICovXG4udGhlbWUtZm9ybS1pbnB1dCB7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDMpO1xufVxuLyogT3B0aW9uYWw6IGZvY3VzIHJpbmcgKHZlcnkgc3VidGxlIGxpa2UgeW91ciBpbWFnZSkgKi9cbi50aGVtZS1mb3JtLWlucHV0OmZvY3VzIHtcbiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYmEoMCwgMCwgMCwgMC4wNCk7XG59XG5cbiosXG4qOmJlZm9yZSxcbio6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4udGhlbWUtaWNvbi1jbG9zZS0tc21hbGwge1xuICB3aWR0aDogMTBweDtcbiAgaGVpZ2h0OiAxMHB4O1xufVxuLnRoZW1lLWljb24tY2xvc2UtLW1lZGl1bSB7XG4gIHdpZHRoOiAxNXB4O1xuICBoZWlnaHQ6IDE1cHg7XG59XG4udGhlbWUtaWNvbi1jbG9zZS0tbGFyZ2Uge1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xufVxuXG5cblxuXG4vKiB0b3Bkb2NcbiAgbmFtZTogU3dpdGNoIENvbnRyb2xcbiAgZGVzY3JpcHRpb246IFN0eWxpbmcgZm9yIHN3aXRjaCBjb250cm9sXG4gIG1vZGlmaWVyczpcbiAgbWFya3VwOlxuICAgIDxwPmFjdGl2ZSBzdGF0ZTwvcD5cbiAgICA8ZGl2PlxuICAgICAgPGxhYmVsIGNsYXNzPVwidGhlbWUtc3dpdGNoXCI+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cInRoZW1lLXN3aXRjaC1pbnB1dFwiIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS1zd2l0Y2gtaGFuZGxlXCI+PC9kaXY+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICAgIDxwPmRpc2FibGVkIHN0YXRlPC9wPlxuICAgIDxkaXY+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJ0aGVtZS1zd2l0Y2gtLWRpc2FibGVkXCI+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cInRoZW1lLXN3aXRjaC1pbnB1dFwiIGRpc2FibGVkIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS1zd2l0Y2gtaGFuZGxlXCI+PC9kaXY+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICBleGFtcGxlOlxuICB0YWdzOlxuXG4qL1xuLnRoZW1lLXN3aXRjaCxcbi50aGVtZS1zd2l0Y2gtLWRpc2FibGVkIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiA0NHB4O1xuICBoZWlnaHQ6IDI0cHg7XG59XG4vKiBIaWRlIGRlZmF1bHQgY2hlY2tib3ggKi9cbi50aGVtZS1zd2l0Y2gtaW5wdXQge1xuICBvcGFjaXR5OiAwO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xufVxuLyogVHJhY2sgKi9cbi50aGVtZS1zd2l0Y2gtaGFuZGxlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldDogMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U1ZTVlNTtcbiAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4yNXMgZWFzZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLyogS25vYiAqL1xuLnRoZW1lLXN3aXRjaC1oYW5kbGU6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaGVpZ2h0OiAyMHB4O1xuICB3aWR0aDogMjBweDtcbiAgbGVmdDogMnB4O1xuICB0b3A6IDJweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBib3gtc2hhZG93OiAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMjVzIGVhc2U7XG59XG4vKiBBY3RpdmUgKGNoZWNrZWQpICovXG4udGhlbWUtc3dpdGNoLWlucHV0OmNoZWNrZWQgKyAudGhlbWUtc3dpdGNoLWhhbmRsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkMWQxZDE7XG4gIC8qIHN1YnRsZSwgbm90IGJyaWdodCBncmVlbiAqL1xufVxuLnRoZW1lLXN3aXRjaC1pbnB1dDpjaGVja2VkICsgLnRoZW1lLXN3aXRjaC1oYW5kbGU6OmJlZm9yZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMHB4KTtcbn1cbi8qIFByZXNzIChvcHRpb25hbCBzdWJ0bGUgaW50ZXJhY3Rpb24pICovXG4udGhlbWUtc3dpdGNoLWhhbmRsZTphY3RpdmU6OmJlZm9yZSB7XG4gIHdpZHRoOiAyMnB4O1xufVxuLyogRGlzYWJsZWQgc3RhdGUgKi9cbi50aGVtZS1zd2l0Y2gtLWRpc2FibGVkIHtcbiAgb3BhY2l0eTogMC41O1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuLnRoZW1lLXN3aXRjaC0tZGlzYWJsZWQgLnRoZW1lLXN3aXRjaC1oYW5kbGUge1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuLnRoZW1lLXN3aXRjaC0tZGlzYWJsZWQgLnRoZW1lLXN3aXRjaC1pbnB1dDpjaGVja2VkICsgLnRoZW1lLXN3aXRjaC1oYW5kbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkZGRkO1xufVxuXG4vKiB0b3Bkb2NcbiAgbmFtZTogVGltZVxuICBkZXNjcmlwdGlvbjogU3R5bGluZyBmb3IgdGltZSBzZWxlY3RvclxuICBtb2RpZmllcnM6XG4gIG1hcmt1cDpcbiAgICA8ZGl2IGNsYXNzPVwidGhlbWUtdGltZXNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRoZW1lLXRpbWVzX19oZWFkZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS10aW1lc19fdGl0bGVcIj5TZWxlY3QgdGltZSZjb2xvbjs8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZS10aW1lc19fc2VsZWN0ZWRcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj4xMjowMDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGhlbWUtdGltZXNfX2NsZWFyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk01IDVMMTkgMTlNMTkgNUw1IDE5XCIgc3Ryb2tlPVwiIzExMVwiIHN0cm9rZS13aWR0aD1cIjIuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGhlbWUtdGltZXNfX2xpc3RcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0aGVtZS10aW1lIHRoZW1lLXRpbWUtLXVuYXZhaWxhYmxlXCI+MTE6MDA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0aGVtZS10aW1lIHRoZW1lLXRpbWUtLXVuYXZhaWxhYmxlXCI+MTE6MzA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0aGVtZS10aW1lIHRoZW1lLXRpbWUtLWF2YWlsYWJsZSB0aGVtZS10aW1lLS1zZWxlY3RlZFwiPjEyOjAwPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGhlbWUtdGltZSB0aGVtZS10aW1lLS1hdmFpbGFibGVcIj4xMjozMDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRoZW1lLXRpbWUgdGhlbWUtdGltZS0tYXZhaWxhYmxlXCI+MTM6MDA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0aGVtZS10aW1lIHRoZW1lLXRpbWUtLXBhcnRpYWxcIj4xMzozMDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRoZW1lLXRpbWUgdGhlbWUtdGltZS0tcGFydGlhbFwiPjE0OjAwPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGhlbWUtdGltZSB0aGVtZS10aW1lLS1wYXJ0aWFsXCI+MTQ6MzA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0aGVtZS10aW1lIHRoZW1lLXRpbWUtLWF2YWlsYWJsZVwiPjE1OjAwPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGhlbWUtdGltZSB0aGVtZS10aW1lLS1hdmFpbGFibGVcIj4xNTozMDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRoZW1lLXRpbWUgdGhlbWUtdGltZS0tcGFydGlhbFwiPjE2OjAwPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGhlbWUtdGltZSB0aGVtZS10aW1lLS1wYXJ0aWFsXCI+MTY6MzA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0aGVtZS10aW1lIHRoZW1lLXRpbWUtLWF2YWlsYWJsZVwiPjE3OjAwPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGhlbWUtdGltZSB0aGVtZS10aW1lLS1hdmFpbGFibGVcIj4xNzozMDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRoZW1lLXRpbWUgdGhlbWUtdGltZS0tcGFydGlhbFwiPjE4OjAwPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGhlbWUtdGltZSB0aGVtZS10aW1lLS1hdmFpbGFibGVcIj4xODozMDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRoZW1lLXRpbWUgdGhlbWUtdGltZS0tYXZhaWxhYmxlXCI+MTk6MDA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0aGVtZS10aW1lIHRoZW1lLXRpbWUtLWF2YWlsYWJsZVwiPjE5OjMwPC9idXR0b24+XG4gICAgICAgICAgICA8IS0tIGV4dHJhIHJvd3MganVzdCB0byBkZW1vbnN0cmF0ZSBzY3JvbGxpbmcgLS0+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGhlbWUtdGltZSB0aGVtZS10aW1lLS1hdmFpbGFibGVcIj4yMDowMDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRoZW1lLXRpbWUgdGhlbWUtdGltZS0tYXZhaWxhYmxlXCI+MjA6MzA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0aGVtZS10aW1lIHRoZW1lLXRpbWUtLWF2YWlsYWJsZVwiPjIxOjAwPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGhlbWUtdGltZSB0aGVtZS10aW1lLS1hdmFpbGFibGVcIj4yMTozMDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8c2NyaXB0PlxuICAgICAgICBjb25zdCB0aW1lQnV0dG9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50aGVtZS10aW1lJyk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkVGltZUxhYmVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnRoZW1lLXRpbWVzX19zZWxlY3RlZCBzcGFuJyk7XG4gICAgICAgIGNvbnN0IGNsZWFyQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnRoZW1lLXRpbWVzX19jbGVhcicpO1xuXG4gICAgICAgIHRpbWVCdXR0b25zLmZvckVhY2goYnV0dG9uID0+IHtcbiAgICAgICAgICAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcblxuICAgICAgICAgICAgICAgIC8vIERvbid0IGFsbG93IHVuYXZhaWxhYmxlIHRpbWVzXG4gICAgICAgICAgICAgICAgaWYgKGJ1dHRvbi5jbGFzc0xpc3QuY29udGFpbnMoJ3RoZW1lLXRpbWUtLXVuYXZhaWxhYmxlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBleGlzdGluZyBzZWxlY3Rpb25cbiAgICAgICAgICAgICAgICBkb2N1bWVudFxuICAgICAgICAgICAgICAgICAgICAucXVlcnlTZWxlY3RvckFsbCgnLnRoZW1lLXRpbWUtLXNlbGVjdGVkJylcbiAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goc2VsZWN0ZWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQuY2xhc3NMaXN0LnJlbW92ZSgndGhlbWUtdGltZS0tc2VsZWN0ZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAvLyBBZGQgbmV3IHNlbGVjdGlvblxuICAgICAgICAgICAgICAgIGJ1dHRvbi5jbGFzc0xpc3QuYWRkKCd0aGVtZS10aW1lLS1zZWxlY3RlZCcpO1xuXG4gICAgICAgICAgICAgICAgLy8gVXBkYXRlIGhlYWRlclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkVGltZUxhYmVsLnRleHRDb250ZW50ID0gYnV0dG9uLnRleHRDb250ZW50LnRyaW0oKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBDbGVhciBzZWxlY3RlZCB0aW1lXG4gICAgICAgIGNsZWFyQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgICAgZG9jdW1lbnRcbiAgICAgICAgICAgICAgICAucXVlcnlTZWxlY3RvckFsbCgnLnRoZW1lLXRpbWUtLXNlbGVjdGVkJylcbiAgICAgICAgICAgICAgICAuZm9yRWFjaChzZWxlY3RlZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLmNsYXNzTGlzdC5yZW1vdmUoJ3RoZW1lLXRpbWUtLXNlbGVjdGVkJyk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHNlbGVjdGVkVGltZUxhYmVsLnRleHRDb250ZW50ID0gXCJcIjtcbiAgICAgICAgfSk7XG4gICAgPC9zY3JpcHQ+XG4gIGV4YW1wbGU6XG4gIHRhZ3M6XG4qL1xuLnRoZW1lLXRpbWVzIHtcbiAgYmFja2dyb3VuZDogI2Y0ZjRmNDtcbiAgYm9yZGVyLXJhZGl1czogMThweDtcbiAgcGFkZGluZzogMjBweDtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjA1KTtcbiAgaGVpZ2h0OiA2NDBweDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgSEVBREVSXG49PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi50aGVtZS10aW1lc19faGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW4tYm90dG9tOiAxOHB4O1xufVxuLnRoZW1lLXRpbWVzX190aXRsZSB7XG4gIGZvbnQtc2l6ZTogMjRweDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgY29sb3I6ICMxMTExMTE7XG59XG4vKiBTZWxlY3RlZCBmaWVsZCAqL1xuLnRoZW1lLXRpbWVzX19zZWxlY3RlZCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgbWluLXdpZHRoOiAxNjBweDtcbiAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgYm9yZGVyOiAycHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEyKTtcbiAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgcGFkZGluZzogMTBweCAxNHB4O1xuICBmb250LXNpemU6IDE4cHg7XG4gIGNvbG9yOiAjMTExMTExO1xufVxuLnRoZW1lLXRpbWVzX19jbGVhciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLnRoZW1lLXRpbWVzX19jbGVhciBzdmcge1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xufVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBMSVNUXG49PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi50aGVtZS10aW1lc19fbGlzdCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gIGdhcDogMTJweDtcbiAgZmxleDogMTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgcGFkZGluZy1yaWdodDogOHB4O1xuICBzY3JvbGxiYXItd2lkdGg6IHRoaW47XG4gIHNjcm9sbGJhci1jb2xvcjogI2JhYmFiYSAjZWFlYWVhO1xufVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBTQ1JPTExCQVJcbj09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnRoZW1lLXRpbWVzX19saXN0Ojotd2Via2l0LXNjcm9sbGJhciB7XG4gIHdpZHRoOiAxMHB4O1xufVxuLnRoZW1lLXRpbWVzX19saXN0Ojotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gIGJhY2tncm91bmQ6ICNlYWVhZWE7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbn1cbi50aGVtZS10aW1lc19fbGlzdDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICBiYWNrZ3JvdW5kOiAjYmFiYWJhO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG59XG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFRJTUUgQlVUVE9OXG49PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi50aGVtZS10aW1lIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDUycHg7XG4gIHBhZGRpbmc6IDAgMThweDtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiAxNHB4O1xuICBmb250LXNpemU6IDE4cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGNvbG9yOiAjMTExMTExO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuMTVzO1xufVxuLnRoZW1lLXRpbWU6aG92ZXIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG59XG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFNUQVRFU1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiB1bmF2YWlsYWJsZSAqL1xuLnRoZW1lLXRpbWUtLXVuYXZhaWxhYmxlIHtcbiAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgY29sb3I6ICM4YThhOGE7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDJweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xufVxuLyogYXZhaWxhYmxlICovXG4udGhlbWUtdGltZS0tYXZhaWxhYmxlIHtcbiAgYmFja2dyb3VuZDogI2RkZGRkZDtcbn1cbi8qIHBhcnRpYWwgKi9cbi50aGVtZS10aW1lLS1wYXJ0aWFsIHtcbiAgYmFja2dyb3VuZDogI2JhYmFiYTtcbn1cbi8qIHNlbGVjdGVkICovXG4udGhlbWUtdGltZS0tc2VsZWN0ZWQge1xuICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAycHggIzExMTExMTtcbn1cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgTU9CSUxFXG49PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA2NDBweCkge1xuICAudGhlbWUtdGltZXMge1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxuICAudGhlbWUtdGltZXNfX2hlYWRlciB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICBnYXA6IDE0cHg7XG4gIH1cbiAgLnRoZW1lLXRpbWVzX19zZWxlY3RlZCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbiAgLnRoZW1lLXRpbWVzX19saXN0IHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICBtYXgtaGVpZ2h0OiA0MjBweDtcbiAgfVxufVxuXG4vKiB0b3Bkb2NcbiAgbmFtZTogVGV4dHMgYW5kIHRpdGxlc1xuICBkZXNjcmlwdGlvbjogTWFqb3IgYW5kIG1pbm9yIHRpdGxlIGVsZW1lbnRzXG4gIG1vZGlmaWVyczpcbiAgbWFya3VwOlxuICAgIDwhLS0gdGl0bGUtcHJpbWFyeSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwidGl0bGUtcHJpbWFyeVwiPlByaW1hcnkgVGl0bGU8L2J1dHRvbj5cbiAgICA8IS0tIHRpdGxlLXNlY29uZGFyeSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwidGl0bGUtc2Vjb25kYXJ5XCI+U2Vjb25kYXJ5IFRpdGxlPC9idXR0b24+XG4gICAgPCEtLSB0aXRsZS10aXAgLS0+XG4gICAgPGRpdiBjbGFzcz1cInRpdGxlLXRpcFwiPlRpdGxlIFRpcDwvYnV0dG9uPlxuICBleGFtcGxlOlxuICB0YWdzOlxuXG4qL1xuLyogQmFzZSAqL1xuLnRpdGxlLXByaW1hcnkge1xuICBtYXJnaW46IDA7XG4gIGZvbnQtc2l6ZTogMzJweDtcbn1cbi50aXRsZS1zZWNvbmRhcnkge1xuICBjb2xvcjogIzY2NjtcbiAgZm9udC1zaXplOiAxNHB4O1xufVxuLnRpdGxlLXRpcCB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgY29sb3I6ICM4ODg7XG59XG4iXX0= */
