/*! Copyright (c) 2026 InfoBeans | infobeans.ai | @InfoBeans */
@charset "UTF-8";
/**
 * Components
 */
/**
 * Components
 */
@media (max-width: 768px) {
  .ib-desktop-only {
    display: none !important;
  }
}
@media (min-width: 769px) {
  .ib-mobile-only {
    display: none !important;
  }
}
@media (max-width: 768px) and (prefers-reduced-motion: no-preference) {
  .ib-m-reveal {
    opacity: 0;
    transform: translate3d(0, 24px, 0);
    transition: opacity 0.55s cubic-bezier(0.25, 0.46, 0.45, 0.94), transform 0.55s cubic-bezier(0.25, 0.46, 0.45, 0.94);
    transition-delay: var(--ib-m-reveal-delay, 0s);
    will-change: transform, opacity;
  }

  .ib-m-reveal.is-visible {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
}
@keyframes ib-arrow-slide {
  0% {
    transform: translateX(0);
    opacity: 1;
  }
  45% {
    transform: translateX(7px);
    opacity: 0;
  }
  46% {
    transform: translateX(-5px);
    opacity: 0;
  }
  100% {
    transform: translateX(0);
    opacity: 1;
  }
}
.ib-btn {
  --_bg: #ea1b3d;
  --_bg-press: #aa142d;
  --_color: #fff;
  --_border: transparent;
  --_shadow: #ffd0d8;
  position: relative;
  display: inline-flex;
  align-items: stretch;
  height: 48px;
  padding: 0;
  font-family: var(--font-heading);
  font-size: 16px;
  font-weight: 500;
  line-height: 1;
  background: transparent;
  border: none !important;
  outline: none;
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}

.ib-btn::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: var(--_shadow);
  clip-path: polygon(10px 0, 100% 0, 100% calc(100% - 10px), calc(100% - 10px) 100%, 0 100%, 0 10px);
  opacity: 0;
  transform: translate(0, 0);
  transition: opacity 0.25s cubic-bezier(0.16, 1, 0.3, 1), transform 0.25s cubic-bezier(0.16, 1, 0.3, 1);
  pointer-events: none;
}

.ib-btn__inner {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  box-sizing: border-box;
  width: 100%;
  height: 100%;
  padding: 0 22px;
  color: var(--_color);
  background: var(--_bg);
  line-height: 26px;
  letter-spacing: 0;
  text-align: center;
  text-transform: uppercase;
  clip-path: polygon(10px 0, 100% 0, 100% calc(100% - 10px), calc(100% - 10px) 100%, 0 100%, 0 10px);
  transition: background 0.25s cubic-bezier(0.16, 1, 0.3, 1), color 0.25s cubic-bezier(0.16, 1, 0.3, 1);
}

.ib-btn__inner::before {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--_border);
  clip-path: polygon(10px 0, 100% 0, 100% calc(100% - 10px), calc(100% - 10px) 100%, 0 100%, 0 10px, 10px 0, 10px 1.5px, 1.5px 10px, 1.5px calc(100% - 1.5px), calc(100% - 10px) calc(100% - 1.5px), calc(100% - 1.5px) calc(100% - 10px), calc(100% - 1.5px) 1.5px, 10px 1.5px);
  pointer-events: none;
  transition: background 0.25s cubic-bezier(0.16, 1, 0.3, 1);
}

.ib-btn__arrow {
  display: inline-flex;
  align-items: center;
  flex-shrink: 0;
  transition: transform 0.25s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.25s cubic-bezier(0.16, 1, 0.3, 1);
}

.ib-btn__arrow svg, .ib-btn__arrow.ib-icon {
  width: 14px;
  height: 14px;
}

.ib-btn:hover:not(:disabled):not([aria-disabled=true])::after {
  opacity: 1;
  transform: translate(4px, 4px);
}

.ib-btn:focus-visible .ib-btn__inner {
  background: var(--_bg-press);
}

.ib-btn:active:not(:disabled) .ib-btn__inner {
  background: var(--_bg-press);
}

.ib-btn:disabled, .ib-btn[aria-disabled=true] {
  --_bg: #a7a7b0;
  --_border: #a7a7b0;
  --_color: #fff;
  cursor: not-allowed;
  pointer-events: none;
}

.ib-btn--primary {
  --_bg: #ea1b3d;
  --_bg-press: #aa142d;
  --_color: #fff;
  --_border: transparent;
  --_shadow: #ffd0d8;
}

.ib-btn--primary-light {
  --_bg: #fff9ed;
  --_bg-press: #ffefd1;
  --_color: #676775;
  --_border: transparent;
  --_shadow: #ffd0d8;
}

.ib-btn--primary-light:disabled, .ib-btn--primary-light[aria-disabled=true] {
  --_bg: #a7a7b0;
  --_color: #fff;
}

.ib-btn--secondary {
  --_bg: transparent;
  --_bg-press: transparent;
  --_color: #ea1b3d;
  --_border: #ea1b3d;
  --_shadow: #ffd0d8;
}

.ib-btn--secondary:focus-visible {
  --_border: #aa142d;
  --_color: #aa142d;
}

.ib-btn--secondary:active:not(:disabled) {
  --_border: #aa142d;
  --_color: #aa142d;
}

.ib-btn--secondary:disabled, .ib-btn--secondary[aria-disabled=true] {
  --_bg: transparent;
  --_color: #a7a7b0;
  --_border: #a7a7b0;
}

.ib-btn--secondary-light {
  --_bg: transparent;
  --_bg-press: transparent;
  --_color: #fff;
  --_border: #fff;
  --_shadow: #ffd0d8;
}

.ib-btn--secondary-light:hover:not(:disabled):not([aria-disabled=true]) {
  --_bg: #ea1b3d;
  --_border: transparent;
}

.ib-btn--secondary-light:disabled, .ib-btn--secondary-light[aria-disabled=true] {
  --_bg: transparent;
  --_color: #a7a7b0;
  --_border: #a7a7b0;
}

.ib-btn--ghost {
  --_color: #ea1b3d;
  height: auto;
}

.ib-btn--ghost::after {
  display: none;
}

.ib-btn--ghost .ib-btn__inner {
  padding: 2px 0;
  height: auto;
  background: transparent;
  clip-path: none;
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 1.5px;
  -webkit-text-decoration-color: currentColor;
          text-decoration-color: currentColor;
  transition: color 0.25s cubic-bezier(0.16, 1, 0.3, 1), -webkit-text-decoration-color 0.25s cubic-bezier(0.16, 1, 0.3, 1);
  transition: color 0.25s cubic-bezier(0.16, 1, 0.3, 1), text-decoration-color 0.25s cubic-bezier(0.16, 1, 0.3, 1);
  transition: color 0.25s cubic-bezier(0.16, 1, 0.3, 1), text-decoration-color 0.25s cubic-bezier(0.16, 1, 0.3, 1), -webkit-text-decoration-color 0.25s cubic-bezier(0.16, 1, 0.3, 1);
}

.ib-btn--ghost .ib-btn__inner::before {
  display: none;
}

.ib-btn--ghost:focus-visible, .ib-btn--ghost:active:not(:disabled) {
  --_color: #aa142d;
}

.ib-btn--ghost:focus-visible,
.ib-btn--ghost:active:not(:disabled) {
  --_color: #aa142d;
}

.ib-btn--ghost:focus-visible .ib-btn__inner,
.ib-btn--ghost:active:not(:disabled) .ib-btn__inner {
  background: transparent !important;
}

.ib-btn--ghost:disabled, .ib-btn--ghost[aria-disabled=true] {
  --_color: #a7a7b0;
  pointer-events: none;
}

.ib-btn--with-icon:hover:not(:disabled):not([aria-disabled=true]) .ib-btn__arrow {
  animation: ib-arrow-slide 0.7s cubic-bezier(0.16, 1, 0.3, 1) infinite;
}

.ib-btn--icon-only {
  width: 48px;
}

.ib-btn--icon-only .ib-btn__inner {
  padding: 0;
}

.ib-btn--icon-only:hover:not(:disabled):not([aria-disabled=true]) .ib-btn__arrow {
  animation: ib-arrow-slide 0.7s cubic-bezier(0.16, 1, 0.3, 1) infinite;
}

@media (max-width: 768px) {
  .ib-btn {
    height: 44px;
    font-size: 15px;
  }

  .ib-btn__inner {
    padding: 0 18px;
  }

  .ib-btn__arrow svg, .ib-btn__arrow.ib-icon {
    width: 13px;
    height: 13px;
  }

  .ib-btn--icon-only {
    width: 44px;
  }

  .ib-btn--icon-only .ib-btn__inner {
    padding: 0;
  }
}
/* ==========================================
   SVG Sprite icon base
   ========================================== */
.ib-icon {
  display: inline-block;
  vertical-align: middle;
  overflow: visible;
  flex-shrink: 0;
}

/* ==========================================
   5. Header & Navigation Styles
   ========================================== */
.main-header {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  z-index: 1000;
  /* Only the hide/reveal slide gets the slow 1s ease — background swaps
     (theme changes, mega menu open/close) get their own fast transition so
     they never crossfade through the solid dark color for a full second
     (that crossfade was the "looks dark for a moment" lag on theme change). */
  transition: transform 1s cubic-bezier(0.16, 1, 0.3, 1), background-color 0.3s ease;
  /* background: transparent; */
  background-color: var(--bg-primary);
}

/* Applied for one frame when the mega menu OPENS (js/shared.js) so the
   header's own background-color transition can't fall out of sync with the
   instantly-swapped nav-link/logo colors — see instantHeaderBackground().
   Scoped to .main-header only (no "*"), so the mega menu's own open/close
   transition is untouched. The close takes the opposite route — see
   .mega-menu-closing below. */
.main-header.header-instant-bg {
  transition-property: transform;
}

/* ── Mega menu close — the nav content's share of the roll-up ───────────────
   js/shared.js holds .mega-menu-closing for the whole close. Every other
   light↔dark swap on this header stays a hard cut, on purpose: during a
   scroll-driven theme change the page is already moving, and on a mega menu
   open the panel unrolling is what the eye is following.

   The close is the one moment where a cut is the loudest thing on screen —
   the sweep arrives at the bar and everything in it has to become its
   post-close self. The bar's surface handles that by being wiped away with
   the same edge (see the wipe in the desktop block). Its content can't be:
   there is one nav, one logo, one CTA, not two layers to reveal between. So
   they crossfade — but on the wipe's clock, 0.18s starting the moment the
   edge reaches the bar, so the two read as a single movement settling instead
   of a wipe followed by a fade.

   The values only move when shared.js drops .mega-menu-open, which is what
   these selectors hang off (see the :is(.header-dark, .mega-menu-open) rules
   throughout this file). Everything that swap repaints has to be listed here
   or the pieces come apart mid-fade. .main-header itself is absent because it
   needs nothing — its base rule already carries background-color 0.3s ease,
   and it changes at the START of the close, out of sight under the curtain. */
.main-header.mega-menu-closing::before,
.main-header.mega-menu-closing .nav-link,
.main-header.mega-menu-closing .btn-cta,
.main-header.mega-menu-closing .header-divider,
.main-header.mega-menu-closing .ask-expona-text,
.main-header.mega-menu-closing .ask-expona-btn,
.main-header.mega-menu-closing .lang-picker__trigger,
.main-header.mega-menu-closing .lang-picker__globe,
.main-header.mega-menu-closing .lang-picker__caret,
.main-header.mega-menu-closing .mobile-menu-btn .bar,
.main-header.mega-menu-closing .hamburger-line {
  transition: opacity 0.18s cubic-bezier(0, 0, 0.2, 1), color 0.18s cubic-bezier(0, 0, 0.2, 1), background-color 0.18s cubic-bezier(0, 0, 0.2, 1), border-color 0.18s cubic-bezier(0, 0, 0.2, 1);
}

/* The logo pair needs its visibility timed per direction, so it can't ride the
   shared list above: the copy on its way OUT must stay painted for the whole
   fade (visibility flips at the end), while the one on its way IN has to be
   painted from frame zero or it pops in at the end instead of fading. Both
   land on the same two elements, so — as with the mega menu panel — each state
   carries the delay that belongs to the direction it is heading towards. */
.main-header.mega-menu-closing .logo-light,
.main-header.mega-menu-closing:is(.header-dark, .mega-menu-open) .logo-dark {
  transition: opacity 0.18s ease, visibility 0s linear 0.18s;
}

.main-header.mega-menu-closing:is(.header-dark, .mega-menu-open) .logo-light,
.main-header.mega-menu-closing .logo-dark {
  transition: opacity 0.18s ease, visibility 0s linear 0s;
}

@media (prefers-reduced-motion: reduce) {
  .main-header.mega-menu-closing::before,
.main-header.mega-menu-closing .logo-img,
.main-header.mega-menu-closing .nav-link,
.main-header.mega-menu-closing .btn-cta,
.main-header.mega-menu-closing .header-divider,
.main-header.mega-menu-closing .ask-expona-text,
.main-header.mega-menu-closing .ask-expona-btn,
.main-header.mega-menu-closing .lang-picker__trigger,
.main-header.mega-menu-closing .lang-picker__globe,
.main-header.mega-menu-closing .lang-picker__caret,
.main-header.mega-menu-closing .mobile-menu-btn .bar,
.main-header.mega-menu-closing .hamburger-line,
.main-header.mega-menu-closing:is(.header-dark, .mega-menu-open) .logo-light,
.main-header.mega-menu-closing:is(.header-dark, .mega-menu-open) .logo-dark {
    transition: none;
  }
}
/* Blurred Glassmorphism on Scroll */
.main-header.scrolled {
  /* background: rgba(255, 249, 237, 0.85);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border-bottom: 1px solid var(--border-color);
  box-shadow: 0 4px 30px rgba(0, 0, 0, 0.02); */
}

/* Transparent-variant only: once scrolled, the header has nothing behind it
   to guarantee contrast for its (white) nav content, so give it a dark glass
   backdrop instead of staying fully see-through. Solid light/dark themes
   already paint an opaque background and don't need this. Mega menu forces
   its own solid look, so this is skipped while it's open. */
.main-header.header-dark.header-transparent.scrolled:not(.mega-menu-open) {
  background: rgba(55, 55, 66, 0.3);
  /* header-dark's #373742, translucent */
  backdrop-filter: blur(20px);
}

.main-header.header-hidden,
.header-container.header-hidden {
  transform: translateY(-100%);
  /* transition: transform 0.3s ease; */
  transition: transform 1s cubic-bezier(0.16, 1, 0.3, 1);
}

.main-header.first-fold .nav-menu,
.main-header.first-fold .ask-expona-topbar {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: var(--transition-translate);
}

body:has(#story.active) .main-header .nav-menu,
body:has(#story.active) .main-header .cta-section,
body:has(#story.active) .ask-expona-topbar {
  visibility: hidden;
  opacity: 0;
  transition: opacity 0.3s ease, visibility 0.3s ease;
}

/* #story and #who-we-are-parent share one continuous #FFEFD1 → #FFF9ED
   background (css/style.css). The header holds this flat peach for the whole
   zone by default — it is solid peach for nearly the entire span, since the
   gradient itself doesn't start fading to cream until 65.85% of the fold's
   height (css/style.css), far below where the header sits. Only the tail end
   of the zone needs to move: js/home-smootheer-1.js scrubs an inline
   background-color on .main-header from this peach to var(--bg-primary) in
   sync with that same 65.85%-to-100% fade (see the "Header background —
   continuous match to the story gradient" block), so this flat colour is
   really just the resting state the inline override blends away from.

   js/home-smootheer-1.js toggles this class for the whole story + who-we-are
   span (see headerStoryZone), not per-fold, via the same instant-cut trick
   shared.js uses for header-dark/header-transparent — the base .main-header
   transition fades background changes over 0.3s, which otherwise left the old
   background showing for a beat after the page had already moved on.
   :not(.header-dark) excludes the mega-menu-open state, which forces its own
   solid dark surface regardless of section theme. */
.main-header.header-story:not(.header-dark) {
  background-color: #ffefd1;
}

/* Hovering (or tabbing into) the header brings the parked nav and CTA back —
   they're only visually hidden on the story fold, not removed. Gated on
   .intro-done (set by js/home.js when the 3s logo/topbar reveal tween
   finishes) so hovering early can't beat the logo on screen. Selectors mirror
   the hide rule with :hover/:focus-within added so they win on specificity. */
body.intro-done:has(#story.active) .main-header:hover .nav-menu,
body.intro-done:has(#story.active) .main-header:focus-within .nav-menu,
body.intro-done:has(#story.active) .main-header:hover .cta-section,
body.intro-done:has(#story.active) .main-header:focus-within .cta-section {
  visibility: visible;
  opacity: 1;
}

/* An open mega menu pins the nav and CTA visible regardless of hover — the
   panel is a child of .nav-menu, so without this, moving the pointer off the
   header (or out of the viewport) fades the still-open menu away. It stays up
   until shared.js closes it via the click-outside / Escape handlers. */
body:has(#story.active) .main-header.mega-menu-open .nav-menu,
body:has(#story.active) .main-header.mega-menu-open .cta-section {
  visibility: visible;
  opacity: 1;
}

/* Hide nav, CTA, and topbar while on the story fold (desktop only) */
@media (min-width: 1024px) {
  /* body:has(#story.active) .main-header .nav-menu,
  body:has(#story.active) .main-header .cta-section,
  body:has(#story.active) .ask-expona-topbar {
    display: none;
  } */
}
.no-transition,
.no-transition * {
  transition: none !important;
}

/* ==========================================
   Ask Expona Top Bar
   ========================================== */
.ask-expona-topbar {
  width: 100%;
  height: 12px;
  transition: opacity 0.3s ease, visibility 0.3s ease;
  background: linear-gradient(90deg, #373742 65%, #284cba 80%, #ea1b3d 91%, #373742 94%);
  position: relative;
  z-index: 99;
}

.topbar-container {
  max-width: var(--container-width);
  margin: 0 auto;
  position: relative;
  height: 100%;
}

.ask-expona-btn-wrapper {
  position: absolute;
  top: 0;
  right: 120px;
  padding: 0 2px 2px;
  background: linear-gradient(90deg, rgb(40, 76, 186) 15%, rgb(234, 27, 61) 91%);
  clip-path: polygon(0 0, 100% 0, calc(100% - 9px) calc(100% - 10px), calc(100% - 10px) calc(100% - 7px), calc(100% - 11px) calc(100% - 4px), calc(100% - 13px) calc(100% - 2px), calc(100% - 18px) 100%, 18px 100%, 13px calc(100% - 2px), 11px calc(100% - 4px), 10px calc(100% - 7px), 9px calc(100% - 10px));
}

.main-header .ask-expona-btn {
  display: block;
  background: var(--bg-primary);
  padding: 8px 24px;
  clip-path: polygon(0 0, 100% 0, calc(100% - 9px) calc(100% - 8px), calc(100% - 10px) calc(100% - 5px), calc(100% - 11px) calc(100% - 2px), calc(100% - 13px) calc(100% - 1px), calc(100% - 16px) 100%, 16px 100%, 13px calc(100% - 1px), 11px calc(100% - 2px), 10px calc(100% - 5px), 9px calc(100% - 8px));
  text-decoration: none;
  transition: background 0.3s ease;
}

.ask-expona-btn:hover {
  background: #f7f1e6;
}

.main-header .ask-expona-btn-content {
  display: flex;
  align-items: center;
  gap: 8px;
}

.main-header .ask-expona-icon {
  width: 16px;
  height: 16px;
  -o-object-fit: contain;
     object-fit: contain;
}

.main-header .ask-expona-text {
  font-size: 14px;
  font-weight: 500;
  color: var(--text-primary);
  letter-spacing: 0.5px;
  text-transform: uppercase;
}

/* Dark mode header adaptation for top bar */
.main-header:is(.header-dark, .mega-menu-open) .ask-expona-text {
  color: #fff;
}

.main-header:is(.header-dark, .mega-menu-open) .ask-expona-btn {
  background: #2e2f36;
}

.main-header:is(.header-dark, .mega-menu-open) .ask-expona-btn:hover {
  background: #373742;
}

/* Transparent variant only: the Expona pill keeps its light (cream/dark-text)
   look even though the rest of the header is dark-themed — it doesn't need
   header-dark's white-on-dark treatment since it isn't sitting on a solid
   dark bar. :not(.mega-menu-open) matches the background rule below — once
   the mega menu forces the header back to a solid dark bar, the pill reverts
   to the regular header-dark (white/dark-pill) styling above for contrast.
   Higher specificity than the .header-dark rules above (5 classes vs 3) so
   it wins regardless of source order. */
.main-header.header-dark.header-transparent:not(.mega-menu-open) .ask-expona-text {
  color: var(--text-primary);
}

.main-header.header-dark.header-transparent:not(.mega-menu-open) .ask-expona-btn {
  background: var(--bg-primary);
}

.main-header.header-dark.header-transparent:not(.mega-menu-open) .ask-expona-btn:hover {
  background: #f7f1e6;
}

@media (max-width: 768px) {
  .ask-expona-btn-wrapper {
    right: 60px;
  }

  .ask-expona-topbar {
    background: linear-gradient(90deg, rgb(46, 47, 54) 8%, rgb(40, 76, 186) 21%, rgb(234, 27, 61) 100%, rgb(46, 47, 54) 94%);
  }

  .main-header .ask-expona-text {
    display: none;
  }
}
.header-container {
  max-width: var(--container-width-padd);
  width: 100%;
  height: 80px;
  margin: 0 auto;
  padding: 0 60px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  /* transition: var(--transition-smooth); */
}

/* Helper to instantly switch header themes without transition delay */
.main-header.no-transition,
.main-header.no-transition * {
  transition: none !important;
}

/* Header Dark Theme (applied dynamically on dark folds) */
.main-header.header-dark.scrolled {
  /* background: rgba(39, 39, 46, 0.85); */
  /* border-bottom: 1px solid rgba(255, 255, 255, 0.1); */
}

.main-header:is(.header-dark, .mega-menu-open) .nav-link {
  color: #fff;
}

.main-header:is(.header-dark, .mega-menu-open) .nav-link:hover {
  color: var(--accent-red);
}

/* Swap Logo via CSS — crossfaded, not display-swapped, so the pair can move
   with the rest of the chrome during .mega-menu-closing (display is not an
   animatable property). The light copy is lifted out of flow on top of the
   dark one, so the layout box is identical either way — both are 118×23 from
   .logo-img. No transition is declared here, so everywhere outside the mega
   menu close the swap stays instant, exactly as the display swap was. */
.main-header .logo-light {
  position: absolute;
  top: 0;
  left: 0;
  opacity: 0;
  /* Keeps the parked copy out of the accessibility tree, the way display:none
     did — otherwise the same alt text is announced twice inside one link.
     Paired with opacity it still crossfades: visibility flips at the END of a
     transition when heading to hidden, so the outgoing logo stays painted for
     the whole fade. `inherit`, not `visible`, so a hidden .logo-link (the
     homepage intro parks it) can never be overridden from in here. */
  visibility: hidden;
}

.main-header:is(.header-dark, .mega-menu-open) .logo-light {
  opacity: 1;
  visibility: inherit;
}

.main-header:is(.header-dark, .mega-menu-open) .logo-dark {
  opacity: 0;
  visibility: hidden;
}

.main-header:is(.header-dark, .mega-menu-open) .mobile-menu-btn .bar {
  background-color: #fff;
}

.main-header:is(.header-dark, .mega-menu-open) .btn-cta {
  border-color: #fff;
  color: #fff;
}

.main-header:is(.header-dark, .mega-menu-open) .btn-cta:hover {
  background-color: #fff;
  color: #27272e;
}

/* .mega-menu-closing is in here so the panel's own colours outlive the hand-off
   at the end of the roll-up: .mega-menu-open comes off at the exact millisecond
   the panel's clip finishes, and without this the two would race for the last
   frame — a sliver of light-themed panel before it is hidden. */
.main-header:is(.header-dark, .mega-menu-open, .mega-menu-closing) .mega-menu {
  background-color: #373742;
  border: 1px dashed rgba(255, 255, 255, 0.1);
}

/* Grain overlay lives on .main-header, NOT .mega-menu: .mega-menu is
   position:fixed + backdrop-filter (line ~653) + overflow-y:auto (scrolls
   its own content when the menu is taller than the viewport). backdrop-filter
   creates a new containing block for position:fixed descendants (same as
   transform/filter/will-change), so a fixed ::after nested inside .mega-menu
   silently gets re-anchored to .mega-menu anyway and still scrolls away with
   its content. .main-header has neither backdrop-filter nor transform while
   .mega-menu-open (see the :not(.mega-menu-open) rule above and shared.js's
   header-hidden guard), so anchoring here actually stays pinned to the
   viewport regardless of how far the menu's own content is scrolled.

   This is the ≤1024px version — it flips on and off with the panel, which is
   right there because the panel itself just appears/disappears. Desktop
   (≥1025px) overrides it further down so the grain rolls with the panel
   instead of veiling the page ahead of it. Keyed to .mega-menu-open alone,
   not header-dark: the close hands the header its post-close theme up front
   (js/shared.js), so header-dark is already gone while the menu is on screen. */
.main-header.mega-menu-open::after {
  content: "";
  position: fixed;
  inset: 92px 0 0;
  /* matches .mega-menu's top: 80px header + 12px topbar */
  background-image: url(../static/assets/images/latest/grain.png);
  background-repeat: repeat;
  background-size: cover;
  mix-blend-mode: normal;
  opacity: 1;
  pointer-events: none;
  z-index: 10;
}

.main-header:is(.header-dark, .mega-menu-open, .mega-menu-closing) .menu-heading {
  color: #ffd0d8;
}

.main-header:is(.header-dark, .mega-menu-open, .mega-menu-closing) .submenu-link {
  color: #fff;
}

@media (max-width: 1024px) {
  .header-container {
    padding: 0 20px;
  }
}
@media (max-width: 768px) {
  /* .main-header.header-hidden {
    transform: translateY(0);
  } */
  .main-header:is(.header-dark, .mega-menu-open, .mega-menu-closing) .mega-menu {
    background: #373742 url(../static/assets/images/latest/grain.png) center;
  }

  .main-header.mega-menu-open::after {
    display: none;
  }

  .header-container.header-hidden-mobile {
    transform: translateY(-100%) !important;
    transition: transform 0.3s ease;
  }

  .header-container {
    padding: 45px 20px 24px;
    height: 80px;
    width: 100%;
    transition: transform 0.3s ease;
  }
}
/* Logo */
.logo-section {
  display: flex;
  align-items: center;
}

.logo-link {
  display: flex;
  align-items: center;
  /* Anchors the stacked .logo-light copy (see the logo swap rules above). */
  position: relative;
}

.page-home .logo-link {
  opacity: 0;
  visibility: hidden;
}

@keyframes fade-in {
  0% {
    opacity: 0;
    visibility: hidden;
  }
  100% {
    opacity: 1;
    visibility: visible;
  }
}
.logo-img {
  display: block;
  width: 118px;
  height: 23px;
}

/* Nav Menu Links */
.header-container .nav-menu {
  display: flex;
  align-items: center;
  gap: 32px;
  transition: opacity 0.3s ease, visibility 0.3s ease;
}

.main-header .nav-list {
  display: flex;
  list-style: none;
  gap: 40px;
  margin-bottom: 0 !important;
}

.main-header .nav-item {
  position: relative;
  margin-bottom: 0;
}

.main-header .nav-item.active::after,
.main-header .nav-item.menu-active::after {
  content: "";
  position: absolute;
  bottom: -16px;
  left: 0;
  width: 100%;
  height: 2px;
  border-bottom: 1px dashed var(--accent-red);
}

.main-header .nav-link {
  font-size: 18px;
  font-weight: 300;
  color: var(--text-primary);
  padding: 10px 0;
  display: flex;
  align-items: center;
  gap: 6px;
}

.main-header .nav-link:hover {
  color: var(--accent-red);
}

.main-header .nav-icon {
  width: 12px;
  height: auto;
  transition: var(--transition-smooth);
}

/* Two-state nav icons: closed = chevron-down, open = X */
.main-header .nav-icon--open {
  display: none;
}

.main-header .nav-item.active .nav-icon--closed {
  display: none;
}

.main-header .nav-item.active .nav-icon--open {
  display: inline-block;
}

/* Header Divider */
.main-header .header-divider {
  width: 1px;
  height: 24px;
  background-color: var(--text-primary);
  opacity: 0.2;
}

.main-header:is(.header-dark, .mega-menu-open) .header-divider {
  background-color: #fff;
}

/* Header right-side slot */
.header-container .cta-section {
  display: flex;
  align-items: center;
}

/* ================================================
   Language Picker — Desktop (.header-container)
   ================================================ */
.lang-picker {
  position: relative;
}

.lang-picker__trigger {
  display: flex;
  align-items: center;
  gap: 10px;
  background: none;
  cursor: pointer;
  padding: 6px 10px;
  color: #2f2f39;
  border: 0;
  font-family: var(--font-primary);
  font-size: 18px;
  font-weight: 300;
  line-height: 30px;
}

.lang-picker.is-open .lang-picker__trigger {
  background: #faecd3;
}

.lang-picker__globe {
  color: #2f2f39;
  flex-shrink: 0;
  transition: color 0.2s ease;
}

.lang-picker__trigger:hover .lang-picker__globe,
.lang-picker.is-open .lang-picker__globe {
  color: #ea1b3d;
}

.lang-picker__caret {
  color: #2f2f39;
  flex-shrink: 0;
}

.lang-picker__dropdown {
  display: none;
  position: absolute;
  top: 100%;
  right: 0;
  background: #faecd3;
  border: 0;
  border-top: none;
  border-radius: 0;
  padding: 4px 4px 6px;
  min-width: 100%;
  flex-direction: column;
  z-index: 200;
}

.lang-picker.is-open .lang-picker__dropdown {
  display: flex;
}

.lang-picker__opt.is-active {
  display: none;
}

.lang-picker__opt {
  display: flex;
  align-items: center;
  gap: 8px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 7px 10px;
  font-family: var(--font-primary);
  font-size: 18px;
  font-weight: 300;
  line-height: 30px;
  color: #2f2f39;
  width: 100%;
  text-align: left;
}

.lang-picker__opt::before {
  content: "";
  width: 13px;
  height: 13px;
  border-radius: 50%;
  border: 1.5px solid rgba(47, 47, 57, 0.35);
  flex-shrink: 0;
}

.lang-picker__opt:hover {
  background: rgba(47, 47, 57, 0.06);
}

/* Dark header */
.main-header.header-dark {
  background-color: #373742;
}

/* The bar's dark surface, as a layer instead of the element's own background.
   Two reasons it can't stay in the shorthand above:
     · background-image cannot transition — the grain would blink out in one
       frame while the colour under it was still fading
     · a background belongs to its element, so the only way to wipe it is to
       clip the element — which would take the nav, the logo and the CTA with
       it. As a layer it can be clipped on its own, which is what lets the mega
       menu's roll-up carry on through the bar (see the wipe further down).
   z-index: -1 puts it above the bar's own background and below every child,
   without disturbing their stacking — .main-header already opens a stacking
   context (position: fixed + z-index: 1000), so the -1 stays inside it. */
.main-header::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: url(../static/assets/images/latest/grain.png);
  background-position: 0 0;
  background-repeat: repeat;
  opacity: 0;
  pointer-events: none;
  z-index: -1;
  /* The from-state the wipe animates out of; no effect on its own. */
  clip-path: inset(0 0 0 0);
}

/* .mega-menu-closing keeps the curtain up for the whole close, including the
   stretch after shared.js has already handed the bar its post-close theme. */
.main-header:is(.header-dark, .mega-menu-open, .mega-menu-closing)::before {
  opacity: 1;
}

/* No bar, no texture — matches the transparent-variant background rule below. */
.main-header.header-dark.header-transparent:not(.mega-menu-open)::before {
  opacity: 0;
}

/* Dark header, transparent variant (data-header-theme="transparent") — same
   white text/logo/link colors as header-dark, but the header blends into
   whatever's behind it instead of showing the solid dark bar. Mega menu
   still forces the solid dark look back (legibility over its own content)
   regardless of which theme was active when it opened. */
.main-header.header-dark.header-transparent:not(.mega-menu-open) {
  background: transparent;
}

.main-header:is(.header-dark, .mega-menu-open) .lang-picker__trigger {
  color: #fff;
}

.main-header:is(.header-dark, .mega-menu-open) .lang-picker.is-open .lang-picker__trigger {
  background: #2f2f39;
}

.main-header:is(.header-dark, .mega-menu-open) .lang-picker__globe,
.main-header:is(.header-dark, .mega-menu-open) .lang-picker__caret {
  color: #fff;
}

.main-header:is(.header-dark, .mega-menu-open) .lang-picker__trigger:hover .lang-picker__globe,
.main-header:is(.header-dark, .mega-menu-open) .lang-picker.is-open .lang-picker__globe {
  color: #ea1b3d;
}

.main-header:is(.header-dark, .mega-menu-open) .lang-picker__dropdown {
  background: #2f2f39;
  border-color: rgba(255, 255, 255, 0.12);
}

.main-header:is(.header-dark, .mega-menu-open) .lang-picker__opt {
  color: #fff;
}

.main-header:is(.header-dark, .mega-menu-open) .lang-picker__opt::before {
  border-color: rgba(255, 255, 255, 0.4);
}

.main-header:is(.header-dark, .mega-menu-open) .lang-picker__opt:hover {
  background: rgba(255, 255, 255, 0.08);
}

/* Dropdown Menu / Mega Menu */
.header-container .mega-menu {
  position: fixed;
  top: 92px;
  /* 80px header + 12px topbar */
  left: 0;
  right: 0;
  height: calc(100vh - 92px);
  background: rgba(255, 249, 237, 0.95);
  backdrop-filter: blur(20px);
  border-radius: 0;
  padding: 80px 0;
  border: none;
  box-shadow: none;
  opacity: 0;
  visibility: hidden;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  overflow-y: auto;
}

.header-container .mega-menu-inner {
  max-width: var(--container-width-padd);
  width: 100%;
  margin: 0 auto;
  padding: 0 60px;
}

@media (min-width: 1440px) {
  .main-header .mega-menu {
    padding-left: 0;
    padding-right: 0;
  }

  .header-container .mega-menu-inner {
    padding-right: 120px;
  }
}
@media (max-width: 768px) {
  .main-header .mega-menu {
    padding: 40px 24px;
    position: static;
    height: auto;
    width: 100%;
    background: transparent;
  }
}
.main-header .nav-item.active .mega-menu {
  opacity: 1;
  visibility: visible;
  transform: none;
}

/* ── Mega menu roll-down — desktop only (matches DESKTOP_MIN_WIDTH in shared.js)
   The panel unrolls from under the header like a blind, and only once it has
   opened does the content fade up inside it. Closing runs the same thing
   backwards: content leaves first, then the panel rolls back up.

   TIMELINE
     open   0ms  panel starts unrolling (400ms)
           220ms content starts fading up (300ms)   → ends 520ms
     close    0ms content starts fading out (180ms)
           160ms panel starts rolling up (350ms)    → ends 510ms

   Both directions are plain transitions, not animations: an animation only
   plays on the way in, which is why closing used to snap. A transition takes
   its timing from whichever state it is heading TOWARDS, so the open delays
   live on the .active rules and the close delays live on the base rules — that
   is what lets the order reverse without any JS.

   WHY clip-path AND NOT height/transform
   Animating height would reflow the content on every frame, and the text would
   visibly re-wrap as the panel grew — the "content jump". A scaleY transform
   would squash the text as it opened. clip-path only changes what is painted:
   the content is laid out at full size from frame one and is simply revealed,
   so nothing inside ever moves except where we tell it to. */
@media (min-width: 1025px) {
  .header-container .mega-menu {
    /* The blur has to go for any of this to be smooth. A backdrop-filtered
       element is re-sampled from whatever sits behind it, so animating one
       re-blurs the page underneath every frame and the content painted on top
       strobes against it — that was the flicker, and it happened on opacity
       just as much as on transform.

       Cheap to lose: the panel is already rgb(255 249 237 / 0.95), so the blur
       only ever showed through 5% of the surface, and on a dark header a fully
       opaque #373742 + grain covers it entirely. Desktop-only, so the mobile
       flyout — where the panel is `background: transparent` and the blur does
       real work — keeps it. */
    backdrop-filter: none;
    /* opacity stays at 1 in both states: the reveal is the clip's job, and
       fading the panel as well would double up on the content's own fade and
       read as the two coming apart. (The base rule further up sets opacity: 0
       for the mobile accordion, which still applies below 1025px.) */
    opacity: 1;
    clip-path: inset(0 0 100% 0);
    /* Closing: wait out the content's exit, then roll up. visibility flips at
       the very end so the panel stays painted for the whole roll — hiding it
       on frame one would leave nothing to watch. */
    transition: clip-path 0.35s cubic-bezier(0.4, 0, 0.2, 1) 0.16s, visibility 0s linear 0.51s;
  }

  .main-header .nav-item.active .mega-menu {
    clip-path: inset(0 0 0 0);
    /* Opening: the panel goes first, from frame zero. */
    transition: clip-path 0.4s cubic-bezier(0.16, 1, 0.3, 1) 0s, visibility 0s linear 0s;
  }

  /* Content — fades up inside the panel once it has unrolled, and leaves before
     it rolls back. Held on .mega-menu-inner rather than the panel so the two
     can be timed independently. */
  .header-container .mega-menu-inner {
    opacity: 0;
    transform: translate3d(0, 12px, 0);
    /* Closing: immediate and quick, so it is gone before the roll-up starts. */
    transition: opacity 0.18s ease 0s, transform 0.18s ease 0s;
    height: 100%;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
  }

  .main-header .nav-item.active .mega-menu-inner {
    opacity: 1;
    transform: translate3d(0, 0, 0);
    /* Opening: hangs back until the panel is most of the way down. */
    transition: opacity 0.3s ease 0.22s, transform 0.35s cubic-bezier(0.16, 1, 0.3, 1) 0.22s;
  }

  /* Grain — same roll, same timing as the panel it textures.
     It sits on .main-header (see the long note next to the base rule for why
     it can't live inside .mega-menu), so it doesn't inherit the panel's clip
     and used to snap: fully drawn over the page the moment the menu opened,
     and still drawn there for the whole roll-up until shared.js's teardown
     removed .mega-menu-open ~10ms after the panel had finished. That trailing
     removal is what read as the jerk at the end of the close — the panel
     landed cleanly on the nav and then the whole page brightened a frame later.
     Cloning the panel's two clip-path transitions here keeps the texture
     welded to the surface it belongs to in both directions.

     Declared unconditionally — not only under .mega-menu-open — because a
     pseudo-element CREATED by the same class change that opens the menu has no
     previous style to transition from and would paint fully unrolled on frame
     one. Keeping it in the tree, clipped to nothing and visibility:hidden,
     gives the clip somewhere to animate FROM. It costs nothing while closed:
     nothing is painted, nothing is hit-tested, and grain.png is already
     fetched for the header/mobile-menu backgrounds. */
  .main-header::after {
    content: "";
    position: fixed;
    inset: 92px 0 0;
    /* matches .mega-menu's top: 80px header + 12px topbar */
    background-image: url(../static/assets/images/latest/grain.png);
    background-repeat: repeat;
    background-size: cover;
    pointer-events: none;
    z-index: 10;
    visibility: hidden;
    clip-path: inset(0 0 100% 0);
    /* Closing — mirrors .mega-menu's close transition exactly. */
    transition: clip-path 0.35s cubic-bezier(0.4, 0, 0.2, 1) 0.16s, visibility 0s linear 0.51s;
  }

  /* :has(), because the class that opens the panel sits on the trigger, not on
     the header the grain is attached to. .mega-menu-open is kept in the
     selector so the grain can never outlive the dark chrome it belongs to —
     shared.js holds that class for the whole close, then drops it. A swap
     between two panels leaves both halves matching, so the grain simply stays
     unrolled and no transition runs — same as the panel. */
  .main-header.mega-menu-open:has(.nav-item.dropdown-trigger.active)::after {
    visibility: visible;
    clip-path: inset(0 0 0 0);
    /* Opening — with the panel, from frame zero. */
    transition: clip-path 0.4s cubic-bezier(0.16, 1, 0.3, 1) 0s, visibility 0s linear 0s;
  }

  /* ── The header's share of the roll-up ─────────────────────────────────────
     The panel is fixed at top: 92px, so its clip runs out of road at the bar
     and the close read as two beats: a sweep that stopped at the nav, then the
     header changing appearance a moment later. This carries the same edge the
     rest of the way, from the bar's underside up to y=0.

     What makes it possible is that the bar's dark surface is the ::before
     curtain (see its rule above) rather than the element's own background, and
     that shared.js hands the element its post-close theme the moment the close
     STARTS — invisible, since the opaque curtain is still covering it. By the
     time the wipe runs there is already a finished header underneath for the
     edge to uncover, so no second beat is left over.

     The nav content can't be wiped — it is one set of elements that has to
     change colour, not two layers to reveal between — so it crossfades on the
     same clock instead (.mega-menu-closing, up top). Same start, same 0.18s,
     so the two read as one movement settling rather than a wipe and a fade.

     :not(.header-dark) skips the whole thing when the header is staying dark:
     the bar looks identical either side of the close, so there would be
     nothing to uncover and the wipe would just strip the grain and pop it
     back. */
  .main-header:is(.mega-menu-open, .mega-menu-closing)::before {
    background-color: #373742;
  }

  .main-header.mega-menu-closing:not(.mega-menu-open, .header-dark)::before {
    clip-path: inset(0 0 100% 0);
    /* Ease-OUT, not the panel's ease-in-out: the edge arrives here already
       moving, so a curve that starts from rest would put a hitch at the exact
       seam this is meant to hide. Starting at speed and settling reads as the
       same edge carrying on. (A true velocity match would run this leg in
       about two frames — far too fast for the content underneath to cross
       over — so the distance is honest and the speed is eased.) */
    transition: clip-path 0.18s cubic-bezier(0, 0, 0.2, 1), opacity 0.18s ease;
  }

  /* Swapping one open panel for another stays instant, which is the behaviour
     js/shared.js deliberately encodes with .mega-menu-intro (see its comment).
     Two selectors, because a swap has two halves to silence:
       · the incoming panel — .mega-menu-intro is absent on a swap and present
         on a cold open, so this is exactly the "not a cold open" case
       · the outgoing panel — still :not(.active), but another trigger IS
         active, so it must vanish rather than roll up behind its replacement
     On a real close no trigger is left active, the second selector stops
     matching, and the panel gets its full sequence. Both halves cover the
     inner too, or the content would animate while its panel did not. */
  .main-header:not(.mega-menu-intro) .nav-item.active .mega-menu,
.main-header:not(.mega-menu-intro) .nav-item.active .mega-menu-inner,
.main-header:has(.nav-item.dropdown-trigger.active) .nav-item:not(.active) .mega-menu,
.main-header:has(.nav-item.dropdown-trigger.active) .nav-item:not(.active) .mega-menu-inner {
    transition: none;
  }
}
@media (min-width: 1025px) and (prefers-reduced-motion: reduce) {
  .header-container .mega-menu,
.main-header .nav-item.active .mega-menu,
.header-container .mega-menu-inner,
.main-header .nav-item.active .mega-menu-inner,
.main-header::after,
.main-header.mega-menu-open:has(.nav-item.dropdown-trigger.active)::after,
.main-header.mega-menu-closing:not(.mega-menu-open, .header-dark)::before {
    transition: none;
  }
}
.mega-menu-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 64px;
  width: 100%;
  max-width: 1200px;
}

@media (max-width: 768px) {
  .mega-menu-grid {
    grid-template-columns: 1fr;
  }
}
.main-header .menu-heading {
  font-size: 16px;
  text-transform: uppercase;
  color: var(--text-primary);
  margin-bottom: 32px;
  font-weight: 500;
}

.main-header .submenu-list {
  list-style: none;
  padding: 0;
  margin: 0;
}

.main-header .submenu-list li {
  list-style: none;
  margin-bottom: 32px;
}

.main-header .mega-menu ul.submenu-list {
  margin: 0;
}

.main-header .submenu-link {
  font-size: 22px;
  color: var(--text-secondary);
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 0 15px;
  font-weight: 400;
  /* animated border: white line progresses over faint static line */
  background-image: linear-gradient(#fff, #fff), linear-gradient(rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.2));
  background-position: 0 100%, 0 100%;
  background-size: 0% 1px, 100% 1px;
  background-repeat: no-repeat;
  /* transition: color 0.3s ease, background-size 0.4s ease; */
  transition: padding 0.3s ease, color 0.3s ease, background-size 0.4s ease;
}

/* Arrow icon is external-link-only — mark a submenu-link with
   target="_blank" to opt it in (standard "opens elsewhere" convention). */
.main-header .submenu-link::after {
  content: none;
}

.main-header .submenu-link[target=_blank]::after {
  content: "";
  width: 20px;
  height: 20px;
  background: url(../static/assets/images/latest/up-right-arrow-new.svg) no-repeat center/contain;
  flex-shrink: 0;
  opacity: 0;
  transition: opacity 0.3s ease;
}

.main-header .submenu-link:hover {
  color: #fff;
  background-size: 100% 1px, 100% 1px;
}

.main-header .submenu-link[target=_blank]:hover::after {
  opacity: 1;
  transform: translateX(0);
}

.main-header .submenu-link__body {
  display: flex;
  flex-direction: column;
  position: relative;
}

.main-header .submenu-link__text {
  display: block;
  transition: transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.main-header .submenu-link:hover .submenu-link__text {
  transform: translateY(-8px);
}

.main-header .submenu-link__desc {
  display: block;
  position: absolute;
  left: 0;
  top: 100%;
  width: -moz-max-content;
  width: max-content;
  max-width: 260px;
  font-size: 14px;
  font-weight: 300;
  letter-spacing: 0.02em;
  color: rgba(255, 255, 255, 0.45);
  line-height: 20px;
  opacity: 0;
  pointer-events: none;
  transform: translateY(-4px);
  will-change: transform, opacity;
  transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.4s ease 0.08s;
}

.main-header .submenu-link:hover .submenu-link__desc {
  opacity: 1;
  transform: translateY(-10px);
}

@media (max-width: 768px) {
  .main-header .submenu-link {
    font-size: 20px;
  }
}
/* Bottom section */
.main-header .mega-menu-bottom {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  margin-top: 60px;
  padding-bottom: 40px;
  padding-top: 40px;
}

@media (max-width: 768px) {
  .main-header .mega-menu-bottom {
    flex-direction: column;
    align-items: flex-start;
    gap: 30px;
  }
}
/* Pages (e.g. index.html) that drop .mega-bottom-card leave .mega-story-box as
   the sole child — space-between would then sit it flex-start (left) instead
   of at its usual right-side spot. */
@media (min-width: 769px) {
  .main-header .mega-story-box:only-child {
    margin-left: auto;
  }
}
.main-header .mega-bottom-card {
  display: flex;
  align-items: center;
  gap: 30px;
  background: #2f2f39;
  padding: 24px;
}

.main-header .mega-bottom-card p {
  font-size: 20px;
  color: #fff;
  font-weight: 300;
  max-width: 500px;
}

/* CTA Button */
.main-header .mega-bottom-card .cta {
  color: #fff;
  text-decoration: underline;
}

.main-header .mega-story-box {
  position: relative;
  width: 96px;
  height: 79px;
  overflow: visible;
  /* let the lid + photo rise above the box on hover */
  cursor: pointer;
}

/* Box body (front) — masks the lower part of the photo */
.main-header .mega-story-box .box-body {
  position: relative;
  z-index: 2;
  display: block;
  width: 96px;
  height: 79px;
}

/* Ritesh photo — tucked inside the box, rises out when the lid opens */
.main-header .mega-story-box .wow-story {
  position: absolute;
  right: 0;
  bottom: 0;
  width: 300px;
  height: 96px;
  z-index: 1;
  opacity: 0;
  visibility: visible;
  transform: scale(0.7) translateX(36px) translateY(-30px);
  transform-origin: bottom center;
  transition: transform 0.5s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.35s ease;
  pointer-events: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  background: linear-gradient(90deg, #7c2235 0%, #2d2225 68.91%, #2d2225 100%);
  padding: 16px;
}

.main-header .mega-story-box .wow-story .text {
  font-weight: 500;
  font-size: 12px;
  line-height: 18px;
  letter-spacing: 0.24px;
  text-transform: uppercase;
  color: #fff;
  text-decoration: none;
  display: flex;
  align-items: center;
  gap: 5px;
}

.main-header .mega-story-box .wow-story .story-photo {
  width: auto;
  height: 96px;
}

/* Lid — sits on top of the box, lifts and tilts open on hover */
.main-header .mega-story-box .box-cap {
  position: absolute;
  right: 13px;
  top: 6px;
  z-index: 3;
  transform-origin: bottom left;
  transition: transform 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}

/* Hover / keyboard-focus = open state */
.main-header .mega-story-box:hover .box-cap,
.main-header .mega-story-box:focus-within .box-cap {
  transform: translate(40px, -45px) rotate(30deg);
}

.main-header .mega-story-box:hover .wow-story,
.main-header .mega-story-box:focus-within .wow-story {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  /* allow the revealed panel to be hovered + clicked */
  transform: scale(1) translateX(-20px) translateY(-73px);
}

/* Innovation Mega Menu specific layout */
.main-header .mega-menu-top-section {
  display: flex;
  gap: 60px;
  justify-content: space-between;
}

.main-header .mega-menu-left {
  flex: 1;
}

.discipline-grid {
  max-width: 100%;
}

.innovation-grid,
.about-grid {
  grid-template-columns: repeat(2, 1fr);
  max-width: 700px;
}

.insight-grid {
  grid-template-columns: 1fr;
  max-width: 700px;
}

.mega-menu .mega-menu-right {
  flex: 1;
  max-width: 500px;
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.mega-menu .story-image-container {
  position: relative;
  margin-bottom: 10px;
}

/* .true-story-ribbon {
  position: absolute;
  top: 24px;
  left: -35px;
  background: var(--accent-red);
  color: white;
  padding: 6px 40px;
  transform: rotate(-45deg);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 1.5px;
  z-index: 2;
  box-shadow: 0 4px 10px rgba(0, 0, 0, .3);
} */
/* Ribbon */
.true-story-ribbon {
  width: 150px;
  height: 150px;
  overflow: hidden;
  position: absolute;
  z-index: 1;
}

.true-story-ribbon::before,
.true-story-ribbon::after {
  position: absolute;
  z-index: -1;
  content: "";
  display: block;
  border: 5px solid #7c2235;
}

.true-story-ribbon span {
  position: absolute;
  display: block;
  width: 245px;
  padding: 8px 0;
  background-color: #eb4c5e;
  color: #fff;
  font-weight: 500;
  font-size: 12px;
  line-height: 18px;
  letter-spacing: 1.2px;
  text-align: center;
  text-transform: uppercase;
  white-space: nowrap;
}

/* top left */
.true-story-ribbon.ribbon-top-left {
  top: -10px;
  left: -10px;
}

.true-story-ribbon.ribbon-top-left::before,
.true-story-ribbon.ribbon-top-left::after {
  border-top-color: transparent;
  border-left-color: transparent;
}

.true-story-ribbon.ribbon-top-left::before {
  top: 0;
  right: 26px;
}

.true-story-ribbon.ribbon-top-left::after {
  bottom: 26px;
  left: 0;
}

.true-story-ribbon.ribbon-top-left span {
  right: -25px;
  top: 30px;
  transform: rotate(-45deg);
}

/* ribbon end */
.about-story-card {
  display: flex;
  background: #101a1b;
  position: relative;
  height: 100%;
}

.about-story-wrap {
  display: flex;
}

.about-story-image {
  flex: 0 0 45%;
  position: relative;
}

.about-story-image img {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
  display: block;
}

/* .about-story-image::after {
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  width: 40px;
  background: linear-gradient(to right, transparent, #1e1e24);
} */
.about-story-content {
  flex: 1;
  padding: 40px 30px;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.about-story-title {
  color: #ffd0d8;
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 1px;
  margin-bottom: 16px;
  font-weight: 500;
}

.about-story-text {
  color: rgba(255, 255, 255, 0.8);
  font-size: 15px;
  line-height: 1.8;
  font-weight: 300;
}

.story-quote {
  display: flex;
  gap: 16px;
  align-items: flex-start;
}

.quote-icon {
  font-size: 48px;
  color: #ffd0d8;
  line-height: 1;
  margin-top: -10px;
  opacity: 0.5;
}

.quote-body {
  color: rgba(255, 255, 255, 0.8);
  font-size: 20px;
  line-height: 1.6;
  font-weight: 300;
  margin-bottom: 12px;
}

.quote-author {
  color: rgba(255, 255, 255, 0.6);
  font-size: 16px;
  font-weight: 300;
}

.btn-cta:hover {
  background: transparent;
  color: var(--text-primary);
  box-shadow: 0 4px 15px rgba(55, 55, 66, 0.1);
}

/* Mobile Navigation Toggle */
.main-header .mobile-menu-btn {
  display: none;
  flex-direction: column;
  justify-content: space-between;
  width: 24px;
  height: 18px;
  background: transparent;
  border: none;
  cursor: pointer;
  z-index: 1001;
}

.main-header .mobile-menu-btn .bar {
  width: 100%;
  height: 2px;
  background-color: var(--text-primary);
  border-radius: 2px;
  transition: var(--transition-smooth);
}

@media (max-width: 768px) {
  .main-header .mobile-menu-btn {
    display: flex;
  }

  .main-header .nav-menu {
    position: fixed;
    top: 0;
    right: -100%;
    width: 80%;
    height: 100vh;
    background: var(--bg-primary);
    box-shadow: -10px 0 30px rgba(0, 0, 0, 0.05);
    flex-direction: column;
    justify-content: center;
    transition: var(--transition-smooth);
    padding: 40px;
    z-index: 999;
  }

  .main-header .nav-menu.active {
    right: 0;
  }

  .main-header .nav-list {
    flex-direction: column;
    gap: 30px;
    width: 100%;
  }

  .main-header .mega-menu {
    position: static;
    transform: none;
    opacity: 1;
    visibility: visible;
    box-shadow: none;
    border: none;
    background: transparent;
    padding: 10px 0 0 15px;
    width: 100%;
    display: none;
  }

  .main-header .nav-item.active .mega-menu {
    display: block;
  }
}
.podcast-avatar img {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
}

.box-avatar {
  position: absolute;
  top: 0;
  right: -5px;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  border: 2px solid #fff;
  overflow: hidden;
  z-index: 3;
}

.box-avatar img {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
}

.mega-menu .story-image {
  width: 100%;
  height: auto;
  display: block;
  transition: filter 0.35s ease;
}

.mega-menu .story-video {
  aspect-ratio: 723/329;
  -o-object-fit: cover;
     object-fit: cover;
  min-height: 329px;
}

/* story-link-wrap: stack link over image */
/* .mega-menu .story-link-wrap {
  position: relative;
  overflow: hidden;
  border-radius: 4px;
} */
/* link hidden by default, centered to its own size */
.mega-menu .story-link {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 8px 1px;
  text-decoration: underline;
  opacity: 0;
  transition: opacity 0.3s ease, background 0.25s ease;
  z-index: 2;
  font-weight: 500;
  font-size: 14px;
  line-height: 18px;
  letter-spacing: 0.24px;
  text-transform: uppercase;
  color: #fff;
}

.mega-menu .story-link img {
  width: 14px;
  height: 14px;
  flex-shrink: 0;
}

/* on container hover: blur only the image, reveal the link */
.mega-menu .story-image-container:hover .story-image,
.mega-menu .about-story-card:hover .about-story-wrap {
  filter: blur(3px) brightness(0.6);
}

.mega-menu .story-image-container:hover .story-link,
.mega-menu .about-story-card:hover .story-link {
  opacity: 1;
}

/* on link hover: add a semi-transparent backdrop */
.mega-menu .story-link:hover {
  background: rgba(255, 255, 255, 0.35);
}

/* ───────────────────────────────────────────────
   Innovation mega-menu only — story card shows an
   always-visible heading + "View True Story" link
   with an animated arrow on hover (matches the
   scroll-tabs story link). Scoped via --innovation
   so the other mega-menu tabs stay untouched.
   ─────────────────────────────────────────────── */
.mega-menu .story-image-container--innovation .story-link-wrap {
  position: relative;
  overflow: hidden;
  border-radius: 0;
}

.mega-menu .story-image-container--innovation .story-video {
  display: block;
}

/* flat scrim keeps the overlaid light text legible on the video */
.mega-menu .story-image-container--innovation .story-link-wrap::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background: rgba(0, 0, 0, 0.2);
}

/* keep the ribbon above the scrim so it isn't dimmed */
.mega-menu .story-image-container--innovation .true-story-ribbon {
  z-index: 3;
}

.mega-menu .story-image-container--innovation .story-image-container__caption {
  position: absolute;
  inset: auto 0 0;
  z-index: 2;
  display: flex;
  flex-direction: column;
  gap: 20px;
  padding: 32px;
}

.mega-menu .story-image-container--innovation .story-image-container__heading {
  margin: 0;
  color: #fff;
  font-family: var(--font-heading);
  font-size: 18px;
  font-weight: 600;
  line-height: 1.66;
  letter-spacing: 0;
}

.mega-menu .story-image-container--innovation .story-image-container__story-link {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  width: -moz-fit-content;
  width: fit-content;
  color: #fff;
  font-weight: 500;
  font-size: 16px;
  line-height: 1.625;
  letter-spacing: 0;
  text-transform: uppercase;
  text-decoration: none;
}

.mega-menu .story-image-container--innovation .story-image-container__story-link-text {
  text-decoration: underline;
  text-underline-offset: 5px;
  text-decoration-thickness: 1px;
}

.mega-menu .story-image-container--innovation .story-image-container__story-link-arrow {
  flex: none;
  width: 20px;
  height: 17px;
  fill: currentcolor;
  transition: transform 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.mega-menu .story-image-container--innovation .story-image-container__story-link:hover .story-image-container__story-link-arrow {
  transform: translate3d(4px, 0, 0);
}

.mega-menu .story-image-container--innovation .story-image-container__story-link:focus-visible {
  outline: 2px solid #fff;
  outline-offset: 4px;
}

/* Innovation card opts out of the shared hover-blur treatment */
.mega-menu .story-image-container--innovation:hover .story-image {
  filter: none;
}

/* Mobile Navigation Toggle */
.mobile-menu-btn {
  display: none;
  flex-direction: column;
  justify-content: space-between;
  width: 24px;
  height: 18px;
  background: transparent;
  border: none;
  cursor: pointer;
  z-index: 1001;
}

.mobile-menu-btn .bar {
  width: 100%;
  height: 2px;
  background-color: var(--text-primary);
  border-radius: 2px;
  transition: var(--transition-smooth);
}

@media (max-width: 768px) {
  .mobile-menu-btn {
    display: flex;
  }

  .nav-menu {
    position: fixed;
    top: 0;
    right: -100%;
    width: 80%;
    height: 100vh;
    background: var(--bg-primary);
    box-shadow: -10px 0 30px rgba(0, 0, 0, 0.05);
    flex-direction: column;
    justify-content: center;
    transition: var(--transition-smooth);
    padding: 40px;
    z-index: 999;
  }

  .nav-menu.active {
    right: 0;
  }

  .nav-list {
    flex-direction: column;
    gap: 30px;
    width: 100%;
  }

  .mega-menu {
    position: static;
    transform: none;
    opacity: 1;
    visibility: visible;
    box-shadow: none;
    border: none;
    background: transparent;
    padding: 10px 0 0 15px;
    width: 100%;
    display: none;
  }

  .nav-item.active .mega-menu {
    display: block;
  }

  .btn-cta {
    width: 100%;
  }

  /* Hamburguer animations */
  .mobile-menu-btn.active .bar:nth-child(1) {
    transform: translateY(8px) rotate(45deg);
  }

  .mobile-menu-btn.active .bar:nth-child(2) {
    opacity: 0;
  }

  .mobile-menu-btn.active .bar:nth-child(3) {
    transform: translateY(-8px) rotate(-45deg);
  }
}
/* ==========================================
   Ask Expona Fullscreen Dropdown
   ========================================== */
.ask-expona-fullscreen-dropdown {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100dvh;
  background: #373742 url(../static/assets/images/latest/grain.png) center center;
  z-index: 2000;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 40px 0;
  opacity: 0;
  visibility: hidden;
  transform: translateY(-100%);
  transition: opacity 0.4s ease, visibility 0.4s ease, transform 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}

.ask-expona-fullscreen-dropdown.open {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  border-bottom: 10px solid;
  -o-border-image: linear-gradient(90deg, #fff9ed 0%, #fff9ed 91.15%) 1;
     border-image: linear-gradient(90deg, #fff9ed 0%, #fff9ed 91.15%) 1;
}

/* Lock page scroll while the Expona dropdown is open — pure CSS, no JS hook */
body:has(.ask-expona-fullscreen-dropdown.open) {
  overflow: hidden;
}

body.home:has(.ask-expona-fullscreen-dropdown.open) {
  overflow: hidden !important;
}

.expona-dropdown-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

/* Mobile close arrow — hidden on desktop */
.expona-header-close-btn {
  display: none;
}

.expona-header-close-btn .ib-icon {
  color: #fff;
  transform: rotate(180deg);
}

.expona-dropdown-header .dropdown-logo {
  height: 24px;
  cursor: pointer;
}

.ask-expona-fullscreen-dropdown .expona-dropdown-body {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  max-width: 904px;
  margin: 0 auto;
}

.ask-expona-fullscreen-dropdown .expona-dropdown-title {
  color: rgba(255, 255, 255, 0.55);
  font-size: 20px;
  line-height: 34px;
  font-weight: 300;
  letter-spacing: 0;
  margin-bottom: 24px;
  transition: all 0.3s ease;
}

.ask-expona-fullscreen-dropdown .expona-input-area {
  margin-bottom: 50px;
  width: 100%;
  position: relative;
}

.ask-expona-fullscreen-dropdown .expona-input-caret {
  position: absolute;
  top: 0;
  left: 50%;
  z-index: 1;
  display: block;
  color: #fff;
  font-size: 18px;
  line-height: 28px;
  opacity: 0.8;
  transform: translateX(-50%);
  animation: blink 1s step-end infinite;
  pointer-events: none;
}

.ask-expona-fullscreen-dropdown .expona-input-area.has-value .expona-input-caret {
  display: none;
}

.ask-expona-fullscreen-dropdown .expona-main-input {
  background: transparent;
  border: none;
  color: #fff;
  caret-color: #fff;
  font-size: 18px;
  font-weight: 300;
  text-align: center;
  width: 100%;
  outline: none;
  font-family: var(--font-primary, "Lexend", sans-serif);
  resize: none;
  overflow-y: auto;
  height: 28px;
  /* Initial height for single line */
  max-height: 120px;
  padding-right: 12px;
}

.ask-expona-fullscreen-dropdown .expona-input-area:not(.has-value) .expona-main-input {
  caret-color: transparent;
}

/* iOS Safari can skip painting an animated textarea placeholder, so the
  visible fake caret is a real .expona-input-caret element instead. */
.ask-expona-fullscreen-dropdown .expona-main-input::-moz-placeholder {
  color: transparent;
  opacity: 0;
}
.ask-expona-fullscreen-dropdown .expona-main-input::placeholder {
  color: transparent;
  opacity: 0;
}

/* Keep the real placeholder hidden; the wrapper caret above remains visible
  while the focused field is empty, which is the iOS Safari path. */
.ask-expona-fullscreen-dropdown .expona-main-input:focus::-moz-placeholder {
  color: transparent;
}
.ask-expona-fullscreen-dropdown .expona-main-input:focus::placeholder {
  color: transparent;
}

@keyframes blink {
  50% {
    opacity: 0;
  }
}
.press-return-container {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  margin: 24px auto 0 !important;
  opacity: 0;
  transition: opacity 0.3s ease;
  background: transparent;
  border: none;
  cursor: pointer;
  outline: none;
  padding: 0;
}

.return-key-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: #373742;
  border: 1px solid #676775;
  border-radius: 0;
  color: #fff;
  font-size: 14px;
  cursor: pointer;
  transition: background 0.2s ease;
  box-shadow: 0 0 2px 0 rgba(47, 47, 57, 0.2);
}

.press-return-text {
  color: #fff;
  font-size: 14px;
  font-weight: 300;
}

/* Typing Active State */
/* .expona-dropdown-body.typing-active .expona-dropdown-title {
  font-size: 12px;
  opacity: 0.7;
  transition: all 0.3s ease;
} */
.expona-dropdown-body.typing-active .press-return-container {
  display: flex !important;
  opacity: 1;
}

.ask-expona-fullscreen-dropdown .expona-suggestions {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  justify-content: center;
}

.ask-expona-fullscreen-dropdown .suggestion-chip {
  background: #2f2f39;
  border: 0;
  color: #fff;
  padding: 12px 16px;
  font-size: 16px;
  line-height: 26px;
  font-weight: 300;
  cursor: pointer;
  box-shadow: 0 0 2px 0 rgba(47, 47, 57, 0.2);
  transition: all 0.3s ease;
}

.ask-expona-fullscreen-dropdown .suggestion-chip:hover {
  background: #26262e;
  color: #fff;
}

.ask-expona-fullscreen-dropdown .expona-dropdown-footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  position: relative;
}

.powered-by {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  color: #7b7b84;
  font-size: 12px;
  cursor: pointer;
}

/* The visible label — sits above the popup box so it reads as the box's
   own footer line (same markup + logo, no duplication) */
.powered-by__label {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
}

/* Hover popup — desktop only. Bottom edge sits ~10px above the modal's 10px
   gradient border; the box expands from bottom to top on hover and the label
   shows through at the box's bottom (same markup + logo, no duplication). */
.powered-by__popup {
  position: absolute;
  left: 50%;
  bottom: -30px;
  z-index: 1;
  width: -moz-max-content;
  width: max-content;
  max-width: 320px;
  padding: 20px 20px 62px;
  text-align: center;
  background: #44444f url(../static/assets/images/latest/grain.png) center center;
  box-shadow: 0 0 2px 0 rgba(47, 47, 57, 0.2);
  transform: translateX(-50%);
  clip-path: inset(100% 0 0 0);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: clip-path 0.5s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease, visibility 0s linear 0.5s;
}

.powered-by:hover .powered-by__popup,
.powered-by:focus-visible .powered-by__popup {
  opacity: 1;
  visibility: visible;
  clip-path: inset(0 0 0 0);
  pointer-events: auto;
  transition-delay: 0s;
}

.powered-by__popup-text {
  margin: 0;
  color: #fff;
  font-family: "Lexend", sans-serif;
  font-size: 16px;
  line-height: 26px;
  font-weight: 300;
  letter-spacing: 0;
  text-align: center;
}

.powered-by .powered-by__popup-text strong {
  color: #ffd0d8;
  font-weight: 400;
}

/* Popup is a desktop-only hover affordance — hidden on tablet and below */
@media (max-width: 1024px) {
  .powered-by__popup {
    display: none;
  }
}
.expona-small-logo {
  height: 12px;
}

.powered-by strong {
  color: #fff;
  font-weight: 500;
}

/* Trapezoid tab with smooth rounded top corners drawn via path() —
   fixed dimensions are required because path() coordinates are absolute.
   Outer box 185×52 carries the gradient border, inner button 181×50
   is the dark fill, leaving a 2px gradient edge on top and both slants.
   The gradient only runs 42px down — the bottom 10px of the edge strip
   is flat dark so the tab merges into the section below. */
.infobeans-up-btn-wrapper {
  margin-left: auto;
  margin-bottom: -50px;
  width: 185px;
  height: 52px;
  padding: 2px 2px 0;
  box-sizing: border-box;
  background: linear-gradient(90deg, #284cba 6%, #7d3ba2 48%, #ea1b3d 94%) top/100% 42px no-repeat, #373742;
  /* Sides at 67° from horizontal → 22px inset per side, 8px top radius */
  clip-path: path("M 0 52 L 18.9 7.4 Q 22 0 30 0 L 155 0 Q 163 0 166.1 7.4 L 185 52 Z");
  position: absolute;
  right: 120px;
  bottom: 0;
}

.infobeans-up-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  background: #373742;
  width: 181px;
  height: 50px;
  clip-path: path("M 0 50 L 18.6 6.4 Q 21.3 0 28.3 0 L 152.7 0 Q 159.7 0 162.4 6.4 L 181 50 Z");
  border: none;
  cursor: pointer;
  transition: background 0.3s ease;
}

.infobeans-up-btn .btn-text-content {
  color: #fff9ed;
  font-size: 14px;
  font-weight: 400;
  letter-spacing: 0.7px;
  display: flex;
  align-items: center;
  gap: 10px;
  text-transform: uppercase;
  transform: translateY(-7px);
}

.infobeans-up-btn:hover {
  background: #373742;
}

.infobeans-up-btn:hover .btn-text-content {
  color: #fff;
}

.infobeans-up-btn .btn-text-content .ib-icon {
  color: #fff;
}

@media (max-width: 767px) {
  .ask-expona-fullscreen-dropdown.open {
    border-bottom: 0;
  }

  .powered-by {
    margin-bottom: -28px;
    margin-left: 0;
    left: 50%;
    transform: translateX(-50%);
  }

  .ask-expona-fullscreen-dropdown .expona-dropdown-body {
    padding: 0 24px;
    margin: 0;
  }

  /* Peek carousel — active chip starts at body's 24px padding,
     next chip peeks all the way to the screen's right edge */
  .ask-expona-fullscreen-dropdown .expona-suggestions {
    flex-wrap: nowrap;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    gap: 12px;
    justify-content: flex-start;
    scrollbar-width: none;
    /* break out of body's right padding so the peek reaches the screen edge */
    margin-right: -24px;
    width: calc(100% + 24px);
    /* snap offset: when scrolled, previous chip's tail shows on the left */
    scroll-padding-left: 12px;
    /* Stop at this row's own ends instead of handing the gesture to the page
       underneath — same fix as .mobile-menu-inner above, for the same reason:
       body:has(.ask-expona-fullscreen-dropdown.open){overflow:hidden} is not
       a dependable touch lock on iOS, and without this, real touch scroll
       chains straight through to the (locked, so immovable) body instead of
       scrolling this row — it reads as the chips not scrolling at all. A
       desktop mouse/trackpad test never hits this path, which is why it only
       shows up on a real device. */
    overscroll-behavior: contain;
    /* No touch-action means the browser has to guess the gesture's axis on
       every touch, so a mostly-vertical scroll of the dropdown that happens
       to start on this row can get read as a horizontal pan instead — the
       chips "steal" the touch. pan-x declares this row's own axis up front:
       horizontal gestures stay here, vertical ones are handed to the
       dropdown body's own pan-y scroll immediately instead of being
       disambiguated per-gesture. */
    touch-action: pan-x;
  }

  .ask-expona-fullscreen-dropdown .expona-suggestions::-webkit-scrollbar {
    display: none;
  }

  .ask-expona-fullscreen-dropdown .suggestion-chip {
    /* active chip width = screen - left padding (24) - right peek (~48) */
    flex: 0 0 calc(100vw - 72px);
    min-width: 0;
    scroll-snap-align: start;
    background: #2f2f39;
    padding: 8px 16px;
    font-size: 14px;
    line-height: 22px;
    min-height: 60px;
    box-sizing: border-box;
    margin: 0;
    text-align: left;
  }

  /* Hide the bottom close button on mobile */
  .infobeans-up-btn-wrapper {
    display: none;
  }

  /* Show the header close arrow on mobile */
  .expona-header-close-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    background: transparent;
    border: 1px solid #676775 !important;
    border-radius: 0 !important;
    color: #fff !important;
    font-size: 14px;
    cursor: pointer !important;
    transition: background 0.2s ease;
    box-shadow: 0 0 2px 0 rgba(47, 47, 57, 0.2);
  }

  .expona-header-close-btn:hover {
    background: #4a4b57;
  }
}
/* ==========================================
   Ask Expona Chat Interface
   ========================================== */
.expona-chat-interface {
  flex: 1;
  min-height: 0;
  /* lets flex child shrink and scroll */
  display: flex;
  flex-direction: column;
  width: 100%;
  justify-content: center;
  padding-bottom: 80px;
  overflow: hidden;
  padding-top: 30px;
}

.expona-chat-interface .chat-container {
  display: grid;
  grid-template-columns: 1fr 40px 1fr;
  align-content: start;
  width: 100%;
  /* Also carries .custom-container (css/custom.css), which sets its own
     max-width — override it so the box below can actually reach 100%. */
  max-width: none;
  /* Full-width scroll box (not max-width + margin auto) so its own
     scrollbar rides the true right edge of the viewport, like the body
     scrollbar — the 1076px content column is centered via padding instead.
     flex: 1 + min-height: 0 (no max-height) lets it fill all the vertical
     space .expona-chat-interface has available, so the scrollbar also
     spans that full height rather than a shorter fixed box. */
  padding: 0 max(20px, (100% - 1076px) / 2) 24px;
  margin: 0 auto;
  position: relative;
  row-gap: 60px;
  flex: 1;
  min-height: 0;
  overflow: hidden auto;
  scrollbar-gutter: stable;
}

/* Custom Scrollbar for Chat Container */
.expona-chat-interface .chat-container::-webkit-scrollbar {
  width: 6px;
}

.expona-chat-interface .chat-container::-webkit-scrollbar-track {
  background: transparent;
}

.expona-chat-interface .chat-container::-webkit-scrollbar-thumb {
  background: rgba(255, 255, 255, 0.2);
  border-radius: 4px;
}

.expona-chat-interface .chat-container::-webkit-scrollbar-thumb:hover {
  background: rgba(255, 255, 255, 0.4);
}

/* Chat timeline line — two pure-CSS layers, no JS measurement:
   1. Baseline on the container: full visible height from the very start.
   2. Node segments: live inside the scrolled content, so the line keeps
      covering rows that grow past the first viewport (streamed answers).
   Both layers use the SAME pre-blended solid color — #ffd0d8 at 20% alpha
   flattened over the dropdown bg #373742 — so overlaps don't brighten. */
.expona-chat-interface .chat-container::before {
  content: "";
  position: absolute;
  top: 0;
  left: 50%;
  width: 1px;
  height: calc(100% - 4px);
  /* full visible chat height, minus the 4px offset */
  background: rgb(95, 86, 96);
  transform: translate(-50%, 4px);
}

/* Per-row segment = own row + row-gap, joining seamlessly with the next node */
.expona-chat-interface .chat-node-center::before {
  content: "";
  position: absolute;
  top: 4px;
  left: 20px;
  z-index: -1;
  /* behind the node icon, inside the cell's stacking context */
  width: 1px;
  height: calc(100% + 60px);
  /* row height + desktop row-gap */
  background: rgb(95, 86, 96);
  transform: translateX(-50%);
}

/* Last node of the chat: end the line at the bottom of its own row */
.expona-chat-interface .chat-node-center:nth-last-child(2)::before {
  height: calc(100% - 4px);
}

.expona-chat-interface .chat-message-left {
  text-align: left;
  padding-right: 20px;
}

.expona-chat-interface .chat-message-right {
  text-align: left;
  padding-left: 20px;
}

.expona-chat-interface .chat-node-center {
  position: relative;
  /* anchor for the ::before line segment */
  display: flex;
  justify-content: center;
  align-items: flex-start;
  z-index: 1;
}

.expona-chat-interface .node-icon {
  width: 12px;
  height: 12px;
  margin-top: 4px;
  margin-left: 0;
}

.expona-chat-interface .node-icon.empty {
  border: 1px solid #ffd0d8;
  background: #373742;
}

.expona-chat-interface .node-icon.filled {
  background: #ffd0d8;
  /* Pinkish color matching the theme */
}

.expona-chat-interface .chat-meta {
  color: #ffd0d8;
  font-size: 11px;
  letter-spacing: 1px;
  margin-bottom: 12px;
  text-transform: uppercase;
}

.expona-chat-interface .chat-text {
  color: #fff;
  font-size: 18px;
  line-height: 30px;
  font-weight: 300;
  word-break: break-word;
}

@media (max-width: 1024px) {
  .expona-chat-interface .chat-text {
    font-size: 14px;
    line-height: 22px;
  }
}
.expona-chat-interface .expona-answer-wrapper .chat-text {
  font-weight: 400;
}

.expona-chat-interface .expona-answer-wrapper .chat-text a {
  color: #ffd0d8;
  text-decoration: underline;
}

.expona-chat-interface .typing-indicator {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 6px;
}

.expona-chat-interface .typing-indicator span {
  display: block;
  width: 6px;
  height: 6px;
  background-color: #ffd0d8;
  animation: typing-bounce 1.4s infinite ease-in-out both;
}

.expona-chat-interface .typing-indicator span:nth-child(1) {
  animation-delay: -0.32s;
}

.expona-chat-interface .typing-indicator span:nth-child(2) {
  animation-delay: -0.16s;
}

@keyframes typing-bounce {
  0%, 80%, 100% {
    transform: scale(0.5);
    opacity: 0.3;
  }
  40% {
    transform: scale(1);
    opacity: 1;
  }
}
/* .expona-chat-interface .expona-answer-wrapper {
  max-height: 40vh;
  overflow-y: auto;
  padding-right: 16px;
}

.expona-chat-interface .expona-answer-wrapper::-webkit-scrollbar {
  width: 6px;
}
.expona-chat-interface .expona-answer-wrapper::-webkit-scrollbar-track {
  background: transparent;
}
.expona-chat-interface .expona-answer-wrapper::-webkit-scrollbar-thumb {
  background: rgba(255, 255, 255, 0.2);
  border-radius: 4px;
}
.expona-chat-interface .expona-answer-wrapper::-webkit-scrollbar-thumb:hover {
  background: rgba(255, 255, 255, 0.4);
} */
.expona-chat-interface .answer-actions {
  display: flex;
  gap: 16px;
  margin-top: 20px;
}

.expona-chat-interface .answer-action-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  background: transparent;
  border: none;
  cursor: pointer;
  opacity: 0.45;
  transition: opacity 0.2s ease;
}

.expona-chat-interface .answer-action-btn:hover {
  opacity: 1;
}

.expona-chat-interface .action-icon {
  width: 24px;
  height: 24px;
  display: block;
}

.expona-chat-interface .chat-footer-hint {
  position: absolute;
  bottom: 80px;
  left: 50%;
  transform: translateX(-50%);
  color: rgba(255, 255, 255, 0.5);
  font-size: 18px;
  line-height: 26px;
  font-weight: 300;
}

.expona-chat-interface .hint-mobile {
  display: none;
}

.expona-chat-interface .new-question-wrapper {
  /* display: inline-flex; */
  /* flex-direction: column; */
  /* align-items: flex-start; */
  max-width: 100%;
  /* Plays automatically the moment the row is injected into the chat, so the
     input never flashes in at full opacity before JS can class it. The
     textarea and return button then stagger in on top of this (see below). */
  animation: new-question-in 0.6s cubic-bezier(0.16, 1, 0.3, 1) both;
  will-change: transform, opacity, filter;
}

@keyframes new-question-in {
  from {
    opacity: 0;
    transform: translate3d(0, 22px, 0) scale3d(0.96, 0.96, 1);
    filter: blur(8px);
  }
  to {
    opacity: 1;
    transform: translate3d(0, 0, 0) scale3d(1, 1, 1);
    filter: blur(0);
  }
}
/* Staggered children — each lifts in just behind the wrapper itself. */
@keyframes new-question-child-in {
  from {
    opacity: 0;
    transform: translate3d(0, 10px, 0);
  }
  to {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
}
.expona-chat-interface .new-question-input {
  background: transparent;
  border: none;
  outline: none;
  color: #fff;
  font-size: 18px;
  font-weight: 300;
  line-height: 1.5;
  width: 100%;
  min-width: 250px;
  resize: none;
  overflow-y: auto;
  font-family: var(--font-primary, "Lexend", sans-serif);
  animation: new-question-child-in 0.5s cubic-bezier(0.16, 1, 0.3, 1) 0.12s both;
  /* height: 28px;
  max-height: 120px;
  padding-right: 12px; */
}

/* Custom Scrollbar for New Question Input */
.expona-chat-interface .new-question-input::-webkit-scrollbar {
  width: 6px;
}

.expona-chat-interface .new-question-input::-webkit-scrollbar-track {
  background: transparent;
}

.expona-chat-interface .new-question-input::-webkit-scrollbar-thumb {
  background: rgba(255, 255, 255, 0.2);
  border-radius: 4px;
}

.expona-chat-interface .new-question-input::-webkit-scrollbar-thumb:hover {
  background: rgba(255, 255, 255, 0.4);
}

.expona-chat-interface .new-question-return {
  margin: 12px 0 0 !important;
  /* Plain `opacity: 1` (not !important) still beats .press-return-container's
     `opacity: 0` on specificity — and unlike !important it lets the keyframes
     below actually drive the fade. */
  opacity: 1;
  animation: new-question-child-in 0.5s cubic-bezier(0.16, 1, 0.3, 1) 0.26s both;
}

@media (max-width: 768px) {
  .expona-chat-interface {
    padding-bottom: 0;
  }

  .expona-chat-interface .chat-container {
    grid-template-columns: 30px 1fr;
    grid-auto-flow: dense;
    row-gap: 40px;
  }

  .expona-chat-interface .expona-answer-wrapper {
    max-height: none;
  }

  /* Baseline: container padding-left 20px + icon axis 6px inside the node cell */
  .expona-chat-interface .chat-container::before {
    left: 26px;
  }

  .expona-chat-interface .chat-node-center::before {
    left: 6px;
    /* align with the absolutely positioned node icon */
    height: calc(100% + 40px);
    /* row height + mobile row-gap */
  }

  .expona-chat-interface .chat-message-left,
.expona-chat-interface .chat-message-right {
    text-align: left;
    padding: 0;
  }

  .expona-chat-interface .chat-node-center {
    grid-column: 1;
    position: relative;
    justify-content: flex-start;
  }

  .expona-chat-interface .chat-node-center .node-icon {
    position: absolute;
    left: 6px;
    margin-left: 0;
    transform: translateX(-50%);
  }

  .expona-chat-interface .node-icon {
    width: 12px;
    height: 12px;
    margin-top: 4px;
  }

  .expona-chat-interface .node-icon.empty {
    border: 1px solid #ffd0d8;
    background: #373742;
  }

  .expona-chat-interface .chat-col-node {
    grid-column: 1;
  }

  .expona-chat-interface .chat-col-content {
    grid-column: 2;
  }

  .expona-chat-interface .chat-col-empty {
    display: none;
  }

  .expona-chat-interface .expona-answer-wrapper .chat-text {
    font-weight: 300;
  }

  .expona-chat-interface .chat-meta {
    color: #ffd0d8;
    font-size: 12px;
    line-height: 18px;
    letter-spacing: 1.8px;
    margin-bottom: 12px;
    text-transform: none;
  }

  .expona-chat-interface .chat-footer-hint {
    position: relative;
    bottom: auto;
    left: auto;
    transform: none;
    margin-top: 20px;
    margin-bottom: 20px;
    text-align: left;
    padding-left: 48px;
    font-size: 16px;
    line-height: 26px;
  }

  .expona-chat-interface .hint-desktop {
    display: none;
  }

  .expona-chat-interface .hint-mobile {
    display: inline;
  }
}
/* Ask Expona reCAPTCHA Inline Container */
#inline-captcha-container {
  display: none;
  flex: 1;
  align-items: center;
  justify-content: center;
  text-align: center;
}

#inline-captcha-container .captcha-fallback p {
  color: rgba(255, 255, 255, 0.7);
  margin-bottom: 20px;
}

/* Responsive Hamburger & Mobile Menu Container */
.main-header .hamburger-btn {
  display: none;
  background: none;
  border: none;
  cursor: pointer;
  flex-direction: column;
  justify-content: space-between;
  align-items: flex-end;
  width: 28px;
  height: 20px;
  padding: 0;
  z-index: 1002;
  /* Above the mobile menu container */
}

.hamburger-line {
  display: block;
  width: 100%;
  height: 2px;
  background-color: var(--text-primary);
  transition: all 0.3s ease;
}

.hamburger-line:nth-child(3) {
  width: 80%;
}

/* Change hamburger color when header is dark */
.main-header:is(.header-dark, .mega-menu-open) .hamburger-line {
  background-color: #fff;
}

/* Open state for hamburger */
.main-header .hamburger-btn.open .hamburger-line {
  background-color: #fff !important;
}

.main-header .hamburger-btn.open .hamburger-line:nth-child(1) {
  transform: translateY(9px) rotate(45deg);
}

.main-header .hamburger-btn.open .hamburger-line:nth-child(2) {
  opacity: 0;
}

.main-header .hamburger-btn.open .hamburger-line:nth-child(3) {
  transform: translateY(-9px) rotate(-45deg);
}

.mobile-menu-container {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  /* dvh with a vh fallback: on mobile browsers 100vh is the LARGE viewport —
     the height the page has once the address bar has retracted — so a drawer
     sized in vh runs under the browser chrome and its last rows and footer are
     unreachable, which is the drawer "scrolling differently" on a phone than in
     a narrow desktop window. dvh tracks the viewport that is actually visible. */
  height: 100vh;
  /* stylelint-disable-next-line */
  height: 100dvh;
  background: #373742 url(../static/assets/images/latest/grain.png) center center;
  z-index: 1003;
  /* Above everything */
  visibility: hidden;
  transform: translateX(100%);
  display: flex;
  flex-direction: column;
  padding: 0;
  /* The slide is the whole effect — no opacity in it. `transition: all` used to
     fade the panel out at the same time as it left, so for the entire 0.4s it
     was a semi-transparent sheet still covering the screen and the page read
     straight through it. A drawer slides away; it doesn't dissolve.

     visibility instead of opacity for the resting state, flipped at the END of
     the close so the panel stays painted for the whole slide — flipping it on
     frame one would take the panel off screen before the slide could be seen.
     It also keeps the parked panel out of the accessibility tree and out of
     the layout's overflow, which opacity: 0 alone would not. */
  transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), visibility 0s linear 0.4s;
}

.mobile-menu-container .mobile-menu-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 24px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

.mobile-menu-container .mobile-logo-img {
  height: 24px;
  width: auto;
}

.mobile-menu-container .mobile-menu-actions {
  display: flex;
  align-items: center;
  gap: 16px;
}

/* ================================================
   Language Picker — Mobile (.mobile-menu-container)
   Always dark; no media query needed — the container
   itself is mobile-only (hidden on desktop).
   ================================================ */
.mobile-menu-container .lang-picker {
  position: relative;
}

.mobile-menu-container .lang-picker__trigger {
  display: flex;
  align-items: center;
  gap: 10px;
  background: none;
  cursor: pointer;
  padding: 6px 10px;
  color: #fff;
  border: 0;
  font-family: var(--font-primary);
  font-size: 18px;
  font-weight: 300;
  line-height: 30px;
}

.mobile-menu-container .lang-picker.is-open .lang-picker__trigger {
  background: #2f2f39;
}

.mobile-menu-container .lang-picker__globe,
.mobile-menu-container .lang-picker__caret {
  color: #fff;
  flex-shrink: 0;
  transition: color 0.2s ease;
}

.mobile-menu-container .lang-picker__trigger:hover .lang-picker__globe,
.mobile-menu-container .lang-picker.is-open .lang-picker__globe {
  color: #ea1b3d;
}

.mobile-menu-container .lang-picker__dropdown {
  display: none;
  position: absolute;
  top: 100%;
  right: 0;
  background: #2f2f39;
  border: 0;
  border-top: none;
  border-radius: 0;
  padding: 4px 4px 6px;
  min-width: 100%;
  flex-direction: column;
  z-index: 200;
}

.mobile-menu-container .lang-picker.is-open .lang-picker__dropdown {
  display: flex;
}

.mobile-menu-container .lang-picker__opt.is-active {
  display: none;
}

.mobile-menu-container .lang-picker__opt {
  display: flex;
  align-items: center;
  gap: 8px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 7px 10px;
  font-family: var(--font-primary);
  font-size: 18px;
  font-weight: 300;
  line-height: 30px;
  color: #fff;
  width: 100%;
  text-align: left;
}

.mobile-menu-container .lang-picker__opt::before {
  content: "";
  width: 13px;
  height: 13px;
  border-radius: 50%;
  border: 1.5px solid rgba(255, 255, 255, 0.4);
  flex-shrink: 0;
}

.mobile-menu-container .lang-picker__opt:hover {
  background: rgba(255, 255, 255, 0.08);
}

.mobile-menu-container .mobile-close-btn {
  background: rgba(255, 255, 255, 0);
  border: 1px solid rgba(255, 255, 255, 0.2);
  color: #fff;
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all 0.3s ease;
}

.mobile-menu-container .mobile-close-btn:hover {
  background: rgba(255, 255, 255, 0.2);
}

.mobile-menu-container.active {
  visibility: visible;
  transform: translateX(0);
  /* Opening: painted from frame zero so the slide-in is visible too. */
  transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), visibility 0s linear 0s;
}

/* ── Drawer content — settles in behind the slide ───────────────────────────
   The panel arriving as one rigid block is what made it feel flat: everything
   inside was already in its final position before the drawer had finished
   moving, so there was nothing to watch once it landed. Each row now carries
   the last of the distance itself, entering from the same direction the panel
   came from and landing just after it does.

   Same construction as the mega menu at the top of this file: both directions
   are plain transitions, and a transition takes its timing from the state it
   is heading TOWARDS — so the staggered entry delays live on the .active rules
   and the (deliberately undelayed) exit lives on the base rules. Closing is
   quick and unstaggered on purpose: on the way out the drawer itself is the
   movement, and a reversed stagger would just hold the eye on a panel that has
   already left. */
.mobile-menu-container .mobile-menu-header,
.mobile-menu-container .mobile-nav-item,
.mobile-menu-container .mobile-menu-footer {
  opacity: 0;
  transform: translate3d(18px, 0, 0);
  /* Closing: all together, and gone before the panel is. */
  transition: opacity 0.14s ease 0s, transform 0.14s ease 0s;
}

.mobile-menu-container.active .mobile-menu-header,
.mobile-menu-container.active .mobile-nav-item,
.mobile-menu-container.active .mobile-menu-footer {
  opacity: 1;
  transform: translate3d(0, 0, 0);
  /* Opening: hangs back until the drawer is on its way, then follows it in. */
  transition: opacity 0.35s ease 0.1s, transform 0.35s cubic-bezier(0.16, 1, 0.3, 1) 0.1s;
}

/* The stagger. Written out per position because this is plain CSS with no loop
   available — eight covers the nav comfortably, and any item past the eighth
   simply shares the last step rather than breaking. */
.mobile-menu-container.active .mobile-nav-item:nth-child(1) {
  transition-delay: 0.15s;
}

.mobile-menu-container.active .mobile-nav-item:nth-child(2) {
  transition-delay: 0.2s;
}

.mobile-menu-container.active .mobile-nav-item:nth-child(3) {
  transition-delay: 0.25s;
}

.mobile-menu-container.active .mobile-nav-item:nth-child(4) {
  transition-delay: 0.3s;
}

.mobile-menu-container.active .mobile-nav-item:nth-child(5) {
  transition-delay: 0.35s;
}

.mobile-menu-container.active .mobile-nav-item:nth-child(6) {
  transition-delay: 0.4s;
}

.mobile-menu-container.active .mobile-nav-item:nth-child(7) {
  transition-delay: 0.45s;
}

.mobile-menu-container.active .mobile-nav-item:nth-child(n+8) {
  transition-delay: 0.5s;
}

.mobile-menu-container.active .mobile-menu-footer {
  transition-delay: 0.34s;
}

@media (prefers-reduced-motion: reduce) {
  .mobile-menu-container,
.mobile-menu-container.active,
.mobile-menu-container .mobile-menu-header,
.mobile-menu-container .mobile-nav-item,
.mobile-menu-container .mobile-menu-footer,
.mobile-menu-container.active .mobile-menu-header,
.mobile-menu-container.active .mobile-nav-item,
.mobile-menu-container.active .mobile-menu-footer {
    transition: none;
    transition-delay: 0s;
  }
}
.mobile-menu-container .mobile-menu-inner {
  width: 100%;
  flex: 1;
  display: flex;
  flex-direction: column;
  /* x then y. Scrolling only on y: the rows enter from 18px to the right, and
     leaving x to compute to auto (which it would if only overflow-y were set)
     is enough transform overflow to flash a horizontal scrollbar mid-animation. */
  overflow: hidden auto;
  /* Stop at this list's own ends instead of handing the leftover scroll to the
     page underneath. The JS lock (js/shared.js) is what normally prevents that,
     but scroll chaining is a separate mechanism from overflow — and on iOS,
     where overflow:hidden on the root is not a dependable touch lock, chaining
     is exactly how the page ends up moving behind an open drawer. */
  overscroll-behavior: contain;
}

.mobile-menu-container .mobile-menu-footer {
  padding: 24px;
  margin-top: auto;
  margin-bottom: 40px;
}

.mobile-menu-container .mobile-bottom-card {
  background: #2a2a32;
  padding: 24px;
}

.mobile-menu-container .mobile-bottom-card p {
  font-size: 14px;
  color: #fff;
  font-weight: 300;
  margin-bottom: 10px;
  line-height: 1.5;
}

.mobile-menu-container .mobile-bottom-card .cta {
  color: #fff;
  text-decoration: underline;
  font-size: 14px;
  font-weight: 500;
  letter-spacing: 0.5px;
  text-transform: uppercase;
}

@media (max-width: 1024px) {
  .header-container .nav-menu,
.header-container .cta-section {
    display: none;
    /* Hide default desktop menu on tablet/mobile */
  }

  .main-header .hamburger-btn {
    display: flex;
  }

  .hamburger-btn.open .hamburger-line:nth-child(3) {
    width: 100%;
  }
}
/* Mobile Accordion Menu Styles */
.mobile-menu-container .mobile-nav-list {
  list-style: none;
  padding: 0;
  margin: 0;
}

.mobile-menu-container .mobile-nav-item {
  border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}

.mobile-menu-container .mobile-nav-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 20px 24px;
  cursor: pointer;
  color: #fff;
  font-size: 24px;
  font-weight: 300;
  transition: background 0.3s ease;
}

.mobile-menu-container .mobile-nav-icon {
  font-size: 16px;
  color: rgb(255, 255, 255);
  transition: transform 0.3s ease;
}

.mobile-menu-container .mobile-nav-item.active .mobile-nav-icon {
  transform: rotate(180deg);
}

.mobile-menu-container .mobile-nav-content {
  display: none;
  padding: 10px 40px 20px;
  border-top: 1px solid rgba(255, 255, 255, 0.1);
}

.mobile-menu-container .mobile-submenu-group {
  margin-top: 24px;
}

.mobile-menu-container .mobile-submenu-group:first-child {
  margin-top: 10px;
}

.mobile-menu-container .mobile-submenu-heading {
  color: #ffd0d8;
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 1.5px;
  margin-bottom: 8px;
  font-weight: 600;
}

.mobile-menu-container .mobile-submenu-list {
  list-style: none;
  padding: 0;
  margin: 0;
}

.mobile-menu-container .mobile-submenu-list li {
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

.mobile-menu-container .mobile-submenu-list li:last-child {
  border-bottom: none;
}

.mobile-menu-container .mobile-submenu-list a {
  display: block;
  padding: 12px 0;
  color: #fff;
  font-size: 18px;
  text-decoration: none;
  font-weight: 300;
  transition: color 0.3s ease;
}

/* hover: hover only — on touch (iPhone/Safari) :hover sticks to whatever sits
   under the finger and, as the accordion slides open under a resting fingertip,
   walks down the list one link at a time. With `transition: color` on the base
   rule that reads as each option flashing red on its own, unprompted. Desktop
   pointers still get the hover colour. */
@media (hover: hover) {
  .mobile-menu-container .mobile-submenu-list a:hover {
    color: var(--accent-red);
  }
}
/* Tap feedback. The global -webkit-tap-highlight-color is off (css/custom.css),
   so a tap on a submenu option otherwise registers with no visual confirmation
   The option turns red on press
   (:active) and stays red until the next page loads (.is-selected, stamped by
   js/shared.js) so the visitor can see which item they picked. No highlight
   box; accordion header rows are left as-is. */
.mobile-menu-container .mobile-submenu-list a:active,
.mobile-menu-container .mobile-submenu-list a.is-selected {
  color: var(--accent-red);
  /* Snap straight to crimson — the base rule's `transition: color 0.3s` was
     animating white → red through its pale midpoint, and on a quick tap +
     page change that pinkish in-between frame was all the visitor saw ("looks
     peach"). Instant on; the fade-back to white when the class clears still
     rides the base transition. */
  transition: none;
}

/* Language (hide old toggle at mobile — lang-picker is always visible) */
.main-header .lang-toggle,
.mobile-menu-container .lang-toggle {
  display: none;
}

/* Expona Export Modal Styles */
/* Open/close is driven entirely by the .is-open class — no display toggling in
   JS, so removing the class replays the same dissolve/scale in reverse.
   `visibility` is what keeps the closed modal inert; it flips instantly on open
   but waits out the transition on close so the exit stays visible. */
.expona-export-modal {
  position: fixed;
  inset: 0;
  z-index: 2001;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.5rem;
  visibility: hidden;
  pointer-events: none;
  transition: visibility 0s linear 0.45s;
}

.expona-export-modal.is-open {
  visibility: visible;
  pointer-events: auto;
  transition: visibility 0s linear 0s;
}

.expona-export-modal__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(47, 47, 57, 0.75);
  /* Frosts the page behind the modal so body copy underneath is unreadable.
     Blurs in alongside the tint rather than snapping on. */
  backdrop-filter: blur(0) saturate(100%);
  -webkit-backdrop-filter: blur(0) saturate(100%);
  transition: opacity 0.45s cubic-bezier(0.16, 1, 0.3, 1), backdrop-filter 0.45s cubic-bezier(0.16, 1, 0.3, 1);
  cursor: pointer;
  opacity: 0;
}

.expona-export-modal.is-open .expona-export-modal__backdrop {
  opacity: 1;
  backdrop-filter: blur(5px) saturate(120%);
  -webkit-backdrop-filter: blur(5px) saturate(120%);
}

.expona-export-modal__dialog {
  clip-path: polygon(24px 0, 100% 0, 100% calc(100% - 24px), calc(100% - 24px) 100%, 0 100%, 0 24px);
  position: relative;
  width: 100%;
  max-width: 32.5rem;
  max-height: calc(100vh - 3rem);
  padding: 3rem;
  background: #fff9ed;
  overflow-y: auto;
  opacity: 0;
  /* Collapsed to a single point at the centre of the viewport — opening grows
     it out from that point, closing swallows it back into it. The blur makes
     it read as a dissolve rather than a plain resize.

     Easing is declared per direction: this rule is what plays on CLOSE (a
     quick accelerating collapse), .is-open below is what plays on OPEN. A
     springy curve is only safe on the way out — reversing an overshoot into
     scale 0 would push it negative and flip the dialog inside out. */
  transform: scale3d(0, 0, 1);
  transform-origin: center center;
  filter: blur(12px);
  transition: opacity 0.4s cubic-bezier(0.4, 0, 1, 1), transform 0.4s cubic-bezier(0.5, 0, 0.75, 0), filter 0.4s cubic-bezier(0.4, 0, 1, 1);
  will-change: transform, opacity, filter;
}

.expona-export-modal.is-open .expona-export-modal__dialog {
  opacity: 1;
  transform: scale3d(1, 1, 1);
  filter: blur(0);
  transition: opacity 0.45s cubic-bezier(0.16, 1, 0.3, 1), transform 0.55s cubic-bezier(0.34, 1.56, 0.64, 1), filter 0.45s cubic-bezier(0.16, 1, 0.3, 1);
}

.expona-export-modal__close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  padding: 0;
  color: #373742;
  background: none;
  border: none;
  opacity: 0.7;
  cursor: pointer;
  transition: opacity 0.25s ease;
}

.expona-export-modal__close .ib-icon {
  filter: brightness(0.24);
}

.expona-export-modal__close:hover, .expona-export-modal__close:focus-visible {
  opacity: 1;
}

.expona-export-modal #exponaExportTitle {
  font-family: "Lexend", -apple-system, blinkmacsystemfont, "Segoe UI", roboto, sans-serif;
  font-weight: 500;
  font-size: max(1.5rem, 12px);
  line-height: 1.4166666667;
  letter-spacing: -0.04em;
  margin: 0 0 0.5rem;
  padding-right: 2.5rem;
  color: #373742;
}

.expona-export-modal p {
  font-family: "Lexend", -apple-system, blinkmacsystemfont, "Segoe UI", roboto, sans-serif;
  font-weight: 300;
  font-size: max(1rem, 12px);
  line-height: 1.625;
  letter-spacing: 0;
  margin: 0;
  color: #676775;
}

.expona-export-modal__label {
  font-family: "Lexend", -apple-system, blinkmacsystemfont, "Segoe UI", roboto, sans-serif;
  font-weight: 300;
  font-size: max(1rem, 12px);
  line-height: 1.625;
  letter-spacing: 0;
  display: block;
  margin: 1.5rem 0 0.5rem;
  color: #373742;
}

.expona-export-modal__required {
  color: #373742;
}

.expona-export-modal #exponaExportEmail {
  display: block;
  width: 100%;
  height: 3.5rem;
  margin: 0 0 2rem;
  padding: 1rem;
  background: #fff;
  border: 0.63px solid #e6e6ed;
  border-radius: 0;
  outline: none;
  font-family: "Lexend", -apple-system, blinkmacsystemfont, "Segoe UI", roboto, sans-serif;
  font-weight: 300;
  font-size: max(1rem, 12px);
  line-height: 1.625;
  letter-spacing: 0;
  color: #373742;
  transition: border-color 0.25s ease;
}

.expona-export-modal #exponaExportEmail::-moz-placeholder {
  color: #676775;
}

.expona-export-modal #exponaExportEmail::placeholder {
  color: #676775;
}

.expona-export-modal #exponaExportEmail:focus {
  border-color: #373742;
}

.expona-export-modal__actions {
  display: flex;
  align-items: center;
  gap: 1.5rem;
}

.expona-export-modal__actions .cell {
  flex: 0 0 auto;
}

.expona-export-modal__actions .ib-btn--primary {
  min-width: 8.75rem;
}

.expona-export-modal #exponaExportLoadingState,
.expona-export-modal #exponaExportSuccessState,
.expona-export-modal #exponaExportErrorState {
  padding: 1.5rem 0;
  text-align: center;
}

.expona-export-modal #exponaExportLoadingState p,
.expona-export-modal #exponaExportSuccessState p,
.expona-export-modal #exponaExportErrorState p {
  font-family: "Lexend", -apple-system, blinkmacsystemfont, "Segoe UI", roboto, sans-serif;
  font-weight: 300;
  font-size: max(1.125rem, 12px);
  line-height: 1.6666666667;
  letter-spacing: 0;
  color: #373742;
}

.expona-export-modal #exponaExportErrorMsg {
  color: #ea1b3d;
}

.expona-export-modal #exponaExportRetry {
  margin-top: 1rem;
  padding: 0;
  font-family: "Lexend", -apple-system, blinkmacsystemfont, "Segoe UI", roboto, sans-serif;
  font-weight: 600;
  font-size: max(0.875rem, 12px);
  line-height: 1.5714285714;
  letter-spacing: 0;
  color: #ea1b3d;
  background: none;
  border: none;
  text-decoration: underline;
  text-underline-offset: 4px;
  cursor: pointer;
}

@media (max-width: 1024px) {
  .expona-export-modal {
    padding: 1rem;
  }

  .expona-export-modal__dialog {
    clip-path: polygon(20px 0, 100% 0, 100% calc(100% - 20px), calc(100% - 20px) 100%, 0 100%, 0 20px);
    padding: 2.5rem 1.5rem 2rem;
  }

  .expona-export-modal #exponaExportTitle {
    font-family: "Lexend", -apple-system, blinkmacsystemfont, "Segoe UI", roboto, sans-serif;
    font-weight: 400;
    font-size: max(1.25rem, 12px);
    line-height: 1.4;
    letter-spacing: 0;
  }

  .expona-export-modal__label {
    margin-top: 1rem;
  }

  .expona-export-modal #exponaExportEmail {
    margin-bottom: 1.5rem;
  }

  .expona-export-modal__actions {
    flex-direction: column-reverse;
    gap: 1rem;
  }

  .expona-export-modal__actions .cell {
    display: flex;
    justify-content: center;
    width: 100%;
  }

  .expona-export-modal__actions .ib-btn--primary,
.expona-export-modal__actions .ib-btn--primary .ib-btn__inner {
    width: 100%;
  }
}
/* ==========================================
   12. Expona Fold
   ========================================== */
.expona-footer-parent.combined-fold {
  height: auto;
  min-height: 100vh;
  flex-direction: column;
  overflow: visible;
  padding-top: 0;
  justify-content: flex-start;
  align-items: stretch;
  position: relative;
}

.expona-footer-parent .expona-section {
  background: linear-gradient(90deg, #20212a 0%, #22242a 100%);
  color: #fff;
  display: flex;
  align-items: center;
  overflow: hidden;
  position: relative;
}

/* .expona-footer-parent .expona-section::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: url(../assets/images/grain.png);
  background-repeat: repeat;
  background-size: cover;
  mix-blend-mode: normal;
  opacity: 1;
  pointer-events: none;
  z-index: 2;
} */
.expona-footer-parent .expona-container {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  position: relative;
}

.expona-footer-parent .expona-content-left {
  flex: 1;
  max-width: 752px;
  padding-right: 40px;
  z-index: 1;
}

.expona-footer-parent .expona-content-right {
  /* flex: 1;
  display: flex;
  justify-content: flex-end;
  height: 80%;
  */
  height: 625px;
  /* position: absolute;
  left: 0;
  bottom: -220px; */
}

.expona-footer-parent .expona-video {
  /* width: 100%; */
  /* max-width: 500px;  */
  /* height: auto;
  object-fit: contain; */
  /* border-radius: 20px; */
  position: absolute;
  right: 0;
  bottom: -49px;
  border: 0;
  outline: 0;
  /* Fades the left/right edges to transparent so the section's dark
     background shows through instead of a hard video-rectangle seam. */
  -webkit-mask-image: linear-gradient(to right, transparent 0%, #000 12%, #000 88%, transparent 100%);
          mask-image: linear-gradient(to right, transparent 0%, #000 12%, #000 88%, transparent 100%);
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
}

.expona-footer-parent .expona-title {
  font-size: 59px;
  font-weight: 200;
  margin-bottom: 32px;
  line-height: 78px;
  letter-spacing: -2.36px;
}

.expona-footer-parent .expona-title strong {
  font-weight: 300;
}

.expona-footer-parent .expona-input-wrapper {
  position: relative;
  width: 100%;
  background-color: #fff9ed;
  display: flex;
  align-items: center;
  padding: 0 16px 0 0;
}

.expona-footer-parent .expona-input {
  flex: 1;
  background: transparent;
  border: none;
  font-size: 20px;
  color: var(--text-primary);
  padding: 15px 16px;
  line-height: 34px;
  font-weight: 300;
  outline: none;
}

.expona-footer-parent .expona-input::-moz-placeholder {
  color: #373742;
}

.expona-footer-parent .expona-input::placeholder {
  color: #373742;
}

.expona-footer-parent .expona-submit {
  background: transparent;
  border: none;
  color: var(--accent-red);
  font-size: 20px;
  cursor: pointer;
  padding: 10px;
  transition: transform 0.3s ease;
}

.expona-footer-parent .expona-submit:hover {
  transform: scale(1.1);
}

.expona-footer-parent .expona-input-border {
  position: absolute;
  bottom: 0;
  left: 0;
  height: 4px;
  width: 100%;
  background: linear-gradient(90deg, #284cba 0%, #ea1b3d 100%);
}

/* ==========================================
   13. Footer Fold
   ========================================== */
.expona-footer-parent .site-footer {
  width: 100%;
  /* Was #373742 (the body-text charcoal, --text-primary) — a visibly lighter,
     more purple gray than .expona-section directly above it (#20212a family),
     producing a seam where the fold changes color. #20212a matches that
     section and is the "deepest dark, used in footer" tone documented in
     CLAUDE.md's color tokens. */
  background-color: #20212a;
  color: #e6e6ed;
  display: flex;
  flex-direction: column;
  flex: 1;
  padding: 0;
  transition: padding 0.5s ease, background-color 0.5s ease;
}

.expona-footer-parent .site-footer::after {
  content: "";
  position: absolute;
  inset: 0;
  /* Fixed 256px tile, NOT grain.png + `cover`. `cover` scales one copy of the
     image to the box, so every time the footer's height changes — a mobile
     accordion row opening/closing — the grain rescales and visibly drifts.
     A native-size repeating tile is pixel-locked to the top-left corner, so it
     holds perfectly still while the footer grows. Same swap, same reason, as
     .sn-content-slider__slide::after and the other grain-tile sections. */
  background-image: url(../static/assets/images/latest/grain-tile.png);
  background-repeat: repeat;
  background-size: auto;
  background-position: top left;
  mix-blend-mode: normal;
  opacity: 1;
  pointer-events: none;
  z-index: 2;
}

/* scroll-end "open up" effect is desktop-only; never applies on mobile/tablet */
@media (min-width: 1025px) {
  .expona-footer-parent .site-footer.scroll-end {
    padding-left: 40px !important;
    padding-right: 40px !important;
    background-color: #7c2235 !important;
  }

  .expona-footer-parent .site-footer.scroll-end .footer-bottom-red {
    opacity: 1;
    transition: opacity 0.5s ease, visibility 0.5s ease;
    margin-left: -40px;
    margin-right: -40px;
    width: calc(100% + 80px);
  }
}
.expona-footer-parent .footer-top {
  flex: 1;
  display: flex;
  align-items: center;
  background-color: #373742;
  position: relative;
}

.expona-footer-parent .footer-container {
  width: 100%;
  padding-top: 40px;
  padding-bottom: 112px;
}

.expona-footer-parent .footer-links-grid {
  display: flex;
  flex-direction: column;
  gap: 30px;
  margin-bottom: 112px;
  padding: 64px 12px;
}

/* Desktop: accordion header is layout-transparent; icon hidden */
.expona-footer-parent .footer-accordion-header {
  display: contents;
}

.expona-footer-parent .footer-accordion-icon {
  display: none;
}

.expona-footer-parent .footer-row {
  display: flex;
  width: 100%;
}

.expona-footer-parent .footer-label {
  font-size: 16px;
  line-height: 24px;
  font-weight: 500;
  white-space: nowrap;
  padding-right: 10px;
}

.expona-footer-parent .footer-dots {
  flex: 1;
  /* leader absorbs the label-width variation between rows */
  height: 3px;
  margin: 12px 20px 12px 0;
  background-image: repeating-linear-gradient(to right, #fff9ed 0, #fff9ed 3px, transparent 3px, transparent 14px);
  background-size: 100% 3px;
  background-repeat: no-repeat;
}

.expona-footer-parent .footer-links {
  flex: 1;
  font-size: 16px;
  color: #fff;
  font-weight: 300;
  text-align: left;
  line-height: 24px;
  text-transform: uppercase;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: flex-start;
}

.expona-footer-parent .footer-links a {
  transition: color 0.3s;
  color: #fff;
}

/* hover: hover only — on touch (iPhone/Safari) :hover sticks to whatever sits
   under the finger and, as the accordion slides open under a resting fingertip,
   walks down the link list one item at a time, each flashing red unprompted
   (same bug fixed in the header mobile menu). Desktop pointers keep the hover
   colour. */
@media (hover: hover) {
  .expona-footer-parent .footer-links a:hover {
    color: var(--accent-red);
  }
}
/* Tap feedback (mobile accordion). The global -webkit-tap-highlight-color is
   off (css/custom.css), so a tap on a footer link otherwise registers with no
   visual confirmation. The link
   turns red on press (:active) and stays red until the next page loads
   (.is-selected, stamped by js/shared.js). No highlight box; accordion header
   rows are left as-is. */
@media (max-width: 1024px) {
  .expona-footer-parent .footer-links a:active,
.expona-footer-parent .footer-links a.is-selected {
    color: var(--accent-red);
    /* Snap straight to crimson — the base rule's `transition: color 0.3s` was
       animating white → red through its pale midpoint, and on a quick tap +
       page change that pinkish frame was all the visitor saw ("looks peach").
       Instant on; the fade-back when the class clears still rides the base
       transition. */
    transition: none;
  }
}
.expona-footer-parent .footer-links .sep {
  color: rgba(255, 255, 255, 0.3);
}

/* Desktop 3-column alignment: the links column has a fixed width
   (same geometry as the original 110px label + 30% dots + margins),
   so every row's links start at the same x regardless of label length */
@media (min-width: 1025px) {
  .expona-footer-parent .footer-links {
    flex: 0 0 calc(70% - 150px);
  }
}
/* Desktop dotted-leader layout: the dots live as a background on the links
   cell and the links themselves mask them with the footer background, so
   the leader always ends a fixed 8px before the text — even when links wrap.
   Applies only to rows whose markup has the .footer-links-line wrapper;
   pages without it keep the legacy .footer-dots bar. */
@media (min-width: 1025px) {
  .expona-footer-parent .footer-row:has(.footer-links-line) {
    align-items: baseline;
  }

  .expona-footer-parent .footer-row:has(.footer-links-line) .footer-dots {
    display: none;
  }

  .expona-footer-parent .footer-row:has(.footer-links-line) .footer-links {
    display: block;
    flex: 1;
    min-width: 0;
    max-width: none;
    overflow: hidden;
    margin-left: 0;
    background-image: repeating-linear-gradient(to right, #fff9ed 0, #fff9ed 3px, transparent 3px, transparent 14px);
    background-size: 100% 3px;
    background-repeat: no-repeat;
    background-position: 0 11px;
  }

  .expona-footer-parent .footer-links-line {
    /* Must stay equal to .site-footer's background-color — this mask relies
       on matching it exactly, not on the color choice itself. */
    background: #20212a;
    padding: 0 8px;
    /* -webkit-box-decoration-break: clone;
    box-decoration-break: clone; */
  }

  .expona-footer-parent .footer-links-line a {
    white-space: nowrap;
  }

  .expona-footer-parent .footer-links-line .sep {
    margin: 0 4px;
  }
}
.expona-footer-parent .break-mobile {
  display: none;
}

.expona-footer-parent .footer-middle {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 112px;
}

.expona-footer-parent .footer-newsletter h3 {
  font-size: 20px;
  line-height: 34px;
  font-weight: 300;
  margin-bottom: 16px;
  color: #e6e6ed;
}

.expona-footer-parent .newsletter-input-wrapper {
  display: flex;
  align-items: center;
  gap: 16px;
  /* Was a fixed 503px, so on any viewport where .footer-newsletter's actual
     flex space (in .footer-middle, next to .footer-brand) came in narrower
     than that — laptop-width viewports above the ≤1024px stack breakpoint,
     where the mobile override below doesn't apply yet — the wrapper held its
     hardcoded width and just overflowed .footer-newsletter, clipped by
     whatever ancestor set overflow:hidden. The button (fixed-size, nowrap
     label) took the visible cut; the input shrinks instead. */
  width: 100%;
  max-width: 503px;
}

.expona-footer-parent .footer-newsletter input[type=email].newsletter-input {
  flex: 1;
  /* Flex items get an automatic minimum size floored at their CONTENT size
     before flex-shrink ever runs, and for a plain <input> with no `size`
     attribute that content size is the browser's default control width
     (~170-200px) — not 0. So `flex: 1` alone couldn't shrink this input past
     that floor: once the row (input + 16px gap + the fixed-size, nowrap
     SUBSCRIBE button) needed more width than was actually available, the
     button — the only sibling with nothing left to give — was the one that
     overflowed and got clipped. min-width: 0 removes that floor so the input
     is what shrinks, and the button never has to. */
  min-width: 0;
  background-color: rgba(255, 255, 255, 0.1);
  border: 1px solid rgba(255, 255, 255, 0.2);
  color: #fff;
  padding: 11px 20px;
  font-size: 14px;
  line-height: 22px;
  outline: none;
  transition: border-color 0.3s;
  height: auto;
  border-radius: 0;
  font-weight: 600;
}

.expona-footer-parent .newsletter-input::-moz-placeholder {
  color: #fff;
  opacity: 1;
}

.expona-footer-parent .newsletter-input::placeholder {
  color: #fff;
  opacity: 1;
}

.expona-footer-parent .newsletter-input:focus {
  border-color: rgba(255, 255, 255, 0.5);
}

.expona-footer-parent .footer-brand {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 20px;
}

.expona-footer-parent .footer-logo {
  height: 32px;
}

.expona-footer-parent .social-icons {
  display: flex;
  gap: 16px;
}

.expona-footer-parent .social-icons a {
  display: flex;
  align-items: center;
  justify-content: center;
  color: #e6e6ed;
  transition: color 0.3s, opacity 0.3s;
  opacity: 0.8;
}

.expona-footer-parent .social-icons a:hover {
  color: #fff;
  opacity: 1;
}

.expona-footer-parent .footer-bottom-links {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 12px;
  line-height: 18px;
  font-weight: 300;
  color: #fff;
  letter-spacing: 0.5px;
}

.expona-footer-parent .footer-bottom-links .legal-links a {
  margin-left: 24px;
  transition: color 0.3s;
  color: #fff;
  font-weight: 500;
  letter-spacing: 1.2px;
}

.expona-footer-parent .footer-bottom-links .legal-links a:hover {
  color: var(--accent-red);
}

.expona-footer-parent .footer-bottom-red {
  padding: 80px 0;
  position: relative;
  overflow: hidden;
  opacity: 0;
  transition: opacity 0.5s ease, visibility 0.5s ease;
}

body .expona-footer-parent .footer-red-container {
  display: flex;
  justify-content: space-between;
  align-items: center;
  position: relative;
  z-index: 2;
  gap: 16px;
  /* Added to override wordpress style */
  max-width: var(--container-width-padd);
  width: 100%;
  padding-left: 60px;
  padding-right: 60px;
  margin-left: auto;
  margin-right: auto;
}

/* Added to override wordpress style */
body .expona-footer-parent .footer-red-container::after {
  display: none;
}

.expona-footer-parent .footer-red-text {
  font-size: 32px;
  font-weight: 250;
  line-height: 38px;
  letter-spacing: -1.28px;
}

.expona-footer-parent .condition-2,
.expona-footer-parent .condition-3,
.expona-footer-parent .condition-4,
.expona-footer-parent .condition-5,
.expona-footer-parent .condition-6,
.expona-footer-parent .condition-7 {
  display: none;
}

.expona-footer-parent .condition-1,
.expona-footer-parent .condition-2,
.expona-footer-parent .condition-3,
.expona-footer-parent .condition-4,
.expona-footer-parent .condition-5,
.expona-footer-parent .condition-6,
.expona-footer-parent .condition-7 {
  padding: 20px 0;
}

/* condition-2 only: member avatars + meta replace the button */
.expona-footer-parent .footer-members {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-shrink: 0;
}

.expona-footer-parent .footer-avatars {
  display: flex;
}

.expona-footer-parent .footer-avatar {
  width: 46px;
  height: 46px;
  border-radius: 50%;
  -o-object-fit: cover;
     object-fit: cover;
  margin-left: -10px;
  background: #d9d9d9;
  border: 1.14px solid #fff;
}

.expona-footer-parent .footer-avatar:first-child {
  margin-left: 0;
}

.expona-footer-parent .footer-member-meta {
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.expona-footer-parent .footer-member-count {
  font-size: 18px;
  line-height: 30px;
  font-weight: 600;
  color: #fff;
}

.expona-footer-parent .footer-member-tags {
  font-size: 14px;
  line-height: 20px;
  font-weight: 300;
  color: #ffd0d8;
}

.expona-footer-parent .footer-wave-placeholder {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 60px;
  background-image: repeating-linear-gradient(90deg, rgba(255, 255, 255, 0.05) 0, rgba(255, 255, 255, 0.05) 2px, transparent 2px, transparent 8px);
  z-index: 1;
}

.expona-footer-parent .footer-wave-placeholder-podcast {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 54px;
  background-image: url(../static/assets/images/latest/footer-frame.png);
  background-repeat: repeat-x;
  background-size: auto 100%;
  background-position: bottom center;
  z-index: 1;
}

@media (max-width: 1440px) {
  .expona-footer-parent .expona-content-left {
    max-width: 680px;
  }
}
@media (max-width: 1200px) {
  .expona-footer-parent .expona-content-left {
    max-width: 540px;
  }
}
/* Responsive Overrides */
@media (max-width: 1024px) {
  .expona-footer-parent .expona-container {
    flex-direction: column;
    justify-content: center;
    gap: 40px;
  }

  .expona-footer-parent .expona-content-left,
.expona-footer-parent .expona-content-right {
    flex: none;
    width: 100%;
    padding-right: 0;
  }

  .expona-footer-parent .expona-content-right {
    height: 40vh;
  }

  .expona-footer-parent .expona-content-left {
    max-width: 100%;
    padding: 80px 0;
  }

  .expona-footer-parent .footer-middle {
    flex-direction: column;
    align-items: flex-start;
    gap: 40px;
  }

  .expona-footer-parent .footer-brand {
    align-items: flex-start;
  }

  body .expona-footer-parent .footer-red-container {
    flex-direction: column;
    align-items: flex-start;
    gap: 20px;
  }
}
@media (max-width: 1024px) {
  .expona-footer-parent .expona-content-left {
    margin: 60px 0 20px;
  }

  .expona-footer-parent .expona-title {
    font-size: 36px;
    font-weight: 250;
    line-height: 42px;
    white-space: normal;
    margin-bottom: 32px;
  }

  .expona-footer-parent .footer-container {
    padding: 0;
  }

  .expona-footer-parent .footer-links-grid {
    gap: 0;
    margin-bottom: 60px;
  }

  .expona-footer-parent .expona-video {
    position: absolute;
    right: -70px;
    bottom: 0;
    border: 0;
    outline: 0;
    height: 50vh;
    -o-object-position: top right;
       object-position: top right;
    -webkit-mask-image: none;
            mask-image: none;
  }

  /* Each row becomes a full-width accordion item */
  .expona-footer-parent .footer-row {
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
  }

  .expona-footer-parent .footer-middle {
    gap: 90px;
    padding: 30px;
    align-items: center;
    margin-bottom: 0;
  }

  .expona-footer-parent .footer-brand {
    gap: 32px;
  }

  .expona-footer-parent .footer-newsletter h3 {
    font-weight: 200;
    margin-bottom: 16px;
    font-size: 32px;
    letter-spacing: -4%;
    text-align: center;
  }

  body .expona-footer-parent .footer-red-container {
    padding: 0;
  }

  .expona-footer-parent .footer-bottom-links {
    gap: 24px;
    justify-content: center;
    align-items: center;
    font-size: 12px;
    flex-direction: column;
    padding: 20px 30px 50px;
  }

  /* Accordion header: label left, chevron right */
  .expona-footer-parent .footer-accordion-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 18px 30px;
    cursor: pointer;
    width: 100%;
  }

  .expona-footer-parent .footer-accordion-icon {
    display: block;
    font-size: 13px;
    color: rgba(255, 255, 255, 0.6);
    transition: transform 0.3s ease;
  }

  .expona-footer-parent .footer-accordion-item.active .footer-accordion-icon {
    transform: rotate(180deg);
  }

  /* Dots hidden, links full-width left-aligned, hidden by default */
  .expona-footer-parent .footer-dots {
    display: none;
  }

  .expona-footer-parent .footer-accordion-content {
    display: none;
    text-align: left;
    max-width: 100%;
    line-height: 2;
    padding: 10px 30px 20px;
  }

  .expona-footer-parent .break-mobile {
    display: inline;
  }

  /* Red bottom section: always visible on mobile with its own background */
  .expona-footer-parent .footer-bottom-red {
    opacity: 1;
    background-color: #7c2235;
    padding: 50px 50px 96px;
  }

  .expona-footer-parent .footer-red-text {
    font-weight: 250;
    font-size: 32px;
    line-height: 38px;
    letter-spacing: -4%;
  }
}
@media (max-width: 1024px) {
  /* .expona-footer-parent .site-footer::after,
  .expona-footer-parent .expona-section::before {
    display: none;
  } */
  .expona-footer-parent .expona-container {
    padding: 0;
    gap: 0;
  }

  .expona-footer-parent .expona-content-left {
    padding: 40px 20px;
    margin: 0;
  }

  .expona-footer-parent .expona-title {
    font-size: 32px;
    font-weight: 250;
    line-height: 42px;
    white-space: normal;
    margin-bottom: 36px;
    letter-spacing: 1.28px;
    text-align: center;
  }

  .expona-footer-parent .footer-container {
    padding: 0;
  }

  .expona-footer-parent .footer-links-grid {
    padding: 40px 20px;
    gap: 0;
    margin-bottom: 0;
    border: 0;
  }

  .expona-footer-parent .expona-video {
    position: absolute;
    right: -70px;
    bottom: 0;
    border: 0;
    outline: 0;
    height: 50vh;
    -o-object-position: top right;
       object-position: top right;
    -webkit-mask-image: none;
            mask-image: none;
  }

  /* Each row becomes a full-width accordion item */
  .expona-footer-parent .footer-row {
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
  }

  .expona-footer-parent .footer-middle {
    gap: 40px;
    padding: 40px 20px;
    margin-bottom: 0;
    border-bottom: 1.01px solid rgba(255, 255, 255, 0.0705882353);
    align-items: flex-start;
  }

  .expona-footer-parent .footer-middle .footer-newsletter,
.expona-footer-parent .footer-middle .footer-brand,
.expona-footer-parent .newsletter-input-wrapper {
    width: 100%;
  }

  .expona-footer-parent .footer-brand {
    gap: 32px;
  }

  /* Same iOS focus-zoom floor as .expona-input above — this field is 14px at
     every width, so it zooms on tap too. Only the narrow layout is raised;
     desktop keeps 14px, where no browser does this. Padding compensates so the
     field's height does not change: 22 + 2x11 and 24 + 2x10 are both 44px. */
  .expona-footer-parent .footer-newsletter input[type=email].newsletter-input {
    font-size: 16px;
    line-height: 24px;
    padding: 10px 20px;
  }

  .expona-footer-parent .footer-newsletter h3 {
    margin-bottom: 16px;
    font-weight: 400;
    font-size: 20px;
    line-height: 28px;
    letter-spacing: 0;
    text-align: left;
  }

  .expona-footer-parent .footer-bottom-links {
    gap: 16px;
    align-items: flex-start;
    font-size: 12px;
    flex-direction: column;
    padding: 20px;
  }

  .expona-footer-parent .footer-bottom-links .legal-links {
    display: flex;
    gap: 24px;
    flex-wrap: wrap;
  }

  .expona-footer-parent .footer-bottom-links .legal-links a {
    margin-left: 0;
    transition: color 0.3s;
    color: #fff;
    letter-spacing: 1.2px;
  }

  body .expona-footer-parent .footer-red-container {
    padding: 0;
  }

  .expona-footer-parent .footer-red-text {
    font-size: 16px;
    font-weight: 300;
    line-height: 26px;
    letter-spacing: 0;
  }

  /* Accordion header: label left, chevron right */
  .expona-footer-parent .footer-accordion-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 13px 30px;
    cursor: pointer;
    width: 100%;
  }

  .expona-footer-parent .footer-label {
    letter-spacing: 0;
    width: 100%;
    color: #e6e6ed;
  }

  .expona-footer-parent .footer-accordion-icon {
    display: block;
    font-size: 13px;
    color: #fff9ed;
    transition: transform 0.3s ease;
  }

  .expona-footer-parent .footer-accordion-item.active .footer-accordion-icon {
    transform: rotate(180deg);
  }

  /* Dots hidden, links full-width left-aligned, hidden by default */
  .expona-footer-parent .footer-dots {
    display: none;
  }

  .expona-footer-parent .footer-links a {
    padding: 10px 0;
    width: 100%;
    display: block;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
  }

  .expona-footer-parent .footer-links a:last-child {
    border-bottom: none;
  }

  .expona-footer-parent .footer-links .sep {
    display: none;
  }

  .expona-footer-parent .footer-accordion-content {
    display: none;
    text-align: left;
    max-width: 100%;
    line-height: 2;
    padding: 10px 50px;
  }

  .expona-footer-parent .break-mobile {
    display: inline;
  }

  /* Red bottom section: always visible on mobile with its own background */
  .expona-footer-parent .footer-bottom-red {
    opacity: 1;
    background-color: #7c2235;
    padding: 30px 20px 70px;
  }

  .expona-footer-parent .condition-1,
.expona-footer-parent .condition-2,
.expona-footer-parent .condition-3,
.expona-footer-parent .condition-4,
.expona-footer-parent .condition-5,
.expona-footer-parent .condition-6,
.expona-footer-parent .condition-7 {
    padding: 10px 0;
  }

  .expona-footer-parent .expona-input-wrapper {
    padding: 2px 16px;
  }

  /* 16px is a FLOOR here, not a type choice — do not lower it.
     iOS Safari zooms the whole viewport in whenever a form control it is
     focusing computes to a font-size below 16px, and never zooms back out on
     blur. That is the "the box gets bigger when you tap it" report from iPhone;
     Android has no such behaviour, which is why it only reproduces on one
     platform. The alternative cure — maximum-scale/user-scalable on the
     viewport meta — disables pinch-zoom for everyone and fails WCAG 1.4.4, so
     the font-size floor is the one that keeps the page accessible.

     line-height and padding are re-balanced against the larger text so the
     wrapper's height is unchanged: 18 + 2x10 and 20 + 2x9 are both 38px. */
  .expona-footer-parent .expona-input {
    font-size: 16px;
    padding: 9px 0;
    line-height: 20px;
  }
}
/* The narrow-viewport placeholder copy (EXPONA_STATIC_NARROW in js/shared.js —
   "Start with the challenge on your mind") is wider than the field on a small
   phone, and an <input> can't wrap, so it was being clipped.

   The fix shrinks the PLACEHOLDER only, via ::placeholder { font-size }. The
   input's own font-size stays 16px, so iOS Safari's focus-zoom heuristic (see
   the rule above — it reads the control's computed font-size, not the
   placeholder's) is unaffected, and anything the visitor actually types is
   still 16px. Safari versions that ignore font-size on ::placeholder just fall
   back to 16px — the text clips as before but nothing else regresses. */
@media (max-width: 480px) {
  .expona-footer-parent .expona-input::-moz-placeholder {
    font-size: 13px;
  }
  .expona-footer-parent .expona-input::placeholder {
    font-size: 13px;
  }
}
/* ───────────────────────────────────────────────────────────────────────────
   Mobile footer accordion — CSS grid-rows collapse.

   Was a jQuery slideUp/slideDown. Same as the header mobile-nav accordion in
   mechanism, but the header only reads as smooth because it is position:fixed
   and isolated — collapsing a submenu inside it never touches page layout. The
   footer is in normal flow, so a height animation there reflows every section
   below it (newsletter, bottom links, condition bars) on jQuery's 13ms timer,
   which isn't refresh-synced and stutters on close.

   grid-template-rows 0fr↔1fr on the panel (one child, .footer-accordion-inner,
   added by js/shared.js §4) is a single browser-driven transition — the page
   still reflows, but it is scheduled with the frame instead of against it.
   Single-track form: no `auto` sibling track, so `1fr` resolves cleanly to the
   inner's exact height. The inner carries NO padding — `1fr` then tracks a
   fixed target while the container's own vertical padding animates in
   separately on the same curve (the .sn-accordion__body model).
   ─────────────────────────────────────────────────────────────────────────── */
@media (max-width: 1024px) {
  .expona-footer-parent .footer-accordion-ready .footer-accordion-content {
    display: grid;
    /* Full width — .footer-links is display:flex; as a grid its default
       implicit column is `auto` and shrinks to the widest link. */
    grid-template-columns: 1fr;
    grid-template-rows: 0fr;
    /* .footer-links carries flex:1 (grow) + gap:8px from its flex layout —
       neither is wanted here, and flex-grow can stretch the collapsed panel. */
    flex: 0 0 auto;
    gap: 0;
    overflow: hidden;
    /* Vertical padding lives HERE (the grid container), not on the inner item:
       a stretched grid item in a 0fr row still renders its own padding, so the
       closed panel would sit ~20px tall — the gap under the label. It is 0 when
       closed and animates in with the row, exactly as .sn-accordion__body does
       (assets/scss/pages/servicenow/_scroll-tabs-section.scss). Horizontal
       padding is constant (mirrors the old .footer-accordion-content). */
    padding: 0 50px;
    transition: grid-template-rows 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94), padding-top 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94), padding-bottom 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
  }

  .expona-footer-parent .footer-accordion-ready .footer-accordion-item.active .footer-accordion-content {
    grid-template-rows: 1fr;
    padding-top: 10px;
    padding-bottom: 10px;
  }

  .expona-footer-parent .footer-accordion-inner {
    min-height: 0;
    overflow: hidden;
    visibility: hidden;
    transition: visibility 0s linear 0.3s;
  }

  .expona-footer-parent .footer-accordion-item.active .footer-accordion-inner {
    visibility: visible;
    transition: visibility 0s;
  }
}
/* Desktop keeps the flat dotted-leader row: the JS-added wrapper must not
   become a layout box between .footer-links and its <a>/<span> flex items. */
@media (min-width: 1025px) {
  .expona-footer-parent .footer-accordion-inner {
    display: contents;
  }
}
:root {
  /* Color Palette */
  --bg-primary: #fff9ed;
  /* Cream Mist */
  --text-primary: #373742;
  /* Charcoal Gray */
  --text-secondary: #373742;
  /* Medium Gray */
  --text-disabled: #a7a7b0;
  --accent-red: #ea1b3d;
  /* InfoBeans Crimson */
  --accent-peach: #ffd0d8;
  --border-color: rgb(103, 103, 117, .15);
  /* Fonts */
  --font-primary: "Lexend", -apple-system, blinkmacsystemfont, "Segoe UI", roboto, sans-serif;
  /* Transitions */
  --transition-smooth: all .4s cubic-bezier(.16, 1, .3, 1);
  --transition-slow: all .8s cubic-bezier(.16, 1, .3, 1);
  --transition-translate: all 1s cubic-bezier(.16, 1, .3, 1);
  --text-gray: #676775;
  --container-width: 93.5rem;
  /* 1496px */
  /* --container-width-padd: 98.5rem; */
  /* 1576px */
  --container-width-padd: 101rem;
  /* 1616px */
}

/* ==========================================
   2. Reset & General Styles
   ========================================== */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  /* Kill the translucent blue/grey flash Android Chrome paints over any
     tapped <a>/<button>. Our own :active / :focus-visible styles are the
     intended tap feedback. */
  -webkit-tap-highlight-color: transparent;
}

button,
input,
textarea,
select {
  font-family: inherit;
}

html,
body {
  width: 100%;
  /* min-height instead of height: 100% — native scroll needs the document
     to grow beyond the viewport. height: 100% was only safe when
     ScrollSmoother virtualised scroll; without it the page is capped at
     100vh and GSAP pin spacers cannot expand the scroll range. */
  min-height: 100%;
  font-family: var(--font-primary);
  background-color: var(--bg-primary);
  color: var(--text-primary);
  line-height: 1.6;
  overflow-x: clip;
  /* scroll-behavior: smooth removed — GSAP manages all scroll adjustments
     (pin setup, refresh, scrollTo). CSS smooth-scroll causes jitter and
     incorrect trigger positions when GSAP moves the scroll position
     programmatically.

     Removing it here is NOT sufficient on WordPress, where this file is
     concatenated with every other page's CSS and the investors page carries a
     bare `html { scroll-behavior: smooth }`. The actual override lives in
     css/style.css section 0 (`html:has(#what-we-ship)`), which is keyed off
     the pinned sections and marked !important so it also beats the inline
     style GSAP writes back after a refresh. Keep the two in step. */
}

/* While scroll is locked, hand back the width the vanished scrollbar took —
   padding not width, so the header stays full-bleed (js/shared.js). */
html.scroll-locked,
html.scroll-locked .main-header {
  padding-right: var(--scrollbar-comp, 0);
}

/* Gutter, not padding: the menu's own scrollbar already fills that space. */
html.scroll-locked .header-container .mega-menu {
  scrollbar-gutter: stable;
}

/* Scrollbar customization — every width, not desktop only.
   The @media (min-width: 769px) gate this used to sit behind was what left the   homepage with the browser's default chunky scrollbar below 769px while every
   other page kept the thin cream one: the landing pages get the same four rules
   from assets/scss/pages/_base.scss, where they are NOT breakpoint-scoped, and
   that unscoped copy is what was painting their mobile scrollbars. Keep the two
   in step — dropping the gate here is what makes the homepage and the drawer's
   own scroller match the rest of the site at mobile widths. */
::-webkit-scrollbar {
  width: 8px;
}

::-webkit-scrollbar-track {
  background: var(--bg-primary);
}

::-webkit-scrollbar-thumb {
  background: var(--text-disabled);
  border-radius: 4px;
}

::-webkit-scrollbar-thumb:hover {
  background: var(--text-secondary);
}

/* ==========================================
   3. Typography Systems
   ========================================== */
h1,
h2,
h3,
h4,
h5,
h6 {
  font-weight: 600;
  line-height: 1.2;
}

a {
  color: inherit;
  text-decoration: none;
  transition: var(--transition-smooth);
}

/* ==========================================
   4. Grid & Container Layouts
   ========================================== */
.container,
.custom-container {
  max-width: var(--container-width-padd);
  width: 100%;
  padding-left: 60px;
  padding-right: 60px;
  margin-left: auto;
  margin-right: auto;
}

/* Responsive Container Adjustments */
@media (max-width: 1024px) {
  .container {
    padding-left: 20px;
    padding-right: 20px;
  }
}
@media (max-width: 768px) {
  .custom-container {
    padding-left: 20px;
    padding-right: 20px;
  }
}
.cky-switch input[type=checkbox]:checked {
  background: #ea1b3d !important;
}

button.cky-btn.cky-btn-reject {
  color: #f8f6f6 !important;
  background-color: #211d1d !important;
}

button.cky-btn.cky-btn-accept {
  background: #ea1b3d !important;
  border-color: #ea1b3d !important;
  color: #fff !important;
}

.cky-notice-btn-wrapper .cky-btn {
  border-color: #ea1b3d !important;
  color: #ea1b3d !important;
}

.cky-revisit-bottom-left:hover::before, .cky-revisit-bottom-left:hover::after {
  display: none !important;
}

@media (max-width: 576px) {
  .page-template-page-leadership-2026 .cky-revisit-bottom-left {
    left: auto !important;
    right: 15px !important;
  }

  .cky-preference-center {
    max-height: 90vh !important;
    max-height: 90dvh !important;
    /* real visible height, accounts for mobile browser chrome */
    overflow: hidden !important;
    display: flex !important;
    flex-direction: column !important;
    top: 5vh !important;
    transform: none !important;
  }

  /* keep header and footer fixed in place, only the middle content scrolls */
  .cky-preference-center .cky-preference-header,
.cky-preference-center .cky-preference-footer {
    flex: 0 0 auto !important;
  }

  .cky-preference-center .cky-preference-body-wrapper {
    flex: 1 1 auto !important;
    overflow-y: auto !important;
    -webkit-overflow-scrolling: touch !important;
  }
}

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vc3R5bGVzL2NvbW1vbi5jc3MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vY29tbW9uLnNjc3MiLCJ3ZWJwYWNrOi8vL2NvbW1vbi91dGlscy9tYWluLnNjc3MiLCJ3ZWJwYWNrOi8vL2NvbW1vbi91dGlscy9idXR0b25zLnNjc3MiLCJ3ZWJwYWNrOi8vL2NvbW1vbi9oZWFkZXIvbWFpbi5zY3NzIiwid2VicGFjazovLy9jb21tb24vZm9vdGVyL21haW4uc2NzcyIsIndlYnBhY2s6Ly8vY29tbW9uL2N1c3RvbS5zY3NzIiwid2VicGFjazovLy9jb21tb24vY29va2lleWVzLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb21wb25lbnRzXG4gKi9cbkBpbXBvcnQgXCIuL2NvbW1vbi91dGlscy9tYWluLnNjc3NcIjtcbkBpbXBvcnQgXCIuL2NvbW1vbi9oZWFkZXIvbWFpbi5zY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21tb24vZm9vdGVyL21haW4uc2Nzc1wiO1xuQGltcG9ydCBcIi4vY29tbW9uL2N1c3RvbS5zY3NzXCI7XG5AaW1wb3J0IFwiLi9jb21tb24vY29va2lleWVzLnNjc3NcIjtcbiIsIi8qKlxuICogQ29tcG9uZW50c1xuICovXG5AaW1wb3J0IFwiLi9idXR0b25zLnNjc3NcIjsiLCJAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgLmliLWRlc2t0b3Atb25seSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjlweCkge1xuICAuaWItbW9iaWxlLW9ubHkge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogbm8tcHJlZmVyZW5jZSkge1xuICAuaWItbS1yZXZlYWwge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAyNHB4LCAwKTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IC41NXMgY3ViaWMtYmV6aWVyKC4yNSwgLjQ2LCAuNDUsIC45NCksIHRyYW5zZm9ybSAuNTVzIGN1YmljLWJlemllciguMjUsIC40NiwgLjQ1LCAuOTQpO1xuICAgIHRyYW5zaXRpb24tZGVsYXk6IHZhcigtLWliLW0tcmV2ZWFsLWRlbGF5LCAwcyk7XG4gICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybSwgb3BhY2l0eTtcbiAgfVxuICAuaWItbS1yZXZlYWwuaXMtdmlzaWJsZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgaWItYXJyb3ctc2xpZGUge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgNDUlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoN3B4KTtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIDQ2JSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01cHgpO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cbi5pYi1idG4ge1xuICAtLV9iZzogI2VhMWIzZDtcbiAgLS1fYmctcHJlc3M6ICNhYTE0MmQ7XG4gIC0tX2NvbG9yOiAjZmZmO1xuICAtLV9ib3JkZXI6IHRyYW5zcGFyZW50O1xuICAtLV9zaGFkb3c6ICNmZmQwZDg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICBoZWlnaHQ6IDQ4cHg7XG4gIHBhZGRpbmc6IDA7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWhlYWRpbmcpO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cbi5pYi1idG46OmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldDogMDtcbiAgei1pbmRleDogLTE7XG4gIGJhY2tncm91bmQ6IHZhcigtLV9zaGFkb3cpO1xuICBjbGlwLXBhdGg6IHBvbHlnb24oMTBweCAwLCAxMDAlIDAsIDEwMCUgY2FsYygxMDAlIC0gMTBweCksIGNhbGMoMTAwJSAtIDEwcHgpIDEwMCUsIDAgMTAwJSwgMCAxMHB4KTtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgLjI1cyBjdWJpYy1iZXppZXIoLjE2LCAxLCAuMywgMSksIHRyYW5zZm9ybSAuMjVzIGN1YmljLWJlemllciguMTYsIDEsIC4zLCAxKTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG4uaWItYnRuX19pbm5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBnYXA6IDhweDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgcGFkZGluZzogMCAyMnB4O1xuICBjb2xvcjogdmFyKC0tX2NvbG9yKTtcbiAgYmFja2dyb3VuZDogdmFyKC0tX2JnKTtcbiAgbGluZS1oZWlnaHQ6IDI2cHg7XG4gIGxldHRlci1zcGFjaW5nOiAwO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGNsaXAtcGF0aDogcG9seWdvbigxMHB4IDAsIDEwMCUgMCwgMTAwJSBjYWxjKDEwMCUgLSAxMHB4KSwgY2FsYygxMDAlIC0gMTBweCkgMTAwJSwgMCAxMDAlLCAwIDEwcHgpO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIC4yNXMgY3ViaWMtYmV6aWVyKC4xNiwgMSwgLjMsIDEpLCBjb2xvciAuMjVzIGN1YmljLWJlemllciguMTYsIDEsIC4zLCAxKTtcbn1cbi5pYi1idG5fX2lubmVyOjpiZWZvcmUge1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0OiAwO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1fYm9yZGVyKTtcbiAgY2xpcC1wYXRoOiBwb2x5Z29uKDEwcHggMCwgMTAwJSAwLCAxMDAlIGNhbGMoMTAwJSAtIDEwcHgpLCBjYWxjKDEwMCUgLSAxMHB4KSAxMDAlLCAwIDEwMCUsIDAgMTBweCwgMTBweCAwLCAxMHB4IDEuNXB4LCAxLjVweCAxMHB4LCAxLjVweCBjYWxjKDEwMCUgLSAxLjVweCksIGNhbGMoMTAwJSAtIDEwcHgpIGNhbGMoMTAwJSAtIDEuNXB4KSwgY2FsYygxMDAlIC0gMS41cHgpIGNhbGMoMTAwJSAtIDEwcHgpLCBjYWxjKDEwMCUgLSAxLjVweCkgMS41cHgsIDEwcHggMS41cHgpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAuMjVzIGN1YmljLWJlemllciguMTYsIDEsIC4zLCAxKTtcbn1cbi5pYi1idG5fX2Fycm93IHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjI1cyBjdWJpYy1iZXppZXIoLjE2LCAxLCAuMywgMSksIG9wYWNpdHkgLjI1cyBjdWJpYy1iZXppZXIoLjE2LCAxLCAuMywgMSk7XG59XG4uaWItYnRuX19hcnJvdyBzdmcsIC5pYi1idG5fX2Fycm93LmliLWljb24ge1xuICB3aWR0aDogMTRweDtcbiAgaGVpZ2h0OiAxNHB4O1xufVxuLmliLWJ0bjpob3Zlcjpub3QoOmRpc2FibGVkKTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pOjphZnRlciB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKDRweCwgNHB4KTtcbn1cbi5pYi1idG46Zm9jdXMtdmlzaWJsZSAuaWItYnRuX19pbm5lciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLV9iZy1wcmVzcyk7XG59XG4uaWItYnRuOmFjdGl2ZTpub3QoOmRpc2FibGVkKSAuaWItYnRuX19pbm5lciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLV9iZy1wcmVzcyk7XG59XG4uaWItYnRuOmRpc2FibGVkLCAuaWItYnRuW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0ge1xuICAtLV9iZzogI2E3YTdiMDtcbiAgLS1fYm9yZGVyOiAjYTdhN2IwO1xuICAtLV9jb2xvcjogI2ZmZjtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5pYi1idG4tLXByaW1hcnkge1xuICAtLV9iZzogI2VhMWIzZDtcbiAgLS1fYmctcHJlc3M6ICNhYTE0MmQ7XG4gIC0tX2NvbG9yOiAjZmZmO1xuICAtLV9ib3JkZXI6IHRyYW5zcGFyZW50O1xuICAtLV9zaGFkb3c6ICNmZmQwZDg7XG59XG5cbi5pYi1idG4tLXByaW1hcnktbGlnaHQge1xuICAtLV9iZzogI2ZmZjllZDtcbiAgLS1fYmctcHJlc3M6ICNmZmVmZDE7XG4gIC0tX2NvbG9yOiAjNjc2Nzc1O1xuICAtLV9ib3JkZXI6IHRyYW5zcGFyZW50O1xuICAtLV9zaGFkb3c6ICNmZmQwZDg7XG59XG4uaWItYnRuLS1wcmltYXJ5LWxpZ2h0OmRpc2FibGVkLCAuaWItYnRuLS1wcmltYXJ5LWxpZ2h0W2FyaWEtZGlzYWJsZWQ9dHJ1ZV0ge1xuICAtLV9iZzogI2E3YTdiMDtcbiAgLS1fY29sb3I6ICNmZmY7XG59XG5cbi5pYi1idG4tLXNlY29uZGFyeSB7XG4gIC0tX2JnOiB0cmFuc3BhcmVudDtcbiAgLS1fYmctcHJlc3M6IHRyYW5zcGFyZW50O1xuICAtLV9jb2xvcjogI2VhMWIzZDtcbiAgLS1fYm9yZGVyOiAjZWExYjNkO1xuICAtLV9zaGFkb3c6ICNmZmQwZDg7XG59XG4uaWItYnRuLS1zZWNvbmRhcnk6Zm9jdXMtdmlzaWJsZSB7XG4gIC0tX2JvcmRlcjogI2FhMTQyZDtcbiAgLS1fY29sb3I6ICNhYTE0MmQ7XG59XG4uaWItYnRuLS1zZWNvbmRhcnk6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpIHtcbiAgLS1fYm9yZGVyOiAjYWExNDJkO1xuICAtLV9jb2xvcjogI2FhMTQyZDtcbn1cbi5pYi1idG4tLXNlY29uZGFyeTpkaXNhYmxlZCwgLmliLWJ0bi0tc2Vjb25kYXJ5W2FyaWEtZGlzYWJsZWQ9dHJ1ZV0ge1xuICAtLV9iZzogdHJhbnNwYXJlbnQ7XG4gIC0tX2NvbG9yOiAjYTdhN2IwO1xuICAtLV9ib3JkZXI6ICNhN2E3YjA7XG59XG5cbi5pYi1idG4tLXNlY29uZGFyeS1saWdodCB7XG4gIC0tX2JnOiB0cmFuc3BhcmVudDtcbiAgLS1fYmctcHJlc3M6IHRyYW5zcGFyZW50O1xuICAtLV9jb2xvcjogI2ZmZjtcbiAgLS1fYm9yZGVyOiAjZmZmO1xuICAtLV9zaGFkb3c6ICNmZmQwZDg7XG59XG4uaWItYnRuLS1zZWNvbmRhcnktbGlnaHQ6aG92ZXI6bm90KDpkaXNhYmxlZCk6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSB7XG4gIC0tX2JnOiAjZWExYjNkO1xuICAtLV9ib3JkZXI6IHRyYW5zcGFyZW50O1xufVxuLmliLWJ0bi0tc2Vjb25kYXJ5LWxpZ2h0OmRpc2FibGVkLCAuaWItYnRuLS1zZWNvbmRhcnktbGlnaHRbYXJpYS1kaXNhYmxlZD10cnVlXSB7XG4gIC0tX2JnOiB0cmFuc3BhcmVudDtcbiAgLS1fY29sb3I6ICNhN2E3YjA7XG4gIC0tX2JvcmRlcjogI2E3YTdiMDtcbn1cblxuLmliLWJ0bi0tZ2hvc3Qge1xuICAtLV9jb2xvcjogI2VhMWIzZDtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuLmliLWJ0bi0tZ2hvc3Q6OmFmdGVyIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5pYi1idG4tLWdob3N0IC5pYi1idG5fX2lubmVyIHtcbiAgcGFkZGluZzogMnB4IDA7XG4gIGhlaWdodDogYXV0bztcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGNsaXAtcGF0aDogbm9uZTtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gIHRleHQtdW5kZXJsaW5lLW9mZnNldDogM3B4O1xuICB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiAxLjVweDtcbiAgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBjdXJyZW50Q29sb3I7XG4gIHRyYW5zaXRpb246IGNvbG9yIC4yNXMgY3ViaWMtYmV6aWVyKC4xNiwgMSwgLjMsIDEpLCB0ZXh0LWRlY29yYXRpb24tY29sb3IgLjI1cyBjdWJpYy1iZXppZXIoLjE2LCAxLCAuMywgMSk7XG59XG4uaWItYnRuLS1naG9zdCAuaWItYnRuX19pbm5lcjo6YmVmb3JlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5pYi1idG4tLWdob3N0OmZvY3VzLXZpc2libGUsIC5pYi1idG4tLWdob3N0OmFjdGl2ZTpub3QoOmRpc2FibGVkKSB7XG4gIC0tX2NvbG9yOiAjYWExNDJkO1xufVxuXG4vLyBGb2N1c2VkIC8gcHJlc3NlZDogZGFyayB0ZXh0IGNvbG91ciBvbmx5IOKAlCBubyBiZywgbm8gYm9yZGVyLCBubyByaW5nLlxuLmliLWJ0bi0tZ2hvc3Q6Zm9jdXMtdmlzaWJsZSxcbi5pYi1idG4tLWdob3N0OmFjdGl2ZTpub3QoOmRpc2FibGVkKSB7XG4gIC0tX2NvbG9yOiAjYWExNDJkO1xufVxuXG4uaWItYnRuLS1naG9zdDpmb2N1cy12aXNpYmxlIC5pYi1idG5fX2lubmVyLFxuLmliLWJ0bi0tZ2hvc3Q6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpIC5pYi1idG5fX2lubmVyIHtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbn1cbi5pYi1idG4tLWdob3N0OmRpc2FibGVkLCAuaWItYnRuLS1naG9zdFthcmlhLWRpc2FibGVkPXRydWVdIHtcbiAgLS1fY29sb3I6ICNhN2E3YjA7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uaWItYnRuLS13aXRoLWljb246aG92ZXI6bm90KDpkaXNhYmxlZCk6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSAuaWItYnRuX19hcnJvdyB7XG4gIGFuaW1hdGlvbjogaWItYXJyb3ctc2xpZGUgLjdzIGN1YmljLWJlemllciguMTYsIDEsIC4zLCAxKSBpbmZpbml0ZTtcbn1cblxuLmliLWJ0bi0taWNvbi1vbmx5IHtcbiAgd2lkdGg6IDQ4cHg7XG59XG4uaWItYnRuLS1pY29uLW9ubHkgLmliLWJ0bl9faW5uZXIge1xuICBwYWRkaW5nOiAwO1xufVxuLmliLWJ0bi0taWNvbi1vbmx5OmhvdmVyOm5vdCg6ZGlzYWJsZWQpOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSkgLmliLWJ0bl9fYXJyb3cge1xuICBhbmltYXRpb246IGliLWFycm93LXNsaWRlIC43cyBjdWJpYy1iZXppZXIoLjE2LCAxLCAuMywgMSkgaW5maW5pdGU7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAuaWItYnRuIHtcbiAgICBoZWlnaHQ6IDQ0cHg7XG4gICAgZm9udC1zaXplOiAxNXB4O1xuICB9XG4gIC5pYi1idG5fX2lubmVyIHtcbiAgICBwYWRkaW5nOiAwIDE4cHg7XG4gIH1cbiAgLmliLWJ0bl9fYXJyb3cgc3ZnLCAuaWItYnRuX19hcnJvdy5pYi1pY29uIHtcbiAgICB3aWR0aDogMTNweDtcbiAgICBoZWlnaHQ6IDEzcHg7XG4gIH1cbiAgLmliLWJ0bi0taWNvbi1vbmx5IHtcbiAgICB3aWR0aDogNDRweDtcbiAgfVxuICAuaWItYnRuLS1pY29uLW9ubHkgLmliLWJ0bl9faW5uZXIge1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgU1ZHIFNwcml0ZSBpY29uIGJhc2VcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmliLWljb24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICA1LiBIZWFkZXIgJiBOYXZpZ2F0aW9uIFN0eWxlc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4ubWFpbi1oZWFkZXIge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIHotaW5kZXg6IDEwMDA7XG5cbiAgLyogT25seSB0aGUgaGlkZS9yZXZlYWwgc2xpZGUgZ2V0cyB0aGUgc2xvdyAxcyBlYXNlIOKAlCBiYWNrZ3JvdW5kIHN3YXBzXG4gICAgICh0aGVtZSBjaGFuZ2VzLCBtZWdhIG1lbnUgb3Blbi9jbG9zZSkgZ2V0IHRoZWlyIG93biBmYXN0IHRyYW5zaXRpb24gc29cbiAgICAgdGhleSBuZXZlciBjcm9zc2ZhZGUgdGhyb3VnaCB0aGUgc29saWQgZGFyayBjb2xvciBmb3IgYSBmdWxsIHNlY29uZFxuICAgICAodGhhdCBjcm9zc2ZhZGUgd2FzIHRoZSBcImxvb2tzIGRhcmsgZm9yIGEgbW9tZW50XCIgbGFnIG9uIHRoZW1lIGNoYW5nZSkuICovXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAxcyBjdWJpYy1iZXppZXIoLjE2LCAxLCAuMywgMSksIGJhY2tncm91bmQtY29sb3IgLjNzIGVhc2U7XG5cbiAgLyogYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7ICovXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJnLXByaW1hcnkpO1xufVxuXG4vKiBBcHBsaWVkIGZvciBvbmUgZnJhbWUgd2hlbiB0aGUgbWVnYSBtZW51IE9QRU5TIChqcy9zaGFyZWQuanMpIHNvIHRoZVxuICAgaGVhZGVyJ3Mgb3duIGJhY2tncm91bmQtY29sb3IgdHJhbnNpdGlvbiBjYW4ndCBmYWxsIG91dCBvZiBzeW5jIHdpdGggdGhlXG4gICBpbnN0YW50bHktc3dhcHBlZCBuYXYtbGluay9sb2dvIGNvbG9ycyDigJQgc2VlIGluc3RhbnRIZWFkZXJCYWNrZ3JvdW5kKCkuXG4gICBTY29wZWQgdG8gLm1haW4taGVhZGVyIG9ubHkgKG5vIFwiKlwiKSwgc28gdGhlIG1lZ2EgbWVudSdzIG93biBvcGVuL2Nsb3NlXG4gICB0cmFuc2l0aW9uIGlzIHVudG91Y2hlZC4gVGhlIGNsb3NlIHRha2VzIHRoZSBvcHBvc2l0ZSByb3V0ZSDigJQgc2VlXG4gICAubWVnYS1tZW51LWNsb3NpbmcgYmVsb3cuICovXG4ubWFpbi1oZWFkZXIuaGVhZGVyLWluc3RhbnQtYmcge1xuICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm07XG59XG5cbi8qIOKUgOKUgCBNZWdhIG1lbnUgY2xvc2Ug4oCUIHRoZSBuYXYgY29udGVudCdzIHNoYXJlIG9mIHRoZSByb2xsLXVwIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAganMvc2hhcmVkLmpzIGhvbGRzIC5tZWdhLW1lbnUtY2xvc2luZyBmb3IgdGhlIHdob2xlIGNsb3NlLiBFdmVyeSBvdGhlclxuICAgbGlnaHTihpRkYXJrIHN3YXAgb24gdGhpcyBoZWFkZXIgc3RheXMgYSBoYXJkIGN1dCwgb24gcHVycG9zZTogZHVyaW5nIGFcbiAgIHNjcm9sbC1kcml2ZW4gdGhlbWUgY2hhbmdlIHRoZSBwYWdlIGlzIGFscmVhZHkgbW92aW5nLCBhbmQgb24gYSBtZWdhIG1lbnVcbiAgIG9wZW4gdGhlIHBhbmVsIHVucm9sbGluZyBpcyB3aGF0IHRoZSBleWUgaXMgZm9sbG93aW5nLlxuXG4gICBUaGUgY2xvc2UgaXMgdGhlIG9uZSBtb21lbnQgd2hlcmUgYSBjdXQgaXMgdGhlIGxvdWRlc3QgdGhpbmcgb24gc2NyZWVuIOKAlFxuICAgdGhlIHN3ZWVwIGFycml2ZXMgYXQgdGhlIGJhciBhbmQgZXZlcnl0aGluZyBpbiBpdCBoYXMgdG8gYmVjb21lIGl0c1xuICAgcG9zdC1jbG9zZSBzZWxmLiBUaGUgYmFyJ3Mgc3VyZmFjZSBoYW5kbGVzIHRoYXQgYnkgYmVpbmcgd2lwZWQgYXdheSB3aXRoXG4gICB0aGUgc2FtZSBlZGdlIChzZWUgdGhlIHdpcGUgaW4gdGhlIGRlc2t0b3AgYmxvY2spLiBJdHMgY29udGVudCBjYW4ndCBiZTpcbiAgIHRoZXJlIGlzIG9uZSBuYXYsIG9uZSBsb2dvLCBvbmUgQ1RBLCBub3QgdHdvIGxheWVycyB0byByZXZlYWwgYmV0d2Vlbi4gU29cbiAgIHRoZXkgY3Jvc3NmYWRlIOKAlCBidXQgb24gdGhlIHdpcGUncyBjbG9jaywgMC4xOHMgc3RhcnRpbmcgdGhlIG1vbWVudCB0aGVcbiAgIGVkZ2UgcmVhY2hlcyB0aGUgYmFyLCBzbyB0aGUgdHdvIHJlYWQgYXMgYSBzaW5nbGUgbW92ZW1lbnQgc2V0dGxpbmcgaW5zdGVhZFxuICAgb2YgYSB3aXBlIGZvbGxvd2VkIGJ5IGEgZmFkZS5cblxuICAgVGhlIHZhbHVlcyBvbmx5IG1vdmUgd2hlbiBzaGFyZWQuanMgZHJvcHMgLm1lZ2EtbWVudS1vcGVuLCB3aGljaCBpcyB3aGF0XG4gICB0aGVzZSBzZWxlY3RvcnMgaGFuZyBvZmYgKHNlZSB0aGUgOmlzKC5oZWFkZXItZGFyaywgLm1lZ2EtbWVudS1vcGVuKSBydWxlc1xuICAgdGhyb3VnaG91dCB0aGlzIGZpbGUpLiBFdmVyeXRoaW5nIHRoYXQgc3dhcCByZXBhaW50cyBoYXMgdG8gYmUgbGlzdGVkIGhlcmVcbiAgIG9yIHRoZSBwaWVjZXMgY29tZSBhcGFydCBtaWQtZmFkZS4gLm1haW4taGVhZGVyIGl0c2VsZiBpcyBhYnNlbnQgYmVjYXVzZSBpdFxuICAgbmVlZHMgbm90aGluZyDigJQgaXRzIGJhc2UgcnVsZSBhbHJlYWR5IGNhcnJpZXMgYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2UsXG4gICBhbmQgaXQgY2hhbmdlcyBhdCB0aGUgU1RBUlQgb2YgdGhlIGNsb3NlLCBvdXQgb2Ygc2lnaHQgdW5kZXIgdGhlIGN1cnRhaW4uICovXG4ubWFpbi1oZWFkZXIubWVnYS1tZW51LWNsb3Npbmc6OmJlZm9yZSxcbi5tYWluLWhlYWRlci5tZWdhLW1lbnUtY2xvc2luZyAubmF2LWxpbmssXG4ubWFpbi1oZWFkZXIubWVnYS1tZW51LWNsb3NpbmcgLmJ0bi1jdGEsXG4ubWFpbi1oZWFkZXIubWVnYS1tZW51LWNsb3NpbmcgLmhlYWRlci1kaXZpZGVyLFxuLm1haW4taGVhZGVyLm1lZ2EtbWVudS1jbG9zaW5nIC5hc2stZXhwb25hLXRleHQsXG4ubWFpbi1oZWFkZXIubWVnYS1tZW51LWNsb3NpbmcgLmFzay1leHBvbmEtYnRuLFxuLm1haW4taGVhZGVyLm1lZ2EtbWVudS1jbG9zaW5nIC5sYW5nLXBpY2tlcl9fdHJpZ2dlcixcbi5tYWluLWhlYWRlci5tZWdhLW1lbnUtY2xvc2luZyAubGFuZy1waWNrZXJfX2dsb2JlLFxuLm1haW4taGVhZGVyLm1lZ2EtbWVudS1jbG9zaW5nIC5sYW5nLXBpY2tlcl9fY2FyZXQsXG4ubWFpbi1oZWFkZXIubWVnYS1tZW51LWNsb3NpbmcgLm1vYmlsZS1tZW51LWJ0biAuYmFyLFxuLm1haW4taGVhZGVyLm1lZ2EtbWVudS1jbG9zaW5nIC5oYW1idXJnZXItbGluZSB7XG4gIHRyYW5zaXRpb246XG4gICAgb3BhY2l0eSAuMThzIGN1YmljLWJlemllcigwLCAwLCAuMiwgMSksXG4gICAgY29sb3IgLjE4cyBjdWJpYy1iZXppZXIoMCwgMCwgLjIsIDEpLFxuICAgIGJhY2tncm91bmQtY29sb3IgLjE4cyBjdWJpYy1iZXppZXIoMCwgMCwgLjIsIDEpLFxuICAgIGJvcmRlci1jb2xvciAuMThzIGN1YmljLWJlemllcigwLCAwLCAuMiwgMSk7XG59XG5cbi8qIFRoZSBsb2dvIHBhaXIgbmVlZHMgaXRzIHZpc2liaWxpdHkgdGltZWQgcGVyIGRpcmVjdGlvbiwgc28gaXQgY2FuJ3QgcmlkZSB0aGVcbiAgIHNoYXJlZCBsaXN0IGFib3ZlOiB0aGUgY29weSBvbiBpdHMgd2F5IE9VVCBtdXN0IHN0YXkgcGFpbnRlZCBmb3IgdGhlIHdob2xlXG4gICBmYWRlICh2aXNpYmlsaXR5IGZsaXBzIGF0IHRoZSBlbmQpLCB3aGlsZSB0aGUgb25lIG9uIGl0cyB3YXkgSU4gaGFzIHRvIGJlXG4gICBwYWludGVkIGZyb20gZnJhbWUgemVybyBvciBpdCBwb3BzIGluIGF0IHRoZSBlbmQgaW5zdGVhZCBvZiBmYWRpbmcuIEJvdGhcbiAgIGxhbmQgb24gdGhlIHNhbWUgdHdvIGVsZW1lbnRzLCBzbyDigJQgYXMgd2l0aCB0aGUgbWVnYSBtZW51IHBhbmVsIOKAlCBlYWNoIHN0YXRlXG4gICBjYXJyaWVzIHRoZSBkZWxheSB0aGF0IGJlbG9uZ3MgdG8gdGhlIGRpcmVjdGlvbiBpdCBpcyBoZWFkaW5nIHRvd2FyZHMuICovXG4ubWFpbi1oZWFkZXIubWVnYS1tZW51LWNsb3NpbmcgLmxvZ28tbGlnaHQsXG4ubWFpbi1oZWFkZXIubWVnYS1tZW51LWNsb3Npbmc6aXMoLmhlYWRlci1kYXJrLCAubWVnYS1tZW51LW9wZW4pIC5sb2dvLWRhcmsge1xuICB0cmFuc2l0aW9uOlxuICAgIG9wYWNpdHkgLjE4cyBlYXNlLFxuICAgIHZpc2liaWxpdHkgMHMgbGluZWFyIC4xOHM7XG59XG5cbi5tYWluLWhlYWRlci5tZWdhLW1lbnUtY2xvc2luZzppcyguaGVhZGVyLWRhcmssIC5tZWdhLW1lbnUtb3BlbikgLmxvZ28tbGlnaHQsXG4ubWFpbi1oZWFkZXIubWVnYS1tZW51LWNsb3NpbmcgLmxvZ28tZGFyayB7XG4gIHRyYW5zaXRpb246XG4gICAgb3BhY2l0eSAuMThzIGVhc2UsXG4gICAgdmlzaWJpbGl0eSAwcyBsaW5lYXIgMHM7XG59XG5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC5tYWluLWhlYWRlci5tZWdhLW1lbnUtY2xvc2luZzo6YmVmb3JlLFxuICAubWFpbi1oZWFkZXIubWVnYS1tZW51LWNsb3NpbmcgLmxvZ28taW1nLFxuICAubWFpbi1oZWFkZXIubWVnYS1tZW51LWNsb3NpbmcgLm5hdi1saW5rLFxuICAubWFpbi1oZWFkZXIubWVnYS1tZW51LWNsb3NpbmcgLmJ0bi1jdGEsXG4gIC5tYWluLWhlYWRlci5tZWdhLW1lbnUtY2xvc2luZyAuaGVhZGVyLWRpdmlkZXIsXG4gIC5tYWluLWhlYWRlci5tZWdhLW1lbnUtY2xvc2luZyAuYXNrLWV4cG9uYS10ZXh0LFxuICAubWFpbi1oZWFkZXIubWVnYS1tZW51LWNsb3NpbmcgLmFzay1leHBvbmEtYnRuLFxuICAubWFpbi1oZWFkZXIubWVnYS1tZW51LWNsb3NpbmcgLmxhbmctcGlja2VyX190cmlnZ2VyLFxuICAubWFpbi1oZWFkZXIubWVnYS1tZW51LWNsb3NpbmcgLmxhbmctcGlja2VyX19nbG9iZSxcbiAgLm1haW4taGVhZGVyLm1lZ2EtbWVudS1jbG9zaW5nIC5sYW5nLXBpY2tlcl9fY2FyZXQsXG4gIC5tYWluLWhlYWRlci5tZWdhLW1lbnUtY2xvc2luZyAubW9iaWxlLW1lbnUtYnRuIC5iYXIsXG4gIC5tYWluLWhlYWRlci5tZWdhLW1lbnUtY2xvc2luZyAuaGFtYnVyZ2VyLWxpbmUsXG4gIC5tYWluLWhlYWRlci5tZWdhLW1lbnUtY2xvc2luZzppcyguaGVhZGVyLWRhcmssIC5tZWdhLW1lbnUtb3BlbikgLmxvZ28tbGlnaHQsXG4gIC5tYWluLWhlYWRlci5tZWdhLW1lbnUtY2xvc2luZzppcyguaGVhZGVyLWRhcmssIC5tZWdhLW1lbnUtb3BlbikgLmxvZ28tZGFyayB7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgfVxufVxuXG4vKiBCbHVycmVkIEdsYXNzbW9ycGhpc20gb24gU2Nyb2xsICovXG4ubWFpbi1oZWFkZXIuc2Nyb2xsZWQge1xuXG4gIC8qIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNDksIDIzNywgMC44NSk7XG4gIGJhY2tkcm9wLWZpbHRlcjogYmx1cigyMHB4KTtcbiAgLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCk7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO1xuICBib3gtc2hhZG93OiAwIDRweCAzMHB4IHJnYmEoMCwgMCwgMCwgMC4wMik7ICovXG59XG5cbi8qIFRyYW5zcGFyZW50LXZhcmlhbnQgb25seTogb25jZSBzY3JvbGxlZCwgdGhlIGhlYWRlciBoYXMgbm90aGluZyBiZWhpbmQgaXRcbiAgIHRvIGd1YXJhbnRlZSBjb250cmFzdCBmb3IgaXRzICh3aGl0ZSkgbmF2IGNvbnRlbnQsIHNvIGdpdmUgaXQgYSBkYXJrIGdsYXNzXG4gICBiYWNrZHJvcCBpbnN0ZWFkIG9mIHN0YXlpbmcgZnVsbHkgc2VlLXRocm91Z2guIFNvbGlkIGxpZ2h0L2RhcmsgdGhlbWVzXG4gICBhbHJlYWR5IHBhaW50IGFuIG9wYXF1ZSBiYWNrZ3JvdW5kIGFuZCBkb24ndCBuZWVkIHRoaXMuIE1lZ2EgbWVudSBmb3JjZXNcbiAgIGl0cyBvd24gc29saWQgbG9vaywgc28gdGhpcyBpcyBza2lwcGVkIHdoaWxlIGl0J3Mgb3Blbi4gKi9cbi5tYWluLWhlYWRlci5oZWFkZXItZGFyay5oZWFkZXItdHJhbnNwYXJlbnQuc2Nyb2xsZWQ6bm90KC5tZWdhLW1lbnUtb3Blbikge1xuICBiYWNrZ3JvdW5kOiByZ2IoNTUsIDU1LCA2NiwgLjMpOyAvKiBoZWFkZXItZGFyaydzICMzNzM3NDIsIHRyYW5zbHVjZW50ICovXG4gIGJhY2tkcm9wLWZpbHRlcjogYmx1cigyMHB4KTtcbn1cblxuLm1haW4taGVhZGVyLmhlYWRlci1oaWRkZW4sXG4uaGVhZGVyLWNvbnRhaW5lci5oZWFkZXItaGlkZGVuIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTtcblxuICAvKiB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlOyAqL1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMXMgY3ViaWMtYmV6aWVyKC4xNiwgMSwgLjMsIDEpO1xufVxuXG4ubWFpbi1oZWFkZXIuZmlyc3QtZm9sZCAubmF2LW1lbnUsXG4ubWFpbi1oZWFkZXIuZmlyc3QtZm9sZCAuYXNrLWV4cG9uYS10b3BiYXIge1xuICBvcGFjaXR5OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uLXRyYW5zbGF0ZSk7XG59XG5cbmJvZHk6aGFzKCNzdG9yeS5hY3RpdmUpIC5tYWluLWhlYWRlciAubmF2LW1lbnUsXG5ib2R5Omhhcygjc3RvcnkuYWN0aXZlKSAubWFpbi1oZWFkZXIgLmN0YS1zZWN0aW9uLFxuYm9keTpoYXMoI3N0b3J5LmFjdGl2ZSkgLmFzay1leHBvbmEtdG9wYmFyIHtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOlxuICAgIG9wYWNpdHkgLjNzIGVhc2UsXG4gICAgdmlzaWJpbGl0eSAuM3MgZWFzZTtcbn1cblxuLyogI3N0b3J5IGFuZCAjd2hvLXdlLWFyZS1wYXJlbnQgc2hhcmUgb25lIGNvbnRpbnVvdXMgI0ZGRUZEMSDihpIgI0ZGRjlFRFxuICAgYmFja2dyb3VuZCAoY3NzL3N0eWxlLmNzcykuIFRoZSBoZWFkZXIgaG9sZHMgdGhpcyBmbGF0IHBlYWNoIGZvciB0aGUgd2hvbGVcbiAgIHpvbmUgYnkgZGVmYXVsdCDigJQgaXQgaXMgc29saWQgcGVhY2ggZm9yIG5lYXJseSB0aGUgZW50aXJlIHNwYW4sIHNpbmNlIHRoZVxuICAgZ3JhZGllbnQgaXRzZWxmIGRvZXNuJ3Qgc3RhcnQgZmFkaW5nIHRvIGNyZWFtIHVudGlsIDY1Ljg1JSBvZiB0aGUgZm9sZCdzXG4gICBoZWlnaHQgKGNzcy9zdHlsZS5jc3MpLCBmYXIgYmVsb3cgd2hlcmUgdGhlIGhlYWRlciBzaXRzLiBPbmx5IHRoZSB0YWlsIGVuZFxuICAgb2YgdGhlIHpvbmUgbmVlZHMgdG8gbW92ZToganMvaG9tZS1zbW9vdGhlZXItMS5qcyBzY3J1YnMgYW4gaW5saW5lXG4gICBiYWNrZ3JvdW5kLWNvbG9yIG9uIC5tYWluLWhlYWRlciBmcm9tIHRoaXMgcGVhY2ggdG8gdmFyKC0tYmctcHJpbWFyeSkgaW5cbiAgIHN5bmMgd2l0aCB0aGF0IHNhbWUgNjUuODUlLXRvLTEwMCUgZmFkZSAoc2VlIHRoZSBcIkhlYWRlciBiYWNrZ3JvdW5kIOKAlFxuICAgY29udGludW91cyBtYXRjaCB0byB0aGUgc3RvcnkgZ3JhZGllbnRcIiBibG9jayksIHNvIHRoaXMgZmxhdCBjb2xvdXIgaXNcbiAgIHJlYWxseSBqdXN0IHRoZSByZXN0aW5nIHN0YXRlIHRoZSBpbmxpbmUgb3ZlcnJpZGUgYmxlbmRzIGF3YXkgZnJvbS5cblxuICAganMvaG9tZS1zbW9vdGhlZXItMS5qcyB0b2dnbGVzIHRoaXMgY2xhc3MgZm9yIHRoZSB3aG9sZSBzdG9yeSArIHdoby13ZS1hcmVcbiAgIHNwYW4gKHNlZSBoZWFkZXJTdG9yeVpvbmUpLCBub3QgcGVyLWZvbGQsIHZpYSB0aGUgc2FtZSBpbnN0YW50LWN1dCB0cmlja1xuICAgc2hhcmVkLmpzIHVzZXMgZm9yIGhlYWRlci1kYXJrL2hlYWRlci10cmFuc3BhcmVudCDigJQgdGhlIGJhc2UgLm1haW4taGVhZGVyXG4gICB0cmFuc2l0aW9uIGZhZGVzIGJhY2tncm91bmQgY2hhbmdlcyBvdmVyIDAuM3MsIHdoaWNoIG90aGVyd2lzZSBsZWZ0IHRoZSBvbGRcbiAgIGJhY2tncm91bmQgc2hvd2luZyBmb3IgYSBiZWF0IGFmdGVyIHRoZSBwYWdlIGhhZCBhbHJlYWR5IG1vdmVkIG9uLlxuICAgOm5vdCguaGVhZGVyLWRhcmspIGV4Y2x1ZGVzIHRoZSBtZWdhLW1lbnUtb3BlbiBzdGF0ZSwgd2hpY2ggZm9yY2VzIGl0cyBvd25cbiAgIHNvbGlkIGRhcmsgc3VyZmFjZSByZWdhcmRsZXNzIG9mIHNlY3Rpb24gdGhlbWUuICovXG4ubWFpbi1oZWFkZXIuaGVhZGVyLXN0b3J5Om5vdCguaGVhZGVyLWRhcmspIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZWZkMTtcbn1cblxuLyogSG92ZXJpbmcgKG9yIHRhYmJpbmcgaW50bykgdGhlIGhlYWRlciBicmluZ3MgdGhlIHBhcmtlZCBuYXYgYW5kIENUQSBiYWNrIOKAlFxuICAgdGhleSdyZSBvbmx5IHZpc3VhbGx5IGhpZGRlbiBvbiB0aGUgc3RvcnkgZm9sZCwgbm90IHJlbW92ZWQuIEdhdGVkIG9uXG4gICAuaW50cm8tZG9uZSAoc2V0IGJ5IGpzL2hvbWUuanMgd2hlbiB0aGUgM3MgbG9nby90b3BiYXIgcmV2ZWFsIHR3ZWVuXG4gICBmaW5pc2hlcykgc28gaG92ZXJpbmcgZWFybHkgY2FuJ3QgYmVhdCB0aGUgbG9nbyBvbiBzY3JlZW4uIFNlbGVjdG9ycyBtaXJyb3JcbiAgIHRoZSBoaWRlIHJ1bGUgd2l0aCA6aG92ZXIvOmZvY3VzLXdpdGhpbiBhZGRlZCBzbyB0aGV5IHdpbiBvbiBzcGVjaWZpY2l0eS4gKi9cbmJvZHkuaW50cm8tZG9uZTpoYXMoI3N0b3J5LmFjdGl2ZSkgLm1haW4taGVhZGVyOmhvdmVyIC5uYXYtbWVudSxcbmJvZHkuaW50cm8tZG9uZTpoYXMoI3N0b3J5LmFjdGl2ZSkgLm1haW4taGVhZGVyOmZvY3VzLXdpdGhpbiAubmF2LW1lbnUsXG5ib2R5LmludHJvLWRvbmU6aGFzKCNzdG9yeS5hY3RpdmUpIC5tYWluLWhlYWRlcjpob3ZlciAuY3RhLXNlY3Rpb24sXG5ib2R5LmludHJvLWRvbmU6aGFzKCNzdG9yeS5hY3RpdmUpIC5tYWluLWhlYWRlcjpmb2N1cy13aXRoaW4gLmN0YS1zZWN0aW9uIHtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgb3BhY2l0eTogMTtcbn1cblxuLyogQW4gb3BlbiBtZWdhIG1lbnUgcGlucyB0aGUgbmF2IGFuZCBDVEEgdmlzaWJsZSByZWdhcmRsZXNzIG9mIGhvdmVyIOKAlCB0aGVcbiAgIHBhbmVsIGlzIGEgY2hpbGQgb2YgLm5hdi1tZW51LCBzbyB3aXRob3V0IHRoaXMsIG1vdmluZyB0aGUgcG9pbnRlciBvZmYgdGhlXG4gICBoZWFkZXIgKG9yIG91dCBvZiB0aGUgdmlld3BvcnQpIGZhZGVzIHRoZSBzdGlsbC1vcGVuIG1lbnUgYXdheS4gSXQgc3RheXMgdXBcbiAgIHVudGlsIHNoYXJlZC5qcyBjbG9zZXMgaXQgdmlhIHRoZSBjbGljay1vdXRzaWRlIC8gRXNjYXBlIGhhbmRsZXJzLiAqL1xuYm9keTpoYXMoI3N0b3J5LmFjdGl2ZSkgLm1haW4taGVhZGVyLm1lZ2EtbWVudS1vcGVuIC5uYXYtbWVudSxcbmJvZHk6aGFzKCNzdG9yeS5hY3RpdmUpIC5tYWluLWhlYWRlci5tZWdhLW1lbnUtb3BlbiAuY3RhLXNlY3Rpb24ge1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICBvcGFjaXR5OiAxO1xufVxuXG4vKiBIaWRlIG5hdiwgQ1RBLCBhbmQgdG9wYmFyIHdoaWxlIG9uIHRoZSBzdG9yeSBmb2xkIChkZXNrdG9wIG9ubHkpICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG5cbiAgLyogYm9keTpoYXMoI3N0b3J5LmFjdGl2ZSkgLm1haW4taGVhZGVyIC5uYXYtbWVudSxcbiAgYm9keTpoYXMoI3N0b3J5LmFjdGl2ZSkgLm1haW4taGVhZGVyIC5jdGEtc2VjdGlvbixcbiAgYm9keTpoYXMoI3N0b3J5LmFjdGl2ZSkgLmFzay1leHBvbmEtdG9wYmFyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9ICovXG59XG5cbi5uby10cmFuc2l0aW9uLFxuLm5vLXRyYW5zaXRpb24gKiB7XG4gIHRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBBc2sgRXhwb25hIFRvcCBCYXJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmFzay1leHBvbmEtdG9wYmFyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTJweDtcbiAgdHJhbnNpdGlvbjpcbiAgICBvcGFjaXR5IC4zcyBlYXNlLFxuICAgIHZpc2liaWxpdHkgLjNzIGVhc2U7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcbiAgICA5MGRlZyxcbiAgICAjMzczNzQyIDY1JSxcbiAgICAjMjg0Y2JhIDgwJSxcbiAgICAjZWExYjNkIDkxJSxcbiAgICAjMzczNzQyIDk0JVxuICApO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDk5O1xufVxuXG4udG9wYmFyLWNvbnRhaW5lciB7XG4gIG1heC13aWR0aDogdmFyKC0tY29udGFpbmVyLXdpZHRoKTtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4uYXNrLWV4cG9uYS1idG4td3JhcHBlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICByaWdodDogMTIwcHg7XG4gIHBhZGRpbmc6IDAgMnB4IDJweDtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuICAgIDkwZGVnLFxuICAgIHJnYig0MCwgNzYsIDE4NiwgMSkgMTUlLFxuICAgIHJnYigyMzQsIDI3LCA2MSwgMSkgOTElXG4gICk7XG4gIGNsaXAtcGF0aDogcG9seWdvbihcbiAgICAwIDAsXG4gICAgMTAwJSAwLFxuICAgIGNhbGMoMTAwJSAtIDlweCkgY2FsYygxMDAlIC0gMTBweCksXG4gICAgY2FsYygxMDAlIC0gMTBweCkgY2FsYygxMDAlIC0gN3B4KSxcbiAgICBjYWxjKDEwMCUgLSAxMXB4KSBjYWxjKDEwMCUgLSA0cHgpLFxuICAgIGNhbGMoMTAwJSAtIDEzcHgpIGNhbGMoMTAwJSAtIDJweCksXG4gICAgY2FsYygxMDAlIC0gMThweCkgMTAwJSxcbiAgICAxOHB4IDEwMCUsXG4gICAgMTNweCBjYWxjKDEwMCUgLSAycHgpLFxuICAgIDExcHggY2FsYygxMDAlIC0gNHB4KSxcbiAgICAxMHB4IGNhbGMoMTAwJSAtIDdweCksXG4gICAgOXB4IGNhbGMoMTAwJSAtIDEwcHgpXG4gICk7XG59XG5cbi5tYWluLWhlYWRlciAuYXNrLWV4cG9uYS1idG4ge1xuICBkaXNwbGF5OiBibG9jaztcbiAgYmFja2dyb3VuZDogdmFyKC0tYmctcHJpbWFyeSk7XG4gIHBhZGRpbmc6IDhweCAyNHB4O1xuICBjbGlwLXBhdGg6IHBvbHlnb24oXG4gICAgMCAwLFxuICAgIDEwMCUgMCxcbiAgICBjYWxjKDEwMCUgLSA5cHgpIGNhbGMoMTAwJSAtIDhweCksXG4gICAgY2FsYygxMDAlIC0gMTBweCkgY2FsYygxMDAlIC0gNXB4KSxcbiAgICBjYWxjKDEwMCUgLSAxMXB4KSBjYWxjKDEwMCUgLSAycHgpLFxuICAgIGNhbGMoMTAwJSAtIDEzcHgpIGNhbGMoMTAwJSAtIDFweCksXG4gICAgY2FsYygxMDAlIC0gMTZweCkgMTAwJSxcbiAgICAxNnB4IDEwMCUsXG4gICAgMTNweCBjYWxjKDEwMCUgLSAxcHgpLFxuICAgIDExcHggY2FsYygxMDAlIC0gMnB4KSxcbiAgICAxMHB4IGNhbGMoMTAwJSAtIDVweCksXG4gICAgOXB4IGNhbGMoMTAwJSAtIDhweClcbiAgKTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIC4zcyBlYXNlO1xufVxuXG4uYXNrLWV4cG9uYS1idG46aG92ZXIge1xuICBiYWNrZ3JvdW5kOiAjZjdmMWU2O1xufVxuXG4ubWFpbi1oZWFkZXIgLmFzay1leHBvbmEtYnRuLWNvbnRlbnQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDhweDtcbn1cblxuLm1haW4taGVhZGVyIC5hc2stZXhwb25hLWljb24ge1xuICB3aWR0aDogMTZweDtcbiAgaGVpZ2h0OiAxNnB4O1xuICBvYmplY3QtZml0OiBjb250YWluO1xufVxuXG4ubWFpbi1oZWFkZXIgLmFzay1leHBvbmEtdGV4dCB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7XG4gIGxldHRlci1zcGFjaW5nOiAuNXB4O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG4vKiBEYXJrIG1vZGUgaGVhZGVyIGFkYXB0YXRpb24gZm9yIHRvcCBiYXIgKi9cbi5tYWluLWhlYWRlcjppcyguaGVhZGVyLWRhcmssIC5tZWdhLW1lbnUtb3BlbikgLmFzay1leHBvbmEtdGV4dCB7XG4gIGNvbG9yOiAjZmZmO1xufVxuXG4ubWFpbi1oZWFkZXI6aXMoLmhlYWRlci1kYXJrLCAubWVnYS1tZW51LW9wZW4pIC5hc2stZXhwb25hLWJ0biB7XG4gIGJhY2tncm91bmQ6ICMyZTJmMzY7XG59XG5cbi5tYWluLWhlYWRlcjppcyguaGVhZGVyLWRhcmssIC5tZWdhLW1lbnUtb3BlbikgLmFzay1leHBvbmEtYnRuOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogIzM3Mzc0Mjtcbn1cblxuLyogVHJhbnNwYXJlbnQgdmFyaWFudCBvbmx5OiB0aGUgRXhwb25hIHBpbGwga2VlcHMgaXRzIGxpZ2h0IChjcmVhbS9kYXJrLXRleHQpXG4gICBsb29rIGV2ZW4gdGhvdWdoIHRoZSByZXN0IG9mIHRoZSBoZWFkZXIgaXMgZGFyay10aGVtZWQg4oCUIGl0IGRvZXNuJ3QgbmVlZFxuICAgaGVhZGVyLWRhcmsncyB3aGl0ZS1vbi1kYXJrIHRyZWF0bWVudCBzaW5jZSBpdCBpc24ndCBzaXR0aW5nIG9uIGEgc29saWRcbiAgIGRhcmsgYmFyLiA6bm90KC5tZWdhLW1lbnUtb3BlbikgbWF0Y2hlcyB0aGUgYmFja2dyb3VuZCBydWxlIGJlbG93IOKAlCBvbmNlXG4gICB0aGUgbWVnYSBtZW51IGZvcmNlcyB0aGUgaGVhZGVyIGJhY2sgdG8gYSBzb2xpZCBkYXJrIGJhciwgdGhlIHBpbGwgcmV2ZXJ0c1xuICAgdG8gdGhlIHJlZ3VsYXIgaGVhZGVyLWRhcmsgKHdoaXRlL2RhcmstcGlsbCkgc3R5bGluZyBhYm92ZSBmb3IgY29udHJhc3QuXG4gICBIaWdoZXIgc3BlY2lmaWNpdHkgdGhhbiB0aGUgLmhlYWRlci1kYXJrIHJ1bGVzIGFib3ZlICg1IGNsYXNzZXMgdnMgMykgc29cbiAgIGl0IHdpbnMgcmVnYXJkbGVzcyBvZiBzb3VyY2Ugb3JkZXIuICovXG4ubWFpbi1oZWFkZXIuaGVhZGVyLWRhcmsuaGVhZGVyLXRyYW5zcGFyZW50Om5vdCgubWVnYS1tZW51LW9wZW4pIC5hc2stZXhwb25hLXRleHQge1xuICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcbn1cblxuLm1haW4taGVhZGVyLmhlYWRlci1kYXJrLmhlYWRlci10cmFuc3BhcmVudDpub3QoLm1lZ2EtbWVudS1vcGVuKSAuYXNrLWV4cG9uYS1idG4ge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1wcmltYXJ5KTtcbn1cblxuLm1haW4taGVhZGVyLmhlYWRlci1kYXJrLmhlYWRlci10cmFuc3BhcmVudDpub3QoLm1lZ2EtbWVudS1vcGVuKSAuYXNrLWV4cG9uYS1idG46aG92ZXIge1xuICBiYWNrZ3JvdW5kOiAjZjdmMWU2O1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgLmFzay1leHBvbmEtYnRuLXdyYXBwZXIge1xuICAgIHJpZ2h0OiA2MHB4O1xuICB9XG5cbiAgLmFzay1leHBvbmEtdG9wYmFyIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoXG4gICAgICA5MGRlZyxcbiAgICAgIHJnYig0NiwgNDcsIDU0LCAxKSA4JSxcbiAgICAgIHJnYig0MCwgNzYsIDE4NiwgMSkgMjElLFxuICAgICAgcmdiKDIzNCwgMjcsIDYxLCAxKSAxMDAlLFxuICAgICAgcmdiKDQ2LCA0NywgNTQsIDEpIDk0JVxuICAgICk7XG4gIH1cblxuICAubWFpbi1oZWFkZXIgLmFzay1leHBvbmEtdGV4dCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4uaGVhZGVyLWNvbnRhaW5lciB7XG4gIG1heC13aWR0aDogdmFyKC0tY29udGFpbmVyLXdpZHRoLXBhZGQpO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA4MHB4O1xuICBtYXJnaW46IDAgYXV0bztcbiAgcGFkZGluZzogMCA2MHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cbiAgLyogdHJhbnNpdGlvbjogdmFyKC0tdHJhbnNpdGlvbi1zbW9vdGgpOyAqL1xufVxuXG4vKiBIZWxwZXIgdG8gaW5zdGFudGx5IHN3aXRjaCBoZWFkZXIgdGhlbWVzIHdpdGhvdXQgdHJhbnNpdGlvbiBkZWxheSAqL1xuLm1haW4taGVhZGVyLm5vLXRyYW5zaXRpb24sXG4ubWFpbi1oZWFkZXIubm8tdHJhbnNpdGlvbiAqIHtcbiAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4vKiBIZWFkZXIgRGFyayBUaGVtZSAoYXBwbGllZCBkeW5hbWljYWxseSBvbiBkYXJrIGZvbGRzKSAqL1xuXG4ubWFpbi1oZWFkZXIuaGVhZGVyLWRhcmsuc2Nyb2xsZWQge1xuXG4gIC8qIGJhY2tncm91bmQ6IHJnYmEoMzksIDM5LCA0NiwgMC44NSk7ICovXG5cbiAgLyogYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsgKi9cbn1cblxuLm1haW4taGVhZGVyOmlzKC5oZWFkZXItZGFyaywgLm1lZ2EtbWVudS1vcGVuKSAubmF2LWxpbmsge1xuICBjb2xvcjogI2ZmZjtcbn1cblxuLm1haW4taGVhZGVyOmlzKC5oZWFkZXItZGFyaywgLm1lZ2EtbWVudS1vcGVuKSAubmF2LWxpbms6aG92ZXIge1xuICBjb2xvcjogdmFyKC0tYWNjZW50LXJlZCk7XG59XG5cbi8qIFN3YXAgTG9nbyB2aWEgQ1NTIOKAlCBjcm9zc2ZhZGVkLCBub3QgZGlzcGxheS1zd2FwcGVkLCBzbyB0aGUgcGFpciBjYW4gbW92ZVxuICAgd2l0aCB0aGUgcmVzdCBvZiB0aGUgY2hyb21lIGR1cmluZyAubWVnYS1tZW51LWNsb3NpbmcgKGRpc3BsYXkgaXMgbm90IGFuXG4gICBhbmltYXRhYmxlIHByb3BlcnR5KS4gVGhlIGxpZ2h0IGNvcHkgaXMgbGlmdGVkIG91dCBvZiBmbG93IG9uIHRvcCBvZiB0aGVcbiAgIGRhcmsgb25lLCBzbyB0aGUgbGF5b3V0IGJveCBpcyBpZGVudGljYWwgZWl0aGVyIHdheSDigJQgYm90aCBhcmUgMTE4w5cyMyBmcm9tXG4gICAubG9nby1pbWcuIE5vIHRyYW5zaXRpb24gaXMgZGVjbGFyZWQgaGVyZSwgc28gZXZlcnl3aGVyZSBvdXRzaWRlIHRoZSBtZWdhXG4gICBtZW51IGNsb3NlIHRoZSBzd2FwIHN0YXlzIGluc3RhbnQsIGV4YWN0bHkgYXMgdGhlIGRpc3BsYXkgc3dhcCB3YXMuICovXG4ubWFpbi1oZWFkZXIgLmxvZ28tbGlnaHQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgb3BhY2l0eTogMDtcblxuICAvKiBLZWVwcyB0aGUgcGFya2VkIGNvcHkgb3V0IG9mIHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUsIHRoZSB3YXkgZGlzcGxheTpub25lXG4gICAgIGRpZCDigJQgb3RoZXJ3aXNlIHRoZSBzYW1lIGFsdCB0ZXh0IGlzIGFubm91bmNlZCB0d2ljZSBpbnNpZGUgb25lIGxpbmsuXG4gICAgIFBhaXJlZCB3aXRoIG9wYWNpdHkgaXQgc3RpbGwgY3Jvc3NmYWRlczogdmlzaWJpbGl0eSBmbGlwcyBhdCB0aGUgRU5EIG9mIGFcbiAgICAgdHJhbnNpdGlvbiB3aGVuIGhlYWRpbmcgdG8gaGlkZGVuLCBzbyB0aGUgb3V0Z29pbmcgbG9nbyBzdGF5cyBwYWludGVkIGZvclxuICAgICB0aGUgd2hvbGUgZmFkZS4gYGluaGVyaXRgLCBub3QgYHZpc2libGVgLCBzbyBhIGhpZGRlbiAubG9nby1saW5rICh0aGVcbiAgICAgaG9tZXBhZ2UgaW50cm8gcGFya3MgaXQpIGNhbiBuZXZlciBiZSBvdmVycmlkZGVuIGZyb20gaW4gaGVyZS4gKi9cbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG4ubWFpbi1oZWFkZXI6aXMoLmhlYWRlci1kYXJrLCAubWVnYS1tZW51LW9wZW4pIC5sb2dvLWxpZ2h0IHtcbiAgb3BhY2l0eTogMTtcbiAgdmlzaWJpbGl0eTogaW5oZXJpdDtcbn1cblxuLm1haW4taGVhZGVyOmlzKC5oZWFkZXItZGFyaywgLm1lZ2EtbWVudS1vcGVuKSAubG9nby1kYXJrIHtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG4ubWFpbi1oZWFkZXI6aXMoLmhlYWRlci1kYXJrLCAubWVnYS1tZW51LW9wZW4pIC5tb2JpbGUtbWVudS1idG4gLmJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59XG5cbi5tYWluLWhlYWRlcjppcyguaGVhZGVyLWRhcmssIC5tZWdhLW1lbnUtb3BlbikgLmJ0bi1jdGEge1xuICBib3JkZXItY29sb3I6ICNmZmY7XG4gIGNvbG9yOiAjZmZmO1xufVxuXG4ubWFpbi1oZWFkZXI6aXMoLmhlYWRlci1kYXJrLCAubWVnYS1tZW51LW9wZW4pIC5idG4tY3RhOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgY29sb3I6ICMyNzI3MmU7XG59XG5cbi8qIC5tZWdhLW1lbnUtY2xvc2luZyBpcyBpbiBoZXJlIHNvIHRoZSBwYW5lbCdzIG93biBjb2xvdXJzIG91dGxpdmUgdGhlIGhhbmQtb2ZmXG4gICBhdCB0aGUgZW5kIG9mIHRoZSByb2xsLXVwOiAubWVnYS1tZW51LW9wZW4gY29tZXMgb2ZmIGF0IHRoZSBleGFjdCBtaWxsaXNlY29uZFxuICAgdGhlIHBhbmVsJ3MgY2xpcCBmaW5pc2hlcywgYW5kIHdpdGhvdXQgdGhpcyB0aGUgdHdvIHdvdWxkIHJhY2UgZm9yIHRoZSBsYXN0XG4gICBmcmFtZSDigJQgYSBzbGl2ZXIgb2YgbGlnaHQtdGhlbWVkIHBhbmVsIGJlZm9yZSBpdCBpcyBoaWRkZW4uICovXG4ubWFpbi1oZWFkZXI6aXMoLmhlYWRlci1kYXJrLCAubWVnYS1tZW51LW9wZW4sIC5tZWdhLW1lbnUtY2xvc2luZykgLm1lZ2EtbWVudSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNzM3NDI7XG4gIGJvcmRlcjogMXB4IGRhc2hlZCByZ2IoMjU1LCAyNTUsIDI1NSwgLjEpO1xufVxuXG4vKiBHcmFpbiBvdmVybGF5IGxpdmVzIG9uIC5tYWluLWhlYWRlciwgTk9UIC5tZWdhLW1lbnU6IC5tZWdhLW1lbnUgaXNcbiAgIHBvc2l0aW9uOmZpeGVkICsgYmFja2Ryb3AtZmlsdGVyIChsaW5lIH42NTMpICsgb3ZlcmZsb3cteTphdXRvIChzY3JvbGxzXG4gICBpdHMgb3duIGNvbnRlbnQgd2hlbiB0aGUgbWVudSBpcyB0YWxsZXIgdGhhbiB0aGUgdmlld3BvcnQpLiBiYWNrZHJvcC1maWx0ZXJcbiAgIGNyZWF0ZXMgYSBuZXcgY29udGFpbmluZyBibG9jayBmb3IgcG9zaXRpb246Zml4ZWQgZGVzY2VuZGFudHMgKHNhbWUgYXNcbiAgIHRyYW5zZm9ybS9maWx0ZXIvd2lsbC1jaGFuZ2UpLCBzbyBhIGZpeGVkIDo6YWZ0ZXIgbmVzdGVkIGluc2lkZSAubWVnYS1tZW51XG4gICBzaWxlbnRseSBnZXRzIHJlLWFuY2hvcmVkIHRvIC5tZWdhLW1lbnUgYW55d2F5IGFuZCBzdGlsbCBzY3JvbGxzIGF3YXkgd2l0aFxuICAgaXRzIGNvbnRlbnQuIC5tYWluLWhlYWRlciBoYXMgbmVpdGhlciBiYWNrZHJvcC1maWx0ZXIgbm9yIHRyYW5zZm9ybSB3aGlsZVxuICAgLm1lZ2EtbWVudS1vcGVuIChzZWUgdGhlIDpub3QoLm1lZ2EtbWVudS1vcGVuKSBydWxlIGFib3ZlIGFuZCBzaGFyZWQuanMnc1xuICAgaGVhZGVyLWhpZGRlbiBndWFyZCksIHNvIGFuY2hvcmluZyBoZXJlIGFjdHVhbGx5IHN0YXlzIHBpbm5lZCB0byB0aGVcbiAgIHZpZXdwb3J0IHJlZ2FyZGxlc3Mgb2YgaG93IGZhciB0aGUgbWVudSdzIG93biBjb250ZW50IGlzIHNjcm9sbGVkLlxuXG4gICBUaGlzIGlzIHRoZSDiiaQxMDI0cHggdmVyc2lvbiDigJQgaXQgZmxpcHMgb24gYW5kIG9mZiB3aXRoIHRoZSBwYW5lbCwgd2hpY2ggaXNcbiAgIHJpZ2h0IHRoZXJlIGJlY2F1c2UgdGhlIHBhbmVsIGl0c2VsZiBqdXN0IGFwcGVhcnMvZGlzYXBwZWFycy4gRGVza3RvcFxuICAgKOKJpTEwMjVweCkgb3ZlcnJpZGVzIGl0IGZ1cnRoZXIgZG93biBzbyB0aGUgZ3JhaW4gcm9sbHMgd2l0aCB0aGUgcGFuZWxcbiAgIGluc3RlYWQgb2YgdmVpbGluZyB0aGUgcGFnZSBhaGVhZCBvZiBpdC4gS2V5ZWQgdG8gLm1lZ2EtbWVudS1vcGVuIGFsb25lLFxuICAgbm90IGhlYWRlci1kYXJrOiB0aGUgY2xvc2UgaGFuZHMgdGhlIGhlYWRlciBpdHMgcG9zdC1jbG9zZSB0aGVtZSB1cCBmcm9udFxuICAgKGpzL3NoYXJlZC5qcyksIHNvIGhlYWRlci1kYXJrIGlzIGFscmVhZHkgZ29uZSB3aGlsZSB0aGUgbWVudSBpcyBvbiBzY3JlZW4uICovXG4ubWFpbi1oZWFkZXIubWVnYS1tZW51LW9wZW46OmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBpbnNldDogOTJweCAwIDA7IC8qIG1hdGNoZXMgLm1lZ2EtbWVudSdzIHRvcDogODBweCBoZWFkZXIgKyAxMnB4IHRvcGJhciAqL1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi8uLi8uLi9zdGF0aWMvYXNzZXRzL2ltYWdlcy9sYXRlc3QvZ3JhaW4ucG5nXCIpO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICBtaXgtYmxlbmQtbW9kZTogbm9ybWFsO1xuICBvcGFjaXR5OiAxO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMTA7XG59XG5cbi5tYWluLWhlYWRlcjppcyguaGVhZGVyLWRhcmssIC5tZWdhLW1lbnUtb3BlbiwgLm1lZ2EtbWVudS1jbG9zaW5nKSAubWVudS1oZWFkaW5nIHtcbiAgY29sb3I6ICNmZmQwZDg7XG59XG5cbi5tYWluLWhlYWRlcjppcyguaGVhZGVyLWRhcmssIC5tZWdhLW1lbnUtb3BlbiwgLm1lZ2EtbWVudS1jbG9zaW5nKSAuc3VibWVudS1saW5rIHtcbiAgY29sb3I6ICNmZmY7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgLmhlYWRlci1jb250YWluZXIge1xuICAgIHBhZGRpbmc6IDAgMjBweDtcbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcblxuICAvKiAubWFpbi1oZWFkZXIuaGVhZGVyLWhpZGRlbiB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICB9ICovXG4gIC5tYWluLWhlYWRlcjppcyguaGVhZGVyLWRhcmssIC5tZWdhLW1lbnUtb3BlbiwgLm1lZ2EtbWVudS1jbG9zaW5nKSAubWVnYS1tZW51IHtcbiAgICBiYWNrZ3JvdW5kOiAjMzczNzQyIHVybChcIi4uLy4uLy4uL3N0YXRpYy9hc3NldHMvaW1hZ2VzL2xhdGVzdC9ncmFpbi5wbmdcIikgY2VudGVyO1xuICB9XG5cbiAgLm1haW4taGVhZGVyLm1lZ2EtbWVudS1vcGVuOjphZnRlciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC5oZWFkZXItY29udGFpbmVyLmhlYWRlci1oaWRkZW4tbW9iaWxlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpICFpbXBvcnRhbnQ7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC4zcyBlYXNlO1xuICB9XG5cbiAgLmhlYWRlci1jb250YWluZXIge1xuICAgIHBhZGRpbmc6IDQ1cHggMjBweCAyNHB4O1xuICAgIGhlaWdodDogODBweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjNzIGVhc2U7XG4gIH1cbn1cblxuLyogTG9nbyAqL1xuLmxvZ28tc2VjdGlvbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5sb2dvLWxpbmsge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gIC8qIEFuY2hvcnMgdGhlIHN0YWNrZWQgLmxvZ28tbGlnaHQgY29weSAoc2VlIHRoZSBsb2dvIHN3YXAgcnVsZXMgYWJvdmUpLiAqL1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5wYWdlLWhvbWUgLmxvZ28tbGluayB7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cblxuQGtleWZyYW1lcyBmYWRlLWluIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG59XG5cbi5sb2dvLWltZyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTE4cHg7XG4gIGhlaWdodDogMjNweDtcbn1cblxuLyogTmF2IE1lbnUgTGlua3MgKi9cbi5oZWFkZXItY29udGFpbmVyIC5uYXYtbWVudSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMzJweDtcbiAgdHJhbnNpdGlvbjpcbiAgICBvcGFjaXR5IC4zcyBlYXNlLFxuICAgIHZpc2liaWxpdHkgLjNzIGVhc2U7XG59XG5cbi5tYWluLWhlYWRlciAubmF2LWxpc3Qge1xuICBkaXNwbGF5OiBmbGV4O1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBnYXA6IDQwcHg7XG4gIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcbn1cblxuLm1haW4taGVhZGVyIC5uYXYtaXRlbSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLm1haW4taGVhZGVyIC5uYXYtaXRlbS5hY3RpdmU6OmFmdGVyLFxuLm1haW4taGVhZGVyIC5uYXYtaXRlbS5tZW51LWFjdGl2ZTo6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogLTE2cHg7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDJweDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IGRhc2hlZCB2YXIoLS1hY2NlbnQtcmVkKTtcbn1cblxuLm1haW4taGVhZGVyIC5uYXYtbGluayB7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7XG4gIHBhZGRpbmc6IDEwcHggMDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiA2cHg7XG59XG5cbi5tYWluLWhlYWRlciAubmF2LWxpbms6aG92ZXIge1xuICBjb2xvcjogdmFyKC0tYWNjZW50LXJlZCk7XG59XG5cbi5tYWluLWhlYWRlciAubmF2LWljb24ge1xuICB3aWR0aDogMTJweDtcbiAgaGVpZ2h0OiBhdXRvO1xuICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uLXNtb290aCk7XG59XG5cbi8qIFR3by1zdGF0ZSBuYXYgaWNvbnM6IGNsb3NlZCA9IGNoZXZyb24tZG93biwgb3BlbiA9IFggKi9cbi5tYWluLWhlYWRlciAubmF2LWljb24tLW9wZW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4ubWFpbi1oZWFkZXIgLm5hdi1pdGVtLmFjdGl2ZSAubmF2LWljb24tLWNsb3NlZCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5tYWluLWhlYWRlciAubmF2LWl0ZW0uYWN0aXZlIC5uYXYtaWNvbi0tb3BlbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuLyogSGVhZGVyIERpdmlkZXIgKi9cbi5tYWluLWhlYWRlciAuaGVhZGVyLWRpdmlkZXIge1xuICB3aWR0aDogMXB4O1xuICBoZWlnaHQ6IDI0cHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeSk7XG4gIG9wYWNpdHk6IC4yO1xufVxuXG4ubWFpbi1oZWFkZXI6aXMoLmhlYWRlci1kYXJrLCAubWVnYS1tZW51LW9wZW4pIC5oZWFkZXItZGl2aWRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59XG5cbi8qIEhlYWRlciByaWdodC1zaWRlIHNsb3QgKi9cbi5oZWFkZXItY29udGFpbmVyIC5jdGEtc2VjdGlvbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgTGFuZ3VhZ2UgUGlja2VyIOKAlCBEZXNrdG9wICguaGVhZGVyLWNvbnRhaW5lcilcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmxhbmctcGlja2VyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4ubGFuZy1waWNrZXJfX3RyaWdnZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDEwcHg7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgcGFkZGluZzogNnB4IDEwcHg7XG4gIGNvbG9yOiAjMmYyZjM5O1xuICBib3JkZXI6IDA7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXByaW1hcnkpO1xuICBmb250LXNpemU6IDE4cHg7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIGxpbmUtaGVpZ2h0OiAzMHB4O1xufVxuXG4ubGFuZy1waWNrZXIuaXMtb3BlbiAubGFuZy1waWNrZXJfX3RyaWdnZXIge1xuICBiYWNrZ3JvdW5kOiAjZmFlY2QzO1xufVxuXG4ubGFuZy1waWNrZXJfX2dsb2JlIHtcbiAgY29sb3I6ICMyZjJmMzk7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICB0cmFuc2l0aW9uOiBjb2xvciAuMnMgZWFzZTtcbn1cblxuLmxhbmctcGlja2VyX190cmlnZ2VyOmhvdmVyIC5sYW5nLXBpY2tlcl9fZ2xvYmUsXG4ubGFuZy1waWNrZXIuaXMtb3BlbiAubGFuZy1waWNrZXJfX2dsb2JlIHtcbiAgY29sb3I6ICNlYTFiM2Q7XG59XG5cbi5sYW5nLXBpY2tlcl9fY2FyZXQge1xuICBjb2xvcjogIzJmMmYzOTtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5sYW5nLXBpY2tlcl9fZHJvcGRvd24ge1xuICBkaXNwbGF5OiBub25lO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMTAwJTtcbiAgcmlnaHQ6IDA7XG4gIGJhY2tncm91bmQ6ICNmYWVjZDM7XG4gIGJvcmRlcjogMDtcbiAgYm9yZGVyLXRvcDogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgcGFkZGluZzogNHB4IDRweCA2cHg7XG4gIG1pbi13aWR0aDogMTAwJTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgei1pbmRleDogMjAwO1xufVxuXG4ubGFuZy1waWNrZXIuaXMtb3BlbiAubGFuZy1waWNrZXJfX2Ryb3Bkb3duIHtcbiAgZGlzcGxheTogZmxleDtcbn1cblxuLmxhbmctcGlja2VyX19vcHQuaXMtYWN0aXZlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLmxhbmctcGlja2VyX19vcHQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDhweDtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHBhZGRpbmc6IDdweCAxMHB4O1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1wcmltYXJ5KTtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBmb250LXdlaWdodDogMzAwO1xuICBsaW5lLWhlaWdodDogMzBweDtcbiAgY29sb3I6ICMyZjJmMzk7XG4gIHdpZHRoOiAxMDAlO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG4ubGFuZy1waWNrZXJfX29wdDo6YmVmb3JlIHtcbiAgY29udGVudDogXCJcIjtcbiAgd2lkdGg6IDEzcHg7XG4gIGhlaWdodDogMTNweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBib3JkZXI6IDEuNXB4IHNvbGlkIHJnYig0NywgNDcsIDU3LCAuMzUpO1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLmxhbmctcGlja2VyX19vcHQ6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2IoNDcsIDQ3LCA1NywgLjA2KTtcbn1cblxuLyogRGFyayBoZWFkZXIgKi9cbi5tYWluLWhlYWRlci5oZWFkZXItZGFyayB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNzM3NDI7XG59XG5cbi8qIFRoZSBiYXIncyBkYXJrIHN1cmZhY2UsIGFzIGEgbGF5ZXIgaW5zdGVhZCBvZiB0aGUgZWxlbWVudCdzIG93biBiYWNrZ3JvdW5kLlxuICAgVHdvIHJlYXNvbnMgaXQgY2FuJ3Qgc3RheSBpbiB0aGUgc2hvcnRoYW5kIGFib3ZlOlxuICAgICDCtyBiYWNrZ3JvdW5kLWltYWdlIGNhbm5vdCB0cmFuc2l0aW9uIOKAlCB0aGUgZ3JhaW4gd291bGQgYmxpbmsgb3V0IGluIG9uZVxuICAgICAgIGZyYW1lIHdoaWxlIHRoZSBjb2xvdXIgdW5kZXIgaXQgd2FzIHN0aWxsIGZhZGluZ1xuICAgICDCtyBhIGJhY2tncm91bmQgYmVsb25ncyB0byBpdHMgZWxlbWVudCwgc28gdGhlIG9ubHkgd2F5IHRvIHdpcGUgaXQgaXMgdG9cbiAgICAgICBjbGlwIHRoZSBlbGVtZW50IOKAlCB3aGljaCB3b3VsZCB0YWtlIHRoZSBuYXYsIHRoZSBsb2dvIGFuZCB0aGUgQ1RBIHdpdGhcbiAgICAgICBpdC4gQXMgYSBsYXllciBpdCBjYW4gYmUgY2xpcHBlZCBvbiBpdHMgb3duLCB3aGljaCBpcyB3aGF0IGxldHMgdGhlIG1lZ2FcbiAgICAgICBtZW51J3Mgcm9sbC11cCBjYXJyeSBvbiB0aHJvdWdoIHRoZSBiYXIgKHNlZSB0aGUgd2lwZSBmdXJ0aGVyIGRvd24pLlxuICAgei1pbmRleDogLTEgcHV0cyBpdCBhYm92ZSB0aGUgYmFyJ3Mgb3duIGJhY2tncm91bmQgYW5kIGJlbG93IGV2ZXJ5IGNoaWxkLFxuICAgd2l0aG91dCBkaXN0dXJiaW5nIHRoZWlyIHN0YWNraW5nIOKAlCAubWFpbi1oZWFkZXIgYWxyZWFkeSBvcGVucyBhIHN0YWNraW5nXG4gICBjb250ZXh0IChwb3NpdGlvbjogZml4ZWQgKyB6LWluZGV4OiAxMDAwKSwgc28gdGhlIC0xIHN0YXlzIGluc2lkZSBpdC4gKi9cbi5tYWluLWhlYWRlcjo6YmVmb3JlIHtcbiAgY29udGVudDogXCJcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldDogMDtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vLi4vLi4vc3RhdGljL2Fzc2V0cy9pbWFnZXMvbGF0ZXN0L2dyYWluLnBuZ1wiKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0O1xuICBvcGFjaXR5OiAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogLTE7XG5cbiAgLyogVGhlIGZyb20tc3RhdGUgdGhlIHdpcGUgYW5pbWF0ZXMgb3V0IG9mOyBubyBlZmZlY3Qgb24gaXRzIG93bi4gKi9cbiAgY2xpcC1wYXRoOiBpbnNldCgwIDAgMCAwKTtcbn1cblxuLyogLm1lZ2EtbWVudS1jbG9zaW5nIGtlZXBzIHRoZSBjdXJ0YWluIHVwIGZvciB0aGUgd2hvbGUgY2xvc2UsIGluY2x1ZGluZyB0aGVcbiAgIHN0cmV0Y2ggYWZ0ZXIgc2hhcmVkLmpzIGhhcyBhbHJlYWR5IGhhbmRlZCB0aGUgYmFyIGl0cyBwb3N0LWNsb3NlIHRoZW1lLiAqL1xuLm1haW4taGVhZGVyOmlzKC5oZWFkZXItZGFyaywgLm1lZ2EtbWVudS1vcGVuLCAubWVnYS1tZW51LWNsb3NpbmcpOjpiZWZvcmUge1xuICBvcGFjaXR5OiAxO1xufVxuXG4vKiBObyBiYXIsIG5vIHRleHR1cmUg4oCUIG1hdGNoZXMgdGhlIHRyYW5zcGFyZW50LXZhcmlhbnQgYmFja2dyb3VuZCBydWxlIGJlbG93LiAqL1xuLm1haW4taGVhZGVyLmhlYWRlci1kYXJrLmhlYWRlci10cmFuc3BhcmVudDpub3QoLm1lZ2EtbWVudS1vcGVuKTo6YmVmb3JlIHtcbiAgb3BhY2l0eTogMDtcbn1cblxuLyogRGFyayBoZWFkZXIsIHRyYW5zcGFyZW50IHZhcmlhbnQgKGRhdGEtaGVhZGVyLXRoZW1lPVwidHJhbnNwYXJlbnRcIikg4oCUIHNhbWVcbiAgIHdoaXRlIHRleHQvbG9nby9saW5rIGNvbG9ycyBhcyBoZWFkZXItZGFyaywgYnV0IHRoZSBoZWFkZXIgYmxlbmRzIGludG9cbiAgIHdoYXRldmVyJ3MgYmVoaW5kIGl0IGluc3RlYWQgb2Ygc2hvd2luZyB0aGUgc29saWQgZGFyayBiYXIuIE1lZ2EgbWVudVxuICAgc3RpbGwgZm9yY2VzIHRoZSBzb2xpZCBkYXJrIGxvb2sgYmFjayAobGVnaWJpbGl0eSBvdmVyIGl0cyBvd24gY29udGVudClcbiAgIHJlZ2FyZGxlc3Mgb2Ygd2hpY2ggdGhlbWUgd2FzIGFjdGl2ZSB3aGVuIGl0IG9wZW5lZC4gKi9cbi5tYWluLWhlYWRlci5oZWFkZXItZGFyay5oZWFkZXItdHJhbnNwYXJlbnQ6bm90KC5tZWdhLW1lbnUtb3Blbikge1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbn1cblxuLm1haW4taGVhZGVyOmlzKC5oZWFkZXItZGFyaywgLm1lZ2EtbWVudS1vcGVuKSAubGFuZy1waWNrZXJfX3RyaWdnZXIge1xuICBjb2xvcjogI2ZmZjtcbn1cblxuLm1haW4taGVhZGVyOmlzKC5oZWFkZXItZGFyaywgLm1lZ2EtbWVudS1vcGVuKSAubGFuZy1waWNrZXIuaXMtb3BlbiAubGFuZy1waWNrZXJfX3RyaWdnZXIge1xuICBiYWNrZ3JvdW5kOiAjMmYyZjM5O1xufVxuXG4ubWFpbi1oZWFkZXI6aXMoLmhlYWRlci1kYXJrLCAubWVnYS1tZW51LW9wZW4pIC5sYW5nLXBpY2tlcl9fZ2xvYmUsXG4ubWFpbi1oZWFkZXI6aXMoLmhlYWRlci1kYXJrLCAubWVnYS1tZW51LW9wZW4pIC5sYW5nLXBpY2tlcl9fY2FyZXQge1xuICBjb2xvcjogI2ZmZjtcbn1cblxuLm1haW4taGVhZGVyOmlzKC5oZWFkZXItZGFyaywgLm1lZ2EtbWVudS1vcGVuKSAubGFuZy1waWNrZXJfX3RyaWdnZXI6aG92ZXIgLmxhbmctcGlja2VyX19nbG9iZSxcbi5tYWluLWhlYWRlcjppcyguaGVhZGVyLWRhcmssIC5tZWdhLW1lbnUtb3BlbikgLmxhbmctcGlja2VyLmlzLW9wZW4gLmxhbmctcGlja2VyX19nbG9iZSB7XG4gIGNvbG9yOiAjZWExYjNkO1xufVxuXG4ubWFpbi1oZWFkZXI6aXMoLmhlYWRlci1kYXJrLCAubWVnYS1tZW51LW9wZW4pIC5sYW5nLXBpY2tlcl9fZHJvcGRvd24ge1xuICBiYWNrZ3JvdW5kOiAjMmYyZjM5O1xuICBib3JkZXItY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1LCAuMTIpO1xufVxuXG4ubWFpbi1oZWFkZXI6aXMoLmhlYWRlci1kYXJrLCAubWVnYS1tZW51LW9wZW4pIC5sYW5nLXBpY2tlcl9fb3B0IHtcbiAgY29sb3I6ICNmZmY7XG59XG5cbi5tYWluLWhlYWRlcjppcyguaGVhZGVyLWRhcmssIC5tZWdhLW1lbnUtb3BlbikgLmxhbmctcGlja2VyX19vcHQ6OmJlZm9yZSB7XG4gIGJvcmRlci1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUsIC40KTtcbn1cblxuLm1haW4taGVhZGVyOmlzKC5oZWFkZXItZGFyaywgLm1lZ2EtbWVudS1vcGVuKSAubGFuZy1waWNrZXJfX29wdDpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYigyNTUsIDI1NSwgMjU1LCAuMDgpO1xufVxuXG4vKiBEcm9wZG93biBNZW51IC8gTWVnYSBNZW51ICovXG4uaGVhZGVyLWNvbnRhaW5lciAubWVnYS1tZW51IHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDkycHg7IC8qIDgwcHggaGVhZGVyICsgMTJweCB0b3BiYXIgKi9cbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGhlaWdodDogY2FsYygxMDB2aCAtIDkycHgpO1xuICBiYWNrZ3JvdW5kOiByZ2IoMjU1LCAyNDksIDIzNywgLjk1KTtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDIwcHgpO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICBwYWRkaW5nOiA4MHB4IDA7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIG92ZXJmbG93LXk6IGF1dG87XG59XG5cbi5oZWFkZXItY29udGFpbmVyIC5tZWdhLW1lbnUtaW5uZXIge1xuICBtYXgtd2lkdGg6IHZhcigtLWNvbnRhaW5lci13aWR0aC1wYWRkKTtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBwYWRkaW5nOiAwIDYwcHg7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxNDQwcHgpIHtcbiAgLm1haW4taGVhZGVyIC5tZWdhLW1lbnUge1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICB9XG5cbiAgLmhlYWRlci1jb250YWluZXIgLm1lZ2EtbWVudS1pbm5lciB7XG4gICAgcGFkZGluZy1yaWdodDogMTIwcHg7XG4gIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gIC5tYWluLWhlYWRlciAubWVnYS1tZW51IHtcbiAgICBwYWRkaW5nOiA0MHB4IDI0cHg7XG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIH1cbn1cblxuLm1haW4taGVhZGVyIC5uYXYtaXRlbS5hY3RpdmUgLm1lZ2EtbWVudSB7XG4gIG9wYWNpdHk6IDE7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIHRyYW5zZm9ybTogbm9uZTtcbn1cblxuLyog4pSA4pSAIE1lZ2EgbWVudSByb2xsLWRvd24g4oCUIGRlc2t0b3Agb25seSAobWF0Y2hlcyBERVNLVE9QX01JTl9XSURUSCBpbiBzaGFyZWQuanMpXG4gICBUaGUgcGFuZWwgdW5yb2xscyBmcm9tIHVuZGVyIHRoZSBoZWFkZXIgbGlrZSBhIGJsaW5kLCBhbmQgb25seSBvbmNlIGl0IGhhc1xuICAgb3BlbmVkIGRvZXMgdGhlIGNvbnRlbnQgZmFkZSB1cCBpbnNpZGUgaXQuIENsb3NpbmcgcnVucyB0aGUgc2FtZSB0aGluZ1xuICAgYmFja3dhcmRzOiBjb250ZW50IGxlYXZlcyBmaXJzdCwgdGhlbiB0aGUgcGFuZWwgcm9sbHMgYmFjayB1cC5cblxuICAgVElNRUxJTkVcbiAgICAgb3BlbiAgIDBtcyAgcGFuZWwgc3RhcnRzIHVucm9sbGluZyAoNDAwbXMpXG4gICAgICAgICAgIDIyMG1zIGNvbnRlbnQgc3RhcnRzIGZhZGluZyB1cCAoMzAwbXMpICAg4oaSIGVuZHMgNTIwbXNcbiAgICAgY2xvc2UgICAgMG1zIGNvbnRlbnQgc3RhcnRzIGZhZGluZyBvdXQgKDE4MG1zKVxuICAgICAgICAgICAxNjBtcyBwYW5lbCBzdGFydHMgcm9sbGluZyB1cCAoMzUwbXMpICAgIOKGkiBlbmRzIDUxMG1zXG5cbiAgIEJvdGggZGlyZWN0aW9ucyBhcmUgcGxhaW4gdHJhbnNpdGlvbnMsIG5vdCBhbmltYXRpb25zOiBhbiBhbmltYXRpb24gb25seVxuICAgcGxheXMgb24gdGhlIHdheSBpbiwgd2hpY2ggaXMgd2h5IGNsb3NpbmcgdXNlZCB0byBzbmFwLiBBIHRyYW5zaXRpb24gdGFrZXNcbiAgIGl0cyB0aW1pbmcgZnJvbSB3aGljaGV2ZXIgc3RhdGUgaXQgaXMgaGVhZGluZyBUT1dBUkRTLCBzbyB0aGUgb3BlbiBkZWxheXNcbiAgIGxpdmUgb24gdGhlIC5hY3RpdmUgcnVsZXMgYW5kIHRoZSBjbG9zZSBkZWxheXMgbGl2ZSBvbiB0aGUgYmFzZSBydWxlcyDigJQgdGhhdFxuICAgaXMgd2hhdCBsZXRzIHRoZSBvcmRlciByZXZlcnNlIHdpdGhvdXQgYW55IEpTLlxuXG4gICBXSFkgY2xpcC1wYXRoIEFORCBOT1QgaGVpZ2h0L3RyYW5zZm9ybVxuICAgQW5pbWF0aW5nIGhlaWdodCB3b3VsZCByZWZsb3cgdGhlIGNvbnRlbnQgb24gZXZlcnkgZnJhbWUsIGFuZCB0aGUgdGV4dCB3b3VsZFxuICAgdmlzaWJseSByZS13cmFwIGFzIHRoZSBwYW5lbCBncmV3IOKAlCB0aGUgXCJjb250ZW50IGp1bXBcIi4gQSBzY2FsZVkgdHJhbnNmb3JtXG4gICB3b3VsZCBzcXVhc2ggdGhlIHRleHQgYXMgaXQgb3BlbmVkLiBjbGlwLXBhdGggb25seSBjaGFuZ2VzIHdoYXQgaXMgcGFpbnRlZDpcbiAgIHRoZSBjb250ZW50IGlzIGxhaWQgb3V0IGF0IGZ1bGwgc2l6ZSBmcm9tIGZyYW1lIG9uZSBhbmQgaXMgc2ltcGx5IHJldmVhbGVkLFxuICAgc28gbm90aGluZyBpbnNpZGUgZXZlciBtb3ZlcyBleGNlcHQgd2hlcmUgd2UgdGVsbCBpdCB0by4gKi9cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI1cHgpIHtcbiAgLmhlYWRlci1jb250YWluZXIgLm1lZ2EtbWVudSB7XG5cbiAgICAvKiBUaGUgYmx1ciBoYXMgdG8gZ28gZm9yIGFueSBvZiB0aGlzIHRvIGJlIHNtb290aC4gQSBiYWNrZHJvcC1maWx0ZXJlZFxuICAgICAgIGVsZW1lbnQgaXMgcmUtc2FtcGxlZCBmcm9tIHdoYXRldmVyIHNpdHMgYmVoaW5kIGl0LCBzbyBhbmltYXRpbmcgb25lXG4gICAgICAgcmUtYmx1cnMgdGhlIHBhZ2UgdW5kZXJuZWF0aCBldmVyeSBmcmFtZSBhbmQgdGhlIGNvbnRlbnQgcGFpbnRlZCBvbiB0b3BcbiAgICAgICBzdHJvYmVzIGFnYWluc3QgaXQg4oCUIHRoYXQgd2FzIHRoZSBmbGlja2VyLCBhbmQgaXQgaGFwcGVuZWQgb24gb3BhY2l0eVxuICAgICAgIGp1c3QgYXMgbXVjaCBhcyBvbiB0cmFuc2Zvcm0uXG5cbiAgICAgICBDaGVhcCB0byBsb3NlOiB0aGUgcGFuZWwgaXMgYWxyZWFkeSByZ2IoMjU1IDI0OSAyMzcgLyAwLjk1KSwgc28gdGhlIGJsdXJcbiAgICAgICBvbmx5IGV2ZXIgc2hvd2VkIHRocm91Z2ggNSUgb2YgdGhlIHN1cmZhY2UsIGFuZCBvbiBhIGRhcmsgaGVhZGVyIGEgZnVsbHlcbiAgICAgICBvcGFxdWUgIzM3Mzc0MiArIGdyYWluIGNvdmVycyBpdCBlbnRpcmVseS4gRGVza3RvcC1vbmx5LCBzbyB0aGUgbW9iaWxlXG4gICAgICAgZmx5b3V0IOKAlCB3aGVyZSB0aGUgcGFuZWwgaXMgYGJhY2tncm91bmQ6IHRyYW5zcGFyZW50YCBhbmQgdGhlIGJsdXIgZG9lc1xuICAgICAgIHJlYWwgd29yayDigJQga2VlcHMgaXQuICovXG4gICAgYmFja2Ryb3AtZmlsdGVyOiBub25lO1xuXG4gICAgLyogb3BhY2l0eSBzdGF5cyBhdCAxIGluIGJvdGggc3RhdGVzOiB0aGUgcmV2ZWFsIGlzIHRoZSBjbGlwJ3Mgam9iLCBhbmRcbiAgICAgICBmYWRpbmcgdGhlIHBhbmVsIGFzIHdlbGwgd291bGQgZG91YmxlIHVwIG9uIHRoZSBjb250ZW50J3Mgb3duIGZhZGUgYW5kXG4gICAgICAgcmVhZCBhcyB0aGUgdHdvIGNvbWluZyBhcGFydC4gKFRoZSBiYXNlIHJ1bGUgZnVydGhlciB1cCBzZXRzIG9wYWNpdHk6IDBcbiAgICAgICBmb3IgdGhlIG1vYmlsZSBhY2NvcmRpb24sIHdoaWNoIHN0aWxsIGFwcGxpZXMgYmVsb3cgMTAyNXB4LikgKi9cbiAgICBvcGFjaXR5OiAxO1xuICAgIGNsaXAtcGF0aDogaW5zZXQoMCAwIDEwMCUgMCk7XG5cbiAgICAvKiBDbG9zaW5nOiB3YWl0IG91dCB0aGUgY29udGVudCdzIGV4aXQsIHRoZW4gcm9sbCB1cC4gdmlzaWJpbGl0eSBmbGlwcyBhdFxuICAgICAgIHRoZSB2ZXJ5IGVuZCBzbyB0aGUgcGFuZWwgc3RheXMgcGFpbnRlZCBmb3IgdGhlIHdob2xlIHJvbGwg4oCUIGhpZGluZyBpdFxuICAgICAgIG9uIGZyYW1lIG9uZSB3b3VsZCBsZWF2ZSBub3RoaW5nIHRvIHdhdGNoLiAqL1xuICAgIHRyYW5zaXRpb246XG4gICAgICBjbGlwLXBhdGggLjM1cyBjdWJpYy1iZXppZXIoLjQsIDAsIC4yLCAxKSAuMTZzLFxuICAgICAgdmlzaWJpbGl0eSAwcyBsaW5lYXIgLjUxcztcbiAgfVxuXG4gIC5tYWluLWhlYWRlciAubmF2LWl0ZW0uYWN0aXZlIC5tZWdhLW1lbnUge1xuICAgIGNsaXAtcGF0aDogaW5zZXQoMCAwIDAgMCk7XG5cbiAgICAvKiBPcGVuaW5nOiB0aGUgcGFuZWwgZ29lcyBmaXJzdCwgZnJvbSBmcmFtZSB6ZXJvLiAqL1xuICAgIHRyYW5zaXRpb246XG4gICAgICBjbGlwLXBhdGggLjRzIGN1YmljLWJlemllciguMTYsIDEsIC4zLCAxKSAwcyxcbiAgICAgIHZpc2liaWxpdHkgMHMgbGluZWFyIDBzO1xuICB9XG5cbiAgLyogQ29udGVudCDigJQgZmFkZXMgdXAgaW5zaWRlIHRoZSBwYW5lbCBvbmNlIGl0IGhhcyB1bnJvbGxlZCwgYW5kIGxlYXZlcyBiZWZvcmVcbiAgICAgaXQgcm9sbHMgYmFjay4gSGVsZCBvbiAubWVnYS1tZW51LWlubmVyIHJhdGhlciB0aGFuIHRoZSBwYW5lbCBzbyB0aGUgdHdvXG4gICAgIGNhbiBiZSB0aW1lZCBpbmRlcGVuZGVudGx5LiAqL1xuICAuaGVhZGVyLWNvbnRhaW5lciAubWVnYS1tZW51LWlubmVyIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMTJweCwgMCk7XG5cbiAgICAvKiBDbG9zaW5nOiBpbW1lZGlhdGUgYW5kIHF1aWNrLCBzbyBpdCBpcyBnb25lIGJlZm9yZSB0aGUgcm9sbC11cCBzdGFydHMuICovXG4gICAgdHJhbnNpdGlvbjpcbiAgICAgIG9wYWNpdHkgLjE4cyBlYXNlIDBzLFxuICAgICAgdHJhbnNmb3JtIC4xOHMgZWFzZSAwcztcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgfVxuXG4gIC5tYWluLWhlYWRlciAubmF2LWl0ZW0uYWN0aXZlIC5tZWdhLW1lbnUtaW5uZXIge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcblxuICAgIC8qIE9wZW5pbmc6IGhhbmdzIGJhY2sgdW50aWwgdGhlIHBhbmVsIGlzIG1vc3Qgb2YgdGhlIHdheSBkb3duLiAqL1xuICAgIHRyYW5zaXRpb246XG4gICAgICBvcGFjaXR5IC4zcyBlYXNlIC4yMnMsXG4gICAgICB0cmFuc2Zvcm0gLjM1cyBjdWJpYy1iZXppZXIoLjE2LCAxLCAuMywgMSkgLjIycztcbiAgfVxuXG4gIC8qIEdyYWluIOKAlCBzYW1lIHJvbGwsIHNhbWUgdGltaW5nIGFzIHRoZSBwYW5lbCBpdCB0ZXh0dXJlcy5cbiAgICAgSXQgc2l0cyBvbiAubWFpbi1oZWFkZXIgKHNlZSB0aGUgbG9uZyBub3RlIG5leHQgdG8gdGhlIGJhc2UgcnVsZSBmb3Igd2h5XG4gICAgIGl0IGNhbid0IGxpdmUgaW5zaWRlIC5tZWdhLW1lbnUpLCBzbyBpdCBkb2Vzbid0IGluaGVyaXQgdGhlIHBhbmVsJ3MgY2xpcFxuICAgICBhbmQgdXNlZCB0byBzbmFwOiBmdWxseSBkcmF3biBvdmVyIHRoZSBwYWdlIHRoZSBtb21lbnQgdGhlIG1lbnUgb3BlbmVkLFxuICAgICBhbmQgc3RpbGwgZHJhd24gdGhlcmUgZm9yIHRoZSB3aG9sZSByb2xsLXVwIHVudGlsIHNoYXJlZC5qcydzIHRlYXJkb3duXG4gICAgIHJlbW92ZWQgLm1lZ2EtbWVudS1vcGVuIH4xMG1zIGFmdGVyIHRoZSBwYW5lbCBoYWQgZmluaXNoZWQuIFRoYXQgdHJhaWxpbmdcbiAgICAgcmVtb3ZhbCBpcyB3aGF0IHJlYWQgYXMgdGhlIGplcmsgYXQgdGhlIGVuZCBvZiB0aGUgY2xvc2Ug4oCUIHRoZSBwYW5lbFxuICAgICBsYW5kZWQgY2xlYW5seSBvbiB0aGUgbmF2IGFuZCB0aGVuIHRoZSB3aG9sZSBwYWdlIGJyaWdodGVuZWQgYSBmcmFtZSBsYXRlci5cbiAgICAgQ2xvbmluZyB0aGUgcGFuZWwncyB0d28gY2xpcC1wYXRoIHRyYW5zaXRpb25zIGhlcmUga2VlcHMgdGhlIHRleHR1cmVcbiAgICAgd2VsZGVkIHRvIHRoZSBzdXJmYWNlIGl0IGJlbG9uZ3MgdG8gaW4gYm90aCBkaXJlY3Rpb25zLlxuXG4gICAgIERlY2xhcmVkIHVuY29uZGl0aW9uYWxseSDigJQgbm90IG9ubHkgdW5kZXIgLm1lZ2EtbWVudS1vcGVuIOKAlCBiZWNhdXNlIGFcbiAgICAgcHNldWRvLWVsZW1lbnQgQ1JFQVRFRCBieSB0aGUgc2FtZSBjbGFzcyBjaGFuZ2UgdGhhdCBvcGVucyB0aGUgbWVudSBoYXMgbm9cbiAgICAgcHJldmlvdXMgc3R5bGUgdG8gdHJhbnNpdGlvbiBmcm9tIGFuZCB3b3VsZCBwYWludCBmdWxseSB1bnJvbGxlZCBvbiBmcmFtZVxuICAgICBvbmUuIEtlZXBpbmcgaXQgaW4gdGhlIHRyZWUsIGNsaXBwZWQgdG8gbm90aGluZyBhbmQgdmlzaWJpbGl0eTpoaWRkZW4sXG4gICAgIGdpdmVzIHRoZSBjbGlwIHNvbWV3aGVyZSB0byBhbmltYXRlIEZST00uIEl0IGNvc3RzIG5vdGhpbmcgd2hpbGUgY2xvc2VkOlxuICAgICBub3RoaW5nIGlzIHBhaW50ZWQsIG5vdGhpbmcgaXMgaGl0LXRlc3RlZCwgYW5kIGdyYWluLnBuZyBpcyBhbHJlYWR5XG4gICAgIGZldGNoZWQgZm9yIHRoZSBoZWFkZXIvbW9iaWxlLW1lbnUgYmFja2dyb3VuZHMuICovXG4gIC5tYWluLWhlYWRlcjo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGluc2V0OiA5MnB4IDAgMDsgLyogbWF0Y2hlcyAubWVnYS1tZW51J3MgdG9wOiA4MHB4IGhlYWRlciArIDEycHggdG9wYmFyICovXG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vLi4vLi4vc3RhdGljL2Fzc2V0cy9pbWFnZXMvbGF0ZXN0L2dyYWluLnBuZ1wiKTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0O1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgei1pbmRleDogMTA7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIGNsaXAtcGF0aDogaW5zZXQoMCAwIDEwMCUgMCk7XG5cbiAgICAvKiBDbG9zaW5nIOKAlCBtaXJyb3JzIC5tZWdhLW1lbnUncyBjbG9zZSB0cmFuc2l0aW9uIGV4YWN0bHkuICovXG4gICAgdHJhbnNpdGlvbjpcbiAgICAgIGNsaXAtcGF0aCAuMzVzIGN1YmljLWJlemllciguNCwgMCwgLjIsIDEpIC4xNnMsXG4gICAgICB2aXNpYmlsaXR5IDBzIGxpbmVhciAuNTFzO1xuICB9XG5cbiAgLyogOmhhcygpLCBiZWNhdXNlIHRoZSBjbGFzcyB0aGF0IG9wZW5zIHRoZSBwYW5lbCBzaXRzIG9uIHRoZSB0cmlnZ2VyLCBub3Qgb25cbiAgICAgdGhlIGhlYWRlciB0aGUgZ3JhaW4gaXMgYXR0YWNoZWQgdG8uIC5tZWdhLW1lbnUtb3BlbiBpcyBrZXB0IGluIHRoZVxuICAgICBzZWxlY3RvciBzbyB0aGUgZ3JhaW4gY2FuIG5ldmVyIG91dGxpdmUgdGhlIGRhcmsgY2hyb21lIGl0IGJlbG9uZ3MgdG8g4oCUXG4gICAgIHNoYXJlZC5qcyBob2xkcyB0aGF0IGNsYXNzIGZvciB0aGUgd2hvbGUgY2xvc2UsIHRoZW4gZHJvcHMgaXQuIEEgc3dhcFxuICAgICBiZXR3ZWVuIHR3byBwYW5lbHMgbGVhdmVzIGJvdGggaGFsdmVzIG1hdGNoaW5nLCBzbyB0aGUgZ3JhaW4gc2ltcGx5IHN0YXlzXG4gICAgIHVucm9sbGVkIGFuZCBubyB0cmFuc2l0aW9uIHJ1bnMg4oCUIHNhbWUgYXMgdGhlIHBhbmVsLiAqL1xuICAubWFpbi1oZWFkZXIubWVnYS1tZW51LW9wZW46aGFzKC5uYXYtaXRlbS5kcm9wZG93bi10cmlnZ2VyLmFjdGl2ZSk6OmFmdGVyIHtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIGNsaXAtcGF0aDogaW5zZXQoMCAwIDAgMCk7XG5cbiAgICAvKiBPcGVuaW5nIOKAlCB3aXRoIHRoZSBwYW5lbCwgZnJvbSBmcmFtZSB6ZXJvLiAqL1xuICAgIHRyYW5zaXRpb246XG4gICAgICBjbGlwLXBhdGggLjRzIGN1YmljLWJlemllciguMTYsIDEsIC4zLCAxKSAwcyxcbiAgICAgIHZpc2liaWxpdHkgMHMgbGluZWFyIDBzO1xuICB9XG5cbiAgLyog4pSA4pSAIFRoZSBoZWFkZXIncyBzaGFyZSBvZiB0aGUgcm9sbC11cCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgICAgVGhlIHBhbmVsIGlzIGZpeGVkIGF0IHRvcDogOTJweCwgc28gaXRzIGNsaXAgcnVucyBvdXQgb2Ygcm9hZCBhdCB0aGUgYmFyXG4gICAgIGFuZCB0aGUgY2xvc2UgcmVhZCBhcyB0d28gYmVhdHM6IGEgc3dlZXAgdGhhdCBzdG9wcGVkIGF0IHRoZSBuYXYsIHRoZW4gdGhlXG4gICAgIGhlYWRlciBjaGFuZ2luZyBhcHBlYXJhbmNlIGEgbW9tZW50IGxhdGVyLiBUaGlzIGNhcnJpZXMgdGhlIHNhbWUgZWRnZSB0aGVcbiAgICAgcmVzdCBvZiB0aGUgd2F5LCBmcm9tIHRoZSBiYXIncyB1bmRlcnNpZGUgdXAgdG8geT0wLlxuXG4gICAgIFdoYXQgbWFrZXMgaXQgcG9zc2libGUgaXMgdGhhdCB0aGUgYmFyJ3MgZGFyayBzdXJmYWNlIGlzIHRoZSA6OmJlZm9yZVxuICAgICBjdXJ0YWluIChzZWUgaXRzIHJ1bGUgYWJvdmUpIHJhdGhlciB0aGFuIHRoZSBlbGVtZW50J3Mgb3duIGJhY2tncm91bmQsIGFuZFxuICAgICB0aGF0IHNoYXJlZC5qcyBoYW5kcyB0aGUgZWxlbWVudCBpdHMgcG9zdC1jbG9zZSB0aGVtZSB0aGUgbW9tZW50IHRoZSBjbG9zZVxuICAgICBTVEFSVFMg4oCUIGludmlzaWJsZSwgc2luY2UgdGhlIG9wYXF1ZSBjdXJ0YWluIGlzIHN0aWxsIGNvdmVyaW5nIGl0LiBCeSB0aGVcbiAgICAgdGltZSB0aGUgd2lwZSBydW5zIHRoZXJlIGlzIGFscmVhZHkgYSBmaW5pc2hlZCBoZWFkZXIgdW5kZXJuZWF0aCBmb3IgdGhlXG4gICAgIGVkZ2UgdG8gdW5jb3Zlciwgc28gbm8gc2Vjb25kIGJlYXQgaXMgbGVmdCBvdmVyLlxuXG4gICAgIFRoZSBuYXYgY29udGVudCBjYW4ndCBiZSB3aXBlZCDigJQgaXQgaXMgb25lIHNldCBvZiBlbGVtZW50cyB0aGF0IGhhcyB0b1xuICAgICBjaGFuZ2UgY29sb3VyLCBub3QgdHdvIGxheWVycyB0byByZXZlYWwgYmV0d2VlbiDigJQgc28gaXQgY3Jvc3NmYWRlcyBvbiB0aGVcbiAgICAgc2FtZSBjbG9jayBpbnN0ZWFkICgubWVnYS1tZW51LWNsb3NpbmcsIHVwIHRvcCkuIFNhbWUgc3RhcnQsIHNhbWUgMC4xOHMsXG4gICAgIHNvIHRoZSB0d28gcmVhZCBhcyBvbmUgbW92ZW1lbnQgc2V0dGxpbmcgcmF0aGVyIHRoYW4gYSB3aXBlIGFuZCBhIGZhZGUuXG5cbiAgICAgOm5vdCguaGVhZGVyLWRhcmspIHNraXBzIHRoZSB3aG9sZSB0aGluZyB3aGVuIHRoZSBoZWFkZXIgaXMgc3RheWluZyBkYXJrOlxuICAgICB0aGUgYmFyIGxvb2tzIGlkZW50aWNhbCBlaXRoZXIgc2lkZSBvZiB0aGUgY2xvc2UsIHNvIHRoZXJlIHdvdWxkIGJlXG4gICAgIG5vdGhpbmcgdG8gdW5jb3ZlciBhbmQgdGhlIHdpcGUgd291bGQganVzdCBzdHJpcCB0aGUgZ3JhaW4gYW5kIHBvcCBpdFxuICAgICBiYWNrLiAqL1xuICAubWFpbi1oZWFkZXI6aXMoLm1lZ2EtbWVudS1vcGVuLCAubWVnYS1tZW51LWNsb3NpbmcpOjpiZWZvcmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMzNzM3NDI7XG4gIH1cblxuICAubWFpbi1oZWFkZXIubWVnYS1tZW51LWNsb3Npbmc6bm90KC5tZWdhLW1lbnUtb3BlbiwgLmhlYWRlci1kYXJrKTo6YmVmb3JlIHtcbiAgICBjbGlwLXBhdGg6IGluc2V0KDAgMCAxMDAlIDApO1xuXG4gICAgLyogRWFzZS1PVVQsIG5vdCB0aGUgcGFuZWwncyBlYXNlLWluLW91dDogdGhlIGVkZ2UgYXJyaXZlcyBoZXJlIGFscmVhZHlcbiAgICAgICBtb3ZpbmcsIHNvIGEgY3VydmUgdGhhdCBzdGFydHMgZnJvbSByZXN0IHdvdWxkIHB1dCBhIGhpdGNoIGF0IHRoZSBleGFjdFxuICAgICAgIHNlYW0gdGhpcyBpcyBtZWFudCB0byBoaWRlLiBTdGFydGluZyBhdCBzcGVlZCBhbmQgc2V0dGxpbmcgcmVhZHMgYXMgdGhlXG4gICAgICAgc2FtZSBlZGdlIGNhcnJ5aW5nIG9uLiAoQSB0cnVlIHZlbG9jaXR5IG1hdGNoIHdvdWxkIHJ1biB0aGlzIGxlZyBpblxuICAgICAgIGFib3V0IHR3byBmcmFtZXMg4oCUIGZhciB0b28gZmFzdCBmb3IgdGhlIGNvbnRlbnQgdW5kZXJuZWF0aCB0byBjcm9zc1xuICAgICAgIG92ZXIg4oCUIHNvIHRoZSBkaXN0YW5jZSBpcyBob25lc3QgYW5kIHRoZSBzcGVlZCBpcyBlYXNlZC4pICovXG4gICAgdHJhbnNpdGlvbjpcbiAgICAgIGNsaXAtcGF0aCAuMThzIGN1YmljLWJlemllcigwLCAwLCAuMiwgMSksXG4gICAgICBvcGFjaXR5IC4xOHMgZWFzZTtcbiAgfVxuXG4gIC8qIFN3YXBwaW5nIG9uZSBvcGVuIHBhbmVsIGZvciBhbm90aGVyIHN0YXlzIGluc3RhbnQsIHdoaWNoIGlzIHRoZSBiZWhhdmlvdXJcbiAgICAganMvc2hhcmVkLmpzIGRlbGliZXJhdGVseSBlbmNvZGVzIHdpdGggLm1lZ2EtbWVudS1pbnRybyAoc2VlIGl0cyBjb21tZW50KS5cbiAgICAgVHdvIHNlbGVjdG9ycywgYmVjYXVzZSBhIHN3YXAgaGFzIHR3byBoYWx2ZXMgdG8gc2lsZW5jZTpcbiAgICAgICDCtyB0aGUgaW5jb21pbmcgcGFuZWwg4oCUIC5tZWdhLW1lbnUtaW50cm8gaXMgYWJzZW50IG9uIGEgc3dhcCBhbmQgcHJlc2VudFxuICAgICAgICAgb24gYSBjb2xkIG9wZW4sIHNvIHRoaXMgaXMgZXhhY3RseSB0aGUgXCJub3QgYSBjb2xkIG9wZW5cIiBjYXNlXG4gICAgICAgwrcgdGhlIG91dGdvaW5nIHBhbmVsIOKAlCBzdGlsbCA6bm90KC5hY3RpdmUpLCBidXQgYW5vdGhlciB0cmlnZ2VyIElTXG4gICAgICAgICBhY3RpdmUsIHNvIGl0IG11c3QgdmFuaXNoIHJhdGhlciB0aGFuIHJvbGwgdXAgYmVoaW5kIGl0cyByZXBsYWNlbWVudFxuICAgICBPbiBhIHJlYWwgY2xvc2Ugbm8gdHJpZ2dlciBpcyBsZWZ0IGFjdGl2ZSwgdGhlIHNlY29uZCBzZWxlY3RvciBzdG9wc1xuICAgICBtYXRjaGluZywgYW5kIHRoZSBwYW5lbCBnZXRzIGl0cyBmdWxsIHNlcXVlbmNlLiBCb3RoIGhhbHZlcyBjb3ZlciB0aGVcbiAgICAgaW5uZXIgdG9vLCBvciB0aGUgY29udGVudCB3b3VsZCBhbmltYXRlIHdoaWxlIGl0cyBwYW5lbCBkaWQgbm90LiAqL1xuICAubWFpbi1oZWFkZXI6bm90KC5tZWdhLW1lbnUtaW50cm8pIC5uYXYtaXRlbS5hY3RpdmUgLm1lZ2EtbWVudSxcbiAgLm1haW4taGVhZGVyOm5vdCgubWVnYS1tZW51LWludHJvKSAubmF2LWl0ZW0uYWN0aXZlIC5tZWdhLW1lbnUtaW5uZXIsXG4gIC5tYWluLWhlYWRlcjpoYXMoLm5hdi1pdGVtLmRyb3Bkb3duLXRyaWdnZXIuYWN0aXZlKSAubmF2LWl0ZW06bm90KC5hY3RpdmUpIC5tZWdhLW1lbnUsXG4gIC5tYWluLWhlYWRlcjpoYXMoLm5hdi1pdGVtLmRyb3Bkb3duLXRyaWdnZXIuYWN0aXZlKSAubmF2LWl0ZW06bm90KC5hY3RpdmUpIC5tZWdhLW1lbnUtaW5uZXIge1xuICAgIHRyYW5zaXRpb246IG5vbmU7XG4gIH1cblxuICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAgIC5oZWFkZXItY29udGFpbmVyIC5tZWdhLW1lbnUsXG4gICAgLm1haW4taGVhZGVyIC5uYXYtaXRlbS5hY3RpdmUgLm1lZ2EtbWVudSxcbiAgICAuaGVhZGVyLWNvbnRhaW5lciAubWVnYS1tZW51LWlubmVyLFxuICAgIC5tYWluLWhlYWRlciAubmF2LWl0ZW0uYWN0aXZlIC5tZWdhLW1lbnUtaW5uZXIsXG4gICAgLm1haW4taGVhZGVyOjphZnRlcixcbiAgICAubWFpbi1oZWFkZXIubWVnYS1tZW51LW9wZW46aGFzKC5uYXYtaXRlbS5kcm9wZG93bi10cmlnZ2VyLmFjdGl2ZSk6OmFmdGVyLFxuICAgIC5tYWluLWhlYWRlci5tZWdhLW1lbnUtY2xvc2luZzpub3QoLm1lZ2EtbWVudS1vcGVuLCAuaGVhZGVyLWRhcmspOjpiZWZvcmUge1xuICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuLm1lZ2EtbWVudS1ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTtcbiAgZ2FwOiA2NHB4O1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAxMjAwcHg7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAubWVnYS1tZW51LWdyaWQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICB9XG59XG5cbi5tYWluLWhlYWRlciAubWVudS1oZWFkaW5nIHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcbiAgbWFyZ2luLWJvdHRvbTogMzJweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuLm1haW4taGVhZGVyIC5zdWJtZW51LWxpc3Qge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG59XG5cbi5tYWluLWhlYWRlciAuc3VibWVudS1saXN0IGxpIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbWFyZ2luLWJvdHRvbTogMzJweDtcbn1cblxuLm1haW4taGVhZGVyIC5tZWdhLW1lbnUgdWwuc3VibWVudS1saXN0IHtcbiAgbWFyZ2luOiAwO1xufVxuXG4ubWFpbi1oZWFkZXIgLnN1Ym1lbnUtbGluayB7XG4gIGZvbnQtc2l6ZTogMjJweDtcbiAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBwYWRkaW5nOiAwIDAgMTVweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcblxuICAvKiBhbmltYXRlZCBib3JkZXI6IHdoaXRlIGxpbmUgcHJvZ3Jlc3NlcyBvdmVyIGZhaW50IHN0YXRpYyBsaW5lICovXG4gIGJhY2tncm91bmQtaW1hZ2U6XG4gICAgbGluZWFyLWdyYWRpZW50KCNmZmYsICNmZmYpLFxuICAgIGxpbmVhci1ncmFkaWVudChyZ2IoMjU1LCAyNTUsIDI1NSwgLjIpLCByZ2IoMjU1LCAyNTUsIDI1NSwgLjIpKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjpcbiAgICAwIDEwMCUsXG4gICAgMCAxMDAlO1xuICBiYWNrZ3JvdW5kLXNpemU6XG4gICAgMCUgMXB4LFxuICAgIDEwMCUgMXB4O1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuXG4gIC8qIHRyYW5zaXRpb246IGNvbG9yIDAuM3MgZWFzZSwgYmFja2dyb3VuZC1zaXplIDAuNHMgZWFzZTsgKi9cbiAgdHJhbnNpdGlvbjpcbiAgICBwYWRkaW5nIC4zcyBlYXNlLFxuICAgIGNvbG9yIC4zcyBlYXNlLFxuICAgIGJhY2tncm91bmQtc2l6ZSAuNHMgZWFzZTtcbn1cblxuLyogQXJyb3cgaWNvbiBpcyBleHRlcm5hbC1saW5rLW9ubHkg4oCUIG1hcmsgYSBzdWJtZW51LWxpbmsgd2l0aFxuICAgdGFyZ2V0PVwiX2JsYW5rXCIgdG8gb3B0IGl0IGluIChzdGFuZGFyZCBcIm9wZW5zIGVsc2V3aGVyZVwiIGNvbnZlbnRpb24pLiAqL1xuLm1haW4taGVhZGVyIC5zdWJtZW51LWxpbms6OmFmdGVyIHtcbiAgY29udGVudDogbm9uZTtcbn1cblxuLm1haW4taGVhZGVyIC5zdWJtZW51LWxpbmtbdGFyZ2V0PVwiX2JsYW5rXCJdOjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIGJhY2tncm91bmQ6IHVybChcIi4uLy4uLy4uL3N0YXRpYy9hc3NldHMvaW1hZ2VzL2xhdGVzdC91cC1yaWdodC1hcnJvdy1uZXcuc3ZnXCIpIG5vLXJlcGVhdCBjZW50ZXIgL1xuICAgIGNvbnRhaW47XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4zcyBlYXNlO1xufVxuXG4ubWFpbi1oZWFkZXIgLnN1Ym1lbnUtbGluazpob3ZlciB7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLXNpemU6XG4gICAgMTAwJSAxcHgsXG4gICAgMTAwJSAxcHg7XG59XG5cbi5tYWluLWhlYWRlciAuc3VibWVudS1saW5rW3RhcmdldD1cIl9ibGFua1wiXTpob3Zlcjo6YWZ0ZXIge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG59XG5cbi5tYWluLWhlYWRlciAuc3VibWVudS1saW5rX19ib2R5IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4ubWFpbi1oZWFkZXIgLnN1Ym1lbnUtbGlua19fdGV4dCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjVzIGN1YmljLWJlemllciguMzQsIDEuNTYsIC42NCwgMSk7XG59XG5cbi5tYWluLWhlYWRlciAuc3VibWVudS1saW5rOmhvdmVyIC5zdWJtZW51LWxpbmtfX3RleHQge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLThweCk7XG59XG5cbi5tYWluLWhlYWRlciAuc3VibWVudS1saW5rX19kZXNjIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAxMDAlO1xuICB3aWR0aDogbWF4LWNvbnRlbnQ7XG4gIG1heC13aWR0aDogMjYwcHg7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IC4wMmVtO1xuICBjb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUsIC40NSk7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBvcGFjaXR5OiAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpO1xuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtLCBvcGFjaXR5O1xuICB0cmFuc2l0aW9uOlxuICAgIHRyYW5zZm9ybSAuNHMgY3ViaWMtYmV6aWVyKC40LCAwLCAuMiwgMSksXG4gICAgb3BhY2l0eSAuNHMgZWFzZSAuMDhzO1xufVxuXG4ubWFpbi1oZWFkZXIgLnN1Ym1lbnUtbGluazpob3ZlciAuc3VibWVudS1saW5rX19kZXNjIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gIC5tYWluLWhlYWRlciAuc3VibWVudS1saW5rIHtcbiAgICBmb250LXNpemU6IDIwcHg7XG4gIH1cbn1cblxuLyogQm90dG9tIHNlY3Rpb24gKi9cbi5tYWluLWhlYWRlciAubWVnYS1tZW51LWJvdHRvbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICBtYXJnaW4tdG9wOiA2MHB4O1xuICBwYWRkaW5nLWJvdHRvbTogNDBweDtcbiAgcGFkZGluZy10b3A6IDQwcHg7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAubWFpbi1oZWFkZXIgLm1lZ2EtbWVudS1ib3R0b20ge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgZ2FwOiAzMHB4O1xuICB9XG59XG5cbi8qIFBhZ2VzIChlLmcuIGluZGV4Lmh0bWwpIHRoYXQgZHJvcCAubWVnYS1ib3R0b20tY2FyZCBsZWF2ZSAubWVnYS1zdG9yeS1ib3ggYXNcbiAgIHRoZSBzb2xlIGNoaWxkIOKAlCBzcGFjZS1iZXR3ZWVuIHdvdWxkIHRoZW4gc2l0IGl0IGZsZXgtc3RhcnQgKGxlZnQpIGluc3RlYWRcbiAgIG9mIGF0IGl0cyB1c3VhbCByaWdodC1zaWRlIHNwb3QuICovXG5AbWVkaWEgKG1pbi13aWR0aDogNzY5cHgpIHtcbiAgLm1haW4taGVhZGVyIC5tZWdhLXN0b3J5LWJveDpvbmx5LWNoaWxkIHtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgfVxufVxuXG4ubWFpbi1oZWFkZXIgLm1lZ2EtYm90dG9tLWNhcmQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDMwcHg7XG4gIGJhY2tncm91bmQ6ICMyZjJmMzk7XG4gIHBhZGRpbmc6IDI0cHg7XG59XG5cbi5tYWluLWhlYWRlciAubWVnYS1ib3R0b20tY2FyZCBwIHtcbiAgZm9udC1zaXplOiAyMHB4O1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgbWF4LXdpZHRoOiA1MDBweDtcbn1cblxuLyogQ1RBIEJ1dHRvbiAqL1xuLm1haW4taGVhZGVyIC5tZWdhLWJvdHRvbS1jYXJkIC5jdGEge1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG5cbi5tYWluLWhlYWRlciAubWVnYS1zdG9yeS1ib3gge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiA5NnB4O1xuICBoZWlnaHQ6IDc5cHg7XG4gIG92ZXJmbG93OiB2aXNpYmxlOyAvKiBsZXQgdGhlIGxpZCArIHBob3RvIHJpc2UgYWJvdmUgdGhlIGJveCBvbiBob3ZlciAqL1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi8qIEJveCBib2R5IChmcm9udCkg4oCUIG1hc2tzIHRoZSBsb3dlciBwYXJ0IG9mIHRoZSBwaG90byAqL1xuLm1haW4taGVhZGVyIC5tZWdhLXN0b3J5LWJveCAuYm94LWJvZHkge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogOTZweDtcbiAgaGVpZ2h0OiA3OXB4O1xufVxuXG4vKiBSaXRlc2ggcGhvdG8g4oCUIHR1Y2tlZCBpbnNpZGUgdGhlIGJveCwgcmlzZXMgb3V0IHdoZW4gdGhlIGxpZCBvcGVucyAqL1xuLm1haW4taGVhZGVyIC5tZWdhLXN0b3J5LWJveCAud293LXN0b3J5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogMzAwcHg7XG4gIGhlaWdodDogOTZweDtcbiAgei1pbmRleDogMTtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgdHJhbnNmb3JtOiBzY2FsZSguNykgdHJhbnNsYXRlWCgzNnB4KSB0cmFuc2xhdGVZKC0zMHB4KTtcbiAgdHJhbnNmb3JtLW9yaWdpbjogYm90dG9tIGNlbnRlcjtcbiAgdHJhbnNpdGlvbjpcbiAgICB0cmFuc2Zvcm0gLjVzIGN1YmljLWJlemllciguMTYsIDEsIC4zLCAxKSxcbiAgICBvcGFjaXR5IC4zNXMgZWFzZTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCAjN2MyMjM1IDAlLCAjMmQyMjI1IDY4LjkxJSwgIzJkMjIyNSAxMDAlKTtcbiAgcGFkZGluZzogMTZweDtcbn1cblxuLm1haW4taGVhZGVyIC5tZWdhLXN0b3J5LWJveCAud293LXN0b3J5IC50ZXh0IHtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBsaW5lLWhlaWdodDogMThweDtcbiAgbGV0dGVyLXNwYWNpbmc6IC4yNHB4O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDVweDtcbn1cblxuLm1haW4taGVhZGVyIC5tZWdhLXN0b3J5LWJveCAud293LXN0b3J5IC5zdG9yeS1waG90byB7XG4gIHdpZHRoOiBhdXRvO1xuICBoZWlnaHQ6IDk2cHg7XG59XG5cbi8qIExpZCDigJQgc2l0cyBvbiB0b3Agb2YgdGhlIGJveCwgbGlmdHMgYW5kIHRpbHRzIG9wZW4gb24gaG92ZXIgKi9cbi5tYWluLWhlYWRlciAubWVnYS1zdG9yeS1ib3ggLmJveC1jYXAge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAxM3B4O1xuICB0b3A6IDZweDtcbiAgei1pbmRleDogMztcbiAgdHJhbnNmb3JtLW9yaWdpbjogYm90dG9tIGxlZnQ7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuNXMgY3ViaWMtYmV6aWVyKC4xNiwgMSwgLjMsIDEpO1xufVxuXG4vKiBIb3ZlciAvIGtleWJvYXJkLWZvY3VzID0gb3BlbiBzdGF0ZSAqL1xuLm1haW4taGVhZGVyIC5tZWdhLXN0b3J5LWJveDpob3ZlciAuYm94LWNhcCxcbi5tYWluLWhlYWRlciAubWVnYS1zdG9yeS1ib3g6Zm9jdXMtd2l0aGluIC5ib3gtY2FwIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoNDBweCwgLTQ1cHgpIHJvdGF0ZSgzMGRlZyk7XG59XG5cbi5tYWluLWhlYWRlciAubWVnYS1zdG9yeS1ib3g6aG92ZXIgLndvdy1zdG9yeSxcbi5tYWluLWhlYWRlciAubWVnYS1zdG9yeS1ib3g6Zm9jdXMtd2l0aGluIC53b3ctc3Rvcnkge1xuICBvcGFjaXR5OiAxO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICBwb2ludGVyLWV2ZW50czogYXV0bzsgLyogYWxsb3cgdGhlIHJldmVhbGVkIHBhbmVsIHRvIGJlIGhvdmVyZWQgKyBjbGlja2VkICovXG4gIHRyYW5zZm9ybTogc2NhbGUoMSkgdHJhbnNsYXRlWCgtMjBweCkgdHJhbnNsYXRlWSgtNzNweCk7XG59XG5cbi8qIElubm92YXRpb24gTWVnYSBNZW51IHNwZWNpZmljIGxheW91dCAqL1xuLm1haW4taGVhZGVyIC5tZWdhLW1lbnUtdG9wLXNlY3Rpb24ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IDYwcHg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cblxuLm1haW4taGVhZGVyIC5tZWdhLW1lbnUtbGVmdCB7XG4gIGZsZXg6IDE7XG59XG5cbi5kaXNjaXBsaW5lLWdyaWQge1xuICBtYXgtd2lkdGg6IDEwMCU7XG59XG5cbi5pbm5vdmF0aW9uLWdyaWQsXG4uYWJvdXQtZ3JpZCB7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gIG1heC13aWR0aDogNzAwcHg7XG59XG5cbi5pbnNpZ2h0LWdyaWQge1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgbWF4LXdpZHRoOiA3MDBweDtcbn1cblxuLm1lZ2EtbWVudSAubWVnYS1tZW51LXJpZ2h0IHtcbiAgZmxleDogMTtcbiAgbWF4LXdpZHRoOiA1MDBweDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiAyMHB4O1xufVxuXG4ubWVnYS1tZW51IC5zdG9yeS1pbWFnZS1jb250YWluZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1ib3R0b206IDEwcHg7XG59XG5cbi8qIC50cnVlLXN0b3J5LXJpYmJvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAyNHB4O1xuICBsZWZ0OiAtMzVweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tYWNjZW50LXJlZCk7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgcGFkZGluZzogNnB4IDQwcHg7XG4gIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IDEuNXB4O1xuICB6LWluZGV4OiAyO1xuICBib3gtc2hhZG93OiAwIDRweCAxMHB4IHJnYmEoMCwgMCwgMCwgLjMpO1xufSAqL1xuXG4vKiBSaWJib24gKi9cbi50cnVlLXN0b3J5LXJpYmJvbiB7XG4gIHdpZHRoOiAxNTBweDtcbiAgaGVpZ2h0OiAxNTBweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxO1xufVxuXG4udHJ1ZS1zdG9yeS1yaWJib246OmJlZm9yZSxcbi50cnVlLXN0b3J5LXJpYmJvbjo6YWZ0ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IC0xO1xuICBjb250ZW50OiBcIlwiO1xuICBkaXNwbGF5OiBibG9jaztcbiAgYm9yZGVyOiA1cHggc29saWQgIzdjMjIzNTtcbn1cblxuLnRydWUtc3RvcnktcmliYm9uIHNwYW4ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMjQ1cHg7XG4gIHBhZGRpbmc6IDhweCAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWI0YzVlO1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBsaW5lLWhlaWdodDogMThweDtcbiAgbGV0dGVyLXNwYWNpbmc6IDEuMnB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi8qIHRvcCBsZWZ0ICovXG4udHJ1ZS1zdG9yeS1yaWJib24ucmliYm9uLXRvcC1sZWZ0IHtcbiAgdG9wOiAtMTBweDtcbiAgbGVmdDogLTEwcHg7XG59XG5cbi50cnVlLXN0b3J5LXJpYmJvbi5yaWJib24tdG9wLWxlZnQ6OmJlZm9yZSxcbi50cnVlLXN0b3J5LXJpYmJvbi5yaWJib24tdG9wLWxlZnQ6OmFmdGVyIHtcbiAgYm9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLnRydWUtc3RvcnktcmliYm9uLnJpYmJvbi10b3AtbGVmdDo6YmVmb3JlIHtcbiAgdG9wOiAwO1xuICByaWdodDogMjZweDtcbn1cblxuLnRydWUtc3RvcnktcmliYm9uLnJpYmJvbi10b3AtbGVmdDo6YWZ0ZXIge1xuICBib3R0b206IDI2cHg7XG4gIGxlZnQ6IDA7XG59XG5cbi50cnVlLXN0b3J5LXJpYmJvbi5yaWJib24tdG9wLWxlZnQgc3BhbiB7XG4gIHJpZ2h0OiAtMjVweDtcbiAgdG9wOiAzMHB4O1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xufVxuXG4vKiByaWJib24gZW5kICovXG4uYWJvdXQtc3RvcnktY2FyZCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGJhY2tncm91bmQ6ICMxMDFhMWI7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4uYWJvdXQtc3Rvcnktd3JhcCB7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG5cbi5hYm91dC1zdG9yeS1pbWFnZSB7XG4gIGZsZXg6IDAgMCA0NSU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmFib3V0LXN0b3J5LWltYWdlIGltZyB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG9iamVjdC1maXQ6IGNvdmVyO1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLyogLmFib3V0LXN0b3J5LWltYWdlOjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogNDBweDtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCB0cmFuc3BhcmVudCwgIzFlMWUyNCk7XG59ICovXG5cbi5hYm91dC1zdG9yeS1jb250ZW50IHtcbiAgZmxleDogMTtcbiAgcGFkZGluZzogNDBweCAzMHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLmFib3V0LXN0b3J5LXRpdGxlIHtcbiAgY29sb3I6ICNmZmQwZDg7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGV0dGVyLXNwYWNpbmc6IDFweDtcbiAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuLmFib3V0LXN0b3J5LXRleHQge1xuICBjb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUsIC44KTtcbiAgZm9udC1zaXplOiAxNXB4O1xuICBsaW5lLWhlaWdodDogMS44O1xuICBmb250LXdlaWdodDogMzAwO1xufVxuXG4uc3RvcnktcXVvdGUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IDE2cHg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xufVxuXG4ucXVvdGUtaWNvbiB7XG4gIGZvbnQtc2l6ZTogNDhweDtcbiAgY29sb3I6ICNmZmQwZDg7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBtYXJnaW4tdG9wOiAtMTBweDtcbiAgb3BhY2l0eTogLjU7XG59XG5cbi5xdW90ZS1ib2R5IHtcbiAgY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1LCAuOCk7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgbWFyZ2luLWJvdHRvbTogMTJweDtcbn1cblxuLnF1b3RlLWF1dGhvciB7XG4gIGNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSwgLjYpO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG59XG5cbi5idG4tY3RhOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpO1xuICBib3gtc2hhZG93OiAwIDRweCAxNXB4IHJnYig1NSwgNTUsIDY2LCAuMSk7XG59XG5cbi8qIE1vYmlsZSBOYXZpZ2F0aW9uIFRvZ2dsZSAqL1xuLm1haW4taGVhZGVyIC5tb2JpbGUtbWVudS1idG4ge1xuICBkaXNwbGF5OiBub25lO1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIHdpZHRoOiAyNHB4O1xuICBoZWlnaHQ6IDE4cHg7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgei1pbmRleDogMTAwMTtcbn1cblxuLm1haW4taGVhZGVyIC5tb2JpbGUtbWVudS1idG4gLmJhciB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDJweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uLXNtb290aCk7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAubWFpbi1oZWFkZXIgLm1vYmlsZS1tZW51LWJ0biB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgfVxuXG4gIC5tYWluLWhlYWRlciAubmF2LW1lbnUge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IC0xMDAlO1xuICAgIHdpZHRoOiA4MCU7XG4gICAgaGVpZ2h0OiAxMDB2aDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1wcmltYXJ5KTtcbiAgICBib3gtc2hhZG93OiAtMTBweCAwIDMwcHggcmdiKDAsIDAsIDAsIC4wNSk7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uLXNtb290aCk7XG4gICAgcGFkZGluZzogNDBweDtcbiAgICB6LWluZGV4OiA5OTk7XG4gIH1cblxuICAubWFpbi1oZWFkZXIgLm5hdi1tZW51LmFjdGl2ZSB7XG4gICAgcmlnaHQ6IDA7XG4gIH1cblxuICAubWFpbi1oZWFkZXIgLm5hdi1saXN0IHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogMzBweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIC5tYWluLWhlYWRlciAubWVnYS1tZW51IHtcbiAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgcGFkZGluZzogMTBweCAwIDAgMTVweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLm1haW4taGVhZGVyIC5uYXYtaXRlbS5hY3RpdmUgLm1lZ2EtbWVudSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbn1cblxuLnBvZGNhc3QtYXZhdGFyIGltZyB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG9iamVjdC1maXQ6IGNvdmVyO1xufVxuXG4uYm94LWF2YXRhciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICByaWdodDogLTVweDtcbiAgd2lkdGg6IDI0cHg7XG4gIGhlaWdodDogMjRweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBib3JkZXI6IDJweCBzb2xpZCAjZmZmO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB6LWluZGV4OiAzO1xufVxuXG4uYm94LWF2YXRhciBpbWcge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvYmplY3QtZml0OiBjb3Zlcjtcbn1cblxuLm1lZ2EtbWVudSAuc3RvcnktaW1hZ2Uge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhdXRvO1xuICBkaXNwbGF5OiBibG9jaztcbiAgdHJhbnNpdGlvbjogZmlsdGVyIC4zNXMgZWFzZTtcbn1cblxuLm1lZ2EtbWVudSAuc3RvcnktdmlkZW8ge1xuICBhc3BlY3QtcmF0aW86IDcyMy8zMjk7XG4gIG9iamVjdC1maXQ6IGNvdmVyO1xuICBtaW4taGVpZ2h0OiAzMjlweDtcbn1cblxuLyogc3RvcnktbGluay13cmFwOiBzdGFjayBsaW5rIG92ZXIgaW1hZ2UgKi9cblxuLyogLm1lZ2EtbWVudSAuc3RvcnktbGluay13cmFwIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG59ICovXG5cbi8qIGxpbmsgaGlkZGVuIGJ5IGRlZmF1bHQsIGNlbnRlcmVkIHRvIGl0cyBvd24gc2l6ZSAqL1xuLm1lZ2EtbWVudSAuc3RvcnktbGluayB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDVweDtcbiAgcGFkZGluZzogOHB4IDFweDtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246XG4gICAgb3BhY2l0eSAuM3MgZWFzZSxcbiAgICBiYWNrZ3JvdW5kIC4yNXMgZWFzZTtcbiAgei1pbmRleDogMjtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMThweDtcbiAgbGV0dGVyLXNwYWNpbmc6IC4yNHB4O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjb2xvcjogI2ZmZjtcbn1cblxuLm1lZ2EtbWVudSAuc3RvcnktbGluayBpbWcge1xuICB3aWR0aDogMTRweDtcbiAgaGVpZ2h0OiAxNHB4O1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLyogb24gY29udGFpbmVyIGhvdmVyOiBibHVyIG9ubHkgdGhlIGltYWdlLCByZXZlYWwgdGhlIGxpbmsgKi9cbi5tZWdhLW1lbnUgLnN0b3J5LWltYWdlLWNvbnRhaW5lcjpob3ZlciAuc3RvcnktaW1hZ2UsXG4ubWVnYS1tZW51IC5hYm91dC1zdG9yeS1jYXJkOmhvdmVyIC5hYm91dC1zdG9yeS13cmFwIHtcbiAgZmlsdGVyOiBibHVyKDNweCkgYnJpZ2h0bmVzcyguNik7XG59XG5cbi5tZWdhLW1lbnUgLnN0b3J5LWltYWdlLWNvbnRhaW5lcjpob3ZlciAuc3RvcnktbGluayxcbi5tZWdhLW1lbnUgLmFib3V0LXN0b3J5LWNhcmQ6aG92ZXIgLnN0b3J5LWxpbmsge1xuICBvcGFjaXR5OiAxO1xufVxuXG4vKiBvbiBsaW5rIGhvdmVyOiBhZGQgYSBzZW1pLXRyYW5zcGFyZW50IGJhY2tkcm9wICovXG4ubWVnYS1tZW51IC5zdG9yeS1saW5rOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiKDI1NSwgMjU1LCAyNTUsIC4zNSk7XG59XG5cbi8qIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgSW5ub3ZhdGlvbiBtZWdhLW1lbnUgb25seSDigJQgc3RvcnkgY2FyZCBzaG93cyBhblxuICAgYWx3YXlzLXZpc2libGUgaGVhZGluZyArIFwiVmlldyBUcnVlIFN0b3J5XCIgbGlua1xuICAgd2l0aCBhbiBhbmltYXRlZCBhcnJvdyBvbiBob3ZlciAobWF0Y2hlcyB0aGVcbiAgIHNjcm9sbC10YWJzIHN0b3J5IGxpbmspLiBTY29wZWQgdmlhIC0taW5ub3ZhdGlvblxuICAgc28gdGhlIG90aGVyIG1lZ2EtbWVudSB0YWJzIHN0YXkgdW50b3VjaGVkLlxuICAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovXG4ubWVnYS1tZW51IC5zdG9yeS1pbWFnZS1jb250YWluZXItLWlubm92YXRpb24gLnN0b3J5LWxpbmstd3JhcCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm9yZGVyLXJhZGl1czogMDtcbn1cblxuLm1lZ2EtbWVudSAuc3RvcnktaW1hZ2UtY29udGFpbmVyLS1pbm5vdmF0aW9uIC5zdG9yeS12aWRlbyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKiBmbGF0IHNjcmltIGtlZXBzIHRoZSBvdmVybGFpZCBsaWdodCB0ZXh0IGxlZ2libGUgb24gdGhlIHZpZGVvICovXG5cbi5tZWdhLW1lbnUgLnN0b3J5LWltYWdlLWNvbnRhaW5lci0taW5ub3ZhdGlvbiAuc3RvcnktbGluay13cmFwOjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IDA7XG4gIHotaW5kZXg6IDE7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBiYWNrZ3JvdW5kOiByZ2IoMCwgMCwgMCwgLjIpO1xufVxuXG4vKiBrZWVwIHRoZSByaWJib24gYWJvdmUgdGhlIHNjcmltIHNvIGl0IGlzbid0IGRpbW1lZCAqL1xuLm1lZ2EtbWVudSAuc3RvcnktaW1hZ2UtY29udGFpbmVyLS1pbm5vdmF0aW9uIC50cnVlLXN0b3J5LXJpYmJvbiB7XG4gIHotaW5kZXg6IDM7XG59XG5cbi5tZWdhLW1lbnUgLnN0b3J5LWltYWdlLWNvbnRhaW5lci0taW5ub3ZhdGlvbiAuc3RvcnktaW1hZ2UtY29udGFpbmVyX19jYXB0aW9uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldDogYXV0byAwIDA7XG4gIHotaW5kZXg6IDI7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogMjBweDtcbiAgcGFkZGluZzogMzJweDtcbn1cblxuLm1lZ2EtbWVudSAuc3RvcnktaW1hZ2UtY29udGFpbmVyLS1pbm5vdmF0aW9uIC5zdG9yeS1pbWFnZS1jb250YWluZXJfX2hlYWRpbmcge1xuICBtYXJnaW46IDA7XG4gIGNvbG9yOiAjZmZmO1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1oZWFkaW5nKTtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBmb250LXdlaWdodDogNjAwO1xuICBsaW5lLWhlaWdodDogMS42NjtcbiAgbGV0dGVyLXNwYWNpbmc6IDA7XG59XG5cbi5tZWdhLW1lbnUgLnN0b3J5LWltYWdlLWNvbnRhaW5lci0taW5ub3ZhdGlvbiAuc3RvcnktaW1hZ2UtY29udGFpbmVyX19zdG9yeS1saW5rIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMTJweDtcbiAgd2lkdGg6IGZpdC1jb250ZW50O1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBsaW5lLWhlaWdodDogMS42MjU7XG4gIGxldHRlci1zcGFjaW5nOiAwO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi5tZWdhLW1lbnUgLnN0b3J5LWltYWdlLWNvbnRhaW5lci0taW5ub3ZhdGlvbiAuc3RvcnktaW1hZ2UtY29udGFpbmVyX19zdG9yeS1saW5rLXRleHQge1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgdGV4dC11bmRlcmxpbmUtb2Zmc2V0OiA1cHg7XG4gIHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IDFweDtcbn1cblxuLm1lZ2EtbWVudSAuc3RvcnktaW1hZ2UtY29udGFpbmVyLS1pbm5vdmF0aW9uIC5zdG9yeS1pbWFnZS1jb250YWluZXJfX3N0b3J5LWxpbmstYXJyb3cge1xuICBmbGV4OiBub25lO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAxN3B4O1xuICBmaWxsOiBjdXJyZW50Y29sb3I7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuM3MgY3ViaWMtYmV6aWVyKC4yNSwgLjQ2LCAuNDUsIC45NCk7XG59XG5cbi5tZWdhLW1lbnVcbi5zdG9yeS1pbWFnZS1jb250YWluZXItLWlubm92YXRpb25cbi5zdG9yeS1pbWFnZS1jb250YWluZXJfX3N0b3J5LWxpbms6aG92ZXJcbi5zdG9yeS1pbWFnZS1jb250YWluZXJfX3N0b3J5LWxpbmstYXJyb3cge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDRweCwgMCwgMCk7XG59XG5cbi5tZWdhLW1lbnVcbi5zdG9yeS1pbWFnZS1jb250YWluZXItLWlubm92YXRpb25cbi5zdG9yeS1pbWFnZS1jb250YWluZXJfX3N0b3J5LWxpbms6Zm9jdXMtdmlzaWJsZSB7XG4gIG91dGxpbmU6IDJweCBzb2xpZCAjZmZmO1xuICBvdXRsaW5lLW9mZnNldDogNHB4O1xufVxuXG4vKiBJbm5vdmF0aW9uIGNhcmQgb3B0cyBvdXQgb2YgdGhlIHNoYXJlZCBob3Zlci1ibHVyIHRyZWF0bWVudCAqL1xuLm1lZ2EtbWVudSAuc3RvcnktaW1hZ2UtY29udGFpbmVyLS1pbm5vdmF0aW9uOmhvdmVyIC5zdG9yeS1pbWFnZSB7XG4gIGZpbHRlcjogbm9uZTtcbn1cblxuLyogTW9iaWxlIE5hdmlnYXRpb24gVG9nZ2xlICovXG4ubW9iaWxlLW1lbnUtYnRuIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICB3aWR0aDogMjRweDtcbiAgaGVpZ2h0OiAxOHB4O1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHotaW5kZXg6IDEwMDE7XG59XG5cbi5tb2JpbGUtbWVudS1idG4gLmJhciB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDJweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICB0cmFuc2l0aW9uOiB2YXIoLS10cmFuc2l0aW9uLXNtb290aCk7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAubW9iaWxlLW1lbnUtYnRuIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG5cbiAgLm5hdi1tZW51IHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAtMTAwJTtcbiAgICB3aWR0aDogODAlO1xuICAgIGhlaWdodDogMTAwdmg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tYmctcHJpbWFyeSk7XG4gICAgYm94LXNoYWRvdzogLTEwcHggMCAzMHB4IHJnYigwLCAwLCAwLCAuMDUpO1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tdHJhbnNpdGlvbi1zbW9vdGgpO1xuICAgIHBhZGRpbmc6IDQwcHg7XG4gICAgei1pbmRleDogOTk5O1xuICB9XG5cbiAgLm5hdi1tZW51LmFjdGl2ZSB7XG4gICAgcmlnaHQ6IDA7XG4gIH1cblxuICAubmF2LWxpc3Qge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAzMHB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgLm1lZ2EtbWVudSB7XG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgb3BhY2l0eTogMTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIHBhZGRpbmc6IDEwcHggMCAwIDE1cHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC5uYXYtaXRlbS5hY3RpdmUgLm1lZ2EtbWVudSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICAuYnRuLWN0YSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICAvKiBIYW1idXJndWVyIGFuaW1hdGlvbnMgKi9cbiAgLm1vYmlsZS1tZW51LWJ0bi5hY3RpdmUgLmJhcjpudGgtY2hpbGQoMSkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg4cHgpIHJvdGF0ZSg0NWRlZyk7XG4gIH1cblxuICAubW9iaWxlLW1lbnUtYnRuLmFjdGl2ZSAuYmFyOm50aC1jaGlsZCgyKSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuXG4gIC5tb2JpbGUtbWVudS1idG4uYWN0aXZlIC5iYXI6bnRoLWNoaWxkKDMpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLThweCkgcm90YXRlKC00NWRlZyk7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBBc2sgRXhwb25hIEZ1bGxzY3JlZW4gRHJvcGRvd25cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmFzay1leHBvbmEtZnVsbHNjcmVlbi1kcm9wZG93biB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwdnc7XG4gIGhlaWdodDogMTAwZHZoO1xuICBiYWNrZ3JvdW5kOiAjMzczNzQyIHVybChcIi4uLy4uLy4uL3N0YXRpYy9hc3NldHMvaW1hZ2VzL2xhdGVzdC9ncmFpbi5wbmdcIikgY2VudGVyIGNlbnRlcjtcbiAgei1pbmRleDogMjAwMDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBwYWRkaW5nOiA0MHB4IDA7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTtcbiAgdHJhbnNpdGlvbjpcbiAgICBvcGFjaXR5IC40cyBlYXNlLFxuICAgIHZpc2liaWxpdHkgLjRzIGVhc2UsXG4gICAgdHJhbnNmb3JtIC41cyBjdWJpYy1iZXppZXIoLjE2LCAxLCAuMywgMSk7XG59XG5cbi5hc2stZXhwb25hLWZ1bGxzY3JlZW4tZHJvcGRvd24ub3BlbiB7XG4gIG9wYWNpdHk6IDE7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgYm9yZGVyLWJvdHRvbTogMTBweCBzb2xpZDtcbiAgYm9yZGVyLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICNmZmY5ZWQgMCUsICNmZmY5ZWQgOTEuMTUlKSAxO1xufVxuXG4vKiBMb2NrIHBhZ2Ugc2Nyb2xsIHdoaWxlIHRoZSBFeHBvbmEgZHJvcGRvd24gaXMgb3BlbiDigJQgcHVyZSBDU1MsIG5vIEpTIGhvb2sgKi9cbmJvZHk6aGFzKC5hc2stZXhwb25hLWZ1bGxzY3JlZW4tZHJvcGRvd24ub3Blbikge1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG5ib2R5LmhvbWU6aGFzKC5hc2stZXhwb25hLWZ1bGxzY3JlZW4tZHJvcGRvd24ub3Blbikge1xuICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG59XG5cbi5leHBvbmEtZHJvcGRvd24taGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4vKiBNb2JpbGUgY2xvc2UgYXJyb3cg4oCUIGhpZGRlbiBvbiBkZXNrdG9wICovXG4uZXhwb25hLWhlYWRlci1jbG9zZS1idG4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4uZXhwb25hLWhlYWRlci1jbG9zZS1idG4gLmliLWljb24ge1xuICBjb2xvcjogI2ZmZjtcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbn1cblxuLmV4cG9uYS1kcm9wZG93bi1oZWFkZXIgLmRyb3Bkb3duLWxvZ28ge1xuICBoZWlnaHQ6IDI0cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmFzay1leHBvbmEtZnVsbHNjcmVlbi1kcm9wZG93biAuZXhwb25hLWRyb3Bkb3duLWJvZHkge1xuICBmbGV4OiAxO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXgtd2lkdGg6IDkwNHB4O1xuICBtYXJnaW46IDAgYXV0bztcbn1cblxuLmFzay1leHBvbmEtZnVsbHNjcmVlbi1kcm9wZG93biAuZXhwb25hLWRyb3Bkb3duLXRpdGxlIHtcbiAgY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1LCAuNTUpO1xuICBmb250LXNpemU6IDIwcHg7XG4gIGxpbmUtaGVpZ2h0OiAzNHB4O1xuICBmb250LXdlaWdodDogMzAwO1xuICBsZXR0ZXItc3BhY2luZzogMDtcbiAgbWFyZ2luLWJvdHRvbTogMjRweDtcbiAgdHJhbnNpdGlvbjogYWxsIC4zcyBlYXNlO1xufVxuXG4uYXNrLWV4cG9uYS1mdWxsc2NyZWVuLWRyb3Bkb3duIC5leHBvbmEtaW5wdXQtYXJlYSB7XG4gIG1hcmdpbi1ib3R0b206IDUwcHg7XG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5hc2stZXhwb25hLWZ1bGxzY3JlZW4tZHJvcGRvd24gLmV4cG9uYS1pbnB1dC1jYXJldCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiA1MCU7XG4gIHotaW5kZXg6IDE7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBsaW5lLWhlaWdodDogMjhweDtcbiAgb3BhY2l0eTogLjg7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgYW5pbWF0aW9uOiBibGluayAxcyBzdGVwLWVuZCBpbmZpbml0ZTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5hc2stZXhwb25hLWZ1bGxzY3JlZW4tZHJvcGRvd24gLmV4cG9uYS1pbnB1dC1hcmVhLmhhcy12YWx1ZSAuZXhwb25hLWlucHV0LWNhcmV0IHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLmFzay1leHBvbmEtZnVsbHNjcmVlbi1kcm9wZG93biAuZXhwb25hLW1haW4taW5wdXQge1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiBub25lO1xuICBjb2xvcjogI2ZmZjtcbiAgY2FyZXQtY29sb3I6ICNmZmY7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB3aWR0aDogMTAwJTtcbiAgb3V0bGluZTogbm9uZTtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtcHJpbWFyeSwgXCJMZXhlbmRcIiwgc2Fucy1zZXJpZik7XG4gIHJlc2l6ZTogbm9uZTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgaGVpZ2h0OiAyOHB4OyAvKiBJbml0aWFsIGhlaWdodCBmb3Igc2luZ2xlIGxpbmUgKi9cbiAgbWF4LWhlaWdodDogMTIwcHg7XG4gIHBhZGRpbmctcmlnaHQ6IDEycHg7XG59XG5cbi5hc2stZXhwb25hLWZ1bGxzY3JlZW4tZHJvcGRvd24gLmV4cG9uYS1pbnB1dC1hcmVhOm5vdCguaGFzLXZhbHVlKSAuZXhwb25hLW1haW4taW5wdXQge1xuICBjYXJldC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi8qIGlPUyBTYWZhcmkgY2FuIHNraXAgcGFpbnRpbmcgYW4gYW5pbWF0ZWQgdGV4dGFyZWEgcGxhY2Vob2xkZXIsIHNvIHRoZVxuICB2aXNpYmxlIGZha2UgY2FyZXQgaXMgYSByZWFsIC5leHBvbmEtaW5wdXQtY2FyZXQgZWxlbWVudCBpbnN0ZWFkLiAqL1xuLmFzay1leHBvbmEtZnVsbHNjcmVlbi1kcm9wZG93biAuZXhwb25hLW1haW4taW5wdXQ6OnBsYWNlaG9sZGVyIHtcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xuICBvcGFjaXR5OiAwO1xufVxuXG4vKiBLZWVwIHRoZSByZWFsIHBsYWNlaG9sZGVyIGhpZGRlbjsgdGhlIHdyYXBwZXIgY2FyZXQgYWJvdmUgcmVtYWlucyB2aXNpYmxlXG4gIHdoaWxlIHRoZSBmb2N1c2VkIGZpZWxkIGlzIGVtcHR5LCB3aGljaCBpcyB0aGUgaU9TIFNhZmFyaSBwYXRoLiAqL1xuLmFzay1leHBvbmEtZnVsbHNjcmVlbi1kcm9wZG93biAuZXhwb25hLW1haW4taW5wdXQ6Zm9jdXM6OnBsYWNlaG9sZGVyIHtcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG5Aa2V5ZnJhbWVzIGJsaW5rIHtcbiAgNTAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG59XG5cbi5wcmVzcy1yZXR1cm4tY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGdhcDogMTJweDtcbiAgbWFyZ2luOiAyNHB4IGF1dG8gMCAhaW1wb3J0YW50O1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4zcyBlYXNlO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIG91dGxpbmU6IG5vbmU7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi5yZXR1cm4ta2V5LWljb24ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgd2lkdGg6IDMycHg7XG4gIGhlaWdodDogMzJweDtcbiAgYmFja2dyb3VuZDogIzM3Mzc0MjtcbiAgYm9yZGVyOiAxcHggc29saWQgIzY3Njc3NTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgY29sb3I6ICNmZmY7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIC4ycyBlYXNlO1xuICBib3gtc2hhZG93OiAwIDAgMnB4IDAgIzJmMmYzOTMzO1xufVxuXG4ucHJlc3MtcmV0dXJuLXRleHQge1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogMzAwO1xufVxuXG4vKiBUeXBpbmcgQWN0aXZlIFN0YXRlICovXG5cbi8qIC5leHBvbmEtZHJvcGRvd24tYm9keS50eXBpbmctYWN0aXZlIC5leHBvbmEtZHJvcGRvd24tdGl0bGUge1xuICBmb250LXNpemU6IDEycHg7XG4gIG9wYWNpdHk6IDAuNztcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbn0gKi9cblxuLmV4cG9uYS1kcm9wZG93bi1ib2R5LnR5cGluZy1hY3RpdmUgLnByZXNzLXJldHVybi1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG4gIG9wYWNpdHk6IDE7XG59XG5cbi5hc2stZXhwb25hLWZ1bGxzY3JlZW4tZHJvcGRvd24gLmV4cG9uYS1zdWdnZXN0aW9ucyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgZ2FwOiAxNnB4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLmFzay1leHBvbmEtZnVsbHNjcmVlbi1kcm9wZG93biAuc3VnZ2VzdGlvbi1jaGlwIHtcbiAgYmFja2dyb3VuZDogIzJmMmYzOTtcbiAgYm9yZGVyOiAwO1xuICBjb2xvcjogI2ZmZjtcbiAgcGFkZGluZzogMTJweCAxNnB4O1xuICBmb250LXNpemU6IDE2cHg7XG4gIGxpbmUtaGVpZ2h0OiAyNnB4O1xuICBmb250LXdlaWdodDogMzAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJveC1zaGFkb3c6IDAgMCAycHggMCAjMmYyZjM5MzM7XG4gIHRyYW5zaXRpb246IGFsbCAuM3MgZWFzZTtcbn1cblxuLmFzay1leHBvbmEtZnVsbHNjcmVlbi1kcm9wZG93biAuc3VnZ2VzdGlvbi1jaGlwOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogIzI2MjYyZTtcbiAgY29sb3I6ICNmZmY7XG59XG5cbi5hc2stZXhwb25hLWZ1bGxzY3JlZW4tZHJvcGRvd24gLmV4cG9uYS1kcm9wZG93bi1mb290ZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnBvd2VyZWQtYnkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICBjb2xvcjogIzdiN2I4NDtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi8qIFRoZSB2aXNpYmxlIGxhYmVsIOKAlCBzaXRzIGFib3ZlIHRoZSBwb3B1cCBib3ggc28gaXQgcmVhZHMgYXMgdGhlIGJveCdzXG4gICBvd24gZm9vdGVyIGxpbmUgKHNhbWUgbWFya3VwICsgbG9nbywgbm8gZHVwbGljYXRpb24pICovXG4ucG93ZXJlZC1ieV9fbGFiZWwge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDI7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBnYXA6IDZweDtcbn1cblxuLyogSG92ZXIgcG9wdXAg4oCUIGRlc2t0b3Agb25seS4gQm90dG9tIGVkZ2Ugc2l0cyB+MTBweCBhYm92ZSB0aGUgbW9kYWwncyAxMHB4XG4gICBncmFkaWVudCBib3JkZXI7IHRoZSBib3ggZXhwYW5kcyBmcm9tIGJvdHRvbSB0byB0b3Agb24gaG92ZXIgYW5kIHRoZSBsYWJlbFxuICAgc2hvd3MgdGhyb3VnaCBhdCB0aGUgYm94J3MgYm90dG9tIChzYW1lIG1hcmt1cCArIGxvZ28sIG5vIGR1cGxpY2F0aW9uKS4gKi9cbi5wb3dlcmVkLWJ5X19wb3B1cCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogNTAlO1xuICBib3R0b206IC0zMHB4O1xuICB6LWluZGV4OiAxO1xuICB3aWR0aDogbWF4LWNvbnRlbnQ7XG4gIG1heC13aWR0aDogMzIwcHg7XG4gIHBhZGRpbmc6IDIwcHggMjBweCA2MnB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJhY2tncm91bmQ6ICM0NDQ0NGYgdXJsKFwiLi4vLi4vLi4vc3RhdGljL2Fzc2V0cy9pbWFnZXMvbGF0ZXN0L2dyYWluLnBuZ1wiKSBjZW50ZXIgY2VudGVyO1xuICBib3gtc2hhZG93OiAwIDAgMnB4IDAgcmdiYSg0NywgNDcsIDU3LCAuMik7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgY2xpcC1wYXRoOiBpbnNldCgxMDAlIDAgMCAwKTtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgdHJhbnNpdGlvbjpcbiAgICBjbGlwLXBhdGggLjVzIGN1YmljLWJlemllciguMTYsIDEsIC4zLCAxKSxcbiAgICBvcGFjaXR5IC4zcyBlYXNlLFxuICAgIHZpc2liaWxpdHkgMHMgbGluZWFyIC41cztcbn1cblxuLnBvd2VyZWQtYnk6aG92ZXIgLnBvd2VyZWQtYnlfX3BvcHVwLFxuLnBvd2VyZWQtYnk6Zm9jdXMtdmlzaWJsZSAucG93ZXJlZC1ieV9fcG9wdXAge1xuICBvcGFjaXR5OiAxO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICBjbGlwLXBhdGg6IGluc2V0KDAgMCAwIDApO1xuICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG59XG5cbi5wb3dlcmVkLWJ5X19wb3B1cC10ZXh0IHtcbiAgbWFyZ2luOiAwO1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC1mYW1pbHk6IFwiTGV4ZW5kXCIsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDI2cHg7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIGxldHRlci1zcGFjaW5nOiAwO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5wb3dlcmVkLWJ5IC5wb3dlcmVkLWJ5X19wb3B1cC10ZXh0IHN0cm9uZyB7XG4gIGNvbG9yOiAjZmZkMGQ4O1xuICBmb250LXdlaWdodDogNDAwO1xufVxuXG4vKiBQb3B1cCBpcyBhIGRlc2t0b3Atb25seSBob3ZlciBhZmZvcmRhbmNlIOKAlCBoaWRkZW4gb24gdGFibGV0IGFuZCBiZWxvdyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAucG93ZXJlZC1ieV9fcG9wdXAge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbi5leHBvbmEtc21hbGwtbG9nbyB7XG4gIGhlaWdodDogMTJweDtcbn1cblxuLnBvd2VyZWQtYnkgc3Ryb25nIHtcbiAgY29sb3I6ICNmZmY7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi8qIFRyYXBlem9pZCB0YWIgd2l0aCBzbW9vdGggcm91bmRlZCB0b3AgY29ybmVycyBkcmF3biB2aWEgcGF0aCgpIOKAlFxuICAgZml4ZWQgZGltZW5zaW9ucyBhcmUgcmVxdWlyZWQgYmVjYXVzZSBwYXRoKCkgY29vcmRpbmF0ZXMgYXJlIGFic29sdXRlLlxuICAgT3V0ZXIgYm94IDE4NcOXNTIgY2FycmllcyB0aGUgZ3JhZGllbnQgYm9yZGVyLCBpbm5lciBidXR0b24gMTgxw5c1MFxuICAgaXMgdGhlIGRhcmsgZmlsbCwgbGVhdmluZyBhIDJweCBncmFkaWVudCBlZGdlIG9uIHRvcCBhbmQgYm90aCBzbGFudHMuXG4gICBUaGUgZ3JhZGllbnQgb25seSBydW5zIDQycHggZG93biDigJQgdGhlIGJvdHRvbSAxMHB4IG9mIHRoZSBlZGdlIHN0cmlwXG4gICBpcyBmbGF0IGRhcmsgc28gdGhlIHRhYiBtZXJnZXMgaW50byB0aGUgc2VjdGlvbiBiZWxvdy4gKi9cbi5pbmZvYmVhbnMtdXAtYnRuLXdyYXBwZXIge1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLWJvdHRvbTogLTUwcHg7XG4gIHdpZHRoOiAxODVweDtcbiAgaGVpZ2h0OiA1MnB4O1xuICBwYWRkaW5nOiAycHggMnB4IDA7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGJhY2tncm91bmQ6XG4gICAgbGluZWFyLWdyYWRpZW50KDkwZGVnLCAjMjg0Y2JhIDYlLCAjN2QzYmEyIDQ4JSwgI2VhMWIzZCA5NCUpXG4gICAgdG9wIC8gMTAwJSA0MnB4IG5vLXJlcGVhdCxcbiAgICAjMzczNzQyO1xuXG4gIC8qIFNpZGVzIGF0IDY3wrAgZnJvbSBob3Jpem9udGFsIOKGkiAyMnB4IGluc2V0IHBlciBzaWRlLCA4cHggdG9wIHJhZGl1cyAqL1xuICBjbGlwLXBhdGg6IHBhdGgoXCJNIDAgNTIgTCAxOC45IDcuNCBRIDIyIDAgMzAgMCBMIDE1NSAwIFEgMTYzIDAgMTY2LjEgNy40IEwgMTg1IDUyIFpcIik7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDEyMHB4O1xuICBib3R0b206IDA7XG59XG5cbi5pbmZvYmVhbnMtdXAtYnRuIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGJhY2tncm91bmQ6ICMzNzM3NDI7XG4gIHdpZHRoOiAxODFweDtcbiAgaGVpZ2h0OiA1MHB4O1xuICBjbGlwLXBhdGg6IHBhdGgoXCJNIDAgNTAgTCAxOC42IDYuNCBRIDIxLjMgMCAyOC4zIDAgTCAxNTIuNyAwIFEgMTU5LjcgMCAxNjIuNCA2LjQgTCAxODEgNTAgWlwiKTtcbiAgYm9yZGVyOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgLjNzIGVhc2U7XG59XG5cbi5pbmZvYmVhbnMtdXAtYnRuIC5idG4tdGV4dC1jb250ZW50IHtcbiAgY29sb3I6ICNmZmY5ZWQ7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IC43cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMTBweDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC03cHgpO1xufVxuXG4uaW5mb2JlYW5zLXVwLWJ0bjpob3ZlciB7XG4gIGJhY2tncm91bmQ6ICMzNzM3NDI7XG59XG5cbi5pbmZvYmVhbnMtdXAtYnRuOmhvdmVyIC5idG4tdGV4dC1jb250ZW50IHtcbiAgY29sb3I6ICNmZmY7XG59XG5cbi5pbmZvYmVhbnMtdXAtYnRuIC5idG4tdGV4dC1jb250ZW50IC5pYi1pY29uIHtcbiAgY29sb3I6ICNmZmY7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAuYXNrLWV4cG9uYS1mdWxsc2NyZWVuLWRyb3Bkb3duLm9wZW4ge1xuICAgIGJvcmRlci1ib3R0b206IDA7XG4gIH1cbiAgLnBvd2VyZWQtYnkge1xuICAgIG1hcmdpbi1ib3R0b206IC0yOHB4O1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIH1cblxuICAuYXNrLWV4cG9uYS1mdWxsc2NyZWVuLWRyb3Bkb3duIC5leHBvbmEtZHJvcGRvd24tYm9keSB7XG4gICAgcGFkZGluZzogMCAyNHB4O1xuICAgIG1hcmdpbjogMDtcbiAgfVxuXG4gIC8qIFBlZWsgY2Fyb3VzZWwg4oCUIGFjdGl2ZSBjaGlwIHN0YXJ0cyBhdCBib2R5J3MgMjRweCBwYWRkaW5nLFxuICAgICBuZXh0IGNoaXAgcGVla3MgYWxsIHRoZSB3YXkgdG8gdGhlIHNjcmVlbidzIHJpZ2h0IGVkZ2UgKi9cbiAgLmFzay1leHBvbmEtZnVsbHNjcmVlbi1kcm9wZG93biAuZXhwb25hLXN1Z2dlc3Rpb25zIHtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgIHNjcm9sbC1zbmFwLXR5cGU6IHggbWFuZGF0b3J5O1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgICBnYXA6IDEycHg7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIHNjcm9sbGJhci13aWR0aDogbm9uZTtcblxuICAgIC8qIGJyZWFrIG91dCBvZiBib2R5J3MgcmlnaHQgcGFkZGluZyBzbyB0aGUgcGVlayByZWFjaGVzIHRoZSBzY3JlZW4gZWRnZSAqL1xuICAgIG1hcmdpbi1yaWdodDogLTI0cHg7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSArIDI0cHgpO1xuXG4gICAgLyogc25hcCBvZmZzZXQ6IHdoZW4gc2Nyb2xsZWQsIHByZXZpb3VzIGNoaXAncyB0YWlsIHNob3dzIG9uIHRoZSBsZWZ0ICovXG4gICAgc2Nyb2xsLXBhZGRpbmctbGVmdDogMTJweDtcblxuICAgIC8qIFN0b3AgYXQgdGhpcyByb3cncyBvd24gZW5kcyBpbnN0ZWFkIG9mIGhhbmRpbmcgdGhlIGdlc3R1cmUgdG8gdGhlIHBhZ2VcbiAgICAgICB1bmRlcm5lYXRoIOKAlCBzYW1lIGZpeCBhcyAubW9iaWxlLW1lbnUtaW5uZXIgYWJvdmUsIGZvciB0aGUgc2FtZSByZWFzb246XG4gICAgICAgYm9keTpoYXMoLmFzay1leHBvbmEtZnVsbHNjcmVlbi1kcm9wZG93bi5vcGVuKXtvdmVyZmxvdzpoaWRkZW59IGlzIG5vdFxuICAgICAgIGEgZGVwZW5kYWJsZSB0b3VjaCBsb2NrIG9uIGlPUywgYW5kIHdpdGhvdXQgdGhpcywgcmVhbCB0b3VjaCBzY3JvbGxcbiAgICAgICBjaGFpbnMgc3RyYWlnaHQgdGhyb3VnaCB0byB0aGUgKGxvY2tlZCwgc28gaW1tb3ZhYmxlKSBib2R5IGluc3RlYWQgb2ZcbiAgICAgICBzY3JvbGxpbmcgdGhpcyByb3cg4oCUIGl0IHJlYWRzIGFzIHRoZSBjaGlwcyBub3Qgc2Nyb2xsaW5nIGF0IGFsbC4gQVxuICAgICAgIGRlc2t0b3AgbW91c2UvdHJhY2twYWQgdGVzdCBuZXZlciBoaXRzIHRoaXMgcGF0aCwgd2hpY2ggaXMgd2h5IGl0IG9ubHlcbiAgICAgICBzaG93cyB1cCBvbiBhIHJlYWwgZGV2aWNlLiAqL1xuICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW47XG5cbiAgICAvKiBObyB0b3VjaC1hY3Rpb24gbWVhbnMgdGhlIGJyb3dzZXIgaGFzIHRvIGd1ZXNzIHRoZSBnZXN0dXJlJ3MgYXhpcyBvblxuICAgICAgIGV2ZXJ5IHRvdWNoLCBzbyBhIG1vc3RseS12ZXJ0aWNhbCBzY3JvbGwgb2YgdGhlIGRyb3Bkb3duIHRoYXQgaGFwcGVuc1xuICAgICAgIHRvIHN0YXJ0IG9uIHRoaXMgcm93IGNhbiBnZXQgcmVhZCBhcyBhIGhvcml6b250YWwgcGFuIGluc3RlYWQg4oCUIHRoZVxuICAgICAgIGNoaXBzIFwic3RlYWxcIiB0aGUgdG91Y2guIHBhbi14IGRlY2xhcmVzIHRoaXMgcm93J3Mgb3duIGF4aXMgdXAgZnJvbnQ6XG4gICAgICAgaG9yaXpvbnRhbCBnZXN0dXJlcyBzdGF5IGhlcmUsIHZlcnRpY2FsIG9uZXMgYXJlIGhhbmRlZCB0byB0aGVcbiAgICAgICBkcm9wZG93biBib2R5J3Mgb3duIHBhbi15IHNjcm9sbCBpbW1lZGlhdGVseSBpbnN0ZWFkIG9mIGJlaW5nXG4gICAgICAgZGlzYW1iaWd1YXRlZCBwZXItZ2VzdHVyZS4gKi9cbiAgICB0b3VjaC1hY3Rpb246IHBhbi14O1xuICB9XG5cbiAgLmFzay1leHBvbmEtZnVsbHNjcmVlbi1kcm9wZG93biAuZXhwb25hLXN1Z2dlc3Rpb25zOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC5hc2stZXhwb25hLWZ1bGxzY3JlZW4tZHJvcGRvd24gLnN1Z2dlc3Rpb24tY2hpcCB7XG5cbiAgICAvKiBhY3RpdmUgY2hpcCB3aWR0aCA9IHNjcmVlbiAtIGxlZnQgcGFkZGluZyAoMjQpIC0gcmlnaHQgcGVlayAofjQ4KSAqL1xuICAgIGZsZXg6IDAgMCBjYWxjKDEwMHZ3IC0gNzJweCk7XG4gICAgbWluLXdpZHRoOiAwO1xuICAgIHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydDtcbiAgICBiYWNrZ3JvdW5kOiAjMmYyZjM5O1xuICAgIHBhZGRpbmc6IDhweCAxNnB4O1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBsaW5lLWhlaWdodDogMjJweDtcbiAgICBtaW4taGVpZ2h0OiA2MHB4O1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgbWFyZ2luOiAwO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gIH1cblxuICAvKiBIaWRlIHRoZSBib3R0b20gY2xvc2UgYnV0dG9uIG9uIG1vYmlsZSAqL1xuICAuaW5mb2JlYW5zLXVwLWJ0bi13cmFwcGVyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLyogU2hvdyB0aGUgaGVhZGVyIGNsb3NlIGFycm93IG9uIG1vYmlsZSAqL1xuICAuZXhwb25hLWhlYWRlci1jbG9zZS1idG4ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzZweDtcbiAgICBoZWlnaHQ6IDM2cHg7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgIzY3Njc3NSAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDtcbiAgICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBjdXJzb3I6IHBvaW50ZXIgIWltcG9ydGFudDtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIC4ycyBlYXNlO1xuICAgIGJveC1zaGFkb3c6IDAgMCAycHggMCAjMmYyZjM5MzM7XG4gIH1cblxuICAuZXhwb25hLWhlYWRlci1jbG9zZS1idG46aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICM0YTRiNTc7XG4gIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBBc2sgRXhwb25hIENoYXQgSW50ZXJmYWNlXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5leHBvbmEtY2hhdC1pbnRlcmZhY2Uge1xuICBmbGV4OiAxO1xuICBtaW4taGVpZ2h0OiAwOyAvKiBsZXRzIGZsZXggY2hpbGQgc2hyaW5rIGFuZCBzY3JvbGwgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6IDEwMCU7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwYWRkaW5nLWJvdHRvbTogODBweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZy10b3A6IDMwcHg7XG59XG5cbi5leHBvbmEtY2hhdC1pbnRlcmZhY2UgLmNoYXQtY29udGFpbmVyIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgNDBweCAxZnI7XG4gIGFsaWduLWNvbnRlbnQ6IHN0YXJ0O1xuICB3aWR0aDogMTAwJTtcblxuICAvKiBBbHNvIGNhcnJpZXMgLmN1c3RvbS1jb250YWluZXIgKGNzcy9jdXN0b20uY3NzKSwgd2hpY2ggc2V0cyBpdHMgb3duXG4gICAgIG1heC13aWR0aCDigJQgb3ZlcnJpZGUgaXQgc28gdGhlIGJveCBiZWxvdyBjYW4gYWN0dWFsbHkgcmVhY2ggMTAwJS4gKi9cbiAgbWF4LXdpZHRoOiBub25lO1xuXG4gIC8qIEZ1bGwtd2lkdGggc2Nyb2xsIGJveCAobm90IG1heC13aWR0aCArIG1hcmdpbiBhdXRvKSBzbyBpdHMgb3duXG4gICAgIHNjcm9sbGJhciByaWRlcyB0aGUgdHJ1ZSByaWdodCBlZGdlIG9mIHRoZSB2aWV3cG9ydCwgbGlrZSB0aGUgYm9keVxuICAgICBzY3JvbGxiYXIg4oCUIHRoZSAxMDc2cHggY29udGVudCBjb2x1bW4gaXMgY2VudGVyZWQgdmlhIHBhZGRpbmcgaW5zdGVhZC5cbiAgICAgZmxleDogMSArIG1pbi1oZWlnaHQ6IDAgKG5vIG1heC1oZWlnaHQpIGxldHMgaXQgZmlsbCBhbGwgdGhlIHZlcnRpY2FsXG4gICAgIHNwYWNlIC5leHBvbmEtY2hhdC1pbnRlcmZhY2UgaGFzIGF2YWlsYWJsZSwgc28gdGhlIHNjcm9sbGJhciBhbHNvXG4gICAgIHNwYW5zIHRoYXQgZnVsbCBoZWlnaHQgcmF0aGVyIHRoYW4gYSBzaG9ydGVyIGZpeGVkIGJveC4gKi9cbiAgcGFkZGluZzogMCBtYXgoMjBweCwgY2FsYygoMTAwJSAtIDEwNzZweCkgLyAyKSkgMjRweDtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcm93LWdhcDogNjBweDtcbiAgZmxleDogMTtcbiAgbWluLWhlaWdodDogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbiBhdXRvO1xuICBzY3JvbGxiYXItZ3V0dGVyOiBzdGFibGU7XG59XG5cbi8qIEN1c3RvbSBTY3JvbGxiYXIgZm9yIENoYXQgQ29udGFpbmVyICovXG4uZXhwb25hLWNoYXQtaW50ZXJmYWNlIC5jaGF0LWNvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICB3aWR0aDogNnB4O1xufVxuXG4uZXhwb25hLWNoYXQtaW50ZXJmYWNlIC5jaGF0LWNvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbn1cblxuLmV4cG9uYS1jaGF0LWludGVyZmFjZSAuY2hhdC1jb250YWluZXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgYmFja2dyb3VuZDogcmdiKDI1NSwgMjU1LCAyNTUsIC4yKTtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xufVxuXG4uZXhwb25hLWNoYXQtaW50ZXJmYWNlIC5jaGF0LWNvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2IoMjU1LCAyNTUsIDI1NSwgLjQpO1xufVxuXG4vKiBDaGF0IHRpbWVsaW5lIGxpbmUg4oCUIHR3byBwdXJlLUNTUyBsYXllcnMsIG5vIEpTIG1lYXN1cmVtZW50OlxuICAgMS4gQmFzZWxpbmUgb24gdGhlIGNvbnRhaW5lcjogZnVsbCB2aXNpYmxlIGhlaWdodCBmcm9tIHRoZSB2ZXJ5IHN0YXJ0LlxuICAgMi4gTm9kZSBzZWdtZW50czogbGl2ZSBpbnNpZGUgdGhlIHNjcm9sbGVkIGNvbnRlbnQsIHNvIHRoZSBsaW5lIGtlZXBzXG4gICAgICBjb3ZlcmluZyByb3dzIHRoYXQgZ3JvdyBwYXN0IHRoZSBmaXJzdCB2aWV3cG9ydCAoc3RyZWFtZWQgYW5zd2VycykuXG4gICBCb3RoIGxheWVycyB1c2UgdGhlIFNBTUUgcHJlLWJsZW5kZWQgc29saWQgY29sb3Ig4oCUICNmZmQwZDggYXQgMjAlIGFscGhhXG4gICBmbGF0dGVuZWQgb3ZlciB0aGUgZHJvcGRvd24gYmcgIzM3Mzc0MiDigJQgc28gb3ZlcmxhcHMgZG9uJ3QgYnJpZ2h0ZW4uICovXG4uZXhwb25hLWNoYXQtaW50ZXJmYWNlIC5jaGF0LWNvbnRhaW5lcjo6YmVmb3JlIHtcbiAgY29udGVudDogXCJcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDUwJTtcbiAgd2lkdGg6IDFweDtcbiAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA0cHgpOyAvKiBmdWxsIHZpc2libGUgY2hhdCBoZWlnaHQsIG1pbnVzIHRoZSA0cHggb2Zmc2V0ICovXG4gIGJhY2tncm91bmQ6IHJnYig5NSwgODYsIDk2KTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgNHB4KTtcbn1cblxuLyogUGVyLXJvdyBzZWdtZW50ID0gb3duIHJvdyArIHJvdy1nYXAsIGpvaW5pbmcgc2VhbWxlc3NseSB3aXRoIHRoZSBuZXh0IG5vZGUgKi9cbi5leHBvbmEtY2hhdC1pbnRlcmZhY2UgLmNoYXQtbm9kZS1jZW50ZXI6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA0cHg7XG4gIGxlZnQ6IDIwcHg7XG4gIHotaW5kZXg6IC0xOyAvKiBiZWhpbmQgdGhlIG5vZGUgaWNvbiwgaW5zaWRlIHRoZSBjZWxsJ3Mgc3RhY2tpbmcgY29udGV4dCAqL1xuICB3aWR0aDogMXB4O1xuICBoZWlnaHQ6IGNhbGMoMTAwJSArIDYwcHgpOyAvKiByb3cgaGVpZ2h0ICsgZGVza3RvcCByb3ctZ2FwICovXG4gIGJhY2tncm91bmQ6IHJnYig5NSwgODYsIDk2KTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xufVxuXG4vKiBMYXN0IG5vZGUgb2YgdGhlIGNoYXQ6IGVuZCB0aGUgbGluZSBhdCB0aGUgYm90dG9tIG9mIGl0cyBvd24gcm93ICovXG4uZXhwb25hLWNoYXQtaW50ZXJmYWNlIC5jaGF0LW5vZGUtY2VudGVyOm50aC1sYXN0LWNoaWxkKDIpOjpiZWZvcmUge1xuICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDRweCk7XG59XG5cbi5leHBvbmEtY2hhdC1pbnRlcmZhY2UgLmNoYXQtbWVzc2FnZS1sZWZ0IHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgcGFkZGluZy1yaWdodDogMjBweDtcbn1cblxuLmV4cG9uYS1jaGF0LWludGVyZmFjZSAuY2hhdC1tZXNzYWdlLXJpZ2h0IHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgcGFkZGluZy1sZWZ0OiAyMHB4O1xufVxuXG4uZXhwb25hLWNoYXQtaW50ZXJmYWNlIC5jaGF0LW5vZGUtY2VudGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlOyAvKiBhbmNob3IgZm9yIHRoZSA6OmJlZm9yZSBsaW5lIHNlZ21lbnQgKi9cbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICB6LWluZGV4OiAxO1xufVxuXG4uZXhwb25hLWNoYXQtaW50ZXJmYWNlIC5ub2RlLWljb24ge1xuICB3aWR0aDogMTJweDtcbiAgaGVpZ2h0OiAxMnB4O1xuICBtYXJnaW4tdG9wOiA0cHg7XG4gIG1hcmdpbi1sZWZ0OiAwO1xufVxuXG4uZXhwb25hLWNoYXQtaW50ZXJmYWNlIC5ub2RlLWljb24uZW1wdHkge1xuICBib3JkZXI6IDFweCBzb2xpZCAjZmZkMGQ4O1xuICBiYWNrZ3JvdW5kOiAjMzczNzQyO1xufVxuXG4uZXhwb25hLWNoYXQtaW50ZXJmYWNlIC5ub2RlLWljb24uZmlsbGVkIHtcbiAgYmFja2dyb3VuZDogI2ZmZDBkODsgLyogUGlua2lzaCBjb2xvciBtYXRjaGluZyB0aGUgdGhlbWUgKi9cbn1cblxuLmV4cG9uYS1jaGF0LWludGVyZmFjZSAuY2hhdC1tZXRhIHtcbiAgY29sb3I6ICNmZmQwZDg7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgbGV0dGVyLXNwYWNpbmc6IDFweDtcbiAgbWFyZ2luLWJvdHRvbTogMTJweDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuLmV4cG9uYS1jaGF0LWludGVyZmFjZSAuY2hhdC10ZXh0IHtcbiAgY29sb3I6ICNmZmY7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgbGluZS1oZWlnaHQ6IDMwcHg7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgLmV4cG9uYS1jaGF0LWludGVyZmFjZSAuY2hhdC10ZXh0IHtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDIycHg7XG4gIH1cbn1cblxuLmV4cG9uYS1jaGF0LWludGVyZmFjZSAuZXhwb25hLWFuc3dlci13cmFwcGVyIC5jaGF0LXRleHQge1xuICBmb250LXdlaWdodDogNDAwO1xufVxuXG4uZXhwb25hLWNoYXQtaW50ZXJmYWNlIC5leHBvbmEtYW5zd2VyLXdyYXBwZXIgLmNoYXQtdGV4dCBhIHtcbiAgY29sb3I6ICNmZmQwZDg7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG4uZXhwb25hLWNoYXQtaW50ZXJmYWNlIC50eXBpbmctaW5kaWNhdG9yIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiA2cHg7XG4gIG1hcmdpbi10b3A6IDZweDtcbn1cblxuLmV4cG9uYS1jaGF0LWludGVyZmFjZSAudHlwaW5nLWluZGljYXRvciBzcGFuIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiA2cHg7XG4gIGhlaWdodDogNnB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZkMGQ4O1xuICBhbmltYXRpb246IHR5cGluZy1ib3VuY2UgMS40cyBpbmZpbml0ZSBlYXNlLWluLW91dCBib3RoO1xufVxuXG4uZXhwb25hLWNoYXQtaW50ZXJmYWNlIC50eXBpbmctaW5kaWNhdG9yIHNwYW46bnRoLWNoaWxkKDEpIHtcbiAgYW5pbWF0aW9uLWRlbGF5OiAtLjMycztcbn1cblxuLmV4cG9uYS1jaGF0LWludGVyZmFjZSAudHlwaW5nLWluZGljYXRvciBzcGFuOm50aC1jaGlsZCgyKSB7XG4gIGFuaW1hdGlvbi1kZWxheTogLS4xNnM7XG59XG5cbkBrZXlmcmFtZXMgdHlwaW5nLWJvdW5jZSB7XG4gIDAlLFxuICA4MCUsXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoLjUpO1xuICAgIG9wYWNpdHk6IC4zO1xuICB9XG5cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cblxuLyogLmV4cG9uYS1jaGF0LWludGVyZmFjZSAuZXhwb25hLWFuc3dlci13cmFwcGVyIHtcbiAgbWF4LWhlaWdodDogNDB2aDtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgcGFkZGluZy1yaWdodDogMTZweDtcbn1cblxuLmV4cG9uYS1jaGF0LWludGVyZmFjZSAuZXhwb25hLWFuc3dlci13cmFwcGVyOjotd2Via2l0LXNjcm9sbGJhciB7XG4gIHdpZHRoOiA2cHg7XG59XG4uZXhwb25hLWNoYXQtaW50ZXJmYWNlIC5leHBvbmEtYW5zd2VyLXdyYXBwZXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG59XG4uZXhwb25hLWNoYXQtaW50ZXJmYWNlIC5leHBvbmEtYW5zd2VyLXdyYXBwZXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG59XG4uZXhwb25hLWNoYXQtaW50ZXJmYWNlIC5leHBvbmEtYW5zd2VyLXdyYXBwZXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpO1xufSAqL1xuXG4uZXhwb25hLWNoYXQtaW50ZXJmYWNlIC5hbnN3ZXItYWN0aW9ucyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdhcDogMTZweDtcbiAgbWFyZ2luLXRvcDogMjBweDtcbn1cblxuLmV4cG9uYS1jaGF0LWludGVyZmFjZSAuYW5zd2VyLWFjdGlvbi1idG4ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgd2lkdGg6IDI0cHg7XG4gIGhlaWdodDogMjRweDtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBvcGFjaXR5OiAuNDU7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgLjJzIGVhc2U7XG59XG5cbi5leHBvbmEtY2hhdC1pbnRlcmZhY2UgLmFuc3dlci1hY3Rpb24tYnRuOmhvdmVyIHtcbiAgb3BhY2l0eTogMTtcbn1cblxuLmV4cG9uYS1jaGF0LWludGVyZmFjZSAuYWN0aW9uLWljb24ge1xuICB3aWR0aDogMjRweDtcbiAgaGVpZ2h0OiAyNHB4O1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmV4cG9uYS1jaGF0LWludGVyZmFjZSAuY2hhdC1mb290ZXItaGludCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiA4MHB4O1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1LCAuNSk7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgbGluZS1oZWlnaHQ6IDI2cHg7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG59XG5cbi5leHBvbmEtY2hhdC1pbnRlcmZhY2UgLmhpbnQtbW9iaWxlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLmV4cG9uYS1jaGF0LWludGVyZmFjZSAubmV3LXF1ZXN0aW9uLXdyYXBwZXIge1xuXG4gIC8qIGRpc3BsYXk6IGlubGluZS1mbGV4OyAqL1xuXG4gIC8qIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47ICovXG5cbiAgLyogYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7ICovXG4gIG1heC13aWR0aDogMTAwJTtcblxuICAvKiBQbGF5cyBhdXRvbWF0aWNhbGx5IHRoZSBtb21lbnQgdGhlIHJvdyBpcyBpbmplY3RlZCBpbnRvIHRoZSBjaGF0LCBzbyB0aGVcbiAgICAgaW5wdXQgbmV2ZXIgZmxhc2hlcyBpbiBhdCBmdWxsIG9wYWNpdHkgYmVmb3JlIEpTIGNhbiBjbGFzcyBpdC4gVGhlXG4gICAgIHRleHRhcmVhIGFuZCByZXR1cm4gYnV0dG9uIHRoZW4gc3RhZ2dlciBpbiBvbiB0b3Agb2YgdGhpcyAoc2VlIGJlbG93KS4gKi9cbiAgYW5pbWF0aW9uOiBuZXctcXVlc3Rpb24taW4gLjZzIGN1YmljLWJlemllciguMTYsIDEsIC4zLCAxKSBib3RoO1xuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtLCBvcGFjaXR5LCBmaWx0ZXI7XG59XG5cbkBrZXlmcmFtZXMgbmV3LXF1ZXN0aW9uLWluIHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDIycHgsIDApIHNjYWxlM2QoLjk2LCAuOTYsIDEpO1xuICAgIGZpbHRlcjogYmx1cig4cHgpO1xuICB9XG5cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKSBzY2FsZTNkKDEsIDEsIDEpO1xuICAgIGZpbHRlcjogYmx1cigwKTtcbiAgfVxufVxuXG4vKiBTdGFnZ2VyZWQgY2hpbGRyZW4g4oCUIGVhY2ggbGlmdHMgaW4ganVzdCBiZWhpbmQgdGhlIHdyYXBwZXIgaXRzZWxmLiAqL1xuQGtleWZyYW1lcyBuZXctcXVlc3Rpb24tY2hpbGQtaW4ge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMTBweCwgMCk7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG59XG5cbi5leHBvbmEtY2hhdC1pbnRlcmZhY2UgLm5ldy1xdWVzdGlvbi1pbnB1dCB7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGNvbG9yOiAjZmZmO1xuICBmb250LXNpemU6IDE4cHg7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIHdpZHRoOiAxMDAlO1xuICBtaW4td2lkdGg6IDI1MHB4O1xuICByZXNpemU6IG5vbmU7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXByaW1hcnksIFwiTGV4ZW5kXCIsIHNhbnMtc2VyaWYpO1xuICBhbmltYXRpb246IG5ldy1xdWVzdGlvbi1jaGlsZC1pbiAuNXMgY3ViaWMtYmV6aWVyKC4xNiwgMSwgLjMsIDEpIC4xMnMgYm90aDtcblxuICAvKiBoZWlnaHQ6IDI4cHg7XG4gIG1heC1oZWlnaHQ6IDEyMHB4O1xuICBwYWRkaW5nLXJpZ2h0OiAxMnB4OyAqL1xufVxuXG4vKiBDdXN0b20gU2Nyb2xsYmFyIGZvciBOZXcgUXVlc3Rpb24gSW5wdXQgKi9cbi5leHBvbmEtY2hhdC1pbnRlcmZhY2UgLm5ldy1xdWVzdGlvbi1pbnB1dDo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICB3aWR0aDogNnB4O1xufVxuXG4uZXhwb25hLWNoYXQtaW50ZXJmYWNlIC5uZXctcXVlc3Rpb24taW5wdXQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG59XG5cbi5leHBvbmEtY2hhdC1pbnRlcmZhY2UgLm5ldy1xdWVzdGlvbi1pbnB1dDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICBiYWNrZ3JvdW5kOiByZ2IoMjU1LCAyNTUsIDI1NSwgLjIpO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG59XG5cbi5leHBvbmEtY2hhdC1pbnRlcmZhY2UgLm5ldy1xdWVzdGlvbi1pbnB1dDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2IoMjU1LCAyNTUsIDI1NSwgLjQpO1xufVxuXG4uZXhwb25hLWNoYXQtaW50ZXJmYWNlIC5uZXctcXVlc3Rpb24tcmV0dXJuIHtcbiAgbWFyZ2luOiAxMnB4IDAgMCAhaW1wb3J0YW50O1xuXG4gIC8qIFBsYWluIGBvcGFjaXR5OiAxYCAobm90ICFpbXBvcnRhbnQpIHN0aWxsIGJlYXRzIC5wcmVzcy1yZXR1cm4tY29udGFpbmVyJ3NcbiAgICAgYG9wYWNpdHk6IDBgIG9uIHNwZWNpZmljaXR5IOKAlCBhbmQgdW5saWtlICFpbXBvcnRhbnQgaXQgbGV0cyB0aGUga2V5ZnJhbWVzXG4gICAgIGJlbG93IGFjdHVhbGx5IGRyaXZlIHRoZSBmYWRlLiAqL1xuICBvcGFjaXR5OiAxO1xuICBhbmltYXRpb246IG5ldy1xdWVzdGlvbi1jaGlsZC1pbiAuNXMgY3ViaWMtYmV6aWVyKC4xNiwgMSwgLjMsIDEpIC4yNnMgYm90aDtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gIC5leHBvbmEtY2hhdC1pbnRlcmZhY2Uge1xuICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICB9XG5cbiAgLmV4cG9uYS1jaGF0LWludGVyZmFjZSAuY2hhdC1jb250YWluZXIge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMzBweCAxZnI7XG4gICAgZ3JpZC1hdXRvLWZsb3c6IGRlbnNlO1xuICAgIHJvdy1nYXA6IDQwcHg7XG4gIH1cblxuICAuZXhwb25hLWNoYXQtaW50ZXJmYWNlIC5leHBvbmEtYW5zd2VyLXdyYXBwZXIge1xuICAgIG1heC1oZWlnaHQ6IG5vbmU7XG4gIH1cblxuICAvKiBCYXNlbGluZTogY29udGFpbmVyIHBhZGRpbmctbGVmdCAyMHB4ICsgaWNvbiBheGlzIDZweCBpbnNpZGUgdGhlIG5vZGUgY2VsbCAqL1xuICAuZXhwb25hLWNoYXQtaW50ZXJmYWNlIC5jaGF0LWNvbnRhaW5lcjo6YmVmb3JlIHtcbiAgICBsZWZ0OiAyNnB4O1xuICB9XG5cbiAgLmV4cG9uYS1jaGF0LWludGVyZmFjZSAuY2hhdC1ub2RlLWNlbnRlcjo6YmVmb3JlIHtcbiAgICBsZWZ0OiA2cHg7IC8qIGFsaWduIHdpdGggdGhlIGFic29sdXRlbHkgcG9zaXRpb25lZCBub2RlIGljb24gKi9cbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDQwcHgpOyAvKiByb3cgaGVpZ2h0ICsgbW9iaWxlIHJvdy1nYXAgKi9cbiAgfVxuXG4gIC5leHBvbmEtY2hhdC1pbnRlcmZhY2UgLmNoYXQtbWVzc2FnZS1sZWZ0LFxuICAuZXhwb25hLWNoYXQtaW50ZXJmYWNlIC5jaGF0LW1lc3NhZ2UtcmlnaHQge1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gIC5leHBvbmEtY2hhdC1pbnRlcmZhY2UgLmNoYXQtbm9kZS1jZW50ZXIge1xuICAgIGdyaWQtY29sdW1uOiAxO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gIH1cblxuICAuZXhwb25hLWNoYXQtaW50ZXJmYWNlIC5jaGF0LW5vZGUtY2VudGVyIC5ub2RlLWljb24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiA2cHg7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICB9XG5cbiAgLmV4cG9uYS1jaGF0LWludGVyZmFjZSAubm9kZS1pY29uIHtcbiAgICB3aWR0aDogMTJweDtcbiAgICBoZWlnaHQ6IDEycHg7XG4gICAgbWFyZ2luLXRvcDogNHB4O1xuICB9XG5cbiAgLmV4cG9uYS1jaGF0LWludGVyZmFjZSAubm9kZS1pY29uLmVtcHR5IHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZmZkMGQ4O1xuICAgIGJhY2tncm91bmQ6ICMzNzM3NDI7XG4gIH1cblxuICAuZXhwb25hLWNoYXQtaW50ZXJmYWNlIC5jaGF0LWNvbC1ub2RlIHtcbiAgICBncmlkLWNvbHVtbjogMTtcbiAgfVxuXG4gIC5leHBvbmEtY2hhdC1pbnRlcmZhY2UgLmNoYXQtY29sLWNvbnRlbnQge1xuICAgIGdyaWQtY29sdW1uOiAyO1xuICB9XG5cbiAgLmV4cG9uYS1jaGF0LWludGVyZmFjZSAuY2hhdC1jb2wtZW1wdHkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAuZXhwb25hLWNoYXQtaW50ZXJmYWNlIC5leHBvbmEtYW5zd2VyLXdyYXBwZXIgLmNoYXQtdGV4dCB7XG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgfVxuXG4gIC5leHBvbmEtY2hhdC1pbnRlcmZhY2UgLmNoYXQtbWV0YSB7XG4gICAgY29sb3I6ICNmZmQwZDg7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxOHB4O1xuICAgIGxldHRlci1zcGFjaW5nOiAxLjhweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxMnB4O1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICB9XG5cbiAgLmV4cG9uYS1jaGF0LWludGVyZmFjZSAuY2hhdC1mb290ZXItaGludCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJvdHRvbTogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBwYWRkaW5nLWxlZnQ6IDQ4cHg7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAyNnB4O1xuICB9XG5cbiAgLmV4cG9uYS1jaGF0LWludGVyZmFjZSAuaGludC1kZXNrdG9wIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLmV4cG9uYS1jaGF0LWludGVyZmFjZSAuaGludC1tb2JpbGUge1xuICAgIGRpc3BsYXk6IGlubGluZTtcbiAgfVxufVxuXG4vKiBBc2sgRXhwb25hIHJlQ0FQVENIQSBJbmxpbmUgQ29udGFpbmVyICovXG4jaW5saW5lLWNhcHRjaGEtY29udGFpbmVyIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgZmxleDogMTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuI2lubGluZS1jYXB0Y2hhLWNvbnRhaW5lciAuY2FwdGNoYS1mYWxsYmFjayBwIHtcbiAgY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1LCAuNyk7XG4gIG1hcmdpbi1ib3R0b206IDIwcHg7XG59XG5cbi8qIFJlc3BvbnNpdmUgSGFtYnVyZ2VyICYgTW9iaWxlIE1lbnUgQ29udGFpbmVyICovXG4ubWFpbi1oZWFkZXIgLmhhbWJ1cmdlci1idG4ge1xuICBkaXNwbGF5OiBub25lO1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBib3JkZXI6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gIHdpZHRoOiAyOHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIHBhZGRpbmc6IDA7XG4gIHotaW5kZXg6IDEwMDI7IC8qIEFib3ZlIHRoZSBtb2JpbGUgbWVudSBjb250YWluZXIgKi9cbn1cblxuLmhhbWJ1cmdlci1saW5lIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDJweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcbiAgdHJhbnNpdGlvbjogYWxsIC4zcyBlYXNlO1xufVxuXG4uaGFtYnVyZ2VyLWxpbmU6bnRoLWNoaWxkKDMpIHtcbiAgd2lkdGg6IDgwJTtcbn1cblxuLyogQ2hhbmdlIGhhbWJ1cmdlciBjb2xvciB3aGVuIGhlYWRlciBpcyBkYXJrICovXG4ubWFpbi1oZWFkZXI6aXMoLmhlYWRlci1kYXJrLCAubWVnYS1tZW51LW9wZW4pIC5oYW1idXJnZXItbGluZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59XG5cbi8qIE9wZW4gc3RhdGUgZm9yIGhhbWJ1cmdlciAqL1xuLm1haW4taGVhZGVyIC5oYW1idXJnZXItYnRuLm9wZW4gLmhhbWJ1cmdlci1saW5lIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xufVxuXG4ubWFpbi1oZWFkZXIgLmhhbWJ1cmdlci1idG4ub3BlbiAuaGFtYnVyZ2VyLWxpbmU6bnRoLWNoaWxkKDEpIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDlweCkgcm90YXRlKDQ1ZGVnKTtcbn1cblxuLm1haW4taGVhZGVyIC5oYW1idXJnZXItYnRuLm9wZW4gLmhhbWJ1cmdlci1saW5lOm50aC1jaGlsZCgyKSB7XG4gIG9wYWNpdHk6IDA7XG59XG5cbi5tYWluLWhlYWRlciAuaGFtYnVyZ2VyLWJ0bi5vcGVuIC5oYW1idXJnZXItbGluZTpudGgtY2hpbGQoMykge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTlweCkgcm90YXRlKC00NWRlZyk7XG59XG5cbi5tb2JpbGUtbWVudS1jb250YWluZXIge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG5cbiAgLyogZHZoIHdpdGggYSB2aCBmYWxsYmFjazogb24gbW9iaWxlIGJyb3dzZXJzIDEwMHZoIGlzIHRoZSBMQVJHRSB2aWV3cG9ydCDigJRcbiAgICAgdGhlIGhlaWdodCB0aGUgcGFnZSBoYXMgb25jZSB0aGUgYWRkcmVzcyBiYXIgaGFzIHJldHJhY3RlZCDigJQgc28gYSBkcmF3ZXJcbiAgICAgc2l6ZWQgaW4gdmggcnVucyB1bmRlciB0aGUgYnJvd3NlciBjaHJvbWUgYW5kIGl0cyBsYXN0IHJvd3MgYW5kIGZvb3RlciBhcmVcbiAgICAgdW5yZWFjaGFibGUsIHdoaWNoIGlzIHRoZSBkcmF3ZXIgXCJzY3JvbGxpbmcgZGlmZmVyZW50bHlcIiBvbiBhIHBob25lIHRoYW4gaW5cbiAgICAgYSBuYXJyb3cgZGVza3RvcCB3aW5kb3cuIGR2aCB0cmFja3MgdGhlIHZpZXdwb3J0IHRoYXQgaXMgYWN0dWFsbHkgdmlzaWJsZS4gKi9cbiAgaGVpZ2h0OiAxMDB2aDtcbiAgLyogc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lICovXG4gIGhlaWdodDogMTAwZHZoO1xuICBiYWNrZ3JvdW5kOiAjMzczNzQyIHVybChcIi4uLy4uLy4uL3N0YXRpYy9hc3NldHMvaW1hZ2VzL2xhdGVzdC9ncmFpbi5wbmdcIikgY2VudGVyIGNlbnRlcjtcbiAgei1pbmRleDogMTAwMzsgLyogQWJvdmUgZXZlcnl0aGluZyAqL1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgcGFkZGluZzogMDtcblxuICAvKiBUaGUgc2xpZGUgaXMgdGhlIHdob2xlIGVmZmVjdCDigJQgbm8gb3BhY2l0eSBpbiBpdC4gYHRyYW5zaXRpb246IGFsbGAgdXNlZCB0b1xuICAgICBmYWRlIHRoZSBwYW5lbCBvdXQgYXQgdGhlIHNhbWUgdGltZSBhcyBpdCBsZWZ0LCBzbyBmb3IgdGhlIGVudGlyZSAwLjRzIGl0XG4gICAgIHdhcyBhIHNlbWktdHJhbnNwYXJlbnQgc2hlZXQgc3RpbGwgY292ZXJpbmcgdGhlIHNjcmVlbiBhbmQgdGhlIHBhZ2UgcmVhZFxuICAgICBzdHJhaWdodCB0aHJvdWdoIGl0LiBBIGRyYXdlciBzbGlkZXMgYXdheTsgaXQgZG9lc24ndCBkaXNzb2x2ZS5cblxuICAgICB2aXNpYmlsaXR5IGluc3RlYWQgb2Ygb3BhY2l0eSBmb3IgdGhlIHJlc3Rpbmcgc3RhdGUsIGZsaXBwZWQgYXQgdGhlIEVORCBvZlxuICAgICB0aGUgY2xvc2Ugc28gdGhlIHBhbmVsIHN0YXlzIHBhaW50ZWQgZm9yIHRoZSB3aG9sZSBzbGlkZSDigJQgZmxpcHBpbmcgaXQgb25cbiAgICAgZnJhbWUgb25lIHdvdWxkIHRha2UgdGhlIHBhbmVsIG9mZiBzY3JlZW4gYmVmb3JlIHRoZSBzbGlkZSBjb3VsZCBiZSBzZWVuLlxuICAgICBJdCBhbHNvIGtlZXBzIHRoZSBwYXJrZWQgcGFuZWwgb3V0IG9mIHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUgYW5kIG91dCBvZlxuICAgICB0aGUgbGF5b3V0J3Mgb3ZlcmZsb3csIHdoaWNoIG9wYWNpdHk6IDAgYWxvbmUgd291bGQgbm90LiAqL1xuICB0cmFuc2l0aW9uOlxuICAgIHRyYW5zZm9ybSAuNHMgY3ViaWMtYmV6aWVyKC40LCAwLCAuMiwgMSksXG4gICAgdmlzaWJpbGl0eSAwcyBsaW5lYXIgLjRzO1xufVxuXG4ubW9iaWxlLW1lbnUtY29udGFpbmVyIC5tb2JpbGUtbWVudS1oZWFkZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIHBhZGRpbmc6IDI0cHg7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2IoMjU1LCAyNTUsIDI1NSwgLjEpO1xufVxuXG4ubW9iaWxlLW1lbnUtY29udGFpbmVyIC5tb2JpbGUtbG9nby1pbWcge1xuICBoZWlnaHQ6IDI0cHg7XG4gIHdpZHRoOiBhdXRvO1xufVxuXG4ubW9iaWxlLW1lbnUtY29udGFpbmVyIC5tb2JpbGUtbWVudS1hY3Rpb25zIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAxNnB4O1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIExhbmd1YWdlIFBpY2tlciDigJQgTW9iaWxlICgubW9iaWxlLW1lbnUtY29udGFpbmVyKVxuICAgQWx3YXlzIGRhcms7IG5vIG1lZGlhIHF1ZXJ5IG5lZWRlZCDigJQgdGhlIGNvbnRhaW5lclxuICAgaXRzZWxmIGlzIG1vYmlsZS1vbmx5IChoaWRkZW4gb24gZGVza3RvcCkuXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5tb2JpbGUtbWVudS1jb250YWluZXIgLmxhbmctcGlja2VyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4ubW9iaWxlLW1lbnUtY29udGFpbmVyIC5sYW5nLXBpY2tlcl9fdHJpZ2dlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMTBweDtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBwYWRkaW5nOiA2cHggMTBweDtcbiAgY29sb3I6ICNmZmY7XG4gIGJvcmRlcjogMDtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtcHJpbWFyeSk7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgbGluZS1oZWlnaHQ6IDMwcHg7XG59XG5cbi5tb2JpbGUtbWVudS1jb250YWluZXIgLmxhbmctcGlja2VyLmlzLW9wZW4gLmxhbmctcGlja2VyX190cmlnZ2VyIHtcbiAgYmFja2dyb3VuZDogIzJmMmYzOTtcbn1cblxuLm1vYmlsZS1tZW51LWNvbnRhaW5lciAubGFuZy1waWNrZXJfX2dsb2JlLFxuLm1vYmlsZS1tZW51LWNvbnRhaW5lciAubGFuZy1waWNrZXJfX2NhcmV0IHtcbiAgY29sb3I6ICNmZmY7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICB0cmFuc2l0aW9uOiBjb2xvciAuMnMgZWFzZTtcbn1cblxuLm1vYmlsZS1tZW51LWNvbnRhaW5lciAubGFuZy1waWNrZXJfX3RyaWdnZXI6aG92ZXIgLmxhbmctcGlja2VyX19nbG9iZSxcbi5tb2JpbGUtbWVudS1jb250YWluZXIgLmxhbmctcGlja2VyLmlzLW9wZW4gLmxhbmctcGlja2VyX19nbG9iZSB7XG4gIGNvbG9yOiAjZWExYjNkO1xufVxuXG4ubW9iaWxlLW1lbnUtY29udGFpbmVyIC5sYW5nLXBpY2tlcl9fZHJvcGRvd24ge1xuICBkaXNwbGF5OiBub25lO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMTAwJTtcbiAgcmlnaHQ6IDA7XG4gIGJhY2tncm91bmQ6ICMyZjJmMzk7XG4gIGJvcmRlcjogMDtcbiAgYm9yZGVyLXRvcDogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgcGFkZGluZzogNHB4IDRweCA2cHg7XG4gIG1pbi13aWR0aDogMTAwJTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgei1pbmRleDogMjAwO1xufVxuXG4ubW9iaWxlLW1lbnUtY29udGFpbmVyIC5sYW5nLXBpY2tlci5pcy1vcGVuIC5sYW5nLXBpY2tlcl9fZHJvcGRvd24ge1xuICBkaXNwbGF5OiBmbGV4O1xufVxuXG4ubW9iaWxlLW1lbnUtY29udGFpbmVyIC5sYW5nLXBpY2tlcl9fb3B0LmlzLWFjdGl2ZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5tb2JpbGUtbWVudS1jb250YWluZXIgLmxhbmctcGlja2VyX19vcHQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDhweDtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHBhZGRpbmc6IDdweCAxMHB4O1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1wcmltYXJ5KTtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBmb250LXdlaWdodDogMzAwO1xuICBsaW5lLWhlaWdodDogMzBweDtcbiAgY29sb3I6ICNmZmY7XG4gIHdpZHRoOiAxMDAlO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG4ubW9iaWxlLW1lbnUtY29udGFpbmVyIC5sYW5nLXBpY2tlcl9fb3B0OjpiZWZvcmUge1xuICBjb250ZW50OiBcIlwiO1xuICB3aWR0aDogMTNweDtcbiAgaGVpZ2h0OiAxM3B4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJvcmRlcjogMS41cHggc29saWQgcmdiKDI1NSwgMjU1LCAyNTUsIC40KTtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5tb2JpbGUtbWVudS1jb250YWluZXIgLmxhbmctcGlja2VyX19vcHQ6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2IoMjU1LCAyNTUsIDI1NSwgLjA4KTtcbn1cblxuLm1vYmlsZS1tZW51LWNvbnRhaW5lciAubW9iaWxlLWNsb3NlLWJ0biB7XG4gIGJhY2tncm91bmQ6IHJnYigyNTUsIDI1NSwgMjU1LCAwKTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiKDI1NSwgMjU1LCAyNTUsIC4yKTtcbiAgY29sb3I6ICNmZmY7XG4gIHdpZHRoOiA0MHB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCAuM3MgZWFzZTtcbn1cblxuLm1vYmlsZS1tZW51LWNvbnRhaW5lciAubW9iaWxlLWNsb3NlLWJ0bjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYigyNTUsIDI1NSwgMjU1LCAuMik7XG59XG5cbi5tb2JpbGUtbWVudS1jb250YWluZXIuYWN0aXZlIHtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuXG4gIC8qIE9wZW5pbmc6IHBhaW50ZWQgZnJvbSBmcmFtZSB6ZXJvIHNvIHRoZSBzbGlkZS1pbiBpcyB2aXNpYmxlIHRvby4gKi9cbiAgdHJhbnNpdGlvbjpcbiAgICB0cmFuc2Zvcm0gLjRzIGN1YmljLWJlemllciguNCwgMCwgLjIsIDEpLFxuICAgIHZpc2liaWxpdHkgMHMgbGluZWFyIDBzO1xufVxuXG4vKiDilIDilIAgRHJhd2VyIGNvbnRlbnQg4oCUIHNldHRsZXMgaW4gYmVoaW5kIHRoZSBzbGlkZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgIFRoZSBwYW5lbCBhcnJpdmluZyBhcyBvbmUgcmlnaWQgYmxvY2sgaXMgd2hhdCBtYWRlIGl0IGZlZWwgZmxhdDogZXZlcnl0aGluZ1xuICAgaW5zaWRlIHdhcyBhbHJlYWR5IGluIGl0cyBmaW5hbCBwb3NpdGlvbiBiZWZvcmUgdGhlIGRyYXdlciBoYWQgZmluaXNoZWRcbiAgIG1vdmluZywgc28gdGhlcmUgd2FzIG5vdGhpbmcgdG8gd2F0Y2ggb25jZSBpdCBsYW5kZWQuIEVhY2ggcm93IG5vdyBjYXJyaWVzXG4gICB0aGUgbGFzdCBvZiB0aGUgZGlzdGFuY2UgaXRzZWxmLCBlbnRlcmluZyBmcm9tIHRoZSBzYW1lIGRpcmVjdGlvbiB0aGUgcGFuZWxcbiAgIGNhbWUgZnJvbSBhbmQgbGFuZGluZyBqdXN0IGFmdGVyIGl0IGRvZXMuXG5cbiAgIFNhbWUgY29uc3RydWN0aW9uIGFzIHRoZSBtZWdhIG1lbnUgYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGU6IGJvdGggZGlyZWN0aW9uc1xuICAgYXJlIHBsYWluIHRyYW5zaXRpb25zLCBhbmQgYSB0cmFuc2l0aW9uIHRha2VzIGl0cyB0aW1pbmcgZnJvbSB0aGUgc3RhdGUgaXRcbiAgIGlzIGhlYWRpbmcgVE9XQVJEUyDigJQgc28gdGhlIHN0YWdnZXJlZCBlbnRyeSBkZWxheXMgbGl2ZSBvbiB0aGUgLmFjdGl2ZSBydWxlc1xuICAgYW5kIHRoZSAoZGVsaWJlcmF0ZWx5IHVuZGVsYXllZCkgZXhpdCBsaXZlcyBvbiB0aGUgYmFzZSBydWxlcy4gQ2xvc2luZyBpc1xuICAgcXVpY2sgYW5kIHVuc3RhZ2dlcmVkIG9uIHB1cnBvc2U6IG9uIHRoZSB3YXkgb3V0IHRoZSBkcmF3ZXIgaXRzZWxmIGlzIHRoZVxuICAgbW92ZW1lbnQsIGFuZCBhIHJldmVyc2VkIHN0YWdnZXIgd291bGQganVzdCBob2xkIHRoZSBleWUgb24gYSBwYW5lbCB0aGF0IGhhc1xuICAgYWxyZWFkeSBsZWZ0LiAqL1xuLm1vYmlsZS1tZW51LWNvbnRhaW5lciAubW9iaWxlLW1lbnUtaGVhZGVyLFxuLm1vYmlsZS1tZW51LWNvbnRhaW5lciAubW9iaWxlLW5hdi1pdGVtLFxuLm1vYmlsZS1tZW51LWNvbnRhaW5lciAubW9iaWxlLW1lbnUtZm9vdGVyIHtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxOHB4LCAwLCAwKTtcblxuICAvKiBDbG9zaW5nOiBhbGwgdG9nZXRoZXIsIGFuZCBnb25lIGJlZm9yZSB0aGUgcGFuZWwgaXMuICovXG4gIHRyYW5zaXRpb246XG4gICAgb3BhY2l0eSAuMTRzIGVhc2UgMHMsXG4gICAgdHJhbnNmb3JtIC4xNHMgZWFzZSAwcztcbn1cblxuLm1vYmlsZS1tZW51LWNvbnRhaW5lci5hY3RpdmUgLm1vYmlsZS1tZW51LWhlYWRlcixcbi5tb2JpbGUtbWVudS1jb250YWluZXIuYWN0aXZlIC5tb2JpbGUtbmF2LWl0ZW0sXG4ubW9iaWxlLW1lbnUtY29udGFpbmVyLmFjdGl2ZSAubW9iaWxlLW1lbnUtZm9vdGVyIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcblxuICAvKiBPcGVuaW5nOiBoYW5ncyBiYWNrIHVudGlsIHRoZSBkcmF3ZXIgaXMgb24gaXRzIHdheSwgdGhlbiBmb2xsb3dzIGl0IGluLiAqL1xuICB0cmFuc2l0aW9uOlxuICAgIG9wYWNpdHkgLjM1cyBlYXNlIC4xcyxcbiAgICB0cmFuc2Zvcm0gLjM1cyBjdWJpYy1iZXppZXIoLjE2LCAxLCAuMywgMSkgLjFzO1xufVxuXG4vKiBUaGUgc3RhZ2dlci4gV3JpdHRlbiBvdXQgcGVyIHBvc2l0aW9uIGJlY2F1c2UgdGhpcyBpcyBwbGFpbiBDU1Mgd2l0aCBubyBsb29wXG4gICBhdmFpbGFibGUg4oCUIGVpZ2h0IGNvdmVycyB0aGUgbmF2IGNvbWZvcnRhYmx5LCBhbmQgYW55IGl0ZW0gcGFzdCB0aGUgZWlnaHRoXG4gICBzaW1wbHkgc2hhcmVzIHRoZSBsYXN0IHN0ZXAgcmF0aGVyIHRoYW4gYnJlYWtpbmcuICovXG4ubW9iaWxlLW1lbnUtY29udGFpbmVyLmFjdGl2ZSAubW9iaWxlLW5hdi1pdGVtOm50aC1jaGlsZCgxKSB7IHRyYW5zaXRpb24tZGVsYXk6IC4xNXM7IH1cbi5tb2JpbGUtbWVudS1jb250YWluZXIuYWN0aXZlIC5tb2JpbGUtbmF2LWl0ZW06bnRoLWNoaWxkKDIpIHsgdHJhbnNpdGlvbi1kZWxheTogLjJzOyB9XG4ubW9iaWxlLW1lbnUtY29udGFpbmVyLmFjdGl2ZSAubW9iaWxlLW5hdi1pdGVtOm50aC1jaGlsZCgzKSB7IHRyYW5zaXRpb24tZGVsYXk6IC4yNXM7IH1cbi5tb2JpbGUtbWVudS1jb250YWluZXIuYWN0aXZlIC5tb2JpbGUtbmF2LWl0ZW06bnRoLWNoaWxkKDQpIHsgdHJhbnNpdGlvbi1kZWxheTogLjNzOyB9XG4ubW9iaWxlLW1lbnUtY29udGFpbmVyLmFjdGl2ZSAubW9iaWxlLW5hdi1pdGVtOm50aC1jaGlsZCg1KSB7IHRyYW5zaXRpb24tZGVsYXk6IC4zNXM7IH1cbi5tb2JpbGUtbWVudS1jb250YWluZXIuYWN0aXZlIC5tb2JpbGUtbmF2LWl0ZW06bnRoLWNoaWxkKDYpIHsgdHJhbnNpdGlvbi1kZWxheTogLjRzOyB9XG4ubW9iaWxlLW1lbnUtY29udGFpbmVyLmFjdGl2ZSAubW9iaWxlLW5hdi1pdGVtOm50aC1jaGlsZCg3KSB7IHRyYW5zaXRpb24tZGVsYXk6IC40NXM7IH1cbi5tb2JpbGUtbWVudS1jb250YWluZXIuYWN0aXZlIC5tb2JpbGUtbmF2LWl0ZW06bnRoLWNoaWxkKG4gKyA4KSB7IHRyYW5zaXRpb24tZGVsYXk6IC41czsgfVxuXG4ubW9iaWxlLW1lbnUtY29udGFpbmVyLmFjdGl2ZSAubW9iaWxlLW1lbnUtZm9vdGVyIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogLjM0cztcbn1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgLm1vYmlsZS1tZW51LWNvbnRhaW5lcixcbiAgLm1vYmlsZS1tZW51LWNvbnRhaW5lci5hY3RpdmUsXG4gIC5tb2JpbGUtbWVudS1jb250YWluZXIgLm1vYmlsZS1tZW51LWhlYWRlcixcbiAgLm1vYmlsZS1tZW51LWNvbnRhaW5lciAubW9iaWxlLW5hdi1pdGVtLFxuICAubW9iaWxlLW1lbnUtY29udGFpbmVyIC5tb2JpbGUtbWVudS1mb290ZXIsXG4gIC5tb2JpbGUtbWVudS1jb250YWluZXIuYWN0aXZlIC5tb2JpbGUtbWVudS1oZWFkZXIsXG4gIC5tb2JpbGUtbWVudS1jb250YWluZXIuYWN0aXZlIC5tb2JpbGUtbmF2LWl0ZW0sXG4gIC5tb2JpbGUtbWVudS1jb250YWluZXIuYWN0aXZlIC5tb2JpbGUtbWVudS1mb290ZXIge1xuICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gIH1cbn1cblxuLm1vYmlsZS1tZW51LWNvbnRhaW5lciAubW9iaWxlLW1lbnUtaW5uZXIge1xuICB3aWR0aDogMTAwJTtcbiAgZmxleDogMTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAvKiB4IHRoZW4geS4gU2Nyb2xsaW5nIG9ubHkgb24geTogdGhlIHJvd3MgZW50ZXIgZnJvbSAxOHB4IHRvIHRoZSByaWdodCwgYW5kXG4gICAgIGxlYXZpbmcgeCB0byBjb21wdXRlIHRvIGF1dG8gKHdoaWNoIGl0IHdvdWxkIGlmIG9ubHkgb3ZlcmZsb3cteSB3ZXJlIHNldClcbiAgICAgaXMgZW5vdWdoIHRyYW5zZm9ybSBvdmVyZmxvdyB0byBmbGFzaCBhIGhvcml6b250YWwgc2Nyb2xsYmFyIG1pZC1hbmltYXRpb24uICovXG4gIG92ZXJmbG93OiBoaWRkZW4gYXV0bztcblxuICAvKiBTdG9wIGF0IHRoaXMgbGlzdCdzIG93biBlbmRzIGluc3RlYWQgb2YgaGFuZGluZyB0aGUgbGVmdG92ZXIgc2Nyb2xsIHRvIHRoZVxuICAgICBwYWdlIHVuZGVybmVhdGguIFRoZSBKUyBsb2NrIChqcy9zaGFyZWQuanMpIGlzIHdoYXQgbm9ybWFsbHkgcHJldmVudHMgdGhhdCxcbiAgICAgYnV0IHNjcm9sbCBjaGFpbmluZyBpcyBhIHNlcGFyYXRlIG1lY2hhbmlzbSBmcm9tIG92ZXJmbG93IOKAlCBhbmQgb24gaU9TLFxuICAgICB3aGVyZSBvdmVyZmxvdzpoaWRkZW4gb24gdGhlIHJvb3QgaXMgbm90IGEgZGVwZW5kYWJsZSB0b3VjaCBsb2NrLCBjaGFpbmluZ1xuICAgICBpcyBleGFjdGx5IGhvdyB0aGUgcGFnZSBlbmRzIHVwIG1vdmluZyBiZWhpbmQgYW4gb3BlbiBkcmF3ZXIuICovXG4gIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW47XG59XG5cbi5tb2JpbGUtbWVudS1jb250YWluZXIgLm1vYmlsZS1tZW51LWZvb3RlciB7XG4gIHBhZGRpbmc6IDI0cHg7XG4gIG1hcmdpbi10b3A6IGF1dG87XG4gIG1hcmdpbi1ib3R0b206IDQwcHg7XG59XG5cbi5tb2JpbGUtbWVudS1jb250YWluZXIgLm1vYmlsZS1ib3R0b20tY2FyZCB7XG4gIGJhY2tncm91bmQ6ICMyYTJhMzI7XG4gIHBhZGRpbmc6IDI0cHg7XG59XG5cbi5tb2JpbGUtbWVudS1jb250YWluZXIgLm1vYmlsZS1ib3R0b20tY2FyZCBwIHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cblxuLm1vYmlsZS1tZW51LWNvbnRhaW5lciAubW9iaWxlLWJvdHRvbS1jYXJkIC5jdGEge1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IC41cHg7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgLmhlYWRlci1jb250YWluZXIgLm5hdi1tZW51LFxuICAuaGVhZGVyLWNvbnRhaW5lciAuY3RhLXNlY3Rpb24ge1xuICAgIGRpc3BsYXk6IG5vbmU7IC8qIEhpZGUgZGVmYXVsdCBkZXNrdG9wIG1lbnUgb24gdGFibGV0L21vYmlsZSAqL1xuICB9XG5cbiAgLm1haW4taGVhZGVyIC5oYW1idXJnZXItYnRuIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG5cbiAgLmhhbWJ1cmdlci1idG4ub3BlbiAuaGFtYnVyZ2VyLWxpbmU6bnRoLWNoaWxkKDMpIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxufVxuXG4vKiBNb2JpbGUgQWNjb3JkaW9uIE1lbnUgU3R5bGVzICovXG4ubW9iaWxlLW1lbnUtY29udGFpbmVyIC5tb2JpbGUtbmF2LWxpc3Qge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG59XG5cbi5tb2JpbGUtbWVudS1jb250YWluZXIgLm1vYmlsZS1uYXYtaXRlbSB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2IoMjU1LCAyNTUsIDI1NSwgLjA1KTtcbn1cblxuLm1vYmlsZS1tZW51LWNvbnRhaW5lciAubW9iaWxlLW5hdi1oZWFkZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDIwcHggMjRweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC1zaXplOiAyNHB4O1xuICBmb250LXdlaWdodDogMzAwO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIC4zcyBlYXNlO1xufVxuXG4ubW9iaWxlLW1lbnUtY29udGFpbmVyIC5tb2JpbGUtbmF2LWljb24ge1xuICBmb250LXNpemU6IDE2cHg7XG4gIGNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSwgMSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuM3MgZWFzZTtcbn1cblxuLm1vYmlsZS1tZW51LWNvbnRhaW5lciAubW9iaWxlLW5hdi1pdGVtLmFjdGl2ZSAubW9iaWxlLW5hdi1pY29uIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbn1cblxuLm1vYmlsZS1tZW51LWNvbnRhaW5lciAubW9iaWxlLW5hdi1jb250ZW50IHtcbiAgZGlzcGxheTogbm9uZTtcbiAgcGFkZGluZzogMTBweCA0MHB4IDIwcHg7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2IoMjU1LCAyNTUsIDI1NSwgLjEpO1xufVxuXG4ubW9iaWxlLW1lbnUtY29udGFpbmVyIC5tb2JpbGUtc3VibWVudS1ncm91cCB7XG4gIG1hcmdpbi10b3A6IDI0cHg7XG59XG5cbi5tb2JpbGUtbWVudS1jb250YWluZXIgLm1vYmlsZS1zdWJtZW51LWdyb3VwOmZpcnN0LWNoaWxkIHtcbiAgbWFyZ2luLXRvcDogMTBweDtcbn1cblxuLm1vYmlsZS1tZW51LWNvbnRhaW5lciAubW9iaWxlLXN1Ym1lbnUtaGVhZGluZyB7XG4gIGNvbG9yOiAjZmZkMGQ4O1xuICBmb250LXNpemU6IDEycHg7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGxldHRlci1zcGFjaW5nOiAxLjVweDtcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICBmb250LXdlaWdodDogNjAwO1xufVxuXG4ubW9iaWxlLW1lbnUtY29udGFpbmVyIC5tb2JpbGUtc3VibWVudS1saXN0IHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwO1xufVxuXG4ubW9iaWxlLW1lbnUtY29udGFpbmVyIC5tb2JpbGUtc3VibWVudS1saXN0IGxpIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYigyNTUsIDI1NSwgMjU1LCAuMSk7XG59XG5cbi5tb2JpbGUtbWVudS1jb250YWluZXIgLm1vYmlsZS1zdWJtZW51LWxpc3QgbGk6bGFzdC1jaGlsZCB7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7XG59XG5cbi5tb2JpbGUtbWVudS1jb250YWluZXIgLm1vYmlsZS1zdWJtZW51LWxpc3QgYSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAxMnB4IDA7XG4gIGNvbG9yOiAjZmZmO1xuICBmb250LXNpemU6IDE4cHg7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgdHJhbnNpdGlvbjogY29sb3IgLjNzIGVhc2U7XG59XG5cbi8qIGhvdmVyOiBob3ZlciBvbmx5IOKAlCBvbiB0b3VjaCAoaVBob25lL1NhZmFyaSkgOmhvdmVyIHN0aWNrcyB0byB3aGF0ZXZlciBzaXRzXG4gICB1bmRlciB0aGUgZmluZ2VyIGFuZCwgYXMgdGhlIGFjY29yZGlvbiBzbGlkZXMgb3BlbiB1bmRlciBhIHJlc3RpbmcgZmluZ2VydGlwLFxuICAgd2Fsa3MgZG93biB0aGUgbGlzdCBvbmUgbGluayBhdCBhIHRpbWUuIFdpdGggYHRyYW5zaXRpb246IGNvbG9yYCBvbiB0aGUgYmFzZVxuICAgcnVsZSB0aGF0IHJlYWRzIGFzIGVhY2ggb3B0aW9uIGZsYXNoaW5nIHJlZCBvbiBpdHMgb3duLCB1bnByb21wdGVkLiBEZXNrdG9wXG4gICBwb2ludGVycyBzdGlsbCBnZXQgdGhlIGhvdmVyIGNvbG91ci4gKi9cbkBtZWRpYSAoaG92ZXI6IGhvdmVyKSB7XG4gIC5tb2JpbGUtbWVudS1jb250YWluZXIgLm1vYmlsZS1zdWJtZW51LWxpc3QgYTpob3ZlciB7XG4gICAgY29sb3I6IHZhcigtLWFjY2VudC1yZWQpO1xuICB9XG59XG5cbi8qIFRhcCBmZWVkYmFjay4gVGhlIGdsb2JhbCAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IgaXMgb2ZmIChjc3MvY3VzdG9tLmNzcyksXG4gICBzbyBhIHRhcCBvbiBhIHN1Ym1lbnUgb3B0aW9uIG90aGVyd2lzZSByZWdpc3RlcnMgd2l0aCBubyB2aXN1YWwgY29uZmlybWF0aW9uXG4gICBUaGUgb3B0aW9uIHR1cm5zIHJlZCBvbiBwcmVzc1xuICAgKDphY3RpdmUpIGFuZCBzdGF5cyByZWQgdW50aWwgdGhlIG5leHQgcGFnZSBsb2FkcyAoLmlzLXNlbGVjdGVkLCBzdGFtcGVkIGJ5XG4gICBqcy9zaGFyZWQuanMpIHNvIHRoZSB2aXNpdG9yIGNhbiBzZWUgd2hpY2ggaXRlbSB0aGV5IHBpY2tlZC4gTm8gaGlnaGxpZ2h0XG4gICBib3g7IGFjY29yZGlvbiBoZWFkZXIgcm93cyBhcmUgbGVmdCBhcy1pcy4gKi9cbi5tb2JpbGUtbWVudS1jb250YWluZXIgLm1vYmlsZS1zdWJtZW51LWxpc3QgYTphY3RpdmUsXG4ubW9iaWxlLW1lbnUtY29udGFpbmVyIC5tb2JpbGUtc3VibWVudS1saXN0IGEuaXMtc2VsZWN0ZWQge1xuICBjb2xvcjogdmFyKC0tYWNjZW50LXJlZCk7XG5cbiAgLyogU25hcCBzdHJhaWdodCB0byBjcmltc29uIOKAlCB0aGUgYmFzZSBydWxlJ3MgYHRyYW5zaXRpb246IGNvbG9yIDAuM3NgIHdhc1xuICAgICBhbmltYXRpbmcgd2hpdGUg4oaSIHJlZCB0aHJvdWdoIGl0cyBwYWxlIG1pZHBvaW50LCBhbmQgb24gYSBxdWljayB0YXAgK1xuICAgICBwYWdlIGNoYW5nZSB0aGF0IHBpbmtpc2ggaW4tYmV0d2VlbiBmcmFtZSB3YXMgYWxsIHRoZSB2aXNpdG9yIHNhdyAoXCJsb29rc1xuICAgICBwZWFjaFwiKS4gSW5zdGFudCBvbjsgdGhlIGZhZGUtYmFjayB0byB3aGl0ZSB3aGVuIHRoZSBjbGFzcyBjbGVhcnMgc3RpbGxcbiAgICAgcmlkZXMgdGhlIGJhc2UgdHJhbnNpdGlvbi4gKi9cbiAgdHJhbnNpdGlvbjogbm9uZTtcbn1cblxuLyogTGFuZ3VhZ2UgKGhpZGUgb2xkIHRvZ2dsZSBhdCBtb2JpbGUg4oCUIGxhbmctcGlja2VyIGlzIGFsd2F5cyB2aXNpYmxlKSAqL1xuLm1haW4taGVhZGVyIC5sYW5nLXRvZ2dsZSxcbi5tb2JpbGUtbWVudS1jb250YWluZXIgLmxhbmctdG9nZ2xlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLyogRXhwb25hIEV4cG9ydCBNb2RhbCBTdHlsZXMgKi9cblxuLyogT3Blbi9jbG9zZSBpcyBkcml2ZW4gZW50aXJlbHkgYnkgdGhlIC5pcy1vcGVuIGNsYXNzIOKAlCBubyBkaXNwbGF5IHRvZ2dsaW5nIGluXG4gICBKUywgc28gcmVtb3ZpbmcgdGhlIGNsYXNzIHJlcGxheXMgdGhlIHNhbWUgZGlzc29sdmUvc2NhbGUgaW4gcmV2ZXJzZS5cbiAgIGB2aXNpYmlsaXR5YCBpcyB3aGF0IGtlZXBzIHRoZSBjbG9zZWQgbW9kYWwgaW5lcnQ7IGl0IGZsaXBzIGluc3RhbnRseSBvbiBvcGVuXG4gICBidXQgd2FpdHMgb3V0IHRoZSB0cmFuc2l0aW9uIG9uIGNsb3NlIHNvIHRoZSBleGl0IHN0YXlzIHZpc2libGUuICovXG4uZXhwb25hLWV4cG9ydC1tb2RhbCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgaW5zZXQ6IDA7XG4gIHotaW5kZXg6IDIwMDE7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwYWRkaW5nOiAxLjVyZW07XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHRyYW5zaXRpb246IHZpc2liaWxpdHkgMHMgbGluZWFyIC40NXM7XG59XG4uZXhwb25hLWV4cG9ydC1tb2RhbC5pcy1vcGVuIHtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gIHRyYW5zaXRpb246IHZpc2liaWxpdHkgMHMgbGluZWFyIDBzO1xufVxuLmV4cG9uYS1leHBvcnQtbW9kYWxfX2JhY2tkcm9wIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldDogMDtcbiAgYmFja2dyb3VuZDogcmdiYSg0NywgNDcsIDU3LCAuNzUpO1xuXG4gIC8qIEZyb3N0cyB0aGUgcGFnZSBiZWhpbmQgdGhlIG1vZGFsIHNvIGJvZHkgY29weSB1bmRlcm5lYXRoIGlzIHVucmVhZGFibGUuXG4gICAgIEJsdXJzIGluIGFsb25nc2lkZSB0aGUgdGludCByYXRoZXIgdGhhbiBzbmFwcGluZyBvbi4gKi9cbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDApIHNhdHVyYXRlKDEwMCUpO1xuICAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cigwKSBzYXR1cmF0ZSgxMDAlKTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuNDVzIGN1YmljLWJlemllciguMTYsIDEsIC4zLCAxKSxcbiAgICBiYWNrZHJvcC1maWx0ZXIgLjQ1cyBjdWJpYy1iZXppZXIoLjE2LCAxLCAuMywgMSksXG4gICAgLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXIgLjQ1cyBjdWJpYy1iZXppZXIoLjE2LCAxLCAuMywgMSk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgb3BhY2l0eTogMDtcbn1cbi5leHBvbmEtZXhwb3J0LW1vZGFsLmlzLW9wZW4gLmV4cG9uYS1leHBvcnQtbW9kYWxfX2JhY2tkcm9wIHtcbiAgb3BhY2l0eTogMTtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDVweCkgc2F0dXJhdGUoMTIwJSk7XG4gIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDVweCkgc2F0dXJhdGUoMTIwJSk7XG59XG4uZXhwb25hLWV4cG9ydC1tb2RhbF9fZGlhbG9nIHtcbiAgY2xpcC1wYXRoOiBwb2x5Z29uKDI0cHggMCwgMTAwJSAwLCAxMDAlIGNhbGMoMTAwJSAtIDI0cHgpLCBjYWxjKDEwMCUgLSAyNHB4KSAxMDAlLCAwIDEwMCUsIDAgMjRweCk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMzIuNXJlbTtcbiAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDNyZW0pO1xuICBwYWRkaW5nOiAzcmVtO1xuICBiYWNrZ3JvdW5kOiAjZmZmOWVkO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBvcGFjaXR5OiAwO1xuXG4gIC8qIENvbGxhcHNlZCB0byBhIHNpbmdsZSBwb2ludCBhdCB0aGUgY2VudHJlIG9mIHRoZSB2aWV3cG9ydCDigJQgb3BlbmluZyBncm93c1xuICAgICBpdCBvdXQgZnJvbSB0aGF0IHBvaW50LCBjbG9zaW5nIHN3YWxsb3dzIGl0IGJhY2sgaW50byBpdC4gVGhlIGJsdXIgbWFrZXNcbiAgICAgaXQgcmVhZCBhcyBhIGRpc3NvbHZlIHJhdGhlciB0aGFuIGEgcGxhaW4gcmVzaXplLlxuXG4gICAgIEVhc2luZyBpcyBkZWNsYXJlZCBwZXIgZGlyZWN0aW9uOiB0aGlzIHJ1bGUgaXMgd2hhdCBwbGF5cyBvbiBDTE9TRSAoYVxuICAgICBxdWljayBhY2NlbGVyYXRpbmcgY29sbGFwc2UpLCAuaXMtb3BlbiBiZWxvdyBpcyB3aGF0IHBsYXlzIG9uIE9QRU4uIEFcbiAgICAgc3ByaW5neSBjdXJ2ZSBpcyBvbmx5IHNhZmUgb24gdGhlIHdheSBvdXQg4oCUIHJldmVyc2luZyBhbiBvdmVyc2hvb3QgaW50b1xuICAgICBzY2FsZSAwIHdvdWxkIHB1c2ggaXQgbmVnYXRpdmUgYW5kIGZsaXAgdGhlIGRpYWxvZyBpbnNpZGUgb3V0LiAqL1xuICB0cmFuc2Zvcm06IHNjYWxlM2QoMCwgMCwgMSk7XG4gIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7XG4gIGZpbHRlcjogYmx1cigxMnB4KTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuNHMgY3ViaWMtYmV6aWVyKC40LCAwLCAxLCAxKSxcbiAgICB0cmFuc2Zvcm0gLjRzIGN1YmljLWJlemllciguNSwgMCwgLjc1LCAwKSxcbiAgICBmaWx0ZXIgLjRzIGN1YmljLWJlemllciguNCwgMCwgMSwgMSk7XG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm0sIG9wYWNpdHksIGZpbHRlcjtcbn1cbi5leHBvbmEtZXhwb3J0LW1vZGFsLmlzLW9wZW4gLmV4cG9uYS1leHBvcnQtbW9kYWxfX2RpYWxvZyB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogc2NhbGUzZCgxLCAxLCAxKTtcbiAgZmlsdGVyOiBibHVyKDApO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IC40NXMgY3ViaWMtYmV6aWVyKC4xNiwgMSwgLjMsIDEpLFxuICAgIHRyYW5zZm9ybSAuNTVzIGN1YmljLWJlemllciguMzQsIDEuNTYsIC42NCwgMSksXG4gICAgZmlsdGVyIC40NXMgY3ViaWMtYmV6aWVyKC4xNiwgMSwgLjMsIDEpO1xufVxuLmV4cG9uYS1leHBvcnQtbW9kYWxfX2Nsb3NlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDFyZW07XG4gIHJpZ2h0OiAxcmVtO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgd2lkdGg6IDJyZW07XG4gIGhlaWdodDogMnJlbTtcbiAgcGFkZGluZzogMDtcbiAgY29sb3I6ICMzNzM3NDI7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3BhY2l0eTogLjc7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMjVzIGVhc2U7XG59XG4uZXhwb25hLWV4cG9ydC1tb2RhbF9fY2xvc2UgLmliLWljb24ge1xuICBmaWx0ZXI6IGJyaWdodG5lc3MoLjI0KTtcbn1cbi5leHBvbmEtZXhwb3J0LW1vZGFsX19jbG9zZTpob3ZlciwgLmV4cG9uYS1leHBvcnQtbW9kYWxfX2Nsb3NlOmZvY3VzLXZpc2libGUge1xuICBvcGFjaXR5OiAxO1xufVxuLmV4cG9uYS1leHBvcnQtbW9kYWwgI2V4cG9uYUV4cG9ydFRpdGxlIHtcbiAgZm9udC1mYW1pbHk6IFwiTGV4ZW5kXCIsIC1hcHBsZS1zeXN0ZW0sIGJsaW5rbWFjc3lzdGVtZm9udCwgXCJTZWdvZSBVSVwiLCByb2JvdG8sIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtc2l6ZTogbWF4KDEuNXJlbSwgMTJweCk7XG4gIGxpbmUtaGVpZ2h0OiAxLjQxNjY2NjY2Njc7XG4gIGxldHRlci1zcGFjaW5nOiAtLjA0ZW07XG4gIG1hcmdpbjogMCAwIC41cmVtO1xuICBwYWRkaW5nLXJpZ2h0OiAyLjVyZW07XG4gIGNvbG9yOiAjMzczNzQyO1xufVxuLmV4cG9uYS1leHBvcnQtbW9kYWwgcCB7XG4gIGZvbnQtZmFtaWx5OiBcIkxleGVuZFwiLCAtYXBwbGUtc3lzdGVtLCBibGlua21hY3N5c3RlbWZvbnQsIFwiU2Vnb2UgVUlcIiwgcm9ib3RvLCBzYW5zLXNlcmlmO1xuICBmb250LXdlaWdodDogMzAwO1xuICBmb250LXNpemU6IG1heCgxcmVtLCAxMnB4KTtcbiAgbGluZS1oZWlnaHQ6IDEuNjI1O1xuICBsZXR0ZXItc3BhY2luZzogMDtcbiAgbWFyZ2luOiAwO1xuICBjb2xvcjogIzY3Njc3NTtcbn1cbi5leHBvbmEtZXhwb3J0LW1vZGFsX19sYWJlbCB7XG4gIGZvbnQtZmFtaWx5OiBcIkxleGVuZFwiLCAtYXBwbGUtc3lzdGVtLCBibGlua21hY3N5c3RlbWZvbnQsIFwiU2Vnb2UgVUlcIiwgcm9ib3RvLCBzYW5zLXNlcmlmO1xuICBmb250LXdlaWdodDogMzAwO1xuICBmb250LXNpemU6IG1heCgxcmVtLCAxMnB4KTtcbiAgbGluZS1oZWlnaHQ6IDEuNjI1O1xuICBsZXR0ZXItc3BhY2luZzogMDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogMS41cmVtIDAgLjVyZW07XG4gIGNvbG9yOiAjMzczNzQyO1xufVxuLmV4cG9uYS1leHBvcnQtbW9kYWxfX3JlcXVpcmVkIHtcbiAgY29sb3I6ICMzNzM3NDI7XG59XG4uZXhwb25hLWV4cG9ydC1tb2RhbCAjZXhwb25hRXhwb3J0RW1haWwge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMy41cmVtO1xuICBtYXJnaW46IDAgMCAycmVtO1xuICBwYWRkaW5nOiAxcmVtO1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBib3JkZXI6IC42M3B4IHNvbGlkICNlNmU2ZWQ7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGZvbnQtZmFtaWx5OiBcIkxleGVuZFwiLCAtYXBwbGUtc3lzdGVtLCBibGlua21hY3N5c3RlbWZvbnQsIFwiU2Vnb2UgVUlcIiwgcm9ib3RvLCBzYW5zLXNlcmlmO1xuICBmb250LXdlaWdodDogMzAwO1xuICBmb250LXNpemU6IG1heCgxcmVtLCAxMnB4KTtcbiAgbGluZS1oZWlnaHQ6IDEuNjI1O1xuICBsZXR0ZXItc3BhY2luZzogMDtcbiAgY29sb3I6ICMzNzM3NDI7XG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAuMjVzIGVhc2U7XG59XG4uZXhwb25hLWV4cG9ydC1tb2RhbCAjZXhwb25hRXhwb3J0RW1haWw6OnBsYWNlaG9sZGVyIHtcbiAgY29sb3I6ICM2NzY3NzU7XG59XG4uZXhwb25hLWV4cG9ydC1tb2RhbCAjZXhwb25hRXhwb3J0RW1haWw6Zm9jdXMge1xuICBib3JkZXItY29sb3I6ICMzNzM3NDI7XG59XG4uZXhwb25hLWV4cG9ydC1tb2RhbF9fYWN0aW9ucyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMS41cmVtO1xufVxuLmV4cG9uYS1leHBvcnQtbW9kYWxfX2FjdGlvbnMgLmNlbGwge1xuICBmbGV4OiAwIDAgYXV0bztcbn1cbi5leHBvbmEtZXhwb3J0LW1vZGFsX19hY3Rpb25zIC5pYi1idG4tLXByaW1hcnkge1xuICBtaW4td2lkdGg6IDguNzVyZW07XG59XG4uZXhwb25hLWV4cG9ydC1tb2RhbCAjZXhwb25hRXhwb3J0TG9hZGluZ1N0YXRlLFxuLmV4cG9uYS1leHBvcnQtbW9kYWwgI2V4cG9uYUV4cG9ydFN1Y2Nlc3NTdGF0ZSxcbi5leHBvbmEtZXhwb3J0LW1vZGFsICNleHBvbmFFeHBvcnRFcnJvclN0YXRlIHtcbiAgcGFkZGluZzogMS41cmVtIDA7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5leHBvbmEtZXhwb3J0LW1vZGFsICNleHBvbmFFeHBvcnRMb2FkaW5nU3RhdGUgcCxcbi5leHBvbmEtZXhwb3J0LW1vZGFsICNleHBvbmFFeHBvcnRTdWNjZXNzU3RhdGUgcCxcbi5leHBvbmEtZXhwb3J0LW1vZGFsICNleHBvbmFFeHBvcnRFcnJvclN0YXRlIHAge1xuICBmb250LWZhbWlseTogXCJMZXhlbmRcIiwgLWFwcGxlLXN5c3RlbSwgYmxpbmttYWNzeXN0ZW1mb250LCBcIlNlZ29lIFVJXCIsIHJvYm90bywgc2Fucy1zZXJpZjtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgZm9udC1zaXplOiBtYXgoMS4xMjVyZW0sIDEycHgpO1xuICBsaW5lLWhlaWdodDogMS42NjY2NjY2NjY3O1xuICBsZXR0ZXItc3BhY2luZzogMDtcbiAgY29sb3I6ICMzNzM3NDI7XG59XG4uZXhwb25hLWV4cG9ydC1tb2RhbCAjZXhwb25hRXhwb3J0RXJyb3JNc2cge1xuICBjb2xvcjogI2VhMWIzZDtcbn1cbi5leHBvbmEtZXhwb3J0LW1vZGFsICNleHBvbmFFeHBvcnRSZXRyeSB7XG4gIG1hcmdpbi10b3A6IDFyZW07XG4gIHBhZGRpbmc6IDA7XG4gIGZvbnQtZmFtaWx5OiBcIkxleGVuZFwiLCAtYXBwbGUtc3lzdGVtLCBibGlua21hY3N5c3RlbWZvbnQsIFwiU2Vnb2UgVUlcIiwgcm9ib3RvLCBzYW5zLXNlcmlmO1xuICBmb250LXdlaWdodDogNjAwO1xuICBmb250LXNpemU6IG1heCguODc1cmVtLCAxMnB4KTtcbiAgbGluZS1oZWlnaHQ6IDEuNTcxNDI4NTcxNDtcbiAgbGV0dGVyLXNwYWNpbmc6IDA7XG4gIGNvbG9yOiAjZWExYjNkO1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBib3JkZXI6IG5vbmU7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICB0ZXh0LXVuZGVybGluZS1vZmZzZXQ6IDRweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gIC5leHBvbmEtZXhwb3J0LW1vZGFsIHtcbiAgICBwYWRkaW5nOiAxcmVtO1xuICB9XG4gIC5leHBvbmEtZXhwb3J0LW1vZGFsX19kaWFsb2cge1xuICAgIGNsaXAtcGF0aDogcG9seWdvbigyMHB4IDAsIDEwMCUgMCwgMTAwJSBjYWxjKDEwMCUgLSAyMHB4KSwgY2FsYygxMDAlIC0gMjBweCkgMTAwJSwgMCAxMDAlLCAwIDIwcHgpO1xuICAgIHBhZGRpbmc6IDIuNXJlbSAxLjVyZW0gMnJlbTtcbiAgfVxuICAuZXhwb25hLWV4cG9ydC1tb2RhbCAjZXhwb25hRXhwb3J0VGl0bGUge1xuICAgIGZvbnQtZmFtaWx5OiBcIkxleGVuZFwiLCAtYXBwbGUtc3lzdGVtLCBibGlua21hY3N5c3RlbWZvbnQsIFwiU2Vnb2UgVUlcIiwgcm9ib3RvLCBzYW5zLXNlcmlmO1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgZm9udC1zaXplOiBtYXgoMS4yNXJlbSwgMTJweCk7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICBsZXR0ZXItc3BhY2luZzogMDtcbiAgfVxuICAuZXhwb25hLWV4cG9ydC1tb2RhbF9fbGFiZWwge1xuICAgIG1hcmdpbi10b3A6IDFyZW07XG4gIH1cbiAgLmV4cG9uYS1leHBvcnQtbW9kYWwgI2V4cG9uYUV4cG9ydEVtYWlsIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG4gIH1cbiAgLmV4cG9uYS1leHBvcnQtbW9kYWxfX2FjdGlvbnMge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTtcbiAgICBnYXA6IDFyZW07XG4gIH1cbiAgLmV4cG9uYS1leHBvcnQtbW9kYWxfX2FjdGlvbnMgLmNlbGwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbiAgLmV4cG9uYS1leHBvcnQtbW9kYWxfX2FjdGlvbnMgLmliLWJ0bi0tcHJpbWFyeSxcbiAgLmV4cG9uYS1leHBvcnQtbW9kYWxfX2FjdGlvbnMgLmliLWJ0bi0tcHJpbWFyeSAuaWItYnRuX19pbm5lciB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbn0iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDEyLiBFeHBvbmEgRm9sZFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uZXhwb25hLWZvb3Rlci1wYXJlbnQuY29tYmluZWQtZm9sZCB7XG4gIGhlaWdodDogYXV0bztcbiAgbWluLWhlaWdodDogMTAwdmg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuICBwYWRkaW5nLXRvcDogMDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uZXhwb25hLWZvb3Rlci1wYXJlbnQgLmV4cG9uYS1zZWN0aW9uIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCAjMjAyMTJhIDAlLCAjMjIyNDJhIDEwMCUpO1xuICBjb2xvcjogI2ZmZjtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4vKiAuZXhwb25hLWZvb3Rlci1wYXJlbnQgLmV4cG9uYS1zZWN0aW9uOjpiZWZvcmUge1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0OiAwO1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vYXNzZXRzL2ltYWdlcy9ncmFpbi5wbmcpO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICBtaXgtYmxlbmQtbW9kZTogbm9ybWFsO1xuICBvcGFjaXR5OiAxO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMjtcbn0gKi9cbi5leHBvbmEtZm9vdGVyLXBhcmVudCAuZXhwb25hLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmV4cG9uYS1mb290ZXItcGFyZW50IC5leHBvbmEtY29udGVudC1sZWZ0IHtcbiAgZmxleDogMTtcbiAgbWF4LXdpZHRoOiA3NTJweDtcbiAgcGFkZGluZy1yaWdodDogNDBweDtcbiAgei1pbmRleDogMTtcbn1cblxuLmV4cG9uYS1mb290ZXItcGFyZW50IC5leHBvbmEtY29udGVudC1yaWdodCB7XG5cbiAgLyogZmxleDogMTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgaGVpZ2h0OiA4MCU7XG4gICovXG4gIGhlaWdodDogNjI1cHg7XG5cbiAgLyogcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICBib3R0b206IC0yMjBweDsgKi9cbn1cblxuLmV4cG9uYS1mb290ZXItcGFyZW50IC5leHBvbmEtdmlkZW8ge1xuXG4gIC8qIHdpZHRoOiAxMDAlOyAqL1xuXG4gIC8qIG1heC13aWR0aDogNTAwcHg7ICAqL1xuXG4gIC8qIGhlaWdodDogYXV0bztcbiAgb2JqZWN0LWZpdDogY29udGFpbjsgKi9cblxuICAvKiBib3JkZXItcmFkaXVzOiAyMHB4OyAqL1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IC00OXB4O1xuICBib3JkZXI6IDA7XG4gIG91dGxpbmU6IDA7XG5cbiAgLyogRmFkZXMgdGhlIGxlZnQvcmlnaHQgZWRnZXMgdG8gdHJhbnNwYXJlbnQgc28gdGhlIHNlY3Rpb24ncyBkYXJrXG4gICAgIGJhY2tncm91bmQgc2hvd3MgdGhyb3VnaCBpbnN0ZWFkIG9mIGEgaGFyZCB2aWRlby1yZWN0YW5nbGUgc2VhbS4gKi9cbiAgbWFzay1pbWFnZTogbGluZWFyLWdyYWRpZW50KFxuICAgIHRvIHJpZ2h0LFxuICAgIHRyYW5zcGFyZW50IDAlLFxuICAgICMwMDAgMTIlLFxuICAgICMwMDAgODglLFxuICAgIHRyYW5zcGFyZW50IDEwMCVcbiAgKTtcbiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbn1cblxuLmV4cG9uYS1mb290ZXItcGFyZW50IC5leHBvbmEtdGl0bGUge1xuICBmb250LXNpemU6IDU5cHg7XG4gIGZvbnQtd2VpZ2h0OiAyMDA7XG4gIG1hcmdpbi1ib3R0b206IDMycHg7XG4gIGxpbmUtaGVpZ2h0OiA3OHB4O1xuICBsZXR0ZXItc3BhY2luZzogLTIuMzZweDtcbn1cblxuLmV4cG9uYS1mb290ZXItcGFyZW50IC5leHBvbmEtdGl0bGUgc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbn1cblxuLmV4cG9uYS1mb290ZXItcGFyZW50IC5leHBvbmEtaW5wdXQtd3JhcHBlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY5ZWQ7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDAgMTZweCAwIDA7XG59XG5cbi5leHBvbmEtZm9vdGVyLXBhcmVudCAuZXhwb25hLWlucHV0IHtcbiAgZmxleDogMTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogbm9uZTtcbiAgZm9udC1zaXplOiAyMHB4O1xuICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcbiAgcGFkZGluZzogMTVweCAxNnB4O1xuICBsaW5lLWhlaWdodDogMzRweDtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgb3V0bGluZTogbm9uZTtcbn1cblxuLmV4cG9uYS1mb290ZXItcGFyZW50IC5leHBvbmEtaW5wdXQ6OnBsYWNlaG9sZGVyIHtcbiAgY29sb3I6ICMzNzM3NDI7XG59XG5cbi5leHBvbmEtZm9vdGVyLXBhcmVudCAuZXhwb25hLXN1Ym1pdCB7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmU7XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtcmVkKTtcbiAgZm9udC1zaXplOiAyMHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHBhZGRpbmc6IDEwcHg7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuM3MgZWFzZTtcbn1cblxuLmV4cG9uYS1mb290ZXItcGFyZW50IC5leHBvbmEtc3VibWl0OmhvdmVyIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xufVxuXG4uZXhwb25hLWZvb3Rlci1wYXJlbnQgLmV4cG9uYS1pbnB1dC1ib3JkZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgaGVpZ2h0OiA0cHg7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICMyODRjYmEgMCUsICNlYTFiM2QgMTAwJSk7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgMTMuIEZvb3RlciBGb2xkXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5leHBvbmEtZm9vdGVyLXBhcmVudCAuc2l0ZS1mb290ZXIge1xuICB3aWR0aDogMTAwJTtcblxuICAvKiBXYXMgIzM3Mzc0MiAodGhlIGJvZHktdGV4dCBjaGFyY29hbCwgLS10ZXh0LXByaW1hcnkpIOKAlCBhIHZpc2libHkgbGlnaHRlcixcbiAgICAgbW9yZSBwdXJwbGUgZ3JheSB0aGFuIC5leHBvbmEtc2VjdGlvbiBkaXJlY3RseSBhYm92ZSBpdCAoIzIwMjEyYSBmYW1pbHkpLFxuICAgICBwcm9kdWNpbmcgYSBzZWFtIHdoZXJlIHRoZSBmb2xkIGNoYW5nZXMgY29sb3IuICMyMDIxMmEgbWF0Y2hlcyB0aGF0XG4gICAgIHNlY3Rpb24gYW5kIGlzIHRoZSBcImRlZXBlc3QgZGFyaywgdXNlZCBpbiBmb290ZXJcIiB0b25lIGRvY3VtZW50ZWQgaW5cbiAgICAgQ0xBVURFLm1kJ3MgY29sb3IgdG9rZW5zLiAqL1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjAyMTJhO1xuICBjb2xvcjogI2U2ZTZlZDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZmxleDogMTtcbiAgcGFkZGluZzogMDtcbiAgdHJhbnNpdGlvbjpcbiAgICBwYWRkaW5nIC41cyBlYXNlLFxuICAgIGJhY2tncm91bmQtY29sb3IgLjVzIGVhc2U7XG59XG5cbi5leHBvbmEtZm9vdGVyLXBhcmVudCAuc2l0ZS1mb290ZXI6OmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldDogMDtcblxuICAvKiBGaXhlZCAyNTZweCB0aWxlLCBOT1QgZ3JhaW4ucG5nICsgYGNvdmVyYC4gYGNvdmVyYCBzY2FsZXMgb25lIGNvcHkgb2YgdGhlXG4gICAgIGltYWdlIHRvIHRoZSBib3gsIHNvIGV2ZXJ5IHRpbWUgdGhlIGZvb3RlcidzIGhlaWdodCBjaGFuZ2VzIOKAlCBhIG1vYmlsZVxuICAgICBhY2NvcmRpb24gcm93IG9wZW5pbmcvY2xvc2luZyDigJQgdGhlIGdyYWluIHJlc2NhbGVzIGFuZCB2aXNpYmx5IGRyaWZ0cy5cbiAgICAgQSBuYXRpdmUtc2l6ZSByZXBlYXRpbmcgdGlsZSBpcyBwaXhlbC1sb2NrZWQgdG8gdGhlIHRvcC1sZWZ0IGNvcm5lciwgc28gaXRcbiAgICAgaG9sZHMgcGVyZmVjdGx5IHN0aWxsIHdoaWxlIHRoZSBmb290ZXIgZ3Jvd3MuIFNhbWUgc3dhcCwgc2FtZSByZWFzb24sIGFzXG4gICAgIC5zbi1jb250ZW50LXNsaWRlcl9fc2xpZGU6OmFmdGVyIGFuZCB0aGUgb3RoZXIgZ3JhaW4tdGlsZSBzZWN0aW9ucy4gKi9cbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vLi4vLi4vc3RhdGljL2Fzc2V0cy9pbWFnZXMvbGF0ZXN0L2dyYWluLXRpbGUucG5nXCIpO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXNpemU6IGF1dG87XG4gIGJhY2tncm91bmQtcG9zaXRpb246IHRvcCBsZWZ0O1xuICBtaXgtYmxlbmQtbW9kZTogbm9ybWFsO1xuICBvcGFjaXR5OiAxO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMjtcbn1cblxuLyogc2Nyb2xsLWVuZCBcIm9wZW4gdXBcIiBlZmZlY3QgaXMgZGVza3RvcC1vbmx5OyBuZXZlciBhcHBsaWVzIG9uIG1vYmlsZS90YWJsZXQgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI1cHgpIHtcbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5zaXRlLWZvb3Rlci5zY3JvbGwtZW5kIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDQwcHggIWltcG9ydGFudDtcbiAgICBwYWRkaW5nLXJpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzdjMjIzNSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5zaXRlLWZvb3Rlci5zY3JvbGwtZW5kIC5mb290ZXItYm90dG9tLXJlZCB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2l0aW9uOlxuICAgICAgb3BhY2l0eSAuNXMgZWFzZSxcbiAgICAgIHZpc2liaWxpdHkgLjVzIGVhc2U7XG4gICAgbWFyZ2luLWxlZnQ6IC00MHB4O1xuICAgIG1hcmdpbi1yaWdodDogLTQwcHg7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSArIDgwcHgpO1xuICB9XG59XG5cbi5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLXRvcCB7XG4gIGZsZXg6IDE7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNzM3NDI7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmV4cG9uYS1mb290ZXItcGFyZW50IC5mb290ZXItY29udGFpbmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmctdG9wOiA0MHB4O1xuICBwYWRkaW5nLWJvdHRvbTogMTEycHg7XG59XG5cbi5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLWxpbmtzLWdyaWQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDMwcHg7XG4gIG1hcmdpbi1ib3R0b206IDExMnB4O1xuICBwYWRkaW5nOiA2NHB4IDEycHg7XG59XG5cbi8qIERlc2t0b3A6IGFjY29yZGlvbiBoZWFkZXIgaXMgbGF5b3V0LXRyYW5zcGFyZW50OyBpY29uIGhpZGRlbiAqL1xuLmV4cG9uYS1mb290ZXItcGFyZW50IC5mb290ZXItYWNjb3JkaW9uLWhlYWRlciB7XG4gIGRpc3BsYXk6IGNvbnRlbnRzO1xufVxuXG4uZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci1hY2NvcmRpb24taWNvbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLXJvdyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci1sYWJlbCB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG59XG5cbi5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLWRvdHMge1xuICBmbGV4OiAxOyAvKiBsZWFkZXIgYWJzb3JicyB0aGUgbGFiZWwtd2lkdGggdmFyaWF0aW9uIGJldHdlZW4gcm93cyAqL1xuICBoZWlnaHQ6IDNweDtcbiAgbWFyZ2luOiAxMnB4IDIwcHggMTJweCAwO1xuICBiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KFxuICAgIHRvIHJpZ2h0LFxuICAgICNmZmY5ZWQgMCxcbiAgICAjZmZmOWVkIDNweCxcbiAgICB0cmFuc3BhcmVudCAzcHgsXG4gICAgdHJhbnNwYXJlbnQgMTRweFxuICApO1xuICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgM3B4O1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xufVxuXG4uZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci1saW5rcyB7XG4gIGZsZXg6IDE7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgY29sb3I6ICNmZmY7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGdhcDogOHB4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG59XG5cbi5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLWxpbmtzIGEge1xuICB0cmFuc2l0aW9uOiBjb2xvciAuM3M7XG4gIGNvbG9yOiAjZmZmO1xufVxuXG4vKiBob3ZlcjogaG92ZXIgb25seSDigJQgb24gdG91Y2ggKGlQaG9uZS9TYWZhcmkpIDpob3ZlciBzdGlja3MgdG8gd2hhdGV2ZXIgc2l0c1xuICAgdW5kZXIgdGhlIGZpbmdlciBhbmQsIGFzIHRoZSBhY2NvcmRpb24gc2xpZGVzIG9wZW4gdW5kZXIgYSByZXN0aW5nIGZpbmdlcnRpcCxcbiAgIHdhbGtzIGRvd24gdGhlIGxpbmsgbGlzdCBvbmUgaXRlbSBhdCBhIHRpbWUsIGVhY2ggZmxhc2hpbmcgcmVkIHVucHJvbXB0ZWRcbiAgIChzYW1lIGJ1ZyBmaXhlZCBpbiB0aGUgaGVhZGVyIG1vYmlsZSBtZW51KS4gRGVza3RvcCBwb2ludGVycyBrZWVwIHRoZSBob3ZlclxuICAgY29sb3VyLiAqL1xuQG1lZGlhIChob3ZlcjogaG92ZXIpIHtcbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5mb290ZXItbGlua3MgYTpob3ZlciB7XG4gICAgY29sb3I6IHZhcigtLWFjY2VudC1yZWQpO1xuICB9XG59XG5cbi8qIFRhcCBmZWVkYmFjayAobW9iaWxlIGFjY29yZGlvbikuIFRoZSBnbG9iYWwgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIGlzXG4gICBvZmYgKGNzcy9jdXN0b20uY3NzKSwgc28gYSB0YXAgb24gYSBmb290ZXIgbGluayBvdGhlcndpc2UgcmVnaXN0ZXJzIHdpdGggbm9cbiAgIHZpc3VhbCBjb25maXJtYXRpb24uIFRoZSBsaW5rXG4gICB0dXJucyByZWQgb24gcHJlc3MgKDphY3RpdmUpIGFuZCBzdGF5cyByZWQgdW50aWwgdGhlIG5leHQgcGFnZSBsb2Fkc1xuICAgKC5pcy1zZWxlY3RlZCwgc3RhbXBlZCBieSBqcy9zaGFyZWQuanMpLiBObyBoaWdobGlnaHQgYm94OyBhY2NvcmRpb24gaGVhZGVyXG4gICByb3dzIGFyZSBsZWZ0IGFzLWlzLiAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAuZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci1saW5rcyBhOmFjdGl2ZSxcbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5mb290ZXItbGlua3MgYS5pcy1zZWxlY3RlZCB7XG4gICAgY29sb3I6IHZhcigtLWFjY2VudC1yZWQpO1xuXG4gICAgLyogU25hcCBzdHJhaWdodCB0byBjcmltc29uIOKAlCB0aGUgYmFzZSBydWxlJ3MgYHRyYW5zaXRpb246IGNvbG9yIDAuM3NgIHdhc1xuICAgICAgIGFuaW1hdGluZyB3aGl0ZSDihpIgcmVkIHRocm91Z2ggaXRzIHBhbGUgbWlkcG9pbnQsIGFuZCBvbiBhIHF1aWNrIHRhcCArXG4gICAgICAgcGFnZSBjaGFuZ2UgdGhhdCBwaW5raXNoIGZyYW1lIHdhcyBhbGwgdGhlIHZpc2l0b3Igc2F3IChcImxvb2tzIHBlYWNoXCIpLlxuICAgICAgIEluc3RhbnQgb247IHRoZSBmYWRlLWJhY2sgd2hlbiB0aGUgY2xhc3MgY2xlYXJzIHN0aWxsIHJpZGVzIHRoZSBiYXNlXG4gICAgICAgdHJhbnNpdGlvbi4gKi9cbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICB9XG59XG5cbi5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLWxpbmtzIC5zZXAge1xuICBjb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUsIC4zKTtcbn1cblxuLyogRGVza3RvcCAzLWNvbHVtbiBhbGlnbm1lbnQ6IHRoZSBsaW5rcyBjb2x1bW4gaGFzIGEgZml4ZWQgd2lkdGhcbiAgIChzYW1lIGdlb21ldHJ5IGFzIHRoZSBvcmlnaW5hbCAxMTBweCBsYWJlbCArIDMwJSBkb3RzICsgbWFyZ2lucyksXG4gICBzbyBldmVyeSByb3cncyBsaW5rcyBzdGFydCBhdCB0aGUgc2FtZSB4IHJlZ2FyZGxlc3Mgb2YgbGFiZWwgbGVuZ3RoICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNXB4KSB7XG4gIC5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLWxpbmtzIHtcbiAgICBmbGV4OiAwIDAgY2FsYyg3MCUgLSAxNTBweCk7XG4gIH1cbn1cblxuLyogRGVza3RvcCBkb3R0ZWQtbGVhZGVyIGxheW91dDogdGhlIGRvdHMgbGl2ZSBhcyBhIGJhY2tncm91bmQgb24gdGhlIGxpbmtzXG4gICBjZWxsIGFuZCB0aGUgbGlua3MgdGhlbXNlbHZlcyBtYXNrIHRoZW0gd2l0aCB0aGUgZm9vdGVyIGJhY2tncm91bmQsIHNvXG4gICB0aGUgbGVhZGVyIGFsd2F5cyBlbmRzIGEgZml4ZWQgOHB4IGJlZm9yZSB0aGUgdGV4dCDigJQgZXZlbiB3aGVuIGxpbmtzIHdyYXAuXG4gICBBcHBsaWVzIG9ubHkgdG8gcm93cyB3aG9zZSBtYXJrdXAgaGFzIHRoZSAuZm9vdGVyLWxpbmtzLWxpbmUgd3JhcHBlcjtcbiAgIHBhZ2VzIHdpdGhvdXQgaXQga2VlcCB0aGUgbGVnYWN5IC5mb290ZXItZG90cyBiYXIuICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNXB4KSB7XG4gIC5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLXJvdzpoYXMoLmZvb3Rlci1saW5rcy1saW5lKSB7XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICB9XG5cbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5mb290ZXItcm93OmhhcyguZm9vdGVyLWxpbmtzLWxpbmUpIC5mb290ZXItZG90cyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLXJvdzpoYXMoLmZvb3Rlci1saW5rcy1saW5lKSAuZm9vdGVyLWxpbmtzIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmbGV4OiAxO1xuICAgIG1pbi13aWR0aDogMDtcbiAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KFxuICAgICAgdG8gcmlnaHQsXG4gICAgICAjZmZmOWVkIDAsXG4gICAgICAjZmZmOWVkIDNweCxcbiAgICAgIHRyYW5zcGFyZW50IDNweCxcbiAgICAgIHRyYW5zcGFyZW50IDE0cHhcbiAgICApO1xuICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJSAzcHg7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDExcHg7XG4gIH1cblxuICAuZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci1saW5rcy1saW5lIHtcblxuICAgIC8qIE11c3Qgc3RheSBlcXVhbCB0byAuc2l0ZS1mb290ZXIncyBiYWNrZ3JvdW5kLWNvbG9yIOKAlCB0aGlzIG1hc2sgcmVsaWVzXG4gICAgICAgb24gbWF0Y2hpbmcgaXQgZXhhY3RseSwgbm90IG9uIHRoZSBjb2xvciBjaG9pY2UgaXRzZWxmLiAqL1xuICAgIGJhY2tncm91bmQ6ICMyMDIxMmE7XG4gICAgcGFkZGluZzogMCA4cHg7XG5cbiAgICAvKiAtd2Via2l0LWJveC1kZWNvcmF0aW9uLWJyZWFrOiBjbG9uZTtcbiAgICBib3gtZGVjb3JhdGlvbi1icmVhazogY2xvbmU7ICovXG4gIH1cblxuICAuZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci1saW5rcy1saW5lIGEge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIH1cblxuICAuZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci1saW5rcy1saW5lIC5zZXAge1xuICAgIG1hcmdpbjogMCA0cHg7XG4gIH1cbn1cblxuLmV4cG9uYS1mb290ZXItcGFyZW50IC5icmVhay1tb2JpbGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4uZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci1taWRkbGUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IDExMnB4O1xufVxuXG4uZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci1uZXdzbGV0dGVyIGgzIHtcbiAgZm9udC1zaXplOiAyMHB4O1xuICBsaW5lLWhlaWdodDogMzRweDtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgY29sb3I6ICNlNmU2ZWQ7XG59XG5cbi5leHBvbmEtZm9vdGVyLXBhcmVudCAubmV3c2xldHRlci1pbnB1dC13cmFwcGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAxNnB4O1xuXG4gIC8qIFdhcyBhIGZpeGVkIDUwM3B4LCBzbyBvbiBhbnkgdmlld3BvcnQgd2hlcmUgLmZvb3Rlci1uZXdzbGV0dGVyJ3MgYWN0dWFsXG4gICAgIGZsZXggc3BhY2UgKGluIC5mb290ZXItbWlkZGxlLCBuZXh0IHRvIC5mb290ZXItYnJhbmQpIGNhbWUgaW4gbmFycm93ZXJcbiAgICAgdGhhbiB0aGF0IOKAlCBsYXB0b3Atd2lkdGggdmlld3BvcnRzIGFib3ZlIHRoZSDiiaQxMDI0cHggc3RhY2sgYnJlYWtwb2ludCxcbiAgICAgd2hlcmUgdGhlIG1vYmlsZSBvdmVycmlkZSBiZWxvdyBkb2Vzbid0IGFwcGx5IHlldCDigJQgdGhlIHdyYXBwZXIgaGVsZCBpdHNcbiAgICAgaGFyZGNvZGVkIHdpZHRoIGFuZCBqdXN0IG92ZXJmbG93ZWQgLmZvb3Rlci1uZXdzbGV0dGVyLCBjbGlwcGVkIGJ5XG4gICAgIHdoYXRldmVyIGFuY2VzdG9yIHNldCBvdmVyZmxvdzpoaWRkZW4uIFRoZSBidXR0b24gKGZpeGVkLXNpemUsIG5vd3JhcFxuICAgICBsYWJlbCkgdG9vayB0aGUgdmlzaWJsZSBjdXQ7IHRoZSBpbnB1dCBzaHJpbmtzIGluc3RlYWQuICovXG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDUwM3B4O1xufVxuXG4uZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci1uZXdzbGV0dGVyIGlucHV0W3R5cGU9XCJlbWFpbFwiXS5uZXdzbGV0dGVyLWlucHV0IHtcbiAgZmxleDogMTtcblxuICAvKiBGbGV4IGl0ZW1zIGdldCBhbiBhdXRvbWF0aWMgbWluaW11bSBzaXplIGZsb29yZWQgYXQgdGhlaXIgQ09OVEVOVCBzaXplXG4gICAgIGJlZm9yZSBmbGV4LXNocmluayBldmVyIHJ1bnMsIGFuZCBmb3IgYSBwbGFpbiA8aW5wdXQ+IHdpdGggbm8gYHNpemVgXG4gICAgIGF0dHJpYnV0ZSB0aGF0IGNvbnRlbnQgc2l6ZSBpcyB0aGUgYnJvd3NlcidzIGRlZmF1bHQgY29udHJvbCB3aWR0aFxuICAgICAofjE3MC0yMDBweCkg4oCUIG5vdCAwLiBTbyBgZmxleDogMWAgYWxvbmUgY291bGRuJ3Qgc2hyaW5rIHRoaXMgaW5wdXQgcGFzdFxuICAgICB0aGF0IGZsb29yOiBvbmNlIHRoZSByb3cgKGlucHV0ICsgMTZweCBnYXAgKyB0aGUgZml4ZWQtc2l6ZSwgbm93cmFwXG4gICAgIFNVQlNDUklCRSBidXR0b24pIG5lZWRlZCBtb3JlIHdpZHRoIHRoYW4gd2FzIGFjdHVhbGx5IGF2YWlsYWJsZSwgdGhlXG4gICAgIGJ1dHRvbiDigJQgdGhlIG9ubHkgc2libGluZyB3aXRoIG5vdGhpbmcgbGVmdCB0byBnaXZlIOKAlCB3YXMgdGhlIG9uZSB0aGF0XG4gICAgIG92ZXJmbG93ZWQgYW5kIGdvdCBjbGlwcGVkLiBtaW4td2lkdGg6IDAgcmVtb3ZlcyB0aGF0IGZsb29yIHNvIHRoZSBpbnB1dFxuICAgICBpcyB3aGF0IHNocmlua3MsIGFuZCB0aGUgYnV0dG9uIG5ldmVyIGhhcyB0by4gKi9cbiAgbWluLXdpZHRoOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSwgLjEpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2IoMjU1LCAyNTUsIDI1NSwgLjIpO1xuICBjb2xvcjogI2ZmZjtcbiAgcGFkZGluZzogMTFweCAyMHB4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMnB4O1xuICBvdXRsaW5lOiBub25lO1xuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgLjNzO1xuICBoZWlnaHQ6IGF1dG87XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi5leHBvbmEtZm9vdGVyLXBhcmVudCAubmV3c2xldHRlci1pbnB1dDo6cGxhY2Vob2xkZXIge1xuICBjb2xvcjogI2ZmZjtcbiAgb3BhY2l0eTogMTtcbn1cblxuLmV4cG9uYS1mb290ZXItcGFyZW50IC5uZXdzbGV0dGVyLWlucHV0OmZvY3VzIHtcbiAgYm9yZGVyLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSwgLjUpO1xufVxuXG4uZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci1icmFuZCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgZ2FwOiAyMHB4O1xufVxuXG4uZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci1sb2dvIHtcbiAgaGVpZ2h0OiAzMnB4O1xufVxuXG4uZXhwb25hLWZvb3Rlci1wYXJlbnQgLnNvY2lhbC1pY29ucyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdhcDogMTZweDtcbn1cblxuLmV4cG9uYS1mb290ZXItcGFyZW50IC5zb2NpYWwtaWNvbnMgYSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBjb2xvcjogI2U2ZTZlZDtcbiAgdHJhbnNpdGlvbjogY29sb3IgLjNzLCBvcGFjaXR5IC4zcztcbiAgb3BhY2l0eTogLjg7XG59XG5cbi5leHBvbmEtZm9vdGVyLXBhcmVudCAuc29jaWFsLWljb25zIGE6aG92ZXIge1xuICBjb2xvcjogI2ZmZjtcbiAgb3BhY2l0eTogMTtcbn1cblxuLmV4cG9uYS1mb290ZXItcGFyZW50IC5mb290ZXItYm90dG9tLWxpbmtzIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmb250LXNpemU6IDEycHg7XG4gIGxpbmUtaGVpZ2h0OiAxOHB4O1xuICBmb250LXdlaWdodDogMzAwO1xuICBjb2xvcjogI2ZmZjtcbiAgbGV0dGVyLXNwYWNpbmc6IC41cHg7XG59XG5cbi5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLWJvdHRvbS1saW5rcyAubGVnYWwtbGlua3MgYSB7XG4gIG1hcmdpbi1sZWZ0OiAyNHB4O1xuICB0cmFuc2l0aW9uOiBjb2xvciAuM3M7XG4gIGNvbG9yOiAjZmZmO1xuICBmb250LXdlaWdodDogNTAwO1xuICBsZXR0ZXItc3BhY2luZzogMS4ycHg7XG59XG5cbi5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLWJvdHRvbS1saW5rcyAubGVnYWwtbGlua3MgYTpob3ZlciB7XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtcmVkKTtcbn1cblxuLmV4cG9uYS1mb290ZXItcGFyZW50IC5mb290ZXItYm90dG9tLXJlZCB7XG4gIHBhZGRpbmc6IDgwcHggMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOlxuICAgIG9wYWNpdHkgLjVzIGVhc2UsXG4gICAgdmlzaWJpbGl0eSAuNXMgZWFzZTtcbn1cblxuYm9keSAuZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci1yZWQtY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDI7XG4gIGdhcDogMTZweDtcblxuICAvKiBBZGRlZCB0byBvdmVycmlkZSB3b3JkcHJlc3Mgc3R5bGUgKi9cbiAgbWF4LXdpZHRoOiB2YXIoLS1jb250YWluZXItd2lkdGgtcGFkZCk7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nLWxlZnQ6IDYwcHg7XG4gIHBhZGRpbmctcmlnaHQ6IDYwcHg7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG59XG5cbi8qIEFkZGVkIHRvIG92ZXJyaWRlIHdvcmRwcmVzcyBzdHlsZSAqL1xuYm9keSAuZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci1yZWQtY29udGFpbmVyOjphZnRlciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci1yZWQtdGV4dCB7XG4gIGZvbnQtc2l6ZTogMzJweDtcbiAgZm9udC13ZWlnaHQ6IDI1MDtcbiAgbGluZS1oZWlnaHQ6IDM4cHg7XG4gIGxldHRlci1zcGFjaW5nOiAtMS4yOHB4O1xufVxuXG4uZXhwb25hLWZvb3Rlci1wYXJlbnQgLmNvbmRpdGlvbi0yLFxuLmV4cG9uYS1mb290ZXItcGFyZW50IC5jb25kaXRpb24tMyxcbi5leHBvbmEtZm9vdGVyLXBhcmVudCAuY29uZGl0aW9uLTQsXG4uZXhwb25hLWZvb3Rlci1wYXJlbnQgLmNvbmRpdGlvbi01LFxuLmV4cG9uYS1mb290ZXItcGFyZW50IC5jb25kaXRpb24tNixcbi5leHBvbmEtZm9vdGVyLXBhcmVudCAuY29uZGl0aW9uLTcge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4uZXhwb25hLWZvb3Rlci1wYXJlbnQgLmNvbmRpdGlvbi0xLFxuLmV4cG9uYS1mb290ZXItcGFyZW50IC5jb25kaXRpb24tMixcbi5leHBvbmEtZm9vdGVyLXBhcmVudCAuY29uZGl0aW9uLTMsXG4uZXhwb25hLWZvb3Rlci1wYXJlbnQgLmNvbmRpdGlvbi00LFxuLmV4cG9uYS1mb290ZXItcGFyZW50IC5jb25kaXRpb24tNSxcbi5leHBvbmEtZm9vdGVyLXBhcmVudCAuY29uZGl0aW9uLTYsXG4uZXhwb25hLWZvb3Rlci1wYXJlbnQgLmNvbmRpdGlvbi03IHtcbiAgcGFkZGluZzogMjBweCAwO1xufVxuXG4vKiBjb25kaXRpb24tMiBvbmx5OiBtZW1iZXIgYXZhdGFycyArIG1ldGEgcmVwbGFjZSB0aGUgYnV0dG9uICovXG4uZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci1tZW1iZXJzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAxNHB4O1xuICBmbGV4LXNocmluazogMDtcbn1cblxuLmV4cG9uYS1mb290ZXItcGFyZW50IC5mb290ZXItYXZhdGFycyB7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG5cbi5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLWF2YXRhciB7XG4gIHdpZHRoOiA0NnB4O1xuICBoZWlnaHQ6IDQ2cHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgb2JqZWN0LWZpdDogY292ZXI7XG4gIG1hcmdpbi1sZWZ0OiAtMTBweDtcbiAgYmFja2dyb3VuZDogI2Q5ZDlkOTtcbiAgYm9yZGVyOiAxLjE0cHggc29saWQgI2ZmZjtcbn1cblxuLmV4cG9uYS1mb290ZXItcGFyZW50IC5mb290ZXItYXZhdGFyOmZpcnN0LWNoaWxkIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG59XG5cbi5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLW1lbWJlci1tZXRhIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiAzcHg7XG59XG5cbi5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLW1lbWJlci1jb3VudCB7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgbGluZS1oZWlnaHQ6IDMwcHg7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGNvbG9yOiAjZmZmO1xufVxuXG4uZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci1tZW1iZXItdGFncyB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIGNvbG9yOiAjZmZkMGQ4O1xufVxuXG4uZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci13YXZlLXBsYWNlaG9sZGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDYwcHg7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoXG4gICAgOTBkZWcsXG4gICAgcmdiKDI1NSwgMjU1LCAyNTUsIC4wNSkgMCxcbiAgICByZ2IoMjU1LCAyNTUsIDI1NSwgLjA1KSAycHgsXG4gICAgdHJhbnNwYXJlbnQgMnB4LFxuICAgIHRyYW5zcGFyZW50IDhweFxuICApO1xuICB6LWluZGV4OiAxO1xufVxuXG4uZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci13YXZlLXBsYWNlaG9sZGVyLXBvZGNhc3Qge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNTRweDtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vLi4vLi4vc3RhdGljL2Fzc2V0cy9pbWFnZXMvbGF0ZXN0L2Zvb3Rlci1mcmFtZS5wbmdcIik7XG4gIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtcbiAgYmFja2dyb3VuZC1zaXplOiBhdXRvIDEwMCU7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGJvdHRvbSBjZW50ZXI7XG4gIHotaW5kZXg6IDE7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAxNDQwcHgpIHtcbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5leHBvbmEtY29udGVudC1sZWZ0IHtcbiAgICBtYXgtd2lkdGg6IDY4MHB4O1xuICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAxMjAwcHgpIHtcbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5leHBvbmEtY29udGVudC1sZWZ0IHtcbiAgICBtYXgtd2lkdGg6IDU0MHB4O1xuICB9XG59XG5cbi8qIFJlc3BvbnNpdmUgT3ZlcnJpZGVzICovXG5AbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gIC5leHBvbmEtZm9vdGVyLXBhcmVudCAuZXhwb25hLWNvbnRhaW5lciB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IDQwcHg7XG4gIH1cblxuICAuZXhwb25hLWZvb3Rlci1wYXJlbnQgLmV4cG9uYS1jb250ZW50LWxlZnQsXG4gIC5leHBvbmEtZm9vdGVyLXBhcmVudCAuZXhwb25hLWNvbnRlbnQtcmlnaHQge1xuICAgIGZsZXg6IG5vbmU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbiAgfVxuXG4gIC5leHBvbmEtZm9vdGVyLXBhcmVudCAuZXhwb25hLWNvbnRlbnQtcmlnaHQge1xuICAgIGhlaWdodDogNDB2aDtcbiAgfVxuXG4gIC5leHBvbmEtZm9vdGVyLXBhcmVudCAuZXhwb25hLWNvbnRlbnQtbGVmdCB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDgwcHggMDtcbiAgfVxuXG4gIC5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLW1pZGRsZSB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBnYXA6IDQwcHg7XG4gIH1cblxuICAuZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci1icmFuZCB7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIH1cblxuICBib2R5IC5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLXJlZC1jb250YWluZXIge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgZ2FwOiAyMHB4O1xuICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5leHBvbmEtY29udGVudC1sZWZ0IHtcbiAgICBtYXJnaW46IDYwcHggMCAyMHB4O1xuICB9XG5cbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5leHBvbmEtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMzZweDtcbiAgICBmb250LXdlaWdodDogMjUwO1xuICAgIGxpbmUtaGVpZ2h0OiA0MnB4O1xuICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gICAgbWFyZ2luLWJvdHRvbTogMzJweDtcbiAgfVxuXG4gIC5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLWNvbnRhaW5lciB7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gIC5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLWxpbmtzLWdyaWQge1xuICAgIGdhcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiA2MHB4O1xuICB9XG5cbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5leHBvbmEtdmlkZW8ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogLTcwcHg7XG4gICAgYm90dG9tOiAwO1xuICAgIGJvcmRlcjogMDtcbiAgICBvdXRsaW5lOiAwO1xuICAgIGhlaWdodDogNTB2aDtcbiAgICBvYmplY3QtcG9zaXRpb246IHRvcCByaWdodDtcbiAgICBtYXNrLWltYWdlOiBub25lO1xuICB9XG5cbiAgLyogRWFjaCByb3cgYmVjb21lcyBhIGZ1bGwtd2lkdGggYWNjb3JkaW9uIGl0ZW0gKi9cbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5mb290ZXItcm93IHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgIGdhcDogMDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiKDI1NSwgMjU1LCAyNTUsIC4xKTtcbiAgfVxuXG4gIC5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLW1pZGRsZSB7XG4gICAgZ2FwOiA5MHB4O1xuICAgIHBhZGRpbmc6IDMwcHg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5mb290ZXItYnJhbmQge1xuICAgIGdhcDogMzJweDtcbiAgfVxuXG4gIC5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLW5ld3NsZXR0ZXIgaDMge1xuICAgIGZvbnQtd2VpZ2h0OiAyMDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICBmb250LXNpemU6IDMycHg7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC00JTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cblxuICBib2R5IC5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLXJlZC1jb250YWluZXIge1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAuZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci1ib3R0b20tbGlua3Mge1xuICAgIGdhcDogMjRweDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIHBhZGRpbmc6IDIwcHggMzBweCA1MHB4O1xuICB9XG5cbiAgLyogQWNjb3JkaW9uIGhlYWRlcjogbGFiZWwgbGVmdCwgY2hldnJvbiByaWdodCAqL1xuICAuZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci1hY2NvcmRpb24taGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDE4cHggMzBweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICAuZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci1hY2NvcmRpb24taWNvbiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSwgLjYpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuM3MgZWFzZTtcbiAgfVxuXG4gIC5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLWFjY29yZGlvbi1pdGVtLmFjdGl2ZSAuZm9vdGVyLWFjY29yZGlvbi1pY29uIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xuICB9XG5cbiAgLyogRG90cyBoaWRkZW4sIGxpbmtzIGZ1bGwtd2lkdGggbGVmdC1hbGlnbmVkLCBoaWRkZW4gYnkgZGVmYXVsdCAqL1xuICAuZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci1kb3RzIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5mb290ZXItYWNjb3JkaW9uLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgbGluZS1oZWlnaHQ6IDI7XG4gICAgcGFkZGluZzogMTBweCAzMHB4IDIwcHg7XG4gIH1cblxuICAuZXhwb25hLWZvb3Rlci1wYXJlbnQgLmJyZWFrLW1vYmlsZSB7XG4gICAgZGlzcGxheTogaW5saW5lO1xuICB9XG5cbiAgLyogUmVkIGJvdHRvbSBzZWN0aW9uOiBhbHdheXMgdmlzaWJsZSBvbiBtb2JpbGUgd2l0aCBpdHMgb3duIGJhY2tncm91bmQgKi9cbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5mb290ZXItYm90dG9tLXJlZCB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjN2MyMjM1O1xuICAgIHBhZGRpbmc6IDUwcHggNTBweCA5NnB4O1xuICB9XG5cbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5mb290ZXItcmVkLXRleHQge1xuICAgIGZvbnQtd2VpZ2h0OiAyNTA7XG4gICAgZm9udC1zaXplOiAzMnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAzOHB4O1xuICAgIGxldHRlci1zcGFjaW5nOiAtNCU7XG4gIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xuXG4gIC8qIC5leHBvbmEtZm9vdGVyLXBhcmVudCAuc2l0ZS1mb290ZXI6OmFmdGVyLFxuICAuZXhwb25hLWZvb3Rlci1wYXJlbnQgLmV4cG9uYS1zZWN0aW9uOjpiZWZvcmUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH0gKi9cbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5leHBvbmEtY29udGFpbmVyIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGdhcDogMDtcbiAgfVxuXG4gIC5leHBvbmEtZm9vdGVyLXBhcmVudCAuZXhwb25hLWNvbnRlbnQtbGVmdCB7XG4gICAgcGFkZGluZzogNDBweCAyMHB4O1xuICAgIG1hcmdpbjogMDtcbiAgfVxuXG4gIC5leHBvbmEtZm9vdGVyLXBhcmVudCAuZXhwb25hLXRpdGxlIHtcbiAgICBmb250LXNpemU6IDMycHg7XG4gICAgZm9udC13ZWlnaHQ6IDI1MDtcbiAgICBsaW5lLWhlaWdodDogNDJweDtcbiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgIG1hcmdpbi1ib3R0b206IDM2cHg7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDEuMjhweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cblxuICAuZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci1jb250YWluZXIge1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAuZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci1saW5rcy1ncmlkIHtcbiAgICBwYWRkaW5nOiA0MHB4IDIwcHg7XG4gICAgZ2FwOiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgYm9yZGVyOiAwO1xuICB9XG5cbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5leHBvbmEtdmlkZW8ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogLTcwcHg7XG4gICAgYm90dG9tOiAwO1xuICAgIGJvcmRlcjogMDtcbiAgICBvdXRsaW5lOiAwO1xuICAgIGhlaWdodDogNTB2aDtcbiAgICBvYmplY3QtcG9zaXRpb246IHRvcCByaWdodDtcbiAgICBtYXNrLWltYWdlOiBub25lO1xuICB9XG5cbiAgLyogRWFjaCByb3cgYmVjb21lcyBhIGZ1bGwtd2lkdGggYWNjb3JkaW9uIGl0ZW0gKi9cbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5mb290ZXItcm93IHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgIGdhcDogMDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiKDI1NSwgMjU1LCAyNTUsIC4xKTtcbiAgfVxuXG4gIC5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLW1pZGRsZSB7XG4gICAgZ2FwOiA0MHB4O1xuICAgIHBhZGRpbmc6IDQwcHggMjBweDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIGJvcmRlci1ib3R0b206IDEuMDFweCBzb2xpZCAjZmZmZmZmMTI7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIH1cblxuICAuZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci1taWRkbGUgLmZvb3Rlci1uZXdzbGV0dGVyLFxuICAuZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci1taWRkbGUgLmZvb3Rlci1icmFuZCxcbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5uZXdzbGV0dGVyLWlucHV0LXdyYXBwZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5mb290ZXItYnJhbmQge1xuICAgIGdhcDogMzJweDtcbiAgfVxuXG4gIC8qIFNhbWUgaU9TIGZvY3VzLXpvb20gZmxvb3IgYXMgLmV4cG9uYS1pbnB1dCBhYm92ZSDigJQgdGhpcyBmaWVsZCBpcyAxNHB4IGF0XG4gICAgIGV2ZXJ5IHdpZHRoLCBzbyBpdCB6b29tcyBvbiB0YXAgdG9vLiBPbmx5IHRoZSBuYXJyb3cgbGF5b3V0IGlzIHJhaXNlZDtcbiAgICAgZGVza3RvcCBrZWVwcyAxNHB4LCB3aGVyZSBubyBicm93c2VyIGRvZXMgdGhpcy4gUGFkZGluZyBjb21wZW5zYXRlcyBzbyB0aGVcbiAgICAgZmllbGQncyBoZWlnaHQgZG9lcyBub3QgY2hhbmdlOiAyMiArIDJ4MTEgYW5kIDI0ICsgMngxMCBhcmUgYm90aCA0NHB4LiAqL1xuICAuZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci1uZXdzbGV0dGVyIGlucHV0W3R5cGU9XCJlbWFpbFwiXS5uZXdzbGV0dGVyLWlucHV0IHtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gICAgcGFkZGluZzogMTBweCAyMHB4O1xuICB9XG5cbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5mb290ZXItbmV3c2xldHRlciBoMyB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICBsaW5lLWhlaWdodDogMjhweDtcbiAgICBsZXR0ZXItc3BhY2luZzogMDtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICB9XG5cbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5mb290ZXItYm90dG9tLWxpbmtzIHtcbiAgICBnYXA6IDE2cHg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgcGFkZGluZzogMjBweDtcbiAgfVxuXG4gIC5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLWJvdHRvbS1saW5rcyAubGVnYWwtbGlua3Mge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiAyNHB4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgfVxuXG4gIC5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLWJvdHRvbS1saW5rcyAubGVnYWwtbGlua3MgYSB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgLjNzO1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGxldHRlci1zcGFjaW5nOiAxLjJweDtcbiAgfVxuXG4gIGJvZHkgLmV4cG9uYS1mb290ZXItcGFyZW50IC5mb290ZXItcmVkLWNvbnRhaW5lciB7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gIC5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLXJlZC10ZXh0IHtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICBsaW5lLWhlaWdodDogMjZweDtcbiAgICBsZXR0ZXItc3BhY2luZzogMDtcbiAgfVxuXG4gIC8qIEFjY29yZGlvbiBoZWFkZXI6IGxhYmVsIGxlZnQsIGNoZXZyb24gcmlnaHQgKi9cbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5mb290ZXItYWNjb3JkaW9uLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAxM3B4IDMwcHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5mb290ZXItbGFiZWwge1xuICAgIGxldHRlci1zcGFjaW5nOiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGNvbG9yOiAjZTZlNmVkO1xuICB9XG5cbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5mb290ZXItYWNjb3JkaW9uLWljb24ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBjb2xvcjogI2ZmZjllZDtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjNzIGVhc2U7XG4gIH1cblxuICAuZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci1hY2NvcmRpb24taXRlbS5hY3RpdmUgLmZvb3Rlci1hY2NvcmRpb24taWNvbiB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgfVxuXG4gIC8qIERvdHMgaGlkZGVuLCBsaW5rcyBmdWxsLXdpZHRoIGxlZnQtYWxpZ25lZCwgaGlkZGVuIGJ5IGRlZmF1bHQgKi9cbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5mb290ZXItZG90cyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLWxpbmtzIGEge1xuICAgIHBhZGRpbmc6IDEwcHggMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiKDI1NSwgMjU1LCAyNTUsIC4xKTtcbiAgfVxuXG4gIC5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLWxpbmtzIGE6bGFzdC1jaGlsZCB7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgfVxuXG4gIC5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLWxpbmtzIC5zZXAge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAuZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci1hY2NvcmRpb24tY29udGVudCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBsaW5lLWhlaWdodDogMjtcbiAgICBwYWRkaW5nOiAxMHB4IDUwcHg7XG4gIH1cblxuICAuZXhwb25hLWZvb3Rlci1wYXJlbnQgLmJyZWFrLW1vYmlsZSB7XG4gICAgZGlzcGxheTogaW5saW5lO1xuICB9XG5cbiAgLyogUmVkIGJvdHRvbSBzZWN0aW9uOiBhbHdheXMgdmlzaWJsZSBvbiBtb2JpbGUgd2l0aCBpdHMgb3duIGJhY2tncm91bmQgKi9cbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5mb290ZXItYm90dG9tLXJlZCB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjN2MyMjM1O1xuICAgIHBhZGRpbmc6IDMwcHggMjBweCA3MHB4O1xuICB9XG5cbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5jb25kaXRpb24tMSxcbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5jb25kaXRpb24tMixcbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5jb25kaXRpb24tMyxcbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5jb25kaXRpb24tNCxcbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5jb25kaXRpb24tNSxcbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5jb25kaXRpb24tNixcbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5jb25kaXRpb24tNyB7XG4gICAgcGFkZGluZzogMTBweCAwO1xuICB9XG5cbiAgLmV4cG9uYS1mb290ZXItcGFyZW50IC5leHBvbmEtaW5wdXQtd3JhcHBlciB7XG4gICAgcGFkZGluZzogMnB4IDE2cHg7XG4gIH1cblxuICAvKiAxNnB4IGlzIGEgRkxPT1IgaGVyZSwgbm90IGEgdHlwZSBjaG9pY2Ug4oCUIGRvIG5vdCBsb3dlciBpdC5cbiAgICAgaU9TIFNhZmFyaSB6b29tcyB0aGUgd2hvbGUgdmlld3BvcnQgaW4gd2hlbmV2ZXIgYSBmb3JtIGNvbnRyb2wgaXQgaXNcbiAgICAgZm9jdXNpbmcgY29tcHV0ZXMgdG8gYSBmb250LXNpemUgYmVsb3cgMTZweCwgYW5kIG5ldmVyIHpvb21zIGJhY2sgb3V0IG9uXG4gICAgIGJsdXIuIFRoYXQgaXMgdGhlIFwidGhlIGJveCBnZXRzIGJpZ2dlciB3aGVuIHlvdSB0YXAgaXRcIiByZXBvcnQgZnJvbSBpUGhvbmU7XG4gICAgIEFuZHJvaWQgaGFzIG5vIHN1Y2ggYmVoYXZpb3VyLCB3aGljaCBpcyB3aHkgaXQgb25seSByZXByb2R1Y2VzIG9uIG9uZVxuICAgICBwbGF0Zm9ybS4gVGhlIGFsdGVybmF0aXZlIGN1cmUg4oCUIG1heGltdW0tc2NhbGUvdXNlci1zY2FsYWJsZSBvbiB0aGVcbiAgICAgdmlld3BvcnQgbWV0YSDigJQgZGlzYWJsZXMgcGluY2gtem9vbSBmb3IgZXZlcnlvbmUgYW5kIGZhaWxzIFdDQUcgMS40LjQsIHNvXG4gICAgIHRoZSBmb250LXNpemUgZmxvb3IgaXMgdGhlIG9uZSB0aGF0IGtlZXBzIHRoZSBwYWdlIGFjY2Vzc2libGUuXG5cbiAgICAgbGluZS1oZWlnaHQgYW5kIHBhZGRpbmcgYXJlIHJlLWJhbGFuY2VkIGFnYWluc3QgdGhlIGxhcmdlciB0ZXh0IHNvIHRoZVxuICAgICB3cmFwcGVyJ3MgaGVpZ2h0IGlzIHVuY2hhbmdlZDogMTggKyAyeDEwIGFuZCAyMCArIDJ4OSBhcmUgYm90aCAzOHB4LiAqL1xuICAuZXhwb25hLWZvb3Rlci1wYXJlbnQgLmV4cG9uYS1pbnB1dCB7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIHBhZGRpbmc6IDlweCAwO1xuICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICB9XG59XG5cbi8qIFRoZSBuYXJyb3ctdmlld3BvcnQgcGxhY2Vob2xkZXIgY29weSAoRVhQT05BX1NUQVRJQ19OQVJST1cgaW4ganMvc2hhcmVkLmpzIOKAlFxuICAgXCJTdGFydCB3aXRoIHRoZSBjaGFsbGVuZ2Ugb24geW91ciBtaW5kXCIpIGlzIHdpZGVyIHRoYW4gdGhlIGZpZWxkIG9uIGEgc21hbGxcbiAgIHBob25lLCBhbmQgYW4gPGlucHV0PiBjYW4ndCB3cmFwLCBzbyBpdCB3YXMgYmVpbmcgY2xpcHBlZC5cblxuICAgVGhlIGZpeCBzaHJpbmtzIHRoZSBQTEFDRUhPTERFUiBvbmx5LCB2aWEgOjpwbGFjZWhvbGRlciB7IGZvbnQtc2l6ZSB9LiBUaGVcbiAgIGlucHV0J3Mgb3duIGZvbnQtc2l6ZSBzdGF5cyAxNnB4LCBzbyBpT1MgU2FmYXJpJ3MgZm9jdXMtem9vbSBoZXVyaXN0aWMgKHNlZVxuICAgdGhlIHJ1bGUgYWJvdmUg4oCUIGl0IHJlYWRzIHRoZSBjb250cm9sJ3MgY29tcHV0ZWQgZm9udC1zaXplLCBub3QgdGhlXG4gICBwbGFjZWhvbGRlcidzKSBpcyB1bmFmZmVjdGVkLCBhbmQgYW55dGhpbmcgdGhlIHZpc2l0b3IgYWN0dWFsbHkgdHlwZXMgaXNcbiAgIHN0aWxsIDE2cHguIFNhZmFyaSB2ZXJzaW9ucyB0aGF0IGlnbm9yZSBmb250LXNpemUgb24gOjpwbGFjZWhvbGRlciBqdXN0IGZhbGxcbiAgIGJhY2sgdG8gMTZweCDigJQgdGhlIHRleHQgY2xpcHMgYXMgYmVmb3JlIGJ1dCBub3RoaW5nIGVsc2UgcmVncmVzc2VzLiAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gIC5leHBvbmEtZm9vdGVyLXBhcmVudCAuZXhwb25hLWlucHV0OjpwbGFjZWhvbGRlciB7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICB9XG59XG5cbi8qIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgTW9iaWxlIGZvb3RlciBhY2NvcmRpb24g4oCUIENTUyBncmlkLXJvd3MgY29sbGFwc2UuXG5cbiAgIFdhcyBhIGpRdWVyeSBzbGlkZVVwL3NsaWRlRG93bi4gU2FtZSBhcyB0aGUgaGVhZGVyIG1vYmlsZS1uYXYgYWNjb3JkaW9uIGluXG4gICBtZWNoYW5pc20sIGJ1dCB0aGUgaGVhZGVyIG9ubHkgcmVhZHMgYXMgc21vb3RoIGJlY2F1c2UgaXQgaXMgcG9zaXRpb246Zml4ZWRcbiAgIGFuZCBpc29sYXRlZCDigJQgY29sbGFwc2luZyBhIHN1Ym1lbnUgaW5zaWRlIGl0IG5ldmVyIHRvdWNoZXMgcGFnZSBsYXlvdXQuIFRoZVxuICAgZm9vdGVyIGlzIGluIG5vcm1hbCBmbG93LCBzbyBhIGhlaWdodCBhbmltYXRpb24gdGhlcmUgcmVmbG93cyBldmVyeSBzZWN0aW9uXG4gICBiZWxvdyBpdCAobmV3c2xldHRlciwgYm90dG9tIGxpbmtzLCBjb25kaXRpb24gYmFycykgb24galF1ZXJ5J3MgMTNtcyB0aW1lcixcbiAgIHdoaWNoIGlzbid0IHJlZnJlc2gtc3luY2VkIGFuZCBzdHV0dGVycyBvbiBjbG9zZS5cblxuICAgZ3JpZC10ZW1wbGF0ZS1yb3dzIDBmcuKGlDFmciBvbiB0aGUgcGFuZWwgKG9uZSBjaGlsZCwgLmZvb3Rlci1hY2NvcmRpb24taW5uZXIsXG4gICBhZGRlZCBieSBqcy9zaGFyZWQuanMgwqc0KSBpcyBhIHNpbmdsZSBicm93c2VyLWRyaXZlbiB0cmFuc2l0aW9uIOKAlCB0aGUgcGFnZVxuICAgc3RpbGwgcmVmbG93cywgYnV0IGl0IGlzIHNjaGVkdWxlZCB3aXRoIHRoZSBmcmFtZSBpbnN0ZWFkIG9mIGFnYWluc3QgaXQuXG4gICBTaW5nbGUtdHJhY2sgZm9ybTogbm8gYGF1dG9gIHNpYmxpbmcgdHJhY2ssIHNvIGAxZnJgIHJlc29sdmVzIGNsZWFubHkgdG8gdGhlXG4gICBpbm5lcidzIGV4YWN0IGhlaWdodC4gVGhlIGlubmVyIGNhcnJpZXMgTk8gcGFkZGluZyDigJQgYDFmcmAgdGhlbiB0cmFja3MgYVxuICAgZml4ZWQgdGFyZ2V0IHdoaWxlIHRoZSBjb250YWluZXIncyBvd24gdmVydGljYWwgcGFkZGluZyBhbmltYXRlcyBpblxuICAgc2VwYXJhdGVseSBvbiB0aGUgc2FtZSBjdXJ2ZSAodGhlIC5zbi1hY2NvcmRpb25fX2JvZHkgbW9kZWwpLlxuICAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovXG5AbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gIC5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLWFjY29yZGlvbi1yZWFkeSAuZm9vdGVyLWFjY29yZGlvbi1jb250ZW50IHtcbiAgICBkaXNwbGF5OiBncmlkO1xuXG4gICAgLyogRnVsbCB3aWR0aCDigJQgLmZvb3Rlci1saW5rcyBpcyBkaXNwbGF5OmZsZXg7IGFzIGEgZ3JpZCBpdHMgZGVmYXVsdFxuICAgICAgIGltcGxpY2l0IGNvbHVtbiBpcyBgYXV0b2AgYW5kIHNocmlua3MgdG8gdGhlIHdpZGVzdCBsaW5rLiAqL1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogMGZyO1xuXG4gICAgLyogLmZvb3Rlci1saW5rcyBjYXJyaWVzIGZsZXg6MSAoZ3JvdykgKyBnYXA6OHB4IGZyb20gaXRzIGZsZXggbGF5b3V0IOKAlFxuICAgICAgIG5laXRoZXIgaXMgd2FudGVkIGhlcmUsIGFuZCBmbGV4LWdyb3cgY2FuIHN0cmV0Y2ggdGhlIGNvbGxhcHNlZCBwYW5lbC4gKi9cbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBnYXA6IDA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgIC8qIFZlcnRpY2FsIHBhZGRpbmcgbGl2ZXMgSEVSRSAodGhlIGdyaWQgY29udGFpbmVyKSwgbm90IG9uIHRoZSBpbm5lciBpdGVtOlxuICAgICAgIGEgc3RyZXRjaGVkIGdyaWQgaXRlbSBpbiBhIDBmciByb3cgc3RpbGwgcmVuZGVycyBpdHMgb3duIHBhZGRpbmcsIHNvIHRoZVxuICAgICAgIGNsb3NlZCBwYW5lbCB3b3VsZCBzaXQgfjIwcHggdGFsbCDigJQgdGhlIGdhcCB1bmRlciB0aGUgbGFiZWwuIEl0IGlzIDAgd2hlblxuICAgICAgIGNsb3NlZCBhbmQgYW5pbWF0ZXMgaW4gd2l0aCB0aGUgcm93LCBleGFjdGx5IGFzIC5zbi1hY2NvcmRpb25fX2JvZHkgZG9lc1xuICAgICAgIChhc3NldHMvc2Nzcy9wYWdlcy9zZXJ2aWNlbm93L19zY3JvbGwtdGFicy1zZWN0aW9uLnNjc3MpLiBIb3Jpem9udGFsXG4gICAgICAgcGFkZGluZyBpcyBjb25zdGFudCAobWlycm9ycyB0aGUgb2xkIC5mb290ZXItYWNjb3JkaW9uLWNvbnRlbnQpLiAqL1xuICAgIHBhZGRpbmc6IDAgNTBweDtcbiAgICB0cmFuc2l0aW9uOlxuICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzIC4zcyBjdWJpYy1iZXppZXIoLjI1LCAuNDYsIC40NSwgLjk0KSxcbiAgICAgIHBhZGRpbmctdG9wIC4zcyBjdWJpYy1iZXppZXIoLjI1LCAuNDYsIC40NSwgLjk0KSxcbiAgICAgIHBhZGRpbmctYm90dG9tIC4zcyBjdWJpYy1iZXppZXIoLjI1LCAuNDYsIC40NSwgLjk0KTtcbiAgfVxuXG4gIC5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLWFjY29yZGlvbi1yZWFkeSAuZm9vdGVyLWFjY29yZGlvbi1pdGVtLmFjdGl2ZSAuZm9vdGVyLWFjY29yZGlvbi1jb250ZW50IHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IDFmcjtcbiAgICBwYWRkaW5nLXRvcDogMTBweDtcbiAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgfVxuXG4gIC5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLWFjY29yZGlvbi1pbm5lciB7XG4gICAgbWluLWhlaWdodDogMDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICB0cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDBzIGxpbmVhciAuM3M7XG4gIH1cblxuICAuZXhwb25hLWZvb3Rlci1wYXJlbnQgLmZvb3Rlci1hY2NvcmRpb24taXRlbS5hY3RpdmUgLmZvb3Rlci1hY2NvcmRpb24taW5uZXIge1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgdHJhbnNpdGlvbjogdmlzaWJpbGl0eSAwcztcbiAgfVxufVxuXG4vKiBEZXNrdG9wIGtlZXBzIHRoZSBmbGF0IGRvdHRlZC1sZWFkZXIgcm93OiB0aGUgSlMtYWRkZWQgd3JhcHBlciBtdXN0IG5vdFxuICAgYmVjb21lIGEgbGF5b3V0IGJveCBiZXR3ZWVuIC5mb290ZXItbGlua3MgYW5kIGl0cyA8YT4vPHNwYW4+IGZsZXggaXRlbXMuICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNXB4KSB7XG4gIC5leHBvbmEtZm9vdGVyLXBhcmVudCAuZm9vdGVyLWFjY29yZGlvbi1pbm5lciB7XG4gICAgZGlzcGxheTogY29udGVudHM7XG4gIH1cbn0iLCI6cm9vdCB7XG5cbiAgLyogQ29sb3IgUGFsZXR0ZSAqL1xuICAtLWJnLXByaW1hcnk6ICNmZmY5ZWQ7IC8qIENyZWFtIE1pc3QgKi9cbiAgLS10ZXh0LXByaW1hcnk6ICMzNzM3NDI7IC8qIENoYXJjb2FsIEdyYXkgKi9cbiAgLS10ZXh0LXNlY29uZGFyeTogIzM3Mzc0MjsgLyogTWVkaXVtIEdyYXkgKi9cbiAgLS10ZXh0LWRpc2FibGVkOiAjYTdhN2IwO1xuICAtLWFjY2VudC1yZWQ6ICNlYTFiM2Q7IC8qIEluZm9CZWFucyBDcmltc29uICovXG4gIC0tYWNjZW50LXBlYWNoOiAjZmZkMGQ4O1xuICAtLWJvcmRlci1jb2xvcjogcmdiKDEwMywgMTAzLCAxMTcsIC4xNSk7XG5cbiAgLyogRm9udHMgKi9cbiAgLS1mb250LXByaW1hcnk6IFwiTGV4ZW5kXCIsIC1hcHBsZS1zeXN0ZW0sIGJsaW5rbWFjc3lzdGVtZm9udCwgXCJTZWdvZSBVSVwiLCByb2JvdG8sIHNhbnMtc2VyaWY7XG5cbiAgLyogVHJhbnNpdGlvbnMgKi9cbiAgLS10cmFuc2l0aW9uLXNtb290aDogYWxsIC40cyBjdWJpYy1iZXppZXIoLjE2LCAxLCAuMywgMSk7XG4gIC0tdHJhbnNpdGlvbi1zbG93OiBhbGwgLjhzIGN1YmljLWJlemllciguMTYsIDEsIC4zLCAxKTtcbiAgLS10cmFuc2l0aW9uLXRyYW5zbGF0ZTogYWxsIDFzIGN1YmljLWJlemllciguMTYsIDEsIC4zLCAxKTtcbiAgLS10ZXh0LWdyYXk6ICM2NzY3NzU7XG4gIC0tY29udGFpbmVyLXdpZHRoOiA5My41cmVtOyAvKiAxNDk2cHggKi9cblxuICAvKiAtLWNvbnRhaW5lci13aWR0aC1wYWRkOiA5OC41cmVtOyAqL1xuXG4gIC8qIDE1NzZweCAqL1xuICAtLWNvbnRhaW5lci13aWR0aC1wYWRkOiAxMDFyZW07IC8qIDE2MTZweCAqL1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIDIuIFJlc2V0ICYgR2VuZXJhbCBTdHlsZXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuKiB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgXG4gIC8qIEtpbGwgdGhlIHRyYW5zbHVjZW50IGJsdWUvZ3JleSBmbGFzaCBBbmRyb2lkIENocm9tZSBwYWludHMgb3ZlciBhbnlcbiAgICAgdGFwcGVkIDxhPi88YnV0dG9uPi4gT3VyIG93biA6YWN0aXZlIC8gOmZvY3VzLXZpc2libGUgc3R5bGVzIGFyZSB0aGVcbiAgICAgaW50ZW5kZWQgdGFwIGZlZWRiYWNrLiAqL1xuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG5idXR0b24sXG5pbnB1dCxcbnRleHRhcmVhLFxuc2VsZWN0IHtcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG59XG5cbmh0bWwsXG5ib2R5IHtcbiAgd2lkdGg6IDEwMCU7XG5cbiAgLyogbWluLWhlaWdodCBpbnN0ZWFkIG9mIGhlaWdodDogMTAwJSDigJQgbmF0aXZlIHNjcm9sbCBuZWVkcyB0aGUgZG9jdW1lbnRcbiAgICAgdG8gZ3JvdyBiZXlvbmQgdGhlIHZpZXdwb3J0LiBoZWlnaHQ6IDEwMCUgd2FzIG9ubHkgc2FmZSB3aGVuXG4gICAgIFNjcm9sbFNtb290aGVyIHZpcnR1YWxpc2VkIHNjcm9sbDsgd2l0aG91dCBpdCB0aGUgcGFnZSBpcyBjYXBwZWQgYXRcbiAgICAgMTAwdmggYW5kIEdTQVAgcGluIHNwYWNlcnMgY2Fubm90IGV4cGFuZCB0aGUgc2Nyb2xsIHJhbmdlLiAqL1xuICBtaW4taGVpZ2h0OiAxMDAlO1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1wcmltYXJ5KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmctcHJpbWFyeSk7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpO1xuICBsaW5lLWhlaWdodDogMS42O1xuICBvdmVyZmxvdy14OiBjbGlwO1xuXG4gIC8qIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoIHJlbW92ZWQg4oCUIEdTQVAgbWFuYWdlcyBhbGwgc2Nyb2xsIGFkanVzdG1lbnRzXG4gICAgIChwaW4gc2V0dXAsIHJlZnJlc2gsIHNjcm9sbFRvKS4gQ1NTIHNtb290aC1zY3JvbGwgY2F1c2VzIGppdHRlciBhbmRcbiAgICAgaW5jb3JyZWN0IHRyaWdnZXIgcG9zaXRpb25zIHdoZW4gR1NBUCBtb3ZlcyB0aGUgc2Nyb2xsIHBvc2l0aW9uXG4gICAgIHByb2dyYW1tYXRpY2FsbHkuXG5cbiAgICAgUmVtb3ZpbmcgaXQgaGVyZSBpcyBOT1Qgc3VmZmljaWVudCBvbiBXb3JkUHJlc3MsIHdoZXJlIHRoaXMgZmlsZSBpc1xuICAgICBjb25jYXRlbmF0ZWQgd2l0aCBldmVyeSBvdGhlciBwYWdlJ3MgQ1NTIGFuZCB0aGUgaW52ZXN0b3JzIHBhZ2UgY2FycmllcyBhXG4gICAgIGJhcmUgYGh0bWwgeyBzY3JvbGwtYmVoYXZpb3I6IHNtb290aCB9YC4gVGhlIGFjdHVhbCBvdmVycmlkZSBsaXZlcyBpblxuICAgICBjc3Mvc3R5bGUuY3NzIHNlY3Rpb24gMCAoYGh0bWw6aGFzKCN3aGF0LXdlLXNoaXApYCksIHdoaWNoIGlzIGtleWVkIG9mZlxuICAgICB0aGUgcGlubmVkIHNlY3Rpb25zIGFuZCBtYXJrZWQgIWltcG9ydGFudCBzbyBpdCBhbHNvIGJlYXRzIHRoZSBpbmxpbmVcbiAgICAgc3R5bGUgR1NBUCB3cml0ZXMgYmFjayBhZnRlciBhIHJlZnJlc2guIEtlZXAgdGhlIHR3byBpbiBzdGVwLiAqL1xufVxuXG4vKiBXaGlsZSBzY3JvbGwgaXMgbG9ja2VkLCBoYW5kIGJhY2sgdGhlIHdpZHRoIHRoZSB2YW5pc2hlZCBzY3JvbGxiYXIgdG9vayDigJRcbiAgIHBhZGRpbmcgbm90IHdpZHRoLCBzbyB0aGUgaGVhZGVyIHN0YXlzIGZ1bGwtYmxlZWQgKGpzL3NoYXJlZC5qcykuICovXG5odG1sLnNjcm9sbC1sb2NrZWQsXG5odG1sLnNjcm9sbC1sb2NrZWQgLm1haW4taGVhZGVyIHtcbiAgcGFkZGluZy1yaWdodDogdmFyKC0tc2Nyb2xsYmFyLWNvbXAsIDApO1xufVxuXG4vKiBHdXR0ZXIsIG5vdCBwYWRkaW5nOiB0aGUgbWVudSdzIG93biBzY3JvbGxiYXIgYWxyZWFkeSBmaWxscyB0aGF0IHNwYWNlLiAqL1xuaHRtbC5zY3JvbGwtbG9ja2VkIC5oZWFkZXItY29udGFpbmVyIC5tZWdhLW1lbnUge1xuICBzY3JvbGxiYXItZ3V0dGVyOiBzdGFibGU7XG59XG5cbi8qIFNjcm9sbGJhciBjdXN0b21pemF0aW9uIOKAlCBldmVyeSB3aWR0aCwgbm90IGRlc2t0b3Agb25seS5cbiAgIFRoZSBAbWVkaWEgKG1pbi13aWR0aDogNzY5cHgpIGdhdGUgdGhpcyB1c2VkIHRvIHNpdCBiZWhpbmQgd2FzIHdoYXQgbGVmdCB0aGUgICBob21lcGFnZSB3aXRoIHRoZSBicm93c2VyJ3MgZGVmYXVsdCBjaHVua3kgc2Nyb2xsYmFyIGJlbG93IDc2OXB4IHdoaWxlIGV2ZXJ5XG4gICBvdGhlciBwYWdlIGtlcHQgdGhlIHRoaW4gY3JlYW0gb25lOiB0aGUgbGFuZGluZyBwYWdlcyBnZXQgdGhlIHNhbWUgZm91ciBydWxlc1xuICAgZnJvbSBhc3NldHMvc2Nzcy9wYWdlcy9fYmFzZS5zY3NzLCB3aGVyZSB0aGV5IGFyZSBOT1QgYnJlYWtwb2ludC1zY29wZWQsIGFuZFxuICAgdGhhdCB1bnNjb3BlZCBjb3B5IGlzIHdoYXQgd2FzIHBhaW50aW5nIHRoZWlyIG1vYmlsZSBzY3JvbGxiYXJzLiBLZWVwIHRoZSB0d29cbiAgIGluIHN0ZXAg4oCUIGRyb3BwaW5nIHRoZSBnYXRlIGhlcmUgaXMgd2hhdCBtYWtlcyB0aGUgaG9tZXBhZ2UgYW5kIHRoZSBkcmF3ZXInc1xuICAgb3duIHNjcm9sbGVyIG1hdGNoIHRoZSByZXN0IG9mIHRoZSBzaXRlIGF0IG1vYmlsZSB3aWR0aHMuICovXG46Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgd2lkdGg6IDhweDtcbn1cblxuOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWJnLXByaW1hcnkpO1xufVxuXG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tdGV4dC1kaXNhYmxlZCk7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cblxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAzLiBUeXBvZ3JhcGh5IFN5c3RlbXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuaDEsXG5oMixcbmgzLFxuaDQsXG5oNSxcbmg2IHtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbGluZS1oZWlnaHQ6IDEuMjtcbn1cblxuYSB7XG4gIGNvbG9yOiBpbmhlcml0O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRyYW5zaXRpb246IHZhcigtLXRyYW5zaXRpb24tc21vb3RoKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICA0LiBHcmlkICYgQ29udGFpbmVyIExheW91dHNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmNvbnRhaW5lcixcbi5jdXN0b20tY29udGFpbmVyIHtcbiAgbWF4LXdpZHRoOiB2YXIoLS1jb250YWluZXItd2lkdGgtcGFkZCk7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nLWxlZnQ6IDYwcHg7XG4gIHBhZGRpbmctcmlnaHQ6IDYwcHg7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG59XG5cbi8qIFJlc3BvbnNpdmUgQ29udGFpbmVyIEFkanVzdG1lbnRzICovXG5AbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gIC5jb250YWluZXIge1xuICAgIHBhZGRpbmctbGVmdDogMjBweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4O1xuICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAuY3VzdG9tLWNvbnRhaW5lciB7XG4gICAgcGFkZGluZy1sZWZ0OiAyMHB4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7XG4gIH1cbn1cbiIsIlxuLmNreS1zd2l0Y2ggaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdOmNoZWNrZWQge1xuICBiYWNrZ3JvdW5kOiAjZWExYjNkICFpbXBvcnRhbnQ7XG59XG5cbmJ1dHRvbi5ja3ktYnRuLmNreS1idG4tcmVqZWN0IHtcbiAgY29sb3I6ICNmOGY2ZjYgIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzIxMWQxZCAhaW1wb3J0YW50O1xufVxuXG5idXR0b24uY2t5LWJ0bi5ja3ktYnRuLWFjY2VwdCB7XG4gIGJhY2tncm91bmQ6ICNlYTFiM2QgIWltcG9ydGFudDtcbiAgYm9yZGVyLWNvbG9yOiAjZWExYjNkICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XG59XG5cbi5ja3ktbm90aWNlLWJ0bi13cmFwcGVyIC5ja3ktYnRuIHtcbiAgYm9yZGVyLWNvbG9yOiAjZWExYjNkICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiAjZWExYjNkICFpbXBvcnRhbnQ7XG59XG5cbi5ja3ktcmV2aXNpdC1ib3R0b20tbGVmdDpob3Zlcjo6YmVmb3JlLCAuY2t5LXJldmlzaXQtYm90dG9tLWxlZnQ6aG92ZXI6OmFmdGVyIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNTc2cHgpIHtcblxuICAucGFnZS10ZW1wbGF0ZS1wYWdlLWxlYWRlcnNoaXAtMjAyNiAuY2t5LXJldmlzaXQtYm90dG9tLWxlZnQge1xuICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICByaWdodDogMTVweCAhaW1wb3J0YW50O1xuICB9XG4gIC5ja3ktcHJlZmVyZW5jZS1jZW50ZXIge1xuICAgIG1heC1oZWlnaHQ6IDkwdmggIWltcG9ydGFudDtcbiAgICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBtYXgtaGVpZ2h0OiA5MGR2aCAhaW1wb3J0YW50OyAgIC8qIHJlYWwgdmlzaWJsZSBoZWlnaHQsIGFjY291bnRzIGZvciBtb2JpbGUgYnJvd3NlciBjaHJvbWUgKi9cbiAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG4gICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDtcbiAgICB0b3A6IDV2aCAhaW1wb3J0YW50O1xuICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLyoga2VlcCBoZWFkZXIgYW5kIGZvb3RlciBmaXhlZCBpbiBwbGFjZSwgb25seSB0aGUgbWlkZGxlIGNvbnRlbnQgc2Nyb2xscyAqL1xuICAuY2t5LXByZWZlcmVuY2UtY2VudGVyIC5ja3ktcHJlZmVyZW5jZS1oZWFkZXIsXG4gIC5ja3ktcHJlZmVyZW5jZS1jZW50ZXIgLmNreS1wcmVmZXJlbmNlLWZvb3RlciB7XG4gICAgZmxleDogMCAwIGF1dG8gIWltcG9ydGFudDtcbiAgfVxuXG4gIC5ja3ktcHJlZmVyZW5jZS1jZW50ZXIgLmNreS1wcmVmZXJlbmNlLWJvZHktd3JhcHBlciB7XG4gICAgZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdy15OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoICFpbXBvcnRhbnQ7XG4gIH1cbn0iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBOztBQUFBO0FDQUE7O0FBQUE7QUNBQTtBQUNBO0FBQ0E7QUZRQTtBQUNBO0FFTEE7QUFDQTtBQUNBO0FGT0E7QUFDQTtBRUpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FGTUE7QUFDQTtBRUxBO0FBQ0E7QUFDQTtBRk9BO0FBQ0E7QUVKQTtBQUNBO0FBQ0E7QUFDQTtBRk1BO0FFSkE7QUFDQTtBQUNBO0FGTUE7QUVKQTtBQUNBO0FBQ0E7QUZNQTtBRUpBO0FBQ0E7QUFDQTtBRk1BO0FBQ0E7QUVKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUZNQTtBQUNBO0FFTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBRk9BO0FBQ0E7QUVOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUZRQTtBQUNBO0FFUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBRlNBO0FBQ0E7QUVSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FGVUE7QUFDQTtBRVRBO0FBQ0E7QUFDQTtBRldBO0FBQ0E7QUVWQTtBQUNBO0FBQ0E7QUZZQTtBQUNBO0FFWEE7QUFDQTtBRmFBO0FBQ0E7QUVaQTtBQUNBO0FGY0E7QUFDQTtBRWJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBRmVBO0FBQ0E7QUViQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUZlQTtBQUNBO0FFYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FGZUE7QUFDQTtBRWRBO0FBQ0E7QUFDQTtBRmdCQTtBQUNBO0FFZEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FGZ0JBO0FBQ0E7QUVmQTtBQUNBO0FBQ0E7QUZpQkE7QUFDQTtBRWhCQTtBQUNBO0FBQ0E7QUZrQkE7QUFDQTtBRWpCQTtBQUNBO0FBQ0E7QUFDQTtBRm1CQTtBQUNBO0FFakJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBRm1CQTtBQUNBO0FFbEJBO0FBQ0E7QUFDQTtBRm9CQTtBQUNBO0FFbkJBO0FBQ0E7QUFDQTtBQUNBO0FGcUJBO0FBQ0E7QUVuQkE7QUFDQTtBQUNBO0FGcUJBO0FBQ0E7QUVwQkE7QUFDQTtBRnNCQTtBQUNBO0FFckJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FGdUJBO0FBQ0E7QUV0QkE7QUFDQTtBRndCQTtBQUNBO0FFdkJBO0FBQ0E7QUZ5QkE7QUFDQTtBRXRCQTs7QUFFQTtBRndCQTtBQUNBO0FFdEJBOztBQUVBO0FGd0JBO0FBQ0E7QUV2QkE7QUFDQTtBQUNBO0FGeUJBO0FBQ0E7QUV2QkE7QUFDQTtBRnlCQTtBQUNBO0FFdkJBO0FBQ0E7QUZ5QkE7QUFDQTtBRXhCQTtBQUNBO0FGMEJBO0FBQ0E7QUV6QkE7QUFDQTtBRjJCQTtBQUNBO0FFekJBO0FBQ0E7QUFDQTtBQUNBO0FGMkJBO0FBQ0E7QUUxQkE7QUFDQTtBRjRCQTtBQUNBO0FFM0JBO0FBQ0E7QUFDQTtBRjZCQTtBQUNBO0FFNUJBO0FBQ0E7QUY4QkE7QUFDQTtBRTdCQTtBQUNBO0FGK0JBO0FBQ0E7QUd2U0E7O0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIeVNBO0FBQ0E7QUd2U0E7O0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7O0FBQUE7QUFJQTtBQUVBO0FBQ0E7QUh1U0E7QUFDQTtBR3JTQTs7Ozs7QUFBQTtBQU1BO0FBQ0E7QUh1U0E7QUFDQTtBR3JTQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQXFCQTs7Ozs7Ozs7Ozs7QUFXQTtBSHVTQTtBQUNBO0FHalNBOzs7OztBQUFBO0FBTUE7O0FBRUE7QUhtU0E7QUFDQTtBRy9SQTs7QUFFQTtBSGlTQTtBQUNBO0FHN1JBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7O0FBY0E7QUgrUkE7QUFDQTtBRzVSQTtBQUNBO0FBRUE7Ozs7QUFBQTtBSGlTQTtBQUNBO0FHM1JBOzs7O0FBQUE7QUFLQTtBQUNBO0FBQUE7QUFDQTtBSDhSQTtBQUNBO0FHNVJBOztBQUVBO0FBRUE7QUFDQTtBSDZSQTtBQUNBO0FHM1JBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FINlJBO0FBQ0E7QUczUkE7OztBQUdBO0FBQ0E7QUFDQTtBSDZSQTtBQUNBO0FHelJBOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBa0JBO0FBQ0E7QUgyUkE7QUFDQTtBR3pSQTs7OztBQUFBO0FBS0E7Ozs7QUFJQTtBQUNBO0FIMlJBO0FBQ0E7QUd6UkE7OztBQUFBO0FBSUE7O0FBRUE7QUFDQTtBSDJSQTtBQUNBO0FHelJBO0FBQ0E7QUFFQTs7OztBQUFBO0FIOFJBO0FHdlJBOztBQUVBO0FIeVJBO0FBQ0E7QUd2UkE7O0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBT0E7QUFDQTtBSGlSQTtBQUNBO0FHL1FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUhpUkE7QUFDQTtBRy9RQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBSDZRQTtBQUNBO0FHOVBBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFjQTtBQUNBO0FIbVBBO0FBQ0E7QUdqUEE7QUFDQTtBSG1QQTtBQUNBO0FHalBBO0FBQ0E7QUFDQTtBQUNBO0FIbVBBO0FBQ0E7QUdqUEE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBSG1QQTtBQUNBO0FHalBBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSG1QQTtBQUNBO0FHalBBO0FBQ0E7QUFDQTtBSG1QQTtBQUNBO0FHalBBO0FBQ0E7QUhtUEE7QUFDQTtBR2pQQTtBQUNBO0FIbVBBO0FBQ0E7QUdqUEE7Ozs7Ozs7QUFBQTtBQVFBO0FBQ0E7QUhtUEE7QUFDQTtBR2pQQTtBQUNBO0FIbVBBO0FBQ0E7QUdqUEE7QUFDQTtBSG1QQTtBQUNBO0FHalBBO0FBQ0E7QUFDQTtBSG1QQTtBQUNBO0FHalBBO0FBQ0E7QUhtUEE7QUFDQTtBRzNPQTtBQUNBO0FINk9BO0FBQ0E7QUcxT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUgyT0E7QUFDQTtBR3pPQTtBQUNBOztBQUVBO0FIMk9BO0FBQ0E7QUd6T0E7QUFFQTtBQUVBO0FBRUE7QUh3T0E7QUFDQTtBR3RPQTtBQUNBO0FId09BO0FBQ0E7QUd0T0E7QUFDQTtBSHdPQTtBQUNBO0FHdE9BOzs7OztBQUFBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7OztBQUFBO0FBTUE7QUh1T0E7QUFDQTtBR3JPQTtBQUNBO0FBQ0E7QUh1T0E7QUFDQTtBR3JPQTtBQUNBO0FBQ0E7QUh1T0E7QUFDQTtBR3JPQTtBQUNBO0FIdU9BO0FBQ0E7QUdyT0E7QUFDQTtBQUNBO0FIdU9BO0FBQ0E7QUdyT0E7QUFDQTtBQUNBO0FIdU9BO0FBQ0E7QUdyT0E7OztBQUFBO0FBSUE7QUFDQTtBQUNBO0FIdU9BO0FBQ0E7QUdyT0E7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQWlCQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUh3T0E7QUFDQTtBR3RPQTtBQUNBO0FId09BO0FBQ0E7QUd0T0E7QUFDQTtBSHdPQTtBQUNBO0FHdE9BO0FBQ0E7QUFDQTtBSHdPQTtBQUNBO0FHck9BO0FBRUE7O0FBQUE7QUFHQTtBQUNBO0FIc09BO0FBQ0E7QUdwT0E7QUFDQTtBSHNPQTtBQUNBO0FHcE9BO0FBQ0E7QUFDQTtBSHNPQTtBQUNBO0FHcE9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUhzT0E7QUFDQTtBR25PQTtBQUNBO0FBQ0E7QUFDQTtBSHFPQTtBQUNBO0FHbk9BO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUhvT0E7QUFDQTtBR2xPQTtBQUNBO0FBQ0E7QUhvT0E7QUFDQTtBR2xPQTtBQUNBO0FBQ0E7QUFDQTtBSG9PQTtBR2pPQTtBQUNBO0FBQ0E7QUhtT0E7QUFDQTtBR2hPQTtBQUNBO0FBQ0E7QUFDQTtBSGtPQTtBQUNBO0FHaE9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSGtPQTtBQUNBO0FHOU5BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUhnT0E7QUFDQTtBRzlOQTtBQUNBO0FBQ0E7QUhnT0E7QUFDQTtBRzlOQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSGdPQTtBQUNBO0FHOU5BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUhnT0E7QUFDQTtBRzlOQTtBQUNBO0FIZ09BO0FBQ0E7QUc5TkE7QUFDQTtBQUNBO0FBQ0E7QUhnT0E7QUFDQTtBRzlOQTtBQUNBO0FBQ0E7QUhnT0E7QUFDQTtBRzlOQTtBQUNBO0FIZ09BO0FBQ0E7QUc5TkE7QUFDQTtBSGdPQTtBQUNBO0FHOU5BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSGdPQTtBQUNBO0FHOU5BO0FBQ0E7QUhnT0E7QUFDQTtBRzlOQTtBQUNBO0FBQ0E7QUFDQTtBSGdPQTtBQUNBO0FHOU5BOztBQUFBO0FBR0E7QUFDQTtBSGdPQTtBQUNBO0FHOU5BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIZ09BO0FBQ0E7QUc5TkE7QUFDQTtBSGdPQTtBQUNBO0FHOU5BO0FBQ0E7QUFDQTtBQUNBO0FIZ09BO0FBQ0E7QUc5TkE7O0FBRUE7QUhnT0E7QUFDQTtBRzlOQTtBQUNBO0FBQ0E7QUhnT0E7QUFDQTtBRzlOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSGdPQTtBQUNBO0FHOU5BO0FBQ0E7QUhnT0E7QUFDQTtBRzlOQTtBQUNBO0FIZ09BO0FBQ0E7QUc5TkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIZ09BO0FBQ0E7QUc5TkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUhnT0E7QUFDQTtBRzlOQTtBQUNBO0FIZ09BO0FBQ0E7QUc5TkE7QUFDQTtBQUNBO0FIZ09BO0FBQ0E7QUc5TkE7Ozs7Ozs7Ozs7QUFBQTtBQVdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBSCtOQTtBQUNBO0FHN05BO0FBQUE7QUFFQTtBQUNBO0FIK05BO0FBQ0E7QUc3TkE7QUFDQTtBQUNBO0FIK05BO0FBQ0E7QUc3TkE7Ozs7QUFBQTtBQUtBO0FBQ0E7QUgrTkE7QUFDQTtBRzdOQTtBQUNBO0FIK05BO0FBQ0E7QUc3TkE7QUFDQTtBSCtOQTtBQUNBO0FHN05BOztBQUVBO0FIK05BO0FBQ0E7QUc3TkE7O0FBRUE7QUgrTkE7QUFDQTtBRzdOQTtBQUNBO0FBQ0E7QUgrTkE7QUFDQTtBRzdOQTtBQUNBO0FIK05BO0FBQ0E7QUc3TkE7QUFDQTtBSCtOQTtBQUNBO0FHN05BO0FBQ0E7QUgrTkE7QUFDQTtBRzdOQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIZ09BO0FBQ0E7QUc5TkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSGdPQTtBQUNBO0FHOU5BO0FBQ0E7QUFDQTtBQUNBO0FIZ09BO0FBQ0E7QUc5TkE7QUFDQTtBSGdPQTtBQUNBO0FHN05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIK05BO0FBQ0E7QUc1TkE7QUFDQTtBQUNBO0FBQ0E7QUg4TkE7QUFDQTtBRzVOQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBdUJBO0FBQ0E7QUFFQTs7Ozs7Ozs7OztBQUFBO0FBV0E7QUFFQTs7O0FBQUE7QUFJQTtBQUNBO0FBRUE7O0FBQUE7QUFHQTtBSDJOQTtBQUNBO0FHdk5BO0FBQ0E7QUFFQTtBQUNBO0FId05BO0FBQ0E7QUdwTkE7O0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUhtTkE7QUFDQTtBR2pOQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FIa05BO0FBQ0E7QUc5TUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFrQkE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBSGdOQTtBQUNBO0FHNU1BOzs7OztBQUFBO0FBTUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBSDZNQTtBQUNBO0FHek1BOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQXNCQTtBQUNBO0FIMk1BO0FBQ0E7QUd6TUE7QUFDQTtBQUVBOzs7OztBQUFBO0FBTUE7QUgwTUE7QUFDQTtBR3RNQTs7Ozs7Ozs7O0FBQUE7QUFVQTs7OztBQUlBO0FId01BO0FBQ0E7QUd0TUE7QUFDQTs7Ozs7OztBQU9BO0FId01BO0FBQ0E7QUdwTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIc01BO0FBQ0E7QUdwTUE7QUFDQTtBQUNBO0FIc01BO0FBQ0E7QUduTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIcU1BO0FBQ0E7QUduTUE7QUFDQTtBQUNBO0FBQ0E7QUhxTUE7QUFDQTtBR25NQTtBQUNBO0FBQ0E7QUhxTUE7QUFDQTtBR25NQTtBQUNBO0FIcU1BO0FBQ0E7QUduTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUdBO0FBR0E7QUFFQTtBQUNBO0FINkxBO0FBQ0E7QUd4TEE7QUFBQTtBQUVBO0FBQ0E7QUgwTEE7QUFDQTtBR3hMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FIeUxBO0FBQ0E7QUd2TEE7QUFDQTtBQUNBO0FIeUxBO0FBQ0E7QUdyTEE7QUFDQTtBQUNBO0FIdUxBO0FBQ0E7QUdyTEE7QUFDQTtBQUNBO0FBQ0E7QUh1TEE7QUFDQTtBR3JMQTtBQUNBO0FBQ0E7QUh1TEE7QUFDQTtBR3JMQTtBQUNBO0FIdUxBO0FBQ0E7QUdyTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIdUxBO0FBQ0E7QUduTEE7QUFDQTtBQUNBO0FIcUxBO0FBQ0E7QUduTEE7QUFDQTtBQUNBO0FIcUxBO0FBQ0E7QUdsTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSG9MQTtBQUNBO0FHbExBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUhvTEE7QUFDQTtBR2pMQTs7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBSG1MQTtBQUNBO0FHaExBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSGtMQTtBQUNBO0FHaExBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUhrTEE7QUFDQTtBR2hMQTtBQUNBO0FBQ0E7QUFDQTtBSGtMQTtBQUNBO0FHaExBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FIbUxBO0FBQ0E7QUdqTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUhtTEE7QUFDQTtBR2pMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSGlMQTtBQUNBO0FHL0tBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUhpTEE7QUFDQTtBRy9LQTtBQUNBO0FBQ0E7QUhpTEE7QUFDQTtBRy9LQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIaUxBO0FBQ0E7QUcvS0E7QUFDQTs7QUFFQTtBSGlMQTtBQUNBO0FHL0tBOztBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUhrTEE7QUFDQTtBR2hMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIa0xBO0FBQ0E7QUdoTEE7QUFDQTtBSGtMQTtBQUNBO0FHaExBO0FBQ0E7QUhrTEE7QUFDQTtBR2hMQTs7QUFFQTtBQUNBO0FIa0xBO0FBQ0E7QUdoTEE7QUFDQTtBQUNBO0FIa0xBO0FBQ0E7QUdoTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIa0xBO0FBQ0E7QUdoTEE7QUFDQTtBQUNBO0FIa0xBO0FBQ0E7QUdoTEE7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQWVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIaUxBO0FBQ0E7QUcvS0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSGlMQTtBQUNBO0FHL0tBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUhpTEE7QUFDQTtBRy9LQTtBQUNBO0FBQ0E7QUFDQTtBSGlMQTtBQUNBO0FHL0tBOztBQUVBO0FBQ0E7QUhpTEE7QUFDQTtBRy9LQTtBQUNBO0FBQ0E7QUhpTEE7QUFDQTtBRy9LQTtBQUNBO0FBQ0E7QUhpTEE7QUFDQTtBRy9LQTtBQUNBO0FBQ0E7QUFDQTtBSGlMQTtBQUNBO0FHL0tBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSGlMQTtBQUNBO0FHL0tBO0FBQ0E7QUhpTEE7QUFDQTtBRy9LQTtBQUNBO0FBQ0E7QUhpTEE7QUFDQTtBRy9LQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUhpTEE7QUFDQTtBRy9LQTs7Ozs7Ozs7QUFBQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSGdMQTtBQUNBO0FHOUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIZ0xBO0FBQ0E7QUc5S0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSGdMQTtBQUNBO0FHOUtBO0FBQ0E7QUFDQTtBQUNBO0FIZ0xBO0FBQ0E7QUc5S0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIZ0xBO0FBQ0E7QUc5S0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIZ0xBO0FBQ0E7QUc5S0E7QUFDQTtBQUNBO0FBQ0E7QUhnTEE7QUFDQTtBRzlLQTtBQUNBO0FBQ0E7QUFDQTtBSGdMQTtBQUNBO0FHOUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUhnTEE7QUFDQTtBRzlLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUhnTEE7QUFDQTtBRzlLQTtBQUNBO0FBQ0E7QUhnTEE7QUFDQTtBRzlLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSGdMQTtBQUNBO0FHOUtBO0FBQ0E7QUhnTEE7QUFDQTtBRzlLQTtBQUNBO0FBQ0E7QUFDQTtBSGdMQTtBQUNBO0FHOUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUhnTEE7QUFDQTtBRzlLQTtBQUNBO0FIZ0xBO0FBQ0E7QUc3S0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBSCtLQTtBQUNBO0FHN0tBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIK0tBO0FBQ0E7QUc3S0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBSCtLQTtBQUNBO0FHN0tBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUgrS0E7QUFDQTtBRzdLQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FIK0tBO0FBQ0E7QUc3S0E7QUFFQTs7OztBQUFBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSDJLQTtBQUNBO0FHektBO0FBQ0E7QUFDQTtBQUNBO0FIMktBO0FBQ0E7QUd6S0E7QUFDQTs7QUFFQTtBSDJLQTtBQUNBO0FHektBOztBQUVBO0FIMktBO0FBQ0E7QUd6S0E7QUFDQTtBQUNBO0FIMktBO0FBQ0E7QUd6S0E7Ozs7OztBQUFBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUgyS0E7QUFDQTtBR3pLQTtBQUNBO0FIMktBO0FBQ0E7QUd6S0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSDBLQTtBQUNBO0FHeEtBO0FBQ0E7QUFDQTtBSDBLQTtBQUNBO0FHeEtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUgwS0E7QUFDQTtBR3hLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIMEtBO0FBQ0E7QUd4S0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUgwS0E7QUFDQTtBR3hLQTtBQUNBO0FBQ0E7QUFDQTtBSDBLQTtBQUNBO0FHeEtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSDBLQTtBQUNBO0FHeEtBO0FBSUE7QUh1S0E7QUFDQTtBR3JLQTtBQUdBO0FBQ0E7QUhxS0E7QUFDQTtBR25LQTtBQUNBO0FBQ0E7QUhxS0E7QUFDQTtBR25LQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIcUtBO0FBQ0E7QUduS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIcUtBO0FBQ0E7QUduS0E7QUFDQTtBQUNBO0FIcUtBO0FBQ0E7QUduS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUhxS0E7QUFDQTtBR25LQTtBQUNBO0FIcUtBO0FBQ0E7QUduS0E7QUFDQTtBQUNBO0FBQ0E7QUhxS0E7QUFDQTtBR25LQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIcUtBO0FBQ0E7QUduS0E7QUFDQTtBSHFLQTtBQUNBO0FHbktBO0FBQ0E7QUhxS0E7QUFDQTtBR25LQTtBQUNBO0FBQ0E7QUhxS0E7QUFDQTtBR25LQTtBQUNBO0FIcUtBO0FBQ0E7QUduS0E7QUFDQTtBSHFLQTtBQUNBO0FHbEtBOztBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUhvS0E7QUFDQTtBRy9KQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBSGlLQTtBQUNBO0FHL0pBO0FBQ0E7QUFDQTtBSGlLQTtBQUNBO0FHL0pBO0FBQ0E7QUhpS0E7QUFDQTtBRy9KQTtBQUNBO0FBQ0E7QUFDQTtBSGlLQTtBQUNBO0FHL0pBO0FBQ0E7QUFDQTtBSGlLQTtBQUNBO0FHL0pBO0FBQ0E7QUFDQTtBSGlLQTtBQUNBO0FHL0pBO0FBQ0E7QUFDQTtBSGlLQTtBQUNBO0FHL0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSGlLQTtBQUNBO0FHL0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUhpS0E7QUFDQTtBRy9KQTtBQUNBO0FBQ0E7QUFDQTtBSGlLQTtBQUNBO0FHL0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIaUtBO0FBQ0E7QUcvSkE7QUFDQTtBSGlLQTtBQUNBO0FHL0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUhrS0E7QUFDQTtBR2hLQTtBQUNBO0FIa0tBO0FBQ0E7QUdoS0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBSGtLQTtBR3BLQTtBQUNBO0FBQ0E7QUhrS0E7QUFDQTtBR2hLQTtBQUFBO0FBRUE7QUFDQTtBSGtLQTtBR25LQTtBQUNBO0FIa0tBO0FBQ0E7QUdoS0E7QUFDQTtBQUNBO0FIa0tBO0FBQ0E7QUcvSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUhpS0E7QUFDQTtBRy9KQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIaUtBO0FBQ0E7QUcvSkE7QUFDQTtBQUNBO0FBQ0E7QUhpS0E7QUFDQTtBRy9KQTtBQUVBOzs7O0FBQUE7QUFNQTtBQUNBO0FBQ0E7QUgrSkE7QUFDQTtBRzdKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIK0pBO0FBQ0E7QUc3SkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSCtKQTtBQUNBO0FHN0pBO0FBQ0E7QUFDQTtBSCtKQTtBQUNBO0FHN0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUgrSkE7QUFDQTtBRzdKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSCtKQTtBQUNBO0FHN0pBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSCtKQTtBQUNBO0FHN0pBOztBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIK0pBO0FBQ0E7QUcxSkE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSDRKQTtBQUNBO0FHMUpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSDRKQTtBQUNBO0FHMUpBO0FBQ0E7QUFDQTtBSDRKQTtBQUNBO0FHMUpBO0FBQ0E7QUFDQTtBQUNBO0FINEpBO0FBQ0E7QUcxSkE7QUFDQTtBSDRKQTtBQUNBO0FHMUpBO0FBQ0E7QUFDQTtBSDRKQTtBQUNBO0FHMUpBOzs7OztBQUFBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUh3SkE7QUFDQTtBR3RKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FId0pBO0FBQ0E7QUd0SkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUh3SkE7QUFDQTtBR3RKQTtBQUNBO0FId0pBO0FBQ0E7QUd0SkE7QUFDQTtBSHdKQTtBQUNBO0FHdEpBO0FBQ0E7QUh3SkE7QUFDQTtBR3RKQTtBQUNBO0FBQ0E7QUh3SkE7QUFDQTtBR3ZKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIeUpBO0FBQ0E7QUd2SkE7QUFDQTtBQUNBO0FIeUpBO0FBQ0E7QUd2SkE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7Ozs7Ozs7QUFBQTtBQVFBO0FBRUE7Ozs7OztBQUFBO0FBT0E7QUhxSkE7QUFDQTtBR25KQTtBQUNBO0FIcUpBO0FBQ0E7QUduSkE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUhvSkE7QUFDQTtBR2xKQTtBQUNBO0FBQ0E7QUhvSkE7QUFDQTtBR2xKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUhvSkE7QUFDQTtBR2xKQTtBQUNBO0FIb0pBO0FBQ0E7QUdqSkE7O0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIb0pBO0FBQ0E7QUdsSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFFQTtBQUVBOzs7OztBQUFBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSGtKQTtBQUNBO0FHaEpBO0FBQ0E7QUFDQTtBSGtKQTtBQUNBO0FHaEpBO0FBQ0E7QUhrSkE7QUFDQTtBR2hKQTtBQUNBO0FBQ0E7QUhrSkE7QUFDQTtBR2hKQTtBQUNBO0FIa0pBO0FBQ0E7QUdoSkE7Ozs7O0FBQUE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBSG1KQTtBQUNBO0FHakpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FIcUpBO0FBQ0E7QUduSkE7QUFDQTtBQUNBO0FIcUpBO0FBQ0E7QUduSkE7QUFDQTtBQUNBO0FIcUpBO0FBQ0E7QUduSkE7QUFDQTtBQUNBO0FIcUpBO0FBQ0E7QUduSkE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUhzSkE7QUFDQTtBR3BKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIc0pBO0FBQ0E7QUdwSkE7QUFDQTtBQUNBO0FIc0pBO0FBQ0E7QUdwSkE7QUFDQTtBQUFBO0FIdUpBO0FBQ0E7QUdySkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIdUpBO0FBQ0E7QUdySkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIdUpBO0FBQ0E7QUdySkE7QUFDQTtBQUNBO0FBQ0E7QUh1SkE7QUFDQTtBR3BKQTtBQUNBO0FIc0pBO0FBQ0E7QUdwSkE7QUFDQTtBQUNBO0FIc0pBO0FBQ0E7QUdwSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSHNKQTtBQUNBO0FHcEpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSHNKQTtBQUNBO0FHcEpBO0FBQ0E7QUhzSkE7QUFDQTtBR3BKQTtBQUNBO0FIc0pBO0FBQ0E7QUdwSkE7QUFDQTtBQUdBO0FBQ0E7QUhvSkE7QUdqSkE7QUFDQTtBQUNBO0FIbUpBO0FBQ0E7QUdoSkE7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBb0JBO0FBQ0E7QUFDQTtBQUNBO0FIaUpBO0FBQ0E7QUcvSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSGlKQTtBQUNBO0FHL0lBO0FBQ0E7QUhpSkE7QUFDQTtBRy9JQTtBQUNBO0FBQ0E7QUFDQTtBSGlKQTtBQUNBO0FHL0lBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSGlKQTtBQUNBO0FHL0lBO0FBQ0E7QUhpSkE7QUFDQTtBRy9JQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBRUE7O0FBQUE7QUFHQTtBQUNBO0FINklBO0FBQ0E7QUczSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSDZJQTtBRzFJQTtBQUNBO0FBQ0E7QUFDQTtBSDRJQTtBQUNBO0FHeklBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUgySUE7QUd4SUE7QUFDQTtBQUNBO0FIMElBO0FBQ0E7QUd2SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOztBQUFBO0FIMElBO0FBQ0E7QUd0SUE7QUFDQTtBQUNBO0FId0lBO0FBQ0E7QUd0SUE7QUFDQTtBSHdJQTtBQUNBO0FHdElBO0FBQ0E7QUFDQTtBSHdJQTtBQUNBO0FHdElBO0FBQ0E7QUh3SUE7QUFDQTtBR3RJQTtBQUNBO0FBRUE7O0FBQUE7QUFHQTtBQUNBO0FIdUlBO0FBQ0E7QUdySUE7QUFDQTtBQUNBO0FIdUlBO0FBQ0E7QUdySUE7QUFDQTtBQUNBO0FBQ0E7QUh1SUE7QUFDQTtBR3JJQTtBQUNBO0FIdUlBO0FBQ0E7QUdySUE7QUFDQTtBQUNBO0FIdUlBO0FBQ0E7QUdySUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBSHlJQTtBQUNBO0FHdklBOztBQUVBO0FBQ0E7QUh5SUE7QUFDQTtBR3ZJQTtBQUNBO0FBQ0E7QUFDQTtBSHlJQTtBQUNBO0FHdklBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUh5SUE7QUFDQTtBR3ZJQTtBQUNBO0FBQ0E7QUFDQTtBSHlJQTtBQUNBO0FHdklBO0FBQ0E7QUFDQTtBSHlJQTtBQUNBO0FHdklBO0FBQ0E7QUh5SUE7QUFDQTtBR3ZJQTtBQUNBO0FIeUlBO0FBQ0E7QUd2SUE7QUFDQTtBSHlJQTtBQUNBO0FHdklBO0FBQ0E7QUh5SUE7QUFDQTtBR3ZJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSHlJQTtBQUNBO0FHdklBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUh5SUE7QUFDQTtBR3ZJQTtBQUNBO0FIeUlBO0FBQ0E7QUd2SUE7QUFDQTtBSHlJQTtBQUNBO0FHdElBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FId0lBO0FBQ0E7QUd0SUE7QUFDQTtBQUNBO0FId0lBO0FBQ0E7QUd0SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBSHlJQTtBQUNBO0FHdklBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSHlJQTtBQUNBO0FHdklBO0FBQ0E7QUh5SUE7QUFDQTtBR3ZJQTtBQUNBO0FBQ0E7QUh5SUE7QUFDQTtBR3ZJQTtBQUNBO0FBQ0E7QUh5SUE7QUFDQTtBR3ZJQTtBQUNBO0FIeUlBO0FBQ0E7QUd2SUE7QUFDQTtBSHlJQTtBQUNBO0FHdklBO0FBQ0E7QUh5SUE7QUFDQTtBR3ZJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7QUFBQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7Ozs7O0FBQUE7QUFVQTtBSHdJQTtBQUNBO0FHcElBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSHNJQTtBQUNBO0FHcElBO0FBQ0E7QUFDQTtBSHNJQTtBQUNBO0FHcElBO0FBQ0E7QUFDQTtBQUNBO0FIc0lBO0FBQ0E7QUdwSUE7Ozs7QUFBQTtBQUtBO0FBQ0E7QUhzSUE7QUFDQTtBR3BJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSHNJQTtBQUNBO0FHcElBO0FBQ0E7QUhzSUE7QUFDQTtBR3BJQTs7QUFFQTtBQUNBO0FBQ0E7QUhzSUE7QUFDQTtBR3BJQTs7QUFFQTtBSHNJQTtBQUNBO0FHcElBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIc0lBO0FBQ0E7QUdwSUE7QUFDQTtBSHNJQTtBQUNBO0FHcElBO0FBQ0E7QUhzSUE7QUFDQTtBR3BJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUhzSUE7QUFDQTtBR3BJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSHNJQTtBQUNBO0FHcElBO0FBQ0E7QUhzSUE7QUFDQTtBR3BJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIc0lBO0FBQ0E7QUdwSUE7QUFDQTtBSHNJQTtBQUNBO0FHcElBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUhxSUE7QUFDQTtBR2pJQTs7Ozs7Ozs7Ozs7OztBQUFBO0FBY0E7OztBQUdBO0FBQ0E7QUFFQTtBQUNBO0FIa0lBO0FBQ0E7QUc5SEE7OztBQUdBO0FBQ0E7QUFFQTtBQUNBO0FIK0hBO0FBQ0E7QUczSEE7O0FBQUE7QUFHQTtBQUFBO0FIOEhBO0FBQ0E7QUc5SEE7QUFBQTtBSGlJQTtBQUNBO0FHaklBO0FBQUE7QUhvSUE7QUFDQTtBR3BJQTtBQUFBO0FIdUlBO0FBQ0E7QUd2SUE7QUFBQTtBSDBJQTtBQUNBO0FHMUlBO0FBQUE7QUg2SUE7QUFDQTtBRzdJQTtBQUFBO0FIZ0pBO0FBQ0E7QUdoSkE7QUFBQTtBSG1KQTtBQUNBO0FHbEpBO0FBQ0E7QUhvSkE7QUFDQTtBR2xKQTtBQUNBOzs7Ozs7OztBQVFBO0FBQ0E7QUhvSkE7QUFDQTtBR2pKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7O0FBQUE7QUFHQTtBQUVBOzs7O0FBQUE7QUFLQTtBSGlKQTtBQUNBO0FHL0lBO0FBQ0E7QUFDQTtBQUNBO0FIaUpBO0FBQ0E7QUcvSUE7QUFDQTtBQUNBO0FIaUpBO0FBQ0E7QUcvSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIaUpBO0FBQ0E7QUcvSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUhpSkE7QUFDQTtBRy9JQTtBQUNBOztBQUVBO0FBQUE7QUhrSkE7QUFDQTtBR2hKQTtBQUNBO0FIa0pBO0FBQ0E7QUdoSkE7QUFDQTtBSGtKQTtBQUNBO0FHL0lBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUhpSkE7QUFDQTtBRy9JQTtBQUNBO0FIaUpBO0FBQ0E7QUcvSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUhpSkE7QUFDQTtBRy9JQTtBQUNBO0FBQ0E7QUFDQTtBSGlKQTtBQUNBO0FHL0lBO0FBQ0E7QUhpSkE7QUFDQTtBRy9JQTtBQUNBO0FBQ0E7QUFDQTtBSGlKQTtBQUNBO0FHL0lBO0FBQ0E7QUhpSkE7QUFDQTtBRy9JQTtBQUNBO0FIaUpBO0FBQ0E7QUcvSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUhpSkE7QUFDQTtBRy9JQTtBQUNBO0FBQ0E7QUFDQTtBSGlKQTtBQUNBO0FHL0lBO0FBQ0E7QUhpSkE7QUFDQTtBRy9JQTtBQUNBO0FIaUpBO0FBQ0E7QUcvSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSGlKQTtBQUNBO0FHL0lBOzs7O0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUhpSkE7QUFDQTtBRzlJQTs7Ozs7QUFBQTtBQU1BOztBQUVBO0FBRUE7Ozs7QUFBQTtBQUtBO0FIK0lBO0FBQ0E7QUc3SUE7QUFDQTs7QUFFQTtBSCtJQTtBQUNBO0FHN0lBO0FBRUE7OztBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSDhJQTtBQUNBO0FHN0lBO0FBQ0E7QUFDQTtBQUNBO0FIK0lBO0FBQ0E7QUc5SUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBSDZJQTtBQUNBO0FHNUlBO0FBQ0E7QUFDQTtBQUNBO0FIOElBO0FBQ0E7QUc3SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7OztBQUFBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBSDRJQTtBQUNBO0FHM0lBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUg2SUE7QUFDQTtBRzFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSDRJQTtBQUNBO0FHM0lBO0FBQ0E7QUg2SUE7QUFDQTtBRzVJQTtBQUNBO0FIOElBO0FBQ0E7QUc3SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIK0lBO0FBQ0E7QUc5SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSGdKQTtBQUNBO0FHL0lBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSGlKQTtBQUNBO0FHaEpBO0FBQ0E7QUhrSkE7QUFDQTtBR2pKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIbUpBO0FBQ0E7QUdsSkE7QUFDQTtBSG9KQTtBQUNBO0FHdEpBO0FBQ0E7QUhvSkE7QUFDQTtBR25KQTtBQUNBO0FIcUpBO0FBQ0E7QUdwSkE7QUFDQTtBQUNBO0FBQ0E7QUhzSkE7QUFDQTtBR3JKQTtBQUNBO0FIdUpBO0FBQ0E7QUd0SkE7QUFDQTtBSHdKQTtBQUNBO0FHdkpBOzs7QUFHQTtBQUNBO0FIeUpBO0FBQ0E7QUd4SkE7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSDBKQTtBQUNBO0FHekpBO0FBQ0E7QUgySkE7QUFDQTtBRzFKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FINEpBO0FBQ0E7QUcxSkE7QUFDQTtBQUNBO0FINEpBO0FBQ0E7QUczSkE7QUFDQTtBQUNBO0FINkpBO0FBQ0E7QUc1SkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FIOEpBO0FBQ0E7QUc3SkE7QUFDQTtBSCtKQTtBQUNBO0FHOUpBO0FBQ0E7QUhnS0E7QUFDQTtBRy9KQTtBQUNBO0FBQ0E7QUhpS0E7QUFDQTtBR2hLQTtBQUNBO0FBQ0E7QUFDQTtBSGtLQTtBQUNBO0FHaktBOztBQUVBO0FIbUtBO0FBQ0E7QUlscUhBOztBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FKb3FIQTtBQUNBO0FJbHFIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSm9xSEE7QUFDQTtBSWxxSEE7Ozs7Ozs7Ozs7O0FBQUE7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUpvcUhBO0FBQ0E7QUlscUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUpvcUhBO0FBQ0E7QUlscUhBO0FBRUE7Ozs7QUFBQTtBQUtBO0FBRUE7O0FBQUE7QUpvcUhBO0FBQ0E7QUlocUhBO0FBRUE7QUFFQTtBQUVBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBRUE7QUFBQTtBQU9BO0FBQUE7QUp1cEhBO0FBQ0E7QUlycEhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSnVwSEE7QUFDQTtBSXJwSEE7QUFDQTtBSnVwSEE7QUFDQTtBSXJwSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUp1cEhBO0FBQ0E7QUlycEhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FKdXBIQTtBQUNBO0FJcnBIQTtBQUNBO0FKdXBIQTtBQUNBO0FJenBIQTtBQUNBO0FKdXBIQTtBQUNBO0FJcnBIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FKdXBIQTtBQUNBO0FJcnBIQTtBQUNBO0FKdXBIQTtBQUNBO0FJcnBIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSnVwSEE7QUFDQTtBSXJwSEE7O0FBQUE7QUFHQTtBQUNBO0FBRUE7Ozs7QUFBQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FKc3BIQTtBQUNBO0FJbHBIQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7OztBQUFBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSm1wSEE7QUFDQTtBSWpwSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FKbXBIQTtBQUNBO0FJanBIQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUppcEhBO0FBQ0E7QUk5b0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSmdwSEE7QUFDQTtBSTlvSEE7QUFDQTtBQUNBO0FBQ0E7QUpncEhBO0FBQ0E7QUk5b0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSmdwSEE7QUFDQTtBSTlvSEE7QUFDQTtBQUNBO0FKZ3BIQTtBQUNBO0FJOW9IQTtBQUNBO0FKZ3BIQTtBQUNBO0FJOW9IQTtBQUNBO0FBQ0E7QUpncEhBO0FBQ0E7QUk5b0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSmdwSEE7QUFDQTtBSTlvSEE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBT0E7QUFDQTtBSjJvSEE7QUFDQTtBSXpvSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FKMm9IQTtBQUNBO0FJem9IQTtBQUNBO0FBQ0E7QUoyb0hBO0FBQ0E7QUl6b0hBOzs7O0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUoyb0hBO0FBQ0E7QUl4b0hBOzs7OztBQUFBO0FBTUE7QUFDQTs7QUFFQTtBQUVBOzs7O0FBQUE7QUFLQTtBSnlvSEE7QUFDQTtBSXRvSEE7QUFDQTtBSndvSEE7QUFDQTtBSXRvSEE7O0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUp3b0hBO0FBQ0E7QUlyb0hBOzs7O0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUp1b0hBO0FBQ0E7QUlyb0hBO0FBQ0E7QUp1b0hBO0FBQ0E7QUlyb0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFPQTtBQUNBO0FBQ0E7QUppb0hBO0FBQ0E7QUkvbkhBO0FBRUE7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUFBO0FKZ29IQTtBQUNBO0FJN25IQTtBQUNBO0FKK25IQTtBQUNBO0FJN25IQTtBQUNBO0FKK25IQTtBQUNBO0FJNW5IQTtBQUNBO0FKOG5IQTtBQUNBO0FJNW5IQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FKOG5IQTtBQUNBO0FJNW5IQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUo4bkhBO0FBQ0E7QUk1bkhBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7OztBQUFBO0FBT0E7QUFDQTtBSjZuSEE7QUFDQTtBSTNuSEE7QUFDQTtBQUVBOzs7Ozs7OztBQUFBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FKNG5IQTtBQUNBO0FJMW5IQTtBQUNBO0FBQ0E7QUo0bkhBO0FBQ0E7QUkvbkhBO0FBQ0E7QUFDQTtBSjRuSEE7QUFDQTtBSTFuSEE7QUFDQTtBSjRuSEE7QUFDQTtBSTFuSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSjRuSEE7QUFDQTtBSTFuSEE7QUFDQTtBSjRuSEE7QUFDQTtBSTFuSEE7QUFDQTtBQUNBO0FKNG5IQTtBQUNBO0FJMW5IQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSjRuSEE7QUFDQTtBSTFuSEE7QUFDQTtBQUNBO0FKNG5IQTtBQUNBO0FJMW5IQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUo0bkhBO0FBQ0E7QUkxbkhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSjRuSEE7QUFDQTtBSTFuSEE7QUFDQTtBSjRuSEE7QUFDQTtBSTFuSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FKNG5IQTtBQUNBO0FJeG5IQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FKeW5IQTtBQUNBO0FJdm5IQTtBQUNBO0FBQ0E7QUp5bkhBO0FBQ0E7QUl4bkhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUowbkhBO0FBQ0E7QUl4bkhBOzs7Ozs7QUFNQTtBSjBuSEE7QUFDQTtBSXhuSEE7Ozs7Ozs7QUFPQTtBSjBuSEE7QUFDQTtBSXhuSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FKMG5IQTtBQUNBO0FJeG5IQTtBQUNBO0FKMG5IQTtBQUNBO0FJeG5IQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUowbkhBO0FBQ0E7QUl4bkhBO0FBQ0E7QUowbkhBO0FBQ0E7QUl4bkhBO0FBQ0E7QUFDQTtBQUNBO0FKMG5IQTtBQUNBO0FJeG5IQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FKMG5IQTtBQUNBO0FJeG5IQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FKMG5IQTtBQUNBO0FJeG5IQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU9BO0FKb25IQTtBQUNBO0FJbG5IQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FKb25IQTtBQUNBO0FJbG5IQTtBQUNBO0FBQ0E7QUpvbkhBO0FBQ0E7QUlqbkhBO0FBQ0E7QUFDQTtBSm1uSEE7QUFDQTtBSWhuSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FKa25IQTtBQUNBO0FJaG5IQTs7QUFFQTtBQUNBO0FBQ0E7QUprbkhBO0FBQ0E7QUlobkhBO0FBQ0E7QUprbkhBO0FBQ0E7QUlobkhBO0FBQ0E7QUFDQTtBSmtuSEE7QUFDQTtBSWhuSEE7QUFDQTtBQUNBO0FBQ0E7QUprbkhBO0FBQ0E7QUlobkhBO0FBQ0E7QUprbkhBO0FBQ0E7QUlobkhBO0FBQ0E7QUFDQTtBQUNBO0FKa25IQTtBQUNBO0FJL21IQTtBQUNBO0FBQ0E7QUppbkhBO0FBQ0E7QUkvbUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSmluSEE7QUFDQTtBSS9tSEE7QUFDQTtBSmluSEE7QUFDQTtBSS9tSEE7QUFDQTtBQUNBO0FKaW5IQTtBQUNBO0FJL21IQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FKaW5IQTtBQUNBO0FJL21IQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUppbkhBO0FBQ0E7QUkvbUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUppbkhBO0FBQ0E7QUkvbUhBO0FBQ0E7QUppbkhBO0FBQ0E7QUkvbUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSmluSEE7QUFDQTtBSS9tSEE7QUFDQTtBSmluSEE7QUFDQTtBSS9tSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUppbkhBO0FBQ0E7QUkvbUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUppbkhBO0FBQ0E7QUkvbUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUppbkhBO0FBQ0E7QUkvbUhBO0FBQ0E7QUppbkhBO0FBQ0E7QUkvbUhBO0FBQ0E7QUFDQTtBSmluSEE7QUFDQTtBSS9tSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FKaW5IQTtBQUNBO0FJL21IQTtBQUNBO0FKaW5IQTtBQUNBO0FJL21IQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FKaW5IQTtBQUNBO0FJL21IQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FKaW5IQTtBQUNBO0FJOW1IQTtBQUVBOzs7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBSittSEE7QUFDQTtBSTdtSEE7QUFDQTtBQUNBO0FKK21IQTtBQUNBO0FJN21IQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FKK21IQTtBQUNBO0FJN21IQTtBQUNBO0FKK21IQTtBQUNBO0FJN21IQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FKK21IQTtBQUNBO0FJN21IQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FKK21IQTtBQUNBO0FJN21IQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUorbUhBO0FBQ0E7QUk3bUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSittSEE7QUFDQTtBSTdtSEE7OztBQUdBO0FKK21IQTtBQUNBO0FJN21IQTtBQUNBO0FKK21IQTtBQUNBO0FJN21IQTs7O0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBSittSEE7QUFDQTtBSTdtSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUorbUhBO0FBQ0E7QUk3bUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSittSEE7QUFDQTtBSTdtSEE7QUFDQTtBQUNBO0FBQ0E7QUorbUhBO0FBQ0E7QUk3bUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUorbUhBO0FBQ0E7QUk3bUhBO0FBQ0E7QUorbUhBO0FBQ0E7QUk3bUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUorbUhBO0FBQ0E7QUk3bUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUorbUhBO0FBQ0E7QUk3bUhBO0FBQ0E7QUFDQTtBQUNBO0FKK21IQTtBQUNBO0FJN21IQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FKK21IQTtBQUNBO0FJN21IQTtBQUNBO0FKK21IQTtBQUNBO0FJN21IQTtBQUNBO0FBQ0E7QUorbUhBO0FBQ0E7QUk3bUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUorbUhBO0FBQ0E7QUk3bUhBO0FBQ0E7QUorbUhBO0FBQ0E7QUk3bUhBO0FBQ0E7QUorbUhBO0FBQ0E7QUk3bUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSittSEE7QUFDQTtBSTdtSEE7QUFDQTtBSittSEE7QUFDQTtBSTdtSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBSittSEE7QUFDQTtBSTdtSEE7Ozs7Ozs7QUFPQTtBSittSEE7QUFDQTtBSTdtSEE7QUFDQTtBSittSEE7QUFDQTtBSTdtSEE7Ozs7Ozs7Ozs7QUFBQTtBQVdBO0FBQ0E7QUFDQTtBQUNBO0FKK21IQTtBQUNBO0FJNW1IQTs7Ozs7Ozs7O0FBQUE7QUFVQTtBQUNBO0FBQ0E7QUo4bUhBO0FJL21IQTtBQUNBO0FKOG1IQTtBQUNBO0FJM21IQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQWtCQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7QUFBQTtBQU1BO0FBQ0E7QUowbUhBO0FBQ0E7QUlybUhBO0FBQ0E7QUFDQTtBQUNBO0FKdW1IQTtBQUNBO0FJcm1IQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FKdW1IQTtBQUNBO0FJcm1IQTtBQUNBO0FBQ0E7QUp1bUhBO0FBQ0E7QUlwbUhBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUpzbUhBO0FBQ0E7QUtsdEpBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFFQTtBQUNBO0FBQUE7QUxxdEpBO0FBQ0E7QUtudEpBOztBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7QUFBQTtBQUdBO0FMb3RKQTtBQUNBO0FLbHRKQTs7OztBQUlBO0FMb3RKQTtBQUNBO0FLbHRKQTs7QUFFQTtBQUVBOzs7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7Ozs7O0FBQUE7QUw0dEpBO0FBQ0E7QUtodEpBO0FBQUE7QUFFQTs7QUFFQTtBTGt0SkE7QUFDQTtBS2h0SkE7QUFDQTtBQUNBO0FMa3RKQTtBQUNBO0FLaHRKQTs7Ozs7O0FBQUE7QUFPQTtBQUNBO0FMa3RKQTtBQUNBO0FLaHRKQTtBQUNBO0FMa3RKQTtBQUNBO0FLaHRKQTtBQUNBO0FBQ0E7QUxrdEpBO0FBQ0E7QUtodEpBO0FBQ0E7QUxrdEpBO0FBQ0E7QUtodEpBOztBQUFBO0FBR0E7Ozs7OztBQU1BO0FBQ0E7QUxrdEpBO0FBQ0E7QUtodEpBO0FBQ0E7QUFDQTtBQUNBO0FMa3RKQTtBQUNBO0FLaHRKQTs7QUFBQTtBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBTGt0SkE7QUFDQTtBS2h0SkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBTGt0SkE7QUFDQTtBSy9zSkE7QUFDQTtBQUNBO0FBQ0E7QUxpdEpBO0FBQ0E7QU01MkpBO0FBQ0E7QU44MkpBO0FBQ0E7QU01MkpBO0FBQ0E7QUFDQTtBTjgySkE7QUFDQTtBTTUySkE7QUFDQTtBQUNBO0FBQ0E7QU44MkpBO0FBQ0E7QU01MkpBO0FBQ0E7QUFDQTtBTjgySkE7QUFDQTtBTTUySkE7QUFDQTtBTjgySkE7QUFDQTtBTTUySkE7QUFFQTtBQUNBO0FBQ0E7QU42MkpBO0FBQ0E7QU01MkpBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBTjgySkE7QUFDQTtBTTUySkE7QUFDQTs7QUFFQTtBTjgySkE7QUFDQTtBTTUySkE7QUFDQTtBQUNBO0FBQ0E7QU44MkpBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9*/