@charset "UTF-8";

/* =============================================================================
 * LoginPro — UI/UX 2026 (login moderno, fluido, animato, theme-aware)
 * -----------------------------------------------------------------------------
 * Porta il linguaggio visivo di DatiPro 2026 sulle pagine d'accesso LoginPro:
 * aurora animata, card "glass", input fluidi, bottoni con gradiente/glow,
 * toggle tema chiaro/scuro. Self-contained su design token --dp-* (light in
 * :root, dark in html[data-theme="dark"]) così funziona senza ricompilare lo
 * SCSS legacy di LoginPro. Sorgente speculare: resources/sass/login2026.scss.
 *
 * La palette blu istituzionale e' identica nei due temi; cambiano le superfici.
 * ============================================================================= */

:root {
  --dp-bg: #F3F7FC;
  --dp-surface: #ffffff;
  --dp-text: #162D49;
  --dp-text-title: #162D49;
  --dp-border: #DCECF9;
  --dp-brand: #0086C9;
  --dp-brand-rgb: 0, 134, 201;
  --dp-navy: #162D49;
  --dp-navy-rgb: 22, 45, 73;
  --dp-card: #203D60;
  --dp-card-rgb: 32, 61, 96;
  --dp-slate: #465D82;
  --dp-muted: #BDCFE7;
  --dp-highlight: #8BB6F1;
  --dp-highlight-rgb: 139, 182, 241;
  --dp-button-start: #315CC4;
  --dp-button-end: #2676BD;
  --dp-accent-readable: #0086C9;
  --dp-accent: #0086C9;
  --dp-accent-strong: #0086C9;
  --dp-accent-strong-rgb: 0, 134, 201;
  --dp-accent-2: #8BB6F1;
  --dp-danger: #f05050;
  --dp-success: #22b700;
  --dp-radius-sm: 8px;
  --dp-radius: 12px;
  --dp-radius-lg: 18px;
  --dp-radius-pill: 999px;
  --dp-shadow-sm: 0 1px 2px rgba(20, 35, 60, .06), 0 1px 3px rgba(20, 35, 60, .10);
  --dp-shadow: 0 10px 30px rgba(20, 35, 60, .10), 0 4px 12px rgba(20, 35, 60, .06);
  --dp-shadow-lg: 0 30px 70px rgba(20, 35, 60, .18), 0 12px 28px rgba(20, 35, 60, .10);
  --dp-transition: 170ms cubic-bezier(.4, 0, .2, 1);
  --dp-transition-slow: 280ms cubic-bezier(.4, 0, .2, 1);
  /* macchie aurora di sfondo */
  --dp-aurora-1: rgba(0, 134, 201, .30);
  --dp-aurora-2: rgba(38, 118, 189, .26);
  --dp-aurora-3: rgba(139, 182, 241, .24);
  --dp-aurora-4: rgba(0, 134, 201, .18);
  --dp-canvas: #F3F7FC;
  --dp-input-bg: #ffffff;
  --dp-input-text: #162D49;
  --dp-input-placeholder: rgba(var(--dp-navy-rgb), .56);
  --dp-input-autofill-bg: #DCECF9;
}

html[data-theme=dark] {
  --dp-bg: #162D49;
  --dp-surface: #203D60;
  --dp-text: #BDCFE7;
  --dp-text-title: #8BB6F1;
  --dp-border: #465D82;
  --dp-accent-readable: #8BB6F1;
  --dp-accent: #0086C9;
  --dp-accent-strong: #0086C9;
  --dp-accent-strong-rgb: 0, 134, 201;
  --dp-accent-2: #8BB6F1;
  --dp-danger: #f05050;
  --dp-success: #22b700;
  --dp-shadow-sm: 0 1px 2px rgba(0, 0, 0, .35), 0 1px 3px rgba(0, 0, 0, .30);
  --dp-shadow: 0 14px 38px rgba(0, 0, 0, .45), 0 6px 16px rgba(0, 0, 0, .30);
  --dp-shadow-lg: 0 36px 80px rgba(0, 0, 0, .55), 0 14px 30px rgba(0, 0, 0, .40);
  --dp-aurora-1: rgba(0, 134, 201, .55);
  --dp-aurora-2: rgba(0, 134, 201, .45);
  --dp-aurora-3: rgba(0, 134, 201, .42);
  --dp-aurora-4: rgba(0, 134, 201, .40);
  --dp-canvas: #162D49;
  --dp-input-bg: rgba(22, 45, 73, .82);
  --dp-input-text: #FFFFFF;
  --dp-input-placeholder: rgba(189, 207, 231, .66);
  --dp-input-autofill-bg: #DCECF9;
}

/* Loader condiviso LoginPro/DatiPro: un solo linguaggio visivo per area
 * autenticata, login e azioni che richiedono una nuova pagina. */

#onloadwaitingpopup {
  position: fixed !important;
  inset: 0;
  z-index: 99999;
  display: flex !important;
  width: auto;
  height: auto;
  align-items: center;
  justify-content: center;
  pointer-events: all;
  background: radial-gradient(520px 360px at 50% 42%, rgba(var(--dp-accent-strong-rgb), 0.16), transparent 72%), rgba(243, 247, 252, 0.76);
  backdrop-filter: blur(5px);
  opacity: 0;
  animation: dpPageLoaderEnter 0.18s ease 0.14s forwards;
  transition: opacity 0.18s ease, visibility 0.18s ease;
}

#onloadwaitingpopup.is-active {
  animation-delay: 0s;
}

#onloadwaitingpopup.is-leaving {
  pointer-events: none;
  opacity: 0;
  animation: none;
}

.dp-page-loader__surface {
  display: inline-flex;
  min-width: 132px;
  align-items: center;
  gap: 12px;
  padding: 13px 17px;
  border: 1px solid rgba(var(--dp-accent-strong-rgb), 0.2);
  border-radius: var(--dp-radius-lg);
  color: var(--dp-navy);
  background: rgba(255, 255, 255, 0.94);
  box-shadow: 0 14px 42px rgba(38, 56, 74, 0.18);
}

.dp-page-loader__ring {
  display: block;
  flex: 0 0 30px;
  width: 30px;
  height: 30px;
  box-sizing: border-box;
  border: 3px solid rgba(var(--dp-accent-strong-rgb), 0.18);
  border-top-color: var(--dp-accent-strong);
  border-radius: 50%;
  animation: dpPageLoaderSpin 0.78s linear infinite;
}

.dp-page-loader__label {
  font-size: 13px;
  font-weight: 650;
  letter-spacing: 0.01em;
}

.dp-inline-spinner,
.fa-spinner.fa-spin,
.fa-spinner.fa-pulse {
  display: inline-block !important;
  flex: 0 0 1em;
  width: 1em !important;
  height: 1em !important;
  box-sizing: border-box;
  border: 2px solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  vertical-align: -0.12em;
  animation: dpPageLoaderSpin 0.72s linear infinite !important;
}

.fa-spinner.fa-spin::before,
.fa-spinner.fa-pulse::before {
  content: "" !important;
}

html[data-theme=dark] #onloadwaitingpopup {
  background: radial-gradient(520px 360px at 50% 42%, rgba(var(--dp-accent-strong-rgb), 0.18), transparent 72%), rgba(22, 45, 73, 0.74);
}

html[data-theme=dark] .dp-page-loader__surface {
  color: #BDCFE7;
  background: rgba(32, 61, 96, 0.95);
  box-shadow: 0 16px 46px rgba(0, 0, 0, 0.32);
}

@keyframes dpPageLoaderEnter {
  to {
    opacity: 1;
  }
}

@keyframes dpPageLoaderSpin {
  to {
    transform: rotate(360deg);
  }
}

@media (prefers-reduced-motion: reduce) {
  #onloadwaitingpopup {
    opacity: 1;
    animation: none;
    transition: none;
  }

  #onloadwaitingpopup.is-leaving {
    opacity: 0;
  }

  .dp-page-loader__ring,
  .dp-inline-spinner,
  .fa-spinner.fa-spin,
  .fa-spinner.fa-pulse {
    animation: none !important;
  }
}

html:not([data-theme=dark]) .loginform,
html:not([data-theme=dark]) .loginform .omega__blockform__title,
html:not([data-theme=dark]) .loginform .omega__form__label,
html:not([data-theme=dark]) .loginform .omega__checkbox__label,
html:not([data-theme=dark]) .loginform p,
html:not([data-theme=dark]) .loginform span:not(.check):not(.color--white),
html:not([data-theme=dark]) .loginform .form-control,
html:not([data-theme=dark]) .loginform .omega__form__input {
  color: var(--dp-input-text) !important;
  -webkit-text-fill-color: var(--dp-input-text) !important;
}

html:not([data-theme=dark]) .loginform .omega__btn__bluelight,
html:not([data-theme=dark]) .loginform .omega__btn__bluelight * {
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
}

/* ----------------------------------------------------------------------------
 * Canvas + aurora animata (dietro a tutto)
 * -------------------------------------------------------------------------- */

html {
  background: var(--dp-canvas);
}

body.omega__body {
  position: relative;
  min-height: 100vh;
  color: var(--dp-text);
  background: transparent !important;
  -webkit-font-smoothing: antialiased;
  transition: color var(--dp-transition);
}

body.omega__body::before {
  content: "";
  position: fixed;
  inset: -25%;
  z-index: 0;
  pointer-events: none;
  background: radial-gradient(58% 55% at 16% 18%, var(--dp-aurora-1), transparent 66%), radial-gradient(55% 52% at 86% 20%, var(--dp-aurora-2), transparent 66%), radial-gradient(60% 58% at 52% 102%, var(--dp-aurora-3), transparent 70%), radial-gradient(50% 48% at 78% 78%, var(--dp-aurora-4), transparent 70%);
  animation: dpAurora 22s ease-in-out infinite alternate;
  will-change: transform;
  transition: background 0.4s ease;
}

@keyframes dpAurora {
  0% {
    transform: translate3d(-8%, -6%, 0) scale(1.08) rotate(-3deg);
  }

  50% {
    transform: translate3d(6%, 5%, 0) scale(1.18) rotate(5deg);
  }

  100% {
    transform: translate3d(10%, 8%, 0) scale(1.22) rotate(10deg);
  }
}

/* Velo per leggibilità extra in dark */

html[data-theme=dark] body.omega__body::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background: radial-gradient(120% 90% at 50% 40%, transparent 40%, rgba(4, 14, 28, 0.55));
}

/* la UI sta sopra l'aurora */

body.omega__body .c-wrapper,
body.omega__body .c-body,
body.omega__body .c-main,
body.omega__body .container-fluid,
body.omega__body #ui-view {
  position: relative;
  z-index: 1;
}

/* ----------------------------------------------------------------------------
 * Contenitore + card login
 * -------------------------------------------------------------------------- */

.loginform__container {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: calc(100vh - 90px);
  padding: 32px 16px;
}

.omega__blockform.loginform {
  width: 100%;
  max-width: 440px;
  margin: 0 auto;
  padding: 38px 34px 34px;
  background: var(--dp-surface);
  border: 1px solid var(--dp-border);
  border-radius: var(--dp-radius-lg);
  box-shadow: var(--dp-shadow-lg);
  backdrop-filter: saturate(140%) blur(2px);
  overflow: hidden;
  animation: dpCardIn 0.55s cubic-bezier(0.16, 1, 0.3, 1) both;
  transition: box-shadow var(--dp-transition), border-color var(--dp-transition), transform var(--dp-transition), background var(--dp-transition);
}

/* sottile barra accent in cima alla card */

.omega__blockform.loginform::before {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 3px;
  background: linear-gradient(90deg, var(--dp-button-start), var(--dp-button-end) 55%, var(--dp-highlight));
  opacity: 0.9;
}

/* glow soffuso interno in dark */

html[data-theme=dark] .omega__blockform.loginform {
  background-color: rgba(32, 61, 96, 0.94);
  border-color: rgba(0, 134, 201, 0.26);
  background-image: radial-gradient(120% 120% at 0% 0%, rgba(0, 134, 201, 0.12), transparent 46%), radial-gradient(120% 120% at 100% 100%, rgba(0, 134, 201, 0.1), transparent 52%);
  background-repeat: no-repeat;
}

@keyframes dpCardIn {
  from {
    opacity: 0;
    transform: translateY(18px) scale(0.985);
  }

  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

/* ----------------------------------------------------------------------------
 * Header card (logo + titolo)
 * -------------------------------------------------------------------------- */

.loginform__header {
  padding: 0;
  margin-bottom: 26px;
  text-align: center;
  animation: dpFadeUp 0.6s 0.08s both;
}

.loginform__logo {
  max-width: 280px;
  width: 100%;
  height: auto;
  margin: 0 auto 6px;
  filter: drop-shadow(0 6px 14px rgba(0, 0, 0, 0.12));
}

.loginform__header .omega__blockform__title {
  position: relative;
  display: inline-block;
  margin: 16px 0 0;
  padding: 14px 0 0;
  font-size: 21px;
  font-weight: 700;
  letter-spacing: 0.2px;
  color: var(--dp-text-title);
  border-top: 0 !important;
}

.loginform__header .omega__blockform__title::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: -10px;
  width: 46px;
  height: 3px;
  border-radius: var(--dp-radius-pill);
  background: linear-gradient(90deg, var(--dp-button-start), var(--dp-button-end));
  transform: translateX(-50%);
}

/* ----------------------------------------------------------------------------
 * Body / form
 * -------------------------------------------------------------------------- */

.omega__blockform__body {
  animation: dpFadeUp 0.6s 0.16s both;
}

.loginform .form-group {
  margin-bottom: 18px;
}

.loginform .omega__form__label {
  display: block;
  margin-bottom: 7px;
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: 0.02em;
  color: var(--dp-text-title);
  text-align: left !important;
}

.loginform .omega__form__input,
.loginform input.form-control,
.loginform select.form-control,
.loginform textarea.form-control {
  width: 100%;
  height: auto;
  padding: 12px 14px;
  font-size: 14.5px;
  color: var(--dp-input-text) !important;
  -webkit-text-fill-color: var(--dp-input-text) !important;
  caret-color: var(--dp-accent-strong);
  background: var(--dp-input-bg);
  border: 1px solid var(--dp-border);
  border-radius: var(--dp-radius) !important;
  box-shadow: none;
  transition: border-color var(--dp-transition), box-shadow var(--dp-transition), background-color var(--dp-transition), transform var(--dp-transition);
}

.loginform .omega__form__input::-moz-placeholder, .loginform input.form-control::-moz-placeholder {
  color: var(--dp-input-placeholder) !important;
  opacity: 1;
  -webkit-text-fill-color: var(--dp-input-placeholder) !important;
}

.loginform .omega__form__input::placeholder,
.loginform input.form-control::placeholder {
  color: var(--dp-input-placeholder) !important;
  opacity: 1;
  -webkit-text-fill-color: var(--dp-input-placeholder) !important;
}

.loginform .omega__form__input:hover,
.loginform input.form-control:hover {
  border-color: rgba(var(--dp-accent-strong-rgb), 0.45);
}

.loginform .omega__form__input:focus,
.loginform input.form-control:focus,
.loginform select.form-control:focus {
  outline: none;
  color: var(--dp-input-text) !important;
  -webkit-text-fill-color: var(--dp-input-text) !important;
  background: var(--dp-input-bg);
  border-color: var(--dp-accent-strong);
  box-shadow: 0 0 0 4px rgba(var(--dp-accent-strong-rgb), 0.15);
  transform: translateY(-1px);
}

html[data-theme=dark] .loginform .omega__form__input,
html[data-theme=dark] .loginform input.form-control,
html[data-theme=dark] .loginform select.form-control,
html[data-theme=dark] .loginform textarea.form-control {
  color: var(--dp-input-text) !important;
  -webkit-text-fill-color: var(--dp-input-text) !important;
  background: var(--dp-input-bg);
  border-color: rgba(0, 134, 201, 0.24);
}

html[data-theme=dark] .loginform .omega__form__input::-moz-placeholder, html[data-theme=dark] .loginform input.form-control::-moz-placeholder {
  color: var(--dp-input-placeholder) !important;
  -webkit-text-fill-color: var(--dp-input-placeholder) !important;
}

html[data-theme=dark] .loginform .omega__form__input::placeholder,
html[data-theme=dark] .loginform input.form-control::placeholder {
  color: var(--dp-input-placeholder) !important;
  -webkit-text-fill-color: var(--dp-input-placeholder) !important;
}

html[data-theme=dark] .loginform .omega__form__input:focus,
html[data-theme=dark] .loginform input.form-control:focus,
html[data-theme=dark] .loginform select.form-control:focus {
  background: rgba(22, 45, 73, 0.96);
  color: var(--dp-input-text) !important;
  -webkit-text-fill-color: var(--dp-input-text) !important;
  border-color: #0086C9;
  box-shadow: 0 0 0 4px rgba(0, 134, 201, 0.18);
}

/* Chrome/autofill: mantiene testo leggibile anche quando il browser forza sfondi chiari. */

.loginform input.form-control:-webkit-autofill,
.loginform input.form-control:-webkit-autofill:hover,
.loginform input.form-control:-webkit-autofill:focus,
.loginform input.omega__form__input:-webkit-autofill,
.loginform input.omega__form__input:-webkit-autofill:hover,
.loginform input.omega__form__input:-webkit-autofill:focus {
  color: var(--dp-input-text) !important;
  -webkit-text-fill-color: var(--dp-input-text) !important;
  caret-color: var(--dp-accent-strong);
  border-color: rgba(var(--dp-accent-strong-rgb), 0.38) !important;
  box-shadow: 0 0 0 1000px var(--dp-input-bg) inset, 0 0 0 4px rgba(var(--dp-accent-strong-rgb), 0.1) !important;
  -webkit-transition: background-color 9999s ease-out 0s, color 9999s ease-out 0s;
  transition: background-color 9999s ease-out 0s, color 9999s ease-out 0s;
}

html[data-theme=dark] .loginform input.form-control:-webkit-autofill,
html[data-theme=dark] .loginform input.form-control:-webkit-autofill:hover,
html[data-theme=dark] .loginform input.form-control:-webkit-autofill:focus,
html[data-theme=dark] .loginform input.omega__form__input:-webkit-autofill,
html[data-theme=dark] .loginform input.omega__form__input:-webkit-autofill:hover,
html[data-theme=dark] .loginform input.omega__form__input:-webkit-autofill:focus {
  color: #162D49 !important;
  -webkit-text-fill-color: #162D49 !important;
  caret-color: #162D49;
  border-color: rgba(0, 134, 201, 0.45) !important;
  box-shadow: 0 0 0 1000px var(--dp-input-autofill-bg) inset, 0 0 0 4px rgba(0, 134, 201, 0.18) !important;
}

/* ----------------------------------------------------------------------------
 * Bottoni
 * -------------------------------------------------------------------------- */

.loginform .btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 12px 18px;
  font-size: 14.5px;
  font-weight: 600;
  letter-spacing: 0.02em;
  border-radius: var(--dp-radius) !important;
  transition: background-color var(--dp-transition), border-color var(--dp-transition), color var(--dp-transition), box-shadow var(--dp-transition), transform var(--dp-transition), filter var(--dp-transition);
}

.loginform .width--100,
.loginform .w-100 {
  width: 100%;
}

.loginform .margintop-10 {
  margin-top: 12px;
}

/* primario: gradiente accent + glow, con shimmer all'hover */

.loginform .omega__btn__bluelight {
  position: relative;
  margin-top: 6px;
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
  background: linear-gradient(135deg, var(--dp-button-start), var(--dp-button-end)) !important;
  border: 1px solid transparent !important;
  box-shadow: 0 8px 20px rgba(var(--dp-accent-strong-rgb), 0.3);
  overflow: hidden;
}

.loginform .omega__btn__bluelight span,
.loginform .omega__btn__bluelight i {
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
}

.loginform .omega__btn__bluelight::after {
  content: "";
  position: absolute;
  top: 0;
  left: -120%;
  width: 60%;
  height: 100%;
  background: linear-gradient(100deg, transparent, rgba(255, 255, 255, 0.35), transparent);
  transform: skewX(-18deg);
  transition: left 0.6s ease;
}

.loginform .omega__btn__bluelight:hover {
  transform: translateY(-2px);
  filter: brightness(1.04);
  box-shadow: 0 12px 28px rgba(var(--dp-accent-strong-rgb), 0.42);
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
}

.loginform .omega__btn__bluelight:hover::after {
  left: 130%;
}

.loginform .omega__btn__bluelight:active {
  transform: translateY(0);
  box-shadow: 0 6px 14px rgba(var(--dp-accent-strong-rgb), 0.3);
}

html:not([data-theme=dark]) .loginform .omega__btn__bluelight {
  background: linear-gradient(135deg, var(--dp-button-start), var(--dp-button-end)) !important;
  border: 1px solid rgba(0, 134, 201, 0.45) !important;
  box-shadow: 0 8px 20px rgba(0, 134, 201, 0.24);
}

html:not([data-theme=dark]) .loginform .omega__btn__bluelight:hover {
  background: linear-gradient(135deg, var(--dp-button-start), var(--dp-button-end)) !important;
  border-color: rgba(38, 118, 189, 0.8) !important;
  box-shadow: 0 12px 28px rgba(0, 134, 201, 0.34) !important;
  /* Stessa sfumatura del riposo: il passaggio si sente con una schiarita. */
  filter: brightness(1.08);
}

/* secondario: outline morbido */

.loginform .omega__btn__white {
  color: var(--dp-accent-readable) !important;
  -webkit-text-fill-color: var(--dp-accent-readable) !important;
  background: var(--dp-surface) !important;
  border: 1px solid var(--dp-accent-strong) !important;
  box-shadow: var(--dp-shadow-sm);
}

.loginform .omega__btn__white span,
.loginform .omega__btn__white i {
  color: var(--dp-accent-readable) !important;
  -webkit-text-fill-color: var(--dp-accent-readable) !important;
}

.loginform .omega__btn__white:hover {
  transform: translateY(-1px);
  color: var(--dp-accent-readable) !important;
  -webkit-text-fill-color: var(--dp-accent-readable) !important;
  border-color: var(--dp-accent-strong) !important;
  background: rgba(var(--dp-accent-strong-rgb), 0.06) !important;
  box-shadow: var(--dp-shadow-sm);
}

.loginform .omega__btn__white:active {
  transform: translateY(0);
}

.loginform .omega--center {
  text-align: center;
}

/* link generici dentro la card */

.loginform a:not(.btn) {
  color: var(--dp-accent-readable);
  font-weight: 600;
  text-decoration: none;
  transition: color var(--dp-transition);
}

.loginform a:not(.btn):hover {
  color: var(--dp-accent);
  text-decoration: underline;
}

/* checkbox "ricordami" */

.loginform .omega__checkbox__label {
  color: var(--dp-text);
}

/* ----------------------------------------------------------------------------
 * Toggle tema (sole/luna) — fisso in alto a destra
 * -------------------------------------------------------------------------- */

.dp-theme-toggle {
  position: fixed;
  top: 18px;
  right: 18px;
  z-index: 50;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  color: var(--dp-text-title);
  background: var(--dp-surface);
  border: 1px solid var(--dp-border);
  border-radius: var(--dp-radius-pill);
  box-shadow: var(--dp-shadow-sm);
  cursor: pointer;
  transition: color var(--dp-transition), border-color var(--dp-transition), background-color var(--dp-transition), transform var(--dp-transition), box-shadow var(--dp-transition);
}

.dp-theme-toggle:hover {
  color: var(--dp-accent-readable);
  border-color: var(--dp-accent-strong);
  transform: translateY(-1px);
  box-shadow: var(--dp-shadow);
}

.dp-theme-toggle:active {
  transform: translateY(0) scale(0.95);
}

/* Nessun bordo residuo dopo il click col mouse: outline solo per navigazione da tastiera */

.dp-theme-toggle:focus {
  outline: none;
}

.dp-theme-toggle:focus:not(:focus-visible) {
  color: var(--dp-text-title);
  border-color: var(--dp-border);
  box-shadow: var(--dp-shadow-sm);
  transform: none;
}

.dp-theme-toggle:focus-visible {
  outline: 2px solid var(--dp-accent-strong);
  outline-offset: 2px;
}

.dp-theme-toggle i {
  font-size: 19px;
  transition: opacity 0.3s ease, transform 0.3s ease, filter 0.3s ease;
}

/* Sole (mostrato in dark): rotazione fluida + bagliore viola come la piattaforma */

.dp-theme-toggle .dp-icon-sun {
  display: none;
  width: 21px;
  height: 21px;
  padding: 0;
  overflow: visible;
}

.dp-theme-toggle .dp-icon-moon {
  display: inline-block;
  font-size: 16px;
}

html[data-theme=dark] .dp-theme-toggle .dp-icon-sun {
  display: inline-block;
}

html[data-theme=dark] .dp-theme-toggle .dp-icon-moon {
  display: none;
}

html[data-theme=dark] .dp-theme-toggle:hover .dp-icon-sun {
  transform: rotate(35deg) scale(1.1);
  filter: drop-shadow(0 0 7px rgba(0, 134, 201, 0.7));
}

/* Luna (mostrata in light): oscillazione + bagliore celeste */

.dp-theme-toggle:hover .dp-icon-moon {
  transform: rotate(-18deg) scale(1.1);
  filter: drop-shadow(0 0 6px rgba(150, 205, 255, 0.9));
}

/* ----------------------------------------------------------------------------
 * Footer minimale sotto al login
 * -------------------------------------------------------------------------- */

body.omega__body .omega__footer,
body.omega__body footer {
  position: relative;
  z-index: 1;
  color: var(--dp-text);
  background: transparent !important;
  border: 0 !important;
}

/* alert / messaggi flash dentro la card-zone */

.loginform .invalid-feedback,
.loginform .text-danger,
.loginform .help-block {
  color: var(--dp-danger);
  font-size: 12.5px;
}

/* ----------------------------------------------------------------------------
 * Animazioni condivise + accessibilità
 * -------------------------------------------------------------------------- */

@keyframes dpFadeUp {
  from {
    opacity: 0;
    transform: translateY(10px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@media (max-width: 520px) {
  .omega__blockform.loginform {
    padding: 30px 22px 26px;
    border-radius: var(--dp-radius);
  }

  .loginform__container {
    min-height: calc(100vh - 70px);
    padding: 20px 12px;
  }
}

@media (prefers-reduced-motion: reduce) {
  body.omega__body::before {
    animation: none;
  }

  .omega__blockform.loginform,
  .loginform__header,
  .omega__blockform__body {
    animation: none;
  }

  .loginform .btn,
  .loginform .omega__form__input {
    transition: none;
  }
}


/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvc2Fzcy9sb2dpbjIwMjYuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvc2Fzcy9fbG9hZGluZzIwMjYuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFBQTs7Ozs7Ozs7OzttRkFZa0Y7O0FBQWxGO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7Q0FESjs7QUFJQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtDQUhKOztBQ3JGQTtrRUR3RmlFOztBQ3RGakU7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0NEdUZKOztBQ3BGQTtFQUNJO0NEdUZKOztBQ3BGQTtFQUNJO0VBQ0E7RUFDQTtDRHVGSjs7QUNwRkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtDRHVGSjs7QUNwRkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7Q0R1Rko7O0FDcEZBO0VBQ0k7RUFDQTtFQUNBO0NEdUZKOztBQ25GQTs7O0VBR0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7Q0RzRko7O0FDbkZBOztFQUVJO0NEc0ZKOztBQ25GQTtFQUNJO0NEc0ZKOztBQ2pGQTtFQUNJO0VBQ0E7RUFDQTtDRG9GSjs7QUNqRkE7RUFDSTtJQUFLO0dEcUZQO0NBQ0Y7O0FDbkZBO0VBQ0k7SUFBSztHRHVGUDtDQUNGOztBQ3JGQTtFQUNJO0lBQ0k7SUFDQTtJQUNBO0dEd0ZOOztFQ3JGRTtJQUNJO0dEd0ZOOztFQ3JGRTs7OztJQUlJO0dEd0ZOO0NBQ0Y7O0FBbEhBOzs7Ozs7OztFQVFJO0VBQ0E7Q0FxSEo7O0FBbEhBOztFQUVJO0VBQ0E7Q0FxSEo7O0FBbEhBOztnRkFzSCtFOztBQW5IL0U7RUFBTztDQXVIUDs7QUFySEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7Q0F3SEo7O0FBckhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBS0E7RUFDQTtFQUNBO0NBb0hKOztBQWpIQTtFQUNJO0lBQU87R0FxSFQ7O0VBcEhFO0lBQU87R0F3SFQ7O0VBdkhFO0lBQU87R0EySFQ7Q0FDRjs7QUF6SEE7O0FBQ0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7Q0E2SEo7O0FBMUhBOztBQUNBOzs7OztFQUk0QjtFQUFvQjtDQWdJaEQ7O0FBOUhBOztnRkFrSStFOztBQS9IL0U7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7Q0FrSUo7O0FBL0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0NBa0lKOztBQTlIQTs7QUFDQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtDQWtJSjs7QUEvSEE7O0FBQ0E7RUFDSTtFQUNBO0VBQ0E7RUFHQTtDQWlJSjs7QUE5SEE7RUFDSTtJQUFPO0lBQVk7R0FtSXJCOztFQWxJRTtJQUFPO0lBQVk7R0F1SXJCO0NBQ0Y7O0FBcklBOztnRkF5SStFOztBQXRJL0U7RUFDSTtFQUNBO0VBQ0E7RUFDQTtDQXlJSjs7QUF0SUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0NBeUlKOztBQXRJQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtDQXlJSjs7QUF0SUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7Q0F5SUo7O0FBdElBOztnRkEwSStFOztBQXZJL0U7RUFDSTtDQTBJSjs7QUF2SUE7RUFBeUI7Q0EySXpCOztBQXpJQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0NBNElKOztBQXpJQTs7OztFQUlJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtDQTRJSjs7QUF4SUE7RUFFSTtFQUNBO0VBQ0E7Q0EySUo7O0FBL0lBOztFQUVJO0VBQ0E7RUFDQTtDQTJJSjs7QUF4SUE7O0VBQ3NDO0NBNEl0Qzs7QUExSUE7OztFQUdJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0NBNklKOztBQTFJQTs7OztFQUlJO0VBQ0E7RUFDQTtFQUNBO0NBNklKOztBQTNJQTtFQUVJO0VBQ0E7Q0E4SUo7O0FBakpBOztFQUVJO0VBQ0E7Q0E4SUo7O0FBNUlBOzs7RUFHSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0NBK0lKOztBQTVJQTs7QUFDQTs7Ozs7O0VBTUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQUE7Q0FnSko7O0FBN0lBOzs7Ozs7RUFNSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0NBZ0pKOztBQTdJQTs7Z0ZBaUorRTs7QUE5SS9FO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7Q0FpSko7O0FBNUlBOztFQUNvQjtDQWdKcEI7O0FBL0lBO0VBQTJCO0NBbUozQjs7QUFqSkE7O0FBQ0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0NBcUpKOztBQWxKQTs7RUFFSTtFQUNBO0NBcUpKOztBQWxKQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtDQXFKSjs7QUFsSkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0NBcUpKOztBQW5KQTtFQUFpRDtDQXVKakQ7O0FBdEpBO0VBQTJDO0VBQTBCO0NBMkpyRTs7QUF6SkE7RUFDSTtFQUNBO0VBQ0E7Q0E0Sko7O0FBMUpBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtDQTZKSjs7QUExSkE7O0FBQ0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0NBOEpKOztBQTNKQTs7RUFFSTtFQUNBO0NBOEpKOztBQTNKQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtDQThKSjs7QUE1SkE7RUFBdUM7Q0FnS3ZDOztBQTlKQTtFQUE0QjtDQWtLNUI7O0FBaEtBOztBQUNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7Q0FvS0o7O0FBbEtBO0VBQStCO0VBQXlCO0NBdUt4RDs7QUFyS0E7O0FBQ0E7RUFBcUM7Q0EwS3JDOztBQXhLQTs7Z0ZBNEsrRTs7QUF6Sy9FO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7Q0E0S0o7O0FBeEtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7Q0EyS0o7O0FBektBO0VBQTBCO0NBNksxQjs7QUE1S0E7O0FBQ0E7RUFBeUI7Q0FpTHpCOztBQWhMQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0NBbUxKOztBQWpMQTtFQUNJO0VBQ0E7Q0FvTEo7O0FBbExBO0VBQ0k7RUFDQTtDQXFMSjs7QUFuTEE7O0FBQ0E7RUFBZ0M7RUFBZTtFQUFhO0VBQWM7RUFBWTtDQTRMdEY7O0FBM0xBO0VBQWlDO0VBQXVCO0NBZ014RDs7QUEvTEE7RUFBd0Q7Q0FtTXhEOztBQWxNQTtFQUF5RDtDQXNNekQ7O0FBck1BO0VBQ0k7RUFDQTtDQXdNSjs7QUF0TUE7O0FBQ0E7RUFDSTtFQUNBO0NBME1KOztBQXZNQTs7Z0ZBMk0rRTs7QUF4TS9FOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7Q0EyTUo7O0FBeE1BOztBQUNBOzs7RUFFeUI7RUFBeUI7Q0E4TWxEOztBQTVNQTs7Z0ZBZ04rRTs7QUE3TS9FO0VBQ0k7SUFBTztJQUFZO0dBa05yQjs7RUFqTkU7SUFBTztJQUFZO0dBc05yQjtDQUNGOztBQXBOQTtFQUNJO0lBQThCO0lBQXlCO0dBeU56RDs7RUF4TkU7SUFBd0I7SUFBZ0M7R0E2TjFEO0NBQ0Y7O0FBM05BO0VBQ0k7SUFBMkI7R0ErTjdCOztFQTlORTs7O0lBRTBCO0dBa081Qjs7RUFqT0U7O0lBQ2lDO0dBcU9uQztDQUNGIiwiZmlsZSI6Ii9jc3MvbG9naW4yMDI2LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBMb2dpblBybyDigJQgVUkvVVggMjAyNiAobG9naW4gbW9kZXJubywgZmx1aWRvLCBhbmltYXRvLCB0aGVtZS1hd2FyZSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBQb3J0YSBpbCBsaW5ndWFnZ2lvIHZpc2l2byBkaSBEYXRpUHJvIDIwMjYgc3VsbGUgcGFnaW5lIGQnYWNjZXNzbyBMb2dpblBybzpcbiAqIGF1cm9yYSBhbmltYXRhLCBjYXJkIFwiZ2xhc3NcIiwgaW5wdXQgZmx1aWRpLCBib3R0b25pIGNvbiBncmFkaWVudGUvZ2xvdyxcbiAqIHRvZ2dsZSB0ZW1hIGNoaWFyby9zY3Vyby4gU2VsZi1jb250YWluZWQgc3UgZGVzaWduIHRva2VuIC0tZHAtKiAobGlnaHQgaW5cbiAqIDpyb290LCBkYXJrIGluIGh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0pIGNvc8OsIGZ1bnppb25hIHNlbnphIHJpY29tcGlsYXJlIGxvXG4gKiBTQ1NTIGxlZ2FjeSBkaSBMb2dpblByby4gU29yZ2VudGUgc3BlY3VsYXJlOiByZXNvdXJjZXMvc2Fzcy9sb2dpbjIwMjYuc2Nzcy5cbiAqXG4gKiBMYSBwYWxldHRlIGJsdSBpc3RpdHV6aW9uYWxlIGUnIGlkZW50aWNhIG5laSBkdWUgdGVtaTsgY2FtYmlhbm8gbGUgc3VwZXJmaWNpLlxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuOnJvb3Qge1xuICAgIC0tZHAtYmc6ICAgICAgICAgICAgI0YzRjdGQztcbiAgICAtLWRwLXN1cmZhY2U6ICAgICAgICNmZmZmZmY7XG4gICAgLS1kcC10ZXh0OiAgICAgICAgICAjMTYyRDQ5O1xuICAgIC0tZHAtdGV4dC10aXRsZTogICAgIzE2MkQ0OTtcbiAgICAtLWRwLWJvcmRlcjogICAgICAgICNEQ0VDRjk7XG4gICAgLS1kcC1icmFuZDogICAgICAgICAjMDA4NkM5O1xuICAgIC0tZHAtYnJhbmQtcmdiOiAgICAgMCwgMTM0LCAyMDE7XG4gICAgLS1kcC1uYXZ5OiAgICAgICAgICAjMTYyRDQ5O1xuICAgIC0tZHAtbmF2eS1yZ2I6ICAgICAgMjIsIDQ1LCA3MztcbiAgICAtLWRwLWNhcmQ6ICAgICAgICAgICMyMDNENjA7XG4gICAgLS1kcC1jYXJkLXJnYjogICAgICAzMiwgNjEsIDk2O1xuICAgIC0tZHAtc2xhdGU6ICAgICAgICAgIzQ2NUQ4MjtcbiAgICAtLWRwLW11dGVkOiAgICAgICAgICNCRENGRTc7XG4gICAgLS1kcC1oaWdobGlnaHQ6ICAgICAjOEJCNkYxO1xuICAgIC0tZHAtaGlnaGxpZ2h0LXJnYjogMTM5LCAxODIsIDI0MTtcbiAgICAtLWRwLWJ1dHRvbi1zdGFydDogICMzMTVDQzQ7XG4gICAgLS1kcC1idXR0b24tZW5kOiAgICAjMjY3NkJEO1xuICAgIC0tZHAtYWNjZW50LXJlYWRhYmxlOiAjMDA4NkM5O1xuICAgIC0tZHAtYWNjZW50OiAgICAgICAgIzAwODZDOTtcbiAgICAtLWRwLWFjY2VudC1zdHJvbmc6ICMwMDg2Qzk7XG4gICAgLS1kcC1hY2NlbnQtc3Ryb25nLXJnYjogMCwgMTM0LCAyMDE7XG4gICAgLS1kcC1hY2NlbnQtMjogICAgICAjOEJCNkYxO1xuICAgIC0tZHAtZGFuZ2VyOiAgICAgICAgI2YwNTA1MDtcbiAgICAtLWRwLXN1Y2Nlc3M6ICAgICAgICMyMmI3MDA7XG5cbiAgICAtLWRwLXJhZGl1cy1zbTogICA4cHg7XG4gICAgLS1kcC1yYWRpdXM6ICAgICAgMTJweDtcbiAgICAtLWRwLXJhZGl1cy1sZzogICAxOHB4O1xuICAgIC0tZHAtcmFkaXVzLXBpbGw6IDk5OXB4O1xuXG4gICAgLS1kcC1zaGFkb3ctc206IDAgMXB4IDJweCByZ2JhKDIwLCAzNSwgNjAsIC4wNiksIDAgMXB4IDNweCByZ2JhKDIwLCAzNSwgNjAsIC4xMCk7XG4gICAgLS1kcC1zaGFkb3c6ICAgIDAgMTBweCAzMHB4IHJnYmEoMjAsIDM1LCA2MCwgLjEwKSwgMCA0cHggMTJweCByZ2JhKDIwLCAzNSwgNjAsIC4wNik7XG4gICAgLS1kcC1zaGFkb3ctbGc6IDAgMzBweCA3MHB4IHJnYmEoMjAsIDM1LCA2MCwgLjE4KSwgMCAxMnB4IDI4cHggcmdiYSgyMCwgMzUsIDYwLCAuMTApO1xuXG4gICAgLS1kcC10cmFuc2l0aW9uOiAgICAgIDE3MG1zIGN1YmljLWJlemllciguNCwgMCwgLjIsIDEpO1xuICAgIC0tZHAtdHJhbnNpdGlvbi1zbG93OiAyODBtcyBjdWJpYy1iZXppZXIoLjQsIDAsIC4yLCAxKTtcblxuICAgIC8qIG1hY2NoaWUgYXVyb3JhIGRpIHNmb25kbyAqL1xuICAgIC0tZHAtYXVyb3JhLTE6IHJnYmEoMCwgMTM0LCAyMDEsIC4zMCk7XG4gICAgLS1kcC1hdXJvcmEtMjogcmdiYSgzOCwgMTE4LCAxODksIC4yNik7XG4gICAgLS1kcC1hdXJvcmEtMzogcmdiYSgxMzksIDE4MiwgMjQxLCAuMjQpO1xuICAgIC0tZHAtYXVyb3JhLTQ6IHJnYmEoMCwgMTM0LCAyMDEsIC4xOCk7XG4gICAgLS1kcC1jYW52YXM6ICAgI0YzRjdGQztcbiAgICAtLWRwLWlucHV0LWJnOiAjZmZmZmZmO1xuICAgIC0tZHAtaW5wdXQtdGV4dDogIzE2MkQ0OTtcbiAgICAtLWRwLWlucHV0LXBsYWNlaG9sZGVyOiByZ2JhKHZhcigtLWRwLW5hdnktcmdiKSwgLjU2KTtcbiAgICAtLWRwLWlucHV0LWF1dG9maWxsLWJnOiAjRENFQ0Y5O1xufVxuXG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIHtcbiAgICAtLWRwLWJnOiAgICAgICAgICAgICMxNjJENDk7XG4gICAgLS1kcC1zdXJmYWNlOiAgICAgICAjMjAzRDYwO1xuICAgIC0tZHAtdGV4dDogICAgICAgICAgI0JEQ0ZFNztcbiAgICAtLWRwLXRleHQtdGl0bGU6ICAgICM4QkI2RjE7XG4gICAgLS1kcC1ib3JkZXI6ICAgICAgICAjNDY1RDgyO1xuICAgIC0tZHAtYWNjZW50LXJlYWRhYmxlOiAjOEJCNkYxO1xuICAgIC0tZHAtYWNjZW50OiAgICAgICAgIzAwODZDOTtcbiAgICAtLWRwLWFjY2VudC1zdHJvbmc6ICMwMDg2Qzk7XG4gICAgLS1kcC1hY2NlbnQtc3Ryb25nLXJnYjogMCwgMTM0LCAyMDE7XG4gICAgLS1kcC1hY2NlbnQtMjogICAgICAjOEJCNkYxO1xuICAgIC0tZHAtZGFuZ2VyOiAgICAgICAgI2YwNTA1MDtcbiAgICAtLWRwLXN1Y2Nlc3M6ICAgICAgICMyMmI3MDA7XG5cbiAgICAtLWRwLXNoYWRvdy1zbTogMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgLjM1KSwgMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgLjMwKTtcbiAgICAtLWRwLXNoYWRvdzogICAgMCAxNHB4IDM4cHggcmdiYSgwLCAwLCAwLCAuNDUpLCAwIDZweCAxNnB4IHJnYmEoMCwgMCwgMCwgLjMwKTtcbiAgICAtLWRwLXNoYWRvdy1sZzogMCAzNnB4IDgwcHggcmdiYSgwLCAwLCAwLCAuNTUpLCAwIDE0cHggMzBweCByZ2JhKDAsIDAsIDAsIC40MCk7XG5cbiAgICAtLWRwLWF1cm9yYS0xOiByZ2JhKDAsIDEzNCwgMjAxLCAuNTUpO1xuICAgIC0tZHAtYXVyb3JhLTI6IHJnYmEoMCwgMTM0LCAyMDEsIC40NSk7XG4gICAgLS1kcC1hdXJvcmEtMzogcmdiYSgwLCAxMzQsIDIwMSwgLjQyKTtcbiAgICAtLWRwLWF1cm9yYS00OiByZ2JhKDAsIDEzNCwgMjAxLCAuNDApO1xuICAgIC0tZHAtY2FudmFzOiAgICMxNjJENDk7XG4gICAgLS1kcC1pbnB1dC1iZzogcmdiYSgyMiwgNDUsIDczLCAuODIpO1xuICAgIC0tZHAtaW5wdXQtdGV4dDogI0ZGRkZGRjtcbiAgICAtLWRwLWlucHV0LXBsYWNlaG9sZGVyOiByZ2JhKDE4OSwgMjA3LCAyMzEsIC42Nik7XG4gICAgLS1kcC1pbnB1dC1hdXRvZmlsbC1iZzogI0RDRUNGOTtcbn1cblxuQGltcG9ydCAnbG9hZGluZzIwMjYnO1xuXG5odG1sOm5vdChbZGF0YS10aGVtZT1cImRhcmtcIl0pIC5sb2dpbmZvcm0sXG5odG1sOm5vdChbZGF0YS10aGVtZT1cImRhcmtcIl0pIC5sb2dpbmZvcm0gLm9tZWdhX19ibG9ja2Zvcm1fX3RpdGxlLFxuaHRtbDpub3QoW2RhdGEtdGhlbWU9XCJkYXJrXCJdKSAubG9naW5mb3JtIC5vbWVnYV9fZm9ybV9fbGFiZWwsXG5odG1sOm5vdChbZGF0YS10aGVtZT1cImRhcmtcIl0pIC5sb2dpbmZvcm0gLm9tZWdhX19jaGVja2JveF9fbGFiZWwsXG5odG1sOm5vdChbZGF0YS10aGVtZT1cImRhcmtcIl0pIC5sb2dpbmZvcm0gcCxcbmh0bWw6bm90KFtkYXRhLXRoZW1lPVwiZGFya1wiXSkgLmxvZ2luZm9ybSBzcGFuOm5vdCguY2hlY2spOm5vdCguY29sb3ItLXdoaXRlKSxcbmh0bWw6bm90KFtkYXRhLXRoZW1lPVwiZGFya1wiXSkgLmxvZ2luZm9ybSAuZm9ybS1jb250cm9sLFxuaHRtbDpub3QoW2RhdGEtdGhlbWU9XCJkYXJrXCJdKSAubG9naW5mb3JtIC5vbWVnYV9fZm9ybV9faW5wdXQge1xuICAgIGNvbG9yOiB2YXIoLS1kcC1pbnB1dC10ZXh0KSAhaW1wb3J0YW50O1xuICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB2YXIoLS1kcC1pbnB1dC10ZXh0KSAhaW1wb3J0YW50O1xufVxuXG5odG1sOm5vdChbZGF0YS10aGVtZT1cImRhcmtcIl0pIC5sb2dpbmZvcm0gLm9tZWdhX19idG5fX2JsdWVsaWdodCxcbmh0bWw6bm90KFtkYXRhLXRoZW1lPVwiZGFya1wiXSkgLmxvZ2luZm9ybSAub21lZ2FfX2J0bl9fYmx1ZWxpZ2h0ICoge1xuICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7XG4gICAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQ2FudmFzICsgYXVyb3JhIGFuaW1hdGEgKGRpZXRybyBhIHR1dHRvKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbmh0bWwgeyBiYWNrZ3JvdW5kOiB2YXIoLS1kcC1jYW52YXMpOyB9XG5cbmJvZHkub21lZ2FfX2JvZHkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBtaW4taGVpZ2h0OiAxMDB2aDtcbiAgICBjb2xvcjogdmFyKC0tZHAtdGV4dCk7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1kcC10cmFuc2l0aW9uKTtcbn1cblxuYm9keS5vbWVnYV9fYm9keTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBpbnNldDogLTI1JTtcbiAgICB6LWluZGV4OiAwO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIGJhY2tncm91bmQ6XG4gICAgICAgIHJhZGlhbC1ncmFkaWVudCg1OCUgNTUlIGF0IDE2JSAxOCUsIHZhcigtLWRwLWF1cm9yYS0xKSwgdHJhbnNwYXJlbnQgNjYlKSxcbiAgICAgICAgcmFkaWFsLWdyYWRpZW50KDU1JSA1MiUgYXQgODYlIDIwJSwgdmFyKC0tZHAtYXVyb3JhLTIpLCB0cmFuc3BhcmVudCA2NiUpLFxuICAgICAgICByYWRpYWwtZ3JhZGllbnQoNjAlIDU4JSBhdCA1MiUgMTAyJSwgdmFyKC0tZHAtYXVyb3JhLTMpLCB0cmFuc3BhcmVudCA3MCUpLFxuICAgICAgICByYWRpYWwtZ3JhZGllbnQoNTAlIDQ4JSBhdCA3OCUgNzglLCB2YXIoLS1kcC1hdXJvcmEtNCksIHRyYW5zcGFyZW50IDcwJSk7XG4gICAgYW5pbWF0aW9uOiBkcEF1cm9yYSAyMnMgZWFzZS1pbi1vdXQgaW5maW5pdGUgYWx0ZXJuYXRlO1xuICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAuNHMgZWFzZTtcbn1cblxuQGtleWZyYW1lcyBkcEF1cm9yYSB7XG4gICAgMCUgICB7IHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTglLCAtNiUsIDApIHNjYWxlKDEuMDgpIHJvdGF0ZSgtM2RlZyk7IH1cbiAgICA1MCUgIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCg2JSwgNSUsIDApICAgc2NhbGUoMS4xOCkgcm90YXRlKDVkZWcpOyB9XG4gICAgMTAwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAlLCA4JSwgMCkgIHNjYWxlKDEuMjIpIHJvdGF0ZSgxMGRlZyk7IH1cbn1cblxuLyogVmVsbyBwZXIgbGVnZ2liaWxpdMOgIGV4dHJhIGluIGRhcmsgKi9cbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gYm9keS5vbWVnYV9fYm9keTo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGluc2V0OiAwO1xuICAgIHotaW5kZXg6IDA7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KDEyMCUgOTAlIGF0IDUwJSA0MCUsIHRyYW5zcGFyZW50IDQwJSwgcmdiYSg0LCAxNCwgMjgsIC41NSkpO1xufVxuXG4vKiBsYSBVSSBzdGEgc29wcmEgbCdhdXJvcmEgKi9cbmJvZHkub21lZ2FfX2JvZHkgLmMtd3JhcHBlcixcbmJvZHkub21lZ2FfX2JvZHkgLmMtYm9keSxcbmJvZHkub21lZ2FfX2JvZHkgLmMtbWFpbixcbmJvZHkub21lZ2FfX2JvZHkgLmNvbnRhaW5lci1mbHVpZCxcbmJvZHkub21lZ2FfX2JvZHkgI3VpLXZpZXcgeyBwb3NpdGlvbjogcmVsYXRpdmU7IHotaW5kZXg6IDE7IH1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQ29udGVuaXRvcmUgKyBjYXJkIGxvZ2luXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLmxvZ2luZm9ybV9fY29udGFpbmVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggLSA5MHB4KTtcbiAgICBwYWRkaW5nOiAzMnB4IDE2cHg7XG59XG5cbi5vbWVnYV9fYmxvY2tmb3JtLmxvZ2luZm9ybSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiA0NDBweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBwYWRkaW5nOiAzOHB4IDM0cHggMzRweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kcC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1kcC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWRwLXJhZGl1cy1sZyk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tZHAtc2hhZG93LWxnKTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IHNhdHVyYXRlKDE0MCUpIGJsdXIoMnB4KTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGFuaW1hdGlvbjogZHBDYXJkSW4gLjU1cyBjdWJpYy1iZXppZXIoLjE2LCAxLCAuMywgMSkgYm90aDtcbiAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IHZhcigtLWRwLXRyYW5zaXRpb24pLCBib3JkZXItY29sb3IgdmFyKC0tZHAtdHJhbnNpdGlvbiksXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtIHZhcigtLWRwLXRyYW5zaXRpb24pLCBiYWNrZ3JvdW5kIHZhcigtLWRwLXRyYW5zaXRpb24pO1xufVxuXG4vKiBzb3R0aWxlIGJhcnJhIGFjY2VudCBpbiBjaW1hIGFsbGEgY2FyZCAqL1xuLm9tZWdhX19ibG9ja2Zvcm0ubG9naW5mb3JtOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGluc2V0OiAwIDAgYXV0bztcbiAgICBoZWlnaHQ6IDNweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHZhcigtLWRwLWJ1dHRvbi1zdGFydCksIHZhcigtLWRwLWJ1dHRvbi1lbmQpIDU1JSwgdmFyKC0tZHAtaGlnaGxpZ2h0KSk7XG4gICAgb3BhY2l0eTogLjk7XG59XG5cbi8qIGdsb3cgc29mZnVzbyBpbnRlcm5vIGluIGRhcmsgKi9cbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLm9tZWdhX19ibG9ja2Zvcm0ubG9naW5mb3JtIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDMyLCA2MSwgOTYsIC45NCk7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDEzNCwgMjAxLCAuMjYpO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6XG4gICAgICAgIHJhZGlhbC1ncmFkaWVudCgxMjAlIDEyMCUgYXQgMCUgMCUsIHJnYmEoMCwgMTM0LCAyMDEsIC4xMiksIHRyYW5zcGFyZW50IDQ2JSksXG4gICAgICAgIHJhZGlhbC1ncmFkaWVudCgxMjAlIDEyMCUgYXQgMTAwJSAxMDAlLCByZ2JhKDAsIDEzNCwgMjAxLCAuMTApLCB0cmFuc3BhcmVudCA1MiUpO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG59XG5cbkBrZXlmcmFtZXMgZHBDYXJkSW4ge1xuICAgIGZyb20geyBvcGFjaXR5OiAwOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMThweCkgc2NhbGUoLjk4NSk7IH1cbiAgICB0byAgIHsgb3BhY2l0eTogMTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpOyB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEhlYWRlciBjYXJkIChsb2dvICsgdGl0b2xvKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi5sb2dpbmZvcm1fX2hlYWRlciB7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAyNnB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBhbmltYXRpb246IGRwRmFkZVVwIC42cyAuMDhzIGJvdGg7XG59XG5cbi5sb2dpbmZvcm1fX2xvZ28ge1xuICAgIG1heC13aWR0aDogMjgwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIG1hcmdpbjogMCBhdXRvIDZweDtcbiAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgNnB4IDE0cHggcmdiYSgwLCAwLCAwLCAuMTIpKTtcbn1cblxuLmxvZ2luZm9ybV9faGVhZGVyIC5vbWVnYV9fYmxvY2tmb3JtX190aXRsZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW46IDE2cHggMCAwO1xuICAgIHBhZGRpbmc6IDE0cHggMCAwO1xuICAgIGZvbnQtc2l6ZTogMjFweDtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAuMnB4O1xuICAgIGNvbG9yOiB2YXIoLS1kcC10ZXh0LXRpdGxlKTtcbiAgICBib3JkZXItdG9wOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5sb2dpbmZvcm1fX2hlYWRlciAub21lZ2FfX2Jsb2NrZm9ybV9fdGl0bGU6OmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgYm90dG9tOiAtMTBweDtcbiAgICB3aWR0aDogNDZweDtcbiAgICBoZWlnaHQ6IDNweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1kcC1yYWRpdXMtcGlsbCk7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB2YXIoLS1kcC1idXR0b24tc3RhcnQpLCB2YXIoLS1kcC1idXR0b24tZW5kKSk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb2R5IC8gZm9ybVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi5vbWVnYV9fYmxvY2tmb3JtX19ib2R5IHtcbiAgICBhbmltYXRpb246IGRwRmFkZVVwIC42cyAuMTZzIGJvdGg7XG59XG5cbi5sb2dpbmZvcm0gLmZvcm0tZ3JvdXAgeyBtYXJnaW4tYm90dG9tOiAxOHB4OyB9XG5cbi5sb2dpbmZvcm0gLm9tZWdhX19mb3JtX19sYWJlbCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLWJvdHRvbTogN3B4O1xuICAgIGZvbnQtc2l6ZTogMTIuNXB4O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC4wMmVtO1xuICAgIGNvbG9yOiB2YXIoLS1kcC10ZXh0LXRpdGxlKTtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7XG59XG5cbi5sb2dpbmZvcm0gLm9tZWdhX19mb3JtX19pbnB1dCxcbi5sb2dpbmZvcm0gaW5wdXQuZm9ybS1jb250cm9sLFxuLmxvZ2luZm9ybSBzZWxlY3QuZm9ybS1jb250cm9sLFxuLmxvZ2luZm9ybSB0ZXh0YXJlYS5mb3JtLWNvbnRyb2wge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbiAgICBwYWRkaW5nOiAxMnB4IDE0cHg7XG4gICAgZm9udC1zaXplOiAxNC41cHg7XG4gICAgY29sb3I6IHZhcigtLWRwLWlucHV0LXRleHQpICFpbXBvcnRhbnQ7XG4gICAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHZhcigtLWRwLWlucHV0LXRleHQpICFpbXBvcnRhbnQ7XG4gICAgY2FyZXQtY29sb3I6IHZhcigtLWRwLWFjY2VudC1zdHJvbmcpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWRwLWlucHV0LWJnKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1kcC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWRwLXJhZGl1cykgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS1kcC10cmFuc2l0aW9uKSwgYm94LXNoYWRvdyB2YXIoLS1kcC10cmFuc2l0aW9uKSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLWRwLXRyYW5zaXRpb24pLCB0cmFuc2Zvcm0gdmFyKC0tZHAtdHJhbnNpdGlvbik7XG59XG5cbi5sb2dpbmZvcm0gLm9tZWdhX19mb3JtX19pbnB1dDo6cGxhY2Vob2xkZXIsXG4ubG9naW5mb3JtIGlucHV0LmZvcm0tY29udHJvbDo6cGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiB2YXIoLS1kcC1pbnB1dC1wbGFjZWhvbGRlcikgIWltcG9ydGFudDtcbiAgICBvcGFjaXR5OiAxO1xuICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB2YXIoLS1kcC1pbnB1dC1wbGFjZWhvbGRlcikgIWltcG9ydGFudDtcbn1cblxuLmxvZ2luZm9ybSAub21lZ2FfX2Zvcm1fX2lucHV0OmhvdmVyLFxuLmxvZ2luZm9ybSBpbnB1dC5mb3JtLWNvbnRyb2w6aG92ZXIgeyBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuNDUpOyB9XG5cbi5sb2dpbmZvcm0gLm9tZWdhX19mb3JtX19pbnB1dDpmb2N1cyxcbi5sb2dpbmZvcm0gaW5wdXQuZm9ybS1jb250cm9sOmZvY3VzLFxuLmxvZ2luZm9ybSBzZWxlY3QuZm9ybS1jb250cm9sOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGNvbG9yOiB2YXIoLS1kcC1pbnB1dC10ZXh0KSAhaW1wb3J0YW50O1xuICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB2YXIoLS1kcC1pbnB1dC10ZXh0KSAhaW1wb3J0YW50O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWRwLWlucHV0LWJnKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWRwLWFjY2VudC1zdHJvbmcpO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDRweCByZ2JhKHZhcigtLWRwLWFjY2VudC1zdHJvbmctcmdiKSwgLjE1KTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG59XG5cbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLmxvZ2luZm9ybSAub21lZ2FfX2Zvcm1fX2lucHV0LFxuaHRtbFtkYXRhLXRoZW1lPVwiZGFya1wiXSAubG9naW5mb3JtIGlucHV0LmZvcm0tY29udHJvbCxcbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLmxvZ2luZm9ybSBzZWxlY3QuZm9ybS1jb250cm9sLFxuaHRtbFtkYXRhLXRoZW1lPVwiZGFya1wiXSAubG9naW5mb3JtIHRleHRhcmVhLmZvcm0tY29udHJvbCB7XG4gICAgY29sb3I6IHZhcigtLWRwLWlucHV0LXRleHQpICFpbXBvcnRhbnQ7XG4gICAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHZhcigtLWRwLWlucHV0LXRleHQpICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tZHAtaW5wdXQtYmcpO1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgwLCAxMzQsIDIwMSwgLjI0KTtcbn1cbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLmxvZ2luZm9ybSAub21lZ2FfX2Zvcm1fX2lucHV0OjpwbGFjZWhvbGRlcixcbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLmxvZ2luZm9ybSBpbnB1dC5mb3JtLWNvbnRyb2w6OnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogdmFyKC0tZHAtaW5wdXQtcGxhY2Vob2xkZXIpICFpbXBvcnRhbnQ7XG4gICAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHZhcigtLWRwLWlucHV0LXBsYWNlaG9sZGVyKSAhaW1wb3J0YW50O1xufVxuaHRtbFtkYXRhLXRoZW1lPVwiZGFya1wiXSAubG9naW5mb3JtIC5vbWVnYV9fZm9ybV9faW5wdXQ6Zm9jdXMsXG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5sb2dpbmZvcm0gaW5wdXQuZm9ybS1jb250cm9sOmZvY3VzLFxuaHRtbFtkYXRhLXRoZW1lPVwiZGFya1wiXSAubG9naW5mb3JtIHNlbGVjdC5mb3JtLWNvbnRyb2w6Zm9jdXMge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjIsIDQ1LCA3MywgLjk2KTtcbiAgICBjb2xvcjogdmFyKC0tZHAtaW5wdXQtdGV4dCkgIWltcG9ydGFudDtcbiAgICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdmFyKC0tZHAtaW5wdXQtdGV4dCkgIWltcG9ydGFudDtcbiAgICBib3JkZXItY29sb3I6ICMwMDg2Qzk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgNHB4IHJnYmEoMCwgMTM0LCAyMDEsIC4xOCk7XG59XG5cbi8qIENocm9tZS9hdXRvZmlsbDogbWFudGllbmUgdGVzdG8gbGVnZ2liaWxlIGFuY2hlIHF1YW5kbyBpbCBicm93c2VyIGZvcnphIHNmb25kaSBjaGlhcmkuICovXG4ubG9naW5mb3JtIGlucHV0LmZvcm0tY29udHJvbDotd2Via2l0LWF1dG9maWxsLFxuLmxvZ2luZm9ybSBpbnB1dC5mb3JtLWNvbnRyb2w6LXdlYmtpdC1hdXRvZmlsbDpob3Zlcixcbi5sb2dpbmZvcm0gaW5wdXQuZm9ybS1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGw6Zm9jdXMsXG4ubG9naW5mb3JtIGlucHV0Lm9tZWdhX19mb3JtX19pbnB1dDotd2Via2l0LWF1dG9maWxsLFxuLmxvZ2luZm9ybSBpbnB1dC5vbWVnYV9fZm9ybV9faW5wdXQ6LXdlYmtpdC1hdXRvZmlsbDpob3Zlcixcbi5sb2dpbmZvcm0gaW5wdXQub21lZ2FfX2Zvcm1fX2lucHV0Oi13ZWJraXQtYXV0b2ZpbGw6Zm9jdXMge1xuICAgIGNvbG9yOiB2YXIoLS1kcC1pbnB1dC10ZXh0KSAhaW1wb3J0YW50O1xuICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB2YXIoLS1kcC1pbnB1dC10ZXh0KSAhaW1wb3J0YW50O1xuICAgIGNhcmV0LWNvbG9yOiB2YXIoLS1kcC1hY2NlbnQtc3Ryb25nKTtcbiAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuMzgpICFpbXBvcnRhbnQ7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMTAwMHB4IHZhcigtLWRwLWlucHV0LWJnKSBpbnNldCwgMCAwIDAgNHB4IHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuMTApICFpbXBvcnRhbnQ7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciA5OTk5cyBlYXNlLW91dCAwcywgY29sb3IgOTk5OXMgZWFzZS1vdXQgMHM7XG59XG5cbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLmxvZ2luZm9ybSBpbnB1dC5mb3JtLWNvbnRyb2w6LXdlYmtpdC1hdXRvZmlsbCxcbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLmxvZ2luZm9ybSBpbnB1dC5mb3JtLWNvbnRyb2w6LXdlYmtpdC1hdXRvZmlsbDpob3Zlcixcbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLmxvZ2luZm9ybSBpbnB1dC5mb3JtLWNvbnRyb2w6LXdlYmtpdC1hdXRvZmlsbDpmb2N1cyxcbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLmxvZ2luZm9ybSBpbnB1dC5vbWVnYV9fZm9ybV9faW5wdXQ6LXdlYmtpdC1hdXRvZmlsbCxcbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLmxvZ2luZm9ybSBpbnB1dC5vbWVnYV9fZm9ybV9faW5wdXQ6LXdlYmtpdC1hdXRvZmlsbDpob3Zlcixcbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLmxvZ2luZm9ybSBpbnB1dC5vbWVnYV9fZm9ybV9faW5wdXQ6LXdlYmtpdC1hdXRvZmlsbDpmb2N1cyB7XG4gICAgY29sb3I6ICMxNjJENDkgIWltcG9ydGFudDtcbiAgICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogIzE2MkQ0OSAhaW1wb3J0YW50O1xuICAgIGNhcmV0LWNvbG9yOiAjMTYyRDQ5O1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgwLCAxMzQsIDIwMSwgLjQ1KSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDEwMDBweCB2YXIoLS1kcC1pbnB1dC1hdXRvZmlsbC1iZykgaW5zZXQsIDAgMCAwIDRweCByZ2JhKDAsIDEzNCwgMjAxLCAuMTgpICFpbXBvcnRhbnQ7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvdHRvbmlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4ubG9naW5mb3JtIC5idG4ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZ2FwOiA4cHg7XG4gICAgcGFkZGluZzogMTJweCAxOHB4O1xuICAgIGZvbnQtc2l6ZTogMTQuNXB4O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC4wMmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWRwLXJhZGl1cykgIWltcG9ydGFudDtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLWRwLXRyYW5zaXRpb24pLCBib3JkZXItY29sb3IgdmFyKC0tZHAtdHJhbnNpdGlvbiksXG4gICAgICAgICAgICAgICAgY29sb3IgdmFyKC0tZHAtdHJhbnNpdGlvbiksIGJveC1zaGFkb3cgdmFyKC0tZHAtdHJhbnNpdGlvbiksXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtIHZhcigtLWRwLXRyYW5zaXRpb24pLCBmaWx0ZXIgdmFyKC0tZHAtdHJhbnNpdGlvbik7XG59XG5cbi5sb2dpbmZvcm0gLndpZHRoLS0xMDAsXG4ubG9naW5mb3JtIC53LTEwMCB7IHdpZHRoOiAxMDAlOyB9XG4ubG9naW5mb3JtIC5tYXJnaW50b3AtMTAgeyBtYXJnaW4tdG9wOiAxMnB4OyB9XG5cbi8qIHByaW1hcmlvOiBncmFkaWVudGUgYWNjZW50ICsgZ2xvdywgY29uIHNoaW1tZXIgYWxsJ2hvdmVyICovXG4ubG9naW5mb3JtIC5vbWVnYV9fYnRuX19ibHVlbGlnaHQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBtYXJnaW4tdG9wOiA2cHg7XG4gICAgY29sb3I6ICNmZmYgIWltcG9ydGFudDtcbiAgICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWRwLWJ1dHRvbi1zdGFydCksIHZhcigtLWRwLWJ1dHRvbi1lbmQpKSAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgYm94LXNoYWRvdzogMCA4cHggMjBweCByZ2JhKHZhcigtLWRwLWFjY2VudC1zdHJvbmctcmdiKSwgLjMwKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4ubG9naW5mb3JtIC5vbWVnYV9fYnRuX19ibHVlbGlnaHQgc3Bhbixcbi5sb2dpbmZvcm0gLm9tZWdhX19idG5fX2JsdWVsaWdodCBpIHtcbiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50O1xuICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7XG59XG5cbi5sb2dpbmZvcm0gLm9tZWdhX19idG5fX2JsdWVsaWdodDo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAtMTIwJTtcbiAgICB3aWR0aDogNjAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTAwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAuMzUpLCB0cmFuc3BhcmVudCk7XG4gICAgdHJhbnNmb3JtOiBza2V3WCgtMThkZWcpO1xuICAgIHRyYW5zaXRpb246IGxlZnQgLjZzIGVhc2U7XG59XG5cbi5sb2dpbmZvcm0gLm9tZWdhX19idG5fX2JsdWVsaWdodDpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgIGZpbHRlcjogYnJpZ2h0bmVzcygxLjA0KTtcbiAgICBib3gtc2hhZG93OiAwIDEycHggMjhweCByZ2JhKHZhcigtLWRwLWFjY2VudC1zdHJvbmctcmdiKSwgLjQyKTtcbiAgICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xuICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XG59XG4ubG9naW5mb3JtIC5vbWVnYV9fYnRuX19ibHVlbGlnaHQ6aG92ZXI6OmFmdGVyIHsgbGVmdDogMTMwJTsgfVxuLmxvZ2luZm9ybSAub21lZ2FfX2J0bl9fYmx1ZWxpZ2h0OmFjdGl2ZSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgYm94LXNoYWRvdzogMCA2cHggMTRweCByZ2JhKHZhcigtLWRwLWFjY2VudC1zdHJvbmctcmdiKSwgLjMwKTsgfVxuXG5odG1sOm5vdChbZGF0YS10aGVtZT1cImRhcmtcIl0pIC5sb2dpbmZvcm0gLm9tZWdhX19idG5fX2JsdWVsaWdodCB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tZHAtYnV0dG9uLXN0YXJ0KSwgdmFyKC0tZHAtYnV0dG9uLWVuZCkpICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAxMzQsIDIwMSwgLjQ1KSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDIwcHggcmdiYSgwLCAxMzQsIDIwMSwgLjI0KTtcbn1cbmh0bWw6bm90KFtkYXRhLXRoZW1lPVwiZGFya1wiXSkgLmxvZ2luZm9ybSAub21lZ2FfX2J0bl9fYmx1ZWxpZ2h0OmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1kcC1idXR0b24tc3RhcnQpLCB2YXIoLS1kcC1idXR0b24tZW5kKSkgIWltcG9ydGFudDtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMzgsIDExOCwgMTg5LCAuOCkgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiAwIDEycHggMjhweCByZ2JhKDAsIDEzNCwgMjAxLCAuMzQpICFpbXBvcnRhbnQ7XG4gICAgLyogU3Rlc3NhIHNmdW1hdHVyYSBkZWwgcmlwb3NvOiBpbCBwYXNzYWdnaW8gc2kgc2VudGUgY29uIHVuYSBzY2hpYXJpdGEuICovXG4gICAgZmlsdGVyOiBicmlnaHRuZXNzKDEuMDgpO1xufVxuXG4vKiBzZWNvbmRhcmlvOiBvdXRsaW5lIG1vcmJpZG8gKi9cbi5sb2dpbmZvcm0gLm9tZWdhX19idG5fX3doaXRlIHtcbiAgICBjb2xvcjogdmFyKC0tZHAtYWNjZW50LXJlYWRhYmxlKSAhaW1wb3J0YW50O1xuICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB2YXIoLS1kcC1hY2NlbnQtcmVhZGFibGUpICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tZHAtc3VyZmFjZSkgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1kcC1hY2NlbnQtc3Ryb25nKSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IHZhcigtLWRwLXNoYWRvdy1zbSk7XG59XG5cbi5sb2dpbmZvcm0gLm9tZWdhX19idG5fX3doaXRlIHNwYW4sXG4ubG9naW5mb3JtIC5vbWVnYV9fYnRuX193aGl0ZSBpIHtcbiAgICBjb2xvcjogdmFyKC0tZHAtYWNjZW50LXJlYWRhYmxlKSAhaW1wb3J0YW50O1xuICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB2YXIoLS1kcC1hY2NlbnQtcmVhZGFibGUpICFpbXBvcnRhbnQ7XG59XG5cbi5sb2dpbmZvcm0gLm9tZWdhX19idG5fX3doaXRlOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgY29sb3I6IHZhcigtLWRwLWFjY2VudC1yZWFkYWJsZSkgIWltcG9ydGFudDtcbiAgICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdmFyKC0tZHAtYWNjZW50LXJlYWRhYmxlKSAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZHAtYWNjZW50LXN0cm9uZykgIWltcG9ydGFudDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWRwLWFjY2VudC1zdHJvbmctcmdiKSwgLjA2KSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IHZhcigtLWRwLXNoYWRvdy1zbSk7XG59XG4ubG9naW5mb3JtIC5vbWVnYV9fYnRuX193aGl0ZTphY3RpdmUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH1cblxuLmxvZ2luZm9ybSAub21lZ2EtLWNlbnRlciB7IHRleHQtYWxpZ246IGNlbnRlcjsgfVxuXG4vKiBsaW5rIGdlbmVyaWNpIGRlbnRybyBsYSBjYXJkICovXG4ubG9naW5mb3JtIGE6bm90KC5idG4pIHtcbiAgICBjb2xvcjogdmFyKC0tZHAtYWNjZW50LXJlYWRhYmxlKTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1kcC10cmFuc2l0aW9uKTtcbn1cbi5sb2dpbmZvcm0gYTpub3QoLmJ0bik6aG92ZXIgeyBjb2xvcjogdmFyKC0tZHAtYWNjZW50KTsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH1cblxuLyogY2hlY2tib3ggXCJyaWNvcmRhbWlcIiAqL1xuLmxvZ2luZm9ybSAub21lZ2FfX2NoZWNrYm94X19sYWJlbCB7IGNvbG9yOiB2YXIoLS1kcC10ZXh0KTsgfVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBUb2dnbGUgdGVtYSAoc29sZS9sdW5hKSDigJQgZmlzc28gaW4gYWx0byBhIGRlc3RyYVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi5kcC10aGVtZS10b2dnbGUge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDE4cHg7XG4gICAgcmlnaHQ6IDE4cHg7XG4gICAgei1pbmRleDogNTA7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogNDRweDtcbiAgICBoZWlnaHQ6IDQ0cHg7XG4gICAgY29sb3I6IHZhcigtLWRwLXRleHQtdGl0bGUpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWRwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWRwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tZHAtcmFkaXVzLXBpbGwpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLWRwLXNoYWRvdy1zbSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLWRwLXRyYW5zaXRpb24pLCBib3JkZXItY29sb3IgdmFyKC0tZHAtdHJhbnNpdGlvbiksXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvciB2YXIoLS1kcC10cmFuc2l0aW9uKSwgdHJhbnNmb3JtIHZhcigtLWRwLXRyYW5zaXRpb24pLFxuICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgdmFyKC0tZHAtdHJhbnNpdGlvbik7XG59XG4uZHAtdGhlbWUtdG9nZ2xlOmhvdmVyIHtcbiAgICBjb2xvcjogdmFyKC0tZHAtYWNjZW50LXJlYWRhYmxlKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWRwLWFjY2VudC1zdHJvbmcpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1kcC1zaGFkb3cpO1xufVxuLmRwLXRoZW1lLXRvZ2dsZTphY3RpdmUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoLjk1KTsgfVxuLyogTmVzc3VuIGJvcmRvIHJlc2lkdW8gZG9wbyBpbCBjbGljayBjb2wgbW91c2U6IG91dGxpbmUgc29sbyBwZXIgbmF2aWdhemlvbmUgZGEgdGFzdGllcmEgKi9cbi5kcC10aGVtZS10b2dnbGU6Zm9jdXMgeyBvdXRsaW5lOiBub25lOyB9XG4uZHAtdGhlbWUtdG9nZ2xlOmZvY3VzOm5vdCg6Zm9jdXMtdmlzaWJsZSkge1xuICAgIGNvbG9yOiB2YXIoLS1kcC10ZXh0LXRpdGxlKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWRwLWJvcmRlcik7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tZHAtc2hhZG93LXNtKTtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG59XG4uZHAtdGhlbWUtdG9nZ2xlOmZvY3VzLXZpc2libGUge1xuICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1kcC1hY2NlbnQtc3Ryb25nKTtcbiAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xufVxuLmRwLXRoZW1lLXRvZ2dsZSBpIHtcbiAgICBmb250LXNpemU6IDE5cHg7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAuM3MgZWFzZSwgdHJhbnNmb3JtIC4zcyBlYXNlLCBmaWx0ZXIgLjNzIGVhc2U7XG59XG4vKiBTb2xlIChtb3N0cmF0byBpbiBkYXJrKTogcm90YXppb25lIGZsdWlkYSArIGJhZ2xpb3JlIHZpb2xhIGNvbWUgbGEgcGlhdHRhZm9ybWEgKi9cbi5kcC10aGVtZS10b2dnbGUgLmRwLWljb24tc3VuIHsgZGlzcGxheTogbm9uZTsgd2lkdGg6IDIxcHg7IGhlaWdodDogMjFweDsgcGFkZGluZzogMDsgb3ZlcmZsb3c6IHZpc2libGU7IH1cbi5kcC10aGVtZS10b2dnbGUgLmRwLWljb24tbW9vbiB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxNnB4OyB9XG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5kcC10aGVtZS10b2dnbGUgLmRwLWljb24tc3VuIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9XG5odG1sW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5kcC10aGVtZS10b2dnbGUgLmRwLWljb24tbW9vbiB7IGRpc3BsYXk6IG5vbmU7IH1cbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLmRwLXRoZW1lLXRvZ2dsZTpob3ZlciAuZHAtaWNvbi1zdW4ge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDM1ZGVnKSBzY2FsZSgxLjEpO1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAwIDdweCByZ2JhKDAsIDEzNCwgMjAxLCAuNykpO1xufVxuLyogTHVuYSAobW9zdHJhdGEgaW4gbGlnaHQpOiBvc2NpbGxhemlvbmUgKyBiYWdsaW9yZSBjZWxlc3RlICovXG4uZHAtdGhlbWUtdG9nZ2xlOmhvdmVyIC5kcC1pY29uLW1vb24ge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKC0xOGRlZykgc2NhbGUoMS4xKTtcbiAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMCA2cHggcmdiYSgxNTAsIDIwNSwgMjU1LCAuOSkpO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBGb290ZXIgbWluaW1hbGUgc290dG8gYWwgbG9naW5cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5ib2R5Lm9tZWdhX19ib2R5IC5vbWVnYV9fZm9vdGVyLFxuYm9keS5vbWVnYV9fYm9keSBmb290ZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAxO1xuICAgIGNvbG9yOiB2YXIoLS1kcC10ZXh0KTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogMCAhaW1wb3J0YW50O1xufVxuXG4vKiBhbGVydCAvIG1lc3NhZ2dpIGZsYXNoIGRlbnRybyBsYSBjYXJkLXpvbmUgKi9cbi5sb2dpbmZvcm0gLmludmFsaWQtZmVlZGJhY2ssXG4ubG9naW5mb3JtIC50ZXh0LWRhbmdlcixcbi5sb2dpbmZvcm0gLmhlbHAtYmxvY2sgeyBjb2xvcjogdmFyKC0tZHAtZGFuZ2VyKTsgZm9udC1zaXplOiAxMi41cHg7IH1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQW5pbWF6aW9uaSBjb25kaXZpc2UgKyBhY2Nlc3NpYmlsaXTDoFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbkBrZXlmcmFtZXMgZHBGYWRlVXAge1xuICAgIGZyb20geyBvcGFjaXR5OiAwOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTBweCk7IH1cbiAgICB0byAgIHsgb3BhY2l0eTogMTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA1MjBweCkge1xuICAgIC5vbWVnYV9fYmxvY2tmb3JtLmxvZ2luZm9ybSB7IHBhZGRpbmc6IDMwcHggMjJweCAyNnB4OyBib3JkZXItcmFkaXVzOiB2YXIoLS1kcC1yYWRpdXMpOyB9XG4gICAgLmxvZ2luZm9ybV9fY29udGFpbmVyIHsgbWluLWhlaWdodDogY2FsYygxMDB2aCAtIDcwcHgpOyBwYWRkaW5nOiAyMHB4IDEycHg7IH1cbn1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgICBib2R5Lm9tZWdhX19ib2R5OjpiZWZvcmUgeyBhbmltYXRpb246IG5vbmU7IH1cbiAgICAub21lZ2FfX2Jsb2NrZm9ybS5sb2dpbmZvcm0sXG4gICAgLmxvZ2luZm9ybV9faGVhZGVyLFxuICAgIC5vbWVnYV9fYmxvY2tmb3JtX19ib2R5IHsgYW5pbWF0aW9uOiBub25lOyB9XG4gICAgLmxvZ2luZm9ybSAuYnRuLFxuICAgIC5sb2dpbmZvcm0gLm9tZWdhX19mb3JtX19pbnB1dCB7IHRyYW5zaXRpb246IG5vbmU7IH1cbn1cbiIsIi8qIExvYWRlciBjb25kaXZpc28gTG9naW5Qcm8vRGF0aVBybzogdW4gc29sbyBsaW5ndWFnZ2lvIHZpc2l2byBwZXIgYXJlYVxuICogYXV0ZW50aWNhdGEsIGxvZ2luIGUgYXppb25pIGNoZSByaWNoaWVkb25vIHVuYSBudW92YSBwYWdpbmEuICovXG4jb25sb2Fkd2FpdGluZ3BvcHVwIHtcbiAgICBwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDtcbiAgICBpbnNldDogMDtcbiAgICB6LWluZGV4OiA5OTk5OTtcbiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcG9pbnRlci1ldmVudHM6IGFsbDtcbiAgICBiYWNrZ3JvdW5kOlxuICAgICAgICByYWRpYWwtZ3JhZGllbnQoNTIwcHggMzYwcHggYXQgNTAlIDQyJSwgcmdiYSh2YXIoLS1kcC1hY2NlbnQtc3Ryb25nLXJnYiksIC4xNiksIHRyYW5zcGFyZW50IDcyJSksXG4gICAgICAgIHJnYmEoMjQzLCAyNDcsIDI1MiwgLjc2KTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNXB4KTtcbiAgICBvcGFjaXR5OiAwO1xuICAgIGFuaW1hdGlvbjogZHBQYWdlTG9hZGVyRW50ZXIgLjE4cyBlYXNlIC4xNHMgZm9yd2FyZHM7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMThzIGVhc2UsIHZpc2liaWxpdHkgLjE4cyBlYXNlO1xufVxuXG4jb25sb2Fkd2FpdGluZ3BvcHVwLmlzLWFjdGl2ZSB7XG4gICAgYW5pbWF0aW9uLWRlbGF5OiAwcztcbn1cblxuI29ubG9hZHdhaXRpbmdwb3B1cC5pcy1sZWF2aW5nIHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBvcGFjaXR5OiAwO1xuICAgIGFuaW1hdGlvbjogbm9uZTtcbn1cblxuLmRwLXBhZ2UtbG9hZGVyX19zdXJmYWNlIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBtaW4td2lkdGg6IDEzMnB4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAxMnB4O1xuICAgIHBhZGRpbmc6IDEzcHggMTdweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWRwLWFjY2VudC1zdHJvbmctcmdiKSwgLjIwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1kcC1yYWRpdXMtbGcpO1xuICAgIGNvbG9yOiB2YXIoLS1kcC1uYXZ5KTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC45NCk7XG4gICAgYm94LXNoYWRvdzogMCAxNHB4IDQycHggcmdiYSgzOCwgNTYsIDc0LCAuMTgpO1xufVxuXG4uZHAtcGFnZS1sb2FkZXJfX3Jpbmcge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZsZXg6IDAgMCAzMHB4O1xuICAgIHdpZHRoOiAzMHB4O1xuICAgIGhlaWdodDogMzBweDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGJvcmRlcjogM3B4IHNvbGlkIHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuMTgpO1xuICAgIGJvcmRlci10b3AtY29sb3I6IHZhcigtLWRwLWFjY2VudC1zdHJvbmcpO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBhbmltYXRpb246IGRwUGFnZUxvYWRlclNwaW4gLjc4cyBsaW5lYXIgaW5maW5pdGU7XG59XG5cbi5kcC1wYWdlLWxvYWRlcl9fbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBmb250LXdlaWdodDogNjUwO1xuICAgIGxldHRlci1zcGFjaW5nOiAuMDFlbTtcbn1cblxuLy8gQ29tcGF0aWJpbGl0YScgY29uIGdsaSBzdGF0aSBkaSBhdHRlc2EgcGljY29saSBnaWEnIHByZXNlbnRpIG8gZnV0dXJpLlxuLmRwLWlubGluZS1zcGlubmVyLFxuLmZhLXNwaW5uZXIuZmEtc3Bpbixcbi5mYS1zcGlubmVyLmZhLXB1bHNlIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDtcbiAgICBmbGV4OiAwIDAgMWVtO1xuICAgIHdpZHRoOiAxZW0gIWltcG9ydGFudDtcbiAgICBoZWlnaHQ6IDFlbSAhaW1wb3J0YW50O1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgYm9yZGVyOiAycHggc29saWQgY3VycmVudENvbG9yO1xuICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIHZlcnRpY2FsLWFsaWduOiAtLjEyZW07XG4gICAgYW5pbWF0aW9uOiBkcFBhZ2VMb2FkZXJTcGluIC43MnMgbGluZWFyIGluZmluaXRlICFpbXBvcnRhbnQ7XG59XG5cbi5mYS1zcGlubmVyLmZhLXNwaW46OmJlZm9yZSxcbi5mYS1zcGlubmVyLmZhLXB1bHNlOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnICFpbXBvcnRhbnQ7XG59XG5cbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gI29ubG9hZHdhaXRpbmdwb3B1cCB7XG4gICAgYmFja2dyb3VuZDpcbiAgICAgICAgcmFkaWFsLWdyYWRpZW50KDUyMHB4IDM2MHB4IGF0IDUwJSA0MiUsIHJnYmEodmFyKC0tZHAtYWNjZW50LXN0cm9uZy1yZ2IpLCAuMTgpLCB0cmFuc3BhcmVudCA3MiUpLFxuICAgICAgICByZ2JhKDIyLCA0NSwgNzMsIC43NCk7XG59XG5cbmh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLmRwLXBhZ2UtbG9hZGVyX19zdXJmYWNlIHtcbiAgICBjb2xvcjogI0JEQ0ZFNztcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDMyLCA2MSwgOTYsIC45NSk7XG4gICAgYm94LXNoYWRvdzogMCAxNnB4IDQ2cHggcmdiYSgwLCAwLCAwLCAuMzIpO1xufVxuXG5Aa2V5ZnJhbWVzIGRwUGFnZUxvYWRlckVudGVyIHtcbiAgICB0byB7IG9wYWNpdHk6IDE7IH1cbn1cblxuQGtleWZyYW1lcyBkcFBhZ2VMb2FkZXJTcGluIHtcbiAgICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH1cbn1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgICAjb25sb2Fkd2FpdGluZ3BvcHVwIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgYW5pbWF0aW9uOiBub25lO1xuICAgICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgIH1cblxuICAgICNvbmxvYWR3YWl0aW5ncG9wdXAuaXMtbGVhdmluZyB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuXG4gICAgLmRwLXBhZ2UtbG9hZGVyX19yaW5nLFxuICAgIC5kcC1pbmxpbmUtc3Bpbm5lcixcbiAgICAuZmEtc3Bpbm5lci5mYS1zcGluLFxuICAgIC5mYS1zcGlubmVyLmZhLXB1bHNlIHtcbiAgICAgICAgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==*/